import * as Vue from 'vue'
import {
shallowRef,
watchEffect,
readonly,
ref,
watch as watch$1,
customRef,
effectScope,
getCurrentScope,
onScopeDispose,
isRef,
unref,
computed,
reactive,
toRefs as toRefs$2,
toRef,
getCurrentInstance,
onBeforeMount,
nextTick,
onBeforeUnmount,
onMounted,
onUnmounted,
provide,
inject,
isReactive,
defineComponent,
openBlock,
createElementBlock,
createElementVNode,
createStaticVNode,
warn as warn$2,
isVNode as isVNode$1,
Fragment,
Comment,
camelize as camelize$1,
h as h$4,
Teleport,
normalizeClass,
normalizeStyle as normalizeStyle$1,
renderSlot,
mergeProps,
useSlots,
createBlock,
Transition,
withCtx,
withDirectives,
resolveDynamicComponent,
createCommentVNode,
createTextVNode,
toDisplayString as toDisplayString$1,
createVNode as createVNode$1,
vShow,
useAttrs as useAttrs$1,
onUpdated,
withModifiers,
resolveComponent,
cloneVNode,
Text,
renderList,
withKeys,
createSlots,
resolveDirective,
normalizeProps,
guardReactiveProps,
vModelCheckbox,
vModelRadio,
onBeforeUpdate,
vModelText,
toHandlers,
markRaw,
toRaw,
triggerRef,
TransitionGroup,
createApp as createApp$1,
render as render$1,
isReadonly,
shallowReactive,
onDeactivated,
onActivated,
pushScopeId,
popScopeId,
defineAsyncComponent,
useCssVars,
} from 'vue'
function _mergeNamespaces(n2, m2) {
m2.forEach(function (e2) {
e2 &&
typeof e2 !== 'string' &&
!Array.isArray(e2) &&
Object.keys(e2).forEach(function (k2) {
if (k2 !== 'default' && !(k2 in n2)) {
var d3 = Object.getOwnPropertyDescriptor(e2, k2)
Object.defineProperty(
n2,
k2,
d3.get
? d3
: {
enumerable: true,
get: function () {
return e2[k2]
},
}
)
}
})
})
return Object.freeze(
Object.defineProperty(n2, Symbol.toStringTag, { value: 'Module' })
)
}
var freeGlobal$2 =
typeof global == 'object' && global && global.Object === Object && global
var freeGlobal$3 = freeGlobal$2
var freeSelf$1 =
typeof self == 'object' && self && self.Object === Object && self
var root$a = freeGlobal$3 || freeSelf$1 || Function('return this')()
var root$b = root$a
var Symbol$7 = root$b.Symbol
var Symbol$8 = Symbol$7
var objectProto$r = Object.prototype
var hasOwnProperty$p = objectProto$r.hasOwnProperty
var nativeObjectToString$3 = objectProto$r.toString
var symToStringTag$3 = Symbol$8 ? Symbol$8.toStringTag : void 0
function getRawTag$2(value2) {
var isOwn = hasOwnProperty$p.call(value2, symToStringTag$3),
tag = value2[symToStringTag$3]
try {
value2[symToStringTag$3] = void 0
var unmasked = true
} catch (e2) {}
var result = nativeObjectToString$3.call(value2)
if (unmasked) {
if (isOwn) {
value2[symToStringTag$3] = tag
} else {
delete value2[symToStringTag$3]
}
}
return result
}
var objectProto$q = Object.prototype
var nativeObjectToString$2 = objectProto$q.toString
function objectToString$7(value2) {
return nativeObjectToString$2.call(value2)
}
var nullTag$1 = '[object Null]',
undefinedTag$1 = '[object Undefined]'
var symToStringTag$2 = Symbol$8 ? Symbol$8.toStringTag : void 0
function baseGetTag$5(value2) {
if (value2 == null) {
return value2 === void 0 ? undefinedTag$1 : nullTag$1
}
return symToStringTag$2 && symToStringTag$2 in Object(value2)
? getRawTag$2(value2)
: objectToString$7(value2)
}
function isObjectLike$6(value2) {
return value2 != null && typeof value2 == 'object'
}
var symbolTag$5 = '[object Symbol]'
function isSymbol$6(value2) {
return (
typeof value2 == 'symbol' ||
(isObjectLike$6(value2) && baseGetTag$5(value2) == symbolTag$5)
)
}
function arrayMap(array4, iteratee) {
var index2 = -1,
length2 = array4 == null ? 0 : array4.length,
result = Array(length2)
while (++index2 < length2) {
result[index2] = iteratee(array4[index2], index2, array4)
}
return result
}
var isArray$E = Array.isArray
var isArray$F = isArray$E
var INFINITY$3 = 1 / 0
var symbolProto$3 = Symbol$8 ? Symbol$8.prototype : void 0,
symbolToString = symbolProto$3 ? symbolProto$3.toString : void 0
function baseToString(value2) {
if (typeof value2 == 'string') {
return value2
}
if (isArray$F(value2)) {
return arrayMap(value2, baseToString) + ''
}
if (isSymbol$6(value2)) {
return symbolToString ? symbolToString.call(value2) : ''
}
var result = value2 + ''
return result == '0' && 1 / value2 == -INFINITY$3 ? '-0' : result
}
var reWhitespace = /\s/
function trimmedEndIndex(string3) {
var index2 = string3.length
while (index2-- && reWhitespace.test(string3.charAt(index2))) {}
return index2
}
var reTrimStart = /^\s+/
function baseTrim(string3) {
return string3
? string3.slice(0, trimmedEndIndex(string3) + 1).replace(reTrimStart, '')
: string3
}
function isObject$x(value2) {
var type4 = typeof value2
return value2 != null && (type4 == 'object' || type4 == 'function')
}
var NAN = 0 / 0
var reIsBadHex = /^[-+]0x[0-9a-f]+$/i
var reIsBinary = /^0b[01]+$/i
var reIsOctal = /^0o[0-7]+$/i
var freeParseInt = parseInt
function toNumber$8(value2) {
if (typeof value2 == 'number') {
return value2
}
if (isSymbol$6(value2)) {
return NAN
}
if (isObject$x(value2)) {
var other = typeof value2.valueOf == 'function' ? value2.valueOf() : value2
value2 = isObject$x(other) ? other + '' : other
}
if (typeof value2 != 'string') {
return value2 === 0 ? value2 : +value2
}
value2 = baseTrim(value2)
var isBinary = reIsBinary.test(value2)
return isBinary || reIsOctal.test(value2)
? freeParseInt(value2.slice(2), isBinary ? 2 : 8)
: reIsBadHex.test(value2)
? NAN
: +value2
}
function identity$3(value2) {
return value2
}
var asyncTag$1 = '[object AsyncFunction]',
funcTag$5 = '[object Function]',
genTag$3 = '[object GeneratorFunction]',
proxyTag$1 = '[object Proxy]'
function isFunction$n(value2) {
if (!isObject$x(value2)) {
return false
}
var tag = baseGetTag$5(value2)
return (
tag == funcTag$5 ||
tag == genTag$3 ||
tag == asyncTag$1 ||
tag == proxyTag$1
)
}
var coreJsData$2 = root$b['__core-js_shared__']
var coreJsData$3 = coreJsData$2
var maskSrcKey$1 = (function () {
var uid2 = /[^.]+$/.exec(
(coreJsData$3 && coreJsData$3.keys && coreJsData$3.keys.IE_PROTO) || ''
)
return uid2 ? 'Symbol(src)_1.' + uid2 : ''
})()
function isMasked$2(func) {
return !!maskSrcKey$1 && maskSrcKey$1 in func
}
var funcProto$3 = Function.prototype
var funcToString$3 = funcProto$3.toString
function toSource$3(func) {
if (func != null) {
try {
return funcToString$3.call(func)
} catch (e2) {}
try {
return func + ''
} catch (e2) {}
}
return ''
}
var reRegExpChar$1 = /[\\^$.*+?()[\]{}|]/g
var reIsHostCtor$1 = /^\[object .+?Constructor\]$/
var funcProto$2 = Function.prototype,
objectProto$p = Object.prototype
var funcToString$2 = funcProto$2.toString
var hasOwnProperty$o = objectProto$p.hasOwnProperty
var reIsNative$1 = RegExp(
'^' +
funcToString$2
.call(hasOwnProperty$o)
.replace(reRegExpChar$1, '\\$&')
.replace(
/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,
'$1.*?'
) +
'$'
)
function baseIsNative$2(value2) {
if (!isObject$x(value2) || isMasked$2(value2)) {
return false
}
var pattern4 = isFunction$n(value2) ? reIsNative$1 : reIsHostCtor$1
return pattern4.test(toSource$3(value2))
}
function getValue$4(object4, key2) {
return object4 == null ? void 0 : object4[key2]
}
function getNative$8(object4, key2) {
var value2 = getValue$4(object4, key2)
return baseIsNative$2(value2) ? value2 : void 0
}
var WeakMap$7 = getNative$8(root$b, 'WeakMap')
var WeakMap$8 = WeakMap$7
var objectCreate$2 = Object.create
var baseCreate$2 = (function () {
function object4() {}
return function (proto2) {
if (!isObject$x(proto2)) {
return {}
}
if (objectCreate$2) {
return objectCreate$2(proto2)
}
object4.prototype = proto2
var result = new object4()
object4.prototype = void 0
return result
}
})()
var baseCreate$3 = baseCreate$2
function apply$6(func, thisArg, args) {
switch (args.length) {
case 0:
return func.call(thisArg)
case 1:
return func.call(thisArg, args[0])
case 2:
return func.call(thisArg, args[0], args[1])
case 3:
return func.call(thisArg, args[0], args[1], args[2])
}
return func.apply(thisArg, args)
}
function noop$8() {}
function copyArray$2(source2, array4) {
var index2 = -1,
length2 = source2.length
array4 || (array4 = Array(length2))
while (++index2 < length2) {
array4[index2] = source2[index2]
}
return array4
}
var HOT_COUNT = 800,
HOT_SPAN = 16
var nativeNow = Date.now
function shortOut(func) {
var count2 = 0,
lastCalled = 0
return function () {
var stamp2 = nativeNow(),
remaining = HOT_SPAN - (stamp2 - lastCalled)
lastCalled = stamp2
if (remaining > 0) {
if (++count2 >= HOT_COUNT) {
return arguments[0]
}
} else {
count2 = 0
}
return func.apply(void 0, arguments)
}
}
function constant(value2) {
return function () {
return value2
}
}
var defineProperty$8 = (function () {
try {
var func = getNative$8(Object, 'defineProperty')
func({}, '', {})
return func
} catch (e2) {}
})()
var defineProperty$9 = defineProperty$8
var baseSetToString = !defineProperty$9
? identity$3
: function (func, string3) {
return defineProperty$9(func, 'toString', {
configurable: true,
enumerable: false,
value: constant(string3),
writable: true,
})
}
var baseSetToString$1 = baseSetToString
var setToString = shortOut(baseSetToString$1)
var setToString$1 = setToString
function arrayEach$h(array4, iteratee) {
var index2 = -1,
length2 = array4 == null ? 0 : array4.length
while (++index2 < length2) {
if (iteratee(array4[index2], index2, array4) === false) {
break
}
}
return array4
}
function baseFindIndex(array4, predicate, fromIndex, fromRight) {
var length2 = array4.length,
index2 = fromIndex + (fromRight ? 1 : -1)
while (fromRight ? index2-- : ++index2 < length2) {
if (predicate(array4[index2], index2, array4)) {
return index2
}
}
return -1
}
function baseIsNaN(value2) {
return value2 !== value2
}
function strictIndexOf(array4, value2, fromIndex) {
var index2 = fromIndex - 1,
length2 = array4.length
while (++index2 < length2) {
if (array4[index2] === value2) {
return index2
}
}
return -1
}
function baseIndexOf(array4, value2, fromIndex) {
return value2 === value2
? strictIndexOf(array4, value2, fromIndex)
: baseFindIndex(array4, baseIsNaN, fromIndex)
}
function arrayIncludes$1(array4, value2) {
var length2 = array4 == null ? 0 : array4.length
return !!length2 && baseIndexOf(array4, value2, 0) > -1
}
var MAX_SAFE_INTEGER$4 = 9007199254740991
var reIsUint$1 = /^(?:0|[1-9]\d*)$/
function isIndex$2(value2, length2) {
var type4 = typeof value2
length2 = length2 == null ? MAX_SAFE_INTEGER$4 : length2
return (
!!length2 &&
(type4 == 'number' || (type4 != 'symbol' && reIsUint$1.test(value2))) &&
value2 > -1 &&
value2 % 1 == 0 &&
value2 < length2
)
}
function baseAssignValue$3(object4, key2, value2) {
if (key2 == '__proto__' && defineProperty$9) {
defineProperty$9(object4, key2, {
configurable: true,
enumerable: true,
value: value2,
writable: true,
})
} else {
object4[key2] = value2
}
}
function eq$3(value2, other) {
return value2 === other || (value2 !== value2 && other !== other)
}
var objectProto$o = Object.prototype
var hasOwnProperty$n = objectProto$o.hasOwnProperty
function assignValue$3(object4, key2, value2) {
var objValue = object4[key2]
if (
!(hasOwnProperty$n.call(object4, key2) && eq$3(objValue, value2)) ||
(value2 === void 0 && !(key2 in object4))
) {
baseAssignValue$3(object4, key2, value2)
}
}
function copyObject$5(source2, props2, object4, customizer) {
var isNew = !object4
object4 || (object4 = {})
var index2 = -1,
length2 = props2.length
while (++index2 < length2) {
var key2 = props2[index2]
var newValue = customizer
? customizer(object4[key2], source2[key2], key2, object4, source2)
: void 0
if (newValue === void 0) {
newValue = source2[key2]
}
if (isNew) {
baseAssignValue$3(object4, key2, newValue)
} else {
assignValue$3(object4, key2, newValue)
}
}
return object4
}
var nativeMax$1 = Math.max
function overRest(func, start2, transform3) {
start2 = nativeMax$1(start2 === void 0 ? func.length - 1 : start2, 0)
return function () {
var args = arguments,
index2 = -1,
length2 = nativeMax$1(args.length - start2, 0),
array4 = Array(length2)
while (++index2 < length2) {
array4[index2] = args[start2 + index2]
}
index2 = -1
var otherArgs = Array(start2 + 1)
while (++index2 < start2) {
otherArgs[index2] = args[index2]
}
otherArgs[start2] = transform3(array4)
return apply$6(func, this, otherArgs)
}
}
function baseRest(func, start2) {
return setToString$1(overRest(func, start2, identity$3), func + '')
}
var MAX_SAFE_INTEGER$3 = 9007199254740991
function isLength$4(value2) {
return (
typeof value2 == 'number' &&
value2 > -1 &&
value2 % 1 == 0 &&
value2 <= MAX_SAFE_INTEGER$3
)
}
function isArrayLike$4(value2) {
return value2 != null && isLength$4(value2.length) && !isFunction$n(value2)
}
var objectProto$n = Object.prototype
function isPrototype$4(value2) {
var Ctor = value2 && value2.constructor,
proto2 = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$n
return value2 === proto2
}
function baseTimes$2(n2, iteratee) {
var index2 = -1,
result = Array(n2)
while (++index2 < n2) {
result[index2] = iteratee(index2)
}
return result
}
var argsTag$6 = '[object Arguments]'
function baseIsArguments$2(value2) {
return isObjectLike$6(value2) && baseGetTag$5(value2) == argsTag$6
}
var objectProto$m = Object.prototype
var hasOwnProperty$m = objectProto$m.hasOwnProperty
var propertyIsEnumerable$3 = objectProto$m.propertyIsEnumerable
var isArguments$4 = baseIsArguments$2(
(function () {
return arguments
})()
)
? baseIsArguments$2
: function (value2) {
return (
isObjectLike$6(value2) &&
hasOwnProperty$m.call(value2, 'callee') &&
!propertyIsEnumerable$3.call(value2, 'callee')
)
}
var isArguments$5 = isArguments$4
function stubFalse$1() {
return false
}
var freeExports$2 =
typeof exports == 'object' && exports && !exports.nodeType && exports
var freeModule$2 =
freeExports$2 &&
typeof module == 'object' &&
module &&
!module.nodeType &&
module
var moduleExports$2 = freeModule$2 && freeModule$2.exports === freeExports$2
var Buffer$2 = moduleExports$2 ? root$b.Buffer : void 0
var nativeIsBuffer = Buffer$2 ? Buffer$2.isBuffer : void 0
var isBuffer$4 = nativeIsBuffer || stubFalse$1
var isBuffer$5 = isBuffer$4
var argsTag$5 = '[object Arguments]',
arrayTag$4 = '[object Array]',
boolTag$6 = '[object Boolean]',
dateTag$6 = '[object Date]',
errorTag$4 = '[object Error]',
funcTag$4 = '[object Function]',
mapTag$a = '[object Map]',
numberTag$6 = '[object Number]',
objectTag$6 = '[object Object]',
regexpTag$6 = '[object RegExp]',
setTag$a = '[object Set]',
stringTag$6 = '[object String]',
weakMapTag$5 = '[object WeakMap]'
var arrayBufferTag$6 = '[object ArrayBuffer]',
dataViewTag$8 = '[object DataView]',
float32Tag$5 = '[object Float32Array]',
float64Tag$5 = '[object Float64Array]',
int8Tag$5 = '[object Int8Array]',
int16Tag$5 = '[object Int16Array]',
int32Tag$5 = '[object Int32Array]',
uint8Tag$5 = '[object Uint8Array]',
uint8ClampedTag$5 = '[object Uint8ClampedArray]',
uint16Tag$5 = '[object Uint16Array]',
uint32Tag$5 = '[object Uint32Array]'
var typedArrayTags$1 = {}
typedArrayTags$1[float32Tag$5] =
typedArrayTags$1[float64Tag$5] =
typedArrayTags$1[int8Tag$5] =
typedArrayTags$1[int16Tag$5] =
typedArrayTags$1[int32Tag$5] =
typedArrayTags$1[uint8Tag$5] =
typedArrayTags$1[uint8ClampedTag$5] =
typedArrayTags$1[uint16Tag$5] =
typedArrayTags$1[uint32Tag$5] =
true
typedArrayTags$1[argsTag$5] =
typedArrayTags$1[arrayTag$4] =
typedArrayTags$1[arrayBufferTag$6] =
typedArrayTags$1[boolTag$6] =
typedArrayTags$1[dataViewTag$8] =
typedArrayTags$1[dateTag$6] =
typedArrayTags$1[errorTag$4] =
typedArrayTags$1[funcTag$4] =
typedArrayTags$1[mapTag$a] =
typedArrayTags$1[numberTag$6] =
typedArrayTags$1[objectTag$6] =
typedArrayTags$1[regexpTag$6] =
typedArrayTags$1[setTag$a] =
typedArrayTags$1[stringTag$6] =
typedArrayTags$1[weakMapTag$5] =
false
function baseIsTypedArray$2(value2) {
return (
isObjectLike$6(value2) &&
isLength$4(value2.length) &&
!!typedArrayTags$1[baseGetTag$5(value2)]
)
}
function baseUnary$4(func) {
return function (value2) {
return func(value2)
}
}
var freeExports$1 =
typeof exports == 'object' && exports && !exports.nodeType && exports
var freeModule$1 =
freeExports$1 &&
typeof module == 'object' &&
module &&
!module.nodeType &&
module
var moduleExports$1 = freeModule$1 && freeModule$1.exports === freeExports$1
var freeProcess = moduleExports$1 && freeGlobal$3.process
var nodeUtil$3 = (function () {
try {
var types2 =
freeModule$1 && freeModule$1.require && freeModule$1.require('util').types
if (types2) {
return types2
}
return freeProcess && freeProcess.binding && freeProcess.binding('util')
} catch (e2) {}
})()
var nodeUtil$4 = nodeUtil$3
var nodeIsTypedArray$1 = nodeUtil$4 && nodeUtil$4.isTypedArray
var isTypedArray$3 = nodeIsTypedArray$1
? baseUnary$4(nodeIsTypedArray$1)
: baseIsTypedArray$2
var isTypedArray$4 = isTypedArray$3
var objectProto$l = Object.prototype
var hasOwnProperty$l = objectProto$l.hasOwnProperty
function arrayLikeKeys$3(value2, inherited) {
var isArr = isArray$F(value2),
isArg = !isArr && isArguments$5(value2),
isBuff = !isArr && !isArg && isBuffer$5(value2),
isType = !isArr && !isArg && !isBuff && isTypedArray$4(value2),
skipIndexes = isArr || isArg || isBuff || isType,
result = skipIndexes ? baseTimes$2(value2.length, String) : [],
length2 = result.length
for (var key2 in value2) {
if (
(inherited || hasOwnProperty$l.call(value2, key2)) &&
!(
skipIndexes &&
(key2 == 'length' ||
(isBuff && (key2 == 'offset' || key2 == 'parent')) ||
(isType &&
(key2 == 'buffer' ||
key2 == 'byteLength' ||
key2 == 'byteOffset')) ||
isIndex$2(key2, length2))
)
) {
result.push(key2)
}
}
return result
}
function overArg$3(func, transform3) {
return function (arg) {
return func(transform3(arg))
}
}
var nativeKeys$2 = overArg$3(Object.keys, Object)
var nativeKeys$3 = nativeKeys$2
var objectProto$k = Object.prototype
var hasOwnProperty$k = objectProto$k.hasOwnProperty
function baseKeys$2(object4) {
if (!isPrototype$4(object4)) {
return nativeKeys$3(object4)
}
var result = []
for (var key2 in Object(object4)) {
if (hasOwnProperty$k.call(object4, key2) && key2 != 'constructor') {
result.push(key2)
}
}
return result
}
function keys$i(object4) {
return isArrayLike$4(object4) ? arrayLikeKeys$3(object4) : baseKeys$2(object4)
}
function nativeKeysIn$2(object4) {
var result = []
if (object4 != null) {
for (var key2 in Object(object4)) {
result.push(key2)
}
}
return result
}
var objectProto$j = Object.prototype
var hasOwnProperty$j = objectProto$j.hasOwnProperty
function baseKeysIn$2(object4) {
if (!isObject$x(object4)) {
return nativeKeysIn$2(object4)
}
var isProto = isPrototype$4(object4),
result = []
for (var key2 in object4) {
if (
!(
key2 == 'constructor' &&
(isProto || !hasOwnProperty$j.call(object4, key2))
)
) {
result.push(key2)
}
}
return result
}
function keysIn$4(object4) {
return isArrayLike$4(object4)
? arrayLikeKeys$3(object4, true)
: baseKeysIn$2(object4)
}
var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
reIsPlainProp = /^\w*$/
function isKey(value2, object4) {
if (isArray$F(value2)) {
return false
}
var type4 = typeof value2
if (
type4 == 'number' ||
type4 == 'symbol' ||
type4 == 'boolean' ||
value2 == null ||
isSymbol$6(value2)
) {
return true
}
return (
reIsPlainProp.test(value2) ||
!reIsDeepProp.test(value2) ||
(object4 != null && value2 in Object(object4))
)
}
var nativeCreate$5 = getNative$8(Object, 'create')
var nativeCreate$6 = nativeCreate$5
function hashClear$2() {
this.__data__ = nativeCreate$6 ? nativeCreate$6(null) : {}
this.size = 0
}
function hashDelete$2(key2) {
var result = this.has(key2) && delete this.__data__[key2]
this.size -= result ? 1 : 0
return result
}
var HASH_UNDEFINED$4 = '__lodash_hash_undefined__'
var objectProto$i = Object.prototype
var hasOwnProperty$i = objectProto$i.hasOwnProperty
function hashGet$2(key2) {
var data2 = this.__data__
if (nativeCreate$6) {
var result = data2[key2]
return result === HASH_UNDEFINED$4 ? void 0 : result
}
return hasOwnProperty$i.call(data2, key2) ? data2[key2] : void 0
}
var objectProto$h = Object.prototype
var hasOwnProperty$h = objectProto$h.hasOwnProperty
function hashHas$2(key2) {
var data2 = this.__data__
return nativeCreate$6
? data2[key2] !== void 0
: hasOwnProperty$h.call(data2, key2)
}
var HASH_UNDEFINED$3 = '__lodash_hash_undefined__'
function hashSet$2(key2, value2) {
var data2 = this.__data__
this.size += this.has(key2) ? 0 : 1
data2[key2] = nativeCreate$6 && value2 === void 0 ? HASH_UNDEFINED$3 : value2
return this
}
function Hash$2(entries2) {
var index2 = -1,
length2 = entries2 == null ? 0 : entries2.length
this.clear()
while (++index2 < length2) {
var entry = entries2[index2]
this.set(entry[0], entry[1])
}
}
Hash$2.prototype.clear = hashClear$2
Hash$2.prototype['delete'] = hashDelete$2
Hash$2.prototype.get = hashGet$2
Hash$2.prototype.has = hashHas$2
Hash$2.prototype.set = hashSet$2
function listCacheClear$2() {
this.__data__ = []
this.size = 0
}
function assocIndexOf$5(array4, key2) {
var length2 = array4.length
while (length2--) {
if (eq$3(array4[length2][0], key2)) {
return length2
}
}
return -1
}
var arrayProto$2 = Array.prototype
var splice$1 = arrayProto$2.splice
function listCacheDelete$2(key2) {
var data2 = this.__data__,
index2 = assocIndexOf$5(data2, key2)
if (index2 < 0) {
return false
}
var lastIndex = data2.length - 1
if (index2 == lastIndex) {
data2.pop()
} else {
splice$1.call(data2, index2, 1)
}
--this.size
return true
}
function listCacheGet$3(key2) {
var data2 = this.__data__,
index2 = assocIndexOf$5(data2, key2)
return index2 < 0 ? void 0 : data2[index2][1]
}
function listCacheHas$2(key2) {
return assocIndexOf$5(this.__data__, key2) > -1
}
function listCacheSet$3(key2, value2) {
var data2 = this.__data__,
index2 = assocIndexOf$5(data2, key2)
if (index2 < 0) {
++this.size
data2.push([key2, value2])
} else {
data2[index2][1] = value2
}
return this
}
function ListCache$5(entries2) {
var index2 = -1,
length2 = entries2 == null ? 0 : entries2.length
this.clear()
while (++index2 < length2) {
var entry = entries2[index2]
this.set(entry[0], entry[1])
}
}
ListCache$5.prototype.clear = listCacheClear$2
ListCache$5.prototype['delete'] = listCacheDelete$2
ListCache$5.prototype.get = listCacheGet$3
ListCache$5.prototype.has = listCacheHas$2
ListCache$5.prototype.set = listCacheSet$3
var Map$5 = getNative$8(root$b, 'Map')
var Map$6 = Map$5
function mapCacheClear$2() {
this.size = 0
this.__data__ = {
hash: new Hash$2(),
map: new (Map$6 || ListCache$5)(),
string: new Hash$2(),
}
}
function isKeyable$2(value2) {
var type4 = typeof value2
return type4 == 'string' ||
type4 == 'number' ||
type4 == 'symbol' ||
type4 == 'boolean'
? value2 !== '__proto__'
: value2 === null
}
function getMapData$5(map2, key2) {
var data2 = map2.__data__
return isKeyable$2(key2)
? data2[typeof key2 == 'string' ? 'string' : 'hash']
: data2.map
}
function mapCacheDelete$2(key2) {
var result = getMapData$5(this, key2)['delete'](key2)
this.size -= result ? 1 : 0
return result
}
function mapCacheGet$2(key2) {
return getMapData$5(this, key2).get(key2)
}
function mapCacheHas$2(key2) {
return getMapData$5(this, key2).has(key2)
}
function mapCacheSet$2(key2, value2) {
var data2 = getMapData$5(this, key2),
size = data2.size
data2.set(key2, value2)
this.size += data2.size == size ? 0 : 1
return this
}
function MapCache$2(entries2) {
var index2 = -1,
length2 = entries2 == null ? 0 : entries2.length
this.clear()
while (++index2 < length2) {
var entry = entries2[index2]
this.set(entry[0], entry[1])
}
}
MapCache$2.prototype.clear = mapCacheClear$2
MapCache$2.prototype['delete'] = mapCacheDelete$2
MapCache$2.prototype.get = mapCacheGet$2
MapCache$2.prototype.has = mapCacheHas$2
MapCache$2.prototype.set = mapCacheSet$2
var FUNC_ERROR_TEXT$2 = 'Expected a function'
function memoize(func, resolver) {
if (
typeof func != 'function' ||
(resolver != null && typeof resolver != 'function')
) {
throw new TypeError(FUNC_ERROR_TEXT$2)
}
var memoized = function () {
var args = arguments,
key2 = resolver ? resolver.apply(this, args) : args[0],
cache2 = memoized.cache
if (cache2.has(key2)) {
return cache2.get(key2)
}
var result = func.apply(this, args)
memoized.cache = cache2.set(key2, result) || cache2
return result
}
memoized.cache = new (memoize.Cache || MapCache$2)()
return memoized
}
memoize.Cache = MapCache$2
var MAX_MEMOIZE_SIZE = 500
function memoizeCapped(func) {
var result = memoize(func, function (key2) {
if (cache2.size === MAX_MEMOIZE_SIZE) {
cache2.clear()
}
return key2
})
var cache2 = result.cache
return result
}
var rePropName =
/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g
var reEscapeChar = /\\(\\)?/g
var stringToPath = memoizeCapped(function (string3) {
var result = []
if (string3.charCodeAt(0) === 46) {
result.push('')
}
string3.replace(rePropName, function (match2, number4, quote, subString) {
result.push(
quote ? subString.replace(reEscapeChar, '$1') : number4 || match2
)
})
return result
})
var stringToPath$1 = stringToPath
function toString$f(value2) {
return value2 == null ? '' : baseToString(value2)
}
function castPath(value2, object4) {
if (isArray$F(value2)) {
return value2
}
return isKey(value2, object4) ? [value2] : stringToPath$1(toString$f(value2))
}
var INFINITY$2 = 1 / 0
function toKey(value2) {
if (typeof value2 == 'string' || isSymbol$6(value2)) {
return value2
}
var result = value2 + ''
return result == '0' && 1 / value2 == -INFINITY$2 ? '-0' : result
}
function baseGet(object4, path) {
path = castPath(path, object4)
var index2 = 0,
length2 = path.length
while (object4 != null && index2 < length2) {
object4 = object4[toKey(path[index2++])]
}
return index2 && index2 == length2 ? object4 : void 0
}
function get$a(object4, path, defaultValue) {
var result = object4 == null ? void 0 : baseGet(object4, path)
return result === void 0 ? defaultValue : result
}
function arrayPush$4(array4, values2) {
var index2 = -1,
length2 = values2.length,
offset2 = array4.length
while (++index2 < length2) {
array4[offset2 + index2] = values2[index2]
}
return array4
}
var spreadableSymbol = Symbol$8 ? Symbol$8.isConcatSpreadable : void 0
function isFlattenable(value2) {
return (
isArray$F(value2) ||
isArguments$5(value2) ||
!!(spreadableSymbol && value2 && value2[spreadableSymbol])
)
}
function baseFlatten(array4, depth, predicate, isStrict, result) {
var index2 = -1,
length2 = array4.length
predicate || (predicate = isFlattenable)
result || (result = [])
while (++index2 < length2) {
var value2 = array4[index2]
if (depth > 0 && predicate(value2)) {
if (depth > 1) {
baseFlatten(value2, depth - 1, predicate, isStrict, result)
} else {
arrayPush$4(result, value2)
}
} else if (!isStrict) {
result[result.length] = value2
}
}
return result
}
function flatten$2(array4) {
var length2 = array4 == null ? 0 : array4.length
return length2 ? baseFlatten(array4, 1) : []
}
function flatRest(func) {
return setToString$1(overRest(func, void 0, flatten$2), func + '')
}
var getPrototype$3 = overArg$3(Object.getPrototypeOf, Object)
var getPrototype$4 = getPrototype$3
function castArray$1() {
if (!arguments.length) {
return []
}
var value2 = arguments[0]
return isArray$F(value2) ? value2 : [value2]
}
function stackClear$2() {
this.__data__ = new ListCache$5()
this.size = 0
}
function stackDelete$2(key2) {
var data2 = this.__data__,
result = data2['delete'](key2)
this.size = data2.size
return result
}
function stackGet$2(key2) {
return this.__data__.get(key2)
}
function stackHas$2(key2) {
return this.__data__.has(key2)
}
var LARGE_ARRAY_SIZE$2 = 200
function stackSet$2(key2, value2) {
var data2 = this.__data__
if (data2 instanceof ListCache$5) {
var pairs = data2.__data__
if (!Map$6 || pairs.length < LARGE_ARRAY_SIZE$2 - 1) {
pairs.push([key2, value2])
this.size = ++data2.size
return this
}
data2 = this.__data__ = new MapCache$2(pairs)
}
data2.set(key2, value2)
this.size = data2.size
return this
}
function Stack$2(entries2) {
var data2 = (this.__data__ = new ListCache$5(entries2))
this.size = data2.size
}
Stack$2.prototype.clear = stackClear$2
Stack$2.prototype['delete'] = stackDelete$2
Stack$2.prototype.get = stackGet$2
Stack$2.prototype.has = stackHas$2
Stack$2.prototype.set = stackSet$2
function baseAssign$2(object4, source2) {
return object4 && copyObject$5(source2, keys$i(source2), object4)
}
function baseAssignIn$2(object4, source2) {
return object4 && copyObject$5(source2, keysIn$4(source2), object4)
}
var freeExports =
typeof exports == 'object' && exports && !exports.nodeType && exports
var freeModule =
freeExports &&
typeof module == 'object' &&
module &&
!module.nodeType &&
module
var moduleExports = freeModule && freeModule.exports === freeExports
var Buffer$1 = moduleExports ? root$b.Buffer : void 0,
allocUnsafe = Buffer$1 ? Buffer$1.allocUnsafe : void 0
function cloneBuffer$1(buffer, isDeep) {
if (isDeep) {
return buffer.slice()
}
var length2 = buffer.length,
result = allocUnsafe
? allocUnsafe(length2)
: new buffer.constructor(length2)
buffer.copy(result)
return result
}
function arrayFilter$2(array4, predicate) {
var index2 = -1,
length2 = array4 == null ? 0 : array4.length,
resIndex = 0,
result = []
while (++index2 < length2) {
var value2 = array4[index2]
if (predicate(value2, index2, array4)) {
result[resIndex++] = value2
}
}
return result
}
function stubArray$3() {
return []
}
var objectProto$g = Object.prototype
var propertyIsEnumerable$2 = objectProto$g.propertyIsEnumerable
var nativeGetSymbols$3 = Object.getOwnPropertySymbols
var getSymbols$4 = !nativeGetSymbols$3
? stubArray$3
: function (object4) {
if (object4 == null) {
return []
}
object4 = Object(object4)
return arrayFilter$2(nativeGetSymbols$3(object4), function (symbol) {
return propertyIsEnumerable$2.call(object4, symbol)
})
}
var getSymbols$5 = getSymbols$4
function copySymbols$2(source2, object4) {
return copyObject$5(source2, getSymbols$5(source2), object4)
}
var nativeGetSymbols$2 = Object.getOwnPropertySymbols
var getSymbolsIn$3 = !nativeGetSymbols$2
? stubArray$3
: function (object4) {
var result = []
while (object4) {
arrayPush$4(result, getSymbols$5(object4))
object4 = getPrototype$4(object4)
}
return result
}
var getSymbolsIn$4 = getSymbolsIn$3
function copySymbolsIn$2(source2, object4) {
return copyObject$5(source2, getSymbolsIn$4(source2), object4)
}
function baseGetAllKeys$3(object4, keysFunc, symbolsFunc) {
var result = keysFunc(object4)
return isArray$F(object4) ? result : arrayPush$4(result, symbolsFunc(object4))
}
function getAllKeys$2(object4) {
return baseGetAllKeys$3(object4, keys$i, getSymbols$5)
}
function getAllKeysIn$2(object4) {
return baseGetAllKeys$3(object4, keysIn$4, getSymbolsIn$4)
}
var DataView$5 = getNative$8(root$b, 'DataView')
var DataView$6 = DataView$5
var Promise$4 = getNative$8(root$b, 'Promise')
var Promise$5 = Promise$4
var Set$3 = getNative$8(root$b, 'Set')
var Set$4 = Set$3
var mapTag$9 = '[object Map]',
objectTag$5 = '[object Object]',
promiseTag$1 = '[object Promise]',
setTag$9 = '[object Set]',
weakMapTag$4 = '[object WeakMap]'
var dataViewTag$7 = '[object DataView]'
var dataViewCtorString$1 = toSource$3(DataView$6),
mapCtorString$1 = toSource$3(Map$6),
promiseCtorString$1 = toSource$3(Promise$5),
setCtorString$1 = toSource$3(Set$4),
weakMapCtorString$1 = toSource$3(WeakMap$8)
var getTag$4 = baseGetTag$5
if (
(DataView$6 &&
getTag$4(new DataView$6(new ArrayBuffer(1))) != dataViewTag$7) ||
(Map$6 && getTag$4(new Map$6()) != mapTag$9) ||
(Promise$5 && getTag$4(Promise$5.resolve()) != promiseTag$1) ||
(Set$4 && getTag$4(new Set$4()) != setTag$9) ||
(WeakMap$8 && getTag$4(new WeakMap$8()) != weakMapTag$4)
) {
getTag$4 = function (value2) {
var result = baseGetTag$5(value2),
Ctor = result == objectTag$5 ? value2.constructor : void 0,
ctorString = Ctor ? toSource$3(Ctor) : ''
if (ctorString) {
switch (ctorString) {
case dataViewCtorString$1:
return dataViewTag$7
case mapCtorString$1:
return mapTag$9
case promiseCtorString$1:
return promiseTag$1
case setCtorString$1:
return setTag$9
case weakMapCtorString$1:
return weakMapTag$4
}
}
return result
}
}
var getTag$5 = getTag$4
var objectProto$f = Object.prototype
var hasOwnProperty$g = objectProto$f.hasOwnProperty
function initCloneArray$2(array4) {
var length2 = array4.length,
result = new array4.constructor(length2)
if (
length2 &&
typeof array4[0] == 'string' &&
hasOwnProperty$g.call(array4, 'index')
) {
result.index = array4.index
result.input = array4.input
}
return result
}
var Uint8Array$3 = root$b.Uint8Array
var Uint8Array$4 = Uint8Array$3
function cloneArrayBuffer$4(arrayBuffer) {
var result = new arrayBuffer.constructor(arrayBuffer.byteLength)
new Uint8Array$4(result).set(new Uint8Array$4(arrayBuffer))
return result
}
function cloneDataView$2(dataView, isDeep) {
var buffer = isDeep ? cloneArrayBuffer$4(dataView.buffer) : dataView.buffer
return new dataView.constructor(
buffer,
dataView.byteOffset,
dataView.byteLength
)
}
var reFlags$1 = /\w*$/
function cloneRegExp$2(regexp4) {
var result = new regexp4.constructor(regexp4.source, reFlags$1.exec(regexp4))
result.lastIndex = regexp4.lastIndex
return result
}
var symbolProto$2 = Symbol$8 ? Symbol$8.prototype : void 0,
symbolValueOf$2 = symbolProto$2 ? symbolProto$2.valueOf : void 0
function cloneSymbol$2(symbol) {
return symbolValueOf$2 ? Object(symbolValueOf$2.call(symbol)) : {}
}
function cloneTypedArray$2(typedArray, isDeep) {
var buffer = isDeep
? cloneArrayBuffer$4(typedArray.buffer)
: typedArray.buffer
return new typedArray.constructor(
buffer,
typedArray.byteOffset,
typedArray.length
)
}
var boolTag$5 = '[object Boolean]',
dateTag$5 = '[object Date]',
mapTag$8 = '[object Map]',
numberTag$5 = '[object Number]',
regexpTag$5 = '[object RegExp]',
setTag$8 = '[object Set]',
stringTag$5 = '[object String]',
symbolTag$4 = '[object Symbol]'
var arrayBufferTag$5 = '[object ArrayBuffer]',
dataViewTag$6 = '[object DataView]',
float32Tag$4 = '[object Float32Array]',
float64Tag$4 = '[object Float64Array]',
int8Tag$4 = '[object Int8Array]',
int16Tag$4 = '[object Int16Array]',
int32Tag$4 = '[object Int32Array]',
uint8Tag$4 = '[object Uint8Array]',
uint8ClampedTag$4 = '[object Uint8ClampedArray]',
uint16Tag$4 = '[object Uint16Array]',
uint32Tag$4 = '[object Uint32Array]'
function initCloneByTag$2(object4, tag, isDeep) {
var Ctor = object4.constructor
switch (tag) {
case arrayBufferTag$5:
return cloneArrayBuffer$4(object4)
case boolTag$5:
case dateTag$5:
return new Ctor(+object4)
case dataViewTag$6:
return cloneDataView$2(object4, isDeep)
case float32Tag$4:
case float64Tag$4:
case int8Tag$4:
case int16Tag$4:
case int32Tag$4:
case uint8Tag$4:
case uint8ClampedTag$4:
case uint16Tag$4:
case uint32Tag$4:
return cloneTypedArray$2(object4, isDeep)
case mapTag$8:
return new Ctor()
case numberTag$5:
case stringTag$5:
return new Ctor(object4)
case regexpTag$5:
return cloneRegExp$2(object4)
case setTag$8:
return new Ctor()
case symbolTag$4:
return cloneSymbol$2(object4)
}
}
function initCloneObject$2(object4) {
return typeof object4.constructor == 'function' && !isPrototype$4(object4)
? baseCreate$3(getPrototype$4(object4))
: {}
}
var mapTag$7 = '[object Map]'
function baseIsMap$2(value2) {
return isObjectLike$6(value2) && getTag$5(value2) == mapTag$7
}
var nodeIsMap$1 = nodeUtil$4 && nodeUtil$4.isMap
var isMap$4 = nodeIsMap$1 ? baseUnary$4(nodeIsMap$1) : baseIsMap$2
var isMap$5 = isMap$4
var setTag$7 = '[object Set]'
function baseIsSet$2(value2) {
return isObjectLike$6(value2) && getTag$5(value2) == setTag$7
}
var nodeIsSet$1 = nodeUtil$4 && nodeUtil$4.isSet
var isSet$4 = nodeIsSet$1 ? baseUnary$4(nodeIsSet$1) : baseIsSet$2
var isSet$5 = isSet$4
var CLONE_DEEP_FLAG$2 = 1,
CLONE_FLAT_FLAG$1 = 2,
CLONE_SYMBOLS_FLAG$3 = 4
var argsTag$4 = '[object Arguments]',
arrayTag$3 = '[object Array]',
boolTag$4 = '[object Boolean]',
dateTag$4 = '[object Date]',
errorTag$3 = '[object Error]',
funcTag$3 = '[object Function]',
genTag$2 = '[object GeneratorFunction]',
mapTag$6 = '[object Map]',
numberTag$4 = '[object Number]',
objectTag$4 = '[object Object]',
regexpTag$4 = '[object RegExp]',
setTag$6 = '[object Set]',
stringTag$4 = '[object String]',
symbolTag$3 = '[object Symbol]',
weakMapTag$3 = '[object WeakMap]'
var arrayBufferTag$4 = '[object ArrayBuffer]',
dataViewTag$5 = '[object DataView]',
float32Tag$3 = '[object Float32Array]',
float64Tag$3 = '[object Float64Array]',
int8Tag$3 = '[object Int8Array]',
int16Tag$3 = '[object Int16Array]',
int32Tag$3 = '[object Int32Array]',
uint8Tag$3 = '[object Uint8Array]',
uint8ClampedTag$3 = '[object Uint8ClampedArray]',
uint16Tag$3 = '[object Uint16Array]',
uint32Tag$3 = '[object Uint32Array]'
var cloneableTags$1 = {}
cloneableTags$1[argsTag$4] =
cloneableTags$1[arrayTag$3] =
cloneableTags$1[arrayBufferTag$4] =
cloneableTags$1[dataViewTag$5] =
cloneableTags$1[boolTag$4] =
cloneableTags$1[dateTag$4] =
cloneableTags$1[float32Tag$3] =
cloneableTags$1[float64Tag$3] =
cloneableTags$1[int8Tag$3] =
cloneableTags$1[int16Tag$3] =
cloneableTags$1[int32Tag$3] =
cloneableTags$1[mapTag$6] =
cloneableTags$1[numberTag$4] =
cloneableTags$1[objectTag$4] =
cloneableTags$1[regexpTag$4] =
cloneableTags$1[setTag$6] =
cloneableTags$1[stringTag$4] =
cloneableTags$1[symbolTag$3] =
cloneableTags$1[uint8Tag$3] =
cloneableTags$1[uint8ClampedTag$3] =
cloneableTags$1[uint16Tag$3] =
cloneableTags$1[uint32Tag$3] =
true
cloneableTags$1[errorTag$3] =
cloneableTags$1[funcTag$3] =
cloneableTags$1[weakMapTag$3] =
false
function baseClone$2(value2, bitmask, customizer, key2, object4, stack) {
var result,
isDeep = bitmask & CLONE_DEEP_FLAG$2,
isFlat = bitmask & CLONE_FLAT_FLAG$1,
isFull = bitmask & CLONE_SYMBOLS_FLAG$3
if (customizer) {
result = object4
? customizer(value2, key2, object4, stack)
: customizer(value2)
}
if (result !== void 0) {
return result
}
if (!isObject$x(value2)) {
return value2
}
var isArr = isArray$F(value2)
if (isArr) {
result = initCloneArray$2(value2)
if (!isDeep) {
return copyArray$2(value2, result)
}
} else {
var tag = getTag$5(value2),
isFunc = tag == funcTag$3 || tag == genTag$2
if (isBuffer$5(value2)) {
return cloneBuffer$1(value2, isDeep)
}
if (tag == objectTag$4 || tag == argsTag$4 || (isFunc && !object4)) {
result = isFlat || isFunc ? {} : initCloneObject$2(value2)
if (!isDeep) {
return isFlat
? copySymbolsIn$2(value2, baseAssignIn$2(result, value2))
: copySymbols$2(value2, baseAssign$2(result, value2))
}
} else {
if (!cloneableTags$1[tag]) {
return object4 ? value2 : {}
}
result = initCloneByTag$2(value2, tag, isDeep)
}
}
stack || (stack = new Stack$2())
var stacked = stack.get(value2)
if (stacked) {
return stacked
}
stack.set(value2, result)
if (isSet$5(value2)) {
value2.forEach(function (subValue) {
result.add(
baseClone$2(subValue, bitmask, customizer, subValue, value2, stack)
)
})
} else if (isMap$5(value2)) {
value2.forEach(function (subValue, key3) {
result.set(
key3,
baseClone$2(subValue, bitmask, customizer, key3, value2, stack)
)
})
}
var keysFunc = isFull
? isFlat
? getAllKeysIn$2
: getAllKeys$2
: isFlat
? keysIn$4
: keys$i
var props2 = isArr ? void 0 : keysFunc(value2)
arrayEach$h(props2 || value2, function (subValue, key3) {
if (props2) {
key3 = subValue
subValue = value2[key3]
}
assignValue$3(
result,
key3,
baseClone$2(subValue, bitmask, customizer, key3, value2, stack)
)
})
return result
}
var CLONE_SYMBOLS_FLAG$2 = 4
function clone$b(value2) {
return baseClone$2(value2, CLONE_SYMBOLS_FLAG$2)
}
var HASH_UNDEFINED$2 = '__lodash_hash_undefined__'
function setCacheAdd(value2) {
this.__data__.set(value2, HASH_UNDEFINED$2)
return this
}
function setCacheHas(value2) {
return this.__data__.has(value2)
}
function SetCache(values2) {
var index2 = -1,
length2 = values2 == null ? 0 : values2.length
this.__data__ = new MapCache$2()
while (++index2 < length2) {
this.add(values2[index2])
}
}
SetCache.prototype.add = SetCache.prototype.push = setCacheAdd
SetCache.prototype.has = setCacheHas
function arraySome(array4, predicate) {
var index2 = -1,
length2 = array4 == null ? 0 : array4.length
while (++index2 < length2) {
if (predicate(array4[index2], index2, array4)) {
return true
}
}
return false
}
function cacheHas(cache2, key2) {
return cache2.has(key2)
}
var COMPARE_PARTIAL_FLAG$3 = 1,
COMPARE_UNORDERED_FLAG$1 = 2
function equalArrays(array4, other, bitmask, customizer, equalFunc, stack) {
var isPartial = bitmask & COMPARE_PARTIAL_FLAG$3,
arrLength = array4.length,
othLength = other.length
if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
return false
}
var arrStacked = stack.get(array4)
var othStacked = stack.get(other)
if (arrStacked && othStacked) {
return arrStacked == other && othStacked == array4
}
var index2 = -1,
result = true,
seen = bitmask & COMPARE_UNORDERED_FLAG$1 ? new SetCache() : void 0
stack.set(array4, other)
stack.set(other, array4)
while (++index2 < arrLength) {
var arrValue = array4[index2],
othValue = other[index2]
if (customizer) {
var compared = isPartial
? customizer(othValue, arrValue, index2, other, array4, stack)
: customizer(arrValue, othValue, index2, array4, other, stack)
}
if (compared !== void 0) {
if (compared) {
continue
}
result = false
break
}
if (seen) {
if (
!arraySome(other, function (othValue2, othIndex) {
if (
!cacheHas(seen, othIndex) &&
(arrValue === othValue2 ||
equalFunc(arrValue, othValue2, bitmask, customizer, stack))
) {
return seen.push(othIndex)
}
})
) {
result = false
break
}
} else if (
!(
arrValue === othValue ||
equalFunc(arrValue, othValue, bitmask, customizer, stack)
)
) {
result = false
break
}
}
stack['delete'](array4)
stack['delete'](other)
return result
}
function mapToArray(map2) {
var index2 = -1,
result = Array(map2.size)
map2.forEach(function (value2, key2) {
result[++index2] = [key2, value2]
})
return result
}
function setToArray(set2) {
var index2 = -1,
result = Array(set2.size)
set2.forEach(function (value2) {
result[++index2] = value2
})
return result
}
var COMPARE_PARTIAL_FLAG$2 = 1,
COMPARE_UNORDERED_FLAG = 2
var boolTag$3 = '[object Boolean]',
dateTag$3 = '[object Date]',
errorTag$2 = '[object Error]',
mapTag$5 = '[object Map]',
numberTag$3 = '[object Number]',
regexpTag$3 = '[object RegExp]',
setTag$5 = '[object Set]',
stringTag$3 = '[object String]',
symbolTag$2 = '[object Symbol]'
var arrayBufferTag$3 = '[object ArrayBuffer]',
dataViewTag$4 = '[object DataView]'
var symbolProto$1 = Symbol$8 ? Symbol$8.prototype : void 0,
symbolValueOf$1 = symbolProto$1 ? symbolProto$1.valueOf : void 0
function equalByTag(
object4,
other,
tag,
bitmask,
customizer,
equalFunc,
stack
) {
switch (tag) {
case dataViewTag$4:
if (
object4.byteLength != other.byteLength ||
object4.byteOffset != other.byteOffset
) {
return false
}
object4 = object4.buffer
other = other.buffer
case arrayBufferTag$3:
if (
object4.byteLength != other.byteLength ||
!equalFunc(new Uint8Array$4(object4), new Uint8Array$4(other))
) {
return false
}
return true
case boolTag$3:
case dateTag$3:
case numberTag$3:
return eq$3(+object4, +other)
case errorTag$2:
return object4.name == other.name && object4.message == other.message
case regexpTag$3:
case stringTag$3:
return object4 == other + ''
case mapTag$5:
var convert = mapToArray
case setTag$5:
var isPartial = bitmask & COMPARE_PARTIAL_FLAG$2
convert || (convert = setToArray)
if (object4.size != other.size && !isPartial) {
return false
}
var stacked = stack.get(object4)
if (stacked) {
return stacked == other
}
bitmask |= COMPARE_UNORDERED_FLAG
stack.set(object4, other)
var result = equalArrays(
convert(object4),
convert(other),
bitmask,
customizer,
equalFunc,
stack
)
stack['delete'](object4)
return result
case symbolTag$2:
if (symbolValueOf$1) {
return symbolValueOf$1.call(object4) == symbolValueOf$1.call(other)
}
}
return false
}
var COMPARE_PARTIAL_FLAG$1 = 1
var objectProto$e = Object.prototype
var hasOwnProperty$f = objectProto$e.hasOwnProperty
function equalObjects(object4, other, bitmask, customizer, equalFunc, stack) {
var isPartial = bitmask & COMPARE_PARTIAL_FLAG$1,
objProps = getAllKeys$2(object4),
objLength = objProps.length,
othProps = getAllKeys$2(other),
othLength = othProps.length
if (objLength != othLength && !isPartial) {
return false
}
var index2 = objLength
while (index2--) {
var key2 = objProps[index2]
if (!(isPartial ? key2 in other : hasOwnProperty$f.call(other, key2))) {
return false
}
}
var objStacked = stack.get(object4)
var othStacked = stack.get(other)
if (objStacked && othStacked) {
return objStacked == other && othStacked == object4
}
var result = true
stack.set(object4, other)
stack.set(other, object4)
var skipCtor = isPartial
while (++index2 < objLength) {
key2 = objProps[index2]
var objValue = object4[key2],
othValue = other[key2]
if (customizer) {
var compared = isPartial
? customizer(othValue, objValue, key2, other, object4, stack)
: customizer(objValue, othValue, key2, object4, other, stack)
}
if (
!(compared === void 0
? objValue === othValue ||
equalFunc(objValue, othValue, bitmask, customizer, stack)
: compared)
) {
result = false
break
}
skipCtor || (skipCtor = key2 == 'constructor')
}
if (result && !skipCtor) {
var objCtor = object4.constructor,
othCtor = other.constructor
if (
objCtor != othCtor &&
'constructor' in object4 &&
'constructor' in other &&
!(
typeof objCtor == 'function' &&
objCtor instanceof objCtor &&
typeof othCtor == 'function' &&
othCtor instanceof othCtor
)
) {
result = false
}
}
stack['delete'](object4)
stack['delete'](other)
return result
}
var COMPARE_PARTIAL_FLAG = 1
var argsTag$3 = '[object Arguments]',
arrayTag$2 = '[object Array]',
objectTag$3 = '[object Object]'
var objectProto$d = Object.prototype
var hasOwnProperty$e = objectProto$d.hasOwnProperty
function baseIsEqualDeep(
object4,
other,
bitmask,
customizer,
equalFunc,
stack
) {
var objIsArr = isArray$F(object4),
othIsArr = isArray$F(other),
objTag = objIsArr ? arrayTag$2 : getTag$5(object4),
othTag = othIsArr ? arrayTag$2 : getTag$5(other)
objTag = objTag == argsTag$3 ? objectTag$3 : objTag
othTag = othTag == argsTag$3 ? objectTag$3 : othTag
var objIsObj = objTag == objectTag$3,
othIsObj = othTag == objectTag$3,
isSameTag = objTag == othTag
if (isSameTag && isBuffer$5(object4)) {
if (!isBuffer$5(other)) {
return false
}
objIsArr = true
objIsObj = false
}
if (isSameTag && !objIsObj) {
stack || (stack = new Stack$2())
return objIsArr || isTypedArray$4(object4)
? equalArrays(object4, other, bitmask, customizer, equalFunc, stack)
: equalByTag(
object4,
other,
objTag,
bitmask,
customizer,
equalFunc,
stack
)
}
if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
var objIsWrapped =
objIsObj && hasOwnProperty$e.call(object4, '__wrapped__'),
othIsWrapped = othIsObj && hasOwnProperty$e.call(other, '__wrapped__')
if (objIsWrapped || othIsWrapped) {
var objUnwrapped = objIsWrapped ? object4.value() : object4,
othUnwrapped = othIsWrapped ? other.value() : other
stack || (stack = new Stack$2())
return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack)
}
}
if (!isSameTag) {
return false
}
stack || (stack = new Stack$2())
return equalObjects(object4, other, bitmask, customizer, equalFunc, stack)
}
function baseIsEqual(value2, other, bitmask, customizer, stack) {
if (value2 === other) {
return true
}
if (
value2 == null ||
other == null ||
(!isObjectLike$6(value2) && !isObjectLike$6(other))
) {
return value2 !== value2 && other !== other
}
return baseIsEqualDeep(value2, other, bitmask, customizer, baseIsEqual, stack)
}
function baseHasIn(object4, key2) {
return object4 != null && key2 in Object(object4)
}
function hasPath(object4, path, hasFunc) {
path = castPath(path, object4)
var index2 = -1,
length2 = path.length,
result = false
while (++index2 < length2) {
var key2 = toKey(path[index2])
if (!(result = object4 != null && hasFunc(object4, key2))) {
break
}
object4 = object4[key2]
}
if (result || ++index2 != length2) {
return result
}
length2 = object4 == null ? 0 : object4.length
return (
!!length2 &&
isLength$4(length2) &&
isIndex$2(key2, length2) &&
(isArray$F(object4) || isArguments$5(object4))
)
}
function hasIn(object4, path) {
return object4 != null && hasPath(object4, path, baseHasIn)
}
var now$7 = function () {
return root$b.Date.now()
}
var now$8 = now$7
var FUNC_ERROR_TEXT$1 = 'Expected a function'
var nativeMax = Math.max,
nativeMin = Math.min
function debounce$3(func, wait, options2) {
var lastArgs,
lastThis,
maxWait,
result,
timerId,
lastCallTime,
lastInvokeTime = 0,
leading = false,
maxing = false,
trailing = true
if (typeof func != 'function') {
throw new TypeError(FUNC_ERROR_TEXT$1)
}
wait = toNumber$8(wait) || 0
if (isObject$x(options2)) {
leading = !!options2.leading
maxing = 'maxWait' in options2
maxWait = maxing
? nativeMax(toNumber$8(options2.maxWait) || 0, wait)
: maxWait
trailing = 'trailing' in options2 ? !!options2.trailing : trailing
}
function invokeFunc(time2) {
var args = lastArgs,
thisArg = lastThis
lastArgs = lastThis = void 0
lastInvokeTime = time2
result = func.apply(thisArg, args)
return result
}
function leadingEdge(time2) {
lastInvokeTime = time2
timerId = setTimeout(timerExpired, wait)
return leading ? invokeFunc(time2) : result
}
function remainingWait(time2) {
var timeSinceLastCall = time2 - lastCallTime,
timeSinceLastInvoke = time2 - lastInvokeTime,
timeWaiting = wait - timeSinceLastCall
return maxing
? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)
: timeWaiting
}
function shouldInvoke(time2) {
var timeSinceLastCall = time2 - lastCallTime,
timeSinceLastInvoke = time2 - lastInvokeTime
return (
lastCallTime === void 0 ||
timeSinceLastCall >= wait ||
timeSinceLastCall < 0 ||
(maxing && timeSinceLastInvoke >= maxWait)
)
}
function timerExpired() {
var time2 = now$8()
if (shouldInvoke(time2)) {
return trailingEdge(time2)
}
timerId = setTimeout(timerExpired, remainingWait(time2))
}
function trailingEdge(time2) {
timerId = void 0
if (trailing && lastArgs) {
return invokeFunc(time2)
}
lastArgs = lastThis = void 0
return result
}
function cancel2() {
if (timerId !== void 0) {
clearTimeout(timerId)
}
lastInvokeTime = 0
lastArgs = lastCallTime = lastThis = timerId = void 0
}
function flush2() {
return timerId === void 0 ? result : trailingEdge(now$8())
}
function debounced() {
var time2 = now$8(),
isInvoking = shouldInvoke(time2)
lastArgs = arguments
lastThis = this
lastCallTime = time2
if (isInvoking) {
if (timerId === void 0) {
return leadingEdge(lastCallTime)
}
if (maxing) {
clearTimeout(timerId)
timerId = setTimeout(timerExpired, wait)
return invokeFunc(lastCallTime)
}
}
if (timerId === void 0) {
timerId = setTimeout(timerExpired, wait)
}
return result
}
debounced.cancel = cancel2
debounced.flush = flush2
return debounced
}
function isArrayLikeObject(value2) {
return isObjectLike$6(value2) && isArrayLike$4(value2)
}
function arrayIncludesWith(array4, value2, comparator) {
var index2 = -1,
length2 = array4 == null ? 0 : array4.length
while (++index2 < length2) {
if (comparator(value2, array4[index2])) {
return true
}
}
return false
}
var INFINITY$1 = 1 / 0
function flattenDeep$1(array4) {
var length2 = array4 == null ? 0 : array4.length
return length2 ? baseFlatten(array4, INFINITY$1) : []
}
function fromPairs(pairs) {
var index2 = -1,
length2 = pairs == null ? 0 : pairs.length,
result = {}
while (++index2 < length2) {
var pair = pairs[index2]
result[pair[0]] = pair[1]
}
return result
}
function isEqual$4(value2, other) {
return baseIsEqual(value2, other)
}
function isNil$1(value2) {
return value2 == null
}
function baseSet(object4, path, value2, customizer) {
if (!isObject$x(object4)) {
return object4
}
path = castPath(path, object4)
var index2 = -1,
length2 = path.length,
lastIndex = length2 - 1,
nested = object4
while (nested != null && ++index2 < length2) {
var key2 = toKey(path[index2]),
newValue = value2
if (
key2 === '__proto__' ||
key2 === 'constructor' ||
key2 === 'prototype'
) {
return object4
}
if (index2 != lastIndex) {
var objValue = nested[key2]
newValue = customizer ? customizer(objValue, key2, nested) : void 0
if (newValue === void 0) {
newValue = isObject$x(objValue)
? objValue
: isIndex$2(path[index2 + 1])
? []
: {}
}
}
assignValue$3(nested, key2, newValue)
nested = nested[key2]
}
return object4
}
function basePickBy(object4, paths, predicate) {
var index2 = -1,
length2 = paths.length,
result = {}
while (++index2 < length2) {
var path = paths[index2],
value2 = baseGet(object4, path)
if (predicate(value2, path)) {
baseSet(result, castPath(path, object4), value2)
}
}
return result
}
function basePick(object4, paths) {
return basePickBy(object4, paths, function (value2, path) {
return hasIn(object4, path)
})
}
var pick$2 = flatRest(function (object4, paths) {
return object4 == null ? {} : basePick(object4, paths)
})
var pick$3 = pick$2
function set$8(object4, path, value2) {
return object4 == null ? object4 : baseSet(object4, path, value2)
}
var FUNC_ERROR_TEXT = 'Expected a function'
function throttle$4(func, wait, options2) {
var leading = true,
trailing = true
if (typeof func != 'function') {
throw new TypeError(FUNC_ERROR_TEXT)
}
if (isObject$x(options2)) {
leading = 'leading' in options2 ? !!options2.leading : leading
trailing = 'trailing' in options2 ? !!options2.trailing : trailing
}
return debounce$3(func, wait, {
leading: leading,
maxWait: wait,
trailing: trailing,
})
}
var INFINITY = 1 / 0
var createSet = !(Set$4 && 1 / setToArray(new Set$4([, -0]))[1] == INFINITY)
? noop$8
: function (values2) {
return new Set$4(values2)
}
var createSet$1 = createSet
var LARGE_ARRAY_SIZE$1 = 200
function baseUniq(array4, iteratee, comparator) {
var index2 = -1,
includes3 = arrayIncludes$1,
length2 = array4.length,
isCommon = true,
result = [],
seen = result
if (comparator) {
isCommon = false
includes3 = arrayIncludesWith
} else if (length2 >= LARGE_ARRAY_SIZE$1) {
var set2 = iteratee ? null : createSet$1(array4)
if (set2) {
return setToArray(set2)
}
isCommon = false
includes3 = cacheHas
seen = new SetCache()
} else {
seen = iteratee ? [] : result
}
outer: while (++index2 < length2) {
var value2 = array4[index2],
computed2 = iteratee ? iteratee(value2) : value2
value2 = comparator || value2 !== 0 ? value2 : 0
if (isCommon && computed2 === computed2) {
var seenIndex = seen.length
while (seenIndex--) {
if (seen[seenIndex] === computed2) {
continue outer
}
}
if (iteratee) {
seen.push(computed2)
}
result.push(value2)
} else if (!includes3(seen, computed2, comparator)) {
if (seen !== result) {
seen.push(computed2)
}
result.push(value2)
}
}
return result
}
var union$2 = baseRest(function (arrays) {
return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true))
})
var union$3 = union$2
const FOCUSABLE_ELEMENT_SELECTORS = `a[href],button:not([disabled]),button:not([hidden]),:not([tabindex="-1"]),input:not([disabled]),input:not([type="hidden"]),select:not([disabled]),textarea:not([disabled])`
const isVisible = (element) => {
const computed2 = getComputedStyle(element)
return computed2.position === 'fixed' ? false : element.offsetParent !== null
}
const obtainAllFocusableElements$1 = (element) => {
return Array.from(
element.querySelectorAll(FOCUSABLE_ELEMENT_SELECTORS)
).filter((item2) => isFocusable(item2) && isVisible(item2))
}
const isFocusable = (element) => {
if (
element.tabIndex > 0 ||
(element.tabIndex === 0 && element.getAttribute('tabIndex') !== null)
) {
return true
}
if (element.disabled) {
return false
}
switch (element.nodeName) {
case 'A': {
return !!element.href && element.rel !== 'ignore'
}
case 'INPUT': {
return !(element.type === 'hidden' || element.type === 'file')
}
case 'BUTTON':
case 'SELECT':
case 'TEXTAREA': {
return true
}
default: {
return false
}
}
}
const triggerEvent$1 = function (elm, name2, ...opts) {
let eventName
if (name2.includes('mouse') || name2.includes('click')) {
eventName = 'MouseEvents'
} else if (name2.includes('key')) {
eventName = 'KeyboardEvent'
} else {
eventName = 'HTMLEvents'
}
const evt = document.createEvent(eventName)
evt.initEvent(name2, ...opts)
elm.dispatchEvent(evt)
return elm
}
const isLeaf = (el2) => !el2.getAttribute('aria-owns')
const getSibling = (el2, distance2, elClass) => {
const { parentNode: parentNode2 } = el2
if (!parentNode2) return null
const siblings = parentNode2.querySelectorAll(elClass)
const index2 = Array.prototype.indexOf.call(siblings, el2)
return siblings[index2 + distance2] || null
}
const focusNode = (el2) => {
if (!el2) return
el2.focus()
!isLeaf(el2) && el2.click()
}
const on$2 = (element, event, handler, useCapture = false) => {
if (element && event && handler) {
element == null
? void 0
: element.addEventListener(event, handler, useCapture)
}
}
const off$1 = (element, event, handler, useCapture = false) => {
if (element && event && handler) {
element == null
? void 0
: element.removeEventListener(event, handler, useCapture)
}
}
const once$2 = (el2, event, fn2) => {
const listener = function (...args) {
if (fn2) {
fn2.apply(this, args)
}
off$1(el2, event, listener)
}
on$2(el2, event, listener)
}
const composeEventHandlers = (
theirsHandler,
oursHandler,
{ checkForDefaultPrevented = true } = {}
) => {
const handleEvent2 = (event) => {
const shouldPrevent = theirsHandler == null ? void 0 : theirsHandler(event)
if (checkForDefaultPrevented === false || !shouldPrevent) {
return oursHandler == null ? void 0 : oursHandler(event)
}
}
return handleEvent2
}
const whenMouse = (handler) => {
return (e2) => (e2.pointerType === 'mouse' ? handler(e2) : void 0)
}
var __defProp$9$2 = Object.defineProperty
var __defProps$6$2 = Object.defineProperties
var __getOwnPropDescs$6$2 = Object.getOwnPropertyDescriptors
var __getOwnPropSymbols$b$2 = Object.getOwnPropertySymbols
var __hasOwnProp$b$2 = Object.prototype.hasOwnProperty
var __propIsEnum$b$2 = Object.prototype.propertyIsEnumerable
var __defNormalProp$9$2 = (obj, key2, value2) =>
key2 in obj
? __defProp$9$2(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$9$2 = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$b$2.call(b2, prop)) __defNormalProp$9$2(a2, prop, b2[prop])
if (__getOwnPropSymbols$b$2)
for (var prop of __getOwnPropSymbols$b$2(b2)) {
if (__propIsEnum$b$2.call(b2, prop))
__defNormalProp$9$2(a2, prop, b2[prop])
}
return a2
}
var __spreadProps$6$2 = (a2, b2) =>
__defProps$6$2(a2, __getOwnPropDescs$6$2(b2))
function computedEager$1(fn2, options2) {
var _a2
const result = shallowRef()
watchEffect(
() => {
result.value = fn2()
},
__spreadProps$6$2(__spreadValues$9$2({}, options2), {
flush:
(_a2 = options2 == null ? void 0 : options2.flush) != null
? _a2
: 'sync',
})
)
return readonly(result)
}
var _a$4
const isClient$1 = typeof window !== 'undefined'
const isDef$2 = (val2) => typeof val2 !== 'undefined'
const assert$2 = (condition2, ...infos) => {
if (!condition2) console.warn(...infos)
}
const toString$e = Object.prototype.toString
const isBoolean$5 = (val2) => typeof val2 === 'boolean'
const isFunction$m = (val2) => typeof val2 === 'function'
const isNumber$h = (val2) => typeof val2 === 'number'
const isString$g = (val2) => typeof val2 === 'string'
const isObject$w = (val2) => toString$e.call(val2) === '[object Object]'
const isWindow$3 = (val2) =>
typeof window !== 'undefined' && toString$e.call(val2) === '[object Window]'
const now$6 = () => Date.now()
const timestamp$3 = () => +Date.now()
const clamp$2 = (n2, min3, max3) => Math.min(max3, Math.max(min3, n2))
const noop$7 = () => {}
const rand$1 = (min3, max3) => {
min3 = Math.ceil(min3)
max3 = Math.floor(max3)
return Math.floor(Math.random() * (max3 - min3 + 1)) + min3
}
const isIOS$1 =
isClient$1 &&
((_a$4 = window == null ? void 0 : window.navigator) == null
? void 0
: _a$4.userAgent) &&
/iP(ad|hone|od)/.test(window.navigator.userAgent)
function createFilterWrapper$1(filter2, fn2) {
function wrapper(...args) {
filter2(() => fn2.apply(this, args), { fn: fn2, thisArg: this, args })
}
return wrapper
}
const bypassFilter$1 = (invoke2) => {
return invoke2()
}
function debounceFilter$1(ms, options2 = {}) {
let timer2
let maxTimer
const filter2 = (invoke2) => {
const duration2 = unref(ms)
const maxDuration = unref(options2.maxWait)
if (timer2) clearTimeout(timer2)
if (duration2 <= 0 || (maxDuration !== void 0 && maxDuration <= 0)) {
if (maxTimer) {
clearTimeout(maxTimer)
maxTimer = null
}
return invoke2()
}
if (maxDuration && !maxTimer) {
maxTimer = setTimeout(() => {
if (timer2) clearTimeout(timer2)
maxTimer = null
invoke2()
}, maxDuration)
}
timer2 = setTimeout(() => {
if (maxTimer) clearTimeout(maxTimer)
maxTimer = null
invoke2()
}, duration2)
}
return filter2
}
function throttleFilter$1(ms, trailing = true, leading = true) {
let lastExec = 0
let timer2
let isLeading = true
const clear2 = () => {
if (timer2) {
clearTimeout(timer2)
timer2 = void 0
}
}
const filter2 = (invoke2) => {
const duration2 = unref(ms)
const elapsed = Date.now() - lastExec
clear2()
if (duration2 <= 0) {
lastExec = Date.now()
return invoke2()
}
if (elapsed > duration2 && (leading || !isLeading)) {
lastExec = Date.now()
invoke2()
} else if (trailing) {
timer2 = setTimeout(() => {
lastExec = Date.now()
isLeading = true
clear2()
invoke2()
}, duration2)
}
if (!leading && !timer2)
timer2 = setTimeout(() => (isLeading = true), duration2)
isLeading = false
}
return filter2
}
function pausableFilter$1(extendFilter = bypassFilter$1) {
const isActive = ref(true)
function pause() {
isActive.value = false
}
function resume() {
isActive.value = true
}
const eventFilter = (...args) => {
if (isActive.value) extendFilter(...args)
}
return { isActive, pause, resume, eventFilter }
}
function __onlyVue3$1(name2 = 'this function') {
return
}
const directiveHooks$1 = {
mounted: 'mounted',
updated: 'updated',
unmounted: 'unmounted',
}
function promiseTimeout$1(ms, throwOnTimeout = false, reason = 'Timeout') {
return new Promise((resolve2, reject2) => {
if (throwOnTimeout) setTimeout(() => reject2(reason), ms)
else setTimeout(resolve2, ms)
})
}
function identity$2(arg) {
return arg
}
function createSingletonPromise$1(fn2) {
let _promise
function wrapper() {
if (!_promise) _promise = fn2()
return _promise
}
wrapper.reset = async () => {
const _prev = _promise
_promise = void 0
if (_prev) await _prev
}
return wrapper
}
function invoke$3(fn2) {
return fn2()
}
function containsProp$1(obj, ...props2) {
return props2.some((k2) => k2 in obj)
}
function increaseWithUnit$1(target2, delta) {
var _a2
if (typeof target2 === 'number') return target2 + delta
const value2 =
((_a2 = target2.match(/^-?[0-9]+\.?[0-9]*/)) == null ? void 0 : _a2[0]) ||
''
const unit = target2.slice(value2.length)
const result = parseFloat(value2) + delta
if (Number.isNaN(result)) return target2
return result + unit
}
function objectPick$1(obj, keys3, omitUndefined = false) {
return keys3.reduce((n2, k2) => {
if (k2 in obj) {
if (!omitUndefined || obj[k2] !== void 0) n2[k2] = obj[k2]
}
return n2
}, {})
}
function computedWithControl$1(source2, fn2) {
let v4 = void 0
let track2
let trigger2
const dirty = ref(true)
const update3 = () => {
dirty.value = true
trigger2()
}
watch$1(source2, update3, { flush: 'sync' })
const get3 = isFunction$m(fn2) ? fn2 : fn2.get
const set2 = isFunction$m(fn2) ? void 0 : fn2.set
const result = customRef((_track, _trigger) => {
track2 = _track
trigger2 = _trigger
return {
get() {
if (dirty.value) {
v4 = get3()
dirty.value = false
}
track2()
return v4
},
set(v22) {
set2 == null ? void 0 : set2(v22)
},
}
})
if (Object.isExtensible(result)) result.trigger = update3
return result
}
function createEventHook$1() {
const fns = []
const off2 = (fn2) => {
const index2 = fns.indexOf(fn2)
if (index2 !== -1) fns.splice(index2, 1)
}
const on2 = (fn2) => {
fns.push(fn2)
return {
off: () => off2(fn2),
}
}
const trigger2 = (param) => {
fns.forEach((fn2) => fn2(param))
}
return {
on: on2,
off: off2,
trigger: trigger2,
}
}
function createGlobalState$1(stateFactory) {
let initialized = false
let state2
const scope = effectScope(true)
return () => {
if (!initialized) {
state2 = scope.run(stateFactory)
initialized = true
}
return state2
}
}
function createInjectionState$1(composable) {
const key2 = Symbol('InjectionState')
const useProvidingState = (...args) => {
provide(key2, composable(...args))
}
const useInjectedState = () => inject(key2)
return [useProvidingState, useInjectedState]
}
function tryOnScopeDispose$1(fn2) {
if (getCurrentScope()) {
onScopeDispose(fn2)
return true
}
return false
}
function createSharedComposable$1(composable) {
let subscribers = 0
let state2
let scope
const dispose2 = () => {
subscribers -= 1
if (scope && subscribers <= 0) {
scope.stop()
state2 = void 0
scope = void 0
}
}
return (...args) => {
subscribers += 1
if (!state2) {
scope = effectScope(true)
state2 = scope.run(() => composable(...args))
}
tryOnScopeDispose$1(dispose2)
return state2
}
}
function extendRef$1(
ref2,
extend2,
{ enumerable: enumerable4 = false, unwrap = true } = {}
) {
for (const [key2, value2] of Object.entries(extend2)) {
if (key2 === 'value') continue
if (isRef(value2) && unwrap) {
Object.defineProperty(ref2, key2, {
get() {
return value2.value
},
set(v4) {
value2.value = v4
},
enumerable: enumerable4,
})
} else {
Object.defineProperty(ref2, key2, {
value: value2,
enumerable: enumerable4,
})
}
}
return ref2
}
function get$9(obj, key2) {
if (key2 == null) return unref(obj)
return unref(obj)[key2]
}
function isDefined$1(v4) {
return unref(v4) != null
}
function logicAnd(...args) {
return computed(() => args.every((i2) => unref(i2)))
}
function logicNot(v4) {
return computed(() => !unref(v4))
}
function logicOr(...args) {
return computed(() => args.some((i2) => unref(i2)))
}
var __defProp$8$2 = Object.defineProperty
var __getOwnPropSymbols$a$2 = Object.getOwnPropertySymbols
var __hasOwnProp$a$2 = Object.prototype.hasOwnProperty
var __propIsEnum$a$2 = Object.prototype.propertyIsEnumerable
var __defNormalProp$8$2 = (obj, key2, value2) =>
key2 in obj
? __defProp$8$2(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$8$2 = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$a$2.call(b2, prop)) __defNormalProp$8$2(a2, prop, b2[prop])
if (__getOwnPropSymbols$a$2)
for (var prop of __getOwnPropSymbols$a$2(b2)) {
if (__propIsEnum$a$2.call(b2, prop))
__defNormalProp$8$2(a2, prop, b2[prop])
}
return a2
}
function makeDestructurable$1(obj, arr) {
if (typeof Symbol !== 'undefined') {
const clone2 = __spreadValues$8$2({}, obj)
Object.defineProperty(clone2, Symbol.iterator, {
enumerable: false,
value() {
let index2 = 0
return {
next: () => ({
value: arr[index2++],
done: index2 > arr.length,
}),
}
},
})
return clone2
} else {
return Object.assign([...arr], obj)
}
}
function reactify$1(fn2) {
return function (...args) {
return computed(() =>
fn2.apply(
this,
args.map((i2) => unref(i2))
)
)
}
}
function reactifyObject$1(obj, optionsOrKeys = {}) {
let keys3 = []
if (Array.isArray(optionsOrKeys)) {
keys3 = optionsOrKeys
} else {
const { includeOwnProperties = true } = optionsOrKeys
keys3.push(...Object.keys(obj))
if (includeOwnProperties) keys3.push(...Object.getOwnPropertyNames(obj))
}
return Object.fromEntries(
keys3.map((key2) => {
const value2 = obj[key2]
return [
key2,
typeof value2 === 'function' ? reactify$1(value2.bind(obj)) : value2,
]
})
)
}
function toReactive$1(objectRef) {
if (!isRef(objectRef)) return reactive(objectRef)
const proxy = new Proxy(
{},
{
get(_2, p2, receiver) {
return unref(Reflect.get(objectRef.value, p2, receiver))
},
set(_2, p2, value2) {
if (isRef(objectRef.value[p2]) && !isRef(value2))
objectRef.value[p2].value = value2
else objectRef.value[p2] = value2
return true
},
deleteProperty(_2, p2) {
return Reflect.deleteProperty(objectRef.value, p2)
},
has(_2, p2) {
return Reflect.has(objectRef.value, p2)
},
ownKeys() {
return Object.keys(objectRef.value)
},
getOwnPropertyDescriptor() {
return {
enumerable: true,
configurable: true,
}
},
}
)
return reactive(proxy)
}
function reactiveComputed$1(fn2) {
return toReactive$1(computed(fn2))
}
function reactiveOmit$1(obj, ...keys3) {
const flatKeys = keys3.flat()
return reactiveComputed$1(() =>
Object.fromEntries(
Object.entries(toRefs$2(obj)).filter((e2) => !flatKeys.includes(e2[0]))
)
)
}
function reactivePick$1(obj, ...keys3) {
const flatKeys = keys3.flat()
return reactive(
Object.fromEntries(flatKeys.map((k2) => [k2, toRef(obj, k2)]))
)
}
function refAutoReset$1(defaultValue, afterMs = 1e4) {
return customRef((track2, trigger2) => {
let value2 = defaultValue
let timer2
const resetAfter = () =>
setTimeout(() => {
value2 = defaultValue
trigger2()
}, unref(afterMs))
tryOnScopeDispose$1(() => {
clearTimeout(timer2)
})
return {
get() {
track2()
return value2
},
set(newValue) {
value2 = newValue
trigger2()
clearTimeout(timer2)
timer2 = resetAfter()
},
}
})
}
function useDebounceFn$1(fn2, ms = 200, options2 = {}) {
return createFilterWrapper$1(debounceFilter$1(ms, options2), fn2)
}
function refDebounced$1(value2, ms = 200, options2 = {}) {
if (ms <= 0) return value2
const debounced = ref(value2.value)
const updater = useDebounceFn$1(
() => {
debounced.value = value2.value
},
ms,
options2
)
watch$1(value2, () => updater())
return debounced
}
function refDefault$1(source2, defaultValue) {
return computed({
get() {
var _a2
return (_a2 = source2.value) != null ? _a2 : defaultValue
},
set(value2) {
source2.value = value2
},
})
}
function useThrottleFn$1(fn2, ms = 200, trailing = true, leading = true) {
return createFilterWrapper$1(throttleFilter$1(ms, trailing, leading), fn2)
}
function refThrottled$1(value2, delay2 = 200, trailing = true, leading = true) {
if (delay2 <= 0) return value2
const throttled = ref(value2.value)
const updater = useThrottleFn$1(
() => {
throttled.value = value2.value
},
delay2,
trailing,
leading
)
watch$1(value2, () => updater())
return throttled
}
function refWithControl$1(initial, options2 = {}) {
let source2 = initial
let track2
let trigger2
const ref2 = customRef((_track, _trigger) => {
track2 = _track
trigger2 = _trigger
return {
get() {
return get3()
},
set(v4) {
set2(v4)
},
}
})
function get3(tracking = true) {
if (tracking) track2()
return source2
}
function set2(value2, triggering = true) {
var _a2, _b2
if (value2 === source2) return
const old = source2
if (
((_a2 = options2.onBeforeChange) == null
? void 0
: _a2.call(options2, value2, old)) === false
)
return
source2 = value2
;(_b2 = options2.onChanged) == null
? void 0
: _b2.call(options2, value2, old)
if (triggering) trigger2()
}
const untrackedGet = () => get3(false)
const silentSet = (v4) => set2(v4, false)
const peek = () => get3(false)
const lay = (v4) => set2(v4, false)
return extendRef$1(
ref2,
{
get: get3,
set: set2,
untrackedGet,
silentSet,
peek,
lay,
},
{ enumerable: true }
)
}
const controlledRef$1 = refWithControl$1
function resolveRef$1(r2) {
return typeof r2 === 'function' ? computed(r2) : ref(r2)
}
function resolveUnref$1(r2) {
return typeof r2 === 'function' ? r2() : unref(r2)
}
function set$7(...args) {
if (args.length === 2) {
const [ref2, value2] = args
ref2.value = value2
}
if (args.length === 3) {
{
const [target2, key2, value2] = args
target2[key2] = value2
}
}
}
function syncRef$1(left2, right2, options2 = {}) {
const {
flush: flush2 = 'sync',
deep = false,
immediate = true,
direction: direction2 = 'both',
} = options2
let stop1, stop2
if (direction2 === 'both' || direction2 === 'ltr') {
stop1 = watch$1(left2, (newValue) => (right2.value = newValue), {
flush: flush2,
deep,
immediate,
})
}
if (direction2 === 'both' || direction2 === 'rtl') {
stop2 = watch$1(right2, (newValue) => (left2.value = newValue), {
flush: flush2,
deep,
immediate,
})
}
return () => {
stop1 == null ? void 0 : stop1()
stop2 == null ? void 0 : stop2()
}
}
function syncRefs$1(source2, targets, options2 = {}) {
const { flush: flush2 = 'sync', deep = false, immediate = true } = options2
if (!Array.isArray(targets)) targets = [targets]
return watch$1(
source2,
(newValue) => targets.forEach((target2) => (target2.value = newValue)),
{ flush: flush2, deep, immediate }
)
}
var __defProp$7$2 = Object.defineProperty
var __defProps$5$2 = Object.defineProperties
var __getOwnPropDescs$5$2 = Object.getOwnPropertyDescriptors
var __getOwnPropSymbols$9$2 = Object.getOwnPropertySymbols
var __hasOwnProp$9$2 = Object.prototype.hasOwnProperty
var __propIsEnum$9$2 = Object.prototype.propertyIsEnumerable
var __defNormalProp$7$2 = (obj, key2, value2) =>
key2 in obj
? __defProp$7$2(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$7$2 = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$9$2.call(b2, prop)) __defNormalProp$7$2(a2, prop, b2[prop])
if (__getOwnPropSymbols$9$2)
for (var prop of __getOwnPropSymbols$9$2(b2)) {
if (__propIsEnum$9$2.call(b2, prop))
__defNormalProp$7$2(a2, prop, b2[prop])
}
return a2
}
var __spreadProps$5$2 = (a2, b2) =>
__defProps$5$2(a2, __getOwnPropDescs$5$2(b2))
function toRefs$1(objectRef) {
if (!isRef(objectRef)) return toRefs$2(objectRef)
const result = Array.isArray(objectRef.value)
? new Array(objectRef.value.length)
: {}
for (const key2 in objectRef.value) {
result[key2] = customRef(() => ({
get() {
return objectRef.value[key2]
},
set(v4) {
if (Array.isArray(objectRef.value)) {
const copy2 = [...objectRef.value]
copy2[key2] = v4
objectRef.value = copy2
} else {
const newObject = __spreadProps$5$2(
__spreadValues$7$2({}, objectRef.value),
{ [key2]: v4 }
)
Object.setPrototypeOf(newObject, objectRef.value)
objectRef.value = newObject
}
},
}))
}
return result
}
function tryOnBeforeMount$1(fn2, sync = true) {
if (getCurrentInstance()) onBeforeMount(fn2)
else if (sync) fn2()
else nextTick(fn2)
}
function tryOnBeforeUnmount$1(fn2) {
if (getCurrentInstance()) onBeforeUnmount(fn2)
}
function tryOnMounted$1(fn2, sync = true) {
if (getCurrentInstance()) onMounted(fn2)
else if (sync) fn2()
else nextTick(fn2)
}
function tryOnUnmounted$1(fn2) {
if (getCurrentInstance()) onUnmounted(fn2)
}
function until$1(r2) {
let isNot = false
function toMatch(
condition2,
{ flush: flush2 = 'sync', deep = false, timeout, throwOnTimeout } = {}
) {
let stop2 = null
const watcher = new Promise((resolve2) => {
stop2 = watch$1(
r2,
(v4) => {
if (condition2(v4) !== isNot) {
stop2 == null ? void 0 : stop2()
resolve2(v4)
}
},
{
flush: flush2,
deep,
immediate: true,
}
)
})
const promises = [watcher]
if (timeout != null) {
promises.push(
promiseTimeout$1(timeout, throwOnTimeout)
.then(() => unref(r2))
.finally(() => (stop2 == null ? void 0 : stop2()))
)
}
return Promise.race(promises)
}
function toBe(value2, options2) {
if (!isRef(value2)) return toMatch((v4) => v4 === value2, options2)
const {
flush: flush2 = 'sync',
deep = false,
timeout,
throwOnTimeout,
} = options2 != null ? options2 : {}
let stop2 = null
const watcher = new Promise((resolve2) => {
stop2 = watch$1(
[r2, value2],
([v12, v22]) => {
if (isNot !== (v12 === v22)) {
stop2 == null ? void 0 : stop2()
resolve2(v12)
}
},
{
flush: flush2,
deep,
immediate: true,
}
)
})
const promises = [watcher]
if (timeout != null) {
promises.push(
promiseTimeout$1(timeout, throwOnTimeout)
.then(() => unref(r2))
.finally(() => {
stop2 == null ? void 0 : stop2()
return unref(r2)
})
)
}
return Promise.race(promises)
}
function toBeTruthy(options2) {
return toMatch((v4) => Boolean(v4), options2)
}
function toBeNull(options2) {
return toBe(null, options2)
}
function toBeUndefined(options2) {
return toBe(void 0, options2)
}
function toBeNaN(options2) {
return toMatch(Number.isNaN, options2)
}
function toContains(value2, options2) {
return toMatch((v4) => {
const array4 = Array.from(v4)
return array4.includes(value2) || array4.includes(unref(value2))
}, options2)
}
function changed(options2) {
return changedTimes(1, options2)
}
function changedTimes(n2 = 1, options2) {
let count2 = -1
return toMatch(() => {
count2 += 1
return count2 >= n2
}, options2)
}
if (Array.isArray(unref(r2))) {
const instance = {
toMatch,
toContains,
changed,
changedTimes,
get not() {
isNot = !isNot
return this
},
}
return instance
} else {
const instance = {
toMatch,
toBe,
toBeTruthy,
toBeNull,
toBeNaN,
toBeUndefined,
changed,
changedTimes,
get not() {
isNot = !isNot
return this
},
}
return instance
}
}
function useCounter$1(initialValue = 0, options2 = {}) {
const count2 = ref(initialValue)
const { max: max3 = Infinity, min: min3 = -Infinity } = options2
const inc2 = (delta = 1) =>
(count2.value = Math.min(max3, count2.value + delta))
const dec = (delta = 1) =>
(count2.value = Math.max(min3, count2.value - delta))
const get3 = () => count2.value
const set2 = (val2) => (count2.value = val2)
const reset2 = (val2 = initialValue) => {
initialValue = val2
return set2(val2)
}
return { count: count2, inc: inc2, dec, get: get3, set: set2, reset: reset2 }
}
const REGEX_PARSE$1 =
/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/
const REGEX_FORMAT$1 =
/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g
const formatDate$2 = (date4, formatStr) => {
const years = date4.getFullYear()
const month = date4.getMonth()
const days = date4.getDate()
const hours = date4.getHours()
const minutes = date4.getMinutes()
const seconds = date4.getSeconds()
const milliseconds = date4.getMilliseconds()
const day = date4.getDay()
const matches2 = {
YY: String(years).slice(-2),
YYYY: years,
M: month + 1,
MM: `${month + 1}`.padStart(2, '0'),
D: String(days),
DD: `${days}`.padStart(2, '0'),
H: String(hours),
HH: `${hours}`.padStart(2, '0'),
h: `${hours % 12 || 12}`.padStart(1, '0'),
hh: `${hours % 12 || 12}`.padStart(2, '0'),
m: String(minutes),
mm: `${minutes}`.padStart(2, '0'),
s: String(seconds),
ss: `${seconds}`.padStart(2, '0'),
SSS: `${milliseconds}`.padStart(3, '0'),
d: day,
}
return formatStr.replace(
REGEX_FORMAT$1,
(match2, $1) => $1 || matches2[match2]
)
}
const normalizeDate$1 = (date4) => {
if (date4 === null) return new Date(NaN)
if (date4 === void 0) return new Date()
if (date4 instanceof Date) return new Date(date4)
if (typeof date4 === 'string' && !/Z$/i.test(date4)) {
const d3 = date4.match(REGEX_PARSE$1)
if (d3) {
const m2 = d3[2] - 1 || 0
const ms = (d3[7] || '0').substring(0, 3)
return new Date(
d3[1],
m2,
d3[3] || 1,
d3[4] || 0,
d3[5] || 0,
d3[6] || 0,
ms
)
}
}
return new Date(date4)
}
function useDateFormat$1(date4, formatStr = 'HH:mm:ss') {
return computed(() =>
formatDate$2(normalizeDate$1(unref(date4)), unref(formatStr))
)
}
function useIntervalFn$1(cb, interval = 1e3, options2 = {}) {
const { immediate = true, immediateCallback = false } = options2
let timer2 = null
const isActive = ref(false)
function clean() {
if (timer2) {
clearInterval(timer2)
timer2 = null
}
}
function pause() {
isActive.value = false
clean()
}
function resume() {
if (unref(interval) <= 0) return
isActive.value = true
if (immediateCallback) cb()
clean()
timer2 = setInterval(cb, unref(interval))
}
if (immediate && isClient$1) resume()
if (isRef(interval)) {
const stopWatch = watch$1(interval, () => {
if (isActive.value && isClient$1) resume()
})
tryOnScopeDispose$1(stopWatch)
}
tryOnScopeDispose$1(pause)
return {
isActive,
pause,
resume,
}
}
var __defProp$6$2 = Object.defineProperty
var __getOwnPropSymbols$8$2 = Object.getOwnPropertySymbols
var __hasOwnProp$8$2 = Object.prototype.hasOwnProperty
var __propIsEnum$8$2 = Object.prototype.propertyIsEnumerable
var __defNormalProp$6$2 = (obj, key2, value2) =>
key2 in obj
? __defProp$6$2(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$6$2 = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$8$2.call(b2, prop)) __defNormalProp$6$2(a2, prop, b2[prop])
if (__getOwnPropSymbols$8$2)
for (var prop of __getOwnPropSymbols$8$2(b2)) {
if (__propIsEnum$8$2.call(b2, prop))
__defNormalProp$6$2(a2, prop, b2[prop])
}
return a2
}
function useInterval$1(interval = 1e3, options2 = {}) {
const { controls: exposeControls = false, immediate = true } = options2
const counter2 = ref(0)
const controls = useIntervalFn$1(() => (counter2.value += 1), interval, {
immediate,
})
if (exposeControls) {
return __spreadValues$6$2(
{
counter: counter2,
},
controls
)
} else {
return counter2
}
}
function useLastChanged$1(source2, options2 = {}) {
var _a2
const ms = ref((_a2 = options2.initialValue) != null ? _a2 : null)
watch$1(source2, () => (ms.value = timestamp$3()), options2)
return ms
}
function useTimeoutFn$1(cb, interval, options2 = {}) {
const { immediate = true } = options2
const isPending = ref(false)
let timer2 = null
function clear2() {
if (timer2) {
clearTimeout(timer2)
timer2 = null
}
}
function stop2() {
isPending.value = false
clear2()
}
function start2(...args) {
clear2()
isPending.value = true
timer2 = setTimeout(() => {
isPending.value = false
timer2 = null
cb(...args)
}, unref(interval))
}
if (immediate) {
isPending.value = true
if (isClient$1) start2()
}
tryOnScopeDispose$1(stop2)
return {
isPending,
start: start2,
stop: stop2,
}
}
var __defProp$5$2 = Object.defineProperty
var __getOwnPropSymbols$7$2 = Object.getOwnPropertySymbols
var __hasOwnProp$7$2 = Object.prototype.hasOwnProperty
var __propIsEnum$7$2 = Object.prototype.propertyIsEnumerable
var __defNormalProp$5$2 = (obj, key2, value2) =>
key2 in obj
? __defProp$5$2(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$5$2 = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$7$2.call(b2, prop)) __defNormalProp$5$2(a2, prop, b2[prop])
if (__getOwnPropSymbols$7$2)
for (var prop of __getOwnPropSymbols$7$2(b2)) {
if (__propIsEnum$7$2.call(b2, prop))
__defNormalProp$5$2(a2, prop, b2[prop])
}
return a2
}
function useTimeout$2(interval = 1e3, options2 = {}) {
const { controls: exposeControls = false } = options2
const controls = useTimeoutFn$1(noop$7, interval, options2)
const ready = computed(() => !controls.isPending.value)
if (exposeControls) {
return __spreadValues$5$2(
{
ready,
},
controls
)
} else {
return ready
}
}
function useToggle$1(initialValue = false, options2 = {}) {
const { truthyValue = true, falsyValue = false } = options2
const valueIsRef = isRef(initialValue)
const innerValue = ref(initialValue)
function toggle2(value2) {
if (arguments.length) {
innerValue.value = value2
return innerValue.value
} else {
innerValue.value =
innerValue.value === unref(truthyValue)
? unref(falsyValue)
: unref(truthyValue)
return innerValue.value
}
}
if (valueIsRef) return toggle2
else return [innerValue, toggle2]
}
function watchArray$1(source2, cb, options2) {
let oldList = (options2 == null ? void 0 : options2.immediate)
? []
: [
...(source2 instanceof Function
? source2()
: Array.isArray(source2)
? source2
: unref(source2)),
]
return watch$1(
source2,
(newList, _2, onCleanup) => {
const oldListRemains = new Array(oldList.length)
const added = []
for (const obj of newList) {
let found = false
for (let i2 = 0; i2 < oldList.length; i2++) {
if (!oldListRemains[i2] && obj === oldList[i2]) {
oldListRemains[i2] = true
found = true
break
}
}
if (!found) added.push(obj)
}
const removed = oldList.filter((_22, i2) => !oldListRemains[i2])
cb(newList, oldList, added, removed, onCleanup)
oldList = [...newList]
},
options2
)
}
var __getOwnPropSymbols$6$2 = Object.getOwnPropertySymbols
var __hasOwnProp$6$2 = Object.prototype.hasOwnProperty
var __propIsEnum$6$2 = Object.prototype.propertyIsEnumerable
var __objRest$5$1 = (source2, exclude) => {
var target2 = {}
for (var prop in source2)
if (__hasOwnProp$6$2.call(source2, prop) && exclude.indexOf(prop) < 0)
target2[prop] = source2[prop]
if (source2 != null && __getOwnPropSymbols$6$2)
for (var prop of __getOwnPropSymbols$6$2(source2)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum$6$2.call(source2, prop))
target2[prop] = source2[prop]
}
return target2
}
function watchWithFilter$1(source2, cb, options2 = {}) {
const _a2 = options2,
{ eventFilter = bypassFilter$1 } = _a2,
watchOptions = __objRest$5$1(_a2, ['eventFilter'])
return watch$1(source2, createFilterWrapper$1(eventFilter, cb), watchOptions)
}
var __getOwnPropSymbols$5$2 = Object.getOwnPropertySymbols
var __hasOwnProp$5$2 = Object.prototype.hasOwnProperty
var __propIsEnum$5$2 = Object.prototype.propertyIsEnumerable
var __objRest$4$1 = (source2, exclude) => {
var target2 = {}
for (var prop in source2)
if (__hasOwnProp$5$2.call(source2, prop) && exclude.indexOf(prop) < 0)
target2[prop] = source2[prop]
if (source2 != null && __getOwnPropSymbols$5$2)
for (var prop of __getOwnPropSymbols$5$2(source2)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum$5$2.call(source2, prop))
target2[prop] = source2[prop]
}
return target2
}
function watchAtMost$1(source2, cb, options2) {
const _a2 = options2,
{ count: count2 } = _a2,
watchOptions = __objRest$4$1(_a2, ['count'])
const current2 = ref(0)
const stop2 = watchWithFilter$1(
source2,
(...args) => {
current2.value += 1
if (current2.value >= unref(count2)) nextTick(() => stop2())
cb(...args)
},
watchOptions
)
return { count: current2, stop: stop2 }
}
var __defProp$4$2 = Object.defineProperty
var __defProps$4$2 = Object.defineProperties
var __getOwnPropDescs$4$2 = Object.getOwnPropertyDescriptors
var __getOwnPropSymbols$4$2 = Object.getOwnPropertySymbols
var __hasOwnProp$4$2 = Object.prototype.hasOwnProperty
var __propIsEnum$4$2 = Object.prototype.propertyIsEnumerable
var __defNormalProp$4$2 = (obj, key2, value2) =>
key2 in obj
? __defProp$4$2(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$4$2 = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$4$2.call(b2, prop)) __defNormalProp$4$2(a2, prop, b2[prop])
if (__getOwnPropSymbols$4$2)
for (var prop of __getOwnPropSymbols$4$2(b2)) {
if (__propIsEnum$4$2.call(b2, prop))
__defNormalProp$4$2(a2, prop, b2[prop])
}
return a2
}
var __spreadProps$4$2 = (a2, b2) =>
__defProps$4$2(a2, __getOwnPropDescs$4$2(b2))
var __objRest$3$1 = (source2, exclude) => {
var target2 = {}
for (var prop in source2)
if (__hasOwnProp$4$2.call(source2, prop) && exclude.indexOf(prop) < 0)
target2[prop] = source2[prop]
if (source2 != null && __getOwnPropSymbols$4$2)
for (var prop of __getOwnPropSymbols$4$2(source2)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum$4$2.call(source2, prop))
target2[prop] = source2[prop]
}
return target2
}
function watchDebounced$1(source2, cb, options2 = {}) {
const _a2 = options2,
{ debounce: debounce2 = 0, maxWait = void 0 } = _a2,
watchOptions = __objRest$3$1(_a2, ['debounce', 'maxWait'])
return watchWithFilter$1(
source2,
cb,
__spreadProps$4$2(__spreadValues$4$2({}, watchOptions), {
eventFilter: debounceFilter$1(debounce2, { maxWait }),
})
)
}
var __defProp$3$2 = Object.defineProperty
var __defProps$3$2 = Object.defineProperties
var __getOwnPropDescs$3$2 = Object.getOwnPropertyDescriptors
var __getOwnPropSymbols$3$2 = Object.getOwnPropertySymbols
var __hasOwnProp$3$2 = Object.prototype.hasOwnProperty
var __propIsEnum$3$2 = Object.prototype.propertyIsEnumerable
var __defNormalProp$3$2 = (obj, key2, value2) =>
key2 in obj
? __defProp$3$2(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$3$2 = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$3$2.call(b2, prop)) __defNormalProp$3$2(a2, prop, b2[prop])
if (__getOwnPropSymbols$3$2)
for (var prop of __getOwnPropSymbols$3$2(b2)) {
if (__propIsEnum$3$2.call(b2, prop))
__defNormalProp$3$2(a2, prop, b2[prop])
}
return a2
}
var __spreadProps$3$2 = (a2, b2) =>
__defProps$3$2(a2, __getOwnPropDescs$3$2(b2))
var __objRest$2$3 = (source2, exclude) => {
var target2 = {}
for (var prop in source2)
if (__hasOwnProp$3$2.call(source2, prop) && exclude.indexOf(prop) < 0)
target2[prop] = source2[prop]
if (source2 != null && __getOwnPropSymbols$3$2)
for (var prop of __getOwnPropSymbols$3$2(source2)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum$3$2.call(source2, prop))
target2[prop] = source2[prop]
}
return target2
}
function watchIgnorable$1(source2, cb, options2 = {}) {
const _a2 = options2,
{ eventFilter = bypassFilter$1 } = _a2,
watchOptions = __objRest$2$3(_a2, ['eventFilter'])
const filteredCb = createFilterWrapper$1(eventFilter, cb)
let ignoreUpdates
let ignorePrevAsyncUpdates
let stop2
if (watchOptions.flush === 'sync') {
const ignore = ref(false)
ignorePrevAsyncUpdates = () => {}
ignoreUpdates = (updater) => {
ignore.value = true
updater()
ignore.value = false
}
stop2 = watch$1(
source2,
(...args) => {
if (!ignore.value) filteredCb(...args)
},
watchOptions
)
} else {
const disposables = []
const ignoreCounter = ref(0)
const syncCounter = ref(0)
ignorePrevAsyncUpdates = () => {
ignoreCounter.value = syncCounter.value
}
disposables.push(
watch$1(
source2,
() => {
syncCounter.value++
},
__spreadProps$3$2(__spreadValues$3$2({}, watchOptions), {
flush: 'sync',
})
)
)
ignoreUpdates = (updater) => {
const syncCounterPrev = syncCounter.value
updater()
ignoreCounter.value += syncCounter.value - syncCounterPrev
}
disposables.push(
watch$1(
source2,
(...args) => {
const ignore =
ignoreCounter.value > 0 && ignoreCounter.value === syncCounter.value
ignoreCounter.value = 0
syncCounter.value = 0
if (ignore) return
filteredCb(...args)
},
watchOptions
)
)
stop2 = () => {
disposables.forEach((fn2) => fn2())
}
}
return { stop: stop2, ignoreUpdates, ignorePrevAsyncUpdates }
}
function watchOnce$1(source2, cb, options2) {
const stop2 = watch$1(
source2,
(...args) => {
nextTick(() => stop2())
return cb(...args)
},
options2
)
}
var __defProp$2$2 = Object.defineProperty
var __defProps$2$2 = Object.defineProperties
var __getOwnPropDescs$2$2 = Object.getOwnPropertyDescriptors
var __getOwnPropSymbols$2$2 = Object.getOwnPropertySymbols
var __hasOwnProp$2$2 = Object.prototype.hasOwnProperty
var __propIsEnum$2$2 = Object.prototype.propertyIsEnumerable
var __defNormalProp$2$2 = (obj, key2, value2) =>
key2 in obj
? __defProp$2$2(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$2$2 = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$2$2.call(b2, prop)) __defNormalProp$2$2(a2, prop, b2[prop])
if (__getOwnPropSymbols$2$2)
for (var prop of __getOwnPropSymbols$2$2(b2)) {
if (__propIsEnum$2$2.call(b2, prop))
__defNormalProp$2$2(a2, prop, b2[prop])
}
return a2
}
var __spreadProps$2$2 = (a2, b2) =>
__defProps$2$2(a2, __getOwnPropDescs$2$2(b2))
var __objRest$1$2 = (source2, exclude) => {
var target2 = {}
for (var prop in source2)
if (__hasOwnProp$2$2.call(source2, prop) && exclude.indexOf(prop) < 0)
target2[prop] = source2[prop]
if (source2 != null && __getOwnPropSymbols$2$2)
for (var prop of __getOwnPropSymbols$2$2(source2)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum$2$2.call(source2, prop))
target2[prop] = source2[prop]
}
return target2
}
function watchPausable$1(source2, cb, options2 = {}) {
const _a2 = options2,
{ eventFilter: filter2 } = _a2,
watchOptions = __objRest$1$2(_a2, ['eventFilter'])
const { eventFilter, pause, resume, isActive } = pausableFilter$1(filter2)
const stop2 = watchWithFilter$1(
source2,
cb,
__spreadProps$2$2(__spreadValues$2$2({}, watchOptions), {
eventFilter,
})
)
return { stop: stop2, pause, resume, isActive }
}
var __defProp$1$2 = Object.defineProperty
var __defProps$1$2 = Object.defineProperties
var __getOwnPropDescs$1$2 = Object.getOwnPropertyDescriptors
var __getOwnPropSymbols$1$2 = Object.getOwnPropertySymbols
var __hasOwnProp$1$2 = Object.prototype.hasOwnProperty
var __propIsEnum$1$2 = Object.prototype.propertyIsEnumerable
var __defNormalProp$1$2 = (obj, key2, value2) =>
key2 in obj
? __defProp$1$2(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$1$2 = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$1$2.call(b2, prop)) __defNormalProp$1$2(a2, prop, b2[prop])
if (__getOwnPropSymbols$1$2)
for (var prop of __getOwnPropSymbols$1$2(b2)) {
if (__propIsEnum$1$2.call(b2, prop))
__defNormalProp$1$2(a2, prop, b2[prop])
}
return a2
}
var __spreadProps$1$2 = (a2, b2) =>
__defProps$1$2(a2, __getOwnPropDescs$1$2(b2))
var __objRest$7 = (source2, exclude) => {
var target2 = {}
for (var prop in source2)
if (__hasOwnProp$1$2.call(source2, prop) && exclude.indexOf(prop) < 0)
target2[prop] = source2[prop]
if (source2 != null && __getOwnPropSymbols$1$2)
for (var prop of __getOwnPropSymbols$1$2(source2)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum$1$2.call(source2, prop))
target2[prop] = source2[prop]
}
return target2
}
function watchThrottled$1(source2, cb, options2 = {}) {
const _a2 = options2,
{ throttle: throttle2 = 0, trailing = true, leading = true } = _a2,
watchOptions = __objRest$7(_a2, ['throttle', 'trailing', 'leading'])
return watchWithFilter$1(
source2,
cb,
__spreadProps$1$2(__spreadValues$1$2({}, watchOptions), {
eventFilter: throttleFilter$1(throttle2, trailing, leading),
})
)
}
var __defProp$p = Object.defineProperty
var __defProps$b = Object.defineProperties
var __getOwnPropDescs$b = Object.getOwnPropertyDescriptors
var __getOwnPropSymbols$r = Object.getOwnPropertySymbols
var __hasOwnProp$r = Object.prototype.hasOwnProperty
var __propIsEnum$r = Object.prototype.propertyIsEnumerable
var __defNormalProp$p = (obj, key2, value2) =>
key2 in obj
? __defProp$p(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$p = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$r.call(b2, prop)) __defNormalProp$p(a2, prop, b2[prop])
if (__getOwnPropSymbols$r)
for (var prop of __getOwnPropSymbols$r(b2)) {
if (__propIsEnum$r.call(b2, prop)) __defNormalProp$p(a2, prop, b2[prop])
}
return a2
}
var __spreadProps$b = (a2, b2) => __defProps$b(a2, __getOwnPropDescs$b(b2))
function watchTriggerable$1(source2, cb, options2 = {}) {
let cleanupFn
function onEffect() {
if (!cleanupFn) return
const fn2 = cleanupFn
cleanupFn = void 0
fn2()
}
function onCleanup(callback) {
cleanupFn = callback
}
const _cb = (value2, oldValue) => {
onEffect()
return cb(value2, oldValue, onCleanup)
}
const res = watchIgnorable$1(source2, _cb, options2)
const { ignoreUpdates } = res
const trigger2 = () => {
let res2
ignoreUpdates(() => {
res2 = _cb(getWatchSources$1(source2), getOldValue$1(source2))
})
return res2
}
return __spreadProps$b(__spreadValues$p({}, res), {
trigger: trigger2,
})
}
function getWatchSources$1(sources) {
if (isReactive(sources)) return sources
if (Array.isArray(sources))
return sources.map((item2) => getOneWatchSource$1(item2))
return getOneWatchSource$1(sources)
}
function getOneWatchSource$1(source2) {
return typeof source2 === 'function' ? source2() : unref(source2)
}
function getOldValue$1(source2) {
return Array.isArray(source2) ? source2.map(() => void 0) : void 0
}
function whenever$1(source2, cb, options2) {
return watch$1(
source2,
(v4, ov, onInvalidate) => {
if (v4) cb(v4, ov, onInvalidate)
},
options2
)
}
var index$t = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
__onlyVue3: __onlyVue3$1,
and: logicAnd,
assert: assert$2,
autoResetRef: refAutoReset$1,
bypassFilter: bypassFilter$1,
clamp: clamp$2,
computedEager: computedEager$1,
computedWithControl: computedWithControl$1,
containsProp: containsProp$1,
controlledComputed: computedWithControl$1,
controlledRef: controlledRef$1,
createEventHook: createEventHook$1,
createFilterWrapper: createFilterWrapper$1,
createGlobalState: createGlobalState$1,
createInjectionState: createInjectionState$1,
createReactiveFn: reactify$1,
createSharedComposable: createSharedComposable$1,
createSingletonPromise: createSingletonPromise$1,
debounceFilter: debounceFilter$1,
debouncedRef: refDebounced$1,
debouncedWatch: watchDebounced$1,
directiveHooks: directiveHooks$1,
eagerComputed: computedEager$1,
extendRef: extendRef$1,
formatDate: formatDate$2,
get: get$9,
identity: identity$2,
ignorableWatch: watchIgnorable$1,
increaseWithUnit: increaseWithUnit$1,
invoke: invoke$3,
isBoolean: isBoolean$5,
isClient: isClient$1,
isDef: isDef$2,
isDefined: isDefined$1,
isFunction: isFunction$m,
isIOS: isIOS$1,
isNumber: isNumber$h,
isObject: isObject$w,
isString: isString$g,
isWindow: isWindow$3,
logicAnd,
logicNot,
logicOr,
makeDestructurable: makeDestructurable$1,
noop: noop$7,
normalizeDate: normalizeDate$1,
not: logicNot,
now: now$6,
objectPick: objectPick$1,
or: logicOr,
pausableFilter: pausableFilter$1,
pausableWatch: watchPausable$1,
promiseTimeout: promiseTimeout$1,
rand: rand$1,
reactify: reactify$1,
reactifyObject: reactifyObject$1,
reactiveComputed: reactiveComputed$1,
reactiveOmit: reactiveOmit$1,
reactivePick: reactivePick$1,
refAutoReset: refAutoReset$1,
refDebounced: refDebounced$1,
refDefault: refDefault$1,
refThrottled: refThrottled$1,
refWithControl: refWithControl$1,
resolveRef: resolveRef$1,
resolveUnref: resolveUnref$1,
set: set$7,
syncRef: syncRef$1,
syncRefs: syncRefs$1,
throttleFilter: throttleFilter$1,
throttledRef: refThrottled$1,
throttledWatch: watchThrottled$1,
timestamp: timestamp$3,
toReactive: toReactive$1,
toRefs: toRefs$1,
tryOnBeforeMount: tryOnBeforeMount$1,
tryOnBeforeUnmount: tryOnBeforeUnmount$1,
tryOnMounted: tryOnMounted$1,
tryOnScopeDispose: tryOnScopeDispose$1,
tryOnUnmounted: tryOnUnmounted$1,
until: until$1,
useCounter: useCounter$1,
useDateFormat: useDateFormat$1,
useDebounce: refDebounced$1,
useDebounceFn: useDebounceFn$1,
useInterval: useInterval$1,
useIntervalFn: useIntervalFn$1,
useLastChanged: useLastChanged$1,
useThrottle: refThrottled$1,
useThrottleFn: useThrottleFn$1,
useTimeout: useTimeout$2,
useTimeoutFn: useTimeoutFn$1,
useToggle: useToggle$1,
watchArray: watchArray$1,
watchAtMost: watchAtMost$1,
watchDebounced: watchDebounced$1,
watchIgnorable: watchIgnorable$1,
watchOnce: watchOnce$1,
watchPausable: watchPausable$1,
watchThrottled: watchThrottled$1,
watchTriggerable: watchTriggerable$1,
watchWithFilter: watchWithFilter$1,
whenever: whenever$1,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
function unrefElement$1(elRef) {
var _a2
const plain = unref(elRef)
return (_a2 = plain == null ? void 0 : plain.$el) != null ? _a2 : plain
}
const defaultWindow$2 = isClient$1 ? window : void 0
const defaultDocument$1 = isClient$1 ? window.document : void 0
function useEventListener$1(...args) {
let target2
let event
let listener
let options2
if (isString$g(args[0])) {
;[event, listener, options2] = args
target2 = defaultWindow$2
} else {
;[target2, event, listener, options2] = args
}
if (!target2) return noop$7
let cleanup = noop$7
const stopWatch = watch$1(
() => unrefElement$1(target2),
(el2) => {
cleanup()
if (!el2) return
el2.addEventListener(event, listener, options2)
cleanup = () => {
el2.removeEventListener(event, listener, options2)
cleanup = noop$7
}
},
{ immediate: true, flush: 'post' }
)
const stop2 = () => {
stopWatch()
cleanup()
}
tryOnScopeDispose$1(stop2)
return stop2
}
function onClickOutside$1(target2, handler, options2 = {}) {
const {
window: window2 = defaultWindow$2,
ignore,
capture = true,
detectIframe = false,
} = options2
if (!window2) return
const shouldListen = ref(true)
let fallback
const listener = (event) => {
window2.clearTimeout(fallback)
const el2 = unrefElement$1(target2)
const composedPath = event.composedPath()
if (
!el2 ||
el2 === event.target ||
composedPath.includes(el2) ||
!shouldListen.value
)
return
if (ignore && ignore.length > 0) {
if (
ignore.some((target22) => {
const el22 = unrefElement$1(target22)
return el22 && (event.target === el22 || composedPath.includes(el22))
})
)
return
}
handler(event)
}
const cleanup = [
useEventListener$1(window2, 'click', listener, { passive: true, capture }),
useEventListener$1(
window2,
'pointerdown',
(e2) => {
const el2 = unrefElement$1(target2)
shouldListen.value = !!el2 && !e2.composedPath().includes(el2)
},
{ passive: true }
),
useEventListener$1(
window2,
'pointerup',
(e2) => {
if (e2.button === 0) {
const path = e2.composedPath()
e2.composedPath = () => path
fallback = window2.setTimeout(() => listener(e2), 50)
}
},
{ passive: true }
),
detectIframe &&
useEventListener$1(window2, 'blur', (event) => {
var _a2
const el2 = unrefElement$1(target2)
if (
((_a2 = document.activeElement) == null ? void 0 : _a2.tagName) ===
'IFRAME' &&
!(el2 == null ? void 0 : el2.contains(document.activeElement))
)
handler(event)
}),
].filter(Boolean)
const stop2 = () => cleanup.forEach((fn2) => fn2())
return stop2
}
const _global$1 =
typeof globalThis !== 'undefined'
? globalThis
: typeof window !== 'undefined'
? window
: typeof global !== 'undefined'
? global
: typeof self !== 'undefined'
? self
: {}
const globalKey$1 = '__vueuse_ssr_handlers__'
_global$1[globalKey$1] = _global$1[globalKey$1] || {}
_global$1[globalKey$1]
function useDocumentVisibility$1({
document: document2 = defaultDocument$1,
} = {}) {
if (!document2) return ref('visible')
const visibility2 = ref(document2.visibilityState)
useEventListener$1(document2, 'visibilitychange', () => {
visibility2.value = document2.visibilityState
})
return visibility2
}
var __getOwnPropSymbols$e$1 = Object.getOwnPropertySymbols
var __hasOwnProp$e$1 = Object.prototype.hasOwnProperty
var __propIsEnum$e$1 = Object.prototype.propertyIsEnumerable
var __objRest$2$2 = (source2, exclude) => {
var target2 = {}
for (var prop in source2)
if (__hasOwnProp$e$1.call(source2, prop) && exclude.indexOf(prop) < 0)
target2[prop] = source2[prop]
if (source2 != null && __getOwnPropSymbols$e$1)
for (var prop of __getOwnPropSymbols$e$1(source2)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum$e$1.call(source2, prop))
target2[prop] = source2[prop]
}
return target2
}
function useResizeObserver$1(target2, callback, options2 = {}) {
const _a2 = options2,
{ window: window2 = defaultWindow$2 } = _a2,
observerOptions = __objRest$2$2(_a2, ['window'])
let observer
const isSupported = window2 && 'ResizeObserver' in window2
const cleanup = () => {
if (observer) {
observer.disconnect()
observer = void 0
}
}
const stopWatch = watch$1(
() => unrefElement$1(target2),
(el2) => {
cleanup()
if (isSupported && window2 && el2) {
observer = new ResizeObserver(callback)
observer.observe(el2, observerOptions)
}
},
{ immediate: true, flush: 'post' }
)
const stop2 = () => {
cleanup()
stopWatch()
}
tryOnScopeDispose$1(stop2)
return {
isSupported,
stop: stop2,
}
}
function useElementBounding$1(target2, options2 = {}) {
const {
reset: reset2 = true,
windowResize = true,
windowScroll = true,
immediate = true,
} = options2
const height = ref(0)
const bottom2 = ref(0)
const left2 = ref(0)
const right2 = ref(0)
const top2 = ref(0)
const width = ref(0)
const x2 = ref(0)
const y2 = ref(0)
function update3() {
const el2 = unrefElement$1(target2)
if (!el2) {
if (reset2) {
height.value = 0
bottom2.value = 0
left2.value = 0
right2.value = 0
top2.value = 0
width.value = 0
x2.value = 0
y2.value = 0
}
return
}
const rect = el2.getBoundingClientRect()
height.value = rect.height
bottom2.value = rect.bottom
left2.value = rect.left
right2.value = rect.right
top2.value = rect.top
width.value = rect.width
x2.value = rect.x
y2.value = rect.y
}
useResizeObserver$1(target2, update3)
watch$1(
() => unrefElement$1(target2),
(ele) => !ele && update3()
)
if (windowScroll) useEventListener$1('scroll', update3, { passive: true })
if (windowResize) useEventListener$1('resize', update3, { passive: true })
tryOnMounted$1(() => {
if (immediate) update3()
})
return {
height,
bottom: bottom2,
left: left2,
right: right2,
top: top2,
width,
x: x2,
y: y2,
update: update3,
}
}
var SwipeDirection$1
;(function (SwipeDirection2) {
SwipeDirection2['UP'] = 'UP'
SwipeDirection2['RIGHT'] = 'RIGHT'
SwipeDirection2['DOWN'] = 'DOWN'
SwipeDirection2['LEFT'] = 'LEFT'
SwipeDirection2['NONE'] = 'NONE'
})(SwipeDirection$1 || (SwipeDirection$1 = {}))
function useWindowFocus$1({ window: window2 = defaultWindow$2 } = {}) {
if (!window2) return ref(false)
const focused = ref(window2.document.hasFocus())
useEventListener$1(window2, 'blur', () => {
focused.value = false
})
useEventListener$1(window2, 'focus', () => {
focused.value = true
})
return focused
}
function useWindowSize$1(options2 = {}) {
const {
window: window2 = defaultWindow$2,
initialWidth = Infinity,
initialHeight = Infinity,
listenOrientation = true,
} = options2
const width = ref(initialWidth)
const height = ref(initialHeight)
const update3 = () => {
if (window2) {
width.value = window2.innerWidth
height.value = window2.innerHeight
}
}
update3()
tryOnMounted$1(update3)
useEventListener$1('resize', update3, { passive: true })
if (listenOrientation)
useEventListener$1('orientationchange', update3, { passive: true })
return { width, height }
}
const isInContainer = (el2, container) => {
if (!isClient$1 || !el2 || !container) return false
const elRect = el2.getBoundingClientRect()
let containerRect
if (container instanceof Element) {
containerRect = container.getBoundingClientRect()
} else {
containerRect = {
top: 0,
right: window.innerWidth,
bottom: window.innerHeight,
left: 0,
}
}
return (
elRect.top < containerRect.bottom &&
elRect.bottom > containerRect.top &&
elRect.right > containerRect.left &&
elRect.left < containerRect.right
)
}
const getOffsetTop = (el2) => {
let offset2 = 0
let parent2 = el2
while (parent2) {
offset2 += parent2.offsetTop
parent2 = parent2.offsetParent
}
return offset2
}
const getOffsetTopDistance = (el2, containerEl) => {
return Math.abs(getOffsetTop(el2) - getOffsetTop(containerEl))
}
const getClientXY = (event) => {
let clientX
let clientY
if (event.type === 'touchend') {
clientY = event.changedTouches[0].clientY
clientX = event.changedTouches[0].clientX
} else if (event.type.startsWith('touch')) {
clientY = event.touches[0].clientY
clientX = event.touches[0].clientX
} else {
clientY = event.clientY
clientX = event.clientX
}
return {
clientX,
clientY,
}
}
const resizeHandler = function (entries2) {
for (const entry of entries2) {
const listeners = entry.target.__resizeListeners__ || []
if (listeners.length) {
listeners.forEach((fn2) => {
fn2()
})
}
}
}
const addResizeListener = function (element, fn2) {
if (!isClient$1 || !element) return
if (!element.__resizeListeners__) {
element.__resizeListeners__ = []
element.__ro__ = new ResizeObserver(resizeHandler)
element.__ro__.observe(element)
}
element.__resizeListeners__.push(fn2)
}
const removeResizeListener = function (element, fn2) {
var _a2
if (!element || !element.__resizeListeners__) return
element.__resizeListeners__.splice(
element.__resizeListeners__.indexOf(fn2),
1
)
if (!element.__resizeListeners__.length) {
;(_a2 = element.__ro__) == null ? void 0 : _a2.disconnect()
}
}
const NOOP = () => {}
const hasOwnProperty$d = Object.prototype.hasOwnProperty
const hasOwn$e = (val2, key2) => hasOwnProperty$d.call(val2, key2)
const isArray$D = Array.isArray
const isFunction$l = (val2) => typeof val2 === 'function'
const isString$f = (val2) => typeof val2 === 'string'
const isObject$v = (val2) => val2 !== null && typeof val2 === 'object'
const isPromise$1 = (val2) => {
return isObject$v(val2) && isFunction$l(val2.then) && isFunction$l(val2.catch)
}
const objectToString$6 = Object.prototype.toString
const toTypeString$1 = (value2) => objectToString$6.call(value2)
const toRawType = (value2) => {
return toTypeString$1(value2).slice(8, -1)
}
const cacheStringFunction = (fn2) => {
const cache2 = /* @__PURE__ */ Object.create(null)
return (str) => {
const hit = cache2[str]
return hit || (cache2[str] = fn2(str))
}
}
const camelizeRE = /-(\w)/g
const camelize = cacheStringFunction((str) => {
return str.replace(camelizeRE, (_2, c2) => (c2 ? c2.toUpperCase() : ''))
})
const hyphenateRE = /\B([A-Z])/g
const hyphenate = cacheStringFunction((str) =>
str.replace(hyphenateRE, '-$1').toLowerCase()
)
const capitalize$2 = cacheStringFunction(
(str) => str.charAt(0).toUpperCase() + str.slice(1)
)
const isUndefined$c = (val2) => val2 === void 0
const isEmpty$3 = (val2) =>
(!val2 && val2 !== 0) ||
(isArray$D(val2) && val2.length === 0) ||
(isObject$v(val2) && !Object.keys(val2).length)
const isElement$3 = (e2) => {
if (typeof Element === 'undefined') return false
return e2 instanceof Element
}
const isPropAbsent = (prop) => {
return isNil$1(prop)
}
const escapeStringRegexp = (string3 = '') =>
string3.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&').replace(/-/g, '\\x2d')
const keysOf = (arr) => Object.keys(arr)
const entriesOf = (arr) => Object.entries(arr)
const getProp = (obj, path, defaultValue) => {
return {
get value() {
return get$a(obj, path, defaultValue)
},
set value(val2) {
set$8(obj, path, val2)
},
}
}
const classNameToArray = (cls = '') =>
cls.split(' ').filter((item2) => !!item2.trim())
const hasClass$1 = (el2, cls) => {
if (!el2 || !cls) return false
if (cls.includes(' ')) throw new Error('className should not contain space.')
return el2.classList.contains(cls)
}
const addClass$1 = (el2, cls) => {
if (!el2 || !cls.trim()) return
el2.classList.add(...classNameToArray(cls))
}
const removeClass$1 = (el2, cls) => {
if (!el2 || !cls.trim()) return
el2.classList.remove(...classNameToArray(cls))
}
const getStyle$1 = (element, styleName) => {
var _a2
if (!isClient$1 || !element || !styleName) return ''
camelize(styleName)
try {
const style2 = element.style[styleName]
if (style2) return style2
const computed2 =
(_a2 = document.defaultView) == null
? void 0
: _a2.getComputedStyle(element, '')
return computed2 ? computed2[styleName] : ''
} catch (e2) {
return element.style[styleName]
}
}
const isScroll = (el2, isVertical) => {
if (!isClient$1) return false
const key2 = {
undefined: 'overflow',
true: 'overflow-y',
false: 'overflow-x',
}[String(isVertical)]
const overflow2 = getStyle$1(el2, key2)
return ['scroll', 'auto', 'overlay'].some((s2) => overflow2.includes(s2))
}
const getScrollContainer = (el2, isVertical) => {
if (!isClient$1) return
let parent2 = el2
while (parent2) {
if ([window, document, document.documentElement].includes(parent2))
return window
if (isScroll(parent2, isVertical)) return parent2
parent2 = parent2.parentNode
}
return parent2
}
let scrollBarWidth
const getScrollBarWidth = () => {
var _a2
if (!isClient$1) return 0
if (scrollBarWidth !== void 0) return scrollBarWidth
const outer = document.createElement('div')
outer.className = 'el-scrollbar__wrap'
outer.style.visibility = 'hidden'
outer.style.width = '100px'
outer.style.position = 'absolute'
outer.style.top = '-9999px'
document.body.appendChild(outer)
const widthNoScroll = outer.offsetWidth
outer.style.overflow = 'scroll'
const inner2 = document.createElement('div')
inner2.style.width = '100%'
outer.appendChild(inner2)
const widthWithScroll = inner2.offsetWidth
;(_a2 = outer.parentNode) == null ? void 0 : _a2.removeChild(outer)
scrollBarWidth = widthNoScroll - widthWithScroll
return scrollBarWidth
}
function scrollIntoView$1(container, selected) {
if (!isClient$1) return
if (!selected) {
container.scrollTop = 0
return
}
const offsetParents = []
let pointer2 = selected.offsetParent
while (
pointer2 !== null &&
container !== pointer2 &&
container.contains(pointer2)
) {
offsetParents.push(pointer2)
pointer2 = pointer2.offsetParent
}
const top2 =
selected.offsetTop +
offsetParents.reduce((prev, curr) => prev + curr.offsetTop, 0)
const bottom2 = top2 + selected.offsetHeight
const viewRectTop = container.scrollTop
const viewRectBottom = viewRectTop + container.clientHeight
if (top2 < viewRectTop) {
container.scrollTop = top2
} else if (bottom2 > viewRectBottom) {
container.scrollTop = bottom2 - container.clientHeight
}
}
const globalNodes = []
let target = !isClient$1 ? void 0 : document.body
function createGlobalNode(id2) {
const el2 = document.createElement('div')
if (id2 !== void 0) {
el2.setAttribute('id', id2)
}
target.appendChild(el2)
globalNodes.push(el2)
return el2
}
function removeGlobalNode(el2) {
globalNodes.splice(globalNodes.indexOf(el2), 1)
el2.remove()
}
var _export_sfc$2 = (sfc, props2) => {
const target2 = sfc.__vccOpts || sfc
for (const [key2, val2] of props2) {
target2[key2] = val2
}
return target2
}
const _sfc_main$dN = defineComponent({
name: 'AddLocation',
})
const _hoisted_1$bq = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$a0 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M288 896h448q32 0 32 32t-32 32H288q-32 0-32-32t32-32z',
},
null,
-1
)
const _hoisted_3$9f = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M800 416a288 288 0 1 0-576 0c0 118.144 94.528 272.128 288 456.576C705.472 688.128 800 534.144 800 416zM512 960C277.312 746.688 160 565.312 160 416a352 352 0 0 1 704 0c0 149.312-117.312 330.688-352 544z',
},
null,
-1
)
const _hoisted_4$5p = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M544 384h96a32 32 0 1 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64h96v-96a32 32 0 0 1 64 0v96z',
},
null,
-1
)
const _hoisted_5$3$ = [_hoisted_2$a0, _hoisted_3$9f, _hoisted_4$5p]
function _sfc_render$68(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$bq, _hoisted_5$3$)
}
var addLocation = /* @__PURE__ */ _export_sfc$2(_sfc_main$dN, [
['render', _sfc_render$68],
])
const _sfc_main$dM = defineComponent({
name: 'Aim',
})
const _hoisted_1$bp = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9$ = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z',
},
null,
-1
)
const _hoisted_3$9e = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 96a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V128a32 32 0 0 1 32-32zm0 576a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V704a32 32 0 0 1 32-32zM96 512a32 32 0 0 1 32-32h192a32 32 0 0 1 0 64H128a32 32 0 0 1-32-32zm576 0a32 32 0 0 1 32-32h192a32 32 0 1 1 0 64H704a32 32 0 0 1-32-32z',
},
null,
-1
)
const _hoisted_4$5o = [_hoisted_2$9$, _hoisted_3$9e]
function _sfc_render$67(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$bp, _hoisted_4$5o)
}
var aim = /* @__PURE__ */ _export_sfc$2(_sfc_main$dM, [
['render', _sfc_render$67],
])
const _sfc_main$dL = defineComponent({
name: 'AlarmClock',
})
const _hoisted_1$bo = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9_ = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 832a320 320 0 1 0 0-640 320 320 0 0 0 0 640zm0 64a384 384 0 1 1 0-768 384 384 0 0 1 0 768z',
},
null,
-1
)
const _hoisted_3$9d = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm292.288 824.576 55.424 32-48 83.136a32 32 0 1 1-55.424-32l48-83.136zm439.424 0-55.424 32 48 83.136a32 32 0 1 0 55.424-32l-48-83.136zM512 512h160a32 32 0 1 1 0 64H480a32 32 0 0 1-32-32V320a32 32 0 0 1 64 0v192zM90.496 312.256A160 160 0 0 1 312.32 90.496l-46.848 46.848a96 96 0 0 0-128 128L90.56 312.256zm835.264 0A160 160 0 0 0 704 90.496l46.848 46.848a96 96 0 0 1 128 128l46.912 46.912z',
},
null,
-1
)
const _hoisted_4$5n = [_hoisted_2$9_, _hoisted_3$9d]
function _sfc_render$66(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$bo, _hoisted_4$5n)
}
var alarmClock = /* @__PURE__ */ _export_sfc$2(_sfc_main$dL, [
['render', _sfc_render$66],
])
const _sfc_main$dK = defineComponent({
name: 'Apple',
})
const _hoisted_1$bn = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9Z = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M599.872 203.776a189.44 189.44 0 0 1 64.384-4.672l2.624.128c31.168 1.024 51.2 4.096 79.488 16.32 37.632 16.128 74.496 45.056 111.488 89.344 96.384 115.264 82.752 372.8-34.752 521.728-7.68 9.728-32 41.6-30.72 39.936a426.624 426.624 0 0 1-30.08 35.776c-31.232 32.576-65.28 49.216-110.08 50.048-31.36.64-53.568-5.312-84.288-18.752l-6.528-2.88c-20.992-9.216-30.592-11.904-47.296-11.904-18.112 0-28.608 2.88-51.136 12.672l-6.464 2.816c-28.416 12.224-48.32 18.048-76.16 19.2-74.112 2.752-116.928-38.08-180.672-132.16-96.64-142.08-132.608-349.312-55.04-486.4 46.272-81.92 129.92-133.632 220.672-135.04 32.832-.576 60.288 6.848 99.648 22.72 27.136 10.88 34.752 13.76 37.376 14.272 16.256-20.16 27.776-36.992 34.56-50.24 13.568-26.304 27.2-59.968 40.704-100.8a32 32 0 1 1 60.8 20.224c-12.608 37.888-25.408 70.4-38.528 97.664zm-51.52 78.08c-14.528 17.792-31.808 37.376-51.904 58.816a32 32 0 1 1-46.72-43.776l12.288-13.248c-28.032-11.2-61.248-26.688-95.68-26.112-70.4 1.088-135.296 41.6-171.648 105.792C121.6 492.608 176 684.16 247.296 788.992c34.816 51.328 76.352 108.992 130.944 106.944 52.48-2.112 72.32-34.688 135.872-34.688 63.552 0 81.28 34.688 136.96 33.536 56.448-1.088 75.776-39.04 126.848-103.872 107.904-136.768 107.904-362.752 35.776-449.088-72.192-86.272-124.672-84.096-151.68-85.12-41.472-4.288-81.6 12.544-113.664 25.152z',
},
null,
-1
)
const _hoisted_3$9c = [_hoisted_2$9Z]
function _sfc_render$65(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$bn, _hoisted_3$9c)
}
var apple = /* @__PURE__ */ _export_sfc$2(_sfc_main$dK, [
['render', _sfc_render$65],
])
const _sfc_main$dJ = defineComponent({
name: 'ArrowDownBold',
})
const _hoisted_1$bm = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9Y = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M104.704 338.752a64 64 0 0 1 90.496 0l316.8 316.8 316.8-316.8a64 64 0 0 1 90.496 90.496L557.248 791.296a64 64 0 0 1-90.496 0L104.704 429.248a64 64 0 0 1 0-90.496z',
},
null,
-1
)
const _hoisted_3$9b = [_hoisted_2$9Y]
function _sfc_render$64(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$bm, _hoisted_3$9b)
}
var arrowDownBold = /* @__PURE__ */ _export_sfc$2(_sfc_main$dJ, [
['render', _sfc_render$64],
])
const _sfc_main$dI = defineComponent({
name: 'ArrowDown',
})
const _hoisted_1$bl = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9X = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M831.872 340.864 512 652.672 192.128 340.864a30.592 30.592 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728 30.592 30.592 0 0 0-42.752 0z',
},
null,
-1
)
const _hoisted_3$9a = [_hoisted_2$9X]
function _sfc_render$63(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$bl, _hoisted_3$9a)
}
var arrowDown = /* @__PURE__ */ _export_sfc$2(_sfc_main$dI, [
['render', _sfc_render$63],
])
const _sfc_main$dH = defineComponent({
name: 'ArrowLeftBold',
})
const _hoisted_1$bk = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9W = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M685.248 104.704a64 64 0 0 1 0 90.496L368.448 512l316.8 316.8a64 64 0 0 1-90.496 90.496L232.704 557.248a64 64 0 0 1 0-90.496l362.048-362.048a64 64 0 0 1 90.496 0z',
},
null,
-1
)
const _hoisted_3$99 = [_hoisted_2$9W]
function _sfc_render$62(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$bk, _hoisted_3$99)
}
var arrowLeftBold = /* @__PURE__ */ _export_sfc$2(_sfc_main$dH, [
['render', _sfc_render$62],
])
const _sfc_main$dG = defineComponent({
name: 'ArrowLeft',
})
const _hoisted_1$bj = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9V = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M609.408 149.376 277.76 489.6a32 32 0 0 0 0 44.672l331.648 340.352a29.12 29.12 0 0 0 41.728 0 30.592 30.592 0 0 0 0-42.752L339.264 511.936l311.872-319.872a30.592 30.592 0 0 0 0-42.688 29.12 29.12 0 0 0-41.728 0z',
},
null,
-1
)
const _hoisted_3$98 = [_hoisted_2$9V]
function _sfc_render$61(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$bj, _hoisted_3$98)
}
var arrowLeft = /* @__PURE__ */ _export_sfc$2(_sfc_main$dG, [
['render', _sfc_render$61],
])
const _sfc_main$dF = defineComponent({
name: 'ArrowRightBold',
})
const _hoisted_1$bi = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9U = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M338.752 104.704a64 64 0 0 0 0 90.496l316.8 316.8-316.8 316.8a64 64 0 0 0 90.496 90.496l362.048-362.048a64 64 0 0 0 0-90.496L429.248 104.704a64 64 0 0 0-90.496 0z',
},
null,
-1
)
const _hoisted_3$97 = [_hoisted_2$9U]
function _sfc_render$60(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$bi, _hoisted_3$97)
}
var arrowRightBold = /* @__PURE__ */ _export_sfc$2(_sfc_main$dF, [
['render', _sfc_render$60],
])
const _sfc_main$dE = defineComponent({
name: 'ArrowRight',
})
const _hoisted_1$bh = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9T = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z',
},
null,
-1
)
const _hoisted_3$96 = [_hoisted_2$9T]
function _sfc_render$5$(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$bh, _hoisted_3$96)
}
var arrowRight = /* @__PURE__ */ _export_sfc$2(_sfc_main$dE, [
['render', _sfc_render$5$],
])
const _sfc_main$dD = defineComponent({
name: 'ArrowUpBold',
})
const _hoisted_1$bg = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9S = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M104.704 685.248a64 64 0 0 0 90.496 0l316.8-316.8 316.8 316.8a64 64 0 0 0 90.496-90.496L557.248 232.704a64 64 0 0 0-90.496 0L104.704 594.752a64 64 0 0 0 0 90.496z',
},
null,
-1
)
const _hoisted_3$95 = [_hoisted_2$9S]
function _sfc_render$5_(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$bg, _hoisted_3$95)
}
var arrowUpBold = /* @__PURE__ */ _export_sfc$2(_sfc_main$dD, [
['render', _sfc_render$5_],
])
const _sfc_main$dC = defineComponent({
name: 'ArrowUp',
})
const _hoisted_1$bf = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9R = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm488.832 344.32-339.84 356.672a32 32 0 0 0 0 44.16l.384.384a29.44 29.44 0 0 0 42.688 0l320-335.872 319.872 335.872a29.44 29.44 0 0 0 42.688 0l.384-.384a32 32 0 0 0 0-44.16L535.168 344.32a32 32 0 0 0-46.336 0z',
},
null,
-1
)
const _hoisted_3$94 = [_hoisted_2$9R]
function _sfc_render$5Z(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$bf, _hoisted_3$94)
}
var arrowUp = /* @__PURE__ */ _export_sfc$2(_sfc_main$dC, [
['render', _sfc_render$5Z],
])
const _sfc_main$dB = defineComponent({
name: 'Avatar',
})
const _hoisted_1$be = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9Q = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M628.736 528.896A416 416 0 0 1 928 928H96a415.872 415.872 0 0 1 299.264-399.104L512 704l116.736-175.104zM720 304a208 208 0 1 1-416 0 208 208 0 0 1 416 0z',
},
null,
-1
)
const _hoisted_3$93 = [_hoisted_2$9Q]
function _sfc_render$5Y(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$be, _hoisted_3$93)
}
var avatar = /* @__PURE__ */ _export_sfc$2(_sfc_main$dB, [
['render', _sfc_render$5Y],
])
const _sfc_main$dA = defineComponent({
name: 'Back',
})
const _hoisted_1$bd = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9P = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M224 480h640a32 32 0 1 1 0 64H224a32 32 0 0 1 0-64z',
},
null,
-1
)
const _hoisted_3$92 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm237.248 512 265.408 265.344a32 32 0 0 1-45.312 45.312l-288-288a32 32 0 0 1 0-45.312l288-288a32 32 0 1 1 45.312 45.312L237.248 512z',
},
null,
-1
)
const _hoisted_4$5m = [_hoisted_2$9P, _hoisted_3$92]
function _sfc_render$5X(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$bd, _hoisted_4$5m)
}
var back$1 = /* @__PURE__ */ _export_sfc$2(_sfc_main$dA, [
['render', _sfc_render$5X],
])
const _sfc_main$dz = defineComponent({
name: 'Baseball',
})
const _hoisted_1$bc = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9O = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M195.2 828.8a448 448 0 1 1 633.6-633.6 448 448 0 0 1-633.6 633.6zm45.248-45.248a384 384 0 1 0 543.104-543.104 384 384 0 0 0-543.104 543.104z',
},
null,
-1
)
const _hoisted_3$91 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M497.472 96.896c22.784 4.672 44.416 9.472 64.896 14.528a256.128 256.128 0 0 0 350.208 350.208c5.056 20.48 9.856 42.112 14.528 64.896A320.128 320.128 0 0 1 497.472 96.896zM108.48 491.904a320.128 320.128 0 0 1 423.616 423.68c-23.04-3.648-44.992-7.424-65.728-11.52a256.128 256.128 0 0 0-346.496-346.432 1736.64 1736.64 0 0 1-11.392-65.728z',
},
null,
-1
)
const _hoisted_4$5l = [_hoisted_2$9O, _hoisted_3$91]
function _sfc_render$5W(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$bc, _hoisted_4$5l)
}
var baseball = /* @__PURE__ */ _export_sfc$2(_sfc_main$dz, [
['render', _sfc_render$5W],
])
const _sfc_main$dy = defineComponent({
name: 'Basketball',
})
const _hoisted_1$bb = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9N = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M778.752 788.224a382.464 382.464 0 0 0 116.032-245.632 256.512 256.512 0 0 0-241.728-13.952 762.88 762.88 0 0 1 125.696 259.584zm-55.04 44.224a699.648 699.648 0 0 0-125.056-269.632 256.128 256.128 0 0 0-56.064 331.968 382.72 382.72 0 0 0 181.12-62.336zm-254.08 61.248A320.128 320.128 0 0 1 557.76 513.6a715.84 715.84 0 0 0-48.192-48.128 320.128 320.128 0 0 1-379.264 88.384 382.4 382.4 0 0 0 110.144 229.696 382.4 382.4 0 0 0 229.184 110.08zM129.28 481.088a256.128 256.128 0 0 0 331.072-56.448 699.648 699.648 0 0 0-268.8-124.352 382.656 382.656 0 0 0-62.272 180.8zm106.56-235.84a762.88 762.88 0 0 1 258.688 125.056 256.512 256.512 0 0 0-13.44-241.088A382.464 382.464 0 0 0 235.84 245.248zm318.08-114.944c40.576 89.536 37.76 193.92-8.448 281.344a779.84 779.84 0 0 1 66.176 66.112 320.832 320.832 0 0 1 282.112-8.128 382.4 382.4 0 0 0-110.144-229.12 382.4 382.4 0 0 0-229.632-110.208zM828.8 828.8a448 448 0 1 1-633.6-633.6 448 448 0 0 1 633.6 633.6z',
},
null,
-1
)
const _hoisted_3$90 = [_hoisted_2$9N]
function _sfc_render$5V(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$bb, _hoisted_3$90)
}
var basketball = /* @__PURE__ */ _export_sfc$2(_sfc_main$dy, [
['render', _sfc_render$5V],
])
const _sfc_main$dx = defineComponent({
name: 'BellFilled',
})
const _hoisted_1$ba = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9M = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M640 832a128 128 0 0 1-256 0h256zm192-64H134.4a38.4 38.4 0 0 1 0-76.8H192V448c0-154.88 110.08-284.16 256.32-313.6a64 64 0 1 1 127.36 0A320.128 320.128 0 0 1 832 448v243.2h57.6a38.4 38.4 0 0 1 0 76.8H832z',
},
null,
-1
)
const _hoisted_3$8$ = [_hoisted_2$9M]
function _sfc_render$5U(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$ba, _hoisted_3$8$)
}
var bellFilled = /* @__PURE__ */ _export_sfc$2(_sfc_main$dx, [
['render', _sfc_render$5U],
])
const _sfc_main$dw = defineComponent({
name: 'Bell',
})
const _hoisted_1$b9 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9L = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 64a64 64 0 0 1 64 64v64H448v-64a64 64 0 0 1 64-64z',
},
null,
-1
)
const _hoisted_3$8_ = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M256 768h512V448a256 256 0 1 0-512 0v320zm256-640a320 320 0 0 1 320 320v384H192V448a320 320 0 0 1 320-320z',
},
null,
-1
)
const _hoisted_4$5k = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M96 768h832q32 0 32 32t-32 32H96q-32 0-32-32t32-32zm352 128h128a64 64 0 0 1-128 0z',
},
null,
-1
)
const _hoisted_5$3_ = [_hoisted_2$9L, _hoisted_3$8_, _hoisted_4$5k]
function _sfc_render$5T(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$b9, _hoisted_5$3_)
}
var bell = /* @__PURE__ */ _export_sfc$2(_sfc_main$dw, [
['render', _sfc_render$5T],
])
const _sfc_main$dv = defineComponent({
name: 'Bicycle',
})
const _hoisted_1$b8 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9K = /* @__PURE__ */ createStaticVNode(
'',
5
)
const _hoisted_7$2U = [_hoisted_2$9K]
function _sfc_render$5S(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$b8, _hoisted_7$2U)
}
var bicycle = /* @__PURE__ */ _export_sfc$2(_sfc_main$dv, [
['render', _sfc_render$5S],
])
const _sfc_main$du = defineComponent({
name: 'BottomLeft',
})
const _hoisted_1$b7 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9J = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M256 768h416a32 32 0 1 1 0 64H224a32 32 0 0 1-32-32V352a32 32 0 0 1 64 0v416z',
},
null,
-1
)
const _hoisted_3$8Z = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M246.656 822.656a32 32 0 0 1-45.312-45.312l544-544a32 32 0 0 1 45.312 45.312l-544 544z',
},
null,
-1
)
const _hoisted_4$5j = [_hoisted_2$9J, _hoisted_3$8Z]
function _sfc_render$5R(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$b7, _hoisted_4$5j)
}
var bottomLeft = /* @__PURE__ */ _export_sfc$2(_sfc_main$du, [
['render', _sfc_render$5R],
])
const _sfc_main$dt = defineComponent({
name: 'BottomRight',
})
const _hoisted_1$b6 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9I = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M352 768a32 32 0 1 0 0 64h448a32 32 0 0 0 32-32V352a32 32 0 0 0-64 0v416H352z',
},
null,
-1
)
const _hoisted_3$8Y = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M777.344 822.656a32 32 0 0 0 45.312-45.312l-544-544a32 32 0 0 0-45.312 45.312l544 544z',
},
null,
-1
)
const _hoisted_4$5i = [_hoisted_2$9I, _hoisted_3$8Y]
function _sfc_render$5Q(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$b6, _hoisted_4$5i)
}
var bottomRight = /* @__PURE__ */ _export_sfc$2(_sfc_main$dt, [
['render', _sfc_render$5Q],
])
const _sfc_main$ds = defineComponent({
name: 'Bottom',
})
const _hoisted_1$b5 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9H = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M544 805.888V168a32 32 0 1 0-64 0v637.888L246.656 557.952a30.72 30.72 0 0 0-45.312 0 35.52 35.52 0 0 0 0 48.064l288 306.048a30.72 30.72 0 0 0 45.312 0l288-306.048a35.52 35.52 0 0 0 0-48 30.72 30.72 0 0 0-45.312 0L544 805.824z',
},
null,
-1
)
const _hoisted_3$8X = [_hoisted_2$9H]
function _sfc_render$5P(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$b5, _hoisted_3$8X)
}
var bottom$1 = /* @__PURE__ */ _export_sfc$2(_sfc_main$ds, [
['render', _sfc_render$5P],
])
const _sfc_main$dr = defineComponent({
name: 'Bowl',
})
const _hoisted_1$b4 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9G = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M714.432 704a351.744 351.744 0 0 0 148.16-256H161.408a351.744 351.744 0 0 0 148.16 256h404.864zM288 766.592A415.68 415.68 0 0 1 96 416a32 32 0 0 1 32-32h768a32 32 0 0 1 32 32 415.68 415.68 0 0 1-192 350.592V832a64 64 0 0 1-64 64H352a64 64 0 0 1-64-64v-65.408zM493.248 320h-90.496l254.4-254.4a32 32 0 1 1 45.248 45.248L493.248 320zm187.328 0h-128l269.696-155.712a32 32 0 0 1 32 55.424L680.576 320zM352 768v64h320v-64H352z',
},
null,
-1
)
const _hoisted_3$8W = [_hoisted_2$9G]
function _sfc_render$5O(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$b4, _hoisted_3$8W)
}
var bowl = /* @__PURE__ */ _export_sfc$2(_sfc_main$dr, [
['render', _sfc_render$5O],
])
const _sfc_main$dq = defineComponent({
name: 'Box',
})
const _hoisted_1$b3 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9F = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M317.056 128 128 344.064V896h768V344.064L706.944 128H317.056zm-14.528-64h418.944a32 32 0 0 1 24.064 10.88l206.528 236.096A32 32 0 0 1 960 332.032V928a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V332.032a32 32 0 0 1 7.936-21.12L278.4 75.008A32 32 0 0 1 302.528 64z',
},
null,
-1
)
const _hoisted_3$8V = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M64 320h896v64H64z',
},
null,
-1
)
const _hoisted_4$5h = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M448 327.872V640h128V327.872L526.08 128h-28.16L448 327.872zM448 64h128l64 256v352a32 32 0 0 1-32 32H416a32 32 0 0 1-32-32V320l64-256z',
},
null,
-1
)
const _hoisted_5$3Z = [_hoisted_2$9F, _hoisted_3$8V, _hoisted_4$5h]
function _sfc_render$5N(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$b3, _hoisted_5$3Z)
}
var box$1 = /* @__PURE__ */ _export_sfc$2(_sfc_main$dq, [
['render', _sfc_render$5N],
])
const _sfc_main$dp = defineComponent({
name: 'Briefcase',
})
const _hoisted_1$b2 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9E = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M320 320V128h384v192h192v192H128V320h192zM128 576h768v320H128V576zm256-256h256.064V192H384v128z',
},
null,
-1
)
const _hoisted_3$8U = [_hoisted_2$9E]
function _sfc_render$5M(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$b2, _hoisted_3$8U)
}
var briefcase = /* @__PURE__ */ _export_sfc$2(_sfc_main$dp, [
['render', _sfc_render$5M],
])
const _sfc_main$do = defineComponent({
name: 'BrushFilled',
})
const _hoisted_1$b1 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9D = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M608 704v160a96 96 0 0 1-192 0V704h-96a128 128 0 0 1-128-128h640a128 128 0 0 1-128 128h-96zM192 512V128.064h640V512H192z',
},
null,
-1
)
const _hoisted_3$8T = [_hoisted_2$9D]
function _sfc_render$5L(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$b1, _hoisted_3$8T)
}
var brushFilled = /* @__PURE__ */ _export_sfc$2(_sfc_main$do, [
['render', _sfc_render$5L],
])
const _sfc_main$dn = defineComponent({
name: 'Brush',
})
const _hoisted_1$b0 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9C = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M896 448H128v192a64 64 0 0 0 64 64h192v192h256V704h192a64 64 0 0 0 64-64V448zm-770.752-64c0-47.552 5.248-90.24 15.552-128 14.72-54.016 42.496-107.392 83.2-160h417.28l-15.36 70.336L736 96h211.2c-24.832 42.88-41.92 96.256-51.2 160a663.872 663.872 0 0 0-6.144 128H960v256a128 128 0 0 1-128 128H704v160a32 32 0 0 1-32 32H352a32 32 0 0 1-32-32V768H192A128 128 0 0 1 64 640V384h61.248zm64 0h636.544c-2.048-45.824.256-91.584 6.848-137.216 4.48-30.848 10.688-59.776 18.688-86.784h-96.64l-221.12 141.248L561.92 160H256.512c-25.856 37.888-43.776 75.456-53.952 112.832-8.768 32.064-13.248 69.12-13.312 111.168z',
},
null,
-1
)
const _hoisted_3$8S = [_hoisted_2$9C]
function _sfc_render$5K(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$b0, _hoisted_3$8S)
}
var brush$2 = /* @__PURE__ */ _export_sfc$2(_sfc_main$dn, [
['render', _sfc_render$5K],
])
const _sfc_main$dm = defineComponent({
name: 'Burger',
})
const _hoisted_1$a$ = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9B = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M160 512a32 32 0 0 0-32 32v64a32 32 0 0 0 30.08 32H864a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32H160zm736-58.56A96 96 0 0 1 960 544v64a96 96 0 0 1-51.968 85.312L855.36 833.6a96 96 0 0 1-89.856 62.272H258.496A96 96 0 0 1 168.64 833.6l-52.608-140.224A96 96 0 0 1 64 608v-64a96 96 0 0 1 64-90.56V448a384 384 0 1 1 768 5.44zM832 448a320 320 0 0 0-640 0h640zM512 704H188.352l40.192 107.136a32 32 0 0 0 29.952 20.736h507.008a32 32 0 0 0 29.952-20.736L835.648 704H512z',
},
null,
-1
)
const _hoisted_3$8R = [_hoisted_2$9B]
function _sfc_render$5J(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$a$, _hoisted_3$8R)
}
var burger = /* @__PURE__ */ _export_sfc$2(_sfc_main$dm, [
['render', _sfc_render$5J],
])
const _sfc_main$dl = defineComponent({
name: 'Calendar',
})
const _hoisted_1$a_ = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9A = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M128 384v512h768V192H768v32a32 32 0 1 1-64 0v-32H320v32a32 32 0 0 1-64 0v-32H128v128h768v64H128zm192-256h384V96a32 32 0 1 1 64 0v32h160a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h160V96a32 32 0 0 1 64 0v32zm-32 384h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64zm0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64zm192-192h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64zm0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64zm192-192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64zm0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64z',
},
null,
-1
)
const _hoisted_3$8Q = [_hoisted_2$9A]
function _sfc_render$5I(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$a_, _hoisted_3$8Q)
}
var calendar = /* @__PURE__ */ _export_sfc$2(_sfc_main$dl, [
['render', _sfc_render$5I],
])
const _sfc_main$dk = defineComponent({
name: 'CameraFilled',
})
const _hoisted_1$aZ = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9z = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M160 224a64 64 0 0 0-64 64v512a64 64 0 0 0 64 64h704a64 64 0 0 0 64-64V288a64 64 0 0 0-64-64H748.416l-46.464-92.672A64 64 0 0 0 644.736 96H379.328a64 64 0 0 0-57.216 35.392L275.776 224H160zm352 435.2a115.2 115.2 0 1 0 0-230.4 115.2 115.2 0 0 0 0 230.4zm0 140.8a256 256 0 1 1 0-512 256 256 0 0 1 0 512z',
},
null,
-1
)
const _hoisted_3$8P = [_hoisted_2$9z]
function _sfc_render$5H(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$aZ, _hoisted_3$8P)
}
var cameraFilled = /* @__PURE__ */ _export_sfc$2(_sfc_main$dk, [
['render', _sfc_render$5H],
])
const _sfc_main$dj = defineComponent({
name: 'Camera',
})
const _hoisted_1$aY = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9y = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M896 256H128v576h768V256zm-199.424-64-32.064-64h-304.96l-32 64h369.024zM96 192h160l46.336-92.608A64 64 0 0 1 359.552 64h304.96a64 64 0 0 1 57.216 35.328L768.192 192H928a32 32 0 0 1 32 32v640a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V224a32 32 0 0 1 32-32zm416 512a160 160 0 1 0 0-320 160 160 0 0 0 0 320zm0 64a224 224 0 1 1 0-448 224 224 0 0 1 0 448z',
},
null,
-1
)
const _hoisted_3$8O = [_hoisted_2$9y]
function _sfc_render$5G(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$aY, _hoisted_3$8O)
}
var camera = /* @__PURE__ */ _export_sfc$2(_sfc_main$dj, [
['render', _sfc_render$5G],
])
const _sfc_main$di = defineComponent({
name: 'CaretBottom',
})
const _hoisted_1$aX = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9x = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm192 384 320 384 320-384z',
},
null,
-1
)
const _hoisted_3$8N = [_hoisted_2$9x]
function _sfc_render$5F(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$aX, _hoisted_3$8N)
}
var caretBottom = /* @__PURE__ */ _export_sfc$2(_sfc_main$di, [
['render', _sfc_render$5F],
])
const _sfc_main$dh = defineComponent({
name: 'CaretLeft',
})
const _hoisted_1$aW = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9w = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M672 192 288 511.936 672 832z',
},
null,
-1
)
const _hoisted_3$8M = [_hoisted_2$9w]
function _sfc_render$5E(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$aW, _hoisted_3$8M)
}
var caretLeft = /* @__PURE__ */ _export_sfc$2(_sfc_main$dh, [
['render', _sfc_render$5E],
])
const _sfc_main$dg = defineComponent({
name: 'CaretRight',
})
const _hoisted_1$aV = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9v = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M384 192v640l384-320.064z',
},
null,
-1
)
const _hoisted_3$8L = [_hoisted_2$9v]
function _sfc_render$5D(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$aV, _hoisted_3$8L)
}
var caretRight = /* @__PURE__ */ _export_sfc$2(_sfc_main$dg, [
['render', _sfc_render$5D],
])
const _sfc_main$df = defineComponent({
name: 'CaretTop',
})
const _hoisted_1$aU = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9u = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 320 192 704h639.936z',
},
null,
-1
)
const _hoisted_3$8K = [_hoisted_2$9u]
function _sfc_render$5C(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$aU, _hoisted_3$8K)
}
var caretTop = /* @__PURE__ */ _export_sfc$2(_sfc_main$df, [
['render', _sfc_render$5C],
])
const _sfc_main$de = defineComponent({
name: 'Cellphone',
})
const _hoisted_1$aT = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9t = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M256 128a64 64 0 0 0-64 64v640a64 64 0 0 0 64 64h512a64 64 0 0 0 64-64V192a64 64 0 0 0-64-64H256zm0-64h512a128 128 0 0 1 128 128v640a128 128 0 0 1-128 128H256a128 128 0 0 1-128-128V192A128 128 0 0 1 256 64zm128 128h256a32 32 0 1 1 0 64H384a32 32 0 0 1 0-64zm128 640a64 64 0 1 1 0-128 64 64 0 0 1 0 128z',
},
null,
-1
)
const _hoisted_3$8J = [_hoisted_2$9t]
function _sfc_render$5B(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$aT, _hoisted_3$8J)
}
var cellphone = /* @__PURE__ */ _export_sfc$2(_sfc_main$de, [
['render', _sfc_render$5B],
])
const _sfc_main$dd = defineComponent({
name: 'ChatDotRound',
})
const _hoisted_1$aS = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9s = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm174.72 855.68 135.296-45.12 23.68 11.84C388.096 849.536 448.576 864 512 864c211.84 0 384-166.784 384-352S723.84 160 512 160 128 326.784 128 512c0 69.12 24.96 139.264 70.848 199.232l22.08 28.8-46.272 115.584zm-45.248 82.56A32 32 0 0 1 89.6 896l58.368-145.92C94.72 680.32 64 596.864 64 512 64 299.904 256 96 512 96s448 203.904 448 416-192 416-448 416a461.056 461.056 0 0 1-206.912-48.384l-175.616 58.56z',
},
null,
-1
)
const _hoisted_3$8I = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 563.2a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4zm192 0a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4zm-384 0a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4z',
},
null,
-1
)
const _hoisted_4$5g = [_hoisted_2$9s, _hoisted_3$8I]
function _sfc_render$5A(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$aS, _hoisted_4$5g)
}
var chatDotRound = /* @__PURE__ */ _export_sfc$2(_sfc_main$dd, [
['render', _sfc_render$5A],
])
const _sfc_main$dc = defineComponent({
name: 'ChatDotSquare',
})
const _hoisted_1$aR = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9r = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M273.536 736H800a64 64 0 0 0 64-64V256a64 64 0 0 0-64-64H224a64 64 0 0 0-64 64v570.88L273.536 736zM296 800 147.968 918.4A32 32 0 0 1 96 893.44V256a128 128 0 0 1 128-128h576a128 128 0 0 1 128 128v416a128 128 0 0 1-128 128H296z',
},
null,
-1
)
const _hoisted_3$8H = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 499.2a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4zm192 0a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4zm-384 0a51.2 51.2 0 1 1 0-102.4 51.2 51.2 0 0 1 0 102.4z',
},
null,
-1
)
const _hoisted_4$5f = [_hoisted_2$9r, _hoisted_3$8H]
function _sfc_render$5z(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$aR, _hoisted_4$5f)
}
var chatDotSquare = /* @__PURE__ */ _export_sfc$2(_sfc_main$dc, [
['render', _sfc_render$5z],
])
const _sfc_main$db = defineComponent({
name: 'ChatLineRound',
})
const _hoisted_1$aQ = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9q = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm174.72 855.68 135.296-45.12 23.68 11.84C388.096 849.536 448.576 864 512 864c211.84 0 384-166.784 384-352S723.84 160 512 160 128 326.784 128 512c0 69.12 24.96 139.264 70.848 199.232l22.08 28.8-46.272 115.584zm-45.248 82.56A32 32 0 0 1 89.6 896l58.368-145.92C94.72 680.32 64 596.864 64 512 64 299.904 256 96 512 96s448 203.904 448 416-192 416-448 416a461.056 461.056 0 0 1-206.912-48.384l-175.616 58.56z',
},
null,
-1
)
const _hoisted_3$8G = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M352 576h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32zm32-192h256q32 0 32 32t-32 32H384q-32 0-32-32t32-32z',
},
null,
-1
)
const _hoisted_4$5e = [_hoisted_2$9q, _hoisted_3$8G]
function _sfc_render$5y(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$aQ, _hoisted_4$5e)
}
var chatLineRound = /* @__PURE__ */ _export_sfc$2(_sfc_main$db, [
['render', _sfc_render$5y],
])
const _sfc_main$da = defineComponent({
name: 'ChatLineSquare',
})
const _hoisted_1$aP = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9p = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M160 826.88 273.536 736H800a64 64 0 0 0 64-64V256a64 64 0 0 0-64-64H224a64 64 0 0 0-64 64v570.88zM296 800 147.968 918.4A32 32 0 0 1 96 893.44V256a128 128 0 0 1 128-128h576a128 128 0 0 1 128 128v416a128 128 0 0 1-128 128H296z',
},
null,
-1
)
const _hoisted_3$8F = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M352 512h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32zm0-192h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32z',
},
null,
-1
)
const _hoisted_4$5d = [_hoisted_2$9p, _hoisted_3$8F]
function _sfc_render$5x(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$aP, _hoisted_4$5d)
}
var chatLineSquare = /* @__PURE__ */ _export_sfc$2(_sfc_main$da, [
['render', _sfc_render$5x],
])
const _sfc_main$d9 = defineComponent({
name: 'ChatRound',
})
const _hoisted_1$aO = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9o = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm174.72 855.68 130.048-43.392 23.424 11.392C382.4 849.984 444.352 864 512 864c223.744 0 384-159.872 384-352 0-192.832-159.104-352-384-352S128 319.168 128 512a341.12 341.12 0 0 0 69.248 204.288l21.632 28.8-44.16 110.528zm-45.248 82.56A32 32 0 0 1 89.6 896l56.512-141.248A405.12 405.12 0 0 1 64 512C64 299.904 235.648 96 512 96s448 203.904 448 416-173.44 416-448 416c-79.68 0-150.848-17.152-211.712-46.72l-170.88 56.96z',
},
null,
-1
)
const _hoisted_3$8E = [_hoisted_2$9o]
function _sfc_render$5w(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$aO, _hoisted_3$8E)
}
var chatRound = /* @__PURE__ */ _export_sfc$2(_sfc_main$d9, [
['render', _sfc_render$5w],
])
const _sfc_main$d8 = defineComponent({
name: 'ChatSquare',
})
const _hoisted_1$aN = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9n = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M273.536 736H800a64 64 0 0 0 64-64V256a64 64 0 0 0-64-64H224a64 64 0 0 0-64 64v570.88L273.536 736zM296 800 147.968 918.4A32 32 0 0 1 96 893.44V256a128 128 0 0 1 128-128h576a128 128 0 0 1 128 128v416a128 128 0 0 1-128 128H296z',
},
null,
-1
)
const _hoisted_3$8D = [_hoisted_2$9n]
function _sfc_render$5v(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$aN, _hoisted_3$8D)
}
var chatSquare = /* @__PURE__ */ _export_sfc$2(_sfc_main$d8, [
['render', _sfc_render$5v],
])
const _sfc_main$d7 = defineComponent({
name: 'Check',
})
const _hoisted_1$aM = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9m = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z',
},
null,
-1
)
const _hoisted_3$8C = [_hoisted_2$9m]
function _sfc_render$5u(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$aM, _hoisted_3$8C)
}
var check$1 = /* @__PURE__ */ _export_sfc$2(_sfc_main$d7, [
['render', _sfc_render$5u],
])
const _sfc_main$d6 = defineComponent({
name: 'Checked',
})
const _hoisted_1$aL = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9l = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M704 192h160v736H160V192h160.064v64H704v-64zM311.616 537.28l-45.312 45.248L447.36 763.52l316.8-316.8-45.312-45.184L447.36 673.024 311.616 537.28zM384 192V96h256v96H384z',
},
null,
-1
)
const _hoisted_3$8B = [_hoisted_2$9l]
function _sfc_render$5t(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$aL, _hoisted_3$8B)
}
var checked = /* @__PURE__ */ _export_sfc$2(_sfc_main$d6, [
['render', _sfc_render$5t],
])
const _sfc_main$d5 = defineComponent({
name: 'Cherry',
})
const _hoisted_1$aK = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9k = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M261.056 449.6c13.824-69.696 34.88-128.96 63.36-177.728 23.744-40.832 61.12-88.64 112.256-143.872H320a32 32 0 0 1 0-64h384a32 32 0 1 1 0 64H554.752c14.912 39.168 41.344 86.592 79.552 141.76 47.36 68.48 84.8 106.752 106.304 114.304a224 224 0 1 1-84.992 14.784c-22.656-22.912-47.04-53.76-73.92-92.608-38.848-56.128-67.008-105.792-84.352-149.312-55.296 58.24-94.528 107.52-117.76 147.2-23.168 39.744-41.088 88.768-53.568 147.072a224.064 224.064 0 1 1-64.96-1.6zM288 832a160 160 0 1 0 0-320 160 160 0 0 0 0 320zm448-64a160 160 0 1 0 0-320 160 160 0 0 0 0 320z',
},
null,
-1
)
const _hoisted_3$8A = [_hoisted_2$9k]
function _sfc_render$5s(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$aK, _hoisted_3$8A)
}
var cherry = /* @__PURE__ */ _export_sfc$2(_sfc_main$d5, [
['render', _sfc_render$5s],
])
const _sfc_main$d4 = defineComponent({
name: 'Chicken',
})
const _hoisted_1$aJ = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9j = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M349.952 716.992 478.72 588.16a106.688 106.688 0 0 1-26.176-19.072 106.688 106.688 0 0 1-19.072-26.176L304.704 671.744c.768 3.072 1.472 6.144 2.048 9.216l2.048 31.936 31.872 1.984c3.136.64 6.208 1.28 9.28 2.112zm57.344 33.152a128 128 0 1 1-216.32 114.432l-1.92-32-32-1.92a128 128 0 1 1 114.432-216.32L416.64 469.248c-2.432-101.44 58.112-239.104 149.056-330.048 107.328-107.328 231.296-85.504 316.8 0 85.44 85.44 107.328 209.408 0 316.8-91.008 90.88-228.672 151.424-330.112 149.056L407.296 750.08zm90.496-226.304c49.536 49.536 233.344-7.04 339.392-113.088 78.208-78.208 63.232-163.072 0-226.304-63.168-63.232-148.032-78.208-226.24 0C504.896 290.496 448.32 474.368 497.792 523.84zM244.864 708.928a64 64 0 1 0-59.84 59.84l56.32-3.52 3.52-56.32zm8.064 127.68a64 64 0 1 0 59.84-59.84l-56.32 3.52-3.52 56.32z',
},
null,
-1
)
const _hoisted_3$8z = [_hoisted_2$9j]
function _sfc_render$5r(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$aJ, _hoisted_3$8z)
}
var chicken = /* @__PURE__ */ _export_sfc$2(_sfc_main$d4, [
['render', _sfc_render$5r],
])
const _sfc_main$d3 = defineComponent({
name: 'CircleCheckFilled',
})
const _hoisted_1$aI = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9i = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336L456.192 600.384z',
},
null,
-1
)
const _hoisted_3$8y = [_hoisted_2$9i]
function _sfc_render$5q(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$aI, _hoisted_3$8y)
}
var circleCheckFilled = /* @__PURE__ */ _export_sfc$2(_sfc_main$d3, [
['render', _sfc_render$5q],
])
const _sfc_main$d2 = defineComponent({
name: 'CircleCheck',
})
const _hoisted_1$aH = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9h = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z',
},
null,
-1
)
const _hoisted_3$8x = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M745.344 361.344a32 32 0 0 1 45.312 45.312l-288 288a32 32 0 0 1-45.312 0l-160-160a32 32 0 1 1 45.312-45.312L480 626.752l265.344-265.408z',
},
null,
-1
)
const _hoisted_4$5c = [_hoisted_2$9h, _hoisted_3$8x]
function _sfc_render$5p(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$aH, _hoisted_4$5c)
}
var circleCheck = /* @__PURE__ */ _export_sfc$2(_sfc_main$d2, [
['render', _sfc_render$5p],
])
const _sfc_main$d1 = defineComponent({
name: 'CircleCloseFilled',
})
const _hoisted_1$aG = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9g = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336L512 457.664z',
},
null,
-1
)
const _hoisted_3$8w = [_hoisted_2$9g]
function _sfc_render$5o(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$aG, _hoisted_3$8w)
}
var circleCloseFilled = /* @__PURE__ */ _export_sfc$2(_sfc_main$d1, [
['render', _sfc_render$5o],
])
const _sfc_main$d0 = defineComponent({
name: 'CircleClose',
})
const _hoisted_1$aF = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9f = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm466.752 512-90.496-90.496a32 32 0 0 1 45.248-45.248L512 466.752l90.496-90.496a32 32 0 1 1 45.248 45.248L557.248 512l90.496 90.496a32 32 0 1 1-45.248 45.248L512 557.248l-90.496 90.496a32 32 0 0 1-45.248-45.248L466.752 512z',
},
null,
-1
)
const _hoisted_3$8v = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z',
},
null,
-1
)
const _hoisted_4$5b = [_hoisted_2$9f, _hoisted_3$8v]
function _sfc_render$5n(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$aF, _hoisted_4$5b)
}
var circleClose = /* @__PURE__ */ _export_sfc$2(_sfc_main$d0, [
['render', _sfc_render$5n],
])
const _sfc_main$c$ = defineComponent({
name: 'CirclePlusFilled',
})
const _hoisted_1$aE = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9e = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm-38.4 409.6H326.4a38.4 38.4 0 1 0 0 76.8h147.2v147.2a38.4 38.4 0 0 0 76.8 0V550.4h147.2a38.4 38.4 0 0 0 0-76.8H550.4V326.4a38.4 38.4 0 1 0-76.8 0v147.2z',
},
null,
-1
)
const _hoisted_3$8u = [_hoisted_2$9e]
function _sfc_render$5m(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$aE, _hoisted_3$8u)
}
var circlePlusFilled = /* @__PURE__ */ _export_sfc$2(_sfc_main$c$, [
['render', _sfc_render$5m],
])
const _sfc_main$c_ = defineComponent({
name: 'CirclePlus',
})
const _hoisted_1$aD = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9d = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M352 480h320a32 32 0 1 1 0 64H352a32 32 0 0 1 0-64z',
},
null,
-1
)
const _hoisted_3$8t = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M480 672V352a32 32 0 1 1 64 0v320a32 32 0 0 1-64 0z',
},
null,
-1
)
const _hoisted_4$5a = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z',
},
null,
-1
)
const _hoisted_5$3Y = [_hoisted_2$9d, _hoisted_3$8t, _hoisted_4$5a]
function _sfc_render$5l(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$aD, _hoisted_5$3Y)
}
var circlePlus = /* @__PURE__ */ _export_sfc$2(_sfc_main$c_, [
['render', _sfc_render$5l],
])
const _sfc_main$cZ = defineComponent({
name: 'Clock',
})
const _hoisted_1$aC = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9c = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z',
},
null,
-1
)
const _hoisted_3$8s = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M480 256a32 32 0 0 1 32 32v256a32 32 0 0 1-64 0V288a32 32 0 0 1 32-32z',
},
null,
-1
)
const _hoisted_4$59 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M480 512h256q32 0 32 32t-32 32H480q-32 0-32-32t32-32z',
},
null,
-1
)
const _hoisted_5$3X = [_hoisted_2$9c, _hoisted_3$8s, _hoisted_4$59]
function _sfc_render$5k(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$aC, _hoisted_5$3X)
}
var clock = /* @__PURE__ */ _export_sfc$2(_sfc_main$cZ, [
['render', _sfc_render$5k],
])
const _sfc_main$cY = defineComponent({
name: 'CloseBold',
})
const _hoisted_1$aB = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9b = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M195.2 195.2a64 64 0 0 1 90.496 0L512 421.504 738.304 195.2a64 64 0 0 1 90.496 90.496L602.496 512 828.8 738.304a64 64 0 0 1-90.496 90.496L512 602.496 285.696 828.8a64 64 0 0 1-90.496-90.496L421.504 512 195.2 285.696a64 64 0 0 1 0-90.496z',
},
null,
-1
)
const _hoisted_3$8r = [_hoisted_2$9b]
function _sfc_render$5j(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$aB, _hoisted_3$8r)
}
var closeBold = /* @__PURE__ */ _export_sfc$2(_sfc_main$cY, [
['render', _sfc_render$5j],
])
const _sfc_main$cX = defineComponent({
name: 'Close',
})
const _hoisted_1$aA = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$9a = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z',
},
null,
-1
)
const _hoisted_3$8q = [_hoisted_2$9a]
function _sfc_render$5i(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$aA, _hoisted_3$8q)
}
var close$2 = /* @__PURE__ */ _export_sfc$2(_sfc_main$cX, [
['render', _sfc_render$5i],
])
const _sfc_main$cW = defineComponent({
name: 'Cloudy',
})
const _hoisted_1$az = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$99 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M598.4 831.872H328.192a256 256 0 0 1-34.496-510.528A352 352 0 1 1 598.4 831.872zm-271.36-64h272.256a288 288 0 1 0-248.512-417.664L335.04 381.44l-34.816 3.584a192 192 0 0 0 26.88 382.848z',
},
null,
-1
)
const _hoisted_3$8p = [_hoisted_2$99]
function _sfc_render$5h(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$az, _hoisted_3$8p)
}
var cloudy = /* @__PURE__ */ _export_sfc$2(_sfc_main$cW, [
['render', _sfc_render$5h],
])
const _sfc_main$cV = defineComponent({
name: 'CoffeeCup',
})
const _hoisted_1$ay = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$98 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M768 192a192 192 0 1 1-8 383.808A256.128 256.128 0 0 1 512 768H320A256 256 0 0 1 64 512V160a32 32 0 0 1 32-32h640a32 32 0 0 1 32 32v32zm0 64v256a128 128 0 1 0 0-256zM96 832h640a32 32 0 1 1 0 64H96a32 32 0 1 1 0-64zm32-640v320a192 192 0 0 0 192 192h192a192 192 0 0 0 192-192V192H128z',
},
null,
-1
)
const _hoisted_3$8o = [_hoisted_2$98]
function _sfc_render$5g(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$ay, _hoisted_3$8o)
}
var coffeeCup = /* @__PURE__ */ _export_sfc$2(_sfc_main$cV, [
['render', _sfc_render$5g],
])
const _sfc_main$cU = defineComponent({
name: 'Coffee',
})
const _hoisted_1$ax = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$97 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M822.592 192h14.272a32 32 0 0 1 31.616 26.752l21.312 128A32 32 0 0 1 858.24 384h-49.344l-39.04 546.304A32 32 0 0 1 737.92 960H285.824a32 32 0 0 1-32-29.696L214.912 384H165.76a32 32 0 0 1-31.552-37.248l21.312-128A32 32 0 0 1 187.136 192h14.016l-6.72-93.696A32 32 0 0 1 226.368 64h571.008a32 32 0 0 1 31.936 34.304L822.592 192zm-64.128 0 4.544-64H260.736l4.544 64h493.184zm-548.16 128H820.48l-10.688-64H214.208l-10.688 64h6.784zm68.736 64 36.544 512H708.16l36.544-512H279.04z',
},
null,
-1
)
const _hoisted_3$8n = [_hoisted_2$97]
function _sfc_render$5f(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$ax, _hoisted_3$8n)
}
var coffee = /* @__PURE__ */ _export_sfc$2(_sfc_main$cU, [
['render', _sfc_render$5f],
])
const _sfc_main$cT = defineComponent({
name: 'Coin',
})
const _hoisted_1$aw = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$96 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm161.92 580.736 29.888 58.88C171.328 659.776 160 681.728 160 704c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 615.808 928 657.664 928 704c0 129.728-188.544 224-416 224S96 833.728 96 704c0-46.592 24.32-88.576 65.92-123.264z',
},
null,
-1
)
const _hoisted_3$8m = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm161.92 388.736 29.888 58.88C171.328 467.84 160 489.792 160 512c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 423.808 928 465.664 928 512c0 129.728-188.544 224-416 224S96 641.728 96 512c0-46.592 24.32-88.576 65.92-123.264z',
},
null,
-1
)
const _hoisted_4$58 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 544c-227.456 0-416-94.272-416-224S284.544 96 512 96s416 94.272 416 224-188.544 224-416 224zm0-64c196.672 0 352-77.696 352-160S708.672 160 512 160s-352 77.696-352 160 155.328 160 352 160z',
},
null,
-1
)
const _hoisted_5$3W = [_hoisted_2$96, _hoisted_3$8m, _hoisted_4$58]
function _sfc_render$5e(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$aw, _hoisted_5$3W)
}
var coin = /* @__PURE__ */ _export_sfc$2(_sfc_main$cT, [
['render', _sfc_render$5e],
])
const _sfc_main$cS = defineComponent({
name: 'ColdDrink',
})
const _hoisted_1$av = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$95 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M768 64a192 192 0 1 1-69.952 370.88L480 725.376V896h96a32 32 0 1 1 0 64H320a32 32 0 1 1 0-64h96V725.376L76.8 273.536a64 64 0 0 1-12.8-38.4v-10.688a32 32 0 0 1 32-32h71.808l-65.536-83.84a32 32 0 0 1 50.432-39.424l96.256 123.264h337.728A192.064 192.064 0 0 1 768 64zM656.896 192.448H800a32 32 0 0 1 32 32v10.624a64 64 0 0 1-12.8 38.4l-80.448 107.2a128 128 0 1 0-81.92-188.16v-.064zm-357.888 64 129.472 165.76a32 32 0 0 1-50.432 39.36l-160.256-205.12H144l304 404.928 304-404.928H299.008z',
},
null,
-1
)
const _hoisted_3$8l = [_hoisted_2$95]
function _sfc_render$5d(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$av, _hoisted_3$8l)
}
var coldDrink = /* @__PURE__ */ _export_sfc$2(_sfc_main$cS, [
['render', _sfc_render$5d],
])
const _sfc_main$cR = defineComponent({
name: 'CollectionTag',
})
const _hoisted_1$au = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$94 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M256 128v698.88l196.032-156.864a96 96 0 0 1 119.936 0L768 826.816V128H256zm-32-64h576a32 32 0 0 1 32 32v797.44a32 32 0 0 1-51.968 24.96L531.968 720a32 32 0 0 0-39.936 0L243.968 918.4A32 32 0 0 1 192 893.44V96a32 32 0 0 1 32-32z',
},
null,
-1
)
const _hoisted_3$8k = [_hoisted_2$94]
function _sfc_render$5c(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$au, _hoisted_3$8k)
}
var collectionTag = /* @__PURE__ */ _export_sfc$2(_sfc_main$cR, [
['render', _sfc_render$5c],
])
const _sfc_main$cQ = defineComponent({
name: 'Collection',
})
const _hoisted_1$at = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$93 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M192 736h640V128H256a64 64 0 0 0-64 64v544zm64-672h608a32 32 0 0 1 32 32v672a32 32 0 0 1-32 32H160l-32 57.536V192A128 128 0 0 1 256 64z',
},
null,
-1
)
const _hoisted_3$8j = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M240 800a48 48 0 1 0 0 96h592v-96H240zm0-64h656v160a64 64 0 0 1-64 64H240a112 112 0 0 1 0-224zm144-608v250.88l96-76.8 96 76.8V128H384zm-64-64h320v381.44a32 32 0 0 1-51.968 24.96L480 384l-108.032 86.4A32 32 0 0 1 320 445.44V64z',
},
null,
-1
)
const _hoisted_4$57 = [_hoisted_2$93, _hoisted_3$8j]
function _sfc_render$5b(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$at, _hoisted_4$57)
}
var collection = /* @__PURE__ */ _export_sfc$2(_sfc_main$cQ, [
['render', _sfc_render$5b],
])
const _sfc_main$cP = defineComponent({
name: 'Comment',
})
const _hoisted_1$as = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$92 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M736 504a56 56 0 1 1 0-112 56 56 0 0 1 0 112zm-224 0a56 56 0 1 1 0-112 56 56 0 0 1 0 112zm-224 0a56 56 0 1 1 0-112 56 56 0 0 1 0 112zM128 128v640h192v160l224-160h352V128H128z',
},
null,
-1
)
const _hoisted_3$8i = [_hoisted_2$92]
function _sfc_render$5a(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$as, _hoisted_3$8i)
}
var comment = /* @__PURE__ */ _export_sfc$2(_sfc_main$cP, [
['render', _sfc_render$5a],
])
const _sfc_main$cO = defineComponent({
name: 'Compass',
})
const _hoisted_1$ar = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$91 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z',
},
null,
-1
)
const _hoisted_3$8h = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M725.888 315.008C676.48 428.672 624 513.28 568.576 568.64c-55.424 55.424-139.968 107.904-253.568 157.312a12.8 12.8 0 0 1-16.896-16.832c49.536-113.728 102.016-198.272 157.312-253.632 55.36-55.296 139.904-107.776 253.632-157.312a12.8 12.8 0 0 1 16.832 16.832z',
},
null,
-1
)
const _hoisted_4$56 = [_hoisted_2$91, _hoisted_3$8h]
function _sfc_render$59(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$ar, _hoisted_4$56)
}
var compass = /* @__PURE__ */ _export_sfc$2(_sfc_main$cO, [
['render', _sfc_render$59],
])
const _sfc_main$cN = defineComponent({
name: 'Connection',
})
const _hoisted_1$aq = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$90 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M640 384v64H448a128 128 0 0 0-128 128v128a128 128 0 0 0 128 128h320a128 128 0 0 0 128-128V576a128 128 0 0 0-64-110.848V394.88c74.56 26.368 128 97.472 128 181.056v128a192 192 0 0 1-192 192H448a192 192 0 0 1-192-192V576a192 192 0 0 1 192-192h192z',
},
null,
-1
)
const _hoisted_3$8g = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M384 640v-64h192a128 128 0 0 0 128-128V320a128 128 0 0 0-128-128H256a128 128 0 0 0-128 128v128a128 128 0 0 0 64 110.848v70.272A192.064 192.064 0 0 1 64 448V320a192 192 0 0 1 192-192h320a192 192 0 0 1 192 192v128a192 192 0 0 1-192 192H384z',
},
null,
-1
)
const _hoisted_4$55 = [_hoisted_2$90, _hoisted_3$8g]
function _sfc_render$58(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$aq, _hoisted_4$55)
}
var connection = /* @__PURE__ */ _export_sfc$2(_sfc_main$cN, [
['render', _sfc_render$58],
])
const _sfc_main$cM = defineComponent({
name: 'Coordinate',
})
const _hoisted_1$ap = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8$ = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M480 512h64v320h-64z',
},
null,
-1
)
const _hoisted_3$8f = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M192 896h640a64 64 0 0 0-64-64H256a64 64 0 0 0-64 64zm64-128h512a128 128 0 0 1 128 128v64H128v-64a128 128 0 0 1 128-128zm256-256a192 192 0 1 0 0-384 192 192 0 0 0 0 384zm0 64a256 256 0 1 1 0-512 256 256 0 0 1 0 512z',
},
null,
-1
)
const _hoisted_4$54 = [_hoisted_2$8$, _hoisted_3$8f]
function _sfc_render$57(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$ap, _hoisted_4$54)
}
var coordinate = /* @__PURE__ */ _export_sfc$2(_sfc_main$cM, [
['render', _sfc_render$57],
])
const _sfc_main$cL = defineComponent({
name: 'CopyDocument',
})
const _hoisted_1$ao = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8_ = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M768 832a128 128 0 0 1-128 128H192A128 128 0 0 1 64 832V384a128 128 0 0 1 128-128v64a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64h64z',
},
null,
-1
)
const _hoisted_3$8e = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M384 128a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64V192a64 64 0 0 0-64-64H384zm0-64h448a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128H384a128 128 0 0 1-128-128V192A128 128 0 0 1 384 64z',
},
null,
-1
)
const _hoisted_4$53 = [_hoisted_2$8_, _hoisted_3$8e]
function _sfc_render$56(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$ao, _hoisted_4$53)
}
var copyDocument = /* @__PURE__ */ _export_sfc$2(_sfc_main$cL, [
['render', _sfc_render$56],
])
const _sfc_main$cK = defineComponent({
name: 'Cpu',
})
const _hoisted_1$an = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8Z = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M320 256a64 64 0 0 0-64 64v384a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64V320a64 64 0 0 0-64-64H320zm0-64h384a128 128 0 0 1 128 128v384a128 128 0 0 1-128 128H320a128 128 0 0 1-128-128V320a128 128 0 0 1 128-128z',
},
null,
-1
)
const _hoisted_3$8d = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 64a32 32 0 0 1 32 32v128h-64V96a32 32 0 0 1 32-32zm160 0a32 32 0 0 1 32 32v128h-64V96a32 32 0 0 1 32-32zm-320 0a32 32 0 0 1 32 32v128h-64V96a32 32 0 0 1 32-32zm160 896a32 32 0 0 1-32-32V800h64v128a32 32 0 0 1-32 32zm160 0a32 32 0 0 1-32-32V800h64v128a32 32 0 0 1-32 32zm-320 0a32 32 0 0 1-32-32V800h64v128a32 32 0 0 1-32 32zM64 512a32 32 0 0 1 32-32h128v64H96a32 32 0 0 1-32-32zm0-160a32 32 0 0 1 32-32h128v64H96a32 32 0 0 1-32-32zm0 320a32 32 0 0 1 32-32h128v64H96a32 32 0 0 1-32-32zm896-160a32 32 0 0 1-32 32H800v-64h128a32 32 0 0 1 32 32zm0-160a32 32 0 0 1-32 32H800v-64h128a32 32 0 0 1 32 32zm0 320a32 32 0 0 1-32 32H800v-64h128a32 32 0 0 1 32 32z',
},
null,
-1
)
const _hoisted_4$52 = [_hoisted_2$8Z, _hoisted_3$8d]
function _sfc_render$55(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$an, _hoisted_4$52)
}
var cpu = /* @__PURE__ */ _export_sfc$2(_sfc_main$cK, [
['render', _sfc_render$55],
])
const _sfc_main$cJ = defineComponent({
name: 'CreditCard',
})
const _hoisted_1$am = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8Y = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M896 324.096c0-42.368-2.496-55.296-9.536-68.48a52.352 52.352 0 0 0-22.144-22.08c-13.12-7.04-26.048-9.536-68.416-9.536H228.096c-42.368 0-55.296 2.496-68.48 9.536a52.352 52.352 0 0 0-22.08 22.144c-7.04 13.12-9.536 26.048-9.536 68.416v375.808c0 42.368 2.496 55.296 9.536 68.48a52.352 52.352 0 0 0 22.144 22.08c13.12 7.04 26.048 9.536 68.416 9.536h567.808c42.368 0 55.296-2.496 68.48-9.536a52.352 52.352 0 0 0 22.08-22.144c7.04-13.12 9.536-26.048 9.536-68.416V324.096zm64 0v375.808c0 57.088-5.952 77.76-17.088 98.56-11.136 20.928-27.52 37.312-48.384 48.448-20.864 11.136-41.6 17.088-98.56 17.088H228.032c-57.088 0-77.76-5.952-98.56-17.088a116.288 116.288 0 0 1-48.448-48.384c-11.136-20.864-17.088-41.6-17.088-98.56V324.032c0-57.088 5.952-77.76 17.088-98.56 11.136-20.928 27.52-37.312 48.384-48.448 20.864-11.136 41.6-17.088 98.56-17.088H795.84c57.088 0 77.76 5.952 98.56 17.088 20.928 11.136 37.312 27.52 48.448 48.384 11.136 20.864 17.088 41.6 17.088 98.56z',
},
null,
-1
)
const _hoisted_3$8c = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M64 320h896v64H64v-64zm0 128h896v64H64v-64zm128 192h256v64H192z',
},
null,
-1
)
const _hoisted_4$51 = [_hoisted_2$8Y, _hoisted_3$8c]
function _sfc_render$54(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$am, _hoisted_4$51)
}
var creditCard = /* @__PURE__ */ _export_sfc$2(_sfc_main$cJ, [
['render', _sfc_render$54],
])
const _sfc_main$cI = defineComponent({
name: 'Crop',
})
const _hoisted_1$al = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8X = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M256 768h672a32 32 0 1 1 0 64H224a32 32 0 0 1-32-32V96a32 32 0 0 1 64 0v672z',
},
null,
-1
)
const _hoisted_3$8b = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M832 224v704a32 32 0 1 1-64 0V256H96a32 32 0 0 1 0-64h704a32 32 0 0 1 32 32z',
},
null,
-1
)
const _hoisted_4$50 = [_hoisted_2$8X, _hoisted_3$8b]
function _sfc_render$53(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$al, _hoisted_4$50)
}
var crop = /* @__PURE__ */ _export_sfc$2(_sfc_main$cI, [
['render', _sfc_render$53],
])
const _sfc_main$cH = defineComponent({
name: 'DArrowLeft',
})
const _hoisted_1$ak = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8W = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M529.408 149.376a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L259.264 511.936l311.872 319.936a30.592 30.592 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L197.76 534.272a32 32 0 0 1 0-44.672l331.648-340.224zm256 0a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L515.264 511.936l311.872 319.936a30.592 30.592 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L453.76 534.272a32 32 0 0 1 0-44.672l331.648-340.224z',
},
null,
-1
)
const _hoisted_3$8a = [_hoisted_2$8W]
function _sfc_render$52(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$ak, _hoisted_3$8a)
}
var dArrowLeft = /* @__PURE__ */ _export_sfc$2(_sfc_main$cH, [
['render', _sfc_render$52],
])
const _sfc_main$cG = defineComponent({
name: 'DArrowRight',
})
const _hoisted_1$aj = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8V = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M452.864 149.312a29.12 29.12 0 0 1 41.728.064L826.24 489.664a32 32 0 0 1 0 44.672L494.592 874.624a29.12 29.12 0 0 1-41.728 0 30.592 30.592 0 0 1 0-42.752L764.736 512 452.864 192a30.592 30.592 0 0 1 0-42.688zm-256 0a29.12 29.12 0 0 1 41.728.064L570.24 489.664a32 32 0 0 1 0 44.672L238.592 874.624a29.12 29.12 0 0 1-41.728 0 30.592 30.592 0 0 1 0-42.752L508.736 512 196.864 192a30.592 30.592 0 0 1 0-42.688z',
},
null,
-1
)
const _hoisted_3$89 = [_hoisted_2$8V]
function _sfc_render$51(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$aj, _hoisted_3$89)
}
var dArrowRight = /* @__PURE__ */ _export_sfc$2(_sfc_main$cG, [
['render', _sfc_render$51],
])
const _sfc_main$cF = defineComponent({
name: 'DCaret',
})
const _hoisted_1$ai = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8U = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm512 128 288 320H224l288-320zM224 576h576L512 896 224 576z',
},
null,
-1
)
const _hoisted_3$88 = [_hoisted_2$8U]
function _sfc_render$50(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$ai, _hoisted_3$88)
}
var dCaret = /* @__PURE__ */ _export_sfc$2(_sfc_main$cF, [
['render', _sfc_render$50],
])
const _sfc_main$cE = defineComponent({
name: 'DataAnalysis',
})
const _hoisted_1$ah = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8T = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm665.216 768 110.848 192h-73.856L591.36 768H433.024L322.176 960H248.32l110.848-192H160a32 32 0 0 1-32-32V192H64a32 32 0 0 1 0-64h896a32 32 0 1 1 0 64h-64v544a32 32 0 0 1-32 32H665.216zM832 192H192v512h640V192zM352 448a32 32 0 0 1 32 32v64a32 32 0 0 1-64 0v-64a32 32 0 0 1 32-32zm160-64a32 32 0 0 1 32 32v128a32 32 0 0 1-64 0V416a32 32 0 0 1 32-32zm160-64a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V352a32 32 0 0 1 32-32z',
},
null,
-1
)
const _hoisted_3$87 = [_hoisted_2$8T]
function _sfc_render$4$(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$ah, _hoisted_3$87)
}
var dataAnalysis = /* @__PURE__ */ _export_sfc$2(_sfc_main$cE, [
['render', _sfc_render$4$],
])
const _sfc_main$cD = defineComponent({
name: 'DataBoard',
})
const _hoisted_1$ag = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8S = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M32 128h960v64H32z',
},
null,
-1
)
const _hoisted_3$86 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M192 192v512h640V192H192zm-64-64h768v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V128z',
},
null,
-1
)
const _hoisted_4$4$ = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M322.176 960H248.32l144.64-250.56 55.424 32L322.176 960zm453.888 0h-73.856L576 741.44l55.424-32L776.064 960z',
},
null,
-1
)
const _hoisted_5$3V = [_hoisted_2$8S, _hoisted_3$86, _hoisted_4$4$]
function _sfc_render$4_(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$ag, _hoisted_5$3V)
}
var dataBoard = /* @__PURE__ */ _export_sfc$2(_sfc_main$cD, [
['render', _sfc_render$4_],
])
const _sfc_main$cC = defineComponent({
name: 'DataLine',
})
const _hoisted_1$af = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8R = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M359.168 768H160a32 32 0 0 1-32-32V192H64a32 32 0 0 1 0-64h896a32 32 0 1 1 0 64h-64v544a32 32 0 0 1-32 32H665.216l110.848 192h-73.856L591.36 768H433.024L322.176 960H248.32l110.848-192zM832 192H192v512h640V192zM342.656 534.656a32 32 0 1 1-45.312-45.312L444.992 341.76l125.44 94.08L679.04 300.032a32 32 0 1 1 49.92 39.936L581.632 524.224 451.008 426.24 342.656 534.592z',
},
null,
-1
)
const _hoisted_3$85 = [_hoisted_2$8R]
function _sfc_render$4Z(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$af, _hoisted_3$85)
}
var dataLine = /* @__PURE__ */ _export_sfc$2(_sfc_main$cC, [
['render', _sfc_render$4Z],
])
const _sfc_main$cB = defineComponent({
name: 'DeleteFilled',
})
const _hoisted_1$ae = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8Q = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M352 192V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64H96a32 32 0 0 1 0-64h256zm64 0h192v-64H416v64zM192 960a32 32 0 0 1-32-32V256h704v672a32 32 0 0 1-32 32H192zm224-192a32 32 0 0 0 32-32V416a32 32 0 0 0-64 0v320a32 32 0 0 0 32 32zm192 0a32 32 0 0 0 32-32V416a32 32 0 0 0-64 0v320a32 32 0 0 0 32 32z',
},
null,
-1
)
const _hoisted_3$84 = [_hoisted_2$8Q]
function _sfc_render$4Y(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$ae, _hoisted_3$84)
}
var deleteFilled = /* @__PURE__ */ _export_sfc$2(_sfc_main$cB, [
['render', _sfc_render$4Y],
])
const _sfc_main$cA = defineComponent({
name: 'DeleteLocation',
})
const _hoisted_1$ad = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8P = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M288 896h448q32 0 32 32t-32 32H288q-32 0-32-32t32-32z',
},
null,
-1
)
const _hoisted_3$83 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M800 416a288 288 0 1 0-576 0c0 118.144 94.528 272.128 288 456.576C705.472 688.128 800 534.144 800 416zM512 960C277.312 746.688 160 565.312 160 416a352 352 0 0 1 704 0c0 149.312-117.312 330.688-352 544z',
},
null,
-1
)
const _hoisted_4$4_ = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M384 384h256q32 0 32 32t-32 32H384q-32 0-32-32t32-32z',
},
null,
-1
)
const _hoisted_5$3U = [_hoisted_2$8P, _hoisted_3$83, _hoisted_4$4_]
function _sfc_render$4X(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$ad, _hoisted_5$3U)
}
var deleteLocation = /* @__PURE__ */ _export_sfc$2(_sfc_main$cA, [
['render', _sfc_render$4X],
])
const _sfc_main$cz = defineComponent({
name: 'Delete',
})
const _hoisted_1$ac = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8O = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M160 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32V256zm448-64v-64H416v64h192zM224 896h576V256H224v640zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32zm192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32z',
},
null,
-1
)
const _hoisted_3$82 = [_hoisted_2$8O]
function _sfc_render$4W(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$ac, _hoisted_3$82)
}
var _delete = /* @__PURE__ */ _export_sfc$2(_sfc_main$cz, [
['render', _sfc_render$4W],
])
const _sfc_main$cy = defineComponent({
name: 'Dessert',
})
const _hoisted_1$ab = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8N = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M128 416v-48a144 144 0 0 1 168.64-141.888 224.128 224.128 0 0 1 430.72 0A144 144 0 0 1 896 368v48a384 384 0 0 1-352 382.72V896h-64v-97.28A384 384 0 0 1 128 416zm287.104-32.064h193.792a143.808 143.808 0 0 1 58.88-132.736 160.064 160.064 0 0 0-311.552 0 143.808 143.808 0 0 1 58.88 132.8zm-72.896 0a72 72 0 1 0-140.48 0h140.48zm339.584 0h140.416a72 72 0 1 0-140.48 0zM512 736a320 320 0 0 0 318.4-288.064H193.6A320 320 0 0 0 512 736zM384 896.064h256a32 32 0 1 1 0 64H384a32 32 0 1 1 0-64z',
},
null,
-1
)
const _hoisted_3$81 = [_hoisted_2$8N]
function _sfc_render$4V(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$ab, _hoisted_3$81)
}
var dessert = /* @__PURE__ */ _export_sfc$2(_sfc_main$cy, [
['render', _sfc_render$4V],
])
const _sfc_main$cx = defineComponent({
name: 'Discount',
})
const _hoisted_1$aa = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8M = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M224 704h576V318.336L552.512 115.84a64 64 0 0 0-81.024 0L224 318.336V704zm0 64v128h576V768H224zM593.024 66.304l259.2 212.096A32 32 0 0 1 864 303.168V928a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32V303.168a32 32 0 0 1 11.712-24.768l259.2-212.096a128 128 0 0 1 162.112 0z',
},
null,
-1
)
const _hoisted_3$80 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 448a64 64 0 1 0 0-128 64 64 0 0 0 0 128zm0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256z',
},
null,
-1
)
const _hoisted_4$4Z = [_hoisted_2$8M, _hoisted_3$80]
function _sfc_render$4U(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$aa, _hoisted_4$4Z)
}
var discount = /* @__PURE__ */ _export_sfc$2(_sfc_main$cx, [
['render', _sfc_render$4U],
])
const _sfc_main$cw = defineComponent({
name: 'DishDot',
})
const _hoisted_1$a9 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8L = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm384.064 274.56.064-50.688A128 128 0 0 1 512.128 96c70.528 0 127.68 57.152 127.68 127.68v50.752A448.192 448.192 0 0 1 955.392 768H68.544A448.192 448.192 0 0 1 384 274.56zM96 832h832a32 32 0 1 1 0 64H96a32 32 0 1 1 0-64zm32-128h768a384 384 0 1 0-768 0zm447.808-448v-32.32a63.68 63.68 0 0 0-63.68-63.68 64 64 0 0 0-64 63.936V256h127.68z',
},
null,
-1
)
const _hoisted_3$7$ = [_hoisted_2$8L]
function _sfc_render$4T(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$a9, _hoisted_3$7$)
}
var dishDot = /* @__PURE__ */ _export_sfc$2(_sfc_main$cw, [
['render', _sfc_render$4T],
])
const _sfc_main$cv = defineComponent({
name: 'Dish',
})
const _hoisted_1$a8 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8K = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M480 257.152V192h-96a32 32 0 0 1 0-64h256a32 32 0 1 1 0 64h-96v65.152A448 448 0 0 1 955.52 768H68.48A448 448 0 0 1 480 257.152zM128 704h768a384 384 0 1 0-768 0zM96 832h832a32 32 0 1 1 0 64H96a32 32 0 1 1 0-64z',
},
null,
-1
)
const _hoisted_3$7_ = [_hoisted_2$8K]
function _sfc_render$4S(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$a8, _hoisted_3$7_)
}
var dish = /* @__PURE__ */ _export_sfc$2(_sfc_main$cv, [
['render', _sfc_render$4S],
])
const _sfc_main$cu = defineComponent({
name: 'DocumentAdd',
})
const _hoisted_1$a7 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8J = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M832 384H576V128H192v768h640V384zm-26.496-64L640 154.496V320h165.504zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm320 512V448h64v128h128v64H544v128h-64V640H352v-64h128z',
},
null,
-1
)
const _hoisted_3$7Z = [_hoisted_2$8J]
function _sfc_render$4R(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$a7, _hoisted_3$7Z)
}
var documentAdd = /* @__PURE__ */ _export_sfc$2(_sfc_main$cu, [
['render', _sfc_render$4R],
])
const _sfc_main$ct = defineComponent({
name: 'DocumentChecked',
})
const _hoisted_1$a6 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8I = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M805.504 320 640 154.496V320h165.504zM832 384H576V128H192v768h640V384zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm318.4 582.144 180.992-180.992L704.64 510.4 478.4 736.64 320 578.304l45.248-45.312L478.4 646.144z',
},
null,
-1
)
const _hoisted_3$7Y = [_hoisted_2$8I]
function _sfc_render$4Q(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$a6, _hoisted_3$7Y)
}
var documentChecked = /* @__PURE__ */ _export_sfc$2(_sfc_main$ct, [
['render', _sfc_render$4Q],
])
const _sfc_main$cs = defineComponent({
name: 'DocumentCopy',
})
const _hoisted_1$a5 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8H = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M128 320v576h576V320H128zm-32-64h640a32 32 0 0 1 32 32v640a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V288a32 32 0 0 1 32-32zM960 96v704a32 32 0 0 1-32 32h-96v-64h64V128H384v64h-64V96a32 32 0 0 1 32-32h576a32 32 0 0 1 32 32zM256 672h320v64H256v-64zm0-192h320v64H256v-64z',
},
null,
-1
)
const _hoisted_3$7X = [_hoisted_2$8H]
function _sfc_render$4P(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$a5, _hoisted_3$7X)
}
var documentCopy = /* @__PURE__ */ _export_sfc$2(_sfc_main$cs, [
['render', _sfc_render$4P],
])
const _sfc_main$cr = defineComponent({
name: 'DocumentDelete',
})
const _hoisted_1$a4 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8G = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M805.504 320 640 154.496V320h165.504zM832 384H576V128H192v768h640V384zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm308.992 546.304-90.496-90.624 45.248-45.248 90.56 90.496 90.496-90.432 45.248 45.248-90.496 90.56 90.496 90.496-45.248 45.248-90.496-90.496-90.56 90.496-45.248-45.248 90.496-90.496z',
},
null,
-1
)
const _hoisted_3$7W = [_hoisted_2$8G]
function _sfc_render$4O(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$a4, _hoisted_3$7W)
}
var documentDelete = /* @__PURE__ */ _export_sfc$2(_sfc_main$cr, [
['render', _sfc_render$4O],
])
const _sfc_main$cq = defineComponent({
name: 'DocumentRemove',
})
const _hoisted_1$a3 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8F = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M805.504 320 640 154.496V320h165.504zM832 384H576V128H192v768h640V384zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm192 512h320v64H352v-64z',
},
null,
-1
)
const _hoisted_3$7V = [_hoisted_2$8F]
function _sfc_render$4N(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$a3, _hoisted_3$7V)
}
var documentRemove = /* @__PURE__ */ _export_sfc$2(_sfc_main$cq, [
['render', _sfc_render$4N],
])
const _sfc_main$cp = defineComponent({
name: 'Document',
})
const _hoisted_1$a2 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8E = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M832 384H576V128H192v768h640V384zm-26.496-64L640 154.496V320h165.504zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm160 448h384v64H320v-64zm0-192h160v64H320v-64zm0 384h384v64H320v-64z',
},
null,
-1
)
const _hoisted_3$7U = [_hoisted_2$8E]
function _sfc_render$4M(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$a2, _hoisted_3$7U)
}
var document$4 = /* @__PURE__ */ _export_sfc$2(_sfc_main$cp, [
['render', _sfc_render$4M],
])
const _sfc_main$co = defineComponent({
name: 'Download',
})
const _hoisted_1$a1 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8D = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64zm384-253.696 236.288-236.352 45.248 45.248L508.8 704 192 387.2l45.248-45.248L480 584.704V128h64v450.304z',
},
null,
-1
)
const _hoisted_3$7T = [_hoisted_2$8D]
function _sfc_render$4L(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$a1, _hoisted_3$7T)
}
var download$1 = /* @__PURE__ */ _export_sfc$2(_sfc_main$co, [
['render', _sfc_render$4L],
])
const _sfc_main$cn = defineComponent({
name: 'Drizzling',
})
const _hoisted_1$a0 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8C = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm739.328 291.328-35.2-6.592-12.8-33.408a192.064 192.064 0 0 0-365.952 23.232l-9.92 40.896-41.472 7.04a176.32 176.32 0 0 0-146.24 173.568c0 97.28 78.72 175.936 175.808 175.936h400a192 192 0 0 0 35.776-380.672zM959.552 480a256 256 0 0 1-256 256h-400A239.808 239.808 0 0 1 63.744 496.192a240.32 240.32 0 0 1 199.488-236.8 256.128 256.128 0 0 1 487.872-30.976A256.064 256.064 0 0 1 959.552 480zM288 800h64v64h-64v-64zm192 0h64v64h-64v-64zm-96 96h64v64h-64v-64zm192 0h64v64h-64v-64zm96-96h64v64h-64v-64z',
},
null,
-1
)
const _hoisted_3$7S = [_hoisted_2$8C]
function _sfc_render$4K(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$a0, _hoisted_3$7S)
}
var drizzling = /* @__PURE__ */ _export_sfc$2(_sfc_main$cn, [
['render', _sfc_render$4K],
])
const _sfc_main$cm = defineComponent({
name: 'EditPen',
})
const _hoisted_1$9$ = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8B = /* @__PURE__ */ createElementVNode(
'path',
{
d: 'm199.04 672.64 193.984 112 224-387.968-193.92-112-224 388.032zm-23.872 60.16 32.896 148.288 144.896-45.696L175.168 732.8zM455.04 229.248l193.92 112 56.704-98.112-193.984-112-56.64 98.112zM104.32 708.8l384-665.024 304.768 175.936L409.152 884.8h.064l-248.448 78.336L104.32 708.8zm384 254.272v-64h448v64h-448z',
fill: 'currentColor',
},
null,
-1
)
const _hoisted_3$7R = [_hoisted_2$8B]
function _sfc_render$4J(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9$, _hoisted_3$7R)
}
var editPen = /* @__PURE__ */ _export_sfc$2(_sfc_main$cm, [
['render', _sfc_render$4J],
])
const _sfc_main$cl = defineComponent({
name: 'Edit',
})
const _hoisted_1$9_ = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8A = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M832 512a32 32 0 1 1 64 0v352a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h352a32 32 0 0 1 0 64H192v640h640V512z',
},
null,
-1
)
const _hoisted_3$7Q = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm469.952 554.24 52.8-7.552L847.104 222.4a32 32 0 1 0-45.248-45.248L477.44 501.44l-7.552 52.8zm422.4-422.4a96 96 0 0 1 0 135.808l-331.84 331.84a32 32 0 0 1-18.112 9.088L436.8 623.68a32 32 0 0 1-36.224-36.224l15.104-105.6a32 32 0 0 1 9.024-18.112l331.904-331.84a96 96 0 0 1 135.744 0z',
},
null,
-1
)
const _hoisted_4$4Y = [_hoisted_2$8A, _hoisted_3$7Q]
function _sfc_render$4I(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9_, _hoisted_4$4Y)
}
var edit = /* @__PURE__ */ _export_sfc$2(_sfc_main$cl, [
['render', _sfc_render$4I],
])
const _sfc_main$ck = defineComponent({
name: 'ElemeFilled',
})
const _hoisted_1$9Z = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8z = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M176 64h672c61.824 0 112 50.176 112 112v672a112 112 0 0 1-112 112H176A112 112 0 0 1 64 848V176c0-61.824 50.176-112 112-112zm150.528 173.568c-152.896 99.968-196.544 304.064-97.408 456.96a330.688 330.688 0 0 0 456.96 96.64c9.216-5.888 17.6-11.776 25.152-18.56a18.24 18.24 0 0 0 4.224-24.32L700.352 724.8a47.552 47.552 0 0 0-65.536-14.272A234.56 234.56 0 0 1 310.592 641.6C240 533.248 271.104 387.968 379.456 316.48a234.304 234.304 0 0 1 276.352 15.168c1.664.832 2.56 2.56 3.392 4.224 5.888 8.384 3.328 19.328-5.12 25.216L456.832 489.6a47.552 47.552 0 0 0-14.336 65.472l16 24.384c5.888 8.384 16.768 10.88 25.216 5.056l308.224-199.936a19.584 19.584 0 0 0 6.72-23.488v-.896c-4.992-9.216-10.048-17.6-15.104-26.88-99.968-151.168-304.064-194.88-456.96-95.744zM786.88 504.704l-62.208 40.32c-8.32 5.888-10.88 16.768-4.992 25.216L760 632.32c5.888 8.448 16.768 11.008 25.152 5.12l31.104-20.16a55.36 55.36 0 0 0 16-76.48l-20.224-31.04a19.52 19.52 0 0 0-25.152-5.12z',
},
null,
-1
)
const _hoisted_3$7P = [_hoisted_2$8z]
function _sfc_render$4H(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9Z, _hoisted_3$7P)
}
var elemeFilled = /* @__PURE__ */ _export_sfc$2(_sfc_main$ck, [
['render', _sfc_render$4H],
])
const _sfc_main$cj = defineComponent({
name: 'Eleme',
})
const _hoisted_1$9Y = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8y = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M300.032 188.8c174.72-113.28 408-63.36 522.24 109.44 5.76 10.56 11.52 20.16 17.28 30.72v.96a22.4 22.4 0 0 1-7.68 26.88l-352.32 228.48c-9.6 6.72-22.08 3.84-28.8-5.76l-18.24-27.84a54.336 54.336 0 0 1 16.32-74.88l225.6-146.88c9.6-6.72 12.48-19.2 5.76-28.8-.96-1.92-1.92-3.84-3.84-4.8a267.84 267.84 0 0 0-315.84-17.28c-123.84 81.6-159.36 247.68-78.72 371.52a268.096 268.096 0 0 0 370.56 78.72 54.336 54.336 0 0 1 74.88 16.32l17.28 26.88c5.76 9.6 3.84 21.12-4.8 27.84-8.64 7.68-18.24 14.4-28.8 21.12a377.92 377.92 0 0 1-522.24-110.4c-113.28-174.72-63.36-408 111.36-522.24zm526.08 305.28a22.336 22.336 0 0 1 28.8 5.76l23.04 35.52a63.232 63.232 0 0 1-18.24 87.36l-35.52 23.04c-9.6 6.72-22.08 3.84-28.8-5.76l-46.08-71.04c-6.72-9.6-3.84-22.08 5.76-28.8l71.04-46.08z',
},
null,
-1
)
const _hoisted_3$7O = [_hoisted_2$8y]
function _sfc_render$4G(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9Y, _hoisted_3$7O)
}
var eleme = /* @__PURE__ */ _export_sfc$2(_sfc_main$cj, [
['render', _sfc_render$4G],
])
const _sfc_main$ci = defineComponent({
name: 'ElementPlus',
})
const _hoisted_1$9X = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8x = /* @__PURE__ */ createElementVNode(
'path',
{
d: 'M839.7 734.7c0 33.3-17.9 41-17.9 41S519.7 949.8 499.2 960c-10.2 5.1-20.5 5.1-30.7 0 0 0-314.9-184.3-325.1-192-5.1-5.1-10.2-12.8-12.8-20.5V368.6c0-17.9 20.5-28.2 20.5-28.2L466 158.6c12.8-5.1 25.6-5.1 38.4 0 0 0 279 161.3 309.8 179.2 17.9 7.7 28.2 25.6 25.6 46.1-.1-5-.1 317.5-.1 350.8zM714.2 371.2c-64-35.8-217.6-125.4-217.6-125.4-7.7-5.1-20.5-5.1-30.7 0L217.6 389.1s-17.9 10.2-17.9 23v297c0 5.1 5.1 12.8 7.7 17.9 7.7 5.1 256 148.5 256 148.5 7.7 5.1 17.9 5.1 25.6 0 15.4-7.7 250.9-145.9 250.9-145.9s12.8-5.1 12.8-30.7v-74.2l-276.5 169v-64c0-17.9 7.7-30.7 20.5-46.1L745 535c5.1-7.7 10.2-20.5 10.2-30.7v-66.6l-279 169v-69.1c0-15.4 5.1-30.7 17.9-38.4l220.1-128zM919 135.7c0-5.1-5.1-7.7-7.7-7.7h-58.9V66.6c0-5.1-5.1-5.1-10.2-5.1l-30.7 5.1c-5.1 0-5.1 2.6-5.1 5.1V128h-56.3c-5.1 0-5.1 5.1-7.7 5.1v38.4h69.1v64c0 5.1 5.1 5.1 10.2 5.1l30.7-5.1c5.1 0 5.1-2.6 5.1-5.1v-56.3h64l-2.5-38.4z',
fill: 'currentColor',
},
null,
-1
)
const _hoisted_3$7N = [_hoisted_2$8x]
function _sfc_render$4F(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9X, _hoisted_3$7N)
}
var elementPlus = /* @__PURE__ */ _export_sfc$2(_sfc_main$ci, [
['render', _sfc_render$4F],
])
const _sfc_main$ch = defineComponent({
name: 'Expand',
})
const _hoisted_1$9W = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8w = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M128 192h768v128H128V192zm0 256h512v128H128V448zm0 256h768v128H128V704zm576-352 192 160-192 128V352z',
},
null,
-1
)
const _hoisted_3$7M = [_hoisted_2$8w]
function _sfc_render$4E(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9W, _hoisted_3$7M)
}
var expand = /* @__PURE__ */ _export_sfc$2(_sfc_main$ch, [
['render', _sfc_render$4E],
])
const _sfc_main$cg = defineComponent({
name: 'Failed',
})
const _hoisted_1$9V = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8v = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm557.248 608 135.744-135.744-45.248-45.248-135.68 135.744-135.808-135.68-45.248 45.184L466.752 608l-135.68 135.68 45.184 45.312L512 653.248l135.744 135.744 45.248-45.248L557.312 608zM704 192h160v736H160V192h160v64h384v-64zm-320 0V96h256v96H384z',
},
null,
-1
)
const _hoisted_3$7L = [_hoisted_2$8v]
function _sfc_render$4D(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9V, _hoisted_3$7L)
}
var failed = /* @__PURE__ */ _export_sfc$2(_sfc_main$cg, [
['render', _sfc_render$4D],
])
const _sfc_main$cf = defineComponent({
name: 'Female',
})
const _hoisted_1$9U = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8u = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 640a256 256 0 1 0 0-512 256 256 0 0 0 0 512zm0 64a320 320 0 1 1 0-640 320 320 0 0 1 0 640z',
},
null,
-1
)
const _hoisted_3$7K = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 640q32 0 32 32v256q0 32-32 32t-32-32V672q0-32 32-32z',
},
null,
-1
)
const _hoisted_4$4X = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M352 800h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32z',
},
null,
-1
)
const _hoisted_5$3T = [_hoisted_2$8u, _hoisted_3$7K, _hoisted_4$4X]
function _sfc_render$4C(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9U, _hoisted_5$3T)
}
var female = /* @__PURE__ */ _export_sfc$2(_sfc_main$cf, [
['render', _sfc_render$4C],
])
const _sfc_main$ce = defineComponent({
name: 'Files',
})
const _hoisted_1$9T = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8t = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M128 384v448h768V384H128zm-32-64h832a32 32 0 0 1 32 32v512a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V352a32 32 0 0 1 32-32zm64-128h704v64H160zm96-128h512v64H256z',
},
null,
-1
)
const _hoisted_3$7J = [_hoisted_2$8t]
function _sfc_render$4B(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9T, _hoisted_3$7J)
}
var files$1 = /* @__PURE__ */ _export_sfc$2(_sfc_main$ce, [
['render', _sfc_render$4B],
])
const _sfc_main$cd = defineComponent({
name: 'Film',
})
const _hoisted_1$9S = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8s = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M160 160v704h704V160H160zm-32-64h768a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H128a32 32 0 0 1-32-32V128a32 32 0 0 1 32-32z',
},
null,
-1
)
const _hoisted_3$7I = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M320 288V128h64v352h256V128h64v160h160v64H704v128h160v64H704v128h160v64H704v160h-64V544H384v352h-64V736H128v-64h192V544H128v-64h192V352H128v-64h192z',
},
null,
-1
)
const _hoisted_4$4W = [_hoisted_2$8s, _hoisted_3$7I]
function _sfc_render$4A(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9S, _hoisted_4$4W)
}
var film = /* @__PURE__ */ _export_sfc$2(_sfc_main$cd, [
['render', _sfc_render$4A],
])
const _sfc_main$cc = defineComponent({
name: 'Filter',
})
const _hoisted_1$9R = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8r = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M384 523.392V928a32 32 0 0 0 46.336 28.608l192-96A32 32 0 0 0 640 832V523.392l280.768-343.104a32 32 0 1 0-49.536-40.576l-288 352A32 32 0 0 0 576 512v300.224l-128 64V512a32 32 0 0 0-7.232-20.288L195.52 192H704a32 32 0 1 0 0-64H128a32 32 0 0 0-24.768 52.288L384 523.392z',
},
null,
-1
)
const _hoisted_3$7H = [_hoisted_2$8r]
function _sfc_render$4z(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9R, _hoisted_3$7H)
}
var filter$3 = /* @__PURE__ */ _export_sfc$2(_sfc_main$cc, [
['render', _sfc_render$4z],
])
const _sfc_main$cb = defineComponent({
name: 'Finished',
})
const _hoisted_1$9Q = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8q = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M280.768 753.728 691.456 167.04a32 32 0 1 1 52.416 36.672L314.24 817.472a32 32 0 0 1-45.44 7.296l-230.4-172.8a32 32 0 0 1 38.4-51.2l203.968 152.96zM736 448a32 32 0 1 1 0-64h192a32 32 0 1 1 0 64H736zM608 640a32 32 0 0 1 0-64h319.936a32 32 0 1 1 0 64H608zM480 832a32 32 0 1 1 0-64h447.936a32 32 0 1 1 0 64H480z',
},
null,
-1
)
const _hoisted_3$7G = [_hoisted_2$8q]
function _sfc_render$4y(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9Q, _hoisted_3$7G)
}
var finished = /* @__PURE__ */ _export_sfc$2(_sfc_main$cb, [
['render', _sfc_render$4y],
])
const _sfc_main$ca = defineComponent({
name: 'FirstAidKit',
})
const _hoisted_1$9P = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8p = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M192 256a64 64 0 0 0-64 64v448a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64V320a64 64 0 0 0-64-64H192zm0-64h640a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128H192A128 128 0 0 1 64 768V320a128 128 0 0 1 128-128z',
},
null,
-1
)
const _hoisted_3$7F = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M544 512h96a32 32 0 0 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64h96v-96a32 32 0 0 1 64 0v96zM352 128v64h320v-64H352zm-32-64h384a32 32 0 0 1 32 32v128a32 32 0 0 1-32 32H320a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32z',
},
null,
-1
)
const _hoisted_4$4V = [_hoisted_2$8p, _hoisted_3$7F]
function _sfc_render$4x(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9P, _hoisted_4$4V)
}
var firstAidKit = /* @__PURE__ */ _export_sfc$2(_sfc_main$ca, [
['render', _sfc_render$4x],
])
const _sfc_main$c9 = defineComponent({
name: 'Flag',
})
const _hoisted_1$9O = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8o = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M288 128h608L736 384l160 256H288v320h-96V64h96v64z',
},
null,
-1
)
const _hoisted_3$7E = [_hoisted_2$8o]
function _sfc_render$4w(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9O, _hoisted_3$7E)
}
var flag = /* @__PURE__ */ _export_sfc$2(_sfc_main$c9, [
['render', _sfc_render$4w],
])
const _sfc_main$c8 = defineComponent({
name: 'Fold',
})
const _hoisted_1$9N = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8n = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M896 192H128v128h768V192zm0 256H384v128h512V448zm0 256H128v128h768V704zM320 384 128 512l192 128V384z',
},
null,
-1
)
const _hoisted_3$7D = [_hoisted_2$8n]
function _sfc_render$4v(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9N, _hoisted_3$7D)
}
var fold = /* @__PURE__ */ _export_sfc$2(_sfc_main$c8, [
['render', _sfc_render$4v],
])
const _sfc_main$c7 = defineComponent({
name: 'FolderAdd',
})
const _hoisted_1$9M = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8m = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M128 192v640h768V320H485.76L357.504 192H128zm-32-64h287.872l128.384 128H928a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32zm384 416V416h64v128h128v64H544v128h-64V608H352v-64h128z',
},
null,
-1
)
const _hoisted_3$7C = [_hoisted_2$8m]
function _sfc_render$4u(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9M, _hoisted_3$7C)
}
var folderAdd = /* @__PURE__ */ _export_sfc$2(_sfc_main$c7, [
['render', _sfc_render$4u],
])
const _sfc_main$c6 = defineComponent({
name: 'FolderChecked',
})
const _hoisted_1$9L = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8l = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M128 192v640h768V320H485.76L357.504 192H128zm-32-64h287.872l128.384 128H928a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32zm414.08 502.144 180.992-180.992L736.32 494.4 510.08 720.64l-158.4-158.336 45.248-45.312L510.08 630.144z',
},
null,
-1
)
const _hoisted_3$7B = [_hoisted_2$8l]
function _sfc_render$4t(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9L, _hoisted_3$7B)
}
var folderChecked = /* @__PURE__ */ _export_sfc$2(_sfc_main$c6, [
['render', _sfc_render$4t],
])
const _sfc_main$c5 = defineComponent({
name: 'FolderDelete',
})
const _hoisted_1$9K = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8k = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M128 192v640h768V320H485.76L357.504 192H128zm-32-64h287.872l128.384 128H928a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32zm370.752 448-90.496-90.496 45.248-45.248L512 530.752l90.496-90.496 45.248 45.248L557.248 576l90.496 90.496-45.248 45.248L512 621.248l-90.496 90.496-45.248-45.248L466.752 576z',
},
null,
-1
)
const _hoisted_3$7A = [_hoisted_2$8k]
function _sfc_render$4s(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9K, _hoisted_3$7A)
}
var folderDelete = /* @__PURE__ */ _export_sfc$2(_sfc_main$c5, [
['render', _sfc_render$4s],
])
const _sfc_main$c4 = defineComponent({
name: 'FolderOpened',
})
const _hoisted_1$9J = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8j = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M878.08 448H241.92l-96 384h636.16l96-384zM832 384v-64H485.76L357.504 192H128v448l57.92-231.744A32 32 0 0 1 216.96 384H832zm-24.96 512H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h287.872l128.384 128H864a32 32 0 0 1 32 32v96h23.04a32 32 0 0 1 31.04 39.744l-112 448A32 32 0 0 1 807.04 896z',
},
null,
-1
)
const _hoisted_3$7z = [_hoisted_2$8j]
function _sfc_render$4r(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9J, _hoisted_3$7z)
}
var folderOpened = /* @__PURE__ */ _export_sfc$2(_sfc_main$c4, [
['render', _sfc_render$4r],
])
const _sfc_main$c3 = defineComponent({
name: 'FolderRemove',
})
const _hoisted_1$9I = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8i = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M128 192v640h768V320H485.76L357.504 192H128zm-32-64h287.872l128.384 128H928a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32zm256 416h320v64H352v-64z',
},
null,
-1
)
const _hoisted_3$7y = [_hoisted_2$8i]
function _sfc_render$4q(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9I, _hoisted_3$7y)
}
var folderRemove = /* @__PURE__ */ _export_sfc$2(_sfc_main$c3, [
['render', _sfc_render$4q],
])
const _sfc_main$c2 = defineComponent({
name: 'Folder',
})
const _hoisted_1$9H = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8h = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M128 192v640h768V320H485.76L357.504 192H128zm-32-64h287.872l128.384 128H928a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32z',
},
null,
-1
)
const _hoisted_3$7x = [_hoisted_2$8h]
function _sfc_render$4p(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9H, _hoisted_3$7x)
}
var folder = /* @__PURE__ */ _export_sfc$2(_sfc_main$c2, [
['render', _sfc_render$4p],
])
const _sfc_main$c1 = defineComponent({
name: 'Food',
})
const _hoisted_1$9G = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8g = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M128 352.576V352a288 288 0 0 1 491.072-204.224 192 192 0 0 1 274.24 204.48 64 64 0 0 1 57.216 74.24C921.6 600.512 850.048 710.656 736 756.992V800a96 96 0 0 1-96 96H384a96 96 0 0 1-96-96v-43.008c-114.048-46.336-185.6-156.48-214.528-330.496A64 64 0 0 1 128 352.64zm64-.576h64a160 160 0 0 1 320 0h64a224 224 0 0 0-448 0zm128 0h192a96 96 0 0 0-192 0zm439.424 0h68.544A128.256 128.256 0 0 0 704 192c-15.36 0-29.952 2.688-43.52 7.616 11.328 18.176 20.672 37.76 27.84 58.304A64.128 64.128 0 0 1 759.424 352zM672 768H352v32a32 32 0 0 0 32 32h256a32 32 0 0 0 32-32v-32zm-342.528-64h365.056c101.504-32.64 165.76-124.928 192.896-288H136.576c27.136 163.072 91.392 255.36 192.896 288z',
},
null,
-1
)
const _hoisted_3$7w = [_hoisted_2$8g]
function _sfc_render$4o(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9G, _hoisted_3$7w)
}
var food = /* @__PURE__ */ _export_sfc$2(_sfc_main$c1, [
['render', _sfc_render$4o],
])
const _sfc_main$c0 = defineComponent({
name: 'Football',
})
const _hoisted_1$9F = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8f = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 960a448 448 0 1 1 0-896 448 448 0 0 1 0 896zm0-64a384 384 0 1 0 0-768 384 384 0 0 0 0 768z',
},
null,
-1
)
const _hoisted_3$7v = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M186.816 268.288c16-16.384 31.616-31.744 46.976-46.08 17.472 30.656 39.808 58.112 65.984 81.28l-32.512 56.448a385.984 385.984 0 0 1-80.448-91.648zm653.696-5.312a385.92 385.92 0 0 1-83.776 96.96l-32.512-56.384a322.923 322.923 0 0 0 68.48-85.76c15.552 14.08 31.488 29.12 47.808 45.184zM465.984 445.248l11.136-63.104a323.584 323.584 0 0 0 69.76 0l11.136 63.104a387.968 387.968 0 0 1-92.032 0zm-62.72-12.8A381.824 381.824 0 0 1 320 396.544l32-55.424a319.885 319.885 0 0 0 62.464 27.712l-11.2 63.488zm300.8-35.84a381.824 381.824 0 0 1-83.328 35.84l-11.2-63.552A319.885 319.885 0 0 0 672 341.184l32 55.424zm-520.768 364.8a385.92 385.92 0 0 1 83.968-97.28l32.512 56.32c-26.88 23.936-49.856 52.352-67.52 84.032-16-13.44-32.32-27.712-48.96-43.072zm657.536.128a1442.759 1442.759 0 0 1-49.024 43.072 321.408 321.408 0 0 0-67.584-84.16l32.512-56.32c33.216 27.456 61.696 60.352 84.096 97.408zM465.92 578.752a387.968 387.968 0 0 1 92.032 0l-11.136 63.104a323.584 323.584 0 0 0-69.76 0l-11.136-63.104zm-62.72 12.8 11.2 63.552a319.885 319.885 0 0 0-62.464 27.712L320 627.392a381.824 381.824 0 0 1 83.264-35.84zm300.8 35.84-32 55.424a318.272 318.272 0 0 0-62.528-27.712l11.2-63.488c29.44 8.64 57.28 20.736 83.264 35.776z',
},
null,
-1
)
const _hoisted_4$4U = [_hoisted_2$8f, _hoisted_3$7v]
function _sfc_render$4n(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9F, _hoisted_4$4U)
}
var football = /* @__PURE__ */ _export_sfc$2(_sfc_main$c0, [
['render', _sfc_render$4n],
])
const _sfc_main$b$ = defineComponent({
name: 'ForkSpoon',
})
const _hoisted_1$9E = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8e = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M256 410.304V96a32 32 0 0 1 64 0v314.304a96 96 0 0 0 64-90.56V96a32 32 0 0 1 64 0v223.744a160 160 0 0 1-128 156.8V928a32 32 0 1 1-64 0V476.544a160 160 0 0 1-128-156.8V96a32 32 0 0 1 64 0v223.744a96 96 0 0 0 64 90.56zM672 572.48C581.184 552.128 512 446.848 512 320c0-141.44 85.952-256 192-256s192 114.56 192 256c0 126.848-69.184 232.128-160 252.48V928a32 32 0 1 1-64 0V572.48zM704 512c66.048 0 128-82.56 128-192s-61.952-192-128-192-128 82.56-128 192 61.952 192 128 192z',
},
null,
-1
)
const _hoisted_3$7u = [_hoisted_2$8e]
function _sfc_render$4m(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9E, _hoisted_3$7u)
}
var forkSpoon = /* @__PURE__ */ _export_sfc$2(_sfc_main$b$, [
['render', _sfc_render$4m],
])
const _sfc_main$b_ = defineComponent({
name: 'Fries',
})
const _hoisted_1$9D = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8d = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M608 224v-64a32 32 0 0 0-64 0v336h26.88A64 64 0 0 0 608 484.096V224zm101.12 160A64 64 0 0 0 672 395.904V384h64V224a32 32 0 1 0-64 0v160h37.12zm74.88 0a92.928 92.928 0 0 1 91.328 110.08l-60.672 323.584A96 96 0 0 1 720.32 896H303.68a96 96 0 0 1-94.336-78.336L148.672 494.08A92.928 92.928 0 0 1 240 384h-16V224a96 96 0 0 1 188.608-25.28A95.744 95.744 0 0 1 480 197.44V160a96 96 0 0 1 188.608-25.28A96 96 0 0 1 800 224v160h-16zM670.784 512a128 128 0 0 1-99.904 48H453.12a128 128 0 0 1-99.84-48H352v-1.536a128.128 128.128 0 0 1-9.984-14.976L314.88 448H240a28.928 28.928 0 0 0-28.48 34.304L241.088 640h541.824l29.568-157.696A28.928 28.928 0 0 0 784 448h-74.88l-27.136 47.488A132.405 132.405 0 0 1 672 510.464V512h-1.216zM480 288a32 32 0 0 0-64 0v196.096A64 64 0 0 0 453.12 496H480V288zm-128 96V224a32 32 0 0 0-64 0v160h64-37.12A64 64 0 0 1 352 395.904zm-98.88 320 19.072 101.888A32 32 0 0 0 303.68 832h416.64a32 32 0 0 0 31.488-26.112L770.88 704H253.12z',
},
null,
-1
)
const _hoisted_3$7t = [_hoisted_2$8d]
function _sfc_render$4l(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9D, _hoisted_3$7t)
}
var fries = /* @__PURE__ */ _export_sfc$2(_sfc_main$b_, [
['render', _sfc_render$4l],
])
const _sfc_main$bZ = defineComponent({
name: 'FullScreen',
})
const _hoisted_1$9C = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8c = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm160 96.064 192 .192a32 32 0 0 1 0 64l-192-.192V352a32 32 0 0 1-64 0V96h64v.064zm0 831.872V928H96V672a32 32 0 1 1 64 0v191.936l192-.192a32 32 0 1 1 0 64l-192 .192zM864 96.064V96h64v256a32 32 0 1 1-64 0V160.064l-192 .192a32 32 0 1 1 0-64l192-.192zm0 831.872-192-.192a32 32 0 0 1 0-64l192 .192V672a32 32 0 1 1 64 0v256h-64v-.064z',
},
null,
-1
)
const _hoisted_3$7s = [_hoisted_2$8c]
function _sfc_render$4k(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9C, _hoisted_3$7s)
}
var fullScreen = /* @__PURE__ */ _export_sfc$2(_sfc_main$bZ, [
['render', _sfc_render$4k],
])
const _sfc_main$bY = defineComponent({
name: 'GobletFull',
})
const _hoisted_1$9B = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8b = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M256 320h512c0-78.592-12.608-142.4-36.928-192h-434.24C269.504 192.384 256 256.256 256 320zm503.936 64H264.064a256.128 256.128 0 0 0 495.872 0zM544 638.4V896h96a32 32 0 1 1 0 64H384a32 32 0 1 1 0-64h96V638.4A320 320 0 0 1 192 320c0-85.632 21.312-170.944 64-256h512c42.688 64.32 64 149.632 64 256a320 320 0 0 1-288 318.4z',
},
null,
-1
)
const _hoisted_3$7r = [_hoisted_2$8b]
function _sfc_render$4j(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9B, _hoisted_3$7r)
}
var gobletFull = /* @__PURE__ */ _export_sfc$2(_sfc_main$bY, [
['render', _sfc_render$4j],
])
const _sfc_main$bX = defineComponent({
name: 'GobletSquareFull',
})
const _hoisted_1$9A = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$8a = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M256 270.912c10.048 6.72 22.464 14.912 28.992 18.624a220.16 220.16 0 0 0 114.752 30.72c30.592 0 49.408-9.472 91.072-41.152l.64-.448c52.928-40.32 82.368-55.04 132.288-54.656 55.552.448 99.584 20.8 142.72 57.408l1.536 1.28V128H256v142.912zm.96 76.288C266.368 482.176 346.88 575.872 512 576c157.44.064 237.952-85.056 253.248-209.984a952.32 952.32 0 0 1-40.192-35.712c-32.704-27.776-63.36-41.92-101.888-42.24-31.552-.256-50.624 9.28-93.12 41.6l-.576.448c-52.096 39.616-81.024 54.208-129.792 54.208-54.784 0-100.48-13.376-142.784-37.056zM480 638.848C250.624 623.424 192 442.496 192 319.68V96a32 32 0 0 1 32-32h576a32 32 0 0 1 32 32v224c0 122.816-58.624 303.68-288 318.912V896h96a32 32 0 1 1 0 64H384a32 32 0 1 1 0-64h96V638.848z',
},
null,
-1
)
const _hoisted_3$7q = [_hoisted_2$8a]
function _sfc_render$4i(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9A, _hoisted_3$7q)
}
var gobletSquareFull = /* @__PURE__ */ _export_sfc$2(_sfc_main$bX, [
['render', _sfc_render$4i],
])
const _sfc_main$bW = defineComponent({
name: 'GobletSquare',
})
const _hoisted_1$9z = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$89 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M544 638.912V896h96a32 32 0 1 1 0 64H384a32 32 0 1 1 0-64h96V638.848C250.624 623.424 192 442.496 192 319.68V96a32 32 0 0 1 32-32h576a32 32 0 0 1 32 32v224c0 122.816-58.624 303.68-288 318.912zM256 319.68c0 149.568 80 256.192 256 256.256C688.128 576 768 469.568 768 320V128H256v191.68z',
},
null,
-1
)
const _hoisted_3$7p = [_hoisted_2$89]
function _sfc_render$4h(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9z, _hoisted_3$7p)
}
var gobletSquare = /* @__PURE__ */ _export_sfc$2(_sfc_main$bW, [
['render', _sfc_render$4h],
])
const _sfc_main$bV = defineComponent({
name: 'Goblet',
})
const _hoisted_1$9y = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$88 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M544 638.4V896h96a32 32 0 1 1 0 64H384a32 32 0 1 1 0-64h96V638.4A320 320 0 0 1 192 320c0-85.632 21.312-170.944 64-256h512c42.688 64.32 64 149.632 64 256a320 320 0 0 1-288 318.4zM256 320a256 256 0 1 0 512 0c0-78.592-12.608-142.4-36.928-192h-434.24C269.504 192.384 256 256.256 256 320z',
},
null,
-1
)
const _hoisted_3$7o = [_hoisted_2$88]
function _sfc_render$4g(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9y, _hoisted_3$7o)
}
var goblet = /* @__PURE__ */ _export_sfc$2(_sfc_main$bV, [
['render', _sfc_render$4g],
])
const _sfc_main$bU = defineComponent({
name: 'GoodsFilled',
})
const _hoisted_1$9x = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$87 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M192 352h640l64 544H128l64-544zm128 224h64V448h-64v128zm320 0h64V448h-64v128zM384 288h-64a192 192 0 1 1 384 0h-64a128 128 0 1 0-256 0z',
},
null,
-1
)
const _hoisted_3$7n = [_hoisted_2$87]
function _sfc_render$4f(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9x, _hoisted_3$7n)
}
var goodsFilled = /* @__PURE__ */ _export_sfc$2(_sfc_main$bU, [
['render', _sfc_render$4f],
])
const _sfc_main$bT = defineComponent({
name: 'Goods',
})
const _hoisted_1$9w = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$86 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M320 288v-22.336C320 154.688 405.504 64 512 64s192 90.688 192 201.664v22.4h131.072a32 32 0 0 1 31.808 28.8l57.6 576a32 32 0 0 1-31.808 35.2H131.328a32 32 0 0 1-31.808-35.2l57.6-576a32 32 0 0 1 31.808-28.8H320zm64 0h256v-22.336C640 189.248 582.272 128 512 128c-70.272 0-128 61.248-128 137.664v22.4zm-64 64H217.92l-51.2 512h690.56l-51.264-512H704v96a32 32 0 1 1-64 0v-96H384v96a32 32 0 0 1-64 0v-96z',
},
null,
-1
)
const _hoisted_3$7m = [_hoisted_2$86]
function _sfc_render$4e(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9w, _hoisted_3$7m)
}
var goods = /* @__PURE__ */ _export_sfc$2(_sfc_main$bT, [
['render', _sfc_render$4e],
])
const _sfc_main$bS = defineComponent({
name: 'Grape',
})
const _hoisted_1$9v = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$85 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M544 195.2a160 160 0 0 1 96 60.8 160 160 0 1 1 146.24 254.976 160 160 0 0 1-128 224 160 160 0 1 1-292.48 0 160 160 0 0 1-128-224A160 160 0 1 1 384 256a160 160 0 0 1 96-60.8V128h-64a32 32 0 0 1 0-64h192a32 32 0 0 1 0 64h-64v67.2zM512 448a96 96 0 1 0 0-192 96 96 0 0 0 0 192zm-256 0a96 96 0 1 0 0-192 96 96 0 0 0 0 192zm128 224a96 96 0 1 0 0-192 96 96 0 0 0 0 192zm128 224a96 96 0 1 0 0-192 96 96 0 0 0 0 192zm128-224a96 96 0 1 0 0-192 96 96 0 0 0 0 192zm128-224a96 96 0 1 0 0-192 96 96 0 0 0 0 192z',
},
null,
-1
)
const _hoisted_3$7l = [_hoisted_2$85]
function _sfc_render$4d(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9v, _hoisted_3$7l)
}
var grape = /* @__PURE__ */ _export_sfc$2(_sfc_main$bS, [
['render', _sfc_render$4d],
])
const _sfc_main$bR = defineComponent({
name: 'Grid',
})
const _hoisted_1$9u = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$84 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M640 384v256H384V384h256zm64 0h192v256H704V384zm-64 512H384V704h256v192zm64 0V704h192v192H704zm-64-768v192H384V128h256zm64 0h192v192H704V128zM320 384v256H128V384h192zm0 512H128V704h192v192zm0-768v192H128V128h192z',
},
null,
-1
)
const _hoisted_3$7k = [_hoisted_2$84]
function _sfc_render$4c(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9u, _hoisted_3$7k)
}
var grid = /* @__PURE__ */ _export_sfc$2(_sfc_main$bR, [
['render', _sfc_render$4c],
])
const _sfc_main$bQ = defineComponent({
name: 'Guide',
})
const _hoisted_1$9t = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$83 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M640 608h-64V416h64v192zm0 160v160a32 32 0 0 1-32 32H416a32 32 0 0 1-32-32V768h64v128h128V768h64zM384 608V416h64v192h-64zm256-352h-64V128H448v128h-64V96a32 32 0 0 1 32-32h192a32 32 0 0 1 32 32v160z',
},
null,
-1
)
const _hoisted_3$7j = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm220.8 256-71.232 80 71.168 80H768V256H220.8zm-14.4-64H800a32 32 0 0 1 32 32v224a32 32 0 0 1-32 32H206.4a32 32 0 0 1-23.936-10.752l-99.584-112a32 32 0 0 1 0-42.496l99.584-112A32 32 0 0 1 206.4 192zm678.784 496-71.104 80H266.816V608h547.2l71.168 80zm-56.768-144H234.88a32 32 0 0 0-32 32v224a32 32 0 0 0 32 32h593.6a32 32 0 0 0 23.936-10.752l99.584-112a32 32 0 0 0 0-42.496l-99.584-112A32 32 0 0 0 828.48 544z',
},
null,
-1
)
const _hoisted_4$4T = [_hoisted_2$83, _hoisted_3$7j]
function _sfc_render$4b(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9t, _hoisted_4$4T)
}
var guide = /* @__PURE__ */ _export_sfc$2(_sfc_main$bQ, [
['render', _sfc_render$4b],
])
const _sfc_main$bP = defineComponent({
name: 'Headset',
})
const _hoisted_1$9s = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$82 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M896 529.152V512a384 384 0 1 0-768 0v17.152A128 128 0 0 1 320 640v128a128 128 0 1 1-256 0V512a448 448 0 1 1 896 0v256a128 128 0 1 1-256 0V640a128 128 0 0 1 192-110.848zM896 640a64 64 0 0 0-128 0v128a64 64 0 0 0 128 0V640zm-768 0v128a64 64 0 0 0 128 0V640a64 64 0 1 0-128 0z',
},
null,
-1
)
const _hoisted_3$7i = [_hoisted_2$82]
function _sfc_render$4a(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9s, _hoisted_3$7i)
}
var headset = /* @__PURE__ */ _export_sfc$2(_sfc_main$bP, [
['render', _sfc_render$4a],
])
const _sfc_main$bO = defineComponent({
name: 'HelpFilled',
})
const _hoisted_1$9r = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$81 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M926.784 480H701.312A192.512 192.512 0 0 0 544 322.688V97.216A416.064 416.064 0 0 1 926.784 480zm0 64A416.064 416.064 0 0 1 544 926.784V701.312A192.512 192.512 0 0 0 701.312 544h225.472zM97.28 544h225.472A192.512 192.512 0 0 0 480 701.312v225.472A416.064 416.064 0 0 1 97.216 544zm0-64A416.064 416.064 0 0 1 480 97.216v225.472A192.512 192.512 0 0 0 322.688 480H97.216z',
},
null,
-1
)
const _hoisted_3$7h = [_hoisted_2$81]
function _sfc_render$49(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9r, _hoisted_3$7h)
}
var helpFilled = /* @__PURE__ */ _export_sfc$2(_sfc_main$bO, [
['render', _sfc_render$49],
])
const _sfc_main$bN = defineComponent({
name: 'Help',
})
const _hoisted_1$9q = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$80 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm759.936 805.248-90.944-91.008A254.912 254.912 0 0 1 512 768a254.912 254.912 0 0 1-156.992-53.76l-90.944 91.008A382.464 382.464 0 0 0 512 896c94.528 0 181.12-34.176 247.936-90.752zm45.312-45.312A382.464 382.464 0 0 0 896 512c0-94.528-34.176-181.12-90.752-247.936l-91.008 90.944C747.904 398.4 768 452.864 768 512c0 59.136-20.096 113.6-53.76 156.992l91.008 90.944zm-45.312-541.184A382.464 382.464 0 0 0 512 128c-94.528 0-181.12 34.176-247.936 90.752l90.944 91.008A254.912 254.912 0 0 1 512 256c59.136 0 113.6 20.096 156.992 53.76l90.944-91.008zm-541.184 45.312A382.464 382.464 0 0 0 128 512c0 94.528 34.176 181.12 90.752 247.936l91.008-90.944A254.912 254.912 0 0 1 256 512c0-59.136 20.096-113.6 53.76-156.992l-91.008-90.944zm417.28 394.496a194.56 194.56 0 0 0 22.528-22.528C686.912 602.56 704 559.232 704 512a191.232 191.232 0 0 0-67.968-146.56A191.296 191.296 0 0 0 512 320a191.232 191.232 0 0 0-146.56 67.968C337.088 421.44 320 464.768 320 512a191.232 191.232 0 0 0 67.968 146.56C421.44 686.912 464.768 704 512 704c47.296 0 90.56-17.088 124.032-45.44zM512 960a448 448 0 1 1 0-896 448 448 0 0 1 0 896z',
},
null,
-1
)
const _hoisted_3$7g = [_hoisted_2$80]
function _sfc_render$48(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9q, _hoisted_3$7g)
}
var help = /* @__PURE__ */ _export_sfc$2(_sfc_main$bN, [
['render', _sfc_render$48],
])
const _sfc_main$bM = defineComponent({
name: 'Hide',
})
const _hoisted_1$9p = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7$ = /* @__PURE__ */ createElementVNode(
'path',
{
d: 'M876.8 156.8c0-9.6-3.2-16-9.6-22.4-6.4-6.4-12.8-9.6-22.4-9.6-9.6 0-16 3.2-22.4 9.6L736 220.8c-64-32-137.6-51.2-224-60.8-160 16-288 73.6-377.6 176C44.8 438.4 0 496 0 512s48 73.6 134.4 176c22.4 25.6 44.8 48 73.6 67.2l-86.4 89.6c-6.4 6.4-9.6 12.8-9.6 22.4 0 9.6 3.2 16 9.6 22.4 6.4 6.4 12.8 9.6 22.4 9.6 9.6 0 16-3.2 22.4-9.6l704-710.4c3.2-6.4 6.4-12.8 6.4-22.4Zm-646.4 528c-76.8-70.4-128-128-153.6-172.8 28.8-48 80-105.6 153.6-172.8C304 272 400 230.4 512 224c64 3.2 124.8 19.2 176 44.8l-54.4 54.4C598.4 300.8 560 288 512 288c-64 0-115.2 22.4-160 64s-64 96-64 160c0 48 12.8 89.6 35.2 124.8L256 707.2c-9.6-6.4-19.2-16-25.6-22.4Zm140.8-96c-12.8-22.4-19.2-48-19.2-76.8 0-44.8 16-83.2 48-112 32-28.8 67.2-48 112-48 28.8 0 54.4 6.4 73.6 19.2L371.2 588.8ZM889.599 336c-12.8-16-28.8-28.8-41.6-41.6l-48 48c73.6 67.2 124.8 124.8 150.4 169.6-28.8 48-80 105.6-153.6 172.8-73.6 67.2-172.8 108.8-284.8 115.2-51.2-3.2-99.2-12.8-140.8-28.8l-48 48c57.6 22.4 118.4 38.4 188.8 44.8 160-16 288-73.6 377.6-176C979.199 585.6 1024 528 1024 512s-48.001-73.6-134.401-176Z',
fill: 'currentColor',
},
null,
-1
)
const _hoisted_3$7f = /* @__PURE__ */ createElementVNode(
'path',
{
d: 'M511.998 672c-12.8 0-25.6-3.2-38.4-6.4l-51.2 51.2c28.8 12.8 57.6 19.2 89.6 19.2 64 0 115.2-22.4 160-64 41.6-41.6 64-96 64-160 0-32-6.4-64-19.2-89.6l-51.2 51.2c3.2 12.8 6.4 25.6 6.4 38.4 0 44.8-16 83.2-48 112-32 28.8-67.2 48-112 48Z',
fill: 'currentColor',
},
null,
-1
)
const _hoisted_4$4S = [_hoisted_2$7$, _hoisted_3$7f]
function _sfc_render$47(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9p, _hoisted_4$4S)
}
var hide$2 = /* @__PURE__ */ _export_sfc$2(_sfc_main$bM, [
['render', _sfc_render$47],
])
const _sfc_main$bL = defineComponent({
name: 'Histogram',
})
const _hoisted_1$9o = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7_ = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M416 896V128h192v768H416zm-288 0V448h192v448H128zm576 0V320h192v576H704z',
},
null,
-1
)
const _hoisted_3$7e = [_hoisted_2$7_]
function _sfc_render$46(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9o, _hoisted_3$7e)
}
var histogram = /* @__PURE__ */ _export_sfc$2(_sfc_main$bL, [
['render', _sfc_render$46],
])
const _sfc_main$bK = defineComponent({
name: 'HomeFilled',
})
const _hoisted_1$9n = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7Z = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 128 128 447.936V896h255.936V640H640v256h255.936V447.936z',
},
null,
-1
)
const _hoisted_3$7d = [_hoisted_2$7Z]
function _sfc_render$45(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9n, _hoisted_3$7d)
}
var homeFilled = /* @__PURE__ */ _export_sfc$2(_sfc_main$bK, [
['render', _sfc_render$45],
])
const _sfc_main$bJ = defineComponent({
name: 'HotWater',
})
const _hoisted_1$9m = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7Y = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M273.067 477.867h477.866V409.6H273.067v68.267zm0 68.266v51.2A187.733 187.733 0 0 0 460.8 785.067h102.4a187.733 187.733 0 0 0 187.733-187.734v-51.2H273.067zm-34.134-204.8h546.134a34.133 34.133 0 0 1 34.133 34.134v221.866a256 256 0 0 1-256 256H460.8a256 256 0 0 1-256-256V375.467a34.133 34.133 0 0 1 34.133-34.134zM512 34.133a34.133 34.133 0 0 1 34.133 34.134v170.666a34.133 34.133 0 0 1-68.266 0V68.267A34.133 34.133 0 0 1 512 34.133zM375.467 102.4a34.133 34.133 0 0 1 34.133 34.133v102.4a34.133 34.133 0 0 1-68.267 0v-102.4a34.133 34.133 0 0 1 34.134-34.133zm273.066 0a34.133 34.133 0 0 1 34.134 34.133v102.4a34.133 34.133 0 1 1-68.267 0v-102.4a34.133 34.133 0 0 1 34.133-34.133zM170.667 921.668h682.666a34.133 34.133 0 1 1 0 68.267H170.667a34.133 34.133 0 1 1 0-68.267z',
},
null,
-1
)
const _hoisted_3$7c = [_hoisted_2$7Y]
function _sfc_render$44(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9m, _hoisted_3$7c)
}
var hotWater = /* @__PURE__ */ _export_sfc$2(_sfc_main$bJ, [
['render', _sfc_render$44],
])
const _sfc_main$bI = defineComponent({
name: 'House',
})
const _hoisted_1$9l = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7X = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M192 413.952V896h640V413.952L512 147.328 192 413.952zM139.52 374.4l352-293.312a32 32 0 0 1 40.96 0l352 293.312A32 32 0 0 1 896 398.976V928a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V398.976a32 32 0 0 1 11.52-24.576z',
},
null,
-1
)
const _hoisted_3$7b = [_hoisted_2$7X]
function _sfc_render$43(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9l, _hoisted_3$7b)
}
var house = /* @__PURE__ */ _export_sfc$2(_sfc_main$bI, [
['render', _sfc_render$43],
])
const _sfc_main$bH = defineComponent({
name: 'IceCreamRound',
})
const _hoisted_1$9k = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7W = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm308.352 489.344 226.304 226.304a32 32 0 0 0 45.248 0L783.552 512A192 192 0 1 0 512 240.448L308.352 444.16a32 32 0 0 0 0 45.248zm135.744 226.304L308.352 851.392a96 96 0 0 1-135.744-135.744l135.744-135.744-45.248-45.248a96 96 0 0 1 0-135.808L466.752 195.2A256 256 0 0 1 828.8 557.248L625.152 760.96a96 96 0 0 1-135.808 0l-45.248-45.248zM398.848 670.4 353.6 625.152 217.856 760.896a32 32 0 0 0 45.248 45.248L398.848 670.4zm248.96-384.64a32 32 0 0 1 0 45.248L466.624 512a32 32 0 1 1-45.184-45.248l180.992-181.056a32 32 0 0 1 45.248 0zm90.496 90.496a32 32 0 0 1 0 45.248L557.248 602.496A32 32 0 1 1 512 557.248l180.992-180.992a32 32 0 0 1 45.312 0z',
},
null,
-1
)
const _hoisted_3$7a = [_hoisted_2$7W]
function _sfc_render$42(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9k, _hoisted_3$7a)
}
var iceCreamRound = /* @__PURE__ */ _export_sfc$2(_sfc_main$bH, [
['render', _sfc_render$42],
])
const _sfc_main$bG = defineComponent({
name: 'IceCreamSquare',
})
const _hoisted_1$9j = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7V = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M416 640h256a32 32 0 0 0 32-32V160a32 32 0 0 0-32-32H352a32 32 0 0 0-32 32v448a32 32 0 0 0 32 32h64zm192 64v160a96 96 0 0 1-192 0V704h-64a96 96 0 0 1-96-96V160a96 96 0 0 1 96-96h320a96 96 0 0 1 96 96v448a96 96 0 0 1-96 96h-64zm-64 0h-64v160a32 32 0 1 0 64 0V704z',
},
null,
-1
)
const _hoisted_3$79 = [_hoisted_2$7V]
function _sfc_render$41(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9j, _hoisted_3$79)
}
var iceCreamSquare = /* @__PURE__ */ _export_sfc$2(_sfc_main$bG, [
['render', _sfc_render$41],
])
const _sfc_main$bF = defineComponent({
name: 'IceCream',
})
const _hoisted_1$9i = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7U = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M128.64 448a208 208 0 0 1 193.536-191.552 224 224 0 0 1 445.248 15.488A208.128 208.128 0 0 1 894.784 448H896L548.8 983.68a32 32 0 0 1-53.248.704L128 448h.64zm64.256 0h286.208a144 144 0 0 0-286.208 0zm351.36 0h286.272a144 144 0 0 0-286.272 0zm-294.848 64 271.808 396.608L778.24 512H249.408zM511.68 352.64a207.872 207.872 0 0 1 189.184-96.192 160 160 0 0 0-314.752 5.632c52.608 12.992 97.28 46.08 125.568 90.56z',
},
null,
-1
)
const _hoisted_3$78 = [_hoisted_2$7U]
function _sfc_render$40(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9i, _hoisted_3$78)
}
var iceCream = /* @__PURE__ */ _export_sfc$2(_sfc_main$bF, [
['render', _sfc_render$40],
])
const _sfc_main$bE = defineComponent({
name: 'IceDrink',
})
const _hoisted_1$9h = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7T = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 448v128h239.68l16.064-128H512zm-64 0H256.256l16.064 128H448V448zm64-255.36V384h247.744A256.128 256.128 0 0 0 512 192.64zm-64 8.064A256.448 256.448 0 0 0 264.256 384H448V200.704zm64-72.064A320.128 320.128 0 0 1 825.472 384H896a32 32 0 1 1 0 64h-64v1.92l-56.96 454.016A64 64 0 0 1 711.552 960H312.448a64 64 0 0 1-63.488-56.064L192 449.92V448h-64a32 32 0 0 1 0-64h70.528A320.384 320.384 0 0 1 448 135.04V96a96 96 0 0 1 96-96h128a32 32 0 1 1 0 64H544a32 32 0 0 0-32 32v32.64zM743.68 640H280.32l32.128 256h399.104l32.128-256z',
},
null,
-1
)
const _hoisted_3$77 = [_hoisted_2$7T]
function _sfc_render$3$(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9h, _hoisted_3$77)
}
var iceDrink = /* @__PURE__ */ _export_sfc$2(_sfc_main$bE, [
['render', _sfc_render$3$],
])
const _sfc_main$bD = defineComponent({
name: 'IceTea',
})
const _hoisted_1$9g = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7S = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M197.696 259.648a320.128 320.128 0 0 1 628.608 0A96 96 0 0 1 896 352v64a96 96 0 0 1-71.616 92.864l-49.408 395.072A64 64 0 0 1 711.488 960H312.512a64 64 0 0 1-63.488-56.064l-49.408-395.072A96 96 0 0 1 128 416v-64a96 96 0 0 1 69.696-92.352zM264.064 256h495.872a256.128 256.128 0 0 0-495.872 0zm495.424 256H264.512l48 384h398.976l48-384zM224 448h576a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32H224a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32zm160 192h64v64h-64v-64zm192 64h64v64h-64v-64zm-128 64h64v64h-64v-64zm64-192h64v64h-64v-64z',
},
null,
-1
)
const _hoisted_3$76 = [_hoisted_2$7S]
function _sfc_render$3_(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9g, _hoisted_3$76)
}
var iceTea = /* @__PURE__ */ _export_sfc$2(_sfc_main$bD, [
['render', _sfc_render$3_],
])
const _sfc_main$bC = defineComponent({
name: 'InfoFilled',
})
const _hoisted_1$9f = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7R = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64zm67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344zM590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.992 12.992 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z',
},
null,
-1
)
const _hoisted_3$75 = [_hoisted_2$7R]
function _sfc_render$3Z(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9f, _hoisted_3$75)
}
var infoFilled = /* @__PURE__ */ _export_sfc$2(_sfc_main$bC, [
['render', _sfc_render$3Z],
])
const _sfc_main$bB = defineComponent({
name: 'Iphone',
})
const _hoisted_1$9e = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7Q = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M224 768v96.064a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64V768H224zm0-64h576V160a64 64 0 0 0-64-64H288a64 64 0 0 0-64 64v544zm32 288a96 96 0 0 1-96-96V128a96 96 0 0 1 96-96h512a96 96 0 0 1 96 96v768a96 96 0 0 1-96 96H256zm304-144a48 48 0 1 1-96 0 48 48 0 0 1 96 0z',
},
null,
-1
)
const _hoisted_3$74 = [_hoisted_2$7Q]
function _sfc_render$3Y(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9e, _hoisted_3$74)
}
var iphone = /* @__PURE__ */ _export_sfc$2(_sfc_main$bB, [
['render', _sfc_render$3Y],
])
const _sfc_main$bA = defineComponent({
name: 'Key',
})
const _hoisted_1$9d = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7P = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M448 456.064V96a32 32 0 0 1 32-32.064L672 64a32 32 0 0 1 0 64H512v128h160a32 32 0 0 1 0 64H512v128a256 256 0 1 1-64 8.064zM512 896a192 192 0 1 0 0-384 192 192 0 0 0 0 384z',
},
null,
-1
)
const _hoisted_3$73 = [_hoisted_2$7P]
function _sfc_render$3X(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9d, _hoisted_3$73)
}
var key = /* @__PURE__ */ _export_sfc$2(_sfc_main$bA, [
['render', _sfc_render$3X],
])
const _sfc_main$bz = defineComponent({
name: 'KnifeFork',
})
const _hoisted_1$9c = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7O = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M256 410.56V96a32 32 0 0 1 64 0v314.56A96 96 0 0 0 384 320V96a32 32 0 0 1 64 0v224a160 160 0 0 1-128 156.8V928a32 32 0 1 1-64 0V476.8A160 160 0 0 1 128 320V96a32 32 0 0 1 64 0v224a96 96 0 0 0 64 90.56zm384-250.24V544h126.72c-3.328-78.72-12.928-147.968-28.608-207.744-14.336-54.528-46.848-113.344-98.112-175.872zM640 608v320a32 32 0 1 1-64 0V64h64c85.312 89.472 138.688 174.848 160 256 21.312 81.152 32 177.152 32 288H640z',
},
null,
-1
)
const _hoisted_3$72 = [_hoisted_2$7O]
function _sfc_render$3W(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9c, _hoisted_3$72)
}
var knifeFork = /* @__PURE__ */ _export_sfc$2(_sfc_main$bz, [
['render', _sfc_render$3W],
])
const _sfc_main$by = defineComponent({
name: 'Lightning',
})
const _hoisted_1$9b = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7N = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M288 671.36v64.128A239.808 239.808 0 0 1 63.744 496.192a240.32 240.32 0 0 1 199.488-236.8 256.128 256.128 0 0 1 487.872-30.976A256.064 256.064 0 0 1 736 734.016v-64.768a192 192 0 0 0 3.328-377.92l-35.2-6.592-12.8-33.408a192.064 192.064 0 0 0-365.952 23.232l-9.92 40.896-41.472 7.04a176.32 176.32 0 0 0-146.24 173.568c0 91.968 70.464 167.36 160.256 175.232z',
},
null,
-1
)
const _hoisted_3$71 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M416 736a32 32 0 0 1-27.776-47.872l128-224a32 32 0 1 1 55.552 31.744L471.168 672H608a32 32 0 0 1 27.776 47.872l-128 224a32 32 0 1 1-55.68-31.744L552.96 736H416z',
},
null,
-1
)
const _hoisted_4$4R = [_hoisted_2$7N, _hoisted_3$71]
function _sfc_render$3V(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9b, _hoisted_4$4R)
}
var lightning = /* @__PURE__ */ _export_sfc$2(_sfc_main$by, [
['render', _sfc_render$3V],
])
const _sfc_main$bx = defineComponent({
name: 'Link',
})
const _hoisted_1$9a = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7M = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M715.648 625.152 670.4 579.904l90.496-90.56c75.008-74.944 85.12-186.368 22.656-248.896-62.528-62.464-173.952-52.352-248.96 22.656L444.16 353.6l-45.248-45.248 90.496-90.496c100.032-99.968 251.968-110.08 339.456-22.656 87.488 87.488 77.312 239.424-22.656 339.456l-90.496 90.496zm-90.496 90.496-90.496 90.496C434.624 906.112 282.688 916.224 195.2 828.8c-87.488-87.488-77.312-239.424 22.656-339.456l90.496-90.496 45.248 45.248-90.496 90.56c-75.008 74.944-85.12 186.368-22.656 248.896 62.528 62.464 173.952 52.352 248.96-22.656l90.496-90.496 45.248 45.248zm0-362.048 45.248 45.248L398.848 670.4 353.6 625.152 625.152 353.6z',
},
null,
-1
)
const _hoisted_3$70 = [_hoisted_2$7M]
function _sfc_render$3U(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$9a, _hoisted_3$70)
}
var link = /* @__PURE__ */ _export_sfc$2(_sfc_main$bx, [
['render', _sfc_render$3U],
])
const _sfc_main$bw = defineComponent({
name: 'List',
})
const _hoisted_1$99 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7L = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M704 192h160v736H160V192h160v64h384v-64zM288 512h448v-64H288v64zm0 256h448v-64H288v64zm96-576V96h256v96H384z',
},
null,
-1
)
const _hoisted_3$6$ = [_hoisted_2$7L]
function _sfc_render$3T(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$99, _hoisted_3$6$)
}
var list = /* @__PURE__ */ _export_sfc$2(_sfc_main$bw, [
['render', _sfc_render$3T],
])
const _sfc_main$bv = defineComponent({
name: 'Loading',
})
const _hoisted_1$98 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7K = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32zm0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32zm448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32zm-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32zM195.2 195.2a32 32 0 0 1 45.248 0L376.32 331.008a32 32 0 0 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248zm452.544 452.544a32 32 0 0 1 45.248 0L828.8 783.552a32 32 0 0 1-45.248 45.248L647.744 692.992a32 32 0 0 1 0-45.248zM828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0zm-452.544 452.48a32 32 0 0 1 0 45.248L240.448 828.8a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0z',
},
null,
-1
)
const _hoisted_3$6_ = [_hoisted_2$7K]
function _sfc_render$3S(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$98, _hoisted_3$6_)
}
var loading = /* @__PURE__ */ _export_sfc$2(_sfc_main$bv, [
['render', _sfc_render$3S],
])
const _sfc_main$bu = defineComponent({
name: 'LocationFilled',
})
const _hoisted_1$97 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7J = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 928c23.936 0 117.504-68.352 192.064-153.152C803.456 661.888 864 535.808 864 416c0-189.632-155.84-320-352-320S160 226.368 160 416c0 120.32 60.544 246.4 159.936 359.232C394.432 859.84 488 928 512 928zm0-435.2a64 64 0 1 0 0-128 64 64 0 0 0 0 128zm0 140.8a204.8 204.8 0 1 1 0-409.6 204.8 204.8 0 0 1 0 409.6z',
},
null,
-1
)
const _hoisted_3$6Z = [_hoisted_2$7J]
function _sfc_render$3R(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$97, _hoisted_3$6Z)
}
var locationFilled = /* @__PURE__ */ _export_sfc$2(_sfc_main$bu, [
['render', _sfc_render$3R],
])
const _sfc_main$bt = defineComponent({
name: 'LocationInformation',
})
const _hoisted_1$96 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7I = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M288 896h448q32 0 32 32t-32 32H288q-32 0-32-32t32-32z',
},
null,
-1
)
const _hoisted_3$6Y = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M800 416a288 288 0 1 0-576 0c0 118.144 94.528 272.128 288 456.576C705.472 688.128 800 534.144 800 416zM512 960C277.312 746.688 160 565.312 160 416a352 352 0 0 1 704 0c0 149.312-117.312 330.688-352 544z',
},
null,
-1
)
const _hoisted_4$4Q = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 512a96 96 0 1 0 0-192 96 96 0 0 0 0 192zm0 64a160 160 0 1 1 0-320 160 160 0 0 1 0 320z',
},
null,
-1
)
const _hoisted_5$3S = [_hoisted_2$7I, _hoisted_3$6Y, _hoisted_4$4Q]
function _sfc_render$3Q(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$96, _hoisted_5$3S)
}
var locationInformation = /* @__PURE__ */ _export_sfc$2(_sfc_main$bt, [
['render', _sfc_render$3Q],
])
const _sfc_main$bs = defineComponent({
name: 'Location',
})
const _hoisted_1$95 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7H = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M800 416a288 288 0 1 0-576 0c0 118.144 94.528 272.128 288 456.576C705.472 688.128 800 534.144 800 416zM512 960C277.312 746.688 160 565.312 160 416a352 352 0 0 1 704 0c0 149.312-117.312 330.688-352 544z',
},
null,
-1
)
const _hoisted_3$6X = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 512a96 96 0 1 0 0-192 96 96 0 0 0 0 192zm0 64a160 160 0 1 1 0-320 160 160 0 0 1 0 320z',
},
null,
-1
)
const _hoisted_4$4P = [_hoisted_2$7H, _hoisted_3$6X]
function _sfc_render$3P(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$95, _hoisted_4$4P)
}
var location$1 = /* @__PURE__ */ _export_sfc$2(_sfc_main$bs, [
['render', _sfc_render$3P],
])
const _sfc_main$br = defineComponent({
name: 'Lock',
})
const _hoisted_1$94 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7G = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M224 448a32 32 0 0 0-32 32v384a32 32 0 0 0 32 32h576a32 32 0 0 0 32-32V480a32 32 0 0 0-32-32H224zm0-64h576a96 96 0 0 1 96 96v384a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96V480a96 96 0 0 1 96-96z',
},
null,
-1
)
const _hoisted_3$6W = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 544a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V576a32 32 0 0 1 32-32zm192-160v-64a192 192 0 1 0-384 0v64h384zM512 64a256 256 0 0 1 256 256v128H256V320A256 256 0 0 1 512 64z',
},
null,
-1
)
const _hoisted_4$4O = [_hoisted_2$7G, _hoisted_3$6W]
function _sfc_render$3O(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$94, _hoisted_4$4O)
}
var lock = /* @__PURE__ */ _export_sfc$2(_sfc_main$br, [
['render', _sfc_render$3O],
])
const _sfc_main$bq = defineComponent({
name: 'Lollipop',
})
const _hoisted_1$93 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7F = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M513.28 448a64 64 0 1 1 76.544 49.728A96 96 0 0 0 768 448h64a160 160 0 0 1-320 0h1.28zm-126.976-29.696a256 256 0 1 0 43.52-180.48A256 256 0 0 1 832 448h-64a192 192 0 0 0-381.696-29.696zm105.664 249.472L285.696 874.048a96 96 0 0 1-135.68-135.744l206.208-206.272a320 320 0 1 1 135.744 135.744zm-54.464-36.032a321.92 321.92 0 0 1-45.248-45.248L195.2 783.552a32 32 0 1 0 45.248 45.248l197.056-197.12z',
},
null,
-1
)
const _hoisted_3$6V = [_hoisted_2$7F]
function _sfc_render$3N(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$93, _hoisted_3$6V)
}
var lollipop = /* @__PURE__ */ _export_sfc$2(_sfc_main$bq, [
['render', _sfc_render$3N],
])
const _sfc_main$bp = defineComponent({
name: 'MagicStick',
})
const _hoisted_1$92 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7E = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 64h64v192h-64V64zm0 576h64v192h-64V640zM160 480v-64h192v64H160zm576 0v-64h192v64H736zM249.856 199.04l45.248-45.184L430.848 289.6 385.6 334.848 249.856 199.104zM657.152 606.4l45.248-45.248 135.744 135.744-45.248 45.248L657.152 606.4zM114.048 923.2 68.8 877.952l316.8-316.8 45.248 45.248-316.8 316.8zM702.4 334.848 657.152 289.6l135.744-135.744 45.248 45.248L702.4 334.848z',
},
null,
-1
)
const _hoisted_3$6U = [_hoisted_2$7E]
function _sfc_render$3M(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$92, _hoisted_3$6U)
}
var magicStick = /* @__PURE__ */ _export_sfc$2(_sfc_main$bp, [
['render', _sfc_render$3M],
])
const _sfc_main$bo = defineComponent({
name: 'Magnet',
})
const _hoisted_1$91 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7D = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M832 320V192H704v320a192 192 0 1 1-384 0V192H192v128h128v64H192v128a320 320 0 0 0 640 0V384H704v-64h128zM640 512V128h256v384a384 384 0 1 1-768 0V128h256v384a128 128 0 1 0 256 0z',
},
null,
-1
)
const _hoisted_3$6T = [_hoisted_2$7D]
function _sfc_render$3L(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$91, _hoisted_3$6T)
}
var magnet = /* @__PURE__ */ _export_sfc$2(_sfc_main$bo, [
['render', _sfc_render$3L],
])
const _sfc_main$bn = defineComponent({
name: 'Male',
})
const _hoisted_1$90 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7C = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M399.5 849.5a225 225 0 1 0 0-450 225 225 0 0 0 0 450zm0 56.25a281.25 281.25 0 1 1 0-562.5 281.25 281.25 0 0 1 0 562.5zm253.125-787.5h225q28.125 0 28.125 28.125T877.625 174.5h-225q-28.125 0-28.125-28.125t28.125-28.125z',
},
null,
-1
)
const _hoisted_3$6S = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M877.625 118.25q28.125 0 28.125 28.125v225q0 28.125-28.125 28.125T849.5 371.375v-225q0-28.125 28.125-28.125z',
},
null,
-1
)
const _hoisted_4$4N = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M604.813 458.9 565.1 419.131l292.613-292.668 39.825 39.824z',
},
null,
-1
)
const _hoisted_5$3R = [_hoisted_2$7C, _hoisted_3$6S, _hoisted_4$4N]
function _sfc_render$3K(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$90, _hoisted_5$3R)
}
var male = /* @__PURE__ */ _export_sfc$2(_sfc_main$bn, [
['render', _sfc_render$3K],
])
const _sfc_main$bm = defineComponent({
name: 'Management',
})
const _hoisted_1$8$ = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7B = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M576 128v288l96-96 96 96V128h128v768H320V128h256zm-448 0h128v768H128V128z',
},
null,
-1
)
const _hoisted_3$6R = [_hoisted_2$7B]
function _sfc_render$3J(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8$, _hoisted_3$6R)
}
var management = /* @__PURE__ */ _export_sfc$2(_sfc_main$bm, [
['render', _sfc_render$3J],
])
const _sfc_main$bl = defineComponent({
name: 'MapLocation',
})
const _hoisted_1$8_ = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7A = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M800 416a288 288 0 1 0-576 0c0 118.144 94.528 272.128 288 456.576C705.472 688.128 800 534.144 800 416zM512 960C277.312 746.688 160 565.312 160 416a352 352 0 0 1 704 0c0 149.312-117.312 330.688-352 544z',
},
null,
-1
)
const _hoisted_3$6Q = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 448a64 64 0 1 0 0-128 64 64 0 0 0 0 128zm0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256zm345.6 192L960 960H672v-64H352v64H64l102.4-256h691.2zm-68.928 0H235.328l-76.8 192h706.944l-76.8-192z',
},
null,
-1
)
const _hoisted_4$4M = [_hoisted_2$7A, _hoisted_3$6Q]
function _sfc_render$3I(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8_, _hoisted_4$4M)
}
var mapLocation = /* @__PURE__ */ _export_sfc$2(_sfc_main$bl, [
['render', _sfc_render$3I],
])
const _sfc_main$bk = defineComponent({
name: 'Medal',
})
const _hoisted_1$8Z = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7z = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 896a256 256 0 1 0 0-512 256 256 0 0 0 0 512zm0 64a320 320 0 1 1 0-640 320 320 0 0 1 0 640z',
},
null,
-1
)
const _hoisted_3$6P = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M576 128H448v200a286.72 286.72 0 0 1 64-8c19.52 0 40.832 2.688 64 8V128zm64 0v219.648c24.448 9.088 50.56 20.416 78.4 33.92L757.44 128H640zm-256 0H266.624l39.04 253.568c27.84-13.504 53.888-24.832 78.336-33.92V128zM229.312 64h565.376a32 32 0 0 1 31.616 36.864L768 480c-113.792-64-199.104-96-256-96-56.896 0-142.208 32-256 96l-58.304-379.136A32 32 0 0 1 229.312 64z',
},
null,
-1
)
const _hoisted_4$4L = [_hoisted_2$7z, _hoisted_3$6P]
function _sfc_render$3H(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8Z, _hoisted_4$4L)
}
var medal = /* @__PURE__ */ _export_sfc$2(_sfc_main$bk, [
['render', _sfc_render$3H],
])
const _sfc_main$bj = defineComponent({
name: 'Menu',
})
const _hoisted_1$8Y = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7y = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M160 448a32 32 0 0 1-32-32V160.064a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V416a32 32 0 0 1-32 32H160zm448 0a32 32 0 0 1-32-32V160.064a32 32 0 0 1 32-32h255.936a32 32 0 0 1 32 32V416a32 32 0 0 1-32 32H608zM160 896a32 32 0 0 1-32-32V608a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32H160zm448 0a32 32 0 0 1-32-32V608a32 32 0 0 1 32-32h255.936a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32H608z',
},
null,
-1
)
const _hoisted_3$6O = [_hoisted_2$7y]
function _sfc_render$3G(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8Y, _hoisted_3$6O)
}
var menu = /* @__PURE__ */ _export_sfc$2(_sfc_main$bj, [
['render', _sfc_render$3G],
])
const _sfc_main$bi = defineComponent({
name: 'MessageBox',
})
const _hoisted_1$8X = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7x = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M288 384h448v64H288v-64zm96-128h256v64H384v-64zM131.456 512H384v128h256V512h252.544L721.856 192H302.144L131.456 512zM896 576H704v128H320V576H128v256h768V576zM275.776 128h472.448a32 32 0 0 1 28.608 17.664l179.84 359.552A32 32 0 0 1 960 519.552V864a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V519.552a32 32 0 0 1 3.392-14.336l179.776-359.552A32 32 0 0 1 275.776 128z',
},
null,
-1
)
const _hoisted_3$6N = [_hoisted_2$7x]
function _sfc_render$3F(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8X, _hoisted_3$6N)
}
var messageBox = /* @__PURE__ */ _export_sfc$2(_sfc_main$bi, [
['render', _sfc_render$3F],
])
const _sfc_main$bh = defineComponent({
name: 'Message',
})
const _hoisted_1$8W = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7w = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M128 224v512a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64V224H128zm0-64h768a64 64 0 0 1 64 64v512a128 128 0 0 1-128 128H192A128 128 0 0 1 64 736V224a64 64 0 0 1 64-64z',
},
null,
-1
)
const _hoisted_3$6M = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M904 224 656.512 506.88a192 192 0 0 1-289.024 0L120 224h784zm-698.944 0 210.56 240.704a128 128 0 0 0 192.704 0L818.944 224H205.056z',
},
null,
-1
)
const _hoisted_4$4K = [_hoisted_2$7w, _hoisted_3$6M]
function _sfc_render$3E(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8W, _hoisted_4$4K)
}
var message$1 = /* @__PURE__ */ _export_sfc$2(_sfc_main$bh, [
['render', _sfc_render$3E],
])
const _sfc_main$bg = defineComponent({
name: 'Mic',
})
const _hoisted_1$8V = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7v = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M480 704h160a64 64 0 0 0 64-64v-32h-96a32 32 0 0 1 0-64h96v-96h-96a32 32 0 0 1 0-64h96v-96h-96a32 32 0 0 1 0-64h96v-32a64 64 0 0 0-64-64H384a64 64 0 0 0-64 64v32h96a32 32 0 0 1 0 64h-96v96h96a32 32 0 0 1 0 64h-96v96h96a32 32 0 0 1 0 64h-96v32a64 64 0 0 0 64 64h96zm64 64v128h192a32 32 0 1 1 0 64H288a32 32 0 1 1 0-64h192V768h-96a128 128 0 0 1-128-128V192A128 128 0 0 1 384 64h256a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128h-96z',
},
null,
-1
)
const _hoisted_3$6L = [_hoisted_2$7v]
function _sfc_render$3D(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8V, _hoisted_3$6L)
}
var mic = /* @__PURE__ */ _export_sfc$2(_sfc_main$bg, [
['render', _sfc_render$3D],
])
const _sfc_main$bf = defineComponent({
name: 'Microphone',
})
const _hoisted_1$8U = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7u = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 128a128 128 0 0 0-128 128v256a128 128 0 1 0 256 0V256a128 128 0 0 0-128-128zm0-64a192 192 0 0 1 192 192v256a192 192 0 1 1-384 0V256A192 192 0 0 1 512 64zm-32 832v-64a288 288 0 0 1-288-288v-32a32 32 0 0 1 64 0v32a224 224 0 0 0 224 224h64a224 224 0 0 0 224-224v-32a32 32 0 1 1 64 0v32a288 288 0 0 1-288 288v64h64a32 32 0 1 1 0 64H416a32 32 0 1 1 0-64h64z',
},
null,
-1
)
const _hoisted_3$6K = [_hoisted_2$7u]
function _sfc_render$3C(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8U, _hoisted_3$6K)
}
var microphone = /* @__PURE__ */ _export_sfc$2(_sfc_main$bf, [
['render', _sfc_render$3C],
])
const _sfc_main$be = defineComponent({
name: 'MilkTea',
})
const _hoisted_1$8T = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7t = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M416 128V96a96 96 0 0 1 96-96h128a32 32 0 1 1 0 64H512a32 32 0 0 0-32 32v32h320a96 96 0 0 1 11.712 191.296l-39.68 581.056A64 64 0 0 1 708.224 960H315.776a64 64 0 0 1-63.872-59.648l-39.616-581.056A96 96 0 0 1 224 128h192zM276.48 320l39.296 576h392.448l4.8-70.784a224.064 224.064 0 0 1 30.016-439.808L747.52 320H276.48zM224 256h576a32 32 0 1 0 0-64H224a32 32 0 0 0 0 64zm493.44 503.872 21.12-309.12a160 160 0 0 0-21.12 309.12z',
},
null,
-1
)
const _hoisted_3$6J = [_hoisted_2$7t]
function _sfc_render$3B(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8T, _hoisted_3$6J)
}
var milkTea = /* @__PURE__ */ _export_sfc$2(_sfc_main$be, [
['render', _sfc_render$3B],
])
const _sfc_main$bd = defineComponent({
name: 'Minus',
})
const _hoisted_1$8S = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7s = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M128 544h768a32 32 0 1 0 0-64H128a32 32 0 0 0 0 64z',
},
null,
-1
)
const _hoisted_3$6I = [_hoisted_2$7s]
function _sfc_render$3A(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8S, _hoisted_3$6I)
}
var minus = /* @__PURE__ */ _export_sfc$2(_sfc_main$bd, [
['render', _sfc_render$3A],
])
const _sfc_main$bc = defineComponent({
name: 'Money',
})
const _hoisted_1$8R = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7r = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M256 640v192h640V384H768v-64h150.976c14.272 0 19.456 1.472 24.64 4.288a29.056 29.056 0 0 1 12.16 12.096c2.752 5.184 4.224 10.368 4.224 24.64v493.952c0 14.272-1.472 19.456-4.288 24.64a29.056 29.056 0 0 1-12.096 12.16c-5.184 2.752-10.368 4.224-24.64 4.224H233.024c-14.272 0-19.456-1.472-24.64-4.288a29.056 29.056 0 0 1-12.16-12.096c-2.688-5.184-4.224-10.368-4.224-24.576V640h64z',
},
null,
-1
)
const _hoisted_3$6H = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M768 192H128v448h640V192zm64-22.976v493.952c0 14.272-1.472 19.456-4.288 24.64a29.056 29.056 0 0 1-12.096 12.16c-5.184 2.752-10.368 4.224-24.64 4.224H105.024c-14.272 0-19.456-1.472-24.64-4.288a29.056 29.056 0 0 1-12.16-12.096C65.536 682.432 64 677.248 64 663.04V169.024c0-14.272 1.472-19.456 4.288-24.64a29.056 29.056 0 0 1 12.096-12.16C85.568 129.536 90.752 128 104.96 128h685.952c14.272 0 19.456 1.472 24.64 4.288a29.056 29.056 0 0 1 12.16 12.096c2.752 5.184 4.224 10.368 4.224 24.64z',
},
null,
-1
)
const _hoisted_4$4J = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M448 576a160 160 0 1 1 0-320 160 160 0 0 1 0 320zm0-64a96 96 0 1 0 0-192 96 96 0 0 0 0 192z',
},
null,
-1
)
const _hoisted_5$3Q = [_hoisted_2$7r, _hoisted_3$6H, _hoisted_4$4J]
function _sfc_render$3z(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8R, _hoisted_5$3Q)
}
var money = /* @__PURE__ */ _export_sfc$2(_sfc_main$bc, [
['render', _sfc_render$3z],
])
const _sfc_main$bb = defineComponent({
name: 'Monitor',
})
const _hoisted_1$8Q = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7q = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M544 768v128h192a32 32 0 1 1 0 64H288a32 32 0 1 1 0-64h192V768H192A128 128 0 0 1 64 640V256a128 128 0 0 1 128-128h640a128 128 0 0 1 128 128v384a128 128 0 0 1-128 128H544zM192 192a64 64 0 0 0-64 64v384a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64V256a64 64 0 0 0-64-64H192z',
},
null,
-1
)
const _hoisted_3$6G = [_hoisted_2$7q]
function _sfc_render$3y(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8Q, _hoisted_3$6G)
}
var monitor = /* @__PURE__ */ _export_sfc$2(_sfc_main$bb, [
['render', _sfc_render$3y],
])
const _sfc_main$ba = defineComponent({
name: 'MoonNight',
})
const _hoisted_1$8P = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7p = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M384 512a448 448 0 0 1 215.872-383.296A384 384 0 0 0 213.76 640h188.8A448.256 448.256 0 0 1 384 512zM171.136 704a448 448 0 0 1 636.992-575.296A384 384 0 0 0 499.328 704h-328.32z',
},
null,
-1
)
const _hoisted_3$6F = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M32 640h960q32 0 32 32t-32 32H32q-32 0-32-32t32-32zm128 128h384a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64zm160 127.68 224 .256a32 32 0 0 1 32 32V928a32 32 0 0 1-32 32l-224-.384a32 32 0 0 1-32-32v-.064a32 32 0 0 1 32-32z',
},
null,
-1
)
const _hoisted_4$4I = [_hoisted_2$7p, _hoisted_3$6F]
function _sfc_render$3x(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8P, _hoisted_4$4I)
}
var moonNight = /* @__PURE__ */ _export_sfc$2(_sfc_main$ba, [
['render', _sfc_render$3x],
])
const _sfc_main$b9 = defineComponent({
name: 'Moon',
})
const _hoisted_1$8O = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7o = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M240.448 240.448a384 384 0 1 0 559.424 525.696 448 448 0 0 1-542.016-542.08 390.592 390.592 0 0 0-17.408 16.384zm181.056 362.048a384 384 0 0 0 525.632 16.384A448 448 0 1 1 405.056 76.8a384 384 0 0 0 16.448 525.696z',
},
null,
-1
)
const _hoisted_3$6E = [_hoisted_2$7o]
function _sfc_render$3w(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8O, _hoisted_3$6E)
}
var moon = /* @__PURE__ */ _export_sfc$2(_sfc_main$b9, [
['render', _sfc_render$3w],
])
const _sfc_main$b8 = defineComponent({
name: 'MoreFilled',
})
const _hoisted_1$8N = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7n = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M176 416a112 112 0 1 1 0 224 112 112 0 0 1 0-224zm336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224zm336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224z',
},
null,
-1
)
const _hoisted_3$6D = [_hoisted_2$7n]
function _sfc_render$3v(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8N, _hoisted_3$6D)
}
var moreFilled = /* @__PURE__ */ _export_sfc$2(_sfc_main$b8, [
['render', _sfc_render$3v],
])
const _sfc_main$b7 = defineComponent({
name: 'More',
})
const _hoisted_1$8M = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7m = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M176 416a112 112 0 1 0 0 224 112 112 0 0 0 0-224m0 64a48 48 0 1 1 0 96 48 48 0 0 1 0-96zm336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224zm0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96zm336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224zm0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96z',
},
null,
-1
)
const _hoisted_3$6C = [_hoisted_2$7m]
function _sfc_render$3u(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8M, _hoisted_3$6C)
}
var more = /* @__PURE__ */ _export_sfc$2(_sfc_main$b7, [
['render', _sfc_render$3u],
])
const _sfc_main$b6 = defineComponent({
name: 'MostlyCloudy',
})
const _hoisted_1$8L = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7l = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M737.216 357.952 704 349.824l-11.776-32a192.064 192.064 0 0 0-367.424 23.04l-8.96 39.04-39.04 8.96A192.064 192.064 0 0 0 320 768h368a207.808 207.808 0 0 0 207.808-208 208.32 208.32 0 0 0-158.592-202.048zm15.168-62.208A272.32 272.32 0 0 1 959.744 560a271.808 271.808 0 0 1-271.552 272H320a256 256 0 0 1-57.536-505.536 256.128 256.128 0 0 1 489.92-30.72z',
},
null,
-1
)
const _hoisted_3$6B = [_hoisted_2$7l]
function _sfc_render$3t(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8L, _hoisted_3$6B)
}
var mostlyCloudy = /* @__PURE__ */ _export_sfc$2(_sfc_main$b6, [
['render', _sfc_render$3t],
])
const _sfc_main$b5 = defineComponent({
name: 'Mouse',
})
const _hoisted_1$8K = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7k = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M438.144 256c-68.352 0-92.736 4.672-117.76 18.112-20.096 10.752-35.52 26.176-46.272 46.272C260.672 345.408 256 369.792 256 438.144v275.712c0 68.352 4.672 92.736 18.112 117.76 10.752 20.096 26.176 35.52 46.272 46.272C345.408 891.328 369.792 896 438.144 896h147.712c68.352 0 92.736-4.672 117.76-18.112 20.096-10.752 35.52-26.176 46.272-46.272C763.328 806.592 768 782.208 768 713.856V438.144c0-68.352-4.672-92.736-18.112-117.76a110.464 110.464 0 0 0-46.272-46.272C678.592 260.672 654.208 256 585.856 256H438.144zm0-64h147.712c85.568 0 116.608 8.96 147.904 25.6 31.36 16.768 55.872 41.344 72.576 72.64C823.104 321.536 832 352.576 832 438.08v275.84c0 85.504-8.96 116.544-25.6 147.84a174.464 174.464 0 0 1-72.64 72.576C702.464 951.104 671.424 960 585.92 960H438.08c-85.504 0-116.544-8.96-147.84-25.6a174.464 174.464 0 0 1-72.64-72.704c-16.768-31.296-25.664-62.336-25.664-147.84v-275.84c0-85.504 8.96-116.544 25.6-147.84a174.464 174.464 0 0 1 72.768-72.576c31.232-16.704 62.272-25.6 147.776-25.6z',
},
null,
-1
)
const _hoisted_3$6A = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 320q32 0 32 32v128q0 32-32 32t-32-32V352q0-32 32-32zm32-96a32 32 0 0 1-64 0v-64a32 32 0 0 0-32-32h-96a32 32 0 0 1 0-64h96a96 96 0 0 1 96 96v64z',
},
null,
-1
)
const _hoisted_4$4H = [_hoisted_2$7k, _hoisted_3$6A]
function _sfc_render$3s(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8K, _hoisted_4$4H)
}
var mouse = /* @__PURE__ */ _export_sfc$2(_sfc_main$b5, [
['render', _sfc_render$3s],
])
const _sfc_main$b4 = defineComponent({
name: 'Mug',
})
const _hoisted_1$8J = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7j = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M736 800V160H160v640a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64zm64-544h63.552a96 96 0 0 1 96 96v224a96 96 0 0 1-96 96H800v128a128 128 0 0 1-128 128H224A128 128 0 0 1 96 800V128a32 32 0 0 1 32-32h640a32 32 0 0 1 32 32v128zm0 64v288h63.552a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32H800z',
},
null,
-1
)
const _hoisted_3$6z = [_hoisted_2$7j]
function _sfc_render$3r(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8J, _hoisted_3$6z)
}
var mug = /* @__PURE__ */ _export_sfc$2(_sfc_main$b4, [
['render', _sfc_render$3r],
])
const _sfc_main$b3 = defineComponent({
name: 'MuteNotification',
})
const _hoisted_1$8I = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7i = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm241.216 832 63.616-64H768V448c0-42.368-10.24-82.304-28.48-117.504l46.912-47.232C815.36 331.392 832 387.84 832 448v320h96a32 32 0 1 1 0 64H241.216zm-90.24 0H96a32 32 0 1 1 0-64h96V448a320.128 320.128 0 0 1 256-313.6V128a64 64 0 1 1 128 0v6.4a319.552 319.552 0 0 1 171.648 97.088l-45.184 45.44A256 256 0 0 0 256 448v278.336L151.04 832zM448 896h128a64 64 0 0 1-128 0z',
},
null,
-1
)
const _hoisted_3$6y = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M150.72 859.072a32 32 0 0 1-45.44-45.056l704-708.544a32 32 0 0 1 45.44 45.056l-704 708.544z',
},
null,
-1
)
const _hoisted_4$4G = [_hoisted_2$7i, _hoisted_3$6y]
function _sfc_render$3q(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8I, _hoisted_4$4G)
}
var muteNotification = /* @__PURE__ */ _export_sfc$2(_sfc_main$b3, [
['render', _sfc_render$3q],
])
const _sfc_main$b2 = defineComponent({
name: 'Mute',
})
const _hoisted_1$8H = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7h = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm412.16 592.128-45.44 45.44A191.232 191.232 0 0 1 320 512V256a192 192 0 1 1 384 0v44.352l-64 64V256a128 128 0 1 0-256 0v256c0 30.336 10.56 58.24 28.16 80.128zm51.968 38.592A128 128 0 0 0 640 512v-57.152l64-64V512a192 192 0 0 1-287.68 166.528l47.808-47.808zM314.88 779.968l46.144-46.08A222.976 222.976 0 0 0 480 768h64a224 224 0 0 0 224-224v-32a32 32 0 1 1 64 0v32a288 288 0 0 1-288 288v64h64a32 32 0 1 1 0 64H416a32 32 0 1 1 0-64h64v-64c-61.44 0-118.4-19.2-165.12-52.032zM266.752 737.6A286.976 286.976 0 0 1 192 544v-32a32 32 0 0 1 64 0v32c0 56.832 21.184 108.8 56.064 148.288L266.752 737.6z',
},
null,
-1
)
const _hoisted_3$6x = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M150.72 859.072a32 32 0 0 1-45.44-45.056l704-708.544a32 32 0 0 1 45.44 45.056l-704 708.544z',
},
null,
-1
)
const _hoisted_4$4F = [_hoisted_2$7h, _hoisted_3$6x]
function _sfc_render$3p(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8H, _hoisted_4$4F)
}
var mute = /* @__PURE__ */ _export_sfc$2(_sfc_main$b2, [
['render', _sfc_render$3p],
])
const _sfc_main$b1 = defineComponent({
name: 'NoSmoking',
})
const _hoisted_1$8G = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7g = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M440.256 576H256v128h56.256l-64 64H224a32 32 0 0 1-32-32V544a32 32 0 0 1 32-32h280.256l-64 64zm143.488 128H704V583.744L775.744 512H928a32 32 0 0 1 32 32v192a32 32 0 0 1-32 32H519.744l64-64zM768 576v128h128V576H768zm-29.696-207.552 45.248 45.248-497.856 497.856-45.248-45.248zM256 64h64v320h-64zM128 192h64v192h-64zM64 512h64v256H64z',
},
null,
-1
)
const _hoisted_3$6w = [_hoisted_2$7g]
function _sfc_render$3o(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8G, _hoisted_3$6w)
}
var noSmoking = /* @__PURE__ */ _export_sfc$2(_sfc_main$b1, [
['render', _sfc_render$3o],
])
const _sfc_main$b0 = defineComponent({
name: 'Notebook',
})
const _hoisted_1$8F = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7f = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M192 128v768h640V128H192zm-32-64h704a32 32 0 0 1 32 32v832a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32z',
},
null,
-1
)
const _hoisted_3$6v = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M672 128h64v768h-64zM96 192h128q32 0 32 32t-32 32H96q-32 0-32-32t32-32zm0 192h128q32 0 32 32t-32 32H96q-32 0-32-32t32-32zm0 192h128q32 0 32 32t-32 32H96q-32 0-32-32t32-32zm0 192h128q32 0 32 32t-32 32H96q-32 0-32-32t32-32z',
},
null,
-1
)
const _hoisted_4$4E = [_hoisted_2$7f, _hoisted_3$6v]
function _sfc_render$3n(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8F, _hoisted_4$4E)
}
var notebook = /* @__PURE__ */ _export_sfc$2(_sfc_main$b0, [
['render', _sfc_render$3n],
])
const _sfc_main$a$ = defineComponent({
name: 'Notification',
})
const _hoisted_1$8E = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7e = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 128v64H256a64 64 0 0 0-64 64v512a64 64 0 0 0 64 64h512a64 64 0 0 0 64-64V512h64v256a128 128 0 0 1-128 128H256a128 128 0 0 1-128-128V256a128 128 0 0 1 128-128h256z',
},
null,
-1
)
const _hoisted_3$6u = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M768 384a128 128 0 1 0 0-256 128 128 0 0 0 0 256zm0 64a192 192 0 1 1 0-384 192 192 0 0 1 0 384z',
},
null,
-1
)
const _hoisted_4$4D = [_hoisted_2$7e, _hoisted_3$6u]
function _sfc_render$3m(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8E, _hoisted_4$4D)
}
var notification = /* @__PURE__ */ _export_sfc$2(_sfc_main$a$, [
['render', _sfc_render$3m],
])
const _sfc_main$a_ = defineComponent({
name: 'Odometer',
})
const _hoisted_1$8D = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7d = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z',
},
null,
-1
)
const _hoisted_3$6t = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M192 512a320 320 0 1 1 640 0 32 32 0 1 1-64 0 256 256 0 1 0-512 0 32 32 0 0 1-64 0z',
},
null,
-1
)
const _hoisted_4$4C = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M570.432 627.84A96 96 0 1 1 509.568 608l60.992-187.776A32 32 0 1 1 631.424 440l-60.992 187.776zM502.08 734.464a32 32 0 1 0 19.84-60.928 32 32 0 0 0-19.84 60.928z',
},
null,
-1
)
const _hoisted_5$3P = [_hoisted_2$7d, _hoisted_3$6t, _hoisted_4$4C]
function _sfc_render$3l(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8D, _hoisted_5$3P)
}
var odometer = /* @__PURE__ */ _export_sfc$2(_sfc_main$a_, [
['render', _sfc_render$3l],
])
const _sfc_main$aZ = defineComponent({
name: 'OfficeBuilding',
})
const _hoisted_1$8C = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7c = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M192 128v704h384V128H192zm-32-64h448a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32z',
},
null,
-1
)
const _hoisted_3$6s = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M256 256h256v64H256v-64zm0 192h256v64H256v-64zm0 192h256v64H256v-64zm384-128h128v64H640v-64zm0 128h128v64H640v-64zM64 832h896v64H64v-64z',
},
null,
-1
)
const _hoisted_4$4B = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M640 384v448h192V384H640zm-32-64h256a32 32 0 0 1 32 32v512a32 32 0 0 1-32 32H608a32 32 0 0 1-32-32V352a32 32 0 0 1 32-32z',
},
null,
-1
)
const _hoisted_5$3O = [_hoisted_2$7c, _hoisted_3$6s, _hoisted_4$4B]
function _sfc_render$3k(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8C, _hoisted_5$3O)
}
var officeBuilding = /* @__PURE__ */ _export_sfc$2(_sfc_main$aZ, [
['render', _sfc_render$3k],
])
const _sfc_main$aY = defineComponent({
name: 'Open',
})
const _hoisted_1$8B = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7b = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M329.956 257.138a254.862 254.862 0 0 0 0 509.724h364.088a254.862 254.862 0 0 0 0-509.724H329.956zm0-72.818h364.088a327.68 327.68 0 1 1 0 655.36H329.956a327.68 327.68 0 1 1 0-655.36z',
},
null,
-1
)
const _hoisted_3$6r = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M694.044 621.227a109.227 109.227 0 1 0 0-218.454 109.227 109.227 0 0 0 0 218.454zm0 72.817a182.044 182.044 0 1 1 0-364.088 182.044 182.044 0 0 1 0 364.088z',
},
null,
-1
)
const _hoisted_4$4A = [_hoisted_2$7b, _hoisted_3$6r]
function _sfc_render$3j(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8B, _hoisted_4$4A)
}
var open$1 = /* @__PURE__ */ _export_sfc$2(_sfc_main$aY, [
['render', _sfc_render$3j],
])
const _sfc_main$aX = defineComponent({
name: 'Operation',
})
const _hoisted_1$8A = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$7a = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M389.44 768a96.064 96.064 0 0 1 181.12 0H896v64H570.56a96.064 96.064 0 0 1-181.12 0H128v-64h261.44zm192-288a96.064 96.064 0 0 1 181.12 0H896v64H762.56a96.064 96.064 0 0 1-181.12 0H128v-64h453.44zm-320-288a96.064 96.064 0 0 1 181.12 0H896v64H442.56a96.064 96.064 0 0 1-181.12 0H128v-64h133.44z',
},
null,
-1
)
const _hoisted_3$6q = [_hoisted_2$7a]
function _sfc_render$3i(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8A, _hoisted_3$6q)
}
var operation = /* @__PURE__ */ _export_sfc$2(_sfc_main$aX, [
['render', _sfc_render$3i],
])
const _sfc_main$aW = defineComponent({
name: 'Opportunity',
})
const _hoisted_1$8z = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$79 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M384 960v-64h192.064v64H384zm448-544a350.656 350.656 0 0 1-128.32 271.424C665.344 719.04 640 763.776 640 813.504V832H320v-14.336c0-48-19.392-95.36-57.216-124.992a351.552 351.552 0 0 1-128.448-344.256c25.344-136.448 133.888-248.128 269.76-276.48A352.384 352.384 0 0 1 832 416zm-544 32c0-132.288 75.904-224 192-224v-64c-154.432 0-256 122.752-256 288h64z',
},
null,
-1
)
const _hoisted_3$6p = [_hoisted_2$79]
function _sfc_render$3h(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8z, _hoisted_3$6p)
}
var opportunity = /* @__PURE__ */ _export_sfc$2(_sfc_main$aW, [
['render', _sfc_render$3h],
])
const _sfc_main$aV = defineComponent({
name: 'Orange',
})
const _hoisted_1$8y = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$78 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M544 894.72a382.336 382.336 0 0 0 215.936-89.472L577.024 622.272c-10.24 6.016-21.248 10.688-33.024 13.696v258.688zm261.248-134.784A382.336 382.336 0 0 0 894.656 544H635.968c-3.008 11.776-7.68 22.848-13.696 33.024l182.976 182.912zM894.656 480a382.336 382.336 0 0 0-89.408-215.936L622.272 446.976c6.016 10.24 10.688 21.248 13.696 33.024h258.688zm-134.72-261.248A382.336 382.336 0 0 0 544 129.344v258.688c11.776 3.008 22.848 7.68 33.024 13.696l182.912-182.976zM480 129.344a382.336 382.336 0 0 0-215.936 89.408l182.912 182.976c10.24-6.016 21.248-10.688 33.024-13.696V129.344zm-261.248 134.72A382.336 382.336 0 0 0 129.344 480h258.688c3.008-11.776 7.68-22.848 13.696-33.024L218.752 264.064zM129.344 544a382.336 382.336 0 0 0 89.408 215.936l182.976-182.912A127.232 127.232 0 0 1 388.032 544H129.344zm134.72 261.248A382.336 382.336 0 0 0 480 894.656V635.968a127.232 127.232 0 0 1-33.024-13.696L264.064 805.248zM512 960a448 448 0 1 1 0-896 448 448 0 0 1 0 896zm0-384a64 64 0 1 0 0-128 64 64 0 0 0 0 128z',
},
null,
-1
)
const _hoisted_3$6o = [_hoisted_2$78]
function _sfc_render$3g(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8y, _hoisted_3$6o)
}
var orange = /* @__PURE__ */ _export_sfc$2(_sfc_main$aV, [
['render', _sfc_render$3g],
])
const _sfc_main$aU = defineComponent({
name: 'Paperclip',
})
const _hoisted_1$8x = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$77 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M602.496 240.448A192 192 0 1 1 874.048 512l-316.8 316.8A256 256 0 0 1 195.2 466.752L602.496 59.456l45.248 45.248L240.448 512A192 192 0 0 0 512 783.552l316.8-316.8a128 128 0 1 0-181.056-181.056L353.6 579.904a32 32 0 1 0 45.248 45.248l294.144-294.144 45.312 45.248L444.096 670.4a96 96 0 1 1-135.744-135.744l294.144-294.208z',
},
null,
-1
)
const _hoisted_3$6n = [_hoisted_2$77]
function _sfc_render$3f(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8x, _hoisted_3$6n)
}
var paperclip = /* @__PURE__ */ _export_sfc$2(_sfc_main$aU, [
['render', _sfc_render$3f],
])
const _sfc_main$aT = defineComponent({
name: 'PartlyCloudy',
})
const _hoisted_1$8w = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$76 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M598.4 895.872H328.192a256 256 0 0 1-34.496-510.528A352 352 0 1 1 598.4 895.872zm-271.36-64h272.256a288 288 0 1 0-248.512-417.664L335.04 445.44l-34.816 3.584a192 192 0 0 0 26.88 382.848z',
},
null,
-1
)
const _hoisted_3$6m = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M139.84 501.888a256 256 0 1 1 417.856-277.12c-17.728 2.176-38.208 8.448-61.504 18.816A192 192 0 1 0 189.12 460.48a6003.84 6003.84 0 0 0-49.28 41.408z',
},
null,
-1
)
const _hoisted_4$4z = [_hoisted_2$76, _hoisted_3$6m]
function _sfc_render$3e(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8w, _hoisted_4$4z)
}
var partlyCloudy = /* @__PURE__ */ _export_sfc$2(_sfc_main$aT, [
['render', _sfc_render$3e],
])
const _sfc_main$aS = defineComponent({
name: 'Pear',
})
const _hoisted_1$8v = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$75 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M542.336 258.816a443.255 443.255 0 0 0-9.024 25.088 32 32 0 1 1-60.8-20.032l1.088-3.328a162.688 162.688 0 0 0-122.048 131.392l-17.088 102.72-20.736 15.36C256.192 552.704 224 610.88 224 672c0 120.576 126.4 224 288 224s288-103.424 288-224c0-61.12-32.192-119.296-89.728-161.92l-20.736-15.424-17.088-102.72a162.688 162.688 0 0 0-130.112-133.12zm-40.128-66.56c7.936-15.552 16.576-30.08 25.92-43.776 23.296-33.92 49.408-59.776 78.528-77.12a32 32 0 1 1 32.704 55.04c-20.544 12.224-40.064 31.552-58.432 58.304a316.608 316.608 0 0 0-9.792 15.104 226.688 226.688 0 0 1 164.48 181.568l12.8 77.248C819.456 511.36 864 587.392 864 672c0 159.04-157.568 288-352 288S160 831.04 160 672c0-84.608 44.608-160.64 115.584-213.376l12.8-77.248a226.624 226.624 0 0 1 213.76-189.184z',
},
null,
-1
)
const _hoisted_3$6l = [_hoisted_2$75]
function _sfc_render$3d(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8v, _hoisted_3$6l)
}
var pear = /* @__PURE__ */ _export_sfc$2(_sfc_main$aS, [
['render', _sfc_render$3d],
])
const _sfc_main$aR = defineComponent({
name: 'PhoneFilled',
})
const _hoisted_1$8u = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$74 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M199.232 125.568 90.624 379.008a32 32 0 0 0 6.784 35.2l512.384 512.384a32 32 0 0 0 35.2 6.784l253.44-108.608a32 32 0 0 0 10.048-52.032L769.6 633.92a32 32 0 0 0-36.928-5.952l-130.176 65.088-271.488-271.552 65.024-130.176a32 32 0 0 0-5.952-36.928L251.2 115.52a32 32 0 0 0-51.968 10.048z',
},
null,
-1
)
const _hoisted_3$6k = [_hoisted_2$74]
function _sfc_render$3c(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8u, _hoisted_3$6k)
}
var phoneFilled = /* @__PURE__ */ _export_sfc$2(_sfc_main$aR, [
['render', _sfc_render$3c],
])
const _sfc_main$aQ = defineComponent({
name: 'Phone',
})
const _hoisted_1$8t = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$73 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M79.36 432.256 591.744 944.64a32 32 0 0 0 35.2 6.784l253.44-108.544a32 32 0 0 0 9.984-52.032l-153.856-153.92a32 32 0 0 0-36.928-6.016l-69.888 34.944L358.08 394.24l35.008-69.888a32 32 0 0 0-5.952-36.928L233.152 133.568a32 32 0 0 0-52.032 10.048L72.512 397.056a32 32 0 0 0 6.784 35.2zm60.48-29.952 81.536-190.08L325.568 316.48l-24.64 49.216-20.608 41.216 32.576 32.64 271.552 271.552 32.64 32.64 41.216-20.672 49.28-24.576 104.192 104.128-190.08 81.472L139.84 402.304zM512 320v-64a256 256 0 0 1 256 256h-64a192 192 0 0 0-192-192zm0-192V64a448 448 0 0 1 448 448h-64a384 384 0 0 0-384-384z',
},
null,
-1
)
const _hoisted_3$6j = [_hoisted_2$73]
function _sfc_render$3b(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8t, _hoisted_3$6j)
}
var phone = /* @__PURE__ */ _export_sfc$2(_sfc_main$aQ, [
['render', _sfc_render$3b],
])
const _sfc_main$aP = defineComponent({
name: 'PictureFilled',
})
const _hoisted_1$8s = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$72 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M96 896a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h832a32 32 0 0 1 32 32v704a32 32 0 0 1-32 32H96zm315.52-228.48-68.928-68.928a32 32 0 0 0-45.248 0L128 768.064h778.688l-242.112-290.56a32 32 0 0 0-49.216 0L458.752 665.408a32 32 0 0 1-47.232 2.112zM256 384a96 96 0 1 0 192.064-.064A96 96 0 0 0 256 384z',
},
null,
-1
)
const _hoisted_3$6i = [_hoisted_2$72]
function _sfc_render$3a(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8s, _hoisted_3$6i)
}
var pictureFilled = /* @__PURE__ */ _export_sfc$2(_sfc_main$aP, [
['render', _sfc_render$3a],
])
const _sfc_main$aO = defineComponent({
name: 'PictureRounded',
})
const _hoisted_1$8r = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$71 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 128a384 384 0 1 0 0 768 384 384 0 0 0 0-768zm0-64a448 448 0 1 1 0 896 448 448 0 0 1 0-896z',
},
null,
-1
)
const _hoisted_3$6h = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M640 288q64 0 64 64t-64 64q-64 0-64-64t64-64zM214.656 790.656l-45.312-45.312 185.664-185.6a96 96 0 0 1 123.712-10.24l138.24 98.688a32 32 0 0 0 39.872-2.176L906.688 422.4l42.624 47.744L699.52 693.696a96 96 0 0 1-119.808 6.592l-138.24-98.752a32 32 0 0 0-41.152 3.456l-185.664 185.6z',
},
null,
-1
)
const _hoisted_4$4y = [_hoisted_2$71, _hoisted_3$6h]
function _sfc_render$39(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8r, _hoisted_4$4y)
}
var pictureRounded = /* @__PURE__ */ _export_sfc$2(_sfc_main$aO, [
['render', _sfc_render$39],
])
const _sfc_main$aN = defineComponent({
name: 'Picture',
})
const _hoisted_1$8q = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$70 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M160 160v704h704V160H160zm-32-64h768a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H128a32 32 0 0 1-32-32V128a32 32 0 0 1 32-32z',
},
null,
-1
)
const _hoisted_3$6g = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M384 288q64 0 64 64t-64 64q-64 0-64-64t64-64zM185.408 876.992l-50.816-38.912L350.72 556.032a96 96 0 0 1 134.592-17.856l1.856 1.472 122.88 99.136a32 32 0 0 0 44.992-4.864l216-269.888 49.92 39.936-215.808 269.824-.256.32a96 96 0 0 1-135.04 14.464l-122.88-99.072-.64-.512a32 32 0 0 0-44.8 5.952L185.408 876.992z',
},
null,
-1
)
const _hoisted_4$4x = [_hoisted_2$70, _hoisted_3$6g]
function _sfc_render$38(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8q, _hoisted_4$4x)
}
var picture = /* @__PURE__ */ _export_sfc$2(_sfc_main$aN, [
['render', _sfc_render$38],
])
const _sfc_main$aM = defineComponent({
name: 'PieChart',
})
const _hoisted_1$8p = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6$ = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M448 68.48v64.832A384.128 384.128 0 0 0 512 896a384.128 384.128 0 0 0 378.688-320h64.768A448.128 448.128 0 0 1 64 512 448.128 448.128 0 0 1 448 68.48z',
},
null,
-1
)
const _hoisted_3$6f = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M576 97.28V448h350.72A384.064 384.064 0 0 0 576 97.28zM512 64V33.152A448 448 0 0 1 990.848 512H512V64z',
},
null,
-1
)
const _hoisted_4$4w = [_hoisted_2$6$, _hoisted_3$6f]
function _sfc_render$37(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8p, _hoisted_4$4w)
}
var pieChart = /* @__PURE__ */ _export_sfc$2(_sfc_main$aM, [
['render', _sfc_render$37],
])
const _sfc_main$aL = defineComponent({
name: 'Place',
})
const _hoisted_1$8o = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6_ = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 512a192 192 0 1 0 0-384 192 192 0 0 0 0 384zm0 64a256 256 0 1 1 0-512 256 256 0 0 1 0 512z',
},
null,
-1
)
const _hoisted_3$6e = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 512a32 32 0 0 1 32 32v256a32 32 0 1 1-64 0V544a32 32 0 0 1 32-32z',
},
null,
-1
)
const _hoisted_4$4v = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M384 649.088v64.96C269.76 732.352 192 771.904 192 800c0 37.696 139.904 96 320 96s320-58.304 320-96c0-28.16-77.76-67.648-192-85.952v-64.96C789.12 671.04 896 730.368 896 800c0 88.32-171.904 160-384 160s-384-71.68-384-160c0-69.696 106.88-128.96 256-150.912z',
},
null,
-1
)
const _hoisted_5$3N = [_hoisted_2$6_, _hoisted_3$6e, _hoisted_4$4v]
function _sfc_render$36(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8o, _hoisted_5$3N)
}
var place$1 = /* @__PURE__ */ _export_sfc$2(_sfc_main$aL, [
['render', _sfc_render$36],
])
const _sfc_main$aK = defineComponent({
name: 'Platform',
})
const _hoisted_1$8n = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6Z = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M448 832v-64h128v64h192v64H256v-64h192zM128 704V128h768v576H128z',
},
null,
-1
)
const _hoisted_3$6d = [_hoisted_2$6Z]
function _sfc_render$35(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8n, _hoisted_3$6d)
}
var platform$1 = /* @__PURE__ */ _export_sfc$2(_sfc_main$aK, [
['render', _sfc_render$35],
])
const _sfc_main$aJ = defineComponent({
name: 'Plus',
})
const _hoisted_1$8m = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6Y = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64h352z',
},
null,
-1
)
const _hoisted_3$6c = [_hoisted_2$6Y]
function _sfc_render$34(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8m, _hoisted_3$6c)
}
var plus = /* @__PURE__ */ _export_sfc$2(_sfc_main$aJ, [
['render', _sfc_render$34],
])
const _sfc_main$aI = defineComponent({
name: 'Pointer',
})
const _hoisted_1$8l = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6X = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M511.552 128c-35.584 0-64.384 28.8-64.384 64.448v516.48L274.048 570.88a94.272 94.272 0 0 0-112.896-3.456 44.416 44.416 0 0 0-8.96 62.208L332.8 870.4A64 64 0 0 0 384 896h512V575.232a64 64 0 0 0-45.632-61.312l-205.952-61.76A96 96 0 0 1 576 360.192V192.448C576 156.8 547.2 128 511.552 128zM359.04 556.8l24.128 19.2V192.448a128.448 128.448 0 1 1 256.832 0v167.744a32 32 0 0 0 22.784 30.656l206.016 61.76A128 128 0 0 1 960 575.232V896a64 64 0 0 1-64 64H384a128 128 0 0 1-102.4-51.2L101.056 668.032A108.416 108.416 0 0 1 128 512.512a158.272 158.272 0 0 1 185.984 8.32L359.04 556.8z',
},
null,
-1
)
const _hoisted_3$6b = [_hoisted_2$6X]
function _sfc_render$33(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8l, _hoisted_3$6b)
}
var pointer = /* @__PURE__ */ _export_sfc$2(_sfc_main$aI, [
['render', _sfc_render$33],
])
const _sfc_main$aH = defineComponent({
name: 'Position',
})
const _hoisted_1$8k = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6W = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm249.6 417.088 319.744 43.072 39.168 310.272L845.12 178.88 249.6 417.088zm-129.024 47.168a32 32 0 0 1-7.68-61.44l777.792-311.04a32 32 0 0 1 41.6 41.6l-310.336 775.68a32 32 0 0 1-61.44-7.808L512 516.992l-391.424-52.736z',
},
null,
-1
)
const _hoisted_3$6a = [_hoisted_2$6W]
function _sfc_render$32(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8k, _hoisted_3$6a)
}
var position$2 = /* @__PURE__ */ _export_sfc$2(_sfc_main$aH, [
['render', _sfc_render$32],
])
const _sfc_main$aG = defineComponent({
name: 'Postcard',
})
const _hoisted_1$8j = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6V = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M160 224a32 32 0 0 0-32 32v512a32 32 0 0 0 32 32h704a32 32 0 0 0 32-32V256a32 32 0 0 0-32-32H160zm0-64h704a96 96 0 0 1 96 96v512a96 96 0 0 1-96 96H160a96 96 0 0 1-96-96V256a96 96 0 0 1 96-96z',
},
null,
-1
)
const _hoisted_3$69 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M704 320a64 64 0 1 1 0 128 64 64 0 0 1 0-128zM288 448h256q32 0 32 32t-32 32H288q-32 0-32-32t32-32zm0 128h256q32 0 32 32t-32 32H288q-32 0-32-32t32-32z',
},
null,
-1
)
const _hoisted_4$4u = [_hoisted_2$6V, _hoisted_3$69]
function _sfc_render$31(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8j, _hoisted_4$4u)
}
var postcard = /* @__PURE__ */ _export_sfc$2(_sfc_main$aG, [
['render', _sfc_render$31],
])
const _sfc_main$aF = defineComponent({
name: 'Pouring',
})
const _hoisted_1$8i = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6U = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm739.328 291.328-35.2-6.592-12.8-33.408a192.064 192.064 0 0 0-365.952 23.232l-9.92 40.896-41.472 7.04a176.32 176.32 0 0 0-146.24 173.568c0 97.28 78.72 175.936 175.808 175.936h400a192 192 0 0 0 35.776-380.672zM959.552 480a256 256 0 0 1-256 256h-400A239.808 239.808 0 0 1 63.744 496.192a240.32 240.32 0 0 1 199.488-236.8 256.128 256.128 0 0 1 487.872-30.976A256.064 256.064 0 0 1 959.552 480zM224 800a32 32 0 0 1 32 32v96a32 32 0 1 1-64 0v-96a32 32 0 0 1 32-32zm192 0a32 32 0 0 1 32 32v96a32 32 0 1 1-64 0v-96a32 32 0 0 1 32-32zm192 0a32 32 0 0 1 32 32v96a32 32 0 1 1-64 0v-96a32 32 0 0 1 32-32zm192 0a32 32 0 0 1 32 32v96a32 32 0 1 1-64 0v-96a32 32 0 0 1 32-32z',
},
null,
-1
)
const _hoisted_3$68 = [_hoisted_2$6U]
function _sfc_render$30(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8i, _hoisted_3$68)
}
var pouring = /* @__PURE__ */ _export_sfc$2(_sfc_main$aF, [
['render', _sfc_render$30],
])
const _sfc_main$aE = defineComponent({
name: 'Present',
})
const _hoisted_1$8h = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6T = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M480 896V640H192v-64h288V320H192v576h288zm64 0h288V320H544v256h288v64H544v256zM128 256h768v672a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V256z',
},
null,
-1
)
const _hoisted_3$67 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M96 256h832q32 0 32 32t-32 32H96q-32 0-32-32t32-32z',
},
null,
-1
)
const _hoisted_4$4t = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M416 256a64 64 0 1 0 0-128 64 64 0 0 0 0 128zm0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256z',
},
null,
-1
)
const _hoisted_5$3M = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M608 256a64 64 0 1 0 0-128 64 64 0 0 0 0 128zm0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256z',
},
null,
-1
)
const _hoisted_6$3h = [
_hoisted_2$6T,
_hoisted_3$67,
_hoisted_4$4t,
_hoisted_5$3M,
]
function _sfc_render$2$(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8h, _hoisted_6$3h)
}
var present = /* @__PURE__ */ _export_sfc$2(_sfc_main$aE, [
['render', _sfc_render$2$],
])
const _sfc_main$aD = defineComponent({
name: 'PriceTag',
})
const _hoisted_1$8g = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6S = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M224 318.336V896h576V318.336L552.512 115.84a64 64 0 0 0-81.024 0L224 318.336zM593.024 66.304l259.2 212.096A32 32 0 0 1 864 303.168V928a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32V303.168a32 32 0 0 1 11.712-24.768l259.2-212.096a128 128 0 0 1 162.112 0z',
},
null,
-1
)
const _hoisted_3$66 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 448a64 64 0 1 0 0-128 64 64 0 0 0 0 128zm0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256z',
},
null,
-1
)
const _hoisted_4$4s = [_hoisted_2$6S, _hoisted_3$66]
function _sfc_render$2_(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8g, _hoisted_4$4s)
}
var priceTag = /* @__PURE__ */ _export_sfc$2(_sfc_main$aD, [
['render', _sfc_render$2_],
])
const _sfc_main$aC = defineComponent({
name: 'Printer',
})
const _hoisted_1$8f = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6R = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M256 768H105.024c-14.272 0-19.456-1.472-24.64-4.288a29.056 29.056 0 0 1-12.16-12.096C65.536 746.432 64 741.248 64 727.04V379.072c0-42.816 4.48-58.304 12.8-73.984 8.384-15.616 20.672-27.904 36.288-36.288 15.68-8.32 31.168-12.8 73.984-12.8H256V64h512v192h68.928c42.816 0 58.304 4.48 73.984 12.8 15.616 8.384 27.904 20.672 36.288 36.288 8.32 15.68 12.8 31.168 12.8 73.984v347.904c0 14.272-1.472 19.456-4.288 24.64a29.056 29.056 0 0 1-12.096 12.16c-5.184 2.752-10.368 4.224-24.64 4.224H768v192H256V768zm64-192v320h384V576H320zm-64 128V512h512v192h128V379.072c0-29.376-1.408-36.48-5.248-43.776a23.296 23.296 0 0 0-10.048-10.048c-7.232-3.84-14.4-5.248-43.776-5.248H187.072c-29.376 0-36.48 1.408-43.776 5.248a23.296 23.296 0 0 0-10.048 10.048c-3.84 7.232-5.248 14.4-5.248 43.776V704h128zm64-448h384V128H320v128zm-64 128h64v64h-64v-64zm128 0h64v64h-64v-64z',
},
null,
-1
)
const _hoisted_3$65 = [_hoisted_2$6R]
function _sfc_render$2Z(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8f, _hoisted_3$65)
}
var printer = /* @__PURE__ */ _export_sfc$2(_sfc_main$aC, [
['render', _sfc_render$2Z],
])
const _sfc_main$aB = defineComponent({
name: 'Promotion',
})
const _hoisted_1$8e = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6Q = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm64 448 832-320-128 704-446.08-243.328L832 192 242.816 545.472 64 448zm256 512V657.024L512 768 320 960z',
},
null,
-1
)
const _hoisted_3$64 = [_hoisted_2$6Q]
function _sfc_render$2Y(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8e, _hoisted_3$64)
}
var promotion = /* @__PURE__ */ _export_sfc$2(_sfc_main$aB, [
['render', _sfc_render$2Y],
])
const _sfc_main$aA = defineComponent({
name: 'QuestionFilled',
})
const _hoisted_1$8d = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6P = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm23.744 191.488c-52.096 0-92.928 14.784-123.2 44.352-30.976 29.568-45.76 70.4-45.76 122.496h80.256c0-29.568 5.632-52.8 17.6-68.992 13.376-19.712 35.2-28.864 66.176-28.864 23.936 0 42.944 6.336 56.32 19.712 12.672 13.376 19.712 31.68 19.712 54.912 0 17.6-6.336 34.496-19.008 49.984l-8.448 9.856c-45.76 40.832-73.216 70.4-82.368 89.408-9.856 19.008-14.08 42.24-14.08 68.992v9.856h80.96v-9.856c0-16.896 3.52-31.68 10.56-45.76 6.336-12.672 15.488-24.64 28.16-35.2 33.792-29.568 54.208-48.576 60.544-55.616 16.896-22.528 26.048-51.392 26.048-86.592 0-42.944-14.08-76.736-42.24-101.376-28.16-25.344-65.472-37.312-111.232-37.312zm-12.672 406.208a54.272 54.272 0 0 0-38.72 14.784 49.408 49.408 0 0 0-15.488 38.016c0 15.488 4.928 28.16 15.488 38.016A54.848 54.848 0 0 0 523.072 768c15.488 0 28.16-4.928 38.72-14.784a51.52 51.52 0 0 0 16.192-38.72 51.968 51.968 0 0 0-15.488-38.016 55.936 55.936 0 0 0-39.424-14.784z',
},
null,
-1
)
const _hoisted_3$63 = [_hoisted_2$6P]
function _sfc_render$2X(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8d, _hoisted_3$63)
}
var questionFilled = /* @__PURE__ */ _export_sfc$2(_sfc_main$aA, [
['render', _sfc_render$2X],
])
const _sfc_main$az = defineComponent({
name: 'Rank',
})
const _hoisted_1$8c = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6O = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm186.496 544 41.408 41.344a32 32 0 1 1-45.248 45.312l-96-96a32 32 0 0 1 0-45.312l96-96a32 32 0 1 1 45.248 45.312L186.496 480h290.816V186.432l-41.472 41.472a32 32 0 1 1-45.248-45.184l96-96.128a32 32 0 0 1 45.312 0l96 96.064a32 32 0 0 1-45.248 45.184l-41.344-41.28V480H832l-41.344-41.344a32 32 0 0 1 45.248-45.312l96 96a32 32 0 0 1 0 45.312l-96 96a32 32 0 0 1-45.248-45.312L832 544H541.312v293.44l41.344-41.28a32 32 0 1 1 45.248 45.248l-96 96a32 32 0 0 1-45.312 0l-96-96a32 32 0 1 1 45.312-45.248l41.408 41.408V544H186.496z',
},
null,
-1
)
const _hoisted_3$62 = [_hoisted_2$6O]
function _sfc_render$2W(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8c, _hoisted_3$62)
}
var rank = /* @__PURE__ */ _export_sfc$2(_sfc_main$az, [
['render', _sfc_render$2W],
])
const _sfc_main$ay = defineComponent({
name: 'ReadingLamp',
})
const _hoisted_1$8b = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6N = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M352 896h320q32 0 32 32t-32 32H352q-32 0-32-32t32-32zm-44.672-768-99.52 448h608.384l-99.52-448H307.328zm-25.6-64h460.608a32 32 0 0 1 31.232 25.088l113.792 512A32 32 0 0 1 856.128 640H167.872a32 32 0 0 1-31.232-38.912l113.792-512A32 32 0 0 1 281.664 64z',
},
null,
-1
)
const _hoisted_3$61 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M672 576q32 0 32 32v128q0 32-32 32t-32-32V608q0-32 32-32zm-192-.064h64V960h-64z',
},
null,
-1
)
const _hoisted_4$4r = [_hoisted_2$6N, _hoisted_3$61]
function _sfc_render$2V(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8b, _hoisted_4$4r)
}
var readingLamp = /* @__PURE__ */ _export_sfc$2(_sfc_main$ay, [
['render', _sfc_render$2V],
])
const _sfc_main$ax = defineComponent({
name: 'Reading',
})
const _hoisted_1$8a = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6M = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm512 863.36 384-54.848v-638.72L525.568 222.72a96 96 0 0 1-27.136 0L128 169.792v638.72l384 54.848zM137.024 106.432l370.432 52.928a32 32 0 0 0 9.088 0l370.432-52.928A64 64 0 0 1 960 169.792v638.72a64 64 0 0 1-54.976 63.36l-388.48 55.488a32 32 0 0 1-9.088 0l-388.48-55.488A64 64 0 0 1 64 808.512v-638.72a64 64 0 0 1 73.024-63.36z',
},
null,
-1
)
const _hoisted_3$60 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M480 192h64v704h-64z',
},
null,
-1
)
const _hoisted_4$4q = [_hoisted_2$6M, _hoisted_3$60]
function _sfc_render$2U(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$8a, _hoisted_4$4q)
}
var reading = /* @__PURE__ */ _export_sfc$2(_sfc_main$ax, [
['render', _sfc_render$2U],
])
const _sfc_main$aw = defineComponent({
name: 'RefreshLeft',
})
const _hoisted_1$89 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6L = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M289.088 296.704h92.992a32 32 0 0 1 0 64H232.96a32 32 0 0 1-32-32V179.712a32 32 0 0 1 64 0v50.56a384 384 0 0 1 643.84 282.88 384 384 0 0 1-383.936 384 384 384 0 0 1-384-384h64a320 320 0 1 0 640 0 320 320 0 0 0-555.712-216.448z',
},
null,
-1
)
const _hoisted_3$5$ = [_hoisted_2$6L]
function _sfc_render$2T(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$89, _hoisted_3$5$)
}
var refreshLeft = /* @__PURE__ */ _export_sfc$2(_sfc_main$aw, [
['render', _sfc_render$2T],
])
const _sfc_main$av = defineComponent({
name: 'RefreshRight',
})
const _hoisted_1$88 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6K = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M784.512 230.272v-50.56a32 32 0 1 1 64 0v149.056a32 32 0 0 1-32 32H667.52a32 32 0 1 1 0-64h92.992A320 320 0 1 0 524.8 833.152a320 320 0 0 0 320-320h64a384 384 0 0 1-384 384 384 384 0 0 1-384-384 384 384 0 0 1 643.712-282.88z',
},
null,
-1
)
const _hoisted_3$5_ = [_hoisted_2$6K]
function _sfc_render$2S(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$88, _hoisted_3$5_)
}
var refreshRight = /* @__PURE__ */ _export_sfc$2(_sfc_main$av, [
['render', _sfc_render$2S],
])
const _sfc_main$au = defineComponent({
name: 'Refresh',
})
const _hoisted_1$87 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6J = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M771.776 794.88A384 384 0 0 1 128 512h64a320 320 0 0 0 555.712 216.448H654.72a32 32 0 1 1 0-64h149.056a32 32 0 0 1 32 32v148.928a32 32 0 1 1-64 0v-50.56zM276.288 295.616h92.992a32 32 0 0 1 0 64H220.16a32 32 0 0 1-32-32V178.56a32 32 0 0 1 64 0v50.56A384 384 0 0 1 896.128 512h-64a320 320 0 0 0-555.776-216.384z',
},
null,
-1
)
const _hoisted_3$5Z = [_hoisted_2$6J]
function _sfc_render$2R(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$87, _hoisted_3$5Z)
}
var refresh = /* @__PURE__ */ _export_sfc$2(_sfc_main$au, [
['render', _sfc_render$2R],
])
const _sfc_main$at = defineComponent({
name: 'Refrigerator',
})
const _hoisted_1$86 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6I = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M256 448h512V160a32 32 0 0 0-32-32H288a32 32 0 0 0-32 32v288zm0 64v352a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V512H256zm32-448h448a96 96 0 0 1 96 96v704a96 96 0 0 1-96 96H288a96 96 0 0 1-96-96V160a96 96 0 0 1 96-96zm32 224h64v96h-64v-96zm0 288h64v96h-64v-96z',
},
null,
-1
)
const _hoisted_3$5Y = [_hoisted_2$6I]
function _sfc_render$2Q(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$86, _hoisted_3$5Y)
}
var refrigerator = /* @__PURE__ */ _export_sfc$2(_sfc_main$at, [
['render', _sfc_render$2Q],
])
const _sfc_main$as = defineComponent({
name: 'RemoveFilled',
})
const _hoisted_1$85 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6H = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zM288 512a38.4 38.4 0 0 0 38.4 38.4h371.2a38.4 38.4 0 0 0 0-76.8H326.4A38.4 38.4 0 0 0 288 512z',
},
null,
-1
)
const _hoisted_3$5X = [_hoisted_2$6H]
function _sfc_render$2P(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$85, _hoisted_3$5X)
}
var removeFilled = /* @__PURE__ */ _export_sfc$2(_sfc_main$as, [
['render', _sfc_render$2P],
])
const _sfc_main$ar = defineComponent({
name: 'Remove',
})
const _hoisted_1$84 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6G = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M352 480h320a32 32 0 1 1 0 64H352a32 32 0 0 1 0-64z',
},
null,
-1
)
const _hoisted_3$5W = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z',
},
null,
-1
)
const _hoisted_4$4p = [_hoisted_2$6G, _hoisted_3$5W]
function _sfc_render$2O(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$84, _hoisted_4$4p)
}
var remove$3 = /* @__PURE__ */ _export_sfc$2(_sfc_main$ar, [
['render', _sfc_render$2O],
])
const _sfc_main$aq = defineComponent({
name: 'Right',
})
const _hoisted_1$83 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6F = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M754.752 480H160a32 32 0 1 0 0 64h594.752L521.344 777.344a32 32 0 0 0 45.312 45.312l288-288a32 32 0 0 0 0-45.312l-288-288a32 32 0 1 0-45.312 45.312L754.752 480z',
},
null,
-1
)
const _hoisted_3$5V = [_hoisted_2$6F]
function _sfc_render$2N(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$83, _hoisted_3$5V)
}
var right$1 = /* @__PURE__ */ _export_sfc$2(_sfc_main$aq, [
['render', _sfc_render$2N],
])
const _sfc_main$ap = defineComponent({
name: 'ScaleToOriginal',
})
const _hoisted_1$82 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6E = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M813.176 180.706a60.235 60.235 0 0 1 60.236 60.235v481.883a60.235 60.235 0 0 1-60.236 60.235H210.824a60.235 60.235 0 0 1-60.236-60.235V240.94a60.235 60.235 0 0 1 60.236-60.235h602.352zm0-60.235H210.824A120.47 120.47 0 0 0 90.353 240.94v481.883a120.47 120.47 0 0 0 120.47 120.47h602.353a120.47 120.47 0 0 0 120.471-120.47V240.94a120.47 120.47 0 0 0-120.47-120.47zm-120.47 180.705a30.118 30.118 0 0 0-30.118 30.118v301.177a30.118 30.118 0 0 0 60.236 0V331.294a30.118 30.118 0 0 0-30.118-30.118zm-361.412 0a30.118 30.118 0 0 0-30.118 30.118v301.177a30.118 30.118 0 1 0 60.236 0V331.294a30.118 30.118 0 0 0-30.118-30.118zM512 361.412a30.118 30.118 0 0 0-30.118 30.117v30.118a30.118 30.118 0 0 0 60.236 0V391.53A30.118 30.118 0 0 0 512 361.412zM512 512a30.118 30.118 0 0 0-30.118 30.118v30.117a30.118 30.118 0 0 0 60.236 0v-30.117A30.118 30.118 0 0 0 512 512z',
},
null,
-1
)
const _hoisted_3$5U = [_hoisted_2$6E]
function _sfc_render$2M(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$82, _hoisted_3$5U)
}
var scaleToOriginal = /* @__PURE__ */ _export_sfc$2(_sfc_main$ap, [
['render', _sfc_render$2M],
])
const _sfc_main$ao = defineComponent({
name: 'School',
})
const _hoisted_1$81 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6D = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M224 128v704h576V128H224zm-32-64h640a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32z',
},
null,
-1
)
const _hoisted_3$5T = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M64 832h896v64H64zm256-640h128v96H320z',
},
null,
-1
)
const _hoisted_4$4o = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M384 832h256v-64a128 128 0 1 0-256 0v64zm128-256a192 192 0 0 1 192 192v128H320V768a192 192 0 0 1 192-192zM320 384h128v96H320zm256-192h128v96H576zm0 192h128v96H576z',
},
null,
-1
)
const _hoisted_5$3L = [_hoisted_2$6D, _hoisted_3$5T, _hoisted_4$4o]
function _sfc_render$2L(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$81, _hoisted_5$3L)
}
var school = /* @__PURE__ */ _export_sfc$2(_sfc_main$ao, [
['render', _sfc_render$2L],
])
const _sfc_main$an = defineComponent({
name: 'Scissor',
})
const _hoisted_1$80 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6C = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm512.064 578.368-106.88 152.768a160 160 0 1 1-23.36-78.208L472.96 522.56 196.864 128.256a32 32 0 1 1 52.48-36.736l393.024 561.344a160 160 0 1 1-23.36 78.208l-106.88-152.704zm54.4-189.248 208.384-297.6a32 32 0 0 1 52.48 36.736l-221.76 316.672-39.04-55.808zm-376.32 425.856a96 96 0 1 0 110.144-157.248 96 96 0 0 0-110.08 157.248zm643.84 0a96 96 0 1 0-110.08-157.248 96 96 0 0 0 110.08 157.248z',
},
null,
-1
)
const _hoisted_3$5S = [_hoisted_2$6C]
function _sfc_render$2K(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$80, _hoisted_3$5S)
}
var scissor = /* @__PURE__ */ _export_sfc$2(_sfc_main$an, [
['render', _sfc_render$2K],
])
const _sfc_main$am = defineComponent({
name: 'Search',
})
const _hoisted_1$7$ = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6B = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704z',
},
null,
-1
)
const _hoisted_3$5R = [_hoisted_2$6B]
function _sfc_render$2J(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7$, _hoisted_3$5R)
}
var search = /* @__PURE__ */ _export_sfc$2(_sfc_main$am, [
['render', _sfc_render$2J],
])
const _sfc_main$al = defineComponent({
name: 'Select',
})
const _hoisted_1$7_ = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6A = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M77.248 415.04a64 64 0 0 1 90.496 0l226.304 226.304L846.528 188.8a64 64 0 1 1 90.56 90.496l-543.04 543.04-316.8-316.8a64 64 0 0 1 0-90.496z',
},
null,
-1
)
const _hoisted_3$5Q = [_hoisted_2$6A]
function _sfc_render$2I(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7_, _hoisted_3$5Q)
}
var select$1 = /* @__PURE__ */ _export_sfc$2(_sfc_main$al, [
['render', _sfc_render$2I],
])
const _sfc_main$ak = defineComponent({
name: 'Sell',
})
const _hoisted_1$7Z = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6z = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M704 288h131.072a32 32 0 0 1 31.808 28.8L886.4 512h-64.384l-16-160H704v96a32 32 0 1 1-64 0v-96H384v96a32 32 0 0 1-64 0v-96H217.92l-51.2 512H512v64H131.328a32 32 0 0 1-31.808-35.2l57.6-576a32 32 0 0 1 31.808-28.8H320v-22.336C320 154.688 405.504 64 512 64s192 90.688 192 201.664v22.4zm-64 0v-22.336C640 189.248 582.272 128 512 128c-70.272 0-128 61.248-128 137.664v22.4h256zm201.408 483.84L768 698.496V928a32 32 0 1 1-64 0V698.496l-73.344 73.344a32 32 0 1 1-45.248-45.248l128-128a32 32 0 0 1 45.248 0l128 128a32 32 0 1 1-45.248 45.248z',
},
null,
-1
)
const _hoisted_3$5P = [_hoisted_2$6z]
function _sfc_render$2H(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7Z, _hoisted_3$5P)
}
var sell = /* @__PURE__ */ _export_sfc$2(_sfc_main$ak, [
['render', _sfc_render$2H],
])
const _sfc_main$aj = defineComponent({
name: 'SemiSelect',
})
const _hoisted_1$7Y = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6y = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M128 448h768q64 0 64 64t-64 64H128q-64 0-64-64t64-64z',
},
null,
-1
)
const _hoisted_3$5O = [_hoisted_2$6y]
function _sfc_render$2G(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7Y, _hoisted_3$5O)
}
var semiSelect = /* @__PURE__ */ _export_sfc$2(_sfc_main$aj, [
['render', _sfc_render$2G],
])
const _sfc_main$ai = defineComponent({
name: 'Service',
})
const _hoisted_1$7X = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6x = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M864 409.6a192 192 0 0 1-37.888 349.44A256.064 256.064 0 0 1 576 960h-96a32 32 0 1 1 0-64h96a192.064 192.064 0 0 0 181.12-128H736a32 32 0 0 1-32-32V416a32 32 0 0 1 32-32h32c10.368 0 20.544.832 30.528 2.432a288 288 0 0 0-573.056 0A193.235 193.235 0 0 1 256 384h32a32 32 0 0 1 32 32v320a32 32 0 0 1-32 32h-32a192 192 0 0 1-96-358.4 352 352 0 0 1 704 0zM256 448a128 128 0 1 0 0 256V448zm640 128a128 128 0 0 0-128-128v256a128 128 0 0 0 128-128z',
},
null,
-1
)
const _hoisted_3$5N = [_hoisted_2$6x]
function _sfc_render$2F(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7X, _hoisted_3$5N)
}
var service$1 = /* @__PURE__ */ _export_sfc$2(_sfc_main$ai, [
['render', _sfc_render$2F],
])
const _sfc_main$ah = defineComponent({
name: 'SetUp',
})
const _hoisted_1$7W = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6w = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M224 160a64 64 0 0 0-64 64v576a64 64 0 0 0 64 64h576a64 64 0 0 0 64-64V224a64 64 0 0 0-64-64H224zm0-64h576a128 128 0 0 1 128 128v576a128 128 0 0 1-128 128H224A128 128 0 0 1 96 800V224A128 128 0 0 1 224 96z',
},
null,
-1
)
const _hoisted_3$5M = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M384 416a64 64 0 1 0 0-128 64 64 0 0 0 0 128zm0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256z',
},
null,
-1
)
const _hoisted_4$4n = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M480 320h256q32 0 32 32t-32 32H480q-32 0-32-32t32-32zm160 416a64 64 0 1 0 0-128 64 64 0 0 0 0 128zm0 64a128 128 0 1 1 0-256 128 128 0 0 1 0 256z',
},
null,
-1
)
const _hoisted_5$3K = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M288 640h256q32 0 32 32t-32 32H288q-32 0-32-32t32-32z',
},
null,
-1
)
const _hoisted_6$3g = [
_hoisted_2$6w,
_hoisted_3$5M,
_hoisted_4$4n,
_hoisted_5$3K,
]
function _sfc_render$2E(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7W, _hoisted_6$3g)
}
var setUp = /* @__PURE__ */ _export_sfc$2(_sfc_main$ah, [
['render', _sfc_render$2E],
])
const _sfc_main$ag = defineComponent({
name: 'Setting',
})
const _hoisted_1$7V = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6v = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M600.704 64a32 32 0 0 1 30.464 22.208l35.2 109.376c14.784 7.232 28.928 15.36 42.432 24.512l112.384-24.192a32 32 0 0 1 34.432 15.36L944.32 364.8a32 32 0 0 1-4.032 37.504l-77.12 85.12a357.12 357.12 0 0 1 0 49.024l77.12 85.248a32 32 0 0 1 4.032 37.504l-88.704 153.6a32 32 0 0 1-34.432 15.296L708.8 803.904c-13.44 9.088-27.648 17.28-42.368 24.512l-35.264 109.376A32 32 0 0 1 600.704 960H423.296a32 32 0 0 1-30.464-22.208L357.696 828.48a351.616 351.616 0 0 1-42.56-24.64l-112.32 24.256a32 32 0 0 1-34.432-15.36L79.68 659.2a32 32 0 0 1 4.032-37.504l77.12-85.248a357.12 357.12 0 0 1 0-48.896l-77.12-85.248A32 32 0 0 1 79.68 364.8l88.704-153.6a32 32 0 0 1 34.432-15.296l112.32 24.256c13.568-9.152 27.776-17.408 42.56-24.64l35.2-109.312A32 32 0 0 1 423.232 64H600.64zm-23.424 64H446.72l-36.352 113.088-24.512 11.968a294.113 294.113 0 0 0-34.816 20.096l-22.656 15.36-116.224-25.088-65.28 113.152 79.68 88.192-1.92 27.136a293.12 293.12 0 0 0 0 40.192l1.92 27.136-79.808 88.192 65.344 113.152 116.224-25.024 22.656 15.296a294.113 294.113 0 0 0 34.816 20.096l24.512 11.968L446.72 896h130.688l36.48-113.152 24.448-11.904a288.282 288.282 0 0 0 34.752-20.096l22.592-15.296 116.288 25.024 65.28-113.152-79.744-88.192 1.92-27.136a293.12 293.12 0 0 0 0-40.256l-1.92-27.136 79.808-88.128-65.344-113.152-116.288 24.96-22.592-15.232a287.616 287.616 0 0 0-34.752-20.096l-24.448-11.904L577.344 128zM512 320a192 192 0 1 1 0 384 192 192 0 0 1 0-384zm0 64a128 128 0 1 0 0 256 128 128 0 0 0 0-256z',
},
null,
-1
)
const _hoisted_3$5L = [_hoisted_2$6v]
function _sfc_render$2D(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7V, _hoisted_3$5L)
}
var setting = /* @__PURE__ */ _export_sfc$2(_sfc_main$ag, [
['render', _sfc_render$2D],
])
const _sfc_main$af = defineComponent({
name: 'Share',
})
const _hoisted_1$7U = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6u = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm679.872 348.8-301.76 188.608a127.808 127.808 0 0 1 5.12 52.16l279.936 104.96a128 128 0 1 1-22.464 59.904l-279.872-104.96a128 128 0 1 1-16.64-166.272l301.696-188.608a128 128 0 1 1 33.92 54.272z',
},
null,
-1
)
const _hoisted_3$5K = [_hoisted_2$6u]
function _sfc_render$2C(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7U, _hoisted_3$5K)
}
var share = /* @__PURE__ */ _export_sfc$2(_sfc_main$af, [
['render', _sfc_render$2C],
])
const _sfc_main$ae = defineComponent({
name: 'Ship',
})
const _hoisted_1$7T = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6t = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 386.88V448h405.568a32 32 0 0 1 30.72 40.768l-76.48 267.968A192 192 0 0 1 687.168 896H336.832a192 192 0 0 1-184.64-139.264L75.648 488.768A32 32 0 0 1 106.368 448H448V117.888a32 32 0 0 1 47.36-28.096l13.888 7.616L512 96v2.88l231.68 126.4a32 32 0 0 1-2.048 57.216L512 386.88zm0-70.272 144.768-65.792L512 171.84v144.768zM512 512H148.864l18.24 64H856.96l18.24-64H512zM185.408 640l28.352 99.2A128 128 0 0 0 336.832 832h350.336a128 128 0 0 0 123.072-92.8l28.352-99.2H185.408z',
},
null,
-1
)
const _hoisted_3$5J = [_hoisted_2$6t]
function _sfc_render$2B(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7T, _hoisted_3$5J)
}
var ship = /* @__PURE__ */ _export_sfc$2(_sfc_main$ae, [
['render', _sfc_render$2B],
])
const _sfc_main$ad = defineComponent({
name: 'Shop',
})
const _hoisted_1$7S = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6s = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M704 704h64v192H256V704h64v64h384v-64zm188.544-152.192C894.528 559.616 896 567.616 896 576a96 96 0 1 1-192 0 96 96 0 1 1-192 0 96 96 0 1 1-192 0 96 96 0 1 1-192 0c0-8.384 1.408-16.384 3.392-24.192L192 128h640l60.544 423.808z',
},
null,
-1
)
const _hoisted_3$5I = [_hoisted_2$6s]
function _sfc_render$2A(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7S, _hoisted_3$5I)
}
var shop = /* @__PURE__ */ _export_sfc$2(_sfc_main$ad, [
['render', _sfc_render$2A],
])
const _sfc_main$ac = defineComponent({
name: 'ShoppingBag',
})
const _hoisted_1$7R = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6r = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M704 320v96a32 32 0 0 1-32 32h-32V320H384v128h-32a32 32 0 0 1-32-32v-96H192v576h640V320H704zm-384-64a192 192 0 1 1 384 0h160a32 32 0 0 1 32 32v640a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V288a32 32 0 0 1 32-32h160zm64 0h256a128 128 0 1 0-256 0z',
},
null,
-1
)
const _hoisted_3$5H = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M192 704h640v64H192z',
},
null,
-1
)
const _hoisted_4$4m = [_hoisted_2$6r, _hoisted_3$5H]
function _sfc_render$2z(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7R, _hoisted_4$4m)
}
var shoppingBag = /* @__PURE__ */ _export_sfc$2(_sfc_main$ac, [
['render', _sfc_render$2z],
])
const _sfc_main$ab = defineComponent({
name: 'ShoppingCartFull',
})
const _hoisted_1$7Q = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6q = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M432 928a48 48 0 1 1 0-96 48 48 0 0 1 0 96zm320 0a48 48 0 1 1 0-96 48 48 0 0 1 0 96zM96 128a32 32 0 0 1 0-64h160a32 32 0 0 1 31.36 25.728L320.64 256H928a32 32 0 0 1 31.296 38.72l-96 448A32 32 0 0 1 832 768H384a32 32 0 0 1-31.36-25.728L229.76 128H96zm314.24 576h395.904l82.304-384H333.44l76.8 384z',
},
null,
-1
)
const _hoisted_3$5G = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M699.648 256 608 145.984 516.352 256h183.296zm-140.8-151.04a64 64 0 0 1 98.304 0L836.352 320H379.648l179.2-215.04z',
},
null,
-1
)
const _hoisted_4$4l = [_hoisted_2$6q, _hoisted_3$5G]
function _sfc_render$2y(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7Q, _hoisted_4$4l)
}
var shoppingCartFull = /* @__PURE__ */ _export_sfc$2(_sfc_main$ab, [
['render', _sfc_render$2y],
])
const _sfc_main$aa = defineComponent({
name: 'ShoppingCart',
})
const _hoisted_1$7P = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6p = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M432 928a48 48 0 1 1 0-96 48 48 0 0 1 0 96zm320 0a48 48 0 1 1 0-96 48 48 0 0 1 0 96zM96 128a32 32 0 0 1 0-64h160a32 32 0 0 1 31.36 25.728L320.64 256H928a32 32 0 0 1 31.296 38.72l-96 448A32 32 0 0 1 832 768H384a32 32 0 0 1-31.36-25.728L229.76 128H96zm314.24 576h395.904l82.304-384H333.44l76.8 384z',
},
null,
-1
)
const _hoisted_3$5F = [_hoisted_2$6p]
function _sfc_render$2x(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7P, _hoisted_3$5F)
}
var shoppingCart = /* @__PURE__ */ _export_sfc$2(_sfc_main$aa, [
['render', _sfc_render$2x],
])
const _sfc_main$a9 = defineComponent({
name: 'Smoking',
})
const _hoisted_1$7O = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6o = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M256 576v128h640V576H256zm-32-64h704a32 32 0 0 1 32 32v192a32 32 0 0 1-32 32H224a32 32 0 0 1-32-32V544a32 32 0 0 1 32-32z',
},
null,
-1
)
const _hoisted_3$5E = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M704 576h64v128h-64zM256 64h64v320h-64zM128 192h64v192h-64zM64 512h64v256H64z',
},
null,
-1
)
const _hoisted_4$4k = [_hoisted_2$6o, _hoisted_3$5E]
function _sfc_render$2w(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7O, _hoisted_4$4k)
}
var smoking = /* @__PURE__ */ _export_sfc$2(_sfc_main$a9, [
['render', _sfc_render$2w],
])
const _sfc_main$a8 = defineComponent({
name: 'Soccer',
})
const _hoisted_1$7N = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6n = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M418.496 871.04 152.256 604.8c-16.512 94.016-2.368 178.624 42.944 224 44.928 44.928 129.344 58.752 223.296 42.24zm72.32-18.176a573.056 573.056 0 0 0 224.832-137.216 573.12 573.12 0 0 0 137.216-224.832L533.888 171.84a578.56 578.56 0 0 0-227.52 138.496A567.68 567.68 0 0 0 170.432 532.48l320.384 320.384zM871.04 418.496c16.512-93.952 2.688-178.368-42.24-223.296-44.544-44.544-128.704-58.048-222.592-41.536L871.04 418.496zM149.952 874.048c-112.96-112.96-88.832-408.96 111.168-608.96C461.056 65.152 760.96 36.928 874.048 149.952c113.024 113.024 86.784 411.008-113.152 610.944-199.936 199.936-497.92 226.112-610.944 113.152zm452.544-497.792 22.656-22.656a32 32 0 0 1 45.248 45.248l-22.656 22.656 45.248 45.248A32 32 0 1 1 647.744 512l-45.248-45.248L557.248 512l45.248 45.248a32 32 0 1 1-45.248 45.248L512 557.248l-45.248 45.248L512 647.744a32 32 0 1 1-45.248 45.248l-45.248-45.248-22.656 22.656a32 32 0 1 1-45.248-45.248l22.656-22.656-45.248-45.248A32 32 0 1 1 376.256 512l45.248 45.248L466.752 512l-45.248-45.248a32 32 0 1 1 45.248-45.248L512 466.752l45.248-45.248L512 376.256a32 32 0 0 1 45.248-45.248l45.248 45.248z',
},
null,
-1
)
const _hoisted_3$5D = [_hoisted_2$6n]
function _sfc_render$2v(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7N, _hoisted_3$5D)
}
var soccer = /* @__PURE__ */ _export_sfc$2(_sfc_main$a8, [
['render', _sfc_render$2v],
])
const _sfc_main$a7 = defineComponent({
name: 'SoldOut',
})
const _hoisted_1$7M = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6m = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M704 288h131.072a32 32 0 0 1 31.808 28.8L886.4 512h-64.384l-16-160H704v96a32 32 0 1 1-64 0v-96H384v96a32 32 0 0 1-64 0v-96H217.92l-51.2 512H512v64H131.328a32 32 0 0 1-31.808-35.2l57.6-576a32 32 0 0 1 31.808-28.8H320v-22.336C320 154.688 405.504 64 512 64s192 90.688 192 201.664v22.4zm-64 0v-22.336C640 189.248 582.272 128 512 128c-70.272 0-128 61.248-128 137.664v22.4h256zm201.408 476.16a32 32 0 1 1 45.248 45.184l-128 128a32 32 0 0 1-45.248 0l-128-128a32 32 0 1 1 45.248-45.248L704 837.504V608a32 32 0 1 1 64 0v229.504l73.408-73.408z',
},
null,
-1
)
const _hoisted_3$5C = [_hoisted_2$6m]
function _sfc_render$2u(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7M, _hoisted_3$5C)
}
var soldOut = /* @__PURE__ */ _export_sfc$2(_sfc_main$a7, [
['render', _sfc_render$2u],
])
const _sfc_main$a6 = defineComponent({
name: 'SortDown',
})
const _hoisted_1$7L = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6l = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M576 96v709.568L333.312 562.816A32 32 0 1 0 288 608l297.408 297.344A32 32 0 0 0 640 882.688V96a32 32 0 0 0-64 0z',
},
null,
-1
)
const _hoisted_3$5B = [_hoisted_2$6l]
function _sfc_render$2t(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7L, _hoisted_3$5B)
}
var sortDown = /* @__PURE__ */ _export_sfc$2(_sfc_main$a6, [
['render', _sfc_render$2t],
])
const _sfc_main$a5 = defineComponent({
name: 'SortUp',
})
const _hoisted_1$7K = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6k = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M384 141.248V928a32 32 0 1 0 64 0V218.56l242.688 242.688A32 32 0 1 0 736 416L438.592 118.656A32 32 0 0 0 384 141.248z',
},
null,
-1
)
const _hoisted_3$5A = [_hoisted_2$6k]
function _sfc_render$2s(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7K, _hoisted_3$5A)
}
var sortUp = /* @__PURE__ */ _export_sfc$2(_sfc_main$a5, [
['render', _sfc_render$2s],
])
const _sfc_main$a4 = defineComponent({
name: 'Sort',
})
const _hoisted_1$7J = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6j = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M384 96a32 32 0 0 1 64 0v786.752a32 32 0 0 1-54.592 22.656L95.936 608a32 32 0 0 1 0-45.312h.128a32 32 0 0 1 45.184 0L384 805.632V96zm192 45.248a32 32 0 0 1 54.592-22.592L928.064 416a32 32 0 0 1 0 45.312h-.128a32 32 0 0 1-45.184 0L640 218.496V928a32 32 0 1 1-64 0V141.248z',
},
null,
-1
)
const _hoisted_3$5z = [_hoisted_2$6j]
function _sfc_render$2r(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7J, _hoisted_3$5z)
}
var sort$3 = /* @__PURE__ */ _export_sfc$2(_sfc_main$a4, [
['render', _sfc_render$2r],
])
const _sfc_main$a3 = defineComponent({
name: 'Stamp',
})
const _hoisted_1$7I = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6i = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M624 475.968V640h144a128 128 0 0 1 128 128H128a128 128 0 0 1 128-128h144V475.968a192 192 0 1 1 224 0zM128 896v-64h768v64H128z',
},
null,
-1
)
const _hoisted_3$5y = [_hoisted_2$6i]
function _sfc_render$2q(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7I, _hoisted_3$5y)
}
var stamp = /* @__PURE__ */ _export_sfc$2(_sfc_main$a3, [
['render', _sfc_render$2q],
])
const _sfc_main$a2 = defineComponent({
name: 'StarFilled',
})
const _hoisted_1$7H = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6h = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M283.84 867.84 512 747.776l228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72z',
},
null,
-1
)
const _hoisted_3$5x = [_hoisted_2$6h]
function _sfc_render$2p(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7H, _hoisted_3$5x)
}
var starFilled = /* @__PURE__ */ _export_sfc$2(_sfc_main$a2, [
['render', _sfc_render$2p],
])
const _sfc_main$a1 = defineComponent({
name: 'Star',
})
const _hoisted_1$7G = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6g = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm512 747.84 228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72L512 747.84zM313.6 924.48a70.4 70.4 0 0 1-102.144-74.24l37.888-220.928L88.96 472.96A70.4 70.4 0 0 1 128 352.896l221.76-32.256 99.2-200.96a70.4 70.4 0 0 1 126.208 0l99.2 200.96 221.824 32.256a70.4 70.4 0 0 1 39.04 120.064L774.72 629.376l37.888 220.928a70.4 70.4 0 0 1-102.144 74.24L512 820.096l-198.4 104.32z',
},
null,
-1
)
const _hoisted_3$5w = [_hoisted_2$6g]
function _sfc_render$2o(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7G, _hoisted_3$5w)
}
var star = /* @__PURE__ */ _export_sfc$2(_sfc_main$a1, [
['render', _sfc_render$2o],
])
const _sfc_main$a0 = defineComponent({
name: 'Stopwatch',
})
const _hoisted_1$7F = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6f = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z',
},
null,
-1
)
const _hoisted_3$5v = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M672 234.88c-39.168 174.464-80 298.624-122.688 372.48-64 110.848-202.624 30.848-138.624-80C453.376 453.44 540.48 355.968 672 234.816z',
},
null,
-1
)
const _hoisted_4$4j = [_hoisted_2$6f, _hoisted_3$5v]
function _sfc_render$2n(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7F, _hoisted_4$4j)
}
var stopwatch = /* @__PURE__ */ _export_sfc$2(_sfc_main$a0, [
['render', _sfc_render$2n],
])
const _sfc_main$9$ = defineComponent({
name: 'SuccessFilled',
})
const _hoisted_1$7E = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6e = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336L456.192 600.384z',
},
null,
-1
)
const _hoisted_3$5u = [_hoisted_2$6e]
function _sfc_render$2m(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7E, _hoisted_3$5u)
}
var successFilled = /* @__PURE__ */ _export_sfc$2(_sfc_main$9$, [
['render', _sfc_render$2m],
])
const _sfc_main$9_ = defineComponent({
name: 'Sugar',
})
const _hoisted_1$7D = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6d = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm801.728 349.184 4.48 4.48a128 128 0 0 1 0 180.992L534.656 806.144a128 128 0 0 1-181.056 0l-4.48-4.48-19.392 109.696a64 64 0 0 1-108.288 34.176L78.464 802.56a64 64 0 0 1 34.176-108.288l109.76-19.328-4.544-4.544a128 128 0 0 1 0-181.056l271.488-271.488a128 128 0 0 1 181.056 0l4.48 4.48 19.392-109.504a64 64 0 0 1 108.352-34.048l142.592 143.04a64 64 0 0 1-34.24 108.16l-109.248 19.2zm-548.8 198.72h447.168v2.24l60.8-60.8a63.808 63.808 0 0 0 18.752-44.416h-426.88l-89.664 89.728a64.064 64.064 0 0 0-10.24 13.248zm0 64c2.752 4.736 6.144 9.152 10.176 13.248l135.744 135.744a64 64 0 0 0 90.496 0L638.4 611.904H252.928zm490.048-230.976L625.152 263.104a64 64 0 0 0-90.496 0L416.768 380.928h326.208zM123.712 757.312l142.976 142.976 24.32-137.6a25.6 25.6 0 0 0-29.696-29.632l-137.6 24.256zm633.6-633.344-24.32 137.472a25.6 25.6 0 0 0 29.632 29.632l137.28-24.064-142.656-143.04z',
},
null,
-1
)
const _hoisted_3$5t = [_hoisted_2$6d]
function _sfc_render$2l(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7D, _hoisted_3$5t)
}
var sugar = /* @__PURE__ */ _export_sfc$2(_sfc_main$9_, [
['render', _sfc_render$2l],
])
const _sfc_main$9Z = defineComponent({
name: 'Suitcase',
})
const _hoisted_1$7C = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6c = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M128 384h768v-64a64 64 0 0 0-64-64H192a64 64 0 0 0-64 64v64zm0 64v320a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64V448H128zm64-256h640a128 128 0 0 1 128 128v448a128 128 0 0 1-128 128H192A128 128 0 0 1 64 768V320a128 128 0 0 1 128-128z',
},
null,
-1
)
const _hoisted_3$5s = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M384 128v64h256v-64H384zm0-64h256a64 64 0 0 1 64 64v64a64 64 0 0 1-64 64H384a64 64 0 0 1-64-64v-64a64 64 0 0 1 64-64z',
},
null,
-1
)
const _hoisted_4$4i = [_hoisted_2$6c, _hoisted_3$5s]
function _sfc_render$2k(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7C, _hoisted_4$4i)
}
var suitcase = /* @__PURE__ */ _export_sfc$2(_sfc_main$9Z, [
['render', _sfc_render$2k],
])
const _sfc_main$9Y = defineComponent({
name: 'Sunny',
})
const _hoisted_1$7B = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6b = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 704a192 192 0 1 0 0-384 192 192 0 0 0 0 384zm0 64a256 256 0 1 1 0-512 256 256 0 0 1 0 512zm0-704a32 32 0 0 1 32 32v64a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32zm0 768a32 32 0 0 1 32 32v64a32 32 0 1 1-64 0v-64a32 32 0 0 1 32-32zM195.2 195.2a32 32 0 0 1 45.248 0l45.248 45.248a32 32 0 1 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248zm543.104 543.104a32 32 0 0 1 45.248 0l45.248 45.248a32 32 0 0 1-45.248 45.248l-45.248-45.248a32 32 0 0 1 0-45.248zM64 512a32 32 0 0 1 32-32h64a32 32 0 0 1 0 64H96a32 32 0 0 1-32-32zm768 0a32 32 0 0 1 32-32h64a32 32 0 1 1 0 64h-64a32 32 0 0 1-32-32zM195.2 828.8a32 32 0 0 1 0-45.248l45.248-45.248a32 32 0 0 1 45.248 45.248L240.448 828.8a32 32 0 0 1-45.248 0zm543.104-543.104a32 32 0 0 1 0-45.248l45.248-45.248a32 32 0 0 1 45.248 45.248l-45.248 45.248a32 32 0 0 1-45.248 0z',
},
null,
-1
)
const _hoisted_3$5r = [_hoisted_2$6b]
function _sfc_render$2j(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7B, _hoisted_3$5r)
}
var sunny = /* @__PURE__ */ _export_sfc$2(_sfc_main$9Y, [
['render', _sfc_render$2j],
])
const _sfc_main$9X = defineComponent({
name: 'Sunrise',
})
const _hoisted_1$7A = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$6a = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M32 768h960a32 32 0 1 1 0 64H32a32 32 0 1 1 0-64zm129.408-96a352 352 0 0 1 701.184 0h-64.32a288 288 0 0 0-572.544 0h-64.32zM512 128a32 32 0 0 1 32 32v96a32 32 0 0 1-64 0v-96a32 32 0 0 1 32-32zm407.296 168.704a32 32 0 0 1 0 45.248l-67.84 67.84a32 32 0 1 1-45.248-45.248l67.84-67.84a32 32 0 0 1 45.248 0zm-814.592 0a32 32 0 0 1 45.248 0l67.84 67.84a32 32 0 1 1-45.248 45.248l-67.84-67.84a32 32 0 0 1 0-45.248z',
},
null,
-1
)
const _hoisted_3$5q = [_hoisted_2$6a]
function _sfc_render$2i(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7A, _hoisted_3$5q)
}
var sunrise = /* @__PURE__ */ _export_sfc$2(_sfc_main$9X, [
['render', _sfc_render$2i],
])
const _sfc_main$9W = defineComponent({
name: 'Sunset',
})
const _hoisted_1$7z = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$69 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M82.56 640a448 448 0 1 1 858.88 0h-67.2a384 384 0 1 0-724.288 0H82.56zM32 704h960q32 0 32 32t-32 32H32q-32 0-32-32t32-32zm256 128h448q32 0 32 32t-32 32H288q-32 0-32-32t32-32z',
},
null,
-1
)
const _hoisted_3$5p = [_hoisted_2$69]
function _sfc_render$2h(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7z, _hoisted_3$5p)
}
var sunset = /* @__PURE__ */ _export_sfc$2(_sfc_main$9W, [
['render', _sfc_render$2h],
])
const _sfc_main$9V = defineComponent({
name: 'SwitchButton',
})
const _hoisted_1$7y = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$68 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M352 159.872V230.4a352 352 0 1 0 320 0v-70.528A416.128 416.128 0 0 1 512 960a416 416 0 0 1-160-800.128z',
},
null,
-1
)
const _hoisted_3$5o = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 64q32 0 32 32v320q0 32-32 32t-32-32V96q0-32 32-32z',
},
null,
-1
)
const _hoisted_4$4h = [_hoisted_2$68, _hoisted_3$5o]
function _sfc_render$2g(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7y, _hoisted_4$4h)
}
var switchButton = /* @__PURE__ */ _export_sfc$2(_sfc_main$9V, [
['render', _sfc_render$2g],
])
const _sfc_main$9U = defineComponent({
name: 'Switch',
})
const _hoisted_1$7x = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$67 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M118.656 438.656a32 32 0 0 1 0-45.248L416 96l4.48-3.776A32 32 0 0 1 461.248 96l3.712 4.48a32.064 32.064 0 0 1-3.712 40.832L218.56 384H928a32 32 0 1 1 0 64H141.248a32 32 0 0 1-22.592-9.344zM64 608a32 32 0 0 1 32-32h786.752a32 32 0 0 1 22.656 54.592L608 928l-4.48 3.776a32.064 32.064 0 0 1-40.832-49.024L805.632 640H96a32 32 0 0 1-32-32z',
},
null,
-1
)
const _hoisted_3$5n = [_hoisted_2$67]
function _sfc_render$2f(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7x, _hoisted_3$5n)
}
var _switch = /* @__PURE__ */ _export_sfc$2(_sfc_main$9U, [
['render', _sfc_render$2f],
])
const _sfc_main$9T = defineComponent({
name: 'TakeawayBox',
})
const _hoisted_1$7w = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$66 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M832 384H192v448h640V384zM96 320h832V128H96v192zm800 64v480a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V384H64a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32h896a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32h-64zM416 512h192a32 32 0 0 1 0 64H416a32 32 0 0 1 0-64z',
},
null,
-1
)
const _hoisted_3$5m = [_hoisted_2$66]
function _sfc_render$2e(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7w, _hoisted_3$5m)
}
var takeawayBox = /* @__PURE__ */ _export_sfc$2(_sfc_main$9T, [
['render', _sfc_render$2e],
])
const _sfc_main$9S = defineComponent({
name: 'Ticket',
})
const _hoisted_1$7v = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$65 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M640 832H64V640a128 128 0 1 0 0-256V192h576v160h64V192h256v192a128 128 0 1 0 0 256v192H704V672h-64v160zm0-416v192h64V416h-64z',
},
null,
-1
)
const _hoisted_3$5l = [_hoisted_2$65]
function _sfc_render$2d(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7v, _hoisted_3$5l)
}
var ticket = /* @__PURE__ */ _export_sfc$2(_sfc_main$9S, [
['render', _sfc_render$2d],
])
const _sfc_main$9R = defineComponent({
name: 'Tickets',
})
const _hoisted_1$7u = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$64 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M192 128v768h640V128H192zm-32-64h704a32 32 0 0 1 32 32v832a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm160 448h384v64H320v-64zm0-192h192v64H320v-64zm0 384h384v64H320v-64z',
},
null,
-1
)
const _hoisted_3$5k = [_hoisted_2$64]
function _sfc_render$2c(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7u, _hoisted_3$5k)
}
var tickets = /* @__PURE__ */ _export_sfc$2(_sfc_main$9R, [
['render', _sfc_render$2c],
])
const _sfc_main$9Q = defineComponent({
name: 'Timer',
})
const _hoisted_1$7t = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$63 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 896a320 320 0 1 0 0-640 320 320 0 0 0 0 640zm0 64a384 384 0 1 1 0-768 384 384 0 0 1 0 768z',
},
null,
-1
)
const _hoisted_3$5j = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 320a32 32 0 0 1 32 32l-.512 224a32 32 0 1 1-64 0L480 352a32 32 0 0 1 32-32z',
},
null,
-1
)
const _hoisted_4$4g = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M448 576a64 64 0 1 0 128 0 64 64 0 1 0-128 0zm96-448v128h-64V128h-96a32 32 0 0 1 0-64h256a32 32 0 1 1 0 64h-96z',
},
null,
-1
)
const _hoisted_5$3J = [_hoisted_2$63, _hoisted_3$5j, _hoisted_4$4g]
function _sfc_render$2b(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7t, _hoisted_5$3J)
}
var timer = /* @__PURE__ */ _export_sfc$2(_sfc_main$9Q, [
['render', _sfc_render$2b],
])
const _sfc_main$9P = defineComponent({
name: 'ToiletPaper',
})
const _hoisted_1$7s = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$62 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M595.2 128H320a192 192 0 0 0-192 192v576h384V352c0-90.496 32.448-171.2 83.2-224zM736 64c123.712 0 224 128.96 224 288S859.712 640 736 640H576v320H64V320A256 256 0 0 1 320 64h416zM576 352v224h160c84.352 0 160-97.28 160-224s-75.648-224-160-224-160 97.28-160 224z',
},
null,
-1
)
const _hoisted_3$5i = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M736 448c-35.328 0-64-43.008-64-96s28.672-96 64-96 64 43.008 64 96-28.672 96-64 96z',
},
null,
-1
)
const _hoisted_4$4f = [_hoisted_2$62, _hoisted_3$5i]
function _sfc_render$2a(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7s, _hoisted_4$4f)
}
var toiletPaper = /* @__PURE__ */ _export_sfc$2(_sfc_main$9P, [
['render', _sfc_render$2a],
])
const _sfc_main$9O = defineComponent({
name: 'Tools',
})
const _hoisted_1$7r = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$61 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M764.416 254.72a351.68 351.68 0 0 1 86.336 149.184H960v192.064H850.752a351.68 351.68 0 0 1-86.336 149.312l54.72 94.72-166.272 96-54.592-94.72a352.64 352.64 0 0 1-172.48 0L371.136 936l-166.272-96 54.72-94.72a351.68 351.68 0 0 1-86.336-149.312H64v-192h109.248a351.68 351.68 0 0 1 86.336-149.312L204.8 160l166.208-96h.192l54.656 94.592a352.64 352.64 0 0 1 172.48 0L652.8 64h.128L819.2 160l-54.72 94.72zM704 499.968a192 192 0 1 0-384 0 192 192 0 0 0 384 0z',
},
null,
-1
)
const _hoisted_3$5h = [_hoisted_2$61]
function _sfc_render$29(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7r, _hoisted_3$5h)
}
var tools = /* @__PURE__ */ _export_sfc$2(_sfc_main$9O, [
['render', _sfc_render$29],
])
const _sfc_main$9N = defineComponent({
name: 'TopLeft',
})
const _hoisted_1$7q = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$60 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M256 256h416a32 32 0 1 0 0-64H224a32 32 0 0 0-32 32v448a32 32 0 0 0 64 0V256z',
},
null,
-1
)
const _hoisted_3$5g = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M246.656 201.344a32 32 0 0 0-45.312 45.312l544 544a32 32 0 0 0 45.312-45.312l-544-544z',
},
null,
-1
)
const _hoisted_4$4e = [_hoisted_2$60, _hoisted_3$5g]
function _sfc_render$28(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7q, _hoisted_4$4e)
}
var topLeft = /* @__PURE__ */ _export_sfc$2(_sfc_main$9N, [
['render', _sfc_render$28],
])
const _sfc_main$9M = defineComponent({
name: 'TopRight',
})
const _hoisted_1$7p = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$5$ = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M768 256H353.6a32 32 0 1 1 0-64H800a32 32 0 0 1 32 32v448a32 32 0 0 1-64 0V256z',
},
null,
-1
)
const _hoisted_3$5f = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M777.344 201.344a32 32 0 0 1 45.312 45.312l-544 544a32 32 0 0 1-45.312-45.312l544-544z',
},
null,
-1
)
const _hoisted_4$4d = [_hoisted_2$5$, _hoisted_3$5f]
function _sfc_render$27(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7p, _hoisted_4$4d)
}
var topRight = /* @__PURE__ */ _export_sfc$2(_sfc_main$9M, [
['render', _sfc_render$27],
])
const _sfc_main$9L = defineComponent({
name: 'Top',
})
const _hoisted_1$7o = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$5_ = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M572.235 205.282v600.365a30.118 30.118 0 1 1-60.235 0V205.282L292.382 438.633a28.913 28.913 0 0 1-42.646 0 33.43 33.43 0 0 1 0-45.236l271.058-288.045a28.913 28.913 0 0 1 42.647 0L834.5 393.397a33.43 33.43 0 0 1 0 45.176 28.913 28.913 0 0 1-42.647 0l-219.618-233.23z',
},
null,
-1
)
const _hoisted_3$5e = [_hoisted_2$5_]
function _sfc_render$26(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7o, _hoisted_3$5e)
}
var top$1 = /* @__PURE__ */ _export_sfc$2(_sfc_main$9L, [
['render', _sfc_render$26],
])
const _sfc_main$9K = defineComponent({
name: 'TrendCharts',
})
const _hoisted_1$7n = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$5Z = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M128 896V128h768v768H128zm291.712-327.296 128 102.4 180.16-201.792-47.744-42.624-139.84 156.608-128-102.4-180.16 201.792 47.744 42.624 139.84-156.608zM816 352a48 48 0 1 0-96 0 48 48 0 0 0 96 0z',
},
null,
-1
)
const _hoisted_3$5d = [_hoisted_2$5Z]
function _sfc_render$25(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7n, _hoisted_3$5d)
}
var trendCharts = /* @__PURE__ */ _export_sfc$2(_sfc_main$9K, [
['render', _sfc_render$25],
])
const _sfc_main$9J = defineComponent({
name: 'Trophy',
})
const _hoisted_1$7m = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$5Y = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M480 896V702.08A256.256 256.256 0 0 1 264.064 512h-32.64a96 96 0 0 1-91.968-68.416L93.632 290.88a76.8 76.8 0 0 1 73.6-98.88H256V96a32 32 0 0 1 32-32h448a32 32 0 0 1 32 32v96h88.768a76.8 76.8 0 0 1 73.6 98.88L884.48 443.52A96 96 0 0 1 792.576 512h-32.64A256.256 256.256 0 0 1 544 702.08V896h128a32 32 0 1 1 0 64H352a32 32 0 1 1 0-64h128zm224-448V128H320v320a192 192 0 1 0 384 0zm64 0h24.576a32 32 0 0 0 30.656-22.784l45.824-152.768A12.8 12.8 0 0 0 856.768 256H768v192zm-512 0V256h-88.768a12.8 12.8 0 0 0-12.288 16.448l45.824 152.768A32 32 0 0 0 231.424 448H256z',
},
null,
-1
)
const _hoisted_3$5c = [_hoisted_2$5Y]
function _sfc_render$24(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7m, _hoisted_3$5c)
}
var trophy = /* @__PURE__ */ _export_sfc$2(_sfc_main$9J, [
['render', _sfc_render$24],
])
const _sfc_main$9I = defineComponent({
name: 'TurnOff',
})
const _hoisted_1$7l = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$5X = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M329.956 257.138a254.862 254.862 0 0 0 0 509.724h364.088a254.862 254.862 0 0 0 0-509.724H329.956zm0-72.818h364.088a327.68 327.68 0 1 1 0 655.36H329.956a327.68 327.68 0 1 1 0-655.36z',
},
null,
-1
)
const _hoisted_3$5b = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M329.956 621.227a109.227 109.227 0 1 0 0-218.454 109.227 109.227 0 0 0 0 218.454zm0 72.817a182.044 182.044 0 1 1 0-364.088 182.044 182.044 0 0 1 0 364.088z',
},
null,
-1
)
const _hoisted_4$4c = [_hoisted_2$5X, _hoisted_3$5b]
function _sfc_render$23(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7l, _hoisted_4$4c)
}
var turnOff = /* @__PURE__ */ _export_sfc$2(_sfc_main$9I, [
['render', _sfc_render$23],
])
const _sfc_main$9H = defineComponent({
name: 'Umbrella',
})
const _hoisted_1$7k = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$5W = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M320 768a32 32 0 1 1 64 0 64 64 0 0 0 128 0V512H64a448 448 0 1 1 896 0H576v256a128 128 0 1 1-256 0zm570.688-320a384.128 384.128 0 0 0-757.376 0h757.376z',
},
null,
-1
)
const _hoisted_3$5a = [_hoisted_2$5W]
function _sfc_render$22(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7k, _hoisted_3$5a)
}
var umbrella = /* @__PURE__ */ _export_sfc$2(_sfc_main$9H, [
['render', _sfc_render$22],
])
const _sfc_main$9G = defineComponent({
name: 'Unlock',
})
const _hoisted_1$7j = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$5V = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M224 448a32 32 0 0 0-32 32v384a32 32 0 0 0 32 32h576a32 32 0 0 0 32-32V480a32 32 0 0 0-32-32H224zm0-64h576a96 96 0 0 1 96 96v384a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96V480a96 96 0 0 1 96-96z',
},
null,
-1
)
const _hoisted_3$59 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 544a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V576a32 32 0 0 1 32-32zm178.304-295.296A192.064 192.064 0 0 0 320 320v64h352l96 38.4V448H256V320a256 256 0 0 1 493.76-95.104l-59.456 23.808z',
},
null,
-1
)
const _hoisted_4$4b = [_hoisted_2$5V, _hoisted_3$59]
function _sfc_render$21(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7j, _hoisted_4$4b)
}
var unlock = /* @__PURE__ */ _export_sfc$2(_sfc_main$9G, [
['render', _sfc_render$21],
])
const _sfc_main$9F = defineComponent({
name: 'UploadFilled',
})
const _hoisted_1$7i = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$5U = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M544 864V672h128L512 480 352 672h128v192H320v-1.6c-5.376.32-10.496 1.6-16 1.6A240 240 0 0 1 64 624c0-123.136 93.12-223.488 212.608-237.248A239.808 239.808 0 0 1 512 192a239.872 239.872 0 0 1 235.456 194.752c119.488 13.76 212.48 114.112 212.48 237.248a240 240 0 0 1-240 240c-5.376 0-10.56-1.28-16-1.6v1.6H544z',
},
null,
-1
)
const _hoisted_3$58 = [_hoisted_2$5U]
function _sfc_render$20(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7i, _hoisted_3$58)
}
var uploadFilled = /* @__PURE__ */ _export_sfc$2(_sfc_main$9F, [
['render', _sfc_render$20],
])
const _sfc_main$9E = defineComponent({
name: 'Upload',
})
const _hoisted_1$7h = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$5T = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64zm384-578.304V704h-64V247.296L237.248 490.048 192 444.8 508.8 128l316.8 316.8-45.312 45.248L544 253.696z',
},
null,
-1
)
const _hoisted_3$57 = [_hoisted_2$5T]
function _sfc_render$1$(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7h, _hoisted_3$57)
}
var upload = /* @__PURE__ */ _export_sfc$2(_sfc_main$9E, [
['render', _sfc_render$1$],
])
const _sfc_main$9D = defineComponent({
name: 'UserFilled',
})
const _hoisted_1$7g = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$5S = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M288 320a224 224 0 1 0 448 0 224 224 0 1 0-448 0zm544 608H160a32 32 0 0 1-32-32v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 0 1-32 32z',
},
null,
-1
)
const _hoisted_3$56 = [_hoisted_2$5S]
function _sfc_render$1_(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7g, _hoisted_3$56)
}
var userFilled = /* @__PURE__ */ _export_sfc$2(_sfc_main$9D, [
['render', _sfc_render$1_],
])
const _sfc_main$9C = defineComponent({
name: 'User',
})
const _hoisted_1$7f = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$5R = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 512a192 192 0 1 0 0-384 192 192 0 0 0 0 384zm0 64a256 256 0 1 1 0-512 256 256 0 0 1 0 512zm320 320v-96a96 96 0 0 0-96-96H288a96 96 0 0 0-96 96v96a32 32 0 1 1-64 0v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 1 1-64 0z',
},
null,
-1
)
const _hoisted_3$55 = [_hoisted_2$5R]
function _sfc_render$1Z(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7f, _hoisted_3$55)
}
var user = /* @__PURE__ */ _export_sfc$2(_sfc_main$9C, [
['render', _sfc_render$1Z],
])
const _sfc_main$9B = defineComponent({
name: 'Van',
})
const _hoisted_1$7e = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$5Q = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M128.896 736H96a32 32 0 0 1-32-32V224a32 32 0 0 1 32-32h576a32 32 0 0 1 32 32v96h164.544a32 32 0 0 1 31.616 27.136l54.144 352A32 32 0 0 1 922.688 736h-91.52a144 144 0 1 1-286.272 0H415.104a144 144 0 1 1-286.272 0zm23.36-64a143.872 143.872 0 0 1 239.488 0H568.32c17.088-25.6 42.24-45.376 71.744-55.808V256H128v416h24.256zm655.488 0h77.632l-19.648-128H704v64.896A144 144 0 0 1 807.744 672zm48.128-192-14.72-96H704v96h151.872zM688 832a80 80 0 1 0 0-160 80 80 0 0 0 0 160zm-416 0a80 80 0 1 0 0-160 80 80 0 0 0 0 160z',
},
null,
-1
)
const _hoisted_3$54 = [_hoisted_2$5Q]
function _sfc_render$1Y(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7e, _hoisted_3$54)
}
var van = /* @__PURE__ */ _export_sfc$2(_sfc_main$9B, [
['render', _sfc_render$1Y],
])
const _sfc_main$9A = defineComponent({
name: 'VideoCameraFilled',
})
const _hoisted_1$7d = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$5P = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm768 576 192-64v320l-192-64v96a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V480a32 32 0 0 1 32-32h640a32 32 0 0 1 32 32v96zM192 768v64h384v-64H192zm192-480a160 160 0 0 1 320 0 160 160 0 0 1-320 0zm64 0a96 96 0 1 0 192.064-.064A96 96 0 0 0 448 288zm-320 32a128 128 0 1 1 256.064.064A128 128 0 0 1 128 320zm64 0a64 64 0 1 0 128 0 64 64 0 0 0-128 0z',
},
null,
-1
)
const _hoisted_3$53 = [_hoisted_2$5P]
function _sfc_render$1X(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7d, _hoisted_3$53)
}
var videoCameraFilled = /* @__PURE__ */ _export_sfc$2(_sfc_main$9A, [
['render', _sfc_render$1X],
])
const _sfc_main$9z = defineComponent({
name: 'VideoCamera',
})
const _hoisted_1$7c = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$5O = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M704 768V256H128v512h576zm64-416 192-96v512l-192-96v128a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V224a32 32 0 0 1 32-32h640a32 32 0 0 1 32 32v128zm0 71.552v176.896l128 64V359.552l-128 64zM192 320h192v64H192v-64z',
},
null,
-1
)
const _hoisted_3$52 = [_hoisted_2$5O]
function _sfc_render$1W(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7c, _hoisted_3$52)
}
var videoCamera = /* @__PURE__ */ _export_sfc$2(_sfc_main$9z, [
['render', _sfc_render$1W],
])
const _sfc_main$9y = defineComponent({
name: 'VideoPause',
})
const _hoisted_1$7b = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$5N = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm0 832a384 384 0 0 0 0-768 384 384 0 0 0 0 768zm-96-544q32 0 32 32v256q0 32-32 32t-32-32V384q0-32 32-32zm192 0q32 0 32 32v256q0 32-32 32t-32-32V384q0-32 32-32z',
},
null,
-1
)
const _hoisted_3$51 = [_hoisted_2$5N]
function _sfc_render$1V(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7b, _hoisted_3$51)
}
var videoPause = /* @__PURE__ */ _export_sfc$2(_sfc_main$9y, [
['render', _sfc_render$1V],
])
const _sfc_main$9x = defineComponent({
name: 'VideoPlay',
})
const _hoisted_1$7a = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$5M = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm0 832a384 384 0 0 0 0-768 384 384 0 0 0 0 768zm-48-247.616L668.608 512 464 375.616v272.768zm10.624-342.656 249.472 166.336a48 48 0 0 1 0 79.872L474.624 718.272A48 48 0 0 1 400 678.336V345.6a48 48 0 0 1 74.624-39.936z',
},
null,
-1
)
const _hoisted_3$50 = [_hoisted_2$5M]
function _sfc_render$1U(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$7a, _hoisted_3$50)
}
var videoPlay = /* @__PURE__ */ _export_sfc$2(_sfc_main$9x, [
['render', _sfc_render$1U],
])
const _sfc_main$9w = defineComponent({
name: 'View',
})
const _hoisted_1$79 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$5L = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 160c320 0 512 352 512 352S832 864 512 864 0 512 0 512s192-352 512-352zm0 64c-225.28 0-384.128 208.064-436.8 288 52.608 79.872 211.456 288 436.8 288 225.28 0 384.128-208.064 436.8-288-52.608-79.872-211.456-288-436.8-288zm0 64a224 224 0 1 1 0 448 224 224 0 0 1 0-448zm0 64a160.192 160.192 0 0 0-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160z',
},
null,
-1
)
const _hoisted_3$4$ = [_hoisted_2$5L]
function _sfc_render$1T(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$79, _hoisted_3$4$)
}
var view = /* @__PURE__ */ _export_sfc$2(_sfc_main$9w, [
['render', _sfc_render$1T],
])
const _sfc_main$9v = defineComponent({
name: 'WalletFilled',
})
const _hoisted_1$78 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$5K = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M688 512a112 112 0 1 0 0 224h208v160H128V352h768v160H688zm32 160h-32a48 48 0 0 1 0-96h32a48 48 0 0 1 0 96zm-80-544 128 160H384l256-160z',
},
null,
-1
)
const _hoisted_3$4_ = [_hoisted_2$5K]
function _sfc_render$1S(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$78, _hoisted_3$4_)
}
var walletFilled = /* @__PURE__ */ _export_sfc$2(_sfc_main$9v, [
['render', _sfc_render$1S],
])
const _sfc_main$9u = defineComponent({
name: 'Wallet',
})
const _hoisted_1$77 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$5J = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M640 288h-64V128H128v704h384v32a32 32 0 0 0 32 32H96a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32h512a32 32 0 0 1 32 32v192z',
},
null,
-1
)
const _hoisted_3$4Z = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M128 320v512h768V320H128zm-32-64h832a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V288a32 32 0 0 1 32-32z',
},
null,
-1
)
const _hoisted_4$4a = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M704 640a64 64 0 1 1 0-128 64 64 0 0 1 0 128z',
},
null,
-1
)
const _hoisted_5$3I = [_hoisted_2$5J, _hoisted_3$4Z, _hoisted_4$4a]
function _sfc_render$1R(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$77, _hoisted_5$3I)
}
var wallet = /* @__PURE__ */ _export_sfc$2(_sfc_main$9u, [
['render', _sfc_render$1R],
])
const _sfc_main$9t = defineComponent({
name: 'WarningFilled',
})
const _hoisted_1$76 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$5I = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm0 192a58.432 58.432 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.432 58.432 0 0 0 512 256zm0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4z',
},
null,
-1
)
const _hoisted_3$4Y = [_hoisted_2$5I]
function _sfc_render$1Q(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$76, _hoisted_3$4Y)
}
var warningFilled = /* @__PURE__ */ _export_sfc$2(_sfc_main$9t, [
['render', _sfc_render$1Q],
])
const _sfc_main$9s = defineComponent({
name: 'Warning',
})
const _hoisted_1$75 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$5H = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm0 832a384 384 0 0 0 0-768 384 384 0 0 0 0 768zm48-176a48 48 0 1 1-96 0 48 48 0 0 1 96 0zm-48-464a32 32 0 0 1 32 32v288a32 32 0 0 1-64 0V288a32 32 0 0 1 32-32z',
},
null,
-1
)
const _hoisted_3$4X = [_hoisted_2$5H]
function _sfc_render$1P(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$75, _hoisted_3$4X)
}
var warning$1 = /* @__PURE__ */ _export_sfc$2(_sfc_main$9s, [
['render', _sfc_render$1P],
])
const _sfc_main$9r = defineComponent({
name: 'Watch',
})
const _hoisted_1$74 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$5G = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M512 768a256 256 0 1 0 0-512 256 256 0 0 0 0 512zm0 64a320 320 0 1 1 0-640 320 320 0 0 1 0 640z',
},
null,
-1
)
const _hoisted_3$4W = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M480 352a32 32 0 0 1 32 32v160a32 32 0 0 1-64 0V384a32 32 0 0 1 32-32z',
},
null,
-1
)
const _hoisted_4$49 = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M480 512h128q32 0 32 32t-32 32H480q-32 0-32-32t32-32zm128-256V128H416v128h-64V64h320v192h-64zM416 768v128h192V768h64v192H352V768h64z',
},
null,
-1
)
const _hoisted_5$3H = [_hoisted_2$5G, _hoisted_3$4W, _hoisted_4$49]
function _sfc_render$1O(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$74, _hoisted_5$3H)
}
var watch = /* @__PURE__ */ _export_sfc$2(_sfc_main$9r, [
['render', _sfc_render$1O],
])
const _sfc_main$9q = defineComponent({
name: 'Watermelon',
})
const _hoisted_1$73 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$5F = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm683.072 600.32-43.648 162.816-61.824-16.512 53.248-198.528L576 493.248l-158.4 158.4-45.248-45.248 158.4-158.4-55.616-55.616-198.528 53.248-16.512-61.824 162.816-43.648L282.752 200A384 384 0 0 0 824 741.248L683.072 600.32zm231.552 141.056a448 448 0 1 1-632-632l632 632z',
},
null,
-1
)
const _hoisted_3$4V = [_hoisted_2$5F]
function _sfc_render$1N(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$73, _hoisted_3$4V)
}
var watermelon = /* @__PURE__ */ _export_sfc$2(_sfc_main$9q, [
['render', _sfc_render$1N],
])
const _sfc_main$9p = defineComponent({
name: 'WindPower',
})
const _hoisted_1$72 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$5E = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'M160 64q32 0 32 32v832q0 32-32 32t-32-32V96q0-32 32-32zm416 354.624 128-11.584V168.96l-128-11.52v261.12zm-64 5.824V151.552L320 134.08V160h-64V64l616.704 56.064A96 96 0 0 1 960 215.68v144.64a96 96 0 0 1-87.296 95.616L256 512V224h64v217.92l192-17.472zm256-23.232 98.88-8.96A32 32 0 0 0 896 360.32V215.68a32 32 0 0 0-29.12-31.872l-98.88-8.96v226.368z',
},
null,
-1
)
const _hoisted_3$4U = [_hoisted_2$5E]
function _sfc_render$1M(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$72, _hoisted_3$4U)
}
var windPower = /* @__PURE__ */ _export_sfc$2(_sfc_main$9p, [
['render', _sfc_render$1M],
])
const _sfc_main$9o = defineComponent({
name: 'ZoomIn',
})
const _hoisted_1$71 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$5D = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704zm-32-384v-96a32 32 0 0 1 64 0v96h96a32 32 0 0 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64h96z',
},
null,
-1
)
const _hoisted_3$4T = [_hoisted_2$5D]
function _sfc_render$1L(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$71, _hoisted_3$4T)
}
var zoomIn = /* @__PURE__ */ _export_sfc$2(_sfc_main$9o, [
['render', _sfc_render$1L],
])
const _sfc_main$9n = defineComponent({
name: 'ZoomOut',
})
const _hoisted_1$70 = {
viewBox: '0 0 1024 1024',
xmlns: 'http://www.w3.org/2000/svg',
}
const _hoisted_2$5C = /* @__PURE__ */ createElementVNode(
'path',
{
fill: 'currentColor',
d: 'm795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704zM352 448h256a32 32 0 0 1 0 64H352a32 32 0 0 1 0-64z',
},
null,
-1
)
const _hoisted_3$4S = [_hoisted_2$5C]
function _sfc_render$1K(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('svg', _hoisted_1$70, _hoisted_3$4S)
}
var zoomOut = /* @__PURE__ */ _export_sfc$2(_sfc_main$9n, [
['render', _sfc_render$1K],
])
var index$s = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
AddLocation: addLocation,
Aim: aim,
AlarmClock: alarmClock,
Apple: apple,
ArrowDownBold: arrowDownBold,
ArrowDown: arrowDown,
ArrowLeftBold: arrowLeftBold,
ArrowLeft: arrowLeft,
ArrowRightBold: arrowRightBold,
ArrowRight: arrowRight,
ArrowUpBold: arrowUpBold,
ArrowUp: arrowUp,
Avatar: avatar,
Back: back$1,
Baseball: baseball,
Basketball: basketball,
BellFilled: bellFilled,
Bell: bell,
Bicycle: bicycle,
BottomLeft: bottomLeft,
BottomRight: bottomRight,
Bottom: bottom$1,
Bowl: bowl,
Box: box$1,
Briefcase: briefcase,
BrushFilled: brushFilled,
Brush: brush$2,
Burger: burger,
Calendar: calendar,
CameraFilled: cameraFilled,
Camera: camera,
CaretBottom: caretBottom,
CaretLeft: caretLeft,
CaretRight: caretRight,
CaretTop: caretTop,
Cellphone: cellphone,
ChatDotRound: chatDotRound,
ChatDotSquare: chatDotSquare,
ChatLineRound: chatLineRound,
ChatLineSquare: chatLineSquare,
ChatRound: chatRound,
ChatSquare: chatSquare,
Check: check$1,
Checked: checked,
Cherry: cherry,
Chicken: chicken,
CircleCheckFilled: circleCheckFilled,
CircleCheck: circleCheck,
CircleCloseFilled: circleCloseFilled,
CircleClose: circleClose,
CirclePlusFilled: circlePlusFilled,
CirclePlus: circlePlus,
Clock: clock,
CloseBold: closeBold,
Close: close$2,
Cloudy: cloudy,
CoffeeCup: coffeeCup,
Coffee: coffee,
Coin: coin,
ColdDrink: coldDrink,
CollectionTag: collectionTag,
Collection: collection,
Comment: comment,
Compass: compass,
Connection: connection,
Coordinate: coordinate,
CopyDocument: copyDocument,
Cpu: cpu,
CreditCard: creditCard,
Crop: crop,
DArrowLeft: dArrowLeft,
DArrowRight: dArrowRight,
DCaret: dCaret,
DataAnalysis: dataAnalysis,
DataBoard: dataBoard,
DataLine: dataLine,
DeleteFilled: deleteFilled,
DeleteLocation: deleteLocation,
Delete: _delete,
Dessert: dessert,
Discount: discount,
DishDot: dishDot,
Dish: dish,
DocumentAdd: documentAdd,
DocumentChecked: documentChecked,
DocumentCopy: documentCopy,
DocumentDelete: documentDelete,
DocumentRemove: documentRemove,
Document: document$4,
Download: download$1,
Drizzling: drizzling,
EditPen: editPen,
Edit: edit,
ElemeFilled: elemeFilled,
Eleme: eleme,
ElementPlus: elementPlus,
Expand: expand,
Failed: failed,
Female: female,
Files: files$1,
Film: film,
Filter: filter$3,
Finished: finished,
FirstAidKit: firstAidKit,
Flag: flag,
Fold: fold,
FolderAdd: folderAdd,
FolderChecked: folderChecked,
FolderDelete: folderDelete,
FolderOpened: folderOpened,
FolderRemove: folderRemove,
Folder: folder,
Food: food,
Football: football,
ForkSpoon: forkSpoon,
Fries: fries,
FullScreen: fullScreen,
GobletFull: gobletFull,
GobletSquareFull: gobletSquareFull,
GobletSquare: gobletSquare,
Goblet: goblet,
GoodsFilled: goodsFilled,
Goods: goods,
Grape: grape,
Grid: grid,
Guide: guide,
Headset: headset,
HelpFilled: helpFilled,
Help: help,
Hide: hide$2,
Histogram: histogram,
HomeFilled: homeFilled,
HotWater: hotWater,
House: house,
IceCreamRound: iceCreamRound,
IceCreamSquare: iceCreamSquare,
IceCream: iceCream,
IceDrink: iceDrink,
IceTea: iceTea,
InfoFilled: infoFilled,
Iphone: iphone,
Key: key,
KnifeFork: knifeFork,
Lightning: lightning,
Link: link,
List: list,
Loading: loading,
LocationFilled: locationFilled,
LocationInformation: locationInformation,
Location: location$1,
Lock: lock,
Lollipop: lollipop,
MagicStick: magicStick,
Magnet: magnet,
Male: male,
Management: management,
MapLocation: mapLocation,
Medal: medal,
Menu: menu,
MessageBox: messageBox,
Message: message$1,
Mic: mic,
Microphone: microphone,
MilkTea: milkTea,
Minus: minus,
Money: money,
Monitor: monitor,
MoonNight: moonNight,
Moon: moon,
MoreFilled: moreFilled,
More: more,
MostlyCloudy: mostlyCloudy,
Mouse: mouse,
Mug: mug,
MuteNotification: muteNotification,
Mute: mute,
NoSmoking: noSmoking,
Notebook: notebook,
Notification: notification,
Odometer: odometer,
OfficeBuilding: officeBuilding,
Open: open$1,
Operation: operation,
Opportunity: opportunity,
Orange: orange,
Paperclip: paperclip,
PartlyCloudy: partlyCloudy,
Pear: pear,
PhoneFilled: phoneFilled,
Phone: phone,
PictureFilled: pictureFilled,
PictureRounded: pictureRounded,
Picture: picture,
PieChart: pieChart,
Place: place$1,
Platform: platform$1,
Plus: plus,
Pointer: pointer,
Position: position$2,
Postcard: postcard,
Pouring: pouring,
Present: present,
PriceTag: priceTag,
Printer: printer,
Promotion: promotion,
QuestionFilled: questionFilled,
Rank: rank,
ReadingLamp: readingLamp,
Reading: reading,
RefreshLeft: refreshLeft,
RefreshRight: refreshRight,
Refresh: refresh,
Refrigerator: refrigerator,
RemoveFilled: removeFilled,
Remove: remove$3,
Right: right$1,
ScaleToOriginal: scaleToOriginal,
School: school,
Scissor: scissor,
Search: search,
Select: select$1,
Sell: sell,
SemiSelect: semiSelect,
Service: service$1,
SetUp: setUp,
Setting: setting,
Share: share,
Ship: ship,
Shop: shop,
ShoppingBag: shoppingBag,
ShoppingCartFull: shoppingCartFull,
ShoppingCart: shoppingCart,
Smoking: smoking,
Soccer: soccer,
SoldOut: soldOut,
SortDown: sortDown,
SortUp: sortUp,
Sort: sort$3,
Stamp: stamp,
StarFilled: starFilled,
Star: star,
Stopwatch: stopwatch,
SuccessFilled: successFilled,
Sugar: sugar,
Suitcase: suitcase,
Sunny: sunny,
Sunrise: sunrise,
Sunset: sunset,
SwitchButton: switchButton,
Switch: _switch,
TakeawayBox: takeawayBox,
Ticket: ticket,
Tickets: tickets,
Timer: timer,
ToiletPaper: toiletPaper,
Tools: tools,
TopLeft: topLeft,
TopRight: topRight,
Top: top$1,
TrendCharts: trendCharts,
Trophy: trophy,
TurnOff: turnOff,
Umbrella: umbrella,
Unlock: unlock,
UploadFilled: uploadFilled,
Upload: upload,
UserFilled: userFilled,
User: user,
Van: van,
VideoCameraFilled: videoCameraFilled,
VideoCamera: videoCamera,
VideoPause: videoPause,
VideoPlay: videoPlay,
View: view,
WalletFilled: walletFilled,
Wallet: wallet,
WarningFilled: warningFilled,
Warning: warning$1,
Watch: watch,
Watermelon: watermelon,
WindPower: windPower,
ZoomIn: zoomIn,
ZoomOut: zoomOut,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const wrapperKey = Symbol()
const propKey = '__elPropsReservedKey'
function buildProp(option2, key2) {
if (!isObject$v(option2) || !!option2[propKey]) return option2
const {
values: values2,
required: required4,
default: defaultValue,
type: type4,
validator: validator2,
} = option2
const _validator =
values2 || validator2
? (val2) => {
let valid = false
let allowedValues = []
if (values2) {
allowedValues = Array.from(values2)
if (hasOwn$e(option2, 'default')) {
allowedValues.push(defaultValue)
}
valid || (valid = allowedValues.includes(val2))
}
if (validator2) valid || (valid = validator2(val2))
if (!valid && allowedValues.length > 0) {
const allowValuesText = [...new Set(allowedValues)]
.map((value2) => JSON.stringify(value2))
.join(', ')
warn$2(
`Invalid prop: validation failed${
key2 ? ` for prop "${key2}"` : ''
}. Expected one of [${allowValuesText}], got value ${JSON.stringify(
val2
)}.`
)
}
return valid
}
: void 0
const prop = {
type:
isObject$v(type4) &&
Object.getOwnPropertySymbols(type4).includes(wrapperKey)
? type4[wrapperKey]
: type4,
required: !!required4,
validator: _validator,
[propKey]: true,
}
if (hasOwn$e(option2, 'default')) prop.default = defaultValue
return prop
}
const buildProps = (props2) =>
fromPairs(
Object.entries(props2).map(([key2, option2]) => [
key2,
buildProp(option2, key2),
])
)
const definePropType = (val2) => ({ [wrapperKey]: val2 })
const iconPropType = definePropType([String, Object, Function])
const CloseComponents = {
Close: close$2,
}
const TypeComponents = {
Close: close$2,
SuccessFilled: successFilled,
InfoFilled: infoFilled,
WarningFilled: warningFilled,
CircleCloseFilled: circleCloseFilled,
}
const TypeComponentsMap = {
success: successFilled,
warning: warningFilled,
error: circleCloseFilled,
info: infoFilled,
}
const ValidateComponentsMap = {
validating: loading,
success: circleCheck,
error: circleClose,
}
const withInstall = (main2, extra) => {
main2.install = (app2) => {
for (const comp of [main2, ...Object.values(extra != null ? extra : {})]) {
app2.component(comp.name, comp)
}
}
if (extra) {
for (const [key2, comp] of Object.entries(extra)) {
main2[key2] = comp
}
}
return main2
}
const withInstallFunction = (fn2, name2) => {
fn2.install = (app2) => {
fn2._context = app2._context
app2.config.globalProperties[name2] = fn2
}
return fn2
}
const withNoopInstall = (component2) => {
component2.install = NOOP
return component2
}
const composeRefs = (...refs) => {
return (el2) => {
refs.forEach((ref2) => {
if (isFunction$l(ref2)) {
ref2(el2)
} else {
ref2.value = el2
}
})
}
}
class ElementPlusError extends Error {
constructor(m2) {
super(m2)
this.name = 'ElementPlusError'
}
}
function throwError$1(scope, m2) {
throw new ElementPlusError(`[${scope}] ${m2}`)
}
function debugWarn(scope, message2) {}
function addUnit(value2, defaultUnit = 'px') {
if (!value2) return ''
if (isString$f(value2)) {
return value2
} else if (isNumber$h(value2)) {
return `${value2}${defaultUnit}`
}
}
const EVENT_CODE = {
tab: 'Tab',
enter: 'Enter',
space: 'Space',
left: 'ArrowLeft',
up: 'ArrowUp',
right: 'ArrowRight',
down: 'ArrowDown',
esc: 'Escape',
delete: 'Delete',
backspace: 'Backspace',
numpadEnter: 'NumpadEnter',
pageUp: 'PageUp',
pageDown: 'PageDown',
home: 'Home',
end: 'End',
}
const datePickTypes = [
'year',
'month',
'date',
'dates',
'week',
'datetime',
'datetimerange',
'daterange',
'monthrange',
]
const WEEK_DAYS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']
const UPDATE_MODEL_EVENT = 'update:modelValue'
const CHANGE_EVENT = 'change'
const INPUT_EVENT = 'input'
const componentSizes = ['', 'default', 'small', 'large']
const isValidComponentSize = (val2) => ['', ...componentSizes].includes(val2)
const isValidDatePickType = (val2) => [...datePickTypes].includes(val2)
var PatchFlags = /* @__PURE__ */ ((PatchFlags2) => {
PatchFlags2[(PatchFlags2['TEXT'] = 1)] = 'TEXT'
PatchFlags2[(PatchFlags2['CLASS'] = 2)] = 'CLASS'
PatchFlags2[(PatchFlags2['STYLE'] = 4)] = 'STYLE'
PatchFlags2[(PatchFlags2['PROPS'] = 8)] = 'PROPS'
PatchFlags2[(PatchFlags2['FULL_PROPS'] = 16)] = 'FULL_PROPS'
PatchFlags2[(PatchFlags2['HYDRATE_EVENTS'] = 32)] = 'HYDRATE_EVENTS'
PatchFlags2[(PatchFlags2['STABLE_FRAGMENT'] = 64)] = 'STABLE_FRAGMENT'
PatchFlags2[(PatchFlags2['KEYED_FRAGMENT'] = 128)] = 'KEYED_FRAGMENT'
PatchFlags2[(PatchFlags2['UNKEYED_FRAGMENT'] = 256)] = 'UNKEYED_FRAGMENT'
PatchFlags2[(PatchFlags2['NEED_PATCH'] = 512)] = 'NEED_PATCH'
PatchFlags2[(PatchFlags2['DYNAMIC_SLOTS'] = 1024)] = 'DYNAMIC_SLOTS'
PatchFlags2[(PatchFlags2['HOISTED'] = -1)] = 'HOISTED'
PatchFlags2[(PatchFlags2['BAIL'] = -2)] = 'BAIL'
return PatchFlags2
})(PatchFlags || {})
function isFragment(node2) {
return isVNode$1(node2) && node2.type === Fragment
}
function isComment(node2) {
return isVNode$1(node2) && node2.type === Comment
}
function isValidElementNode(node2) {
return isVNode$1(node2) && !isFragment(node2) && !isComment(node2)
}
const getNormalizedProps = (node2) => {
if (!isVNode$1(node2)) {
return {}
}
const raw = node2.props || {}
const type4 = (isVNode$1(node2.type) ? node2.type.props : void 0) || {}
const props2 = {}
Object.keys(type4).forEach((key2) => {
if (hasOwn$e(type4[key2], 'default')) {
props2[key2] = type4[key2].default
}
})
Object.keys(raw).forEach((key2) => {
props2[camelize$1(key2)] = raw[key2]
})
return props2
}
const ensureOnlyChild = (children) => {
if (!isArray$D(children) || children.length > 1) {
throw new Error('expect to receive a single Vue element child')
}
return children[0]
}
const cubic = (value2) => value2 ** 3
const easeInOutCubic = (value2) =>
value2 < 0.5 ? cubic(value2 * 2) / 2 : 1 - cubic((1 - value2) * 2) / 2
const unique = (arr) => [...new Set(arr)]
const castArray = (arr) => {
if (!arr && arr !== 0) return []
return Array.isArray(arr) ? arr : [arr]
}
const isFirefox = () =>
isClient$1 && /firefox/i.test(window.navigator.userAgent)
const isKorean = (text2) => /([(\uAC00-\uD7AF)|(\u3130-\u318F)])+/gi.test(text2)
const rAF = (fn2) =>
isClient$1 ? window.requestAnimationFrame(fn2) : setTimeout(fn2, 16)
const cAF = (handle) =>
isClient$1 ? window.cancelAnimationFrame(handle) : clearTimeout(handle)
const generateId = () => Math.floor(Math.random() * 1e4)
const mutable = (val2) => val2
const DEFAULT_EXCLUDE_KEYS = ['class', 'style']
const LISTENER_PREFIX = /^on[A-Z]/
const useAttrs = (params2 = {}) => {
const { excludeListeners = false, excludeKeys = [] } = params2
const allExcludeKeys = excludeKeys.concat(DEFAULT_EXCLUDE_KEYS)
const instance = getCurrentInstance()
if (!instance) {
return computed(() => ({}))
}
return computed(() => {
var _a2
return fromPairs(
Object.entries(
(_a2 = instance.proxy) == null ? void 0 : _a2.$attrs
).filter(
([key2]) =>
!allExcludeKeys.includes(key2) &&
!(excludeListeners && LISTENER_PREFIX.test(key2))
)
)
})
}
const breadcrumbKey = Symbol('breadcrumbKey')
const buttonGroupContextKey = Symbol('buttonGroupContextKey')
const carouselContextKey = Symbol('carouselContextKey')
const collapseContextKey = Symbol('collapseContextKey')
const configProviderContextKey = Symbol()
const dialogInjectionKey = Symbol('dialogInjectionKey')
const formContextKey = Symbol('formContextKey')
const formItemContextKey = Symbol('formItemContextKey')
const elPaginationKey = Symbol('elPaginationKey')
const radioGroupKey = Symbol('radioGroupKey')
const rowContextKey = Symbol('rowContextKey')
const scrollbarContextKey = Symbol('scrollbarContextKey')
const tabsRootContextKey = Symbol('tabsRootContextKey')
const uploadContextKey = Symbol('uploadContextKey')
const POPPER_INJECTION_KEY = Symbol('popper')
const POPPER_CONTENT_INJECTION_KEY = Symbol('popperContent')
const tooltipV2RootKey = Symbol('tooltipV2')
const tooltipV2ContentKey = Symbol('tooltipV2Content')
const TOOLTIP_V2_OPEN = 'tooltip_v2.open'
const useProp = (name2) => {
const vm = getCurrentInstance()
return computed(() => {
var _a2, _b2
return (_b2 = (_a2 = vm.proxy) == null ? void 0 : _a2.$props[name2]) != null
? _b2
: void 0
})
}
const globalConfig = ref()
function useGlobalConfig(key2, defaultValue = void 0) {
const config2 = getCurrentInstance()
? inject(configProviderContextKey, globalConfig)
: globalConfig
if (key2) {
return computed(() => {
var _a2, _b2
return (_b2 = (_a2 = config2.value) == null ? void 0 : _a2[key2]) != null
? _b2
: defaultValue
})
} else {
return config2
}
}
const provideGlobalConfig = (config2, app2, global2 = false) => {
var _a2
const inSetup = !!getCurrentInstance()
const oldConfig = inSetup ? useGlobalConfig() : void 0
const provideFn =
(_a2 = app2 == null ? void 0 : app2.provide) != null
? _a2
: inSetup
? provide
: void 0
if (!provideFn) {
return
}
const context2 = computed(() => {
const cfg = unref(config2)
if (!(oldConfig == null ? void 0 : oldConfig.value)) return cfg
return mergeConfig$3(oldConfig.value, cfg)
})
provideFn(configProviderContextKey, context2)
if (global2 || !globalConfig.value) {
globalConfig.value = context2.value
}
return context2
}
const mergeConfig$3 = (a2, b2) => {
var _a2
const keys3 = [.../* @__PURE__ */ new Set([...keysOf(a2), ...keysOf(b2)])]
const obj = {}
for (const key2 of keys3) {
obj[key2] = (_a2 = b2[key2]) != null ? _a2 : a2[key2]
}
return obj
}
const useSizeProp = buildProp({
type: String,
values: componentSizes,
required: false,
})
const useSize$1 = (fallback, ignore = {}) => {
const emptyRef = ref(void 0)
const size = ignore.prop ? emptyRef : useProp('size')
const globalConfig2 = ignore.global ? emptyRef : useGlobalConfig('size')
const form2 = ignore.form ? { size: void 0 } : inject(formContextKey, void 0)
const formItem = ignore.formItem
? { size: void 0 }
: inject(formItemContextKey, void 0)
return computed(
() =>
size.value ||
unref(fallback) ||
(formItem == null ? void 0 : formItem.size) ||
(form2 == null ? void 0 : form2.size) ||
globalConfig2.value ||
''
)
}
const useDisabled$1 = (fallback) => {
const disabled = useProp('disabled')
const form2 = inject(formContextKey, void 0)
return computed(
() =>
disabled.value ||
unref(fallback) ||
(form2 == null ? void 0 : form2.disabled) ||
false
)
}
const useDeprecated = (
{
from,
replacement: replacement2,
scope,
version: version2,
ref: ref2,
type: type4 = 'API',
},
condition2
) => {
watch$1(
() => unref(condition2),
(val2) => {},
{
immediate: true,
}
)
}
const useDraggable$1 = (targetRef, dragRef, draggable2) => {
let transform3 = {
offsetX: 0,
offsetY: 0,
}
const onMousedown = (e2) => {
const downX = e2.clientX
const downY = e2.clientY
const { offsetX, offsetY } = transform3
const targetRect = targetRef.value.getBoundingClientRect()
const targetLeft = targetRect.left
const targetTop = targetRect.top
const targetWidth = targetRect.width
const targetHeight = targetRect.height
const clientWidth = document.documentElement.clientWidth
const clientHeight = document.documentElement.clientHeight
const minLeft = -targetLeft + offsetX
const minTop = -targetTop + offsetY
const maxLeft = clientWidth - targetLeft - targetWidth + offsetX
const maxTop = clientHeight - targetTop - targetHeight + offsetY
const onMousemove = (e22) => {
const moveX = Math.min(
Math.max(offsetX + e22.clientX - downX, minLeft),
maxLeft
)
const moveY = Math.min(
Math.max(offsetY + e22.clientY - downY, minTop),
maxTop
)
transform3 = {
offsetX: moveX,
offsetY: moveY,
}
targetRef.value.style.transform = `translate(${addUnit(moveX)}, ${addUnit(
moveY
)})`
}
const onMouseup = () => {
document.removeEventListener('mousemove', onMousemove)
document.removeEventListener('mouseup', onMouseup)
}
document.addEventListener('mousemove', onMousemove)
document.addEventListener('mouseup', onMouseup)
}
const onDraggable = () => {
if (dragRef.value && targetRef.value) {
dragRef.value.addEventListener('mousedown', onMousedown)
}
}
const offDraggable = () => {
if (dragRef.value && targetRef.value) {
dragRef.value.removeEventListener('mousedown', onMousedown)
}
}
onMounted(() => {
watchEffect(() => {
if (draggable2.value) {
onDraggable()
} else {
offDraggable()
}
})
})
onBeforeUnmount(() => {
offDraggable()
})
}
const useFocus$1 = (el2) => {
return {
focus: () => {
var _a2, _b2
;(_b2 = (_a2 = el2.value) == null ? void 0 : _a2.focus) == null
? void 0
: _b2.call(_a2)
},
}
}
const useFormItem = () => {
const form2 = inject(formContextKey, void 0)
const formItem = inject(formItemContextKey, void 0)
return {
form: form2,
formItem,
}
}
var English = {
name: 'en',
el: {
colorpicker: {
confirm: 'OK',
clear: 'Clear',
},
datepicker: {
now: 'Now',
today: 'Today',
cancel: 'Cancel',
clear: 'Clear',
confirm: 'OK',
selectDate: 'Select date',
selectTime: 'Select time',
startDate: 'Start Date',
startTime: 'Start Time',
endDate: 'End Date',
endTime: 'End Time',
prevYear: 'Previous Year',
nextYear: 'Next Year',
prevMonth: 'Previous Month',
nextMonth: 'Next Month',
year: '',
month1: 'January',
month2: 'February',
month3: 'March',
month4: 'April',
month5: 'May',
month6: 'June',
month7: 'July',
month8: 'August',
month9: 'September',
month10: 'October',
month11: 'November',
month12: 'December',
week: 'week',
weeks: {
sun: 'Sun',
mon: 'Mon',
tue: 'Tue',
wed: 'Wed',
thu: 'Thu',
fri: 'Fri',
sat: 'Sat',
},
months: {
jan: 'Jan',
feb: 'Feb',
mar: 'Mar',
apr: 'Apr',
may: 'May',
jun: 'Jun',
jul: 'Jul',
aug: 'Aug',
sep: 'Sep',
oct: 'Oct',
nov: 'Nov',
dec: 'Dec',
},
},
select: {
loading: 'Loading',
noMatch: 'No matching data',
noData: 'No data',
placeholder: 'Select',
},
cascader: {
noMatch: 'No matching data',
loading: 'Loading',
placeholder: 'Select',
noData: 'No data',
},
pagination: {
goto: 'Go to',
pagesize: '/page',
total: 'Total {total}',
pageClassifier: '',
deprecationWarning:
'Deprecated usages detected, please refer to the el-pagination documentation for more details',
},
messagebox: {
title: 'Message',
confirm: 'OK',
cancel: 'Cancel',
error: 'Illegal input',
},
upload: {
deleteTip: 'press delete to remove',
delete: 'Delete',
preview: 'Preview',
continue: 'Continue',
},
table: {
emptyText: 'No Data',
confirmFilter: 'Confirm',
resetFilter: 'Reset',
clearFilter: 'All',
sumText: 'Sum',
},
tree: {
emptyText: 'No Data',
},
transfer: {
noMatch: 'No matching data',
noData: 'No data',
titles: ['List 1', 'List 2'],
filterPlaceholder: 'Enter keyword',
noCheckedFormat: '{total} items',
hasCheckedFormat: '{checked}/{total} checked',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_10 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: English,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const buildTranslator = (locale) => (path, option2) =>
translate$2(path, option2, unref(locale))
const translate$2 = (path, option2, locale) =>
get$a(locale, path, path).replace(/\{(\w+)\}/g, (_2, key2) => {
var _a2
return `${
(_a2 = option2 == null ? void 0 : option2[key2]) != null
? _a2
: `{${key2}}`
}`
})
const buildLocaleContext = (locale) => {
const lang = computed(() => unref(locale).name)
const localeRef = isRef(locale) ? locale : ref(locale)
return {
lang,
locale: localeRef,
t: buildTranslator(locale),
}
}
const useLocale = () => {
const locale = useGlobalConfig('locale')
return buildLocaleContext(computed(() => locale.value || English))
}
const useLockscreen = (trigger2) => {
if (!isRef(trigger2)) {
throwError$1(
'[useLockscreen]',
'You need to pass a ref param to this function'
)
}
if (!isClient$1 || hasClass$1(document.body, 'el-popup-parent--hidden')) {
return
}
let scrollBarWidth2 = 0
let withoutHiddenClass = false
let bodyPaddingRight = '0'
let computedBodyPaddingRight = 0
const cleanup = () => {
removeClass$1(document.body, 'el-popup-parent--hidden')
if (withoutHiddenClass) {
document.body.style.paddingRight = bodyPaddingRight
}
}
watch$1(trigger2, (val2) => {
if (!val2) {
cleanup()
return
}
withoutHiddenClass = !hasClass$1(document.body, 'el-popup-parent--hidden')
if (withoutHiddenClass) {
bodyPaddingRight = document.body.style.paddingRight
computedBodyPaddingRight = Number.parseInt(
getStyle$1(document.body, 'paddingRight'),
10
)
}
scrollBarWidth2 = getScrollBarWidth()
const bodyHasOverflow =
document.documentElement.clientHeight < document.body.scrollHeight
const bodyOverflowY = getStyle$1(document.body, 'overflowY')
if (
scrollBarWidth2 > 0 &&
(bodyHasOverflow || bodyOverflowY === 'scroll') &&
withoutHiddenClass
) {
document.body.style.paddingRight = `${
computedBodyPaddingRight + scrollBarWidth2
}px`
}
addClass$1(document.body, 'el-popup-parent--hidden')
})
onScopeDispose(() => cleanup())
}
const modalStack = []
const closeModal$1 = (e2) => {
if (modalStack.length === 0) return
if (e2.code === EVENT_CODE.esc) {
e2.stopPropagation()
const topModal = modalStack[modalStack.length - 1]
topModal.handleClose()
}
}
const useModal = (instance, visibleRef) => {
watch$1(visibleRef, (val2) => {
if (val2) {
modalStack.push(instance)
} else {
modalStack.splice(modalStack.indexOf(instance), 1)
}
})
}
if (isClient$1) useEventListener$1(document, 'keydown', closeModal$1)
const _prop = buildProp({
type: definePropType(Boolean),
default: null,
})
const _event = buildProp({
type: definePropType(Function),
})
const createModelToggleComposable = (name2) => {
const useModelToggleProps2 = {
[name2]: _prop,
[`onUpdate:${name2}`]: _event,
}
const useModelToggleEmits2 = [`update:${name2}`]
const useModelToggle2 = ({
indicator,
shouldHideWhenRouteChanges,
shouldProceed,
onShow,
onHide,
}) => {
const instance = getCurrentInstance()
const props2 = instance.props
const { emit: emit2 } = instance
const updateEventKey = `update:${name2}`
const hasUpdateHandler = computed(() =>
isFunction$l(props2[`onUpdate:${name2}`])
)
const isModelBindingAbsent = computed(() => props2[name2] === null)
const doShow = () => {
if (indicator.value === true) {
return
}
indicator.value = true
if (isFunction$l(onShow)) {
onShow()
}
}
const doHide = () => {
if (indicator.value === false) {
return
}
indicator.value = false
if (isFunction$l(onHide)) {
onHide()
}
}
const show = () => {
if (
props2.disabled === true ||
(isFunction$l(shouldProceed) && !shouldProceed())
)
return
const shouldEmit = hasUpdateHandler.value && isClient$1
if (shouldEmit) {
emit2(updateEventKey, true)
}
if (isModelBindingAbsent.value || !shouldEmit) {
doShow()
}
}
const hide2 = () => {
if (props2.disabled === true || !isClient$1) return
const shouldEmit = hasUpdateHandler.value && isClient$1
if (shouldEmit) {
emit2(updateEventKey, false)
}
if (isModelBindingAbsent.value || !shouldEmit) {
doHide()
}
}
const onChange = (val2) => {
if (!isBoolean$5(val2)) return
if (props2.disabled && val2) {
if (hasUpdateHandler.value) {
emit2(updateEventKey, false)
}
} else if (indicator.value !== val2) {
if (val2) {
doShow()
} else {
doHide()
}
}
}
const toggle2 = () => {
if (indicator.value) {
hide2()
} else {
show()
}
}
watch$1(() => props2[name2], onChange)
if (
shouldHideWhenRouteChanges &&
instance.appContext.config.globalProperties.$route !== void 0
) {
watch$1(
() => ({
...instance.proxy.$route,
}),
() => {
if (shouldHideWhenRouteChanges.value && indicator.value) {
hide2()
}
}
)
}
onMounted(() => {
onChange(props2[name2])
})
return {
hide: hide2,
show,
toggle: toggle2,
}
}
return {
useModelToggle: useModelToggle2,
useModelToggleProps: useModelToggleProps2,
useModelToggleEmits: useModelToggleEmits2,
}
}
const {
useModelToggle: useModelToggle$1,
useModelToggleProps: useModelToggleProps$1,
useModelToggleEmits: useModelToggleEmits$1,
} = createModelToggleComposable('modelValue')
const usePreventGlobal = (indicator, evt, cb) => {
const prevent = (e2) => {
if (cb(e2)) e2.stopImmediatePropagation()
}
let stop2 = void 0
watch$1(
() => indicator.value,
(val2) => {
if (val2) {
stop2 = useEventListener$1(document, evt, prevent, true)
} else {
stop2 == null ? void 0 : stop2()
}
},
{ immediate: true }
)
}
const useRestoreActive = (toggle2, initialFocus) => {
let previousActive
watch$1(
() => toggle2.value,
(val2) => {
var _a2, _b2
if (val2) {
previousActive = document.activeElement
if (isRef(initialFocus)) {
;(_b2 = (_a2 = initialFocus.value).focus) == null
? void 0
: _b2.call(_a2)
}
} else {
{
previousActive.focus()
}
}
}
)
}
const useSameTarget = (handleClick2) => {
if (!handleClick2) {
return { onClick: NOOP, onMousedown: NOOP, onMouseup: NOOP }
}
let mousedownTarget = false
let mouseupTarget = false
const onClick = (e2) => {
if (mousedownTarget && mouseupTarget) {
handleClick2(e2)
}
mousedownTarget = mouseupTarget = false
}
const onMousedown = (e2) => {
mousedownTarget = e2.target === e2.currentTarget
}
const onMouseup = (e2) => {
mouseupTarget = e2.target === e2.currentTarget
}
return { onClick, onMousedown, onMouseup }
}
const useTeleport = (contentRenderer, appendToBody) => {
const isTeleportVisible = ref(false)
if (!isClient$1) {
return {
isTeleportVisible,
showTeleport: NOOP,
hideTeleport: NOOP,
renderTeleport: NOOP,
}
}
let $el = null
const showTeleport = () => {
isTeleportVisible.value = true
if ($el !== null) return
$el = createGlobalNode()
}
const hideTeleport = () => {
isTeleportVisible.value = false
if ($el !== null) {
removeGlobalNode($el)
$el = null
}
}
const renderTeleport = () => {
return appendToBody.value !== true
? contentRenderer()
: isTeleportVisible.value
? [h$4(Teleport, { to: $el }, contentRenderer())]
: void 0
}
onUnmounted(hideTeleport)
return {
isTeleportVisible,
showTeleport,
hideTeleport,
renderTeleport,
}
}
const useThrottleRender = (loading2, throttle2 = 0) => {
if (throttle2 === 0) return loading2
const throttled = ref(false)
let timeoutHandle = 0
const dispatchThrottling = () => {
if (timeoutHandle) {
clearTimeout(timeoutHandle)
}
timeoutHandle = window.setTimeout(() => {
throttled.value = loading2.value
}, throttle2)
}
onMounted(dispatchThrottling)
watch$1(
() => loading2.value,
(val2) => {
if (val2) {
dispatchThrottling()
} else {
throttled.value = val2
}
}
)
return throttled
}
function useTimeout$1() {
let timeoutHandle
const registerTimeout = (fn2, delay2) => {
cancelTimeout()
timeoutHandle = window.setTimeout(fn2, delay2)
}
const cancelTimeout = () => window.clearTimeout(timeoutHandle)
tryOnScopeDispose$1(() => cancelTimeout())
return {
registerTimeout,
cancelTimeout,
}
}
const AFTER_APPEAR = 'after-appear'
const AFTER_ENTER = 'after-enter'
const AFTER_LEAVE = 'after-leave'
const APPEAR = 'appear'
const APPEAR_CANCELLED = 'appear-cancelled'
const BEFORE_ENTER = 'before-enter'
const BEFORE_LEAVE = 'before-leave'
const ENTER = 'enter'
const ENTER_CANCELLED = 'enter-cancelled'
const LEAVE = 'leave'
const LEAVE_CANCELLED = 'leave-cancelled'
const useTransitionFallthroughEmits = [
AFTER_APPEAR,
AFTER_ENTER,
AFTER_LEAVE,
APPEAR,
APPEAR_CANCELLED,
BEFORE_ENTER,
BEFORE_LEAVE,
ENTER,
ENTER_CANCELLED,
LEAVE,
LEAVE_CANCELLED,
]
const useTransitionFallthrough = () => {
const { emit: emit2 } = getCurrentInstance()
return {
onAfterAppear: () => {
emit2(AFTER_APPEAR)
},
onAfterEnter: () => {
emit2(AFTER_ENTER)
},
onAfterLeave: () => {
emit2(AFTER_LEAVE)
},
onAppearCancelled: () => {
emit2(APPEAR_CANCELLED)
},
onBeforeEnter: () => {
emit2(BEFORE_ENTER)
},
onBeforeLeave: () => {
emit2(BEFORE_LEAVE)
},
onEnter: () => {
emit2(ENTER)
},
onEnterCancelled: () => {
emit2(ENTER_CANCELLED)
},
onLeave: () => {
emit2(LEAVE)
},
onLeaveCancelled: () => {
emit2(LEAVE_CANCELLED)
},
}
}
const defaultIdInjection = {
prefix: Math.floor(Math.random() * 1e4),
current: 0,
}
const ID_INJECTION_KEY = Symbol('elIdInjection')
const useId = (deterministicId) => {
const idInjection = inject(ID_INJECTION_KEY, defaultIdInjection)
const idRef = computed(
() =>
unref(deterministicId) ||
`el-id-${idInjection.prefix}-${idInjection.current++}`
)
return idRef
}
const useEscapeKeydown = (handler) => {
const cachedHandler = (e2) => {
const event = e2
if (event.key === EVENT_CODE.esc) {
handler == null ? void 0 : handler(event)
}
}
onMounted(() => {
on$2(document, 'keydown', cachedHandler)
})
onBeforeUnmount(() => {
off$1(document, 'keydown', cachedHandler)
})
}
let cachedContainer
const POPPER_CONTAINER_ID = `el-popper-container-${generateId()}`
const POPPER_CONTAINER_SELECTOR = `#${POPPER_CONTAINER_ID}`
const usePopperContainer = () => {
onBeforeMount(() => {
if (!isClient$1) return
if (!cachedContainer) {
const container = document.createElement('div')
container.id = POPPER_CONTAINER_ID
document.body.appendChild(container)
cachedContainer = container
}
})
}
const useDelayedRender = ({
indicator,
intermediateIndicator,
shouldSetIntermediate = () => true,
beforeShow,
afterShow,
afterHide,
beforeHide,
}) => {
watch$1(
() => unref(indicator),
(val2) => {
if (val2) {
beforeShow == null ? void 0 : beforeShow()
nextTick(() => {
if (!unref(indicator)) return
if (shouldSetIntermediate('show')) {
intermediateIndicator.value = true
}
})
} else {
beforeHide == null ? void 0 : beforeHide()
nextTick(() => {
if (unref(indicator)) return
if (shouldSetIntermediate('hide')) {
intermediateIndicator.value = false
}
})
}
}
)
watch$1(
() => intermediateIndicator.value,
(val2) => {
if (val2) {
afterShow == null ? void 0 : afterShow()
} else {
afterHide == null ? void 0 : afterHide()
}
}
)
}
const useDelayedToggleProps = buildProps({
showAfter: {
type: Number,
default: 0,
},
hideAfter: {
type: Number,
default: 200,
},
})
const useDelayedToggle = ({
showAfter,
hideAfter,
open: open2,
close: close2,
}) => {
const { registerTimeout } = useTimeout$1()
const onOpen = () => {
registerTimeout(() => {
open2()
}, unref(showAfter))
}
const onClose = () => {
registerTimeout(() => {
close2()
}, unref(hideAfter))
}
return {
onOpen,
onClose,
}
}
const FORWARD_REF_INJECTION_KEY = Symbol('elForwardRef')
const useForwardRef = (forwardRef) => {
const setForwardRef = (el2) => {
forwardRef.value = el2
}
provide(FORWARD_REF_INJECTION_KEY, {
setForwardRef,
})
}
const useForwardRefDirective = (setForwardRef) => {
return {
mounted(el2) {
setForwardRef(el2)
},
updated(el2) {
setForwardRef(el2)
},
unmounted() {
setForwardRef(null)
},
}
}
const defaultNamespace = 'el'
const statePrefix = 'is-'
const _bem = (namespace, block, blockSuffix, element, modifier) => {
let cls = `${namespace}-${block}`
if (blockSuffix) {
cls += `-${blockSuffix}`
}
if (element) {
cls += `__${element}`
}
if (modifier) {
cls += `--${modifier}`
}
return cls
}
const useNamespace = (block) => {
const globalConfig2 = useGlobalConfig('namespace')
const namespace = computed(() => globalConfig2.value || defaultNamespace)
const b2 = (blockSuffix = '') =>
_bem(unref(namespace), block, blockSuffix, '', '')
const e2 = (element) =>
element ? _bem(unref(namespace), block, '', element, '') : ''
const m2 = (modifier) =>
modifier ? _bem(unref(namespace), block, '', '', modifier) : ''
const be2 = (blockSuffix, element) =>
blockSuffix && element
? _bem(unref(namespace), block, blockSuffix, element, '')
: ''
const em = (element, modifier) =>
element && modifier
? _bem(unref(namespace), block, '', element, modifier)
: ''
const bm = (blockSuffix, modifier) =>
blockSuffix && modifier
? _bem(unref(namespace), block, blockSuffix, '', modifier)
: ''
const bem = (blockSuffix, element, modifier) =>
blockSuffix && element && modifier
? _bem(unref(namespace), block, blockSuffix, element, modifier)
: ''
const is2 = (name2, ...args) => {
const state2 = args.length >= 1 ? args[0] : true
return name2 && state2 ? `${statePrefix}${name2}` : ''
}
return {
namespace,
b: b2,
e: e2,
m: m2,
be: be2,
em,
bm,
bem,
is: is2,
}
}
const zIndex$1 = ref(0)
const useZIndex = () => {
const initialZIndex = useGlobalConfig('zIndex', 2e3)
const currentZIndex = computed(() => initialZIndex.value + zIndex$1.value)
const nextZIndex2 = () => {
zIndex$1.value++
return currentZIndex.value
}
return {
initialZIndex,
currentZIndex,
nextZIndex: nextZIndex2,
}
}
function t$5(t3) {
return t3.split('-')[0]
}
function e$3(t3) {
return t3.split('-')[1]
}
function n$3(e2) {
return ['top', 'bottom'].includes(t$5(e2)) ? 'x' : 'y'
}
function r$2(t3) {
return 'y' === t3 ? 'height' : 'width'
}
function i$8(i2, o2, a2) {
let { reference: l2, floating: s2 } = i2
const c2 = l2.x + l2.width / 2 - s2.width / 2,
f2 = l2.y + l2.height / 2 - s2.height / 2,
u2 = n$3(o2),
m2 = r$2(u2),
g2 = l2[m2] / 2 - s2[m2] / 2,
d3 = 'x' === u2
let p2
switch (t$5(o2)) {
case 'top':
p2 = { x: c2, y: l2.y - s2.height }
break
case 'bottom':
p2 = { x: c2, y: l2.y + l2.height }
break
case 'right':
p2 = { x: l2.x + l2.width, y: f2 }
break
case 'left':
p2 = { x: l2.x - s2.width, y: f2 }
break
default:
p2 = { x: l2.x, y: l2.y }
}
switch (e$3(o2)) {
case 'start':
p2[u2] -= g2 * (a2 && d3 ? -1 : 1)
break
case 'end':
p2[u2] += g2 * (a2 && d3 ? -1 : 1)
}
return p2
}
const o$4 = async (t3, e2, n2) => {
const {
placement: r2 = 'bottom',
strategy: o2 = 'absolute',
middleware: a2 = [],
platform: l2,
} = n2,
s2 = await (null == l2.isRTL ? void 0 : l2.isRTL(e2))
let c2 = await l2.getElementRects({
reference: t3,
floating: e2,
strategy: o2,
}),
{ x: f2, y: u2 } = i$8(c2, r2, s2),
m2 = r2,
g2 = {}
for (let n3 = 0; n3 < a2.length; n3++) {
const { name: d3, fn: p2 } = a2[n3],
{
x: h2,
y: y2,
data: x2,
reset: w2,
} = await p2({
x: f2,
y: u2,
initialPlacement: r2,
placement: m2,
strategy: o2,
middlewareData: g2,
rects: c2,
platform: l2,
elements: { reference: t3, floating: e2 },
})
;(f2 = null != h2 ? h2 : f2),
(u2 = null != y2 ? y2 : u2),
(g2 = { ...g2, [d3]: { ...g2[d3], ...x2 } }),
w2 &&
('object' == typeof w2 &&
(w2.placement && (m2 = w2.placement),
w2.rects &&
(c2 =
true === w2.rects
? await l2.getElementRects({
reference: t3,
floating: e2,
strategy: o2,
})
: w2.rects),
({ x: f2, y: u2 } = i$8(c2, m2, s2))),
(n3 = -1))
}
return { x: f2, y: u2, placement: m2, strategy: o2, middlewareData: g2 }
}
function a$5(t3) {
return 'number' != typeof t3
? (function (t4) {
return { top: 0, right: 0, bottom: 0, left: 0, ...t4 }
})(t3)
: { top: t3, right: t3, bottom: t3, left: t3 }
}
function l$4(t3) {
return {
...t3,
top: t3.y,
left: t3.x,
right: t3.x + t3.width,
bottom: t3.y + t3.height,
}
}
const c$5 = Math.min,
f$5 = Math.max
function u$5(t3, e2, n2) {
return f$5(t3, c$5(e2, n2))
}
const m$6 = (t3) => ({
name: 'arrow',
options: t3,
async fn(e2) {
const { element: i2, padding: o2 = 0 } = null != t3 ? t3 : {},
{ x: l2, y: s2, placement: c2, rects: f2, platform: m2 } = e2
if (null == i2) return {}
const g2 = a$5(o2),
d3 = { x: l2, y: s2 },
p2 = n$3(c2),
h2 = r$2(p2),
y2 = await m2.getDimensions(i2),
x2 = 'y' === p2 ? 'top' : 'left',
w2 = 'y' === p2 ? 'bottom' : 'right',
v4 = f2.reference[h2] + f2.reference[p2] - d3[p2] - f2.floating[h2],
b2 = d3[p2] - f2.reference[p2],
R2 = await (null == m2.getOffsetParent ? void 0 : m2.getOffsetParent(i2)),
A2 = R2 ? ('y' === p2 ? R2.clientHeight || 0 : R2.clientWidth || 0) : 0,
P2 = v4 / 2 - b2 / 2,
T2 = g2[x2],
O2 = A2 - y2[h2] - g2[w2],
D2 = A2 / 2 - y2[h2] / 2 + P2,
L2 = u$5(T2, D2, O2)
return { data: { [p2]: L2, centerOffset: D2 - L2 } }
},
})
const x$4 = ['top', 'right', 'bottom', 'left']
x$4.reduce((t3, e2) => t3.concat(e2, e2 + '-start', e2 + '-end'), [])
const T$5 = function (r2) {
return (
void 0 === r2 && (r2 = 0),
{
name: 'offset',
options: r2,
async fn(i2) {
const {
x: o2,
y: a2,
placement: l2,
rects: s2,
platform: c2,
elements: f2,
} = i2,
u2 = (function (r3, i3, o3, a3) {
void 0 === a3 && (a3 = false)
const l3 = t$5(r3),
s3 = e$3(r3),
c3 = 'x' === n$3(r3),
f3 = ['left', 'top'].includes(l3) ? -1 : 1,
u3 = a3 && c3 ? -1 : 1,
m2 = 'function' == typeof o3 ? o3({ ...i3, placement: r3 }) : o3
let {
mainAxis: g2,
crossAxis: d3,
alignmentAxis: p2,
} = 'number' == typeof m2
? { mainAxis: m2, crossAxis: 0, alignmentAxis: null }
: { mainAxis: 0, crossAxis: 0, alignmentAxis: null, ...m2 }
return (
s3 && 'number' == typeof p2 && (d3 = 'end' === s3 ? -1 * p2 : p2),
c3 ? { x: d3 * u3, y: g2 * f3 } : { x: g2 * f3, y: d3 * u3 }
)
})(
l2,
s2,
r2,
await (null == c2.isRTL ? void 0 : c2.isRTL(f2.floating))
)
return { x: o2 + u2.x, y: a2 + u2.y, data: u2 }
},
}
)
}
function n$2(t3) {
return t3 && t3.document && t3.location && t3.alert && t3.setInterval
}
function o$3(t3) {
if (null == t3) return window
if (!n$2(t3)) {
const e2 = t3.ownerDocument
return (e2 && e2.defaultView) || window
}
return t3
}
function i$7(t3) {
return o$3(t3).getComputedStyle(t3)
}
function r$1(t3) {
return n$2(t3) ? '' : t3 ? (t3.nodeName || '').toLowerCase() : ''
}
function l$3(t3) {
return t3 instanceof o$3(t3).HTMLElement
}
function c$4(t3) {
return t3 instanceof o$3(t3).Element
}
function f$4(t3) {
if ('undefined' == typeof ShadowRoot) return false
return t3 instanceof o$3(t3).ShadowRoot || t3 instanceof ShadowRoot
}
function s$3(t3) {
const { overflow: e2, overflowX: n2, overflowY: o2 } = i$7(t3)
return /auto|scroll|overlay|hidden/.test(e2 + o2 + n2)
}
function u$4(t3) {
return ['table', 'td', 'th'].includes(r$1(t3))
}
function d$2(t3) {
const e2 = navigator.userAgent.toLowerCase().includes('firefox'),
n2 = i$7(t3)
return (
'none' !== n2.transform ||
'none' !== n2.perspective ||
'paint' === n2.contain ||
['transform', 'perspective'].includes(n2.willChange) ||
(e2 && 'filter' === n2.willChange) ||
(e2 && !!n2.filter && 'none' !== n2.filter)
)
}
function h$3() {
return !/^((?!chrome|android).)*safari/i.test(navigator.userAgent)
}
const a$4 = Math.min,
g$1 = Math.max,
p$3 = Math.round
function m$5(t3, e2, n2) {
var i2, r2, f2, s2
void 0 === e2 && (e2 = false), void 0 === n2 && (n2 = false)
const u2 = t3.getBoundingClientRect()
let d3 = 1,
a2 = 1
e2 &&
l$3(t3) &&
((d3 = (t3.offsetWidth > 0 && p$3(u2.width) / t3.offsetWidth) || 1),
(a2 = (t3.offsetHeight > 0 && p$3(u2.height) / t3.offsetHeight) || 1))
const g2 = c$4(t3) ? o$3(t3) : window,
m2 = !h$3() && n2,
w2 =
(u2.left +
(m2 &&
null != (i2 = null == (r2 = g2.visualViewport) ? void 0 : r2.offsetLeft)
? i2
: 0)) /
d3,
v4 =
(u2.top +
(m2 &&
null != (f2 = null == (s2 = g2.visualViewport) ? void 0 : s2.offsetTop)
? f2
: 0)) /
a2,
y2 = u2.width / d3,
x2 = u2.height / a2
return {
width: y2,
height: x2,
top: v4,
right: w2 + y2,
bottom: v4 + x2,
left: w2,
x: w2,
y: v4,
}
}
function w$2(t3) {
return ((e2 = t3),
(e2 instanceof o$3(e2).Node ? t3.ownerDocument : t3.document) ||
window.document).documentElement
var e2
}
function v$4(t3) {
return c$4(t3)
? { scrollLeft: t3.scrollLeft, scrollTop: t3.scrollTop }
: { scrollLeft: t3.pageXOffset, scrollTop: t3.pageYOffset }
}
function y$2(t3) {
return m$5(w$2(t3)).left + v$4(t3).scrollLeft
}
function x$3(t3, e2, n2) {
const o2 = l$3(e2),
i2 = w$2(e2),
c2 = m$5(
t3,
o2 &&
(function (t4) {
const e3 = m$5(t4)
return (
p$3(e3.width) !== t4.offsetWidth ||
p$3(e3.height) !== t4.offsetHeight
)
})(e2),
'fixed' === n2
)
let f2 = { scrollLeft: 0, scrollTop: 0 }
const u2 = { x: 0, y: 0 }
if (o2 || (!o2 && 'fixed' !== n2))
if ((('body' !== r$1(e2) || s$3(i2)) && (f2 = v$4(e2)), l$3(e2))) {
const t4 = m$5(e2, true)
;(u2.x = t4.x + e2.clientLeft), (u2.y = t4.y + e2.clientTop)
} else i2 && (u2.x = y$2(i2))
return {
x: c2.left + f2.scrollLeft - u2.x,
y: c2.top + f2.scrollTop - u2.y,
width: c2.width,
height: c2.height,
}
}
function L$2(t3) {
return 'html' === r$1(t3)
? t3
: t3.assignedSlot || t3.parentNode || (f$4(t3) ? t3.host : null) || w$2(t3)
}
function b$2(t3) {
return l$3(t3) && 'fixed' !== getComputedStyle(t3).position
? t3.offsetParent
: null
}
function R$1(t3) {
const e2 = o$3(t3)
let n2 = b$2(t3)
for (; n2 && u$4(n2) && 'static' === getComputedStyle(n2).position; )
n2 = b$2(n2)
return n2 &&
('html' === r$1(n2) ||
('body' === r$1(n2) &&
'static' === getComputedStyle(n2).position &&
!d$2(n2)))
? e2
: n2 ||
(function (t4) {
let e3 = L$2(t4)
for (
f$4(e3) && (e3 = e3.host);
l$3(e3) && !['html', 'body'].includes(r$1(e3));
) {
if (d$2(e3)) return e3
e3 = e3.parentNode
}
return null
})(t3) ||
e2
}
function T$4(t3) {
if (l$3(t3)) return { width: t3.offsetWidth, height: t3.offsetHeight }
const e2 = m$5(t3)
return { width: e2.width, height: e2.height }
}
function W$1(t3) {
const e2 = L$2(t3)
return ['html', 'body', '#document'].includes(r$1(e2))
? t3.ownerDocument.body
: l$3(e2) && s$3(e2)
? e2
: W$1(e2)
}
function C$1(t3, e2) {
var n2
void 0 === e2 && (e2 = [])
const i2 = W$1(t3),
r2 = i2 === (null == (n2 = t3.ownerDocument) ? void 0 : n2.body),
l2 = o$3(i2),
c2 = r2 ? [l2].concat(l2.visualViewport || [], s$3(i2) ? i2 : []) : i2,
f2 = e2.concat(c2)
return r2 ? f2 : f2.concat(C$1(c2))
}
function E$3(e2, n2, r2) {
return 'viewport' === n2
? l$4(
(function (t3, e3) {
const n3 = o$3(t3),
i2 = w$2(t3),
r3 = n3.visualViewport
let l2 = i2.clientWidth,
c2 = i2.clientHeight,
f2 = 0,
s2 = 0
if (r3) {
;(l2 = r3.width), (c2 = r3.height)
const t4 = h$3()
;(t4 || (!t4 && 'fixed' === e3)) &&
((f2 = r3.offsetLeft), (s2 = r3.offsetTop))
}
return { width: l2, height: c2, x: f2, y: s2 }
})(e2, r2)
)
: c$4(n2)
? (function (t3, e3) {
const n3 = m$5(t3, false, 'fixed' === e3),
o2 = n3.top + t3.clientTop,
i2 = n3.left + t3.clientLeft
return {
top: o2,
left: i2,
x: i2,
y: o2,
right: i2 + t3.clientWidth,
bottom: o2 + t3.clientHeight,
width: t3.clientWidth,
height: t3.clientHeight,
}
})(n2, r2)
: l$4(
(function (t3) {
var e3
const n3 = w$2(t3),
o2 = v$4(t3),
r3 = null == (e3 = t3.ownerDocument) ? void 0 : e3.body,
l2 = g$1(
n3.scrollWidth,
n3.clientWidth,
r3 ? r3.scrollWidth : 0,
r3 ? r3.clientWidth : 0
),
c2 = g$1(
n3.scrollHeight,
n3.clientHeight,
r3 ? r3.scrollHeight : 0,
r3 ? r3.clientHeight : 0
)
let f2 = -o2.scrollLeft + y$2(t3)
const s2 = -o2.scrollTop
return (
'rtl' === i$7(r3 || n3).direction &&
(f2 += g$1(n3.clientWidth, r3 ? r3.clientWidth : 0) - l2),
{ width: l2, height: c2, x: f2, y: s2 }
)
})(w$2(e2))
)
}
function H$1(t3) {
const e2 = C$1(t3),
n2 =
['absolute', 'fixed'].includes(i$7(t3).position) && l$3(t3) ? R$1(t3) : t3
return c$4(n2)
? e2.filter(
(t4) =>
c$4(t4) &&
(function (t5, e3) {
const n3 =
null == e3 || null == e3.getRootNode ? void 0 : e3.getRootNode()
if (null != t5 && t5.contains(e3)) return true
if (n3 && f$4(n3)) {
let n4 = e3
do {
if (n4 && t5 === n4) return true
n4 = n4.parentNode || n4.host
} while (n4)
}
return false
})(t4, n2) &&
'body' !== r$1(t4)
)
: []
}
const S$2 = {
getClippingRect: function (t3) {
let { element: e2, boundary: n2, rootBoundary: o2, strategy: i2 } = t3
const r2 = [...('clippingAncestors' === n2 ? H$1(e2) : [].concat(n2)), o2],
l2 = r2[0],
c2 = r2.reduce((t4, n3) => {
const o3 = E$3(e2, n3, i2)
return (
(t4.top = g$1(o3.top, t4.top)),
(t4.right = a$4(o3.right, t4.right)),
(t4.bottom = a$4(o3.bottom, t4.bottom)),
(t4.left = g$1(o3.left, t4.left)),
t4
)
}, E$3(e2, l2, i2))
return {
width: c2.right - c2.left,
height: c2.bottom - c2.top,
x: c2.left,
y: c2.top,
}
},
convertOffsetParentRelativeRectToViewportRelativeRect: function (t3) {
let { rect: e2, offsetParent: n2, strategy: o2 } = t3
const i2 = l$3(n2),
c2 = w$2(n2)
if (n2 === c2) return e2
let f2 = { scrollLeft: 0, scrollTop: 0 }
const u2 = { x: 0, y: 0 }
if (
(i2 || (!i2 && 'fixed' !== o2)) &&
(('body' !== r$1(n2) || s$3(c2)) && (f2 = v$4(n2)), l$3(n2))
) {
const t4 = m$5(n2, true)
;(u2.x = t4.x + n2.clientLeft), (u2.y = t4.y + n2.clientTop)
}
return {
...e2,
x: e2.x - f2.scrollLeft + u2.x,
y: e2.y - f2.scrollTop + u2.y,
}
},
isElement: c$4,
getDimensions: T$4,
getOffsetParent: R$1,
getDocumentElement: w$2,
getElementRects: (t3) => {
let { reference: e2, floating: n2, strategy: o2 } = t3
return {
reference: x$3(e2, R$1(n2), o2),
floating: { ...T$4(n2), x: 0, y: 0 },
}
},
getClientRects: (t3) => Array.from(t3.getClientRects()),
isRTL: (t3) => 'rtl' === i$7(t3).direction,
}
const N$3 = (t3, n2, o2) => o$4(t3, n2, { platform: S$2, ...o2 })
const useFloatingProps = buildProps({})
const unrefReference = (elRef) => {
if (!isClient$1) return
if (!elRef) return elRef
const unrefEl = unrefElement$1(elRef)
if (unrefEl) return unrefEl
return isRef(elRef) ? unrefEl : elRef
}
const getPositionDataWithUnit = (record, key2) => {
const value2 = record == null ? void 0 : record[key2]
return isNil$1(value2) ? '' : `${value2}px`
}
const useFloating = ({ middleware, placement, strategy }) => {
const referenceRef = ref()
const contentRef = ref()
const x2 = ref()
const y2 = ref()
const middlewareData = ref({})
const states = {
x: x2,
y: y2,
placement,
strategy,
middlewareData,
}
const update3 = async () => {
if (!isClient$1) return
const referenceEl = unrefReference(referenceRef)
const contentEl = unrefElement$1(contentRef)
if (!referenceEl || !contentEl) return
const data2 = await N$3(referenceEl, contentEl, {
placement: unref(placement),
strategy: unref(strategy),
middleware: unref(middleware),
})
Object.keys(states).forEach((key2) => {
states[key2].value = data2[key2]
})
}
onMounted(() => {
watchEffect(() => {
update3()
})
})
return {
...states,
update: update3,
referenceRef,
contentRef,
}
}
const arrowMiddleware = ({ arrowRef, padding }) => {
return {
name: 'arrow',
options: {
element: arrowRef,
padding,
},
fn(args) {
const arrowEl = unref(arrowRef)
if (!arrowEl) return {}
return m$6({
element: arrowEl,
padding,
}).fn(args)
},
}
}
const version$7 = '2.1.8'
const INSTALLED_KEY = Symbol('INSTALLED_KEY')
const makeInstaller = (components = []) => {
const install3 = (app2, options2) => {
if (app2[INSTALLED_KEY]) return
app2[INSTALLED_KEY] = true
components.forEach((c2) => app2.use(c2))
if (options2) provideGlobalConfig(options2, app2, true)
}
return {
version: version$7,
install: install3,
}
}
const affixProps = buildProps({
zIndex: {
type: definePropType([Number, String]),
default: 100,
},
target: {
type: String,
default: '',
},
offset: {
type: Number,
default: 0,
},
position: {
type: String,
values: ['top', 'bottom'],
default: 'top',
},
})
const affixEmits = {
scroll: ({ scrollTop, fixed }) =>
typeof scrollTop === 'number' && typeof fixed === 'boolean',
change: (fixed) => typeof fixed === 'boolean',
}
var _export_sfc$1 = (sfc, props2) => {
const target2 = sfc.__vccOpts || sfc
for (const [key2, val2] of props2) {
target2[key2] = val2
}
return target2
}
const __default__$P = {
name: 'ElAffix',
}
const _sfc_main$9m = /* @__PURE__ */ defineComponent({
...__default__$P,
props: affixProps,
emits: affixEmits,
setup(__props2, { expose, emit: emit2 }) {
const props2 = __props2
const COMPONENT_NAME2 = 'ElAffix'
const ns = useNamespace('affix')
const target2 = shallowRef()
const root2 = shallowRef()
const scrollContainer = shallowRef()
const { height: windowHeight } = useWindowSize$1()
const {
height: rootHeight,
width: rootWidth,
top: rootTop,
bottom: rootBottom,
update: updateRoot,
} = useElementBounding$1(root2)
const targetRect = useElementBounding$1(target2)
const fixed = ref(false)
const scrollTop = ref(0)
const transform3 = ref(0)
const rootStyle = computed(() => {
return {
height: fixed.value ? `${rootHeight.value}px` : '',
width: fixed.value ? `${rootWidth.value}px` : '',
}
})
const affixStyle = computed(() => {
if (!fixed.value) return {}
const offset2 = props2.offset ? `${props2.offset}px` : 0
return {
height: `${rootHeight.value}px`,
width: `${rootWidth.value}px`,
top: props2.position === 'top' ? offset2 : '',
bottom: props2.position === 'bottom' ? offset2 : '',
transform: transform3.value ? `translateY(${transform3.value}px)` : '',
zIndex: props2.zIndex,
}
})
const update3 = () => {
if (!scrollContainer.value) return
scrollTop.value =
scrollContainer.value instanceof Window
? document.documentElement.scrollTop
: scrollContainer.value.scrollTop || 0
if (props2.position === 'top') {
if (props2.target) {
const difference =
targetRect.bottom.value - props2.offset - rootHeight.value
fixed.value =
props2.offset > rootTop.value && targetRect.bottom.value > 0
transform3.value = difference < 0 ? difference : 0
} else {
fixed.value = props2.offset > rootTop.value
}
} else if (props2.target) {
const difference =
windowHeight.value -
targetRect.top.value -
props2.offset -
rootHeight.value
fixed.value =
windowHeight.value - props2.offset < rootBottom.value &&
windowHeight.value > targetRect.top.value
transform3.value = difference < 0 ? -difference : 0
} else {
fixed.value = windowHeight.value - props2.offset < rootBottom.value
}
}
const handleScroll2 = () => {
emit2('scroll', {
scrollTop: scrollTop.value,
fixed: fixed.value,
})
}
watch$1(fixed, (val2) => emit2('change', val2))
onMounted(() => {
var _a2
if (props2.target) {
target2.value =
(_a2 = document.querySelector(props2.target)) != null ? _a2 : void 0
if (!target2.value)
throwError$1(
COMPONENT_NAME2,
`Target is not existed: ${props2.target}`
)
} else {
target2.value = document.documentElement
}
scrollContainer.value = getScrollContainer(root2.value, true)
updateRoot()
})
useEventListener$1(scrollContainer, 'scroll', handleScroll2)
watchEffect(update3)
expose({
update: update3,
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
ref_key: 'root',
ref: root2,
class: normalizeClass(unref(ns).b()),
style: normalizeStyle$1(unref(rootStyle)),
},
[
createElementVNode(
'div',
{
class: normalizeClass({ [unref(ns).m('fixed')]: fixed.value }),
style: normalizeStyle$1(unref(affixStyle)),
},
[renderSlot(_ctx.$slots, 'default')],
6
),
],
6
)
)
}
},
})
var Affix = /* @__PURE__ */ _export_sfc$1(_sfc_main$9m, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/affix/src/affix.vue',
],
])
const ElAffix = withInstall(Affix)
const iconProps = buildProps({
size: {
type: definePropType([Number, String]),
},
color: {
type: String,
},
})
const __default__$O = {
name: 'ElIcon',
inheritAttrs: false,
}
const _sfc_main$9l = /* @__PURE__ */ defineComponent({
...__default__$O,
props: iconProps,
setup(__props2) {
const props2 = __props2
const ns = useNamespace('icon')
const style2 = computed(() => {
if (!props2.size && !props2.color) return {}
return {
fontSize: isUndefined$c(props2.size) ? void 0 : addUnit(props2.size),
'--color': props2.color,
}
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'i',
mergeProps(
{
class: unref(ns).b(),
style: unref(style2),
},
_ctx.$attrs
),
[renderSlot(_ctx.$slots, 'default')],
16
)
)
}
},
})
var Icon$3 = /* @__PURE__ */ _export_sfc$1(_sfc_main$9l, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/icon/src/icon.vue',
],
])
const ElIcon = withInstall(Icon$3)
const alertEffects = ['light', 'dark']
const alertProps = buildProps({
title: {
type: String,
default: '',
},
description: {
type: String,
default: '',
},
type: {
type: String,
values: keysOf(TypeComponentsMap),
default: 'info',
},
closable: {
type: Boolean,
default: true,
},
closeText: {
type: String,
default: '',
},
showIcon: Boolean,
center: Boolean,
effect: {
type: String,
values: alertEffects,
default: 'light',
},
})
const alertEmits = {
close: (evt) => evt instanceof MouseEvent,
}
const __default__$N = {
name: 'ElAlert',
}
const _sfc_main$9k = /* @__PURE__ */ defineComponent({
...__default__$N,
props: alertProps,
emits: alertEmits,
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const { Close } = TypeComponents
const slots = useSlots()
const ns = useNamespace('alert')
const visible = ref(true)
const iconComponent = computed(
() => TypeComponentsMap[props2.type] || TypeComponentsMap['info']
)
const isBigIcon = computed(
() => props2.description || { [ns.is('big')]: slots.default }
)
const isBoldTitle = computed(
() => props2.description || { [ns.is('bold')]: slots.default }
)
const close2 = (evt) => {
visible.value = false
emit2('close', evt)
}
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
Transition,
{
name: unref(ns).b('fade'),
},
{
default: withCtx(() => [
withDirectives(
createElementVNode(
'div',
{
class: normalizeClass([
unref(ns).b(),
unref(ns).m(_ctx.type),
unref(ns).is('center', _ctx.center),
unref(ns).is(_ctx.effect),
]),
role: 'alert',
},
[
_ctx.showIcon && unref(iconComponent)
? (openBlock(),
createBlock(
unref(ElIcon),
{
key: 0,
class: normalizeClass([
unref(ns).e('icon'),
unref(isBigIcon),
]),
},
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(unref(iconComponent))
)),
]),
_: 1,
},
8,
['class']
))
: createCommentVNode('v-if', true),
createElementVNode(
'div',
{
class: normalizeClass(unref(ns).e('content')),
},
[
_ctx.title || _ctx.$slots.title
? (openBlock(),
createElementBlock(
'span',
{
key: 0,
class: normalizeClass([
unref(ns).e('title'),
unref(isBoldTitle),
]),
},
[
renderSlot(_ctx.$slots, 'title', {}, () => [
createTextVNode(
toDisplayString$1(_ctx.title),
1
),
]),
],
2
))
: createCommentVNode('v-if', true),
_ctx.$slots.default || _ctx.description
? (openBlock(),
createElementBlock(
'p',
{
key: 1,
class: normalizeClass(
unref(ns).e('description')
),
},
[
renderSlot(_ctx.$slots, 'default', {}, () => [
createTextVNode(
toDisplayString$1(_ctx.description),
1
),
]),
],
2
))
: createCommentVNode('v-if', true),
_ctx.closable
? (openBlock(),
createElementBlock(
Fragment,
{ key: 2 },
[
_ctx.closeText
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass([
unref(ns).e('close-btn'),
unref(ns).is('customed'),
]),
onClick: close2,
},
toDisplayString$1(_ctx.closeText),
3
))
: (openBlock(),
createBlock(
unref(ElIcon),
{
key: 1,
class: normalizeClass(
unref(ns).e('close-btn')
),
onClick: close2,
},
{
default: withCtx(() => [
createVNode$1(unref(Close)),
]),
_: 1,
},
8,
['class']
)),
],
2112
))
: createCommentVNode('v-if', true),
],
2
),
],
2
),
[[vShow, visible.value]]
),
]),
_: 3,
},
8,
['name']
)
)
}
},
})
var Alert = /* @__PURE__ */ _export_sfc$1(_sfc_main$9k, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/alert/src/alert.vue',
],
])
const ElAlert = withInstall(Alert)
let hiddenTextarea = void 0
const HIDDEN_STYLE = `
height:0 !important;
visibility:hidden !important;
overflow:hidden !important;
position:absolute !important;
z-index:-1000 !important;
top:0 !important;
right:0 !important;
`
const CONTEXT_STYLE = [
'letter-spacing',
'line-height',
'padding-top',
'padding-bottom',
'font-family',
'font-weight',
'font-size',
'text-rendering',
'text-transform',
'width',
'text-indent',
'padding-left',
'padding-right',
'border-width',
'box-sizing',
]
function calculateNodeStyling(targetElement) {
const style2 = window.getComputedStyle(targetElement)
const boxSizing = style2.getPropertyValue('box-sizing')
const paddingSize =
Number.parseFloat(style2.getPropertyValue('padding-bottom')) +
Number.parseFloat(style2.getPropertyValue('padding-top'))
const borderSize =
Number.parseFloat(style2.getPropertyValue('border-bottom-width')) +
Number.parseFloat(style2.getPropertyValue('border-top-width'))
const contextStyle = CONTEXT_STYLE.map(
(name2) => `${name2}:${style2.getPropertyValue(name2)}`
).join(';')
return { contextStyle, paddingSize, borderSize, boxSizing }
}
function calcTextareaHeight(targetElement, minRows = 1, maxRows) {
var _a2
if (!hiddenTextarea) {
hiddenTextarea = document.createElement('textarea')
document.body.appendChild(hiddenTextarea)
}
const { paddingSize, borderSize, boxSizing, contextStyle } =
calculateNodeStyling(targetElement)
hiddenTextarea.setAttribute('style', `${contextStyle};${HIDDEN_STYLE}`)
hiddenTextarea.value = targetElement.value || targetElement.placeholder || ''
let height = hiddenTextarea.scrollHeight
const result = {}
if (boxSizing === 'border-box') {
height = height + borderSize
} else if (boxSizing === 'content-box') {
height = height - paddingSize
}
hiddenTextarea.value = ''
const singleRowHeight = hiddenTextarea.scrollHeight - paddingSize
if (isNumber$h(minRows)) {
let minHeight = singleRowHeight * minRows
if (boxSizing === 'border-box') {
minHeight = minHeight + paddingSize + borderSize
}
height = Math.max(minHeight, height)
result.minHeight = `${minHeight}px`
}
if (isNumber$h(maxRows)) {
let maxHeight = singleRowHeight * maxRows
if (boxSizing === 'border-box') {
maxHeight = maxHeight + paddingSize + borderSize
}
height = Math.min(maxHeight, height)
}
result.height = `${height}px`
;(_a2 = hiddenTextarea.parentNode) == null
? void 0
: _a2.removeChild(hiddenTextarea)
hiddenTextarea = void 0
return result
}
const inputProps = buildProps({
size: useSizeProp,
disabled: Boolean,
modelValue: {
type: definePropType([String, Number, Object]),
default: '',
},
type: {
type: String,
default: 'text',
},
resize: {
type: String,
values: ['none', 'both', 'horizontal', 'vertical'],
},
autosize: {
type: definePropType([Boolean, Object]),
default: false,
},
autocomplete: {
type: String,
default: 'off',
},
placeholder: {
type: String,
},
form: {
type: String,
default: '',
},
readonly: {
type: Boolean,
default: false,
},
clearable: {
type: Boolean,
default: false,
},
showPassword: {
type: Boolean,
default: false,
},
showWordLimit: {
type: Boolean,
default: false,
},
suffixIcon: {
type: iconPropType,
default: '',
},
prefixIcon: {
type: iconPropType,
default: '',
},
label: {
type: String,
},
tabindex: {
type: [Number, String],
},
validateEvent: {
type: Boolean,
default: true,
},
inputStyle: {
type: definePropType([Object, Array, String]),
default: () => mutable({}),
},
})
const inputEmits = {
[UPDATE_MODEL_EVENT]: (value2) => isString$f(value2),
input: (value2) => isString$f(value2),
change: (value2) => isString$f(value2),
focus: (evt) => evt instanceof FocusEvent,
blur: (evt) => evt instanceof FocusEvent,
clear: () => true,
mouseleave: (evt) => evt instanceof MouseEvent,
mouseenter: (evt) => evt instanceof MouseEvent,
keydown: (evt) => evt instanceof Event,
compositionstart: (evt) => evt instanceof CompositionEvent,
compositionupdate: (evt) => evt instanceof CompositionEvent,
compositionend: (evt) => evt instanceof CompositionEvent,
}
const _hoisted_1$6$ = [
'type',
'disabled',
'readonly',
'autocomplete',
'tabindex',
'aria-label',
'placeholder',
]
const _hoisted_2$5B = [
'tabindex',
'disabled',
'readonly',
'autocomplete',
'aria-label',
'placeholder',
]
const __default__$M = {
name: 'ElInput',
inheritAttrs: false,
}
const _sfc_main$9j = /* @__PURE__ */ defineComponent({
...__default__$M,
props: inputProps,
emits: inputEmits,
setup(__props2, { expose, emit: emit2 }) {
const props2 = __props2
const PENDANT_MAP = {
suffix: 'append',
prefix: 'prepend',
}
const instance = getCurrentInstance()
const rawAttrs = useAttrs$1()
const slots = useSlots()
const attrs = useAttrs()
const { form: form2, formItem } = useFormItem()
const inputSize = useSize$1()
const inputDisabled = useDisabled$1()
const nsInput = useNamespace('input')
const nsTextarea = useNamespace('textarea')
const input = shallowRef()
const textarea = shallowRef()
const focused = ref(false)
const hovering = ref(false)
const isComposing = ref(false)
const passwordVisible = ref(false)
const textareaCalcStyle = shallowRef(props2.inputStyle)
const _ref2 = computed(() => input.value || textarea.value)
const needStatusIcon = computed(() => {
var _a2
return (_a2 = form2 == null ? void 0 : form2.statusIcon) != null
? _a2
: false
})
const validateState = computed(
() => (formItem == null ? void 0 : formItem.validateState) || ''
)
const validateIcon = computed(
() => ValidateComponentsMap[validateState.value]
)
const passwordIcon = computed(() => (passwordVisible.value ? view : hide$2))
const containerStyle = computed(() => [rawAttrs.style, props2.inputStyle])
const textareaStyle = computed(() => [
props2.inputStyle,
textareaCalcStyle.value,
{ resize: props2.resize },
])
const nativeInputValue = computed(() =>
isNil$1(props2.modelValue) ? '' : String(props2.modelValue)
)
const showClear = computed(
() =>
props2.clearable &&
!inputDisabled.value &&
!props2.readonly &&
!!nativeInputValue.value &&
(focused.value || hovering.value)
)
const showPwdVisible = computed(
() =>
props2.showPassword &&
!inputDisabled.value &&
!props2.readonly &&
(!!nativeInputValue.value || focused.value)
)
const isWordLimitVisible = computed(
() =>
props2.showWordLimit &&
!!attrs.value.maxlength &&
(props2.type === 'text' || props2.type === 'textarea') &&
!inputDisabled.value &&
!props2.readonly &&
!props2.showPassword
)
const textLength = computed(() => Array.from(nativeInputValue.value).length)
const inputExceed = computed(
() =>
!!isWordLimitVisible.value &&
textLength.value > Number(attrs.value.maxlength)
)
const suffixVisible = computed(
() =>
!!slots.suffix ||
!!props2.suffixIcon ||
showClear.value ||
props2.showPassword ||
isWordLimitVisible.value ||
(!!validateState.value && needStatusIcon.value)
)
const resizeTextarea = () => {
const { type: type4, autosize } = props2
if (!isClient$1 || type4 !== 'textarea') return
if (autosize) {
const minRows = isObject$v(autosize) ? autosize.minRows : void 0
const maxRows = isObject$v(autosize) ? autosize.maxRows : void 0
textareaCalcStyle.value = {
...calcTextareaHeight(textarea.value, minRows, maxRows),
}
} else {
textareaCalcStyle.value = {
minHeight: calcTextareaHeight(textarea.value).minHeight,
}
}
}
const setNativeInputValue = () => {
const input2 = _ref2.value
if (!input2 || input2.value === nativeInputValue.value) return
input2.value = nativeInputValue.value
}
const calcIconOffset = (place2) => {
const { el: el2 } = instance.vnode
if (!el2) return
const elList = Array.from(el2.querySelectorAll(`.${nsInput.e(place2)}`))
const target2 = elList.find((item2) => item2.parentNode === el2)
if (!target2) return
const pendant = PENDANT_MAP[place2]
if (slots[pendant]) {
target2.style.transform = `translateX(${
place2 === 'suffix' ? '-' : ''
}${
el2.querySelector(`.${nsInput.be('group', pendant)}`).offsetWidth
}px)`
} else {
target2.removeAttribute('style')
}
}
const updateIconOffset = () => {
calcIconOffset('prefix')
calcIconOffset('suffix')
}
const handleInput = async (event) => {
const { value: value2 } = event.target
if (isComposing.value) return
if (value2 === nativeInputValue.value) return
emit2(UPDATE_MODEL_EVENT, value2)
emit2('input', value2)
await nextTick()
setNativeInputValue()
}
const handleChange = (event) => {
emit2('change', event.target.value)
}
const handleCompositionStart = (event) => {
emit2('compositionstart', event)
isComposing.value = true
}
const handleCompositionUpdate = (event) => {
var _a2
emit2('compositionupdate', event)
const text2 = (_a2 = event.target) == null ? void 0 : _a2.value
const lastCharacter = text2[text2.length - 1] || ''
isComposing.value = !isKorean(lastCharacter)
}
const handleCompositionEnd = (event) => {
emit2('compositionend', event)
if (isComposing.value) {
isComposing.value = false
handleInput(event)
}
}
const handlePasswordVisible = () => {
passwordVisible.value = !passwordVisible.value
focus2()
}
const focus2 = async () => {
var _a2
await nextTick()
;(_a2 = _ref2.value) == null ? void 0 : _a2.focus()
}
const blur = () => {
var _a2
return (_a2 = _ref2.value) == null ? void 0 : _a2.blur()
}
const handleFocus = (event) => {
focused.value = true
emit2('focus', event)
}
const handleBlur = (event) => {
var _a2
focused.value = false
emit2('blur', event)
if (props2.validateEvent) {
;(_a2 = formItem == null ? void 0 : formItem.validate) == null
? void 0
: _a2.call(formItem, 'blur').catch((err) => debugWarn())
}
}
const handleMouseLeave = (evt) => {
hovering.value = false
emit2('mouseleave', evt)
}
const handleMouseEnter = (evt) => {
hovering.value = true
emit2('mouseenter', evt)
}
const handleKeydown = (evt) => {
emit2('keydown', evt)
}
const select2 = () => {
var _a2
;(_a2 = _ref2.value) == null ? void 0 : _a2.select()
}
const clear2 = () => {
emit2(UPDATE_MODEL_EVENT, '')
emit2('change', '')
emit2('clear')
emit2('input', '')
}
watch$1(
() => props2.modelValue,
() => {
var _a2
nextTick(() => resizeTextarea())
if (props2.validateEvent) {
;(_a2 = formItem == null ? void 0 : formItem.validate) == null
? void 0
: _a2.call(formItem, 'change').catch((err) => debugWarn())
}
}
)
watch$1(nativeInputValue, () => setNativeInputValue())
watch$1(
() => props2.type,
async () => {
await nextTick()
setNativeInputValue()
resizeTextarea()
updateIconOffset()
}
)
onMounted(async () => {
setNativeInputValue()
updateIconOffset()
await nextTick()
resizeTextarea()
})
onUpdated(async () => {
await nextTick()
updateIconOffset()
})
expose({
input,
textarea,
ref: _ref2,
textareaStyle,
autosize: toRef(props2, 'autosize'),
focus: focus2,
blur,
select: select2,
clear: clear2,
resizeTextarea,
})
return (_ctx, _cache) => {
return withDirectives(
(openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
_ctx.type === 'textarea'
? unref(nsTextarea).b()
: unref(nsInput).b(),
unref(nsInput).m(unref(inputSize)),
unref(nsInput).is('disabled', unref(inputDisabled)),
unref(nsInput).is('exceed', unref(inputExceed)),
{
[unref(nsInput).b('group')]:
_ctx.$slots.prepend || _ctx.$slots.append,
[unref(nsInput).bm('group', 'append')]: _ctx.$slots.append,
[unref(nsInput).bm('group', 'prepend')]: _ctx.$slots.prepend,
[unref(nsInput).m('prefix')]:
_ctx.$slots.prefix || _ctx.prefixIcon,
[unref(nsInput).m('suffix')]:
_ctx.$slots.suffix ||
_ctx.suffixIcon ||
_ctx.clearable ||
_ctx.showPassword,
[unref(nsInput).m('suffix--password-clear')]:
unref(showClear) && unref(showPwdVisible),
},
_ctx.$attrs.class,
]),
style: normalizeStyle$1(unref(containerStyle)),
onMouseenter: handleMouseEnter,
onMouseleave: handleMouseLeave,
},
[
createCommentVNode(' input '),
_ctx.type !== 'textarea'
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
createCommentVNode(' prepend slot '),
_ctx.$slots.prepend
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass(
unref(nsInput).be('group', 'prepend')
),
},
[renderSlot(_ctx.$slots, 'prepend')],
2
))
: createCommentVNode('v-if', true),
createElementVNode(
'input',
mergeProps(
{
ref_key: 'input',
ref: input,
class: unref(nsInput).e('inner'),
},
unref(attrs),
{
type: _ctx.showPassword
? passwordVisible.value
? 'text'
: 'password'
: _ctx.type,
disabled: unref(inputDisabled),
readonly: _ctx.readonly,
autocomplete: _ctx.autocomplete,
tabindex: _ctx.tabindex,
'aria-label': _ctx.label,
placeholder: _ctx.placeholder,
style: _ctx.inputStyle,
onCompositionstart: handleCompositionStart,
onCompositionupdate: handleCompositionUpdate,
onCompositionend: handleCompositionEnd,
onInput: handleInput,
onFocus: handleFocus,
onBlur: handleBlur,
onChange: handleChange,
onKeydown: handleKeydown,
}
),
null,
16,
_hoisted_1$6$
),
createCommentVNode(' prefix slot '),
_ctx.$slots.prefix || _ctx.prefixIcon
? (openBlock(),
createElementBlock(
'span',
{
key: 1,
class: normalizeClass(unref(nsInput).e('prefix')),
},
[
createElementVNode(
'span',
{
class: normalizeClass(
unref(nsInput).e('prefix-inner')
),
},
[
renderSlot(_ctx.$slots, 'prefix'),
_ctx.prefixIcon
? (openBlock(),
createBlock(
unref(ElIcon),
{
key: 0,
class: normalizeClass(
unref(nsInput).e('icon')
),
},
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(
_ctx.prefixIcon
)
)),
]),
_: 1,
},
8,
['class']
))
: createCommentVNode('v-if', true),
],
2
),
],
2
))
: createCommentVNode('v-if', true),
createCommentVNode(' suffix slot '),
unref(suffixVisible)
? (openBlock(),
createElementBlock(
'span',
{
key: 2,
class: normalizeClass(unref(nsInput).e('suffix')),
},
[
createElementVNode(
'span',
{
class: normalizeClass(
unref(nsInput).e('suffix-inner')
),
},
[
!unref(showClear) ||
!unref(showPwdVisible) ||
!unref(isWordLimitVisible)
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
renderSlot(_ctx.$slots, 'suffix'),
_ctx.suffixIcon
? (openBlock(),
createBlock(
unref(ElIcon),
{
key: 0,
class: normalizeClass(
unref(nsInput).e('icon')
),
},
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(
_ctx.suffixIcon
)
)),
]),
_: 1,
},
8,
['class']
))
: createCommentVNode('v-if', true),
],
64
))
: createCommentVNode('v-if', true),
unref(showClear)
? (openBlock(),
createBlock(
unref(ElIcon),
{
key: 1,
class: normalizeClass([
unref(nsInput).e('icon'),
unref(nsInput).e('clear'),
]),
onMousedown:
_cache[0] ||
(_cache[0] = withModifiers(() => {}, [
'prevent',
])),
onClick: clear2,
},
{
default: withCtx(() => [
createVNode$1(unref(circleClose)),
]),
_: 1,
},
8,
['class']
))
: createCommentVNode('v-if', true),
unref(showPwdVisible)
? (openBlock(),
createBlock(
unref(ElIcon),
{
key: 2,
class: normalizeClass([
unref(nsInput).e('icon'),
unref(nsInput).e('clear'),
]),
onClick: handlePasswordVisible,
},
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(
unref(passwordIcon)
)
)),
]),
_: 1,
},
8,
['class']
))
: createCommentVNode('v-if', true),
unref(isWordLimitVisible)
? (openBlock(),
createElementBlock(
'span',
{
key: 3,
class: normalizeClass(
unref(nsInput).e('count')
),
},
[
createElementVNode(
'span',
{
class: normalizeClass(
unref(nsInput).e('count-inner')
),
},
toDisplayString$1(unref(textLength)) +
' / ' +
toDisplayString$1(
unref(attrs).maxlength
),
3
),
],
2
))
: createCommentVNode('v-if', true),
],
2
),
unref(validateState) &&
unref(validateIcon) &&
unref(needStatusIcon)
? (openBlock(),
createBlock(
unref(ElIcon),
{
key: 0,
class: normalizeClass([
unref(nsInput).e('icon'),
unref(nsInput).e('validateIcon'),
unref(nsInput).is(
'loading',
unref(validateState) === 'validating'
),
]),
},
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(
unref(validateIcon)
)
)),
]),
_: 1,
},
8,
['class']
))
: createCommentVNode('v-if', true),
],
2
))
: createCommentVNode('v-if', true),
createCommentVNode(' append slot '),
_ctx.$slots.append
? (openBlock(),
createElementBlock(
'div',
{
key: 3,
class: normalizeClass(
unref(nsInput).be('group', 'append')
),
},
[renderSlot(_ctx.$slots, 'append')],
2
))
: createCommentVNode('v-if', true),
],
64
))
: (openBlock(),
createElementBlock(
Fragment,
{ key: 1 },
[
createCommentVNode(' textarea '),
createElementVNode(
'textarea',
mergeProps(
{
ref_key: 'textarea',
ref: textarea,
class: unref(nsTextarea).e('inner'),
},
unref(attrs),
{
tabindex: _ctx.tabindex,
disabled: unref(inputDisabled),
readonly: _ctx.readonly,
autocomplete: _ctx.autocomplete,
style: unref(textareaStyle),
'aria-label': _ctx.label,
placeholder: _ctx.placeholder,
onCompositionstart: handleCompositionStart,
onCompositionupdate: handleCompositionUpdate,
onCompositionend: handleCompositionEnd,
onInput: handleInput,
onFocus: handleFocus,
onBlur: handleBlur,
onChange: handleChange,
onKeydown: handleKeydown,
}
),
null,
16,
_hoisted_2$5B
),
unref(isWordLimitVisible)
? (openBlock(),
createElementBlock(
'span',
{
key: 0,
class: normalizeClass(unref(nsInput).e('count')),
},
toDisplayString$1(unref(textLength)) +
' / ' +
toDisplayString$1(unref(attrs).maxlength),
3
))
: createCommentVNode('v-if', true),
],
64
)),
],
38
)),
[[vShow, _ctx.type !== 'hidden']]
)
}
},
})
var Input$2 = /* @__PURE__ */ _export_sfc$1(_sfc_main$9j, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/input/src/input.vue',
],
])
const ElInput = withInstall(Input$2)
const BAR_MAP = {
vertical: {
offset: 'offsetHeight',
scroll: 'scrollTop',
scrollSize: 'scrollHeight',
size: 'height',
key: 'vertical',
axis: 'Y',
client: 'clientY',
direction: 'top',
},
horizontal: {
offset: 'offsetWidth',
scroll: 'scrollLeft',
scrollSize: 'scrollWidth',
size: 'width',
key: 'horizontal',
axis: 'X',
client: 'clientX',
direction: 'left',
},
}
const renderThumbStyle$1 = ({ move, size, bar }) => ({
[bar.size]: size,
transform: `translate${bar.axis}(${move}%)`,
})
const thumbProps = buildProps({
vertical: Boolean,
size: String,
move: Number,
ratio: {
type: Number,
required: true,
},
always: Boolean,
})
const COMPONENT_NAME$c = 'Thumb'
const _sfc_main$9i = defineComponent({
name: COMPONENT_NAME$c,
props: thumbProps,
setup(props2) {
const scrollbar = inject(scrollbarContextKey)
const ns = useNamespace('scrollbar')
if (!scrollbar)
throwError$1(COMPONENT_NAME$c, 'can not inject scrollbar context')
const instance = ref()
const thumb = ref()
const thumbState = ref({})
const visible = ref(false)
let cursorDown = false
let cursorLeave = false
let originalOnSelectStart = isClient$1 ? document.onselectstart : null
const bar = computed(
() => BAR_MAP[props2.vertical ? 'vertical' : 'horizontal']
)
const thumbStyle = computed(() =>
renderThumbStyle$1({
size: props2.size,
move: props2.move,
bar: bar.value,
})
)
const offsetRatio = computed(
() =>
instance.value[bar.value.offset] ** 2 /
scrollbar.wrapElement[bar.value.scrollSize] /
props2.ratio /
thumb.value[bar.value.offset]
)
const clickThumbHandler = (e2) => {
var _a2
e2.stopPropagation()
if (e2.ctrlKey || [1, 2].includes(e2.button)) return
;(_a2 = window.getSelection()) == null ? void 0 : _a2.removeAllRanges()
startDrag(e2)
const el2 = e2.currentTarget
if (!el2) return
thumbState.value[bar.value.axis] =
el2[bar.value.offset] -
(e2[bar.value.client] -
el2.getBoundingClientRect()[bar.value.direction])
}
const clickTrackHandler = (e2) => {
if (!thumb.value || !instance.value || !scrollbar.wrapElement) return
const offset2 = Math.abs(
e2.target.getBoundingClientRect()[bar.value.direction] -
e2[bar.value.client]
)
const thumbHalf = thumb.value[bar.value.offset] / 2
const thumbPositionPercentage =
((offset2 - thumbHalf) * 100 * offsetRatio.value) /
instance.value[bar.value.offset]
scrollbar.wrapElement[bar.value.scroll] =
(thumbPositionPercentage *
scrollbar.wrapElement[bar.value.scrollSize]) /
100
}
const startDrag = (e2) => {
e2.stopImmediatePropagation()
cursorDown = true
document.addEventListener('mousemove', mouseMoveDocumentHandler)
document.addEventListener('mouseup', mouseUpDocumentHandler)
originalOnSelectStart = document.onselectstart
document.onselectstart = () => false
}
const mouseMoveDocumentHandler = (e2) => {
if (!instance.value || !thumb.value) return
if (cursorDown === false) return
const prevPage2 = thumbState.value[bar.value.axis]
if (!prevPage2) return
const offset2 =
(instance.value.getBoundingClientRect()[bar.value.direction] -
e2[bar.value.client]) *
-1
const thumbClickPosition = thumb.value[bar.value.offset] - prevPage2
const thumbPositionPercentage =
((offset2 - thumbClickPosition) * 100 * offsetRatio.value) /
instance.value[bar.value.offset]
scrollbar.wrapElement[bar.value.scroll] =
(thumbPositionPercentage *
scrollbar.wrapElement[bar.value.scrollSize]) /
100
}
const mouseUpDocumentHandler = () => {
cursorDown = false
thumbState.value[bar.value.axis] = 0
document.removeEventListener('mousemove', mouseMoveDocumentHandler)
document.removeEventListener('mouseup', mouseUpDocumentHandler)
restoreOnselectstart()
if (cursorLeave) visible.value = false
}
const mouseMoveScrollbarHandler = () => {
cursorLeave = false
visible.value = !!props2.size
}
const mouseLeaveScrollbarHandler = () => {
cursorLeave = true
visible.value = cursorDown
}
onBeforeUnmount(() => {
restoreOnselectstart()
document.removeEventListener('mouseup', mouseUpDocumentHandler)
})
const restoreOnselectstart = () => {
if (document.onselectstart !== originalOnSelectStart)
document.onselectstart = originalOnSelectStart
}
useEventListener$1(
toRef(scrollbar, 'scrollbarElement'),
'mousemove',
mouseMoveScrollbarHandler
)
useEventListener$1(
toRef(scrollbar, 'scrollbarElement'),
'mouseleave',
mouseLeaveScrollbarHandler
)
return {
ns,
instance,
thumb,
bar,
thumbStyle,
visible,
clickTrackHandler,
clickThumbHandler,
}
},
})
function _sfc_render$1J(_ctx, _cache, $props2, $setup, $data, $options) {
return (
openBlock(),
createBlock(
Transition,
{
name: _ctx.ns.b('fade'),
},
{
default: withCtx(() => [
withDirectives(
createElementVNode(
'div',
{
ref: 'instance',
class: normalizeClass([
_ctx.ns.e('bar'),
_ctx.ns.is(_ctx.bar.key),
]),
onMousedown:
_cache[1] ||
(_cache[1] = (...args) =>
_ctx.clickTrackHandler && _ctx.clickTrackHandler(...args)),
},
[
createElementVNode(
'div',
{
ref: 'thumb',
class: normalizeClass(_ctx.ns.e('thumb')),
style: normalizeStyle$1(_ctx.thumbStyle),
onMousedown:
_cache[0] ||
(_cache[0] = (...args) =>
_ctx.clickThumbHandler &&
_ctx.clickThumbHandler(...args)),
},
null,
38
),
],
34
),
[[vShow, _ctx.always || _ctx.visible]]
),
]),
_: 1,
},
8,
['name']
)
)
}
var Thumb = /* @__PURE__ */ _export_sfc$1(_sfc_main$9i, [
['render', _sfc_render$1J],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/scrollbar/src/thumb.vue',
],
])
const barProps = buildProps({
always: {
type: Boolean,
default: true,
},
width: {
type: String,
default: '',
},
height: {
type: String,
default: '',
},
ratioX: {
type: Number,
default: 1,
},
ratioY: {
type: Number,
default: 1,
},
})
const _sfc_main$9h = defineComponent({
components: {
Thumb,
},
props: barProps,
setup(props2) {
const moveX = ref(0)
const moveY = ref(0)
const GAP = 4
const handleScroll2 = (wrap) => {
if (wrap) {
const offsetHeight = wrap.offsetHeight - GAP
const offsetWidth = wrap.offsetWidth - GAP
moveY.value = ((wrap.scrollTop * 100) / offsetHeight) * props2.ratioY
moveX.value = ((wrap.scrollLeft * 100) / offsetWidth) * props2.ratioX
}
}
return {
handleScroll: handleScroll2,
moveX,
moveY,
}
},
})
function _sfc_render$1I(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_thumb = resolveComponent('thumb')
return (
openBlock(),
createElementBlock(
Fragment,
null,
[
createVNode$1(
_component_thumb,
{
move: _ctx.moveX,
ratio: _ctx.ratioX,
size: _ctx.width,
always: _ctx.always,
},
null,
8,
['move', 'ratio', 'size', 'always']
),
createVNode$1(
_component_thumb,
{
move: _ctx.moveY,
ratio: _ctx.ratioY,
size: _ctx.height,
vertical: '',
always: _ctx.always,
},
null,
8,
['move', 'ratio', 'size', 'always']
),
],
64
)
)
}
var Bar = /* @__PURE__ */ _export_sfc$1(_sfc_main$9h, [
['render', _sfc_render$1I],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/scrollbar/src/bar.vue',
],
])
const scrollbarProps = buildProps({
height: {
type: [String, Number],
default: '',
},
maxHeight: {
type: [String, Number],
default: '',
},
native: {
type: Boolean,
default: false,
},
wrapStyle: {
type: definePropType([String, Object, Array]),
default: '',
},
wrapClass: {
type: [String, Array],
default: '',
},
viewClass: {
type: [String, Array],
default: '',
},
viewStyle: {
type: [String, Array, Object],
default: '',
},
noresize: Boolean,
tag: {
type: String,
default: 'div',
},
always: {
type: Boolean,
default: false,
},
minSize: {
type: Number,
default: 20,
},
})
const scrollbarEmits = {
scroll: ({ scrollTop, scrollLeft }) =>
isNumber$h(scrollTop) && isNumber$h(scrollLeft),
}
const _sfc_main$9g = defineComponent({
name: 'ElScrollbar',
components: {
Bar,
},
props: scrollbarProps,
emits: scrollbarEmits,
setup(props2, { emit: emit2 }) {
const ns = useNamespace('scrollbar')
let stopResizeObserver = void 0
let stopResizeListener = void 0
const scrollbar$ = ref()
const wrap$ = ref()
const resize$ = ref()
const sizeWidth = ref('0')
const sizeHeight = ref('0')
const barRef = ref()
const moveX = ref(0)
const moveY = ref(0)
const ratioY = ref(1)
const ratioX = ref(1)
const GAP = 4
const style2 = computed(() => {
const style22 = {}
if (props2.height) style22.height = addUnit(props2.height)
if (props2.maxHeight) style22.maxHeight = addUnit(props2.maxHeight)
return [props2.wrapStyle, style22]
})
const handleScroll2 = () => {
var _a2
if (wrap$.value) {
;(_a2 = barRef.value) == null ? void 0 : _a2.handleScroll(wrap$.value)
emit2('scroll', {
scrollTop: wrap$.value.scrollTop,
scrollLeft: wrap$.value.scrollLeft,
})
}
}
function scrollTo(arg1, arg2) {
if (isObject$v(arg1)) {
wrap$.value.scrollTo(arg1)
} else if (isNumber$h(arg1) && isNumber$h(arg2)) {
wrap$.value.scrollTo(arg1, arg2)
}
}
const setScrollTop2 = (value2) => {
if (!isNumber$h(value2)) {
return
}
wrap$.value.scrollTop = value2
}
const setScrollLeft2 = (value2) => {
if (!isNumber$h(value2)) {
return
}
wrap$.value.scrollLeft = value2
}
const update3 = () => {
if (!wrap$.value) return
const offsetHeight = wrap$.value.offsetHeight - GAP
const offsetWidth = wrap$.value.offsetWidth - GAP
const originalHeight = offsetHeight ** 2 / wrap$.value.scrollHeight
const originalWidth = offsetWidth ** 2 / wrap$.value.scrollWidth
const height = Math.max(originalHeight, props2.minSize)
const width = Math.max(originalWidth, props2.minSize)
ratioY.value =
originalHeight /
(offsetHeight - originalHeight) /
(height / (offsetHeight - height))
ratioX.value =
originalWidth /
(offsetWidth - originalWidth) /
(width / (offsetWidth - width))
sizeHeight.value = height + GAP < offsetHeight ? `${height}px` : ''
sizeWidth.value = width + GAP < offsetWidth ? `${width}px` : ''
}
watch$1(
() => props2.noresize,
(noresize) => {
if (noresize) {
stopResizeObserver == null ? void 0 : stopResizeObserver()
stopResizeListener == null ? void 0 : stopResizeListener()
} else {
;({ stop: stopResizeObserver } = useResizeObserver$1(
resize$,
update3
))
stopResizeListener = useEventListener$1('resize', update3)
}
},
{ immediate: true }
)
watch$1(
() => [props2.maxHeight, props2.height],
() => {
if (!props2.native)
nextTick(() => {
var _a2
update3()
if (wrap$.value) {
;(_a2 = barRef.value) == null
? void 0
: _a2.handleScroll(wrap$.value)
}
})
}
)
provide(
scrollbarContextKey,
reactive({
scrollbarElement: scrollbar$,
wrapElement: wrap$,
})
)
onMounted(() => {
if (!props2.native) nextTick(() => update3())
})
return {
ns,
scrollbar$,
wrap$,
resize$,
barRef,
moveX,
moveY,
ratioX,
ratioY,
sizeWidth,
sizeHeight,
style: style2,
update: update3,
handleScroll: handleScroll2,
scrollTo,
setScrollTop: setScrollTop2,
setScrollLeft: setScrollLeft2,
}
},
})
function _sfc_render$1H(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_bar = resolveComponent('bar')
return (
openBlock(),
createElementBlock(
'div',
{
ref: 'scrollbar$',
class: normalizeClass(_ctx.ns.b()),
},
[
createElementVNode(
'div',
{
ref: 'wrap$',
class: normalizeClass([
_ctx.wrapClass,
_ctx.ns.e('wrap'),
{ [_ctx.ns.em('wrap', 'hidden-default')]: !_ctx.native },
]),
style: normalizeStyle$1(_ctx.style),
onScroll:
_cache[0] ||
(_cache[0] = (...args) =>
_ctx.handleScroll && _ctx.handleScroll(...args)),
},
[
(openBlock(),
createBlock(
resolveDynamicComponent(_ctx.tag),
{
ref: 'resize$',
class: normalizeClass([_ctx.ns.e('view'), _ctx.viewClass]),
style: normalizeStyle$1(_ctx.viewStyle),
},
{
default: withCtx(() => [renderSlot(_ctx.$slots, 'default')]),
_: 3,
},
8,
['class', 'style']
)),
],
38
),
!_ctx.native
? (openBlock(),
createBlock(
_component_bar,
{
key: 0,
ref: 'barRef',
height: _ctx.sizeHeight,
width: _ctx.sizeWidth,
always: _ctx.always,
'ratio-x': _ctx.ratioX,
'ratio-y': _ctx.ratioY,
},
null,
8,
['height', 'width', 'always', 'ratio-x', 'ratio-y']
))
: createCommentVNode('v-if', true),
],
2
)
)
}
var Scrollbar = /* @__PURE__ */ _export_sfc$1(_sfc_main$9g, [
['render', _sfc_render$1H],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/scrollbar/src/scrollbar.vue',
],
])
const ElScrollbar = withInstall(Scrollbar)
const __default__$L = {
name: 'ElPopperRoot',
inheritAttrs: false,
}
const _sfc_main$9f = /* @__PURE__ */ defineComponent({
...__default__$L,
setup(__props2, { expose }) {
const triggerRef2 = ref()
const popperInstanceRef = ref()
const contentRef = ref()
const referenceRef = ref()
const popperProvides = {
triggerRef: triggerRef2,
popperInstanceRef,
contentRef,
referenceRef,
}
expose(popperProvides)
provide(POPPER_INJECTION_KEY, popperProvides)
return (_ctx, _cache) => {
return renderSlot(_ctx.$slots, 'default')
}
},
})
var Popper = /* @__PURE__ */ _export_sfc$1(_sfc_main$9f, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/popper/src/popper.vue',
],
])
const usePopperArrowProps = buildProps({
arrowOffset: {
type: Number,
default: 5,
},
})
const __default__$K = {
name: 'ElPopperArrow',
inheritAttrs: false,
}
const _sfc_main$9e = /* @__PURE__ */ defineComponent({
...__default__$K,
props: usePopperArrowProps,
setup(__props2, { expose }) {
const props2 = __props2
const ns = useNamespace('popper')
const { arrowOffset, arrowRef } = inject(
POPPER_CONTENT_INJECTION_KEY,
void 0
)
watch$1(
() => props2.arrowOffset,
(val2) => {
arrowOffset.value = val2
}
)
onBeforeUnmount(() => {
arrowRef.value = void 0
})
expose({
arrowRef,
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'span',
{
ref_key: 'arrowRef',
ref: arrowRef,
class: normalizeClass(unref(ns).e('arrow')),
'data-popper-arrow': '',
},
null,
2
)
)
}
},
})
var ElPopperArrow = /* @__PURE__ */ _export_sfc$1(_sfc_main$9e, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/popper/src/arrow.vue',
],
])
const NAME = 'ElOnlyChild'
const OnlyChild = defineComponent({
name: NAME,
setup(_2, { slots, attrs }) {
var _a2
const forwardRefInjection = inject(FORWARD_REF_INJECTION_KEY)
const forwardRefDirective = useForwardRefDirective(
(_a2 =
forwardRefInjection == null
? void 0
: forwardRefInjection.setForwardRef) != null
? _a2
: NOOP
)
return () => {
var _a22
const defaultSlot =
(_a22 = slots.default) == null ? void 0 : _a22.call(slots, attrs)
if (!defaultSlot) return null
if (defaultSlot.length > 1) {
return null
}
const firstLegitNode = findFirstLegitChild(defaultSlot)
if (!firstLegitNode) {
return null
}
return withDirectives(cloneVNode(firstLegitNode, attrs), [
[forwardRefDirective],
])
}
},
})
function findFirstLegitChild(node2) {
if (!node2) return null
const children = node2
for (const child of children) {
if (isObject$v(child)) {
switch (child.type) {
case Comment:
continue
case Text:
return wrapTextContent(child)
case 'svg':
return wrapTextContent(child)
case Fragment:
return findFirstLegitChild(child.children)
default:
return child
}
}
return wrapTextContent(child)
}
return null
}
function wrapTextContent(s2) {
return createVNode$1(
'span',
{
class: 'el-only-child__content',
},
[s2]
)
}
const usePopperTriggerProps = buildProps({
virtualRef: {
type: definePropType(Object),
},
virtualTriggering: Boolean,
onMouseenter: Function,
onMouseleave: Function,
onClick: Function,
onKeydown: Function,
onFocus: Function,
onBlur: Function,
onContextmenu: Function,
id: String,
open: Boolean,
})
const __default__$J = {
name: 'ElPopperTrigger',
inheritAttrs: false,
}
const _sfc_main$9d = /* @__PURE__ */ defineComponent({
...__default__$J,
props: usePopperTriggerProps,
setup(__props2, { expose }) {
const props2 = __props2
const { triggerRef: triggerRef2 } = inject(POPPER_INJECTION_KEY, void 0)
useForwardRef(triggerRef2)
onMounted(() => {
watch$1(
() => props2.virtualRef,
(virtualEl) => {
if (virtualEl) {
triggerRef2.value = unrefElement$1(virtualEl)
}
},
{
immediate: true,
}
)
watch$1(
() => triggerRef2.value,
(el2, prevEl) => {
if (isElement$3(el2)) {
;[
'onMouseenter',
'onMouseleave',
'onClick',
'onKeydown',
'onFocus',
'onBlur',
'onContextmenu',
].forEach((eventName) => {
var _a2
const handler = props2[eventName]
if (handler) {
el2.addEventListener(eventName.slice(2).toLowerCase(), handler)
;(_a2 = prevEl == null ? void 0 : prevEl.removeEventListener) ==
null
? void 0
: _a2.call(prevEl, eventName.slice(2).toLowerCase(), handler)
}
})
}
},
{
immediate: true,
}
)
})
expose({
triggerRef: triggerRef2,
})
return (_ctx, _cache) => {
return !_ctx.virtualTriggering
? (openBlock(),
createBlock(
unref(OnlyChild),
mergeProps({ key: 0 }, _ctx.$attrs, {
'aria-describedby': _ctx.open ? _ctx.id : void 0,
}),
{
default: withCtx(() => [renderSlot(_ctx.$slots, 'default')]),
_: 3,
},
16,
['aria-describedby']
))
: createCommentVNode('v-if', true)
}
},
})
var ElPopperTrigger = /* @__PURE__ */ _export_sfc$1(_sfc_main$9d, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/popper/src/trigger.vue',
],
])
var top = 'top'
var bottom = 'bottom'
var right = 'right'
var left = 'left'
var auto = 'auto'
var basePlacements = [top, bottom, right, left]
var start$1 = 'start'
var end$2 = 'end'
var clippingParents = 'clippingParents'
var viewport = 'viewport'
var popper = 'popper'
var reference = 'reference'
var variationPlacements = /* @__PURE__ */ basePlacements.reduce(function (
acc,
placement
) {
return acc.concat([placement + '-' + start$1, placement + '-' + end$2])
},
[])
var placements = /* @__PURE__ */ []
.concat(basePlacements, [auto])
.reduce(function (acc, placement) {
return acc.concat([
placement,
placement + '-' + start$1,
placement + '-' + end$2,
])
}, [])
var beforeRead = 'beforeRead'
var read = 'read'
var afterRead = 'afterRead'
var beforeMain = 'beforeMain'
var main$1 = 'main'
var afterMain = 'afterMain'
var beforeWrite = 'beforeWrite'
var write = 'write'
var afterWrite = 'afterWrite'
var modifierPhases = [
beforeRead,
read,
afterRead,
beforeMain,
main$1,
afterMain,
beforeWrite,
write,
afterWrite,
]
function getNodeName(element) {
return element ? (element.nodeName || '').toLowerCase() : null
}
function getWindow(node2) {
if (node2 == null) {
return window
}
if (node2.toString() !== '[object Window]') {
var ownerDocument = node2.ownerDocument
return ownerDocument ? ownerDocument.defaultView || window : window
}
return node2
}
function isElement$2(node2) {
var OwnElement = getWindow(node2).Element
return node2 instanceof OwnElement || node2 instanceof Element
}
function isHTMLElement$1(node2) {
var OwnElement = getWindow(node2).HTMLElement
return node2 instanceof OwnElement || node2 instanceof HTMLElement
}
function isShadowRoot(node2) {
if (typeof ShadowRoot === 'undefined') {
return false
}
var OwnElement = getWindow(node2).ShadowRoot
return node2 instanceof OwnElement || node2 instanceof ShadowRoot
}
function applyStyles(_ref2) {
var state2 = _ref2.state
Object.keys(state2.elements).forEach(function (name2) {
var style2 = state2.styles[name2] || {}
var attributes2 = state2.attributes[name2] || {}
var element = state2.elements[name2]
if (!isHTMLElement$1(element) || !getNodeName(element)) {
return
}
Object.assign(element.style, style2)
Object.keys(attributes2).forEach(function (name3) {
var value2 = attributes2[name3]
if (value2 === false) {
element.removeAttribute(name3)
} else {
element.setAttribute(name3, value2 === true ? '' : value2)
}
})
})
}
function effect$2(_ref2) {
var state2 = _ref2.state
var initialStyles = {
popper: {
position: state2.options.strategy,
left: '0',
top: '0',
margin: '0',
},
arrow: {
position: 'absolute',
},
reference: {},
}
Object.assign(state2.elements.popper.style, initialStyles.popper)
state2.styles = initialStyles
if (state2.elements.arrow) {
Object.assign(state2.elements.arrow.style, initialStyles.arrow)
}
return function () {
Object.keys(state2.elements).forEach(function (name2) {
var element = state2.elements[name2]
var attributes2 = state2.attributes[name2] || {}
var styleProperties = Object.keys(
state2.styles.hasOwnProperty(name2)
? state2.styles[name2]
: initialStyles[name2]
)
var style2 = styleProperties.reduce(function (style3, property2) {
style3[property2] = ''
return style3
}, {})
if (!isHTMLElement$1(element) || !getNodeName(element)) {
return
}
Object.assign(element.style, style2)
Object.keys(attributes2).forEach(function (attribute) {
element.removeAttribute(attribute)
})
})
}
}
var applyStyles$1 = {
name: 'applyStyles',
enabled: true,
phase: 'write',
fn: applyStyles,
effect: effect$2,
requires: ['computeStyles'],
}
function getBasePlacement(placement) {
return placement.split('-')[0]
}
var max$b = Math.max
var min$b = Math.min
var round$8 = Math.round
function getUAString() {
var uaData = navigator.userAgentData
if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {
return uaData.brands
.map(function (item2) {
return item2.brand + '/' + item2.version
})
.join(' ')
}
return navigator.userAgent
}
function isLayoutViewport() {
return !/^((?!chrome|android).)*safari/i.test(getUAString())
}
function getBoundingClientRect(element, includeScale, isFixedStrategy) {
if (includeScale === void 0) {
includeScale = false
}
if (isFixedStrategy === void 0) {
isFixedStrategy = false
}
var clientRect = element.getBoundingClientRect()
var scaleX = 1
var scaleY = 1
if (includeScale && isHTMLElement$1(element)) {
scaleX =
element.offsetWidth > 0
? round$8(clientRect.width) / element.offsetWidth || 1
: 1
scaleY =
element.offsetHeight > 0
? round$8(clientRect.height) / element.offsetHeight || 1
: 1
}
var _ref2 = isElement$2(element) ? getWindow(element) : window,
visualViewport = _ref2.visualViewport
var addVisualOffsets = !isLayoutViewport() && isFixedStrategy
var x2 =
(clientRect.left +
(addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) /
scaleX
var y2 =
(clientRect.top +
(addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) /
scaleY
var width = clientRect.width / scaleX
var height = clientRect.height / scaleY
return {
width,
height,
top: y2,
right: x2 + width,
bottom: y2 + height,
left: x2,
x: x2,
y: y2,
}
}
function getLayoutRect$1(element) {
var clientRect = getBoundingClientRect(element)
var width = element.offsetWidth
var height = element.offsetHeight
if (Math.abs(clientRect.width - width) <= 1) {
width = clientRect.width
}
if (Math.abs(clientRect.height - height) <= 1) {
height = clientRect.height
}
return {
x: element.offsetLeft,
y: element.offsetTop,
width,
height,
}
}
function contains$1(parent2, child) {
var rootNode = child.getRootNode && child.getRootNode()
if (parent2.contains(child)) {
return true
} else if (rootNode && isShadowRoot(rootNode)) {
var next = child
do {
if (next && parent2.isSameNode(next)) {
return true
}
next = next.parentNode || next.host
} while (next)
}
return false
}
function getComputedStyle$2(element) {
return getWindow(element).getComputedStyle(element)
}
function isTableElement(element) {
return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0
}
function getDocumentElement(element) {
return (
(isElement$2(element) ? element.ownerDocument : element.document) ||
window.document
).documentElement
}
function getParentNode$2(element) {
if (getNodeName(element) === 'html') {
return element
}
return (
element.assignedSlot ||
element.parentNode ||
(isShadowRoot(element) ? element.host : null) ||
getDocumentElement(element)
)
}
function getTrueOffsetParent(element) {
if (
!isHTMLElement$1(element) ||
getComputedStyle$2(element).position === 'fixed'
) {
return null
}
return element.offsetParent
}
function getContainingBlock(element) {
var isFirefox2 = /firefox/i.test(getUAString())
var isIE = /Trident/i.test(getUAString())
if (isIE && isHTMLElement$1(element)) {
var elementCss = getComputedStyle$2(element)
if (elementCss.position === 'fixed') {
return null
}
}
var currentNode = getParentNode$2(element)
if (isShadowRoot(currentNode)) {
currentNode = currentNode.host
}
while (
isHTMLElement$1(currentNode) &&
['html', 'body'].indexOf(getNodeName(currentNode)) < 0
) {
var css2 = getComputedStyle$2(currentNode)
if (
css2.transform !== 'none' ||
css2.perspective !== 'none' ||
css2.contain === 'paint' ||
['transform', 'perspective'].indexOf(css2.willChange) !== -1 ||
(isFirefox2 && css2.willChange === 'filter') ||
(isFirefox2 && css2.filter && css2.filter !== 'none')
) {
return currentNode
} else {
currentNode = currentNode.parentNode
}
}
return null
}
function getOffsetParent(element) {
var window2 = getWindow(element)
var offsetParent = getTrueOffsetParent(element)
while (
offsetParent &&
isTableElement(offsetParent) &&
getComputedStyle$2(offsetParent).position === 'static'
) {
offsetParent = getTrueOffsetParent(offsetParent)
}
if (
offsetParent &&
(getNodeName(offsetParent) === 'html' ||
(getNodeName(offsetParent) === 'body' &&
getComputedStyle$2(offsetParent).position === 'static'))
) {
return window2
}
return offsetParent || getContainingBlock(element) || window2
}
function getMainAxisFromPlacement(placement) {
return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y'
}
function within(min3, value2, max3) {
return max$b(min3, min$b(value2, max3))
}
function withinMaxClamp(min3, value2, max3) {
var v4 = within(min3, value2, max3)
return v4 > max3 ? max3 : v4
}
function getFreshSideObject() {
return {
top: 0,
right: 0,
bottom: 0,
left: 0,
}
}
function mergePaddingObject(paddingObject) {
return Object.assign({}, getFreshSideObject(), paddingObject)
}
function expandToHashMap(value2, keys3) {
return keys3.reduce(function (hashMap, key2) {
hashMap[key2] = value2
return hashMap
}, {})
}
var toPaddingObject = function toPaddingObject2(padding, state2) {
padding =
typeof padding === 'function'
? padding(
Object.assign({}, state2.rects, {
placement: state2.placement,
})
)
: padding
return mergePaddingObject(
typeof padding !== 'number'
? padding
: expandToHashMap(padding, basePlacements)
)
}
function arrow(_ref2) {
var _state$modifiersData$
var state2 = _ref2.state,
name2 = _ref2.name,
options2 = _ref2.options
var arrowElement = state2.elements.arrow
var popperOffsets2 = state2.modifiersData.popperOffsets
var basePlacement = getBasePlacement(state2.placement)
var axis = getMainAxisFromPlacement(basePlacement)
var isVertical = [left, right].indexOf(basePlacement) >= 0
var len2 = isVertical ? 'height' : 'width'
if (!arrowElement || !popperOffsets2) {
return
}
var paddingObject = toPaddingObject(options2.padding, state2)
var arrowRect = getLayoutRect$1(arrowElement)
var minProp = axis === 'y' ? top : left
var maxProp = axis === 'y' ? bottom : right
var endDiff =
state2.rects.reference[len2] +
state2.rects.reference[axis] -
popperOffsets2[axis] -
state2.rects.popper[len2]
var startDiff = popperOffsets2[axis] - state2.rects.reference[axis]
var arrowOffsetParent = getOffsetParent(arrowElement)
var clientSize = arrowOffsetParent
? axis === 'y'
? arrowOffsetParent.clientHeight || 0
: arrowOffsetParent.clientWidth || 0
: 0
var centerToReference = endDiff / 2 - startDiff / 2
var min3 = paddingObject[minProp]
var max3 = clientSize - arrowRect[len2] - paddingObject[maxProp]
var center2 = clientSize / 2 - arrowRect[len2] / 2 + centerToReference
var offset2 = within(min3, center2, max3)
var axisProp = axis
state2.modifiersData[name2] =
((_state$modifiersData$ = {}),
(_state$modifiersData$[axisProp] = offset2),
(_state$modifiersData$.centerOffset = offset2 - center2),
_state$modifiersData$)
}
function effect$1(_ref2) {
var state2 = _ref2.state,
options2 = _ref2.options
var _options$element = options2.element,
arrowElement =
_options$element === void 0 ? '[data-popper-arrow]' : _options$element
if (arrowElement == null) {
return
}
if (typeof arrowElement === 'string') {
arrowElement = state2.elements.popper.querySelector(arrowElement)
if (!arrowElement) {
return
}
}
if (!contains$1(state2.elements.popper, arrowElement)) {
return
}
state2.elements.arrow = arrowElement
}
var arrow$1 = {
name: 'arrow',
enabled: true,
phase: 'main',
fn: arrow,
effect: effect$1,
requires: ['popperOffsets'],
requiresIfExists: ['preventOverflow'],
}
function getVariation(placement) {
return placement.split('-')[1]
}
var unsetSides = {
top: 'auto',
right: 'auto',
bottom: 'auto',
left: 'auto',
}
function roundOffsetsByDPR(_ref2, win) {
var x2 = _ref2.x,
y2 = _ref2.y
var dpr2 = win.devicePixelRatio || 1
return {
x: round$8(x2 * dpr2) / dpr2 || 0,
y: round$8(y2 * dpr2) / dpr2 || 0,
}
}
function mapToStyles(_ref2) {
var _Object$assign2
var popper2 = _ref2.popper,
popperRect = _ref2.popperRect,
placement = _ref2.placement,
variation = _ref2.variation,
offsets = _ref2.offsets,
position2 = _ref2.position,
gpuAcceleration = _ref2.gpuAcceleration,
adaptive = _ref2.adaptive,
roundOffsets = _ref2.roundOffsets,
isFixed = _ref2.isFixed
var _offsets$x = offsets.x,
x2 = _offsets$x === void 0 ? 0 : _offsets$x,
_offsets$y = offsets.y,
y2 = _offsets$y === void 0 ? 0 : _offsets$y
var _ref3 =
typeof roundOffsets === 'function'
? roundOffsets({
x: x2,
y: y2,
})
: {
x: x2,
y: y2,
}
x2 = _ref3.x
y2 = _ref3.y
var hasX = offsets.hasOwnProperty('x')
var hasY = offsets.hasOwnProperty('y')
var sideX = left
var sideY = top
var win = window
if (adaptive) {
var offsetParent = getOffsetParent(popper2)
var heightProp = 'clientHeight'
var widthProp = 'clientWidth'
if (offsetParent === getWindow(popper2)) {
offsetParent = getDocumentElement(popper2)
if (
getComputedStyle$2(offsetParent).position !== 'static' &&
position2 === 'absolute'
) {
heightProp = 'scrollHeight'
widthProp = 'scrollWidth'
}
}
offsetParent = offsetParent
if (
placement === top ||
((placement === left || placement === right) && variation === end$2)
) {
sideY = bottom
var offsetY =
isFixed && offsetParent === win && win.visualViewport
? win.visualViewport.height
: offsetParent[heightProp]
y2 -= offsetY - popperRect.height
y2 *= gpuAcceleration ? 1 : -1
}
if (
placement === left ||
((placement === top || placement === bottom) && variation === end$2)
) {
sideX = right
var offsetX =
isFixed && offsetParent === win && win.visualViewport
? win.visualViewport.width
: offsetParent[widthProp]
x2 -= offsetX - popperRect.width
x2 *= gpuAcceleration ? 1 : -1
}
}
var commonStyles = Object.assign(
{
position: position2,
},
adaptive && unsetSides
)
var _ref4 =
roundOffsets === true
? roundOffsetsByDPR(
{
x: x2,
y: y2,
},
getWindow(popper2)
)
: {
x: x2,
y: y2,
}
x2 = _ref4.x
y2 = _ref4.y
if (gpuAcceleration) {
var _Object$assign
return Object.assign(
{},
commonStyles,
((_Object$assign = {}),
(_Object$assign[sideY] = hasY ? '0' : ''),
(_Object$assign[sideX] = hasX ? '0' : ''),
(_Object$assign.transform =
(win.devicePixelRatio || 1) <= 1
? 'translate(' + x2 + 'px, ' + y2 + 'px)'
: 'translate3d(' + x2 + 'px, ' + y2 + 'px, 0)'),
_Object$assign)
)
}
return Object.assign(
{},
commonStyles,
((_Object$assign2 = {}),
(_Object$assign2[sideY] = hasY ? y2 + 'px' : ''),
(_Object$assign2[sideX] = hasX ? x2 + 'px' : ''),
(_Object$assign2.transform = ''),
_Object$assign2)
)
}
function computeStyles(_ref5) {
var state2 = _ref5.state,
options2 = _ref5.options
var _options$gpuAccelerat = options2.gpuAcceleration,
gpuAcceleration =
_options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,
_options$adaptive = options2.adaptive,
adaptive = _options$adaptive === void 0 ? true : _options$adaptive,
_options$roundOffsets = options2.roundOffsets,
roundOffsets =
_options$roundOffsets === void 0 ? true : _options$roundOffsets
var commonStyles = {
placement: getBasePlacement(state2.placement),
variation: getVariation(state2.placement),
popper: state2.elements.popper,
popperRect: state2.rects.popper,
gpuAcceleration,
isFixed: state2.options.strategy === 'fixed',
}
if (state2.modifiersData.popperOffsets != null) {
state2.styles.popper = Object.assign(
{},
state2.styles.popper,
mapToStyles(
Object.assign({}, commonStyles, {
offsets: state2.modifiersData.popperOffsets,
position: state2.options.strategy,
adaptive,
roundOffsets,
})
)
)
}
if (state2.modifiersData.arrow != null) {
state2.styles.arrow = Object.assign(
{},
state2.styles.arrow,
mapToStyles(
Object.assign({}, commonStyles, {
offsets: state2.modifiersData.arrow,
position: 'absolute',
adaptive: false,
roundOffsets,
})
)
)
}
state2.attributes.popper = Object.assign({}, state2.attributes.popper, {
'data-popper-placement': state2.placement,
})
}
var computeStyles$1 = {
name: 'computeStyles',
enabled: true,
phase: 'beforeWrite',
fn: computeStyles,
data: {},
}
var passive = {
passive: true,
}
function effect(_ref2) {
var state2 = _ref2.state,
instance = _ref2.instance,
options2 = _ref2.options
var _options$scroll = options2.scroll,
scroll = _options$scroll === void 0 ? true : _options$scroll,
_options$resize = options2.resize,
resize = _options$resize === void 0 ? true : _options$resize
var window2 = getWindow(state2.elements.popper)
var scrollParents = [].concat(
state2.scrollParents.reference,
state2.scrollParents.popper
)
if (scroll) {
scrollParents.forEach(function (scrollParent) {
scrollParent.addEventListener('scroll', instance.update, passive)
})
}
if (resize) {
window2.addEventListener('resize', instance.update, passive)
}
return function () {
if (scroll) {
scrollParents.forEach(function (scrollParent) {
scrollParent.removeEventListener('scroll', instance.update, passive)
})
}
if (resize) {
window2.removeEventListener('resize', instance.update, passive)
}
}
}
var eventListeners = {
name: 'eventListeners',
enabled: true,
phase: 'write',
fn: function fn() {},
effect,
data: {},
}
var hash$1 = {
left: 'right',
right: 'left',
bottom: 'top',
top: 'bottom',
}
function getOppositePlacement(placement) {
return placement.replace(/left|right|bottom|top/g, function (matched) {
return hash$1[matched]
})
}
var hash = {
start: 'end',
end: 'start',
}
function getOppositeVariationPlacement(placement) {
return placement.replace(/start|end/g, function (matched) {
return hash[matched]
})
}
function getWindowScroll(node2) {
var win = getWindow(node2)
var scrollLeft = win.pageXOffset
var scrollTop = win.pageYOffset
return {
scrollLeft,
scrollTop,
}
}
function getWindowScrollBarX(element) {
return (
getBoundingClientRect(getDocumentElement(element)).left +
getWindowScroll(element).scrollLeft
)
}
function getViewportRect(element, strategy) {
var win = getWindow(element)
var html2 = getDocumentElement(element)
var visualViewport = win.visualViewport
var width = html2.clientWidth
var height = html2.clientHeight
var x2 = 0
var y2 = 0
if (visualViewport) {
width = visualViewport.width
height = visualViewport.height
var layoutViewport = isLayoutViewport()
if (layoutViewport || (!layoutViewport && strategy === 'fixed')) {
x2 = visualViewport.offsetLeft
y2 = visualViewport.offsetTop
}
}
return {
width,
height,
x: x2 + getWindowScrollBarX(element),
y: y2,
}
}
function getDocumentRect(element) {
var _element$ownerDocumen
var html2 = getDocumentElement(element)
var winScroll = getWindowScroll(element)
var body =
(_element$ownerDocumen = element.ownerDocument) == null
? void 0
: _element$ownerDocumen.body
var width = max$b(
html2.scrollWidth,
html2.clientWidth,
body ? body.scrollWidth : 0,
body ? body.clientWidth : 0
)
var height = max$b(
html2.scrollHeight,
html2.clientHeight,
body ? body.scrollHeight : 0,
body ? body.clientHeight : 0
)
var x2 = -winScroll.scrollLeft + getWindowScrollBarX(element)
var y2 = -winScroll.scrollTop
if (getComputedStyle$2(body || html2).direction === 'rtl') {
x2 += max$b(html2.clientWidth, body ? body.clientWidth : 0) - width
}
return {
width,
height,
x: x2,
y: y2,
}
}
function isScrollParent(element) {
var _getComputedStyle = getComputedStyle$2(element),
overflow2 = _getComputedStyle.overflow,
overflowX = _getComputedStyle.overflowX,
overflowY = _getComputedStyle.overflowY
return /auto|scroll|overlay|hidden/.test(overflow2 + overflowY + overflowX)
}
function getScrollParent(node2) {
if (['html', 'body', '#document'].indexOf(getNodeName(node2)) >= 0) {
return node2.ownerDocument.body
}
if (isHTMLElement$1(node2) && isScrollParent(node2)) {
return node2
}
return getScrollParent(getParentNode$2(node2))
}
function listScrollParents(element, list2) {
var _element$ownerDocumen
if (list2 === void 0) {
list2 = []
}
var scrollParent = getScrollParent(element)
var isBody =
scrollParent ===
((_element$ownerDocumen = element.ownerDocument) == null
? void 0
: _element$ownerDocumen.body)
var win = getWindow(scrollParent)
var target2 = isBody
? [win].concat(
win.visualViewport || [],
isScrollParent(scrollParent) ? scrollParent : []
)
: scrollParent
var updatedList = list2.concat(target2)
return isBody
? updatedList
: updatedList.concat(listScrollParents(getParentNode$2(target2)))
}
function rectToClientRect(rect) {
return Object.assign({}, rect, {
left: rect.x,
top: rect.y,
right: rect.x + rect.width,
bottom: rect.y + rect.height,
})
}
function getInnerBoundingClientRect(element, strategy) {
var rect = getBoundingClientRect(element, false, strategy === 'fixed')
rect.top = rect.top + element.clientTop
rect.left = rect.left + element.clientLeft
rect.bottom = rect.top + element.clientHeight
rect.right = rect.left + element.clientWidth
rect.width = element.clientWidth
rect.height = element.clientHeight
rect.x = rect.left
rect.y = rect.top
return rect
}
function getClientRectFromMixedType(element, clippingParent, strategy) {
return clippingParent === viewport
? rectToClientRect(getViewportRect(element, strategy))
: isElement$2(clippingParent)
? getInnerBoundingClientRect(clippingParent, strategy)
: rectToClientRect(getDocumentRect(getDocumentElement(element)))
}
function getClippingParents(element) {
var clippingParents2 = listScrollParents(getParentNode$2(element))
var canEscapeClipping =
['absolute', 'fixed'].indexOf(getComputedStyle$2(element).position) >= 0
var clipperElement =
canEscapeClipping && isHTMLElement$1(element)
? getOffsetParent(element)
: element
if (!isElement$2(clipperElement)) {
return []
}
return clippingParents2.filter(function (clippingParent) {
return (
isElement$2(clippingParent) &&
contains$1(clippingParent, clipperElement) &&
getNodeName(clippingParent) !== 'body'
)
})
}
function getClippingRect(element, boundary, rootBoundary, strategy) {
var mainClippingParents =
boundary === 'clippingParents'
? getClippingParents(element)
: [].concat(boundary)
var clippingParents2 = [].concat(mainClippingParents, [rootBoundary])
var firstClippingParent = clippingParents2[0]
var clippingRect = clippingParents2.reduce(function (
accRect,
clippingParent
) {
var rect = getClientRectFromMixedType(element, clippingParent, strategy)
accRect.top = max$b(rect.top, accRect.top)
accRect.right = min$b(rect.right, accRect.right)
accRect.bottom = min$b(rect.bottom, accRect.bottom)
accRect.left = max$b(rect.left, accRect.left)
return accRect
},
getClientRectFromMixedType(element, firstClippingParent, strategy))
clippingRect.width = clippingRect.right - clippingRect.left
clippingRect.height = clippingRect.bottom - clippingRect.top
clippingRect.x = clippingRect.left
clippingRect.y = clippingRect.top
return clippingRect
}
function computeOffsets(_ref2) {
var reference2 = _ref2.reference,
element = _ref2.element,
placement = _ref2.placement
var basePlacement = placement ? getBasePlacement(placement) : null
var variation = placement ? getVariation(placement) : null
var commonX = reference2.x + reference2.width / 2 - element.width / 2
var commonY = reference2.y + reference2.height / 2 - element.height / 2
var offsets
switch (basePlacement) {
case top:
offsets = {
x: commonX,
y: reference2.y - element.height,
}
break
case bottom:
offsets = {
x: commonX,
y: reference2.y + reference2.height,
}
break
case right:
offsets = {
x: reference2.x + reference2.width,
y: commonY,
}
break
case left:
offsets = {
x: reference2.x - element.width,
y: commonY,
}
break
default:
offsets = {
x: reference2.x,
y: reference2.y,
}
}
var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null
if (mainAxis != null) {
var len2 = mainAxis === 'y' ? 'height' : 'width'
switch (variation) {
case start$1:
offsets[mainAxis] =
offsets[mainAxis] - (reference2[len2] / 2 - element[len2] / 2)
break
case end$2:
offsets[mainAxis] =
offsets[mainAxis] + (reference2[len2] / 2 - element[len2] / 2)
break
}
}
return offsets
}
function detectOverflow(state2, options2) {
if (options2 === void 0) {
options2 = {}
}
var _options = options2,
_options$placement = _options.placement,
placement =
_options$placement === void 0 ? state2.placement : _options$placement,
_options$strategy = _options.strategy,
strategy =
_options$strategy === void 0 ? state2.strategy : _options$strategy,
_options$boundary = _options.boundary,
boundary =
_options$boundary === void 0 ? clippingParents : _options$boundary,
_options$rootBoundary = _options.rootBoundary,
rootBoundary =
_options$rootBoundary === void 0 ? viewport : _options$rootBoundary,
_options$elementConte = _options.elementContext,
elementContext =
_options$elementConte === void 0 ? popper : _options$elementConte,
_options$altBoundary = _options.altBoundary,
altBoundary =
_options$altBoundary === void 0 ? false : _options$altBoundary,
_options$padding = _options.padding,
padding = _options$padding === void 0 ? 0 : _options$padding
var paddingObject = mergePaddingObject(
typeof padding !== 'number'
? padding
: expandToHashMap(padding, basePlacements)
)
var altContext = elementContext === popper ? reference : popper
var popperRect = state2.rects.popper
var element = state2.elements[altBoundary ? altContext : elementContext]
var clippingClientRect = getClippingRect(
isElement$2(element)
? element
: element.contextElement || getDocumentElement(state2.elements.popper),
boundary,
rootBoundary,
strategy
)
var referenceClientRect = getBoundingClientRect(state2.elements.reference)
var popperOffsets2 = computeOffsets({
reference: referenceClientRect,
element: popperRect,
strategy: 'absolute',
placement,
})
var popperClientRect = rectToClientRect(
Object.assign({}, popperRect, popperOffsets2)
)
var elementClientRect =
elementContext === popper ? popperClientRect : referenceClientRect
var overflowOffsets = {
top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
bottom:
elementClientRect.bottom -
clippingClientRect.bottom +
paddingObject.bottom,
left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
right:
elementClientRect.right - clippingClientRect.right + paddingObject.right,
}
var offsetData = state2.modifiersData.offset
if (elementContext === popper && offsetData) {
var offset2 = offsetData[placement]
Object.keys(overflowOffsets).forEach(function (key2) {
var multiply2 = [right, bottom].indexOf(key2) >= 0 ? 1 : -1
var axis = [top, bottom].indexOf(key2) >= 0 ? 'y' : 'x'
overflowOffsets[key2] += offset2[axis] * multiply2
})
}
return overflowOffsets
}
function computeAutoPlacement(state2, options2) {
if (options2 === void 0) {
options2 = {}
}
var _options = options2,
placement = _options.placement,
boundary = _options.boundary,
rootBoundary = _options.rootBoundary,
padding = _options.padding,
flipVariations = _options.flipVariations,
_options$allowedAutoP = _options.allowedAutoPlacements,
allowedAutoPlacements =
_options$allowedAutoP === void 0 ? placements : _options$allowedAutoP
var variation = getVariation(placement)
var placements$1 = variation
? flipVariations
? variationPlacements
: variationPlacements.filter(function (placement2) {
return getVariation(placement2) === variation
})
: basePlacements
var allowedPlacements = placements$1.filter(function (placement2) {
return allowedAutoPlacements.indexOf(placement2) >= 0
})
if (allowedPlacements.length === 0) {
allowedPlacements = placements$1
}
var overflows = allowedPlacements.reduce(function (acc, placement2) {
acc[placement2] = detectOverflow(state2, {
placement: placement2,
boundary,
rootBoundary,
padding,
})[getBasePlacement(placement2)]
return acc
}, {})
return Object.keys(overflows).sort(function (a2, b2) {
return overflows[a2] - overflows[b2]
})
}
function getExpandedFallbackPlacements(placement) {
if (getBasePlacement(placement) === auto) {
return []
}
var oppositePlacement = getOppositePlacement(placement)
return [
getOppositeVariationPlacement(placement),
oppositePlacement,
getOppositeVariationPlacement(oppositePlacement),
]
}
function flip(_ref2) {
var state2 = _ref2.state,
options2 = _ref2.options,
name2 = _ref2.name
if (state2.modifiersData[name2]._skip) {
return
}
var _options$mainAxis = options2.mainAxis,
checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,
_options$altAxis = options2.altAxis,
checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,
specifiedFallbackPlacements = options2.fallbackPlacements,
padding = options2.padding,
boundary = options2.boundary,
rootBoundary = options2.rootBoundary,
altBoundary = options2.altBoundary,
_options$flipVariatio = options2.flipVariations,
flipVariations =
_options$flipVariatio === void 0 ? true : _options$flipVariatio,
allowedAutoPlacements = options2.allowedAutoPlacements
var preferredPlacement = state2.options.placement
var basePlacement = getBasePlacement(preferredPlacement)
var isBasePlacement = basePlacement === preferredPlacement
var fallbackPlacements =
specifiedFallbackPlacements ||
(isBasePlacement || !flipVariations
? [getOppositePlacement(preferredPlacement)]
: getExpandedFallbackPlacements(preferredPlacement))
var placements2 = [preferredPlacement]
.concat(fallbackPlacements)
.reduce(function (acc, placement2) {
return acc.concat(
getBasePlacement(placement2) === auto
? computeAutoPlacement(state2, {
placement: placement2,
boundary,
rootBoundary,
padding,
flipVariations,
allowedAutoPlacements,
})
: placement2
)
}, [])
var referenceRect = state2.rects.reference
var popperRect = state2.rects.popper
var checksMap = /* @__PURE__ */ new Map()
var makeFallbackChecks = true
var firstFittingPlacement = placements2[0]
for (var i2 = 0; i2 < placements2.length; i2++) {
var placement = placements2[i2]
var _basePlacement = getBasePlacement(placement)
var isStartVariation = getVariation(placement) === start$1
var isVertical = [top, bottom].indexOf(_basePlacement) >= 0
var len2 = isVertical ? 'width' : 'height'
var overflow2 = detectOverflow(state2, {
placement,
boundary,
rootBoundary,
altBoundary,
padding,
})
var mainVariationSide = isVertical
? isStartVariation
? right
: left
: isStartVariation
? bottom
: top
if (referenceRect[len2] > popperRect[len2]) {
mainVariationSide = getOppositePlacement(mainVariationSide)
}
var altVariationSide = getOppositePlacement(mainVariationSide)
var checks = []
if (checkMainAxis) {
checks.push(overflow2[_basePlacement] <= 0)
}
if (checkAltAxis) {
checks.push(
overflow2[mainVariationSide] <= 0,
overflow2[altVariationSide] <= 0
)
}
if (
checks.every(function (check2) {
return check2
})
) {
firstFittingPlacement = placement
makeFallbackChecks = false
break
}
checksMap.set(placement, checks)
}
if (makeFallbackChecks) {
var numberOfChecks = flipVariations ? 3 : 1
var _loop = function _loop2(_i2) {
var fittingPlacement = placements2.find(function (placement2) {
var checks2 = checksMap.get(placement2)
if (checks2) {
return checks2.slice(0, _i2).every(function (check2) {
return check2
})
}
})
if (fittingPlacement) {
firstFittingPlacement = fittingPlacement
return 'break'
}
}
for (var _i = numberOfChecks; _i > 0; _i--) {
var _ret = _loop(_i)
if (_ret === 'break') break
}
}
if (state2.placement !== firstFittingPlacement) {
state2.modifiersData[name2]._skip = true
state2.placement = firstFittingPlacement
state2.reset = true
}
}
var flip$1 = {
name: 'flip',
enabled: true,
phase: 'main',
fn: flip,
requiresIfExists: ['offset'],
data: {
_skip: false,
},
}
function getSideOffsets(overflow2, rect, preventedOffsets) {
if (preventedOffsets === void 0) {
preventedOffsets = {
x: 0,
y: 0,
}
}
return {
top: overflow2.top - rect.height - preventedOffsets.y,
right: overflow2.right - rect.width + preventedOffsets.x,
bottom: overflow2.bottom - rect.height + preventedOffsets.y,
left: overflow2.left - rect.width - preventedOffsets.x,
}
}
function isAnySideFullyClipped(overflow2) {
return [top, right, bottom, left].some(function (side) {
return overflow2[side] >= 0
})
}
function hide(_ref2) {
var state2 = _ref2.state,
name2 = _ref2.name
var referenceRect = state2.rects.reference
var popperRect = state2.rects.popper
var preventedOffsets = state2.modifiersData.preventOverflow
var referenceOverflow = detectOverflow(state2, {
elementContext: 'reference',
})
var popperAltOverflow = detectOverflow(state2, {
altBoundary: true,
})
var referenceClippingOffsets = getSideOffsets(
referenceOverflow,
referenceRect
)
var popperEscapeOffsets = getSideOffsets(
popperAltOverflow,
popperRect,
preventedOffsets
)
var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets)
var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets)
state2.modifiersData[name2] = {
referenceClippingOffsets,
popperEscapeOffsets,
isReferenceHidden,
hasPopperEscaped,
}
state2.attributes.popper = Object.assign({}, state2.attributes.popper, {
'data-popper-reference-hidden': isReferenceHidden,
'data-popper-escaped': hasPopperEscaped,
})
}
var hide$1 = {
name: 'hide',
enabled: true,
phase: 'main',
requiresIfExists: ['preventOverflow'],
fn: hide,
}
function distanceAndSkiddingToXY(placement, rects, offset2) {
var basePlacement = getBasePlacement(placement)
var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1
var _ref2 =
typeof offset2 === 'function'
? offset2(
Object.assign({}, rects, {
placement,
})
)
: offset2,
skidding = _ref2[0],
distance2 = _ref2[1]
skidding = skidding || 0
distance2 = (distance2 || 0) * invertDistance
return [left, right].indexOf(basePlacement) >= 0
? {
x: distance2,
y: skidding,
}
: {
x: skidding,
y: distance2,
}
}
function offset(_ref2) {
var state2 = _ref2.state,
options2 = _ref2.options,
name2 = _ref2.name
var _options$offset = options2.offset,
offset2 = _options$offset === void 0 ? [0, 0] : _options$offset
var data2 = placements.reduce(function (acc, placement) {
acc[placement] = distanceAndSkiddingToXY(placement, state2.rects, offset2)
return acc
}, {})
var _data$state$placement = data2[state2.placement],
x2 = _data$state$placement.x,
y2 = _data$state$placement.y
if (state2.modifiersData.popperOffsets != null) {
state2.modifiersData.popperOffsets.x += x2
state2.modifiersData.popperOffsets.y += y2
}
state2.modifiersData[name2] = data2
}
var offset$1 = {
name: 'offset',
enabled: true,
phase: 'main',
requires: ['popperOffsets'],
fn: offset,
}
function popperOffsets(_ref2) {
var state2 = _ref2.state,
name2 = _ref2.name
state2.modifiersData[name2] = computeOffsets({
reference: state2.rects.reference,
element: state2.rects.popper,
strategy: 'absolute',
placement: state2.placement,
})
}
var popperOffsets$1 = {
name: 'popperOffsets',
enabled: true,
phase: 'read',
fn: popperOffsets,
data: {},
}
function getAltAxis(axis) {
return axis === 'x' ? 'y' : 'x'
}
function preventOverflow(_ref2) {
var state2 = _ref2.state,
options2 = _ref2.options,
name2 = _ref2.name
var _options$mainAxis = options2.mainAxis,
checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,
_options$altAxis = options2.altAxis,
checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,
boundary = options2.boundary,
rootBoundary = options2.rootBoundary,
altBoundary = options2.altBoundary,
padding = options2.padding,
_options$tether = options2.tether,
tether = _options$tether === void 0 ? true : _options$tether,
_options$tetherOffset = options2.tetherOffset,
tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset
var overflow2 = detectOverflow(state2, {
boundary,
rootBoundary,
padding,
altBoundary,
})
var basePlacement = getBasePlacement(state2.placement)
var variation = getVariation(state2.placement)
var isBasePlacement = !variation
var mainAxis = getMainAxisFromPlacement(basePlacement)
var altAxis = getAltAxis(mainAxis)
var popperOffsets2 = state2.modifiersData.popperOffsets
var referenceRect = state2.rects.reference
var popperRect = state2.rects.popper
var tetherOffsetValue =
typeof tetherOffset === 'function'
? tetherOffset(
Object.assign({}, state2.rects, {
placement: state2.placement,
})
)
: tetherOffset
var normalizedTetherOffsetValue =
typeof tetherOffsetValue === 'number'
? {
mainAxis: tetherOffsetValue,
altAxis: tetherOffsetValue,
}
: Object.assign(
{
mainAxis: 0,
altAxis: 0,
},
tetherOffsetValue
)
var offsetModifierState = state2.modifiersData.offset
? state2.modifiersData.offset[state2.placement]
: null
var data2 = {
x: 0,
y: 0,
}
if (!popperOffsets2) {
return
}
if (checkMainAxis) {
var _offsetModifierState$
var mainSide = mainAxis === 'y' ? top : left
var altSide = mainAxis === 'y' ? bottom : right
var len2 = mainAxis === 'y' ? 'height' : 'width'
var offset2 = popperOffsets2[mainAxis]
var min3 = offset2 + overflow2[mainSide]
var max3 = offset2 - overflow2[altSide]
var additive = tether ? -popperRect[len2] / 2 : 0
var minLen = variation === start$1 ? referenceRect[len2] : popperRect[len2]
var maxLen =
variation === start$1 ? -popperRect[len2] : -referenceRect[len2]
var arrowElement = state2.elements.arrow
var arrowRect =
tether && arrowElement
? getLayoutRect$1(arrowElement)
: {
width: 0,
height: 0,
}
var arrowPaddingObject = state2.modifiersData['arrow#persistent']
? state2.modifiersData['arrow#persistent'].padding
: getFreshSideObject()
var arrowPaddingMin = arrowPaddingObject[mainSide]
var arrowPaddingMax = arrowPaddingObject[altSide]
var arrowLen = within(0, referenceRect[len2], arrowRect[len2])
var minOffset = isBasePlacement
? referenceRect[len2] / 2 -
additive -
arrowLen -
arrowPaddingMin -
normalizedTetherOffsetValue.mainAxis
: minLen -
arrowLen -
arrowPaddingMin -
normalizedTetherOffsetValue.mainAxis
var maxOffset = isBasePlacement
? -referenceRect[len2] / 2 +
additive +
arrowLen +
arrowPaddingMax +
normalizedTetherOffsetValue.mainAxis
: maxLen +
arrowLen +
arrowPaddingMax +
normalizedTetherOffsetValue.mainAxis
var arrowOffsetParent =
state2.elements.arrow && getOffsetParent(state2.elements.arrow)
var clientOffset = arrowOffsetParent
? mainAxis === 'y'
? arrowOffsetParent.clientTop || 0
: arrowOffsetParent.clientLeft || 0
: 0
var offsetModifierValue =
(_offsetModifierState$ =
offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) !=
null
? _offsetModifierState$
: 0
var tetherMin = offset2 + minOffset - offsetModifierValue - clientOffset
var tetherMax = offset2 + maxOffset - offsetModifierValue
var preventedOffset = within(
tether ? min$b(min3, tetherMin) : min3,
offset2,
tether ? max$b(max3, tetherMax) : max3
)
popperOffsets2[mainAxis] = preventedOffset
data2[mainAxis] = preventedOffset - offset2
}
if (checkAltAxis) {
var _offsetModifierState$2
var _mainSide = mainAxis === 'x' ? top : left
var _altSide = mainAxis === 'x' ? bottom : right
var _offset = popperOffsets2[altAxis]
var _len = altAxis === 'y' ? 'height' : 'width'
var _min = _offset + overflow2[_mainSide]
var _max = _offset - overflow2[_altSide]
var isOriginSide = [top, left].indexOf(basePlacement) !== -1
var _offsetModifierValue =
(_offsetModifierState$2 =
offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) !=
null
? _offsetModifierState$2
: 0
var _tetherMin = isOriginSide
? _min
: _offset -
referenceRect[_len] -
popperRect[_len] -
_offsetModifierValue +
normalizedTetherOffsetValue.altAxis
var _tetherMax = isOriginSide
? _offset +
referenceRect[_len] +
popperRect[_len] -
_offsetModifierValue -
normalizedTetherOffsetValue.altAxis
: _max
var _preventedOffset =
tether && isOriginSide
? withinMaxClamp(_tetherMin, _offset, _tetherMax)
: within(
tether ? _tetherMin : _min,
_offset,
tether ? _tetherMax : _max
)
popperOffsets2[altAxis] = _preventedOffset
data2[altAxis] = _preventedOffset - _offset
}
state2.modifiersData[name2] = data2
}
var preventOverflow$1 = {
name: 'preventOverflow',
enabled: true,
phase: 'main',
fn: preventOverflow,
requiresIfExists: ['offset'],
}
function getHTMLElementScroll(element) {
return {
scrollLeft: element.scrollLeft,
scrollTop: element.scrollTop,
}
}
function getNodeScroll(node2) {
if (node2 === getWindow(node2) || !isHTMLElement$1(node2)) {
return getWindowScroll(node2)
} else {
return getHTMLElementScroll(node2)
}
}
function isElementScaled(element) {
var rect = element.getBoundingClientRect()
var scaleX = round$8(rect.width) / element.offsetWidth || 1
var scaleY = round$8(rect.height) / element.offsetHeight || 1
return scaleX !== 1 || scaleY !== 1
}
function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
if (isFixed === void 0) {
isFixed = false
}
var isOffsetParentAnElement = isHTMLElement$1(offsetParent)
var offsetParentIsScaled =
isHTMLElement$1(offsetParent) && isElementScaled(offsetParent)
var documentElement = getDocumentElement(offsetParent)
var rect = getBoundingClientRect(
elementOrVirtualElement,
offsetParentIsScaled,
isFixed
)
var scroll = {
scrollLeft: 0,
scrollTop: 0,
}
var offsets = {
x: 0,
y: 0,
}
if (isOffsetParentAnElement || (!isOffsetParentAnElement && !isFixed)) {
if (
getNodeName(offsetParent) !== 'body' ||
isScrollParent(documentElement)
) {
scroll = getNodeScroll(offsetParent)
}
if (isHTMLElement$1(offsetParent)) {
offsets = getBoundingClientRect(offsetParent, true)
offsets.x += offsetParent.clientLeft
offsets.y += offsetParent.clientTop
} else if (documentElement) {
offsets.x = getWindowScrollBarX(documentElement)
}
}
return {
x: rect.left + scroll.scrollLeft - offsets.x,
y: rect.top + scroll.scrollTop - offsets.y,
width: rect.width,
height: rect.height,
}
}
function order(modifiers) {
var map2 = /* @__PURE__ */ new Map()
var visited = /* @__PURE__ */ new Set()
var result = []
modifiers.forEach(function (modifier) {
map2.set(modifier.name, modifier)
})
function sort3(modifier) {
visited.add(modifier.name)
var requires = [].concat(
modifier.requires || [],
modifier.requiresIfExists || []
)
requires.forEach(function (dep) {
if (!visited.has(dep)) {
var depModifier = map2.get(dep)
if (depModifier) {
sort3(depModifier)
}
}
})
result.push(modifier)
}
modifiers.forEach(function (modifier) {
if (!visited.has(modifier.name)) {
sort3(modifier)
}
})
return result
}
function orderModifiers(modifiers) {
var orderedModifiers = order(modifiers)
return modifierPhases.reduce(function (acc, phase) {
return acc.concat(
orderedModifiers.filter(function (modifier) {
return modifier.phase === phase
})
)
}, [])
}
function debounce$2(fn2) {
var pending
return function () {
if (!pending) {
pending = new Promise(function (resolve2) {
Promise.resolve().then(function () {
pending = void 0
resolve2(fn2())
})
})
}
return pending
}
}
function mergeByName(modifiers) {
var merged = modifiers.reduce(function (merged2, current2) {
var existing = merged2[current2.name]
merged2[current2.name] = existing
? Object.assign({}, existing, current2, {
options: Object.assign({}, existing.options, current2.options),
data: Object.assign({}, existing.data, current2.data),
})
: current2
return merged2
}, {})
return Object.keys(merged).map(function (key2) {
return merged[key2]
})
}
var DEFAULT_OPTIONS$1 = {
placement: 'bottom',
modifiers: [],
strategy: 'absolute',
}
function areValidElements() {
for (
var _len = arguments.length, args = new Array(_len), _key = 0;
_key < _len;
_key++
) {
args[_key] = arguments[_key]
}
return !args.some(function (element) {
return !(element && typeof element.getBoundingClientRect === 'function')
})
}
function popperGenerator(generatorOptions) {
if (generatorOptions === void 0) {
generatorOptions = {}
}
var _generatorOptions = generatorOptions,
_generatorOptions$def = _generatorOptions.defaultModifiers,
defaultModifiers2 =
_generatorOptions$def === void 0 ? [] : _generatorOptions$def,
_generatorOptions$def2 = _generatorOptions.defaultOptions,
defaultOptions2 =
_generatorOptions$def2 === void 0
? DEFAULT_OPTIONS$1
: _generatorOptions$def2
return function createPopper2(reference2, popper2, options2) {
if (options2 === void 0) {
options2 = defaultOptions2
}
var state2 = {
placement: 'bottom',
orderedModifiers: [],
options: Object.assign({}, DEFAULT_OPTIONS$1, defaultOptions2),
modifiersData: {},
elements: {
reference: reference2,
popper: popper2,
},
attributes: {},
styles: {},
}
var effectCleanupFns = []
var isDestroyed = false
var instance = {
state: state2,
setOptions: function setOptions(setOptionsAction) {
var options3 =
typeof setOptionsAction === 'function'
? setOptionsAction(state2.options)
: setOptionsAction
cleanupModifierEffects()
state2.options = Object.assign(
{},
defaultOptions2,
state2.options,
options3
)
state2.scrollParents = {
reference: isElement$2(reference2)
? listScrollParents(reference2)
: reference2.contextElement
? listScrollParents(reference2.contextElement)
: [],
popper: listScrollParents(popper2),
}
var orderedModifiers = orderModifiers(
mergeByName([].concat(defaultModifiers2, state2.options.modifiers))
)
state2.orderedModifiers = orderedModifiers.filter(function (m2) {
return m2.enabled
})
runModifierEffects()
return instance.update()
},
forceUpdate: function forceUpdate() {
if (isDestroyed) {
return
}
var _state$elements = state2.elements,
reference3 = _state$elements.reference,
popper3 = _state$elements.popper
if (!areValidElements(reference3, popper3)) {
return
}
state2.rects = {
reference: getCompositeRect(
reference3,
getOffsetParent(popper3),
state2.options.strategy === 'fixed'
),
popper: getLayoutRect$1(popper3),
}
state2.reset = false
state2.placement = state2.options.placement
state2.orderedModifiers.forEach(function (modifier) {
return (state2.modifiersData[modifier.name] = Object.assign(
{},
modifier.data
))
})
for (
var index2 = 0;
index2 < state2.orderedModifiers.length;
index2++
) {
if (state2.reset === true) {
state2.reset = false
index2 = -1
continue
}
var _state$orderedModifie = state2.orderedModifiers[index2],
fn2 = _state$orderedModifie.fn,
_state$orderedModifie2 = _state$orderedModifie.options,
_options =
_state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,
name2 = _state$orderedModifie.name
if (typeof fn2 === 'function') {
state2 =
fn2({
state: state2,
options: _options,
name: name2,
instance,
}) || state2
}
}
},
update: debounce$2(function () {
return new Promise(function (resolve2) {
instance.forceUpdate()
resolve2(state2)
})
}),
destroy: function destroy2() {
cleanupModifierEffects()
isDestroyed = true
},
}
if (!areValidElements(reference2, popper2)) {
return instance
}
instance.setOptions(options2).then(function (state3) {
if (!isDestroyed && options2.onFirstUpdate) {
options2.onFirstUpdate(state3)
}
})
function runModifierEffects() {
state2.orderedModifiers.forEach(function (_ref2) {
var name2 = _ref2.name,
_ref$options = _ref2.options,
options3 = _ref$options === void 0 ? {} : _ref$options,
effect2 = _ref2.effect
if (typeof effect2 === 'function') {
var cleanupFn = effect2({
state: state2,
name: name2,
instance,
options: options3,
})
var noopFn = function noopFn2() {}
effectCleanupFns.push(cleanupFn || noopFn)
}
})
}
function cleanupModifierEffects() {
effectCleanupFns.forEach(function (fn2) {
return fn2()
})
effectCleanupFns = []
}
return instance
}
}
var defaultModifiers = [
eventListeners,
popperOffsets$1,
computeStyles$1,
applyStyles$1,
offset$1,
flip$1,
preventOverflow$1,
arrow$1,
hide$1,
]
var createPopper = /* @__PURE__ */ popperGenerator({
defaultModifiers,
})
const POSITIONING_STRATEGIES = ['fixed', 'absolute']
const usePopperCoreConfigProps = buildProps({
boundariesPadding: {
type: Number,
default: 0,
},
fallbackPlacements: {
type: definePropType(Array),
default: () => [],
},
gpuAcceleration: {
type: Boolean,
default: true,
},
offset: {
type: Number,
default: 12,
},
placement: {
type: String,
values: placements,
default: 'bottom',
},
popperOptions: {
type: definePropType(Object),
default: () => ({}),
},
strategy: {
type: String,
values: POSITIONING_STRATEGIES,
default: 'absolute',
},
})
const usePopperContentProps = buildProps({
...usePopperCoreConfigProps,
style: { type: definePropType([String, Array, Object]) },
className: { type: definePropType([String, Array, Object]) },
effect: {
type: String,
default: 'dark',
},
visible: Boolean,
enterable: {
type: Boolean,
default: true,
},
pure: Boolean,
popperClass: {
type: definePropType([String, Array, Object]),
},
popperStyle: {
type: definePropType([String, Array, Object]),
},
referenceEl: {
type: definePropType(Object),
},
stopPopperMouseEvent: {
type: Boolean,
default: true,
},
zIndex: Number,
})
const buildPopperOptions = (props2, arrowProps) => {
const { placement, strategy, popperOptions: popperOptions2 } = props2
const options2 = {
placement,
strategy,
...popperOptions2,
modifiers: genModifiers(props2),
}
attachArrow(options2, arrowProps)
deriveExtraModifiers(
options2,
popperOptions2 == null ? void 0 : popperOptions2.modifiers
)
return options2
}
const unwrapMeasurableEl = ($el) => {
if (!isClient$1) return
return unrefElement$1($el)
}
function genModifiers(options2) {
const { offset: offset2, gpuAcceleration, fallbackPlacements } = options2
return [
{
name: 'offset',
options: {
offset: [0, offset2 != null ? offset2 : 12],
},
},
{
name: 'preventOverflow',
options: {
padding: {
top: 2,
bottom: 2,
left: 5,
right: 5,
},
},
},
{
name: 'flip',
options: {
padding: 5,
fallbackPlacements:
fallbackPlacements != null ? fallbackPlacements : [],
},
},
{
name: 'computeStyles',
options: {
gpuAcceleration,
adaptive: gpuAcceleration,
},
},
]
}
function attachArrow(options2, { arrowEl, arrowOffset }) {
options2.modifiers.push({
name: 'arrow',
options: {
element: arrowEl,
padding: arrowOffset != null ? arrowOffset : 5,
},
})
}
function deriveExtraModifiers(options2, modifiers) {
if (modifiers) {
options2.modifiers = [
...options2.modifiers,
...(modifiers != null ? modifiers : []),
]
}
}
const __default__$I = {
name: 'ElPopperContent',
}
const _sfc_main$9c = /* @__PURE__ */ defineComponent({
...__default__$I,
props: usePopperContentProps,
emits: ['mouseenter', 'mouseleave'],
setup(__props2, { expose }) {
const props2 = __props2
const {
popperInstanceRef,
contentRef,
triggerRef: triggerRef2,
} = inject(POPPER_INJECTION_KEY, void 0)
const { nextZIndex: nextZIndex2 } = useZIndex()
const ns = useNamespace('popper')
const popperContentRef = ref()
const arrowRef = ref()
const arrowOffset = ref()
provide(POPPER_CONTENT_INJECTION_KEY, {
arrowRef,
arrowOffset,
})
const contentZIndex = ref(props2.zIndex || nextZIndex2())
const computedReference = computed(
() => unwrapMeasurableEl(props2.referenceEl) || unref(triggerRef2)
)
const contentStyle = computed(() => [
{ zIndex: unref(contentZIndex) },
props2.popperStyle,
])
const contentClass = computed(() => [
ns.b(),
ns.is('pure', props2.pure),
ns.is(props2.effect),
props2.popperClass,
])
const createPopperInstance = ({
referenceEl,
popperContentEl,
arrowEl,
}) => {
const options2 = buildPopperOptions(props2, {
arrowEl,
arrowOffset: unref(arrowOffset),
})
return createPopper(referenceEl, popperContentEl, options2)
}
const updatePopper = () => {
var _a2
;(_a2 = unref(popperInstanceRef)) == null ? void 0 : _a2.update()
contentZIndex.value = props2.zIndex || nextZIndex2()
}
const togglePopperAlive = () => {
var _a2, _b2
const monitorable = { name: 'eventListeners', enabled: props2.visible }
;(_b2 =
(_a2 = unref(popperInstanceRef)) == null ? void 0 : _a2.setOptions) ==
null
? void 0
: _b2.call(_a2, (options2) => ({
...options2,
modifiers: [...(options2.modifiers || []), monitorable],
}))
updatePopper()
}
onMounted(() => {
let updateHandle
watch$1(
computedReference,
(referenceEl) => {
var _a2
updateHandle == null ? void 0 : updateHandle()
const popperInstance = unref(popperInstanceRef)
;(_a2 = popperInstance == null ? void 0 : popperInstance.destroy) ==
null
? void 0
: _a2.call(popperInstance)
if (referenceEl) {
const popperContentEl = unref(popperContentRef)
contentRef.value = popperContentEl
popperInstanceRef.value = createPopperInstance({
referenceEl,
popperContentEl,
arrowEl: unref(arrowRef),
})
updateHandle = watch$1(
() => referenceEl.getBoundingClientRect(),
() => updatePopper(),
{
immediate: true,
}
)
} else {
popperInstanceRef.value = void 0
}
},
{
immediate: true,
}
)
watch$1(() => props2.visible, togglePopperAlive, { immediate: true })
watch$1(
() =>
buildPopperOptions(props2, {
arrowEl: unref(arrowRef),
arrowOffset: unref(arrowOffset),
}),
(option2) => {
var _a2
return (_a2 = popperInstanceRef.value) == null
? void 0
: _a2.setOptions(option2)
}
)
})
expose({
popperContentRef,
popperInstanceRef,
updatePopper,
contentStyle,
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
ref_key: 'popperContentRef',
ref: popperContentRef,
style: normalizeStyle$1(unref(contentStyle)),
class: normalizeClass(unref(contentClass)),
role: 'tooltip',
onMouseenter:
_cache[0] || (_cache[0] = (e2) => _ctx.$emit('mouseenter', e2)),
onMouseleave:
_cache[1] || (_cache[1] = (e2) => _ctx.$emit('mouseleave', e2)),
},
[renderSlot(_ctx.$slots, 'default')],
38
)
)
}
},
})
var ElPopperContent = /* @__PURE__ */ _export_sfc$1(_sfc_main$9c, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/popper/src/content.vue',
],
])
const Effect = {
LIGHT: 'light',
DARK: 'dark',
}
const usePopperProps = buildProps({
autoClose: {
type: Number,
default: 0,
},
cutoff: {
type: Boolean,
default: false,
},
disabled: {
type: Boolean,
default: false,
},
})
function useDeprecateAppendToBody(scope, from) {
const vm = getCurrentInstance()
const compatTeleported = computed(() => {
return isBoolean$5(vm.props[from]) ? vm.props[from] : vm.props.teleported
})
useDeprecated(
{
scope,
from,
replacement: 'teleported',
version: '2.1.0',
ref: 'https://element-plus.org/en-US/component/tooltip.html#attributes',
},
computed(() => isBoolean$5(vm.props[from]))
)
return {
compatTeleported,
}
}
const ElPopper = withInstall(Popper)
const _sfc_main$9b = defineComponent({
name: 'ElVisuallyHidden',
props: {
style: {
type: [String, Object, Array],
},
},
setup(props2) {
return {
computedStyle: computed(() => {
return [
props2.style,
{
position: 'absolute',
border: 0,
width: 1,
height: 1,
padding: 0,
margin: -1,
overflow: 'hidden',
clip: 'rect(0, 0, 0, 0)',
whiteSpace: 'nowrap',
wordWrap: 'normal',
},
]
}),
}
},
})
function _sfc_render$1G(_ctx, _cache, $props2, $setup, $data, $options) {
return (
openBlock(),
createElementBlock(
'span',
mergeProps(_ctx.$attrs, { style: _ctx.computedStyle }),
[renderSlot(_ctx.$slots, 'default')],
16
)
)
}
var ElVisuallyHidden = /* @__PURE__ */ _export_sfc$1(_sfc_main$9b, [
['render', _sfc_render$1G],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/visual-hidden/src/visual-hidden.vue',
],
])
const useTooltipContentProps = buildProps({
...useDelayedToggleProps,
...usePopperContentProps,
appendTo: {
type: definePropType([String, Object]),
default: POPPER_CONTAINER_SELECTOR,
},
content: {
type: String,
default: '',
},
rawContent: {
type: Boolean,
default: false,
},
persistent: Boolean,
ariaLabel: String,
visible: {
type: definePropType(Boolean),
default: null,
},
transition: {
type: String,
default: 'el-fade-in-linear',
},
teleported: {
type: Boolean,
default: true,
},
disabled: {
type: Boolean,
},
})
const useTooltipTriggerProps = buildProps({
...usePopperTriggerProps,
disabled: Boolean,
trigger: {
type: definePropType([String, Array]),
default: 'hover',
},
})
const useTooltipProps = buildProps({
openDelay: {
type: Number,
},
visibleArrow: {
type: Boolean,
default: void 0,
},
hideAfter: {
type: Number,
default: 200,
},
showArrow: {
type: Boolean,
default: true,
},
})
const TOOLTIP_INJECTION_KEY = Symbol('elTooltip')
const _sfc_main$9a = defineComponent({
name: 'ElTooltipContent',
components: {
ElPopperContent,
ElVisuallyHidden,
},
inheritAttrs: false,
props: useTooltipContentProps,
setup(props2) {
const contentRef = ref(null)
const intermediateOpen = ref(false)
const entering = ref(false)
const leaving = ref(false)
const destroyed = ref(false)
const {
controlled,
id: id2,
open: open2,
trigger: trigger2,
onClose,
onOpen,
onShow,
onHide,
onBeforeShow,
onBeforeHide,
} = inject(TOOLTIP_INJECTION_KEY, void 0)
const persistentRef = computed(() => {
return props2.persistent
})
onBeforeUnmount(() => {
destroyed.value = true
})
const shouldRender = computed(() => {
return unref(persistentRef) ? true : unref(open2)
})
const shouldShow = computed(() => {
return props2.disabled ? false : unref(open2)
})
const contentStyle = computed(() => {
var _a2
return (_a2 = props2.style) != null ? _a2 : {}
})
const ariaHidden = computed(() => !unref(open2))
useEscapeKeydown(onClose)
const onTransitionLeave = () => {
onHide()
}
const stopWhenControlled = () => {
if (unref(controlled)) return true
}
const onContentEnter = composeEventHandlers(stopWhenControlled, () => {
if (props2.enterable && unref(trigger2) === 'hover') {
onOpen()
}
})
const onContentLeave = composeEventHandlers(stopWhenControlled, () => {
if (unref(trigger2) === 'hover') {
onClose()
}
})
const onBeforeEnter = () => {
var _a2, _b2
;(_b2 = (_a2 = contentRef.value) == null ? void 0 : _a2.updatePopper) ==
null
? void 0
: _b2.call(_a2)
onBeforeShow == null ? void 0 : onBeforeShow()
}
const onBeforeLeave = () => {
onBeforeHide == null ? void 0 : onBeforeHide()
}
const onAfterShow = () => {
onShow()
}
let stopHandle
watch$1(
() => unref(open2),
(val2) => {
if (val2) {
stopHandle = onClickOutside$1(
computed(() => {
var _a2
return (_a2 = contentRef.value) == null
? void 0
: _a2.popperContentRef
}),
() => {
if (unref(controlled)) return
const $trigger = unref(trigger2)
if ($trigger !== 'hover') {
onClose()
}
}
)
} else {
stopHandle == null ? void 0 : stopHandle()
}
},
{
flush: 'post',
}
)
return {
ariaHidden,
entering,
leaving,
id: id2,
intermediateOpen,
contentStyle,
contentRef,
destroyed,
shouldRender,
shouldShow,
open: open2,
onAfterShow,
onBeforeEnter,
onBeforeLeave,
onContentEnter,
onContentLeave,
onTransitionLeave,
}
},
})
function _sfc_render$1F(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_visually_hidden = resolveComponent('el-visually-hidden')
const _component_el_popper_content = resolveComponent('el-popper-content')
return (
openBlock(),
createBlock(
Teleport,
{
disabled: !_ctx.teleported,
to: _ctx.appendTo,
},
[
createVNode$1(
Transition,
{
name: _ctx.transition,
onAfterLeave: _ctx.onTransitionLeave,
onBeforeEnter: _ctx.onBeforeEnter,
onAfterEnter: _ctx.onAfterShow,
onBeforeLeave: _ctx.onBeforeLeave,
},
{
default: withCtx(() => [
_ctx.shouldRender
? withDirectives(
(openBlock(),
createBlock(
_component_el_popper_content,
mergeProps(
{
key: 0,
ref: 'contentRef',
},
_ctx.$attrs,
{
'aria-hidden': _ctx.ariaHidden,
'boundaries-padding': _ctx.boundariesPadding,
'fallback-placements': _ctx.fallbackPlacements,
'gpu-acceleration': _ctx.gpuAcceleration,
offset: _ctx.offset,
placement: _ctx.placement,
'popper-options': _ctx.popperOptions,
strategy: _ctx.strategy,
effect: _ctx.effect,
enterable: _ctx.enterable,
pure: _ctx.pure,
'popper-class': _ctx.popperClass,
'popper-style': [_ctx.popperStyle, _ctx.contentStyle],
'reference-el': _ctx.referenceEl,
visible: _ctx.shouldShow,
'z-index': _ctx.zIndex,
onMouseenter: _ctx.onContentEnter,
onMouseleave: _ctx.onContentLeave,
}
),
{
default: withCtx(() => [
createCommentVNode(' Workaround bug #6378 '),
!_ctx.destroyed
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
renderSlot(_ctx.$slots, 'default'),
createVNode$1(
_component_el_visually_hidden,
{
id: _ctx.id,
role: 'tooltip',
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx.ariaLabel),
1
),
]),
_: 1,
},
8,
['id']
),
],
64
))
: createCommentVNode('v-if', true),
]),
_: 3,
},
16,
[
'aria-hidden',
'boundaries-padding',
'fallback-placements',
'gpu-acceleration',
'offset',
'placement',
'popper-options',
'strategy',
'effect',
'enterable',
'pure',
'popper-class',
'popper-style',
'reference-el',
'visible',
'z-index',
'onMouseenter',
'onMouseleave',
]
)),
[[vShow, _ctx.shouldShow]]
)
: createCommentVNode('v-if', true),
]),
_: 3,
},
8,
[
'name',
'onAfterLeave',
'onBeforeEnter',
'onAfterEnter',
'onBeforeLeave',
]
),
],
8,
['disabled', 'to']
)
)
}
var ElTooltipContent = /* @__PURE__ */ _export_sfc$1(_sfc_main$9a, [
['render', _sfc_render$1F],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/tooltip/src/content.vue',
],
])
const isTriggerType = (trigger2, type4) => {
if (isArray$D(trigger2)) {
return trigger2.includes(type4)
}
return trigger2 === type4
}
const whenTrigger = (trigger2, type4, handler) => {
return (e2) => {
isTriggerType(unref(trigger2), type4) && handler(e2)
}
}
const _sfc_main$99 = defineComponent({
name: 'ElTooltipTrigger',
components: {
ElPopperTrigger,
},
props: useTooltipTriggerProps,
setup(props2) {
const ns = useNamespace('tooltip')
const {
controlled,
id: id2,
open: open2,
onOpen,
onClose,
onToggle,
} = inject(TOOLTIP_INJECTION_KEY, void 0)
const triggerRef2 = ref(null)
const stopWhenControlledOrDisabled = () => {
if (unref(controlled) || props2.disabled) {
return true
}
}
const trigger2 = toRef(props2, 'trigger')
const onMouseenter = composeEventHandlers(
stopWhenControlledOrDisabled,
whenTrigger(trigger2, 'hover', onOpen)
)
const onMouseleave = composeEventHandlers(
stopWhenControlledOrDisabled,
whenTrigger(trigger2, 'hover', onClose)
)
const onClick = composeEventHandlers(
stopWhenControlledOrDisabled,
whenTrigger(trigger2, 'click', (e2) => {
if (e2.button === 0) {
onToggle(e2)
}
})
)
const onFocus = composeEventHandlers(
stopWhenControlledOrDisabled,
whenTrigger(trigger2, 'focus', onOpen)
)
const onBlur = composeEventHandlers(
stopWhenControlledOrDisabled,
whenTrigger(trigger2, 'focus', onClose)
)
const onContextMenu = composeEventHandlers(
stopWhenControlledOrDisabled,
whenTrigger(trigger2, 'contextmenu', (e2) => {
e2.preventDefault()
onToggle(e2)
})
)
const onKeydown = composeEventHandlers(
stopWhenControlledOrDisabled,
(e2) => {
const { code: code2 } = e2
if (code2 === EVENT_CODE.enter || code2 === EVENT_CODE.space) {
onToggle(e2)
}
}
)
return {
onBlur,
onContextMenu,
onFocus,
onMouseenter,
onMouseleave,
onClick,
onKeydown,
open: open2,
id: id2,
triggerRef: triggerRef2,
ns,
}
},
})
function _sfc_render$1E(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_popper_trigger = resolveComponent('el-popper-trigger')
return (
openBlock(),
createBlock(
_component_el_popper_trigger,
{
id: _ctx.id,
'virtual-ref': _ctx.virtualRef,
open: _ctx.open,
'virtual-triggering': _ctx.virtualTriggering,
class: normalizeClass(_ctx.ns.e('trigger')),
onBlur: _ctx.onBlur,
onClick: _ctx.onClick,
onContextmenu: _ctx.onContextMenu,
onFocus: _ctx.onFocus,
onMouseenter: _ctx.onMouseenter,
onMouseleave: _ctx.onMouseleave,
onKeydown: _ctx.onKeydown,
},
{
default: withCtx(() => [renderSlot(_ctx.$slots, 'default')]),
_: 3,
},
8,
[
'id',
'virtual-ref',
'open',
'virtual-triggering',
'class',
'onBlur',
'onClick',
'onContextmenu',
'onFocus',
'onMouseenter',
'onMouseleave',
'onKeydown',
]
)
)
}
var ElTooltipTrigger = /* @__PURE__ */ _export_sfc$1(_sfc_main$99, [
['render', _sfc_render$1E],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/tooltip/src/trigger.vue',
],
])
const { useModelToggleProps, useModelToggle, useModelToggleEmits } =
createModelToggleComposable('visible')
const _sfc_main$98 = defineComponent({
name: 'ElTooltip',
components: {
ElPopper,
ElPopperArrow,
ElTooltipContent,
ElTooltipTrigger,
},
props: {
...useModelToggleProps,
...useTooltipContentProps,
...useTooltipTriggerProps,
...usePopperArrowProps,
...useTooltipProps,
},
emits: [...useModelToggleEmits, 'before-show', 'before-hide', 'show', 'hide'],
setup(props2, { emit: emit2 }) {
usePopperContainer()
const compatShowAfter = computed(() => {
if (!isUndefined$c(props2.openDelay));
return props2.openDelay || props2.showAfter
})
const compatShowArrow = computed(() => {
if (!isUndefined$c(props2.visibleArrow));
return isBoolean$5(props2.visibleArrow)
? props2.visibleArrow
: props2.showArrow
})
const id2 = useId()
const popperRef = ref(null)
const updatePopper = () => {
var _a2
const popperComponent = unref(popperRef)
if (popperComponent) {
;(_a2 = popperComponent.popperInstanceRef) == null
? void 0
: _a2.update()
}
}
const open2 = ref(false)
const { show, hide: hide2 } = useModelToggle({
indicator: open2,
})
const { onOpen, onClose } = useDelayedToggle({
showAfter: compatShowAfter,
hideAfter: toRef(props2, 'hideAfter'),
open: show,
close: hide2,
})
const controlled = computed(() => isBoolean$5(props2.visible))
provide(TOOLTIP_INJECTION_KEY, {
controlled,
id: id2,
open: readonly(open2),
trigger: toRef(props2, 'trigger'),
onOpen,
onClose,
onToggle: () => {
if (unref(open2)) {
onClose()
} else {
onOpen()
}
},
onShow: () => {
emit2('show')
},
onHide: () => {
emit2('hide')
},
onBeforeShow: () => {
emit2('before-show')
},
onBeforeHide: () => {
emit2('before-hide')
},
updatePopper,
})
watch$1(
() => props2.disabled,
(disabled) => {
if (disabled && open2.value) {
open2.value = false
}
}
)
return {
compatShowAfter,
compatShowArrow,
popperRef,
open: open2,
hide: hide2,
updatePopper,
onOpen,
onClose,
}
},
})
const _hoisted_1$6_ = ['innerHTML']
const _hoisted_2$5A = { key: 1 }
function _sfc_render$1D(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_tooltip_trigger = resolveComponent('el-tooltip-trigger')
const _component_el_popper_arrow = resolveComponent('el-popper-arrow')
const _component_el_tooltip_content = resolveComponent('el-tooltip-content')
const _component_el_popper = resolveComponent('el-popper')
return (
openBlock(),
createBlock(
_component_el_popper,
{ ref: 'popperRef' },
{
default: withCtx(() => [
createVNode$1(
_component_el_tooltip_trigger,
{
disabled: _ctx.disabled,
trigger: _ctx.trigger,
'virtual-ref': _ctx.virtualRef,
'virtual-triggering': _ctx.virtualTriggering,
},
{
default: withCtx(() => [
_ctx.$slots.default
? renderSlot(_ctx.$slots, 'default', { key: 0 })
: createCommentVNode('v-if', true),
]),
_: 3,
},
8,
['disabled', 'trigger', 'virtual-ref', 'virtual-triggering']
),
createVNode$1(
_component_el_tooltip_content,
{
'aria-label': _ctx.ariaLabel,
'boundaries-padding': _ctx.boundariesPadding,
content: _ctx.content,
disabled: _ctx.disabled,
effect: _ctx.effect,
enterable: _ctx.enterable,
'fallback-placements': _ctx.fallbackPlacements,
'hide-after': _ctx.hideAfter,
'gpu-acceleration': _ctx.gpuAcceleration,
offset: _ctx.offset,
persistent: _ctx.persistent,
'popper-class': _ctx.popperClass,
'popper-style': _ctx.popperStyle,
placement: _ctx.placement,
'popper-options': _ctx.popperOptions,
pure: _ctx.pure,
'raw-content': _ctx.rawContent,
'reference-el': _ctx.referenceEl,
'show-after': _ctx.compatShowAfter,
strategy: _ctx.strategy,
teleported: _ctx.teleported,
transition: _ctx.transition,
'z-index': _ctx.zIndex,
'append-to': _ctx.appendTo,
},
{
default: withCtx(() => [
renderSlot(_ctx.$slots, 'content', {}, () => [
_ctx.rawContent
? (openBlock(),
createElementBlock(
'span',
{
key: 0,
innerHTML: _ctx.content,
},
null,
8,
_hoisted_1$6_
))
: (openBlock(),
createElementBlock(
'span',
_hoisted_2$5A,
toDisplayString$1(_ctx.content),
1
)),
]),
_ctx.compatShowArrow
? (openBlock(),
createBlock(
_component_el_popper_arrow,
{
key: 0,
'arrow-offset': _ctx.arrowOffset,
},
null,
8,
['arrow-offset']
))
: createCommentVNode('v-if', true),
]),
_: 3,
},
8,
[
'aria-label',
'boundaries-padding',
'content',
'disabled',
'effect',
'enterable',
'fallback-placements',
'hide-after',
'gpu-acceleration',
'offset',
'persistent',
'popper-class',
'popper-style',
'placement',
'popper-options',
'pure',
'raw-content',
'reference-el',
'show-after',
'strategy',
'teleported',
'transition',
'z-index',
'append-to',
]
),
]),
_: 3,
},
512
)
)
}
var Tooltip$1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$98, [
['render', _sfc_render$1D],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/tooltip/src/tooltip.vue',
],
])
const ElTooltip = withInstall(Tooltip$1)
const autocompleteProps = buildProps({
valueKey: {
type: String,
default: 'value',
},
modelValue: {
type: [String, Number],
default: '',
},
debounce: {
type: Number,
default: 300,
},
placement: {
type: definePropType(String),
values: [
'top',
'top-start',
'top-end',
'bottom',
'bottom-start',
'bottom-end',
],
default: 'bottom-start',
},
fetchSuggestions: {
type: definePropType([Function, Array]),
default: NOOP,
},
popperClass: {
type: String,
default: '',
},
triggerOnFocus: {
type: Boolean,
default: true,
},
selectWhenUnmatched: {
type: Boolean,
default: false,
},
hideLoading: {
type: Boolean,
default: false,
},
popperAppendToBody: {
type: Boolean,
default: void 0,
},
teleported: useTooltipContentProps.teleported,
highlightFirstItem: {
type: Boolean,
default: false,
},
})
const autocompleteEmits = {
[UPDATE_MODEL_EVENT]: (value2) => isString$f(value2),
input: (value2) => isString$f(value2),
change: (value2) => isString$f(value2),
focus: (evt) => evt instanceof FocusEvent,
blur: (evt) => evt instanceof FocusEvent,
clear: () => true,
select: (item2) => isObject$v(item2),
}
const _hoisted_1$6Z = ['aria-expanded', 'aria-owns']
const _hoisted_2$5z = { key: 0 }
const _hoisted_3$4R = ['id', 'aria-selected', 'onClick']
const __default__$H = {
name: 'ElAutocomplete',
inheritAttrs: false,
}
const _sfc_main$97 = /* @__PURE__ */ defineComponent({
...__default__$H,
props: autocompleteProps,
emits: autocompleteEmits,
setup(__props2, { expose, emit: emit2 }) {
const props2 = __props2
const COMPONENT_NAME2 = 'ElAutocomplete'
const ns = useNamespace('autocomplete')
const { compatTeleported } = useDeprecateAppendToBody(
COMPONENT_NAME2,
'popperAppendToBody'
)
let isClear = false
const attrs = useAttrs()
const compAttrs = useAttrs$1()
const suggestions = ref([])
const highlightedIndex = ref(-1)
const dropdownWidth = ref('')
const activated = ref(false)
const suggestionDisabled = ref(false)
const loading$1 = ref(false)
const inputRef = ref()
const regionRef = ref()
const popperRef = ref()
const listboxRef = ref()
const id2 = computed(() => {
return ns.b(String(generateId()))
})
const styles = computed(() => compAttrs.style)
const suggestionVisible = computed(() => {
const isValidData =
isArray$D(suggestions.value) && suggestions.value.length > 0
return (isValidData || loading$1.value) && activated.value
})
const suggestionLoading = computed(() => {
return !props2.hideLoading && loading$1.value
})
const onSuggestionShow = () => {
nextTick(() => {
if (suggestionVisible.value) {
dropdownWidth.value = `${inputRef.value.$el.offsetWidth}px`
}
})
}
const getData = (queryString) => {
if (suggestionDisabled.value) {
return
}
loading$1.value = true
const cb = (suggestionsArg) => {
loading$1.value = false
if (suggestionDisabled.value) {
return
}
if (isArray$D(suggestionsArg)) {
suggestions.value = suggestionsArg
highlightedIndex.value = props2.highlightFirstItem ? 0 : -1
} else {
throwError$1(
COMPONENT_NAME2,
'autocomplete suggestions must be an array'
)
}
}
if (isArray$D(props2.fetchSuggestions)) {
cb(props2.fetchSuggestions)
} else {
const result = props2.fetchSuggestions(queryString, cb)
if (isArray$D(result)) {
cb(result)
} else if (isPromise$1(result)) {
result.then(cb)
}
}
}
const debouncedGetData = debounce$3(getData, props2.debounce)
const handleInput = (value2) => {
const valuePresented = Boolean(value2)
emit2('input', value2)
emit2(UPDATE_MODEL_EVENT, value2)
suggestionDisabled.value = false
activated.value || (activated.value = isClear && valuePresented)
if (!props2.triggerOnFocus && !value2) {
suggestionDisabled.value = true
suggestions.value = []
return
}
if (isClear && valuePresented) {
isClear = false
}
debouncedGetData(value2)
}
const handleChange = (value2) => {
emit2('change', value2)
}
const handleFocus = (evt) => {
activated.value = true
emit2('focus', evt)
if (props2.triggerOnFocus) {
debouncedGetData(String(props2.modelValue))
}
}
const handleBlur = (evt) => {
emit2('blur', evt)
}
const handleClear = () => {
activated.value = false
isClear = true
emit2(UPDATE_MODEL_EVENT, '')
emit2('clear')
}
const handleKeyEnter = () => {
if (
suggestionVisible.value &&
highlightedIndex.value >= 0 &&
highlightedIndex.value < suggestions.value.length
) {
handleSelect(suggestions.value[highlightedIndex.value])
} else if (props2.selectWhenUnmatched) {
emit2('select', { value: props2.modelValue })
nextTick(() => {
suggestions.value = []
highlightedIndex.value = -1
})
}
}
const close2 = () => {
activated.value = false
}
const focus2 = () => {
var _a2
;(_a2 = inputRef.value) == null ? void 0 : _a2.focus()
}
const handleSelect = (item2) => {
emit2('input', item2[props2.valueKey])
emit2(UPDATE_MODEL_EVENT, item2[props2.valueKey])
emit2('select', item2)
nextTick(() => {
suggestions.value = []
highlightedIndex.value = -1
})
}
const highlight = (index2) => {
if (!suggestionVisible.value || loading$1.value) {
return
}
if (index2 < 0) {
highlightedIndex.value = -1
return
}
if (index2 >= suggestions.value.length) {
index2 = suggestions.value.length - 1
}
const suggestion = regionRef.value.querySelector(
`.${ns.be('suggestion', 'wrap')}`
)
const suggestionList = suggestion.querySelectorAll(
`.${ns.be('suggestion', 'list')} li`
)
const highlightItem = suggestionList[index2]
const scrollTop = suggestion.scrollTop
const { offsetTop, scrollHeight } = highlightItem
if (offsetTop + scrollHeight > scrollTop + suggestion.clientHeight) {
suggestion.scrollTop += scrollHeight
}
if (offsetTop < scrollTop) {
suggestion.scrollTop -= scrollHeight
}
highlightedIndex.value = index2
inputRef.value.ref.setAttribute(
'aria-activedescendant',
`${id2.value}-item-${highlightedIndex.value}`
)
}
onClickOutside$1(listboxRef, close2)
onMounted(() => {
inputRef.value.ref.setAttribute('role', 'textbox')
inputRef.value.ref.setAttribute('aria-autocomplete', 'list')
inputRef.value.ref.setAttribute('aria-controls', 'id')
inputRef.value.ref.setAttribute(
'aria-activedescendant',
`${id2.value}-item-${highlightedIndex.value}`
)
})
expose({
highlightedIndex,
activated,
loading: loading$1,
inputRef,
popperRef,
suggestions,
handleSelect,
handleKeyEnter,
focus: focus2,
close: close2,
highlight,
})
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
unref(ElTooltip),
{
ref_key: 'popperRef',
ref: popperRef,
visible: unref(suggestionVisible),
'onUpdate:visible':
_cache[2] ||
(_cache[2] = ($event) =>
isRef(suggestionVisible)
? (suggestionVisible.value = $event)
: null),
placement: _ctx.placement,
'fallback-placements': ['bottom-start', 'top-start'],
'popper-class': [unref(ns).e('popper'), _ctx.popperClass],
teleported: unref(compatTeleported),
'gpu-acceleration': false,
pure: '',
'manual-mode': '',
effect: 'light',
trigger: 'click',
transition: `${unref(ns).namespace.value}-zoom-in-top`,
persistent: '',
onBeforeShow: onSuggestionShow,
},
{
content: withCtx(() => [
createElementVNode(
'div',
{
ref_key: 'regionRef',
ref: regionRef,
class: normalizeClass([
unref(ns).b('suggestion'),
unref(ns).is('loading', unref(suggestionLoading)),
]),
style: normalizeStyle$1({
minWidth: dropdownWidth.value,
outline: 'none',
}),
role: 'region',
},
[
createVNode$1(
unref(ElScrollbar),
{
id: unref(id2),
tag: 'ul',
'wrap-class': unref(ns).be('suggestion', 'wrap'),
'view-class': unref(ns).be('suggestion', 'list'),
role: 'listbox',
},
{
default: withCtx(() => [
unref(suggestionLoading)
? (openBlock(),
createElementBlock('li', _hoisted_2$5z, [
createVNode$1(
unref(ElIcon),
{
class: normalizeClass(
unref(ns).is('loading')
),
},
{
default: withCtx(() => [
createVNode$1(unref(loading)),
]),
_: 1,
},
8,
['class']
),
]))
: (openBlock(true),
createElementBlock(
Fragment,
{ key: 1 },
renderList(suggestions.value, (item2, index2) => {
return (
openBlock(),
createElementBlock(
'li',
{
id: `${unref(id2)}-item-${index2}`,
key: index2,
class: normalizeClass({
highlighted:
highlightedIndex.value === index2,
}),
role: 'option',
'aria-selected':
highlightedIndex.value === index2,
onClick: ($event) => handleSelect(item2),
},
[
renderSlot(
_ctx.$slots,
'default',
{ item: item2 },
() => [
createTextVNode(
toDisplayString$1(
item2[_ctx.valueKey]
),
1
),
]
),
],
10,
_hoisted_3$4R
)
)
}),
128
)),
]),
_: 3,
},
8,
['id', 'wrap-class', 'view-class']
),
],
6
),
]),
default: withCtx(() => [
createElementVNode(
'div',
{
ref_key: 'listboxRef',
ref: listboxRef,
class: normalizeClass([unref(ns).b(), _ctx.$attrs.class]),
style: normalizeStyle$1(unref(styles)),
role: 'combobox',
'aria-haspopup': 'listbox',
'aria-expanded': unref(suggestionVisible),
'aria-owns': unref(id2),
},
[
createVNode$1(
unref(ElInput),
mergeProps(
{
ref_key: 'inputRef',
ref: inputRef,
},
unref(attrs),
{
'model-value': _ctx.modelValue,
onInput: handleInput,
onChange: handleChange,
onFocus: handleFocus,
onBlur: handleBlur,
onClear: handleClear,
onKeydown: [
_cache[0] ||
(_cache[0] = withKeys(
withModifiers(
($event) =>
highlight(highlightedIndex.value - 1),
['prevent']
),
['up']
)),
_cache[1] ||
(_cache[1] = withKeys(
withModifiers(
($event) =>
highlight(highlightedIndex.value + 1),
['prevent']
),
['down']
)),
withKeys(handleKeyEnter, ['enter']),
withKeys(close2, ['tab']),
],
}
),
createSlots({ _: 2 }, [
_ctx.$slots.prepend
? {
name: 'prepend',
fn: withCtx(() => [
renderSlot(_ctx.$slots, 'prepend'),
]),
}
: void 0,
_ctx.$slots.append
? {
name: 'append',
fn: withCtx(() => [
renderSlot(_ctx.$slots, 'append'),
]),
}
: void 0,
_ctx.$slots.prefix
? {
name: 'prefix',
fn: withCtx(() => [
renderSlot(_ctx.$slots, 'prefix'),
]),
}
: void 0,
_ctx.$slots.suffix
? {
name: 'suffix',
fn: withCtx(() => [
renderSlot(_ctx.$slots, 'suffix'),
]),
}
: void 0,
]),
1040,
['model-value', 'onKeydown']
),
],
14,
_hoisted_1$6Z
),
]),
_: 3,
},
8,
['visible', 'placement', 'popper-class', 'teleported', 'transition']
)
)
}
},
})
var Autocomplete = /* @__PURE__ */ _export_sfc$1(_sfc_main$97, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/autocomplete/src/autocomplete.vue',
],
])
const ElAutocomplete = withInstall(Autocomplete)
const avatarProps = buildProps({
size: {
type: [Number, String],
values: componentSizes,
default: '',
validator: (val2) => typeof val2 === 'number',
},
shape: {
type: String,
values: ['circle', 'square'],
default: 'circle',
},
icon: {
type: iconPropType,
},
src: {
type: String,
default: '',
},
alt: String,
srcSet: String,
fit: {
type: definePropType(String),
default: 'cover',
},
})
const avatarEmits = {
error: (evt) => evt instanceof Event,
}
const _hoisted_1$6Y = ['src', 'alt', 'srcset']
const __default__$G = {
name: 'ElAvatar',
}
const _sfc_main$96 = /* @__PURE__ */ defineComponent({
...__default__$G,
props: avatarProps,
emits: avatarEmits,
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const ns = useNamespace('avatar')
const hasLoadError = ref(false)
const avatarClass = computed(() => {
const { size, icon, shape } = props2
const classList2 = [ns.b()]
if (isString$f(size)) classList2.push(ns.m(size))
if (icon) classList2.push(ns.m('icon'))
if (shape) classList2.push(ns.m(shape))
return classList2
})
const sizeStyle = computed(() => {
const { size } = props2
return isNumber$h(size)
? {
'--el-avatar-size': addUnit(size),
}
: void 0
})
const fitStyle = computed(() => ({
objectFit: props2.fit,
}))
watch$1(
() => props2.src,
() => (hasLoadError.value = false)
)
function handleError(e2) {
hasLoadError.value = true
emit2('error', e2)
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'span',
{
class: normalizeClass(unref(avatarClass)),
style: normalizeStyle$1(unref(sizeStyle)),
},
[
(_ctx.src || _ctx.srcSet) && !hasLoadError.value
? (openBlock(),
createElementBlock(
'img',
{
key: 0,
src: _ctx.src,
alt: _ctx.alt,
srcset: _ctx.srcSet,
style: normalizeStyle$1(unref(fitStyle)),
onError: handleError,
},
null,
44,
_hoisted_1$6Y
))
: _ctx.icon
? (openBlock(),
createBlock(
unref(ElIcon),
{ key: 1 },
{
default: withCtx(() => [
(openBlock(),
createBlock(resolveDynamicComponent(_ctx.icon))),
]),
_: 1,
}
))
: renderSlot(_ctx.$slots, 'default', { key: 2 }),
],
6
)
)
}
},
})
var Avatar = /* @__PURE__ */ _export_sfc$1(_sfc_main$96, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/avatar/src/avatar.vue',
],
])
const ElAvatar = withInstall(Avatar)
const backtopProps = {
visibilityHeight: {
type: Number,
default: 200,
},
target: {
type: String,
default: '',
},
right: {
type: Number,
default: 40,
},
bottom: {
type: Number,
default: 40,
},
}
const backtopEmits = {
click: (evt) => evt instanceof MouseEvent,
}
const _hoisted_1$6X = ['onClick']
const __default__$F = {
name: 'ElBacktop',
}
const _sfc_main$95 = /* @__PURE__ */ defineComponent({
...__default__$F,
props: backtopProps,
emits: backtopEmits,
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const COMPONENT_NAME2 = 'ElBacktop'
const ns = useNamespace('backtop')
const el2 = shallowRef()
const container = shallowRef()
const visible = ref(false)
const backTopStyle = computed(() => ({
right: `${props2.right}px`,
bottom: `${props2.bottom}px`,
}))
const scrollToTop = () => {
if (!el2.value) return
const beginTime = Date.now()
const beginValue = el2.value.scrollTop
const frameFunc = () => {
if (!el2.value) return
const progress = (Date.now() - beginTime) / 500
if (progress < 1) {
el2.value.scrollTop = beginValue * (1 - easeInOutCubic(progress))
requestAnimationFrame(frameFunc)
} else {
el2.value.scrollTop = 0
}
}
requestAnimationFrame(frameFunc)
}
const handleScroll2 = () => {
if (el2.value)
visible.value = el2.value.scrollTop >= props2.visibilityHeight
}
const handleClick2 = (event) => {
scrollToTop()
emit2('click', event)
}
const handleScrollThrottled = useThrottleFn$1(handleScroll2, 300)
onMounted(() => {
var _a2
container.value = document
el2.value = document.documentElement
if (props2.target) {
el2.value =
(_a2 = document.querySelector(props2.target)) != null ? _a2 : void 0
if (!el2.value) {
throwError$1(
COMPONENT_NAME2,
`target is not existed: ${props2.target}`
)
}
container.value = el2.value
}
useEventListener$1(container, 'scroll', handleScrollThrottled)
})
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
Transition,
{
name: `${unref(ns).namespace.value}-fade-in`,
},
{
default: withCtx(() => [
visible.value
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
style: normalizeStyle$1(unref(backTopStyle)),
class: normalizeClass(unref(ns).b()),
onClick: withModifiers(handleClick2, ['stop']),
},
[
renderSlot(_ctx.$slots, 'default', {}, () => [
createVNode$1(
unref(ElIcon),
{
class: normalizeClass(unref(ns).e('icon')),
},
{
default: withCtx(() => [
createVNode$1(unref(caretTop)),
]),
_: 1,
},
8,
['class']
),
]),
],
14,
_hoisted_1$6X
))
: createCommentVNode('v-if', true),
]),
_: 3,
},
8,
['name']
)
)
}
},
})
var Backtop = /* @__PURE__ */ _export_sfc$1(_sfc_main$95, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/backtop/src/backtop.vue',
],
])
const ElBacktop = withInstall(Backtop)
const badgeProps = buildProps({
value: {
type: [String, Number],
default: '',
},
max: {
type: Number,
default: 99,
},
isDot: Boolean,
hidden: Boolean,
type: {
type: String,
values: ['primary', 'success', 'warning', 'info', 'danger'],
default: 'danger',
},
})
const _hoisted_1$6W = ['textContent']
const __default__$E = {
name: 'ElBadge',
}
const _sfc_main$94 = /* @__PURE__ */ defineComponent({
...__default__$E,
props: badgeProps,
setup(__props2, { expose }) {
const props2 = __props2
const ns = useNamespace('badge')
const content2 = computed(() => {
if (props2.isDot) return ''
if (isNumber$h(props2.value) && isNumber$h(props2.max)) {
return props2.max < props2.value ? `${props2.max}+` : `${props2.value}`
}
return `${props2.value}`
})
expose({
content: content2,
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass(unref(ns).b()),
},
[
renderSlot(_ctx.$slots, 'default'),
createVNode$1(
Transition,
{
name: `${unref(ns).namespace.value}-zoom-in-center`,
},
{
default: withCtx(() => [
withDirectives(
createElementVNode(
'sup',
{
class: normalizeClass([
unref(ns).e('content'),
unref(ns).em('content', _ctx.type),
unref(ns).is('fixed', !!_ctx.$slots.default),
unref(ns).is('dot', _ctx.isDot),
]),
textContent: toDisplayString$1(unref(content2)),
},
null,
10,
_hoisted_1$6W
),
[
[
vShow,
!_ctx.hidden &&
(unref(content2) ||
unref(content2) === '0' ||
_ctx.isDot),
],
]
),
]),
_: 1,
},
8,
['name']
),
],
2
)
)
}
},
})
var Badge = /* @__PURE__ */ _export_sfc$1(_sfc_main$94, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/badge/src/badge.vue',
],
])
const ElBadge = withInstall(Badge)
const breadcrumbProps = buildProps({
separator: {
type: String,
default: '/',
},
separatorIcon: {
type: iconPropType,
default: '',
},
})
const __default__$D = {
name: 'ElBreadcrumb',
}
const _sfc_main$93 = /* @__PURE__ */ defineComponent({
...__default__$D,
props: breadcrumbProps,
setup(__props2) {
const props2 = __props2
const ns = useNamespace('breadcrumb')
const breadcrumb = ref()
provide(breadcrumbKey, props2)
onMounted(() => {
const items = breadcrumb.value.querySelectorAll(`.${ns.e('item')}`)
if (items.length) {
items[items.length - 1].setAttribute('aria-current', 'page')
}
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
ref_key: 'breadcrumb',
ref: breadcrumb,
class: normalizeClass(unref(ns).b()),
'aria-label': 'Breadcrumb',
role: 'navigation',
},
[renderSlot(_ctx.$slots, 'default')],
2
)
)
}
},
})
var Breadcrumb$2 = /* @__PURE__ */ _export_sfc$1(_sfc_main$93, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/breadcrumb/src/breadcrumb.vue',
],
])
const breadcrumbItemProps = buildProps({
to: {
type: definePropType([String, Object]),
default: '',
},
replace: {
type: Boolean,
default: false,
},
})
const __default__$C = {
name: 'ElBreadcrumbItem',
}
const _sfc_main$92 = /* @__PURE__ */ defineComponent({
...__default__$C,
props: breadcrumbItemProps,
setup(__props2) {
const props2 = __props2
const instance = getCurrentInstance()
const router2 = instance.appContext.config.globalProperties.$router
const breadcrumbInjection = inject(breadcrumbKey, {})
const ns = useNamespace('breadcrumb')
const { separator, separatorIcon } = breadcrumbInjection
const link2 = ref()
const onClick = () => {
if (!props2.to || !router2) return
props2.replace ? router2.replace(props2.to) : router2.push(props2.to)
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'span',
{
class: normalizeClass(unref(ns).e('item')),
},
[
createElementVNode(
'span',
{
ref_key: 'link',
ref: link2,
class: normalizeClass([
unref(ns).e('inner'),
unref(ns).is('link', !!_ctx.to),
]),
role: 'link',
onClick,
},
[renderSlot(_ctx.$slots, 'default')],
2
),
unref(separatorIcon)
? (openBlock(),
createBlock(
unref(ElIcon),
{
key: 0,
class: normalizeClass(unref(ns).e('separator')),
},
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(unref(separatorIcon))
)),
]),
_: 1,
},
8,
['class']
))
: (openBlock(),
createElementBlock(
'span',
{
key: 1,
class: normalizeClass(unref(ns).e('separator')),
role: 'presentation',
},
toDisplayString$1(unref(separator)),
3
)),
],
2
)
)
}
},
})
var BreadcrumbItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$92, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/breadcrumb/src/breadcrumb-item.vue',
],
])
const ElBreadcrumb = withInstall(Breadcrumb$2, {
BreadcrumbItem,
})
const ElBreadcrumbItem = withNoopInstall(BreadcrumbItem)
function bound01$1(n2, max3) {
if (isOnePointZero$1(n2)) {
n2 = '100%'
}
var isPercent = isPercentage$1(n2)
n2 = max3 === 360 ? n2 : Math.min(max3, Math.max(0, parseFloat(n2)))
if (isPercent) {
n2 = parseInt(String(n2 * max3), 10) / 100
}
if (Math.abs(n2 - max3) < 1e-6) {
return 1
}
if (max3 === 360) {
n2 = (n2 < 0 ? (n2 % max3) + max3 : n2 % max3) / parseFloat(String(max3))
} else {
n2 = (n2 % max3) / parseFloat(String(max3))
}
return n2
}
function clamp01(val2) {
return Math.min(1, Math.max(0, val2))
}
function isOnePointZero$1(n2) {
return (
typeof n2 === 'string' && n2.indexOf('.') !== -1 && parseFloat(n2) === 1
)
}
function isPercentage$1(n2) {
return typeof n2 === 'string' && n2.indexOf('%') !== -1
}
function boundAlpha(a2) {
a2 = parseFloat(a2)
if (isNaN(a2) || a2 < 0 || a2 > 1) {
a2 = 1
}
return a2
}
function convertToPercentage(n2) {
if (n2 <= 1) {
return ''.concat(Number(n2) * 100, '%')
}
return n2
}
function pad2(c2) {
return c2.length === 1 ? '0' + c2 : String(c2)
}
function rgbToRgb(r2, g2, b2) {
return {
r: bound01$1(r2, 255) * 255,
g: bound01$1(g2, 255) * 255,
b: bound01$1(b2, 255) * 255,
}
}
function rgbToHsl(r2, g2, b2) {
r2 = bound01$1(r2, 255)
g2 = bound01$1(g2, 255)
b2 = bound01$1(b2, 255)
var max3 = Math.max(r2, g2, b2)
var min3 = Math.min(r2, g2, b2)
var h2 = 0
var s2 = 0
var l2 = (max3 + min3) / 2
if (max3 === min3) {
s2 = 0
h2 = 0
} else {
var d3 = max3 - min3
s2 = l2 > 0.5 ? d3 / (2 - max3 - min3) : d3 / (max3 + min3)
switch (max3) {
case r2:
h2 = (g2 - b2) / d3 + (g2 < b2 ? 6 : 0)
break
case g2:
h2 = (b2 - r2) / d3 + 2
break
case b2:
h2 = (r2 - g2) / d3 + 4
break
}
h2 /= 6
}
return { h: h2, s: s2, l: l2 }
}
function hue2rgb$1(p2, q2, t3) {
if (t3 < 0) {
t3 += 1
}
if (t3 > 1) {
t3 -= 1
}
if (t3 < 1 / 6) {
return p2 + (q2 - p2) * (6 * t3)
}
if (t3 < 1 / 2) {
return q2
}
if (t3 < 2 / 3) {
return p2 + (q2 - p2) * (2 / 3 - t3) * 6
}
return p2
}
function hslToRgb(h2, s2, l2) {
var r2
var g2
var b2
h2 = bound01$1(h2, 360)
s2 = bound01$1(s2, 100)
l2 = bound01$1(l2, 100)
if (s2 === 0) {
g2 = l2
b2 = l2
r2 = l2
} else {
var q2 = l2 < 0.5 ? l2 * (1 + s2) : l2 + s2 - l2 * s2
var p2 = 2 * l2 - q2
r2 = hue2rgb$1(p2, q2, h2 + 1 / 3)
g2 = hue2rgb$1(p2, q2, h2)
b2 = hue2rgb$1(p2, q2, h2 - 1 / 3)
}
return { r: r2 * 255, g: g2 * 255, b: b2 * 255 }
}
function rgbToHsv(r2, g2, b2) {
r2 = bound01$1(r2, 255)
g2 = bound01$1(g2, 255)
b2 = bound01$1(b2, 255)
var max3 = Math.max(r2, g2, b2)
var min3 = Math.min(r2, g2, b2)
var h2 = 0
var v4 = max3
var d3 = max3 - min3
var s2 = max3 === 0 ? 0 : d3 / max3
if (max3 === min3) {
h2 = 0
} else {
switch (max3) {
case r2:
h2 = (g2 - b2) / d3 + (g2 < b2 ? 6 : 0)
break
case g2:
h2 = (b2 - r2) / d3 + 2
break
case b2:
h2 = (r2 - g2) / d3 + 4
break
}
h2 /= 6
}
return { h: h2, s: s2, v: v4 }
}
function hsvToRgb(h2, s2, v4) {
h2 = bound01$1(h2, 360) * 6
s2 = bound01$1(s2, 100)
v4 = bound01$1(v4, 100)
var i2 = Math.floor(h2)
var f2 = h2 - i2
var p2 = v4 * (1 - s2)
var q2 = v4 * (1 - f2 * s2)
var t3 = v4 * (1 - (1 - f2) * s2)
var mod = i2 % 6
var r2 = [v4, q2, p2, p2, t3, v4][mod]
var g2 = [t3, v4, v4, q2, p2, p2][mod]
var b2 = [p2, p2, t3, v4, v4, q2][mod]
return { r: r2 * 255, g: g2 * 255, b: b2 * 255 }
}
function rgbToHex(r2, g2, b2, allow3Char) {
var hex2 = [
pad2(Math.round(r2).toString(16)),
pad2(Math.round(g2).toString(16)),
pad2(Math.round(b2).toString(16)),
]
if (
allow3Char &&
hex2[0].startsWith(hex2[0].charAt(1)) &&
hex2[1].startsWith(hex2[1].charAt(1)) &&
hex2[2].startsWith(hex2[2].charAt(1))
) {
return hex2[0].charAt(0) + hex2[1].charAt(0) + hex2[2].charAt(0)
}
return hex2.join('')
}
function rgbaToHex(r2, g2, b2, a2, allow4Char) {
var hex2 = [
pad2(Math.round(r2).toString(16)),
pad2(Math.round(g2).toString(16)),
pad2(Math.round(b2).toString(16)),
pad2(convertDecimalToHex(a2)),
]
if (
allow4Char &&
hex2[0].startsWith(hex2[0].charAt(1)) &&
hex2[1].startsWith(hex2[1].charAt(1)) &&
hex2[2].startsWith(hex2[2].charAt(1)) &&
hex2[3].startsWith(hex2[3].charAt(1))
) {
return (
hex2[0].charAt(0) +
hex2[1].charAt(0) +
hex2[2].charAt(0) +
hex2[3].charAt(0)
)
}
return hex2.join('')
}
function convertDecimalToHex(d3) {
return Math.round(parseFloat(d3) * 255).toString(16)
}
function convertHexToDecimal(h2) {
return parseIntFromHex(h2) / 255
}
function parseIntFromHex(val2) {
return parseInt(val2, 16)
}
function numberInputToObject(color2) {
return {
r: color2 >> 16,
g: (color2 & 65280) >> 8,
b: color2 & 255,
}
}
var names = {
aliceblue: '#f0f8ff',
antiquewhite: '#faebd7',
aqua: '#00ffff',
aquamarine: '#7fffd4',
azure: '#f0ffff',
beige: '#f5f5dc',
bisque: '#ffe4c4',
black: '#000000',
blanchedalmond: '#ffebcd',
blue: '#0000ff',
blueviolet: '#8a2be2',
brown: '#a52a2a',
burlywood: '#deb887',
cadetblue: '#5f9ea0',
chartreuse: '#7fff00',
chocolate: '#d2691e',
coral: '#ff7f50',
cornflowerblue: '#6495ed',
cornsilk: '#fff8dc',
crimson: '#dc143c',
cyan: '#00ffff',
darkblue: '#00008b',
darkcyan: '#008b8b',
darkgoldenrod: '#b8860b',
darkgray: '#a9a9a9',
darkgreen: '#006400',
darkgrey: '#a9a9a9',
darkkhaki: '#bdb76b',
darkmagenta: '#8b008b',
darkolivegreen: '#556b2f',
darkorange: '#ff8c00',
darkorchid: '#9932cc',
darkred: '#8b0000',
darksalmon: '#e9967a',
darkseagreen: '#8fbc8f',
darkslateblue: '#483d8b',
darkslategray: '#2f4f4f',
darkslategrey: '#2f4f4f',
darkturquoise: '#00ced1',
darkviolet: '#9400d3',
deeppink: '#ff1493',
deepskyblue: '#00bfff',
dimgray: '#696969',
dimgrey: '#696969',
dodgerblue: '#1e90ff',
firebrick: '#b22222',
floralwhite: '#fffaf0',
forestgreen: '#228b22',
fuchsia: '#ff00ff',
gainsboro: '#dcdcdc',
ghostwhite: '#f8f8ff',
goldenrod: '#daa520',
gold: '#ffd700',
gray: '#808080',
green: '#008000',
greenyellow: '#adff2f',
grey: '#808080',
honeydew: '#f0fff0',
hotpink: '#ff69b4',
indianred: '#cd5c5c',
indigo: '#4b0082',
ivory: '#fffff0',
khaki: '#f0e68c',
lavenderblush: '#fff0f5',
lavender: '#e6e6fa',
lawngreen: '#7cfc00',
lemonchiffon: '#fffacd',
lightblue: '#add8e6',
lightcoral: '#f08080',
lightcyan: '#e0ffff',
lightgoldenrodyellow: '#fafad2',
lightgray: '#d3d3d3',
lightgreen: '#90ee90',
lightgrey: '#d3d3d3',
lightpink: '#ffb6c1',
lightsalmon: '#ffa07a',
lightseagreen: '#20b2aa',
lightskyblue: '#87cefa',
lightslategray: '#778899',
lightslategrey: '#778899',
lightsteelblue: '#b0c4de',
lightyellow: '#ffffe0',
lime: '#00ff00',
limegreen: '#32cd32',
linen: '#faf0e6',
magenta: '#ff00ff',
maroon: '#800000',
mediumaquamarine: '#66cdaa',
mediumblue: '#0000cd',
mediumorchid: '#ba55d3',
mediumpurple: '#9370db',
mediumseagreen: '#3cb371',
mediumslateblue: '#7b68ee',
mediumspringgreen: '#00fa9a',
mediumturquoise: '#48d1cc',
mediumvioletred: '#c71585',
midnightblue: '#191970',
mintcream: '#f5fffa',
mistyrose: '#ffe4e1',
moccasin: '#ffe4b5',
navajowhite: '#ffdead',
navy: '#000080',
oldlace: '#fdf5e6',
olive: '#808000',
olivedrab: '#6b8e23',
orange: '#ffa500',
orangered: '#ff4500',
orchid: '#da70d6',
palegoldenrod: '#eee8aa',
palegreen: '#98fb98',
paleturquoise: '#afeeee',
palevioletred: '#db7093',
papayawhip: '#ffefd5',
peachpuff: '#ffdab9',
peru: '#cd853f',
pink: '#ffc0cb',
plum: '#dda0dd',
powderblue: '#b0e0e6',
purple: '#800080',
rebeccapurple: '#663399',
red: '#ff0000',
rosybrown: '#bc8f8f',
royalblue: '#4169e1',
saddlebrown: '#8b4513',
salmon: '#fa8072',
sandybrown: '#f4a460',
seagreen: '#2e8b57',
seashell: '#fff5ee',
sienna: '#a0522d',
silver: '#c0c0c0',
skyblue: '#87ceeb',
slateblue: '#6a5acd',
slategray: '#708090',
slategrey: '#708090',
snow: '#fffafa',
springgreen: '#00ff7f',
steelblue: '#4682b4',
tan: '#d2b48c',
teal: '#008080',
thistle: '#d8bfd8',
tomato: '#ff6347',
turquoise: '#40e0d0',
violet: '#ee82ee',
wheat: '#f5deb3',
white: '#ffffff',
whitesmoke: '#f5f5f5',
yellow: '#ffff00',
yellowgreen: '#9acd32',
}
function inputToRGB(color2) {
var rgb2 = { r: 0, g: 0, b: 0 }
var a2 = 1
var s2 = null
var v4 = null
var l2 = null
var ok = false
var format2 = false
if (typeof color2 === 'string') {
color2 = stringInputToObject(color2)
}
if (typeof color2 === 'object') {
if (
isValidCSSUnit(color2.r) &&
isValidCSSUnit(color2.g) &&
isValidCSSUnit(color2.b)
) {
rgb2 = rgbToRgb(color2.r, color2.g, color2.b)
ok = true
format2 = String(color2.r).substr(-1) === '%' ? 'prgb' : 'rgb'
} else if (
isValidCSSUnit(color2.h) &&
isValidCSSUnit(color2.s) &&
isValidCSSUnit(color2.v)
) {
s2 = convertToPercentage(color2.s)
v4 = convertToPercentage(color2.v)
rgb2 = hsvToRgb(color2.h, s2, v4)
ok = true
format2 = 'hsv'
} else if (
isValidCSSUnit(color2.h) &&
isValidCSSUnit(color2.s) &&
isValidCSSUnit(color2.l)
) {
s2 = convertToPercentage(color2.s)
l2 = convertToPercentage(color2.l)
rgb2 = hslToRgb(color2.h, s2, l2)
ok = true
format2 = 'hsl'
}
if (Object.prototype.hasOwnProperty.call(color2, 'a')) {
a2 = color2.a
}
}
a2 = boundAlpha(a2)
return {
ok,
format: color2.format || format2,
r: Math.min(255, Math.max(rgb2.r, 0)),
g: Math.min(255, Math.max(rgb2.g, 0)),
b: Math.min(255, Math.max(rgb2.b, 0)),
a: a2,
}
}
var CSS_INTEGER = '[-\\+]?\\d+%?'
var CSS_NUMBER = '[-\\+]?\\d*\\.\\d+%?'
var CSS_UNIT = '(?:'.concat(CSS_NUMBER, ')|(?:').concat(CSS_INTEGER, ')')
var PERMISSIVE_MATCH3 = '[\\s|\\(]+('
.concat(CSS_UNIT, ')[,|\\s]+(')
.concat(CSS_UNIT, ')[,|\\s]+(')
.concat(CSS_UNIT, ')\\s*\\)?')
var PERMISSIVE_MATCH4 = '[\\s|\\(]+('
.concat(CSS_UNIT, ')[,|\\s]+(')
.concat(CSS_UNIT, ')[,|\\s]+(')
.concat(CSS_UNIT, ')[,|\\s]+(')
.concat(CSS_UNIT, ')\\s*\\)?')
var matchers = {
CSS_UNIT: new RegExp(CSS_UNIT),
rgb: new RegExp('rgb' + PERMISSIVE_MATCH3),
rgba: new RegExp('rgba' + PERMISSIVE_MATCH4),
hsl: new RegExp('hsl' + PERMISSIVE_MATCH3),
hsla: new RegExp('hsla' + PERMISSIVE_MATCH4),
hsv: new RegExp('hsv' + PERMISSIVE_MATCH3),
hsva: new RegExp('hsva' + PERMISSIVE_MATCH4),
hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,
hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,
}
function stringInputToObject(color2) {
color2 = color2.trim().toLowerCase()
if (color2.length === 0) {
return false
}
var named = false
if (names[color2]) {
color2 = names[color2]
named = true
} else if (color2 === 'transparent') {
return { r: 0, g: 0, b: 0, a: 0, format: 'name' }
}
var match2 = matchers.rgb.exec(color2)
if (match2) {
return { r: match2[1], g: match2[2], b: match2[3] }
}
match2 = matchers.rgba.exec(color2)
if (match2) {
return { r: match2[1], g: match2[2], b: match2[3], a: match2[4] }
}
match2 = matchers.hsl.exec(color2)
if (match2) {
return { h: match2[1], s: match2[2], l: match2[3] }
}
match2 = matchers.hsla.exec(color2)
if (match2) {
return { h: match2[1], s: match2[2], l: match2[3], a: match2[4] }
}
match2 = matchers.hsv.exec(color2)
if (match2) {
return { h: match2[1], s: match2[2], v: match2[3] }
}
match2 = matchers.hsva.exec(color2)
if (match2) {
return { h: match2[1], s: match2[2], v: match2[3], a: match2[4] }
}
match2 = matchers.hex8.exec(color2)
if (match2) {
return {
r: parseIntFromHex(match2[1]),
g: parseIntFromHex(match2[2]),
b: parseIntFromHex(match2[3]),
a: convertHexToDecimal(match2[4]),
format: named ? 'name' : 'hex8',
}
}
match2 = matchers.hex6.exec(color2)
if (match2) {
return {
r: parseIntFromHex(match2[1]),
g: parseIntFromHex(match2[2]),
b: parseIntFromHex(match2[3]),
format: named ? 'name' : 'hex',
}
}
match2 = matchers.hex4.exec(color2)
if (match2) {
return {
r: parseIntFromHex(match2[1] + match2[1]),
g: parseIntFromHex(match2[2] + match2[2]),
b: parseIntFromHex(match2[3] + match2[3]),
a: convertHexToDecimal(match2[4] + match2[4]),
format: named ? 'name' : 'hex8',
}
}
match2 = matchers.hex3.exec(color2)
if (match2) {
return {
r: parseIntFromHex(match2[1] + match2[1]),
g: parseIntFromHex(match2[2] + match2[2]),
b: parseIntFromHex(match2[3] + match2[3]),
format: named ? 'name' : 'hex',
}
}
return false
}
function isValidCSSUnit(color2) {
return Boolean(matchers.CSS_UNIT.exec(String(color2)))
}
var TinyColor = (function () {
function TinyColor2(color2, opts) {
if (color2 === void 0) {
color2 = ''
}
if (opts === void 0) {
opts = {}
}
var _a2
if (color2 instanceof TinyColor2) {
return color2
}
if (typeof color2 === 'number') {
color2 = numberInputToObject(color2)
}
this.originalInput = color2
var rgb2 = inputToRGB(color2)
this.originalInput = color2
this.r = rgb2.r
this.g = rgb2.g
this.b = rgb2.b
this.a = rgb2.a
this.roundA = Math.round(100 * this.a) / 100
this.format =
(_a2 = opts.format) !== null && _a2 !== void 0 ? _a2 : rgb2.format
this.gradientType = opts.gradientType
if (this.r < 1) {
this.r = Math.round(this.r)
}
if (this.g < 1) {
this.g = Math.round(this.g)
}
if (this.b < 1) {
this.b = Math.round(this.b)
}
this.isValid = rgb2.ok
}
TinyColor2.prototype.isDark = function () {
return this.getBrightness() < 128
}
TinyColor2.prototype.isLight = function () {
return !this.isDark()
}
TinyColor2.prototype.getBrightness = function () {
var rgb2 = this.toRgb()
return (rgb2.r * 299 + rgb2.g * 587 + rgb2.b * 114) / 1e3
}
TinyColor2.prototype.getLuminance = function () {
var rgb2 = this.toRgb()
var R2
var G2
var B3
var RsRGB = rgb2.r / 255
var GsRGB = rgb2.g / 255
var BsRGB = rgb2.b / 255
if (RsRGB <= 0.03928) {
R2 = RsRGB / 12.92
} else {
R2 = Math.pow((RsRGB + 0.055) / 1.055, 2.4)
}
if (GsRGB <= 0.03928) {
G2 = GsRGB / 12.92
} else {
G2 = Math.pow((GsRGB + 0.055) / 1.055, 2.4)
}
if (BsRGB <= 0.03928) {
B3 = BsRGB / 12.92
} else {
B3 = Math.pow((BsRGB + 0.055) / 1.055, 2.4)
}
return 0.2126 * R2 + 0.7152 * G2 + 0.0722 * B3
}
TinyColor2.prototype.getAlpha = function () {
return this.a
}
TinyColor2.prototype.setAlpha = function (alpha) {
this.a = boundAlpha(alpha)
this.roundA = Math.round(100 * this.a) / 100
return this
}
TinyColor2.prototype.isMonochrome = function () {
var s2 = this.toHsl().s
return s2 === 0
}
TinyColor2.prototype.toHsv = function () {
var hsv = rgbToHsv(this.r, this.g, this.b)
return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this.a }
}
TinyColor2.prototype.toHsvString = function () {
var hsv = rgbToHsv(this.r, this.g, this.b)
var h2 = Math.round(hsv.h * 360)
var s2 = Math.round(hsv.s * 100)
var v4 = Math.round(hsv.v * 100)
return this.a === 1
? 'hsv('.concat(h2, ', ').concat(s2, '%, ').concat(v4, '%)')
: 'hsva('
.concat(h2, ', ')
.concat(s2, '%, ')
.concat(v4, '%, ')
.concat(this.roundA, ')')
}
TinyColor2.prototype.toHsl = function () {
var hsl2 = rgbToHsl(this.r, this.g, this.b)
return { h: hsl2.h * 360, s: hsl2.s, l: hsl2.l, a: this.a }
}
TinyColor2.prototype.toHslString = function () {
var hsl2 = rgbToHsl(this.r, this.g, this.b)
var h2 = Math.round(hsl2.h * 360)
var s2 = Math.round(hsl2.s * 100)
var l2 = Math.round(hsl2.l * 100)
return this.a === 1
? 'hsl('.concat(h2, ', ').concat(s2, '%, ').concat(l2, '%)')
: 'hsla('
.concat(h2, ', ')
.concat(s2, '%, ')
.concat(l2, '%, ')
.concat(this.roundA, ')')
}
TinyColor2.prototype.toHex = function (allow3Char) {
if (allow3Char === void 0) {
allow3Char = false
}
return rgbToHex(this.r, this.g, this.b, allow3Char)
}
TinyColor2.prototype.toHexString = function (allow3Char) {
if (allow3Char === void 0) {
allow3Char = false
}
return '#' + this.toHex(allow3Char)
}
TinyColor2.prototype.toHex8 = function (allow4Char) {
if (allow4Char === void 0) {
allow4Char = false
}
return rgbaToHex(this.r, this.g, this.b, this.a, allow4Char)
}
TinyColor2.prototype.toHex8String = function (allow4Char) {
if (allow4Char === void 0) {
allow4Char = false
}
return '#' + this.toHex8(allow4Char)
}
TinyColor2.prototype.toHexShortString = function (allowShortChar) {
if (allowShortChar === void 0) {
allowShortChar = false
}
return this.a === 1
? this.toHexString(allowShortChar)
: this.toHex8String(allowShortChar)
}
TinyColor2.prototype.toRgb = function () {
return {
r: Math.round(this.r),
g: Math.round(this.g),
b: Math.round(this.b),
a: this.a,
}
}
TinyColor2.prototype.toRgbString = function () {
var r2 = Math.round(this.r)
var g2 = Math.round(this.g)
var b2 = Math.round(this.b)
return this.a === 1
? 'rgb('.concat(r2, ', ').concat(g2, ', ').concat(b2, ')')
: 'rgba('
.concat(r2, ', ')
.concat(g2, ', ')
.concat(b2, ', ')
.concat(this.roundA, ')')
}
TinyColor2.prototype.toPercentageRgb = function () {
var fmt = function (x2) {
return ''.concat(Math.round(bound01$1(x2, 255) * 100), '%')
}
return {
r: fmt(this.r),
g: fmt(this.g),
b: fmt(this.b),
a: this.a,
}
}
TinyColor2.prototype.toPercentageRgbString = function () {
var rnd = function (x2) {
return Math.round(bound01$1(x2, 255) * 100)
}
return this.a === 1
? 'rgb('
.concat(rnd(this.r), '%, ')
.concat(rnd(this.g), '%, ')
.concat(rnd(this.b), '%)')
: 'rgba('
.concat(rnd(this.r), '%, ')
.concat(rnd(this.g), '%, ')
.concat(rnd(this.b), '%, ')
.concat(this.roundA, ')')
}
TinyColor2.prototype.toName = function () {
if (this.a === 0) {
return 'transparent'
}
if (this.a < 1) {
return false
}
var hex2 = '#' + rgbToHex(this.r, this.g, this.b, false)
for (var _i = 0, _a2 = Object.entries(names); _i < _a2.length; _i++) {
var _b2 = _a2[_i],
key2 = _b2[0],
value2 = _b2[1]
if (hex2 === value2) {
return key2
}
}
return false
}
TinyColor2.prototype.toString = function (format2) {
var formatSet = Boolean(format2)
format2 = format2 !== null && format2 !== void 0 ? format2 : this.format
var formattedString = false
var hasAlpha = this.a < 1 && this.a >= 0
var needsAlphaFormat =
!formatSet &&
hasAlpha &&
(format2.startsWith('hex') || format2 === 'name')
if (needsAlphaFormat) {
if (format2 === 'name' && this.a === 0) {
return this.toName()
}
return this.toRgbString()
}
if (format2 === 'rgb') {
formattedString = this.toRgbString()
}
if (format2 === 'prgb') {
formattedString = this.toPercentageRgbString()
}
if (format2 === 'hex' || format2 === 'hex6') {
formattedString = this.toHexString()
}
if (format2 === 'hex3') {
formattedString = this.toHexString(true)
}
if (format2 === 'hex4') {
formattedString = this.toHex8String(true)
}
if (format2 === 'hex8') {
formattedString = this.toHex8String()
}
if (format2 === 'name') {
formattedString = this.toName()
}
if (format2 === 'hsl') {
formattedString = this.toHslString()
}
if (format2 === 'hsv') {
formattedString = this.toHsvString()
}
return formattedString || this.toHexString()
}
TinyColor2.prototype.toNumber = function () {
return (
(Math.round(this.r) << 16) +
(Math.round(this.g) << 8) +
Math.round(this.b)
)
}
TinyColor2.prototype.clone = function () {
return new TinyColor2(this.toString())
}
TinyColor2.prototype.lighten = function (amount) {
if (amount === void 0) {
amount = 10
}
var hsl2 = this.toHsl()
hsl2.l += amount / 100
hsl2.l = clamp01(hsl2.l)
return new TinyColor2(hsl2)
}
TinyColor2.prototype.brighten = function (amount) {
if (amount === void 0) {
amount = 10
}
var rgb2 = this.toRgb()
rgb2.r = Math.max(
0,
Math.min(255, rgb2.r - Math.round(255 * -(amount / 100)))
)
rgb2.g = Math.max(
0,
Math.min(255, rgb2.g - Math.round(255 * -(amount / 100)))
)
rgb2.b = Math.max(
0,
Math.min(255, rgb2.b - Math.round(255 * -(amount / 100)))
)
return new TinyColor2(rgb2)
}
TinyColor2.prototype.darken = function (amount) {
if (amount === void 0) {
amount = 10
}
var hsl2 = this.toHsl()
hsl2.l -= amount / 100
hsl2.l = clamp01(hsl2.l)
return new TinyColor2(hsl2)
}
TinyColor2.prototype.tint = function (amount) {
if (amount === void 0) {
amount = 10
}
return this.mix('white', amount)
}
TinyColor2.prototype.shade = function (amount) {
if (amount === void 0) {
amount = 10
}
return this.mix('black', amount)
}
TinyColor2.prototype.desaturate = function (amount) {
if (amount === void 0) {
amount = 10
}
var hsl2 = this.toHsl()
hsl2.s -= amount / 100
hsl2.s = clamp01(hsl2.s)
return new TinyColor2(hsl2)
}
TinyColor2.prototype.saturate = function (amount) {
if (amount === void 0) {
amount = 10
}
var hsl2 = this.toHsl()
hsl2.s += amount / 100
hsl2.s = clamp01(hsl2.s)
return new TinyColor2(hsl2)
}
TinyColor2.prototype.greyscale = function () {
return this.desaturate(100)
}
TinyColor2.prototype.spin = function (amount) {
var hsl2 = this.toHsl()
var hue = (hsl2.h + amount) % 360
hsl2.h = hue < 0 ? 360 + hue : hue
return new TinyColor2(hsl2)
}
TinyColor2.prototype.mix = function (color2, amount) {
if (amount === void 0) {
amount = 50
}
var rgb1 = this.toRgb()
var rgb2 = new TinyColor2(color2).toRgb()
var p2 = amount / 100
var rgba = {
r: (rgb2.r - rgb1.r) * p2 + rgb1.r,
g: (rgb2.g - rgb1.g) * p2 + rgb1.g,
b: (rgb2.b - rgb1.b) * p2 + rgb1.b,
a: (rgb2.a - rgb1.a) * p2 + rgb1.a,
}
return new TinyColor2(rgba)
}
TinyColor2.prototype.analogous = function (results, slices) {
if (results === void 0) {
results = 6
}
if (slices === void 0) {
slices = 30
}
var hsl2 = this.toHsl()
var part = 360 / slices
var ret = [this]
for (hsl2.h = (hsl2.h - ((part * results) >> 1) + 720) % 360; --results; ) {
hsl2.h = (hsl2.h + part) % 360
ret.push(new TinyColor2(hsl2))
}
return ret
}
TinyColor2.prototype.complement = function () {
var hsl2 = this.toHsl()
hsl2.h = (hsl2.h + 180) % 360
return new TinyColor2(hsl2)
}
TinyColor2.prototype.monochromatic = function (results) {
if (results === void 0) {
results = 6
}
var hsv = this.toHsv()
var h2 = hsv.h
var s2 = hsv.s
var v4 = hsv.v
var res = []
var modification = 1 / results
while (results--) {
res.push(new TinyColor2({ h: h2, s: s2, v: v4 }))
v4 = (v4 + modification) % 1
}
return res
}
TinyColor2.prototype.splitcomplement = function () {
var hsl2 = this.toHsl()
var h2 = hsl2.h
return [
this,
new TinyColor2({ h: (h2 + 72) % 360, s: hsl2.s, l: hsl2.l }),
new TinyColor2({ h: (h2 + 216) % 360, s: hsl2.s, l: hsl2.l }),
]
}
TinyColor2.prototype.onBackground = function (background) {
var fg = this.toRgb()
var bg2 = new TinyColor2(background).toRgb()
var alpha = fg.a + bg2.a * (1 - fg.a)
return new TinyColor2({
r: (fg.r * fg.a + bg2.r * bg2.a * (1 - fg.a)) / alpha,
g: (fg.g * fg.a + bg2.g * bg2.a * (1 - fg.a)) / alpha,
b: (fg.b * fg.a + bg2.b * bg2.a * (1 - fg.a)) / alpha,
a: alpha,
})
}
TinyColor2.prototype.triad = function () {
return this.polyad(3)
}
TinyColor2.prototype.tetrad = function () {
return this.polyad(4)
}
TinyColor2.prototype.polyad = function (n2) {
var hsl2 = this.toHsl()
var h2 = hsl2.h
var result = [this]
var increment = 360 / n2
for (var i2 = 1; i2 < n2; i2++) {
result.push(
new TinyColor2({ h: (h2 + i2 * increment) % 360, s: hsl2.s, l: hsl2.l })
)
}
return result
}
TinyColor2.prototype.equals = function (color2) {
return this.toRgbString() === new TinyColor2(color2).toRgbString()
}
return TinyColor2
})()
const buttonTypes = [
'default',
'primary',
'success',
'warning',
'info',
'danger',
'text',
'',
]
const buttonNativeTypes = ['button', 'submit', 'reset']
const buttonProps = buildProps({
size: useSizeProp,
disabled: Boolean,
type: {
type: String,
values: buttonTypes,
default: '',
},
icon: {
type: iconPropType,
default: '',
},
nativeType: {
type: String,
values: buttonNativeTypes,
default: 'button',
},
loading: Boolean,
loadingIcon: {
type: iconPropType,
default: () => loading,
},
plain: Boolean,
autofocus: Boolean,
round: Boolean,
circle: Boolean,
color: String,
autoInsertSpace: {
type: Boolean,
default: void 0,
},
})
const buttonEmits = {
click: (evt) => evt instanceof MouseEvent,
}
const _hoisted_1$6V = ['disabled', 'autofocus', 'type']
const __default__$B = {
name: 'ElButton',
}
const _sfc_main$91 = /* @__PURE__ */ defineComponent({
...__default__$B,
props: buttonProps,
emits: buttonEmits,
setup(__props2, { expose, emit: emit2 }) {
const props2 = __props2
const slots = useSlots()
const buttonGroupContext = inject(buttonGroupContextKey, void 0)
const globalConfig2 = useGlobalConfig('button')
const ns = useNamespace('button')
const { form: form2 } = useFormItem()
const _size = useSize$1(
computed(() =>
buttonGroupContext == null ? void 0 : buttonGroupContext.size
)
)
const _disabled = useDisabled$1()
const _ref2 = ref()
const _type = computed(
() =>
props2.type ||
(buttonGroupContext == null ? void 0 : buttonGroupContext.type) ||
''
)
const autoInsertSpace = computed(() => {
var _a2, _b2, _c2
return (_c2 =
(_b2 = props2.autoInsertSpace) != null
? _b2
: (_a2 = globalConfig2.value) == null
? void 0
: _a2.autoInsertSpace) != null
? _c2
: false
})
const shouldAddSpace = computed(() => {
var _a2
const defaultSlot =
(_a2 = slots.default) == null ? void 0 : _a2.call(slots)
if (
autoInsertSpace.value &&
(defaultSlot == null ? void 0 : defaultSlot.length) === 1
) {
const slot = defaultSlot[0]
if ((slot == null ? void 0 : slot.type) === Text) {
const text2 = slot.children
return /^\p{Unified_Ideograph}{2}$/u.test(text2.trim())
}
}
return false
})
const buttonStyle = computed(() => {
let styles = {}
const buttonColor = props2.color
if (buttonColor) {
const color2 = new TinyColor(buttonColor)
const shadeBgColor = color2.shade(20).toString()
if (props2.plain) {
styles = {
'--el-button-bg-color': color2.tint(90).toString(),
'--el-button-text-color': buttonColor,
'--el-button-hover-text-color': 'var(--el-color-white)',
'--el-button-hover-bg-color': buttonColor,
'--el-button-hover-border-color': buttonColor,
'--el-button-active-bg-color': shadeBgColor,
'--el-button-active-text-color': 'var(--el-color-white)',
'--el-button-active-border-color': shadeBgColor,
}
} else {
const tintBgColor = color2.tint(30).toString()
styles = {
'--el-button-bg-color': buttonColor,
'--el-button-border-color': buttonColor,
'--el-button-hover-bg-color': tintBgColor,
'--el-button-hover-border-color': tintBgColor,
'--el-button-active-bg-color': shadeBgColor,
'--el-button-active-border-color': shadeBgColor,
}
}
if (_disabled.value) {
const disabledButtonColor = color2.tint(50).toString()
styles['--el-button-disabled-bg-color'] = disabledButtonColor
styles['--el-button-disabled-border-color'] = disabledButtonColor
}
}
return styles
})
const handleClick2 = (evt) => {
if (props2.nativeType === 'reset') {
form2 == null ? void 0 : form2.resetFields()
}
emit2('click', evt)
}
expose({
ref: _ref2,
size: _size,
type: _type,
disabled: _disabled,
shouldAddSpace,
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'button',
{
ref_key: '_ref',
ref: _ref2,
class: normalizeClass([
unref(ns).b(),
unref(ns).m(unref(_type)),
unref(ns).m(unref(_size)),
unref(ns).is('disabled', unref(_disabled)),
unref(ns).is('loading', _ctx.loading),
unref(ns).is('plain', _ctx.plain),
unref(ns).is('round', _ctx.round),
unref(ns).is('circle', _ctx.circle),
]),
disabled: unref(_disabled) || _ctx.loading,
autofocus: _ctx.autofocus,
type: _ctx.nativeType,
style: normalizeStyle$1(unref(buttonStyle)),
onClick: handleClick2,
},
[
_ctx.loading
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
_ctx.$slots.loading
? renderSlot(_ctx.$slots, 'loading', { key: 0 })
: (openBlock(),
createBlock(
unref(ElIcon),
{
key: 1,
class: normalizeClass(unref(ns).is('loading')),
},
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(_ctx.loadingIcon)
)),
]),
_: 1,
},
8,
['class']
)),
],
2112
))
: _ctx.icon || _ctx.$slots.icon
? (openBlock(),
createBlock(
unref(ElIcon),
{ key: 1 },
{
default: withCtx(() => [
_ctx.icon
? (openBlock(),
createBlock(resolveDynamicComponent(_ctx.icon), {
key: 0,
}))
: renderSlot(_ctx.$slots, 'icon', { key: 1 }),
]),
_: 3,
}
))
: createCommentVNode('v-if', true),
_ctx.$slots.default
? (openBlock(),
createElementBlock(
'span',
{
key: 2,
class: normalizeClass({
[unref(ns).em('text', 'expand')]: unref(shouldAddSpace),
}),
},
[renderSlot(_ctx.$slots, 'default')],
2
))
: createCommentVNode('v-if', true),
],
14,
_hoisted_1$6V
)
)
}
},
})
var Button$1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$91, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/button/src/button.vue',
],
])
const buttonGroupProps = {
size: buttonProps.size,
type: buttonProps.type,
}
const __default__$A = {
name: 'ElButtonGroup',
}
const _sfc_main$90 = /* @__PURE__ */ defineComponent({
...__default__$A,
props: buttonGroupProps,
setup(__props2) {
const props2 = __props2
provide(
buttonGroupContextKey,
reactive({
size: toRef(props2, 'size'),
type: toRef(props2, 'type'),
})
)
const ns = useNamespace('button')
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass(`${unref(ns).b('group')}`),
},
[renderSlot(_ctx.$slots, 'default')],
2
)
)
}
},
})
var ButtonGroup = /* @__PURE__ */ _export_sfc$1(_sfc_main$90, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/button/src/button-group.vue',
],
])
const ElButton = withInstall(Button$1, {
ButtonGroup,
})
const ElButtonGroup$1 = withNoopInstall(ButtonGroup)
var commonjsGlobal =
typeof globalThis !== 'undefined'
? globalThis
: typeof window !== 'undefined'
? window
: typeof global !== 'undefined'
? global
: typeof self !== 'undefined'
? self
: {}
function getDefaultExportFromCjs(x2) {
return x2 &&
x2.__esModule &&
Object.prototype.hasOwnProperty.call(x2, 'default')
? x2['default']
: x2
}
function commonjsRequire(path) {
throw new Error(
'Could not dynamically require "' +
path +
'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.'
)
}
var dayjs_min$1 = { exports: {} }
;(function (module2, exports2) {
!(function (t3, e2) {
module2.exports = e2()
})(commonjsGlobal, function () {
var t3 = 1e3,
e2 = 6e4,
n2 = 36e5,
r2 = 'millisecond',
i2 = 'second',
s2 = 'minute',
u2 = 'hour',
a2 = 'day',
o2 = 'week',
c2 = 'month',
f2 = 'quarter',
h2 = 'year',
d3 = 'date',
l2 = 'Invalid Date',
$2 =
/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,
y2 =
/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,
M2 = {
name: 'en',
weekdays:
'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
months:
'January_February_March_April_May_June_July_August_September_October_November_December'.split(
'_'
),
ordinal: function (t4) {
var e3 = ['th', 'st', 'nd', 'rd'],
n3 = t4 % 100
return '[' + t4 + (e3[(n3 - 20) % 10] || e3[n3] || e3[0]) + ']'
},
},
m2 = function (t4, e3, n3) {
var r3 = String(t4)
return !r3 || r3.length >= e3
? t4
: '' + Array(e3 + 1 - r3.length).join(n3) + t4
},
v4 = {
s: m2,
z: function (t4) {
var e3 = -t4.utcOffset(),
n3 = Math.abs(e3),
r3 = Math.floor(n3 / 60),
i3 = n3 % 60
return (e3 <= 0 ? '+' : '-') + m2(r3, 2, '0') + ':' + m2(i3, 2, '0')
},
m: function t4(e3, n3) {
if (e3.date() < n3.date()) return -t4(n3, e3)
var r3 = 12 * (n3.year() - e3.year()) + (n3.month() - e3.month()),
i3 = e3.clone().add(r3, c2),
s3 = n3 - i3 < 0,
u3 = e3.clone().add(r3 + (s3 ? -1 : 1), c2)
return +(-(r3 + (n3 - i3) / (s3 ? i3 - u3 : u3 - i3)) || 0)
},
a: function (t4) {
return t4 < 0 ? Math.ceil(t4) || 0 : Math.floor(t4)
},
p: function (t4) {
return (
{
M: c2,
y: h2,
w: o2,
d: a2,
D: d3,
h: u2,
m: s2,
s: i2,
ms: r2,
Q: f2,
}[t4] ||
String(t4 || '')
.toLowerCase()
.replace(/s$/, '')
)
},
u: function (t4) {
return void 0 === t4
},
},
g2 = 'en',
D2 = {}
D2[g2] = M2
var p2 = '$isDayjsObject',
S2 = function (t4) {
return t4 instanceof _2 || !(!t4 || !t4[p2])
},
w2 = function t4(e3, n3, r3) {
var i3
if (!e3) return g2
if ('string' == typeof e3) {
var s3 = e3.toLowerCase()
D2[s3] && (i3 = s3), n3 && ((D2[s3] = n3), (i3 = s3))
var u3 = e3.split('-')
if (!i3 && u3.length > 1) return t4(u3[0])
} else {
var a3 = e3.name
;(D2[a3] = e3), (i3 = a3)
}
return !r3 && i3 && (g2 = i3), i3 || (!r3 && g2)
},
O2 = function (t4, e3) {
if (S2(t4)) return t4.clone()
var n3 = 'object' == typeof e3 ? e3 : {}
return (n3.date = t4), (n3.args = arguments), new _2(n3)
},
b2 = v4
;(b2.l = w2),
(b2.i = S2),
(b2.w = function (t4, e3) {
return O2(t4, {
locale: e3.$L,
utc: e3.$u,
x: e3.$x,
$offset: e3.$offset,
})
})
var _2 = (function () {
function M3(t4) {
;(this.$L = w2(t4.locale, null, true)),
this.parse(t4),
(this.$x = this.$x || t4.x || {}),
(this[p2] = true)
}
var m3 = M3.prototype
return (
(m3.parse = function (t4) {
;(this.$d = (function (t5) {
var e3 = t5.date,
n3 = t5.utc
if (null === e3) return new Date(NaN)
if (b2.u(e3)) return new Date()
if (e3 instanceof Date) return new Date(e3)
if ('string' == typeof e3 && !/Z$/i.test(e3)) {
var r3 = e3.match($2)
if (r3) {
var i3 = r3[2] - 1 || 0,
s3 = (r3[7] || '0').substring(0, 3)
return n3
? new Date(
Date.UTC(
r3[1],
i3,
r3[3] || 1,
r3[4] || 0,
r3[5] || 0,
r3[6] || 0,
s3
)
)
: new Date(
r3[1],
i3,
r3[3] || 1,
r3[4] || 0,
r3[5] || 0,
r3[6] || 0,
s3
)
}
}
return new Date(e3)
})(t4)),
this.init()
}),
(m3.init = function () {
var t4 = this.$d
;(this.$y = t4.getFullYear()),
(this.$M = t4.getMonth()),
(this.$D = t4.getDate()),
(this.$W = t4.getDay()),
(this.$H = t4.getHours()),
(this.$m = t4.getMinutes()),
(this.$s = t4.getSeconds()),
(this.$ms = t4.getMilliseconds())
}),
(m3.$utils = function () {
return b2
}),
(m3.isValid = function () {
return !(this.$d.toString() === l2)
}),
(m3.isSame = function (t4, e3) {
var n3 = O2(t4)
return this.startOf(e3) <= n3 && n3 <= this.endOf(e3)
}),
(m3.isAfter = function (t4, e3) {
return O2(t4) < this.startOf(e3)
}),
(m3.isBefore = function (t4, e3) {
return this.endOf(e3) < O2(t4)
}),
(m3.$g = function (t4, e3, n3) {
return b2.u(t4) ? this[e3] : this.set(n3, t4)
}),
(m3.unix = function () {
return Math.floor(this.valueOf() / 1e3)
}),
(m3.valueOf = function () {
return this.$d.getTime()
}),
(m3.startOf = function (t4, e3) {
var n3 = this,
r3 = !!b2.u(e3) || e3,
f3 = b2.p(t4),
l3 = function (t5, e4) {
var i3 = b2.w(
n3.$u ? Date.UTC(n3.$y, e4, t5) : new Date(n3.$y, e4, t5),
n3
)
return r3 ? i3 : i3.endOf(a2)
},
$3 = function (t5, e4) {
return b2.w(
n3
.toDate()
[t5].apply(
n3.toDate('s'),
(r3 ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(e4)
),
n3
)
},
y3 = this.$W,
M4 = this.$M,
m4 = this.$D,
v5 = 'set' + (this.$u ? 'UTC' : '')
switch (f3) {
case h2:
return r3 ? l3(1, 0) : l3(31, 11)
case c2:
return r3 ? l3(1, M4) : l3(0, M4 + 1)
case o2:
var g3 = this.$locale().weekStart || 0,
D3 = (y3 < g3 ? y3 + 7 : y3) - g3
return l3(r3 ? m4 - D3 : m4 + (6 - D3), M4)
case a2:
case d3:
return $3(v5 + 'Hours', 0)
case u2:
return $3(v5 + 'Minutes', 1)
case s2:
return $3(v5 + 'Seconds', 2)
case i2:
return $3(v5 + 'Milliseconds', 3)
default:
return this.clone()
}
}),
(m3.endOf = function (t4) {
return this.startOf(t4, false)
}),
(m3.$set = function (t4, e3) {
var n3,
o3 = b2.p(t4),
f3 = 'set' + (this.$u ? 'UTC' : ''),
l3 = ((n3 = {}),
(n3[a2] = f3 + 'Date'),
(n3[d3] = f3 + 'Date'),
(n3[c2] = f3 + 'Month'),
(n3[h2] = f3 + 'FullYear'),
(n3[u2] = f3 + 'Hours'),
(n3[s2] = f3 + 'Minutes'),
(n3[i2] = f3 + 'Seconds'),
(n3[r2] = f3 + 'Milliseconds'),
n3)[o3],
$3 = o3 === a2 ? this.$D + (e3 - this.$W) : e3
if (o3 === c2 || o3 === h2) {
var y3 = this.clone().set(d3, 1)
y3.$d[l3]($3),
y3.init(),
(this.$d = y3.set(d3, Math.min(this.$D, y3.daysInMonth())).$d)
} else l3 && this.$d[l3]($3)
return this.init(), this
}),
(m3.set = function (t4, e3) {
return this.clone().$set(t4, e3)
}),
(m3.get = function (t4) {
return this[b2.p(t4)]()
}),
(m3.add = function (r3, f3) {
var d4,
l3 = this
r3 = Number(r3)
var $3 = b2.p(f3),
y3 = function (t4) {
var e3 = O2(l3)
return b2.w(e3.date(e3.date() + Math.round(t4 * r3)), l3)
}
if ($3 === c2) return this.set(c2, this.$M + r3)
if ($3 === h2) return this.set(h2, this.$y + r3)
if ($3 === a2) return y3(1)
if ($3 === o2) return y3(7)
var M4 =
((d4 = {}), (d4[s2] = e2), (d4[u2] = n2), (d4[i2] = t3), d4)[
$3
] || 1,
m4 = this.$d.getTime() + r3 * M4
return b2.w(m4, this)
}),
(m3.subtract = function (t4, e3) {
return this.add(-1 * t4, e3)
}),
(m3.format = function (t4) {
var e3 = this,
n3 = this.$locale()
if (!this.isValid()) return n3.invalidDate || l2
var r3 = t4 || 'YYYY-MM-DDTHH:mm:ssZ',
i3 = b2.z(this),
s3 = this.$H,
u3 = this.$m,
a3 = this.$M,
o3 = n3.weekdays,
c3 = n3.months,
f3 = n3.meridiem,
h3 = function (t5, n4, i4, s4) {
return (t5 && (t5[n4] || t5(e3, r3))) || i4[n4].slice(0, s4)
},
d4 = function (t5) {
return b2.s(s3 % 12 || 12, t5, '0')
},
$3 =
f3 ||
function (t5, e4, n4) {
var r4 = t5 < 12 ? 'AM' : 'PM'
return n4 ? r4.toLowerCase() : r4
}
return r3.replace(y2, function (t5, r4) {
return (
r4 ||
(function (t6) {
switch (t6) {
case 'YY':
return String(e3.$y).slice(-2)
case 'YYYY':
return b2.s(e3.$y, 4, '0')
case 'M':
return a3 + 1
case 'MM':
return b2.s(a3 + 1, 2, '0')
case 'MMM':
return h3(n3.monthsShort, a3, c3, 3)
case 'MMMM':
return h3(c3, a3)
case 'D':
return e3.$D
case 'DD':
return b2.s(e3.$D, 2, '0')
case 'd':
return String(e3.$W)
case 'dd':
return h3(n3.weekdaysMin, e3.$W, o3, 2)
case 'ddd':
return h3(n3.weekdaysShort, e3.$W, o3, 3)
case 'dddd':
return o3[e3.$W]
case 'H':
return String(s3)
case 'HH':
return b2.s(s3, 2, '0')
case 'h':
return d4(1)
case 'hh':
return d4(2)
case 'a':
return $3(s3, u3, true)
case 'A':
return $3(s3, u3, false)
case 'm':
return String(u3)
case 'mm':
return b2.s(u3, 2, '0')
case 's':
return String(e3.$s)
case 'ss':
return b2.s(e3.$s, 2, '0')
case 'SSS':
return b2.s(e3.$ms, 3, '0')
case 'Z':
return i3
}
return null
})(t5) ||
i3.replace(':', '')
)
})
}),
(m3.utcOffset = function () {
return 15 * -Math.round(this.$d.getTimezoneOffset() / 15)
}),
(m3.diff = function (r3, d4, l3) {
var $3,
y3 = this,
M4 = b2.p(d4),
m4 = O2(r3),
v5 = (m4.utcOffset() - this.utcOffset()) * e2,
g3 = this - m4,
D3 = function () {
return b2.m(y3, m4)
}
switch (M4) {
case h2:
$3 = D3() / 12
break
case c2:
$3 = D3()
break
case f2:
$3 = D3() / 3
break
case o2:
$3 = (g3 - v5) / 6048e5
break
case a2:
$3 = (g3 - v5) / 864e5
break
case u2:
$3 = g3 / n2
break
case s2:
$3 = g3 / e2
break
case i2:
$3 = g3 / t3
break
default:
$3 = g3
}
return l3 ? $3 : b2.a($3)
}),
(m3.daysInMonth = function () {
return this.endOf(c2).$D
}),
(m3.$locale = function () {
return D2[this.$L]
}),
(m3.locale = function (t4, e3) {
if (!t4) return this.$L
var n3 = this.clone(),
r3 = w2(t4, e3, true)
return r3 && (n3.$L = r3), n3
}),
(m3.clone = function () {
return b2.w(this.$d, this)
}),
(m3.toDate = function () {
return new Date(this.valueOf())
}),
(m3.toJSON = function () {
return this.isValid() ? this.toISOString() : null
}),
(m3.toISOString = function () {
return this.$d.toISOString()
}),
(m3.toString = function () {
return this.$d.toUTCString()
}),
M3
)
})(),
k2 = _2.prototype
return (
(O2.prototype = k2),
[
['$ms', r2],
['$s', i2],
['$m', s2],
['$H', u2],
['$W', a2],
['$M', c2],
['$y', h2],
['$D', d3],
].forEach(function (t4) {
k2[t4[1]] = function (e3) {
return this.$g(e3, t4[0], t4[1])
}
}),
(O2.extend = function (t4, e3) {
return t4.$i || (t4(e3, _2, O2), (t4.$i = true)), O2
}),
(O2.locale = w2),
(O2.isDayjs = S2),
(O2.unix = function (t4) {
return O2(1e3 * t4)
}),
(O2.en = D2[g2]),
(O2.Ls = D2),
(O2.p = {}),
O2
)
})
})(dayjs_min$1)
var dayjs = dayjs_min$1.exports
var dayjs_min = /* @__PURE__ */ _mergeNamespaces(
{
__proto__: null,
default: dayjs,
},
[dayjs_min$1.exports]
)
var localeData$1 = { exports: {} }
;(function (module2, exports2) {
!(function (n2, e2) {
module2.exports = e2()
})(commonjsGlobal, function () {
return function (n2, e2, t3) {
var r2 = e2.prototype,
o2 = function (n3) {
return n3 && (n3.indexOf ? n3 : n3.s)
},
u2 = function (n3, e3, t4, r3, u3) {
var i3 = n3.name ? n3 : n3.$locale(),
a3 = o2(i3[e3]),
s3 = o2(i3[t4]),
f2 =
a3 ||
s3.map(function (n4) {
return n4.slice(0, r3)
})
if (!u3) return f2
var d3 = i3.weekStart
return f2.map(function (n4, e4) {
return f2[(e4 + (d3 || 0)) % 7]
})
},
i2 = function () {
return t3.Ls[t3.locale()]
},
a2 = function (n3, e3) {
return (
n3.formats[e3] ||
(function (n4) {
return n4.replace(
/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,
function (n5, e4, t4) {
return e4 || t4.slice(1)
}
)
})(n3.formats[e3.toUpperCase()])
)
},
s2 = function () {
var n3 = this
return {
months: function (e3) {
return e3 ? e3.format('MMMM') : u2(n3, 'months')
},
monthsShort: function (e3) {
return e3 ? e3.format('MMM') : u2(n3, 'monthsShort', 'months', 3)
},
firstDayOfWeek: function () {
return n3.$locale().weekStart || 0
},
weekdays: function (e3) {
return e3 ? e3.format('dddd') : u2(n3, 'weekdays')
},
weekdaysMin: function (e3) {
return e3 ? e3.format('dd') : u2(n3, 'weekdaysMin', 'weekdays', 2)
},
weekdaysShort: function (e3) {
return e3
? e3.format('ddd')
: u2(n3, 'weekdaysShort', 'weekdays', 3)
},
longDateFormat: function (e3) {
return a2(n3.$locale(), e3)
},
meridiem: this.$locale().meridiem,
ordinal: this.$locale().ordinal,
}
}
;(r2.localeData = function () {
return s2.bind(this)()
}),
(t3.localeData = function () {
var n3 = i2()
return {
firstDayOfWeek: function () {
return n3.weekStart || 0
},
weekdays: function () {
return t3.weekdays()
},
weekdaysShort: function () {
return t3.weekdaysShort()
},
weekdaysMin: function () {
return t3.weekdaysMin()
},
months: function () {
return t3.months()
},
monthsShort: function () {
return t3.monthsShort()
},
longDateFormat: function (e3) {
return a2(n3, e3)
},
meridiem: n3.meridiem,
ordinal: n3.ordinal,
}
}),
(t3.months = function () {
return u2(i2(), 'months')
}),
(t3.monthsShort = function () {
return u2(i2(), 'monthsShort', 'months', 3)
}),
(t3.weekdays = function (n3) {
return u2(i2(), 'weekdays', null, null, n3)
}),
(t3.weekdaysShort = function (n3) {
return u2(i2(), 'weekdaysShort', 'weekdays', 3, n3)
}),
(t3.weekdaysMin = function (n3) {
return u2(i2(), 'weekdaysMin', 'weekdays', 2, n3)
})
}
})
})(localeData$1)
var localeData = localeData$1.exports
var customParseFormat$1 = { exports: {} }
;(function (module2, exports2) {
!(function (e2, t3) {
module2.exports = t3()
})(commonjsGlobal, function () {
var e2 = {
LTS: 'h:mm:ss A',
LT: 'h:mm A',
L: 'MM/DD/YYYY',
LL: 'MMMM D, YYYY',
LLL: 'MMMM D, YYYY h:mm A',
LLLL: 'dddd, MMMM D, YYYY h:mm A',
},
t3 =
/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,
n2 = /\d\d/,
r2 = /\d\d?/,
i2 = /\d*[^-_:/,()\s\d]+/,
o2 = {},
s2 = function (e3) {
return (e3 = +e3) + (e3 > 68 ? 1900 : 2e3)
}
var a2 = function (e3) {
return function (t4) {
this[e3] = +t4
}
},
f2 = [
/[+-]\d\d:?(\d\d)?|Z/,
function (e3) {
;(this.zone || (this.zone = {})).offset = (function (e4) {
if (!e4) return 0
if ('Z' === e4) return 0
var t4 = e4.match(/([+-]|\d\d)/g),
n3 = 60 * t4[1] + (+t4[2] || 0)
return 0 === n3 ? 0 : '+' === t4[0] ? -n3 : n3
})(e3)
},
],
h2 = function (e3) {
var t4 = o2[e3]
return t4 && (t4.indexOf ? t4 : t4.s.concat(t4.f))
},
u2 = function (e3, t4) {
var n3,
r3 = o2.meridiem
if (r3) {
for (var i3 = 1; i3 <= 24; i3 += 1)
if (e3.indexOf(r3(i3, 0, t4)) > -1) {
n3 = i3 > 12
break
}
} else n3 = e3 === (t4 ? 'pm' : 'PM')
return n3
},
d3 = {
A: [
i2,
function (e3) {
this.afternoon = u2(e3, false)
},
],
a: [
i2,
function (e3) {
this.afternoon = u2(e3, true)
},
],
S: [
/\d/,
function (e3) {
this.milliseconds = 100 * +e3
},
],
SS: [
n2,
function (e3) {
this.milliseconds = 10 * +e3
},
],
SSS: [
/\d{3}/,
function (e3) {
this.milliseconds = +e3
},
],
s: [r2, a2('seconds')],
ss: [r2, a2('seconds')],
m: [r2, a2('minutes')],
mm: [r2, a2('minutes')],
H: [r2, a2('hours')],
h: [r2, a2('hours')],
HH: [r2, a2('hours')],
hh: [r2, a2('hours')],
D: [r2, a2('day')],
DD: [n2, a2('day')],
Do: [
i2,
function (e3) {
var t4 = o2.ordinal,
n3 = e3.match(/\d+/)
if (((this.day = n3[0]), t4))
for (var r3 = 1; r3 <= 31; r3 += 1)
t4(r3).replace(/\[|\]/g, '') === e3 && (this.day = r3)
},
],
M: [r2, a2('month')],
MM: [n2, a2('month')],
MMM: [
i2,
function (e3) {
var t4 = h2('months'),
n3 =
(
h2('monthsShort') ||
t4.map(function (e4) {
return e4.slice(0, 3)
})
).indexOf(e3) + 1
if (n3 < 1) throw new Error()
this.month = n3 % 12 || n3
},
],
MMMM: [
i2,
function (e3) {
var t4 = h2('months').indexOf(e3) + 1
if (t4 < 1) throw new Error()
this.month = t4 % 12 || t4
},
],
Y: [/[+-]?\d+/, a2('year')],
YY: [
n2,
function (e3) {
this.year = s2(e3)
},
],
YYYY: [/\d{4}/, a2('year')],
Z: f2,
ZZ: f2,
}
function c2(n3) {
var r3, i3
;(r3 = n3), (i3 = o2 && o2.formats)
for (
var s3 = (n3 = r3.replace(
/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,
function (t4, n4, r4) {
var o3 = r4 && r4.toUpperCase()
return (
n4 ||
i3[r4] ||
e2[r4] ||
i3[o3].replace(
/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,
function (e3, t5, n5) {
return t5 || n5.slice(1)
}
)
)
}
)).match(t3),
a3 = s3.length,
f3 = 0;
f3 < a3;
f3 += 1
) {
var h3 = s3[f3],
u3 = d3[h3],
c3 = u3 && u3[0],
l2 = u3 && u3[1]
s3[f3] = l2 ? { regex: c3, parser: l2 } : h3.replace(/^\[|\]$/g, '')
}
return function (e3) {
for (var t4 = {}, n4 = 0, r4 = 0; n4 < a3; n4 += 1) {
var i4 = s3[n4]
if ('string' == typeof i4) r4 += i4.length
else {
var o3 = i4.regex,
f4 = i4.parser,
h4 = e3.slice(r4),
u4 = o3.exec(h4)[0]
f4.call(t4, u4), (e3 = e3.replace(u4, ''))
}
}
return (
(function (e4) {
var t5 = e4.afternoon
if (void 0 !== t5) {
var n5 = e4.hours
t5 ? n5 < 12 && (e4.hours += 12) : 12 === n5 && (e4.hours = 0),
delete e4.afternoon
}
})(t4),
t4
)
}
}
return function (e3, t4, n3) {
;(n3.p.customParseFormat = true),
e3 && e3.parseTwoDigitYear && (s2 = e3.parseTwoDigitYear)
var r3 = t4.prototype,
i3 = r3.parse
r3.parse = function (e4) {
var t5 = e4.date,
r4 = e4.utc,
s3 = e4.args
this.$u = r4
var a3 = s3[1]
if ('string' == typeof a3) {
var f3 = true === s3[2],
h3 = true === s3[3],
u3 = f3 || h3,
d4 = s3[2]
h3 && (d4 = s3[2]),
(o2 = this.$locale()),
!f3 && d4 && (o2 = n3.Ls[d4]),
(this.$d = (function (e5, t6, n4) {
try {
if (['x', 'X'].indexOf(t6) > -1)
return new Date(('X' === t6 ? 1e3 : 1) * e5)
var r5 = c2(t6)(e5),
i4 = r5.year,
o3 = r5.month,
s4 = r5.day,
a4 = r5.hours,
f4 = r5.minutes,
h4 = r5.seconds,
u4 = r5.milliseconds,
d5 = r5.zone,
l3 = new Date(),
m3 = s4 || (i4 || o3 ? 1 : l3.getDate()),
M3 = i4 || l3.getFullYear(),
Y2 = 0
;(i4 && !o3) || (Y2 = o3 > 0 ? o3 - 1 : l3.getMonth())
var p2 = a4 || 0,
v4 = f4 || 0,
D2 = h4 || 0,
g2 = u4 || 0
return d5
? new Date(
Date.UTC(
M3,
Y2,
m3,
p2,
v4,
D2,
g2 + 60 * d5.offset * 1e3
)
)
: n4
? new Date(Date.UTC(M3, Y2, m3, p2, v4, D2, g2))
: new Date(M3, Y2, m3, p2, v4, D2, g2)
} catch (e6) {
return new Date('')
}
})(t5, a3, r4)),
this.init(),
d4 && true !== d4 && (this.$L = this.locale(d4).$L),
u3 && t5 != this.format(a3) && (this.$d = new Date('')),
(o2 = {})
} else if (a3 instanceof Array)
for (var l2 = a3.length, m2 = 1; m2 <= l2; m2 += 1) {
s3[1] = a3[m2 - 1]
var M2 = n3.apply(this, s3)
if (M2.isValid()) {
;(this.$d = M2.$d), (this.$L = M2.$L), this.init()
break
}
m2 === l2 && (this.$d = new Date(''))
}
else i3.call(this, e4)
}
}
})
})(customParseFormat$1)
var customParseFormat = customParseFormat$1.exports
const DEFAULT_FORMATS_TIME = 'HH:mm:ss'
const DEFAULT_FORMATS_DATE = 'YYYY-MM-DD'
const DEFAULT_FORMATS_DATEPICKER = {
date: DEFAULT_FORMATS_DATE,
week: 'gggg[w]ww',
year: 'YYYY',
month: 'YYYY-MM',
datetime: `${DEFAULT_FORMATS_DATE} ${DEFAULT_FORMATS_TIME}`,
monthrange: 'YYYY-MM',
daterange: DEFAULT_FORMATS_DATE,
datetimerange: `${DEFAULT_FORMATS_DATE} ${DEFAULT_FORMATS_TIME}`,
}
const timePickerDefaultProps = {
id: {
type: [Array, String],
},
name: {
type: [Array, String],
default: '',
},
popperClass: {
type: String,
default: '',
},
format: {
type: String,
},
valueFormat: {
type: String,
},
type: {
type: String,
default: '',
},
clearable: {
type: Boolean,
default: true,
},
clearIcon: {
type: [String, Object],
default: circleClose,
},
editable: {
type: Boolean,
default: true,
},
prefixIcon: {
type: [String, Object],
default: '',
},
size: {
type: String,
validator: isValidComponentSize,
},
readonly: {
type: Boolean,
default: false,
},
disabled: {
type: Boolean,
default: false,
},
placeholder: {
type: String,
default: '',
},
popperOptions: {
type: Object,
default: () => ({}),
},
modelValue: {
type: [Date, Array, String, Number],
default: '',
},
rangeSeparator: {
type: String,
default: '-',
},
startPlaceholder: String,
endPlaceholder: String,
defaultValue: {
type: [Date, Array],
},
defaultTime: {
type: [Date, Array],
},
isRange: {
type: Boolean,
default: false,
},
disabledHours: {
type: Function,
},
disabledMinutes: {
type: Function,
},
disabledSeconds: {
type: Function,
},
disabledDate: {
type: Function,
},
cellClassName: {
type: Function,
},
shortcuts: {
type: Array,
default: () => [],
},
arrowControl: {
type: Boolean,
default: false,
},
validateEvent: {
type: Boolean,
default: true,
},
unlinkPanels: Boolean,
}
const dateEquals = function (a2, b2) {
const aIsDate = a2 instanceof Date
const bIsDate = b2 instanceof Date
if (aIsDate && bIsDate) {
return a2.getTime() === b2.getTime()
}
if (!aIsDate && !bIsDate) {
return a2 === b2
}
return false
}
const valueEquals = function (a2, b2) {
const aIsArray = Array.isArray(a2)
const bIsArray = Array.isArray(b2)
if (aIsArray && bIsArray) {
if (a2.length !== b2.length) {
return false
}
return a2.every((item2, index2) => dateEquals(item2, b2[index2]))
}
if (!aIsArray && !bIsArray) {
return dateEquals(a2, b2)
}
return false
}
const parser = function (date4, format2, lang) {
const day =
isEmpty$3(format2) || format2 === 'x'
? dayjs(date4).locale(lang)
: dayjs(date4, format2).locale(lang)
return day.isValid() ? day : void 0
}
const formatter = function (date4, format2, lang) {
if (isEmpty$3(format2)) return date4
if (format2 === 'x') return +date4
return dayjs(date4).locale(lang).format(format2)
}
const _sfc_main$8$ = defineComponent({
name: 'Picker',
components: {
ElInput,
ElTooltip,
ElIcon,
},
props: timePickerDefaultProps,
emits: [
'update:modelValue',
'change',
'focus',
'blur',
'calendar-change',
'panel-change',
'visible-change',
],
setup(props2, ctx) {
const { lang } = useLocale()
const nsDate = useNamespace('date')
const nsInput = useNamespace('input')
const nsRange = useNamespace('range')
const elForm = inject(formContextKey, {})
const elFormItem = inject(formItemContextKey, {})
const elPopperOptions = inject('ElPopperOptions', {})
const refPopper = ref()
const inputRef = ref()
const pickerVisible = ref(false)
const pickerActualVisible = ref(false)
const valueOnOpen = ref(null)
watch$1(pickerVisible, (val2) => {
var _a2
if (!val2) {
userInput.value = null
nextTick(() => {
emitChange(props2.modelValue)
})
ctx.emit('blur')
blurInput()
props2.validateEvent &&
((_a2 = elFormItem.validate) == null
? void 0
: _a2.call(elFormItem, 'blur').catch((err) => debugWarn()))
} else {
valueOnOpen.value = props2.modelValue
}
})
const emitChange = (val2, isClear) => {
var _a2
if (isClear || !valueEquals(val2, valueOnOpen.value)) {
ctx.emit('change', val2)
props2.validateEvent &&
((_a2 = elFormItem.validate) == null
? void 0
: _a2.call(elFormItem, 'change').catch((err) => debugWarn()))
}
}
const emitInput = (val2) => {
if (!valueEquals(props2.modelValue, val2)) {
let formatValue
if (Array.isArray(val2)) {
formatValue = val2.map((_2) =>
formatter(_2, props2.valueFormat, lang.value)
)
} else if (val2) {
formatValue = formatter(val2, props2.valueFormat, lang.value)
}
ctx.emit('update:modelValue', val2 ? formatValue : val2, lang.value)
}
}
const refInput = computed(() => {
if (inputRef.value) {
const _r = isRangeInput.value ? inputRef.value : inputRef.value.$el
return Array.from(_r.querySelectorAll('input'))
}
return []
})
const refStartInput = computed(() => {
return refInput == null ? void 0 : refInput.value[0]
})
const refEndInput = computed(() => {
return refInput == null ? void 0 : refInput.value[1]
})
const setSelectionRange = (start2, end2, pos) => {
const _inputs = refInput.value
if (!_inputs.length) return
if (!pos || pos === 'min') {
_inputs[0].setSelectionRange(start2, end2)
_inputs[0].focus()
} else if (pos === 'max') {
_inputs[1].setSelectionRange(start2, end2)
_inputs[1].focus()
}
}
const onPick = (date4 = '', visible = false) => {
pickerVisible.value = visible
let result
if (Array.isArray(date4)) {
result = date4.map((_2) => _2.toDate())
} else {
result = date4 ? date4.toDate() : date4
}
userInput.value = null
emitInput(result)
}
const onBeforeShow = () => {
pickerActualVisible.value = true
}
const onShow = () => {
ctx.emit('visible-change', true)
}
const onHide = () => {
pickerActualVisible.value = false
ctx.emit('visible-change', false)
}
const focus2 = (focusStartInput = true) => {
let input = refStartInput.value
if (!focusStartInput && isRangeInput.value) {
input = refEndInput.value
}
if (input) {
input.focus()
}
}
const handleFocus = (e2) => {
if (props2.readonly || pickerDisabled.value || pickerVisible.value) return
pickerVisible.value = true
ctx.emit('focus', e2)
}
const handleBlur = () => {
var _a2
;(_a2 = refPopper.value) == null ? void 0 : _a2.onClose()
blurInput()
}
const pickerDisabled = computed(() => {
return props2.disabled || elForm.disabled
})
const parsedValue = computed(() => {
let result
if (valueIsEmpty.value) {
if (pickerOptions.value.getDefaultValue) {
result = pickerOptions.value.getDefaultValue()
}
} else {
if (Array.isArray(props2.modelValue)) {
result = props2.modelValue.map((_2) =>
parser(_2, props2.valueFormat, lang.value)
)
} else {
result = parser(props2.modelValue, props2.valueFormat, lang.value)
}
}
if (pickerOptions.value.getRangeAvailableTime) {
const availableResult =
pickerOptions.value.getRangeAvailableTime(result)
if (!isEqual$4(availableResult, result)) {
result = availableResult
emitInput(
Array.isArray(result)
? result.map((_2) => _2.toDate())
: result.toDate()
)
}
}
if (Array.isArray(result) && result.some((_2) => !_2)) {
result = []
}
return result
})
const displayValue = computed(() => {
if (!pickerOptions.value.panelReady) return
const formattedValue = formatDayjsToString(parsedValue.value)
if (Array.isArray(userInput.value)) {
return [
userInput.value[0] || (formattedValue && formattedValue[0]) || '',
userInput.value[1] || (formattedValue && formattedValue[1]) || '',
]
} else if (userInput.value !== null) {
return userInput.value
}
if (!isTimePicker.value && valueIsEmpty.value) return
if (!pickerVisible.value && valueIsEmpty.value) return
if (formattedValue) {
return isDatesPicker.value ? formattedValue.join(', ') : formattedValue
}
return ''
})
const isTimeLikePicker = computed(() => props2.type.includes('time'))
const isTimePicker = computed(() => props2.type.startsWith('time'))
const isDatesPicker = computed(() => props2.type === 'dates')
const triggerIcon = computed(
() => props2.prefixIcon || (isTimeLikePicker.value ? clock : calendar)
)
const showClose = ref(false)
const onClearIconClick = (event) => {
if (props2.readonly || pickerDisabled.value) return
if (showClose.value) {
event.stopPropagation()
emitInput(null)
emitChange(null, true)
showClose.value = false
pickerVisible.value = false
pickerOptions.value.handleClear && pickerOptions.value.handleClear()
}
}
const valueIsEmpty = computed(() => {
return (
!props2.modelValue ||
(Array.isArray(props2.modelValue) && !props2.modelValue.length)
)
})
const onMouseEnter = () => {
if (props2.readonly || pickerDisabled.value) return
if (!valueIsEmpty.value && props2.clearable) {
showClose.value = true
}
}
const onMouseLeave = () => {
showClose.value = false
}
const isRangeInput = computed(() => {
return props2.type.includes('range')
})
const pickerSize = useSize$1()
const popperPaneRef = computed(() => {
var _a2, _b2
return (_b2 = (_a2 = refPopper.value) == null ? void 0 : _a2.popperRef) ==
null
? void 0
: _b2.contentRef
})
const popperEl = computed(() => {
var _a2, _b2
return (_b2 =
(_a2 = unref(refPopper)) == null ? void 0 : _a2.popperRef) == null
? void 0
: _b2.contentRef
})
const actualInputRef = computed(() => {
var _a2
if (unref(isRangeInput)) {
return unref(inputRef)
}
return (_a2 = unref(inputRef)) == null ? void 0 : _a2.$el
})
onClickOutside$1(actualInputRef, (e2) => {
const unrefedPopperEl = unref(popperEl)
const inputEl = unref(actualInputRef)
if (
(unrefedPopperEl &&
(e2.target === unrefedPopperEl ||
e2.composedPath().includes(unrefedPopperEl))) ||
e2.target === inputEl ||
e2.composedPath().includes(inputEl)
)
return
pickerVisible.value = false
})
const userInput = ref(null)
const handleChange = () => {
if (userInput.value) {
const value2 = parseUserInputToDayjs(displayValue.value)
if (value2) {
if (isValidValue(value2)) {
emitInput(
Array.isArray(value2)
? value2.map((_2) => _2.toDate())
: value2.toDate()
)
userInput.value = null
}
}
}
if (userInput.value === '') {
emitInput(null)
emitChange(null)
userInput.value = null
}
}
const blurInput = () => {
refInput.value.forEach((input) => input.blur())
}
const parseUserInputToDayjs = (value2) => {
if (!value2) return null
return pickerOptions.value.parseUserInput(value2)
}
const formatDayjsToString = (value2) => {
if (!value2) return null
return pickerOptions.value.formatToString(value2)
}
const isValidValue = (value2) => {
return pickerOptions.value.isValidValue(value2)
}
const handleKeydown = (event) => {
const code2 = event.code
if (code2 === EVENT_CODE.esc) {
pickerVisible.value = false
event.stopPropagation()
return
}
if (code2 === EVENT_CODE.tab) {
if (!isRangeInput.value) {
handleChange()
pickerVisible.value = false
event.stopPropagation()
} else {
setTimeout(() => {
if (!refInput.value.includes(document.activeElement)) {
pickerVisible.value = false
blurInput()
}
}, 0)
}
return
}
if (code2 === EVENT_CODE.enter || code2 === EVENT_CODE.numpadEnter) {
if (
userInput.value === null ||
userInput.value === '' ||
isValidValue(parseUserInputToDayjs(displayValue.value))
) {
handleChange()
pickerVisible.value = false
}
event.stopPropagation()
return
}
if (userInput.value) {
event.stopPropagation()
return
}
if (pickerOptions.value.handleKeydown) {
pickerOptions.value.handleKeydown(event)
}
}
const onUserInput = (e2) => {
userInput.value = e2
}
const handleStartInput = (event) => {
if (userInput.value) {
userInput.value = [event.target.value, userInput.value[1]]
} else {
userInput.value = [event.target.value, null]
}
}
const handleEndInput = (event) => {
if (userInput.value) {
userInput.value = [userInput.value[0], event.target.value]
} else {
userInput.value = [null, event.target.value]
}
}
const handleStartChange = () => {
const value2 = parseUserInputToDayjs(
userInput.value && userInput.value[0]
)
if (value2 && value2.isValid()) {
userInput.value = [formatDayjsToString(value2), displayValue.value[1]]
const newValue = [value2, parsedValue.value && parsedValue.value[1]]
if (isValidValue(newValue)) {
emitInput(newValue)
userInput.value = null
}
}
}
const handleEndChange = () => {
const value2 = parseUserInputToDayjs(
userInput.value && userInput.value[1]
)
if (value2 && value2.isValid()) {
userInput.value = [displayValue.value[0], formatDayjsToString(value2)]
const newValue = [parsedValue.value && parsedValue.value[0], value2]
if (isValidValue(newValue)) {
emitInput(newValue)
userInput.value = null
}
}
}
const pickerOptions = ref({})
const onSetPickerOption = (e2) => {
pickerOptions.value[e2[0]] = e2[1]
pickerOptions.value.panelReady = true
}
const onCalendarChange = (e2) => {
ctx.emit('calendar-change', e2)
}
const onPanelChange = (value2, mode2, view2) => {
ctx.emit('panel-change', value2, mode2, view2)
}
provide('EP_PICKER_BASE', {
props: props2,
})
return {
nsDate,
nsInput,
nsRange,
elPopperOptions,
isDatesPicker,
handleEndChange,
handleStartChange,
handleStartInput,
handleEndInput,
onUserInput,
handleChange,
handleKeydown,
popperPaneRef,
onClickOutside: onClickOutside$1,
pickerSize,
isRangeInput,
onMouseLeave,
onMouseEnter,
onClearIconClick,
showClose,
triggerIcon,
onPick,
handleFocus,
handleBlur,
pickerVisible,
pickerActualVisible,
displayValue,
parsedValue,
setSelectionRange,
refPopper,
inputRef,
pickerDisabled,
onSetPickerOption,
onCalendarChange,
onPanelChange,
focus: focus2,
onShow,
onBeforeShow,
onHide,
}
},
})
const _hoisted_1$6U = [
'id',
'name',
'placeholder',
'value',
'disabled',
'readonly',
]
const _hoisted_2$5y = [
'id',
'name',
'placeholder',
'value',
'disabled',
'readonly',
]
function _sfc_render$1C(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_icon = resolveComponent('el-icon')
const _component_el_input = resolveComponent('el-input')
const _component_el_tooltip = resolveComponent('el-tooltip')
return (
openBlock(),
createBlock(
_component_el_tooltip,
mergeProps(
{
ref: 'refPopper',
visible: _ctx.pickerVisible,
'onUpdate:visible':
_cache[17] ||
(_cache[17] = ($event) => (_ctx.pickerVisible = $event)),
effect: 'light',
pure: '',
trigger: 'click',
},
_ctx.$attrs,
{
'append-to-body': '',
transition: `${_ctx.nsDate.namespace.value}-zoom-in-top`,
'popper-class': [
`${_ctx.nsDate.namespace.value}-picker__popper`,
_ctx.popperClass,
],
'popper-options': _ctx.elPopperOptions,
'fallback-placements': ['bottom', 'top', 'right', 'left'],
'gpu-acceleration': false,
'stop-popper-mouse-event': false,
'hide-after': 0,
persistent: '',
onBeforeShow: _ctx.onBeforeShow,
onShow: _ctx.onShow,
onHide: _ctx.onHide,
}
),
{
default: withCtx(() => [
!_ctx.isRangeInput
? (openBlock(),
createBlock(
_component_el_input,
{
key: 0,
id: _ctx.id,
ref: 'inputRef',
'model-value': _ctx.displayValue,
name: _ctx.name,
size: _ctx.pickerSize,
disabled: _ctx.pickerDisabled,
placeholder: _ctx.placeholder,
class: normalizeClass([
_ctx.nsDate.b('editor'),
_ctx.nsDate.bm('editor', _ctx.type),
_ctx.$attrs.class,
]),
style: normalizeStyle$1(_ctx.$attrs.style),
readonly:
!_ctx.editable ||
_ctx.readonly ||
_ctx.isDatesPicker ||
_ctx.type === 'week',
onInput: _ctx.onUserInput,
onFocus: _ctx.handleFocus,
onKeydown: _ctx.handleKeydown,
onChange: _ctx.handleChange,
onMouseenter: _ctx.onMouseEnter,
onMouseleave: _ctx.onMouseLeave,
onClick:
_cache[0] ||
(_cache[0] = withModifiers(() => {}, ['stop'])),
},
{
prefix: withCtx(() => [
_ctx.triggerIcon
? (openBlock(),
createBlock(
_component_el_icon,
{
key: 0,
class: normalizeClass(_ctx.nsInput.e('icon')),
onClick: _ctx.handleFocus,
},
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(_ctx.triggerIcon)
)),
]),
_: 1,
},
8,
['class', 'onClick']
))
: createCommentVNode('v-if', true),
]),
suffix: withCtx(() => [
_ctx.showClose && _ctx.clearIcon
? (openBlock(),
createBlock(
_component_el_icon,
{
key: 0,
class: normalizeClass(
`${_ctx.nsInput.e('icon')} clear-icon`
),
onClick: _ctx.onClearIconClick,
},
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(_ctx.clearIcon)
)),
]),
_: 1,
},
8,
['class', 'onClick']
))
: createCommentVNode('v-if', true),
]),
_: 1,
},
8,
[
'id',
'model-value',
'name',
'size',
'disabled',
'placeholder',
'class',
'style',
'readonly',
'onInput',
'onFocus',
'onKeydown',
'onChange',
'onMouseenter',
'onMouseleave',
]
))
: (openBlock(),
createElementBlock(
'div',
{
key: 1,
ref: 'inputRef',
class: normalizeClass([
_ctx.nsDate.b('editor'),
_ctx.nsDate.bm('editor', _ctx.type),
_ctx.nsInput.e('inner'),
_ctx.nsDate.is('disabled', _ctx.pickerDisabled),
_ctx.nsDate.is('active', _ctx.pickerVisible),
_ctx.nsRange.b('editor'),
_ctx.pickerSize
? _ctx.nsRange.bm('editor', _ctx.pickerSize)
: '',
_ctx.$attrs.class,
]),
style: normalizeStyle$1(_ctx.$attrs.style),
onClick:
_cache[7] ||
(_cache[7] = (...args) =>
_ctx.handleFocus && _ctx.handleFocus(...args)),
onMouseenter:
_cache[8] ||
(_cache[8] = (...args) =>
_ctx.onMouseEnter && _ctx.onMouseEnter(...args)),
onMouseleave:
_cache[9] ||
(_cache[9] = (...args) =>
_ctx.onMouseLeave && _ctx.onMouseLeave(...args)),
onKeydown:
_cache[10] ||
(_cache[10] = (...args) =>
_ctx.handleKeydown && _ctx.handleKeydown(...args)),
},
[
_ctx.triggerIcon
? (openBlock(),
createBlock(
_component_el_icon,
{
key: 0,
class: normalizeClass([
_ctx.nsInput.e('icon'),
_ctx.nsRange.e('icon'),
]),
onClick: _ctx.handleFocus,
},
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(_ctx.triggerIcon)
)),
]),
_: 1,
},
8,
['class', 'onClick']
))
: createCommentVNode('v-if', true),
createElementVNode(
'input',
{
id: _ctx.id && _ctx.id[0],
autocomplete: 'off',
name: _ctx.name && _ctx.name[0],
placeholder: _ctx.startPlaceholder,
value: _ctx.displayValue && _ctx.displayValue[0],
disabled: _ctx.pickerDisabled,
readonly: !_ctx.editable || _ctx.readonly,
class: normalizeClass(_ctx.nsRange.b('input')),
onInput:
_cache[1] ||
(_cache[1] = (...args) =>
_ctx.handleStartInput &&
_ctx.handleStartInput(...args)),
onChange:
_cache[2] ||
(_cache[2] = (...args) =>
_ctx.handleStartChange &&
_ctx.handleStartChange(...args)),
onFocus:
_cache[3] ||
(_cache[3] = (...args) =>
_ctx.handleFocus && _ctx.handleFocus(...args)),
},
null,
42,
_hoisted_1$6U
),
renderSlot(_ctx.$slots, 'range-separator', {}, () => [
createElementVNode(
'span',
{
class: normalizeClass(_ctx.nsRange.b('separator')),
},
toDisplayString$1(_ctx.rangeSeparator),
3
),
]),
createElementVNode(
'input',
{
id: _ctx.id && _ctx.id[1],
autocomplete: 'off',
name: _ctx.name && _ctx.name[1],
placeholder: _ctx.endPlaceholder,
value: _ctx.displayValue && _ctx.displayValue[1],
disabled: _ctx.pickerDisabled,
readonly: !_ctx.editable || _ctx.readonly,
class: normalizeClass(_ctx.nsRange.b('input')),
onFocus:
_cache[4] ||
(_cache[4] = (...args) =>
_ctx.handleFocus && _ctx.handleFocus(...args)),
onInput:
_cache[5] ||
(_cache[5] = (...args) =>
_ctx.handleEndInput && _ctx.handleEndInput(...args)),
onChange:
_cache[6] ||
(_cache[6] = (...args) =>
_ctx.handleEndChange &&
_ctx.handleEndChange(...args)),
},
null,
42,
_hoisted_2$5y
),
_ctx.clearIcon
? (openBlock(),
createBlock(
_component_el_icon,
{
key: 1,
class: normalizeClass([
_ctx.nsInput.e('icon'),
_ctx.nsRange.e('close-icon'),
{
[_ctx.nsRange.e('close-icon--hidden')]:
!_ctx.showClose,
},
]),
onClick: _ctx.onClearIconClick,
},
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(_ctx.clearIcon)
)),
]),
_: 1,
},
8,
['class', 'onClick']
))
: createCommentVNode('v-if', true),
],
38
)),
]),
content: withCtx(() => [
renderSlot(_ctx.$slots, 'default', {
visible: _ctx.pickerVisible,
actualVisible: _ctx.pickerActualVisible,
parsedValue: _ctx.parsedValue,
format: _ctx.format,
unlinkPanels: _ctx.unlinkPanels,
type: _ctx.type,
defaultValue: _ctx.defaultValue,
onPick:
_cache[11] ||
(_cache[11] = (...args) => _ctx.onPick && _ctx.onPick(...args)),
onSelectRange:
_cache[12] ||
(_cache[12] = (...args) =>
_ctx.setSelectionRange && _ctx.setSelectionRange(...args)),
onSetPickerOption:
_cache[13] ||
(_cache[13] = (...args) =>
_ctx.onSetPickerOption && _ctx.onSetPickerOption(...args)),
onCalendarChange:
_cache[14] ||
(_cache[14] = (...args) =>
_ctx.onCalendarChange && _ctx.onCalendarChange(...args)),
onPanelChange:
_cache[15] ||
(_cache[15] = (...args) =>
_ctx.onPanelChange && _ctx.onPanelChange(...args)),
onMousedown:
_cache[16] || (_cache[16] = withModifiers(() => {}, ['stop'])),
}),
]),
_: 3,
},
16,
[
'visible',
'transition',
'popper-class',
'popper-options',
'onBeforeShow',
'onShow',
'onHide',
]
)
)
}
var CommonPicker = /* @__PURE__ */ _export_sfc$1(_sfc_main$8$, [
['render', _sfc_render$1C],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/time-picker/src/common/picker.vue',
],
])
const nodeList = /* @__PURE__ */ new Map()
let startClick
if (isClient$1) {
document.addEventListener('mousedown', (e2) => (startClick = e2))
document.addEventListener('mouseup', (e2) => {
for (const handlers2 of nodeList.values()) {
for (const { documentHandler } of handlers2) {
documentHandler(e2, startClick)
}
}
})
}
function createDocumentHandler(el2, binding) {
let excludes = []
if (Array.isArray(binding.arg)) {
excludes = binding.arg
} else if (isElement$3(binding.arg)) {
excludes.push(binding.arg)
}
return function (mouseup, mousedown) {
const popperRef = binding.instance.popperRef
const mouseUpTarget = mouseup.target
const mouseDownTarget = mousedown == null ? void 0 : mousedown.target
const isBound = !binding || !binding.instance
const isTargetExists = !mouseUpTarget || !mouseDownTarget
const isContainedByEl =
el2.contains(mouseUpTarget) || el2.contains(mouseDownTarget)
const isSelf = el2 === mouseUpTarget
const isTargetExcluded =
(excludes.length &&
excludes.some((item2) =>
item2 == null ? void 0 : item2.contains(mouseUpTarget)
)) ||
(excludes.length && excludes.includes(mouseDownTarget))
const isContainedByPopper =
popperRef &&
(popperRef.contains(mouseUpTarget) || popperRef.contains(mouseDownTarget))
if (
isBound ||
isTargetExists ||
isContainedByEl ||
isSelf ||
isTargetExcluded ||
isContainedByPopper
) {
return
}
binding.value(mouseup, mousedown)
}
}
const ClickOutside = {
beforeMount(el2, binding) {
if (!nodeList.has(el2)) {
nodeList.set(el2, [])
}
nodeList.get(el2).push({
documentHandler: createDocumentHandler(el2, binding),
bindingFn: binding.value,
})
},
updated(el2, binding) {
if (!nodeList.has(el2)) {
nodeList.set(el2, [])
}
const handlers2 = nodeList.get(el2)
const oldHandlerIndex = handlers2.findIndex(
(item2) => item2.bindingFn === binding.oldValue
)
const newHandler = {
documentHandler: createDocumentHandler(el2, binding),
bindingFn: binding.value,
}
if (oldHandlerIndex >= 0) {
handlers2.splice(oldHandlerIndex, 1, newHandler)
} else {
handlers2.push(newHandler)
}
},
unmounted(el2) {
nodeList.delete(el2)
},
}
var RepeatClick = {
beforeMount(el2, binding) {
let interval = null
let startTime
const handler = () => binding.value && binding.value()
const clear2 = () => {
if (Date.now() - startTime < 100) {
handler()
}
clearInterval(interval)
interval = null
}
on$2(el2, 'mousedown', (e2) => {
if (e2.button !== 0) return
startTime = Date.now()
once$2(document, 'mouseup', clear2)
clearInterval(interval)
interval = setInterval(handler, 100)
})
},
}
const FOCUSABLE_CHILDREN = '_trap-focus-children'
const FOCUS_STACK = []
const FOCUS_HANDLER = (e2) => {
if (FOCUS_STACK.length === 0) return
const focusableElement =
FOCUS_STACK[FOCUS_STACK.length - 1][FOCUSABLE_CHILDREN]
if (focusableElement.length > 0 && e2.code === EVENT_CODE.tab) {
if (focusableElement.length === 1) {
e2.preventDefault()
if (document.activeElement !== focusableElement[0]) {
focusableElement[0].focus()
}
return
}
const goingBackward = e2.shiftKey
const isFirst = e2.target === focusableElement[0]
const isLast = e2.target === focusableElement[focusableElement.length - 1]
if (isFirst && goingBackward) {
e2.preventDefault()
focusableElement[focusableElement.length - 1].focus()
}
if (isLast && !goingBackward) {
e2.preventDefault()
focusableElement[0].focus()
}
}
}
const TrapFocus = {
beforeMount(el2) {
el2[FOCUSABLE_CHILDREN] = obtainAllFocusableElements$1(el2)
FOCUS_STACK.push(el2)
if (FOCUS_STACK.length <= 1) {
on$2(document, 'keydown', FOCUS_HANDLER)
}
},
updated(el2) {
nextTick(() => {
el2[FOCUSABLE_CHILDREN] = obtainAllFocusableElements$1(el2)
})
},
unmounted() {
FOCUS_STACK.shift()
if (FOCUS_STACK.length === 0) {
off$1(document, 'keydown', FOCUS_HANDLER)
}
},
}
var v$3 = false,
o$2,
f$3,
s$2,
u$3,
d$1,
N$2,
l$2,
p$2,
m$4,
w$1,
D$1,
x$2,
E$2,
M$1,
F$2
function a$3() {
if (!v$3) {
v$3 = true
var e2 = navigator.userAgent,
n2 =
/(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))|(?:Trident\/\d+\.\d+.*rv:(\d+\.\d+))/.exec(
e2
),
i2 = /(Mac OS X)|(Windows)|(Linux)/.exec(e2)
if (
((x$2 = /\b(iPhone|iP[ao]d)/.exec(e2)),
(E$2 = /\b(iP[ao]d)/.exec(e2)),
(w$1 = /Android/i.exec(e2)),
(M$1 = /FBAN\/\w+;/i.exec(e2)),
(F$2 = /Mobile/i.exec(e2)),
(D$1 = !!/Win64/.exec(e2)),
n2)
) {
;(o$2 = n2[1] ? parseFloat(n2[1]) : n2[5] ? parseFloat(n2[5]) : NaN),
o$2 &&
document &&
document.documentMode &&
(o$2 = document.documentMode)
var r2 = /(?:Trident\/(\d+.\d+))/.exec(e2)
;(N$2 = r2 ? parseFloat(r2[1]) + 4 : o$2),
(f$3 = n2[2] ? parseFloat(n2[2]) : NaN),
(s$2 = n2[3] ? parseFloat(n2[3]) : NaN),
(u$3 = n2[4] ? parseFloat(n2[4]) : NaN),
u$3
? ((n2 = /(?:Chrome\/(\d+\.\d+))/.exec(e2)),
(d$1 = n2 && n2[1] ? parseFloat(n2[1]) : NaN))
: (d$1 = NaN)
} else o$2 = f$3 = s$2 = d$1 = u$3 = NaN
if (i2) {
if (i2[1]) {
var t3 = /(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(e2)
l$2 = t3 ? parseFloat(t3[1].replace('_', '.')) : true
} else l$2 = false
;(p$2 = !!i2[2]), (m$4 = !!i2[3])
} else l$2 = p$2 = m$4 = false
}
}
var _$3 = {
ie: function () {
return a$3() || o$2
},
ieCompatibilityMode: function () {
return a$3() || N$2 > o$2
},
ie64: function () {
return _$3.ie() && D$1
},
firefox: function () {
return a$3() || f$3
},
opera: function () {
return a$3() || s$2
},
webkit: function () {
return a$3() || u$3
},
safari: function () {
return _$3.webkit()
},
chrome: function () {
return a$3() || d$1
},
windows: function () {
return a$3() || p$2
},
osx: function () {
return a$3() || l$2
},
linux: function () {
return a$3() || m$4
},
iphone: function () {
return a$3() || x$2
},
mobile: function () {
return a$3() || x$2 || E$2 || w$1 || F$2
},
nativeApp: function () {
return a$3() || M$1
},
android: function () {
return a$3() || w$1
},
ipad: function () {
return a$3() || E$2
},
},
A$2 = _$3
var c$3 = !!(
typeof window < 'u' &&
window.document &&
window.document.createElement
),
U$2 = {
canUseDOM: c$3,
canUseWorkers: typeof Worker < 'u',
canUseEventListeners:
c$3 && !!(window.addEventListener || window.attachEvent),
canUseViewport: c$3 && !!window.screen,
isInWorker: !c$3,
},
h$2 = U$2
var X$1
h$2.canUseDOM &&
(X$1 =
document.implementation &&
document.implementation.hasFeature &&
document.implementation.hasFeature('', '') !== true)
function S$1(e2, n2) {
if (!h$2.canUseDOM || (n2 && !('addEventListener' in document))) return false
var i2 = 'on' + e2,
r2 = i2 in document
if (!r2) {
var t3 = document.createElement('div')
t3.setAttribute(i2, 'return;'), (r2 = typeof t3[i2] == 'function')
}
return (
!r2 &&
X$1 &&
e2 === 'wheel' &&
(r2 = document.implementation.hasFeature('Events.wheel', '3.0')),
r2
)
}
var b$1 = S$1
var O$2 = 10,
I$1 = 40,
P$1 = 800
function T$3(e2) {
var n2 = 0,
i2 = 0,
r2 = 0,
t3 = 0
return (
'detail' in e2 && (i2 = e2.detail),
'wheelDelta' in e2 && (i2 = -e2.wheelDelta / 120),
'wheelDeltaY' in e2 && (i2 = -e2.wheelDeltaY / 120),
'wheelDeltaX' in e2 && (n2 = -e2.wheelDeltaX / 120),
'axis' in e2 && e2.axis === e2.HORIZONTAL_AXIS && ((n2 = i2), (i2 = 0)),
(r2 = n2 * O$2),
(t3 = i2 * O$2),
'deltaY' in e2 && (t3 = e2.deltaY),
'deltaX' in e2 && (r2 = e2.deltaX),
(r2 || t3) &&
e2.deltaMode &&
(e2.deltaMode == 1
? ((r2 *= I$1), (t3 *= I$1))
: ((r2 *= P$1), (t3 *= P$1))),
r2 && !n2 && (n2 = r2 < 1 ? -1 : 1),
t3 && !i2 && (i2 = t3 < 1 ? -1 : 1),
{ spinX: n2, spinY: i2, pixelX: r2, pixelY: t3 }
)
}
T$3.getEventType = function () {
return A$2.firefox()
? 'DOMMouseScroll'
: b$1('wheel')
? 'wheel'
: 'mousewheel'
}
var Y$1 = T$3
/**
* Checks if an event is supported in the current execution environment.
*
* NOTE: This will not work correctly for non-generic events such as `change`,
* `reset`, `load`, `error`, and `select`.
*
* Borrows from Modernizr.
*
* @param {string} eventNameSuffix Event name, e.g. "click".
* @param {?boolean} capture Check if the capture phase is supported.
* @return {boolean} True if the event is supported.
* @internal
* @license Modernizr 3.0.0pre (Custom Build) | MIT
*/
const mousewheel = function (element, callback) {
if (element && element.addEventListener) {
const fn2 = function (event) {
const normalized = Y$1(event)
callback && Reflect.apply(callback, this, [event, normalized])
}
if (isFirefox()) {
element.addEventListener('DOMMouseScroll', fn2)
} else {
element.onmousewheel = fn2
}
}
}
const Mousewheel = {
beforeMount(el2, binding) {
mousewheel(el2, binding.value)
},
}
const Resize = {
beforeMount(el2, binding) {
el2._handleResize = () => {
var _a2
el2 && ((_a2 = binding.value) == null ? void 0 : _a2.call(binding, el2))
}
addResizeListener(el2, el2._handleResize)
},
beforeUnmount(el2) {
removeResizeListener(el2, el2._handleResize)
},
}
const makeList = (total2, method4, methodFunc) => {
const arr = []
const disabledArr = method4 && methodFunc()
for (let i2 = 0; i2 < total2; i2++) {
arr[i2] = disabledArr ? disabledArr.includes(i2) : false
}
return arr
}
const makeAvailableArr = (list2) => {
return list2
.map((_2, index2) => (!_2 ? index2 : _2))
.filter((_2) => _2 !== true)
}
const getTimeLists = (disabledHours, disabledMinutes, disabledSeconds) => {
const getHoursList = (role, compare2) => {
return makeList(24, disabledHours, () => disabledHours(role, compare2))
}
const getMinutesList = (hour, role, compare2) => {
return makeList(60, disabledMinutes, () =>
disabledMinutes(hour, role, compare2)
)
}
const getSecondsList = (hour, minute, role, compare2) => {
return makeList(60, disabledSeconds, () =>
disabledSeconds(hour, minute, role, compare2)
)
}
return {
getHoursList,
getMinutesList,
getSecondsList,
}
}
const getAvailableArrs = (disabledHours, disabledMinutes, disabledSeconds) => {
const { getHoursList, getMinutesList, getSecondsList } = getTimeLists(
disabledHours,
disabledMinutes,
disabledSeconds
)
const getAvailableHours = (role, compare2) => {
return makeAvailableArr(getHoursList(role, compare2))
}
const getAvailableMinutes = (hour, role, compare2) => {
return makeAvailableArr(getMinutesList(hour, role, compare2))
}
const getAvailableSeconds = (hour, minute, role, compare2) => {
return makeAvailableArr(getSecondsList(hour, minute, role, compare2))
}
return {
getAvailableHours,
getAvailableMinutes,
getAvailableSeconds,
}
}
const useOldValue = (props2) => {
const oldValue = ref(props2.parsedValue)
watch$1(
() => props2.visible,
(val2) => {
if (!val2) {
oldValue.value = props2.parsedValue
}
}
)
return oldValue
}
const _sfc_main$8_ = defineComponent({
directives: {
repeatClick: RepeatClick,
},
components: {
ElScrollbar,
ElIcon,
ArrowUp: arrowUp,
ArrowDown: arrowDown,
},
props: {
role: {
type: String,
required: true,
},
spinnerDate: {
type: Object,
required: true,
},
showSeconds: {
type: Boolean,
default: true,
},
arrowControl: Boolean,
amPmMode: {
type: String,
default: '',
},
disabledHours: {
type: Function,
},
disabledMinutes: {
type: Function,
},
disabledSeconds: {
type: Function,
},
},
emits: ['change', 'select-range', 'set-option'],
setup(props2, ctx) {
const ns = useNamespace('time')
let isScrolling = false
const debouncedResetScroll = debounce$3((type4) => {
isScrolling = false
adjustCurrentSpinner(type4)
}, 200)
const currentScrollbar = ref(null)
const listHoursRef = ref(null)
const listMinutesRef = ref(null)
const listSecondsRef = ref(null)
const listRefsMap = {
hours: listHoursRef,
minutes: listMinutesRef,
seconds: listSecondsRef,
}
const spinnerItems = computed(() => {
const arr = ['hours', 'minutes', 'seconds']
return props2.showSeconds ? arr : arr.slice(0, 2)
})
const hours = computed(() => {
return props2.spinnerDate.hour()
})
const minutes = computed(() => {
return props2.spinnerDate.minute()
})
const seconds = computed(() => {
return props2.spinnerDate.second()
})
const timePartsMap = computed(() => ({
hours,
minutes,
seconds,
}))
const hoursList = computed(() => {
return getHoursList(props2.role)
})
const minutesList = computed(() => {
return getMinutesList(hours.value, props2.role)
})
const secondsList = computed(() => {
return getSecondsList(hours.value, minutes.value, props2.role)
})
const listMap = computed(() => ({
hours: hoursList,
minutes: minutesList,
seconds: secondsList,
}))
const arrowHourList = computed(() => {
const hour = hours.value
return [hour > 0 ? hour - 1 : void 0, hour, hour < 23 ? hour + 1 : void 0]
})
const arrowMinuteList = computed(() => {
const minute = minutes.value
return [
minute > 0 ? minute - 1 : void 0,
minute,
minute < 59 ? minute + 1 : void 0,
]
})
const arrowSecondList = computed(() => {
const second = seconds.value
return [
second > 0 ? second - 1 : void 0,
second,
second < 59 ? second + 1 : void 0,
]
})
const arrowListMap = computed(() => ({
hours: arrowHourList,
minutes: arrowMinuteList,
seconds: arrowSecondList,
}))
const getAmPmFlag = (hour) => {
const shouldShowAmPm = !!props2.amPmMode
if (!shouldShowAmPm) return ''
const isCapital = props2.amPmMode === 'A'
let content2 = hour < 12 ? ' am' : ' pm'
if (isCapital) content2 = content2.toUpperCase()
return content2
}
const emitSelectRange = (type4) => {
if (type4 === 'hours') {
ctx.emit('select-range', 0, 2)
} else if (type4 === 'minutes') {
ctx.emit('select-range', 3, 5)
} else if (type4 === 'seconds') {
ctx.emit('select-range', 6, 8)
}
currentScrollbar.value = type4
}
const adjustCurrentSpinner = (type4) => {
adjustSpinner(type4, timePartsMap.value[type4].value)
}
const adjustSpinners = () => {
adjustCurrentSpinner('hours')
adjustCurrentSpinner('minutes')
adjustCurrentSpinner('seconds')
}
const getScrollbarElement = (el2) =>
el2.querySelector(`.${ns.namespace.value}-scrollbar__wrap`)
const adjustSpinner = (type4, value2) => {
if (props2.arrowControl) return
const el2 = listRefsMap[type4]
if (el2 && el2.$el) {
getScrollbarElement(el2.$el).scrollTop = Math.max(
0,
value2 * typeItemHeight(type4)
)
}
}
const typeItemHeight = (type4) => {
const el2 = listRefsMap[type4]
return el2.$el.querySelector('li').offsetHeight
}
const onIncreaseClick = () => {
scrollDown(1)
}
const onDecreaseClick = () => {
scrollDown(-1)
}
const scrollDown = (step) => {
if (!currentScrollbar.value) {
emitSelectRange('hours')
}
const label = currentScrollbar.value
let now2 = timePartsMap.value[label].value
const total2 = currentScrollbar.value === 'hours' ? 24 : 60
now2 = (now2 + step + total2) % total2
modifyDateField(label, now2)
adjustSpinner(label, now2)
nextTick(() => emitSelectRange(currentScrollbar.value))
}
const modifyDateField = (type4, value2) => {
const list2 = listMap.value[type4].value
const isDisabled = list2[value2]
if (isDisabled) return
switch (type4) {
case 'hours':
ctx.emit(
'change',
props2.spinnerDate
.hour(value2)
.minute(minutes.value)
.second(seconds.value)
)
break
case 'minutes':
ctx.emit(
'change',
props2.spinnerDate
.hour(hours.value)
.minute(value2)
.second(seconds.value)
)
break
case 'seconds':
ctx.emit(
'change',
props2.spinnerDate
.hour(hours.value)
.minute(minutes.value)
.second(value2)
)
break
}
}
const handleClick2 = (type4, { value: value2, disabled }) => {
if (!disabled) {
modifyDateField(type4, value2)
emitSelectRange(type4)
adjustSpinner(type4, value2)
}
}
const handleScroll2 = (type4) => {
isScrolling = true
debouncedResetScroll(type4)
const value2 = Math.min(
Math.round(
(getScrollbarElement(listRefsMap[type4].$el).scrollTop -
(scrollBarHeight(type4) * 0.5 - 10) / typeItemHeight(type4) +
3) /
typeItemHeight(type4)
),
type4 === 'hours' ? 23 : 59
)
modifyDateField(type4, value2)
}
const scrollBarHeight = (type4) => {
return listRefsMap[type4].$el.offsetHeight
}
const bindScrollEvent = () => {
const bindFunction = (type4) => {
if (listRefsMap[type4] && listRefsMap[type4].$el) {
getScrollbarElement(listRefsMap[type4].$el).onscroll = () => {
handleScroll2(type4)
}
}
}
bindFunction('hours')
bindFunction('minutes')
bindFunction('seconds')
}
onMounted(() => {
nextTick(() => {
!props2.arrowControl && bindScrollEvent()
adjustSpinners()
if (props2.role === 'start') emitSelectRange('hours')
})
})
const setRef = (scrollbar, type4) => {
listRefsMap[type4] = scrollbar
}
ctx.emit('set-option', [`${props2.role}_scrollDown`, scrollDown])
ctx.emit('set-option', [`${props2.role}_emitSelectRange`, emitSelectRange])
const { getHoursList, getMinutesList, getSecondsList } = getTimeLists(
props2.disabledHours,
props2.disabledMinutes,
props2.disabledSeconds
)
watch$1(
() => props2.spinnerDate,
() => {
if (isScrolling) return
adjustSpinners()
}
)
return {
ns,
setRef,
spinnerItems,
currentScrollbar,
hours,
minutes,
seconds,
hoursList,
minutesList,
arrowHourList,
arrowMinuteList,
arrowSecondList,
getAmPmFlag,
emitSelectRange,
adjustCurrentSpinner,
typeItemHeight,
listHoursRef,
listMinutesRef,
listSecondsRef,
onIncreaseClick,
onDecreaseClick,
handleClick: handleClick2,
secondsList,
timePartsMap,
arrowListMap,
listMap,
}
},
})
const _hoisted_1$6T = ['onClick']
const _hoisted_2$5x = ['onMouseenter']
function _sfc_render$1B(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_scrollbar = resolveComponent('el-scrollbar')
const _component_arrow_up = resolveComponent('arrow-up')
const _component_el_icon = resolveComponent('el-icon')
const _component_arrow_down = resolveComponent('arrow-down')
const _directive_repeat_click = resolveDirective('repeat-click')
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
_ctx.ns.b('spinner'),
{ 'has-seconds': _ctx.showSeconds },
]),
},
[
!_ctx.arrowControl
? (openBlock(true),
createElementBlock(
Fragment,
{ key: 0 },
renderList(_ctx.spinnerItems, (item2) => {
return (
openBlock(),
createBlock(
_component_el_scrollbar,
{
key: item2,
ref_for: true,
ref: (scollbar) => _ctx.setRef(scollbar, item2),
class: normalizeClass(_ctx.ns.be('spinner', 'wrapper')),
'wrap-style': 'max-height: inherit;',
'view-class': _ctx.ns.be('spinner', 'list'),
noresize: '',
tag: 'ul',
onMouseenter: ($event) => _ctx.emitSelectRange(item2),
onMousemove: ($event) => _ctx.adjustCurrentSpinner(item2),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
_ctx.listMap[item2].value,
(disabled, key2) => {
return (
openBlock(),
createElementBlock(
'li',
{
key: key2,
class: normalizeClass([
_ctx.ns.be('spinner', 'item'),
_ctx.ns.is(
'active',
key2 === _ctx.timePartsMap[item2].value
),
_ctx.ns.is('disabled', disabled),
]),
onClick: ($event) =>
_ctx.handleClick(item2, {
value: key2,
disabled,
}),
},
[
item2 === 'hours'
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
createTextVNode(
toDisplayString$1(
(
'0' +
(_ctx.amPmMode
? key2 % 12 || 12
: key2)
).slice(-2)
) +
toDisplayString$1(
_ctx.getAmPmFlag(key2)
),
1
),
],
2112
))
: (openBlock(),
createElementBlock(
Fragment,
{ key: 1 },
[
createTextVNode(
toDisplayString$1(
('0' + key2).slice(-2)
),
1
),
],
2112
)),
],
10,
_hoisted_1$6T
)
)
}
),
128
)),
]),
_: 2,
},
1032,
['class', 'view-class', 'onMouseenter', 'onMousemove']
)
)
}),
128
))
: createCommentVNode('v-if', true),
_ctx.arrowControl
? (openBlock(true),
createElementBlock(
Fragment,
{ key: 1 },
renderList(_ctx.spinnerItems, (item2) => {
return (
openBlock(),
createElementBlock(
'div',
{
key: item2,
class: normalizeClass([
_ctx.ns.be('spinner', 'wrapper'),
_ctx.ns.is('arrow'),
]),
onMouseenter: ($event) => _ctx.emitSelectRange(item2),
},
[
withDirectives(
(openBlock(),
createBlock(
_component_el_icon,
{
class: normalizeClass([
'arrow-up',
_ctx.ns.be('spinner', 'arrow'),
]),
},
{
default: withCtx(() => [
createVNode$1(_component_arrow_up),
]),
_: 1,
},
8,
['class']
)),
[[_directive_repeat_click, _ctx.onDecreaseClick]]
),
withDirectives(
(openBlock(),
createBlock(
_component_el_icon,
{
class: normalizeClass([
'arrow-down',
_ctx.ns.be('spinner', 'arrow'),
]),
},
{
default: withCtx(() => [
createVNode$1(_component_arrow_down),
]),
_: 1,
},
8,
['class']
)),
[[_directive_repeat_click, _ctx.onIncreaseClick]]
),
createElementVNode(
'ul',
{
class: normalizeClass(_ctx.ns.be('spinner', 'list')),
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
_ctx.arrowListMap[item2].value,
(time2, key2) => {
return (
openBlock(),
createElementBlock(
'li',
{
key: key2,
class: normalizeClass([
_ctx.ns.be('spinner', 'item'),
_ctx.ns.is(
'active',
time2 ===
_ctx.timePartsMap[item2].value
),
_ctx.ns.is(
'disabled',
_ctx.listMap[item2].value[time2]
),
]),
},
[
typeof time2 === 'number'
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
item2 === 'hours'
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
createTextVNode(
toDisplayString$1(
(
'0' +
(_ctx.amPmMode
? time2 % 12 || 12
: time2)
).slice(-2)
) +
toDisplayString$1(
_ctx.getAmPmFlag(
time2
)
),
1
),
],
2112
))
: (openBlock(),
createElementBlock(
Fragment,
{ key: 1 },
[
createTextVNode(
toDisplayString$1(
('0' + time2).slice(
-2
)
),
1
),
],
2112
)),
],
2112
))
: createCommentVNode('v-if', true),
],
2
)
)
}
),
128
)),
],
2
),
],
42,
_hoisted_2$5x
)
)
}),
128
))
: createCommentVNode('v-if', true),
],
2
)
)
}
var TimeSpinner = /* @__PURE__ */ _export_sfc$1(_sfc_main$8_, [
['render', _sfc_render$1B],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/time-picker/src/time-picker-com/basic-time-spinner.vue',
],
])
const _sfc_main$8Z = defineComponent({
components: {
TimeSpinner,
},
props: {
visible: Boolean,
actualVisible: {
type: Boolean,
default: void 0,
},
datetimeRole: {
type: String,
},
parsedValue: {
type: [Object, String],
},
format: {
type: String,
default: '',
},
},
emits: ['pick', 'select-range', 'set-picker-option'],
setup(props2, ctx) {
const ns = useNamespace('time')
const { t: t3, lang } = useLocale()
const selectionRange = ref([0, 2])
const oldValue = useOldValue(props2)
const transitionName = computed(() => {
return isUndefined$c(props2.actualVisible)
? `${ns.namespace.value}-zoom-in-top`
: ''
})
const showSeconds = computed(() => {
return props2.format.includes('ss')
})
const amPmMode = computed(() => {
if (props2.format.includes('A')) return 'A'
if (props2.format.includes('a')) return 'a'
return ''
})
const isValidValue = (_date) => {
const parsedDate = dayjs(_date).locale(lang.value)
const result = getRangeAvailableTime(parsedDate)
return parsedDate.isSame(result)
}
const handleCancel = () => {
ctx.emit('pick', oldValue.value, false)
}
const handleConfirm = (visible = false, first2 = false) => {
if (first2) return
ctx.emit('pick', props2.parsedValue, visible)
}
const handleChange = (_date) => {
if (!props2.visible) {
return
}
const result = getRangeAvailableTime(_date).millisecond(0)
ctx.emit('pick', result, true)
}
const setSelectionRange = (start2, end2) => {
ctx.emit('select-range', start2, end2)
selectionRange.value = [start2, end2]
}
const changeSelectionRange = (step) => {
const list2 = [0, 3].concat(showSeconds.value ? [6] : [])
const mapping = ['hours', 'minutes'].concat(
showSeconds.value ? ['seconds'] : []
)
const index2 = list2.indexOf(selectionRange.value[0])
const next = (index2 + step + list2.length) % list2.length
timePickerOptions['start_emitSelectRange'](mapping[next])
}
const handleKeydown = (event) => {
const code2 = event.code
if (code2 === EVENT_CODE.left || code2 === EVENT_CODE.right) {
const step = code2 === EVENT_CODE.left ? -1 : 1
changeSelectionRange(step)
event.preventDefault()
return
}
if (code2 === EVENT_CODE.up || code2 === EVENT_CODE.down) {
const step = code2 === EVENT_CODE.up ? -1 : 1
timePickerOptions['start_scrollDown'](step)
event.preventDefault()
return
}
}
const getRangeAvailableTime = (date4) => {
const availableMap = {
hour: getAvailableHours,
minute: getAvailableMinutes,
second: getAvailableSeconds,
}
let result = date4
;['hour', 'minute', 'second'].forEach((_2) => {
if (availableMap[_2]) {
let availableArr
const method4 = availableMap[_2]
if (_2 === 'minute') {
availableArr = method4(result.hour(), props2.datetimeRole)
} else if (_2 === 'second') {
availableArr = method4(
result.hour(),
result.minute(),
props2.datetimeRole
)
} else {
availableArr = method4(props2.datetimeRole)
}
if (
availableArr &&
availableArr.length &&
!availableArr.includes(result[_2]())
) {
result = result[_2](availableArr[0])
}
}
})
return result
}
const parseUserInput = (value2) => {
if (!value2) return null
return dayjs(value2, props2.format).locale(lang.value)
}
const formatToString = (value2) => {
if (!value2) return null
return value2.format(props2.format)
}
const getDefaultValue = () => {
return dayjs(defaultValue).locale(lang.value)
}
ctx.emit('set-picker-option', ['isValidValue', isValidValue])
ctx.emit('set-picker-option', ['formatToString', formatToString])
ctx.emit('set-picker-option', ['parseUserInput', parseUserInput])
ctx.emit('set-picker-option', ['handleKeydown', handleKeydown])
ctx.emit('set-picker-option', [
'getRangeAvailableTime',
getRangeAvailableTime,
])
ctx.emit('set-picker-option', ['getDefaultValue', getDefaultValue])
const timePickerOptions = {}
const onSetOption = (e2) => {
timePickerOptions[e2[0]] = e2[1]
}
const pickerBase = inject('EP_PICKER_BASE')
const {
arrowControl,
disabledHours,
disabledMinutes,
disabledSeconds,
defaultValue,
} = pickerBase.props
const { getAvailableHours, getAvailableMinutes, getAvailableSeconds } =
getAvailableArrs(disabledHours, disabledMinutes, disabledSeconds)
return {
ns,
transitionName,
arrowControl,
onSetOption,
t: t3,
handleConfirm,
handleChange,
setSelectionRange,
amPmMode,
showSeconds,
handleCancel,
disabledHours,
disabledMinutes,
disabledSeconds,
}
},
})
function _sfc_render$1A(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_time_spinner = resolveComponent('time-spinner')
return (
openBlock(),
createBlock(
Transition,
{ name: _ctx.transitionName },
{
default: withCtx(() => [
_ctx.actualVisible || _ctx.visible
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass(_ctx.ns.b('panel')),
},
[
createElementVNode(
'div',
{
class: normalizeClass([
_ctx.ns.be('panel', 'content'),
{ 'has-seconds': _ctx.showSeconds },
]),
},
[
createVNode$1(
_component_time_spinner,
{
ref: 'spinner',
role: _ctx.datetimeRole || 'start',
'arrow-control': _ctx.arrowControl,
'show-seconds': _ctx.showSeconds,
'am-pm-mode': _ctx.amPmMode,
'spinner-date': _ctx.parsedValue,
'disabled-hours': _ctx.disabledHours,
'disabled-minutes': _ctx.disabledMinutes,
'disabled-seconds': _ctx.disabledSeconds,
onChange: _ctx.handleChange,
onSetOption: _ctx.onSetOption,
onSelectRange: _ctx.setSelectionRange,
},
null,
8,
[
'role',
'arrow-control',
'show-seconds',
'am-pm-mode',
'spinner-date',
'disabled-hours',
'disabled-minutes',
'disabled-seconds',
'onChange',
'onSetOption',
'onSelectRange',
]
),
],
2
),
createElementVNode(
'div',
{
class: normalizeClass(_ctx.ns.be('panel', 'footer')),
},
[
createElementVNode(
'button',
{
type: 'button',
class: normalizeClass([
_ctx.ns.be('panel', 'btn'),
'cancel',
]),
onClick:
_cache[0] ||
(_cache[0] = (...args) =>
_ctx.handleCancel && _ctx.handleCancel(...args)),
},
toDisplayString$1(_ctx.t('el.datepicker.cancel')),
3
),
createElementVNode(
'button',
{
type: 'button',
class: normalizeClass([
_ctx.ns.be('panel', 'btn'),
'confirm',
]),
onClick:
_cache[1] ||
(_cache[1] = ($event) => _ctx.handleConfirm()),
},
toDisplayString$1(_ctx.t('el.datepicker.confirm')),
3
),
],
2
),
],
2
))
: createCommentVNode('v-if', true),
]),
_: 1,
},
8,
['name']
)
)
}
var TimePickPanel = /* @__PURE__ */ _export_sfc$1(_sfc_main$8Z, [
['render', _sfc_render$1A],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/time-picker/src/time-picker-com/panel-time-pick.vue',
],
])
const makeSelectRange = (start2, end2) => {
const result = []
for (let i2 = start2; i2 <= end2; i2++) {
result.push(i2)
}
return result
}
const _sfc_main$8Y = defineComponent({
components: { TimeSpinner },
props: {
visible: Boolean,
actualVisible: Boolean,
parsedValue: {
type: [Array],
},
format: {
type: String,
default: '',
},
},
emits: ['pick', 'select-range', 'set-picker-option'],
setup(props2, ctx) {
const { t: t3, lang } = useLocale()
const nsTime = useNamespace('time')
const nsPicker = useNamespace('picker')
const minDate = computed(() => props2.parsedValue[0])
const maxDate = computed(() => props2.parsedValue[1])
const oldValue = useOldValue(props2)
const handleCancel = () => {
ctx.emit('pick', oldValue.value, false)
}
const showSeconds = computed(() => {
return props2.format.includes('ss')
})
const amPmMode = computed(() => {
if (props2.format.includes('A')) return 'A'
if (props2.format.includes('a')) return 'a'
return ''
})
const minSelectableRange = ref([])
const maxSelectableRange = ref([])
const handleConfirm = (visible = false) => {
ctx.emit('pick', [minDate.value, maxDate.value], visible)
}
const handleMinChange = (date4) => {
handleChange(date4.millisecond(0), maxDate.value)
}
const handleMaxChange = (date4) => {
handleChange(minDate.value, date4.millisecond(0))
}
const isValidValue = (_date) => {
const parsedDate = _date.map((_2) => dayjs(_2).locale(lang.value))
const result = getRangeAvailableTime(parsedDate)
return parsedDate[0].isSame(result[0]) && parsedDate[1].isSame(result[1])
}
const handleChange = (_minDate, _maxDate) => {
ctx.emit('pick', [_minDate, _maxDate], true)
}
const btnConfirmDisabled = computed(() => {
return minDate.value > maxDate.value
})
const selectionRange = ref([0, 2])
const setMinSelectionRange = (start2, end2) => {
ctx.emit('select-range', start2, end2, 'min')
selectionRange.value = [start2, end2]
}
const offset2 = computed(() => (showSeconds.value ? 11 : 8))
const setMaxSelectionRange = (start2, end2) => {
ctx.emit('select-range', start2, end2, 'max')
selectionRange.value = [start2 + offset2.value, end2 + offset2.value]
}
const changeSelectionRange = (step) => {
const list2 = showSeconds.value ? [0, 3, 6, 11, 14, 17] : [0, 3, 8, 11]
const mapping = ['hours', 'minutes'].concat(
showSeconds.value ? ['seconds'] : []
)
const index2 = list2.indexOf(selectionRange.value[0])
const next = (index2 + step + list2.length) % list2.length
const half = list2.length / 2
if (next < half) {
timePickerOptions['start_emitSelectRange'](mapping[next])
} else {
timePickerOptions['end_emitSelectRange'](mapping[next - half])
}
}
const handleKeydown = (event) => {
const code2 = event.code
if (code2 === EVENT_CODE.left || code2 === EVENT_CODE.right) {
const step = code2 === EVENT_CODE.left ? -1 : 1
changeSelectionRange(step)
event.preventDefault()
return
}
if (code2 === EVENT_CODE.up || code2 === EVENT_CODE.down) {
const step = code2 === EVENT_CODE.up ? -1 : 1
const role = selectionRange.value[0] < offset2.value ? 'start' : 'end'
timePickerOptions[`${role}_scrollDown`](step)
event.preventDefault()
return
}
}
const disabledHours_ = (role, compare2) => {
const defaultDisable = disabledHours ? disabledHours(role) : []
const isStart = role === 'start'
const compareDate = compare2 || (isStart ? maxDate.value : minDate.value)
const compareHour = compareDate.hour()
const nextDisable = isStart
? makeSelectRange(compareHour + 1, 23)
: makeSelectRange(0, compareHour - 1)
return union$3(defaultDisable, nextDisable)
}
const disabledMinutes_ = (hour, role, compare2) => {
const defaultDisable = disabledMinutes ? disabledMinutes(hour, role) : []
const isStart = role === 'start'
const compareDate = compare2 || (isStart ? maxDate.value : minDate.value)
const compareHour = compareDate.hour()
if (hour !== compareHour) {
return defaultDisable
}
const compareMinute = compareDate.minute()
const nextDisable = isStart
? makeSelectRange(compareMinute + 1, 59)
: makeSelectRange(0, compareMinute - 1)
return union$3(defaultDisable, nextDisable)
}
const disabledSeconds_ = (hour, minute, role, compare2) => {
const defaultDisable = disabledSeconds
? disabledSeconds(hour, minute, role)
: []
const isStart = role === 'start'
const compareDate = compare2 || (isStart ? maxDate.value : minDate.value)
const compareHour = compareDate.hour()
const compareMinute = compareDate.minute()
if (hour !== compareHour || minute !== compareMinute) {
return defaultDisable
}
const compareSecond = compareDate.second()
const nextDisable = isStart
? makeSelectRange(compareSecond + 1, 59)
: makeSelectRange(0, compareSecond - 1)
return union$3(defaultDisable, nextDisable)
}
const getRangeAvailableTime = (dates) => {
return dates.map((_2, index2) =>
getRangeAvailableTimeEach(
dates[0],
dates[1],
index2 === 0 ? 'start' : 'end'
)
)
}
const { getAvailableHours, getAvailableMinutes, getAvailableSeconds } =
getAvailableArrs(disabledHours_, disabledMinutes_, disabledSeconds_)
const getRangeAvailableTimeEach = (startDate, endDate, role) => {
const availableMap = {
hour: getAvailableHours,
minute: getAvailableMinutes,
second: getAvailableSeconds,
}
const isStart = role === 'start'
let result = isStart ? startDate : endDate
const compareDate = isStart ? endDate : startDate
;['hour', 'minute', 'second'].forEach((_2) => {
if (availableMap[_2]) {
let availableArr
const method4 = availableMap[_2]
if (_2 === 'minute') {
availableArr = method4(result.hour(), role, compareDate)
} else if (_2 === 'second') {
availableArr = method4(
result.hour(),
result.minute(),
role,
compareDate
)
} else {
availableArr = method4(role, compareDate)
}
if (
availableArr &&
availableArr.length &&
!availableArr.includes(result[_2]())
) {
const pos = isStart ? 0 : availableArr.length - 1
result = result[_2](availableArr[pos])
}
}
})
return result
}
const parseUserInput = (value2) => {
if (!value2) return null
if (Array.isArray(value2)) {
return value2.map((_2) => dayjs(_2, props2.format).locale(lang.value))
}
return dayjs(value2, props2.format).locale(lang.value)
}
const formatToString = (value2) => {
if (!value2) return null
if (Array.isArray(value2)) {
return value2.map((_2) => _2.format(props2.format))
}
return value2.format(props2.format)
}
const getDefaultValue = () => {
if (Array.isArray(defaultValue)) {
return defaultValue.map((_2) => dayjs(_2).locale(lang.value))
}
const defaultDay = dayjs(defaultValue).locale(lang.value)
return [defaultDay, defaultDay.add(60, 'm')]
}
ctx.emit('set-picker-option', ['formatToString', formatToString])
ctx.emit('set-picker-option', ['parseUserInput', parseUserInput])
ctx.emit('set-picker-option', ['isValidValue', isValidValue])
ctx.emit('set-picker-option', ['handleKeydown', handleKeydown])
ctx.emit('set-picker-option', ['getDefaultValue', getDefaultValue])
ctx.emit('set-picker-option', [
'getRangeAvailableTime',
getRangeAvailableTime,
])
const timePickerOptions = {}
const onSetOption = (e2) => {
timePickerOptions[e2[0]] = e2[1]
}
const pickerBase = inject('EP_PICKER_BASE')
const {
arrowControl,
disabledHours,
disabledMinutes,
disabledSeconds,
defaultValue,
} = pickerBase.props
return {
nsTime,
nsPicker,
arrowControl,
onSetOption,
setMaxSelectionRange,
setMinSelectionRange,
btnConfirmDisabled,
handleCancel,
handleConfirm,
t: t3,
showSeconds,
minDate,
maxDate,
amPmMode,
handleMinChange,
handleMaxChange,
minSelectableRange,
maxSelectableRange,
disabledHours_,
disabledMinutes_,
disabledSeconds_,
}
},
})
const _hoisted_1$6S = ['disabled']
function _sfc_render$1z(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_time_spinner = resolveComponent('time-spinner')
return _ctx.actualVisible
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass([
_ctx.nsTime.b('range-picker'),
_ctx.nsPicker.b('panel'),
]),
},
[
createElementVNode(
'div',
{
class: normalizeClass(_ctx.nsTime.be('range-picker', 'content')),
},
[
createElementVNode(
'div',
{
class: normalizeClass(_ctx.nsTime.be('range-picker', 'cell')),
},
[
createElementVNode(
'div',
{
class: normalizeClass(
_ctx.nsTime.be('range-picker', 'header')
),
},
toDisplayString$1(_ctx.t('el.datepicker.startTime')),
3
),
createElementVNode(
'div',
{
class: normalizeClass([
_ctx.nsTime.be('range-picker', 'body'),
_ctx.nsTime.be('panel', 'content'),
_ctx.nsTime.is('arrow', _ctx.arrowControl),
{ 'has-seconds': _ctx.showSeconds },
]),
},
[
createVNode$1(
_component_time_spinner,
{
ref: 'minSpinner',
role: 'start',
'show-seconds': _ctx.showSeconds,
'am-pm-mode': _ctx.amPmMode,
'arrow-control': _ctx.arrowControl,
'spinner-date': _ctx.minDate,
'disabled-hours': _ctx.disabledHours_,
'disabled-minutes': _ctx.disabledMinutes_,
'disabled-seconds': _ctx.disabledSeconds_,
onChange: _ctx.handleMinChange,
onSetOption: _ctx.onSetOption,
onSelectRange: _ctx.setMinSelectionRange,
},
null,
8,
[
'show-seconds',
'am-pm-mode',
'arrow-control',
'spinner-date',
'disabled-hours',
'disabled-minutes',
'disabled-seconds',
'onChange',
'onSetOption',
'onSelectRange',
]
),
],
2
),
],
2
),
createElementVNode(
'div',
{
class: normalizeClass(_ctx.nsTime.be('range-picker', 'cell')),
},
[
createElementVNode(
'div',
{
class: normalizeClass(
_ctx.nsTime.be('range-picker', 'header')
),
},
toDisplayString$1(_ctx.t('el.datepicker.endTime')),
3
),
createElementVNode(
'div',
{
class: normalizeClass([
_ctx.nsTime.be('range-picker', 'body'),
_ctx.nsTime.be('panel', 'content'),
_ctx.nsTime.is('arrow', _ctx.arrowControl),
{ 'has-seconds': _ctx.showSeconds },
]),
},
[
createVNode$1(
_component_time_spinner,
{
ref: 'maxSpinner',
role: 'end',
'show-seconds': _ctx.showSeconds,
'am-pm-mode': _ctx.amPmMode,
'arrow-control': _ctx.arrowControl,
'spinner-date': _ctx.maxDate,
'disabled-hours': _ctx.disabledHours_,
'disabled-minutes': _ctx.disabledMinutes_,
'disabled-seconds': _ctx.disabledSeconds_,
onChange: _ctx.handleMaxChange,
onSetOption: _ctx.onSetOption,
onSelectRange: _ctx.setMaxSelectionRange,
},
null,
8,
[
'show-seconds',
'am-pm-mode',
'arrow-control',
'spinner-date',
'disabled-hours',
'disabled-minutes',
'disabled-seconds',
'onChange',
'onSetOption',
'onSelectRange',
]
),
],
2
),
],
2
),
],
2
),
createElementVNode(
'div',
{
class: normalizeClass(_ctx.nsTime.be('panel', 'footer')),
},
[
createElementVNode(
'button',
{
type: 'button',
class: normalizeClass([
_ctx.nsTime.be('panel', 'btn'),
'cancel',
]),
onClick:
_cache[0] || (_cache[0] = ($event) => _ctx.handleCancel()),
},
toDisplayString$1(_ctx.t('el.datepicker.cancel')),
3
),
createElementVNode(
'button',
{
type: 'button',
class: normalizeClass([
_ctx.nsTime.be('panel', 'btn'),
'confirm',
]),
disabled: _ctx.btnConfirmDisabled,
onClick:
_cache[1] || (_cache[1] = ($event) => _ctx.handleConfirm()),
},
toDisplayString$1(_ctx.t('el.datepicker.confirm')),
11,
_hoisted_1$6S
),
],
2
),
],
2
))
: createCommentVNode('v-if', true)
}
var TimeRangePanel = /* @__PURE__ */ _export_sfc$1(_sfc_main$8Y, [
['render', _sfc_render$1z],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/time-picker/src/time-picker-com/panel-time-range.vue',
],
])
dayjs.extend(customParseFormat)
var TimePicker = defineComponent({
name: 'ElTimePicker',
install: null,
props: {
...timePickerDefaultProps,
isRange: {
type: Boolean,
default: false,
},
},
emits: ['update:modelValue'],
setup(props2, ctx) {
const commonPicker = ref(null)
const type4 = props2.isRange ? 'timerange' : 'time'
const panel = props2.isRange ? TimeRangePanel : TimePickPanel
const refProps = {
...props2,
focus: () => {
var _a2
;(_a2 = commonPicker.value) == null ? void 0 : _a2.handleFocus()
},
blur: () => {
var _a2
;(_a2 = commonPicker.value) == null ? void 0 : _a2.handleBlur()
},
}
provide('ElPopperOptions', props2.popperOptions)
ctx.expose(refProps)
return () => {
var _a2
const format2 = (_a2 = props2.format) != null ? _a2 : DEFAULT_FORMATS_TIME
return h$4(
CommonPicker,
{
...props2,
format: format2,
type: type4,
ref: commonPicker,
'onUpdate:modelValue': (value2) =>
ctx.emit('update:modelValue', value2),
},
{
default: (scopedProps) => h$4(panel, scopedProps),
}
)
}
},
})
const rangeArr = (n2) => Array.from(Array.from({ length: n2 }).keys())
const extractDateFormat = (format2) => {
return format2
.replace(/\W?m{1,2}|\W?ZZ/g, '')
.replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi, '')
.trim()
}
const extractTimeFormat = (format2) => {
return format2
.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?Y{2,4}/g, '')
.trim()
}
const _TimePicker = TimePicker
_TimePicker.install = (app2) => {
app2.component(_TimePicker.name, _TimePicker)
}
const ElTimePicker = _TimePicker
const getPrevMonthLastDays = (date4, count2) => {
const lastDay = date4.subtract(1, 'month').endOf('month').date()
return rangeArr(count2).map((_2, index2) => lastDay - (count2 - index2 - 1))
}
const getMonthDays = (date4) => {
const days = date4.daysInMonth()
return rangeArr(days).map((_2, index2) => index2 + 1)
}
const toNestedArr = (days) =>
rangeArr(days.length / 7).map((index2) => {
const start2 = index2 * 7
return days.slice(start2, start2 + 7)
})
const dateTableProps = buildProps({
selectedDay: {
type: definePropType(Object),
},
range: {
type: definePropType(Array),
},
date: {
type: definePropType(Object),
required: true,
},
hideHeader: {
type: Boolean,
},
})
const dateTableEmits = {
pick: (value2) => isObject$v(value2),
}
const _hoisted_1$6R = { key: 0 }
const _hoisted_2$5w = ['onClick']
const __default__$z = {
name: 'DateTable',
}
const _sfc_main$8X = /* @__PURE__ */ defineComponent({
...__default__$z,
props: dateTableProps,
emits: dateTableEmits,
setup(__props2, { expose, emit: emit2 }) {
const props2 = __props2
dayjs.extend(localeData)
const { t: t3, lang } = useLocale()
const nsTable = useNamespace('calendar-table')
const nsDay = useNamespace('calendar-day')
const now2 = dayjs().locale(lang.value)
const firstDayOfWeek = now2.$locale().weekStart || 0
const isInRange = computed(() => !!props2.range && !!props2.range.length)
const rows = computed(() => {
let days = []
if (isInRange.value) {
const [start2, end2] = props2.range
const currentMonthRange = rangeArr(end2.date() - start2.date() + 1).map(
(index2) => ({
text: start2.date() + index2,
type: 'current',
})
)
let remaining = currentMonthRange.length % 7
remaining = remaining === 0 ? 0 : 7 - remaining
const nextMonthRange = rangeArr(remaining).map((_2, index2) => ({
text: index2 + 1,
type: 'next',
}))
days = currentMonthRange.concat(nextMonthRange)
} else {
const firstDay = props2.date.startOf('month').day() || 7
const prevMonthDays = getPrevMonthLastDays(
props2.date,
firstDay - firstDayOfWeek
).map((day) => ({
text: day,
type: 'prev',
}))
const currentMonthDays = getMonthDays(props2.date).map((day) => ({
text: day,
type: 'current',
}))
days = [...prevMonthDays, ...currentMonthDays]
const nextMonthDays = rangeArr(42 - days.length).map((_2, index2) => ({
text: index2 + 1,
type: 'next',
}))
days = days.concat(nextMonthDays)
}
return toNestedArr(days)
})
const weekDays = computed(() => {
const start2 = firstDayOfWeek
if (start2 === 0) {
return WEEK_DAYS.map((_2) => t3(`el.datepicker.weeks.${_2}`))
} else {
return WEEK_DAYS.slice(start2)
.concat(WEEK_DAYS.slice(0, start2))
.map((_2) => t3(`el.datepicker.weeks.${_2}`))
}
})
const getFormattedDate = (day, type4) => {
switch (type4) {
case 'prev':
return props2.date.startOf('month').subtract(1, 'month').date(day)
case 'next':
return props2.date.startOf('month').add(1, 'month').date(day)
case 'current':
return props2.date.date(day)
}
}
const getCellClass = ({ text: text2, type: type4 }) => {
const classes = [type4]
if (type4 === 'current') {
const date4 = getFormattedDate(text2, type4)
if (date4.isSame(props2.selectedDay, 'day')) {
classes.push(nsDay.is('selected'))
}
if (date4.isSame(now2, 'day')) {
classes.push(nsDay.is('today'))
}
}
return classes
}
const handlePickDay = ({ text: text2, type: type4 }) => {
const date4 = getFormattedDate(text2, type4)
emit2('pick', date4)
}
const getSlotData = ({ text: text2, type: type4 }) => {
const day = getFormattedDate(text2, type4)
return {
isSelected: day.isSame(props2.selectedDay),
type: `${type4}-month`,
day: day.format('YYYY-MM-DD'),
date: day.toDate(),
}
}
expose({
getFormattedDate,
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'table',
{
class: normalizeClass([
unref(nsTable).b(),
unref(nsTable).is('range', unref(isInRange)),
]),
cellspacing: '0',
cellpadding: '0',
},
[
!_ctx.hideHeader
? (openBlock(),
createElementBlock('thead', _hoisted_1$6R, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(weekDays), (day) => {
return (
openBlock(),
createElementBlock(
'th',
{ key: day },
toDisplayString$1(day),
1
)
)
}),
128
)),
]))
: createCommentVNode('v-if', true),
createElementVNode('tbody', null, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(rows), (row, index2) => {
return (
openBlock(),
createElementBlock(
'tr',
{
key: index2,
class: normalizeClass({
[unref(nsTable).e('row')]: true,
[unref(nsTable).em('row', 'hide-border')]:
index2 === 0 && _ctx.hideHeader,
}),
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(row, (cell, key2) => {
return (
openBlock(),
createElementBlock(
'td',
{
key: key2,
class: normalizeClass(getCellClass(cell)),
onClick: ($event) => handlePickDay(cell),
},
[
createElementVNode(
'div',
{
class: normalizeClass(unref(nsDay).b()),
},
[
renderSlot(
_ctx.$slots,
'dateCell',
{
data: getSlotData(cell),
},
() => [
createElementVNode(
'span',
null,
toDisplayString$1(cell.text),
1
),
]
),
],
2
),
],
10,
_hoisted_2$5w
)
)
}),
128
)),
],
2
)
)
}),
128
)),
]),
],
2
)
)
}
},
})
var DateTable$1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$8X, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/calendar/src/date-table.vue',
],
])
const calendarProps = buildProps({
modelValue: {
type: Date,
},
range: {
type: definePropType(Array),
validator: (range3) =>
Array.isArray(range3) &&
range3.length === 2 &&
range3.every((item2) => item2 instanceof Date),
},
})
const calendarEmits = {
[UPDATE_MODEL_EVENT]: (value2) => value2 instanceof Date,
input: (value2) => value2 instanceof Date,
}
const __default__$y = {
name: 'ElCalendar',
}
const _sfc_main$8W = /* @__PURE__ */ defineComponent({
...__default__$y,
props: calendarProps,
emits: calendarEmits,
setup(__props2, { expose, emit: emit2 }) {
const props2 = __props2
const ns = useNamespace('calendar')
const { t: t3, lang } = useLocale()
const selectedDay = ref()
const now2 = dayjs().locale(lang.value)
const prevMonthDayjs = computed(() => {
return date4.value.subtract(1, 'month').date(1)
})
const nextMonthDayjs = computed(() => {
return date4.value.add(1, 'month').date(1)
})
const prevYearDayjs = computed(() => {
return date4.value.subtract(1, 'year').date(1)
})
const nextYearDayjs = computed(() => {
return date4.value.add(1, 'year').date(1)
})
const i18nDate = computed(() => {
const pickedMonth = `el.datepicker.month${date4.value.format('M')}`
return `${date4.value.year()} ${t3('el.datepicker.year')} ${t3(
pickedMonth
)}`
})
const realSelectedDay = computed({
get() {
if (!props2.modelValue) return selectedDay.value
return date4.value
},
set(val2) {
if (!val2) return
selectedDay.value = val2
const result = val2.toDate()
emit2('input', result)
emit2('update:modelValue', result)
},
})
const date4 = computed(() => {
if (!props2.modelValue) {
if (realSelectedDay.value) {
return realSelectedDay.value
} else if (validatedRange.value.length) {
return validatedRange.value[0][0]
}
return now2
} else {
return dayjs(props2.modelValue).locale(lang.value)
}
})
const calculateValidatedDateRange = (startDayjs, endDayjs) => {
const firstDay = startDayjs.startOf('week')
const lastDay = endDayjs.endOf('week')
const firstMonth = firstDay.get('month')
const lastMonth = lastDay.get('month')
if (firstMonth === lastMonth) {
return [[firstDay, lastDay]]
} else if (firstMonth + 1 === lastMonth) {
const firstMonthLastDay = firstDay.endOf('month')
const lastMonthFirstDay = lastDay.startOf('month')
const isSameWeek = firstMonthLastDay.isSame(lastMonthFirstDay, 'week')
const lastMonthStartDay = isSameWeek
? lastMonthFirstDay.add(1, 'week')
: lastMonthFirstDay
return [
[firstDay, firstMonthLastDay],
[lastMonthStartDay.startOf('week'), lastDay],
]
} else if (firstMonth + 2 === lastMonth) {
const firstMonthLastDay = firstDay.endOf('month')
const secondMonthFirstDay = firstDay.add(1, 'month').startOf('month')
const secondMonthStartDay = firstMonthLastDay.isSame(
secondMonthFirstDay,
'week'
)
? secondMonthFirstDay.add(1, 'week')
: secondMonthFirstDay
const secondMonthLastDay = secondMonthStartDay.endOf('month')
const lastMonthFirstDay = lastDay.startOf('month')
const lastMonthStartDay = secondMonthLastDay.isSame(
lastMonthFirstDay,
'week'
)
? lastMonthFirstDay.add(1, 'week')
: lastMonthFirstDay
return [
[firstDay, firstMonthLastDay],
[secondMonthStartDay.startOf('week'), secondMonthLastDay],
[lastMonthStartDay.startOf('week'), lastDay],
]
} else {
return []
}
}
const validatedRange = computed(() => {
if (!props2.range) return []
const rangeArrDayjs = props2.range.map((_2) =>
dayjs(_2).locale(lang.value)
)
const [startDayjs, endDayjs] = rangeArrDayjs
if (startDayjs.isAfter(endDayjs)) {
return []
}
if (startDayjs.isSame(endDayjs, 'month')) {
return calculateValidatedDateRange(startDayjs, endDayjs)
} else {
if (startDayjs.add(1, 'month').month() !== endDayjs.month()) {
return []
}
return calculateValidatedDateRange(startDayjs, endDayjs)
}
})
const pickDay = (day) => {
realSelectedDay.value = day
}
const selectDate = (type4) => {
let day
if (type4 === 'prev-month') {
day = prevMonthDayjs.value
} else if (type4 === 'next-month') {
day = nextMonthDayjs.value
} else if (type4 === 'prev-year') {
day = prevYearDayjs.value
} else if (type4 === 'next-year') {
day = nextYearDayjs.value
} else {
day = now2
}
if (day.isSame(date4.value, 'day')) return
pickDay(day)
}
expose({
selectedDay: realSelectedDay,
pickDay,
selectDate,
calculateValidatedDateRange,
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass(unref(ns).b()),
},
[
createElementVNode(
'div',
{
class: normalizeClass(unref(ns).e('header')),
},
[
renderSlot(
_ctx.$slots,
'header',
{ date: unref(i18nDate) },
() => [
createElementVNode(
'div',
{
class: normalizeClass(unref(ns).e('title')),
},
toDisplayString$1(unref(i18nDate)),
3
),
unref(validatedRange).length === 0
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass(unref(ns).e('button-group')),
},
[
createVNode$1(unref(ElButtonGroup$1), null, {
default: withCtx(() => [
createVNode$1(
unref(ElButton),
{
size: 'small',
onClick:
_cache[0] ||
(_cache[0] = ($event) =>
selectDate('prev-month')),
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(
unref(t3)('el.datepicker.prevMonth')
),
1
),
]),
_: 1,
}
),
createVNode$1(
unref(ElButton),
{
size: 'small',
onClick:
_cache[1] ||
(_cache[1] = ($event) =>
selectDate('today')),
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(
unref(t3)('el.datepicker.today')
),
1
),
]),
_: 1,
}
),
createVNode$1(
unref(ElButton),
{
size: 'small',
onClick:
_cache[2] ||
(_cache[2] = ($event) =>
selectDate('next-month')),
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(
unref(t3)('el.datepicker.nextMonth')
),
1
),
]),
_: 1,
}
),
]),
_: 1,
}),
],
2
))
: createCommentVNode('v-if', true),
]
),
],
2
),
unref(validatedRange).length === 0
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass(unref(ns).e('body')),
},
[
createVNode$1(
DateTable$1,
{
date: unref(date4),
'selected-day': unref(realSelectedDay),
onPick: pickDay,
},
createSlots({ _: 2 }, [
_ctx.$slots.dateCell
? {
name: 'dateCell',
fn: withCtx((data2) => [
renderSlot(
_ctx.$slots,
'dateCell',
normalizeProps(guardReactiveProps(data2))
),
]),
}
: void 0,
]),
1032,
['date', 'selected-day']
),
],
2
))
: (openBlock(),
createElementBlock(
'div',
{
key: 1,
class: normalizeClass(unref(ns).e('body')),
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(validatedRange), (range_, index2) => {
return (
openBlock(),
createBlock(
DateTable$1,
{
key: index2,
date: range_[0],
'selected-day': unref(realSelectedDay),
range: range_,
'hide-header': index2 !== 0,
onPick: pickDay,
},
createSlots({ _: 2 }, [
_ctx.$slots.dateCell
? {
name: 'dateCell',
fn: withCtx((data2) => [
renderSlot(
_ctx.$slots,
'dateCell',
normalizeProps(
guardReactiveProps(data2)
)
),
]),
}
: void 0,
]),
1032,
['date', 'selected-day', 'range', 'hide-header']
)
)
}),
128
)),
],
2
)),
],
2
)
)
}
},
})
var Calendar$2 = /* @__PURE__ */ _export_sfc$1(_sfc_main$8W, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/calendar/src/calendar.vue',
],
])
const ElCalendar = withInstall(Calendar$2)
const cardProps = buildProps({
header: {
type: String,
default: '',
},
bodyStyle: {
type: definePropType([String, Object, Array]),
default: '',
},
shadow: {
type: String,
default: 'always',
},
})
const __default__$x = {
name: 'ElCard',
}
const _sfc_main$8V = /* @__PURE__ */ defineComponent({
...__default__$x,
props: cardProps,
setup(__props2) {
const ns = useNamespace('card')
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
unref(ns).b(),
unref(ns).is(`${_ctx.shadow}-shadow`),
]),
},
[
_ctx.$slots.header || _ctx.header
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass(unref(ns).e('header')),
},
[
renderSlot(_ctx.$slots, 'header', {}, () => [
createTextVNode(toDisplayString$1(_ctx.header), 1),
]),
],
2
))
: createCommentVNode('v-if', true),
createElementVNode(
'div',
{
class: normalizeClass(unref(ns).e('body')),
style: normalizeStyle$1(_ctx.bodyStyle),
},
[renderSlot(_ctx.$slots, 'default')],
6
),
],
2
)
)
}
},
})
var Card = /* @__PURE__ */ _export_sfc$1(_sfc_main$8V, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/card/src/card.vue',
],
])
const ElCard = withInstall(Card)
const carouselProps = buildProps({
initialIndex: {
type: Number,
default: 0,
},
height: { type: String, default: '' },
trigger: {
type: String,
default: 'hover',
},
autoplay: {
type: Boolean,
default: true,
},
interval: {
type: Number,
default: 3e3,
},
indicatorPosition: { type: String, default: '' },
indicator: {
type: Boolean,
default: true,
},
arrow: {
type: String,
default: 'hover',
},
type: { type: String, default: '' },
loop: {
type: Boolean,
default: true,
},
direction: {
type: String,
default: 'horizontal',
validator(val2) {
return ['horizontal', 'vertical'].includes(val2)
},
},
pauseOnHover: {
type: Boolean,
default: true,
},
})
const carouselEmits = {
change: (current2, prev) => [current2, prev].every(isNumber$h),
}
const _hoisted_1$6Q = ['onMouseenter', 'onMouseleave']
const _hoisted_2$5v = ['onMouseenter', 'onClick']
const _hoisted_3$4Q = { key: 0 }
const __default__$w = {
name: 'ElCarousel',
}
const _sfc_main$8U = /* @__PURE__ */ defineComponent({
...__default__$w,
props: carouselProps,
emits: carouselEmits,
setup(__props2, { expose, emit: emit2 }) {
const props2 = __props2
const ns = useNamespace('carousel')
const THROTTLE_TIME = 300
const activeIndex = ref(-1)
const timer2 = ref(null)
const hover = ref(false)
const root2 = ref()
const items = ref([])
const arrowDisplay = computed(
() => props2.arrow !== 'never' && !unref(isVertical)
)
const hasLabel = computed(() => {
return items.value.some(
(item2) => item2.props.label.toString().length > 0
)
})
const carouselClasses = computed(() => {
const classes = [ns.b(), ns.m(props2.direction)]
if (unref(isCardType)) {
classes.push(ns.m('card'))
}
return classes
})
const indicatorsClasses = computed(() => {
const classes = [
ns.e('indicators'),
ns.em('indicators', props2.direction),
]
if (hasLabel.value) {
classes.push(ns.em('indicators', 'labels'))
}
if (props2.indicatorPosition === 'outside' || unref(isCardType)) {
classes.push(ns.em('indicators', 'outside'))
}
return classes
})
const isCardType = computed(() => props2.type === 'card')
const isVertical = computed(() => props2.direction === 'vertical')
const throttledArrowClick = throttle$4(
(index2) => {
setActiveItem(index2)
},
THROTTLE_TIME,
{ trailing: true }
)
const throttledIndicatorHover = throttle$4((index2) => {
handleIndicatorHover(index2)
}, THROTTLE_TIME)
function pauseTimer() {
if (timer2.value) {
clearInterval(timer2.value)
timer2.value = null
}
}
function startTimer2() {
if (props2.interval <= 0 || !props2.autoplay || timer2.value) return
timer2.value = setInterval(() => playSlides(), props2.interval)
}
const playSlides = () => {
if (activeIndex.value < items.value.length - 1) {
activeIndex.value = activeIndex.value + 1
} else if (props2.loop) {
activeIndex.value = 0
}
}
function setActiveItem(index2) {
if (isString$f(index2)) {
const filteredItems = items.value.filter(
(item2) => item2.props.name === index2
)
if (filteredItems.length > 0) {
index2 = items.value.indexOf(filteredItems[0])
}
}
index2 = Number(index2)
if (Number.isNaN(index2) || index2 !== Math.floor(index2)) {
return
}
const itemCount = items.value.length
const oldIndex2 = activeIndex.value
if (index2 < 0) {
activeIndex.value = props2.loop ? itemCount - 1 : 0
} else if (index2 >= itemCount) {
activeIndex.value = props2.loop ? 0 : itemCount - 1
} else {
activeIndex.value = index2
}
if (oldIndex2 === activeIndex.value) {
resetItemPosition(oldIndex2)
}
}
function resetItemPosition(oldIndex2) {
items.value.forEach((item2, index2) => {
item2.translateItem(index2, activeIndex.value, oldIndex2)
})
}
function addItem(item2) {
items.value.push(item2)
}
function removeItem(uid2) {
const index2 = items.value.findIndex((item2) => item2.uid === uid2)
if (index2 !== -1) {
items.value.splice(index2, 1)
if (activeIndex.value === index2) next()
}
}
function itemInStage(item2, index2) {
var _a2, _b2, _c2, _d
const _items = unref(items)
const itemCount = _items.length
if (itemCount === 0 || !item2.states.inStage) return false
const nextItemIndex = index2 + 1
const prevItemIndex = index2 - 1
const lastItemIndex = itemCount - 1
const isLastItemActive = _items[lastItemIndex].states.active
const isFirstItemActive = _items[0].states.active
const isNextItemActive =
(_b2 = (_a2 = _items[nextItemIndex]) == null ? void 0 : _a2.states) ==
null
? void 0
: _b2.active
const isPrevItemActive =
(_d = (_c2 = _items[prevItemIndex]) == null ? void 0 : _c2.states) ==
null
? void 0
: _d.active
if ((index2 === lastItemIndex && isFirstItemActive) || isNextItemActive) {
return 'left'
} else if ((index2 === 0 && isLastItemActive) || isPrevItemActive) {
return 'right'
}
return false
}
function handleMouseEnter() {
hover.value = true
if (props2.pauseOnHover) {
pauseTimer()
}
}
function handleMouseLeave() {
hover.value = false
startTimer2()
}
function handleButtonEnter(arrow2) {
if (unref(isVertical)) return
items.value.forEach((item2, index2) => {
if (arrow2 === itemInStage(item2, index2)) {
item2.states.hover = true
}
})
}
function handleButtonLeave() {
if (unref(isVertical)) return
items.value.forEach((item2) => {
item2.states.hover = false
})
}
function handleIndicatorClick(index2) {
activeIndex.value = index2
}
function handleIndicatorHover(index2) {
if (props2.trigger === 'hover' && index2 !== activeIndex.value) {
activeIndex.value = index2
}
}
function prev() {
setActiveItem(activeIndex.value - 1)
}
function next() {
setActiveItem(activeIndex.value + 1)
}
watch$1(
() => activeIndex.value,
(current2, prev2) => {
resetItemPosition(prev2)
if (prev2 > -1) {
emit2('change', current2, prev2)
}
}
)
watch$1(
() => props2.autoplay,
(autoplay) => {
autoplay ? startTimer2() : pauseTimer()
}
)
watch$1(
() => props2.loop,
() => {
setActiveItem(activeIndex.value)
}
)
const resizeObserver = shallowRef()
onMounted(async () => {
await nextTick()
resizeObserver.value = useResizeObserver$1(root2.value, () => {
resetItemPosition()
})
if (
props2.initialIndex < items.value.length &&
props2.initialIndex >= 0
) {
activeIndex.value = props2.initialIndex
}
startTimer2()
})
onBeforeUnmount(() => {
pauseTimer()
if (root2.value && resizeObserver.value) resizeObserver.value.stop()
})
provide(carouselContextKey, {
root: root2,
isCardType,
isVertical,
items,
loop: props2.loop,
addItem,
removeItem,
setActiveItem,
})
expose({
setActiveItem,
prev,
next,
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
ref_key: 'root',
ref: root2,
class: normalizeClass(unref(carouselClasses)),
onMouseenter: withModifiers(handleMouseEnter, ['stop']),
onMouseleave: withModifiers(handleMouseLeave, ['stop']),
},
[
createElementVNode(
'div',
{
class: normalizeClass(unref(ns).e('container')),
style: normalizeStyle$1({ height: _ctx.height }),
},
[
unref(arrowDisplay)
? (openBlock(),
createBlock(
Transition,
{
key: 0,
name: 'carousel-arrow-left',
},
{
default: withCtx(() => [
withDirectives(
createElementVNode(
'button',
{
type: 'button',
class: normalizeClass([
unref(ns).e('arrow'),
unref(ns).em('arrow', 'left'),
]),
onMouseenter:
_cache[0] ||
(_cache[0] = ($event) =>
handleButtonEnter('left')),
onMouseleave: handleButtonLeave,
onClick:
_cache[1] ||
(_cache[1] = withModifiers(
($event) =>
unref(throttledArrowClick)(
activeIndex.value - 1
),
['stop']
)),
},
[
createVNode$1(unref(ElIcon), null, {
default: withCtx(() => [
createVNode$1(unref(arrowLeft)),
]),
_: 1,
}),
],
34
),
[
[
vShow,
(_ctx.arrow === 'always' || hover.value) &&
(props2.loop || activeIndex.value > 0),
],
]
),
]),
_: 1,
}
))
: createCommentVNode('v-if', true),
unref(arrowDisplay)
? (openBlock(),
createBlock(
Transition,
{
key: 1,
name: 'carousel-arrow-right',
},
{
default: withCtx(() => [
withDirectives(
createElementVNode(
'button',
{
type: 'button',
class: normalizeClass([
unref(ns).e('arrow'),
unref(ns).em('arrow', 'right'),
]),
onMouseenter:
_cache[2] ||
(_cache[2] = ($event) =>
handleButtonEnter('right')),
onMouseleave: handleButtonLeave,
onClick:
_cache[3] ||
(_cache[3] = withModifiers(
($event) =>
unref(throttledArrowClick)(
activeIndex.value + 1
),
['stop']
)),
},
[
createVNode$1(unref(ElIcon), null, {
default: withCtx(() => [
createVNode$1(unref(arrowRight)),
]),
_: 1,
}),
],
34
),
[
[
vShow,
(_ctx.arrow === 'always' || hover.value) &&
(props2.loop ||
activeIndex.value < items.value.length - 1),
],
]
),
]),
_: 1,
}
))
: createCommentVNode('v-if', true),
renderSlot(_ctx.$slots, 'default'),
],
6
),
_ctx.indicatorPosition !== 'none'
? (openBlock(),
createElementBlock(
'ul',
{
key: 0,
class: normalizeClass(unref(indicatorsClasses)),
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(items.value, (item2, index2) => {
return (
openBlock(),
createElementBlock(
'li',
{
key: index2,
class: normalizeClass([
unref(ns).e('indicator'),
unref(ns).em('indicator', _ctx.direction),
unref(ns).is(
'active',
index2 === activeIndex.value
),
]),
onMouseenter: ($event) =>
unref(throttledIndicatorHover)(index2),
onClick: withModifiers(
($event) => handleIndicatorClick(index2),
['stop']
),
},
[
createElementVNode(
'button',
{
class: normalizeClass(unref(ns).e('button')),
},
[
unref(hasLabel)
? (openBlock(),
createElementBlock(
'span',
_hoisted_3$4Q,
toDisplayString$1(item2.props.label),
1
))
: createCommentVNode('v-if', true),
],
2
),
],
42,
_hoisted_2$5v
)
)
}),
128
)),
],
2
))
: createCommentVNode('v-if', true),
],
42,
_hoisted_1$6Q
)
)
}
},
})
var Carousel = /* @__PURE__ */ _export_sfc$1(_sfc_main$8U, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/carousel/src/carousel.vue',
],
])
const carouselItemProps = buildProps({
name: { type: String, default: '' },
label: {
type: [String, Number],
default: '',
},
})
const __default__$v = {
name: 'ElCarouselItem',
}
const _sfc_main$8T = /* @__PURE__ */ defineComponent({
...__default__$v,
props: carouselItemProps,
setup(__props2) {
const props2 = __props2
const ns = useNamespace('carousel')
const carouselContext = inject(carouselContextKey)
const instance = getCurrentInstance()
const CARD_SCALE = 0.83
const hover = ref(false)
const translate2 = ref(0)
const scale2 = ref(1)
const active = ref(false)
const ready = ref(false)
const inStage = ref(false)
const animating = ref(false)
const { isCardType, isVertical } = carouselContext
const itemStyle = computed(() => {
const translateType = `translate${unref(isVertical) ? 'Y' : 'X'}`
const _translate = `${translateType}(${unref(translate2)}px)`
const _scale = `scale(${unref(scale2)})`
const transform3 = [_translate, _scale].join(' ')
return {
transform: transform3,
}
})
function processIndex(index2, activeIndex, length2) {
const lastItemIndex = length2 - 1
const prevItemIndex = activeIndex - 1
const nextItemIndex = activeIndex + 1
const halfItemIndex = length2 / 2
if (activeIndex === 0 && index2 === lastItemIndex) {
return -1
} else if (activeIndex === lastItemIndex && index2 === 0) {
return length2
} else if (
index2 < prevItemIndex &&
activeIndex - index2 >= halfItemIndex
) {
return length2 + 1
} else if (
index2 > nextItemIndex &&
index2 - activeIndex >= halfItemIndex
) {
return -2
}
return index2
}
function calcCardTranslate(index2, activeIndex) {
var _a2
const parentWidth =
((_a2 = carouselContext.root.value) == null
? void 0
: _a2.offsetWidth) || 0
if (inStage.value) {
return (
(parentWidth * ((2 - CARD_SCALE) * (index2 - activeIndex) + 1)) / 4
)
} else if (index2 < activeIndex) {
return (-(1 + CARD_SCALE) * parentWidth) / 4
} else {
return ((3 + CARD_SCALE) * parentWidth) / 4
}
}
function calcTranslate(index2, activeIndex, isVertical2) {
const rootEl2 = carouselContext.root.value
if (!rootEl2) return 0
const distance2 =
(isVertical2 ? rootEl2.offsetHeight : rootEl2.offsetWidth) || 0
return distance2 * (index2 - activeIndex)
}
const translateItem = (index2, activeIndex, oldIndex2) => {
var _a2
const _isCardType = unref(isCardType)
const carouselItemLength =
(_a2 = carouselContext.items.value.length) != null ? _a2 : Number.NaN
const isActive = index2 === activeIndex
if (!_isCardType && !isUndefined$c(oldIndex2)) {
animating.value = isActive || index2 === oldIndex2
}
if (!isActive && carouselItemLength > 2 && carouselContext.loop) {
index2 = processIndex(index2, activeIndex, carouselItemLength)
}
const _isVertical = unref(isVertical)
active.value = isActive
if (_isCardType) {
inStage.value = Math.round(Math.abs(index2 - activeIndex)) <= 1
translate2.value = calcCardTranslate(index2, activeIndex)
scale2.value = unref(active) ? 1 : CARD_SCALE
} else {
translate2.value = calcTranslate(index2, activeIndex, _isVertical)
}
ready.value = true
}
function handleItemClick() {
if (carouselContext && unref(isCardType)) {
const index2 = carouselContext.items.value.findIndex(
({ uid: uid2 }) => uid2 === instance.uid
)
carouselContext.setActiveItem(index2)
}
}
onMounted(() => {
carouselContext.addItem({
props: props2,
states: reactive({
hover,
translate: translate2,
scale: scale2,
active,
ready,
inStage,
animating,
}),
uid: instance.uid,
translateItem,
})
})
onUnmounted(() => {
carouselContext.removeItem(instance.uid)
})
return (_ctx, _cache) => {
return withDirectives(
(openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
unref(ns).e('item'),
unref(ns).is('active', active.value),
unref(ns).is('in-stage', inStage.value),
unref(ns).is('hover', hover.value),
unref(ns).is('animating', animating.value),
{ [unref(ns).em('item', 'card')]: unref(isCardType) },
]),
style: normalizeStyle$1(unref(itemStyle)),
onClick: handleItemClick,
},
[
unref(isCardType)
? withDirectives(
(openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass(unref(ns).e('mask')),
},
null,
2
)),
[[vShow, !active.value]]
)
: createCommentVNode('v-if', true),
renderSlot(_ctx.$slots, 'default'),
],
6
)),
[[vShow, ready.value]]
)
}
},
})
var CarouselItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$8T, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/carousel/src/carousel-item.vue',
],
])
const ElCarousel = withInstall(Carousel, {
CarouselItem,
})
const ElCarouselItem = withNoopInstall(CarouselItem)
const useCheckboxProps = {
modelValue: {
type: [Boolean, Number, String],
default: () => void 0,
},
label: {
type: [String, Boolean, Number, Object],
},
indeterminate: Boolean,
disabled: Boolean,
checked: Boolean,
name: {
type: String,
default: void 0,
},
trueLabel: {
type: [String, Number],
default: void 0,
},
falseLabel: {
type: [String, Number],
default: void 0,
},
tabindex: [String, Number],
size: String,
}
const useCheckboxGroup = () => {
const elForm = inject(formContextKey, {})
const elFormItem = inject(formItemContextKey, {})
const checkboxGroup2 = inject('CheckboxGroup', {})
const isGroup2 = computed(
() =>
checkboxGroup2 &&
(checkboxGroup2 == null ? void 0 : checkboxGroup2.name) ===
'ElCheckboxGroup'
)
const elFormItemSize = computed(() => {
return elFormItem.size
})
return {
isGroup: isGroup2,
checkboxGroup: checkboxGroup2,
elForm,
elFormItemSize,
elFormItem,
}
}
const useModel = (props2) => {
const selfModel = ref(false)
const { emit: emit2 } = getCurrentInstance()
const { isGroup: isGroup2, checkboxGroup: checkboxGroup2 } =
useCheckboxGroup()
const isLimitExceeded = ref(false)
const model = computed({
get() {
var _a2, _b2
return isGroup2.value
? (_a2 = checkboxGroup2.modelValue) == null
? void 0
: _a2.value
: (_b2 = props2.modelValue) != null
? _b2
: selfModel.value
},
set(val2) {
var _a2
if (isGroup2.value && Array.isArray(val2)) {
isLimitExceeded.value =
checkboxGroup2.max !== void 0 &&
val2.length > checkboxGroup2.max.value
isLimitExceeded.value === false &&
((_a2 =
checkboxGroup2 == null ? void 0 : checkboxGroup2.changeEvent) ==
null
? void 0
: _a2.call(checkboxGroup2, val2))
} else {
emit2(UPDATE_MODEL_EVENT, val2)
selfModel.value = val2
}
},
})
return {
model,
isLimitExceeded,
}
}
const useCheckboxStatus = (props2, { model }) => {
const { isGroup: isGroup2, checkboxGroup: checkboxGroup2 } =
useCheckboxGroup()
const focus2 = ref(false)
const size = useSize$1(
checkboxGroup2 == null ? void 0 : checkboxGroup2.checkboxGroupSize,
{ prop: true }
)
const isChecked = computed(() => {
const value2 = model.value
if (toTypeString$1(value2) === '[object Boolean]') {
return value2
} else if (Array.isArray(value2)) {
return value2.includes(props2.label)
} else if (value2 !== null && value2 !== void 0) {
return value2 === props2.trueLabel
} else {
return !!value2
}
})
const checkboxSize = useSize$1(
computed(() => {
var _a2
return isGroup2.value
? (_a2 =
checkboxGroup2 == null
? void 0
: checkboxGroup2.checkboxGroupSize) == null
? void 0
: _a2.value
: void 0
})
)
return {
isChecked,
focus: focus2,
size,
checkboxSize,
}
}
const useDisabled = (props2, { model, isChecked }) => {
const {
elForm,
isGroup: isGroup2,
checkboxGroup: checkboxGroup2,
} = useCheckboxGroup()
const isLimitDisabled = computed(() => {
var _a2, _b2
const max3 = (_a2 = checkboxGroup2.max) == null ? void 0 : _a2.value
const min3 = (_b2 = checkboxGroup2.min) == null ? void 0 : _b2.value
return (
(!!(max3 || min3) && model.value.length >= max3 && !isChecked.value) ||
(model.value.length <= min3 && isChecked.value)
)
})
const isDisabled = computed(() => {
var _a2, _b2
const disabled = props2.disabled || elForm.disabled
return (_b2 = isGroup2.value
? ((_a2 = checkboxGroup2.disabled) == null ? void 0 : _a2.value) ||
disabled ||
isLimitDisabled.value
: props2.disabled || elForm.disabled) != null
? _b2
: false
})
return {
isDisabled,
isLimitDisabled,
}
}
const setStoreValue = (props2, { model }) => {
function addToStore() {
if (Array.isArray(model.value) && !model.value.includes(props2.label)) {
model.value.push(props2.label)
} else {
model.value = props2.trueLabel || true
}
}
props2.checked && addToStore()
}
const useEvent$1 = (props2, { isLimitExceeded }) => {
const { elFormItem } = useCheckboxGroup()
const { emit: emit2 } = getCurrentInstance()
function handleChange(e2) {
var _a2, _b2
if (isLimitExceeded.value) return
const target2 = e2.target
const value2 = target2.checked
? (_a2 = props2.trueLabel) != null
? _a2
: true
: (_b2 = props2.falseLabel) != null
? _b2
: false
emit2('change', value2, e2)
}
watch$1(
() => props2.modelValue,
() => {
var _a2
;(_a2 = elFormItem.validate) == null
? void 0
: _a2.call(elFormItem, 'change').catch((err) => debugWarn())
}
)
return {
handleChange,
}
}
const useCheckbox = (props2) => {
const { model, isLimitExceeded } = useModel(props2)
const {
focus: focus2,
size,
isChecked,
checkboxSize,
} = useCheckboxStatus(props2, {
model,
})
const { isDisabled } = useDisabled(props2, { model, isChecked })
const { handleChange } = useEvent$1(props2, { isLimitExceeded })
setStoreValue(props2, { model })
return {
isChecked,
isDisabled,
checkboxSize,
model,
handleChange,
focus: focus2,
size,
}
}
const _sfc_main$8S = defineComponent({
name: 'ElCheckbox',
props: {
modelValue: {
type: [Number, String, Boolean],
default: () => void 0,
},
label: {
type: [String, Boolean, Number, Object],
},
indeterminate: Boolean,
disabled: Boolean,
checked: Boolean,
name: {
type: String,
default: void 0,
},
trueLabel: {
type: [String, Number],
default: void 0,
},
falseLabel: {
type: [String, Number],
default: void 0,
},
id: {
type: String,
default: void 0,
},
controls: {
type: String,
default: void 0,
},
border: Boolean,
size: {
type: String,
validator: isValidComponentSize,
},
tabindex: [String, Number],
},
emits: [UPDATE_MODEL_EVENT, 'change'],
setup(props2) {
const ns = useNamespace('checkbox')
return {
ns,
...useCheckbox(props2),
}
},
})
const _hoisted_1$6P = ['id', 'aria-controls']
const _hoisted_2$5u = ['tabindex', 'role', 'aria-checked']
const _hoisted_3$4P = [
'aria-hidden',
'name',
'tabindex',
'disabled',
'true-value',
'false-value',
]
const _hoisted_4$48 = ['aria-hidden', 'disabled', 'value', 'name', 'tabindex']
function _sfc_render$1y(_ctx, _cache, $props2, $setup, $data, $options) {
return (
openBlock(),
createElementBlock(
'label',
{
id: _ctx.id,
class: normalizeClass([
_ctx.ns.b(),
_ctx.ns.m(_ctx.checkboxSize),
_ctx.ns.is('disabled', _ctx.isDisabled),
_ctx.ns.is('bordered', _ctx.border),
_ctx.ns.is('checked', _ctx.isChecked),
]),
'aria-controls': _ctx.indeterminate ? _ctx.controls : null,
},
[
createElementVNode(
'span',
{
class: normalizeClass([
_ctx.ns.e('input'),
_ctx.ns.is('disabled', _ctx.isDisabled),
_ctx.ns.is('checked', _ctx.isChecked),
_ctx.ns.is('indeterminate', _ctx.indeterminate),
_ctx.ns.is('focus', _ctx.focus),
]),
tabindex: _ctx.indeterminate ? 0 : void 0,
role: _ctx.indeterminate ? 'checkbox' : void 0,
'aria-checked': _ctx.indeterminate ? 'mixed' : false,
},
[
createElementVNode(
'span',
{
class: normalizeClass(_ctx.ns.e('inner')),
},
null,
2
),
_ctx.trueLabel || _ctx.falseLabel
? withDirectives(
(openBlock(),
createElementBlock(
'input',
{
key: 0,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (_ctx.model = $event)),
class: normalizeClass(_ctx.ns.e('original')),
type: 'checkbox',
'aria-hidden': _ctx.indeterminate ? 'true' : 'false',
name: _ctx.name,
tabindex: _ctx.tabindex,
disabled: _ctx.isDisabled,
'true-value': _ctx.trueLabel,
'false-value': _ctx.falseLabel,
onChange:
_cache[1] ||
(_cache[1] = (...args) =>
_ctx.handleChange && _ctx.handleChange(...args)),
onFocus:
_cache[2] ||
(_cache[2] = ($event) => (_ctx.focus = true)),
onBlur:
_cache[3] ||
(_cache[3] = ($event) => (_ctx.focus = false)),
},
null,
42,
_hoisted_3$4P
)),
[[vModelCheckbox, _ctx.model]]
)
: withDirectives(
(openBlock(),
createElementBlock(
'input',
{
key: 1,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) => (_ctx.model = $event)),
class: normalizeClass(_ctx.ns.e('original')),
type: 'checkbox',
'aria-hidden': _ctx.indeterminate ? 'true' : 'false',
disabled: _ctx.isDisabled,
value: _ctx.label,
name: _ctx.name,
tabindex: _ctx.tabindex,
onChange:
_cache[5] ||
(_cache[5] = (...args) =>
_ctx.handleChange && _ctx.handleChange(...args)),
onFocus:
_cache[6] ||
(_cache[6] = ($event) => (_ctx.focus = true)),
onBlur:
_cache[7] ||
(_cache[7] = ($event) => (_ctx.focus = false)),
},
null,
42,
_hoisted_4$48
)),
[[vModelCheckbox, _ctx.model]]
),
],
10,
_hoisted_2$5u
),
_ctx.$slots.default || _ctx.label
? (openBlock(),
createElementBlock(
'span',
{
key: 0,
class: normalizeClass(_ctx.ns.e('label')),
},
[
renderSlot(_ctx.$slots, 'default'),
!_ctx.$slots.default
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[createTextVNode(toDisplayString$1(_ctx.label), 1)],
2112
))
: createCommentVNode('v-if', true),
],
2
))
: createCommentVNode('v-if', true),
],
10,
_hoisted_1$6P
)
)
}
var Checkbox = /* @__PURE__ */ _export_sfc$1(_sfc_main$8S, [
['render', _sfc_render$1y],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/checkbox/src/checkbox.vue',
],
])
const _sfc_main$8R = defineComponent({
name: 'ElCheckboxButton',
props: useCheckboxProps,
emits: [UPDATE_MODEL_EVENT, 'change'],
setup(props2) {
const {
focus: focus2,
isChecked,
isDisabled,
size,
model,
handleChange,
} = useCheckbox(props2)
const { checkboxGroup: checkboxGroup2 } = useCheckboxGroup()
const ns = useNamespace('checkbox')
const activeStyle = computed(() => {
var _a2, _b2, _c2, _d
const fillValue =
(_b2 =
(_a2 = checkboxGroup2 == null ? void 0 : checkboxGroup2.fill) == null
? void 0
: _a2.value) != null
? _b2
: ''
return {
backgroundColor: fillValue,
borderColor: fillValue,
color:
(_d =
(_c2 =
checkboxGroup2 == null ? void 0 : checkboxGroup2.textColor) ==
null
? void 0
: _c2.value) != null
? _d
: '',
boxShadow: fillValue ? `-1px 0 0 0 ${fillValue}` : null,
}
})
return {
focus: focus2,
isChecked,
isDisabled,
model,
handleChange,
activeStyle,
size,
ns,
}
},
})
const _hoisted_1$6O = ['aria-checked', 'aria-disabled']
const _hoisted_2$5t = [
'name',
'tabindex',
'disabled',
'true-value',
'false-value',
]
const _hoisted_3$4O = ['name', 'tabindex', 'disabled', 'value']
function _sfc_render$1x(_ctx, _cache, $props2, $setup, $data, $options) {
return (
openBlock(),
createElementBlock(
'label',
{
class: normalizeClass([
_ctx.ns.b('button'),
_ctx.ns.bm('button', _ctx.size),
_ctx.ns.is('disabled', _ctx.isDisabled),
_ctx.ns.is('checked', _ctx.isChecked),
_ctx.ns.is('focus', _ctx.focus),
]),
role: 'checkbox',
'aria-checked': _ctx.isChecked,
'aria-disabled': _ctx.isDisabled,
},
[
_ctx.trueLabel || _ctx.falseLabel
? withDirectives(
(openBlock(),
createElementBlock(
'input',
{
key: 0,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (_ctx.model = $event)),
class: normalizeClass(_ctx.ns.be('button', 'original')),
type: 'checkbox',
name: _ctx.name,
tabindex: _ctx.tabindex,
disabled: _ctx.isDisabled,
'true-value': _ctx.trueLabel,
'false-value': _ctx.falseLabel,
onChange:
_cache[1] ||
(_cache[1] = (...args) =>
_ctx.handleChange && _ctx.handleChange(...args)),
onFocus:
_cache[2] || (_cache[2] = ($event) => (_ctx.focus = true)),
onBlur:
_cache[3] || (_cache[3] = ($event) => (_ctx.focus = false)),
},
null,
42,
_hoisted_2$5t
)),
[[vModelCheckbox, _ctx.model]]
)
: withDirectives(
(openBlock(),
createElementBlock(
'input',
{
key: 1,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) => (_ctx.model = $event)),
class: normalizeClass(_ctx.ns.be('button', 'original')),
type: 'checkbox',
name: _ctx.name,
tabindex: _ctx.tabindex,
disabled: _ctx.isDisabled,
value: _ctx.label,
onChange:
_cache[5] ||
(_cache[5] = (...args) =>
_ctx.handleChange && _ctx.handleChange(...args)),
onFocus:
_cache[6] || (_cache[6] = ($event) => (_ctx.focus = true)),
onBlur:
_cache[7] || (_cache[7] = ($event) => (_ctx.focus = false)),
},
null,
42,
_hoisted_3$4O
)),
[[vModelCheckbox, _ctx.model]]
),
_ctx.$slots.default || _ctx.label
? (openBlock(),
createElementBlock(
'span',
{
key: 2,
class: normalizeClass(_ctx.ns.be('button', 'inner')),
style: normalizeStyle$1(
_ctx.isChecked ? _ctx.activeStyle : null
),
},
[
renderSlot(_ctx.$slots, 'default', {}, () => [
createTextVNode(toDisplayString$1(_ctx.label), 1),
]),
],
6
))
: createCommentVNode('v-if', true),
],
10,
_hoisted_1$6O
)
)
}
var CheckboxButton = /* @__PURE__ */ _export_sfc$1(_sfc_main$8R, [
['render', _sfc_render$1x],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/checkbox/src/checkbox-button.vue',
],
])
const _sfc_main$8Q = defineComponent({
name: 'ElCheckboxGroup',
props: {
modelValue: {
type: Array,
default: () => [],
},
disabled: Boolean,
min: {
type: Number,
default: void 0,
},
max: {
type: Number,
default: void 0,
},
size: {
type: String,
validator: isValidComponentSize,
},
fill: {
type: String,
default: void 0,
},
textColor: {
type: String,
default: void 0,
},
tag: {
type: String,
default: 'div',
},
},
emits: [UPDATE_MODEL_EVENT, 'change'],
setup(props2, { emit: emit2, slots }) {
const { elFormItem } = useCheckboxGroup()
const checkboxGroupSize = useSize$1()
const ns = useNamespace('checkbox')
const changeEvent = (value2) => {
emit2(UPDATE_MODEL_EVENT, value2)
nextTick(() => {
emit2('change', value2)
})
}
const modelValue = computed({
get() {
return props2.modelValue
},
set(val2) {
changeEvent(val2)
},
})
provide('CheckboxGroup', {
name: 'ElCheckboxGroup',
modelValue,
...toRefs$2(props2),
checkboxGroupSize,
changeEvent,
})
watch$1(
() => props2.modelValue,
() => {
var _a2
;(_a2 = elFormItem.validate) == null
? void 0
: _a2.call(elFormItem, 'change').catch((err) => debugWarn())
}
)
return () => {
return h$4(
props2.tag,
{
class: ns.b('group'),
role: 'group',
'aria-label': 'checkbox-group',
},
[renderSlot(slots, 'default')]
)
}
},
})
var CheckboxGroup = /* @__PURE__ */ _export_sfc$1(_sfc_main$8Q, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/checkbox/src/checkbox-group.vue',
],
])
const ElCheckbox = withInstall(Checkbox, {
CheckboxButton,
CheckboxGroup,
})
const ElCheckboxButton = withNoopInstall(CheckboxButton)
const ElCheckboxGroup$1 = withNoopInstall(CheckboxGroup)
const radioPropsBase = buildProps({
size: useSizeProp,
disabled: Boolean,
label: {
type: [String, Number, Boolean],
default: '',
},
})
const radioProps = buildProps({
...radioPropsBase,
modelValue: {
type: [String, Number, Boolean],
default: '',
},
name: {
type: String,
default: '',
},
border: Boolean,
})
const radioEmits = {
[UPDATE_MODEL_EVENT]: (val2) =>
isString$f(val2) || isNumber$h(val2) || isBoolean$5(val2),
change: (val2) => isString$f(val2) || isNumber$h(val2) || isBoolean$5(val2),
}
const useRadio = (props2, emit2) => {
const radioRef = ref()
const radioGroup = inject(radioGroupKey, void 0)
const isGroup2 = computed(() => !!radioGroup)
const modelValue = computed({
get() {
return isGroup2.value ? radioGroup.modelValue : props2.modelValue
},
set(val2) {
if (isGroup2.value) {
radioGroup.changeEvent(val2)
} else {
emit2(UPDATE_MODEL_EVENT, val2)
}
radioRef.value.checked = props2.modelValue === props2.label
},
})
const size = useSize$1(
computed(() => (radioGroup == null ? void 0 : radioGroup.size))
)
const disabled = useDisabled$1(
computed(() => (radioGroup == null ? void 0 : radioGroup.disabled))
)
const focus2 = ref(false)
const tabIndex = computed(() => {
return disabled.value ||
(isGroup2.value && modelValue.value !== props2.label)
? -1
: 0
})
return {
radioRef,
isGroup: isGroup2,
radioGroup,
focus: focus2,
size,
disabled,
tabIndex,
modelValue,
}
}
const _sfc_main$8P = defineComponent({
name: 'ElRadio',
props: radioProps,
emits: radioEmits,
setup(props2, { emit: emit2 }) {
const ns = useNamespace('radio')
const {
radioRef,
isGroup: isGroup2,
focus: focus2,
size,
disabled,
tabIndex,
modelValue,
} = useRadio(props2, emit2)
function handleChange() {
nextTick(() => emit2('change', modelValue.value))
}
return {
ns,
focus: focus2,
isGroup: isGroup2,
modelValue,
tabIndex,
size,
disabled,
radioRef,
handleChange,
}
},
})
const _hoisted_1$6N = ['aria-checked', 'aria-disabled', 'tabindex']
const _hoisted_2$5s = ['value', 'name', 'disabled']
function _sfc_render$1w(_ctx, _cache, $props2, $setup, $data, $options) {
return (
openBlock(),
createElementBlock(
'label',
{
class: normalizeClass([
_ctx.ns.b(),
_ctx.ns.is('disabled', _ctx.disabled),
_ctx.ns.is('focus', _ctx.focus),
_ctx.ns.is('bordered', _ctx.border),
_ctx.ns.is('checked', _ctx.modelValue === _ctx.label),
_ctx.ns.m(_ctx.size),
]),
role: 'radio',
'aria-checked': _ctx.modelValue === _ctx.label,
'aria-disabled': _ctx.disabled,
tabindex: _ctx.tabIndex,
onKeydown:
_cache[5] ||
(_cache[5] = withKeys(
withModifiers(
($event) =>
(_ctx.modelValue = _ctx.disabled
? _ctx.modelValue
: _ctx.label),
['stop', 'prevent']
),
['space']
)),
},
[
createElementVNode(
'span',
{
class: normalizeClass([
_ctx.ns.e('input'),
_ctx.ns.is('disabled', _ctx.disabled),
_ctx.ns.is('checked', _ctx.modelValue === _ctx.label),
]),
},
[
createElementVNode(
'span',
{
class: normalizeClass(_ctx.ns.e('inner')),
},
null,
2
),
withDirectives(
createElementVNode(
'input',
{
ref: 'radioRef',
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (_ctx.modelValue = $event)),
class: normalizeClass(_ctx.ns.e('original')),
value: _ctx.label,
type: 'radio',
'aria-hidden': 'true',
name: _ctx.name,
disabled: _ctx.disabled,
tabindex: '-1',
onFocus:
_cache[1] || (_cache[1] = ($event) => (_ctx.focus = true)),
onBlur:
_cache[2] || (_cache[2] = ($event) => (_ctx.focus = false)),
onChange:
_cache[3] ||
(_cache[3] = (...args) =>
_ctx.handleChange && _ctx.handleChange(...args)),
},
null,
42,
_hoisted_2$5s
),
[[vModelRadio, _ctx.modelValue]]
),
],
2
),
createElementVNode(
'span',
{
class: normalizeClass(_ctx.ns.e('label')),
onKeydown:
_cache[4] || (_cache[4] = withModifiers(() => {}, ['stop'])),
},
[
renderSlot(_ctx.$slots, 'default', {}, () => [
createTextVNode(toDisplayString$1(_ctx.label), 1),
]),
],
34
),
],
42,
_hoisted_1$6N
)
)
}
var Radio = /* @__PURE__ */ _export_sfc$1(_sfc_main$8P, [
['render', _sfc_render$1w],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/radio/src/radio.vue',
],
])
const radioButtonProps = buildProps({
...radioPropsBase,
name: {
type: String,
default: '',
},
})
const _sfc_main$8O = defineComponent({
name: 'ElRadioButton',
props: radioButtonProps,
setup(props2, { emit: emit2 }) {
const ns = useNamespace('radio')
const {
radioRef,
isGroup: isGroup2,
focus: focus2,
size,
disabled,
tabIndex,
modelValue,
radioGroup,
} = useRadio(props2, emit2)
const activeStyle = computed(() => {
return {
backgroundColor: (radioGroup == null ? void 0 : radioGroup.fill) || '',
borderColor: (radioGroup == null ? void 0 : radioGroup.fill) || '',
boxShadow: (radioGroup == null ? void 0 : radioGroup.fill)
? `-1px 0 0 0 ${radioGroup.fill}`
: '',
color: (radioGroup == null ? void 0 : radioGroup.textColor) || '',
}
})
return {
ns,
isGroup: isGroup2,
size,
disabled,
tabIndex,
modelValue,
focus: focus2,
activeStyle,
radioRef,
}
},
})
const _hoisted_1$6M = ['aria-checked', 'aria-disabled', 'tabindex']
const _hoisted_2$5r = ['value', 'name', 'disabled']
function _sfc_render$1v(_ctx, _cache, $props2, $setup, $data, $options) {
return (
openBlock(),
createElementBlock(
'label',
{
class: normalizeClass([
_ctx.ns.b('button'),
_ctx.ns.is('active', _ctx.modelValue === _ctx.label),
_ctx.ns.is('disabled', _ctx.disabled),
_ctx.ns.is('focus', _ctx.focus),
_ctx.ns.bm('button', _ctx.size),
]),
role: 'radio',
'aria-checked': _ctx.modelValue === _ctx.label,
'aria-disabled': _ctx.disabled,
tabindex: _ctx.tabIndex,
onKeydown:
_cache[4] ||
(_cache[4] = withKeys(
withModifiers(
($event) =>
(_ctx.modelValue = _ctx.disabled
? _ctx.modelValue
: _ctx.label),
['stop', 'prevent']
),
['space']
)),
},
[
withDirectives(
createElementVNode(
'input',
{
ref: 'radioRef',
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (_ctx.modelValue = $event)),
class: normalizeClass(_ctx.ns.be('button', 'original-radio')),
value: _ctx.label,
type: 'radio',
name: _ctx.name,
disabled: _ctx.disabled,
tabindex: '-1',
onFocus:
_cache[1] || (_cache[1] = ($event) => (_ctx.focus = true)),
onBlur:
_cache[2] || (_cache[2] = ($event) => (_ctx.focus = false)),
},
null,
42,
_hoisted_2$5r
),
[[vModelRadio, _ctx.modelValue]]
),
createElementVNode(
'span',
{
class: normalizeClass(_ctx.ns.be('button', 'inner')),
style: normalizeStyle$1(
_ctx.modelValue === _ctx.label ? _ctx.activeStyle : {}
),
onKeydown:
_cache[3] || (_cache[3] = withModifiers(() => {}, ['stop'])),
},
[
renderSlot(_ctx.$slots, 'default', {}, () => [
createTextVNode(toDisplayString$1(_ctx.label), 1),
]),
],
38
),
],
42,
_hoisted_1$6M
)
)
}
var RadioButton = /* @__PURE__ */ _export_sfc$1(_sfc_main$8O, [
['render', _sfc_render$1v],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/radio/src/radio-button.vue',
],
])
const radioGroupProps = buildProps({
size: useSizeProp,
disabled: Boolean,
modelValue: {
type: [String, Number, Boolean],
default: '',
},
fill: {
type: String,
default: '',
},
textColor: {
type: String,
default: '',
},
})
const radioGroupEmits = radioEmits
const _sfc_main$8N = defineComponent({
name: 'ElRadioGroup',
props: radioGroupProps,
emits: radioGroupEmits,
setup(props2, ctx) {
const ns = useNamespace('radio')
const radioGroupRef = ref()
const { formItem } = useFormItem()
const changeEvent = (value2) => {
ctx.emit(UPDATE_MODEL_EVENT, value2)
nextTick(() => ctx.emit('change', value2))
}
const handleKeydown = (e2) => {
if (!radioGroupRef.value) return
const target2 = e2.target
const className =
target2.nodeName === 'INPUT' ? '[type=radio]' : '[role=radio]'
const radios = radioGroupRef.value.querySelectorAll(className)
const length2 = radios.length
const index2 = Array.from(radios).indexOf(target2)
const roleRadios = radioGroupRef.value.querySelectorAll('[role=radio]')
let nextIndex = null
switch (e2.code) {
case EVENT_CODE.left:
case EVENT_CODE.up:
e2.stopPropagation()
e2.preventDefault()
nextIndex = index2 === 0 ? length2 - 1 : index2 - 1
break
case EVENT_CODE.right:
case EVENT_CODE.down:
e2.stopPropagation()
e2.preventDefault()
nextIndex = index2 === length2 - 1 ? 0 : index2 + 1
break
}
if (nextIndex === null) return
roleRadios[nextIndex].click()
roleRadios[nextIndex].focus()
}
onMounted(() => {
const radios = radioGroupRef.value.querySelectorAll('[type=radio]')
const firstLabel = radios[0]
if (!Array.from(radios).some((radio2) => radio2.checked) && firstLabel) {
firstLabel.tabIndex = 0
}
})
provide(
radioGroupKey,
reactive({
...toRefs$2(props2),
changeEvent,
})
)
watch$1(
() => props2.modelValue,
() =>
formItem == null
? void 0
: formItem.validate('change').catch((err) => debugWarn())
)
return {
ns,
radioGroupRef,
handleKeydown,
}
},
})
function _sfc_render$1u(_ctx, _cache, $props2, $setup, $data, $options) {
return (
openBlock(),
createElementBlock(
'div',
{
ref: 'radioGroupRef',
class: normalizeClass(_ctx.ns.b('group')),
role: 'radiogroup',
onKeydown:
_cache[0] ||
(_cache[0] = (...args) =>
_ctx.handleKeydown && _ctx.handleKeydown(...args)),
},
[renderSlot(_ctx.$slots, 'default')],
34
)
)
}
var RadioGroup = /* @__PURE__ */ _export_sfc$1(_sfc_main$8N, [
['render', _sfc_render$1u],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/radio/src/radio-group.vue',
],
])
const ElRadio = withInstall(Radio, {
RadioButton,
RadioGroup,
})
const ElRadioGroup = withNoopInstall(RadioGroup)
const ElRadioButton = withNoopInstall(RadioButton)
var NodeContent$1 = defineComponent({
name: 'NodeContent',
setup() {
const ns = useNamespace('cascader-node')
return {
ns,
}
},
render() {
const { ns } = this
const { node: node2, panel } = this.$parent
const { data: data2, label } = node2
const { renderLabelFn } = panel
return h$4(
'span',
{ class: ns.e('label') },
renderLabelFn ? renderLabelFn({ node: node2, data: data2 }) : label
)
},
})
var ExpandTrigger$1 = /* @__PURE__ */ ((ExpandTrigger2) => {
ExpandTrigger2['CLICK'] = 'click'
ExpandTrigger2['HOVER'] = 'hover'
return ExpandTrigger2
})(ExpandTrigger$1 || {})
const CASCADER_PANEL_INJECTION_KEY = Symbol()
const _sfc_main$8M = defineComponent({
name: 'ElCascaderNode',
components: {
ElCheckbox,
ElRadio,
NodeContent: NodeContent$1,
ElIcon,
Check: check$1,
Loading: loading,
ArrowRight: arrowRight,
},
props: {
node: {
type: Object,
required: true,
},
menuId: String,
},
emits: ['expand'],
setup(props2, { emit: emit2 }) {
const panel = inject(CASCADER_PANEL_INJECTION_KEY)
const ns = useNamespace('cascader-node')
const isHoverMenu = computed(() => panel.isHoverMenu)
const multiple = computed(() => panel.config.multiple)
const checkStrictly = computed(() => panel.config.checkStrictly)
const checkedNodeId = computed(() => {
var _a2
return (_a2 = panel.checkedNodes[0]) == null ? void 0 : _a2.uid
})
const isDisabled = computed(() => props2.node.isDisabled)
const isLeaf2 = computed(() => props2.node.isLeaf)
const expandable = computed(
() => (checkStrictly.value && !isLeaf2.value) || !isDisabled.value
)
const inExpandingPath = computed(() => isInPath(panel.expandingNode))
const inCheckedPath = computed(
() => checkStrictly.value && panel.checkedNodes.some(isInPath)
)
const isInPath = (node2) => {
var _a2
const { level, uid: uid2 } = props2.node
return (
((_a2 = node2 == null ? void 0 : node2.pathNodes[level - 1]) == null
? void 0
: _a2.uid) === uid2
)
}
const doExpand = () => {
if (inExpandingPath.value) return
panel.expandNode(props2.node)
}
const doCheck = (checked2) => {
const { node: node2 } = props2
if (checked2 === node2.checked) return
panel.handleCheckChange(node2, checked2)
}
const doLoad = () => {
panel.lazyLoad(props2.node, () => {
if (!isLeaf2.value) doExpand()
})
}
const handleHoverExpand = (e2) => {
if (!isHoverMenu.value) return
handleExpand()
!isLeaf2.value && emit2('expand', e2)
}
const handleExpand = () => {
const { node: node2 } = props2
if (!expandable.value || node2.loading) return
node2.loaded ? doExpand() : doLoad()
}
const handleClick2 = () => {
if (isHoverMenu.value && !isLeaf2.value) return
if (
isLeaf2.value &&
!isDisabled.value &&
!checkStrictly.value &&
!multiple.value
) {
handleCheck(true)
} else {
handleExpand()
}
}
const handleSelectCheck = (checked2) => {
if (checkStrictly.value) {
doCheck(checked2)
if (props2.node.loaded) {
doExpand()
}
} else {
handleCheck(checked2)
}
}
const handleCheck = (checked2) => {
if (!props2.node.loaded) {
doLoad()
} else {
doCheck(checked2)
!checkStrictly.value && doExpand()
}
}
return {
panel,
isHoverMenu,
multiple,
checkStrictly,
checkedNodeId,
isDisabled,
isLeaf: isLeaf2,
expandable,
inExpandingPath,
inCheckedPath,
ns,
handleHoverExpand,
handleExpand,
handleClick: handleClick2,
handleCheck,
handleSelectCheck,
}
},
})
const _hoisted_1$6L = [
'id',
'aria-haspopup',
'aria-owns',
'aria-expanded',
'tabindex',
]
const _hoisted_2$5q = /* @__PURE__ */ createElementVNode('span', null, null, -1)
function _sfc_render$1t(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_radio = resolveComponent('el-radio')
const _component_check = resolveComponent('check')
const _component_el_icon = resolveComponent('el-icon')
const _component_node_content = resolveComponent('node-content')
const _component_loading = resolveComponent('loading')
const _component_arrow_right = resolveComponent('arrow-right')
return (
openBlock(),
createElementBlock(
'li',
{
id: `${_ctx.menuId}-${_ctx.node.uid}`,
role: 'menuitem',
'aria-haspopup': !_ctx.isLeaf,
'aria-owns': _ctx.isLeaf ? null : _ctx.menuId,
'aria-expanded': _ctx.inExpandingPath,
tabindex: _ctx.expandable ? -1 : void 0,
class: normalizeClass([
_ctx.ns.b(),
_ctx.ns.is('selectable', _ctx.checkStrictly),
_ctx.ns.is('active', _ctx.node.checked),
_ctx.ns.is('disabled', !_ctx.expandable),
_ctx.inExpandingPath && 'in-active-path',
_ctx.inCheckedPath && 'in-checked-path',
]),
onMouseenter:
_cache[2] ||
(_cache[2] = (...args) =>
_ctx.handleHoverExpand && _ctx.handleHoverExpand(...args)),
onFocus:
_cache[3] ||
(_cache[3] = (...args) =>
_ctx.handleHoverExpand && _ctx.handleHoverExpand(...args)),
onClick:
_cache[4] ||
(_cache[4] = (...args) =>
_ctx.handleClick && _ctx.handleClick(...args)),
},
[
createCommentVNode(' prefix '),
_ctx.multiple
? (openBlock(),
createBlock(
_component_el_checkbox,
{
key: 0,
'model-value': _ctx.node.checked,
indeterminate: _ctx.node.indeterminate,
disabled: _ctx.isDisabled,
onClick:
_cache[0] || (_cache[0] = withModifiers(() => {}, ['stop'])),
'onUpdate:modelValue': _ctx.handleSelectCheck,
},
null,
8,
[
'model-value',
'indeterminate',
'disabled',
'onUpdate:modelValue',
]
))
: _ctx.checkStrictly
? (openBlock(),
createBlock(
_component_el_radio,
{
key: 1,
'model-value': _ctx.checkedNodeId,
label: _ctx.node.uid,
disabled: _ctx.isDisabled,
'onUpdate:modelValue': _ctx.handleSelectCheck,
onClick:
_cache[1] || (_cache[1] = withModifiers(() => {}, ['stop'])),
},
{
default: withCtx(() => [
createCommentVNode(
'\n Add an empty element to avoid render label,\n do not use empty fragment here for https://github.com/vuejs/vue-next/pull/2485\n '
),
_hoisted_2$5q,
]),
_: 1,
},
8,
['model-value', 'label', 'disabled', 'onUpdate:modelValue']
))
: _ctx.isLeaf && _ctx.node.checked
? (openBlock(),
createBlock(
_component_el_icon,
{
key: 2,
class: normalizeClass(_ctx.ns.e('prefix')),
},
{
default: withCtx(() => [createVNode$1(_component_check)]),
_: 1,
},
8,
['class']
))
: createCommentVNode('v-if', true),
createCommentVNode(' content '),
createVNode$1(_component_node_content),
createCommentVNode(' postfix '),
!_ctx.isLeaf
? (openBlock(),
createElementBlock(
Fragment,
{ key: 3 },
[
_ctx.node.loading
? (openBlock(),
createBlock(
_component_el_icon,
{
key: 0,
class: normalizeClass([
_ctx.ns.is('loading'),
_ctx.ns.e('postfix'),
]),
},
{
default: withCtx(() => [
createVNode$1(_component_loading),
]),
_: 1,
},
8,
['class']
))
: (openBlock(),
createBlock(
_component_el_icon,
{
key: 1,
class: normalizeClass([
'arrow-right',
_ctx.ns.e('postfix'),
]),
},
{
default: withCtx(() => [
createVNode$1(_component_arrow_right),
]),
_: 1,
},
8,
['class']
)),
],
2112
))
: createCommentVNode('v-if', true),
],
42,
_hoisted_1$6L
)
)
}
var ElCascaderNode = /* @__PURE__ */ _export_sfc$1(_sfc_main$8M, [
['render', _sfc_render$1t],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/cascader-panel/src/node.vue',
],
])
const _sfc_main$8L = defineComponent({
name: 'ElCascaderMenu',
components: {
Loading: loading,
ElIcon,
ElScrollbar,
ElCascaderNode,
},
props: {
nodes: {
type: Array,
required: true,
},
index: {
type: Number,
required: true,
},
},
setup(props2) {
const instance = getCurrentInstance()
const ns = useNamespace('cascader-menu')
const { t: t3 } = useLocale()
const id2 = generateId()
let activeNode = null
let hoverTimer = null
const panel = inject(CASCADER_PANEL_INJECTION_KEY)
const hoverZone = ref(null)
const isEmpty2 = computed(() => !props2.nodes.length)
const isLoading = computed(() => !panel.initialLoaded)
const menuId = computed(() => `cascader-menu-${id2}-${props2.index}`)
const handleExpand = (e2) => {
activeNode = e2.target
}
const handleMouseMove = (e2) => {
if (!panel.isHoverMenu || !activeNode || !hoverZone.value) return
if (activeNode.contains(e2.target)) {
clearHoverTimer()
const el2 = instance.vnode.el
const { left: left2 } = el2.getBoundingClientRect()
const { offsetWidth, offsetHeight } = el2
const startX = e2.clientX - left2
const top2 = activeNode.offsetTop
const bottom2 = top2 + activeNode.offsetHeight
hoverZone.value.innerHTML = `
`
} else if (!hoverTimer) {
hoverTimer = window.setTimeout(
clearHoverZone,
panel.config.hoverThreshold
)
}
}
const clearHoverTimer = () => {
if (!hoverTimer) return
clearTimeout(hoverTimer)
hoverTimer = null
}
const clearHoverZone = () => {
if (!hoverZone.value) return
hoverZone.value.innerHTML = ''
clearHoverTimer()
}
return {
ns,
panel,
hoverZone,
isEmpty: isEmpty2,
isLoading,
menuId,
t: t3,
handleExpand,
handleMouseMove,
clearHoverZone,
}
},
})
function _sfc_render$1s(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_cascader_node = resolveComponent('el-cascader-node')
const _component_loading = resolveComponent('loading')
const _component_el_icon = resolveComponent('el-icon')
const _component_el_scrollbar = resolveComponent('el-scrollbar')
return (
openBlock(),
createBlock(
_component_el_scrollbar,
{
key: _ctx.menuId,
tag: 'ul',
role: 'menu',
class: normalizeClass(_ctx.ns.b()),
'wrap-class': _ctx.ns.e('wrap'),
'view-class': [_ctx.ns.e('list'), _ctx.ns.is('empty', _ctx.isEmpty)],
onMousemove: _ctx.handleMouseMove,
onMouseleave: _ctx.clearHoverZone,
},
{
default: withCtx(() => {
var _a2
return [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.nodes, (node2) => {
return (
openBlock(),
createBlock(
_component_el_cascader_node,
{
key: node2.uid,
node: node2,
'menu-id': _ctx.menuId,
onExpand: _ctx.handleExpand,
},
null,
8,
['node', 'menu-id', 'onExpand']
)
)
}),
128
)),
_ctx.isLoading
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass(_ctx.ns.e('empty-text')),
},
[
createVNode$1(
_component_el_icon,
{
size: '14',
class: normalizeClass(_ctx.ns.is('loading')),
},
{
default: withCtx(() => [
createVNode$1(_component_loading),
]),
_: 1,
},
8,
['class']
),
createTextVNode(
' ' + toDisplayString$1(_ctx.t('el.cascader.loading')),
1
),
],
2
))
: _ctx.isEmpty
? (openBlock(),
createElementBlock(
'div',
{
key: 1,
class: normalizeClass(_ctx.ns.e('empty-text')),
},
toDisplayString$1(_ctx.t('el.cascader.noData')),
3
))
: ((_a2 = _ctx.panel) == null ? void 0 : _a2.isHoverMenu)
? (openBlock(),
createElementBlock(
'svg',
{
key: 2,
ref: 'hoverZone',
class: normalizeClass(_ctx.ns.e('hover-zone')),
},
null,
2
))
: createCommentVNode('v-if', true),
]
}),
_: 1,
},
8,
['class', 'wrap-class', 'view-class', 'onMousemove', 'onMouseleave']
)
)
}
var ElCascaderMenu = /* @__PURE__ */ _export_sfc$1(_sfc_main$8L, [
['render', _sfc_render$1s],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/cascader-panel/src/menu.vue',
],
])
var ExpandTrigger = /* @__PURE__ */ ((ExpandTrigger2) => {
ExpandTrigger2['CLICK'] = 'click'
ExpandTrigger2['HOVER'] = 'hover'
return ExpandTrigger2
})(ExpandTrigger || {})
let uid$3 = 0
const calculatePathNodes = (node2) => {
const nodes = [node2]
let { parent: parent2 } = node2
while (parent2) {
nodes.unshift(parent2)
parent2 = parent2.parent
}
return nodes
}
class Node$3 {
constructor(data2, config2, parent2, root2 = false) {
this.data = data2
this.config = config2
this.parent = parent2
this.root = root2
this.uid = uid$3++
this.checked = false
this.indeterminate = false
this.loading = false
const { value: valueKey, label: labelKey, children: childrenKey } = config2
const childrenData = data2[childrenKey]
const pathNodes = calculatePathNodes(this)
this.level = root2 ? 0 : parent2 ? parent2.level + 1 : 1
this.value = data2[valueKey]
this.label = data2[labelKey]
this.pathNodes = pathNodes
this.pathValues = pathNodes.map((node2) => node2.value)
this.pathLabels = pathNodes.map((node2) => node2.label)
this.childrenData = childrenData
this.children = (childrenData || []).map(
(child) => new Node$3(child, config2, this)
)
this.loaded = !config2.lazy || this.isLeaf || !isEmpty$3(childrenData)
}
get isDisabled() {
const { data: data2, parent: parent2, config: config2 } = this
const { disabled, checkStrictly } = config2
const isDisabled = isFunction$l(disabled)
? disabled(data2, this)
: !!data2[disabled]
return (
isDisabled ||
(!checkStrictly && (parent2 == null ? void 0 : parent2.isDisabled))
)
}
get isLeaf() {
const { data: data2, config: config2, childrenData, loaded } = this
const { lazy, leaf } = config2
const isLeaf2 = isFunction$l(leaf) ? leaf(data2, this) : data2[leaf]
return isUndefined$c(isLeaf2)
? lazy && !loaded
? false
: !(Array.isArray(childrenData) && childrenData.length)
: !!isLeaf2
}
get valueByOption() {
return this.config.emitPath ? this.pathValues : this.value
}
appendChild(childData) {
const { childrenData, children } = this
const node2 = new Node$3(childData, this.config, this)
if (Array.isArray(childrenData)) {
childrenData.push(childData)
} else {
this.childrenData = [childData]
}
children.push(node2)
return node2
}
calcText(allLevels, separator) {
const text2 = allLevels ? this.pathLabels.join(separator) : this.label
this.text = text2
return text2
}
broadcast(event, ...args) {
const handlerName = `onParent${capitalize$2(event)}`
this.children.forEach((child) => {
if (child) {
child.broadcast(event, ...args)
child[handlerName] && child[handlerName](...args)
}
})
}
emit(event, ...args) {
const { parent: parent2 } = this
const handlerName = `onChild${capitalize$2(event)}`
if (parent2) {
parent2[handlerName] && parent2[handlerName](...args)
parent2.emit(event, ...args)
}
}
onParentCheck(checked2) {
if (!this.isDisabled) {
this.setCheckState(checked2)
}
}
onChildCheck() {
const { children } = this
const validChildren = children.filter((child) => !child.isDisabled)
const checked2 = validChildren.length
? validChildren.every((child) => child.checked)
: false
this.setCheckState(checked2)
}
setCheckState(checked2) {
const totalNum = this.children.length
const checkedNum = this.children.reduce((c2, p2) => {
const num2 = p2.checked ? 1 : p2.indeterminate ? 0.5 : 0
return c2 + num2
}, 0)
this.checked =
this.loaded &&
this.children.every((child) => child.loaded && child.checked) &&
checked2
this.indeterminate =
this.loaded && checkedNum !== totalNum && checkedNum > 0
}
doCheck(checked2) {
if (this.checked === checked2) return
const { checkStrictly, multiple } = this.config
if (checkStrictly || !multiple) {
this.checked = checked2
} else {
this.broadcast('check', checked2)
this.setCheckState(checked2)
this.emit('check')
}
}
}
const flatNodes = (nodes, leafOnly) => {
return nodes.reduce((res, node2) => {
if (node2.isLeaf) {
res.push(node2)
} else {
!leafOnly && res.push(node2)
res = res.concat(flatNodes(node2.children, leafOnly))
}
return res
}, [])
}
class Store$2 {
constructor(data2, config2) {
this.config = config2
const nodes = (data2 || []).map(
(nodeData) => new Node$3(nodeData, this.config)
)
this.nodes = nodes
this.allNodes = flatNodes(nodes, false)
this.leafNodes = flatNodes(nodes, true)
}
getNodes() {
return this.nodes
}
getFlattedNodes(leafOnly) {
return leafOnly ? this.leafNodes : this.allNodes
}
appendNode(nodeData, parentNode2) {
const node2 = parentNode2
? parentNode2.appendChild(nodeData)
: new Node$3(nodeData, this.config)
if (!parentNode2) this.nodes.push(node2)
this.allNodes.push(node2)
node2.isLeaf && this.leafNodes.push(node2)
}
appendNodes(nodeDataList, parentNode2) {
nodeDataList.forEach((nodeData) => this.appendNode(nodeData, parentNode2))
}
getNodeByValue(value2, leafOnly = false) {
if (!value2 && value2 !== 0) return null
const node2 = this.getFlattedNodes(leafOnly).find(
(node22) =>
isEqual$4(node22.value, value2) || isEqual$4(node22.pathValues, value2)
)
return node2 || null
}
getSameNode(node2) {
if (!node2) return null
const node_ = this.getFlattedNodes(false).find(
({ value: value2, level }) =>
isEqual$4(node2.value, value2) && node2.level === level
)
return node_ || null
}
}
const CommonProps = {
modelValue: [Number, String, Array],
options: {
type: Array,
default: () => [],
},
props: {
type: Object,
default: () => ({}),
},
}
const DefaultProps = {
expandTrigger: ExpandTrigger.CLICK,
multiple: false,
checkStrictly: false,
emitPath: true,
lazy: false,
lazyLoad: NOOP,
value: 'value',
label: 'label',
children: 'children',
leaf: 'leaf',
disabled: 'disabled',
hoverThreshold: 500,
}
const useCascaderConfig = (props2) => {
return computed(() => ({
...DefaultProps,
...props2.props,
}))
}
const getMenuIndex = (el2) => {
if (!el2) return 0
const pieces = el2.id.split('-')
return Number(pieces[pieces.length - 2])
}
const checkNode = (el2) => {
if (!el2) return
const input = el2.querySelector('input')
if (input) {
input.click()
} else if (isLeaf(el2)) {
el2.click()
}
}
const sortByOriginalOrder = (oldNodes, newNodes) => {
const newNodesCopy = newNodes.slice(0)
const newIds = newNodesCopy.map((node2) => node2.uid)
const res = oldNodes.reduce((acc, item2) => {
const index2 = newIds.indexOf(item2.uid)
if (index2 > -1) {
acc.push(item2)
newNodesCopy.splice(index2, 1)
newIds.splice(index2, 1)
}
return acc
}, [])
res.push(...newNodesCopy)
return res
}
const _sfc_main$8K = defineComponent({
name: 'ElCascaderPanel',
components: {
ElCascaderMenu,
},
props: {
...CommonProps,
border: {
type: Boolean,
default: true,
},
renderLabel: Function,
},
emits: [UPDATE_MODEL_EVENT, CHANGE_EVENT, 'close', 'expand-change'],
setup(props2, { emit: emit2, slots }) {
let manualChecked = false
const ns = useNamespace('cascader')
const config2 = useCascaderConfig(props2)
let store2 = null
const initialLoaded = ref(true)
const menuList = ref([])
const checkedValue = ref(null)
const menus2 = ref([])
const expandingNode = ref(null)
const checkedNodes = ref([])
const isHoverMenu = computed(
() => config2.value.expandTrigger === ExpandTrigger.HOVER
)
const renderLabelFn = computed(() => props2.renderLabel || slots.default)
const initStore = () => {
const { options: options2 } = props2
const cfg = config2.value
manualChecked = false
store2 = new Store$2(options2, cfg)
menus2.value = [store2.getNodes()]
if (cfg.lazy && isEmpty$3(props2.options)) {
initialLoaded.value = false
lazyLoad(void 0, (list2) => {
if (list2) {
store2 = new Store$2(list2, cfg)
menus2.value = [store2.getNodes()]
}
initialLoaded.value = true
syncCheckedValue(false, true)
})
} else {
syncCheckedValue(false, true)
}
}
const lazyLoad = (node2, cb) => {
const cfg = config2.value
node2 = node2 || new Node$3({}, cfg, void 0, true)
node2.loading = true
const resolve2 = (dataList2) => {
const _node = node2
const parent2 = _node.root ? null : _node
dataList2 &&
(store2 == null ? void 0 : store2.appendNodes(dataList2, parent2))
_node.loading = false
_node.loaded = true
_node.childrenData = _node.childrenData || []
cb && cb(dataList2)
}
cfg.lazyLoad(node2, resolve2)
}
const expandNode = (node2, silent) => {
var _a2
const { level } = node2
const newMenus = menus2.value.slice(0, level)
let newExpandingNode
if (node2.isLeaf) {
newExpandingNode = node2.pathNodes[level - 2]
} else {
newExpandingNode = node2
newMenus.push(node2.children)
}
if (
((_a2 = expandingNode.value) == null ? void 0 : _a2.uid) !==
(newExpandingNode == null ? void 0 : newExpandingNode.uid)
) {
expandingNode.value = node2
menus2.value = newMenus
!silent &&
emit2(
'expand-change',
(node2 == null ? void 0 : node2.pathValues) || []
)
}
}
const handleCheckChange = (node2, checked2, emitClose = true) => {
const { checkStrictly, multiple } = config2.value
const oldNode = checkedNodes.value[0]
manualChecked = true
!multiple && (oldNode == null ? void 0 : oldNode.doCheck(false))
node2.doCheck(checked2)
calculateCheckedValue()
emitClose && !multiple && !checkStrictly && emit2('close')
!emitClose && !multiple && !checkStrictly && expandParentNode(node2)
}
const expandParentNode = (node2) => {
if (!node2) return
node2 = node2.parent
expandParentNode(node2)
node2 && expandNode(node2)
}
const getFlattedNodes = (leafOnly) => {
return store2 == null ? void 0 : store2.getFlattedNodes(leafOnly)
}
const getCheckedNodes = (leafOnly) => {
var _a2
return (_a2 = getFlattedNodes(leafOnly)) == null
? void 0
: _a2.filter((node2) => node2.checked !== false)
}
const clearCheckedNodes = () => {
checkedNodes.value.forEach((node2) => node2.doCheck(false))
calculateCheckedValue()
}
const calculateCheckedValue = () => {
var _a2
const { checkStrictly, multiple } = config2.value
const oldNodes = checkedNodes.value
const newNodes = getCheckedNodes(!checkStrictly)
const nodes = sortByOriginalOrder(oldNodes, newNodes)
const values2 = nodes.map((node2) => node2.valueByOption)
checkedNodes.value = nodes
checkedValue.value = multiple
? values2
: (_a2 = values2[0]) != null
? _a2
: null
}
const syncCheckedValue = (loaded = false, forced = false) => {
const { modelValue } = props2
const { lazy, multiple, checkStrictly } = config2.value
const leafOnly = !checkStrictly
if (
!initialLoaded.value ||
manualChecked ||
(!forced && isEqual$4(modelValue, checkedValue.value))
)
return
if (lazy && !loaded) {
const values2 = unique(flattenDeep$1(castArray(modelValue)))
const nodes = values2
.map((val2) =>
store2 == null ? void 0 : store2.getNodeByValue(val2)
)
.filter((node2) => !!node2 && !node2.loaded && !node2.loading)
if (nodes.length) {
nodes.forEach((node2) => {
lazyLoad(node2, () => syncCheckedValue(false, forced))
})
} else {
syncCheckedValue(true, forced)
}
} else {
const values2 = multiple ? castArray(modelValue) : [modelValue]
const nodes = unique(
values2.map((val2) =>
store2 == null ? void 0 : store2.getNodeByValue(val2, leafOnly)
)
)
syncMenuState(nodes, false)
checkedValue.value = modelValue
}
}
const syncMenuState = (newCheckedNodes, reserveExpandingState = true) => {
const { checkStrictly } = config2.value
const oldNodes = checkedNodes.value
const newNodes = newCheckedNodes.filter(
(node2) => !!node2 && (checkStrictly || node2.isLeaf)
)
const oldExpandingNode =
store2 == null ? void 0 : store2.getSameNode(expandingNode.value)
const newExpandingNode =
(reserveExpandingState && oldExpandingNode) || newNodes[0]
if (newExpandingNode) {
newExpandingNode.pathNodes.forEach((node2) => expandNode(node2, true))
} else {
expandingNode.value = null
}
oldNodes.forEach((node2) => node2.doCheck(false))
newNodes.forEach((node2) => node2.doCheck(true))
checkedNodes.value = newNodes
nextTick(scrollToExpandingNode)
}
const scrollToExpandingNode = () => {
if (!isClient$1) return
menuList.value.forEach((menu2) => {
const menuElement = menu2 == null ? void 0 : menu2.$el
if (menuElement) {
const container = menuElement.querySelector(
`.${ns.namespace.value}-scrollbar__wrap`
)
const activeNode =
menuElement.querySelector(`.${ns.b('node')}.${ns.is('active')}`) ||
menuElement.querySelector(`.${ns.b('node')}.in-active-path`)
scrollIntoView$1(container, activeNode)
}
})
}
const handleKeyDown = (e2) => {
const target2 = e2.target
const { code: code2 } = e2
switch (code2) {
case EVENT_CODE.up:
case EVENT_CODE.down: {
e2.preventDefault()
const distance2 = code2 === EVENT_CODE.up ? -1 : 1
focusNode(
getSibling(target2, distance2, `.${ns.b('node')}[tabindex="-1"]`)
)
break
}
case EVENT_CODE.left: {
e2.preventDefault()
const preMenu = menuList.value[getMenuIndex(target2) - 1]
const expandedNode =
preMenu == null
? void 0
: preMenu.$el.querySelector(
`.${ns.b('node')}[aria-expanded="true"]`
)
focusNode(expandedNode)
break
}
case EVENT_CODE.right: {
e2.preventDefault()
const nextMenu = menuList.value[getMenuIndex(target2) + 1]
const firstNode =
nextMenu == null
? void 0
: nextMenu.$el.querySelector(`.${ns.b('node')}[tabindex="-1"]`)
focusNode(firstNode)
break
}
case EVENT_CODE.enter:
checkNode(target2)
break
case EVENT_CODE.esc:
case EVENT_CODE.tab:
emit2('close')
break
}
}
provide(
CASCADER_PANEL_INJECTION_KEY,
reactive({
config: config2,
expandingNode,
checkedNodes,
isHoverMenu,
initialLoaded,
renderLabelFn,
lazyLoad,
expandNode,
handleCheckChange,
})
)
watch$1([config2, () => props2.options], initStore, {
deep: true,
immediate: true,
})
watch$1(
() => props2.modelValue,
() => {
manualChecked = false
syncCheckedValue()
}
)
watch$1(checkedValue, (val2) => {
if (!isEqual$4(val2, props2.modelValue)) {
emit2(UPDATE_MODEL_EVENT, val2)
emit2(CHANGE_EVENT, val2)
}
})
onBeforeUpdate(() => (menuList.value = []))
onMounted(() => !isEmpty$3(props2.modelValue) && syncCheckedValue())
return {
ns,
menuList,
menus: menus2,
checkedNodes,
handleKeyDown,
handleCheckChange,
getFlattedNodes,
getCheckedNodes,
clearCheckedNodes,
calculateCheckedValue,
scrollToExpandingNode,
}
},
})
function _sfc_render$1r(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_cascader_menu = resolveComponent('el-cascader-menu')
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
_ctx.ns.b('panel'),
_ctx.ns.is('bordered', _ctx.border),
]),
onKeydown:
_cache[0] ||
(_cache[0] = (...args) =>
_ctx.handleKeyDown && _ctx.handleKeyDown(...args)),
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.menus, (menu2, index2) => {
return (
openBlock(),
createBlock(
_component_el_cascader_menu,
{
key: index2,
ref_for: true,
ref: (item2) => (_ctx.menuList[index2] = item2),
index: index2,
nodes: [...menu2],
},
null,
8,
['index', 'nodes']
)
)
}),
128
)),
],
34
)
)
}
var CascaderPanel = /* @__PURE__ */ _export_sfc$1(_sfc_main$8K, [
['render', _sfc_render$1r],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/cascader-panel/src/index.vue',
],
])
CascaderPanel.install = (app2) => {
app2.component(CascaderPanel.name, CascaderPanel)
}
const _CascaderPanel = CascaderPanel
const ElCascaderPanel = _CascaderPanel
const tagProps = buildProps({
closable: Boolean,
type: {
type: String,
values: ['success', 'info', 'warning', 'danger', ''],
default: '',
},
hit: Boolean,
disableTransitions: Boolean,
color: {
type: String,
default: '',
},
size: {
type: String,
values: componentSizes,
default: '',
},
effect: {
type: String,
values: ['dark', 'light', 'plain'],
default: 'light',
},
round: Boolean,
})
const tagEmits = {
close: (evt) => evt instanceof MouseEvent,
click: (evt) => evt instanceof MouseEvent,
}
const __default__$u = {
name: 'ElTag',
}
const _sfc_main$8J = /* @__PURE__ */ defineComponent({
...__default__$u,
props: tagProps,
emits: tagEmits,
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const tagSize = useSize$1()
const ns = useNamespace('tag')
const classes = computed(() => {
const {
type: type4,
hit,
effect: effect2,
closable,
round: round2,
} = props2
return [
ns.b(),
ns.is('closable', closable),
ns.m(type4),
ns.m(tagSize.value),
ns.m(effect2),
ns.is('hit', hit),
ns.is('round', round2),
]
})
const handleClose = (event) => {
event.stopPropagation()
emit2('close', event)
}
const handleClick2 = (event) => {
emit2('click', event)
}
return (_ctx, _cache) => {
return !_ctx.disableTransitions
? (openBlock(),
createElementBlock(
'span',
{
key: 0,
class: normalizeClass(unref(classes)),
style: normalizeStyle$1({ backgroundColor: _ctx.color }),
onClick: handleClick2,
},
[
createElementVNode(
'span',
{
class: normalizeClass(unref(ns).e('content')),
},
[renderSlot(_ctx.$slots, 'default')],
2
),
_ctx.closable
? (openBlock(),
createBlock(
unref(ElIcon),
{
key: 0,
class: normalizeClass(unref(ns).e('close')),
onClick: handleClose,
},
{
default: withCtx(() => [createVNode$1(unref(close$2))]),
_: 1,
},
8,
['class']
))
: createCommentVNode('v-if', true),
],
6
))
: (openBlock(),
createBlock(
Transition,
{
key: 1,
name: `${unref(ns).namespace.value}-zoom-in-center`,
},
{
default: withCtx(() => [
createElementVNode(
'span',
{
class: normalizeClass(unref(classes)),
style: normalizeStyle$1({ backgroundColor: _ctx.color }),
onClick: handleClick2,
},
[
createElementVNode(
'span',
{
class: normalizeClass(unref(ns).e('content')),
},
[renderSlot(_ctx.$slots, 'default')],
2
),
_ctx.closable
? (openBlock(),
createBlock(
unref(ElIcon),
{
key: 0,
class: normalizeClass(unref(ns).e('close')),
onClick: handleClose,
},
{
default: withCtx(() => [
createVNode$1(unref(close$2)),
]),
_: 1,
},
8,
['class']
))
: createCommentVNode('v-if', true),
],
6
),
]),
_: 3,
},
8,
['name']
))
}
},
})
var Tag = /* @__PURE__ */ _export_sfc$1(_sfc_main$8J, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/tag/src/tag.vue',
],
])
const ElTag = withInstall(Tag)
const DEFAULT_INPUT_HEIGHT = 40
const INPUT_HEIGHT_MAP = {
large: 36,
default: 32,
small: 28,
}
const popperOptions = {
modifiers: [
{
name: 'arrowPosition',
enabled: true,
phase: 'main',
fn: ({ state: state2 }) => {
const { modifiersData, placement } = state2
if (['right', 'left', 'bottom', 'top'].includes(placement)) return
modifiersData.arrow.x = 35
},
requires: ['arrow'],
},
],
}
const COMPONENT_NAME$b = 'ElCascader'
const _sfc_main$8I = defineComponent({
name: COMPONENT_NAME$b,
components: {
ElCascaderPanel: _CascaderPanel,
ElInput,
ElTooltip,
ElScrollbar,
ElTag,
ElIcon,
CircleClose: circleClose,
Check: check$1,
ArrowDown: arrowDown,
},
directives: {
Clickoutside: ClickOutside,
},
props: {
...CommonProps,
size: {
type: String,
validator: isValidComponentSize,
},
placeholder: {
type: String,
},
disabled: Boolean,
clearable: Boolean,
filterable: Boolean,
filterMethod: {
type: Function,
default: (node2, keyword) => node2.text.includes(keyword),
},
separator: {
type: String,
default: ' / ',
},
showAllLevels: {
type: Boolean,
default: true,
},
collapseTags: Boolean,
collapseTagsTooltip: {
type: Boolean,
default: false,
},
debounce: {
type: Number,
default: 300,
},
beforeFilter: {
type: Function,
default: () => true,
},
popperClass: {
type: String,
default: '',
},
popperAppendToBody: {
type: Boolean,
default: void 0,
},
teleported: useTooltipContentProps.teleported,
tagType: { ...tagProps.type, default: 'info' },
},
emits: [
UPDATE_MODEL_EVENT,
CHANGE_EVENT,
'focus',
'blur',
'visible-change',
'expand-change',
'remove-tag',
],
setup(props2, { emit: emit2 }) {
let inputInitialHeight = 0
let pressDeleteCount = 0
const { compatTeleported } = useDeprecateAppendToBody(
COMPONENT_NAME$b,
'popperAppendToBody'
)
const nsCascader = useNamespace('cascader')
const nsInput = useNamespace('input')
const { t: t3 } = useLocale()
const elForm = inject(formContextKey, {})
const elFormItem = inject(formItemContextKey, {})
const tooltipRef = ref(null)
const input = ref(null)
const tagWrapper = ref(null)
const panel = ref(null)
const suggestionPanel = ref(null)
const popperVisible = ref(false)
const inputHover = ref(false)
const filtering = ref(false)
const inputValue = ref('')
const searchInputValue = ref('')
const presentTags = ref([])
const allPresentTags = ref([])
const suggestions = ref([])
const isOnComposition = ref(false)
const isDisabled = computed(() => props2.disabled || elForm.disabled)
const inputPlaceholder = computed(
() => props2.placeholder || t3('el.cascader.placeholder')
)
const realSize = useSize$1()
const tagSize = computed(() =>
['small'].includes(realSize.value) ? 'small' : 'default'
)
const multiple = computed(() => !!props2.props.multiple)
const readonly2 = computed(() => !props2.filterable || multiple.value)
const searchKeyword = computed(() =>
multiple.value ? searchInputValue.value : inputValue.value
)
const checkedNodes = computed(() => {
var _a2
return ((_a2 = panel.value) == null ? void 0 : _a2.checkedNodes) || []
})
const clearBtnVisible = computed(() => {
if (
!props2.clearable ||
isDisabled.value ||
filtering.value ||
!inputHover.value
)
return false
return !!checkedNodes.value.length
})
const presentText = computed(() => {
const { showAllLevels, separator } = props2
const nodes = checkedNodes.value
return nodes.length
? multiple.value
? ' '
: nodes[0].calcText(showAllLevels, separator)
: ''
})
const checkedValue = computed({
get() {
return props2.modelValue
},
set(val2) {
var _a2
emit2(UPDATE_MODEL_EVENT, val2)
emit2(CHANGE_EVENT, val2)
;(_a2 = elFormItem.validate) == null
? void 0
: _a2.call(elFormItem, 'change').catch((err) => debugWarn())
},
})
const popperPaneRef = computed(() => {
var _a2, _b2
return (_b2 =
(_a2 = tooltipRef.value) == null ? void 0 : _a2.popperRef) == null
? void 0
: _b2.contentRef
})
const togglePopperVisible = (visible) => {
var _a2, _b2, _c2
if (isDisabled.value) return
visible = visible != null ? visible : !popperVisible.value
if (visible !== popperVisible.value) {
popperVisible.value = visible
;(_b2 = (_a2 = input.value) == null ? void 0 : _a2.input) == null
? void 0
: _b2.setAttribute('aria-expanded', `${visible}`)
if (visible) {
updatePopperPosition()
nextTick(
(_c2 = panel.value) == null ? void 0 : _c2.scrollToExpandingNode
)
} else if (props2.filterable) {
const { value: value2 } = presentText
inputValue.value = value2
searchInputValue.value = value2
}
emit2('visible-change', visible)
}
}
const updatePopperPosition = () => {
nextTick(() => {
var _a2
;(_a2 = tooltipRef.value) == null ? void 0 : _a2.updatePopper()
})
}
const hideSuggestionPanel = () => {
filtering.value = false
}
const genTag2 = (node2) => {
const { showAllLevels, separator } = props2
return {
node: node2,
key: node2.uid,
text: node2.calcText(showAllLevels, separator),
hitState: false,
closable: !isDisabled.value && !node2.isDisabled,
isCollapseTag: false,
}
}
const deleteTag = (tag) => {
var _a2
const node2 = tag.node
node2.doCheck(false)
;(_a2 = panel.value) == null ? void 0 : _a2.calculateCheckedValue()
emit2('remove-tag', node2.valueByOption)
}
const calculatePresentTags = () => {
if (!multiple.value) return
const nodes = checkedNodes.value
const tags = []
const allTags = []
nodes.forEach((node2) => allTags.push(genTag2(node2)))
allPresentTags.value = allTags
if (nodes.length) {
const [first2, ...rest] = nodes
const restCount = rest.length
tags.push(genTag2(first2))
if (restCount) {
if (props2.collapseTags) {
tags.push({
key: -1,
text: `+ ${restCount}`,
closable: false,
isCollapseTag: true,
})
} else {
rest.forEach((node2) => tags.push(genTag2(node2)))
}
}
}
presentTags.value = tags
}
const calculateSuggestions = () => {
var _a2, _b2
const { filterMethod, showAllLevels, separator } = props2
const res =
(_b2 =
(_a2 = panel.value) == null
? void 0
: _a2.getFlattedNodes(!props2.props.checkStrictly)) == null
? void 0
: _b2.filter((node2) => {
if (node2.isDisabled) return false
node2.calcText(showAllLevels, separator)
return filterMethod(node2, searchKeyword.value)
})
if (multiple.value) {
presentTags.value.forEach((tag) => {
tag.hitState = false
})
allPresentTags.value.forEach((tag) => {
tag.hitState = false
})
}
filtering.value = true
suggestions.value = res
updatePopperPosition()
}
const focusFirstNode = () => {
var _a2
let firstNode
if (filtering.value && suggestionPanel.value) {
firstNode = suggestionPanel.value.$el.querySelector(
`.${nsCascader.e('suggestion-item')}`
)
} else {
firstNode =
(_a2 = panel.value) == null
? void 0
: _a2.$el.querySelector(`.${nsCascader.b('node')}[tabindex="-1"]`)
}
if (firstNode) {
firstNode.focus()
!filtering.value && firstNode.click()
}
}
const updateStyle2 = () => {
var _a2, _b2
const inputInner = (_a2 = input.value) == null ? void 0 : _a2.input
const tagWrapperEl = tagWrapper.value
const suggestionPanelEl =
(_b2 = suggestionPanel.value) == null ? void 0 : _b2.$el
if (!isClient$1 || !inputInner) return
if (suggestionPanelEl) {
const suggestionList = suggestionPanelEl.querySelector(
`.${nsCascader.e('suggestion-list')}`
)
suggestionList.style.minWidth = `${inputInner.offsetWidth}px`
}
if (tagWrapperEl) {
const { offsetHeight } = tagWrapperEl
const height =
presentTags.value.length > 0
? `${Math.max(offsetHeight + 6, inputInitialHeight)}px`
: `${inputInitialHeight}px`
inputInner.style.height = height
updatePopperPosition()
}
}
const getCheckedNodes = (leafOnly) => {
var _a2
return (_a2 = panel.value) == null
? void 0
: _a2.getCheckedNodes(leafOnly)
}
const handleExpandChange = (value2) => {
updatePopperPosition()
emit2('expand-change', value2)
}
const handleComposition = (event) => {
var _a2
const text2 = (_a2 = event.target) == null ? void 0 : _a2.value
if (event.type === 'compositionend') {
isOnComposition.value = false
nextTick(() => handleInput(text2))
} else {
const lastCharacter = text2[text2.length - 1] || ''
isOnComposition.value = !isKorean(lastCharacter)
}
}
const handleKeyDown = (e2) => {
if (isOnComposition.value) return
switch (e2.code) {
case EVENT_CODE.enter:
togglePopperVisible()
break
case EVENT_CODE.down:
togglePopperVisible(true)
nextTick(focusFirstNode)
e2.preventDefault()
break
case EVENT_CODE.esc:
case EVENT_CODE.tab:
togglePopperVisible(false)
break
}
}
const handleClear = () => {
var _a2
;(_a2 = panel.value) == null ? void 0 : _a2.clearCheckedNodes()
togglePopperVisible(false)
}
const handleSuggestionClick = (node2) => {
var _a2, _b2
const { checked: checked2 } = node2
if (multiple.value) {
;(_a2 = panel.value) == null
? void 0
: _a2.handleCheckChange(node2, !checked2, false)
} else {
!checked2 &&
((_b2 = panel.value) == null
? void 0
: _b2.handleCheckChange(node2, true, false))
togglePopperVisible(false)
}
}
const handleSuggestionKeyDown = (e2) => {
const target2 = e2.target
const { code: code2 } = e2
switch (code2) {
case EVENT_CODE.up:
case EVENT_CODE.down: {
const distance2 = code2 === EVENT_CODE.up ? -1 : 1
focusNode(
getSibling(
target2,
distance2,
`.${nsCascader.e('suggestion-item')}[tabindex="-1"]`
)
)
break
}
case EVENT_CODE.enter:
target2.click()
break
case EVENT_CODE.esc:
case EVENT_CODE.tab:
togglePopperVisible(false)
break
}
}
const handleDelete = () => {
const tags = presentTags.value
const lastTag = tags[tags.length - 1]
pressDeleteCount = searchInputValue.value ? 0 : pressDeleteCount + 1
if (!lastTag || !pressDeleteCount) return
if (lastTag.hitState) {
deleteTag(lastTag)
} else {
lastTag.hitState = true
}
}
const handleFilter = debounce$3(() => {
const { value: value2 } = searchKeyword
if (!value2) return
const passed = props2.beforeFilter(value2)
if (isPromise$1(passed)) {
passed.then(calculateSuggestions).catch(() => {})
} else if (passed !== false) {
calculateSuggestions()
} else {
hideSuggestionPanel()
}
}, props2.debounce)
const handleInput = (val2, e2) => {
!popperVisible.value && togglePopperVisible(true)
if (e2 == null ? void 0 : e2.isComposing) return
val2 ? handleFilter() : hideSuggestionPanel()
}
watch$1(filtering, updatePopperPosition)
watch$1([checkedNodes, isDisabled], calculatePresentTags)
watch$1(presentTags, () => {
nextTick(() => updateStyle2())
})
watch$1(presentText, (val2) => (inputValue.value = val2), {
immediate: true,
})
onMounted(() => {
var _a2
const inputEl = (_a2 = input.value) == null ? void 0 : _a2.$el
inputInitialHeight =
(inputEl == null ? void 0 : inputEl.offsetHeight) ||
INPUT_HEIGHT_MAP[realSize.value] ||
DEFAULT_INPUT_HEIGHT
addResizeListener(inputEl, updateStyle2)
})
onBeforeUnmount(() => {
var _a2
removeResizeListener(
(_a2 = input.value) == null ? void 0 : _a2.$el,
updateStyle2
)
})
return {
popperOptions,
tooltipRef,
popperPaneRef,
input,
tagWrapper,
panel,
suggestionPanel,
popperVisible,
inputHover,
inputPlaceholder,
filtering,
presentText,
checkedValue,
inputValue,
searchInputValue,
presentTags,
allPresentTags,
suggestions,
isDisabled,
isOnComposition,
realSize,
tagSize,
multiple,
readonly: readonly2,
clearBtnVisible,
compatTeleported,
nsCascader,
nsInput,
t: t3,
togglePopperVisible,
hideSuggestionPanel,
deleteTag,
focusFirstNode,
getCheckedNodes,
handleExpandChange,
handleKeyDown,
handleComposition,
handleClear,
handleSuggestionClick,
handleSuggestionKeyDown,
handleDelete,
handleInput,
}
},
})
const _hoisted_1$6K = { key: 0 }
const _hoisted_2$5p = { class: 'el-cascader__collapse-tags' }
const _hoisted_3$4N = ['placeholder']
const _hoisted_4$47 = ['onClick']
function _sfc_render$1q(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_circle_close = resolveComponent('circle-close')
const _component_el_icon = resolveComponent('el-icon')
const _component_arrow_down = resolveComponent('arrow-down')
const _component_el_input = resolveComponent('el-input')
const _component_el_tag = resolveComponent('el-tag')
const _component_el_tooltip = resolveComponent('el-tooltip')
const _component_el_cascader_panel = resolveComponent('el-cascader-panel')
const _component_check = resolveComponent('check')
const _component_el_scrollbar = resolveComponent('el-scrollbar')
const _directive_clickoutside = resolveDirective('clickoutside')
return (
openBlock(),
createBlock(
_component_el_tooltip,
{
ref: 'tooltipRef',
visible: _ctx.popperVisible,
'onUpdate:visible':
_cache[17] ||
(_cache[17] = ($event) => (_ctx.popperVisible = $event)),
teleported: _ctx.compatTeleported,
'popper-class': [_ctx.nsCascader.e('dropdown'), _ctx.popperClass],
'popper-options': _ctx.popperOptions,
'fallback-placements': [
'bottom-start',
'bottom',
'top-start',
'top',
'right',
'left',
],
'stop-popper-mouse-event': false,
'gpu-acceleration': false,
placement: 'bottom-start',
transition: `${_ctx.nsCascader.namespace.value}-zoom-in-top`,
effect: 'light',
pure: '',
persistent: '',
onHide: _ctx.hideSuggestionPanel,
},
{
default: withCtx(() => [
withDirectives(
(openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
_ctx.nsCascader.b(),
_ctx.nsCascader.m(_ctx.realSize),
_ctx.nsCascader.is('disabled', _ctx.isDisabled),
_ctx.$attrs.class,
]),
style: normalizeStyle$1(_ctx.$attrs.style),
onClick:
_cache[11] ||
(_cache[11] = () =>
_ctx.togglePopperVisible(_ctx.readonly ? void 0 : true)),
onKeydown:
_cache[12] ||
(_cache[12] = (...args) =>
_ctx.handleKeyDown && _ctx.handleKeyDown(...args)),
onMouseenter:
_cache[13] ||
(_cache[13] = ($event) => (_ctx.inputHover = true)),
onMouseleave:
_cache[14] ||
(_cache[14] = ($event) => (_ctx.inputHover = false)),
},
[
createVNode$1(
_component_el_input,
{
ref: 'input',
modelValue: _ctx.inputValue,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) => (_ctx.inputValue = $event)),
placeholder: _ctx.inputPlaceholder,
readonly: _ctx.readonly,
disabled: _ctx.isDisabled,
'validate-event': false,
size: _ctx.realSize,
class: normalizeClass(
_ctx.nsCascader.is('focus', _ctx.popperVisible)
),
onCompositionstart: _ctx.handleComposition,
onCompositionupdate: _ctx.handleComposition,
onCompositionend: _ctx.handleComposition,
onFocus:
_cache[2] ||
(_cache[2] = (e2) => _ctx.$emit('focus', e2)),
onBlur:
_cache[3] || (_cache[3] = (e2) => _ctx.$emit('blur', e2)),
onInput: _ctx.handleInput,
},
{
suffix: withCtx(() => [
_ctx.clearBtnVisible
? (openBlock(),
createBlock(
_component_el_icon,
{
key: 'clear',
class: normalizeClass([
_ctx.nsInput.e('icon'),
'icon-circle-close',
]),
onClick: withModifiers(_ctx.handleClear, [
'stop',
]),
},
{
default: withCtx(() => [
createVNode$1(_component_circle_close),
]),
_: 1,
},
8,
['class', 'onClick']
))
: (openBlock(),
createBlock(
_component_el_icon,
{
key: 'arrow-down',
class: normalizeClass([
_ctx.nsInput.e('icon'),
'icon-arrow-down',
_ctx.nsCascader.is(
'reverse',
_ctx.popperVisible
),
]),
onClick:
_cache[0] ||
(_cache[0] = withModifiers(
($event) => _ctx.togglePopperVisible(),
['stop']
)),
},
{
default: withCtx(() => [
createVNode$1(_component_arrow_down),
]),
_: 1,
},
8,
['class']
)),
]),
_: 1,
},
8,
[
'modelValue',
'placeholder',
'readonly',
'disabled',
'size',
'class',
'onCompositionstart',
'onCompositionupdate',
'onCompositionend',
'onInput',
]
),
_ctx.multiple
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
ref: 'tagWrapper',
class: normalizeClass(_ctx.nsCascader.e('tags')),
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.presentTags, (tag) => {
return (
openBlock(),
createBlock(
_component_el_tag,
{
key: tag.key,
type: _ctx.tagType,
size: _ctx.tagSize,
hit: tag.hitState,
closable: tag.closable,
'disable-transitions': '',
onClose: ($event) => _ctx.deleteTag(tag),
},
{
default: withCtx(() => [
tag.isCollapseTag === false
? (openBlock(),
createElementBlock(
'span',
_hoisted_1$6K,
toDisplayString$1(tag.text),
1
))
: (openBlock(),
createBlock(
_component_el_tooltip,
{
key: 1,
teleported: false,
disabled:
_ctx.popperVisible ||
!_ctx.collapseTagsTooltip,
'fallback-placements': [
'bottom',
'top',
'right',
'left',
],
placement: 'bottom',
effect: 'light',
},
{
default: withCtx(() => [
createElementVNode(
'span',
null,
toDisplayString$1(tag.text),
1
),
]),
content: withCtx(() => [
createElementVNode(
'div',
_hoisted_2$5p,
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
_ctx.allPresentTags,
(tag2, idx) => {
return (
openBlock(),
createElementBlock(
'div',
{
key: idx,
class:
'el-cascader__collapse-tag',
},
[
(openBlock(),
createBlock(
_component_el_tag,
{
key: tag2.key,
class:
'in-tooltip',
type: _ctx.tagType,
size: _ctx.tagSize,
hit: tag2.hitState,
closable:
tag2.closable,
'disable-transitions':
'',
onClose: (
$event
) =>
_ctx.deleteTag(
tag2
),
},
{
default:
withCtx(
() => [
createElementVNode(
'span',
null,
toDisplayString$1(
tag2.text
),
1
),
]
),
_: 2,
},
1032,
[
'type',
'size',
'hit',
'closable',
'onClose',
]
)),
]
)
)
}
),
128
)),
]
),
]),
_: 2,
},
1032,
['disabled']
)),
]),
_: 2,
},
1032,
['type', 'size', 'hit', 'closable', 'onClose']
)
)
}),
128
)),
_ctx.filterable && !_ctx.isDisabled
? withDirectives(
(openBlock(),
createElementBlock(
'input',
{
key: 0,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(_ctx.searchInputValue = $event)),
type: 'text',
class: normalizeClass(
_ctx.nsCascader.e('search-input')
),
placeholder: _ctx.presentText
? ''
: _ctx.inputPlaceholder,
onInput:
_cache[5] ||
(_cache[5] = (e2) =>
_ctx.handleInput(
_ctx.searchInputValue,
e2
)),
onClick:
_cache[6] ||
(_cache[6] = withModifiers(
($event) =>
_ctx.togglePopperVisible(true),
['stop']
)),
onKeydown:
_cache[7] ||
(_cache[7] = withKeys(
(...args) =>
_ctx.handleDelete &&
_ctx.handleDelete(...args),
['delete']
)),
onCompositionstart:
_cache[8] ||
(_cache[8] = (...args) =>
_ctx.handleComposition &&
_ctx.handleComposition(...args)),
onCompositionupdate:
_cache[9] ||
(_cache[9] = (...args) =>
_ctx.handleComposition &&
_ctx.handleComposition(...args)),
onCompositionend:
_cache[10] ||
(_cache[10] = (...args) =>
_ctx.handleComposition &&
_ctx.handleComposition(...args)),
},
null,
42,
_hoisted_3$4N
)),
[[vModelText, _ctx.searchInputValue]]
)
: createCommentVNode('v-if', true),
],
2
))
: createCommentVNode('v-if', true),
],
38
)),
[
[
_directive_clickoutside,
() => _ctx.togglePopperVisible(false),
_ctx.popperPaneRef,
],
]
),
]),
content: withCtx(() => [
withDirectives(
createVNode$1(
_component_el_cascader_panel,
{
ref: 'panel',
modelValue: _ctx.checkedValue,
'onUpdate:modelValue':
_cache[15] ||
(_cache[15] = ($event) => (_ctx.checkedValue = $event)),
options: _ctx.options,
props: _ctx.props,
border: false,
'render-label': _ctx.$slots.default,
onExpandChange: _ctx.handleExpandChange,
onClose:
_cache[16] ||
(_cache[16] = ($event) =>
_ctx.$nextTick(() => _ctx.togglePopperVisible(false))),
},
null,
8,
[
'modelValue',
'options',
'props',
'render-label',
'onExpandChange',
]
),
[[vShow, !_ctx.filtering]]
),
_ctx.filterable
? withDirectives(
(openBlock(),
createBlock(
_component_el_scrollbar,
{
key: 0,
ref: 'suggestionPanel',
tag: 'ul',
class: normalizeClass(
_ctx.nsCascader.e('suggestion-panel')
),
'view-class': _ctx.nsCascader.e('suggestion-list'),
onKeydown: _ctx.handleSuggestionKeyDown,
},
{
default: withCtx(() => [
_ctx.suggestions.length
? (openBlock(true),
createElementBlock(
Fragment,
{ key: 0 },
renderList(_ctx.suggestions, (item2) => {
return (
openBlock(),
createElementBlock(
'li',
{
key: item2.uid,
class: normalizeClass([
_ctx.nsCascader.e('suggestion-item'),
_ctx.nsCascader.is(
'checked',
item2.checked
),
]),
tabindex: -1,
onClick: ($event) =>
_ctx.handleSuggestionClick(item2),
},
[
createElementVNode(
'span',
null,
toDisplayString$1(item2.text),
1
),
item2.checked
? (openBlock(),
createBlock(
_component_el_icon,
{ key: 0 },
{
default: withCtx(() => [
createVNode$1(_component_check),
]),
_: 1,
}
))
: createCommentVNode('v-if', true),
],
10,
_hoisted_4$47
)
)
}),
128
))
: renderSlot(_ctx.$slots, 'empty', { key: 1 }, () => [
createElementVNode(
'li',
{
class: normalizeClass(
_ctx.nsCascader.e('empty-text')
),
},
toDisplayString$1(_ctx.t('el.cascader.noMatch')),
3
),
]),
]),
_: 3,
},
8,
['class', 'view-class', 'onKeydown']
)),
[[vShow, _ctx.filtering]]
)
: createCommentVNode('v-if', true),
]),
_: 3,
},
8,
[
'visible',
'teleported',
'popper-class',
'popper-options',
'transition',
'onHide',
]
)
)
}
var Cascader = /* @__PURE__ */ _export_sfc$1(_sfc_main$8I, [
['render', _sfc_render$1q],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/cascader/src/index.vue',
],
])
Cascader.install = (app2) => {
app2.component(Cascader.name, Cascader)
}
const _Cascader = Cascader
const ElCascader = _Cascader
const checkTagProps = buildProps({
checked: {
type: Boolean,
default: false,
},
})
const checkTagEmits = {
'update:checked': (value2) => isBoolean$5(value2),
change: (value2) => isBoolean$5(value2),
}
const __default__$t = {
name: 'ElCheckTag',
}
const _sfc_main$8H = /* @__PURE__ */ defineComponent({
...__default__$t,
props: checkTagProps,
emits: checkTagEmits,
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const ns = useNamespace('check-tag')
const handleChange = () => {
const checked2 = !props2.checked
emit2('change', checked2)
emit2('update:checked', checked2)
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'span',
{
class: normalizeClass([
unref(ns).b(),
unref(ns).is('checked', _ctx.checked),
]),
onClick: handleChange,
},
[renderSlot(_ctx.$slots, 'default')],
2
)
)
}
},
})
var CheckTag = /* @__PURE__ */ _export_sfc$1(_sfc_main$8H, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/check-tag/src/check-tag.vue',
],
])
const ElCheckTag = withInstall(CheckTag)
const colProps = buildProps({
tag: {
type: String,
default: 'div',
},
span: {
type: Number,
default: 24,
},
offset: {
type: Number,
default: 0,
},
pull: {
type: Number,
default: 0,
},
push: {
type: Number,
default: 0,
},
xs: {
type: definePropType([Number, Object]),
default: () => mutable({}),
},
sm: {
type: definePropType([Number, Object]),
default: () => mutable({}),
},
md: {
type: definePropType([Number, Object]),
default: () => mutable({}),
},
lg: {
type: definePropType([Number, Object]),
default: () => mutable({}),
},
xl: {
type: definePropType([Number, Object]),
default: () => mutable({}),
},
})
var Col = defineComponent({
name: 'ElCol',
props: colProps,
setup(props2, { slots }) {
const { gutter } = inject(rowContextKey, {
gutter: computed(() => 0),
})
const ns = useNamespace('col')
const style2 = computed(() => {
if (gutter.value) {
return {
paddingLeft: `${gutter.value / 2}px`,
paddingRight: `${gutter.value / 2}px`,
}
}
return {}
})
const classes = computed(() => {
const classes2 = []
const pos = ['span', 'offset', 'pull', 'push']
pos.forEach((prop) => {
const size = props2[prop]
if (typeof size === 'number') {
if (prop === 'span') classes2.push(ns.b(`${props2[prop]}`))
else if (size > 0) classes2.push(ns.b(`${prop}-${props2[prop]}`))
}
})
const sizes2 = ['xs', 'sm', 'md', 'lg', 'xl']
sizes2.forEach((size) => {
if (typeof props2[size] === 'number') {
classes2.push(ns.b(`${size}-${props2[size]}`))
} else if (typeof props2[size] === 'object') {
const sizeProps = props2[size]
Object.keys(sizeProps).forEach((prop) => {
classes2.push(
prop !== 'span'
? ns.b(`${size}-${prop}-${sizeProps[prop]}`)
: ns.b(`${size}-${sizeProps[prop]}`)
)
})
}
})
if (gutter.value) {
classes2.push(ns.is('guttered'))
}
return classes2
})
return () =>
createVNode$1(
props2.tag,
{
class: [ns.b(), classes.value],
style: style2.value,
},
slots
)
},
})
const ElCol = withInstall(Col)
const emitChangeFn = (value2) => typeof isNumber$h(value2)
const collapseProps = buildProps({
accordion: Boolean,
modelValue: {
type: definePropType([Array, String, Number]),
default: () => mutable([]),
},
})
const collapseEmits = {
[UPDATE_MODEL_EVENT]: emitChangeFn,
[CHANGE_EVENT]: emitChangeFn,
}
const __default__$s = {
name: 'ElCollapse',
}
const _sfc_main$8G = /* @__PURE__ */ defineComponent({
...__default__$s,
props: collapseProps,
emits: collapseEmits,
setup(__props2, { expose, emit: emit2 }) {
const props2 = __props2
const ns = useNamespace('collapse')
const activeNames = ref(castArray$1(props2.modelValue))
const setActiveNames = (_activeNames) => {
activeNames.value = _activeNames
const value2 = props2.accordion ? activeNames.value[0] : activeNames.value
emit2(UPDATE_MODEL_EVENT, value2)
emit2(CHANGE_EVENT, value2)
}
const handleItemClick = (name2) => {
if (props2.accordion) {
setActiveNames([
(activeNames.value[0] || activeNames.value[0] === 0) &&
activeNames.value[0] === name2
? ''
: name2,
])
} else {
const _activeNames = [...activeNames.value]
const index2 = _activeNames.indexOf(name2)
if (index2 > -1) {
_activeNames.splice(index2, 1)
} else {
_activeNames.push(name2)
}
setActiveNames(_activeNames)
}
}
watch$1(
() => props2.modelValue,
() => (activeNames.value = castArray$1(props2.modelValue)),
{ deep: true }
)
provide(collapseContextKey, {
activeNames,
handleItemClick,
})
expose({
activeNames,
setActiveNames,
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass(unref(ns).b()),
role: 'tablist',
'aria-multiselectable': 'true',
},
[renderSlot(_ctx.$slots, 'default')],
2
)
)
}
},
})
var Collapse = /* @__PURE__ */ _export_sfc$1(_sfc_main$8G, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/collapse/src/collapse.vue',
],
])
const _sfc_main$8F = defineComponent({
name: 'ElCollapseTransition',
setup() {
const ns = useNamespace('collapse-transition')
return {
ns,
on: {
beforeEnter(el2) {
if (!el2.dataset) el2.dataset = {}
el2.dataset.oldPaddingTop = el2.style.paddingTop
el2.dataset.oldPaddingBottom = el2.style.paddingBottom
el2.style.maxHeight = 0
el2.style.paddingTop = 0
el2.style.paddingBottom = 0
},
enter(el2) {
el2.dataset.oldOverflow = el2.style.overflow
if (el2.scrollHeight !== 0) {
el2.style.maxHeight = `${el2.scrollHeight}px`
el2.style.paddingTop = el2.dataset.oldPaddingTop
el2.style.paddingBottom = el2.dataset.oldPaddingBottom
} else {
el2.style.maxHeight = 0
el2.style.paddingTop = el2.dataset.oldPaddingTop
el2.style.paddingBottom = el2.dataset.oldPaddingBottom
}
el2.style.overflow = 'hidden'
},
afterEnter(el2) {
el2.style.maxHeight = ''
el2.style.overflow = el2.dataset.oldOverflow
},
beforeLeave(el2) {
if (!el2.dataset) el2.dataset = {}
el2.dataset.oldPaddingTop = el2.style.paddingTop
el2.dataset.oldPaddingBottom = el2.style.paddingBottom
el2.dataset.oldOverflow = el2.style.overflow
el2.style.maxHeight = `${el2.scrollHeight}px`
el2.style.overflow = 'hidden'
},
leave(el2) {
if (el2.scrollHeight !== 0) {
el2.style.maxHeight = 0
el2.style.paddingTop = 0
el2.style.paddingBottom = 0
}
},
afterLeave(el2) {
el2.style.maxHeight = ''
el2.style.overflow = el2.dataset.oldOverflow
el2.style.paddingTop = el2.dataset.oldPaddingTop
el2.style.paddingBottom = el2.dataset.oldPaddingBottom
},
},
}
},
})
function _sfc_render$1p(_ctx, _cache, $props2, $setup, $data, $options) {
return (
openBlock(),
createBlock(
Transition,
mergeProps(
{
name: _ctx.ns.b(),
},
toHandlers(_ctx.on)
),
{
default: withCtx(() => [renderSlot(_ctx.$slots, 'default')]),
_: 3,
},
16,
['name']
)
)
}
var CollapseTransition = /* @__PURE__ */ _export_sfc$1(_sfc_main$8F, [
['render', _sfc_render$1p],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/collapse-transition/src/collapse-transition.vue',
],
])
CollapseTransition.install = (app2) => {
app2.component(CollapseTransition.name, CollapseTransition)
}
const _CollapseTransition = CollapseTransition
const ElCollapseTransition = _CollapseTransition
const collapseItemProps = buildProps({
title: {
type: String,
default: '',
},
name: {
type: definePropType([String, Number]),
default: () => generateId(),
},
disabled: Boolean,
})
const _hoisted_1$6J = ['aria-expanded', 'aria-controls', 'aria-describedby']
const _hoisted_2$5o = ['id', 'tabindex', 'onKeypress']
const _hoisted_3$4M = ['id', 'aria-hidden', 'aria-labelledby']
const __default__$r = {
name: 'ElCollapseItem',
}
const _sfc_main$8E = /* @__PURE__ */ defineComponent({
...__default__$r,
props: collapseItemProps,
setup(__props2, { expose }) {
const props2 = __props2
const collapse2 = inject(collapseContextKey)
const ns = useNamespace('collapse')
const focusing = ref(false)
const isClick = ref(false)
const id2 = ref(generateId())
const isActive = computed(() =>
collapse2 == null
? void 0
: collapse2.activeNames.value.includes(props2.name)
)
const handleFocus = () => {
setTimeout(() => {
if (!isClick.value) {
focusing.value = true
} else {
isClick.value = false
}
}, 50)
}
const handleHeaderClick = () => {
if (props2.disabled) return
collapse2 == null ? void 0 : collapse2.handleItemClick(props2.name)
focusing.value = false
isClick.value = true
}
const handleEnterClick = () => {
collapse2 == null ? void 0 : collapse2.handleItemClick(props2.name)
}
expose({
isActive,
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
unref(ns).b('item'),
unref(ns).is('active', unref(isActive)),
unref(ns).is('disabled', _ctx.disabled),
]),
},
[
createElementVNode(
'div',
{
role: 'tab',
'aria-expanded': unref(isActive),
'aria-controls': unref(ns).b(`content-${id2.value}`),
'aria-describedby': unref(ns).b(`content-${id2.value}`),
},
[
createElementVNode(
'div',
{
id: unref(ns).b(`head-${id2.value}`),
class: normalizeClass([
unref(ns).be('item', 'header'),
unref(ns).is('active', unref(isActive)),
{ focusing: focusing.value },
]),
role: 'button',
tabindex: _ctx.disabled ? -1 : 0,
onClick: handleHeaderClick,
onKeypress: withKeys(
withModifiers(handleEnterClick, ['stop', 'prevent']),
['space', 'enter']
),
onFocus: handleFocus,
onBlur:
_cache[0] ||
(_cache[0] = ($event) => (focusing.value = false)),
},
[
renderSlot(_ctx.$slots, 'title', {}, () => [
createTextVNode(toDisplayString$1(_ctx.title), 1),
]),
createVNode$1(
unref(ElIcon),
{
class: normalizeClass([
unref(ns).be('item', 'arrow'),
unref(ns).is('active', unref(isActive)),
]),
},
{
default: withCtx(() => [
createVNode$1(unref(arrowRight)),
]),
_: 1,
},
8,
['class']
),
],
42,
_hoisted_2$5o
),
],
8,
_hoisted_1$6J
),
createVNode$1(unref(_CollapseTransition), null, {
default: withCtx(() => [
withDirectives(
createElementVNode(
'div',
{
id: unref(ns).b(`content-${id2.value}`),
class: normalizeClass(unref(ns).be('item', 'wrap')),
role: 'tabpanel',
'aria-hidden': !unref(isActive),
'aria-labelledby': unref(ns).b(`head-${id2.value}`),
},
[
createElementVNode(
'div',
{
class: normalizeClass(
unref(ns).be('item', 'content')
),
},
[renderSlot(_ctx.$slots, 'default')],
2
),
],
10,
_hoisted_3$4M
),
[[vShow, unref(isActive)]]
),
]),
_: 3,
}),
],
2
)
)
}
},
})
var CollapseItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$8E, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/collapse/src/collapse-item.vue',
],
])
const ElCollapse = withInstall(Collapse, {
CollapseItem,
})
const ElCollapseItem = withNoopInstall(CollapseItem)
let isDragging = false
function draggable$2(element, options2) {
if (!isClient$1) return
const moveFn = function (event) {
var _a2
;(_a2 = options2.drag) == null ? void 0 : _a2.call(options2, event)
}
const upFn = function (event) {
var _a2
off$1(document, 'mousemove', moveFn)
off$1(document, 'mouseup', upFn)
off$1(document, 'touchmove', moveFn)
off$1(document, 'touchend', upFn)
document.onselectstart = null
document.ondragstart = null
isDragging = false
;(_a2 = options2.end) == null ? void 0 : _a2.call(options2, event)
}
const downFn = function (event) {
var _a2
if (isDragging) return
event.preventDefault()
document.onselectstart = () => false
document.ondragstart = () => false
on$2(document, 'mousemove', moveFn)
on$2(document, 'mouseup', upFn)
on$2(document, 'touchmove', moveFn)
on$2(document, 'touchend', upFn)
isDragging = true
;(_a2 = options2.start) == null ? void 0 : _a2.call(options2, event)
}
on$2(element, 'mousedown', downFn)
on$2(element, 'touchstart', downFn)
}
const _sfc_main$8D = defineComponent({
name: 'ElColorAlphaSlider',
props: {
color: {
type: Object,
required: true,
},
vertical: {
type: Boolean,
default: false,
},
},
setup(props2) {
const instance = getCurrentInstance()
const thumb = shallowRef(null)
const bar = shallowRef(null)
const thumbLeft = ref(0)
const thumbTop = ref(0)
const background = ref(null)
watch$1(
() => props2.color.get('alpha'),
() => {
update3()
}
)
watch$1(
() => props2.color.value,
() => {
update3()
}
)
function getThumbLeft() {
if (props2.vertical) return 0
const el2 = instance.vnode.el
const alpha = props2.color.get('alpha')
if (!el2) return 0
return Math.round(
(alpha * (el2.offsetWidth - thumb.value.offsetWidth / 2)) / 100
)
}
function getThumbTop() {
const el2 = instance.vnode.el
if (!props2.vertical) return 0
const alpha = props2.color.get('alpha')
if (!el2) return 0
return Math.round(
(alpha * (el2.offsetHeight - thumb.value.offsetHeight / 2)) / 100
)
}
function getBackground() {
if (props2.color && props2.color.value) {
const { r: r2, g: g2, b: b2 } = props2.color.toRgb()
return `linear-gradient(to right, rgba(${r2}, ${g2}, ${b2}, 0) 0%, rgba(${r2}, ${g2}, ${b2}, 1) 100%)`
}
return null
}
function handleClick2(event) {
const target2 = event.target
if (target2 !== thumb.value) {
handleDrag(event)
}
}
function handleDrag(event) {
const el2 = instance.vnode.el
const rect = el2.getBoundingClientRect()
const { clientX, clientY } = getClientXY(event)
if (!props2.vertical) {
let left2 = clientX - rect.left
left2 = Math.max(thumb.value.offsetWidth / 2, left2)
left2 = Math.min(left2, rect.width - thumb.value.offsetWidth / 2)
props2.color.set(
'alpha',
Math.round(
((left2 - thumb.value.offsetWidth / 2) /
(rect.width - thumb.value.offsetWidth)) *
100
)
)
} else {
let top2 = clientY - rect.top
top2 = Math.max(thumb.value.offsetHeight / 2, top2)
top2 = Math.min(top2, rect.height - thumb.value.offsetHeight / 2)
props2.color.set(
'alpha',
Math.round(
((top2 - thumb.value.offsetHeight / 2) /
(rect.height - thumb.value.offsetHeight)) *
100
)
)
}
}
function update3() {
thumbLeft.value = getThumbLeft()
thumbTop.value = getThumbTop()
background.value = getBackground()
}
onMounted(() => {
const dragConfig = {
drag: (event) => {
handleDrag(event)
},
end: (event) => {
handleDrag(event)
},
}
draggable$2(bar.value, dragConfig)
draggable$2(thumb.value, dragConfig)
update3()
})
return {
thumb,
bar,
thumbLeft,
thumbTop,
background,
handleClick: handleClick2,
update: update3,
}
},
})
function _sfc_render$1o(_ctx, _cache, $props2, $setup, $data, $options) {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'el-color-alpha-slider',
{ 'is-vertical': _ctx.vertical },
]),
},
[
createElementVNode(
'div',
{
ref: 'bar',
class: 'el-color-alpha-slider__bar',
style: normalizeStyle$1({
background: _ctx.background,
}),
onClick:
_cache[0] ||
(_cache[0] = (...args) =>
_ctx.handleClick && _ctx.handleClick(...args)),
},
null,
4
),
createElementVNode(
'div',
{
ref: 'thumb',
class: 'el-color-alpha-slider__thumb',
style: normalizeStyle$1({
left: _ctx.thumbLeft + 'px',
top: _ctx.thumbTop + 'px',
}),
},
null,
4
),
],
2
)
)
}
var AlphaSlider = /* @__PURE__ */ _export_sfc$1(_sfc_main$8D, [
['render', _sfc_render$1o],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/color-picker/src/components/alpha-slider.vue',
],
])
const _sfc_main$8C = defineComponent({
name: 'ElColorHueSlider',
props: {
color: {
type: Object,
required: true,
},
vertical: Boolean,
},
setup(props2) {
const instance = getCurrentInstance()
const thumb = ref(null)
const bar = ref(null)
const thumbLeft = ref(0)
const thumbTop = ref(0)
const hueValue = computed(() => {
return props2.color.get('hue')
})
watch$1(
() => hueValue.value,
() => {
update3()
}
)
function handleClick2(event) {
const target2 = event.target
if (target2 !== thumb.value) {
handleDrag(event)
}
}
function handleDrag(event) {
const el2 = instance.vnode.el
const rect = el2.getBoundingClientRect()
const { clientX, clientY } = getClientXY(event)
let hue
if (!props2.vertical) {
let left2 = clientX - rect.left
left2 = Math.min(left2, rect.width - thumb.value.offsetWidth / 2)
left2 = Math.max(thumb.value.offsetWidth / 2, left2)
hue = Math.round(
((left2 - thumb.value.offsetWidth / 2) /
(rect.width - thumb.value.offsetWidth)) *
360
)
} else {
let top2 = clientY - rect.top
top2 = Math.min(top2, rect.height - thumb.value.offsetHeight / 2)
top2 = Math.max(thumb.value.offsetHeight / 2, top2)
hue = Math.round(
((top2 - thumb.value.offsetHeight / 2) /
(rect.height - thumb.value.offsetHeight)) *
360
)
}
props2.color.set('hue', hue)
}
function getThumbLeft() {
const el2 = instance.vnode.el
if (props2.vertical) return 0
const hue = props2.color.get('hue')
if (!el2) return 0
return Math.round(
(hue * (el2.offsetWidth - thumb.value.offsetWidth / 2)) / 360
)
}
function getThumbTop() {
const el2 = instance.vnode.el
if (!props2.vertical) return 0
const hue = props2.color.get('hue')
if (!el2) return 0
return Math.round(
(hue * (el2.offsetHeight - thumb.value.offsetHeight / 2)) / 360
)
}
function update3() {
thumbLeft.value = getThumbLeft()
thumbTop.value = getThumbTop()
}
onMounted(() => {
const dragConfig = {
drag: (event) => {
handleDrag(event)
},
end: (event) => {
handleDrag(event)
},
}
draggable$2(bar.value, dragConfig)
draggable$2(thumb.value, dragConfig)
update3()
})
return {
bar,
thumb,
thumbLeft,
thumbTop,
hueValue,
handleClick: handleClick2,
update: update3,
}
},
})
function _sfc_render$1n(_ctx, _cache, $props2, $setup, $data, $options) {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'el-color-hue-slider',
{ 'is-vertical': _ctx.vertical },
]),
},
[
createElementVNode(
'div',
{
ref: 'bar',
class: 'el-color-hue-slider__bar',
onClick:
_cache[0] ||
(_cache[0] = (...args) =>
_ctx.handleClick && _ctx.handleClick(...args)),
},
null,
512
),
createElementVNode(
'div',
{
ref: 'thumb',
class: 'el-color-hue-slider__thumb',
style: normalizeStyle$1({
left: _ctx.thumbLeft + 'px',
top: _ctx.thumbTop + 'px',
}),
},
null,
4
),
],
2
)
)
}
var HueSlider = /* @__PURE__ */ _export_sfc$1(_sfc_main$8C, [
['render', _sfc_render$1n],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/color-picker/src/components/hue-slider.vue',
],
])
const OPTIONS_KEY = Symbol()
const useOptions = () => {
return inject(OPTIONS_KEY)
}
const hsv2hsl = function (hue, sat, val2) {
return [
hue,
(sat * val2) / ((hue = (2 - sat) * val2) < 1 ? hue : 2 - hue) || 0,
hue / 2,
]
}
const isOnePointZero = function (n2) {
return (
typeof n2 === 'string' && n2.includes('.') && Number.parseFloat(n2) === 1
)
}
const isPercentage = function (n2) {
return typeof n2 === 'string' && n2.includes('%')
}
const bound01 = function (value2, max3) {
if (isOnePointZero(value2)) value2 = '100%'
const processPercent = isPercentage(value2)
value2 = Math.min(max3, Math.max(0, Number.parseFloat(`${value2}`)))
if (processPercent) {
value2 = Number.parseInt(`${value2 * max3}`, 10) / 100
}
if (Math.abs(value2 - max3) < 1e-6) {
return 1
}
return (value2 % max3) / Number.parseFloat(max3)
}
const INT_HEX_MAP = { 10: 'A', 11: 'B', 12: 'C', 13: 'D', 14: 'E', 15: 'F' }
const hexOne = function (value2) {
value2 = Math.min(Math.round(value2), 255)
const high = Math.floor(value2 / 16)
const low = value2 % 16
return `${INT_HEX_MAP[high] || high}${INT_HEX_MAP[low] || low}`
}
const toHex$1 = function ({ r: r2, g: g2, b: b2 }) {
if (Number.isNaN(+r2) || Number.isNaN(+g2) || Number.isNaN(+b2)) return ''
return `#${hexOne(r2)}${hexOne(g2)}${hexOne(b2)}`
}
const HEX_INT_MAP = { A: 10, B: 11, C: 12, D: 13, E: 14, F: 15 }
const parseHexChannel = function (hex2) {
if (hex2.length === 2) {
return (
(HEX_INT_MAP[hex2[0].toUpperCase()] || +hex2[0]) * 16 +
(HEX_INT_MAP[hex2[1].toUpperCase()] || +hex2[1])
)
}
return HEX_INT_MAP[hex2[1].toUpperCase()] || +hex2[1]
}
const hsl2hsv = function (hue, sat, light) {
sat = sat / 100
light = light / 100
let smin = sat
const lmin = Math.max(light, 0.01)
light *= 2
sat *= light <= 1 ? light : 2 - light
smin *= lmin <= 1 ? lmin : 2 - lmin
const v4 = (light + sat) / 2
const sv2 =
light === 0 ? (2 * smin) / (lmin + smin) : (2 * sat) / (light + sat)
return {
h: hue,
s: sv2 * 100,
v: v4 * 100,
}
}
const rgb2hsv = function (r2, g2, b2) {
r2 = bound01(r2, 255)
g2 = bound01(g2, 255)
b2 = bound01(b2, 255)
const max3 = Math.max(r2, g2, b2)
const min3 = Math.min(r2, g2, b2)
let h2
const v4 = max3
const d3 = max3 - min3
const s2 = max3 === 0 ? 0 : d3 / max3
if (max3 === min3) {
h2 = 0
} else {
switch (max3) {
case r2: {
h2 = (g2 - b2) / d3 + (g2 < b2 ? 6 : 0)
break
}
case g2: {
h2 = (b2 - r2) / d3 + 2
break
}
case b2: {
h2 = (r2 - g2) / d3 + 4
break
}
}
h2 /= 6
}
return { h: h2 * 360, s: s2 * 100, v: v4 * 100 }
}
const hsv2rgb = function (h2, s2, v4) {
h2 = bound01(h2, 360) * 6
s2 = bound01(s2, 100)
v4 = bound01(v4, 100)
const i2 = Math.floor(h2)
const f2 = h2 - i2
const p2 = v4 * (1 - s2)
const q2 = v4 * (1 - f2 * s2)
const t3 = v4 * (1 - (1 - f2) * s2)
const mod = i2 % 6
const r2 = [v4, q2, p2, p2, t3, v4][mod]
const g2 = [t3, v4, v4, q2, p2, p2][mod]
const b2 = [p2, p2, t3, v4, v4, q2][mod]
return {
r: Math.round(r2 * 255),
g: Math.round(g2 * 255),
b: Math.round(b2 * 255),
}
}
class Color {
constructor(options2) {
this._hue = 0
this._saturation = 100
this._value = 100
this._alpha = 100
this.enableAlpha = false
this.format = 'hex'
this.value = ''
options2 = options2 || {}
for (const option2 in options2) {
if (hasOwn$e(options2, option2)) {
this[option2] = options2[option2]
}
}
if (options2.value) {
this.fromString(options2.value)
} else {
this.doOnChange()
}
}
set(prop, value2) {
if (arguments.length === 1 && typeof prop === 'object') {
for (const p2 in prop) {
if (hasOwn$e(prop, p2)) {
this.set(p2, prop[p2])
}
}
return
}
this[`_${prop}`] = value2
this.doOnChange()
}
get(prop) {
if (prop === 'alpha') {
return Math.floor(this[`_${prop}`])
}
return this[`_${prop}`]
}
toRgb() {
return hsv2rgb(this._hue, this._saturation, this._value)
}
fromString(value2) {
if (!value2) {
this._hue = 0
this._saturation = 100
this._value = 100
this.doOnChange()
return
}
const fromHSV = (h2, s2, v4) => {
this._hue = Math.max(0, Math.min(360, h2))
this._saturation = Math.max(0, Math.min(100, s2))
this._value = Math.max(0, Math.min(100, v4))
this.doOnChange()
}
if (value2.includes('hsl')) {
const parts = value2
.replace(/hsla|hsl|\(|\)/gm, '')
.split(/\s|,/g)
.filter((val2) => val2 !== '')
.map((val2, index2) =>
index2 > 2 ? Number.parseFloat(val2) : Number.parseInt(val2, 10)
)
if (parts.length === 4) {
this._alpha = Number.parseFloat(parts[3]) * 100
} else if (parts.length === 3) {
this._alpha = 100
}
if (parts.length >= 3) {
const { h: h2, s: s2, v: v4 } = hsl2hsv(parts[0], parts[1], parts[2])
fromHSV(h2, s2, v4)
}
} else if (value2.includes('hsv')) {
const parts = value2
.replace(/hsva|hsv|\(|\)/gm, '')
.split(/\s|,/g)
.filter((val2) => val2 !== '')
.map((val2, index2) =>
index2 > 2 ? Number.parseFloat(val2) : Number.parseInt(val2, 10)
)
if (parts.length === 4) {
this._alpha = Number.parseFloat(parts[3]) * 100
} else if (parts.length === 3) {
this._alpha = 100
}
if (parts.length >= 3) {
fromHSV(parts[0], parts[1], parts[2])
}
} else if (value2.includes('rgb')) {
const parts = value2
.replace(/rgba|rgb|\(|\)/gm, '')
.split(/\s|,/g)
.filter((val2) => val2 !== '')
.map((val2, index2) =>
index2 > 2 ? Number.parseFloat(val2) : Number.parseInt(val2, 10)
)
if (parts.length === 4) {
this._alpha = Number.parseFloat(parts[3]) * 100
} else if (parts.length === 3) {
this._alpha = 100
}
if (parts.length >= 3) {
const { h: h2, s: s2, v: v4 } = rgb2hsv(parts[0], parts[1], parts[2])
fromHSV(h2, s2, v4)
}
} else if (value2.includes('#')) {
const hex2 = value2.replace('#', '').trim()
if (!/^[0-9a-fA-F]{3}$|^[0-9a-fA-F]{6}$|^[0-9a-fA-F]{8}$/.test(hex2))
return
let r2, g2, b2
if (hex2.length === 3) {
r2 = parseHexChannel(hex2[0] + hex2[0])
g2 = parseHexChannel(hex2[1] + hex2[1])
b2 = parseHexChannel(hex2[2] + hex2[2])
} else if (hex2.length === 6 || hex2.length === 8) {
r2 = parseHexChannel(hex2.slice(0, 2))
g2 = parseHexChannel(hex2.slice(2, 4))
b2 = parseHexChannel(hex2.slice(4, 6))
}
if (hex2.length === 8) {
this._alpha = (parseHexChannel(hex2.slice(6)) / 255) * 100
} else if (hex2.length === 3 || hex2.length === 6) {
this._alpha = 100
}
const { h: h2, s: s2, v: v4 } = rgb2hsv(r2, g2, b2)
fromHSV(h2, s2, v4)
}
}
compare(color2) {
return (
Math.abs(color2._hue - this._hue) < 2 &&
Math.abs(color2._saturation - this._saturation) < 1 &&
Math.abs(color2._value - this._value) < 1 &&
Math.abs(color2._alpha - this._alpha) < 1
)
}
doOnChange() {
const { _hue, _saturation, _value, _alpha, format: format2 } = this
if (this.enableAlpha) {
switch (format2) {
case 'hsl': {
const hsl2 = hsv2hsl(_hue, _saturation / 100, _value / 100)
this.value = `hsla(${_hue}, ${Math.round(
hsl2[1] * 100
)}%, ${Math.round(hsl2[2] * 100)}%, ${this.get('alpha') / 100})`
break
}
case 'hsv': {
this.value = `hsva(${_hue}, ${Math.round(_saturation)}%, ${Math.round(
_value
)}%, ${this.get('alpha') / 100})`
break
}
case 'hex': {
this.value = `${toHex$1(hsv2rgb(_hue, _saturation, _value))}${hexOne(
(_alpha * 255) / 100
)}`
break
}
default: {
const { r: r2, g: g2, b: b2 } = hsv2rgb(_hue, _saturation, _value)
this.value = `rgba(${r2}, ${g2}, ${b2}, ${this.get('alpha') / 100})`
}
}
} else {
switch (format2) {
case 'hsl': {
const hsl2 = hsv2hsl(_hue, _saturation / 100, _value / 100)
this.value = `hsl(${_hue}, ${Math.round(
hsl2[1] * 100
)}%, ${Math.round(hsl2[2] * 100)}%)`
break
}
case 'hsv': {
this.value = `hsv(${_hue}, ${Math.round(_saturation)}%, ${Math.round(
_value
)}%)`
break
}
case 'rgb': {
const { r: r2, g: g2, b: b2 } = hsv2rgb(_hue, _saturation, _value)
this.value = `rgb(${r2}, ${g2}, ${b2})`
break
}
default: {
this.value = toHex$1(hsv2rgb(_hue, _saturation, _value))
}
}
}
}
}
const _sfc_main$8B = defineComponent({
props: {
colors: { type: Array, required: true },
color: {
type: Object,
required: true,
},
},
setup(props2) {
const { currentColor } = useOptions()
const rgbaColors = ref(parseColors(props2.colors, props2.color))
watch$1(
() => currentColor.value,
(val2) => {
const color2 = new Color()
color2.fromString(val2)
rgbaColors.value.forEach((item2) => {
item2.selected = color2.compare(item2)
})
}
)
watchEffect(() => {
rgbaColors.value = parseColors(props2.colors, props2.color)
})
function handleSelect(index2) {
props2.color.fromString(props2.colors[index2])
}
function parseColors(colors, color2) {
return colors.map((value2) => {
const c2 = new Color()
c2.enableAlpha = true
c2.format = 'rgba'
c2.fromString(value2)
c2.selected = c2.value === color2.value
return c2
})
}
return {
rgbaColors,
handleSelect,
}
},
})
const _hoisted_1$6I = { class: 'el-color-predefine' }
const _hoisted_2$5n = { class: 'el-color-predefine__colors' }
const _hoisted_3$4L = ['onClick']
function _sfc_render$1m(_ctx, _cache, $props2, $setup, $data, $options) {
return (
openBlock(),
createElementBlock('div', _hoisted_1$6I, [
createElementVNode('div', _hoisted_2$5n, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.rgbaColors, (item2, index2) => {
return (
openBlock(),
createElementBlock(
'div',
{
key: _ctx.colors[index2],
class: normalizeClass([
'el-color-predefine__color-selector',
{
selected: item2.selected,
'is-alpha': item2._alpha < 100,
},
]),
onClick: ($event) => _ctx.handleSelect(index2),
},
[
createElementVNode(
'div',
{
style: normalizeStyle$1({ backgroundColor: item2.value }),
},
null,
4
),
],
10,
_hoisted_3$4L
)
)
}),
128
)),
]),
])
)
}
var Predefine = /* @__PURE__ */ _export_sfc$1(_sfc_main$8B, [
['render', _sfc_render$1m],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/color-picker/src/components/predefine.vue',
],
])
const _sfc_main$8A = defineComponent({
name: 'ElSlPanel',
props: {
color: {
type: Object,
required: true,
},
},
setup(props2) {
const instance = getCurrentInstance()
const cursorTop = ref(0)
const cursorLeft = ref(0)
const background = ref('hsl(0, 100%, 50%)')
const colorValue = computed(() => {
const hue = props2.color.get('hue')
const value2 = props2.color.get('value')
return { hue, value: value2 }
})
function update3() {
const saturation = props2.color.get('saturation')
const value2 = props2.color.get('value')
const el2 = instance.vnode.el
const { clientWidth: width, clientHeight: height } = el2
cursorLeft.value = (saturation * width) / 100
cursorTop.value = ((100 - value2) * height) / 100
background.value = `hsl(${props2.color.get('hue')}, 100%, 50%)`
}
function handleDrag(event) {
const el2 = instance.vnode.el
const rect = el2.getBoundingClientRect()
const { clientX, clientY } = getClientXY(event)
let left2 = clientX - rect.left
let top2 = clientY - rect.top
left2 = Math.max(0, left2)
left2 = Math.min(left2, rect.width)
top2 = Math.max(0, top2)
top2 = Math.min(top2, rect.height)
cursorLeft.value = left2
cursorTop.value = top2
props2.color.set({
saturation: (left2 / rect.width) * 100,
value: 100 - (top2 / rect.height) * 100,
})
}
watch$1(
() => colorValue.value,
() => {
update3()
}
)
onMounted(() => {
draggable$2(instance.vnode.el, {
drag: (event) => {
handleDrag(event)
},
end: (event) => {
handleDrag(event)
},
})
update3()
})
return {
cursorTop,
cursorLeft,
background,
colorValue,
handleDrag,
update: update3,
}
},
})
const _hoisted_1$6H = /* @__PURE__ */ createElementVNode(
'div',
{ class: 'el-color-svpanel__white' },
null,
-1
)
const _hoisted_2$5m = /* @__PURE__ */ createElementVNode(
'div',
{ class: 'el-color-svpanel__black' },
null,
-1
)
const _hoisted_3$4K = /* @__PURE__ */ createElementVNode('div', null, null, -1)
const _hoisted_4$46 = [_hoisted_3$4K]
function _sfc_render$1l(_ctx, _cache, $props2, $setup, $data, $options) {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'el-color-svpanel',
style: normalizeStyle$1({
backgroundColor: _ctx.background,
}),
},
[
_hoisted_1$6H,
_hoisted_2$5m,
createElementVNode(
'div',
{
class: 'el-color-svpanel__cursor',
style: normalizeStyle$1({
top: _ctx.cursorTop + 'px',
left: _ctx.cursorLeft + 'px',
}),
},
_hoisted_4$46,
4
),
],
4
)
)
}
var SvPanel = /* @__PURE__ */ _export_sfc$1(_sfc_main$8A, [
['render', _sfc_render$1l],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/color-picker/src/components/sv-panel.vue',
],
])
const _sfc_main$8z = defineComponent({
name: 'ElColorPicker',
components: {
ElButton,
ElTooltip,
ElInput,
ElIcon,
Close: close$2,
ArrowDown: arrowDown,
SvPanel,
HueSlider,
AlphaSlider,
Predefine,
},
directives: {
ClickOutside,
},
props: {
modelValue: String,
showAlpha: Boolean,
colorFormat: String,
disabled: Boolean,
size: {
type: String,
validator: isValidComponentSize,
},
popperClass: String,
predefine: Array,
},
emits: ['change', 'active-change', UPDATE_MODEL_EVENT],
setup(props2, { emit: emit2 }) {
const { t: t3 } = useLocale()
const ns = useNamespace('color')
const elForm = inject(formContextKey, {})
const elFormItem = inject(formItemContextKey, {})
const hue = ref(null)
const svPanel = ref(null)
const alpha = ref(null)
const popper2 = ref(null)
const color2 = reactive(
new Color({
enableAlpha: props2.showAlpha,
format: props2.colorFormat,
value: props2.modelValue,
})
)
const showPicker = ref(false)
const showPanelColor = ref(false)
const customInput = ref('')
const displayedColor = computed(() => {
if (!props2.modelValue && !showPanelColor.value) {
return 'transparent'
}
return displayedRgb(color2, props2.showAlpha)
})
const colorSize = useSize$1()
const colorDisabled = computed(() => {
return !!(props2.disabled || elForm.disabled)
})
const currentColor = computed(() => {
return !props2.modelValue && !showPanelColor.value ? '' : color2.value
})
watch$1(
() => props2.modelValue,
(newVal) => {
if (!newVal) {
showPanelColor.value = false
} else if (newVal && newVal !== color2.value) {
color2.fromString(newVal)
}
}
)
watch$1(
() => currentColor.value,
(val2) => {
customInput.value = val2
emit2('active-change', val2)
}
)
watch$1(
() => color2.value,
() => {
if (!props2.modelValue && !showPanelColor.value) {
showPanelColor.value = true
}
}
)
function displayedRgb(color22, showAlpha) {
if (!(color22 instanceof Color)) {
throw new TypeError('color should be instance of _color Class')
}
const { r: r2, g: g2, b: b2 } = color22.toRgb()
return showAlpha
? `rgba(${r2}, ${g2}, ${b2}, ${color22.get('alpha') / 100})`
: `rgb(${r2}, ${g2}, ${b2})`
}
function setShowPicker(value2) {
showPicker.value = value2
}
const debounceSetShowPicker = debounce$3(setShowPicker, 100)
function hide2() {
debounceSetShowPicker(false)
resetColor()
}
function resetColor() {
nextTick(() => {
if (props2.modelValue) {
color2.fromString(props2.modelValue)
} else {
showPanelColor.value = false
}
})
}
function handleTrigger() {
if (colorDisabled.value) return
debounceSetShowPicker(!showPicker.value)
}
function handleConfirm() {
color2.fromString(customInput.value)
}
function confirmValue() {
var _a2
const value2 = color2.value
emit2(UPDATE_MODEL_EVENT, value2)
emit2('change', value2)
;(_a2 = elFormItem.validate) == null
? void 0
: _a2.call(elFormItem, 'change').catch((err) => debugWarn())
debounceSetShowPicker(false)
nextTick(() => {
const newColor = new Color({
enableAlpha: props2.showAlpha,
format: props2.colorFormat,
value: props2.modelValue,
})
if (!color2.compare(newColor)) {
resetColor()
}
})
}
function clear2() {
var _a2
debounceSetShowPicker(false)
emit2(UPDATE_MODEL_EVENT, null)
emit2('change', null)
if (props2.modelValue !== null) {
;(_a2 = elFormItem.validate) == null
? void 0
: _a2.call(elFormItem, 'change').catch((err) => debugWarn())
}
resetColor()
}
onMounted(() => {
if (props2.modelValue) {
customInput.value = currentColor.value
}
})
watch$1(
() => showPicker.value,
() => {
nextTick(() => {
var _a2, _b2, _c2
;(_a2 = hue.value) == null ? void 0 : _a2.update()
;(_b2 = svPanel.value) == null ? void 0 : _b2.update()
;(_c2 = alpha.value) == null ? void 0 : _c2.update()
})
}
)
provide(OPTIONS_KEY, {
currentColor,
})
return {
color: color2,
colorDisabled,
colorSize,
displayedColor,
showPanelColor,
showPicker,
customInput,
handleConfirm,
hide: hide2,
handleTrigger,
clear: clear2,
confirmValue,
t: t3,
ns,
hue,
svPanel,
alpha,
popper: popper2,
}
},
})
function _sfc_render$1k(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_hue_slider = resolveComponent('hue-slider')
const _component_sv_panel = resolveComponent('sv-panel')
const _component_alpha_slider = resolveComponent('alpha-slider')
const _component_predefine = resolveComponent('predefine')
const _component_el_input = resolveComponent('el-input')
const _component_el_button = resolveComponent('el-button')
const _component_arrow_down = resolveComponent('arrow-down')
const _component_el_icon = resolveComponent('el-icon')
const _component_close = resolveComponent('close')
const _component_el_tooltip = resolveComponent('el-tooltip')
const _directive_click_outside = resolveDirective('click-outside')
return (
openBlock(),
createBlock(
_component_el_tooltip,
{
ref: 'popper',
visible: _ctx.showPicker,
'onUpdate:visible':
_cache[2] || (_cache[2] = ($event) => (_ctx.showPicker = $event)),
'show-arrow': false,
'fallback-placements': ['bottom', 'top', 'right', 'left'],
offset: 0,
'gpu-acceleration': false,
'popper-class': [
_ctx.ns.be('picker', 'panel'),
_ctx.ns.b('dropdown'),
_ctx.popperClass,
],
'stop-popper-mouse-event': false,
effect: 'light',
trigger: 'click',
transition: 'el-zoom-in-top',
persistent: '',
},
{
content: withCtx(() => [
withDirectives(
(openBlock(),
createElementBlock('div', null, [
createElementVNode(
'div',
{
class: normalizeClass(_ctx.ns.be('dropdown', 'main-wrapper')),
},
[
createVNode$1(
_component_hue_slider,
{
ref: 'hue',
class: 'hue-slider',
color: _ctx.color,
vertical: '',
},
null,
8,
['color']
),
createVNode$1(
_component_sv_panel,
{
ref: 'svPanel',
color: _ctx.color,
},
null,
8,
['color']
),
],
2
),
_ctx.showAlpha
? (openBlock(),
createBlock(
_component_alpha_slider,
{
key: 0,
ref: 'alpha',
color: _ctx.color,
},
null,
8,
['color']
))
: createCommentVNode('v-if', true),
_ctx.predefine
? (openBlock(),
createBlock(
_component_predefine,
{
key: 1,
ref: 'predefine',
color: _ctx.color,
colors: _ctx.predefine,
},
null,
8,
['color', 'colors']
))
: createCommentVNode('v-if', true),
createElementVNode(
'div',
{
class: normalizeClass(_ctx.ns.be('dropdown', 'btns')),
},
[
createElementVNode(
'span',
{
class: normalizeClass(_ctx.ns.be('dropdown', 'value')),
},
[
createVNode$1(
_component_el_input,
{
modelValue: _ctx.customInput,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(_ctx.customInput = $event)),
'validate-event': false,
size: 'small',
onKeyup: withKeys(_ctx.handleConfirm, ['enter']),
onBlur: _ctx.handleConfirm,
},
null,
8,
['modelValue', 'onKeyup', 'onBlur']
),
],
2
),
createVNode$1(
_component_el_button,
{
size: 'small',
type: 'text',
class: normalizeClass(_ctx.ns.be('dropdown', 'link-btn')),
onClick: _ctx.clear,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx.t('el.colorpicker.clear')),
1
),
]),
_: 1,
},
8,
['class', 'onClick']
),
createVNode$1(
_component_el_button,
{
plain: '',
size: 'small',
class: normalizeClass(_ctx.ns.be('dropdown', 'btn')),
onClick: _ctx.confirmValue,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx.t('el.colorpicker.confirm')),
1
),
]),
_: 1,
},
8,
['class', 'onClick']
),
],
2
),
])),
[[_directive_click_outside, _ctx.hide]]
),
]),
default: withCtx(() => [
createElementVNode(
'div',
{
class: normalizeClass([
_ctx.ns.b('picker'),
_ctx.ns.is('disabled', _ctx.colorDisabled),
_ctx.ns.bm('picker', _ctx.colorSize),
]),
},
[
_ctx.colorDisabled
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass(_ctx.ns.be('picker', 'mask')),
},
null,
2
))
: createCommentVNode('v-if', true),
createElementVNode(
'div',
{
class: normalizeClass(_ctx.ns.be('picker', 'trigger')),
onClick:
_cache[1] ||
(_cache[1] = (...args) =>
_ctx.handleTrigger && _ctx.handleTrigger(...args)),
},
[
createElementVNode(
'span',
{
class: normalizeClass([
_ctx.ns.be('picker', 'color'),
_ctx.ns.is('alpha', _ctx.showAlpha),
]),
},
[
createElementVNode(
'span',
{
class: normalizeClass(
_ctx.ns.be('picker', 'color-inner')
),
style: normalizeStyle$1({
backgroundColor: _ctx.displayedColor,
}),
},
[
withDirectives(
createVNode$1(
_component_el_icon,
{
class: normalizeClass([
_ctx.ns.be('picker', 'icon'),
_ctx.ns.is('icon-arrow-down'),
]),
},
{
default: withCtx(() => [
createVNode$1(_component_arrow_down),
]),
_: 1,
},
8,
['class']
),
[[vShow, _ctx.modelValue || _ctx.showPanelColor]]
),
!_ctx.modelValue && !_ctx.showPanelColor
? (openBlock(),
createBlock(
_component_el_icon,
{
key: 0,
class: normalizeClass([
_ctx.ns.be('picker', 'empty'),
_ctx.ns.is('icon-close'),
]),
},
{
default: withCtx(() => [
createVNode$1(_component_close),
]),
_: 1,
},
8,
['class']
))
: createCommentVNode('v-if', true),
],
6
),
],
2
),
],
2
),
],
2
),
]),
_: 1,
},
8,
['visible', 'popper-class']
)
)
}
var ColorPicker = /* @__PURE__ */ _export_sfc$1(_sfc_main$8z, [
['render', _sfc_render$1k],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/color-picker/src/index.vue',
],
])
ColorPicker.install = (app2) => {
app2.component(ColorPicker.name, ColorPicker)
}
const _ColorPicker = ColorPicker
const ElColorPicker = _ColorPicker
const messageConfig = {}
const configProviderProps = buildProps({
a11y: {
type: Boolean,
default: true,
},
locale: {
type: definePropType(Object),
},
size: {
type: String,
values: componentSizes,
default: '',
},
button: {
type: definePropType(Object),
},
experimentalFeatures: {
type: definePropType(Object),
},
keyboardNavigation: {
type: Boolean,
default: true,
},
message: {
type: definePropType(Object),
},
zIndex: {
type: Number,
},
namespace: {
type: String,
default: 'el',
},
})
var ConfigProvider = defineComponent({
name: 'ElConfigProvider',
props: configProviderProps,
setup(props2, { slots }) {
watch$1(
() => props2.message,
(val2) => {
Object.assign(messageConfig, val2 != null ? val2 : {})
},
{ immediate: true, deep: true }
)
const config2 = provideGlobalConfig(props2)
return () =>
renderSlot(slots, 'default', {
config: config2 == null ? void 0 : config2.value,
})
},
})
const ElConfigProvider = withInstall(ConfigProvider)
const _sfc_main$8y = defineComponent({
name: 'ElContainer',
props: {
direction: {
type: String,
default: '',
},
},
setup(props2, { slots }) {
const ns = useNamespace('container')
const isVertical = computed(() => {
if (props2.direction === 'vertical') {
return true
} else if (props2.direction === 'horizontal') {
return false
}
if (slots && slots.default) {
const vNodes = slots.default()
return vNodes.some((vNode) => {
const tag = vNode.type.name
return tag === 'ElHeader' || tag === 'ElFooter'
})
} else {
return false
}
})
return {
isVertical,
ns,
}
},
})
function _sfc_render$1j(_ctx, _cache, $props2, $setup, $data, $options) {
return (
openBlock(),
createElementBlock(
'section',
{
class: normalizeClass([
_ctx.ns.b(),
_ctx.ns.is('vertical', _ctx.isVertical),
]),
},
[renderSlot(_ctx.$slots, 'default')],
2
)
)
}
var Container = /* @__PURE__ */ _export_sfc$1(_sfc_main$8y, [
['render', _sfc_render$1j],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/container/src/container.vue',
],
])
const _sfc_main$8x = defineComponent({
name: 'ElAside',
props: {
width: {
type: String,
default: null,
},
},
setup(props2) {
const ns = useNamespace('aside')
return {
style: computed(() => {
return props2.width ? { '--el-aside-width': props2.width } : {}
}),
ns,
}
},
})
function _sfc_render$1i(_ctx, _cache, $props2, $setup, $data, $options) {
return (
openBlock(),
createElementBlock(
'aside',
{
class: normalizeClass(_ctx.ns.b()),
style: normalizeStyle$1(_ctx.style),
},
[renderSlot(_ctx.$slots, 'default')],
6
)
)
}
var Aside = /* @__PURE__ */ _export_sfc$1(_sfc_main$8x, [
['render', _sfc_render$1i],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/container/src/aside.vue',
],
])
const _sfc_main$8w = defineComponent({
name: 'ElFooter',
props: {
height: {
type: String,
default: null,
},
},
setup(props2) {
const ns = useNamespace('footer')
return {
style: computed(() =>
props2.height
? {
'--el-footer-height': props2.height,
}
: {}
),
ns,
}
},
})
function _sfc_render$1h(_ctx, _cache, $props2, $setup, $data, $options) {
return (
openBlock(),
createElementBlock(
'footer',
{
class: normalizeClass(_ctx.ns.b()),
style: normalizeStyle$1(_ctx.style),
},
[renderSlot(_ctx.$slots, 'default')],
6
)
)
}
var Footer$3 = /* @__PURE__ */ _export_sfc$1(_sfc_main$8w, [
['render', _sfc_render$1h],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/container/src/footer.vue',
],
])
const _sfc_main$8v = defineComponent({
name: 'ElHeader',
props: {
height: {
type: String,
default: null,
},
},
setup(props2) {
const ns = useNamespace('header')
return {
style: computed(() =>
props2.height
? {
'--el-header-height': props2.height,
}
: {}
),
ns,
}
},
})
function _sfc_render$1g(_ctx, _cache, $props2, $setup, $data, $options) {
return (
openBlock(),
createElementBlock(
'header',
{
class: normalizeClass(_ctx.ns.b()),
style: normalizeStyle$1(_ctx.style),
},
[renderSlot(_ctx.$slots, 'default')],
6
)
)
}
var Header$7 = /* @__PURE__ */ _export_sfc$1(_sfc_main$8v, [
['render', _sfc_render$1g],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/container/src/header.vue',
],
])
const _sfc_main$8u = defineComponent({
name: 'ElMain',
setup() {
const ns = useNamespace('main')
return {
ns,
}
},
})
function _sfc_render$1f(_ctx, _cache, $props2, $setup, $data, $options) {
return (
openBlock(),
createElementBlock(
'main',
{
class: normalizeClass(_ctx.ns.b()),
},
[renderSlot(_ctx.$slots, 'default')],
2
)
)
}
var Main = /* @__PURE__ */ _export_sfc$1(_sfc_main$8u, [
['render', _sfc_render$1f],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/container/src/main.vue',
],
])
const ElContainer = withInstall(Container, {
Aside,
Footer: Footer$3,
Header: Header$7,
Main,
})
const ElAside = withNoopInstall(Aside)
const ElFooter = withNoopInstall(Footer$3)
const ElHeader = withNoopInstall(Header$7)
const ElMain = withNoopInstall(Main)
var advancedFormat$1 = { exports: {} }
;(function (module2, exports2) {
!(function (e2, t3) {
module2.exports = t3()
})(commonjsGlobal, function () {
return function (e2, t3) {
var r2 = t3.prototype,
n2 = r2.format
r2.format = function (e3) {
var t4 = this,
r3 = this.$locale()
if (!this.isValid()) return n2.bind(this)(e3)
var s2 = this.$utils(),
a2 = (e3 || 'YYYY-MM-DDTHH:mm:ssZ').replace(
/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,
function (e4) {
switch (e4) {
case 'Q':
return Math.ceil((t4.$M + 1) / 3)
case 'Do':
return r3.ordinal(t4.$D)
case 'gggg':
return t4.weekYear()
case 'GGGG':
return t4.isoWeekYear()
case 'wo':
return r3.ordinal(t4.week(), 'W')
case 'w':
case 'ww':
return s2.s(t4.week(), 'w' === e4 ? 1 : 2, '0')
case 'W':
case 'WW':
return s2.s(t4.isoWeek(), 'W' === e4 ? 1 : 2, '0')
case 'k':
case 'kk':
return s2.s(
String(0 === t4.$H ? 24 : t4.$H),
'k' === e4 ? 1 : 2,
'0'
)
case 'X':
return Math.floor(t4.$d.getTime() / 1e3)
case 'x':
return t4.$d.getTime()
case 'z':
return '[' + t4.offsetName() + ']'
case 'zzz':
return '[' + t4.offsetName('long') + ']'
default:
return e4
}
}
)
return n2.bind(this)(a2)
}
}
})
})(advancedFormat$1)
var advancedFormat = advancedFormat$1.exports
var weekOfYear$1 = { exports: {} }
;(function (module2, exports2) {
!(function (e2, t3) {
module2.exports = t3()
})(commonjsGlobal, function () {
var e2 = 'week',
t3 = 'year'
return function (i2, n2, r2) {
var f2 = n2.prototype
;(f2.week = function (i3) {
if ((void 0 === i3 && (i3 = null), null !== i3))
return this.add(7 * (i3 - this.week()), 'day')
var n3 = this.$locale().yearStart || 1
if (11 === this.month() && this.date() > 25) {
var f3 = r2(this).startOf(t3).add(1, t3).date(n3),
s2 = r2(this).endOf(e2)
if (f3.isBefore(s2)) return 1
}
var a2 = r2(this)
.startOf(t3)
.date(n3)
.startOf(e2)
.subtract(1, 'millisecond'),
o2 = this.diff(a2, e2, true)
return o2 < 0 ? r2(this).startOf('week').week() : Math.ceil(o2)
}),
(f2.weeks = function (e3) {
return void 0 === e3 && (e3 = null), this.week(e3)
})
}
})
})(weekOfYear$1)
var weekOfYear = weekOfYear$1.exports
var weekYear$1 = { exports: {} }
;(function (module2, exports2) {
!(function (e2, t3) {
module2.exports = t3()
})(commonjsGlobal, function () {
return function (e2, t3) {
t3.prototype.weekYear = function () {
var e3 = this.month(),
t4 = this.week(),
n2 = this.year()
return 1 === t4 && 11 === e3
? n2 + 1
: 0 === e3 && t4 >= 52
? n2 - 1
: n2
}
}
})
})(weekYear$1)
var weekYear = weekYear$1.exports
var dayOfYear$1 = { exports: {} }
;(function (module2, exports2) {
!(function (e2, t3) {
module2.exports = t3()
})(commonjsGlobal, function () {
return function (e2, t3, n2) {
t3.prototype.dayOfYear = function (e3) {
var t4 =
Math.round(
(n2(this).startOf('day') - n2(this).startOf('year')) / 864e5
) + 1
return null == e3 ? t4 : this.add(e3 - t4, 'day')
}
}
})
})(dayOfYear$1)
var dayOfYear = dayOfYear$1.exports
var isSameOrAfter$1 = { exports: {} }
;(function (module2, exports2) {
!(function (e2, t3) {
module2.exports = t3()
})(commonjsGlobal, function () {
return function (e2, t3) {
t3.prototype.isSameOrAfter = function (e3, t4) {
return this.isSame(e3, t4) || this.isAfter(e3, t4)
}
}
})
})(isSameOrAfter$1)
var isSameOrAfter = isSameOrAfter$1.exports
var isSameOrBefore$1 = { exports: {} }
;(function (module2, exports2) {
!(function (e2, i2) {
module2.exports = i2()
})(commonjsGlobal, function () {
return function (e2, i2) {
i2.prototype.isSameOrBefore = function (e3, i3) {
return this.isSame(e3, i3) || this.isBefore(e3, i3)
}
}
})
})(isSameOrBefore$1)
var isSameOrBefore = isSameOrBefore$1.exports
const ROOT_PICKER_INJECTION_KEY = Symbol()
var ElDatePickerCell = defineComponent({
name: 'ElDatePickerCell',
props: buildProps({
cell: {
type: definePropType(Object),
},
}),
setup(props2) {
const picker = inject(ROOT_PICKER_INJECTION_KEY)
return () => {
const cell = props2.cell
if (picker == null ? void 0 : picker.ctx.slots.default) {
const list2 = picker.ctx.slots.default(cell).filter((item2) => {
return (
item2.patchFlag !== -2 &&
item2.type.toString() !== 'Symbol(Comment)'
)
})
if (list2.length) {
return list2
}
}
return h$4(
'div',
{
class: 'el-date-table-cell',
},
[
h$4(
'span',
{
class: 'el-date-table-cell__text',
},
[cell == null ? void 0 : cell.text]
),
]
)
}
},
})
const _sfc_main$8t = defineComponent({
components: {
ElDatePickerCell,
},
props: {
date: {
type: Object,
},
minDate: {
type: Object,
},
maxDate: {
type: Object,
},
parsedValue: {
type: [Object, Array],
},
selectionMode: {
type: String,
default: 'day',
},
showWeekNumber: {
type: Boolean,
default: false,
},
disabledDate: {
type: Function,
},
cellClassName: {
type: Function,
},
rangeState: {
type: Object,
default: () => ({
endDate: null,
selecting: false,
}),
},
},
emits: ['changerange', 'pick', 'select'],
setup(props2, ctx) {
const { t: t3, lang } = useLocale()
const lastRow = ref(null)
const lastColumn = ref(null)
const tableRows = ref([[], [], [], [], [], []])
const firstDayOfWeek = props2.date.$locale().weekStart || 7
const WEEKS_CONSTANT = props2.date
.locale('en')
.localeData()
.weekdaysShort()
.map((_2) => _2.toLowerCase())
const offsetDay = computed(() => {
return firstDayOfWeek > 3 ? 7 - firstDayOfWeek : -firstDayOfWeek
})
const startDate = computed(() => {
const startDayOfMonth = props2.date.startOf('month')
return startDayOfMonth.subtract(startDayOfMonth.day() || 7, 'day')
})
const WEEKS = computed(() => {
return WEEKS_CONSTANT.concat(WEEKS_CONSTANT).slice(
firstDayOfWeek,
firstDayOfWeek + 7
)
})
const rows = computed(() => {
var _a2
const startOfMonth = props2.date.startOf('month')
const startOfMonthDay = startOfMonth.day() || 7
const dateCountOfMonth = startOfMonth.daysInMonth()
const dateCountOfLastMonth = startOfMonth
.subtract(1, 'month')
.daysInMonth()
const offset2 = offsetDay.value
const rows_ = tableRows.value
let count2 = 1
const selectedDate =
props2.selectionMode === 'dates' ? castArray(props2.parsedValue) : []
const calNow = dayjs().locale(lang.value).startOf('day')
for (let i2 = 0; i2 < 6; i2++) {
const row = rows_[i2]
if (props2.showWeekNumber) {
if (!row[0]) {
row[0] = {
type: 'week',
text: startDate.value.add(i2 * 7 + 1, 'day').week(),
}
}
}
for (let j2 = 0; j2 < 7; j2++) {
let cell = row[props2.showWeekNumber ? j2 + 1 : j2]
if (!cell) {
cell = {
row: i2,
column: j2,
type: 'normal',
inRange: false,
start: false,
end: false,
}
}
const index2 = i2 * 7 + j2
const calTime = startDate.value.add(index2 - offset2, 'day')
cell.dayjs = calTime
cell.date = calTime.toDate()
cell.timestamp = calTime.valueOf()
cell.type = 'normal'
const calEndDate =
props2.rangeState.endDate ||
props2.maxDate ||
(props2.rangeState.selecting && props2.minDate)
cell.inRange =
(props2.minDate &&
calTime.isSameOrAfter(props2.minDate, 'day') &&
calEndDate &&
calTime.isSameOrBefore(calEndDate, 'day')) ||
(props2.minDate &&
calTime.isSameOrBefore(props2.minDate, 'day') &&
calEndDate &&
calTime.isSameOrAfter(calEndDate, 'day'))
if (
(_a2 = props2.minDate) == null
? void 0
: _a2.isSameOrAfter(calEndDate)
) {
cell.start = calEndDate && calTime.isSame(calEndDate, 'day')
cell.end = props2.minDate && calTime.isSame(props2.minDate, 'day')
} else {
cell.start = props2.minDate && calTime.isSame(props2.minDate, 'day')
cell.end = calEndDate && calTime.isSame(calEndDate, 'day')
}
const isToday = calTime.isSame(calNow, 'day')
if (isToday) {
cell.type = 'today'
}
if (i2 >= 0 && i2 <= 1) {
const numberOfDaysFromPreviousMonth =
startOfMonthDay + offset2 < 0
? 7 + startOfMonthDay + offset2
: startOfMonthDay + offset2
if (j2 + i2 * 7 >= numberOfDaysFromPreviousMonth) {
cell.text = count2++
} else {
cell.text =
dateCountOfLastMonth -
(numberOfDaysFromPreviousMonth - (j2 % 7)) +
1 +
i2 * 7
cell.type = 'prev-month'
}
} else {
if (count2 <= dateCountOfMonth) {
cell.text = count2++
} else {
cell.text = count2++ - dateCountOfMonth
cell.type = 'next-month'
}
}
const cellDate = calTime.toDate()
cell.selected = selectedDate.find(
(_2) => _2.valueOf() === calTime.valueOf()
)
cell.isSelected = !!cell.selected
cell.isCurrent = isCurrent(cell)
cell.disabled = props2.disabledDate && props2.disabledDate(cellDate)
cell.customClass =
props2.cellClassName && props2.cellClassName(cellDate)
row[props2.showWeekNumber ? j2 + 1 : j2] = cell
}
if (props2.selectionMode === 'week') {
const start2 = props2.showWeekNumber ? 1 : 0
const end2 = props2.showWeekNumber ? 7 : 6
const isActive = isWeekActive(row[start2 + 1])
row[start2].inRange = isActive
row[start2].start = isActive
row[end2].inRange = isActive
row[end2].end = isActive
}
}
return rows_
})
const isCurrent = (cell) => {
return (
props2.selectionMode === 'day' &&
(cell.type === 'normal' || cell.type === 'today') &&
cellMatchesDate(cell, props2.parsedValue)
)
}
const cellMatchesDate = (cell, date4) => {
if (!date4) return false
return dayjs(date4)
.locale(lang.value)
.isSame(props2.date.date(Number(cell.text)), 'day')
}
const getCellClasses = (cell) => {
const classes = []
if ((cell.type === 'normal' || cell.type === 'today') && !cell.disabled) {
classes.push('available')
if (cell.type === 'today') {
classes.push('today')
}
} else {
classes.push(cell.type)
}
if (isCurrent(cell)) {
classes.push('current')
}
if (
cell.inRange &&
(cell.type === 'normal' ||
cell.type === 'today' ||
props2.selectionMode === 'week')
) {
classes.push('in-range')
if (cell.start) {
classes.push('start-date')
}
if (cell.end) {
classes.push('end-date')
}
}
if (cell.disabled) {
classes.push('disabled')
}
if (cell.selected) {
classes.push('selected')
}
if (cell.customClass) {
classes.push(cell.customClass)
}
return classes.join(' ')
}
const getDateOfCell = (row, column) => {
const offsetFromStart =
row * 7 + (column - (props2.showWeekNumber ? 1 : 0)) - offsetDay.value
return startDate.value.add(offsetFromStart, 'day')
}
const handleMouseMove = (event) => {
if (!props2.rangeState.selecting) return
let target2 = event.target
if (target2.tagName === 'SPAN') {
target2 = target2.parentNode.parentNode
}
if (target2.tagName === 'DIV') {
target2 = target2.parentNode
}
if (target2.tagName !== 'TD') return
const row = target2.parentNode.rowIndex - 1
const column = target2.cellIndex
if (rows.value[row][column].disabled) return
if (row !== lastRow.value || column !== lastColumn.value) {
lastRow.value = row
lastColumn.value = column
ctx.emit('changerange', {
selecting: true,
endDate: getDateOfCell(row, column),
})
}
}
const handleClick2 = (event) => {
let target2 = event.target
while (target2) {
if (target2.tagName === 'TD') {
break
}
target2 = target2.parentNode
}
if (!target2 || target2.tagName !== 'TD') return
const row = target2.parentNode.rowIndex - 1
const column = target2.cellIndex
const cell = rows.value[row][column]
if (cell.disabled || cell.type === 'week') return
const newDate = getDateOfCell(row, column)
if (props2.selectionMode === 'range') {
if (!props2.rangeState.selecting) {
ctx.emit('pick', { minDate: newDate, maxDate: null })
ctx.emit('select', true)
} else {
if (newDate >= props2.minDate) {
ctx.emit('pick', { minDate: props2.minDate, maxDate: newDate })
} else {
ctx.emit('pick', { minDate: newDate, maxDate: props2.minDate })
}
ctx.emit('select', false)
}
} else if (props2.selectionMode === 'day') {
ctx.emit('pick', newDate)
} else if (props2.selectionMode === 'week') {
const weekNumber = newDate.week()
const value2 = `${newDate.year()}w${weekNumber}`
ctx.emit('pick', {
year: newDate.year(),
week: weekNumber,
value: value2,
date: newDate.startOf('week'),
})
} else if (props2.selectionMode === 'dates') {
const newValue = cell.selected
? castArray(props2.parsedValue).filter(
(_2) => _2.valueOf() !== newDate.valueOf()
)
: castArray(props2.parsedValue).concat([newDate])
ctx.emit('pick', newValue)
}
}
const isWeekActive = (cell) => {
if (props2.selectionMode !== 'week') return false
let newDate = props2.date.startOf('day')
if (cell.type === 'prev-month') {
newDate = newDate.subtract(1, 'month')
}
if (cell.type === 'next-month') {
newDate = newDate.add(1, 'month')
}
newDate = newDate.date(Number.parseInt(cell.text, 10))
if (props2.parsedValue && !Array.isArray(props2.parsedValue)) {
const dayOffset =
((props2.parsedValue.day() - firstDayOfWeek + 7) % 7) - 1
const weekDate = props2.parsedValue.subtract(dayOffset, 'day')
return weekDate.isSame(newDate, 'day')
}
return false
}
return {
handleMouseMove,
t: t3,
rows,
isWeekActive,
getCellClasses,
WEEKS,
handleClick: handleClick2,
}
},
})
const _hoisted_1$6G = { key: 0 }
function _sfc_render$1e(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_date_picker_cell = resolveComponent('el-date-picker-cell')
return (
openBlock(),
createElementBlock(
'table',
{
cellspacing: '0',
cellpadding: '0',
class: normalizeClass([
'el-date-table',
{ 'is-week-mode': _ctx.selectionMode === 'week' },
]),
onClick:
_cache[0] ||
(_cache[0] = (...args) =>
_ctx.handleClick && _ctx.handleClick(...args)),
onMousemove:
_cache[1] ||
(_cache[1] = (...args) =>
_ctx.handleMouseMove && _ctx.handleMouseMove(...args)),
},
[
createElementVNode('tbody', null, [
createElementVNode('tr', null, [
_ctx.showWeekNumber
? (openBlock(),
createElementBlock(
'th',
_hoisted_1$6G,
toDisplayString$1(_ctx.t('el.datepicker.week')),
1
))
: createCommentVNode('v-if', true),
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.WEEKS, (week, key2) => {
return (
openBlock(),
createElementBlock(
'th',
{ key: key2 },
toDisplayString$1(_ctx.t('el.datepicker.weeks.' + week)),
1
)
)
}),
128
)),
]),
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.rows, (row, key2) => {
return (
openBlock(),
createElementBlock(
'tr',
{
key: key2,
class: normalizeClass([
'el-date-table__row',
{ current: _ctx.isWeekActive(row[1]) },
]),
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(row, (cell, key_) => {
return (
openBlock(),
createElementBlock(
'td',
{
key: key_,
class: normalizeClass(_ctx.getCellClasses(cell)),
},
[
createVNode$1(
_component_el_date_picker_cell,
{ cell },
null,
8,
['cell']
),
],
2
)
)
}),
128
)),
],
2
)
)
}),
128
)),
]),
],
34
)
)
}
var DateTable = /* @__PURE__ */ _export_sfc$1(_sfc_main$8t, [
['render', _sfc_render$1e],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/basic-date-table.vue',
],
])
const datesInMonth = (year, month, lang) => {
const firstDay = dayjs().locale(lang).startOf('month').month(month).year(year)
const numOfDays = firstDay.daysInMonth()
return rangeArr(numOfDays).map((n2) => firstDay.add(n2, 'day').toDate())
}
const _sfc_main$8s = defineComponent({
props: {
disabledDate: {
type: Function,
},
selectionMode: {
type: String,
default: 'month',
},
minDate: {
type: Object,
},
maxDate: {
type: Object,
},
date: {
type: Object,
},
parsedValue: {
type: Object,
},
rangeState: {
type: Object,
default: () => ({
endDate: null,
selecting: false,
}),
},
},
emits: ['changerange', 'pick', 'select'],
setup(props2, ctx) {
const { t: t3, lang } = useLocale()
const months = ref(
props2.date
.locale('en')
.localeData()
.monthsShort()
.map((_2) => _2.toLowerCase())
)
const tableRows = ref([[], [], []])
const lastRow = ref(null)
const lastColumn = ref(null)
const rows = computed(() => {
var _a2
const rows2 = tableRows.value
const now2 = dayjs().locale(lang.value).startOf('month')
for (let i2 = 0; i2 < 3; i2++) {
const row = rows2[i2]
for (let j2 = 0; j2 < 4; j2++) {
let cell = row[j2]
if (!cell) {
cell = {
row: i2,
column: j2,
type: 'normal',
inRange: false,
start: false,
end: false,
}
}
cell.type = 'normal'
const index2 = i2 * 4 + j2
const calTime = props2.date.startOf('year').month(index2)
const calEndDate =
props2.rangeState.endDate ||
props2.maxDate ||
(props2.rangeState.selecting && props2.minDate)
cell.inRange =
(props2.minDate &&
calTime.isSameOrAfter(props2.minDate, 'month') &&
calEndDate &&
calTime.isSameOrBefore(calEndDate, 'month')) ||
(props2.minDate &&
calTime.isSameOrBefore(props2.minDate, 'month') &&
calEndDate &&
calTime.isSameOrAfter(calEndDate, 'month'))
if (
(_a2 = props2.minDate) == null
? void 0
: _a2.isSameOrAfter(calEndDate)
) {
cell.start = calEndDate && calTime.isSame(calEndDate, 'month')
cell.end = props2.minDate && calTime.isSame(props2.minDate, 'month')
} else {
cell.start =
props2.minDate && calTime.isSame(props2.minDate, 'month')
cell.end = calEndDate && calTime.isSame(calEndDate, 'month')
}
const isToday = now2.isSame(calTime)
if (isToday) {
cell.type = 'today'
}
cell.text = index2
const cellDate = calTime.toDate()
cell.disabled = props2.disabledDate && props2.disabledDate(cellDate)
row[j2] = cell
}
}
return rows2
})
const getCellStyle = (cell) => {
const style2 = {}
const year = props2.date.year()
const today = new Date()
const month = cell.text
style2.disabled = props2.disabledDate
? datesInMonth(year, month, lang.value).every(props2.disabledDate)
: false
style2.current =
castArray(props2.parsedValue).findIndex(
(date4) => date4.year() === year && date4.month() === month
) >= 0
style2.today = today.getFullYear() === year && today.getMonth() === month
if (cell.inRange) {
style2['in-range'] = true
if (cell.start) {
style2['start-date'] = true
}
if (cell.end) {
style2['end-date'] = true
}
}
return style2
}
const handleMouseMove = (event) => {
if (!props2.rangeState.selecting) return
let target2 = event.target
if (target2.tagName === 'A') {
target2 = target2.parentNode.parentNode
}
if (target2.tagName === 'DIV') {
target2 = target2.parentNode
}
if (target2.tagName !== 'TD') return
const row = target2.parentNode.rowIndex
const column = target2.cellIndex
if (rows.value[row][column].disabled) return
if (row !== lastRow.value || column !== lastColumn.value) {
lastRow.value = row
lastColumn.value = column
ctx.emit('changerange', {
selecting: true,
endDate: props2.date.startOf('year').month(row * 4 + column),
})
}
}
const handleMonthTableClick = (event) => {
let target2 = event.target
if (target2.tagName === 'A') {
target2 = target2.parentNode.parentNode
}
if (target2.tagName === 'DIV') {
target2 = target2.parentNode
}
if (target2.tagName !== 'TD') return
if (hasClass$1(target2, 'disabled')) return
const column = target2.cellIndex
const row = target2.parentNode.rowIndex
const month = row * 4 + column
const newDate = props2.date.startOf('year').month(month)
if (props2.selectionMode === 'range') {
if (!props2.rangeState.selecting) {
ctx.emit('pick', { minDate: newDate, maxDate: null })
ctx.emit('select', true)
} else {
if (newDate >= props2.minDate) {
ctx.emit('pick', { minDate: props2.minDate, maxDate: newDate })
} else {
ctx.emit('pick', { minDate: newDate, maxDate: props2.minDate })
}
ctx.emit('select', false)
}
} else {
ctx.emit('pick', month)
}
}
return {
handleMouseMove,
handleMonthTableClick,
rows,
getCellStyle,
t: t3,
months,
}
},
})
const _hoisted_1$6F = { class: 'cell' }
function _sfc_render$1d(_ctx, _cache, $props2, $setup, $data, $options) {
return (
openBlock(),
createElementBlock(
'table',
{
class: 'el-month-table',
onClick:
_cache[0] ||
(_cache[0] = (...args) =>
_ctx.handleMonthTableClick && _ctx.handleMonthTableClick(...args)),
onMousemove:
_cache[1] ||
(_cache[1] = (...args) =>
_ctx.handleMouseMove && _ctx.handleMouseMove(...args)),
},
[
createElementVNode('tbody', null, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.rows, (row, key2) => {
return (
openBlock(),
createElementBlock('tr', { key: key2 }, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(row, (cell, key_) => {
return (
openBlock(),
createElementBlock(
'td',
{
key: key_,
class: normalizeClass(_ctx.getCellStyle(cell)),
},
[
createElementVNode('div', null, [
createElementVNode(
'a',
_hoisted_1$6F,
toDisplayString$1(
_ctx.t(
'el.datepicker.months.' +
_ctx.months[cell.text]
)
),
1
),
]),
],
2
)
)
}),
128
)),
])
)
}),
128
)),
]),
],
32
)
)
}
var MonthTable = /* @__PURE__ */ _export_sfc$1(_sfc_main$8s, [
['render', _sfc_render$1d],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/basic-month-table.vue',
],
])
const datesInYear = (year, lang) => {
const firstDay = dayjs(String(year)).locale(lang).startOf('year')
const lastDay = firstDay.endOf('year')
const numOfDays = lastDay.dayOfYear()
return rangeArr(numOfDays).map((n2) => firstDay.add(n2, 'day').toDate())
}
const _sfc_main$8r = defineComponent({
props: {
disabledDate: {
type: Function,
},
parsedValue: {
type: Object,
},
date: {
type: Object,
},
},
emits: ['pick'],
setup(props2, ctx) {
const { lang } = useLocale()
const startYear = computed(() => {
return Math.floor(props2.date.year() / 10) * 10
})
const getCellStyle = (year) => {
const style2 = {}
const today = dayjs().locale(lang.value)
style2.disabled = props2.disabledDate
? datesInYear(year, lang.value).every(props2.disabledDate)
: false
style2.current =
castArray(props2.parsedValue).findIndex((_2) => _2.year() === year) >= 0
style2.today = today.year() === year
return style2
}
const handleYearTableClick = (event) => {
const target2 = event.target
if (target2.tagName === 'A') {
if (hasClass$1(target2.parentNode, 'disabled')) return
const year = target2.textContent || target2.innerText
ctx.emit('pick', Number(year))
}
}
return {
startYear,
getCellStyle,
handleYearTableClick,
}
},
})
const _hoisted_1$6E = { class: 'cell' }
const _hoisted_2$5l = { class: 'cell' }
const _hoisted_3$4J = { class: 'cell' }
const _hoisted_4$45 = { class: 'cell' }
const _hoisted_5$3G = { class: 'cell' }
const _hoisted_6$3f = { class: 'cell' }
const _hoisted_7$2T = { class: 'cell' }
const _hoisted_8$2z = { class: 'cell' }
const _hoisted_9$2n = { class: 'cell' }
const _hoisted_10$29 = { class: 'cell' }
const _hoisted_11$1Z = /* @__PURE__ */ createElementVNode('td', null, null, -1)
const _hoisted_12$1T = /* @__PURE__ */ createElementVNode('td', null, null, -1)
function _sfc_render$1c(_ctx, _cache, $props2, $setup, $data, $options) {
return (
openBlock(),
createElementBlock(
'table',
{
class: 'el-year-table',
onClick:
_cache[0] ||
(_cache[0] = (...args) =>
_ctx.handleYearTableClick && _ctx.handleYearTableClick(...args)),
},
[
createElementVNode('tbody', null, [
createElementVNode('tr', null, [
createElementVNode(
'td',
{
class: normalizeClass([
'available',
_ctx.getCellStyle(_ctx.startYear + 0),
]),
},
[
createElementVNode(
'a',
_hoisted_1$6E,
toDisplayString$1(_ctx.startYear),
1
),
],
2
),
createElementVNode(
'td',
{
class: normalizeClass([
'available',
_ctx.getCellStyle(_ctx.startYear + 1),
]),
},
[
createElementVNode(
'a',
_hoisted_2$5l,
toDisplayString$1(_ctx.startYear + 1),
1
),
],
2
),
createElementVNode(
'td',
{
class: normalizeClass([
'available',
_ctx.getCellStyle(_ctx.startYear + 2),
]),
},
[
createElementVNode(
'a',
_hoisted_3$4J,
toDisplayString$1(_ctx.startYear + 2),
1
),
],
2
),
createElementVNode(
'td',
{
class: normalizeClass([
'available',
_ctx.getCellStyle(_ctx.startYear + 3),
]),
},
[
createElementVNode(
'a',
_hoisted_4$45,
toDisplayString$1(_ctx.startYear + 3),
1
),
],
2
),
]),
createElementVNode('tr', null, [
createElementVNode(
'td',
{
class: normalizeClass([
'available',
_ctx.getCellStyle(_ctx.startYear + 4),
]),
},
[
createElementVNode(
'a',
_hoisted_5$3G,
toDisplayString$1(_ctx.startYear + 4),
1
),
],
2
),
createElementVNode(
'td',
{
class: normalizeClass([
'available',
_ctx.getCellStyle(_ctx.startYear + 5),
]),
},
[
createElementVNode(
'a',
_hoisted_6$3f,
toDisplayString$1(_ctx.startYear + 5),
1
),
],
2
),
createElementVNode(
'td',
{
class: normalizeClass([
'available',
_ctx.getCellStyle(_ctx.startYear + 6),
]),
},
[
createElementVNode(
'a',
_hoisted_7$2T,
toDisplayString$1(_ctx.startYear + 6),
1
),
],
2
),
createElementVNode(
'td',
{
class: normalizeClass([
'available',
_ctx.getCellStyle(_ctx.startYear + 7),
]),
},
[
createElementVNode(
'a',
_hoisted_8$2z,
toDisplayString$1(_ctx.startYear + 7),
1
),
],
2
),
]),
createElementVNode('tr', null, [
createElementVNode(
'td',
{
class: normalizeClass([
'available',
_ctx.getCellStyle(_ctx.startYear + 8),
]),
},
[
createElementVNode(
'a',
_hoisted_9$2n,
toDisplayString$1(_ctx.startYear + 8),
1
),
],
2
),
createElementVNode(
'td',
{
class: normalizeClass([
'available',
_ctx.getCellStyle(_ctx.startYear + 9),
]),
},
[
createElementVNode(
'a',
_hoisted_10$29,
toDisplayString$1(_ctx.startYear + 9),
1
),
],
2
),
_hoisted_11$1Z,
_hoisted_12$1T,
]),
]),
]
)
)
}
var YearTable = /* @__PURE__ */ _export_sfc$1(_sfc_main$8r, [
['render', _sfc_render$1c],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/basic-year-table.vue',
],
])
const timeWithinRange = (_2, __, ___) => true
const _sfc_main$8q = defineComponent({
components: {
DateTable,
ElInput,
ElButton,
ElIcon,
TimePickPanel,
MonthTable,
YearTable,
DArrowLeft: dArrowLeft,
ArrowLeft: arrowLeft,
DArrowRight: dArrowRight,
ArrowRight: arrowRight,
},
directives: { clickoutside: ClickOutside },
props: {
visible: {
type: Boolean,
default: false,
},
parsedValue: {
type: [Object, Array],
},
format: {
type: String,
default: '',
},
type: {
type: String,
required: true,
validator: isValidDatePickType,
},
},
emits: ['pick', 'set-picker-option', 'panel-change'],
setup(props2, ctx) {
const { t: t3, lang } = useLocale()
const pickerBase = inject('EP_PICKER_BASE')
const popper2 = inject(TOOLTIP_INJECTION_KEY)
const {
shortcuts,
disabledDate,
cellClassName,
defaultTime,
arrowControl,
} = pickerBase.props
const defaultValue = toRef(pickerBase.props, 'defaultValue')
const innerDate = ref(dayjs().locale(lang.value))
const defaultTimeD = computed(() => {
return dayjs(defaultTime).locale(lang.value)
})
const month = computed(() => {
return innerDate.value.month()
})
const year = computed(() => {
return innerDate.value.year()
})
const selectableRange = ref([])
const userInputDate = ref(null)
const userInputTime = ref(null)
const checkDateWithinRange = (date4) => {
return selectableRange.value.length > 0
? timeWithinRange(
date4,
selectableRange.value,
props2.format || 'HH:mm:ss'
)
: true
}
const formatEmit = (emitDayjs) => {
if (defaultTime && !visibleTime.value) {
return defaultTimeD.value
.year(emitDayjs.year())
.month(emitDayjs.month())
.date(emitDayjs.date())
}
if (showTime.value) return emitDayjs.millisecond(0)
return emitDayjs.startOf('day')
}
const emit2 = (value2, ...args) => {
if (!value2) {
ctx.emit('pick', value2, ...args)
} else if (Array.isArray(value2)) {
const dates = value2.map(formatEmit)
ctx.emit('pick', dates, ...args)
} else {
ctx.emit('pick', formatEmit(value2), ...args)
}
userInputDate.value = null
userInputTime.value = null
}
const handleDatePick = (value2) => {
if (selectionMode.value === 'day') {
let newDate = props2.parsedValue
? props2.parsedValue
.year(value2.year())
.month(value2.month())
.date(value2.date())
: value2
if (!checkDateWithinRange(newDate)) {
newDate = selectableRange.value[0][0]
.year(value2.year())
.month(value2.month())
.date(value2.date())
}
innerDate.value = newDate
emit2(newDate, showTime.value)
} else if (selectionMode.value === 'week') {
emit2(value2.date)
} else if (selectionMode.value === 'dates') {
emit2(value2, true)
}
}
const prevMonth_ = () => {
innerDate.value = innerDate.value.subtract(1, 'month')
handlePanelChange('month')
}
const nextMonth_ = () => {
innerDate.value = innerDate.value.add(1, 'month')
handlePanelChange('month')
}
const prevYear_ = () => {
if (currentView.value === 'year') {
innerDate.value = innerDate.value.subtract(10, 'year')
} else {
innerDate.value = innerDate.value.subtract(1, 'year')
}
handlePanelChange('year')
}
const nextYear_ = () => {
if (currentView.value === 'year') {
innerDate.value = innerDate.value.add(10, 'year')
} else {
innerDate.value = innerDate.value.add(1, 'year')
}
handlePanelChange('year')
}
const currentView = ref('date')
const yearLabel = computed(() => {
const yearTranslation = t3('el.datepicker.year')
if (currentView.value === 'year') {
const startYear = Math.floor(year.value / 10) * 10
if (yearTranslation) {
return `${startYear} ${yearTranslation} - ${
startYear + 9
} ${yearTranslation}`
}
return `${startYear} - ${startYear + 9}`
}
return `${year.value} ${yearTranslation}`
})
const handleShortcutClick = (shortcut) => {
const shortcutValue =
typeof shortcut.value === 'function' ? shortcut.value() : shortcut.value
if (shortcutValue) {
emit2(dayjs(shortcutValue).locale(lang.value))
return
}
if (shortcut.onClick) {
shortcut.onClick(ctx)
}
}
const selectionMode = computed(() => {
if (['week', 'month', 'year', 'dates'].includes(props2.type)) {
return props2.type
}
return 'day'
})
watch$1(
() => selectionMode.value,
(val2) => {
if (['month', 'year'].includes(val2)) {
currentView.value = val2
return
}
currentView.value = 'date'
},
{ immediate: true }
)
watch$1(
() => currentView.value,
() => {
popper2 == null ? void 0 : popper2.updatePopper()
}
)
const hasShortcuts = computed(() => !!shortcuts.length)
const handleMonthPick = (month2) => {
innerDate.value = innerDate.value.startOf('month').month(month2)
if (selectionMode.value === 'month') {
emit2(innerDate.value)
} else {
currentView.value = 'date'
}
handlePanelChange('month')
}
const handleYearPick = (year2) => {
if (selectionMode.value === 'year') {
innerDate.value = innerDate.value.startOf('year').year(year2)
emit2(innerDate.value)
} else {
innerDate.value = innerDate.value.year(year2)
currentView.value = 'month'
}
handlePanelChange('year')
}
const showMonthPicker = () => {
currentView.value = 'month'
}
const showYearPicker = () => {
currentView.value = 'year'
}
const showTime = computed(
() => props2.type === 'datetime' || props2.type === 'datetimerange'
)
const footerVisible = computed(() => {
return showTime.value || selectionMode.value === 'dates'
})
const onConfirm = () => {
if (selectionMode.value === 'dates') {
emit2(props2.parsedValue)
} else {
let result = props2.parsedValue
if (!result) {
const defaultTimeD2 = dayjs(defaultTime).locale(lang.value)
const defaultValueD = getDefaultValue()
result = defaultTimeD2
.year(defaultValueD.year())
.month(defaultValueD.month())
.date(defaultValueD.date())
}
innerDate.value = result
emit2(result)
}
}
const changeToNow = () => {
const now2 = dayjs().locale(lang.value)
const nowDate = now2.toDate()
if (
(!disabledDate || !disabledDate(nowDate)) &&
checkDateWithinRange(nowDate)
) {
innerDate.value = dayjs().locale(lang.value)
emit2(innerDate.value)
}
}
const timeFormat = computed(() => {
return extractTimeFormat(props2.format)
})
const dateFormat = computed(() => {
return extractDateFormat(props2.format)
})
const visibleTime = computed(() => {
if (userInputTime.value) return userInputTime.value
if (!props2.parsedValue && !defaultValue.value) return
return (props2.parsedValue || innerDate.value).format(timeFormat.value)
})
const visibleDate = computed(() => {
if (userInputDate.value) return userInputDate.value
if (!props2.parsedValue && !defaultValue.value) return
return (props2.parsedValue || innerDate.value).format(dateFormat.value)
})
const timePickerVisible = ref(false)
const onTimePickerInputFocus = () => {
timePickerVisible.value = true
}
const handleTimePickClose = () => {
timePickerVisible.value = false
}
const handleTimePick = (value2, visible, first2) => {
const newDate = props2.parsedValue
? props2.parsedValue
.hour(value2.hour())
.minute(value2.minute())
.second(value2.second())
: value2
innerDate.value = newDate
emit2(innerDate.value, true)
if (!first2) {
timePickerVisible.value = visible
}
}
const handleVisibleTimeChange = (value2) => {
const newDate = dayjs(value2, timeFormat.value).locale(lang.value)
if (newDate.isValid() && checkDateWithinRange(newDate)) {
innerDate.value = newDate
.year(innerDate.value.year())
.month(innerDate.value.month())
.date(innerDate.value.date())
userInputTime.value = null
timePickerVisible.value = false
emit2(innerDate.value, true)
}
}
const handleVisibleDateChange = (value2) => {
const newDate = dayjs(value2, dateFormat.value).locale(lang.value)
if (newDate.isValid()) {
if (disabledDate && disabledDate(newDate.toDate())) {
return
}
innerDate.value = newDate
.hour(innerDate.value.hour())
.minute(innerDate.value.minute())
.second(innerDate.value.second())
userInputDate.value = null
emit2(innerDate.value, true)
}
}
const isValidValue = (date4) => {
return (
dayjs.isDayjs(date4) &&
date4.isValid() &&
(disabledDate ? !disabledDate(date4.toDate()) : true)
)
}
const formatToString = (value2) => {
if (selectionMode.value === 'dates') {
return value2.map((_2) => _2.format(props2.format))
}
return value2.format(props2.format)
}
const parseUserInput = (value2) => {
return dayjs(value2, props2.format).locale(lang.value)
}
const getDefaultValue = () => {
const parseDate2 = dayjs(defaultValue.value).locale(lang.value)
if (!defaultValue.value) {
const defaultTimeDValue = defaultTimeD.value
return dayjs()
.hour(defaultTimeDValue.hour())
.minute(defaultTimeDValue.minute())
.second(defaultTimeDValue.second())
.locale(lang.value)
}
return parseDate2
}
const handleKeydown = (event) => {
const { code: code2, keyCode } = event
const list2 = [
EVENT_CODE.up,
EVENT_CODE.down,
EVENT_CODE.left,
EVENT_CODE.right,
]
if (props2.visible && !timePickerVisible.value) {
if (list2.includes(code2)) {
handleKeyControl(keyCode)
event.stopPropagation()
event.preventDefault()
}
if (
code2 === EVENT_CODE.enter &&
userInputDate.value === null &&
userInputTime.value === null
) {
emit2(innerDate, false)
}
}
}
const handleKeyControl = (keyCode) => {
const mapping = {
year: {
38: -4,
40: 4,
37: -1,
39: 1,
offset: (date4, step) =>
date4.setFullYear(date4.getFullYear() + step),
},
month: {
38: -4,
40: 4,
37: -1,
39: 1,
offset: (date4, step) => date4.setMonth(date4.getMonth() + step),
},
week: {
38: -1,
40: 1,
37: -1,
39: 1,
offset: (date4, step) => date4.setDate(date4.getDate() + step * 7),
},
day: {
38: -7,
40: 7,
37: -1,
39: 1,
offset: (date4, step) => date4.setDate(date4.getDate() + step),
},
}
const newDate = innerDate.value.toDate()
while (Math.abs(innerDate.value.diff(newDate, 'year', true)) < 1) {
const map2 = mapping[selectionMode.value]
map2.offset(newDate, map2[keyCode])
if (disabledDate && disabledDate(newDate)) {
continue
}
const result = dayjs(newDate).locale(lang.value)
innerDate.value = result
ctx.emit('pick', result, true)
break
}
}
const handlePanelChange = (mode2) => {
ctx.emit(
'panel-change',
innerDate.value.toDate(),
mode2,
currentView.value
)
}
ctx.emit('set-picker-option', ['isValidValue', isValidValue])
ctx.emit('set-picker-option', ['formatToString', formatToString])
ctx.emit('set-picker-option', ['parseUserInput', parseUserInput])
ctx.emit('set-picker-option', ['handleKeydown', handleKeydown])
watch$1(
() => defaultValue.value,
(val2) => {
if (val2) {
innerDate.value = getDefaultValue()
}
},
{ immediate: true }
)
watch$1(
() => props2.parsedValue,
(val2) => {
if (val2) {
if (selectionMode.value === 'dates') return
if (Array.isArray(val2)) return
innerDate.value = val2
} else {
innerDate.value = getDefaultValue()
}
},
{ immediate: true }
)
return {
handleTimePick,
handleTimePickClose,
onTimePickerInputFocus,
timePickerVisible,
visibleTime,
visibleDate,
showTime,
changeToNow,
onConfirm,
footerVisible,
handleYearPick,
showMonthPicker,
showYearPicker,
handleMonthPick,
hasShortcuts,
shortcuts,
arrowControl,
disabledDate,
cellClassName,
selectionMode,
handleShortcutClick,
prevYear_,
nextYear_,
prevMonth_,
nextMonth_,
innerDate,
t: t3,
yearLabel,
currentView,
month,
handleDatePick,
handleVisibleTimeChange,
handleVisibleDateChange,
timeFormat,
userInputTime,
userInputDate,
}
},
})
const _hoisted_1$6D = { class: 'el-picker-panel__body-wrapper' }
const _hoisted_2$5k = {
key: 0,
class: 'el-picker-panel__sidebar',
}
const _hoisted_3$4I = ['onClick']
const _hoisted_4$44 = { class: 'el-picker-panel__body' }
const _hoisted_5$3F = {
key: 0,
class: 'el-date-picker__time-header',
}
const _hoisted_6$3e = { class: 'el-date-picker__editor-wrap' }
const _hoisted_7$2S = { class: 'el-date-picker__editor-wrap' }
const _hoisted_8$2y = ['aria-label']
const _hoisted_9$2m = ['aria-label']
const _hoisted_10$28 = ['aria-label']
const _hoisted_11$1Y = ['aria-label']
const _hoisted_12$1S = { class: 'el-picker-panel__content' }
const _hoisted_13$1G = { class: 'el-picker-panel__footer' }
function _sfc_render$1b(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_input = resolveComponent('el-input')
const _component_time_pick_panel = resolveComponent('time-pick-panel')
const _component_d_arrow_left = resolveComponent('d-arrow-left')
const _component_el_icon = resolveComponent('el-icon')
const _component_arrow_left = resolveComponent('arrow-left')
const _component_d_arrow_right = resolveComponent('d-arrow-right')
const _component_arrow_right = resolveComponent('arrow-right')
const _component_date_table = resolveComponent('date-table')
const _component_year_table = resolveComponent('year-table')
const _component_month_table = resolveComponent('month-table')
const _component_el_button = resolveComponent('el-button')
const _directive_clickoutside = resolveDirective('clickoutside')
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'el-picker-panel el-date-picker',
[
{
'has-sidebar': _ctx.$slots.sidebar || _ctx.hasShortcuts,
'has-time': _ctx.showTime,
},
],
]),
},
[
createElementVNode('div', _hoisted_1$6D, [
renderSlot(_ctx.$slots, 'sidebar', {
class: 'el-picker-panel__sidebar',
}),
_ctx.hasShortcuts
? (openBlock(),
createElementBlock('div', _hoisted_2$5k, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.shortcuts, (shortcut, key2) => {
return (
openBlock(),
createElementBlock(
'button',
{
key: key2,
type: 'button',
class: 'el-picker-panel__shortcut',
onClick: ($event) =>
_ctx.handleShortcutClick(shortcut),
},
toDisplayString$1(shortcut.text),
9,
_hoisted_3$4I
)
)
}),
128
)),
]))
: createCommentVNode('v-if', true),
createElementVNode('div', _hoisted_4$44, [
_ctx.showTime
? (openBlock(),
createElementBlock('div', _hoisted_5$3F, [
createElementVNode('span', _hoisted_6$3e, [
createVNode$1(
_component_el_input,
{
placeholder: _ctx.t('el.datepicker.selectDate'),
'model-value': _ctx.visibleDate,
size: 'small',
onInput:
_cache[0] ||
(_cache[0] = (val2) => (_ctx.userInputDate = val2)),
onChange: _ctx.handleVisibleDateChange,
},
null,
8,
['placeholder', 'model-value', 'onChange']
),
]),
withDirectives(
(openBlock(),
createElementBlock('span', _hoisted_7$2S, [
createVNode$1(
_component_el_input,
{
placeholder: _ctx.t('el.datepicker.selectTime'),
'model-value': _ctx.visibleTime,
size: 'small',
onFocus: _ctx.onTimePickerInputFocus,
onInput:
_cache[1] ||
(_cache[1] = (val2) => (_ctx.userInputTime = val2)),
onChange: _ctx.handleVisibleTimeChange,
},
null,
8,
['placeholder', 'model-value', 'onFocus', 'onChange']
),
createVNode$1(
_component_time_pick_panel,
{
visible: _ctx.timePickerVisible,
format: _ctx.timeFormat,
'time-arrow-control': _ctx.arrowControl,
'parsed-value': _ctx.innerDate,
onPick: _ctx.handleTimePick,
},
null,
8,
[
'visible',
'format',
'time-arrow-control',
'parsed-value',
'onPick',
]
),
])),
[[_directive_clickoutside, _ctx.handleTimePickClose]]
),
]))
: createCommentVNode('v-if', true),
withDirectives(
createElementVNode(
'div',
{
class: normalizeClass([
'el-date-picker__header',
{
'el-date-picker__header--bordered':
_ctx.currentView === 'year' ||
_ctx.currentView === 'month',
},
]),
},
[
createElementVNode(
'button',
{
type: 'button',
'aria-label': _ctx.t(`el.datepicker.prevYear`),
class:
'el-picker-panel__icon-btn el-date-picker__prev-btn d-arrow-left',
onClick:
_cache[2] ||
(_cache[2] = (...args) =>
_ctx.prevYear_ && _ctx.prevYear_(...args)),
},
[
createVNode$1(_component_el_icon, null, {
default: withCtx(() => [
createVNode$1(_component_d_arrow_left),
]),
_: 1,
}),
],
8,
_hoisted_8$2y
),
withDirectives(
createElementVNode(
'button',
{
type: 'button',
'aria-label': _ctx.t(`el.datepicker.prevMonth`),
class:
'el-picker-panel__icon-btn el-date-picker__prev-btn arrow-left',
onClick:
_cache[3] ||
(_cache[3] = (...args) =>
_ctx.prevMonth_ && _ctx.prevMonth_(...args)),
},
[
createVNode$1(_component_el_icon, null, {
default: withCtx(() => [
createVNode$1(_component_arrow_left),
]),
_: 1,
}),
],
8,
_hoisted_9$2m
),
[[vShow, _ctx.currentView === 'date']]
),
createElementVNode(
'span',
{
role: 'button',
class: 'el-date-picker__header-label',
onClick:
_cache[4] ||
(_cache[4] = (...args) =>
_ctx.showYearPicker && _ctx.showYearPicker(...args)),
},
toDisplayString$1(_ctx.yearLabel),
1
),
withDirectives(
createElementVNode(
'span',
{
role: 'button',
class: normalizeClass([
'el-date-picker__header-label',
{ active: _ctx.currentView === 'month' },
]),
onClick:
_cache[5] ||
(_cache[5] = (...args) =>
_ctx.showMonthPicker &&
_ctx.showMonthPicker(...args)),
},
toDisplayString$1(
_ctx.t(`el.datepicker.month${_ctx.month + 1}`)
),
3
),
[[vShow, _ctx.currentView === 'date']]
),
createElementVNode(
'button',
{
type: 'button',
'aria-label': _ctx.t(`el.datepicker.nextYear`),
class:
'el-picker-panel__icon-btn el-date-picker__next-btn d-arrow-right',
onClick:
_cache[6] ||
(_cache[6] = (...args) =>
_ctx.nextYear_ && _ctx.nextYear_(...args)),
},
[
createVNode$1(_component_el_icon, null, {
default: withCtx(() => [
createVNode$1(_component_d_arrow_right),
]),
_: 1,
}),
],
8,
_hoisted_10$28
),
withDirectives(
createElementVNode(
'button',
{
type: 'button',
'aria-label': _ctx.t(`el.datepicker.nextMonth`),
class:
'el-picker-panel__icon-btn el-date-picker__next-btn arrow-right',
onClick:
_cache[7] ||
(_cache[7] = (...args) =>
_ctx.nextMonth_ && _ctx.nextMonth_(...args)),
},
[
createVNode$1(_component_el_icon, null, {
default: withCtx(() => [
createVNode$1(_component_arrow_right),
]),
_: 1,
}),
],
8,
_hoisted_11$1Y
),
[[vShow, _ctx.currentView === 'date']]
),
],
2
),
[[vShow, _ctx.currentView !== 'time']]
),
createElementVNode('div', _hoisted_12$1S, [
_ctx.currentView === 'date'
? (openBlock(),
createBlock(
_component_date_table,
{
key: 0,
'selection-mode': _ctx.selectionMode,
date: _ctx.innerDate,
'parsed-value': _ctx.parsedValue,
'disabled-date': _ctx.disabledDate,
onPick: _ctx.handleDatePick,
},
null,
8,
[
'selection-mode',
'date',
'parsed-value',
'disabled-date',
'onPick',
]
))
: createCommentVNode('v-if', true),
_ctx.currentView === 'year'
? (openBlock(),
createBlock(
_component_year_table,
{
key: 1,
date: _ctx.innerDate,
'disabled-date': _ctx.disabledDate,
'parsed-value': _ctx.parsedValue,
onPick: _ctx.handleYearPick,
},
null,
8,
['date', 'disabled-date', 'parsed-value', 'onPick']
))
: createCommentVNode('v-if', true),
_ctx.currentView === 'month'
? (openBlock(),
createBlock(
_component_month_table,
{
key: 2,
date: _ctx.innerDate,
'parsed-value': _ctx.parsedValue,
'disabled-date': _ctx.disabledDate,
onPick: _ctx.handleMonthPick,
},
null,
8,
['date', 'parsed-value', 'disabled-date', 'onPick']
))
: createCommentVNode('v-if', true),
]),
]),
]),
withDirectives(
createElementVNode(
'div',
_hoisted_13$1G,
[
withDirectives(
createVNode$1(
_component_el_button,
{
size: 'small',
type: 'text',
class: 'el-picker-panel__link-btn',
onClick: _ctx.changeToNow,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx.t('el.datepicker.now')),
1
),
]),
_: 1,
},
8,
['onClick']
),
[[vShow, _ctx.selectionMode !== 'dates']]
),
createVNode$1(
_component_el_button,
{
plain: '',
size: 'small',
class: 'el-picker-panel__link-btn',
onClick: _ctx.onConfirm,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx.t('el.datepicker.confirm')),
1
),
]),
_: 1,
},
8,
['onClick']
),
],
512
),
[[vShow, _ctx.footerVisible && _ctx.currentView === 'date']]
),
],
2
)
)
}
var DatePickPanel = /* @__PURE__ */ _export_sfc$1(_sfc_main$8q, [
['render', _sfc_render$1b],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/panel-date-pick.vue',
],
])
const _sfc_main$8p = defineComponent({
directives: { clickoutside: ClickOutside },
components: {
TimePickPanel,
DateTable,
ElInput,
ElButton,
ElIcon,
DArrowLeft: dArrowLeft,
ArrowLeft: arrowLeft,
DArrowRight: dArrowRight,
ArrowRight: arrowRight,
},
props: {
unlinkPanels: Boolean,
parsedValue: {
type: Array,
},
type: {
type: String,
required: true,
validator: isValidDatePickType,
},
},
emits: ['pick', 'set-picker-option', 'calendar-change', 'panel-change'],
setup(props2, ctx) {
const { t: t3, lang } = useLocale()
const leftDate = ref(dayjs().locale(lang.value))
const rightDate = ref(dayjs().locale(lang.value).add(1, 'month'))
const minDate = ref(null)
const maxDate = ref(null)
const dateUserInput = ref({
min: null,
max: null,
})
const timeUserInput = ref({
min: null,
max: null,
})
const leftLabel = computed(() => {
return `${leftDate.value.year()} ${t3('el.datepicker.year')} ${t3(
`el.datepicker.month${leftDate.value.month() + 1}`
)}`
})
const rightLabel = computed(() => {
return `${rightDate.value.year()} ${t3('el.datepicker.year')} ${t3(
`el.datepicker.month${rightDate.value.month() + 1}`
)}`
})
const leftYear = computed(() => {
return leftDate.value.year()
})
const leftMonth = computed(() => {
return leftDate.value.month()
})
const rightYear = computed(() => {
return rightDate.value.year()
})
const rightMonth = computed(() => {
return rightDate.value.month()
})
const hasShortcuts = computed(() => !!shortcuts.length)
const minVisibleDate = computed(() => {
if (dateUserInput.value.min !== null) return dateUserInput.value.min
if (minDate.value) return minDate.value.format(dateFormat.value)
return ''
})
const maxVisibleDate = computed(() => {
if (dateUserInput.value.max !== null) return dateUserInput.value.max
if (maxDate.value || minDate.value)
return (maxDate.value || minDate.value).format(dateFormat.value)
return ''
})
const minVisibleTime = computed(() => {
if (timeUserInput.value.min !== null) return timeUserInput.value.min
if (minDate.value) return minDate.value.format(timeFormat.value)
return ''
})
const maxVisibleTime = computed(() => {
if (timeUserInput.value.max !== null) return timeUserInput.value.max
if (maxDate.value || minDate.value)
return (maxDate.value || minDate.value).format(timeFormat.value)
return ''
})
const timeFormat = computed(() => {
return extractTimeFormat(format2)
})
const dateFormat = computed(() => {
return extractDateFormat(format2)
})
const leftPrevYear = () => {
leftDate.value = leftDate.value.subtract(1, 'year')
if (!props2.unlinkPanels) {
rightDate.value = leftDate.value.add(1, 'month')
}
handlePanelChange('year')
}
const leftPrevMonth = () => {
leftDate.value = leftDate.value.subtract(1, 'month')
if (!props2.unlinkPanels) {
rightDate.value = leftDate.value.add(1, 'month')
}
handlePanelChange('month')
}
const rightNextYear = () => {
if (!props2.unlinkPanels) {
leftDate.value = leftDate.value.add(1, 'year')
rightDate.value = leftDate.value.add(1, 'month')
} else {
rightDate.value = rightDate.value.add(1, 'year')
}
handlePanelChange('year')
}
const rightNextMonth = () => {
if (!props2.unlinkPanels) {
leftDate.value = leftDate.value.add(1, 'month')
rightDate.value = leftDate.value.add(1, 'month')
} else {
rightDate.value = rightDate.value.add(1, 'month')
}
handlePanelChange('month')
}
const leftNextYear = () => {
leftDate.value = leftDate.value.add(1, 'year')
handlePanelChange('year')
}
const leftNextMonth = () => {
leftDate.value = leftDate.value.add(1, 'month')
handlePanelChange('month')
}
const rightPrevYear = () => {
rightDate.value = rightDate.value.subtract(1, 'year')
handlePanelChange('year')
}
const rightPrevMonth = () => {
rightDate.value = rightDate.value.subtract(1, 'month')
handlePanelChange('month')
}
const handlePanelChange = (mode2) => {
ctx.emit(
'panel-change',
[leftDate.value.toDate(), rightDate.value.toDate()],
mode2
)
}
const enableMonthArrow = computed(() => {
const nextMonth = (leftMonth.value + 1) % 12
const yearOffset = leftMonth.value + 1 >= 12 ? 1 : 0
return (
props2.unlinkPanels &&
new Date(leftYear.value + yearOffset, nextMonth) <
new Date(rightYear.value, rightMonth.value)
)
})
const enableYearArrow = computed(() => {
return (
props2.unlinkPanels &&
rightYear.value * 12 +
rightMonth.value -
(leftYear.value * 12 + leftMonth.value + 1) >=
12
)
})
const isValidValue = (value2) => {
return (
Array.isArray(value2) &&
value2[0] &&
value2[1] &&
value2[0].valueOf() <= value2[1].valueOf()
)
}
const rangeState = ref({
endDate: null,
selecting: false,
})
const btnDisabled = computed(() => {
return !(
minDate.value &&
maxDate.value &&
!rangeState.value.selecting &&
isValidValue([minDate.value, maxDate.value])
)
})
const handleChangeRange = (val2) => {
rangeState.value = val2
}
const onSelect = (selecting) => {
rangeState.value.selecting = selecting
if (!selecting) {
rangeState.value.endDate = null
}
}
const showTime = computed(
() => props2.type === 'datetime' || props2.type === 'datetimerange'
)
const handleConfirm = (visible = false) => {
if (isValidValue([minDate.value, maxDate.value])) {
ctx.emit('pick', [minDate.value, maxDate.value], visible)
}
}
const formatEmit = (emitDayjs, index2) => {
if (!emitDayjs) return
if (defaultTime) {
const defaultTimeD = dayjs(defaultTime[index2] || defaultTime).locale(
lang.value
)
return defaultTimeD
.year(emitDayjs.year())
.month(emitDayjs.month())
.date(emitDayjs.date())
}
return emitDayjs
}
const handleRangePick = (val2, close2 = true) => {
const min_ = val2.minDate
const max_ = val2.maxDate
const minDate_ = formatEmit(min_, 0)
const maxDate_ = formatEmit(max_, 1)
if (maxDate.value === maxDate_ && minDate.value === minDate_) {
return
}
ctx.emit('calendar-change', [min_.toDate(), max_ && max_.toDate()])
maxDate.value = maxDate_
minDate.value = minDate_
if (!close2 || showTime.value) return
handleConfirm()
}
const handleShortcutClick = (shortcut) => {
const shortcutValues =
typeof shortcut.value === 'function' ? shortcut.value() : shortcut.value
if (shortcutValues) {
ctx.emit('pick', [
dayjs(shortcutValues[0]).locale(lang.value),
dayjs(shortcutValues[1]).locale(lang.value),
])
return
}
if (shortcut.onClick) {
shortcut.onClick(ctx)
}
}
const minTimePickerVisible = ref(false)
const maxTimePickerVisible = ref(false)
const handleMinTimeClose = () => {
minTimePickerVisible.value = false
}
const handleMaxTimeClose = () => {
maxTimePickerVisible.value = false
}
const handleDateInput = (value2, type4) => {
dateUserInput.value[type4] = value2
const parsedValueD = dayjs(value2, dateFormat.value).locale(lang.value)
if (parsedValueD.isValid()) {
if (disabledDate && disabledDate(parsedValueD.toDate())) {
return
}
if (type4 === 'min') {
leftDate.value = parsedValueD
minDate.value = (minDate.value || leftDate.value)
.year(parsedValueD.year())
.month(parsedValueD.month())
.date(parsedValueD.date())
if (!props2.unlinkPanels) {
rightDate.value = parsedValueD.add(1, 'month')
maxDate.value = minDate.value.add(1, 'month')
}
} else {
rightDate.value = parsedValueD
maxDate.value = (maxDate.value || rightDate.value)
.year(parsedValueD.year())
.month(parsedValueD.month())
.date(parsedValueD.date())
if (!props2.unlinkPanels) {
leftDate.value = parsedValueD.subtract(1, 'month')
minDate.value = maxDate.value.subtract(1, 'month')
}
}
}
}
const handleDateChange = (_2, type4) => {
dateUserInput.value[type4] = null
}
const handleTimeInput = (value2, type4) => {
timeUserInput.value[type4] = value2
const parsedValueD = dayjs(value2, timeFormat.value).locale(lang.value)
if (parsedValueD.isValid()) {
if (type4 === 'min') {
minTimePickerVisible.value = true
minDate.value = (minDate.value || leftDate.value)
.hour(parsedValueD.hour())
.minute(parsedValueD.minute())
.second(parsedValueD.second())
if (!maxDate.value || maxDate.value.isBefore(minDate.value)) {
maxDate.value = minDate.value
}
} else {
maxTimePickerVisible.value = true
maxDate.value = (maxDate.value || rightDate.value)
.hour(parsedValueD.hour())
.minute(parsedValueD.minute())
.second(parsedValueD.second())
rightDate.value = maxDate.value
if (maxDate.value && maxDate.value.isBefore(minDate.value)) {
minDate.value = maxDate.value
}
}
}
}
const handleTimeChange = (value2, type4) => {
timeUserInput.value[type4] = null
if (type4 === 'min') {
leftDate.value = minDate.value
minTimePickerVisible.value = false
} else {
rightDate.value = maxDate.value
maxTimePickerVisible.value = false
}
}
const handleMinTimePick = (value2, visible, first2) => {
if (timeUserInput.value.min) return
if (value2) {
leftDate.value = value2
minDate.value = (minDate.value || leftDate.value)
.hour(value2.hour())
.minute(value2.minute())
.second(value2.second())
}
if (!first2) {
minTimePickerVisible.value = visible
}
if (!maxDate.value || maxDate.value.isBefore(minDate.value)) {
maxDate.value = minDate.value
rightDate.value = value2
}
}
const handleMaxTimePick = (value2, visible, first2) => {
if (timeUserInput.value.max) return
if (value2) {
rightDate.value = value2
maxDate.value = (maxDate.value || rightDate.value)
.hour(value2.hour())
.minute(value2.minute())
.second(value2.second())
}
if (!first2) {
maxTimePickerVisible.value = visible
}
if (maxDate.value && maxDate.value.isBefore(minDate.value)) {
minDate.value = maxDate.value
}
}
const handleClear = () => {
leftDate.value = getDefaultValue()[0]
rightDate.value = leftDate.value.add(1, 'month')
ctx.emit('pick', null)
}
const formatToString = (value2) => {
return Array.isArray(value2)
? value2.map((_2) => _2.format(format2))
: value2.format(format2)
}
const parseUserInput = (value2) => {
return Array.isArray(value2)
? value2.map((_2) => dayjs(_2, format2).locale(lang.value))
: dayjs(value2, format2).locale(lang.value)
}
const getDefaultValue = () => {
let start2
if (Array.isArray(defaultValue.value)) {
const left2 = dayjs(defaultValue.value[0])
let right2 = dayjs(defaultValue.value[1])
if (!props2.unlinkPanels) {
right2 = left2.add(1, 'month')
}
return [left2, right2]
} else if (defaultValue.value) {
start2 = dayjs(defaultValue.value)
} else {
start2 = dayjs()
}
start2 = start2.locale(lang.value)
return [start2, start2.add(1, 'month')]
}
ctx.emit('set-picker-option', ['isValidValue', isValidValue])
ctx.emit('set-picker-option', ['parseUserInput', parseUserInput])
ctx.emit('set-picker-option', ['formatToString', formatToString])
ctx.emit('set-picker-option', ['handleClear', handleClear])
const pickerBase = inject('EP_PICKER_BASE')
const {
shortcuts,
disabledDate,
cellClassName,
format: format2,
defaultTime,
arrowControl,
clearable,
} = pickerBase.props
const defaultValue = toRef(pickerBase.props, 'defaultValue')
watch$1(
() => defaultValue.value,
(val2) => {
if (val2) {
const defaultArr = getDefaultValue()
minDate.value = null
maxDate.value = null
leftDate.value = defaultArr[0]
rightDate.value = defaultArr[1]
}
},
{ immediate: true }
)
watch$1(
() => props2.parsedValue,
(newVal) => {
if (newVal && newVal.length === 2) {
minDate.value = newVal[0]
maxDate.value = newVal[1]
leftDate.value = minDate.value
if (props2.unlinkPanels && maxDate.value) {
const minDateYear = minDate.value.year()
const minDateMonth = minDate.value.month()
const maxDateYear = maxDate.value.year()
const maxDateMonth = maxDate.value.month()
rightDate.value =
minDateYear === maxDateYear && minDateMonth === maxDateMonth
? maxDate.value.add(1, 'month')
: maxDate.value
} else {
rightDate.value = leftDate.value.add(1, 'month')
if (maxDate.value) {
rightDate.value = rightDate.value
.hour(maxDate.value.hour())
.minute(maxDate.value.minute())
.second(maxDate.value.second())
}
}
} else {
const defaultArr = getDefaultValue()
minDate.value = null
maxDate.value = null
leftDate.value = defaultArr[0]
rightDate.value = defaultArr[1]
}
},
{ immediate: true }
)
return {
shortcuts,
disabledDate,
cellClassName,
minTimePickerVisible,
maxTimePickerVisible,
handleMinTimeClose,
handleMaxTimeClose,
handleShortcutClick,
rangeState,
minDate,
maxDate,
handleRangePick,
onSelect,
handleChangeRange,
btnDisabled,
enableYearArrow,
enableMonthArrow,
rightPrevMonth,
rightPrevYear,
rightNextMonth,
rightNextYear,
leftPrevMonth,
leftPrevYear,
leftNextMonth,
leftNextYear,
hasShortcuts,
leftLabel,
rightLabel,
leftDate,
rightDate,
showTime,
t: t3,
minVisibleDate,
maxVisibleDate,
minVisibleTime,
maxVisibleTime,
arrowControl,
handleDateInput,
handleDateChange,
handleTimeInput,
handleTimeChange,
handleMinTimePick,
handleMaxTimePick,
handleClear,
handleConfirm,
timeFormat,
clearable,
}
},
})
const _hoisted_1$6C = { class: 'el-picker-panel__body-wrapper' }
const _hoisted_2$5j = {
key: 0,
class: 'el-picker-panel__sidebar',
}
const _hoisted_3$4H = ['onClick']
const _hoisted_4$43 = { class: 'el-picker-panel__body' }
const _hoisted_5$3E = {
key: 0,
class: 'el-date-range-picker__time-header',
}
const _hoisted_6$3d = { class: 'el-date-range-picker__editors-wrap' }
const _hoisted_7$2R = { class: 'el-date-range-picker__time-picker-wrap' }
const _hoisted_8$2x = { class: 'el-date-range-picker__time-picker-wrap' }
const _hoisted_9$2l = { class: 'el-date-range-picker__editors-wrap is-right' }
const _hoisted_10$27 = { class: 'el-date-range-picker__time-picker-wrap' }
const _hoisted_11$1X = { class: 'el-date-range-picker__time-picker-wrap' }
const _hoisted_12$1R = {
class: 'el-picker-panel__content el-date-range-picker__content is-left',
}
const _hoisted_13$1F = { class: 'el-date-range-picker__header' }
const _hoisted_14$1s = ['disabled']
const _hoisted_15$1n = ['disabled']
const _hoisted_16$1l = {
class: 'el-picker-panel__content el-date-range-picker__content is-right',
}
const _hoisted_17$1d = { class: 'el-date-range-picker__header' }
const _hoisted_18$15 = ['disabled']
const _hoisted_19$10 = ['disabled']
const _hoisted_20$W = {
key: 0,
class: 'el-picker-panel__footer',
}
function _sfc_render$1a(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_input = resolveComponent('el-input')
const _component_time_pick_panel = resolveComponent('time-pick-panel')
const _component_arrow_right = resolveComponent('arrow-right')
const _component_el_icon = resolveComponent('el-icon')
const _component_d_arrow_left = resolveComponent('d-arrow-left')
const _component_arrow_left = resolveComponent('arrow-left')
const _component_d_arrow_right = resolveComponent('d-arrow-right')
const _component_date_table = resolveComponent('date-table')
const _component_el_button = resolveComponent('el-button')
const _directive_clickoutside = resolveDirective('clickoutside')
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'el-picker-panel el-date-range-picker',
[
{
'has-sidebar': _ctx.$slots.sidebar || _ctx.hasShortcuts,
'has-time': _ctx.showTime,
},
],
]),
},
[
createElementVNode('div', _hoisted_1$6C, [
renderSlot(_ctx.$slots, 'sidebar', {
class: 'el-picker-panel__sidebar',
}),
_ctx.hasShortcuts
? (openBlock(),
createElementBlock('div', _hoisted_2$5j, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.shortcuts, (shortcut, key2) => {
return (
openBlock(),
createElementBlock(
'button',
{
key: key2,
type: 'button',
class: 'el-picker-panel__shortcut',
onClick: ($event) =>
_ctx.handleShortcutClick(shortcut),
},
toDisplayString$1(shortcut.text),
9,
_hoisted_3$4H
)
)
}),
128
)),
]))
: createCommentVNode('v-if', true),
createElementVNode('div', _hoisted_4$43, [
_ctx.showTime
? (openBlock(),
createElementBlock('div', _hoisted_5$3E, [
createElementVNode('span', _hoisted_6$3d, [
createElementVNode('span', _hoisted_7$2R, [
createVNode$1(
_component_el_input,
{
size: 'small',
disabled: _ctx.rangeState.selecting,
placeholder: _ctx.t('el.datepicker.startDate'),
class: 'el-date-range-picker__editor',
'model-value': _ctx.minVisibleDate,
onInput:
_cache[0] ||
(_cache[0] = (val2) =>
_ctx.handleDateInput(val2, 'min')),
onChange:
_cache[1] ||
(_cache[1] = (val2) =>
_ctx.handleDateChange(val2, 'min')),
},
null,
8,
['disabled', 'placeholder', 'model-value']
),
]),
withDirectives(
(openBlock(),
createElementBlock('span', _hoisted_8$2x, [
createVNode$1(
_component_el_input,
{
size: 'small',
class: 'el-date-range-picker__editor',
disabled: _ctx.rangeState.selecting,
placeholder: _ctx.t('el.datepicker.startTime'),
'model-value': _ctx.minVisibleTime,
onFocus:
_cache[2] ||
(_cache[2] = ($event) =>
(_ctx.minTimePickerVisible = true)),
onInput:
_cache[3] ||
(_cache[3] = (val2) =>
_ctx.handleTimeInput(val2, 'min')),
onChange:
_cache[4] ||
(_cache[4] = (val2) =>
_ctx.handleTimeChange(val2, 'min')),
},
null,
8,
['disabled', 'placeholder', 'model-value']
),
createVNode$1(
_component_time_pick_panel,
{
visible: _ctx.minTimePickerVisible,
format: _ctx.timeFormat,
'datetime-role': 'start',
'time-arrow-control': _ctx.arrowControl,
'parsed-value': _ctx.leftDate,
onPick: _ctx.handleMinTimePick,
},
null,
8,
[
'visible',
'format',
'time-arrow-control',
'parsed-value',
'onPick',
]
),
])),
[[_directive_clickoutside, _ctx.handleMinTimeClose]]
),
]),
createElementVNode('span', null, [
createVNode$1(_component_el_icon, null, {
default: withCtx(() => [
createVNode$1(_component_arrow_right),
]),
_: 1,
}),
]),
createElementVNode('span', _hoisted_9$2l, [
createElementVNode('span', _hoisted_10$27, [
createVNode$1(
_component_el_input,
{
size: 'small',
class: 'el-date-range-picker__editor',
disabled: _ctx.rangeState.selecting,
placeholder: _ctx.t('el.datepicker.endDate'),
'model-value': _ctx.maxVisibleDate,
readonly: !_ctx.minDate,
onInput:
_cache[5] ||
(_cache[5] = (val2) =>
_ctx.handleDateInput(val2, 'max')),
onChange:
_cache[6] ||
(_cache[6] = (val2) =>
_ctx.handleDateChange(val2, 'max')),
},
null,
8,
['disabled', 'placeholder', 'model-value', 'readonly']
),
]),
withDirectives(
(openBlock(),
createElementBlock('span', _hoisted_11$1X, [
createVNode$1(
_component_el_input,
{
size: 'small',
class: 'el-date-range-picker__editor',
disabled: _ctx.rangeState.selecting,
placeholder: _ctx.t('el.datepicker.endTime'),
'model-value': _ctx.maxVisibleTime,
readonly: !_ctx.minDate,
onFocus:
_cache[7] ||
(_cache[7] = ($event) =>
_ctx.minDate &&
(_ctx.maxTimePickerVisible = true)),
onInput:
_cache[8] ||
(_cache[8] = (val2) =>
_ctx.handleTimeInput(val2, 'max')),
onChange:
_cache[9] ||
(_cache[9] = (val2) =>
_ctx.handleTimeChange(val2, 'max')),
},
null,
8,
['disabled', 'placeholder', 'model-value', 'readonly']
),
createVNode$1(
_component_time_pick_panel,
{
'datetime-role': 'end',
visible: _ctx.maxTimePickerVisible,
format: _ctx.timeFormat,
'time-arrow-control': _ctx.arrowControl,
'parsed-value': _ctx.rightDate,
onPick: _ctx.handleMaxTimePick,
},
null,
8,
[
'visible',
'format',
'time-arrow-control',
'parsed-value',
'onPick',
]
),
])),
[[_directive_clickoutside, _ctx.handleMaxTimeClose]]
),
]),
]))
: createCommentVNode('v-if', true),
createElementVNode('div', _hoisted_12$1R, [
createElementVNode('div', _hoisted_13$1F, [
createElementVNode(
'button',
{
type: 'button',
class: 'el-picker-panel__icon-btn d-arrow-left',
onClick:
_cache[10] ||
(_cache[10] = (...args) =>
_ctx.leftPrevYear && _ctx.leftPrevYear(...args)),
},
[
createVNode$1(_component_el_icon, null, {
default: withCtx(() => [
createVNode$1(_component_d_arrow_left),
]),
_: 1,
}),
]
),
createElementVNode(
'button',
{
type: 'button',
class: 'el-picker-panel__icon-btn arrow-left',
onClick:
_cache[11] ||
(_cache[11] = (...args) =>
_ctx.leftPrevMonth && _ctx.leftPrevMonth(...args)),
},
[
createVNode$1(_component_el_icon, null, {
default: withCtx(() => [
createVNode$1(_component_arrow_left),
]),
_: 1,
}),
]
),
_ctx.unlinkPanels
? (openBlock(),
createElementBlock(
'button',
{
key: 0,
type: 'button',
disabled: !_ctx.enableYearArrow,
class: normalizeClass([
{ 'is-disabled': !_ctx.enableYearArrow },
'el-picker-panel__icon-btn d-arrow-right',
]),
onClick:
_cache[12] ||
(_cache[12] = (...args) =>
_ctx.leftNextYear && _ctx.leftNextYear(...args)),
},
[
createVNode$1(_component_el_icon, null, {
default: withCtx(() => [
createVNode$1(_component_d_arrow_right),
]),
_: 1,
}),
],
10,
_hoisted_14$1s
))
: createCommentVNode('v-if', true),
_ctx.unlinkPanels
? (openBlock(),
createElementBlock(
'button',
{
key: 1,
type: 'button',
disabled: !_ctx.enableMonthArrow,
class: normalizeClass([
{ 'is-disabled': !_ctx.enableMonthArrow },
'el-picker-panel__icon-btn arrow-right',
]),
onClick:
_cache[13] ||
(_cache[13] = (...args) =>
_ctx.leftNextMonth && _ctx.leftNextMonth(...args)),
},
[
createVNode$1(_component_el_icon, null, {
default: withCtx(() => [
createVNode$1(_component_arrow_right),
]),
_: 1,
}),
],
10,
_hoisted_15$1n
))
: createCommentVNode('v-if', true),
createElementVNode(
'div',
null,
toDisplayString$1(_ctx.leftLabel),
1
),
]),
createVNode$1(
_component_date_table,
{
'selection-mode': 'range',
date: _ctx.leftDate,
'min-date': _ctx.minDate,
'max-date': _ctx.maxDate,
'range-state': _ctx.rangeState,
'disabled-date': _ctx.disabledDate,
'cell-class-name': _ctx.cellClassName,
onChangerange: _ctx.handleChangeRange,
onPick: _ctx.handleRangePick,
onSelect: _ctx.onSelect,
},
null,
8,
[
'date',
'min-date',
'max-date',
'range-state',
'disabled-date',
'cell-class-name',
'onChangerange',
'onPick',
'onSelect',
]
),
]),
createElementVNode('div', _hoisted_16$1l, [
createElementVNode('div', _hoisted_17$1d, [
_ctx.unlinkPanels
? (openBlock(),
createElementBlock(
'button',
{
key: 0,
type: 'button',
disabled: !_ctx.enableYearArrow,
class: normalizeClass([
{ 'is-disabled': !_ctx.enableYearArrow },
'el-picker-panel__icon-btn d-arrow-left',
]),
onClick:
_cache[14] ||
(_cache[14] = (...args) =>
_ctx.rightPrevYear && _ctx.rightPrevYear(...args)),
},
[
createVNode$1(_component_el_icon, null, {
default: withCtx(() => [
createVNode$1(_component_d_arrow_left),
]),
_: 1,
}),
],
10,
_hoisted_18$15
))
: createCommentVNode('v-if', true),
_ctx.unlinkPanels
? (openBlock(),
createElementBlock(
'button',
{
key: 1,
type: 'button',
disabled: !_ctx.enableMonthArrow,
class: normalizeClass([
{ 'is-disabled': !_ctx.enableMonthArrow },
'el-picker-panel__icon-btn arrow-left',
]),
onClick:
_cache[15] ||
(_cache[15] = (...args) =>
_ctx.rightPrevMonth &&
_ctx.rightPrevMonth(...args)),
},
[
createVNode$1(_component_el_icon, null, {
default: withCtx(() => [
createVNode$1(_component_arrow_left),
]),
_: 1,
}),
],
10,
_hoisted_19$10
))
: createCommentVNode('v-if', true),
createElementVNode(
'button',
{
type: 'button',
class: 'el-picker-panel__icon-btn d-arrow-right',
onClick:
_cache[16] ||
(_cache[16] = (...args) =>
_ctx.rightNextYear && _ctx.rightNextYear(...args)),
},
[
createVNode$1(_component_el_icon, null, {
default: withCtx(() => [
createVNode$1(_component_d_arrow_right),
]),
_: 1,
}),
]
),
createElementVNode(
'button',
{
type: 'button',
class: 'el-picker-panel__icon-btn arrow-right',
onClick:
_cache[17] ||
(_cache[17] = (...args) =>
_ctx.rightNextMonth && _ctx.rightNextMonth(...args)),
},
[
createVNode$1(_component_el_icon, null, {
default: withCtx(() => [
createVNode$1(_component_arrow_right),
]),
_: 1,
}),
]
),
createElementVNode(
'div',
null,
toDisplayString$1(_ctx.rightLabel),
1
),
]),
createVNode$1(
_component_date_table,
{
'selection-mode': 'range',
date: _ctx.rightDate,
'min-date': _ctx.minDate,
'max-date': _ctx.maxDate,
'range-state': _ctx.rangeState,
'disabled-date': _ctx.disabledDate,
'cell-class-name': _ctx.cellClassName,
onChangerange: _ctx.handleChangeRange,
onPick: _ctx.handleRangePick,
onSelect: _ctx.onSelect,
},
null,
8,
[
'date',
'min-date',
'max-date',
'range-state',
'disabled-date',
'cell-class-name',
'onChangerange',
'onPick',
'onSelect',
]
),
]),
]),
]),
_ctx.showTime
? (openBlock(),
createElementBlock('div', _hoisted_20$W, [
_ctx.clearable
? (openBlock(),
createBlock(
_component_el_button,
{
key: 0,
size: 'small',
type: 'text',
class: 'el-picker-panel__link-btn',
onClick: _ctx.handleClear,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx.t('el.datepicker.clear')),
1
),
]),
_: 1,
},
8,
['onClick']
))
: createCommentVNode('v-if', true),
createVNode$1(
_component_el_button,
{
plain: '',
size: 'small',
class: 'el-picker-panel__link-btn',
disabled: _ctx.btnDisabled,
onClick:
_cache[18] ||
(_cache[18] = ($event) => _ctx.handleConfirm(false)),
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx.t('el.datepicker.confirm')),
1
),
]),
_: 1,
},
8,
['disabled']
),
]))
: createCommentVNode('v-if', true),
],
2
)
)
}
var DateRangePickPanel = /* @__PURE__ */ _export_sfc$1(_sfc_main$8p, [
['render', _sfc_render$1a],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/panel-date-range.vue',
],
])
const _sfc_main$8o = defineComponent({
components: {
MonthTable,
ElIcon,
DArrowLeft: dArrowLeft,
DArrowRight: dArrowRight,
},
props: {
unlinkPanels: Boolean,
parsedValue: {
type: Array,
},
},
emits: ['pick', 'set-picker-option'],
setup(props2, ctx) {
const { t: t3, lang } = useLocale()
const leftDate = ref(dayjs().locale(lang.value))
const rightDate = ref(dayjs().locale(lang.value).add(1, 'year'))
const hasShortcuts = computed(() => !!shortcuts.length)
const handleShortcutClick = (shortcut) => {
const shortcutValues =
typeof shortcut.value === 'function' ? shortcut.value() : shortcut.value
if (shortcutValues) {
ctx.emit('pick', [
dayjs(shortcutValues[0]).locale(lang.value),
dayjs(shortcutValues[1]).locale(lang.value),
])
return
}
if (shortcut.onClick) {
shortcut.onClick(ctx)
}
}
const leftPrevYear = () => {
leftDate.value = leftDate.value.subtract(1, 'year')
if (!props2.unlinkPanels) {
rightDate.value = rightDate.value.subtract(1, 'year')
}
}
const rightNextYear = () => {
if (!props2.unlinkPanels) {
leftDate.value = leftDate.value.add(1, 'year')
}
rightDate.value = rightDate.value.add(1, 'year')
}
const leftNextYear = () => {
leftDate.value = leftDate.value.add(1, 'year')
}
const rightPrevYear = () => {
rightDate.value = rightDate.value.subtract(1, 'year')
}
const leftLabel = computed(() => {
return `${leftDate.value.year()} ${t3('el.datepicker.year')}`
})
const rightLabel = computed(() => {
return `${rightDate.value.year()} ${t3('el.datepicker.year')}`
})
const leftYear = computed(() => {
return leftDate.value.year()
})
const rightYear = computed(() => {
return rightDate.value.year() === leftDate.value.year()
? leftDate.value.year() + 1
: rightDate.value.year()
})
const enableYearArrow = computed(() => {
return props2.unlinkPanels && rightYear.value > leftYear.value + 1
})
const minDate = ref(null)
const maxDate = ref(null)
const rangeState = ref({
endDate: null,
selecting: false,
})
const handleChangeRange = (val2) => {
rangeState.value = val2
}
const handleRangePick = (val2, close2 = true) => {
const minDate_ = val2.minDate
const maxDate_ = val2.maxDate
if (maxDate.value === maxDate_ && minDate.value === minDate_) {
return
}
maxDate.value = maxDate_
minDate.value = minDate_
if (!close2) return
handleConfirm()
}
const isValidValue = (value2) => {
return (
Array.isArray(value2) &&
value2 &&
value2[0] &&
value2[1] &&
value2[0].valueOf() <= value2[1].valueOf()
)
}
const handleConfirm = (visible = false) => {
if (isValidValue([minDate.value, maxDate.value])) {
ctx.emit('pick', [minDate.value, maxDate.value], visible)
}
}
const onSelect = (selecting) => {
rangeState.value.selecting = selecting
if (!selecting) {
rangeState.value.endDate = null
}
}
const formatToString = (value2) => {
return value2.map((_2) => _2.format(format2))
}
const getDefaultValue = () => {
let start2
if (Array.isArray(defaultValue.value)) {
const left2 = dayjs(defaultValue.value[0])
let right2 = dayjs(defaultValue.value[1])
if (!props2.unlinkPanels) {
right2 = left2.add(1, 'year')
}
return [left2, right2]
} else if (defaultValue.value) {
start2 = dayjs(defaultValue.value)
} else {
start2 = dayjs()
}
start2 = start2.locale(lang.value)
return [start2, start2.add(1, 'year')]
}
ctx.emit('set-picker-option', ['formatToString', formatToString])
const pickerBase = inject('EP_PICKER_BASE')
const { shortcuts, disabledDate, format: format2 } = pickerBase.props
const defaultValue = toRef(pickerBase.props, 'defaultValue')
watch$1(
() => defaultValue.value,
(val2) => {
if (val2) {
const defaultArr = getDefaultValue()
leftDate.value = defaultArr[0]
rightDate.value = defaultArr[1]
}
},
{ immediate: true }
)
watch$1(
() => props2.parsedValue,
(newVal) => {
if (newVal && newVal.length === 2) {
minDate.value = newVal[0]
maxDate.value = newVal[1]
leftDate.value = minDate.value
if (props2.unlinkPanels && maxDate.value) {
const minDateYear = minDate.value.year()
const maxDateYear = maxDate.value.year()
rightDate.value =
minDateYear === maxDateYear
? maxDate.value.add(1, 'year')
: maxDate.value
} else {
rightDate.value = leftDate.value.add(1, 'year')
}
} else {
const defaultArr = getDefaultValue()
minDate.value = null
maxDate.value = null
leftDate.value = defaultArr[0]
rightDate.value = defaultArr[1]
}
},
{ immediate: true }
)
return {
shortcuts,
disabledDate,
onSelect,
handleRangePick,
rangeState,
handleChangeRange,
minDate,
maxDate,
enableYearArrow,
leftLabel,
rightLabel,
leftNextYear,
leftPrevYear,
rightNextYear,
rightPrevYear,
t: t3,
leftDate,
rightDate,
hasShortcuts,
handleShortcutClick,
}
},
})
const _hoisted_1$6B = { class: 'el-picker-panel__body-wrapper' }
const _hoisted_2$5i = {
key: 0,
class: 'el-picker-panel__sidebar',
}
const _hoisted_3$4G = ['onClick']
const _hoisted_4$42 = { class: 'el-picker-panel__body' }
const _hoisted_5$3D = {
class: 'el-picker-panel__content el-date-range-picker__content is-left',
}
const _hoisted_6$3c = { class: 'el-date-range-picker__header' }
const _hoisted_7$2Q = ['disabled']
const _hoisted_8$2w = {
class: 'el-picker-panel__content el-date-range-picker__content is-right',
}
const _hoisted_9$2k = { class: 'el-date-range-picker__header' }
const _hoisted_10$26 = ['disabled']
function _sfc_render$19(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_d_arrow_left = resolveComponent('d-arrow-left')
const _component_el_icon = resolveComponent('el-icon')
const _component_d_arrow_right = resolveComponent('d-arrow-right')
const _component_month_table = resolveComponent('month-table')
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'el-picker-panel el-date-range-picker',
[
{
'has-sidebar': _ctx.$slots.sidebar || _ctx.hasShortcuts,
},
],
]),
},
[
createElementVNode('div', _hoisted_1$6B, [
renderSlot(_ctx.$slots, 'sidebar', {
class: 'el-picker-panel__sidebar',
}),
_ctx.hasShortcuts
? (openBlock(),
createElementBlock('div', _hoisted_2$5i, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.shortcuts, (shortcut, key2) => {
return (
openBlock(),
createElementBlock(
'button',
{
key: key2,
type: 'button',
class: 'el-picker-panel__shortcut',
onClick: ($event) =>
_ctx.handleShortcutClick(shortcut),
},
toDisplayString$1(shortcut.text),
9,
_hoisted_3$4G
)
)
}),
128
)),
]))
: createCommentVNode('v-if', true),
createElementVNode('div', _hoisted_4$42, [
createElementVNode('div', _hoisted_5$3D, [
createElementVNode('div', _hoisted_6$3c, [
createElementVNode(
'button',
{
type: 'button',
class: 'el-picker-panel__icon-btn d-arrow-left',
onClick:
_cache[0] ||
(_cache[0] = (...args) =>
_ctx.leftPrevYear && _ctx.leftPrevYear(...args)),
},
[
createVNode$1(_component_el_icon, null, {
default: withCtx(() => [
createVNode$1(_component_d_arrow_left),
]),
_: 1,
}),
]
),
_ctx.unlinkPanels
? (openBlock(),
createElementBlock(
'button',
{
key: 0,
type: 'button',
disabled: !_ctx.enableYearArrow,
class: normalizeClass([
{ 'is-disabled': !_ctx.enableYearArrow },
'el-picker-panel__icon-btn d-arrow-right',
]),
onClick:
_cache[1] ||
(_cache[1] = (...args) =>
_ctx.leftNextYear && _ctx.leftNextYear(...args)),
},
[
createVNode$1(_component_el_icon, null, {
default: withCtx(() => [
createVNode$1(_component_d_arrow_right),
]),
_: 1,
}),
],
10,
_hoisted_7$2Q
))
: createCommentVNode('v-if', true),
createElementVNode(
'div',
null,
toDisplayString$1(_ctx.leftLabel),
1
),
]),
createVNode$1(
_component_month_table,
{
'selection-mode': 'range',
date: _ctx.leftDate,
'min-date': _ctx.minDate,
'max-date': _ctx.maxDate,
'range-state': _ctx.rangeState,
'disabled-date': _ctx.disabledDate,
onChangerange: _ctx.handleChangeRange,
onPick: _ctx.handleRangePick,
onSelect: _ctx.onSelect,
},
null,
8,
[
'date',
'min-date',
'max-date',
'range-state',
'disabled-date',
'onChangerange',
'onPick',
'onSelect',
]
),
]),
createElementVNode('div', _hoisted_8$2w, [
createElementVNode('div', _hoisted_9$2k, [
_ctx.unlinkPanels
? (openBlock(),
createElementBlock(
'button',
{
key: 0,
type: 'button',
disabled: !_ctx.enableYearArrow,
class: normalizeClass([
{ 'is-disabled': !_ctx.enableYearArrow },
'el-picker-panel__icon-btn d-arrow-left',
]),
onClick:
_cache[2] ||
(_cache[2] = (...args) =>
_ctx.rightPrevYear && _ctx.rightPrevYear(...args)),
},
[
createVNode$1(_component_el_icon, null, {
default: withCtx(() => [
createVNode$1(_component_d_arrow_left),
]),
_: 1,
}),
],
10,
_hoisted_10$26
))
: createCommentVNode('v-if', true),
createElementVNode(
'button',
{
type: 'button',
class: 'el-picker-panel__icon-btn d-arrow-right',
onClick:
_cache[3] ||
(_cache[3] = (...args) =>
_ctx.rightNextYear && _ctx.rightNextYear(...args)),
},
[
createVNode$1(_component_el_icon, null, {
default: withCtx(() => [
createVNode$1(_component_d_arrow_right),
]),
_: 1,
}),
]
),
createElementVNode(
'div',
null,
toDisplayString$1(_ctx.rightLabel),
1
),
]),
createVNode$1(
_component_month_table,
{
'selection-mode': 'range',
date: _ctx.rightDate,
'min-date': _ctx.minDate,
'max-date': _ctx.maxDate,
'range-state': _ctx.rangeState,
'disabled-date': _ctx.disabledDate,
onChangerange: _ctx.handleChangeRange,
onPick: _ctx.handleRangePick,
onSelect: _ctx.onSelect,
},
null,
8,
[
'date',
'min-date',
'max-date',
'range-state',
'disabled-date',
'onChangerange',
'onPick',
'onSelect',
]
),
]),
]),
]),
],
2
)
)
}
var MonthRangePickPanel = /* @__PURE__ */ _export_sfc$1(_sfc_main$8o, [
['render', _sfc_render$19],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/panel-month-range.vue',
],
])
dayjs.extend(localeData)
dayjs.extend(advancedFormat)
dayjs.extend(customParseFormat)
dayjs.extend(weekOfYear)
dayjs.extend(weekYear)
dayjs.extend(dayOfYear)
dayjs.extend(isSameOrAfter)
dayjs.extend(isSameOrBefore)
const getPanel = function (type4) {
if (type4 === 'daterange' || type4 === 'datetimerange') {
return DateRangePickPanel
} else if (type4 === 'monthrange') {
return MonthRangePickPanel
}
return DatePickPanel
}
var DatePicker = defineComponent({
name: 'ElDatePicker',
install: null,
props: {
...timePickerDefaultProps,
type: {
type: String,
default: 'date',
},
},
emits: ['update:modelValue'],
setup(props2, ctx) {
provide('ElPopperOptions', props2.popperOptions)
provide(ROOT_PICKER_INJECTION_KEY, {
ctx,
})
const commonPicker = ref(null)
const refProps = {
...props2,
focus: (focusStartInput = true) => {
var _a2
;(_a2 = commonPicker.value) == null
? void 0
: _a2.focus(focusStartInput)
},
}
ctx.expose(refProps)
return () => {
var _a2
const format2 =
(_a2 = props2.format) != null
? _a2
: DEFAULT_FORMATS_DATEPICKER[props2.type] || DEFAULT_FORMATS_DATE
return h$4(
CommonPicker,
{
...props2,
format: format2,
type: props2.type,
ref: commonPicker,
'onUpdate:modelValue': (value2) =>
ctx.emit('update:modelValue', value2),
},
{
default: (scopedProps) => h$4(getPanel(props2.type), scopedProps),
'range-separator': () => renderSlot(ctx.slots, 'range-separator'),
}
)
}
},
})
const _DatePicker = DatePicker
_DatePicker.install = (app2) => {
app2.component(_DatePicker.name, _DatePicker)
}
const ElDatePicker = _DatePicker
const elDescriptionsKey = 'elDescriptions'
var DescriptionsCell = defineComponent({
name: 'ElDescriptionsCell',
props: {
cell: {
type: Object,
},
tag: {
type: String,
},
type: {
type: String,
},
},
setup() {
const descriptions = inject(elDescriptionsKey, {})
return {
descriptions,
}
},
render() {
var _a2, _b2, _c2, _d, _e, _f
const item2 = getNormalizedProps(this.cell)
const { border, direction: direction2 } = this.descriptions
const isVertical = direction2 === 'vertical'
const label =
((_c2 =
(_b2 = (_a2 = this.cell) == null ? void 0 : _a2.children) == null
? void 0
: _b2.label) == null
? void 0
: _c2.call(_b2)) || item2.label
const content2 =
(_f =
(_e = (_d = this.cell) == null ? void 0 : _d.children) == null
? void 0
: _e.default) == null
? void 0
: _f.call(_e)
const span = item2.span
const align = item2.align ? `is-${item2.align}` : ''
const labelAlign = item2.labelAlign ? `is-${item2.labelAlign}` : align
const className = item2.className
const labelClassName = item2.labelClassName
const style2 = {
width: addUnit(item2.width),
minWidth: addUnit(item2.minWidth),
}
const ns = useNamespace('descriptions')
switch (this.type) {
case 'label':
return h$4(
this.tag,
{
style: style2,
class: [
ns.e('cell'),
ns.e('label'),
ns.is('bordered-label', border),
ns.is('vertical-label', isVertical),
labelAlign,
labelClassName,
],
colSpan: isVertical ? span : 1,
},
label
)
case 'content':
return h$4(
this.tag,
{
style: style2,
class: [
ns.e('cell'),
ns.e('content'),
ns.is('bordered-content', border),
ns.is('vertical-content', isVertical),
align,
className,
],
colSpan: isVertical ? span : span * 2 - 1,
},
content2
)
default:
return h$4(
'td',
{
style: style2,
class: [ns.e('cell'), align],
colSpan: span,
},
[
h$4(
'span',
{
class: [ns.e('label'), labelClassName],
},
label
),
h$4(
'span',
{
class: [ns.e('content'), className],
},
content2
),
]
)
}
},
})
const _sfc_main$8n = defineComponent({
name: 'ElDescriptionsRow',
components: {
[DescriptionsCell.name]: DescriptionsCell,
},
props: {
row: {
type: Array,
},
},
setup() {
const descriptions = inject(elDescriptionsKey, {})
return {
descriptions,
}
},
})
const _hoisted_1$6A = { key: 1 }
function _sfc_render$18(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_descriptions_cell = resolveComponent(
'el-descriptions-cell'
)
return _ctx.descriptions.direction === 'vertical'
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
createElementVNode('tr', null, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.row, (cell, index2) => {
return (
openBlock(),
createBlock(
_component_el_descriptions_cell,
{
key: `tr1-${index2}`,
cell,
tag: 'th',
type: 'label',
},
null,
8,
['cell']
)
)
}),
128
)),
]),
createElementVNode('tr', null, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.row, (cell, index2) => {
return (
openBlock(),
createBlock(
_component_el_descriptions_cell,
{
key: `tr2-${index2}`,
cell,
tag: 'td',
type: 'content',
},
null,
8,
['cell']
)
)
}),
128
)),
]),
],
64
))
: (openBlock(),
createElementBlock('tr', _hoisted_1$6A, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.row, (cell, index2) => {
return (
openBlock(),
createElementBlock(
Fragment,
{
key: `tr3-${index2}`,
},
[
_ctx.descriptions.border
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
createVNode$1(
_component_el_descriptions_cell,
{
cell,
tag: 'td',
type: 'label',
},
null,
8,
['cell']
),
createVNode$1(
_component_el_descriptions_cell,
{
cell,
tag: 'td',
type: 'content',
},
null,
8,
['cell']
),
],
64
))
: (openBlock(),
createBlock(
_component_el_descriptions_cell,
{
key: 1,
cell,
tag: 'td',
type: 'both',
},
null,
8,
['cell']
)),
],
64
)
)
}),
128
)),
]))
}
var DescriptionsRow = /* @__PURE__ */ _export_sfc$1(_sfc_main$8n, [
['render', _sfc_render$18],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/descriptions/src/descriptions-row.vue',
],
])
const _sfc_main$8m = defineComponent({
name: 'ElDescriptions',
components: {
[DescriptionsRow.name]: DescriptionsRow,
},
props: {
border: {
type: Boolean,
default: false,
},
column: {
type: Number,
default: 3,
},
direction: {
type: String,
default: 'horizontal',
},
size: {
type: String,
validator: isValidComponentSize,
},
title: {
type: String,
default: '',
},
extra: {
type: String,
default: '',
},
},
setup(props2, { slots }) {
provide(elDescriptionsKey, props2)
const descriptionsSize = useSize$1()
const ns = useNamespace('descriptions')
const descriptionKls = computed(() => [
ns.b(),
ns.is(ns.m(descriptionsSize.value), !!descriptionsSize.value),
])
const flattedChildren = (children) => {
const temp = Array.isArray(children) ? children : [children]
const res = []
temp.forEach((child) => {
if (Array.isArray(child.children)) {
res.push(...flattedChildren(child.children))
} else {
res.push(child)
}
})
return res
}
const filledNode = (node2, span, count2, isLast = false) => {
if (!node2.props) {
node2.props = {}
}
if (span > count2) {
node2.props.span = count2
}
if (isLast) {
node2.props.span = span
}
return node2
}
const getRows = () => {
var _a2
const children = flattedChildren(
(_a2 = slots.default) == null ? void 0 : _a2.call(slots)
).filter((node2) => {
var _a22
return (
((_a22 = node2 == null ? void 0 : node2.type) == null
? void 0
: _a22.name) === 'ElDescriptionsItem'
)
})
const rows = []
let temp = []
let count2 = props2.column
let totalSpan = 0
children.forEach((node2, index2) => {
var _a22
const span = ((_a22 = node2.props) == null ? void 0 : _a22.span) || 1
if (index2 < children.length - 1) {
totalSpan += span > count2 ? count2 : span
}
if (index2 === children.length - 1) {
const lastSpan = props2.column - (totalSpan % props2.column)
temp.push(filledNode(node2, lastSpan, count2, true))
rows.push(temp)
return
}
if (span < count2) {
count2 -= span
temp.push(node2)
} else {
temp.push(filledNode(node2, span, count2))
rows.push(temp)
count2 = props2.column
temp = []
}
})
return rows
}
return {
descriptionKls,
getRows,
ns,
}
},
})
function _sfc_render$17(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_descriptions_row = resolveComponent('el-descriptions-row')
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass(_ctx.descriptionKls),
},
[
_ctx.title || _ctx.extra || _ctx.$slots.title || _ctx.$slots.extra
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass(_ctx.ns.e('header')),
},
[
createElementVNode(
'div',
{
class: normalizeClass(_ctx.ns.e('title')),
},
[
renderSlot(_ctx.$slots, 'title', {}, () => [
createTextVNode(toDisplayString$1(_ctx.title), 1),
]),
],
2
),
createElementVNode(
'div',
{
class: normalizeClass(_ctx.ns.e('extra')),
},
[
renderSlot(_ctx.$slots, 'extra', {}, () => [
createTextVNode(toDisplayString$1(_ctx.extra), 1),
]),
],
2
),
],
2
))
: createCommentVNode('v-if', true),
createElementVNode(
'div',
{
class: normalizeClass(_ctx.ns.e('body')),
},
[
createElementVNode(
'table',
{
class: normalizeClass([
_ctx.ns.e('table'),
_ctx.ns.is('bordered', _ctx.border),
]),
},
[
createElementVNode('tbody', null, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.getRows(), (row, index2) => {
return (
openBlock(),
createBlock(
_component_el_descriptions_row,
{
key: index2,
row,
},
null,
8,
['row']
)
)
}),
128
)),
]),
],
2
),
],
2
),
],
2
)
)
}
var Descriptions = /* @__PURE__ */ _export_sfc$1(_sfc_main$8m, [
['render', _sfc_render$17],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/descriptions/src/index.vue',
],
])
var DescriptionsItem = defineComponent({
name: 'ElDescriptionsItem',
props: {
label: {
type: String,
default: '',
},
span: {
type: Number,
default: 1,
},
width: {
type: [String, Number],
default: '',
},
minWidth: {
type: [String, Number],
default: '',
},
align: {
type: String,
default: 'left',
},
labelAlign: {
type: String,
default: '',
},
className: {
type: String,
default: '',
},
labelClassName: {
type: String,
default: '',
},
},
})
const ElDescriptions = withInstall(Descriptions, {
DescriptionsItem,
})
const ElDescriptionsItem = withNoopInstall(DescriptionsItem)
const overlayProps = buildProps({
mask: {
type: Boolean,
default: true,
},
customMaskEvent: {
type: Boolean,
default: false,
},
overlayClass: {
type: definePropType([String, Array, Object]),
},
zIndex: {
type: definePropType([String, Number]),
},
})
const overlayEmits = {
click: (evt) => evt instanceof MouseEvent,
}
var Overlay = defineComponent({
name: 'ElOverlay',
props: overlayProps,
emits: overlayEmits,
setup(props2, { slots, emit: emit2 }) {
const ns = useNamespace('overlay')
const onMaskClick = (e2) => {
emit2('click', e2)
}
const { onClick, onMousedown, onMouseup } = useSameTarget(
props2.customMaskEvent ? void 0 : onMaskClick
)
return () => {
return props2.mask
? createVNode$1(
'div',
{
class: [ns.b(), props2.overlayClass],
style: {
zIndex: props2.zIndex,
},
onClick,
onMousedown,
onMouseup,
},
[renderSlot(slots, 'default')],
PatchFlags.STYLE | PatchFlags.CLASS | PatchFlags.PROPS,
['onClick', 'onMouseup', 'onMousedown']
)
: h$4(
'div',
{
class: props2.overlayClass,
style: {
zIndex: props2.zIndex,
position: 'fixed',
top: '0px',
right: '0px',
bottom: '0px',
left: '0px',
},
},
[renderSlot(slots, 'default')]
)
}
},
})
const ElOverlay = Overlay
const dialogContentProps = buildProps({
center: {
type: Boolean,
default: false,
},
closeIcon: {
type: iconPropType,
default: '',
},
customClass: {
type: String,
default: '',
},
draggable: {
type: Boolean,
default: false,
},
fullscreen: {
type: Boolean,
default: false,
},
showClose: {
type: Boolean,
default: true,
},
title: {
type: String,
default: '',
},
})
const dialogContentEmits = {
close: () => true,
}
const _hoisted_1$6z = ['aria-label']
const __default__$q = { name: 'ElDialogContent' }
const _sfc_main$8l = /* @__PURE__ */ defineComponent({
...__default__$q,
props: dialogContentProps,
emits: dialogContentEmits,
setup(__props2) {
const { Close } = CloseComponents
const {
dialogRef,
headerRef,
ns,
style: style2,
} = inject(dialogInjectionKey)
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
ref_key: 'dialogRef',
ref: dialogRef,
class: normalizeClass([
unref(ns).b(),
unref(ns).is('fullscreen', _ctx.fullscreen),
unref(ns).is('draggable', _ctx.draggable),
{ [unref(ns).m('center')]: _ctx.center },
_ctx.customClass,
]),
'aria-modal': 'true',
role: 'dialog',
'aria-label': _ctx.title || 'dialog',
style: normalizeStyle$1(unref(style2)),
onClick:
_cache[1] || (_cache[1] = withModifiers(() => {}, ['stop'])),
},
[
createElementVNode(
'div',
{
ref_key: 'headerRef',
ref: headerRef,
class: normalizeClass(unref(ns).e('header')),
},
[
renderSlot(_ctx.$slots, 'title', {}, () => [
createElementVNode(
'span',
{
class: normalizeClass(unref(ns).e('title')),
},
toDisplayString$1(_ctx.title),
3
),
]),
],
2
),
createElementVNode(
'div',
{
class: normalizeClass(unref(ns).e('body')),
},
[renderSlot(_ctx.$slots, 'default')],
2
),
_ctx.$slots.footer
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass(unref(ns).e('footer')),
},
[renderSlot(_ctx.$slots, 'footer')],
2
))
: createCommentVNode('v-if', true),
_ctx.showClose
? (openBlock(),
createElementBlock(
'button',
{
key: 1,
'aria-label': 'close',
class: normalizeClass(unref(ns).e('headerbtn')),
type: 'button',
onClick:
_cache[0] ||
(_cache[0] = ($event) => _ctx.$emit('close')),
},
[
createVNode$1(
unref(ElIcon),
{
class: normalizeClass(unref(ns).e('close')),
},
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(
_ctx.closeIcon || unref(Close)
)
)),
]),
_: 1,
},
8,
['class']
),
],
2
))
: createCommentVNode('v-if', true),
],
14,
_hoisted_1$6z
)
)
}
},
})
var ElDialogContent = /* @__PURE__ */ _export_sfc$1(_sfc_main$8l, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/dialog/src/dialog-content.vue',
],
])
const dialogProps = buildProps({
...dialogContentProps,
appendToBody: {
type: Boolean,
default: false,
},
beforeClose: {
type: definePropType(Function),
},
destroyOnClose: {
type: Boolean,
default: false,
},
closeOnClickModal: {
type: Boolean,
default: true,
},
closeOnPressEscape: {
type: Boolean,
default: true,
},
lockScroll: {
type: Boolean,
default: true,
},
modal: {
type: Boolean,
default: true,
},
openDelay: {
type: Number,
default: 0,
},
closeDelay: {
type: Number,
default: 0,
},
top: {
type: String,
},
modelValue: {
type: Boolean,
required: true,
},
modalClass: String,
width: {
type: [String, Number],
},
zIndex: {
type: Number,
},
trapFocus: {
type: Boolean,
default: false,
},
})
const dialogEmits = {
open: () => true,
opened: () => true,
close: () => true,
closed: () => true,
[UPDATE_MODEL_EVENT]: (value2) => isBoolean$5(value2),
openAutoFocus: () => true,
closeAutoFocus: () => true,
}
const useDialog = (props2, targetRef) => {
const instance = getCurrentInstance()
const emit2 = instance.emit
const { nextZIndex: nextZIndex2 } = useZIndex()
let lastPosition = ''
const visible = ref(false)
const closed = ref(false)
const rendered = ref(false)
const zIndex2 = ref(props2.zIndex || nextZIndex2())
let openTimer = void 0
let closeTimer = void 0
const normalizeWidth = computed(() =>
isNumber$h(props2.width) ? `${props2.width}px` : props2.width
)
const style2 = computed(() => {
const style22 = {}
const varPrefix = `--el-dialog`
if (!props2.fullscreen) {
if (props2.top) {
style22[`${varPrefix}-margin-top`] = props2.top
}
if (props2.width) {
style22[`${varPrefix}-width`] = normalizeWidth.value
}
}
return style22
})
function afterEnter() {
emit2('opened')
}
function afterLeave() {
emit2('closed')
emit2(UPDATE_MODEL_EVENT, false)
if (props2.destroyOnClose) {
rendered.value = false
}
}
function beforeLeave() {
emit2('close')
}
function open2() {
closeTimer == null ? void 0 : closeTimer()
openTimer == null ? void 0 : openTimer()
if (props2.openDelay && props2.openDelay > 0) {
;({ stop: openTimer } = useTimeoutFn$1(() => doOpen(), props2.openDelay))
} else {
doOpen()
}
}
function close2() {
openTimer == null ? void 0 : openTimer()
closeTimer == null ? void 0 : closeTimer()
if (props2.closeDelay && props2.closeDelay > 0) {
;({ stop: closeTimer } = useTimeoutFn$1(
() => doClose(),
props2.closeDelay
))
} else {
doClose()
}
}
function handleClose() {
function hide2(shouldCancel) {
if (shouldCancel) return
closed.value = true
visible.value = false
}
if (props2.beforeClose) {
props2.beforeClose(hide2)
} else {
close2()
}
}
function onModalClick() {
if (props2.closeOnClickModal) {
handleClose()
}
}
function doOpen() {
if (!isClient$1) return
visible.value = true
}
function doClose() {
visible.value = false
}
if (props2.lockScroll) {
useLockscreen(visible)
}
if (props2.closeOnPressEscape) {
useModal(
{
handleClose,
},
visible
)
}
useRestoreActive(visible)
watch$1(
() => props2.modelValue,
(val2) => {
if (val2) {
closed.value = false
open2()
rendered.value = true
emit2('open')
zIndex2.value = props2.zIndex ? zIndex2.value++ : nextZIndex2()
nextTick(() => {
if (targetRef.value) {
targetRef.value.scrollTop = 0
}
})
} else {
if (visible.value) {
close2()
}
}
}
)
watch$1(
() => props2.fullscreen,
(val2) => {
if (!targetRef.value) return
if (val2) {
lastPosition = targetRef.value.style.transform
targetRef.value.style.transform = ''
} else {
targetRef.value.style.transform = lastPosition
}
}
)
onMounted(() => {
if (props2.modelValue) {
visible.value = true
rendered.value = true
open2()
}
})
return {
afterEnter,
afterLeave,
beforeLeave,
handleClose,
onModalClick,
close: close2,
doClose,
closed,
style: style2,
rendered,
visible,
zIndex: zIndex2,
}
}
const __default__$p = {
name: 'ElDialog',
}
const _sfc_main$8k = /* @__PURE__ */ defineComponent({
...__default__$p,
props: dialogProps,
emits: dialogEmits,
setup(__props2, { expose }) {
const props2 = __props2
const ns = useNamespace('dialog')
const dialogRef = ref()
const headerRef = ref()
const {
visible,
style: style2,
rendered,
zIndex: zIndex2,
afterEnter,
afterLeave,
beforeLeave,
handleClose,
onModalClick,
} = useDialog(props2, dialogRef)
provide(dialogInjectionKey, {
dialogRef,
headerRef,
ns,
rendered,
style: style2,
})
const overlayEvent = useSameTarget(onModalClick)
const draggable2 = computed(() => props2.draggable && !props2.fullscreen)
useDraggable$1(dialogRef, headerRef, draggable2)
expose({
visible,
})
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
Teleport,
{
to: 'body',
disabled: !_ctx.appendToBody,
},
[
createVNode$1(
Transition,
{
name: 'dialog-fade',
onAfterEnter: unref(afterEnter),
onAfterLeave: unref(afterLeave),
onBeforeLeave: unref(beforeLeave),
},
{
default: withCtx(() => [
withDirectives(
createVNode$1(
unref(ElOverlay),
{
'custom-mask-event': '',
mask: _ctx.modal,
'overlay-class': _ctx.modalClass,
'z-index': unref(zIndex2),
},
{
default: withCtx(() => [
createElementVNode(
'div',
{
class: normalizeClass(
`${unref(ns).namespace.value}-overlay-dialog`
),
onClick:
_cache[0] ||
(_cache[0] = (...args) =>
unref(overlayEvent).onClick &&
unref(overlayEvent).onClick(...args)),
onMousedown:
_cache[1] ||
(_cache[1] = (...args) =>
unref(overlayEvent).onMousedown &&
unref(overlayEvent).onMousedown(...args)),
onMouseup:
_cache[2] ||
(_cache[2] = (...args) =>
unref(overlayEvent).onMouseup &&
unref(overlayEvent).onMouseup(...args)),
},
[
unref(rendered)
? (openBlock(),
createBlock(
ElDialogContent,
{
key: 0,
'custom-class': _ctx.customClass,
center: _ctx.center,
'close-icon': _ctx.closeIcon,
draggable: unref(draggable2),
fullscreen: _ctx.fullscreen,
'show-close': _ctx.showClose,
style: normalizeStyle$1(unref(style2)),
title: _ctx.title,
onClose: unref(handleClose),
},
createSlots(
{
title: withCtx(() => [
renderSlot(_ctx.$slots, 'title'),
]),
default: withCtx(() => [
renderSlot(_ctx.$slots, 'default'),
]),
_: 2,
},
[
_ctx.$slots.footer
? {
name: 'footer',
fn: withCtx(() => [
renderSlot(
_ctx.$slots,
'footer'
),
]),
}
: void 0,
]
),
1032,
[
'custom-class',
'center',
'close-icon',
'draggable',
'fullscreen',
'show-close',
'style',
'title',
'onClose',
]
))
: createCommentVNode('v-if', true),
],
34
),
]),
_: 3,
},
8,
['mask', 'overlay-class', 'z-index']
),
[[vShow, unref(visible)]]
),
]),
_: 3,
},
8,
['onAfterEnter', 'onAfterLeave', 'onBeforeLeave']
),
],
8,
['disabled']
)
)
}
},
})
var Dialog$5 = /* @__PURE__ */ _export_sfc$1(_sfc_main$8k, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/dialog/src/dialog.vue',
],
])
const ElDialog = withInstall(Dialog$5)
const dividerProps = buildProps({
direction: {
type: String,
values: ['horizontal', 'vertical'],
default: 'horizontal',
},
contentPosition: {
type: String,
values: ['left', 'center', 'right'],
default: 'center',
},
borderStyle: {
type: definePropType(String),
default: 'solid',
},
})
const __default__$o = {
name: 'ElDivider',
}
const _sfc_main$8j = /* @__PURE__ */ defineComponent({
...__default__$o,
props: dividerProps,
setup(__props2) {
const props2 = __props2
const ns = useNamespace('divider')
const dividerStyle = computed(() => {
return {
'--el-border-style': props2.borderStyle,
}
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([unref(ns).b(), unref(ns).m(_ctx.direction)]),
style: normalizeStyle$1(unref(dividerStyle)),
},
[
_ctx.$slots.default && _ctx.direction !== 'vertical'
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass([
unref(ns).e('text'),
unref(ns).is(_ctx.contentPosition),
]),
},
[renderSlot(_ctx.$slots, 'default')],
2
))
: createCommentVNode('v-if', true),
],
6
)
)
}
},
})
var Divider = /* @__PURE__ */ _export_sfc$1(_sfc_main$8j, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/divider/src/divider.vue',
],
])
const ElDivider = withInstall(Divider)
const drawerProps = buildProps({
...dialogProps,
direction: {
type: String,
default: 'rtl',
values: ['ltr', 'rtl', 'ttb', 'btt'],
},
size: {
type: [String, Number],
default: '30%',
},
withHeader: {
type: Boolean,
default: true,
},
modalFade: {
type: Boolean,
default: true,
},
})
const drawerEmits = dialogEmits
const _sfc_main$8i = defineComponent({
name: 'ElDrawer',
components: {
ElOverlay,
ElIcon,
Close: close$2,
},
directives: {
TrapFocus,
},
props: drawerProps,
emits: drawerEmits,
setup(props2, ctx) {
const drawerRef = ref()
const ns = useNamespace('drawer')
const isHorizontal2 = computed(
() => props2.direction === 'rtl' || props2.direction === 'ltr'
)
const drawerSize = computed(() =>
typeof props2.size === 'number' ? `${props2.size}px` : props2.size
)
return {
...useDialog(props2, ctx),
drawerRef,
isHorizontal: isHorizontal2,
drawerSize,
ns,
}
},
})
const _hoisted_1$6y = ['aria-labelledby', 'aria-label']
const _hoisted_2$5h = ['id']
const _hoisted_3$4F = ['title']
const _hoisted_4$41 = ['aria-label']
function _sfc_render$16(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_close = resolveComponent('close')
const _component_el_icon = resolveComponent('el-icon')
const _component_el_overlay = resolveComponent('el-overlay')
const _directive_trap_focus = resolveDirective('trap-focus')
return (
openBlock(),
createBlock(
Teleport,
{
to: 'body',
disabled: !_ctx.appendToBody,
},
[
createVNode$1(
Transition,
{
name: _ctx.ns.b('fade'),
onAfterEnter: _ctx.afterEnter,
onAfterLeave: _ctx.afterLeave,
onBeforeLeave: _ctx.beforeLeave,
},
{
default: withCtx(() => [
withDirectives(
createVNode$1(
_component_el_overlay,
{
mask: _ctx.modal,
'overlay-class': _ctx.modalClass,
'z-index': _ctx.zIndex,
onClick: _ctx.onModalClick,
},
{
default: withCtx(() => [
withDirectives(
(openBlock(),
createElementBlock(
'div',
{
ref: 'drawerRef',
'aria-modal': 'true',
'aria-labelledby': _ctx.ns.e('title'),
'aria-label': _ctx.title,
class: normalizeClass([
_ctx.ns.b(),
_ctx.direction,
_ctx.visible && 'open',
_ctx.customClass,
]),
style: normalizeStyle$1(
_ctx.isHorizontal
? 'width: ' + _ctx.drawerSize
: 'height: ' + _ctx.drawerSize
),
role: 'dialog',
onClick:
_cache[1] ||
(_cache[1] = withModifiers(() => {}, ['stop'])),
},
[
_ctx.withHeader
? (openBlock(),
createElementBlock(
'header',
{
key: 0,
id: _ctx.ns.e('title'),
class: normalizeClass(_ctx.ns.e('header')),
},
[
renderSlot(_ctx.$slots, 'title', {}, () => [
createElementVNode(
'span',
{
role: 'heading',
title: _ctx.title,
},
toDisplayString$1(_ctx.title),
9,
_hoisted_3$4F
),
]),
_ctx.showClose
? (openBlock(),
createElementBlock(
'button',
{
key: 0,
'aria-label':
'close ' +
(_ctx.title || 'drawer'),
class: normalizeClass(
_ctx.ns.e('close-btn')
),
type: 'button',
onClick:
_cache[0] ||
(_cache[0] = (...args) =>
_ctx.handleClose &&
_ctx.handleClose(...args)),
},
[
createVNode$1(
_component_el_icon,
{
class: normalizeClass(
_ctx.ns.e('close')
),
},
{
default: withCtx(() => [
createVNode$1(
_component_close
),
]),
_: 1,
},
8,
['class']
),
],
10,
_hoisted_4$41
))
: createCommentVNode('v-if', true),
],
10,
_hoisted_2$5h
))
: createCommentVNode('v-if', true),
_ctx.rendered
? (openBlock(),
createElementBlock(
'section',
{
key: 1,
class: normalizeClass(_ctx.ns.e('body')),
},
[renderSlot(_ctx.$slots, 'default')],
2
))
: createCommentVNode('v-if', true),
_ctx.$slots.footer
? (openBlock(),
createElementBlock(
'div',
{
key: 2,
class: normalizeClass(_ctx.ns.e('footer')),
},
[renderSlot(_ctx.$slots, 'footer')],
2
))
: createCommentVNode('v-if', true),
],
14,
_hoisted_1$6y
)),
[[_directive_trap_focus]]
),
]),
_: 3,
},
8,
['mask', 'overlay-class', 'z-index', 'onClick']
),
[[vShow, _ctx.visible]]
),
]),
_: 3,
},
8,
['name', 'onAfterEnter', 'onAfterLeave', 'onBeforeLeave']
),
],
8,
['disabled']
)
)
}
var Drawer = /* @__PURE__ */ _export_sfc$1(_sfc_main$8i, [
['render', _sfc_render$16],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/drawer/src/drawer.vue',
],
])
const ElDrawer = withInstall(Drawer)
const obtainAllFocusableElements = (element) => {
const nodes = []
const walker = document.createTreeWalker(element, NodeFilter.SHOW_ELEMENT, {
acceptNode: (node2) => {
const isHiddenInput = node2.tagName === 'INPUT' && node2.type === 'hidden'
if (node2.disabled || node2.hidden || isHiddenInput)
return NodeFilter.FILTER_SKIP
return node2.tabIndex >= 0
? NodeFilter.FILTER_ACCEPT
: NodeFilter.FILTER_SKIP
},
})
while (walker.nextNode()) nodes.push(walker.currentNode)
return nodes
}
const getVisibleElement = (elements2, container) => {
for (const element of elements2) {
if (!isHidden(element, container)) return element
}
}
const isHidden = (element, container) => {
if (getComputedStyle(element).visibility === 'hidden') return true
while (element) {
if (container && element === container) return false
if (getComputedStyle(element).display === 'none') return true
element = element.parentElement
}
return false
}
const getEdges = (container) => {
const focusable = obtainAllFocusableElements(container)
const first2 = getVisibleElement(focusable, container)
const last2 = getVisibleElement(focusable.reverse(), container)
return [first2, last2]
}
const isSelectable = (element) => {
return element instanceof HTMLInputElement && 'select' in element
}
const tryFocus = (element, shouldSelect) => {
if (element && element.focus) {
const prevFocusedElement = document.activeElement
element.focus({ preventScroll: true })
if (
element !== prevFocusedElement &&
isSelectable(element) &&
shouldSelect
) {
element.select()
}
}
}
function removeFromStack(list2, item2) {
const copy2 = [...list2]
const idx = list2.indexOf(item2)
if (idx !== -1) {
copy2.splice(idx, 1)
}
return copy2
}
const createFocusableStack = () => {
let stack = []
const push2 = (layer) => {
const currentLayer = stack[0]
if (currentLayer && layer !== currentLayer) {
currentLayer.pause()
}
stack = removeFromStack(stack, layer)
stack.unshift(layer)
}
const remove2 = (layer) => {
var _a2, _b2
stack = removeFromStack(stack, layer)
;(_b2 = (_a2 = stack[0]) == null ? void 0 : _a2.resume) == null
? void 0
: _b2.call(_a2)
}
return {
push: push2,
remove: remove2,
}
}
const focusFirstDescendant = (elements2, shouldSelect = false) => {
const prevFocusedElement = document.activeElement
for (const element of elements2) {
tryFocus(element, shouldSelect)
if (document.activeElement !== prevFocusedElement) return
}
}
const focusableStack = createFocusableStack()
const FOCUS_ON_MOUNT = 'focus-trap.focus-on-mount'
const FOCUS_ON_UNMOUNT = 'focus-trap.focus-on-unmount'
const FOCUS_ON_MOUNT_OPTS = {
cancelable: true,
bubbles: false,
}
const ON_MOUNT_FOCUS_EVT = 'mountOnFocus'
const ON_UNMOUNT_FOCUS_EVT = 'unmountOnFocus'
const FOCUS_TRAP_INJECTION_KEY = Symbol('elFocusTrap')
const _sfc_main$8h = defineComponent({
name: 'ElFocusTrap',
inheritAttrs: false,
props: {
loop: Boolean,
trapped: Boolean,
},
emits: [ON_MOUNT_FOCUS_EVT, ON_UNMOUNT_FOCUS_EVT],
setup(props2, { emit: emit2 }) {
const focusTrapRef = ref()
const forwardRef = ref(null)
let lastFocusBeforeMounted
let lastFocusAfterMounted
const focusLayer = {
paused: false,
pause() {
this.paused = true
},
resume() {
this.paused = false
},
}
const onKeydown = (e2) => {
if (!props2.loop && !props2.trapped) return
if (focusLayer.paused) return
const {
key: key2,
altKey,
ctrlKey,
metaKey,
currentTarget,
shiftKey,
} = e2
const { loop } = props2
const isTabbing =
key2 === EVENT_CODE.tab && !altKey && !ctrlKey && !metaKey
const currentFocusingEl = document.activeElement
if (isTabbing && currentFocusingEl) {
const container = currentTarget
const [first2, last2] = getEdges(container)
const isTabbable = first2 && last2
if (!isTabbable) {
if (currentFocusingEl === container) e2.preventDefault()
} else {
if (!shiftKey && currentFocusingEl === last2) {
e2.preventDefault()
if (loop) tryFocus(first2, true)
} else if (shiftKey && currentFocusingEl === first2) {
e2.preventDefault()
if (loop) tryFocus(last2, true)
}
}
}
}
provide(FOCUS_TRAP_INJECTION_KEY, {
focusTrapRef: forwardRef,
onKeydown,
})
const focusOnMount = (e2) => {
emit2(ON_MOUNT_FOCUS_EVT, e2)
}
const focusOnUnmount = (e2) => emit2(ON_UNMOUNT_FOCUS_EVT, e2)
const onFocusIn = (e2) => {
const trapContainer = unref(forwardRef)
if (focusLayer.paused || !trapContainer) return
const target2 = e2.target
if (target2 && trapContainer.contains(target2)) {
lastFocusAfterMounted = target2
} else {
tryFocus(lastFocusAfterMounted, true)
}
}
const onFocusOut = (e2) => {
const trapContainer = unref(forwardRef)
if (focusLayer.paused || !trapContainer) return
if (!trapContainer.contains(e2.relatedTarget)) {
tryFocus(lastFocusAfterMounted, true)
}
}
const cleanupDocumentListeners = () => {
document.removeEventListener('focusin', onFocusIn)
document.removeEventListener('focusout', onFocusOut)
}
onMounted(() => {
const trapContainer = unref(forwardRef)
if (trapContainer) {
focusableStack.push(focusLayer)
const prevFocusedElement = document.activeElement
lastFocusBeforeMounted = prevFocusedElement
const isPrevFocusContained = trapContainer.contains(prevFocusedElement)
if (!isPrevFocusContained) {
const mountEvent = new Event(FOCUS_ON_MOUNT, FOCUS_ON_MOUNT_OPTS)
trapContainer.addEventListener(FOCUS_ON_MOUNT, focusOnMount)
trapContainer.dispatchEvent(mountEvent)
if (!mountEvent.defaultPrevented) {
nextTick(() => {
focusFirstDescendant(
obtainAllFocusableElements(trapContainer),
true
)
if (document.activeElement === prevFocusedElement) {
tryFocus(trapContainer)
}
})
}
}
}
watch$1(
() => props2.trapped,
(trapped) => {
if (trapped) {
document.addEventListener('focusin', onFocusIn)
document.addEventListener('focusout', onFocusOut)
} else {
cleanupDocumentListeners()
}
},
{ immediate: true }
)
})
onBeforeUnmount(() => {
cleanupDocumentListeners()
const trapContainer = unref(forwardRef)
if (trapContainer) {
trapContainer.removeEventListener(FOCUS_ON_MOUNT, focusOnMount)
const unmountEvent = new Event(FOCUS_ON_UNMOUNT, FOCUS_ON_MOUNT_OPTS)
trapContainer.addEventListener(FOCUS_ON_UNMOUNT, focusOnUnmount)
trapContainer.dispatchEvent(unmountEvent)
if (!unmountEvent.defaultPrevented) {
tryFocus(
lastFocusBeforeMounted != null
? lastFocusBeforeMounted
: document.body,
true
)
}
trapContainer.removeEventListener(FOCUS_ON_UNMOUNT, focusOnMount)
focusableStack.remove(focusLayer)
}
})
return {
focusTrapRef,
forwardRef,
onKeydown,
}
},
})
function _sfc_render$15(_ctx, _cache, $props2, $setup, $data, $options) {
return renderSlot(_ctx.$slots, 'default')
}
var ElFocusTrap = /* @__PURE__ */ _export_sfc$1(_sfc_main$8h, [
['render', _sfc_render$15],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/focus-trap/src/focus-trap.vue',
],
])
const _sfc_main$8g = defineComponent({
inheritAttrs: false,
})
function _sfc_render$14(_ctx, _cache, $props2, $setup, $data, $options) {
return renderSlot(_ctx.$slots, 'default')
}
var Collection = /* @__PURE__ */ _export_sfc$1(_sfc_main$8g, [
['render', _sfc_render$14],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/collection/src/collection.vue',
],
])
const _sfc_main$8f = defineComponent({
name: 'ElCollectionItem',
inheritAttrs: false,
})
function _sfc_render$13(_ctx, _cache, $props2, $setup, $data, $options) {
return renderSlot(_ctx.$slots, 'default')
}
var CollectionItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$8f, [
['render', _sfc_render$13],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/collection/src/collection-item.vue',
],
])
const COLLECTION_ITEM_SIGN = `data-el-collection-item`
const createCollectionWithScope = (name2) => {
const COLLECTION_NAME2 = `El${name2}Collection`
const COLLECTION_ITEM_NAME = `${COLLECTION_NAME2}Item`
const COLLECTION_INJECTION_KEY2 = Symbol(COLLECTION_NAME2)
const COLLECTION_ITEM_INJECTION_KEY2 = Symbol(COLLECTION_ITEM_NAME)
const ElCollection2 = {
...Collection,
name: COLLECTION_NAME2,
setup() {
const collectionRef = ref(null)
const itemMap = /* @__PURE__ */ new Map()
const getItems = () => {
const collectionEl = unref(collectionRef)
if (!collectionEl) return []
const orderedNodes = Array.from(
collectionEl.querySelectorAll(`[${COLLECTION_ITEM_SIGN}]`)
)
const items = [...itemMap.values()]
const orderedItems = items.sort(
(a2, b2) =>
orderedNodes.indexOf(a2.ref) - orderedNodes.indexOf(b2.ref)
)
return orderedItems
}
provide(COLLECTION_INJECTION_KEY2, {
itemMap,
getItems,
collectionRef,
})
},
}
const ElCollectionItem2 = {
...CollectionItem,
name: COLLECTION_ITEM_NAME,
setup(_2, { attrs }) {
const collectionItemRef = ref(null)
const collectionInjection = inject(COLLECTION_INJECTION_KEY2, void 0)
provide(COLLECTION_ITEM_INJECTION_KEY2, {
collectionItemRef,
})
onMounted(() => {
const collectionItemEl = unref(collectionItemRef)
if (collectionItemEl) {
collectionInjection.itemMap.set(collectionItemEl, {
ref: collectionItemEl,
...attrs,
})
}
})
onBeforeUnmount(() => {
const collectionItemEl = unref(collectionItemRef)
collectionInjection.itemMap.delete(collectionItemEl)
})
},
}
return {
COLLECTION_INJECTION_KEY: COLLECTION_INJECTION_KEY2,
COLLECTION_ITEM_INJECTION_KEY: COLLECTION_ITEM_INJECTION_KEY2,
ElCollection: ElCollection2,
ElCollectionItem: ElCollectionItem2,
}
}
const rovingFocusGroupProps = buildProps({
style: { type: definePropType([String, Array, Object]) },
currentTabId: {
type: definePropType(String),
},
defaultCurrentTabId: String,
loop: Boolean,
dir: {
type: String,
values: ['ltr', 'rtl'],
default: 'ltr',
},
orientation: {
type: definePropType(String),
},
onBlur: Function,
onFocus: Function,
onMousedown: Function,
})
const {
ElCollection: ElCollection$1,
ElCollectionItem: ElCollectionItem$1,
COLLECTION_INJECTION_KEY: COLLECTION_INJECTION_KEY$1,
COLLECTION_ITEM_INJECTION_KEY: COLLECTION_ITEM_INJECTION_KEY$1,
} = createCollectionWithScope('RovingFocusGroup')
const ROVING_FOCUS_GROUP_INJECTION_KEY = Symbol('elRovingFocusGroup')
const ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY = Symbol('elRovingFocusGroupItem')
const MAP_KEY_TO_FOCUS_INTENT = {
ArrowLeft: 'prev',
ArrowUp: 'prev',
ArrowRight: 'next',
ArrowDown: 'next',
PageUp: 'first',
Home: 'first',
PageDown: 'last',
End: 'last',
}
const getDirectionAwareKey = (key2, dir3) => {
if (dir3 !== 'rtl') return key2
switch (key2) {
case EVENT_CODE.right:
return EVENT_CODE.left
case EVENT_CODE.left:
return EVENT_CODE.right
default:
return key2
}
}
const getFocusIntent = (event, orientation, dir3) => {
const key2 = getDirectionAwareKey(event.key, dir3)
if (
orientation === 'vertical' &&
[EVENT_CODE.left, EVENT_CODE.right].includes(key2)
)
return void 0
if (
orientation === 'horizontal' &&
[EVENT_CODE.up, EVENT_CODE.down].includes(key2)
)
return void 0
return MAP_KEY_TO_FOCUS_INTENT[key2]
}
const reorderArray = (array4, atIdx) => {
return array4.map((_2, idx) => array4[(idx + atIdx) % array4.length])
}
const focusFirst = (elements2) => {
const { activeElement: prevActive } = document
for (const element of elements2) {
if (element === prevActive) return
element.focus()
if (prevActive !== document.activeElement) return
}
}
const CURRENT_TAB_ID_CHANGE_EVT = 'currentTabIdChange'
const ENTRY_FOCUS_EVT = 'rovingFocusGroup.entryFocus'
const EVT_OPTS = { bubbles: false, cancelable: true }
const _sfc_main$8e = defineComponent({
name: 'ElRovingFocusGroupImpl',
inheritAttrs: false,
props: rovingFocusGroupProps,
emits: [CURRENT_TAB_ID_CHANGE_EVT, 'entryFocus'],
setup(props2, { emit: emit2 }) {
var _a2
const currentTabbedId = ref(
(_a2 = props2.currentTabId || props2.defaultCurrentTabId) != null
? _a2
: null
)
const isBackingOut = ref(false)
const isClickFocus = ref(false)
const rovingFocusGroupRef = ref(null)
const { getItems } = inject(COLLECTION_INJECTION_KEY$1, void 0)
const rovingFocusGroupRootStyle = computed(() => {
return [
{
outline: 'none',
},
props2.style,
]
})
const onItemFocus = (tabbedId) => {
emit2(CURRENT_TAB_ID_CHANGE_EVT, tabbedId)
}
const onItemShiftTab = () => {
isBackingOut.value = true
}
const onMousedown = composeEventHandlers(
(e2) => {
var _a22
;(_a22 = props2.onMousedown) == null ? void 0 : _a22.call(props2, e2)
},
() => {
isClickFocus.value = true
}
)
const onFocus = composeEventHandlers(
(e2) => {
var _a22
;(_a22 = props2.onFocus) == null ? void 0 : _a22.call(props2, e2)
},
(e2) => {
const isKeyboardFocus = !unref(isClickFocus)
const { target: target2, currentTarget } = e2
if (
target2 === currentTarget &&
isKeyboardFocus &&
!unref(isBackingOut)
) {
const entryFocusEvt = new Event(ENTRY_FOCUS_EVT, EVT_OPTS)
currentTarget == null
? void 0
: currentTarget.dispatchEvent(entryFocusEvt)
if (!entryFocusEvt.defaultPrevented) {
const items = getItems().filter((item2) => item2.focusable)
const activeItem = items.find((item2) => item2.active)
const currentItem = items.find(
(item2) => item2.id === unref(currentTabbedId)
)
const candidates = [activeItem, currentItem, ...items].filter(
Boolean
)
const candidateNodes = candidates.map((item2) => item2.ref)
focusFirst(candidateNodes)
}
}
isClickFocus.value = false
}
)
const onBlur = composeEventHandlers(
(e2) => {
var _a22
;(_a22 = props2.onBlur) == null ? void 0 : _a22.call(props2, e2)
},
() => {
isBackingOut.value = false
}
)
const handleEntryFocus = (...args) => {
emit2('entryFocus', ...args)
}
provide(ROVING_FOCUS_GROUP_INJECTION_KEY, {
currentTabbedId: readonly(currentTabbedId),
loop: toRef(props2, 'loop'),
tabIndex: computed(() => {
return unref(isBackingOut) ? -1 : 0
}),
rovingFocusGroupRef,
rovingFocusGroupRootStyle,
orientation: toRef(props2, 'orientation'),
dir: toRef(props2, 'dir'),
onItemFocus,
onItemShiftTab,
onBlur,
onFocus,
onMousedown,
})
watch$1(
() => props2.currentTabId,
(val2) => {
currentTabbedId.value = val2 != null ? val2 : null
}
)
onMounted(() => {
const rovingFocusGroupEl = unref(rovingFocusGroupRef)
on$2(rovingFocusGroupEl, ENTRY_FOCUS_EVT, handleEntryFocus)
})
onBeforeUnmount(() => {
const rovingFocusGroupEl = unref(rovingFocusGroupRef)
off$1(rovingFocusGroupEl, ENTRY_FOCUS_EVT, handleEntryFocus)
})
},
})
function _sfc_render$12(_ctx, _cache, $props2, $setup, $data, $options) {
return renderSlot(_ctx.$slots, 'default')
}
var ElRovingFocusGroupImpl = /* @__PURE__ */ _export_sfc$1(_sfc_main$8e, [
['render', _sfc_render$12],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/roving-focus-group/src/roving-focus-group-impl.vue',
],
])
const _sfc_main$8d = defineComponent({
name: 'ElRovingFocusGroup',
components: {
ElFocusGroupCollection: ElCollection$1,
ElRovingFocusGroupImpl,
},
})
function _sfc_render$11(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_roving_focus_group_impl = resolveComponent(
'el-roving-focus-group-impl'
)
const _component_el_focus_group_collection = resolveComponent(
'el-focus-group-collection'
)
return (
openBlock(),
createBlock(_component_el_focus_group_collection, null, {
default: withCtx(() => [
createVNode$1(
_component_el_roving_focus_group_impl,
normalizeProps(guardReactiveProps(_ctx.$attrs)),
{
default: withCtx(() => [renderSlot(_ctx.$slots, 'default')]),
_: 3,
},
16
),
]),
_: 3,
})
)
}
var ElRovingFocusGroup = /* @__PURE__ */ _export_sfc$1(_sfc_main$8d, [
['render', _sfc_render$11],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/roving-focus-group/src/roving-focus-group.vue',
],
])
const _sfc_main$8c = defineComponent({
components: {
ElRovingFocusCollectionItem: ElCollectionItem$1,
},
props: {
focusable: {
type: Boolean,
default: true,
},
active: {
type: Boolean,
default: false,
},
},
emits: ['mousedown', 'focus', 'keydown'],
setup(props2, { emit: emit2 }) {
const { currentTabbedId, loop, onItemFocus, onItemShiftTab } = inject(
ROVING_FOCUS_GROUP_INJECTION_KEY,
void 0
)
const { getItems } = inject(COLLECTION_INJECTION_KEY$1, void 0)
const id2 = useId()
const rovingFocusGroupItemRef = ref(null)
const handleMousedown = composeEventHandlers(
(e2) => {
emit2('mousedown', e2)
},
(e2) => {
if (!props2.focusable) {
e2.preventDefault()
} else {
onItemFocus(unref(id2))
}
}
)
const handleFocus = composeEventHandlers(
(e2) => {
emit2('focus', e2)
},
() => {
onItemFocus(unref(id2))
}
)
const handleKeydown = composeEventHandlers(
(e2) => {
emit2('keydown', e2)
},
(e2) => {
const { key: key2, shiftKey, target: target2, currentTarget } = e2
if (key2 === EVENT_CODE.tab && shiftKey) {
onItemShiftTab()
return
}
if (target2 !== currentTarget) return
const focusIntent = getFocusIntent(e2)
if (focusIntent) {
e2.preventDefault()
const items = getItems().filter((item2) => item2.focusable)
let elements2 = items.map((item2) => item2.ref)
switch (focusIntent) {
case 'last': {
elements2.reverse()
break
}
case 'prev':
case 'next': {
if (focusIntent === 'prev') {
elements2.reverse()
}
const currentIdx = elements2.indexOf(currentTarget)
elements2 = loop.value
? reorderArray(elements2, currentIdx + 1)
: elements2.slice(currentIdx + 1)
break
}
}
nextTick(() => {
focusFirst(elements2)
})
}
}
)
const isCurrentTab = computed(() => currentTabbedId.value === unref(id2))
provide(ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY, {
rovingFocusGroupItemRef,
tabIndex: computed(() => (unref(isCurrentTab) ? 0 : -1)),
handleMousedown,
handleFocus,
handleKeydown,
})
return {
id: id2,
handleKeydown,
handleFocus,
handleMousedown,
}
},
})
function _sfc_render$10(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_roving_focus_collection_item = resolveComponent(
'el-roving-focus-collection-item'
)
return (
openBlock(),
createBlock(
_component_el_roving_focus_collection_item,
{
id: _ctx.id,
focusable: _ctx.focusable,
active: _ctx.active,
},
{
default: withCtx(() => [renderSlot(_ctx.$slots, 'default')]),
_: 3,
},
8,
['id', 'focusable', 'active']
)
)
}
var ElRovingFocusItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$8c, [
['render', _sfc_render$10],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/roving-focus-group/src/roving-focus-item.vue',
],
])
const dropdownProps = buildProps({
trigger: useTooltipTriggerProps.trigger,
effect: {
...useTooltipContentProps.effect,
default: 'light',
},
type: {
type: definePropType(String),
},
placement: {
type: definePropType(String),
default: 'bottom',
},
popperOptions: {
type: definePropType(Object),
default: () => ({}),
},
size: {
type: String,
default: '',
},
splitButton: Boolean,
hideOnClick: {
type: Boolean,
default: true,
},
loop: {
type: Boolean,
},
showTimeout: {
type: Number,
default: 150,
},
hideTimeout: {
type: Number,
default: 150,
},
tabindex: {
type: definePropType([Number, String]),
default: 0,
},
maxHeight: {
type: definePropType([Number, String]),
default: '',
},
popperClass: {
type: String,
default: '',
},
disabled: {
type: Boolean,
default: false,
},
buttonProps: {
type: definePropType(Object),
},
})
const dropdownItemProps = buildProps({
command: {
type: [Object, String, Number],
default: () => ({}),
},
disabled: Boolean,
divided: Boolean,
textValue: String,
icon: {
type: iconPropType,
},
})
const dropdownMenuProps = buildProps({
onKeydown: { type: definePropType(Function) },
})
const FIRST_KEYS = [EVENT_CODE.down, EVENT_CODE.pageDown, EVENT_CODE.home]
const LAST_KEYS = [EVENT_CODE.up, EVENT_CODE.pageUp, EVENT_CODE.end]
const FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS]
const {
ElCollection,
ElCollectionItem,
COLLECTION_INJECTION_KEY,
COLLECTION_ITEM_INJECTION_KEY,
} = createCollectionWithScope('Dropdown')
const DROPDOWN_INJECTION_KEY = Symbol('elDropdown')
const { ButtonGroup: ElButtonGroup } = ElButton
const _sfc_main$8b = defineComponent({
name: 'ElDropdown',
components: {
ElButton,
ElFocusTrap,
ElButtonGroup,
ElScrollbar,
ElDropdownCollection: ElCollection,
ElTooltip,
ElRovingFocusGroup,
ElIcon,
ArrowDown: arrowDown,
},
props: dropdownProps,
emits: ['visible-change', 'click', 'command'],
setup(props2, { emit: emit2 }) {
const _instance = getCurrentInstance()
const ns = useNamespace('dropdown')
const triggeringElementRef = ref()
const referenceElementRef = ref()
const popperRef = ref(null)
const contentRef = ref(null)
const scrollbar = ref(null)
const currentTabId = ref(null)
const isUsingKeyboard = ref(false)
const wrapStyle = computed(() => ({
maxHeight: addUnit(props2.maxHeight),
}))
const dropdownTriggerKls = computed(() => [ns.m(dropdownSize.value)])
function handleClick2() {
handleClose()
}
function handleClose() {
var _a2
;(_a2 = popperRef.value) == null ? void 0 : _a2.onClose()
}
function handleOpen2() {
var _a2
;(_a2 = popperRef.value) == null ? void 0 : _a2.onOpen()
}
const dropdownSize = useSize$1()
function commandHandler(...args) {
emit2('command', ...args)
}
function onItemEnter() {}
function onItemLeave() {
const contentEl = unref(contentRef)
contentEl == null ? void 0 : contentEl.focus()
currentTabId.value = null
}
function handleCurrentTabIdChange(id2) {
currentTabId.value = id2
}
function handleEntryFocus(e2) {
if (!isUsingKeyboard.value) {
e2.preventDefault()
e2.stopImmediatePropagation()
}
}
provide(DROPDOWN_INJECTION_KEY, {
contentRef,
isUsingKeyboard,
onItemEnter,
onItemLeave,
})
provide('elDropdown', {
instance: _instance,
dropdownSize,
handleClick: handleClick2,
commandHandler,
trigger: toRef(props2, 'trigger'),
hideOnClick: toRef(props2, 'hideOnClick'),
})
const onMountOnFocus = (e2) => {
var _a2, _b2
e2.preventDefault()
;(_b2 = (_a2 = contentRef.value) == null ? void 0 : _a2.focus) == null
? void 0
: _b2.call(_a2, {
preventScroll: true,
})
}
const handlerMainButtonClick = (event) => {
emit2('click', event)
}
return {
ns,
scrollbar,
wrapStyle,
dropdownTriggerKls,
dropdownSize,
currentTabId,
handleCurrentTabIdChange,
handlerMainButtonClick,
handleEntryFocus,
handleClose,
handleOpen: handleOpen2,
onMountOnFocus,
popperRef,
triggeringElementRef,
referenceElementRef,
}
},
})
function _sfc_render$$(_ctx, _cache, $props2, $setup, $data, $options) {
var _a2
const _component_el_dropdown_collection = resolveComponent(
'el-dropdown-collection'
)
const _component_el_roving_focus_group = resolveComponent(
'el-roving-focus-group'
)
const _component_el_focus_trap = resolveComponent('el-focus-trap')
const _component_el_scrollbar = resolveComponent('el-scrollbar')
const _component_el_tooltip = resolveComponent('el-tooltip')
const _component_el_button = resolveComponent('el-button')
const _component_arrow_down = resolveComponent('arrow-down')
const _component_el_icon = resolveComponent('el-icon')
const _component_el_button_group = resolveComponent('el-button-group')
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
_ctx.ns.b(),
_ctx.ns.is('disabled', _ctx.disabled),
]),
},
[
createVNode$1(
_component_el_tooltip,
{
ref: 'popperRef',
effect: _ctx.effect,
'fallback-placements': ['bottom', 'top'],
'popper-options': _ctx.popperOptions,
'gpu-acceleration': false,
'hide-after': _ctx.trigger === 'hover' ? _ctx.hideTimeout : 0,
'manual-mode': true,
placement: _ctx.placement,
'popper-class': [_ctx.ns.e('popper'), _ctx.popperClass],
'reference-element':
(_a2 = _ctx.referenceElementRef) == null ? void 0 : _a2.$el,
trigger: _ctx.trigger,
'show-after': _ctx.trigger === 'hover' ? _ctx.showTimeout : 0,
'stop-popper-mouse-event': false,
'virtual-ref': _ctx.triggeringElementRef,
'virtual-triggering': _ctx.splitButton,
disabled: _ctx.disabled,
'append-to-body': '',
pure: '',
transition: `${_ctx.ns.namespace.value}-zoom-in-top`,
persistent: '',
onShow:
_cache[0] ||
(_cache[0] = ($event) => _ctx.$emit('visible-change', true)),
onHide:
_cache[1] ||
(_cache[1] = ($event) => _ctx.$emit('visible-change', false)),
},
createSlots(
{
content: withCtx(() => [
createVNode$1(
_component_el_scrollbar,
{
ref: 'scrollbar',
'wrap-style': _ctx.wrapStyle,
tag: 'div',
'view-class': _ctx.ns.e('list'),
},
{
default: withCtx(() => [
createVNode$1(
_component_el_focus_trap,
{
trapped: '',
onMountOnFocus: _ctx.onMountOnFocus,
},
{
default: withCtx(() => [
createVNode$1(
_component_el_roving_focus_group,
{
loop: _ctx.loop,
'current-tab-id': _ctx.currentTabId,
orientation: 'horizontal',
onCurrentTabIdChange:
_ctx.handleCurrentTabIdChange,
onEntryFocus: _ctx.handleEntryFocus,
},
{
default: withCtx(() => [
createVNode$1(
_component_el_dropdown_collection,
null,
{
default: withCtx(() => [
renderSlot(_ctx.$slots, 'dropdown'),
]),
_: 3,
}
),
]),
_: 3,
},
8,
[
'loop',
'current-tab-id',
'onCurrentTabIdChange',
'onEntryFocus',
]
),
]),
_: 3,
},
8,
['onMountOnFocus']
),
]),
_: 3,
},
8,
['wrap-style', 'view-class']
),
]),
_: 2,
},
[
!_ctx.splitButton
? {
name: 'default',
fn: withCtx(() => [
createElementVNode(
'div',
{
class: normalizeClass(_ctx.dropdownTriggerKls),
},
[renderSlot(_ctx.$slots, 'default')],
2
),
]),
}
: void 0,
]
),
1032,
[
'effect',
'popper-options',
'hide-after',
'placement',
'popper-class',
'reference-element',
'trigger',
'show-after',
'virtual-ref',
'virtual-triggering',
'disabled',
'transition',
]
),
_ctx.splitButton
? (openBlock(),
createBlock(
_component_el_button_group,
{ key: 0 },
{
default: withCtx(() => [
createVNode$1(
_component_el_button,
mergeProps(
{ ref: 'referenceElementRef' },
_ctx.buttonProps,
{
size: _ctx.dropdownSize,
type: _ctx.type,
disabled: _ctx.disabled,
onClick: _ctx.handlerMainButtonClick,
}
),
{
default: withCtx(() => [
renderSlot(_ctx.$slots, 'default'),
]),
_: 3,
},
16,
['size', 'type', 'disabled', 'onClick']
),
createVNode$1(
_component_el_button,
mergeProps(
{ ref: 'triggeringElementRef' },
_ctx.buttonProps,
{
size: _ctx.dropdownSize,
type: _ctx.type,
class: _ctx.ns.e('caret-button'),
disabled: _ctx.disabled,
}
),
{
default: withCtx(() => [
createVNode$1(
_component_el_icon,
{
class: normalizeClass(_ctx.ns.e('icon')),
},
{
default: withCtx(() => [
createVNode$1(_component_arrow_down),
]),
_: 1,
},
8,
['class']
),
]),
_: 1,
},
16,
['size', 'type', 'class', 'disabled']
),
]),
_: 3,
}
))
: createCommentVNode('v-if', true),
],
2
)
)
}
var Dropdown = /* @__PURE__ */ _export_sfc$1(_sfc_main$8b, [
['render', _sfc_render$$],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/dropdown/src/dropdown.vue',
],
])
const _sfc_main$8a = defineComponent({
name: 'DropdownItemImpl',
components: {
ElIcon,
},
props: dropdownItemProps,
emits: ['pointermove', 'pointerleave', 'click', 'clickimpl'],
setup(_2, { emit: emit2 }) {
const ns = useNamespace('dropdown')
const { collectionItemRef: dropdownCollectionItemRef } = inject(
COLLECTION_ITEM_INJECTION_KEY,
void 0
)
const { collectionItemRef: rovingFocusCollectionItemRef } = inject(
COLLECTION_ITEM_INJECTION_KEY$1,
void 0
)
const {
rovingFocusGroupItemRef,
tabIndex,
handleFocus,
handleKeydown: handleItemKeydown,
handleMousedown,
} = inject(ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY, void 0)
const itemRef = composeRefs(
dropdownCollectionItemRef,
rovingFocusCollectionItemRef,
rovingFocusGroupItemRef
)
const handleKeydown = composeEventHandlers((e2) => {
const { code: code2 } = e2
if (code2 === EVENT_CODE.enter || code2 === EVENT_CODE.space) {
e2.preventDefault()
e2.stopImmediatePropagation()
emit2('clickimpl', e2)
return true
}
}, handleItemKeydown)
return {
ns,
itemRef,
dataset: {
[COLLECTION_ITEM_SIGN]: '',
},
tabIndex,
handleFocus,
handleKeydown,
handleMousedown,
}
},
})
const _hoisted_1$6x = ['aria-disabled', 'tabindex']
function _sfc_render$_(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_icon = resolveComponent('el-icon')
return (
openBlock(),
createElementBlock(
Fragment,
null,
[
_ctx.divided
? (openBlock(),
createElementBlock(
'li',
mergeProps(
{
key: 0,
class: _ctx.ns.bem('menu', 'item', 'divided'),
},
_ctx.$attrs
),
null,
16
))
: createCommentVNode('v-if', true),
createElementVNode(
'li',
mergeProps(
{ ref: _ctx.itemRef },
{ ..._ctx.dataset, ..._ctx.$attrs },
{
'aria-disabled': _ctx.disabled,
class: [
_ctx.ns.be('menu', 'item'),
_ctx.ns.is('disabled', _ctx.disabled),
],
tabindex: _ctx.tabIndex,
role: 'menuitem',
onClick:
_cache[0] || (_cache[0] = (e2) => _ctx.$emit('clickimpl', e2)),
onFocus:
_cache[1] ||
(_cache[1] = (...args) =>
_ctx.handleFocus && _ctx.handleFocus(...args)),
onKeydown:
_cache[2] ||
(_cache[2] = (...args) =>
_ctx.handleKeydown && _ctx.handleKeydown(...args)),
onMousedown:
_cache[3] ||
(_cache[3] = (...args) =>
_ctx.handleMousedown && _ctx.handleMousedown(...args)),
onPointermove:
_cache[4] ||
(_cache[4] = (e2) => _ctx.$emit('pointermove', e2)),
onPointerleave:
_cache[5] ||
(_cache[5] = (e2) => _ctx.$emit('pointerleave', e2)),
}
),
[
_ctx.icon
? (openBlock(),
createBlock(
_component_el_icon,
{ key: 0 },
{
default: withCtx(() => [
(openBlock(),
createBlock(resolveDynamicComponent(_ctx.icon))),
]),
_: 1,
}
))
: createCommentVNode('v-if', true),
renderSlot(_ctx.$slots, 'default'),
],
16,
_hoisted_1$6x
),
],
64
)
)
}
var ElDropdownItemImpl = /* @__PURE__ */ _export_sfc$1(_sfc_main$8a, [
['render', _sfc_render$_],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/dropdown/src/dropdown-item-impl.vue',
],
])
const useDropdown = () => {
const elDropdown = inject('elDropdown', {})
const _elDropdownSize = computed(() =>
elDropdown == null ? void 0 : elDropdown.dropdownSize
)
return {
elDropdown,
_elDropdownSize,
}
}
const _sfc_main$89 = defineComponent({
name: 'ElDropdownItem',
components: {
ElDropdownCollectionItem: ElCollectionItem,
ElRovingFocusItem,
ElDropdownItemImpl,
},
inheritAttrs: false,
props: dropdownItemProps,
emits: ['pointermove', 'pointerleave', 'click'],
setup(props2, { emit: emit2, attrs }) {
const { elDropdown } = useDropdown()
const _instance = getCurrentInstance()
const itemRef = ref(null)
const textContent = computed(() => {
var _a2, _b2
return (_b2 =
(_a2 = unref(itemRef)) == null ? void 0 : _a2.textContent) != null
? _b2
: ''
})
const { onItemEnter, onItemLeave } = inject(DROPDOWN_INJECTION_KEY, void 0)
const handlePointerMove = composeEventHandlers(
(e2) => {
emit2('pointermove', e2)
return e2.defaultPrevented
},
whenMouse((e2) => {
var _a2
if (props2.disabled) {
onItemLeave(e2)
} else {
onItemEnter(e2)
if (!e2.defaultPrevented) {
;(_a2 = e2.currentTarget) == null ? void 0 : _a2.focus()
}
}
})
)
const handlePointerLeave = composeEventHandlers(
(e2) => {
emit2('pointerleave', e2)
return e2.defaultPrevented
},
whenMouse((e2) => {
onItemLeave(e2)
})
)
const handleClick2 = composeEventHandlers(
(e2) => {
emit2('click', e2)
return e2.defaultPrevented
},
(e2) => {
var _a2, _b2, _c2
if (props2.disabled) {
e2.stopImmediatePropagation()
return
}
if (
(_a2 = elDropdown == null ? void 0 : elDropdown.hideOnClick) == null
? void 0
: _a2.value
) {
;(_b2 = elDropdown.handleClick) == null
? void 0
: _b2.call(elDropdown)
}
;(_c2 = elDropdown.commandHandler) == null
? void 0
: _c2.call(elDropdown, props2.command, _instance, e2)
}
)
const propsAndAttrs = computed(() => {
return { ...props2, ...attrs }
})
return {
handleClick: handleClick2,
handlePointerMove,
handlePointerLeave,
textContent,
propsAndAttrs,
}
},
})
function _sfc_render$Z(_ctx, _cache, $props2, $setup, $data, $options) {
var _a2
const _component_el_dropdown_item_impl = resolveComponent(
'el-dropdown-item-impl'
)
const _component_el_roving_focus_item = resolveComponent(
'el-roving-focus-item'
)
const _component_el_dropdown_collection_item = resolveComponent(
'el-dropdown-collection-item'
)
return (
openBlock(),
createBlock(
_component_el_dropdown_collection_item,
{
disabled: _ctx.disabled,
'text-value': (_a2 = _ctx.textValue) != null ? _a2 : _ctx.textContent,
},
{
default: withCtx(() => [
createVNode$1(
_component_el_roving_focus_item,
{
focusable: !_ctx.disabled,
},
{
default: withCtx(() => [
createVNode$1(
_component_el_dropdown_item_impl,
mergeProps(_ctx.propsAndAttrs, {
onPointerleave: _ctx.handlePointerLeave,
onPointermove: _ctx.handlePointerMove,
onClickimpl: _ctx.handleClick,
}),
{
default: withCtx(() => [
renderSlot(_ctx.$slots, 'default'),
]),
_: 3,
},
16,
['onPointerleave', 'onPointermove', 'onClickimpl']
),
]),
_: 3,
},
8,
['focusable']
),
]),
_: 3,
},
8,
['disabled', 'text-value']
)
)
}
var DropdownItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$89, [
['render', _sfc_render$Z],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/dropdown/src/dropdown-item.vue',
],
])
const _sfc_main$88 = defineComponent({
name: 'ElDropdownMenu',
props: dropdownMenuProps,
setup(props2) {
const ns = useNamespace('dropdown')
const { _elDropdownSize } = useDropdown()
const size = _elDropdownSize.value
const { focusTrapRef, onKeydown } = inject(FOCUS_TRAP_INJECTION_KEY, void 0)
const { contentRef } = inject(DROPDOWN_INJECTION_KEY, void 0)
const { collectionRef: dropdownCollectionRef, getItems } = inject(
COLLECTION_INJECTION_KEY,
void 0
)
const {
rovingFocusGroupRef,
rovingFocusGroupRootStyle,
tabIndex,
onBlur,
onFocus,
onMousedown,
} = inject(ROVING_FOCUS_GROUP_INJECTION_KEY, void 0)
const { collectionRef: rovingFocusGroupCollectionRef } = inject(
COLLECTION_INJECTION_KEY$1,
void 0
)
const dropdownKls = computed(() => {
return [ns.b('menu'), ns.bm('menu', size == null ? void 0 : size.value)]
})
const dropdownListWrapperRef = composeRefs(
contentRef,
dropdownCollectionRef,
focusTrapRef,
rovingFocusGroupRef,
rovingFocusGroupCollectionRef
)
const composedKeydown = composeEventHandlers(
(e2) => {
var _a2
;(_a2 = props2.onKeydown) == null ? void 0 : _a2.call(props2, e2)
},
(e2) => {
const { currentTarget, code: code2, target: target2 } = e2
currentTarget.contains(target2)
if (EVENT_CODE.tab === code2) {
e2.stopImmediatePropagation()
}
e2.preventDefault()
if (target2 !== unref(contentRef)) return
if (!FIRST_LAST_KEYS.includes(code2)) return
const items = getItems().filter((item2) => !item2.disabled)
const targets = items.map((item2) => item2.ref)
if (LAST_KEYS.includes(code2)) {
targets.reverse()
}
focusFirst(targets)
}
)
const handleKeydown = (e2) => {
composedKeydown(e2)
onKeydown(e2)
}
return {
size,
rovingFocusGroupRootStyle,
tabIndex,
dropdownKls,
dropdownListWrapperRef,
handleKeydown,
onBlur,
onFocus,
onMousedown,
}
},
})
function _sfc_render$Y(_ctx, _cache, $props2, $setup, $data, $options) {
return (
openBlock(),
createElementBlock(
'ul',
{
ref: _ctx.dropdownListWrapperRef,
class: normalizeClass(_ctx.dropdownKls),
style: normalizeStyle$1(_ctx.rovingFocusGroupRootStyle),
tabindex: -1,
role: 'menu',
onBlur:
_cache[0] ||
(_cache[0] = (...args) => _ctx.onBlur && _ctx.onBlur(...args)),
onFocus:
_cache[1] ||
(_cache[1] = (...args) => _ctx.onFocus && _ctx.onFocus(...args)),
onKeydown:
_cache[2] ||
(_cache[2] = (...args) =>
_ctx.handleKeydown && _ctx.handleKeydown(...args)),
onMousedown:
_cache[3] ||
(_cache[3] = (...args) =>
_ctx.onMousedown && _ctx.onMousedown(...args)),
},
[renderSlot(_ctx.$slots, 'default')],
38
)
)
}
var DropdownMenu$1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$88, [
['render', _sfc_render$Y],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/dropdown/src/dropdown-menu.vue',
],
])
const ElDropdown = withInstall(Dropdown, {
DropdownItem,
DropdownMenu: DropdownMenu$1,
})
const ElDropdownItem = withNoopInstall(DropdownItem)
const ElDropdownMenu = withNoopInstall(DropdownMenu$1)
let id$3 = 0
const _sfc_main$87 = defineComponent({
name: 'ImgEmpty',
setup() {
return {
id: ++id$3,
}
},
})
const _hoisted_1$6w = {
viewBox: '0 0 79 86',
version: '1.1',
xmlns: 'http://www.w3.org/2000/svg',
'xmlns:xlink': 'http://www.w3.org/1999/xlink',
}
const _hoisted_2$5g = ['id']
const _hoisted_3$4E = /* @__PURE__ */ createElementVNode(
'stop',
{
'stop-color': 'var(--el-empty-fill-color-1)',
offset: '0%',
},
null,
-1
)
const _hoisted_4$40 = /* @__PURE__ */ createElementVNode(
'stop',
{
'stop-color': 'var(--el-empty-fill-color-4)',
offset: '100%',
},
null,
-1
)
const _hoisted_5$3C = [_hoisted_3$4E, _hoisted_4$40]
const _hoisted_6$3b = ['id']
const _hoisted_7$2P = /* @__PURE__ */ createElementVNode(
'stop',
{
'stop-color': 'var(--el-empty-fill-color-1)',
offset: '0%',
},
null,
-1
)
const _hoisted_8$2v = /* @__PURE__ */ createElementVNode(
'stop',
{
'stop-color': 'var(--el-empty-fill-color-6)',
offset: '100%',
},
null,
-1
)
const _hoisted_9$2j = [_hoisted_7$2P, _hoisted_8$2v]
const _hoisted_10$25 = ['id']
const _hoisted_11$1W = {
id: 'Illustrations',
stroke: 'none',
'stroke-width': '1',
fill: 'none',
'fill-rule': 'evenodd',
}
const _hoisted_12$1Q = {
id: 'B-type',
transform: 'translate(-1268.000000, -535.000000)',
}
const _hoisted_13$1E = {
id: 'Group-2',
transform: 'translate(1268.000000, 535.000000)',
}
const _hoisted_14$1r = /* @__PURE__ */ createElementVNode(
'path',
{
id: 'Oval-Copy-2',
d: 'M39.5,86 C61.3152476,86 79,83.9106622 79,81.3333333 C79,78.7560045 57.3152476,78 35.5,78 C13.6847524,78 0,78.7560045 0,81.3333333 C0,83.9106622 17.6847524,86 39.5,86 Z',
fill: 'var(--el-empty-fill-color-3)',
},
null,
-1
)
const _hoisted_15$1m = /* @__PURE__ */ createElementVNode(
'polygon',
{
id: 'Rectangle-Copy-14',
fill: 'var(--el-empty-fill-color-7)',
transform:
'translate(27.500000, 51.500000) scale(1, -1) translate(-27.500000, -51.500000) ',
points: '13 58 53 58 42 45 2 45',
},
null,
-1
)
const _hoisted_16$1k = {
id: 'Group-Copy',
transform:
'translate(34.500000, 31.500000) scale(-1, 1) rotate(-25.000000) translate(-34.500000, -31.500000) translate(7.000000, 10.000000)',
}
const _hoisted_17$1c = /* @__PURE__ */ createElementVNode(
'polygon',
{
id: 'Rectangle-Copy-10',
fill: 'var(--el-empty-fill-color-7)',
transform:
'translate(11.500000, 5.000000) scale(1, -1) translate(-11.500000, -5.000000) ',
points: '2.84078316e-14 3 18 3 23 7 5 7',
},
null,
-1
)
const _hoisted_18$14 = /* @__PURE__ */ createElementVNode(
'polygon',
{
id: 'Rectangle-Copy-11',
fill: 'var(--el-empty-fill-color-5)',
points: '-3.69149156e-15 7 38 7 38 43 -3.69149156e-15 43',
},
null,
-1
)
const _hoisted_19$$ = ['fill']
const _hoisted_20$V = /* @__PURE__ */ createElementVNode(
'polygon',
{
id: 'Rectangle-Copy-13',
fill: 'var(--el-empty-fill-color-2)',
transform:
'translate(39.500000, 3.500000) scale(-1, 1) translate(-39.500000, -3.500000) ',
points: '24 7 41 7 55 -3.63806207e-12 38 -3.63806207e-12',
},
null,
-1
)
const _hoisted_21$L = ['fill']
const _hoisted_22$J = {
id: 'Rectangle-Copy-17',
transform: 'translate(53.000000, 45.000000)',
}
const _hoisted_23$F = ['id']
const _hoisted_24$D = ['xlink:href']
const _hoisted_25$x = ['xlink:href']
const _hoisted_26$u = ['mask']
const _hoisted_27$t = /* @__PURE__ */ createElementVNode(
'polygon',
{
id: 'Rectangle-Copy-18',
fill: 'var(--el-empty-fill-color-2)',
transform:
'translate(66.000000, 51.500000) scale(-1, 1) translate(-66.000000, -51.500000) ',
points: '62 45 79 45 70 58 53 58',
},
null,
-1
)
function _sfc_render$X(_ctx, _cache, $props2, $setup, $data, $options) {
return (
openBlock(),
createElementBlock('svg', _hoisted_1$6w, [
createElementVNode('defs', null, [
createElementVNode(
'linearGradient',
{
id: `linearGradient-1-${_ctx.id}`,
x1: '38.8503086%',
y1: '0%',
x2: '61.1496914%',
y2: '100%',
},
_hoisted_5$3C,
8,
_hoisted_2$5g
),
createElementVNode(
'linearGradient',
{
id: `linearGradient-2-${_ctx.id}`,
x1: '0%',
y1: '9.5%',
x2: '100%',
y2: '90.5%',
},
_hoisted_9$2j,
8,
_hoisted_6$3b
),
createElementVNode(
'rect',
{
id: `path-3-${_ctx.id}`,
x: '0',
y: '0',
width: '17',
height: '36',
},
null,
8,
_hoisted_10$25
),
]),
createElementVNode('g', _hoisted_11$1W, [
createElementVNode('g', _hoisted_12$1Q, [
createElementVNode('g', _hoisted_13$1E, [
_hoisted_14$1r,
_hoisted_15$1m,
createElementVNode('g', _hoisted_16$1k, [
_hoisted_17$1c,
_hoisted_18$14,
createElementVNode(
'rect',
{
id: 'Rectangle-Copy-12',
fill: `url(#linearGradient-1-${_ctx.id})`,
transform:
'translate(46.500000, 25.000000) scale(-1, 1) translate(-46.500000, -25.000000) ',
x: '38',
y: '7',
width: '17',
height: '36',
},
null,
8,
_hoisted_19$$
),
_hoisted_20$V,
]),
createElementVNode(
'rect',
{
id: 'Rectangle-Copy-15',
fill: `url(#linearGradient-2-${_ctx.id})`,
x: '13',
y: '45',
width: '40',
height: '36',
},
null,
8,
_hoisted_21$L
),
createElementVNode('g', _hoisted_22$J, [
createElementVNode(
'mask',
{
id: `mask-4-${_ctx.id}`,
fill: 'var(--el-empty-fill-color-0)',
},
[
createElementVNode(
'use',
{
'xlink:href': `#path-3-${_ctx.id}`,
},
null,
8,
_hoisted_24$D
),
],
8,
_hoisted_23$F
),
createElementVNode(
'use',
{
id: 'Mask',
fill: 'var(--el-empty-fill-color-8)',
transform:
'translate(8.500000, 18.000000) scale(-1, 1) translate(-8.500000, -18.000000) ',
'xlink:href': `#path-3-${_ctx.id}`,
},
null,
8,
_hoisted_25$x
),
createElementVNode(
'polygon',
{
id: 'Rectangle-Copy',
fill: 'var(--el-empty-fill-color-9)',
mask: `url(#mask-4-${_ctx.id})`,
transform:
'translate(12.000000, 9.000000) scale(-1, 1) translate(-12.000000, -9.000000) ',
points: '7 0 24 0 20 18 -1.70530257e-13 16',
},
null,
8,
_hoisted_26$u
),
]),
_hoisted_27$t,
]),
]),
]),
])
)
}
var ImgEmpty = /* @__PURE__ */ _export_sfc$1(_sfc_main$87, [
['render', _sfc_render$X],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/empty/src/img-empty.vue',
],
])
const emptyProps = {
image: {
type: String,
default: '',
},
imageSize: Number,
description: {
type: String,
default: '',
},
}
const _hoisted_1$6v = ['src']
const _hoisted_2$5f = { key: 1 }
const __default__$n = {
name: 'ElEmpty',
}
const _sfc_main$86 = /* @__PURE__ */ defineComponent({
...__default__$n,
props: emptyProps,
setup(__props2) {
const props2 = __props2
const { t: t3 } = useLocale()
const ns = useNamespace('empty')
const emptyDescription = computed(
() => props2.description || t3('el.table.emptyText')
)
const imageStyle = computed(() => ({
width: props2.imageSize ? `${props2.imageSize}px` : '',
}))
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass(unref(ns).b()),
},
[
createElementVNode(
'div',
{
class: normalizeClass(unref(ns).e('image')),
style: normalizeStyle$1(unref(imageStyle)),
},
[
_ctx.image
? (openBlock(),
createElementBlock(
'img',
{
key: 0,
src: _ctx.image,
ondragstart: 'return false',
},
null,
8,
_hoisted_1$6v
))
: renderSlot(_ctx.$slots, 'image', { key: 1 }, () => [
createVNode$1(ImgEmpty),
]),
],
6
),
createElementVNode(
'div',
{
class: normalizeClass(unref(ns).e('description')),
},
[
_ctx.$slots.description
? renderSlot(_ctx.$slots, 'description', { key: 0 })
: (openBlock(),
createElementBlock(
'p',
_hoisted_2$5f,
toDisplayString$1(unref(emptyDescription)),
1
)),
],
2
),
_ctx.$slots.default
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass(unref(ns).e('bottom')),
},
[renderSlot(_ctx.$slots, 'default')],
2
))
: createCommentVNode('v-if', true),
],
2
)
)
}
},
})
var Empty$2 = /* @__PURE__ */ _export_sfc$1(_sfc_main$86, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/empty/src/empty.vue',
],
])
const ElEmpty = withInstall(Empty$2)
const formProps = buildProps({
model: Object,
rules: {
type: definePropType(Object),
},
labelPosition: String,
labelWidth: {
type: [String, Number],
default: '',
},
labelSuffix: {
type: String,
default: '',
},
inline: Boolean,
inlineMessage: Boolean,
statusIcon: Boolean,
showMessage: {
type: Boolean,
default: true,
},
size: {
type: String,
values: componentSizes,
},
disabled: Boolean,
validateOnRuleChange: {
type: Boolean,
default: true,
},
hideRequiredAsterisk: {
type: Boolean,
default: false,
},
scrollToError: Boolean,
})
const formEmits = {
validate: (prop, isValid, message2) =>
(isArray$D(prop) || isString$f(prop)) &&
isBoolean$5(isValid) &&
isString$f(message2),
}
function useFormLabelWidth() {
const potentialLabelWidthArr = ref([])
const autoLabelWidth = computed(() => {
if (!potentialLabelWidthArr.value.length) return '0'
const max3 = Math.max(...potentialLabelWidthArr.value)
return max3 ? `${max3}px` : ''
})
function getLabelWidthIndex(width) {
const index2 = potentialLabelWidthArr.value.indexOf(width)
return index2
}
function registerLabelWidth(val2, oldVal) {
if (val2 && oldVal) {
const index2 = getLabelWidthIndex(oldVal)
potentialLabelWidthArr.value.splice(index2, 1, val2)
} else if (val2) {
potentialLabelWidthArr.value.push(val2)
}
}
function deregisterLabelWidth(val2) {
const index2 = getLabelWidthIndex(val2)
if (index2 > -1) {
potentialLabelWidthArr.value.splice(index2, 1)
}
}
return {
autoLabelWidth,
registerLabelWidth,
deregisterLabelWidth,
}
}
const filterFields = (fields, props2) => {
const normalized = castArray$1(props2)
return normalized.length > 0
? fields.filter((field2) => field2.prop && normalized.includes(field2.prop))
: fields
}
const __default__$m = {
name: 'ElForm',
}
const _sfc_main$85 = /* @__PURE__ */ defineComponent({
...__default__$m,
props: formProps,
emits: formEmits,
setup(__props2, { expose, emit: emit2 }) {
const props2 = __props2
const fields = []
const formSize = useSize$1()
const ns = useNamespace('form')
const formClasses = computed(() => {
const { labelPosition, inline } = props2
return [
ns.b(),
ns.m(formSize.value || 'default'),
{
[ns.m(`label-${labelPosition}`)]: labelPosition,
[ns.m('inline')]: inline,
},
]
})
const addField = (field2) => {
fields.push(field2)
}
const removeField = (field2) => {
if (field2.prop) {
fields.splice(fields.indexOf(field2), 1)
}
}
const resetFields = (properties = []) => {
if (!props2.model) {
return
}
filterFields(fields, properties).forEach((field2) => field2.resetField())
}
const clearValidate = (props22 = []) => {
filterFields(fields, props22).forEach((field2) => field2.clearValidate())
}
const isValidatable = computed(() => {
const hasModel = !!props2.model
return hasModel
})
const obtainValidateFields = (props22) => {
if (fields.length === 0) return []
const filteredFields = filterFields(fields, props22)
if (!filteredFields.length) {
return []
}
return filteredFields
}
const validate = async (callback) => validateField(void 0, callback)
const doValidateField = async (props22 = []) => {
if (!isValidatable.value) return false
const fields2 = obtainValidateFields(props22)
if (fields2.length === 0) return true
let validationErrors = {}
for (const field2 of fields2) {
try {
await field2.validate('')
} catch (fields3) {
validationErrors = {
...validationErrors,
...fields3,
}
}
}
if (Object.keys(validationErrors).length === 0) return true
return Promise.reject(validationErrors)
}
const validateField = async (modelProps = [], callback) => {
const shouldThrow = !isFunction$l(callback)
try {
const result = await doValidateField(modelProps)
if (result === true) {
callback == null ? void 0 : callback(result)
}
return result
} catch (e2) {
const invalidFields = e2
if (props2.scrollToError) {
scrollToField(Object.keys(invalidFields)[0])
}
callback == null ? void 0 : callback(false, invalidFields)
return shouldThrow && Promise.reject(invalidFields)
}
}
const scrollToField = (prop) => {
var _a2
const field2 = filterFields(fields, prop)[0]
if (field2) {
;(_a2 = field2.$el) == null ? void 0 : _a2.scrollIntoView()
}
}
watch$1(
() => props2.rules,
() => {
if (props2.validateOnRuleChange) validate()
},
{ deep: true }
)
provide(
formContextKey,
reactive({
...toRefs$2(props2),
emit: emit2,
resetFields,
clearValidate,
validateField,
addField,
removeField,
...useFormLabelWidth(),
})
)
expose({
validate,
validateField,
resetFields,
clearValidate,
scrollToField,
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'form',
{
class: normalizeClass(unref(formClasses)),
},
[renderSlot(_ctx.$slots, 'default')],
2
)
)
}
},
})
var Form = /* @__PURE__ */ _export_sfc$1(_sfc_main$85, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/form/src/form.vue',
],
])
function _extends$1() {
_extends$1 = Object.assign
? Object.assign.bind()
: function (target2) {
for (var i2 = 1; i2 < arguments.length; i2++) {
var source2 = arguments[i2]
for (var key2 in source2) {
if (Object.prototype.hasOwnProperty.call(source2, key2)) {
target2[key2] = source2[key2]
}
}
}
return target2
}
return _extends$1.apply(this, arguments)
}
function _inheritsLoose(subClass, superClass) {
subClass.prototype = Object.create(superClass.prototype)
subClass.prototype.constructor = subClass
_setPrototypeOf$1(subClass, superClass)
}
function _getPrototypeOf(o2) {
_getPrototypeOf = Object.setPrototypeOf
? Object.getPrototypeOf.bind()
: function _getPrototypeOf2(o3) {
return o3.__proto__ || Object.getPrototypeOf(o3)
}
return _getPrototypeOf(o2)
}
function _setPrototypeOf$1(o2, p2) {
_setPrototypeOf$1 = Object.setPrototypeOf
? Object.setPrototypeOf.bind()
: function _setPrototypeOf2(o3, p3) {
o3.__proto__ = p3
return o3
}
return _setPrototypeOf$1(o2, p2)
}
function _isNativeReflectConstruct$1() {
if (typeof Reflect === 'undefined' || !Reflect.construct) return false
if (Reflect.construct.sham) return false
if (typeof Proxy === 'function') return true
try {
Boolean.prototype.valueOf.call(
Reflect.construct(Boolean, [], function () {})
)
return true
} catch (e2) {
return false
}
}
function _construct$1(Parent, args, Class) {
if (_isNativeReflectConstruct$1()) {
_construct$1 = Reflect.construct.bind()
} else {
_construct$1 = function _construct2(Parent2, args2, Class2) {
var a2 = [null]
a2.push.apply(a2, args2)
var Constructor = Function.bind.apply(Parent2, a2)
var instance = new Constructor()
if (Class2) _setPrototypeOf$1(instance, Class2.prototype)
return instance
}
}
return _construct$1.apply(null, arguments)
}
function _isNativeFunction(fn2) {
return Function.toString.call(fn2).indexOf('[native code]') !== -1
}
function _wrapNativeSuper(Class) {
var _cache = typeof Map === 'function' ? /* @__PURE__ */ new Map() : void 0
_wrapNativeSuper = function _wrapNativeSuper2(Class2) {
if (Class2 === null || !_isNativeFunction(Class2)) return Class2
if (typeof Class2 !== 'function') {
throw new TypeError('Super expression must either be null or a function')
}
if (typeof _cache !== 'undefined') {
if (_cache.has(Class2)) return _cache.get(Class2)
_cache.set(Class2, Wrapper)
}
function Wrapper() {
return _construct$1(Class2, arguments, _getPrototypeOf(this).constructor)
}
Wrapper.prototype = Object.create(Class2.prototype, {
constructor: {
value: Wrapper,
enumerable: false,
writable: true,
configurable: true,
},
})
return _setPrototypeOf$1(Wrapper, Class2)
}
return _wrapNativeSuper(Class)
}
var formatRegExp = /%[sdj%]/g
var warning = function warning2() {}
if (typeof process !== 'undefined' && process.env && false) {
warning = function warning3(type4, errors) {
if (
typeof console !== 'undefined' &&
console.warn &&
typeof ASYNC_VALIDATOR_NO_WARNING === 'undefined'
) {
if (
errors.every(function (e2) {
return typeof e2 === 'string'
})
) {
console.warn(type4, errors)
}
}
}
}
function convertFieldsError(errors) {
if (!errors || !errors.length) return null
var fields = {}
errors.forEach(function (error2) {
var field2 = error2.field
fields[field2] = fields[field2] || []
fields[field2].push(error2)
})
return fields
}
function format$4(template2) {
for (
var _len = arguments.length,
args = new Array(_len > 1 ? _len - 1 : 0),
_key = 1;
_key < _len;
_key++
) {
args[_key - 1] = arguments[_key]
}
var i2 = 0
var len2 = args.length
if (typeof template2 === 'function') {
return template2.apply(null, args)
}
if (typeof template2 === 'string') {
var str = template2.replace(formatRegExp, function (x2) {
if (x2 === '%%') {
return '%'
}
if (i2 >= len2) {
return x2
}
switch (x2) {
case '%s':
return String(args[i2++])
case '%d':
return Number(args[i2++])
case '%j':
try {
return JSON.stringify(args[i2++])
} catch (_2) {
return '[Circular]'
}
break
default:
return x2
}
})
return str
}
return template2
}
function isNativeStringType(type4) {
return (
type4 === 'string' ||
type4 === 'url' ||
type4 === 'hex' ||
type4 === 'email' ||
type4 === 'date' ||
type4 === 'pattern'
)
}
function isEmptyValue$2(value2, type4) {
if (value2 === void 0 || value2 === null) {
return true
}
if (type4 === 'array' && Array.isArray(value2) && !value2.length) {
return true
}
if (isNativeStringType(type4) && typeof value2 === 'string' && !value2) {
return true
}
return false
}
function asyncParallelArray(arr, func, callback) {
var results = []
var total2 = 0
var arrLength = arr.length
function count2(errors) {
results.push.apply(results, errors || [])
total2++
if (total2 === arrLength) {
callback(results)
}
}
arr.forEach(function (a2) {
func(a2, count2)
})
}
function asyncSerialArray(arr, func, callback) {
var index2 = 0
var arrLength = arr.length
function next(errors) {
if (errors && errors.length) {
callback(errors)
return
}
var original = index2
index2 = index2 + 1
if (original < arrLength) {
func(arr[original], next)
} else {
callback([])
}
}
next([])
}
function flattenObjArr(objArr) {
var ret = []
Object.keys(objArr).forEach(function (k2) {
ret.push.apply(ret, objArr[k2] || [])
})
return ret
}
var AsyncValidationError = /* @__PURE__ */ (function (_Error) {
_inheritsLoose(AsyncValidationError2, _Error)
function AsyncValidationError2(errors, fields) {
var _this
_this = _Error.call(this, 'Async Validation Error') || this
_this.errors = errors
_this.fields = fields
return _this
}
return AsyncValidationError2
})(/* @__PURE__ */ _wrapNativeSuper(Error))
function asyncMap(objArr, option2, func, callback, source2) {
if (option2.first) {
var _pending = new Promise(function (resolve2, reject2) {
var next = function next2(errors) {
callback(errors)
return errors.length
? reject2(
new AsyncValidationError(errors, convertFieldsError(errors))
)
: resolve2(source2)
}
var flattenArr = flattenObjArr(objArr)
asyncSerialArray(flattenArr, func, next)
})
_pending['catch'](function (e2) {
return e2
})
return _pending
}
var firstFields =
option2.firstFields === true
? Object.keys(objArr)
: option2.firstFields || []
var objArrKeys = Object.keys(objArr)
var objArrLength = objArrKeys.length
var total2 = 0
var results = []
var pending = new Promise(function (resolve2, reject2) {
var next = function next2(errors) {
results.push.apply(results, errors)
total2++
if (total2 === objArrLength) {
callback(results)
return results.length
? reject2(
new AsyncValidationError(results, convertFieldsError(results))
)
: resolve2(source2)
}
}
if (!objArrKeys.length) {
callback(results)
resolve2(source2)
}
objArrKeys.forEach(function (key2) {
var arr = objArr[key2]
if (firstFields.indexOf(key2) !== -1) {
asyncSerialArray(arr, func, next)
} else {
asyncParallelArray(arr, func, next)
}
})
})
pending['catch'](function (e2) {
return e2
})
return pending
}
function isErrorObj(obj) {
return !!(obj && obj.message !== void 0)
}
function getValue$3(value2, path) {
var v4 = value2
for (var i2 = 0; i2 < path.length; i2++) {
if (v4 == void 0) {
return v4
}
v4 = v4[path[i2]]
}
return v4
}
function complementError(rule2, source2) {
return function (oe2) {
var fieldValue
if (rule2.fullFields) {
fieldValue = getValue$3(source2, rule2.fullFields)
} else {
fieldValue = source2[oe2.field || rule2.fullField]
}
if (isErrorObj(oe2)) {
oe2.field = oe2.field || rule2.fullField
oe2.fieldValue = fieldValue
return oe2
}
return {
message: typeof oe2 === 'function' ? oe2() : oe2,
fieldValue,
field: oe2.field || rule2.fullField,
}
}
}
function deepMerge(target2, source2) {
if (source2) {
for (var s2 in source2) {
if (source2.hasOwnProperty(s2)) {
var value2 = source2[s2]
if (typeof value2 === 'object' && typeof target2[s2] === 'object') {
target2[s2] = _extends$1({}, target2[s2], value2)
} else {
target2[s2] = value2
}
}
}
}
return target2
}
var required$1 = function required2(
rule2,
value2,
source2,
errors,
options2,
type4
) {
if (
rule2.required &&
(!source2.hasOwnProperty(rule2.field) ||
isEmptyValue$2(value2, type4 || rule2.type))
) {
errors.push(format$4(options2.messages.required, rule2.fullField))
}
}
var whitespace = function whitespace2(
rule2,
value2,
source2,
errors,
options2
) {
if (/^\s+$/.test(value2) || value2 === '') {
errors.push(format$4(options2.messages.whitespace, rule2.fullField))
}
}
var urlReg
var getUrlRegex = function () {
if (urlReg) {
return urlReg
}
var word = '[a-fA-F\\d:]'
var b2 = function b3(options2) {
return options2 && options2.includeBoundaries
? '(?:(?<=\\s|^)(?=' + word + ')|(?<=' + word + ')(?=\\s|$))'
: ''
}
var v4 =
'(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}'
var v6seg = '[a-fA-F\\d]{1,4}'
var v6 = (
'\n(?:\n(?:' +
v6seg +
':){7}(?:' +
v6seg +
'|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:' +
v6seg +
':){6}(?:' +
v4 +
'|:' +
v6seg +
'|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:' +
v6seg +
':){5}(?::' +
v4 +
'|(?::' +
v6seg +
'){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:' +
v6seg +
':){4}(?:(?::' +
v6seg +
'){0,1}:' +
v4 +
'|(?::' +
v6seg +
'){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:' +
v6seg +
':){3}(?:(?::' +
v6seg +
'){0,2}:' +
v4 +
'|(?::' +
v6seg +
'){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:' +
v6seg +
':){2}(?:(?::' +
v6seg +
'){0,3}:' +
v4 +
'|(?::' +
v6seg +
'){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:' +
v6seg +
':){1}(?:(?::' +
v6seg +
'){0,4}:' +
v4 +
'|(?::' +
v6seg +
'){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::' +
v6seg +
'){0,5}:' +
v4 +
'|(?::' +
v6seg +
'){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\n'
)
.replace(/\s*\/\/.*$/gm, '')
.replace(/\n/g, '')
.trim()
var v46Exact = new RegExp('(?:^' + v4 + '$)|(?:^' + v6 + '$)')
var v4exact = new RegExp('^' + v4 + '$')
var v6exact = new RegExp('^' + v6 + '$')
var ip = function ip2(options2) {
return options2 && options2.exact
? v46Exact
: new RegExp(
'(?:' +
b2(options2) +
v4 +
b2(options2) +
')|(?:' +
b2(options2) +
v6 +
b2(options2) +
')',
'g'
)
}
ip.v4 = function (options2) {
return options2 && options2.exact
? v4exact
: new RegExp('' + b2(options2) + v4 + b2(options2), 'g')
}
ip.v6 = function (options2) {
return options2 && options2.exact
? v6exact
: new RegExp('' + b2(options2) + v6 + b2(options2), 'g')
}
var protocol = '(?:(?:[a-z]+:)?//)'
var auth = '(?:\\S+(?::\\S*)?@)?'
var ipv4 = ip.v4().source
var ipv6 = ip.v6().source
var host = '(?:(?:[a-z\\u00a1-\\uffff0-9][-_]*)*[a-z\\u00a1-\\uffff0-9]+)'
var domain = '(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*'
var tld = '(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))'
var port2 = '(?::\\d{2,5})?'
var path = '(?:[/?#][^\\s"]*)?'
var regex3 =
'(?:' +
protocol +
'|www\\.)' +
auth +
'(?:localhost|' +
ipv4 +
'|' +
ipv6 +
'|' +
host +
domain +
tld +
')' +
port2 +
path
urlReg = new RegExp('(?:^' + regex3 + '$)', 'i')
return urlReg
}
var pattern$2 = {
email:
/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,
hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i,
}
var types = {
integer: function integer2(value2) {
return types.number(value2) && parseInt(value2, 10) === value2
},
float: function float2(value2) {
return types.number(value2) && !types.integer(value2)
},
array: function array2(value2) {
return Array.isArray(value2)
},
regexp: function regexp2(value2) {
if (value2 instanceof RegExp) {
return true
}
try {
return !!new RegExp(value2)
} catch (e2) {
return false
}
},
date: function date2(value2) {
return (
typeof value2.getTime === 'function' &&
typeof value2.getMonth === 'function' &&
typeof value2.getYear === 'function' &&
!isNaN(value2.getTime())
)
},
number: function number2(value2) {
if (isNaN(value2)) {
return false
}
return typeof value2 === 'number'
},
object: function object2(value2) {
return typeof value2 === 'object' && !types.array(value2)
},
method: function method2(value2) {
return typeof value2 === 'function'
},
email: function email(value2) {
return (
typeof value2 === 'string' &&
value2.length <= 320 &&
!!value2.match(pattern$2.email)
)
},
url: function url(value2) {
return (
typeof value2 === 'string' &&
value2.length <= 2048 &&
!!value2.match(getUrlRegex())
)
},
hex: function hex(value2) {
return typeof value2 === 'string' && !!value2.match(pattern$2.hex)
},
}
var type$1 = function type2(rule2, value2, source2, errors, options2) {
if (rule2.required && value2 === void 0) {
required$1(rule2, value2, source2, errors, options2)
return
}
var custom = [
'integer',
'float',
'array',
'regexp',
'object',
'method',
'email',
'number',
'date',
'url',
'hex',
]
var ruleType = rule2.type
if (custom.indexOf(ruleType) > -1) {
if (!types[ruleType](value2)) {
errors.push(
format$4(options2.messages.types[ruleType], rule2.fullField, rule2.type)
)
}
} else if (ruleType && typeof value2 !== rule2.type) {
errors.push(
format$4(options2.messages.types[ruleType], rule2.fullField, rule2.type)
)
}
}
var range$2 = function range2(rule2, value2, source2, errors, options2) {
var len2 = typeof rule2.len === 'number'
var min3 = typeof rule2.min === 'number'
var max3 = typeof rule2.max === 'number'
var spRegexp = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g
var val2 = value2
var key2 = null
var num2 = typeof value2 === 'number'
var str = typeof value2 === 'string'
var arr = Array.isArray(value2)
if (num2) {
key2 = 'number'
} else if (str) {
key2 = 'string'
} else if (arr) {
key2 = 'array'
}
if (!key2) {
return false
}
if (arr) {
val2 = value2.length
}
if (str) {
val2 = value2.replace(spRegexp, '_').length
}
if (len2) {
if (val2 !== rule2.len) {
errors.push(
format$4(options2.messages[key2].len, rule2.fullField, rule2.len)
)
}
} else if (min3 && !max3 && val2 < rule2.min) {
errors.push(
format$4(options2.messages[key2].min, rule2.fullField, rule2.min)
)
} else if (max3 && !min3 && val2 > rule2.max) {
errors.push(
format$4(options2.messages[key2].max, rule2.fullField, rule2.max)
)
} else if (min3 && max3 && (val2 < rule2.min || val2 > rule2.max)) {
errors.push(
format$4(
options2.messages[key2].range,
rule2.fullField,
rule2.min,
rule2.max
)
)
}
}
var ENUM$1 = 'enum'
var enumerable$1 = function enumerable2(
rule2,
value2,
source2,
errors,
options2
) {
rule2[ENUM$1] = Array.isArray(rule2[ENUM$1]) ? rule2[ENUM$1] : []
if (rule2[ENUM$1].indexOf(value2) === -1) {
errors.push(
format$4(
options2.messages[ENUM$1],
rule2.fullField,
rule2[ENUM$1].join(', ')
)
)
}
}
var pattern$1 = function pattern2(rule2, value2, source2, errors, options2) {
if (rule2.pattern) {
if (rule2.pattern instanceof RegExp) {
rule2.pattern.lastIndex = 0
if (!rule2.pattern.test(value2)) {
errors.push(
format$4(
options2.messages.pattern.mismatch,
rule2.fullField,
value2,
rule2.pattern
)
)
}
} else if (typeof rule2.pattern === 'string') {
var _pattern = new RegExp(rule2.pattern)
if (!_pattern.test(value2)) {
errors.push(
format$4(
options2.messages.pattern.mismatch,
rule2.fullField,
value2,
rule2.pattern
)
)
}
}
}
}
var rules = {
required: required$1,
whitespace,
type: type$1,
range: range$2,
enum: enumerable$1,
pattern: pattern$1,
}
var string = function string2(rule2, value2, callback, source2, options2) {
var errors = []
var validate =
rule2.required || (!rule2.required && source2.hasOwnProperty(rule2.field))
if (validate) {
if (isEmptyValue$2(value2, 'string') && !rule2.required) {
return callback()
}
rules.required(rule2, value2, source2, errors, options2, 'string')
if (!isEmptyValue$2(value2, 'string')) {
rules.type(rule2, value2, source2, errors, options2)
rules.range(rule2, value2, source2, errors, options2)
rules.pattern(rule2, value2, source2, errors, options2)
if (rule2.whitespace === true) {
rules.whitespace(rule2, value2, source2, errors, options2)
}
}
}
callback(errors)
}
var method$1 = function method3(rule2, value2, callback, source2, options2) {
var errors = []
var validate =
rule2.required || (!rule2.required && source2.hasOwnProperty(rule2.field))
if (validate) {
if (isEmptyValue$2(value2) && !rule2.required) {
return callback()
}
rules.required(rule2, value2, source2, errors, options2)
if (value2 !== void 0) {
rules.type(rule2, value2, source2, errors, options2)
}
}
callback(errors)
}
var number$3 = function number3(rule2, value2, callback, source2, options2) {
var errors = []
var validate =
rule2.required || (!rule2.required && source2.hasOwnProperty(rule2.field))
if (validate) {
if (value2 === '') {
value2 = void 0
}
if (isEmptyValue$2(value2) && !rule2.required) {
return callback()
}
rules.required(rule2, value2, source2, errors, options2)
if (value2 !== void 0) {
rules.type(rule2, value2, source2, errors, options2)
rules.range(rule2, value2, source2, errors, options2)
}
}
callback(errors)
}
var _boolean = function _boolean2(rule2, value2, callback, source2, options2) {
var errors = []
var validate =
rule2.required || (!rule2.required && source2.hasOwnProperty(rule2.field))
if (validate) {
if (isEmptyValue$2(value2) && !rule2.required) {
return callback()
}
rules.required(rule2, value2, source2, errors, options2)
if (value2 !== void 0) {
rules.type(rule2, value2, source2, errors, options2)
}
}
callback(errors)
}
var regexp$1 = function regexp3(rule2, value2, callback, source2, options2) {
var errors = []
var validate =
rule2.required || (!rule2.required && source2.hasOwnProperty(rule2.field))
if (validate) {
if (isEmptyValue$2(value2) && !rule2.required) {
return callback()
}
rules.required(rule2, value2, source2, errors, options2)
if (!isEmptyValue$2(value2)) {
rules.type(rule2, value2, source2, errors, options2)
}
}
callback(errors)
}
var integer = function integer3(rule2, value2, callback, source2, options2) {
var errors = []
var validate =
rule2.required || (!rule2.required && source2.hasOwnProperty(rule2.field))
if (validate) {
if (isEmptyValue$2(value2) && !rule2.required) {
return callback()
}
rules.required(rule2, value2, source2, errors, options2)
if (value2 !== void 0) {
rules.type(rule2, value2, source2, errors, options2)
rules.range(rule2, value2, source2, errors, options2)
}
}
callback(errors)
}
var floatFn = function floatFn2(rule2, value2, callback, source2, options2) {
var errors = []
var validate =
rule2.required || (!rule2.required && source2.hasOwnProperty(rule2.field))
if (validate) {
if (isEmptyValue$2(value2) && !rule2.required) {
return callback()
}
rules.required(rule2, value2, source2, errors, options2)
if (value2 !== void 0) {
rules.type(rule2, value2, source2, errors, options2)
rules.range(rule2, value2, source2, errors, options2)
}
}
callback(errors)
}
var array = function array3(rule2, value2, callback, source2, options2) {
var errors = []
var validate =
rule2.required || (!rule2.required && source2.hasOwnProperty(rule2.field))
if (validate) {
if ((value2 === void 0 || value2 === null) && !rule2.required) {
return callback()
}
rules.required(rule2, value2, source2, errors, options2, 'array')
if (value2 !== void 0 && value2 !== null) {
rules.type(rule2, value2, source2, errors, options2)
rules.range(rule2, value2, source2, errors, options2)
}
}
callback(errors)
}
var object = function object3(rule2, value2, callback, source2, options2) {
var errors = []
var validate =
rule2.required || (!rule2.required && source2.hasOwnProperty(rule2.field))
if (validate) {
if (isEmptyValue$2(value2) && !rule2.required) {
return callback()
}
rules.required(rule2, value2, source2, errors, options2)
if (value2 !== void 0) {
rules.type(rule2, value2, source2, errors, options2)
}
}
callback(errors)
}
var ENUM = 'enum'
var enumerable = function enumerable3(
rule2,
value2,
callback,
source2,
options2
) {
var errors = []
var validate =
rule2.required || (!rule2.required && source2.hasOwnProperty(rule2.field))
if (validate) {
if (isEmptyValue$2(value2) && !rule2.required) {
return callback()
}
rules.required(rule2, value2, source2, errors, options2)
if (value2 !== void 0) {
rules[ENUM](rule2, value2, source2, errors, options2)
}
}
callback(errors)
}
var pattern = function pattern3(rule2, value2, callback, source2, options2) {
var errors = []
var validate =
rule2.required || (!rule2.required && source2.hasOwnProperty(rule2.field))
if (validate) {
if (isEmptyValue$2(value2, 'string') && !rule2.required) {
return callback()
}
rules.required(rule2, value2, source2, errors, options2)
if (!isEmptyValue$2(value2, 'string')) {
rules.pattern(rule2, value2, source2, errors, options2)
}
}
callback(errors)
}
var date$1 = function date3(rule2, value2, callback, source2, options2) {
var errors = []
var validate =
rule2.required || (!rule2.required && source2.hasOwnProperty(rule2.field))
if (validate) {
if (isEmptyValue$2(value2, 'date') && !rule2.required) {
return callback()
}
rules.required(rule2, value2, source2, errors, options2)
if (!isEmptyValue$2(value2, 'date')) {
var dateObject
if (value2 instanceof Date) {
dateObject = value2
} else {
dateObject = new Date(value2)
}
rules.type(rule2, dateObject, source2, errors, options2)
if (dateObject) {
rules.range(rule2, dateObject.getTime(), source2, errors, options2)
}
}
}
callback(errors)
}
var required = function required3(rule2, value2, callback, source2, options2) {
var errors = []
var type4 = Array.isArray(value2) ? 'array' : typeof value2
rules.required(rule2, value2, source2, errors, options2, type4)
callback(errors)
}
var type$2 = function type3(rule2, value2, callback, source2, options2) {
var ruleType = rule2.type
var errors = []
var validate =
rule2.required || (!rule2.required && source2.hasOwnProperty(rule2.field))
if (validate) {
if (isEmptyValue$2(value2, ruleType) && !rule2.required) {
return callback()
}
rules.required(rule2, value2, source2, errors, options2, ruleType)
if (!isEmptyValue$2(value2, ruleType)) {
rules.type(rule2, value2, source2, errors, options2)
}
}
callback(errors)
}
var any = function any2(rule2, value2, callback, source2, options2) {
var errors = []
var validate =
rule2.required || (!rule2.required && source2.hasOwnProperty(rule2.field))
if (validate) {
if (isEmptyValue$2(value2) && !rule2.required) {
return callback()
}
rules.required(rule2, value2, source2, errors, options2)
}
callback(errors)
}
var validators$3 = {
string,
method: method$1,
number: number$3,
boolean: _boolean,
regexp: regexp$1,
integer,
float: floatFn,
array,
object,
enum: enumerable,
pattern,
date: date$1,
url: type$2,
hex: type$2,
email: type$2,
required,
any,
}
function newMessages() {
return {
default: 'Validation error on field %s',
required: '%s is required',
enum: '%s must be one of %s',
whitespace: '%s cannot be empty',
date: {
format: '%s date %s is invalid for format %s',
parse: '%s date could not be parsed, %s is invalid ',
invalid: '%s date %s is invalid',
},
types: {
string: '%s is not a %s',
method: '%s is not a %s (function)',
array: '%s is not an %s',
object: '%s is not an %s',
number: '%s is not a %s',
date: '%s is not a %s',
boolean: '%s is not a %s',
integer: '%s is not an %s',
float: '%s is not a %s',
regexp: '%s is not a valid %s',
email: '%s is not a valid %s',
url: '%s is not a valid %s',
hex: '%s is not a valid %s',
},
string: {
len: '%s must be exactly %s characters',
min: '%s must be at least %s characters',
max: '%s cannot be longer than %s characters',
range: '%s must be between %s and %s characters',
},
number: {
len: '%s must equal %s',
min: '%s cannot be less than %s',
max: '%s cannot be greater than %s',
range: '%s must be between %s and %s',
},
array: {
len: '%s must be exactly %s in length',
min: '%s cannot be less than %s in length',
max: '%s cannot be greater than %s in length',
range: '%s must be between %s and %s in length',
},
pattern: {
mismatch: '%s value %s does not match pattern %s',
},
clone: function clone2() {
var cloned = JSON.parse(JSON.stringify(this))
cloned.clone = this.clone
return cloned
},
}
}
var messages = newMessages()
var Schema = /* @__PURE__ */ (function () {
function Schema2(descriptor) {
this.rules = null
this._messages = messages
this.define(descriptor)
}
var _proto = Schema2.prototype
_proto.define = function define(rules2) {
var _this = this
if (!rules2) {
throw new Error('Cannot configure a schema with no rules')
}
if (typeof rules2 !== 'object' || Array.isArray(rules2)) {
throw new Error('Rules must be an object')
}
this.rules = {}
Object.keys(rules2).forEach(function (name2) {
var item2 = rules2[name2]
_this.rules[name2] = Array.isArray(item2) ? item2 : [item2]
})
}
_proto.messages = function messages2(_messages) {
if (_messages) {
this._messages = deepMerge(newMessages(), _messages)
}
return this._messages
}
_proto.validate = function validate(source_, o2, oc) {
var _this2 = this
if (o2 === void 0) {
o2 = {}
}
if (oc === void 0) {
oc = function oc2() {}
}
var source2 = source_
var options2 = o2
var callback = oc
if (typeof options2 === 'function') {
callback = options2
options2 = {}
}
if (!this.rules || Object.keys(this.rules).length === 0) {
if (callback) {
callback(null, source2)
}
return Promise.resolve(source2)
}
function complete(results) {
var errors = []
var fields = {}
function add2(e2) {
if (Array.isArray(e2)) {
var _errors
errors = (_errors = errors).concat.apply(_errors, e2)
} else {
errors.push(e2)
}
}
for (var i2 = 0; i2 < results.length; i2++) {
add2(results[i2])
}
if (!errors.length) {
callback(null, source2)
} else {
fields = convertFieldsError(errors)
callback(errors, fields)
}
}
if (options2.messages) {
var messages$1 = this.messages()
if (messages$1 === messages) {
messages$1 = newMessages()
}
deepMerge(messages$1, options2.messages)
options2.messages = messages$1
} else {
options2.messages = this.messages()
}
var series = {}
var keys3 = options2.keys || Object.keys(this.rules)
keys3.forEach(function (z2) {
var arr = _this2.rules[z2]
var value2 = source2[z2]
arr.forEach(function (r2) {
var rule2 = r2
if (typeof rule2.transform === 'function') {
if (source2 === source_) {
source2 = _extends$1({}, source2)
}
value2 = source2[z2] = rule2.transform(value2)
}
if (typeof rule2 === 'function') {
rule2 = {
validator: rule2,
}
} else {
rule2 = _extends$1({}, rule2)
}
rule2.validator = _this2.getValidationMethod(rule2)
if (!rule2.validator) {
return
}
rule2.field = z2
rule2.fullField = rule2.fullField || z2
rule2.type = _this2.getType(rule2)
series[z2] = series[z2] || []
series[z2].push({
rule: rule2,
value: value2,
source: source2,
field: z2,
})
})
})
var errorFields = {}
return asyncMap(
series,
options2,
function (data2, doIt) {
var rule2 = data2.rule
var deep =
(rule2.type === 'object' || rule2.type === 'array') &&
(typeof rule2.fields === 'object' ||
typeof rule2.defaultField === 'object')
deep = deep && (rule2.required || (!rule2.required && data2.value))
rule2.field = data2.field
function addFullField(key2, schema) {
return _extends$1({}, schema, {
fullField: rule2.fullField + '.' + key2,
fullFields: rule2.fullFields
? [].concat(rule2.fullFields, [key2])
: [key2],
})
}
function cb(e2) {
if (e2 === void 0) {
e2 = []
}
var errorList = Array.isArray(e2) ? e2 : [e2]
if (!options2.suppressWarning && errorList.length) {
Schema2.warning('async-validator:', errorList)
}
if (errorList.length && rule2.message !== void 0) {
errorList = [].concat(rule2.message)
}
var filledErrors = errorList.map(complementError(rule2, source2))
if (options2.first && filledErrors.length) {
errorFields[rule2.field] = 1
return doIt(filledErrors)
}
if (!deep) {
doIt(filledErrors)
} else {
if (rule2.required && !data2.value) {
if (rule2.message !== void 0) {
filledErrors = []
.concat(rule2.message)
.map(complementError(rule2, source2))
} else if (options2.error) {
filledErrors = [
options2.error(
rule2,
format$4(options2.messages.required, rule2.field)
),
]
}
return doIt(filledErrors)
}
var fieldsSchema = {}
if (rule2.defaultField) {
Object.keys(data2.value).map(function (key2) {
fieldsSchema[key2] = rule2.defaultField
})
}
fieldsSchema = _extends$1({}, fieldsSchema, data2.rule.fields)
var paredFieldsSchema = {}
Object.keys(fieldsSchema).forEach(function (field2) {
var fieldSchema = fieldsSchema[field2]
var fieldSchemaList = Array.isArray(fieldSchema)
? fieldSchema
: [fieldSchema]
paredFieldsSchema[field2] = fieldSchemaList.map(
addFullField.bind(null, field2)
)
})
var schema = new Schema2(paredFieldsSchema)
schema.messages(options2.messages)
if (data2.rule.options) {
data2.rule.options.messages = options2.messages
data2.rule.options.error = options2.error
}
schema.validate(
data2.value,
data2.rule.options || options2,
function (errs) {
var finalErrors = []
if (filledErrors && filledErrors.length) {
finalErrors.push.apply(finalErrors, filledErrors)
}
if (errs && errs.length) {
finalErrors.push.apply(finalErrors, errs)
}
doIt(finalErrors.length ? finalErrors : null)
}
)
}
}
var res
if (rule2.asyncValidator) {
res = rule2.asyncValidator(
rule2,
data2.value,
cb,
data2.source,
options2
)
} else if (rule2.validator) {
try {
res = rule2.validator(
rule2,
data2.value,
cb,
data2.source,
options2
)
} catch (error2) {
console.error == null ? void 0 : console.error(error2)
if (!options2.suppressValidatorError) {
setTimeout(function () {
throw error2
}, 0)
}
cb(error2.message)
}
if (res === true) {
cb()
} else if (res === false) {
cb(
typeof rule2.message === 'function'
? rule2.message(rule2.fullField || rule2.field)
: rule2.message || (rule2.fullField || rule2.field) + ' fails'
)
} else if (res instanceof Array) {
cb(res)
} else if (res instanceof Error) {
cb(res.message)
}
}
if (res && res.then) {
res.then(
function () {
return cb()
},
function (e2) {
return cb(e2)
}
)
}
},
function (results) {
complete(results)
},
source2
)
}
_proto.getType = function getType2(rule2) {
if (rule2.type === void 0 && rule2.pattern instanceof RegExp) {
rule2.type = 'pattern'
}
if (
typeof rule2.validator !== 'function' &&
rule2.type &&
!validators$3.hasOwnProperty(rule2.type)
) {
throw new Error(format$4('Unknown rule type %s', rule2.type))
}
return rule2.type || 'string'
}
_proto.getValidationMethod = function getValidationMethod(rule2) {
if (typeof rule2.validator === 'function') {
return rule2.validator
}
var keys3 = Object.keys(rule2)
var messageIndex = keys3.indexOf('message')
if (messageIndex !== -1) {
keys3.splice(messageIndex, 1)
}
if (keys3.length === 1 && keys3[0] === 'required') {
return validators$3.required
}
return validators$3[this.getType(rule2)] || void 0
}
return Schema2
})()
Schema.register = function register2(type4, validator2) {
if (typeof validator2 !== 'function') {
throw new Error(
'Cannot register a validator by type, validator is not a function'
)
}
validators$3[type4] = validator2
}
Schema.warning = warning
Schema.messages = messages
Schema.validators = validators$3
const formItemValidateStates = ['', 'error', 'validating', 'success']
const formItemProps$1 = buildProps({
label: String,
labelWidth: {
type: [String, Number],
default: '',
},
prop: {
type: definePropType([String, Array]),
},
required: {
type: Boolean,
default: void 0,
},
rules: {
type: definePropType([Object, Array]),
},
error: String,
validateStatus: {
type: String,
values: formItemValidateStates,
},
for: String,
inlineMessage: {
type: [String, Boolean],
default: '',
},
showMessage: {
type: Boolean,
default: true,
},
size: {
type: String,
values: componentSizes,
},
})
const COMPONENT_NAME$a = 'ElLabelWrap'
var FormLabelWrap = defineComponent({
name: COMPONENT_NAME$a,
props: {
isAutoWidth: Boolean,
updateAll: Boolean,
},
setup(props2, { slots }) {
const formContext = inject(formContextKey)
const formItemContext = inject(formItemContextKey)
if (!formContext || !formItemContext)
throwError$1(
COMPONENT_NAME$a,
'usage: '
)
const ns = useNamespace('form')
const el2 = ref()
const computedWidth = ref(0)
const getLabelWidth = () => {
var _a2
if ((_a2 = el2.value) == null ? void 0 : _a2.firstElementChild) {
const width = window.getComputedStyle(el2.value.firstElementChild).width
return Math.ceil(Number.parseFloat(width))
} else {
return 0
}
}
const updateLabelWidth = (action = 'update') => {
nextTick(() => {
if (slots.default && props2.isAutoWidth) {
if (action === 'update') {
computedWidth.value = getLabelWidth()
} else if (action === 'remove') {
formContext.deregisterLabelWidth(computedWidth.value)
}
}
})
}
const updateLabelWidthFn = () => updateLabelWidth('update')
onMounted(() => {
updateLabelWidthFn()
})
onBeforeUnmount(() => {
updateLabelWidth('remove')
})
onUpdated(() => updateLabelWidthFn())
watch$1(computedWidth, (val2, oldVal) => {
if (props2.updateAll) {
formContext.registerLabelWidth(val2, oldVal)
}
})
useResizeObserver$1(
computed(() => {
var _a2, _b2
return (_b2 =
(_a2 = el2.value) == null ? void 0 : _a2.firstElementChild) != null
? _b2
: null
}),
updateLabelWidthFn
)
return () => {
var _a2, _b2
if (!slots) return null
const { isAutoWidth } = props2
if (isAutoWidth) {
const autoLabelWidth = formContext.autoLabelWidth
const style2 = {}
if (autoLabelWidth && autoLabelWidth !== 'auto') {
const marginWidth = Math.max(
0,
Number.parseInt(autoLabelWidth, 10) - computedWidth.value
)
const marginPosition =
formContext.labelPosition === 'left' ? 'marginRight' : 'marginLeft'
if (marginWidth) {
style2[marginPosition] = `${marginWidth}px`
}
}
return createVNode$1(
'div',
{
ref: el2,
class: [ns.be('item', 'label-wrap')],
style: style2,
},
[(_a2 = slots.default) == null ? void 0 : _a2.call(slots)]
)
} else {
return createVNode$1(
Fragment,
{
ref: el2,
},
[(_b2 = slots.default) == null ? void 0 : _b2.call(slots)]
)
}
}
},
})
const _hoisted_1$6u = ['for']
const __default__$l = {
name: 'ElFormItem',
}
const _sfc_main$84 = /* @__PURE__ */ defineComponent({
...__default__$l,
props: formItemProps$1,
setup(__props2, { expose }) {
const props2 = __props2
const COMPONENT_NAME2 = 'ElFormItem'
const slots = useSlots()
const formContext = inject(formContextKey)
if (!formContext)
throwError$1(
COMPONENT_NAME2,
'usage: '
)
const parentFormItemContext = inject(formItemContextKey, void 0)
const _size = useSize$1(void 0, { formItem: false })
const ns = useNamespace('form-item')
const validateState = ref('')
const validateStateDebounced = refDebounced$1(validateState, 100)
const validateMessage = ref('')
const formItemRef = ref()
let initialValue = void 0
let isResettingField = false
const labelStyle = computed(() => {
if (formContext.labelPosition === 'top') {
return {}
}
const labelWidth = addUnit(
props2.labelWidth || formContext.labelWidth || ''
)
if (labelWidth) return { width: labelWidth }
return {}
})
const contentStyle = computed(() => {
if (formContext.labelPosition === 'top' || formContext.inline) {
return {}
}
if (!props2.label && !props2.labelWidth && isNested) {
return {}
}
const labelWidth = addUnit(
props2.labelWidth || formContext.labelWidth || ''
)
if (!props2.label && !slots.label) {
return { marginLeft: labelWidth }
}
return {}
})
const formItemClasses = computed(() => [
ns.b(),
ns.m(_size.value),
ns.is('error', validateState.value === 'error'),
ns.is('validating', validateState.value === 'validating'),
ns.is('success', validateState.value === 'success'),
ns.is('required', isRequired.value || props2.required),
ns.is('no-asterisk', formContext.hideRequiredAsterisk),
{ [ns.m('feedback')]: formContext.statusIcon },
])
const _inlineMessage = computed(() =>
isBoolean$5(props2.inlineMessage)
? props2.inlineMessage
: formContext.inlineMessage || false
)
const validateClasses = computed(() => [
ns.e('error'),
{ [ns.em('error', 'inline')]: _inlineMessage.value },
])
const propString = computed(() => {
if (!props2.prop) return ''
return isString$f(props2.prop) ? props2.prop : props2.prop.join('.')
})
const labelFor = computed(() => props2.for || propString.value)
const isNested = !!parentFormItemContext
const fieldValue = computed(() => {
const model = formContext.model
if (!model || !props2.prop) {
return
}
return getProp(model, props2.prop).value
})
const _rules = computed(() => {
const rules2 = props2.rules ? castArray$1(props2.rules) : []
const formRules = formContext.rules
if (formRules && props2.prop) {
const _rules2 = getProp(formRules, props2.prop).value
if (_rules2) {
rules2.push(...castArray$1(_rules2))
}
}
if (props2.required !== void 0) {
rules2.push({ required: !!props2.required })
}
return rules2
})
const validateEnabled = computed(() => _rules.value.length > 0)
const getFilteredRule = (trigger2) => {
const rules2 = _rules.value
return rules2
.filter((rule2) => {
if (!rule2.trigger || !trigger2) return true
if (Array.isArray(rule2.trigger)) {
return rule2.trigger.includes(trigger2)
} else {
return rule2.trigger === trigger2
}
})
.map(({ trigger: trigger22, ...rule2 }) => rule2)
}
const isRequired = computed(() =>
_rules.value.some((rule2) => rule2.required === true)
)
const shouldShowError = computed(
() =>
validateStateDebounced.value === 'error' &&
props2.showMessage &&
formContext.showMessage
)
const currentLabel = computed(
() => `${props2.label || ''}${formContext.labelSuffix || ''}`
)
const setValidationState = (state2) => {
validateState.value = state2
}
const onValidationFailed = (error2) => {
var _a2, _b2
const { errors, fields } = error2
if (!errors || !fields) {
console.error(error2)
}
setValidationState('error')
validateMessage.value = errors
? (_b2 =
(_a2 = errors == null ? void 0 : errors[0]) == null
? void 0
: _a2.message) != null
? _b2
: `${props2.prop} is required`
: ''
formContext.emit('validate', props2.prop, false, validateMessage.value)
}
const onValidationSucceeded = () => {
setValidationState('success')
formContext.emit('validate', props2.prop, true, '')
}
const doValidate = async (rules2) => {
const modelName = propString.value
const validator2 = new Schema({
[modelName]: rules2,
})
return validator2
.validate({ [modelName]: fieldValue.value }, { firstFields: true })
.then(() => {
onValidationSucceeded()
return true
})
.catch((err) => {
onValidationFailed(err)
return Promise.reject(err)
})
}
const validate = async (trigger2, callback) => {
if (isResettingField) {
isResettingField = false
return false
}
const hasCallback = isFunction$l(callback)
if (!validateEnabled.value) {
callback == null ? void 0 : callback(false)
return false
}
const rules2 = getFilteredRule(trigger2)
if (rules2.length === 0) {
callback == null ? void 0 : callback(true)
return true
}
setValidationState('validating')
return doValidate(rules2)
.then(() => {
callback == null ? void 0 : callback(true)
return true
})
.catch((err) => {
const { fields } = err
callback == null ? void 0 : callback(false, fields)
return hasCallback ? false : Promise.reject(fields)
})
}
const clearValidate = () => {
setValidationState('')
validateMessage.value = ''
}
const resetField = async () => {
const model = formContext.model
if (!model || !props2.prop) return
const computedValue = getProp(model, props2.prop)
if (!isEqual$4(computedValue.value, initialValue)) {
isResettingField = true
}
computedValue.value = initialValue
await nextTick()
clearValidate()
}
watch$1(
() => props2.error,
(val2) => {
validateMessage.value = val2 || ''
setValidationState(val2 ? 'error' : '')
},
{ immediate: true }
)
watch$1(
() => props2.validateStatus,
(val2) => setValidationState(val2 || '')
)
const context2 = reactive({
...toRefs$2(props2),
$el: formItemRef,
size: _size,
validateState,
resetField,
clearValidate,
validate,
})
provide(formItemContextKey, context2)
onMounted(() => {
if (props2.prop) {
formContext.addField(context2)
initialValue = clone$b(fieldValue.value)
}
})
onBeforeUnmount(() => {
formContext.removeField(context2)
})
expose({
size: _size,
validateMessage,
validateState,
validate,
clearValidate,
resetField,
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
ref_key: 'formItemRef',
ref: formItemRef,
class: normalizeClass(unref(formItemClasses)),
},
[
createVNode$1(
unref(FormLabelWrap),
{
'is-auto-width': unref(labelStyle).width === 'auto',
'update-all': unref(formContext).labelWidth === 'auto',
},
{
default: withCtx(() => [
_ctx.label || _ctx.$slots.label
? (openBlock(),
createElementBlock(
'label',
{
key: 0,
for: unref(labelFor),
class: normalizeClass(unref(ns).e('label')),
style: normalizeStyle$1(unref(labelStyle)),
},
[
renderSlot(
_ctx.$slots,
'label',
{ label: unref(currentLabel) },
() => [
createTextVNode(
toDisplayString$1(unref(currentLabel)),
1
),
]
),
],
14,
_hoisted_1$6u
))
: createCommentVNode('v-if', true),
]),
_: 3,
},
8,
['is-auto-width', 'update-all']
),
createElementVNode(
'div',
{
class: normalizeClass(unref(ns).e('content')),
style: normalizeStyle$1(unref(contentStyle)),
},
[
renderSlot(_ctx.$slots, 'default'),
createVNode$1(
Transition,
{
name: `${unref(ns).namespace.value}-zoom-in-top`,
},
{
default: withCtx(() => [
unref(shouldShowError)
? renderSlot(
_ctx.$slots,
'error',
{
key: 0,
error: validateMessage.value,
},
() => [
createElementVNode(
'div',
{
class: normalizeClass(unref(validateClasses)),
},
toDisplayString$1(validateMessage.value),
3
),
]
)
: createCommentVNode('v-if', true),
]),
_: 3,
},
8,
['name']
),
],
6
),
],
2
)
)
}
},
})
var FormItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$84, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/form/src/form-item.vue',
],
])
const ElForm = withInstall(Form, {
FormItem,
})
const ElFormItem = withNoopInstall(FormItem)
const imageViewerProps = buildProps({
urlList: {
type: definePropType(Array),
default: () => mutable([]),
},
zIndex: {
type: Number,
},
initialIndex: {
type: Number,
default: 0,
},
infinite: {
type: Boolean,
default: true,
},
hideOnClickModal: {
type: Boolean,
default: false,
},
teleported: {
type: Boolean,
default: false,
},
})
const imageViewerEmits = {
close: () => true,
switch: (index2) => typeof index2 === 'number',
}
const _hoisted_1$6t = ['src']
const __default__$k = {
name: 'ElImageViewer',
}
const _sfc_main$83 = /* @__PURE__ */ defineComponent({
...__default__$k,
props: imageViewerProps,
emits: imageViewerEmits,
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const Mode = {
CONTAIN: {
name: 'contain',
icon: markRaw(fullScreen),
},
ORIGINAL: {
name: 'original',
icon: markRaw(scaleToOriginal),
},
}
const mousewheelEventName = isFirefox() ? 'DOMMouseScroll' : 'mousewheel'
const { t: t3 } = useLocale()
const ns = useNamespace('image-viewer')
const { nextZIndex: nextZIndex2 } = useZIndex()
const wrapper = ref()
const imgRefs = ref([])
const scopeEventListener = effectScope()
const loading2 = ref(true)
const index2 = ref(props2.initialIndex)
const mode2 = ref(Mode.CONTAIN)
const transform3 = ref({
scale: 1,
deg: 0,
offsetX: 0,
offsetY: 0,
enableTransition: false,
})
const isSingle = computed(() => {
const { urlList } = props2
return urlList.length <= 1
})
const isFirst = computed(() => {
return index2.value === 0
})
const isLast = computed(() => {
return index2.value === props2.urlList.length - 1
})
const currentImg = computed(() => {
return props2.urlList[index2.value]
})
const imgStyle = computed(() => {
const {
scale: scale2,
deg: deg2,
offsetX,
offsetY,
enableTransition,
} = transform3.value
let translateX = offsetX / scale2
let translateY = offsetY / scale2
switch (deg2 % 360) {
case 90:
case -270:
;[translateX, translateY] = [translateY, -translateX]
break
case 180:
case -180:
;[translateX, translateY] = [-translateX, -translateY]
break
case 270:
case -90:
;[translateX, translateY] = [-translateY, translateX]
break
}
const style2 = {
transform: `scale(${scale2}) rotate(${deg2}deg) translate(${translateX}px, ${translateY}px)`,
transition: enableTransition ? 'transform .3s' : '',
}
if (mode2.value.name === Mode.CONTAIN.name) {
style2.maxWidth = style2.maxHeight = '100%'
}
return style2
})
const computedZIndex = computed(() => {
return isNumber$h(props2.zIndex) ? props2.zIndex : nextZIndex2()
})
function hide2() {
unregisterEventListener()
emit2('close')
}
function registerEventListener() {
const keydownHandler = throttle$4((e2) => {
switch (e2.code) {
case EVENT_CODE.esc:
hide2()
break
case EVENT_CODE.space:
toggleMode()
break
case EVENT_CODE.left:
prev()
break
case EVENT_CODE.up:
handleActions('zoomIn')
break
case EVENT_CODE.right:
next()
break
case EVENT_CODE.down:
handleActions('zoomOut')
break
}
})
const mousewheelHandler = throttle$4((e2) => {
const delta = e2.wheelDelta ? e2.wheelDelta : -e2.detail
if (delta > 0) {
handleActions('zoomIn', {
zoomRate: 1.2,
enableTransition: false,
})
} else {
handleActions('zoomOut', {
zoomRate: 1.2,
enableTransition: false,
})
}
})
scopeEventListener.run(() => {
useEventListener$1(document, 'keydown', keydownHandler)
useEventListener$1(document, mousewheelEventName, mousewheelHandler)
})
}
function unregisterEventListener() {
scopeEventListener.stop()
}
function handleImgLoad() {
loading2.value = false
}
function handleImgError(e2) {
loading2.value = false
e2.target.alt = t3('el.image.error')
}
function handleMouseDown(e2) {
if (loading2.value || e2.button !== 0 || !wrapper.value) return
transform3.value.enableTransition = false
const { offsetX, offsetY } = transform3.value
const startX = e2.pageX
const startY = e2.pageY
const dragHandler = throttle$4((ev) => {
transform3.value = {
...transform3.value,
offsetX: offsetX + ev.pageX - startX,
offsetY: offsetY + ev.pageY - startY,
}
})
const removeMousemove = useEventListener$1(
document,
'mousemove',
dragHandler
)
useEventListener$1(document, 'mouseup', () => {
removeMousemove()
})
e2.preventDefault()
}
function reset2() {
transform3.value = {
scale: 1,
deg: 0,
offsetX: 0,
offsetY: 0,
enableTransition: false,
}
}
function toggleMode() {
if (loading2.value) return
const modeNames = Object.keys(Mode)
const modeValues = Object.values(Mode)
const currentMode = mode2.value.name
const index22 = modeValues.findIndex((i2) => i2.name === currentMode)
const nextIndex = (index22 + 1) % modeNames.length
mode2.value = Mode[modeNames[nextIndex]]
reset2()
}
function prev() {
if (isFirst.value && !props2.infinite) return
const len2 = props2.urlList.length
index2.value = (index2.value - 1 + len2) % len2
}
function next() {
if (isLast.value && !props2.infinite) return
const len2 = props2.urlList.length
index2.value = (index2.value + 1) % len2
}
function handleActions(action, options2 = {}) {
if (loading2.value) return
const { zoomRate, rotateDeg, enableTransition } = {
zoomRate: 1.4,
rotateDeg: 90,
enableTransition: true,
...options2,
}
switch (action) {
case 'zoomOut':
if (transform3.value.scale > 0.2) {
transform3.value.scale = Number.parseFloat(
(transform3.value.scale / zoomRate).toFixed(3)
)
}
break
case 'zoomIn':
if (transform3.value.scale < 7) {
transform3.value.scale = Number.parseFloat(
(transform3.value.scale * zoomRate).toFixed(3)
)
}
break
case 'clockwise':
transform3.value.deg += rotateDeg
break
case 'anticlockwise':
transform3.value.deg -= rotateDeg
break
}
transform3.value.enableTransition = enableTransition
}
watch$1(currentImg, () => {
nextTick(() => {
const $img = imgRefs.value[0]
if (!($img == null ? void 0 : $img.complete)) {
loading2.value = true
}
})
})
watch$1(index2, (val2) => {
reset2()
emit2('switch', val2)
})
onMounted(() => {
var _a2, _b2
registerEventListener()
;(_b2 = (_a2 = wrapper.value) == null ? void 0 : _a2.focus) == null
? void 0
: _b2.call(_a2)
})
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
Teleport,
{
to: 'body',
disabled: !_ctx.teleported,
},
[
createVNode$1(
Transition,
{
name: 'viewer-fade',
appear: '',
},
{
default: withCtx(() => [
createElementVNode(
'div',
{
ref_key: 'wrapper',
ref: wrapper,
tabindex: -1,
class: normalizeClass(unref(ns).e('wrapper')),
style: normalizeStyle$1({
zIndex: unref(computedZIndex),
}),
},
[
createElementVNode(
'div',
{
class: normalizeClass(unref(ns).e('mask')),
onClick:
_cache[0] ||
(_cache[0] = withModifiers(
($event) => _ctx.hideOnClickModal && hide2(),
['self']
)),
},
null,
2
),
createCommentVNode(' CLOSE '),
createElementVNode(
'span',
{
class: normalizeClass([
unref(ns).e('btn'),
unref(ns).e('close'),
]),
onClick: hide2,
},
[
createVNode$1(unref(ElIcon), null, {
default: withCtx(() => [
createVNode$1(unref(close$2)),
]),
_: 1,
}),
],
2
),
createCommentVNode(' ARROW '),
!unref(isSingle)
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
createElementVNode(
'span',
{
class: normalizeClass([
unref(ns).e('btn'),
unref(ns).e('prev'),
unref(ns).is(
'disabled',
!_ctx.infinite && unref(isFirst)
),
]),
onClick: prev,
},
[
createVNode$1(unref(ElIcon), null, {
default: withCtx(() => [
createVNode$1(unref(arrowLeft)),
]),
_: 1,
}),
],
2
),
createElementVNode(
'span',
{
class: normalizeClass([
unref(ns).e('btn'),
unref(ns).e('next'),
unref(ns).is(
'disabled',
!_ctx.infinite && unref(isLast)
),
]),
onClick: next,
},
[
createVNode$1(unref(ElIcon), null, {
default: withCtx(() => [
createVNode$1(unref(arrowRight)),
]),
_: 1,
}),
],
2
),
],
64
))
: createCommentVNode('v-if', true),
createCommentVNode(' ACTIONS '),
createElementVNode(
'div',
{
class: normalizeClass([
unref(ns).e('btn'),
unref(ns).e('actions'),
]),
},
[
createElementVNode(
'div',
{
class: normalizeClass(
unref(ns).e('actions__inner')
),
},
[
createVNode$1(
unref(ElIcon),
{
onClick:
_cache[1] ||
(_cache[1] = ($event) =>
handleActions('zoomOut')),
},
{
default: withCtx(() => [
createVNode$1(unref(zoomOut)),
]),
_: 1,
}
),
createVNode$1(
unref(ElIcon),
{
onClick:
_cache[2] ||
(_cache[2] = ($event) =>
handleActions('zoomIn')),
},
{
default: withCtx(() => [
createVNode$1(unref(zoomIn)),
]),
_: 1,
}
),
createElementVNode(
'i',
{
class: normalizeClass(
unref(ns).e('actions__divider')
),
},
null,
2
),
createVNode$1(
unref(ElIcon),
{ onClick: toggleMode },
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(mode2.value.icon)
)),
]),
_: 1,
}
),
createElementVNode(
'i',
{
class: normalizeClass(
unref(ns).e('actions__divider')
),
},
null,
2
),
createVNode$1(
unref(ElIcon),
{
onClick:
_cache[3] ||
(_cache[3] = ($event) =>
handleActions('anticlockwise')),
},
{
default: withCtx(() => [
createVNode$1(unref(refreshLeft)),
]),
_: 1,
}
),
createVNode$1(
unref(ElIcon),
{
onClick:
_cache[4] ||
(_cache[4] = ($event) =>
handleActions('clockwise')),
},
{
default: withCtx(() => [
createVNode$1(unref(refreshRight)),
]),
_: 1,
}
),
],
2
),
],
2
),
createCommentVNode(' CANVAS '),
createElementVNode(
'div',
{
class: normalizeClass(unref(ns).e('canvas')),
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.urlList, (url2, i2) => {
return withDirectives(
(openBlock(),
createElementBlock(
'img',
{
ref_for: true,
ref: (el2) => (imgRefs.value[i2] = el2),
key: url2,
src: url2,
style: normalizeStyle$1(unref(imgStyle)),
class: normalizeClass(unref(ns).e('img')),
onLoad: handleImgLoad,
onError: handleImgError,
onMousedown: handleMouseDown,
},
null,
46,
_hoisted_1$6t
)),
[[vShow, i2 === index2.value]]
)
}),
128
)),
],
2
),
renderSlot(_ctx.$slots, 'default'),
],
6
),
]),
_: 3,
}
),
],
8,
['disabled']
)
)
}
},
})
var ImageViewer = /* @__PURE__ */ _export_sfc$1(_sfc_main$83, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/image-viewer/src/image-viewer.vue',
],
])
const ElImageViewer = withInstall(ImageViewer)
const imageProps = buildProps({
appendToBody: {
type: Boolean,
default: void 0,
},
hideOnClickModal: {
type: Boolean,
default: false,
},
src: {
type: String,
default: '',
},
fit: {
type: String,
values: ['', 'contain', 'cover', 'fill', 'none', 'scale-down'],
default: '',
},
lazy: {
type: Boolean,
default: false,
},
scrollContainer: {
type: definePropType([String, Object]),
},
previewSrcList: {
type: definePropType(Array),
default: () => mutable([]),
},
previewTeleported: {
type: Boolean,
default: false,
},
zIndex: {
type: Number,
},
initialIndex: {
type: Number,
default: 0,
},
})
const imageEmits = {
error: (evt) => evt instanceof Event,
switch: (val2) => isNumber$h(val2),
close: () => true,
}
const _hoisted_1$6s = ['src']
const _hoisted_2$5e = { key: 0 }
const __default__$j = {
name: 'ElImage',
}
const _sfc_main$82 = /* @__PURE__ */ defineComponent({
...__default__$j,
props: imageProps,
emits: imageEmits,
setup(__props2, { emit: emit2 }) {
const props2 = __props2
let prevOverflow = ''
useDeprecated(
{
scope: 'el-image',
from: 'append-to-body',
replacement: 'preview-teleported',
version: '2.2.0',
ref: 'https://element-plus.org/en-US/component/image.html#image-attributess',
},
computed(() => isBoolean$5(props2.appendToBody))
)
const { t: t3 } = useLocale()
const ns = useNamespace('image')
const attrs = useAttrs()
const hasLoadError = ref(false)
const loading2 = ref(true)
const imgWidth = ref(0)
const imgHeight = ref(0)
const showViewer = ref(false)
const container = ref()
const _scrollContainer = ref()
let stopScrollListener
let stopWheelListener
const containerStyle = computed(() => attrs.value.style)
const imageStyle = computed(() => {
const { fit } = props2
if (isClient$1 && fit) {
return { objectFit: fit }
}
return {}
})
const preview2 = computed(() => {
const { previewSrcList } = props2
return Array.isArray(previewSrcList) && previewSrcList.length > 0
})
const teleported = computed(() => {
return props2.appendToBody || props2.previewTeleported
})
const imageIndex = computed(() => {
const { previewSrcList, initialIndex } = props2
let previewIndex = initialIndex
if (initialIndex > previewSrcList.length - 1) {
previewIndex = 0
}
return previewIndex
})
const loadImage2 = () => {
if (!isClient$1) return
loading2.value = true
hasLoadError.value = false
const img = new Image()
const currentImageSrc = props2.src
img.addEventListener('load', (e2) => {
if (currentImageSrc !== props2.src) {
return
}
handleLoad(e2, img)
})
img.addEventListener('error', (e2) => {
if (currentImageSrc !== props2.src) {
return
}
handleError(e2)
})
Object.entries(attrs.value).forEach(([key2, value2]) => {
if (key2.toLowerCase() === 'onload') return
img.setAttribute(key2, value2)
})
img.src = currentImageSrc
}
function handleLoad(e2, img) {
imgWidth.value = img.width
imgHeight.value = img.height
loading2.value = false
hasLoadError.value = false
}
function handleError(event) {
loading2.value = false
hasLoadError.value = true
emit2('error', event)
}
function handleLazyLoad() {
if (isInContainer(container.value, _scrollContainer.value)) {
loadImage2()
removeLazyLoadListener()
}
}
const lazyLoadHandler = useThrottleFn$1(handleLazyLoad, 200)
async function addLazyLoadListener() {
var _a2
if (!isClient$1) return
await nextTick()
const { scrollContainer } = props2
if (isElement$3(scrollContainer)) {
_scrollContainer.value = scrollContainer
} else if (isString$f(scrollContainer) && scrollContainer !== '') {
_scrollContainer.value =
(_a2 = document.querySelector(scrollContainer)) != null ? _a2 : void 0
} else if (container.value) {
_scrollContainer.value = getScrollContainer(container.value)
}
if (_scrollContainer.value) {
stopScrollListener = useEventListener$1(
_scrollContainer,
'scroll',
lazyLoadHandler
)
setTimeout(() => handleLazyLoad(), 100)
}
}
function removeLazyLoadListener() {
if (!isClient$1 || !_scrollContainer.value || !lazyLoadHandler) return
stopScrollListener()
_scrollContainer.value = void 0
}
function wheelHandler(e2) {
if (!e2.ctrlKey) return
if (e2.deltaY < 0) {
e2.preventDefault()
return false
} else if (e2.deltaY > 0) {
e2.preventDefault()
return false
}
}
function clickHandler() {
if (!preview2.value) return
stopWheelListener = useEventListener$1('wheel', wheelHandler, {
passive: false,
})
prevOverflow = document.body.style.overflow
document.body.style.overflow = 'hidden'
showViewer.value = true
}
function closeViewer() {
stopWheelListener == null ? void 0 : stopWheelListener()
document.body.style.overflow = prevOverflow
showViewer.value = false
emit2('close')
}
function switchViewer(val2) {
emit2('switch', val2)
}
watch$1(
() => props2.src,
() => {
if (props2.lazy) {
loading2.value = true
hasLoadError.value = false
removeLazyLoadListener()
addLazyLoadListener()
} else {
loadImage2()
}
}
)
onMounted(() => {
if (props2.lazy) {
addLazyLoadListener()
} else {
loadImage2()
}
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
ref_key: 'container',
ref: container,
class: normalizeClass([unref(ns).b(), _ctx.$attrs.class]),
style: normalizeStyle$1(unref(containerStyle)),
},
[
loading2.value
? renderSlot(_ctx.$slots, 'placeholder', { key: 0 }, () => [
createElementVNode(
'div',
{
class: normalizeClass(unref(ns).e('placeholder')),
},
null,
2
),
])
: hasLoadError.value
? renderSlot(_ctx.$slots, 'error', { key: 1 }, () => [
createElementVNode(
'div',
{
class: normalizeClass(unref(ns).e('error')),
},
toDisplayString$1(unref(t3)('el.image.error')),
3
),
])
: (openBlock(),
createElementBlock(
'img',
mergeProps({ key: 2 }, unref(attrs), {
src: _ctx.src,
style: unref(imageStyle),
class: [
unref(ns).e('inner'),
unref(preview2) ? unref(ns).e('preview') : '',
],
onClick: clickHandler,
}),
null,
16,
_hoisted_1$6s
)),
unref(preview2)
? (openBlock(),
createElementBlock(
Fragment,
{ key: 3 },
[
showViewer.value
? (openBlock(),
createBlock(
unref(ElImageViewer),
{
key: 0,
'z-index': _ctx.zIndex,
'initial-index': unref(imageIndex),
'url-list': _ctx.previewSrcList,
'hide-on-click-modal': _ctx.hideOnClickModal,
teleported: unref(teleported),
onClose: closeViewer,
onSwitch: switchViewer,
},
{
default: withCtx(() => [
_ctx.$slots.viewer
? (openBlock(),
createElementBlock('div', _hoisted_2$5e, [
renderSlot(_ctx.$slots, 'viewer'),
]))
: createCommentVNode('v-if', true),
]),
_: 3,
},
8,
[
'z-index',
'initial-index',
'url-list',
'hide-on-click-modal',
'teleported',
]
))
: createCommentVNode('v-if', true),
],
2112
))
: createCommentVNode('v-if', true),
],
6
)
)
}
},
})
var Image$1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$82, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/image/src/image.vue',
],
])
const ElImage = withInstall(Image$1)
const inputNumberProps = buildProps({
step: {
type: Number,
default: 1,
},
stepStrictly: {
type: Boolean,
default: false,
},
max: {
type: Number,
default: Number.POSITIVE_INFINITY,
},
min: {
type: Number,
default: Number.NEGATIVE_INFINITY,
},
modelValue: {
type: Number,
},
disabled: {
type: Boolean,
default: false,
},
size: {
type: String,
values: componentSizes,
},
controls: {
type: Boolean,
default: true,
},
controlsPosition: {
type: String,
default: '',
values: ['', 'right'],
},
name: String,
label: String,
placeholder: String,
precision: {
type: Number,
validator: (val2) => val2 >= 0 && val2 === Number.parseInt(`${val2}`, 10),
},
})
const inputNumberEmits = {
change: (prev, cur) => prev !== cur,
blur: (e2) => e2 instanceof FocusEvent,
focus: (e2) => e2 instanceof FocusEvent,
input: (val2) => isNumber$h(val2),
'update:modelValue': (val2) => isNumber$h(val2) || val2 === void 0,
}
const _sfc_main$81 = defineComponent({
name: 'ElInputNumber',
components: {
ElInput,
ElIcon,
ArrowUp: arrowUp,
ArrowDown: arrowDown,
Plus: plus,
Minus: minus,
},
directives: {
RepeatClick,
},
props: inputNumberProps,
emits: inputNumberEmits,
setup(props2, { emit: emit2 }) {
const input = ref()
const data2 = reactive({
currentValue: props2.modelValue,
userInput: null,
})
const { formItem } = useFormItem()
const ns = useNamespace('input-number')
const minDisabled = computed(
() => ensurePrecision(props2.modelValue, -1) < props2.min
)
const maxDisabled = computed(
() => ensurePrecision(props2.modelValue) > props2.max
)
const numPrecision = computed(() => {
const stepPrecision = getPrecision2(props2.step)
if (!isUndefined$c(props2.precision)) {
if (stepPrecision > props2.precision);
return props2.precision
} else {
return Math.max(getPrecision2(props2.modelValue), stepPrecision)
}
})
const controlsAtRight = computed(() => {
return props2.controls && props2.controlsPosition === 'right'
})
const inputNumberSize = useSize$1()
const inputNumberDisabled = useDisabled$1()
const displayValue = computed(() => {
if (data2.userInput !== null) {
return data2.userInput
}
let currentValue = data2.currentValue
if (isNumber$h(currentValue)) {
if (Number.isNaN(currentValue)) return ''
if (!isUndefined$c(props2.precision)) {
currentValue = currentValue.toFixed(props2.precision)
}
}
return currentValue
})
const toPrecision = (num2, pre) => {
if (isUndefined$c(pre)) pre = numPrecision.value
return Number.parseFloat(`${Math.round(num2 * 10 ** pre) / 10 ** pre}`)
}
const getPrecision2 = (value2) => {
if (isUndefined$c(value2)) return 0
const valueString = value2.toString()
const dotPosition = valueString.indexOf('.')
let precision = 0
if (dotPosition !== -1) {
precision = valueString.length - dotPosition - 1
}
return precision
}
const ensurePrecision = (val2, coefficient = 1) => {
if (!isNumber$h(val2)) return data2.currentValue
val2 = isNumber$h(val2) ? val2 : Number.NaN
return toPrecision(val2 + props2.step * coefficient)
}
const increase = () => {
if (inputNumberDisabled.value || maxDisabled.value) return
const value2 = props2.modelValue || 0
const newVal = ensurePrecision(value2)
setCurrentValue(newVal)
}
const decrease = () => {
if (inputNumberDisabled.value || minDisabled.value) return
const value2 = props2.modelValue || 0
const newVal = ensurePrecision(value2, -1)
setCurrentValue(newVal)
}
const verifyValue = (value2, update3) => {
const { max: max3, min: min3, step, precision, stepStrictly } = props2
let newVal = Number(value2)
if (value2 === null) {
newVal = Number.NaN
}
if (!Number.isNaN(newVal)) {
if (stepStrictly) {
newVal = Math.round(newVal / step) * step
}
if (!isUndefined$c(precision)) {
newVal = toPrecision(newVal, precision)
}
if (newVal > max3 || newVal < min3) {
newVal = newVal > max3 ? max3 : min3
update3 && emit2('update:modelValue', newVal)
}
}
return newVal
}
const setCurrentValue = (value2) => {
var _a2
const oldVal = data2.currentValue
let newVal = verifyValue(value2)
if (oldVal === newVal) return
if (Number.isNaN(newVal)) {
newVal = void 0
}
data2.userInput = null
emit2('update:modelValue', newVal)
emit2('input', newVal)
emit2('change', newVal, oldVal)
;(_a2 = formItem == null ? void 0 : formItem.validate) == null
? void 0
: _a2.call(formItem, 'change').catch((err) => debugWarn())
data2.currentValue = newVal
}
const handleInput = (value2) => {
return (data2.userInput = value2)
}
const handleInputChange = (value2) => {
const newVal = value2 !== '' ? Number(value2) : ''
if ((isNumber$h(newVal) && !Number.isNaN(newVal)) || value2 === '') {
setCurrentValue(newVal)
}
data2.userInput = null
}
const focus2 = () => {
var _a2, _b2
;(_b2 = (_a2 = input.value) == null ? void 0 : _a2.focus) == null
? void 0
: _b2.call(_a2)
}
const blur = () => {
var _a2, _b2
;(_b2 = (_a2 = input.value) == null ? void 0 : _a2.blur) == null
? void 0
: _b2.call(_a2)
}
const handleFocus = (event) => {
emit2('focus', event)
}
const handleBlur = (event) => {
var _a2
emit2('blur', event)
;(_a2 = formItem == null ? void 0 : formItem.validate) == null
? void 0
: _a2.call(formItem, 'blur').catch((err) => debugWarn())
}
watch$1(
() => props2.modelValue,
(value2) => {
const newVal = verifyValue(value2, true)
data2.currentValue = newVal
data2.userInput = null
},
{ immediate: true }
)
onMounted(() => {
var _a2
const innerInput = (_a2 = input.value) == null ? void 0 : _a2.input
innerInput.setAttribute('role', 'spinbutton')
innerInput.setAttribute('aria-valuemax', String(props2.max))
innerInput.setAttribute('aria-valuemin', String(props2.min))
innerInput.setAttribute('aria-valuenow', String(data2.currentValue))
innerInput.setAttribute(
'aria-disabled',
String(inputNumberDisabled.value)
)
if (!isNumber$h(props2.modelValue)) {
let val2 = Number(props2.modelValue)
if (Number.isNaN(val2)) {
val2 = void 0
}
emit2('update:modelValue', val2)
}
})
onUpdated(() => {
var _a2
const innerInput = (_a2 = input.value) == null ? void 0 : _a2.input
innerInput == null
? void 0
: innerInput.setAttribute('aria-valuenow', data2.currentValue)
})
return {
input,
displayValue,
handleInput,
handleInputChange,
controlsAtRight,
decrease,
increase,
inputNumberSize,
inputNumberDisabled,
maxDisabled,
minDisabled,
focus: focus2,
blur,
handleFocus,
handleBlur,
ns,
}
},
})
function _sfc_render$W(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_arrow_down = resolveComponent('arrow-down')
const _component_minus = resolveComponent('minus')
const _component_el_icon = resolveComponent('el-icon')
const _component_arrow_up = resolveComponent('arrow-up')
const _component_plus = resolveComponent('plus')
const _component_el_input = resolveComponent('el-input')
const _directive_repeat_click = resolveDirective('repeat-click')
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
_ctx.ns.b(),
_ctx.ns.m(_ctx.inputNumberSize),
_ctx.ns.is('disabled', _ctx.inputNumberDisabled),
_ctx.ns.is('without-controls', !_ctx.controls),
_ctx.ns.is('controls-right', _ctx.controlsAtRight),
]),
onDragstart:
_cache[2] || (_cache[2] = withModifiers(() => {}, ['prevent'])),
},
[
_ctx.controls
? withDirectives(
(openBlock(),
createElementBlock(
'span',
{
key: 0,
role: 'button',
class: normalizeClass([
_ctx.ns.e('decrease'),
_ctx.ns.is('disabled', _ctx.minDisabled),
]),
onKeydown:
_cache[0] ||
(_cache[0] = withKeys(
(...args) => _ctx.decrease && _ctx.decrease(...args),
['enter']
)),
},
[
createVNode$1(_component_el_icon, null, {
default: withCtx(() => [
_ctx.controlsAtRight
? (openBlock(),
createBlock(_component_arrow_down, { key: 0 }))
: (openBlock(),
createBlock(_component_minus, { key: 1 })),
]),
_: 1,
}),
],
34
)),
[[_directive_repeat_click, _ctx.decrease]]
)
: createCommentVNode('v-if', true),
_ctx.controls
? withDirectives(
(openBlock(),
createElementBlock(
'span',
{
key: 1,
role: 'button',
class: normalizeClass([
_ctx.ns.e('increase'),
_ctx.ns.is('disabled', _ctx.maxDisabled),
]),
onKeydown:
_cache[1] ||
(_cache[1] = withKeys(
(...args) => _ctx.increase && _ctx.increase(...args),
['enter']
)),
},
[
createVNode$1(_component_el_icon, null, {
default: withCtx(() => [
_ctx.controlsAtRight
? (openBlock(),
createBlock(_component_arrow_up, { key: 0 }))
: (openBlock(),
createBlock(_component_plus, { key: 1 })),
]),
_: 1,
}),
],
34
)),
[[_directive_repeat_click, _ctx.increase]]
)
: createCommentVNode('v-if', true),
createVNode$1(
_component_el_input,
{
ref: 'input',
type: 'number',
step: _ctx.step,
'model-value': _ctx.displayValue,
placeholder: _ctx.placeholder,
disabled: _ctx.inputNumberDisabled,
size: _ctx.inputNumberSize,
max: _ctx.max,
min: _ctx.min,
name: _ctx.name,
label: _ctx.label,
'validate-event': false,
onKeydown: [
withKeys(withModifiers(_ctx.increase, ['prevent']), ['up']),
withKeys(withModifiers(_ctx.decrease, ['prevent']), ['down']),
],
onBlur: _ctx.handleBlur,
onFocus: _ctx.handleFocus,
onInput: _ctx.handleInput,
onChange: _ctx.handleInputChange,
},
null,
8,
[
'step',
'model-value',
'placeholder',
'disabled',
'size',
'max',
'min',
'name',
'label',
'onKeydown',
'onBlur',
'onFocus',
'onInput',
'onChange',
]
),
],
34
)
)
}
var InputNumber = /* @__PURE__ */ _export_sfc$1(_sfc_main$81, [
['render', _sfc_render$W],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/input-number/src/input-number.vue',
],
])
const ElInputNumber = withInstall(InputNumber)
const linkProps = buildProps({
type: {
type: String,
values: ['primary', 'success', 'warning', 'info', 'danger', 'default'],
default: 'default',
},
underline: {
type: Boolean,
default: true,
},
disabled: { type: Boolean, default: false },
href: { type: String, default: '' },
icon: {
type: iconPropType,
default: '',
},
})
const linkEmits = {
click: (evt) => evt instanceof MouseEvent,
}
const _hoisted_1$6r = ['href']
const __default__$i = {
name: 'ElLink',
}
const _sfc_main$80 = /* @__PURE__ */ defineComponent({
...__default__$i,
props: linkProps,
emits: linkEmits,
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const ns = useNamespace('link')
function handleClick2(event) {
if (!props2.disabled) emit2('click', event)
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'a',
{
class: normalizeClass([
unref(ns).b(),
unref(ns).m(_ctx.type),
unref(ns).is('disabled', _ctx.disabled),
unref(ns).is('underline', _ctx.underline && !_ctx.disabled),
]),
href: _ctx.disabled || !_ctx.href ? void 0 : _ctx.href,
onClick: handleClick2,
},
[
_ctx.icon
? (openBlock(),
createBlock(
unref(ElIcon),
{ key: 0 },
{
default: withCtx(() => [
(openBlock(),
createBlock(resolveDynamicComponent(_ctx.icon))),
]),
_: 1,
}
))
: createCommentVNode('v-if', true),
_ctx.$slots.default
? (openBlock(),
createElementBlock(
'span',
{
key: 1,
class: normalizeClass(unref(ns).e('inner')),
},
[renderSlot(_ctx.$slots, 'default')],
2
))
: createCommentVNode('v-if', true),
_ctx.$slots.icon
? renderSlot(_ctx.$slots, 'icon', { key: 2 })
: createCommentVNode('v-if', true),
],
10,
_hoisted_1$6r
)
)
}
},
})
var Link = /* @__PURE__ */ _export_sfc$1(_sfc_main$80, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/link/src/link.vue',
],
])
const ElLink = withInstall(Link)
class SubMenu$1 {
constructor(parent2, domNode) {
this.parent = parent2
this.domNode = domNode
this.subIndex = 0
this.subIndex = 0
this.init()
}
init() {
this.subMenuItems = this.domNode.querySelectorAll('li')
this.addListeners()
}
gotoSubIndex(idx) {
if (idx === this.subMenuItems.length) {
idx = 0
} else if (idx < 0) {
idx = this.subMenuItems.length - 1
}
this.subMenuItems[idx].focus()
this.subIndex = idx
}
addListeners() {
const parentNode2 = this.parent.domNode
Array.prototype.forEach.call(this.subMenuItems, (el2) => {
el2.addEventListener('keydown', (event) => {
let prevDef = false
switch (event.code) {
case EVENT_CODE.down: {
this.gotoSubIndex(this.subIndex + 1)
prevDef = true
break
}
case EVENT_CODE.up: {
this.gotoSubIndex(this.subIndex - 1)
prevDef = true
break
}
case EVENT_CODE.tab: {
triggerEvent$1(parentNode2, 'mouseleave')
break
}
case EVENT_CODE.enter:
case EVENT_CODE.space: {
prevDef = true
event.currentTarget.click()
break
}
}
if (prevDef) {
event.preventDefault()
event.stopPropagation()
}
return false
})
})
}
}
class MenuItem$1 {
constructor(domNode) {
this.domNode = domNode
this.submenu = null
this.submenu = null
this.init()
}
init() {
this.domNode.setAttribute('tabindex', '0')
const menuChild = this.domNode.querySelector('.el-menu')
if (menuChild) {
this.submenu = new SubMenu$1(this, menuChild)
}
this.addListeners()
}
addListeners() {
this.domNode.addEventListener('keydown', (event) => {
let prevDef = false
switch (event.code) {
case EVENT_CODE.down: {
triggerEvent$1(event.currentTarget, 'mouseenter')
this.submenu && this.submenu.gotoSubIndex(0)
prevDef = true
break
}
case EVENT_CODE.up: {
triggerEvent$1(event.currentTarget, 'mouseenter')
this.submenu &&
this.submenu.gotoSubIndex(this.submenu.subMenuItems.length - 1)
prevDef = true
break
}
case EVENT_CODE.tab: {
triggerEvent$1(event.currentTarget, 'mouseleave')
break
}
case EVENT_CODE.enter:
case EVENT_CODE.space: {
prevDef = true
event.currentTarget.click()
break
}
}
if (prevDef) {
event.preventDefault()
}
})
}
}
class Menu$3 {
constructor(domNode) {
this.domNode = domNode
this.init()
}
init() {
const menuChildren = this.domNode.childNodes
Array.from(menuChildren).forEach((child) => {
if (child.nodeType === 1) {
new MenuItem$1(child)
}
})
}
}
const _sfc_main$7$ = defineComponent({
name: 'ElMenuCollapseTransition',
setup() {
const listeners = {
onBeforeEnter: (el2) => (el2.style.opacity = '0.2'),
onEnter(el2, done) {
addClass$1(el2, 'el-opacity-transition')
el2.style.opacity = '1'
done()
},
onAfterEnter(el2) {
removeClass$1(el2, 'el-opacity-transition')
el2.style.opacity = ''
},
onBeforeLeave(el2) {
if (!el2.dataset) {
el2.dataset = {}
}
if (hasClass$1(el2, 'el-menu--collapse')) {
removeClass$1(el2, 'el-menu--collapse')
el2.dataset.oldOverflow = el2.style.overflow
el2.dataset.scrollWidth = el2.clientWidth.toString()
addClass$1(el2, 'el-menu--collapse')
} else {
addClass$1(el2, 'el-menu--collapse')
el2.dataset.oldOverflow = el2.style.overflow
el2.dataset.scrollWidth = el2.clientWidth.toString()
removeClass$1(el2, 'el-menu--collapse')
}
el2.style.width = `${el2.scrollWidth}px`
el2.style.overflow = 'hidden'
},
onLeave(el2) {
addClass$1(el2, 'horizontal-collapse-transition')
el2.style.width = `${el2.dataset.scrollWidth}px`
},
}
return {
listeners,
}
},
})
function _sfc_render$V(_ctx, _cache, $props2, $setup, $data, $options) {
return (
openBlock(),
createBlock(
Transition,
mergeProps({ mode: 'out-in' }, _ctx.listeners),
{
default: withCtx(() => [renderSlot(_ctx.$slots, 'default')]),
_: 3,
},
16
)
)
}
var ElMenuCollapseTransition = /* @__PURE__ */ _export_sfc$1(_sfc_main$7$, [
['render', _sfc_render$V],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/menu/src/menu-collapse-transition.vue',
],
])
function useMenu(instance, currentIndex) {
const rootMenu = inject('rootMenu')
if (!rootMenu) throwError$1('useMenu', 'can not inject root menu')
const indexPath = computed(() => {
let parent2 = instance.parent
const path = [currentIndex.value]
while (parent2.type.name !== 'ElMenu') {
if (parent2.props.index) {
path.unshift(parent2.props.index)
}
parent2 = parent2.parent
}
return path
})
const parentMenu = computed(() => {
let parent2 = instance.parent
while (parent2 && !['ElMenu', 'ElSubMenu'].includes(parent2.type.name)) {
parent2 = parent2.parent
}
return parent2
})
const paddingStyle = computed(() => {
let parent2 = instance.parent
if (rootMenu.props.mode !== 'vertical') return {}
let padding = 20
if (rootMenu.props.collapse) {
padding = 20
} else {
while (parent2 && parent2.type.name !== 'ElMenu') {
if (parent2.type.name === 'ElSubMenu') {
padding += 20
}
parent2 = parent2.parent
}
}
return { paddingLeft: `${padding}px` }
})
return {
parentMenu,
paddingStyle,
indexPath,
}
}
function useMenuColor(props2) {
const menuBarColor = computed(() => {
const color2 = props2.backgroundColor
if (!color2) {
return ''
} else {
return new TinyColor(color2).shade(20).toString()
}
})
return menuBarColor
}
const useMenuCssVar = (props2) => {
return computed(() => {
return {
'--el-menu-text-color': props2.textColor || '',
'--el-menu-hover-text-color': props2.textColor || '',
'--el-menu-bg-color': props2.backgroundColor || '',
'--el-menu-hover-bg-color': useMenuColor(props2).value || '',
'--el-menu-active-color': props2.activeTextColor || '',
}
})
}
const subMenuProps = buildProps({
index: {
type: String,
required: true,
},
showTimeout: {
type: Number,
default: 300,
},
hideTimeout: {
type: Number,
default: 300,
},
popperClass: String,
disabled: Boolean,
popperAppendToBody: {
type: Boolean,
default: void 0,
},
popperOffset: {
type: Number,
default: 6,
},
})
const COMPONENT_NAME$9 = 'ElSubMenu'
var SubMenu = defineComponent({
name: COMPONENT_NAME$9,
props: subMenuProps,
setup(props2, { slots, expose }) {
const instance = getCurrentInstance()
const { paddingStyle, indexPath, parentMenu } = useMenu(
instance,
computed(() => props2.index)
)
const rootMenu = inject('rootMenu')
if (!rootMenu) throwError$1(COMPONENT_NAME$9, 'can not inject root menu')
const subMenu = inject(`subMenu:${parentMenu.value.uid}`)
if (!subMenu) throwError$1(COMPONENT_NAME$9, 'can not inject sub menu')
const items = ref({})
const subMenus = ref({})
let timeout
const mouseInChild = ref(false)
const verticalTitleRef = ref()
const vPopper = ref(null)
const currentPlacement = computed(() =>
mode2.value === 'horizontal' && isFirstLevel.value
? 'bottom-start'
: 'right-start'
)
const subMenuTitleIcon = computed(() => {
return (mode2.value === 'horizontal' && isFirstLevel.value) ||
(mode2.value === 'vertical' && !rootMenu.props.collapse)
? arrowDown
: arrowRight
})
const isFirstLevel = computed(() => {
let isFirstLevel2 = true
let parent2 = instance.parent
while (parent2 && parent2.type.name !== 'ElMenu') {
if (['ElSubMenu', 'ElMenuItemGroup'].includes(parent2.type.name)) {
isFirstLevel2 = false
break
} else {
parent2 = parent2.parent
}
}
return isFirstLevel2
})
const appendToBody = computed(() => {
return props2.popperAppendToBody === void 0
? isFirstLevel.value
: Boolean(props2.popperAppendToBody)
})
const menuTransitionName = computed(() =>
rootMenu.props.collapse ? 'el-zoom-in-left' : 'el-zoom-in-top'
)
const fallbackPlacements = computed(() =>
mode2.value === 'horizontal' && isFirstLevel.value
? [
'bottom-start',
'bottom-end',
'top-start',
'top-end',
'right-start',
'left-start',
]
: [
'right-start',
'left-start',
'bottom-start',
'bottom-end',
'top-start',
'top-end',
]
)
const opened = computed(() => rootMenu.openedMenus.includes(props2.index))
const active = computed(() => {
let isActive = false
Object.values(items.value).forEach((item22) => {
if (item22.active) {
isActive = true
}
})
Object.values(subMenus.value).forEach((subItem) => {
if (subItem.active) {
isActive = true
}
})
return isActive
})
const backgroundColor2 = computed(
() => rootMenu.props.backgroundColor || ''
)
const activeTextColor = computed(() => rootMenu.props.activeTextColor || '')
const textColor = computed(() => rootMenu.props.textColor || '')
const mode2 = computed(() => rootMenu.props.mode)
const item2 = reactive({
index: props2.index,
indexPath,
active,
})
const titleStyle = computed(() => {
if (mode2.value !== 'horizontal') {
return {
color: textColor.value,
}
}
return {
borderBottomColor: active.value
? rootMenu.props.activeTextColor
? activeTextColor.value
: ''
: 'transparent',
color: active.value ? activeTextColor.value : textColor.value,
}
})
const doDestroy = () => {
var _a2, _b2, _c2
return (_c2 =
(_b2 = (_a2 = vPopper.value) == null ? void 0 : _a2.popperRef) == null
? void 0
: _b2.popperInstanceRef) == null
? void 0
: _c2.destroy()
}
const handleCollapseToggle = (value2) => {
if (!value2) {
doDestroy()
}
}
const handleClick2 = () => {
if (
(rootMenu.props.menuTrigger === 'hover' &&
rootMenu.props.mode === 'horizontal') ||
(rootMenu.props.collapse && rootMenu.props.mode === 'vertical') ||
props2.disabled
)
return
rootMenu.handleSubMenuClick({
index: props2.index,
indexPath: indexPath.value,
active: active.value,
})
}
const handleMouseenter = (event, showTimeout = props2.showTimeout) => {
var _a2
if (event.type === 'focus' && !event.relatedTarget) {
return
}
if (
(rootMenu.props.menuTrigger === 'click' &&
rootMenu.props.mode === 'horizontal') ||
(!rootMenu.props.collapse && rootMenu.props.mode === 'vertical') ||
props2.disabled
) {
return
}
subMenu.mouseInChild.value = true
timeout == null ? void 0 : timeout()
;({ stop: timeout } = useTimeoutFn$1(() => {
rootMenu.openMenu(props2.index, indexPath.value)
}, showTimeout))
if (appendToBody.value) {
;(_a2 = parentMenu.value.vnode.el) == null
? void 0
: _a2.dispatchEvent(new MouseEvent('mouseenter'))
}
}
const handleMouseleave = (deepDispatch = false) => {
var _a2, _b2
if (
(rootMenu.props.menuTrigger === 'click' &&
rootMenu.props.mode === 'horizontal') ||
(!rootMenu.props.collapse && rootMenu.props.mode === 'vertical')
) {
return
}
timeout == null ? void 0 : timeout()
subMenu.mouseInChild.value = false
;({ stop: timeout } = useTimeoutFn$1(
() =>
!mouseInChild.value &&
rootMenu.closeMenu(props2.index, indexPath.value),
props2.hideTimeout
))
if (appendToBody.value && deepDispatch) {
if (
((_a2 = instance.parent) == null ? void 0 : _a2.type.name) ===
'ElSubMenu'
) {
;(_b2 = subMenu.handleMouseleave) == null
? void 0
: _b2.call(subMenu, true)
}
}
}
watch$1(
() => rootMenu.props.collapse,
(value2) => handleCollapseToggle(Boolean(value2))
)
{
const addSubMenu = (item22) => {
subMenus.value[item22.index] = item22
}
const removeSubMenu = (item22) => {
delete subMenus.value[item22.index]
}
provide(`subMenu:${instance.uid}`, {
addSubMenu,
removeSubMenu,
handleMouseleave,
mouseInChild,
})
}
expose({
opened,
})
onMounted(() => {
rootMenu.addSubMenu(item2)
subMenu.addSubMenu(item2)
})
onBeforeUnmount(() => {
subMenu.removeSubMenu(item2)
rootMenu.removeSubMenu(item2)
})
return () => {
var _a2
const titleTag = [
(_a2 = slots.title) == null ? void 0 : _a2.call(slots),
h$4(
ElIcon,
{
class: ['el-sub-menu__icon-arrow'],
},
{ default: () => h$4(subMenuTitleIcon.value) }
),
]
const ulStyle = useMenuCssVar(rootMenu.props)
const child = rootMenu.isMenuPopup
? h$4(
ElTooltip,
{
ref: vPopper,
visible: opened.value,
effect: 'light',
pure: true,
offset: props2.popperOffset,
showArrow: false,
persistent: true,
popperClass: props2.popperClass,
placement: currentPlacement.value,
teleported: appendToBody.value,
fallbackPlacements: fallbackPlacements.value,
transition: menuTransitionName.value,
gpuAcceleration: false,
},
{
content: () => {
var _a22
return h$4(
'div',
{
class: [`el-menu--${mode2.value}`, props2.popperClass],
onMouseenter: (evt) => handleMouseenter(evt, 100),
onMouseleave: () => handleMouseleave(true),
onFocus: (evt) => handleMouseenter(evt, 100),
},
[
h$4(
'ul',
{
class: [
'el-menu el-menu--popup',
`el-menu--popup-${currentPlacement.value}`,
],
style: ulStyle.value,
},
[
(_a22 = slots.default) == null
? void 0
: _a22.call(slots),
]
),
]
)
},
default: () =>
h$4(
'div',
{
class: 'el-sub-menu__title',
style: [
paddingStyle.value,
titleStyle.value,
{ backgroundColor: backgroundColor2.value },
],
onClick: handleClick2,
},
titleTag
),
}
)
: h$4(Fragment, {}, [
h$4(
'div',
{
class: 'el-sub-menu__title',
style: [
paddingStyle.value,
titleStyle.value,
{ backgroundColor: backgroundColor2.value },
],
ref: verticalTitleRef,
onClick: handleClick2,
},
titleTag
),
h$4(
_CollapseTransition,
{},
{
default: () => {
var _a22
return withDirectives(
h$4(
'ul',
{
role: 'menu',
class: 'el-menu el-menu--inline',
style: ulStyle.value,
},
[
(_a22 = slots.default) == null
? void 0
: _a22.call(slots),
]
),
[[vShow, opened.value]]
)
},
}
),
])
return h$4(
'li',
{
class: [
'el-sub-menu',
{
'is-active': active.value,
'is-opened': opened.value,
'is-disabled': props2.disabled,
},
],
role: 'menuitem',
ariaHaspopup: true,
ariaExpanded: opened.value,
onMouseenter: handleMouseenter,
onMouseleave: () => handleMouseleave(true),
onFocus: handleMouseenter,
},
[child]
)
}
},
})
const menuProps = buildProps({
mode: {
type: String,
values: ['horizontal', 'vertical'],
default: 'vertical',
},
defaultActive: {
type: String,
default: '',
},
defaultOpeneds: {
type: definePropType(Array),
default: () => mutable([]),
},
uniqueOpened: Boolean,
router: Boolean,
menuTrigger: {
type: String,
values: ['hover', 'click'],
default: 'hover',
},
collapse: Boolean,
backgroundColor: String,
textColor: String,
activeTextColor: String,
collapseTransition: {
type: Boolean,
default: true,
},
ellipsis: {
type: Boolean,
default: true,
},
})
const checkIndexPath = (indexPath) =>
Array.isArray(indexPath) && indexPath.every((path) => isString$f(path))
const menuEmits = {
close: (index2, indexPath) => isString$f(index2) && checkIndexPath(indexPath),
open: (index2, indexPath) => isString$f(index2) && checkIndexPath(indexPath),
select: (index2, indexPath, item2, routerResult) =>
isString$f(index2) &&
checkIndexPath(indexPath) &&
isObject$v(item2) &&
(routerResult === void 0 || routerResult instanceof Promise),
}
var Menu$2 = defineComponent({
name: 'ElMenu',
props: menuProps,
emits: menuEmits,
setup(props2, { emit: emit2, slots, expose }) {
const instance = getCurrentInstance()
const router2 = instance.appContext.config.globalProperties.$router
const menu2 = ref()
const openedMenus = ref(
props2.defaultOpeneds && !props2.collapse
? props2.defaultOpeneds.slice(0)
: []
)
const activeIndex = ref(props2.defaultActive)
const items = ref({})
const subMenus = ref({})
const isMenuPopup = computed(() => {
return (
props2.mode === 'horizontal' ||
(props2.mode === 'vertical' && props2.collapse)
)
})
const initMenu2 = () => {
const activeItem = activeIndex.value && items.value[activeIndex.value]
if (!activeItem || props2.mode === 'horizontal' || props2.collapse) return
const indexPath = activeItem.indexPath
indexPath.forEach((index2) => {
const subMenu = subMenus.value[index2]
subMenu && openMenu(index2, subMenu.indexPath)
})
}
const openMenu = (index2, indexPath) => {
if (openedMenus.value.includes(index2)) return
if (props2.uniqueOpened) {
openedMenus.value = openedMenus.value.filter((index22) =>
indexPath.includes(index22)
)
}
openedMenus.value.push(index2)
emit2('open', index2, indexPath)
}
const closeMenu = (index2, indexPath) => {
const i2 = openedMenus.value.indexOf(index2)
if (i2 !== -1) {
openedMenus.value.splice(i2, 1)
}
emit2('close', index2, indexPath)
}
const handleSubMenuClick = ({ index: index2, indexPath }) => {
const isOpened = openedMenus.value.includes(index2)
if (isOpened) {
closeMenu(index2, indexPath)
} else {
openMenu(index2, indexPath)
}
}
const handleMenuItemClick = (menuItem) => {
if (props2.mode === 'horizontal' || props2.collapse) {
openedMenus.value = []
}
const { index: index2, indexPath } = menuItem
if (index2 === void 0 || indexPath === void 0) return
if (props2.router && router2) {
const route = menuItem.route || index2
const routerResult = router2.push(route).then((res) => {
if (!res) activeIndex.value = index2
return res
})
emit2(
'select',
index2,
indexPath,
{ index: index2, indexPath, route },
routerResult
)
} else {
activeIndex.value = index2
emit2('select', index2, indexPath, { index: index2, indexPath })
}
}
const updateActiveIndex = (val2) => {
const itemsInData = items.value
const item2 =
itemsInData[val2] ||
(activeIndex.value && itemsInData[activeIndex.value]) ||
itemsInData[props2.defaultActive]
if (item2) {
activeIndex.value = item2.index
initMenu2()
} else {
activeIndex.value = val2
}
}
const handleResize = () => {
nextTick(() => instance.proxy.$forceUpdate())
}
watch$1(
() => props2.defaultActive,
(currentActive) => {
if (!items.value[currentActive]) {
activeIndex.value = ''
}
updateActiveIndex(currentActive)
}
)
watch$1(items.value, () => initMenu2())
watch$1(
() => props2.collapse,
(value2) => {
if (value2) openedMenus.value = []
}
)
{
const addSubMenu = (item2) => {
subMenus.value[item2.index] = item2
}
const removeSubMenu = (item2) => {
delete subMenus.value[item2.index]
}
const addMenuItem = (item2) => {
items.value[item2.index] = item2
}
const removeMenuItem = (item2) => {
delete items.value[item2.index]
}
provide(
'rootMenu',
reactive({
props: props2,
openedMenus,
items,
subMenus,
activeIndex,
isMenuPopup,
addMenuItem,
removeMenuItem,
addSubMenu,
removeSubMenu,
openMenu,
closeMenu,
handleMenuItemClick,
handleSubMenuClick,
})
)
provide(`subMenu:${instance.uid}`, {
addSubMenu,
removeSubMenu,
mouseInChild: ref(false),
})
}
onMounted(() => {
initMenu2()
if (props2.mode === 'horizontal') {
new Menu$3(instance.vnode.el)
}
})
{
const open2 = (index2) => {
const { indexPath } = subMenus.value[index2]
indexPath.forEach((i2) => openMenu(i2, indexPath))
}
expose({
open: open2,
close: closeMenu,
handleResize,
})
}
const flattedChildren = (children) => {
const vnodes = Array.isArray(children) ? children : [children]
const result = []
vnodes.forEach((child) => {
if (Array.isArray(child.children)) {
result.push(...flattedChildren(child.children))
} else {
result.push(child)
}
})
return result
}
const useVNodeResize = (vnode) =>
props2.mode === 'horizontal'
? withDirectives(vnode, [[Resize, handleResize]])
: vnode
return () => {
var _a2, _b2, _c2, _d
let slot =
(_b2 = (_a2 = slots.default) == null ? void 0 : _a2.call(slots)) != null
? _b2
: []
const vShowMore = []
if (props2.mode === 'horizontal' && menu2.value) {
const items2 = Array.from(
(_d = (_c2 = menu2.value) == null ? void 0 : _c2.childNodes) != null
? _d
: []
).filter((item2) => item2.nodeName !== '#text' || item2.nodeValue)
const originalSlot = flattedChildren(slot)
const moreItemWidth = 64
const paddingLeft2 = Number.parseInt(
getComputedStyle(menu2.value).paddingLeft,
10
)
const paddingRight2 = Number.parseInt(
getComputedStyle(menu2.value).paddingRight,
10
)
const menuWidth = menu2.value.clientWidth - paddingLeft2 - paddingRight2
let calcWidth = 0
let sliceIndex = 0
items2.forEach((item2, index2) => {
calcWidth += item2.offsetWidth || 0
if (calcWidth <= menuWidth - moreItemWidth) {
sliceIndex = index2 + 1
}
})
const slotDefault = originalSlot.slice(0, sliceIndex)
const slotMore = originalSlot.slice(sliceIndex)
if ((slotMore == null ? void 0 : slotMore.length) && props2.ellipsis) {
slot = slotDefault
vShowMore.push(
h$4(
SubMenu,
{
index: 'sub-menu-more',
class: 'el-sub-menu__hide-arrow',
},
{
title: () =>
h$4(
ElIcon,
{
class: ['el-sub-menu__icon-more'],
},
{ default: () => h$4(more) }
),
default: () => slotMore,
}
)
)
}
}
const ulStyle = useMenuCssVar(props2)
const resizeMenu = (vNode) =>
props2.ellipsis ? useVNodeResize(vNode) : vNode
const vMenu = resizeMenu(
h$4(
'ul',
{
key: String(props2.collapse),
role: 'menubar',
ref: menu2,
style: ulStyle.value,
class: {
'el-menu': true,
'el-menu--horizontal': props2.mode === 'horizontal',
'el-menu--collapse': props2.collapse,
},
},
[...slot, ...vShowMore]
)
)
if (props2.collapseTransition && props2.mode === 'vertical') {
return h$4(ElMenuCollapseTransition, () => vMenu)
}
return vMenu
}
},
})
const menuItemProps = buildProps({
index: {
type: definePropType([String, null]),
default: null,
},
route: {
type: definePropType([String, Object]),
},
disabled: Boolean,
})
const menuItemEmits = {
click: (item2) => isString$f(item2.index) && Array.isArray(item2.indexPath),
}
const COMPONENT_NAME$8 = 'ElMenuItem'
const _sfc_main$7_ = defineComponent({
name: COMPONENT_NAME$8,
components: {
ElTooltip,
},
props: menuItemProps,
emits: menuItemEmits,
setup(props2, { emit: emit2 }) {
const instance = getCurrentInstance()
const rootMenu = inject('rootMenu')
if (!rootMenu) throwError$1(COMPONENT_NAME$8, 'can not inject root menu')
const { parentMenu, paddingStyle, indexPath } = useMenu(
instance,
toRef(props2, 'index')
)
const subMenu = inject(`subMenu:${parentMenu.value.uid}`)
if (!subMenu) throwError$1(COMPONENT_NAME$8, 'can not inject sub menu')
const active = computed(() => props2.index === rootMenu.activeIndex)
const item2 = reactive({
index: props2.index,
indexPath,
active,
})
const handleClick2 = () => {
if (!props2.disabled) {
rootMenu.handleMenuItemClick({
index: props2.index,
indexPath: indexPath.value,
route: props2.route,
})
emit2('click', item2)
}
}
onMounted(() => {
subMenu.addSubMenu(item2)
rootMenu.addMenuItem(item2)
})
onBeforeUnmount(() => {
subMenu.removeSubMenu(item2)
rootMenu.removeMenuItem(item2)
})
return {
Effect,
parentMenu,
rootMenu,
paddingStyle,
active,
handleClick: handleClick2,
}
},
})
const _hoisted_1$6q = { class: 'el-menu-tooltip__trigger' }
function _sfc_render$U(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_tooltip = resolveComponent('el-tooltip')
return (
openBlock(),
createElementBlock(
'li',
{
class: normalizeClass([
'el-menu-item',
{
'is-active': _ctx.active,
'is-disabled': _ctx.disabled,
},
]),
role: 'menuitem',
tabindex: '-1',
style: normalizeStyle$1(_ctx.paddingStyle),
onClick:
_cache[0] ||
(_cache[0] = (...args) =>
_ctx.handleClick && _ctx.handleClick(...args)),
},
[
_ctx.parentMenu.type.name === 'ElMenu' &&
_ctx.rootMenu.props.collapse &&
_ctx.$slots.title
? (openBlock(),
createBlock(
_component_el_tooltip,
{
key: 0,
effect: _ctx.Effect.DARK,
placement: 'right',
'fallback-placements': ['left'],
persistent: '',
},
{
content: withCtx(() => [renderSlot(_ctx.$slots, 'title')]),
default: withCtx(() => [
createElementVNode('div', _hoisted_1$6q, [
renderSlot(_ctx.$slots, 'default'),
]),
]),
_: 3,
},
8,
['effect']
))
: (openBlock(),
createElementBlock(
Fragment,
{ key: 1 },
[
renderSlot(_ctx.$slots, 'default'),
renderSlot(_ctx.$slots, 'title'),
],
64
)),
],
6
)
)
}
var MenuItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$7_, [
['render', _sfc_render$U],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/menu/src/menu-item.vue',
],
])
const menuItemGroupProps = {
title: String,
}
const COMPONENT_NAME$7 = 'ElMenuItemGroup'
const _sfc_main$7Z = defineComponent({
name: COMPONENT_NAME$7,
props: menuItemGroupProps,
setup() {
const instance = getCurrentInstance()
const menu2 = inject('rootMenu')
if (!menu2) throwError$1(COMPONENT_NAME$7, 'can not inject root menu')
const levelPadding = computed(() => {
if (menu2.props.collapse) return 20
let padding = 20
let parent2 = instance.parent
while (parent2 && parent2.type.name !== 'ElMenu') {
if (parent2.type.name === 'ElSubMenu') {
padding += 20
}
parent2 = parent2.parent
}
return padding
})
return {
levelPadding,
}
},
})
const _hoisted_1$6p = { class: 'el-menu-item-group' }
function _sfc_render$T(_ctx, _cache, $props2, $setup, $data, $options) {
return (
openBlock(),
createElementBlock('li', _hoisted_1$6p, [
createElementVNode(
'div',
{
class: 'el-menu-item-group__title',
style: normalizeStyle$1({ paddingLeft: `${_ctx.levelPadding}px` }),
},
[
!_ctx.$slots.title
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[createTextVNode(toDisplayString$1(_ctx.title), 1)],
2112
))
: renderSlot(_ctx.$slots, 'title', { key: 1 }),
],
4
),
createElementVNode('ul', null, [renderSlot(_ctx.$slots, 'default')]),
])
)
}
var MenuItemGroup = /* @__PURE__ */ _export_sfc$1(_sfc_main$7Z, [
['render', _sfc_render$T],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/menu/src/menu-item-group.vue',
],
])
const ElMenu = withInstall(Menu$2, {
MenuItem,
MenuItemGroup,
SubMenu,
})
const ElMenuItem = withNoopInstall(MenuItem)
const ElMenuItemGroup = withNoopInstall(MenuItemGroup)
const ElSubMenu = withNoopInstall(SubMenu)
const pageHeaderProps = buildProps({
icon: {
type: iconPropType,
default: () => back$1,
},
title: String,
content: {
type: String,
default: '',
},
})
const pageHeaderEmits = {
back: () => true,
}
const __default__$h = {
name: 'ElPageHeader',
}
const _sfc_main$7Y = /* @__PURE__ */ defineComponent({
...__default__$h,
props: pageHeaderProps,
emits: pageHeaderEmits,
setup(__props2, { emit: emit2 }) {
const { t: t3 } = useLocale()
const ns = useNamespace('page-header')
function handleClick2() {
emit2('back')
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass(unref(ns).b()),
},
[
createElementVNode(
'div',
{
class: normalizeClass(unref(ns).e('left')),
onClick: handleClick2,
},
[
_ctx.icon || _ctx.$slots.icon
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass(unref(ns).e('icon')),
},
[
renderSlot(_ctx.$slots, 'icon', {}, () => [
_ctx.icon
? (openBlock(),
createBlock(
unref(ElIcon),
{ key: 0 },
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(_ctx.icon)
)),
]),
_: 1,
}
))
: createCommentVNode('v-if', true),
]),
],
2
))
: createCommentVNode('v-if', true),
createElementVNode(
'div',
{
class: normalizeClass(unref(ns).e('title')),
},
[
renderSlot(_ctx.$slots, 'title', {}, () => [
createTextVNode(
toDisplayString$1(
_ctx.title || unref(t3)('el.pageHeader.title')
),
1
),
]),
],
2
),
],
2
),
createElementVNode(
'div',
{
class: normalizeClass(unref(ns).e('content')),
},
[
renderSlot(_ctx.$slots, 'content', {}, () => [
createTextVNode(toDisplayString$1(_ctx.content), 1),
]),
],
2
),
],
2
)
)
}
},
})
var PageHeader = /* @__PURE__ */ _export_sfc$1(_sfc_main$7Y, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/page-header/src/page-header.vue',
],
])
const ElPageHeader = withInstall(PageHeader)
const paginationPrevProps = {
disabled: Boolean,
currentPage: {
type: Number,
default: 1,
},
prevText: {
type: String,
default: '',
},
}
const _sfc_main$7X = defineComponent({
name: 'ElPaginationPrev',
components: {
ElIcon,
ArrowLeft: arrowLeft,
},
props: paginationPrevProps,
emits: ['click'],
setup(props2) {
const internalDisabled = computed(
() => props2.disabled || props2.currentPage <= 1
)
return {
internalDisabled,
}
},
})
const _hoisted_1$6o = ['disabled', 'aria-disabled']
const _hoisted_2$5d = { key: 0 }
function _sfc_render$S(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_arrow_left = resolveComponent('arrow-left')
const _component_el_icon = resolveComponent('el-icon')
return (
openBlock(),
createElementBlock(
'button',
{
type: 'button',
class: 'btn-prev',
disabled: _ctx.internalDisabled,
'aria-disabled': _ctx.internalDisabled,
onClick:
_cache[0] || (_cache[0] = ($event) => _ctx.$emit('click', $event)),
},
[
_ctx.prevText
? (openBlock(),
createElementBlock(
'span',
_hoisted_2$5d,
toDisplayString$1(_ctx.prevText),
1
))
: (openBlock(),
createBlock(
_component_el_icon,
{ key: 1 },
{
default: withCtx(() => [createVNode$1(_component_arrow_left)]),
_: 1,
}
)),
],
8,
_hoisted_1$6o
)
)
}
var Prev = /* @__PURE__ */ _export_sfc$1(_sfc_main$7X, [
['render', _sfc_render$S],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/pagination/src/components/prev.vue',
],
])
const paginationNextProps = {
disabled: Boolean,
currentPage: {
type: Number,
default: 1,
},
pageCount: {
type: Number,
default: 50,
},
nextText: {
type: String,
default: '',
},
}
const _sfc_main$7W = defineComponent({
name: 'ElPaginationNext',
components: {
ElIcon,
ArrowRight: arrowRight,
},
props: paginationNextProps,
emits: ['click'],
setup(props2) {
const internalDisabled = computed(
() =>
props2.disabled ||
props2.currentPage === props2.pageCount ||
props2.pageCount === 0
)
return {
internalDisabled,
}
},
})
const _hoisted_1$6n = ['disabled', 'aria-disabled']
const _hoisted_2$5c = { key: 0 }
function _sfc_render$R(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_arrow_right = resolveComponent('arrow-right')
const _component_el_icon = resolveComponent('el-icon')
return (
openBlock(),
createElementBlock(
'button',
{
type: 'button',
class: 'btn-next',
disabled: _ctx.internalDisabled,
'aria-disabled': _ctx.internalDisabled,
onClick:
_cache[0] || (_cache[0] = ($event) => _ctx.$emit('click', $event)),
},
[
_ctx.nextText
? (openBlock(),
createElementBlock(
'span',
_hoisted_2$5c,
toDisplayString$1(_ctx.nextText),
1
))
: (openBlock(),
createBlock(
_component_el_icon,
{ key: 1 },
{
default: withCtx(() => [createVNode$1(_component_arrow_right)]),
_: 1,
}
)),
],
8,
_hoisted_1$6n
)
)
}
var Next = /* @__PURE__ */ _export_sfc$1(_sfc_main$7W, [
['render', _sfc_render$R],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/pagination/src/components/next.vue',
],
])
const selectGroupKey = 'ElSelectGroup'
const selectKey = 'ElSelect'
function useOption$1(props2, states) {
const select2 = inject(selectKey)
const selectGroup = inject(selectGroupKey, { disabled: false })
const isObject2 = computed(() => {
return (
Object.prototype.toString.call(props2.value).toLowerCase() ===
'[object object]'
)
})
const itemSelected = computed(() => {
if (!select2.props.multiple) {
return isEqual2(props2.value, select2.props.modelValue)
} else {
return contains2(select2.props.modelValue, props2.value)
}
})
const limitReached = computed(() => {
if (select2.props.multiple) {
const modelValue = select2.props.modelValue || []
return (
!itemSelected.value &&
modelValue.length >= select2.props.multipleLimit &&
select2.props.multipleLimit > 0
)
} else {
return false
}
})
const currentLabel = computed(() => {
return props2.label || (isObject2.value ? '' : props2.value)
})
const currentValue = computed(() => {
return props2.value || props2.label || ''
})
const isDisabled = computed(() => {
return props2.disabled || states.groupDisabled || limitReached.value
})
const instance = getCurrentInstance()
const contains2 = (arr = [], target2) => {
if (!isObject2.value) {
return arr && arr.includes(target2)
} else {
const valueKey = select2.props.valueKey
return (
arr &&
arr.some((item2) => {
return get$a(item2, valueKey) === get$a(target2, valueKey)
})
)
}
}
const isEqual2 = (a2, b2) => {
if (!isObject2.value) {
return a2 === b2
} else {
const { valueKey } = select2.props
return get$a(a2, valueKey) === get$a(b2, valueKey)
}
}
const hoverItem = () => {
if (!props2.disabled && !selectGroup.disabled) {
select2.hoverIndex = select2.optionsArray.indexOf(instance.proxy)
}
}
watch$1(
() => currentLabel.value,
() => {
if (!props2.created && !select2.props.remote) select2.setSelected()
}
)
watch$1(
() => props2.value,
(val2, oldVal) => {
const { remote, valueKey } = select2.props
if (!props2.created && !remote) {
if (
valueKey &&
typeof val2 === 'object' &&
typeof oldVal === 'object' &&
val2[valueKey] === oldVal[valueKey]
) {
return
}
select2.setSelected()
}
}
)
watch$1(
() => selectGroup.disabled,
() => {
states.groupDisabled = selectGroup.disabled
},
{ immediate: true }
)
const { queryChange } = toRaw(select2)
watch$1(queryChange, (changes) => {
const { query } = unref(changes)
const regexp4 = new RegExp(escapeStringRegexp(query), 'i')
states.visible = regexp4.test(currentLabel.value) || props2.created
if (!states.visible) {
select2.filteredOptionsCount--
}
})
return {
select: select2,
currentLabel,
currentValue,
itemSelected,
isDisabled,
hoverItem,
}
}
const _sfc_main$7V = defineComponent({
name: 'ElOption',
componentName: 'ElOption',
props: {
value: {
required: true,
type: [String, Number, Boolean, Object],
},
label: [String, Number],
created: Boolean,
disabled: {
type: Boolean,
default: false,
},
},
setup(props2) {
const ns = useNamespace('select')
const states = reactive({
index: -1,
groupDisabled: false,
visible: true,
hitState: false,
hover: false,
})
const {
currentLabel,
itemSelected,
isDisabled,
select: select2,
hoverItem,
} = useOption$1(props2, states)
const { visible, hover } = toRefs$2(states)
const vm = getCurrentInstance().proxy
const key2 = vm.value
select2.onOptionCreate(vm)
onBeforeUnmount(() => {
const { selected } = select2
const selectedOptions = select2.props.multiple ? selected : [selected]
const doesSelected = selectedOptions.some((item2) => {
return item2.value === vm.value
})
if (select2.cachedOptions.get(key2) === vm && !doesSelected) {
nextTick(() => {
select2.cachedOptions.delete(key2)
})
}
select2.onOptionDestroy(key2, vm)
})
function selectOptionClick() {
if (props2.disabled !== true && states.groupDisabled !== true) {
select2.handleOptionSelect(vm, true)
}
}
return {
ns,
currentLabel,
itemSelected,
isDisabled,
select: select2,
hoverItem,
visible,
hover,
selectOptionClick,
states,
}
},
})
function _sfc_render$Q(_ctx, _cache, $props2, $setup, $data, $options) {
return withDirectives(
(openBlock(),
createElementBlock(
'li',
{
class: normalizeClass([
_ctx.ns.be('dropdown', 'item'),
_ctx.ns.is('disabled', _ctx.isDisabled),
{
selected: _ctx.itemSelected,
hover: _ctx.hover,
},
]),
onMouseenter:
_cache[0] ||
(_cache[0] = (...args) => _ctx.hoverItem && _ctx.hoverItem(...args)),
onClick:
_cache[1] ||
(_cache[1] = withModifiers(
(...args) =>
_ctx.selectOptionClick && _ctx.selectOptionClick(...args),
['stop']
)),
},
[
renderSlot(_ctx.$slots, 'default', {}, () => [
createElementVNode(
'span',
null,
toDisplayString$1(_ctx.currentLabel),
1
),
]),
],
34
)),
[[vShow, _ctx.visible]]
)
}
var Option$1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$7V, [
['render', _sfc_render$Q],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/select/src/option.vue',
],
])
const _sfc_main$7U = defineComponent({
name: 'ElSelectDropdown',
componentName: 'ElSelectDropdown',
setup() {
const select2 = inject(selectKey)
const ns = useNamespace('select')
const popperClass = computed(() => select2.props.popperClass)
const isMultiple2 = computed(() => select2.props.multiple)
const isFitInputWidth = computed(() => select2.props.fitInputWidth)
const minWidth = ref('')
function updateMinWidth() {
var _a2
minWidth.value = `${
(_a2 = select2.selectWrapper) == null
? void 0
: _a2.getBoundingClientRect().width
}px`
}
onMounted(() => {
updateMinWidth()
addResizeListener(select2.selectWrapper, updateMinWidth)
})
onBeforeUnmount(() => {
removeResizeListener(select2.selectWrapper, updateMinWidth)
})
return {
ns,
minWidth,
popperClass,
isMultiple: isMultiple2,
isFitInputWidth,
}
},
})
function _sfc_render$P(_ctx, _cache, $props2, $setup, $data, $options) {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
_ctx.ns.b('dropdown'),
_ctx.ns.is('multiple', _ctx.isMultiple),
_ctx.popperClass,
]),
style: normalizeStyle$1({
[_ctx.isFitInputWidth ? 'width' : 'minWidth']: _ctx.minWidth,
}),
},
[renderSlot(_ctx.$slots, 'default')],
6
)
)
}
var ElSelectMenu$1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$7U, [
['render', _sfc_render$P],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/select/src/select-dropdown.vue',
],
])
function useSelectStates(props2) {
const { t: t3 } = useLocale()
return reactive({
options: /* @__PURE__ */ new Map(),
cachedOptions: /* @__PURE__ */ new Map(),
createdLabel: null,
createdSelected: false,
selected: props2.multiple ? [] : {},
inputLength: 20,
inputWidth: 0,
initialInputHeight: 0,
optionsCount: 0,
filteredOptionsCount: 0,
visible: false,
softFocus: false,
selectedLabel: '',
hoverIndex: -1,
query: '',
previousQuery: null,
inputHovering: false,
cachedPlaceHolder: '',
currentPlaceholder: t3('el.select.placeholder'),
menuVisibleOnFocus: false,
isOnComposition: false,
isSilentBlur: false,
prefixWidth: 11,
tagInMultiLine: false,
})
}
const useSelect$2 = (props2, states, ctx) => {
const { t: t3 } = useLocale()
const ns = useNamespace('select')
const reference2 = ref(null)
const input = ref(null)
const tooltipRef = ref(null)
const tags = ref(null)
const selectWrapper = ref(null)
const scrollbar = ref(null)
const hoverOption = ref(-1)
const queryChange = shallowRef({ query: '' })
const groupQueryChange = shallowRef('')
const elForm = inject(formContextKey, {})
const elFormItem = inject(formItemContextKey, {})
const readonly2 = computed(
() => !props2.filterable || props2.multiple || !states.visible
)
const selectDisabled = computed(() => props2.disabled || elForm.disabled)
const showClose = computed(() => {
const hasValue = props2.multiple
? Array.isArray(props2.modelValue) && props2.modelValue.length > 0
: props2.modelValue !== void 0 &&
props2.modelValue !== null &&
props2.modelValue !== ''
const criteria =
props2.clearable &&
!selectDisabled.value &&
states.inputHovering &&
hasValue
return criteria
})
const iconComponent = computed(() =>
props2.remote && props2.filterable ? '' : props2.suffixIcon
)
const iconReverse = computed(() =>
ns.is('reverse', iconComponent.value && states.visible)
)
const debounce$12 = computed(() => (props2.remote ? 300 : 0))
const emptyText = computed(() => {
if (props2.loading) {
return props2.loadingText || t3('el.select.loading')
} else {
if (props2.remote && states.query === '' && states.options.size === 0)
return false
if (
props2.filterable &&
states.query &&
states.options.size > 0 &&
states.filteredOptionsCount === 0
) {
return props2.noMatchText || t3('el.select.noMatch')
}
if (states.options.size === 0) {
return props2.noDataText || t3('el.select.noData')
}
}
return null
})
const optionsArray = computed(() => Array.from(states.options.values()))
const cachedOptionsArray = computed(() =>
Array.from(states.cachedOptions.values())
)
const showNewOption = computed(() => {
const hasExistingOption = optionsArray.value
.filter((option2) => {
return !option2.created
})
.some((option2) => {
return option2.currentLabel === states.query
})
return (
props2.filterable &&
props2.allowCreate &&
states.query !== '' &&
!hasExistingOption
)
})
const selectSize = useSize$1()
const collapseTagSize = computed(() =>
['small'].includes(selectSize.value) ? 'small' : 'default'
)
const dropMenuVisible = computed({
get() {
return states.visible && emptyText.value !== false
},
set(val2) {
states.visible = val2
},
})
watch$1(
() => selectDisabled.value,
() => {
nextTick(() => {
resetInputHeight()
})
}
)
watch$1(
() => props2.placeholder,
(val2) => {
states.cachedPlaceHolder = states.currentPlaceholder = val2
}
)
watch$1(
() => props2.modelValue,
(val2, oldVal) => {
var _a2
if (props2.multiple) {
resetInputHeight()
if ((val2 && val2.length > 0) || (input.value && states.query !== '')) {
states.currentPlaceholder = ''
} else {
states.currentPlaceholder = states.cachedPlaceHolder
}
if (props2.filterable && !props2.reserveKeyword) {
states.query = ''
handleQueryChange(states.query)
}
}
setSelected()
if (props2.filterable && !props2.multiple) {
states.inputLength = 20
}
if (!isEqual$4(val2, oldVal)) {
;(_a2 = elFormItem.validate) == null
? void 0
: _a2.call(elFormItem, 'change').catch((err) => debugWarn())
}
},
{
flush: 'post',
deep: true,
}
)
watch$1(
() => states.visible,
(val2) => {
var _a2, _b2, _c2
if (!val2) {
input.value && input.value.blur()
states.query = ''
states.previousQuery = null
states.selectedLabel = ''
states.inputLength = 20
states.menuVisibleOnFocus = false
resetHoverIndex()
nextTick(() => {
if (
input.value &&
input.value.value === '' &&
states.selected.length === 0
) {
states.currentPlaceholder = states.cachedPlaceHolder
}
})
if (!props2.multiple) {
if (states.selected) {
if (
props2.filterable &&
props2.allowCreate &&
states.createdSelected &&
states.createdLabel
) {
states.selectedLabel = states.createdLabel
} else {
states.selectedLabel = states.selected.currentLabel
}
if (props2.filterable) states.query = states.selectedLabel
}
if (props2.filterable) {
states.currentPlaceholder = states.cachedPlaceHolder
}
}
} else {
;(_b2 = (_a2 = tooltipRef.value) == null ? void 0 : _a2.updatePopper) ==
null
? void 0
: _b2.call(_a2)
if (props2.filterable) {
states.filteredOptionsCount = states.optionsCount
states.query = props2.remote ? '' : states.selectedLabel
if (props2.multiple) {
;(_c2 = input.value) == null ? void 0 : _c2.focus()
} else {
if (states.selectedLabel) {
states.currentPlaceholder = `${states.selectedLabel}`
states.selectedLabel = ''
}
}
handleQueryChange(states.query)
if (!props2.multiple && !props2.remote) {
queryChange.value.query = ''
triggerRef(queryChange)
triggerRef(groupQueryChange)
}
}
}
ctx.emit('visible-change', val2)
}
)
watch$1(
() => states.options.entries(),
() => {
var _a2, _b2, _c2
if (!isClient$1) return
;(_b2 = (_a2 = tooltipRef.value) == null ? void 0 : _a2.updatePopper) ==
null
? void 0
: _b2.call(_a2)
if (props2.multiple) {
resetInputHeight()
}
const inputs =
((_c2 = selectWrapper.value) == null
? void 0
: _c2.querySelectorAll('input')) || []
if (!Array.from(inputs).includes(document.activeElement)) {
setSelected()
}
if (
props2.defaultFirstOption &&
(props2.filterable || props2.remote) &&
states.filteredOptionsCount
) {
checkDefaultFirstOption()
}
},
{
flush: 'post',
}
)
watch$1(
() => states.hoverIndex,
(val2) => {
if (typeof val2 === 'number' && val2 > -1) {
hoverOption.value = optionsArray.value[val2] || {}
}
optionsArray.value.forEach((option2) => {
option2.hover = hoverOption.value === option2
})
}
)
const resetInputHeight = () => {
if (props2.collapseTags && !props2.filterable) return
nextTick(() => {
var _a2, _b2
if (!reference2.value) return
const inputChildNodes = reference2.value.$el.childNodes
const input2 = Array.from(inputChildNodes).find(
(item2) => item2.tagName === 'INPUT'
)
const _tags = tags.value
const sizeInMap = states.initialInputHeight || 40
input2.style.height =
states.selected.length === 0
? `${sizeInMap}px`
: `${Math.max(
_tags
? _tags.clientHeight + (_tags.clientHeight > sizeInMap ? 6 : 0)
: 0,
sizeInMap
)}px`
states.tagInMultiLine =
Number.parseFloat(input2.style.height) >= sizeInMap
if (states.visible && emptyText.value !== false) {
;(_b2 = (_a2 = tooltipRef.value) == null ? void 0 : _a2.updatePopper) ==
null
? void 0
: _b2.call(_a2)
}
})
}
const handleQueryChange = (val2) => {
if (states.previousQuery === val2 || states.isOnComposition) return
if (
states.previousQuery === null &&
(typeof props2.filterMethod === 'function' ||
typeof props2.remoteMethod === 'function')
) {
states.previousQuery = val2
return
}
states.previousQuery = val2
nextTick(() => {
var _a2, _b2
if (states.visible)
(_b2 = (_a2 = tooltipRef.value) == null ? void 0 : _a2.updatePopper) ==
null
? void 0
: _b2.call(_a2)
})
states.hoverIndex = -1
if (props2.multiple && props2.filterable) {
nextTick(() => {
const length2 = input.value.value.length * 15 + 20
states.inputLength = props2.collapseTags
? Math.min(50, length2)
: length2
managePlaceholder()
resetInputHeight()
})
}
if (props2.remote && typeof props2.remoteMethod === 'function') {
states.hoverIndex = -1
props2.remoteMethod(val2)
} else if (typeof props2.filterMethod === 'function') {
props2.filterMethod(val2)
triggerRef(groupQueryChange)
} else {
states.filteredOptionsCount = states.optionsCount
queryChange.value.query = val2
triggerRef(queryChange)
triggerRef(groupQueryChange)
}
if (
props2.defaultFirstOption &&
(props2.filterable || props2.remote) &&
states.filteredOptionsCount
) {
checkDefaultFirstOption()
}
}
const managePlaceholder = () => {
if (states.currentPlaceholder !== '') {
states.currentPlaceholder = input.value.value
? ''
: states.cachedPlaceHolder
}
}
const checkDefaultFirstOption = () => {
const optionsInDropdown = optionsArray.value.filter(
(n2) => n2.visible && !n2.disabled && !n2.states.groupDisabled
)
const userCreatedOption = optionsInDropdown.find((n2) => n2.created)
const firstOriginOption = optionsInDropdown[0]
states.hoverIndex = getValueIndex(
optionsArray.value,
userCreatedOption || firstOriginOption
)
}
const setSelected = () => {
var _a2
if (!props2.multiple) {
const option2 = getOption(props2.modelValue)
if ((_a2 = option2.props) == null ? void 0 : _a2.created) {
states.createdLabel = option2.props.value
states.createdSelected = true
} else {
states.createdSelected = false
}
states.selectedLabel = option2.currentLabel
states.selected = option2
if (props2.filterable) states.query = states.selectedLabel
return
} else {
states.selectedLabel = ''
}
const result = []
if (Array.isArray(props2.modelValue)) {
props2.modelValue.forEach((value2) => {
result.push(getOption(value2))
})
}
states.selected = result
nextTick(() => {
resetInputHeight()
})
}
const getOption = (value2) => {
let option2
const isObjectValue = toRawType(value2).toLowerCase() === 'object'
const isNull2 = toRawType(value2).toLowerCase() === 'null'
const isUndefined2 = toRawType(value2).toLowerCase() === 'undefined'
for (let i2 = states.cachedOptions.size - 1; i2 >= 0; i2--) {
const cachedOption = cachedOptionsArray.value[i2]
const isEqualValue = isObjectValue
? get$a(cachedOption, props2.valueKey) ===
get$a(value2, props2.valueKey)
: cachedOption.value === value2
if (isEqualValue) {
option2 = {
value: value2,
currentLabel: cachedOption.currentLabel,
isDisabled: cachedOption.isDisabled,
}
break
}
}
if (option2) return option2
const label = isObjectValue
? value2.label
: !isNull2 && !isUndefined2
? value2
: ''
const newOption = {
value: value2,
currentLabel: label,
}
if (props2.multiple) {
newOption.hitState = false
}
return newOption
}
const resetHoverIndex = () => {
setTimeout(() => {
const valueKey = props2.valueKey
if (!props2.multiple) {
states.hoverIndex = optionsArray.value.findIndex((item2) => {
return getValueKey(item2) === getValueKey(states.selected)
})
} else {
if (states.selected.length > 0) {
states.hoverIndex = Math.min.apply(
null,
states.selected.map((selected) => {
return optionsArray.value.findIndex((item2) => {
return get$a(item2, valueKey) === get$a(selected, valueKey)
})
})
)
} else {
states.hoverIndex = -1
}
}
}, 300)
}
const handleResize = () => {
var _a2, _b2
resetInputWidth()
;(_b2 = (_a2 = tooltipRef.value) == null ? void 0 : _a2.updatePopper) ==
null
? void 0
: _b2.call(_a2)
if (props2.multiple && !props2.filterable) resetInputHeight()
}
const resetInputWidth = () => {
var _a2
states.inputWidth =
(_a2 = reference2.value) == null
? void 0
: _a2.$el.getBoundingClientRect().width
}
const onInputChange = () => {
if (props2.filterable && states.query !== states.selectedLabel) {
states.query = states.selectedLabel
handleQueryChange(states.query)
}
}
const debouncedOnInputChange = debounce$3(() => {
onInputChange()
}, debounce$12.value)
const debouncedQueryChange = debounce$3((e2) => {
handleQueryChange(e2.target.value)
}, debounce$12.value)
const emitChange = (val2) => {
if (!isEqual$4(props2.modelValue, val2)) {
ctx.emit(CHANGE_EVENT, val2)
}
}
const deletePrevTag = (e2) => {
if (e2.target.value.length <= 0 && !toggleLastOptionHitState()) {
const value2 = props2.modelValue.slice()
value2.pop()
ctx.emit(UPDATE_MODEL_EVENT, value2)
emitChange(value2)
}
if (e2.target.value.length === 1 && props2.modelValue.length === 0) {
states.currentPlaceholder = states.cachedPlaceHolder
}
}
const deleteTag = (event, tag) => {
const index2 = states.selected.indexOf(tag)
if (index2 > -1 && !selectDisabled.value) {
const value2 = props2.modelValue.slice()
value2.splice(index2, 1)
ctx.emit(UPDATE_MODEL_EVENT, value2)
emitChange(value2)
ctx.emit('remove-tag', tag.value)
}
event.stopPropagation()
}
const deleteSelected = (event) => {
event.stopPropagation()
const value2 = props2.multiple ? [] : ''
if (typeof value2 !== 'string') {
for (const item2 of states.selected) {
if (item2.isDisabled) value2.push(item2.value)
}
}
ctx.emit(UPDATE_MODEL_EVENT, value2)
emitChange(value2)
states.visible = false
ctx.emit('clear')
}
const handleOptionSelect = (option2, byClick) => {
var _a2
if (props2.multiple) {
const value2 = (props2.modelValue || []).slice()
const optionIndex = getValueIndex(value2, option2.value)
if (optionIndex > -1) {
value2.splice(optionIndex, 1)
} else if (
props2.multipleLimit <= 0 ||
value2.length < props2.multipleLimit
) {
value2.push(option2.value)
}
ctx.emit(UPDATE_MODEL_EVENT, value2)
emitChange(value2)
if (option2.created) {
states.query = ''
handleQueryChange('')
states.inputLength = 20
}
if (props2.filterable) (_a2 = input.value) == null ? void 0 : _a2.focus()
} else {
ctx.emit(UPDATE_MODEL_EVENT, option2.value)
emitChange(option2.value)
states.visible = false
}
states.isSilentBlur = byClick
setSoftFocus()
if (states.visible) return
nextTick(() => {
scrollToOption(option2)
})
}
const getValueIndex = (arr = [], value2) => {
if (!isObject$v(value2)) return arr.indexOf(value2)
const valueKey = props2.valueKey
let index2 = -1
arr.some((item2, i2) => {
if (get$a(item2, valueKey) === get$a(value2, valueKey)) {
index2 = i2
return true
}
return false
})
return index2
}
const setSoftFocus = () => {
states.softFocus = true
const _input = input.value || reference2.value
if (_input) {
_input == null ? void 0 : _input.focus()
}
}
const scrollToOption = (option2) => {
var _a2, _b2, _c2, _d, _e
const targetOption = Array.isArray(option2) ? option2[0] : option2
let target2 = null
if (targetOption == null ? void 0 : targetOption.value) {
const options2 = optionsArray.value.filter(
(item2) => item2.value === targetOption.value
)
if (options2.length > 0) {
target2 = options2[0].$el
}
}
if (tooltipRef.value && target2) {
const menu2 =
(_d =
(_c2 =
(_b2 = (_a2 = tooltipRef.value) == null ? void 0 : _a2.popperRef) ==
null
? void 0
: _b2.contentRef) == null
? void 0
: _c2.querySelector) == null
? void 0
: _d.call(_c2, `.${ns.be('dropdown', 'wrap')}`)
if (menu2) {
scrollIntoView$1(menu2, target2)
}
}
;(_e = scrollbar.value) == null ? void 0 : _e.handleScroll()
}
const onOptionCreate = (vm) => {
states.optionsCount++
states.filteredOptionsCount++
states.options.set(vm.value, vm)
states.cachedOptions.set(vm.value, vm)
}
const onOptionDestroy = (key2, vm) => {
if (states.options.get(key2) === vm) {
states.optionsCount--
states.filteredOptionsCount--
states.options.delete(key2)
}
}
const resetInputState = (e2) => {
if (e2.code !== EVENT_CODE.backspace) toggleLastOptionHitState(false)
states.inputLength = input.value.value.length * 15 + 20
resetInputHeight()
}
const toggleLastOptionHitState = (hit) => {
if (!Array.isArray(states.selected)) return
const option2 = states.selected[states.selected.length - 1]
if (!option2) return
if (hit === true || hit === false) {
option2.hitState = hit
return hit
}
option2.hitState = !option2.hitState
return option2.hitState
}
const handleComposition = (event) => {
const text2 = event.target.value
if (event.type === 'compositionend') {
states.isOnComposition = false
nextTick(() => handleQueryChange(text2))
} else {
const lastCharacter = text2[text2.length - 1] || ''
states.isOnComposition = !isKorean(lastCharacter)
}
}
const handleMenuEnter = () => {
nextTick(() => scrollToOption(states.selected))
}
const handleFocus = (event) => {
if (!states.softFocus) {
if (props2.automaticDropdown || props2.filterable) {
if (props2.filterable && !states.visible) {
states.menuVisibleOnFocus = true
}
states.visible = true
}
ctx.emit('focus', event)
} else {
states.softFocus = false
}
}
const blur = () => {
var _a2
states.visible = false
;(_a2 = reference2.value) == null ? void 0 : _a2.blur()
}
const handleBlur = (event) => {
nextTick(() => {
if (states.isSilentBlur) {
states.isSilentBlur = false
} else {
ctx.emit('blur', event)
}
})
states.softFocus = false
}
const handleClearClick = (event) => {
deleteSelected(event)
}
const handleClose = () => {
states.visible = false
}
const toggleMenu = () => {
var _a2
if (props2.automaticDropdown) return
if (!selectDisabled.value) {
if (states.menuVisibleOnFocus) {
states.menuVisibleOnFocus = false
} else {
states.visible = !states.visible
}
if (states.visible) {
;(_a2 = input.value || reference2.value) == null ? void 0 : _a2.focus()
}
}
}
const selectOption = () => {
if (!states.visible) {
toggleMenu()
} else {
if (optionsArray.value[states.hoverIndex]) {
handleOptionSelect(optionsArray.value[states.hoverIndex], void 0)
}
}
}
const getValueKey = (item2) => {
return isObject$v(item2.value)
? get$a(item2.value, props2.valueKey)
: item2.value
}
const optionsAllDisabled = computed(() =>
optionsArray.value
.filter((option2) => option2.visible)
.every((option2) => option2.disabled)
)
const navigateOptions = (direction2) => {
if (!states.visible) {
states.visible = true
return
}
if (states.options.size === 0 || states.filteredOptionsCount === 0) return
if (states.isOnComposition) return
if (!optionsAllDisabled.value) {
if (direction2 === 'next') {
states.hoverIndex++
if (states.hoverIndex === states.options.size) {
states.hoverIndex = 0
}
} else if (direction2 === 'prev') {
states.hoverIndex--
if (states.hoverIndex < 0) {
states.hoverIndex = states.options.size - 1
}
}
const option2 = optionsArray.value[states.hoverIndex]
if (
option2.disabled === true ||
option2.states.groupDisabled === true ||
!option2.visible
) {
navigateOptions(direction2)
}
nextTick(() => scrollToOption(hoverOption.value))
}
}
return {
optionsArray,
selectSize,
handleResize,
debouncedOnInputChange,
debouncedQueryChange,
deletePrevTag,
deleteTag,
deleteSelected,
handleOptionSelect,
scrollToOption,
readonly: readonly2,
resetInputHeight,
showClose,
iconComponent,
iconReverse,
showNewOption,
collapseTagSize,
setSelected,
managePlaceholder,
selectDisabled,
emptyText,
toggleLastOptionHitState,
resetInputState,
handleComposition,
onOptionCreate,
onOptionDestroy,
handleMenuEnter,
handleFocus,
blur,
handleBlur,
handleClearClick,
handleClose,
toggleMenu,
selectOption,
getValueKey,
navigateOptions,
dropMenuVisible,
queryChange,
groupQueryChange,
reference: reference2,
input,
tooltipRef,
tags,
selectWrapper,
scrollbar,
}
}
const COMPONENT_NAME$6 = 'ElSelect'
const _sfc_main$7T = defineComponent({
name: COMPONENT_NAME$6,
componentName: COMPONENT_NAME$6,
components: {
ElInput,
ElSelectMenu: ElSelectMenu$1,
ElOption: Option$1,
ElTag,
ElScrollbar,
ElTooltip,
ElIcon,
},
directives: { ClickOutside },
props: {
name: String,
id: String,
modelValue: {
type: [Array, String, Number, Boolean, Object],
default: void 0,
},
autocomplete: {
type: String,
default: 'off',
},
automaticDropdown: Boolean,
size: {
type: String,
validator: isValidComponentSize,
},
effect: {
type: String,
default: 'light',
},
disabled: Boolean,
clearable: Boolean,
filterable: Boolean,
allowCreate: Boolean,
loading: Boolean,
popperClass: {
type: String,
default: '',
},
remote: Boolean,
loadingText: String,
noMatchText: String,
noDataText: String,
remoteMethod: Function,
filterMethod: Function,
multiple: Boolean,
multipleLimit: {
type: Number,
default: 0,
},
placeholder: {
type: String,
},
defaultFirstOption: Boolean,
reserveKeyword: {
type: Boolean,
default: true,
},
valueKey: {
type: String,
default: 'value',
},
collapseTags: Boolean,
collapseTagsTooltip: {
type: Boolean,
default: false,
},
popperAppendToBody: {
type: Boolean,
default: void 0,
},
teleported: useTooltipContentProps.teleported,
persistent: {
type: Boolean,
default: true,
},
clearIcon: {
type: [String, Object],
default: circleClose,
},
fitInputWidth: {
type: Boolean,
default: false,
},
suffixIcon: {
type: [String, Object],
default: arrowUp,
},
tagType: { ...tagProps.type, default: 'info' },
},
emits: [
UPDATE_MODEL_EVENT,
CHANGE_EVENT,
'remove-tag',
'clear',
'visible-change',
'focus',
'blur',
],
setup(props2, ctx) {
const nsSelect = useNamespace('select')
const nsInput = useNamespace('input')
const { t: t3 } = useLocale()
const states = useSelectStates(props2)
const {
optionsArray,
selectSize,
readonly: readonly2,
handleResize,
collapseTagSize,
debouncedOnInputChange,
debouncedQueryChange,
deletePrevTag,
deleteTag,
deleteSelected,
handleOptionSelect,
scrollToOption,
setSelected,
resetInputHeight,
managePlaceholder,
showClose,
selectDisabled,
iconComponent,
iconReverse,
showNewOption,
emptyText,
toggleLastOptionHitState,
resetInputState,
handleComposition,
onOptionCreate,
onOptionDestroy,
handleMenuEnter,
handleFocus,
blur,
handleBlur,
handleClearClick,
handleClose,
toggleMenu,
selectOption,
getValueKey,
navigateOptions,
dropMenuVisible,
reference: reference2,
input,
tooltipRef,
tags,
selectWrapper,
scrollbar,
queryChange,
groupQueryChange,
} = useSelect$2(props2, states, ctx)
const { focus: focus2 } = useFocus$1(reference2)
const {
inputWidth,
selected,
inputLength,
filteredOptionsCount,
visible,
softFocus,
selectedLabel,
hoverIndex,
query,
inputHovering,
currentPlaceholder,
menuVisibleOnFocus,
isOnComposition,
isSilentBlur,
options: options2,
cachedOptions,
optionsCount,
prefixWidth,
tagInMultiLine,
} = toRefs$2(states)
const wrapperKls = computed(() => {
const classList2 = [nsSelect.b()]
const _selectSize = unref(selectSize)
if (_selectSize) {
classList2.push(nsSelect.m(_selectSize))
}
if (props2.disabled) {
classList2.push(nsSelect.m('disabled'))
}
return classList2
})
const selectTagsStyle = computed(() => ({
maxWidth: `${unref(inputWidth) - 32}px`,
width: '100%',
}))
provide(
selectKey,
reactive({
props: props2,
options: options2,
optionsArray,
cachedOptions,
optionsCount,
filteredOptionsCount,
hoverIndex,
handleOptionSelect,
onOptionCreate,
onOptionDestroy,
selectWrapper,
selected,
setSelected,
queryChange,
groupQueryChange,
})
)
onMounted(() => {
states.cachedPlaceHolder = currentPlaceholder.value =
props2.placeholder || t3('el.select.placeholder')
if (
props2.multiple &&
Array.isArray(props2.modelValue) &&
props2.modelValue.length > 0
) {
currentPlaceholder.value = ''
}
addResizeListener(selectWrapper.value, handleResize)
if (reference2.value && reference2.value.$el) {
const sizeMap = {
large: 36,
default: 32,
small: 28,
}
const input2 = reference2.value.input
states.initialInputHeight =
input2.getBoundingClientRect().height || sizeMap[selectSize.value]
}
if (props2.remote && props2.multiple) {
resetInputHeight()
}
nextTick(() => {
if (!reference2.value) return
if (reference2.value.$el) {
inputWidth.value = reference2.value.$el.getBoundingClientRect().width
}
if (ctx.slots.prefix) {
const inputChildNodes = reference2.value.$el.childNodes
const input2 = Array.from(inputChildNodes).find(
(item2) => item2.tagName === 'INPUT'
)
const prefix = reference2.value.$el.querySelector(
`.${nsInput.e('prefix')}`
)
prefixWidth.value = Math.max(
prefix.getBoundingClientRect().width + 5,
30
)
if (states.prefixWidth) {
input2.style.paddingLeft = `${Math.max(states.prefixWidth, 30)}px`
}
}
})
setSelected()
})
onBeforeUnmount(() => {
removeResizeListener(selectWrapper.value, handleResize)
})
if (props2.multiple && !Array.isArray(props2.modelValue)) {
ctx.emit(UPDATE_MODEL_EVENT, [])
}
if (!props2.multiple && Array.isArray(props2.modelValue)) {
ctx.emit(UPDATE_MODEL_EVENT, '')
}
const popperPaneRef = computed(() => {
var _a2, _b2
return (_b2 =
(_a2 = tooltipRef.value) == null ? void 0 : _a2.popperRef) == null
? void 0
: _b2.contentRef
})
const { compatTeleported } = useDeprecateAppendToBody(
COMPONENT_NAME$6,
'popperAppendToBody'
)
return {
tagInMultiLine,
prefixWidth,
selectSize,
readonly: readonly2,
handleResize,
collapseTagSize,
debouncedOnInputChange,
debouncedQueryChange,
deletePrevTag,
deleteTag,
deleteSelected,
handleOptionSelect,
scrollToOption,
inputWidth,
selected,
inputLength,
filteredOptionsCount,
visible,
softFocus,
selectedLabel,
hoverIndex,
query,
inputHovering,
currentPlaceholder,
menuVisibleOnFocus,
isOnComposition,
isSilentBlur,
options: options2,
resetInputHeight,
managePlaceholder,
showClose,
selectDisabled,
iconComponent,
iconReverse,
showNewOption,
emptyText,
toggleLastOptionHitState,
resetInputState,
handleComposition,
handleMenuEnter,
handleFocus,
blur,
handleBlur,
handleClearClick,
handleClose,
toggleMenu,
selectOption,
getValueKey,
navigateOptions,
dropMenuVisible,
focus: focus2,
reference: reference2,
input,
tooltipRef,
popperPaneRef,
tags,
selectWrapper,
scrollbar,
wrapperKls,
selectTagsStyle,
compatTeleported,
nsSelect,
}
},
})
const _hoisted_1$6m = { class: 'select-trigger' }
const _hoisted_2$5b = ['disabled', 'autocomplete']
const _hoisted_3$4D = {
style: {
height: '100%',
display: 'flex',
'justify-content': 'center',
'align-items': 'center',
},
}
function _sfc_render$O(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_tag = resolveComponent('el-tag')
const _component_el_tooltip = resolveComponent('el-tooltip')
const _component_el_icon = resolveComponent('el-icon')
const _component_el_input = resolveComponent('el-input')
const _component_el_option = resolveComponent('el-option')
const _component_el_scrollbar = resolveComponent('el-scrollbar')
const _component_el_select_menu = resolveComponent('el-select-menu')
const _directive_click_outside = resolveDirective('click-outside')
return withDirectives(
(openBlock(),
createElementBlock(
'div',
{
ref: 'selectWrapper',
class: normalizeClass(_ctx.wrapperKls),
onClick:
_cache[24] ||
(_cache[24] = withModifiers(
(...args) => _ctx.toggleMenu && _ctx.toggleMenu(...args),
['stop']
)),
},
[
createVNode$1(
_component_el_tooltip,
{
ref: 'tooltipRef',
visible: _ctx.dropMenuVisible,
'onUpdate:visible':
_cache[23] ||
(_cache[23] = ($event) => (_ctx.dropMenuVisible = $event)),
placement: 'bottom-start',
teleported: _ctx.compatTeleported,
'popper-class': [_ctx.nsSelect.e('popper'), _ctx.popperClass],
'fallback-placements': [
'bottom-start',
'top-start',
'right',
'left',
],
effect: _ctx.effect,
pure: '',
trigger: 'click',
transition: `${_ctx.nsSelect.namespace.value}-zoom-in-top`,
'stop-popper-mouse-event': false,
'gpu-acceleration': false,
persistent: _ctx.persistent,
onShow: _ctx.handleMenuEnter,
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$6m, [
_ctx.multiple
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
ref: 'tags',
class: normalizeClass(_ctx.nsSelect.e('tags')),
style: normalizeStyle$1(_ctx.selectTagsStyle),
},
[
_ctx.collapseTags && _ctx.selected.length
? (openBlock(),
createElementBlock(
'span',
{
key: 0,
class: normalizeClass([
_ctx.nsSelect.b('tags-wrapper'),
{
'has-prefix':
_ctx.prefixWidth && _ctx.selected.length,
},
]),
},
[
createVNode$1(
_component_el_tag,
{
closable:
!_ctx.selectDisabled &&
!_ctx.selected[0].isDisabled,
size: _ctx.collapseTagSize,
hit: _ctx.selected[0].hitState,
type: _ctx.tagType,
'disable-transitions': '',
onClose:
_cache[0] ||
(_cache[0] = ($event) =>
_ctx.deleteTag(
$event,
_ctx.selected[0]
)),
},
{
default: withCtx(() => [
createElementVNode(
'span',
{
class: normalizeClass(
_ctx.nsSelect.e('tags-text')
),
style: normalizeStyle$1({
maxWidth:
_ctx.inputWidth - 123 + 'px',
}),
},
toDisplayString$1(
_ctx.selected[0].currentLabel
),
7
),
]),
_: 1,
},
8,
['closable', 'size', 'hit', 'type']
),
_ctx.selected.length > 1
? (openBlock(),
createBlock(
_component_el_tag,
{
key: 0,
closable: false,
size: _ctx.collapseTagSize,
type: _ctx.tagType,
'disable-transitions': '',
},
{
default: withCtx(() => [
_ctx.collapseTagsTooltip
? (openBlock(),
createBlock(
_component_el_tooltip,
{
key: 0,
disabled:
_ctx.dropMenuVisible,
'fallback-placements': [
'bottom',
'top',
'right',
'left',
],
effect: _ctx.effect,
placement: 'bottom',
teleported: false,
},
{
default: withCtx(() => [
createElementVNode(
'span',
{
class: normalizeClass(
_ctx.nsSelect.e(
'tags-text'
)
),
},
'+ ' +
toDisplayString$1(
_ctx.selected.length -
1
),
3
),
]),
content: withCtx(() => [
createElementVNode(
'div',
{
class: normalizeClass(
_ctx.nsSelect.e(
'collapse-tags'
)
),
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
_ctx.selected,
(item2, idx) => {
return (
openBlock(),
createElementBlock(
'div',
{
key: idx,
class:
normalizeClass(
_ctx.nsSelect.e(
'collapse-tag'
)
),
},
[
(openBlock(),
createBlock(
_component_el_tag,
{
key: _ctx.getValueKey(
item2
),
class:
'in-tooltip',
closable:
!_ctx.selectDisabled &&
!item2.isDisabled,
size: _ctx.collapseTagSize,
hit: item2.hitState,
type: _ctx.tagType,
'disable-transitions':
'',
style: {
margin:
'2px',
},
onClose:
(
$event
) =>
_ctx.deleteTag(
$event,
item2
),
},
{
default:
withCtx(
() => [
createElementVNode(
'span',
{
class:
normalizeClass(
_ctx.nsSelect.e(
'tags-text'
)
),
style:
normalizeStyle$1(
{
maxWidth:
_ctx.inputWidth -
75 +
'px',
}
),
},
toDisplayString$1(
item2.currentLabel
),
7
),
]
),
_: 2,
},
1032,
[
'closable',
'size',
'hit',
'type',
'onClose',
]
)),
],
2
)
)
}
),
128
)),
],
2
),
]),
_: 1,
},
8,
['disabled', 'effect']
))
: (openBlock(),
createElementBlock(
'span',
{
key: 1,
class: normalizeClass(
_ctx.nsSelect.e('tags-text')
),
},
'+ ' +
toDisplayString$1(
_ctx.selected.length - 1
),
3
)),
]),
_: 1,
},
8,
['size', 'type']
))
: createCommentVNode('v-if', true),
],
2
))
: createCommentVNode('v-if', true),
createCommentVNode('
'),
!_ctx.collapseTags
? (openBlock(),
createBlock(
Transition,
{
key: 1,
onAfterLeave: _ctx.resetInputHeight,
},
{
default: withCtx(() => [
createElementVNode(
'span',
{
class: normalizeClass([
_ctx.nsSelect.b('tags-wrapper'),
{
'has-prefix':
_ctx.prefixWidth &&
_ctx.selected.length,
},
]),
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.selected, (item2) => {
return (
openBlock(),
createBlock(
_component_el_tag,
{
key: _ctx.getValueKey(item2),
closable:
!_ctx.selectDisabled &&
!item2.isDisabled,
size: _ctx.collapseTagSize,
hit: item2.hitState,
type: _ctx.tagType,
'disable-transitions': '',
onClose: ($event) =>
_ctx.deleteTag($event, item2),
},
{
default: withCtx(() => [
createElementVNode(
'span',
{
class: normalizeClass(
_ctx.nsSelect.e(
'tags-text'
)
),
style: normalizeStyle$1({
maxWidth:
_ctx.inputWidth -
75 +
'px',
}),
},
toDisplayString$1(
item2.currentLabel
),
7
),
]),
_: 2,
},
1032,
[
'closable',
'size',
'hit',
'type',
'onClose',
]
)
)
}),
128
)),
],
2
),
]),
_: 1,
},
8,
['onAfterLeave']
))
: createCommentVNode('v-if', true),
createCommentVNode('
'),
_ctx.filterable
? withDirectives(
(openBlock(),
createElementBlock(
'input',
{
key: 2,
ref: 'input',
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(_ctx.query = $event)),
type: 'text',
class: normalizeClass([
_ctx.nsSelect.e('input'),
_ctx.nsSelect.is(_ctx.selectSize),
]),
disabled: _ctx.selectDisabled,
autocomplete: _ctx.autocomplete,
style: normalizeStyle$1({
marginLeft:
(_ctx.prefixWidth &&
!_ctx.selected.length) ||
_ctx.tagInMultiLine
? `${_ctx.prefixWidth}px`
: '',
flexGrow: 1,
width: `${
_ctx.inputLength / (_ctx.inputWidth - 32)
}%`,
maxWidth: `${_ctx.inputWidth - 42}px`,
}),
onFocus:
_cache[2] ||
(_cache[2] = (...args) =>
_ctx.handleFocus &&
_ctx.handleFocus(...args)),
onBlur:
_cache[3] ||
(_cache[3] = (...args) =>
_ctx.handleBlur &&
_ctx.handleBlur(...args)),
onKeyup:
_cache[4] ||
(_cache[4] = (...args) =>
_ctx.managePlaceholder &&
_ctx.managePlaceholder(...args)),
onKeydown: [
_cache[5] ||
(_cache[5] = (...args) =>
_ctx.resetInputState &&
_ctx.resetInputState(...args)),
_cache[6] ||
(_cache[6] = withKeys(
withModifiers(
($event) =>
_ctx.navigateOptions('next'),
['prevent']
),
['down']
)),
_cache[7] ||
(_cache[7] = withKeys(
withModifiers(
($event) =>
_ctx.navigateOptions('prev'),
['prevent']
),
['up']
)),
_cache[8] ||
(_cache[8] = withKeys(
withModifiers(
($event) => (_ctx.visible = false),
['stop', 'prevent']
),
['esc']
)),
_cache[9] ||
(_cache[9] = withKeys(
withModifiers(
(...args) =>
_ctx.selectOption &&
_ctx.selectOption(...args),
['stop', 'prevent']
),
['enter']
)),
_cache[10] ||
(_cache[10] = withKeys(
(...args) =>
_ctx.deletePrevTag &&
_ctx.deletePrevTag(...args),
['delete']
)),
_cache[11] ||
(_cache[11] = withKeys(
($event) => (_ctx.visible = false),
['tab']
)),
],
onCompositionstart:
_cache[12] ||
(_cache[12] = (...args) =>
_ctx.handleComposition &&
_ctx.handleComposition(...args)),
onCompositionupdate:
_cache[13] ||
(_cache[13] = (...args) =>
_ctx.handleComposition &&
_ctx.handleComposition(...args)),
onCompositionend:
_cache[14] ||
(_cache[14] = (...args) =>
_ctx.handleComposition &&
_ctx.handleComposition(...args)),
onInput:
_cache[15] ||
(_cache[15] = (...args) =>
_ctx.debouncedQueryChange &&
_ctx.debouncedQueryChange(...args)),
},
null,
46,
_hoisted_2$5b
)),
[[vModelText, _ctx.query]]
)
: createCommentVNode('v-if', true),
],
6
))
: createCommentVNode('v-if', true),
createVNode$1(
_component_el_input,
{
id: _ctx.id,
ref: 'reference',
modelValue: _ctx.selectedLabel,
'onUpdate:modelValue':
_cache[16] ||
(_cache[16] = ($event) => (_ctx.selectedLabel = $event)),
type: 'text',
placeholder: _ctx.currentPlaceholder,
name: _ctx.name,
autocomplete: _ctx.autocomplete,
size: _ctx.selectSize,
disabled: _ctx.selectDisabled,
readonly: _ctx.readonly,
'validate-event': false,
class: normalizeClass([
_ctx.nsSelect.is('focus', _ctx.visible),
]),
tabindex: _ctx.multiple && _ctx.filterable ? -1 : void 0,
onFocus: _ctx.handleFocus,
onBlur: _ctx.handleBlur,
onInput: _ctx.debouncedOnInputChange,
onPaste: _ctx.debouncedOnInputChange,
onCompositionstart: _ctx.handleComposition,
onCompositionupdate: _ctx.handleComposition,
onCompositionend: _ctx.handleComposition,
onKeydown: [
_cache[17] ||
(_cache[17] = withKeys(
withModifiers(
($event) => _ctx.navigateOptions('next'),
['stop', 'prevent']
),
['down']
)),
_cache[18] ||
(_cache[18] = withKeys(
withModifiers(
($event) => _ctx.navigateOptions('prev'),
['stop', 'prevent']
),
['up']
)),
withKeys(
withModifiers(_ctx.selectOption, ['stop', 'prevent']),
['enter']
),
_cache[19] ||
(_cache[19] = withKeys(
withModifiers(
($event) => (_ctx.visible = false),
['stop', 'prevent']
),
['esc']
)),
_cache[20] ||
(_cache[20] = withKeys(
($event) => (_ctx.visible = false),
['tab']
)),
],
onMouseenter:
_cache[21] ||
(_cache[21] = ($event) => (_ctx.inputHovering = true)),
onMouseleave:
_cache[22] ||
(_cache[22] = ($event) => (_ctx.inputHovering = false)),
},
createSlots(
{
suffix: withCtx(() => [
_ctx.iconComponent
? withDirectives(
(openBlock(),
createBlock(
_component_el_icon,
{
key: 0,
class: normalizeClass([
_ctx.nsSelect.e('caret'),
_ctx.nsSelect.e('icon'),
_ctx.iconReverse,
]),
},
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(
_ctx.iconComponent
)
)),
]),
_: 1,
},
8,
['class']
)),
[[vShow, !_ctx.showClose]]
)
: createCommentVNode('v-if', true),
_ctx.showClose && _ctx.clearIcon
? (openBlock(),
createBlock(
_component_el_icon,
{
key: 1,
class: normalizeClass([
_ctx.nsSelect.e('caret'),
_ctx.nsSelect.e('icon'),
]),
onClick: _ctx.handleClearClick,
},
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(_ctx.clearIcon)
)),
]),
_: 1,
},
8,
['class', 'onClick']
))
: createCommentVNode('v-if', true),
]),
_: 2,
},
[
_ctx.$slots.prefix
? {
name: 'prefix',
fn: withCtx(() => [
createElementVNode('div', _hoisted_3$4D, [
renderSlot(_ctx.$slots, 'prefix'),
]),
]),
}
: void 0,
]
),
1032,
[
'id',
'modelValue',
'placeholder',
'name',
'autocomplete',
'size',
'disabled',
'readonly',
'class',
'tabindex',
'onFocus',
'onBlur',
'onInput',
'onPaste',
'onCompositionstart',
'onCompositionupdate',
'onCompositionend',
'onKeydown',
]
),
]),
]),
content: withCtx(() => [
createVNode$1(_component_el_select_menu, null, {
default: withCtx(() => [
withDirectives(
createVNode$1(
_component_el_scrollbar,
{
ref: 'scrollbar',
tag: 'ul',
'wrap-class': _ctx.nsSelect.be('dropdown', 'wrap'),
'view-class': _ctx.nsSelect.be('dropdown', 'list'),
class: normalizeClass([
_ctx.nsSelect.is(
'empty',
!_ctx.allowCreate &&
Boolean(_ctx.query) &&
_ctx.filteredOptionsCount === 0
),
]),
},
{
default: withCtx(() => [
_ctx.showNewOption
? (openBlock(),
createBlock(
_component_el_option,
{
key: 0,
value: _ctx.query,
created: true,
},
null,
8,
['value']
))
: createCommentVNode('v-if', true),
renderSlot(_ctx.$slots, 'default'),
]),
_: 3,
},
8,
['wrap-class', 'view-class', 'class']
),
[[vShow, _ctx.options.size > 0 && !_ctx.loading]]
),
_ctx.emptyText &&
(!_ctx.allowCreate ||
_ctx.loading ||
(_ctx.allowCreate && _ctx.options.size === 0))
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
_ctx.$slots.empty
? renderSlot(_ctx.$slots, 'empty', { key: 0 })
: (openBlock(),
createElementBlock(
'p',
{
key: 1,
class: normalizeClass(
_ctx.nsSelect.be('dropdown', 'empty')
),
},
toDisplayString$1(_ctx.emptyText),
3
)),
],
2112
))
: createCommentVNode('v-if', true),
]),
_: 3,
}),
]),
_: 3,
},
8,
[
'visible',
'teleported',
'popper-class',
'effect',
'transition',
'persistent',
'onShow',
]
),
],
2
)),
[[_directive_click_outside, _ctx.handleClose, _ctx.popperPaneRef]]
)
}
var Select$3 = /* @__PURE__ */ _export_sfc$1(_sfc_main$7T, [
['render', _sfc_render$O],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/select/src/select.vue',
],
])
const _sfc_main$7S = defineComponent({
name: 'ElOptionGroup',
componentName: 'ElOptionGroup',
props: {
label: String,
disabled: {
type: Boolean,
default: false,
},
},
setup(props2) {
const ns = useNamespace('select')
const visible = ref(true)
const instance = getCurrentInstance()
const children = ref([])
provide(
selectGroupKey,
reactive({
...toRefs$2(props2),
})
)
const select2 = inject(selectKey)
onMounted(() => {
children.value = flattedChildren(instance.subTree)
})
const flattedChildren = (node2) => {
const children2 = []
if (Array.isArray(node2.children)) {
node2.children.forEach((child) => {
var _a2
if (
child.type &&
child.type.name === 'ElOption' &&
child.component &&
child.component.proxy
) {
children2.push(child.component.proxy)
} else if ((_a2 = child.children) == null ? void 0 : _a2.length) {
children2.push(...flattedChildren(child))
}
})
}
return children2
}
const { groupQueryChange } = toRaw(select2)
watch$1(groupQueryChange, () => {
visible.value = children.value.some((option2) => option2.visible === true)
})
return {
visible,
ns,
}
},
})
function _sfc_render$N(_ctx, _cache, $props2, $setup, $data, $options) {
return withDirectives(
(openBlock(),
createElementBlock(
'ul',
{
class: normalizeClass(_ctx.ns.be('group', 'wrap')),
},
[
createElementVNode(
'li',
{
class: normalizeClass(_ctx.ns.be('group', 'title')),
},
toDisplayString$1(_ctx.label),
3
),
createElementVNode('li', null, [
createElementVNode(
'ul',
{
class: normalizeClass(_ctx.ns.b('group')),
},
[renderSlot(_ctx.$slots, 'default')],
2
),
]),
],
2
)),
[[vShow, _ctx.visible]]
)
}
var OptionGroup = /* @__PURE__ */ _export_sfc$1(_sfc_main$7S, [
['render', _sfc_render$N],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/select/src/option-group.vue',
],
])
const ElSelect = withInstall(Select$3, {
Option: Option$1,
OptionGroup,
})
const ElOption$1 = withNoopInstall(Option$1)
const ElOptionGroup = withNoopInstall(OptionGroup)
const usePagination = () => inject(elPaginationKey, {})
const paginationSizesProps = buildProps({
pageSize: {
type: Number,
required: true,
},
pageSizes: {
type: definePropType(Array),
default: () => mutable([10, 20, 30, 40, 50, 100]),
},
popperClass: {
type: String,
default: '',
},
disabled: Boolean,
size: {
type: String,
default: 'default',
},
})
const _sfc_main$7R = defineComponent({
name: 'ElPaginationSizes',
components: {
ElSelect,
ElOption: ElOption$1,
},
props: paginationSizesProps,
emits: ['page-size-change'],
setup(props2, { emit: emit2 }) {
const { t: t3 } = useLocale()
const ns = useNamespace('pagination')
const pagination = usePagination()
const innerPageSize = ref(props2.pageSize)
watch$1(
() => props2.pageSizes,
(newVal, oldVal) => {
if (isEqual$4(newVal, oldVal)) return
if (Array.isArray(newVal)) {
const pageSize = newVal.includes(props2.pageSize)
? props2.pageSize
: props2.pageSizes[0]
emit2('page-size-change', pageSize)
}
}
)
watch$1(
() => props2.pageSize,
(newVal) => {
innerPageSize.value = newVal
}
)
const innerPagesizes = computed(() => props2.pageSizes)
function handleChange(val2) {
var _a2
if (val2 !== innerPageSize.value) {
innerPageSize.value = val2
;(_a2 = pagination.handleSizeChange) == null
? void 0
: _a2.call(pagination, Number(val2))
}
}
return {
ns,
innerPagesizes,
innerPageSize,
t: t3,
handleChange,
}
},
})
function _sfc_render$M(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
return (
openBlock(),
createElementBlock(
'span',
{
class: normalizeClass(_ctx.ns.e('sizes')),
},
[
createVNode$1(
_component_el_select,
{
'model-value': _ctx.innerPageSize,
disabled: _ctx.disabled,
'popper-class': _ctx.popperClass,
size: _ctx.size,
onChange: _ctx.handleChange,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.innerPagesizes, (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2,
value: item2,
label: item2 + _ctx.t('el.pagination.pagesize'),
},
null,
8,
['value', 'label']
)
)
}),
128
)),
]),
_: 1,
},
8,
['model-value', 'disabled', 'popper-class', 'size', 'onChange']
),
],
2
)
)
}
var Sizes = /* @__PURE__ */ _export_sfc$1(_sfc_main$7R, [
['render', _sfc_render$M],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/pagination/src/components/sizes.vue',
],
])
const _sfc_main$7Q = defineComponent({
name: 'ElPaginationJumper',
components: {
ElInput,
},
setup() {
const { t: t3 } = useLocale()
const ns = useNamespace('pagination')
const {
pageCount,
disabled,
currentPage: currentPage2,
changeEvent,
} = usePagination()
const userInput = ref()
const innerValue = computed(() => {
var _a2
return (_a2 = userInput.value) != null
? _a2
: currentPage2 == null
? void 0
: currentPage2.value
})
function handleInput(val2) {
userInput.value = +val2
}
function handleChange(val2) {
val2 = Math.trunc(+val2)
changeEvent == null ? void 0 : changeEvent(+val2)
userInput.value = void 0
}
return {
ns,
pageCount,
disabled,
innerValue,
t: t3,
handleInput,
handleChange,
}
},
})
const _hoisted_1$6l = ['disabled']
function _sfc_render$L(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_input = resolveComponent('el-input')
return (
openBlock(),
createElementBlock(
'span',
{
class: normalizeClass(_ctx.ns.e('jump')),
disabled: _ctx.disabled,
},
[
createTextVNode(
toDisplayString$1(_ctx.t('el.pagination.goto')) + ' ',
1
),
createVNode$1(
_component_el_input,
{
size: 'small',
class: normalizeClass([
_ctx.ns.e('editor'),
_ctx.ns.is('in-pagination'),
]),
min: 1,
max: _ctx.pageCount,
disabled: _ctx.disabled,
'model-value': _ctx.innerValue,
type: 'number',
'onUpdate:modelValue': _ctx.handleInput,
onChange: _ctx.handleChange,
},
null,
8,
[
'class',
'max',
'disabled',
'model-value',
'onUpdate:modelValue',
'onChange',
]
),
createTextVNode(
' ' + toDisplayString$1(_ctx.t('el.pagination.pageClassifier')),
1
),
],
10,
_hoisted_1$6l
)
)
}
var Jumper = /* @__PURE__ */ _export_sfc$1(_sfc_main$7Q, [
['render', _sfc_render$L],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/pagination/src/components/jumper.vue',
],
])
const paginationTotalProps = {
total: {
type: Number,
default: 1e3,
},
}
const _sfc_main$7P = defineComponent({
name: 'ElPaginationTotal',
props: paginationTotalProps,
setup() {
const { t: t3 } = useLocale()
const ns = useNamespace('pagination')
const { disabled } = usePagination()
return {
t: t3,
ns,
disabled,
}
},
})
const _hoisted_1$6k = ['disabled']
function _sfc_render$K(_ctx, _cache, $props2, $setup, $data, $options) {
return (
openBlock(),
createElementBlock(
'span',
{
class: normalizeClass(_ctx.ns.e('total')),
disabled: _ctx.disabled,
},
toDisplayString$1(
_ctx.t('el.pagination.total', {
total: _ctx.total,
})
),
11,
_hoisted_1$6k
)
)
}
var Total = /* @__PURE__ */ _export_sfc$1(_sfc_main$7P, [
['render', _sfc_render$K],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/pagination/src/components/total.vue',
],
])
const paginationPagerProps = {
currentPage: {
type: Number,
default: 1,
},
pageCount: {
type: Number,
required: true,
},
pagerCount: {
type: Number,
default: 7,
},
disabled: Boolean,
}
const _sfc_main$7O = defineComponent({
name: 'ElPaginationPager',
components: {
DArrowLeft: dArrowLeft,
DArrowRight: dArrowRight,
MoreFilled: moreFilled,
},
props: paginationPagerProps,
emits: ['change'],
setup(props2, { emit: emit2 }) {
const nsPager = useNamespace('pager')
const nsIcon = useNamespace('icon')
const showPrevMore = ref(false)
const showNextMore = ref(false)
const quickPrevHover = ref(false)
const quickNextHover = ref(false)
const pagers = computed(() => {
const pagerCount = props2.pagerCount
const halfPagerCount = (pagerCount - 1) / 2
const currentPage2 = Number(props2.currentPage)
const pageCount = Number(props2.pageCount)
let showPrevMore2 = false
let showNextMore2 = false
if (pageCount > pagerCount) {
if (currentPage2 > pagerCount - halfPagerCount) {
showPrevMore2 = true
}
if (currentPage2 < pageCount - halfPagerCount) {
showNextMore2 = true
}
}
const array4 = []
if (showPrevMore2 && !showNextMore2) {
const startPage = pageCount - (pagerCount - 2)
for (let i2 = startPage; i2 < pageCount; i2++) {
array4.push(i2)
}
} else if (!showPrevMore2 && showNextMore2) {
for (let i2 = 2; i2 < pagerCount; i2++) {
array4.push(i2)
}
} else if (showPrevMore2 && showNextMore2) {
const offset2 = Math.floor(pagerCount / 2) - 1
for (
let i2 = currentPage2 - offset2;
i2 <= currentPage2 + offset2;
i2++
) {
array4.push(i2)
}
} else {
for (let i2 = 2; i2 < pageCount; i2++) {
array4.push(i2)
}
}
return array4
})
watchEffect(() => {
const halfPagerCount = (props2.pagerCount - 1) / 2
showPrevMore.value = false
showNextMore.value = false
if (props2.pageCount > props2.pagerCount) {
if (props2.currentPage > props2.pagerCount - halfPagerCount) {
showPrevMore.value = true
}
if (props2.currentPage < props2.pageCount - halfPagerCount) {
showNextMore.value = true
}
}
})
function onMouseenter(direction2) {
if (props2.disabled) return
if (direction2 === 'left') {
quickPrevHover.value = true
} else {
quickNextHover.value = true
}
}
function onEnter(e2) {
const target2 = e2.target
if (
target2.tagName.toLowerCase() === 'li' &&
Array.from(target2.classList).includes('number')
) {
const newPage = Number(target2.textContent)
if (newPage !== props2.currentPage) {
emit2('change', newPage)
}
}
}
function onPagerClick(event) {
const target2 = event.target
if (target2.tagName.toLowerCase() === 'ul' || props2.disabled) {
return
}
let newPage = Number(target2.textContent)
const pageCount = props2.pageCount
const currentPage2 = props2.currentPage
const pagerCountOffset = props2.pagerCount - 2
if (target2.className.includes('more')) {
if (target2.className.includes('quickprev')) {
newPage = currentPage2 - pagerCountOffset
} else if (target2.className.includes('quicknext')) {
newPage = currentPage2 + pagerCountOffset
}
}
if (!Number.isNaN(+newPage)) {
if (newPage < 1) {
newPage = 1
}
if (newPage > pageCount) {
newPage = pageCount
}
}
if (newPage !== currentPage2) {
emit2('change', newPage)
}
}
return {
showPrevMore,
showNextMore,
quickPrevHover,
quickNextHover,
pagers,
nsPager,
nsIcon,
onMouseenter,
onPagerClick,
onEnter,
}
},
})
const _hoisted_1$6j = ['aria-current']
const _hoisted_2$5a = ['aria-current']
const _hoisted_3$4C = ['aria-current']
function _sfc_render$J(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_d_arrow_left = resolveComponent('d-arrow-left')
const _component_more_filled = resolveComponent('more-filled')
const _component_d_arrow_right = resolveComponent('d-arrow-right')
return (
openBlock(),
createElementBlock(
'ul',
{
class: normalizeClass(_ctx.nsPager.b()),
onClick:
_cache[4] ||
(_cache[4] = (...args) =>
_ctx.onPagerClick && _ctx.onPagerClick(...args)),
onKeyup:
_cache[5] ||
(_cache[5] = withKeys(
(...args) => _ctx.onEnter && _ctx.onEnter(...args),
['enter']
)),
},
[
_ctx.pageCount > 0
? (openBlock(),
createElementBlock(
'li',
{
key: 0,
class: normalizeClass([
[
_ctx.nsPager.is('active', _ctx.currentPage === 1),
_ctx.nsPager.is('disabled', _ctx.disabled),
],
'number',
]),
'aria-current': _ctx.currentPage === 1,
tabindex: '0',
},
' 1 ',
10,
_hoisted_1$6j
))
: createCommentVNode('v-if', true),
_ctx.showPrevMore
? (openBlock(),
createElementBlock(
'li',
{
key: 1,
class: normalizeClass([
'more',
'btn-quickprev',
_ctx.nsIcon.b(),
_ctx.nsPager.is('disabled', _ctx.disabled),
]),
onMouseenter:
_cache[0] ||
(_cache[0] = ($event) => _ctx.onMouseenter('left')),
onMouseleave:
_cache[1] ||
(_cache[1] = ($event) => (_ctx.quickPrevHover = false)),
},
[
_ctx.quickPrevHover
? (openBlock(),
createBlock(_component_d_arrow_left, { key: 0 }))
: (openBlock(),
createBlock(_component_more_filled, { key: 1 })),
],
34
))
: createCommentVNode('v-if', true),
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.pagers, (pager) => {
return (
openBlock(),
createElementBlock(
'li',
{
key: pager,
class: normalizeClass([
[
_ctx.nsPager.is('active', _ctx.currentPage === pager),
_ctx.nsPager.is('disabled', _ctx.disabled),
],
'number',
]),
'aria-current': _ctx.currentPage === pager,
tabindex: '0',
},
toDisplayString$1(pager),
11,
_hoisted_2$5a
)
)
}),
128
)),
_ctx.showNextMore
? (openBlock(),
createElementBlock(
'li',
{
key: 2,
class: normalizeClass([
'more',
'btn-quicknext',
_ctx.nsIcon.b(),
_ctx.nsPager.is('disabled', _ctx.disabled),
]),
onMouseenter:
_cache[2] ||
(_cache[2] = ($event) => _ctx.onMouseenter('right')),
onMouseleave:
_cache[3] ||
(_cache[3] = ($event) => (_ctx.quickNextHover = false)),
},
[
_ctx.quickNextHover
? (openBlock(),
createBlock(_component_d_arrow_right, { key: 0 }))
: (openBlock(),
createBlock(_component_more_filled, { key: 1 })),
],
34
))
: createCommentVNode('v-if', true),
_ctx.pageCount > 1
? (openBlock(),
createElementBlock(
'li',
{
key: 3,
class: normalizeClass([
[
_ctx.nsPager.is(
'active',
_ctx.currentPage === _ctx.pageCount
),
_ctx.nsPager.is('disabled', _ctx.disabled),
],
'number',
]),
'aria-current': _ctx.currentPage === _ctx.pageCount,
tabindex: '0',
},
toDisplayString$1(_ctx.pageCount),
11,
_hoisted_3$4C
))
: createCommentVNode('v-if', true),
],
34
)
)
}
var Pager = /* @__PURE__ */ _export_sfc$1(_sfc_main$7O, [
['render', _sfc_render$J],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/pagination/src/components/pager.vue',
],
])
const isAbsent = (v4) => typeof v4 !== 'number'
const paginationProps = buildProps({
total: Number,
pageSize: Number,
defaultPageSize: Number,
currentPage: Number,
defaultCurrentPage: Number,
pageCount: Number,
pagerCount: {
type: Number,
validator: (value2) => {
return (
typeof value2 === 'number' &&
Math.trunc(value2) === value2 &&
value2 > 4 &&
value2 < 22 &&
value2 % 2 === 1
)
},
default: 7,
},
layout: {
type: String,
default: ['prev', 'pager', 'next', 'jumper', '->', 'total'].join(', '),
},
pageSizes: {
type: definePropType(Array),
default: () => mutable([10, 20, 30, 40, 50, 100]),
},
popperClass: {
type: String,
default: '',
},
prevText: {
type: String,
default: '',
},
nextText: {
type: String,
default: '',
},
small: Boolean,
background: Boolean,
disabled: Boolean,
hideOnSinglePage: Boolean,
})
const paginationEmits = {
'update:current-page': (val2) => typeof val2 === 'number',
'update:page-size': (val2) => typeof val2 === 'number',
'size-change': (val2) => typeof val2 === 'number',
'current-change': (val2) => typeof val2 === 'number',
'prev-click': (val2) => typeof val2 === 'number',
'next-click': (val2) => typeof val2 === 'number',
}
const componentName = 'ElPagination'
var Pagination = defineComponent({
name: componentName,
props: paginationProps,
emits: paginationEmits,
setup(props2, { emit: emit2, slots }) {
const { t: t3 } = useLocale()
const ns = useNamespace('pagination')
const vnodeProps = getCurrentInstance().vnode.props || {}
const hasCurrentPageListener =
'onUpdate:currentPage' in vnodeProps ||
'onUpdate:current-page' in vnodeProps ||
'onCurrentChange' in vnodeProps
const hasPageSizeListener =
'onUpdate:pageSize' in vnodeProps ||
'onUpdate:page-size' in vnodeProps ||
'onSizeChange' in vnodeProps
const assertValidUsage = computed(() => {
if (isAbsent(props2.total) && isAbsent(props2.pageCount)) return false
if (!isAbsent(props2.currentPage) && !hasCurrentPageListener) return false
if (props2.layout.includes('sizes')) {
if (!isAbsent(props2.pageCount)) {
if (!hasPageSizeListener) return false
} else if (!isAbsent(props2.total)) {
if (!isAbsent(props2.pageSize)) {
if (!hasPageSizeListener) {
return false
}
}
}
}
return true
})
const innerPageSize = ref(
isAbsent(props2.defaultPageSize) ? 10 : props2.defaultPageSize
)
const innerCurrentPage = ref(
isAbsent(props2.defaultCurrentPage) ? 1 : props2.defaultCurrentPage
)
const pageSizeBridge = computed({
get() {
return isAbsent(props2.pageSize) ? innerPageSize.value : props2.pageSize
},
set(v4) {
if (isAbsent(props2.pageSize)) {
innerPageSize.value = v4
}
if (hasPageSizeListener) {
emit2('update:page-size', v4)
emit2('size-change', v4)
}
},
})
const pageCountBridge = computed(() => {
let pageCount = 0
if (!isAbsent(props2.pageCount)) {
pageCount = props2.pageCount
} else if (!isAbsent(props2.total)) {
pageCount = Math.max(1, Math.ceil(props2.total / pageSizeBridge.value))
}
return pageCount
})
const currentPageBridge = computed({
get() {
return isAbsent(props2.currentPage)
? innerCurrentPage.value
: props2.currentPage
},
set(v4) {
let newCurrentPage = v4
if (v4 < 1) {
newCurrentPage = 1
} else if (v4 > pageCountBridge.value) {
newCurrentPage = pageCountBridge.value
}
if (isAbsent(props2.currentPage)) {
innerCurrentPage.value = newCurrentPage
}
if (hasCurrentPageListener) {
emit2('update:current-page', newCurrentPage)
emit2('current-change', newCurrentPage)
}
},
})
watch$1(pageCountBridge, (val2) => {
if (currentPageBridge.value > val2) currentPageBridge.value = val2
})
function handleCurrentChange(val2) {
currentPageBridge.value = val2
}
function handleSizeChange(val2) {
pageSizeBridge.value = val2
const newPageCount = pageCountBridge.value
if (currentPageBridge.value > newPageCount) {
currentPageBridge.value = newPageCount
}
}
function prev() {
if (props2.disabled) return
currentPageBridge.value -= 1
emit2('prev-click', currentPageBridge.value)
}
function next() {
if (props2.disabled) return
currentPageBridge.value += 1
emit2('next-click', currentPageBridge.value)
}
function addClass2(element, cls) {
if (element) {
if (!element.props) {
element.props = {}
}
element.props.class = [element.props.class, cls].join(' ')
}
}
provide(elPaginationKey, {
pageCount: pageCountBridge,
disabled: computed(() => props2.disabled),
currentPage: currentPageBridge,
changeEvent: handleCurrentChange,
handleSizeChange,
})
return () => {
var _a2, _b2
if (!assertValidUsage.value) {
debugWarn(componentName, t3('el.pagination.deprecationWarning'))
return null
}
if (!props2.layout) return null
if (props2.hideOnSinglePage && pageCountBridge.value <= 1) return null
const rootChildren = []
const rightWrapperChildren = []
const rightWrapperRoot = h$4(
'div',
{ class: ns.e('rightwrapper') },
rightWrapperChildren
)
const TEMPLATE_MAP = {
prev: h$4(Prev, {
disabled: props2.disabled,
currentPage: currentPageBridge.value,
prevText: props2.prevText,
onClick: prev,
}),
jumper: h$4(Jumper),
pager: h$4(Pager, {
currentPage: currentPageBridge.value,
pageCount: pageCountBridge.value,
pagerCount: props2.pagerCount,
onChange: handleCurrentChange,
disabled: props2.disabled,
}),
next: h$4(Next, {
disabled: props2.disabled,
currentPage: currentPageBridge.value,
pageCount: pageCountBridge.value,
nextText: props2.nextText,
onClick: next,
}),
sizes: h$4(Sizes, {
pageSize: pageSizeBridge.value,
pageSizes: props2.pageSizes,
popperClass: props2.popperClass,
disabled: props2.disabled,
size: props2.small ? 'small' : 'default',
}),
slot:
(_b2 =
(_a2 = slots == null ? void 0 : slots.default) == null
? void 0
: _a2.call(slots)) != null
? _b2
: null,
total: h$4(Total, { total: isAbsent(props2.total) ? 0 : props2.total }),
}
const components = props2.layout.split(',').map((item2) => item2.trim())
let haveRightWrapper = false
components.forEach((c2) => {
if (c2 === '->') {
haveRightWrapper = true
return
}
if (!haveRightWrapper) {
rootChildren.push(TEMPLATE_MAP[c2])
} else {
rightWrapperChildren.push(TEMPLATE_MAP[c2])
}
})
addClass2(rootChildren[0], ns.is('first'))
addClass2(rootChildren[rootChildren.length - 1], ns.is('last'))
if (haveRightWrapper && rightWrapperChildren.length > 0) {
addClass2(rightWrapperChildren[0], ns.is('first'))
addClass2(
rightWrapperChildren[rightWrapperChildren.length - 1],
ns.is('last')
)
rootChildren.push(rightWrapperRoot)
}
return h$4(
'div',
{
role: 'pagination',
'aria-label': 'pagination',
class: [
ns.b(),
ns.is('background', props2.background),
{
[ns.m('small')]: props2.small,
},
],
},
rootChildren
)
}
},
})
const ElPagination = withInstall(Pagination)
const popconfirmProps = buildProps({
title: {
type: String,
},
confirmButtonText: {
type: String,
},
cancelButtonText: {
type: String,
},
confirmButtonType: {
type: String,
values: buttonTypes,
default: 'primary',
},
cancelButtonType: {
type: String,
values: buttonTypes,
default: 'text',
},
icon: {
type: iconPropType,
default: questionFilled,
},
iconColor: {
type: String,
default: '#f90',
},
hideIcon: {
type: Boolean,
default: false,
},
hideAfter: {
type: Number,
default: 200,
},
onConfirm: {
type: definePropType(Function),
},
onCancel: {
type: definePropType(Function),
},
teleported: useTooltipContentProps.teleported,
persistent: useTooltipContentProps.persistent,
})
const COMPONENT_NAME$5 = 'ElPopconfirm'
const _sfc_main$7N = defineComponent({
name: COMPONENT_NAME$5,
components: {
ElButton,
ElTooltip,
ElIcon,
},
props: popconfirmProps,
setup(props2) {
const { compatTeleported } = useDeprecateAppendToBody(
COMPONENT_NAME$5,
'appendToBody'
)
const { t: t3 } = useLocale()
const ns = useNamespace('popconfirm')
const tooltipRef = ref()
const hidePopper = () => {
var _a2, _b2
;(_b2 = (_a2 = unref(tooltipRef)) == null ? void 0 : _a2.onClose) == null
? void 0
: _b2.call(_a2)
}
const handleCallback = () => {
hidePopper()
}
const confirm2 = (e2) => {
var _a2
;(_a2 = props2.onConfirm) == null ? void 0 : _a2.call(props2, e2)
handleCallback()
}
const cancel2 = (e2) => {
var _a2
;(_a2 = props2.onCancel) == null ? void 0 : _a2.call(props2, e2)
handleCallback()
}
const finalConfirmButtonText = computed(
() => props2.confirmButtonText || t3('el.popconfirm.confirmButtonText')
)
const finalCancelButtonText = computed(
() => props2.cancelButtonText || t3('el.popconfirm.cancelButtonText')
)
return {
finalConfirmButtonText,
finalCancelButtonText,
tooltipRef,
ns,
compatTeleported,
confirm: confirm2,
cancel: cancel2,
}
},
})
function _sfc_render$I(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_icon = resolveComponent('el-icon')
const _component_el_button = resolveComponent('el-button')
const _component_el_tooltip = resolveComponent('el-tooltip')
return (
openBlock(),
createBlock(
_component_el_tooltip,
mergeProps({ ref: 'tooltipRef' }, _ctx.$attrs, {
trigger: 'click',
effect: 'light',
'popper-class': `${_ctx.ns.namespace.value}-popover`,
teleported: _ctx.compatTeleported,
'fallback-placements': ['bottom', 'top', 'right', 'left'],
'hide-after': _ctx.hideAfter,
persistent: _ctx.persistent,
}),
{
content: withCtx(() => [
createElementVNode(
'div',
{
class: normalizeClass(_ctx.ns.b()),
},
[
createElementVNode(
'div',
{
class: normalizeClass(_ctx.ns.e('main')),
},
[
!_ctx.hideIcon && _ctx.icon
? (openBlock(),
createBlock(
_component_el_icon,
{
key: 0,
class: normalizeClass(_ctx.ns.e('icon')),
style: normalizeStyle$1({ color: _ctx.iconColor }),
},
{
default: withCtx(() => [
(openBlock(),
createBlock(resolveDynamicComponent(_ctx.icon))),
]),
_: 1,
},
8,
['class', 'style']
))
: createCommentVNode('v-if', true),
createTextVNode(' ' + toDisplayString$1(_ctx.title), 1),
],
2
),
createElementVNode(
'div',
{
class: normalizeClass(_ctx.ns.e('action')),
},
[
createVNode$1(
_component_el_button,
{
size: 'small',
type: _ctx.cancelButtonType,
onClick: _ctx.cancel,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx.finalCancelButtonText),
1
),
]),
_: 1,
},
8,
['type', 'onClick']
),
createVNode$1(
_component_el_button,
{
size: 'small',
type: _ctx.confirmButtonType,
onClick: _ctx.confirm,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx.finalConfirmButtonText),
1
),
]),
_: 1,
},
8,
['type', 'onClick']
),
],
2
),
],
2
),
]),
default: withCtx(() => [
_ctx.$slots.reference
? renderSlot(_ctx.$slots, 'reference', { key: 0 })
: createCommentVNode('v-if', true),
]),
_: 3,
},
16,
['popper-class', 'teleported', 'hide-after', 'persistent']
)
)
}
var Popconfirm = /* @__PURE__ */ _export_sfc$1(_sfc_main$7N, [
['render', _sfc_render$I],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/popconfirm/src/popconfirm.vue',
],
])
const ElPopconfirm = withInstall(Popconfirm)
const usePopoverProps = buildProps({
trigger: useTooltipTriggerProps.trigger,
placement: dropdownProps.placement,
disabled: useTooltipTriggerProps.disabled,
visible: useTooltipContentProps.visible,
transition: useTooltipContentProps.transition,
popperOptions: dropdownProps.popperOptions,
tabindex: dropdownProps.tabindex,
appendToBody: { type: Boolean, default: void 0 },
content: useTooltipContentProps.content,
popperStyle: useTooltipContentProps.popperStyle,
popperClass: useTooltipContentProps.popperClass,
enterable: {
...useTooltipContentProps.enterable,
default: true,
},
effect: {
...useTooltipContentProps.effect,
default: 'light',
},
teleported: useTooltipContentProps.teleported,
title: String,
width: {
type: [String, Number],
default: 150,
},
offset: {
type: Number,
default: void 0,
},
showAfter: {
type: Number,
default: 0,
},
hideAfter: {
type: Number,
default: 200,
},
autoClose: {
type: Number,
default: 0,
},
showArrow: {
type: Boolean,
default: true,
},
persistent: {
type: Boolean,
default: true,
},
})
const emits = [
'update:visible',
'before-enter',
'before-leave',
'after-enter',
'after-leave',
]
const COMPONENT_NAME$4 = 'ElPopover'
const _sfc_main$7M = defineComponent({
name: COMPONENT_NAME$4,
components: {
ElTooltip,
},
props: usePopoverProps,
emits,
setup(props2, { emit: emit2 }) {
const ns = useNamespace('popover')
const tooltipRef = ref(null)
const popperRef = computed(() => {
var _a2
return (_a2 = unref(tooltipRef)) == null ? void 0 : _a2.popperRef
})
const width = computed(() => {
if (isString$f(props2.width)) {
return props2.width
}
return `${props2.width}px`
})
const style2 = computed(() => {
return [
{
width: width.value,
},
props2.popperStyle,
]
})
const kls = computed(() => {
return [ns.b(), props2.popperClass, { [ns.m('plain')]: !!props2.content }]
})
const gpuAcceleration = computed(() => {
return props2.transition === 'el-fade-in-linear'
})
const { compatTeleported } = useDeprecateAppendToBody(
COMPONENT_NAME$4,
'appendToBody'
)
const hide2 = () => {
var _a2
;(_a2 = tooltipRef.value) == null ? void 0 : _a2.hide()
}
const beforeEnter = () => {
emit2('before-enter')
}
const beforeLeave = () => {
emit2('before-leave')
}
const afterEnter = () => {
emit2('after-enter')
}
const afterLeave = () => {
emit2('after-leave')
}
return {
compatTeleported,
ns,
kls,
gpuAcceleration,
style: style2,
tooltipRef,
popperRef,
hide: hide2,
beforeEnter,
beforeLeave,
afterEnter,
afterLeave,
}
},
})
function _sfc_render$H(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_tooltip = resolveComponent('el-tooltip')
return (
openBlock(),
createBlock(
_component_el_tooltip,
mergeProps({ ref: 'tooltipRef' }, _ctx.$attrs, {
trigger: _ctx.trigger,
placement: _ctx.placement,
disabled: _ctx.disabled,
visible: _ctx.visible,
transition: _ctx.transition,
'popper-options': _ctx.popperOptions,
tabindex: _ctx.tabindex,
'append-to-body': _ctx.appendToBody,
content: _ctx.content,
offset: _ctx.offset,
'show-after': _ctx.showAfter,
'hide-after': _ctx.hideAfter,
'auto-close': _ctx.autoClose,
'show-arrow': _ctx.showArrow,
'aria-label': _ctx.title,
effect: _ctx.effect,
enterable: _ctx.enterable,
'popper-class': _ctx.kls,
'popper-style': _ctx.style,
teleported: _ctx.compatTeleported,
persistent: _ctx.persistent,
'gpu-acceleration': _ctx.gpuAcceleration,
onBeforeShow: _ctx.beforeEnter,
onBeforeHide: _ctx.beforeLeave,
onShow: _ctx.afterEnter,
onHide: _ctx.afterLeave,
}),
{
content: withCtx(() => [
_ctx.title
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass(_ctx.ns.e('title')),
role: 'title',
},
toDisplayString$1(_ctx.title),
3
))
: createCommentVNode('v-if', true),
renderSlot(_ctx.$slots, 'default', {}, () => [
createTextVNode(toDisplayString$1(_ctx.content), 1),
]),
]),
default: withCtx(() => [
_ctx.$slots.reference
? renderSlot(_ctx.$slots, 'reference', { key: 0 })
: createCommentVNode('v-if', true),
]),
_: 3,
},
16,
[
'trigger',
'placement',
'disabled',
'visible',
'transition',
'popper-options',
'tabindex',
'append-to-body',
'content',
'offset',
'show-after',
'hide-after',
'auto-close',
'show-arrow',
'aria-label',
'effect',
'enterable',
'popper-class',
'popper-style',
'teleported',
'persistent',
'gpu-acceleration',
'onBeforeShow',
'onBeforeHide',
'onShow',
'onHide',
]
)
)
}
var Popover$2 = /* @__PURE__ */ _export_sfc$1(_sfc_main$7M, [
['render', _sfc_render$H],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/popover/src/index.vue',
],
])
const attachEvents = (el2, binding) => {
const popperComponent = binding.arg || binding.value
const popover = popperComponent == null ? void 0 : popperComponent.popperRef
if (popover) {
popover.triggerRef = el2
}
}
var PopoverDirective = {
mounted(el2, binding) {
attachEvents(el2, binding)
},
updated(el2, binding) {
attachEvents(el2, binding)
},
}
const VPopover = 'popover'
Popover$2.install = (app2) => {
app2.component(Popover$2.name, Popover$2)
}
PopoverDirective.install = (app2) => {
app2.directive(VPopover, PopoverDirective)
}
const _PopoverDirective = PopoverDirective
Popover$2.directive = _PopoverDirective
const _Popover = Popover$2
const ElPopover = _Popover
const ElPopoverDirective = _PopoverDirective
const progressProps = buildProps({
type: {
type: String,
default: 'line',
values: ['line', 'circle', 'dashboard'],
},
percentage: {
type: Number,
default: 0,
validator: (val2) => val2 >= 0 && val2 <= 100,
},
status: {
type: String,
default: '',
values: ['', 'success', 'exception', 'warning'],
},
indeterminate: {
type: Boolean,
default: false,
},
duration: {
type: Number,
default: 3,
},
strokeWidth: {
type: Number,
default: 6,
},
strokeLinecap: {
type: definePropType(String),
default: 'round',
},
textInside: {
type: Boolean,
default: false,
},
width: {
type: Number,
default: 126,
},
showText: {
type: Boolean,
default: true,
},
color: {
type: definePropType([String, Array, Function]),
default: '',
},
format: {
type: definePropType(Function),
default: (percentage) => `${percentage}%`,
},
})
const _sfc_main$7L = defineComponent({
name: 'ElProgress',
components: {
ElIcon,
CircleCheck: circleCheck,
CircleClose: circleClose,
Check: check$1,
Close: close$2,
WarningFilled: warningFilled,
},
props: progressProps,
setup(props2) {
const ns = useNamespace('progress')
const barStyle = computed(() => ({
width: `${props2.percentage}%`,
animationDuration: `${props2.duration}s`,
backgroundColor: getCurrentColor(props2.percentage),
}))
const relativeStrokeWidth = computed(() =>
((props2.strokeWidth / props2.width) * 100).toFixed(1)
)
const radius = computed(() => {
if (props2.type === 'circle' || props2.type === 'dashboard') {
return Number.parseInt(
`${50 - Number.parseFloat(relativeStrokeWidth.value) / 2}`,
10
)
} else {
return 0
}
})
const trackPath = computed(() => {
const r2 = radius.value
const isDashboard = props2.type === 'dashboard'
return `
M 50 50
m 0 ${isDashboard ? '' : '-'}${r2}
a ${r2} ${r2} 0 1 1 0 ${isDashboard ? '-' : ''}${r2 * 2}
a ${r2} ${r2} 0 1 1 0 ${isDashboard ? '' : '-'}${r2 * 2}
`
})
const perimeter = computed(() => 2 * Math.PI * radius.value)
const rate = computed(() => (props2.type === 'dashboard' ? 0.75 : 1))
const strokeDashoffset = computed(() => {
const offset2 = (-1 * perimeter.value * (1 - rate.value)) / 2
return `${offset2}px`
})
const trailPathStyle = computed(() => ({
strokeDasharray: `${perimeter.value * rate.value}px, ${
perimeter.value
}px`,
strokeDashoffset: strokeDashoffset.value,
}))
const circlePathStyle = computed(() => ({
strokeDasharray: `${
perimeter.value * rate.value * (props2.percentage / 100)
}px, ${perimeter.value}px`,
strokeDashoffset: strokeDashoffset.value,
transition: 'stroke-dasharray 0.6s ease 0s, stroke 0.6s ease',
}))
const stroke = computed(() => {
let ret
if (props2.color) {
ret = getCurrentColor(props2.percentage)
} else {
switch (props2.status) {
case 'success':
ret = '#13ce66'
break
case 'exception':
ret = '#ff4949'
break
case 'warning':
ret = '#e6a23c'
break
default:
ret = '#20a0ff'
}
}
return ret
})
const statusIcon = computed(() => {
if (props2.status === 'warning') {
return warningFilled
}
if (props2.type === 'line') {
return props2.status === 'success' ? circleCheck : circleClose
} else {
return props2.status === 'success' ? check$1 : close$2
}
})
const progressTextSize = computed(() => {
return props2.type === 'line'
? 12 + props2.strokeWidth * 0.4
: props2.width * 0.111111 + 2
})
const content2 = computed(() => props2.format(props2.percentage))
const getCurrentColor = (percentage) => {
var _a2
const { color: color2 } = props2
if (typeof color2 === 'function') {
return color2(percentage)
} else if (typeof color2 === 'string') {
return color2
} else {
const span = 100 / color2.length
const seriesColors = color2.map((seriesColor, index2) => {
if (typeof seriesColor === 'string') {
return {
color: seriesColor,
percentage: (index2 + 1) * span,
}
}
return seriesColor
})
const colors = seriesColors.sort(
(a2, b2) => a2.percentage - b2.percentage
)
for (const color22 of colors) {
if (color22.percentage > percentage) return color22.color
}
return (_a2 = colors[colors.length - 1]) == null ? void 0 : _a2.color
}
}
const slotData = computed(() => {
return {
percentage: props2.percentage,
}
})
return {
ns,
barStyle,
relativeStrokeWidth,
radius,
trackPath,
perimeter,
rate,
strokeDashoffset,
trailPathStyle,
circlePathStyle,
stroke,
statusIcon,
progressTextSize,
content: content2,
slotData,
}
},
})
const _hoisted_1$6i = ['aria-valuenow']
const _hoisted_2$59 = { viewBox: '0 0 100 100' }
const _hoisted_3$4B = ['d', 'stroke-width']
const _hoisted_4$3$ = ['d', 'stroke', 'stroke-linecap', 'stroke-width']
const _hoisted_5$3B = { key: 0 }
function _sfc_render$G(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_icon = resolveComponent('el-icon')
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
_ctx.ns.b(),
_ctx.ns.m(_ctx.type),
_ctx.ns.is(_ctx.status),
{
[_ctx.ns.m('without-text')]: !_ctx.showText,
[_ctx.ns.m('text-inside')]: _ctx.textInside,
},
]),
role: 'progressbar',
'aria-valuenow': _ctx.percentage,
'aria-valuemin': '0',
'aria-valuemax': '100',
},
[
_ctx.type === 'line'
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass(_ctx.ns.b('bar')),
},
[
createElementVNode(
'div',
{
class: normalizeClass(_ctx.ns.be('bar', 'outer')),
style: normalizeStyle$1({
height: `${_ctx.strokeWidth}px`,
}),
},
[
createElementVNode(
'div',
{
class: normalizeClass([
_ctx.ns.be('bar', 'inner'),
{
[_ctx.ns.bem('bar', 'inner', 'indeterminate')]:
_ctx.indeterminate,
},
]),
style: normalizeStyle$1(_ctx.barStyle),
},
[
(_ctx.showText || _ctx.$slots.default) &&
_ctx.textInside
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass(
_ctx.ns.be('bar', 'innerText')
),
},
[
renderSlot(
_ctx.$slots,
'default',
normalizeProps(
guardReactiveProps(_ctx.slotData)
),
() => [
createElementVNode(
'span',
null,
toDisplayString$1(_ctx.content),
1
),
]
),
],
2
))
: createCommentVNode('v-if', true),
],
6
),
],
6
),
],
2
))
: (openBlock(),
createElementBlock(
'div',
{
key: 1,
class: normalizeClass(_ctx.ns.b('circle')),
style: normalizeStyle$1({
height: `${_ctx.width}px`,
width: `${_ctx.width}px`,
}),
},
[
(openBlock(),
createElementBlock('svg', _hoisted_2$59, [
createElementVNode(
'path',
{
class: normalizeClass(_ctx.ns.be('circle', 'track')),
d: _ctx.trackPath,
stroke: '#e5e9f2',
'stroke-width': _ctx.relativeStrokeWidth,
fill: 'none',
style: normalizeStyle$1(_ctx.trailPathStyle),
},
null,
14,
_hoisted_3$4B
),
createElementVNode(
'path',
{
class: normalizeClass(_ctx.ns.be('circle', 'path')),
d: _ctx.trackPath,
stroke: _ctx.stroke,
fill: 'none',
'stroke-linecap': _ctx.strokeLinecap,
'stroke-width': _ctx.percentage
? _ctx.relativeStrokeWidth
: 0,
style: normalizeStyle$1(_ctx.circlePathStyle),
},
null,
14,
_hoisted_4$3$
),
])),
],
6
)),
(_ctx.showText || _ctx.$slots.default) && !_ctx.textInside
? (openBlock(),
createElementBlock(
'div',
{
key: 2,
class: normalizeClass(_ctx.ns.e('text')),
style: normalizeStyle$1({
fontSize: `${_ctx.progressTextSize}px`,
}),
},
[
renderSlot(
_ctx.$slots,
'default',
normalizeProps(guardReactiveProps(_ctx.slotData)),
() => [
!_ctx.status
? (openBlock(),
createElementBlock(
'span',
_hoisted_5$3B,
toDisplayString$1(_ctx.content),
1
))
: (openBlock(),
createBlock(
_component_el_icon,
{ key: 1 },
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(_ctx.statusIcon)
)),
]),
_: 1,
}
)),
]
),
],
6
))
: createCommentVNode('v-if', true),
],
10,
_hoisted_1$6i
)
)
}
var Progress$1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$7L, [
['render', _sfc_render$G],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/progress/src/progress.vue',
],
])
const ElProgress = withInstall(Progress$1)
const rateProps = buildProps({
modelValue: {
type: Number,
default: 0,
},
lowThreshold: {
type: Number,
default: 2,
},
highThreshold: {
type: Number,
default: 4,
},
max: {
type: Number,
default: 5,
},
colors: {
type: definePropType([Array, Object]),
default: () => mutable(['', '', '']),
},
voidColor: {
type: String,
default: '',
},
disabledVoidColor: {
type: String,
default: '',
},
icons: {
type: definePropType([Array, Object]),
default: () => [starFilled, starFilled, starFilled],
},
voidIcon: {
type: iconPropType,
default: () => star,
},
disabledVoidIcon: {
type: iconPropType,
default: () => starFilled,
},
disabled: {
type: Boolean,
default: false,
},
allowHalf: {
type: Boolean,
default: false,
},
showText: {
type: Boolean,
default: false,
},
showScore: {
type: Boolean,
default: false,
},
textColor: {
type: String,
default: '',
},
texts: {
type: definePropType(Array),
default: () =>
mutable([
'Extremely bad',
'Disappointed',
'Fair',
'Satisfied',
'Surprise',
]),
},
scoreTemplate: {
type: String,
default: '{value}',
},
size: {
type: String,
validator: isValidComponentSize,
},
})
const rateEmits = {
change: (value2) => typeof value2 === 'number',
[UPDATE_MODEL_EVENT]: (value2) => typeof value2 === 'number',
}
const _hoisted_1$6h = ['aria-valuenow', 'aria-valuetext', 'aria-valuemax']
const _hoisted_2$58 = ['onMousemove', 'onClick']
const __default__$g = {
name: 'ElRate',
}
const _sfc_main$7K = /* @__PURE__ */ defineComponent({
...__default__$g,
props: rateProps,
emits: rateEmits,
setup(__props2, { expose, emit: emit2 }) {
const props2 = __props2
function getValueFromMap(value2, map2) {
const isExcludedObject = (val2) => isObject$v(val2)
const matchedKeys = Object.keys(map2)
.map((key2) => +key2)
.filter((key2) => {
const val2 = map2[key2]
const excluded = isExcludedObject(val2) ? val2.excluded : false
return excluded ? value2 < key2 : value2 <= key2
})
.sort((a2, b2) => a2 - b2)
const matchedValue = map2[matchedKeys[0]]
return (
(isExcludedObject(matchedValue) && matchedValue.value) || matchedValue
)
}
const formContext = inject(formContextKey, void 0)
const rateSize = useSize$1()
const ns = useNamespace('rate')
const currentValue = ref(props2.modelValue)
const hoverIndex = ref(-1)
const pointerAtLeftHalf = ref(true)
const rateClasses = computed(() => [ns.b(), ns.m(rateSize.value)])
const rateDisabled = computed(
() =>
props2.disabled || (formContext == null ? void 0 : formContext.disabled)
)
const rateStyles = computed(() => {
return {
'--el-rate-void-color': props2.voidColor,
'--el-rate-disabled-void-color': props2.disabledVoidColor,
'--el-rate-fill-color': activeColor.value,
}
})
const text2 = computed(() => {
let result = ''
if (props2.showScore) {
result = props2.scoreTemplate.replace(
/\{\s*value\s*\}/,
rateDisabled.value ? `${props2.modelValue}` : `${currentValue.value}`
)
} else if (props2.showText) {
result = props2.texts[Math.ceil(currentValue.value) - 1]
}
return result
})
const valueDecimal = computed(
() => props2.modelValue * 100 - Math.floor(props2.modelValue) * 100
)
const colorMap = computed(() =>
isArray$D(props2.colors)
? {
[props2.lowThreshold]: props2.colors[0],
[props2.highThreshold]: { value: props2.colors[1], excluded: true },
[props2.max]: props2.colors[2],
}
: props2.colors
)
const activeColor = computed(() => {
const color2 = getValueFromMap(currentValue.value, colorMap.value)
return isObject$v(color2) ? '' : color2
})
const decimalStyle = computed(() => {
let width = ''
if (rateDisabled.value) {
width = `${valueDecimal.value}%`
} else if (props2.allowHalf) {
width = '50%'
}
return {
color: activeColor.value,
width,
}
})
const componentMap = computed(() =>
isArray$D(props2.icons)
? {
[props2.lowThreshold]: props2.icons[0],
[props2.highThreshold]: {
value: props2.icons[1],
excluded: true,
},
[props2.max]: props2.icons[2],
}
: props2.icons
)
const decimalIconComponent = computed(() =>
getValueFromMap(props2.modelValue, componentMap.value)
)
const voidComponent = computed(() =>
rateDisabled.value ? props2.disabledVoidIcon : props2.voidIcon
)
const activeComponent = computed(() =>
getValueFromMap(currentValue.value, componentMap.value)
)
const iconComponents = computed(() => {
const result = Array.from({ length: props2.max })
const threshold = currentValue.value
result.fill(activeComponent.value, 0, threshold)
result.fill(voidComponent.value, threshold, props2.max)
return result
})
function showDecimalIcon(item2) {
const showWhenDisabled =
rateDisabled.value &&
valueDecimal.value > 0 &&
item2 - 1 < props2.modelValue &&
item2 > props2.modelValue
const showWhenAllowHalf =
props2.allowHalf &&
pointerAtLeftHalf.value &&
item2 - 0.5 <= currentValue.value &&
item2 > currentValue.value
return showWhenDisabled || showWhenAllowHalf
}
function selectValue(value2) {
if (rateDisabled.value) {
return
}
if (props2.allowHalf && pointerAtLeftHalf.value) {
emit2(UPDATE_MODEL_EVENT, currentValue.value)
if (props2.modelValue !== currentValue.value) {
emit2('change', currentValue.value)
}
} else {
emit2(UPDATE_MODEL_EVENT, value2)
if (props2.modelValue !== value2) {
emit2('change', value2)
}
}
}
function handleKey(e2) {
if (rateDisabled.value) {
return
}
let _currentValue = currentValue.value
const code2 = e2.code
if (code2 === EVENT_CODE.up || code2 === EVENT_CODE.right) {
if (props2.allowHalf) {
_currentValue += 0.5
} else {
_currentValue += 1
}
e2.stopPropagation()
e2.preventDefault()
} else if (code2 === EVENT_CODE.left || code2 === EVENT_CODE.down) {
if (props2.allowHalf) {
_currentValue -= 0.5
} else {
_currentValue -= 1
}
e2.stopPropagation()
e2.preventDefault()
}
_currentValue = _currentValue < 0 ? 0 : _currentValue
_currentValue = _currentValue > props2.max ? props2.max : _currentValue
emit2(UPDATE_MODEL_EVENT, _currentValue)
emit2('change', _currentValue)
return _currentValue
}
function setCurrentValue(value2, event) {
if (rateDisabled.value) {
return
}
if (props2.allowHalf) {
let target2 = event.target
if (hasClass$1(target2, ns.e('item'))) {
target2 = target2.querySelector(`.${ns.e('icon')}`)
}
if (target2.clientWidth === 0 || hasClass$1(target2, ns.e('decimal'))) {
target2 = target2.parentNode
}
pointerAtLeftHalf.value = event.offsetX * 2 <= target2.clientWidth
currentValue.value = pointerAtLeftHalf.value ? value2 - 0.5 : value2
} else {
currentValue.value = value2
}
hoverIndex.value = value2
}
function resetCurrentValue() {
if (rateDisabled.value) {
return
}
if (props2.allowHalf) {
pointerAtLeftHalf.value =
props2.modelValue !== Math.floor(props2.modelValue)
}
currentValue.value = props2.modelValue
hoverIndex.value = -1
}
watch$1(
() => props2.modelValue,
(val2) => {
currentValue.value = val2
pointerAtLeftHalf.value =
props2.modelValue !== Math.floor(props2.modelValue)
}
)
if (!props2.modelValue) {
emit2(UPDATE_MODEL_EVENT, 0)
}
expose({
setCurrentValue,
resetCurrentValue,
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
unref(rateClasses),
unref(ns).is('disabled', unref(rateDisabled)),
]),
role: 'slider',
'aria-valuenow': currentValue.value,
'aria-valuetext': unref(text2),
'aria-valuemin': '0',
'aria-valuemax': _ctx.max,
tabindex: '0',
style: normalizeStyle$1(unref(rateStyles)),
onKeydown: handleKey,
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.max, (item2, key2) => {
return (
openBlock(),
createElementBlock(
'span',
{
key: key2,
class: normalizeClass(unref(ns).e('item')),
onMousemove: ($event) => setCurrentValue(item2, $event),
onMouseleave: resetCurrentValue,
onClick: ($event) => selectValue(item2),
},
[
createVNode$1(
unref(ElIcon),
{
class: normalizeClass([
unref(ns).e('icon'),
{ hover: hoverIndex.value === item2 },
unref(ns).is('active', item2 <= currentValue.value),
]),
},
{
default: withCtx(() => [
!showDecimalIcon(item2)
? (openBlock(),
createBlock(
resolveDynamicComponent(
unref(iconComponents)[item2 - 1]
),
{ key: 0 }
))
: createCommentVNode('v-if', true),
showDecimalIcon(item2)
? (openBlock(),
createBlock(
unref(ElIcon),
{
key: 1,
style: normalizeStyle$1(
unref(decimalStyle)
),
class: normalizeClass([
unref(ns).e('icon'),
unref(ns).e('decimal'),
]),
},
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(
unref(decimalIconComponent)
)
)),
]),
_: 1,
},
8,
['style', 'class']
))
: createCommentVNode('v-if', true),
]),
_: 2,
},
1032,
['class']
),
],
42,
_hoisted_2$58
)
)
}),
128
)),
_ctx.showText || _ctx.showScore
? (openBlock(),
createElementBlock(
'span',
{
key: 0,
class: normalizeClass(unref(ns).e('text')),
},
toDisplayString$1(unref(text2)),
3
))
: createCommentVNode('v-if', true),
],
46,
_hoisted_1$6h
)
)
}
},
})
var Rate = /* @__PURE__ */ _export_sfc$1(_sfc_main$7K, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/rate/src/rate.vue',
],
])
const ElRate = withInstall(Rate)
const IconMap = {
success: 'icon-success',
warning: 'icon-warning',
error: 'icon-error',
info: 'icon-info',
}
const IconComponentMap = {
[IconMap.success]: circleCheckFilled,
[IconMap.warning]: warningFilled,
[IconMap.error]: circleCloseFilled,
[IconMap.info]: infoFilled,
}
const resultProps = buildProps({
title: {
type: String,
default: '',
},
subTitle: {
type: String,
default: '',
},
icon: {
values: ['success', 'warning', 'info', 'error'],
default: 'info',
},
})
const COMPONENT_NAME$3 = 'ElResult'
const _sfc_main$7J = defineComponent({
name: COMPONENT_NAME$3,
props: resultProps,
setup(props2, { slots }) {
const ns = useNamespace('result')
useDeprecated(
{
scope: COMPONENT_NAME$3,
type: 'Slot',
from: 'subTitle',
replacement: 'sub-title',
version: '2.1.3',
ref: 'https://github.com/element-plus/element-plus/pull/6636/',
},
computed(() => !!slots.subTitle)
)
const resultIcon = computed(() => {
const icon = props2.icon
const iconClass = icon && IconMap[icon] ? IconMap[icon] : 'icon-info'
const iconComponent =
IconComponentMap[iconClass] || IconComponentMap['icon-info']
return {
class: iconClass,
component: iconComponent,
}
})
return {
ns,
resultIcon,
}
},
})
function _sfc_render$F(_ctx, _cache, $props2, $setup, $data, $options) {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass(_ctx.ns.b()),
},
[
createElementVNode(
'div',
{
class: normalizeClass(_ctx.ns.e('icon')),
},
[
renderSlot(_ctx.$slots, 'icon', {}, () => [
_ctx.resultIcon.component
? (openBlock(),
createBlock(
resolveDynamicComponent(_ctx.resultIcon.component),
{
key: 0,
class: normalizeClass(_ctx.resultIcon.class),
},
null,
8,
['class']
))
: createCommentVNode('v-if', true),
]),
],
2
),
_ctx.title || _ctx.$slots.title
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass(_ctx.ns.e('title')),
},
[
renderSlot(_ctx.$slots, 'title', {}, () => [
createElementVNode(
'p',
null,
toDisplayString$1(_ctx.title),
1
),
]),
],
2
))
: createCommentVNode('v-if', true),
_ctx.subTitle || _ctx.$slots['sub-title']
? (openBlock(),
createElementBlock(
'div',
{
key: 1,
class: normalizeClass(_ctx.ns.e('subtitle')),
},
[
renderSlot(_ctx.$slots, 'sub-title', {}, () => [
createElementVNode(
'p',
null,
toDisplayString$1(_ctx.subTitle),
1
),
]),
],
2
))
: createCommentVNode('v-if', true),
_ctx.$slots.extra
? (openBlock(),
createElementBlock(
'div',
{
key: 2,
class: normalizeClass(_ctx.ns.e('extra')),
},
[renderSlot(_ctx.$slots, 'extra')],
2
))
: createCommentVNode('v-if', true),
],
2
)
)
}
var Result$1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$7J, [
['render', _sfc_render$F],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/result/src/result.vue',
],
])
const ElResult = withInstall(Result$1)
const rowProps = buildProps({
tag: {
type: String,
default: 'div',
},
gutter: {
type: Number,
default: 0,
},
justify: {
type: String,
values: [
'start',
'center',
'end',
'space-around',
'space-between',
'space-evenly',
],
default: 'start',
},
align: {
type: String,
values: ['top', 'middle', 'bottom'],
default: 'top',
},
})
const Row = defineComponent({
name: 'ElRow',
props: rowProps,
setup(props2, { slots }) {
const ns = useNamespace('row')
const gutter = computed(() => props2.gutter)
provide(rowContextKey, {
gutter,
})
const style2 = computed(() => {
const styles = {
marginLeft: '',
marginRight: '',
}
if (props2.gutter) {
styles.marginLeft = `-${props2.gutter / 2}px`
styles.marginRight = styles.marginLeft
}
return styles
})
return () =>
createVNode$1(
props2.tag,
{
class: [
ns.b(),
ns.is(`justify-${props2.justify}`, props2.justify !== 'start'),
ns.is(`align-${props2.align}`, props2.align !== 'top'),
],
style: style2.value,
},
{
default: () => {
var _a2
return [(_a2 = slots.default) == null ? void 0 : _a2.call(slots)]
},
}
)
},
})
const ElRow = withInstall(Row)
var safeIsNaN =
Number.isNaN ||
function ponyfill(value2) {
return typeof value2 === 'number' && value2 !== value2
}
function isEqual$3(first2, second) {
if (first2 === second) {
return true
}
if (safeIsNaN(first2) && safeIsNaN(second)) {
return true
}
return false
}
function areInputsEqual(newInputs, lastInputs) {
if (newInputs.length !== lastInputs.length) {
return false
}
for (var i2 = 0; i2 < newInputs.length; i2++) {
if (!isEqual$3(newInputs[i2], lastInputs[i2])) {
return false
}
}
return true
}
function memoizeOne(resultFn, isEqual2) {
if (isEqual2 === void 0) {
isEqual2 = areInputsEqual
}
var cache2 = null
function memoized() {
var newArgs = []
for (var _i = 0; _i < arguments.length; _i++) {
newArgs[_i] = arguments[_i]
}
if (
cache2 &&
cache2.lastThis === this &&
isEqual2(newArgs, cache2.lastArgs)
) {
return cache2.lastResult
}
var lastResult = resultFn.apply(this, newArgs)
cache2 = {
lastResult,
lastArgs: newArgs,
lastThis: this,
}
return lastResult
}
memoized.clear = function clear2() {
cache2 = null
}
return memoized
}
const useCache = () => {
const vm = getCurrentInstance()
const props2 = vm.proxy.$props
return computed(() => {
const _getItemStyleCache = (_2, __, ___) => ({})
return props2.perfMode
? memoize(_getItemStyleCache)
: memoizeOne(_getItemStyleCache)
})
}
const DEFAULT_DYNAMIC_LIST_ITEM_SIZE = 50
const ITEM_RENDER_EVT = 'item-rendered'
const SCROLL_EVT = 'scroll'
const FORWARD = 'forward'
const BACKWARD = 'backward'
const AUTO_ALIGNMENT = 'auto'
const SMART_ALIGNMENT = 'smart'
const START_ALIGNMENT = 'start'
const CENTERED_ALIGNMENT = 'center'
const END_ALIGNMENT = 'end'
const HORIZONTAL$1 = 'horizontal'
const VERTICAL$1 = 'vertical'
const LTR = 'ltr'
const RTL = 'rtl'
const RTL_OFFSET_NAG = 'negative'
const RTL_OFFSET_POS_ASC = 'positive-ascending'
const RTL_OFFSET_POS_DESC = 'positive-descending'
const ScrollbarDirKey = {
[HORIZONTAL$1]: 'left',
[VERTICAL$1]: 'top',
}
const SCROLLBAR_MIN_SIZE = 20
const LayoutKeys = {
[HORIZONTAL$1]: 'deltaX',
[VERTICAL$1]: 'deltaY',
}
const useWheel = (
{ atEndEdge, atStartEdge, layout: layout2 },
onWheelDelta
) => {
let frameHandle
let offset2 = 0
const hasReachedEdge = (offset22) => {
const edgeReached =
(offset22 < 0 && atStartEdge.value) || (offset22 > 0 && atEndEdge.value)
return edgeReached
}
const onWheel = (e2) => {
cAF(frameHandle)
const newOffset = e2[LayoutKeys[layout2.value]]
if (hasReachedEdge(offset2) && hasReachedEdge(offset2 + newOffset)) return
offset2 += newOffset
if (!isFirefox()) {
e2.preventDefault()
}
frameHandle = rAF(() => {
onWheelDelta(offset2)
offset2 = 0
})
}
return {
hasReachedEdge,
onWheel,
}
}
const itemSize = buildProp({
type: definePropType([Number, Function]),
required: true,
})
const estimatedItemSize = buildProp({
type: Number,
})
const cache$2 = buildProp({
type: Number,
default: 2,
})
const direction$1 = buildProp({
type: String,
values: ['ltr', 'rtl'],
default: 'ltr',
})
const initScrollOffset = buildProp({
type: Number,
default: 0,
})
const total = buildProp({
type: Number,
required: true,
})
const layout$4 = buildProp({
type: String,
values: ['horizontal', 'vertical'],
default: VERTICAL$1,
})
const virtualizedProps = buildProps({
className: {
type: String,
default: '',
},
containerElement: {
type: definePropType([String, Object]),
default: 'div',
},
data: {
type: definePropType(Array),
default: () => mutable([]),
},
direction: direction$1,
height: {
type: [String, Number],
required: true,
},
innerElement: {
type: [String, Object],
default: 'div',
},
style: {
type: definePropType([Object, String, Array]),
},
useIsScrolling: {
type: Boolean,
default: false,
},
width: {
type: [Number, String],
required: false,
},
perfMode: {
type: Boolean,
default: true,
},
scrollbarAlwaysOn: {
type: Boolean,
default: false,
},
})
const virtualizedListProps = buildProps({
cache: cache$2,
estimatedItemSize,
layout: layout$4,
initScrollOffset,
total,
itemSize,
...virtualizedProps,
})
const virtualizedGridProps = buildProps({
columnCache: cache$2,
columnWidth: itemSize,
estimatedColumnWidth: estimatedItemSize,
estimatedRowHeight: estimatedItemSize,
initScrollLeft: initScrollOffset,
initScrollTop: initScrollOffset,
rowCache: cache$2,
rowHeight: itemSize,
totalColumn: total,
totalRow: total,
...virtualizedProps,
})
const virtualizedScrollbarProps = buildProps({
layout: layout$4,
total,
ratio: {
type: Number,
required: true,
},
clientSize: {
type: Number,
required: true,
},
scrollFrom: {
type: Number,
required: true,
},
visible: Boolean,
})
const getScrollDir = (prev, cur) => (prev < cur ? FORWARD : BACKWARD)
const isHorizontal = (dir3) =>
dir3 === LTR || dir3 === RTL || dir3 === HORIZONTAL$1
const isRTL = (dir3) => dir3 === RTL
let cachedRTLResult = null
function getRTLOffsetType(recalculate = false) {
if (cachedRTLResult === null || recalculate) {
const outerDiv = document.createElement('div')
const outerStyle = outerDiv.style
outerStyle.width = '50px'
outerStyle.height = '50px'
outerStyle.overflow = 'scroll'
outerStyle.direction = 'rtl'
const innerDiv = document.createElement('div')
const innerStyle = innerDiv.style
innerStyle.width = '100px'
innerStyle.height = '100px'
outerDiv.appendChild(innerDiv)
document.body.appendChild(outerDiv)
if (outerDiv.scrollLeft > 0) {
cachedRTLResult = RTL_OFFSET_POS_DESC
} else {
outerDiv.scrollLeft = 1
if (outerDiv.scrollLeft === 0) {
cachedRTLResult = RTL_OFFSET_NAG
} else {
cachedRTLResult = RTL_OFFSET_POS_ASC
}
}
document.body.removeChild(outerDiv)
return cachedRTLResult
}
return cachedRTLResult
}
function renderThumbStyle({ move, size, bar }, layout2) {
const style2 = {}
const translate2 = `translate${bar.axis}(${move}px)`
style2[bar.size] = size
style2.transform = translate2
style2.msTransform = translate2
style2.webkitTransform = translate2
if (layout2 === 'horizontal') {
style2.height = '100%'
} else {
style2.width = '100%'
}
return style2
}
const ScrollBar = defineComponent({
name: 'ElVirtualScrollBar',
props: virtualizedScrollbarProps,
emits: ['scroll', 'start-move', 'stop-move'],
setup(props2, { emit: emit2 }) {
const GAP = 4
const trackRef = ref()
const thumbRef = ref()
let frameHandle = null
let onselectstartStore = null
const state2 = reactive({
isDragging: false,
traveled: 0,
})
const bar = computed(() => BAR_MAP[props2.layout])
const trackSize = computed(() => props2.clientSize - GAP)
const trackStyle = computed(() => ({
position: 'absolute',
width: HORIZONTAL$1 === props2.layout ? `${trackSize.value}px` : '6px',
height: HORIZONTAL$1 === props2.layout ? '6px' : `${trackSize.value}px`,
[ScrollbarDirKey[props2.layout]]: '2px',
right: '2px',
bottom: '2px',
borderRadius: '4px',
}))
const thumbSize = computed(() => {
const ratio = props2.ratio
const clientSize = props2.clientSize
if (ratio >= 100) {
return Number.POSITIVE_INFINITY
}
if (ratio >= 50) {
return (ratio * clientSize) / 100
}
const SCROLLBAR_MAX_SIZE = clientSize / 3
return Math.floor(
Math.min(
Math.max(ratio * clientSize, SCROLLBAR_MIN_SIZE),
SCROLLBAR_MAX_SIZE
)
)
})
const thumbStyle = computed(() => {
if (!Number.isFinite(thumbSize.value)) {
return {
display: 'none',
}
}
const thumb = `${thumbSize.value}px`
const style2 = renderThumbStyle(
{
bar: bar.value,
size: thumb,
move: state2.traveled,
},
props2.layout
)
return style2
})
const totalSteps = computed(() =>
Math.floor(props2.clientSize - thumbSize.value - GAP)
)
const attachEvents2 = () => {
on$2(window, 'mousemove', onMouseMove)
on$2(window, 'mouseup', onMouseUp)
const thumbEl = unref(thumbRef)
if (!thumbEl) return
onselectstartStore = document.onselectstart
document.onselectstart = () => false
on$2(thumbEl, 'touchmove', onMouseMove)
on$2(thumbEl, 'touchend', onMouseUp)
}
const detachEvents = () => {
off$1(window, 'mousemove', onMouseMove)
off$1(window, 'mouseup', onMouseUp)
document.onselectstart = onselectstartStore
onselectstartStore = null
const thumbEl = unref(thumbRef)
if (!thumbEl) return
off$1(thumbEl, 'touchmove', onMouseMove)
off$1(thumbEl, 'touchend', onMouseUp)
}
const onThumbMouseDown = (e2) => {
e2.stopImmediatePropagation()
if (e2.ctrlKey || [1, 2].includes(e2.button)) {
return
}
state2.isDragging = true
state2[bar.value.axis] =
e2.currentTarget[bar.value.offset] -
(e2[bar.value.client] -
e2.currentTarget.getBoundingClientRect()[bar.value.direction])
emit2('start-move')
attachEvents2()
}
const onMouseUp = () => {
state2.isDragging = false
state2[bar.value.axis] = 0
emit2('stop-move')
detachEvents()
}
const onMouseMove = (e2) => {
const { isDragging: isDragging2 } = state2
if (!isDragging2) return
if (!thumbRef.value || !trackRef.value) return
const prevPage2 = state2[bar.value.axis]
if (!prevPage2) return
cAF(frameHandle)
const offset2 =
(trackRef.value.getBoundingClientRect()[bar.value.direction] -
e2[bar.value.client]) *
-1
const thumbClickPosition = thumbRef.value[bar.value.offset] - prevPage2
const distance2 = offset2 - thumbClickPosition
frameHandle = rAF(() => {
state2.traveled = Math.max(0, Math.min(distance2, totalSteps.value))
emit2('scroll', distance2, totalSteps.value)
})
}
const clickTrackHandler = (e2) => {
const offset2 = Math.abs(
e2.target.getBoundingClientRect()[bar.value.direction] -
e2[bar.value.client]
)
const thumbHalf = thumbRef.value[bar.value.offset] / 2
const distance2 = offset2 - thumbHalf
state2.traveled = Math.max(0, Math.min(distance2, totalSteps.value))
emit2('scroll', distance2, totalSteps.value)
}
const onScrollbarTouchStart = (e2) => e2.preventDefault()
watch$1(
() => props2.scrollFrom,
(v4) => {
if (state2.isDragging) return
state2.traveled = Math.ceil(v4 * totalSteps.value)
}
)
onMounted(() => {
if (!isClient$1) return
on$2(trackRef.value, 'touchstart', onScrollbarTouchStart)
on$2(thumbRef.value, 'touchstart', onThumbMouseDown)
})
onBeforeUnmount(() => {
off$1(trackRef.value, 'touchstart', onScrollbarTouchStart)
detachEvents()
})
return () => {
return h$4(
'div',
{
role: 'presentation',
ref: trackRef,
class: 'el-virtual-scrollbar',
style: trackStyle.value,
onMousedown: withModifiers(clickTrackHandler, ['stop', 'prevent']),
},
h$4(
'div',
{
ref: thumbRef,
class: 'el-scrollbar__thumb',
style: thumbStyle.value,
onMousedown: onThumbMouseDown,
},
[]
)
)
}
},
})
const createList$3 = ({
name: name2,
getOffset: getOffset2,
getItemSize,
getItemOffset,
getEstimatedTotalSize: getEstimatedTotalSize2,
getStartIndexForOffset,
getStopIndexForStartIndex,
initCache,
clearCache,
validateProps,
}) => {
return defineComponent({
name: name2 != null ? name2 : 'ElVirtualList',
props: virtualizedListProps,
emits: [ITEM_RENDER_EVT, SCROLL_EVT],
setup(props2, { emit: emit2, expose }) {
validateProps(props2)
const instance = getCurrentInstance()
const dynamicSizeCache = ref(initCache(props2, instance))
const getItemStyleCache = useCache()
const windowRef = ref()
const innerRef = ref()
const scrollbarRef = ref()
const states = ref({
isScrolling: false,
scrollDir: 'forward',
scrollOffset: isNumber$h(props2.initScrollOffset)
? props2.initScrollOffset
: 0,
updateRequested: false,
isScrollbarDragging: false,
scrollbarAlwaysOn: props2.scrollbarAlwaysOn,
})
const itemsToRender = computed(() => {
const { total: total2, cache: cache2 } = props2
const { isScrolling, scrollDir, scrollOffset } = unref(states)
if (total2 === 0) {
return [0, 0, 0, 0]
}
const startIndex = getStartIndexForOffset(
props2,
scrollOffset,
unref(dynamicSizeCache)
)
const stopIndex = getStopIndexForStartIndex(
props2,
startIndex,
scrollOffset,
unref(dynamicSizeCache)
)
const cacheBackward =
!isScrolling || scrollDir === BACKWARD ? Math.max(1, cache2) : 1
const cacheForward =
!isScrolling || scrollDir === FORWARD ? Math.max(1, cache2) : 1
return [
Math.max(0, startIndex - cacheBackward),
Math.max(0, Math.min(total2 - 1, stopIndex + cacheForward)),
startIndex,
stopIndex,
]
})
const estimatedTotalSize = computed(() =>
getEstimatedTotalSize2(props2, unref(dynamicSizeCache))
)
const _isHorizontal = computed(() => isHorizontal(props2.layout))
const windowStyle = computed(() => [
{
position: 'relative',
[`overflow-${_isHorizontal.value ? 'x' : 'y'}`]: 'scroll',
WebkitOverflowScrolling: 'touch',
willChange: 'transform',
},
{
direction: props2.direction,
height: isNumber$h(props2.height)
? `${props2.height}px`
: props2.height,
width: isNumber$h(props2.width) ? `${props2.width}px` : props2.width,
},
props2.style,
])
const innerStyle = computed(() => {
const size = unref(estimatedTotalSize)
const horizontal = unref(_isHorizontal)
return {
height: horizontal ? '100%' : `${size}px`,
pointerEvents: unref(states).isScrolling ? 'none' : void 0,
width: horizontal ? `${size}px` : '100%',
}
})
const clientSize = computed(() =>
_isHorizontal.value ? props2.width : props2.height
)
const { onWheel } = useWheel(
{
atStartEdge: computed(() => states.value.scrollOffset <= 0),
atEndEdge: computed(
() => states.value.scrollOffset >= estimatedTotalSize.value
),
layout: computed(() => props2.layout),
},
(offset2) => {
var _a2, _b2
;(_b2 = (_a2 = scrollbarRef.value).onMouseUp) == null
? void 0
: _b2.call(_a2)
scrollTo(
Math.min(
states.value.scrollOffset + offset2,
estimatedTotalSize.value - clientSize.value
)
)
}
)
const emitEvents = () => {
const { total: total2 } = props2
if (total2 > 0) {
const [cacheStart, cacheEnd, visibleStart, visibleEnd] =
unref(itemsToRender)
emit2(ITEM_RENDER_EVT, cacheStart, cacheEnd, visibleStart, visibleEnd)
}
const { scrollDir, scrollOffset, updateRequested } = unref(states)
emit2(SCROLL_EVT, scrollDir, scrollOffset, updateRequested)
}
const scrollVertically = (e2) => {
const { clientHeight, scrollHeight, scrollTop } = e2.currentTarget
const _states = unref(states)
if (_states.scrollOffset === scrollTop) {
return
}
const scrollOffset = Math.max(
0,
Math.min(scrollTop, scrollHeight - clientHeight)
)
states.value = {
..._states,
isScrolling: true,
scrollDir: getScrollDir(_states.scrollOffset, scrollOffset),
scrollOffset,
updateRequested: false,
}
nextTick(resetIsScrolling)
}
const scrollHorizontally = (e2) => {
const { clientWidth, scrollLeft, scrollWidth } = e2.currentTarget
const _states = unref(states)
if (_states.scrollOffset === scrollLeft) {
return
}
const { direction: direction2 } = props2
let scrollOffset = scrollLeft
if (direction2 === RTL) {
switch (getRTLOffsetType()) {
case RTL_OFFSET_NAG: {
scrollOffset = -scrollLeft
break
}
case RTL_OFFSET_POS_DESC: {
scrollOffset = scrollWidth - clientWidth - scrollLeft
break
}
}
}
scrollOffset = Math.max(
0,
Math.min(scrollOffset, scrollWidth - clientWidth)
)
states.value = {
..._states,
isScrolling: true,
scrollDir: getScrollDir(_states.scrollOffset, scrollOffset),
scrollOffset,
updateRequested: false,
}
nextTick(resetIsScrolling)
}
const onScroll = (e2) => {
unref(_isHorizontal) ? scrollHorizontally(e2) : scrollVertically(e2)
emitEvents()
}
const onScrollbarScroll = (distanceToGo, totalSteps) => {
const offset2 =
((estimatedTotalSize.value - clientSize.value) / totalSteps) *
distanceToGo
scrollTo(Math.min(estimatedTotalSize.value - clientSize.value, offset2))
}
const scrollTo = (offset2) => {
offset2 = Math.max(offset2, 0)
if (offset2 === unref(states).scrollOffset) {
return
}
states.value = {
...unref(states),
scrollOffset: offset2,
scrollDir: getScrollDir(unref(states).scrollOffset, offset2),
updateRequested: true,
}
nextTick(resetIsScrolling)
}
const scrollToItem = (idx, alignment = AUTO_ALIGNMENT) => {
const { scrollOffset } = unref(states)
idx = Math.max(0, Math.min(idx, props2.total - 1))
scrollTo(
getOffset2(
props2,
idx,
alignment,
scrollOffset,
unref(dynamicSizeCache)
)
)
}
const getItemStyle2 = (idx) => {
const {
direction: direction2,
itemSize: itemSize2,
layout: layout2,
} = props2
const itemStyleCache = getItemStyleCache.value(
clearCache && itemSize2,
clearCache && layout2,
clearCache && direction2
)
let style2
if (hasOwn$e(itemStyleCache, String(idx))) {
style2 = itemStyleCache[idx]
} else {
const offset2 = getItemOffset(props2, idx, unref(dynamicSizeCache))
const size = getItemSize(props2, idx, unref(dynamicSizeCache))
const horizontal = unref(_isHorizontal)
const isRtl = direction2 === RTL
const offsetHorizontal = horizontal ? offset2 : 0
itemStyleCache[idx] = style2 = {
position: 'absolute',
left: isRtl ? void 0 : `${offsetHorizontal}px`,
right: isRtl ? `${offsetHorizontal}px` : void 0,
top: !horizontal ? `${offset2}px` : 0,
height: !horizontal ? `${size}px` : '100%',
width: horizontal ? `${size}px` : '100%',
}
}
return style2
}
const resetIsScrolling = () => {
states.value.isScrolling = false
nextTick(() => {
getItemStyleCache.value(-1, null, null)
})
}
const resetScrollTop = () => {
const window2 = windowRef.value
if (window2) {
window2.scrollTop = 0
}
}
onMounted(() => {
if (!isClient$1) return
const { initScrollOffset: initScrollOffset2 } = props2
const windowElement = unref(windowRef)
if (isNumber$h(initScrollOffset2) && windowElement) {
if (unref(_isHorizontal)) {
windowElement.scrollLeft = initScrollOffset2
} else {
windowElement.scrollTop = initScrollOffset2
}
}
emitEvents()
})
onUpdated(() => {
const { direction: direction2, layout: layout2 } = props2
const { scrollOffset, updateRequested } = unref(states)
const windowElement = unref(windowRef)
if (updateRequested && windowElement) {
if (layout2 === HORIZONTAL$1) {
if (direction2 === RTL) {
switch (getRTLOffsetType()) {
case 'negative': {
windowElement.scrollLeft = -scrollOffset
break
}
case 'positive-ascending': {
windowElement.scrollLeft = scrollOffset
break
}
default: {
const { clientWidth, scrollWidth } = windowElement
windowElement.scrollLeft =
scrollWidth - clientWidth - scrollOffset
break
}
}
} else {
windowElement.scrollLeft = scrollOffset
}
} else {
windowElement.scrollTop = scrollOffset
}
}
})
const api = {
clientSize,
estimatedTotalSize,
windowStyle,
windowRef,
innerRef,
innerStyle,
itemsToRender,
scrollbarRef,
states,
getItemStyle: getItemStyle2,
onScroll,
onScrollbarScroll,
onWheel,
scrollTo,
scrollToItem,
resetScrollTop,
}
expose({
windowRef,
innerRef,
getItemStyleCache,
scrollTo,
scrollToItem,
resetScrollTop,
states,
})
return api
},
render(ctx) {
var _a2
const {
$slots,
className,
clientSize,
containerElement,
data: data2,
getItemStyle: getItemStyle2,
innerElement,
itemsToRender,
innerStyle,
layout: layout2,
total: total2,
onScroll,
onScrollbarScroll,
onWheel,
states,
useIsScrolling,
windowStyle,
} = ctx
const [start2, end2] = itemsToRender
const Container2 = resolveDynamicComponent(containerElement)
const Inner = resolveDynamicComponent(innerElement)
const children = []
if (total2 > 0) {
for (let i2 = start2; i2 <= end2; i2++) {
children.push(
(_a2 = $slots.default) == null
? void 0
: _a2.call($slots, {
data: data2,
key: i2,
index: i2,
isScrolling: useIsScrolling ? states.isScrolling : void 0,
style: getItemStyle2(i2),
})
)
}
}
const InnerNode = [
h$4(
Inner,
{
style: innerStyle,
ref: 'innerRef',
},
!isString$f(Inner)
? {
default: () => children,
}
: children
),
]
const scrollbar = h$4(ScrollBar, {
ref: 'scrollbarRef',
clientSize,
layout: layout2,
onScroll: onScrollbarScroll,
ratio: (clientSize * 100) / this.estimatedTotalSize,
scrollFrom:
states.scrollOffset / (this.estimatedTotalSize - clientSize),
total: total2,
})
const listContainer = h$4(
Container2,
{
class: ['el-vl__window', className],
style: windowStyle,
onScroll,
onWheel,
ref: 'windowRef',
key: 0,
},
!isString$f(Container2) ? { default: () => [InnerNode] } : [InnerNode]
)
return h$4(
'div',
{
key: 0,
class: [
'el-vl__wrapper',
states.scrollbarAlwaysOn ? 'always-on' : '',
],
},
[listContainer, scrollbar]
)
},
})
}
const FixedSizeList = createList$3({
name: 'ElFixedSizeList',
getItemOffset: ({ itemSize: itemSize2 }, index2) => index2 * itemSize2,
getItemSize: ({ itemSize: itemSize2 }) => itemSize2,
getEstimatedTotalSize: ({ total: total2, itemSize: itemSize2 }) =>
itemSize2 * total2,
getOffset: (
{ height, total: total2, itemSize: itemSize2, layout: layout2, width },
index2,
alignment,
scrollOffset
) => {
const size = isHorizontal(layout2) ? width : height
const lastItemOffset = Math.max(0, total2 * itemSize2 - size)
const maxOffset = Math.min(lastItemOffset, index2 * itemSize2)
const minOffset = Math.max(0, (index2 + 1) * itemSize2 - size)
if (alignment === SMART_ALIGNMENT) {
if (
scrollOffset >= minOffset - size &&
scrollOffset <= maxOffset + size
) {
alignment = AUTO_ALIGNMENT
} else {
alignment = CENTERED_ALIGNMENT
}
}
switch (alignment) {
case START_ALIGNMENT: {
return maxOffset
}
case END_ALIGNMENT: {
return minOffset
}
case CENTERED_ALIGNMENT: {
const middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2)
if (middleOffset < Math.ceil(size / 2)) {
return 0
} else if (middleOffset > lastItemOffset + Math.floor(size / 2)) {
return lastItemOffset
} else {
return middleOffset
}
}
case AUTO_ALIGNMENT:
default: {
if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {
return scrollOffset
} else if (scrollOffset < minOffset) {
return minOffset
} else {
return maxOffset
}
}
}
},
getStartIndexForOffset: ({ total: total2, itemSize: itemSize2 }, offset2) =>
Math.max(0, Math.min(total2 - 1, Math.floor(offset2 / itemSize2))),
getStopIndexForStartIndex: (
{ height, total: total2, itemSize: itemSize2, layout: layout2, width },
startIndex,
scrollOffset
) => {
const offset2 = startIndex * itemSize2
const size = isHorizontal(layout2) ? width : height
const numVisibleItems = Math.ceil(
(size + scrollOffset - offset2) / itemSize2
)
return Math.max(0, Math.min(total2 - 1, startIndex + numVisibleItems - 1))
},
initCache() {
return void 0
},
clearCache: true,
validateProps() {},
})
const getItemFromCache$1 = (props2, index2, listCache) => {
const { itemSize: itemSize2 } = props2
const { items, lastVisitedIndex } = listCache
if (index2 > lastVisitedIndex) {
let offset2 = 0
if (lastVisitedIndex >= 0) {
const item2 = items[lastVisitedIndex]
offset2 = item2.offset + item2.size
}
for (let i2 = lastVisitedIndex + 1; i2 <= index2; i2++) {
const size = itemSize2(i2)
items[i2] = {
offset: offset2,
size,
}
offset2 += size
}
listCache.lastVisitedIndex = index2
}
return items[index2]
}
const findItem$1 = (props2, listCache, offset2) => {
const { items, lastVisitedIndex } = listCache
const lastVisitedOffset =
lastVisitedIndex > 0 ? items[lastVisitedIndex].offset : 0
if (lastVisitedOffset >= offset2) {
return bs$1(props2, listCache, 0, lastVisitedIndex, offset2)
}
return es$2(props2, listCache, Math.max(0, lastVisitedIndex), offset2)
}
const bs$1 = (props2, listCache, low, high, offset2) => {
while (low <= high) {
const mid = low + Math.floor((high - low) / 2)
const currentOffset = getItemFromCache$1(props2, mid, listCache).offset
if (currentOffset === offset2) {
return mid
} else if (currentOffset < offset2) {
low = mid + 1
} else if (currentOffset > offset2) {
high = mid - 1
}
}
return Math.max(0, low - 1)
}
const es$2 = (props2, listCache, index2, offset2) => {
const { total: total2 } = props2
let exponent = 1
while (
index2 < total2 &&
getItemFromCache$1(props2, index2, listCache).offset < offset2
) {
index2 += exponent
exponent *= 2
}
return bs$1(
props2,
listCache,
Math.floor(index2 / 2),
Math.min(index2, total2 - 1),
offset2
)
}
const getEstimatedTotalSize = (
{ total: total2 },
{ items, estimatedItemSize: estimatedItemSize2, lastVisitedIndex }
) => {
let totalSizeOfMeasuredItems = 0
if (lastVisitedIndex >= total2) {
lastVisitedIndex = total2 - 1
}
if (lastVisitedIndex >= 0) {
const item2 = items[lastVisitedIndex]
totalSizeOfMeasuredItems = item2.offset + item2.size
}
const numUnmeasuredItems = total2 - lastVisitedIndex - 1
const totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedItemSize2
return totalSizeOfMeasuredItems + totalSizeOfUnmeasuredItems
}
const DynamicSizeList = createList$3({
name: 'ElDynamicSizeList',
getItemOffset: (props2, index2, listCache) =>
getItemFromCache$1(props2, index2, listCache).offset,
getItemSize: (_2, index2, { items }) => items[index2].size,
getEstimatedTotalSize,
getOffset: (props2, index2, alignment, scrollOffset, listCache) => {
const { height, layout: layout2, width } = props2
const size = isHorizontal(layout2) ? width : height
const item2 = getItemFromCache$1(props2, index2, listCache)
const estimatedTotalSize = getEstimatedTotalSize(props2, listCache)
const maxOffset = Math.max(
0,
Math.min(estimatedTotalSize - size, item2.offset)
)
const minOffset = Math.max(0, item2.offset - size + item2.size)
if (alignment === SMART_ALIGNMENT) {
if (
scrollOffset >= minOffset - size &&
scrollOffset <= maxOffset + size
) {
alignment = AUTO_ALIGNMENT
} else {
alignment = CENTERED_ALIGNMENT
}
}
switch (alignment) {
case START_ALIGNMENT: {
return maxOffset
}
case END_ALIGNMENT: {
return minOffset
}
case CENTERED_ALIGNMENT: {
return Math.round(minOffset + (maxOffset - minOffset) / 2)
}
case AUTO_ALIGNMENT:
default: {
if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {
return scrollOffset
} else if (scrollOffset < minOffset) {
return minOffset
} else {
return maxOffset
}
}
}
},
getStartIndexForOffset: (props2, offset2, listCache) =>
findItem$1(props2, listCache, offset2),
getStopIndexForStartIndex: (props2, startIndex, scrollOffset, listCache) => {
const { height, total: total2, layout: layout2, width } = props2
const size = isHorizontal(layout2) ? width : height
const item2 = getItemFromCache$1(props2, startIndex, listCache)
const maxOffset = scrollOffset + size
let offset2 = item2.offset + item2.size
let stopIndex = startIndex
while (stopIndex < total2 - 1 && offset2 < maxOffset) {
stopIndex++
offset2 += getItemFromCache$1(props2, stopIndex, listCache).size
}
return stopIndex
},
initCache(
{ estimatedItemSize: estimatedItemSize2 = DEFAULT_DYNAMIC_LIST_ITEM_SIZE },
instance
) {
const cache2 = {
items: {},
estimatedItemSize: estimatedItemSize2,
lastVisitedIndex: -1,
}
cache2.clearCacheAfterIndex = (index2, forceUpdate = true) => {
var _a2, _b2
cache2.lastVisitedIndex = Math.min(cache2.lastVisitedIndex, index2 - 1)
;(_a2 = instance.exposed) == null ? void 0 : _a2.getItemStyleCache(-1)
if (forceUpdate) {
;(_b2 = instance.proxy) == null ? void 0 : _b2.$forceUpdate()
}
}
return cache2
},
clearCache: false,
validateProps: ({ itemSize: itemSize2 }) => {},
})
const useGridWheel = (
{ atXEndEdge, atXStartEdge, atYEndEdge, atYStartEdge },
onWheelDelta
) => {
let frameHandle = null
let xOffset = 0
let yOffset = 0
const hasReachedEdge = (x2, y2) => {
const xEdgeReached =
(x2 < 0 && atXStartEdge.value) || (x2 > 0 && atXEndEdge.value)
const yEdgeReached =
(y2 < 0 && atYStartEdge.value) || (y2 > 0 && atYEndEdge.value)
return xEdgeReached && yEdgeReached
}
const onWheel = (e2) => {
cAF(frameHandle)
const x2 = e2.deltaX
const y2 = e2.deltaY
if (
hasReachedEdge(xOffset, yOffset) &&
hasReachedEdge(xOffset + x2, yOffset + y2)
)
return
xOffset += x2
yOffset += y2
if (!isFirefox()) {
e2.preventDefault()
}
frameHandle = rAF(() => {
onWheelDelta(xOffset, yOffset)
xOffset = 0
yOffset = 0
})
}
return {
hasReachedEdge,
onWheel,
}
}
const createGrid = ({
name: name2,
clearCache,
getColumnPosition,
getColumnStartIndexForOffset,
getColumnStopIndexForStartIndex,
getEstimatedTotalHeight: getEstimatedTotalHeight2,
getEstimatedTotalWidth: getEstimatedTotalWidth2,
getColumnOffset,
getRowOffset,
getRowPosition,
getRowStartIndexForOffset,
getRowStopIndexForStartIndex,
initCache,
validateProps,
}) => {
return defineComponent({
name: name2 != null ? name2 : 'ElVirtualList',
props: virtualizedGridProps,
emits: [ITEM_RENDER_EVT, SCROLL_EVT],
setup(props2, { emit: emit2, expose, slots }) {
validateProps(props2)
const instance = getCurrentInstance()
const cache2 = ref(initCache(props2, instance))
const windowRef = ref()
const hScrollbar = ref()
const vScrollbar = ref()
const innerRef = ref(null)
const states = ref({
isScrolling: false,
scrollLeft: isNumber$h(props2.initScrollLeft)
? props2.initScrollLeft
: 0,
scrollTop: isNumber$h(props2.initScrollTop) ? props2.initScrollTop : 0,
updateRequested: false,
xAxisScrollDir: FORWARD,
yAxisScrollDir: FORWARD,
})
const getItemStyleCache = useCache()
const parsedHeight = computed(() =>
Number.parseInt(`${props2.height}`, 10)
)
const parsedWidth = computed(() => Number.parseInt(`${props2.width}`, 10))
const columnsToRender = computed(() => {
const { totalColumn, totalRow, columnCache } = props2
const { isScrolling, xAxisScrollDir, scrollLeft } = unref(states)
if (totalColumn === 0 || totalRow === 0) {
return [0, 0, 0, 0]
}
const startIndex = getColumnStartIndexForOffset(
props2,
scrollLeft,
unref(cache2)
)
const stopIndex = getColumnStopIndexForStartIndex(
props2,
startIndex,
scrollLeft,
unref(cache2)
)
const cacheBackward =
!isScrolling || xAxisScrollDir === BACKWARD
? Math.max(1, columnCache)
: 1
const cacheForward =
!isScrolling || xAxisScrollDir === FORWARD
? Math.max(1, columnCache)
: 1
return [
Math.max(0, startIndex - cacheBackward),
Math.max(0, Math.min(totalColumn - 1, stopIndex + cacheForward)),
startIndex,
stopIndex,
]
})
const rowsToRender = computed(() => {
const { totalColumn, totalRow, rowCache } = props2
const { isScrolling, yAxisScrollDir, scrollTop } = unref(states)
if (totalColumn === 0 || totalRow === 0) {
return [0, 0, 0, 0]
}
const startIndex = getRowStartIndexForOffset(
props2,
scrollTop,
unref(cache2)
)
const stopIndex = getRowStopIndexForStartIndex(
props2,
startIndex,
scrollTop,
unref(cache2)
)
const cacheBackward =
!isScrolling || yAxisScrollDir === BACKWARD
? Math.max(1, rowCache)
: 1
const cacheForward =
!isScrolling || yAxisScrollDir === FORWARD ? Math.max(1, rowCache) : 1
return [
Math.max(0, startIndex - cacheBackward),
Math.max(0, Math.min(totalRow - 1, stopIndex + cacheForward)),
startIndex,
stopIndex,
]
})
const estimatedTotalHeight = computed(() =>
getEstimatedTotalHeight2(props2, unref(cache2))
)
const estimatedTotalWidth = computed(() =>
getEstimatedTotalWidth2(props2, unref(cache2))
)
const windowStyle = computed(() => {
var _a2
return [
{
position: 'relative',
overflow: 'hidden',
WebkitOverflowScrolling: 'touch',
willChange: 'transform',
},
{
direction: props2.direction,
height: isNumber$h(props2.height)
? `${props2.height}px`
: props2.height,
width: isNumber$h(props2.width)
? `${props2.width}px`
: props2.width,
},
(_a2 = props2.style) != null ? _a2 : {},
]
})
const innerStyle = computed(() => {
const width = `${unref(estimatedTotalWidth)}px`
const height = `${unref(estimatedTotalHeight)}px`
return {
height,
pointerEvents: unref(states).isScrolling ? 'none' : void 0,
width,
}
})
const emitEvents = () => {
const { totalColumn, totalRow } = props2
if (totalColumn > 0 && totalRow > 0) {
const [
columnCacheStart,
columnCacheEnd,
columnVisibleStart,
columnVisibleEnd,
] = unref(columnsToRender)
const [rowCacheStart, rowCacheEnd, rowVisibleStart, rowVisibleEnd] =
unref(rowsToRender)
emit2(
ITEM_RENDER_EVT,
columnCacheStart,
columnCacheEnd,
rowCacheStart,
rowCacheEnd,
columnVisibleStart,
columnVisibleEnd,
rowVisibleStart,
rowVisibleEnd
)
}
const {
scrollLeft,
scrollTop,
updateRequested,
xAxisScrollDir,
yAxisScrollDir,
} = unref(states)
emit2(
SCROLL_EVT,
xAxisScrollDir,
scrollLeft,
yAxisScrollDir,
scrollTop,
updateRequested
)
}
const onScroll = (e2) => {
const {
clientHeight,
clientWidth,
scrollHeight,
scrollLeft,
scrollTop,
scrollWidth,
} = e2.currentTarget
const _states = unref(states)
if (
_states.scrollTop === scrollTop &&
_states.scrollLeft === scrollLeft
) {
return
}
let _scrollLeft = scrollLeft
if (isRTL(props2.direction)) {
switch (getRTLOffsetType()) {
case RTL_OFFSET_NAG:
_scrollLeft = -scrollLeft
break
case RTL_OFFSET_POS_DESC:
_scrollLeft = scrollWidth - clientWidth - scrollLeft
break
}
}
states.value = {
..._states,
isScrolling: true,
scrollLeft: _scrollLeft,
scrollTop: Math.max(
0,
Math.min(scrollTop, scrollHeight - clientHeight)
),
updateRequested: false,
xAxisScrollDir: getScrollDir(_states.scrollLeft, _scrollLeft),
yAxisScrollDir: getScrollDir(_states.scrollTop, scrollTop),
}
nextTick(resetIsScrolling)
emitEvents()
}
const onVerticalScroll = (distance2, totalSteps) => {
const height = unref(parsedHeight)
const offset2 =
((estimatedTotalHeight.value - height) / totalSteps) * distance2
scrollTo({
scrollTop: Math.min(estimatedTotalHeight.value - height, offset2),
})
}
const onHorizontalScroll = (distance2, totalSteps) => {
const width = unref(parsedWidth)
const offset2 =
((estimatedTotalWidth.value - width) / totalSteps) * distance2
scrollTo({
scrollLeft: Math.min(estimatedTotalWidth.value - width, offset2),
})
}
const { onWheel } = useGridWheel(
{
atXStartEdge: computed(() => states.value.scrollLeft <= 0),
atXEndEdge: computed(
() => states.value.scrollLeft >= estimatedTotalWidth.value
),
atYStartEdge: computed(() => states.value.scrollTop <= 0),
atYEndEdge: computed(
() => states.value.scrollTop >= estimatedTotalHeight.value
),
},
(x2, y2) => {
var _a2, _b2, _c2, _d
;(_b2 = (_a2 = hScrollbar.value) == null ? void 0 : _a2.onMouseUp) ==
null
? void 0
: _b2.call(_a2)
;(_d = (_c2 = hScrollbar.value) == null ? void 0 : _c2.onMouseUp) ==
null
? void 0
: _d.call(_c2)
const width = unref(parsedWidth)
const height = unref(parsedHeight)
scrollTo({
scrollLeft: Math.min(
states.value.scrollLeft + x2,
estimatedTotalWidth.value - width
),
scrollTop: Math.min(
states.value.scrollTop + y2,
estimatedTotalHeight.value - height
),
})
}
)
const scrollTo = ({
scrollLeft = states.value.scrollLeft,
scrollTop = states.value.scrollTop,
}) => {
scrollLeft = Math.max(scrollLeft, 0)
scrollTop = Math.max(scrollTop, 0)
const _states = unref(states)
if (
scrollTop === _states.scrollTop &&
scrollLeft === _states.scrollLeft
) {
return
}
states.value = {
..._states,
xAxisScrollDir: getScrollDir(_states.scrollLeft, scrollLeft),
yAxisScrollDir: getScrollDir(_states.scrollTop, scrollTop),
scrollLeft,
scrollTop,
updateRequested: true,
}
nextTick(resetIsScrolling)
}
const scrollToItem = (
rowIndex = 0,
columnIdx = 0,
alignment = AUTO_ALIGNMENT
) => {
const _states = unref(states)
columnIdx = Math.max(0, Math.min(columnIdx, props2.totalColumn - 1))
rowIndex = Math.max(0, Math.min(rowIndex, props2.totalRow - 1))
const scrollBarWidth2 = getScrollBarWidth()
const _cache = unref(cache2)
const estimatedHeight = getEstimatedTotalHeight2(props2, _cache)
const estimatedWidth = getEstimatedTotalWidth2(props2, _cache)
scrollTo({
scrollLeft: getColumnOffset(
props2,
columnIdx,
alignment,
_states.scrollLeft,
_cache,
estimatedWidth > props2.width ? scrollBarWidth2 : 0
),
scrollTop: getRowOffset(
props2,
rowIndex,
alignment,
_states.scrollTop,
_cache,
estimatedHeight > props2.height ? scrollBarWidth2 : 0
),
})
}
const getItemStyle2 = (rowIndex, columnIndex) => {
const { columnWidth, direction: direction2, rowHeight } = props2
const itemStyleCache = getItemStyleCache.value(
clearCache && columnWidth,
clearCache && rowHeight,
clearCache && direction2
)
const key2 = `${rowIndex},${columnIndex}`
if (hasOwn$e(itemStyleCache, key2)) {
return itemStyleCache[key2]
} else {
const [, left2] = getColumnPosition(
props2,
columnIndex,
unref(cache2)
)
const _cache = unref(cache2)
const rtl = isRTL(direction2)
const [height, top2] = getRowPosition(props2, rowIndex, _cache)
const [width] = getColumnPosition(props2, columnIndex, _cache)
itemStyleCache[key2] = {
position: 'absolute',
left: rtl ? void 0 : `${left2}px`,
right: rtl ? `${left2}px` : void 0,
top: `${top2}px`,
height: `${height}px`,
width: `${width}px`,
}
return itemStyleCache[key2]
}
}
const resetIsScrolling = () => {
states.value.isScrolling = false
nextTick(() => {
getItemStyleCache.value(-1, null, null)
})
}
onMounted(() => {
if (!isClient$1) return
const { initScrollLeft, initScrollTop } = props2
const windowElement = unref(windowRef)
if (windowElement) {
if (isNumber$h(initScrollLeft)) {
windowElement.scrollLeft = initScrollLeft
}
if (isNumber$h(initScrollTop)) {
windowElement.scrollTop = initScrollTop
}
}
emitEvents()
})
onUpdated(() => {
const { direction: direction2 } = props2
const { scrollLeft, scrollTop, updateRequested } = unref(states)
const windowElement = unref(windowRef)
if (updateRequested && windowElement) {
if (direction2 === RTL) {
switch (getRTLOffsetType()) {
case RTL_OFFSET_NAG: {
windowElement.scrollLeft = -scrollLeft
break
}
case RTL_OFFSET_POS_ASC: {
windowElement.scrollLeft = scrollLeft
break
}
default: {
const { clientWidth, scrollWidth } = windowElement
windowElement.scrollLeft =
scrollWidth - clientWidth - scrollLeft
break
}
}
} else {
windowElement.scrollLeft = Math.max(0, scrollLeft)
}
windowElement.scrollTop = Math.max(0, scrollTop)
}
})
expose({
windowRef,
innerRef,
getItemStyleCache,
scrollTo,
scrollToItem,
states,
})
const renderScrollbars = () => {
const { totalColumn, totalRow } = props2
const width = unref(parsedWidth)
const height = unref(parsedHeight)
const estimatedWidth = unref(estimatedTotalWidth)
const estimatedHeight = unref(estimatedTotalHeight)
const { scrollLeft, scrollTop } = unref(states)
const horizontalScrollbar = h$4(ScrollBar, {
ref: hScrollbar,
clientSize: width,
layout: 'horizontal',
onScroll: onHorizontalScroll,
ratio: (width * 100) / estimatedWidth,
scrollFrom: scrollLeft / (estimatedWidth - width),
total: totalRow,
visible: true,
})
const verticalScrollbar = h$4(ScrollBar, {
ref: vScrollbar,
clientSize: height,
layout: 'vertical',
onScroll: onVerticalScroll,
ratio: (height * 100) / estimatedHeight,
scrollFrom: scrollTop / (estimatedHeight - height),
total: totalColumn,
visible: true,
})
return {
horizontalScrollbar,
verticalScrollbar,
}
}
const renderItems = () => {
var _a2
const [columnStart, columnEnd] = unref(columnsToRender)
const [rowStart, rowEnd] = unref(rowsToRender)
const { data: data2, totalColumn, totalRow, useIsScrolling } = props2
const children = []
if (totalRow > 0 && totalColumn > 0) {
for (let row = rowStart; row <= rowEnd; row++) {
for (let column = columnStart; column <= columnEnd; column++) {
children.push(
(_a2 = slots.default) == null
? void 0
: _a2.call(slots, {
columnIndex: column,
data: data2,
key: column,
isScrolling: useIsScrolling
? unref(states).isScrolling
: void 0,
style: getItemStyle2(row, column),
rowIndex: row,
})
)
}
}
}
return children
}
const renderInner = () => {
const Inner = resolveDynamicComponent(props2.innerElement)
const children = renderItems()
return [
h$4(
Inner,
{
style: unref(innerStyle),
ref: innerRef,
},
!isString$f(Inner)
? {
default: () => children,
}
: children
),
]
}
const renderWindow = () => {
const Container2 = resolveDynamicComponent(props2.containerElement)
const { horizontalScrollbar, verticalScrollbar } = renderScrollbars()
const Inner = renderInner()
return h$4(
'div',
{
key: 0,
class: 'el-vg__wrapper',
},
[
h$4(
Container2,
{
class: props2.className,
style: unref(windowStyle),
onScroll,
onWheel,
ref: windowRef,
},
!isString$f(Container2) ? { default: () => Inner } : Inner
),
horizontalScrollbar,
verticalScrollbar,
]
)
}
return renderWindow
},
})
}
const FixedSizeGrid$1 = createGrid({
name: 'ElFixedSizeGrid',
getColumnPosition: ({ columnWidth }, index2) => [
columnWidth,
index2 * columnWidth,
],
getRowPosition: ({ rowHeight }, index2) => [rowHeight, index2 * rowHeight],
getEstimatedTotalHeight: ({ totalRow, rowHeight }) => rowHeight * totalRow,
getEstimatedTotalWidth: ({ totalColumn, columnWidth }) =>
columnWidth * totalColumn,
getColumnOffset: (
{ totalColumn, columnWidth, width },
columnIndex,
alignment,
scrollLeft,
_2,
scrollBarWidth2
) => {
width = Number(width)
const lastColumnOffset = Math.max(0, totalColumn * columnWidth - width)
const maxOffset = Math.min(lastColumnOffset, columnIndex * columnWidth)
const minOffset = Math.max(
0,
columnIndex * columnWidth - width + scrollBarWidth2 + columnWidth
)
if (alignment === 'smart') {
if (scrollLeft >= minOffset - width && scrollLeft <= maxOffset + width) {
alignment = AUTO_ALIGNMENT
} else {
alignment = CENTERED_ALIGNMENT
}
}
switch (alignment) {
case START_ALIGNMENT:
return maxOffset
case END_ALIGNMENT:
return minOffset
case CENTERED_ALIGNMENT: {
const middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2)
if (middleOffset < Math.ceil(width / 2)) {
return 0
} else if (middleOffset > lastColumnOffset + Math.floor(width / 2)) {
return lastColumnOffset
} else {
return middleOffset
}
}
case AUTO_ALIGNMENT:
default:
if (scrollLeft >= minOffset && scrollLeft <= maxOffset) {
return scrollLeft
} else if (minOffset > maxOffset) {
return minOffset
} else if (scrollLeft < minOffset) {
return minOffset
} else {
return maxOffset
}
}
},
getRowOffset: (
{ rowHeight, height, totalRow },
rowIndex,
align,
scrollTop,
_2,
scrollBarWidth2
) => {
height = Number(height)
const lastRowOffset = Math.max(0, totalRow * rowHeight - height)
const maxOffset = Math.min(lastRowOffset, rowIndex * rowHeight)
const minOffset = Math.max(
0,
rowIndex * rowHeight - height + scrollBarWidth2 + rowHeight
)
if (align === SMART_ALIGNMENT) {
if (scrollTop >= minOffset - height && scrollTop <= maxOffset + height) {
align = AUTO_ALIGNMENT
} else {
align = CENTERED_ALIGNMENT
}
}
switch (align) {
case START_ALIGNMENT:
return maxOffset
case END_ALIGNMENT:
return minOffset
case CENTERED_ALIGNMENT: {
const middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2)
if (middleOffset < Math.ceil(height / 2)) {
return 0
} else if (middleOffset > lastRowOffset + Math.floor(height / 2)) {
return lastRowOffset
} else {
return middleOffset
}
}
case AUTO_ALIGNMENT:
default:
if (scrollTop >= minOffset && scrollTop <= maxOffset) {
return scrollTop
} else if (minOffset > maxOffset) {
return minOffset
} else if (scrollTop < minOffset) {
return minOffset
} else {
return maxOffset
}
}
},
getColumnStartIndexForOffset: ({ columnWidth, totalColumn }, scrollLeft) =>
Math.max(
0,
Math.min(totalColumn - 1, Math.floor(scrollLeft / columnWidth))
),
getColumnStopIndexForStartIndex: (
{ columnWidth, totalColumn, width },
startIndex,
scrollLeft
) => {
const left2 = startIndex * columnWidth
const visibleColumnsCount = Math.ceil(
(width + scrollLeft - left2) / columnWidth
)
return Math.max(
0,
Math.min(totalColumn - 1, startIndex + visibleColumnsCount - 1)
)
},
getRowStartIndexForOffset: ({ rowHeight, totalRow }, scrollTop) =>
Math.max(0, Math.min(totalRow - 1, Math.floor(scrollTop / rowHeight))),
getRowStopIndexForStartIndex: (
{ rowHeight, totalRow, height },
startIndex,
scrollTop
) => {
const top2 = startIndex * rowHeight
const numVisibleRows = Math.ceil((height + scrollTop - top2) / rowHeight)
return Math.max(0, Math.min(totalRow - 1, startIndex + numVisibleRows - 1))
},
initCache: () => void 0,
clearCache: true,
validateProps: ({ columnWidth, rowHeight }) => {},
})
const { max: max$a, min: min$a, floor: floor$5 } = Math
const ACCESS_SIZER_KEY_MAP = {
column: 'columnWidth',
row: 'rowHeight',
}
const ACCESS_LAST_VISITED_KEY_MAP = {
column: 'lastVisitedColumnIndex',
row: 'lastVisitedRowIndex',
}
const getItemFromCache = (props2, index2, gridCache, type4) => {
const [cachedItems, sizer, lastVisited] = [
gridCache[type4],
props2[ACCESS_SIZER_KEY_MAP[type4]],
gridCache[ACCESS_LAST_VISITED_KEY_MAP[type4]],
]
if (index2 > lastVisited) {
let offset2 = 0
if (lastVisited >= 0) {
const item2 = cachedItems[lastVisited]
offset2 = item2.offset + item2.size
}
for (let i2 = lastVisited + 1; i2 <= index2; i2++) {
const size = sizer(i2)
cachedItems[i2] = {
offset: offset2,
size,
}
offset2 += size
}
gridCache[ACCESS_LAST_VISITED_KEY_MAP[type4]] = index2
}
return cachedItems[index2]
}
const bs = (props2, gridCache, low, high, offset2, type4) => {
while (low <= high) {
const mid = low + floor$5((high - low) / 2)
const currentOffset = getItemFromCache(props2, mid, gridCache, type4).offset
if (currentOffset === offset2) {
return mid
} else if (currentOffset < offset2) {
low = mid + 1
} else {
high = mid - 1
}
}
return max$a(0, low - 1)
}
const es$1 = (props2, gridCache, idx, offset2, type4) => {
const total2 = type4 === 'column' ? props2.totalColumn : props2.totalRow
let exponent = 1
while (
idx < total2 &&
getItemFromCache(props2, idx, gridCache, type4).offset < offset2
) {
idx += exponent
exponent *= 2
}
return bs(
props2,
gridCache,
floor$5(idx / 2),
min$a(idx, total2 - 1),
offset2,
type4
)
}
const findItem = (props2, gridCache, offset2, type4) => {
const [cache2, lastVisitedIndex] = [
gridCache[type4],
gridCache[ACCESS_LAST_VISITED_KEY_MAP[type4]],
]
const lastVisitedItemOffset =
lastVisitedIndex > 0 ? cache2[lastVisitedIndex].offset : 0
if (lastVisitedItemOffset >= offset2) {
return bs(props2, gridCache, 0, lastVisitedIndex, offset2, type4)
}
return es$1(props2, gridCache, max$a(0, lastVisitedIndex), offset2, type4)
}
const getEstimatedTotalHeight = (
{ totalRow },
{ estimatedRowHeight, lastVisitedRowIndex, row }
) => {
let sizeOfVisitedRows = 0
if (lastVisitedRowIndex >= totalRow) {
lastVisitedRowIndex = totalRow - 1
}
if (lastVisitedRowIndex >= 0) {
const item2 = row[lastVisitedRowIndex]
sizeOfVisitedRows = item2.offset + item2.size
}
const unvisitedItems = totalRow - lastVisitedRowIndex - 1
const sizeOfUnvisitedItems = unvisitedItems * estimatedRowHeight
return sizeOfVisitedRows + sizeOfUnvisitedItems
}
const getEstimatedTotalWidth = (
{ totalColumn },
{ column, estimatedColumnWidth, lastVisitedColumnIndex }
) => {
let sizeOfVisitedColumns = 0
if (lastVisitedColumnIndex > totalColumn) {
lastVisitedColumnIndex = totalColumn - 1
}
if (lastVisitedColumnIndex >= 0) {
const item2 = column[lastVisitedColumnIndex]
sizeOfVisitedColumns = item2.offset + item2.size
}
const unvisitedItems = totalColumn - lastVisitedColumnIndex - 1
const sizeOfUnvisitedItems = unvisitedItems * estimatedColumnWidth
return sizeOfVisitedColumns + sizeOfUnvisitedItems
}
const ACCESS_ESTIMATED_SIZE_KEY_MAP = {
column: getEstimatedTotalWidth,
row: getEstimatedTotalHeight,
}
const getOffset$1 = (
props2,
index2,
alignment,
scrollOffset,
cache2,
type4,
scrollBarWidth2
) => {
const [size, estimatedSizeAssociates] = [
type4 === 'row' ? props2.height : props2.width,
ACCESS_ESTIMATED_SIZE_KEY_MAP[type4],
]
const item2 = getItemFromCache(props2, index2, cache2, type4)
const estimatedSize = estimatedSizeAssociates(props2, cache2)
const maxOffset = max$a(0, min$a(estimatedSize - size, item2.offset))
const minOffset = max$a(0, item2.offset - size + scrollBarWidth2 + item2.size)
if (alignment === SMART_ALIGNMENT) {
if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {
alignment = AUTO_ALIGNMENT
} else {
alignment = CENTERED_ALIGNMENT
}
}
switch (alignment) {
case START_ALIGNMENT: {
return maxOffset
}
case END_ALIGNMENT: {
return minOffset
}
case CENTERED_ALIGNMENT: {
return Math.round(minOffset + (maxOffset - minOffset) / 2)
}
case AUTO_ALIGNMENT:
default: {
if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {
return scrollOffset
} else if (minOffset > maxOffset) {
return minOffset
} else if (scrollOffset < minOffset) {
return minOffset
} else {
return maxOffset
}
}
}
}
const FixedSizeGrid = createGrid({
name: 'ElDynamicSizeGrid',
getColumnPosition: (props2, idx, cache2) => {
const item2 = getItemFromCache(props2, idx, cache2, 'column')
return [item2.size, item2.offset]
},
getRowPosition: (props2, idx, cache2) => {
const item2 = getItemFromCache(props2, idx, cache2, 'row')
return [item2.size, item2.offset]
},
getColumnOffset: (
props2,
columnIndex,
alignment,
scrollLeft,
cache2,
scrollBarWidth2
) =>
getOffset$1(
props2,
columnIndex,
alignment,
scrollLeft,
cache2,
'column',
scrollBarWidth2
),
getRowOffset: (
props2,
rowIndex,
alignment,
scrollTop,
cache2,
scrollBarWidth2
) =>
getOffset$1(
props2,
rowIndex,
alignment,
scrollTop,
cache2,
'row',
scrollBarWidth2
),
getColumnStartIndexForOffset: (props2, scrollLeft, cache2) =>
findItem(props2, cache2, scrollLeft, 'column'),
getColumnStopIndexForStartIndex: (props2, startIndex, scrollLeft, cache2) => {
const item2 = getItemFromCache(props2, startIndex, cache2, 'column')
const maxOffset = scrollLeft + props2.width
let offset2 = item2.offset + item2.size
let stopIndex = startIndex
while (stopIndex < props2.totalColumn - 1 && offset2 < maxOffset) {
stopIndex++
offset2 += getItemFromCache(props2, startIndex, cache2, 'column').size
}
return stopIndex
},
getEstimatedTotalHeight,
getEstimatedTotalWidth,
getRowStartIndexForOffset: (props2, scrollTop, cache2) =>
findItem(props2, cache2, scrollTop, 'row'),
getRowStopIndexForStartIndex: (props2, startIndex, scrollTop, cache2) => {
const { totalRow, height } = props2
const item2 = getItemFromCache(props2, startIndex, cache2, 'row')
const maxOffset = scrollTop + height
let offset2 = item2.size + item2.offset
let stopIndex = startIndex
while (stopIndex < totalRow - 1 && offset2 < maxOffset) {
stopIndex++
offset2 += getItemFromCache(props2, stopIndex, cache2, 'row').size
}
return stopIndex
},
initCache: ({
estimatedColumnWidth = DEFAULT_DYNAMIC_LIST_ITEM_SIZE,
estimatedRowHeight = DEFAULT_DYNAMIC_LIST_ITEM_SIZE,
}) => {
const cache2 = {
column: {},
estimatedColumnWidth,
estimatedRowHeight,
lastVisitedColumnIndex: -1,
lastVisitedRowIndex: -1,
row: {},
}
return cache2
},
clearCache: true,
validateProps: ({ columnWidth, rowHeight }) => {},
})
const _sfc_main$7I = defineComponent({
props: {
item: {
type: Object,
required: true,
},
style: Object,
height: Number,
},
setup() {
const ns = useNamespace('select')
return {
ns,
}
},
})
function _sfc_render$E(_ctx, _cache, $props2, $setup, $data, $options) {
return _ctx.item.isTitle
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass(_ctx.ns.be('group', 'title')),
style: normalizeStyle$1([
_ctx.style,
{ lineHeight: `${_ctx.height}px` },
]),
},
toDisplayString$1(_ctx.item.label),
7
))
: (openBlock(),
createElementBlock(
'div',
{
key: 1,
class: normalizeClass(_ctx.ns.be('group', 'split')),
style: normalizeStyle$1(_ctx.style),
},
[
createElementVNode(
'span',
{
class: normalizeClass(_ctx.ns.be('group', 'split-dash')),
style: normalizeStyle$1({ top: `${_ctx.height / 2}px` }),
},
null,
6
),
],
6
))
}
var GroupItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$7I, [
['render', _sfc_render$E],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/select-v2/src/group-item.vue',
],
])
function useOption(props2, { emit: emit2 }) {
return {
hoverItem: () => {
if (!props2.disabled) {
emit2('hover', props2.index)
}
},
selectOptionClick: () => {
if (!props2.disabled) {
emit2('select', props2.item, props2.index)
}
},
}
}
const SelectProps = {
allowCreate: Boolean,
autocomplete: {
type: String,
default: 'none',
},
automaticDropdown: Boolean,
clearable: Boolean,
clearIcon: {
type: [String, Object],
default: circleClose,
},
effect: {
type: String,
default: 'light',
},
collapseTags: Boolean,
collapseTagsTooltip: {
type: Boolean,
default: false,
},
defaultFirstOption: Boolean,
disabled: Boolean,
estimatedOptionHeight: {
type: Number,
default: void 0,
},
filterable: Boolean,
filterMethod: Function,
height: {
type: Number,
default: 170,
},
itemHeight: {
type: Number,
default: 34,
},
id: String,
loading: Boolean,
loadingText: String,
label: String,
modelValue: [Array, String, Number, Boolean, Object],
multiple: Boolean,
multipleLimit: {
type: Number,
default: 0,
},
name: String,
noDataText: String,
noMatchText: String,
remoteMethod: Function,
reserveKeyword: {
type: Boolean,
default: true,
},
options: {
type: Array,
required: true,
},
placeholder: {
type: String,
},
popperAppendToBody: {
type: Boolean,
default: void 0,
},
teleported: useTooltipContentProps.teleported,
persistent: {
type: Boolean,
default: true,
},
popperClass: {
type: String,
default: '',
},
popperOptions: {
type: Object,
default: () => ({}),
},
remote: Boolean,
size: {
type: String,
validator: isValidComponentSize,
},
valueKey: {
type: String,
default: 'value',
},
scrollbarAlwaysOn: {
type: Boolean,
default: false,
},
}
const OptionProps = {
data: Array,
disabled: Boolean,
hovering: Boolean,
item: Object,
index: Number,
style: Object,
selected: Boolean,
created: Boolean,
}
const _sfc_main$7H = defineComponent({
props: OptionProps,
emits: ['select', 'hover'],
setup(props2, { emit: emit2 }) {
const ns = useNamespace('select')
const { hoverItem, selectOptionClick } = useOption(props2, { emit: emit2 })
return {
ns,
hoverItem,
selectOptionClick,
}
},
})
const _hoisted_1$6g = ['aria-selected']
function _sfc_render$D(_ctx, _cache, $props2, $setup, $data, $options) {
return (
openBlock(),
createElementBlock(
'li',
{
'aria-selected': _ctx.selected,
style: normalizeStyle$1(_ctx.style),
class: normalizeClass([
_ctx.ns.be('dropdown', 'option-item'),
_ctx.ns.is('selected', _ctx.selected),
_ctx.ns.is('disabled', _ctx.disabled),
_ctx.ns.is('created', _ctx.created),
{ hover: _ctx.hovering },
]),
onMouseenter:
_cache[0] ||
(_cache[0] = (...args) => _ctx.hoverItem && _ctx.hoverItem(...args)),
onClick:
_cache[1] ||
(_cache[1] = withModifiers(
(...args) =>
_ctx.selectOptionClick && _ctx.selectOptionClick(...args),
['stop']
)),
},
[
renderSlot(
_ctx.$slots,
'default',
{
item: _ctx.item,
index: _ctx.index,
disabled: _ctx.disabled,
},
() => [
createElementVNode(
'span',
null,
toDisplayString$1(_ctx.item.label),
1
),
]
),
],
46,
_hoisted_1$6g
)
)
}
var OptionItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$7H, [
['render', _sfc_render$D],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/select-v2/src/option-item.vue',
],
])
const selectV2InjectionKey = 'ElSelectV2Injection'
const _sfc_main$7G = defineComponent({
name: 'ElSelectDropdown',
props: {
data: Array,
hoveringIndex: Number,
width: Number,
},
setup(props2) {
const select2 = inject(selectV2InjectionKey)
const ns = useNamespace('select')
const cachedHeights = ref([])
const listRef = ref(null)
const isSized = computed(() =>
isUndefined$c(select2.props.estimatedOptionHeight)
)
const listProps = computed(() => {
if (isSized.value) {
return {
itemSize: select2.props.itemHeight,
}
}
return {
estimatedSize: select2.props.estimatedOptionHeight,
itemSize: (idx) => cachedHeights.value[idx],
}
})
const contains2 = (arr = [], target2) => {
const {
props: { valueKey },
} = select2
if (!isObject$v(target2)) {
return arr.includes(target2)
}
return (
arr &&
arr.some((item2) => {
return get$a(item2, valueKey) === get$a(target2, valueKey)
})
)
}
const isEqual2 = (selected, target2) => {
if (!isObject$v(target2)) {
return selected === target2
} else {
const { valueKey } = select2.props
return get$a(selected, valueKey) === get$a(target2, valueKey)
}
}
const isItemSelected = (modelValue, target2) => {
const { valueKey } = select2.props
if (select2.props.multiple) {
return contains2(modelValue, get$a(target2, valueKey))
}
return isEqual2(modelValue, get$a(target2, valueKey))
}
const isItemDisabled = (modelValue, selected) => {
const { disabled, multiple, multipleLimit } = select2.props
return (
disabled ||
(!selected &&
(multiple
? multipleLimit > 0 && modelValue.length >= multipleLimit
: false))
)
}
const isItemHovering = (target2) => props2.hoveringIndex === target2
const scrollToItem = (index2) => {
const list2 = listRef.value
if (list2) {
list2.scrollToItem(index2)
}
}
const resetScrollTop = () => {
const list2 = listRef.value
if (list2) {
list2.resetScrollTop()
}
}
return {
ns,
select: select2,
listProps,
listRef,
isSized,
isItemDisabled,
isItemHovering,
isItemSelected,
scrollToItem,
resetScrollTop,
}
},
render(_ctx, _cache) {
var _a2
const {
$slots,
data: data2,
listProps,
select: select2,
isSized,
width,
ns,
isItemDisabled,
isItemHovering,
isItemSelected,
} = _ctx
const Comp = isSized ? FixedSizeList : DynamicSizeList
const {
props: selectProps,
onSelect,
onHover,
onKeyboardNavigate,
onKeyboardSelect,
} = select2
const { height, modelValue, multiple } = selectProps
if (data2.length === 0) {
return h$4(
'div',
{
class: ns.b('dropdown'),
style: {
width: `${width}px`,
},
},
(_a2 = $slots.empty) == null ? void 0 : _a2.call($slots)
)
}
const ListItem = withCtx((scoped) => {
const { index: index2, data: data22 } = scoped
const item2 = data22[index2]
if (data22[index2].type === 'Group') {
return h$4(GroupItem, {
item: item2,
style: scoped.style,
height: isSized ? listProps.itemSize : listProps.estimatedSize,
})
}
const selected = isItemSelected(modelValue, item2)
const itemDisabled = isItemDisabled(modelValue, selected)
return h$4(
OptionItem,
{
...scoped,
selected,
disabled: item2.disabled || itemDisabled,
created: !!item2.created,
hovering: isItemHovering(index2),
item: item2,
onSelect,
onHover,
},
{
default: withCtx((props2) => {
return renderSlot($slots, 'default', props2, () => [
h$4('span', item2.label),
])
}),
}
)
})
const List2 = h$4(
Comp,
{
ref: 'listRef',
className: ns.be('dropdown', 'list'),
data: data2,
height,
width,
total: data2.length,
scrollbarAlwaysOn: selectProps.scrollbarAlwaysOn,
onKeydown: [
_cache[1] ||
(_cache[1] = withKeys(
withModifiers(
() => onKeyboardNavigate('forward'),
['stop', 'prevent']
),
['down']
)),
_cache[2] ||
(_cache[2] = withKeys(
withModifiers(
() => onKeyboardNavigate('backward'),
['stop', 'prevent']
),
['up']
)),
_cache[3] ||
(_cache[3] = withKeys(
withModifiers(onKeyboardSelect, ['stop', 'prevent']),
['enter']
)),
_cache[4] ||
(_cache[4] = withKeys(
withModifiers(
() => (select2.expanded = false),
['stop', 'prevent']
),
['esc']
)),
_cache[5] ||
(_cache[5] = withKeys(() => (select2.expanded = false), ['tab'])),
],
...listProps,
},
{
default: ListItem,
}
)
return h$4(
'div',
{
class: [ns.b('dropdown'), ns.is('multiple', multiple)],
},
[List2]
)
},
})
var ElSelectMenu = /* @__PURE__ */ _export_sfc$1(_sfc_main$7G, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/select-v2/src/select-dropdown.vue',
],
])
function useAllowCreate(props2, states) {
const createOptionCount = ref(0)
const cachedSelectedOption = ref(null)
const enableAllowCreateMode = computed(() => {
return props2.allowCreate && props2.filterable
})
function hasExistingOption(query) {
const hasValue = (option2) => option2.value === query
return (
(props2.options && props2.options.some(hasValue)) ||
states.createdOptions.some(hasValue)
)
}
function selectNewOption(option2) {
if (!enableAllowCreateMode.value) {
return
}
if (props2.multiple && option2.created) {
createOptionCount.value++
} else {
cachedSelectedOption.value = option2
}
}
function createNewOption(query) {
if (enableAllowCreateMode.value) {
if (query && query.length > 0 && !hasExistingOption(query)) {
const newOption = {
value: query,
label: query,
created: true,
disabled: false,
}
if (states.createdOptions.length >= createOptionCount.value) {
states.createdOptions[createOptionCount.value] = newOption
} else {
states.createdOptions.push(newOption)
}
} else {
if (props2.multiple) {
states.createdOptions.length = createOptionCount.value
} else {
const selectedOption = cachedSelectedOption.value
states.createdOptions.length = 0
if (selectedOption && selectedOption.created) {
states.createdOptions.push(selectedOption)
}
}
}
}
}
function removeNewOption(option2) {
if (
!enableAllowCreateMode.value ||
!option2 ||
!option2.created ||
(option2.created &&
props2.reserveKeyword &&
states.inputValue === option2.label)
) {
return
}
const idx = states.createdOptions.findIndex(
(it2) => it2.value === option2.value
)
if (~idx) {
states.createdOptions.splice(idx, 1)
createOptionCount.value--
}
}
function clearAllNewOption() {
if (enableAllowCreateMode.value) {
states.createdOptions.length = 0
createOptionCount.value = 0
}
}
return {
createNewOption,
removeNewOption,
selectNewOption,
clearAllNewOption,
}
}
const flattenOptions = (options2) => {
const flattened = []
options2.forEach((option2) => {
if (isArray$D(option2.options)) {
flattened.push({
label: option2.label,
isTitle: true,
type: 'Group',
})
option2.options.forEach((o2) => {
flattened.push(o2)
})
flattened.push({
type: 'Group',
})
} else {
flattened.push(option2)
}
})
return flattened
}
function useInput(handleInput) {
const isComposing = ref(false)
const handleCompositionStart = () => {
isComposing.value = true
}
const handleCompositionUpdate = (event) => {
const text2 = event.target.value
const lastCharacter = text2[text2.length - 1] || ''
isComposing.value = !isKorean(lastCharacter)
}
const handleCompositionEnd = (event) => {
if (isComposing.value) {
isComposing.value = false
if (isFunction$l(handleInput)) {
handleInput(event)
}
}
}
return {
handleCompositionStart,
handleCompositionUpdate,
handleCompositionEnd,
}
}
const DEFAULT_INPUT_PLACEHOLDER = ''
const MINIMUM_INPUT_WIDTH = 11
const TAG_BASE_WIDTH = {
larget: 51,
default: 42,
small: 33,
}
const COMPONENT_NAME$2 = 'ElSelectV2'
const useSelect$1 = (props2, emit2) => {
const { t: t3 } = useLocale()
const nsSelectV2 = useNamespace('select-v2')
const nsInput = useNamespace('input')
const { form: elForm, formItem: elFormItem } = useFormItem()
const { compatTeleported } = useDeprecateAppendToBody(
COMPONENT_NAME$2,
'popperAppendToBody'
)
const states = reactive({
inputValue: DEFAULT_INPUT_PLACEHOLDER,
displayInputValue: DEFAULT_INPUT_PLACEHOLDER,
calculatedWidth: 0,
cachedPlaceholder: '',
cachedOptions: [],
createdOptions: [],
createdLabel: '',
createdSelected: false,
currentPlaceholder: '',
hoveringIndex: -1,
comboBoxHovering: false,
isOnComposition: false,
isSilentBlur: false,
isComposing: false,
inputLength: 20,
selectWidth: 200,
initialInputHeight: 0,
previousQuery: null,
previousValue: '',
query: '',
selectedLabel: '',
softFocus: false,
tagInMultiLine: false,
})
const selectedIndex = ref(-1)
const popperSize = ref(-1)
const controlRef = ref(null)
const inputRef = ref(null)
const menuRef = ref(null)
const popper2 = ref(null)
const selectRef = ref(null)
const selectionRef = ref(null)
const calculatorRef = ref(null)
const expanded = ref(false)
const selectDisabled = computed(
() => props2.disabled || (elForm == null ? void 0 : elForm.disabled)
)
const popupHeight = computed(() => {
const totalHeight = filteredOptions.value.length * 34
return totalHeight > props2.height ? props2.height : totalHeight
})
const hasModelValue = computed(() => {
return (
props2.modelValue !== void 0 &&
props2.modelValue !== null &&
props2.modelValue !== ''
)
})
const showClearBtn = computed(() => {
const hasValue = props2.multiple
? Array.isArray(props2.modelValue) && props2.modelValue.length > 0
: hasModelValue.value
const criteria =
props2.clearable &&
!selectDisabled.value &&
states.comboBoxHovering &&
hasValue
return criteria
})
const iconComponent = computed(() =>
props2.remote && props2.filterable ? '' : arrowUp
)
const iconReverse = computed(
() => iconComponent.value && nsSelectV2.is('reverse', expanded.value)
)
const validateState = computed(
() => (elFormItem == null ? void 0 : elFormItem.validateState) || ''
)
const validateIcon = computed(
() => ValidateComponentsMap[validateState.value]
)
const debounce$12 = computed(() => (props2.remote ? 300 : 0))
const emptyText = computed(() => {
const options2 = filteredOptions.value
if (props2.loading) {
return props2.loadingText || t3('el.select.loading')
} else {
if (props2.remote && states.inputValue === '' && options2.length === 0)
return false
if (props2.filterable && states.inputValue && options2.length > 0) {
return props2.noMatchText || t3('el.select.noMatch')
}
if (options2.length === 0) {
return props2.noDataText || t3('el.select.noData')
}
}
return null
})
const filteredOptions = computed(() => {
const isValidOption = (o2) => {
const query = states.inputValue
const containsQueryString = query ? o2.label.includes(query) : true
return containsQueryString
}
if (props2.loading) {
return []
}
return flattenOptions(
props2.options
.concat(states.createdOptions)
.map((v4) => {
if (isArray$D(v4.options)) {
const filtered = v4.options.filter(isValidOption)
if (filtered.length > 0) {
return {
...v4,
options: filtered,
}
}
} else {
if (props2.remote || isValidOption(v4)) {
return v4
}
}
return null
})
.filter((v4) => v4 !== null)
)
})
const optionsAllDisabled = computed(() =>
filteredOptions.value.every((option2) => option2.disabled)
)
const selectSize = useSize$1()
const collapseTagSize = computed(() =>
selectSize.value === 'small' ? 'small' : 'default'
)
const tagMaxWidth = computed(() => {
const select2 = selectionRef.value
const size = collapseTagSize.value || 'default'
const paddingLeft2 = select2
? Number.parseInt(getComputedStyle(select2).paddingLeft)
: 0
const paddingRight2 = select2
? Number.parseInt(getComputedStyle(select2).paddingRight)
: 0
return (
states.selectWidth - paddingRight2 - paddingLeft2 - TAG_BASE_WIDTH[size]
)
})
const calculatePopperSize = () => {
var _a2, _b2, _c2
popperSize.value =
((_c2 =
(_b2 =
(_a2 = selectRef.value) == null
? void 0
: _a2.getBoundingClientRect) == null
? void 0
: _b2.call(_a2)) == null
? void 0
: _c2.width) || 200
}
const inputWrapperStyle = computed(() => {
return {
width: `${
states.calculatedWidth === 0
? MINIMUM_INPUT_WIDTH
: Math.ceil(states.calculatedWidth) + MINIMUM_INPUT_WIDTH
}px`,
}
})
const shouldShowPlaceholder = computed(() => {
if (isArray$D(props2.modelValue)) {
return props2.modelValue.length === 0 && !states.displayInputValue
}
return props2.filterable ? states.displayInputValue.length === 0 : true
})
const currentPlaceholder = computed(() => {
const _placeholder = props2.placeholder || t3('el.select.placeholder')
return props2.multiple ? _placeholder : states.selectedLabel || _placeholder
})
const popperRef = computed(() => {
var _a2, _b2
return (_b2 = (_a2 = popper2.value) == null ? void 0 : _a2.popperRef) ==
null
? void 0
: _b2.contentRef
})
const indexRef = computed(() => {
if (props2.multiple) {
const len2 = props2.modelValue.length
if (props2.modelValue.length > 0) {
return filteredOptions.value.findIndex(
(o2) => o2.value === props2.modelValue[len2 - 1]
)
}
} else {
if (props2.modelValue) {
return filteredOptions.value.findIndex(
(o2) => o2.value === props2.modelValue
)
}
}
return -1
})
const dropdownMenuVisible = computed(() => {
return expanded.value && emptyText.value !== false
})
const {
createNewOption,
removeNewOption,
selectNewOption,
clearAllNewOption,
} = useAllowCreate(props2, states)
const {
handleCompositionStart,
handleCompositionUpdate,
handleCompositionEnd,
} = useInput((e2) => onInput(e2))
const focusAndUpdatePopup = () => {
var _a2, _b2, _c2
;(_b2 = (_a2 = inputRef.value).focus) == null ? void 0 : _b2.call(_a2)
;(_c2 = popper2.value) == null ? void 0 : _c2.updatePopper()
}
const toggleMenu = () => {
if (props2.automaticDropdown) return
if (!selectDisabled.value) {
if (states.isComposing) states.softFocus = true
return nextTick(() => {
var _a2, _b2
expanded.value = !expanded.value
;(_b2 = (_a2 = inputRef.value) == null ? void 0 : _a2.focus) == null
? void 0
: _b2.call(_a2)
})
}
}
const onInputChange = () => {
if (props2.filterable && states.inputValue !== states.selectedLabel) {
states.query = states.selectedLabel
}
handleQueryChange(states.inputValue)
return nextTick(() => {
createNewOption(states.inputValue)
})
}
const debouncedOnInputChange = debounce$3(onInputChange, debounce$12.value)
const handleQueryChange = (val2) => {
if (states.previousQuery === val2) {
return
}
states.previousQuery = val2
if (props2.filterable && isFunction$l(props2.filterMethod)) {
props2.filterMethod(val2)
} else if (
props2.filterable &&
props2.remote &&
isFunction$l(props2.remoteMethod)
) {
props2.remoteMethod(val2)
}
}
const emitChange = (val2) => {
if (!isEqual$4(props2.modelValue, val2)) {
emit2(CHANGE_EVENT, val2)
}
}
const update3 = (val2) => {
emit2(UPDATE_MODEL_EVENT, val2)
emitChange(val2)
states.previousValue = val2.toString()
}
const getValueIndex = (arr = [], value2) => {
if (!isObject$v(value2)) {
return arr.indexOf(value2)
}
const valueKey = props2.valueKey
let index2 = -1
arr.some((item2, i2) => {
if (get$a(item2, valueKey) === get$a(value2, valueKey)) {
index2 = i2
return true
}
return false
})
return index2
}
const getValueKey = (item2) => {
return isObject$v(item2) ? get$a(item2, props2.valueKey) : item2
}
const getLabel = (item2) => {
return isObject$v(item2) ? item2.label : item2
}
const resetInputHeight = () => {
if (props2.collapseTags && !props2.filterable) {
return
}
return nextTick(() => {
var _a2, _b2
if (!inputRef.value) return
const selection = selectionRef.value
selectRef.value.height = selection.offsetHeight
if (expanded.value && emptyText.value !== false) {
;(_b2 = (_a2 = popper2.value) == null ? void 0 : _a2.updatePopper) ==
null
? void 0
: _b2.call(_a2)
}
})
}
const handleResize = () => {
var _a2, _b2
resetInputWidth()
calculatePopperSize()
;(_b2 = (_a2 = popper2.value) == null ? void 0 : _a2.updatePopper) == null
? void 0
: _b2.call(_a2)
if (props2.multiple) {
return resetInputHeight()
}
}
const resetInputWidth = () => {
const select2 = selectionRef.value
if (select2) {
states.selectWidth = select2.getBoundingClientRect().width
}
}
const onSelect = (option2, idx, byClick = true) => {
var _a2, _b2
if (props2.multiple) {
let selectedOptions = props2.modelValue.slice()
const index2 = getValueIndex(selectedOptions, getValueKey(option2))
if (index2 > -1) {
selectedOptions = [
...selectedOptions.slice(0, index2),
...selectedOptions.slice(index2 + 1),
]
states.cachedOptions.splice(index2, 1)
removeNewOption(option2)
} else if (
props2.multipleLimit <= 0 ||
selectedOptions.length < props2.multipleLimit
) {
selectedOptions = [...selectedOptions, getValueKey(option2)]
states.cachedOptions.push(option2)
selectNewOption(option2)
updateHoveringIndex(idx)
}
update3(selectedOptions)
if (option2.created) {
states.query = ''
handleQueryChange('')
states.inputLength = 20
}
if (props2.filterable && !props2.reserveKeyword) {
;(_b2 = (_a2 = inputRef.value).focus) == null ? void 0 : _b2.call(_a2)
onUpdateInputValue('')
}
if (props2.filterable) {
states.calculatedWidth =
calculatorRef.value.getBoundingClientRect().width
}
resetInputHeight()
setSoftFocus()
} else {
selectedIndex.value = idx
states.selectedLabel = option2.label
update3(getValueKey(option2))
expanded.value = false
states.isComposing = false
states.isSilentBlur = byClick
selectNewOption(option2)
if (!option2.created) {
clearAllNewOption()
}
updateHoveringIndex(idx)
}
}
const deleteTag = (event, tag) => {
const { valueKey } = props2
const index2 = props2.modelValue.indexOf(get$a(tag, valueKey))
if (index2 > -1 && !selectDisabled.value) {
const value2 = [
...props2.modelValue.slice(0, index2),
...props2.modelValue.slice(index2 + 1),
]
states.cachedOptions.splice(index2, 1)
update3(value2)
emit2('remove-tag', get$a(tag, valueKey))
states.softFocus = true
removeNewOption(tag)
return nextTick(focusAndUpdatePopup)
}
event.stopPropagation()
}
const handleFocus = (event) => {
const focused = states.isComposing
states.isComposing = true
if (!states.softFocus) {
if (!focused) emit2('focus', event)
} else {
states.softFocus = false
}
}
const handleBlur = () => {
states.softFocus = false
return nextTick(() => {
var _a2, _b2
;(_b2 = (_a2 = inputRef.value) == null ? void 0 : _a2.blur) == null
? void 0
: _b2.call(_a2)
if (calculatorRef.value) {
states.calculatedWidth =
calculatorRef.value.getBoundingClientRect().width
}
if (states.isSilentBlur) {
states.isSilentBlur = false
} else {
if (states.isComposing) {
emit2('blur')
}
}
states.isComposing = false
})
}
const handleEsc = () => {
if (states.displayInputValue.length > 0) {
onUpdateInputValue('')
} else {
expanded.value = false
}
}
const handleDel = (e2) => {
if (states.displayInputValue.length === 0) {
e2.preventDefault()
const selected = props2.modelValue.slice()
selected.pop()
removeNewOption(states.cachedOptions.pop())
update3(selected)
}
}
const handleClear = () => {
let emptyValue
if (isArray$D(props2.modelValue)) {
emptyValue = []
} else {
emptyValue = ''
}
states.softFocus = true
if (props2.multiple) {
states.cachedOptions = []
} else {
states.selectedLabel = ''
}
expanded.value = false
update3(emptyValue)
emit2('clear')
clearAllNewOption()
return nextTick(focusAndUpdatePopup)
}
const onUpdateInputValue = (val2) => {
states.displayInputValue = val2
states.inputValue = val2
}
const onKeyboardNavigate = (direction2, hoveringIndex = void 0) => {
const options2 = filteredOptions.value
if (
!['forward', 'backward'].includes(direction2) ||
selectDisabled.value ||
options2.length <= 0 ||
optionsAllDisabled.value
) {
return
}
if (!expanded.value) {
return toggleMenu()
}
if (hoveringIndex === void 0) {
hoveringIndex = states.hoveringIndex
}
let newIndex2 = -1
if (direction2 === 'forward') {
newIndex2 = hoveringIndex + 1
if (newIndex2 >= options2.length) {
newIndex2 = 0
}
} else if (direction2 === 'backward') {
newIndex2 = hoveringIndex - 1
if (newIndex2 < 0) {
newIndex2 = options2.length - 1
}
}
const option2 = options2[newIndex2]
if (option2.disabled || option2.type === 'Group') {
return onKeyboardNavigate(direction2, newIndex2)
} else {
updateHoveringIndex(newIndex2)
scrollToItem(newIndex2)
}
}
const onKeyboardSelect = () => {
if (!expanded.value) {
return toggleMenu()
} else if (
~states.hoveringIndex &&
filteredOptions.value[states.hoveringIndex]
) {
onSelect(
filteredOptions.value[states.hoveringIndex],
states.hoveringIndex,
false
)
}
}
const updateHoveringIndex = (idx) => {
states.hoveringIndex = idx
}
const resetHoveringIndex = () => {
states.hoveringIndex = -1
}
const setSoftFocus = () => {
var _a2
const _input = inputRef.value
if (_input) {
;(_a2 = _input.focus) == null ? void 0 : _a2.call(_input)
}
}
const onInput = (event) => {
const value2 = event.target.value
onUpdateInputValue(value2)
if (states.displayInputValue.length > 0 && !expanded.value) {
expanded.value = true
}
states.calculatedWidth = calculatorRef.value.getBoundingClientRect().width
if (props2.multiple) {
resetInputHeight()
}
if (props2.remote) {
debouncedOnInputChange()
} else {
return onInputChange()
}
}
const handleClickOutside = () => {
expanded.value = false
return handleBlur()
}
const handleMenuEnter = () => {
states.inputValue = states.displayInputValue
return nextTick(() => {
if (~indexRef.value) {
updateHoveringIndex(indexRef.value)
scrollToItem(states.hoveringIndex)
}
})
}
const scrollToItem = (index2) => {
menuRef.value.scrollToItem(index2)
}
const initStates = () => {
resetHoveringIndex()
if (props2.multiple) {
if (props2.modelValue.length > 0) {
let initHovering = false
states.cachedOptions.length = 0
states.previousValue = props2.modelValue.toString()
props2.modelValue.forEach((selected) => {
const itemIndex = filteredOptions.value.findIndex(
(option2) => getValueKey(option2) === selected
)
if (~itemIndex) {
states.cachedOptions.push(filteredOptions.value[itemIndex])
if (!initHovering) {
updateHoveringIndex(itemIndex)
}
initHovering = true
}
})
} else {
states.cachedOptions = []
states.previousValue = ''
}
} else {
if (hasModelValue.value) {
states.previousValue = props2.modelValue
const options2 = filteredOptions.value
const selectedItemIndex = options2.findIndex(
(option2) => getValueKey(option2) === getValueKey(props2.modelValue)
)
if (~selectedItemIndex) {
states.selectedLabel = options2[selectedItemIndex].label
updateHoveringIndex(selectedItemIndex)
} else {
states.selectedLabel = `${props2.modelValue}`
}
} else {
states.selectedLabel = ''
states.previousValue = ''
}
}
calculatePopperSize()
}
watch$1(expanded, (val2) => {
var _a2, _b2
emit2('visible-change', val2)
if (val2) {
;(_b2 = (_a2 = popper2.value).update) == null ? void 0 : _b2.call(_a2)
} else {
states.displayInputValue = ''
createNewOption('')
}
})
watch$1(
() => props2.modelValue,
(val2, oldVal) => {
var _a2
if (!val2 || val2.toString() !== states.previousValue) {
initStates()
}
if (!isEqual$4(val2, oldVal)) {
;(_a2 = elFormItem == null ? void 0 : elFormItem.validate) == null
? void 0
: _a2.call(elFormItem, 'change').catch((err) => debugWarn())
}
},
{
deep: true,
}
)
watch$1(
() => props2.options,
() => {
const input = inputRef.value
if (!input || (input && document.activeElement !== input)) {
initStates()
}
},
{
deep: true,
}
)
watch$1(filteredOptions, () => {
return nextTick(menuRef.value.resetScrollTop)
})
onMounted(() => {
initStates()
addResizeListener(selectRef.value, handleResize)
})
onBeforeMount(() => {
removeResizeListener(selectRef.value, handleResize)
})
return {
collapseTagSize,
currentPlaceholder,
expanded,
emptyText,
popupHeight,
debounce: debounce$12,
filteredOptions,
iconComponent,
iconReverse,
inputWrapperStyle,
popperSize,
dropdownMenuVisible,
hasModelValue,
shouldShowPlaceholder,
selectDisabled,
selectSize,
showClearBtn,
states,
tagMaxWidth,
nsSelectV2,
nsInput,
calculatorRef,
controlRef,
inputRef,
menuRef,
popper: popper2,
selectRef,
selectionRef,
popperRef,
validateState,
validateIcon,
compatTeleported,
debouncedOnInputChange,
deleteTag,
getLabel,
getValueKey,
handleBlur,
handleClear,
handleClickOutside,
handleDel,
handleEsc,
handleFocus,
handleMenuEnter,
handleResize,
toggleMenu,
scrollTo: scrollToItem,
onInput,
onKeyboardNavigate,
onKeyboardSelect,
onSelect,
onHover: updateHoveringIndex,
onUpdateInputValue,
handleCompositionStart,
handleCompositionEnd,
handleCompositionUpdate,
}
}
const _sfc_main$7F = defineComponent({
name: 'ElSelectV2',
components: {
ElSelectMenu,
ElTag,
ElTooltip,
ElIcon,
},
directives: { ClickOutside, ModelText: vModelText },
props: SelectProps,
emits: [
UPDATE_MODEL_EVENT,
CHANGE_EVENT,
'remove-tag',
'clear',
'visible-change',
'focus',
'blur',
],
setup(props2, { emit: emit2 }) {
const API = useSelect$1(props2, emit2)
provide(selectV2InjectionKey, {
props: reactive({
...toRefs$2(props2),
height: API.popupHeight,
}),
onSelect: API.onSelect,
onHover: API.onHover,
onKeyboardNavigate: API.onKeyboardNavigate,
onKeyboardSelect: API.onKeyboardSelect,
})
return API
},
})
const _hoisted_1$6f = { key: 0 }
const _hoisted_2$57 = [
'id',
'autocomplete',
'aria-expanded',
'aria-labelledby',
'disabled',
'readonly',
'name',
'unselectable',
]
const _hoisted_3$4A = ['textContent']
const _hoisted_4$3_ = [
'id',
'aria-labelledby',
'aria-expanded',
'autocomplete',
'disabled',
'name',
'readonly',
'unselectable',
]
const _hoisted_5$3A = ['textContent']
function _sfc_render$C(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_tag = resolveComponent('el-tag')
const _component_el_tooltip = resolveComponent('el-tooltip')
const _component_el_icon = resolveComponent('el-icon')
const _component_el_select_menu = resolveComponent('el-select-menu')
const _directive_model_text = resolveDirective('model-text')
const _directive_click_outside = resolveDirective('click-outside')
return withDirectives(
(openBlock(),
createElementBlock(
'div',
{
ref: 'selectRef',
class: normalizeClass([
_ctx.nsSelectV2.b(),
_ctx.nsSelectV2.m(_ctx.selectSize),
]),
onClick:
_cache[24] ||
(_cache[24] = withModifiers(
(...args) => _ctx.toggleMenu && _ctx.toggleMenu(...args),
['stop']
)),
onMouseenter:
_cache[25] ||
(_cache[25] = ($event) => (_ctx.states.comboBoxHovering = true)),
onMouseleave:
_cache[26] ||
(_cache[26] = ($event) => (_ctx.states.comboBoxHovering = false)),
},
[
createVNode$1(
_component_el_tooltip,
{
ref: 'popper',
visible: _ctx.dropdownMenuVisible,
'onUpdate:visible':
_cache[22] ||
(_cache[22] = ($event) => (_ctx.dropdownMenuVisible = $event)),
teleported: _ctx.compatTeleported,
'popper-class': [_ctx.nsSelectV2.e('popper'), _ctx.popperClass],
'gpu-acceleration': false,
'stop-popper-mouse-event': false,
'popper-options': _ctx.popperOptions,
'fallback-placements': [
'bottom-start',
'top-start',
'right',
'left',
],
effect: _ctx.effect,
placement: 'bottom-start',
pure: '',
transition: `${_ctx.nsSelectV2.namespace.value}-zoom-in-top`,
trigger: 'click',
persistent: _ctx.persistent,
onBeforeShow: _ctx.handleMenuEnter,
onHide:
_cache[23] ||
(_cache[23] = ($event) =>
(_ctx.states.inputValue = _ctx.states.displayInputValue)),
},
{
default: withCtx(() => {
var _a2
return [
createElementVNode(
'div',
{
ref: 'selectionRef',
class: normalizeClass([
_ctx.nsSelectV2.e('wrapper'),
_ctx.nsSelectV2.is('focused', _ctx.states.isComposing),
_ctx.nsSelectV2.is(
'hovering',
_ctx.states.comboBoxHovering
),
_ctx.nsSelectV2.is('filterable', _ctx.filterable),
_ctx.nsSelectV2.is('disabled', _ctx.selectDisabled),
]),
},
[
_ctx.$slots.prefix
? (openBlock(),
createElementBlock('div', _hoisted_1$6f, [
renderSlot(_ctx.$slots, 'prefix'),
]))
: createCommentVNode('v-if', true),
_ctx.multiple
? (openBlock(),
createElementBlock(
'div',
{
key: 1,
class: normalizeClass(
_ctx.nsSelectV2.e('selection')
),
},
[
_ctx.collapseTags && _ctx.modelValue.length > 0
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass(
_ctx.nsSelectV2.e('selected-item')
),
},
[
createVNode$1(
_component_el_tag,
{
closable:
!_ctx.selectDisabled &&
!((_a2 =
_ctx.states.cachedOptions[0]) ==
null
? void 0
: _a2.disable),
size: _ctx.collapseTagSize,
type: 'info',
'disable-transitions': '',
onClose:
_cache[0] ||
(_cache[0] = ($event) =>
_ctx.deleteTag(
$event,
_ctx.states.cachedOptions[0]
)),
},
{
default: withCtx(() => {
var _a22
return [
createElementVNode(
'span',
{
class: normalizeClass(
_ctx.nsSelectV2.e('tags-text')
),
style: normalizeStyle$1({
maxWidth: `${_ctx.tagMaxWidth}px`,
}),
},
toDisplayString$1(
(_a22 =
_ctx.states
.cachedOptions[0]) == null
? void 0
: _a22.label
),
7
),
]
}),
_: 1,
},
8,
['closable', 'size']
),
_ctx.modelValue.length > 1
? (openBlock(),
createBlock(
_component_el_tag,
{
key: 0,
closable: false,
size: _ctx.collapseTagSize,
type: 'info',
'disable-transitions': '',
},
{
default: withCtx(() => [
_ctx.collapseTagsTooltip
? (openBlock(),
createBlock(
_component_el_tooltip,
{
key: 0,
disabled:
_ctx.dropdownMenuVisible,
'fallback-placements': [
'bottom',
'top',
'right',
'left',
],
effect: _ctx.effect,
placement: 'bottom',
teleported: false,
},
{
default: withCtx(() => [
createElementVNode(
'span',
{
class:
normalizeClass(
_ctx.nsSelectV2.e(
'tags-text'
)
),
style:
normalizeStyle$1({
maxWidth: `${_ctx.tagMaxWidth}px`,
}),
},
'+ ' +
toDisplayString$1(
_ctx.modelValue
.length - 1
),
7
),
]),
content: withCtx(() => [
createElementVNode(
'div',
{
class:
normalizeClass(
_ctx.nsSelectV2.e(
'selection'
)
),
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
_ctx.states
.cachedOptions,
(
selected,
idx
) => {
return (
openBlock(),
createElementBlock(
'div',
{
key: idx,
class:
normalizeClass(
_ctx.nsSelectV2.e(
'selected-item'
)
),
},
[
(openBlock(),
createBlock(
_component_el_tag,
{
key: _ctx.getValueKey(
selected
),
closable:
!_ctx.selectDisabled &&
!selected.disabled,
size: _ctx.collapseTagSize,
class:
'in-tooltip',
type: 'info',
'disable-transitions':
'',
onClose:
(
$event
) =>
_ctx.deleteTag(
$event,
selected
),
},
{
default:
withCtx(
() => [
createElementVNode(
'span',
{
class:
normalizeClass(
_ctx.nsSelectV2.e(
'tags-text'
)
),
style:
normalizeStyle$1(
{
maxWidth: `${_ctx.tagMaxWidth}px`,
}
),
},
toDisplayString$1(
_ctx.getLabel(
selected
)
),
7
),
]
),
_: 2,
},
1032,
[
'closable',
'size',
'onClose',
]
)),
],
2
)
)
}
),
128
)),
],
2
),
]),
_: 1,
},
8,
['disabled', 'effect']
))
: (openBlock(),
createElementBlock(
'span',
{
key: 1,
class: normalizeClass(
_ctx.nsSelectV2.e(
'tags-text'
)
),
style: normalizeStyle$1({
maxWidth: `${_ctx.tagMaxWidth}px`,
}),
},
'+ ' +
toDisplayString$1(
_ctx.modelValue.length -
1
),
7
)),
]),
_: 1,
},
8,
['size']
))
: createCommentVNode('v-if', true),
],
2
))
: (openBlock(true),
createElementBlock(
Fragment,
{ key: 1 },
renderList(
_ctx.states.cachedOptions,
(selected, idx) => {
return (
openBlock(),
createElementBlock(
'div',
{
key: idx,
class: normalizeClass(
_ctx.nsSelectV2.e('selected-item')
),
},
[
(openBlock(),
createBlock(
_component_el_tag,
{
key: _ctx.getValueKey(selected),
closable:
!_ctx.selectDisabled &&
!selected.disabled,
size: _ctx.collapseTagSize,
type: 'info',
'disable-transitions': '',
onClose: ($event) =>
_ctx.deleteTag(
$event,
selected
),
},
{
default: withCtx(() => [
createElementVNode(
'span',
{
class: normalizeClass(
_ctx.nsSelectV2.e(
'tags-text'
)
),
style: normalizeStyle$1({
maxWidth: `${_ctx.tagMaxWidth}px`,
}),
},
toDisplayString$1(
_ctx.getLabel(selected)
),
7
),
]),
_: 2,
},
1032,
['closable', 'size', 'onClose']
)),
],
2
)
)
}
),
128
)),
createElementVNode(
'div',
{
class: normalizeClass([
_ctx.nsSelectV2.e('selected-item'),
_ctx.nsSelectV2.e('input-wrapper'),
]),
style: normalizeStyle$1(_ctx.inputWrapperStyle),
},
[
withDirectives(
createElementVNode(
'input',
{
id: _ctx.id,
ref: 'inputRef',
autocomplete: _ctx.autocomplete,
'aria-autocomplete': 'list',
'aria-haspopup': 'listbox',
autocapitalize: 'off',
'aria-expanded': _ctx.expanded,
'aria-labelledby': _ctx.label,
class: normalizeClass([
_ctx.nsSelectV2.is(_ctx.selectSize),
_ctx.nsSelectV2.e('combobox-input'),
]),
disabled: _ctx.disabled,
role: 'combobox',
readonly: !_ctx.filterable,
spellcheck: 'false',
type: 'text',
name: _ctx.name,
unselectable: _ctx.expanded
? 'on'
: void 0,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = (...args) =>
_ctx.onUpdateInputValue &&
_ctx.onUpdateInputValue(...args)),
onFocus:
_cache[2] ||
(_cache[2] = (...args) =>
_ctx.handleFocus &&
_ctx.handleFocus(...args)),
onInput:
_cache[3] ||
(_cache[3] = (...args) =>
_ctx.onInput &&
_ctx.onInput(...args)),
onCompositionstart:
_cache[4] ||
(_cache[4] = (...args) =>
_ctx.handleCompositionStart &&
_ctx.handleCompositionStart(...args)),
onCompositionupdate:
_cache[5] ||
(_cache[5] = (...args) =>
_ctx.handleCompositionUpdate &&
_ctx.handleCompositionUpdate(
...args
)),
onCompositionend:
_cache[6] ||
(_cache[6] = (...args) =>
_ctx.handleCompositionEnd &&
_ctx.handleCompositionEnd(...args)),
onKeydown: [
_cache[7] ||
(_cache[7] = withKeys(
withModifiers(
($event) =>
_ctx.onKeyboardNavigate(
'backward'
),
['stop', 'prevent']
),
['up']
)),
_cache[8] ||
(_cache[8] = withKeys(
withModifiers(
($event) =>
_ctx.onKeyboardNavigate(
'forward'
),
['stop', 'prevent']
),
['down']
)),
_cache[9] ||
(_cache[9] = withKeys(
withModifiers(
(...args) =>
_ctx.onKeyboardSelect &&
_ctx.onKeyboardSelect(...args),
['stop', 'prevent']
),
['enter']
)),
_cache[10] ||
(_cache[10] = withKeys(
withModifiers(
(...args) =>
_ctx.handleEsc &&
_ctx.handleEsc(...args),
['stop', 'prevent']
),
['esc']
)),
_cache[11] ||
(_cache[11] = withKeys(
withModifiers(
(...args) =>
_ctx.handleDel &&
_ctx.handleDel(...args),
['stop']
),
['delete']
)),
],
},
null,
42,
_hoisted_2$57
),
[
[
_directive_model_text,
_ctx.states.displayInputValue,
],
]
),
_ctx.filterable
? (openBlock(),
createElementBlock(
'span',
{
key: 0,
ref: 'calculatorRef',
'aria-hidden': 'true',
class: normalizeClass(
_ctx.nsSelectV2.e('input-calculator')
),
textContent: toDisplayString$1(
_ctx.states.displayInputValue
),
},
null,
10,
_hoisted_3$4A
))
: createCommentVNode('v-if', true),
],
6
),
],
2
))
: (openBlock(),
createElementBlock(
Fragment,
{ key: 2 },
[
createElementVNode(
'div',
{
class: normalizeClass([
_ctx.nsSelectV2.e('selected-item'),
_ctx.nsSelectV2.e('input-wrapper'),
]),
},
[
withDirectives(
createElementVNode(
'input',
{
id: _ctx.id,
ref: 'inputRef',
'aria-autocomplete': 'list',
'aria-haspopup': 'listbox',
'aria-labelledby': _ctx.label,
'aria-expanded': _ctx.expanded,
autocapitalize: 'off',
autocomplete: _ctx.autocomplete,
class: normalizeClass(
_ctx.nsSelectV2.e('combobox-input')
),
disabled: _ctx.disabled,
name: _ctx.name,
role: 'combobox',
readonly: !_ctx.filterable,
spellcheck: 'false',
type: 'text',
unselectable: _ctx.expanded
? 'on'
: void 0,
onCompositionstart:
_cache[12] ||
(_cache[12] = (...args) =>
_ctx.handleCompositionStart &&
_ctx.handleCompositionStart(...args)),
onCompositionupdate:
_cache[13] ||
(_cache[13] = (...args) =>
_ctx.handleCompositionUpdate &&
_ctx.handleCompositionUpdate(
...args
)),
onCompositionend:
_cache[14] ||
(_cache[14] = (...args) =>
_ctx.handleCompositionEnd &&
_ctx.handleCompositionEnd(...args)),
onFocus:
_cache[15] ||
(_cache[15] = (...args) =>
_ctx.handleFocus &&
_ctx.handleFocus(...args)),
onInput:
_cache[16] ||
(_cache[16] = (...args) =>
_ctx.onInput &&
_ctx.onInput(...args)),
onKeydown: [
_cache[17] ||
(_cache[17] = withKeys(
withModifiers(
($event) =>
_ctx.onKeyboardNavigate(
'backward'
),
['stop', 'prevent']
),
['up']
)),
_cache[18] ||
(_cache[18] = withKeys(
withModifiers(
($event) =>
_ctx.onKeyboardNavigate(
'forward'
),
['stop', 'prevent']
),
['down']
)),
_cache[19] ||
(_cache[19] = withKeys(
withModifiers(
(...args) =>
_ctx.onKeyboardSelect &&
_ctx.onKeyboardSelect(...args),
['stop', 'prevent']
),
['enter']
)),
_cache[20] ||
(_cache[20] = withKeys(
withModifiers(
(...args) =>
_ctx.handleEsc &&
_ctx.handleEsc(...args),
['stop', 'prevent']
),
['esc']
)),
],
'onUpdate:modelValue':
_cache[21] ||
(_cache[21] = (...args) =>
_ctx.onUpdateInputValue &&
_ctx.onUpdateInputValue(...args)),
},
null,
42,
_hoisted_4$3_
),
[
[
_directive_model_text,
_ctx.states.displayInputValue,
],
]
),
],
2
),
_ctx.filterable
? (openBlock(),
createElementBlock(
'span',
{
key: 0,
ref: 'calculatorRef',
'aria-hidden': 'true',
class: normalizeClass([
_ctx.nsSelectV2.e('selected-item'),
_ctx.nsSelectV2.e('input-calculator'),
]),
textContent: toDisplayString$1(
_ctx.states.displayInputValue
),
},
null,
10,
_hoisted_5$3A
))
: createCommentVNode('v-if', true),
],
64
)),
_ctx.shouldShowPlaceholder
? (openBlock(),
createElementBlock(
'span',
{
key: 3,
class: normalizeClass([
_ctx.nsSelectV2.e('placeholder'),
_ctx.nsSelectV2.is(
'transparent',
_ctx.states.isComposing ||
(_ctx.placeholder && _ctx.multiple
? _ctx.modelValue.length === 0
: !_ctx.hasModelValue)
),
]),
},
toDisplayString$1(_ctx.currentPlaceholder),
3
))
: createCommentVNode('v-if', true),
createElementVNode(
'span',
{
class: normalizeClass(_ctx.nsSelectV2.e('suffix')),
},
[
_ctx.iconComponent
? withDirectives(
(openBlock(),
createBlock(
_component_el_icon,
{
key: 0,
class: normalizeClass([
_ctx.nsSelectV2.e('caret'),
_ctx.nsInput.e('icon'),
_ctx.iconReverse,
]),
},
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(
_ctx.iconComponent
)
)),
]),
_: 1,
},
8,
['class']
)),
[[vShow, !_ctx.showClearBtn]]
)
: createCommentVNode('v-if', true),
_ctx.showClearBtn && _ctx.clearIcon
? (openBlock(),
createBlock(
_component_el_icon,
{
key: 1,
class: normalizeClass([
_ctx.nsSelectV2.e('caret'),
_ctx.nsInput.e('icon'),
]),
onClick: withModifiers(_ctx.handleClear, [
'prevent',
'stop',
]),
},
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(_ctx.clearIcon)
)),
]),
_: 1,
},
8,
['class', 'onClick']
))
: createCommentVNode('v-if', true),
_ctx.validateState && _ctx.validateIcon
? (openBlock(),
createBlock(
_component_el_icon,
{
key: 2,
class: normalizeClass([
_ctx.nsInput.e('icon'),
_ctx.nsInput.e('validateIcon'),
]),
},
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(_ctx.validateIcon)
)),
]),
_: 1,
},
8,
['class']
))
: createCommentVNode('v-if', true),
],
2
),
],
2
),
]
}),
content: withCtx(() => [
createVNode$1(
_component_el_select_menu,
{
ref: 'menuRef',
data: _ctx.filteredOptions,
width: _ctx.popperSize,
'hovering-index': _ctx.states.hoveringIndex,
'scrollbar-always-on': _ctx.scrollbarAlwaysOn,
},
{
default: withCtx((scope) => [
renderSlot(
_ctx.$slots,
'default',
normalizeProps(guardReactiveProps(scope))
),
]),
empty: withCtx(() => [
renderSlot(_ctx.$slots, 'empty', {}, () => [
createElementVNode(
'p',
{
class: normalizeClass(_ctx.nsSelectV2.e('empty')),
},
toDisplayString$1(_ctx.emptyText ? _ctx.emptyText : ''),
3
),
]),
]),
_: 3,
},
8,
['data', 'width', 'hovering-index', 'scrollbar-always-on']
),
]),
_: 3,
},
8,
[
'visible',
'teleported',
'popper-class',
'popper-options',
'effect',
'transition',
'persistent',
'onBeforeShow',
]
),
],
34
)),
[[_directive_click_outside, _ctx.handleClickOutside, _ctx.popperRef]]
)
}
var Select$2 = /* @__PURE__ */ _export_sfc$1(_sfc_main$7F, [
['render', _sfc_render$C],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/select-v2/src/select.vue',
],
])
Select$2.install = (app2) => {
app2.component(Select$2.name, Select$2)
}
const _Select = Select$2
const ElSelectV2 = _Select
const skeletonProps = buildProps({
animated: {
type: Boolean,
default: false,
},
count: {
type: Number,
default: 1,
},
rows: {
type: Number,
default: 3,
},
loading: {
type: Boolean,
default: true,
},
throttle: {
type: Number,
},
})
const skeletonItemProps = buildProps({
variant: {
type: String,
values: [
'circle',
'rect',
'h1',
'h3',
'text',
'caption',
'p',
'image',
'button',
],
default: 'text',
},
})
const __default__$f = {
name: 'ElSkeletonItem',
}
const _sfc_main$7E = /* @__PURE__ */ defineComponent({
...__default__$f,
props: skeletonItemProps,
setup(__props2) {
const ns = useNamespace('skeleton')
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
unref(ns).e('item'),
unref(ns).e(_ctx.variant),
]),
},
[
_ctx.variant === 'image'
? (openBlock(), createBlock(unref(pictureFilled), { key: 0 }))
: createCommentVNode('v-if', true),
],
2
)
)
}
},
})
var SkeletonItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$7E, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/skeleton/src/skeleton-item.vue',
],
])
const __default__$e = {
name: 'ElSkeleton',
}
const _sfc_main$7D = /* @__PURE__ */ defineComponent({
...__default__$e,
props: skeletonProps,
setup(__props2, { expose }) {
const props2 = __props2
const ns = useNamespace('skeleton')
const uiLoading = useThrottleRender(
toRef(props2, 'loading'),
props2.throttle
)
expose({
uiLoading,
})
return (_ctx, _cache) => {
return unref(uiLoading)
? (openBlock(),
createElementBlock(
'div',
mergeProps(
{
key: 0,
class: [unref(ns).b(), unref(ns).is('animated', _ctx.animated)],
},
_ctx.$attrs
),
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.count, (i2) => {
return (
openBlock(),
createElementBlock(
Fragment,
{ key: i2 },
[
_ctx.loading
? renderSlot(
_ctx.$slots,
'template',
{ key: i2 },
() => [
createVNode$1(
SkeletonItem,
{
class: normalizeClass(
unref(ns).is('first')
),
variant: 'p',
},
null,
8,
['class']
),
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.rows, (item2) => {
return (
openBlock(),
createBlock(
SkeletonItem,
{
key: item2,
class: normalizeClass([
unref(ns).e('paragraph'),
unref(ns).is(
'last',
item2 === _ctx.rows &&
_ctx.rows > 1
),
]),
variant: 'p',
},
null,
8,
['class']
)
)
}),
128
)),
]
)
: createCommentVNode('v-if', true),
],
64
)
)
}),
128
)),
],
16
))
: renderSlot(
_ctx.$slots,
'default',
normalizeProps(mergeProps({ key: 1 }, _ctx.$attrs))
)
}
},
})
var Skeleton = /* @__PURE__ */ _export_sfc$1(_sfc_main$7D, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/skeleton/src/skeleton.vue',
],
])
const ElSkeleton = withInstall(Skeleton, {
SkeletonItem,
})
const ElSkeletonItem = withNoopInstall(SkeletonItem)
const useTooltip = (props2, formatTooltip, showTooltip2) => {
const tooltip = ref(null)
const tooltipVisible = ref(false)
const enableFormat = computed(() => {
return formatTooltip.value instanceof Function
})
const formatValue = computed(() => {
return (
(enableFormat.value && formatTooltip.value(props2.modelValue)) ||
props2.modelValue
)
})
const displayTooltip = debounce$3(() => {
showTooltip2.value && (tooltipVisible.value = true)
}, 50)
const hideTooltip = debounce$3(() => {
showTooltip2.value && (tooltipVisible.value = false)
}, 50)
return {
tooltip,
tooltipVisible,
formatValue,
displayTooltip,
hideTooltip,
}
}
const useSliderButton = (props2, initData, emit2) => {
const {
disabled,
min: min3,
max: max3,
step,
showTooltip: showTooltip2,
precision,
sliderSize,
formatTooltip,
emitChange,
resetSize,
updateDragging,
} = inject('SliderProvider')
const { tooltip, tooltipVisible, formatValue, displayTooltip, hideTooltip } =
useTooltip(props2, formatTooltip, showTooltip2)
const currentPosition = computed(() => {
return `${
((props2.modelValue - min3.value) / (max3.value - min3.value)) * 100
}%`
})
const wrapperStyle = computed(() => {
return props2.vertical
? { bottom: currentPosition.value }
: { left: currentPosition.value }
})
const handleMouseEnter = () => {
initData.hovering = true
displayTooltip()
}
const handleMouseLeave = () => {
initData.hovering = false
if (!initData.dragging) {
hideTooltip()
}
}
const onButtonDown = (event) => {
if (disabled.value) return
event.preventDefault()
onDragStart(event)
on$2(window, 'mousemove', onDragging)
on$2(window, 'touchmove', onDragging)
on$2(window, 'mouseup', onDragEnd)
on$2(window, 'touchend', onDragEnd)
on$2(window, 'contextmenu', onDragEnd)
}
const onLeftKeyDown = () => {
if (disabled.value) return
initData.newPosition =
Number.parseFloat(currentPosition.value) -
(step.value / (max3.value - min3.value)) * 100
setPosition(initData.newPosition)
emitChange()
}
const onRightKeyDown = () => {
if (disabled.value) return
initData.newPosition =
Number.parseFloat(currentPosition.value) +
(step.value / (max3.value - min3.value)) * 100
setPosition(initData.newPosition)
emitChange()
}
const getClientXY2 = (event) => {
let clientX
let clientY
if (event.type.startsWith('touch')) {
clientY = event.touches[0].clientY
clientX = event.touches[0].clientX
} else {
clientY = event.clientY
clientX = event.clientX
}
return {
clientX,
clientY,
}
}
const onDragStart = (event) => {
initData.dragging = true
initData.isClick = true
const { clientX, clientY } = getClientXY2(event)
if (props2.vertical) {
initData.startY = clientY
} else {
initData.startX = clientX
}
initData.startPosition = Number.parseFloat(currentPosition.value)
initData.newPosition = initData.startPosition
}
const onDragging = (event) => {
if (initData.dragging) {
initData.isClick = false
displayTooltip()
resetSize()
let diff
const { clientX, clientY } = getClientXY2(event)
if (props2.vertical) {
initData.currentY = clientY
diff = ((initData.startY - initData.currentY) / sliderSize.value) * 100
} else {
initData.currentX = clientX
diff = ((initData.currentX - initData.startX) / sliderSize.value) * 100
}
initData.newPosition = initData.startPosition + diff
setPosition(initData.newPosition)
}
}
const onDragEnd = () => {
if (initData.dragging) {
setTimeout(() => {
initData.dragging = false
if (!initData.hovering) {
hideTooltip()
}
if (!initData.isClick) {
setPosition(initData.newPosition)
emitChange()
}
}, 0)
off$1(window, 'mousemove', onDragging)
off$1(window, 'touchmove', onDragging)
off$1(window, 'mouseup', onDragEnd)
off$1(window, 'touchend', onDragEnd)
off$1(window, 'contextmenu', onDragEnd)
}
}
const setPosition = async (newPosition) => {
if (newPosition === null || Number.isNaN(+newPosition)) return
if (newPosition < 0) {
newPosition = 0
} else if (newPosition > 100) {
newPosition = 100
}
const lengthPerStep = 100 / ((max3.value - min3.value) / step.value)
const steps = Math.round(newPosition / lengthPerStep)
let value2 =
steps * lengthPerStep * (max3.value - min3.value) * 0.01 + min3.value
value2 = Number.parseFloat(value2.toFixed(precision.value))
emit2(UPDATE_MODEL_EVENT, value2)
if (!initData.dragging && props2.modelValue !== initData.oldValue) {
initData.oldValue = props2.modelValue
}
await nextTick()
initData.dragging && displayTooltip()
tooltip.value.updatePopper()
}
watch$1(
() => initData.dragging,
(val2) => {
updateDragging(val2)
}
)
return {
tooltip,
tooltipVisible,
showTooltip: showTooltip2,
wrapperStyle,
formatValue,
handleMouseEnter,
handleMouseLeave,
onButtonDown,
onLeftKeyDown,
onRightKeyDown,
setPosition,
}
}
const _sfc_main$7C = defineComponent({
name: 'ElSliderButton',
components: {
ElTooltip,
},
props: {
modelValue: {
type: Number,
default: 0,
},
vertical: {
type: Boolean,
default: false,
},
tooltipClass: {
type: String,
default: '',
},
},
emits: [UPDATE_MODEL_EVENT],
setup(props2, { emit: emit2 }) {
const ns = useNamespace('slider')
const initData = reactive({
hovering: false,
dragging: false,
isClick: false,
startX: 0,
currentX: 0,
startY: 0,
currentY: 0,
startPosition: 0,
newPosition: 0,
oldValue: props2.modelValue,
})
const {
tooltip,
showTooltip: showTooltip2,
tooltipVisible,
wrapperStyle,
formatValue,
handleMouseEnter,
handleMouseLeave,
onButtonDown,
onLeftKeyDown,
onRightKeyDown,
setPosition,
} = useSliderButton(props2, initData, emit2)
const { hovering, dragging } = toRefs$2(initData)
return {
ns,
tooltip,
tooltipVisible,
showTooltip: showTooltip2,
wrapperStyle,
formatValue,
handleMouseEnter,
handleMouseLeave,
onButtonDown,
onLeftKeyDown,
onRightKeyDown,
setPosition,
hovering,
dragging,
}
},
})
function _sfc_render$B(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_tooltip = resolveComponent('el-tooltip')
return (
openBlock(),
createElementBlock(
'div',
{
ref: 'button',
class: normalizeClass([
_ctx.ns.e('button-wrapper'),
{ hover: _ctx.hovering, dragging: _ctx.dragging },
]),
style: normalizeStyle$1(_ctx.wrapperStyle),
tabindex: '0',
onMouseenter:
_cache[1] ||
(_cache[1] = (...args) =>
_ctx.handleMouseEnter && _ctx.handleMouseEnter(...args)),
onMouseleave:
_cache[2] ||
(_cache[2] = (...args) =>
_ctx.handleMouseLeave && _ctx.handleMouseLeave(...args)),
onMousedown:
_cache[3] ||
(_cache[3] = (...args) =>
_ctx.onButtonDown && _ctx.onButtonDown(...args)),
onTouchstart:
_cache[4] ||
(_cache[4] = (...args) =>
_ctx.onButtonDown && _ctx.onButtonDown(...args)),
onFocus:
_cache[5] ||
(_cache[5] = (...args) =>
_ctx.handleMouseEnter && _ctx.handleMouseEnter(...args)),
onBlur:
_cache[6] ||
(_cache[6] = (...args) =>
_ctx.handleMouseLeave && _ctx.handleMouseLeave(...args)),
onKeydown: [
_cache[7] ||
(_cache[7] = withKeys(
(...args) => _ctx.onLeftKeyDown && _ctx.onLeftKeyDown(...args),
['left']
)),
_cache[8] ||
(_cache[8] = withKeys(
(...args) => _ctx.onRightKeyDown && _ctx.onRightKeyDown(...args),
['right']
)),
_cache[9] ||
(_cache[9] = withKeys(
withModifiers(
(...args) => _ctx.onLeftKeyDown && _ctx.onLeftKeyDown(...args),
['prevent']
),
['down']
)),
_cache[10] ||
(_cache[10] = withKeys(
withModifiers(
(...args) =>
_ctx.onRightKeyDown && _ctx.onRightKeyDown(...args),
['prevent']
),
['up']
)),
],
},
[
createVNode$1(
_component_el_tooltip,
{
ref: 'tooltip',
visible: _ctx.tooltipVisible,
'onUpdate:visible':
_cache[0] ||
(_cache[0] = ($event) => (_ctx.tooltipVisible = $event)),
placement: 'top',
'stop-popper-mouse-event': false,
'popper-class': _ctx.tooltipClass,
disabled: !_ctx.showTooltip,
persistent: '',
},
{
content: withCtx(() => [
createElementVNode(
'span',
null,
toDisplayString$1(_ctx.formatValue),
1
),
]),
default: withCtx(() => [
createElementVNode(
'div',
{
class: normalizeClass([
_ctx.ns.e('button'),
{ hover: _ctx.hovering, dragging: _ctx.dragging },
]),
},
null,
2
),
]),
_: 1,
},
8,
['visible', 'popper-class', 'disabled']
),
],
38
)
)
}
var SliderButton = /* @__PURE__ */ _export_sfc$1(_sfc_main$7C, [
['render', _sfc_render$B],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/slider/src/button.vue',
],
])
const _sfc_main$7B = defineComponent({
name: 'ElMarker',
props: {
mark: {
type: [String, Object],
default: () => void 0,
},
},
setup(props2) {
const ns = useNamespace('slider')
const label = computed(() => {
return typeof props2.mark === 'string' ? props2.mark : props2.mark.label
})
return {
ns,
label,
}
},
render() {
var _a2
return h$4(
'div',
{
class: this.ns.e('marks-text'),
style: (_a2 = this.mark) == null ? void 0 : _a2.style,
},
this.label
)
},
})
var SliderMarker = /* @__PURE__ */ _export_sfc$1(_sfc_main$7B, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/slider/src/marker.vue',
],
])
const useMarks = (props2) => {
return computed(() => {
if (!props2.marks) {
return []
}
const marksKeys = Object.keys(props2.marks)
return marksKeys
.map(parseFloat)
.sort((a2, b2) => a2 - b2)
.filter((point) => point <= props2.max && point >= props2.min)
.map((point) => ({
point,
position: ((point - props2.min) * 100) / (props2.max - props2.min),
mark: props2.marks[point],
}))
})
}
const useSlide = (props2, initData, emit2) => {
const elForm = inject(formContextKey, {})
const elFormItem = inject(formItemContextKey, {})
const slider = shallowRef(null)
const firstButton = ref(null)
const secondButton = ref(null)
const buttonRefs = {
firstButton,
secondButton,
}
const sliderDisabled = computed(() => {
return props2.disabled || elForm.disabled || false
})
const minValue = computed(() => {
return Math.min(initData.firstValue, initData.secondValue)
})
const maxValue = computed(() => {
return Math.max(initData.firstValue, initData.secondValue)
})
const barSize = computed(() => {
return props2.range
? `${
(100 * (maxValue.value - minValue.value)) / (props2.max - props2.min)
}%`
: `${
(100 * (initData.firstValue - props2.min)) / (props2.max - props2.min)
}%`
})
const barStart = computed(() => {
return props2.range
? `${(100 * (minValue.value - props2.min)) / (props2.max - props2.min)}%`
: '0%'
})
const runwayStyle = computed(() => {
return props2.vertical ? { height: props2.height } : {}
})
const barStyle = computed(() => {
return props2.vertical
? {
height: barSize.value,
bottom: barStart.value,
}
: {
width: barSize.value,
left: barStart.value,
}
})
const resetSize = () => {
if (slider.value) {
initData.sliderSize =
slider.value[`client${props2.vertical ? 'Height' : 'Width'}`]
}
}
const setPosition = (percent) => {
const targetValue = props2.min + (percent * (props2.max - props2.min)) / 100
if (!props2.range) {
firstButton.value.setPosition(percent)
return
}
let buttonRefName
if (
Math.abs(minValue.value - targetValue) <
Math.abs(maxValue.value - targetValue)
) {
buttonRefName =
initData.firstValue < initData.secondValue
? 'firstButton'
: 'secondButton'
} else {
buttonRefName =
initData.firstValue > initData.secondValue
? 'firstButton'
: 'secondButton'
}
buttonRefs[buttonRefName].value.setPosition(percent)
}
const setFirstValue = (firstValue) => {
initData.firstValue = firstValue
_emit(props2.range ? [minValue.value, maxValue.value] : firstValue)
}
const setSecondValue = (secondValue) => {
initData.secondValue = secondValue
if (props2.range) {
_emit([minValue.value, maxValue.value])
}
}
const _emit = (val2) => {
emit2(UPDATE_MODEL_EVENT, val2)
emit2(INPUT_EVENT, val2)
}
const emitChange = async () => {
await nextTick()
emit2(
CHANGE_EVENT,
props2.range ? [minValue.value, maxValue.value] : props2.modelValue
)
}
const onSliderClick = (event) => {
if (sliderDisabled.value || initData.dragging) return
resetSize()
if (props2.vertical) {
const sliderOffsetBottom = slider.value.getBoundingClientRect().bottom
setPosition(
((sliderOffsetBottom - event.clientY) / initData.sliderSize) * 100
)
} else {
const sliderOffsetLeft = slider.value.getBoundingClientRect().left
setPosition(
((event.clientX - sliderOffsetLeft) / initData.sliderSize) * 100
)
}
emitChange()
}
return {
elFormItem,
slider,
firstButton,
secondButton,
sliderDisabled,
minValue,
maxValue,
runwayStyle,
barStyle,
resetSize,
setPosition,
emitChange,
onSliderClick,
setFirstValue,
setSecondValue,
}
}
const useStops = (props2, initData, minValue, maxValue) => {
const stops = computed(() => {
if (!props2.showStops || props2.min > props2.max) return []
if (props2.step === 0) {
return []
}
const stopCount = (props2.max - props2.min) / props2.step
const stepWidth = (100 * props2.step) / (props2.max - props2.min)
const result = Array.from({ length: stopCount - 1 }).map(
(_2, index2) => (index2 + 1) * stepWidth
)
if (props2.range) {
return result.filter((step) => {
return (
step <
(100 * (minValue.value - props2.min)) / (props2.max - props2.min) ||
step >
(100 * (maxValue.value - props2.min)) / (props2.max - props2.min)
)
})
} else {
return result.filter(
(step) =>
step >
(100 * (initData.firstValue - props2.min)) / (props2.max - props2.min)
)
}
})
const getStopStyle = (position2) => {
return props2.vertical
? { bottom: `${position2}%` }
: { left: `${position2}%` }
}
return {
stops,
getStopStyle,
}
}
const _sfc_main$7A = defineComponent({
name: 'ElSlider',
components: {
ElInputNumber,
SliderButton,
SliderMarker,
},
props: {
modelValue: {
type: [Number, Array],
default: 0,
},
min: {
type: Number,
default: 0,
},
max: {
type: Number,
default: 100,
},
step: {
type: Number,
default: 1,
},
showInput: {
type: Boolean,
default: false,
},
showInputControls: {
type: Boolean,
default: true,
},
size: {
type: String,
validator: isValidComponentSize,
},
inputSize: {
type: String,
validator: isValidComponentSize,
},
showStops: {
type: Boolean,
default: false,
},
showTooltip: {
type: Boolean,
default: true,
},
formatTooltip: {
type: Function,
default: void 0,
},
disabled: {
type: Boolean,
default: false,
},
range: {
type: Boolean,
default: false,
},
vertical: {
type: Boolean,
default: false,
},
height: {
type: String,
default: '',
},
debounce: {
type: Number,
default: 300,
},
label: {
type: String,
default: void 0,
},
tooltipClass: {
type: String,
default: void 0,
},
marks: Object,
},
emits: [UPDATE_MODEL_EVENT, CHANGE_EVENT, INPUT_EVENT],
setup(props2, { emit: emit2 }) {
const ns = useNamespace('slider')
const initData = reactive({
firstValue: 0,
secondValue: 0,
oldValue: 0,
dragging: false,
sliderSize: 1,
})
const {
elFormItem,
slider,
firstButton,
secondButton,
sliderDisabled,
minValue,
maxValue,
runwayStyle,
barStyle,
resetSize,
emitChange,
onSliderClick,
setFirstValue,
setSecondValue,
} = useSlide(props2, initData, emit2)
const { stops, getStopStyle } = useStops(
props2,
initData,
minValue,
maxValue
)
const sliderWrapperSize = useSize$1()
const sliderInputSize = computed(
() => props2.inputSize || sliderWrapperSize.value
)
const sliderKls = computed(() => [
ns.b(),
ns.m(sliderWrapperSize.value),
ns.is('vertical', props2.vertical),
{ [ns.m('with-input')]: props2.showInput },
])
const markList = useMarks(props2)
useWatch(props2, initData, minValue, maxValue, emit2, elFormItem)
const precision = computed(() => {
const precisions = [props2.min, props2.max, props2.step].map((item2) => {
const decimal = `${item2}`.split('.')[1]
return decimal ? decimal.length : 0
})
return Math.max.apply(null, precisions)
})
const { sliderWrapper } = useLifecycle(props2, initData, resetSize)
const { firstValue, secondValue, oldValue, dragging, sliderSize } =
toRefs$2(initData)
const updateDragging = (val2) => {
initData.dragging = val2
}
provide('SliderProvider', {
...toRefs$2(props2),
sliderSize,
disabled: sliderDisabled,
precision,
emitChange,
resetSize,
updateDragging,
})
return {
ns,
firstValue,
secondValue,
oldValue,
dragging,
sliderSize,
slider,
firstButton,
secondButton,
sliderDisabled,
runwayStyle,
barStyle,
emitChange,
onSliderClick,
getStopStyle,
setFirstValue,
setSecondValue,
stops,
markList,
sliderWrapper,
sliderWrapperSize,
sliderInputSize,
sliderKls,
}
},
})
const useWatch = (props2, initData, minValue, maxValue, emit2, elFormItem) => {
const _emit = (val2) => {
emit2(UPDATE_MODEL_EVENT, val2)
emit2(INPUT_EVENT, val2)
}
const valueChanged = () => {
if (props2.range) {
return ![minValue.value, maxValue.value].every(
(item2, index2) => item2 === initData.oldValue[index2]
)
} else {
return props2.modelValue !== initData.oldValue
}
}
const setValues = () => {
var _a2, _b2
if (props2.min > props2.max) {
throwError$1('Slider', 'min should not be greater than max.')
return
}
const val2 = props2.modelValue
if (props2.range && Array.isArray(val2)) {
if (val2[1] < props2.min) {
_emit([props2.min, props2.min])
} else if (val2[0] > props2.max) {
_emit([props2.max, props2.max])
} else if (val2[0] < props2.min) {
_emit([props2.min, val2[1]])
} else if (val2[1] > props2.max) {
_emit([val2[0], props2.max])
} else {
initData.firstValue = val2[0]
initData.secondValue = val2[1]
if (valueChanged()) {
;(_a2 = elFormItem.validate) == null
? void 0
: _a2.call(elFormItem, 'change').catch((err) => debugWarn())
initData.oldValue = val2.slice()
}
}
} else if (
!props2.range &&
typeof val2 === 'number' &&
!Number.isNaN(val2)
) {
if (val2 < props2.min) {
_emit(props2.min)
} else if (val2 > props2.max) {
_emit(props2.max)
} else {
initData.firstValue = val2
if (valueChanged()) {
;(_b2 = elFormItem.validate) == null
? void 0
: _b2.call(elFormItem, 'change').catch((err) => debugWarn())
initData.oldValue = val2
}
}
}
}
setValues()
watch$1(
() => initData.dragging,
(val2) => {
if (!val2) {
setValues()
}
}
)
watch$1(
() => props2.modelValue,
(val2, oldVal) => {
if (
initData.dragging ||
(Array.isArray(val2) &&
Array.isArray(oldVal) &&
val2.every((item2, index2) => item2 === oldVal[index2]) &&
initData.firstValue === val2[0] &&
initData.secondValue === val2[1])
) {
return
}
setValues()
},
{
deep: true,
}
)
watch$1(
() => [props2.min, props2.max],
() => {
setValues()
}
)
}
const useLifecycle = (props2, initData, resetSize) => {
const sliderWrapper = ref(null)
onMounted(async () => {
let valuetext
if (props2.range) {
if (Array.isArray(props2.modelValue)) {
initData.firstValue = Math.max(props2.min, props2.modelValue[0])
initData.secondValue = Math.min(props2.max, props2.modelValue[1])
} else {
initData.firstValue = props2.min
initData.secondValue = props2.max
}
initData.oldValue = [initData.firstValue, initData.secondValue]
valuetext = `${initData.firstValue}-${initData.secondValue}`
} else {
if (
typeof props2.modelValue !== 'number' ||
Number.isNaN(props2.modelValue)
) {
initData.firstValue = props2.min
} else {
initData.firstValue = Math.min(
props2.max,
Math.max(props2.min, props2.modelValue)
)
}
initData.oldValue = initData.firstValue
valuetext = initData.firstValue
}
sliderWrapper.value.setAttribute('aria-valuetext', valuetext)
sliderWrapper.value.setAttribute(
'aria-label',
props2.label
? props2.label
: `slider between ${props2.min} and ${props2.max}`
)
on$2(window, 'resize', resetSize)
await nextTick()
resetSize()
})
onBeforeUnmount(() => {
off$1(window, 'resize', resetSize)
})
return {
sliderWrapper,
}
}
const _hoisted_1$6e = [
'aria-valuemin',
'aria-valuemax',
'aria-orientation',
'aria-disabled',
]
const _hoisted_2$56 = { key: 1 }
function _sfc_render$A(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_slider_button = resolveComponent('slider-button')
const _component_slider_marker = resolveComponent('slider-marker')
const _component_el_input_number = resolveComponent('el-input-number')
return (
openBlock(),
createElementBlock(
'div',
{
ref: 'sliderWrapper',
class: normalizeClass(_ctx.sliderKls),
role: 'slider',
'aria-valuemin': _ctx.min,
'aria-valuemax': _ctx.max,
'aria-orientation': _ctx.vertical ? 'vertical' : 'horizontal',
'aria-disabled': _ctx.sliderDisabled,
},
[
createElementVNode(
'div',
{
ref: 'slider',
class: normalizeClass([
_ctx.ns.e('runway'),
{ 'show-input': _ctx.showInput && !_ctx.range },
_ctx.ns.is('disabled', _ctx.sliderDisabled),
]),
style: normalizeStyle$1(_ctx.runwayStyle),
onClick:
_cache[0] ||
(_cache[0] = (...args) =>
_ctx.onSliderClick && _ctx.onSliderClick(...args)),
},
[
createElementVNode(
'div',
{
class: normalizeClass(_ctx.ns.e('bar')),
style: normalizeStyle$1(_ctx.barStyle),
},
null,
6
),
createVNode$1(
_component_slider_button,
{
ref: 'firstButton',
'model-value': _ctx.firstValue,
vertical: _ctx.vertical,
'tooltip-class': _ctx.tooltipClass,
'onUpdate:modelValue': _ctx.setFirstValue,
},
null,
8,
[
'model-value',
'vertical',
'tooltip-class',
'onUpdate:modelValue',
]
),
_ctx.range
? (openBlock(),
createBlock(
_component_slider_button,
{
key: 0,
ref: 'secondButton',
'model-value': _ctx.secondValue,
vertical: _ctx.vertical,
'tooltip-class': _ctx.tooltipClass,
'onUpdate:modelValue': _ctx.setSecondValue,
},
null,
8,
[
'model-value',
'vertical',
'tooltip-class',
'onUpdate:modelValue',
]
))
: createCommentVNode('v-if', true),
_ctx.showStops
? (openBlock(),
createElementBlock('div', _hoisted_2$56, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.stops, (item2, key2) => {
return (
openBlock(),
createElementBlock(
'div',
{
key: key2,
class: normalizeClass(_ctx.ns.e('stop')),
style: normalizeStyle$1(_ctx.getStopStyle(item2)),
},
null,
6
)
)
}),
128
)),
]))
: createCommentVNode('v-if', true),
_ctx.markList.length > 0
? (openBlock(),
createElementBlock(
Fragment,
{ key: 2 },
[
createElementVNode('div', null, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.markList, (item2, key2) => {
return (
openBlock(),
createElementBlock(
'div',
{
key: key2,
style: normalizeStyle$1(
_ctx.getStopStyle(item2.position)
),
class: normalizeClass([
_ctx.ns.e('stop'),
_ctx.ns.e('marks-stop'),
]),
},
null,
6
)
)
}),
128
)),
]),
createElementVNode(
'div',
{
class: normalizeClass(_ctx.ns.e('marks')),
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.markList, (item2, key2) => {
return (
openBlock(),
createBlock(
_component_slider_marker,
{
key: key2,
mark: item2.mark,
style: normalizeStyle$1(
_ctx.getStopStyle(item2.position)
),
},
null,
8,
['mark', 'style']
)
)
}),
128
)),
],
2
),
],
64
))
: createCommentVNode('v-if', true),
],
6
),
_ctx.showInput && !_ctx.range
? (openBlock(),
createBlock(
_component_el_input_number,
{
key: 0,
ref: 'input',
'model-value': _ctx.firstValue,
class: normalizeClass(_ctx.ns.e('input')),
step: _ctx.step,
disabled: _ctx.sliderDisabled,
controls: _ctx.showInputControls,
min: _ctx.min,
max: _ctx.max,
debounce: _ctx.debounce,
size: _ctx.sliderInputSize,
'onUpdate:modelValue': _ctx.setFirstValue,
onChange: _ctx.emitChange,
},
null,
8,
[
'model-value',
'class',
'step',
'disabled',
'controls',
'min',
'max',
'debounce',
'size',
'onUpdate:modelValue',
'onChange',
]
))
: createCommentVNode('v-if', true),
],
10,
_hoisted_1$6e
)
)
}
var Slider = /* @__PURE__ */ _export_sfc$1(_sfc_main$7A, [
['render', _sfc_render$A],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/slider/src/index.vue',
],
])
Slider.install = (app2) => {
app2.component(Slider.name, Slider)
}
const _Slider = Slider
const ElSlider = _Slider
const spaceItem = buildProps({
prefixCls: {
type: String,
default: '',
},
})
const _sfc_main$7z = defineComponent({
props: spaceItem,
setup(props2) {
const ns = useNamespace('space')
const classes = computed(() => `${props2.prefixCls || ns.b()}__item`)
return {
classes,
}
},
})
function _sfc_render$z(_ctx, _cache, $props2, $setup, $data, $options) {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass(_ctx.classes),
},
[renderSlot(_ctx.$slots, 'default')],
2
)
)
}
var Item = /* @__PURE__ */ _export_sfc$1(_sfc_main$7z, [
['render', _sfc_render$z],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/space/src/item.vue',
],
])
const SIZE_MAP = {
small: 8,
default: 12,
large: 16,
}
function useSpace(props2) {
const ns = useNamespace('space')
const classes = computed(() => [ns.b(), ns.m(props2.direction), props2.class])
const horizontalSize = ref(0)
const verticalSize = ref(0)
const containerStyle = computed(() => {
const wrapKls =
props2.wrap || props2.fill
? { flexWrap: 'wrap', marginBottom: `-${verticalSize.value}px` }
: {}
const alignment = {
alignItems: props2.alignment,
}
return [wrapKls, alignment, props2.style]
})
const itemStyle = computed(() => {
const itemBaseStyle = {
paddingBottom: `${verticalSize.value}px`,
marginRight: `${horizontalSize.value}px`,
}
const fillStyle = props2.fill
? { flexGrow: 1, minWidth: `${props2.fillRatio}%` }
: {}
return [itemBaseStyle, fillStyle]
})
watchEffect(() => {
const { size = 'small', wrap, direction: dir3, fill } = props2
if (Array.isArray(size)) {
const [h2 = 0, v4 = 0] = size
horizontalSize.value = h2
verticalSize.value = v4
} else {
let val2
if (isNumber$h(size)) {
val2 = size
} else {
val2 = SIZE_MAP[size] || SIZE_MAP.small
}
if ((wrap || fill) && dir3 === 'horizontal') {
horizontalSize.value = verticalSize.value = val2
} else {
if (dir3 === 'horizontal') {
horizontalSize.value = val2
verticalSize.value = 0
} else {
verticalSize.value = val2
horizontalSize.value = 0
}
}
}
})
return {
classes,
containerStyle,
itemStyle,
}
}
const spaceProps = buildProps({
direction: {
type: String,
values: ['horizontal', 'vertical'],
default: 'horizontal',
},
class: {
type: definePropType([String, Object, Array]),
default: '',
},
style: {
type: definePropType([String, Array, Object]),
default: '',
},
alignment: {
type: definePropType(String),
default: 'center',
},
prefixCls: {
type: String,
},
spacer: {
type: definePropType([Object, String, Number, Array]),
default: null,
validator: (val2) =>
isVNode$1(val2) || isNumber$h(val2) || isString$f(val2),
},
wrap: {
type: Boolean,
default: false,
},
fill: {
type: Boolean,
default: false,
},
fillRatio: {
type: Number,
default: 100,
},
size: {
type: [String, Array, Number],
values: componentSizes,
validator: (val2) => {
return (
isNumber$h(val2) ||
(isArray$D(val2) &&
val2.length === 2 &&
val2.every((i2) => isNumber$h(i2)))
)
},
},
})
var Space = defineComponent({
name: 'ElSpace',
props: spaceProps,
setup(props2, { slots }) {
const { classes, containerStyle, itemStyle } = useSpace(props2)
return () => {
var _a2
const { spacer, prefixCls, direction: direction2 } = props2
const children = renderSlot(slots, 'default', { key: 0 }, () => [])
if (((_a2 = children.children) != null ? _a2 : []).length === 0)
return null
if (isArray$D(children.children)) {
let extractedChildren = []
children.children.forEach((child, loopKey) => {
if (isFragment(child)) {
if (isArray$D(child.children)) {
child.children.forEach((nested, key2) => {
extractedChildren.push(
createVNode$1(
Item,
{
style: itemStyle.value,
prefixCls,
key: `nested-${key2}`,
},
{
default: () => [nested],
},
PatchFlags.PROPS | PatchFlags.STYLE,
['style', 'prefixCls']
)
)
})
}
} else if (isValidElementNode(child)) {
extractedChildren.push(
createVNode$1(
Item,
{
style: itemStyle.value,
prefixCls,
key: `LoopKey${loopKey}`,
},
{
default: () => [child],
},
PatchFlags.PROPS | PatchFlags.STYLE,
['style', 'prefixCls']
)
)
}
})
if (spacer) {
const len2 = extractedChildren.length - 1
extractedChildren = extractedChildren.reduce((acc, child, idx) => {
const children2 = [...acc, child]
if (idx !== len2) {
children2.push(
createVNode$1(
'span',
{
style: [
itemStyle.value,
direction2 === 'vertical' ? 'width: 100%' : null,
],
key: idx,
},
[
isVNode$1(spacer)
? spacer
: createTextVNode(spacer, PatchFlags.TEXT),
],
PatchFlags.STYLE
)
)
}
return children2
}, [])
}
return createVNode$1(
'div',
{
class: classes.value,
style: containerStyle.value,
},
extractedChildren,
PatchFlags.STYLE | PatchFlags.CLASS
)
}
return children.children
}
},
})
const ElSpace = withInstall(Space)
const _sfc_main$7y = defineComponent({
name: 'ElSteps',
props: {
space: {
type: [Number, String],
default: '',
},
active: {
type: Number,
default: 0,
},
direction: {
type: String,
default: 'horizontal',
validator: (val2) => ['horizontal', 'vertical'].includes(val2),
},
alignCenter: {
type: Boolean,
default: false,
},
simple: {
type: Boolean,
default: false,
},
finishStatus: {
type: String,
default: 'finish',
validator: (val2) =>
['wait', 'process', 'finish', 'error', 'success'].includes(val2),
},
processStatus: {
type: String,
default: 'process',
validator: (val2) =>
['wait', 'process', 'finish', 'error', 'success'].includes(val2),
},
},
emits: [CHANGE_EVENT],
setup(props2, { emit: emit2 }) {
const ns = useNamespace('steps')
const steps = ref([])
watch$1(steps, () => {
steps.value.forEach((instance, index2) => {
instance.setIndex(index2)
})
})
provide('ElSteps', { props: props2, steps })
watch$1(
() => props2.active,
(newVal, oldVal) => {
emit2(CHANGE_EVENT, newVal, oldVal)
}
)
return {
steps,
ns,
}
},
})
function _sfc_render$y(_ctx, _cache, $props2, $setup, $data, $options) {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
_ctx.ns.b(),
_ctx.ns.m(_ctx.simple ? 'simple' : _ctx.direction),
]),
},
[renderSlot(_ctx.$slots, 'default')],
2
)
)
}
var Steps = /* @__PURE__ */ _export_sfc$1(_sfc_main$7y, [
['render', _sfc_render$y],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/steps/src/index.vue',
],
])
const _sfc_main$7x = defineComponent({
name: 'ElStep',
components: {
ElIcon,
Close: close$2,
Check: check$1,
},
props: {
title: {
type: String,
default: '',
},
icon: {
type: [String, Object],
default: '',
},
description: {
type: String,
default: '',
},
status: {
type: String,
default: '',
validator: (val2) =>
['', 'wait', 'process', 'finish', 'error', 'success'].includes(val2),
},
},
setup(props2) {
const ns = useNamespace('step')
const index2 = ref(-1)
const lineStyle = ref({})
const internalStatus = ref('')
const parent2 = inject('ElSteps')
const currentInstance = getCurrentInstance()
onMounted(() => {
watch$1(
[
() => parent2.props.active,
() => parent2.props.processStatus,
() => parent2.props.finishStatus,
],
([active]) => {
updateStatus(active)
},
{ immediate: true }
)
})
onBeforeUnmount(() => {
parent2.steps.value = parent2.steps.value.filter(
(instance) => instance.uid !== currentInstance.uid
)
})
const currentStatus = computed(() => {
return props2.status || internalStatus.value
})
const prevStatus = computed(() => {
const prevStep = parent2.steps.value[index2.value - 1]
return prevStep ? prevStep.currentStatus : 'wait'
})
const isCenter = computed(() => {
return parent2.props.alignCenter
})
const isVertical = computed(() => {
return parent2.props.direction === 'vertical'
})
const isSimple = computed(() => {
return parent2.props.simple
})
const stepsCount = computed(() => {
return parent2.steps.value.length
})
const isLast = computed(() => {
var _a2
return (
((_a2 = parent2.steps.value[stepsCount.value - 1]) == null
? void 0
: _a2.uid) === currentInstance.uid
)
})
const space = computed(() => {
return isSimple.value ? '' : parent2.props.space
})
const style2 = computed(() => {
const style22 = {
flexBasis:
typeof space.value === 'number'
? `${space.value}px`
: space.value
? space.value
: `${100 / (stepsCount.value - (isCenter.value ? 0 : 1))}%`,
}
if (isVertical.value) return style22
if (isLast.value) {
style22.maxWidth = `${100 / stepsCount.value}%`
}
return style22
})
const setIndex = (val2) => {
index2.value = val2
}
const calcProgress = (status) => {
let step = 100
const style22 = {}
style22.transitionDelay = `${150 * index2.value}ms`
if (status === parent2.props.processStatus) {
step = 0
} else if (status === 'wait') {
step = 0
style22.transitionDelay = `${-150 * index2.value}ms`
}
style22.borderWidth = step && !isSimple.value ? '1px' : 0
style22[
parent2.props.direction === 'vertical' ? 'height' : 'width'
] = `${step}%`
lineStyle.value = style22
}
const updateStatus = (activeIndex) => {
if (activeIndex > index2.value) {
internalStatus.value = parent2.props.finishStatus
} else if (activeIndex === index2.value && prevStatus.value !== 'error') {
internalStatus.value = parent2.props.processStatus
} else {
internalStatus.value = 'wait'
}
const prevChild = parent2.steps.value[stepsCount.value - 1]
if (prevChild) prevChild.calcProgress(internalStatus.value)
}
const stepItemState = reactive({
uid: computed(() => currentInstance.uid),
currentStatus,
setIndex,
calcProgress,
})
parent2.steps.value = [...parent2.steps.value, stepItemState]
return {
ns,
index: index2,
lineStyle,
currentStatus,
isCenter,
isVertical,
isSimple,
isLast,
space,
style: style2,
parent: parent2,
setIndex,
calcProgress,
updateStatus,
}
},
})
function _sfc_render$x(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_icon = resolveComponent('el-icon')
const _component_check = resolveComponent('check')
const _component_close = resolveComponent('close')
return (
openBlock(),
createElementBlock(
'div',
{
style: normalizeStyle$1(_ctx.style),
class: normalizeClass([
_ctx.ns.b(),
_ctx.ns.is(_ctx.isSimple ? 'simple' : _ctx.parent.props.direction),
_ctx.ns.is('flex', _ctx.isLast && !_ctx.space && !_ctx.isCenter),
_ctx.ns.is(
'center',
_ctx.isCenter && !_ctx.isVertical && !_ctx.isSimple
),
]),
},
[
createCommentVNode(' icon & line '),
createElementVNode(
'div',
{
class: normalizeClass([
_ctx.ns.e('head'),
_ctx.ns.is(_ctx.currentStatus),
]),
},
[
!_ctx.isSimple
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass(_ctx.ns.e('line')),
},
[
createElementVNode(
'i',
{
class: normalizeClass(_ctx.ns.e('line-inner')),
style: normalizeStyle$1(_ctx.lineStyle),
},
null,
6
),
],
2
))
: createCommentVNode('v-if', true),
createElementVNode(
'div',
{
class: normalizeClass([
_ctx.ns.e('icon'),
_ctx.ns.is(_ctx.icon ? 'icon' : 'text'),
]),
},
[
_ctx.currentStatus !== 'success' &&
_ctx.currentStatus !== 'error'
? renderSlot(_ctx.$slots, 'icon', { key: 0 }, () => [
_ctx.icon
? (openBlock(),
createBlock(
_component_el_icon,
{
key: 0,
class: normalizeClass(_ctx.ns.e('icon-inner')),
},
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(_ctx.icon)
)),
]),
_: 1,
},
8,
['class']
))
: createCommentVNode('v-if', true),
!_ctx.icon && !_ctx.isSimple
? (openBlock(),
createElementBlock(
'div',
{
key: 1,
class: normalizeClass(_ctx.ns.e('icon-inner')),
},
toDisplayString$1(_ctx.index + 1),
3
))
: createCommentVNode('v-if', true),
])
: (openBlock(),
createBlock(
_component_el_icon,
{
key: 1,
class: normalizeClass([
_ctx.ns.e('icon-inner'),
_ctx.ns.is('status'),
]),
},
{
default: withCtx(() => [
_ctx.currentStatus === 'success'
? (openBlock(),
createBlock(_component_check, { key: 0 }))
: (openBlock(),
createBlock(_component_close, { key: 1 })),
]),
_: 1,
},
8,
['class']
)),
],
2
),
],
2
),
createCommentVNode(' title & description '),
createElementVNode(
'div',
{
class: normalizeClass(_ctx.ns.e('main')),
},
[
createElementVNode(
'div',
{
class: normalizeClass([
_ctx.ns.e('title'),
_ctx.ns.is(_ctx.currentStatus),
]),
},
[
renderSlot(_ctx.$slots, 'title', {}, () => [
createTextVNode(toDisplayString$1(_ctx.title), 1),
]),
],
2
),
_ctx.isSimple
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass(_ctx.ns.e('arrow')),
},
null,
2
))
: (openBlock(),
createElementBlock(
'div',
{
key: 1,
class: normalizeClass([
_ctx.ns.e('description'),
_ctx.ns.is(_ctx.currentStatus),
]),
},
[
renderSlot(_ctx.$slots, 'description', {}, () => [
createTextVNode(toDisplayString$1(_ctx.description), 1),
]),
],
2
)),
],
2
),
],
6
)
)
}
var Step = /* @__PURE__ */ _export_sfc$1(_sfc_main$7x, [
['render', _sfc_render$x],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/steps/src/item.vue',
],
])
const ElSteps = withInstall(Steps, {
Step,
})
const ElStep = withNoopInstall(Step)
const switchProps = buildProps({
modelValue: {
type: [Boolean, String, Number],
default: false,
},
value: {
type: [Boolean, String, Number],
default: false,
},
disabled: {
type: Boolean,
default: false,
},
width: {
type: Number,
default: 40,
},
inlinePrompt: {
type: Boolean,
default: false,
},
activeIcon: {
type: iconPropType,
default: '',
},
inactiveIcon: {
type: iconPropType,
default: '',
},
activeText: {
type: String,
default: '',
},
inactiveText: {
type: String,
default: '',
},
activeColor: {
type: String,
default: '',
},
inactiveColor: {
type: String,
default: '',
},
borderColor: {
type: String,
default: '',
},
activeValue: {
type: [Boolean, String, Number],
default: true,
},
inactiveValue: {
type: [Boolean, String, Number],
default: false,
},
name: {
type: String,
default: '',
},
validateEvent: {
type: Boolean,
default: true,
},
id: String,
loading: {
type: Boolean,
default: false,
},
beforeChange: {
type: definePropType(Function),
},
size: {
type: String,
validator: isValidComponentSize,
},
})
const switchEmits = {
[UPDATE_MODEL_EVENT]: (val2) =>
isBoolean$5(val2) || isString$f(val2) || isNumber$h(val2),
[CHANGE_EVENT]: (val2) =>
isBoolean$5(val2) || isString$f(val2) || isNumber$h(val2),
[INPUT_EVENT]: (val2) =>
isBoolean$5(val2) || isString$f(val2) || isNumber$h(val2),
}
const COMPONENT_NAME$1 = 'ElSwitch'
const _sfc_main$7w = defineComponent({
name: COMPONENT_NAME$1,
components: { ElIcon, Loading: loading },
props: switchProps,
emits: switchEmits,
setup(props2, { emit: emit2 }) {
const { formItem } = useFormItem()
const switchDisabled = useDisabled$1(computed(() => props2.loading))
const ns = useNamespace('switch')
const switchSize = useSize$1()
const isModelValue = ref(props2.modelValue !== false)
const input = ref()
const core2 = ref()
const switchKls = computed(() => [
ns.b(),
ns.m(switchSize.value),
ns.is('disabled', switchDisabled.value),
ns.is('checked', checked2.value),
])
watch$1(
() => props2.modelValue,
() => {
isModelValue.value = true
}
)
watch$1(
() => props2.value,
() => {
isModelValue.value = false
}
)
const actualValue = computed(() => {
return isModelValue.value ? props2.modelValue : props2.value
})
const checked2 = computed(() => actualValue.value === props2.activeValue)
if (
![props2.activeValue, props2.inactiveValue].includes(actualValue.value)
) {
emit2(UPDATE_MODEL_EVENT, props2.inactiveValue)
emit2(CHANGE_EVENT, props2.inactiveValue)
emit2(INPUT_EVENT, props2.inactiveValue)
}
watch$1(checked2, () => {
var _a2
input.value.checked = checked2.value
if (props2.activeColor || props2.inactiveColor) {
setBackgroundColor()
}
if (props2.validateEvent) {
;(_a2 = formItem == null ? void 0 : formItem.validate) == null
? void 0
: _a2.call(formItem, 'change').catch((err) => debugWarn())
}
})
const handleChange = () => {
const val2 = checked2.value ? props2.inactiveValue : props2.activeValue
emit2(UPDATE_MODEL_EVENT, val2)
emit2(CHANGE_EVENT, val2)
emit2(INPUT_EVENT, val2)
nextTick(() => {
input.value.checked = checked2.value
})
}
const switchValue = () => {
if (switchDisabled.value) return
const { beforeChange } = props2
if (!beforeChange) {
handleChange()
return
}
const shouldChange = beforeChange()
const isExpectType = [
isPromise$1(shouldChange),
isBoolean$5(shouldChange),
].some((i2) => i2)
if (!isExpectType) {
throwError$1(
COMPONENT_NAME$1,
'beforeChange must return type `Promise` or `boolean`'
)
}
if (isPromise$1(shouldChange)) {
shouldChange
.then((result) => {
if (result) {
handleChange()
}
})
.catch((e2) => {})
} else if (shouldChange) {
handleChange()
}
}
const setBackgroundColor = () => {
const newColor = checked2.value
? props2.activeColor
: props2.inactiveColor
const coreEl = core2.value
if (props2.borderColor) coreEl.style.borderColor = props2.borderColor
else if (!props2.borderColor) coreEl.style.borderColor = newColor
coreEl.style.backgroundColor = newColor
coreEl.children[0].style.color = newColor
}
const focus2 = () => {
var _a2, _b2
;(_b2 = (_a2 = input.value) == null ? void 0 : _a2.focus) == null
? void 0
: _b2.call(_a2)
}
onMounted(() => {
if (props2.activeColor || props2.inactiveColor || props2.borderColor) {
setBackgroundColor()
}
input.value.checked = checked2.value
})
return {
ns,
input,
core: core2,
switchDisabled,
checked: checked2,
switchKls,
handleChange,
switchValue,
focus: focus2,
}
},
})
const _hoisted_1$6d = ['aria-checked', 'aria-disabled']
const _hoisted_2$55 = ['id', 'name', 'true-value', 'false-value', 'disabled']
const _hoisted_3$4z = ['aria-hidden']
const _hoisted_4$3Z = ['aria-hidden']
const _hoisted_5$3z = ['aria-hidden']
const _hoisted_6$3a = ['aria-hidden']
function _sfc_render$w(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_icon = resolveComponent('el-icon')
const _component_loading = resolveComponent('loading')
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass(_ctx.switchKls),
role: 'switch',
'aria-checked': _ctx.checked,
'aria-disabled': _ctx.switchDisabled,
onClick:
_cache[2] ||
(_cache[2] = withModifiers(
(...args) => _ctx.switchValue && _ctx.switchValue(...args),
['prevent']
)),
},
[
createElementVNode(
'input',
{
id: _ctx.id,
ref: 'input',
class: normalizeClass(_ctx.ns.e('input')),
type: 'checkbox',
name: _ctx.name,
'true-value': _ctx.activeValue,
'false-value': _ctx.inactiveValue,
disabled: _ctx.switchDisabled,
onChange:
_cache[0] ||
(_cache[0] = (...args) =>
_ctx.handleChange && _ctx.handleChange(...args)),
onKeydown:
_cache[1] ||
(_cache[1] = withKeys(
(...args) => _ctx.switchValue && _ctx.switchValue(...args),
['enter']
)),
},
null,
42,
_hoisted_2$55
),
!_ctx.inlinePrompt && (_ctx.inactiveIcon || _ctx.inactiveText)
? (openBlock(),
createElementBlock(
'span',
{
key: 0,
class: normalizeClass([
_ctx.ns.e('label'),
_ctx.ns.em('label', 'left'),
_ctx.ns.is('active', !_ctx.checked),
]),
},
[
_ctx.inactiveIcon
? (openBlock(),
createBlock(
_component_el_icon,
{ key: 0 },
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(_ctx.inactiveIcon)
)),
]),
_: 1,
}
))
: createCommentVNode('v-if', true),
!_ctx.inactiveIcon && _ctx.inactiveText
? (openBlock(),
createElementBlock(
'span',
{
key: 1,
'aria-hidden': _ctx.checked,
},
toDisplayString$1(_ctx.inactiveText),
9,
_hoisted_3$4z
))
: createCommentVNode('v-if', true),
],
2
))
: createCommentVNode('v-if', true),
createElementVNode(
'span',
{
ref: 'core',
class: normalizeClass(_ctx.ns.e('core')),
style: normalizeStyle$1({ width: (_ctx.width || 40) + 'px' }),
},
[
_ctx.inlinePrompt
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass(_ctx.ns.e('inner')),
},
[
_ctx.activeIcon || _ctx.inactiveIcon
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
_ctx.activeIcon
? (openBlock(),
createBlock(
_component_el_icon,
{
key: 0,
class: normalizeClass([
_ctx.ns.is('icon'),
_ctx.checked
? _ctx.ns.is('show')
: _ctx.ns.is('hide'),
]),
},
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(_ctx.activeIcon)
)),
]),
_: 1,
},
8,
['class']
))
: createCommentVNode('v-if', true),
_ctx.inactiveIcon
? (openBlock(),
createBlock(
_component_el_icon,
{
key: 1,
class: normalizeClass([
_ctx.ns.is('icon'),
!_ctx.checked
? _ctx.ns.is('show')
: _ctx.ns.is('hide'),
]),
},
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(
_ctx.inactiveIcon
)
)),
]),
_: 1,
},
8,
['class']
))
: createCommentVNode('v-if', true),
],
64
))
: _ctx.activeText || _ctx.inactiveIcon
? (openBlock(),
createElementBlock(
Fragment,
{ key: 1 },
[
_ctx.activeText
? (openBlock(),
createElementBlock(
'span',
{
key: 0,
class: normalizeClass([
_ctx.ns.is('text'),
_ctx.checked
? _ctx.ns.is('show')
: _ctx.ns.is('hide'),
]),
'aria-hidden': !_ctx.checked,
},
toDisplayString$1(
_ctx.activeText.substring(0, 3)
),
11,
_hoisted_4$3Z
))
: createCommentVNode('v-if', true),
_ctx.inactiveText
? (openBlock(),
createElementBlock(
'span',
{
key: 1,
class: normalizeClass([
_ctx.ns.is('text'),
!_ctx.checked
? _ctx.ns.is('show')
: _ctx.ns.is('hide'),
]),
'aria-hidden': _ctx.checked,
},
toDisplayString$1(
_ctx.inactiveText.substring(0, 3)
),
11,
_hoisted_5$3z
))
: createCommentVNode('v-if', true),
],
64
))
: createCommentVNode('v-if', true),
],
2
))
: createCommentVNode('v-if', true),
createElementVNode(
'div',
{
class: normalizeClass(_ctx.ns.e('action')),
},
[
_ctx.loading
? (openBlock(),
createBlock(
_component_el_icon,
{
key: 0,
class: normalizeClass(_ctx.ns.is('loading')),
},
{
default: withCtx(() => [
createVNode$1(_component_loading),
]),
_: 1,
},
8,
['class']
))
: createCommentVNode('v-if', true),
],
2
),
],
6
),
!_ctx.inlinePrompt && (_ctx.activeIcon || _ctx.activeText)
? (openBlock(),
createElementBlock(
'span',
{
key: 1,
class: normalizeClass([
_ctx.ns.e('label'),
_ctx.ns.em('label', 'right'),
_ctx.ns.is('active', _ctx.checked),
]),
},
[
_ctx.activeIcon
? (openBlock(),
createBlock(
_component_el_icon,
{ key: 0 },
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(_ctx.activeIcon)
)),
]),
_: 1,
}
))
: createCommentVNode('v-if', true),
!_ctx.activeIcon && _ctx.activeText
? (openBlock(),
createElementBlock(
'span',
{
key: 1,
'aria-hidden': !_ctx.checked,
},
toDisplayString$1(_ctx.activeText),
9,
_hoisted_6$3a
))
: createCommentVNode('v-if', true),
],
2
))
: createCommentVNode('v-if', true),
],
10,
_hoisted_1$6d
)
)
}
var Switch$2 = /* @__PURE__ */ _export_sfc$1(_sfc_main$7w, [
['render', _sfc_render$w],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/switch/src/switch.vue',
],
])
const ElSwitch = withInstall(Switch$2)
/*!
* escape-html
* Copyright(c) 2012-2013 TJ Holowaychuk
* Copyright(c) 2015 Andreas Lubbe
* Copyright(c) 2015 Tiancheng "Timothy" Gu
* MIT Licensed
*/
var matchHtmlRegExp = /["'&<>]/
var escapeHtml_1 = escapeHtml$1
function escapeHtml$1(string3) {
var str = '' + string3
var match2 = matchHtmlRegExp.exec(str)
if (!match2) {
return str
}
var escape2
var html2 = ''
var index2 = 0
var lastIndex = 0
for (index2 = match2.index; index2 < str.length; index2++) {
switch (str.charCodeAt(index2)) {
case 34:
escape2 = '"'
break
case 38:
escape2 = '&'
break
case 39:
escape2 = '''
break
case 60:
escape2 = '<'
break
case 62:
escape2 = '>'
break
default:
continue
}
if (lastIndex !== index2) {
html2 += str.substring(lastIndex, index2)
}
lastIndex = index2 + 1
html2 += escape2
}
return lastIndex !== index2 ? html2 + str.substring(lastIndex, index2) : html2
}
const getCell = function (event) {
let cell = event.target
while (cell && cell.tagName.toUpperCase() !== 'HTML') {
if (cell.tagName.toUpperCase() === 'TD') {
return cell
}
cell = cell.parentNode
}
return null
}
const isObject$u = function (obj) {
return obj !== null && typeof obj === 'object'
}
const orderBy$4 = function (array4, sortKey, reverse3, sortMethod, sortBy2) {
if (
!sortKey &&
!sortMethod &&
(!sortBy2 || (Array.isArray(sortBy2) && !sortBy2.length))
) {
return array4
}
if (typeof reverse3 === 'string') {
reverse3 = reverse3 === 'descending' ? -1 : 1
} else {
reverse3 = reverse3 && reverse3 < 0 ? -1 : 1
}
const getKey2 = sortMethod
? null
: function (value2, index2) {
if (sortBy2) {
if (!Array.isArray(sortBy2)) {
sortBy2 = [sortBy2]
}
return sortBy2.map((by) => {
if (typeof by === 'string') {
return get$a(value2, by)
} else {
return by(value2, index2, array4)
}
})
}
if (sortKey !== '$key') {
if (isObject$u(value2) && '$value' in value2) value2 = value2.$value
}
return [isObject$u(value2) ? get$a(value2, sortKey) : value2]
}
const compare2 = function (a2, b2) {
if (sortMethod) {
return sortMethod(a2.value, b2.value)
}
for (let i2 = 0, len2 = a2.key.length; i2 < len2; i2++) {
if (a2.key[i2] < b2.key[i2]) {
return -1
}
if (a2.key[i2] > b2.key[i2]) {
return 1
}
}
return 0
}
return array4
.map((value2, index2) => {
return {
value: value2,
index: index2,
key: getKey2 ? getKey2(value2, index2) : null,
}
})
.sort((a2, b2) => {
let order2 = compare2(a2, b2)
if (!order2) {
order2 = a2.index - b2.index
}
return order2 * +reverse3
})
.map((item2) => item2.value)
}
const getColumnById = function (table, columnId) {
let column = null
table.columns.forEach((item2) => {
if (item2.id === columnId) {
column = item2
}
})
return column
}
const getColumnByKey = function (table, columnKey2) {
let column = null
for (let i2 = 0; i2 < table.columns.length; i2++) {
const item2 = table.columns[i2]
if (item2.columnKey === columnKey2) {
column = item2
break
}
}
return column
}
const getColumnByCell = function (table, cell, namespace) {
const matches2 = (cell.className || '').match(
new RegExp(`${namespace}-table_[^\\s]+`, 'gm')
)
if (matches2) {
return getColumnById(table, matches2[0])
}
return null
}
const getRowIdentity = (row, rowKey) => {
if (!row) throw new Error('Row is required when get row identity')
if (typeof rowKey === 'string') {
if (!rowKey.includes('.')) {
return `${row[rowKey]}`
}
const key2 = rowKey.split('.')
let current2 = row
for (const element of key2) {
current2 = current2[element]
}
return `${current2}`
} else if (typeof rowKey === 'function') {
return rowKey.call(null, row)
}
}
const getKeysMap = function (array4, rowKey) {
const arrayMap2 = {}
;(array4 || []).forEach((row, index2) => {
arrayMap2[getRowIdentity(row, rowKey)] = { row, index: index2 }
})
return arrayMap2
}
function mergeOptions$1(defaults2, config2) {
const options2 = {}
let key2
for (key2 in defaults2) {
options2[key2] = defaults2[key2]
}
for (key2 in config2) {
if (hasOwn$e(config2, key2)) {
const value2 = config2[key2]
if (typeof value2 !== 'undefined') {
options2[key2] = value2
}
}
}
return options2
}
function parseWidth(width) {
if (width === '') return width
if (width !== void 0) {
width = Number.parseInt(width, 10)
if (Number.isNaN(width)) {
width = ''
}
}
return width
}
function parseMinWidth(minWidth) {
if (minWidth === '') return minWidth
if (minWidth !== void 0) {
minWidth = parseWidth(minWidth)
if (Number.isNaN(minWidth)) {
minWidth = 80
}
}
return minWidth
}
function parseHeight(height) {
if (typeof height === 'number') {
return height
}
if (typeof height === 'string') {
if (/^\d+(?:px)?$/.test(height)) {
return Number.parseInt(height, 10)
} else {
return height
}
}
return null
}
function compose(...funcs) {
if (funcs.length === 0) {
return (arg) => arg
}
if (funcs.length === 1) {
return funcs[0]
}
return funcs.reduce(
(a2, b2) =>
(...args) =>
a2(b2(...args))
)
}
function toggleRowStatus(statusArr, row, newVal) {
let changed = false
const index2 = statusArr.indexOf(row)
const included = index2 !== -1
const addRow = () => {
statusArr.push(row)
changed = true
}
const removeRow = () => {
statusArr.splice(index2, 1)
changed = true
}
if (typeof newVal === 'boolean') {
if (newVal && !included) {
addRow()
} else if (!newVal && included) {
removeRow()
}
} else {
if (included) {
removeRow()
} else {
addRow()
}
}
return changed
}
function walkTreeNode(
root2,
cb,
childrenKey = 'children',
lazyKey = 'hasChildren'
) {
const isNil2 = (array4) => !(Array.isArray(array4) && array4.length)
function _walker(parent2, children, level) {
cb(parent2, children, level)
children.forEach((item2) => {
if (item2[lazyKey]) {
cb(item2, null, level + 1)
return
}
const children2 = item2[childrenKey]
if (!isNil2(children2)) {
_walker(item2, children2, level + 1)
}
})
}
root2.forEach((item2) => {
if (item2[lazyKey]) {
cb(item2, null, 0)
return
}
const children = item2[childrenKey]
if (!isNil2(children)) {
_walker(item2, children, 0)
}
})
}
let removePopper
function createTablePopper(
trigger2,
popperContent,
popperOptions2,
tooltipEffect
) {
const { nextZIndex: nextZIndex2 } = useZIndex()
function renderContent() {
const isLight = tooltipEffect === 'light'
const content22 = document.createElement('div')
content22.className = `el-popper ${isLight ? 'is-light' : 'is-dark'}`
popperContent = escapeHtml_1(popperContent)
content22.innerHTML = popperContent
content22.style.zIndex = String(nextZIndex2())
document.body.appendChild(content22)
return content22
}
function renderArrow() {
const arrow22 = document.createElement('div')
arrow22.className = 'el-popper__arrow'
return arrow22
}
function showPopper() {
popperInstance && popperInstance.update()
}
removePopper = function removePopper2() {
try {
popperInstance && popperInstance.destroy()
content2 && document.body.removeChild(content2)
off$1(trigger2, 'mouseenter', showPopper)
off$1(trigger2, 'mouseleave', removePopper2)
} catch (e2) {}
}
let popperInstance = null
const content2 = renderContent()
const arrow2 = renderArrow()
content2.appendChild(arrow2)
popperInstance = createPopper(trigger2, content2, {
modifiers: [
{
name: 'offset',
options: {
offset: [0, 8],
},
},
{
name: 'arrow',
options: {
element: arrow2,
padding: 10,
},
},
],
...popperOptions2,
})
on$2(trigger2, 'mouseenter', showPopper)
on$2(trigger2, 'mouseleave', removePopper)
return popperInstance
}
const isFixedColumn = (index2, fixed, store2, realColumns) => {
let start2 = 0
let after2 = index2
if (realColumns) {
if (realColumns[index2].colSpan > 1) {
return {}
}
for (let i2 = 0; i2 < index2; i2++) {
start2 += realColumns[i2].colSpan
}
after2 = start2 + realColumns[index2].colSpan - 1
} else {
start2 = index2
}
let fixedLayout
const columns = store2.states.columns
switch (fixed) {
case 'left':
if (after2 < store2.states.fixedLeafColumnsLength.value) {
fixedLayout = 'left'
}
break
case 'right':
if (
start2 >=
columns.value.length - store2.states.rightFixedLeafColumnsLength.value
) {
fixedLayout = 'right'
}
break
default:
if (after2 < store2.states.fixedLeafColumnsLength.value) {
fixedLayout = 'left'
} else if (
start2 >=
columns.value.length - store2.states.rightFixedLeafColumnsLength.value
) {
fixedLayout = 'right'
}
}
return fixedLayout
? {
direction: fixedLayout,
start: start2,
after: after2,
}
: {}
}
const getFixedColumnsClass = (
namespace,
index2,
fixed,
store2,
realColumns
) => {
const classes = []
const { direction: direction2, start: start2 } = isFixedColumn(
index2,
fixed,
store2,
realColumns
)
if (direction2) {
const isLeft = direction2 === 'left'
classes.push(`${namespace}-fixed-column--${direction2}`)
if (isLeft && start2 === store2.states.fixedLeafColumnsLength.value - 1) {
classes.push('is-last-column')
} else if (
!isLeft &&
start2 ===
store2.states.columns.value.length -
store2.states.rightFixedLeafColumnsLength.value
) {
classes.push('is-first-column')
}
}
return classes
}
function getOffset(offset2, column) {
return (
offset2 +
(column.realWidth === null || Number.isNaN(column.realWidth)
? Number(column.width)
: column.realWidth)
)
}
const getFixedColumnOffset = (index2, fixed, store2, realColumns) => {
const { direction: direction2, start: start2 = 0 } = isFixedColumn(
index2,
fixed,
store2,
realColumns
)
if (!direction2) {
return
}
const styles = {}
const isLeft = direction2 === 'left'
const columns = store2.states.columns.value
if (isLeft) {
styles.left = columns.slice(0, index2).reduce(getOffset, 0)
} else {
styles.right = columns
.slice(start2 + 1)
.reverse()
.reduce(getOffset, 0)
}
return styles
}
const ensurePosition = (style2, key2) => {
if (!style2) return
if (!Number.isNaN(style2[key2])) {
style2[key2] = `${style2[key2]}px`
}
}
function useExpand(watcherData) {
const instance = getCurrentInstance()
const defaultExpandAll = ref(false)
const expandRows = ref([])
const updateExpandRows = () => {
const data2 = watcherData.data.value || []
const rowKey = watcherData.rowKey.value
if (defaultExpandAll.value) {
expandRows.value = data2.slice()
} else if (rowKey) {
const expandRowsMap = getKeysMap(expandRows.value, rowKey)
expandRows.value = data2.reduce((prev, row) => {
const rowId = getRowIdentity(row, rowKey)
const rowInfo = expandRowsMap[rowId]
if (rowInfo) {
prev.push(row)
}
return prev
}, [])
} else {
expandRows.value = []
}
}
const toggleRowExpansion = (row, expanded) => {
const changed = toggleRowStatus(expandRows.value, row, expanded)
if (changed) {
instance.emit('expand-change', row, expandRows.value.slice())
}
}
const setExpandRowKeys = (rowKeys) => {
instance.store.assertRowKey()
const data2 = watcherData.data.value || []
const rowKey = watcherData.rowKey.value
const keysMap = getKeysMap(data2, rowKey)
expandRows.value = rowKeys.reduce((prev, cur) => {
const info = keysMap[cur]
if (info) {
prev.push(info.row)
}
return prev
}, [])
}
const isRowExpanded = (row) => {
const rowKey = watcherData.rowKey.value
if (rowKey) {
const expandMap = getKeysMap(expandRows.value, rowKey)
return !!expandMap[getRowIdentity(row, rowKey)]
}
return expandRows.value.includes(row)
}
return {
updateExpandRows,
toggleRowExpansion,
setExpandRowKeys,
isRowExpanded,
states: {
expandRows,
defaultExpandAll,
},
}
}
function useCurrent(watcherData) {
const instance = getCurrentInstance()
const _currentRowKey = ref(null)
const currentRow = ref(null)
const setCurrentRowKey = (key2) => {
instance.store.assertRowKey()
_currentRowKey.value = key2
setCurrentRowByKey(key2)
}
const restoreCurrentRowKey = () => {
_currentRowKey.value = null
}
const setCurrentRowByKey = (key2) => {
const { data: data2, rowKey } = watcherData
let _currentRow = null
if (rowKey.value) {
_currentRow = (unref(data2) || []).find(
(item2) => getRowIdentity(item2, rowKey.value) === key2
)
}
currentRow.value = _currentRow
}
const updateCurrentRow = (_currentRow) => {
const oldCurrentRow = currentRow.value
if (_currentRow && _currentRow !== oldCurrentRow) {
currentRow.value = _currentRow
instance.emit('current-change', currentRow.value, oldCurrentRow)
return
}
if (!_currentRow && oldCurrentRow) {
currentRow.value = null
instance.emit('current-change', null, oldCurrentRow)
}
}
const updateCurrentRowData = () => {
const rowKey = watcherData.rowKey.value
const data2 = watcherData.data.value || []
const oldCurrentRow = currentRow.value
if (!data2.includes(oldCurrentRow) && oldCurrentRow) {
if (rowKey) {
const currentRowKey = getRowIdentity(oldCurrentRow, rowKey)
setCurrentRowByKey(currentRowKey)
} else {
currentRow.value = null
}
if (currentRow.value === null) {
instance.emit('current-change', null, oldCurrentRow)
}
} else if (_currentRowKey.value) {
setCurrentRowByKey(_currentRowKey.value)
restoreCurrentRowKey()
}
}
return {
setCurrentRowKey,
restoreCurrentRowKey,
setCurrentRowByKey,
updateCurrentRow,
updateCurrentRowData,
states: {
_currentRowKey,
currentRow,
},
}
}
function useTree$2(watcherData) {
const expandRowKeys = ref([])
const treeData = ref({})
const indent = ref(16)
const lazy = ref(false)
const lazyTreeNodeMap = ref({})
const lazyColumnIdentifier = ref('hasChildren')
const childrenColumnName = ref('children')
const instance = getCurrentInstance()
const normalizedData = computed(() => {
if (!watcherData.rowKey.value) return {}
const data2 = watcherData.data.value || []
return normalize2(data2)
})
const normalizedLazyNode = computed(() => {
const rowKey = watcherData.rowKey.value
const keys3 = Object.keys(lazyTreeNodeMap.value)
const res = {}
if (!keys3.length) return res
keys3.forEach((key2) => {
if (lazyTreeNodeMap.value[key2].length) {
const item2 = { children: [] }
lazyTreeNodeMap.value[key2].forEach((row) => {
const currentRowKey = getRowIdentity(row, rowKey)
item2.children.push(currentRowKey)
if (row[lazyColumnIdentifier.value] && !res[currentRowKey]) {
res[currentRowKey] = { children: [] }
}
})
res[key2] = item2
}
})
return res
})
const normalize2 = (data2) => {
const rowKey = watcherData.rowKey.value
const res = {}
walkTreeNode(
data2,
(parent2, children, level) => {
const parentId = getRowIdentity(parent2, rowKey)
if (Array.isArray(children)) {
res[parentId] = {
children: children.map((row) => getRowIdentity(row, rowKey)),
level,
}
} else if (lazy.value) {
res[parentId] = {
children: [],
lazy: true,
level,
}
}
},
childrenColumnName.value,
lazyColumnIdentifier.value
)
return res
}
const updateTreeData = (
ifChangeExpandRowKeys = false,
ifExpandAll = ((_a2) =>
(_a2 = instance.store) == null
? void 0
: _a2.states.defaultExpandAll.value)()
) => {
var _a2
const nested = normalizedData.value
const normalizedLazyNode_ = normalizedLazyNode.value
const keys3 = Object.keys(nested)
const newTreeData = {}
if (keys3.length) {
const oldTreeData = unref(treeData)
const rootLazyRowKeys = []
const getExpanded = (oldValue, key2) => {
if (ifChangeExpandRowKeys) {
if (expandRowKeys.value) {
return ifExpandAll || expandRowKeys.value.includes(key2)
} else {
return !!(
ifExpandAll || (oldValue == null ? void 0 : oldValue.expanded)
)
}
} else {
const included =
ifExpandAll ||
(expandRowKeys.value && expandRowKeys.value.includes(key2))
return !!((oldValue == null ? void 0 : oldValue.expanded) || included)
}
}
keys3.forEach((key2) => {
const oldValue = oldTreeData[key2]
const newValue = { ...nested[key2] }
newValue.expanded = getExpanded(oldValue, key2)
if (newValue.lazy) {
const { loaded = false, loading: loading2 = false } = oldValue || {}
newValue.loaded = !!loaded
newValue.loading = !!loading2
rootLazyRowKeys.push(key2)
}
newTreeData[key2] = newValue
})
const lazyKeys = Object.keys(normalizedLazyNode_)
if (lazy.value && lazyKeys.length && rootLazyRowKeys.length) {
lazyKeys.forEach((key2) => {
const oldValue = oldTreeData[key2]
const lazyNodeChildren = normalizedLazyNode_[key2].children
if (rootLazyRowKeys.includes(key2)) {
if (newTreeData[key2].children.length !== 0) {
throw new Error('[ElTable]children must be an empty array.')
}
newTreeData[key2].children = lazyNodeChildren
} else {
const { loaded = false, loading: loading2 = false } = oldValue || {}
newTreeData[key2] = {
lazy: true,
loaded: !!loaded,
loading: !!loading2,
expanded: getExpanded(oldValue, key2),
children: lazyNodeChildren,
level: '',
}
}
})
}
}
treeData.value = newTreeData
;(_a2 = instance.store) == null ? void 0 : _a2.updateTableScrollY()
}
watch$1(
() => expandRowKeys.value,
() => {
updateTreeData(true)
}
)
watch$1(
() => normalizedData.value,
() => {
updateTreeData()
}
)
watch$1(
() => normalizedLazyNode.value,
() => {
updateTreeData()
}
)
const updateTreeExpandKeys = (value2) => {
expandRowKeys.value = value2
updateTreeData()
}
const toggleTreeExpansion = (row, expanded) => {
instance.store.assertRowKey()
const rowKey = watcherData.rowKey.value
const id2 = getRowIdentity(row, rowKey)
const data2 = id2 && treeData.value[id2]
if (id2 && data2 && 'expanded' in data2) {
const oldExpanded = data2.expanded
expanded = typeof expanded === 'undefined' ? !data2.expanded : expanded
treeData.value[id2].expanded = expanded
if (oldExpanded !== expanded) {
instance.emit('expand-change', row, expanded)
}
instance.store.updateTableScrollY()
}
}
const loadOrToggle = (row) => {
instance.store.assertRowKey()
const rowKey = watcherData.rowKey.value
const id2 = getRowIdentity(row, rowKey)
const data2 = treeData.value[id2]
if (lazy.value && data2 && 'loaded' in data2 && !data2.loaded) {
loadData2(row, id2, data2)
} else {
toggleTreeExpansion(row, void 0)
}
}
const loadData2 = (row, key2, treeNode) => {
const { load } = instance.props
if (load && !treeData.value[key2].loaded) {
treeData.value[key2].loading = true
load(row, treeNode, (data2) => {
if (!Array.isArray(data2)) {
throw new TypeError('[ElTable] data must be an array')
}
treeData.value[key2].loading = false
treeData.value[key2].loaded = true
treeData.value[key2].expanded = true
if (data2.length) {
lazyTreeNodeMap.value[key2] = data2
}
instance.emit('expand-change', row, true)
})
}
}
return {
loadData: loadData2,
loadOrToggle,
toggleTreeExpansion,
updateTreeExpandKeys,
updateTreeData,
normalize: normalize2,
states: {
expandRowKeys,
treeData,
indent,
lazy,
lazyTreeNodeMap,
lazyColumnIdentifier,
childrenColumnName,
},
}
}
const sortData = (data2, states) => {
const sortingColumn = states.sortingColumn
if (!sortingColumn || typeof sortingColumn.sortable === 'string') {
return data2
}
return orderBy$4(
data2,
states.sortProp,
states.sortOrder,
sortingColumn.sortMethod,
sortingColumn.sortBy
)
}
const doFlattenColumns = (columns) => {
const result = []
columns.forEach((column) => {
if (column.children) {
result.push.apply(result, doFlattenColumns(column.children))
} else {
result.push(column)
}
})
return result
}
function useWatcher$1() {
var _a2
const instance = getCurrentInstance()
const { size: tableSize } = toRefs$2(
(_a2 = instance.proxy) == null ? void 0 : _a2.$props
)
const rowKey = ref(null)
const data2 = ref([])
const _data = ref([])
const isComplex = ref(false)
const _columns = ref([])
const originColumns = ref([])
const columns = ref([])
const fixedColumns = ref([])
const rightFixedColumns = ref([])
const leafColumns = ref([])
const fixedLeafColumns = ref([])
const rightFixedLeafColumns = ref([])
const leafColumnsLength = ref(0)
const fixedLeafColumnsLength = ref(0)
const rightFixedLeafColumnsLength = ref(0)
const isAllSelected = ref(false)
const selection = ref([])
const reserveSelection = ref(false)
const selectOnIndeterminate = ref(false)
const selectable = ref(null)
const filters = ref({})
const filteredData = ref(null)
const sortingColumn = ref(null)
const sortProp = ref(null)
const sortOrder = ref(null)
const hoverRow = ref(null)
watch$1(data2, () => instance.state && scheduleLayout(false), {
deep: true,
})
const assertRowKey = () => {
if (!rowKey.value) throw new Error('[ElTable] prop row-key is required')
}
const updateColumns = () => {
fixedColumns.value = _columns.value.filter(
(column) => column.fixed === true || column.fixed === 'left'
)
rightFixedColumns.value = _columns.value.filter(
(column) => column.fixed === 'right'
)
if (
fixedColumns.value.length > 0 &&
_columns.value[0] &&
_columns.value[0].type === 'selection' &&
!_columns.value[0].fixed
) {
_columns.value[0].fixed = true
fixedColumns.value.unshift(_columns.value[0])
}
const notFixedColumns = _columns.value.filter((column) => !column.fixed)
originColumns.value = []
.concat(fixedColumns.value)
.concat(notFixedColumns)
.concat(rightFixedColumns.value)
const leafColumns2 = doFlattenColumns(notFixedColumns)
const fixedLeafColumns2 = doFlattenColumns(fixedColumns.value)
const rightFixedLeafColumns2 = doFlattenColumns(rightFixedColumns.value)
leafColumnsLength.value = leafColumns2.length
fixedLeafColumnsLength.value = fixedLeafColumns2.length
rightFixedLeafColumnsLength.value = rightFixedLeafColumns2.length
columns.value = []
.concat(fixedLeafColumns2)
.concat(leafColumns2)
.concat(rightFixedLeafColumns2)
isComplex.value =
fixedColumns.value.length > 0 || rightFixedColumns.value.length > 0
}
const scheduleLayout = (needUpdateColumns, immediate = false) => {
if (needUpdateColumns) {
updateColumns()
}
if (immediate) {
instance.state.doLayout()
} else {
instance.state.debouncedUpdateLayout()
}
}
const isSelected = (row) => {
return selection.value.includes(row)
}
const clearSelection = () => {
isAllSelected.value = false
const oldSelection = selection.value
if (oldSelection.length) {
selection.value = []
instance.emit('selection-change', [])
}
}
const cleanSelection = () => {
let deleted
if (rowKey.value) {
deleted = []
const selectedMap = getKeysMap(selection.value, rowKey.value)
const dataMap = getKeysMap(data2.value, rowKey.value)
for (const key2 in selectedMap) {
if (hasOwn$e(selectedMap, key2) && !dataMap[key2]) {
deleted.push(selectedMap[key2].row)
}
}
} else {
deleted = selection.value.filter((item2) => !data2.value.includes(item2))
}
if (deleted.length) {
const newSelection = selection.value.filter(
(item2) => !deleted.includes(item2)
)
selection.value = newSelection
instance.emit('selection-change', newSelection.slice())
}
}
const getSelectionRows = () => {
return (selection.value || []).slice()
}
const toggleRowSelection = (row, selected = void 0, emitChange = true) => {
const changed = toggleRowStatus(selection.value, row, selected)
if (changed) {
const newSelection = (selection.value || []).slice()
if (emitChange) {
instance.emit('select', newSelection, row)
}
instance.emit('selection-change', newSelection)
}
}
const _toggleAllSelection = () => {
var _a22, _b2
const value2 = selectOnIndeterminate.value
? !isAllSelected.value
: !(isAllSelected.value || selection.value.length)
isAllSelected.value = value2
let selectionChanged = false
let childrenCount = 0
const rowKey2 =
(_b2 =
(_a22 = instance == null ? void 0 : instance.store) == null
? void 0
: _a22.states) == null
? void 0
: _b2.rowKey.value
data2.value.forEach((row, index2) => {
const rowIndex = index2 + childrenCount
if (selectable.value) {
if (
selectable.value.call(null, row, rowIndex) &&
toggleRowStatus(selection.value, row, value2)
) {
selectionChanged = true
}
} else {
if (toggleRowStatus(selection.value, row, value2)) {
selectionChanged = true
}
}
childrenCount += getChildrenCount(getRowIdentity(row, rowKey2))
})
if (selectionChanged) {
instance.emit(
'selection-change',
selection.value ? selection.value.slice() : []
)
}
instance.emit('select-all', selection.value)
}
const updateSelectionByRowKey = () => {
const selectedMap = getKeysMap(selection.value, rowKey.value)
data2.value.forEach((row) => {
const rowId = getRowIdentity(row, rowKey.value)
const rowInfo = selectedMap[rowId]
if (rowInfo) {
selection.value[rowInfo.index] = row
}
})
}
const updateAllSelected = () => {
var _a22, _b2, _c2
if (((_a22 = data2.value) == null ? void 0 : _a22.length) === 0) {
isAllSelected.value = false
return
}
let selectedMap
if (rowKey.value) {
selectedMap = getKeysMap(selection.value, rowKey.value)
}
const isSelected2 = function (row) {
if (selectedMap) {
return !!selectedMap[getRowIdentity(row, rowKey.value)]
} else {
return selection.value.includes(row)
}
}
let isAllSelected_ = true
let selectedCount = 0
let childrenCount = 0
for (let i2 = 0, j2 = (data2.value || []).length; i2 < j2; i2++) {
const keyProp =
(_c2 =
(_b2 = instance == null ? void 0 : instance.store) == null
? void 0
: _b2.states) == null
? void 0
: _c2.rowKey.value
const rowIndex = i2 + childrenCount
const item2 = data2.value[i2]
const isRowSelectable =
selectable.value && selectable.value.call(null, item2, rowIndex)
if (!isSelected2(item2)) {
if (!selectable.value || isRowSelectable) {
isAllSelected_ = false
break
}
} else {
selectedCount++
}
childrenCount += getChildrenCount(getRowIdentity(item2, keyProp))
}
if (selectedCount === 0) isAllSelected_ = false
isAllSelected.value = isAllSelected_
}
const getChildrenCount = (rowKey2) => {
var _a22
if (!instance || !instance.store) return 0
const { treeData } = instance.store.states
let count2 = 0
const children =
(_a22 = treeData.value[rowKey2]) == null ? void 0 : _a22.children
if (children) {
count2 += children.length
children.forEach((childKey) => {
count2 += getChildrenCount(childKey)
})
}
return count2
}
const updateFilters = (columns2, values2) => {
if (!Array.isArray(columns2)) {
columns2 = [columns2]
}
const filters_ = {}
columns2.forEach((col) => {
filters.value[col.id] = values2
filters_[col.columnKey || col.id] = values2
})
return filters_
}
const updateSort = (column, prop, order2) => {
if (sortingColumn.value && sortingColumn.value !== column) {
sortingColumn.value.order = null
}
sortingColumn.value = column
sortProp.value = prop
sortOrder.value = order2
}
const execFilter = () => {
let sourceData = unref(_data)
Object.keys(filters.value).forEach((columnId) => {
const values2 = filters.value[columnId]
if (!values2 || values2.length === 0) return
const column = getColumnById(
{
columns: columns.value,
},
columnId
)
if (column && column.filterMethod) {
sourceData = sourceData.filter((row) => {
return values2.some((value2) =>
column.filterMethod.call(null, value2, row, column)
)
})
}
})
filteredData.value = sourceData
}
const execSort = () => {
data2.value = sortData(filteredData.value, {
sortingColumn: sortingColumn.value,
sortProp: sortProp.value,
sortOrder: sortOrder.value,
})
}
const execQuery = (ignore = void 0) => {
if (!(ignore && ignore.filter)) {
execFilter()
}
execSort()
}
const clearFilter = (columnKeys) => {
const { tableHeaderRef } = instance.refs
if (!tableHeaderRef) return
const panels = Object.assign({}, tableHeaderRef.filterPanels)
const keys3 = Object.keys(panels)
if (!keys3.length) return
if (typeof columnKeys === 'string') {
columnKeys = [columnKeys]
}
if (Array.isArray(columnKeys)) {
const columns_ = columnKeys.map((key2) =>
getColumnByKey(
{
columns: columns.value,
},
key2
)
)
keys3.forEach((key2) => {
const column = columns_.find((col) => col.id === key2)
if (column) {
column.filteredValue = []
}
})
instance.store.commit('filterChange', {
column: columns_,
values: [],
silent: true,
multi: true,
})
} else {
keys3.forEach((key2) => {
const column = columns.value.find((col) => col.id === key2)
if (column) {
column.filteredValue = []
}
})
filters.value = {}
instance.store.commit('filterChange', {
column: {},
values: [],
silent: true,
})
}
}
const clearSort = () => {
if (!sortingColumn.value) return
updateSort(null, null, null)
instance.store.commit('changeSortCondition', {
silent: true,
})
}
const {
setExpandRowKeys,
toggleRowExpansion,
updateExpandRows,
states: expandStates,
isRowExpanded,
} = useExpand({
data: data2,
rowKey,
})
const {
updateTreeExpandKeys,
toggleTreeExpansion,
updateTreeData,
loadOrToggle,
states: treeStates,
} = useTree$2({
data: data2,
rowKey,
})
const {
updateCurrentRowData,
updateCurrentRow,
setCurrentRowKey,
states: currentData,
} = useCurrent({
data: data2,
rowKey,
})
const setExpandRowKeysAdapter = (val2) => {
setExpandRowKeys(val2)
updateTreeExpandKeys(val2)
}
const toggleRowExpansionAdapter = (row, expanded) => {
const hasExpandColumn = columns.value.some(
({ type: type4 }) => type4 === 'expand'
)
if (hasExpandColumn) {
toggleRowExpansion(row, expanded)
} else {
toggleTreeExpansion(row, expanded)
}
}
return {
assertRowKey,
updateColumns,
scheduleLayout,
isSelected,
clearSelection,
cleanSelection,
getSelectionRows,
toggleRowSelection,
_toggleAllSelection,
toggleAllSelection: null,
updateSelectionByRowKey,
updateAllSelected,
updateFilters,
updateCurrentRow,
updateSort,
execFilter,
execSort,
execQuery,
clearFilter,
clearSort,
toggleRowExpansion,
setExpandRowKeysAdapter,
setCurrentRowKey,
toggleRowExpansionAdapter,
isRowExpanded,
updateExpandRows,
updateCurrentRowData,
loadOrToggle,
updateTreeData,
states: {
tableSize,
rowKey,
data: data2,
_data,
isComplex,
_columns,
originColumns,
columns,
fixedColumns,
rightFixedColumns,
leafColumns,
fixedLeafColumns,
rightFixedLeafColumns,
leafColumnsLength,
fixedLeafColumnsLength,
rightFixedLeafColumnsLength,
isAllSelected,
selection,
reserveSelection,
selectOnIndeterminate,
selectable,
filters,
filteredData,
sortingColumn,
sortProp,
sortOrder,
hoverRow,
...expandStates,
...treeStates,
...currentData,
},
}
}
function replaceColumn(array4, column) {
return array4.map((item2) => {
var _a2
if (item2.id === column.id) {
return column
} else if ((_a2 = item2.children) == null ? void 0 : _a2.length) {
item2.children = replaceColumn(item2.children, column)
}
return item2
})
}
function sortColumn(array4) {
array4.forEach((item2) => {
var _a2, _b2
item2.no = (_a2 = item2.getColumnIndex) == null ? void 0 : _a2.call(item2)
if ((_b2 = item2.children) == null ? void 0 : _b2.length) {
sortColumn(item2.children)
}
})
array4.sort((cur, pre) => cur.no - pre.no)
}
function useStore$1() {
const instance = getCurrentInstance()
const watcher = useWatcher$1()
const ns = useNamespace('table')
const mutations = {
setData(states, data2) {
const dataInstanceChanged = unref(states._data) !== data2
states.data.value = data2
states._data.value = data2
instance.store.execQuery()
instance.store.updateCurrentRowData()
instance.store.updateExpandRows()
instance.store.updateTreeData(
instance.store.states.defaultExpandAll.value
)
if (unref(states.reserveSelection)) {
instance.store.assertRowKey()
instance.store.updateSelectionByRowKey()
} else {
if (dataInstanceChanged) {
instance.store.clearSelection()
} else {
instance.store.cleanSelection()
}
}
instance.store.updateAllSelected()
if (instance.$ready) {
instance.store.scheduleLayout()
}
},
insertColumn(states, column, parent2) {
const array4 = unref(states._columns)
let newColumns = []
if (!parent2) {
array4.push(column)
newColumns = array4
} else {
if (parent2 && !parent2.children) {
parent2.children = []
}
parent2.children.push(column)
newColumns = replaceColumn(array4, parent2)
}
sortColumn(newColumns)
states._columns.value = newColumns
if (column.type === 'selection') {
states.selectable.value = column.selectable
states.reserveSelection.value = column.reserveSelection
}
if (instance.$ready) {
instance.store.updateColumns()
instance.store.scheduleLayout()
}
},
removeColumn(states, column, parent2) {
const array4 = unref(states._columns) || []
if (parent2) {
parent2.children.splice(
parent2.children.findIndex((item2) => item2.id === column.id),
1
)
if (parent2.children.length === 0) {
delete parent2.children
}
states._columns.value = replaceColumn(array4, parent2)
} else {
const index2 = array4.indexOf(column)
if (index2 > -1) {
array4.splice(index2, 1)
states._columns.value = array4
}
}
if (instance.$ready) {
instance.store.updateColumns()
instance.store.scheduleLayout()
}
},
sort(states, options2) {
const { prop, order: order2, init: init2 } = options2
if (prop) {
const column = unref(states.columns).find(
(column2) => column2.property === prop
)
if (column) {
column.order = order2
instance.store.updateSort(column, prop, order2)
instance.store.commit('changeSortCondition', { init: init2 })
}
}
},
changeSortCondition(states, options2) {
const {
sortingColumn: column,
sortProp: prop,
sortOrder: order2,
} = states
if (unref(order2) === null) {
states.sortingColumn.value = null
states.sortProp.value = null
}
const ingore = { filter: true }
instance.store.execQuery(ingore)
if (!options2 || !(options2.silent || options2.init)) {
instance.emit('sort-change', {
column: unref(column),
prop: unref(prop),
order: unref(order2),
})
}
instance.store.updateTableScrollY()
},
filterChange(_states, options2) {
const { column, values: values2, silent } = options2
const newFilters = instance.store.updateFilters(column, values2)
instance.store.execQuery()
if (!silent) {
instance.emit('filter-change', newFilters)
}
instance.store.updateTableScrollY()
},
toggleAllSelection() {
instance.store.toggleAllSelection()
},
rowSelectedChanged(_states, row) {
instance.store.toggleRowSelection(row)
instance.store.updateAllSelected()
},
setHoverRow(states, row) {
states.hoverRow.value = row
},
setCurrentRow(_states, row) {
instance.store.updateCurrentRow(row)
},
}
const commit2 = function (name2, ...args) {
const mutations2 = instance.store.mutations
if (mutations2[name2]) {
mutations2[name2].apply(instance, [instance.store.states].concat(args))
} else {
throw new Error(`Action not found: ${name2}`)
}
}
const updateTableScrollY = function () {
nextTick(() => instance.layout.updateScrollY.apply(instance.layout))
}
return {
ns,
...watcher,
mutations,
commit: commit2,
updateTableScrollY,
}
}
const InitialStateMap = {
rowKey: 'rowKey',
defaultExpandAll: 'defaultExpandAll',
selectOnIndeterminate: 'selectOnIndeterminate',
indent: 'indent',
lazy: 'lazy',
data: 'data',
['treeProps.hasChildren']: {
key: 'lazyColumnIdentifier',
default: 'hasChildren',
},
['treeProps.children']: {
key: 'childrenColumnName',
default: 'children',
},
}
function createStore$1(table, props2) {
if (!table) {
throw new Error('Table is required.')
}
const store2 = useStore$1()
store2.toggleAllSelection = debounce$3(store2._toggleAllSelection, 10)
Object.keys(InitialStateMap).forEach((key2) => {
handleValue(getArrKeysValue(props2, key2), key2, store2)
})
proxyTableProps(store2, props2)
return store2
}
function proxyTableProps(store2, props2) {
Object.keys(InitialStateMap).forEach((key2) => {
watch$1(
() => getArrKeysValue(props2, key2),
(value2) => {
handleValue(value2, key2, store2)
}
)
})
}
function handleValue(value2, propsKey, store2) {
let newVal = value2
let storeKey2 = InitialStateMap[propsKey]
if (typeof InitialStateMap[propsKey] === 'object') {
storeKey2 = storeKey2.key
newVal = newVal || InitialStateMap[propsKey].default
}
store2.states[storeKey2].value = newVal
}
function getArrKeysValue(props2, keys3) {
if (keys3.includes('.')) {
const keyList = keys3.split('.')
let value2 = props2
keyList.forEach((key2) => {
value2 = value2[key2]
})
return value2
} else {
return props2[keys3]
}
}
class TableLayout {
constructor(options2) {
this.observers = []
this.table = null
this.store = null
this.columns = []
this.fit = true
this.showHeader = true
this.height = ref(null)
this.scrollX = ref(false)
this.scrollY = ref(false)
this.bodyWidth = ref(null)
this.fixedWidth = ref(null)
this.rightFixedWidth = ref(null)
this.tableHeight = ref(null)
this.headerHeight = ref(44)
this.appendHeight = ref(0)
this.footerHeight = ref(44)
this.viewportHeight = ref(null)
this.bodyHeight = ref(null)
this.bodyScrollHeight = ref(0)
this.fixedBodyHeight = ref(null)
this.gutterWidth = 0
for (const name2 in options2) {
if (hasOwn$e(options2, name2)) {
if (isRef(this[name2])) {
this[name2].value = options2[name2]
} else {
this[name2] = options2[name2]
}
}
}
if (!this.table) {
throw new Error('Table is required for Table Layout')
}
if (!this.store) {
throw new Error('Store is required for Table Layout')
}
}
updateScrollY() {
const height = this.height.value
if (height === null) return false
const bodyWrapper = this.table.refs.bodyWrapper
if (this.table.vnode.el && bodyWrapper) {
let scrollY = true
const prevScrollY = this.scrollY.value
if (this.bodyHeight.value === null) {
scrollY = false
} else {
scrollY = bodyWrapper.scrollHeight > this.bodyHeight.value
}
this.scrollY.value = scrollY
return prevScrollY !== scrollY
}
return false
}
setHeight(value2, prop = 'height') {
if (!isClient$1) return
const el2 = this.table.vnode.el
value2 = parseHeight(value2)
this.height.value = Number(value2)
if (!el2 && (value2 || value2 === 0))
return nextTick(() => this.setHeight(value2, prop))
if (typeof value2 === 'number') {
el2.style[prop] = `${value2}px`
this.updateElsHeight()
} else if (typeof value2 === 'string') {
el2.style[prop] = value2
this.updateElsHeight()
}
}
setMaxHeight(value2) {
this.setHeight(value2, 'max-height')
}
getFlattenColumns() {
const flattenColumns = []
const columns = this.table.store.states.columns.value
columns.forEach((column) => {
if (column.isColumnGroup) {
flattenColumns.push.apply(flattenColumns, column.columns)
} else {
flattenColumns.push(column)
}
})
return flattenColumns
}
updateElsHeight() {
var _a2, _b2
if (!this.table.$ready) return nextTick(() => this.updateElsHeight())
const {
tableWrapper,
headerWrapper,
appendWrapper,
footerWrapper,
tableHeader,
tableBody,
} = this.table.refs
if (tableWrapper && tableWrapper.style.display === 'none') {
return
}
const { tableLayout } = this.table.props
this.appendHeight.value = appendWrapper ? appendWrapper.offsetHeight : 0
if (this.showHeader && !headerWrapper && tableLayout === 'fixed') {
return
}
const headerTrElm = tableHeader ? tableHeader : null
const noneHeader = this.headerDisplayNone(headerTrElm)
const headerWrapperOffsetHeight =
(headerWrapper == null ? void 0 : headerWrapper.offsetHeight) || 0
const headerHeight = (this.headerHeight.value = !this.showHeader
? 0
: headerWrapperOffsetHeight)
if (
this.showHeader &&
!noneHeader &&
headerWrapperOffsetHeight > 0 &&
(this.table.store.states.columns.value || []).length > 0 &&
headerHeight < 2
) {
return nextTick(() => this.updateElsHeight())
}
const tableHeight = (this.tableHeight.value =
(_b2 = (_a2 = this.table) == null ? void 0 : _a2.vnode.el) == null
? void 0
: _b2.clientHeight)
const footerHeight = (this.footerHeight.value = footerWrapper
? footerWrapper.offsetHeight
: 0)
if (this.height.value !== null) {
if (this.bodyHeight.value === null) {
requestAnimationFrame(() => this.updateElsHeight())
}
this.bodyHeight.value =
tableHeight - headerHeight - footerHeight + (footerWrapper ? 1 : 0)
this.bodyScrollHeight.value =
tableBody == null ? void 0 : tableBody.scrollHeight
}
this.fixedBodyHeight.value = this.scrollX.value
? this.bodyHeight.value - this.gutterWidth
: this.bodyHeight.value
this.viewportHeight.value = this.scrollX.value
? tableHeight - this.gutterWidth
: tableHeight
this.updateScrollY()
this.notifyObservers('scrollable')
}
headerDisplayNone(elm) {
if (!elm) return true
let headerChild = elm
while (headerChild.tagName !== 'DIV') {
if (getComputedStyle(headerChild).display === 'none') {
return true
}
headerChild = headerChild.parentElement
}
return false
}
updateColumnsWidth() {
if (!isClient$1) return
const fit = this.fit
const bodyWidth = this.table.vnode.el.clientWidth
let bodyMinWidth = 0
const flattenColumns = this.getFlattenColumns()
const flexColumns = flattenColumns.filter(
(column) => typeof column.width !== 'number'
)
flattenColumns.forEach((column) => {
if (typeof column.width === 'number' && column.realWidth)
column.realWidth = null
})
if (flexColumns.length > 0 && fit) {
flattenColumns.forEach((column) => {
bodyMinWidth += Number(column.width || column.minWidth || 80)
})
if (bodyMinWidth <= bodyWidth) {
this.scrollX.value = false
const totalFlexWidth = bodyWidth - bodyMinWidth
if (flexColumns.length === 1) {
flexColumns[0].realWidth =
Number(flexColumns[0].minWidth || 80) + totalFlexWidth
} else {
const allColumnsWidth = flexColumns.reduce(
(prev, column) => prev + Number(column.minWidth || 80),
0
)
const flexWidthPerPixel = totalFlexWidth / allColumnsWidth
let noneFirstWidth = 0
flexColumns.forEach((column, index2) => {
if (index2 === 0) return
const flexWidth = Math.floor(
Number(column.minWidth || 80) * flexWidthPerPixel
)
noneFirstWidth += flexWidth
column.realWidth = Number(column.minWidth || 80) + flexWidth
})
flexColumns[0].realWidth =
Number(flexColumns[0].minWidth || 80) +
totalFlexWidth -
noneFirstWidth
}
} else {
this.scrollX.value = true
flexColumns.forEach((column) => {
column.realWidth = Number(column.minWidth)
})
}
this.bodyWidth.value = Math.max(bodyMinWidth, bodyWidth)
this.table.state.resizeState.value.width = this.bodyWidth.value
} else {
flattenColumns.forEach((column) => {
if (!column.width && !column.minWidth) {
column.realWidth = 80
} else {
column.realWidth = Number(column.width || column.minWidth)
}
bodyMinWidth += column.realWidth
})
this.scrollX.value = bodyMinWidth > bodyWidth
this.bodyWidth.value = bodyMinWidth
}
const fixedColumns = this.store.states.fixedColumns.value
if (fixedColumns.length > 0) {
let fixedWidth = 0
fixedColumns.forEach((column) => {
fixedWidth += Number(column.realWidth || column.width)
})
this.fixedWidth.value = fixedWidth
}
const rightFixedColumns = this.store.states.rightFixedColumns.value
if (rightFixedColumns.length > 0) {
let rightFixedWidth = 0
rightFixedColumns.forEach((column) => {
rightFixedWidth += Number(column.realWidth || column.width)
})
this.rightFixedWidth.value = rightFixedWidth
}
this.notifyObservers('columns')
}
addObserver(observer) {
this.observers.push(observer)
}
removeObserver(observer) {
const index2 = this.observers.indexOf(observer)
if (index2 !== -1) {
this.observers.splice(index2, 1)
}
}
notifyObservers(event) {
const observers = this.observers
observers.forEach((observer) => {
var _a2, _b2
switch (event) {
case 'columns':
;(_a2 = observer.state) == null ? void 0 : _a2.onColumnsChange(this)
break
case 'scrollable':
;(_b2 = observer.state) == null
? void 0
: _b2.onScrollableChange(this)
break
default:
throw new Error(`Table Layout don't have event ${event}.`)
}
})
}
}
const { CheckboxGroup: ElCheckboxGroup } = ElCheckbox
const _sfc_main$7v = defineComponent({
name: 'ElTableFilterPanel',
components: {
ElCheckbox,
ElCheckboxGroup,
ElScrollbar,
ElTooltip,
ElIcon,
ArrowDown: arrowDown,
ArrowUp: arrowUp,
},
directives: { ClickOutside },
props: {
placement: {
type: String,
default: 'bottom-start',
},
store: {
type: Object,
},
column: {
type: Object,
},
upDataColumn: {
type: Function,
},
},
setup(props2) {
const instance = getCurrentInstance()
const { t: t3 } = useLocale()
const ns = useNamespace('table-filter')
const parent2 = instance == null ? void 0 : instance.parent
if (!parent2.filterPanels.value[props2.column.id]) {
parent2.filterPanels.value[props2.column.id] = instance
}
const tooltipVisible = ref(false)
const tooltip = ref(null)
const filters = computed(() => {
return props2.column && props2.column.filters
})
const filterValue = computed({
get: () => {
var _a2
return (((_a2 = props2.column) == null ? void 0 : _a2.filteredValue) ||
[])[0]
},
set: (value2) => {
if (filteredValue.value) {
if (typeof value2 !== 'undefined' && value2 !== null) {
filteredValue.value.splice(0, 1, value2)
} else {
filteredValue.value.splice(0, 1)
}
}
},
})
const filteredValue = computed({
get() {
if (props2.column) {
return props2.column.filteredValue || []
}
return []
},
set(value2) {
if (props2.column) {
props2.upDataColumn('filteredValue', value2)
}
},
})
const multiple = computed(() => {
if (props2.column) {
return props2.column.filterMultiple
}
return true
})
const isActive = (filter2) => {
return filter2.value === filterValue.value
}
const hidden = () => {
tooltipVisible.value = false
}
const showFilterPanel = (e2) => {
e2.stopPropagation()
tooltipVisible.value = !tooltipVisible.value
}
const hideFilterPanel = () => {
tooltipVisible.value = false
}
const handleConfirm = () => {
confirmFilter(filteredValue.value)
hidden()
}
const handleReset = () => {
filteredValue.value = []
confirmFilter(filteredValue.value)
hidden()
}
const handleSelect = (_filterValue) => {
filterValue.value = _filterValue
if (typeof _filterValue !== 'undefined' && _filterValue !== null) {
confirmFilter(filteredValue.value)
} else {
confirmFilter([])
}
hidden()
}
const confirmFilter = (filteredValue2) => {
props2.store.commit('filterChange', {
column: props2.column,
values: filteredValue2,
})
props2.store.updateAllSelected()
}
watch$1(
tooltipVisible,
(value2) => {
if (props2.column) {
props2.upDataColumn('filterOpened', value2)
}
},
{
immediate: true,
}
)
const popperPaneRef = computed(() => {
var _a2, _b2
return (_b2 = (_a2 = tooltip.value) == null ? void 0 : _a2.popperRef) ==
null
? void 0
: _b2.contentRef
})
return {
tooltipVisible,
multiple,
filteredValue,
filterValue,
filters,
handleConfirm,
handleReset,
handleSelect,
isActive,
t: t3,
ns,
showFilterPanel,
hideFilterPanel,
popperPaneRef,
tooltip,
}
},
})
const _hoisted_1$6c = { key: 0 }
const _hoisted_2$54 = ['disabled']
const _hoisted_3$4y = ['label', 'onClick']
function _sfc_render$v(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_checkbox_group = resolveComponent('el-checkbox-group')
const _component_el_scrollbar = resolveComponent('el-scrollbar')
const _component_arrow_up = resolveComponent('arrow-up')
const _component_arrow_down = resolveComponent('arrow-down')
const _component_el_icon = resolveComponent('el-icon')
const _component_el_tooltip = resolveComponent('el-tooltip')
const _directive_click_outside = resolveDirective('click-outside')
return (
openBlock(),
createBlock(
_component_el_tooltip,
{
ref: 'tooltip',
visible: _ctx.tooltipVisible,
'onUpdate:visible':
_cache[5] || (_cache[5] = ($event) => (_ctx.tooltipVisible = $event)),
offset: 0,
placement: _ctx.placement,
'show-arrow': false,
'stop-popper-mouse-event': false,
'append-to-body': '',
effect: 'light',
pure: '',
'popper-class': _ctx.ns.b(),
persistent: '',
},
{
content: withCtx(() => [
_ctx.multiple
? (openBlock(),
createElementBlock('div', _hoisted_1$6c, [
createElementVNode(
'div',
{
class: normalizeClass(_ctx.ns.e('content')),
},
[
createVNode$1(
_component_el_scrollbar,
{
'wrap-class': _ctx.ns.e('wrap'),
},
{
default: withCtx(() => [
createVNode$1(
_component_el_checkbox_group,
{
modelValue: _ctx.filteredValue,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(_ctx.filteredValue = $event)),
class: normalizeClass(
_ctx.ns.e('checkbox-group')
),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.filters, (filter2) => {
return (
openBlock(),
createBlock(
_component_el_checkbox,
{
key: filter2.value,
label: filter2.value,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(filter2.text),
1
),
]),
_: 2,
},
1032,
['label']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue', 'class']
),
]),
_: 1,
},
8,
['wrap-class']
),
],
2
),
createElementVNode(
'div',
{
class: normalizeClass(_ctx.ns.e('bottom')),
},
[
createElementVNode(
'button',
{
class: normalizeClass({
[_ctx.ns.is('disabled')]:
_ctx.filteredValue.length === 0,
}),
disabled: _ctx.filteredValue.length === 0,
type: 'button',
onClick:
_cache[1] ||
(_cache[1] = (...args) =>
_ctx.handleConfirm && _ctx.handleConfirm(...args)),
},
toDisplayString$1(_ctx.t('el.table.confirmFilter')),
11,
_hoisted_2$54
),
createElementVNode(
'button',
{
type: 'button',
onClick:
_cache[2] ||
(_cache[2] = (...args) =>
_ctx.handleReset && _ctx.handleReset(...args)),
},
toDisplayString$1(_ctx.t('el.table.resetFilter')),
1
),
],
2
),
]))
: (openBlock(),
createElementBlock(
'ul',
{
key: 1,
class: normalizeClass(_ctx.ns.e('list')),
},
[
createElementVNode(
'li',
{
class: normalizeClass([
_ctx.ns.e('list-item'),
{
[_ctx.ns.is('active')]:
_ctx.filterValue === void 0 ||
_ctx.filterValue === null,
},
]),
onClick:
_cache[3] ||
(_cache[3] = ($event) => _ctx.handleSelect(null)),
},
toDisplayString$1(_ctx.t('el.table.clearFilter')),
3
),
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.filters, (filter2) => {
return (
openBlock(),
createElementBlock(
'li',
{
key: filter2.value,
class: normalizeClass([
_ctx.ns.e('list-item'),
_ctx.ns.is('active', _ctx.isActive(filter2)),
]),
label: filter2.value,
onClick: ($event) =>
_ctx.handleSelect(filter2.value),
},
toDisplayString$1(filter2.text),
11,
_hoisted_3$4y
)
)
}),
128
)),
],
2
)),
]),
default: withCtx(() => [
withDirectives(
(openBlock(),
createElementBlock(
'span',
{
class: normalizeClass([
`${_ctx.ns.namespace.value}-table__column-filter-trigger`,
`${_ctx.ns.namespace.value}-none-outline`,
]),
onClick:
_cache[4] ||
(_cache[4] = (...args) =>
_ctx.showFilterPanel && _ctx.showFilterPanel(...args)),
},
[
createVNode$1(_component_el_icon, null, {
default: withCtx(() => [
_ctx.column.filterOpened
? (openBlock(),
createBlock(_component_arrow_up, { key: 0 }))
: (openBlock(),
createBlock(_component_arrow_down, { key: 1 })),
]),
_: 1,
}),
],
2
)),
[
[
_directive_click_outside,
_ctx.hideFilterPanel,
_ctx.popperPaneRef,
],
]
),
]),
_: 1,
},
8,
['visible', 'placement', 'popper-class']
)
)
}
var FilterPanel = /* @__PURE__ */ _export_sfc$1(_sfc_main$7v, [
['render', _sfc_render$v],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/table/src/filter-panel.vue',
],
])
function useLayoutObserver(root2) {
const instance = getCurrentInstance()
onBeforeMount(() => {
tableLayout.value.addObserver(instance)
})
onMounted(() => {
onColumnsChange(tableLayout.value)
onScrollableChange(tableLayout.value)
})
onUpdated(() => {
onColumnsChange(tableLayout.value)
onScrollableChange(tableLayout.value)
})
onUnmounted(() => {
tableLayout.value.removeObserver(instance)
})
const tableLayout = computed(() => {
const layout2 = root2.layout
if (!layout2) {
throw new Error('Can not find table layout.')
}
return layout2
})
const onColumnsChange = (layout2) => {
var _a2
const cols =
((_a2 = root2.vnode.el) == null
? void 0
: _a2.querySelectorAll('colgroup > col')) || []
if (!cols.length) return
const flattenColumns = layout2.getFlattenColumns()
const columnsMap = {}
flattenColumns.forEach((column) => {
columnsMap[column.id] = column
})
for (let i2 = 0, j2 = cols.length; i2 < j2; i2++) {
const col = cols[i2]
const name2 = col.getAttribute('name')
const column = columnsMap[name2]
if (column) {
col.setAttribute('width', column.realWidth || column.width)
}
}
}
const onScrollableChange = (layout2) => {
var _a2, _b2
const cols =
((_a2 = root2.vnode.el) == null
? void 0
: _a2.querySelectorAll('colgroup > col[name=gutter]')) || []
for (let i2 = 0, j2 = cols.length; i2 < j2; i2++) {
const col = cols[i2]
col.setAttribute(
'width',
layout2.scrollY.value ? layout2.gutterWidth : '0'
)
}
const ths =
((_b2 = root2.vnode.el) == null
? void 0
: _b2.querySelectorAll('th.gutter')) || []
for (let i2 = 0, j2 = ths.length; i2 < j2; i2++) {
const th2 = ths[i2]
th2.style.width = layout2.scrollY.value ? `${layout2.gutterWidth}px` : '0'
th2.style.display = layout2.scrollY.value ? '' : 'none'
}
}
return {
tableLayout: tableLayout.value,
onColumnsChange,
onScrollableChange,
}
}
const TABLE_INJECTION_KEY = Symbol('ElTable')
function useEvent(props2, emit2) {
const instance = getCurrentInstance()
const parent2 = inject(TABLE_INJECTION_KEY)
const handleFilterClick = (event) => {
event.stopPropagation()
return
}
const handleHeaderClick = (event, column) => {
if (!column.filters && column.sortable) {
handleSortClick(event, column, false)
} else if (column.filterable && !column.sortable) {
handleFilterClick(event)
}
parent2 == null ? void 0 : parent2.emit('header-click', column, event)
}
const handleHeaderContextMenu = (event, column) => {
parent2 == null ? void 0 : parent2.emit('header-contextmenu', column, event)
}
const draggingColumn = ref(null)
const dragging = ref(false)
const dragState = ref({})
const handleMouseDown = (event, column) => {
if (!isClient$1) return
if (column.children && column.children.length > 0) return
if (draggingColumn.value && props2.border) {
dragging.value = true
const table = parent2
emit2('set-drag-visible', true)
const tableEl = table == null ? void 0 : table.vnode.el
const tableLeft = tableEl.getBoundingClientRect().left
const columnEl = instance.vnode.el.querySelector(`th.${column.id}`)
const columnRect = columnEl.getBoundingClientRect()
const minLeft = columnRect.left - tableLeft + 30
addClass$1(columnEl, 'noclick')
dragState.value = {
startMouseLeft: event.clientX,
startLeft: columnRect.right - tableLeft,
startColumnLeft: columnRect.left - tableLeft,
tableLeft,
}
const resizeProxy = table == null ? void 0 : table.refs.resizeProxy
resizeProxy.style.left = `${dragState.value.startLeft}px`
document.onselectstart = function () {
return false
}
document.ondragstart = function () {
return false
}
const handleMouseMove2 = (event2) => {
const deltaLeft = event2.clientX - dragState.value.startMouseLeft
const proxyLeft = dragState.value.startLeft + deltaLeft
resizeProxy.style.left = `${Math.max(minLeft, proxyLeft)}px`
}
const handleMouseUp = () => {
if (dragging.value) {
const { startColumnLeft, startLeft } = dragState.value
const finalLeft = Number.parseInt(resizeProxy.style.left, 10)
const columnWidth = finalLeft - startColumnLeft
column.width = column.realWidth = columnWidth
table == null
? void 0
: table.emit(
'header-dragend',
column.width,
startLeft - startColumnLeft,
column,
event
)
requestAnimationFrame(() => {
props2.store.scheduleLayout(false, true)
})
document.body.style.cursor = ''
dragging.value = false
draggingColumn.value = null
dragState.value = {}
emit2('set-drag-visible', false)
}
document.removeEventListener('mousemove', handleMouseMove2)
document.removeEventListener('mouseup', handleMouseUp)
document.onselectstart = null
document.ondragstart = null
setTimeout(() => {
removeClass$1(columnEl, 'noclick')
}, 0)
}
document.addEventListener('mousemove', handleMouseMove2)
document.addEventListener('mouseup', handleMouseUp)
}
}
const handleMouseMove = (event, column) => {
if (column.children && column.children.length > 0) return
let target2 = event.target
while (target2 && target2.tagName !== 'TH') {
target2 = target2.parentNode
}
if (!column || !column.resizable) return
if (!dragging.value && props2.border) {
const rect = target2.getBoundingClientRect()
const bodyStyle = document.body.style
if (rect.width > 12 && rect.right - event.pageX < 8) {
bodyStyle.cursor = 'col-resize'
if (hasClass$1(target2, 'is-sortable')) {
target2.style.cursor = 'col-resize'
}
draggingColumn.value = column
} else if (!dragging.value) {
bodyStyle.cursor = ''
if (hasClass$1(target2, 'is-sortable')) {
target2.style.cursor = 'pointer'
}
draggingColumn.value = null
}
}
}
const handleMouseOut = () => {
if (!isClient$1) return
document.body.style.cursor = ''
}
const toggleOrder = ({ order: order2, sortOrders }) => {
if (order2 === '') return sortOrders[0]
const index2 = sortOrders.indexOf(order2 || null)
return sortOrders[index2 > sortOrders.length - 2 ? 0 : index2 + 1]
}
const handleSortClick = (event, column, givenOrder) => {
event.stopPropagation()
const order2 =
column.order === givenOrder ? null : givenOrder || toggleOrder(column)
let target2 = event.target
while (target2 && target2.tagName !== 'TH') {
target2 = target2.parentNode
}
if (target2 && target2.tagName === 'TH') {
if (hasClass$1(target2, 'noclick')) {
removeClass$1(target2, 'noclick')
return
}
}
if (!column.sortable) return
const states = props2.store.states
let sortProp = states.sortProp.value
let sortOrder
const sortingColumn = states.sortingColumn.value
if (
sortingColumn !== column ||
(sortingColumn === column && sortingColumn.order === null)
) {
if (sortingColumn) {
sortingColumn.order = null
}
states.sortingColumn.value = column
sortProp = column.property
}
if (!order2) {
sortOrder = column.order = null
} else {
sortOrder = column.order = order2
}
states.sortProp.value = sortProp
states.sortOrder.value = sortOrder
parent2 == null ? void 0 : parent2.store.commit('changeSortCondition')
}
return {
handleHeaderClick,
handleHeaderContextMenu,
handleMouseDown,
handleMouseMove,
handleMouseOut,
handleSortClick,
handleFilterClick,
}
}
function useStyle$2(props2) {
const parent2 = inject(TABLE_INJECTION_KEY)
const ns = useNamespace('table')
const getHeaderRowStyle = (rowIndex) => {
const headerRowStyle2 =
parent2 == null ? void 0 : parent2.props.headerRowStyle
if (typeof headerRowStyle2 === 'function') {
return headerRowStyle2.call(null, { rowIndex })
}
return headerRowStyle2
}
const getHeaderRowClass = (rowIndex) => {
const classes = []
const headerRowClassName =
parent2 == null ? void 0 : parent2.props.headerRowClassName
if (typeof headerRowClassName === 'string') {
classes.push(headerRowClassName)
} else if (typeof headerRowClassName === 'function') {
classes.push(headerRowClassName.call(null, { rowIndex }))
}
return classes.join(' ')
}
const getHeaderCellStyle = (rowIndex, columnIndex, row, column) => {
var _a2
let headerCellStyles =
(_a2 = parent2 == null ? void 0 : parent2.props.headerCellStyle) != null
? _a2
: {}
if (typeof headerCellStyles === 'function') {
headerCellStyles = headerCellStyles.call(null, {
rowIndex,
columnIndex,
row,
column,
})
}
const fixedStyle = column.isSubColumn
? null
: getFixedColumnOffset(columnIndex, column.fixed, props2.store, row)
ensurePosition(fixedStyle, 'left')
ensurePosition(fixedStyle, 'right')
return Object.assign({}, headerCellStyles, fixedStyle)
}
const getHeaderCellClass = (rowIndex, columnIndex, row, column) => {
const fixedClasses = column.isSubColumn
? []
: getFixedColumnsClass(
ns.b(),
columnIndex,
column.fixed,
props2.store,
row
)
const classes = [
column.id,
column.order,
column.headerAlign,
column.className,
column.labelClassName,
...fixedClasses,
]
if (!column.children) {
classes.push('is-leaf')
}
if (column.sortable) {
classes.push('is-sortable')
}
const headerCellClassName =
parent2 == null ? void 0 : parent2.props.headerCellClassName
if (typeof headerCellClassName === 'string') {
classes.push(headerCellClassName)
} else if (typeof headerCellClassName === 'function') {
classes.push(
headerCellClassName.call(null, {
rowIndex,
columnIndex,
row,
column,
})
)
}
classes.push(ns.e('cell'))
return classes.filter((className) => Boolean(className)).join(' ')
}
return {
getHeaderRowStyle,
getHeaderRowClass,
getHeaderCellStyle,
getHeaderCellClass,
}
}
const getAllColumns$1 = (columns) => {
const result = []
columns.forEach((column) => {
if (column.children) {
result.push(column)
result.push.apply(result, getAllColumns$1(column.children))
} else {
result.push(column)
}
})
return result
}
const convertToRows$1 = (originColumns) => {
let maxLevel = 1
const traverse = (column, parent2) => {
if (parent2) {
column.level = parent2.level + 1
if (maxLevel < column.level) {
maxLevel = column.level
}
}
if (column.children) {
let colSpan = 0
column.children.forEach((subColumn) => {
traverse(subColumn, column)
colSpan += subColumn.colSpan
})
column.colSpan = colSpan
} else {
column.colSpan = 1
}
}
originColumns.forEach((column) => {
column.level = 1
traverse(column, void 0)
})
const rows = []
for (let i2 = 0; i2 < maxLevel; i2++) {
rows.push([])
}
const allColumns = getAllColumns$1(originColumns)
allColumns.forEach((column) => {
if (!column.children) {
column.rowSpan = maxLevel - column.level + 1
} else {
column.rowSpan = 1
column.children.forEach((col) => (col.isSubColumn = true))
}
rows[column.level - 1].push(column)
})
return rows
}
function useUtils$1(props2) {
const parent2 = inject(TABLE_INJECTION_KEY)
const columnRows = computed(() => {
return convertToRows$1(props2.store.states.originColumns.value)
})
const isGroup2 = computed(() => {
const result = columnRows.value.length > 1
if (result && parent2) {
parent2.state.isGroup.value = true
}
return result
})
const toggleAllSelection = (event) => {
event.stopPropagation()
parent2 == null ? void 0 : parent2.store.commit('toggleAllSelection')
}
return {
isGroup: isGroup2,
toggleAllSelection,
columnRows,
}
}
var TableHeader = defineComponent({
name: 'ElTableHeader',
components: {
ElCheckbox,
},
props: {
fixed: {
type: String,
default: '',
},
store: {
required: true,
type: Object,
},
border: Boolean,
defaultSort: {
type: Object,
default: () => {
return {
prop: '',
order: '',
}
},
},
},
setup(props2, { emit: emit2 }) {
const instance = getCurrentInstance()
const parent2 = inject(TABLE_INJECTION_KEY)
const ns = useNamespace('table')
const filterPanels = ref({})
const { onColumnsChange, onScrollableChange } = useLayoutObserver(parent2)
onMounted(async () => {
await nextTick()
await nextTick()
const { prop, order: order2 } = props2.defaultSort
parent2 == null
? void 0
: parent2.store.commit('sort', { prop, order: order2, init: true })
})
const {
handleHeaderClick,
handleHeaderContextMenu,
handleMouseDown,
handleMouseMove,
handleMouseOut,
handleSortClick,
handleFilterClick,
} = useEvent(props2, emit2)
const {
getHeaderRowStyle,
getHeaderRowClass,
getHeaderCellStyle,
getHeaderCellClass,
} = useStyle$2(props2)
const {
isGroup: isGroup2,
toggleAllSelection,
columnRows,
} = useUtils$1(props2)
instance.state = {
onColumnsChange,
onScrollableChange,
}
instance.filterPanels = filterPanels
return {
ns,
filterPanels,
onColumnsChange,
onScrollableChange,
columnRows,
getHeaderRowClass,
getHeaderRowStyle,
getHeaderCellClass,
getHeaderCellStyle,
handleHeaderClick,
handleHeaderContextMenu,
handleMouseDown,
handleMouseMove,
handleMouseOut,
handleSortClick,
handleFilterClick,
isGroup: isGroup2,
toggleAllSelection,
}
},
render() {
const {
ns,
isGroup: isGroup2,
columnRows,
getHeaderCellStyle,
getHeaderCellClass,
getHeaderRowClass,
getHeaderRowStyle,
handleHeaderClick,
handleHeaderContextMenu,
handleMouseDown,
handleMouseMove,
handleSortClick,
handleMouseOut,
store: store2,
$parent,
} = this
let rowSpan = 1
return h$4(
'thead',
{
class: { [ns.is('group')]: isGroup2 },
},
columnRows.map((subColumns, rowIndex) =>
h$4(
'tr',
{
class: getHeaderRowClass(rowIndex),
key: rowIndex,
style: getHeaderRowStyle(rowIndex),
},
subColumns.map((column, cellIndex) => {
if (column.rowSpan > rowSpan) {
rowSpan = column.rowSpan
}
return h$4(
'th',
{
class: getHeaderCellClass(
rowIndex,
cellIndex,
subColumns,
column
),
colspan: column.colSpan,
key: `${column.id}-thead`,
rowspan: column.rowSpan,
style: getHeaderCellStyle(
rowIndex,
cellIndex,
subColumns,
column
),
onClick: ($event) => handleHeaderClick($event, column),
onContextmenu: ($event) =>
handleHeaderContextMenu($event, column),
onMousedown: ($event) => handleMouseDown($event, column),
onMousemove: ($event) => handleMouseMove($event, column),
onMouseout: handleMouseOut,
},
[
h$4(
'div',
{
class: [
'cell',
column.filteredValue && column.filteredValue.length > 0
? 'highlight'
: '',
column.labelClassName,
],
},
[
column.renderHeader
? column.renderHeader({
column,
$index: cellIndex,
store: store2,
_self: $parent,
})
: column.label,
column.sortable &&
h$4(
'span',
{
onClick: ($event) => handleSortClick($event, column),
class: 'caret-wrapper',
},
[
h$4('i', {
onClick: ($event) =>
handleSortClick($event, column, 'ascending'),
class: 'sort-caret ascending',
}),
h$4('i', {
onClick: ($event) =>
handleSortClick($event, column, 'descending'),
class: 'sort-caret descending',
}),
]
),
column.filterable &&
h$4(FilterPanel, {
store: store2,
placement: column.filterPlacement || 'bottom-start',
column,
upDataColumn: (key2, value2) => {
column[key2] = value2
},
}),
]
),
]
)
})
)
)
)
},
})
function useEvents(props2) {
const parent2 = inject(TABLE_INJECTION_KEY)
const tooltipContent = ref('')
const tooltipTrigger = ref(h$4('div'))
const handleEvent2 = (event, row, name2) => {
var _a2
const table = parent2
const cell = getCell(event)
let column
const namespace =
(_a2 = table == null ? void 0 : table.vnode.el) == null
? void 0
: _a2.dataset.prefix
if (cell) {
column = getColumnByCell(
{
columns: props2.store.states.columns.value,
},
cell,
namespace
)
if (column) {
table == null
? void 0
: table.emit(`cell-${name2}`, row, column, cell, event)
}
}
table == null ? void 0 : table.emit(`row-${name2}`, row, column, event)
}
const handleDoubleClick = (event, row) => {
handleEvent2(event, row, 'dblclick')
}
const handleClick2 = (event, row) => {
props2.store.commit('setCurrentRow', row)
handleEvent2(event, row, 'click')
}
const handleContextMenu = (event, row) => {
handleEvent2(event, row, 'contextmenu')
}
const handleMouseEnter = debounce$3((index2) => {
props2.store.commit('setHoverRow', index2)
}, 30)
const handleMouseLeave = debounce$3(() => {
props2.store.commit('setHoverRow', null)
}, 30)
const handleCellMouseEnter = (event, row) => {
var _a2
const table = parent2
const cell = getCell(event)
const namespace =
(_a2 = table == null ? void 0 : table.vnode.el) == null
? void 0
: _a2.dataset.prefix
if (cell) {
const column = getColumnByCell(
{
columns: props2.store.states.columns.value,
},
cell,
namespace
)
const hoverState = (table.hoverState = { cell, column, row })
table == null
? void 0
: table.emit(
'cell-mouse-enter',
hoverState.row,
hoverState.column,
hoverState.cell,
event
)
}
const cellChild = event.target.querySelector('.cell')
if (
!(
hasClass$1(cellChild, `${namespace}-tooltip`) &&
cellChild.childNodes.length
)
) {
return
}
const range3 = document.createRange()
range3.setStart(cellChild, 0)
range3.setEnd(cellChild, cellChild.childNodes.length)
const rangeWidth = range3.getBoundingClientRect().width
const padding =
(Number.parseInt(getStyle$1(cellChild, 'paddingLeft'), 10) || 0) +
(Number.parseInt(getStyle$1(cellChild, 'paddingRight'), 10) || 0)
if (
rangeWidth + padding > cellChild.offsetWidth ||
cellChild.scrollWidth > cellChild.offsetWidth
) {
createTablePopper(
cell,
cell.innerText || cell.textContent,
{
placement: 'top',
strategy: 'fixed',
},
row.tooltipEffect
)
}
}
const handleCellMouseLeave = (event) => {
const cell = getCell(event)
if (!cell) return
const oldHoverState = parent2 == null ? void 0 : parent2.hoverState
parent2 == null
? void 0
: parent2.emit(
'cell-mouse-leave',
oldHoverState == null ? void 0 : oldHoverState.row,
oldHoverState == null ? void 0 : oldHoverState.column,
oldHoverState == null ? void 0 : oldHoverState.cell,
event
)
}
return {
handleDoubleClick,
handleClick: handleClick2,
handleContextMenu,
handleMouseEnter,
handleMouseLeave,
handleCellMouseEnter,
handleCellMouseLeave,
tooltipContent,
tooltipTrigger,
}
}
function useStyles(props2) {
const parent2 = inject(TABLE_INJECTION_KEY)
const ns = useNamespace('table')
const getRowStyle = (row, rowIndex) => {
const rowStyle = parent2 == null ? void 0 : parent2.props.rowStyle
if (typeof rowStyle === 'function') {
return rowStyle.call(null, {
row,
rowIndex,
})
}
return rowStyle || null
}
const getRowClass = (row, rowIndex) => {
const classes = [ns.e('row')]
if (
(parent2 == null ? void 0 : parent2.props.highlightCurrentRow) &&
row === props2.store.states.currentRow.value
) {
classes.push('current-row')
}
if (props2.stripe && rowIndex % 2 === 1) {
classes.push(ns.em('row', 'striped'))
}
const rowClassName = parent2 == null ? void 0 : parent2.props.rowClassName
if (typeof rowClassName === 'string') {
classes.push(rowClassName)
} else if (typeof rowClassName === 'function') {
classes.push(
rowClassName.call(null, {
row,
rowIndex,
})
)
}
return classes
}
const getCellStyle = (rowIndex, columnIndex, row, column) => {
const cellStyle = parent2 == null ? void 0 : parent2.props.cellStyle
let cellStyles = cellStyle != null ? cellStyle : {}
if (typeof cellStyle === 'function') {
cellStyles = cellStyle.call(null, {
rowIndex,
columnIndex,
row,
column,
})
}
const fixedStyle = column.isSubColumn
? null
: getFixedColumnOffset(
columnIndex,
props2 == null ? void 0 : props2.fixed,
props2.store
)
ensurePosition(fixedStyle, 'left')
ensurePosition(fixedStyle, 'right')
return Object.assign({}, cellStyles, fixedStyle)
}
const getCellClass = (rowIndex, columnIndex, row, column) => {
const fixedClasses = column.isSubColumn
? []
: getFixedColumnsClass(
ns.b(),
columnIndex,
props2 == null ? void 0 : props2.fixed,
props2.store
)
const classes = [column.id, column.align, column.className, ...fixedClasses]
const cellClassName = parent2 == null ? void 0 : parent2.props.cellClassName
if (typeof cellClassName === 'string') {
classes.push(cellClassName)
} else if (typeof cellClassName === 'function') {
classes.push(
cellClassName.call(null, {
rowIndex,
columnIndex,
row,
column,
})
)
}
classes.push(ns.e('cell'))
return classes.filter((className) => Boolean(className)).join(' ')
}
const getSpan = (row, column, rowIndex, columnIndex) => {
let rowspan = 1
let colspan = 1
const fn2 = parent2 == null ? void 0 : parent2.props.spanMethod
if (typeof fn2 === 'function') {
const result = fn2({
row,
column,
rowIndex,
columnIndex,
})
if (Array.isArray(result)) {
rowspan = result[0]
colspan = result[1]
} else if (typeof result === 'object') {
rowspan = result.rowspan
colspan = result.colspan
}
}
return { rowspan, colspan }
}
const getColspanRealWidth = (columns, colspan, index2) => {
if (colspan < 1) {
return columns[index2].realWidth
}
const widthArr = columns
.map(({ realWidth, width }) => realWidth || width)
.slice(index2, index2 + colspan)
return Number(
widthArr.reduce((acc, width) => Number(acc) + Number(width), -1)
)
}
return {
getRowStyle,
getRowClass,
getCellStyle,
getCellClass,
getSpan,
getColspanRealWidth,
}
}
function useRender$1(props2) {
const parent2 = inject(TABLE_INJECTION_KEY)
const {
handleDoubleClick,
handleClick: handleClick2,
handleContextMenu,
handleMouseEnter,
handleMouseLeave,
handleCellMouseEnter,
handleCellMouseLeave,
tooltipContent,
tooltipTrigger,
} = useEvents(props2)
const {
getRowStyle,
getRowClass,
getCellStyle,
getCellClass,
getSpan,
getColspanRealWidth,
} = useStyles(props2)
const firstDefaultColumnIndex = computed(() => {
return props2.store.states.columns.value.findIndex(
({ type: type4 }) => type4 === 'default'
)
})
const getKeyOfRow = (row, index2) => {
const rowKey = parent2.props.rowKey
if (rowKey) {
return getRowIdentity(row, rowKey)
}
return index2
}
const rowRender = (row, $index, treeRowData, expanded = false) => {
const { tooltipEffect, store: store2 } = props2
const { indent, columns } = store2.states
const rowClasses = getRowClass(row, $index)
let display2 = true
if (treeRowData) {
rowClasses.push(`el-table__row--level-${treeRowData.level}`)
display2 = treeRowData.display
}
const displayStyle = display2
? null
: {
display: 'none',
}
return h$4(
'tr',
{
style: [displayStyle, getRowStyle(row, $index)],
class: rowClasses,
key: getKeyOfRow(row, $index),
onDblclick: ($event) => handleDoubleClick($event, row),
onClick: ($event) => handleClick2($event, row),
onContextmenu: ($event) => handleContextMenu($event, row),
onMouseenter: () => handleMouseEnter($index),
onMouseleave: handleMouseLeave,
},
columns.value.map((column, cellIndex) => {
const { rowspan, colspan } = getSpan(row, column, $index, cellIndex)
if (!rowspan || !colspan) {
return null
}
const columnData = { ...column }
columnData.realWidth = getColspanRealWidth(
columns.value,
colspan,
cellIndex
)
const data2 = {
store: props2.store,
_self: props2.context || parent2,
column: columnData,
row,
$index,
cellIndex,
expanded,
}
if (cellIndex === firstDefaultColumnIndex.value && treeRowData) {
data2.treeNode = {
indent: treeRowData.level * indent.value,
level: treeRowData.level,
}
if (typeof treeRowData.expanded === 'boolean') {
data2.treeNode.expanded = treeRowData.expanded
if ('loading' in treeRowData) {
data2.treeNode.loading = treeRowData.loading
}
if ('noLazyChildren' in treeRowData) {
data2.treeNode.noLazyChildren = treeRowData.noLazyChildren
}
}
}
const baseKey = `${$index},${cellIndex}`
const patchKey = columnData.columnKey || columnData.rawColumnKey || ''
const tdChildren = cellChildren(cellIndex, column, data2)
return h$4(
'td',
{
style: getCellStyle($index, cellIndex, row, column),
class: getCellClass($index, cellIndex, row, column),
key: `${patchKey}${baseKey}`,
rowspan,
colspan,
onMouseenter: ($event) =>
handleCellMouseEnter($event, { ...row, tooltipEffect }),
onMouseleave: handleCellMouseLeave,
},
[tdChildren]
)
})
)
}
const cellChildren = (cellIndex, column, data2) => {
return column.renderCell(data2)
}
const wrappedRowRender = (row, $index) => {
const store2 = props2.store
const { isRowExpanded, assertRowKey } = store2
const { treeData, lazyTreeNodeMap, childrenColumnName, rowKey } =
store2.states
const columns = store2.states.columns.value
const hasExpandColumn = columns.some(
({ type: type4 }) => type4 === 'expand'
)
if (hasExpandColumn) {
const expanded = isRowExpanded(row)
const tr2 = rowRender(row, $index, void 0, expanded)
const renderExpanded = parent2.renderExpanded
if (expanded) {
if (!renderExpanded) {
console.error('[Element Error]renderExpanded is required.')
return tr2
}
return [
[
tr2,
h$4(
'tr',
{
key: `expanded-row__${tr2.key}`,
},
[
h$4(
'td',
{
colspan: columns.length,
class: 'el-table__cell el-table__expanded-cell',
},
[renderExpanded({ row, $index, store: store2, expanded })]
),
]
),
],
]
} else {
return [[tr2]]
}
} else if (Object.keys(treeData.value).length) {
assertRowKey()
const key2 = getRowIdentity(row, rowKey.value)
let cur = treeData.value[key2]
let treeRowData = null
if (cur) {
treeRowData = {
expanded: cur.expanded,
level: cur.level,
display: true,
}
if (typeof cur.lazy === 'boolean') {
if (typeof cur.loaded === 'boolean' && cur.loaded) {
treeRowData.noLazyChildren = !(cur.children && cur.children.length)
}
treeRowData.loading = cur.loading
}
}
const tmp = [rowRender(row, $index, treeRowData)]
if (cur) {
let i2 = 0
const traverse = (children, parent22) => {
if (!(children && children.length && parent22)) return
children.forEach((node2) => {
const innerTreeRowData = {
display: parent22.display && parent22.expanded,
level: parent22.level + 1,
expanded: false,
noLazyChildren: false,
loading: false,
}
const childKey = getRowIdentity(node2, rowKey.value)
if (childKey === void 0 || childKey === null) {
throw new Error('For nested data item, row-key is required.')
}
cur = { ...treeData.value[childKey] }
if (cur) {
innerTreeRowData.expanded = cur.expanded
cur.level = cur.level || innerTreeRowData.level
cur.display = !!(cur.expanded && innerTreeRowData.display)
if (typeof cur.lazy === 'boolean') {
if (typeof cur.loaded === 'boolean' && cur.loaded) {
innerTreeRowData.noLazyChildren = !(
cur.children && cur.children.length
)
}
innerTreeRowData.loading = cur.loading
}
}
i2++
tmp.push(rowRender(node2, $index + i2, innerTreeRowData))
if (cur) {
const nodes2 =
lazyTreeNodeMap.value[childKey] ||
node2[childrenColumnName.value]
traverse(nodes2, cur)
}
})
}
cur.display = true
const nodes =
lazyTreeNodeMap.value[key2] || row[childrenColumnName.value]
traverse(nodes, cur)
}
return tmp
} else {
return rowRender(row, $index, void 0)
}
}
return {
wrappedRowRender,
tooltipContent,
tooltipTrigger,
}
}
const defaultProps$b = {
store: {
required: true,
type: Object,
},
stripe: Boolean,
tooltipEffect: String,
context: {
default: () => ({}),
type: Object,
},
rowClassName: [String, Function],
rowStyle: [Object, Function],
fixed: {
type: String,
default: '',
},
highlight: Boolean,
}
var TableBody = defineComponent({
name: 'ElTableBody',
props: defaultProps$b,
setup(props2) {
const instance = getCurrentInstance()
const parent2 = inject(TABLE_INJECTION_KEY)
const ns = useNamespace('table')
const { wrappedRowRender, tooltipContent, tooltipTrigger } =
useRender$1(props2)
const { onColumnsChange, onScrollableChange } = useLayoutObserver(parent2)
watch$1(props2.store.states.hoverRow, (newVal, oldVal) => {
if (!props2.store.states.isComplex.value || !isClient$1) return
let raf2 = window.requestAnimationFrame
if (!raf2) {
raf2 = (fn2) => window.setTimeout(fn2, 16)
}
raf2(() => {
var _a2
const rows =
(_a2 = instance == null ? void 0 : instance.vnode.el) == null
? void 0
: _a2.querySelectorAll(`.${ns.e('row')}`)
const oldRow = rows[oldVal]
const newRow = rows[newVal]
if (oldRow) {
removeClass$1(oldRow, 'hover-row')
}
if (newRow) {
addClass$1(newRow, 'hover-row')
}
})
})
onUnmounted(() => {
var _a2
;(_a2 = removePopper) == null ? void 0 : _a2()
})
onUpdated(() => {
var _a2
;(_a2 = removePopper) == null ? void 0 : _a2()
})
return {
ns,
onColumnsChange,
onScrollableChange,
wrappedRowRender,
tooltipContent,
tooltipTrigger,
}
},
render() {
const { wrappedRowRender, store: store2 } = this
const data2 = store2.states.data.value || []
return h$4('tbody', {}, [
data2.reduce((acc, row) => {
return acc.concat(wrappedRowRender(row, acc.length))
}, []),
])
},
})
function hColgroup(props2) {
const isAuto2 = props2.tableLayout === 'auto'
let columns = props2.columns || []
if (isAuto2) {
if (columns.every((column) => column.width === void 0)) {
columns = []
}
}
const getPropsData = (column) => {
const propsData = {
key: `${props2.tableLayout}_${column.id}`,
style: {},
name: void 0,
}
if (isAuto2) {
propsData.style = {
width: `${column.width}px`,
}
} else {
propsData.name = column.id
}
return propsData
}
return h$4(
'colgroup',
{},
columns.map((column) => h$4('col', getPropsData(column)))
)
}
hColgroup.props = ['columns', 'tableLayout']
function useMapState() {
const table = inject(TABLE_INJECTION_KEY)
const store2 = table == null ? void 0 : table.store
const leftFixedLeafCount = computed(() => {
return store2.states.fixedLeafColumnsLength.value
})
const rightFixedLeafCount = computed(() => {
return store2.states.rightFixedColumns.value.length
})
const columnsCount = computed(() => {
return store2.states.columns.value.length
})
const leftFixedCount = computed(() => {
return store2.states.fixedColumns.value.length
})
const rightFixedCount = computed(() => {
return store2.states.rightFixedColumns.value.length
})
return {
leftFixedLeafCount,
rightFixedLeafCount,
columnsCount,
leftFixedCount,
rightFixedCount,
columns: store2.states.columns,
}
}
function useStyle$1(props2) {
const { columns } = useMapState()
const ns = useNamespace('table')
const getCellClasses = (columns2, cellIndex) => {
const column = columns2[cellIndex]
const classes = [
ns.e('cell'),
column.id,
column.align,
column.labelClassName,
...getFixedColumnsClass(ns.b(), cellIndex, column.fixed, props2.store),
]
if (column.className) {
classes.push(column.className)
}
if (!column.children) {
classes.push(ns.is('leaf'))
}
return classes
}
const getCellStyles = (column, cellIndex) => {
const fixedStyle = getFixedColumnOffset(
cellIndex,
column.fixed,
props2.store
)
ensurePosition(fixedStyle, 'left')
ensurePosition(fixedStyle, 'right')
return fixedStyle
}
return {
getCellClasses,
getCellStyles,
columns,
}
}
var TableFooter = defineComponent({
name: 'ElTableFooter',
props: {
fixed: {
type: String,
default: '',
},
store: {
required: true,
type: Object,
},
summaryMethod: Function,
sumText: String,
border: Boolean,
defaultSort: {
type: Object,
default: () => {
return {
prop: '',
order: '',
}
},
},
},
setup(props2) {
const { getCellClasses, getCellStyles, columns } = useStyle$1(props2)
const ns = useNamespace('table')
return {
ns,
getCellClasses,
getCellStyles,
columns,
}
},
render() {
const {
columns,
getCellStyles,
getCellClasses,
summaryMethod,
sumText,
ns,
} = this
const data2 = this.store.states.data.value
let sums = []
if (summaryMethod) {
sums = summaryMethod({
columns,
data: data2,
})
} else {
columns.forEach((column, index2) => {
if (index2 === 0) {
sums[index2] = sumText
return
}
const values2 = data2.map((item2) => Number(item2[column.property]))
const precisions = []
let notNumber = true
values2.forEach((value2) => {
if (!Number.isNaN(+value2)) {
notNumber = false
const decimal = `${value2}`.split('.')[1]
precisions.push(decimal ? decimal.length : 0)
}
})
const precision = Math.max.apply(null, precisions)
if (!notNumber) {
sums[index2] = values2.reduce((prev, curr) => {
const value2 = Number(curr)
if (!Number.isNaN(+value2)) {
return Number.parseFloat(
(prev + curr).toFixed(Math.min(precision, 20))
)
} else {
return prev
}
}, 0)
} else {
sums[index2] = ''
}
})
}
return h$4(
'table',
{
class: ns.e('footer'),
cellspacing: '0',
cellpadding: '0',
border: '0',
},
[
hColgroup({
columns,
}),
h$4('tbody', [
h$4('tr', {}, [
...columns.map((column, cellIndex) =>
h$4(
'td',
{
key: cellIndex,
colspan: column.colSpan,
rowspan: column.rowSpan,
class: getCellClasses(columns, cellIndex),
style: getCellStyles(column, cellIndex),
},
[
h$4(
'div',
{
class: ['cell', column.labelClassName],
},
[sums[cellIndex]]
),
]
)
),
]),
]),
]
)
},
})
function useUtils(store2) {
const setCurrentRow = (row) => {
store2.commit('setCurrentRow', row)
}
const getSelectionRows = () => {
return store2.getSelectionRows()
}
const toggleRowSelection = (row, selected) => {
store2.toggleRowSelection(row, selected, false)
store2.updateAllSelected()
}
const clearSelection = () => {
store2.clearSelection()
}
const clearFilter = (columnKeys) => {
store2.clearFilter(columnKeys)
}
const toggleAllSelection = () => {
store2.commit('toggleAllSelection')
}
const toggleRowExpansion = (row, expanded) => {
store2.toggleRowExpansionAdapter(row, expanded)
}
const clearSort = () => {
store2.clearSort()
}
const sort3 = (prop, order2) => {
store2.commit('sort', { prop, order: order2 })
}
return {
setCurrentRow,
getSelectionRows,
toggleRowSelection,
clearSelection,
clearFilter,
toggleAllSelection,
toggleRowExpansion,
clearSort,
sort: sort3,
}
}
function useStyle(props2, layout2, store2, table) {
const isHidden2 = ref(false)
const renderExpanded = ref(null)
const resizeProxyVisible = ref(false)
const setDragVisible = (visible) => {
resizeProxyVisible.value = visible
}
const resizeState = ref({
width: null,
height: null,
})
const isGroup2 = ref(false)
const scrollbarViewStyle = {
display: 'inline-block',
verticalAlign: 'middle',
}
const tableWidth = ref()
watchEffect(() => {
layout2.setHeight(props2.height)
})
watchEffect(() => {
layout2.setMaxHeight(props2.maxHeight)
})
watch$1(
() => [props2.currentRowKey, store2.states.rowKey],
([currentRowKey, rowKey]) => {
if (!unref(rowKey)) return
store2.setCurrentRowKey(`${currentRowKey}`)
},
{
immediate: true,
}
)
watch$1(
() => props2.data,
(data2) => {
table.store.commit('setData', data2)
},
{
immediate: true,
deep: true,
}
)
watchEffect(() => {
if (props2.expandRowKeys) {
store2.setExpandRowKeysAdapter(props2.expandRowKeys)
}
})
const handleMouseLeave = () => {
table.store.commit('setHoverRow', null)
if (table.hoverState) table.hoverState = null
}
const handleHeaderFooterMousewheel = (event, data2) => {
const { pixelX, pixelY } = data2
if (Math.abs(pixelX) >= Math.abs(pixelY)) {
table.refs.bodyWrapper.scrollLeft += data2.pixelX / 5
}
}
const shouldUpdateHeight = computed(() => {
return (
props2.height ||
props2.maxHeight ||
store2.states.fixedColumns.value.length > 0 ||
store2.states.rightFixedColumns.value.length > 0
)
})
const tableBodyStyles = computed(() => {
return {
width: layout2.bodyWidth.value ? `${layout2.bodyWidth.value}px` : '',
}
})
const doLayout = () => {
if (shouldUpdateHeight.value) {
layout2.updateElsHeight()
}
layout2.updateColumnsWidth()
requestAnimationFrame(syncPostion)
}
onMounted(async () => {
await nextTick()
store2.updateColumns()
bindEvents()
requestAnimationFrame(doLayout)
resizeState.value = {
width: (tableWidth.value = table.vnode.el.offsetWidth),
height: table.vnode.el.offsetHeight,
}
store2.states.columns.value.forEach((column) => {
if (column.filteredValue && column.filteredValue.length) {
table.store.commit('filterChange', {
column,
values: column.filteredValue,
silent: true,
})
}
})
table.$ready = true
})
const setScrollClassByEl = (el2, className) => {
if (!el2) return
const classList2 = Array.from(el2.classList).filter(
(item2) => !item2.startsWith('is-scrolling-')
)
classList2.push(layout2.scrollX.value ? className : 'is-scrolling-none')
el2.className = classList2.join(' ')
}
const setScrollClass = (className) => {
const { tableWrapper } = table.refs
setScrollClassByEl(tableWrapper, className)
}
const hasScrollClass = (className) => {
const { tableWrapper } = table.refs
if (tableWrapper && tableWrapper.classList.contains(className)) {
return true
}
return false
}
const syncPostion = function () {
if (!table.refs.scrollBarRef) return
if (!layout2.scrollX.value) {
const scrollingNoneClass = 'is-scrolling-none'
if (!hasScrollClass(scrollingNoneClass)) {
setScrollClass(scrollingNoneClass)
}
return
}
const scrollContainer = table.refs.scrollBarRef.wrap$
if (!scrollContainer) return
const { scrollLeft, offsetWidth, scrollWidth } = scrollContainer
const { headerWrapper, footerWrapper } = table.refs
if (headerWrapper) headerWrapper.scrollLeft = scrollLeft
if (footerWrapper) footerWrapper.scrollLeft = scrollLeft
const maxScrollLeftPosition = scrollWidth - offsetWidth - 1
if (scrollLeft >= maxScrollLeftPosition) {
setScrollClass('is-scrolling-right')
} else if (scrollLeft === 0) {
setScrollClass('is-scrolling-left')
} else {
setScrollClass('is-scrolling-middle')
}
}
const bindEvents = () => {
var _a2
if (!table.refs.scrollBarRef) return
;(_a2 = table.refs.scrollBarRef.wrap$) == null
? void 0
: _a2.addEventListener('scroll', syncPostion, {
passive: true,
})
if (props2.fit) {
addResizeListener(table.vnode.el, resizeListener)
} else {
on$2(window, 'resize', doLayout)
}
}
onBeforeUnmount(() => {
unbindEvents()
})
const unbindEvents = () => {
var _a2
;(_a2 = table.refs.scrollBarRef.wrap$) == null
? void 0
: _a2.removeEventListener('scroll', syncPostion, true)
if (props2.fit) {
removeResizeListener(table.vnode.el, resizeListener)
} else {
off$1(window, 'resize', doLayout)
}
}
const resizeListener = () => {
if (!table.$ready) return
let shouldUpdateLayout = false
const el2 = table.vnode.el
const { width: oldWidth, height: oldHeight } = resizeState.value
const width = (tableWidth.value = el2.offsetWidth)
if (oldWidth !== width) {
shouldUpdateLayout = true
}
const height2 = el2.offsetHeight
if ((props2.height || shouldUpdateHeight.value) && oldHeight !== height2) {
shouldUpdateLayout = true
}
if (shouldUpdateLayout) {
resizeState.value = {
width,
height: height2,
}
doLayout()
}
}
const tableSize = useSize$1()
const bodyWidth = computed(() => {
const { bodyWidth: bodyWidth_, scrollY, gutterWidth } = layout2
return bodyWidth_.value
? `${bodyWidth_.value - (scrollY.value ? gutterWidth : 0)}px`
: ''
})
const tableLayout = computed(() => {
if (props2.maxHeight) return 'fixed'
return props2.tableLayout
})
function calcMaxHeight(maxHeight, footerHeight, headerHeight) {
const parsedMaxHeight = parseHeight(maxHeight)
const tableHeaderHeight = props2.showHeader ? headerHeight : 0
if (parsedMaxHeight === null) return
if (isString$f(parsedMaxHeight)) {
return `calc(${parsedMaxHeight} - ${footerHeight}px - ${tableHeaderHeight}px)`
}
return parsedMaxHeight - footerHeight - tableHeaderHeight
}
const height = computed(() => {
const headerHeight = layout2.headerHeight.value || 0
const bodyHeight2 = layout2.bodyHeight.value
const footerHeight = layout2.footerHeight.value || 0
if (props2.height) {
return bodyHeight2 ? bodyHeight2 : void 0
} else if (props2.maxHeight) {
return calcMaxHeight(props2.maxHeight, footerHeight, headerHeight)
}
return void 0
})
const bodyHeight = computed(() => {
const headerHeight = layout2.headerHeight.value || 0
const bodyHeight2 = layout2.bodyHeight.value
const footerHeight = layout2.footerHeight.value || 0
if (props2.height) {
return {
height: bodyHeight2 ? `${bodyHeight2}px` : '',
}
} else if (props2.maxHeight) {
const maxHeight = calcMaxHeight(
props2.maxHeight,
footerHeight,
headerHeight
)
if (maxHeight !== null) {
return {
'max-height': `${maxHeight}${isNumber$h(maxHeight) ? 'px' : ''}`,
}
}
}
return {}
})
const emptyBlockStyle = computed(() => {
if (props2.data && props2.data.length) return null
let height2 = '100%'
if (layout2.appendHeight.value) {
height2 = `calc(100% - ${layout2.appendHeight.value}px)`
}
return {
width: tableWidth.value ? `${tableWidth.value}px` : '',
height: height2,
}
})
const handleFixedMousewheel = (event, data2) => {
const bodyWrapper = table.refs.bodyWrapper
if (Math.abs(data2.spinY) > 0) {
const currentScrollTop = bodyWrapper.scrollTop
if (data2.pixelY < 0 && currentScrollTop !== 0) {
event.preventDefault()
}
if (
data2.pixelY > 0 &&
bodyWrapper.scrollHeight - bodyWrapper.clientHeight > currentScrollTop
) {
event.preventDefault()
}
bodyWrapper.scrollTop += Math.ceil(data2.pixelY / 5)
} else {
bodyWrapper.scrollLeft += Math.ceil(data2.pixelX / 5)
}
}
const fixedHeight = computed(() => {
if (props2.maxHeight) {
if (props2.showSummary) {
return {
bottom: 0,
}
}
return {
bottom:
layout2.scrollX.value && props2.data.length
? `${layout2.gutterWidth}px`
: '',
}
} else {
if (props2.showSummary) {
return {
height: layout2.tableHeight.value
? `${layout2.tableHeight.value}px`
: '',
}
}
return {
height: layout2.viewportHeight.value
? `${layout2.viewportHeight.value}px`
: '',
}
}
})
const fixedBodyHeight = computed(() => {
if (props2.height) {
return {
height: layout2.fixedBodyHeight.value
? `${layout2.fixedBodyHeight.value}px`
: '',
}
} else if (props2.maxHeight) {
let maxHeight = parseHeight(props2.maxHeight)
if (typeof maxHeight === 'number') {
maxHeight = layout2.scrollX.value
? maxHeight - layout2.gutterWidth
: maxHeight
if (props2.showHeader) {
maxHeight -= layout2.headerHeight.value
}
maxHeight -= layout2.footerHeight.value
return {
'max-height': `${maxHeight}px`,
}
}
}
return {}
})
return {
isHidden: isHidden2,
renderExpanded,
setDragVisible,
isGroup: isGroup2,
handleMouseLeave,
handleHeaderFooterMousewheel,
tableSize,
bodyHeight,
height,
emptyBlockStyle,
handleFixedMousewheel,
fixedHeight,
fixedBodyHeight,
resizeProxyVisible,
bodyWidth,
resizeState,
doLayout,
tableBodyStyles,
tableLayout,
scrollbarViewStyle,
}
}
var defaultProps$a = {
data: {
type: Array,
default: () => {
return []
},
},
size: String,
width: [String, Number],
height: [String, Number],
maxHeight: [String, Number],
fit: {
type: Boolean,
default: true,
},
stripe: Boolean,
border: Boolean,
rowKey: [String, Function],
showHeader: {
type: Boolean,
default: true,
},
showSummary: Boolean,
sumText: String,
summaryMethod: Function,
rowClassName: [String, Function],
rowStyle: [Object, Function],
cellClassName: [String, Function],
cellStyle: [Object, Function],
headerRowClassName: [String, Function],
headerRowStyle: [Object, Function],
headerCellClassName: [String, Function],
headerCellStyle: [Object, Function],
highlightCurrentRow: Boolean,
currentRowKey: [String, Number],
emptyText: String,
expandRowKeys: Array,
defaultExpandAll: Boolean,
defaultSort: Object,
tooltipEffect: String,
spanMethod: Function,
selectOnIndeterminate: {
type: Boolean,
default: true,
},
indent: {
type: Number,
default: 16,
},
treeProps: {
type: Object,
default: () => {
return {
hasChildren: 'hasChildren',
children: 'children',
}
},
},
lazy: Boolean,
load: Function,
style: {
type: Object,
default: () => ({}),
},
className: {
type: String,
default: '',
},
tableLayout: {
type: String,
default: 'fixed',
},
scrollbarAlwaysOn: {
type: Boolean,
default: false,
},
}
const useScrollbar = () => {
const scrollBarRef = ref()
const scrollTo = (options2, yCoord) => {
const scrollbar = scrollBarRef.value
if (scrollbar) {
scrollbar.scrollTo(options2, yCoord)
}
}
const setScrollPosition = (position2, offset2) => {
const scrollbar = scrollBarRef.value
if (
scrollbar &&
isNumber$h(offset2) &&
['Top', 'Left'].includes(position2)
) {
scrollbar[`setScroll${position2}`](offset2)
}
}
const setScrollTop2 = (top2) => setScrollPosition('Top', top2)
const setScrollLeft2 = (left2) => setScrollPosition('Left', left2)
return {
scrollBarRef,
scrollTo,
setScrollTop: setScrollTop2,
setScrollLeft: setScrollLeft2,
}
}
let tableIdSeed = 1
const _sfc_main$7u = defineComponent({
name: 'ElTable',
directives: {
Mousewheel,
},
components: {
TableHeader,
TableBody,
TableFooter,
ElScrollbar,
hColgroup,
},
props: defaultProps$a,
emits: [
'select',
'select-all',
'selection-change',
'cell-mouse-enter',
'cell-mouse-leave',
'cell-contextmenu',
'cell-click',
'cell-dblclick',
'row-click',
'row-contextmenu',
'row-dblclick',
'header-click',
'header-contextmenu',
'sort-change',
'filter-change',
'current-change',
'header-dragend',
'expand-change',
],
setup(props2) {
const { t: t3 } = useLocale()
const ns = useNamespace('table')
const table = getCurrentInstance()
provide(TABLE_INJECTION_KEY, table)
const store2 = createStore$1(table, props2)
table.store = store2
const layout2 = new TableLayout({
store: table.store,
table,
fit: props2.fit,
showHeader: props2.showHeader,
})
table.layout = layout2
const isEmpty2 = computed(
() => (store2.states.data.value || []).length === 0
)
const {
setCurrentRow,
getSelectionRows,
toggleRowSelection,
clearSelection,
clearFilter,
toggleAllSelection,
toggleRowExpansion,
clearSort,
sort: sort3,
} = useUtils(store2)
const {
isHidden: isHidden2,
renderExpanded,
setDragVisible,
isGroup: isGroup2,
handleMouseLeave,
handleHeaderFooterMousewheel,
tableSize,
bodyHeight,
height,
emptyBlockStyle,
handleFixedMousewheel,
fixedHeight,
fixedBodyHeight,
resizeProxyVisible,
bodyWidth,
resizeState,
doLayout,
tableBodyStyles,
tableLayout,
scrollbarViewStyle,
} = useStyle(props2, layout2, store2, table)
const {
scrollBarRef,
scrollTo,
setScrollLeft: setScrollLeft2,
setScrollTop: setScrollTop2,
} = useScrollbar()
const debouncedUpdateLayout = debounce$3(doLayout, 50)
const tableId = `el-table_${tableIdSeed++}`
table.tableId = tableId
table.state = {
isGroup: isGroup2,
resizeState,
doLayout,
debouncedUpdateLayout,
}
const computedSumText = computed(
() => props2.sumText || t3('el.table.sumText')
)
const computedEmptyText = computed(() => {
return props2.emptyText || t3('el.table.emptyText')
})
return {
ns,
layout: layout2,
store: store2,
handleHeaderFooterMousewheel,
handleMouseLeave,
tableId,
tableSize,
isHidden: isHidden2,
isEmpty: isEmpty2,
renderExpanded,
resizeProxyVisible,
resizeState,
isGroup: isGroup2,
bodyWidth,
bodyHeight,
height,
tableBodyStyles,
emptyBlockStyle,
debouncedUpdateLayout,
handleFixedMousewheel,
fixedHeight,
fixedBodyHeight,
setCurrentRow,
getSelectionRows,
toggleRowSelection,
clearSelection,
clearFilter,
toggleAllSelection,
toggleRowExpansion,
clearSort,
doLayout,
sort: sort3,
t: t3,
setDragVisible,
context: table,
computedSumText,
computedEmptyText,
tableLayout,
scrollbarViewStyle,
scrollBarRef,
scrollTo,
setScrollLeft: setScrollLeft2,
setScrollTop: setScrollTop2,
}
},
})
const _hoisted_1$6b = ['data-prefix']
const _hoisted_2$53 = {
ref: 'hiddenColumns',
class: 'hidden-columns',
}
function _sfc_render$u(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_hColgroup = resolveComponent('hColgroup')
const _component_table_header = resolveComponent('table-header')
const _component_table_body = resolveComponent('table-body')
const _component_el_scrollbar = resolveComponent('el-scrollbar')
const _component_table_footer = resolveComponent('table-footer')
const _directive_mousewheel = resolveDirective('mousewheel')
return (
openBlock(),
createElementBlock(
'div',
{
ref: 'tableWrapper',
class: normalizeClass([
{
[_ctx.ns.m('fit')]: _ctx.fit,
[_ctx.ns.m('striped')]: _ctx.stripe,
[_ctx.ns.m('border')]: _ctx.border || _ctx.isGroup,
[_ctx.ns.m('hidden')]: _ctx.isHidden,
[_ctx.ns.m('group')]: _ctx.isGroup,
[_ctx.ns.m('fluid-height')]: _ctx.maxHeight,
[_ctx.ns.m('scrollable-x')]: _ctx.layout.scrollX.value,
[_ctx.ns.m('scrollable-y')]: _ctx.layout.scrollY.value,
[_ctx.ns.m('enable-row-hover')]: !_ctx.store.states.isComplex.value,
[_ctx.ns.m('enable-row-transition')]:
(_ctx.store.states.data.value || []).length !== 0 &&
(_ctx.store.states.data.value || []).length < 100,
'has-footer': _ctx.showSummary,
},
_ctx.ns.m(_ctx.tableSize),
_ctx.className,
_ctx.ns.b(),
_ctx.ns.m(`layout-${_ctx.tableLayout}`),
]),
style: normalizeStyle$1(_ctx.style),
'data-prefix': _ctx.ns.namespace.value,
onMouseleave:
_cache[0] || (_cache[0] = ($event) => _ctx.handleMouseLeave()),
},
[
createElementVNode(
'div',
{
class: normalizeClass(_ctx.ns.e('inner-wrapper')),
},
[
createElementVNode(
'div',
_hoisted_2$53,
[renderSlot(_ctx.$slots, 'default')],
512
),
_ctx.showHeader && _ctx.tableLayout === 'fixed'
? withDirectives(
(openBlock(),
createElementBlock(
'div',
{
key: 0,
ref: 'headerWrapper',
class: normalizeClass(_ctx.ns.e('header-wrapper')),
},
[
createElementVNode(
'table',
{
ref: 'tableHeader',
class: normalizeClass(_ctx.ns.e('header')),
style: normalizeStyle$1(_ctx.tableBodyStyles),
border: '0',
cellpadding: '0',
cellspacing: '0',
},
[
createVNode$1(
_component_hColgroup,
{
columns: _ctx.store.states.columns.value,
'table-layout': _ctx.tableLayout,
},
null,
8,
['columns', 'table-layout']
),
createVNode$1(
_component_table_header,
{
ref: 'tableHeaderRef',
border: _ctx.border,
'default-sort': _ctx.defaultSort,
store: _ctx.store,
onSetDragVisible: _ctx.setDragVisible,
},
null,
8,
[
'border',
'default-sort',
'store',
'onSetDragVisible',
]
),
],
6
),
],
2
)),
[[_directive_mousewheel, _ctx.handleHeaderFooterMousewheel]]
)
: createCommentVNode('v-if', true),
createElementVNode(
'div',
{
ref: 'bodyWrapper',
style: normalizeStyle$1(_ctx.bodyHeight),
class: normalizeClass(_ctx.ns.e('body-wrapper')),
},
[
createVNode$1(
_component_el_scrollbar,
{
ref: 'scrollBarRef',
height: _ctx.maxHeight ? void 0 : _ctx.height,
'max-height': _ctx.maxHeight ? _ctx.height : void 0,
'view-style': _ctx.scrollbarViewStyle,
always: _ctx.scrollbarAlwaysOn,
},
{
default: withCtx(() => [
createElementVNode(
'table',
{
ref: 'tableBody',
class: normalizeClass(_ctx.ns.e('body')),
cellspacing: '0',
cellpadding: '0',
border: '0',
style: normalizeStyle$1({
width: _ctx.bodyWidth,
tableLayout: _ctx.tableLayout,
}),
},
[
createVNode$1(
_component_hColgroup,
{
columns: _ctx.store.states.columns.value,
'table-layout': _ctx.tableLayout,
},
null,
8,
['columns', 'table-layout']
),
_ctx.showHeader && _ctx.tableLayout === 'auto'
? (openBlock(),
createBlock(
_component_table_header,
{
key: 0,
border: _ctx.border,
'default-sort': _ctx.defaultSort,
store: _ctx.store,
onSetDragVisible: _ctx.setDragVisible,
},
null,
8,
[
'border',
'default-sort',
'store',
'onSetDragVisible',
]
))
: createCommentVNode('v-if', true),
createVNode$1(
_component_table_body,
{
context: _ctx.context,
highlight: _ctx.highlightCurrentRow,
'row-class-name': _ctx.rowClassName,
'tooltip-effect': _ctx.tooltipEffect,
'row-style': _ctx.rowStyle,
store: _ctx.store,
stripe: _ctx.stripe,
},
null,
8,
[
'context',
'highlight',
'row-class-name',
'tooltip-effect',
'row-style',
'store',
'stripe',
]
),
],
6
),
_ctx.isEmpty
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
ref: 'emptyBlock',
style: normalizeStyle$1(_ctx.emptyBlockStyle),
class: normalizeClass(_ctx.ns.e('empty-block')),
},
[
createElementVNode(
'span',
{
class: normalizeClass(
_ctx.ns.e('empty-text')
),
},
[
renderSlot(_ctx.$slots, 'empty', {}, () => [
createTextVNode(
toDisplayString$1(_ctx.computedEmptyText),
1
),
]),
],
2
),
],
6
))
: createCommentVNode('v-if', true),
_ctx.$slots.append
? (openBlock(),
createElementBlock(
'div',
{
key: 1,
ref: 'appendWrapper',
class: normalizeClass(
_ctx.ns.e('append-wrapper')
),
},
[renderSlot(_ctx.$slots, 'append')],
2
))
: createCommentVNode('v-if', true),
]),
_: 3,
},
8,
['height', 'max-height', 'view-style', 'always']
),
],
6
),
_ctx.border || _ctx.isGroup
? (openBlock(),
createElementBlock(
'div',
{
key: 1,
class: normalizeClass(_ctx.ns.e('border-left-patch')),
},
null,
2
))
: createCommentVNode('v-if', true),
],
2
),
_ctx.showSummary
? withDirectives(
(openBlock(),
createElementBlock(
'div',
{
key: 0,
ref: 'footerWrapper',
class: normalizeClass(_ctx.ns.e('footer-wrapper')),
},
[
createVNode$1(
_component_table_footer,
{
border: _ctx.border,
'default-sort': _ctx.defaultSort,
store: _ctx.store,
style: normalizeStyle$1(_ctx.tableBodyStyles),
'sum-text': _ctx.computedSumText,
'summary-method': _ctx.summaryMethod,
},
null,
8,
[
'border',
'default-sort',
'store',
'style',
'sum-text',
'summary-method',
]
),
],
2
)),
[
[vShow, !_ctx.isEmpty],
[_directive_mousewheel, _ctx.handleHeaderFooterMousewheel],
]
)
: createCommentVNode('v-if', true),
withDirectives(
createElementVNode(
'div',
{
ref: 'resizeProxy',
class: normalizeClass(_ctx.ns.e('column-resize-proxy')),
},
null,
2
),
[[vShow, _ctx.resizeProxyVisible]]
),
],
46,
_hoisted_1$6b
)
)
}
var Table$5 = /* @__PURE__ */ _export_sfc$1(_sfc_main$7u, [
['render', _sfc_render$u],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/table/src/table.vue',
],
])
const defaultClassNames = {
selection: 'table-column--selection',
expand: 'table__expand-column',
}
const cellStarts = {
default: {
order: '',
},
selection: {
width: 48,
minWidth: 48,
realWidth: 48,
order: '',
},
expand: {
width: 48,
minWidth: 48,
realWidth: 48,
order: '',
},
index: {
width: 48,
minWidth: 48,
realWidth: 48,
order: '',
},
}
const getDefaultClassName = (type4) => {
return defaultClassNames[type4] || ''
}
const cellForced = {
selection: {
renderHeader({ store: store2 }) {
function isDisabled() {
return store2.states.data.value && store2.states.data.value.length === 0
}
return h$4(ElCheckbox, {
disabled: isDisabled(),
size: store2.states.tableSize.value,
indeterminate:
store2.states.selection.value.length > 0 &&
!store2.states.isAllSelected.value,
'onUpdate:modelValue': store2.toggleAllSelection,
modelValue: store2.states.isAllSelected.value,
})
},
renderCell({ row, column, store: store2, $index }) {
return h$4(ElCheckbox, {
disabled: column.selectable
? !column.selectable.call(null, row, $index)
: false,
size: store2.states.tableSize.value,
onChange: () => {
store2.commit('rowSelectedChanged', row)
},
onClick: (event) => event.stopPropagation(),
modelValue: store2.isSelected(row),
})
},
sortable: false,
resizable: false,
},
index: {
renderHeader({ column }) {
return column.label || '#'
},
renderCell({ column, $index }) {
let i2 = $index + 1
const index2 = column.index
if (typeof index2 === 'number') {
i2 = $index + index2
} else if (typeof index2 === 'function') {
i2 = index2($index)
}
return h$4('div', {}, [i2])
},
sortable: false,
},
expand: {
renderHeader({ column }) {
return column.label || ''
},
renderCell({ row, store: store2, expanded }) {
const { ns } = store2
const classes = [ns.e('expand-icon')]
if (expanded) {
classes.push(ns.em('expand-icon', 'expanded'))
}
const callback = function (e2) {
e2.stopPropagation()
store2.toggleRowExpansion(row)
}
return h$4(
'div',
{
class: classes,
onClick: callback,
},
{
default: () => {
return [
h$4(ElIcon, null, {
default: () => {
return [h$4(arrowRight)]
},
}),
]
},
}
)
},
sortable: false,
resizable: false,
},
}
function defaultRenderCell({ row, column, $index }) {
var _a2
const property2 = column.property
const value2 = property2 && getProp(row, property2).value
if (column && column.formatter) {
return column.formatter(row, column, value2, $index)
}
return (
((_a2 = value2 == null ? void 0 : value2.toString) == null
? void 0
: _a2.call(value2)) || ''
)
}
function treeCellPrefix(
{ row, treeNode, store: store2 },
createPlacehoder = false
) {
const { ns } = store2
if (!treeNode) {
if (createPlacehoder) {
return [
h$4('span', {
class: ns.e('placeholder'),
}),
]
}
return null
}
const ele = []
const callback = function (e2) {
e2.stopPropagation()
store2.loadOrToggle(row)
}
if (treeNode.indent) {
ele.push(
h$4('span', {
class: ns.e('indent'),
style: { 'padding-left': `${treeNode.indent}px` },
})
)
}
if (typeof treeNode.expanded === 'boolean' && !treeNode.noLazyChildren) {
const expandClasses = [
ns.e('expand-icon'),
treeNode.expanded ? ns.em('expand-icon', 'expanded') : '',
]
let icon = arrowRight
if (treeNode.loading) {
icon = loading
}
ele.push(
h$4(
'div',
{
class: expandClasses,
onClick: callback,
},
{
default: () => {
return [
h$4(
ElIcon,
{ class: { [ns.is('loading')]: treeNode.loading } },
{
default: () => [h$4(icon)],
}
),
]
},
}
)
)
} else {
ele.push(
h$4('span', {
class: ns.e('placeholder'),
})
)
}
return ele
}
function useWatcher(owner, props_2) {
const instance = getCurrentInstance()
const registerComplexWatchers = () => {
const props2 = ['fixed']
const aliases = {
realWidth: 'width',
realMinWidth: 'minWidth',
}
const allAliases = props2.reduce((prev, cur) => {
prev[cur] = cur
return prev
}, aliases)
Object.keys(allAliases).forEach((key2) => {
const columnKey2 = aliases[key2]
if (hasOwn$e(props_2, columnKey2)) {
watch$1(
() => props_2[columnKey2],
(newVal) => {
let value2 = newVal
if (columnKey2 === 'width' && key2 === 'realWidth') {
value2 = parseWidth(newVal)
}
if (columnKey2 === 'minWidth' && key2 === 'realMinWidth') {
value2 = parseMinWidth(newVal)
}
instance.columnConfig.value[columnKey2] = value2
instance.columnConfig.value[key2] = value2
const updateColumns = columnKey2 === 'fixed'
owner.value.store.scheduleLayout(updateColumns)
}
)
}
})
}
const registerNormalWatchers = () => {
const props2 = [
'label',
'filters',
'filterMultiple',
'sortable',
'index',
'formatter',
'className',
'labelClassName',
'showOverflowTooltip',
]
const aliases = {
property: 'prop',
align: 'realAlign',
headerAlign: 'realHeaderAlign',
}
const allAliases = props2.reduce((prev, cur) => {
prev[cur] = cur
return prev
}, aliases)
Object.keys(allAliases).forEach((key2) => {
const columnKey2 = aliases[key2]
if (hasOwn$e(props_2, columnKey2)) {
watch$1(
() => props_2[columnKey2],
(newVal) => {
instance.columnConfig.value[key2] = newVal
}
)
}
})
}
return {
registerComplexWatchers,
registerNormalWatchers,
}
}
function useRender(props2, slots, owner) {
const instance = getCurrentInstance()
const columnId = ref('')
const isSubColumn = ref(false)
const realAlign = ref()
const realHeaderAlign = ref()
const ns = useNamespace('table')
watchEffect(() => {
realAlign.value = props2.align ? `is-${props2.align}` : null
realAlign.value
})
watchEffect(() => {
realHeaderAlign.value = props2.headerAlign
? `is-${props2.headerAlign}`
: realAlign.value
realHeaderAlign.value
})
const columnOrTableParent = computed(() => {
let parent2 = instance.vnode.vParent || instance.parent
while (parent2 && !parent2.tableId && !parent2.columnId) {
parent2 = parent2.vnode.vParent || parent2.parent
}
return parent2
})
const hasTreeColumn = computed(() => {
const { store: store2 } = instance.parent
if (!store2) return false
const { treeData } = store2.states
const treeDataValue = treeData.value
return treeDataValue && Object.keys(treeDataValue).length > 0
})
const realWidth = ref(parseWidth(props2.width))
const realMinWidth = ref(parseMinWidth(props2.minWidth))
const setColumnWidth = (column) => {
if (realWidth.value) column.width = realWidth.value
if (realMinWidth.value) {
column.minWidth = realMinWidth.value
}
if (!column.minWidth) {
column.minWidth = 80
}
column.realWidth = Number(
column.width === void 0 ? column.minWidth : column.width
)
return column
}
const setColumnForcedProps = (column) => {
const type4 = column.type
const source2 = cellForced[type4] || {}
Object.keys(source2).forEach((prop) => {
const value2 = source2[prop]
if (prop !== 'className' && value2 !== void 0) {
column[prop] = value2
}
})
const className = getDefaultClassName(type4)
if (className) {
const forceClass = `${unref(ns.namespace)}-${className}`
column.className = column.className
? `${column.className} ${forceClass}`
: forceClass
}
return column
}
const checkSubColumn = (children) => {
if (Array.isArray(children)) {
children.forEach((child) => check2(child))
} else {
check2(children)
}
function check2(item2) {
var _a2
if (
((_a2 = item2 == null ? void 0 : item2.type) == null
? void 0
: _a2.name) === 'ElTableColumn'
) {
item2.vParent = instance
}
}
}
const setColumnRenders = (column) => {
if (props2.renderHeader);
else if (column.type !== 'selection') {
column.renderHeader = (scope) => {
instance.columnConfig.value['label']
const renderHeader = slots.header
return renderHeader ? renderHeader(scope) : column.label
}
}
let originRenderCell = column.renderCell
const hasTreeColumnValue = hasTreeColumn.value
if (column.type === 'expand') {
column.renderCell = (data2) =>
h$4(
'div',
{
class: 'cell',
},
[originRenderCell(data2)]
)
owner.value.renderExpanded = (data2) => {
return slots.default ? slots.default(data2) : slots.default
}
} else {
originRenderCell = originRenderCell || defaultRenderCell
column.renderCell = (data2) => {
let children = null
if (slots.default) {
const vnodes = slots.default(data2)
children = vnodes.some((v4) => v4.type !== Comment)
? vnodes
: originRenderCell(data2)
} else {
children = originRenderCell(data2)
}
const shouldCreatePlaceholder =
hasTreeColumnValue && data2.cellIndex === 0
const prefix = treeCellPrefix(data2, shouldCreatePlaceholder)
const props22 = {
class: 'cell',
style: {},
}
if (column.showOverflowTooltip) {
props22.class = `${props22.class} ${unref(ns.namespace)}-tooltip`
props22.style = {
width: `${
(data2.column.realWidth || Number(data2.column.width)) - 1
}px`,
}
}
checkSubColumn(children)
return h$4('div', props22, [prefix, children])
}
}
return column
}
const getPropsData = (...propsKey) => {
return propsKey.reduce((prev, cur) => {
if (Array.isArray(cur)) {
cur.forEach((key2) => {
prev[key2] = props2[key2]
})
}
return prev
}, {})
}
const getColumnElIndex = (children, child) => {
return Array.prototype.indexOf.call(children, child)
}
return {
columnId,
realAlign,
isSubColumn,
realHeaderAlign,
columnOrTableParent,
setColumnWidth,
setColumnForcedProps,
setColumnRenders,
getPropsData,
getColumnElIndex,
}
}
var defaultProps$9 = {
type: {
type: String,
default: 'default',
},
label: String,
className: String,
labelClassName: String,
property: String,
prop: String,
width: {
type: [String, Number],
default: '',
},
minWidth: {
type: [String, Number],
default: '',
},
renderHeader: Function,
sortable: {
type: [Boolean, String],
default: false,
},
sortMethod: Function,
sortBy: [String, Function, Array],
resizable: {
type: Boolean,
default: true,
},
columnKey: String,
align: String,
headerAlign: String,
showTooltipWhenOverflow: Boolean,
showOverflowTooltip: Boolean,
fixed: [Boolean, String],
formatter: Function,
selectable: Function,
reserveSelection: Boolean,
filterMethod: Function,
filteredValue: Array,
filters: Array,
filterPlacement: String,
filterMultiple: {
type: Boolean,
default: true,
},
index: [Number, Function],
sortOrders: {
type: Array,
default: () => {
return ['ascending', 'descending', null]
},
validator: (val2) => {
return val2.every((order2) =>
['ascending', 'descending', null].includes(order2)
)
},
},
}
let columnIdSeed = 1
var ElTableColumn$1 = defineComponent({
name: 'ElTableColumn',
components: {
ElCheckbox,
},
props: defaultProps$9,
setup(props2, { slots }) {
const instance = getCurrentInstance()
const columnConfig = ref({})
const owner = computed(() => {
let parent22 = instance.parent
while (parent22 && !parent22.tableId) {
parent22 = parent22.parent
}
return parent22
})
const { registerNormalWatchers, registerComplexWatchers } = useWatcher(
owner,
props2
)
const {
columnId,
isSubColumn,
realHeaderAlign,
columnOrTableParent,
setColumnWidth,
setColumnForcedProps,
setColumnRenders,
getPropsData,
getColumnElIndex,
realAlign,
} = useRender(props2, slots, owner)
const parent2 = columnOrTableParent.value
columnId.value = `${
parent2.tableId || parent2.columnId
}_column_${columnIdSeed++}`
onBeforeMount(() => {
isSubColumn.value = owner.value !== parent2
const type4 = props2.type || 'default'
const sortable = props2.sortable === '' ? true : props2.sortable
const defaults2 = {
...cellStarts[type4],
id: columnId.value,
type: type4,
property: props2.prop || props2.property,
align: realAlign,
headerAlign: realHeaderAlign,
showOverflowTooltip:
props2.showOverflowTooltip || props2.showTooltipWhenOverflow,
filterable: props2.filters || props2.filterMethod,
filteredValue: [],
filterPlacement: '',
isColumnGroup: false,
isSubColumn: false,
filterOpened: false,
sortable,
index: props2.index,
rawColumnKey: instance.vnode.key,
}
const basicProps = [
'columnKey',
'label',
'className',
'labelClassName',
'type',
'renderHeader',
'formatter',
'fixed',
'resizable',
]
const sortProps = ['sortMethod', 'sortBy', 'sortOrders']
const selectProps = ['selectable', 'reserveSelection']
const filterProps = [
'filterMethod',
'filters',
'filterMultiple',
'filterOpened',
'filteredValue',
'filterPlacement',
]
let column = getPropsData(basicProps, sortProps, selectProps, filterProps)
column = mergeOptions$1(defaults2, column)
const chains = compose(
setColumnRenders,
setColumnWidth,
setColumnForcedProps
)
column = chains(column)
columnConfig.value = column
registerNormalWatchers()
registerComplexWatchers()
})
onMounted(() => {
var _a2
const parent22 = columnOrTableParent.value
const children = isSubColumn.value
? parent22.vnode.el.children
: (_a2 = parent22.refs.hiddenColumns) == null
? void 0
: _a2.children
const getColumnIndex = () =>
getColumnElIndex(children || [], instance.vnode.el)
columnConfig.value.getColumnIndex = getColumnIndex
const columnIndex = getColumnIndex()
columnIndex > -1 &&
owner.value.store.commit(
'insertColumn',
columnConfig.value,
isSubColumn.value ? parent22.columnConfig.value : null
)
})
onBeforeUnmount(() => {
owner.value.store.commit(
'removeColumn',
columnConfig.value,
isSubColumn.value ? parent2.columnConfig.value : null
)
})
instance.columnId = columnId.value
instance.columnConfig = columnConfig
return
},
render() {
var _a2, _b2, _c2
try {
const renderDefault =
(_b2 = (_a2 = this.$slots).default) == null
? void 0
: _b2.call(_a2, {
row: {},
column: {},
$index: -1,
})
const children = []
if (Array.isArray(renderDefault)) {
for (const childNode of renderDefault) {
if (
((_c2 = childNode.type) == null ? void 0 : _c2.name) ===
'ElTableColumn' ||
childNode.shapeFlag & 2
) {
children.push(childNode)
} else if (
childNode.type === Fragment &&
Array.isArray(childNode.children)
) {
childNode.children.forEach((vnode2) => {
if (
(vnode2 == null ? void 0 : vnode2.patchFlag) !== 1024 &&
!isString$f(vnode2 == null ? void 0 : vnode2.children)
) {
children.push(vnode2)
}
})
}
}
}
const vnode = h$4('div', children)
return vnode
} catch (e2) {
return h$4('div', [])
}
},
})
const ElTable = withInstall(Table$5, {
TableColumn: ElTableColumn$1,
})
const ElTableColumn = withNoopInstall(ElTableColumn$1)
const tabBarProps = buildProps({
tabs: {
type: definePropType(Array),
default: () => mutable([]),
},
})
const __default__$d = {
name: 'ElTabBar',
}
const _sfc_main$7t = /* @__PURE__ */ defineComponent({
...__default__$d,
props: tabBarProps,
setup(__props2, { expose }) {
const props2 = __props2
const COMPONENT_NAME2 = 'ElTabBar'
const instance = getCurrentInstance()
const rootTabs = inject(tabsRootContextKey)
if (!rootTabs)
throwError$1(COMPONENT_NAME2, '')
const ns = useNamespace('tabs')
const barRef = ref()
const barStyle = ref()
const getBarStyle = () => {
let offset2 = 0
let tabSize = 0
const sizeName = ['top', 'bottom'].includes(rootTabs.props.tabPosition)
? 'width'
: 'height'
const sizeDir = sizeName === 'width' ? 'x' : 'y'
props2.tabs.every((tab) => {
var _a2, _b2, _c2, _d
const $el =
(_b2 = (_a2 = instance.parent) == null ? void 0 : _a2.refs) == null
? void 0
: _b2[`tab-${tab.paneName}`]
if (!$el) return false
if (!tab.active) {
return true
}
tabSize = $el[`client${capitalize$2(sizeName)}`]
const position2 = sizeDir === 'x' ? 'left' : 'top'
offset2 =
$el.getBoundingClientRect()[position2] -
((_d =
(_c2 = $el.parentElement) == null
? void 0
: _c2.getBoundingClientRect()[position2]) != null
? _d
: 0)
const tabStyles = window.getComputedStyle($el)
if (sizeName === 'width') {
if (props2.tabs.length > 1) {
tabSize -=
Number.parseFloat(tabStyles.paddingLeft) +
Number.parseFloat(tabStyles.paddingRight)
}
offset2 += Number.parseFloat(tabStyles.paddingLeft)
}
return false
})
return {
[sizeName]: `${tabSize}px`,
transform: `translate${capitalize$2(sizeDir)}(${offset2}px)`,
}
}
const update3 = () => (barStyle.value = getBarStyle())
watch$1(
() => props2.tabs,
async () => {
await nextTick()
update3()
},
{ immediate: true }
)
useResizeObserver$1(barRef, () => update3())
expose({
ref: barRef,
update: update3,
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
ref_key: 'barRef',
ref: barRef,
class: normalizeClass([
unref(ns).e('active-bar'),
unref(ns).is(unref(rootTabs).props.tabPosition),
]),
style: normalizeStyle$1(barStyle.value),
},
null,
6
)
)
}
},
})
var TabBar = /* @__PURE__ */ _export_sfc$1(_sfc_main$7t, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/tabs/src/tab-bar.vue',
],
])
const tabNavProps = buildProps({
panes: {
type: definePropType(Array),
default: () => mutable([]),
},
currentName: {
type: [String, Number],
default: '',
},
editable: Boolean,
onTabClick: {
type: definePropType(Function),
default: NOOP,
},
onTabRemove: {
type: definePropType(Function),
default: NOOP,
},
type: {
type: String,
values: ['card', 'border-card', ''],
default: '',
},
stretch: Boolean,
})
const COMPONENT_NAME = 'ElTabNav'
const TabNav = defineComponent({
name: COMPONENT_NAME,
props: tabNavProps,
setup(props2, { expose }) {
const rootTabs = inject(tabsRootContextKey)
if (!rootTabs)
throwError$1(COMPONENT_NAME, ``)
const ns = useNamespace('tabs')
const visibility2 = useDocumentVisibility$1()
const focused = useWindowFocus$1()
const navScroll$ = ref()
const nav$ = ref()
const el$ = ref()
const scrollable = ref(false)
const navOffset = ref(0)
const isFocus = ref(false)
const focusable = ref(true)
const sizeName = computed(() =>
['top', 'bottom'].includes(rootTabs.props.tabPosition)
? 'width'
: 'height'
)
const navStyle = computed(() => {
const dir3 = sizeName.value === 'width' ? 'X' : 'Y'
return {
transform: `translate${dir3}(-${navOffset.value}px)`,
}
})
const scrollPrev = () => {
if (!navScroll$.value) return
const containerSize =
navScroll$.value[`offset${capitalize$2(sizeName.value)}`]
const currentOffset = navOffset.value
if (!currentOffset) return
const newOffset =
currentOffset > containerSize ? currentOffset - containerSize : 0
navOffset.value = newOffset
}
const scrollNext = () => {
if (!navScroll$.value || !nav$.value) return
const navSize = nav$.value[`offset${capitalize$2(sizeName.value)}`]
const containerSize =
navScroll$.value[`offset${capitalize$2(sizeName.value)}`]
const currentOffset = navOffset.value
if (navSize - currentOffset <= containerSize) return
const newOffset =
navSize - currentOffset > containerSize * 2
? currentOffset + containerSize
: navSize - containerSize
navOffset.value = newOffset
}
const scrollToActiveTab = () => {
const nav = nav$.value
if (!scrollable.value || !el$.value || !navScroll$.value || !nav) return
const activeTab2 = el$.value.querySelector('.is-active')
if (!activeTab2) return
const navScroll = navScroll$.value
const isHorizontal2 = ['top', 'bottom'].includes(
rootTabs.props.tabPosition
)
const activeTabBounding = activeTab2.getBoundingClientRect()
const navScrollBounding = navScroll.getBoundingClientRect()
const maxOffset = isHorizontal2
? nav.offsetWidth - navScrollBounding.width
: nav.offsetHeight - navScrollBounding.height
const currentOffset = navOffset.value
let newOffset = currentOffset
if (isHorizontal2) {
if (activeTabBounding.left < navScrollBounding.left) {
newOffset =
currentOffset - (navScrollBounding.left - activeTabBounding.left)
}
if (activeTabBounding.right > navScrollBounding.right) {
newOffset =
currentOffset + activeTabBounding.right - navScrollBounding.right
}
} else {
if (activeTabBounding.top < navScrollBounding.top) {
newOffset =
currentOffset - (navScrollBounding.top - activeTabBounding.top)
}
if (activeTabBounding.bottom > navScrollBounding.bottom) {
newOffset =
currentOffset +
(activeTabBounding.bottom - navScrollBounding.bottom)
}
}
newOffset = Math.max(newOffset, 0)
navOffset.value = Math.min(newOffset, maxOffset)
}
const update3 = () => {
if (!nav$.value || !navScroll$.value) return
const navSize = nav$.value[`offset${capitalize$2(sizeName.value)}`]
const containerSize =
navScroll$.value[`offset${capitalize$2(sizeName.value)}`]
const currentOffset = navOffset.value
if (containerSize < navSize) {
const currentOffset2 = navOffset.value
scrollable.value = scrollable.value || {}
scrollable.value.prev = currentOffset2
scrollable.value.next = currentOffset2 + containerSize < navSize
if (navSize - currentOffset2 < containerSize) {
navOffset.value = navSize - containerSize
}
} else {
scrollable.value = false
if (currentOffset > 0) {
navOffset.value = 0
}
}
}
const changeTab = (e2) => {
const code2 = e2.code
const { up, down, left: left2, right: right2 } = EVENT_CODE
if (![up, down, left2, right2].includes(code2)) return
const tabList = Array.from(
e2.currentTarget.querySelectorAll('[role=tab]')
)
const currentIndex = tabList.indexOf(e2.target)
let nextIndex
if (code2 === left2 || code2 === up) {
if (currentIndex === 0) {
nextIndex = tabList.length - 1
} else {
nextIndex = currentIndex - 1
}
} else {
if (currentIndex < tabList.length - 1) {
nextIndex = currentIndex + 1
} else {
nextIndex = 0
}
}
tabList[nextIndex].focus()
tabList[nextIndex].click()
setFocus()
}
const setFocus = () => {
if (focusable.value) isFocus.value = true
}
const removeFocus = () => (isFocus.value = false)
watch$1(visibility2, (visibility22) => {
if (visibility22 === 'hidden') {
focusable.value = false
} else if (visibility22 === 'visible') {
setTimeout(() => (focusable.value = true), 50)
}
})
watch$1(focused, (focused2) => {
if (focused2) {
setTimeout(() => (focusable.value = true), 50)
} else {
focusable.value = false
}
})
useResizeObserver$1(el$, update3)
onMounted(() => setTimeout(() => scrollToActiveTab(), 0))
onUpdated(() => update3())
expose({
scrollToActiveTab,
removeFocus,
})
return () => {
const scrollBtn = scrollable.value
? [
createVNode$1(
'span',
{
class: [
ns.e('nav-prev'),
ns.is('disabled', !scrollable.value.prev),
],
onClick: scrollPrev,
},
[
createVNode$1(ElIcon, null, {
default: () => [createVNode$1(arrowLeft, null, null)],
}),
]
),
createVNode$1(
'span',
{
class: [
ns.e('nav-next'),
ns.is('disabled', !scrollable.value.next),
],
onClick: scrollNext,
},
[
createVNode$1(ElIcon, null, {
default: () => [createVNode$1(arrowRight, null, null)],
}),
]
),
]
: null
const tabs2 = props2.panes.map((pane, index2) => {
var _a2, _b2
const tabName = pane.props.name || pane.index || `${index2}`
const closable = pane.isClosable || props2.editable
pane.index = `${index2}`
const btnClose = closable
? createVNode$1(
ElIcon,
{
class: 'is-icon-close',
onClick: (ev) => props2.onTabRemove(pane, ev),
},
{
default: () => [createVNode$1(close$2, null, null)],
}
)
: null
const tabLabelContent =
((_b2 = (_a2 = pane.instance.slots).label) == null
? void 0
: _b2.call(_a2)) || pane.props.label
const tabindex = pane.active ? 0 : -1
return createVNode$1(
'div',
{
ref: `tab-${tabName}`,
class: [
ns.e('item'),
ns.is(rootTabs.props.tabPosition),
ns.is('active', pane.active),
ns.is('disabled', pane.props.disabled),
ns.is('closable', closable),
ns.is('focus', isFocus.value),
],
id: `tab-${tabName}`,
key: `tab-${tabName}`,
'aria-controls': `pane-${tabName}`,
role: 'tab',
'aria-selected': pane.active,
tabindex: tabindex,
onFocus: () => setFocus(),
onBlur: () => removeFocus(),
onClick: (ev) => {
removeFocus()
props2.onTabClick(pane, tabName, ev)
},
onKeydown: (ev) => {
if (
closable &&
(ev.code === EVENT_CODE.delete ||
ev.code === EVENT_CODE.backspace)
) {
props2.onTabRemove(pane, ev)
}
},
},
[...[tabLabelContent, btnClose]]
)
})
return createVNode$1(
'div',
{
ref: el$,
class: [
ns.e('nav-wrap'),
ns.is('scrollable', !!scrollable.value),
ns.is(rootTabs.props.tabPosition),
],
},
[
scrollBtn,
createVNode$1(
'div',
{
class: ns.e('nav-scroll'),
ref: navScroll$,
},
[
createVNode$1(
'div',
{
class: [
ns.e('nav'),
ns.is(rootTabs.props.tabPosition),
ns.is(
'stretch',
props2.stretch &&
['top', 'bottom'].includes(rootTabs.props.tabPosition)
),
],
ref: nav$,
style: navStyle.value,
role: 'tablist',
onKeydown: changeTab,
},
[
...[
!props2.type
? createVNode$1(
TabBar,
{
tabs: [...props2.panes],
},
null
)
: null,
tabs2,
],
]
),
]
),
]
)
}
},
})
const tabsProps = buildProps({
type: {
type: String,
values: ['card', 'border-card', ''],
default: '',
},
activeName: {
type: [String, Number],
default: '',
},
closable: Boolean,
addable: Boolean,
modelValue: {
type: [String, Number],
default: '',
},
editable: Boolean,
tabPosition: {
type: String,
values: ['top', 'right', 'bottom', 'left'],
default: 'top',
},
beforeLeave: {
type: definePropType(Function),
default: () => true,
},
stretch: Boolean,
})
const isPanelName = (value2) => isString$f(value2) || isNumber$h(value2)
const tabsEmits = {
[UPDATE_MODEL_EVENT]: (name2) => isPanelName(name2),
[INPUT_EVENT]: (name2) => isPanelName(name2),
'tab-click': (pane, ev) => ev instanceof Event,
'tab-change': (name2) => isPanelName(name2),
edit: (paneName, action) => ['remove', 'add'].includes(action),
'tab-remove': (name2) => isPanelName(name2),
'tab-add': () => true,
}
const getPaneInstanceFromSlot = (vnode, paneInstanceList = []) => {
const children = vnode.children || []
Array.from(children).forEach((node2) => {
let type4 = node2.type
type4 = type4.name || type4
if (type4 === 'ElTabPane' && node2.component) {
paneInstanceList.push(node2.component)
} else if (type4 === Fragment || type4 === 'template') {
getPaneInstanceFromSlot(node2, paneInstanceList)
}
})
return paneInstanceList
}
var Tabs = defineComponent({
name: 'ElTabs',
props: tabsProps,
emits: tabsEmits,
setup(props2, { emit: emit2, slots, expose }) {
const instance = getCurrentInstance()
useDeprecated(
{
scope: 'el-tabs',
type: 'Event',
from: 'input',
replacement: 'tab-change',
version: '2.5.0',
ref: 'https://element-plus.org/en-US/component/tabs.html#tabs-events',
},
computed(() => {
var _a2
return isFunction$l(
(_a2 = instance.vnode.props) == null ? void 0 : _a2.onInput
)
})
)
const ns = useNamespace('tabs')
const nav$ = ref()
const panes = ref([])
const currentName = ref(props2.modelValue || props2.activeName || '0')
const paneStatesMap = {}
const updatePaneInstances = (isForceUpdate = false) => {
if (slots.default) {
const children = instance.subTree.children
const content2 = Array.from(children).find(
({ props: props22 }) =>
(props22 == null ? void 0 : props22.class) === ns.e('content')
)
if (!content2) return
const paneInstanceList = getPaneInstanceFromSlot(content2).map(
(paneComponent) => paneStatesMap[paneComponent.uid]
)
const panesChanged = !(
paneInstanceList.length === panes.value.length &&
paneInstanceList.every(
(pane, index2) => pane.uid === panes.value[index2].uid
)
)
if (isForceUpdate || panesChanged) {
panes.value = paneInstanceList
}
} else if (panes.value.length !== 0) {
panes.value = []
}
}
const changeCurrentName = (value2) => {
currentName.value = value2
emit2(INPUT_EVENT, value2)
emit2(UPDATE_MODEL_EVENT, value2)
emit2('tab-change', value2)
}
const setCurrentName = (value2) => {
var _a2
if (currentName.value === value2) return
const canLeave =
(_a2 = props2.beforeLeave) == null
? void 0
: _a2.call(props2, value2, currentName.value)
if (isPromise$1(canLeave)) {
canLeave.then(() => {
var _a22, _b2
changeCurrentName(value2)
;(_b2 = (_a22 = nav$.value) == null ? void 0 : _a22.removeFocus) ==
null
? void 0
: _b2.call(_a22)
}, NOOP)
} else if (canLeave !== false) {
changeCurrentName(value2)
}
}
const handleTabClick = (tab, tabName, event) => {
if (tab.props.disabled) return
setCurrentName(tabName)
emit2('tab-click', tab, event)
}
const handleTabRemove = (pane, ev) => {
if (pane.props.disabled) return
ev.stopPropagation()
emit2('edit', pane.props.name, 'remove')
emit2('tab-remove', pane.props.name)
}
const handleTabAdd = () => {
emit2('edit', void 0, 'add')
emit2('tab-add')
}
onUpdated(() => updatePaneInstances())
onMounted(() => updatePaneInstances())
watch$1(
() => props2.activeName,
(modelValue) => setCurrentName(modelValue)
)
watch$1(
() => props2.modelValue,
(modelValue) => setCurrentName(modelValue)
)
watch$1(currentName, async () => {
var _a2, _b2
updatePaneInstances(true)
await nextTick()
await ((_a2 = nav$.value) == null ? void 0 : _a2.$nextTick())
;(_b2 = nav$.value) == null ? void 0 : _b2.scrollToActiveTab()
})
provide(tabsRootContextKey, {
props: props2,
currentName,
updatePaneState: (pane) => (paneStatesMap[pane.uid] = pane),
})
expose({
currentName,
})
return () => {
const newButton =
props2.editable || props2.addable
? createVNode$1(
'span',
{
class: ns.e('new-tab'),
tabindex: '0',
onClick: handleTabAdd,
onKeydown: (ev) => {
if (ev.code === EVENT_CODE.enter) handleTabAdd()
},
},
[
createVNode$1(
ElIcon,
{
class: ns.is('icon-plus'),
},
{
default: () => [createVNode$1(plus, null, null)],
}
),
]
)
: null
const header = createVNode$1(
'div',
{
class: [ns.e('header'), ns.is(props2.tabPosition)],
},
[
newButton,
createVNode$1(
TabNav,
{
ref: nav$,
currentName: currentName.value,
editable: props2.editable,
type: props2.type,
panes: panes.value,
stretch: props2.stretch,
onTabClick: handleTabClick,
onTabRemove: handleTabRemove,
},
null
),
]
)
const panels = createVNode$1(
'div',
{
class: ns.e('content'),
},
[renderSlot(slots, 'default')]
)
return createVNode$1(
'div',
{
class: [
ns.b(),
ns.m(props2.tabPosition),
{
[ns.m('card')]: props2.type === 'card',
[ns.m('border-card')]: props2.type === 'border-card',
},
],
},
[
...(props2.tabPosition !== 'bottom'
? [header, panels]
: [panels, header]),
]
)
}
},
})
const tabPaneProps = buildProps({
label: {
type: String,
default: '',
},
name: {
type: [String, Number],
default: '',
},
closable: Boolean,
disabled: Boolean,
lazy: Boolean,
})
const _hoisted_1$6a = ['id', 'aria-hidden', 'aria-labelledby']
const __default__$c = {
name: 'ElTabPane',
}
const _sfc_main$7s = /* @__PURE__ */ defineComponent({
...__default__$c,
props: tabPaneProps,
setup(__props2) {
const props2 = __props2
const COMPONENT_NAME2 = 'ElTabPane'
const instance = getCurrentInstance()
const tabsRoot = inject(tabsRootContextKey)
if (!tabsRoot)
throwError$1(
COMPONENT_NAME2,
'usage: '
)
const ns = useNamespace('tab-pane')
const index2 = ref()
const isClosable = computed(
() => props2.closable || tabsRoot.props.closable
)
const active = computedEager$1(
() => tabsRoot.currentName.value === (props2.name || index2.value)
)
const loaded = ref(active.value)
const paneName = computed(() => props2.name || index2.value)
const shouldBeRender = computedEager$1(
() => !props2.lazy || loaded.value || active.value
)
watch$1(active, (val2) => {
if (val2) loaded.value = true
})
tabsRoot.updatePaneState(
reactive({
uid: instance.uid,
instance: markRaw(instance),
props: props2,
paneName,
active,
index: index2,
isClosable,
})
)
return (_ctx, _cache) => {
return unref(shouldBeRender)
? withDirectives(
(openBlock(),
createElementBlock(
'div',
{
key: 0,
id: `pane-${unref(paneName)}`,
class: normalizeClass(unref(ns).b()),
role: 'tabpanel',
'aria-hidden': !unref(active),
'aria-labelledby': `tab-${unref(paneName)}`,
},
[renderSlot(_ctx.$slots, 'default')],
10,
_hoisted_1$6a
)),
[[vShow, unref(active)]]
)
: createCommentVNode('v-if', true)
}
},
})
var TabPane = /* @__PURE__ */ _export_sfc$1(_sfc_main$7s, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/tabs/src/tab-pane.vue',
],
])
const ElTabs = withInstall(Tabs, {
TabPane,
})
const ElTabPane = withNoopInstall(TabPane)
dayjs.extend(customParseFormat)
const { Option: ElOption } = ElSelect
const parseTime = (time2) => {
const values2 = (time2 || '').split(':')
if (values2.length >= 2) {
let hours = Number.parseInt(values2[0], 10)
const minutes = Number.parseInt(values2[1], 10)
const timeUpper = time2.toUpperCase()
if (timeUpper.includes('AM') && hours === 12) {
hours = 0
} else if (timeUpper.includes('PM') && hours !== 12) {
hours += 12
}
return {
hours,
minutes,
}
}
return null
}
const compareTime = (time1, time2) => {
const value1 = parseTime(time1)
const value2 = parseTime(time2)
const minutes1 = value1.minutes + value1.hours * 60
const minutes2 = value2.minutes + value2.hours * 60
if (minutes1 === minutes2) {
return 0
}
return minutes1 > minutes2 ? 1 : -1
}
const padTime = (time2) => {
return `${time2}`.padStart(2, '0')
}
const formatTime$1 = (time2) => {
return `${padTime(time2.hours)}:${padTime(time2.minutes)}`
}
const nextTime = (time2, step) => {
const timeValue = parseTime(time2)
const stepValue = parseTime(step)
const next = {
hours: timeValue.hours,
minutes: timeValue.minutes,
}
next.minutes += stepValue.minutes
next.hours += stepValue.hours
next.hours += Math.floor(next.minutes / 60)
next.minutes = next.minutes % 60
return formatTime$1(next)
}
const _sfc_main$7r = defineComponent({
name: 'ElTimeSelect',
components: { ElSelect, ElOption, ElIcon },
model: {
prop: 'value',
event: 'change',
},
props: {
format: {
type: String,
default: 'HH:mm',
},
modelValue: String,
disabled: {
type: Boolean,
default: false,
},
editable: {
type: Boolean,
default: true,
},
effect: {
type: String,
default: 'light',
},
clearable: {
type: Boolean,
default: true,
},
size: {
type: String,
values: componentSizes,
default: '',
},
placeholder: {
type: String,
default: '',
},
start: {
type: String,
default: '09:00',
},
end: {
type: String,
default: '18:00',
},
step: {
type: String,
default: '00:30',
},
minTime: {
type: String,
default: '',
},
maxTime: {
type: String,
default: '',
},
name: {
type: String,
default: '',
},
prefixIcon: {
type: [String, Object],
default: clock,
},
clearIcon: {
type: [String, Object],
default: circleClose,
},
},
emits: ['change', 'blur', 'focus', 'update:modelValue'],
setup(props2) {
const select2 = ref(null)
const value2 = computed(() => props2.modelValue)
const start2 = computed(() => {
const time2 = parseTime(props2.start)
return formatTime$1(time2)
})
const end2 = computed(() => {
const time2 = parseTime(props2.end)
return formatTime$1(time2)
})
const step = computed(() => {
const time2 = parseTime(props2.step)
return formatTime$1(time2)
})
const minTime = computed(() => {
const time2 = parseTime(props2.minTime)
return time2 ? formatTime$1(time2) : null
})
const maxTime = computed(() => {
const time2 = parseTime(props2.maxTime)
return time2 ? formatTime$1(time2) : null
})
const items = computed(() => {
const result = []
if (props2.start && props2.end && props2.step) {
let current2 = start2.value
let currentTime
while (compareTime(current2, end2.value) <= 0) {
currentTime = dayjs(current2, 'HH:mm').format(props2.format)
result.push({
value: currentTime,
disabled:
compareTime(current2, minTime.value || '-1:-1') <= 0 ||
compareTime(current2, maxTime.value || '100:100') >= 0,
})
current2 = nextTime(current2, step.value)
}
}
return result
})
const blur = () => {
var _a2, _b2
;(_b2 = (_a2 = select2.value) == null ? void 0 : _a2.blur) == null
? void 0
: _b2.call(_a2)
}
const focus2 = () => {
var _a2, _b2
;(_b2 = (_a2 = select2.value) == null ? void 0 : _a2.focus) == null
? void 0
: _b2.call(_a2)
}
return {
select: select2,
value: value2,
items,
blur,
focus: focus2,
}
},
})
function _sfc_render$t(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_option = resolveComponent('el-option')
const _component_el_icon = resolveComponent('el-icon')
const _component_el_select = resolveComponent('el-select')
return (
openBlock(),
createBlock(
_component_el_select,
{
ref: 'select',
'model-value': _ctx.value,
disabled: _ctx.disabled,
clearable: _ctx.clearable,
'clear-icon': _ctx.clearIcon,
size: _ctx.size,
effect: _ctx.effect,
placeholder: _ctx.placeholder,
'default-first-option': '',
filterable: _ctx.editable,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = (event) => _ctx.$emit('update:modelValue', event)),
onChange:
_cache[1] || (_cache[1] = (event) => _ctx.$emit('change', event)),
onBlur: _cache[2] || (_cache[2] = (event) => _ctx.$emit('blur', event)),
onFocus:
_cache[3] || (_cache[3] = (event) => _ctx.$emit('focus', event)),
},
{
prefix: withCtx(() => [
_ctx.prefixIcon
? (openBlock(),
createBlock(
_component_el_icon,
{
key: 0,
class: 'el-input__prefix-icon',
},
{
default: withCtx(() => [
(openBlock(),
createBlock(resolveDynamicComponent(_ctx.prefixIcon))),
]),
_: 1,
}
))
: createCommentVNode('v-if', true),
]),
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.items, (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.value,
value: item2.value,
disabled: item2.disabled,
},
null,
8,
['label', 'value', 'disabled']
)
)
}),
128
)),
]),
_: 1,
},
8,
[
'model-value',
'disabled',
'clearable',
'clear-icon',
'size',
'effect',
'placeholder',
'filterable',
]
)
)
}
var TimeSelect = /* @__PURE__ */ _export_sfc$1(_sfc_main$7r, [
['render', _sfc_render$t],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/time-select/src/time-select.vue',
],
])
TimeSelect.install = (app2) => {
app2.component(TimeSelect.name, TimeSelect)
}
const _TimeSelect = TimeSelect
const ElTimeSelect = _TimeSelect
const Timeline = defineComponent({
name: 'ElTimeline',
setup(_2, { slots }) {
const ns = useNamespace('timeline')
provide('timeline', slots)
return () => {
return h$4('ul', { class: [ns.b()] }, [renderSlot(slots, 'default')])
}
},
})
const timelineItemProps = buildProps({
timestamp: {
type: String,
default: '',
},
hideTimestamp: {
type: Boolean,
default: false,
},
center: {
type: Boolean,
default: false,
},
placement: {
type: String,
default: 'bottom',
},
type: {
type: String,
default: '',
},
color: {
type: String,
default: '',
},
size: {
type: String,
default: 'normal',
},
icon: {
type: iconPropType,
default: '',
},
hollow: {
type: Boolean,
default: false,
},
})
const _sfc_main$7q = defineComponent({
name: 'ElTimelineItem',
components: {
ElIcon,
},
props: timelineItemProps,
setup() {
const ns = useNamespace('timeline-item')
return {
ns,
}
},
})
function _sfc_render$s(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_icon = resolveComponent('el-icon')
return (
openBlock(),
createElementBlock(
'li',
{
class: normalizeClass([
_ctx.ns.b(),
{ [_ctx.ns.e('center')]: _ctx.center },
]),
},
[
createElementVNode(
'div',
{
class: normalizeClass(_ctx.ns.e('tail')),
},
null,
2
),
!_ctx.$slots.dot
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass([
_ctx.ns.e('node'),
_ctx.ns.em('node', _ctx.size || ''),
_ctx.ns.em('node', _ctx.type || ''),
_ctx.ns.is('hollow', _ctx.hollow),
]),
style: normalizeStyle$1({
backgroundColor: _ctx.color,
}),
},
[
_ctx.icon
? (openBlock(),
createBlock(
_component_el_icon,
{
key: 0,
class: normalizeClass(_ctx.ns.e('icon')),
},
{
default: withCtx(() => [
(openBlock(),
createBlock(resolveDynamicComponent(_ctx.icon))),
]),
_: 1,
},
8,
['class']
))
: createCommentVNode('v-if', true),
],
6
))
: createCommentVNode('v-if', true),
_ctx.$slots.dot
? (openBlock(),
createElementBlock(
'div',
{
key: 1,
class: normalizeClass(_ctx.ns.e('dot')),
},
[renderSlot(_ctx.$slots, 'dot')],
2
))
: createCommentVNode('v-if', true),
createElementVNode(
'div',
{
class: normalizeClass(_ctx.ns.e('wrapper')),
},
[
!_ctx.hideTimestamp && _ctx.placement === 'top'
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass([
_ctx.ns.e('timestamp'),
_ctx.ns.is('top'),
]),
},
toDisplayString$1(_ctx.timestamp),
3
))
: createCommentVNode('v-if', true),
createElementVNode(
'div',
{
class: normalizeClass(_ctx.ns.e('content')),
},
[renderSlot(_ctx.$slots, 'default')],
2
),
!_ctx.hideTimestamp && _ctx.placement === 'bottom'
? (openBlock(),
createElementBlock(
'div',
{
key: 1,
class: normalizeClass([
_ctx.ns.e('timestamp'),
_ctx.ns.is('bottom'),
]),
},
toDisplayString$1(_ctx.timestamp),
3
))
: createCommentVNode('v-if', true),
],
2
),
],
2
)
)
}
var TimelineItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$7q, [
['render', _sfc_render$s],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/timeline/src/timeline-item.vue',
],
])
const ElTimeline = withInstall(Timeline, {
TimelineItem,
})
const ElTimelineItem = withNoopInstall(TimelineItem)
const tooltipV2CommonProps = buildProps({
nowrap: Boolean,
})
var TooltipV2Sides = /* @__PURE__ */ ((TooltipV2Sides2) => {
TooltipV2Sides2['top'] = 'top'
TooltipV2Sides2['bottom'] = 'bottom'
TooltipV2Sides2['left'] = 'left'
TooltipV2Sides2['right'] = 'right'
return TooltipV2Sides2
})(TooltipV2Sides || {})
const tooltipV2Sides = Object.values(TooltipV2Sides)
const tooltipV2ArrowProps = buildProps({
width: {
type: Number,
default: 10,
},
height: {
type: Number,
default: 10,
},
style: {
type: definePropType(Object),
default: null,
},
})
const tooltipV2ArrowSpecialProps = buildProps({
side: {
type: definePropType(String),
values: tooltipV2Sides,
required: true,
},
})
const tooltipV2Strategies = ['absolute', 'fixed']
const tooltipV2Placements = [
'top-start',
'top-end',
'top',
'bottom-start',
'bottom-end',
'bottom',
'left-start',
'left-end',
'left',
'right-start',
'right-end',
'right',
]
const tooltipV2ContentProps = buildProps({
ariaLabel: String,
arrowPadding: {
type: definePropType(Number),
default: 5,
},
effect: {
type: String,
default: '',
},
contentClass: String,
placement: {
type: definePropType(String),
values: tooltipV2Placements,
default: 'bottom',
},
reference: {
type: definePropType(Object),
default: null,
},
offset: {
type: Number,
default: 8,
},
strategy: {
type: definePropType(String),
values: tooltipV2Strategies,
default: 'absolute',
},
showArrow: {
type: Boolean,
default: false,
},
})
const tooltipV2RootProps = buildProps({
delayDuration: {
type: Number,
default: 300,
},
defaultOpen: Boolean,
open: {
type: Boolean,
default: void 0,
},
onOpenChange: {
type: definePropType(Function),
},
'onUpdate:open': {
type: definePropType(Function),
},
})
const EventHandler = {
type: definePropType(Function),
}
const tooltipV2TriggerProps = buildProps({
onBlur: EventHandler,
onClick: EventHandler,
onFocus: EventHandler,
onMouseDown: EventHandler,
onMouseEnter: EventHandler,
onMouseLeave: EventHandler,
})
const tooltipV2Props = buildProps({
...tooltipV2RootProps,
...tooltipV2ArrowProps,
...tooltipV2TriggerProps,
...tooltipV2ContentProps,
alwaysOn: Boolean,
fullTransition: Boolean,
transitionProps: {
type: definePropType(Object),
default: null,
},
teleported: Boolean,
to: {
type: definePropType(String),
default: 'body',
},
})
const __default__$b = {
name: 'ElTooltipV2Root',
}
const _sfc_main$7p = /* @__PURE__ */ defineComponent({
...__default__$b,
props: tooltipV2RootProps,
setup(__props2, { expose }) {
const props2 = __props2
const _open = ref(props2.defaultOpen)
const triggerRef2 = ref(null)
const open2 = computed({
get: () => (isPropAbsent(props2.open) ? _open.value : props2.open),
set: (open22) => {
var _a2
_open.value = open22
;(_a2 = props2['onUpdate:open']) == null
? void 0
: _a2.call(props2, open22)
},
})
const isOpenDelayed = computed(
() => isNumber$h(props2.delayDuration) && props2.delayDuration > 0
)
const { start: onDelayedOpen, stop: clearTimer2 } = useTimeoutFn$1(
() => {
open2.value = true
},
computed(() => props2.delayDuration),
{
immediate: false,
}
)
const ns = useNamespace('tooltip-v2')
const contentId = useId()
const onNormalOpen = () => {
clearTimer2()
open2.value = true
}
const onDelayOpen = () => {
unref(isOpenDelayed) ? onDelayedOpen() : onNormalOpen()
}
const onOpen = onNormalOpen
const onClose = () => {
clearTimer2()
open2.value = false
}
const onChange = (open22) => {
var _a2
if (open22) {
document.dispatchEvent(new CustomEvent(TOOLTIP_V2_OPEN))
onOpen()
}
;(_a2 = props2.onOpenChange) == null ? void 0 : _a2.call(props2, open22)
}
watch$1(open2, onChange)
onMounted(() => {
document.addEventListener(TOOLTIP_V2_OPEN, onClose)
})
onBeforeUnmount(() => {
clearTimer2()
document.removeEventListener(TOOLTIP_V2_OPEN, onClose)
})
provide(tooltipV2RootKey, {
contentId,
triggerRef: triggerRef2,
ns,
onClose,
onDelayOpen,
onOpen,
})
expose({
onOpen,
onClose,
})
return (_ctx, _cache) => {
return renderSlot(_ctx.$slots, 'default', { open: unref(open2) })
}
},
})
var TooltipV2Root = /* @__PURE__ */ _export_sfc$1(_sfc_main$7p, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/tooltip-v2/src/root.vue',
],
])
const __default__$a = {
name: 'ElTooltipV2Arrow',
}
const _sfc_main$7o = /* @__PURE__ */ defineComponent({
...__default__$a,
props: {
...tooltipV2ArrowProps,
...tooltipV2ArrowSpecialProps,
},
setup(__props2) {
const props2 = __props2
const { ns } = inject(tooltipV2RootKey)
const { arrowRef } = inject(tooltipV2ContentKey)
const arrowStyle = computed(() => {
const { style: style2, width, height } = props2
const namespace = ns.namespace.value
return {
[`--${namespace}-tooltip-v2-arrow-width`]: `${width}px`,
[`--${namespace}-tooltip-v2-arrow-height`]: `${height}px`,
[`--${namespace}-tooltip-v2-arrow-border-width`]: `${width / 2}px`,
[`--${namespace}-tooltip-v2-arrow-cover-width`]: width / 2 - 1,
...(style2 || {}),
}
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'span',
{
ref_key: 'arrowRef',
ref: arrowRef,
style: normalizeStyle$1(unref(arrowStyle)),
class: normalizeClass(unref(ns).e('arrow')),
},
null,
6
)
)
}
},
})
var TooltipV2Arrow = /* @__PURE__ */ _export_sfc$1(_sfc_main$7o, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/tooltip-v2/src/arrow.vue',
],
])
const _hoisted_1$69 = ['data-side']
const __default__$9 = {
name: 'ElTooltipV2Content',
}
const _sfc_main$7n = /* @__PURE__ */ defineComponent({
...__default__$9,
props: { ...tooltipV2ContentProps, ...tooltipV2CommonProps },
setup(__props2) {
const props2 = __props2
const { triggerRef: triggerRef2, contentId } = inject(tooltipV2RootKey)
const placement = ref(props2.placement)
const strategy = ref(props2.strategy)
const arrowRef = ref(null)
const {
referenceRef,
contentRef,
middlewareData,
x: x2,
y: y2,
update: update3,
} = useFloating({
placement,
strategy,
middleware: computed(() => {
const middleware = [T$5(props2.offset)]
if (props2.showArrow) {
middleware.push(
arrowMiddleware({
arrowRef,
})
)
}
return middleware
}),
})
const zIndex2 = useZIndex().nextZIndex()
const ns = useNamespace('tooltip-v2')
const side = computed(() => {
return placement.value.split('-')[0]
})
const contentStyle = computed(() => {
return {
position: unref(strategy),
top: `${unref(y2) || 0}px`,
left: `${unref(x2) || 0}px`,
zIndex: zIndex2,
}
})
const arrowStyle = computed(() => {
if (!props2.showArrow) return {}
const { arrow: arrow2 } = unref(middlewareData)
return {
[`--${ns.namespace.value}-tooltip-v2-arrow-x`]:
`${arrow2 == null ? void 0 : arrow2.x}px` || '',
[`--${ns.namespace.value}-tooltip-v2-arrow-y`]:
`${arrow2 == null ? void 0 : arrow2.y}px` || '',
}
})
const contentClass = computed(() => [
ns.e('content'),
ns.is('dark', props2.effect === 'dark'),
ns.is(unref(strategy)),
props2.contentClass,
])
watch$1(arrowRef, () => update3())
watch$1(
() => props2.placement,
(val2) => (placement.value = val2)
)
onMounted(() => {
watch$1(
() => props2.reference || triggerRef2.value,
(el2) => {
referenceRef.value = el2 || void 0
},
{
immediate: true,
}
)
})
provide(tooltipV2ContentKey, { arrowRef })
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
ref_key: 'contentRef',
ref: contentRef,
style: normalizeStyle$1(unref(contentStyle)),
'data-tooltip-v2-root': '',
},
[
!_ctx.nowrap
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
'data-side': unref(side),
class: normalizeClass(unref(contentClass)),
},
[
renderSlot(_ctx.$slots, 'default', {
contentStyle: unref(contentStyle),
contentClass: unref(contentClass),
}),
createVNode$1(
unref(ElVisuallyHidden),
{
id: unref(contentId),
role: 'tooltip',
},
{
default: withCtx(() => [
_ctx.ariaLabel
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
createTextVNode(
toDisplayString$1(_ctx.ariaLabel),
1
),
],
2112
))
: renderSlot(_ctx.$slots, 'default', { key: 1 }),
]),
_: 3,
},
8,
['id']
),
renderSlot(_ctx.$slots, 'arrow', {
style: normalizeStyle$1(unref(arrowStyle)),
side: unref(side),
}),
],
10,
_hoisted_1$69
))
: createCommentVNode('v-if', true),
],
4
)
)
}
},
})
var TooltipV2Content = /* @__PURE__ */ _export_sfc$1(_sfc_main$7n, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/tooltip-v2/src/content.vue',
],
])
const forwardRefProps = buildProps({
setRef: {
type: definePropType(Function),
required: true,
},
onlyChild: Boolean,
})
var ForwardRef = defineComponent({
props: forwardRefProps,
setup(props2, { slots }) {
const fragmentRef = ref()
const setRef = composeRefs(fragmentRef, (el2) => {
if (el2) {
props2.setRef(el2.nextElementSibling)
} else {
props2.setRef(null)
}
})
return () => {
var _a2
const [firstChild] =
((_a2 = slots.default) == null ? void 0 : _a2.call(slots)) || []
const child = props2.onlyChild
? ensureOnlyChild(firstChild.children)
: firstChild.children
return createVNode$1(
Fragment,
{
ref: setRef,
},
[child]
)
}
},
})
const __default__$8 = {
name: 'ElTooltipV2Trigger',
}
const _sfc_main$7m = /* @__PURE__ */ defineComponent({
...__default__$8,
props: {
...tooltipV2CommonProps,
...tooltipV2TriggerProps,
},
setup(__props2) {
const props2 = __props2
const {
onClose,
onOpen,
onDelayOpen,
triggerRef: triggerRef2,
contentId,
} = inject(tooltipV2RootKey)
let isMousedown = false
const setTriggerRef = (el2) => {
triggerRef2.value = el2
}
const onMouseup = () => {
isMousedown = false
}
const onMouseenter = composeEventHandlers(props2.onMouseEnter, onDelayOpen)
const onMouseleave = composeEventHandlers(props2.onMouseLeave, onClose)
const onMousedown = composeEventHandlers(props2.onMouseDown, () => {
onClose()
isMousedown = true
document.addEventListener('mouseup', onMouseup, { once: true })
})
const onFocus = composeEventHandlers(props2.onFocus, () => {
if (!isMousedown) onOpen()
})
const onBlur = composeEventHandlers(props2.onBlur, onClose)
const onClick = composeEventHandlers(props2.onClick, (e2) => {
if (e2.detail === 0) onClose()
})
const events2 = {
blur: onBlur,
click: onClick,
focus: onFocus,
mousedown: onMousedown,
mouseenter: onMouseenter,
mouseleave: onMouseleave,
}
const setEvents = (el2, events22, type4) => {
if (el2) {
Object.entries(events22).forEach(([name2, handler]) => {
el2[type4](name2, handler)
})
}
}
watch$1(triggerRef2, (triggerEl, previousTriggerEl) => {
setEvents(triggerEl, events2, 'addEventListener')
setEvents(previousTriggerEl, events2, 'removeEventListener')
if (triggerEl) {
triggerEl.setAttribute('aria-describedby', contentId.value)
}
})
onBeforeUnmount(() => {
setEvents(triggerRef2.value, events2, 'removeEventListener')
document.removeEventListener('mouseup', onMouseup)
})
return (_ctx, _cache) => {
return _ctx.nowrap
? (openBlock(),
createBlock(
unref(ForwardRef),
{
key: 0,
'set-ref': setTriggerRef,
'only-child': '',
},
{
default: withCtx(() => [renderSlot(_ctx.$slots, 'default')]),
_: 3,
}
))
: (openBlock(),
createElementBlock(
'button',
mergeProps(
{
key: 1,
ref_key: 'triggerRef',
ref: triggerRef2,
},
_ctx.$attrs
),
[renderSlot(_ctx.$slots, 'default')],
16
))
}
},
})
var TooltipV2Trigger = /* @__PURE__ */ _export_sfc$1(_sfc_main$7m, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/tooltip-v2/src/trigger.vue',
],
])
const __default__$7 = {
name: 'ElTooltipV2',
}
const _sfc_main$7l = /* @__PURE__ */ defineComponent({
...__default__$7,
props: tooltipV2Props,
setup(__props2) {
const props2 = __props2
const refedProps = toRefs$2(props2)
const arrowProps = reactive(
pick$3(refedProps, Object.keys(tooltipV2ArrowProps))
)
const contentProps = reactive(
pick$3(refedProps, Object.keys(tooltipV2ContentProps))
)
const rootProps = reactive(
pick$3(refedProps, Object.keys(tooltipV2RootProps))
)
const triggerProps = reactive(
pick$3(refedProps, Object.keys(tooltipV2TriggerProps))
)
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
TooltipV2Root,
normalizeProps(guardReactiveProps(unref(rootProps))),
{
default: withCtx(({ open: open2 }) => [
createVNode$1(
TooltipV2Trigger,
mergeProps(unref(triggerProps), { nowrap: '' }),
{
default: withCtx(() => [renderSlot(_ctx.$slots, 'trigger')]),
_: 3,
},
16
),
(openBlock(),
createBlock(
Teleport,
{
to: _ctx.to,
disabled: !_ctx.teleported,
},
[
_ctx.fullTransition
? (openBlock(),
createBlock(
Transition,
normalizeProps(
mergeProps({ key: 0 }, _ctx.transitionProps)
),
{
default: withCtx(() => [
_ctx.alwaysOn || open2
? (openBlock(),
createBlock(
TooltipV2Content,
normalizeProps(
mergeProps({ key: 0 }, unref(contentProps))
),
{
arrow: withCtx(
({ style: style2, side }) => [
_ctx.showArrow
? (openBlock(),
createBlock(
TooltipV2Arrow,
mergeProps(
{ key: 0 },
unref(arrowProps),
{
style: style2,
side,
}
),
null,
16,
['style', 'side']
))
: createCommentVNode('v-if', true),
]
),
default: withCtx(() => [
renderSlot(_ctx.$slots, 'default'),
]),
_: 3,
},
16
))
: createCommentVNode('v-if', true),
]),
_: 2,
},
1040
))
: (openBlock(),
createElementBlock(
Fragment,
{ key: 1 },
[
_ctx.alwaysOn || open2
? (openBlock(),
createBlock(
TooltipV2Content,
normalizeProps(
mergeProps({ key: 0 }, unref(contentProps))
),
{
arrow: withCtx(({ style: style2, side }) => [
_ctx.showArrow
? (openBlock(),
createBlock(
TooltipV2Arrow,
mergeProps(
{ key: 0 },
unref(arrowProps),
{
style: style2,
side,
}
),
null,
16,
['style', 'side']
))
: createCommentVNode('v-if', true),
]),
default: withCtx(() => [
renderSlot(_ctx.$slots, 'default'),
]),
_: 3,
},
16
))
: createCommentVNode('v-if', true),
],
2112
)),
],
8,
['to', 'disabled']
)),
]),
_: 3,
},
16
)
)
}
},
})
var TooltipV2 = /* @__PURE__ */ _export_sfc$1(_sfc_main$7l, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/tooltip-v2/src/tooltip.vue',
],
])
const ElTooltipV2 = withInstall(TooltipV2)
const CHECKED_CHANGE_EVENT = 'checked-change'
const useCheckProps = {
data: {
type: Array,
default() {
return []
},
},
optionRender: Function,
placeholder: String,
title: String,
filterable: Boolean,
format: Object,
filterMethod: Function,
defaultChecked: Array,
props: Object,
}
const useCheck$1 = (props2, panelState) => {
const { emit: emit2 } = getCurrentInstance()
const labelProp = computed(() => props2.props.label || 'label')
const keyProp = computed(() => props2.props.key || 'key')
const disabledProp = computed(() => props2.props.disabled || 'disabled')
const filteredData = computed(() => {
return props2.data.filter((item2) => {
if (typeof props2.filterMethod === 'function') {
return props2.filterMethod(panelState.query, item2)
} else {
const label = item2[labelProp.value] || item2[keyProp.value].toString()
return label.toLowerCase().includes(panelState.query.toLowerCase())
}
})
})
const checkableData = computed(() => {
return filteredData.value.filter((item2) => !item2[disabledProp.value])
})
const checkedSummary = computed(() => {
const checkedLength = panelState.checked.length
const dataLength = props2.data.length
const { noChecked, hasChecked } = props2.format
if (noChecked && hasChecked) {
return checkedLength > 0
? hasChecked
.replace(/\${checked}/g, checkedLength.toString())
.replace(/\${total}/g, dataLength.toString())
: noChecked.replace(/\${total}/g, dataLength.toString())
} else {
return `${checkedLength}/${dataLength}`
}
})
const isIndeterminate = computed(() => {
const checkedLength = panelState.checked.length
return checkedLength > 0 && checkedLength < checkableData.value.length
})
const updateAllChecked = () => {
const checkableDataKeys = checkableData.value.map(
(item2) => item2[keyProp.value]
)
panelState.allChecked =
checkableDataKeys.length > 0 &&
checkableDataKeys.every((item2) => panelState.checked.includes(item2))
}
const handleAllCheckedChange = (value2) => {
panelState.checked = value2
? checkableData.value.map((item2) => item2[keyProp.value])
: []
}
watch$1(
() => panelState.checked,
(val2, oldVal) => {
updateAllChecked()
if (panelState.checkChangeByUser) {
const movedKeys = val2
.concat(oldVal)
.filter((v4) => !val2.includes(v4) || !oldVal.includes(v4))
emit2(CHECKED_CHANGE_EVENT, val2, movedKeys)
} else {
emit2(CHECKED_CHANGE_EVENT, val2)
panelState.checkChangeByUser = true
}
}
)
watch$1(checkableData, () => {
updateAllChecked()
})
watch$1(
() => props2.data,
() => {
const checked2 = []
const filteredDataKeys = filteredData.value.map(
(item2) => item2[keyProp.value]
)
panelState.checked.forEach((item2) => {
if (filteredDataKeys.includes(item2)) {
checked2.push(item2)
}
})
panelState.checkChangeByUser = false
panelState.checked = checked2
}
)
watch$1(
() => props2.defaultChecked,
(val2, oldVal) => {
if (
oldVal &&
val2.length === oldVal.length &&
val2.every((item2) => oldVal.includes(item2))
)
return
const checked2 = []
const checkableDataKeys = checkableData.value.map(
(item2) => item2[keyProp.value]
)
val2.forEach((item2) => {
if (checkableDataKeys.includes(item2)) {
checked2.push(item2)
}
})
panelState.checkChangeByUser = false
panelState.checked = checked2
},
{
immediate: true,
}
)
return {
labelProp,
keyProp,
disabledProp,
filteredData,
checkableData,
checkedSummary,
isIndeterminate,
updateAllChecked,
handleAllCheckedChange,
}
}
const _sfc_main$7k = defineComponent({
name: 'ElTransferPanel',
components: {
ElCheckboxGroup: ElCheckboxGroup$1,
ElCheckbox,
ElInput,
OptionContent: ({ option: option2 }) => option2,
},
props: useCheckProps,
emits: [CHECKED_CHANGE_EVENT],
setup(props2, { slots }) {
const { t: t3 } = useLocale()
const ns = useNamespace('transfer')
const panelState = reactive({
checked: [],
allChecked: false,
query: '',
inputHover: false,
checkChangeByUser: true,
})
const {
labelProp,
keyProp,
disabledProp,
filteredData,
checkedSummary,
isIndeterminate,
handleAllCheckedChange,
} = useCheck$1(props2, panelState)
const hasNoMatch = computed(() => {
return panelState.query.length > 0 && filteredData.value.length === 0
})
const hasFooter = computed(() => !!slots.default()[0].children.length)
const {
checked: checked2,
allChecked,
query,
inputHover,
checkChangeByUser,
} = toRefs$2(panelState)
return {
ns,
labelProp,
keyProp,
disabledProp,
filteredData,
checkedSummary,
isIndeterminate,
handleAllCheckedChange,
checked: checked2,
allChecked,
query,
inputHover,
checkChangeByUser,
hasNoMatch,
SearchIcon: search,
hasFooter,
t: t3,
}
},
})
function _sfc_render$r(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_input = resolveComponent('el-input')
const _component_option_content = resolveComponent('option-content')
const _component_el_checkbox_group = resolveComponent('el-checkbox-group')
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass(_ctx.ns.b('panel')),
},
[
createElementVNode(
'p',
{
class: normalizeClass(_ctx.ns.be('panel', 'header')),
},
[
createVNode$1(
_component_el_checkbox,
{
modelValue: _ctx.allChecked,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (_ctx.allChecked = $event)),
indeterminate: _ctx.isIndeterminate,
onChange: _ctx.handleAllCheckedChange,
},
{
default: withCtx(() => [
createTextVNode(toDisplayString$1(_ctx.title) + ' ', 1),
createElementVNode(
'span',
null,
toDisplayString$1(_ctx.checkedSummary),
1
),
]),
_: 1,
},
8,
['modelValue', 'indeterminate', 'onChange']
),
],
2
),
createElementVNode(
'div',
{
class: normalizeClass([
_ctx.ns.be('panel', 'body'),
_ctx.ns.is('with-footer', _ctx.hasFooter),
]),
},
[
_ctx.filterable
? (openBlock(),
createBlock(
_component_el_input,
{
key: 0,
modelValue: _ctx.query,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) => (_ctx.query = $event)),
class: normalizeClass(_ctx.ns.be('panel', 'filter')),
size: 'default',
placeholder: _ctx.placeholder,
'prefix-icon': _ctx.SearchIcon,
clearable: '',
onMouseenter:
_cache[2] ||
(_cache[2] = ($event) => (_ctx.inputHover = true)),
onMouseleave:
_cache[3] ||
(_cache[3] = ($event) => (_ctx.inputHover = false)),
},
null,
8,
['modelValue', 'class', 'placeholder', 'prefix-icon']
))
: createCommentVNode('v-if', true),
withDirectives(
createVNode$1(
_component_el_checkbox_group,
{
modelValue: _ctx.checked,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) => (_ctx.checked = $event)),
class: normalizeClass([
_ctx.ns.is('filterable', _ctx.filterable),
_ctx.ns.be('panel', 'list'),
]),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.filteredData, (item2) => {
return (
openBlock(),
createBlock(
_component_el_checkbox,
{
key: item2[_ctx.keyProp],
class: normalizeClass(
_ctx.ns.be('panel', 'item')
),
label: item2[_ctx.keyProp],
disabled: item2[_ctx.disabledProp],
},
{
default: withCtx(() => [
createVNode$1(
_component_option_content,
{
option: _ctx.optionRender(item2),
},
null,
8,
['option']
),
]),
_: 2,
},
1032,
['class', 'label', 'disabled']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue', 'class']
),
[[vShow, !_ctx.hasNoMatch && _ctx.data.length > 0]]
),
withDirectives(
createElementVNode(
'p',
{
class: normalizeClass(_ctx.ns.be('panel', 'empty')),
},
toDisplayString$1(
_ctx.hasNoMatch
? _ctx.t('el.transfer.noMatch')
: _ctx.t('el.transfer.noData')
),
3
),
[[vShow, _ctx.hasNoMatch || _ctx.data.length === 0]]
),
],
2
),
_ctx.hasFooter
? (openBlock(),
createElementBlock(
'p',
{
key: 0,
class: normalizeClass(_ctx.ns.be('panel', 'footer')),
},
[renderSlot(_ctx.$slots, 'default')],
2
))
: createCommentVNode('v-if', true),
],
2
)
)
}
var TransferPanel = /* @__PURE__ */ _export_sfc$1(_sfc_main$7k, [
['render', _sfc_render$r],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/transfer/src/transfer-panel.vue',
],
])
const useComputedData = (props2) => {
const propsKey = computed(() => props2.props.key)
const dataObj = computed(() => {
return props2.data.reduce(
(o2, cur) => (o2[cur[propsKey.value]] = cur) && o2,
{}
)
})
const sourceData = computed(() => {
return props2.data.filter(
(item2) => !props2.modelValue.includes(item2[propsKey.value])
)
})
const targetData = computed(() => {
if (props2.targetOrder === 'original') {
return props2.data.filter((item2) =>
props2.modelValue.includes(item2[propsKey.value])
)
} else {
return props2.modelValue.reduce((arr, cur) => {
const val2 = dataObj.value[cur]
if (val2) {
arr.push(val2)
}
return arr
}, [])
}
})
return {
propsKey,
sourceData,
targetData,
}
}
const LEFT_CHECK_CHANGE_EVENT = 'left-check-change'
const RIGHT_CHECK_CHANGE_EVENT = 'right-check-change'
const useCheckedChange = (checkedState, emit2) => {
const onSourceCheckedChange = (val2, movedKeys) => {
checkedState.leftChecked = val2
if (movedKeys === void 0) return
emit2(LEFT_CHECK_CHANGE_EVENT, val2, movedKeys)
}
const onTargetCheckedChange = (val2, movedKeys) => {
checkedState.rightChecked = val2
if (movedKeys === void 0) return
emit2(RIGHT_CHECK_CHANGE_EVENT, val2, movedKeys)
}
return {
onSourceCheckedChange,
onTargetCheckedChange,
}
}
const useMove = (props2, checkedState, propsKey, emit2) => {
const _emit = (value2, type4, checked2) => {
emit2(UPDATE_MODEL_EVENT, value2)
emit2(CHANGE_EVENT, value2, type4, checked2)
}
const addToLeft = () => {
const currentValue = props2.modelValue.slice()
checkedState.rightChecked.forEach((item2) => {
const index2 = currentValue.indexOf(item2)
if (index2 > -1) {
currentValue.splice(index2, 1)
}
})
_emit(currentValue, 'left', checkedState.rightChecked)
}
const addToRight = () => {
let currentValue = props2.modelValue.slice()
const itemsToBeMoved = props2.data
.filter((item2) => {
const itemKey = item2[propsKey.value]
return (
checkedState.leftChecked.includes(itemKey) &&
!props2.modelValue.includes(itemKey)
)
})
.map((item2) => item2[propsKey.value])
currentValue =
props2.targetOrder === 'unshift'
? itemsToBeMoved.concat(currentValue)
: currentValue.concat(itemsToBeMoved)
if (props2.targetOrder === 'original') {
currentValue = props2.data
.filter((item2) => currentValue.includes(item2[propsKey.value]))
.map((item2) => item2[propsKey.value])
}
_emit(currentValue, 'right', checkedState.leftChecked)
}
return {
addToLeft,
addToRight,
}
}
const _sfc_main$7j = defineComponent({
name: 'ElTransfer',
components: {
TransferPanel,
ElButton,
ElIcon,
ArrowLeft: arrowLeft,
ArrowRight: arrowRight,
},
props: {
data: {
type: Array,
default: () => [],
},
titles: {
type: Array,
default: () => [],
},
buttonTexts: {
type: Array,
default: () => [],
},
filterPlaceholder: {
type: String,
default: '',
},
filterMethod: Function,
leftDefaultChecked: {
type: Array,
default: () => [],
},
rightDefaultChecked: {
type: Array,
default: () => [],
},
renderContent: Function,
modelValue: {
type: Array,
default: () => [],
},
format: {
type: Object,
default: () => ({}),
},
filterable: {
type: Boolean,
default: false,
},
props: {
type: Object,
default: () => ({
label: 'label',
key: 'key',
disabled: 'disabled',
}),
},
targetOrder: {
type: String,
default: 'original',
validator: (val2) => {
return ['original', 'push', 'unshift'].includes(val2)
},
},
},
emits: [
UPDATE_MODEL_EVENT,
CHANGE_EVENT,
LEFT_CHECK_CHANGE_EVENT,
RIGHT_CHECK_CHANGE_EVENT,
],
setup(props2, { emit: emit2, slots }) {
const { t: t3 } = useLocale()
const ns = useNamespace('transfer')
const elFormItem = inject(formItemContextKey, {})
const checkedState = reactive({
leftChecked: [],
rightChecked: [],
})
const { propsKey, sourceData, targetData } = useComputedData(props2)
const { onSourceCheckedChange, onTargetCheckedChange } = useCheckedChange(
checkedState,
emit2
)
const { addToLeft, addToRight } = useMove(
props2,
checkedState,
propsKey,
emit2
)
const leftPanel = ref()
const rightPanel = ref()
const clearQuery = (which) => {
switch (which) {
case 'left':
leftPanel.value.query = ''
break
case 'right':
rightPanel.value.query = ''
break
}
}
const hasButtonTexts = computed(() => props2.buttonTexts.length === 2)
const leftPanelTitle = computed(
() => props2.titles[0] || t3('el.transfer.titles.0')
)
const rightPanelTitle = computed(
() => props2.titles[1] || t3('el.transfer.titles.1')
)
const panelFilterPlaceholder = computed(
() => props2.filterPlaceholder || t3('el.transfer.filterPlaceholder')
)
watch$1(
() => props2.modelValue,
() => {
var _a2
;(_a2 = elFormItem.validate) == null
? void 0
: _a2.call(elFormItem, 'change').catch((err) => debugWarn())
}
)
const optionRender = computed(() => (option2) => {
if (props2.renderContent) return props2.renderContent(h$4, option2)
if (slots.default) return slots.default({ option: option2 })
return h$4(
'span',
option2[props2.props.label] || option2[props2.props.key]
)
})
return {
ns,
sourceData,
targetData,
onSourceCheckedChange,
onTargetCheckedChange,
addToLeft,
addToRight,
...toRefs$2(checkedState),
hasButtonTexts,
leftPanelTitle,
rightPanelTitle,
panelFilterPlaceholder,
clearQuery,
leftPanel,
rightPanel,
optionRender,
}
},
})
const _hoisted_1$68 = { key: 0 }
const _hoisted_2$52 = { key: 0 }
function _sfc_render$q(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_transfer_panel = resolveComponent('transfer-panel')
const _component_arrow_left = resolveComponent('arrow-left')
const _component_el_icon = resolveComponent('el-icon')
const _component_el_button = resolveComponent('el-button')
const _component_arrow_right = resolveComponent('arrow-right')
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass(_ctx.ns.b()),
},
[
createVNode$1(
_component_transfer_panel,
{
ref: 'leftPanel',
data: _ctx.sourceData,
'option-render': _ctx.optionRender,
placeholder: _ctx.panelFilterPlaceholder,
title: _ctx.leftPanelTitle,
filterable: _ctx.filterable,
format: _ctx.format,
'filter-method': _ctx.filterMethod,
'default-checked': _ctx.leftDefaultChecked,
props: _ctx.props,
onCheckedChange: _ctx.onSourceCheckedChange,
},
{
default: withCtx(() => [renderSlot(_ctx.$slots, 'left-footer')]),
_: 3,
},
8,
[
'data',
'option-render',
'placeholder',
'title',
'filterable',
'format',
'filter-method',
'default-checked',
'props',
'onCheckedChange',
]
),
createElementVNode(
'div',
{
class: normalizeClass(_ctx.ns.e('buttons')),
},
[
createVNode$1(
_component_el_button,
{
type: 'primary',
class: normalizeClass([
_ctx.ns.e('button'),
_ctx.ns.is('with-texts', _ctx.hasButtonTexts),
]),
disabled: _ctx.rightChecked.length === 0,
onClick: _ctx.addToLeft,
},
{
default: withCtx(() => [
createVNode$1(_component_el_icon, null, {
default: withCtx(() => [
createVNode$1(_component_arrow_left),
]),
_: 1,
}),
_ctx.buttonTexts[0] !== void 0
? (openBlock(),
createElementBlock(
'span',
_hoisted_1$68,
toDisplayString$1(_ctx.buttonTexts[0]),
1
))
: createCommentVNode('v-if', true),
]),
_: 1,
},
8,
['class', 'disabled', 'onClick']
),
createVNode$1(
_component_el_button,
{
type: 'primary',
class: normalizeClass([
_ctx.ns.e('button'),
_ctx.ns.is('with-texts', _ctx.hasButtonTexts),
]),
disabled: _ctx.leftChecked.length === 0,
onClick: _ctx.addToRight,
},
{
default: withCtx(() => [
_ctx.buttonTexts[1] !== void 0
? (openBlock(),
createElementBlock(
'span',
_hoisted_2$52,
toDisplayString$1(_ctx.buttonTexts[1]),
1
))
: createCommentVNode('v-if', true),
createVNode$1(_component_el_icon, null, {
default: withCtx(() => [
createVNode$1(_component_arrow_right),
]),
_: 1,
}),
]),
_: 1,
},
8,
['class', 'disabled', 'onClick']
),
],
2
),
createVNode$1(
_component_transfer_panel,
{
ref: 'rightPanel',
data: _ctx.targetData,
'option-render': _ctx.optionRender,
placeholder: _ctx.panelFilterPlaceholder,
filterable: _ctx.filterable,
format: _ctx.format,
'filter-method': _ctx.filterMethod,
title: _ctx.rightPanelTitle,
'default-checked': _ctx.rightDefaultChecked,
props: _ctx.props,
onCheckedChange: _ctx.onTargetCheckedChange,
},
{
default: withCtx(() => [renderSlot(_ctx.$slots, 'right-footer')]),
_: 3,
},
8,
[
'data',
'option-render',
'placeholder',
'filterable',
'format',
'filter-method',
'title',
'default-checked',
'props',
'onCheckedChange',
]
),
],
2
)
)
}
var Transfer = /* @__PURE__ */ _export_sfc$1(_sfc_main$7j, [
['render', _sfc_render$q],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/transfer/src/index.vue',
],
])
Transfer.install = (app2) => {
app2.component(Transfer.name, Transfer)
}
const _Transfer = Transfer
const ElTransfer = _Transfer
const NODE_KEY = '$treeNodeId'
const markNodeData = function (node2, data2) {
if (!data2 || data2[NODE_KEY]) return
Object.defineProperty(data2, NODE_KEY, {
value: node2.id,
enumerable: false,
configurable: false,
writable: false,
})
}
const getNodeKey = function (key2, data2) {
if (!key2) return data2[NODE_KEY]
return data2[key2]
}
const getChildState = (node2) => {
let all3 = true
let none = true
let allWithoutDisable = true
for (let i2 = 0, j2 = node2.length; i2 < j2; i2++) {
const n2 = node2[i2]
if (n2.checked !== true || n2.indeterminate) {
all3 = false
if (!n2.disabled) {
allWithoutDisable = false
}
}
if (n2.checked !== false || n2.indeterminate) {
none = false
}
}
return { all: all3, none, allWithoutDisable, half: !all3 && !none }
}
const reInitChecked = function (node2) {
if (node2.childNodes.length === 0) return
const { all: all3, none, half } = getChildState(node2.childNodes)
if (all3) {
node2.checked = true
node2.indeterminate = false
} else if (half) {
node2.checked = false
node2.indeterminate = true
} else if (none) {
node2.checked = false
node2.indeterminate = false
}
const parent2 = node2.parent
if (!parent2 || parent2.level === 0) return
if (!node2.store.checkStrictly) {
reInitChecked(parent2)
}
}
const getPropertyFromData = function (node2, prop) {
const props2 = node2.store.props
const data2 = node2.data || {}
const config2 = props2[prop]
if (typeof config2 === 'function') {
return config2(data2, node2)
} else if (typeof config2 === 'string') {
return data2[config2]
} else if (typeof config2 === 'undefined') {
const dataProp = data2[prop]
return dataProp === void 0 ? '' : dataProp
}
}
let nodeIdSeed = 0
class Node$2 {
constructor(options2) {
this.id = nodeIdSeed++
this.text = null
this.checked = false
this.indeterminate = false
this.data = null
this.expanded = false
this.parent = null
this.visible = true
this.isCurrent = false
this.canFocus = false
for (const name2 in options2) {
if (hasOwn$e(options2, name2)) {
this[name2] = options2[name2]
}
}
this.level = 0
this.loaded = false
this.childNodes = []
this.loading = false
if (this.parent) {
this.level = this.parent.level + 1
}
}
initialize() {
const store2 = this.store
if (!store2) {
throw new Error('[Node]store is required!')
}
store2.registerNode(this)
const props2 = store2.props
if (props2 && typeof props2.isLeaf !== 'undefined') {
const isLeaf2 = getPropertyFromData(this, 'isLeaf')
if (typeof isLeaf2 === 'boolean') {
this.isLeafByUser = isLeaf2
}
}
if (store2.lazy !== true && this.data) {
this.setData(this.data)
if (store2.defaultExpandAll) {
this.expanded = true
this.canFocus = true
}
} else if (this.level > 0 && store2.lazy && store2.defaultExpandAll) {
this.expand()
}
if (!Array.isArray(this.data)) {
markNodeData(this, this.data)
}
if (!this.data) return
const defaultExpandedKeys = store2.defaultExpandedKeys
const key2 = store2.key
if (key2 && defaultExpandedKeys && defaultExpandedKeys.includes(this.key)) {
this.expand(null, store2.autoExpandParent)
}
if (
key2 &&
store2.currentNodeKey !== void 0 &&
this.key === store2.currentNodeKey
) {
store2.currentNode = this
store2.currentNode.isCurrent = true
}
if (store2.lazy) {
store2._initDefaultCheckedNode(this)
}
this.updateLeafState()
if (this.parent && (this.level === 1 || this.parent.expanded === true))
this.canFocus = true
}
setData(data2) {
if (!Array.isArray(data2)) {
markNodeData(this, data2)
}
this.data = data2
this.childNodes = []
let children
if (this.level === 0 && Array.isArray(this.data)) {
children = this.data
} else {
children = getPropertyFromData(this, 'children') || []
}
for (let i2 = 0, j2 = children.length; i2 < j2; i2++) {
this.insertChild({ data: children[i2] })
}
}
get label() {
return getPropertyFromData(this, 'label')
}
get key() {
const nodeKey = this.store.key
if (this.data) return this.data[nodeKey]
return null
}
get disabled() {
return getPropertyFromData(this, 'disabled')
}
get nextSibling() {
const parent2 = this.parent
if (parent2) {
const index2 = parent2.childNodes.indexOf(this)
if (index2 > -1) {
return parent2.childNodes[index2 + 1]
}
}
return null
}
get previousSibling() {
const parent2 = this.parent
if (parent2) {
const index2 = parent2.childNodes.indexOf(this)
if (index2 > -1) {
return index2 > 0 ? parent2.childNodes[index2 - 1] : null
}
}
return null
}
contains(target2, deep = true) {
return (this.childNodes || []).some(
(child) => child === target2 || (deep && child.contains(target2))
)
}
remove() {
const parent2 = this.parent
if (parent2) {
parent2.removeChild(this)
}
}
insertChild(child, index2, batch) {
if (!child) throw new Error('InsertChild error: child is required.')
if (!(child instanceof Node$2)) {
if (!batch) {
const children = this.getChildren(true)
if (!children.includes(child.data)) {
if (typeof index2 === 'undefined' || index2 < 0) {
children.push(child.data)
} else {
children.splice(index2, 0, child.data)
}
}
}
Object.assign(child, {
parent: this,
store: this.store,
})
child = reactive(new Node$2(child))
if (child instanceof Node$2) {
child.initialize()
}
}
child.level = this.level + 1
if (typeof index2 === 'undefined' || index2 < 0) {
this.childNodes.push(child)
} else {
this.childNodes.splice(index2, 0, child)
}
this.updateLeafState()
}
insertBefore(child, ref2) {
let index2
if (ref2) {
index2 = this.childNodes.indexOf(ref2)
}
this.insertChild(child, index2)
}
insertAfter(child, ref2) {
let index2
if (ref2) {
index2 = this.childNodes.indexOf(ref2)
if (index2 !== -1) index2 += 1
}
this.insertChild(child, index2)
}
removeChild(child) {
const children = this.getChildren() || []
const dataIndex = children.indexOf(child.data)
if (dataIndex > -1) {
children.splice(dataIndex, 1)
}
const index2 = this.childNodes.indexOf(child)
if (index2 > -1) {
this.store && this.store.deregisterNode(child)
child.parent = null
this.childNodes.splice(index2, 1)
}
this.updateLeafState()
}
removeChildByData(data2) {
let targetNode = null
for (let i2 = 0; i2 < this.childNodes.length; i2++) {
if (this.childNodes[i2].data === data2) {
targetNode = this.childNodes[i2]
break
}
}
if (targetNode) {
this.removeChild(targetNode)
}
}
expand(callback, expandParent) {
const done = () => {
if (expandParent) {
let parent2 = this.parent
while (parent2.level > 0) {
parent2.expanded = true
parent2 = parent2.parent
}
}
this.expanded = true
if (callback) callback()
this.childNodes.forEach((item2) => {
item2.canFocus = true
})
}
if (this.shouldLoadData()) {
this.loadData((data2) => {
if (Array.isArray(data2)) {
if (this.checked) {
this.setChecked(true, true)
} else if (!this.store.checkStrictly) {
reInitChecked(this)
}
done()
}
})
} else {
done()
}
}
doCreateChildren(array4, defaultProps2 = {}) {
array4.forEach((item2) => {
this.insertChild(
Object.assign({ data: item2 }, defaultProps2),
void 0,
true
)
})
}
collapse() {
this.expanded = false
this.childNodes.forEach((item2) => {
item2.canFocus = false
})
}
shouldLoadData() {
return this.store.lazy === true && this.store.load && !this.loaded
}
updateLeafState() {
if (
this.store.lazy === true &&
this.loaded !== true &&
typeof this.isLeafByUser !== 'undefined'
) {
this.isLeaf = this.isLeafByUser
return
}
const childNodes = this.childNodes
if (
!this.store.lazy ||
(this.store.lazy === true && this.loaded === true)
) {
this.isLeaf = !childNodes || childNodes.length === 0
return
}
this.isLeaf = false
}
setChecked(value2, deep, recursion, passValue) {
this.indeterminate = value2 === 'half'
this.checked = value2 === true
if (this.store.checkStrictly) return
if (!(this.shouldLoadData() && !this.store.checkDescendants)) {
const { all: all3, allWithoutDisable } = getChildState(this.childNodes)
if (!this.isLeaf && !all3 && allWithoutDisable) {
this.checked = false
value2 = false
}
const handleDescendants = () => {
if (deep) {
const childNodes = this.childNodes
for (let i2 = 0, j2 = childNodes.length; i2 < j2; i2++) {
const child = childNodes[i2]
passValue = passValue || value2 !== false
const isCheck = child.disabled ? child.checked : passValue
child.setChecked(isCheck, deep, true, passValue)
}
const { half, all: all22 } = getChildState(childNodes)
if (!all22) {
this.checked = all22
this.indeterminate = half
}
}
}
if (this.shouldLoadData()) {
this.loadData(
() => {
handleDescendants()
reInitChecked(this)
},
{
checked: value2 !== false,
}
)
return
} else {
handleDescendants()
}
}
const parent2 = this.parent
if (!parent2 || parent2.level === 0) return
if (!recursion) {
reInitChecked(parent2)
}
}
getChildren(forceInit = false) {
if (this.level === 0) return this.data
const data2 = this.data
if (!data2) return null
const props2 = this.store.props
let children = 'children'
if (props2) {
children = props2.children || 'children'
}
if (data2[children] === void 0) {
data2[children] = null
}
if (forceInit && !data2[children]) {
data2[children] = []
}
return data2[children]
}
updateChildren() {
const newData = this.getChildren() || []
const oldData = this.childNodes.map((node2) => node2.data)
const newDataMap = {}
const newNodes = []
newData.forEach((item2, index2) => {
const key2 = item2[NODE_KEY]
const isNodeExists =
!!key2 && oldData.findIndex((data2) => data2[NODE_KEY] === key2) >= 0
if (isNodeExists) {
newDataMap[key2] = { index: index2, data: item2 }
} else {
newNodes.push({ index: index2, data: item2 })
}
})
if (!this.store.lazy) {
oldData.forEach((item2) => {
if (!newDataMap[item2[NODE_KEY]]) this.removeChildByData(item2)
})
}
newNodes.forEach(({ index: index2, data: data2 }) => {
this.insertChild({ data: data2 }, index2)
})
this.updateLeafState()
}
loadData(callback, defaultProps2 = {}) {
if (
this.store.lazy === true &&
this.store.load &&
!this.loaded &&
(!this.loading || Object.keys(defaultProps2).length)
) {
this.loading = true
const resolve2 = (children) => {
this.loaded = true
this.loading = false
this.childNodes = []
this.doCreateChildren(children, defaultProps2)
this.updateLeafState()
if (callback) {
callback.call(this, children)
}
}
this.store.load(this, resolve2)
} else {
if (callback) {
callback.call(this)
}
}
}
}
class TreeStore {
constructor(options2) {
this.currentNode = null
this.currentNodeKey = null
for (const option2 in options2) {
if (hasOwn$e(options2, option2)) {
this[option2] = options2[option2]
}
}
this.nodesMap = {}
}
initialize() {
this.root = new Node$2({
data: this.data,
store: this,
})
this.root.initialize()
if (this.lazy && this.load) {
const loadFn = this.load
loadFn(this.root, (data2) => {
this.root.doCreateChildren(data2)
this._initDefaultCheckedNodes()
})
} else {
this._initDefaultCheckedNodes()
}
}
filter(value2) {
const filterNodeMethod = this.filterNodeMethod
const lazy = this.lazy
const traverse = function (node2) {
const childNodes = node2.root ? node2.root.childNodes : node2.childNodes
childNodes.forEach((child) => {
child.visible = filterNodeMethod.call(child, value2, child.data, child)
traverse(child)
})
if (!node2.visible && childNodes.length) {
let allHidden = true
allHidden = !childNodes.some((child) => child.visible)
if (node2.root) {
node2.root.visible = allHidden === false
} else {
node2.visible = allHidden === false
}
}
if (!value2) return
if (node2.visible && !node2.isLeaf && !lazy) node2.expand()
}
traverse(this)
}
setData(newVal) {
const instanceChanged = newVal !== this.root.data
if (instanceChanged) {
this.root.setData(newVal)
this._initDefaultCheckedNodes()
} else {
this.root.updateChildren()
}
}
getNode(data2) {
if (data2 instanceof Node$2) return data2
const key2 = typeof data2 !== 'object' ? data2 : getNodeKey(this.key, data2)
return this.nodesMap[key2] || null
}
insertBefore(data2, refData) {
const refNode = this.getNode(refData)
refNode.parent.insertBefore({ data: data2 }, refNode)
}
insertAfter(data2, refData) {
const refNode = this.getNode(refData)
refNode.parent.insertAfter({ data: data2 }, refNode)
}
remove(data2) {
const node2 = this.getNode(data2)
if (node2 && node2.parent) {
if (node2 === this.currentNode) {
this.currentNode = null
}
node2.parent.removeChild(node2)
}
}
append(data2, parentData) {
const parentNode2 = parentData ? this.getNode(parentData) : this.root
if (parentNode2) {
parentNode2.insertChild({ data: data2 })
}
}
_initDefaultCheckedNodes() {
const defaultCheckedKeys = this.defaultCheckedKeys || []
const nodesMap = this.nodesMap
defaultCheckedKeys.forEach((checkedKey) => {
const node2 = nodesMap[checkedKey]
if (node2) {
node2.setChecked(true, !this.checkStrictly)
}
})
}
_initDefaultCheckedNode(node2) {
const defaultCheckedKeys = this.defaultCheckedKeys || []
if (defaultCheckedKeys.includes(node2.key)) {
node2.setChecked(true, !this.checkStrictly)
}
}
setDefaultCheckedKey(newVal) {
if (newVal !== this.defaultCheckedKeys) {
this.defaultCheckedKeys = newVal
this._initDefaultCheckedNodes()
}
}
registerNode(node2) {
const key2 = this.key
if (!node2 || !node2.data) return
if (!key2) {
this.nodesMap[node2.id] = node2
} else {
const nodeKey = node2.key
if (nodeKey !== void 0) this.nodesMap[node2.key] = node2
}
}
deregisterNode(node2) {
const key2 = this.key
if (!key2 || !node2 || !node2.data) return
node2.childNodes.forEach((child) => {
this.deregisterNode(child)
})
delete this.nodesMap[node2.key]
}
getCheckedNodes(leafOnly = false, includeHalfChecked = false) {
const checkedNodes = []
const traverse = function (node2) {
const childNodes = node2.root ? node2.root.childNodes : node2.childNodes
childNodes.forEach((child) => {
if (
(child.checked || (includeHalfChecked && child.indeterminate)) &&
(!leafOnly || (leafOnly && child.isLeaf))
) {
checkedNodes.push(child.data)
}
traverse(child)
})
}
traverse(this)
return checkedNodes
}
getCheckedKeys(leafOnly = false) {
return this.getCheckedNodes(leafOnly).map(
(data2) => (data2 || {})[this.key]
)
}
getHalfCheckedNodes() {
const nodes = []
const traverse = function (node2) {
const childNodes = node2.root ? node2.root.childNodes : node2.childNodes
childNodes.forEach((child) => {
if (child.indeterminate) {
nodes.push(child.data)
}
traverse(child)
})
}
traverse(this)
return nodes
}
getHalfCheckedKeys() {
return this.getHalfCheckedNodes().map((data2) => (data2 || {})[this.key])
}
_getAllNodes() {
const allNodes = []
const nodesMap = this.nodesMap
for (const nodeKey in nodesMap) {
if (hasOwn$e(nodesMap, nodeKey)) {
allNodes.push(nodesMap[nodeKey])
}
}
return allNodes
}
updateChildren(key2, data2) {
const node2 = this.nodesMap[key2]
if (!node2) return
const childNodes = node2.childNodes
for (let i2 = childNodes.length - 1; i2 >= 0; i2--) {
const child = childNodes[i2]
this.remove(child.data)
}
for (let i2 = 0, j2 = data2.length; i2 < j2; i2++) {
const child = data2[i2]
this.append(child, node2.data)
}
}
_setCheckedKeys(key2, leafOnly = false, checkedKeys) {
const allNodes = this._getAllNodes().sort((a2, b2) => b2.level - a2.level)
const cache2 = /* @__PURE__ */ Object.create(null)
const keys3 = Object.keys(checkedKeys)
allNodes.forEach((node2) => node2.setChecked(false, false))
for (let i2 = 0, j2 = allNodes.length; i2 < j2; i2++) {
const node2 = allNodes[i2]
const nodeKey = node2.data[key2].toString()
const checked2 = keys3.includes(nodeKey)
if (!checked2) {
if (node2.checked && !cache2[nodeKey]) {
node2.setChecked(false, false)
}
continue
}
let parent2 = node2.parent
while (parent2 && parent2.level > 0) {
cache2[parent2.data[key2]] = true
parent2 = parent2.parent
}
if (node2.isLeaf || this.checkStrictly) {
node2.setChecked(true, false)
continue
}
node2.setChecked(true, true)
if (leafOnly) {
node2.setChecked(false, false)
const traverse = function (node22) {
const childNodes = node22.childNodes
childNodes.forEach((child) => {
if (!child.isLeaf) {
child.setChecked(false, false)
}
traverse(child)
})
}
traverse(node2)
}
}
}
setCheckedNodes(array4, leafOnly = false) {
const key2 = this.key
const checkedKeys = {}
array4.forEach((item2) => {
checkedKeys[(item2 || {})[key2]] = true
})
this._setCheckedKeys(key2, leafOnly, checkedKeys)
}
setCheckedKeys(keys3, leafOnly = false) {
this.defaultCheckedKeys = keys3
const key2 = this.key
const checkedKeys = {}
keys3.forEach((key22) => {
checkedKeys[key22] = true
})
this._setCheckedKeys(key2, leafOnly, checkedKeys)
}
setDefaultExpandedKeys(keys3) {
keys3 = keys3 || []
this.defaultExpandedKeys = keys3
keys3.forEach((key2) => {
const node2 = this.getNode(key2)
if (node2) node2.expand(null, this.autoExpandParent)
})
}
setChecked(data2, checked2, deep) {
const node2 = this.getNode(data2)
if (node2) {
node2.setChecked(!!checked2, deep)
}
}
getCurrentNode() {
return this.currentNode
}
setCurrentNode(currentNode) {
const prevCurrentNode = this.currentNode
if (prevCurrentNode) {
prevCurrentNode.isCurrent = false
}
this.currentNode = currentNode
this.currentNode.isCurrent = true
}
setUserCurrentNode(node2, shouldAutoExpandParent = true) {
const key2 = node2[this.key]
const currNode = this.nodesMap[key2]
this.setCurrentNode(currNode)
if (shouldAutoExpandParent && this.currentNode.level > 1) {
this.currentNode.parent.expand(null, true)
}
}
setCurrentNodeKey(key2, shouldAutoExpandParent = true) {
if (key2 === null || key2 === void 0) {
this.currentNode && (this.currentNode.isCurrent = false)
this.currentNode = null
return
}
const node2 = this.getNode(key2)
if (node2) {
this.setCurrentNode(node2)
if (shouldAutoExpandParent && this.currentNode.level > 1) {
this.currentNode.parent.expand(null, true)
}
}
}
}
const _sfc_main$7i = defineComponent({
name: 'ElTreeNodeContent',
props: {
node: {
type: Object,
required: true,
},
renderContent: Function,
},
setup(props2) {
const ns = useNamespace('tree')
const nodeInstance = inject('NodeInstance')
const tree = inject('RootTree')
return () => {
const node2 = props2.node
const { data: data2, store: store2 } = node2
return props2.renderContent
? props2.renderContent(h$4, {
_self: nodeInstance,
node: node2,
data: data2,
store: store2,
})
: tree.ctx.slots.default
? tree.ctx.slots.default({ node: node2, data: data2 })
: h$4('span', { class: ns.be('node', 'label') }, [node2.label])
}
},
})
var NodeContent = /* @__PURE__ */ _export_sfc$1(_sfc_main$7i, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/tree/src/tree-node-content.vue',
],
])
function useNodeExpandEventBroadcast(props2) {
const parentNodeMap = inject('TreeNodeMap', null)
const currentNodeMap = {
treeNodeExpand: (node2) => {
if (props2.node !== node2) {
props2.node.collapse()
}
},
children: [],
}
if (parentNodeMap) {
parentNodeMap.children.push(currentNodeMap)
}
provide('TreeNodeMap', currentNodeMap)
return {
broadcastExpanded: (node2) => {
if (!props2.accordion) return
for (const childNode of currentNodeMap.children) {
childNode.treeNodeExpand(node2)
}
},
}
}
const dragEventsKey = Symbol('dragEvents')
function useDragNodeHandler({
props: props2,
ctx,
el$,
dropIndicator$,
store: store2,
}) {
const ns = useNamespace('tree')
const dragState = ref({
showDropIndicator: false,
draggingNode: null,
dropNode: null,
allowDrop: true,
dropType: null,
})
const treeNodeDragStart = ({ event, treeNode }) => {
if (
typeof props2.allowDrag === 'function' &&
!props2.allowDrag(treeNode.node)
) {
event.preventDefault()
return false
}
event.dataTransfer.effectAllowed = 'move'
try {
event.dataTransfer.setData('text/plain', '')
} catch (e2) {}
dragState.value.draggingNode = treeNode
ctx.emit('node-drag-start', treeNode.node, event)
}
const treeNodeDragOver = ({ event, treeNode }) => {
const dropNode = treeNode
const oldDropNode = dragState.value.dropNode
if (oldDropNode && oldDropNode !== dropNode) {
removeClass$1(oldDropNode.$el, ns.is('drop-inner'))
}
const draggingNode = dragState.value.draggingNode
if (!draggingNode || !dropNode) return
let dropPrev = true
let dropInner = true
let dropNext = true
let userAllowDropInner = true
if (typeof props2.allowDrop === 'function') {
dropPrev = props2.allowDrop(draggingNode.node, dropNode.node, 'prev')
userAllowDropInner = dropInner = props2.allowDrop(
draggingNode.node,
dropNode.node,
'inner'
)
dropNext = props2.allowDrop(draggingNode.node, dropNode.node, 'next')
}
event.dataTransfer.dropEffect =
dropInner || dropPrev || dropNext ? 'move' : 'none'
if ((dropPrev || dropInner || dropNext) && oldDropNode !== dropNode) {
if (oldDropNode) {
ctx.emit('node-drag-leave', draggingNode.node, oldDropNode.node, event)
}
ctx.emit('node-drag-enter', draggingNode.node, dropNode.node, event)
}
if (dropPrev || dropInner || dropNext) {
dragState.value.dropNode = dropNode
}
if (dropNode.node.nextSibling === draggingNode.node) {
dropNext = false
}
if (dropNode.node.previousSibling === draggingNode.node) {
dropPrev = false
}
if (dropNode.node.contains(draggingNode.node, false)) {
dropInner = false
}
if (
draggingNode.node === dropNode.node ||
draggingNode.node.contains(dropNode.node)
) {
dropPrev = false
dropInner = false
dropNext = false
}
const targetPosition = dropNode.$el.getBoundingClientRect()
const treePosition = el$.value.getBoundingClientRect()
let dropType
const prevPercent = dropPrev ? (dropInner ? 0.25 : dropNext ? 0.45 : 1) : -1
const nextPercent = dropNext ? (dropInner ? 0.75 : dropPrev ? 0.55 : 0) : 1
let indicatorTop = -9999
const distance2 = event.clientY - targetPosition.top
if (distance2 < targetPosition.height * prevPercent) {
dropType = 'before'
} else if (distance2 > targetPosition.height * nextPercent) {
dropType = 'after'
} else if (dropInner) {
dropType = 'inner'
} else {
dropType = 'none'
}
const iconPosition = dropNode.$el
.querySelector(`.${ns.be('node', 'expand-icon')}`)
.getBoundingClientRect()
const dropIndicator = dropIndicator$.value
if (dropType === 'before') {
indicatorTop = iconPosition.top - treePosition.top
} else if (dropType === 'after') {
indicatorTop = iconPosition.bottom - treePosition.top
}
dropIndicator.style.top = `${indicatorTop}px`
dropIndicator.style.left = `${iconPosition.right - treePosition.left}px`
if (dropType === 'inner') {
addClass$1(dropNode.$el, ns.is('drop-inner'))
} else {
removeClass$1(dropNode.$el, ns.is('drop-inner'))
}
dragState.value.showDropIndicator =
dropType === 'before' || dropType === 'after'
dragState.value.allowDrop =
dragState.value.showDropIndicator || userAllowDropInner
dragState.value.dropType = dropType
ctx.emit('node-drag-over', draggingNode.node, dropNode.node, event)
}
const treeNodeDragEnd = (event) => {
const { draggingNode, dropType, dropNode } = dragState.value
event.preventDefault()
event.dataTransfer.dropEffect = 'move'
if (draggingNode && dropNode) {
const draggingNodeCopy = { data: draggingNode.node.data }
if (dropType !== 'none') {
draggingNode.node.remove()
}
if (dropType === 'before') {
dropNode.node.parent.insertBefore(draggingNodeCopy, dropNode.node)
} else if (dropType === 'after') {
dropNode.node.parent.insertAfter(draggingNodeCopy, dropNode.node)
} else if (dropType === 'inner') {
dropNode.node.insertChild(draggingNodeCopy)
}
if (dropType !== 'none') {
store2.value.registerNode(draggingNodeCopy)
}
removeClass$1(dropNode.$el, ns.is('drop-inner'))
ctx.emit(
'node-drag-end',
draggingNode.node,
dropNode.node,
dropType,
event
)
if (dropType !== 'none') {
ctx.emit('node-drop', draggingNode.node, dropNode.node, dropType, event)
}
}
if (draggingNode && !dropNode) {
ctx.emit('node-drag-end', draggingNode.node, null, dropType, event)
}
dragState.value.showDropIndicator = false
dragState.value.draggingNode = null
dragState.value.dropNode = null
dragState.value.allowDrop = true
}
provide(dragEventsKey, {
treeNodeDragStart,
treeNodeDragOver,
treeNodeDragEnd,
})
return {
dragState,
}
}
const _sfc_main$7h = defineComponent({
name: 'ElTreeNode',
components: {
ElCollapseTransition: _CollapseTransition,
ElCheckbox,
NodeContent,
ElIcon,
Loading: loading,
},
props: {
node: {
type: Node$2,
default: () => ({}),
},
props: {
type: Object,
default: () => ({}),
},
accordion: Boolean,
renderContent: Function,
renderAfterExpand: Boolean,
showCheckbox: {
type: Boolean,
default: false,
},
},
emits: ['node-expand'],
setup(props2, ctx) {
const ns = useNamespace('tree')
const { broadcastExpanded } = useNodeExpandEventBroadcast(props2)
const tree = inject('RootTree')
const expanded = ref(false)
const childNodeRendered = ref(false)
const oldChecked = ref(null)
const oldIndeterminate = ref(null)
const node$ = ref(null)
const dragEvents = inject(dragEventsKey)
const instance = getCurrentInstance()
provide('NodeInstance', instance)
if (props2.node.expanded) {
expanded.value = true
childNodeRendered.value = true
}
const childrenKey = tree.props['children'] || 'children'
watch$1(
() => {
const children = props2.node.data[childrenKey]
return children && [...children]
},
() => {
props2.node.updateChildren()
}
)
watch$1(
() => props2.node.indeterminate,
(val2) => {
handleSelectChange(props2.node.checked, val2)
}
)
watch$1(
() => props2.node.checked,
(val2) => {
handleSelectChange(val2, props2.node.indeterminate)
}
)
watch$1(
() => props2.node.expanded,
(val2) => {
nextTick(() => (expanded.value = val2))
if (val2) {
childNodeRendered.value = true
}
}
)
const getNodeKey$1 = (node2) => {
return getNodeKey(tree.props.nodeKey, node2.data)
}
const getNodeClass = (node2) => {
const nodeClassFunc = props2.props.class
if (!nodeClassFunc) {
return {}
}
let className
if (isFunction$l(nodeClassFunc)) {
const { data: data2 } = node2
className = nodeClassFunc(data2, node2)
} else {
className = nodeClassFunc
}
if (isString$f(className)) {
return { [className]: true }
} else {
return className
}
}
const handleSelectChange = (checked2, indeterminate) => {
if (
oldChecked.value !== checked2 ||
oldIndeterminate.value !== indeterminate
) {
tree.ctx.emit('check-change', props2.node.data, checked2, indeterminate)
}
oldChecked.value = checked2
oldIndeterminate.value = indeterminate
}
const handleClick2 = (e2) => {
const store2 = tree.store.value
store2.setCurrentNode(props2.node)
tree.ctx.emit(
'current-change',
store2.currentNode ? store2.currentNode.data : null,
store2.currentNode
)
tree.currentNode.value = props2.node
if (tree.props.expandOnClickNode) {
handleExpandIconClick()
}
if (tree.props.checkOnClickNode && !props2.node.disabled) {
handleCheckChange(null, {
target: { checked: !props2.node.checked },
})
}
tree.ctx.emit('node-click', props2.node.data, props2.node, instance, e2)
}
const handleContextMenu = (event) => {
if (tree.instance.vnode.props['onNodeContextmenu']) {
event.stopPropagation()
event.preventDefault()
}
tree.ctx.emit(
'node-contextmenu',
event,
props2.node.data,
props2.node,
instance
)
}
const handleExpandIconClick = () => {
if (props2.node.isLeaf) return
if (expanded.value) {
tree.ctx.emit('node-collapse', props2.node.data, props2.node, instance)
props2.node.collapse()
} else {
props2.node.expand()
ctx.emit('node-expand', props2.node.data, props2.node, instance)
}
}
const handleCheckChange = (value2, ev) => {
props2.node.setChecked(ev.target.checked, !tree.props.checkStrictly)
nextTick(() => {
const store2 = tree.store.value
tree.ctx.emit('check', props2.node.data, {
checkedNodes: store2.getCheckedNodes(),
checkedKeys: store2.getCheckedKeys(),
halfCheckedNodes: store2.getHalfCheckedNodes(),
halfCheckedKeys: store2.getHalfCheckedKeys(),
})
})
}
const handleChildNodeExpand = (nodeData, node2, instance2) => {
broadcastExpanded(node2)
tree.ctx.emit('node-expand', nodeData, node2, instance2)
}
const handleDragStart = (event) => {
if (!tree.props.draggable) return
dragEvents.treeNodeDragStart({ event, treeNode: props2 })
}
const handleDragOver = (event) => {
event.preventDefault()
if (!tree.props.draggable) return
dragEvents.treeNodeDragOver({
event,
treeNode: { $el: node$.value, node: props2.node },
})
}
const handleDrop = (event) => {
event.preventDefault()
}
const handleDragEnd2 = (event) => {
if (!tree.props.draggable) return
dragEvents.treeNodeDragEnd(event)
}
return {
ns,
node$,
tree,
expanded,
childNodeRendered,
oldChecked,
oldIndeterminate,
getNodeKey: getNodeKey$1,
getNodeClass,
handleSelectChange,
handleClick: handleClick2,
handleContextMenu,
handleExpandIconClick,
handleCheckChange,
handleChildNodeExpand,
handleDragStart,
handleDragOver,
handleDrop,
handleDragEnd: handleDragEnd2,
CaretRight: caretRight,
}
},
})
const _hoisted_1$67 = [
'aria-expanded',
'aria-disabled',
'aria-checked',
'draggable',
'data-key',
]
const _hoisted_2$51 = ['aria-expanded']
function _sfc_render$p(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_icon = resolveComponent('el-icon')
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_loading = resolveComponent('loading')
const _component_node_content = resolveComponent('node-content')
const _component_el_tree_node = resolveComponent('el-tree-node')
const _component_el_collapse_transition = resolveComponent(
'el-collapse-transition'
)
return withDirectives(
(openBlock(),
createElementBlock(
'div',
{
ref: 'node$',
class: normalizeClass([
_ctx.ns.b('node'),
_ctx.ns.is('expanded', _ctx.expanded),
_ctx.ns.is('current', _ctx.node.isCurrent),
_ctx.ns.is('hidden', !_ctx.node.visible),
_ctx.ns.is('focusable', !_ctx.node.disabled),
_ctx.ns.is('checked', !_ctx.node.disabled && _ctx.node.checked),
_ctx.getNodeClass(_ctx.node),
]),
role: 'treeitem',
tabindex: '-1',
'aria-expanded': _ctx.expanded,
'aria-disabled': _ctx.node.disabled,
'aria-checked': _ctx.node.checked,
draggable: _ctx.tree.props.draggable,
'data-key': _ctx.getNodeKey(_ctx.node),
onClick:
_cache[1] ||
(_cache[1] = withModifiers(
(...args) => _ctx.handleClick && _ctx.handleClick(...args),
['stop']
)),
onContextmenu:
_cache[2] ||
(_cache[2] = (...args) =>
_ctx.handleContextMenu && _ctx.handleContextMenu(...args)),
onDragstart:
_cache[3] ||
(_cache[3] = withModifiers(
(...args) => _ctx.handleDragStart && _ctx.handleDragStart(...args),
['stop']
)),
onDragover:
_cache[4] ||
(_cache[4] = withModifiers(
(...args) => _ctx.handleDragOver && _ctx.handleDragOver(...args),
['stop']
)),
onDragend:
_cache[5] ||
(_cache[5] = withModifiers(
(...args) => _ctx.handleDragEnd && _ctx.handleDragEnd(...args),
['stop']
)),
onDrop:
_cache[6] ||
(_cache[6] = withModifiers(
(...args) => _ctx.handleDrop && _ctx.handleDrop(...args),
['stop']
)),
},
[
createElementVNode(
'div',
{
class: normalizeClass(_ctx.ns.be('node', 'content')),
style: normalizeStyle$1({
paddingLeft:
(_ctx.node.level - 1) * _ctx.tree.props.indent + 'px',
}),
},
[
_ctx.tree.props.icon || _ctx.CaretRight
? (openBlock(),
createBlock(
_component_el_icon,
{
key: 0,
class: normalizeClass([
_ctx.ns.be('node', 'expand-icon'),
_ctx.ns.is('leaf', _ctx.node.isLeaf),
{
expanded: !_ctx.node.isLeaf && _ctx.expanded,
},
]),
onClick: withModifiers(_ctx.handleExpandIconClick, [
'stop',
]),
},
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(
_ctx.tree.props.icon || _ctx.CaretRight
)
)),
]),
_: 1,
},
8,
['class', 'onClick']
))
: createCommentVNode('v-if', true),
_ctx.showCheckbox
? (openBlock(),
createBlock(
_component_el_checkbox,
{
key: 1,
'model-value': _ctx.node.checked,
indeterminate: _ctx.node.indeterminate,
disabled: !!_ctx.node.disabled,
onClick:
_cache[0] ||
(_cache[0] = withModifiers(() => {}, ['stop'])),
onChange: _ctx.handleCheckChange,
},
null,
8,
['model-value', 'indeterminate', 'disabled', 'onChange']
))
: createCommentVNode('v-if', true),
_ctx.node.loading
? (openBlock(),
createBlock(
_component_el_icon,
{
key: 2,
class: normalizeClass([
_ctx.ns.be('node', 'loading-icon'),
_ctx.ns.is('loading'),
]),
},
{
default: withCtx(() => [createVNode$1(_component_loading)]),
_: 1,
},
8,
['class']
))
: createCommentVNode('v-if', true),
createVNode$1(
_component_node_content,
{
node: _ctx.node,
'render-content': _ctx.renderContent,
},
null,
8,
['node', 'render-content']
),
],
6
),
createVNode$1(_component_el_collapse_transition, null, {
default: withCtx(() => [
!_ctx.renderAfterExpand || _ctx.childNodeRendered
? withDirectives(
(openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass(_ctx.ns.be('node', 'children')),
role: 'group',
'aria-expanded': _ctx.expanded,
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.node.childNodes, (child) => {
return (
openBlock(),
createBlock(
_component_el_tree_node,
{
key: _ctx.getNodeKey(child),
'render-content': _ctx.renderContent,
'render-after-expand': _ctx.renderAfterExpand,
'show-checkbox': _ctx.showCheckbox,
node: child,
accordion: _ctx.accordion,
props: _ctx.props,
onNodeExpand: _ctx.handleChildNodeExpand,
},
null,
8,
[
'render-content',
'render-after-expand',
'show-checkbox',
'node',
'accordion',
'props',
'onNodeExpand',
]
)
)
}),
128
)),
],
10,
_hoisted_2$51
)),
[[vShow, _ctx.expanded]]
)
: createCommentVNode('v-if', true),
]),
_: 1,
}),
],
42,
_hoisted_1$67
)),
[[vShow, _ctx.node.visible]]
)
}
var ElTreeNode$1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$7h, [
['render', _sfc_render$p],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/tree/src/tree-node.vue',
],
])
function useKeydown({ el$ }, store2) {
const ns = useNamespace('tree')
const treeItems = shallowRef([])
const checkboxItems = shallowRef([])
onMounted(() => {
initTabIndex()
on$2(el$.value, 'keydown', handleKeydown)
})
onBeforeUnmount(() => {
off$1(el$.value, 'keydown', handleKeydown)
})
onUpdated(() => {
treeItems.value = Array.from(el$.value.querySelectorAll('[role=treeitem]'))
checkboxItems.value = Array.from(
el$.value.querySelectorAll('input[type=checkbox]')
)
})
watch$1(checkboxItems, (val2) => {
val2.forEach((checkbox2) => {
checkbox2.setAttribute('tabindex', '-1')
})
})
const handleKeydown = (ev) => {
const currentItem = ev.target
if (!currentItem.className.includes(ns.b('node'))) return
const code2 = ev.code
treeItems.value = Array.from(
el$.value.querySelectorAll(`.${ns.is('focusable')}[role=treeitem]`)
)
const currentIndex = treeItems.value.indexOf(currentItem)
let nextIndex
if ([EVENT_CODE.up, EVENT_CODE.down].includes(code2)) {
ev.preventDefault()
if (code2 === EVENT_CODE.up) {
nextIndex =
currentIndex === -1
? 0
: currentIndex !== 0
? currentIndex - 1
: treeItems.value.length - 1
const startIndex = nextIndex
while (true) {
if (
store2.value.getNode(treeItems.value[nextIndex].dataset.key)
.canFocus
)
break
nextIndex--
if (nextIndex === startIndex) {
nextIndex = -1
break
}
if (nextIndex < 0) {
nextIndex = treeItems.value.length - 1
}
}
} else {
nextIndex =
currentIndex === -1
? 0
: currentIndex < treeItems.value.length - 1
? currentIndex + 1
: 0
const startIndex = nextIndex
while (true) {
if (
store2.value.getNode(treeItems.value[nextIndex].dataset.key)
.canFocus
)
break
nextIndex++
if (nextIndex === startIndex) {
nextIndex = -1
break
}
if (nextIndex >= treeItems.value.length) {
nextIndex = 0
}
}
}
nextIndex !== -1 && treeItems.value[nextIndex].focus()
}
if ([EVENT_CODE.left, EVENT_CODE.right].includes(code2)) {
ev.preventDefault()
currentItem.click()
}
const hasInput = currentItem.querySelector('[type="checkbox"]')
if ([EVENT_CODE.enter, EVENT_CODE.space].includes(code2) && hasInput) {
ev.preventDefault()
hasInput.click()
}
}
const initTabIndex = () => {
var _a2
treeItems.value = Array.from(
el$.value.querySelectorAll(`.${ns.is('focusable')}[role=treeitem]`)
)
checkboxItems.value = Array.from(
el$.value.querySelectorAll('input[type=checkbox]')
)
const checkedItem = el$.value.querySelectorAll(
`.${ns.is('checked')}[role=treeitem]`
)
if (checkedItem.length) {
checkedItem[0].setAttribute('tabindex', '0')
return
}
;(_a2 = treeItems.value[0]) == null
? void 0
: _a2.setAttribute('tabindex', '0')
}
}
const _sfc_main$7g = defineComponent({
name: 'ElTree',
components: { ElTreeNode: ElTreeNode$1 },
props: {
data: {
type: Array,
default: () => [],
},
emptyText: {
type: String,
},
renderAfterExpand: {
type: Boolean,
default: true,
},
nodeKey: String,
checkStrictly: Boolean,
defaultExpandAll: Boolean,
expandOnClickNode: {
type: Boolean,
default: true,
},
checkOnClickNode: Boolean,
checkDescendants: {
type: Boolean,
default: false,
},
autoExpandParent: {
type: Boolean,
default: true,
},
defaultCheckedKeys: Array,
defaultExpandedKeys: Array,
currentNodeKey: [String, Number],
renderContent: Function,
showCheckbox: {
type: Boolean,
default: false,
},
draggable: {
type: Boolean,
default: false,
},
allowDrag: Function,
allowDrop: Function,
props: {
type: Object,
default: () => ({
children: 'children',
label: 'label',
disabled: 'disabled',
}),
},
lazy: {
type: Boolean,
default: false,
},
highlightCurrent: Boolean,
load: Function,
filterNodeMethod: Function,
accordion: Boolean,
indent: {
type: Number,
default: 18,
},
icon: [String, Object],
},
emits: [
'check-change',
'current-change',
'node-click',
'node-contextmenu',
'node-collapse',
'node-expand',
'check',
'node-drag-start',
'node-drag-end',
'node-drop',
'node-drag-leave',
'node-drag-enter',
'node-drag-over',
],
setup(props2, ctx) {
const { t: t3 } = useLocale()
const ns = useNamespace('tree')
const store2 = ref(
new TreeStore({
key: props2.nodeKey,
data: props2.data,
lazy: props2.lazy,
props: props2.props,
load: props2.load,
currentNodeKey: props2.currentNodeKey,
checkStrictly: props2.checkStrictly,
checkDescendants: props2.checkDescendants,
defaultCheckedKeys: props2.defaultCheckedKeys,
defaultExpandedKeys: props2.defaultExpandedKeys,
autoExpandParent: props2.autoExpandParent,
defaultExpandAll: props2.defaultExpandAll,
filterNodeMethod: props2.filterNodeMethod,
})
)
store2.value.initialize()
const root2 = ref(store2.value.root)
const currentNode = ref(null)
const el$ = ref(null)
const dropIndicator$ = ref(null)
const { broadcastExpanded } = useNodeExpandEventBroadcast(props2)
const { dragState } = useDragNodeHandler({
props: props2,
ctx,
el$,
dropIndicator$,
store: store2,
})
useKeydown({ el$ }, store2)
const isEmpty2 = computed(() => {
const { childNodes } = root2.value
return (
!childNodes ||
childNodes.length === 0 ||
childNodes.every(({ visible }) => !visible)
)
})
watch$1(
() => props2.defaultCheckedKeys,
(newVal) => {
store2.value.setDefaultCheckedKey(newVal)
}
)
watch$1(
() => props2.defaultExpandedKeys,
(newVal) => {
store2.value.setDefaultExpandedKeys(newVal)
}
)
watch$1(
() => props2.data,
(newVal) => {
store2.value.setData(newVal)
},
{ deep: true }
)
watch$1(
() => props2.checkStrictly,
(newVal) => {
store2.value.checkStrictly = newVal
}
)
const filter2 = (value2) => {
if (!props2.filterNodeMethod)
throw new Error('[Tree] filterNodeMethod is required when filter')
store2.value.filter(value2)
}
const getNodeKey$1 = (node2) => {
return getNodeKey(props2.nodeKey, node2.data)
}
const getNodePath = (data2) => {
if (!props2.nodeKey)
throw new Error('[Tree] nodeKey is required in getNodePath')
const node2 = store2.value.getNode(data2)
if (!node2) return []
const path = [node2.data]
let parent2 = node2.parent
while (parent2 && parent2 !== root2.value) {
path.push(parent2.data)
parent2 = parent2.parent
}
return path.reverse()
}
const getCheckedNodes = (leafOnly, includeHalfChecked) => {
return store2.value.getCheckedNodes(leafOnly, includeHalfChecked)
}
const getCheckedKeys = (leafOnly) => {
return store2.value.getCheckedKeys(leafOnly)
}
const getCurrentNode = () => {
const currentNode2 = store2.value.getCurrentNode()
return currentNode2 ? currentNode2.data : null
}
const getCurrentKey = () => {
if (!props2.nodeKey)
throw new Error('[Tree] nodeKey is required in getCurrentKey')
const currentNode2 = getCurrentNode()
return currentNode2 ? currentNode2[props2.nodeKey] : null
}
const setCheckedNodes = (nodes, leafOnly) => {
if (!props2.nodeKey)
throw new Error('[Tree] nodeKey is required in setCheckedNodes')
store2.value.setCheckedNodes(nodes, leafOnly)
}
const setCheckedKeys = (keys3, leafOnly) => {
if (!props2.nodeKey)
throw new Error('[Tree] nodeKey is required in setCheckedKeys')
store2.value.setCheckedKeys(keys3, leafOnly)
}
const setChecked = (data2, checked2, deep) => {
store2.value.setChecked(data2, checked2, deep)
}
const getHalfCheckedNodes = () => {
return store2.value.getHalfCheckedNodes()
}
const getHalfCheckedKeys = () => {
return store2.value.getHalfCheckedKeys()
}
const setCurrentNode = (node2, shouldAutoExpandParent = true) => {
if (!props2.nodeKey)
throw new Error('[Tree] nodeKey is required in setCurrentNode')
store2.value.setUserCurrentNode(node2, shouldAutoExpandParent)
}
const setCurrentKey = (key2, shouldAutoExpandParent = true) => {
if (!props2.nodeKey)
throw new Error('[Tree] nodeKey is required in setCurrentKey')
store2.value.setCurrentNodeKey(key2, shouldAutoExpandParent)
}
const getNode = (data2) => {
return store2.value.getNode(data2)
}
const remove2 = (data2) => {
store2.value.remove(data2)
}
const append = (data2, parentNode2) => {
store2.value.append(data2, parentNode2)
}
const insertBefore2 = (data2, refNode) => {
store2.value.insertBefore(data2, refNode)
}
const insertAfter = (data2, refNode) => {
store2.value.insertAfter(data2, refNode)
}
const handleNodeExpand = (nodeData, node2, instance) => {
broadcastExpanded(node2)
ctx.emit('node-expand', nodeData, node2, instance)
}
const updateKeyChildren = (key2, data2) => {
if (!props2.nodeKey)
throw new Error('[Tree] nodeKey is required in updateKeyChild')
store2.value.updateChildren(key2, data2)
}
provide('RootTree', {
ctx,
props: props2,
store: store2,
root: root2,
currentNode,
instance: getCurrentInstance(),
})
return {
ns,
store: store2,
root: root2,
currentNode,
dragState,
el$,
dropIndicator$,
isEmpty: isEmpty2,
filter: filter2,
getNodeKey: getNodeKey$1,
getNodePath,
getCheckedNodes,
getCheckedKeys,
getCurrentNode,
getCurrentKey,
setCheckedNodes,
setCheckedKeys,
setChecked,
getHalfCheckedNodes,
getHalfCheckedKeys,
setCurrentNode,
setCurrentKey,
t: t3,
getNode,
remove: remove2,
append,
insertBefore: insertBefore2,
insertAfter,
handleNodeExpand,
updateKeyChildren,
}
},
})
function _sfc_render$o(_ctx, _cache, $props2, $setup, $data, $options) {
var _a2
const _component_el_tree_node = resolveComponent('el-tree-node')
return (
openBlock(),
createElementBlock(
'div',
{
ref: 'el$',
class: normalizeClass([
_ctx.ns.b(),
_ctx.ns.is('dragging', !!_ctx.dragState.draggingNode),
_ctx.ns.is('drop-not-allow', !_ctx.dragState.allowDrop),
_ctx.ns.is('drop-inner', _ctx.dragState.dropType === 'inner'),
{ [_ctx.ns.m('highlight-current')]: _ctx.highlightCurrent },
]),
role: 'tree',
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.root.childNodes, (child) => {
return (
openBlock(),
createBlock(
_component_el_tree_node,
{
key: _ctx.getNodeKey(child),
node: child,
props: _ctx.props,
accordion: _ctx.accordion,
'render-after-expand': _ctx.renderAfterExpand,
'show-checkbox': _ctx.showCheckbox,
'render-content': _ctx.renderContent,
onNodeExpand: _ctx.handleNodeExpand,
},
null,
8,
[
'node',
'props',
'accordion',
'render-after-expand',
'show-checkbox',
'render-content',
'onNodeExpand',
]
)
)
}),
128
)),
_ctx.isEmpty
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass(_ctx.ns.e('empty-block')),
},
[
createElementVNode(
'span',
{
class: normalizeClass(_ctx.ns.e('empty-text')),
},
toDisplayString$1(
(_a2 = _ctx.emptyText) != null
? _a2
: _ctx.t('el.tree.emptyText')
),
3
),
],
2
))
: createCommentVNode('v-if', true),
withDirectives(
createElementVNode(
'div',
{
ref: 'dropIndicator$',
class: normalizeClass(_ctx.ns.e('drop-indicator')),
},
null,
2
),
[[vShow, _ctx.dragState.showDropIndicator]]
),
],
2
)
)
}
var Tree$2 = /* @__PURE__ */ _export_sfc$1(_sfc_main$7g, [
['render', _sfc_render$o],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/tree/src/tree.vue',
],
])
Tree$2.install = (app2) => {
app2.component(Tree$2.name, Tree$2)
}
const _Tree = Tree$2
const ElTree = _Tree
const useSelect = (props2, { attrs }, { tree, key: key2 }) => {
const ns = useNamespace('tree-select')
const result = {
...pick$3(toRefs$2(props2), Object.keys(ElSelect.props)),
...attrs,
valueKey: key2,
popperClass: computed(() => {
const classes = [ns.e('popper')]
if (props2.popperClass) classes.push(props2.popperClass)
return classes.join(' ')
}),
filterMethod: (keyword = '') => {
if (props2.filterMethod) props2.filterMethod(keyword)
nextTick(() => {
var _a2
;(_a2 = tree.value) == null ? void 0 : _a2.filter(keyword)
})
},
onVisibleChange: (visible) => {
var _a2
;(_a2 = attrs.onVisibleChange) == null ? void 0 : _a2.call(attrs, visible)
if (props2.filterable && visible) {
result.filterMethod()
}
},
}
return result
}
const component = defineComponent({
extends: ElOption$1,
setup(props2, ctx) {
const result = ElOption$1.setup(props2, ctx)
delete result.selectOptionClick
return result
},
methods: {
selectOptionClick() {
this.$el.parentElement.click()
},
},
})
const useTree$1 = (
props2,
{ attrs, slots, emit: emit2 },
{ select: select2, tree, key: key2 }
) => {
watch$1(
() => props2.modelValue,
() => {
if (props2.showCheckbox) {
nextTick(() => {
const treeInstance = tree.value
if (
treeInstance &&
!isEqual$4(
treeInstance.getCheckedKeys(),
toValidArray(props2.modelValue)
)
) {
treeInstance.setCheckedKeys(toValidArray(props2.modelValue))
}
})
}
},
{
immediate: true,
deep: true,
}
)
const propsMap = computed(() => ({
value: key2.value,
...props2.props,
}))
const getNodeValByProp = (prop, data2) => {
var _a2
const propVal = propsMap.value[prop]
if (isFunction$l(propVal)) {
return propVal(
data2,
(_a2 = tree.value) == null
? void 0
: _a2.getNode(getNodeValByProp('value', data2))
)
} else {
return data2[propVal]
}
}
return {
...pick$3(toRefs$2(props2), Object.keys(_Tree.props)),
...attrs,
nodeKey: key2,
defaultExpandedKeys: computed(() =>
props2.defaultExpandedKeys
? props2.defaultExpandedKeys.concat(props2.modelValue)
: toValidArray(props2.modelValue)
),
renderContent: (h2, { node: node2, data: data2, store: store2 }) => {
return h2(
component,
{
value: getNodeValByProp('value', data2),
label: getNodeValByProp('label', data2),
disabled: getNodeValByProp('disabled', data2),
},
props2.renderContent
? () =>
props2.renderContent(h2, {
node: node2,
data: data2,
store: store2,
})
: slots.default
? () => slots.default({ node: node2, data: data2, store: store2 })
: void 0
)
},
filterNodeMethod: (value2, data2, node2) => {
var _a2
if (props2.filterNodeMethod)
return props2.filterNodeMethod(value2, data2, node2)
if (!value2) return true
return (_a2 = getNodeValByProp('label', data2)) == null
? void 0
: _a2.includes(value2)
},
onNodeClick: (data2, node2, e2) => {
var _a2, _b2, _c2
;(_a2 = attrs.onNodeClick) == null
? void 0
: _a2.call(attrs, data2, node2, e2)
if (props2.checkStrictly || node2.isLeaf) {
if (!getNodeValByProp('disabled', data2)) {
const option2 =
(_b2 = select2.value) == null
? void 0
: _b2.options.get(getNodeValByProp('value', data2))
;(_c2 = select2.value) == null
? void 0
: _c2.handleOptionSelect(option2, true)
}
} else {
e2.ctx.handleExpandIconClick()
}
},
onCheck: (data2, params2) => {
var _a2, _b2
;(_a2 = attrs.onCheck) == null ? void 0 : _a2.call(attrs, data2, params2)
const checkedKeys = !props2.checkStrictly
? (_b2 = tree.value) == null
? void 0
: _b2.getCheckedKeys(true)
: params2.checkedKeys
const value2 = getNodeValByProp('value', data2)
emit2(
UPDATE_MODEL_EVENT,
props2.multiple
? checkedKeys
: checkedKeys.includes(value2)
? value2
: void 0
)
},
}
}
function toValidArray(val2) {
return Array.isArray(val2) ? val2 : val2 || val2 === 0 ? [val2] : []
}
const _sfc_main$7f = defineComponent({
name: 'ElTreeSelect',
props: {
...ElSelect.props,
..._Tree.props,
},
setup(props2, context2) {
const { slots, expose } = context2
const select2 = ref()
const tree = ref()
const key2 = computed(() => props2.valueKey || props2.nodeKey || 'value')
const selectProps = useSelect(props2, context2, {
select: select2,
tree,
key: key2,
})
const treeProps2 = useTree$1(props2, context2, {
select: select2,
tree,
key: key2,
})
const methods = reactive({})
expose(methods)
onMounted(() => {
Object.assign(methods, {
...pick$3(tree.value, [
'filter',
'updateKeyChildren',
'getCheckedNodes',
'setCheckedNodes',
'getCheckedKeys',
'setCheckedKeys',
'setChecked',
'getHalfCheckedNodes',
'getHalfCheckedKeys',
'getCurrentKey',
'getCurrentNode',
'setCurrentKey',
'setCurrentNode',
'getNode',
'remove',
'append',
'insertBefore',
'insertAfter',
]),
...pick$3(select2.value, ['focus', 'blur']),
})
})
return () =>
h$4(
ElSelect,
reactive({
...selectProps,
ref: (ref2) => (select2.value = ref2),
}),
{
...slots,
default: () =>
h$4(
_Tree,
reactive({
...treeProps2,
ref: (ref2) => (tree.value = ref2),
})
),
}
)
},
})
var TreeSelect = /* @__PURE__ */ _export_sfc$1(_sfc_main$7f, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/tree-select/src/tree-select.vue',
],
])
TreeSelect.install = (app2) => {
app2.component(TreeSelect.name, TreeSelect)
}
const _TreeSelect = TreeSelect
const ElTreeSelect = _TreeSelect
const ROOT_TREE_INJECTION_KEY = Symbol()
const EMPTY_NODE = {
key: -1,
level: -1,
data: {},
}
var TreeOptionsEnum = /* @__PURE__ */ ((TreeOptionsEnum2) => {
TreeOptionsEnum2['KEY'] = 'id'
TreeOptionsEnum2['LABEL'] = 'label'
TreeOptionsEnum2['CHILDREN'] = 'children'
TreeOptionsEnum2['DISABLED'] = 'disabled'
return TreeOptionsEnum2
})(TreeOptionsEnum || {})
var SetOperationEnum = /* @__PURE__ */ ((SetOperationEnum2) => {
SetOperationEnum2['ADD'] = 'add'
SetOperationEnum2['DELETE'] = 'delete'
return SetOperationEnum2
})(SetOperationEnum || {})
const treeProps = buildProps({
data: {
type: definePropType(Array),
default: () => mutable([]),
},
emptyText: {
type: String,
},
height: {
type: Number,
default: 200,
},
props: {
type: definePropType(Object),
default: () =>
mutable({
children: 'children',
label: 'label',
disabled: 'disabled',
value: 'id',
}),
},
highlightCurrent: {
type: Boolean,
default: false,
},
showCheckbox: {
type: Boolean,
default: false,
},
defaultCheckedKeys: {
type: definePropType(Array),
default: () => mutable([]),
},
checkStrictly: {
type: Boolean,
default: false,
},
defaultExpandedKeys: {
type: definePropType(Array),
default: () => mutable([]),
},
indent: {
type: Number,
default: 16,
},
icon: {
type: String,
},
expandOnClickNode: {
type: Boolean,
default: true,
},
checkOnClickNode: {
type: Boolean,
default: false,
},
currentNodeKey: {
type: definePropType([String, Number]),
},
accordion: {
type: Boolean,
default: false,
},
filterMethod: {
type: definePropType(Function),
},
perfMode: {
type: Boolean,
default: true,
},
})
const treeNodeProps = buildProps({
node: {
type: definePropType(Object),
default: () => mutable(EMPTY_NODE),
},
expanded: {
type: Boolean,
default: false,
},
checked: {
type: Boolean,
default: false,
},
indeterminate: {
type: Boolean,
default: false,
},
showCheckbox: {
type: Boolean,
default: false,
},
disabled: {
type: Boolean,
default: false,
},
current: {
type: Boolean,
default: false,
},
hiddenExpandIcon: {
type: Boolean,
default: false,
},
})
const treeNodeContentProps = buildProps({
node: {
type: definePropType(Object),
required: true,
},
})
const NODE_CLICK = 'node-click'
const NODE_EXPAND = 'node-expand'
const NODE_COLLAPSE = 'node-collapse'
const CURRENT_CHANGE = 'current-change'
const NODE_CHECK = 'check'
const NODE_CHECK_CHANGE = 'check-change'
const NODE_CONTEXTMENU = 'node-contextmenu'
const treeEmits = {
[NODE_CLICK]: (data2, node2, e2) => data2 && node2 && e2,
[NODE_EXPAND]: (data2, node2) => data2 && node2,
[NODE_COLLAPSE]: (data2, node2) => data2 && node2,
[CURRENT_CHANGE]: (data2, node2) => data2 && node2,
[NODE_CHECK]: (data2, checkedInfo) => data2 && checkedInfo,
[NODE_CHECK_CHANGE]: (data2, checked2) =>
data2 && typeof checked2 === 'boolean',
[NODE_CONTEXTMENU]: (event, data2, node2) => event && data2 && node2,
}
const treeNodeEmits = {
click: (node2, e2) => !!(node2 && e2),
toggle: (node2) => !!node2,
check: (node2, checked2) => node2 && typeof checked2 === 'boolean',
}
function useCheck(props2, tree) {
const checkedKeys = ref(/* @__PURE__ */ new Set())
const indeterminateKeys = ref(/* @__PURE__ */ new Set())
const { emit: emit2 } = getCurrentInstance()
watch$1(
() => tree.value,
() => {
return nextTick(() => {
_setCheckedKeys(props2.defaultCheckedKeys)
})
},
{
immediate: true,
}
)
const updateCheckedKeys = () => {
if (!tree.value || !props2.showCheckbox || props2.checkStrictly) {
return
}
const { levelTreeNodeMap, maxLevel } = tree.value
const checkedKeySet = checkedKeys.value
const indeterminateKeySet = /* @__PURE__ */ new Set()
for (let level = maxLevel - 1; level >= 1; --level) {
const nodes = levelTreeNodeMap.get(level)
if (!nodes) continue
nodes.forEach((node2) => {
const children = node2.children
if (children) {
let allChecked = true
let hasChecked = false
for (const childNode of children) {
const key2 = childNode.key
if (checkedKeySet.has(key2)) {
hasChecked = true
} else if (indeterminateKeySet.has(key2)) {
allChecked = false
hasChecked = true
break
} else {
allChecked = false
}
}
if (allChecked) {
checkedKeySet.add(node2.key)
} else if (hasChecked) {
indeterminateKeySet.add(node2.key)
checkedKeySet.delete(node2.key)
} else {
checkedKeySet.delete(node2.key)
indeterminateKeySet.delete(node2.key)
}
}
})
}
indeterminateKeys.value = indeterminateKeySet
}
const isChecked = (node2) => checkedKeys.value.has(node2.key)
const isIndeterminate = (node2) => indeterminateKeys.value.has(node2.key)
const toggleCheckbox = (node2, isChecked2, nodeClick = true) => {
const checkedKeySet = checkedKeys.value
const toggle2 = (node22, checked2) => {
checkedKeySet[checked2 ? SetOperationEnum.ADD : SetOperationEnum.DELETE](
node22.key
)
const children = node22.children
if (!props2.checkStrictly && children) {
children.forEach((childNode) => {
if (!childNode.disabled) {
toggle2(childNode, checked2)
}
})
}
}
toggle2(node2, isChecked2)
updateCheckedKeys()
if (nodeClick) {
afterNodeCheck(node2, isChecked2)
}
}
const afterNodeCheck = (node2, checked2) => {
const { checkedNodes, checkedKeys: checkedKeys2 } = getChecked()
const { halfCheckedNodes, halfCheckedKeys } = getHalfChecked()
emit2(NODE_CHECK, node2.data, {
checkedKeys: checkedKeys2,
checkedNodes,
halfCheckedKeys,
halfCheckedNodes,
})
emit2(NODE_CHECK_CHANGE, node2.data, checked2)
}
function getCheckedKeys(leafOnly = false) {
return getChecked(leafOnly).checkedKeys
}
function getCheckedNodes(leafOnly = false) {
return getChecked(leafOnly).checkedNodes
}
function getHalfCheckedKeys() {
return getHalfChecked().halfCheckedKeys
}
function getHalfCheckedNodes() {
return getHalfChecked().halfCheckedNodes
}
function getChecked(leafOnly = false) {
const checkedNodes = []
const keys3 = []
if ((tree == null ? void 0 : tree.value) && props2.showCheckbox) {
const { treeNodeMap } = tree.value
checkedKeys.value.forEach((key2) => {
const node2 = treeNodeMap.get(key2)
if (node2 && (!leafOnly || (leafOnly && node2.isLeaf))) {
keys3.push(key2)
checkedNodes.push(node2.data)
}
})
}
return {
checkedKeys: keys3,
checkedNodes,
}
}
function getHalfChecked() {
const halfCheckedNodes = []
const halfCheckedKeys = []
if ((tree == null ? void 0 : tree.value) && props2.showCheckbox) {
const { treeNodeMap } = tree.value
indeterminateKeys.value.forEach((key2) => {
const node2 = treeNodeMap.get(key2)
if (node2) {
halfCheckedKeys.push(key2)
halfCheckedNodes.push(node2.data)
}
})
}
return {
halfCheckedNodes,
halfCheckedKeys,
}
}
function setCheckedKeys(keys3) {
checkedKeys.value.clear()
indeterminateKeys.value.clear()
_setCheckedKeys(keys3)
}
function setChecked(key2, isChecked2) {
if ((tree == null ? void 0 : tree.value) && props2.showCheckbox) {
const node2 = tree.value.treeNodeMap.get(key2)
if (node2) {
toggleCheckbox(node2, isChecked2, false)
}
}
}
function _setCheckedKeys(keys3) {
if (tree == null ? void 0 : tree.value) {
const { treeNodeMap } = tree.value
if (props2.showCheckbox && treeNodeMap && keys3) {
for (const key2 of keys3) {
const node2 = treeNodeMap.get(key2)
if (node2 && !isChecked(node2)) {
toggleCheckbox(node2, true, false)
}
}
}
}
}
return {
updateCheckedKeys,
toggleCheckbox,
isChecked,
isIndeterminate,
getCheckedKeys,
getCheckedNodes,
getHalfCheckedKeys,
getHalfCheckedNodes,
setChecked,
setCheckedKeys,
}
}
function useFilter(props2, tree) {
const hiddenNodeKeySet = ref(/* @__PURE__ */ new Set([]))
const hiddenExpandIconKeySet = ref(/* @__PURE__ */ new Set([]))
const filterable = computed(() => {
return isFunction$l(props2.filterMethod)
})
function doFilter(query) {
var _a2
if (!filterable.value) {
return
}
const expandKeySet = /* @__PURE__ */ new Set()
const hiddenExpandIconKeys = hiddenExpandIconKeySet.value
const hiddenKeys2 = hiddenNodeKeySet.value
const family = []
const nodes = ((_a2 = tree.value) == null ? void 0 : _a2.treeNodes) || []
const filter2 = props2.filterMethod
hiddenKeys2.clear()
function traverse(nodes2) {
nodes2.forEach((node2) => {
family.push(node2)
if (filter2 == null ? void 0 : filter2(query, node2.data)) {
family.forEach((member) => {
expandKeySet.add(member.key)
})
} else if (node2.isLeaf) {
hiddenKeys2.add(node2.key)
}
const children = node2.children
if (children) {
traverse(children)
}
if (!node2.isLeaf) {
if (!expandKeySet.has(node2.key)) {
hiddenKeys2.add(node2.key)
} else if (children) {
let allHidden = true
for (const childNode of children) {
if (!hiddenKeys2.has(childNode.key)) {
allHidden = false
break
}
}
if (allHidden) {
hiddenExpandIconKeys.add(node2.key)
} else {
hiddenExpandIconKeys.delete(node2.key)
}
}
}
family.pop()
})
}
traverse(nodes)
return expandKeySet
}
function isForceHiddenExpandIcon(node2) {
return hiddenExpandIconKeySet.value.has(node2.key)
}
return {
hiddenExpandIconKeySet,
hiddenNodeKeySet,
doFilter,
isForceHiddenExpandIcon,
}
}
function useTree(props2, emit2) {
const expandedKeySet = ref(new Set(props2.defaultExpandedKeys))
const currentKey = ref()
const tree = shallowRef()
watch$1(
() => props2.currentNodeKey,
(key2) => {
currentKey.value = key2
},
{
immediate: true,
}
)
watch$1(
() => props2.data,
(data2) => {
setData(data2)
},
{
immediate: true,
}
)
const {
isIndeterminate,
isChecked,
toggleCheckbox,
getCheckedKeys,
getCheckedNodes,
getHalfCheckedKeys,
getHalfCheckedNodes,
setChecked,
setCheckedKeys,
} = useCheck(props2, tree)
const { doFilter, hiddenNodeKeySet, isForceHiddenExpandIcon } = useFilter(
props2,
tree
)
const valueKey = computed(() => {
var _a2
return (
((_a2 = props2.props) == null ? void 0 : _a2.value) || TreeOptionsEnum.KEY
)
})
const childrenKey = computed(() => {
var _a2
return (
((_a2 = props2.props) == null ? void 0 : _a2.children) ||
TreeOptionsEnum.CHILDREN
)
})
const disabledKey = computed(() => {
var _a2
return (
((_a2 = props2.props) == null ? void 0 : _a2.disabled) ||
TreeOptionsEnum.DISABLED
)
})
const labelKey = computed(() => {
var _a2
return (
((_a2 = props2.props) == null ? void 0 : _a2.label) ||
TreeOptionsEnum.LABEL
)
})
const flattenTree = computed(() => {
const expandedKeys = expandedKeySet.value
const hiddenKeys2 = hiddenNodeKeySet.value
const flattenNodes = []
const nodes = (tree.value && tree.value.treeNodes) || []
function traverse() {
const stack = []
for (let i2 = nodes.length - 1; i2 >= 0; --i2) {
stack.push(nodes[i2])
}
while (stack.length) {
const node2 = stack.pop()
if (!node2) continue
if (!hiddenKeys2.has(node2.key)) {
flattenNodes.push(node2)
}
if (expandedKeys.has(node2.key)) {
const children = node2.children
if (children) {
const length2 = children.length
for (let i2 = length2 - 1; i2 >= 0; --i2) {
stack.push(children[i2])
}
}
}
}
}
traverse()
return flattenNodes
})
const isNotEmpty = computed(() => {
return flattenTree.value.length > 0
})
function createTree(data2) {
const treeNodeMap = /* @__PURE__ */ new Map()
const levelTreeNodeMap = /* @__PURE__ */ new Map()
let maxLevel = 1
function traverse(nodes, level = 1, parent2 = void 0) {
var _a2
const siblings = []
for (const rawNode of nodes) {
const value2 = getKey2(rawNode)
const node2 = {
level,
key: value2,
data: rawNode,
}
node2.label = getLabel(rawNode)
node2.parent = parent2
const children = getChildren(rawNode)
node2.disabled = getDisabled(rawNode)
node2.isLeaf = !children || children.length === 0
if (children && children.length) {
node2.children = traverse(children, level + 1, node2)
}
siblings.push(node2)
treeNodeMap.set(value2, node2)
if (!levelTreeNodeMap.has(level)) {
levelTreeNodeMap.set(level, [])
}
;(_a2 = levelTreeNodeMap.get(level)) == null ? void 0 : _a2.push(node2)
}
if (level > maxLevel) {
maxLevel = level
}
return siblings
}
const treeNodes = traverse(data2)
return {
treeNodeMap,
levelTreeNodeMap,
maxLevel,
treeNodes,
}
}
function filter2(query) {
const keys3 = doFilter(query)
if (keys3) {
expandedKeySet.value = keys3
}
}
function getChildren(node2) {
return node2[childrenKey.value]
}
function getKey2(node2) {
if (!node2) {
return ''
}
return node2[valueKey.value]
}
function getDisabled(node2) {
return node2[disabledKey.value]
}
function getLabel(node2) {
return node2[labelKey.value]
}
function toggleExpand(node2) {
const expandedKeys = expandedKeySet.value
if (expandedKeys.has(node2.key)) {
collapse2(node2)
} else {
expand2(node2)
}
}
function handleNodeClick(node2, e2) {
emit2(NODE_CLICK, node2.data, node2, e2)
handleCurrentChange(node2)
if (props2.expandOnClickNode) {
toggleExpand(node2)
}
if (props2.showCheckbox && props2.checkOnClickNode && !node2.disabled) {
toggleCheckbox(node2, !isChecked(node2), true)
}
}
function handleCurrentChange(node2) {
if (!isCurrent(node2)) {
currentKey.value = node2.key
emit2(CURRENT_CHANGE, node2.data, node2)
}
}
function handleNodeCheck(node2, checked2) {
toggleCheckbox(node2, checked2)
}
function expand2(node2) {
const keySet = expandedKeySet.value
if ((tree == null ? void 0 : tree.value) && props2.accordion) {
const { treeNodeMap } = tree.value
keySet.forEach((key2) => {
const node22 = treeNodeMap.get(key2)
if (node22 && node22.level === node22.level) {
keySet.delete(key2)
}
})
}
keySet.add(node2.key)
emit2(NODE_EXPAND, node2.data, node2)
}
function collapse2(node2) {
expandedKeySet.value.delete(node2.key)
emit2(NODE_COLLAPSE, node2.data, node2)
}
function isExpanded(node2) {
return expandedKeySet.value.has(node2.key)
}
function isDisabled(node2) {
return !!node2.disabled
}
function isCurrent(node2) {
const current2 = currentKey.value
return !!current2 && current2 === node2.key
}
function getCurrentNode() {
var _a2, _b2
if (!currentKey.value) return void 0
return (_b2 =
(_a2 = tree == null ? void 0 : tree.value) == null
? void 0
: _a2.treeNodeMap.get(currentKey.value)) == null
? void 0
: _b2.data
}
function getCurrentKey() {
return currentKey.value
}
function setCurrentKey(key2) {
currentKey.value = key2
}
function setData(data2) {
nextTick(() => (tree.value = createTree(data2)))
}
return {
tree,
flattenTree,
isNotEmpty,
getKey: getKey2,
getChildren,
toggleExpand,
toggleCheckbox,
isExpanded,
isChecked,
isIndeterminate,
isDisabled,
isCurrent,
isForceHiddenExpandIcon,
handleNodeClick,
handleNodeCheck,
getCurrentNode,
getCurrentKey,
setCurrentKey,
getCheckedKeys,
getCheckedNodes,
getHalfCheckedKeys,
getHalfCheckedNodes,
setChecked,
setCheckedKeys,
filter: filter2,
setData,
}
}
var ElNodeContent = defineComponent({
name: 'ElTreeNodeContent',
props: treeNodeContentProps,
setup(props2) {
const tree = inject(ROOT_TREE_INJECTION_KEY)
const ns = useNamespace('tree')
return () => {
const node2 = props2.node
const { data: data2 } = node2
return (tree == null ? void 0 : tree.ctx.slots.default)
? tree.ctx.slots.default({ node: node2, data: data2 })
: h$4('span', { class: ns.be('node', 'label') }, [
node2 == null ? void 0 : node2.label,
])
}
},
})
const DEFAULT_ICON = 'caret-right'
const _sfc_main$7e = defineComponent({
name: 'ElTreeNode',
components: {
ElIcon,
CaretRight: caretRight,
ElCheckbox,
ElNodeContent,
},
props: treeNodeProps,
emits: treeNodeEmits,
setup(props2, { emit: emit2 }) {
const tree = inject(ROOT_TREE_INJECTION_KEY)
const ns = useNamespace('tree')
const indent = computed(() => {
var _a2
return (_a2 = tree == null ? void 0 : tree.props.indent) != null
? _a2
: 16
})
const icon = computed(() => {
var _a2
return (_a2 = tree == null ? void 0 : tree.props.icon) != null
? _a2
: DEFAULT_ICON
})
const handleClick2 = (e2) => {
emit2('click', props2.node, e2)
}
const handleExpandIconClick = () => {
emit2('toggle', props2.node)
}
const handleCheckChange = (value2) => {
emit2('check', props2.node, value2)
}
const handleContextMenu = (event) => {
var _a2, _b2, _c2, _d
if (
(_c2 =
(_b2 =
(_a2 = tree == null ? void 0 : tree.instance) == null
? void 0
: _a2.vnode) == null
? void 0
: _b2.props) == null
? void 0
: _c2['onNodeContextmenu']
) {
event.stopPropagation()
event.preventDefault()
}
tree == null
? void 0
: tree.ctx.emit(
NODE_CONTEXTMENU,
event,
(_d = props2.node) == null ? void 0 : _d.data,
props2.node
)
}
return {
ns,
indent,
icon,
handleClick: handleClick2,
handleExpandIconClick,
handleCheckChange,
handleContextMenu,
}
},
})
const _hoisted_1$66 = [
'aria-expanded',
'aria-disabled',
'aria-checked',
'data-key',
]
function _sfc_render$n(_ctx, _cache, $props2, $setup, $data, $options) {
var _a2, _b2, _c2
const _component_el_icon = resolveComponent('el-icon')
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_node_content = resolveComponent('el-node-content')
return (
openBlock(),
createElementBlock(
'div',
{
ref: 'node$',
class: normalizeClass([
_ctx.ns.b('node'),
_ctx.ns.is('expanded', _ctx.expanded),
_ctx.ns.is('current', _ctx.current),
_ctx.ns.is('focusable', !_ctx.disabled),
_ctx.ns.is('checked', !_ctx.disabled && _ctx.checked),
]),
role: 'treeitem',
tabindex: '-1',
'aria-expanded': _ctx.expanded,
'aria-disabled': _ctx.disabled,
'aria-checked': _ctx.checked,
'data-key': (_a2 = _ctx.node) == null ? void 0 : _a2.key,
onClick:
_cache[1] ||
(_cache[1] = withModifiers(
(...args) => _ctx.handleClick && _ctx.handleClick(...args),
['stop']
)),
onContextmenu:
_cache[2] ||
(_cache[2] = (...args) =>
_ctx.handleContextMenu && _ctx.handleContextMenu(...args)),
},
[
createElementVNode(
'div',
{
class: normalizeClass(_ctx.ns.be('node', 'content')),
style: normalizeStyle$1({
paddingLeft: `${(_ctx.node.level - 1) * _ctx.indent}px`,
}),
},
[
_ctx.icon
? (openBlock(),
createBlock(
_component_el_icon,
{
key: 0,
class: normalizeClass([
_ctx.ns.is(
'leaf',
!!((_b2 = _ctx.node) == null ? void 0 : _b2.isLeaf)
),
_ctx.ns.is('hidden', _ctx.hiddenExpandIcon),
{
expanded:
!((_c2 = _ctx.node) == null ? void 0 : _c2.isLeaf) &&
_ctx.expanded,
},
_ctx.ns.be('node', 'expand-icon'),
]),
onClick: withModifiers(_ctx.handleExpandIconClick, [
'stop',
]),
},
{
default: withCtx(() => [
(openBlock(),
createBlock(resolveDynamicComponent(_ctx.icon))),
]),
_: 1,
},
8,
['class', 'onClick']
))
: createCommentVNode('v-if', true),
_ctx.showCheckbox
? (openBlock(),
createBlock(
_component_el_checkbox,
{
key: 1,
'model-value': _ctx.checked,
indeterminate: _ctx.indeterminate,
disabled: _ctx.disabled,
onChange: _ctx.handleCheckChange,
onClick:
_cache[0] ||
(_cache[0] = withModifiers(() => {}, ['stop'])),
},
null,
8,
['model-value', 'indeterminate', 'disabled', 'onChange']
))
: createCommentVNode('v-if', true),
createVNode$1(
_component_el_node_content,
{ node: _ctx.node },
null,
8,
['node']
),
],
6
),
],
42,
_hoisted_1$66
)
)
}
var ElTreeNode = /* @__PURE__ */ _export_sfc$1(_sfc_main$7e, [
['render', _sfc_render$n],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/tree-v2/src/tree-node.vue',
],
])
const _sfc_main$7d = defineComponent({
name: 'ElTreeV2',
components: {
ElTreeNode,
FixedSizeList,
},
props: treeProps,
emits: treeEmits,
setup(props2, ctx) {
provide(ROOT_TREE_INJECTION_KEY, {
ctx,
props: props2,
instance: getCurrentInstance(),
})
const { t: t3 } = useLocale()
const ns = useNamespace('tree')
const {
flattenTree,
isNotEmpty,
toggleExpand,
isExpanded,
isIndeterminate,
isChecked,
isDisabled,
isCurrent,
isForceHiddenExpandIcon,
toggleCheckbox,
handleNodeClick,
handleNodeCheck,
getCurrentNode,
getCurrentKey,
setCurrentKey,
getCheckedKeys,
getCheckedNodes,
getHalfCheckedKeys,
getHalfCheckedNodes,
setChecked,
setCheckedKeys,
filter: filter2,
setData,
} = useTree(props2, ctx.emit)
ctx.expose({
getCurrentNode,
getCurrentKey,
setCurrentKey,
getCheckedKeys,
getCheckedNodes,
getHalfCheckedKeys,
getHalfCheckedNodes,
setChecked,
setCheckedKeys,
filter: filter2,
setData,
})
return {
t: t3,
ns,
flattenTree,
itemSize: 26,
isNotEmpty,
toggleExpand,
toggleCheckbox,
isExpanded,
isIndeterminate,
isChecked,
isDisabled,
isCurrent,
isForceHiddenExpandIcon,
handleNodeClick,
handleNodeCheck,
}
},
})
function _sfc_render$m(_ctx, _cache, $props2, $setup, $data, $options) {
var _a2
const _component_el_tree_node = resolveComponent('el-tree-node')
const _component_fixed_size_list = resolveComponent('fixed-size-list')
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
_ctx.ns.b(),
{ [_ctx.ns.m('highlight-current')]: _ctx.highlightCurrent },
]),
role: 'tree',
},
[
_ctx.isNotEmpty
? (openBlock(),
createBlock(
_component_fixed_size_list,
{
key: 0,
'class-name': _ctx.ns.b('virtual-list'),
data: _ctx.flattenTree,
total: _ctx.flattenTree.length,
height: _ctx.height,
'item-size': _ctx.itemSize,
'perf-mode': _ctx.perfMode,
},
{
default: withCtx(
({ data: data2, index: index2, style: style2 }) => [
(openBlock(),
createBlock(
_component_el_tree_node,
{
key: data2[index2].key,
style: normalizeStyle$1(style2),
node: data2[index2],
expanded: _ctx.isExpanded(data2[index2]),
'show-checkbox': _ctx.showCheckbox,
checked: _ctx.isChecked(data2[index2]),
indeterminate: _ctx.isIndeterminate(data2[index2]),
disabled: _ctx.isDisabled(data2[index2]),
current: _ctx.isCurrent(data2[index2]),
'hidden-expand-icon': _ctx.isForceHiddenExpandIcon(
data2[index2]
),
onClick: _ctx.handleNodeClick,
onToggle: _ctx.toggleExpand,
onCheck: _ctx.handleNodeCheck,
},
null,
8,
[
'style',
'node',
'expanded',
'show-checkbox',
'checked',
'indeterminate',
'disabled',
'current',
'hidden-expand-icon',
'onClick',
'onToggle',
'onCheck',
]
)),
]
),
_: 1,
},
8,
[
'class-name',
'data',
'total',
'height',
'item-size',
'perf-mode',
]
))
: (openBlock(),
createElementBlock(
'div',
{
key: 1,
class: normalizeClass(_ctx.ns.e('empty-block')),
},
[
createElementVNode(
'span',
{
class: normalizeClass(_ctx.ns.e('empty-text')),
},
toDisplayString$1(
(_a2 = _ctx.emptyText) != null
? _a2
: _ctx.t('el.tree.emptyText')
),
3
),
],
2
)),
],
2
)
)
}
var TreeV2 = /* @__PURE__ */ _export_sfc$1(_sfc_main$7d, [
['render', _sfc_render$m],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/tree-v2/src/tree.vue',
],
])
const ElTreeV2 = withInstall(TreeV2)
const SCOPE$2 = 'ElUpload'
class UploadAjaxError extends Error {
constructor(message2, status, method4, url2) {
super(message2)
this.name = 'UploadAjaxError'
this.status = status
this.method = method4
this.url = url2
}
}
function getError(action, option2, xhr2) {
let msg
if (xhr2.response) {
msg = `${xhr2.response.error || xhr2.response}`
} else if (xhr2.responseText) {
msg = `${xhr2.responseText}`
} else {
msg = `fail to ${option2.method} ${action} ${xhr2.status}`
}
return new UploadAjaxError(msg, xhr2.status, option2.method, action)
}
function getBody(xhr2) {
const text2 = xhr2.responseText || xhr2.response
if (!text2) {
return text2
}
try {
return JSON.parse(text2)
} catch (e2) {
return text2
}
}
const ajaxUpload = (option2) => {
if (typeof XMLHttpRequest === 'undefined')
throwError$1(SCOPE$2, 'XMLHttpRequest is undefined')
const xhr2 = new XMLHttpRequest()
const action = option2.action
if (xhr2.upload) {
xhr2.upload.addEventListener('progress', (evt) => {
const progressEvt = evt
progressEvt.percent = evt.total > 0 ? (evt.loaded / evt.total) * 100 : 0
option2.onProgress(progressEvt)
})
}
const formData = new FormData()
if (option2.data) {
for (const [key2, value2] of Object.entries(option2.data)) {
if (Array.isArray(value2)) formData.append(key2, ...value2)
else formData.append(key2, value2)
}
}
formData.append(option2.filename, option2.file, option2.file.name)
xhr2.addEventListener('error', () => {
option2.onError(getError(action, option2, xhr2))
})
xhr2.addEventListener('load', () => {
if (xhr2.status < 200 || xhr2.status >= 300) {
return option2.onError(getError(action, option2, xhr2))
}
option2.onSuccess(getBody(xhr2))
})
xhr2.open(option2.method, action, true)
if (option2.withCredentials && 'withCredentials' in xhr2) {
xhr2.withCredentials = true
}
const headers = option2.headers || {}
if (headers instanceof Headers) {
headers.forEach((value2, key2) => xhr2.setRequestHeader(key2, value2))
} else {
for (const [key2, value2] of Object.entries(headers)) {
if (isNil$1(value2)) continue
xhr2.setRequestHeader(key2, String(value2))
}
}
xhr2.send(formData)
return xhr2
}
const uploadListTypes = ['text', 'picture', 'picture-card']
let fileId = 1
const genFileId = () => Date.now() + fileId++
const uploadBaseProps = buildProps({
action: {
type: String,
required: true,
},
headers: {
type: definePropType(Object),
},
method: {
type: String,
default: 'post',
},
data: {
type: Object,
default: () => mutable({}),
},
multiple: {
type: Boolean,
default: false,
},
name: {
type: String,
default: 'file',
},
drag: {
type: Boolean,
default: false,
},
withCredentials: Boolean,
showFileList: {
type: Boolean,
default: true,
},
accept: {
type: String,
default: '',
},
type: {
type: String,
default: 'select',
},
fileList: {
type: definePropType(Array),
default: () => mutable([]),
},
autoUpload: {
type: Boolean,
default: true,
},
listType: {
type: String,
values: uploadListTypes,
default: 'text',
},
httpRequest: {
type: definePropType(Function),
default: ajaxUpload,
},
disabled: Boolean,
limit: Number,
})
const uploadProps = buildProps({
...uploadBaseProps,
beforeUpload: {
type: definePropType(Function),
default: NOOP,
},
beforeRemove: {
type: definePropType(Function),
},
onRemove: {
type: definePropType(Function),
default: NOOP,
},
onChange: {
type: definePropType(Function),
default: NOOP,
},
onPreview: {
type: definePropType(Function),
default: NOOP,
},
onSuccess: {
type: definePropType(Function),
default: NOOP,
},
onProgress: {
type: definePropType(Function),
default: NOOP,
},
onError: {
type: definePropType(Function),
default: NOOP,
},
onExceed: {
type: definePropType(Function),
default: NOOP,
},
})
const uploadListProps = buildProps({
files: {
type: definePropType(Array),
default: () => mutable([]),
},
disabled: {
type: Boolean,
default: false,
},
handlePreview: {
type: definePropType(Function),
default: NOOP,
},
listType: {
type: String,
values: uploadListTypes,
default: 'text',
},
})
const uploadListEmits = {
remove: (file2) => !!file2,
}
const _hoisted_1$65 = ['onKeydown']
const _hoisted_2$50 = ['src']
const _hoisted_3$4x = ['onClick']
const _hoisted_4$3Y = ['onClick']
const _hoisted_5$3y = ['onClick']
const __default__$6 = {
name: 'ElUploadList',
}
const _sfc_main$7c = /* @__PURE__ */ defineComponent({
...__default__$6,
props: uploadListProps,
emits: uploadListEmits,
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const { t: t3 } = useLocale()
const nsUpload = useNamespace('upload')
const nsIcon = useNamespace('icon')
const nsList = useNamespace('list')
const focusing = ref(false)
const handleClick2 = (file2) => {
props2.handlePreview(file2)
}
const onFileClicked = (e2) => {
e2.target.focus()
}
const handleRemove = (file2) => {
emit2('remove', file2)
}
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
TransitionGroup,
{
tag: 'ul',
class: normalizeClass([
unref(nsUpload).b('list'),
unref(nsUpload).bm('list', _ctx.listType),
unref(nsUpload).is('disabled', _ctx.disabled),
]),
name: unref(nsList).b(),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(_ctx.files, (file2) => {
return (
openBlock(),
createElementBlock(
'li',
{
key: file2.uid || file2.name,
class: normalizeClass([
unref(nsUpload).be('list', 'item'),
unref(nsUpload).is(file2.status),
{ focusing: focusing.value },
]),
tabindex: '0',
onKeydown: withKeys(
($event) => !_ctx.disabled && handleRemove(file2),
['delete']
),
onFocus:
_cache[0] ||
(_cache[0] = ($event) => (focusing.value = true)),
onBlur:
_cache[1] ||
(_cache[1] = ($event) => (focusing.value = false)),
onClick: onFileClicked,
},
[
renderSlot(
_ctx.$slots,
'default',
{ file: file2 },
() => [
_ctx.listType === 'picture' ||
(file2.status !== 'uploading' &&
_ctx.listType === 'picture-card')
? (openBlock(),
createElementBlock(
'img',
{
key: 0,
class: normalizeClass(
unref(nsUpload).be(
'list',
'item-thumbnail'
)
),
src: file2.url,
alt: '',
},
null,
10,
_hoisted_2$50
))
: createCommentVNode('v-if', true),
_ctx.listType !== 'picture' &&
(file2.status === 'uploading' ||
_ctx.listType !== 'picture-card')
? (openBlock(),
createElementBlock(
'div',
{
key: 1,
class: normalizeClass(
unref(nsUpload).be('list', 'item-info')
),
},
[
createElementVNode(
'a',
{
class: normalizeClass(
unref(nsUpload).be(
'list',
'item-name'
)
),
onClick: ($event) =>
handleClick2(file2),
},
[
createVNode$1(
unref(ElIcon),
{
class: normalizeClass(
unref(nsIcon).m('document')
),
},
{
default: withCtx(() => [
createVNode$1(unref(document$4)),
]),
_: 1,
},
8,
['class']
),
createTextVNode(
' ' + toDisplayString$1(file2.name),
1
),
],
10,
_hoisted_3$4x
),
file2.status === 'uploading'
? (openBlock(),
createBlock(
unref(ElProgress),
{
key: 0,
type:
_ctx.listType === 'picture-card'
? 'circle'
: 'line',
'stroke-width':
_ctx.listType === 'picture-card'
? 6
: 2,
percentage: Number(
file2.percentage
),
style: normalizeStyle$1(
_ctx.listType === 'picture-card'
? ''
: 'margin-top: 0.5rem'
),
},
null,
8,
[
'type',
'stroke-width',
'percentage',
'style',
]
))
: createCommentVNode('v-if', true),
],
2
))
: createCommentVNode('v-if', true),
createElementVNode(
'label',
{
class: normalizeClass(
unref(nsUpload).be(
'list',
'item-status-label'
)
),
},
[
_ctx.listType === 'text'
? (openBlock(),
createBlock(
unref(ElIcon),
{
key: 0,
class: normalizeClass([
unref(nsIcon).m('upload-success'),
unref(nsIcon).m('circle-check'),
]),
},
{
default: withCtx(() => [
createVNode$1(unref(circleCheck)),
]),
_: 1,
},
8,
['class']
))
: ['picture-card', 'picture'].includes(
_ctx.listType
)
? (openBlock(),
createBlock(
unref(ElIcon),
{
key: 1,
class: normalizeClass([
unref(nsIcon).m('upload-success'),
unref(nsIcon).m('check'),
]),
},
{
default: withCtx(() => [
createVNode$1(unref(check$1)),
]),
_: 1,
},
8,
['class']
))
: createCommentVNode('v-if', true),
],
2
),
!_ctx.disabled
? (openBlock(),
createBlock(
unref(ElIcon),
{
key: 2,
class: normalizeClass(
unref(nsIcon).m('close')
),
onClick: ($event) => handleRemove(file2),
},
{
default: withCtx(() => [
createVNode$1(unref(close$2)),
]),
_: 2,
},
1032,
['class', 'onClick']
))
: createCommentVNode('v-if', true),
createCommentVNode(
' Due to close btn only appears when li gets focused disappears after li gets blurred, thus keyboard navigation can never reach close btn'
),
createCommentVNode(
' This is a bug which needs to be fixed '
),
createCommentVNode(
' TODO: Fix the incorrect navigation interaction '
),
!_ctx.disabled
? (openBlock(),
createElementBlock(
'i',
{
key: 3,
class: normalizeClass(
unref(nsIcon).m('close-tip')
),
},
toDisplayString$1(
unref(t3)('el.upload.deleteTip')
),
3
))
: createCommentVNode('v-if', true),
_ctx.listType === 'picture-card'
? (openBlock(),
createElementBlock(
'span',
{
key: 4,
class: normalizeClass(
unref(nsUpload).be('list', 'item-actions')
),
},
[
createElementVNode(
'span',
{
class: normalizeClass(
unref(nsUpload).be(
'list',
'item-preview'
)
),
onClick: ($event) =>
_ctx.handlePreview(file2),
},
[
createVNode$1(
unref(ElIcon),
{
class: normalizeClass(
unref(nsIcon).m('zoom-in')
),
},
{
default: withCtx(() => [
createVNode$1(unref(zoomIn)),
]),
_: 1,
},
8,
['class']
),
],
10,
_hoisted_4$3Y
),
!_ctx.disabled
? (openBlock(),
createElementBlock(
'span',
{
key: 0,
class: normalizeClass(
unref(nsUpload).be(
'list',
'item-delete'
)
),
onClick: ($event) =>
handleRemove(file2),
},
[
createVNode$1(
unref(ElIcon),
{
class: normalizeClass(
unref(nsIcon).m('delete')
),
},
{
default: withCtx(() => [
createVNode$1(unref(_delete)),
]),
_: 1,
},
8,
['class']
),
],
10,
_hoisted_5$3y
))
: createCommentVNode('v-if', true),
],
2
))
: createCommentVNode('v-if', true),
]
),
],
42,
_hoisted_1$65
)
)
}),
128
)),
renderSlot(_ctx.$slots, 'append'),
]),
_: 3,
},
8,
['class', 'name']
)
)
}
},
})
var UploadList = /* @__PURE__ */ _export_sfc$1(_sfc_main$7c, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/upload/src/upload-list.vue',
],
])
const uploadDraggerProps = buildProps({
disabled: {
type: Boolean,
default: false,
},
})
const uploadDraggerEmits = {
file: (file2) => isArray$D(file2),
}
const _hoisted_1$64 = ['onDrop', 'onDragover']
const __default__$5 = {
name: 'ElUploadDrag',
}
const _sfc_main$7b = /* @__PURE__ */ defineComponent({
...__default__$5,
props: uploadDraggerProps,
emits: uploadDraggerEmits,
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const COMPONENT_NAME2 = 'ElUploadDrag'
const uploaderContext = inject(uploadContextKey)
if (!uploaderContext) {
throwError$1(
COMPONENT_NAME2,
'usage: '
)
}
const ns = useNamespace('upload')
const dragover = ref(false)
const onDrop = (e2) => {
if (props2.disabled) return
dragover.value = false
const files2 = Array.from(e2.dataTransfer.files)
const accept = uploaderContext.accept.value
if (!accept) {
emit2('file', files2)
return
}
const filesFiltered = files2.filter((file2) => {
const { type: type4, name: name2 } = file2
const extension = name2.includes('.')
? `.${name2.split('.').pop()}`
: ''
const baseType = type4.replace(/\/.*$/, '')
return accept
.split(',')
.map((type22) => type22.trim())
.filter((type22) => type22)
.some((acceptedType) => {
if (acceptedType.startsWith('.')) {
return extension === acceptedType
}
if (/\/\*$/.test(acceptedType)) {
return baseType === acceptedType.replace(/\/\*$/, '')
}
if (/^[^/]+\/[^/]+$/.test(acceptedType)) {
return type4 === acceptedType
}
return false
})
})
emit2('file', filesFiltered)
}
const onDragover = () => {
if (!props2.disabled) dragover.value = true
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
unref(ns).b('dragger'),
unref(ns).is('dragover', dragover.value),
]),
onDrop: withModifiers(onDrop, ['prevent']),
onDragover: withModifiers(onDragover, ['prevent']),
onDragleave:
_cache[0] ||
(_cache[0] = withModifiers(
($event) => (dragover.value = false),
['prevent']
)),
},
[renderSlot(_ctx.$slots, 'default')],
42,
_hoisted_1$64
)
)
}
},
})
var UploadDragger = /* @__PURE__ */ _export_sfc$1(_sfc_main$7b, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/upload/src/upload-dragger.vue',
],
])
const uploadContentProps = buildProps({
...uploadBaseProps,
fileList: {
type: definePropType(Array),
default: () => mutable([]),
},
beforeUpload: {
type: definePropType(Function),
default: NOOP,
},
onRemove: {
type: definePropType(Function),
default: NOOP,
},
onStart: {
type: definePropType(Function),
default: NOOP,
},
onSuccess: {
type: definePropType(Function),
default: NOOP,
},
onProgress: {
type: definePropType(Function),
default: NOOP,
},
onError: {
type: definePropType(Function),
default: NOOP,
},
onExceed: {
type: definePropType(Function),
default: NOOP,
},
})
const _hoisted_1$63 = ['onKeydown']
const _hoisted_2$4$ = ['name', 'multiple', 'accept']
const __default__$4 = {
name: 'ElUploadContent',
inheritAttrs: false,
}
const _sfc_main$7a = /* @__PURE__ */ defineComponent({
...__default__$4,
props: uploadContentProps,
setup(__props2, { expose }) {
const props2 = __props2
const ns = useNamespace('upload')
const requests = shallowRef({})
const inputRef = shallowRef()
const uploadFiles = (files2) => {
if (files2.length === 0) return
const {
autoUpload,
limit: limit2,
fileList,
multiple,
onStart,
onExceed,
} = props2
if (limit2 && fileList.length + files2.length > limit2) {
onExceed(files2, fileList)
return
}
if (!multiple) {
files2 = files2.slice(0, 1)
}
for (const file2 of files2) {
const rawFile = file2
rawFile.uid = genFileId()
onStart(rawFile)
if (autoUpload) upload2(rawFile)
}
}
const upload2 = async (rawFile) => {
inputRef.value.value = ''
if (!props2.beforeUpload) {
return doUpload(rawFile)
}
let hookResult
try {
hookResult = await props2.beforeUpload(rawFile)
} catch (e2) {
hookResult = false
}
if (hookResult === false) {
props2.onRemove(rawFile)
return
}
let file2 = rawFile
if (hookResult instanceof Blob) {
if (hookResult instanceof File) {
file2 = hookResult
} else {
file2 = new File([hookResult], rawFile.name, {
type: rawFile.type,
})
}
for (const key2 of Object.keys(rawFile)) {
file2[key2] = rawFile[key2]
}
}
doUpload(rawFile)
}
const doUpload = (rawFile) => {
const {
headers,
data: data2,
method: method4,
withCredentials,
name: filename,
action,
onProgress,
onSuccess,
onError,
httpRequest,
} = props2
const { uid: uid2 } = rawFile
const options2 = {
headers: headers || {},
withCredentials,
file: rawFile,
data: data2,
method: method4,
filename,
action,
onProgress: (evt) => {
onProgress(evt, rawFile)
},
onSuccess: (res) => {
onSuccess(res, rawFile)
delete requests.value[uid2]
},
onError: (err) => {
onError(err, rawFile)
delete requests.value[uid2]
},
}
const request3 = httpRequest(options2)
requests.value[uid2] = request3
if (request3 instanceof Promise) {
request3.then(options2.onSuccess, options2.onError)
}
}
const handleChange = (e2) => {
const files2 = e2.target.files
if (!files2) return
uploadFiles(Array.from(files2))
}
const handleClick2 = () => {
if (!props2.disabled) {
inputRef.value.value = ''
inputRef.value.click()
}
}
const handleKeydown = () => {
handleClick2()
}
const abort = (file2) => {
const _reqs = entriesOf(requests.value).filter(
file2 ? ([uid2]) => String(file2.uid) === uid2 : () => true
)
_reqs.forEach(([uid2, req]) => {
if (req instanceof XMLHttpRequest) req.abort()
delete requests.value[uid2]
})
}
expose({
abort,
upload: upload2,
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([unref(ns).b(), unref(ns).m(_ctx.listType)]),
tabindex: '0',
onClick: handleClick2,
onKeydown: withKeys(withModifiers(handleKeydown, ['self']), [
'enter',
'space',
]),
},
[
_ctx.drag
? (openBlock(),
createBlock(
UploadDragger,
{
key: 0,
disabled: _ctx.disabled,
onFile: uploadFiles,
},
{
default: withCtx(() => [
renderSlot(_ctx.$slots, 'default'),
]),
_: 3,
},
8,
['disabled']
))
: renderSlot(_ctx.$slots, 'default', { key: 1 }),
createElementVNode(
'input',
{
ref_key: 'inputRef',
ref: inputRef,
class: normalizeClass(unref(ns).e('input')),
name: _ctx.name,
multiple: _ctx.multiple,
accept: _ctx.accept,
type: 'file',
onChange: handleChange,
},
null,
42,
_hoisted_2$4$
),
],
42,
_hoisted_1$63
)
)
}
},
})
var UploadContent = /* @__PURE__ */ _export_sfc$1(_sfc_main$7a, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/upload/src/upload-content.vue',
],
])
const SCOPE$1 = 'ElUpload'
const revokeObjectURL = (file2) => {
var _a2
if ((_a2 = file2.url) == null ? void 0 : _a2.startsWith('blob:')) {
URL.revokeObjectURL(file2.url)
}
}
const useHandlers = (props2, uploadRef) => {
const uploadFiles = ref([])
const getFile = (rawFile) =>
uploadFiles.value.find((file2) => file2.uid === rawFile.uid)
function abort(file2) {
var _a2
;(_a2 = uploadRef.value) == null ? void 0 : _a2.abort(file2)
}
function clearFiles(states = ['ready', 'uploading', 'success', 'fail']) {
uploadFiles.value = uploadFiles.value.filter(
(row) => !states.includes(row.status)
)
}
const handleError = (err, rawFile) => {
const file2 = getFile(rawFile)
if (!file2) return
file2.status = 'fail'
uploadFiles.value.splice(uploadFiles.value.indexOf(file2), 1)
props2.onError(err, file2, uploadFiles.value)
props2.onChange(file2, uploadFiles.value)
}
const handleProgress = (evt, rawFile) => {
const file2 = getFile(rawFile)
if (!file2) return
props2.onProgress(evt, file2, uploadFiles.value)
file2.status = 'uploading'
file2.percentage = Math.round(evt.percent)
}
const handleSuccess = (response, rawFile) => {
const file2 = getFile(rawFile)
if (!file2) return
file2.status = 'success'
file2.response = response
props2.onSuccess(response, file2, uploadFiles.value)
props2.onChange(file2, uploadFiles.value)
}
const handleStart = (file2) => {
const uploadFile = {
name: file2.name,
percentage: 0,
status: 'ready',
size: file2.size,
raw: file2,
uid: file2.uid,
}
if (props2.listType === 'picture-card' || props2.listType === 'picture') {
try {
uploadFile.url = URL.createObjectURL(file2)
} catch (err) {
debugWarn(SCOPE$1, err.message)
props2.onError(err, uploadFile, uploadFiles.value)
}
}
uploadFiles.value.push(uploadFile)
props2.onChange(uploadFile, uploadFiles.value)
}
const handleRemove = async (file2, rawFile) => {
if (rawFile) {
useDeprecated(
{
scope: SCOPE$1,
from: 'handleRemove second argument',
version: '2.2',
replacement: 'first argument `file`',
ref: 'https://element-plus.org/en-US/component/upload.html#methods',
},
true
)
}
const _file = rawFile || file2
const uploadFile = _file instanceof File ? getFile(_file) : _file
if (!uploadFile) throwError$1(SCOPE$1, 'file to be removed not found')
const doRemove = (file22) => {
abort(file22)
const fileList = uploadFiles.value
fileList.splice(fileList.indexOf(file22), 1)
props2.onRemove(file22, fileList)
revokeObjectURL(file22)
}
if (props2.beforeRemove) {
const before2 = await props2.beforeRemove(uploadFile, uploadFiles.value)
if (before2 !== false) doRemove(uploadFile)
} else {
doRemove(uploadFile)
}
}
function submit() {
uploadFiles.value
.filter(({ status }) => status === 'ready')
.forEach(({ raw }) => {
var _a2
return (
raw && ((_a2 = uploadRef.value) == null ? void 0 : _a2.upload(raw))
)
})
}
watch$1(
() => props2.listType,
(val2) => {
if (val2 !== 'picture-card' && val2 !== 'picture') {
return
}
uploadFiles.value = uploadFiles.value.map((file2) => {
const { raw, url: url2 } = file2
if (!url2 && raw) {
try {
file2.url = URL.createObjectURL(raw)
} catch (err) {
props2.onError(err, file2, uploadFiles.value)
}
}
return file2
})
}
)
watch$1(
() => props2.fileList,
(fileList) => {
for (const file2 of fileList) {
file2.uid || (file2.uid = genFileId())
file2.status || (file2.status = 'success')
}
uploadFiles.value = fileList
},
{ immediate: true, deep: true }
)
return {
abort,
clearFiles,
handleError,
handleProgress,
handleStart,
handleSuccess,
handleRemove,
submit,
uploadFiles,
}
}
const __default__$3 = {
name: 'ElUpload',
}
const _sfc_main$79 = /* @__PURE__ */ defineComponent({
...__default__$3,
props: uploadProps,
setup(__props2, { expose }) {
const props2 = __props2
const slots = useSlots()
const disabled = useDisabled$1()
const uploadRef = shallowRef()
const {
abort,
submit,
clearFiles,
uploadFiles,
handleStart,
handleError,
handleRemove,
handleSuccess,
handleProgress,
} = useHandlers(props2, uploadRef)
const isPictureCard = computed(() => props2.listType === 'picture-card')
const uploadContentProps2 = computed(() => ({
...props2,
onStart: handleStart,
onProgress: handleProgress,
onSuccess: handleSuccess,
onError: handleError,
onRemove: handleRemove,
}))
onBeforeUnmount(() => {
uploadFiles.value.forEach(({ url: url2 }) => {
if (url2 == null ? void 0 : url2.startsWith('blob:'))
URL.revokeObjectURL(url2)
})
})
provide(uploadContextKey, {
accept: toRef(props2, 'accept'),
})
expose({
abort,
submit,
clearFiles,
handleStart,
handleRemove,
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', null, [
unref(isPictureCard) && _ctx.showFileList
? (openBlock(),
createBlock(
UploadList,
{
key: 0,
disabled: unref(disabled),
'list-type': _ctx.listType,
files: unref(uploadFiles),
'handle-preview': _ctx.onPreview,
onRemove: unref(handleRemove),
},
createSlots(
{
append: withCtx(() => [
_ctx.listType === 'picture-card'
? (openBlock(),
createBlock(
UploadContent,
mergeProps(
{
key: 0,
ref_key: 'uploadRef',
ref: uploadRef,
},
unref(uploadContentProps2)
),
{
default: withCtx(() => [
unref(slots).trigger
? renderSlot(_ctx.$slots, 'trigger', {
key: 0,
})
: createCommentVNode('v-if', true),
!unref(slots).trigger && unref(slots).default
? renderSlot(_ctx.$slots, 'default', {
key: 1,
})
: createCommentVNode('v-if', true),
]),
_: 3,
},
16
))
: createCommentVNode('v-if', true),
]),
_: 2,
},
[
_ctx.$slots.file
? {
name: 'default',
fn: withCtx(({ file: file2 }) => [
renderSlot(_ctx.$slots, 'file', { file: file2 }),
]),
}
: void 0,
]
),
1032,
['disabled', 'list-type', 'files', 'handle-preview', 'onRemove']
))
: createCommentVNode('v-if', true),
_ctx.listType !== 'picture-card'
? (openBlock(),
createBlock(
UploadContent,
mergeProps(
{
key: 1,
ref_key: 'uploadRef',
ref: uploadRef,
},
unref(uploadContentProps2)
),
{
default: withCtx(() => [
unref(slots).trigger
? renderSlot(_ctx.$slots, 'trigger', { key: 0 })
: createCommentVNode('v-if', true),
!unref(slots).trigger && unref(slots).default
? renderSlot(_ctx.$slots, 'default', { key: 1 })
: createCommentVNode('v-if', true),
]),
_: 3,
},
16
))
: createCommentVNode('v-if', true),
_ctx.$slots.trigger
? renderSlot(_ctx.$slots, 'default', { key: 2 })
: createCommentVNode('v-if', true),
renderSlot(_ctx.$slots, 'tip'),
!unref(isPictureCard) && _ctx.showFileList
? (openBlock(),
createBlock(
UploadList,
{
key: 3,
disabled: unref(disabled),
'list-type': _ctx.listType,
files: unref(uploadFiles),
'handle-preview': _ctx.onPreview,
onRemove: unref(handleRemove),
},
createSlots({ _: 2 }, [
_ctx.$slots.file
? {
name: 'default',
fn: withCtx(({ file: file2 }) => [
renderSlot(_ctx.$slots, 'file', { file: file2 }),
]),
}
: void 0,
]),
1032,
['disabled', 'list-type', 'files', 'handle-preview', 'onRemove']
))
: createCommentVNode('v-if', true),
])
)
}
},
})
var Upload = /* @__PURE__ */ _export_sfc$1(_sfc_main$79, [
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/upload/src/upload.vue',
],
])
const ElUpload = withInstall(Upload)
var Components = [
ElAffix,
ElAlert,
ElAutocomplete,
ElAvatar,
ElBacktop,
ElBadge,
ElBreadcrumb,
ElBreadcrumbItem,
ElButton,
ElButtonGroup$1,
ElCalendar,
ElCard,
ElCarousel,
ElCarouselItem,
ElCascader,
ElCascaderPanel,
ElCheckTag,
ElCheckbox,
ElCheckboxButton,
ElCheckboxGroup$1,
ElCol,
ElCollapse,
ElCollapseItem,
ElCollapseTransition,
ElColorPicker,
ElConfigProvider,
ElContainer,
ElAside,
ElFooter,
ElHeader,
ElMain,
ElDatePicker,
ElDescriptions,
ElDescriptionsItem,
ElDialog,
ElDivider,
ElDrawer,
ElDropdown,
ElDropdownItem,
ElDropdownMenu,
ElEmpty,
ElForm,
ElFormItem,
ElIcon,
ElImage,
ElImageViewer,
ElInput,
ElInputNumber,
ElLink,
ElMenu,
ElMenuItem,
ElMenuItemGroup,
ElPageHeader,
ElPagination,
ElPopconfirm,
ElPopover,
ElPopper,
ElProgress,
ElRadio,
ElRadioButton,
ElRadioGroup,
ElRate,
ElResult,
ElRow,
ElScrollbar,
ElSelect,
ElOption$1,
ElOptionGroup,
ElSelectV2,
ElSkeleton,
ElSkeletonItem,
ElSlider,
ElSpace,
ElSteps,
ElStep,
ElSwitch,
ElTable,
ElTableColumn,
ElTabs,
ElTabPane,
ElTag,
ElTimePicker,
ElTimeSelect,
ElTimeline,
ElTimelineItem,
ElTooltip,
ElTooltipV2,
ElTransfer,
ElTree,
ElTreeSelect,
ElTreeV2,
ElUpload,
]
const SCOPE = 'ElInfiniteScroll'
const CHECK_INTERVAL = 50
const DEFAULT_DELAY$1 = 200
const DEFAULT_DISTANCE = 0
const attributes = {
delay: {
type: Number,
default: DEFAULT_DELAY$1,
},
distance: {
type: Number,
default: DEFAULT_DISTANCE,
},
disabled: {
type: Boolean,
default: false,
},
immediate: {
type: Boolean,
default: true,
},
}
const getScrollOptions = (el2, instance) => {
return Object.entries(attributes).reduce((acm, [name2, option2]) => {
var _a2, _b2
const { type: type4, default: defaultValue } = option2
const attrVal = el2.getAttribute(`infinite-scroll-${name2}`)
let value2 =
(_b2 = (_a2 = instance[attrVal]) != null ? _a2 : attrVal) != null
? _b2
: defaultValue
value2 = value2 === 'false' ? false : value2
value2 = type4(value2)
acm[name2] = Number.isNaN(value2) ? defaultValue : value2
return acm
}, {})
}
const destroyObserver = (el2) => {
const { observer } = el2[SCOPE]
if (observer) {
observer.disconnect()
delete el2[SCOPE].observer
}
}
const handleScroll = (el2, cb) => {
const { container, containerEl, instance, observer, lastScrollTop } =
el2[SCOPE]
const { disabled, distance: distance2 } = getScrollOptions(el2, instance)
const { clientHeight, scrollHeight, scrollTop } = containerEl
const delta = scrollTop - lastScrollTop
el2[SCOPE].lastScrollTop = scrollTop
if (observer || disabled || delta < 0) return
let shouldTrigger = false
if (container === el2) {
shouldTrigger = scrollHeight - (clientHeight + scrollTop) <= distance2
} else {
const { clientTop, scrollHeight: height } = el2
const offsetTop = getOffsetTopDistance(el2, containerEl)
shouldTrigger =
scrollTop + clientHeight >= offsetTop + clientTop + height - distance2
}
if (shouldTrigger) {
cb.call(instance)
}
}
function checkFull(el2, cb) {
const { containerEl, instance } = el2[SCOPE]
const { disabled } = getScrollOptions(el2, instance)
if (disabled || containerEl.clientHeight === 0) return
if (containerEl.scrollHeight <= containerEl.clientHeight) {
cb.call(instance)
} else {
destroyObserver(el2)
}
}
const InfiniteScroll = {
async mounted(el2, binding) {
const { instance, value: cb } = binding
if (!isFunction$l(cb)) {
throwError$1(
SCOPE,
"'v-infinite-scroll' binding value must be a function"
)
}
await nextTick()
const { delay: delay2, immediate } = getScrollOptions(el2, instance)
const container = getScrollContainer(el2, true)
const containerEl =
container === window ? document.documentElement : container
const onScroll = throttle$4(handleScroll.bind(null, el2, cb), delay2)
if (!container) return
el2[SCOPE] = {
instance,
container,
containerEl,
delay: delay2,
cb,
onScroll,
lastScrollTop: containerEl.scrollTop,
}
if (immediate) {
const observer = new MutationObserver(
throttle$4(checkFull.bind(null, el2, cb), CHECK_INTERVAL)
)
el2[SCOPE].observer = observer
observer.observe(el2, { childList: true, subtree: true })
checkFull(el2, cb)
}
container.addEventListener('scroll', onScroll)
},
unmounted(el2) {
const { container, onScroll } = el2[SCOPE]
container == null
? void 0
: container.removeEventListener('scroll', onScroll)
destroyObserver(el2)
},
async updated(el2) {
if (!el2[SCOPE]) {
await nextTick()
}
const { containerEl, cb, observer } = el2[SCOPE]
if (containerEl.clientHeight && observer) {
checkFull(el2, cb)
}
},
}
const _InfiniteScroll = InfiniteScroll
_InfiniteScroll.install = (app2) => {
app2.directive('InfiniteScroll', _InfiniteScroll)
}
const ElInfiniteScroll = _InfiniteScroll
function createLoadingComponent(options2) {
let afterLeaveTimer
const afterLeaveFlag = ref(false)
const data2 = reactive({
...options2,
originalPosition: '',
originalOverflow: '',
visible: false,
})
function setText(text2) {
data2.text = text2
}
function destroySelf() {
const target2 = data2.parent
if (!target2.vLoadingAddClassList) {
let loadingNumber = target2.getAttribute('loading-number')
loadingNumber = Number.parseInt(loadingNumber) - 1
if (!loadingNumber) {
removeClass$1(target2, 'el-loading-parent--relative')
target2.removeAttribute('loading-number')
} else {
target2.setAttribute('loading-number', loadingNumber.toString())
}
removeClass$1(target2, 'el-loading-parent--hidden')
}
remvoeElLoadingChild()
}
function remvoeElLoadingChild() {
var _a2, _b2
;(_b2 = (_a2 = vm.$el) == null ? void 0 : _a2.parentNode) == null
? void 0
: _b2.removeChild(vm.$el)
}
function close2() {
var _a2
if (options2.beforeClose && !options2.beforeClose()) return
const target2 = data2.parent
target2.vLoadingAddClassList = void 0
afterLeaveFlag.value = true
clearTimeout(afterLeaveTimer)
afterLeaveTimer = window.setTimeout(() => {
if (afterLeaveFlag.value) {
afterLeaveFlag.value = false
destroySelf()
}
}, 400)
data2.visible = false
;(_a2 = options2.closed) == null ? void 0 : _a2.call(options2)
}
function handleAfterLeave() {
if (!afterLeaveFlag.value) return
afterLeaveFlag.value = false
destroySelf()
}
const elLoadingComponent = {
name: 'ElLoading',
setup() {
return () => {
const svg2 = data2.spinner || data2.svg
const spinner = h$4(
'svg',
{
class: 'circular',
viewBox: data2.svgViewBox ? data2.svgViewBox : '25 25 50 50',
...(svg2 ? { innerHTML: svg2 } : {}),
},
[
h$4('circle', {
class: 'path',
cx: '50',
cy: '50',
r: '20',
fill: 'none',
}),
]
)
const spinnerText = data2.text
? h$4('p', { class: 'el-loading-text' }, [data2.text])
: void 0
return h$4(
Transition,
{
name: 'el-loading-fade',
onAfterLeave: handleAfterLeave,
},
{
default: withCtx(() => [
withDirectives(
createVNode$1(
'div',
{
style: {
backgroundColor: data2.background || '',
},
class: [
'el-loading-mask',
data2.customClass,
data2.fullscreen ? 'is-fullscreen' : '',
],
},
[
h$4(
'div',
{
class: 'el-loading-spinner',
},
[spinner, spinnerText]
),
]
),
[[vShow, data2.visible]]
),
]),
}
)
}
},
}
const vm = createApp$1(elLoadingComponent).mount(
document.createElement('div')
)
return {
...toRefs$2(data2),
setText,
remvoeElLoadingChild,
close: close2,
handleAfterLeave,
vm,
get $el() {
return vm.$el
},
}
}
let fullscreenInstance = void 0
const Loading = function (options2 = {}) {
if (!isClient$1) return void 0
const resolved = resolveOptions(options2)
if (resolved.fullscreen && fullscreenInstance) {
fullscreenInstance.remvoeElLoadingChild()
fullscreenInstance.close()
}
const instance = createLoadingComponent({
...resolved,
closed: () => {
var _a2
;(_a2 = resolved.closed) == null ? void 0 : _a2.call(resolved)
if (resolved.fullscreen) fullscreenInstance = void 0
},
})
addStyle(resolved, resolved.parent, instance)
addClassList(resolved, resolved.parent, instance)
resolved.parent.vLoadingAddClassList = () =>
addClassList(resolved, resolved.parent, instance)
let loadingNumber = resolved.parent.getAttribute('loading-number')
if (!loadingNumber) {
loadingNumber = '1'
} else {
loadingNumber = `${Number.parseInt(loadingNumber) + 1}`
}
resolved.parent.setAttribute('loading-number', loadingNumber)
resolved.parent.appendChild(instance.$el)
nextTick(() => (instance.visible.value = resolved.visible))
if (resolved.fullscreen) {
fullscreenInstance = instance
}
return instance
}
const resolveOptions = (options2) => {
var _a2, _b2, _c2, _d
let target2
if (isString$f(options2.target)) {
target2 =
(_a2 = document.querySelector(options2.target)) != null
? _a2
: document.body
} else {
target2 = options2.target || document.body
}
return {
parent:
target2 === document.body || options2.body ? document.body : target2,
background: options2.background || '',
svg: options2.svg || '',
svgViewBox: options2.svgViewBox || '',
spinner: options2.spinner || false,
text: options2.text || '',
fullscreen:
target2 === document.body &&
((_b2 = options2.fullscreen) != null ? _b2 : true),
lock: (_c2 = options2.lock) != null ? _c2 : false,
customClass: options2.customClass || '',
visible: (_d = options2.visible) != null ? _d : true,
target: target2,
}
}
const addStyle = async (options2, parent2, instance) => {
const { nextZIndex: nextZIndex2 } = useZIndex()
const maskStyle = {}
if (options2.fullscreen) {
instance.originalPosition.value = getStyle$1(document.body, 'position')
instance.originalOverflow.value = getStyle$1(document.body, 'overflow')
maskStyle.zIndex = nextZIndex2()
} else if (options2.parent === document.body) {
instance.originalPosition.value = getStyle$1(document.body, 'position')
await nextTick()
for (const property2 of ['top', 'left']) {
const scroll = property2 === 'top' ? 'scrollTop' : 'scrollLeft'
maskStyle[property2] = `${
options2.target.getBoundingClientRect()[property2] +
document.body[scroll] +
document.documentElement[scroll] -
Number.parseInt(getStyle$1(document.body, `margin-${property2}`), 10)
}px`
}
for (const property2 of ['height', 'width']) {
maskStyle[property2] = `${
options2.target.getBoundingClientRect()[property2]
}px`
}
} else {
instance.originalPosition.value = getStyle$1(parent2, 'position')
}
for (const [key2, value2] of Object.entries(maskStyle)) {
instance.$el.style[key2] = value2
}
}
const addClassList = (options2, parent2, instance) => {
if (
instance.originalPosition.value !== 'absolute' &&
instance.originalPosition.value !== 'fixed'
) {
addClass$1(parent2, 'el-loading-parent--relative')
} else {
removeClass$1(parent2, 'el-loading-parent--relative')
}
if (options2.fullscreen && options2.lock) {
addClass$1(parent2, 'el-loading-parent--hidden')
} else {
removeClass$1(parent2, 'el-loading-parent--hidden')
}
}
const INSTANCE_KEY = Symbol('ElLoading')
const createInstance$1 = (el2, binding) => {
var _a2, _b2, _c2, _d
const vm = binding.instance
const getBindingProp = (key2) =>
isObject$v(binding.value) ? binding.value[key2] : void 0
const resolveExpression = (key2) => {
const data2 = (isString$f(key2) && (vm == null ? void 0 : vm[key2])) || key2
if (data2) return ref(data2)
else return data2
}
const getProp2 = (name2) =>
resolveExpression(
getBindingProp(name2) ||
el2.getAttribute(`element-loading-${hyphenate(name2)}`)
)
const fullscreen =
(_a2 = getBindingProp('fullscreen')) != null
? _a2
: binding.modifiers.fullscreen
const options2 = {
text: getProp2('text'),
svg: getProp2('svg'),
svgViewBox: getProp2('svgViewBox'),
spinner: getProp2('spinner'),
background: getProp2('background'),
customClass: getProp2('customClass'),
fullscreen,
target:
(_b2 = getBindingProp('target')) != null
? _b2
: fullscreen
? void 0
: el2,
body: (_c2 = getBindingProp('body')) != null ? _c2 : binding.modifiers.body,
lock: (_d = getBindingProp('lock')) != null ? _d : binding.modifiers.lock,
}
el2[INSTANCE_KEY] = {
options: options2,
instance: Loading(options2),
}
}
const updateOptions = (newOptions, originalOptions) => {
for (const key2 of Object.keys(originalOptions)) {
if (isRef(originalOptions[key2]))
originalOptions[key2].value = newOptions[key2]
}
}
const vLoading = {
mounted(el2, binding) {
if (binding.value) {
createInstance$1(el2, binding)
}
},
updated(el2, binding) {
const instance = el2[INSTANCE_KEY]
if (binding.oldValue !== binding.value) {
if (binding.value && !binding.oldValue) {
createInstance$1(el2, binding)
} else if (binding.value && binding.oldValue) {
if (isObject$v(binding.value))
updateOptions(binding.value, instance.options)
} else {
instance == null ? void 0 : instance.instance.close()
}
}
},
unmounted(el2) {
var _a2
;(_a2 = el2[INSTANCE_KEY]) == null ? void 0 : _a2.instance.close()
},
}
const ElLoading = {
install(app2) {
app2.directive('loading', vLoading)
app2.config.globalProperties.$loading = Loading
},
directive: vLoading,
service: Loading,
}
const messageTypes = ['success', 'info', 'warning', 'error']
const messageProps = buildProps({
customClass: {
type: String,
default: '',
},
center: {
type: Boolean,
default: false,
},
dangerouslyUseHTMLString: {
type: Boolean,
default: false,
},
duration: {
type: Number,
default: 3e3,
},
icon: {
type: iconPropType,
default: '',
},
id: {
type: String,
default: '',
},
message: {
type: definePropType([String, Object, Function]),
default: '',
},
onClose: {
type: definePropType(Function),
required: false,
},
showClose: {
type: Boolean,
default: false,
},
type: {
type: String,
values: messageTypes,
default: 'info',
},
offset: {
type: Number,
default: 20,
},
zIndex: {
type: Number,
default: 0,
},
grouping: {
type: Boolean,
default: false,
},
repeatNum: {
type: Number,
default: 1,
},
})
const messageEmits = {
destroy: () => true,
}
const _sfc_main$78 = defineComponent({
name: 'ElMessage',
components: {
ElBadge,
ElIcon,
...TypeComponents,
},
props: messageProps,
emits: messageEmits,
setup(props2) {
const ns = useNamespace('message')
const visible = ref(false)
const badgeType = ref(
props2.type ? (props2.type === 'error' ? 'danger' : props2.type) : 'info'
)
let stopTimer = void 0
const typeClass = computed(() => {
const type4 = props2.type
return { [ns.bm('icon', type4)]: type4 && TypeComponentsMap[type4] }
})
const iconComponent = computed(() => {
return props2.icon || TypeComponentsMap[props2.type] || ''
})
const customStyle = computed(() => ({
top: `${props2.offset}px`,
zIndex: props2.zIndex,
}))
function startTimer2() {
if (props2.duration > 0) {
;({ stop: stopTimer } = useTimeoutFn$1(() => {
if (visible.value) close2()
}, props2.duration))
}
}
function clearTimer2() {
stopTimer == null ? void 0 : stopTimer()
}
function close2() {
visible.value = false
}
function keydown({ code: code2 }) {
if (code2 === EVENT_CODE.esc) {
if (visible.value) {
close2()
}
} else {
startTimer2()
}
}
onMounted(() => {
startTimer2()
visible.value = true
})
watch$1(
() => props2.repeatNum,
() => {
clearTimer2()
startTimer2()
}
)
useEventListener$1(document, 'keydown', keydown)
return {
ns,
typeClass,
iconComponent,
customStyle,
visible,
badgeType,
close: close2,
clearTimer: clearTimer2,
startTimer: startTimer2,
}
},
})
const _hoisted_1$62 = ['id']
const _hoisted_2$4_ = ['innerHTML']
function _sfc_render$l(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_badge = resolveComponent('el-badge')
const _component_el_icon = resolveComponent('el-icon')
const _component_close = resolveComponent('close')
return (
openBlock(),
createBlock(
Transition,
{
name: _ctx.ns.b('fade'),
onBeforeLeave: _ctx.onClose,
onAfterLeave:
_cache[2] || (_cache[2] = ($event) => _ctx.$emit('destroy')),
},
{
default: withCtx(() => [
withDirectives(
createElementVNode(
'div',
{
id: _ctx.id,
class: normalizeClass([
_ctx.ns.b(),
{ [_ctx.ns.m(_ctx.type)]: _ctx.type && !_ctx.icon },
_ctx.ns.is('center', _ctx.center),
_ctx.ns.is('closable', _ctx.showClose),
_ctx.customClass,
]),
style: normalizeStyle$1(_ctx.customStyle),
role: 'alert',
onMouseenter:
_cache[0] ||
(_cache[0] = (...args) =>
_ctx.clearTimer && _ctx.clearTimer(...args)),
onMouseleave:
_cache[1] ||
(_cache[1] = (...args) =>
_ctx.startTimer && _ctx.startTimer(...args)),
},
[
_ctx.repeatNum > 1
? (openBlock(),
createBlock(
_component_el_badge,
{
key: 0,
value: _ctx.repeatNum,
type: _ctx.badgeType,
class: normalizeClass(_ctx.ns.e('badge')),
},
null,
8,
['value', 'type', 'class']
))
: createCommentVNode('v-if', true),
_ctx.iconComponent
? (openBlock(),
createBlock(
_component_el_icon,
{
key: 1,
class: normalizeClass([
_ctx.ns.e('icon'),
_ctx.typeClass,
]),
},
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(_ctx.iconComponent)
)),
]),
_: 1,
},
8,
['class']
))
: createCommentVNode('v-if', true),
renderSlot(_ctx.$slots, 'default', {}, () => [
!_ctx.dangerouslyUseHTMLString
? (openBlock(),
createElementBlock(
'p',
{
key: 0,
class: normalizeClass(_ctx.ns.e('content')),
},
toDisplayString$1(_ctx.message),
3
))
: (openBlock(),
createElementBlock(
Fragment,
{ key: 1 },
[
createCommentVNode(
" Caution here, message could've been compromised, never use user's input as message "
),
createElementVNode(
'p',
{
class: normalizeClass(_ctx.ns.e('content')),
innerHTML: _ctx.message,
},
null,
10,
_hoisted_2$4_
),
],
2112
)),
]),
_ctx.showClose
? (openBlock(),
createBlock(
_component_el_icon,
{
key: 2,
class: normalizeClass(_ctx.ns.e('closeBtn')),
onClick: withModifiers(_ctx.close, ['stop']),
},
{
default: withCtx(() => [
createVNode$1(_component_close),
]),
_: 1,
},
8,
['class', 'onClick']
))
: createCommentVNode('v-if', true),
],
46,
_hoisted_1$62
),
[[vShow, _ctx.visible]]
),
]),
_: 3,
},
8,
['name', 'onBeforeLeave']
)
)
}
var MessageConstructor = /* @__PURE__ */ _export_sfc$1(_sfc_main$78, [
['render', _sfc_render$l],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/message/src/message.vue',
],
])
const instances$2 = []
let seed$1 = 1
const message = function (options2 = {}, context2) {
if (!isClient$1) return { close: () => void 0 }
if (
isNumber$h(messageConfig.max) &&
instances$2.length >= messageConfig.max
) {
return { close: () => void 0 }
}
if (
!isVNode$1(options2) &&
isObject$v(options2) &&
options2.grouping &&
!isVNode$1(options2.message) &&
instances$2.length
) {
const tempVm = instances$2.find((item2) => {
var _a2, _b2, _c2
return (
`${
(_b2 = (_a2 = item2.vm.props) == null ? void 0 : _a2.message) != null
? _b2
: ''
}` === `${(_c2 = options2.message) != null ? _c2 : ''}`
)
})
if (tempVm) {
tempVm.vm.component.props.repeatNum += 1
tempVm.vm.component.props.type =
(options2 == null ? void 0 : options2.type) || 'info'
return {
close: () => (vm.component.proxy.visible = false),
}
}
}
if (isString$f(options2) || isVNode$1(options2)) {
options2 = { message: options2 }
}
let verticalOffset = options2.offset || 20
instances$2.forEach(({ vm: vm2 }) => {
var _a2
verticalOffset +=
(((_a2 = vm2.el) == null ? void 0 : _a2.offsetHeight) || 0) + 16
})
verticalOffset += 16
const { nextZIndex: nextZIndex2 } = useZIndex()
const id2 = `message_${seed$1++}`
const userOnClose = options2.onClose
const props2 = {
zIndex: nextZIndex2(),
...options2,
offset: verticalOffset,
id: id2,
onClose: () => {
close$1(id2, userOnClose)
},
}
let appendTo = document.body
if (isElement$3(options2.appendTo)) {
appendTo = options2.appendTo
} else if (isString$f(options2.appendTo)) {
appendTo = document.querySelector(options2.appendTo)
}
if (!isElement$3(appendTo)) {
appendTo = document.body
}
const container = document.createElement('div')
container.className = `container_${id2}`
const messageContent = props2.message
const vm = createVNode$1(
MessageConstructor,
props2,
isFunction$l(messageContent)
? { default: messageContent }
: isVNode$1(messageContent)
? { default: () => messageContent }
: null
)
vm.appContext = context2 || message._context
vm.props.onDestroy = () => {
render$1(null, container)
}
render$1(vm, container)
instances$2.push({ vm })
appendTo.appendChild(container.firstElementChild)
return {
close: () => (vm.component.proxy.visible = false),
}
}
messageTypes.forEach((type4) => {
message[type4] = (options2 = {}, appContext) => {
if (isString$f(options2) || isVNode$1(options2)) {
options2 = {
message: options2,
}
}
return message(
{
...options2,
type: type4,
},
appContext
)
}
})
function close$1(id2, userOnClose) {
const idx = instances$2.findIndex(
({ vm: vm2 }) => id2 === vm2.component.props.id
)
if (idx === -1) return
const { vm } = instances$2[idx]
if (!vm) return
userOnClose == null ? void 0 : userOnClose(vm)
const removedHeight = vm.el.offsetHeight
instances$2.splice(idx, 1)
const len2 = instances$2.length
if (len2 < 1) return
for (let i2 = idx; i2 < len2; i2++) {
const pos =
Number.parseInt(instances$2[i2].vm.el.style['top'], 10) -
removedHeight -
16
instances$2[i2].vm.component.props.offset = pos
}
}
function closeAll$1() {
var _a2
for (let i2 = instances$2.length - 1; i2 >= 0; i2--) {
const instance = instances$2[i2].vm.component
;(_a2 = instance == null ? void 0 : instance.proxy) == null
? void 0
: _a2.close()
}
}
message.closeAll = closeAll$1
message._context = null
const ElMessage = withInstallFunction(message, '$message')
const _sfc_main$77 = defineComponent({
name: 'ElMessageBox',
directives: {
TrapFocus,
},
components: {
ElButton,
ElInput,
ElOverlay,
ElIcon,
...TypeComponents,
},
inheritAttrs: false,
props: {
buttonSize: {
type: String,
validator: isValidComponentSize,
},
modal: {
type: Boolean,
default: true,
},
lockScroll: {
type: Boolean,
default: true,
},
showClose: {
type: Boolean,
default: true,
},
closeOnClickModal: {
type: Boolean,
default: true,
},
closeOnPressEscape: {
type: Boolean,
default: true,
},
closeOnHashChange: {
type: Boolean,
default: true,
},
center: Boolean,
draggable: Boolean,
roundButton: {
default: false,
type: Boolean,
},
container: {
type: String,
default: 'body',
},
boxType: {
type: String,
default: '',
},
},
emits: ['vanish', 'action'],
setup(props2, { emit: emit2 }) {
const { t: t3 } = useLocale()
const visible = ref(false)
const { nextZIndex: nextZIndex2 } = useZIndex()
const state2 = reactive({
beforeClose: null,
callback: null,
cancelButtonText: '',
cancelButtonClass: '',
confirmButtonText: '',
confirmButtonClass: '',
customClass: '',
customStyle: {},
dangerouslyUseHTMLString: false,
distinguishCancelAndClose: false,
icon: '',
inputPattern: null,
inputPlaceholder: '',
inputType: 'text',
inputValue: null,
inputValidator: null,
inputErrorMessage: '',
message: null,
modalFade: true,
modalClass: '',
showCancelButton: false,
showConfirmButton: true,
type: '',
title: void 0,
showInput: false,
action: '',
confirmButtonLoading: false,
cancelButtonLoading: false,
confirmButtonDisabled: false,
editorErrorMessage: '',
validateError: false,
zIndex: nextZIndex2(),
})
const typeClass = computed(() => {
const type4 = state2.type
return type4 && TypeComponentsMap[type4]
? `el-message-box-icon--${type4}`
: ''
})
const btnSize = useSize$1(
computed(() => props2.buttonSize),
{ prop: true, form: true, formItem: true }
)
const iconComponent = computed(
() => state2.icon || TypeComponentsMap[state2.type] || ''
)
const hasMessage = computed(() => !!state2.message)
const rootRef = ref()
const headerRef = ref()
const inputRef = ref()
const confirmRef = ref()
const confirmButtonClasses = computed(() => state2.confirmButtonClass)
watch$1(
() => state2.inputValue,
async (val2) => {
await nextTick()
if (props2.boxType === 'prompt' && val2 !== null) {
validate()
}
},
{ immediate: true }
)
watch$1(
() => visible.value,
(val2) => {
if (val2) {
if (props2.boxType === 'alert' || props2.boxType === 'confirm') {
nextTick().then(() => {
var _a2, _b2, _c2
;(_c2 =
(_b2 = (_a2 = confirmRef.value) == null ? void 0 : _a2.$el) ==
null
? void 0
: _b2.focus) == null
? void 0
: _c2.call(_b2)
})
}
state2.zIndex = nextZIndex2()
}
if (props2.boxType !== 'prompt') return
if (val2) {
nextTick().then(() => {
if (inputRef.value && inputRef.value.$el) {
getInputElement().focus()
}
})
} else {
state2.editorErrorMessage = ''
state2.validateError = false
}
}
)
const draggable2 = computed(() => props2.draggable)
useDraggable$1(rootRef, headerRef, draggable2)
onMounted(async () => {
await nextTick()
if (props2.closeOnHashChange) {
on$2(window, 'hashchange', doClose)
}
})
onBeforeUnmount(() => {
if (props2.closeOnHashChange) {
off$1(window, 'hashchange', doClose)
}
})
function doClose() {
if (!visible.value) return
visible.value = false
nextTick(() => {
if (state2.action) emit2('action', state2.action)
})
}
const handleWrapperClick = () => {
if (props2.closeOnClickModal) {
handleAction(state2.distinguishCancelAndClose ? 'close' : 'cancel')
}
}
const overlayEvent = useSameTarget(handleWrapperClick)
const handleInputEnter = (e2) => {
if (state2.inputType !== 'textarea') {
e2.preventDefault()
return handleAction('confirm')
}
}
const handleAction = (action) => {
var _a2
if (props2.boxType === 'prompt' && action === 'confirm' && !validate()) {
return
}
state2.action = action
if (state2.beforeClose) {
;(_a2 = state2.beforeClose) == null
? void 0
: _a2.call(state2, action, state2, doClose)
} else {
doClose()
}
}
const validate = () => {
if (props2.boxType === 'prompt') {
const inputPattern = state2.inputPattern
if (inputPattern && !inputPattern.test(state2.inputValue || '')) {
state2.editorErrorMessage =
state2.inputErrorMessage || t3('el.messagebox.error')
state2.validateError = true
return false
}
const inputValidator = state2.inputValidator
if (typeof inputValidator === 'function') {
const validateResult = inputValidator(state2.inputValue)
if (validateResult === false) {
state2.editorErrorMessage =
state2.inputErrorMessage || t3('el.messagebox.error')
state2.validateError = true
return false
}
if (typeof validateResult === 'string') {
state2.editorErrorMessage = validateResult
state2.validateError = true
return false
}
}
}
state2.editorErrorMessage = ''
state2.validateError = false
return true
}
const getInputElement = () => {
const inputRefs = inputRef.value.$refs
return inputRefs.input || inputRefs.textarea
}
const handleClose = () => {
handleAction('close')
}
if (props2.closeOnPressEscape) {
useModal(
{
handleClose,
},
visible
)
} else {
usePreventGlobal(visible, 'keydown', (e2) => e2.code === EVENT_CODE.esc)
}
if (props2.lockScroll) {
useLockscreen(visible)
}
useRestoreActive(visible)
return {
...toRefs$2(state2),
overlayEvent,
visible,
hasMessage,
typeClass,
btnSize,
iconComponent,
confirmButtonClasses,
rootRef,
headerRef,
inputRef,
confirmRef,
doClose,
handleClose,
handleWrapperClick,
handleInputEnter,
handleAction,
t: t3,
}
},
})
const _hoisted_1$61 = ['aria-label']
const _hoisted_2$4Z = {
key: 0,
ref: 'headerRef',
class: 'el-message-box__header',
}
const _hoisted_3$4w = { class: 'el-message-box__title' }
const _hoisted_4$3X = { class: 'el-message-box__content' }
const _hoisted_5$3x = { class: 'el-message-box__container' }
const _hoisted_6$39 = {
key: 1,
class: 'el-message-box__message',
}
const _hoisted_7$2O = { key: 0 }
const _hoisted_8$2u = ['innerHTML']
const _hoisted_9$2i = { class: 'el-message-box__input' }
const _hoisted_10$24 = { class: 'el-message-box__btns' }
function _sfc_render$k(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_icon = resolveComponent('el-icon')
const _component_close = resolveComponent('close')
const _component_el_input = resolveComponent('el-input')
const _component_el_button = resolveComponent('el-button')
const _component_el_overlay = resolveComponent('el-overlay')
const _directive_trap_focus = resolveDirective('trap-focus')
return (
openBlock(),
createBlock(
Transition,
{
name: 'fade-in-linear',
onAfterLeave:
_cache[11] || (_cache[11] = ($event) => _ctx.$emit('vanish')),
},
{
default: withCtx(() => [
withDirectives(
createVNode$1(
_component_el_overlay,
{
'z-index': _ctx.zIndex,
'overlay-class': ['is-message-box', _ctx.modalClass],
mask: _ctx.modal,
},
{
default: withCtx(() => [
createElementVNode(
'div',
{
class: 'el-overlay-message-box',
onClick:
_cache[8] ||
(_cache[8] = (...args) =>
_ctx.overlayEvent.onClick &&
_ctx.overlayEvent.onClick(...args)),
onMousedown:
_cache[9] ||
(_cache[9] = (...args) =>
_ctx.overlayEvent.onMousedown &&
_ctx.overlayEvent.onMousedown(...args)),
onMouseup:
_cache[10] ||
(_cache[10] = (...args) =>
_ctx.overlayEvent.onMouseup &&
_ctx.overlayEvent.onMouseup(...args)),
},
[
withDirectives(
(openBlock(),
createElementBlock(
'div',
{
ref: 'rootRef',
role: 'dialog',
'aria-label': _ctx.title || 'dialog',
'aria-modal': 'true',
class: normalizeClass([
'el-message-box',
_ctx.customClass,
{
'el-message-box--center': _ctx.center,
'is-draggable': _ctx.draggable,
},
]),
style: normalizeStyle$1(_ctx.customStyle),
onClick:
_cache[7] ||
(_cache[7] = withModifiers(() => {}, ['stop'])),
},
[
_ctx.title !== null && _ctx.title !== void 0
? (openBlock(),
createElementBlock(
'div',
_hoisted_2$4Z,
[
createElementVNode('div', _hoisted_3$4w, [
_ctx.iconComponent && _ctx.center
? (openBlock(),
createBlock(
_component_el_icon,
{
key: 0,
class: normalizeClass([
'el-message-box__status',
_ctx.typeClass,
]),
},
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(
_ctx.iconComponent
)
)),
]),
_: 1,
},
8,
['class']
))
: createCommentVNode('v-if', true),
createElementVNode(
'span',
null,
toDisplayString$1(_ctx.title),
1
),
]),
_ctx.showClose
? (openBlock(),
createElementBlock(
'button',
{
key: 0,
type: 'button',
class: 'el-message-box__headerbtn',
'aria-label': 'Close',
onClick:
_cache[0] ||
(_cache[0] = ($event) =>
_ctx.handleAction(
_ctx.distinguishCancelAndClose
? 'close'
: 'cancel'
)),
onKeydown:
_cache[1] ||
(_cache[1] = withKeys(
withModifiers(
($event) =>
_ctx.handleAction(
_ctx.distinguishCancelAndClose
? 'close'
: 'cancel'
),
['prevent']
),
['enter']
)),
},
[
createVNode$1(
_component_el_icon,
{
class: 'el-message-box__close',
},
{
default: withCtx(() => [
createVNode$1(
_component_close
),
]),
_: 1,
}
),
],
32
))
: createCommentVNode('v-if', true),
],
512
))
: createCommentVNode('v-if', true),
createElementVNode('div', _hoisted_4$3X, [
createElementVNode('div', _hoisted_5$3x, [
_ctx.iconComponent &&
!_ctx.center &&
_ctx.hasMessage
? (openBlock(),
createBlock(
_component_el_icon,
{
key: 0,
class: normalizeClass([
'el-message-box__status',
_ctx.typeClass,
]),
},
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(
_ctx.iconComponent
)
)),
]),
_: 1,
},
8,
['class']
))
: createCommentVNode('v-if', true),
_ctx.hasMessage
? (openBlock(),
createElementBlock('div', _hoisted_6$39, [
renderSlot(
_ctx.$slots,
'default',
{},
() => [
!_ctx.dangerouslyUseHTMLString
? (openBlock(),
createElementBlock(
'p',
_hoisted_7$2O,
toDisplayString$1(_ctx.message),
1
))
: (openBlock(),
createElementBlock(
'p',
{
key: 1,
innerHTML: _ctx.message,
},
null,
8,
_hoisted_8$2u
)),
]
),
]))
: createCommentVNode('v-if', true),
]),
withDirectives(
createElementVNode(
'div',
_hoisted_9$2i,
[
createVNode$1(
_component_el_input,
{
ref: 'inputRef',
modelValue: _ctx.inputValue,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(_ctx.inputValue = $event)),
type: _ctx.inputType,
placeholder: _ctx.inputPlaceholder,
class: normalizeClass({
invalid: _ctx.validateError,
}),
onKeydown: withKeys(
_ctx.handleInputEnter,
['enter']
),
},
null,
8,
[
'modelValue',
'type',
'placeholder',
'class',
'onKeydown',
]
),
createElementVNode(
'div',
{
class: 'el-message-box__errormsg',
style: normalizeStyle$1({
visibility: !!_ctx.editorErrorMessage
? 'visible'
: 'hidden',
}),
},
toDisplayString$1(
_ctx.editorErrorMessage
),
5
),
],
512
),
[[vShow, _ctx.showInput]]
),
]),
createElementVNode('div', _hoisted_10$24, [
_ctx.showCancelButton
? (openBlock(),
createBlock(
_component_el_button,
{
key: 0,
loading: _ctx.cancelButtonLoading,
class: normalizeClass([
_ctx.cancelButtonClass,
]),
round: _ctx.roundButton,
size: _ctx.btnSize,
onClick:
_cache[3] ||
(_cache[3] = ($event) =>
_ctx.handleAction('cancel')),
onKeydown:
_cache[4] ||
(_cache[4] = withKeys(
withModifiers(
($event) =>
_ctx.handleAction('cancel'),
['prevent']
),
['enter']
)),
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(
_ctx.cancelButtonText ||
_ctx.t('el.messagebox.cancel')
),
1
),
]),
_: 1,
},
8,
['loading', 'class', 'round', 'size']
))
: createCommentVNode('v-if', true),
withDirectives(
createVNode$1(
_component_el_button,
{
ref: 'confirmRef',
type: 'primary',
loading: _ctx.confirmButtonLoading,
class: normalizeClass([
_ctx.confirmButtonClasses,
]),
round: _ctx.roundButton,
disabled: _ctx.confirmButtonDisabled,
size: _ctx.btnSize,
onClick:
_cache[5] ||
(_cache[5] = ($event) =>
_ctx.handleAction('confirm')),
onKeydown:
_cache[6] ||
(_cache[6] = withKeys(
withModifiers(
($event) =>
_ctx.handleAction('confirm'),
['prevent']
),
['enter']
)),
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(
_ctx.confirmButtonText ||
_ctx.t('el.messagebox.confirm')
),
1
),
]),
_: 1,
},
8,
[
'loading',
'class',
'round',
'disabled',
'size',
]
),
[[vShow, _ctx.showConfirmButton]]
),
]),
],
14,
_hoisted_1$61
)),
[[_directive_trap_focus]]
),
],
32
),
]),
_: 3,
},
8,
['z-index', 'overlay-class', 'mask']
),
[[vShow, _ctx.visible]]
),
]),
_: 3,
}
)
)
}
var MessageBoxConstructor = /* @__PURE__ */ _export_sfc$1(_sfc_main$77, [
['render', _sfc_render$k],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/message-box/src/index.vue',
],
])
const messageInstance = /* @__PURE__ */ new Map()
const initInstance = (props2, container, appContext = null) => {
const vnode = h$4(MessageBoxConstructor, props2)
vnode.appContext = appContext
render$1(vnode, container)
document.body.appendChild(container.firstElementChild)
return vnode.component
}
const genContainer = () => {
return document.createElement('div')
}
const showMessage = (options2, appContext) => {
const container = genContainer()
options2.onVanish = () => {
render$1(null, container)
messageInstance.delete(vm)
}
options2.onAction = (action) => {
const currentMsg = messageInstance.get(vm)
let resolve2
if (options2.showInput) {
resolve2 = { value: vm.inputValue, action }
} else {
resolve2 = action
}
if (options2.callback) {
options2.callback(resolve2, instance.proxy)
} else {
if (action === 'cancel' || action === 'close') {
if (options2.distinguishCancelAndClose && action !== 'cancel') {
currentMsg.reject('close')
} else {
currentMsg.reject('cancel')
}
} else {
currentMsg.resolve(resolve2)
}
}
}
const instance = initInstance(options2, container, appContext)
const vm = instance.proxy
for (const prop in options2) {
if (hasOwn$e(options2, prop) && !hasOwn$e(vm.$props, prop)) {
vm[prop] = options2[prop]
}
}
watch$1(
() => vm.message,
(newVal, oldVal) => {
if (isVNode$1(newVal)) {
instance.slots.default = () => [newVal]
} else if (isVNode$1(oldVal) && !isVNode$1(newVal)) {
delete instance.slots.default
}
},
{
immediate: true,
}
)
vm.visible = true
return vm
}
function MessageBox(options2, appContext = null) {
if (!isClient$1) return Promise.reject()
let callback
if (isString$f(options2) || isVNode$1(options2)) {
options2 = {
message: options2,
}
} else {
callback = options2.callback
}
return new Promise((resolve2, reject2) => {
const vm = showMessage(
options2,
appContext != null ? appContext : MessageBox._context
)
messageInstance.set(vm, {
options: options2,
callback,
resolve: resolve2,
reject: reject2,
})
})
}
const MESSAGE_BOX_VARIANTS = ['alert', 'confirm', 'prompt']
const MESSAGE_BOX_DEFAULT_OPTS = {
alert: { closeOnPressEscape: false, closeOnClickModal: false },
confirm: { showCancelButton: true },
prompt: { showCancelButton: true, showInput: true },
}
MESSAGE_BOX_VARIANTS.forEach((boxType) => {
MessageBox[boxType] = messageBoxFactory(boxType)
})
function messageBoxFactory(boxType) {
return (message2, titleOrOpts, options2, appContext) => {
let title
if (isObject$v(titleOrOpts)) {
options2 = titleOrOpts
title = ''
} else if (isUndefined$c(titleOrOpts)) {
title = ''
} else {
title = titleOrOpts
}
return MessageBox(
Object.assign(
{
title,
message: message2,
type: '',
...MESSAGE_BOX_DEFAULT_OPTS[boxType],
},
options2,
{
boxType,
}
),
appContext
)
}
}
MessageBox.close = () => {
messageInstance.forEach((_2, vm) => {
vm.doClose()
})
messageInstance.clear()
}
MessageBox._context = null
const _MessageBox = MessageBox
_MessageBox.install = (app2) => {
_MessageBox._context = app2._context
app2.config.globalProperties.$msgbox = _MessageBox
app2.config.globalProperties.$messageBox = _MessageBox
app2.config.globalProperties.$alert = _MessageBox.alert
app2.config.globalProperties.$confirm = _MessageBox.confirm
app2.config.globalProperties.$prompt = _MessageBox.prompt
}
const ElMessageBox = _MessageBox
const notificationTypes = ['success', 'info', 'warning', 'error']
const notificationProps = buildProps({
customClass: {
type: String,
default: '',
},
dangerouslyUseHTMLString: {
type: Boolean,
default: false,
},
duration: {
type: Number,
default: 4500,
},
icon: {
type: definePropType([String, Object]),
default: '',
},
id: {
type: String,
default: '',
},
message: {
type: definePropType([String, Object]),
default: '',
},
offset: {
type: Number,
default: 0,
},
onClick: {
type: definePropType(Function),
default: () => void 0,
},
onClose: {
type: definePropType(Function),
required: true,
},
position: {
type: String,
values: ['top-right', 'top-left', 'bottom-right', 'bottom-left'],
default: 'top-right',
},
showClose: {
type: Boolean,
default: true,
},
title: {
type: String,
default: '',
},
type: {
type: String,
values: [...notificationTypes, ''],
default: '',
},
zIndex: {
type: Number,
default: 0,
},
})
const notificationEmits = {
destroy: () => true,
}
const _sfc_main$76 = defineComponent({
name: 'ElNotification',
components: {
ElIcon,
...TypeComponents,
},
props: notificationProps,
emits: notificationEmits,
setup(props2) {
const ns = useNamespace('notification')
const visible = ref(false)
let timer2 = void 0
const typeClass = computed(() => {
const type4 = props2.type
return type4 && TypeComponentsMap[props2.type] ? ns.m(type4) : ''
})
const iconComponent = computed(() => {
return TypeComponentsMap[props2.type] || props2.icon || ''
})
const horizontalClass = computed(() =>
props2.position.endsWith('right') ? 'right' : 'left'
)
const verticalProperty = computed(() =>
props2.position.startsWith('top') ? 'top' : 'bottom'
)
const positionStyle = computed(() => {
return {
[verticalProperty.value]: `${props2.offset}px`,
zIndex: props2.zIndex,
}
})
function startTimer2() {
if (props2.duration > 0) {
;({ stop: timer2 } = useTimeoutFn$1(() => {
if (visible.value) close2()
}, props2.duration))
}
}
function clearTimer2() {
timer2 == null ? void 0 : timer2()
}
function close2() {
visible.value = false
}
function onKeydown({ code: code2 }) {
if (code2 === EVENT_CODE.delete || code2 === EVENT_CODE.backspace) {
clearTimer2()
} else if (code2 === EVENT_CODE.esc) {
if (visible.value) {
close2()
}
} else {
startTimer2()
}
}
onMounted(() => {
startTimer2()
visible.value = true
})
useEventListener$1(document, 'keydown', onKeydown)
return {
ns,
horizontalClass,
typeClass,
iconComponent,
positionStyle,
visible,
close: close2,
clearTimer: clearTimer2,
startTimer: startTimer2,
}
},
})
const _hoisted_1$60 = ['id']
const _hoisted_2$4Y = ['textContent']
const _hoisted_3$4v = { key: 0 }
const _hoisted_4$3W = ['innerHTML']
function _sfc_render$j(_ctx, _cache, $props2, $setup, $data, $options) {
const _component_el_icon = resolveComponent('el-icon')
const _component_close = resolveComponent('close')
return (
openBlock(),
createBlock(
Transition,
{
name: _ctx.ns.b('fade'),
onBeforeLeave: _ctx.onClose,
onAfterLeave:
_cache[3] || (_cache[3] = ($event) => _ctx.$emit('destroy')),
},
{
default: withCtx(() => [
withDirectives(
createElementVNode(
'div',
{
id: _ctx.id,
class: normalizeClass([
_ctx.ns.b(),
_ctx.customClass,
_ctx.horizontalClass,
]),
style: normalizeStyle$1(_ctx.positionStyle),
role: 'alert',
onMouseenter:
_cache[0] ||
(_cache[0] = (...args) =>
_ctx.clearTimer && _ctx.clearTimer(...args)),
onMouseleave:
_cache[1] ||
(_cache[1] = (...args) =>
_ctx.startTimer && _ctx.startTimer(...args)),
onClick:
_cache[2] ||
(_cache[2] = (...args) =>
_ctx.onClick && _ctx.onClick(...args)),
},
[
_ctx.iconComponent
? (openBlock(),
createBlock(
_component_el_icon,
{
key: 0,
class: normalizeClass([
_ctx.ns.e('icon'),
_ctx.typeClass,
]),
},
{
default: withCtx(() => [
(openBlock(),
createBlock(
resolveDynamicComponent(_ctx.iconComponent)
)),
]),
_: 1,
},
8,
['class']
))
: createCommentVNode('v-if', true),
createElementVNode(
'div',
{
class: normalizeClass(_ctx.ns.e('group')),
},
[
createElementVNode(
'h2',
{
class: normalizeClass(_ctx.ns.e('title')),
textContent: toDisplayString$1(_ctx.title),
},
null,
10,
_hoisted_2$4Y
),
withDirectives(
createElementVNode(
'div',
{
class: normalizeClass(_ctx.ns.e('content')),
style: normalizeStyle$1(
!!_ctx.title ? void 0 : { margin: 0 }
),
},
[
renderSlot(_ctx.$slots, 'default', {}, () => [
!_ctx.dangerouslyUseHTMLString
? (openBlock(),
createElementBlock(
'p',
_hoisted_3$4v,
toDisplayString$1(_ctx.message),
1
))
: (openBlock(),
createElementBlock(
Fragment,
{ key: 1 },
[
createCommentVNode(
" Caution here, message could've been compromized, nerver use user's input as message "
),
createCommentVNode(
' eslint-disable-next-line '
),
createElementVNode(
'p',
{ innerHTML: _ctx.message },
null,
8,
_hoisted_4$3W
),
],
2112
)),
]),
],
6
),
[[vShow, _ctx.message]]
),
_ctx.showClose
? (openBlock(),
createBlock(
_component_el_icon,
{
key: 0,
class: normalizeClass(_ctx.ns.e('closeBtn')),
onClick: withModifiers(_ctx.close, ['stop']),
},
{
default: withCtx(() => [
createVNode$1(_component_close),
]),
_: 1,
},
8,
['class', 'onClick']
))
: createCommentVNode('v-if', true),
],
2
),
],
46,
_hoisted_1$60
),
[[vShow, _ctx.visible]]
),
]),
_: 3,
},
8,
['name', 'onBeforeLeave']
)
)
}
var NotificationConstructor = /* @__PURE__ */ _export_sfc$1(_sfc_main$76, [
['render', _sfc_render$j],
[
'__file',
'/home/runner/work/element-plus/element-plus/packages/components/notification/src/notification.vue',
],
])
const notifications = {
'top-left': [],
'top-right': [],
'bottom-left': [],
'bottom-right': [],
}
const GAP_SIZE = 16
let seed = 1
const notify$2 = function (options2 = {}, context2 = null) {
if (!isClient$1) return { close: () => void 0 }
if (typeof options2 === 'string' || isVNode$1(options2)) {
options2 = { message: options2 }
}
const position2 = options2.position || 'top-right'
let verticalOffset = options2.offset || 0
notifications[position2].forEach(({ vm: vm2 }) => {
var _a2
verticalOffset +=
(((_a2 = vm2.el) == null ? void 0 : _a2.offsetHeight) || 0) + GAP_SIZE
})
verticalOffset += GAP_SIZE
const { nextZIndex: nextZIndex2 } = useZIndex()
const id2 = `notification_${seed++}`
const userOnClose = options2.onClose
const props2 = {
zIndex: nextZIndex2(),
offset: verticalOffset,
...options2,
id: id2,
onClose: () => {
close(id2, position2, userOnClose)
},
}
let appendTo = document.body
if (isElement$3(options2.appendTo)) {
appendTo = options2.appendTo
} else if (isString$f(options2.appendTo)) {
appendTo = document.querySelector(options2.appendTo)
}
if (!isElement$3(appendTo)) {
appendTo = document.body
}
const container = document.createElement('div')
const vm = createVNode$1(
NotificationConstructor,
props2,
isVNode$1(props2.message)
? {
default: () => props2.message,
}
: null
)
vm.appContext = context2 != null ? context2 : notify$2._context
vm.props.onDestroy = () => {
render$1(null, container)
}
render$1(vm, container)
notifications[position2].push({ vm })
appendTo.appendChild(container.firstElementChild)
return {
close: () => {
vm.component.proxy.visible = false
},
}
}
notificationTypes.forEach((type4) => {
notify$2[type4] = (options2 = {}) => {
if (typeof options2 === 'string' || isVNode$1(options2)) {
options2 = {
message: options2,
}
}
return notify$2({
...options2,
type: type4,
})
}
})
function close(id2, position2, userOnClose) {
const orientedNotifications = notifications[position2]
const idx = orientedNotifications.findIndex(({ vm: vm2 }) => {
var _a2
return ((_a2 = vm2.component) == null ? void 0 : _a2.props.id) === id2
})
if (idx === -1) return
const { vm } = orientedNotifications[idx]
if (!vm) return
userOnClose == null ? void 0 : userOnClose(vm)
const removedHeight = vm.el.offsetHeight
const verticalPos = position2.split('-')[0]
orientedNotifications.splice(idx, 1)
const len2 = orientedNotifications.length
if (len2 < 1) return
for (let i2 = idx; i2 < len2; i2++) {
const { el: el2, component: component2 } = orientedNotifications[i2].vm
const pos =
Number.parseInt(el2.style[verticalPos], 10) - removedHeight - GAP_SIZE
component2.props.offset = pos
}
}
function closeAll() {
for (const orientedNotifications of Object.values(notifications)) {
orientedNotifications.forEach(({ vm }) => {
vm.component.proxy.visible = false
})
}
}
notify$2.closeAll = closeAll
notify$2._context = null
const ElNotification = withInstallFunction(notify$2, '$notify')
var Plugins = [
ElInfiniteScroll,
ElLoading,
ElMessage,
ElMessageBox,
ElNotification,
ElPopoverDirective,
]
var installer = makeInstaller([...Components, ...Plugins])
const install$T = installer.install
const version$6 = installer.version
var ElementPlus = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
install: install$T,
version: version$6,
default: installer,
makeInstaller,
dayjs,
affixEmits,
affixProps,
ElAffix,
alertEffects,
alertEmits,
alertProps,
ElAlert,
autocompleteEmits,
autocompleteProps,
ElAutocomplete,
avatarEmits,
avatarProps,
ElAvatar,
backtopEmits,
backtopProps,
ElBacktop,
badgeProps,
ElBadge,
breadcrumbProps,
breadcrumbItemProps,
ElBreadcrumb,
ElBreadcrumbItem,
buttonEmits,
buttonNativeTypes,
buttonProps,
buttonTypes,
ElButton,
ElButtonGroup: ElButtonGroup$1,
calendarEmits,
calendarProps,
ElCalendar,
cardProps,
ElCard,
carouselEmits,
carouselProps,
carouselItemProps,
ElCarousel,
ElCarouselItem,
ElCascader,
CASCADER_PANEL_INJECTION_KEY,
ExpandTrigger: ExpandTrigger$1,
CommonProps,
DefaultProps,
useCascaderConfig,
ElCascaderPanel,
checkTagEmits,
checkTagProps,
ElCheckTag,
ElCheckbox,
ElCheckboxButton,
ElCheckboxGroup: ElCheckboxGroup$1,
colProps,
ElCol,
collapseEmits,
collapseProps,
emitChangeFn,
collapseItemProps,
ElCollapse,
ElCollapseItem,
ElCollapseTransition,
ElColorPicker,
configProviderProps,
messageConfig,
ElConfigProvider,
ElAside,
ElContainer,
ElFooter,
ElHeader,
ElMain,
ElDatePicker,
ElDescriptions,
ElDescriptionsItem,
useDialog,
dialogEmits,
dialogProps,
ElDialog,
dividerProps,
ElDivider,
drawerEmits,
drawerProps,
ElDrawer,
DROPDOWN_COLLECTION_INJECTION_KEY: COLLECTION_INJECTION_KEY,
DROPDOWN_COLLECTION_ITEM_INJECTION_KEY: COLLECTION_ITEM_INJECTION_KEY,
ElCollection,
ElCollectionItem,
FIRST_KEYS,
FIRST_LAST_KEYS,
LAST_KEYS,
dropdownItemProps,
dropdownMenuProps,
dropdownProps,
DROPDOWN_INJECTION_KEY,
ElDropdown,
ElDropdownItem,
ElDropdownMenu,
emptyProps,
ElEmpty,
formEmits,
formProps,
formItemProps: formItemProps$1,
formItemValidateStates,
ElForm,
ElFormItem,
iconProps,
ElIcon,
imageEmits,
imageProps,
ElImage,
imageViewerEmits,
imageViewerProps,
ElImageViewer,
inputEmits,
inputProps,
ElInput,
inputNumberEmits,
inputNumberProps,
ElInputNumber,
linkEmits,
linkProps,
ElLink,
menuEmits,
menuProps,
menuItemEmits,
menuItemProps,
menuItemGroupProps,
subMenuProps,
ElMenu,
ElMenuItem,
ElMenuItemGroup,
ElSubMenu,
overlayEmits,
overlayProps,
ElOverlay,
pageHeaderEmits,
pageHeaderProps,
ElPageHeader,
paginationEmits,
paginationProps,
ElPagination,
popconfirmProps,
ElPopconfirm,
useDeprecateAppendToBody,
Effect,
usePopperProps,
usePopperTriggerProps,
usePopperContentProps,
usePopperCoreConfigProps,
usePopperArrowProps,
ElPopperArrow,
ElPopperTrigger,
ElPopperContent,
ElPopper,
progressProps,
ElProgress,
radioEmits,
radioProps,
radioPropsBase,
useRadio,
radioGroupEmits,
radioGroupProps,
radioButtonProps,
ElRadio,
ElRadioButton,
ElRadioGroup,
rateEmits,
rateProps,
ElRate,
IconComponentMap,
IconMap,
resultProps,
ElResult,
rowProps,
ElRow,
BAR_MAP,
renderThumbStyle: renderThumbStyle$1,
scrollbarEmits,
scrollbarProps,
thumbProps,
ElScrollbar,
selectGroupKey,
selectKey,
ElOption: ElOption$1,
ElOptionGroup,
ElSelect,
selectV2InjectionKey,
ElSelectV2,
skeletonProps,
skeletonItemProps,
ElSkeleton,
ElSkeletonItem,
ElSlider,
spaceProps,
useSpace,
ElSpace,
ElStep,
ElSteps,
switchEmits,
switchProps,
ElSwitch,
ElTable,
ElTableColumn,
tabsEmits,
tabsProps,
tabBarProps,
tabNavProps,
tabPaneProps,
ElTabPane,
ElTabs,
tagEmits,
tagProps,
ElTag,
extractDateFormat,
extractTimeFormat,
rangeArr,
DEFAULT_FORMATS_DATE,
DEFAULT_FORMATS_DATEPICKER,
DEFAULT_FORMATS_TIME,
timePickerDefaultProps,
CommonPicker,
TimePickPanel,
ElTimePicker,
ElTimeSelect,
timelineItemProps,
ElTimeline,
ElTimelineItem,
useTooltipContentProps,
useTooltipProps,
useTooltipTriggerProps,
TOOLTIP_INJECTION_KEY,
ElTooltip,
CHANGE_EVENT,
INPUT_EVENT,
UPDATE_MODEL_EVENT,
ElTransfer,
ElTree,
ElTreeSelect,
ElTreeV2,
genFileId,
uploadBaseProps,
uploadListTypes,
uploadProps,
uploadContentProps,
uploadListEmits,
uploadListProps,
uploadDraggerEmits,
uploadDraggerProps,
ElUpload,
FixedSizeList,
DynamicSizeList,
FixedSizeGrid: FixedSizeGrid$1,
DynamicSizeGrid: FixedSizeGrid,
virtualizedGridProps,
virtualizedListProps,
virtualizedProps,
virtualizedScrollbarProps,
ElInfiniteScroll,
ElLoading,
ElLoadingDirective: vLoading,
vLoading,
ElLoadingService: Loading,
messageEmits,
messageProps,
messageTypes,
ElMessage,
ElMessageBox,
notificationEmits,
notificationProps,
notificationTypes,
ElNotification,
ElPopover,
ElPopoverDirective,
EVENT_CODE,
WEEK_DAYS,
datePickTypes,
componentSizes,
ClickOutside,
RepeatClick,
TrapFocus,
Mousewheel,
Resize,
useAttrs,
useDisabled: useDisabled$1,
useSize: useSize$1,
useSizeProp,
useDeprecated,
useDraggable: useDraggable$1,
useFocus: useFocus$1,
useFormItem,
provideGlobalConfig,
useGlobalConfig,
buildLocaleContext,
buildTranslator,
translate: translate$2,
useLocale,
useLockscreen,
useModal,
createModelToggleComposable,
useModelToggle: useModelToggle$1,
useModelToggleEmits: useModelToggleEmits$1,
useModelToggleProps: useModelToggleProps$1,
usePreventGlobal,
useProp,
useRestoreActive,
useSameTarget,
useTeleport,
useThrottleRender,
useTimeout: useTimeout$1,
useTransitionFallthrough,
useTransitionFallthroughEmits,
ID_INJECTION_KEY,
useId,
useEscapeKeydown,
POPPER_CONTAINER_ID,
POPPER_CONTAINER_SELECTOR,
usePopperContainer,
useDelayedRender,
useDelayedToggle,
useDelayedToggleProps,
FORWARD_REF_INJECTION_KEY,
useForwardRef,
useForwardRefDirective,
useNamespace,
useZIndex,
arrowMiddleware,
getPositionDataWithUnit,
useFloating,
useFloatingProps,
breadcrumbKey,
buttonGroupContextKey,
carouselContextKey,
collapseContextKey,
configProviderContextKey,
dialogInjectionKey,
formContextKey,
formItemContextKey,
elPaginationKey,
radioGroupKey,
rowContextKey,
scrollbarContextKey,
tabsRootContextKey,
uploadContextKey,
POPPER_CONTENT_INJECTION_KEY,
POPPER_INJECTION_KEY,
TOOLTIP_V2_OPEN,
tooltipV2ContentKey,
tooltipV2RootKey,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var index$r = ''
var __defProp$9$1 = Object.defineProperty
var __defProps$6$1 = Object.defineProperties
var __getOwnPropDescs$6$1 = Object.getOwnPropertyDescriptors
var __getOwnPropSymbols$b$1 = Object.getOwnPropertySymbols
var __hasOwnProp$b$1 = Object.prototype.hasOwnProperty
var __propIsEnum$b$1 = Object.prototype.propertyIsEnumerable
var __defNormalProp$9$1 = (obj, key2, value2) =>
key2 in obj
? __defProp$9$1(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$9$1 = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$b$1.call(b2, prop)) __defNormalProp$9$1(a2, prop, b2[prop])
if (__getOwnPropSymbols$b$1)
for (var prop of __getOwnPropSymbols$b$1(b2)) {
if (__propIsEnum$b$1.call(b2, prop))
__defNormalProp$9$1(a2, prop, b2[prop])
}
return a2
}
var __spreadProps$6$1 = (a2, b2) =>
__defProps$6$1(a2, __getOwnPropDescs$6$1(b2))
function computedEager(fn2, options2) {
var _a2
const result = shallowRef()
watchEffect(
() => {
result.value = fn2()
},
__spreadProps$6$1(__spreadValues$9$1({}, options2), {
flush:
(_a2 = options2 == null ? void 0 : options2.flush) != null
? _a2
: 'sync',
})
)
return readonly(result)
}
var _a$3
const isClient = typeof window !== 'undefined'
const isDef$1 = (val2) => typeof val2 !== 'undefined'
const assert$1 = (condition2, ...infos) => {
if (!condition2) console.warn(...infos)
}
const toString$d = Object.prototype.toString
const isBoolean$4 = (val2) => typeof val2 === 'boolean'
const isFunction$k = (val2) => typeof val2 === 'function'
const isNumber$g = (val2) => typeof val2 === 'number'
const isString$e = (val2) => typeof val2 === 'string'
const isObject$t = (val2) => toString$d.call(val2) === '[object Object]'
const isWindow$2 = (val2) =>
typeof window !== 'undefined' && toString$d.call(val2) === '[object Window]'
const now$5 = () => Date.now()
const timestamp$2 = () => +Date.now()
const clamp$1 = (n2, min3, max3) => Math.min(max3, Math.max(min3, n2))
const noop$6 = () => {}
const rand = (min3, max3) => {
min3 = Math.ceil(min3)
max3 = Math.floor(max3)
return Math.floor(Math.random() * (max3 - min3 + 1)) + min3
}
const isIOS =
isClient &&
((_a$3 = window == null ? void 0 : window.navigator) == null
? void 0
: _a$3.userAgent) &&
/iP(ad|hone|od)/.test(window.navigator.userAgent)
const hasOwn$d = (val2, key2) =>
Object.prototype.hasOwnProperty.call(val2, key2)
function resolveUnref(r2) {
return typeof r2 === 'function' ? r2() : unref(r2)
}
function createFilterWrapper(filter2, fn2) {
function wrapper(...args) {
return new Promise((resolve2, reject2) => {
Promise.resolve(
filter2(() => fn2.apply(this, args), { fn: fn2, thisArg: this, args })
)
.then(resolve2)
.catch(reject2)
})
}
return wrapper
}
const bypassFilter = (invoke2) => {
return invoke2()
}
function debounceFilter(ms, options2 = {}) {
let timer2
let maxTimer
let lastRejector = noop$6
const _clearTimeout = (timer22) => {
clearTimeout(timer22)
lastRejector()
lastRejector = noop$6
}
const filter2 = (invoke2) => {
const duration2 = resolveUnref(ms)
const maxDuration = resolveUnref(options2.maxWait)
if (timer2) _clearTimeout(timer2)
if (duration2 <= 0 || (maxDuration !== void 0 && maxDuration <= 0)) {
if (maxTimer) {
_clearTimeout(maxTimer)
maxTimer = null
}
return Promise.resolve(invoke2())
}
return new Promise((resolve2, reject2) => {
lastRejector = options2.rejectOnCancel ? reject2 : resolve2
if (maxDuration && !maxTimer) {
maxTimer = setTimeout(() => {
if (timer2) _clearTimeout(timer2)
maxTimer = null
resolve2(invoke2())
}, maxDuration)
}
timer2 = setTimeout(() => {
if (maxTimer) _clearTimeout(maxTimer)
maxTimer = null
resolve2(invoke2())
}, duration2)
})
}
return filter2
}
function throttleFilter(
ms,
trailing = true,
leading = true,
rejectOnCancel = false
) {
let lastExec = 0
let timer2
let isLeading = true
let lastRejector = noop$6
let lastValue
const clear2 = () => {
if (timer2) {
clearTimeout(timer2)
timer2 = void 0
lastRejector()
lastRejector = noop$6
}
}
const filter2 = (_invoke) => {
const duration2 = resolveUnref(ms)
const elapsed = Date.now() - lastExec
const invoke2 = () => {
return (lastValue = _invoke())
}
clear2()
if (duration2 <= 0) {
lastExec = Date.now()
return invoke2()
}
if (elapsed > duration2 && (leading || !isLeading)) {
lastExec = Date.now()
invoke2()
} else if (trailing) {
lastValue = new Promise((resolve2, reject2) => {
lastRejector = rejectOnCancel ? reject2 : resolve2
timer2 = setTimeout(() => {
lastExec = Date.now()
isLeading = true
resolve2(invoke2())
clear2()
}, Math.max(0, duration2 - elapsed))
})
}
if (!leading && !timer2)
timer2 = setTimeout(() => (isLeading = true), duration2)
isLeading = false
return lastValue
}
return filter2
}
function pausableFilter(extendFilter = bypassFilter) {
const isActive = ref(true)
function pause() {
isActive.value = false
}
function resume() {
isActive.value = true
}
const eventFilter = (...args) => {
if (isActive.value) extendFilter(...args)
}
return { isActive: readonly(isActive), pause, resume, eventFilter }
}
function __onlyVue3(name2 = 'this function') {
return
}
function __onlyVue27Plus(name2 = 'this function') {
return
}
const directiveHooks = {
mounted: 'mounted',
updated: 'updated',
unmounted: 'unmounted',
}
function promiseTimeout(ms, throwOnTimeout = false, reason = 'Timeout') {
return new Promise((resolve2, reject2) => {
if (throwOnTimeout) setTimeout(() => reject2(reason), ms)
else setTimeout(resolve2, ms)
})
}
function identity$1(arg) {
return arg
}
function createSingletonPromise(fn2) {
let _promise
function wrapper() {
if (!_promise) _promise = fn2()
return _promise
}
wrapper.reset = async () => {
const _prev = _promise
_promise = void 0
if (_prev) await _prev
}
return wrapper
}
function invoke$2(fn2) {
return fn2()
}
function containsProp(obj, ...props2) {
return props2.some((k2) => k2 in obj)
}
function increaseWithUnit(target2, delta) {
var _a2
if (typeof target2 === 'number') return target2 + delta
const value2 =
((_a2 = target2.match(/^-?[0-9]+\.?[0-9]*/)) == null ? void 0 : _a2[0]) ||
''
const unit = target2.slice(value2.length)
const result = parseFloat(value2) + delta
if (Number.isNaN(result)) return target2
return result + unit
}
function objectPick(obj, keys3, omitUndefined = false) {
return keys3.reduce((n2, k2) => {
if (k2 in obj) {
if (!omitUndefined || obj[k2] !== void 0) n2[k2] = obj[k2]
}
return n2
}, {})
}
function computedWithControl(source2, fn2) {
let v4 = void 0
let track2
let trigger2
const dirty = ref(true)
const update3 = () => {
dirty.value = true
trigger2()
}
watch$1(source2, update3, { flush: 'sync' })
const get3 = isFunction$k(fn2) ? fn2 : fn2.get
const set2 = isFunction$k(fn2) ? void 0 : fn2.set
const result = customRef((_track, _trigger) => {
track2 = _track
trigger2 = _trigger
return {
get() {
if (dirty.value) {
v4 = get3()
dirty.value = false
}
track2()
return v4
},
set(v22) {
set2 == null ? void 0 : set2(v22)
},
}
})
if (Object.isExtensible(result)) result.trigger = update3
return result
}
function tryOnScopeDispose(fn2) {
if (getCurrentScope()) {
onScopeDispose(fn2)
return true
}
return false
}
function createEventHook() {
const fns = []
const off2 = (fn2) => {
const index2 = fns.indexOf(fn2)
if (index2 !== -1) fns.splice(index2, 1)
}
const on2 = (fn2) => {
fns.push(fn2)
const offFn = () => off2(fn2)
tryOnScopeDispose(offFn)
return {
off: offFn,
}
}
const trigger2 = (param) => {
fns.forEach((fn2) => fn2(param))
}
return {
on: on2,
off: off2,
trigger: trigger2,
}
}
function createGlobalState(stateFactory) {
let initialized = false
let state2
const scope = effectScope(true)
return () => {
if (!initialized) {
state2 = scope.run(stateFactory)
initialized = true
}
return state2
}
}
function createInjectionState(composable) {
const key2 = Symbol('InjectionState')
const useProvidingState = (...args) => {
const state2 = composable(...args)
provide(key2, state2)
return state2
}
const useInjectedState = () => inject(key2)
return [useProvidingState, useInjectedState]
}
function createSharedComposable(composable) {
let subscribers = 0
let state2
let scope
const dispose2 = () => {
subscribers -= 1
if (scope && subscribers <= 0) {
scope.stop()
state2 = void 0
scope = void 0
}
}
return (...args) => {
subscribers += 1
if (!state2) {
scope = effectScope(true)
state2 = scope.run(() => composable(...args))
}
tryOnScopeDispose(dispose2)
return state2
}
}
function extendRef(
ref2,
extend2,
{ enumerable: enumerable4 = false, unwrap = true } = {}
) {
for (const [key2, value2] of Object.entries(extend2)) {
if (key2 === 'value') continue
if (isRef(value2) && unwrap) {
Object.defineProperty(ref2, key2, {
get() {
return value2.value
},
set(v4) {
value2.value = v4
},
enumerable: enumerable4,
})
} else {
Object.defineProperty(ref2, key2, {
value: value2,
enumerable: enumerable4,
})
}
}
return ref2
}
function get$8(obj, key2) {
if (key2 == null) return unref(obj)
return unref(obj)[key2]
}
function isDefined(v4) {
return unref(v4) != null
}
var __defProp$8$1 = Object.defineProperty
var __getOwnPropSymbols$a$1 = Object.getOwnPropertySymbols
var __hasOwnProp$a$1 = Object.prototype.hasOwnProperty
var __propIsEnum$a$1 = Object.prototype.propertyIsEnumerable
var __defNormalProp$8$1 = (obj, key2, value2) =>
key2 in obj
? __defProp$8$1(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$8$1 = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$a$1.call(b2, prop)) __defNormalProp$8$1(a2, prop, b2[prop])
if (__getOwnPropSymbols$a$1)
for (var prop of __getOwnPropSymbols$a$1(b2)) {
if (__propIsEnum$a$1.call(b2, prop))
__defNormalProp$8$1(a2, prop, b2[prop])
}
return a2
}
function makeDestructurable(obj, arr) {
if (typeof Symbol !== 'undefined') {
const clone2 = __spreadValues$8$1({}, obj)
Object.defineProperty(clone2, Symbol.iterator, {
enumerable: false,
value() {
let index2 = 0
return {
next: () => ({
value: arr[index2++],
done: index2 > arr.length,
}),
}
},
})
return clone2
} else {
return Object.assign([...arr], obj)
}
}
function reactify(fn2, options2) {
const unrefFn =
(options2 == null ? void 0 : options2.computedGetter) === false
? unref
: resolveUnref
return function (...args) {
return computed(() =>
fn2.apply(
this,
args.map((i2) => unrefFn(i2))
)
)
}
}
function reactifyObject(obj, optionsOrKeys = {}) {
let keys3 = []
let options2
if (Array.isArray(optionsOrKeys)) {
keys3 = optionsOrKeys
} else {
options2 = optionsOrKeys
const { includeOwnProperties = true } = optionsOrKeys
keys3.push(...Object.keys(obj))
if (includeOwnProperties) keys3.push(...Object.getOwnPropertyNames(obj))
}
return Object.fromEntries(
keys3.map((key2) => {
const value2 = obj[key2]
return [
key2,
typeof value2 === 'function'
? reactify(value2.bind(obj), options2)
: value2,
]
})
)
}
function toReactive(objectRef) {
if (!isRef(objectRef)) return reactive(objectRef)
const proxy = new Proxy(
{},
{
get(_2, p2, receiver) {
return unref(Reflect.get(objectRef.value, p2, receiver))
},
set(_2, p2, value2) {
if (isRef(objectRef.value[p2]) && !isRef(value2))
objectRef.value[p2].value = value2
else objectRef.value[p2] = value2
return true
},
deleteProperty(_2, p2) {
return Reflect.deleteProperty(objectRef.value, p2)
},
has(_2, p2) {
return Reflect.has(objectRef.value, p2)
},
ownKeys() {
return Object.keys(objectRef.value)
},
getOwnPropertyDescriptor() {
return {
enumerable: true,
configurable: true,
}
},
}
)
return reactive(proxy)
}
function reactiveComputed(fn2) {
return toReactive(computed(fn2))
}
function reactiveOmit(obj, ...keys3) {
const flatKeys = keys3.flat()
return reactiveComputed(() =>
Object.fromEntries(
Object.entries(toRefs$2(obj)).filter((e2) => !flatKeys.includes(e2[0]))
)
)
}
function reactivePick(obj, ...keys3) {
const flatKeys = keys3.flat()
return reactive(
Object.fromEntries(flatKeys.map((k2) => [k2, toRef(obj, k2)]))
)
}
function refAutoReset(defaultValue, afterMs = 1e4) {
return customRef((track2, trigger2) => {
let value2 = defaultValue
let timer2
const resetAfter = () =>
setTimeout(() => {
value2 = defaultValue
trigger2()
}, resolveUnref(afterMs))
tryOnScopeDispose(() => {
clearTimeout(timer2)
})
return {
get() {
track2()
return value2
},
set(newValue) {
value2 = newValue
trigger2()
clearTimeout(timer2)
timer2 = resetAfter()
},
}
})
}
function useDebounceFn(fn2, ms = 200, options2 = {}) {
return createFilterWrapper(debounceFilter(ms, options2), fn2)
}
function refDebounced(value2, ms = 200, options2 = {}) {
const debounced = ref(value2.value)
const updater = useDebounceFn(
() => {
debounced.value = value2.value
},
ms,
options2
)
watch$1(value2, () => updater())
return debounced
}
function refDefault(source2, defaultValue) {
return computed({
get() {
var _a2
return (_a2 = source2.value) != null ? _a2 : defaultValue
},
set(value2) {
source2.value = value2
},
})
}
function useThrottleFn(
fn2,
ms = 200,
trailing = false,
leading = true,
rejectOnCancel = false
) {
return createFilterWrapper(
throttleFilter(ms, trailing, leading, rejectOnCancel),
fn2
)
}
function refThrottled(value2, delay2 = 200, trailing = true, leading = true) {
if (delay2 <= 0) return value2
const throttled = ref(value2.value)
const updater = useThrottleFn(
() => {
throttled.value = value2.value
},
delay2,
trailing,
leading
)
watch$1(value2, () => updater())
return throttled
}
function refWithControl(initial, options2 = {}) {
let source2 = initial
let track2
let trigger2
const ref2 = customRef((_track, _trigger) => {
track2 = _track
trigger2 = _trigger
return {
get() {
return get3()
},
set(v4) {
set2(v4)
},
}
})
function get3(tracking = true) {
if (tracking) track2()
return source2
}
function set2(value2, triggering = true) {
var _a2, _b2
if (value2 === source2) return
const old = source2
if (
((_a2 = options2.onBeforeChange) == null
? void 0
: _a2.call(options2, value2, old)) === false
)
return
source2 = value2
;(_b2 = options2.onChanged) == null
? void 0
: _b2.call(options2, value2, old)
if (triggering) trigger2()
}
const untrackedGet = () => get3(false)
const silentSet = (v4) => set2(v4, false)
const peek = () => get3(false)
const lay = (v4) => set2(v4, false)
return extendRef(
ref2,
{
get: get3,
set: set2,
untrackedGet,
silentSet,
peek,
lay,
},
{ enumerable: true }
)
}
const controlledRef = refWithControl
function resolveRef(r2) {
return typeof r2 === 'function' ? computed(r2) : ref(r2)
}
function set$6(...args) {
if (args.length === 2) {
const [ref2, value2] = args
ref2.value = value2
}
if (args.length === 3) {
{
const [target2, key2, value2] = args
target2[key2] = value2
}
}
}
function syncRef(left2, right2, options2 = {}) {
var _a2, _b2
const {
flush: flush2 = 'sync',
deep = false,
immediate = true,
direction: direction2 = 'both',
transform: transform3 = {},
} = options2
let watchLeft
let watchRight
const transformLTR = (_a2 = transform3.ltr) != null ? _a2 : (v4) => v4
const transformRTL = (_b2 = transform3.rtl) != null ? _b2 : (v4) => v4
if (direction2 === 'both' || direction2 === 'ltr') {
watchLeft = watch$1(
left2,
(newValue) => (right2.value = transformLTR(newValue)),
{ flush: flush2, deep, immediate }
)
}
if (direction2 === 'both' || direction2 === 'rtl') {
watchRight = watch$1(
right2,
(newValue) => (left2.value = transformRTL(newValue)),
{ flush: flush2, deep, immediate }
)
}
return () => {
watchLeft == null ? void 0 : watchLeft()
watchRight == null ? void 0 : watchRight()
}
}
function syncRefs(source2, targets, options2 = {}) {
const { flush: flush2 = 'sync', deep = false, immediate = true } = options2
if (!Array.isArray(targets)) targets = [targets]
return watch$1(
source2,
(newValue) => targets.forEach((target2) => (target2.value = newValue)),
{ flush: flush2, deep, immediate }
)
}
var __defProp$7$1 = Object.defineProperty
var __defProps$5$1 = Object.defineProperties
var __getOwnPropDescs$5$1 = Object.getOwnPropertyDescriptors
var __getOwnPropSymbols$9$1 = Object.getOwnPropertySymbols
var __hasOwnProp$9$1 = Object.prototype.hasOwnProperty
var __propIsEnum$9$1 = Object.prototype.propertyIsEnumerable
var __defNormalProp$7$1 = (obj, key2, value2) =>
key2 in obj
? __defProp$7$1(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$7$1 = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$9$1.call(b2, prop)) __defNormalProp$7$1(a2, prop, b2[prop])
if (__getOwnPropSymbols$9$1)
for (var prop of __getOwnPropSymbols$9$1(b2)) {
if (__propIsEnum$9$1.call(b2, prop))
__defNormalProp$7$1(a2, prop, b2[prop])
}
return a2
}
var __spreadProps$5$1 = (a2, b2) =>
__defProps$5$1(a2, __getOwnPropDescs$5$1(b2))
function toRefs(objectRef) {
if (!isRef(objectRef)) return toRefs$2(objectRef)
const result = Array.isArray(objectRef.value)
? new Array(objectRef.value.length)
: {}
for (const key2 in objectRef.value) {
result[key2] = customRef(() => ({
get() {
return objectRef.value[key2]
},
set(v4) {
if (Array.isArray(objectRef.value)) {
const copy2 = [...objectRef.value]
copy2[key2] = v4
objectRef.value = copy2
} else {
const newObject = __spreadProps$5$1(
__spreadValues$7$1({}, objectRef.value),
{ [key2]: v4 }
)
Object.setPrototypeOf(newObject, objectRef.value)
objectRef.value = newObject
}
},
}))
}
return result
}
function tryOnBeforeMount(fn2, sync = true) {
if (getCurrentInstance()) onBeforeMount(fn2)
else if (sync) fn2()
else nextTick(fn2)
}
function tryOnBeforeUnmount(fn2) {
if (getCurrentInstance()) onBeforeUnmount(fn2)
}
function tryOnMounted(fn2, sync = true) {
if (getCurrentInstance()) onMounted(fn2)
else if (sync) fn2()
else nextTick(fn2)
}
function tryOnUnmounted(fn2) {
if (getCurrentInstance()) onUnmounted(fn2)
}
function createUntil(r2, isNot = false) {
function toMatch(
condition2,
{ flush: flush2 = 'sync', deep = false, timeout, throwOnTimeout } = {}
) {
let stop2 = null
const watcher = new Promise((resolve2) => {
stop2 = watch$1(
r2,
(v4) => {
if (condition2(v4) !== isNot) {
stop2 == null ? void 0 : stop2()
resolve2(v4)
}
},
{
flush: flush2,
deep,
immediate: true,
}
)
})
const promises = [watcher]
if (timeout != null) {
promises.push(
promiseTimeout(timeout, throwOnTimeout)
.then(() => resolveUnref(r2))
.finally(() => (stop2 == null ? void 0 : stop2()))
)
}
return Promise.race(promises)
}
function toBe(value2, options2) {
if (!isRef(value2)) return toMatch((v4) => v4 === value2, options2)
const {
flush: flush2 = 'sync',
deep = false,
timeout,
throwOnTimeout,
} = options2 != null ? options2 : {}
let stop2 = null
const watcher = new Promise((resolve2) => {
stop2 = watch$1(
[r2, value2],
([v12, v22]) => {
if (isNot !== (v12 === v22)) {
stop2 == null ? void 0 : stop2()
resolve2(v12)
}
},
{
flush: flush2,
deep,
immediate: true,
}
)
})
const promises = [watcher]
if (timeout != null) {
promises.push(
promiseTimeout(timeout, throwOnTimeout)
.then(() => resolveUnref(r2))
.finally(() => {
stop2 == null ? void 0 : stop2()
return resolveUnref(r2)
})
)
}
return Promise.race(promises)
}
function toBeTruthy(options2) {
return toMatch((v4) => Boolean(v4), options2)
}
function toBeNull(options2) {
return toBe(null, options2)
}
function toBeUndefined(options2) {
return toBe(void 0, options2)
}
function toBeNaN(options2) {
return toMatch(Number.isNaN, options2)
}
function toContains(value2, options2) {
return toMatch((v4) => {
const array4 = Array.from(v4)
return array4.includes(value2) || array4.includes(resolveUnref(value2))
}, options2)
}
function changed(options2) {
return changedTimes(1, options2)
}
function changedTimes(n2 = 1, options2) {
let count2 = -1
return toMatch(() => {
count2 += 1
return count2 >= n2
}, options2)
}
if (Array.isArray(resolveUnref(r2))) {
const instance = {
toMatch,
toContains,
changed,
changedTimes,
get not() {
return createUntil(r2, !isNot)
},
}
return instance
} else {
const instance = {
toMatch,
toBe,
toBeTruthy,
toBeNull,
toBeNaN,
toBeUndefined,
changed,
changedTimes,
get not() {
return createUntil(r2, !isNot)
},
}
return instance
}
}
function until(r2) {
return createUntil(r2)
}
function useArrayEvery(list2, fn2) {
return computed(() =>
resolveUnref(list2).every((element, index2, array4) =>
fn2(resolveUnref(element), index2, array4)
)
)
}
function useArrayFilter(list2, fn2) {
return computed(() =>
resolveUnref(list2)
.map((i2) => resolveUnref(i2))
.filter(fn2)
)
}
function useArrayFind(list2, fn2) {
return computed(() =>
resolveUnref(
resolveUnref(list2).find((element, index2, array4) =>
fn2(resolveUnref(element), index2, array4)
)
)
)
}
function useArrayFindIndex(list2, fn2) {
return computed(() =>
resolveUnref(list2).findIndex((element, index2, array4) =>
fn2(resolveUnref(element), index2, array4)
)
)
}
function findLast$2(arr, cb) {
let index2 = arr.length
while (index2-- > 0) {
if (cb(arr[index2], index2, arr)) return arr[index2]
}
return void 0
}
function useArrayFindLast(list2, fn2) {
return computed(() =>
resolveUnref(
!Array.prototype.findLast
? findLast$2(resolveUnref(list2), (element, index2, array4) =>
fn2(resolveUnref(element), index2, array4)
)
: resolveUnref(list2).findLast((element, index2, array4) =>
fn2(resolveUnref(element), index2, array4)
)
)
)
}
function useArrayJoin(list2, separator) {
return computed(() =>
resolveUnref(list2)
.map((i2) => resolveUnref(i2))
.join(resolveUnref(separator))
)
}
function useArrayMap(list2, fn2) {
return computed(() =>
resolveUnref(list2)
.map((i2) => resolveUnref(i2))
.map(fn2)
)
}
function useArrayReduce(list2, reducer, ...args) {
const reduceCallback = (sum2, value2, index2) =>
reducer(resolveUnref(sum2), resolveUnref(value2), index2)
return computed(() => {
const resolved = resolveUnref(list2)
return args.length
? resolved.reduce(reduceCallback, resolveUnref(args[0]))
: resolved.reduce(reduceCallback)
})
}
function useArraySome(list2, fn2) {
return computed(() =>
resolveUnref(list2).some((element, index2, array4) =>
fn2(resolveUnref(element), index2, array4)
)
)
}
function useArrayUnique(list2) {
return computed(() => [
...new Set(resolveUnref(list2).map((element) => resolveUnref(element))),
])
}
function useCounter(initialValue = 0, options2 = {}) {
const count2 = ref(initialValue)
const { max: max3 = Infinity, min: min3 = -Infinity } = options2
const inc2 = (delta = 1) =>
(count2.value = Math.min(max3, count2.value + delta))
const dec = (delta = 1) =>
(count2.value = Math.max(min3, count2.value - delta))
const get3 = () => count2.value
const set2 = (val2) => (count2.value = Math.max(min3, Math.min(max3, val2)))
const reset2 = (val2 = initialValue) => {
initialValue = val2
return set2(val2)
}
return { count: count2, inc: inc2, dec, get: get3, set: set2, reset: reset2 }
}
const REGEX_PARSE =
/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/
const REGEX_FORMAT =
/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|SSS/g
const defaultMeridiem = (hours, minutes, isLowercase, hasPeriod) => {
let m2 = hours < 12 ? 'AM' : 'PM'
if (hasPeriod)
m2 = m2.split('').reduce((acc, curr) => (acc += `${curr}.`), '')
return isLowercase ? m2.toLowerCase() : m2
}
const formatDate$1 = (date4, formatStr, options2 = {}) => {
var _a2
const years = date4.getFullYear()
const month = date4.getMonth()
const days = date4.getDate()
const hours = date4.getHours()
const minutes = date4.getMinutes()
const seconds = date4.getSeconds()
const milliseconds = date4.getMilliseconds()
const day = date4.getDay()
const meridiem =
(_a2 = options2.customMeridiem) != null ? _a2 : defaultMeridiem
const matches2 = {
YY: () => String(years).slice(-2),
YYYY: () => years,
M: () => month + 1,
MM: () => `${month + 1}`.padStart(2, '0'),
MMM: () => date4.toLocaleDateString(options2.locales, { month: 'short' }),
MMMM: () => date4.toLocaleDateString(options2.locales, { month: 'long' }),
D: () => String(days),
DD: () => `${days}`.padStart(2, '0'),
H: () => String(hours),
HH: () => `${hours}`.padStart(2, '0'),
h: () => `${hours % 12 || 12}`.padStart(1, '0'),
hh: () => `${hours % 12 || 12}`.padStart(2, '0'),
m: () => String(minutes),
mm: () => `${minutes}`.padStart(2, '0'),
s: () => String(seconds),
ss: () => `${seconds}`.padStart(2, '0'),
SSS: () => `${milliseconds}`.padStart(3, '0'),
d: () => day,
dd: () => date4.toLocaleDateString(options2.locales, { weekday: 'narrow' }),
ddd: () => date4.toLocaleDateString(options2.locales, { weekday: 'short' }),
dddd: () => date4.toLocaleDateString(options2.locales, { weekday: 'long' }),
A: () => meridiem(hours, minutes),
AA: () => meridiem(hours, minutes, false, true),
a: () => meridiem(hours, minutes, true),
aa: () => meridiem(hours, minutes, true, true),
}
return formatStr.replace(
REGEX_FORMAT,
(match2, $1) => $1 || matches2[match2]()
)
}
const normalizeDate = (date4) => {
if (date4 === null) return new Date(NaN)
if (date4 === void 0) return new Date()
if (date4 instanceof Date) return new Date(date4)
if (typeof date4 === 'string' && !/Z$/i.test(date4)) {
const d3 = date4.match(REGEX_PARSE)
if (d3) {
const m2 = d3[2] - 1 || 0
const ms = (d3[7] || '0').substring(0, 3)
return new Date(
d3[1],
m2,
d3[3] || 1,
d3[4] || 0,
d3[5] || 0,
d3[6] || 0,
ms
)
}
}
return new Date(date4)
}
function useDateFormat(date4, formatStr = 'HH:mm:ss', options2 = {}) {
return computed(() =>
formatDate$1(
normalizeDate(resolveUnref(date4)),
resolveUnref(formatStr),
options2
)
)
}
function useIntervalFn(cb, interval = 1e3, options2 = {}) {
const { immediate = true, immediateCallback = false } = options2
let timer2 = null
const isActive = ref(false)
function clean() {
if (timer2) {
clearInterval(timer2)
timer2 = null
}
}
function pause() {
isActive.value = false
clean()
}
function resume() {
const intervalValue = resolveUnref(interval)
if (intervalValue <= 0) return
isActive.value = true
if (immediateCallback) cb()
clean()
timer2 = setInterval(cb, intervalValue)
}
if (immediate && isClient) resume()
if (isRef(interval) || isFunction$k(interval)) {
const stopWatch = watch$1(interval, () => {
if (isActive.value && isClient) resume()
})
tryOnScopeDispose(stopWatch)
}
tryOnScopeDispose(pause)
return {
isActive,
pause,
resume,
}
}
var __defProp$6$1 = Object.defineProperty
var __getOwnPropSymbols$8$1 = Object.getOwnPropertySymbols
var __hasOwnProp$8$1 = Object.prototype.hasOwnProperty
var __propIsEnum$8$1 = Object.prototype.propertyIsEnumerable
var __defNormalProp$6$1 = (obj, key2, value2) =>
key2 in obj
? __defProp$6$1(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$6$1 = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$8$1.call(b2, prop)) __defNormalProp$6$1(a2, prop, b2[prop])
if (__getOwnPropSymbols$8$1)
for (var prop of __getOwnPropSymbols$8$1(b2)) {
if (__propIsEnum$8$1.call(b2, prop))
__defNormalProp$6$1(a2, prop, b2[prop])
}
return a2
}
function useInterval(interval = 1e3, options2 = {}) {
const {
controls: exposeControls = false,
immediate = true,
callback,
} = options2
const counter2 = ref(0)
const update3 = () => (counter2.value += 1)
const reset2 = () => {
counter2.value = 0
}
const controls = useIntervalFn(
callback
? () => {
update3()
callback(counter2.value)
}
: update3,
interval,
{ immediate }
)
if (exposeControls) {
return __spreadValues$6$1(
{
counter: counter2,
reset: reset2,
},
controls
)
} else {
return counter2
}
}
function useLastChanged(source2, options2 = {}) {
var _a2
const ms = ref((_a2 = options2.initialValue) != null ? _a2 : null)
watch$1(source2, () => (ms.value = timestamp$2()), options2)
return ms
}
function useTimeoutFn(cb, interval, options2 = {}) {
const { immediate = true } = options2
const isPending = ref(false)
let timer2 = null
function clear2() {
if (timer2) {
clearTimeout(timer2)
timer2 = null
}
}
function stop2() {
isPending.value = false
clear2()
}
function start2(...args) {
clear2()
isPending.value = true
timer2 = setTimeout(() => {
isPending.value = false
timer2 = null
cb(...args)
}, resolveUnref(interval))
}
if (immediate) {
isPending.value = true
if (isClient) start2()
}
tryOnScopeDispose(stop2)
return {
isPending: readonly(isPending),
start: start2,
stop: stop2,
}
}
var __defProp$5$1 = Object.defineProperty
var __getOwnPropSymbols$7$1 = Object.getOwnPropertySymbols
var __hasOwnProp$7$1 = Object.prototype.hasOwnProperty
var __propIsEnum$7$1 = Object.prototype.propertyIsEnumerable
var __defNormalProp$5$1 = (obj, key2, value2) =>
key2 in obj
? __defProp$5$1(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$5$1 = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$7$1.call(b2, prop)) __defNormalProp$5$1(a2, prop, b2[prop])
if (__getOwnPropSymbols$7$1)
for (var prop of __getOwnPropSymbols$7$1(b2)) {
if (__propIsEnum$7$1.call(b2, prop))
__defNormalProp$5$1(a2, prop, b2[prop])
}
return a2
}
function useTimeout(interval = 1e3, options2 = {}) {
const { controls: exposeControls = false, callback } = options2
const controls = useTimeoutFn(
callback != null ? callback : noop$6,
interval,
options2
)
const ready = computed(() => !controls.isPending.value)
if (exposeControls) {
return __spreadValues$5$1(
{
ready,
},
controls
)
} else {
return ready
}
}
function useToNumber(value2, options2 = {}) {
const { method: method4 = 'parseFloat', radix, nanToZero } = options2
return computed(() => {
let resolved = resolveUnref(value2)
if (typeof resolved === 'string')
resolved = Number[method4](resolved, radix)
if (nanToZero && isNaN(resolved)) resolved = 0
return resolved
})
}
function useToString(value2) {
return computed(() => `${resolveUnref(value2)}`)
}
function useToggle(initialValue = false, options2 = {}) {
const { truthyValue = true, falsyValue = false } = options2
const valueIsRef = isRef(initialValue)
const _value = ref(initialValue)
function toggle2(value2) {
if (arguments.length) {
_value.value = value2
return _value.value
} else {
const truthy = resolveUnref(truthyValue)
_value.value = _value.value === truthy ? resolveUnref(falsyValue) : truthy
return _value.value
}
}
if (valueIsRef) return toggle2
else return [_value, toggle2]
}
function watchArray(source2, cb, options2) {
let oldList = (options2 == null ? void 0 : options2.immediate)
? []
: [
...(source2 instanceof Function
? source2()
: Array.isArray(source2)
? source2
: unref(source2)),
]
return watch$1(
source2,
(newList, _2, onCleanup) => {
const oldListRemains = new Array(oldList.length)
const added = []
for (const obj of newList) {
let found = false
for (let i2 = 0; i2 < oldList.length; i2++) {
if (!oldListRemains[i2] && obj === oldList[i2]) {
oldListRemains[i2] = true
found = true
break
}
}
if (!found) added.push(obj)
}
const removed = oldList.filter((_22, i2) => !oldListRemains[i2])
cb(newList, oldList, added, removed, onCleanup)
oldList = [...newList]
},
options2
)
}
var __getOwnPropSymbols$6$1 = Object.getOwnPropertySymbols
var __hasOwnProp$6$1 = Object.prototype.hasOwnProperty
var __propIsEnum$6$1 = Object.prototype.propertyIsEnumerable
var __objRest$5 = (source2, exclude) => {
var target2 = {}
for (var prop in source2)
if (__hasOwnProp$6$1.call(source2, prop) && exclude.indexOf(prop) < 0)
target2[prop] = source2[prop]
if (source2 != null && __getOwnPropSymbols$6$1)
for (var prop of __getOwnPropSymbols$6$1(source2)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum$6$1.call(source2, prop))
target2[prop] = source2[prop]
}
return target2
}
function watchWithFilter(source2, cb, options2 = {}) {
const _a2 = options2,
{ eventFilter = bypassFilter } = _a2,
watchOptions = __objRest$5(_a2, ['eventFilter'])
return watch$1(source2, createFilterWrapper(eventFilter, cb), watchOptions)
}
var __getOwnPropSymbols$5$1 = Object.getOwnPropertySymbols
var __hasOwnProp$5$1 = Object.prototype.hasOwnProperty
var __propIsEnum$5$1 = Object.prototype.propertyIsEnumerable
var __objRest$4 = (source2, exclude) => {
var target2 = {}
for (var prop in source2)
if (__hasOwnProp$5$1.call(source2, prop) && exclude.indexOf(prop) < 0)
target2[prop] = source2[prop]
if (source2 != null && __getOwnPropSymbols$5$1)
for (var prop of __getOwnPropSymbols$5$1(source2)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum$5$1.call(source2, prop))
target2[prop] = source2[prop]
}
return target2
}
function watchAtMost(source2, cb, options2) {
const _a2 = options2,
{ count: count2 } = _a2,
watchOptions = __objRest$4(_a2, ['count'])
const current2 = ref(0)
const stop2 = watchWithFilter(
source2,
(...args) => {
current2.value += 1
if (current2.value >= resolveUnref(count2)) nextTick(() => stop2())
cb(...args)
},
watchOptions
)
return { count: current2, stop: stop2 }
}
var __defProp$4$1 = Object.defineProperty
var __defProps$4$1 = Object.defineProperties
var __getOwnPropDescs$4$1 = Object.getOwnPropertyDescriptors
var __getOwnPropSymbols$4$1 = Object.getOwnPropertySymbols
var __hasOwnProp$4$1 = Object.prototype.hasOwnProperty
var __propIsEnum$4$1 = Object.prototype.propertyIsEnumerable
var __defNormalProp$4$1 = (obj, key2, value2) =>
key2 in obj
? __defProp$4$1(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$4$1 = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$4$1.call(b2, prop)) __defNormalProp$4$1(a2, prop, b2[prop])
if (__getOwnPropSymbols$4$1)
for (var prop of __getOwnPropSymbols$4$1(b2)) {
if (__propIsEnum$4$1.call(b2, prop))
__defNormalProp$4$1(a2, prop, b2[prop])
}
return a2
}
var __spreadProps$4$1 = (a2, b2) =>
__defProps$4$1(a2, __getOwnPropDescs$4$1(b2))
var __objRest$3 = (source2, exclude) => {
var target2 = {}
for (var prop in source2)
if (__hasOwnProp$4$1.call(source2, prop) && exclude.indexOf(prop) < 0)
target2[prop] = source2[prop]
if (source2 != null && __getOwnPropSymbols$4$1)
for (var prop of __getOwnPropSymbols$4$1(source2)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum$4$1.call(source2, prop))
target2[prop] = source2[prop]
}
return target2
}
function watchDebounced(source2, cb, options2 = {}) {
const _a2 = options2,
{ debounce: debounce2 = 0, maxWait = void 0 } = _a2,
watchOptions = __objRest$3(_a2, ['debounce', 'maxWait'])
return watchWithFilter(
source2,
cb,
__spreadProps$4$1(__spreadValues$4$1({}, watchOptions), {
eventFilter: debounceFilter(debounce2, { maxWait }),
})
)
}
var __defProp$3$1 = Object.defineProperty
var __defProps$3$1 = Object.defineProperties
var __getOwnPropDescs$3$1 = Object.getOwnPropertyDescriptors
var __getOwnPropSymbols$3$1 = Object.getOwnPropertySymbols
var __hasOwnProp$3$1 = Object.prototype.hasOwnProperty
var __propIsEnum$3$1 = Object.prototype.propertyIsEnumerable
var __defNormalProp$3$1 = (obj, key2, value2) =>
key2 in obj
? __defProp$3$1(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$3$1 = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$3$1.call(b2, prop)) __defNormalProp$3$1(a2, prop, b2[prop])
if (__getOwnPropSymbols$3$1)
for (var prop of __getOwnPropSymbols$3$1(b2)) {
if (__propIsEnum$3$1.call(b2, prop))
__defNormalProp$3$1(a2, prop, b2[prop])
}
return a2
}
var __spreadProps$3$1 = (a2, b2) =>
__defProps$3$1(a2, __getOwnPropDescs$3$1(b2))
var __objRest$2$1 = (source2, exclude) => {
var target2 = {}
for (var prop in source2)
if (__hasOwnProp$3$1.call(source2, prop) && exclude.indexOf(prop) < 0)
target2[prop] = source2[prop]
if (source2 != null && __getOwnPropSymbols$3$1)
for (var prop of __getOwnPropSymbols$3$1(source2)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum$3$1.call(source2, prop))
target2[prop] = source2[prop]
}
return target2
}
function watchIgnorable(source2, cb, options2 = {}) {
const _a2 = options2,
{ eventFilter = bypassFilter } = _a2,
watchOptions = __objRest$2$1(_a2, ['eventFilter'])
const filteredCb = createFilterWrapper(eventFilter, cb)
let ignoreUpdates
let ignorePrevAsyncUpdates
let stop2
if (watchOptions.flush === 'sync') {
const ignore = ref(false)
ignorePrevAsyncUpdates = () => {}
ignoreUpdates = (updater) => {
ignore.value = true
updater()
ignore.value = false
}
stop2 = watch$1(
source2,
(...args) => {
if (!ignore.value) filteredCb(...args)
},
watchOptions
)
} else {
const disposables = []
const ignoreCounter = ref(0)
const syncCounter = ref(0)
ignorePrevAsyncUpdates = () => {
ignoreCounter.value = syncCounter.value
}
disposables.push(
watch$1(
source2,
() => {
syncCounter.value++
},
__spreadProps$3$1(__spreadValues$3$1({}, watchOptions), {
flush: 'sync',
})
)
)
ignoreUpdates = (updater) => {
const syncCounterPrev = syncCounter.value
updater()
ignoreCounter.value += syncCounter.value - syncCounterPrev
}
disposables.push(
watch$1(
source2,
(...args) => {
const ignore =
ignoreCounter.value > 0 && ignoreCounter.value === syncCounter.value
ignoreCounter.value = 0
syncCounter.value = 0
if (ignore) return
filteredCb(...args)
},
watchOptions
)
)
stop2 = () => {
disposables.forEach((fn2) => fn2())
}
}
return { stop: stop2, ignoreUpdates, ignorePrevAsyncUpdates }
}
function watchOnce(source2, cb, options2) {
const stop2 = watch$1(
source2,
(...args) => {
nextTick(() => stop2())
return cb(...args)
},
options2
)
}
var __defProp$2$1 = Object.defineProperty
var __defProps$2$1 = Object.defineProperties
var __getOwnPropDescs$2$1 = Object.getOwnPropertyDescriptors
var __getOwnPropSymbols$2$1 = Object.getOwnPropertySymbols
var __hasOwnProp$2$1 = Object.prototype.hasOwnProperty
var __propIsEnum$2$1 = Object.prototype.propertyIsEnumerable
var __defNormalProp$2$1 = (obj, key2, value2) =>
key2 in obj
? __defProp$2$1(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$2$1 = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$2$1.call(b2, prop)) __defNormalProp$2$1(a2, prop, b2[prop])
if (__getOwnPropSymbols$2$1)
for (var prop of __getOwnPropSymbols$2$1(b2)) {
if (__propIsEnum$2$1.call(b2, prop))
__defNormalProp$2$1(a2, prop, b2[prop])
}
return a2
}
var __spreadProps$2$1 = (a2, b2) =>
__defProps$2$1(a2, __getOwnPropDescs$2$1(b2))
var __objRest$1$1 = (source2, exclude) => {
var target2 = {}
for (var prop in source2)
if (__hasOwnProp$2$1.call(source2, prop) && exclude.indexOf(prop) < 0)
target2[prop] = source2[prop]
if (source2 != null && __getOwnPropSymbols$2$1)
for (var prop of __getOwnPropSymbols$2$1(source2)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum$2$1.call(source2, prop))
target2[prop] = source2[prop]
}
return target2
}
function watchPausable(source2, cb, options2 = {}) {
const _a2 = options2,
{ eventFilter: filter2 } = _a2,
watchOptions = __objRest$1$1(_a2, ['eventFilter'])
const { eventFilter, pause, resume, isActive } = pausableFilter(filter2)
const stop2 = watchWithFilter(
source2,
cb,
__spreadProps$2$1(__spreadValues$2$1({}, watchOptions), {
eventFilter,
})
)
return { stop: stop2, pause, resume, isActive }
}
var __defProp$1$1 = Object.defineProperty
var __defProps$1$1 = Object.defineProperties
var __getOwnPropDescs$1$1 = Object.getOwnPropertyDescriptors
var __getOwnPropSymbols$1$1 = Object.getOwnPropertySymbols
var __hasOwnProp$1$1 = Object.prototype.hasOwnProperty
var __propIsEnum$1$1 = Object.prototype.propertyIsEnumerable
var __defNormalProp$1$1 = (obj, key2, value2) =>
key2 in obj
? __defProp$1$1(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$1$1 = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$1$1.call(b2, prop)) __defNormalProp$1$1(a2, prop, b2[prop])
if (__getOwnPropSymbols$1$1)
for (var prop of __getOwnPropSymbols$1$1(b2)) {
if (__propIsEnum$1$1.call(b2, prop))
__defNormalProp$1$1(a2, prop, b2[prop])
}
return a2
}
var __spreadProps$1$1 = (a2, b2) =>
__defProps$1$1(a2, __getOwnPropDescs$1$1(b2))
var __objRest$6 = (source2, exclude) => {
var target2 = {}
for (var prop in source2)
if (__hasOwnProp$1$1.call(source2, prop) && exclude.indexOf(prop) < 0)
target2[prop] = source2[prop]
if (source2 != null && __getOwnPropSymbols$1$1)
for (var prop of __getOwnPropSymbols$1$1(source2)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum$1$1.call(source2, prop))
target2[prop] = source2[prop]
}
return target2
}
function watchThrottled(source2, cb, options2 = {}) {
const _a2 = options2,
{ throttle: throttle2 = 0, trailing = true, leading = true } = _a2,
watchOptions = __objRest$6(_a2, ['throttle', 'trailing', 'leading'])
return watchWithFilter(
source2,
cb,
__spreadProps$1$1(__spreadValues$1$1({}, watchOptions), {
eventFilter: throttleFilter(throttle2, trailing, leading),
})
)
}
var __defProp$o = Object.defineProperty
var __defProps$a = Object.defineProperties
var __getOwnPropDescs$a = Object.getOwnPropertyDescriptors
var __getOwnPropSymbols$q = Object.getOwnPropertySymbols
var __hasOwnProp$q = Object.prototype.hasOwnProperty
var __propIsEnum$q = Object.prototype.propertyIsEnumerable
var __defNormalProp$o = (obj, key2, value2) =>
key2 in obj
? __defProp$o(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$o = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$q.call(b2, prop)) __defNormalProp$o(a2, prop, b2[prop])
if (__getOwnPropSymbols$q)
for (var prop of __getOwnPropSymbols$q(b2)) {
if (__propIsEnum$q.call(b2, prop)) __defNormalProp$o(a2, prop, b2[prop])
}
return a2
}
var __spreadProps$a = (a2, b2) => __defProps$a(a2, __getOwnPropDescs$a(b2))
function watchTriggerable(source2, cb, options2 = {}) {
let cleanupFn
function onEffect() {
if (!cleanupFn) return
const fn2 = cleanupFn
cleanupFn = void 0
fn2()
}
function onCleanup(callback) {
cleanupFn = callback
}
const _cb = (value2, oldValue) => {
onEffect()
return cb(value2, oldValue, onCleanup)
}
const res = watchIgnorable(source2, _cb, options2)
const { ignoreUpdates } = res
const trigger2 = () => {
let res2
ignoreUpdates(() => {
res2 = _cb(getWatchSources(source2), getOldValue(source2))
})
return res2
}
return __spreadProps$a(__spreadValues$o({}, res), {
trigger: trigger2,
})
}
function getWatchSources(sources) {
if (isReactive(sources)) return sources
if (Array.isArray(sources))
return sources.map((item2) => getOneWatchSource(item2))
return getOneWatchSource(sources)
}
function getOneWatchSource(source2) {
return typeof source2 === 'function' ? source2() : unref(source2)
}
function getOldValue(source2) {
return Array.isArray(source2) ? source2.map(() => void 0) : void 0
}
function whenever(source2, cb, options2) {
return watch$1(
source2,
(v4, ov, onInvalidate) => {
if (v4) cb(v4, ov, onInvalidate)
},
options2
)
}
function computedAsync(evaluationCallback, initialState, optionsOrRef) {
let options2
if (isRef(optionsOrRef)) {
options2 = {
evaluating: optionsOrRef,
}
} else {
options2 = optionsOrRef || {}
}
const {
lazy = false,
evaluating = void 0,
shallow = false,
onError = noop$6,
} = options2
const started = ref(!lazy)
const current2 = shallow ? shallowRef(initialState) : ref(initialState)
let counter2 = 0
watchEffect(async (onInvalidate) => {
if (!started.value) return
counter2++
const counterAtBeginning = counter2
let hasFinished = false
if (evaluating) {
Promise.resolve().then(() => {
evaluating.value = true
})
}
try {
const result = await evaluationCallback((cancelCallback) => {
onInvalidate(() => {
if (evaluating) evaluating.value = false
if (!hasFinished) cancelCallback()
})
})
if (counterAtBeginning === counter2) current2.value = result
} catch (e2) {
onError(e2)
} finally {
if (evaluating && counterAtBeginning === counter2)
evaluating.value = false
hasFinished = true
}
})
if (lazy) {
return computed(() => {
started.value = true
return current2.value
})
} else {
return current2
}
}
function computedInject(key2, options2, defaultSource, treatDefaultAsFactory) {
let source2 = inject(key2)
if (defaultSource) source2 = inject(key2, defaultSource)
if (treatDefaultAsFactory)
source2 = inject(key2, defaultSource, treatDefaultAsFactory)
if (typeof options2 === 'function') {
return computed((ctx) => options2(source2, ctx))
} else {
return computed({
get: (ctx) => options2.get(source2, ctx),
set: options2.set,
})
}
}
const createUnrefFn = (fn2) => {
return function (...args) {
return fn2.apply(
this,
args.map((i2) => unref(i2))
)
}
}
function unrefElement(elRef) {
var _a2
const plain = resolveUnref(elRef)
return (_a2 = plain == null ? void 0 : plain.$el) != null ? _a2 : plain
}
const defaultWindow$1 = isClient ? window : void 0
const defaultDocument = isClient ? window.document : void 0
const defaultNavigator = isClient ? window.navigator : void 0
const defaultLocation = isClient ? window.location : void 0
function useEventListener(...args) {
let target2
let events2
let listeners
let options2
if (isString$e(args[0]) || Array.isArray(args[0])) {
;[events2, listeners, options2] = args
target2 = defaultWindow$1
} else {
;[target2, events2, listeners, options2] = args
}
if (!target2) return noop$6
if (!Array.isArray(events2)) events2 = [events2]
if (!Array.isArray(listeners)) listeners = [listeners]
const cleanups = []
const cleanup = () => {
cleanups.forEach((fn2) => fn2())
cleanups.length = 0
}
const register4 = (el2, event, listener, options22) => {
el2.addEventListener(event, listener, options22)
return () => el2.removeEventListener(event, listener, options22)
}
const stopWatch = watch$1(
() => [unrefElement(target2), resolveUnref(options2)],
([el2, options22]) => {
cleanup()
if (!el2) return
cleanups.push(
...events2.flatMap((event) => {
return listeners.map((listener) =>
register4(el2, event, listener, options22)
)
})
)
},
{ immediate: true, flush: 'post' }
)
const stop2 = () => {
stopWatch()
cleanup()
}
tryOnScopeDispose(stop2)
return stop2
}
let _iOSWorkaround = false
function onClickOutside(target2, handler, options2 = {}) {
const {
window: window2 = defaultWindow$1,
ignore = [],
capture = true,
detectIframe = false,
} = options2
if (!window2) return
if (isIOS && !_iOSWorkaround) {
_iOSWorkaround = true
Array.from(window2.document.body.children).forEach((el2) =>
el2.addEventListener('click', noop$6)
)
}
let shouldListen = true
const shouldIgnore = (event) => {
return ignore.some((target22) => {
if (typeof target22 === 'string') {
return Array.from(window2.document.querySelectorAll(target22)).some(
(el2) => el2 === event.target || event.composedPath().includes(el2)
)
} else {
const el2 = unrefElement(target22)
return (
el2 && (event.target === el2 || event.composedPath().includes(el2))
)
}
})
}
const listener = (event) => {
const el2 = unrefElement(target2)
if (!el2 || el2 === event.target || event.composedPath().includes(el2))
return
if (event.detail === 0) shouldListen = !shouldIgnore(event)
if (!shouldListen) {
shouldListen = true
return
}
handler(event)
}
const cleanup = [
useEventListener(window2, 'click', listener, { passive: true, capture }),
useEventListener(
window2,
'pointerdown',
(e2) => {
const el2 = unrefElement(target2)
if (el2)
shouldListen = !e2.composedPath().includes(el2) && !shouldIgnore(e2)
},
{ passive: true }
),
detectIframe &&
useEventListener(window2, 'blur', (event) => {
var _a2
const el2 = unrefElement(target2)
if (
((_a2 = window2.document.activeElement) == null
? void 0
: _a2.tagName) === 'IFRAME' &&
!(el2 == null ? void 0 : el2.contains(window2.document.activeElement))
)
handler(event)
}),
].filter(Boolean)
const stop2 = () => cleanup.forEach((fn2) => fn2())
return stop2
}
var __defProp$n = Object.defineProperty
var __defProps$9 = Object.defineProperties
var __getOwnPropDescs$9 = Object.getOwnPropertyDescriptors
var __getOwnPropSymbols$p = Object.getOwnPropertySymbols
var __hasOwnProp$p = Object.prototype.hasOwnProperty
var __propIsEnum$p = Object.prototype.propertyIsEnumerable
var __defNormalProp$n = (obj, key2, value2) =>
key2 in obj
? __defProp$n(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$n = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$p.call(b2, prop)) __defNormalProp$n(a2, prop, b2[prop])
if (__getOwnPropSymbols$p)
for (var prop of __getOwnPropSymbols$p(b2)) {
if (__propIsEnum$p.call(b2, prop)) __defNormalProp$n(a2, prop, b2[prop])
}
return a2
}
var __spreadProps$9 = (a2, b2) => __defProps$9(a2, __getOwnPropDescs$9(b2))
const createKeyPredicate = (keyFilter) => {
if (typeof keyFilter === 'function') return keyFilter
else if (typeof keyFilter === 'string')
return (event) => event.key === keyFilter
else if (Array.isArray(keyFilter))
return (event) => keyFilter.includes(event.key)
return () => true
}
function onKeyStroke(...args) {
let key2
let handler
let options2 = {}
if (args.length === 3) {
key2 = args[0]
handler = args[1]
options2 = args[2]
} else if (args.length === 2) {
if (typeof args[1] === 'object') {
key2 = true
handler = args[0]
options2 = args[1]
} else {
key2 = args[0]
handler = args[1]
}
} else {
key2 = true
handler = args[0]
}
const {
target: target2 = defaultWindow$1,
eventName = 'keydown',
passive: passive2 = false,
} = options2
const predicate = createKeyPredicate(key2)
const listener = (e2) => {
if (predicate(e2)) handler(e2)
}
return useEventListener(target2, eventName, listener, passive2)
}
function onKeyDown(key2, handler, options2 = {}) {
return onKeyStroke(
key2,
handler,
__spreadProps$9(__spreadValues$n({}, options2), { eventName: 'keydown' })
)
}
function onKeyPressed(key2, handler, options2 = {}) {
return onKeyStroke(
key2,
handler,
__spreadProps$9(__spreadValues$n({}, options2), { eventName: 'keypress' })
)
}
function onKeyUp(key2, handler, options2 = {}) {
return onKeyStroke(
key2,
handler,
__spreadProps$9(__spreadValues$n({}, options2), { eventName: 'keyup' })
)
}
const DEFAULT_DELAY = 500
function onLongPress(target2, handler, options2) {
var _a2, _b2
const elementRef = computed(() => unrefElement(target2))
let timeout
function clear2() {
if (timeout) {
clearTimeout(timeout)
timeout = void 0
}
}
function onDown(ev) {
var _a22, _b22, _c2, _d
if (
((_a22 = options2 == null ? void 0 : options2.modifiers) == null
? void 0
: _a22.self) &&
ev.target !== elementRef.value
)
return
clear2()
if (
(_b22 = options2 == null ? void 0 : options2.modifiers) == null
? void 0
: _b22.prevent
)
ev.preventDefault()
if (
(_c2 = options2 == null ? void 0 : options2.modifiers) == null
? void 0
: _c2.stop
)
ev.stopPropagation()
timeout = setTimeout(
() => handler(ev),
(_d = options2 == null ? void 0 : options2.delay) != null
? _d
: DEFAULT_DELAY
)
}
const listenerOptions = {
capture:
(_a2 = options2 == null ? void 0 : options2.modifiers) == null
? void 0
: _a2.capture,
once:
(_b2 = options2 == null ? void 0 : options2.modifiers) == null
? void 0
: _b2.once,
}
useEventListener(elementRef, 'pointerdown', onDown, listenerOptions)
useEventListener(elementRef, 'pointerup', clear2, listenerOptions)
useEventListener(elementRef, 'pointerleave', clear2, listenerOptions)
}
const isFocusedElementEditable = () => {
const { activeElement, body } = document
if (!activeElement) return false
if (activeElement === body) return false
switch (activeElement.tagName) {
case 'INPUT':
case 'TEXTAREA':
return true
}
return activeElement.hasAttribute('contenteditable')
}
const isTypedCharValid = ({ keyCode, metaKey, ctrlKey, altKey }) => {
if (metaKey || ctrlKey || altKey) return false
if ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 96 && keyCode <= 105))
return true
if (keyCode >= 65 && keyCode <= 90) return true
return false
}
function onStartTyping(callback, options2 = {}) {
const { document: document2 = defaultDocument } = options2
const keydown = (event) => {
!isFocusedElementEditable() && isTypedCharValid(event) && callback(event)
}
if (document2)
useEventListener(document2, 'keydown', keydown, { passive: true })
}
function templateRef(key2, initialValue = null) {
const instance = getCurrentInstance()
let _trigger = () => {}
const element = customRef((track2, trigger2) => {
_trigger = trigger2
return {
get() {
var _a2, _b2
track2()
return (_b2 =
(_a2 = instance == null ? void 0 : instance.proxy) == null
? void 0
: _a2.$refs[key2]) != null
? _b2
: initialValue
},
set() {},
}
})
tryOnMounted(_trigger)
onUpdated(_trigger)
return element
}
function useActiveElement(options2 = {}) {
var _a2
const { window: window2 = defaultWindow$1 } = options2
const document2 =
(_a2 = options2.document) != null
? _a2
: window2 == null
? void 0
: window2.document
const activeElement = computedWithControl(
() => null,
() => (document2 == null ? void 0 : document2.activeElement)
)
if (window2) {
useEventListener(
window2,
'blur',
(event) => {
if (event.relatedTarget !== null) return
activeElement.trigger()
},
true
)
useEventListener(window2, 'focus', activeElement.trigger, true)
}
return activeElement
}
function useAsyncQueue(tasks, options2 = {}) {
const { interrupt = true, onError = noop$6, onFinished = noop$6 } = options2
const promiseState = {
pending: 'pending',
rejected: 'rejected',
fulfilled: 'fulfilled',
}
const initialResult = Array.from(new Array(tasks.length), () => ({
state: promiseState.pending,
data: null,
}))
const result = reactive(initialResult)
const activeIndex = ref(-1)
if (!tasks || tasks.length === 0) {
onFinished()
return {
activeIndex,
result,
}
}
function updateResult(state2, res) {
activeIndex.value++
result[activeIndex.value].data = res
result[activeIndex.value].state = state2
}
tasks.reduce((prev, curr) => {
return prev
.then((prevRes) => {
var _a2
if (
((_a2 = result[activeIndex.value]) == null ? void 0 : _a2.state) ===
promiseState.rejected &&
interrupt
) {
onFinished()
return
}
return curr(prevRes).then((currentRes) => {
updateResult(promiseState.fulfilled, currentRes)
activeIndex.value === tasks.length - 1 && onFinished()
return currentRes
})
})
.catch((e2) => {
updateResult(promiseState.rejected, e2)
onError()
return e2
})
}, Promise.resolve())
return {
activeIndex,
result,
}
}
function useAsyncState(promise2, initialState, options2) {
const {
immediate = true,
delay: delay2 = 0,
onError = noop$6,
onSuccess = noop$6,
resetOnExecute = true,
shallow = true,
throwError: throwError2,
} = options2 != null ? options2 : {}
const state2 = shallow ? shallowRef(initialState) : ref(initialState)
const isReady = ref(false)
const isLoading = ref(false)
const error2 = ref(void 0)
async function execute(delay22 = 0, ...args) {
if (resetOnExecute) state2.value = initialState
error2.value = void 0
isReady.value = false
isLoading.value = true
if (delay22 > 0) await promiseTimeout(delay22)
const _promise =
typeof promise2 === 'function' ? promise2(...args) : promise2
try {
const data2 = await _promise
state2.value = data2
isReady.value = true
onSuccess(data2)
} catch (e2) {
error2.value = e2
onError(e2)
if (throwError2) throw error2
} finally {
isLoading.value = false
}
return state2.value
}
if (immediate) execute(delay2)
return {
state: state2,
isReady,
isLoading,
error: error2,
execute,
}
}
const defaults$7 = {
array: (v4) => JSON.stringify(v4),
object: (v4) => JSON.stringify(v4),
set: (v4) => JSON.stringify(Array.from(v4)),
map: (v4) => JSON.stringify(Object.fromEntries(v4)),
null: () => '',
}
function getDefaultSerialization(target2) {
if (!target2) return defaults$7.null
if (target2 instanceof Map) return defaults$7.map
else if (target2 instanceof Set) return defaults$7.set
else if (Array.isArray(target2)) return defaults$7.array
else return defaults$7.object
}
function useBase64(target2, options2) {
const base642 = ref('')
const promise2 = ref()
function execute() {
if (!isClient) return
promise2.value = new Promise((resolve2, reject2) => {
try {
const _target = resolveUnref(target2)
if (_target == null) {
resolve2('')
} else if (typeof _target === 'string') {
resolve2(blobToBase64(new Blob([_target], { type: 'text/plain' })))
} else if (_target instanceof Blob) {
resolve2(blobToBase64(_target))
} else if (_target instanceof ArrayBuffer) {
resolve2(window.btoa(String.fromCharCode(...new Uint8Array(_target))))
} else if (_target instanceof HTMLCanvasElement) {
resolve2(
_target.toDataURL(
options2 == null ? void 0 : options2.type,
options2 == null ? void 0 : options2.quality
)
)
} else if (_target instanceof HTMLImageElement) {
const img = _target.cloneNode(false)
img.crossOrigin = 'Anonymous'
imgLoaded(img)
.then(() => {
const canvas = document.createElement('canvas')
const ctx = canvas.getContext('2d')
canvas.width = img.width
canvas.height = img.height
ctx.drawImage(img, 0, 0, canvas.width, canvas.height)
resolve2(
canvas.toDataURL(
options2 == null ? void 0 : options2.type,
options2 == null ? void 0 : options2.quality
)
)
})
.catch(reject2)
} else if (typeof _target === 'object') {
const _serializeFn =
(options2 == null ? void 0 : options2.serializer) ||
getDefaultSerialization(_target)
const serialized = _serializeFn(_target)
return resolve2(
blobToBase64(new Blob([serialized], { type: 'application/json' }))
)
} else {
reject2(new Error('target is unsupported types'))
}
} catch (error2) {
reject2(error2)
}
})
promise2.value.then((res) => (base642.value = res))
return promise2.value
}
if (isRef(target2) || isFunction$k(target2))
watch$1(target2, execute, { immediate: true })
else execute()
return {
base64: base642,
promise: promise2,
execute,
}
}
function imgLoaded(img) {
return new Promise((resolve2, reject2) => {
if (!img.complete) {
img.onload = () => {
resolve2()
}
img.onerror = reject2
} else {
resolve2()
}
})
}
function blobToBase64(blob) {
return new Promise((resolve2, reject2) => {
const fr2 = new FileReader()
fr2.onload = (e2) => {
resolve2(e2.target.result)
}
fr2.onerror = reject2
fr2.readAsDataURL(blob)
})
}
function useSupported(callback, sync = false) {
const isSupported = ref()
const update3 = () => (isSupported.value = Boolean(callback()))
update3()
tryOnMounted(update3, sync)
return isSupported
}
function useBattery({ navigator: navigator2 = defaultNavigator } = {}) {
const events2 = [
'chargingchange',
'chargingtimechange',
'dischargingtimechange',
'levelchange',
]
const isSupported = useSupported(
() => navigator2 && 'getBattery' in navigator2
)
const charging = ref(false)
const chargingTime = ref(0)
const dischargingTime = ref(0)
const level = ref(1)
let battery
function updateBatteryInfo() {
charging.value = this.charging
chargingTime.value = this.chargingTime || 0
dischargingTime.value = this.dischargingTime || 0
level.value = this.level
}
if (isSupported.value) {
navigator2.getBattery().then((_battery) => {
battery = _battery
updateBatteryInfo.call(battery)
for (const event of events2)
useEventListener(battery, event, updateBatteryInfo, { passive: true })
})
}
return {
isSupported,
charging,
chargingTime,
dischargingTime,
level,
}
}
function useBluetooth(options2) {
let { acceptAllDevices = false } = options2 || {}
const {
filters = void 0,
optionalServices = void 0,
navigator: navigator2 = defaultNavigator,
} = options2 || {}
const isSupported = useSupported(
() => navigator2 && 'bluetooth' in navigator2
)
const device = shallowRef(void 0)
const error2 = shallowRef(null)
watch$1(device, () => {
connectToBluetoothGATTServer()
})
async function requestDevice() {
if (!isSupported.value) return
error2.value = null
if (filters && filters.length > 0) acceptAllDevices = false
try {
device.value = await (navigator2 == null
? void 0
: navigator2.bluetooth.requestDevice({
acceptAllDevices,
filters,
optionalServices,
}))
} catch (err) {
error2.value = err
}
}
const server = ref()
const isConnected = computed(() => {
var _a2
return ((_a2 = server.value) == null ? void 0 : _a2.connected) || false
})
async function connectToBluetoothGATTServer() {
error2.value = null
if (device.value && device.value.gatt) {
device.value.addEventListener('gattserverdisconnected', () => {})
try {
server.value = await device.value.gatt.connect()
} catch (err) {
error2.value = err
}
}
}
tryOnMounted(() => {
var _a2
if (device.value) (_a2 = device.value.gatt) == null ? void 0 : _a2.connect()
})
tryOnScopeDispose(() => {
var _a2
if (device.value)
(_a2 = device.value.gatt) == null ? void 0 : _a2.disconnect()
})
return {
isSupported,
isConnected,
device,
requestDevice,
server,
error: error2,
}
}
function useMediaQuery(query, options2 = {}) {
const { window: window2 = defaultWindow$1 } = options2
const isSupported = useSupported(
() =>
window2 &&
'matchMedia' in window2 &&
typeof window2.matchMedia === 'function'
)
let mediaQuery
const matches2 = ref(false)
const cleanup = () => {
if (!mediaQuery) return
if ('removeEventListener' in mediaQuery)
mediaQuery.removeEventListener('change', update3)
else mediaQuery.removeListener(update3)
}
const update3 = () => {
if (!isSupported.value) return
cleanup()
mediaQuery = window2.matchMedia(resolveRef(query).value)
matches2.value = mediaQuery.matches
if ('addEventListener' in mediaQuery)
mediaQuery.addEventListener('change', update3)
else mediaQuery.addListener(update3)
}
watchEffect(update3)
tryOnScopeDispose(() => cleanup())
return matches2
}
const breakpointsTailwind = {
sm: 640,
md: 768,
lg: 1024,
xl: 1280,
'2xl': 1536,
}
const breakpointsBootstrapV5 = {
sm: 576,
md: 768,
lg: 992,
xl: 1200,
xxl: 1400,
}
const breakpointsVuetify = {
xs: 600,
sm: 960,
md: 1264,
lg: 1904,
}
const breakpointsAntDesign = {
xs: 480,
sm: 576,
md: 768,
lg: 992,
xl: 1200,
xxl: 1600,
}
const breakpointsQuasar = {
xs: 600,
sm: 1024,
md: 1440,
lg: 1920,
}
const breakpointsSematic = {
mobileS: 320,
mobileM: 375,
mobileL: 425,
tablet: 768,
laptop: 1024,
laptopL: 1440,
desktop4K: 2560,
}
const breakpointsMasterCss = {
'3xs': 360,
'2xs': 480,
xs: 600,
sm: 768,
md: 1024,
lg: 1280,
xl: 1440,
'2xl': 1600,
'3xl': 1920,
'4xl': 2560,
}
var __defProp$m = Object.defineProperty
var __getOwnPropSymbols$o = Object.getOwnPropertySymbols
var __hasOwnProp$o = Object.prototype.hasOwnProperty
var __propIsEnum$o = Object.prototype.propertyIsEnumerable
var __defNormalProp$m = (obj, key2, value2) =>
key2 in obj
? __defProp$m(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$m = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$o.call(b2, prop)) __defNormalProp$m(a2, prop, b2[prop])
if (__getOwnPropSymbols$o)
for (var prop of __getOwnPropSymbols$o(b2)) {
if (__propIsEnum$o.call(b2, prop)) __defNormalProp$m(a2, prop, b2[prop])
}
return a2
}
function useBreakpoints(breakpoints, options2 = {}) {
function getValue2(k2, delta) {
let v4 = breakpoints[k2]
if (delta != null) v4 = increaseWithUnit(v4, delta)
if (typeof v4 === 'number') v4 = `${v4}px`
return v4
}
const { window: window2 = defaultWindow$1 } = options2
function match2(query) {
if (!window2) return false
return window2.matchMedia(query).matches
}
const greaterOrEqual = (k2) => {
return useMediaQuery(`(min-width: ${getValue2(k2)})`, options2)
}
const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k2) => {
Object.defineProperty(shortcuts, k2, {
get: () => greaterOrEqual(k2),
enumerable: true,
configurable: true,
})
return shortcuts
}, {})
return __spreadValues$m(
{
greater(k2) {
return useMediaQuery(`(min-width: ${getValue2(k2, 0.1)})`, options2)
},
greaterOrEqual,
smaller(k2) {
return useMediaQuery(`(max-width: ${getValue2(k2, -0.1)})`, options2)
},
smallerOrEqual(k2) {
return useMediaQuery(`(max-width: ${getValue2(k2)})`, options2)
},
between(a2, b2) {
return useMediaQuery(
`(min-width: ${getValue2(a2)}) and (max-width: ${getValue2(
b2,
-0.1
)})`,
options2
)
},
isGreater(k2) {
return match2(`(min-width: ${getValue2(k2, 0.1)})`)
},
isGreaterOrEqual(k2) {
return match2(`(min-width: ${getValue2(k2)})`)
},
isSmaller(k2) {
return match2(`(max-width: ${getValue2(k2, -0.1)})`)
},
isSmallerOrEqual(k2) {
return match2(`(max-width: ${getValue2(k2)})`)
},
isInBetween(a2, b2) {
return match2(
`(min-width: ${getValue2(a2)}) and (max-width: ${getValue2(
b2,
-0.1
)})`
)
},
},
shortcutMethods
)
}
const useBroadcastChannel = (options2) => {
const { name: name2, window: window2 = defaultWindow$1 } = options2
const isSupported = useSupported(
() => window2 && 'BroadcastChannel' in window2
)
const isClosed = ref(false)
const channel2 = ref()
const data2 = ref()
const error2 = ref(null)
const post = (data22) => {
if (channel2.value) channel2.value.postMessage(data22)
}
const close2 = () => {
if (channel2.value) channel2.value.close()
isClosed.value = true
}
if (isSupported.value) {
tryOnMounted(() => {
error2.value = null
channel2.value = new BroadcastChannel(name2)
channel2.value.addEventListener(
'message',
(e2) => {
data2.value = e2.data
},
{ passive: true }
)
channel2.value.addEventListener(
'messageerror',
(e2) => {
error2.value = e2
},
{ passive: true }
)
channel2.value.addEventListener('close', () => {
isClosed.value = true
})
})
}
tryOnScopeDispose(() => {
close2()
})
return {
isSupported,
channel: channel2,
data: data2,
post,
close: close2,
error: error2,
isClosed,
}
}
function useBrowserLocation({ window: window2 = defaultWindow$1 } = {}) {
const buildState2 = (trigger2) => {
const { state: state22, length: length2 } =
(window2 == null ? void 0 : window2.history) || {}
const {
hash: hash2,
host,
hostname,
href,
origin,
pathname,
port: port2,
protocol,
search: search2,
} = (window2 == null ? void 0 : window2.location) || {}
return {
trigger: trigger2,
state: state22,
length: length2,
hash: hash2,
host,
hostname,
href,
origin,
pathname,
port: port2,
protocol,
search: search2,
}
}
const state2 = ref(buildState2('load'))
if (window2) {
useEventListener(
window2,
'popstate',
() => (state2.value = buildState2('popstate')),
{ passive: true }
)
useEventListener(
window2,
'hashchange',
() => (state2.value = buildState2('hashchange')),
{ passive: true }
)
}
return state2
}
function useCached(refValue, comparator = (a2, b2) => a2 === b2, watchOptions) {
const cachedValue = ref(refValue.value)
watch$1(
() => refValue.value,
(value2) => {
if (!comparator(value2, cachedValue.value)) cachedValue.value = value2
},
watchOptions
)
return cachedValue
}
function useClipboard(options2 = {}) {
const {
navigator: navigator2 = defaultNavigator,
read: read2 = false,
source: source2,
copiedDuring = 1500,
legacy = false,
} = options2
const events2 = ['copy', 'cut']
const isClipboardApiSupported = useSupported(
() => navigator2 && 'clipboard' in navigator2
)
const isSupported = computed(() => isClipboardApiSupported.value || legacy)
const text2 = ref('')
const copied = ref(false)
const timeout = useTimeoutFn(() => (copied.value = false), copiedDuring)
function updateText() {
if (isClipboardApiSupported.value) {
navigator2.clipboard.readText().then((value2) => {
text2.value = value2
})
} else {
text2.value = legacyRead()
}
}
if (isSupported.value && read2) {
for (const event of events2) useEventListener(event, updateText)
}
async function copy2(value2 = resolveUnref(source2)) {
if (isSupported.value && value2 != null) {
if (isClipboardApiSupported.value)
await navigator2.clipboard.writeText(value2)
else legacyCopy(value2)
text2.value = value2
copied.value = true
timeout.start()
}
}
function legacyCopy(value2) {
const ta2 = document.createElement('textarea')
ta2.value = value2 != null ? value2 : ''
ta2.style.position = 'absolute'
ta2.style.opacity = '0'
document.body.appendChild(ta2)
ta2.select()
document.execCommand('copy')
ta2.remove()
}
function legacyRead() {
var _a2, _b2, _c2
return (_c2 =
(_b2 =
(_a2 = document == null ? void 0 : document.getSelection) == null
? void 0
: _a2.call(document)) == null
? void 0
: _b2.toString()) != null
? _c2
: ''
}
return {
isSupported,
text: text2,
copied,
copy: copy2,
}
}
var __defProp$l = Object.defineProperty
var __defProps$8 = Object.defineProperties
var __getOwnPropDescs$8 = Object.getOwnPropertyDescriptors
var __getOwnPropSymbols$n = Object.getOwnPropertySymbols
var __hasOwnProp$n = Object.prototype.hasOwnProperty
var __propIsEnum$n = Object.prototype.propertyIsEnumerable
var __defNormalProp$l = (obj, key2, value2) =>
key2 in obj
? __defProp$l(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$l = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$n.call(b2, prop)) __defNormalProp$l(a2, prop, b2[prop])
if (__getOwnPropSymbols$n)
for (var prop of __getOwnPropSymbols$n(b2)) {
if (__propIsEnum$n.call(b2, prop)) __defNormalProp$l(a2, prop, b2[prop])
}
return a2
}
var __spreadProps$8 = (a2, b2) => __defProps$8(a2, __getOwnPropDescs$8(b2))
function cloneFnJSON(source2) {
return JSON.parse(JSON.stringify(source2))
}
function useCloned(source2, options2 = {}) {
const cloned = ref({})
const {
manual,
clone: clone2 = cloneFnJSON,
deep = true,
immediate = true,
} = options2
function sync() {
cloned.value = clone2(unref(source2))
}
if (!manual && isRef(source2)) {
watch$1(
source2,
sync,
__spreadProps$8(__spreadValues$l({}, options2), {
deep,
immediate,
})
)
} else {
sync()
}
return { cloned, sync }
}
const _global =
typeof globalThis !== 'undefined'
? globalThis
: typeof window !== 'undefined'
? window
: typeof global !== 'undefined'
? global
: typeof self !== 'undefined'
? self
: {}
const globalKey = '__vueuse_ssr_handlers__'
_global[globalKey] = _global[globalKey] || {}
const handlers$2 = _global[globalKey]
function getSSRHandler(key2, fallback) {
return handlers$2[key2] || fallback
}
function setSSRHandler(key2, fn2) {
handlers$2[key2] = fn2
}
function guessSerializerType(rawInit) {
return rawInit == null
? 'any'
: rawInit instanceof Set
? 'set'
: rawInit instanceof Map
? 'map'
: rawInit instanceof Date
? 'date'
: typeof rawInit === 'boolean'
? 'boolean'
: typeof rawInit === 'string'
? 'string'
: typeof rawInit === 'object'
? 'object'
: !Number.isNaN(rawInit)
? 'number'
: 'any'
}
var __defProp$k = Object.defineProperty
var __getOwnPropSymbols$m = Object.getOwnPropertySymbols
var __hasOwnProp$m = Object.prototype.hasOwnProperty
var __propIsEnum$m = Object.prototype.propertyIsEnumerable
var __defNormalProp$k = (obj, key2, value2) =>
key2 in obj
? __defProp$k(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$k = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$m.call(b2, prop)) __defNormalProp$k(a2, prop, b2[prop])
if (__getOwnPropSymbols$m)
for (var prop of __getOwnPropSymbols$m(b2)) {
if (__propIsEnum$m.call(b2, prop)) __defNormalProp$k(a2, prop, b2[prop])
}
return a2
}
const StorageSerializers = {
boolean: {
read: (v4) => v4 === 'true',
write: (v4) => String(v4),
},
object: {
read: (v4) => JSON.parse(v4),
write: (v4) => JSON.stringify(v4),
},
number: {
read: (v4) => Number.parseFloat(v4),
write: (v4) => String(v4),
},
any: {
read: (v4) => v4,
write: (v4) => String(v4),
},
string: {
read: (v4) => v4,
write: (v4) => String(v4),
},
map: {
read: (v4) => new Map(JSON.parse(v4)),
write: (v4) => JSON.stringify(Array.from(v4.entries())),
},
set: {
read: (v4) => new Set(JSON.parse(v4)),
write: (v4) => JSON.stringify(Array.from(v4)),
},
date: {
read: (v4) => new Date(v4),
write: (v4) => v4.toISOString(),
},
}
const customStorageEventName = 'vueuse-storage'
function useStorage(key2, defaults2, storage2, options2 = {}) {
var _a2
const {
flush: flush2 = 'pre',
deep = true,
listenToStorageChanges = true,
writeDefaults = true,
mergeDefaults = false,
shallow,
window: window2 = defaultWindow$1,
eventFilter,
onError = (e2) => {
console.error(e2)
},
} = options2
const data2 = (shallow ? shallowRef : ref)(defaults2)
if (!storage2) {
try {
storage2 = getSSRHandler('getDefaultStorage', () => {
var _a22
return (_a22 = defaultWindow$1) == null ? void 0 : _a22.localStorage
})()
} catch (e2) {
onError(e2)
}
}
if (!storage2) return data2
const rawInit = resolveUnref(defaults2)
const type4 = guessSerializerType(rawInit)
const serializer =
(_a2 = options2.serializer) != null ? _a2 : StorageSerializers[type4]
const { pause: pauseWatch, resume: resumeWatch } = watchPausable(
data2,
() => write2(data2.value),
{ flush: flush2, deep, eventFilter }
)
if (window2 && listenToStorageChanges) {
useEventListener(window2, 'storage', update3)
useEventListener(window2, customStorageEventName, updateFromCustomEvent)
}
update3()
return data2
function write2(v4) {
try {
if (v4 == null) {
storage2.removeItem(key2)
} else {
const serialized = serializer.write(v4)
const oldValue = storage2.getItem(key2)
if (oldValue !== serialized) {
storage2.setItem(key2, serialized)
if (window2) {
window2.dispatchEvent(
new CustomEvent(customStorageEventName, {
detail: {
key: key2,
oldValue,
newValue: serialized,
storageArea: storage2,
},
})
)
}
}
}
} catch (e2) {
onError(e2)
}
}
function read2(event) {
const rawValue = event ? event.newValue : storage2.getItem(key2)
if (rawValue == null) {
if (writeDefaults && rawInit !== null)
storage2.setItem(key2, serializer.write(rawInit))
return rawInit
} else if (!event && mergeDefaults) {
const value2 = serializer.read(rawValue)
if (isFunction$k(mergeDefaults)) return mergeDefaults(value2, rawInit)
else if (type4 === 'object' && !Array.isArray(value2))
return __spreadValues$k(__spreadValues$k({}, rawInit), value2)
return value2
} else if (typeof rawValue !== 'string') {
return rawValue
} else {
return serializer.read(rawValue)
}
}
function updateFromCustomEvent(event) {
update3(event.detail)
}
function update3(event) {
if (event && event.storageArea !== storage2) return
if (event && event.key == null) {
data2.value = rawInit
return
}
if (event && event.key !== key2) return
pauseWatch()
try {
data2.value = read2(event)
} catch (e2) {
onError(e2)
} finally {
if (event) nextTick(resumeWatch)
else resumeWatch()
}
}
}
function usePreferredDark(options2) {
return useMediaQuery('(prefers-color-scheme: dark)', options2)
}
var __defProp$j = Object.defineProperty
var __getOwnPropSymbols$l = Object.getOwnPropertySymbols
var __hasOwnProp$l = Object.prototype.hasOwnProperty
var __propIsEnum$l = Object.prototype.propertyIsEnumerable
var __defNormalProp$j = (obj, key2, value2) =>
key2 in obj
? __defProp$j(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$j = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$l.call(b2, prop)) __defNormalProp$j(a2, prop, b2[prop])
if (__getOwnPropSymbols$l)
for (var prop of __getOwnPropSymbols$l(b2)) {
if (__propIsEnum$l.call(b2, prop)) __defNormalProp$j(a2, prop, b2[prop])
}
return a2
}
function useColorMode(options2 = {}) {
const {
selector: selector2 = 'html',
attribute = 'class',
initialValue = 'auto',
window: window2 = defaultWindow$1,
storage: storage2,
storageKey = 'vueuse-color-scheme',
listenToStorageChanges = true,
storageRef,
emitAuto,
} = options2
const modes = __spreadValues$j(
{
auto: '',
light: 'light',
dark: 'dark',
},
options2.modes || {}
)
const preferredDark = usePreferredDark({ window: window2 })
const preferredMode = computed(() => (preferredDark.value ? 'dark' : 'light'))
const store2 =
storageRef ||
(storageKey == null
? ref(initialValue)
: useStorage(storageKey, initialValue, storage2, {
window: window2,
listenToStorageChanges,
}))
const state2 = computed({
get() {
return store2.value === 'auto' && !emitAuto
? preferredMode.value
: store2.value
},
set(v4) {
store2.value = v4
},
})
const updateHTMLAttrs = getSSRHandler(
'updateHTMLAttrs',
(selector22, attribute2, value2) => {
const el2 =
window2 == null ? void 0 : window2.document.querySelector(selector22)
if (!el2) return
if (attribute2 === 'class') {
const current2 = value2.split(/\s/g)
Object.values(modes)
.flatMap((i2) => (i2 || '').split(/\s/g))
.filter(Boolean)
.forEach((v4) => {
if (current2.includes(v4)) el2.classList.add(v4)
else el2.classList.remove(v4)
})
} else {
el2.setAttribute(attribute2, value2)
}
}
)
function defaultOnChanged(mode2) {
var _a2
const resolvedMode = mode2 === 'auto' ? preferredMode.value : mode2
updateHTMLAttrs(
selector2,
attribute,
(_a2 = modes[resolvedMode]) != null ? _a2 : resolvedMode
)
}
function onChanged(mode2) {
if (options2.onChanged) options2.onChanged(mode2, defaultOnChanged)
else defaultOnChanged(mode2)
}
watch$1(state2, onChanged, { flush: 'post', immediate: true })
if (emitAuto)
watch$1(preferredMode, () => onChanged(state2.value), { flush: 'post' })
tryOnMounted(() => onChanged(state2.value))
return state2
}
function useConfirmDialog(revealed = ref(false)) {
const confirmHook = createEventHook()
const cancelHook = createEventHook()
const revealHook = createEventHook()
let _resolve = noop$6
const reveal = (data2) => {
revealHook.trigger(data2)
revealed.value = true
return new Promise((resolve2) => {
_resolve = resolve2
})
}
const confirm2 = (data2) => {
revealed.value = false
confirmHook.trigger(data2)
_resolve({ data: data2, isCanceled: false })
}
const cancel2 = (data2) => {
revealed.value = false
cancelHook.trigger(data2)
_resolve({ data: data2, isCanceled: true })
}
return {
isRevealed: computed(() => revealed.value),
reveal,
confirm: confirm2,
cancel: cancel2,
onReveal: revealHook.on,
onConfirm: confirmHook.on,
onCancel: cancelHook.on,
}
}
function useCssVar(
prop,
target2,
{ window: window2 = defaultWindow$1, initialValue = '' } = {}
) {
const variable = ref(initialValue)
const elRef = computed(() => {
var _a2
return (
unrefElement(target2) ||
((_a2 = window2 == null ? void 0 : window2.document) == null
? void 0
: _a2.documentElement)
)
})
watch$1(
[elRef, () => resolveUnref(prop)],
([el2, prop2]) => {
var _a2
if (el2 && window2) {
const value2 =
(_a2 = window2.getComputedStyle(el2).getPropertyValue(prop2)) == null
? void 0
: _a2.trim()
variable.value = value2 || initialValue
}
},
{ immediate: true }
)
watch$1(variable, (val2) => {
var _a2
if ((_a2 = elRef.value) == null ? void 0 : _a2.style)
elRef.value.style.setProperty(resolveUnref(prop), val2)
})
return variable
}
function useCurrentElement() {
const vm = getCurrentInstance()
const currentElement = computedWithControl(
() => null,
() => vm.proxy.$el
)
onUpdated(currentElement.trigger)
onMounted(currentElement.trigger)
return currentElement
}
function useCycleList(list2, options2) {
var _a2
const state2 = shallowRef(
(_a2 = options2 == null ? void 0 : options2.initialValue) != null
? _a2
: list2[0]
)
const index2 = computed({
get() {
var _a22
let index22 = (options2 == null ? void 0 : options2.getIndexOf)
? options2.getIndexOf(state2.value, list2)
: list2.indexOf(state2.value)
if (index22 < 0)
index22 =
(_a22 = options2 == null ? void 0 : options2.fallbackIndex) != null
? _a22
: 0
return index22
},
set(v4) {
set2(v4)
},
})
function set2(i2) {
const length2 = list2.length
const index22 = ((i2 % length2) + length2) % length2
const value2 = list2[index22]
state2.value = value2
return value2
}
function shift(delta = 1) {
return set2(index2.value + delta)
}
function next(n2 = 1) {
return shift(n2)
}
function prev(n2 = 1) {
return shift(-n2)
}
return {
state: state2,
index: index2,
next,
prev,
}
}
var __defProp$i = Object.defineProperty
var __defProps$7 = Object.defineProperties
var __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors
var __getOwnPropSymbols$k = Object.getOwnPropertySymbols
var __hasOwnProp$k = Object.prototype.hasOwnProperty
var __propIsEnum$k = Object.prototype.propertyIsEnumerable
var __defNormalProp$i = (obj, key2, value2) =>
key2 in obj
? __defProp$i(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$i = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$k.call(b2, prop)) __defNormalProp$i(a2, prop, b2[prop])
if (__getOwnPropSymbols$k)
for (var prop of __getOwnPropSymbols$k(b2)) {
if (__propIsEnum$k.call(b2, prop)) __defNormalProp$i(a2, prop, b2[prop])
}
return a2
}
var __spreadProps$7 = (a2, b2) => __defProps$7(a2, __getOwnPropDescs$7(b2))
function useDark(options2 = {}) {
const {
valueDark = 'dark',
valueLight = '',
window: window2 = defaultWindow$1,
} = options2
const mode2 = useColorMode(
__spreadProps$7(__spreadValues$i({}, options2), {
onChanged: (mode22, defaultHandler) => {
var _a2
if (options2.onChanged)
(_a2 = options2.onChanged) == null
? void 0
: _a2.call(options2, mode22 === 'dark')
else defaultHandler(mode22)
},
modes: {
dark: valueDark,
light: valueLight,
},
})
)
const preferredDark = usePreferredDark({ window: window2 })
const isDark = computed({
get() {
return mode2.value === 'dark'
},
set(v4) {
if (v4 === preferredDark.value) mode2.value = 'auto'
else mode2.value = v4 ? 'dark' : 'light'
},
})
return isDark
}
const fnBypass = (v4) => v4
const fnSetSource = (source2, value2) => (source2.value = value2)
function defaultDump(clone2) {
return clone2 ? (isFunction$k(clone2) ? clone2 : cloneFnJSON) : fnBypass
}
function defaultParse(clone2) {
return clone2 ? (isFunction$k(clone2) ? clone2 : cloneFnJSON) : fnBypass
}
function useManualRefHistory(source2, options2 = {}) {
const {
clone: clone2 = false,
dump = defaultDump(clone2),
parse: parse2 = defaultParse(clone2),
setSource = fnSetSource,
} = options2
function _createHistoryRecord() {
return markRaw({
snapshot: dump(source2.value),
timestamp: timestamp$2(),
})
}
const last2 = ref(_createHistoryRecord())
const undoStack = ref([])
const redoStack = ref([])
const _setSource = (record) => {
setSource(source2, parse2(record.snapshot))
last2.value = record
}
const commit2 = () => {
undoStack.value.unshift(last2.value)
last2.value = _createHistoryRecord()
if (options2.capacity && undoStack.value.length > options2.capacity)
undoStack.value.splice(options2.capacity, Infinity)
if (redoStack.value.length)
redoStack.value.splice(0, redoStack.value.length)
}
const clear2 = () => {
undoStack.value.splice(0, undoStack.value.length)
redoStack.value.splice(0, redoStack.value.length)
}
const undo2 = () => {
const state2 = undoStack.value.shift()
if (state2) {
redoStack.value.unshift(last2.value)
_setSource(state2)
}
}
const redo2 = () => {
const state2 = redoStack.value.shift()
if (state2) {
undoStack.value.unshift(last2.value)
_setSource(state2)
}
}
const reset2 = () => {
_setSource(last2.value)
}
const history2 = computed(() => [last2.value, ...undoStack.value])
const canUndo2 = computed(() => undoStack.value.length > 0)
const canRedo2 = computed(() => redoStack.value.length > 0)
return {
source: source2,
undoStack,
redoStack,
last: last2,
history: history2,
canUndo: canUndo2,
canRedo: canRedo2,
clear: clear2,
commit: commit2,
reset: reset2,
undo: undo2,
redo: redo2,
}
}
var __defProp$h = Object.defineProperty
var __defProps$6 = Object.defineProperties
var __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors
var __getOwnPropSymbols$j = Object.getOwnPropertySymbols
var __hasOwnProp$j = Object.prototype.hasOwnProperty
var __propIsEnum$j = Object.prototype.propertyIsEnumerable
var __defNormalProp$h = (obj, key2, value2) =>
key2 in obj
? __defProp$h(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$h = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$j.call(b2, prop)) __defNormalProp$h(a2, prop, b2[prop])
if (__getOwnPropSymbols$j)
for (var prop of __getOwnPropSymbols$j(b2)) {
if (__propIsEnum$j.call(b2, prop)) __defNormalProp$h(a2, prop, b2[prop])
}
return a2
}
var __spreadProps$6 = (a2, b2) => __defProps$6(a2, __getOwnPropDescs$6(b2))
function useRefHistory(source2, options2 = {}) {
const { deep = false, flush: flush2 = 'pre', eventFilter } = options2
const {
eventFilter: composedFilter,
pause,
resume: resumeTracking,
isActive: isTracking,
} = pausableFilter(eventFilter)
const {
ignoreUpdates,
ignorePrevAsyncUpdates,
stop: stop2,
} = watchIgnorable(source2, commit2, {
deep,
flush: flush2,
eventFilter: composedFilter,
})
function setSource(source22, value2) {
ignorePrevAsyncUpdates()
ignoreUpdates(() => {
source22.value = value2
})
}
const manualHistory = useManualRefHistory(
source2,
__spreadProps$6(__spreadValues$h({}, options2), {
clone: options2.clone || deep,
setSource,
})
)
const { clear: clear2, commit: manualCommit } = manualHistory
function commit2() {
ignorePrevAsyncUpdates()
manualCommit()
}
function resume(commitNow) {
resumeTracking()
if (commitNow) commit2()
}
function batch(fn2) {
let canceled = false
const cancel2 = () => (canceled = true)
ignoreUpdates(() => {
fn2(cancel2)
})
if (!canceled) commit2()
}
function dispose2() {
stop2()
clear2()
}
return __spreadProps$6(__spreadValues$h({}, manualHistory), {
isTracking,
pause,
resume,
commit: commit2,
batch,
dispose: dispose2,
})
}
var __defProp$g = Object.defineProperty
var __defProps$5 = Object.defineProperties
var __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors
var __getOwnPropSymbols$i = Object.getOwnPropertySymbols
var __hasOwnProp$i = Object.prototype.hasOwnProperty
var __propIsEnum$i = Object.prototype.propertyIsEnumerable
var __defNormalProp$g = (obj, key2, value2) =>
key2 in obj
? __defProp$g(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$g = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$i.call(b2, prop)) __defNormalProp$g(a2, prop, b2[prop])
if (__getOwnPropSymbols$i)
for (var prop of __getOwnPropSymbols$i(b2)) {
if (__propIsEnum$i.call(b2, prop)) __defNormalProp$g(a2, prop, b2[prop])
}
return a2
}
var __spreadProps$5 = (a2, b2) => __defProps$5(a2, __getOwnPropDescs$5(b2))
function useDebouncedRefHistory(source2, options2 = {}) {
const filter2 = options2.debounce ? debounceFilter(options2.debounce) : void 0
const history2 = useRefHistory(
source2,
__spreadProps$5(__spreadValues$g({}, options2), { eventFilter: filter2 })
)
return __spreadValues$g({}, history2)
}
function useDeviceMotion(options2 = {}) {
const { window: window2 = defaultWindow$1, eventFilter = bypassFilter } =
options2
const acceleration = ref({ x: null, y: null, z: null })
const rotationRate = ref({ alpha: null, beta: null, gamma: null })
const interval = ref(0)
const accelerationIncludingGravity = ref({
x: null,
y: null,
z: null,
})
if (window2) {
const onDeviceMotion = createFilterWrapper(eventFilter, (event) => {
acceleration.value = event.acceleration
accelerationIncludingGravity.value = event.accelerationIncludingGravity
rotationRate.value = event.rotationRate
interval.value = event.interval
})
useEventListener(window2, 'devicemotion', onDeviceMotion)
}
return {
acceleration,
accelerationIncludingGravity,
rotationRate,
interval,
}
}
function useDeviceOrientation(options2 = {}) {
const { window: window2 = defaultWindow$1 } = options2
const isSupported = useSupported(
() => window2 && 'DeviceOrientationEvent' in window2
)
const isAbsolute = ref(false)
const alpha = ref(null)
const beta = ref(null)
const gamma = ref(null)
if (window2 && isSupported.value) {
useEventListener(window2, 'deviceorientation', (event) => {
isAbsolute.value = event.absolute
alpha.value = event.alpha
beta.value = event.beta
gamma.value = event.gamma
})
}
return {
isSupported,
isAbsolute,
alpha,
beta,
gamma,
}
}
function useDevicePixelRatio({ window: window2 = defaultWindow$1 } = {}) {
const pixelRatio = ref(1)
if (window2) {
let observe = function () {
pixelRatio.value = window2.devicePixelRatio
cleanup()
media = window2.matchMedia(`(resolution: ${pixelRatio.value}dppx)`)
media.addEventListener('change', observe, { once: true })
},
cleanup = function () {
media == null ? void 0 : media.removeEventListener('change', observe)
}
let media
observe()
tryOnScopeDispose(cleanup)
}
return { pixelRatio }
}
function usePermission(permissionDesc, options2 = {}) {
const { controls = false, navigator: navigator2 = defaultNavigator } =
options2
const isSupported = useSupported(
() => navigator2 && 'permissions' in navigator2
)
let permissionStatus
const desc =
typeof permissionDesc === 'string'
? { name: permissionDesc }
: permissionDesc
const state2 = ref()
const onChange = () => {
if (permissionStatus) state2.value = permissionStatus.state
}
const query = createSingletonPromise(async () => {
if (!isSupported.value) return
if (!permissionStatus) {
try {
permissionStatus = await navigator2.permissions.query(desc)
useEventListener(permissionStatus, 'change', onChange)
onChange()
} catch (e2) {
state2.value = 'prompt'
}
}
return permissionStatus
})
query()
if (controls) {
return {
state: state2,
isSupported,
query,
}
} else {
return state2
}
}
function useDevicesList(options2 = {}) {
const {
navigator: navigator2 = defaultNavigator,
requestPermissions = false,
constraints = { audio: true, video: true },
onUpdated: onUpdated2,
} = options2
const devices = ref([])
const videoInputs = computed(() =>
devices.value.filter((i2) => i2.kind === 'videoinput')
)
const audioInputs = computed(() =>
devices.value.filter((i2) => i2.kind === 'audioinput')
)
const audioOutputs = computed(() =>
devices.value.filter((i2) => i2.kind === 'audiooutput')
)
const isSupported = useSupported(
() =>
navigator2 &&
navigator2.mediaDevices &&
navigator2.mediaDevices.enumerateDevices
)
const permissionGranted = ref(false)
async function update3() {
if (!isSupported.value) return
devices.value = await navigator2.mediaDevices.enumerateDevices()
onUpdated2 == null ? void 0 : onUpdated2(devices.value)
}
async function ensurePermissions() {
if (!isSupported.value) return false
if (permissionGranted.value) return true
const { state: state2, query } = usePermission('camera', { controls: true })
await query()
if (state2.value !== 'granted') {
const stream = await navigator2.mediaDevices.getUserMedia(constraints)
stream.getTracks().forEach((t3) => t3.stop())
update3()
permissionGranted.value = true
} else {
permissionGranted.value = true
}
return permissionGranted.value
}
if (isSupported.value) {
if (requestPermissions) ensurePermissions()
useEventListener(navigator2.mediaDevices, 'devicechange', update3)
update3()
}
return {
devices,
ensurePermissions,
permissionGranted,
videoInputs,
audioInputs,
audioOutputs,
isSupported,
}
}
function useDisplayMedia(options2 = {}) {
var _a2
const enabled = ref((_a2 = options2.enabled) != null ? _a2 : false)
const video = options2.video
const audio2 = options2.audio
const { navigator: navigator2 = defaultNavigator } = options2
const isSupported = useSupported(() => {
var _a22
return (_a22 = navigator2 == null ? void 0 : navigator2.mediaDevices) ==
null
? void 0
: _a22.getDisplayMedia
})
const constraint = { audio: audio2, video }
const stream = shallowRef()
async function _start() {
if (!isSupported.value || stream.value) return
stream.value = await navigator2.mediaDevices.getDisplayMedia(constraint)
return stream.value
}
async function _stop() {
var _a22
;(_a22 = stream.value) == null
? void 0
: _a22.getTracks().forEach((t3) => t3.stop())
stream.value = void 0
}
function stop2() {
_stop()
enabled.value = false
}
async function start2() {
await _start()
if (stream.value) enabled.value = true
return stream.value
}
watch$1(
enabled,
(v4) => {
if (v4) _start()
else _stop()
},
{ immediate: true }
)
return {
isSupported,
stream,
start: start2,
stop: stop2,
enabled,
}
}
function useDocumentVisibility({ document: document2 = defaultDocument } = {}) {
if (!document2) return ref('visible')
const visibility2 = ref(document2.visibilityState)
useEventListener(document2, 'visibilitychange', () => {
visibility2.value = document2.visibilityState
})
return visibility2
}
var __defProp$f = Object.defineProperty
var __defProps$4 = Object.defineProperties
var __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors
var __getOwnPropSymbols$h = Object.getOwnPropertySymbols
var __hasOwnProp$h = Object.prototype.hasOwnProperty
var __propIsEnum$h = Object.prototype.propertyIsEnumerable
var __defNormalProp$f = (obj, key2, value2) =>
key2 in obj
? __defProp$f(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$f = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$h.call(b2, prop)) __defNormalProp$f(a2, prop, b2[prop])
if (__getOwnPropSymbols$h)
for (var prop of __getOwnPropSymbols$h(b2)) {
if (__propIsEnum$h.call(b2, prop)) __defNormalProp$f(a2, prop, b2[prop])
}
return a2
}
var __spreadProps$4 = (a2, b2) => __defProps$4(a2, __getOwnPropDescs$4(b2))
function useDraggable(target2, options2 = {}) {
var _a2, _b2, _c2
const draggingElement =
(_a2 = options2.draggingElement) != null ? _a2 : defaultWindow$1
const draggingHandle = (_b2 = options2.handle) != null ? _b2 : target2
const position2 = ref(
(_c2 = resolveUnref(options2.initialValue)) != null ? _c2 : { x: 0, y: 0 }
)
const pressedDelta = ref()
const filterEvent = (e2) => {
if (options2.pointerTypes)
return options2.pointerTypes.includes(e2.pointerType)
return true
}
const handleEvent2 = (e2) => {
if (resolveUnref(options2.preventDefault)) e2.preventDefault()
if (resolveUnref(options2.stopPropagation)) e2.stopPropagation()
}
const start2 = (e2) => {
var _a22
if (!filterEvent(e2)) return
if (resolveUnref(options2.exact) && e2.target !== resolveUnref(target2))
return
const rect = resolveUnref(target2).getBoundingClientRect()
const pos = {
x: e2.clientX - rect.left,
y: e2.clientY - rect.top,
}
if (
((_a22 = options2.onStart) == null
? void 0
: _a22.call(options2, pos, e2)) === false
)
return
pressedDelta.value = pos
handleEvent2(e2)
}
const move = (e2) => {
var _a22
if (!filterEvent(e2)) return
if (!pressedDelta.value) return
position2.value = {
x: e2.clientX - pressedDelta.value.x,
y: e2.clientY - pressedDelta.value.y,
}
;(_a22 = options2.onMove) == null
? void 0
: _a22.call(options2, position2.value, e2)
handleEvent2(e2)
}
const end2 = (e2) => {
var _a22
if (!filterEvent(e2)) return
if (!pressedDelta.value) return
pressedDelta.value = void 0
;(_a22 = options2.onEnd) == null
? void 0
: _a22.call(options2, position2.value, e2)
handleEvent2(e2)
}
if (isClient) {
useEventListener(draggingHandle, 'pointerdown', start2, true)
useEventListener(draggingElement, 'pointermove', move, true)
useEventListener(draggingElement, 'pointerup', end2, true)
}
return __spreadProps$4(__spreadValues$f({}, toRefs(position2)), {
position: position2,
isDragging: computed(() => !!pressedDelta.value),
style: computed(
() => `left:${position2.value.x}px;top:${position2.value.y}px;`
),
})
}
function useDropZone(target2, onDrop) {
const isOverDropZone = ref(false)
let counter2 = 0
if (isClient) {
useEventListener(target2, 'dragenter', (event) => {
event.preventDefault()
counter2 += 1
isOverDropZone.value = true
})
useEventListener(target2, 'dragover', (event) => {
event.preventDefault()
})
useEventListener(target2, 'dragleave', (event) => {
event.preventDefault()
counter2 -= 1
if (counter2 === 0) isOverDropZone.value = false
})
useEventListener(target2, 'drop', (event) => {
var _a2, _b2
event.preventDefault()
counter2 = 0
isOverDropZone.value = false
const files2 = Array.from(
(_b2 = (_a2 = event.dataTransfer) == null ? void 0 : _a2.files) != null
? _b2
: []
)
onDrop == null ? void 0 : onDrop(files2.length === 0 ? null : files2)
})
}
return {
isOverDropZone,
}
}
var __getOwnPropSymbols$g = Object.getOwnPropertySymbols
var __hasOwnProp$g = Object.prototype.hasOwnProperty
var __propIsEnum$g = Object.prototype.propertyIsEnumerable
var __objRest$2 = (source2, exclude) => {
var target2 = {}
for (var prop in source2)
if (__hasOwnProp$g.call(source2, prop) && exclude.indexOf(prop) < 0)
target2[prop] = source2[prop]
if (source2 != null && __getOwnPropSymbols$g)
for (var prop of __getOwnPropSymbols$g(source2)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum$g.call(source2, prop))
target2[prop] = source2[prop]
}
return target2
}
function useResizeObserver(target2, callback, options2 = {}) {
const _a2 = options2,
{ window: window2 = defaultWindow$1 } = _a2,
observerOptions = __objRest$2(_a2, ['window'])
let observer
const isSupported = useSupported(() => window2 && 'ResizeObserver' in window2)
const cleanup = () => {
if (observer) {
observer.disconnect()
observer = void 0
}
}
const stopWatch = watch$1(
() => unrefElement(target2),
(el2) => {
cleanup()
if (isSupported.value && window2 && el2) {
observer = new ResizeObserver(callback)
observer.observe(el2, observerOptions)
}
},
{ immediate: true, flush: 'post' }
)
const stop2 = () => {
cleanup()
stopWatch()
}
tryOnScopeDispose(stop2)
return {
isSupported,
stop: stop2,
}
}
function useElementBounding(target2, options2 = {}) {
const {
reset: reset2 = true,
windowResize = true,
windowScroll = true,
immediate = true,
} = options2
const height = ref(0)
const bottom2 = ref(0)
const left2 = ref(0)
const right2 = ref(0)
const top2 = ref(0)
const width = ref(0)
const x2 = ref(0)
const y2 = ref(0)
function update3() {
const el2 = unrefElement(target2)
if (!el2) {
if (reset2) {
height.value = 0
bottom2.value = 0
left2.value = 0
right2.value = 0
top2.value = 0
width.value = 0
x2.value = 0
y2.value = 0
}
return
}
const rect = el2.getBoundingClientRect()
height.value = rect.height
bottom2.value = rect.bottom
left2.value = rect.left
right2.value = rect.right
top2.value = rect.top
width.value = rect.width
x2.value = rect.x
y2.value = rect.y
}
useResizeObserver(target2, update3)
watch$1(
() => unrefElement(target2),
(ele) => !ele && update3()
)
if (windowScroll)
useEventListener('scroll', update3, { capture: true, passive: true })
if (windowResize) useEventListener('resize', update3, { passive: true })
tryOnMounted(() => {
if (immediate) update3()
})
return {
height,
bottom: bottom2,
left: left2,
right: right2,
top: top2,
width,
x: x2,
y: y2,
update: update3,
}
}
function useRafFn(fn2, options2 = {}) {
const { immediate = true, window: window2 = defaultWindow$1 } = options2
const isActive = ref(false)
let previousFrameTimestamp = 0
let rafId = null
function loop(timestamp2) {
if (!isActive.value || !window2) return
const delta = timestamp2 - previousFrameTimestamp
fn2({ delta, timestamp: timestamp2 })
previousFrameTimestamp = timestamp2
rafId = window2.requestAnimationFrame(loop)
}
function resume() {
if (!isActive.value && window2) {
isActive.value = true
rafId = window2.requestAnimationFrame(loop)
}
}
function pause() {
isActive.value = false
if (rafId != null && window2) {
window2.cancelAnimationFrame(rafId)
rafId = null
}
}
if (immediate) resume()
tryOnScopeDispose(pause)
return {
isActive: readonly(isActive),
pause,
resume,
}
}
var __defProp$e = Object.defineProperty
var __getOwnPropSymbols$f = Object.getOwnPropertySymbols
var __hasOwnProp$f = Object.prototype.hasOwnProperty
var __propIsEnum$f = Object.prototype.propertyIsEnumerable
var __defNormalProp$e = (obj, key2, value2) =>
key2 in obj
? __defProp$e(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$e = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$f.call(b2, prop)) __defNormalProp$e(a2, prop, b2[prop])
if (__getOwnPropSymbols$f)
for (var prop of __getOwnPropSymbols$f(b2)) {
if (__propIsEnum$f.call(b2, prop)) __defNormalProp$e(a2, prop, b2[prop])
}
return a2
}
function useElementByPoint(options2) {
const element = ref(null)
const { x: x2, y: y2, document: document2 = defaultDocument } = options2
const controls = useRafFn(() => {
element.value =
(document2 == null
? void 0
: document2.elementFromPoint(resolveUnref(x2), resolveUnref(y2))) ||
null
})
return __spreadValues$e(
{
element,
},
controls
)
}
function useElementHover(el2, options2 = {}) {
const delayEnter = options2 ? options2.delayEnter : 0
const delayLeave = options2 ? options2.delayLeave : 0
const isHovered = ref(false)
let timer2
const toggle2 = (entering) => {
const delay2 = entering ? delayEnter : delayLeave
if (timer2) {
clearTimeout(timer2)
timer2 = void 0
}
if (delay2) timer2 = setTimeout(() => (isHovered.value = entering), delay2)
else isHovered.value = entering
}
if (!window) return isHovered
useEventListener(el2, 'mouseenter', () => toggle2(true), { passive: true })
useEventListener(el2, 'mouseleave', () => toggle2(false), { passive: true })
return isHovered
}
function useElementSize(
target2,
initialSize = { width: 0, height: 0 },
options2 = {}
) {
const { window: window2 = defaultWindow$1, box: box2 = 'content-box' } =
options2
const isSVG2 = computed(() => {
var _a2, _b2
return (_b2 =
(_a2 = unrefElement(target2)) == null ? void 0 : _a2.namespaceURI) == null
? void 0
: _b2.includes('svg')
})
const width = ref(initialSize.width)
const height = ref(initialSize.height)
useResizeObserver(
target2,
([entry]) => {
const boxSize =
box2 === 'border-box'
? entry.borderBoxSize
: box2 === 'content-box'
? entry.contentBoxSize
: entry.devicePixelContentBoxSize
if (window2 && isSVG2.value) {
const $elem = unrefElement(target2)
if ($elem) {
const styles = window2.getComputedStyle($elem)
width.value = parseFloat(styles.width)
height.value = parseFloat(styles.height)
}
} else {
if (boxSize) {
const formatBoxSize = Array.isArray(boxSize) ? boxSize : [boxSize]
width.value = formatBoxSize.reduce(
(acc, { inlineSize }) => acc + inlineSize,
0
)
height.value = formatBoxSize.reduce(
(acc, { blockSize }) => acc + blockSize,
0
)
} else {
width.value = entry.contentRect.width
height.value = entry.contentRect.height
}
}
},
options2
)
watch$1(
() => unrefElement(target2),
(ele) => {
width.value = ele ? initialSize.width : 0
height.value = ele ? initialSize.height : 0
}
)
return {
width,
height,
}
}
function useElementVisibility(
element,
{ window: window2 = defaultWindow$1, scrollTarget } = {}
) {
const elementIsVisible = ref(false)
const testBounding = () => {
if (!window2) return
const document2 = window2.document
const el2 = unrefElement(element)
if (!el2) {
elementIsVisible.value = false
} else {
const rect = el2.getBoundingClientRect()
elementIsVisible.value =
rect.top <=
(window2.innerHeight || document2.documentElement.clientHeight) &&
rect.left <=
(window2.innerWidth || document2.documentElement.clientWidth) &&
rect.bottom >= 0 &&
rect.right >= 0
}
}
watch$1(
() => unrefElement(element),
() => testBounding(),
{ immediate: true, flush: 'post' }
)
if (window2) {
useEventListener(scrollTarget || window2, 'scroll', testBounding, {
capture: false,
passive: true,
})
}
return elementIsVisible
}
const events = /* @__PURE__ */ new Map()
function useEventBus(key2) {
const scope = getCurrentScope()
function on2(listener) {
var _a2
const listeners = events.get(key2) || []
listeners.push(listener)
events.set(key2, listeners)
const _off = () => off2(listener)
;(_a2 = scope == null ? void 0 : scope.cleanups) == null
? void 0
: _a2.push(_off)
return _off
}
function once2(listener) {
function _listener(...args) {
off2(_listener)
listener(...args)
}
return on2(_listener)
}
function off2(listener) {
const listeners = events.get(key2)
if (!listeners) return
const index2 = listeners.indexOf(listener)
if (index2 > -1) listeners.splice(index2, 1)
if (!listeners.length) events.delete(key2)
}
function reset2() {
events.delete(key2)
}
function emit2(event, payload) {
var _a2
;(_a2 = events.get(key2)) == null
? void 0
: _a2.forEach((v4) => v4(event, payload))
}
return { on: on2, once: once2, off: off2, emit: emit2, reset: reset2 }
}
function useEventSource(url2, events2 = [], options2 = {}) {
const event = ref(null)
const data2 = ref(null)
const status = ref('CONNECTING')
const eventSource = ref(null)
const error2 = ref(null)
const { withCredentials = false } = options2
const close2 = () => {
if (eventSource.value) {
eventSource.value.close()
eventSource.value = null
status.value = 'CLOSED'
}
}
const es2 = new EventSource(url2, { withCredentials })
eventSource.value = es2
es2.onopen = () => {
status.value = 'OPEN'
error2.value = null
}
es2.onerror = (e2) => {
status.value = 'CLOSED'
error2.value = e2
}
es2.onmessage = (e2) => {
event.value = null
data2.value = e2.data
}
for (const event_name of events2) {
useEventListener(es2, event_name, (e2) => {
event.value = event_name
data2.value = e2.data || null
})
}
tryOnScopeDispose(() => {
close2()
})
return {
eventSource,
event,
data: data2,
status,
error: error2,
close: close2,
}
}
function useEyeDropper(options2 = {}) {
const { initialValue = '' } = options2
const isSupported = useSupported(
() => typeof window !== 'undefined' && 'EyeDropper' in window
)
const sRGBHex = ref(initialValue)
async function open2(openOptions) {
if (!isSupported.value) return
const eyeDropper = new window.EyeDropper()
const result = await eyeDropper.open(openOptions)
sRGBHex.value = result.sRGBHex
return result
}
return { isSupported, sRGBHex, open: open2 }
}
function useFavicon(newIcon = null, options2 = {}) {
const {
baseUrl = '',
rel = 'icon',
document: document2 = defaultDocument,
} = options2
const favicon = resolveRef(newIcon)
const applyIcon = (icon) => {
document2 == null
? void 0
: document2.head
.querySelectorAll(`link[rel*="${rel}"]`)
.forEach((el2) => (el2.href = `${baseUrl}${icon}`))
}
watch$1(
favicon,
(i2, o2) => {
if (isString$e(i2) && i2 !== o2) applyIcon(i2)
},
{ immediate: true }
)
return favicon
}
var __defProp$d = Object.defineProperty
var __defProps$3 = Object.defineProperties
var __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors
var __getOwnPropSymbols$e = Object.getOwnPropertySymbols
var __hasOwnProp$e = Object.prototype.hasOwnProperty
var __propIsEnum$e = Object.prototype.propertyIsEnumerable
var __defNormalProp$d = (obj, key2, value2) =>
key2 in obj
? __defProp$d(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$d = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$e.call(b2, prop)) __defNormalProp$d(a2, prop, b2[prop])
if (__getOwnPropSymbols$e)
for (var prop of __getOwnPropSymbols$e(b2)) {
if (__propIsEnum$e.call(b2, prop)) __defNormalProp$d(a2, prop, b2[prop])
}
return a2
}
var __spreadProps$3 = (a2, b2) => __defProps$3(a2, __getOwnPropDescs$3(b2))
const payloadMapping = {
json: 'application/json',
text: 'text/plain',
}
function isFetchOptions(obj) {
return (
obj &&
containsProp(
obj,
'immediate',
'refetch',
'initialData',
'timeout',
'beforeFetch',
'afterFetch',
'onFetchError',
'fetch'
)
)
}
function isAbsoluteURL$2(url2) {
return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url2)
}
function headersToObject(headers) {
if (typeof Headers !== 'undefined' && headers instanceof Headers)
return Object.fromEntries([...headers.entries()])
return headers
}
function combineCallbacks(combination2, ...callbacks) {
if (combination2 === 'overwrite') {
return async (ctx) => {
const callback = callbacks[callbacks.length - 1]
if (callback !== void 0) await callback(ctx)
return ctx
}
} else {
return async (ctx) => {
await callbacks.reduce(
(prevCallback, callback) =>
prevCallback.then(async () => {
if (callback)
ctx = __spreadValues$d(
__spreadValues$d({}, ctx),
await callback(ctx)
)
}),
Promise.resolve()
)
return ctx
}
}
}
function createFetch(config2 = {}) {
const _combination = config2.combination || 'chain'
const _options = config2.options || {}
const _fetchOptions = config2.fetchOptions || {}
function useFactoryFetch(url2, ...args) {
const computedUrl = computed(() => {
const baseUrl = resolveUnref(config2.baseUrl)
const targetUrl = resolveUnref(url2)
return baseUrl && !isAbsoluteURL$2(targetUrl)
? joinPaths(baseUrl, targetUrl)
: targetUrl
})
let options2 = _options
let fetchOptions = _fetchOptions
if (args.length > 0) {
if (isFetchOptions(args[0])) {
options2 = __spreadProps$3(
__spreadValues$d(__spreadValues$d({}, options2), args[0]),
{
beforeFetch: combineCallbacks(
_combination,
_options.beforeFetch,
args[0].beforeFetch
),
afterFetch: combineCallbacks(
_combination,
_options.afterFetch,
args[0].afterFetch
),
onFetchError: combineCallbacks(
_combination,
_options.onFetchError,
args[0].onFetchError
),
}
)
} else {
fetchOptions = __spreadProps$3(
__spreadValues$d(__spreadValues$d({}, fetchOptions), args[0]),
{
headers: __spreadValues$d(
__spreadValues$d({}, headersToObject(fetchOptions.headers) || {}),
headersToObject(args[0].headers) || {}
),
}
)
}
}
if (args.length > 1 && isFetchOptions(args[1])) {
options2 = __spreadProps$3(
__spreadValues$d(__spreadValues$d({}, options2), args[1]),
{
beforeFetch: combineCallbacks(
_combination,
_options.beforeFetch,
args[1].beforeFetch
),
afterFetch: combineCallbacks(
_combination,
_options.afterFetch,
args[1].afterFetch
),
onFetchError: combineCallbacks(
_combination,
_options.onFetchError,
args[1].onFetchError
),
}
)
}
return useFetch(computedUrl, fetchOptions, options2)
}
return useFactoryFetch
}
function useFetch(url2, ...args) {
var _a2
const supportsAbort = typeof AbortController === 'function'
let fetchOptions = {}
let options2 = { immediate: true, refetch: false, timeout: 0 }
const config2 = {
method: 'GET',
type: 'text',
payload: void 0,
}
if (args.length > 0) {
if (isFetchOptions(args[0]))
options2 = __spreadValues$d(__spreadValues$d({}, options2), args[0])
else fetchOptions = args[0]
}
if (args.length > 1) {
if (isFetchOptions(args[1]))
options2 = __spreadValues$d(__spreadValues$d({}, options2), args[1])
}
const {
fetch: fetch2 = (_a2 = defaultWindow$1) == null ? void 0 : _a2.fetch,
initialData,
timeout,
} = options2
const responseEvent = createEventHook()
const errorEvent = createEventHook()
const finallyEvent = createEventHook()
const isFinished = ref(false)
const isFetching = ref(false)
const aborted = ref(false)
const statusCode = ref(null)
const response = shallowRef(null)
const error2 = shallowRef(null)
const data2 = shallowRef(initialData)
const canAbort = computed(() => supportsAbort && isFetching.value)
let controller
let timer2
const abort = () => {
if (supportsAbort && controller) {
controller.abort()
controller = void 0
}
}
const loading2 = (isLoading) => {
isFetching.value = isLoading
isFinished.value = !isLoading
}
if (timeout) timer2 = useTimeoutFn(abort, timeout, { immediate: false })
const execute = async (throwOnFailed = false) => {
var _a22
loading2(true)
error2.value = null
statusCode.value = null
aborted.value = false
if (supportsAbort) {
abort()
controller = new AbortController()
controller.signal.onabort = () => (aborted.value = true)
fetchOptions = __spreadProps$3(__spreadValues$d({}, fetchOptions), {
signal: controller.signal,
})
}
const defaultFetchOptions = {
method: config2.method,
headers: {},
}
if (config2.payload) {
const headers = headersToObject(defaultFetchOptions.headers)
if (config2.payloadType)
headers['Content-Type'] =
(_a22 = payloadMapping[config2.payloadType]) != null
? _a22
: config2.payloadType
const payload = resolveUnref(config2.payload)
defaultFetchOptions.body =
config2.payloadType === 'json' ? JSON.stringify(payload) : payload
}
let isCanceled = false
const context2 = {
url: resolveUnref(url2),
options: __spreadValues$d(
__spreadValues$d({}, defaultFetchOptions),
fetchOptions
),
cancel: () => {
isCanceled = true
},
}
if (options2.beforeFetch)
Object.assign(context2, await options2.beforeFetch(context2))
if (isCanceled || !fetch2) {
loading2(false)
return Promise.resolve(null)
}
let responseData = null
if (timer2) timer2.start()
return new Promise((resolve2, reject2) => {
var _a3
fetch2(
context2.url,
__spreadProps$3(
__spreadValues$d(
__spreadValues$d({}, defaultFetchOptions),
context2.options
),
{
headers: __spreadValues$d(
__spreadValues$d(
{},
headersToObject(defaultFetchOptions.headers)
),
headersToObject(
(_a3 = context2.options) == null ? void 0 : _a3.headers
)
),
}
)
)
.then(async (fetchResponse) => {
response.value = fetchResponse
statusCode.value = fetchResponse.status
responseData = await fetchResponse[config2.type]()
if (
options2.afterFetch &&
statusCode.value >= 200 &&
statusCode.value < 300
)
({ data: responseData } = await options2.afterFetch({
data: responseData,
response: fetchResponse,
}))
data2.value = responseData
if (!fetchResponse.ok) throw new Error(fetchResponse.statusText)
responseEvent.trigger(fetchResponse)
return resolve2(fetchResponse)
})
.catch(async (fetchError) => {
let errorData = fetchError.message || fetchError.name
if (options2.onFetchError)
({ data: responseData, error: errorData } =
await options2.onFetchError({
data: responseData,
error: fetchError,
response: response.value,
}))
data2.value = responseData
error2.value = errorData
errorEvent.trigger(fetchError)
if (throwOnFailed) return reject2(fetchError)
return resolve2(null)
})
.finally(() => {
loading2(false)
if (timer2) timer2.stop()
finallyEvent.trigger(null)
})
})
}
const refetch = resolveRef(options2.refetch)
watch$1([refetch, resolveRef(url2)], ([refetch2]) => refetch2 && execute(), {
deep: true,
})
const shell = {
isFinished,
statusCode,
response,
error: error2,
data: data2,
isFetching,
canAbort,
aborted,
abort,
execute,
onFetchResponse: responseEvent.on,
onFetchError: errorEvent.on,
onFetchFinally: finallyEvent.on,
get: setMethod('GET'),
put: setMethod('PUT'),
post: setMethod('POST'),
delete: setMethod('DELETE'),
patch: setMethod('PATCH'),
head: setMethod('HEAD'),
options: setMethod('OPTIONS'),
json: setType('json'),
text: setType('text'),
blob: setType('blob'),
arrayBuffer: setType('arrayBuffer'),
formData: setType('formData'),
}
function setMethod(method4) {
return (payload, payloadType) => {
if (!isFetching.value) {
config2.method = method4
config2.payload = payload
config2.payloadType = payloadType
if (isRef(config2.payload)) {
watch$1(
[refetch, resolveRef(config2.payload)],
([refetch2]) => refetch2 && execute(),
{ deep: true }
)
}
const rawPayload = resolveUnref(config2.payload)
if (
!payloadType &&
rawPayload &&
Object.getPrototypeOf(rawPayload) === Object.prototype &&
!(rawPayload instanceof FormData)
)
config2.payloadType = 'json'
return __spreadProps$3(__spreadValues$d({}, shell), {
then(onFulfilled, onRejected) {
return waitUntilFinished().then(onFulfilled, onRejected)
},
})
}
return void 0
}
}
function waitUntilFinished() {
return new Promise((resolve2, reject2) => {
until(isFinished)
.toBe(true)
.then(() => resolve2(shell))
.catch((error22) => reject2(error22))
})
}
function setType(type4) {
return () => {
if (!isFetching.value) {
config2.type = type4
return __spreadProps$3(__spreadValues$d({}, shell), {
then(onFulfilled, onRejected) {
return waitUntilFinished().then(onFulfilled, onRejected)
},
})
}
return void 0
}
}
if (options2.immediate) setTimeout(execute, 0)
return __spreadProps$3(__spreadValues$d({}, shell), {
then(onFulfilled, onRejected) {
return waitUntilFinished().then(onFulfilled, onRejected)
},
})
}
function joinPaths(start2, end2) {
if (!start2.endsWith('/') && !end2.startsWith('/')) return `${start2}/${end2}`
return `${start2}${end2}`
}
var __defProp$c = Object.defineProperty
var __getOwnPropSymbols$d = Object.getOwnPropertySymbols
var __hasOwnProp$d = Object.prototype.hasOwnProperty
var __propIsEnum$d = Object.prototype.propertyIsEnumerable
var __defNormalProp$c = (obj, key2, value2) =>
key2 in obj
? __defProp$c(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$c = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$d.call(b2, prop)) __defNormalProp$c(a2, prop, b2[prop])
if (__getOwnPropSymbols$d)
for (var prop of __getOwnPropSymbols$d(b2)) {
if (__propIsEnum$d.call(b2, prop)) __defNormalProp$c(a2, prop, b2[prop])
}
return a2
}
const DEFAULT_OPTIONS = {
multiple: true,
accept: '*',
}
function useFileDialog(options2 = {}) {
const { document: document2 = defaultDocument } = options2
const files2 = ref(null)
let input
if (document2) {
input = document2.createElement('input')
input.type = 'file'
input.onchange = (event) => {
const result = event.target
files2.value = result.files
}
}
const open2 = (localOptions) => {
if (!input) return
const _options = __spreadValues$c(
__spreadValues$c(__spreadValues$c({}, DEFAULT_OPTIONS), options2),
localOptions
)
input.multiple = _options.multiple
input.accept = _options.accept
if (hasOwn$d(_options, 'capture')) input.capture = _options.capture
input.click()
}
const reset2 = () => {
files2.value = null
if (input) input.value = ''
}
return {
files: readonly(files2),
open: open2,
reset: reset2,
}
}
var __defProp$b = Object.defineProperty
var __getOwnPropSymbols$c = Object.getOwnPropertySymbols
var __hasOwnProp$c = Object.prototype.hasOwnProperty
var __propIsEnum$c = Object.prototype.propertyIsEnumerable
var __defNormalProp$b = (obj, key2, value2) =>
key2 in obj
? __defProp$b(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$b = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$c.call(b2, prop)) __defNormalProp$b(a2, prop, b2[prop])
if (__getOwnPropSymbols$c)
for (var prop of __getOwnPropSymbols$c(b2)) {
if (__propIsEnum$c.call(b2, prop)) __defNormalProp$b(a2, prop, b2[prop])
}
return a2
}
function useFileSystemAccess(options2 = {}) {
const { window: _window = defaultWindow$1, dataType: dataType2 = 'Text' } =
unref(options2)
const window2 = _window
const isSupported = useSupported(
() =>
window2 &&
'showSaveFilePicker' in window2 &&
'showOpenFilePicker' in window2
)
const fileHandle = ref()
const data2 = ref()
const file2 = ref()
const fileName = computed(() => {
var _a2, _b2
return (_b2 = (_a2 = file2.value) == null ? void 0 : _a2.name) != null
? _b2
: ''
})
const fileMIME = computed(() => {
var _a2, _b2
return (_b2 = (_a2 = file2.value) == null ? void 0 : _a2.type) != null
? _b2
: ''
})
const fileSize = computed(() => {
var _a2, _b2
return (_b2 = (_a2 = file2.value) == null ? void 0 : _a2.size) != null
? _b2
: 0
})
const fileLastModified = computed(() => {
var _a2, _b2
return (_b2 = (_a2 = file2.value) == null ? void 0 : _a2.lastModified) !=
null
? _b2
: 0
})
async function open2(_options = {}) {
if (!isSupported.value) return
const [handle] = await window2.showOpenFilePicker(
__spreadValues$b(__spreadValues$b({}, unref(options2)), _options)
)
fileHandle.value = handle
await updateFile()
await updateData()
}
async function create3(_options = {}) {
if (!isSupported.value) return
fileHandle.value = await window2.showSaveFilePicker(
__spreadValues$b(__spreadValues$b({}, unref(options2)), _options)
)
data2.value = void 0
await updateFile()
await updateData()
}
async function save3(_options = {}) {
if (!isSupported.value) return
if (!fileHandle.value) return saveAs(_options)
if (data2.value) {
const writableStream = await fileHandle.value.createWritable()
await writableStream.write(data2.value)
await writableStream.close()
}
await updateFile()
}
async function saveAs(_options = {}) {
if (!isSupported.value) return
fileHandle.value = await window2.showSaveFilePicker(
__spreadValues$b(__spreadValues$b({}, unref(options2)), _options)
)
if (data2.value) {
const writableStream = await fileHandle.value.createWritable()
await writableStream.write(data2.value)
await writableStream.close()
}
await updateFile()
}
async function updateFile() {
var _a2
file2.value = await ((_a2 = fileHandle.value) == null
? void 0
: _a2.getFile())
}
async function updateData() {
var _a2, _b2
if (unref(dataType2) === 'Text')
data2.value = await ((_a2 = file2.value) == null ? void 0 : _a2.text())
if (unref(dataType2) === 'ArrayBuffer')
data2.value = await ((_b2 = file2.value) == null
? void 0
: _b2.arrayBuffer())
if (unref(dataType2) === 'Blob') data2.value = file2.value
}
watch$1(() => unref(dataType2), updateData)
return {
isSupported,
data: data2,
file: file2,
fileName,
fileMIME,
fileSize,
fileLastModified,
open: open2,
create: create3,
save: save3,
saveAs,
updateData,
}
}
function useFocus(target2, options2 = {}) {
const { initialValue = false } = options2
const innerFocused = ref(false)
const targetElement = computed(() => unrefElement(target2))
useEventListener(targetElement, 'focus', () => (innerFocused.value = true))
useEventListener(targetElement, 'blur', () => (innerFocused.value = false))
const focused = computed({
get: () => innerFocused.value,
set(value2) {
var _a2, _b2
if (!value2 && innerFocused.value)
(_a2 = targetElement.value) == null ? void 0 : _a2.blur()
else if (value2 && !innerFocused.value)
(_b2 = targetElement.value) == null ? void 0 : _b2.focus()
},
})
watch$1(
targetElement,
() => {
focused.value = initialValue
},
{ immediate: true, flush: 'post' }
)
return { focused }
}
function useFocusWithin(target2, options2 = {}) {
const activeElement = useActiveElement(options2)
const targetElement = computed(() => unrefElement(target2))
const focused = computed(() =>
targetElement.value && activeElement.value
? targetElement.value.contains(activeElement.value)
: false
)
return { focused }
}
function useFps(options2) {
var _a2
const fps = ref(0)
if (typeof performance === 'undefined') return fps
const every2 =
(_a2 = options2 == null ? void 0 : options2.every) != null ? _a2 : 10
let last2 = performance.now()
let ticks = 0
useRafFn(() => {
ticks += 1
if (ticks >= every2) {
const now2 = performance.now()
const diff = now2 - last2
fps.value = Math.round(1e3 / (diff / ticks))
last2 = now2
ticks = 0
}
})
return fps
}
const functionsMap = [
[
'requestFullscreen',
'exitFullscreen',
'fullscreenElement',
'fullscreenEnabled',
'fullscreenchange',
'fullscreenerror',
],
[
'webkitRequestFullscreen',
'webkitExitFullscreen',
'webkitFullscreenElement',
'webkitFullscreenEnabled',
'webkitfullscreenchange',
'webkitfullscreenerror',
],
[
'webkitRequestFullScreen',
'webkitCancelFullScreen',
'webkitCurrentFullScreenElement',
'webkitCancelFullScreen',
'webkitfullscreenchange',
'webkitfullscreenerror',
],
[
'mozRequestFullScreen',
'mozCancelFullScreen',
'mozFullScreenElement',
'mozFullScreenEnabled',
'mozfullscreenchange',
'mozfullscreenerror',
],
[
'msRequestFullscreen',
'msExitFullscreen',
'msFullscreenElement',
'msFullscreenEnabled',
'MSFullscreenChange',
'MSFullscreenError',
],
]
function useFullscreen(target2, options2 = {}) {
const { document: document2 = defaultDocument, autoExit = false } = options2
const targetRef =
target2 || (document2 == null ? void 0 : document2.querySelector('html'))
const isFullscreen = ref(false)
let map2 = functionsMap[0]
const isSupported = useSupported(() => {
if (!document2) {
return false
} else {
for (const m2 of functionsMap) {
if (m2[1] in document2) {
map2 = m2
return true
}
}
}
return false
})
const [REQUEST, EXIT, ELEMENT, , EVENT] = map2
async function exit() {
if (!isSupported.value) return
if (document2 == null ? void 0 : document2[ELEMENT]) await document2[EXIT]()
isFullscreen.value = false
}
async function enter() {
if (!isSupported.value) return
await exit()
const target22 = unrefElement(targetRef)
if (target22) {
await target22[REQUEST]()
isFullscreen.value = true
}
}
async function toggle2() {
if (isFullscreen.value) await exit()
else await enter()
}
if (document2) {
useEventListener(
document2,
EVENT,
() => {
isFullscreen.value = !!(document2 == null ? void 0 : document2[ELEMENT])
},
false
)
}
if (autoExit) tryOnScopeDispose(exit)
return {
isSupported,
isFullscreen,
enter,
exit,
toggle: toggle2,
}
}
function mapGamepadToXbox360Controller(gamepad) {
return computed(() => {
if (gamepad.value) {
return {
buttons: {
a: gamepad.value.buttons[0],
b: gamepad.value.buttons[1],
x: gamepad.value.buttons[2],
y: gamepad.value.buttons[3],
},
bumper: {
left: gamepad.value.buttons[4],
right: gamepad.value.buttons[5],
},
triggers: {
left: gamepad.value.buttons[6],
right: gamepad.value.buttons[7],
},
stick: {
left: {
horizontal: gamepad.value.axes[0],
vertical: gamepad.value.axes[1],
button: gamepad.value.buttons[10],
},
right: {
horizontal: gamepad.value.axes[2],
vertical: gamepad.value.axes[3],
button: gamepad.value.buttons[11],
},
},
dpad: {
up: gamepad.value.buttons[12],
down: gamepad.value.buttons[13],
left: gamepad.value.buttons[14],
right: gamepad.value.buttons[15],
},
back: gamepad.value.buttons[8],
start: gamepad.value.buttons[9],
}
}
return null
})
}
function useGamepad(options2 = {}) {
const { navigator: navigator2 = defaultNavigator } = options2
const isSupported = useSupported(
() => navigator2 && 'getGamepads' in navigator2
)
const gamepads = ref([])
const onConnectedHook = createEventHook()
const onDisconnectedHook = createEventHook()
const stateFromGamepad = (gamepad) => {
const hapticActuators = []
const vibrationActuator =
'vibrationActuator' in gamepad ? gamepad.vibrationActuator : null
if (vibrationActuator) hapticActuators.push(vibrationActuator)
if (gamepad.hapticActuators)
hapticActuators.push(...gamepad.hapticActuators)
return {
id: gamepad.id,
hapticActuators,
index: gamepad.index,
mapping: gamepad.mapping,
connected: gamepad.connected,
timestamp: gamepad.timestamp,
axes: gamepad.axes.map((axes) => axes),
buttons: gamepad.buttons.map((button) => ({
pressed: button.pressed,
touched: button.touched,
value: button.value,
})),
}
}
const updateGamepadState = () => {
const _gamepads =
(navigator2 == null ? void 0 : navigator2.getGamepads()) || []
for (let i2 = 0; i2 < _gamepads.length; ++i2) {
const gamepad = _gamepads[i2]
if (gamepad) {
const index2 = gamepads.value.findIndex(
({ index: index22 }) => index22 === gamepad.index
)
if (index2 > -1) gamepads.value[index2] = stateFromGamepad(gamepad)
}
}
}
const { isActive, pause, resume } = useRafFn(updateGamepadState)
const onGamepadConnected = (gamepad) => {
if (!gamepads.value.some(({ index: index2 }) => index2 === gamepad.index)) {
gamepads.value.push(stateFromGamepad(gamepad))
onConnectedHook.trigger(gamepad.index)
}
resume()
}
const onGamepadDisconnected = (gamepad) => {
gamepads.value = gamepads.value.filter((x2) => x2.index !== gamepad.index)
onDisconnectedHook.trigger(gamepad.index)
}
useEventListener('gamepadconnected', (e2) => onGamepadConnected(e2.gamepad))
useEventListener('gamepaddisconnected', (e2) =>
onGamepadDisconnected(e2.gamepad)
)
tryOnMounted(() => {
const _gamepads =
(navigator2 == null ? void 0 : navigator2.getGamepads()) || []
if (_gamepads) {
for (let i2 = 0; i2 < _gamepads.length; ++i2) {
const gamepad = _gamepads[i2]
if (gamepad) onGamepadConnected(gamepad)
}
}
})
pause()
return {
isSupported,
onConnected: onConnectedHook.on,
onDisconnected: onDisconnectedHook.on,
gamepads,
pause,
resume,
isActive,
}
}
function useGeolocation(options2 = {}) {
const {
enableHighAccuracy = true,
maximumAge = 3e4,
timeout = 27e3,
navigator: navigator2 = defaultNavigator,
immediate = true,
} = options2
const isSupported = useSupported(
() => navigator2 && 'geolocation' in navigator2
)
const locatedAt = ref(null)
const error2 = ref(null)
const coords = ref({
accuracy: 0,
latitude: Infinity,
longitude: Infinity,
altitude: null,
altitudeAccuracy: null,
heading: null,
speed: null,
})
function updatePosition(position2) {
locatedAt.value = position2.timestamp
coords.value = position2.coords
error2.value = null
}
let watcher
function resume() {
if (isSupported.value) {
watcher = navigator2.geolocation.watchPosition(
updatePosition,
(err) => (error2.value = err),
{
enableHighAccuracy,
maximumAge,
timeout,
}
)
}
}
if (immediate) resume()
function pause() {
if (watcher && navigator2) navigator2.geolocation.clearWatch(watcher)
}
tryOnScopeDispose(() => {
pause()
})
return {
isSupported,
coords,
locatedAt,
error: error2,
resume,
pause,
}
}
const defaultEvents$1 = [
'mousemove',
'mousedown',
'resize',
'keydown',
'touchstart',
'wheel',
]
const oneMinute = 6e4
function useIdle(timeout = oneMinute, options2 = {}) {
const {
initialState = false,
listenForVisibilityChange = true,
events: events2 = defaultEvents$1,
window: window2 = defaultWindow$1,
eventFilter = throttleFilter(50),
} = options2
const idle = ref(initialState)
const lastActive = ref(timestamp$2())
let timer2
const onEvent = createFilterWrapper(eventFilter, () => {
idle.value = false
lastActive.value = timestamp$2()
clearTimeout(timer2)
timer2 = setTimeout(() => (idle.value = true), timeout)
})
if (window2) {
const document2 = window2.document
for (const event of events2)
useEventListener(window2, event, onEvent, { passive: true })
if (listenForVisibilityChange) {
useEventListener(document2, 'visibilitychange', () => {
if (!document2.hidden) onEvent()
})
}
}
timer2 = setTimeout(() => (idle.value = true), timeout)
return { idle, lastActive }
}
var __defProp$a = Object.defineProperty
var __getOwnPropSymbols$b = Object.getOwnPropertySymbols
var __hasOwnProp$b = Object.prototype.hasOwnProperty
var __propIsEnum$b = Object.prototype.propertyIsEnumerable
var __defNormalProp$a = (obj, key2, value2) =>
key2 in obj
? __defProp$a(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$a = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$b.call(b2, prop)) __defNormalProp$a(a2, prop, b2[prop])
if (__getOwnPropSymbols$b)
for (var prop of __getOwnPropSymbols$b(b2)) {
if (__propIsEnum$b.call(b2, prop)) __defNormalProp$a(a2, prop, b2[prop])
}
return a2
}
async function loadImage(options2) {
return new Promise((resolve2, reject2) => {
const img = new Image()
const { src, srcset, sizes: sizes2 } = options2
img.src = src
if (srcset) img.srcset = srcset
if (sizes2) img.sizes = sizes2
img.onload = () => resolve2(img)
img.onerror = reject2
})
}
const useImage = (options2, asyncStateOptions = {}) => {
const state2 = useAsyncState(
() => loadImage(resolveUnref(options2)),
void 0,
__spreadValues$a(
{
resetOnExecute: true,
},
asyncStateOptions
)
)
watch$1(
() => resolveUnref(options2),
() => state2.execute(asyncStateOptions.delay),
{ deep: true }
)
return state2
}
const ARRIVED_STATE_THRESHOLD_PIXELS = 1
function useScroll(element, options2 = {}) {
const {
throttle: throttle2 = 0,
idle = 200,
onStop = noop$6,
onScroll = noop$6,
offset: offset2 = {
left: 0,
right: 0,
top: 0,
bottom: 0,
},
eventListenerOptions = {
capture: false,
passive: true,
},
behavior = 'auto',
} = options2
const internalX = ref(0)
const internalY = ref(0)
const x2 = computed({
get() {
return internalX.value
},
set(x22) {
scrollTo(x22, void 0)
},
})
const y2 = computed({
get() {
return internalY.value
},
set(y22) {
scrollTo(void 0, y22)
},
})
function scrollTo(_x, _y) {
var _a2, _b2, _c2
const _element = resolveUnref(element)
if (!_element) return
;(_c2 = _element instanceof Document ? document.body : _element) == null
? void 0
: _c2.scrollTo({
top: (_a2 = resolveUnref(_y)) != null ? _a2 : y2.value,
left: (_b2 = resolveUnref(_x)) != null ? _b2 : x2.value,
behavior: resolveUnref(behavior),
})
}
const isScrolling = ref(false)
const arrivedState = reactive({
left: true,
right: false,
top: true,
bottom: false,
})
const directions = reactive({
left: false,
right: false,
top: false,
bottom: false,
})
const onScrollEnd = (e2) => {
if (!isScrolling.value) return
isScrolling.value = false
directions.left = false
directions.right = false
directions.top = false
directions.bottom = false
onStop(e2)
}
const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle2 + idle)
const onScrollHandler = (e2) => {
const eventTarget =
e2.target === document ? e2.target.documentElement : e2.target
const scrollLeft = eventTarget.scrollLeft
directions.left = scrollLeft < internalX.value
directions.right = scrollLeft > internalY.value
arrivedState.left = scrollLeft <= 0 + (offset2.left || 0)
arrivedState.right =
scrollLeft + eventTarget.clientWidth >=
eventTarget.scrollWidth -
(offset2.right || 0) -
ARRIVED_STATE_THRESHOLD_PIXELS
internalX.value = scrollLeft
let scrollTop = eventTarget.scrollTop
if (e2.target === document && !scrollTop)
scrollTop = document.body.scrollTop
directions.top = scrollTop < internalY.value
directions.bottom = scrollTop > internalY.value
arrivedState.top = scrollTop <= 0 + (offset2.top || 0)
arrivedState.bottom =
scrollTop + eventTarget.clientHeight >=
eventTarget.scrollHeight -
(offset2.bottom || 0) -
ARRIVED_STATE_THRESHOLD_PIXELS
internalY.value = scrollTop
isScrolling.value = true
onScrollEndDebounced(e2)
onScroll(e2)
}
useEventListener(
element,
'scroll',
throttle2
? useThrottleFn(onScrollHandler, throttle2, true, false)
: onScrollHandler,
eventListenerOptions
)
useEventListener(element, 'scrollend', onScrollEnd, eventListenerOptions)
return {
x: x2,
y: y2,
isScrolling,
arrivedState,
directions,
}
}
var __defProp$9 = Object.defineProperty
var __defProps$2 = Object.defineProperties
var __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors
var __getOwnPropSymbols$a = Object.getOwnPropertySymbols
var __hasOwnProp$a = Object.prototype.hasOwnProperty
var __propIsEnum$a = Object.prototype.propertyIsEnumerable
var __defNormalProp$9 = (obj, key2, value2) =>
key2 in obj
? __defProp$9(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$9 = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$a.call(b2, prop)) __defNormalProp$9(a2, prop, b2[prop])
if (__getOwnPropSymbols$a)
for (var prop of __getOwnPropSymbols$a(b2)) {
if (__propIsEnum$a.call(b2, prop)) __defNormalProp$9(a2, prop, b2[prop])
}
return a2
}
var __spreadProps$2 = (a2, b2) => __defProps$2(a2, __getOwnPropDescs$2(b2))
function useInfiniteScroll(element, onLoadMore, options2 = {}) {
var _a2, _b2
const direction2 = (_a2 = options2.direction) != null ? _a2 : 'bottom'
const state2 = reactive(
useScroll(
element,
__spreadProps$2(__spreadValues$9({}, options2), {
offset: __spreadValues$9(
{
[direction2]: (_b2 = options2.distance) != null ? _b2 : 0,
},
options2.offset
),
})
)
)
watch$1(
() => state2.arrivedState[direction2],
async (v4) => {
var _a22, _b22
if (v4) {
const elem = resolveUnref(element)
const previous = {
height:
(_a22 = elem == null ? void 0 : elem.scrollHeight) != null
? _a22
: 0,
width:
(_b22 = elem == null ? void 0 : elem.scrollWidth) != null
? _b22
: 0,
}
await onLoadMore(state2)
if (options2.preserveScrollPosition && elem) {
nextTick(() => {
elem.scrollTo({
top: elem.scrollHeight - previous.height,
left: elem.scrollWidth - previous.width,
})
})
}
}
}
)
}
function useIntersectionObserver(target2, callback, options2 = {}) {
const {
root: root2,
rootMargin = '0px',
threshold = 0.1,
window: window2 = defaultWindow$1,
} = options2
const isSupported = useSupported(
() => window2 && 'IntersectionObserver' in window2
)
let cleanup = noop$6
const stopWatch = isSupported.value
? watch$1(
() => ({
el: unrefElement(target2),
root: unrefElement(root2),
}),
({ el: el2, root: root22 }) => {
cleanup()
if (!el2) return
const observer = new IntersectionObserver(callback, {
root: root22,
rootMargin,
threshold,
})
observer.observe(el2)
cleanup = () => {
observer.disconnect()
cleanup = noop$6
}
},
{ immediate: true, flush: 'post' }
)
: noop$6
const stop2 = () => {
cleanup()
stopWatch()
}
tryOnScopeDispose(stop2)
return {
isSupported,
stop: stop2,
}
}
const defaultEvents = ['mousedown', 'mouseup', 'keydown', 'keyup']
function useKeyModifier(modifier, options2 = {}) {
const {
events: events2 = defaultEvents,
document: document2 = defaultDocument,
initial = null,
} = options2
const state2 = ref(initial)
if (document2) {
events2.forEach((listenerEvent) => {
useEventListener(document2, listenerEvent, (evt) => {
if (typeof evt.getModifierState === 'function')
state2.value = evt.getModifierState(modifier)
})
})
}
return state2
}
function useLocalStorage(key2, initialValue, options2 = {}) {
const { window: window2 = defaultWindow$1 } = options2
return useStorage(
key2,
initialValue,
window2 == null ? void 0 : window2.localStorage,
options2
)
}
const DefaultMagicKeysAliasMap = {
ctrl: 'control',
command: 'meta',
cmd: 'meta',
option: 'alt',
up: 'arrowup',
down: 'arrowdown',
left: 'arrowleft',
right: 'arrowright',
}
function useMagicKeys(options2 = {}) {
const {
reactive: useReactive = false,
target: target2 = defaultWindow$1,
aliasMap = DefaultMagicKeysAliasMap,
passive: passive2 = true,
onEventFired = noop$6,
} = options2
const current2 = reactive(/* @__PURE__ */ new Set())
const obj = {
toJSON() {
return {}
},
current: current2,
}
const refs = useReactive ? reactive(obj) : obj
const metaDeps = /* @__PURE__ */ new Set()
const usedKeys = /* @__PURE__ */ new Set()
function setRefs(key2, value2) {
if (key2 in refs) {
if (useReactive) refs[key2] = value2
else refs[key2].value = value2
}
}
function reset2() {
current2.clear()
for (const key2 of usedKeys) setRefs(key2, false)
}
function updateRefs(e2, value2) {
var _a2, _b2
const key2 = (_a2 = e2.key) == null ? void 0 : _a2.toLowerCase()
const code2 = (_b2 = e2.code) == null ? void 0 : _b2.toLowerCase()
const values2 = [code2, key2].filter(Boolean)
if (key2) {
if (value2) current2.add(key2)
else current2.delete(key2)
}
for (const key22 of values2) {
usedKeys.add(key22)
setRefs(key22, value2)
}
if (key2 === 'meta' && !value2) {
metaDeps.forEach((key22) => {
current2.delete(key22)
setRefs(key22, false)
})
metaDeps.clear()
} else if (
typeof e2.getModifierState === 'function' &&
e2.getModifierState('Meta') &&
value2
) {
;[...current2, ...values2].forEach((key22) => metaDeps.add(key22))
}
}
useEventListener(
target2,
'keydown',
(e2) => {
updateRefs(e2, true)
return onEventFired(e2)
},
{ passive: passive2 }
)
useEventListener(
target2,
'keyup',
(e2) => {
updateRefs(e2, false)
return onEventFired(e2)
},
{ passive: passive2 }
)
useEventListener('blur', reset2, { passive: true })
useEventListener('focus', reset2, { passive: true })
const proxy = new Proxy(refs, {
get(target22, prop, rec) {
if (typeof prop !== 'string') return Reflect.get(target22, prop, rec)
prop = prop.toLowerCase()
if (prop in aliasMap) prop = aliasMap[prop]
if (!(prop in refs)) {
if (/[+_-]/.test(prop)) {
const keys3 = prop.split(/[+_-]/g).map((i2) => i2.trim())
refs[prop] = computed(() => keys3.every((key2) => unref(proxy[key2])))
} else {
refs[prop] = ref(false)
}
}
const r2 = Reflect.get(target22, prop, rec)
return useReactive ? unref(r2) : r2
},
})
return proxy
}
var __defProp$8 = Object.defineProperty
var __getOwnPropSymbols$9 = Object.getOwnPropertySymbols
var __hasOwnProp$9 = Object.prototype.hasOwnProperty
var __propIsEnum$9 = Object.prototype.propertyIsEnumerable
var __defNormalProp$8 = (obj, key2, value2) =>
key2 in obj
? __defProp$8(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$8 = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$9.call(b2, prop)) __defNormalProp$8(a2, prop, b2[prop])
if (__getOwnPropSymbols$9)
for (var prop of __getOwnPropSymbols$9(b2)) {
if (__propIsEnum$9.call(b2, prop)) __defNormalProp$8(a2, prop, b2[prop])
}
return a2
}
function usingElRef(source2, cb) {
if (resolveUnref(source2)) cb(resolveUnref(source2))
}
function timeRangeToArray(timeRanges) {
let ranges = []
for (let i2 = 0; i2 < timeRanges.length; ++i2)
ranges = [...ranges, [timeRanges.start(i2), timeRanges.end(i2)]]
return ranges
}
function tracksToArray(tracks) {
return Array.from(tracks).map(
(
{
label,
kind,
language,
mode: mode2,
activeCues,
cues,
inBandMetadataTrackDispatchType,
},
id2
) => ({
id: id2,
label,
kind,
language,
mode: mode2,
activeCues,
cues,
inBandMetadataTrackDispatchType,
})
)
}
const defaultOptions = {
src: '',
tracks: [],
}
function useMediaControls(target2, options2 = {}) {
options2 = __spreadValues$8(__spreadValues$8({}, defaultOptions), options2)
const { document: document2 = defaultDocument } = options2
const currentTime = ref(0)
const duration2 = ref(0)
const seeking = ref(false)
const volume = ref(1)
const waiting = ref(false)
const ended = ref(false)
const playing = ref(false)
const rate = ref(1)
const stalled = ref(false)
const buffered = ref([])
const tracks = ref([])
const selectedTrack = ref(-1)
const isPictureInPicture = ref(false)
const muted = ref(false)
const supportsPictureInPicture =
document2 && 'pictureInPictureEnabled' in document2
const sourceErrorEvent = createEventHook()
const disableTrack = (track2) => {
usingElRef(target2, (el2) => {
if (track2) {
const id2 = isNumber$g(track2) ? track2 : track2.id
el2.textTracks[id2].mode = 'disabled'
} else {
for (let i2 = 0; i2 < el2.textTracks.length; ++i2)
el2.textTracks[i2].mode = 'disabled'
}
selectedTrack.value = -1
})
}
const enableTrack = (track2, disableTracks = true) => {
usingElRef(target2, (el2) => {
const id2 = isNumber$g(track2) ? track2 : track2.id
if (disableTracks) disableTrack()
el2.textTracks[id2].mode = 'showing'
selectedTrack.value = id2
})
}
const togglePictureInPicture = () => {
return new Promise((resolve2, reject2) => {
usingElRef(target2, async (el2) => {
if (supportsPictureInPicture) {
if (!isPictureInPicture.value) {
el2.requestPictureInPicture().then(resolve2).catch(reject2)
} else {
document2.exitPictureInPicture().then(resolve2).catch(reject2)
}
}
})
})
}
watchEffect(() => {
if (!document2) return
const el2 = resolveUnref(target2)
if (!el2) return
const src = resolveUnref(options2.src)
let sources = []
if (!src) return
if (isString$e(src)) sources = [{ src }]
else if (Array.isArray(src)) sources = src
else if (isObject$t(src)) sources = [src]
el2.querySelectorAll('source').forEach((e2) => {
e2.removeEventListener('error', sourceErrorEvent.trigger)
e2.remove()
})
sources.forEach(({ src: src2, type: type4 }) => {
const source2 = document2.createElement('source')
source2.setAttribute('src', src2)
source2.setAttribute('type', type4 || '')
source2.addEventListener('error', sourceErrorEvent.trigger)
el2.appendChild(source2)
})
el2.load()
})
tryOnScopeDispose(() => {
const el2 = resolveUnref(target2)
if (!el2) return
el2
.querySelectorAll('source')
.forEach((e2) =>
e2.removeEventListener('error', sourceErrorEvent.trigger)
)
})
watch$1(volume, (vol) => {
const el2 = resolveUnref(target2)
if (!el2) return
el2.volume = vol
})
watch$1(muted, (mute2) => {
const el2 = resolveUnref(target2)
if (!el2) return
el2.muted = mute2
})
watch$1(rate, (rate2) => {
const el2 = resolveUnref(target2)
if (!el2) return
el2.playbackRate = rate2
})
watchEffect(() => {
if (!document2) return
const textTracks = resolveUnref(options2.tracks)
const el2 = resolveUnref(target2)
if (!textTracks || !textTracks.length || !el2) return
el2.querySelectorAll('track').forEach((e2) => e2.remove())
textTracks.forEach(
({ default: isDefault, kind, label, src, srcLang }, i2) => {
const track2 = document2.createElement('track')
track2.default = isDefault || false
track2.kind = kind
track2.label = label
track2.src = src
track2.srclang = srcLang
if (track2.default) selectedTrack.value = i2
el2.appendChild(track2)
}
)
})
const { ignoreUpdates: ignoreCurrentTimeUpdates } = watchIgnorable(
currentTime,
(time2) => {
const el2 = resolveUnref(target2)
if (!el2) return
el2.currentTime = time2
}
)
const { ignoreUpdates: ignorePlayingUpdates } = watchIgnorable(
playing,
(isPlaying) => {
const el2 = resolveUnref(target2)
if (!el2) return
isPlaying ? el2.play() : el2.pause()
}
)
useEventListener(target2, 'timeupdate', () =>
ignoreCurrentTimeUpdates(
() => (currentTime.value = resolveUnref(target2).currentTime)
)
)
useEventListener(
target2,
'durationchange',
() => (duration2.value = resolveUnref(target2).duration)
)
useEventListener(
target2,
'progress',
() => (buffered.value = timeRangeToArray(resolveUnref(target2).buffered))
)
useEventListener(target2, 'seeking', () => (seeking.value = true))
useEventListener(target2, 'seeked', () => (seeking.value = false))
useEventListener(target2, 'waiting', () => (waiting.value = true))
useEventListener(target2, 'playing', () => {
waiting.value = false
ended.value = false
})
useEventListener(
target2,
'ratechange',
() => (rate.value = resolveUnref(target2).playbackRate)
)
useEventListener(target2, 'stalled', () => (stalled.value = true))
useEventListener(target2, 'ended', () => (ended.value = true))
useEventListener(target2, 'pause', () =>
ignorePlayingUpdates(() => (playing.value = false))
)
useEventListener(target2, 'play', () =>
ignorePlayingUpdates(() => (playing.value = true))
)
useEventListener(
target2,
'enterpictureinpicture',
() => (isPictureInPicture.value = true)
)
useEventListener(
target2,
'leavepictureinpicture',
() => (isPictureInPicture.value = false)
)
useEventListener(target2, 'volumechange', () => {
const el2 = resolveUnref(target2)
if (!el2) return
volume.value = el2.volume
muted.value = el2.muted
})
const listeners = []
const stop2 = watch$1([target2], () => {
const el2 = resolveUnref(target2)
if (!el2) return
stop2()
listeners[0] = useEventListener(
el2.textTracks,
'addtrack',
() => (tracks.value = tracksToArray(el2.textTracks))
)
listeners[1] = useEventListener(
el2.textTracks,
'removetrack',
() => (tracks.value = tracksToArray(el2.textTracks))
)
listeners[2] = useEventListener(
el2.textTracks,
'change',
() => (tracks.value = tracksToArray(el2.textTracks))
)
})
tryOnScopeDispose(() => listeners.forEach((listener) => listener()))
return {
currentTime,
duration: duration2,
waiting,
seeking,
ended,
stalled,
buffered,
playing,
rate,
volume,
muted,
tracks,
selectedTrack,
enableTrack,
disableTrack,
supportsPictureInPicture,
togglePictureInPicture,
isPictureInPicture,
onSourceError: sourceErrorEvent.on,
}
}
function useMemoize(resolver, options2) {
const initCache = () => {
if (options2 == null ? void 0 : options2.cache)
return reactive(options2.cache)
return reactive(/* @__PURE__ */ new Map())
}
const cache2 = initCache()
const generateKey = (...args) =>
(options2 == null ? void 0 : options2.getKey)
? options2.getKey(...args)
: JSON.stringify(args)
const _loadData = (key2, ...args) => {
cache2.set(key2, resolver(...args))
return cache2.get(key2)
}
const loadData2 = (...args) => _loadData(generateKey(...args), ...args)
const deleteData = (...args) => {
cache2.delete(generateKey(...args))
}
const clearData = () => {
cache2.clear()
}
const memoized = (...args) => {
const key2 = generateKey(...args)
if (cache2.has(key2)) return cache2.get(key2)
return _loadData(key2, ...args)
}
memoized.load = loadData2
memoized.delete = deleteData
memoized.clear = clearData
memoized.generateKey = generateKey
memoized.cache = cache2
return memoized
}
function useMemory(options2 = {}) {
const memory = ref()
const isSupported = useSupported(
() => typeof performance !== 'undefined' && 'memory' in performance
)
if (isSupported.value) {
const { interval = 1e3 } = options2
useIntervalFn(
() => {
memory.value = performance.memory
},
interval,
{
immediate: options2.immediate,
immediateCallback: options2.immediateCallback,
}
)
}
return { isSupported, memory }
}
function useMounted() {
const isMounted = ref(false)
onMounted(() => {
isMounted.value = true
})
return isMounted
}
function useMouse(options2 = {}) {
const {
type: type4 = 'page',
touch = true,
resetOnTouchEnds = false,
initialValue = { x: 0, y: 0 },
window: window2 = defaultWindow$1,
eventFilter,
} = options2
const x2 = ref(initialValue.x)
const y2 = ref(initialValue.y)
const sourceType = ref(null)
const mouseHandler2 = (event) => {
if (type4 === 'page') {
x2.value = event.pageX
y2.value = event.pageY
} else if (type4 === 'client') {
x2.value = event.clientX
y2.value = event.clientY
} else if (type4 === 'movement') {
x2.value = event.movementX
y2.value = event.movementY
}
sourceType.value = 'mouse'
}
const reset2 = () => {
x2.value = initialValue.x
y2.value = initialValue.y
}
const touchHandler = (event) => {
if (event.touches.length > 0) {
const touch2 = event.touches[0]
if (type4 === 'page') {
x2.value = touch2.pageX
y2.value = touch2.pageY
} else if (type4 === 'client') {
x2.value = touch2.clientX
y2.value = touch2.clientY
}
sourceType.value = 'touch'
}
}
const mouseHandlerWrapper = (event) => {
return eventFilter === void 0
? mouseHandler2(event)
: eventFilter(() => mouseHandler2(event), {})
}
const touchHandlerWrapper = (event) => {
return eventFilter === void 0
? touchHandler(event)
: eventFilter(() => touchHandler(event), {})
}
if (window2) {
useEventListener(window2, 'mousemove', mouseHandlerWrapper, {
passive: true,
})
useEventListener(window2, 'dragover', mouseHandlerWrapper, {
passive: true,
})
if (touch && type4 !== 'movement') {
useEventListener(window2, 'touchstart', touchHandlerWrapper, {
passive: true,
})
useEventListener(window2, 'touchmove', touchHandlerWrapper, {
passive: true,
})
if (resetOnTouchEnds)
useEventListener(window2, 'touchend', reset2, { passive: true })
}
}
return {
x: x2,
y: y2,
sourceType,
}
}
function useMouseInElement(target2, options2 = {}) {
const { handleOutside = true, window: window2 = defaultWindow$1 } = options2
const { x: x2, y: y2, sourceType } = useMouse(options2)
const targetRef = ref(
target2 != null ? target2 : window2 == null ? void 0 : window2.document.body
)
const elementX = ref(0)
const elementY = ref(0)
const elementPositionX = ref(0)
const elementPositionY = ref(0)
const elementHeight = ref(0)
const elementWidth = ref(0)
const isOutside = ref(true)
let stop2 = () => {}
if (window2) {
stop2 = watch$1(
[targetRef, x2, y2],
() => {
const el2 = unrefElement(targetRef)
if (!el2) return
const {
left: left2,
top: top2,
width,
height,
} = el2.getBoundingClientRect()
elementPositionX.value = left2 + window2.pageXOffset
elementPositionY.value = top2 + window2.pageYOffset
elementHeight.value = height
elementWidth.value = width
const elX = x2.value - elementPositionX.value
const elY = y2.value - elementPositionY.value
isOutside.value =
width === 0 ||
height === 0 ||
elX < 0 ||
elY < 0 ||
elX > width ||
elY > height
if (handleOutside || !isOutside.value) {
elementX.value = elX
elementY.value = elY
}
},
{ immediate: true }
)
useEventListener(document, 'mouseleave', () => {
isOutside.value = true
})
}
return {
x: x2,
y: y2,
sourceType,
elementX,
elementY,
elementPositionX,
elementPositionY,
elementHeight,
elementWidth,
isOutside,
stop: stop2,
}
}
function useMousePressed(options2 = {}) {
const {
touch = true,
drag = true,
initialValue = false,
window: window2 = defaultWindow$1,
} = options2
const pressed = ref(initialValue)
const sourceType = ref(null)
if (!window2) {
return {
pressed,
sourceType,
}
}
const onPressed = (srcType) => () => {
pressed.value = true
sourceType.value = srcType
}
const onReleased = () => {
pressed.value = false
sourceType.value = null
}
const target2 = computed(() => unrefElement(options2.target) || window2)
useEventListener(target2, 'mousedown', onPressed('mouse'), { passive: true })
useEventListener(window2, 'mouseleave', onReleased, { passive: true })
useEventListener(window2, 'mouseup', onReleased, { passive: true })
if (drag) {
useEventListener(target2, 'dragstart', onPressed('mouse'), {
passive: true,
})
useEventListener(window2, 'drop', onReleased, { passive: true })
useEventListener(window2, 'dragend', onReleased, { passive: true })
}
if (touch) {
useEventListener(target2, 'touchstart', onPressed('touch'), {
passive: true,
})
useEventListener(window2, 'touchend', onReleased, { passive: true })
useEventListener(window2, 'touchcancel', onReleased, { passive: true })
}
return {
pressed,
sourceType,
}
}
var __getOwnPropSymbols$8 = Object.getOwnPropertySymbols
var __hasOwnProp$8 = Object.prototype.hasOwnProperty
var __propIsEnum$8 = Object.prototype.propertyIsEnumerable
var __objRest$1 = (source2, exclude) => {
var target2 = {}
for (var prop in source2)
if (__hasOwnProp$8.call(source2, prop) && exclude.indexOf(prop) < 0)
target2[prop] = source2[prop]
if (source2 != null && __getOwnPropSymbols$8)
for (var prop of __getOwnPropSymbols$8(source2)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum$8.call(source2, prop))
target2[prop] = source2[prop]
}
return target2
}
function useMutationObserver(target2, callback, options2 = {}) {
const _a2 = options2,
{ window: window2 = defaultWindow$1 } = _a2,
mutationOptions = __objRest$1(_a2, ['window'])
let observer
const isSupported = useSupported(
() => window2 && 'MutationObserver' in window2
)
const cleanup = () => {
if (observer) {
observer.disconnect()
observer = void 0
}
}
const stopWatch = watch$1(
() => unrefElement(target2),
(el2) => {
cleanup()
if (isSupported.value && window2 && el2) {
observer = new MutationObserver(callback)
observer.observe(el2, mutationOptions)
}
},
{ immediate: true }
)
const stop2 = () => {
cleanup()
stopWatch()
}
tryOnScopeDispose(stop2)
return {
isSupported,
stop: stop2,
}
}
const useNavigatorLanguage = (options2 = {}) => {
const { window: window2 = defaultWindow$1 } = options2
const navigator2 = window2 == null ? void 0 : window2.navigator
const isSupported = useSupported(() => navigator2 && 'language' in navigator2)
const language = ref(navigator2 == null ? void 0 : navigator2.language)
useEventListener(window2, 'languagechange', () => {
if (navigator2) language.value = navigator2.language
})
return {
isSupported,
language,
}
}
function useNetwork(options2 = {}) {
const { window: window2 = defaultWindow$1 } = options2
const navigator2 = window2 == null ? void 0 : window2.navigator
const isSupported = useSupported(
() => navigator2 && 'connection' in navigator2
)
const isOnline = ref(true)
const saveData = ref(false)
const offlineAt = ref(void 0)
const onlineAt = ref(void 0)
const downlink = ref(void 0)
const downlinkMax = ref(void 0)
const rtt = ref(void 0)
const effectiveType = ref(void 0)
const type4 = ref('unknown')
const connection2 = isSupported.value && navigator2.connection
function updateNetworkInformation() {
if (!navigator2) return
isOnline.value = navigator2.onLine
offlineAt.value = isOnline.value ? void 0 : Date.now()
onlineAt.value = isOnline.value ? Date.now() : void 0
if (connection2) {
downlink.value = connection2.downlink
downlinkMax.value = connection2.downlinkMax
effectiveType.value = connection2.effectiveType
rtt.value = connection2.rtt
saveData.value = connection2.saveData
type4.value = connection2.type
}
}
if (window2) {
useEventListener(window2, 'offline', () => {
isOnline.value = false
offlineAt.value = Date.now()
})
useEventListener(window2, 'online', () => {
isOnline.value = true
onlineAt.value = Date.now()
})
}
if (connection2)
useEventListener(connection2, 'change', updateNetworkInformation, false)
updateNetworkInformation()
return {
isSupported,
isOnline,
saveData,
offlineAt,
onlineAt,
downlink,
downlinkMax,
effectiveType,
rtt,
type: type4,
}
}
var __defProp$7 = Object.defineProperty
var __getOwnPropSymbols$7 = Object.getOwnPropertySymbols
var __hasOwnProp$7 = Object.prototype.hasOwnProperty
var __propIsEnum$7 = Object.prototype.propertyIsEnumerable
var __defNormalProp$7 = (obj, key2, value2) =>
key2 in obj
? __defProp$7(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$7 = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$7.call(b2, prop)) __defNormalProp$7(a2, prop, b2[prop])
if (__getOwnPropSymbols$7)
for (var prop of __getOwnPropSymbols$7(b2)) {
if (__propIsEnum$7.call(b2, prop)) __defNormalProp$7(a2, prop, b2[prop])
}
return a2
}
function useNow(options2 = {}) {
const {
controls: exposeControls = false,
interval = 'requestAnimationFrame',
} = options2
const now2 = ref(new Date())
const update3 = () => (now2.value = new Date())
const controls =
interval === 'requestAnimationFrame'
? useRafFn(update3, { immediate: true })
: useIntervalFn(update3, interval, { immediate: true })
if (exposeControls) {
return __spreadValues$7(
{
now: now2,
},
controls
)
} else {
return now2
}
}
function useObjectUrl(object4) {
const url2 = ref()
const release2 = () => {
if (url2.value) URL.revokeObjectURL(url2.value)
url2.value = void 0
}
watch$1(
() => unref(object4),
(newObject) => {
release2()
if (newObject) url2.value = URL.createObjectURL(newObject)
},
{ immediate: true }
)
tryOnScopeDispose(release2)
return readonly(url2)
}
function useClamp(value2, min3, max3) {
if (isFunction$k(value2) || isReadonly(value2))
return computed(() =>
clamp$1(resolveUnref(value2), resolveUnref(min3), resolveUnref(max3))
)
const _value = ref(value2)
return computed({
get() {
return (_value.value = clamp$1(
_value.value,
resolveUnref(min3),
resolveUnref(max3)
))
},
set(value22) {
_value.value = clamp$1(value22, resolveUnref(min3), resolveUnref(max3))
},
})
}
function useOffsetPagination(options2) {
const {
total: total2 = Infinity,
pageSize = 10,
page: page2 = 1,
onPageChange = noop$6,
onPageSizeChange = noop$6,
onPageCountChange = noop$6,
} = options2
const currentPageSize = useClamp(pageSize, 1, Infinity)
const pageCount = computed(() =>
Math.max(1, Math.ceil(unref(total2) / unref(currentPageSize)))
)
const currentPage2 = useClamp(page2, 1, pageCount)
const isFirstPage = computed(() => currentPage2.value === 1)
const isLastPage = computed(() => currentPage2.value === pageCount.value)
if (isRef(page2)) syncRef(page2, currentPage2)
if (isRef(pageSize)) syncRef(pageSize, currentPageSize)
function prev() {
currentPage2.value--
}
function next() {
currentPage2.value++
}
const returnValue = {
currentPage: currentPage2,
currentPageSize,
pageCount,
isFirstPage,
isLastPage,
prev,
next,
}
watch$1(currentPage2, () => {
onPageChange(reactive(returnValue))
})
watch$1(currentPageSize, () => {
onPageSizeChange(reactive(returnValue))
})
watch$1(pageCount, () => {
onPageCountChange(reactive(returnValue))
})
return returnValue
}
function useOnline(options2 = {}) {
const { isOnline } = useNetwork(options2)
return isOnline
}
function usePageLeave(options2 = {}) {
const { window: window2 = defaultWindow$1 } = options2
const isLeft = ref(false)
const handler = (event) => {
if (!window2) return
event = event || window2.event
const from = event.relatedTarget || event.toElement
isLeft.value = !from
}
if (window2) {
useEventListener(window2, 'mouseout', handler, { passive: true })
useEventListener(window2.document, 'mouseleave', handler, { passive: true })
useEventListener(window2.document, 'mouseenter', handler, { passive: true })
}
return isLeft
}
function useParallax(target2, options2 = {}) {
const {
deviceOrientationTiltAdjust = (i2) => i2,
deviceOrientationRollAdjust = (i2) => i2,
mouseTiltAdjust = (i2) => i2,
mouseRollAdjust = (i2) => i2,
window: window2 = defaultWindow$1,
} = options2
const orientation = reactive(useDeviceOrientation({ window: window2 }))
const {
elementX: x2,
elementY: y2,
elementWidth: width,
elementHeight: height,
} = useMouseInElement(target2, { handleOutside: false, window: window2 })
const source2 = computed(() => {
if (
orientation.isSupported &&
((orientation.alpha != null && orientation.alpha !== 0) ||
(orientation.gamma != null && orientation.gamma !== 0))
)
return 'deviceOrientation'
return 'mouse'
})
const roll2 = computed(() => {
if (source2.value === 'deviceOrientation') {
const value2 = -orientation.beta / 90
return deviceOrientationRollAdjust(value2)
} else {
const value2 = -(y2.value - height.value / 2) / height.value
return mouseRollAdjust(value2)
}
})
const tilt = computed(() => {
if (source2.value === 'deviceOrientation') {
const value2 = orientation.gamma / 90
return deviceOrientationTiltAdjust(value2)
} else {
const value2 = (x2.value - width.value / 2) / width.value
return mouseTiltAdjust(value2)
}
})
return { roll: roll2, tilt, source: source2 }
}
var __defProp$6 = Object.defineProperty
var __defProps$1 = Object.defineProperties
var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors
var __getOwnPropSymbols$6 = Object.getOwnPropertySymbols
var __hasOwnProp$6 = Object.prototype.hasOwnProperty
var __propIsEnum$6 = Object.prototype.propertyIsEnumerable
var __defNormalProp$6 = (obj, key2, value2) =>
key2 in obj
? __defProp$6(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$6 = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$6.call(b2, prop)) __defNormalProp$6(a2, prop, b2[prop])
if (__getOwnPropSymbols$6)
for (var prop of __getOwnPropSymbols$6(b2)) {
if (__propIsEnum$6.call(b2, prop)) __defNormalProp$6(a2, prop, b2[prop])
}
return a2
}
var __spreadProps$1 = (a2, b2) => __defProps$1(a2, __getOwnPropDescs$1(b2))
const defaultState = {
x: 0,
y: 0,
pointerId: 0,
pressure: 0,
tiltX: 0,
tiltY: 0,
width: 0,
height: 0,
twist: 0,
pointerType: null,
}
const keys$h = /* @__PURE__ */ Object.keys(defaultState)
function usePointer(options2 = {}) {
const { target: target2 = defaultWindow$1 } = options2
const isInside = ref(false)
const state2 = ref(options2.initialValue || {})
Object.assign(state2.value, defaultState, state2.value)
const handler = (event) => {
isInside.value = true
if (
options2.pointerTypes &&
!options2.pointerTypes.includes(event.pointerType)
)
return
state2.value = objectPick(event, keys$h, false)
}
if (target2) {
useEventListener(target2, 'pointerdown', handler, { passive: true })
useEventListener(target2, 'pointermove', handler, { passive: true })
useEventListener(target2, 'pointerleave', () => (isInside.value = false), {
passive: true,
})
}
return __spreadProps$1(__spreadValues$6({}, toRefs(state2)), {
isInside,
})
}
function usePointerLock(target2, options2 = {}) {
const { document: document2 = defaultDocument, pointerLockOptions } = options2
const isSupported = useSupported(
() => document2 && 'pointerLockElement' in document2
)
const element = ref()
const triggerElement = ref()
let targetElement
if (isSupported.value) {
useEventListener(document2, 'pointerlockchange', () => {
var _a2
const currentElement =
(_a2 = document2.pointerLockElement) != null ? _a2 : element.value
if (targetElement && currentElement === targetElement) {
element.value = document2.pointerLockElement
if (!element.value) targetElement = triggerElement.value = null
}
})
useEventListener(document2, 'pointerlockerror', () => {
var _a2
const currentElement =
(_a2 = document2.pointerLockElement) != null ? _a2 : element.value
if (targetElement && currentElement === targetElement) {
const action = document2.pointerLockElement ? 'release' : 'acquire'
throw new Error(`Failed to ${action} pointer lock.`)
}
})
}
async function lock2(e2, options22) {
var _a2
if (!isSupported.value)
throw new Error('Pointer Lock API is not supported by your browser.')
triggerElement.value = e2 instanceof Event ? e2.currentTarget : null
targetElement =
e2 instanceof Event
? (_a2 = unrefElement(target2)) != null
? _a2
: triggerElement.value
: unrefElement(e2)
if (!targetElement) throw new Error('Target element undefined.')
targetElement.requestPointerLock(
options22 != null ? options22 : pointerLockOptions
)
return await until(element).toBe(targetElement)
}
async function unlock2() {
if (!element.value) return false
document2.exitPointerLock()
await until(element).toBeNull()
return true
}
return {
isSupported,
element,
triggerElement,
lock: lock2,
unlock: unlock2,
}
}
var SwipeDirection
;(function (SwipeDirection2) {
SwipeDirection2['UP'] = 'UP'
SwipeDirection2['RIGHT'] = 'RIGHT'
SwipeDirection2['DOWN'] = 'DOWN'
SwipeDirection2['LEFT'] = 'LEFT'
SwipeDirection2['NONE'] = 'NONE'
})(SwipeDirection || (SwipeDirection = {}))
function useSwipe(target2, options2 = {}) {
const {
threshold = 50,
onSwipe,
onSwipeEnd,
onSwipeStart,
passive: passive2 = true,
window: window2 = defaultWindow$1,
} = options2
const coordsStart = reactive({ x: 0, y: 0 })
const coordsEnd = reactive({ x: 0, y: 0 })
const diffX = computed(() => coordsStart.x - coordsEnd.x)
const diffY = computed(() => coordsStart.y - coordsEnd.y)
const { max: max3, abs: abs2 } = Math
const isThresholdExceeded = computed(
() => max3(abs2(diffX.value), abs2(diffY.value)) >= threshold
)
const isSwiping = ref(false)
const direction2 = computed(() => {
if (!isThresholdExceeded.value) return SwipeDirection.NONE
if (abs2(diffX.value) > abs2(diffY.value)) {
return diffX.value > 0 ? SwipeDirection.LEFT : SwipeDirection.RIGHT
} else {
return diffY.value > 0 ? SwipeDirection.UP : SwipeDirection.DOWN
}
})
const getTouchEventCoords = (e2) => [
e2.touches[0].clientX,
e2.touches[0].clientY,
]
const updateCoordsStart = (x2, y2) => {
coordsStart.x = x2
coordsStart.y = y2
}
const updateCoordsEnd = (x2, y2) => {
coordsEnd.x = x2
coordsEnd.y = y2
}
let listenerOptions
const isPassiveEventSupported = checkPassiveEventSupport(
window2 == null ? void 0 : window2.document
)
if (!passive2)
listenerOptions = isPassiveEventSupported
? { passive: false, capture: true }
: { capture: true }
else
listenerOptions = isPassiveEventSupported
? { passive: true }
: { capture: false }
const onTouchEnd = (e2) => {
if (isSwiping.value)
onSwipeEnd == null ? void 0 : onSwipeEnd(e2, direction2.value)
isSwiping.value = false
}
const stops = [
useEventListener(
target2,
'touchstart',
(e2) => {
if (listenerOptions.capture && !listenerOptions.passive)
e2.preventDefault()
const [x2, y2] = getTouchEventCoords(e2)
updateCoordsStart(x2, y2)
updateCoordsEnd(x2, y2)
onSwipeStart == null ? void 0 : onSwipeStart(e2)
},
listenerOptions
),
useEventListener(
target2,
'touchmove',
(e2) => {
const [x2, y2] = getTouchEventCoords(e2)
updateCoordsEnd(x2, y2)
if (!isSwiping.value && isThresholdExceeded.value)
isSwiping.value = true
if (isSwiping.value) onSwipe == null ? void 0 : onSwipe(e2)
},
listenerOptions
),
useEventListener(target2, 'touchend', onTouchEnd, listenerOptions),
useEventListener(target2, 'touchcancel', onTouchEnd, listenerOptions),
]
const stop2 = () => stops.forEach((s2) => s2())
return {
isPassiveEventSupported,
isSwiping,
direction: direction2,
coordsStart,
coordsEnd,
lengthX: diffX,
lengthY: diffY,
stop: stop2,
}
}
function checkPassiveEventSupport(document2) {
if (!document2) return false
let supportsPassive = false
const optionsBlock = {
get passive() {
supportsPassive = true
return false
},
}
document2.addEventListener('x', noop$6, optionsBlock)
document2.removeEventListener('x', noop$6)
return supportsPassive
}
function usePointerSwipe(target2, options2 = {}) {
const targetRef = resolveRef(target2)
const { threshold = 50, onSwipe, onSwipeEnd, onSwipeStart } = options2
const posStart = reactive({ x: 0, y: 0 })
const updatePosStart = (x2, y2) => {
posStart.x = x2
posStart.y = y2
}
const posEnd = reactive({ x: 0, y: 0 })
const updatePosEnd = (x2, y2) => {
posEnd.x = x2
posEnd.y = y2
}
const distanceX = computed(() => posStart.x - posEnd.x)
const distanceY = computed(() => posStart.y - posEnd.y)
const { max: max3, abs: abs2 } = Math
const isThresholdExceeded = computed(
() => max3(abs2(distanceX.value), abs2(distanceY.value)) >= threshold
)
const isSwiping = ref(false)
const isPointerDown = ref(false)
const direction2 = computed(() => {
if (!isThresholdExceeded.value) return SwipeDirection.NONE
if (abs2(distanceX.value) > abs2(distanceY.value)) {
return distanceX.value > 0 ? SwipeDirection.LEFT : SwipeDirection.RIGHT
} else {
return distanceY.value > 0 ? SwipeDirection.UP : SwipeDirection.DOWN
}
})
const eventIsAllowed = (e2) => {
var _a2, _b2, _c2
const isReleasingButton = e2.buttons === 0
const isPrimaryButton = e2.buttons === 1
return (_c2 =
(_b2 =
(_a2 = options2.pointerTypes) == null
? void 0
: _a2.includes(e2.pointerType)) != null
? _b2
: isReleasingButton || isPrimaryButton) != null
? _c2
: true
}
const stops = [
useEventListener(target2, 'pointerdown', (e2) => {
var _a2, _b2
if (!eventIsAllowed(e2)) return
isPointerDown.value = true
;(_b2 = (_a2 = targetRef.value) == null ? void 0 : _a2.style) == null
? void 0
: _b2.setProperty('touch-action', 'none')
const eventTarget = e2.target
eventTarget == null ? void 0 : eventTarget.setPointerCapture(e2.pointerId)
const { clientX: x2, clientY: y2 } = e2
updatePosStart(x2, y2)
updatePosEnd(x2, y2)
onSwipeStart == null ? void 0 : onSwipeStart(e2)
}),
useEventListener(target2, 'pointermove', (e2) => {
if (!eventIsAllowed(e2)) return
if (!isPointerDown.value) return
const { clientX: x2, clientY: y2 } = e2
updatePosEnd(x2, y2)
if (!isSwiping.value && isThresholdExceeded.value) isSwiping.value = true
if (isSwiping.value) onSwipe == null ? void 0 : onSwipe(e2)
}),
useEventListener(target2, 'pointerup', (e2) => {
var _a2, _b2
if (!eventIsAllowed(e2)) return
if (isSwiping.value)
onSwipeEnd == null ? void 0 : onSwipeEnd(e2, direction2.value)
isPointerDown.value = false
isSwiping.value = false
;(_b2 = (_a2 = targetRef.value) == null ? void 0 : _a2.style) == null
? void 0
: _b2.setProperty('touch-action', 'initial')
}),
]
const stop2 = () => stops.forEach((s2) => s2())
return {
isSwiping: readonly(isSwiping),
direction: readonly(direction2),
posStart: readonly(posStart),
posEnd: readonly(posEnd),
distanceX,
distanceY,
stop: stop2,
}
}
function usePreferredColorScheme(options2) {
const isLight = useMediaQuery('(prefers-color-scheme: light)', options2)
const isDark = useMediaQuery('(prefers-color-scheme: dark)', options2)
return computed(() => {
if (isDark.value) return 'dark'
if (isLight.value) return 'light'
return 'no-preference'
})
}
function usePreferredContrast(options2) {
const isMore = useMediaQuery('(prefers-contrast: more)', options2)
const isLess = useMediaQuery('(prefers-contrast: less)', options2)
const isCustom = useMediaQuery('(prefers-contrast: custom)', options2)
return computed(() => {
if (isMore.value) return 'more'
if (isLess.value) return 'less'
if (isCustom.value) return 'custom'
return 'no-preference'
})
}
function usePreferredLanguages(options2 = {}) {
const { window: window2 = defaultWindow$1 } = options2
if (!window2) return ref(['en'])
const navigator2 = window2.navigator
const value2 = ref(navigator2.languages)
useEventListener(window2, 'languagechange', () => {
value2.value = navigator2.languages
})
return value2
}
function usePreferredReducedMotion(options2) {
const isReduced = useMediaQuery('(prefers-reduced-motion: reduce)', options2)
return computed(() => {
if (isReduced.value) return 'reduce'
return 'no-preference'
})
}
function usePrevious(value2, initialValue) {
const previous = shallowRef(initialValue)
watch$1(
resolveRef(value2),
(_2, oldValue) => {
previous.value = oldValue
},
{ flush: 'sync' }
)
return readonly(previous)
}
const useScreenOrientation = (options2 = {}) => {
const { window: window2 = defaultWindow$1 } = options2
const isSupported = useSupported(
() => window2 && 'screen' in window2 && 'orientation' in window2.screen
)
const screenOrientation = isSupported.value ? window2.screen.orientation : {}
const orientation = ref(screenOrientation.type)
const angle2 = ref(screenOrientation.angle || 0)
if (isSupported.value) {
useEventListener(window2, 'orientationchange', () => {
orientation.value = screenOrientation.type
angle2.value = screenOrientation.angle
})
}
const lockOrientation = (type4) => {
if (!isSupported.value) return Promise.reject(new Error('Not supported'))
return screenOrientation.lock(type4)
}
const unlockOrientation = () => {
if (isSupported.value) screenOrientation.unlock()
}
return {
isSupported,
orientation,
angle: angle2,
lockOrientation,
unlockOrientation,
}
}
const topVarName = '--vueuse-safe-area-top'
const rightVarName = '--vueuse-safe-area-right'
const bottomVarName = '--vueuse-safe-area-bottom'
const leftVarName = '--vueuse-safe-area-left'
function useScreenSafeArea() {
const top2 = ref('')
const right2 = ref('')
const bottom2 = ref('')
const left2 = ref('')
if (isClient) {
const topCssVar = useCssVar(topVarName)
const rightCssVar = useCssVar(rightVarName)
const bottomCssVar = useCssVar(bottomVarName)
const leftCssVar = useCssVar(leftVarName)
topCssVar.value = 'env(safe-area-inset-top, 0px)'
rightCssVar.value = 'env(safe-area-inset-right, 0px)'
bottomCssVar.value = 'env(safe-area-inset-bottom, 0px)'
leftCssVar.value = 'env(safe-area-inset-left, 0px)'
update3()
useEventListener('resize', useDebounceFn(update3))
}
function update3() {
top2.value = getValue$2(topVarName)
right2.value = getValue$2(rightVarName)
bottom2.value = getValue$2(bottomVarName)
left2.value = getValue$2(leftVarName)
}
return {
top: top2,
right: right2,
bottom: bottom2,
left: left2,
update: update3,
}
}
function getValue$2(position2) {
return getComputedStyle(document.documentElement).getPropertyValue(position2)
}
function useScriptTag(src, onLoaded = noop$6, options2 = {}) {
const {
immediate = true,
manual = false,
type: type4 = 'text/javascript',
async = true,
crossOrigin,
referrerPolicy,
noModule,
defer: defer2,
document: document2 = defaultDocument,
attrs = {},
} = options2
const scriptTag2 = ref(null)
let _promise = null
const loadScript = (waitForScriptLoad) =>
new Promise((resolve2, reject2) => {
const resolveWithElement = (el22) => {
scriptTag2.value = el22
resolve2(el22)
return el22
}
if (!document2) {
resolve2(false)
return
}
let shouldAppend = false
let el2 = document2.querySelector(`script[src="${resolveUnref(src)}"]`)
if (!el2) {
el2 = document2.createElement('script')
el2.type = type4
el2.async = async
el2.src = resolveUnref(src)
if (defer2) el2.defer = defer2
if (crossOrigin) el2.crossOrigin = crossOrigin
if (noModule) el2.noModule = noModule
if (referrerPolicy) el2.referrerPolicy = referrerPolicy
Object.entries(attrs).forEach(([name2, value2]) =>
el2 == null ? void 0 : el2.setAttribute(name2, value2)
)
shouldAppend = true
} else if (el2.hasAttribute('data-loaded')) {
resolveWithElement(el2)
}
el2.addEventListener('error', (event) => reject2(event))
el2.addEventListener('abort', (event) => reject2(event))
el2.addEventListener('load', () => {
el2.setAttribute('data-loaded', 'true')
onLoaded(el2)
resolveWithElement(el2)
})
if (shouldAppend) el2 = document2.head.appendChild(el2)
if (!waitForScriptLoad) resolveWithElement(el2)
})
const load = (waitForScriptLoad = true) => {
if (!_promise) _promise = loadScript(waitForScriptLoad)
return _promise
}
const unload = () => {
if (!document2) return
_promise = null
if (scriptTag2.value) scriptTag2.value = null
const el2 = document2.querySelector(`script[src="${resolveUnref(src)}"]`)
if (el2) document2.head.removeChild(el2)
}
if (immediate && !manual) tryOnMounted(load)
if (!manual) tryOnUnmounted(unload)
return { scriptTag: scriptTag2, load, unload }
}
function checkOverflowScroll(ele) {
const style2 = window.getComputedStyle(ele)
if (
style2.overflowX === 'scroll' ||
style2.overflowY === 'scroll' ||
(style2.overflowX === 'auto' && ele.clientHeight < ele.scrollHeight) ||
(style2.overflowY === 'auto' && ele.clientWidth < ele.scrollWidth)
) {
return true
} else {
const parent2 = ele.parentNode
if (!parent2 || parent2.tagName === 'BODY') return false
return checkOverflowScroll(parent2)
}
}
function preventDefault$1(rawEvent) {
const e2 = rawEvent || window.event
const _target = e2.target
if (checkOverflowScroll(_target)) return false
if (e2.touches.length > 1) return true
if (e2.preventDefault) e2.preventDefault()
return false
}
function useScrollLock(element, initialState = false) {
const isLocked = ref(initialState)
let stopTouchMoveListener = null
let initialOverflow
watch$1(
resolveRef(element),
(el2) => {
if (el2) {
const ele = el2
initialOverflow = ele.style.overflow
if (isLocked.value) ele.style.overflow = 'hidden'
}
},
{
immediate: true,
}
)
const lock2 = () => {
const ele = resolveUnref(element)
if (!ele || isLocked.value) return
if (isIOS) {
stopTouchMoveListener = useEventListener(
ele,
'touchmove',
(e2) => {
preventDefault$1(e2)
},
{ passive: false }
)
}
ele.style.overflow = 'hidden'
isLocked.value = true
}
const unlock2 = () => {
const ele = resolveUnref(element)
if (!ele || !isLocked.value) return
isIOS && (stopTouchMoveListener == null ? void 0 : stopTouchMoveListener())
ele.style.overflow = initialOverflow
isLocked.value = false
}
tryOnScopeDispose(unlock2)
return computed({
get() {
return isLocked.value
},
set(v4) {
if (v4) lock2()
else unlock2()
},
})
}
function useSessionStorage(key2, initialValue, options2 = {}) {
const { window: window2 = defaultWindow$1 } = options2
return useStorage(
key2,
initialValue,
window2 == null ? void 0 : window2.sessionStorage,
options2
)
}
var __defProp$5 = Object.defineProperty
var __getOwnPropSymbols$5 = Object.getOwnPropertySymbols
var __hasOwnProp$5 = Object.prototype.hasOwnProperty
var __propIsEnum$5 = Object.prototype.propertyIsEnumerable
var __defNormalProp$5 = (obj, key2, value2) =>
key2 in obj
? __defProp$5(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$5 = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$5.call(b2, prop)) __defNormalProp$5(a2, prop, b2[prop])
if (__getOwnPropSymbols$5)
for (var prop of __getOwnPropSymbols$5(b2)) {
if (__propIsEnum$5.call(b2, prop)) __defNormalProp$5(a2, prop, b2[prop])
}
return a2
}
function useShare(shareOptions = {}, options2 = {}) {
const { navigator: navigator2 = defaultNavigator } = options2
const _navigator = navigator2
const isSupported = useSupported(() => _navigator && 'canShare' in _navigator)
const share2 = async (overrideOptions = {}) => {
if (isSupported.value) {
const data2 = __spreadValues$5(
__spreadValues$5({}, resolveUnref(shareOptions)),
resolveUnref(overrideOptions)
)
let granted = true
if (data2.files && _navigator.canShare)
granted = _navigator.canShare({ files: data2.files })
if (granted) return _navigator.share(data2)
}
}
return {
isSupported,
share: share2,
}
}
const defaultSortFn = (source2, compareFn) => source2.sort(compareFn)
const defaultCompare = (a2, b2) => a2 - b2
function useSorted(...args) {
var _a2, _b2, _c2, _d
const [source2] = args
let compareFn = defaultCompare
let options2 = {}
if (args.length === 2) {
if (typeof args[1] === 'object') {
options2 = args[1]
compareFn = (_a2 = options2.compareFn) != null ? _a2 : defaultCompare
} else {
compareFn = (_b2 = args[1]) != null ? _b2 : defaultCompare
}
} else if (args.length > 2) {
compareFn = (_c2 = args[1]) != null ? _c2 : defaultCompare
options2 = (_d = args[2]) != null ? _d : {}
}
const { dirty = false, sortFn = defaultSortFn } = options2
if (!dirty) return computed(() => sortFn([...unref(source2)], compareFn))
watchEffect(() => {
const result = sortFn(unref(source2), compareFn)
if (isRef(source2)) source2.value = result
else source2.splice(0, source2.length, ...result)
})
return source2
}
function useSpeechRecognition(options2 = {}) {
const {
interimResults = true,
continuous = true,
window: window2 = defaultWindow$1,
} = options2
const lang = resolveRef(options2.lang || 'en-US')
const isListening = ref(false)
const isFinal = ref(false)
const result = ref('')
const error2 = shallowRef(void 0)
const toggle2 = (value2 = !isListening.value) => {
isListening.value = value2
}
const start2 = () => {
isListening.value = true
}
const stop2 = () => {
isListening.value = false
}
const SpeechRecognition =
window2 && (window2.SpeechRecognition || window2.webkitSpeechRecognition)
const isSupported = useSupported(() => SpeechRecognition)
let recognition
if (isSupported.value) {
recognition = new SpeechRecognition()
recognition.continuous = continuous
recognition.interimResults = interimResults
recognition.lang = unref(lang)
recognition.onstart = () => {
isFinal.value = false
}
watch$1(lang, (lang2) => {
if (recognition && !isListening.value) recognition.lang = lang2
})
recognition.onresult = (event) => {
const transcript = Array.from(event.results)
.map((result2) => {
isFinal.value = result2.isFinal
return result2[0]
})
.map((result2) => result2.transcript)
.join('')
result.value = transcript
error2.value = void 0
}
recognition.onerror = (event) => {
error2.value = event
}
recognition.onend = () => {
isListening.value = false
recognition.lang = unref(lang)
}
watch$1(isListening, () => {
if (isListening.value) recognition.start()
else recognition.stop()
})
}
tryOnScopeDispose(() => {
isListening.value = false
})
return {
isSupported,
isListening,
isFinal,
recognition,
result,
error: error2,
toggle: toggle2,
start: start2,
stop: stop2,
}
}
function useSpeechSynthesis(text2, options2 = {}) {
const {
pitch = 1,
rate = 1,
volume = 1,
window: window2 = defaultWindow$1,
} = options2
const synth = window2 && window2.speechSynthesis
const isSupported = useSupported(() => synth)
const isPlaying = ref(false)
const status = ref('init')
const spokenText = resolveRef(text2 || '')
const lang = resolveRef(options2.lang || 'en-US')
const error2 = shallowRef(void 0)
const toggle2 = (value2 = !isPlaying.value) => {
isPlaying.value = value2
}
const bindEventsForUtterance = (utterance2) => {
utterance2.lang = unref(lang)
utterance2.voice = unref(options2.voice) || null
utterance2.pitch = pitch
utterance2.rate = rate
utterance2.volume = volume
utterance2.onstart = () => {
isPlaying.value = true
status.value = 'play'
}
utterance2.onpause = () => {
isPlaying.value = false
status.value = 'pause'
}
utterance2.onresume = () => {
isPlaying.value = true
status.value = 'play'
}
utterance2.onend = () => {
isPlaying.value = false
status.value = 'end'
}
utterance2.onerror = (event) => {
error2.value = event
}
}
const utterance = computed(() => {
isPlaying.value = false
status.value = 'init'
const newUtterance = new SpeechSynthesisUtterance(spokenText.value)
bindEventsForUtterance(newUtterance)
return newUtterance
})
const speak = () => {
synth.cancel()
utterance && synth.speak(utterance.value)
}
const stop2 = () => {
synth.cancel()
isPlaying.value = false
}
if (isSupported.value) {
bindEventsForUtterance(utterance.value)
watch$1(lang, (lang2) => {
if (utterance.value && !isPlaying.value) utterance.value.lang = lang2
})
if (options2.voice) {
watch$1(options2.voice, () => {
synth.cancel()
})
}
watch$1(isPlaying, () => {
if (isPlaying.value) synth.resume()
else synth.pause()
})
}
tryOnScopeDispose(() => {
isPlaying.value = false
})
return {
isSupported,
isPlaying,
status,
utterance,
error: error2,
stop: stop2,
toggle: toggle2,
speak,
}
}
function useStepper(steps, initialStep) {
const stepsRef = ref(steps)
const stepNames = computed(() =>
Array.isArray(stepsRef.value) ? stepsRef.value : Object.keys(stepsRef.value)
)
const index2 = ref(
stepNames.value.indexOf(
initialStep != null ? initialStep : stepNames.value[0]
)
)
const current2 = computed(() => at2(index2.value))
const isFirst = computed(() => index2.value === 0)
const isLast = computed(() => index2.value === stepNames.value.length - 1)
const next = computed(() => stepNames.value[index2.value + 1])
const previous = computed(() => stepNames.value[index2.value - 1])
function at2(index22) {
if (Array.isArray(stepsRef.value)) return stepsRef.value[index22]
return stepsRef.value[stepNames.value[index22]]
}
function get3(step) {
if (!stepNames.value.includes(step)) return
return at2(stepNames.value.indexOf(step))
}
function goTo(step) {
if (stepNames.value.includes(step))
index2.value = stepNames.value.indexOf(step)
}
function goToNext() {
if (isLast.value) return
index2.value++
}
function goToPrevious() {
if (isFirst.value) return
index2.value--
}
function goBackTo(step) {
if (isAfter(step)) goTo(step)
}
function isNext(step) {
return stepNames.value.indexOf(step) === index2.value + 1
}
function isPrevious(step) {
return stepNames.value.indexOf(step) === index2.value - 1
}
function isCurrent(step) {
return stepNames.value.indexOf(step) === index2.value
}
function isBefore(step) {
return index2.value < stepNames.value.indexOf(step)
}
function isAfter(step) {
return index2.value > stepNames.value.indexOf(step)
}
return {
steps: stepsRef,
stepNames,
index: index2,
current: current2,
next,
previous,
isFirst,
isLast,
at: at2,
get: get3,
goTo,
goToNext,
goToPrevious,
goBackTo,
isNext,
isPrevious,
isCurrent,
isBefore,
isAfter,
}
}
var __defProp$4 = Object.defineProperty
var __getOwnPropSymbols$4 = Object.getOwnPropertySymbols
var __hasOwnProp$4 = Object.prototype.hasOwnProperty
var __propIsEnum$4 = Object.prototype.propertyIsEnumerable
var __defNormalProp$4 = (obj, key2, value2) =>
key2 in obj
? __defProp$4(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$4 = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$4.call(b2, prop)) __defNormalProp$4(a2, prop, b2[prop])
if (__getOwnPropSymbols$4)
for (var prop of __getOwnPropSymbols$4(b2)) {
if (__propIsEnum$4.call(b2, prop)) __defNormalProp$4(a2, prop, b2[prop])
}
return a2
}
function useStorageAsync(key2, initialValue, storage2, options2 = {}) {
var _a2
const {
flush: flush2 = 'pre',
deep = true,
listenToStorageChanges = true,
writeDefaults = true,
mergeDefaults = false,
shallow,
window: window2 = defaultWindow$1,
eventFilter,
onError = (e2) => {
console.error(e2)
},
} = options2
const rawInit = resolveUnref(initialValue)
const type4 = guessSerializerType(rawInit)
const data2 = (shallow ? shallowRef : ref)(initialValue)
const serializer =
(_a2 = options2.serializer) != null ? _a2 : StorageSerializers[type4]
if (!storage2) {
try {
storage2 = getSSRHandler('getDefaultStorage', () => {
var _a22
return (_a22 = defaultWindow$1) == null ? void 0 : _a22.localStorage
})()
} catch (e2) {
onError(e2)
}
}
async function read2(event) {
if (!storage2 || (event && event.key !== key2)) return
try {
const rawValue = event ? event.newValue : await storage2.getItem(key2)
if (rawValue == null) {
data2.value = rawInit
if (writeDefaults && rawInit !== null)
await storage2.setItem(key2, await serializer.write(rawInit))
} else if (mergeDefaults) {
const value2 = await serializer.read(rawValue)
if (isFunction$k(mergeDefaults))
data2.value = mergeDefaults(value2, rawInit)
else if (type4 === 'object' && !Array.isArray(value2))
data2.value = __spreadValues$4(__spreadValues$4({}, rawInit), value2)
else data2.value = value2
} else {
data2.value = await serializer.read(rawValue)
}
} catch (e2) {
onError(e2)
}
}
read2()
if (window2 && listenToStorageChanges)
useEventListener(window2, 'storage', (e2) => setTimeout(() => read2(e2), 0))
if (storage2) {
watchWithFilter(
data2,
async () => {
try {
if (data2.value == null) await storage2.removeItem(key2)
else await storage2.setItem(key2, await serializer.write(data2.value))
} catch (e2) {
onError(e2)
}
},
{
flush: flush2,
deep,
eventFilter,
}
)
}
return data2
}
let _id = 0
function useStyleTag(css2, options2 = {}) {
const isLoaded = ref(false)
const {
document: document2 = defaultDocument,
immediate = true,
manual = false,
id: id2 = `vueuse_styletag_${++_id}`,
} = options2
const cssRef = ref(css2)
let stop2 = () => {}
const load = () => {
if (!document2) return
const el2 =
document2.getElementById(id2) || document2.createElement('style')
if (!el2.isConnected) {
el2.type = 'text/css'
el2.id = id2
if (options2.media) el2.media = options2.media
document2.head.appendChild(el2)
}
if (isLoaded.value) return
stop2 = watch$1(
cssRef,
(value2) => {
el2.textContent = value2
},
{ immediate: true }
)
isLoaded.value = true
}
const unload = () => {
if (!document2 || !isLoaded.value) return
stop2()
document2.head.removeChild(document2.getElementById(id2))
isLoaded.value = false
}
if (immediate && !manual) tryOnMounted(load)
if (!manual) tryOnScopeDispose(unload)
return {
id: id2,
css: cssRef,
unload,
load,
isLoaded: readonly(isLoaded),
}
}
function useTemplateRefsList() {
const refs = ref([])
refs.value.set = (el2) => {
if (el2) refs.value.push(el2)
}
onBeforeUpdate(() => {
refs.value.length = 0
})
return refs
}
function useTextDirection(options2 = {}) {
const {
document: document2 = defaultDocument,
selector: selector2 = 'html',
observe = false,
initialValue = 'ltr',
} = options2
function getValue2() {
var _a2, _b2
return (_b2 =
(_a2 = document2 == null ? void 0 : document2.querySelector(selector2)) ==
null
? void 0
: _a2.getAttribute('dir')) != null
? _b2
: initialValue
}
const dir3 = ref(getValue2())
tryOnMounted(() => (dir3.value = getValue2()))
if (observe && document2) {
useMutationObserver(
document2.querySelector(selector2),
() => (dir3.value = getValue2()),
{ attributes: true }
)
}
return computed({
get() {
return dir3.value
},
set(v4) {
var _a2, _b2
dir3.value = v4
if (!document2) return
if (dir3.value)
(_a2 = document2.querySelector(selector2)) == null
? void 0
: _a2.setAttribute('dir', dir3.value)
else
(_b2 = document2.querySelector(selector2)) == null
? void 0
: _b2.removeAttribute('dir')
},
})
}
function getRangesFromSelection(selection) {
var _a2
const rangeCount = (_a2 = selection.rangeCount) != null ? _a2 : 0
const ranges = new Array(rangeCount)
for (let i2 = 0; i2 < rangeCount; i2++) {
const range3 = selection.getRangeAt(i2)
ranges[i2] = range3
}
return ranges
}
function useTextSelection(options2 = {}) {
const { window: window2 = defaultWindow$1 } = options2
const selection = ref(null)
const text2 = computed(() => {
var _a2, _b2
return (_b2 = (_a2 = selection.value) == null ? void 0 : _a2.toString()) !=
null
? _b2
: ''
})
const ranges = computed(() =>
selection.value ? getRangesFromSelection(selection.value) : []
)
const rects = computed(() =>
ranges.value.map((range3) => range3.getBoundingClientRect())
)
function onSelectionChange() {
selection.value = null
if (window2) selection.value = window2.getSelection()
}
if (window2)
useEventListener(window2.document, 'selectionchange', onSelectionChange)
return {
text: text2,
rects,
ranges,
selection,
}
}
function useTextareaAutosize(options2) {
const textarea = ref(options2 == null ? void 0 : options2.element)
const input = ref(options2 == null ? void 0 : options2.input)
function triggerResize() {
var _a2, _b2
if (!textarea.value) return
textarea.value.style.height = '1px'
textarea.value.style.height = `${
(_a2 = textarea.value) == null ? void 0 : _a2.scrollHeight
}px`
;(_b2 = options2 == null ? void 0 : options2.onResize) == null
? void 0
: _b2.call(options2)
}
watch$1([input, textarea], triggerResize, { immediate: true })
useResizeObserver(textarea, () => triggerResize())
if (options2 == null ? void 0 : options2.watch)
watch$1(options2.watch, triggerResize, { immediate: true, deep: true })
return {
textarea,
input,
triggerResize,
}
}
var __defProp$3 = Object.defineProperty
var __defProps = Object.defineProperties
var __getOwnPropDescs = Object.getOwnPropertyDescriptors
var __getOwnPropSymbols$3 = Object.getOwnPropertySymbols
var __hasOwnProp$3 = Object.prototype.hasOwnProperty
var __propIsEnum$3 = Object.prototype.propertyIsEnumerable
var __defNormalProp$3 = (obj, key2, value2) =>
key2 in obj
? __defProp$3(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$3 = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$3.call(b2, prop)) __defNormalProp$3(a2, prop, b2[prop])
if (__getOwnPropSymbols$3)
for (var prop of __getOwnPropSymbols$3(b2)) {
if (__propIsEnum$3.call(b2, prop)) __defNormalProp$3(a2, prop, b2[prop])
}
return a2
}
var __spreadProps = (a2, b2) => __defProps(a2, __getOwnPropDescs(b2))
function useThrottledRefHistory(source2, options2 = {}) {
const { throttle: throttle2 = 200, trailing = true } = options2
const filter2 = throttleFilter(throttle2, trailing)
const history2 = useRefHistory(
source2,
__spreadProps(__spreadValues$3({}, options2), { eventFilter: filter2 })
)
return __spreadValues$3({}, history2)
}
var __defProp$2 = Object.defineProperty
var __getOwnPropSymbols$2 = Object.getOwnPropertySymbols
var __hasOwnProp$2 = Object.prototype.hasOwnProperty
var __propIsEnum$2 = Object.prototype.propertyIsEnumerable
var __defNormalProp$2 = (obj, key2, value2) =>
key2 in obj
? __defProp$2(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$2 = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$2.call(b2, prop)) __defNormalProp$2(a2, prop, b2[prop])
if (__getOwnPropSymbols$2)
for (var prop of __getOwnPropSymbols$2(b2)) {
if (__propIsEnum$2.call(b2, prop)) __defNormalProp$2(a2, prop, b2[prop])
}
return a2
}
var __objRest = (source2, exclude) => {
var target2 = {}
for (var prop in source2)
if (__hasOwnProp$2.call(source2, prop) && exclude.indexOf(prop) < 0)
target2[prop] = source2[prop]
if (source2 != null && __getOwnPropSymbols$2)
for (var prop of __getOwnPropSymbols$2(source2)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum$2.call(source2, prop))
target2[prop] = source2[prop]
}
return target2
}
const DEFAULT_UNITS = [
{ max: 6e4, value: 1e3, name: 'second' },
{ max: 276e4, value: 6e4, name: 'minute' },
{ max: 72e6, value: 36e5, name: 'hour' },
{ max: 5184e5, value: 864e5, name: 'day' },
{ max: 24192e5, value: 6048e5, name: 'week' },
{ max: 28512e6, value: 2592e6, name: 'month' },
{ max: Infinity, value: 31536e6, name: 'year' },
]
const DEFAULT_MESSAGES = {
justNow: 'just now',
past: (n2) => (n2.match(/\d/) ? `${n2} ago` : n2),
future: (n2) => (n2.match(/\d/) ? `in ${n2}` : n2),
month: (n2, past) =>
n2 === 1
? past
? 'last month'
: 'next month'
: `${n2} month${n2 > 1 ? 's' : ''}`,
year: (n2, past) =>
n2 === 1
? past
? 'last year'
: 'next year'
: `${n2} year${n2 > 1 ? 's' : ''}`,
day: (n2, past) =>
n2 === 1
? past
? 'yesterday'
: 'tomorrow'
: `${n2} day${n2 > 1 ? 's' : ''}`,
week: (n2, past) =>
n2 === 1
? past
? 'last week'
: 'next week'
: `${n2} week${n2 > 1 ? 's' : ''}`,
hour: (n2) => `${n2} hour${n2 > 1 ? 's' : ''}`,
minute: (n2) => `${n2} minute${n2 > 1 ? 's' : ''}`,
second: (n2) => `${n2} second${n2 > 1 ? 's' : ''}`,
invalid: '',
}
const DEFAULT_FORMATTER = (date4) => date4.toISOString().slice(0, 10)
function useTimeAgo(time2, options2 = {}) {
const { controls: exposeControls = false, updateInterval = 3e4 } = options2
const _a2 = useNow({ interval: updateInterval, controls: true }),
{ now: now2 } = _a2,
controls = __objRest(_a2, ['now'])
const timeAgo = computed(() =>
formatTimeAgo(new Date(resolveUnref(time2)), options2, unref(now2.value))
)
if (exposeControls) {
return __spreadValues$2(
{
timeAgo,
},
controls
)
} else {
return timeAgo
}
}
function formatTimeAgo(from, options2 = {}, now2 = Date.now()) {
var _a2
const {
max: max3,
messages: messages2 = DEFAULT_MESSAGES,
fullDateFormatter = DEFAULT_FORMATTER,
units = DEFAULT_UNITS,
showSecond = false,
rounding = 'round',
} = options2
const roundFn =
typeof rounding === 'number'
? (n2) => +n2.toFixed(rounding)
: Math[rounding]
const diff = +now2 - +from
const absDiff = Math.abs(diff)
function getValue2(diff2, unit) {
return roundFn(Math.abs(diff2) / unit.value)
}
function format2(diff2, unit) {
const val2 = getValue2(diff2, unit)
const past = diff2 > 0
const str = applyFormat(unit.name, val2, past)
return applyFormat(past ? 'past' : 'future', str, past)
}
function applyFormat(name2, val2, isPast) {
const formatter2 = messages2[name2]
if (typeof formatter2 === 'function') return formatter2(val2, isPast)
return formatter2.replace('{0}', val2.toString())
}
if (absDiff < 6e4 && !showSecond) return messages2.justNow
if (typeof max3 === 'number' && absDiff > max3)
return fullDateFormatter(new Date(from))
if (typeof max3 === 'string') {
const unitMax =
(_a2 = units.find((i2) => i2.name === max3)) == null ? void 0 : _a2.max
if (unitMax && absDiff > unitMax) return fullDateFormatter(new Date(from))
}
for (const [idx, unit] of units.entries()) {
const val2 = getValue2(diff, unit)
if (val2 <= 0 && units[idx - 1]) return format2(diff, units[idx - 1])
if (absDiff < unit.max) return format2(diff, unit)
}
return messages2.invalid
}
function useTimeoutPoll(fn2, interval, timeoutPollOptions) {
const { start: start2 } = useTimeoutFn(loop, interval)
const isActive = ref(false)
async function loop() {
if (!isActive.value) return
await fn2()
start2()
}
function resume() {
if (!isActive.value) {
isActive.value = true
loop()
}
}
function pause() {
isActive.value = false
}
if (timeoutPollOptions == null ? void 0 : timeoutPollOptions.immediate)
resume()
tryOnScopeDispose(pause)
return {
isActive,
pause,
resume,
}
}
var __defProp$1 = Object.defineProperty
var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols
var __hasOwnProp$1 = Object.prototype.hasOwnProperty
var __propIsEnum$1 = Object.prototype.propertyIsEnumerable
var __defNormalProp$1 = (obj, key2, value2) =>
key2 in obj
? __defProp$1(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues$1 = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp$1.call(b2, prop)) __defNormalProp$1(a2, prop, b2[prop])
if (__getOwnPropSymbols$1)
for (var prop of __getOwnPropSymbols$1(b2)) {
if (__propIsEnum$1.call(b2, prop)) __defNormalProp$1(a2, prop, b2[prop])
}
return a2
}
function useTimestamp(options2 = {}) {
const {
controls: exposeControls = false,
offset: offset2 = 0,
immediate = true,
interval = 'requestAnimationFrame',
callback,
} = options2
const ts = ref(timestamp$2() + offset2)
const update3 = () => (ts.value = timestamp$2() + offset2)
const cb = callback
? () => {
update3()
callback(ts.value)
}
: update3
const controls =
interval === 'requestAnimationFrame'
? useRafFn(cb, { immediate })
: useIntervalFn(cb, interval, { immediate })
if (exposeControls) {
return __spreadValues$1(
{
timestamp: ts,
},
controls
)
} else {
return ts
}
}
function useTitle$1(newTitle = null, options2 = {}) {
var _a2, _b2
const { document: document2 = defaultDocument } = options2
const title = resolveRef(
(_a2 =
newTitle != null
? newTitle
: document2 == null
? void 0
: document2.title) != null
? _a2
: null
)
const isReadonly2 = newTitle && isFunction$k(newTitle)
function format2(t3) {
if (!('titleTemplate' in options2)) return t3
const template2 = options2.titleTemplate || '%s'
return isFunction$k(template2)
? template2(t3)
: unref(template2).replace(/%s/g, t3)
}
watch$1(
title,
(t3, o2) => {
if (t3 !== o2 && document2)
document2.title = format2(isString$e(t3) ? t3 : '')
},
{ immediate: true }
)
if (
options2.observe &&
!options2.titleTemplate &&
document2 &&
!isReadonly2
) {
useMutationObserver(
(_b2 = document2.head) == null ? void 0 : _b2.querySelector('title'),
() => {
if (document2 && document2.title !== title.value)
title.value = format2(document2.title)
},
{ childList: true }
)
}
return title
}
var __defProp = Object.defineProperty
var __getOwnPropSymbols = Object.getOwnPropertySymbols
var __hasOwnProp = Object.prototype.hasOwnProperty
var __propIsEnum = Object.prototype.propertyIsEnumerable
var __defNormalProp = (obj, key2, value2) =>
key2 in obj
? __defProp(obj, key2, {
enumerable: true,
configurable: true,
writable: true,
value: value2,
})
: (obj[key2] = value2)
var __spreadValues = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp.call(b2, prop)) __defNormalProp(a2, prop, b2[prop])
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b2)) {
if (__propIsEnum.call(b2, prop)) __defNormalProp(a2, prop, b2[prop])
}
return a2
}
const _TransitionPresets = {
easeInSine: [0.12, 0, 0.39, 0],
easeOutSine: [0.61, 1, 0.88, 1],
easeInOutSine: [0.37, 0, 0.63, 1],
easeInQuad: [0.11, 0, 0.5, 0],
easeOutQuad: [0.5, 1, 0.89, 1],
easeInOutQuad: [0.45, 0, 0.55, 1],
easeInCubic: [0.32, 0, 0.67, 0],
easeOutCubic: [0.33, 1, 0.68, 1],
easeInOutCubic: [0.65, 0, 0.35, 1],
easeInQuart: [0.5, 0, 0.75, 0],
easeOutQuart: [0.25, 1, 0.5, 1],
easeInOutQuart: [0.76, 0, 0.24, 1],
easeInQuint: [0.64, 0, 0.78, 0],
easeOutQuint: [0.22, 1, 0.36, 1],
easeInOutQuint: [0.83, 0, 0.17, 1],
easeInExpo: [0.7, 0, 0.84, 0],
easeOutExpo: [0.16, 1, 0.3, 1],
easeInOutExpo: [0.87, 0, 0.13, 1],
easeInCirc: [0.55, 0, 1, 0.45],
easeOutCirc: [0, 0.55, 0.45, 1],
easeInOutCirc: [0.85, 0, 0.15, 1],
easeInBack: [0.36, 0, 0.66, -0.56],
easeOutBack: [0.34, 1.56, 0.64, 1],
easeInOutBack: [0.68, -0.6, 0.32, 1.6],
}
const TransitionPresets = __spreadValues(
{
linear: identity$1,
},
_TransitionPresets
)
function createEasingFunction([p0, p1, p2, p3]) {
const a2 = (a1, a22) => 1 - 3 * a22 + 3 * a1
const b2 = (a1, a22) => 3 * a22 - 6 * a1
const c2 = (a1) => 3 * a1
const calcBezier = (t3, a1, a22) =>
((a2(a1, a22) * t3 + b2(a1, a22)) * t3 + c2(a1)) * t3
const getSlope = (t3, a1, a22) =>
3 * a2(a1, a22) * t3 * t3 + 2 * b2(a1, a22) * t3 + c2(a1)
const getTforX = (x2) => {
let aGuessT = x2
for (let i2 = 0; i2 < 4; ++i2) {
const currentSlope = getSlope(aGuessT, p0, p2)
if (currentSlope === 0) return aGuessT
const currentX = calcBezier(aGuessT, p0, p2) - x2
aGuessT -= currentX / currentSlope
}
return aGuessT
}
return (x2) =>
p0 === p1 && p2 === p3 ? x2 : calcBezier(getTforX(x2), p1, p3)
}
function useTransition(source2, options2 = {}) {
const {
delay: delay2 = 0,
disabled = false,
duration: duration2 = 1e3,
onFinished = noop$6,
onStarted = noop$6,
transition = identity$1,
} = options2
const currentTransition = computed(() => {
const t3 = unref(transition)
return isFunction$k(t3) ? t3 : createEasingFunction(t3)
})
const sourceValue = computed(() => {
const s2 = unref(source2)
return isNumber$g(s2) ? s2 : s2.map(unref)
})
const sourceVector = computed(() =>
isNumber$g(sourceValue.value) ? [sourceValue.value] : sourceValue.value
)
const outputVector = ref(sourceVector.value.slice(0))
let currentDuration
let diffVector
let endAt
let startAt
let startVector
const { resume, pause } = useRafFn(
() => {
const now2 = Date.now()
const progress = clamp$1(1 - (endAt - now2) / currentDuration, 0, 1)
outputVector.value = startVector.map((val2, i2) => {
var _a2
return (
val2 +
((_a2 = diffVector[i2]) != null ? _a2 : 0) *
currentTransition.value(progress)
)
})
if (progress >= 1) {
pause()
onFinished()
}
},
{ immediate: false }
)
const start2 = () => {
pause()
currentDuration = unref(duration2)
diffVector = outputVector.value.map((n2, i2) => {
var _a2, _b2
return (
((_a2 = sourceVector.value[i2]) != null ? _a2 : 0) -
((_b2 = outputVector.value[i2]) != null ? _b2 : 0)
)
})
startVector = outputVector.value.slice(0)
startAt = Date.now()
endAt = startAt + currentDuration
resume()
onStarted()
}
const timeout = useTimeoutFn(start2, delay2, { immediate: false })
watch$1(
sourceVector,
() => {
if (unref(disabled)) return
if (unref(delay2) <= 0) start2()
else timeout.start()
},
{ deep: true }
)
watch$1(
() => unref(disabled),
(v4) => {
if (v4) {
outputVector.value = sourceVector.value.slice(0)
pause()
}
}
)
return computed(() => {
const targetVector = unref(disabled) ? sourceVector : outputVector
return isNumber$g(sourceValue.value)
? targetVector.value[0]
: targetVector.value
})
}
function useUrlSearchParams(mode2 = 'history', options2 = {}) {
const {
initialValue = {},
removeNullishValues = true,
removeFalsyValues = false,
write: enableWrite = true,
window: window2 = defaultWindow$1,
} = options2
if (!window2) return reactive(initialValue)
const state2 = reactive({})
function getRawParams() {
if (mode2 === 'history') {
return window2.location.search || ''
} else if (mode2 === 'hash') {
const hash2 = window2.location.hash || ''
const index2 = hash2.indexOf('?')
return index2 > 0 ? hash2.slice(index2) : ''
} else {
return (window2.location.hash || '').replace(/^#/, '')
}
}
function constructQuery(params2) {
const stringified = params2.toString()
if (mode2 === 'history')
return `${stringified ? `?${stringified}` : ''}${
window2.location.hash || ''
}`
if (mode2 === 'hash-params')
return `${window2.location.search || ''}${
stringified ? `#${stringified}` : ''
}`
const hash2 = window2.location.hash || '#'
const index2 = hash2.indexOf('?')
if (index2 > 0)
return `${hash2.slice(0, index2)}${stringified ? `?${stringified}` : ''}`
return `${hash2}${stringified ? `?${stringified}` : ''}`
}
function read2() {
return new URLSearchParams(getRawParams())
}
function updateState(params2) {
const unusedKeys = new Set(Object.keys(state2))
for (const key2 of params2.keys()) {
const paramsForKey = params2.getAll(key2)
state2[key2] =
paramsForKey.length > 1 ? paramsForKey : params2.get(key2) || ''
unusedKeys.delete(key2)
}
Array.from(unusedKeys).forEach((key2) => delete state2[key2])
}
const { pause, resume } = watchPausable(
state2,
() => {
const params2 = new URLSearchParams('')
Object.keys(state2).forEach((key2) => {
const mapEntry = state2[key2]
if (Array.isArray(mapEntry))
mapEntry.forEach((value2) => params2.append(key2, value2))
else if (removeNullishValues && mapEntry == null) params2.delete(key2)
else if (removeFalsyValues && !mapEntry) params2.delete(key2)
else params2.set(key2, mapEntry)
})
write2(params2)
},
{ deep: true }
)
function write2(params2, shouldUpdate) {
pause()
if (shouldUpdate) updateState(params2)
window2.history.replaceState(
window2.history.state,
window2.document.title,
window2.location.pathname + constructQuery(params2)
)
resume()
}
function onChanged() {
if (!enableWrite) return
write2(read2(), true)
}
useEventListener(window2, 'popstate', onChanged, false)
if (mode2 !== 'history')
useEventListener(window2, 'hashchange', onChanged, false)
const initial = read2()
if (initial.keys().next().value) updateState(initial)
else Object.assign(state2, initialValue)
return state2
}
function useUserMedia(options2 = {}) {
var _a2, _b2
const enabled = ref((_a2 = options2.enabled) != null ? _a2 : false)
const autoSwitch = ref((_b2 = options2.autoSwitch) != null ? _b2 : true)
const videoDeviceId = ref(options2.videoDeviceId)
const audioDeviceId = ref(options2.audioDeviceId)
const { navigator: navigator2 = defaultNavigator } = options2
const isSupported = useSupported(() => {
var _a22
return (_a22 = navigator2 == null ? void 0 : navigator2.mediaDevices) ==
null
? void 0
: _a22.getUserMedia
})
const stream = shallowRef()
function getDeviceOptions(device) {
if (device.value === 'none' || device.value === false) return false
if (device.value == null) return true
return {
deviceId: device.value,
}
}
async function _start() {
if (!isSupported.value || stream.value) return
stream.value = await navigator2.mediaDevices.getUserMedia({
video: getDeviceOptions(videoDeviceId),
audio: getDeviceOptions(audioDeviceId),
})
return stream.value
}
async function _stop() {
var _a22
;(_a22 = stream.value) == null
? void 0
: _a22.getTracks().forEach((t3) => t3.stop())
stream.value = void 0
}
function stop2() {
_stop()
enabled.value = false
}
async function start2() {
await _start()
if (stream.value) enabled.value = true
return stream.value
}
async function restart() {
_stop()
return await start2()
}
watch$1(
enabled,
(v4) => {
if (v4) _start()
else _stop()
},
{ immediate: true }
)
watch$1(
[videoDeviceId, audioDeviceId],
() => {
if (autoSwitch.value && stream.value) restart()
},
{ immediate: true }
)
return {
isSupported,
stream,
start: start2,
stop: stop2,
restart,
videoDeviceId,
audioDeviceId,
enabled,
autoSwitch,
}
}
function useVModel(props2, key2, emit2, options2 = {}) {
var _a2, _b2, _c2
const {
clone: clone2 = false,
passive: passive2 = false,
eventName,
deep = false,
defaultValue,
} = options2
const vm = getCurrentInstance()
const _emit =
emit2 ||
(vm == null ? void 0 : vm.emit) ||
((_a2 = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a2.bind(vm)) ||
((_c2 =
(_b2 = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b2.$emit) ==
null
? void 0
: _c2.bind(vm == null ? void 0 : vm.proxy))
let event = eventName
if (!key2) {
{
key2 = 'modelValue'
}
}
event = eventName || event || `update:${key2.toString()}`
const cloneFn = (val2) =>
!clone2 ? val2 : isFunction$k(clone2) ? clone2(val2) : cloneFnJSON(val2)
const getValue2 = () =>
isDef$1(props2[key2]) ? cloneFn(props2[key2]) : defaultValue
if (passive2) {
const initialValue = getValue2()
const proxy = ref(initialValue)
watch$1(
() => props2[key2],
(v4) => (proxy.value = cloneFn(v4))
)
watch$1(
proxy,
(v4) => {
if (v4 !== props2[key2] || deep) _emit(event, v4)
},
{ deep }
)
return proxy
} else {
return computed({
get() {
return getValue2()
},
set(value2) {
_emit(event, value2)
},
})
}
}
function useVModels(props2, emit2, options2 = {}) {
const ret = {}
for (const key2 in props2)
ret[key2] = useVModel(props2, key2, emit2, options2)
return ret
}
function useVibrate(options2) {
const {
pattern: pattern4 = [],
interval = 0,
navigator: navigator2 = defaultNavigator,
} = options2 || {}
const isSupported = useSupported(
() => typeof navigator2 !== 'undefined' && 'vibrate' in navigator2
)
const patternRef = resolveRef(pattern4)
let intervalControls
const vibrate = (pattern22 = patternRef.value) => {
if (isSupported.value) navigator2.vibrate(pattern22)
}
const stop2 = () => {
if (isSupported.value) navigator2.vibrate(0)
intervalControls == null ? void 0 : intervalControls.pause()
}
if (interval > 0) {
intervalControls = useIntervalFn(vibrate, interval, {
immediate: false,
immediateCallback: false,
})
}
return {
isSupported,
pattern: pattern4,
intervalControls,
vibrate,
stop: stop2,
}
}
function useVirtualList(list2, options2) {
const {
containerStyle,
wrapperProps,
scrollTo,
calculateRange,
currentList,
containerRef,
} =
'itemHeight' in options2
? useVerticalVirtualList(options2, list2)
: useHorizontalVirtualList(options2, list2)
return {
list: currentList,
scrollTo,
containerProps: {
ref: containerRef,
onScroll: () => {
calculateRange()
},
style: containerStyle,
},
wrapperProps,
}
}
function useVirtualListResources(list2) {
const containerRef = ref(null)
const size = useElementSize(containerRef)
const currentList = ref([])
const source2 = shallowRef(list2)
const state2 = ref({ start: 0, end: 10 })
return { state: state2, source: source2, currentList, size, containerRef }
}
function createGetViewCapacity(state2, source2, itemSize2) {
return (containerSize) => {
if (typeof itemSize2 === 'number')
return Math.ceil(containerSize / itemSize2)
const { start: start2 = 0 } = state2.value
let sum2 = 0
let capacity = 0
for (let i2 = start2; i2 < source2.value.length; i2++) {
const size = itemSize2(i2)
sum2 += size
capacity = i2
if (sum2 > containerSize) break
}
return capacity - start2
}
}
function createGetOffset(source2, itemSize2) {
return (scrollDirection) => {
if (typeof itemSize2 === 'number')
return Math.floor(scrollDirection / itemSize2) + 1
let sum2 = 0
let offset2 = 0
for (let i2 = 0; i2 < source2.value.length; i2++) {
const size = itemSize2(i2)
sum2 += size
if (sum2 >= scrollDirection) {
offset2 = i2
break
}
}
return offset2 + 1
}
}
function createCalculateRange(
type4,
overscan,
getOffset2,
getViewCapacity,
{ containerRef, state: state2, currentList, source: source2 }
) {
return () => {
const element = containerRef.value
if (element) {
const offset2 = getOffset2(
type4 === 'vertical' ? element.scrollTop : element.scrollLeft
)
const viewCapacity = getViewCapacity(
type4 === 'vertical' ? element.clientHeight : element.clientWidth
)
const from = offset2 - overscan
const to = offset2 + viewCapacity + overscan
state2.value = {
start: from < 0 ? 0 : from,
end: to > source2.value.length ? source2.value.length : to,
}
currentList.value = source2.value
.slice(state2.value.start, state2.value.end)
.map((ele, index2) => ({
data: ele,
index: index2 + state2.value.start,
}))
}
}
}
function createGetDistance(itemSize2, source2) {
return (index2) => {
if (typeof itemSize2 === 'number') {
const size2 = index2 * itemSize2
return size2
}
const size = source2.value
.slice(0, index2)
.reduce((sum2, _2, i2) => sum2 + itemSize2(i2), 0)
return size
}
}
function useWatchForSizes(size, list2, calculateRange) {
watch$1([size.width, size.height, list2], () => {
calculateRange()
})
}
function createComputedTotalSize(itemSize2, source2) {
return computed(() => {
if (typeof itemSize2 === 'number') return source2.value.length * itemSize2
return source2.value.reduce(
(sum2, _2, index2) => sum2 + itemSize2(index2),
0
)
})
}
const scrollToDictionaryForElementScrollKey = {
horizontal: 'scrollLeft',
vertical: 'scrollTop',
}
function createScrollTo(type4, calculateRange, getDistance, containerRef) {
return (index2) => {
if (containerRef.value) {
containerRef.value[scrollToDictionaryForElementScrollKey[type4]] =
getDistance(index2)
calculateRange()
}
}
}
function useHorizontalVirtualList(options2, list2) {
const resources = useVirtualListResources(list2)
const {
state: state2,
source: source2,
currentList,
size,
containerRef,
} = resources
const containerStyle = { overflowX: 'auto' }
const { itemWidth, overscan = 5 } = options2
const getViewCapacity = createGetViewCapacity(state2, source2, itemWidth)
const getOffset2 = createGetOffset(source2, itemWidth)
const calculateRange = createCalculateRange(
'horizontal',
overscan,
getOffset2,
getViewCapacity,
resources
)
const getDistanceLeft = createGetDistance(itemWidth, source2)
const offsetLeft = computed(() => getDistanceLeft(state2.value.start))
const totalWidth = createComputedTotalSize(itemWidth, source2)
useWatchForSizes(size, list2, calculateRange)
const scrollTo = createScrollTo(
'horizontal',
calculateRange,
getDistanceLeft,
containerRef
)
const wrapperProps = computed(() => {
return {
style: {
height: '100%',
width: `${totalWidth.value - offsetLeft.value}px`,
marginLeft: `${offsetLeft.value}px`,
display: 'flex',
},
}
})
return {
scrollTo,
calculateRange,
wrapperProps,
containerStyle,
currentList,
containerRef,
}
}
function useVerticalVirtualList(options2, list2) {
const resources = useVirtualListResources(list2)
const {
state: state2,
source: source2,
currentList,
size,
containerRef,
} = resources
const containerStyle = { overflowY: 'auto' }
const { itemHeight, overscan = 5 } = options2
const getViewCapacity = createGetViewCapacity(state2, source2, itemHeight)
const getOffset2 = createGetOffset(source2, itemHeight)
const calculateRange = createCalculateRange(
'vertical',
overscan,
getOffset2,
getViewCapacity,
resources
)
const getDistanceTop = createGetDistance(itemHeight, source2)
const offsetTop = computed(() => getDistanceTop(state2.value.start))
const totalHeight = createComputedTotalSize(itemHeight, source2)
useWatchForSizes(size, list2, calculateRange)
const scrollTo = createScrollTo(
'vertical',
calculateRange,
getDistanceTop,
containerRef
)
const wrapperProps = computed(() => {
return {
style: {
width: '100%',
height: `${totalHeight.value - offsetTop.value}px`,
marginTop: `${offsetTop.value}px`,
},
}
})
return {
calculateRange,
scrollTo,
containerStyle,
wrapperProps,
currentList,
containerRef,
}
}
const useWakeLock = (options2 = {}) => {
const {
navigator: navigator2 = defaultNavigator,
document: document2 = defaultDocument,
} = options2
let wakeLock
const isSupported = useSupported(() => navigator2 && 'wakeLock' in navigator2)
const isActive = ref(false)
async function onVisibilityChange() {
if (!isSupported.value || !wakeLock) return
if (document2 && document2.visibilityState === 'visible')
wakeLock = await navigator2.wakeLock.request('screen')
isActive.value = !wakeLock.released
}
if (document2)
useEventListener(document2, 'visibilitychange', onVisibilityChange, {
passive: true,
})
async function request3(type4) {
if (!isSupported.value) return
wakeLock = await navigator2.wakeLock.request(type4)
isActive.value = !wakeLock.released
}
async function release2() {
if (!isSupported.value || !wakeLock) return
await wakeLock.release()
isActive.value = !wakeLock.released
wakeLock = null
}
return {
isSupported,
isActive,
request: request3,
release: release2,
}
}
const useWebNotification = (defaultOptions2 = {}) => {
const { window: window2 = defaultWindow$1 } = defaultOptions2
const isSupported = useSupported(() => !!window2 && 'Notification' in window2)
const notification2 = ref(null)
const requestPermission = async () => {
if (!isSupported.value) return
if ('permission' in Notification && Notification.permission !== 'denied')
await Notification.requestPermission()
}
const onClick = createEventHook()
const onShow = createEventHook()
const onError = createEventHook()
const onClose = createEventHook()
const show = async (overrides) => {
if (!isSupported.value) return
await requestPermission()
const options2 = Object.assign({}, defaultOptions2, overrides)
notification2.value = new Notification(options2.title || '', options2)
notification2.value.onclick = (event) => onClick.trigger(event)
notification2.value.onshow = (event) => onShow.trigger(event)
notification2.value.onerror = (event) => onError.trigger(event)
notification2.value.onclose = (event) => onClose.trigger(event)
return notification2.value
}
const close2 = () => {
if (notification2.value) notification2.value.close()
notification2.value = null
}
tryOnMounted(async () => {
if (isSupported.value) await requestPermission()
})
tryOnScopeDispose(close2)
if (isSupported.value && window2) {
const document2 = window2.document
useEventListener(document2, 'visibilitychange', (e2) => {
e2.preventDefault()
if (document2.visibilityState === 'visible') {
close2()
}
})
}
return {
isSupported,
notification: notification2,
show,
close: close2,
onClick,
onShow,
onError,
onClose,
}
}
const DEFAULT_PING_MESSAGE = 'ping'
function resolveNestedOptions(options2) {
if (options2 === true) return {}
return options2
}
function useWebSocket(url2, options2 = {}) {
const {
onConnected,
onDisconnected,
onError,
onMessage,
immediate = true,
autoClose = true,
protocols = [],
} = options2
const data2 = ref(null)
const status = ref('CLOSED')
const wsRef = ref()
const urlRef = resolveRef(url2)
let heartbeatPause
let heartbeatResume
let explicitlyClosed = false
let retried = 0
let bufferedData = []
let pongTimeoutWait
const close2 = (code2 = 1e3, reason) => {
if (!wsRef.value) return
explicitlyClosed = true
heartbeatPause == null ? void 0 : heartbeatPause()
wsRef.value.close(code2, reason)
}
const _sendBuffer = () => {
if (bufferedData.length && wsRef.value && status.value === 'OPEN') {
for (const buffer of bufferedData) wsRef.value.send(buffer)
bufferedData = []
}
}
const resetHeartbeat = () => {
clearTimeout(pongTimeoutWait)
pongTimeoutWait = void 0
}
const send = (data22, useBuffer = true) => {
if (!wsRef.value || status.value !== 'OPEN') {
if (useBuffer) bufferedData.push(data22)
return false
}
_sendBuffer()
wsRef.value.send(data22)
return true
}
const _init = () => {
if (explicitlyClosed || typeof urlRef.value === 'undefined') return
const ws = new WebSocket(urlRef.value, protocols)
wsRef.value = ws
status.value = 'CONNECTING'
ws.onopen = () => {
status.value = 'OPEN'
onConnected == null ? void 0 : onConnected(ws)
heartbeatResume == null ? void 0 : heartbeatResume()
_sendBuffer()
}
ws.onclose = (ev) => {
status.value = 'CLOSED'
wsRef.value = void 0
onDisconnected == null ? void 0 : onDisconnected(ws, ev)
if (!explicitlyClosed && options2.autoReconnect) {
const {
retries = -1,
delay: delay2 = 1e3,
onFailed,
} = resolveNestedOptions(options2.autoReconnect)
retried += 1
if (typeof retries === 'number' && (retries < 0 || retried < retries))
setTimeout(_init, delay2)
else if (typeof retries === 'function' && retries())
setTimeout(_init, delay2)
else onFailed == null ? void 0 : onFailed()
}
}
ws.onerror = (e2) => {
onError == null ? void 0 : onError(ws, e2)
}
ws.onmessage = (e2) => {
if (options2.heartbeat) {
resetHeartbeat()
const { message: message2 = DEFAULT_PING_MESSAGE } =
resolveNestedOptions(options2.heartbeat)
if (e2.data === message2) return
}
data2.value = e2.data
onMessage == null ? void 0 : onMessage(ws, e2)
}
}
if (options2.heartbeat) {
const {
message: message2 = DEFAULT_PING_MESSAGE,
interval = 1e3,
pongTimeout = 1e3,
} = resolveNestedOptions(options2.heartbeat)
const { pause, resume } = useIntervalFn(
() => {
send(message2, false)
if (pongTimeoutWait != null) return
pongTimeoutWait = setTimeout(() => {
close2()
}, pongTimeout)
},
interval,
{ immediate: false }
)
heartbeatPause = pause
heartbeatResume = resume
}
if (autoClose) {
useEventListener(window, 'beforeunload', () => close2())
tryOnScopeDispose(close2)
}
const open2 = () => {
close2()
explicitlyClosed = false
retried = 0
_init()
}
if (immediate) watch$1(urlRef, open2, { immediate: true })
return {
data: data2,
status,
close: close2,
send,
open: open2,
ws: wsRef,
}
}
function useWebWorker(arg0, workerOptions, options2) {
const { window: window2 = defaultWindow$1 } = options2 != null ? options2 : {}
const data2 = ref(null)
const worker = shallowRef()
const post = function post2(val2) {
if (!worker.value) return
worker.value.postMessage(val2)
}
const terminate = function terminate2() {
if (!worker.value) return
worker.value.terminate()
}
if (window2) {
if (isString$e(arg0)) worker.value = new Worker(arg0, workerOptions)
else if (isFunction$k(arg0)) worker.value = arg0()
else worker.value = arg0
worker.value.onmessage = (e2) => {
data2.value = e2.data
}
tryOnScopeDispose(() => {
if (worker.value) worker.value.terminate()
})
}
return {
data: data2,
post,
terminate,
worker,
}
}
const jobRunner = (userFunc) => (e2) => {
const userFuncArgs = e2.data[0]
return Promise.resolve(userFunc.apply(void 0, userFuncArgs))
.then((result) => {
postMessage(['SUCCESS', result])
})
.catch((error2) => {
postMessage(['ERROR', error2])
})
}
const depsParser = (deps) => {
if (deps.length === 0) return ''
const depsString = deps.map((dep) => `'${dep}'`).toString()
return `importScripts(${depsString})`
}
const createWorkerBlobUrl = (fn2, deps) => {
const blobCode = `${depsParser(deps)}; onmessage=(${jobRunner})(${fn2})`
const blob = new Blob([blobCode], { type: 'text/javascript' })
const url2 = URL.createObjectURL(blob)
return url2
}
const useWebWorkerFn = (fn2, options2 = {}) => {
const {
dependencies: dependencies2 = [],
timeout,
window: window2 = defaultWindow$1,
} = options2
const worker = ref()
const workerStatus = ref('PENDING')
const promise2 = ref({})
const timeoutId = ref()
const workerTerminate = (status = 'PENDING') => {
if (worker.value && worker.value._url && window2) {
worker.value.terminate()
URL.revokeObjectURL(worker.value._url)
promise2.value = {}
worker.value = void 0
window2.clearTimeout(timeoutId.value)
workerStatus.value = status
}
}
workerTerminate()
tryOnScopeDispose(workerTerminate)
const generateWorker = () => {
const blobUrl = createWorkerBlobUrl(fn2, dependencies2)
const newWorker = new Worker(blobUrl)
newWorker._url = blobUrl
newWorker.onmessage = (e2) => {
const { resolve: resolve2 = () => {}, reject: reject2 = () => {} } =
promise2.value
const [status, result] = e2.data
switch (status) {
case 'SUCCESS':
resolve2(result)
workerTerminate(status)
break
default:
reject2(result)
workerTerminate('ERROR')
break
}
}
newWorker.onerror = (e2) => {
const { reject: reject2 = () => {} } = promise2.value
reject2(e2)
workerTerminate('ERROR')
}
if (timeout) {
timeoutId.value = setTimeout(
() => workerTerminate('TIMEOUT_EXPIRED'),
timeout
)
}
return newWorker
}
const callWorker = (...fnArgs) =>
new Promise((resolve2, reject2) => {
promise2.value = {
resolve: resolve2,
reject: reject2,
}
worker.value && worker.value.postMessage([[...fnArgs]])
workerStatus.value = 'RUNNING'
})
const workerFn = (...fnArgs) => {
if (workerStatus.value === 'RUNNING') {
console.error(
'[useWebWorkerFn] You can only run one instance of the worker at a time.'
)
return Promise.reject()
}
worker.value = generateWorker()
return callWorker(...fnArgs)
}
return {
workerFn,
workerStatus,
workerTerminate,
}
}
function useWindowFocus({ window: window2 = defaultWindow$1 } = {}) {
if (!window2) return ref(false)
const focused = ref(window2.document.hasFocus())
useEventListener(window2, 'blur', () => {
focused.value = false
})
useEventListener(window2, 'focus', () => {
focused.value = true
})
return focused
}
function useWindowScroll({ window: window2 = defaultWindow$1 } = {}) {
if (!window2) {
return {
x: ref(0),
y: ref(0),
}
}
const x2 = ref(window2.scrollX)
const y2 = ref(window2.scrollY)
useEventListener(
window2,
'scroll',
() => {
x2.value = window2.scrollX
y2.value = window2.scrollY
},
{
capture: false,
passive: true,
}
)
return { x: x2, y: y2 }
}
function useWindowSize(options2 = {}) {
const {
window: window2 = defaultWindow$1,
initialWidth = Infinity,
initialHeight = Infinity,
listenOrientation = true,
includeScrollbar = true,
} = options2
const width = ref(initialWidth)
const height = ref(initialHeight)
const update3 = () => {
if (window2) {
if (includeScrollbar) {
width.value = window2.innerWidth
height.value = window2.innerHeight
} else {
width.value = window2.document.documentElement.clientWidth
height.value = window2.document.documentElement.clientHeight
}
}
}
update3()
tryOnMounted(update3)
useEventListener('resize', update3, { passive: true })
if (listenOrientation)
useEventListener('orientationchange', update3, { passive: true })
return { width, height }
}
var index$q = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
DefaultMagicKeysAliasMap,
StorageSerializers,
get SwipeDirection() {
return SwipeDirection
},
TransitionPresets,
asyncComputed: computedAsync,
breakpointsAntDesign,
breakpointsBootstrapV5,
breakpointsMasterCss,
breakpointsQuasar,
breakpointsSematic,
breakpointsTailwind,
breakpointsVuetify,
cloneFnJSON,
computedAsync,
computedInject,
createFetch,
createUnrefFn,
customStorageEventName,
defaultDocument,
defaultLocation,
defaultNavigator,
defaultWindow: defaultWindow$1,
formatTimeAgo,
getSSRHandler,
mapGamepadToXbox360Controller,
onClickOutside,
onKeyDown,
onKeyPressed,
onKeyStroke,
onKeyUp,
onLongPress,
onStartTyping,
setSSRHandler,
templateRef,
unrefElement,
useActiveElement,
useAsyncQueue,
useAsyncState,
useBase64,
useBattery,
useBluetooth,
useBreakpoints,
useBroadcastChannel,
useBrowserLocation,
useCached,
useClipboard,
useCloned,
useColorMode,
useConfirmDialog,
useCssVar,
useCurrentElement,
useCycleList,
useDark,
useDebouncedRefHistory,
useDeviceMotion,
useDeviceOrientation,
useDevicePixelRatio,
useDevicesList,
useDisplayMedia,
useDocumentVisibility,
useDraggable,
useDropZone,
useElementBounding,
useElementByPoint,
useElementHover,
useElementSize,
useElementVisibility,
useEventBus,
useEventListener,
useEventSource,
useEyeDropper,
useFavicon,
useFetch,
useFileDialog,
useFileSystemAccess,
useFocus,
useFocusWithin,
useFps,
useFullscreen,
useGamepad,
useGeolocation,
useIdle,
useImage,
useInfiniteScroll,
useIntersectionObserver,
useKeyModifier,
useLocalStorage,
useMagicKeys,
useManualRefHistory,
useMediaControls,
useMediaQuery,
useMemoize,
useMemory,
useMounted,
useMouse,
useMouseInElement,
useMousePressed,
useMutationObserver,
useNavigatorLanguage,
useNetwork,
useNow,
useObjectUrl,
useOffsetPagination,
useOnline,
usePageLeave,
useParallax,
usePermission,
usePointer,
usePointerLock,
usePointerSwipe,
usePreferredColorScheme,
usePreferredContrast,
usePreferredDark,
usePreferredLanguages,
usePreferredReducedMotion,
usePrevious,
useRafFn,
useRefHistory,
useResizeObserver,
useScreenOrientation,
useScreenSafeArea,
useScriptTag,
useScroll,
useScrollLock,
useSessionStorage,
useShare,
useSorted,
useSpeechRecognition,
useSpeechSynthesis,
useStepper,
useStorage,
useStorageAsync,
useStyleTag,
useSupported,
useSwipe,
useTemplateRefsList,
useTextDirection,
useTextSelection,
useTextareaAutosize,
useThrottledRefHistory,
useTimeAgo,
useTimeoutPoll,
useTimestamp,
useTitle: useTitle$1,
useTransition,
useUrlSearchParams,
useUserMedia,
useVModel,
useVModels,
useVibrate,
useVirtualList,
useWakeLock,
useWebNotification,
useWebSocket,
useWebWorker,
useWebWorkerFn,
useWindowFocus,
useWindowScroll,
useWindowSize,
__onlyVue27Plus,
__onlyVue3,
assert: assert$1,
autoResetRef: refAutoReset,
bypassFilter,
clamp: clamp$1,
computedEager,
computedWithControl,
containsProp,
controlledComputed: computedWithControl,
controlledRef,
createEventHook,
createFilterWrapper,
createGlobalState,
createInjectionState,
createReactiveFn: reactify,
createSharedComposable,
createSingletonPromise,
debounceFilter,
debouncedRef: refDebounced,
debouncedWatch: watchDebounced,
directiveHooks,
eagerComputed: computedEager,
extendRef,
formatDate: formatDate$1,
get: get$8,
hasOwn: hasOwn$d,
identity: identity$1,
ignorableWatch: watchIgnorable,
increaseWithUnit,
invoke: invoke$2,
isBoolean: isBoolean$4,
isClient,
isDef: isDef$1,
isDefined,
isFunction: isFunction$k,
isIOS,
isNumber: isNumber$g,
isObject: isObject$t,
isString: isString$e,
isWindow: isWindow$2,
makeDestructurable,
noop: noop$6,
normalizeDate,
now: now$5,
objectPick,
pausableFilter,
pausableWatch: watchPausable,
promiseTimeout,
rand,
reactify,
reactifyObject,
reactiveComputed,
reactiveOmit,
reactivePick,
refAutoReset,
refDebounced,
refDefault,
refThrottled,
refWithControl,
resolveRef,
resolveUnref,
set: set$6,
syncRef,
syncRefs,
throttleFilter,
throttledRef: refThrottled,
throttledWatch: watchThrottled,
timestamp: timestamp$2,
toReactive,
toRefs,
tryOnBeforeMount,
tryOnBeforeUnmount,
tryOnMounted,
tryOnScopeDispose,
tryOnUnmounted,
until,
useArrayEvery,
useArrayFilter,
useArrayFind,
useArrayFindIndex,
useArrayFindLast,
useArrayJoin,
useArrayMap,
useArrayReduce,
useArraySome,
useArrayUnique,
useCounter,
useDateFormat,
useDebounce: refDebounced,
useDebounceFn,
useInterval,
useIntervalFn,
useLastChanged,
useThrottle: refThrottled,
useThrottleFn,
useTimeout,
useTimeoutFn,
useToNumber,
useToString,
useToggle,
watchArray,
watchAtMost,
watchDebounced,
watchIgnorable,
watchOnce,
watchPausable,
watchThrottled,
watchTriggerable,
watchWithFilter,
whenever,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
function getDevtoolsGlobalHook() {
return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__
}
function getTarget() {
return typeof navigator !== 'undefined' && typeof window !== 'undefined'
? window
: typeof global !== 'undefined'
? global
: {}
}
const isProxyAvailable = typeof Proxy === 'function'
const HOOK_SETUP = 'devtools-plugin:setup'
const HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set'
let supported
let perf
function isPerformanceSupported() {
var _a2
if (supported !== void 0) {
return supported
}
if (typeof window !== 'undefined' && window.performance) {
supported = true
perf = window.performance
} else if (
typeof global !== 'undefined' &&
((_a2 = global.perf_hooks) === null || _a2 === void 0
? void 0
: _a2.performance)
) {
supported = true
perf = global.perf_hooks.performance
} else {
supported = false
}
return supported
}
function now$4() {
return isPerformanceSupported() ? perf.now() : Date.now()
}
class ApiProxy {
constructor(plugin, hook) {
this.target = null
this.targetQueue = []
this.onQueue = []
this.plugin = plugin
this.hook = hook
const defaultSettings = {}
if (plugin.settings) {
for (const id2 in plugin.settings) {
const item2 = plugin.settings[id2]
defaultSettings[id2] = item2.defaultValue
}
}
const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`
let currentSettings = Object.assign({}, defaultSettings)
try {
const raw = localStorage.getItem(localSettingsSaveId)
const data2 = JSON.parse(raw)
Object.assign(currentSettings, data2)
} catch (e2) {}
this.fallbacks = {
getSettings() {
return currentSettings
},
setSettings(value2) {
try {
localStorage.setItem(localSettingsSaveId, JSON.stringify(value2))
} catch (e2) {}
currentSettings = value2
},
now() {
return now$4()
},
}
if (hook) {
hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value2) => {
if (pluginId === this.plugin.id) {
this.fallbacks.setSettings(value2)
}
})
}
this.proxiedOn = new Proxy(
{},
{
get: (_target, prop) => {
if (this.target) {
return this.target.on[prop]
} else {
return (...args) => {
this.onQueue.push({
method: prop,
args,
})
}
}
},
}
)
this.proxiedTarget = new Proxy(
{},
{
get: (_target, prop) => {
if (this.target) {
return this.target[prop]
} else if (prop === 'on') {
return this.proxiedOn
} else if (Object.keys(this.fallbacks).includes(prop)) {
return (...args) => {
this.targetQueue.push({
method: prop,
args,
resolve: () => {},
})
return this.fallbacks[prop](...args)
}
} else {
return (...args) => {
return new Promise((resolve2) => {
this.targetQueue.push({
method: prop,
args,
resolve: resolve2,
})
})
}
}
},
}
)
}
async setRealTarget(target2) {
this.target = target2
for (const item2 of this.onQueue) {
this.target.on[item2.method](...item2.args)
}
for (const item2 of this.targetQueue) {
item2.resolve(await this.target[item2.method](...item2.args))
}
}
}
function setupDevtoolsPlugin(pluginDescriptor, setupFn) {
const descriptor = pluginDescriptor
const target2 = getTarget()
const hook = getDevtoolsGlobalHook()
const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy
if (hook && (target2.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) {
hook.emit(HOOK_SETUP, pluginDescriptor, setupFn)
} else {
const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null
const list2 = (target2.__VUE_DEVTOOLS_PLUGINS__ =
target2.__VUE_DEVTOOLS_PLUGINS__ || [])
list2.push({
pluginDescriptor: descriptor,
setupFn,
proxy,
})
if (proxy) setupFn(proxy.proxiedTarget)
}
}
/*!
* vue-router v4.2.5
* (c) 2023 Eduardo San Martin Morote
* @license MIT
*/
const isBrowser = typeof window !== 'undefined'
function isESModule(obj) {
return obj.__esModule || obj[Symbol.toStringTag] === 'Module'
}
const assign$e = Object.assign
function applyToParams(fn2, params2) {
const newParams = {}
for (const key2 in params2) {
const value2 = params2[key2]
newParams[key2] = isArray$C(value2) ? value2.map(fn2) : fn2(value2)
}
return newParams
}
const noop$5 = () => {}
const isArray$C = Array.isArray
const TRAILING_SLASH_RE = /\/$/
const removeTrailingSlash = (path) => path.replace(TRAILING_SLASH_RE, '')
function parseURL(parseQuery2, location2, currentLocation = '/') {
let path,
query = {},
searchString = '',
hash2 = ''
const hashPos = location2.indexOf('#')
let searchPos = location2.indexOf('?')
if (hashPos < searchPos && hashPos >= 0) {
searchPos = -1
}
if (searchPos > -1) {
path = location2.slice(0, searchPos)
searchString = location2.slice(
searchPos + 1,
hashPos > -1 ? hashPos : location2.length
)
query = parseQuery2(searchString)
}
if (hashPos > -1) {
path = path || location2.slice(0, hashPos)
hash2 = location2.slice(hashPos, location2.length)
}
path = resolveRelativePath(path != null ? path : location2, currentLocation)
return {
fullPath: path + (searchString && '?') + searchString + hash2,
path,
query,
hash: hash2,
}
}
function stringifyURL(stringifyQuery2, location2) {
const query = location2.query ? stringifyQuery2(location2.query) : ''
return location2.path + (query && '?') + query + (location2.hash || '')
}
function stripBase(pathname, base2) {
if (!base2 || !pathname.toLowerCase().startsWith(base2.toLowerCase()))
return pathname
return pathname.slice(base2.length) || '/'
}
function isSameRouteLocation(stringifyQuery2, a2, b2) {
const aLastIndex = a2.matched.length - 1
const bLastIndex = b2.matched.length - 1
return (
aLastIndex > -1 &&
aLastIndex === bLastIndex &&
isSameRouteRecord(a2.matched[aLastIndex], b2.matched[bLastIndex]) &&
isSameRouteLocationParams(a2.params, b2.params) &&
stringifyQuery2(a2.query) === stringifyQuery2(b2.query) &&
a2.hash === b2.hash
)
}
function isSameRouteRecord(a2, b2) {
return (a2.aliasOf || a2) === (b2.aliasOf || b2)
}
function isSameRouteLocationParams(a2, b2) {
if (Object.keys(a2).length !== Object.keys(b2).length) return false
for (const key2 in a2) {
if (!isSameRouteLocationParamsValue(a2[key2], b2[key2])) return false
}
return true
}
function isSameRouteLocationParamsValue(a2, b2) {
return isArray$C(a2)
? isEquivalentArray(a2, b2)
: isArray$C(b2)
? isEquivalentArray(b2, a2)
: a2 === b2
}
function isEquivalentArray(a2, b2) {
return isArray$C(b2)
? a2.length === b2.length && a2.every((value2, i2) => value2 === b2[i2])
: a2.length === 1 && a2[0] === b2
}
function resolveRelativePath(to, from) {
if (to.startsWith('/')) return to
if (!to) return from
const fromSegments = from.split('/')
const toSegments = to.split('/')
const lastToSegment = toSegments[toSegments.length - 1]
if (lastToSegment === '..' || lastToSegment === '.') {
toSegments.push('')
}
let position2 = fromSegments.length - 1
let toPosition
let segment
for (toPosition = 0; toPosition < toSegments.length; toPosition++) {
segment = toSegments[toPosition]
if (segment === '.') continue
if (segment === '..') {
if (position2 > 1) position2--
} else break
}
return (
fromSegments.slice(0, position2).join('/') +
'/' +
toSegments
.slice(toPosition - (toPosition === toSegments.length ? 1 : 0))
.join('/')
)
}
var NavigationType
;(function (NavigationType2) {
NavigationType2['pop'] = 'pop'
NavigationType2['push'] = 'push'
})(NavigationType || (NavigationType = {}))
var NavigationDirection
;(function (NavigationDirection2) {
NavigationDirection2['back'] = 'back'
NavigationDirection2['forward'] = 'forward'
NavigationDirection2['unknown'] = ''
})(NavigationDirection || (NavigationDirection = {}))
const START = ''
function normalizeBase(base2) {
if (!base2) {
if (isBrowser) {
const baseEl = document.querySelector('base')
base2 = (baseEl && baseEl.getAttribute('href')) || '/'
base2 = base2.replace(/^\w+:\/\/[^\/]+/, '')
} else {
base2 = '/'
}
}
if (base2[0] !== '/' && base2[0] !== '#') base2 = '/' + base2
return removeTrailingSlash(base2)
}
const BEFORE_HASH_RE = /^[^#]+#/
function createHref(base2, location2) {
return base2.replace(BEFORE_HASH_RE, '#') + location2
}
function getElementPosition(el2, offset2) {
const docRect = document.documentElement.getBoundingClientRect()
const elRect = el2.getBoundingClientRect()
return {
behavior: offset2.behavior,
left: elRect.left - docRect.left - (offset2.left || 0),
top: elRect.top - docRect.top - (offset2.top || 0),
}
}
const computeScrollPosition = () => ({
left: window.pageXOffset,
top: window.pageYOffset,
})
function scrollToPosition(position2) {
let scrollToOptions
if ('el' in position2) {
const positionEl = position2.el
const isIdSelector =
typeof positionEl === 'string' && positionEl.startsWith('#')
const el2 =
typeof positionEl === 'string'
? isIdSelector
? document.getElementById(positionEl.slice(1))
: document.querySelector(positionEl)
: positionEl
if (!el2) {
return
}
scrollToOptions = getElementPosition(el2, position2)
} else {
scrollToOptions = position2
}
if ('scrollBehavior' in document.documentElement.style)
window.scrollTo(scrollToOptions)
else {
window.scrollTo(
scrollToOptions.left != null ? scrollToOptions.left : window.pageXOffset,
scrollToOptions.top != null ? scrollToOptions.top : window.pageYOffset
)
}
}
function getScrollKey(path, delta) {
const position2 = history.state ? history.state.position - delta : -1
return position2 + path
}
const scrollPositions = /* @__PURE__ */ new Map()
function saveScrollPosition(key2, scrollPosition) {
scrollPositions.set(key2, scrollPosition)
}
function getSavedScrollPosition(key2) {
const scroll = scrollPositions.get(key2)
scrollPositions.delete(key2)
return scroll
}
let createBaseLocation = () => location.protocol + '//' + location.host
function createCurrentLocation(base2, location2) {
const { pathname, search: search2, hash: hash2 } = location2
const hashPos = base2.indexOf('#')
if (hashPos > -1) {
let slicePos = hash2.includes(base2.slice(hashPos))
? base2.slice(hashPos).length
: 1
let pathFromHash = hash2.slice(slicePos)
if (pathFromHash[0] !== '/') pathFromHash = '/' + pathFromHash
return stripBase(pathFromHash, '')
}
const path = stripBase(pathname, base2)
return path + search2 + hash2
}
function useHistoryListeners(base2, historyState, currentLocation, replace2) {
let listeners = []
let teardowns = []
let pauseState = null
const popStateHandler = ({ state: state2 }) => {
const to = createCurrentLocation(base2, location)
const from = currentLocation.value
const fromState = historyState.value
let delta = 0
if (state2) {
currentLocation.value = to
historyState.value = state2
if (pauseState && pauseState === from) {
pauseState = null
return
}
delta = fromState ? state2.position - fromState.position : 0
} else {
replace2(to)
}
listeners.forEach((listener) => {
listener(currentLocation.value, from, {
delta,
type: NavigationType.pop,
direction: delta
? delta > 0
? NavigationDirection.forward
: NavigationDirection.back
: NavigationDirection.unknown,
})
})
}
function pauseListeners() {
pauseState = currentLocation.value
}
function listen(callback) {
listeners.push(callback)
const teardown = () => {
const index2 = listeners.indexOf(callback)
if (index2 > -1) listeners.splice(index2, 1)
}
teardowns.push(teardown)
return teardown
}
function beforeUnloadListener() {
const { history: history2 } = window
if (!history2.state) return
history2.replaceState(
assign$e({}, history2.state, { scroll: computeScrollPosition() }),
''
)
}
function destroy2() {
for (const teardown of teardowns) teardown()
teardowns = []
window.removeEventListener('popstate', popStateHandler)
window.removeEventListener('beforeunload', beforeUnloadListener)
}
window.addEventListener('popstate', popStateHandler)
window.addEventListener('beforeunload', beforeUnloadListener, {
passive: true,
})
return {
pauseListeners,
listen,
destroy: destroy2,
}
}
function buildState(
back2,
current2,
forward,
replaced = false,
computeScroll = false
) {
return {
back: back2,
current: current2,
forward,
replaced,
position: window.history.length,
scroll: computeScroll ? computeScrollPosition() : null,
}
}
function useHistoryStateNavigation(base2) {
const { history: history2, location: location2 } = window
const currentLocation = {
value: createCurrentLocation(base2, location2),
}
const historyState = { value: history2.state }
if (!historyState.value) {
changeLocation(
currentLocation.value,
{
back: null,
current: currentLocation.value,
forward: null,
position: history2.length - 1,
replaced: true,
scroll: null,
},
true
)
}
function changeLocation(to, state2, replace3) {
const hashIndex = base2.indexOf('#')
const url2 =
hashIndex > -1
? (location2.host && document.querySelector('base')
? base2
: base2.slice(hashIndex)) + to
: createBaseLocation() + base2 + to
try {
history2[replace3 ? 'replaceState' : 'pushState'](state2, '', url2)
historyState.value = state2
} catch (err) {
{
console.error(err)
}
location2[replace3 ? 'replace' : 'assign'](url2)
}
}
function replace2(to, data2) {
const state2 = assign$e(
{},
history2.state,
buildState(historyState.value.back, to, historyState.value.forward, true),
data2,
{ position: historyState.value.position }
)
changeLocation(to, state2, true)
currentLocation.value = to
}
function push2(to, data2) {
const currentState = assign$e({}, historyState.value, history2.state, {
forward: to,
scroll: computeScrollPosition(),
})
changeLocation(currentState.current, currentState, true)
const state2 = assign$e(
{},
buildState(currentLocation.value, to, null),
{ position: currentState.position + 1 },
data2
)
changeLocation(to, state2, false)
currentLocation.value = to
}
return {
location: currentLocation,
state: historyState,
push: push2,
replace: replace2,
}
}
function createWebHistory(base2) {
base2 = normalizeBase(base2)
const historyNavigation = useHistoryStateNavigation(base2)
const historyListeners = useHistoryListeners(
base2,
historyNavigation.state,
historyNavigation.location,
historyNavigation.replace
)
function go2(delta, triggerListeners = true) {
if (!triggerListeners) historyListeners.pauseListeners()
history.go(delta)
}
const routerHistory = assign$e(
{
location: '',
base: base2,
go: go2,
createHref: createHref.bind(null, base2),
},
historyNavigation,
historyListeners
)
Object.defineProperty(routerHistory, 'location', {
enumerable: true,
get: () => historyNavigation.location.value,
})
Object.defineProperty(routerHistory, 'state', {
enumerable: true,
get: () => historyNavigation.state.value,
})
return routerHistory
}
function createMemoryHistory(base2 = '') {
let listeners = []
let queue2 = [START]
let position2 = 0
base2 = normalizeBase(base2)
function setLocation(location2) {
position2++
if (position2 !== queue2.length) {
queue2.splice(position2)
}
queue2.push(location2)
}
function triggerListeners(to, from, { direction: direction2, delta }) {
const info = {
direction: direction2,
delta,
type: NavigationType.pop,
}
for (const callback of listeners) {
callback(to, from, info)
}
}
const routerHistory = {
location: START,
state: {},
base: base2,
createHref: createHref.bind(null, base2),
replace(to) {
queue2.splice(position2--, 1)
setLocation(to)
},
push(to, data2) {
setLocation(to)
},
listen(callback) {
listeners.push(callback)
return () => {
const index2 = listeners.indexOf(callback)
if (index2 > -1) listeners.splice(index2, 1)
}
},
destroy() {
listeners = []
queue2 = [START]
position2 = 0
},
go(delta, shouldTrigger = true) {
const from = this.location
const direction2 =
delta < 0 ? NavigationDirection.back : NavigationDirection.forward
position2 = Math.max(0, Math.min(position2 + delta, queue2.length - 1))
if (shouldTrigger) {
triggerListeners(this.location, from, {
direction: direction2,
delta,
})
}
},
}
Object.defineProperty(routerHistory, 'location', {
enumerable: true,
get: () => queue2[position2],
})
return routerHistory
}
function createWebHashHistory(base2) {
base2 = location.host ? base2 || location.pathname + location.search : ''
if (!base2.includes('#')) base2 += '#'
return createWebHistory(base2)
}
function isRouteLocation(route) {
return typeof route === 'string' || (route && typeof route === 'object')
}
function isRouteName(name2) {
return typeof name2 === 'string' || typeof name2 === 'symbol'
}
const START_LOCATION_NORMALIZED = {
path: '/',
name: void 0,
params: {},
query: {},
hash: '',
fullPath: '/',
matched: [],
meta: {},
redirectedFrom: void 0,
}
const NavigationFailureSymbol = Symbol('')
var NavigationFailureType
;(function (NavigationFailureType2) {
NavigationFailureType2[(NavigationFailureType2['aborted'] = 4)] = 'aborted'
NavigationFailureType2[(NavigationFailureType2['cancelled'] = 8)] =
'cancelled'
NavigationFailureType2[(NavigationFailureType2['duplicated'] = 16)] =
'duplicated'
})(NavigationFailureType || (NavigationFailureType = {}))
function createRouterError(type4, params2) {
{
return assign$e(
new Error(),
{
type: type4,
[NavigationFailureSymbol]: true,
},
params2
)
}
}
function isNavigationFailure(error2, type4) {
return (
error2 instanceof Error &&
NavigationFailureSymbol in error2 &&
(type4 == null || !!(error2.type & type4))
)
}
const BASE_PARAM_PATTERN = '[^/]+?'
const BASE_PATH_PARSER_OPTIONS = {
sensitive: false,
strict: false,
start: true,
end: true,
}
const REGEX_CHARS_RE = /[.+*?^${}()[\]/\\]/g
function tokensToParser(segments, extraOptions) {
const options2 = assign$e({}, BASE_PATH_PARSER_OPTIONS, extraOptions)
const score = []
let pattern4 = options2.start ? '^' : ''
const keys3 = []
for (const segment of segments) {
const segmentScores = segment.length ? [] : [90]
if (options2.strict && !segment.length) pattern4 += '/'
for (let tokenIndex = 0; tokenIndex < segment.length; tokenIndex++) {
const token = segment[tokenIndex]
let subSegmentScore = 40 + (options2.sensitive ? 0.25 : 0)
if (token.type === 0) {
if (!tokenIndex) pattern4 += '/'
pattern4 += token.value.replace(REGEX_CHARS_RE, '\\$&')
subSegmentScore += 40
} else if (token.type === 1) {
const { value: value2, repeatable, optional, regexp: regexp4 } = token
keys3.push({
name: value2,
repeatable,
optional,
})
const re3 = regexp4 ? regexp4 : BASE_PARAM_PATTERN
if (re3 !== BASE_PARAM_PATTERN) {
subSegmentScore += 10
try {
new RegExp(`(${re3})`)
} catch (err) {
throw new Error(
`Invalid custom RegExp for param "${value2}" (${re3}): ` +
err.message
)
}
}
let subPattern = repeatable
? `((?:${re3})(?:/(?:${re3}))*)`
: `(${re3})`
if (!tokenIndex)
subPattern =
optional && segment.length < 2
? `(?:/${subPattern})`
: '/' + subPattern
if (optional) subPattern += '?'
pattern4 += subPattern
subSegmentScore += 20
if (optional) subSegmentScore += -8
if (repeatable) subSegmentScore += -20
if (re3 === '.*') subSegmentScore += -50
}
segmentScores.push(subSegmentScore)
}
score.push(segmentScores)
}
if (options2.strict && options2.end) {
const i2 = score.length - 1
score[i2][score[i2].length - 1] += 0.7000000000000001
}
if (!options2.strict) pattern4 += '/?'
if (options2.end) pattern4 += '$'
else if (options2.strict) pattern4 += '(?:/|$)'
const re2 = new RegExp(pattern4, options2.sensitive ? '' : 'i')
function parse2(path) {
const match2 = path.match(re2)
const params2 = {}
if (!match2) return null
for (let i2 = 1; i2 < match2.length; i2++) {
const value2 = match2[i2] || ''
const key2 = keys3[i2 - 1]
params2[key2.name] =
value2 && key2.repeatable ? value2.split('/') : value2
}
return params2
}
function stringify2(params2) {
let path = ''
let avoidDuplicatedSlash = false
for (const segment of segments) {
if (!avoidDuplicatedSlash || !path.endsWith('/')) path += '/'
avoidDuplicatedSlash = false
for (const token of segment) {
if (token.type === 0) {
path += token.value
} else if (token.type === 1) {
const { value: value2, repeatable, optional } = token
const param = value2 in params2 ? params2[value2] : ''
if (isArray$C(param) && !repeatable) {
throw new Error(
`Provided param "${value2}" is an array but it is not repeatable (* or + modifiers)`
)
}
const text2 = isArray$C(param) ? param.join('/') : param
if (!text2) {
if (optional) {
if (segment.length < 2) {
if (path.endsWith('/')) path = path.slice(0, -1)
else avoidDuplicatedSlash = true
}
} else throw new Error(`Missing required param "${value2}"`)
}
path += text2
}
}
}
return path || '/'
}
return {
re: re2,
score,
keys: keys3,
parse: parse2,
stringify: stringify2,
}
}
function compareScoreArray(a2, b2) {
let i2 = 0
while (i2 < a2.length && i2 < b2.length) {
const diff = b2[i2] - a2[i2]
if (diff) return diff
i2++
}
if (a2.length < b2.length) {
return a2.length === 1 && a2[0] === 40 + 40 ? -1 : 1
} else if (a2.length > b2.length) {
return b2.length === 1 && b2[0] === 40 + 40 ? 1 : -1
}
return 0
}
function comparePathParserScore(a2, b2) {
let i2 = 0
const aScore = a2.score
const bScore = b2.score
while (i2 < aScore.length && i2 < bScore.length) {
const comp = compareScoreArray(aScore[i2], bScore[i2])
if (comp) return comp
i2++
}
if (Math.abs(bScore.length - aScore.length) === 1) {
if (isLastScoreNegative(aScore)) return 1
if (isLastScoreNegative(bScore)) return -1
}
return bScore.length - aScore.length
}
function isLastScoreNegative(score) {
const last2 = score[score.length - 1]
return score.length > 0 && last2[last2.length - 1] < 0
}
const ROOT_TOKEN = {
type: 0,
value: '',
}
const VALID_PARAM_RE = /[a-zA-Z0-9_]/
function tokenizePath(path) {
if (!path) return [[]]
if (path === '/') return [[ROOT_TOKEN]]
if (!path.startsWith('/')) {
throw new Error(`Invalid path "${path}"`)
}
function crash(message2) {
throw new Error(`ERR (${state2})/"${buffer}": ${message2}`)
}
let state2 = 0
let previousState = state2
const tokens = []
let segment
function finalizeSegment() {
if (segment) tokens.push(segment)
segment = []
}
let i2 = 0
let char
let buffer = ''
let customRe = ''
function consumeBuffer() {
if (!buffer) return
if (state2 === 0) {
segment.push({
type: 0,
value: buffer,
})
} else if (state2 === 1 || state2 === 2 || state2 === 3) {
if (segment.length > 1 && (char === '*' || char === '+'))
crash(
`A repeatable param (${buffer}) must be alone in its segment. eg: '/:ids+.`
)
segment.push({
type: 1,
value: buffer,
regexp: customRe,
repeatable: char === '*' || char === '+',
optional: char === '*' || char === '?',
})
} else {
crash('Invalid state to consume buffer')
}
buffer = ''
}
function addCharToBuffer() {
buffer += char
}
while (i2 < path.length) {
char = path[i2++]
if (char === '\\' && state2 !== 2) {
previousState = state2
state2 = 4
continue
}
switch (state2) {
case 0:
if (char === '/') {
if (buffer) {
consumeBuffer()
}
finalizeSegment()
} else if (char === ':') {
consumeBuffer()
state2 = 1
} else {
addCharToBuffer()
}
break
case 4:
addCharToBuffer()
state2 = previousState
break
case 1:
if (char === '(') {
state2 = 2
} else if (VALID_PARAM_RE.test(char)) {
addCharToBuffer()
} else {
consumeBuffer()
state2 = 0
if (char !== '*' && char !== '?' && char !== '+') i2--
}
break
case 2:
if (char === ')') {
if (customRe[customRe.length - 1] == '\\')
customRe = customRe.slice(0, -1) + char
else state2 = 3
} else {
customRe += char
}
break
case 3:
consumeBuffer()
state2 = 0
if (char !== '*' && char !== '?' && char !== '+') i2--
customRe = ''
break
default:
crash('Unknown state')
break
}
}
if (state2 === 2) crash(`Unfinished custom RegExp for param "${buffer}"`)
consumeBuffer()
finalizeSegment()
return tokens
}
function createRouteRecordMatcher(record, parent2, options2) {
const parser2 = tokensToParser(tokenizePath(record.path), options2)
const matcher = assign$e(parser2, {
record,
parent: parent2,
children: [],
alias: [],
})
if (parent2) {
if (!matcher.record.aliasOf === !parent2.record.aliasOf)
parent2.children.push(matcher)
}
return matcher
}
function createRouterMatcher(routes2, globalOptions) {
const matchers2 = []
const matcherMap = /* @__PURE__ */ new Map()
globalOptions = mergeOptions(
{ strict: false, end: true, sensitive: false },
globalOptions
)
function getRecordMatcher(name2) {
return matcherMap.get(name2)
}
function addRoute(record, parent2, originalRecord) {
const isRootAdd = !originalRecord
const mainNormalizedRecord = normalizeRouteRecord(record)
mainNormalizedRecord.aliasOf = originalRecord && originalRecord.record
const options2 = mergeOptions(globalOptions, record)
const normalizedRecords = [mainNormalizedRecord]
if ('alias' in record) {
const aliases =
typeof record.alias === 'string' ? [record.alias] : record.alias
for (const alias of aliases) {
normalizedRecords.push(
assign$e({}, mainNormalizedRecord, {
components: originalRecord
? originalRecord.record.components
: mainNormalizedRecord.components,
path: alias,
aliasOf: originalRecord
? originalRecord.record
: mainNormalizedRecord,
})
)
}
}
let matcher
let originalMatcher
for (const normalizedRecord of normalizedRecords) {
const { path } = normalizedRecord
if (parent2 && path[0] !== '/') {
const parentPath = parent2.record.path
const connectingSlash =
parentPath[parentPath.length - 1] === '/' ? '' : '/'
normalizedRecord.path =
parent2.record.path + (path && connectingSlash + path)
}
matcher = createRouteRecordMatcher(normalizedRecord, parent2, options2)
if (originalRecord) {
originalRecord.alias.push(matcher)
} else {
originalMatcher = originalMatcher || matcher
if (originalMatcher !== matcher) originalMatcher.alias.push(matcher)
if (isRootAdd && record.name && !isAliasRecord(matcher))
removeRoute(record.name)
}
if (mainNormalizedRecord.children) {
const children = mainNormalizedRecord.children
for (let i2 = 0; i2 < children.length; i2++) {
addRoute(
children[i2],
matcher,
originalRecord && originalRecord.children[i2]
)
}
}
originalRecord = originalRecord || matcher
if (
(matcher.record.components &&
Object.keys(matcher.record.components).length) ||
matcher.record.name ||
matcher.record.redirect
) {
insertMatcher(matcher)
}
}
return originalMatcher
? () => {
removeRoute(originalMatcher)
}
: noop$5
}
function removeRoute(matcherRef) {
if (isRouteName(matcherRef)) {
const matcher = matcherMap.get(matcherRef)
if (matcher) {
matcherMap.delete(matcherRef)
matchers2.splice(matchers2.indexOf(matcher), 1)
matcher.children.forEach(removeRoute)
matcher.alias.forEach(removeRoute)
}
} else {
const index2 = matchers2.indexOf(matcherRef)
if (index2 > -1) {
matchers2.splice(index2, 1)
if (matcherRef.record.name) matcherMap.delete(matcherRef.record.name)
matcherRef.children.forEach(removeRoute)
matcherRef.alias.forEach(removeRoute)
}
}
}
function getRoutes() {
return matchers2
}
function insertMatcher(matcher) {
let i2 = 0
while (
i2 < matchers2.length &&
comparePathParserScore(matcher, matchers2[i2]) >= 0 &&
(matcher.record.path !== matchers2[i2].record.path ||
!isRecordChildOf(matcher, matchers2[i2]))
)
i2++
matchers2.splice(i2, 0, matcher)
if (matcher.record.name && !isAliasRecord(matcher))
matcherMap.set(matcher.record.name, matcher)
}
function resolve2(location2, currentLocation) {
let matcher
let params2 = {}
let path
let name2
if ('name' in location2 && location2.name) {
matcher = matcherMap.get(location2.name)
if (!matcher)
throw createRouterError(1, {
location: location2,
})
name2 = matcher.record.name
params2 = assign$e(
paramsFromLocation(
currentLocation.params,
matcher.keys.filter((k2) => !k2.optional).map((k2) => k2.name)
),
location2.params &&
paramsFromLocation(
location2.params,
matcher.keys.map((k2) => k2.name)
)
)
path = matcher.stringify(params2)
} else if ('path' in location2) {
path = location2.path
matcher = matchers2.find((m2) => m2.re.test(path))
if (matcher) {
params2 = matcher.parse(path)
name2 = matcher.record.name
}
} else {
matcher = currentLocation.name
? matcherMap.get(currentLocation.name)
: matchers2.find((m2) => m2.re.test(currentLocation.path))
if (!matcher)
throw createRouterError(1, {
location: location2,
currentLocation,
})
name2 = matcher.record.name
params2 = assign$e({}, currentLocation.params, location2.params)
path = matcher.stringify(params2)
}
const matched = []
let parentMatcher = matcher
while (parentMatcher) {
matched.unshift(parentMatcher.record)
parentMatcher = parentMatcher.parent
}
return {
name: name2,
path,
params: params2,
matched,
meta: mergeMetaFields(matched),
}
}
routes2.forEach((route) => addRoute(route))
return {
addRoute,
resolve: resolve2,
removeRoute,
getRoutes,
getRecordMatcher,
}
}
function paramsFromLocation(params2, keys3) {
const newParams = {}
for (const key2 of keys3) {
if (key2 in params2) newParams[key2] = params2[key2]
}
return newParams
}
function normalizeRouteRecord(record) {
return {
path: record.path,
redirect: record.redirect,
name: record.name,
meta: record.meta || {},
aliasOf: void 0,
beforeEnter: record.beforeEnter,
props: normalizeRecordProps(record),
children: record.children || [],
instances: {},
leaveGuards: /* @__PURE__ */ new Set(),
updateGuards: /* @__PURE__ */ new Set(),
enterCallbacks: {},
components:
'components' in record
? record.components || null
: record.component && { default: record.component },
}
}
function normalizeRecordProps(record) {
const propsObject = {}
const props2 = record.props || false
if ('component' in record) {
propsObject.default = props2
} else {
for (const name2 in record.components)
propsObject[name2] = typeof props2 === 'object' ? props2[name2] : props2
}
return propsObject
}
function isAliasRecord(record) {
while (record) {
if (record.record.aliasOf) return true
record = record.parent
}
return false
}
function mergeMetaFields(matched) {
return matched.reduce((meta, record) => assign$e(meta, record.meta), {})
}
function mergeOptions(defaults2, partialOptions) {
const options2 = {}
for (const key2 in defaults2) {
options2[key2] =
key2 in partialOptions ? partialOptions[key2] : defaults2[key2]
}
return options2
}
function isRecordChildOf(record, parent2) {
return parent2.children.some(
(child) => child === record || isRecordChildOf(record, child)
)
}
const HASH_RE = /#/g
const AMPERSAND_RE = /&/g
const SLASH_RE = /\//g
const EQUAL_RE = /=/g
const IM_RE = /\?/g
const PLUS_RE = /\+/g
const ENC_BRACKET_OPEN_RE = /%5B/g
const ENC_BRACKET_CLOSE_RE = /%5D/g
const ENC_CARET_RE = /%5E/g
const ENC_BACKTICK_RE = /%60/g
const ENC_CURLY_OPEN_RE = /%7B/g
const ENC_PIPE_RE = /%7C/g
const ENC_CURLY_CLOSE_RE = /%7D/g
const ENC_SPACE_RE = /%20/g
function commonEncode(text2) {
return encodeURI('' + text2)
.replace(ENC_PIPE_RE, '|')
.replace(ENC_BRACKET_OPEN_RE, '[')
.replace(ENC_BRACKET_CLOSE_RE, ']')
}
function encodeHash(text2) {
return commonEncode(text2)
.replace(ENC_CURLY_OPEN_RE, '{')
.replace(ENC_CURLY_CLOSE_RE, '}')
.replace(ENC_CARET_RE, '^')
}
function encodeQueryValue(text2) {
return commonEncode(text2)
.replace(PLUS_RE, '%2B')
.replace(ENC_SPACE_RE, '+')
.replace(HASH_RE, '%23')
.replace(AMPERSAND_RE, '%26')
.replace(ENC_BACKTICK_RE, '`')
.replace(ENC_CURLY_OPEN_RE, '{')
.replace(ENC_CURLY_CLOSE_RE, '}')
.replace(ENC_CARET_RE, '^')
}
function encodeQueryKey(text2) {
return encodeQueryValue(text2).replace(EQUAL_RE, '%3D')
}
function encodePath(text2) {
return commonEncode(text2).replace(HASH_RE, '%23').replace(IM_RE, '%3F')
}
function encodeParam(text2) {
return text2 == null ? '' : encodePath(text2).replace(SLASH_RE, '%2F')
}
function decode$3(text2) {
try {
return decodeURIComponent('' + text2)
} catch (err) {}
return '' + text2
}
function parseQuery(search2) {
const query = {}
if (search2 === '' || search2 === '?') return query
const hasLeadingIM = search2[0] === '?'
const searchParams = (hasLeadingIM ? search2.slice(1) : search2).split('&')
for (let i2 = 0; i2 < searchParams.length; ++i2) {
const searchParam = searchParams[i2].replace(PLUS_RE, ' ')
const eqPos = searchParam.indexOf('=')
const key2 = decode$3(eqPos < 0 ? searchParam : searchParam.slice(0, eqPos))
const value2 = eqPos < 0 ? null : decode$3(searchParam.slice(eqPos + 1))
if (key2 in query) {
let currentValue = query[key2]
if (!isArray$C(currentValue)) {
currentValue = query[key2] = [currentValue]
}
currentValue.push(value2)
} else {
query[key2] = value2
}
}
return query
}
function stringifyQuery(query) {
let search2 = ''
for (let key2 in query) {
const value2 = query[key2]
key2 = encodeQueryKey(key2)
if (value2 == null) {
if (value2 !== void 0) {
search2 += (search2.length ? '&' : '') + key2
}
continue
}
const values2 = isArray$C(value2)
? value2.map((v4) => v4 && encodeQueryValue(v4))
: [value2 && encodeQueryValue(value2)]
values2.forEach((value3) => {
if (value3 !== void 0) {
search2 += (search2.length ? '&' : '') + key2
if (value3 != null) search2 += '=' + value3
}
})
}
return search2
}
function normalizeQuery(query) {
const normalizedQuery = {}
for (const key2 in query) {
const value2 = query[key2]
if (value2 !== void 0) {
normalizedQuery[key2] = isArray$C(value2)
? value2.map((v4) => (v4 == null ? null : '' + v4))
: value2 == null
? value2
: '' + value2
}
}
return normalizedQuery
}
const matchedRouteKey = Symbol('')
const viewDepthKey = Symbol('')
const routerKey = Symbol('')
const routeLocationKey = Symbol('')
const routerViewLocationKey = Symbol('')
function useCallbacks() {
let handlers2 = []
function add2(handler) {
handlers2.push(handler)
return () => {
const i2 = handlers2.indexOf(handler)
if (i2 > -1) handlers2.splice(i2, 1)
}
}
function reset2() {
handlers2 = []
}
return {
add: add2,
list: () => handlers2.slice(),
reset: reset2,
}
}
function registerGuard(record, name2, guard) {
const removeFromList = () => {
record[name2].delete(guard)
}
onUnmounted(removeFromList)
onDeactivated(removeFromList)
onActivated(() => {
record[name2].add(guard)
})
record[name2].add(guard)
}
function onBeforeRouteLeave(leaveGuard) {
const activeRecord = inject(matchedRouteKey, {}).value
if (!activeRecord) {
return
}
registerGuard(activeRecord, 'leaveGuards', leaveGuard)
}
function onBeforeRouteUpdate(updateGuard) {
const activeRecord = inject(matchedRouteKey, {}).value
if (!activeRecord) {
return
}
registerGuard(activeRecord, 'updateGuards', updateGuard)
}
function guardToPromiseFn(guard, to, from, record, name2) {
const enterCallbackArray =
record &&
(record.enterCallbacks[name2] = record.enterCallbacks[name2] || [])
return () =>
new Promise((resolve2, reject2) => {
const next = (valid) => {
if (valid === false) {
reject2(
createRouterError(4, {
from,
to,
})
)
} else if (valid instanceof Error) {
reject2(valid)
} else if (isRouteLocation(valid)) {
reject2(
createRouterError(2, {
from: to,
to: valid,
})
)
} else {
if (
enterCallbackArray &&
record.enterCallbacks[name2] === enterCallbackArray &&
typeof valid === 'function'
) {
enterCallbackArray.push(valid)
}
resolve2()
}
}
const guardReturn = guard.call(
record && record.instances[name2],
to,
from,
next
)
let guardCall = Promise.resolve(guardReturn)
if (guard.length < 3) guardCall = guardCall.then(next)
guardCall.catch((err) => reject2(err))
})
}
function extractComponentsGuards(matched, guardType, to, from) {
const guards = []
for (const record of matched) {
for (const name2 in record.components) {
let rawComponent = record.components[name2]
if (guardType !== 'beforeRouteEnter' && !record.instances[name2]) continue
if (isRouteComponent(rawComponent)) {
const options2 = rawComponent.__vccOpts || rawComponent
const guard = options2[guardType]
guard && guards.push(guardToPromiseFn(guard, to, from, record, name2))
} else {
let componentPromise = rawComponent()
guards.push(() =>
componentPromise.then((resolved) => {
if (!resolved)
return Promise.reject(
new Error(
`Couldn't resolve component "${name2}" at "${record.path}"`
)
)
const resolvedComponent = isESModule(resolved)
? resolved.default
: resolved
record.components[name2] = resolvedComponent
const options2 = resolvedComponent.__vccOpts || resolvedComponent
const guard = options2[guardType]
return guard && guardToPromiseFn(guard, to, from, record, name2)()
})
)
}
}
}
return guards
}
function isRouteComponent(component2) {
return (
typeof component2 === 'object' ||
'displayName' in component2 ||
'props' in component2 ||
'__vccOpts' in component2
)
}
function loadRouteLocation(route) {
return route.matched.every((record) => record.redirect)
? Promise.reject(new Error('Cannot load a route that redirects.'))
: Promise.all(
route.matched.map(
(record) =>
record.components &&
Promise.all(
Object.keys(record.components).reduce((promises, name2) => {
const rawComponent = record.components[name2]
if (
typeof rawComponent === 'function' &&
!('displayName' in rawComponent)
) {
promises.push(
rawComponent().then((resolved) => {
if (!resolved)
return Promise.reject(
new Error(
`Couldn't resolve component "${name2}" at "${record.path}". Ensure you passed a function that returns a promise.`
)
)
const resolvedComponent = isESModule(resolved)
? resolved.default
: resolved
record.components[name2] = resolvedComponent
return
})
)
}
return promises
}, [])
)
)
).then(() => route)
}
function useLink(props2) {
const router2 = inject(routerKey)
const currentRoute = inject(routeLocationKey)
const route = computed(() => router2.resolve(unref(props2.to)))
const activeRecordIndex = computed(() => {
const { matched } = route.value
const { length: length2 } = matched
const routeMatched = matched[length2 - 1]
const currentMatched = currentRoute.matched
if (!routeMatched || !currentMatched.length) return -1
const index2 = currentMatched.findIndex(
isSameRouteRecord.bind(null, routeMatched)
)
if (index2 > -1) return index2
const parentRecordPath = getOriginalPath(matched[length2 - 2])
return length2 > 1 &&
getOriginalPath(routeMatched) === parentRecordPath &&
currentMatched[currentMatched.length - 1].path !== parentRecordPath
? currentMatched.findIndex(
isSameRouteRecord.bind(null, matched[length2 - 2])
)
: index2
})
const isActive = computed(
() =>
activeRecordIndex.value > -1 &&
includesParams(currentRoute.params, route.value.params)
)
const isExactActive = computed(
() =>
activeRecordIndex.value > -1 &&
activeRecordIndex.value === currentRoute.matched.length - 1 &&
isSameRouteLocationParams(currentRoute.params, route.value.params)
)
function navigate(e2 = {}) {
if (guardEvent(e2)) {
return router2[unref(props2.replace) ? 'replace' : 'push'](
unref(props2.to)
).catch(noop$5)
}
return Promise.resolve()
}
return {
route,
href: computed(() => route.value.href),
isActive,
isExactActive,
navigate,
}
}
const RouterLinkImpl = /* @__PURE__ */ defineComponent({
name: 'RouterLink',
compatConfig: { MODE: 3 },
props: {
to: {
type: [String, Object],
required: true,
},
replace: Boolean,
activeClass: String,
exactActiveClass: String,
custom: Boolean,
ariaCurrentValue: {
type: String,
default: 'page',
},
},
useLink,
setup(props2, { slots }) {
const link2 = reactive(useLink(props2))
const { options: options2 } = inject(routerKey)
const elClass = computed(() => ({
[getLinkClass(
props2.activeClass,
options2.linkActiveClass,
'router-link-active'
)]: link2.isActive,
[getLinkClass(
props2.exactActiveClass,
options2.linkExactActiveClass,
'router-link-exact-active'
)]: link2.isExactActive,
}))
return () => {
const children = slots.default && slots.default(link2)
return props2.custom
? children
: h$4(
'a',
{
'aria-current': link2.isExactActive
? props2.ariaCurrentValue
: null,
href: link2.href,
onClick: link2.navigate,
class: elClass.value,
},
children
)
}
},
})
const RouterLink$1 = RouterLinkImpl
function guardEvent(e2) {
if (e2.metaKey || e2.altKey || e2.ctrlKey || e2.shiftKey) return
if (e2.defaultPrevented) return
if (e2.button !== void 0 && e2.button !== 0) return
if (e2.currentTarget && e2.currentTarget.getAttribute) {
const target2 = e2.currentTarget.getAttribute('target')
if (/\b_blank\b/i.test(target2)) return
}
if (e2.preventDefault) e2.preventDefault()
return true
}
function includesParams(outer, inner2) {
for (const key2 in inner2) {
const innerValue = inner2[key2]
const outerValue = outer[key2]
if (typeof innerValue === 'string') {
if (innerValue !== outerValue) return false
} else {
if (
!isArray$C(outerValue) ||
outerValue.length !== innerValue.length ||
innerValue.some((value2, i2) => value2 !== outerValue[i2])
)
return false
}
}
return true
}
function getOriginalPath(record) {
return record ? (record.aliasOf ? record.aliasOf.path : record.path) : ''
}
const getLinkClass = (propClass, globalClass, defaultClass) =>
propClass != null
? propClass
: globalClass != null
? globalClass
: defaultClass
const RouterViewImpl = /* @__PURE__ */ defineComponent({
name: 'RouterView',
inheritAttrs: false,
props: {
name: {
type: String,
default: 'default',
},
route: Object,
},
compatConfig: { MODE: 3 },
setup(props2, { attrs, slots }) {
const injectedRoute = inject(routerViewLocationKey)
const routeToDisplay = computed(() => props2.route || injectedRoute.value)
const injectedDepth = inject(viewDepthKey, 0)
const depth = computed(() => {
let initialDepth = unref(injectedDepth)
const { matched } = routeToDisplay.value
let matchedRoute
while (
(matchedRoute = matched[initialDepth]) &&
!matchedRoute.components
) {
initialDepth++
}
return initialDepth
})
const matchedRouteRef = computed(
() => routeToDisplay.value.matched[depth.value]
)
provide(
viewDepthKey,
computed(() => depth.value + 1)
)
provide(matchedRouteKey, matchedRouteRef)
provide(routerViewLocationKey, routeToDisplay)
const viewRef = ref()
watch$1(
() => [viewRef.value, matchedRouteRef.value, props2.name],
([instance, to, name2], [oldInstance, from, oldName]) => {
if (to) {
to.instances[name2] = instance
if (from && from !== to && instance && instance === oldInstance) {
if (!to.leaveGuards.size) {
to.leaveGuards = from.leaveGuards
}
if (!to.updateGuards.size) {
to.updateGuards = from.updateGuards
}
}
}
if (
instance &&
to &&
(!from || !isSameRouteRecord(to, from) || !oldInstance)
) {
;(to.enterCallbacks[name2] || []).forEach((callback) =>
callback(instance)
)
}
},
{ flush: 'post' }
)
return () => {
const route = routeToDisplay.value
const currentName = props2.name
const matchedRoute = matchedRouteRef.value
const ViewComponent = matchedRoute && matchedRoute.components[currentName]
if (!ViewComponent) {
return normalizeSlot(slots.default, { Component: ViewComponent, route })
}
const routePropsOption = matchedRoute.props[currentName]
const routeProps = routePropsOption
? routePropsOption === true
? route.params
: typeof routePropsOption === 'function'
? routePropsOption(route)
: routePropsOption
: null
const onVnodeUnmounted = (vnode) => {
if (vnode.component.isUnmounted) {
matchedRoute.instances[currentName] = null
}
}
const component2 = h$4(
ViewComponent,
assign$e({}, routeProps, attrs, {
onVnodeUnmounted,
ref: viewRef,
})
)
return (
normalizeSlot(slots.default, { Component: component2, route }) ||
component2
)
}
},
})
function normalizeSlot(slot, data2) {
if (!slot) return null
const slotContent = slot(data2)
return slotContent.length === 1 ? slotContent[0] : slotContent
}
const RouterView = RouterViewImpl
function createRouter(options2) {
const matcher = createRouterMatcher(options2.routes, options2)
const parseQuery$1 = options2.parseQuery || parseQuery
const stringifyQuery$1 = options2.stringifyQuery || stringifyQuery
const routerHistory = options2.history
const beforeGuards = useCallbacks()
const beforeResolveGuards = useCallbacks()
const afterGuards = useCallbacks()
const currentRoute = shallowRef(START_LOCATION_NORMALIZED)
let pendingLocation = START_LOCATION_NORMALIZED
if (isBrowser && options2.scrollBehavior && 'scrollRestoration' in history) {
history.scrollRestoration = 'manual'
}
const normalizeParams = applyToParams.bind(
null,
(paramValue) => '' + paramValue
)
const encodeParams = applyToParams.bind(null, encodeParam)
const decodeParams = applyToParams.bind(null, decode$3)
function addRoute(parentOrRoute, route) {
let parent2
let record
if (isRouteName(parentOrRoute)) {
parent2 = matcher.getRecordMatcher(parentOrRoute)
record = route
} else {
record = parentOrRoute
}
return matcher.addRoute(record, parent2)
}
function removeRoute(name2) {
const recordMatcher = matcher.getRecordMatcher(name2)
if (recordMatcher) {
matcher.removeRoute(recordMatcher)
}
}
function getRoutes() {
return matcher.getRoutes().map((routeMatcher) => routeMatcher.record)
}
function hasRoute(name2) {
return !!matcher.getRecordMatcher(name2)
}
function resolve2(rawLocation, currentLocation) {
currentLocation = assign$e({}, currentLocation || currentRoute.value)
if (typeof rawLocation === 'string') {
const locationNormalized = parseURL(
parseQuery$1,
rawLocation,
currentLocation.path
)
const matchedRoute2 = matcher.resolve(
{ path: locationNormalized.path },
currentLocation
)
const href2 = routerHistory.createHref(locationNormalized.fullPath)
return assign$e(locationNormalized, matchedRoute2, {
params: decodeParams(matchedRoute2.params),
hash: decode$3(locationNormalized.hash),
redirectedFrom: void 0,
href: href2,
})
}
let matcherLocation
if ('path' in rawLocation) {
matcherLocation = assign$e({}, rawLocation, {
path: parseURL(parseQuery$1, rawLocation.path, currentLocation.path)
.path,
})
} else {
const targetParams = assign$e({}, rawLocation.params)
for (const key2 in targetParams) {
if (targetParams[key2] == null) {
delete targetParams[key2]
}
}
matcherLocation = assign$e({}, rawLocation, {
params: encodeParams(targetParams),
})
currentLocation.params = encodeParams(currentLocation.params)
}
const matchedRoute = matcher.resolve(matcherLocation, currentLocation)
const hash2 = rawLocation.hash || ''
matchedRoute.params = normalizeParams(decodeParams(matchedRoute.params))
const fullPath = stringifyURL(
stringifyQuery$1,
assign$e({}, rawLocation, {
hash: encodeHash(hash2),
path: matchedRoute.path,
})
)
const href = routerHistory.createHref(fullPath)
return assign$e(
{
fullPath,
hash: hash2,
query:
stringifyQuery$1 === stringifyQuery
? normalizeQuery(rawLocation.query)
: rawLocation.query || {},
},
matchedRoute,
{
redirectedFrom: void 0,
href,
}
)
}
function locationAsObject(to) {
return typeof to === 'string'
? parseURL(parseQuery$1, to, currentRoute.value.path)
: assign$e({}, to)
}
function checkCanceledNavigation(to, from) {
if (pendingLocation !== to) {
return createRouterError(8, {
from,
to,
})
}
}
function push2(to) {
return pushWithRedirect(to)
}
function replace2(to) {
return push2(assign$e(locationAsObject(to), { replace: true }))
}
function handleRedirectRecord(to) {
const lastMatched = to.matched[to.matched.length - 1]
if (lastMatched && lastMatched.redirect) {
const { redirect } = lastMatched
let newTargetLocation =
typeof redirect === 'function' ? redirect(to) : redirect
if (typeof newTargetLocation === 'string') {
newTargetLocation =
newTargetLocation.includes('?') || newTargetLocation.includes('#')
? (newTargetLocation = locationAsObject(newTargetLocation))
: { path: newTargetLocation }
newTargetLocation.params = {}
}
return assign$e(
{
query: to.query,
hash: to.hash,
params: 'path' in newTargetLocation ? {} : to.params,
},
newTargetLocation
)
}
}
function pushWithRedirect(to, redirectedFrom) {
const targetLocation = (pendingLocation = resolve2(to))
const from = currentRoute.value
const data2 = to.state
const force = to.force
const replace3 = to.replace === true
const shouldRedirect = handleRedirectRecord(targetLocation)
if (shouldRedirect)
return pushWithRedirect(
assign$e(locationAsObject(shouldRedirect), {
state:
typeof shouldRedirect === 'object'
? assign$e({}, data2, shouldRedirect.state)
: data2,
force,
replace: replace3,
}),
redirectedFrom || targetLocation
)
const toLocation = targetLocation
toLocation.redirectedFrom = redirectedFrom
let failure
if (!force && isSameRouteLocation(stringifyQuery$1, from, targetLocation)) {
failure = createRouterError(16, { to: toLocation, from })
handleScroll2(from, from, true, false)
}
return (failure ? Promise.resolve(failure) : navigate(toLocation, from))
.catch((error2) =>
isNavigationFailure(error2)
? isNavigationFailure(error2, 2)
? error2
: markAsReady(error2)
: triggerError(error2, toLocation, from)
)
.then((failure2) => {
if (failure2) {
if (isNavigationFailure(failure2, 2)) {
return pushWithRedirect(
assign$e(
{
replace: replace3,
},
locationAsObject(failure2.to),
{
state:
typeof failure2.to === 'object'
? assign$e({}, data2, failure2.to.state)
: data2,
force,
}
),
redirectedFrom || toLocation
)
}
} else {
failure2 = finalizeNavigation(toLocation, from, true, replace3, data2)
}
triggerAfterEach(toLocation, from, failure2)
return failure2
})
}
function checkCanceledNavigationAndReject(to, from) {
const error2 = checkCanceledNavigation(to, from)
return error2 ? Promise.reject(error2) : Promise.resolve()
}
function runWithContext(fn2) {
const app2 = installedApps.values().next().value
return app2 && typeof app2.runWithContext === 'function'
? app2.runWithContext(fn2)
: fn2()
}
function navigate(to, from) {
let guards
const [leavingRecords, updatingRecords, enteringRecords] =
extractChangingRecords(to, from)
guards = extractComponentsGuards(
leavingRecords.reverse(),
'beforeRouteLeave',
to,
from
)
for (const record of leavingRecords) {
record.leaveGuards.forEach((guard) => {
guards.push(guardToPromiseFn(guard, to, from))
})
}
const canceledNavigationCheck = checkCanceledNavigationAndReject.bind(
null,
to,
from
)
guards.push(canceledNavigationCheck)
return runGuardQueue(guards)
.then(() => {
guards = []
for (const guard of beforeGuards.list()) {
guards.push(guardToPromiseFn(guard, to, from))
}
guards.push(canceledNavigationCheck)
return runGuardQueue(guards)
})
.then(() => {
guards = extractComponentsGuards(
updatingRecords,
'beforeRouteUpdate',
to,
from
)
for (const record of updatingRecords) {
record.updateGuards.forEach((guard) => {
guards.push(guardToPromiseFn(guard, to, from))
})
}
guards.push(canceledNavigationCheck)
return runGuardQueue(guards)
})
.then(() => {
guards = []
for (const record of enteringRecords) {
if (record.beforeEnter) {
if (isArray$C(record.beforeEnter)) {
for (const beforeEnter of record.beforeEnter)
guards.push(guardToPromiseFn(beforeEnter, to, from))
} else {
guards.push(guardToPromiseFn(record.beforeEnter, to, from))
}
}
}
guards.push(canceledNavigationCheck)
return runGuardQueue(guards)
})
.then(() => {
to.matched.forEach((record) => (record.enterCallbacks = {}))
guards = extractComponentsGuards(
enteringRecords,
'beforeRouteEnter',
to,
from
)
guards.push(canceledNavigationCheck)
return runGuardQueue(guards)
})
.then(() => {
guards = []
for (const guard of beforeResolveGuards.list()) {
guards.push(guardToPromiseFn(guard, to, from))
}
guards.push(canceledNavigationCheck)
return runGuardQueue(guards)
})
.catch((err) => (isNavigationFailure(err, 8) ? err : Promise.reject(err)))
}
function triggerAfterEach(to, from, failure) {
afterGuards
.list()
.forEach((guard) => runWithContext(() => guard(to, from, failure)))
}
function finalizeNavigation(toLocation, from, isPush, replace3, data2) {
const error2 = checkCanceledNavigation(toLocation, from)
if (error2) return error2
const isFirstNavigation = from === START_LOCATION_NORMALIZED
const state2 = !isBrowser ? {} : history.state
if (isPush) {
if (replace3 || isFirstNavigation)
routerHistory.replace(
toLocation.fullPath,
assign$e(
{
scroll: isFirstNavigation && state2 && state2.scroll,
},
data2
)
)
else routerHistory.push(toLocation.fullPath, data2)
}
currentRoute.value = toLocation
handleScroll2(toLocation, from, isPush, isFirstNavigation)
markAsReady()
}
let removeHistoryListener
function setupListeners() {
if (removeHistoryListener) return
removeHistoryListener = routerHistory.listen((to, _from, info) => {
if (!router2.listening) return
const toLocation = resolve2(to)
const shouldRedirect = handleRedirectRecord(toLocation)
if (shouldRedirect) {
pushWithRedirect(
assign$e(shouldRedirect, { replace: true }),
toLocation
).catch(noop$5)
return
}
pendingLocation = toLocation
const from = currentRoute.value
if (isBrowser) {
saveScrollPosition(
getScrollKey(from.fullPath, info.delta),
computeScrollPosition()
)
}
navigate(toLocation, from)
.catch((error2) => {
if (isNavigationFailure(error2, 4 | 8)) {
return error2
}
if (isNavigationFailure(error2, 2)) {
pushWithRedirect(error2.to, toLocation)
.then((failure) => {
if (
isNavigationFailure(failure, 4 | 16) &&
!info.delta &&
info.type === NavigationType.pop
) {
routerHistory.go(-1, false)
}
})
.catch(noop$5)
return Promise.reject()
}
if (info.delta) {
routerHistory.go(-info.delta, false)
}
return triggerError(error2, toLocation, from)
})
.then((failure) => {
failure = failure || finalizeNavigation(toLocation, from, false)
if (failure) {
if (info.delta && !isNavigationFailure(failure, 8)) {
routerHistory.go(-info.delta, false)
} else if (
info.type === NavigationType.pop &&
isNavigationFailure(failure, 4 | 16)
) {
routerHistory.go(-1, false)
}
}
triggerAfterEach(toLocation, from, failure)
})
.catch(noop$5)
})
}
let readyHandlers = useCallbacks()
let errorListeners = useCallbacks()
let ready
function triggerError(error2, to, from) {
markAsReady(error2)
const list2 = errorListeners.list()
if (list2.length) {
list2.forEach((handler) => handler(error2, to, from))
} else {
console.error(error2)
}
return Promise.reject(error2)
}
function isReady() {
if (ready && currentRoute.value !== START_LOCATION_NORMALIZED)
return Promise.resolve()
return new Promise((resolve3, reject2) => {
readyHandlers.add([resolve3, reject2])
})
}
function markAsReady(err) {
if (!ready) {
ready = !err
setupListeners()
readyHandlers
.list()
.forEach(([resolve3, reject2]) => (err ? reject2(err) : resolve3()))
readyHandlers.reset()
}
return err
}
function handleScroll2(to, from, isPush, isFirstNavigation) {
const { scrollBehavior } = options2
if (!isBrowser || !scrollBehavior) return Promise.resolve()
const scrollPosition =
(!isPush && getSavedScrollPosition(getScrollKey(to.fullPath, 0))) ||
((isFirstNavigation || !isPush) &&
history.state &&
history.state.scroll) ||
null
return nextTick()
.then(() => scrollBehavior(to, from, scrollPosition))
.then((position2) => position2 && scrollToPosition(position2))
.catch((err) => triggerError(err, to, from))
}
const go2 = (delta) => routerHistory.go(delta)
let started
const installedApps = /* @__PURE__ */ new Set()
const router2 = {
currentRoute,
listening: true,
addRoute,
removeRoute,
hasRoute,
getRoutes,
resolve: resolve2,
options: options2,
push: push2,
replace: replace2,
go: go2,
back: () => go2(-1),
forward: () => go2(1),
beforeEach: beforeGuards.add,
beforeResolve: beforeResolveGuards.add,
afterEach: afterGuards.add,
onError: errorListeners.add,
isReady,
install(app2) {
const router3 = this
app2.component('RouterLink', RouterLink$1)
app2.component('RouterView', RouterView)
app2.config.globalProperties.$router = router3
Object.defineProperty(app2.config.globalProperties, '$route', {
enumerable: true,
get: () => unref(currentRoute),
})
if (
isBrowser &&
!started &&
currentRoute.value === START_LOCATION_NORMALIZED
) {
started = true
push2(routerHistory.location).catch((err) => {})
}
const reactiveRoute = {}
for (const key2 in START_LOCATION_NORMALIZED) {
Object.defineProperty(reactiveRoute, key2, {
get: () => currentRoute.value[key2],
enumerable: true,
})
}
app2.provide(routerKey, router3)
app2.provide(routeLocationKey, shallowReactive(reactiveRoute))
app2.provide(routerViewLocationKey, currentRoute)
const unmountApp = app2.unmount
installedApps.add(app2)
app2.unmount = function () {
installedApps.delete(app2)
if (installedApps.size < 1) {
pendingLocation = START_LOCATION_NORMALIZED
removeHistoryListener && removeHistoryListener()
removeHistoryListener = null
currentRoute.value = START_LOCATION_NORMALIZED
started = false
ready = false
}
unmountApp()
}
},
}
function runGuardQueue(guards) {
return guards.reduce(
(promise2, guard) => promise2.then(() => runWithContext(guard)),
Promise.resolve()
)
}
return router2
}
function extractChangingRecords(to, from) {
const leavingRecords = []
const updatingRecords = []
const enteringRecords = []
const len2 = Math.max(from.matched.length, to.matched.length)
for (let i2 = 0; i2 < len2; i2++) {
const recordFrom = from.matched[i2]
if (recordFrom) {
if (to.matched.find((record) => isSameRouteRecord(record, recordFrom)))
updatingRecords.push(recordFrom)
else leavingRecords.push(recordFrom)
}
const recordTo = to.matched[i2]
if (recordTo) {
if (!from.matched.find((record) => isSameRouteRecord(record, recordTo))) {
enteringRecords.push(recordTo)
}
}
}
return [leavingRecords, updatingRecords, enteringRecords]
}
function useRouter() {
return inject(routerKey)
}
function useRoute() {
return inject(routeLocationKey)
}
var vueRouter = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
get NavigationFailureType() {
return NavigationFailureType
},
RouterLink: RouterLink$1,
RouterView,
START_LOCATION: START_LOCATION_NORMALIZED,
createMemoryHistory,
createRouter,
createRouterMatcher,
createWebHashHistory,
createWebHistory,
isNavigationFailure,
loadRouteLocation,
matchedRouteKey,
onBeforeRouteLeave,
onBeforeRouteUpdate,
parseQuery,
routeLocationKey,
routerKey,
routerViewLocationKey,
stringifyQuery,
useLink,
useRoute,
useRouter,
viewDepthKey,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
function useTitle() {
const title = 'CMS'
const { currentRoute } = useRouter()
const pageTitle = useTitle$1()
watch$1(
[() => currentRoute.value.path],
() => {
const route = unref(currentRoute)
pageTitle.value = route.meta.title ? `${title} - ${title}` : `${title}`
},
{
immediate: true,
}
)
}
const _sfc_main$75 = /* @__PURE__ */ defineComponent({
setup(__props2) {
const triggerRef2 = ref({
getBoundingClientRect() {
return position2.value
},
})
const position2 = ref({
top: 0,
left: 0,
bottom: 0,
right: 0,
})
const defaultOptions2 = {
content: '',
disabled: false,
rawContent: false,
placement: 'bottom',
effect: 'dark',
offset: null,
popperClass: 'cms-el-tooltip',
showAfter: 20,
}
const currentOptions = reactive({
...defaultOptions2,
})
function updateCurrentOptions(options2) {
Object.assign(currentOptions, defaultOptions2, options2)
}
function getOptions(el2) {
let options2 = {}
const dataset = el2.dataset
options2.content = el2.title
const disabled = dataset['tooltipDisabled']
options2.disabled =
disabled == 'true' || disabled === '' ? true : defaultOptions2.disabled
const rawContent = dataset['tooltipRawContent']
options2.rawContent =
rawContent == 'true' || rawContent === ''
? true
: defaultOptions2.rawContent
const placement = dataset['tooltipPlacement']
const placements2 = [
'top',
'top-start',
'top-end',
'bottom',
'bottom-start',
'bottom-end',
'left',
'left-start',
'left-end',
'right',
'right-start',
'right-end',
]
options2.placement =
placement && placements2.includes(placement)
? placement
: defaultOptions2.placement
const effect2 = dataset['tooltipEffect']
const effects = ['dark', 'light']
options2.effect =
effect2 && effects.includes(effect2) ? effect2 : defaultOptions2.effect
const offset2 = dataset['tooltipOffset']
options2.offset = offset2 ? Number(offset2) : null
const popperClass = dataset['tooltipPopperClass']
options2.popperClass = popperClass || defaultOptions2.popperClass
const showAfter = parseInt(el2.dataset['tooltipShowAfter'] || '')
options2.showAfter = showAfter || defaultOptions2.showAfter
return options2
}
let currentTitleEl
let visible = ref(false)
function show(el2) {
visible.value = true
position2.value = el2.getBoundingClientRect()
}
function hide2() {
visible.value = false
}
function backupTitle(titleEl) {
titleEl.dataset.title = titleEl.title
titleEl.title = ''
}
function revertTitle(titleEl) {
if (!titleEl) return
titleEl.title = titleEl.dataset.title || ''
titleEl.dataset.title = ''
}
function findClosestTileEl(target2, level = 5) {
level -= 1
if (!target2) return
if (!level) return
if (
target2 instanceof HTMLElement &&
(target2.title || target2.dataset.title)
)
return target2
return findClosestTileEl(target2.parentElement, level)
}
let showTimer
function mouseoverHandler(e2) {
if (!(e2.target instanceof Element)) return
const titleEl = findClosestTileEl(e2.target)
if (titleEl !== currentTitleEl) {
revertTitle(currentTitleEl)
}
if (!titleEl) {
currentTitleEl = void 0
hide2()
return
}
if (titleEl && titleEl !== currentTitleEl) {
currentTitleEl = titleEl
const options2 = getOptions(titleEl)
backupTitle(titleEl)
clearTimeout(showTimer)
showTimer = setTimeout(() => {
updateCurrentOptions(options2)
show(titleEl)
}, options2.showAfter)
}
}
const mouseoverHandler_ = useDebounceFn(mouseoverHandler, 10)
useEventListener(document, 'mouseover', mouseoverHandler_, true)
return (_ctx, _cache) => {
const _component_el_tooltip = resolveComponent('el-tooltip')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
_component_el_tooltip,
{
visible: visible.value,
'onUpdate:visible':
_cache[0] || (_cache[0] = ($event) => (visible.value = $event)),
content: unref(currentOptions).content,
disabled: unref(currentOptions)?.disabled,
'raw-content': unref(currentOptions)?.rawContent,
placement: unref(currentOptions)?.placement,
effect: unref(currentOptions)?.effect,
offset: unref(currentOptions)?.offset,
'popper-class': unref(currentOptions)?.popperClass,
enterable: false,
trigger: 'hover',
'virtual-triggering': '',
'virtual-ref': triggerRef2.value,
persistent: '',
},
null,
8,
[
'visible',
'content',
'disabled',
'raw-content',
'placement',
'effect',
'offset',
'popper-class',
'virtual-ref',
]
),
])
)
}
},
})
var TitleTooltip = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$75,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var App_vue_vue_type_style_index_0_scoped_true_lang = ''
var _export_sfc = (sfc, props2) => {
const target2 = sfc.__vccOpts || sfc
for (const [key2, val2] of props2) {
target2[key2] = val2
}
return target2
}
const _hoisted_1$5$ = { class: 'app' }
const _sfc_main$74 = /* @__PURE__ */ defineComponent({
setup(__props2) {
useTitle()
onMounted(() => {})
return (_ctx, _cache) => {
const _component_router_view = resolveComponent('router-view')
return (
openBlock(),
createElementBlock('div', _hoisted_1$5$, [
createVNode$1(_component_router_view),
createVNode$1(_sfc_main$75),
])
)
}
},
})
var AppView = /* @__PURE__ */ _export_sfc(_sfc_main$74, [
['__scopeId', 'data-v-6d210531'],
])
var App$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: AppView,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var axios$2 = { exports: {} }
var bind$b = function bind2(fn2, thisArg) {
return function wrap() {
var args = new Array(arguments.length)
for (var i2 = 0; i2 < args.length; i2++) {
args[i2] = arguments[i2]
}
return fn2.apply(thisArg, args)
}
}
var bind$a = bind$b
var toString$c = Object.prototype.toString
function isArray$B(val2) {
return toString$c.call(val2) === '[object Array]'
}
function isUndefined$b(val2) {
return typeof val2 === 'undefined'
}
function isBuffer$3(val2) {
return (
val2 !== null &&
!isUndefined$b(val2) &&
val2.constructor !== null &&
!isUndefined$b(val2.constructor) &&
typeof val2.constructor.isBuffer === 'function' &&
val2.constructor.isBuffer(val2)
)
}
function isArrayBuffer$1(val2) {
return toString$c.call(val2) === '[object ArrayBuffer]'
}
function isFormData$2(val2) {
return typeof FormData !== 'undefined' && val2 instanceof FormData
}
function isArrayBufferView(val2) {
var result
if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {
result = ArrayBuffer.isView(val2)
} else {
result = val2 && val2.buffer && val2.buffer instanceof ArrayBuffer
}
return result
}
function isString$d(val2) {
return typeof val2 === 'string'
}
function isNumber$f(val2) {
return typeof val2 === 'number'
}
function isObject$s(val2) {
return val2 !== null && typeof val2 === 'object'
}
function isPlainObject$8(val2) {
if (toString$c.call(val2) !== '[object Object]') {
return false
}
var prototype = Object.getPrototypeOf(val2)
return prototype === null || prototype === Object.prototype
}
function isDate$a(val2) {
return toString$c.call(val2) === '[object Date]'
}
function isFile(val2) {
return toString$c.call(val2) === '[object File]'
}
function isBlob(val2) {
return toString$c.call(val2) === '[object Blob]'
}
function isFunction$j(val2) {
return toString$c.call(val2) === '[object Function]'
}
function isStream(val2) {
return isObject$s(val2) && isFunction$j(val2.pipe)
}
function isURLSearchParams(val2) {
return (
typeof URLSearchParams !== 'undefined' && val2 instanceof URLSearchParams
)
}
function trim$5(str) {
return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, '')
}
function isStandardBrowserEnv() {
if (
typeof navigator !== 'undefined' &&
(navigator.product === 'ReactNative' ||
navigator.product === 'NativeScript' ||
navigator.product === 'NS')
) {
return false
}
return typeof window !== 'undefined' && typeof document !== 'undefined'
}
function forEach(obj, fn2) {
if (obj === null || typeof obj === 'undefined') {
return
}
if (typeof obj !== 'object') {
obj = [obj]
}
if (isArray$B(obj)) {
for (var i2 = 0, l2 = obj.length; i2 < l2; i2++) {
fn2.call(null, obj[i2], i2, obj)
}
} else {
for (var key2 in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key2)) {
fn2.call(null, obj[key2], key2, obj)
}
}
}
}
function merge$3() {
var result = {}
function assignValue2(val2, key2) {
if (isPlainObject$8(result[key2]) && isPlainObject$8(val2)) {
result[key2] = merge$3(result[key2], val2)
} else if (isPlainObject$8(val2)) {
result[key2] = merge$3({}, val2)
} else if (isArray$B(val2)) {
result[key2] = val2.slice()
} else {
result[key2] = val2
}
}
for (var i2 = 0, l2 = arguments.length; i2 < l2; i2++) {
forEach(arguments[i2], assignValue2)
}
return result
}
function extend$2(a2, b2, thisArg) {
forEach(b2, function assignValue2(val2, key2) {
if (thisArg && typeof val2 === 'function') {
a2[key2] = bind$a(val2, thisArg)
} else {
a2[key2] = val2
}
})
return a2
}
function stripBOM(content2) {
if (content2.charCodeAt(0) === 65279) {
content2 = content2.slice(1)
}
return content2
}
var utils$e = {
isArray: isArray$B,
isArrayBuffer: isArrayBuffer$1,
isBuffer: isBuffer$3,
isFormData: isFormData$2,
isArrayBufferView,
isString: isString$d,
isNumber: isNumber$f,
isObject: isObject$s,
isPlainObject: isPlainObject$8,
isUndefined: isUndefined$b,
isDate: isDate$a,
isFile,
isBlob,
isFunction: isFunction$j,
isStream,
isURLSearchParams,
isStandardBrowserEnv,
forEach,
merge: merge$3,
extend: extend$2,
trim: trim$5,
stripBOM,
}
var utils$d = utils$e
function encode(val2) {
return encodeURIComponent(val2)
.replace(/%3A/gi, ':')
.replace(/%24/g, '$')
.replace(/%2C/gi, ',')
.replace(/%20/g, '+')
.replace(/%5B/gi, '[')
.replace(/%5D/gi, ']')
}
var buildURL$2 = function buildURL2(url2, params2, paramsSerializer) {
if (!params2) {
return url2
}
var serializedParams
if (paramsSerializer) {
serializedParams = paramsSerializer(params2)
} else if (utils$d.isURLSearchParams(params2)) {
serializedParams = params2.toString()
} else {
var parts = []
utils$d.forEach(params2, function serialize2(val2, key2) {
if (val2 === null || typeof val2 === 'undefined') {
return
}
if (utils$d.isArray(val2)) {
key2 = key2 + '[]'
} else {
val2 = [val2]
}
utils$d.forEach(val2, function parseValue2(v4) {
if (utils$d.isDate(v4)) {
v4 = v4.toISOString()
} else if (utils$d.isObject(v4)) {
v4 = JSON.stringify(v4)
}
parts.push(encode(key2) + '=' + encode(v4))
})
})
serializedParams = parts.join('&')
}
if (serializedParams) {
var hashmarkIndex = url2.indexOf('#')
if (hashmarkIndex !== -1) {
url2 = url2.slice(0, hashmarkIndex)
}
url2 += (url2.indexOf('?') === -1 ? '?' : '&') + serializedParams
}
return url2
}
var utils$c = utils$e
function InterceptorManager$1() {
this.handlers = []
}
InterceptorManager$1.prototype.use = function use2(
fulfilled,
rejected,
options2
) {
this.handlers.push({
fulfilled,
rejected,
synchronous: options2 ? options2.synchronous : false,
runWhen: options2 ? options2.runWhen : null,
})
return this.handlers.length - 1
}
InterceptorManager$1.prototype.eject = function eject(id2) {
if (this.handlers[id2]) {
this.handlers[id2] = null
}
}
InterceptorManager$1.prototype.forEach = function forEach2(fn2) {
utils$c.forEach(this.handlers, function forEachHandler(h2) {
if (h2 !== null) {
fn2(h2)
}
})
}
var InterceptorManager_1 = InterceptorManager$1
var utils$b = utils$e
var normalizeHeaderName$1 = function normalizeHeaderName2(
headers,
normalizedName
) {
utils$b.forEach(headers, function processHeader(value2, name2) {
if (
name2 !== normalizedName &&
name2.toUpperCase() === normalizedName.toUpperCase()
) {
headers[normalizedName] = value2
delete headers[name2]
}
})
}
var enhanceError$2 = function enhanceError2(
error2,
config2,
code2,
request3,
response
) {
error2.config = config2
if (code2) {
error2.code = code2
}
error2.request = request3
error2.response = response
error2.isAxiosError = true
error2.toJSON = function toJSON() {
return {
message: this.message,
name: this.name,
description: this.description,
number: this.number,
fileName: this.fileName,
lineNumber: this.lineNumber,
columnNumber: this.columnNumber,
stack: this.stack,
config: this.config,
code: this.code,
status:
this.response && this.response.status ? this.response.status : null,
}
}
return error2
}
var enhanceError$1 = enhanceError$2
var createError$2 = function createError2(
message2,
config2,
code2,
request3,
response
) {
var error2 = new Error(message2)
return enhanceError$1(error2, config2, code2, request3, response)
}
var createError$1 = createError$2
var settle$1 = function settle2(resolve2, reject2, response) {
var validateStatus2 = response.config.validateStatus
if (
!response.status ||
!validateStatus2 ||
validateStatus2(response.status)
) {
resolve2(response)
} else {
reject2(
createError$1(
'Request failed with status code ' + response.status,
response.config,
null,
response.request,
response
)
)
}
}
var utils$a = utils$e
var cookies$1 = utils$a.isStandardBrowserEnv()
? (function standardBrowserEnv() {
return {
write: function write2(name2, value2, expires, path, domain, secure) {
var cookie2 = []
cookie2.push(name2 + '=' + encodeURIComponent(value2))
if (utils$a.isNumber(expires)) {
cookie2.push('expires=' + new Date(expires).toGMTString())
}
if (utils$a.isString(path)) {
cookie2.push('path=' + path)
}
if (utils$a.isString(domain)) {
cookie2.push('domain=' + domain)
}
if (secure === true) {
cookie2.push('secure')
}
document.cookie = cookie2.join('; ')
},
read: function read2(name2) {
var match2 = document.cookie.match(
new RegExp('(^|;\\s*)(' + name2 + ')=([^;]*)')
)
return match2 ? decodeURIComponent(match2[3]) : null
},
remove: function remove2(name2) {
this.write(name2, '', Date.now() - 864e5)
},
}
})()
: (function nonStandardBrowserEnv() {
return {
write: function write2() {},
read: function read2() {
return null
},
remove: function remove2() {},
}
})()
var isAbsoluteURL$1 = function isAbsoluteURL2(url2) {
return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url2)
}
var combineURLs$1 = function combineURLs2(baseURL2, relativeURL) {
return relativeURL
? baseURL2.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '')
: baseURL2
}
var isAbsoluteURL = isAbsoluteURL$1
var combineURLs = combineURLs$1
var buildFullPath$1 = function buildFullPath2(baseURL2, requestedURL) {
if (baseURL2 && !isAbsoluteURL(requestedURL)) {
return combineURLs(baseURL2, requestedURL)
}
return requestedURL
}
var utils$9 = utils$e
var ignoreDuplicateOf = [
'age',
'authorization',
'content-length',
'content-type',
'etag',
'expires',
'from',
'host',
'if-modified-since',
'if-unmodified-since',
'last-modified',
'location',
'max-forwards',
'proxy-authorization',
'referer',
'retry-after',
'user-agent',
]
var parseHeaders$1 = function parseHeaders2(headers) {
var parsed = {}
var key2
var val2
var i2
if (!headers) {
return parsed
}
utils$9.forEach(headers.split('\n'), function parser2(line) {
i2 = line.indexOf(':')
key2 = utils$9.trim(line.substr(0, i2)).toLowerCase()
val2 = utils$9.trim(line.substr(i2 + 1))
if (key2) {
if (parsed[key2] && ignoreDuplicateOf.indexOf(key2) >= 0) {
return
}
if (key2 === 'set-cookie') {
parsed[key2] = (parsed[key2] ? parsed[key2] : []).concat([val2])
} else {
parsed[key2] = parsed[key2] ? parsed[key2] + ', ' + val2 : val2
}
}
})
return parsed
}
var utils$8 = utils$e
var isURLSameOrigin$1 = utils$8.isStandardBrowserEnv()
? (function standardBrowserEnv2() {
var msie = /(msie|trident)/i.test(navigator.userAgent)
var urlParsingNode = document.createElement('a')
var originURL
function resolveURL(url2) {
var href = url2
if (msie) {
urlParsingNode.setAttribute('href', href)
href = urlParsingNode.href
}
urlParsingNode.setAttribute('href', href)
return {
href: urlParsingNode.href,
protocol: urlParsingNode.protocol
? urlParsingNode.protocol.replace(/:$/, '')
: '',
host: urlParsingNode.host,
search: urlParsingNode.search
? urlParsingNode.search.replace(/^\?/, '')
: '',
hash: urlParsingNode.hash
? urlParsingNode.hash.replace(/^#/, '')
: '',
hostname: urlParsingNode.hostname,
port: urlParsingNode.port,
pathname:
urlParsingNode.pathname.charAt(0) === '/'
? urlParsingNode.pathname
: '/' + urlParsingNode.pathname,
}
}
originURL = resolveURL(window.location.href)
return function isURLSameOrigin2(requestURL) {
var parsed = utils$8.isString(requestURL)
? resolveURL(requestURL)
: requestURL
return (
parsed.protocol === originURL.protocol &&
parsed.host === originURL.host
)
}
})()
: (function nonStandardBrowserEnv2() {
return function isURLSameOrigin2() {
return true
}
})()
function Cancel$3(message2) {
this.message = message2
}
Cancel$3.prototype.toString = function toString2() {
return 'Cancel' + (this.message ? ': ' + this.message : '')
}
Cancel$3.prototype.__CANCEL__ = true
var Cancel_1 = Cancel$3
var utils$7 = utils$e
var settle = settle$1
var cookies = cookies$1
var buildURL$1 = buildURL$2
var buildFullPath = buildFullPath$1
var parseHeaders = parseHeaders$1
var isURLSameOrigin = isURLSameOrigin$1
var createError = createError$2
var defaults$6 = defaults_1
var Cancel$2 = Cancel_1
var xhr = function xhrAdapter(config2) {
return new Promise(function dispatchXhrRequest(resolve2, reject2) {
var requestData = config2.data
var requestHeaders = config2.headers
var responseType = config2.responseType
var onCanceled
function done() {
if (config2.cancelToken) {
config2.cancelToken.unsubscribe(onCanceled)
}
if (config2.signal) {
config2.signal.removeEventListener('abort', onCanceled)
}
}
if (utils$7.isFormData(requestData)) {
delete requestHeaders['Content-Type']
}
var request3 = new XMLHttpRequest()
if (config2.auth) {
var username = config2.auth.username || ''
var password = config2.auth.password
? unescape(encodeURIComponent(config2.auth.password))
: ''
requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password)
}
var fullPath = buildFullPath(config2.baseURL, config2.url)
request3.open(
config2.method.toUpperCase(),
buildURL$1(fullPath, config2.params, config2.paramsSerializer),
true
)
request3.timeout = config2.timeout
function onloadend() {
if (!request3) {
return
}
var responseHeaders =
'getAllResponseHeaders' in request3
? parseHeaders(request3.getAllResponseHeaders())
: null
var responseData =
!responseType || responseType === 'text' || responseType === 'json'
? request3.responseText
: request3.response
var response = {
data: responseData,
status: request3.status,
statusText: request3.statusText,
headers: responseHeaders,
config: config2,
request: request3,
}
settle(
function _resolve(value2) {
resolve2(value2)
done()
},
function _reject(err) {
reject2(err)
done()
},
response
)
request3 = null
}
if ('onloadend' in request3) {
request3.onloadend = onloadend
} else {
request3.onreadystatechange = function handleLoad() {
if (!request3 || request3.readyState !== 4) {
return
}
if (
request3.status === 0 &&
!(request3.responseURL && request3.responseURL.indexOf('file:') === 0)
) {
return
}
setTimeout(onloadend)
}
}
request3.onabort = function handleAbort() {
if (!request3) {
return
}
reject2(createError('Request aborted', config2, 'ECONNABORTED', request3))
request3 = null
}
request3.onerror = function handleError() {
reject2(createError('Network Error', config2, null, request3))
request3 = null
}
request3.ontimeout = function handleTimeout() {
var timeoutErrorMessage = config2.timeout
? 'timeout of ' + config2.timeout + 'ms exceeded'
: 'timeout exceeded'
var transitional2 = config2.transitional || defaults$6.transitional
if (config2.timeoutErrorMessage) {
timeoutErrorMessage = config2.timeoutErrorMessage
}
reject2(
createError(
timeoutErrorMessage,
config2,
transitional2.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',
request3
)
)
request3 = null
}
if (utils$7.isStandardBrowserEnv()) {
var xsrfValue =
(config2.withCredentials || isURLSameOrigin(fullPath)) &&
config2.xsrfCookieName
? cookies.read(config2.xsrfCookieName)
: void 0
if (xsrfValue) {
requestHeaders[config2.xsrfHeaderName] = xsrfValue
}
}
if ('setRequestHeader' in request3) {
utils$7.forEach(requestHeaders, function setRequestHeader(val2, key2) {
if (
typeof requestData === 'undefined' &&
key2.toLowerCase() === 'content-type'
) {
delete requestHeaders[key2]
} else {
request3.setRequestHeader(key2, val2)
}
})
}
if (!utils$7.isUndefined(config2.withCredentials)) {
request3.withCredentials = !!config2.withCredentials
}
if (responseType && responseType !== 'json') {
request3.responseType = config2.responseType
}
if (typeof config2.onDownloadProgress === 'function') {
request3.addEventListener('progress', config2.onDownloadProgress)
}
if (typeof config2.onUploadProgress === 'function' && request3.upload) {
request3.upload.addEventListener('progress', config2.onUploadProgress)
}
if (config2.cancelToken || config2.signal) {
onCanceled = function (cancel2) {
if (!request3) {
return
}
reject2(
!cancel2 || (cancel2 && cancel2.type)
? new Cancel$2('canceled')
: cancel2
)
request3.abort()
request3 = null
}
config2.cancelToken && config2.cancelToken.subscribe(onCanceled)
if (config2.signal) {
config2.signal.aborted
? onCanceled()
: config2.signal.addEventListener('abort', onCanceled)
}
}
if (!requestData) {
requestData = null
}
request3.send(requestData)
})
}
var utils$6 = utils$e
var normalizeHeaderName = normalizeHeaderName$1
var enhanceError = enhanceError$2
var DEFAULT_CONTENT_TYPE = {
'Content-Type': 'application/x-www-form-urlencoded',
}
function setContentTypeIfUnset(headers, value2) {
if (
!utils$6.isUndefined(headers) &&
utils$6.isUndefined(headers['Content-Type'])
) {
headers['Content-Type'] = value2
}
}
function getDefaultAdapter() {
var adapter
if (typeof XMLHttpRequest !== 'undefined') {
adapter = xhr
} else if (
typeof process !== 'undefined' &&
Object.prototype.toString.call(process) === '[object process]'
) {
adapter = xhr
}
return adapter
}
function stringifySafely(rawValue, parser2, encoder) {
if (utils$6.isString(rawValue)) {
try {
;(parser2 || JSON.parse)(rawValue)
return utils$6.trim(rawValue)
} catch (e2) {
if (e2.name !== 'SyntaxError') {
throw e2
}
}
}
return (encoder || JSON.stringify)(rawValue)
}
var defaults$5 = {
transitional: {
silentJSONParsing: true,
forcedJSONParsing: true,
clarifyTimeoutError: false,
},
adapter: getDefaultAdapter(),
transformRequest: [
function transformRequest(data2, headers) {
normalizeHeaderName(headers, 'Accept')
normalizeHeaderName(headers, 'Content-Type')
if (
utils$6.isFormData(data2) ||
utils$6.isArrayBuffer(data2) ||
utils$6.isBuffer(data2) ||
utils$6.isStream(data2) ||
utils$6.isFile(data2) ||
utils$6.isBlob(data2)
) {
return data2
}
if (utils$6.isArrayBufferView(data2)) {
return data2.buffer
}
if (utils$6.isURLSearchParams(data2)) {
setContentTypeIfUnset(
headers,
'application/x-www-form-urlencoded;charset=utf-8'
)
return data2.toString()
}
if (
utils$6.isObject(data2) ||
(headers && headers['Content-Type'] === 'application/json')
) {
setContentTypeIfUnset(headers, 'application/json')
return stringifySafely(data2)
}
return data2
},
],
transformResponse: [
function transformResponse(data2) {
var transitional2 = this.transitional || defaults$5.transitional
var silentJSONParsing = transitional2 && transitional2.silentJSONParsing
var forcedJSONParsing = transitional2 && transitional2.forcedJSONParsing
var strictJSONParsing = !silentJSONParsing && this.responseType === 'json'
if (
strictJSONParsing ||
(forcedJSONParsing && utils$6.isString(data2) && data2.length)
) {
try {
return JSON.parse(data2)
} catch (e2) {
if (strictJSONParsing) {
if (e2.name === 'SyntaxError') {
throw enhanceError(e2, this, 'E_JSON_PARSE')
}
throw e2
}
}
}
return data2
},
],
timeout: 0,
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
maxBodyLength: -1,
validateStatus: function validateStatus(status) {
return status >= 200 && status < 300
},
headers: {
common: {
Accept: 'application/json, text/plain, */*',
},
},
}
utils$6.forEach(
['delete', 'get', 'head'],
function forEachMethodNoData(method4) {
defaults$5.headers[method4] = {}
}
)
utils$6.forEach(
['post', 'put', 'patch'],
function forEachMethodWithData(method4) {
defaults$5.headers[method4] = utils$6.merge(DEFAULT_CONTENT_TYPE)
}
)
var defaults_1 = defaults$5
var utils$5 = utils$e
var defaults$4 = defaults_1
var transformData$1 = function transformData2(data2, headers, fns) {
var context2 = this || defaults$4
utils$5.forEach(fns, function transform3(fn2) {
data2 = fn2.call(context2, data2, headers)
})
return data2
}
var isCancel$1 = function isCancel2(value2) {
return !!(value2 && value2.__CANCEL__)
}
var utils$4 = utils$e
var transformData = transformData$1
var isCancel = isCancel$1
var defaults$3 = defaults_1
var Cancel$1 = Cancel_1
function throwIfCancellationRequested(config2) {
if (config2.cancelToken) {
config2.cancelToken.throwIfRequested()
}
if (config2.signal && config2.signal.aborted) {
throw new Cancel$1('canceled')
}
}
var dispatchRequest$1 = function dispatchRequest2(config2) {
throwIfCancellationRequested(config2)
config2.headers = config2.headers || {}
config2.data = transformData.call(
config2,
config2.data,
config2.headers,
config2.transformRequest
)
config2.headers = utils$4.merge(
config2.headers.common || {},
config2.headers[config2.method] || {},
config2.headers
)
utils$4.forEach(
['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],
function cleanHeaderConfig(method4) {
delete config2.headers[method4]
}
)
var adapter = config2.adapter || defaults$3.adapter
return adapter(config2).then(
function onAdapterResolution(response) {
throwIfCancellationRequested(config2)
response.data = transformData.call(
config2,
response.data,
response.headers,
config2.transformResponse
)
return response
},
function onAdapterRejection(reason) {
if (!isCancel(reason)) {
throwIfCancellationRequested(config2)
if (reason && reason.response) {
reason.response.data = transformData.call(
config2,
reason.response.data,
reason.response.headers,
config2.transformResponse
)
}
}
return Promise.reject(reason)
}
)
}
var utils$3 = utils$e
var mergeConfig$2 = function mergeConfig2(config1, config2) {
config2 = config2 || {}
var config3 = {}
function getMergedValue(target2, source2) {
if (utils$3.isPlainObject(target2) && utils$3.isPlainObject(source2)) {
return utils$3.merge(target2, source2)
} else if (utils$3.isPlainObject(source2)) {
return utils$3.merge({}, source2)
} else if (utils$3.isArray(source2)) {
return source2.slice()
}
return source2
}
function mergeDeepProperties(prop) {
if (!utils$3.isUndefined(config2[prop])) {
return getMergedValue(config1[prop], config2[prop])
} else if (!utils$3.isUndefined(config1[prop])) {
return getMergedValue(void 0, config1[prop])
}
}
function valueFromConfig2(prop) {
if (!utils$3.isUndefined(config2[prop])) {
return getMergedValue(void 0, config2[prop])
}
}
function defaultToConfig2(prop) {
if (!utils$3.isUndefined(config2[prop])) {
return getMergedValue(void 0, config2[prop])
} else if (!utils$3.isUndefined(config1[prop])) {
return getMergedValue(void 0, config1[prop])
}
}
function mergeDirectKeys(prop) {
if (prop in config2) {
return getMergedValue(config1[prop], config2[prop])
} else if (prop in config1) {
return getMergedValue(void 0, config1[prop])
}
}
var mergeMap = {
url: valueFromConfig2,
method: valueFromConfig2,
data: valueFromConfig2,
baseURL: defaultToConfig2,
transformRequest: defaultToConfig2,
transformResponse: defaultToConfig2,
paramsSerializer: defaultToConfig2,
timeout: defaultToConfig2,
timeoutMessage: defaultToConfig2,
withCredentials: defaultToConfig2,
adapter: defaultToConfig2,
responseType: defaultToConfig2,
xsrfCookieName: defaultToConfig2,
xsrfHeaderName: defaultToConfig2,
onUploadProgress: defaultToConfig2,
onDownloadProgress: defaultToConfig2,
decompress: defaultToConfig2,
maxContentLength: defaultToConfig2,
maxBodyLength: defaultToConfig2,
transport: defaultToConfig2,
httpAgent: defaultToConfig2,
httpsAgent: defaultToConfig2,
cancelToken: defaultToConfig2,
socketPath: defaultToConfig2,
responseEncoding: defaultToConfig2,
validateStatus: mergeDirectKeys,
}
utils$3.forEach(
Object.keys(config1).concat(Object.keys(config2)),
function computeConfigValue(prop) {
var merge2 = mergeMap[prop] || mergeDeepProperties
var configValue = merge2(prop)
;(utils$3.isUndefined(configValue) && merge2 !== mergeDirectKeys) ||
(config3[prop] = configValue)
}
)
return config3
}
var data$1 = {
version: '0.24.0',
}
var VERSION$3 = data$1.version
var validators$2 = {}
;['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(
function (type4, i2) {
validators$2[type4] = function validator2(thing) {
return typeof thing === type4 || 'a' + (i2 < 1 ? 'n ' : ' ') + type4
}
}
)
var deprecatedWarnings = {}
validators$2.transitional = function transitional(
validator2,
version2,
message2
) {
function formatMessage(opt, desc) {
return (
'[Axios v' +
VERSION$3 +
"] Transitional option '" +
opt +
"'" +
desc +
(message2 ? '. ' + message2 : '')
)
}
return function (value2, opt, opts) {
if (validator2 === false) {
throw new Error(
formatMessage(
opt,
' has been removed' + (version2 ? ' in ' + version2 : '')
)
)
}
if (version2 && !deprecatedWarnings[opt]) {
deprecatedWarnings[opt] = true
console.warn(
formatMessage(
opt,
' has been deprecated since v' +
version2 +
' and will be removed in the near future'
)
)
}
return validator2 ? validator2(value2, opt, opts) : true
}
}
function assertOptions(options2, schema, allowUnknown) {
if (typeof options2 !== 'object') {
throw new TypeError('options must be an object')
}
var keys3 = Object.keys(options2)
var i2 = keys3.length
while (i2-- > 0) {
var opt = keys3[i2]
var validator2 = schema[opt]
if (validator2) {
var value2 = options2[opt]
var result = value2 === void 0 || validator2(value2, opt, options2)
if (result !== true) {
throw new TypeError('option ' + opt + ' must be ' + result)
}
continue
}
if (allowUnknown !== true) {
throw Error('Unknown option ' + opt)
}
}
}
var validator$1 = {
assertOptions,
validators: validators$2,
}
var utils$2 = utils$e
var buildURL = buildURL$2
var InterceptorManager = InterceptorManager_1
var dispatchRequest = dispatchRequest$1
var mergeConfig$1 = mergeConfig$2
var validator = validator$1
var validators$1 = validator.validators
function Axios$1(instanceConfig) {
this.defaults = instanceConfig
this.interceptors = {
request: new InterceptorManager(),
response: new InterceptorManager(),
}
}
Axios$1.prototype.request = function request2(config2) {
if (typeof config2 === 'string') {
config2 = arguments[1] || {}
config2.url = arguments[0]
} else {
config2 = config2 || {}
}
config2 = mergeConfig$1(this.defaults, config2)
if (config2.method) {
config2.method = config2.method.toLowerCase()
} else if (this.defaults.method) {
config2.method = this.defaults.method.toLowerCase()
} else {
config2.method = 'get'
}
var transitional2 = config2.transitional
if (transitional2 !== void 0) {
validator.assertOptions(
transitional2,
{
silentJSONParsing: validators$1.transitional(validators$1.boolean),
forcedJSONParsing: validators$1.transitional(validators$1.boolean),
clarifyTimeoutError: validators$1.transitional(validators$1.boolean),
},
false
)
}
var requestInterceptorChain = []
var synchronousRequestInterceptors = true
this.interceptors.request.forEach(function unshiftRequestInterceptors(
interceptor2
) {
if (
typeof interceptor2.runWhen === 'function' &&
interceptor2.runWhen(config2) === false
) {
return
}
synchronousRequestInterceptors =
synchronousRequestInterceptors && interceptor2.synchronous
requestInterceptorChain.unshift(
interceptor2.fulfilled,
interceptor2.rejected
)
})
var responseInterceptorChain = []
this.interceptors.response.forEach(function pushResponseInterceptors(
interceptor2
) {
responseInterceptorChain.push(interceptor2.fulfilled, interceptor2.rejected)
})
var promise2
if (!synchronousRequestInterceptors) {
var chain = [dispatchRequest, void 0]
Array.prototype.unshift.apply(chain, requestInterceptorChain)
chain = chain.concat(responseInterceptorChain)
promise2 = Promise.resolve(config2)
while (chain.length) {
promise2 = promise2.then(chain.shift(), chain.shift())
}
return promise2
}
var newConfig = config2
while (requestInterceptorChain.length) {
var onFulfilled = requestInterceptorChain.shift()
var onRejected = requestInterceptorChain.shift()
try {
newConfig = onFulfilled(newConfig)
} catch (error2) {
onRejected(error2)
break
}
}
try {
promise2 = dispatchRequest(newConfig)
} catch (error2) {
return Promise.reject(error2)
}
while (responseInterceptorChain.length) {
promise2 = promise2.then(
responseInterceptorChain.shift(),
responseInterceptorChain.shift()
)
}
return promise2
}
Axios$1.prototype.getUri = function getUri(config2) {
config2 = mergeConfig$1(this.defaults, config2)
return buildURL(
config2.url,
config2.params,
config2.paramsSerializer
).replace(/^\?/, '')
}
utils$2.forEach(
['delete', 'get', 'head', 'options'],
function forEachMethodNoData2(method4) {
Axios$1.prototype[method4] = function (url2, config2) {
return this.request(
mergeConfig$1(config2 || {}, {
method: method4,
url: url2,
data: (config2 || {}).data,
})
)
}
}
)
utils$2.forEach(
['post', 'put', 'patch'],
function forEachMethodWithData2(method4) {
Axios$1.prototype[method4] = function (url2, data2, config2) {
return this.request(
mergeConfig$1(config2 || {}, {
method: method4,
url: url2,
data: data2,
})
)
}
}
)
var Axios_1 = Axios$1
var Cancel = Cancel_1
function CancelToken(executor) {
if (typeof executor !== 'function') {
throw new TypeError('executor must be a function.')
}
var resolvePromise
this.promise = new Promise(function promiseExecutor(resolve2) {
resolvePromise = resolve2
})
var token = this
this.promise.then(function (cancel2) {
if (!token._listeners) return
var i2
var l2 = token._listeners.length
for (i2 = 0; i2 < l2; i2++) {
token._listeners[i2](cancel2)
}
token._listeners = null
})
this.promise.then = function (onfulfilled) {
var _resolve
var promise2 = new Promise(function (resolve2) {
token.subscribe(resolve2)
_resolve = resolve2
}).then(onfulfilled)
promise2.cancel = function reject2() {
token.unsubscribe(_resolve)
}
return promise2
}
executor(function cancel2(message2) {
if (token.reason) {
return
}
token.reason = new Cancel(message2)
resolvePromise(token.reason)
})
}
CancelToken.prototype.throwIfRequested = function throwIfRequested() {
if (this.reason) {
throw this.reason
}
}
CancelToken.prototype.subscribe = function subscribe(listener) {
if (this.reason) {
listener(this.reason)
return
}
if (this._listeners) {
this._listeners.push(listener)
} else {
this._listeners = [listener]
}
}
CancelToken.prototype.unsubscribe = function unsubscribe(listener) {
if (!this._listeners) {
return
}
var index2 = this._listeners.indexOf(listener)
if (index2 !== -1) {
this._listeners.splice(index2, 1)
}
}
CancelToken.source = function source() {
var cancel2
var token = new CancelToken(function executor(c2) {
cancel2 = c2
})
return {
token,
cancel: cancel2,
}
}
var CancelToken_1 = CancelToken
var spread = function spread2(callback) {
return function wrap(arr) {
return callback.apply(null, arr)
}
}
var isAxiosError = function isAxiosError2(payload) {
return typeof payload === 'object' && payload.isAxiosError === true
}
var utils$1 = utils$e
var bind$9 = bind$b
var Axios = Axios_1
var mergeConfig = mergeConfig$2
var defaults$2 = defaults_1
function createInstance(defaultConfig) {
var context2 = new Axios(defaultConfig)
var instance = bind$9(Axios.prototype.request, context2)
utils$1.extend(instance, Axios.prototype, context2)
utils$1.extend(instance, context2)
instance.create = function create3(instanceConfig) {
return createInstance(mergeConfig(defaultConfig, instanceConfig))
}
return instance
}
var axios$1 = createInstance(defaults$2)
axios$1.Axios = Axios
axios$1.Cancel = Cancel_1
axios$1.CancelToken = CancelToken_1
axios$1.isCancel = isCancel$1
axios$1.VERSION = data$1.version
axios$1.all = function all(promises) {
return Promise.all(promises)
}
axios$1.spread = spread
axios$1.isAxiosError = isAxiosError
axios$2.exports = axios$1
axios$2.exports.default = axios$1
var axios = axios$2.exports
var index$p = /* @__PURE__ */ _mergeNamespaces(
{
__proto__: null,
default: axios,
},
[axios]
)
const Local = {
set(key2, val2) {
let stringify2 = val2
if (typeof val2 === 'object') {
stringify2 = JSON.stringify(val2)
}
window.localStorage.setItem(key2, stringify2)
},
get(key2) {
let json = window.localStorage.getItem(key2)
if (json === 'undefined') {
return void 0
}
try {
return JSON.parse(json)
} catch (error2) {
return json
}
},
remove(key2) {
window.localStorage.removeItem(key2)
},
clear() {
window.localStorage.clear()
},
}
const Session = {
set(key2, val2) {
let json = val2
if (typeof val2 === 'object') {
json = JSON.stringify(val2)
}
window.sessionStorage.setItem(key2, json)
},
get(key2) {
let json = window.sessionStorage.getItem(key2)
if (json === 'undefined') {
return void 0
}
try {
return JSON.parse(json)
} catch (error2) {
return json
}
},
remove(key2) {
window.sessionStorage.removeItem(key2)
},
clear() {
window.sessionStorage.clear()
},
}
window.Local = Local
window.Session = Session
function toast(messageOrOptions, type4, duration2) {
let elMessage
setTimeout(() => {
elMessage = ElMessage({
message: String(messageOrOptions),
type: type4,
duration: duration2,
grouping: true,
showClose: true,
...Object(typeof messageOrOptions === 'object' ? messageOrOptions : {}),
})
})
return {
close() {
setTimeout(() => {
elMessage?.close()
})
},
}
}
function createSingleToast() {
let single
return function singleToast2(...args) {
single?.close()
single = toast(...args)
}
}
window.toast = toast
var af = {
name: 'af',
el: {
colorpicker: {
confirm: 'Bevestig',
clear: 'Maak skoon',
},
datepicker: {
now: 'Nou',
today: 'Vandag',
cancel: 'Kanselleer',
clear: 'Maak skoon',
confirm: 'Bevestig',
selectDate: 'Kies datum',
selectTime: 'Kies tyd',
startDate: 'Begindatum',
startTime: 'Begintyd',
endDate: 'Einddatum',
endTime: 'Eindtyd',
prevYear: 'Previous Year',
nextYear: 'Next Year',
prevMonth: 'Previous Month',
nextMonth: 'Next Month',
year: 'Jaar',
month1: 'Jan',
month2: 'Feb',
month3: 'Mrt',
month4: 'Apr',
month5: 'Mei',
month6: 'Jun',
month7: 'Jul',
month8: 'Aug',
month9: 'Sep',
month10: 'Okt',
month11: 'Nov',
month12: 'Des',
weeks: {
sun: 'So',
mon: 'Ma',
tue: 'Di',
wed: 'Wo',
thu: 'Do',
fri: 'Vr',
sat: 'Sa',
},
months: {
jan: 'Jan',
feb: 'Feb',
mar: 'Mrt',
apr: 'Apr',
may: 'Mei',
jun: 'Jun',
jul: 'Jul',
aug: 'Aug',
sep: 'Sep',
oct: 'Okt',
nov: 'Nov',
dec: 'Des',
},
},
select: {
loading: 'Laai',
noMatch: 'Geen toepaslike data',
noData: 'Geen data',
placeholder: 'Kies',
},
cascader: {
noMatch: 'Geen toepaslike data',
loading: 'Laai',
placeholder: 'Kies',
noData: 'Geen data',
},
pagination: {
goto: 'Gaan na',
pagesize: '/page',
total: 'Totaal {total}',
pageClassifier: '',
},
messagebox: {
title: 'Boodskap',
confirm: 'Bevestig',
cancel: 'Kanselleer',
error: 'Ongeldige invoer',
},
upload: {
deleteTip: 'press delete to remove',
delete: 'Verwyder',
preview: 'Voorskou',
continue: 'Gaan voort',
},
table: {
emptyText: 'Geen Data',
confirmFilter: 'Bevestig',
resetFilter: 'Herstel',
clearFilter: 'Alles',
sumText: 'Som',
},
tree: {
emptyText: 'Geen Data',
},
transfer: {
noMatch: 'Geen toepaslike data',
noData: 'Geen data',
titles: ['Lys 1', 'Lys 2'],
filterPlaceholder: 'Voer sleutelwoord in',
noCheckedFormat: '{total} items',
hasCheckedFormat: '{checked}/{total} gekies',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_0 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: af,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ar = {
name: 'ar',
el: {
colorpicker: {
confirm: '\u0645\u0648\u0627\u0641\u0642',
clear: '\u0625\u0632\u0627\u0644\u0629',
},
datepicker: {
now: '\u0627\u0644\u0622\u0646',
today: '\u0627\u0644\u064A\u0648\u0645',
cancel: '\u0625\u0644\u063A\u0627\u0621',
clear: '\u0625\u0632\u0627\u0644\u0629',
confirm: '\u0645\u0648\u0627\u0641\u0642',
selectDate:
'\u0625\u062E\u062A\u0631 \u0627\u0644\u062A\u0627\u0631\u064A\u062E',
selectTime: '\u0625\u062E\u062A\u0631 \u0627\u0644\u0648\u0642\u062A',
startDate:
'\u062A\u0627\u0631\u064A\u062E \u0627\u0644\u0628\u062F\u0621',
startTime: '\u0648\u0642\u062A \u0627\u0644\u0628\u062F\u0621',
endDate:
'\u062A\u0627\u0631\u064A\u062E \u0627\u0644\u0625\u0646\u062A\u0647\u0627\u0621',
endTime:
'\u0648\u0642\u062A \u0627\u0644\u0625\u0646\u062A\u0647\u0627\u0621',
prevYear:
'\u0627\u0644\u0633\u0646\u0629 \u0627\u0644\u0633\u0627\u0628\u0642\u0629',
nextYear:
'\u0627\u0644\u0633\u0646\u0629 \u0627\u0644\u062A\u0627\u0644\u064A\u0629',
prevMonth:
'\u0627\u0644\u0634\u0647\u0631 \u0627\u0644\u0633\u0627\u0628\u0642',
nextMonth:
'\u0627\u0644\u0634\u0647\u0631 \u0627\u0644\u062A\u0627\u0644\u064A',
year: '\u0633\u0646\u0629',
month1: '\u064A\u0646\u0627\u064A\u0631',
month2: '\u0641\u0628\u0631\u0627\u064A\u0631',
month3: '\u0645\u0627\u0631\u0633',
month4: '\u0627\u0628\u0631\u064A\u0644',
month5: '\u0645\u0627\u064A\u0648',
month6: '\u064A\u0648\u0646\u064A\u0648',
month7: '\u064A\u0648\u0644\u064A\u0648',
month8: '\u0623\u063A\u0633\u0637\u0633',
month9: '\u0633\u0628\u062A\u0645\u0628\u0631',
month10: '\u0623\u0643\u062A\u0648\u0628\u0631',
month11: '\u0646\u0648\u0641\u0645\u0628\u0631',
month12: '\u062F\u064A\u0633\u0645\u0628\u0631',
week: '\u0623\u0633\u0628\u0648\u0639',
weeks: {
sun: '\u0627\u0644\u0623\u062D\u062F',
mon: '\u0627\u0644\u0623\u062B\u0646\u064A\u0646',
tue: '\u0627\u0644\u062B\u0644\u0627\u062B\u0627\u0621',
wed: '\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621',
thu: '\u0627\u0644\u062E\u0645\u064A\u0633',
fri: '\u0627\u0644\u062C\u0645\u0639\u0629',
sat: '\u0627\u0644\u0633\u0628\u062A',
},
months: {
jan: '\u064A\u0646\u0627\u064A\u0631',
feb: '\u0641\u0628\u0631\u0627\u064A\u0631',
mar: '\u0645\u0627\u0631\u0633',
apr: '\u0623\u0628\u0631\u064A\u0644',
may: '\u0645\u0627\u064A\u0648',
jun: '\u064A\u0648\u0646\u064A\u0648',
jul: '\u064A\u0648\u0644\u064A\u0648',
aug: '\u0623\u063A\u0633\u0637\u0633',
sep: '\u0633\u0628\u062A\u0645\u0628\u0631',
oct: '\u0623\u0643\u062A\u0648\u0628\u0631',
nov: '\u0646\u0648\u0641\u0645\u0628\u0631',
dec: '\u062F\u064A\u0633\u0645\u0628\u0631',
},
},
select: {
loading: '\u062C\u0627\u0631 \u0627\u0644\u062A\u062D\u0645\u064A\u0644',
noMatch:
'\u0644\u0627\u064A\u0648\u062C\u062F \u0628\u064A\u0627\u0646\u0627\u062A \u0645\u0637\u0627\u0628\u0642\u0629',
noData:
'\u0644\u0627\u064A\u0648\u062C\u062F \u0628\u064A\u0627\u0646\u0627\u062A',
placeholder: '\u0625\u062E\u062A\u0631',
},
cascader: {
noMatch:
'\u0644\u0627\u064A\u0648\u062C\u062F \u0628\u064A\u0627\u0646\u0627\u062A \u0645\u0637\u0627\u0628\u0642\u0629',
loading: '\u062C\u0627\u0631 \u0627\u0644\u062A\u062D\u0645\u064A\u0644',
placeholder: '\u0625\u062E\u062A\u0631',
noData:
'\u0644\u0627\u064A\u0648\u062C\u062F \u0628\u064A\u0627\u0646\u0627\u062A',
},
pagination: {
goto: '\u0623\u0630\u0647\u0628 \u0625\u0644\u0649',
pagesize: '/\u0635\u0641\u062D\u0629',
total: '\u0627\u0644\u0643\u0644 {total}',
pageClassifier: '',
},
messagebox: {
title: '\u0627\u0644\u0639\u0646\u0648\u0627\u0646',
confirm: '\u0645\u0648\u0627\u0641\u0642',
cancel: '\u0625\u0644\u063A\u0627\u0621',
error:
'\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0635\u062D\u064A\u062D',
},
upload: {
delete: '\u062D\u0630\u0641',
preview: '\u0639\u0631\u0636',
continue: '\u0625\u0633\u062A\u0645\u0631\u0627\u0631',
},
table: {
emptyText:
'\u0644\u0627\u064A\u0648\u062C\u062F \u0628\u064A\u0627\u0646\u0627\u062A',
confirmFilter: '\u062A\u0623\u0643\u064A\u062F',
resetFilter: '\u062D\u0630\u0641',
clearFilter: '\u0627\u0644\u0643\u0644',
sumText: '\u0627\u0644\u0645\u062C\u0645\u0648\u0639',
},
tree: {
emptyText:
'\u0644\u0627\u064A\u0648\u062C\u062F \u0628\u064A\u0627\u0646\u0627\u062A',
},
transfer: {
noMatch:
'\u0644\u0627\u064A\u0648\u062C\u062F \u0628\u064A\u0627\u0646\u0627\u062A \u0645\u0637\u0627\u0628\u0642\u0629',
noData:
'\u0644\u0627\u064A\u0648\u062C\u062F \u0628\u064A\u0627\u0646\u0627\u062A',
titles: [
'\u0642\u0627\u0626\u0645\u0629 1',
'\u0642\u0627\u0626\u0645\u0629 2',
],
filterPlaceholder: '\u0627\u062F\u062E\u0644 \u0643\u0644\u0645\u0629',
noCheckedFormat: '{total} \u0639\u0646\u0627\u0635\u0631',
hasCheckedFormat: '{checked}/{total} \u0645\u062E\u062A\u0627\u0631',
},
image: {
error: '\u0641\u0634\u0644',
},
pageHeader: {
title: '\u0639\u0648\u062F\u0629',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ar,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var az = {
name: 'az',
el: {
colorpicker: {
confirm: 'T\u0259sdiql\u0259',
clear: 'T\u0259mizl\u0259',
},
datepicker: {
now: '\u0130ndi',
today: 'Bug\xFCn',
cancel: '\u0130mtina',
clear: 'T\u0259mizl\u0259',
confirm: 'T\u0259sdiql\u0259',
selectDate: 'Tarix se\xE7',
selectTime: 'Saat se\xE7',
startDate: 'Ba\u015Flan\u011F\u0131c Tarixi',
startTime: 'Ba\u015Flan\u011F\u0131c Saat\u0131',
endDate: 'Bitm\u0259 Tarixi',
endTime: 'Bitm\u0259 Saat\u0131',
prevYear: '\xD6nc\u0259ki il',
nextYear: 'Sonrak\u0131 il',
prevMonth: '\xD6nc\u0259ki ay',
nextMonth: 'Sonrak\u0131 ay',
year: '',
month1: 'Yanvar',
month2: 'Fevral',
month3: 'Mart',
month4: 'Aprel',
month5: 'May',
month6: '\u0130yun',
month7: '\u0130yul',
month8: 'Avqust',
month9: 'Sentyabr',
month10: 'Oktyabr',
month11: 'Noyabr',
month12: 'Dekabr',
week: 'h\u0259ft\u0259',
weeks: {
sun: 'Baz',
mon: 'B.e',
tue: '\xC7.a',
wed: '\xC7\u0259r',
thu: 'C.a',
fri: 'C\xFCm',
sat: '\u015E\u0259n',
},
months: {
jan: 'Yan',
feb: 'Fev',
mar: 'Mar',
apr: 'Apr',
may: 'May',
jun: '\u0130yn',
jul: '\u0130yl',
aug: 'Avq',
sep: 'Sen',
oct: 'Okt',
nov: 'Noy',
dec: 'Dek',
},
},
select: {
loading: 'Y\xFCkl\u0259nir',
noMatch: 'N\u0259tic\u0259 tap\u0131lmad\u0131',
noData: 'M\u0259lumat yoxdur',
placeholder: 'Se\xE7',
},
cascader: {
noMatch: 'N\u0259tic\u0259 tap\u0131lmad\u0131',
loading: 'Y\xFCkl\u0259nir',
placeholder: 'Se\xE7',
noData: 'M\u0259lumat yoxdur',
},
pagination: {
goto: 'Get',
pagesize: '/s\u0259hif\u0259',
total: 'Toplam {total}',
pageClassifier: '',
},
messagebox: {
title: 'Mesaj',
confirm: 'T\u0259sdiql\u0259',
cancel: '\u0130mtina',
error: 'S\u0259hv',
},
upload: {
deleteTip: 'S\xFCr\xFC\u015Fd\xFCrm\u0259d\u0259n sonra sil',
delete: 'Sil',
preview: '\xD6n izl\u0259',
continue: 'Davam et',
},
table: {
emptyText: 'M\u0259lumat yoxdur',
confirmFilter: 'T\u0259sdiql\u0259',
resetFilter: 'S\u0131f\u0131rla',
clearFilter: 'B\xFCt\xFCn',
sumText: 'C\u0259mi',
},
tree: {
emptyText: 'M\u0259lumat yoxdur',
},
transfer: {
noMatch: 'N\u0259tic\u0259 tap\u0131lmad\u0131',
noData: 'M\u0259lumat yoxdur',
titles: ['Siyah\u0131 1', 'Siyah\u0131 2'],
filterPlaceholder: 'K\u0259lim\u0259l\u0259ri daxil et',
noCheckedFormat: '{total} \u0259d\u0259d',
hasCheckedFormat: '{checked}/{total} se\xE7ildi',
},
image: {
error: 'S\u018FHV',
},
pageHeader: {
title: 'Geri',
},
popconfirm: {
confirmButtonText: 'B\u0259li',
cancelButtonText: 'Xeyr',
},
empty: {
description: 'M\u0259lumat yoxdur',
},
},
}
var __glob_8_2 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: az,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var bg = {
name: 'bg',
el: {
colorpicker: {
confirm: 'OK',
clear: '\u0418\u0437\u0447\u0438\u0441\u0442\u0438',
},
datepicker: {
now: '\u0421\u0435\u0433\u0430',
today: '\u0414\u043D\u0435\u0441',
cancel: '\u041E\u0442\u043A\u0430\u0436\u0438',
clear: '\u0418\u0437\u0447\u0438\u0441\u0442\u0438',
confirm: '\u041E\u041A',
selectDate:
'\u0418\u0437\u0431\u0435\u0440\u0438 \u0434\u0430\u0442\u0430',
selectTime: '\u0418\u0437\u0431\u0435\u0440\u0438 \u0447\u0430\u0441',
startDate:
'\u041D\u0430\u0447\u0430\u043B\u043D\u0430 \u0434\u0430\u0442\u0430',
startTime:
'\u041D\u0430\u0447\u0430\u043B\u0435\u043D \u0447\u0430\u0441',
endDate: '\u041A\u0440\u0430\u0439\u043D\u0430 \u0434\u0430\u0442\u0430',
endTime: '\u041A\u0440\u0430\u0435\u043D \u0447\u0430\u0441',
prevYear: 'Previous Year',
nextYear: 'Next Year',
prevMonth: 'Previous Month',
nextMonth: 'Next Month',
year: '',
month1: '\u042F\u043D\u0443\u0430\u0440\u0438',
month2: '\u0424\u0435\u0432\u0440\u0443\u0430\u0440\u0438',
month3: '\u041C\u0430\u0440\u0442',
month4: '\u0410\u043F\u0440\u0438\u043B',
month5: '\u041C\u0430\u0439',
month6: '\u042E\u043D\u0438',
month7: '\u042E\u043B\u0438',
month8: '\u0410\u0432\u0433\u0443\u0441\u0442',
month9: '\u0421\u0435\u043F\u0442\u0435\u043C\u0432\u0440\u0438',
month10: '\u041E\u043A\u0442\u043E\u043C\u0432\u0440\u0438',
month11: '\u041D\u043E\u0435\u043C\u0432\u0440\u0438',
month12: '\u0414\u0435\u043A\u0435\u043C\u0432\u0440\u0438',
weeks: {
sun: '\u041D\u0435\u0434',
mon: '\u041F\u043E\u043D',
tue: '\u0412\u0442\u043E',
wed: '\u0421\u0440\u044F',
thu: '\u0427\u0435\u0442',
fri: '\u041F\u0435\u0442',
sat: '\u0421\u044A\u0431',
},
months: {
jan: '\u042F\u043D\u0443',
feb: '\u0424\u0435\u0432',
mar: '\u041C\u0430\u0440',
apr: '\u0410\u043F\u0440',
may: '\u041C\u0430\u0439',
jun: '\u042E\u043D\u0438',
jul: '\u042E\u043B\u0438',
aug: '\u0410\u0432\u0433',
sep: '\u0421\u0435\u043F',
oct: '\u041E\u043A\u0442',
nov: '\u041D\u043E\u0435',
dec: '\u0414\u0435\u043A',
},
},
select: {
loading: '\u0417\u0430\u0440\u0435\u0436\u0434\u0430\u043D\u0435',
noMatch:
'\u041D\u044F\u043C\u0430 \u043D\u0430\u043C\u0435\u0440\u0435\u043D\u0438',
noData: '\u041D\u044F\u043C\u0430 \u0434\u0430\u043D\u043D\u0438',
placeholder: '\u0418\u0437\u0431\u0435\u0440\u0438',
},
cascader: {
noMatch:
'\u041D\u044F\u043C\u0430 \u043D\u0430\u043C\u0435\u0440\u0435\u043D\u0438',
loading: '\u0417\u0430\u0440\u0435\u0436\u0434\u0430\u043D\u0435',
placeholder: '\u0418\u0437\u0431\u0435\u0440\u0438',
noData: '\u041D\u044F\u043C\u0430 \u0434\u0430\u043D\u043D\u0438',
},
pagination: {
goto: '\u0418\u0434\u0438 \u043D\u0430',
pagesize: '/\u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430',
total: '\u041E\u0431\u0449\u043E {total}',
pageClassifier: '',
},
messagebox: {
title: '\u0421\u044A\u043E\u0431\u0449\u0435\u043D\u0438\u0435',
confirm: '\u041E\u041A',
cancel: '\u041E\u0442\u043A\u0430\u0436\u0438',
error:
'\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0438 \u0434\u0430\u043D\u043D\u0438',
},
upload: {
deleteTip: 'press delete to remove',
delete: '\u0418\u0437\u0442\u0440\u0438\u0439',
preview: '\u041F\u0440\u0435\u0433\u043B\u0435\u0434\u0430\u0439',
continue: '\u041F\u0440\u043E\u0434\u044A\u043B\u0436\u0438',
},
table: {
emptyText: '\u041D\u044F\u043C\u0430 \u0434\u0430\u043D\u043D\u0438',
confirmFilter: '\u041F\u043E\u0442\u0432\u044A\u0440\u0434\u0438',
resetFilter: '\u0418\u0437\u0447\u0438\u0441\u0442\u0438',
clearFilter: '\u0412\u0441\u0438\u0447\u043A\u0438',
sumText: 'Sum',
},
tree: {
emptyText: '\u041D\u044F\u043C\u0430 \u0434\u0430\u043D\u043D\u0438',
},
transfer: {
noMatch:
'\u041D\u044F\u043C\u0430 \u043D\u0430\u043C\u0435\u0440\u0435\u043D\u0438',
noData: '\u041D\u044F\u043C\u0430 \u0434\u0430\u043D\u043D\u0438',
titles: ['List 1', 'List 2'],
filterPlaceholder: 'Enter keyword',
noCheckedFormat: '{total} items',
hasCheckedFormat: '{checked}/{total} checked',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_3 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: bg,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var bn = {
name: 'bn',
el: {
colorpicker: {
confirm: '\u09A0\u09BF\u0995 \u0986\u099B\u09C7',
clear: '\u0995\u09CD\u09B2\u09BF\u09DF\u09BE\u09B0',
},
datepicker: {
now: '\u098F\u0996\u09A8',
today: '\u0986\u099C',
cancel: '\u09AC\u09BE\u09A4\u09BF\u09B2',
clear: '\u0995\u09CD\u09B2\u09BF\u09DF\u09BE\u09B0',
confirm: '\u09A0\u09BF\u0995 \u0986\u099B\u09C7',
selectDate:
'\u09A4\u09BE\u09B0\u09BF\u0996 \u09A8\u09BF\u09B0\u09CD\u09AC\u09BE\u099A\u09A8 \u0995\u09B0\u09C1\u09A8',
selectTime:
'\u09B8\u09AE\u09DF \u09A8\u09BF\u09B0\u09CD\u09AC\u09BE\u099A\u09A8 \u0995\u09B0\u09C1\u09A8',
startDate:
'\u09AF\u09C7 \u09A4\u09BE\u09B0\u09BF\u0996 \u09A5\u09C7\u0995\u09C7',
startTime: '\u09AF\u09C7 \u09B8\u09AE\u09DF \u09A5\u09C7\u0995\u09C7',
endDate:
'\u09AF\u09C7 \u09A4\u09BE\u09B0\u09BF\u0996 \u09AA\u09B0\u09CD\u09AF\u09A8\u09CD\u09A4',
endTime:
'\u09AF\u09C7 \u09B8\u09AE\u09DF \u09AA\u09B0\u09CD\u09AF\u09A8\u09CD\u09A4',
prevYear:
'\u09AA\u09C2\u09B0\u09CD\u09AC\u09AC\u09B0\u09CD\u09A4\u09C0 \u09AC\u099B\u09B0',
nextYear: '\u09AA\u09B0\u09AC\u09B0\u09CD\u09A4\u09C0 \u09AC\u099B\u09B0',
prevMonth:
'\u09AA\u09C2\u09B0\u09CD\u09AC\u09AC\u09B0\u09CD\u09A4\u09C0 \u09AE\u09BE\u09B8',
nextMonth:
'\u09AA\u09B0\u09AC\u09B0\u09CD\u09A4\u09C0 \u09AE\u09BE\u09B8',
year: '\u09B8\u09BE\u09B2',
month1: '\u099C\u09BE\u09A8\u09C1\u09DF\u09BE\u09B0\u09BF',
month2: '\u09AB\u09C7\u09AC\u09CD\u09B0\u09C1\u09DF\u09BE\u09B0\u09C0',
month3: '\u09AE\u09BE\u09B0\u09CD\u099A',
month4: '\u098F\u09AA\u09CD\u09B0\u09BF\u09B2',
month5: '\u09AE\u09C7',
month6: '\u099C\u09C1\u09A8',
month7: '\u099C\u09C1\u09B2\u09BE\u0987',
month8: '\u0986\u0997\u09B7\u09CD\u099F',
month9: '\u09B8\u09C7\u09AA\u09CD\u099F\u09C7\u09AE\u09CD\u09AC\u09B0',
month10: '\u0985\u0995\u09CD\u099F\u09CB\u09AC\u09B0',
month11: '\u09A8\u09AD\u09C7\u09AE\u09CD\u09AC\u09B0',
month12: '\u09A1\u09BF\u09B8\u09C7\u09AE\u09CD\u09AC\u09B0',
week: '\u09B8\u09BE\u09AA\u09CD\u09A4\u09BE\u09B9',
weeks: {
sun: '\u09B0\u09AC\u09BF',
mon: '\u09B8\u09CB\u09AE',
tue: '\u09AE\u0999\u09CD\u0997\u09B2',
wed: '\u09AC\u09C1\u09A7',
thu: '\u09AC\u09C3\u09B9\u0983',
fri: '\u09B6\u09C1\u0995\u09CD\u09B0',
sat: '\u09B6\u09A8\u09BF',
},
months: {
jan: '\u099C\u09BE\u09A8\u09C1',
feb: '\u09AB\u09C7\u09AC\u09CD\u09B0\u09C1',
mar: '\u09AE\u09BE\u09B0\u09CD\u099A',
apr: '\u098F\u09AA\u09CD\u09B0\u09BF',
may: '\u09AE\u09C7',
jun: '\u099C\u09C1\u09A8',
jul: '\u099C\u09C1\u09B2\u09BE',
aug: '\u0986\u0997',
sep: '\u09B8\u09C7\u09AA\u09CD\u099F\u09C7',
oct: '\u0986\u0995\u09CD\u099F\u09CB',
nov: '\u09A8\u09AD\u09C7',
dec: '\u09A1\u09BF\u09B8\u09C7',
},
},
select: {
loading: '\u09B2\u09CB\u09A1 \u09B9\u099A\u09CD\u099B\u09C7',
noMatch:
'\u0995\u09CB\u09A8 \u09AE\u09BF\u09B2 \u09AA\u0993\u09DF\u09BE \u09AF\u09BE\u09DF\u09A8\u09BF',
noData: '\u0995\u09CB\u09A8 \u09A1\u09BE\u099F\u09BE \u09A8\u09C7\u0987',
placeholder:
'\u09A8\u09BF\u09B0\u09CD\u09AC\u09BE\u099A\u09A8 \u0995\u09B0\u09C1\u09A8',
},
cascader: {
noMatch:
'\u0995\u09CB\u09A8 \u09AE\u09BF\u09B2 \u09AA\u0993\u09DF\u09BE \u09AF\u09BE\u09DF\u09A8\u09BF',
loading: '\u09B2\u09CB\u09A1 \u09B9\u099A\u09CD\u099B\u09C7',
placeholder:
'\u09A8\u09BF\u09B0\u09CD\u09AC\u09BE\u099A\u09A8 \u0995\u09B0\u09C1\u09A8',
noData: '\u0995\u09CB\u09A8 \u09A1\u09BE\u099F\u09BE \u09A8\u09C7\u0987',
},
pagination: {
goto: '\u09AF\u09BE\u09A8',
pagesize: '/\u09AA\u09C7\u099C',
total: '\u09AE\u09CB\u099F {total}',
pageClassifier: '',
deprecationWarning:
'\u0985\u09AA\u09CD\u09B0\u099A\u09B2\u09BF\u09A4 (Deprecated) \u09AC\u09CD\u09AF\u09BE\u09AC\u09B9\u09BE\u09B0 \u09AA\u0993\u09DF\u09BE \u0997\u09C7\u099B\u09C7, \u0986\u09B0\u0993 \u099C\u09BE\u09A8\u09A4\u09C7 \u099A\u09BE\u0987\u09B2\u09C7, \u09A6\u09DF\u09BE \u0995\u09B0\u09C7 el-pagination \u098F\u09B0 \u09A1\u0995\u09C1\u09AE\u09C7\u09A8\u09CD\u099F\u09C7\u09B6\u09A8 \u09A6\u09C7\u0996\u09C1\u09A8',
},
messagebox: {
title: '\u09AC\u09BE\u09B0\u09CD\u09A4\u09BE',
confirm: '\u09A0\u09BF\u0995 \u0986\u099B\u09C7',
cancel: '\u09AC\u09BE\u09A4\u09BF\u09B2',
error:
'\u0987\u09A8\u09AA\u09C1\u099F \u09A1\u09BE\u099F\u09BE \u0997\u09CD\u09B0\u09B9\u09A8\u09AF\u09CB\u0997\u09CD\u09AF \u09A8\u09DF',
},
upload: {
deleteTip:
'\u0985\u09AA\u09B8\u09BE\u09B0\u09A3 \u0995\u09B0\u09A4\u09C7 "\u09A1\u09BF\u09B2\u09BF\u099F" \u098F \u0995\u09CD\u09B2\u09BF\u0995 \u0995\u09B0\u09C1\u09A8',
delete: '\u09A1\u09BF\u09B2\u09BF\u099F',
preview: '\u09AA\u09CD\u09B0\u09BF\u09AD\u09BF\u0989',
continue: '\u099A\u09BE\u09B2\u09BF\u09DF\u09C7 \u09AF\u09BE\u09A8',
},
table: {
emptyText:
'\u0995\u09CB\u09A8 \u09A1\u09BE\u099F\u09BE \u09A8\u09C7\u0987',
confirmFilter:
'\u09A8\u09BF\u09B6\u09CD\u099A\u09BF\u09A4 \u0995\u09B0\u09C1\u09A8',
resetFilter: '\u09B0\u09BF\u09B8\u09C7\u099F',
clearFilter: '\u09B8\u09AC',
sumText: '\u09B8\u09BE\u09B0\u09BE\u0982\u09B6',
},
tree: {
emptyText:
'\u0995\u09CB\u09A8 \u09A1\u09BE\u099F\u09BE \u09A8\u09C7\u0987',
},
transfer: {
noMatch:
'\u0995\u09CB\u09A8 \u09AE\u09BF\u09B2 \u09AA\u0993\u09DF\u09BE \u09AF\u09BE\u09DF\u09A8\u09BF',
noData: '\u0995\u09CB\u09A8 \u09A1\u09BE\u099F\u09BE \u09A8\u09C7\u0987',
titles: [
'\u09B2\u09BF\u09B8\u09CD\u099F \u09E7',
'\u09B2\u09BF\u09B8\u09CD\u099F \u09E8',
],
filterPlaceholder:
'\u09B8\u09BE\u09B0\u09CD\u099A \u0995\u09B0\u09C1\u09A8',
noCheckedFormat: '{total} \u0986\u0987\u099F\u09C7\u09AE',
hasCheckedFormat:
'{checked}/{total} \u099F\u09BF\u0995 \u0995\u09B0\u09BE \u09B9\u09DF\u09C7\u099B\u09C7',
},
image: {
error:
'\u09AC\u09CD\u09AF\u09B0\u09CD\u09A5 \u09B9\u09DF\u09C7\u099B\u09C7',
},
pageHeader: {
title: '\u09AA\u09BF\u099B\u09A8\u09C7',
},
popconfirm: {
confirmButtonText: '\u09B9\u09CD\u09AF\u09BE',
cancelButtonText: '\u09A8\u09BE',
},
},
}
var __glob_8_4 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: bn,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ca = {
name: 'ca',
el: {
colorpicker: {
confirm: 'Confirmar',
clear: 'Netejar',
},
datepicker: {
now: 'Ara',
today: 'Avui',
cancel: 'Cancel\xB7lar',
clear: 'Netejar',
confirm: 'Confirmar',
selectDate: 'Seleccionar data',
selectTime: 'Seleccionar hora',
startDate: 'Data Inici',
startTime: 'Hora Inici',
endDate: 'Data Final',
endTime: 'Hora Final',
prevYear: 'Any anterior',
nextYear: 'Pr\xF2xim Any',
prevMonth: 'Mes anterior',
nextMonth: 'Pr\xF2xim Mes',
year: '',
month1: 'Gener',
month2: 'Febrer',
month3: 'Mar\xE7',
month4: 'Abril',
month5: 'Maig',
month6: 'Juny',
month7: 'Juliol',
month8: 'Agost',
month9: 'Setembre',
month10: 'Octubre',
month11: 'Novembre',
month12: 'Desembre',
weeks: {
sun: 'Dg',
mon: 'Dl',
tue: 'Dt',
wed: 'Dc',
thu: 'Dj',
fri: 'Dv',
sat: 'Ds',
},
months: {
jan: 'Gen',
feb: 'Febr',
mar: 'Mar\xE7',
apr: 'Abr',
may: 'Maig',
jun: 'Juny',
jul: 'Jul',
aug: 'Ag',
sep: 'Set',
oct: 'Oct',
nov: 'Nov',
dec: 'Des',
},
},
select: {
loading: 'Carregant',
noMatch: 'No hi ha dades que coincideixin',
noData: 'Sense Dades',
placeholder: 'Seleccionar',
},
cascader: {
noMatch: 'No hi ha dades que coincideixin',
loading: 'Carregant',
placeholder: 'Seleccionar',
noData: 'Sense Dades',
},
pagination: {
goto: 'Anar a',
pagesize: '/p\xE0gina',
total: 'Total {total}',
pageClassifier: '',
},
messagebox: {
confirm: 'Acceptar',
cancel: 'Cancel\xB7lar',
error: 'Entrada inv\xE0lida',
},
upload: {
deleteTip: 'premi eliminar per descartar',
delete: 'Eliminar',
preview: 'Vista Pr\xE8via',
continue: 'Continuar',
},
table: {
emptyText: 'Sense Dades',
confirmFilter: 'Confirmar',
resetFilter: 'Netejar',
clearFilter: 'Tot',
sumText: 'Tot',
},
tree: {
emptyText: 'Sense Dades',
},
transfer: {
noMatch: 'No hi ha dades que coincideixin',
noData: 'Sense Dades',
titles: ['Llista 1', 'Llista 2'],
filterPlaceholder: 'Introdueix la paraula clau',
noCheckedFormat: '{total} \xEDtems',
hasCheckedFormat: '{checked}/{total} seleccionats',
},
image: {
error: 'HA FALLAT',
},
pageHeader: {
title: 'Tornar',
},
popconfirm: {
confirmButtonText: 'S\xED',
cancelButtonText: 'No',
},
},
}
var __glob_8_5 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ca,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var cs = {
name: 'cs',
el: {
colorpicker: {
confirm: 'OK',
clear: 'Vymazat',
},
datepicker: {
now: 'Te\u010F',
today: 'Dnes',
cancel: 'Zru\u0161it',
clear: 'Vymazat',
confirm: 'OK',
selectDate: 'Vybrat datum',
selectTime: 'Vybrat \u010Das',
startDate: 'Datum za\u010D\xE1tku',
startTime: '\u010Cas za\u010D\xE1tku',
endDate: 'Datum konce',
endTime: '\u010Cas konce',
prevYear: 'P\u0159edchoz\xED rok',
nextYear: 'P\u0159\xED\u0161t\xED rok',
prevMonth: 'P\u0159edchoz\xED m\u011Bs\xEDc',
nextMonth: 'P\u0159\xED\u0161t\xED m\u011Bs\xEDc',
day: 'Den',
week: 'T\xFDden',
month: 'M\u011Bs\xEDc',
year: 'Rok',
month1: 'Leden',
month2: '\xDAnor',
month3: 'B\u0159ezen',
month4: 'Duben',
month5: 'Kv\u011Bten',
month6: '\u010Cerven',
month7: '\u010Cervenec',
month8: 'Srpen',
month9: 'Z\xE1\u0159\xED',
month10: '\u0158\xEDjen',
month11: 'Listopad',
month12: 'Prosinec',
weeks: {
sun: 'Ne',
mon: 'Po',
tue: '\xDAt',
wed: 'St',
thu: '\u010Ct',
fri: 'P\xE1',
sat: 'So',
},
months: {
jan: 'Led',
feb: '\xDAno',
mar: 'B\u0159e',
apr: 'Dub',
may: 'Kv\u011B',
jun: '\u010Cer',
jul: '\u010Cvc',
aug: 'Srp',
sep: 'Z\xE1\u0159',
oct: '\u0158\xEDj',
nov: 'Lis',
dec: 'Pro',
},
},
select: {
loading: 'Na\u010D\xEDt\xE1n\xED',
noMatch: '\u017D\xE1dn\xE1 shoda',
noData: '\u017D\xE1dn\xE1 data',
placeholder: 'Vybrat',
},
cascader: {
noMatch: '\u017D\xE1dn\xE1 shoda',
loading: 'Na\u010D\xEDt\xE1n\xED',
placeholder: 'Vybrat',
noData: '\u017D\xE1dn\xE1 data',
},
pagination: {
goto: 'J\xEDt na',
pagesize: 'na stranu',
total: 'Celkem {total}',
pageClassifier: '',
},
messagebox: {
title: 'Zpr\xE1va',
confirm: 'OK',
cancel: 'Zru\u0161it',
error: 'Neplatn\xFD vstup',
},
upload: {
deleteTip: 'Stisknout pro smaz\xE1n\xED',
delete: 'Vymazat',
preview: 'N\xE1hled',
continue: 'Pokra\u010Dovat',
},
table: {
emptyText: '\u017D\xE1dn\xE1 data',
confirmFilter: 'Potvrdit',
resetFilter: 'Resetovat',
clearFilter: 'V\u0161e',
sumText: 'Celkem',
},
tree: {
emptyText: '\u017D\xE1dn\xE1 data',
},
transfer: {
noMatch: '\u017D\xE1dn\xE1 shoda',
noData: '\u017D\xE1dn\xE1 data',
titles: ['Seznam 1', 'Seznam 2'],
filterPlaceholder: 'Kl\xED\u010Dov\xE9 slovo',
noCheckedFormat: '{total} polo\u017Eek',
hasCheckedFormat: '{checked}/{total} vybr\xE1no',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_6 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: cs,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var da = {
name: 'da',
el: {
colorpicker: {
confirm: 'OK',
clear: 'Ryd',
},
datepicker: {
now: 'Nu',
today: 'I dag',
cancel: 'Annuller',
clear: 'Ryd',
confirm: 'OK',
selectDate: 'V\xE6lg dato',
selectTime: 'V\xE6lg tidspunkt',
startDate: 'Startdato',
startTime: 'Starttidspunkt',
endDate: 'Slutdato',
endTime: 'Sluttidspunkt',
prevYear: 'Forrige \xE5r',
nextYear: 'N\xE6ste \xE5r',
prevMonth: 'Forrige m\xE5ned',
nextMonth: 'N\xE6ste m\xE5ned',
year: '',
month1: 'Januar',
month2: 'Februar',
month3: 'Marts',
month4: 'April',
month5: 'Maj',
month6: 'Juni',
month7: 'Juli',
month8: 'August',
month9: 'September',
month10: 'Oktober',
month11: 'November',
month12: 'December',
week: 'uge',
weeks: {
sun: 'S\xF8n',
mon: 'Man',
tue: 'Tir',
wed: 'Ons',
thu: 'Tor',
fri: 'Fre',
sat: 'L\xF8r',
},
months: {
jan: 'Jan',
feb: 'Feb',
mar: 'Mar',
apr: 'Apr',
may: 'Maj',
jun: 'Jun',
jul: 'Jul',
aug: 'Aug',
sep: 'Sep',
oct: 'Okt',
nov: 'Nov',
dec: 'Dec',
},
},
select: {
loading: 'Henter',
noMatch: 'Ingen matchende data',
noData: 'Ingen data',
placeholder: 'V\xE6lg',
},
cascader: {
noMatch: 'Ingen matchende data',
loading: 'Henter',
placeholder: 'V\xE6lg',
noData: 'Ingen data',
},
pagination: {
goto: 'G\xE5 til',
pagesize: '/side',
total: 'Total {total}',
pageClassifier: '',
},
messagebox: {
confirm: 'OK',
cancel: 'Annuller',
error: 'Ugyldig input',
},
upload: {
deleteTip: 'tryk slet for at fjerne',
delete: 'Slet',
preview: 'Forh\xE5ndsvisning',
continue: 'Forts\xE6t',
},
table: {
emptyText: 'Ingen data',
confirmFilter: 'Bekr\xE6ft',
resetFilter: 'Nulstil',
clearFilter: 'Alle',
sumText: 'Sum',
},
tree: {
emptyText: 'Ingen data',
},
transfer: {
noMatch: 'Ingen matchende data',
noData: 'Ingen data',
titles: ['Liste 1', 'Liste 2'],
filterPlaceholder: 'Indtast s\xF8geord',
noCheckedFormat: '{total} emner',
hasCheckedFormat: '{checked}/{total} valgt',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_7 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: da,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var de$1 = {
name: 'de',
el: {
colorpicker: {
confirm: 'OK',
clear: 'Leeren',
},
datepicker: {
now: 'Jetzt',
today: 'Heute',
cancel: 'Abbrechen',
clear: 'Leeren',
confirm: 'OK',
selectDate: 'Datum w\xE4hlen',
selectTime: 'Uhrzeit w\xE4hlen',
startDate: 'Startdatum',
startTime: 'Startzeit',
endDate: 'Enddatum',
endTime: 'Endzeit',
prevYear: 'Letztes Jahr',
nextYear: 'N\xE4chtes Jahr',
prevMonth: 'Letzter Monat',
nextMonth: 'N\xE4chster Monat',
day: 'Tag',
week: 'Woche',
month: 'Monat',
year: '',
month1: 'Januar',
month2: 'Februar',
month3: 'M\xE4rz',
month4: 'April',
month5: 'Mai',
month6: 'Juni',
month7: 'Juli',
month8: 'August',
month9: 'September',
month10: 'Oktober',
month11: 'November',
month12: 'Dezember',
weeks: {
sun: 'So',
mon: 'Mo',
tue: 'Di',
wed: 'Mi',
thu: 'Do',
fri: 'Fr',
sat: 'Sa',
},
months: {
jan: 'Jan',
feb: 'Feb',
mar: 'M\xE4r',
apr: 'Apr',
may: 'Mai',
jun: 'Jun',
jul: 'Jul',
aug: 'Aug',
sep: 'Sep',
oct: 'Okt',
nov: 'Nov',
dec: 'Dez',
},
},
select: {
loading: 'L\xE4dt.',
noMatch: 'Nichts gefunden.',
noData: 'Keine Daten',
placeholder: 'Daten w\xE4hlen',
},
cascader: {
noMatch: 'Nichts gefunden.',
loading: 'L\xE4dt.',
placeholder: 'Daten w\xE4hlen',
noData: 'Keine Daten',
},
pagination: {
goto: 'Gehe zu',
pagesize: ' pro Seite',
total: 'Gesamt {total}',
pageClassifier: '',
},
messagebox: {
confirm: 'OK',
cancel: 'Abbrechen',
error: 'Fehler',
},
upload: {
deleteTip: 'Klicke l\xF6schen zum entfernen',
delete: 'L\xF6schen',
preview: 'Vorschau',
continue: 'Fortsetzen',
},
table: {
emptyText: 'Keine Daten',
confirmFilter: 'Anwenden',
resetFilter: 'Zur\xFCcksetzen',
clearFilter: 'Alles ',
sumText: 'Summe',
},
tree: {
emptyText: 'Keine Eintr\xE4ge',
},
transfer: {
noMatch: 'Nichts gefunden.',
noData: 'Keine Eintr\xE4ge',
titles: ['Liste 1', 'Liste 2'],
filterPlaceholder: 'Eintr\xE4ge filtern',
noCheckedFormat: '{total} Eintr\xE4ge',
hasCheckedFormat: '{checked}/{total} ausgew\xE4hlt',
},
image: {
error: 'FEHLGESCHLAGEN',
},
pageHeader: {
title: 'Zur\xFCck',
},
popconfirm: {
confirmButtonText: 'Ja',
cancelButtonText: 'Nein',
},
},
}
var __glob_8_8 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: de$1,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var el = {
name: 'el',
el: {
colorpicker: {
confirm: '\u0395\u03BD\u03C4\u03AC\u03BE\u03B5\u03B9',
clear: '\u039A\u03B1\u03B8\u03B1\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2',
},
datepicker: {
now: '\u03A4\u03CE\u03C1\u03B1',
today: '\u03A3\u03AE\u03BC\u03B5\u03C1\u03B1',
cancel: '\u0391\u03BA\u03CD\u03C1\u03C9\u03C3\u03B7',
clear: '\u039A\u03B1\u03B8\u03B1\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2',
confirm: '\u0395\u03BD\u03C4\u03AC\u03BE\u03B5\u03B9',
selectDate:
'\u0395\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 \u03B7\u03BC\u03AD\u03C1\u03B1',
selectTime:
'\u0395\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 \u03CE\u03C1\u03B1',
startDate:
'\u0397\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1 \u0388\u03BD\u03B1\u03C1\u03BE\u03B7\u03C2',
startTime:
'\u03A9\u03C1\u03B1 \u0388\u03BD\u03B1\u03C1\u03BE\u03B7\u03C2',
endDate:
'\u0397\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1 \u039B\u03AE\u03BE\u03B7\u03C2',
endTime: '\u03A9\u03C1\u03B1 \u039B\u03AE\u03BE\u03B7\u03C2',
prevYear:
'\u03A0\u03C1\u03BF\u03B7\u03B3\u03BF\u03CD\u03BC\u03B5\u03BD\u03BF \u0388\u03C4\u03BF\u03C2',
nextYear:
'\u0395\u03C0\u03CC\u03BC\u03B5\u03BD\u03BF \u0388\u03C4\u03BF\u03C2',
prevMonth:
'\u03A0\u03C1\u03BF\u03B7\u03B3\u03BF\u03CD\u03BC\u03B5\u03BD\u03BF\u03C2 \u039C\u03AE\u03BD\u03B1\u03C2',
nextMonth:
'\u0395\u03C0\u03CC\u03BC\u03B5\u03BD\u03BF\u03C2 \u039C\u03AE\u03BD\u03B1\u03C2',
year: '\u0388\u03C4\u03BF\u03C2',
month1: '\u0399\u03B1\u03BD\u03BF\u03C5\u03AC\u03C1\u03B9\u03BF\u03C2',
month2:
'\u03A6\u03B5\u03B2\u03C1\u03BF\u03C5\u03AC\u03C1\u03B9\u03BF\u03C2',
month3: '\u039C\u03AC\u03C1\u03C4\u03B9\u03BF\u03C2',
month4: '\u0391\u03C0\u03C1\u03AF\u03BB\u03B9\u03BF\u03C2',
month5: '\u039C\u03AC\u03B9\u03BF\u03C2',
month6: '\u0399\u03BF\u03CD\u03BD\u03B9\u03BF\u03C2',
month7: '\u0399\u03BF\u03CD\u03BB\u03B9\u03BF\u03C2',
month8: '\u0391\u03CD\u03B3\u03BF\u03C5\u03C3\u03C4\u03BF\u03C2',
month9:
'\u03A3\u03B5\u03C0\u03C4\u03AD\u03BC\u03B2\u03C1\u03B9\u03BF\u03C2',
month10: '\u039F\u03BA\u03C4\u03CE\u03B2\u03C1\u03B9\u03BF\u03C2',
month11: '\u039D\u03BF\u03AD\u03BC\u03B2\u03C1\u03B9\u03BF\u03C2',
month12: '\u0394\u03B5\u03BA\u03AD\u03BC\u03B2\u03C1\u03B9\u03BF\u03C2',
weeks: {
sun: '\u039A\u03C5\u03C1',
mon: '\u0394\u03B5\u03C5',
tue: '\u03A4\u03C1\u03B9',
wed: '\u03A4\u03B5\u03C4',
thu: '\u03A0\u03B5\u03BC',
fri: '\u03A0\u03B1\u03C1',
sat: '\u03A3\u03B1\u03B2',
},
months: {
jan: '\u0399\u03B1\u03BD',
feb: '\u03A6\u03B5\u03B2',
mar: '\u039C\u03B1\u03C1',
apr: '\u0391\u03C0\u03C1',
may: '\u039C\u03B1\u03CA',
jun: '\u0399\u03BF\u03C5\u03BD',
jul: '\u0399\u03BF\u03C5\u03BB',
aug: '\u0391\u03C5\u03B3',
sep: '\u03A3\u03B5\u03C0',
oct: '\u039F\u03BA\u03C4',
nov: '\u039D\u03BF\u03B5',
dec: '\u0394\u03B5\u03BA',
},
},
select: {
loading: '\u03A6\u03CC\u03C1\u03C4\u03C9\u03C3\u03B7',
noMatch:
'\u0394\u03B5\u03BD \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B1\u03BD \u03B1\u03C0\u03BF\u03C4\u03B5\u03BB\u03AD\u03C3\u03BC\u03B1\u03C4\u03B1',
noData:
'\u03A7\u03C9\u03C1\u03AF\u03C2 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03B1',
placeholder: '\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE',
},
cascader: {
noMatch:
'\u0394\u03B5\u03BD \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B1\u03BD \u03B1\u03C0\u03BF\u03C4\u03B5\u03BB\u03AD\u03C3\u03BC\u03B1\u03C4\u03B1',
loading: '\u03A6\u03CC\u03C1\u03C4\u03C9\u03C3\u03B7',
placeholder: '\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE',
noData:
'\u03A7\u03C9\u03C1\u03AF\u03C2 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03B1',
},
pagination: {
goto: '\u039C\u03B5\u03C4\u03AC\u03B2\u03B1\u03C3\u03B7 \u03C3\u03B5',
pagesize: '/\u03C3\u03B5\u03BB\u03AF\u03B4\u03B1',
total: '\u03A3\u03CD\u03BD\u03BF\u03BB\u03BF {total}',
pageClassifier: '',
},
messagebox: {
title: '\u039C\u03AE\u03BD\u03C5\u03BC\u03B1',
confirm: '\u0395\u03BD\u03C4\u03AC\u03BE\u03B5\u03B9',
cancel: '\u0391\u03BA\u03CD\u03C1\u03C9\u03C3\u03B7',
error:
'\u0386\u03BA\u03C5\u03C1\u03B7 \u03B5\u03B9\u03C3\u03B1\u03B3\u03C9\u03B3\u03AE',
},
upload: {
deleteTip:
'\u03A0\u03AC\u03C4\u03B7\u03C3\u03B5 \u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE \u03B3\u03B9\u03B1 \u03B1\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7',
delete: '\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE',
preview:
'\u03A0\u03C1\u03BF\u03B5\u03C0\u03B9\u03C3\u03BA\u03CC\u03C0\u03B7\u03C3\u03B7',
continue: '\u03A3\u03C5\u03BD\u03AD\u03C7\u03B5\u03B9\u03B1',
},
table: {
emptyText:
'\u03A7\u03C9\u03C1\u03AF\u03C2 \u0394\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03B1',
confirmFilter:
'\u0395\u03C0\u03B9\u03B2\u03B5\u03B2\u03B1\u03AF\u03C9\u03C3\u03B7',
resetFilter: '\u0395\u03C0\u03B1\u03BD\u03B1\u03C6\u03BF\u03C1\u03AC',
clearFilter: '\u038C\u03BB\u03B1',
sumText: '\u03A3\u03CD\u03BD\u03BF\u03BB\u03BF',
},
tree: {
emptyText:
'\u03A7\u03C9\u03C1\u03AF\u03C2 \u0394\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03B1',
},
transfer: {
noMatch:
'\u0394\u03B5\u03BD \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B1\u03BD \u03B1\u03C0\u03BF\u03C4\u03B5\u03BB\u03AD\u03C3\u03BC\u03B1\u03C4\u03B1',
noData:
'\u03A7\u03C9\u03C1\u03AF\u03C2 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03B1',
titles: [
'\u039B\u03AF\u03C3\u03C4\u03B1 1',
'\u039B\u03AF\u03C3\u03C4\u03B1 2',
],
filterPlaceholder:
'\u0391\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7',
noCheckedFormat:
'{total} \u0391\u03BD\u03C4\u03B9\u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03B1',
hasCheckedFormat:
'{checked}/{total} \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03B1',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_9 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: el,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var eo = {
name: 'eo',
el: {
colorpicker: {
confirm: 'Bone',
clear: 'Malplenigi',
},
datepicker: {
now: 'Nun',
today: 'Hodia\u016D',
cancel: 'Nuligi',
clear: 'Malplenigi',
confirm: 'Bone',
selectDate: 'Elektu daton',
selectTime: 'Elektu horon',
startDate: 'Komenca Dato',
startTime: 'Komenca Horo',
endDate: 'Fina Dato',
endTime: 'Fina Horo',
prevYear: 'Anta\u016Da Jaro',
nextYear: 'Sekva Jaro',
prevMonth: 'Anta\u016Da Monato',
nextMonth: 'Sekva Monato',
year: 'Jaro',
month1: 'Januaro',
month2: 'Februaro',
month3: 'Marto',
month4: 'Aprilo',
month5: 'Majo',
month6: 'Junio',
month7: 'Julio',
month8: 'A\u016Dgusto',
month9: 'Septembro',
month10: 'Oktobro',
month11: 'Novembro',
month12: 'Decembro',
week: 'Semajno',
weeks: {
sun: 'Dim',
mon: 'Lun',
tue: 'Mar',
wed: 'Mer',
thu: '\u0134a\u016D',
fri: 'Ven',
sat: 'Sab',
},
months: {
jan: 'Jan',
feb: 'Feb',
mar: 'Mar',
apr: 'Apr',
may: 'Maj',
jun: 'Jun',
jul: 'Jul',
aug: 'A\u016Dg',
sep: 'Sep',
oct: 'Okt',
nov: 'Nov',
dec: 'Dec',
},
},
select: {
loading: '\u015Car\u011Dante',
noMatch: 'Neniuj kongruaj datumoj',
noData: 'Neniuj datumoj',
placeholder: 'Bonvolu elekti',
},
cascader: {
noMatch: 'Neniuj kongruaj datumoj',
loading: '\u015Car\u011Dante',
placeholder: 'Bonvolu elekti',
noData: 'Neniuj datumoj',
},
pagination: {
goto: 'Iru al',
pagesize: '/ pa\u011Do',
total: 'Entute {total}',
pageClassifier: '',
},
messagebox: {
title: 'Mesa\u011Do',
confirm: 'Bone',
cancel: 'Nuligi',
error: 'Nevalida Enigo!',
},
upload: {
deleteTip: 'Premu "Delete" por forigi',
delete: 'Forigi',
preview: 'Anta\u016Drigardi',
continue: 'Da\u016Drigi',
},
table: {
emptyText: 'Neniuj datumoj',
confirmFilter: 'Konfirmi',
resetFilter: 'Restarigi',
clearFilter: '\u0108iuj',
sumText: 'Sumo',
},
tree: {
emptyText: 'Neniuj datumoj',
},
transfer: {
noMatch: 'Neniuj kongruaj datumoj',
noData: 'Neniuj datumoj',
titles: ['Listo 1', 'Listo 2'],
filterPlaceholder: 'Enigu \u015Dlosilvorton',
noCheckedFormat: '{total} elementoj',
hasCheckedFormat: '{checked}/{total} elektitaj',
},
image: {
error: 'MALSUKCESIS',
},
pageHeader: {
title: 'Reen',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_11 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: eo,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var es = {
name: 'es',
el: {
colorpicker: {
confirm: 'Confirmar',
clear: 'Despejar',
},
datepicker: {
now: 'Ahora',
today: 'Hoy',
cancel: 'Cancelar',
clear: 'Despejar',
confirm: 'Confirmar',
selectDate: 'Seleccionar fecha',
selectTime: 'Seleccionar hora',
startDate: 'Fecha Incial',
startTime: 'Hora Inicial',
endDate: 'Fecha Final',
endTime: 'Hora Final',
prevYear: 'A\xF1o Anterior',
nextYear: 'Pr\xF3ximo A\xF1o',
prevMonth: 'Mes Anterior',
nextMonth: 'Pr\xF3ximo Mes',
year: '',
month1: 'enero',
month2: 'febrero',
month3: 'marzo',
month4: 'abril',
month5: 'mayo',
month6: 'junio',
month7: 'julio',
month8: 'agosto',
month9: 'septiembre',
month10: 'octubre',
month11: 'noviembre',
month12: 'diciembre',
weeks: {
sun: 'dom',
mon: 'lun',
tue: 'mar',
wed: 'mi\xE9',
thu: 'jue',
fri: 'vie',
sat: 's\xE1b',
},
months: {
jan: 'ene',
feb: 'feb',
mar: 'mar',
apr: 'abr',
may: 'may',
jun: 'jun',
jul: 'jul',
aug: 'ago',
sep: 'sep',
oct: 'oct',
nov: 'nov',
dec: 'dic',
},
},
select: {
loading: 'Cargando',
noMatch: 'No hay datos que coincidan',
noData: 'Sin datos',
placeholder: 'Seleccionar',
},
cascader: {
noMatch: 'No hay datos que coincidan',
loading: 'Cargando',
placeholder: 'Seleccionar',
noData: 'Sin datos',
},
pagination: {
goto: 'Ir a',
pagesize: '/p\xE1gina',
total: 'Total {total}',
pageClassifier: '',
},
messagebox: {
confirm: 'Aceptar',
cancel: 'Cancelar',
error: 'Entrada inv\xE1lida',
},
upload: {
deleteTip: 'Pulse Eliminar para retirar',
delete: 'Eliminar',
preview: 'Vista Previa',
continue: 'Continuar',
},
table: {
emptyText: 'Sin Datos',
confirmFilter: 'Confirmar',
resetFilter: 'Reiniciar',
clearFilter: 'Despejar',
sumText: 'Suma',
},
tree: {
emptyText: 'Sin Datos',
},
transfer: {
noMatch: 'No hay datos que coincidan',
noData: 'Sin datos',
titles: ['Lista 1', 'Lista 2'],
filterPlaceholder: 'Ingresar palabra clave',
noCheckedFormat: '{total} art\xEDculos',
hasCheckedFormat: '{checked}/{total} revisados',
},
image: {
error: 'HA FALLADO',
},
pageHeader: {
title: 'Volver',
},
popconfirm: {
confirmButtonText: 'Si',
cancelButtonText: 'No',
},
},
}
var __glob_8_12 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: es,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var et$2 = {
name: 'et',
el: {
colorpicker: {
confirm: 'OK',
clear: 'T\xFChjenda',
},
datepicker: {
now: 'Praegu',
today: 'T\xE4na',
cancel: 'T\xFChista',
clear: 'T\xFChjenda',
confirm: 'OK',
selectDate: 'Vali kuup\xE4ev',
selectTime: 'Vali kellaaeg',
startDate: 'Alguskuup\xE4ev',
startTime: 'Algusaeg',
endDate: 'L\xF5pukuup\xE4ev',
endTime: 'L\xF5puaeg',
prevYear: 'Eelmine aasta',
nextYear: 'J\xE4rgmine aasta',
prevMonth: 'Eelmine kuu',
nextMonth: 'J\xE4rgmine kuu',
year: '',
month1: 'Jaanuar',
month2: 'Veebruar',
month3: 'M\xE4rts',
month4: 'Aprill',
month5: 'Mai',
month6: 'Juuni',
month7: 'Juuli',
month8: 'August',
month9: 'September',
month10: 'Oktoober',
month11: 'November',
month12: 'Detsember',
weeks: {
sun: 'P',
mon: 'E',
tue: 'T',
wed: 'K',
thu: 'N',
fri: 'R',
sat: 'L',
},
months: {
jan: 'Jaan',
feb: 'Veeb',
mar: 'M\xE4r',
apr: 'Apr',
may: 'Mai',
jun: 'Juun',
jul: 'Juul',
aug: 'Aug',
sep: 'Sept',
oct: 'Okt',
nov: 'Nov',
dec: 'Dets',
},
},
select: {
loading: 'Laadimine',
noMatch: 'Sobivad andmed puuduvad',
noData: 'Andmed puuduvad',
placeholder: 'Vali',
},
cascader: {
noMatch: 'Sobivad andmed puuduvad',
loading: 'Laadimine',
placeholder: 'Vali',
noData: 'Andmed puuduvad',
},
pagination: {
goto: 'Mine lehele',
pagesize: '/page',
total: 'Kokku {total}',
pageClassifier: '',
},
messagebox: {
title: 'Teade',
confirm: 'OK',
cancel: 'T\xFChista',
error: 'Vigane sisend',
},
upload: {
deleteTip: 'Vajuta "Kustuta", et eemaldada',
delete: 'Kustuta',
preview: 'Eelvaate',
continue: 'J\xE4tka',
},
table: {
emptyText: 'Andmed puuduvad',
confirmFilter: 'Kinnita',
resetFilter: 'Taasta',
clearFilter: 'K\xF5ik',
sumText: 'Summa',
},
tree: {
emptyText: 'Andmed puuduvad',
},
transfer: {
noMatch: 'Sobivad andmed puuduvad',
noData: 'Andmed puuduvad',
titles: ['Loend 1', 'Loend 2'],
filterPlaceholder: 'Sisesta m\xE4rks\xF5na',
noCheckedFormat: '{total} objekti',
hasCheckedFormat: '{checked}/{total} valitud',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_13 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: et$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var eu = {
name: 'eu',
el: {
colorpicker: {
confirm: 'Ados',
clear: 'Garbitu',
},
datepicker: {
now: 'Orain',
today: 'Gaur',
cancel: 'Utzi',
clear: 'Garbitu',
confirm: 'Ados',
selectDate: 'Hautatu data',
selectTime: 'Hautatu ordua',
startDate: 'Hasierako data',
startTime: 'Hasierako ordua',
endDate: 'Amaierako data',
endTime: 'Amaierako ordua',
prevYear: 'Aurreko urtea',
nextYear: 'Hurrengo urtea',
prevMonth: 'Aurreko hilabetea',
nextMonth: 'Hurrengo hilabetea',
year: '',
month1: 'Urtarrila',
month2: 'Otsaila',
month3: 'Martxoa',
month4: 'Apirila',
month5: 'Maiatza',
month6: 'Ekaina',
month7: 'Uztaila',
month8: 'Abuztua',
month9: 'Iraila',
month10: 'Urria',
month11: 'Azaroa',
month12: 'Abendua',
weeks: {
sun: 'ig.',
mon: 'al.',
tue: 'ar.',
wed: 'az.',
thu: 'og.',
fri: 'ol.',
sat: 'lr.',
},
months: {
jan: 'urt',
feb: 'ots',
mar: 'mar',
apr: 'api',
may: 'mai',
jun: 'eka',
jul: 'uzt',
aug: 'abu',
sep: 'ira',
oct: 'urr',
nov: 'aza',
dec: 'abe',
},
},
select: {
loading: 'Kargatzen',
noMatch: 'Bat datorren daturik ez',
noData: 'Daturik ez',
placeholder: 'Hautatu',
},
cascader: {
noMatch: 'Bat datorren daturik ez',
loading: 'Kargatzen',
placeholder: 'Hautatu',
noData: 'Daturik ez',
},
pagination: {
goto: 'Joan',
pagesize: '/orria',
total: 'Guztira {total}',
pageClassifier: '',
},
messagebox: {
title: 'Mezua',
confirm: 'Ados',
cancel: 'Utzi',
error: 'Sarrera baliogabea',
},
upload: {
deleteTip: 'sakatu Ezabatu kentzeko',
delete: 'Ezabatu',
preview: 'Aurrebista',
continue: 'Jarraitu',
},
table: {
emptyText: 'Daturik ez',
confirmFilter: 'Baieztatu',
resetFilter: 'Berrezarri',
clearFilter: 'Guztia',
sumText: 'Batura',
},
tree: {
emptyText: 'Daturik ez',
},
transfer: {
noMatch: 'Bat datorren daturik ez',
noData: 'Daturik ez',
titles: ['Zerrenda 1', 'Zerrenda 2'],
filterPlaceholder: 'Sartu gako-hitza',
noCheckedFormat: '{total} elementu',
hasCheckedFormat: '{checked}/{total} hautatuta',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_14 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: eu,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var fa = {
name: 'fa',
el: {
colorpicker: {
confirm: '\u0628\u0627\u0634\u062F',
clear: '\u062D\u0630\u0641',
},
datepicker: {
now: '\u0627\u06A9\u0646\u0648\u0646',
today: '\u0627\u0645\u0631\u0648\u0632',
cancel: '\u0644\u063A\u0648',
clear: '\u062D\u0630\u0641',
confirm: '\u0628\u0627\u0634\u0647',
selectDate:
'\u0627\u0646\u062A\u062E\u0627\u0628 \u062A\u0627\u0631\u06CC\u062E',
selectTime:
'\u0627\u0646\u062A\u062E\u0627\u0628 \u0632\u0645\u0627\u0646',
startDate: '\u062A\u0627\u0631\u06CC\u062E \u0634\u0631\u0648\u0639',
startTime: '\u0632\u0645\u0627\u0646 \u0634\u0631\u0648\u0639',
endDate: '\u062A\u0627\u0631\u06CC\u062E \u067E\u0627\u06CC\u0627\u0646',
endTime: '\u0632\u0645\u0627\u0646 \u067E\u0627\u06CC\u0627\u0646',
prevYear: '\u0633\u0627\u0644 \u0642\u0628\u0644',
nextYear: '\u0633\u0627\u0644 \u0628\u0639\u062F',
prevMonth: '\u0645\u0627\u0647 \u0642\u0628\u0644',
nextMonth: '\u0645\u0627\u0647 \u0628\u0639\u062F',
year: '\u0633\u0627\u0644',
month1: '\u0698\u0627\u0646\u0648\u06CC\u0647',
month2: '\u0641\u0648\u0631\u06CC\u0647',
month3: '\u0645\u0627\u0631\u0633',
month4: '\u0622\u0648\u0631\u06CC\u0644',
month5: '\u0645\u0647',
month6: '\u0698\u0648\u0626\u0646',
month7: '\u062C\u0648\u0644\u0627\u06CC',
month8: '\u0627\u0648\u062A',
month9: '\u0633\u067E\u062A\u0627\u0645\u0628\u0631',
month10: '\u0627\u06A9\u062A\u0628\u0631',
month11: '\u0646\u0648\u0627\u0645\u0628\u0631',
month12: '\u062F\u0633\u0627\u0645\u0628\u0631',
weeks: {
sun: '\u06CC\u06A9\u0634\u0646\u0628\u0647',
mon: '\u062F\u0648\u0634\u0646\u0628\u0647',
tue: '\u0633\u0647\u200B\u0634\u0646\u0628\u0647',
wed: '\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647',
thu: '\u067E\u0646\u062C\u200B\u0634\u0646\u0628\u0647',
fri: '\u062C\u0645\u0639\u0647',
sat: '\u0634\u0646\u0628\u0647',
},
months: {
jan: '\u0698\u0627\u0646\u0648\u06CC\u0647',
feb: '\u0641\u0648\u0631\u06CC\u0647',
mar: '\u0645\u0627\u0631\u0633',
apr: '\u0622\u0648\u0631\u06CC\u0644',
may: '\u0645\u0647',
jun: '\u0698\u0648\u0626\u0646',
jul: '\u062C\u0648\u0644\u0627\u06CC',
aug: '\u0627\u0648\u062A',
sep: '\u0633\u067E\u062A\u0627\u0645\u0628\u0631',
oct: '\u0627\u06A9\u062A\u0628\u0631',
nov: '\u0646\u0648\u0627\u0645\u0628\u0631',
dec: '\u062F\u0633\u0627\u0645\u0628\u0631',
},
},
select: {
loading: '\u0628\u0627\u0631\u06AF\u06CC\u0631\u06CC',
noMatch:
'\u0647\u06CC\u0686 \u062F\u0627\u062F\u0647\u200C\u0627\u06CC \u067E\u06CC\u062F\u0627 \u0646\u0634\u062F',
noData:
'\u0627\u0637\u0644\u0627\u0639\u0627\u062A\u06CC \u0648\u062C\u0648\u062F \u0646\u062F\u0627\u0631\u062F',
placeholder:
'\u0627\u0646\u062A\u062E\u0627\u0628 \u06A9\u0646\u06CC\u062F',
},
cascader: {
noMatch:
'\u0647\u06CC\u0686 \u062F\u0627\u062F\u0647\u200C\u0627\u06CC \u067E\u06CC\u062F\u0627 \u0646\u0634\u062F',
loading: '\u0628\u0627\u0631\u06AF\u06CC\u0631\u06CC',
placeholder:
'\u0627\u0646\u062A\u062E\u0627\u0628 \u06A9\u0646\u06CC\u062F',
noData:
'\u0627\u0637\u0644\u0627\u0639\u0627\u062A\u06CC \u0648\u062C\u0648\u062F \u0646\u062F\u0627\u0631\u062F',
},
pagination: {
goto: '\u0628\u0631\u0648 \u0628\u0647',
pagesize: '/\u0635\u0641\u062D\u0647',
total: '\u0645\u062C\u0645\u0648\u0639 {total}',
pageClassifier: '',
},
messagebox: {
title: '\u067E\u06CC\u0627\u0645',
confirm: '\u0628\u0627\u0634\u0647',
cancel: '\u0644\u063A\u0648',
error:
'\u0648\u0631\u0648\u062F\u06CC \u063A\u06CC\u0631 \u0645\u062C\u0627\u0632',
},
upload: {
deleteTip:
'\u0628\u0631\u0627\u06CC \u067E\u0627\u06A9 \u06A9\u0631\u062F\u0646 \u062D\u0630\u0641 \u0631\u0627 \u0641\u0634\u0627\u0631 \u062F\u0647\u06CC\u062F',
delete: '\u062D\u0630\u0641',
preview: '\u067E\u06CC\u0634\u200C\u0646\u0645\u0627\u06CC\u0634',
continue: '\u0627\u062F\u0627\u0645\u0647',
},
table: {
emptyText:
'\u0627\u0637\u0644\u0627\u0639\u0627\u062A\u06CC \u0648\u062C\u0648\u062F \u0646\u062F\u0627\u0631\u062F',
confirmFilter: '\u062A\u0627\u06CC\u06CC\u062F',
resetFilter: '\u062D\u0630\u0641',
clearFilter: '\u0647\u0645\u0647',
sumText: '\u062C\u0645\u0639',
},
tree: {
emptyText:
'\u0627\u0637\u0644\u0627\u0639\u0627\u062A\u06CC \u0648\u062C\u0648\u062F \u0646\u062F\u0627\u0631\u062F',
},
transfer: {
noMatch:
'\u0647\u06CC\u0686 \u062F\u0627\u062F\u0647\u200C\u0627\u06CC \u067E\u06CC\u062F\u0627 \u0646\u0634\u062F',
noData:
'\u0627\u0637\u0644\u0627\u0639\u0627\u062A\u06CC \u0648\u062C\u0648\u062F \u0646\u062F\u0627\u0631\u062F',
titles: ['\u0644\u06CC\u0633\u062A 1', '\u0644\u06CC\u0633\u062A 2'],
filterPlaceholder:
'\u06A9\u0644\u06CC\u062F \u0648\u0627\u0698\u0647 \u0647\u0627\u0631\u0648 \u0648\u0627\u0631\u062F \u06A9\u0646',
noCheckedFormat: '{total} \u0645\u0648\u0631\u062F',
hasCheckedFormat:
'{checked} \u0645\u0648\u0631\u062F \u0627\u0632 {total} \u0645\u0648\u0631\u062F \u0627\u0646\u062A\u062E\u0627\u0628 \u0634\u062F\u0647 \u0627\u0633\u062A',
},
image: {
error:
'\u062E\u0637\u0627 \u062F\u0631 \u0628\u0627\u0631\u06AF\u06CC\u0631\u06CC \u062A\u0635\u0648\u06CC\u0631',
},
pageHeader: {
title: '\u0628\u0627\u0632\u06AF\u0634\u062A',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_15 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: fa,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var fi = {
name: 'fi',
el: {
colorpicker: {
confirm: 'OK',
clear: 'Tyhjenn\xE4',
},
datepicker: {
now: 'Nyt',
today: 'T\xE4n\xE4\xE4n',
cancel: 'Peruuta',
clear: 'Tyhjenn\xE4',
confirm: 'OK',
selectDate: 'Valitse p\xE4iv\xE4',
selectTime: 'Valitse aika',
startDate: 'Aloitusp\xE4iv\xE4',
startTime: 'Aloitusaika',
endDate: 'Lopetusp\xE4iv\xE4',
endTime: 'Lopetusaika',
prevYear: 'Edellinen vuosi',
nextYear: 'Seuraava vuosi',
prevMonth: 'Edellinen kuukausi',
nextMonth: 'Seuraava kuukausi',
year: '',
month1: 'tammikuu',
month2: 'helmikuu',
month3: 'maaliskuu',
month4: 'huhtikuu',
month5: 'toukokuu',
month6: 'kes\xE4kuu',
month7: 'hein\xE4kuu',
month8: 'elokuu',
month9: 'syyskuu',
month10: 'lokakuu',
month11: 'marraskuu',
month12: 'joulukuu',
weeks: {
sun: 'su',
mon: 'ma',
tue: 'ti',
wed: 'ke',
thu: 'to',
fri: 'pe',
sat: 'la',
},
months: {
jan: 'tammi',
feb: 'helmi',
mar: 'maalis',
apr: 'huhti',
may: 'touko',
jun: 'kes\xE4',
jul: 'hein\xE4',
aug: 'elo',
sep: 'syys',
oct: 'loka',
nov: 'marras',
dec: 'joulu',
},
},
select: {
loading: 'Lataa',
noMatch: 'Ei vastaavia tietoja',
noData: 'Ei tietoja',
placeholder: 'Valitse',
},
cascader: {
noMatch: 'Ei vastaavia tietoja',
loading: 'Lataa',
placeholder: 'Valitse',
noData: 'Ei tietoja',
},
pagination: {
goto: 'Mene',
pagesize: '/sivu',
total: 'Yhteens\xE4 {total}',
pageClassifier: '',
},
messagebox: {
title: 'Viesti',
confirm: 'OK',
cancel: 'Peruuta',
error: 'Virheellinen sy\xF6te',
},
upload: {
deleteTip: 'Poista Delete-n\xE4pp\xE4imell\xE4',
delete: 'Poista',
preview: 'Esikatsele',
continue: 'Jatka',
},
table: {
emptyText: 'Ei tietoja',
confirmFilter: 'Vahvista',
resetFilter: 'Tyhjenn\xE4',
clearFilter: 'Kaikki',
sumText: 'Summa',
},
tree: {
emptyText: 'Ei tietoja',
},
transfer: {
noMatch: 'Ei vastaavia tietoja',
noData: 'Ei tietoja',
titles: ['Luettelo 1', 'Luettelo 2'],
filterPlaceholder: 'Sy\xF6t\xE4 hakusana',
noCheckedFormat: '{total} kohdetta',
hasCheckedFormat: '{checked}/{total} valittu',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_16 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: fi,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var fr = {
name: 'fr',
el: {
colorpicker: {
confirm: 'OK',
clear: 'Effacer',
},
datepicker: {
now: 'Maintenant',
today: 'Auj.',
cancel: 'Annuler',
clear: 'Effacer',
confirm: 'OK',
selectDate: 'Choisir date',
selectTime: 'Choisir horaire',
startDate: 'Date d\xE9but',
startTime: 'Horaire d\xE9but',
endDate: 'Date fin',
endTime: 'Horaire fin',
prevYear: 'Ann\xE9e pr\xE9c\xE9dente',
nextYear: 'Ann\xE9e suivante',
prevMonth: 'Mois pr\xE9c\xE9dent',
nextMonth: 'Mois suivant',
year: '',
month1: 'Janvier',
month2: 'F\xE9vrier',
month3: 'Mars',
month4: 'Avril',
month5: 'Mai',
month6: 'Juin',
month7: 'Juillet',
month8: 'Ao\xFBt',
month9: 'Septembre',
month10: 'Octobre',
month11: 'Novembre',
month12: 'D\xE9cembre',
weeks: {
sun: 'Dim',
mon: 'Lun',
tue: 'Mar',
wed: 'Mer',
thu: 'Jeu',
fri: 'Ven',
sat: 'Sam',
},
months: {
jan: 'Jan',
feb: 'F\xE9v',
mar: 'Mar',
apr: 'Avr',
may: 'Mai',
jun: 'Jun',
jul: 'Jul',
aug: 'Ao\xFB',
sep: 'Sep',
oct: 'Oct',
nov: 'Nov',
dec: 'D\xE9c',
},
},
select: {
loading: 'Chargement',
noMatch: 'Aucune correspondance',
noData: 'Aucune donn\xE9e',
placeholder: 'Choisir',
},
cascader: {
noMatch: 'Aucune correspondance',
loading: 'Chargement',
placeholder: 'Choisir',
noData: 'Aucune donn\xE9e',
},
pagination: {
goto: 'Aller \xE0',
pagesize: '/page',
total: 'Total {total}',
pageClassifier: '',
},
messagebox: {
confirm: 'Confirmer',
cancel: 'Annuler',
error: 'Erreur',
},
upload: {
deleteTip: 'Cliquer sur supprimer pour retirer le fichier',
delete: 'Supprimer',
preview: 'Aper\xE7u',
continue: 'Continuer',
},
table: {
emptyText: 'Aucune donn\xE9e',
confirmFilter: 'Confirmer',
resetFilter: 'R\xE9initialiser',
clearFilter: 'Tous',
sumText: 'Somme',
},
tree: {
emptyText: 'Aucune donn\xE9e',
},
transfer: {
noMatch: 'Aucune correspondance',
noData: 'Aucune donn\xE9e',
titles: ['Liste 1', 'Liste 2'],
filterPlaceholder: 'Entrer un mot clef',
noCheckedFormat: '{total} elements',
hasCheckedFormat: '{checked}/{total} coch\xE9(s)',
},
image: {
error: 'ECHEC',
},
pageHeader: {
title: 'Retour',
},
popconfirm: {
confirmButtonText: 'Oui',
cancelButtonText: 'Non',
},
},
}
var __glob_8_17 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: fr,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var he$1 = {
name: 'he',
el: {
colorpicker: {
confirm: '\u05D0\u05D9\u05E9\u05D5\u05E8',
clear: '\u05E0\u05E7\u05D4',
},
datepicker: {
now: '\u05DB\u05E2\u05EA',
today: '\u05D4\u05D9\u05D5\u05DD',
cancel: '\u05D1\u05D8\u05DC',
clear: '\u05E0\u05E7\u05D4',
confirm: '\u05D0\u05D9\u05E9\u05D5\u05E8',
selectDate: '\u05D1\u05D7\u05E8 \u05EA\u05D0\u05E8\u05D9\u05DA',
selectTime: '\u05D1\u05D7\u05E8 \u05D6\u05DE\u05DF',
startDate:
'\u05EA\u05D0\u05E8\u05D9\u05DA \u05D4\u05EA\u05D7\u05DC\u05D4',
startTime: '\u05D6\u05DE\u05DF \u05D4\u05EA\u05D7\u05DC\u05D4',
endDate: '\u05EA\u05D0\u05E8\u05D9\u05DA \u05E1\u05D9\u05D5\u05DD',
endTime: '\u05D6\u05DE\u05DF \u05E1\u05D9\u05D5\u05DD',
prevYear: 'Previous Year',
nextYear: 'Next Year',
prevMonth: 'Previous Month',
nextMonth: 'Next Month',
year: '',
month1: '\u05D9\u05E0\u05D5\u05D0\u05E8',
month2: '\u05E4\u05D1\u05E8\u05D5\u05D0\u05E8',
month3: '\u05DE\u05E8\u05E5',
month4: '\u05D0\u05E4\u05E8\u05D9\u05DC',
month5: '\u05DE\u05D0\u05D9',
month6: '\u05D9\u05D5\u05E0\u05D9',
month7: '\u05D9\u05D5\u05DC\u05D9',
month8: '\u05D0\u05D5\u05D2\u05D5\u05E1\u05D8',
month9: '\u05E1\u05E4\u05D8\u05DE\u05D1\u05E8',
month10: '\u05D0\u05D5\u05E7\u05D8\u05D5\u05D1\u05E8',
month11: '\u05E0\u05D5\u05D1\u05DE\u05D1\u05E8',
month12: '\u05D3\u05E6\u05DE\u05D1\u05E8',
weeks: {
sun: '\u05D0\u05F3',
mon: '\u05D1\u05F3',
tue: '\u05D2\u05F3',
wed: '\u05D3\u05F3',
thu: '\u05D4\u05F3',
fri: '\u05D5\u05F3',
sat: '\u05E9\u05D1\u05EA',
},
months: {
jan: '\u05D9\u05E0\u05D5\u05D0\u05E8',
feb: '\u05E4\u05D1\u05E8\u05D5\u05D0\u05E8',
mar: '\u05DE\u05E8\u05E5',
apr: '\u05D0\u05E4\u05E8\u05D9\u05DC',
may: '\u05DE\u05D0\u05D9',
jun: '\u05D9\u05D5\u05E0\u05D9',
jul: '\u05D9\u05D5\u05DC\u05D9',
aug: '\u05D0\u05D5\u05D2\u05D5\u05E1\u05D8',
sep: '\u05E1\u05E4\u05D8\u05DE\u05D1\u05E8',
oct: '\u05D0\u05D5\u05E7\u05D8\u05D5\u05D1\u05E8',
nov: '\u05E0\u05D5\u05D1\u05DE\u05D1\u05E8',
dec: '\u05D3\u05E6\u05DE\u05D1\u05E8',
},
},
select: {
loading: '\u05D8\u05D5\u05E2\u05DF',
noMatch:
'\u05DC\u05D0 \u05E0\u05DE\u05E6\u05D0\u05D5 \u05E0\u05EA\u05D5\u05E0\u05D9\u05DD',
noData: '\u05DC\u05DC\u05D0 \u05E0\u05EA\u05D5\u05E0\u05D9\u05DD',
placeholder: '\u05D1\u05D7\u05E8',
},
cascader: {
noMatch:
'\u05DC\u05DC\u05D0 \u05E0\u05EA\u05D5\u05E0\u05D9\u05DD \u05DE\u05EA\u05D0\u05D9\u05DE\u05D9\u05DD',
loading: '\u05D8\u05D5\u05E2\u05DF',
placeholder: '\u05D1\u05D7\u05E8',
noData: '\u05DC\u05DC\u05D0 \u05E0\u05EA\u05D5\u05E0\u05D9\u05DD',
},
pagination: {
goto: '\u05E2\u05D1\u05D5\u05E8 \u05DC',
pagesize: '/page',
total: '\u05DB\u05D5\u05DC\u05DC {total}',
pageClassifier: '',
},
messagebox: {
title: '\u05D4\u05D5\u05D3\u05E2\u05D4',
confirm: '\u05D0\u05D9\u05E9\u05D5\u05E8',
cancel: '\u05D1\u05D8\u05DC',
error: '\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF',
},
upload: {
deleteTip: 'press delete to remove',
delete: '\u05DE\u05D7\u05E7',
preview:
'\u05EA\u05E6\u05D5\u05D2\u05D4 \u05DE\u05E7\u05D3\u05D9\u05DE\u05D4',
continue: '\u05D4\u05DE\u05E9\u05DA',
},
table: {
emptyText: '\u05D0\u05D9\u05DF \u05E0\u05EA\u05D5\u05E0\u05D9\u05DD',
confirmFilter: '\u05D0\u05D9\u05E9\u05D5\u05E8',
resetFilter: '\u05E0\u05E7\u05D4',
clearFilter: '\u05D4\u05DB\u05DC',
sumText: '\u05E1\u05DA',
},
tree: {
emptyText: '\u05D0\u05D9\u05DF \u05E0\u05EA\u05D5\u05E0\u05D9\u05DD',
},
transfer: {
noMatch:
'\u05D0\u05D9\u05DF \u05E0\u05EA\u05D5\u05E0\u05D9\u05DD \u05DE\u05EA\u05D0\u05D9\u05DE\u05D9\u05DD',
noData: '\u05DC\u05DC\u05D0 \u05E0\u05EA\u05D5\u05E0\u05D9\u05DD',
titles: [
'\u05E8\u05E9\u05D9\u05DE\u05D4 1',
'\u05E8\u05E9\u05D9\u05DE\u05D4 2',
],
filterPlaceholder: '\u05D4\u05E7\u05DC\u05D3',
noCheckedFormat: '\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD {total}',
hasCheckedFormat: ' \u05D0\u05D9\u05E9\u05D5\u05E8 {checked}/{total}',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_18 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: he$1,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var hr = {
name: 'hr',
el: {
colorpicker: {
confirm: 'OK',
clear: 'O\u010Disti',
},
datepicker: {
now: 'Sada',
today: 'Danas',
cancel: 'Otka\u017Ei',
clear: 'O\u010Disti',
confirm: 'OK',
selectDate: 'Odaberi datum',
selectTime: 'Odaberi vrijeme',
startDate: 'Datum po\u010Detka',
startTime: 'Vrijeme po\u010Detka',
endDate: 'Datum zavr\u0161etka',
endTime: 'Vrijeme zavr\u0161etka',
prevYear: 'Prethodna godina',
nextYear: 'Sljede\u0107a godina',
prevMonth: 'Prethodni mjesec',
nextMonth: 'Sljede\u0107i mjesec',
year: '',
month1: 'Sije\u010Danj',
month2: 'Velja\u010Da',
month3: 'O\u017Eujak',
month4: 'Travanj',
month5: 'Svibanj',
month6: 'Lipanj',
month7: 'Srpanj',
month8: 'Kolovoz',
month9: 'Rujan',
month10: 'Listopad',
month11: 'Studeni',
month12: 'Prosinac',
week: 'tjedan',
weeks: {
sun: 'Ned',
mon: 'Pon',
tue: 'Uto',
wed: 'Sri',
thu: '\u010Cet',
fri: 'Pet',
sat: 'Sub',
},
months: {
jan: 'Jan',
feb: 'Feb',
mar: 'Mar',
apr: 'Apr',
may: 'May',
jun: 'Jun',
jul: 'Jul',
aug: 'Aug',
sep: 'Sep',
oct: 'Oct',
nov: 'Nov',
dec: 'Dec',
},
},
select: {
loading: 'U\u010Ditavanje',
noMatch: 'Nema prona\u0111enih podataka',
noData: 'Nema podataka',
placeholder: 'Izaberi',
},
cascader: {
noMatch: 'Nema prona\u0111enih podataka',
loading: 'U\u010Ditavanje',
placeholder: 'Izaberi',
noData: 'Nema podataka',
},
pagination: {
goto: 'Idi na',
pagesize: '/stranica',
total: 'Ukupno {total}',
pageClassifier: '',
},
messagebox: {
title: 'Poruka',
confirm: 'OK',
cancel: 'Otka\u017Ei',
error: 'Pogre\u0161an unos',
},
upload: {
deleteTip: 'pritisnite izbri\u0161i za brisanje',
delete: 'Izbri\u0161i',
preview: 'Pregled',
continue: 'Nastavak',
},
table: {
emptyText: 'Nema podataka',
confirmFilter: 'Potvrdi',
resetFilter: 'Resetiraj',
clearFilter: 'Sve',
sumText: 'Suma',
},
tree: {
emptyText: 'Nema podataka',
},
transfer: {
noMatch: 'Nema prona\u0111enih podataka',
noData: 'Nema podataka',
titles: ['Lista 1', 'Lista 2'],
filterPlaceholder: 'Unesite klju\u010Dnu rije\u010D',
noCheckedFormat: '{total} stavki',
hasCheckedFormat: '{checked}/{total} checked',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_19 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: hr,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var hu = {
name: 'hu',
el: {
colorpicker: {
confirm: 'OK',
clear: 'T\xF6rl\xE9s',
},
datepicker: {
now: 'Most',
today: 'Ma',
cancel: 'M\xE9gse',
clear: 'T\xF6rl\xE9s',
confirm: 'OK',
selectDate: 'D\xE1tum',
selectTime: 'Id\u0151pont',
startDate: 'D\xE1tum-t\xF3l',
startTime: 'Id\u0151pont-t\xF3l',
endDate: 'D\xE1tum-ig',
endTime: 'Id\u0151pont-ig',
prevYear: 'El\u0151z\u0151 \xE9v',
nextYear: 'K\xF6vetkez\u0151 \xE9v',
prevMonth: 'El\u0151z\u0151 h\xF3nap',
nextMonth: 'K\xF6vetkez\u0151 h\xF3nap',
year: '',
month1: 'Janu\xE1r',
month2: 'Febru\xE1r',
month3: 'M\xE1rcius',
month4: '\xC1prilis',
month5: 'M\xE1jus',
month6: 'J\xFAnius',
month7: 'J\xFAlius',
month8: 'Augusztus',
month9: 'Szeptember',
month10: 'Okt\xF3ber',
month11: 'November',
month12: 'December',
weeks: {
sun: 'Vas',
mon: 'H\xE9t',
tue: 'Ked',
wed: 'Sze',
thu: 'Cs\xFC',
fri: 'P\xE9n',
sat: 'Szo',
},
months: {
jan: 'Jan',
feb: 'Feb',
mar: 'M\xE1r',
apr: '\xC1pr',
may: 'M\xE1j',
jun: 'J\xFAn',
jul: 'J\xFAl',
aug: 'Aug',
sep: 'Szep',
oct: 'Okt',
nov: 'Nov',
dec: 'Dec',
},
},
select: {
loading: 'Bet\xF6lt\xE9s',
noMatch: 'Nincs tal\xE1lat',
noData: 'Nincs adat',
placeholder: 'V\xE1lassz',
},
cascader: {
noMatch: 'Nincs tal\xE1lat',
loading: 'Bet\xF6lt\xE9s',
placeholder: 'V\xE1lassz',
noData: 'Nincs adat',
},
pagination: {
goto: 'Ugr\xE1s',
pagesize: '/oldal',
total: '\xD6ssz {total}',
pageClassifier: '',
},
messagebox: {
title: '\xDCzenet',
confirm: 'OK',
cancel: 'M\xE9gse',
error: 'Hib\xE1s adat',
},
upload: {
deleteTip: 'kattints a t\xF6rl\xE9shez',
delete: 'T\xF6rl\xE9s',
preview: 'El\u0151n\xE9zet',
continue: 'Tov\xE1bb',
},
table: {
emptyText: 'Nincs adat',
confirmFilter: 'Meger\u0151s\xEDt',
resetFilter: 'Alaphelyet',
clearFilter: 'Mind',
sumText: '\xD6sszeg',
},
tree: {
emptyText: 'Nincs adat',
},
transfer: {
noMatch: 'Nincs tal\xE1lat',
noData: 'Nincs adat',
titles: ['Lista 1', 'Lista 2'],
filterPlaceholder: 'Kulcssz\xF3',
noCheckedFormat: '{total} elem',
hasCheckedFormat: '{checked}/{total} kiv\xE1lasztva',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_20 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: hu,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var hyAm = {
name: 'hy-am',
el: {
colorpicker: {
confirm: '\u053C\u0561\u0582',
clear: '\u0544\u0561\u0584\u0580\u0565\u056C',
},
datepicker: {
now: '\u0540\u056B\u0574\u0561',
today: '\u0531\u0575\u057D\u0585\u0580',
cancel: '\u0549\u0565\u0572\u0561\u0580\u056F\u0565\u056C',
clear: '\u0544\u0561\u0584\u0580\u0565\u056C',
confirm: '\u053C\u0561\u0582',
selectDate:
'\u0538\u0576\u057F\u0580\u0565\u0584 \u0561\u0574\u057D\u0561\u0569\u056B\u0582\u0568',
selectTime:
'\u0538\u0576\u057F\u0580\u0565\u0584 \u056A\u0561\u0574\u0561\u0576\u0561\u056F\u0568',
startDate:
'\u054D\u056F\u0566\u0562. \u0561\u0574\u057D\u0561\u0569\u056B\u0582\u0568',
startTime:
'\u054D\u056F\u0566\u0562. \u056A\u0561\u0574\u0561\u0576\u0561\u056F\u0568',
endDate:
'\u054E\u0565\u0580\u057B. \u0561\u0574\u057D\u0561\u0569\u056B\u057E\u0568',
endTime:
'\u054E\u0565\u0580\u057B. \u056A\u0561\u0574\u0561\u0576\u0561\u056F\u0568',
prevYear: '\u0546\u0561\u056D\u0578\u0580\u0564 \u057F\u0561\u0580\u056B',
nextYear: '\u0545\u0561\u057B\u0578\u0580\u0564 \u057F\u0561\u0580\u056B',
prevMonth:
'\u0546\u0561\u056D\u0578\u0580\u0564 \u0561\u0574\u056B\u057D',
nextMonth:
'\u0545\u0561\u057B\u0578\u0580\u0564 \u0561\u0574\u056B\u057D',
year: '\u054F\u0561\u0580\u056B',
month1: '\u0545\u0578\u0582\u0576\u0578\u0582\u0561\u0580',
month2: '\u0553\u0565\u057F\u0580\u0578\u0582\u0561\u0580',
month3: '\u0544\u0561\u0580\u057F',
month4: '\u0531\u057A\u0580\u056B\u056C',
month5: '\u0544\u0561\u0575\u056B\u057D',
month6: '\u0545\u0578\u0582\u0576\u056B\u057D',
month7: '\u0545\u0578\u0582\u056C\u056B\u057D',
month8: '\u0555\u0563\u0578\u057D\u057F\u0578\u057D',
month9: '\u054D\u0565\u057A\u057F\u0565\u0574\u0562\u0565\u0580',
month10: '\u0545\u0578\u056F\u057F\u0565\u0574\u0562\u0565\u0580',
month11: '\u0546\u0578\u0575\u0565\u0574\u0562\u0565\u0580',
month12: '\u0534\u0565\u056F\u057F\u0565\u0574\u0562\u0565\u0580',
week: '\u0547\u0561\u0562\u0561\u0569',
weeks: {
sun: '\u053F\u056B\u0580',
mon: '\u0535\u0580\u056F',
tue: '\u0535\u0580',
wed: '\u0549\u0578\u0580',
thu: '\u0540\u056B\u0576\u0563',
fri: '\u0548\u0582\u0580\u0562',
sat: '\u0547\u0561\u0562',
},
months: {
jan: '\u0545\u0578\u0582\u0576\u057E',
feb: '\u0553\u0565\u057F',
mar: '\u0544\u0561\u0580',
apr: '\u0531\u057A\u0580',
may: '\u0544\u0561\u0575',
jun: '\u0545\u0578\u0582\u0576',
jul: '\u0545\u0578\u0582\u056C',
aug: '\u0555\u0563',
sep: '\u054D\u0565\u057A\u057F',
oct: '\u0545\u0578\u056F',
nov: '\u0546\u0578\u0575',
dec: '\u0534\u0565\u056F',
},
},
select: {
loading: '\u0532\u0565\u057C\u0576\u0578\u0582\u0574',
noMatch:
'\u0540\u0561\u0574\u0561\u057A\u0561\u057F\u0561\u057D\u056D\u0561\u0576 \u057F\u0578\u0582\u0565\u0561\u056C\u0576\u0565\u0580 \u0579\u056F\u0561\u0576',
noData:
'\u054F\u057E\u0575\u0561\u056C\u0576\u0565\u0580 \u0579\u056F\u0561\u0576',
placeholder: '\u0538\u0576\u057F\u0580\u0565\u056C',
},
cascader: {
noMatch:
'\u0540\u0561\u0574\u0561\u057A\u0561\u057F\u0561\u057D\u056D\u0561\u0576 \u057F\u0578\u0582\u0565\u0561\u056C\u0576\u0565\u0580 \u0579\u056F\u0561\u0576',
loading: '\u0532\u0565\u057C\u0576\u0578\u0582\u0574',
placeholder: '\u0538\u0576\u057F\u0580\u0565\u056C',
noData:
'\u054F\u057E\u0575\u0561\u056C\u0576\u0565\u0580 \u0579\u056F\u0561\u0576',
},
pagination: {
goto: '\u0531\u0576\u0581\u0576\u0565\u056C',
pagesize: ' \u0567\u057B\u0578\u0582\u0574',
total: '\u0538\u0576\u0564\u0561\u0574\u0565\u0576\u0568 {total}',
pageClassifier: '',
},
messagebox: {
title:
'\u0540\u0561\u0572\u0578\u0580\u0564\u0561\u0563\u0580\u0578\u0582\u0569\u056B\u0582\u0576',
confirm: '\u053C\u0561\u0582',
cancel: '\u0549\u0565\u0572\u0561\u0580\u056F\u0565\u056C',
error:
'\u0531\u0576\u057E\u0561\u0582\u0565\u0580 \u057F\u0578\u0582\u0565\u0561\u056C\u0576\u0565\u0580\u056B \u0574\u0578\u0582\u057F\u0584',
},
upload: {
deleteTip:
'\u054D\u0565\u0572\u0574\u0565\u0584 [\u054B\u0576\u057B\u0565\u056C] \u057B\u0576\u057B\u0565\u056C\u0578\u0582 \u0570\u0561\u0574\u0561\u0580',
delete: '\u054B\u0576\u057B\u0565\u056C',
preview: '\u0546\u0561\u056D\u0561\u0564\u056B\u057F\u0578\u0582\u0574',
continue: '\u0547\u0561\u0580\u0578\u0582\u0576\u0561\u056F\u0565\u056C',
},
table: {
emptyText:
'\u054F\u0578\u0582\u0565\u0561\u056C\u0576\u0565\u0580 \u0579\u056F\u0561\u0576',
confirmFilter: '\u0545\u0561\u057D\u057F\u0561\u057F\u0565\u056C',
resetFilter:
'\u054E\u0565\u0580\u0561\u0563\u0578\u0580\u056E\u0561\u0580\u056F\u0565\u056C',
clearFilter: '\u0532\u0578\u056C\u0578\u0580\u0568',
sumText: '\u0533\u0578\u0582\u0574\u0561\u0580\u0568',
},
tree: {
emptyText:
'\u054F\u0578\u0582\u0565\u0561\u056C\u0576\u0565\u0580 \u0579\u056F\u0561\u0576',
},
transfer: {
noMatch:
'\u0540\u0561\u0574\u0561\u057A\u0561\u057F\u0561\u057D\u056D\u0561\u0576 \u057F\u0578\u0582\u0565\u0561\u056C\u0576\u0565\u0580 \u0579\u056F\u0561\u0576',
noData:
'\u054F\u0578\u0582\u0565\u0561\u056C\u0576\u0565\u0580 \u0579\u056F\u0561\u0576',
titles: [
'\u0551\u0578\u0582\u0581\u0561\u056F 1',
'\u0551\u0578\u0582\u0581\u0561\u056F 2',
],
filterPlaceholder:
'\u0544\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0565\u0584 \u0562\u0561\u0576\u0561\u056C\u056B \u0562\u0561\u057C',
noCheckedFormat: '{total} \u0574\u056B\u0561\u0582\u0578\u0580',
hasCheckedFormat:
'{checked}/{total} \u0568\u0576\u057F\u0580\u0578\u0582\u0561\u056E \u0567',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_21 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: hyAm,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var id$2 = {
name: 'id',
el: {
colorpicker: {
confirm: 'Pilih',
clear: 'Kosongkan',
},
datepicker: {
now: 'Sekarang',
today: 'Hari ini',
cancel: 'Batal',
clear: 'Kosongkan',
confirm: 'Ya',
selectDate: 'Pilih tanggal',
selectTime: 'Pilih waktu',
startDate: 'Tanggal Mulai',
startTime: 'Waktu Mulai',
endDate: 'Tanggal Selesai',
endTime: 'Waktu Selesai',
prevYear: 'Tahun Sebelumnya',
nextYear: 'Tahun Selanjutnya',
prevMonth: 'Bulan Sebelumnya',
nextMonth: 'Bulan Selanjutnya',
year: 'Tahun',
month1: 'Januari',
month2: 'Februari',
month3: 'Maret',
month4: 'April',
month5: 'Mei',
month6: 'Juni',
month7: 'Juli',
month8: 'Agustus',
month9: 'September',
month10: 'Oktober',
month11: 'November',
month12: 'Desember',
week: 'Minggu',
weeks: {
sun: 'Min',
mon: 'Sen',
tue: 'Sel',
wed: 'Rab',
thu: 'Kam',
fri: 'Jum',
sat: 'Sab',
},
months: {
jan: 'Jan',
feb: 'Feb',
mar: 'Mar',
apr: 'Apr',
may: 'Mei',
jun: 'Jun',
jul: 'Jul',
aug: 'Agu',
sep: 'Sep',
oct: 'Okt',
nov: 'Nov',
dec: 'Des',
},
},
select: {
loading: 'Memuat',
noMatch: 'Tidak ada data yg cocok',
noData: 'Tidak ada data',
placeholder: 'Pilih',
},
cascader: {
noMatch: 'Tidak ada data yg cocok',
loading: 'Memuat',
placeholder: 'Pilih',
noData: 'Tidak ada data',
},
pagination: {
goto: 'Pergi ke',
pagesize: '/halaman',
total: 'Total {total}',
pageClassifier: '',
deprecationWarning:
'Penggunaan yang tidak akan digunakan lagi terdeteksi, silakan lihat dokumentasi el-pagination untuk lebih jelasnya',
},
messagebox: {
title: 'Pesan',
confirm: 'Ya',
cancel: 'Batal',
error: 'Masukan ilegal',
},
upload: {
deleteTip: 'Tekan hapus untuk melanjutkan',
delete: 'Hapus',
preview: 'Pratinjau',
continue: 'Lanjutkan',
},
table: {
emptyText: 'Tidak ada data',
confirmFilter: 'Konfirmasi',
resetFilter: 'Atur ulang',
clearFilter: 'Semua',
sumText: 'Jumlah',
},
tree: {
emptyText: 'Tidak ada data',
},
transfer: {
noMatch: 'Tidak ada data yg cocok',
noData: 'Tidak ada data',
titles: ['Daftar 1', 'Daftar 2'],
filterPlaceholder: 'Masukan kata kunci',
noCheckedFormat: '{total} item',
hasCheckedFormat: '{checked}/{total} terpilih',
},
image: {
error: 'GAGAL',
},
pageHeader: {
title: 'Kembali',
},
popconfirm: {
confirmButtonText: 'Ya',
cancelButtonText: 'Tidak',
},
},
}
var __glob_8_22 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: id$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var it$1 = {
name: 'it',
el: {
colorpicker: {
confirm: 'OK',
clear: 'Pulisci',
},
datepicker: {
now: 'Ora',
today: 'Oggi',
cancel: 'Cancella',
clear: 'Pulisci',
confirm: 'OK',
selectDate: 'Seleziona data',
selectTime: 'Seleziona ora',
startDate: 'Data inizio',
startTime: 'Ora inizio',
endDate: 'Data fine',
endTime: 'Ora fine',
prevYear: 'Anno precedente',
nextYear: 'Anno successivo',
prevMonth: 'Mese precedente',
nextMonth: 'Mese successivo',
year: '',
month1: 'Gennaio',
month2: 'Febbraio',
month3: 'Marzo',
month4: 'Aprile',
month5: 'Maggio',
month6: 'Giugno',
month7: 'Luglio',
month8: 'Agosto',
month9: 'Settembre',
month10: 'Ottobre',
month11: 'Novembre',
month12: 'Dicembre',
weeks: {
sun: 'Dom',
mon: 'Lun',
tue: 'Mar',
wed: 'Mer',
thu: 'Gio',
fri: 'Ven',
sat: 'Sab',
},
months: {
jan: 'Gen',
feb: 'Feb',
mar: 'Mar',
apr: 'Apr',
may: 'Mag',
jun: 'Giu',
jul: 'Lug',
aug: 'Ago',
sep: 'Set',
oct: 'Ott',
nov: 'Nov',
dec: 'Dic',
},
},
select: {
loading: 'Caricamento',
noMatch: 'Nessuna corrispondenza',
noData: 'Nessun dato',
placeholder: 'Seleziona',
},
cascader: {
noMatch: 'Nessuna corrispondenza',
loading: 'Caricamento',
placeholder: 'Seleziona',
noData: 'Nessun dato',
},
pagination: {
goto: 'Vai a',
pagesize: '/page',
total: 'Totale {total}',
pageClassifier: '',
},
messagebox: {
confirm: 'OK',
cancel: 'Cancella',
error: 'Input non valido',
},
upload: {
deleteTip: 'Premi cancella per rimuovere',
delete: 'Cancella',
preview: 'Anteprima',
continue: 'Continua',
},
table: {
emptyText: 'Nessun dato',
confirmFilter: 'Conferma',
resetFilter: 'Reset',
clearFilter: 'Tutti',
sumText: 'Somma',
},
tree: {
emptyText: 'Nessun dato',
},
transfer: {
noMatch: 'Nessuna corrispondenza',
noData: 'Nessun dato',
titles: ['Lista 1', 'Lista 2'],
filterPlaceholder: 'Inserisci filtro',
noCheckedFormat: '{total} elementi',
hasCheckedFormat: '{checked}/{total} selezionati',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_23 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: it$1,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ja$2 = {
name: 'ja',
el: {
colorpicker: {
confirm: 'OK',
clear: '\u30AF\u30EA\u30A2',
},
datepicker: {
now: '\u73FE\u5728',
today: '\u4ECA\u65E5',
cancel: '\u30AD\u30E3\u30F3\u30BB\u30EB',
clear: '\u30AF\u30EA\u30A2',
confirm: 'OK',
selectDate: '\u65E5\u4ED8\u3092\u9078\u629E',
selectTime: '\u6642\u9593\u3092\u9078\u629E',
startDate: '\u958B\u59CB\u65E5',
startTime: '\u958B\u59CB\u6642\u9593',
endDate: '\u7D42\u4E86\u65E5',
endTime: '\u7D42\u4E86\u6642\u9593',
prevYear: '\u524D\u5E74',
nextYear: '\u7FCC\u5E74',
prevMonth: '\u524D\u6708',
nextMonth: '\u7FCC\u6708',
year: '\u5E74',
month1: '1\u6708',
month2: '2\u6708',
month3: '3\u6708',
month4: '4\u6708',
month5: '5\u6708',
month6: '6\u6708',
month7: '7\u6708',
month8: '8\u6708',
month9: '9\u6708',
month10: '10\u6708',
month11: '11\u6708',
month12: '12\u6708',
weeks: {
sun: '\u65E5',
mon: '\u6708',
tue: '\u706B',
wed: '\u6C34',
thu: '\u6728',
fri: '\u91D1',
sat: '\u571F',
},
months: {
jan: '1\u6708',
feb: '2\u6708',
mar: '3\u6708',
apr: '4\u6708',
may: '5\u6708',
jun: '6\u6708',
jul: '7\u6708',
aug: '8\u6708',
sep: '9\u6708',
oct: '10\u6708',
nov: '11\u6708',
dec: '12\u6708',
},
},
select: {
loading: '\u30ED\u30FC\u30C9\u4E2D',
noMatch: '\u30C7\u30FC\u30BF\u306A\u3057',
noData: '\u30C7\u30FC\u30BF\u306A\u3057',
placeholder: '\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044',
},
cascader: {
noMatch: '\u30C7\u30FC\u30BF\u306A\u3057',
loading: '\u30ED\u30FC\u30C9\u4E2D',
placeholder: '\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044',
noData: '\u30C7\u30FC\u30BF\u306A\u3057',
},
pagination: {
goto: '',
pagesize: '\u4EF6/\u30DA\u30FC\u30B8',
total: '\u7DCF\u8A08 {total} \u4EF6',
pageClassifier: '\u30DA\u30FC\u30B8\u76EE\u3078',
},
messagebox: {
title: '\u30E1\u30C3\u30BB\u30FC\u30B8',
confirm: 'OK',
cancel: '\u30AD\u30E3\u30F3\u30BB\u30EB',
error: '\u6B63\u3057\u304F\u306A\u3044\u5165\u529B',
},
upload: {
deleteTip:
'Del\u30AD\u30FC\u3092\u62BC\u3057\u3066\u524A\u9664\u3059\u308B',
delete: '\u524A\u9664\u3059\u308B',
preview: '\u30D7\u30EC\u30D3\u30E5\u30FC',
continue: '\u7D9A\u884C\u3059\u308B',
},
table: {
emptyText: '\u30C7\u30FC\u30BF\u306A\u3057',
confirmFilter: '\u78BA\u8A8D',
resetFilter: '\u521D\u671F\u5316',
clearFilter: '\u3059\u3079\u3066',
sumText: '\u5408\u8A08',
},
tree: {
emptyText: '\u30C7\u30FC\u30BF\u306A\u3057',
},
transfer: {
noMatch: '\u30C7\u30FC\u30BF\u306A\u3057',
noData: '\u30C7\u30FC\u30BF\u306A\u3057',
titles: ['\u30EA\u30B9\u30C8 1', '\u30EA\u30B9\u30C8 2'],
filterPlaceholder: '\u30AD\u30FC\u30EF\u30FC\u30C9\u3092\u5165\u529B',
noCheckedFormat: '\u7DCF\u8A08 {total} \u4EF6',
hasCheckedFormat: '{checked}/{total} \u3092\u9078\u629E\u3057\u305F',
},
image: {
error: '\u5931\u6557',
},
pageHeader: {
title: '\u623B\u308B',
},
popconfirm: {
confirmButtonText: '\u306F\u3044',
cancelButtonText: '\u3044\u3044\u3048',
},
},
}
var __glob_8_24 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ja$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var kk = {
name: 'kk',
el: {
colorpicker: {
confirm: '\u049A\u0430\u0431\u044B\u043B\u0434\u0430\u0443',
clear: '\u0422\u0430\u0437\u0430\u043B\u0430\u0443',
},
datepicker: {
now: '\u049A\u0430\u0437\u0456\u0440',
today: '\u0411\u04AF\u0433\u0456\u043D',
cancel: '\u0411\u043E\u043B\u0434\u044B\u0440\u043C\u0430\u0443',
clear: '\u0422\u0430\u0437\u0430\u043B\u0430\u0443',
confirm: '\u049A\u0430\u0431\u044B\u043B\u0434\u0430\u0443',
selectDate:
'\u041A\u04AF\u043D\u0434\u0456 \u0442\u0430\u04A3\u0434\u0430\u04A3\u044B\u0437',
selectTime:
'\u0421\u0430\u0493\u0430\u0442\u0442\u044B \u0442\u0430\u04A3\u0434\u0430\u04A3\u044B\u0437',
startDate:
'\u0411\u0430\u0441\u0442\u0430\u043B\u0443 \u043A\u04AF\u043D\u0456',
startTime:
'\u0411\u0430\u0441\u0442\u0430\u043B\u0443 \u0441\u0430\u0493\u0430\u0442\u044B',
endDate:
'\u0410\u044F\u049B\u0442\u0430\u043B\u0443 \u043A\u04AF\u043D\u0456',
endTime:
'\u0410\u044F\u049B\u0442\u0430\u043B\u0443 \u0441\u0430\u0493\u0430\u0442\u044B',
prevYear: '\u0410\u043B\u0434\u044B\u04A3\u0493\u044B \u0436\u044B\u043B',
nextYear: '\u041A\u0435\u043B\u0435\u0441\u0456 \u0436\u044B\u043B',
prevMonth: '\u0410\u043B\u0434\u044B\u04A3\u0493\u044B \u0430\u0439',
nextMonth: '\u041A\u0435\u043B\u0435\u0441\u0456 \u0430\u0439',
year: '\u0416\u044B\u043B',
month1: '\u049A\u0430\u04A3\u0442\u0430\u0440',
month2: '\u0410\u049B\u043F\u0430\u043D',
month3: '\u041D\u0430\u0443\u0440\u044B\u0437',
month4: '\u0421\u04D9\u0443\u0456\u0440',
month5: '\u041C\u0430\u043C\u044B\u0440',
month6: '\u041C\u0430\u0443\u0441\u044B\u043C',
month7: '\u0428\u0456\u043B\u0434\u0435',
month8: '\u0422\u0430\u043C\u044B\u0437',
month9: '\u049A\u044B\u0440\u043A\u04AF\u0439\u0435\u043A',
month10: '\u049A\u0430\u0437\u0430\u043D',
month11: '\u049A\u0430\u0440\u0430\u0448\u0430',
month12: '\u0416\u0435\u043B\u0442\u043E\u049B\u0441\u0430\u043D',
week: '\u0410\u043F\u0442\u0430',
weeks: {
sun: '\u0416\u0435\u043A',
mon: '\u0414\u04AF\u0439',
tue: '\u0421\u0435\u0439',
wed: '\u0421\u04D9\u0440',
thu: '\u0411\u0435\u0439',
fri: '\u0416\u04B1\u043C',
sat: '\u0421\u0435\u043D',
},
months: {
jan: '\u049A\u0430\u04A3',
feb: '\u0410\u049B\u043F',
mar: '\u041D\u0430\u0443',
apr: '\u0421\u04D9\u0443',
may: '\u041C\u0430\u043C',
jun: '\u041C\u0430\u0443',
jul: '\u0428\u0456\u043B',
aug: '\u0422\u0430\u043C',
sep: '\u049A\u044B\u0440',
oct: '\u049A\u0430\u0437',
nov: '\u049A\u0430\u0440',
dec: '\u0416\u0435\u043B',
},
},
select: {
loading: '\u0416\u04AF\u043A\u0442\u0435\u043B\u0443\u0434\u0435',
noMatch:
'\u0421\u04D9\u0439\u043A\u0435\u0441 \u0434\u0435\u0440\u0435\u043A\u0442\u0435\u0440 \u0436\u043E\u049B',
noData:
'\u0414\u0435\u0440\u0435\u043A\u0442\u0435\u0440 \u0436\u043E\u049B',
placeholder: '\u0422\u0430\u04A3\u0434\u0430\u04A3\u044B\u0437',
},
cascader: {
noMatch:
'\u0421\u04D9\u0439\u043A\u0435\u0441 \u0434\u0435\u0440\u0435\u043A\u0442\u0435\u0440 \u0436\u043E\u049B',
loading: '\u0416\u04AF\u043A\u0442\u0435\u043B\u0443\u0434\u0435',
placeholder: '\u0422\u0430\u04A3\u0434\u0430\u04A3\u044B\u0437',
noData:
'\u0414\u0435\u0440\u0435\u043A\u0442\u0435\u0440 \u0436\u043E\u049B',
},
pagination: {
goto: '\u0411\u0430\u0440\u0443',
pagesize: '/page',
total: '\u0411\u0430\u0440\u043B\u044B\u0493\u044B {total}',
pageClassifier: '',
},
messagebox: {
title: '\u0425\u0430\u0431\u0430\u0440',
confirm: '\u049A\u0430\u0431\u044B\u043B\u0434\u0430\u0443',
cancel: '\u0411\u043E\u043B\u0434\u044B\u0440\u043C\u0430\u0443',
error:
'\u0416\u0430\u0440\u0430\u043C\u0441\u044B\u0437 \u0435\u043D\u0433\u0456\u0437\u0443\u043B\u0435\u0440',
},
upload: {
deleteTip:
'\u04E8\u0448\u0456\u0440\u0443\u0434\u0456 \u0431\u0430\u0441\u044B\u043F \u04E9\u0448\u0456\u0440\u0456\u04A3\u0456\u0437',
delete: '\u04E8\u0448\u0456\u0440\u0443',
preview:
'\u0410\u043B\u0434\u044B\u043D \u0430\u043B\u0430 \u049B\u0430\u0440\u0430\u0443',
continue: '\u0416\u0430\u043B\u0493\u0430\u0441\u0442\u044B\u0440\u0443',
},
table: {
emptyText:
'\u0414\u0435\u0440\u0435\u043A\u0442\u0435\u0440 \u0436\u043E\u049B',
confirmFilter: '\u049A\u0430\u0431\u044B\u043B\u0434\u0430\u0443',
resetFilter:
'\u049A\u0430\u043B\u043F\u044B\u043D\u0430 \u043A\u0435\u043B\u0442\u0456\u0440\u0443',
clearFilter: '\u0411\u0430\u0440\u043B\u044B\u0493\u044B',
sumText: '\u0421\u043E\u043C\u0430\u0441\u044B',
},
tree: {
emptyText:
'\u0414\u0435\u0440\u0435\u043A\u0442\u0435\u0440 \u0436\u043E\u049B',
},
transfer: {
noMatch:
'\u0421\u04D9\u0439\u043A\u0435\u0441 \u0434\u0435\u0440\u0435\u043A\u0442\u0435\u0440 \u0436\u043E\u049B',
noData:
'\u0414\u0435\u0440\u0435\u043A\u0442\u0435\u0440 \u0436\u043E\u049B',
titles: ['List 1', 'List 2'],
filterPlaceholder:
'\u041A\u0456\u043B\u0442 \u0441\u04E9\u0437\u0434\u0456 \u0435\u043D\u0433\u0456\u0437\u0456\u04A3\u0456\u0437',
noCheckedFormat: '{total} \u044D\u043B\u044D\u043C\u044D\u043D\u0442',
hasCheckedFormat:
'{checked}/{total} \u049B\u04B1\u0441\u0431\u0435\u043B\u0433\u0456\u0441\u0456 \u049B\u043E\u0439\u044B\u043B\u0434\u044B',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_25 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: kk,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var km = {
name: 'km',
el: {
colorpicker: {
confirm: '\u1799\u179B\u17CB\u1796\u17D2\u179A\u1798',
clear: '\u179B\u17BB\u1794',
},
datepicker: {
now: '\u17A5\u17A1\u17BC\u179C\u200B\u1793\u17C1\u17C7',
today: '\u1790\u17D2\u1784\u17C3\u1793\u17C1\u17C7',
cancel: '\u1794\u17C4\u17C7\u1794\u1784\u17CB',
clear: '\u179B\u17BB\u1794',
confirm: '\u1799\u179B\u17CB\u1796\u17D2\u179A\u1798',
selectDate:
'\u1787\u17D2\u179A\u17BE\u179F\u179A\u17BE\u179F\u1790\u17D2\u1784\u17C3',
selectTime:
'\u1787\u17D2\u179A\u17BE\u179F\u179A\u17BE\u179F\u1798\u17C9\u17C4\u1784',
startDate:
'\u1790\u17D2\u1784\u17C3\u1785\u17B6\u1794\u17CB\u1795\u17D2\u178F\u17BE\u1798',
startTime:
'\u1798\u17C9\u17C4\u1784\u1785\u17B6\u1794\u17CB\u1795\u17D2\u178F\u17BE\u1798',
endDate: '\u1790\u17D2\u1784\u17C3\u1794\u1789\u17D2\u1785\u1794\u17CB',
endTime: '\u1798\u17C9\u17C4\u1784\u1794\u1789\u17D2\u1785\u1794\u17CB',
prevYear: '\u1786\u17D2\u1793\u17B6\u17C6\u1798\u17BB\u1793',
nextYear: '\u1786\u17D2\u1793\u17B6\u17C6\u1780\u17D2\u179A\u17C4\u1799',
prevMonth: '\u1781\u17C2\u1798\u17BB\u1793',
nextMonth: '\u1781\u17C2\u1780\u17D2\u179A\u17C4\u1799',
year: '\u1786\u17D2\u1793\u17B6\u17C6',
month1: '\u1798\u1780\u179A\u17B6',
month2: '\u1780\u17BB\u1798\u17D2\u1797\u17C8',
month3: '\u1798\u17B8\u1793\u17B6',
month4: '\u1798\u17C1\u179F\u17B6',
month5: '\u17A7\u179F\u1797\u17B6',
month6: '\u1798\u17B7\u1790\u17BB\u1793\u17B6',
month7: '\u1780\u1780\u17D2\u1780\u178A\u17B6',
month8: '\u179F\u17B8\u17A0\u17B6',
month9: '\u1780\u1789\u17D2\u1789\u17B6',
month10: '\u178F\u17BB\u179B\u17B6',
month11: '\u179C\u17B7\u1785\u17D2\u1786\u17B7\u1780\u17B6',
month12: '\u1792\u17D2\u1793\u17BC',
weeks: {
sun: '\u17A2\u17B6\u1791\u17B7\u178F\u17D2\u1799',
mon: '\u1785\u1793\u17D2\u1791',
tue: '\u17A2\u1784\u17D2\u1782\u17B6\u179A',
wed: '\u1796\u17BB\u1792',
thu: '\u1796\u17D2\u179A\u17A0',
fri: '\u179F\u17BB\u1780\u17D2\u179A',
sat: '\u179F\u17C5\u179A\u17CD',
},
months: {
jan: '\u1798\u1780\u179A\u17B6',
feb: '\u1780\u17BB\u1798\u17D2\u1797\u17C8',
mar: '\u1798\u17B8\u1793\u17B6',
apr: '\u1798\u17C1\u179F\u17B6',
may: '\u17A7\u179F\u1797\u17B6',
jun: '\u1798\u17B7\u1790\u17BB\u1793\u17B6',
jul: '\u1780\u1780\u17D2\u1780\u178A\u17B6',
aug: '\u179F\u17B8\u17A0\u17B6',
sep: '\u1780\u1789\u17D2\u1789\u17B6',
oct: '\u178F\u17BB\u179B\u17B6',
nov: '\u179C\u17B7\u1785\u17D2\u1786\u17B7\u1780\u17B6',
dec: '\u1792\u17D2\u1793\u17BC',
},
},
select: {
loading: '\u1780\u17C6\u1796\u17BB\u1784\u1795\u17D2\u1791\u17BB\u1780',
noMatch:
'\u1782\u17D2\u1798\u17B6\u1793\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u178A\u17BC\u1785',
noData:
'\u1782\u17D2\u1798\u17B6\u1793\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799',
placeholder: '\u1787\u17D2\u179A\u17BE\u179F\u179A\u17BE\u179F',
},
cascader: {
noMatch:
'\u1782\u17D2\u1798\u17B6\u1793\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u178A\u17BC\u1785',
loading: '\u1780\u17C6\u1796\u17BB\u1784\u1795\u17D2\u1791\u17BB\u1780',
placeholder: '\u1787\u17D2\u179A\u17BE\u179F\u179A\u17BE\u179F',
noData:
'\u1782\u17D2\u1798\u17B6\u1793\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799',
},
pagination: {
goto: '\u1791\u17C5\u1780\u17B6\u1793\u17CB',
pagesize: '/\u1791\u17C6\u1796\u17D0\u179A',
total: '\u179F\u179A\u17BB\u1794 {total}',
pageClassifier: '',
},
messagebox: {
title: '\u179F\u17B6\u179A',
confirm: '\u1799\u179B\u17CB\u1796\u17D2\u179A\u1798',
cancel: '\u1794\u17C4\u17C7\u1794\u1784\u17CB',
error:
'\u1780\u17B6\u179A\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17BC\u179C\u1794\u17B6\u1793\u17A2\u1793\u17BB\u1789\u17D2\u1789\u17B6\u178F',
},
upload: {
deleteTip:
'\u1785\u17BB\u1785\u179B\u17BB\u1794\u178A\u17BE\u1798\u17D2\u1794\u17B8\u178A\u1780\u1785\u17C1\u1789',
delete: '\u179B\u17BB\u1794',
preview: '\u1798\u17BE\u179B',
continue: '\u1794\u1793\u17D2\u178F',
},
table: {
emptyText:
'\u1782\u17D2\u1798\u17B6\u1793\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799',
confirmFilter: '\u1799\u179B\u17CB\u1796\u17D2\u179A\u1798',
resetFilter:
'\u1780\u17C6\u178E\u178F\u17CB\u17A1\u17BE\u1784\u179C\u17B7\u1789',
clearFilter: '\u1791\u17B6\u17C6\u1784\u17A2\u179F\u17CB',
sumText: '\u1794\u17BC\u1780',
},
tree: {
emptyText:
'\u1782\u17D2\u1798\u17B6\u1793\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799',
},
transfer: {
noMatch:
'\u1782\u17D2\u1798\u17B6\u1793\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u178A\u17BC\u1785',
noData:
'\u1782\u17D2\u1798\u17B6\u1793\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799',
titles: [
'\u1794\u1789\u17D2\u1787\u17B8 \u17E1',
'\u1794\u1789\u17D2\u1787\u17B8 \u17E2',
],
filterPlaceholder:
'\u1794\u1789\u17D2\u1785\u17BC\u179B\u1796\u17B6\u1780\u17D2\u1799',
noCheckedFormat: '{total} \u1792\u17B6\u178F\u17BB',
hasCheckedFormat:
'{checked}/{total} \u1794\u17B6\u1793\u1787\u17D2\u179A\u17BE\u179F\u1799\u1780',
},
image: {
error:
'\u1798\u17B7\u1793\u1794\u17B6\u1793\u1787\u17C4\u1782\u1787\u17D0\u1799',
},
pageHeader: {
title:
'\u178F\u17D2\u179A\u179B\u1794\u17CB\u1780\u17D2\u179A\u17C4\u1799',
},
popconfirm: {
confirmButtonText: '\u1799\u179B\u17CB\u1796\u17D2\u179A\u1798',
cancelButtonText: '\u1798\u17B7\u1793\u1796\u17D2\u179A\u1798',
},
},
}
var __glob_8_26 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: km,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ko = {
name: 'ko',
el: {
colorpicker: {
confirm: '\uD655\uC778',
clear: '\uCD08\uAE30\uD654',
},
datepicker: {
now: '\uC9C0\uAE08',
today: '\uC624\uB298',
cancel: '\uCDE8\uC18C',
clear: '\uCD08\uAE30\uD654',
confirm: '\uD655\uC778',
selectDate: '\uB0A0\uC9DC \uC120\uD0DD',
selectTime: '\uC2DC\uAC04 \uC120\uD0DD',
startDate: '\uC2DC\uC791 \uB0A0\uC9DC',
startTime: '\uC2DC\uC791 \uC2DC\uAC04',
endDate: '\uC885\uB8CC \uB0A0\uC9DC',
endTime: '\uC885\uB8CC \uC2DC\uAC04',
prevYear: '\uC9C0\uB09C\uD574',
nextYear: '\uB2E4\uC74C\uD574',
prevMonth: '\uC9C0\uB09C\uB2EC',
nextMonth: '\uB2E4\uC74C\uB2EC',
year: '\uB144',
month1: '1\uC6D4',
month2: '2\uC6D4',
month3: '3\uC6D4',
month4: '4\uC6D4',
month5: '5\uC6D4',
month6: '6\uC6D4',
month7: '7\uC6D4',
month8: '8\uC6D4',
month9: '9\uC6D4',
month10: '10\uC6D4',
month11: '11\uC6D4',
month12: '12\uC6D4',
weeks: {
sun: '\uC77C',
mon: '\uC6D4',
tue: '\uD654',
wed: '\uC218',
thu: '\uBAA9',
fri: '\uAE08',
sat: '\uD1A0',
},
months: {
jan: '1\uC6D4',
feb: '2\uC6D4',
mar: '3\uC6D4',
apr: '4\uC6D4',
may: '5\uC6D4',
jun: '6\uC6D4',
jul: '7\uC6D4',
aug: '8\uC6D4',
sep: '9\uC6D4',
oct: '10\uC6D4',
nov: '11\uC6D4',
dec: '12\uC6D4',
},
},
select: {
loading: '\uBD88\uB7EC\uC624\uB294 \uC911',
noMatch: '\uAC80\uC0C9\uB41C \uB370\uC774\uD130 \uC5C6\uC74C',
noData: '\uB370\uC774\uD130 \uC5C6\uC74C',
placeholder: '\uC120\uD0DD',
},
cascader: {
noMatch: '\uAC80\uC0C9\uB41C \uB370\uC774\uD130 \uC5C6\uC74C',
loading: '\uBD88\uB7EC\uC624\uB294 \uC911',
placeholder: '\uC120\uD0DD',
noData: '\uB370\uC774\uD130 \uC5C6\uC74C',
},
pagination: {
goto: '',
pagesize: '\uAC74/\uD398\uC774\uC9C0',
total: '\uCD1D {total} \uAC74',
pageClassifier: '\uD398\uC774\uC9C0\uB85C',
},
messagebox: {
title: '\uBA54\uC2DC\uC9C0',
confirm: '\uD655\uC778',
cancel: '\uCDE8\uC18C',
error: '\uC62C\uBC14\uB974\uC9C0 \uC54A\uC740 \uC785\uB825',
},
upload: {
deleteTip: 'Delete \uD0A4\uB97C \uB20C\uB7EC \uC0AD\uC81C',
delete: '\uC0AD\uC81C',
preview: '\uBBF8\uB9AC\uBCF4\uAE30',
continue: '\uACC4\uC18D\uD558\uAE30',
},
table: {
emptyText: '\uB370\uC774\uD130 \uC5C6\uC74C',
confirmFilter: '\uD655\uC778',
resetFilter: '\uCD08\uAE30\uD654',
clearFilter: '\uC804\uCCB4',
sumText: '\uD569\uACC4',
},
tree: {
emptyText: '\uB370\uC774\uD130 \uC5C6\uC74C',
},
transfer: {
noMatch: '\uAC80\uC0C9\uB41C \uB370\uC774\uD130 \uC5C6\uC74C',
noData: '\uB370\uC774\uD130 \uC5C6\uC74C',
titles: ['\uB9AC\uC2A4\uD2B8 1', '\uB9AC\uC2A4\uD2B8 2'],
filterPlaceholder:
'\uAC80\uC0C9\uC5B4\uB97C \uC785\uB825\uD558\uC138\uC694',
noCheckedFormat: '\uCD1D {total} \uAC74',
hasCheckedFormat: '{checked}/{total} \uC120\uD0DD\uB428',
},
image: {
error: '\uBD88\uB7EC\uC624\uAE30 \uC2E4\uD328',
},
pageHeader: {
title: '\uB4A4\uB85C',
},
popconfirm: {
confirmButtonText: '\uC608',
cancelButtonText: '\uC544\uB2C8\uC624',
},
},
}
var __glob_8_27 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ko,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ku = {
name: 'ku',
el: {
colorpicker: {
confirm: 'Temam',
clear: 'Paqij bike',
},
datepicker: {
now: 'Niha',
today: '\xCEro',
cancel: 'Betal bike',
clear: 'Paqij bike',
confirm: 'Temam',
selectDate: 'D\xEErok\xEA bibij\xEAre',
selectTime: 'Dem\xEA bibij\xEAre',
startDate: 'D\xEEroka Destp\xEAk\xEA',
startTime: 'Dema Destp\xEAk\xEA',
endDate: 'D\xEEroka Daw\xEE',
endTime: 'Dema Daw\xEE',
prevYear: 'Sala P\xEA\u015F',
nextYear: 'Sala Pa\u015F',
prevMonth: 'Meha P\xEA\u015F',
nextMonth: 'Meha Pa\u015F',
year: 'Sal',
month1: 'R\xEAbendan',
month2: 'Re\u015Femeh',
month3: 'Adar',
month4: 'Avr\xEAl',
month5: 'Gulan',
month6: 'P\xFB\u015Fber',
month7: 'T\xEErmeh',
month8: 'Gilav\xEAj',
month9: 'Rezber',
month10: 'Kew\xE7\xEAr',
month11: 'Sarmawaz',
month12: 'Berfanbar',
weeks: {
sun: 'Yek',
mon: 'Du\u015F',
tue: 'S\xEA\u015F',
wed: '\xC7ar',
thu: 'P\xEAn',
fri: '\xCEn',
sat: '\u015Eem',
},
months: {
jan: 'R\xEAb',
feb: 'Re\u015F',
mar: 'Ada',
apr: 'Avr',
may: 'Gul',
jun: 'P\xFB\u015F',
jul: 'T\xEEr',
aug: 'Gil',
sep: 'Rez',
oct: 'Kew',
nov: 'Sar',
dec: 'Ber',
},
},
select: {
loading: 'Bardibe',
noMatch: 'Li hembere ve agah\xEE tune',
noData: 'Agah\xEE tune',
placeholder: 'Bibij\xEAre',
},
cascader: {
noMatch: 'Li hembere ve agah\xEE tune',
loading: 'Bardibe',
placeholder: 'Bibij\xEAre',
noData: 'Agah\xEE tune',
},
pagination: {
goto: 'Bi\xE7e',
pagesize: '/rupel',
total: 'Tevah\xEE {total}',
pageClassifier: '',
},
messagebox: {
title: 'Peyam',
confirm: 'Temam',
cancel: 'Betal bike',
error: 'Beyana \xE7ewt',
},
upload: {
deleteTip: 'ji bo rake p\xEAl "delete" bike',
delete: 'Rake',
preview: 'P\xEA\u015Fd\xEEtin',
continue: 'Berdewam',
},
table: {
emptyText: 'Agah\xEE tune',
confirmFilter: 'Pi\u015Ftrast bike',
resetFilter: 'J\xEA bibe',
clearFilter: 'Hem\xFB',
sumText: 'Kom',
},
tree: {
emptyText: 'Agah\xEE tune',
},
transfer: {
noMatch: 'Li hembere ve agah\xEE tune',
noData: 'Agah\xEE tune',
titles: ['L\xEEste 1', 'L\xEEste 2'],
filterPlaceholder: 'Biniv\xEEse',
noCheckedFormat: '{total} lib',
hasCheckedFormat: '{checked}/{total} bijartin',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_28 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ku,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ky = {
name: 'ky',
el: {
colorpicker: {
confirm: '\u041C\u0443\u0440\u0443\u043D\u043A\u0443',
clear: '\u0430\u0447\u044B\u043A',
},
datepicker: {
now: '\u0430\u0437\u044B\u0440',
today: '\u0431\u04AF\u0433\u04AF\u043D',
cancel:
'\u0436\u043E\u043A\u043A\u043E \u0447\u044B\u0433\u0430\u0440\u044B\u043B\u0434\u044B',
clear: '\u0430\u0447\u044B\u043A',
confirm: '\u0431\u0435\u043B\u0433\u0438\u043B\u04E9\u04E9',
selectDate: '\u0434\u0430\u0442\u0430',
selectTime:
'\u0442\u0430\u043D\u0434\u043E\u043E \u0443\u0431\u0430\u043A\u0442\u044B\u0441\u044B',
startDate:
'\u0411\u0430\u0448\u0442\u0430\u043B\u0433\u0430\u043D \u0434\u0430\u0442\u0430\u0441\u044B',
startTime: 'Start \u0443\u0431\u0430\u043A\u044B\u0442',
endDate:
'\u0411\u04AF\u0442\u043A\u04E9\u043D \u0434\u0430\u0442\u0430\u0441\u044B',
endTime: 'End \u0443\u0431\u0430\u043A\u044B\u0442',
prevYear: '\u04E9\u0442\u043A\u04E9\u043D \u0436\u044B\u043B\u044B',
nextYear:
'\u0431\u0438\u0440 \u0436\u044B\u043B\u0434\u0430\u043D \u043A\u0438\u0439\u0438\u043D',
prevMonth: '\u04E8\u0442\u043A\u04E9\u043D \u0430\u0439\u0434\u0430',
nextMonth: '\u041A\u0438\u0439\u0438\u043D\u043A\u0438 \u0430\u0439',
year: '\u0436\u044B\u043B',
month1: '\u0431\u0438\u0440\u0438\u043D\u0447\u0438 \u0430\u0439',
month2: '\u042D\u043A\u0438\u043D\u0447\u0438 \u0430\u0439\u0434\u0430',
month3: '\u04AE\u0447\u04AF\u043D\u0447\u04AF \u0430\u0439\u0434\u0430',
month4:
'\u0422\u04E9\u0440\u0442\u04AF\u043D\u0447\u04AF \u0430\u0439\u0434\u0430',
month5:
'\u0431\u0435\u0448\u0438\u043D\u0447\u0438 \u0430\u0439\u0434\u0430',
month6:
'\u0410\u043B\u0433\u0430\u0447\u043A\u044B \u0430\u043B\u0442\u044B \u0430\u0439',
month7:
'\u0436\u0435\u0442\u0438\u043D\u0447\u0438 \u0430\u0439\u0434\u0430',
month8:
'\u0441\u0435\u0433\u0438\u0437\u0438\u043D\u0447\u0438 \u0430\u0439',
month9:
'\u0410\u043B\u0433\u0430\u0447\u043A\u044B \u0442\u043E\u0433\u0443\u0437 \u0430\u0439',
month10: '\u043E\u043D\u0443\u043D\u0447\u0443 \u0430\u0439\u0434\u0430',
month11:
'\u043E\u043D \u0431\u0438\u0440\u0438\u043D\u0447\u0438 \u0430\u0439',
month12:
'\u043E\u043D \u044D\u043A\u0438\u043D\u0447\u0438 \u0430\u0439\u0434\u0430',
weeks: {
sun: '\u0436\u0435\u0442\u0438 \u0436\u0443\u043C\u0430',
mon: '\u0434\u04AF\u0439\u0448\u04E9\u043C\u0431\u04AF',
tue: '\u0448\u0435\u0439\u0448\u0435\u043C\u0431\u0438',
wed: '\u0448\u0430\u0440\u0448\u0435\u043C\u0431\u0438',
thu: '\u0431\u0435\u0439\u0448\u0435\u043C\u0431\u0438',
fri: '\u0436\u0443\u043C\u0430',
sat: '\u0438\u0448\u0435\u043C\u0431\u0438',
},
months: {
jan: '\u0431\u0438\u0440\u0438\u043D\u0447\u0438 \u0430\u0439',
feb: '\u042D\u043A\u0438\u043D\u0447\u0438 \u0430\u0439\u0434\u0430',
mar: '\u04AE\u0447\u04AF\u043D\u0447\u04AF \u0430\u0439\u0434\u0430',
apr: '\u0422\u04E9\u0440\u0442\u04AF\u043D\u0447\u04AF \u0430\u0439\u0434\u0430',
may: '\u0431\u0435\u0448\u0438\u043D\u0447\u0438 \u0430\u0439\u0434\u0430',
jun: '\u0410\u043B\u0433\u0430\u0447\u043A\u044B \u0430\u043B\u0442\u044B \u0430\u0439',
jul: '\u0436\u0435\u0442\u0438\u043D\u0447\u0438 \u0430\u0439\u0434\u0430',
aug: '\u0441\u0435\u0433\u0438\u0437\u0438\u043D\u0447\u0438 \u0430\u0439',
sep: '\u0410\u043B\u0433\u0430\u0447\u043A\u044B \u0442\u043E\u0433\u0443\u0437 \u0430\u0439',
oct: '\u043E\u043D\u0443\u043D\u0447\u0443 \u0430\u0439\u0434\u0430',
nov: '\u043E\u043D \u0431\u0438\u0440\u0438\u043D\u0447\u0438 \u0430\u0439',
dec: '\u043E\u043D \u044D\u043A\u0438\u043D\u0447\u0438 \u0430\u0439\u0434\u0430',
},
},
select: {
loading: '\u0416\u04AF\u043A\u0442\u04E9\u043B\u04AF\u04AF\u0434\u04E9',
noMatch:
'\u0414\u0430\u043B \u043A\u0435\u043B\u0433\u0435\u043D \u043C\u0430\u0430\u043B\u044B\u043C\u0430\u0442\u0442\u0430\u0440',
noData:
'\u043C\u0430\u0430\u043B\u044B\u043C\u0430\u0442 \u0436\u043E\u043A',
placeholder: '\u0442\u0430\u043D\u0434\u043E\u043E',
},
cascader: {
noMatch:
'\u0414\u0430\u043B \u043A\u0435\u043B\u0433\u0435\u043D \u043C\u0430\u0430\u043B\u044B\u043C\u0430\u0442\u0442\u0430\u0440',
loading: '\u0416\u04AF\u043A\u0442\u04E9\u043B\u04AF\u04AF\u0434\u04E9',
placeholder: '\u0442\u0430\u043D\u0434\u043E\u043E',
noData:
'\u043C\u0430\u0430\u043B\u044B\u043C\u0430\u0442 \u0436\u043E\u043A',
},
pagination: {
goto: '\u041C\u0443\u0440\u0443\u043D\u043A\u0443',
pagesize: '\u0431\u0438\u0440',
total:
'\u0431\u04AF\u0442\u04AF\u043D\u0434\u04E9\u0439 {total} \u0441\u0430\u043D ',
pageClassifier: '\u0431\u0435\u0442',
},
messagebox: {
title: '\u0442\u0435\u0437',
confirm: '\u0431\u0435\u043B\u0433\u0438\u043B\u04E9\u04E9',
cancel:
'\u0436\u043E\u043A\u043A\u043E \u0447\u044B\u0433\u0430\u0440\u044B\u043B\u0434\u044B',
error:
'\u041C\u0430\u0430\u043B\u044B\u043C\u0430\u0442\u0442\u0430\u0440\u0434\u044B \u043A\u0438\u0440\u0433\u0438\u0437\u04AF\u04AF \u043C\u044B\u0439\u0437\u0430\u043C\u0434\u0443\u0443 \u044D\u043C\u0435\u0441!',
},
upload: {
deleteTip:
'\u0416\u043E\u043A \u043A\u044B\u043B\u0443\u0443 \u0431\u0430\u0441\u043A\u044B\u0447\u044B\u043D \u0431\u0430\u0441\u0443\u0443 \u0436\u043E\u043A',
delete: '\u0436\u043E\u043A \u043A\u044B\u043B\u0443\u0443',
preview:
'\u0416\u041C\u041A\u043D\u044B\u043D \u043A\u0430\u0440\u0442\u0438\u043D\u043A\u0438',
continue: '\u0436\u04AF\u043A\u0442\u04E9\u043F \u0431\u0435\u0440',
},
table: {
emptyText:
'\u043C\u0430\u0430\u043B\u044B\u043C\u0430\u0442 \u0436\u043E\u043A',
confirmFilter: '\u0447\u044B\u043F\u043A\u0430',
resetFilter:
'\u043A\u0430\u0439\u0440\u0430 \u043E\u0440\u043D\u043E\u0442\u0443\u0443',
clearFilter: '\u0431\u04AF\u0442\u043A\u04E9\u043D',
sumText:
'\u0411\u0430\u0440\u0434\u044B\u0433\u044B \u0431\u043E\u043B\u0443\u043F',
},
tree: {
emptyText:
'\u043C\u0430\u0430\u043B\u044B\u043C\u0430\u0442 \u0436\u043E\u043A',
},
transfer: {
noMatch:
'\u0414\u0430\u043B \u043A\u0435\u043B\u0433\u0435\u043D \u043C\u0430\u0430\u043B\u044B\u043C\u0430\u0442\u0442\u0430\u0440',
noData:
'\u043C\u0430\u0430\u043B\u044B\u043C\u0430\u0442 \u0436\u043E\u043A',
titles: [
'1 \u0442\u0438\u0437\u043C\u0435\u0441\u0438',
'2 \u0442\u0438\u0437\u043C\u0435\u0441\u0438',
],
filterPlaceholder:
'\u0421\u0443\u0440\u0430\u043D\u044B\u0447, \u0438\u0437\u0434\u04E9\u04E9 \u043A\u0438\u0440\u0435\u0442',
noCheckedFormat:
'\u0431\u04AF\u0442\u04AF\u043D\u0434\u04E9\u0439 {total} \u0441\u0430\u043D',
hasCheckedFormat:
'\u0422\u0430\u043D\u0434\u0430\u043B\u0433\u0430\u043D {checked}/{total} \u0441\u0430\u043D',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_29 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ky,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var lt$2 = {
name: 'lt',
el: {
colorpicker: {
confirm: 'OK',
clear: 'Valyti',
},
datepicker: {
now: 'Dabar',
today: '\u0160iandien',
cancel: 'At\u0161aukti',
clear: 'Valyti',
confirm: 'OK',
selectDate: 'Pasirink dat\u0105',
selectTime: 'Pasirink laik\u0105',
startDate: 'Data nuo',
startTime: 'Laikas nuo',
endDate: 'Data iki',
endTime: 'Laikas iki',
prevYear: 'Metai atgal',
nextYear: 'Metai \u012F priek\u012F',
prevMonth: 'M\u0117n. atgal',
nextMonth: 'M\u0117n. \u012F priek\u012F',
year: '',
month1: 'Sausis',
month2: 'Vasaris',
month3: 'Kovas',
month4: 'Balandis',
month5: 'Gegu\u017E\u0117',
month6: 'Bir\u017Eelis',
month7: 'Liepa',
month8: 'Rugpj\u016Btis',
month9: 'Rugs\u0117jis',
month10: 'Spalis',
month11: 'Lapkritis',
month12: 'Gruodis',
weeks: {
sun: 'S.',
mon: 'Pr.',
tue: 'A.',
wed: 'T.',
thu: 'K.',
fri: 'Pn.',
sat: '\u0160.',
},
months: {
jan: 'Sau',
feb: 'Vas',
mar: 'Kov',
apr: 'Bal',
may: 'Geg',
jun: 'Bir',
jul: 'Lie',
aug: 'Rugp',
sep: 'Rugs',
oct: 'Spa',
nov: 'Lap',
dec: 'Gruo',
},
},
select: {
loading: 'Kraunasi',
noMatch: 'Duomen\u0173 nerasta',
noData: 'N\u0117ra duomen\u0173',
placeholder: 'Pasirink',
},
cascader: {
noMatch: 'Duomen\u0173 nerasta',
loading: 'Kraunasi',
placeholder: 'Pasirink',
noData: 'N\u0117ra duomen\u0173',
},
pagination: {
goto: 'Eiti \u012F',
pagesize: '/p',
total: 'Viso {total}',
pageClassifier: '',
},
messagebox: {
title: '\u017Dinut\u0117',
confirm: 'OK',
cancel: 'At\u0161aukti',
error: 'Klaida \u012Fvestuose duomenyse',
},
upload: {
deleteTip: 'spauskite "Trinti" nor\u0117dami pa\u0161alinti',
delete: 'Trinti',
preview: 'Per\u017Ei\u016Br\u0117ti',
continue: 'Toliau',
},
table: {
emptyText: 'Duomen\u0173 nerasta',
confirmFilter: 'Patvirtinti',
resetFilter: 'Atstatyti',
clearFilter: 'I\u0161valyti',
sumText: 'Suma',
},
tree: {
emptyText: 'N\u0117ra duomen\u0173',
},
transfer: {
noMatch: 'Duomen\u0173 nerasta',
noData: 'N\u0117ra duomen\u0173',
titles: ['S\u0105ra\u0161as 1', 'S\u0105ra\u0161as 2'],
filterPlaceholder: '\u012Evesk rakta\u017Eod\u012F',
noCheckedFormat: 'Viso: {total}',
hasCheckedFormat: 'Pa\u017Eym\u0117ta {checked} i\u0161 {total}',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_30 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: lt$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var lv = {
name: 'lv',
el: {
colorpicker: {
confirm: 'Labi',
clear: 'Not\u012Br\u012Bt',
},
datepicker: {
now: 'Tagad',
today: '\u0160odien',
cancel: 'Atcelt',
clear: 'Not\u012Br\u012Bt',
confirm: 'Labi',
selectDate: 'Izv\u0113l\u0113ties datumu',
selectTime: 'Izv\u0113l\u0113ties laiku',
startDate: 'S\u0101kuma datums',
startTime: 'S\u0101kuma laiks',
endDate: 'Beigu datums',
endTime: 'Beigu laiks',
prevYear: 'Iepriek\u0161\u0113jais gads',
nextYear: 'N\u0101kamais gads',
prevMonth: 'Iepriek\u0161\u0113jais m\u0113nesis',
nextMonth: 'N\u0101kamais m\u0113nesis',
year: '',
month1: 'Janv\u0101ris',
month2: 'Febru\u0101ris',
month3: 'Marts',
month4: 'Apr\u012Blis',
month5: 'Maijs',
month6: 'J\u016Bnijs',
month7: 'J\u016Blijs',
month8: 'Augusts',
month9: 'Septembris',
month10: 'Oktobris',
month11: 'Novembris',
month12: 'Decembris',
weeks: {
sun: 'Sv',
mon: 'Pr',
tue: 'Ot',
wed: 'Tr',
thu: 'Ce',
fri: 'Pk',
sat: 'Se',
},
months: {
jan: 'Jan',
feb: 'Feb',
mar: 'Mar',
apr: 'Apr',
may: 'Mai',
jun: 'J\u016Bn',
jul: 'J\u016Bl',
aug: 'Aug',
sep: 'Sep',
oct: 'Okt',
nov: 'Nov',
dec: 'Dec',
},
},
select: {
loading: 'Iel\u0101d\u0113',
noMatch: 'Nav atbilsto\u0161u datu',
noData: 'Nav datu',
placeholder: 'Izv\u0113l\u0113ties',
},
cascader: {
noMatch: 'Nav atbilsto\u0161u datu',
loading: 'Iel\u0101d\u0113',
placeholder: 'Izv\u0113l\u0113ties',
noData: 'Nav datu',
},
pagination: {
goto: 'Iet uz',
pagesize: '/lapa',
total: 'Kop\u0101 {total}',
pageClassifier: '',
},
messagebox: {
title: 'Pazi\u0146ojums',
confirm: 'Labi',
cancel: 'Atcelt',
error: 'Neder\u012Bga ievade',
},
upload: {
deleteTip: 'Nospiediet dz\u0113st lai iz\u0146emtu',
delete: 'Dz\u0113st',
preview: 'Priek\u0161skat\u012Bt',
continue: 'Turpin\u0101t',
},
table: {
emptyText: 'Nav datu',
confirmFilter: 'Apstiprin\u0101t',
resetFilter: 'Atiestat\u012Bt',
clearFilter: 'Visi',
sumText: 'Summa',
},
tree: {
emptyText: 'Nav datu',
},
transfer: {
noMatch: 'Nav atbilsto\u0161u datu',
noData: 'Nav datu',
titles: ['Saraksts 1', 'Saraksts 2'],
filterPlaceholder: 'Ievad\u012Bt atsl\u0113gv\u0101rdu',
noCheckedFormat: '{total} vien\u012Bbas',
hasCheckedFormat: '{checked}/{total} atz\u012Bm\u0113ti',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_31 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: lv,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var mg = {
name: 'mg',
el: {
colorpicker: {
confirm: 'ENY',
clear: 'Fafana',
},
datepicker: {
now: 'Zao',
today: 'Androany',
cancel: 'Hanafoana',
clear: 'Fafana',
confirm: 'ENY',
selectDate: 'Misafidy daty',
selectTime: 'Misafidy ora',
startDate: 'Daty fanombohana',
startTime: 'Ora fanombohana',
endDate: 'Daty farany',
endTime: 'Ora farany',
prevYear: 'Taona teo aloha',
nextYear: 'Taona manaraka',
prevMonth: 'Volana teo aloha',
nextMonth: 'Volana manaraka',
year: '',
month1: 'Janoary',
month2: 'Febroary',
month3: 'Martsa',
month4: 'Aprily',
month5: 'May',
month6: 'Jona',
month7: 'Jolay',
month8: 'Aogositra',
month9: 'Septambra',
month10: 'Oktobra',
month11: 'Novambra',
month12: 'Desambra',
week: 'herinandro',
weeks: {
sun: 'Lad',
mon: 'Ala',
tue: 'Tal',
wed: 'Lar',
thu: 'Lak',
fri: 'Zom',
sat: 'Sab',
},
months: {
jan: 'Jan',
feb: 'Feb',
mar: 'Mar',
apr: 'Apr',
may: 'May',
jun: 'Jon',
jul: 'Jol',
aug: 'Aog',
sep: 'Sep',
oct: 'Okt',
nov: 'Nov',
dec: 'Des',
},
},
select: {
loading: 'Eo ampiandrasana',
noMatch: 'Tsy misy angona mifanentana',
noData: 'Tsy misy angona',
placeholder: 'Safidy',
},
cascader: {
noMatch: 'Tsy misy angona mifanentana',
loading: 'Eo ampiandrasana',
placeholder: 'Safidy',
noData: 'Tsy misy angona',
},
pagination: {
goto: 'Mandeha any',
pagesize: '/page',
total: 'Totaly {total}',
pageClassifier: '',
deprecationWarning:
'Fampiasana tsy ampiasaina intsony no hita, azafady mba jereo ny tahirin-kevitra el-pagination raha mila fanazavana fanampiny',
},
messagebox: {
title: 'Hafatra',
confirm: 'ENY',
cancel: 'Hanafoana',
error: 'Fampidirana tsy ara-dal\xE0na',
},
upload: {
deleteTip: 'tsindrio fafana raha hanala',
delete: 'Fafana',
preview: 'Topi-maso',
continue: 'Hanoy',
},
table: {
emptyText: 'Tsy misy angona',
confirmFilter: 'Manamarina',
resetFilter: 'Averina',
clearFilter: 'Rehetra',
sumText: 'Atambatra',
},
tree: {
emptyText: 'Tsy misy angona',
},
transfer: {
noMatch: 'Tsy misy angona mifanentana',
noData: 'Tsy misy angona',
titles: ['Lisitra 1', 'Lisitra 2'],
filterPlaceholder: 'Ampidiro teny fanalahidy',
noCheckedFormat: '{total} zavatra',
hasCheckedFormat: '{checked}/{total} voamarina',
},
image: {
error: 'TSY NAHOMBY',
},
pageHeader: {
title: 'Miverina',
},
popconfirm: {
confirmButtonText: 'Eny',
cancelButtonText: 'Tsy',
},
},
}
var __glob_8_32 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: mg,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var mn = {
name: 'mn',
el: {
colorpicker: {
confirm: '\u0422\u0438\u0439\u043C',
clear: '\u0426\u044D\u0432\u044D\u0440\u043B\u044D\u0445',
},
datepicker: {
now: '\u041E\u0434\u043E\u043E',
today: '\u04E8\u043D\u04E9\u04E9\u0434\u04E9\u0440',
cancel: '\u0411\u043E\u043B\u0438\u0445',
clear: '\u0426\u044D\u0432\u044D\u0440\u043B\u044D\u0445',
confirm: '\u0422\u0438\u0439\u043C',
selectDate:
'\u041E\u0433\u043D\u043E\u043E\u0433 \u0441\u043E\u043D\u0433\u043E',
selectTime:
'\u0426\u0430\u0433\u0438\u0439\u0433 \u0441\u043E\u043D\u0433\u043E',
startDate:
'\u042D\u0445\u043B\u044D\u0445 \u043E\u0433\u043D\u043E\u043E',
startTime: '\u042D\u0445\u043B\u044D\u0445 \u0446\u0430\u0433',
endDate:
'\u0414\u0443\u0443\u0441\u0430\u0445 \u043E\u0433\u043D\u043E\u043E',
endTime: '\u0414\u0443\u0443\u0441\u0430\u0445 \u0446\u0430\u0433',
prevYear: '\u04E8\u043C\u043D\u04E9\u0445 \u0436\u0438\u043B',
nextYear: '\u0414\u0430\u0440\u0430\u0430 \u0436\u0438\u043B',
prevMonth: '\u04E8\u043C\u043D\u04E9\u0445 \u0441\u0430\u0440',
nextMonth: '\u0414\u0430\u0440\u0430\u0430 \u0441\u0430\u0440',
year: '\u043E\u043D',
month1: '1 \u0441\u0430\u0440',
month2: '2 \u0441\u0430\u0440',
month3: '3 \u0441\u0430\u0440',
month4: '4 \u0441\u0430\u0440',
month5: '5 \u0441\u0430\u0440',
month6: '6 \u0441\u0430\u0440',
month7: '7 \u0441\u0430\u0440',
month8: '8 \u0441\u0430\u0440',
month9: '9 \u0441\u0430\u0440',
month10: '10 \u0441\u0430\u0440',
month11: '11 \u0441\u0430\u0440',
month12: '12 \u0441\u0430\u0440',
week: '\u0414\u043E\u043B\u043E\u043E \u0445\u043E\u043D\u043E\u0433',
weeks: {
sun: '\u041D\u044F\u043C',
mon: '\u0414\u0430\u0432',
tue: '\u041C\u044F\u0433',
wed: '\u041B\u0445\u0430',
thu: '\u041F\u04AF\u0440',
fri: '\u0411\u0430\u0430',
sat: '\u0411\u044F\u043C',
},
months: {
jan: '1 \u0441\u0430\u0440',
feb: '2 \u0441\u0430\u0440',
mar: '3 \u0441\u0430\u0440',
apr: '4 \u0441\u0430\u0440',
may: '5 \u0441\u0430\u0440',
jun: '6 \u0441\u0430\u0440',
jul: '7 \u0441\u0430\u0440',
aug: '8 \u0441\u0430\u0440',
sep: '9 \u0441\u0430\u0440',
oct: '10 \u0441\u0430\u0440',
nov: '11 \u0441\u0430\u0440',
dec: '12 \u0441\u0430\u0440',
},
},
select: {
loading:
'\u0410\u0447\u0430\u0430\u043B\u0436 \u0431\u0430\u0439\u043D\u0430',
noMatch:
'\u0422\u043E\u0445\u0438\u0440\u043E\u0445 \u04E9\u0433\u04E9\u0433\u0434\u04E9\u043B \u0431\u0430\u0439\u0445\u0433\u04AF\u0439',
noData:
'\u04E8\u0433\u04E9\u0433\u0434\u04E9\u043B \u0431\u0430\u0439\u0445\u0433\u04AF\u0439',
placeholder: '\u0421\u043E\u043D\u0433\u043E\u0445',
},
cascader: {
noMatch:
'\u0422\u043E\u0445\u0438\u0440\u043E\u0445 \u04E9\u0433\u04E9\u0433\u0434\u04E9\u043B \u0431\u0430\u0439\u0445\u0433\u04AF\u0439',
loading:
'\u0410\u0447\u0430\u0430\u043B\u0436 \u0431\u0430\u0439\u043D\u0430',
placeholder: '\u0421\u043E\u043D\u0433\u043E\u0445',
noData:
'\u04E8\u0433\u04E9\u0433\u0434\u04E9\u043B \u0431\u0430\u0439\u0445\u0433\u04AF\u0439',
},
pagination: {
goto: '\u041E\u0447\u0438\u0445',
pagesize: '/\u0445\u0443\u0443\u0434\u0430\u0441',
total: '\u041D\u0438\u0439\u0442 {total}',
pageClassifier: '',
},
messagebox: {
title: '\u0417\u0443\u0440\u0432\u0430\u0441',
confirm: '\u0422\u0438\u0439\u043C',
cancel: '\u0411\u043E\u043B\u0438\u0445',
error: '\u0411\u0443\u0440\u0443\u0443 \u0443\u0442\u0433\u0430',
},
upload: {
deleteTip:
'\u0423\u0441\u0442\u0433\u0430\u0445\u044B\u043D \u0434\u0430\u0440\u0436 \u0430\u0440\u0438\u043B\u0433\u0430',
delete: '\u0423\u0441\u0442\u0433\u0430\u0445',
preview: '\u04E8\u043C\u043D\u04E9\u0445',
continue:
'\u04AE\u0440\u0433\u044D\u043B\u0436\u043B\u04AF\u04AF\u043B\u044D\u0445',
},
table: {
emptyText:
'\u04E8\u0433\u04E9\u0433\u0434\u04E9\u043B \u0431\u0430\u0439\u0445\u0433\u04AF\u0439',
confirmFilter: '\u0417\u04E9\u0432\u0448\u04E9\u04E9\u0440\u04E9\u0445',
resetFilter: '\u0426\u044D\u0432\u044D\u0440\u043B\u044D\u0445',
clearFilter: '\u0411\u04AF\u0433\u0434',
sumText: '\u041D\u0438\u0439\u0442',
},
tree: {
emptyText:
'\u04E8\u0433\u04E9\u0433\u0434\u04E9\u043B \u0431\u0430\u0439\u0445\u0433\u04AF\u0439',
},
transfer: {
noMatch:
'\u0422\u043E\u0445\u0438\u0440\u043E\u0445 \u04E9\u0433\u04E9\u0433\u0434\u04E9\u043B \u0431\u0430\u0439\u0445\u0433\u04AF\u0439',
noData:
'\u04E8\u0433\u04E9\u0433\u0434\u04E9\u043B \u0431\u0430\u0439\u0445\u0433\u04AF\u0439',
titles: [
'\u0416\u0430\u0433\u0441\u0430\u0430\u043B\u0442 1',
'\u0416\u0430\u0433\u0441\u0430\u0430\u043B\u0442 2',
],
filterPlaceholder:
'\u0423\u0442\u0433\u0430 \u043E\u0440\u0443\u0443\u043B',
noCheckedFormat: '{total} \u04E9\u0433\u04E9\u0433\u0434\u04E9\u043B',
hasCheckedFormat:
'{checked}/{total} \u0441\u043E\u043D\u0433\u043E\u0441\u043E\u043D',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_33 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: mn,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var nbNo = {
name: 'nb-no',
el: {
colorpicker: {
confirm: 'OK',
clear: 'T\xF8m',
},
datepicker: {
now: 'N\xE5',
today: 'I dag',
cancel: 'Avbryt',
clear: 'T\xF8m',
confirm: 'OK',
selectDate: 'Velg dato',
selectTime: 'Velg tidspunkt',
startDate: 'Startdato',
startTime: 'Starttidspunkt',
endDate: 'Sluttdato',
endTime: 'Sluttidspunkt',
prevYear: 'I fjor',
nextYear: 'Neste \xE5r',
prevMonth: 'Forrige M\xE5ned',
nextMonth: 'Neste M\xE5ned',
year: '',
month1: 'Januar',
month2: 'Februar',
month3: 'Mars',
month4: 'April',
month5: 'Mai',
month6: 'Juni',
month7: 'Juli',
month8: 'August',
month9: 'September',
month10: 'Oktober',
month11: 'November',
month12: 'Desember',
week: 'uke',
weeks: {
sun: 'S\xF8n',
mon: 'Man',
tue: 'Tir',
wed: 'Ons',
thu: 'Tor',
fri: 'Fre',
sat: 'L\xF8r',
},
months: {
jan: 'Jan',
feb: 'Feb',
mar: 'Mar',
apr: 'Apr',
may: 'Mai',
jun: 'Jun',
jul: 'Jul',
aug: 'Aug',
sep: 'Sep',
oct: 'Okt',
nov: 'Nov',
dec: 'Des',
},
},
select: {
loading: 'Laster',
noMatch: 'Ingen samsvarende resulater',
noData: 'Ingen resulater',
placeholder: 'Velg',
},
cascader: {
noMatch: 'Ingen samsvarende resultater',
loading: 'Laster',
placeholder: 'Velg',
noData: 'Ingen resultater',
},
pagination: {
goto: 'G\xE5 til',
pagesize: '/side',
total: 'Total {total}',
pageClassifier: '',
},
messagebox: {
confirm: 'OK',
cancel: 'Avbryt',
error: 'Ugyldig input',
},
upload: {
deleteTip: 'trykk p\xE5 x for \xE5 slette',
delete: 'Slett',
preview: 'Forh\xE5ndsvisning',
continue: 'Fortsett',
},
table: {
emptyText: 'Ingen Data',
confirmFilter: 'Bekreft',
resetFilter: 'Tilbakestill',
clearFilter: 'Alle',
sumText: 'Sum',
},
tree: {
emptyText: 'Ingen Data',
},
transfer: {
noMatch: 'Ingen samsvarende data',
noData: 'Ingen data',
titles: ['Liste 1', 'Liste 2'],
filterPlaceholder: 'Skriv inn n\xF8kkelord',
noCheckedFormat: '{total} gjenstander',
hasCheckedFormat: '{checked}/{total} valgt',
},
image: {
error: 'FEILET',
},
pageHeader: {
title: 'Tilbake',
},
popconfirm: {
confirmButtonText: 'Ja',
cancelButtonText: 'Nei',
},
},
}
var __glob_8_34 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: nbNo,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var nl = {
name: 'nl',
el: {
colorpicker: {
confirm: 'Bevestig',
clear: 'Wissen',
},
datepicker: {
now: 'Nu',
today: 'Vandaag',
cancel: 'Annuleren',
clear: 'Legen',
confirm: 'Bevestig',
selectDate: 'Selecteer datum',
selectTime: 'Selecteer tijd',
startDate: 'Startdatum',
startTime: 'Starttijd',
endDate: 'Einddatum',
endTime: 'Eindtijd',
prevYear: 'Vorig jaar',
nextYear: 'Volgend jaar',
prevMonth: 'Vorige maand',
nextMonth: 'Volgende maand',
year: '',
month1: 'januari',
month2: 'februari',
month3: 'maart',
month4: 'april',
month5: 'mei',
month6: 'juni',
month7: 'juli',
month8: 'augustus',
month9: 'september',
month10: 'oktober',
month11: 'november',
month12: 'december',
weeks: {
sun: 'Zo',
mon: 'Ma',
tue: 'Di',
wed: 'Wo',
thu: 'Do',
fri: 'Vr',
sat: 'Za',
},
months: {
jan: 'jan',
feb: 'feb',
mar: 'maa',
apr: 'apr',
may: 'mei',
jun: 'jun',
jul: 'jul',
aug: 'aug',
sep: 'sep',
oct: 'okt',
nov: 'nov',
dec: 'dec',
},
},
select: {
loading: 'Laden',
noMatch: 'Geen overeenkomende resultaten',
noData: 'Geen data',
placeholder: 'Selecteer',
},
cascader: {
noMatch: 'Geen overeenkomende resultaten',
loading: 'Laden',
placeholder: 'Selecteer',
noData: 'Geen data',
},
pagination: {
goto: 'Ga naar',
pagesize: '/pagina',
total: 'Totaal {total}',
pageClassifier: '',
},
messagebox: {
title: 'Bericht',
confirm: 'Bevestig',
cancel: 'Annuleren',
error: 'Ongeldige invoer',
},
upload: {
deleteTip: 'Kies verwijder om te wissen',
delete: 'Verwijder',
preview: 'Voorbeeld',
continue: 'Doorgaan',
},
table: {
emptyText: 'Geen data',
confirmFilter: 'Bevestigen',
resetFilter: 'Reset',
clearFilter: 'Alles',
sumText: 'Som',
},
tree: {
emptyText: 'Geen data',
},
transfer: {
noMatch: 'Geen overeenkomende resultaten',
noData: 'Geen data',
titles: ['Lijst 1', 'Lijst 2'],
filterPlaceholder: 'Geef zoekwoerd',
noCheckedFormat: '{total} items',
hasCheckedFormat: '{checked}/{total} geselecteerd',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_35 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: nl,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var pa = {
name: 'pa',
el: {
colorpicker: {
confirm: '\u062A\u0627\u06CC\u06CC\u062F',
clear: '\u067E\u0627\u06A9\u0648\u0644',
},
datepicker: {
now: '\u0627\u0648\u0633',
today: '\u0646\u0646',
cancel: '\u0631\u062F\u0648\u0644',
clear: '\u067E\u0627\u06A9\u0648\u0644',
confirm: '\u062A\u0627\u06CC\u06CC\u062F',
selectDate: '\u0646\u06CC\u067C\u0647 \u0648\u067C\u0627\u06A9\u0626',
selectTime: '\u0648\u062E\u062A \u0648\u067C\u0627\u06A9\u0626',
startDate: '\u067E\u06CC\u0644 \u0646\u06CC\u067C\u0647',
startTime: '\u062F \u067E\u064A\u0644 \u0648\u062E\u062A',
endDate: '\u062F \u067E\u0627\u06CC \u0646\u06CC\u067C\u0647',
endTime: '\u062F \u067E\u0627\u06CC \u0648\u062E\u062A',
prevYear: '\u062A\u06CC\u0631 \u06A9\u0627\u0644',
nextYear:
'\u0631\u0627\u062A\u0644\u0648\u0646\u06A9\u06CC \u06A9\u0627\u0644',
prevMonth: '\u062A\u06CC\u0631\u0647 \u0645\u06CC\u0627\u0634\u062A',
nextMonth:
'\u0631\u0627\u062A\u0644\u0648\u0646\u06A9\u06D0 \u0645\u06CC\u0627\u0634\u062A',
year: '\u06A9\u0627\u0644',
month1: '\u062C\u0646\u0648\u0631\u064A',
month2: '\u0641\u0628\u0631\u0648\u0631\u064A',
month3: '\u0645\u0627\u0631\u0686',
month4: '\u0627\u067E\u0631\u06CC\u0644',
month5: '\u0645\u06CC',
month6: '\u062C\u0648\u0646',
month7: '\u062C\u0648\u0644\u0627\u06CC',
month8: '\u0627\u06AB\u0633\u062A',
month9: '\u0633\u067E\u062A\u0645\u0628\u0631',
month10: '\u0627\u06A9\u062A\u0648\u0628\u0631',
month11: '\u0646\u0648\u0645\u0628\u0631',
month12: '\u062F\u0633\u0645\u0628\u0631',
weeks: {
sun: '\u06CC\u06A9\u0634\u0646\u0628\u0647',
mon: '\u062F\u0648\u0634\u0646\u0628\u0647',
tue: '\u0633\u0647\u200B \u0634\u0646\u0628\u0647',
wed: '\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647',
thu: '\u067E\u0646\u062C\u200B\u0634\u0646\u0628\u0647',
fri: '\u062C\u0645\u0639\u0647',
sat: '\u0634\u0646\u0628\u0647',
},
months: {
jan: '\u062C\u0646\u0648\u0631\u064A',
feb: '\u0641\u0628\u0631\u0648\u0631\u064A',
mar: '\u0645\u0627\u0631\u0686',
apr: '\u0627\u067E\u0631\u06CC\u0644',
may: '\u0645\u06CC',
jun: '\u062C\u0648\u0646',
jul: '\u062C\u0648\u0644\u0627\u06CC',
aug: '\u0627\u06AB\u0633\u062A',
sep: '\u0633\u067E\u062A\u0645\u0628\u0631',
oct: '\u0627\u06A9\u062A\u0648\u0628\u0631',
nov: '\u0646\u0648\u0645\u0628\u0631',
dec: '\u062F\u0633\u0645\u0628\u0631',
},
},
select: {
loading: '\u0628\u0627\u0631 \u06A9\u0648\u0644',
noMatch:
'\u0647\u06CC\u0685\u0647 \u0648\u0646\u0647 \u0645\u0648\u0646\u062F\u0644 \u0634\u0648\u0644',
noData:
'\u0647\u06CC\u0685 \u0645\u0639\u0644\u0648\u0645\u0627\u062A \u0646\u0634\u062A\u0647',
placeholder: '\u0681\u0627\u06CC \u0644\u0631\u0648\u0646\u06A9\u06CC',
},
cascader: {
noMatch:
'\u0647\u06CC\u0685\u0647 \u0648\u0646\u0647 \u0645\u0648\u0646\u062F\u0644 \u0634\u0648\u0644',
loading: '\u0628\u0627\u0631 \u06A9\u0648\u0644',
placeholder: '\u0681\u0627\u06CC \u0644\u0631\u0648\u0646\u06A9\u06CC',
noData:
'\u0647\u06CC\u0685 \u0645\u0639\u0644\u0648\u0645\u0627\u062A \u0646\u0634\u062A\u0647',
},
pagination: {
goto: '\u0648\u0631\u062A\u06AB',
pagesize:
'/\u062F \u067E\u0627\u06BC\u06D0 \u0627\u0646\u062F\u0627\u0632\u0647',
total: '\u0645\u062C\u0645\u0648\u0639\u0647 {total}',
pageClassifier: '',
},
messagebox: {
title: '\u0639\u0646\u0648\u0627\u0646',
confirm: '\u062A\u0627\u06CC\u06CC\u062F',
cancel: '\u0644\u063A\u0648\u0647 \u06A9\u0648\u0644',
error: '\u062A\u064A\u0631\u0648\u062A\u0646\u0647',
},
upload: {
deleteTip:
'\u062F \u062D\u0630\u0641 \u06A9\u0648\u0644\u0648 \u0644\u067E\u0627\u0631\u0647 \u067E\u0627\u06A9\u0647 \u062A\u06BC\u06CD \u0641\u0634\u0627\u0631 \u06A9\u0693\u0626',
delete: '\u0693\u0646\u06AB\u0648\u0644',
preview: '\u0645\u062E\u06A9\u062A\u0646\u0647',
continue: '\u0627\u062F\u0627\u0645\u0647',
},
table: {
emptyText:
'\u0647\u06CC\u0685 \u0645\u0639\u0644\u0648\u0645\u0627\u062A \u0648\u0646\u0647 \u0645\u0648\u0646\u062F\u0644 \u0634\u0648\u0644',
confirmFilter: '\u062A\u0627\u06CC\u06CC\u062F',
resetFilter: '\u067E\u0627\u06A9\u0648\u0644',
clearFilter: '\u067C\u0648\u0644',
sumText: '\u0645\u062C\u0645\u0648\u0639\u0647',
},
tree: {
emptyText:
'\u0647\u06CC\u0685 \u0645\u0639\u0644\u0648\u0645\u0627\u062A \u0648\u0646\u0647 \u0645\u0648\u0646\u062F\u0644 \u0634\u0648\u0644',
},
transfer: {
noMatch:
'\u0647\u06CC\u0685\u0647 \u0648\u0646\u0647 \u0645\u0648\u0646\u062F\u0644 \u0634\u0648\u0644',
noData:
'\u0647\u06CC\u0685 \u0645\u0639\u0644\u0648\u0645\u0627\u062A \u0646\u0634\u062A\u0647',
titles: ['\u0644\u06CC\u0633\u067C 1', '\u0644\u06CC\u0633\u067C 2'],
filterPlaceholder:
'\u062F \u0645\u062A\u0646 \u06A9\u0644\u06CC\u0645\u06D0 \u062F\u0646\u0646\u0647 \u06A9\u0693\u0626',
noCheckedFormat: '{total} \u062A\u0648\u06A9\u064A',
hasCheckedFormat:
'{checked} \u062A\u0648\u06A9\u064A \u0627\u0632 {total} \u062A\u0648\u06A9\u064A \u067C\u0627\u06A9\u0644 \u0634\u0648\u06CC \u062F\u064A',
},
image: {
error:
'\u062F \u0627\u0646\u0681\u0648\u0631 \u067E\u0648\u0631\u062A\u0647 \u06A9\u0648\u0644\u0648 \u06A9\u06D0 \u0633\u062A\u0648\u0646\u0632\u0647',
},
pageHeader: {
title: '\u0628\u06CC\u0631\u062A\u0647 \u0631\u0627\u062A\u06AB',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_36 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: pa,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var pl = {
name: 'pl',
el: {
colorpicker: {
confirm: 'OK',
clear: 'Wyczy\u015B\u0107',
},
datepicker: {
now: 'Teraz',
today: 'Dzisiaj',
cancel: 'Anuluj',
clear: 'Wyczy\u015B\u0107',
confirm: 'OK',
selectDate: 'Wybierz dat\u0119',
selectTime: 'Wybierz godzin\u0119',
startDate: 'Data pocz\u0105tkowa',
startTime: 'Godzina pocz\u0105tkowa',
endDate: 'Data ko\u0144cowa',
endTime: 'Czas ko\u0144cowa',
prevYear: 'Poprzedni rok',
nextYear: 'Nast\u0119pny rok',
prevMonth: 'Poprzedni miesi\u0105c',
nextMonth: 'Nast\u0119pny miesi\u0105c',
year: 'rok',
month1: 'stycze\u0144',
month2: 'luty',
month3: 'marzec',
month4: 'kwiecie\u0144',
month5: 'maj',
month6: 'czerwiec',
month7: 'lipiec',
month8: 'sierpie\u0144',
month9: 'wrzesie\u0144',
month10: 'pa\u017Adziernik',
month11: 'listopad',
month12: 'grudzie\u0144',
week: 'tydzie\u0144',
weeks: {
sun: 'niedz.',
mon: 'pon.',
tue: 'wt.',
wed: '\u015Br.',
thu: 'czw.',
fri: 'pt.',
sat: 'sob.',
},
months: {
jan: 'STY',
feb: 'LUT',
mar: 'MAR',
apr: 'KWI',
may: 'MAJ',
jun: 'CZE',
jul: 'LIP',
aug: 'SIE',
sep: 'WRZ',
oct: 'PA\u0179',
nov: 'LIS',
dec: 'GRU',
},
},
select: {
loading: '\u0141adowanie',
noMatch: 'Brak dopasowa\u0144',
noData: 'Brak danych',
placeholder: 'Wybierz',
},
cascader: {
noMatch: 'Brak dopasowa\u0144',
loading: '\u0141adowanie',
placeholder: 'Wybierz',
noData: 'Brak danych',
},
pagination: {
goto: 'Id\u017A do',
pagesize: '/stron\u0119',
total: 'Wszystkich {total}',
pageClassifier: '',
},
messagebox: {
title: 'Wiadomo\u015B\u0107',
confirm: 'OK',
cancel: 'Anuluj',
error: 'Wiadomo\u015B\u0107 zawiera niedozwolone znaki',
},
upload: {
deleteTip: 'kliknij kasuj aby usun\u0105\u0107',
delete: 'Kasuj',
preview: 'Podgl\u0105d',
continue: 'Kontynuuj',
},
table: {
emptyText: 'Brak danych',
confirmFilter: 'Potwierd\u017A',
resetFilter: 'Resetuj',
clearFilter: 'Wszystko',
sumText: 'Razem',
},
tree: {
emptyText: 'Brak danych',
},
transfer: {
noMatch: 'Brak dopasowa\u0144',
noData: 'Brak danych',
titles: ['Lista 1', 'Lista 2'],
filterPlaceholder: 'Wpisz szukan\u0105 fraz\u0119',
noCheckedFormat: 'razem: {total}',
hasCheckedFormat: 'wybranych: {checked}/{total}',
},
image: {
error: 'B\u0141\u0104D',
},
pageHeader: {
title: 'Wstecz',
},
popconfirm: {
confirmButtonText: 'Tak',
cancelButtonText: 'Nie',
},
},
}
var __glob_8_37 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: pl,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ptBr = {
name: 'pt-br',
el: {
colorpicker: {
confirm: 'Confirmar',
clear: 'Limpar',
},
datepicker: {
now: 'Agora',
today: 'Hoje',
cancel: 'Cancelar',
clear: 'Limpar',
confirm: 'Confirmar',
selectDate: 'Selecione a data',
selectTime: 'Selecione a hora',
startDate: 'Data inicial',
startTime: 'Hora inicial',
endDate: 'Data final',
endTime: 'Hora final',
prevYear: 'Ano anterior',
nextYear: 'Pr\xF3ximo ano',
prevMonth: 'M\xEAs anterior',
nextMonth: 'Pr\xF3ximo m\xEAs',
year: '',
month1: 'Janeiro',
month2: 'Fevereiro',
month3: 'Mar\xE7o',
month4: 'Abril',
month5: 'Maio',
month6: 'Junho',
month7: 'Julho',
month8: 'Agosto',
month9: 'Setembro',
month10: 'Outubro',
month11: 'Novembro',
month12: 'Dezembro',
weeks: {
sun: 'Dom',
mon: 'Seg',
tue: 'Ter',
wed: 'Qua',
thu: 'Qui',
fri: 'Sex',
sat: 'Sab',
},
months: {
jan: 'Jan',
feb: 'Fev',
mar: 'Mar',
apr: 'Abr',
may: 'Mai',
jun: 'Jun',
jul: 'Jul',
aug: 'Ago',
sep: 'Set',
oct: 'Out',
nov: 'Nov',
dec: 'Dez',
},
},
select: {
loading: 'Carregando',
noMatch: 'Sem resultados',
noData: 'Sem dados',
placeholder: 'Selecione',
},
cascader: {
noMatch: 'Sem resultados',
loading: 'Carregando',
placeholder: 'Selecione',
noData: 'Sem dados',
},
pagination: {
goto: 'Ir para',
pagesize: '/p\xE1gina',
total: 'Total {total}',
pageClassifier: '',
},
messagebox: {
title: 'Mensagem',
confirm: 'Confirmar',
cancel: 'Cancelar',
error: 'Erro!',
},
upload: {
deleteTip: 'aperte delete para apagar',
delete: 'Apagar',
preview: 'Pr\xE9-visualizar',
continue: 'Continuar',
},
table: {
emptyText: 'Sem dados',
confirmFilter: 'Confirmar',
resetFilter: 'Limpar',
clearFilter: 'Todos',
sumText: 'Total',
},
tree: {
emptyText: 'Sem dados',
},
transfer: {
noMatch: 'Sem resultados',
noData: 'Sem dados',
titles: ['Lista 1', 'Lista 2'],
filterPlaceholder: 'Digite uma palavra-chave',
noCheckedFormat: '{total} itens',
hasCheckedFormat: '{checked}/{total} selecionados',
},
image: {
error: 'Erro ao carregar imagem',
},
pageHeader: {
title: 'Voltar',
},
popconfirm: {
confirmButtonText: 'Sim',
cancelButtonText: 'N\xE3o',
},
},
}
var __glob_8_38 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ptBr,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var pt$1 = {
name: 'pt',
el: {
colorpicker: {
confirm: 'Confirmar',
clear: 'Limpar',
},
datepicker: {
now: 'Agora',
today: 'Hoje',
cancel: 'Cancelar',
clear: 'Limpar',
confirm: 'Confirmar',
selectDate: 'Selecione a data',
selectTime: 'Selecione a hora',
startDate: 'Data de inicio',
startTime: 'Hora de inicio',
endDate: 'Data de fim',
endTime: 'Hora de fim',
prevYear: 'Previous Year',
nextYear: 'Next Year',
prevMonth: 'Previous Month',
nextMonth: 'Next Month',
year: '',
month1: 'Janeiro',
month2: 'Fevereiro',
month3: 'Mar\xE7o',
month4: 'Abril',
month5: 'Maio',
month6: 'Junho',
month7: 'Julho',
month8: 'Agosto',
month9: 'Setembro',
month10: 'Outubro',
month11: 'Novembro',
month12: 'Dezembro',
weeks: {
sun: 'Dom',
mon: 'Seg',
tue: 'Ter',
wed: 'Qua',
thu: 'Qui',
fri: 'Sex',
sat: 'Sab',
},
months: {
jan: 'Jan',
feb: 'Fev',
mar: 'Mar',
apr: 'Abr',
may: 'Mai',
jun: 'Jun',
jul: 'Jul',
aug: 'Ago',
sep: 'Set',
oct: 'Out',
nov: 'Nov',
dec: 'Dez',
},
},
select: {
loading: 'A carregar',
noMatch: 'Sem correspond\xEAncia',
noData: 'Sem dados',
placeholder: 'Selecione',
},
cascader: {
noMatch: 'Sem correspond\xEAncia',
loading: 'A carregar',
placeholder: 'Selecione',
noData: 'Sem dados',
},
pagination: {
goto: 'Ir para',
pagesize: '/pagina',
total: 'Total {total}',
pageClassifier: '',
},
messagebox: {
title: 'Mensagem',
confirm: 'Confirmar',
cancel: 'Cancelar',
error: 'Erro!',
},
upload: {
deleteTip: 'press delete to remove',
delete: 'Apagar',
preview: 'Previsualizar',
continue: 'Continuar',
},
table: {
emptyText: 'Sem dados',
confirmFilter: 'Confirmar',
resetFilter: 'Limpar',
clearFilter: 'Todos',
sumText: 'Sum',
},
tree: {
emptyText: 'Sem dados',
},
transfer: {
noMatch: 'Sem correspond\xEAncia',
noData: 'Sem dados',
titles: ['List 1', 'List 2'],
filterPlaceholder: 'Enter keyword',
noCheckedFormat: '{total} items',
hasCheckedFormat: '{checked}/{total} checked',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_39 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: pt$1,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ro = {
name: 'ro',
el: {
colorpicker: {
confirm: 'OK',
clear: '\u0218terge',
},
datepicker: {
now: 'Acum',
today: 'Azi',
cancel: 'Anuleaz\u0103',
clear: '\u0218terge',
confirm: 'OK',
selectDate: 'Selecteaz\u0103 data',
selectTime: 'Selecteaz\u0103 ora',
startDate: 'Data de \xEEnceput',
startTime: 'Ora de \xEEnceput',
endDate: 'Data de sf\xE2r\u0219it',
endTime: 'Ora de sf\xE2r\u0219it',
prevYear: 'Anul trecut',
nextYear: 'Anul urm\u0103tor',
prevMonth: 'Luna trecut\u0103',
nextMonth: 'Luna urm\u0103toare',
year: '',
month1: 'Ianuarie',
month2: 'Februarie',
month3: 'Martie',
month4: 'Aprilie',
month5: 'Mai',
month6: 'Iunie',
month7: 'Iulie',
month8: 'August',
month9: 'Septembrie',
month10: 'Octombrie',
month11: 'Noiembrie',
month12: 'Decembrie',
weeks: {
sun: 'Du',
mon: 'Lu',
tue: 'Ma',
wed: 'Mi',
thu: 'Jo',
fri: 'Vi',
sat: 'S\xE2',
},
months: {
jan: 'Ian',
feb: 'Feb',
mar: 'Mar',
apr: 'Apr',
may: 'Mai',
jun: 'Iun',
jul: 'Iul',
aug: 'Aug',
sep: 'Sep',
oct: 'Oct',
nov: 'Noi',
dec: 'Dec',
},
},
select: {
loading: 'Se \xEEncarc\u0103',
noMatch: 'Nu exist\u0103 date potrivite',
noData: 'Nu exist\u0103 date',
placeholder: 'Selecteaz\u0103',
},
cascader: {
noMatch: 'Nu exist\u0103 date potrivite',
loading: 'Se \xEEncarc\u0103',
placeholder: 'Selecteaz\u0103',
noData: 'Nu exist\u0103 date',
},
pagination: {
goto: 'Go to',
pagesize: '/pagina',
total: 'Total {total}',
pageClassifier: '',
},
messagebox: {
title: 'Mesaj',
confirm: 'OK',
cancel: 'Anuleaz\u0103',
error: 'Date introduse eronate',
},
upload: {
deleteTip: 'ap\u0103sa\u021Bi pe \u0219terge\u021Bi pentru a elimina',
delete: '\u0219terge',
preview: 'previzualizare',
continue: 'continu\u0103',
},
table: {
emptyText: 'Nu exist\u0103 date',
confirmFilter: 'Confirm\u0103',
resetFilter: 'Reseteaz\u0103',
clearFilter: 'Tot',
sumText: 'Suma',
},
tree: {
emptyText: 'Nu exist\u0103 date',
},
transfer: {
noMatch: 'Nu exist\u0103 date potrivite',
noData: 'Nu exist\u0103 date',
titles: ['Lista 1', 'Lista 2'],
filterPlaceholder: 'Introduce\u021Bi cuv\xE2ntul cheie',
noCheckedFormat: '{total} elemente',
hasCheckedFormat: '{checked}/{total} verificate',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_40 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ro,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ru = {
name: 'ru',
el: {
colorpicker: {
confirm: 'OK',
clear: '\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C',
},
datepicker: {
now: '\u0421\u0435\u0439\u0447\u0430\u0441',
today: '\u0421\u0435\u0433\u043E\u0434\u043D\u044F',
cancel: '\u041E\u0442\u043C\u0435\u043D\u0430',
clear: '\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C',
confirm: 'OK',
selectDate:
'\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0434\u0430\u0442\u0443',
selectTime:
'\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0440\u0435\u043C\u044F',
startDate:
'\u0414\u0430\u0442\u0430 \u043D\u0430\u0447\u0430\u043B\u0430',
startTime:
'\u0412\u0440\u0435\u043C\u044F \u043D\u0430\u0447\u0430\u043B\u0430',
endDate:
'\u0414\u0430\u0442\u0430 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F',
endTime:
'\u0412\u0440\u0435\u043C\u044F \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F',
prevYear:
'\u041F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0438\u0439 \u0433\u043E\u0434',
nextYear:
'\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u0433\u043E\u0434',
prevMonth:
'\u041F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0438\u0439 \u043C\u0435\u0441\u044F\u0446',
nextMonth:
'\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u043C\u0435\u0441\u044F\u0446',
year: '',
month1: '\u042F\u043D\u0432\u0430\u0440\u044C',
month2: '\u0424\u0435\u0432\u0440\u0430\u043B\u044C',
month3: '\u041C\u0430\u0440\u0442',
month4: '\u0410\u043F\u0440\u0435\u043B\u044C',
month5: '\u041C\u0430\u0439',
month6: '\u0418\u044E\u043D\u044C',
month7: '\u0418\u044E\u043B\u044C',
month8: '\u0410\u0432\u0433\u0443\u0441\u0442',
month9: '\u0421\u0435\u043D\u0442\u044F\u0431\u0440\u044C',
month10: '\u041E\u043A\u0442\u044F\u0431\u0440\u044C',
month11: '\u041D\u043E\u044F\u0431\u0440\u044C',
month12: '\u0414\u0435\u043A\u0430\u0431\u0440\u044C',
week: '\u043D\u0435\u0434\u0435\u043B\u044F',
weeks: {
sun: '\u0412\u0441',
mon: '\u041F\u043D',
tue: '\u0412\u0442',
wed: '\u0421\u0440',
thu: '\u0427\u0442',
fri: '\u041F\u0442',
sat: '\u0421\u0431',
},
months: {
jan: '\u042F\u043D\u0432',
feb: '\u0424\u0435\u0432',
mar: '\u041C\u0430\u0440',
apr: '\u0410\u043F\u0440',
may: '\u041C\u0430\u0439',
jun: '\u0418\u044E\u043D',
jul: '\u0418\u044E\u043B',
aug: '\u0410\u0432\u0433',
sep: '\u0421\u0435\u043D',
oct: '\u041E\u043A\u0442',
nov: '\u041D\u043E\u044F',
dec: '\u0414\u0435\u043A',
},
},
select: {
loading: '\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430',
noMatch:
'\u0421\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E',
noData: '\u041D\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0445',
placeholder: '\u0412\u044B\u0431\u0440\u0430\u0442\u044C',
},
cascader: {
noMatch:
'\u0421\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E',
loading: '\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430',
placeholder: '\u0412\u044B\u0431\u0440\u0430\u0442\u044C',
noData: '\u041D\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0445',
},
pagination: {
goto: '\u041F\u0435\u0440\u0435\u0439\u0442\u0438',
pagesize:
' \u043D\u0430 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0435',
total: '\u0412\u0441\u0435\u0433\u043E {total}',
pageClassifier: '',
},
messagebox: {
title: '\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435',
confirm: 'OK',
cancel: '\u041E\u0442\u043C\u0435\u043D\u0430',
error:
'\u041D\u0435\u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u044B\u0439 \u0432\u0432\u043E\u0434 \u0434\u0430\u043D\u043D\u044B\u0445',
},
upload: {
deleteTip:
'\u041D\u0430\u0436\u043C\u0438\u0442\u0435 [\u0423\u0434\u0430\u043B\u0438\u0442\u044C] \u0434\u043B\u044F \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F',
delete: '\u0423\u0434\u0430\u043B\u0438\u0442\u044C',
preview: '\u041F\u0440\u0435\u0432\u044C\u044E',
continue: '\u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C',
},
table: {
emptyText: '\u041D\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0445',
confirmFilter:
'\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C',
resetFilter: '\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C',
clearFilter: '\u0412\u0441\u0435',
sumText: '\u0421\u0443\u043C\u043C\u0430',
},
tree: {
emptyText: '\u041D\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0445',
},
transfer: {
noMatch:
'\u0421\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0439 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E',
noData: '\u041D\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0445',
titles: [
'\u0421\u043F\u0438\u0441\u043E\u043A 1',
'\u0421\u043F\u0438\u0441\u043E\u043A 2',
],
filterPlaceholder:
'\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043A\u043B\u044E\u0447\u0435\u0432\u043E\u0435 \u0441\u043B\u043E\u0432\u043E',
noCheckedFormat: '{total} \u043F\u0443\u043D\u043A\u0442\u043E\u0432',
hasCheckedFormat:
'{checked}/{total} \u0432\u044B\u0431\u0440\u0430\u043D\u043E',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'OK',
cancelButtonText: '\u041E\u0442\u043C\u0435\u043D\u0430',
},
},
}
var __glob_8_41 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ru,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var sk = {
name: 'sk',
el: {
colorpicker: {
confirm: 'OK',
clear: 'Zmaza\u0165',
},
datepicker: {
now: 'Teraz',
today: 'Dnes',
cancel: 'Zru\u0161i\u0165',
clear: 'Zmaza\u0165',
confirm: 'OK',
selectDate: 'Vybra\u0165 d\xE1tum',
selectTime: 'Vybra\u0165 \u010Das',
startDate: 'D\xE1tum za\u010Diatku',
startTime: '\u010Cas za\u010Diatku',
endDate: 'D\xE1tum konca',
endTime: '\u010Cas konca',
prevYear: 'Predo\u0161l\xFD rok',
nextYear: '\u010Eal\u0161\xED rok',
prevMonth: 'Predo\u0161l\xFD mesiac',
nextMonth: '\u010Eal\u0161\xED mesiac',
day: 'De\u0148',
week: 'T\xFD\u017Ede\u0148',
month: 'Mesiac',
year: 'Rok',
month1: 'Janu\xE1r',
month2: 'Febru\xE1r',
month3: 'Marec',
month4: 'Apr\xEDl',
month5: 'M\xE1j',
month6: 'J\xFAn',
month7: 'J\xFAl',
month8: 'August',
month9: 'September',
month10: 'Okt\xF3ber',
month11: 'November',
month12: 'December',
weeks: {
sun: 'Ne',
mon: 'Po',
tue: 'Ut',
wed: 'St',
thu: '\u0160t',
fri: 'Pi',
sat: 'So',
},
months: {
jan: 'Jan',
feb: 'Feb',
mar: 'Mar',
apr: 'Apr',
may: 'M\xE1j',
jun: 'J\xFAn',
jul: 'J\xFAl',
aug: 'Aug',
sep: 'Sep',
oct: 'Okt',
nov: 'Nov',
dec: 'Dec',
},
},
select: {
loading: 'Na\u010D\xEDtavanie',
noMatch: '\u017Diadna zhoda',
noData: '\u017Diadne d\xE1ta',
placeholder: 'Vybra\u0165',
},
cascader: {
noMatch: '\u017Diadna zhoda',
loading: 'Na\u010D\xEDtavanie',
placeholder: 'Vybra\u0165',
noData: '\u017Diadne d\xE1ta',
},
pagination: {
goto: 'Cho\u010F na',
pagesize: 'na stranu',
total: 'V\u0161etko {total}',
pageClassifier: '',
},
messagebox: {
title: 'Spr\xE1va',
confirm: 'OK',
cancel: 'Zru\u0161i\u0165',
error: 'Neplatn\xFD vstup',
},
upload: {
deleteTip: 'pre odstr\xE1nenie stisni kl\xE1vesu Delete',
delete: 'Vymaza\u0165',
preview: 'Prehliada\u0165',
continue: 'Pokra\u010Dova\u0165',
},
table: {
emptyText: '\u017Diadne d\xE1ta',
confirmFilter: 'Potvrdi\u0165',
resetFilter: 'Zresetova\u0165',
clearFilter: 'V\u0161etko',
sumText: 'Spolu',
},
tree: {
emptyText: '\u017Diadne d\xE1ta',
},
transfer: {
noMatch: '\u017Diadna zhoda',
noData: '\u017Diadne d\xE1ta',
titles: ['Zoznam 1', 'Zoznam 2'],
filterPlaceholder: 'Filtrova\u0165 pod\u013Ea',
noCheckedFormat: '{total} polo\u017Eiek',
hasCheckedFormat: '{checked}/{total} ozna\u010Den\xFDch',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_42 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: sk,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var sl = {
name: 'sl',
el: {
colorpicker: {
confirm: 'V redu',
clear: 'Po\u010Disti',
},
datepicker: {
now: 'Zdaj',
today: 'Danes',
cancel: 'Prekli\u010Di',
clear: 'Po\u010Disti',
confirm: 'Potrdi',
selectDate: 'Izberi datum',
selectTime: 'Izberi \u010Das',
startDate: 'Za\u010Detni datum',
startTime: 'Za\u010Detni \u010Das',
endDate: 'Kon\u010Dni datum',
endTime: 'Kon\u010Dni \u010Das',
prevYear: 'Prej\u0161nje leto',
nextYear: 'Naslednje leto',
prevMonth: 'Prej\u0161nji mesec',
nextMonth: 'Naslednji mesec',
year: '',
month1: 'Jan',
month2: 'Feb',
month3: 'Mar',
month4: 'Apr',
month5: 'Maj',
month6: 'Jun',
month7: 'Jul',
month8: 'Avg',
month9: 'Sep',
month10: 'Okt',
month11: 'Nov',
month12: 'Dec',
week: 'teden',
weeks: {
sun: 'Ned',
mon: 'Pon',
tue: 'Tor',
wed: 'Sre',
thu: '\u010Cet',
fri: 'Pet',
sat: 'Sob',
},
months: {
jan: 'Jan',
feb: 'Feb',
mar: 'Mar',
apr: 'Apr',
may: 'Maj',
jun: 'Jun',
jul: 'Jul',
aug: 'Avg',
sep: 'Sep',
oct: 'Okt',
nov: 'Nov',
dec: 'Dec',
},
},
select: {
loading: 'Nalaganje',
noMatch: 'Ni ustreznih podatkov',
noData: 'Ni podatkov',
placeholder: 'Izberi',
},
cascader: {
noMatch: 'Ni ustreznih podatkov',
loading: 'Nalaganje',
placeholder: 'Izberi',
noData: 'Ni podatkov',
},
pagination: {
goto: 'Pojdi na',
pagesize: '/stran',
total: 'Skupno {total}',
pageClassifier: '',
},
messagebox: {
title: 'Sporo\u010Dilo',
confirm: 'V redu',
cancel: 'Prekli\u010Di',
error: 'Nedovoljen vnos',
},
upload: {
deleteTip: 'press delete to remove',
delete: 'Izbri\u0161i',
preview: 'Predogled',
continue: 'Nadaljuj',
},
table: {
emptyText: 'Ni podatkov',
confirmFilter: 'Potrdi',
resetFilter: 'Ponastavi',
clearFilter: 'Vse',
sumText: 'Skupno',
},
tree: {
emptyText: 'Ni podatkov',
},
transfer: {
noMatch: 'Ni ustreznih podatkov',
noData: 'Ni podatkov',
titles: ['Seznam 1', 'Seznam 2'],
filterPlaceholder: 'Vnesi klju\u010Dno besedo',
noCheckedFormat: '{total} elementov',
hasCheckedFormat: '{checked}/{total} izbranih',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_43 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: sl,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var sr = {
name: 'sr',
el: {
colorpicker: {
confirm: 'OK',
clear: '\u041F\u043E\u043D\u0438\u0448\u0442\u0438',
},
datepicker: {
now: '\u0421\u0430\u0434',
today: '\u0414\u0430\u043D\u0430\u0441',
cancel: '\u041E\u0442\u043A\u0430\u0436\u0438',
clear: '\u0411\u0440\u0438\u0448\u0438',
confirm: 'OK',
selectDate:
'\u0418\u0437\u0430\u0431\u0435\u0440\u0438 \u0434\u0430\u0442\u0443\u043C',
selectTime:
'\u0418\u0437\u0430\u0431\u0435\u0440\u0438 \u0432\u0440\u0435\u043C\u0435',
startDate:
'\u0414\u0430\u0442\u0443\u043C \u043F\u043E\u0447\u0435\u0442\u043A\u0430',
startTime:
'\u0412\u0440\u0435\u043C\u0435 \u043F\u043E\u0447\u0435\u0442\u043A\u0430',
endDate:
'\u0414\u0430\u0442\u0443\u043C \u0437\u0430\u0432\u0440\u0448\u0435\u0442\u043A\u0430',
endTime:
'\u0412\u0440\u0435\u043C\u0435 \u0437\u0430\u0432\u0440\u0448\u0435\u0442\u043A\u0430',
prevYear:
'\u041F\u0440\u0435\u0442\u0445\u043E\u0434\u043D\u0430 \u0433\u043E\u0434\u0438\u043D\u0430',
nextYear:
'\u0421\u043B\u0435\u0434\u0435\u045B\u0430 \u0433\u043E\u0434\u0438\u043D\u0430',
prevMonth:
'\u041F\u0440\u0435\u0442\u0445\u043E\u0434\u043D\u0438 \u043C\u0435\u0441\u0435\u0446',
nextMonth:
'\u0421\u043B\u0435\u0434\u0435\u045B\u0438 \u043C\u0435\u0441\u0435\u0446',
year: '\u0433\u043E\u0434\u0438\u043D\u0430',
month1: '\u0458\u0430\u043D\u0443\u0430\u0440',
month2: '\u0444\u0435\u0431\u0440\u0443\u0430\u0440',
month3: '\u043C\u0430\u0440\u0442',
month4: '\u0430\u043F\u0440\u0438\u043B',
month5: '\u043C\u0430\u0458',
month6: '\u0458\u0443\u043D',
month7: '\u0458\u0443\u043B',
month8: '\u0430\u0432\u0433\u0443\u0441\u0442',
month9: '\u0441\u0435\u043F\u0442\u0435\u043C\u0431\u0430\u0440',
month10: '\u043E\u043A\u0442\u043E\u0431\u0430\u0440',
month11: '\u043D\u043E\u0432\u0435\u043C\u0431\u0430\u0440',
month12: '\u0434\u0435\u0446\u0435\u043C\u0431\u0430\u0440',
week: '\u0441\u0435\u0434\u043C\u0438\u0446\u0430',
weeks: {
sun: '\u041D\u0435\u0434',
mon: '\u041F\u043E\u043D',
tue: '\u0423\u0442\u043E',
wed: '\u0421\u0440\u0435',
thu: '\u0427\u0435\u0442',
fri: '\u041F\u0435\u0442',
sat: '\u0421\u0443\u0431',
},
months: {
jan: '\u0458\u0430\u043D',
feb: '\u0444\u0435\u0431',
mar: '\u043C\u0430\u0440',
apr: '\u0430\u043F\u0440',
may: '\u043C\u0430\u0458',
jun: '\u0458\u0443\u043D',
jul: '\u0458\u0443\u043B',
aug: '\u0430\u0432\u0433',
sep: '\u0441\u0435\u043F',
oct: '\u043E\u043A\u0442',
nov: '\u043D\u043E\u0432',
dec: '\u0434\u0435\u0446',
},
},
select: {
loading: '\u0423\u0447\u0438\u0442\u0430\u0432\u0430\u045A\u0435',
noMatch:
'\u041D\u0435\u043C\u0430 \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430',
noData:
'\u041D\u0435\u043C\u0430 \u043F\u043E\u0434\u0430\u0442\u0430\u043A\u0430',
placeholder: '\u0418\u0437\u0430\u0431\u0435\u0440\u0438',
},
cascader: {
noMatch:
'\u041D\u0435\u043C\u0430 \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430',
loading: '\u0423\u0447\u0438\u0442\u0430\u0432\u0430\u045A\u0435',
placeholder: '\u0418\u0437\u0430\u0431\u0435\u0440\u0438',
noData:
'\u041D\u0435\u043C\u0430 \u043F\u043E\u0434\u0430\u0442\u0430\u043A\u0430',
},
pagination: {
goto: '\u0418\u0434\u0438 \u043D\u0430',
pagesize: '/\u0441\u0442\u0440\u0430\u043D\u0438',
total: '\u0423\u043A\u0443\u043F\u043D\u043E {total}',
pageClassifier: '',
},
messagebox: {
title: '\u041F\u043E\u0440\u0443\u043A\u0430',
confirm: 'OK',
cancel: '\u041E\u0442\u043A\u0430\u0436\u0438',
error:
'\u041D\u0435\u0438\u0441\u043F\u0440\u0430\u0432\u0430\u043D \u0443\u043D\u043E\u0441',
},
upload: {
deleteTip:
'\u043F\u0440\u0438\u0442\u0438\u0441\u043D\u0438 \u0411\u0420\u0418\u0428\u0418 \u0434\u0430 \u043E\u0431\u0440\u0438\u0448\u0435\u0448',
delete: '\u0411\u0440\u0438\u0448\u0438',
preview: '\u0412\u0438\u0434\u0438',
continue: '\u041D\u0430\u0441\u0442\u0430\u0432\u0438',
},
table: {
emptyText:
'\u041D\u0435\u043C\u0430 \u043F\u043E\u0434\u0430\u0442\u0430\u043A\u0430',
confirmFilter: '\u041F\u043E\u0442\u0432\u0440\u0434\u0438',
resetFilter: '\u0420\u0435\u0441\u0435\u0442\u0443\u0458',
clearFilter: '\u0421\u0432\u0435',
sumText: '\u0417\u0431\u0438\u0440',
},
tree: {
emptyText:
'\u041D\u0435\u043C\u0430 \u043F\u043E\u0434\u0430\u0442\u0430\u043A\u0430',
},
transfer: {
noMatch:
'\u041D\u0435\u043C\u0430 \u0440\u0435\u0437\u0443\u043B\u0442\u0430\u0442\u0430',
noData:
'\u041D\u0435\u043C\u0430 \u043F\u043E\u0434\u0430\u0442\u0430\u043A\u0430',
titles: [
'\u041B\u0438\u0441\u0442\u0430 1',
'\u041B\u0438\u0441\u0442\u0430 2',
],
filterPlaceholder:
'\u0423\u043D\u0435\u0441\u0438 \u043A\u0459\u0443\u0447\u043D\u0443 \u0440\u0435\u0447',
noCheckedFormat: '{total} \u0441\u0442\u0430\u0432\u043A\u0438',
hasCheckedFormat:
'{checked}/{total} \u043E\u0431\u0435\u043B\u0435\u0436\u0435\u043D\u0438\u0445',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_44 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: sr,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var sv = {
name: 'sv',
el: {
colorpicker: {
confirm: 'OK',
clear: 'T\xF6m',
},
datepicker: {
now: 'Nu',
today: 'Idag',
cancel: 'Avbryt',
clear: 'T\xF6m',
confirm: 'OK',
selectDate: 'V\xE4lj datum',
selectTime: 'V\xE4lj tid',
startDate: 'Startdatum',
startTime: 'Starttid',
endDate: 'Slutdatum',
endTime: 'Sluttid',
prevYear: 'F\xF6reg\xE5ende \xE5r',
nextYear: 'N\xE4sta \xE5r',
prevMonth: 'F\xF6reg\xE5ende m\xE5nad',
nextMonth: 'N\xE4sta m\xE5nad',
year: '',
month1: 'Januari',
month2: 'Februari',
month3: 'Mars',
month4: 'April',
month5: 'Maj',
month6: 'Juni',
month7: 'Juli',
month8: 'Augusti',
month9: 'September',
month10: 'Oktober',
month11: 'November',
month12: 'December',
weeks: {
sun: 'S\xF6n',
mon: 'M\xE5n',
tue: 'Tis',
wed: 'Ons',
thu: 'Tor',
fri: 'Fre',
sat: 'L\xF6r',
},
months: {
jan: 'Jan',
feb: 'Feb',
mar: 'Mar',
apr: 'Apr',
may: 'Maj',
jun: 'Jun',
jul: 'Jul',
aug: 'Aug',
sep: 'Sep',
oct: 'Okt',
nov: 'Nov',
dec: 'Dec',
},
},
select: {
loading: 'Laddar',
noMatch: 'Hittade inget',
noData: 'Ingen data',
placeholder: 'V\xE4lj',
},
cascader: {
noMatch: 'Hittade inget',
loading: 'Laddar',
placeholder: 'V\xE4lj',
noData: 'Ingen data',
},
pagination: {
goto: 'G\xE5 till',
pagesize: '/sida',
total: 'Totalt {total}',
pageClassifier: '',
},
messagebox: {
title: 'Meddelande',
confirm: 'OK',
cancel: 'Avbryt',
error: 'Felaktig inmatning',
},
upload: {
deleteTip: 'press delete to remove',
delete: 'Radera',
preview: 'F\xF6rhandsvisa',
continue: 'Forts\xE4tt',
},
table: {
emptyText: 'Inga Data',
confirmFilter: 'Bekr\xE4fta',
resetFilter: '\xC5terst\xE4ll',
clearFilter: 'Alla',
sumText: 'Summa',
},
tree: {
emptyText: 'Ingen data',
},
transfer: {
noMatch: 'Hittade inget',
noData: 'Ingen data',
titles: ['List 1', 'List 2'],
filterPlaceholder: 'Enter keyword',
noCheckedFormat: '{total} items',
hasCheckedFormat: '{checked}/{total} checked',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Bak\xE5t',
},
popconfirm: {
confirmButtonText: 'Ja',
cancelButtonText: 'Nej',
},
},
}
var __glob_8_45 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: sv,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ta = {
name: 'ta',
el: {
colorpicker: {
confirm: '\u0B89\u0BB1\u0BC1\u0BA4\u0BBF \u0B9A\u0BC6\u0BAF\u0BCD',
clear: '\u0BA4\u0BC6\u0BB3\u0BBF\u0BB5\u0BBE\u0B95\u0BCD\u0B95\u0BC1',
},
datepicker: {
now: '\u0BA4\u0BB1\u0BCD\u0BAA\u0BCB\u0BA4\u0BC1',
today: '\u0B87\u0BA9\u0BCD\u0BB1\u0BC1',
cancel: '\u0BB0\u0BA4\u0BCD\u0BA4\u0BC1 \u0B9A\u0BC6\u0BAF\u0BCD',
clear: '\u0B9A\u0BB0\u0BBF',
confirm: '\u0B89\u0BB1\u0BC1\u0BA4\u0BBF \u0B9A\u0BC6\u0BAF\u0BCD',
selectDate:
'\u0BA4\u0BC7\u0BA4\u0BBF\u0BAF\u0BC8 \u0BA4\u0BC7\u0BB0\u0BCD\u0BB5\u0BC1 \u0B9A\u0BC6\u0BAF\u0BCD',
selectTime:
'\u0BA8\u0BC7\u0BB0\u0BA4\u0BCD\u0BA4\u0BC8 \u0BA4\u0BC7\u0BB0\u0BCD\u0BB5\u0BC1 \u0B9A\u0BC6\u0BAF\u0BCD',
startDate:
'\u0BA4\u0BCA\u0B9F\u0B99\u0BCD\u0B95\u0BC1\u0BAE\u0BCD \u0BA8\u0BBE\u0BB3\u0BCD',
startTime:
'\u0BA4\u0BCA\u0B9F\u0B99\u0BCD\u0B95\u0BC1\u0BAE\u0BCD \u0BA8\u0BC7\u0BB0\u0BAE\u0BCD',
endDate:
'\u0BAE\u0BC1\u0B9F\u0BBF\u0BAF\u0BC1\u0BAE\u0BCD \u0BA4\u0BC7\u0BA4\u0BBF',
endTime:
'\u0BAE\u0BC1\u0B9F\u0BBF\u0BAF\u0BC1\u0BAE\u0BCD \u0BA8\u0BC7\u0BB0\u0BAE\u0BCD',
prevYear: 'Previous Year',
nextYear: 'Next Year',
prevMonth: 'Previous Month',
nextMonth: 'Next Month',
year: '\u0BB5\u0BB0\u0BC1\u0B9F\u0BAE\u0BCD',
month1: '\u0B9C\u0BA9\u0BB5\u0BB0\u0BBF',
month2: '\u0BAA\u0BBF\u0BAA\u0BCD\u0BB0\u0BB5\u0BB0\u0BBF',
month3: '\u0BAE\u0BBE\u0BB0\u0BCD\u0B9A\u0BCD',
month4: '\u0B8F\u0BAA\u0BCD\u0BB0\u0BB2\u0BCD',
month5: '\u0BAE\u0BC7',
month6: '\u0B9C\u0BC2\u0BA9\u0BCD',
month7: '\u0B9C\u0BC2\u0BB2\u0BC8',
month8: '\u0B86\u0B95\u0BB8\u0BCD\u0B9F\u0BCD',
month9: '\u0B9A\u0BC6\u0BAA\u0BCD\u0B9F\u0BAE\u0BCD\u0BAA\u0BB0\u0BCD',
month10: '\u0B85\u0B95\u0BCD\u0B9F\u0BCB\u0BAA\u0BB0\u0BCD',
month11: '\u0BA8\u0BB5\u0BAE\u0BCD\u0BAA\u0BB0\u0BCD',
month12: '\u0B9F\u0BBF\u0B9A\u0BAE\u0BCD\u0BAA\u0BB0\u0BCD',
weeks: {
sun: '\u0B9E\u0BBE\u0BAF\u0BBF\u0BB1\u0BC1',
mon: '\u0BA4\u0BBF\u0B99\u0BCD\u0B95\u0BB3\u0BCD',
tue: '\u0B9A\u0BC6\u0BB5\u0BCD\u0BB5\u0BBE\u0BAF\u0BCD',
wed: '\u0BAA\u0BC1\u0BA4\u0BA9\u0BCD',
thu: '\u0BB5\u0BBF\u0BAF\u0BBE\u0BB4\u0BA9\u0BCD',
fri: '\u0BB5\u0BC6\u0BB3\u0BCD\u0BB3\u0BBF',
sat: '\u0B9A\u0BA9\u0BBF',
},
months: {
jan: '\u0B9C\u0BA9\u0BB5\u0BB0\u0BBF',
feb: '\u0BAA\u0BBF\u0BAA\u0BCD\u0BB0\u0BB5\u0BB0\u0BBF',
mar: '\u0BAE\u0BBE\u0BB0\u0BCD\u0B9A\u0BCD',
apr: '\u0B8F\u0BAA\u0BCD\u0BB0\u0BB2\u0BCD',
may: '\u0BAE\u0BC7',
jun: '\u0B9C\u0BC2\u0BA9\u0BCD',
jul: '\u0B9C\u0BC2\u0BB2\u0BC8',
aug: '\u0B86\u0B95\u0BB8\u0BCD\u0B9F\u0BCD',
sep: '\u0B9A\u0BC6\u0BAA\u0BCD\u0B9F\u0BAE\u0BCD\u0BAA\u0BB0\u0BCD',
oct: '\u0B85\u0B95\u0BCD\u0B9F\u0BCB\u0BAA\u0BB0\u0BCD',
nov: '\u0BA8\u0BB5\u0BAE\u0BCD\u0BAA\u0BB0\u0BCD',
dec: '\u0B9F\u0BBF\u0B9A\u0BAE\u0BCD\u0BAA\u0BB0\u0BCD',
},
},
select: {
loading:
'\u0BA4\u0BAF\u0BBE\u0BB0\u0BBE\u0B95\u0BBF\u0B95\u0BCD\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95\u0BBF\u0BB1\u0BA4\u0BC1',
noMatch:
'\u0BAA\u0BCA\u0BB0\u0BC1\u0BA4\u0BCD\u0BA4\u0BAE\u0BBE\u0BA9 \u0BA4\u0BB0\u0BB5\u0BC1 \u0B95\u0BBF\u0B9F\u0BC8\u0B95\u0BCD\u0B95\u0BB5\u0BBF\u0BB2\u0BCD\u0BB2\u0BC8',
noData: '\u0BA4\u0BB0\u0BB5\u0BC1 \u0B87\u0BB2\u0BCD\u0BB2\u0BC8',
placeholder:
'\u0BA4\u0BC7\u0BB0\u0BCD\u0BB5\u0BC1 \u0B9A\u0BC6\u0BAF\u0BCD',
},
cascader: {
noMatch:
'\u0BAA\u0BCA\u0BB0\u0BC1\u0BA4\u0BCD\u0BA4\u0BAE\u0BBE\u0BA9 \u0BA4\u0BB0\u0BB5\u0BC1 \u0B95\u0BBF\u0B9F\u0BC8\u0B95\u0BCD\u0B95\u0BB5\u0BBF\u0BB2\u0BCD\u0BB2\u0BC8',
loading:
'\u0BA4\u0BAF\u0BBE\u0BB0\u0BBE\u0B95\u0BBF\u0B95\u0BCD\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95\u0BBF\u0BB1\u0BA4\u0BC1',
placeholder:
'\u0BA4\u0BC7\u0BB0\u0BCD\u0BB5\u0BC1 \u0B9A\u0BC6\u0BAF\u0BCD',
noData: '\u0BA4\u0BB0\u0BB5\u0BC1 \u0B87\u0BB2\u0BCD\u0BB2\u0BC8',
},
pagination: {
goto: '\u0BA4\u0BC7\u0BB5\u0BC8\u0BAF\u0BBE\u0BA9\u0BCD \u0BAA\u0B95\u0BC1\u0BA4\u0BBF\u0B95\u0BCD\u0B95\u0BC1 \u0B9A\u0BC6\u0BB2\u0BCD',
pagesize: '/page',
total: '\u0BAE\u0BCA\u0BA4\u0BCD\u0BA4\u0BAE\u0BCD {total}',
pageClassifier: '',
},
messagebox: {
title: '\u0B9A\u0BC6\u0BAF\u0BCD\u0BA4\u0BBF',
confirm: '\u0B89\u0BB1\u0BC1\u0BA4\u0BBF \u0B9A\u0BC6\u0BAF\u0BCD',
cancel: '\u0BB0\u0BA4\u0BCD\u0BA4\u0BC1 \u0B9A\u0BC6\u0BAF\u0BCD',
error:
'\u0BAA\u0BCA\u0BB0\u0BC1\u0BA4\u0BCD\u0BA4\u0BBE\u0BAE\u0BBF\u0BB2\u0BCD\u0BB2\u0BBE\u0BA4 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1',
},
upload: {
deleteTip: 'press delete to remove',
delete: '\u0BA8\u0BC0\u0B95\u0BCD\u0B95\u0BC1',
preview:
'\u0BAE\u0BC1\u0BA9\u0BCD\u0BA9\u0BCB\u0B9F\u0BCD\u0B9F\u0BAE\u0BCD \u0BAA\u0BBE\u0BB0\u0BCD',
continue: '\u0BA4\u0BCA\u0B9F\u0BB0\u0BC1',
},
table: {
emptyText: '\u0BA4\u0BB0\u0BB5\u0BC1 \u0B87\u0BB2\u0BCD\u0BB2\u0BC8',
confirmFilter: '\u0B89\u0BB1\u0BC1\u0BA4\u0BBF \u0B9A\u0BC6\u0BAF\u0BCD',
resetFilter:
'\u0BAA\u0BC1\u0BA4\u0BC1\u0BAE\u0BBE\u0BB1\u0BCD\u0BB1\u0BAE\u0BCD \u0B9A\u0BC6\u0BAF\u0BCD',
clearFilter: '\u0B85\u0BA9\u0BC8\u0BA4\u0BCD\u0BA4\u0BC1\u0BAE\u0BCD',
sumText: '\u0B95\u0BC2\u0B9F\u0BCD\u0B9F\u0BC1',
},
tree: {
emptyText: '\u0BA4\u0BB0\u0BB5\u0BC1 \u0B87\u0BB2\u0BCD\u0BB2\u0BC8',
},
transfer: {
noMatch:
'\u0BAA\u0BCA\u0BB0\u0BC1\u0BA4\u0BCD\u0BA4\u0BAE\u0BBE\u0BA9 \u0BA4\u0BB0\u0BB5\u0BC1 \u0B95\u0BBF\u0B9F\u0BC8\u0B95\u0BCD\u0B95\u0BB5\u0BBF\u0BB2\u0BCD\u0BB2\u0BC8',
noData: '\u0BA4\u0BB0\u0BB5\u0BC1 \u0B87\u0BB2\u0BCD\u0BB2\u0BC8',
titles: [
'\u0BAA\u0B9F\u0BCD\u0B9F\u0BBF\u0BAF\u0BB2\u0BCD 1',
'\u0BAA\u0B9F\u0BCD\u0B9F\u0BBF\u0BAF\u0BB2\u0BCD 2',
],
filterPlaceholder:
'\u0B9A\u0BCA\u0BB2\u0BCD\u0BB2\u0BC8 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1 \u0B9A\u0BC6\u0BAF\u0BCD',
noCheckedFormat: '{total} items',
hasCheckedFormat:
'{checked}/{total} \u0BA4\u0BC7\u0BB0\u0BCD\u0BB5\u0BC1 \u0B9A\u0BC6\u0BAF\u0BCD\u0BAF\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BB5\u0BC8\u0B95\u0BB3\u0BCD',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_46 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ta,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var th$2 = {
name: 'th',
el: {
colorpicker: {
confirm: '\u0E15\u0E01\u0E25\u0E07',
clear: '\u0E25\u0E49\u0E32\u0E07\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25',
},
datepicker: {
now: '\u0E15\u0E2D\u0E19\u0E19\u0E35\u0E49',
today: '\u0E27\u0E31\u0E19\u0E19\u0E35\u0E49',
cancel: '\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01',
clear: '\u0E25\u0E49\u0E32\u0E07\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25',
confirm: '\u0E15\u0E01\u0E25\u0E07',
selectDate:
'\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48',
selectTime: '\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E40\u0E27\u0E25\u0E32',
startDate:
'\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E40\u0E23\u0E34\u0E48\u0E21\u0E15\u0E49\u0E19',
startTime:
'\u0E40\u0E27\u0E25\u0E32\u0E40\u0E23\u0E34\u0E48\u0E21\u0E15\u0E49\u0E19',
endDate:
'\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E2A\u0E34\u0E49\u0E19\u0E2A\u0E38\u0E14',
endTime:
'\u0E40\u0E27\u0E25\u0E32\u0E2A\u0E34\u0E49\u0E19\u0E2A\u0E38\u0E14',
prevYear: '\u0E1B\u0E35\u0E01\u0E48\u0E2D\u0E19\u0E2B\u0E19\u0E49\u0E32',
nextYear: '\u0E1B\u0E35\u0E16\u0E31\u0E14\u0E44\u0E1B',
prevMonth:
'\u0E40\u0E14\u0E37\u0E2D\u0E19\u0E01\u0E48\u0E2D\u0E19\u0E2B\u0E19\u0E49\u0E32',
nextMonth: '\u0E40\u0E14\u0E37\u0E2D\u0E19\u0E16\u0E31\u0E14\u0E44\u0E1B',
year: '\u0E1B\u0E35',
month1: '\u0E21\u0E01\u0E23\u0E32\u0E04\u0E21',
month2: '\u0E01\u0E38\u0E21\u0E20\u0E32\u0E1E\u0E31\u0E19\u0E18\u0E4C',
month3: '\u0E21\u0E35\u0E19\u0E32\u0E04\u0E21',
month4: '\u0E40\u0E21\u0E29\u0E32\u0E22\u0E19',
month5: '\u0E1E\u0E24\u0E29\u0E20\u0E32\u0E04\u0E21',
month6: '\u0E21\u0E34\u0E16\u0E38\u0E19\u0E32\u0E22\u0E19',
month7: '\u0E01\u0E23\u0E01\u0E0E\u0E32\u0E04\u0E21',
month8: '\u0E2A\u0E34\u0E07\u0E2B\u0E32\u0E04\u0E21',
month9: '\u0E01\u0E31\u0E19\u0E22\u0E32\u0E22\u0E19',
month10: '\u0E15\u0E38\u0E25\u0E32\u0E04\u0E21',
month11: '\u0E1E\u0E24\u0E28\u0E08\u0E34\u0E01\u0E32\u0E22\u0E19',
month12: '\u0E18\u0E31\u0E19\u0E27\u0E32\u0E04\u0E21',
weeks: {
sun: '\u0E2D\u0E32',
mon: '\u0E08',
tue: '\u0E2D',
wed: '\u0E1E',
thu: '\u0E1E\u0E24',
fri: '\u0E28',
sat: '\u0E2A',
},
months: {
jan: '\u0E21\u0E01\u0E23\u0E32',
feb: '\u0E01\u0E38\u0E21\u0E20\u0E32',
mar: '\u0E21\u0E35\u0E19\u0E32',
apr: '\u0E40\u0E21\u0E29\u0E32',
may: '\u0E1E\u0E24\u0E29\u0E20\u0E32',
jun: '\u0E21\u0E34\u0E16\u0E38\u0E19\u0E32',
jul: '\u0E01\u0E23\u0E01\u0E0E\u0E32',
aug: '\u0E2A\u0E34\u0E07\u0E2B\u0E32',
sep: '\u0E01\u0E31\u0E19\u0E22\u0E32',
oct: '\u0E15\u0E38\u0E25\u0E32',
nov: '\u0E1E\u0E24\u0E28\u0E08\u0E34\u0E01\u0E32',
dec: '\u0E18\u0E31\u0E19\u0E27\u0E32',
},
},
select: {
loading: '\u0E01\u0E33\u0E25\u0E31\u0E07\u0E42\u0E2B\u0E25\u0E14',
noMatch:
'\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E15\u0E23\u0E07\u0E01\u0E31\u0E19',
noData:
'\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25',
placeholder: '\u0E40\u0E25\u0E37\u0E2D\u0E01',
},
cascader: {
noMatch:
'\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E15\u0E23\u0E07\u0E01\u0E31\u0E19',
loading: '\u0E01\u0E33\u0E25\u0E31\u0E07\u0E42\u0E2B\u0E25\u0E14',
placeholder: '\u0E40\u0E25\u0E37\u0E2D\u0E01',
noData:
'\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25',
},
pagination: {
goto: '\u0E44\u0E1B\u0E17\u0E35\u0E48',
pagesize: '/\u0E2B\u0E19\u0E49\u0E32',
total: '\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14 {total}',
pageClassifier: '',
},
messagebox: {
title: '\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21',
confirm: '\u0E15\u0E01\u0E25\u0E07',
cancel: '\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01',
error:
'\u0E04\u0E38\u0E13\u0E1B\u0E49\u0E2D\u0E19\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07',
},
upload: {
deleteTip:
'\u0E01\u0E14\u0E1B\u0E38\u0E48\u0E21 "\u0E25\u0E1A" \u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E25\u0E1A\u0E2D\u0E2D\u0E01',
delete: '\u0E25\u0E1A',
preview: '\u0E15\u0E31\u0E27\u0E2D\u0E22\u0E48\u0E32\u0E07',
continue: '\u0E17\u0E33\u0E15\u0E48\u0E2D',
},
table: {
emptyText:
'\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25',
confirmFilter: '\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19',
resetFilter: '\u0E23\u0E35\u0E40\u0E0B\u0E47\u0E15',
clearFilter: '\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14',
sumText: '\u0E23\u0E27\u0E21',
},
tree: {
emptyText:
'\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25',
},
transfer: {
noMatch:
'\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E15\u0E23\u0E07\u0E01\u0E31\u0E19',
noData:
'\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25',
titles: ['List 1', 'List 2'],
filterPlaceholder:
'\u0E01\u0E23\u0E2D\u0E01\u0E04\u0E35\u0E22\u0E4C\u0E40\u0E27\u0E34\u0E23\u0E4C\u0E14',
noCheckedFormat: '{total} items',
hasCheckedFormat: '{checked}/{total} checked',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: '\u0E22\u0E49\u0E2D\u0E19\u0E01\u0E25\u0E31\u0E1A',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_47 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: th$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var tk = {
name: 'tk',
el: {
colorpicker: {
confirm: 'OK',
clear: 'Arassala',
},
datepicker: {
now: '\u015Euwagt',
today: '\u015E\xFCg\xFCn',
cancel: 'Bes et',
clear: 'Arassala',
confirm: 'OK',
selectDate: 'G\xFCni sa\xFDla\u0148',
selectTime: 'Wagty sa\xFDla\u0148',
startDate: 'Ba\u015Fla\xFDan g\xFCni',
startTime: 'Ba\u015Fla\xFDan wagty',
endDate: 'Gutar\xFDan g\xFCni',
endTime: 'Gutar\xFDan wagty',
prevYear: 'Previous Year',
nextYear: 'Next Year',
prevMonth: 'Previous Month',
nextMonth: 'Next Month',
year: '',
month1: '\xDDan',
month2: 'Few',
month3: 'Mar',
month4: 'Apr',
month5: 'Ma\xFD',
month6: 'I\xFDn',
month7: 'I\xFDl',
month8: 'Awg',
month9: 'Sen',
month10: 'Okt',
month11: 'No\xFD',
month12: 'Dek',
weeks: {
sun: '\xDDek',
mon: 'Du\u015F',
tue: 'Si\u015F',
wed: '\xC7ar',
thu: 'Pen',
fri: 'Ann',
sat: '\u015Een',
},
months: {
jan: '\xDDan',
feb: 'Few',
mar: 'Mar',
apr: 'Apr',
may: 'Ma\xFD',
jun: 'I\xFDn',
jul: 'I\xFDl',
aug: 'Awg',
sep: 'Sep',
oct: 'Okt',
nov: 'No\xFD',
dec: 'Dek',
},
},
select: {
loading: 'Indiril\xFD\xE4r',
noMatch: 'Hi\xE7zat tapylmady',
noData: 'Hi\xE7zat \xFDok',
placeholder: 'Sa\xFDla',
},
cascader: {
noMatch: 'Hi\xE7zat tapylmady',
loading: 'Indiril\xFD\xE4r',
placeholder: 'Sa\xFDla\u0148',
noData: 'Hi\xE7zat \xFDok',
},
pagination: {
goto: 'Git',
pagesize: '/sahypa',
total: 'Umumy {total}',
pageClassifier: '',
},
messagebox: {
title: 'Hat',
confirm: 'OK',
cancel: 'Bes et',
error: '\xDDal\u0148y\u015F girizme',
},
upload: {
deleteTip: 'Pozmak \xFC\xE7in "poz" d\xFCwm\xE4 basy\u0148',
delete: 'Poz',
preview: 'G\xF6r',
continue: 'Dowam et',
},
table: {
emptyText: 'Maglumat \xFDok',
confirmFilter: 'Tassykla',
resetFilter: 'Arassala',
clearFilter: 'Hemmesi',
sumText: 'Jemi',
},
tree: {
emptyText: 'Maglumat \xFDok',
},
transfer: {
noMatch: 'Hi\xE7zat tapylmady',
noData: 'Hi\xE7zat \xFDok',
titles: ['Sanaw 1', 'Sanaw 2'],
filterPlaceholder: 'G\xF6zleg s\xF6zlerini girizi\u0148',
noCheckedFormat: '{total} sany',
hasCheckedFormat: '{checked}/{total} sa\xFDlanan',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_48 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: tk,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var tr = {
name: 'tr',
el: {
colorpicker: {
confirm: 'Onayla',
clear: 'Temizle',
},
datepicker: {
now: '\u015Eimdi',
today: 'Bug\xFCn',
cancel: '\u0130ptal',
clear: 'Temizle',
confirm: 'Onayla',
selectDate: 'Tarih se\xE7',
selectTime: 'Saat se\xE7',
startDate: 'Ba\u015Flang\u0131\xE7 Tarihi',
startTime: 'Ba\u015Flang\u0131\xE7 Saati',
endDate: 'Biti\u015F Tarihi',
endTime: 'Biti\u015F Saati',
prevYear: '\xD6nceki Y\u0131l',
nextYear: 'Sonraki Y\u0131l',
prevMonth: '\xD6nceki Ay',
nextMonth: 'Sonraki Ay',
year: '',
month1: 'Ocak',
month2: '\u015Eubat',
month3: 'Mart',
month4: 'Nisan',
month5: 'May\u0131s',
month6: 'Haziran',
month7: 'Temmuz',
month8: 'A\u011Fustos',
month9: 'Eyl\xFCl',
month10: 'Ekim',
month11: 'Kas\u0131m',
month12: 'Aral\u0131k',
weeks: {
sun: 'Paz',
mon: 'Pzt',
tue: 'Sal',
wed: '\xC7ar',
thu: 'Per',
fri: 'Cum',
sat: 'Cmt',
},
months: {
jan: 'Oca',
feb: '\u015Eub',
mar: 'Mar',
apr: 'Nis',
may: 'May',
jun: 'Haz',
jul: 'Tem',
aug: 'A\u011Fu',
sep: 'Eyl',
oct: 'Eki',
nov: 'Kas',
dec: 'Ara',
},
},
select: {
loading: 'Y\xFCkleniyor',
noMatch: 'E\u015Fle\u015Fen veri bulunamad\u0131',
noData: 'Veri yok',
placeholder: 'Se\xE7',
},
cascader: {
noMatch: 'E\u015Fle\u015Fen veri bulunamad\u0131',
loading: 'Y\xFCkleniyor',
placeholder: 'Se\xE7',
noData: 'Veri yok',
},
pagination: {
goto: 'Git',
pagesize: '/sayfa',
total: 'Toplam {total}',
pageClassifier: '',
},
messagebox: {
title: 'Mesaj',
confirm: 'Onayla',
cancel: '\u0130ptal',
error: '\u0130llegal giri\u015F',
},
upload: {
deleteTip: 'kald\u0131rmak i\xE7in delete tu\u015Funa bas',
delete: 'Sil',
preview: 'G\xF6r\xFCnt\xFCle',
continue: 'Devam',
},
table: {
emptyText: 'Veri yok',
confirmFilter: 'Onayla',
resetFilter: 'S\u0131f\u0131rla',
clearFilter: 'Hepsi',
sumText: 'Sum',
},
tree: {
emptyText: 'Veri yok',
},
transfer: {
noMatch: 'E\u015Fle\u015Fen veri bulunamad\u0131',
noData: 'Veri yok',
titles: ['Liste 1', 'Liste 2'],
filterPlaceholder: 'Anahtar kelimeleri gir',
noCheckedFormat: '{total} adet',
hasCheckedFormat: '{checked}/{total} se\xE7ildi',
},
image: {
error: 'BA\u015EARISIZ OLDU',
},
pageHeader: {
title: 'Geri',
},
popconfirm: {
confirmButtonText: 'Evet',
cancelButtonText: 'Hay\u0131r',
},
},
}
var __glob_8_49 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: tr,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ugCn = {
name: 'ug-cn',
el: {
colorpicker: {
confirm: '\u062C\u06D5\u0632\u0645\u0644\u06D5\u0634',
clear: '\u0642\u06C7\u0631\u06C7\u0642\u062F\u0627\u0634',
},
datepicker: {
now: '\u06BE\u0627\u0632\u0649\u0631\u0642\u0649 \u06CB\u0627\u0642\u0649\u062A',
today: '\u0628\u06C8\u06AF\u06C8\u0646',
cancel: '\u0628\u0649\u0643\u0627\u0631 \u0642\u0649\u0644\u0649\u0634',
clear: '\u0642\u06C7\u0631\u06C7\u0642\u062F\u0627\u0634',
confirm: '\u062C\u06D5\u0632\u0645\u0644\u06D5\u0634',
selectDate:
'\u0686\u0649\u0633\u0644\u0627 \u062A\u0627\u0644\u0644\u0627\u06AD',
selectTime:
'\u06CB\u0627\u0642\u0649\u062A \u062A\u0627\u0644\u0644\u0627\u06AD',
startDate:
'\u0628\u0627\u0634\u0644\u0627\u0646\u063A\u0627\u0646 \u0686\u0649\u0633\u0644\u0627',
startTime:
'\u0628\u0627\u0634\u0644\u0627\u0646\u063A\u0627\u0646 \u06CB\u0627\u0642\u0649\u062A',
endDate:
'\u0626\u0627\u062E\u0649\u0631\u0644\u0627\u0634\u0642\u0627\u0646 \u0686\u0649\u0633\u0644\u0627',
endTime:
'\u0626\u0627\u062E\u0649\u0631\u0644\u0627\u0634\u0642\u0627\u0646 \u06CB\u0627\u0642\u0649\u062A',
prevYear:
'\u0626\u0627\u0644\u062F\u0649\u0646\u0642\u0649 \u064A\u0649\u0644',
nextYear: '\u0643\u0649\u064A\u0649\u0646\u0643\u0649 \u064A\u0649\u0644',
prevMonth:
'\u0626\u0627\u0644\u062F\u0649\u0646\u0642\u0649 \u0626\u0627\u064A',
nextMonth:
'\u0643\u0649\u064A\u0649\u0646\u0643\u0649 \u0626\u0627\u064A',
year: '- \u064A\u0649\u0644',
month1: '1-\u0626\u0627\u064A',
month2: '2-\u0626\u0627\u064A',
month3: '3-\u0626\u0627\u064A',
month4: '4-\u0626\u0627\u064A',
month5: '5-\u0626\u0627\u064A',
month6: '6-\u0626\u0627\u064A',
month7: '7-\u0626\u0627\u064A',
month8: '8-\u0626\u0627\u064A',
month9: '9-\u0626\u0627\u064A',
month10: '10-\u0626\u0627\u064A',
month11: '11-\u0626\u0627\u064A',
month12: '12-\u0626\u0627\u064A',
weeks: {
sun: '\u064A\u06D5\u0643\u0634\u06D5\u0646\u0628\u06D5',
mon: '\u062F\u06C8\u0634\u06D5\u0646\u0628\u06D5',
tue: '\u0633\u06D5\u064A\u0634\u06D5\u0646\u0628\u06D5',
wed: '\u0686\u0627\u0631\u0634\u06D5\u0646\u0628\u06D5',
thu: '\u067E\u06D5\u064A\u0634\u06D5\u0646\u0628\u06D5',
fri: '\u062C\u06C8\u0645\u06D5',
sat: '\u0634\u06D5\u0646\u0628\u06D5',
},
months: {
jan: '1-\u0626\u0627\u064A',
feb: '2-\u0626\u0627\u064A',
mar: '3-\u0626\u0627\u064A',
apr: '4-\u0626\u0627\u064A',
may: '5-\u0626\u0627\u064A',
jun: '6-\u0626\u0627\u064A',
jul: '7-\u0626\u0627\u064A',
aug: '8-\u0626\u0627\u064A',
sep: '9-\u0626\u0627\u064A',
oct: '10-\u0626\u0627\u064A',
nov: '11-\u0626\u0627\u064A',
dec: '12-\u0626\u0627\u064A',
},
},
select: {
loading:
'\u064A\u06C8\u0643\u0644\u0649\u0646\u0649\u06CB\u0627\u062A\u0649\u062F\u06C7',
noMatch:
'\u0626\u06C7\u0686\u06C7\u0631 \u062A\u06D0\u067E\u0649\u0644\u0645\u0649\u062F\u0649',
noData: '\u0626\u06C7\u0686\u06C7\u0631 \u064A\u0648\u0642',
placeholder: '\u062A\u0627\u0644\u0644\u0627\u06AD',
},
cascader: {
noMatch:
'\u0626\u06C7\u0686\u06C7\u0631 \u062A\u06D0\u067E\u0649\u0644\u0645\u0649\u062F\u0649',
loading:
'\u064A\u06C8\u0643\u0644\u0649\u0646\u0649\u06CB\u0627\u062A\u0649\u062F\u06C7',
placeholder: '\u062A\u0627\u0644\u0644\u0627\u06AD',
noData: '\u0626\u06C7\u0686\u06C7\u0631 \u064A\u0648\u0642',
},
pagination: {
goto: '\u0643\u0649\u064A\u0649\u0646\u0643\u0649 \u0628\u06D5\u062A',
pagesize: '\u062A\u0627\u0644/\u0628\u06D5\u062A',
total: '\u062C\u06D5\u0645\u0626\u0649\u064A {total} \u062A\u0627\u0644',
pageClassifier: '\u0628\u06D5\u062A',
},
messagebox: {
title: '\u0626\u06D5\u0633\u0643\u06D5\u0631\u062A\u0649\u0634',
confirm: '\u062C\u06D5\u0632\u0645\u0644\u06D5\u0634',
cancel: '\u0628\u0649\u0643\u0627\u0631 \u0642\u0649\u0644\u0649\u0634',
error:
'\u0643\u0649\u0631\u06AF\u06C8\u0632\u06AF\u06D5\u0646 \u0626\u06C7\u0686\u06C7\u0631\u0649\u06AD\u0649\u0632\u062F\u0627 \u062E\u0627\u062A\u0627\u0644\u0649\u0642 \u0628\u0627\u0631!',
},
upload: {
deleteTip:
'delete \u0643\u06C7\u0646\u067E\u0643\u0649\u0633\u0649\u0646\u0649 \u0628\u06D0\u0633\u0649\u067E \u0626\u06C6\u0686\u06C8\u0631\u06D5\u0644\u06D5\u064A\u0633\u0649\u0632',
delete: '\u0626\u06C6\u0686\u06C8\u0631\u06C8\u0634',
preview:
'\u0631\u06D5\u0633\u0649\u0645\u0646\u0649 \u0643\u06C6\u0631\u06C8\u0634',
continue:
'\u0631\u06D5\u0633\u0649\u0645 \u064A\u0648\u0644\u0644\u0627\u0634',
},
table: {
emptyText: '\u0626\u06C7\u0686\u06C7\u0631 \u064A\u0648\u0642',
confirmFilter: '\u0633\u06C8\u0632\u06AF\u06C8\u0686',
resetFilter:
'\u0642\u0627\u064A\u062A\u0627 \u062A\u0648\u0644\u062F\u06C7\u0631\u06C7\u0634',
clearFilter: '\u06BE\u06D5\u0645\u0645\u06D5',
sumText: '\u062C\u06D5\u0645\u0626\u0649\u064A',
},
tree: {
emptyText: '\u0626\u06C7\u0686\u06C7\u0631 \u064A\u0648\u0642',
},
transfer: {
noMatch:
'\u0626\u06C7\u0686\u06C7\u0631 \u062A\u06D0\u067E\u0649\u0644\u0645\u0649\u062F\u0649',
noData: '\u0626\u06C7\u0686\u06C7\u0631 \u064A\u0648\u0642',
titles: [
'\u062C\u06D5\u062F\u06CB\u06D5\u0644 1',
'\u062C\u06D5\u062F\u06CB\u06D5\u0644 2',
],
filterPlaceholder:
'\u0626\u0649\u0632\u062F\u0649\u0645\u06D5\u0643\u0686\u0649 \u0628\u0648\u0644\u063A\u0627\u0646 \u0645\u06D5\u0632\u0645\u06C7\u0646\u0646\u0649 \u0643\u0649\u0631\u06AF\u06C8\u0632\u06C8\u06AD',
noCheckedFormat:
'\u062C\u06D5\u0645\u0626\u0649\u064A {total} \u062A\u06C8\u0631',
hasCheckedFormat:
'\u062A\u0627\u0644\u0644\u0627\u0646\u063A\u0649\u0646\u0649 {checked}/{total} \u062A\u06C8\u0631',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_50 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ugCn,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var uk = {
name: 'uk',
el: {
colorpicker: {
confirm: 'OK',
clear: '\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u0438',
},
datepicker: {
now: '\u0417\u0430\u0440\u0430\u0437',
today: '\u0421\u044C\u043E\u0433\u043E\u0434\u043D\u0456',
cancel: '\u0412\u0456\u0434\u043C\u0456\u043D\u0430',
clear: '\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u0438',
confirm: 'OK',
selectDate:
'\u0412\u0438\u0431\u0440\u0430\u0442\u0438 \u0434\u0430\u0442\u0443',
selectTime:
'\u0412\u0438\u0431\u0440\u0430\u0442\u0438 \u0447\u0430\u0441',
startDate:
'\u0414\u0430\u0442\u0430 \u043F\u043E\u0447\u0430\u0442\u043A\u0443',
startTime:
'\u0427\u0430\u0441 \u043F\u043E\u0447\u0430\u0442\u043A\u0443',
endDate:
'\u0414\u0430\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044F',
endTime:
'\u0427\u0430\u0441 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044F',
prevYear:
'\u041F\u043E\u043F\u0435\u0440\u0435\u0434\u043D\u0456\u0439 \u0420\u0456\u043A',
nextYear:
'\u041D\u0430\u0441\u0442\u0443\u043F\u043D\u0438\u0439 \u0420\u0456\u043A',
prevMonth:
'\u041F\u043E\u043F\u0435\u0440\u0435\u0434\u043D\u0456\u0439 \u041C\u0456\u0441\u044F\u0446\u044C',
nextMonth:
'\u041D\u0430\u0441\u0442\u0443\u043F\u043D\u0438\u0439 \u041C\u0456\u0441\u044F\u0446\u044C',
year: '',
month1: '\u0421\u0456\u0447\u0435\u043D\u044C',
month2: '\u041B\u044E\u0442\u0438\u0439',
month3: '\u0411\u0435\u0440\u0435\u0437\u0435\u043D\u044C',
month4: '\u041A\u0432\u0456\u0442\u0435\u043D\u044C',
month5: '\u0422\u0440\u0430\u0432\u0435\u043D\u044C',
month6: '\u0427\u0435\u0440\u0432\u0435\u043D\u044C',
month7: '\u041B\u0438\u043F\u0435\u043D\u044C',
month8: '\u0421\u0435\u0440\u043F\u0435\u043D\u044C',
month9: '\u0412\u0435\u0440\u0435\u0441\u0435\u043D\u044C',
month10: '\u0416\u043E\u0432\u0442\u0435\u043D\u044C',
month11: '\u041B\u0438\u0441\u0442\u043E\u043F\u0430\u0434',
month12: '\u0413\u0440\u0443\u0434\u0435\u043D\u044C',
week: '\u0442\u0438\u0436\u0434\u0435\u043D\u044C',
weeks: {
sun: '\u041D\u0434',
mon: '\u041F\u043D',
tue: '\u0412\u0442',
wed: '\u0421\u0440',
thu: '\u0427\u0442',
fri: '\u041F\u0442',
sat: '\u0421\u0431',
},
months: {
jan: '\u0421\u0456\u0447',
feb: '\u041B\u044E\u0442',
mar: '\u0411\u0435\u0440',
apr: '\u041A\u0432\u0456',
may: '\u0422\u0440\u0430',
jun: '\u0427\u0435\u0440',
jul: '\u041B\u0438\u043F',
aug: '\u0421\u0435\u0440',
sep: '\u0412\u0435\u0440',
oct: '\u0416\u043E\u0432',
nov: '\u041B\u0438\u0441',
dec: '\u0413\u0440\u0443',
},
},
select: {
loading:
'\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F',
noMatch:
'\u0421\u043F\u0456\u0432\u043F\u0430\u0434\u0456\u043D\u044C \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E',
noData: '\u041D\u0435\u043C\u0430\u0454 \u0434\u0430\u043D\u0438\u0445',
placeholder: '\u041E\u0431\u0440\u0430\u0442\u0438',
},
cascader: {
noMatch:
'\u0421\u043F\u0456\u0432\u043F\u0430\u0434\u0456\u043D\u044C \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E',
loading:
'\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F',
placeholder: '\u041E\u0431\u0440\u0430\u0442\u0438',
noData: '\u041D\u0435\u043C\u0430\u0454 \u0434\u0430\u043D\u0438\u0445',
},
pagination: {
goto: '\u041F\u0435\u0440\u0435\u0439\u0442\u0438',
pagesize: '\u043D\u0430 \u0441\u0442\u043E\u0440\u0456\u043D\u0446\u0456',
total: '\u0412\u0441\u044C\u043E\u0433\u043E {total}',
pageClassifier: '',
},
messagebox: {
title:
'\u041F\u043E\u0432\u0456\u0434\u043E\u043C\u043B\u0435\u043D\u043D\u044F',
confirm: 'OK',
cancel: '\u0412\u0456\u0434\u043C\u0456\u043D\u0430',
error:
'\u041D\u0435\u043F\u0440\u0438\u043F\u0443\u0441\u0442\u0438\u043C\u0438\u0439 \u0432\u0432\u0456\u0434 \u0434\u0430\u043D\u0438\u0445',
},
upload: {
deleteTip:
'\u043D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C \u043A\u043D\u043E\u043F\u043A\u0443 \u0449\u043E\u0431 \u0432\u0438\u0434\u0430\u043B\u0438\u0442\u0438',
delete: '\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438',
preview: '\u041F\u0435\u0440\u0435\u0433\u043B\u044F\u0434',
continue: '\u041F\u0440\u043E\u0434\u043E\u0432\u0436\u0438\u0442\u0438',
},
table: {
emptyText:
'\u041D\u0435\u043C\u0430\u0454 \u0434\u0430\u043D\u0438\u0445',
confirmFilter:
'\u041F\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0438',
resetFilter: '\u0421\u043A\u0438\u043D\u0443\u0442\u0438',
clearFilter: '\u0412\u0441\u0435',
sumText: '\u0421\u0443\u043C\u0430',
},
tree: {
emptyText:
'\u041D\u0435\u043C\u0430\u0454 \u0434\u0430\u043D\u0438\u0445',
},
transfer: {
noMatch:
'\u0421\u043F\u0456\u0432\u043F\u0430\u0434\u0456\u043D\u044C \u043D\u0435 \u0437\u043D\u0430\u0439\u0434\u0435\u043D\u043E',
noData: '\u041E\u0431\u0440\u0430\u0442\u0438',
titles: [
'\u0421\u043F\u0438\u0441\u043E\u043A 1',
'\u0421\u043F\u0438\u0441\u043E\u043A 2',
],
filterPlaceholder:
'\u0412\u0432\u0435\u0434\u0456\u0442\u044C \u043A\u043B\u044E\u0447\u043E\u0432\u0435 \u0441\u043B\u043E\u0432\u043E',
noCheckedFormat: '{total} \u043F\u0443\u043D\u043A\u0442\u0456\u0432',
hasCheckedFormat:
'{checked}/{total} \u0432\u0438\u0431\u0440\u0430\u043D\u043E',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_51 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: uk,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var uzUz = {
name: 'uz-uz',
el: {
colorpicker: {
confirm: 'Qabul qilish',
clear: 'Tozalash',
},
datepicker: {
now: 'Hozir',
today: 'Bugun',
cancel: 'Bekor qilish',
clear: 'Tozalash',
confirm: 'Qabul qilish',
selectDate: 'Kunni tanlash',
selectTime: 'Soatni tanlash',
startDate: 'Boshlanish sanasi',
startTime: 'Boshlanish vaqti',
endDate: 'Tugash sanasi',
endTime: 'Tugash vaqti',
prevYear: 'O\u02BBtgan yil',
nextYear: 'Kelgusi yil',
prevMonth: 'O\u02BBtgan oy',
nextMonth: 'Kelgusi oy',
year: 'Yil',
month1: 'Yanvar',
month2: 'Fevral',
month3: 'Mart',
month4: 'Aprel',
month5: 'May',
month6: 'Iyun',
month7: 'Iyul',
month8: 'Avgust',
month9: 'Sentabr',
month10: 'Oktabr',
month11: 'Noyabr',
month12: 'Dekabr',
week: 'Hafta',
weeks: {
sun: 'Yak',
mon: 'Dush',
tue: 'Sesh',
wed: 'Chor',
thu: 'Pay',
fri: 'Jum',
sat: 'Shan',
},
months: {
jan: 'Yan',
feb: 'Fev',
mar: 'Mar',
apr: 'Apr',
may: 'May',
jun: 'Iyun',
jul: 'Iyul',
aug: 'Avg',
sep: 'Sen',
oct: 'Okt',
nov: 'Noy',
dec: 'Dek',
},
},
select: {
loading: 'Yuklanmoqda',
noMatch: 'Mos ma\u02BClumot yo\u02BBq',
noData: 'Ma\u02BClumot yo\u02BBq',
placeholder: 'Tanladizngiz',
},
cascader: {
noMatch: 'Mos ma\u02BClumot topilmadi',
loading: 'Yuklanmoqda',
placeholder: 'Tanlash',
noData: 'Ma\u02BClumot yo\u02BBq',
},
pagination: {
goto: 'O\u02BBtish',
pagesize: '/sahifa',
total: 'Barchasi {total} ta',
pageClassifier: '',
},
messagebox: {
title: 'Xabar',
confirm: 'Qabul qilish',
cancel: 'Bekor qilish',
error: 'Xatolik',
},
upload: {
deleteTip: 'O\u02BBchirish tugmasini bosib o\u02BBchiring',
delete: 'O\u02BBchirish',
preview: 'Oldin ko\u02BBrish',
continue: 'Davom qilish',
},
table: {
emptyText: 'Bo\u02BBsh',
confirmFilter: 'Qabul qilish',
resetFilter: 'Oldingi holatga qaytarish',
clearFilter: 'Jami',
sumText: 'Summasi',
},
tree: {
emptyText: 'Ma\u02BClumot yo\u02BBq',
},
transfer: {
noMatch: 'Mos ma\u02BClumot topilmadi',
noData: 'Ma\u02BClumot yo\u02BBq',
titles: ['1-jadval', '2-jadval'],
filterPlaceholder: 'Kalit so\u02BBzni kiriting',
noCheckedFormat: '{total} ta element',
hasCheckedFormat: '{checked}/{total} ta belgilandi',
},
image: {
error: 'Xatolik',
},
pageHeader: {
title: 'Orqaga',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
var __glob_8_52 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: uzUz,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var vi = {
name: 'vi',
el: {
colorpicker: {
confirm: 'OK',
clear: 'X\xF3a',
},
datepicker: {
now: 'Hi\u1EC7n t\u1EA1i',
today: 'H\xF4m nay',
cancel: 'H\u1EE7y',
clear: 'X\xF3a',
confirm: 'OK',
selectDate: 'Ch\u1ECDn ng\xE0y',
selectTime: 'Ch\u1ECDn gi\u1EDD',
startDate: 'Ng\xE0y b\u1EAFt \u0111\u1EA7u',
startTime: 'Th\u1EDDi gian b\u1EAFt \u0111\u1EA7u',
endDate: 'Ng\xE0y k\u1EBFt th\xFAc',
endTime: 'Th\u1EDDi gian k\u1EBFt th\xFAc',
prevYear: 'N\u0103m tr\u01B0\u1EDBc',
nextYear: 'N\u0103m t\u1EDBi',
prevMonth: 'Th\xE1ng tr\u01B0\u1EDBc',
nextMonth: 'Th\xE1ng t\u1EDBi',
year: 'N\u0103m',
month1: 'Th\xE1ng 1',
month2: 'Th\xE1ng 2',
month3: 'Th\xE1ng 3',
month4: 'Th\xE1ng 4',
month5: 'Th\xE1ng 5',
month6: 'Th\xE1ng 6',
month7: 'Th\xE1ng 7',
month8: 'Th\xE1ng 8',
month9: 'Th\xE1ng 9',
month10: 'Th\xE1ng 10',
month11: 'Th\xE1ng 11',
month12: 'Th\xE1ng 12',
weeks: {
sun: 'CN',
mon: 'T2',
tue: 'T3',
wed: 'T4',
thu: 'T5',
fri: 'T6',
sat: 'T7',
},
months: {
jan: 'Th.1',
feb: 'Th.2',
mar: 'Th.3',
apr: 'Th.4',
may: 'Th.5',
jun: 'Th.6',
jul: 'Th.7',
aug: 'Th.8',
sep: 'Th.9',
oct: 'Th.10',
nov: 'Th.11',
dec: 'Th.12',
},
},
select: {
loading: '\u0110ang t\u1EA3i',
noMatch: 'D\u1EEF li\u1EC7u kh\xF4ng ph\xF9 h\u1EE3p',
noData: 'Kh\xF4ng t\xECm th\u1EA5y d\u1EEF li\u1EC7u',
placeholder: 'Ch\u1ECDn',
},
cascader: {
noMatch: 'D\u1EEF li\u1EC7u kh\xF4ng ph\xF9 h\u1EE3p',
loading: '\u0110ang t\u1EA3i',
placeholder: 'Ch\u1ECDn',
noData: 'Kh\xF4ng t\xECm th\u1EA5y d\u1EEF li\u1EC7u',
},
pagination: {
goto: 'Nh\u1EA3y t\u1EDBi',
pagesize: '/trang',
total: 'T\u1ED5ng {total}',
pageClassifier: '',
},
messagebox: {
title: 'Th\xF4ng b\xE1o',
confirm: 'OK',
cancel: 'H\u1EE7y',
error: 'D\u1EEF li\u1EC7u kh\xF4ng h\u1EE3p l\u1EC7',
},
upload: {
deleteTip: 'Nh\u1EA5n xo\xE1 \u0111\u1EC3 xo\xE1',
delete: 'X\xF3a',
preview: 'Xem tr\u01B0\u1EDBc',
continue: 'Ti\u1EBFp t\u1EE5c',
},
table: {
emptyText: 'Kh\xF4ng c\xF3 d\u1EEF li\u1EC7u',
confirmFilter: 'X\xE1c nh\u1EADn',
resetFilter: 'L\xE0m m\u1EDBi',
clearFilter: 'X\xF3a h\u1EBFt',
sumText: 'T\u1ED5ng',
},
tree: {
emptyText: 'Kh\xF4ng c\xF3 d\u1EEF li\u1EC7u',
},
transfer: {
noMatch: 'D\u1EEF li\u1EC7u kh\xF4ng ph\xF9 h\u1EE3p',
noData: 'Kh\xF4ng t\xECm th\u1EA5y d\u1EEF li\u1EC7u',
titles: ['Danh s\xE1ch 1', 'Danh s\xE1ch 2'],
filterPlaceholder: 'Nh\u1EADp t\u1EEB kh\xF3a',
noCheckedFormat: '{total} m\u1EE5c',
hasCheckedFormat: '{checked}/{total} \u0111\xE3 ch\u1ECDn ',
},
image: {
error: 'L\u1ED6I',
},
pageHeader: {
title: 'Quay l\u1EA1i',
},
popconfirm: {
confirmButtonText: 'Ok',
cancelButtonText: 'Hu\u1EF7',
},
},
}
var __glob_8_53 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: vi,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var zhCn$2 = {
name: 'zh-cn',
el: {
colorpicker: {
confirm: '\u786E\u5B9A',
clear: '\u6E05\u7A7A',
},
datepicker: {
now: '\u6B64\u523B',
today: '\u4ECA\u5929',
cancel: '\u53D6\u6D88',
clear: '\u6E05\u7A7A',
confirm: '\u786E\u5B9A',
selectDate: '\u9009\u62E9\u65E5\u671F',
selectTime: '\u9009\u62E9\u65F6\u95F4',
startDate: '\u5F00\u59CB\u65E5\u671F',
startTime: '\u5F00\u59CB\u65F6\u95F4',
endDate: '\u7ED3\u675F\u65E5\u671F',
endTime: '\u7ED3\u675F\u65F6\u95F4',
prevYear: '\u524D\u4E00\u5E74',
nextYear: '\u540E\u4E00\u5E74',
prevMonth: '\u4E0A\u4E2A\u6708',
nextMonth: '\u4E0B\u4E2A\u6708',
year: '\u5E74',
month1: '1 \u6708',
month2: '2 \u6708',
month3: '3 \u6708',
month4: '4 \u6708',
month5: '5 \u6708',
month6: '6 \u6708',
month7: '7 \u6708',
month8: '8 \u6708',
month9: '9 \u6708',
month10: '10 \u6708',
month11: '11 \u6708',
month12: '12 \u6708',
weeks: {
sun: '\u65E5',
mon: '\u4E00',
tue: '\u4E8C',
wed: '\u4E09',
thu: '\u56DB',
fri: '\u4E94',
sat: '\u516D',
},
months: {
jan: '\u4E00\u6708',
feb: '\u4E8C\u6708',
mar: '\u4E09\u6708',
apr: '\u56DB\u6708',
may: '\u4E94\u6708',
jun: '\u516D\u6708',
jul: '\u4E03\u6708',
aug: '\u516B\u6708',
sep: '\u4E5D\u6708',
oct: '\u5341\u6708',
nov: '\u5341\u4E00\u6708',
dec: '\u5341\u4E8C\u6708',
},
},
select: {
loading: '\u52A0\u8F7D\u4E2D',
noMatch: '\u65E0\u5339\u914D\u6570\u636E',
noData: '\u65E0\u6570\u636E',
placeholder: '\u8BF7\u9009\u62E9',
},
cascader: {
noMatch: '\u65E0\u5339\u914D\u6570\u636E',
loading: '\u52A0\u8F7D\u4E2D',
placeholder: '\u8BF7\u9009\u62E9',
noData: '\u6682\u65E0\u6570\u636E',
},
pagination: {
goto: '\u524D\u5F80',
pagesize: '\u6761/\u9875',
total: '\u5171 {total} \u6761',
pageClassifier: '\u9875',
deprecationWarning:
'\u4F60\u4F7F\u7528\u4E86\u4E00\u4E9B\u5DF2\u88AB\u5E9F\u5F03\u7684\u7528\u6CD5\uFF0C\u8BF7\u53C2\u8003 el-pagination \u7684\u5B98\u65B9\u6587\u6863',
},
messagebox: {
title: '\u63D0\u793A',
confirm: '\u786E\u5B9A',
cancel: '\u53D6\u6D88',
error: '\u8F93\u5165\u7684\u6570\u636E\u4E0D\u5408\u6CD5!',
},
upload: {
deleteTip: '\u6309 delete \u952E\u53EF\u5220\u9664',
delete: '\u5220\u9664',
preview: '\u67E5\u770B\u56FE\u7247',
continue: '\u7EE7\u7EED\u4E0A\u4F20',
},
table: {
emptyText: '\u6682\u65E0\u6570\u636E',
confirmFilter: '\u7B5B\u9009',
resetFilter: '\u91CD\u7F6E',
clearFilter: '\u5168\u90E8',
sumText: '\u5408\u8BA1',
},
tree: {
emptyText: '\u6682\u65E0\u6570\u636E',
},
transfer: {
noMatch: '\u65E0\u5339\u914D\u6570\u636E',
noData: '\u65E0\u6570\u636E',
titles: ['\u5217\u8868 1', '\u5217\u8868 2'],
filterPlaceholder: '\u8BF7\u8F93\u5165\u641C\u7D22\u5185\u5BB9',
noCheckedFormat: '\u5171 {total} \u9879',
hasCheckedFormat: '\u5DF2\u9009 {checked}/{total} \u9879',
},
image: {
error: '\u52A0\u8F7D\u5931\u8D25',
},
pageHeader: {
title: '\u8FD4\u56DE',
},
popconfirm: {
confirmButtonText: '\u786E\u5B9A',
cancelButtonText: '\u53D6\u6D88',
},
},
}
var __glob_8_54 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: zhCn$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var zhTw = {
name: 'zh-tw',
el: {
colorpicker: {
confirm: '\u78BA\u8A8D',
clear: '\u6E05\u7A7A',
},
datepicker: {
now: '\u73FE\u5728',
today: '\u4ECA\u5929',
cancel: '\u53D6\u6D88',
clear: '\u6E05\u7A7A',
confirm: '\u78BA\u8A8D',
selectDate: '\u9078\u64C7\u65E5\u671F',
selectTime: '\u9078\u64C7\u6642\u9593',
startDate: '\u958B\u59CB\u65E5\u671F',
startTime: '\u958B\u59CB\u6642\u9593',
endDate: '\u7D50\u675F\u65E5\u671F',
endTime: '\u7D50\u675F\u6642\u9593',
prevYear: '\u524D\u4E00\u5E74',
nextYear: '\u5F8C\u4E00\u5E74',
prevMonth: '\u4E0A\u500B\u6708',
nextMonth: '\u4E0B\u500B\u6708',
year: '\u5E74',
month1: '1 \u6708',
month2: '2 \u6708',
month3: '3 \u6708',
month4: '4 \u6708',
month5: '5 \u6708',
month6: '6 \u6708',
month7: '7 \u6708',
month8: '8 \u6708',
month9: '9 \u6708',
month10: '10 \u6708',
month11: '11 \u6708',
month12: '12 \u6708',
weeks: {
sun: '\u65E5',
mon: '\u4E00',
tue: '\u4E8C',
wed: '\u4E09',
thu: '\u56DB',
fri: '\u4E94',
sat: '\u516D',
},
months: {
jan: '\u4E00\u6708',
feb: '\u4E8C\u6708',
mar: '\u4E09\u6708',
apr: '\u56DB\u6708',
may: '\u4E94\u6708',
jun: '\u516D\u6708',
jul: '\u4E03\u6708',
aug: '\u516B\u6708',
sep: '\u4E5D\u6708',
oct: '\u5341\u6708',
nov: '\u5341\u4E00\u6708',
dec: '\u5341\u4E8C\u6708',
},
},
select: {
loading: '\u52A0\u8F09\u4E2D',
noMatch: '\u7121\u5339\u914D\u8CC7\u6599',
noData: '\u7121\u8CC7\u6599',
placeholder: '\u8ACB\u9078\u64C7',
},
cascader: {
noMatch: '\u7121\u5339\u914D\u8CC7\u6599',
loading: '\u52A0\u8F09\u4E2D',
placeholder: '\u8ACB\u9078\u64C7',
noData: '\u7121\u8CC7\u6599',
},
pagination: {
goto: '\u524D\u5F80',
pagesize: '\u9805/\u9801',
total: '\u5171 {total} \u9805',
pageClassifier: '\u9801',
},
messagebox: {
title: '\u63D0\u793A',
confirm: '\u78BA\u5B9A',
cancel: '\u53D6\u6D88',
error: '\u8F38\u5165\u7684\u8CC7\u6599\u4E0D\u7B26\u898F\u5B9A!',
},
upload: {
deleteTip: '\u6309 delete \u9375\u53EF\u522A\u9664',
delete: '\u522A\u9664',
preview: '\u67E5\u770B\u5716\u7247',
continue: '\u7E7C\u7E8C\u4E0A\u50B3',
},
table: {
emptyText: '\u66AB\u7121\u8CC7\u6599',
confirmFilter: '\u7BE9\u9078',
resetFilter: '\u91CD\u7F6E',
clearFilter: '\u5168\u90E8',
sumText: '\u5408\u8A08',
},
tree: {
emptyText: '\u66AB\u7121\u8CC7\u6599',
},
transfer: {
noMatch: '\u7121\u5339\u914D\u8CC7\u6599',
noData: '\u7121\u8CC7\u6599',
titles: ['\u5217\u8868 1', '\u5217\u8868 2'],
filterPlaceholder: '\u8ACB\u8F38\u5165\u641C\u7D22\u5167\u5BB9',
noCheckedFormat: '\u5171 {total} \u9805',
hasCheckedFormat: '\u5DF2\u9078 {checked}/{total} \u9805',
},
image: {
error: '\u52A0\u8F09\u5931\u6557',
},
pageHeader: {
title: '\u8FD4\u56DE',
},
popconfirm: {
confirmButtonText: '\u78BA\u8A8D',
cancelButtonText: '\u53D6\u6D88',
},
},
}
var __glob_8_55 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: zhTw,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
class Base {
vueKey = Math.random()
constructor() {
Object.defineProperty(this, 'vueKey', {
enumerable: false,
})
return reactive(this)
}
}
var __glob_0_1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
Base,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const EDITING = 'editing'
const RUNNING = 'running'
const MODE = {
EDITING,
RUNNING,
}
const mode = /running/.test(location.href) ? MODE.RUNNING : MODE.EDITING
const editing = mode === MODE.EDITING
const running = mode === MODE.RUNNING
class Client {
constructor() {}
static windowArea = {}
beforeSize = {
x: 150,
y: 100,
width: 1600,
height: 800,
}
fullScreenBeforeSize = {
x: 150,
y: 100,
width: 1600,
height: 800,
}
isClient() {
return !!window.bridge?.electron
}
async invoke(...args) {
if (!window.bridge) {
throw new Error('!bridge')
}
return await window.bridge.invoke(...args)
}
async openDirectory(option2 = {}) {
if (!window.bridge) return ''
option2 = Object.assign(
{
title: '\u8BF7\u9009\u62E9\u6587\u4EF6\u4F4D\u7F6E',
buttonLabel: '\u786E\u5B9A',
properties: ['openDirectory'],
filters: [{ name: 'FileType', extensions: ['cmspkg'] }],
},
option2
)
return new Promise((rs2) => {
client
.invoke(async ({ electron: electron2 }, option22) => {
const { dialog, BrowserWindow } = electron2
const win = BrowserWindow.getFocusedWindow()
const res = await dialog.showOpenDialog(win, option22)
if (res !== void 0) {
return res
}
}, option2)
.then((res) => {
!res.canceled && rs2(res.filePaths[0])
})
})
}
async getFilePath(option2 = {}) {
if (!window.bridge) return []
option2 = Object.assign(
{
title: '\u8BF7\u9009\u62E9\u6587\u4EF6',
filters: [{ name: 'SQLite File Type', extensions: ['db'] }],
},
option2
)
return new Promise((rs2) => {
client
.invoke(async ({ electron: electron2 }, option22) => {
const { dialog, BrowserWindow } = electron2
const win = BrowserWindow.getFocusedWindow()
const res = await dialog.showOpenDialog(win, option22)
if (res !== void 0) {
return res
}
}, option2)
.then((res) => {
!res.canceled && rs2(res.filePaths)
})
})
}
async saveFile(dir3, fileName, url2) {
if (!window.bridge) return ''
let arraybuffer = await request.get(url2, { responseType: 'arraybuffer' })
return new Promise((rs2) => {
client
.invoke(
(
{ electron: electron2, require: require2 },
dir22,
fileName2,
arrayBuffer
) => {
const fs = require2('fs')
const path = require2('path')
const { shell } = electron2
let isExist = fs.existsSync(dir22)
if (!isExist) {
fs.mkdirSync(dir22, {
recursive: true,
})
}
const filePath = path.join(dir22, '/' + fileName2)
const ui32 = new Uint8Array(arrayBuffer)
fs.writeFileSync(filePath, ui32)
shell.showItemInFolder(filePath)
},
dir3,
fileName,
arraybuffer
)
.then(() => {
rs2(true)
})
})
}
async isExists(path) {
return new Promise((rs2) => {
client
.invoke(({ require: require2 }, path2) => {
const fs = require2('fs')
let isExists = fs.existsSync(path2)
return isExists
}, path)
.then((res) => {
rs2(res)
})
})
}
async getProjectDefaultFile() {
return new Promise((rs2) => {
client
.invoke(({ electron: electron2, require: require2 }) => {
let { app: app2 } = electron2
const path = require2('path')
return path.join(app2.getAppPath(), '../../../../host/data/projects')
})
.then((path) => {
rs2(path)
})
})
}
async getWindowArea() {
return new Promise(async (rs2) => {
await client
.invoke(({ electron: electron2 }) => {
let windowArea = {}
const { screen } = electron2
const primaryDisplay = screen.getAllDisplays()
let xList = [],
yList = [],
boundsList = []
let currentDisplay = screen.getPrimaryDisplay()
let singleWorkArea = currentDisplay.workArea
primaryDisplay.forEach((disWin) => {
xList.push(disWin.bounds.x)
yList.push(disWin.bounds.y)
boundsList.push(disWin.bounds)
})
let fullWorkSizeWidth =
primaryDisplay[
xList.findIndex((item2) => item2 === Math.max(...xList))
].workArea.width + Math.max(...xList)
let fullBoundsWidth =
primaryDisplay[
xList.findIndex((item2) => item2 === Math.max(...xList))
].bounds.width + Math.max(...xList)
let fullWorkSizeHeight =
primaryDisplay[
yList.findIndex((item2) => item2 === Math.max(...yList))
].workArea.height + Math.max(...yList)
let fullBoundsHeight =
primaryDisplay[
yList.findIndex((item2) => item2 === Math.max(...yList))
].bounds.height + Math.max(...yList)
windowArea.fullArea = {
full: {
width: fullBoundsWidth,
height: fullBoundsHeight,
},
normal: {
width: fullWorkSizeWidth,
height: fullWorkSizeHeight,
},
}
windowArea.isValidFullArea = boundsList.every(
(item2) =>
item2.x % singleWorkArea.width === 0 &&
item2.y % singleWorkArea.height === 0
)
return windowArea
})
.then((res) => {
rs2(res)
})
})
}
requestFullscreen(isFullAllWindow = app.config.isFullAllWindow) {
return new Promise((rs2) => {
client
.invoke(
({ electron: electron2 }, isFullAllWindow2, windowArea) => {
const { BrowserWindow } = electron2
const win = BrowserWindow.getFocusedWindow()
if (!win) return
let fullScreenBeforeSize = win.getBounds()
if (!isFullAllWindow2 || !windowArea.isValidFullArea) {
win.setFullScreen(true)
} else {
win.webContents.executeJavaScript(
`(${function (beforeSize) {
models.client.fullScreenBeforeSize = beforeSize
}})(${JSON.stringify(fullScreenBeforeSize)})`
)
win.setBounds({
x: 0,
y: 0,
width: windowArea.fullArea.full.width,
height: windowArea.fullArea.full.height,
})
}
},
isFullAllWindow,
Client.windowArea,
mode
)
.then(() => {
rs2(true)
})
})
}
exitFullScreen() {
return new Promise((rs2) => {
client
.invoke(({ electron: electron2 }, beforeSize) => {
const { BrowserWindow } = electron2
const win = BrowserWindow.getFocusedWindow()
if (!win) return
win.isFullScreen()
? win.setFullScreen(false)
: win.setBounds(beforeSize)
}, client.fullScreenBeforeSize)
.then(() => {
rs2(true)
})
})
}
static isMaximized() {
return new Promise((rs2) => {
client
.invoke(({ electron: electron2 }, windowArea) => {
const { BrowserWindow } = electron2
const win = BrowserWindow.getFocusedWindow()
if (!win) return
let size = win.getBounds()
return (
size.width === windowArea.fullArea.normal.width &&
size.height === windowArea.fullArea.normal.height
)
}, Client.windowArea)
.then((res) => {
rs2(res)
})
})
}
setMaxSize() {
return new Promise((rs2) => {
client
.invoke(
async ({ electron: electron2 }, isFullAllWindow, windowArea) => {
const { BrowserWindow } = electron2
const win = BrowserWindow.getFocusedWindow()
if (!win) return
if (isFullAllWindow) {
win.setBounds({
width: windowArea.fullArea.normal.width,
height: windowArea.fullArea.normal.height,
x: 0,
y: 0,
})
} else {
win.maximize()
}
return
},
app.config.isFullAllWindow,
Client.windowArea
)
.then((res) => {
rs2(res)
})
})
}
maximize() {
return new Promise((rs2) => {
client
.invoke(
async (
{ electron: electron2 },
mode2,
isFullAllWindow,
windowArea,
beforeSize
) => {
const { BrowserWindow } = electron2
const win = BrowserWindow.getFocusedWindow()
if (!win) return
if (
isFullAllWindow &&
windowArea.isValidFullArea &&
mode2 === 'running'
) {
let size = win.getBounds()
let isMaximized =
size.width === windowArea.fullArea.normal.width &&
size.height === windowArea.fullArea.normal.height
if (isMaximized) {
win.setBounds(beforeSize)
} else {
win.webContents.executeJavaScript(
`(${function (beforeSize2) {
models.client.beforeSize = beforeSize2
}})(${JSON.stringify(size)})`
)
win.setBounds({
width: windowArea.fullArea.normal.width,
height: windowArea.fullArea.normal.height,
x: 0,
y: 0,
})
}
return
}
if (win.isMaximized()) {
win.restore()
} else {
win.maximize()
}
},
mode,
app.config.isFullAllWindow,
Client.windowArea,
client.beforeSize
)
.then((res) => {
rs2(res)
})
})
}
}
const client = new Client()
if (client.isClient()) {
Client.windowArea = await client.getWindowArea()
}
window.cmstype = window.electron || 'Web'
var __glob_0_4 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
Client,
client,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var lodash$2 = { exports: {} }
/**
* @license
* Lodash
* Copyright OpenJS Foundation and other contributors
* Released under MIT license
* Based on Underscore.js 1.8.3
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
*/
;(function (module2, exports2) {
;(function () {
var undefined$1
var VERSION2 = '4.17.21'
var LARGE_ARRAY_SIZE2 = 200
var CORE_ERROR_TEXT =
'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',
FUNC_ERROR_TEXT2 = 'Expected a function',
INVALID_TEMPL_VAR_ERROR_TEXT =
'Invalid `variable` option passed into `_.template`'
var HASH_UNDEFINED2 = '__lodash_hash_undefined__'
var MAX_MEMOIZE_SIZE2 = 500
var PLACEHOLDER = '__lodash_placeholder__'
var CLONE_DEEP_FLAG2 = 1,
CLONE_FLAT_FLAG2 = 2,
CLONE_SYMBOLS_FLAG2 = 4
var COMPARE_PARTIAL_FLAG2 = 1,
COMPARE_UNORDERED_FLAG2 = 2
var WRAP_BIND_FLAG = 1,
WRAP_BIND_KEY_FLAG = 2,
WRAP_CURRY_BOUND_FLAG = 4,
WRAP_CURRY_FLAG = 8,
WRAP_CURRY_RIGHT_FLAG = 16,
WRAP_PARTIAL_FLAG = 32,
WRAP_PARTIAL_RIGHT_FLAG = 64,
WRAP_ARY_FLAG = 128,
WRAP_REARG_FLAG = 256,
WRAP_FLIP_FLAG = 512
var DEFAULT_TRUNC_LENGTH = 30,
DEFAULT_TRUNC_OMISSION = '...'
var HOT_COUNT2 = 800,
HOT_SPAN2 = 16
var LAZY_FILTER_FLAG = 1,
LAZY_MAP_FLAG = 2,
LAZY_WHILE_FLAG = 3
var INFINITY2 = 1 / 0,
MAX_SAFE_INTEGER2 = 9007199254740991,
MAX_INTEGER = 17976931348623157e292,
NAN2 = 0 / 0
var MAX_ARRAY_LENGTH = 4294967295,
MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,
HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1
var wrapFlags = [
['ary', WRAP_ARY_FLAG],
['bind', WRAP_BIND_FLAG],
['bindKey', WRAP_BIND_KEY_FLAG],
['curry', WRAP_CURRY_FLAG],
['curryRight', WRAP_CURRY_RIGHT_FLAG],
['flip', WRAP_FLIP_FLAG],
['partial', WRAP_PARTIAL_FLAG],
['partialRight', WRAP_PARTIAL_RIGHT_FLAG],
['rearg', WRAP_REARG_FLAG],
]
var argsTag2 = '[object Arguments]',
arrayTag2 = '[object Array]',
asyncTag2 = '[object AsyncFunction]',
boolTag2 = '[object Boolean]',
dateTag2 = '[object Date]',
domExcTag = '[object DOMException]',
errorTag2 = '[object Error]',
funcTag2 = '[object Function]',
genTag2 = '[object GeneratorFunction]',
mapTag2 = '[object Map]',
numberTag2 = '[object Number]',
nullTag2 = '[object Null]',
objectTag2 = '[object Object]',
promiseTag2 = '[object Promise]',
proxyTag2 = '[object Proxy]',
regexpTag2 = '[object RegExp]',
setTag2 = '[object Set]',
stringTag2 = '[object String]',
symbolTag2 = '[object Symbol]',
undefinedTag2 = '[object Undefined]',
weakMapTag2 = '[object WeakMap]',
weakSetTag = '[object WeakSet]'
var arrayBufferTag2 = '[object ArrayBuffer]',
dataViewTag2 = '[object DataView]',
float32Tag2 = '[object Float32Array]',
float64Tag2 = '[object Float64Array]',
int8Tag2 = '[object Int8Array]',
int16Tag2 = '[object Int16Array]',
int32Tag2 = '[object Int32Array]',
uint8Tag2 = '[object Uint8Array]',
uint8ClampedTag2 = '[object Uint8ClampedArray]',
uint16Tag2 = '[object Uint16Array]',
uint32Tag2 = '[object Uint32Array]'
var reEmptyStringLeading = /\b__p \+= '';/g,
reEmptyStringMiddle = /\b(__p \+=) '' \+/g,
reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g
var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,
reUnescapedHtml = /[&<>"']/g,
reHasEscapedHtml = RegExp(reEscapedHtml.source),
reHasUnescapedHtml = RegExp(reUnescapedHtml.source)
var reEscape = /<%-([\s\S]+?)%>/g,
reEvaluate = /<%([\s\S]+?)%>/g,
reInterpolate = /<%=([\s\S]+?)%>/g
var reIsDeepProp2 = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
reIsPlainProp2 = /^\w*$/,
rePropName2 =
/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g
var reRegExpChar2 = /[\\^$.*+?()[\]{}|]/g,
reHasRegExpChar = RegExp(reRegExpChar2.source)
var reTrimStart2 = /^\s+/
var reWhitespace2 = /\s/
var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,
reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/,
reSplitDetails = /,? & /
var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g
var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/
var reEscapeChar2 = /\\(\\)?/g
var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g
var reFlags2 = /\w*$/
var reIsBadHex2 = /^[-+]0x[0-9a-f]+$/i
var reIsBinary2 = /^0b[01]+$/i
var reIsHostCtor2 = /^\[object .+?Constructor\]$/
var reIsOctal2 = /^0o[0-7]+$/i
var reIsUint2 = /^(?:0|[1-9]\d*)$/
var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g
var reNoMatch = /($^)/
var reUnescapedString = /['\n\r\u2028\u2029\\]/g
var rsAstralRange = '\\ud800-\\udfff',
rsComboMarksRange = '\\u0300-\\u036f',
reComboHalfMarksRange = '\\ufe20-\\ufe2f',
rsComboSymbolsRange = '\\u20d0-\\u20ff',
rsComboRange =
rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
rsDingbatRange = '\\u2700-\\u27bf',
rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff',
rsMathOpRange = '\\xac\\xb1\\xd7\\xf7',
rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf',
rsPunctuationRange = '\\u2000-\\u206f',
rsSpaceRange =
' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000',
rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde',
rsVarRange = '\\ufe0e\\ufe0f',
rsBreakRange =
rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange
var rsApos = "['\u2019]",
rsAstral = '[' + rsAstralRange + ']',
rsBreak = '[' + rsBreakRange + ']',
rsCombo = '[' + rsComboRange + ']',
rsDigits = '\\d+',
rsDingbat = '[' + rsDingbatRange + ']',
rsLower = '[' + rsLowerRange + ']',
rsMisc =
'[^' +
rsAstralRange +
rsBreakRange +
rsDigits +
rsDingbatRange +
rsLowerRange +
rsUpperRange +
']',
rsFitz = '\\ud83c[\\udffb-\\udfff]',
rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
rsNonAstral = '[^' + rsAstralRange + ']',
rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
rsUpper = '[' + rsUpperRange + ']',
rsZWJ = '\\u200d'
var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',
rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',
rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',
rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',
reOptMod = rsModifier + '?',
rsOptVar = '[' + rsVarRange + ']?',
rsOptJoin =
'(?:' +
rsZWJ +
'(?:' +
[rsNonAstral, rsRegional, rsSurrPair].join('|') +
')' +
rsOptVar +
reOptMod +
')*',
rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])',
rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])',
rsSeq = rsOptVar + reOptMod + rsOptJoin,
rsEmoji =
'(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,
rsSymbol =
'(?:' +
[
rsNonAstral + rsCombo + '?',
rsCombo,
rsRegional,
rsSurrPair,
rsAstral,
].join('|') +
')'
var reApos = RegExp(rsApos, 'g')
var reComboMark = RegExp(rsCombo, 'g')
var reUnicode = RegExp(
rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq,
'g'
)
var reUnicodeWord = RegExp(
[
rsUpper +
'?' +
rsLower +
'+' +
rsOptContrLower +
'(?=' +
[rsBreak, rsUpper, '$'].join('|') +
')',
rsMiscUpper +
'+' +
rsOptContrUpper +
'(?=' +
[rsBreak, rsUpper + rsMiscLower, '$'].join('|') +
')',
rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,
rsUpper + '+' + rsOptContrUpper,
rsOrdUpper,
rsOrdLower,
rsDigits,
rsEmoji,
].join('|'),
'g'
)
var reHasUnicode = RegExp(
'[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'
)
var reHasUnicodeWord =
/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/
var contextProps = [
'Array',
'Buffer',
'DataView',
'Date',
'Error',
'Float32Array',
'Float64Array',
'Function',
'Int8Array',
'Int16Array',
'Int32Array',
'Map',
'Math',
'Object',
'Promise',
'RegExp',
'Set',
'String',
'Symbol',
'TypeError',
'Uint8Array',
'Uint8ClampedArray',
'Uint16Array',
'Uint32Array',
'WeakMap',
'_',
'clearTimeout',
'isFinite',
'parseInt',
'setTimeout',
]
var templateCounter = -1
var typedArrayTags2 = {}
typedArrayTags2[float32Tag2] =
typedArrayTags2[float64Tag2] =
typedArrayTags2[int8Tag2] =
typedArrayTags2[int16Tag2] =
typedArrayTags2[int32Tag2] =
typedArrayTags2[uint8Tag2] =
typedArrayTags2[uint8ClampedTag2] =
typedArrayTags2[uint16Tag2] =
typedArrayTags2[uint32Tag2] =
true
typedArrayTags2[argsTag2] =
typedArrayTags2[arrayTag2] =
typedArrayTags2[arrayBufferTag2] =
typedArrayTags2[boolTag2] =
typedArrayTags2[dataViewTag2] =
typedArrayTags2[dateTag2] =
typedArrayTags2[errorTag2] =
typedArrayTags2[funcTag2] =
typedArrayTags2[mapTag2] =
typedArrayTags2[numberTag2] =
typedArrayTags2[objectTag2] =
typedArrayTags2[regexpTag2] =
typedArrayTags2[setTag2] =
typedArrayTags2[stringTag2] =
typedArrayTags2[weakMapTag2] =
false
var cloneableTags2 = {}
cloneableTags2[argsTag2] =
cloneableTags2[arrayTag2] =
cloneableTags2[arrayBufferTag2] =
cloneableTags2[dataViewTag2] =
cloneableTags2[boolTag2] =
cloneableTags2[dateTag2] =
cloneableTags2[float32Tag2] =
cloneableTags2[float64Tag2] =
cloneableTags2[int8Tag2] =
cloneableTags2[int16Tag2] =
cloneableTags2[int32Tag2] =
cloneableTags2[mapTag2] =
cloneableTags2[numberTag2] =
cloneableTags2[objectTag2] =
cloneableTags2[regexpTag2] =
cloneableTags2[setTag2] =
cloneableTags2[stringTag2] =
cloneableTags2[symbolTag2] =
cloneableTags2[uint8Tag2] =
cloneableTags2[uint8ClampedTag2] =
cloneableTags2[uint16Tag2] =
cloneableTags2[uint32Tag2] =
true
cloneableTags2[errorTag2] =
cloneableTags2[funcTag2] =
cloneableTags2[weakMapTag2] =
false
var deburredLetters = {
'\xC0': 'A',
'\xC1': 'A',
'\xC2': 'A',
'\xC3': 'A',
'\xC4': 'A',
'\xC5': 'A',
'\xE0': 'a',
'\xE1': 'a',
'\xE2': 'a',
'\xE3': 'a',
'\xE4': 'a',
'\xE5': 'a',
'\xC7': 'C',
'\xE7': 'c',
'\xD0': 'D',
'\xF0': 'd',
'\xC8': 'E',
'\xC9': 'E',
'\xCA': 'E',
'\xCB': 'E',
'\xE8': 'e',
'\xE9': 'e',
'\xEA': 'e',
'\xEB': 'e',
'\xCC': 'I',
'\xCD': 'I',
'\xCE': 'I',
'\xCF': 'I',
'\xEC': 'i',
'\xED': 'i',
'\xEE': 'i',
'\xEF': 'i',
'\xD1': 'N',
'\xF1': 'n',
'\xD2': 'O',
'\xD3': 'O',
'\xD4': 'O',
'\xD5': 'O',
'\xD6': 'O',
'\xD8': 'O',
'\xF2': 'o',
'\xF3': 'o',
'\xF4': 'o',
'\xF5': 'o',
'\xF6': 'o',
'\xF8': 'o',
'\xD9': 'U',
'\xDA': 'U',
'\xDB': 'U',
'\xDC': 'U',
'\xF9': 'u',
'\xFA': 'u',
'\xFB': 'u',
'\xFC': 'u',
'\xDD': 'Y',
'\xFD': 'y',
'\xFF': 'y',
'\xC6': 'Ae',
'\xE6': 'ae',
'\xDE': 'Th',
'\xFE': 'th',
'\xDF': 'ss',
'\u0100': 'A',
'\u0102': 'A',
'\u0104': 'A',
'\u0101': 'a',
'\u0103': 'a',
'\u0105': 'a',
'\u0106': 'C',
'\u0108': 'C',
'\u010A': 'C',
'\u010C': 'C',
'\u0107': 'c',
'\u0109': 'c',
'\u010B': 'c',
'\u010D': 'c',
'\u010E': 'D',
'\u0110': 'D',
'\u010F': 'd',
'\u0111': 'd',
'\u0112': 'E',
'\u0114': 'E',
'\u0116': 'E',
'\u0118': 'E',
'\u011A': 'E',
'\u0113': 'e',
'\u0115': 'e',
'\u0117': 'e',
'\u0119': 'e',
'\u011B': 'e',
'\u011C': 'G',
'\u011E': 'G',
'\u0120': 'G',
'\u0122': 'G',
'\u011D': 'g',
'\u011F': 'g',
'\u0121': 'g',
'\u0123': 'g',
'\u0124': 'H',
'\u0126': 'H',
'\u0125': 'h',
'\u0127': 'h',
'\u0128': 'I',
'\u012A': 'I',
'\u012C': 'I',
'\u012E': 'I',
'\u0130': 'I',
'\u0129': 'i',
'\u012B': 'i',
'\u012D': 'i',
'\u012F': 'i',
'\u0131': 'i',
'\u0134': 'J',
'\u0135': 'j',
'\u0136': 'K',
'\u0137': 'k',
'\u0138': 'k',
'\u0139': 'L',
'\u013B': 'L',
'\u013D': 'L',
'\u013F': 'L',
'\u0141': 'L',
'\u013A': 'l',
'\u013C': 'l',
'\u013E': 'l',
'\u0140': 'l',
'\u0142': 'l',
'\u0143': 'N',
'\u0145': 'N',
'\u0147': 'N',
'\u014A': 'N',
'\u0144': 'n',
'\u0146': 'n',
'\u0148': 'n',
'\u014B': 'n',
'\u014C': 'O',
'\u014E': 'O',
'\u0150': 'O',
'\u014D': 'o',
'\u014F': 'o',
'\u0151': 'o',
'\u0154': 'R',
'\u0156': 'R',
'\u0158': 'R',
'\u0155': 'r',
'\u0157': 'r',
'\u0159': 'r',
'\u015A': 'S',
'\u015C': 'S',
'\u015E': 'S',
'\u0160': 'S',
'\u015B': 's',
'\u015D': 's',
'\u015F': 's',
'\u0161': 's',
'\u0162': 'T',
'\u0164': 'T',
'\u0166': 'T',
'\u0163': 't',
'\u0165': 't',
'\u0167': 't',
'\u0168': 'U',
'\u016A': 'U',
'\u016C': 'U',
'\u016E': 'U',
'\u0170': 'U',
'\u0172': 'U',
'\u0169': 'u',
'\u016B': 'u',
'\u016D': 'u',
'\u016F': 'u',
'\u0171': 'u',
'\u0173': 'u',
'\u0174': 'W',
'\u0175': 'w',
'\u0176': 'Y',
'\u0177': 'y',
'\u0178': 'Y',
'\u0179': 'Z',
'\u017B': 'Z',
'\u017D': 'Z',
'\u017A': 'z',
'\u017C': 'z',
'\u017E': 'z',
'\u0132': 'IJ',
'\u0133': 'ij',
'\u0152': 'Oe',
'\u0153': 'oe',
'\u0149': "'n",
'\u017F': 's',
}
var htmlEscapes = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": ''',
}
var htmlUnescapes = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
''': "'",
}
var stringEscapes = {
'\\': '\\',
"'": "'",
'\n': 'n',
'\r': 'r',
'\u2028': 'u2028',
'\u2029': 'u2029',
}
var freeParseFloat = parseFloat,
freeParseInt2 = parseInt
var freeGlobal2 =
typeof commonjsGlobal == 'object' &&
commonjsGlobal &&
commonjsGlobal.Object === Object &&
commonjsGlobal
var freeSelf2 =
typeof self == 'object' && self && self.Object === Object && self
var root2 = freeGlobal2 || freeSelf2 || Function('return this')()
var freeExports2 = exports2 && !exports2.nodeType && exports2
var freeModule2 =
freeExports2 && true && module2 && !module2.nodeType && module2
var moduleExports2 = freeModule2 && freeModule2.exports === freeExports2
var freeProcess2 = moduleExports2 && freeGlobal2.process
var nodeUtil2 = (function () {
try {
var types2 =
freeModule2 &&
freeModule2.require &&
freeModule2.require('util').types
if (types2) {
return types2
}
return (
freeProcess2 && freeProcess2.binding && freeProcess2.binding('util')
)
} catch (e2) {}
})()
var nodeIsArrayBuffer = nodeUtil2 && nodeUtil2.isArrayBuffer,
nodeIsDate = nodeUtil2 && nodeUtil2.isDate,
nodeIsMap2 = nodeUtil2 && nodeUtil2.isMap,
nodeIsRegExp = nodeUtil2 && nodeUtil2.isRegExp,
nodeIsSet2 = nodeUtil2 && nodeUtil2.isSet,
nodeIsTypedArray2 = nodeUtil2 && nodeUtil2.isTypedArray
function apply2(func, thisArg, args) {
switch (args.length) {
case 0:
return func.call(thisArg)
case 1:
return func.call(thisArg, args[0])
case 2:
return func.call(thisArg, args[0], args[1])
case 3:
return func.call(thisArg, args[0], args[1], args[2])
}
return func.apply(thisArg, args)
}
function arrayAggregator(array4, setter, iteratee, accumulator) {
var index2 = -1,
length2 = array4 == null ? 0 : array4.length
while (++index2 < length2) {
var value2 = array4[index2]
setter(accumulator, value2, iteratee(value2), array4)
}
return accumulator
}
function arrayEach2(array4, iteratee) {
var index2 = -1,
length2 = array4 == null ? 0 : array4.length
while (++index2 < length2) {
if (iteratee(array4[index2], index2, array4) === false) {
break
}
}
return array4
}
function arrayEachRight(array4, iteratee) {
var length2 = array4 == null ? 0 : array4.length
while (length2--) {
if (iteratee(array4[length2], length2, array4) === false) {
break
}
}
return array4
}
function arrayEvery(array4, predicate) {
var index2 = -1,
length2 = array4 == null ? 0 : array4.length
while (++index2 < length2) {
if (!predicate(array4[index2], index2, array4)) {
return false
}
}
return true
}
function arrayFilter2(array4, predicate) {
var index2 = -1,
length2 = array4 == null ? 0 : array4.length,
resIndex = 0,
result = []
while (++index2 < length2) {
var value2 = array4[index2]
if (predicate(value2, index2, array4)) {
result[resIndex++] = value2
}
}
return result
}
function arrayIncludes2(array4, value2) {
var length2 = array4 == null ? 0 : array4.length
return !!length2 && baseIndexOf2(array4, value2, 0) > -1
}
function arrayIncludesWith2(array4, value2, comparator) {
var index2 = -1,
length2 = array4 == null ? 0 : array4.length
while (++index2 < length2) {
if (comparator(value2, array4[index2])) {
return true
}
}
return false
}
function arrayMap2(array4, iteratee) {
var index2 = -1,
length2 = array4 == null ? 0 : array4.length,
result = Array(length2)
while (++index2 < length2) {
result[index2] = iteratee(array4[index2], index2, array4)
}
return result
}
function arrayPush2(array4, values2) {
var index2 = -1,
length2 = values2.length,
offset2 = array4.length
while (++index2 < length2) {
array4[offset2 + index2] = values2[index2]
}
return array4
}
function arrayReduce2(array4, iteratee, accumulator, initAccum) {
var index2 = -1,
length2 = array4 == null ? 0 : array4.length
if (initAccum && length2) {
accumulator = array4[++index2]
}
while (++index2 < length2) {
accumulator = iteratee(accumulator, array4[index2], index2, array4)
}
return accumulator
}
function arrayReduceRight(array4, iteratee, accumulator, initAccum) {
var length2 = array4 == null ? 0 : array4.length
if (initAccum && length2) {
accumulator = array4[--length2]
}
while (length2--) {
accumulator = iteratee(accumulator, array4[length2], length2, array4)
}
return accumulator
}
function arraySome2(array4, predicate) {
var index2 = -1,
length2 = array4 == null ? 0 : array4.length
while (++index2 < length2) {
if (predicate(array4[index2], index2, array4)) {
return true
}
}
return false
}
var asciiSize = baseProperty('length')
function asciiToArray(string3) {
return string3.split('')
}
function asciiWords(string3) {
return string3.match(reAsciiWord) || []
}
function baseFindKey(collection2, predicate, eachFunc) {
var result
eachFunc(collection2, function (value2, key2, collection3) {
if (predicate(value2, key2, collection3)) {
result = key2
return false
}
})
return result
}
function baseFindIndex2(array4, predicate, fromIndex, fromRight) {
var length2 = array4.length,
index2 = fromIndex + (fromRight ? 1 : -1)
while (fromRight ? index2-- : ++index2 < length2) {
if (predicate(array4[index2], index2, array4)) {
return index2
}
}
return -1
}
function baseIndexOf2(array4, value2, fromIndex) {
return value2 === value2
? strictIndexOf2(array4, value2, fromIndex)
: baseFindIndex2(array4, baseIsNaN2, fromIndex)
}
function baseIndexOfWith(array4, value2, fromIndex, comparator) {
var index2 = fromIndex - 1,
length2 = array4.length
while (++index2 < length2) {
if (comparator(array4[index2], value2)) {
return index2
}
}
return -1
}
function baseIsNaN2(value2) {
return value2 !== value2
}
function baseMean(array4, iteratee) {
var length2 = array4 == null ? 0 : array4.length
return length2 ? baseSum(array4, iteratee) / length2 : NAN2
}
function baseProperty(key2) {
return function (object4) {
return object4 == null ? undefined$1 : object4[key2]
}
}
function basePropertyOf(object4) {
return function (key2) {
return object4 == null ? undefined$1 : object4[key2]
}
}
function baseReduce(
collection2,
iteratee,
accumulator,
initAccum,
eachFunc
) {
eachFunc(collection2, function (value2, index2, collection3) {
accumulator = initAccum
? ((initAccum = false), value2)
: iteratee(accumulator, value2, index2, collection3)
})
return accumulator
}
function baseSortBy(array4, comparer) {
var length2 = array4.length
array4.sort(comparer)
while (length2--) {
array4[length2] = array4[length2].value
}
return array4
}
function baseSum(array4, iteratee) {
var result,
index2 = -1,
length2 = array4.length
while (++index2 < length2) {
var current2 = iteratee(array4[index2])
if (current2 !== undefined$1) {
result = result === undefined$1 ? current2 : result + current2
}
}
return result
}
function baseTimes2(n2, iteratee) {
var index2 = -1,
result = Array(n2)
while (++index2 < n2) {
result[index2] = iteratee(index2)
}
return result
}
function baseToPairs(object4, props2) {
return arrayMap2(props2, function (key2) {
return [key2, object4[key2]]
})
}
function baseTrim2(string3) {
return string3
? string3
.slice(0, trimmedEndIndex2(string3) + 1)
.replace(reTrimStart2, '')
: string3
}
function baseUnary2(func) {
return function (value2) {
return func(value2)
}
}
function baseValues(object4, props2) {
return arrayMap2(props2, function (key2) {
return object4[key2]
})
}
function cacheHas2(cache2, key2) {
return cache2.has(key2)
}
function charsStartIndex(strSymbols, chrSymbols) {
var index2 = -1,
length2 = strSymbols.length
while (
++index2 < length2 &&
baseIndexOf2(chrSymbols, strSymbols[index2], 0) > -1
) {}
return index2
}
function charsEndIndex(strSymbols, chrSymbols) {
var index2 = strSymbols.length
while (
index2-- &&
baseIndexOf2(chrSymbols, strSymbols[index2], 0) > -1
) {}
return index2
}
function countHolders(array4, placeholder) {
var length2 = array4.length,
result = 0
while (length2--) {
if (array4[length2] === placeholder) {
++result
}
}
return result
}
var deburrLetter = basePropertyOf(deburredLetters)
var escapeHtmlChar = basePropertyOf(htmlEscapes)
function escapeStringChar(chr) {
return '\\' + stringEscapes[chr]
}
function getValue2(object4, key2) {
return object4 == null ? undefined$1 : object4[key2]
}
function hasUnicode(string3) {
return reHasUnicode.test(string3)
}
function hasUnicodeWord(string3) {
return reHasUnicodeWord.test(string3)
}
function iteratorToArray(iterator2) {
var data2,
result = []
while (!(data2 = iterator2.next()).done) {
result.push(data2.value)
}
return result
}
function mapToArray2(map2) {
var index2 = -1,
result = Array(map2.size)
map2.forEach(function (value2, key2) {
result[++index2] = [key2, value2]
})
return result
}
function overArg2(func, transform3) {
return function (arg) {
return func(transform3(arg))
}
}
function replaceHolders(array4, placeholder) {
var index2 = -1,
length2 = array4.length,
resIndex = 0,
result = []
while (++index2 < length2) {
var value2 = array4[index2]
if (value2 === placeholder || value2 === PLACEHOLDER) {
array4[index2] = PLACEHOLDER
result[resIndex++] = index2
}
}
return result
}
function setToArray2(set2) {
var index2 = -1,
result = Array(set2.size)
set2.forEach(function (value2) {
result[++index2] = value2
})
return result
}
function setToPairs(set2) {
var index2 = -1,
result = Array(set2.size)
set2.forEach(function (value2) {
result[++index2] = [value2, value2]
})
return result
}
function strictIndexOf2(array4, value2, fromIndex) {
var index2 = fromIndex - 1,
length2 = array4.length
while (++index2 < length2) {
if (array4[index2] === value2) {
return index2
}
}
return -1
}
function strictLastIndexOf(array4, value2, fromIndex) {
var index2 = fromIndex + 1
while (index2--) {
if (array4[index2] === value2) {
return index2
}
}
return index2
}
function stringSize(string3) {
return hasUnicode(string3) ? unicodeSize(string3) : asciiSize(string3)
}
function stringToArray(string3) {
return hasUnicode(string3)
? unicodeToArray(string3)
: asciiToArray(string3)
}
function trimmedEndIndex2(string3) {
var index2 = string3.length
while (index2-- && reWhitespace2.test(string3.charAt(index2))) {}
return index2
}
var unescapeHtmlChar = basePropertyOf(htmlUnescapes)
function unicodeSize(string3) {
var result = (reUnicode.lastIndex = 0)
while (reUnicode.test(string3)) {
++result
}
return result
}
function unicodeToArray(string3) {
return string3.match(reUnicode) || []
}
function unicodeWords(string3) {
return string3.match(reUnicodeWord) || []
}
var runInContext = function runInContext2(context2) {
context2 =
context2 == null
? root2
: _2.defaults(root2.Object(), context2, _2.pick(root2, contextProps))
var Array2 = context2.Array,
Date2 = context2.Date,
Error2 = context2.Error,
Function2 = context2.Function,
Math2 = context2.Math,
Object2 = context2.Object,
RegExp2 = context2.RegExp,
String2 = context2.String,
TypeError2 = context2.TypeError
var arrayProto2 = Array2.prototype,
funcProto2 = Function2.prototype,
objectProto2 = Object2.prototype
var coreJsData2 = context2['__core-js_shared__']
var funcToString2 = funcProto2.toString
var hasOwnProperty2 = objectProto2.hasOwnProperty
var idCounter = 0
var maskSrcKey2 = (function () {
var uid2 = /[^.]+$/.exec(
(coreJsData2 && coreJsData2.keys && coreJsData2.keys.IE_PROTO) || ''
)
return uid2 ? 'Symbol(src)_1.' + uid2 : ''
})()
var nativeObjectToString2 = objectProto2.toString
var objectCtorString = funcToString2.call(Object2)
var oldDash = root2._
var reIsNative2 = RegExp2(
'^' +
funcToString2
.call(hasOwnProperty2)
.replace(reRegExpChar2, '\\$&')
.replace(
/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,
'$1.*?'
) +
'$'
)
var Buffer2 = moduleExports2 ? context2.Buffer : undefined$1,
Symbol2 = context2.Symbol,
Uint8Array2 = context2.Uint8Array,
allocUnsafe2 = Buffer2 ? Buffer2.allocUnsafe : undefined$1,
getPrototype2 = overArg2(Object2.getPrototypeOf, Object2),
objectCreate2 = Object2.create,
propertyIsEnumerable3 = objectProto2.propertyIsEnumerable,
splice2 = arrayProto2.splice,
spreadableSymbol2 = Symbol2 ? Symbol2.isConcatSpreadable : undefined$1,
symIterator = Symbol2 ? Symbol2.iterator : undefined$1,
symToStringTag2 = Symbol2 ? Symbol2.toStringTag : undefined$1
var defineProperty4 = (function () {
try {
var func = getNative2(Object2, 'defineProperty')
func({}, '', {})
return func
} catch (e2) {}
})()
var ctxClearTimeout =
context2.clearTimeout !== root2.clearTimeout && context2.clearTimeout,
ctxNow = Date2 && Date2.now !== root2.Date.now && Date2.now,
ctxSetTimeout =
context2.setTimeout !== root2.setTimeout && context2.setTimeout
var nativeCeil = Math2.ceil,
nativeFloor = Math2.floor,
nativeGetSymbols2 = Object2.getOwnPropertySymbols,
nativeIsBuffer2 = Buffer2 ? Buffer2.isBuffer : undefined$1,
nativeIsFinite = context2.isFinite,
nativeJoin = arrayProto2.join,
nativeKeys2 = overArg2(Object2.keys, Object2),
nativeMax2 = Math2.max,
nativeMin2 = Math2.min,
nativeNow2 = Date2.now,
nativeParseInt = context2.parseInt,
nativeRandom = Math2.random,
nativeReverse2 = arrayProto2.reverse
var DataView2 = getNative2(context2, 'DataView'),
Map2 = getNative2(context2, 'Map'),
Promise2 = getNative2(context2, 'Promise'),
Set2 = getNative2(context2, 'Set'),
WeakMap2 = getNative2(context2, 'WeakMap'),
nativeCreate2 = getNative2(Object2, 'create')
var metaMap = WeakMap2 && new WeakMap2()
var realNames = {}
var dataViewCtorString2 = toSource2(DataView2),
mapCtorString2 = toSource2(Map2),
promiseCtorString2 = toSource2(Promise2),
setCtorString2 = toSource2(Set2),
weakMapCtorString2 = toSource2(WeakMap2)
var symbolProto2 = Symbol2 ? Symbol2.prototype : undefined$1,
symbolValueOf2 = symbolProto2 ? symbolProto2.valueOf : undefined$1,
symbolToString2 = symbolProto2 ? symbolProto2.toString : undefined$1
function lodash2(value2) {
if (
isObjectLike2(value2) &&
!isArray3(value2) &&
!(value2 instanceof LazyWrapper)
) {
if (value2 instanceof LodashWrapper) {
return value2
}
if (hasOwnProperty2.call(value2, '__wrapped__')) {
return wrapperClone(value2)
}
}
return new LodashWrapper(value2)
}
var baseCreate2 = (function () {
function object4() {}
return function (proto2) {
if (!isObject2(proto2)) {
return {}
}
if (objectCreate2) {
return objectCreate2(proto2)
}
object4.prototype = proto2
var result2 = new object4()
object4.prototype = undefined$1
return result2
}
})()
function baseLodash() {}
function LodashWrapper(value2, chainAll) {
this.__wrapped__ = value2
this.__actions__ = []
this.__chain__ = !!chainAll
this.__index__ = 0
this.__values__ = undefined$1
}
lodash2.templateSettings = {
escape: reEscape,
evaluate: reEvaluate,
interpolate: reInterpolate,
variable: '',
imports: {
_: lodash2,
},
}
lodash2.prototype = baseLodash.prototype
lodash2.prototype.constructor = lodash2
LodashWrapper.prototype = baseCreate2(baseLodash.prototype)
LodashWrapper.prototype.constructor = LodashWrapper
function LazyWrapper(value2) {
this.__wrapped__ = value2
this.__actions__ = []
this.__dir__ = 1
this.__filtered__ = false
this.__iteratees__ = []
this.__takeCount__ = MAX_ARRAY_LENGTH
this.__views__ = []
}
function lazyClone() {
var result2 = new LazyWrapper(this.__wrapped__)
result2.__actions__ = copyArray2(this.__actions__)
result2.__dir__ = this.__dir__
result2.__filtered__ = this.__filtered__
result2.__iteratees__ = copyArray2(this.__iteratees__)
result2.__takeCount__ = this.__takeCount__
result2.__views__ = copyArray2(this.__views__)
return result2
}
function lazyReverse() {
if (this.__filtered__) {
var result2 = new LazyWrapper(this)
result2.__dir__ = -1
result2.__filtered__ = true
} else {
result2 = this.clone()
result2.__dir__ *= -1
}
return result2
}
function lazyValue() {
var array4 = this.__wrapped__.value(),
dir3 = this.__dir__,
isArr = isArray3(array4),
isRight = dir3 < 0,
arrLength = isArr ? array4.length : 0,
view2 = getView(0, arrLength, this.__views__),
start2 = view2.start,
end2 = view2.end,
length2 = end2 - start2,
index2 = isRight ? end2 : start2 - 1,
iteratees = this.__iteratees__,
iterLength = iteratees.length,
resIndex = 0,
takeCount = nativeMin2(length2, this.__takeCount__)
if (
!isArr ||
(!isRight && arrLength == length2 && takeCount == length2)
) {
return baseWrapperValue(array4, this.__actions__)
}
var result2 = []
outer: while (length2-- && resIndex < takeCount) {
index2 += dir3
var iterIndex = -1,
value2 = array4[index2]
while (++iterIndex < iterLength) {
var data2 = iteratees[iterIndex],
iteratee2 = data2.iteratee,
type4 = data2.type,
computed2 = iteratee2(value2)
if (type4 == LAZY_MAP_FLAG) {
value2 = computed2
} else if (!computed2) {
if (type4 == LAZY_FILTER_FLAG) {
continue outer
} else {
break outer
}
}
}
result2[resIndex++] = value2
}
return result2
}
LazyWrapper.prototype = baseCreate2(baseLodash.prototype)
LazyWrapper.prototype.constructor = LazyWrapper
function Hash2(entries2) {
var index2 = -1,
length2 = entries2 == null ? 0 : entries2.length
this.clear()
while (++index2 < length2) {
var entry = entries2[index2]
this.set(entry[0], entry[1])
}
}
function hashClear2() {
this.__data__ = nativeCreate2 ? nativeCreate2(null) : {}
this.size = 0
}
function hashDelete2(key2) {
var result2 = this.has(key2) && delete this.__data__[key2]
this.size -= result2 ? 1 : 0
return result2
}
function hashGet2(key2) {
var data2 = this.__data__
if (nativeCreate2) {
var result2 = data2[key2]
return result2 === HASH_UNDEFINED2 ? undefined$1 : result2
}
return hasOwnProperty2.call(data2, key2) ? data2[key2] : undefined$1
}
function hashHas2(key2) {
var data2 = this.__data__
return nativeCreate2
? data2[key2] !== undefined$1
: hasOwnProperty2.call(data2, key2)
}
function hashSet2(key2, value2) {
var data2 = this.__data__
this.size += this.has(key2) ? 0 : 1
data2[key2] =
nativeCreate2 && value2 === undefined$1 ? HASH_UNDEFINED2 : value2
return this
}
Hash2.prototype.clear = hashClear2
Hash2.prototype['delete'] = hashDelete2
Hash2.prototype.get = hashGet2
Hash2.prototype.has = hashHas2
Hash2.prototype.set = hashSet2
function ListCache2(entries2) {
var index2 = -1,
length2 = entries2 == null ? 0 : entries2.length
this.clear()
while (++index2 < length2) {
var entry = entries2[index2]
this.set(entry[0], entry[1])
}
}
function listCacheClear2() {
this.__data__ = []
this.size = 0
}
function listCacheDelete2(key2) {
var data2 = this.__data__,
index2 = assocIndexOf2(data2, key2)
if (index2 < 0) {
return false
}
var lastIndex = data2.length - 1
if (index2 == lastIndex) {
data2.pop()
} else {
splice2.call(data2, index2, 1)
}
--this.size
return true
}
function listCacheGet2(key2) {
var data2 = this.__data__,
index2 = assocIndexOf2(data2, key2)
return index2 < 0 ? undefined$1 : data2[index2][1]
}
function listCacheHas2(key2) {
return assocIndexOf2(this.__data__, key2) > -1
}
function listCacheSet2(key2, value2) {
var data2 = this.__data__,
index2 = assocIndexOf2(data2, key2)
if (index2 < 0) {
++this.size
data2.push([key2, value2])
} else {
data2[index2][1] = value2
}
return this
}
ListCache2.prototype.clear = listCacheClear2
ListCache2.prototype['delete'] = listCacheDelete2
ListCache2.prototype.get = listCacheGet2
ListCache2.prototype.has = listCacheHas2
ListCache2.prototype.set = listCacheSet2
function MapCache2(entries2) {
var index2 = -1,
length2 = entries2 == null ? 0 : entries2.length
this.clear()
while (++index2 < length2) {
var entry = entries2[index2]
this.set(entry[0], entry[1])
}
}
function mapCacheClear2() {
this.size = 0
this.__data__ = {
hash: new Hash2(),
map: new (Map2 || ListCache2)(),
string: new Hash2(),
}
}
function mapCacheDelete2(key2) {
var result2 = getMapData2(this, key2)['delete'](key2)
this.size -= result2 ? 1 : 0
return result2
}
function mapCacheGet2(key2) {
return getMapData2(this, key2).get(key2)
}
function mapCacheHas2(key2) {
return getMapData2(this, key2).has(key2)
}
function mapCacheSet2(key2, value2) {
var data2 = getMapData2(this, key2),
size2 = data2.size
data2.set(key2, value2)
this.size += data2.size == size2 ? 0 : 1
return this
}
MapCache2.prototype.clear = mapCacheClear2
MapCache2.prototype['delete'] = mapCacheDelete2
MapCache2.prototype.get = mapCacheGet2
MapCache2.prototype.has = mapCacheHas2
MapCache2.prototype.set = mapCacheSet2
function SetCache2(values3) {
var index2 = -1,
length2 = values3 == null ? 0 : values3.length
this.__data__ = new MapCache2()
while (++index2 < length2) {
this.add(values3[index2])
}
}
function setCacheAdd2(value2) {
this.__data__.set(value2, HASH_UNDEFINED2)
return this
}
function setCacheHas2(value2) {
return this.__data__.has(value2)
}
SetCache2.prototype.add = SetCache2.prototype.push = setCacheAdd2
SetCache2.prototype.has = setCacheHas2
function Stack2(entries2) {
var data2 = (this.__data__ = new ListCache2(entries2))
this.size = data2.size
}
function stackClear2() {
this.__data__ = new ListCache2()
this.size = 0
}
function stackDelete2(key2) {
var data2 = this.__data__,
result2 = data2['delete'](key2)
this.size = data2.size
return result2
}
function stackGet2(key2) {
return this.__data__.get(key2)
}
function stackHas2(key2) {
return this.__data__.has(key2)
}
function stackSet2(key2, value2) {
var data2 = this.__data__
if (data2 instanceof ListCache2) {
var pairs = data2.__data__
if (!Map2 || pairs.length < LARGE_ARRAY_SIZE2 - 1) {
pairs.push([key2, value2])
this.size = ++data2.size
return this
}
data2 = this.__data__ = new MapCache2(pairs)
}
data2.set(key2, value2)
this.size = data2.size
return this
}
Stack2.prototype.clear = stackClear2
Stack2.prototype['delete'] = stackDelete2
Stack2.prototype.get = stackGet2
Stack2.prototype.has = stackHas2
Stack2.prototype.set = stackSet2
function arrayLikeKeys2(value2, inherited) {
var isArr = isArray3(value2),
isArg = !isArr && isArguments2(value2),
isBuff = !isArr && !isArg && isBuffer2(value2),
isType = !isArr && !isArg && !isBuff && isTypedArray2(value2),
skipIndexes = isArr || isArg || isBuff || isType,
result2 = skipIndexes ? baseTimes2(value2.length, String2) : [],
length2 = result2.length
for (var key2 in value2) {
if (
(inherited || hasOwnProperty2.call(value2, key2)) &&
!(
skipIndexes &&
(key2 == 'length' ||
(isBuff && (key2 == 'offset' || key2 == 'parent')) ||
(isType &&
(key2 == 'buffer' ||
key2 == 'byteLength' ||
key2 == 'byteOffset')) ||
isIndex2(key2, length2))
)
) {
result2.push(key2)
}
}
return result2
}
function arraySample(array4) {
var length2 = array4.length
return length2 ? array4[baseRandom(0, length2 - 1)] : undefined$1
}
function arraySampleSize(array4, n2) {
return shuffleSelf(copyArray2(array4), baseClamp(n2, 0, array4.length))
}
function arrayShuffle(array4) {
return shuffleSelf(copyArray2(array4))
}
function assignMergeValue(object4, key2, value2) {
if (
(value2 !== undefined$1 && !eq2(object4[key2], value2)) ||
(value2 === undefined$1 && !(key2 in object4))
) {
baseAssignValue2(object4, key2, value2)
}
}
function assignValue2(object4, key2, value2) {
var objValue = object4[key2]
if (
!(hasOwnProperty2.call(object4, key2) && eq2(objValue, value2)) ||
(value2 === undefined$1 && !(key2 in object4))
) {
baseAssignValue2(object4, key2, value2)
}
}
function assocIndexOf2(array4, key2) {
var length2 = array4.length
while (length2--) {
if (eq2(array4[length2][0], key2)) {
return length2
}
}
return -1
}
function baseAggregator(collection2, setter, iteratee2, accumulator) {
baseEach(collection2, function (value2, key2, collection3) {
setter(accumulator, value2, iteratee2(value2), collection3)
})
return accumulator
}
function baseAssign2(object4, source2) {
return object4 && copyObject2(source2, keys3(source2), object4)
}
function baseAssignIn2(object4, source2) {
return object4 && copyObject2(source2, keysIn2(source2), object4)
}
function baseAssignValue2(object4, key2, value2) {
if (key2 == '__proto__' && defineProperty4) {
defineProperty4(object4, key2, {
configurable: true,
enumerable: true,
value: value2,
writable: true,
})
} else {
object4[key2] = value2
}
}
function baseAt(object4, paths) {
var index2 = -1,
length2 = paths.length,
result2 = Array2(length2),
skip = object4 == null
while (++index2 < length2) {
result2[index2] = skip ? undefined$1 : get3(object4, paths[index2])
}
return result2
}
function baseClamp(number4, lower, upper) {
if (number4 === number4) {
if (upper !== undefined$1) {
number4 = number4 <= upper ? number4 : upper
}
if (lower !== undefined$1) {
number4 = number4 >= lower ? number4 : lower
}
}
return number4
}
function baseClone2(value2, bitmask, customizer, key2, object4, stack) {
var result2,
isDeep = bitmask & CLONE_DEEP_FLAG2,
isFlat = bitmask & CLONE_FLAT_FLAG2,
isFull = bitmask & CLONE_SYMBOLS_FLAG2
if (customizer) {
result2 = object4
? customizer(value2, key2, object4, stack)
: customizer(value2)
}
if (result2 !== undefined$1) {
return result2
}
if (!isObject2(value2)) {
return value2
}
var isArr = isArray3(value2)
if (isArr) {
result2 = initCloneArray2(value2)
if (!isDeep) {
return copyArray2(value2, result2)
}
} else {
var tag = getTag2(value2),
isFunc = tag == funcTag2 || tag == genTag2
if (isBuffer2(value2)) {
return cloneBuffer2(value2, isDeep)
}
if (tag == objectTag2 || tag == argsTag2 || (isFunc && !object4)) {
result2 = isFlat || isFunc ? {} : initCloneObject2(value2)
if (!isDeep) {
return isFlat
? copySymbolsIn2(value2, baseAssignIn2(result2, value2))
: copySymbols2(value2, baseAssign2(result2, value2))
}
} else {
if (!cloneableTags2[tag]) {
return object4 ? value2 : {}
}
result2 = initCloneByTag2(value2, tag, isDeep)
}
}
stack || (stack = new Stack2())
var stacked = stack.get(value2)
if (stacked) {
return stacked
}
stack.set(value2, result2)
if (isSet2(value2)) {
value2.forEach(function (subValue) {
result2.add(
baseClone2(subValue, bitmask, customizer, subValue, value2, stack)
)
})
} else if (isMap2(value2)) {
value2.forEach(function (subValue, key3) {
result2.set(
key3,
baseClone2(subValue, bitmask, customizer, key3, value2, stack)
)
})
}
var keysFunc = isFull
? isFlat
? getAllKeysIn2
: getAllKeys2
: isFlat
? keysIn2
: keys3
var props2 = isArr ? undefined$1 : keysFunc(value2)
arrayEach2(props2 || value2, function (subValue, key3) {
if (props2) {
key3 = subValue
subValue = value2[key3]
}
assignValue2(
result2,
key3,
baseClone2(subValue, bitmask, customizer, key3, value2, stack)
)
})
return result2
}
function baseConforms(source2) {
var props2 = keys3(source2)
return function (object4) {
return baseConformsTo(object4, source2, props2)
}
}
function baseConformsTo(object4, source2, props2) {
var length2 = props2.length
if (object4 == null) {
return !length2
}
object4 = Object2(object4)
while (length2--) {
var key2 = props2[length2],
predicate = source2[key2],
value2 = object4[key2]
if (
(value2 === undefined$1 && !(key2 in object4)) ||
!predicate(value2)
) {
return false
}
}
return true
}
function baseDelay(func, wait, args) {
if (typeof func != 'function') {
throw new TypeError2(FUNC_ERROR_TEXT2)
}
return setTimeout2(function () {
func.apply(undefined$1, args)
}, wait)
}
function baseDifference(array4, values3, iteratee2, comparator) {
var index2 = -1,
includes4 = arrayIncludes2,
isCommon = true,
length2 = array4.length,
result2 = [],
valuesLength = values3.length
if (!length2) {
return result2
}
if (iteratee2) {
values3 = arrayMap2(values3, baseUnary2(iteratee2))
}
if (comparator) {
includes4 = arrayIncludesWith2
isCommon = false
} else if (values3.length >= LARGE_ARRAY_SIZE2) {
includes4 = cacheHas2
isCommon = false
values3 = new SetCache2(values3)
}
outer: while (++index2 < length2) {
var value2 = array4[index2],
computed2 = iteratee2 == null ? value2 : iteratee2(value2)
value2 = comparator || value2 !== 0 ? value2 : 0
if (isCommon && computed2 === computed2) {
var valuesIndex = valuesLength
while (valuesIndex--) {
if (values3[valuesIndex] === computed2) {
continue outer
}
}
result2.push(value2)
} else if (!includes4(values3, computed2, comparator)) {
result2.push(value2)
}
}
return result2
}
var baseEach = createBaseEach(baseForOwn)
var baseEachRight = createBaseEach(baseForOwnRight, true)
function baseEvery(collection2, predicate) {
var result2 = true
baseEach(collection2, function (value2, index2, collection3) {
result2 = !!predicate(value2, index2, collection3)
return result2
})
return result2
}
function baseExtremum(array4, iteratee2, comparator) {
var index2 = -1,
length2 = array4.length
while (++index2 < length2) {
var value2 = array4[index2],
current2 = iteratee2(value2)
if (
current2 != null &&
(computed2 === undefined$1
? current2 === current2 && !isSymbol2(current2)
: comparator(current2, computed2))
) {
var computed2 = current2,
result2 = value2
}
}
return result2
}
function baseFill(array4, value2, start2, end2) {
var length2 = array4.length
start2 = toInteger2(start2)
if (start2 < 0) {
start2 = -start2 > length2 ? 0 : length2 + start2
}
end2 =
end2 === undefined$1 || end2 > length2 ? length2 : toInteger2(end2)
if (end2 < 0) {
end2 += length2
}
end2 = start2 > end2 ? 0 : toLength2(end2)
while (start2 < end2) {
array4[start2++] = value2
}
return array4
}
function baseFilter(collection2, predicate) {
var result2 = []
baseEach(collection2, function (value2, index2, collection3) {
if (predicate(value2, index2, collection3)) {
result2.push(value2)
}
})
return result2
}
function baseFlatten2(array4, depth, predicate, isStrict, result2) {
var index2 = -1,
length2 = array4.length
predicate || (predicate = isFlattenable2)
result2 || (result2 = [])
while (++index2 < length2) {
var value2 = array4[index2]
if (depth > 0 && predicate(value2)) {
if (depth > 1) {
baseFlatten2(value2, depth - 1, predicate, isStrict, result2)
} else {
arrayPush2(result2, value2)
}
} else if (!isStrict) {
result2[result2.length] = value2
}
}
return result2
}
var baseFor = createBaseFor()
var baseForRight = createBaseFor(true)
function baseForOwn(object4, iteratee2) {
return object4 && baseFor(object4, iteratee2, keys3)
}
function baseForOwnRight(object4, iteratee2) {
return object4 && baseForRight(object4, iteratee2, keys3)
}
function baseFunctions(object4, props2) {
return arrayFilter2(props2, function (key2) {
return isFunction2(object4[key2])
})
}
function baseGet2(object4, path) {
path = castPath2(path, object4)
var index2 = 0,
length2 = path.length
while (object4 != null && index2 < length2) {
object4 = object4[toKey2(path[index2++])]
}
return index2 && index2 == length2 ? object4 : undefined$1
}
function baseGetAllKeys2(object4, keysFunc, symbolsFunc) {
var result2 = keysFunc(object4)
return isArray3(object4)
? result2
: arrayPush2(result2, symbolsFunc(object4))
}
function baseGetTag2(value2) {
if (value2 == null) {
return value2 === undefined$1 ? undefinedTag2 : nullTag2
}
return symToStringTag2 && symToStringTag2 in Object2(value2)
? getRawTag2(value2)
: objectToString2(value2)
}
function baseGt(value2, other) {
return value2 > other
}
function baseHas(object4, key2) {
return object4 != null && hasOwnProperty2.call(object4, key2)
}
function baseHasIn2(object4, key2) {
return object4 != null && key2 in Object2(object4)
}
function baseInRange(number4, start2, end2) {
return (
number4 >= nativeMin2(start2, end2) &&
number4 < nativeMax2(start2, end2)
)
}
function baseIntersection(arrays, iteratee2, comparator) {
var includes4 = comparator ? arrayIncludesWith2 : arrayIncludes2,
length2 = arrays[0].length,
othLength = arrays.length,
othIndex = othLength,
caches = Array2(othLength),
maxLength = Infinity,
result2 = []
while (othIndex--) {
var array4 = arrays[othIndex]
if (othIndex && iteratee2) {
array4 = arrayMap2(array4, baseUnary2(iteratee2))
}
maxLength = nativeMin2(array4.length, maxLength)
caches[othIndex] =
!comparator &&
(iteratee2 || (length2 >= 120 && array4.length >= 120))
? new SetCache2(othIndex && array4)
: undefined$1
}
array4 = arrays[0]
var index2 = -1,
seen = caches[0]
outer: while (++index2 < length2 && result2.length < maxLength) {
var value2 = array4[index2],
computed2 = iteratee2 ? iteratee2(value2) : value2
value2 = comparator || value2 !== 0 ? value2 : 0
if (
!(seen
? cacheHas2(seen, computed2)
: includes4(result2, computed2, comparator))
) {
othIndex = othLength
while (--othIndex) {
var cache2 = caches[othIndex]
if (
!(cache2
? cacheHas2(cache2, computed2)
: includes4(arrays[othIndex], computed2, comparator))
) {
continue outer
}
}
if (seen) {
seen.push(computed2)
}
result2.push(value2)
}
}
return result2
}
function baseInverter(object4, setter, iteratee2, accumulator) {
baseForOwn(object4, function (value2, key2, object5) {
setter(accumulator, iteratee2(value2), key2, object5)
})
return accumulator
}
function baseInvoke(object4, path, args) {
path = castPath2(path, object4)
object4 = parent2(object4, path)
var func = object4 == null ? object4 : object4[toKey2(last2(path))]
return func == null ? undefined$1 : apply2(func, object4, args)
}
function baseIsArguments2(value2) {
return isObjectLike2(value2) && baseGetTag2(value2) == argsTag2
}
function baseIsArrayBuffer(value2) {
return isObjectLike2(value2) && baseGetTag2(value2) == arrayBufferTag2
}
function baseIsDate(value2) {
return isObjectLike2(value2) && baseGetTag2(value2) == dateTag2
}
function baseIsEqual2(value2, other, bitmask, customizer, stack) {
if (value2 === other) {
return true
}
if (
value2 == null ||
other == null ||
(!isObjectLike2(value2) && !isObjectLike2(other))
) {
return value2 !== value2 && other !== other
}
return baseIsEqualDeep2(
value2,
other,
bitmask,
customizer,
baseIsEqual2,
stack
)
}
function baseIsEqualDeep2(
object4,
other,
bitmask,
customizer,
equalFunc,
stack
) {
var objIsArr = isArray3(object4),
othIsArr = isArray3(other),
objTag = objIsArr ? arrayTag2 : getTag2(object4),
othTag = othIsArr ? arrayTag2 : getTag2(other)
objTag = objTag == argsTag2 ? objectTag2 : objTag
othTag = othTag == argsTag2 ? objectTag2 : othTag
var objIsObj = objTag == objectTag2,
othIsObj = othTag == objectTag2,
isSameTag = objTag == othTag
if (isSameTag && isBuffer2(object4)) {
if (!isBuffer2(other)) {
return false
}
objIsArr = true
objIsObj = false
}
if (isSameTag && !objIsObj) {
stack || (stack = new Stack2())
return objIsArr || isTypedArray2(object4)
? equalArrays2(
object4,
other,
bitmask,
customizer,
equalFunc,
stack
)
: equalByTag2(
object4,
other,
objTag,
bitmask,
customizer,
equalFunc,
stack
)
}
if (!(bitmask & COMPARE_PARTIAL_FLAG2)) {
var objIsWrapped =
objIsObj && hasOwnProperty2.call(object4, '__wrapped__'),
othIsWrapped =
othIsObj && hasOwnProperty2.call(other, '__wrapped__')
if (objIsWrapped || othIsWrapped) {
var objUnwrapped = objIsWrapped ? object4.value() : object4,
othUnwrapped = othIsWrapped ? other.value() : other
stack || (stack = new Stack2())
return equalFunc(
objUnwrapped,
othUnwrapped,
bitmask,
customizer,
stack
)
}
}
if (!isSameTag) {
return false
}
stack || (stack = new Stack2())
return equalObjects2(
object4,
other,
bitmask,
customizer,
equalFunc,
stack
)
}
function baseIsMap2(value2) {
return isObjectLike2(value2) && getTag2(value2) == mapTag2
}
function baseIsMatch(object4, source2, matchData, customizer) {
var index2 = matchData.length,
length2 = index2,
noCustomizer = !customizer
if (object4 == null) {
return !length2
}
object4 = Object2(object4)
while (index2--) {
var data2 = matchData[index2]
if (
noCustomizer && data2[2]
? data2[1] !== object4[data2[0]]
: !(data2[0] in object4)
) {
return false
}
}
while (++index2 < length2) {
data2 = matchData[index2]
var key2 = data2[0],
objValue = object4[key2],
srcValue = data2[1]
if (noCustomizer && data2[2]) {
if (objValue === undefined$1 && !(key2 in object4)) {
return false
}
} else {
var stack = new Stack2()
if (customizer) {
var result2 = customizer(
objValue,
srcValue,
key2,
object4,
source2,
stack
)
}
if (
!(result2 === undefined$1
? baseIsEqual2(
srcValue,
objValue,
COMPARE_PARTIAL_FLAG2 | COMPARE_UNORDERED_FLAG2,
customizer,
stack
)
: result2)
) {
return false
}
}
}
return true
}
function baseIsNative2(value2) {
if (!isObject2(value2) || isMasked2(value2)) {
return false
}
var pattern4 = isFunction2(value2) ? reIsNative2 : reIsHostCtor2
return pattern4.test(toSource2(value2))
}
function baseIsRegExp(value2) {
return isObjectLike2(value2) && baseGetTag2(value2) == regexpTag2
}
function baseIsSet2(value2) {
return isObjectLike2(value2) && getTag2(value2) == setTag2
}
function baseIsTypedArray2(value2) {
return (
isObjectLike2(value2) &&
isLength2(value2.length) &&
!!typedArrayTags2[baseGetTag2(value2)]
)
}
function baseIteratee(value2) {
if (typeof value2 == 'function') {
return value2
}
if (value2 == null) {
return identity2
}
if (typeof value2 == 'object') {
return isArray3(value2)
? baseMatchesProperty(value2[0], value2[1])
: baseMatches(value2)
}
return property2(value2)
}
function baseKeys2(object4) {
if (!isPrototype2(object4)) {
return nativeKeys2(object4)
}
var result2 = []
for (var key2 in Object2(object4)) {
if (hasOwnProperty2.call(object4, key2) && key2 != 'constructor') {
result2.push(key2)
}
}
return result2
}
function baseKeysIn2(object4) {
if (!isObject2(object4)) {
return nativeKeysIn2(object4)
}
var isProto = isPrototype2(object4),
result2 = []
for (var key2 in object4) {
if (
!(
key2 == 'constructor' &&
(isProto || !hasOwnProperty2.call(object4, key2))
)
) {
result2.push(key2)
}
}
return result2
}
function baseLt(value2, other) {
return value2 < other
}
function baseMap(collection2, iteratee2) {
var index2 = -1,
result2 = isArrayLike2(collection2) ? Array2(collection2.length) : []
baseEach(collection2, function (value2, key2, collection3) {
result2[++index2] = iteratee2(value2, key2, collection3)
})
return result2
}
function baseMatches(source2) {
var matchData = getMatchData(source2)
if (matchData.length == 1 && matchData[0][2]) {
return matchesStrictComparable(matchData[0][0], matchData[0][1])
}
return function (object4) {
return object4 === source2 || baseIsMatch(object4, source2, matchData)
}
}
function baseMatchesProperty(path, srcValue) {
if (isKey2(path) && isStrictComparable(srcValue)) {
return matchesStrictComparable(toKey2(path), srcValue)
}
return function (object4) {
var objValue = get3(object4, path)
return objValue === undefined$1 && objValue === srcValue
? hasIn2(object4, path)
: baseIsEqual2(
srcValue,
objValue,
COMPARE_PARTIAL_FLAG2 | COMPARE_UNORDERED_FLAG2
)
}
}
function baseMerge(object4, source2, srcIndex, customizer, stack) {
if (object4 === source2) {
return
}
baseFor(
source2,
function (srcValue, key2) {
stack || (stack = new Stack2())
if (isObject2(srcValue)) {
baseMergeDeep(
object4,
source2,
key2,
srcIndex,
baseMerge,
customizer,
stack
)
} else {
var newValue = customizer
? customizer(
safeGet(object4, key2),
srcValue,
key2 + '',
object4,
source2,
stack
)
: undefined$1
if (newValue === undefined$1) {
newValue = srcValue
}
assignMergeValue(object4, key2, newValue)
}
},
keysIn2
)
}
function baseMergeDeep(
object4,
source2,
key2,
srcIndex,
mergeFunc,
customizer,
stack
) {
var objValue = safeGet(object4, key2),
srcValue = safeGet(source2, key2),
stacked = stack.get(srcValue)
if (stacked) {
assignMergeValue(object4, key2, stacked)
return
}
var newValue = customizer
? customizer(objValue, srcValue, key2 + '', object4, source2, stack)
: undefined$1
var isCommon = newValue === undefined$1
if (isCommon) {
var isArr = isArray3(srcValue),
isBuff = !isArr && isBuffer2(srcValue),
isTyped = !isArr && !isBuff && isTypedArray2(srcValue)
newValue = srcValue
if (isArr || isBuff || isTyped) {
if (isArray3(objValue)) {
newValue = objValue
} else if (isArrayLikeObject2(objValue)) {
newValue = copyArray2(objValue)
} else if (isBuff) {
isCommon = false
newValue = cloneBuffer2(srcValue, true)
} else if (isTyped) {
isCommon = false
newValue = cloneTypedArray2(srcValue, true)
} else {
newValue = []
}
} else if (isPlainObject2(srcValue) || isArguments2(srcValue)) {
newValue = objValue
if (isArguments2(objValue)) {
newValue = toPlainObject(objValue)
} else if (!isObject2(objValue) || isFunction2(objValue)) {
newValue = initCloneObject2(srcValue)
}
} else {
isCommon = false
}
}
if (isCommon) {
stack.set(srcValue, newValue)
mergeFunc(newValue, srcValue, srcIndex, customizer, stack)
stack['delete'](srcValue)
}
assignMergeValue(object4, key2, newValue)
}
function baseNth(array4, n2) {
var length2 = array4.length
if (!length2) {
return
}
n2 += n2 < 0 ? length2 : 0
return isIndex2(n2, length2) ? array4[n2] : undefined$1
}
function baseOrderBy(collection2, iteratees, orders) {
if (iteratees.length) {
iteratees = arrayMap2(iteratees, function (iteratee2) {
if (isArray3(iteratee2)) {
return function (value2) {
return baseGet2(
value2,
iteratee2.length === 1 ? iteratee2[0] : iteratee2
)
}
}
return iteratee2
})
} else {
iteratees = [identity2]
}
var index2 = -1
iteratees = arrayMap2(iteratees, baseUnary2(getIteratee()))
var result2 = baseMap(
collection2,
function (value2, key2, collection3) {
var criteria = arrayMap2(iteratees, function (iteratee2) {
return iteratee2(value2)
})
return { criteria: criteria, index: ++index2, value: value2 }
}
)
return baseSortBy(result2, function (object4, other) {
return compareMultiple(object4, other, orders)
})
}
function basePick2(object4, paths) {
return basePickBy2(object4, paths, function (value2, path) {
return hasIn2(object4, path)
})
}
function basePickBy2(object4, paths, predicate) {
var index2 = -1,
length2 = paths.length,
result2 = {}
while (++index2 < length2) {
var path = paths[index2],
value2 = baseGet2(object4, path)
if (predicate(value2, path)) {
baseSet2(result2, castPath2(path, object4), value2)
}
}
return result2
}
function basePropertyDeep(path) {
return function (object4) {
return baseGet2(object4, path)
}
}
function basePullAll(array4, values3, iteratee2, comparator) {
var indexOf4 = comparator ? baseIndexOfWith : baseIndexOf2,
index2 = -1,
length2 = values3.length,
seen = array4
if (array4 === values3) {
values3 = copyArray2(values3)
}
if (iteratee2) {
seen = arrayMap2(array4, baseUnary2(iteratee2))
}
while (++index2 < length2) {
var fromIndex = 0,
value2 = values3[index2],
computed2 = iteratee2 ? iteratee2(value2) : value2
while (
(fromIndex = indexOf4(seen, computed2, fromIndex, comparator)) > -1
) {
if (seen !== array4) {
splice2.call(seen, fromIndex, 1)
}
splice2.call(array4, fromIndex, 1)
}
}
return array4
}
function basePullAt(array4, indexes) {
var length2 = array4 ? indexes.length : 0,
lastIndex = length2 - 1
while (length2--) {
var index2 = indexes[length2]
if (length2 == lastIndex || index2 !== previous) {
var previous = index2
if (isIndex2(index2)) {
splice2.call(array4, index2, 1)
} else {
baseUnset(array4, index2)
}
}
}
return array4
}
function baseRandom(lower, upper) {
return lower + nativeFloor(nativeRandom() * (upper - lower + 1))
}
function baseRange(start2, end2, step, fromRight) {
var index2 = -1,
length2 = nativeMax2(nativeCeil((end2 - start2) / (step || 1)), 0),
result2 = Array2(length2)
while (length2--) {
result2[fromRight ? length2 : ++index2] = start2
start2 += step
}
return result2
}
function baseRepeat(string3, n2) {
var result2 = ''
if (!string3 || n2 < 1 || n2 > MAX_SAFE_INTEGER2) {
return result2
}
do {
if (n2 % 2) {
result2 += string3
}
n2 = nativeFloor(n2 / 2)
if (n2) {
string3 += string3
}
} while (n2)
return result2
}
function baseRest2(func, start2) {
return setToString2(overRest2(func, start2, identity2), func + '')
}
function baseSample(collection2) {
return arraySample(values2(collection2))
}
function baseSampleSize(collection2, n2) {
var array4 = values2(collection2)
return shuffleSelf(array4, baseClamp(n2, 0, array4.length))
}
function baseSet2(object4, path, value2, customizer) {
if (!isObject2(object4)) {
return object4
}
path = castPath2(path, object4)
var index2 = -1,
length2 = path.length,
lastIndex = length2 - 1,
nested = object4
while (nested != null && ++index2 < length2) {
var key2 = toKey2(path[index2]),
newValue = value2
if (
key2 === '__proto__' ||
key2 === 'constructor' ||
key2 === 'prototype'
) {
return object4
}
if (index2 != lastIndex) {
var objValue = nested[key2]
newValue = customizer
? customizer(objValue, key2, nested)
: undefined$1
if (newValue === undefined$1) {
newValue = isObject2(objValue)
? objValue
: isIndex2(path[index2 + 1])
? []
: {}
}
}
assignValue2(nested, key2, newValue)
nested = nested[key2]
}
return object4
}
var baseSetData = !metaMap
? identity2
: function (func, data2) {
metaMap.set(func, data2)
return func
}
var baseSetToString2 = !defineProperty4
? identity2
: function (func, string3) {
return defineProperty4(func, 'toString', {
configurable: true,
enumerable: false,
value: constant2(string3),
writable: true,
})
}
function baseShuffle(collection2) {
return shuffleSelf(values2(collection2))
}
function baseSlice(array4, start2, end2) {
var index2 = -1,
length2 = array4.length
if (start2 < 0) {
start2 = -start2 > length2 ? 0 : length2 + start2
}
end2 = end2 > length2 ? length2 : end2
if (end2 < 0) {
end2 += length2
}
length2 = start2 > end2 ? 0 : (end2 - start2) >>> 0
start2 >>>= 0
var result2 = Array2(length2)
while (++index2 < length2) {
result2[index2] = array4[index2 + start2]
}
return result2
}
function baseSome(collection2, predicate) {
var result2
baseEach(collection2, function (value2, index2, collection3) {
result2 = predicate(value2, index2, collection3)
return !result2
})
return !!result2
}
function baseSortedIndex(array4, value2, retHighest) {
var low = 0,
high = array4 == null ? low : array4.length
if (
typeof value2 == 'number' &&
value2 === value2 &&
high <= HALF_MAX_ARRAY_LENGTH
) {
while (low < high) {
var mid = (low + high) >>> 1,
computed2 = array4[mid]
if (
computed2 !== null &&
!isSymbol2(computed2) &&
(retHighest ? computed2 <= value2 : computed2 < value2)
) {
low = mid + 1
} else {
high = mid
}
}
return high
}
return baseSortedIndexBy(array4, value2, identity2, retHighest)
}
function baseSortedIndexBy(array4, value2, iteratee2, retHighest) {
var low = 0,
high = array4 == null ? 0 : array4.length
if (high === 0) {
return 0
}
value2 = iteratee2(value2)
var valIsNaN = value2 !== value2,
valIsNull = value2 === null,
valIsSymbol = isSymbol2(value2),
valIsUndefined = value2 === undefined$1
while (low < high) {
var mid = nativeFloor((low + high) / 2),
computed2 = iteratee2(array4[mid]),
othIsDefined = computed2 !== undefined$1,
othIsNull = computed2 === null,
othIsReflexive = computed2 === computed2,
othIsSymbol = isSymbol2(computed2)
if (valIsNaN) {
var setLow = retHighest || othIsReflexive
} else if (valIsUndefined) {
setLow = othIsReflexive && (retHighest || othIsDefined)
} else if (valIsNull) {
setLow =
othIsReflexive && othIsDefined && (retHighest || !othIsNull)
} else if (valIsSymbol) {
setLow =
othIsReflexive &&
othIsDefined &&
!othIsNull &&
(retHighest || !othIsSymbol)
} else if (othIsNull || othIsSymbol) {
setLow = false
} else {
setLow = retHighest ? computed2 <= value2 : computed2 < value2
}
if (setLow) {
low = mid + 1
} else {
high = mid
}
}
return nativeMin2(high, MAX_ARRAY_INDEX)
}
function baseSortedUniq(array4, iteratee2) {
var index2 = -1,
length2 = array4.length,
resIndex = 0,
result2 = []
while (++index2 < length2) {
var value2 = array4[index2],
computed2 = iteratee2 ? iteratee2(value2) : value2
if (!index2 || !eq2(computed2, seen)) {
var seen = computed2
result2[resIndex++] = value2 === 0 ? 0 : value2
}
}
return result2
}
function baseToNumber(value2) {
if (typeof value2 == 'number') {
return value2
}
if (isSymbol2(value2)) {
return NAN2
}
return +value2
}
function baseToString2(value2) {
if (typeof value2 == 'string') {
return value2
}
if (isArray3(value2)) {
return arrayMap2(value2, baseToString2) + ''
}
if (isSymbol2(value2)) {
return symbolToString2 ? symbolToString2.call(value2) : ''
}
var result2 = value2 + ''
return result2 == '0' && 1 / value2 == -INFINITY2 ? '-0' : result2
}
function baseUniq2(array4, iteratee2, comparator) {
var index2 = -1,
includes4 = arrayIncludes2,
length2 = array4.length,
isCommon = true,
result2 = [],
seen = result2
if (comparator) {
isCommon = false
includes4 = arrayIncludesWith2
} else if (length2 >= LARGE_ARRAY_SIZE2) {
var set3 = iteratee2 ? null : createSet2(array4)
if (set3) {
return setToArray2(set3)
}
isCommon = false
includes4 = cacheHas2
seen = new SetCache2()
} else {
seen = iteratee2 ? [] : result2
}
outer: while (++index2 < length2) {
var value2 = array4[index2],
computed2 = iteratee2 ? iteratee2(value2) : value2
value2 = comparator || value2 !== 0 ? value2 : 0
if (isCommon && computed2 === computed2) {
var seenIndex = seen.length
while (seenIndex--) {
if (seen[seenIndex] === computed2) {
continue outer
}
}
if (iteratee2) {
seen.push(computed2)
}
result2.push(value2)
} else if (!includes4(seen, computed2, comparator)) {
if (seen !== result2) {
seen.push(computed2)
}
result2.push(value2)
}
}
return result2
}
function baseUnset(object4, path) {
path = castPath2(path, object4)
object4 = parent2(object4, path)
return object4 == null || delete object4[toKey2(last2(path))]
}
function baseUpdate(object4, path, updater, customizer) {
return baseSet2(
object4,
path,
updater(baseGet2(object4, path)),
customizer
)
}
function baseWhile(array4, predicate, isDrop, fromRight) {
var length2 = array4.length,
index2 = fromRight ? length2 : -1
while (
(fromRight ? index2-- : ++index2 < length2) &&
predicate(array4[index2], index2, array4)
) {}
return isDrop
? baseSlice(
array4,
fromRight ? 0 : index2,
fromRight ? index2 + 1 : length2
)
: baseSlice(
array4,
fromRight ? index2 + 1 : 0,
fromRight ? length2 : index2
)
}
function baseWrapperValue(value2, actions2) {
var result2 = value2
if (result2 instanceof LazyWrapper) {
result2 = result2.value()
}
return arrayReduce2(
actions2,
function (result3, action) {
return action.func.apply(
action.thisArg,
arrayPush2([result3], action.args)
)
},
result2
)
}
function baseXor(arrays, iteratee2, comparator) {
var length2 = arrays.length
if (length2 < 2) {
return length2 ? baseUniq2(arrays[0]) : []
}
var index2 = -1,
result2 = Array2(length2)
while (++index2 < length2) {
var array4 = arrays[index2],
othIndex = -1
while (++othIndex < length2) {
if (othIndex != index2) {
result2[index2] = baseDifference(
result2[index2] || array4,
arrays[othIndex],
iteratee2,
comparator
)
}
}
}
return baseUniq2(baseFlatten2(result2, 1), iteratee2, comparator)
}
function baseZipObject(props2, values3, assignFunc) {
var index2 = -1,
length2 = props2.length,
valsLength = values3.length,
result2 = {}
while (++index2 < length2) {
var value2 = index2 < valsLength ? values3[index2] : undefined$1
assignFunc(result2, props2[index2], value2)
}
return result2
}
function castArrayLikeObject(value2) {
return isArrayLikeObject2(value2) ? value2 : []
}
function castFunction(value2) {
return typeof value2 == 'function' ? value2 : identity2
}
function castPath2(value2, object4) {
if (isArray3(value2)) {
return value2
}
return isKey2(value2, object4)
? [value2]
: stringToPath2(toString4(value2))
}
var castRest = baseRest2
function castSlice(array4, start2, end2) {
var length2 = array4.length
end2 = end2 === undefined$1 ? length2 : end2
return !start2 && end2 >= length2
? array4
: baseSlice(array4, start2, end2)
}
var clearTimeout2 =
ctxClearTimeout ||
function (id2) {
return root2.clearTimeout(id2)
}
function cloneBuffer2(buffer, isDeep) {
if (isDeep) {
return buffer.slice()
}
var length2 = buffer.length,
result2 = allocUnsafe2
? allocUnsafe2(length2)
: new buffer.constructor(length2)
buffer.copy(result2)
return result2
}
function cloneArrayBuffer2(arrayBuffer) {
var result2 = new arrayBuffer.constructor(arrayBuffer.byteLength)
new Uint8Array2(result2).set(new Uint8Array2(arrayBuffer))
return result2
}
function cloneDataView2(dataView, isDeep) {
var buffer = isDeep
? cloneArrayBuffer2(dataView.buffer)
: dataView.buffer
return new dataView.constructor(
buffer,
dataView.byteOffset,
dataView.byteLength
)
}
function cloneRegExp2(regexp4) {
var result2 = new regexp4.constructor(
regexp4.source,
reFlags2.exec(regexp4)
)
result2.lastIndex = regexp4.lastIndex
return result2
}
function cloneSymbol2(symbol) {
return symbolValueOf2 ? Object2(symbolValueOf2.call(symbol)) : {}
}
function cloneTypedArray2(typedArray, isDeep) {
var buffer = isDeep
? cloneArrayBuffer2(typedArray.buffer)
: typedArray.buffer
return new typedArray.constructor(
buffer,
typedArray.byteOffset,
typedArray.length
)
}
function compareAscending(value2, other) {
if (value2 !== other) {
var valIsDefined = value2 !== undefined$1,
valIsNull = value2 === null,
valIsReflexive = value2 === value2,
valIsSymbol = isSymbol2(value2)
var othIsDefined = other !== undefined$1,
othIsNull = other === null,
othIsReflexive = other === other,
othIsSymbol = isSymbol2(other)
if (
(!othIsNull && !othIsSymbol && !valIsSymbol && value2 > other) ||
(valIsSymbol &&
othIsDefined &&
othIsReflexive &&
!othIsNull &&
!othIsSymbol) ||
(valIsNull && othIsDefined && othIsReflexive) ||
(!valIsDefined && othIsReflexive) ||
!valIsReflexive
) {
return 1
}
if (
(!valIsNull && !valIsSymbol && !othIsSymbol && value2 < other) ||
(othIsSymbol &&
valIsDefined &&
valIsReflexive &&
!valIsNull &&
!valIsSymbol) ||
(othIsNull && valIsDefined && valIsReflexive) ||
(!othIsDefined && valIsReflexive) ||
!othIsReflexive
) {
return -1
}
}
return 0
}
function compareMultiple(object4, other, orders) {
var index2 = -1,
objCriteria = object4.criteria,
othCriteria = other.criteria,
length2 = objCriteria.length,
ordersLength = orders.length
while (++index2 < length2) {
var result2 = compareAscending(
objCriteria[index2],
othCriteria[index2]
)
if (result2) {
if (index2 >= ordersLength) {
return result2
}
var order2 = orders[index2]
return result2 * (order2 == 'desc' ? -1 : 1)
}
}
return object4.index - other.index
}
function composeArgs(args, partials, holders, isCurried) {
var argsIndex = -1,
argsLength = args.length,
holdersLength = holders.length,
leftIndex = -1,
leftLength = partials.length,
rangeLength = nativeMax2(argsLength - holdersLength, 0),
result2 = Array2(leftLength + rangeLength),
isUncurried = !isCurried
while (++leftIndex < leftLength) {
result2[leftIndex] = partials[leftIndex]
}
while (++argsIndex < holdersLength) {
if (isUncurried || argsIndex < argsLength) {
result2[holders[argsIndex]] = args[argsIndex]
}
}
while (rangeLength--) {
result2[leftIndex++] = args[argsIndex++]
}
return result2
}
function composeArgsRight(args, partials, holders, isCurried) {
var argsIndex = -1,
argsLength = args.length,
holdersIndex = -1,
holdersLength = holders.length,
rightIndex = -1,
rightLength = partials.length,
rangeLength = nativeMax2(argsLength - holdersLength, 0),
result2 = Array2(rangeLength + rightLength),
isUncurried = !isCurried
while (++argsIndex < rangeLength) {
result2[argsIndex] = args[argsIndex]
}
var offset2 = argsIndex
while (++rightIndex < rightLength) {
result2[offset2 + rightIndex] = partials[rightIndex]
}
while (++holdersIndex < holdersLength) {
if (isUncurried || argsIndex < argsLength) {
result2[offset2 + holders[holdersIndex]] = args[argsIndex++]
}
}
return result2
}
function copyArray2(source2, array4) {
var index2 = -1,
length2 = source2.length
array4 || (array4 = Array2(length2))
while (++index2 < length2) {
array4[index2] = source2[index2]
}
return array4
}
function copyObject2(source2, props2, object4, customizer) {
var isNew = !object4
object4 || (object4 = {})
var index2 = -1,
length2 = props2.length
while (++index2 < length2) {
var key2 = props2[index2]
var newValue = customizer
? customizer(object4[key2], source2[key2], key2, object4, source2)
: undefined$1
if (newValue === undefined$1) {
newValue = source2[key2]
}
if (isNew) {
baseAssignValue2(object4, key2, newValue)
} else {
assignValue2(object4, key2, newValue)
}
}
return object4
}
function copySymbols2(source2, object4) {
return copyObject2(source2, getSymbols2(source2), object4)
}
function copySymbolsIn2(source2, object4) {
return copyObject2(source2, getSymbolsIn2(source2), object4)
}
function createAggregator(setter, initializer) {
return function (collection2, iteratee2) {
var func = isArray3(collection2) ? arrayAggregator : baseAggregator,
accumulator = initializer ? initializer() : {}
return func(
collection2,
setter,
getIteratee(iteratee2, 2),
accumulator
)
}
}
function createAssigner(assigner) {
return baseRest2(function (object4, sources) {
var index2 = -1,
length2 = sources.length,
customizer = length2 > 1 ? sources[length2 - 1] : undefined$1,
guard = length2 > 2 ? sources[2] : undefined$1
customizer =
assigner.length > 3 && typeof customizer == 'function'
? (length2--, customizer)
: undefined$1
if (guard && isIterateeCall(sources[0], sources[1], guard)) {
customizer = length2 < 3 ? undefined$1 : customizer
length2 = 1
}
object4 = Object2(object4)
while (++index2 < length2) {
var source2 = sources[index2]
if (source2) {
assigner(object4, source2, index2, customizer)
}
}
return object4
})
}
function createBaseEach(eachFunc, fromRight) {
return function (collection2, iteratee2) {
if (collection2 == null) {
return collection2
}
if (!isArrayLike2(collection2)) {
return eachFunc(collection2, iteratee2)
}
var length2 = collection2.length,
index2 = fromRight ? length2 : -1,
iterable = Object2(collection2)
while (fromRight ? index2-- : ++index2 < length2) {
if (iteratee2(iterable[index2], index2, iterable) === false) {
break
}
}
return collection2
}
}
function createBaseFor(fromRight) {
return function (object4, iteratee2, keysFunc) {
var index2 = -1,
iterable = Object2(object4),
props2 = keysFunc(object4),
length2 = props2.length
while (length2--) {
var key2 = props2[fromRight ? length2 : ++index2]
if (iteratee2(iterable[key2], key2, iterable) === false) {
break
}
}
return object4
}
}
function createBind(func, bitmask, thisArg) {
var isBind = bitmask & WRAP_BIND_FLAG,
Ctor = createCtor(func)
function wrapper() {
var fn2 =
this && this !== root2 && this instanceof wrapper ? Ctor : func
return fn2.apply(isBind ? thisArg : this, arguments)
}
return wrapper
}
function createCaseFirst(methodName) {
return function (string3) {
string3 = toString4(string3)
var strSymbols = hasUnicode(string3)
? stringToArray(string3)
: undefined$1
var chr = strSymbols ? strSymbols[0] : string3.charAt(0)
var trailing = strSymbols
? castSlice(strSymbols, 1).join('')
: string3.slice(1)
return chr[methodName]() + trailing
}
}
function createCompounder(callback) {
return function (string3) {
return arrayReduce2(
words(deburr(string3).replace(reApos, '')),
callback,
''
)
}
}
function createCtor(Ctor) {
return function () {
var args = arguments
switch (args.length) {
case 0:
return new Ctor()
case 1:
return new Ctor(args[0])
case 2:
return new Ctor(args[0], args[1])
case 3:
return new Ctor(args[0], args[1], args[2])
case 4:
return new Ctor(args[0], args[1], args[2], args[3])
case 5:
return new Ctor(args[0], args[1], args[2], args[3], args[4])
case 6:
return new Ctor(
args[0],
args[1],
args[2],
args[3],
args[4],
args[5]
)
case 7:
return new Ctor(
args[0],
args[1],
args[2],
args[3],
args[4],
args[5],
args[6]
)
}
var thisBinding = baseCreate2(Ctor.prototype),
result2 = Ctor.apply(thisBinding, args)
return isObject2(result2) ? result2 : thisBinding
}
}
function createCurry(func, bitmask, arity) {
var Ctor = createCtor(func)
function wrapper() {
var length2 = arguments.length,
args = Array2(length2),
index2 = length2,
placeholder = getHolder(wrapper)
while (index2--) {
args[index2] = arguments[index2]
}
var holders =
length2 < 3 &&
args[0] !== placeholder &&
args[length2 - 1] !== placeholder
? []
: replaceHolders(args, placeholder)
length2 -= holders.length
if (length2 < arity) {
return createRecurry(
func,
bitmask,
createHybrid,
wrapper.placeholder,
undefined$1,
args,
holders,
undefined$1,
undefined$1,
arity - length2
)
}
var fn2 =
this && this !== root2 && this instanceof wrapper ? Ctor : func
return apply2(fn2, this, args)
}
return wrapper
}
function createFind(findIndexFunc) {
return function (collection2, predicate, fromIndex) {
var iterable = Object2(collection2)
if (!isArrayLike2(collection2)) {
var iteratee2 = getIteratee(predicate, 3)
collection2 = keys3(collection2)
predicate = function (key2) {
return iteratee2(iterable[key2], key2, iterable)
}
}
var index2 = findIndexFunc(collection2, predicate, fromIndex)
return index2 > -1
? iterable[iteratee2 ? collection2[index2] : index2]
: undefined$1
}
}
function createFlow(fromRight) {
return flatRest2(function (funcs) {
var length2 = funcs.length,
index2 = length2,
prereq = LodashWrapper.prototype.thru
if (fromRight) {
funcs.reverse()
}
while (index2--) {
var func = funcs[index2]
if (typeof func != 'function') {
throw new TypeError2(FUNC_ERROR_TEXT2)
}
if (prereq && !wrapper && getFuncName(func) == 'wrapper') {
var wrapper = new LodashWrapper([], true)
}
}
index2 = wrapper ? index2 : length2
while (++index2 < length2) {
func = funcs[index2]
var funcName = getFuncName(func),
data2 = funcName == 'wrapper' ? getData(func) : undefined$1
if (
data2 &&
isLaziable(data2[0]) &&
data2[1] ==
(WRAP_ARY_FLAG |
WRAP_CURRY_FLAG |
WRAP_PARTIAL_FLAG |
WRAP_REARG_FLAG) &&
!data2[4].length &&
data2[9] == 1
) {
wrapper = wrapper[getFuncName(data2[0])].apply(wrapper, data2[3])
} else {
wrapper =
func.length == 1 && isLaziable(func)
? wrapper[funcName]()
: wrapper.thru(func)
}
}
return function () {
var args = arguments,
value2 = args[0]
if (wrapper && args.length == 1 && isArray3(value2)) {
return wrapper.plant(value2).value()
}
var index3 = 0,
result2 = length2 ? funcs[index3].apply(this, args) : value2
while (++index3 < length2) {
result2 = funcs[index3].call(this, result2)
}
return result2
}
})
}
function createHybrid(
func,
bitmask,
thisArg,
partials,
holders,
partialsRight,
holdersRight,
argPos,
ary2,
arity
) {
var isAry = bitmask & WRAP_ARY_FLAG,
isBind = bitmask & WRAP_BIND_FLAG,
isBindKey = bitmask & WRAP_BIND_KEY_FLAG,
isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),
isFlip = bitmask & WRAP_FLIP_FLAG,
Ctor = isBindKey ? undefined$1 : createCtor(func)
function wrapper() {
var length2 = arguments.length,
args = Array2(length2),
index2 = length2
while (index2--) {
args[index2] = arguments[index2]
}
if (isCurried) {
var placeholder = getHolder(wrapper),
holdersCount = countHolders(args, placeholder)
}
if (partials) {
args = composeArgs(args, partials, holders, isCurried)
}
if (partialsRight) {
args = composeArgsRight(
args,
partialsRight,
holdersRight,
isCurried
)
}
length2 -= holdersCount
if (isCurried && length2 < arity) {
var newHolders = replaceHolders(args, placeholder)
return createRecurry(
func,
bitmask,
createHybrid,
wrapper.placeholder,
thisArg,
args,
newHolders,
argPos,
ary2,
arity - length2
)
}
var thisBinding = isBind ? thisArg : this,
fn2 = isBindKey ? thisBinding[func] : func
length2 = args.length
if (argPos) {
args = reorder(args, argPos)
} else if (isFlip && length2 > 1) {
args.reverse()
}
if (isAry && ary2 < length2) {
args.length = ary2
}
if (this && this !== root2 && this instanceof wrapper) {
fn2 = Ctor || createCtor(fn2)
}
return fn2.apply(thisBinding, args)
}
return wrapper
}
function createInverter(setter, toIteratee) {
return function (object4, iteratee2) {
return baseInverter(object4, setter, toIteratee(iteratee2), {})
}
}
function createMathOperation(operator, defaultValue) {
return function (value2, other) {
var result2
if (value2 === undefined$1 && other === undefined$1) {
return defaultValue
}
if (value2 !== undefined$1) {
result2 = value2
}
if (other !== undefined$1) {
if (result2 === undefined$1) {
return other
}
if (typeof value2 == 'string' || typeof other == 'string') {
value2 = baseToString2(value2)
other = baseToString2(other)
} else {
value2 = baseToNumber(value2)
other = baseToNumber(other)
}
result2 = operator(value2, other)
}
return result2
}
}
function createOver(arrayFunc) {
return flatRest2(function (iteratees) {
iteratees = arrayMap2(iteratees, baseUnary2(getIteratee()))
return baseRest2(function (args) {
var thisArg = this
return arrayFunc(iteratees, function (iteratee2) {
return apply2(iteratee2, thisArg, args)
})
})
})
}
function createPadding(length2, chars2) {
chars2 = chars2 === undefined$1 ? ' ' : baseToString2(chars2)
var charsLength = chars2.length
if (charsLength < 2) {
return charsLength ? baseRepeat(chars2, length2) : chars2
}
var result2 = baseRepeat(
chars2,
nativeCeil(length2 / stringSize(chars2))
)
return hasUnicode(chars2)
? castSlice(stringToArray(result2), 0, length2).join('')
: result2.slice(0, length2)
}
function createPartial(func, bitmask, thisArg, partials) {
var isBind = bitmask & WRAP_BIND_FLAG,
Ctor = createCtor(func)
function wrapper() {
var argsIndex = -1,
argsLength = arguments.length,
leftIndex = -1,
leftLength = partials.length,
args = Array2(leftLength + argsLength),
fn2 =
this && this !== root2 && this instanceof wrapper ? Ctor : func
while (++leftIndex < leftLength) {
args[leftIndex] = partials[leftIndex]
}
while (argsLength--) {
args[leftIndex++] = arguments[++argsIndex]
}
return apply2(fn2, isBind ? thisArg : this, args)
}
return wrapper
}
function createRange2(fromRight) {
return function (start2, end2, step) {
if (
step &&
typeof step != 'number' &&
isIterateeCall(start2, end2, step)
) {
end2 = step = undefined$1
}
start2 = toFinite(start2)
if (end2 === undefined$1) {
end2 = start2
start2 = 0
} else {
end2 = toFinite(end2)
}
step =
step === undefined$1 ? (start2 < end2 ? 1 : -1) : toFinite(step)
return baseRange(start2, end2, step, fromRight)
}
}
function createRelationalOperation(operator) {
return function (value2, other) {
if (!(typeof value2 == 'string' && typeof other == 'string')) {
value2 = toNumber2(value2)
other = toNumber2(other)
}
return operator(value2, other)
}
}
function createRecurry(
func,
bitmask,
wrapFunc,
placeholder,
thisArg,
partials,
holders,
argPos,
ary2,
arity
) {
var isCurry = bitmask & WRAP_CURRY_FLAG,
newHolders = isCurry ? holders : undefined$1,
newHoldersRight = isCurry ? undefined$1 : holders,
newPartials = isCurry ? partials : undefined$1,
newPartialsRight = isCurry ? undefined$1 : partials
bitmask |= isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG
bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG)
if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {
bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG)
}
var newData = [
func,
bitmask,
thisArg,
newPartials,
newHolders,
newPartialsRight,
newHoldersRight,
argPos,
ary2,
arity,
]
var result2 = wrapFunc.apply(undefined$1, newData)
if (isLaziable(func)) {
setData(result2, newData)
}
result2.placeholder = placeholder
return setWrapToString(result2, func, bitmask)
}
function createRound(methodName) {
var func = Math2[methodName]
return function (number4, precision) {
number4 = toNumber2(number4)
precision =
precision == null ? 0 : nativeMin2(toInteger2(precision), 292)
if (precision && nativeIsFinite(number4)) {
var pair = (toString4(number4) + 'e').split('e'),
value2 = func(pair[0] + 'e' + (+pair[1] + precision))
pair = (toString4(value2) + 'e').split('e')
return +(pair[0] + 'e' + (+pair[1] - precision))
}
return func(number4)
}
}
var createSet2 = !(
Set2 && 1 / setToArray2(new Set2([, -0]))[1] == INFINITY2
)
? noop2
: function (values3) {
return new Set2(values3)
}
function createToPairs(keysFunc) {
return function (object4) {
var tag = getTag2(object4)
if (tag == mapTag2) {
return mapToArray2(object4)
}
if (tag == setTag2) {
return setToPairs(object4)
}
return baseToPairs(object4, keysFunc(object4))
}
}
function createWrap2(
func,
bitmask,
thisArg,
partials,
holders,
argPos,
ary2,
arity
) {
var isBindKey = bitmask & WRAP_BIND_KEY_FLAG
if (!isBindKey && typeof func != 'function') {
throw new TypeError2(FUNC_ERROR_TEXT2)
}
var length2 = partials ? partials.length : 0
if (!length2) {
bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG)
partials = holders = undefined$1
}
ary2 = ary2 === undefined$1 ? ary2 : nativeMax2(toInteger2(ary2), 0)
arity = arity === undefined$1 ? arity : toInteger2(arity)
length2 -= holders ? holders.length : 0
if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {
var partialsRight = partials,
holdersRight = holders
partials = holders = undefined$1
}
var data2 = isBindKey ? undefined$1 : getData(func)
var newData = [
func,
bitmask,
thisArg,
partials,
holders,
partialsRight,
holdersRight,
argPos,
ary2,
arity,
]
if (data2) {
mergeData(newData, data2)
}
func = newData[0]
bitmask = newData[1]
thisArg = newData[2]
partials = newData[3]
holders = newData[4]
arity = newData[9] =
newData[9] === undefined$1
? isBindKey
? 0
: func.length
: nativeMax2(newData[9] - length2, 0)
if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {
bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)
}
if (!bitmask || bitmask == WRAP_BIND_FLAG) {
var result2 = createBind(func, bitmask, thisArg)
} else if (
bitmask == WRAP_CURRY_FLAG ||
bitmask == WRAP_CURRY_RIGHT_FLAG
) {
result2 = createCurry(func, bitmask, arity)
} else if (
(bitmask == WRAP_PARTIAL_FLAG ||
bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) &&
!holders.length
) {
result2 = createPartial(func, bitmask, thisArg, partials)
} else {
result2 = createHybrid.apply(undefined$1, newData)
}
var setter = data2 ? baseSetData : setData
return setWrapToString(setter(result2, newData), func, bitmask)
}
function customDefaultsAssignIn(objValue, srcValue, key2, object4) {
if (
objValue === undefined$1 ||
(eq2(objValue, objectProto2[key2]) &&
!hasOwnProperty2.call(object4, key2))
) {
return srcValue
}
return objValue
}
function customDefaultsMerge(
objValue,
srcValue,
key2,
object4,
source2,
stack
) {
if (isObject2(objValue) && isObject2(srcValue)) {
stack.set(srcValue, objValue)
baseMerge(objValue, srcValue, undefined$1, customDefaultsMerge, stack)
stack['delete'](srcValue)
}
return objValue
}
function customOmitClone(value2) {
return isPlainObject2(value2) ? undefined$1 : value2
}
function equalArrays2(
array4,
other,
bitmask,
customizer,
equalFunc,
stack
) {
var isPartial = bitmask & COMPARE_PARTIAL_FLAG2,
arrLength = array4.length,
othLength = other.length
if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
return false
}
var arrStacked = stack.get(array4)
var othStacked = stack.get(other)
if (arrStacked && othStacked) {
return arrStacked == other && othStacked == array4
}
var index2 = -1,
result2 = true,
seen =
bitmask & COMPARE_UNORDERED_FLAG2 ? new SetCache2() : undefined$1
stack.set(array4, other)
stack.set(other, array4)
while (++index2 < arrLength) {
var arrValue = array4[index2],
othValue = other[index2]
if (customizer) {
var compared = isPartial
? customizer(othValue, arrValue, index2, other, array4, stack)
: customizer(arrValue, othValue, index2, array4, other, stack)
}
if (compared !== undefined$1) {
if (compared) {
continue
}
result2 = false
break
}
if (seen) {
if (
!arraySome2(other, function (othValue2, othIndex) {
if (
!cacheHas2(seen, othIndex) &&
(arrValue === othValue2 ||
equalFunc(arrValue, othValue2, bitmask, customizer, stack))
) {
return seen.push(othIndex)
}
})
) {
result2 = false
break
}
} else if (
!(
arrValue === othValue ||
equalFunc(arrValue, othValue, bitmask, customizer, stack)
)
) {
result2 = false
break
}
}
stack['delete'](array4)
stack['delete'](other)
return result2
}
function equalByTag2(
object4,
other,
tag,
bitmask,
customizer,
equalFunc,
stack
) {
switch (tag) {
case dataViewTag2:
if (
object4.byteLength != other.byteLength ||
object4.byteOffset != other.byteOffset
) {
return false
}
object4 = object4.buffer
other = other.buffer
case arrayBufferTag2:
if (
object4.byteLength != other.byteLength ||
!equalFunc(new Uint8Array2(object4), new Uint8Array2(other))
) {
return false
}
return true
case boolTag2:
case dateTag2:
case numberTag2:
return eq2(+object4, +other)
case errorTag2:
return (
object4.name == other.name && object4.message == other.message
)
case regexpTag2:
case stringTag2:
return object4 == other + ''
case mapTag2:
var convert = mapToArray2
case setTag2:
var isPartial = bitmask & COMPARE_PARTIAL_FLAG2
convert || (convert = setToArray2)
if (object4.size != other.size && !isPartial) {
return false
}
var stacked = stack.get(object4)
if (stacked) {
return stacked == other
}
bitmask |= COMPARE_UNORDERED_FLAG2
stack.set(object4, other)
var result2 = equalArrays2(
convert(object4),
convert(other),
bitmask,
customizer,
equalFunc,
stack
)
stack['delete'](object4)
return result2
case symbolTag2:
if (symbolValueOf2) {
return symbolValueOf2.call(object4) == symbolValueOf2.call(other)
}
}
return false
}
function equalObjects2(
object4,
other,
bitmask,
customizer,
equalFunc,
stack
) {
var isPartial = bitmask & COMPARE_PARTIAL_FLAG2,
objProps = getAllKeys2(object4),
objLength = objProps.length,
othProps = getAllKeys2(other),
othLength = othProps.length
if (objLength != othLength && !isPartial) {
return false
}
var index2 = objLength
while (index2--) {
var key2 = objProps[index2]
if (
!(isPartial ? key2 in other : hasOwnProperty2.call(other, key2))
) {
return false
}
}
var objStacked = stack.get(object4)
var othStacked = stack.get(other)
if (objStacked && othStacked) {
return objStacked == other && othStacked == object4
}
var result2 = true
stack.set(object4, other)
stack.set(other, object4)
var skipCtor = isPartial
while (++index2 < objLength) {
key2 = objProps[index2]
var objValue = object4[key2],
othValue = other[key2]
if (customizer) {
var compared = isPartial
? customizer(othValue, objValue, key2, other, object4, stack)
: customizer(objValue, othValue, key2, object4, other, stack)
}
if (
!(compared === undefined$1
? objValue === othValue ||
equalFunc(objValue, othValue, bitmask, customizer, stack)
: compared)
) {
result2 = false
break
}
skipCtor || (skipCtor = key2 == 'constructor')
}
if (result2 && !skipCtor) {
var objCtor = object4.constructor,
othCtor = other.constructor
if (
objCtor != othCtor &&
'constructor' in object4 &&
'constructor' in other &&
!(
typeof objCtor == 'function' &&
objCtor instanceof objCtor &&
typeof othCtor == 'function' &&
othCtor instanceof othCtor
)
) {
result2 = false
}
}
stack['delete'](object4)
stack['delete'](other)
return result2
}
function flatRest2(func) {
return setToString2(overRest2(func, undefined$1, flatten2), func + '')
}
function getAllKeys2(object4) {
return baseGetAllKeys2(object4, keys3, getSymbols2)
}
function getAllKeysIn2(object4) {
return baseGetAllKeys2(object4, keysIn2, getSymbolsIn2)
}
var getData = !metaMap
? noop2
: function (func) {
return metaMap.get(func)
}
function getFuncName(func) {
var result2 = func.name + '',
array4 = realNames[result2],
length2 = hasOwnProperty2.call(realNames, result2) ? array4.length : 0
while (length2--) {
var data2 = array4[length2],
otherFunc = data2.func
if (otherFunc == null || otherFunc == func) {
return data2.name
}
}
return result2
}
function getHolder(func) {
var object4 = hasOwnProperty2.call(lodash2, 'placeholder')
? lodash2
: func
return object4.placeholder
}
function getIteratee() {
var result2 = lodash2.iteratee || iteratee
result2 = result2 === iteratee ? baseIteratee : result2
return arguments.length ? result2(arguments[0], arguments[1]) : result2
}
function getMapData2(map3, key2) {
var data2 = map3.__data__
return isKeyable2(key2)
? data2[typeof key2 == 'string' ? 'string' : 'hash']
: data2.map
}
function getMatchData(object4) {
var result2 = keys3(object4),
length2 = result2.length
while (length2--) {
var key2 = result2[length2],
value2 = object4[key2]
result2[length2] = [key2, value2, isStrictComparable(value2)]
}
return result2
}
function getNative2(object4, key2) {
var value2 = getValue2(object4, key2)
return baseIsNative2(value2) ? value2 : undefined$1
}
function getRawTag2(value2) {
var isOwn = hasOwnProperty2.call(value2, symToStringTag2),
tag = value2[symToStringTag2]
try {
value2[symToStringTag2] = undefined$1
var unmasked = true
} catch (e2) {}
var result2 = nativeObjectToString2.call(value2)
if (unmasked) {
if (isOwn) {
value2[symToStringTag2] = tag
} else {
delete value2[symToStringTag2]
}
}
return result2
}
var getSymbols2 = !nativeGetSymbols2
? stubArray2
: function (object4) {
if (object4 == null) {
return []
}
object4 = Object2(object4)
return arrayFilter2(nativeGetSymbols2(object4), function (symbol) {
return propertyIsEnumerable3.call(object4, symbol)
})
}
var getSymbolsIn2 = !nativeGetSymbols2
? stubArray2
: function (object4) {
var result2 = []
while (object4) {
arrayPush2(result2, getSymbols2(object4))
object4 = getPrototype2(object4)
}
return result2
}
var getTag2 = baseGetTag2
if (
(DataView2 &&
getTag2(new DataView2(new ArrayBuffer(1))) != dataViewTag2) ||
(Map2 && getTag2(new Map2()) != mapTag2) ||
(Promise2 && getTag2(Promise2.resolve()) != promiseTag2) ||
(Set2 && getTag2(new Set2()) != setTag2) ||
(WeakMap2 && getTag2(new WeakMap2()) != weakMapTag2)
) {
getTag2 = function (value2) {
var result2 = baseGetTag2(value2),
Ctor = result2 == objectTag2 ? value2.constructor : undefined$1,
ctorString = Ctor ? toSource2(Ctor) : ''
if (ctorString) {
switch (ctorString) {
case dataViewCtorString2:
return dataViewTag2
case mapCtorString2:
return mapTag2
case promiseCtorString2:
return promiseTag2
case setCtorString2:
return setTag2
case weakMapCtorString2:
return weakMapTag2
}
}
return result2
}
}
function getView(start2, end2, transforms) {
var index2 = -1,
length2 = transforms.length
while (++index2 < length2) {
var data2 = transforms[index2],
size2 = data2.size
switch (data2.type) {
case 'drop':
start2 += size2
break
case 'dropRight':
end2 -= size2
break
case 'take':
end2 = nativeMin2(end2, start2 + size2)
break
case 'takeRight':
start2 = nativeMax2(start2, end2 - size2)
break
}
}
return { start: start2, end: end2 }
}
function getWrapDetails(source2) {
var match2 = source2.match(reWrapDetails)
return match2 ? match2[1].split(reSplitDetails) : []
}
function hasPath2(object4, path, hasFunc) {
path = castPath2(path, object4)
var index2 = -1,
length2 = path.length,
result2 = false
while (++index2 < length2) {
var key2 = toKey2(path[index2])
if (!(result2 = object4 != null && hasFunc(object4, key2))) {
break
}
object4 = object4[key2]
}
if (result2 || ++index2 != length2) {
return result2
}
length2 = object4 == null ? 0 : object4.length
return (
!!length2 &&
isLength2(length2) &&
isIndex2(key2, length2) &&
(isArray3(object4) || isArguments2(object4))
)
}
function initCloneArray2(array4) {
var length2 = array4.length,
result2 = new array4.constructor(length2)
if (
length2 &&
typeof array4[0] == 'string' &&
hasOwnProperty2.call(array4, 'index')
) {
result2.index = array4.index
result2.input = array4.input
}
return result2
}
function initCloneObject2(object4) {
return typeof object4.constructor == 'function' &&
!isPrototype2(object4)
? baseCreate2(getPrototype2(object4))
: {}
}
function initCloneByTag2(object4, tag, isDeep) {
var Ctor = object4.constructor
switch (tag) {
case arrayBufferTag2:
return cloneArrayBuffer2(object4)
case boolTag2:
case dateTag2:
return new Ctor(+object4)
case dataViewTag2:
return cloneDataView2(object4, isDeep)
case float32Tag2:
case float64Tag2:
case int8Tag2:
case int16Tag2:
case int32Tag2:
case uint8Tag2:
case uint8ClampedTag2:
case uint16Tag2:
case uint32Tag2:
return cloneTypedArray2(object4, isDeep)
case mapTag2:
return new Ctor()
case numberTag2:
case stringTag2:
return new Ctor(object4)
case regexpTag2:
return cloneRegExp2(object4)
case setTag2:
return new Ctor()
case symbolTag2:
return cloneSymbol2(object4)
}
}
function insertWrapDetails(source2, details) {
var length2 = details.length
if (!length2) {
return source2
}
var lastIndex = length2 - 1
details[lastIndex] = (length2 > 1 ? '& ' : '') + details[lastIndex]
details = details.join(length2 > 2 ? ', ' : ' ')
return source2.replace(
reWrapComment,
'{\n/* [wrapped with ' + details + '] */\n'
)
}
function isFlattenable2(value2) {
return (
isArray3(value2) ||
isArguments2(value2) ||
!!(spreadableSymbol2 && value2 && value2[spreadableSymbol2])
)
}
function isIndex2(value2, length2) {
var type4 = typeof value2
length2 = length2 == null ? MAX_SAFE_INTEGER2 : length2
return (
!!length2 &&
(type4 == 'number' ||
(type4 != 'symbol' && reIsUint2.test(value2))) &&
value2 > -1 &&
value2 % 1 == 0 &&
value2 < length2
)
}
function isIterateeCall(value2, index2, object4) {
if (!isObject2(object4)) {
return false
}
var type4 = typeof index2
if (
type4 == 'number'
? isArrayLike2(object4) && isIndex2(index2, object4.length)
: type4 == 'string' && index2 in object4
) {
return eq2(object4[index2], value2)
}
return false
}
function isKey2(value2, object4) {
if (isArray3(value2)) {
return false
}
var type4 = typeof value2
if (
type4 == 'number' ||
type4 == 'symbol' ||
type4 == 'boolean' ||
value2 == null ||
isSymbol2(value2)
) {
return true
}
return (
reIsPlainProp2.test(value2) ||
!reIsDeepProp2.test(value2) ||
(object4 != null && value2 in Object2(object4))
)
}
function isKeyable2(value2) {
var type4 = typeof value2
return type4 == 'string' ||
type4 == 'number' ||
type4 == 'symbol' ||
type4 == 'boolean'
? value2 !== '__proto__'
: value2 === null
}
function isLaziable(func) {
var funcName = getFuncName(func),
other = lodash2[funcName]
if (
typeof other != 'function' ||
!(funcName in LazyWrapper.prototype)
) {
return false
}
if (func === other) {
return true
}
var data2 = getData(other)
return !!data2 && func === data2[0]
}
function isMasked2(func) {
return !!maskSrcKey2 && maskSrcKey2 in func
}
var isMaskable = coreJsData2 ? isFunction2 : stubFalse2
function isPrototype2(value2) {
var Ctor = value2 && value2.constructor,
proto2 = (typeof Ctor == 'function' && Ctor.prototype) || objectProto2
return value2 === proto2
}
function isStrictComparable(value2) {
return value2 === value2 && !isObject2(value2)
}
function matchesStrictComparable(key2, srcValue) {
return function (object4) {
if (object4 == null) {
return false
}
return (
object4[key2] === srcValue &&
(srcValue !== undefined$1 || key2 in Object2(object4))
)
}
}
function memoizeCapped2(func) {
var result2 = memoize2(func, function (key2) {
if (cache2.size === MAX_MEMOIZE_SIZE2) {
cache2.clear()
}
return key2
})
var cache2 = result2.cache
return result2
}
function mergeData(data2, source2) {
var bitmask = data2[1],
srcBitmask = source2[1],
newBitmask = bitmask | srcBitmask,
isCommon =
newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG)
var isCombo =
(srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_CURRY_FLAG) ||
(srcBitmask == WRAP_ARY_FLAG &&
bitmask == WRAP_REARG_FLAG &&
data2[7].length <= source2[8]) ||
(srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG) &&
source2[7].length <= source2[8] &&
bitmask == WRAP_CURRY_FLAG)
if (!(isCommon || isCombo)) {
return data2
}
if (srcBitmask & WRAP_BIND_FLAG) {
data2[2] = source2[2]
newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG
}
var value2 = source2[3]
if (value2) {
var partials = data2[3]
data2[3] = partials
? composeArgs(partials, value2, source2[4])
: value2
data2[4] = partials
? replaceHolders(data2[3], PLACEHOLDER)
: source2[4]
}
value2 = source2[5]
if (value2) {
partials = data2[5]
data2[5] = partials
? composeArgsRight(partials, value2, source2[6])
: value2
data2[6] = partials
? replaceHolders(data2[5], PLACEHOLDER)
: source2[6]
}
value2 = source2[7]
if (value2) {
data2[7] = value2
}
if (srcBitmask & WRAP_ARY_FLAG) {
data2[8] =
data2[8] == null ? source2[8] : nativeMin2(data2[8], source2[8])
}
if (data2[9] == null) {
data2[9] = source2[9]
}
data2[0] = source2[0]
data2[1] = newBitmask
return data2
}
function nativeKeysIn2(object4) {
var result2 = []
if (object4 != null) {
for (var key2 in Object2(object4)) {
result2.push(key2)
}
}
return result2
}
function objectToString2(value2) {
return nativeObjectToString2.call(value2)
}
function overRest2(func, start2, transform4) {
start2 = nativeMax2(
start2 === undefined$1 ? func.length - 1 : start2,
0
)
return function () {
var args = arguments,
index2 = -1,
length2 = nativeMax2(args.length - start2, 0),
array4 = Array2(length2)
while (++index2 < length2) {
array4[index2] = args[start2 + index2]
}
index2 = -1
var otherArgs = Array2(start2 + 1)
while (++index2 < start2) {
otherArgs[index2] = args[index2]
}
otherArgs[start2] = transform4(array4)
return apply2(func, this, otherArgs)
}
}
function parent2(object4, path) {
return path.length < 2
? object4
: baseGet2(object4, baseSlice(path, 0, -1))
}
function reorder(array4, indexes) {
var arrLength = array4.length,
length2 = nativeMin2(indexes.length, arrLength),
oldArray = copyArray2(array4)
while (length2--) {
var index2 = indexes[length2]
array4[length2] = isIndex2(index2, arrLength)
? oldArray[index2]
: undefined$1
}
return array4
}
function safeGet(object4, key2) {
if (key2 === 'constructor' && typeof object4[key2] === 'function') {
return
}
if (key2 == '__proto__') {
return
}
return object4[key2]
}
var setData = shortOut2(baseSetData)
var setTimeout2 =
ctxSetTimeout ||
function (func, wait) {
return root2.setTimeout(func, wait)
}
var setToString2 = shortOut2(baseSetToString2)
function setWrapToString(wrapper, reference2, bitmask) {
var source2 = reference2 + ''
return setToString2(
wrapper,
insertWrapDetails(
source2,
updateWrapDetails(getWrapDetails(source2), bitmask)
)
)
}
function shortOut2(func) {
var count2 = 0,
lastCalled = 0
return function () {
var stamp2 = nativeNow2(),
remaining = HOT_SPAN2 - (stamp2 - lastCalled)
lastCalled = stamp2
if (remaining > 0) {
if (++count2 >= HOT_COUNT2) {
return arguments[0]
}
} else {
count2 = 0
}
return func.apply(undefined$1, arguments)
}
}
function shuffleSelf(array4, size2) {
var index2 = -1,
length2 = array4.length,
lastIndex = length2 - 1
size2 = size2 === undefined$1 ? length2 : size2
while (++index2 < size2) {
var rand2 = baseRandom(index2, lastIndex),
value2 = array4[rand2]
array4[rand2] = array4[index2]
array4[index2] = value2
}
array4.length = size2
return array4
}
var stringToPath2 = memoizeCapped2(function (string3) {
var result2 = []
if (string3.charCodeAt(0) === 46) {
result2.push('')
}
string3.replace(
rePropName2,
function (match2, number4, quote, subString) {
result2.push(
quote ? subString.replace(reEscapeChar2, '$1') : number4 || match2
)
}
)
return result2
})
function toKey2(value2) {
if (typeof value2 == 'string' || isSymbol2(value2)) {
return value2
}
var result2 = value2 + ''
return result2 == '0' && 1 / value2 == -INFINITY2 ? '-0' : result2
}
function toSource2(func) {
if (func != null) {
try {
return funcToString2.call(func)
} catch (e2) {}
try {
return func + ''
} catch (e2) {}
}
return ''
}
function updateWrapDetails(details, bitmask) {
arrayEach2(wrapFlags, function (pair) {
var value2 = '_.' + pair[0]
if (bitmask & pair[1] && !arrayIncludes2(details, value2)) {
details.push(value2)
}
})
return details.sort()
}
function wrapperClone(wrapper) {
if (wrapper instanceof LazyWrapper) {
return wrapper.clone()
}
var result2 = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__)
result2.__actions__ = copyArray2(wrapper.__actions__)
result2.__index__ = wrapper.__index__
result2.__values__ = wrapper.__values__
return result2
}
function chunk2(array4, size2, guard) {
if (
guard ? isIterateeCall(array4, size2, guard) : size2 === undefined$1
) {
size2 = 1
} else {
size2 = nativeMax2(toInteger2(size2), 0)
}
var length2 = array4 == null ? 0 : array4.length
if (!length2 || size2 < 1) {
return []
}
var index2 = 0,
resIndex = 0,
result2 = Array2(nativeCeil(length2 / size2))
while (index2 < length2) {
result2[resIndex++] = baseSlice(array4, index2, (index2 += size2))
}
return result2
}
function compact(array4) {
var index2 = -1,
length2 = array4 == null ? 0 : array4.length,
resIndex = 0,
result2 = []
while (++index2 < length2) {
var value2 = array4[index2]
if (value2) {
result2[resIndex++] = value2
}
}
return result2
}
function concat2() {
var length2 = arguments.length
if (!length2) {
return []
}
var args = Array2(length2 - 1),
array4 = arguments[0],
index2 = length2
while (index2--) {
args[index2 - 1] = arguments[index2]
}
return arrayPush2(
isArray3(array4) ? copyArray2(array4) : [array4],
baseFlatten2(args, 1)
)
}
var difference = baseRest2(function (array4, values3) {
return isArrayLikeObject2(array4)
? baseDifference(
array4,
baseFlatten2(values3, 1, isArrayLikeObject2, true)
)
: []
})
var differenceBy = baseRest2(function (array4, values3) {
var iteratee2 = last2(values3)
if (isArrayLikeObject2(iteratee2)) {
iteratee2 = undefined$1
}
return isArrayLikeObject2(array4)
? baseDifference(
array4,
baseFlatten2(values3, 1, isArrayLikeObject2, true),
getIteratee(iteratee2, 2)
)
: []
})
var differenceWith = baseRest2(function (array4, values3) {
var comparator = last2(values3)
if (isArrayLikeObject2(comparator)) {
comparator = undefined$1
}
return isArrayLikeObject2(array4)
? baseDifference(
array4,
baseFlatten2(values3, 1, isArrayLikeObject2, true),
undefined$1,
comparator
)
: []
})
function drop3(array4, n2, guard) {
var length2 = array4 == null ? 0 : array4.length
if (!length2) {
return []
}
n2 = guard || n2 === undefined$1 ? 1 : toInteger2(n2)
return baseSlice(array4, n2 < 0 ? 0 : n2, length2)
}
function dropRight(array4, n2, guard) {
var length2 = array4 == null ? 0 : array4.length
if (!length2) {
return []
}
n2 = guard || n2 === undefined$1 ? 1 : toInteger2(n2)
n2 = length2 - n2
return baseSlice(array4, 0, n2 < 0 ? 0 : n2)
}
function dropRightWhile(array4, predicate) {
return array4 && array4.length
? baseWhile(array4, getIteratee(predicate, 3), true, true)
: []
}
function dropWhile(array4, predicate) {
return array4 && array4.length
? baseWhile(array4, getIteratee(predicate, 3), true)
: []
}
function fill(array4, value2, start2, end2) {
var length2 = array4 == null ? 0 : array4.length
if (!length2) {
return []
}
if (
start2 &&
typeof start2 != 'number' &&
isIterateeCall(array4, value2, start2)
) {
start2 = 0
end2 = length2
}
return baseFill(array4, value2, start2, end2)
}
function findIndex(array4, predicate, fromIndex) {
var length2 = array4 == null ? 0 : array4.length
if (!length2) {
return -1
}
var index2 = fromIndex == null ? 0 : toInteger2(fromIndex)
if (index2 < 0) {
index2 = nativeMax2(length2 + index2, 0)
}
return baseFindIndex2(array4, getIteratee(predicate, 3), index2)
}
function findLastIndex(array4, predicate, fromIndex) {
var length2 = array4 == null ? 0 : array4.length
if (!length2) {
return -1
}
var index2 = length2 - 1
if (fromIndex !== undefined$1) {
index2 = toInteger2(fromIndex)
index2 =
fromIndex < 0
? nativeMax2(length2 + index2, 0)
: nativeMin2(index2, length2 - 1)
}
return baseFindIndex2(array4, getIteratee(predicate, 3), index2, true)
}
function flatten2(array4) {
var length2 = array4 == null ? 0 : array4.length
return length2 ? baseFlatten2(array4, 1) : []
}
function flattenDeep2(array4) {
var length2 = array4 == null ? 0 : array4.length
return length2 ? baseFlatten2(array4, INFINITY2) : []
}
function flattenDepth(array4, depth) {
var length2 = array4 == null ? 0 : array4.length
if (!length2) {
return []
}
depth = depth === undefined$1 ? 1 : toInteger2(depth)
return baseFlatten2(array4, depth)
}
function fromPairs2(pairs) {
var index2 = -1,
length2 = pairs == null ? 0 : pairs.length,
result2 = {}
while (++index2 < length2) {
var pair = pairs[index2]
result2[pair[0]] = pair[1]
}
return result2
}
function head(array4) {
return array4 && array4.length ? array4[0] : undefined$1
}
function indexOf3(array4, value2, fromIndex) {
var length2 = array4 == null ? 0 : array4.length
if (!length2) {
return -1
}
var index2 = fromIndex == null ? 0 : toInteger2(fromIndex)
if (index2 < 0) {
index2 = nativeMax2(length2 + index2, 0)
}
return baseIndexOf2(array4, value2, index2)
}
function initial(array4) {
var length2 = array4 == null ? 0 : array4.length
return length2 ? baseSlice(array4, 0, -1) : []
}
var intersection = baseRest2(function (arrays) {
var mapped = arrayMap2(arrays, castArrayLikeObject)
return mapped.length && mapped[0] === arrays[0]
? baseIntersection(mapped)
: []
})
var intersectionBy = baseRest2(function (arrays) {
var iteratee2 = last2(arrays),
mapped = arrayMap2(arrays, castArrayLikeObject)
if (iteratee2 === last2(mapped)) {
iteratee2 = undefined$1
} else {
mapped.pop()
}
return mapped.length && mapped[0] === arrays[0]
? baseIntersection(mapped, getIteratee(iteratee2, 2))
: []
})
var intersectionWith = baseRest2(function (arrays) {
var comparator = last2(arrays),
mapped = arrayMap2(arrays, castArrayLikeObject)
comparator = typeof comparator == 'function' ? comparator : undefined$1
if (comparator) {
mapped.pop()
}
return mapped.length && mapped[0] === arrays[0]
? baseIntersection(mapped, undefined$1, comparator)
: []
})
function join2(array4, separator) {
return array4 == null ? '' : nativeJoin.call(array4, separator)
}
function last2(array4) {
var length2 = array4 == null ? 0 : array4.length
return length2 ? array4[length2 - 1] : undefined$1
}
function lastIndexOf2(array4, value2, fromIndex) {
var length2 = array4 == null ? 0 : array4.length
if (!length2) {
return -1
}
var index2 = length2
if (fromIndex !== undefined$1) {
index2 = toInteger2(fromIndex)
index2 =
index2 < 0
? nativeMax2(length2 + index2, 0)
: nativeMin2(index2, length2 - 1)
}
return value2 === value2
? strictLastIndexOf(array4, value2, index2)
: baseFindIndex2(array4, baseIsNaN2, index2, true)
}
function nth(array4, n2) {
return array4 && array4.length
? baseNth(array4, toInteger2(n2))
: undefined$1
}
var pull = baseRest2(pullAll)
function pullAll(array4, values3) {
return array4 && array4.length && values3 && values3.length
? basePullAll(array4, values3)
: array4
}
function pullAllBy(array4, values3, iteratee2) {
return array4 && array4.length && values3 && values3.length
? basePullAll(array4, values3, getIteratee(iteratee2, 2))
: array4
}
function pullAllWith(array4, values3, comparator) {
return array4 && array4.length && values3 && values3.length
? basePullAll(array4, values3, undefined$1, comparator)
: array4
}
var pullAt = flatRest2(function (array4, indexes) {
var length2 = array4 == null ? 0 : array4.length,
result2 = baseAt(array4, indexes)
basePullAt(
array4,
arrayMap2(indexes, function (index2) {
return isIndex2(index2, length2) ? +index2 : index2
}).sort(compareAscending)
)
return result2
})
function remove2(array4, predicate) {
var result2 = []
if (!(array4 && array4.length)) {
return result2
}
var index2 = -1,
indexes = [],
length2 = array4.length
predicate = getIteratee(predicate, 3)
while (++index2 < length2) {
var value2 = array4[index2]
if (predicate(value2, index2, array4)) {
result2.push(value2)
indexes.push(index2)
}
}
basePullAt(array4, indexes)
return result2
}
function reverse3(array4) {
return array4 == null ? array4 : nativeReverse2.call(array4)
}
function slice2(array4, start2, end2) {
var length2 = array4 == null ? 0 : array4.length
if (!length2) {
return []
}
if (
end2 &&
typeof end2 != 'number' &&
isIterateeCall(array4, start2, end2)
) {
start2 = 0
end2 = length2
} else {
start2 = start2 == null ? 0 : toInteger2(start2)
end2 = end2 === undefined$1 ? length2 : toInteger2(end2)
}
return baseSlice(array4, start2, end2)
}
function sortedIndex(array4, value2) {
return baseSortedIndex(array4, value2)
}
function sortedIndexBy(array4, value2, iteratee2) {
return baseSortedIndexBy(array4, value2, getIteratee(iteratee2, 2))
}
function sortedIndexOf(array4, value2) {
var length2 = array4 == null ? 0 : array4.length
if (length2) {
var index2 = baseSortedIndex(array4, value2)
if (index2 < length2 && eq2(array4[index2], value2)) {
return index2
}
}
return -1
}
function sortedLastIndex(array4, value2) {
return baseSortedIndex(array4, value2, true)
}
function sortedLastIndexBy(array4, value2, iteratee2) {
return baseSortedIndexBy(
array4,
value2,
getIteratee(iteratee2, 2),
true
)
}
function sortedLastIndexOf(array4, value2) {
var length2 = array4 == null ? 0 : array4.length
if (length2) {
var index2 = baseSortedIndex(array4, value2, true) - 1
if (eq2(array4[index2], value2)) {
return index2
}
}
return -1
}
function sortedUniq(array4) {
return array4 && array4.length ? baseSortedUniq(array4) : []
}
function sortedUniqBy(array4, iteratee2) {
return array4 && array4.length
? baseSortedUniq(array4, getIteratee(iteratee2, 2))
: []
}
function tail(array4) {
var length2 = array4 == null ? 0 : array4.length
return length2 ? baseSlice(array4, 1, length2) : []
}
function take2(array4, n2, guard) {
if (!(array4 && array4.length)) {
return []
}
n2 = guard || n2 === undefined$1 ? 1 : toInteger2(n2)
return baseSlice(array4, 0, n2 < 0 ? 0 : n2)
}
function takeRight(array4, n2, guard) {
var length2 = array4 == null ? 0 : array4.length
if (!length2) {
return []
}
n2 = guard || n2 === undefined$1 ? 1 : toInteger2(n2)
n2 = length2 - n2
return baseSlice(array4, n2 < 0 ? 0 : n2, length2)
}
function takeRightWhile(array4, predicate) {
return array4 && array4.length
? baseWhile(array4, getIteratee(predicate, 3), false, true)
: []
}
function takeWhile(array4, predicate) {
return array4 && array4.length
? baseWhile(array4, getIteratee(predicate, 3))
: []
}
var union2 = baseRest2(function (arrays) {
return baseUniq2(baseFlatten2(arrays, 1, isArrayLikeObject2, true))
})
var unionBy = baseRest2(function (arrays) {
var iteratee2 = last2(arrays)
if (isArrayLikeObject2(iteratee2)) {
iteratee2 = undefined$1
}
return baseUniq2(
baseFlatten2(arrays, 1, isArrayLikeObject2, true),
getIteratee(iteratee2, 2)
)
})
var unionWith = baseRest2(function (arrays) {
var comparator = last2(arrays)
comparator = typeof comparator == 'function' ? comparator : undefined$1
return baseUniq2(
baseFlatten2(arrays, 1, isArrayLikeObject2, true),
undefined$1,
comparator
)
})
function uniq2(array4) {
return array4 && array4.length ? baseUniq2(array4) : []
}
function uniqBy(array4, iteratee2) {
return array4 && array4.length
? baseUniq2(array4, getIteratee(iteratee2, 2))
: []
}
function uniqWith(array4, comparator) {
comparator = typeof comparator == 'function' ? comparator : undefined$1
return array4 && array4.length
? baseUniq2(array4, undefined$1, comparator)
: []
}
function unzip2(array4) {
if (!(array4 && array4.length)) {
return []
}
var length2 = 0
array4 = arrayFilter2(array4, function (group) {
if (isArrayLikeObject2(group)) {
length2 = nativeMax2(group.length, length2)
return true
}
})
return baseTimes2(length2, function (index2) {
return arrayMap2(array4, baseProperty(index2))
})
}
function unzipWith(array4, iteratee2) {
if (!(array4 && array4.length)) {
return []
}
var result2 = unzip2(array4)
if (iteratee2 == null) {
return result2
}
return arrayMap2(result2, function (group) {
return apply2(iteratee2, undefined$1, group)
})
}
var without = baseRest2(function (array4, values3) {
return isArrayLikeObject2(array4) ? baseDifference(array4, values3) : []
})
var xor = baseRest2(function (arrays) {
return baseXor(arrayFilter2(arrays, isArrayLikeObject2))
})
var xorBy = baseRest2(function (arrays) {
var iteratee2 = last2(arrays)
if (isArrayLikeObject2(iteratee2)) {
iteratee2 = undefined$1
}
return baseXor(
arrayFilter2(arrays, isArrayLikeObject2),
getIteratee(iteratee2, 2)
)
})
var xorWith = baseRest2(function (arrays) {
var comparator = last2(arrays)
comparator = typeof comparator == 'function' ? comparator : undefined$1
return baseXor(
arrayFilter2(arrays, isArrayLikeObject2),
undefined$1,
comparator
)
})
var zip2 = baseRest2(unzip2)
function zipObject2(props2, values3) {
return baseZipObject(props2 || [], values3 || [], assignValue2)
}
function zipObjectDeep(props2, values3) {
return baseZipObject(props2 || [], values3 || [], baseSet2)
}
var zipWith = baseRest2(function (arrays) {
var length2 = arrays.length,
iteratee2 = length2 > 1 ? arrays[length2 - 1] : undefined$1
iteratee2 =
typeof iteratee2 == 'function'
? (arrays.pop(), iteratee2)
: undefined$1
return unzipWith(arrays, iteratee2)
})
function chain(value2) {
var result2 = lodash2(value2)
result2.__chain__ = true
return result2
}
function tap(value2, interceptor2) {
interceptor2(value2)
return value2
}
function thru(value2, interceptor2) {
return interceptor2(value2)
}
var wrapperAt = flatRest2(function (paths) {
var length2 = paths.length,
start2 = length2 ? paths[0] : 0,
value2 = this.__wrapped__,
interceptor2 = function (object4) {
return baseAt(object4, paths)
}
if (
length2 > 1 ||
this.__actions__.length ||
!(value2 instanceof LazyWrapper) ||
!isIndex2(start2)
) {
return this.thru(interceptor2)
}
value2 = value2.slice(start2, +start2 + (length2 ? 1 : 0))
value2.__actions__.push({
func: thru,
args: [interceptor2],
thisArg: undefined$1,
})
return new LodashWrapper(value2, this.__chain__).thru(function (
array4
) {
if (length2 && !array4.length) {
array4.push(undefined$1)
}
return array4
})
})
function wrapperChain() {
return chain(this)
}
function wrapperCommit() {
return new LodashWrapper(this.value(), this.__chain__)
}
function wrapperNext() {
if (this.__values__ === undefined$1) {
this.__values__ = toArray3(this.value())
}
var done = this.__index__ >= this.__values__.length,
value2 = done ? undefined$1 : this.__values__[this.__index__++]
return { done: done, value: value2 }
}
function wrapperToIterator() {
return this
}
function wrapperPlant(value2) {
var result2,
parent3 = this
while (parent3 instanceof baseLodash) {
var clone3 = wrapperClone(parent3)
clone3.__index__ = 0
clone3.__values__ = undefined$1
if (result2) {
previous.__wrapped__ = clone3
} else {
result2 = clone3
}
var previous = clone3
parent3 = parent3.__wrapped__
}
previous.__wrapped__ = value2
return result2
}
function wrapperReverse() {
var value2 = this.__wrapped__
if (value2 instanceof LazyWrapper) {
var wrapped = value2
if (this.__actions__.length) {
wrapped = new LazyWrapper(this)
}
wrapped = wrapped.reverse()
wrapped.__actions__.push({
func: thru,
args: [reverse3],
thisArg: undefined$1,
})
return new LodashWrapper(wrapped, this.__chain__)
}
return this.thru(reverse3)
}
function wrapperValue() {
return baseWrapperValue(this.__wrapped__, this.__actions__)
}
var countBy2 = createAggregator(function (result2, value2, key2) {
if (hasOwnProperty2.call(result2, key2)) {
++result2[key2]
} else {
baseAssignValue2(result2, key2, 1)
}
})
function every2(collection2, predicate, guard) {
var func = isArray3(collection2) ? arrayEvery : baseEvery
if (guard && isIterateeCall(collection2, predicate, guard)) {
predicate = undefined$1
}
return func(collection2, getIteratee(predicate, 3))
}
function filter2(collection2, predicate) {
var func = isArray3(collection2) ? arrayFilter2 : baseFilter
return func(collection2, getIteratee(predicate, 3))
}
var find2 = createFind(findIndex)
var findLast2 = createFind(findLastIndex)
function flatMap(collection2, iteratee2) {
return baseFlatten2(map2(collection2, iteratee2), 1)
}
function flatMapDeep(collection2, iteratee2) {
return baseFlatten2(map2(collection2, iteratee2), INFINITY2)
}
function flatMapDepth(collection2, iteratee2, depth) {
depth = depth === undefined$1 ? 1 : toInteger2(depth)
return baseFlatten2(map2(collection2, iteratee2), depth)
}
function forEach3(collection2, iteratee2) {
var func = isArray3(collection2) ? arrayEach2 : baseEach
return func(collection2, getIteratee(iteratee2, 3))
}
function forEachRight(collection2, iteratee2) {
var func = isArray3(collection2) ? arrayEachRight : baseEachRight
return func(collection2, getIteratee(iteratee2, 3))
}
var groupBy2 = createAggregator(function (result2, value2, key2) {
if (hasOwnProperty2.call(result2, key2)) {
result2[key2].push(value2)
} else {
baseAssignValue2(result2, key2, [value2])
}
})
function includes3(collection2, value2, fromIndex, guard) {
collection2 = isArrayLike2(collection2)
? collection2
: values2(collection2)
fromIndex = fromIndex && !guard ? toInteger2(fromIndex) : 0
var length2 = collection2.length
if (fromIndex < 0) {
fromIndex = nativeMax2(length2 + fromIndex, 0)
}
return isString2(collection2)
? fromIndex <= length2 && collection2.indexOf(value2, fromIndex) > -1
: !!length2 && baseIndexOf2(collection2, value2, fromIndex) > -1
}
var invokeMap = baseRest2(function (collection2, path, args) {
var index2 = -1,
isFunc = typeof path == 'function',
result2 = isArrayLike2(collection2) ? Array2(collection2.length) : []
baseEach(collection2, function (value2) {
result2[++index2] = isFunc
? apply2(path, value2, args)
: baseInvoke(value2, path, args)
})
return result2
})
var keyBy = createAggregator(function (result2, value2, key2) {
baseAssignValue2(result2, key2, value2)
})
function map2(collection2, iteratee2) {
var func = isArray3(collection2) ? arrayMap2 : baseMap
return func(collection2, getIteratee(iteratee2, 3))
}
function orderBy2(collection2, iteratees, orders, guard) {
if (collection2 == null) {
return []
}
if (!isArray3(iteratees)) {
iteratees = iteratees == null ? [] : [iteratees]
}
orders = guard ? undefined$1 : orders
if (!isArray3(orders)) {
orders = orders == null ? [] : [orders]
}
return baseOrderBy(collection2, iteratees, orders)
}
var partition = createAggregator(
function (result2, value2, key2) {
result2[key2 ? 0 : 1].push(value2)
},
function () {
return [[], []]
}
)
function reduce3(collection2, iteratee2, accumulator) {
var func = isArray3(collection2) ? arrayReduce2 : baseReduce,
initAccum = arguments.length < 3
return func(
collection2,
getIteratee(iteratee2, 4),
accumulator,
initAccum,
baseEach
)
}
function reduceRight(collection2, iteratee2, accumulator) {
var func = isArray3(collection2) ? arrayReduceRight : baseReduce,
initAccum = arguments.length < 3
return func(
collection2,
getIteratee(iteratee2, 4),
accumulator,
initAccum,
baseEachRight
)
}
function reject2(collection2, predicate) {
var func = isArray3(collection2) ? arrayFilter2 : baseFilter
return func(collection2, negate2(getIteratee(predicate, 3)))
}
function sample2(collection2) {
var func = isArray3(collection2) ? arraySample : baseSample
return func(collection2)
}
function sampleSize(collection2, n2, guard) {
if (
guard ? isIterateeCall(collection2, n2, guard) : n2 === undefined$1
) {
n2 = 1
} else {
n2 = toInteger2(n2)
}
var func = isArray3(collection2) ? arraySampleSize : baseSampleSize
return func(collection2, n2)
}
function shuffle2(collection2) {
var func = isArray3(collection2) ? arrayShuffle : baseShuffle
return func(collection2)
}
function size(collection2) {
if (collection2 == null) {
return 0
}
if (isArrayLike2(collection2)) {
return isString2(collection2)
? stringSize(collection2)
: collection2.length
}
var tag = getTag2(collection2)
if (tag == mapTag2 || tag == setTag2) {
return collection2.size
}
return baseKeys2(collection2).length
}
function some2(collection2, predicate, guard) {
var func = isArray3(collection2) ? arraySome2 : baseSome
if (guard && isIterateeCall(collection2, predicate, guard)) {
predicate = undefined$1
}
return func(collection2, getIteratee(predicate, 3))
}
var sortBy2 = baseRest2(function (collection2, iteratees) {
if (collection2 == null) {
return []
}
var length2 = iteratees.length
if (
length2 > 1 &&
isIterateeCall(collection2, iteratees[0], iteratees[1])
) {
iteratees = []
} else if (
length2 > 2 &&
isIterateeCall(iteratees[0], iteratees[1], iteratees[2])
) {
iteratees = [iteratees[0]]
}
return baseOrderBy(collection2, baseFlatten2(iteratees, 1), [])
})
var now2 =
ctxNow ||
function () {
return root2.Date.now()
}
function after2(n2, func) {
if (typeof func != 'function') {
throw new TypeError2(FUNC_ERROR_TEXT2)
}
n2 = toInteger2(n2)
return function () {
if (--n2 < 1) {
return func.apply(this, arguments)
}
}
}
function ary(func, n2, guard) {
n2 = guard ? undefined$1 : n2
n2 = func && n2 == null ? func.length : n2
return createWrap2(
func,
WRAP_ARY_FLAG,
undefined$1,
undefined$1,
undefined$1,
undefined$1,
n2
)
}
function before2(n2, func) {
var result2
if (typeof func != 'function') {
throw new TypeError2(FUNC_ERROR_TEXT2)
}
n2 = toInteger2(n2)
return function () {
if (--n2 > 0) {
result2 = func.apply(this, arguments)
}
if (n2 <= 1) {
func = undefined$1
}
return result2
}
}
var bind3 = baseRest2(function (func, thisArg, partials) {
var bitmask = WRAP_BIND_FLAG
if (partials.length) {
var holders = replaceHolders(partials, getHolder(bind3))
bitmask |= WRAP_PARTIAL_FLAG
}
return createWrap2(func, bitmask, thisArg, partials, holders)
})
var bindKey = baseRest2(function (object4, key2, partials) {
var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG
if (partials.length) {
var holders = replaceHolders(partials, getHolder(bindKey))
bitmask |= WRAP_PARTIAL_FLAG
}
return createWrap2(key2, bitmask, object4, partials, holders)
})
function curry2(func, arity, guard) {
arity = guard ? undefined$1 : arity
var result2 = createWrap2(
func,
WRAP_CURRY_FLAG,
undefined$1,
undefined$1,
undefined$1,
undefined$1,
undefined$1,
arity
)
result2.placeholder = curry2.placeholder
return result2
}
function curryRight(func, arity, guard) {
arity = guard ? undefined$1 : arity
var result2 = createWrap2(
func,
WRAP_CURRY_RIGHT_FLAG,
undefined$1,
undefined$1,
undefined$1,
undefined$1,
undefined$1,
arity
)
result2.placeholder = curryRight.placeholder
return result2
}
function debounce2(func, wait, options2) {
var lastArgs,
lastThis,
maxWait,
result2,
timerId,
lastCallTime,
lastInvokeTime = 0,
leading = false,
maxing = false,
trailing = true
if (typeof func != 'function') {
throw new TypeError2(FUNC_ERROR_TEXT2)
}
wait = toNumber2(wait) || 0
if (isObject2(options2)) {
leading = !!options2.leading
maxing = 'maxWait' in options2
maxWait = maxing
? nativeMax2(toNumber2(options2.maxWait) || 0, wait)
: maxWait
trailing = 'trailing' in options2 ? !!options2.trailing : trailing
}
function invokeFunc(time2) {
var args = lastArgs,
thisArg = lastThis
lastArgs = lastThis = undefined$1
lastInvokeTime = time2
result2 = func.apply(thisArg, args)
return result2
}
function leadingEdge(time2) {
lastInvokeTime = time2
timerId = setTimeout2(timerExpired, wait)
return leading ? invokeFunc(time2) : result2
}
function remainingWait(time2) {
var timeSinceLastCall = time2 - lastCallTime,
timeSinceLastInvoke = time2 - lastInvokeTime,
timeWaiting = wait - timeSinceLastCall
return maxing
? nativeMin2(timeWaiting, maxWait - timeSinceLastInvoke)
: timeWaiting
}
function shouldInvoke(time2) {
var timeSinceLastCall = time2 - lastCallTime,
timeSinceLastInvoke = time2 - lastInvokeTime
return (
lastCallTime === undefined$1 ||
timeSinceLastCall >= wait ||
timeSinceLastCall < 0 ||
(maxing && timeSinceLastInvoke >= maxWait)
)
}
function timerExpired() {
var time2 = now2()
if (shouldInvoke(time2)) {
return trailingEdge(time2)
}
timerId = setTimeout2(timerExpired, remainingWait(time2))
}
function trailingEdge(time2) {
timerId = undefined$1
if (trailing && lastArgs) {
return invokeFunc(time2)
}
lastArgs = lastThis = undefined$1
return result2
}
function cancel2() {
if (timerId !== undefined$1) {
clearTimeout2(timerId)
}
lastInvokeTime = 0
lastArgs = lastCallTime = lastThis = timerId = undefined$1
}
function flush2() {
return timerId === undefined$1 ? result2 : trailingEdge(now2())
}
function debounced() {
var time2 = now2(),
isInvoking = shouldInvoke(time2)
lastArgs = arguments
lastThis = this
lastCallTime = time2
if (isInvoking) {
if (timerId === undefined$1) {
return leadingEdge(lastCallTime)
}
if (maxing) {
clearTimeout2(timerId)
timerId = setTimeout2(timerExpired, wait)
return invokeFunc(lastCallTime)
}
}
if (timerId === undefined$1) {
timerId = setTimeout2(timerExpired, wait)
}
return result2
}
debounced.cancel = cancel2
debounced.flush = flush2
return debounced
}
var defer2 = baseRest2(function (func, args) {
return baseDelay(func, 1, args)
})
var delay2 = baseRest2(function (func, wait, args) {
return baseDelay(func, toNumber2(wait) || 0, args)
})
function flip2(func) {
return createWrap2(func, WRAP_FLIP_FLAG)
}
function memoize2(func, resolver) {
if (
typeof func != 'function' ||
(resolver != null && typeof resolver != 'function')
) {
throw new TypeError2(FUNC_ERROR_TEXT2)
}
var memoized = function () {
var args = arguments,
key2 = resolver ? resolver.apply(this, args) : args[0],
cache2 = memoized.cache
if (cache2.has(key2)) {
return cache2.get(key2)
}
var result2 = func.apply(this, args)
memoized.cache = cache2.set(key2, result2) || cache2
return result2
}
memoized.cache = new (memoize2.Cache || MapCache2)()
return memoized
}
memoize2.Cache = MapCache2
function negate2(predicate) {
if (typeof predicate != 'function') {
throw new TypeError2(FUNC_ERROR_TEXT2)
}
return function () {
var args = arguments
switch (args.length) {
case 0:
return !predicate.call(this)
case 1:
return !predicate.call(this, args[0])
case 2:
return !predicate.call(this, args[0], args[1])
case 3:
return !predicate.call(this, args[0], args[1], args[2])
}
return !predicate.apply(this, args)
}
}
function once2(func) {
return before2(2, func)
}
var overArgs = castRest(function (func, transforms) {
transforms =
transforms.length == 1 && isArray3(transforms[0])
? arrayMap2(transforms[0], baseUnary2(getIteratee()))
: arrayMap2(baseFlatten2(transforms, 1), baseUnary2(getIteratee()))
var funcsLength = transforms.length
return baseRest2(function (args) {
var index2 = -1,
length2 = nativeMin2(args.length, funcsLength)
while (++index2 < length2) {
args[index2] = transforms[index2].call(this, args[index2])
}
return apply2(func, this, args)
})
})
var partial2 = baseRest2(function (func, partials) {
var holders = replaceHolders(partials, getHolder(partial2))
return createWrap2(
func,
WRAP_PARTIAL_FLAG,
undefined$1,
partials,
holders
)
})
var partialRight = baseRest2(function (func, partials) {
var holders = replaceHolders(partials, getHolder(partialRight))
return createWrap2(
func,
WRAP_PARTIAL_RIGHT_FLAG,
undefined$1,
partials,
holders
)
})
var rearg = flatRest2(function (func, indexes) {
return createWrap2(
func,
WRAP_REARG_FLAG,
undefined$1,
undefined$1,
undefined$1,
indexes
)
})
function rest(func, start2) {
if (typeof func != 'function') {
throw new TypeError2(FUNC_ERROR_TEXT2)
}
start2 = start2 === undefined$1 ? start2 : toInteger2(start2)
return baseRest2(func, start2)
}
function spread3(func, start2) {
if (typeof func != 'function') {
throw new TypeError2(FUNC_ERROR_TEXT2)
}
start2 = start2 == null ? 0 : nativeMax2(toInteger2(start2), 0)
return baseRest2(function (args) {
var array4 = args[start2],
otherArgs = castSlice(args, 0, start2)
if (array4) {
arrayPush2(otherArgs, array4)
}
return apply2(func, this, otherArgs)
})
}
function throttle2(func, wait, options2) {
var leading = true,
trailing = true
if (typeof func != 'function') {
throw new TypeError2(FUNC_ERROR_TEXT2)
}
if (isObject2(options2)) {
leading = 'leading' in options2 ? !!options2.leading : leading
trailing = 'trailing' in options2 ? !!options2.trailing : trailing
}
return debounce2(func, wait, {
leading: leading,
maxWait: wait,
trailing: trailing,
})
}
function unary(func) {
return ary(func, 1)
}
function wrap(value2, wrapper) {
return partial2(castFunction(wrapper), value2)
}
function castArray2() {
if (!arguments.length) {
return []
}
var value2 = arguments[0]
return isArray3(value2) ? value2 : [value2]
}
function clone2(value2) {
return baseClone2(value2, CLONE_SYMBOLS_FLAG2)
}
function cloneWith(value2, customizer) {
customizer = typeof customizer == 'function' ? customizer : undefined$1
return baseClone2(value2, CLONE_SYMBOLS_FLAG2, customizer)
}
function cloneDeep2(value2) {
return baseClone2(value2, CLONE_DEEP_FLAG2 | CLONE_SYMBOLS_FLAG2)
}
function cloneDeepWith(value2, customizer) {
customizer = typeof customizer == 'function' ? customizer : undefined$1
return baseClone2(
value2,
CLONE_DEEP_FLAG2 | CLONE_SYMBOLS_FLAG2,
customizer
)
}
function conformsTo(object4, source2) {
return (
source2 == null || baseConformsTo(object4, source2, keys3(source2))
)
}
function eq2(value2, other) {
return value2 === other || (value2 !== value2 && other !== other)
}
var gt2 = createRelationalOperation(baseGt)
var gte = createRelationalOperation(function (value2, other) {
return value2 >= other
})
var isArguments2 = baseIsArguments2(
(function () {
return arguments
})()
)
? baseIsArguments2
: function (value2) {
return (
isObjectLike2(value2) &&
hasOwnProperty2.call(value2, 'callee') &&
!propertyIsEnumerable3.call(value2, 'callee')
)
}
var isArray3 = Array2.isArray
var isArrayBuffer2 = nodeIsArrayBuffer
? baseUnary2(nodeIsArrayBuffer)
: baseIsArrayBuffer
function isArrayLike2(value2) {
return (
value2 != null && isLength2(value2.length) && !isFunction2(value2)
)
}
function isArrayLikeObject2(value2) {
return isObjectLike2(value2) && isArrayLike2(value2)
}
function isBoolean2(value2) {
return (
value2 === true ||
value2 === false ||
(isObjectLike2(value2) && baseGetTag2(value2) == boolTag2)
)
}
var isBuffer2 = nativeIsBuffer2 || stubFalse2
var isDate2 = nodeIsDate ? baseUnary2(nodeIsDate) : baseIsDate
function isElement2(value2) {
return (
isObjectLike2(value2) &&
value2.nodeType === 1 &&
!isPlainObject2(value2)
)
}
function isEmpty2(value2) {
if (value2 == null) {
return true
}
if (
isArrayLike2(value2) &&
(isArray3(value2) ||
typeof value2 == 'string' ||
typeof value2.splice == 'function' ||
isBuffer2(value2) ||
isTypedArray2(value2) ||
isArguments2(value2))
) {
return !value2.length
}
var tag = getTag2(value2)
if (tag == mapTag2 || tag == setTag2) {
return !value2.size
}
if (isPrototype2(value2)) {
return !baseKeys2(value2).length
}
for (var key2 in value2) {
if (hasOwnProperty2.call(value2, key2)) {
return false
}
}
return true
}
function isEqual2(value2, other) {
return baseIsEqual2(value2, other)
}
function isEqualWith2(value2, other, customizer) {
customizer = typeof customizer == 'function' ? customizer : undefined$1
var result2 = customizer ? customizer(value2, other) : undefined$1
return result2 === undefined$1
? baseIsEqual2(value2, other, undefined$1, customizer)
: !!result2
}
function isError2(value2) {
if (!isObjectLike2(value2)) {
return false
}
var tag = baseGetTag2(value2)
return (
tag == errorTag2 ||
tag == domExcTag ||
(typeof value2.message == 'string' &&
typeof value2.name == 'string' &&
!isPlainObject2(value2))
)
}
function isFinite2(value2) {
return typeof value2 == 'number' && nativeIsFinite(value2)
}
function isFunction2(value2) {
if (!isObject2(value2)) {
return false
}
var tag = baseGetTag2(value2)
return (
tag == funcTag2 ||
tag == genTag2 ||
tag == asyncTag2 ||
tag == proxyTag2
)
}
function isInteger2(value2) {
return typeof value2 == 'number' && value2 == toInteger2(value2)
}
function isLength2(value2) {
return (
typeof value2 == 'number' &&
value2 > -1 &&
value2 % 1 == 0 &&
value2 <= MAX_SAFE_INTEGER2
)
}
function isObject2(value2) {
var type4 = typeof value2
return value2 != null && (type4 == 'object' || type4 == 'function')
}
function isObjectLike2(value2) {
return value2 != null && typeof value2 == 'object'
}
var isMap2 = nodeIsMap2 ? baseUnary2(nodeIsMap2) : baseIsMap2
function isMatch2(object4, source2) {
return (
object4 === source2 ||
baseIsMatch(object4, source2, getMatchData(source2))
)
}
function isMatchWith(object4, source2, customizer) {
customizer = typeof customizer == 'function' ? customizer : undefined$1
return baseIsMatch(object4, source2, getMatchData(source2), customizer)
}
function isNaN2(value2) {
return isNumber2(value2) && value2 != +value2
}
function isNative(value2) {
if (isMaskable(value2)) {
throw new Error2(CORE_ERROR_TEXT)
}
return baseIsNative2(value2)
}
function isNull2(value2) {
return value2 === null
}
function isNil2(value2) {
return value2 == null
}
function isNumber2(value2) {
return (
typeof value2 == 'number' ||
(isObjectLike2(value2) && baseGetTag2(value2) == numberTag2)
)
}
function isPlainObject2(value2) {
if (!isObjectLike2(value2) || baseGetTag2(value2) != objectTag2) {
return false
}
var proto2 = getPrototype2(value2)
if (proto2 === null) {
return true
}
var Ctor =
hasOwnProperty2.call(proto2, 'constructor') && proto2.constructor
return (
typeof Ctor == 'function' &&
Ctor instanceof Ctor &&
funcToString2.call(Ctor) == objectCtorString
)
}
var isRegExp2 = nodeIsRegExp ? baseUnary2(nodeIsRegExp) : baseIsRegExp
function isSafeInteger(value2) {
return (
isInteger2(value2) &&
value2 >= -MAX_SAFE_INTEGER2 &&
value2 <= MAX_SAFE_INTEGER2
)
}
var isSet2 = nodeIsSet2 ? baseUnary2(nodeIsSet2) : baseIsSet2
function isString2(value2) {
return (
typeof value2 == 'string' ||
(!isArray3(value2) &&
isObjectLike2(value2) &&
baseGetTag2(value2) == stringTag2)
)
}
function isSymbol2(value2) {
return (
typeof value2 == 'symbol' ||
(isObjectLike2(value2) && baseGetTag2(value2) == symbolTag2)
)
}
var isTypedArray2 = nodeIsTypedArray2
? baseUnary2(nodeIsTypedArray2)
: baseIsTypedArray2
function isUndefined2(value2) {
return value2 === undefined$1
}
function isWeakMap2(value2) {
return isObjectLike2(value2) && getTag2(value2) == weakMapTag2
}
function isWeakSet2(value2) {
return isObjectLike2(value2) && baseGetTag2(value2) == weakSetTag
}
var lt2 = createRelationalOperation(baseLt)
var lte = createRelationalOperation(function (value2, other) {
return value2 <= other
})
function toArray3(value2) {
if (!value2) {
return []
}
if (isArrayLike2(value2)) {
return isString2(value2) ? stringToArray(value2) : copyArray2(value2)
}
if (symIterator && value2[symIterator]) {
return iteratorToArray(value2[symIterator]())
}
var tag = getTag2(value2),
func =
tag == mapTag2
? mapToArray2
: tag == setTag2
? setToArray2
: values2
return func(value2)
}
function toFinite(value2) {
if (!value2) {
return value2 === 0 ? value2 : 0
}
value2 = toNumber2(value2)
if (value2 === INFINITY2 || value2 === -INFINITY2) {
var sign = value2 < 0 ? -1 : 1
return sign * MAX_INTEGER
}
return value2 === value2 ? value2 : 0
}
function toInteger2(value2) {
var result2 = toFinite(value2),
remainder = result2 % 1
return result2 === result2
? remainder
? result2 - remainder
: result2
: 0
}
function toLength2(value2) {
return value2 ? baseClamp(toInteger2(value2), 0, MAX_ARRAY_LENGTH) : 0
}
function toNumber2(value2) {
if (typeof value2 == 'number') {
return value2
}
if (isSymbol2(value2)) {
return NAN2
}
if (isObject2(value2)) {
var other =
typeof value2.valueOf == 'function' ? value2.valueOf() : value2
value2 = isObject2(other) ? other + '' : other
}
if (typeof value2 != 'string') {
return value2 === 0 ? value2 : +value2
}
value2 = baseTrim2(value2)
var isBinary = reIsBinary2.test(value2)
return isBinary || reIsOctal2.test(value2)
? freeParseInt2(value2.slice(2), isBinary ? 2 : 8)
: reIsBadHex2.test(value2)
? NAN2
: +value2
}
function toPlainObject(value2) {
return copyObject2(value2, keysIn2(value2))
}
function toSafeInteger(value2) {
return value2
? baseClamp(toInteger2(value2), -MAX_SAFE_INTEGER2, MAX_SAFE_INTEGER2)
: value2 === 0
? value2
: 0
}
function toString4(value2) {
return value2 == null ? '' : baseToString2(value2)
}
var assign2 = createAssigner(function (object4, source2) {
if (isPrototype2(source2) || isArrayLike2(source2)) {
copyObject2(source2, keys3(source2), object4)
return
}
for (var key2 in source2) {
if (hasOwnProperty2.call(source2, key2)) {
assignValue2(object4, key2, source2[key2])
}
}
})
var assignIn = createAssigner(function (object4, source2) {
copyObject2(source2, keysIn2(source2), object4)
})
var assignInWith = createAssigner(function (
object4,
source2,
srcIndex,
customizer
) {
copyObject2(source2, keysIn2(source2), object4, customizer)
})
var assignWith = createAssigner(function (
object4,
source2,
srcIndex,
customizer
) {
copyObject2(source2, keys3(source2), object4, customizer)
})
var at2 = flatRest2(baseAt)
function create3(prototype, properties) {
var result2 = baseCreate2(prototype)
return properties == null ? result2 : baseAssign2(result2, properties)
}
var defaults2 = baseRest2(function (object4, sources) {
object4 = Object2(object4)
var index2 = -1
var length2 = sources.length
var guard = length2 > 2 ? sources[2] : undefined$1
if (guard && isIterateeCall(sources[0], sources[1], guard)) {
length2 = 1
}
while (++index2 < length2) {
var source2 = sources[index2]
var props2 = keysIn2(source2)
var propsIndex = -1
var propsLength = props2.length
while (++propsIndex < propsLength) {
var key2 = props2[propsIndex]
var value2 = object4[key2]
if (
value2 === undefined$1 ||
(eq2(value2, objectProto2[key2]) &&
!hasOwnProperty2.call(object4, key2))
) {
object4[key2] = source2[key2]
}
}
}
return object4
})
var defaultsDeep = baseRest2(function (args) {
args.push(undefined$1, customDefaultsMerge)
return apply2(mergeWith, undefined$1, args)
})
function findKey2(object4, predicate) {
return baseFindKey(object4, getIteratee(predicate, 3), baseForOwn)
}
function findLastKey(object4, predicate) {
return baseFindKey(object4, getIteratee(predicate, 3), baseForOwnRight)
}
function forIn(object4, iteratee2) {
return object4 == null
? object4
: baseFor(object4, getIteratee(iteratee2, 3), keysIn2)
}
function forInRight(object4, iteratee2) {
return object4 == null
? object4
: baseForRight(object4, getIteratee(iteratee2, 3), keysIn2)
}
function forOwn(object4, iteratee2) {
return object4 && baseForOwn(object4, getIteratee(iteratee2, 3))
}
function forOwnRight(object4, iteratee2) {
return object4 && baseForOwnRight(object4, getIteratee(iteratee2, 3))
}
function functions(object4) {
return object4 == null ? [] : baseFunctions(object4, keys3(object4))
}
function functionsIn(object4) {
return object4 == null ? [] : baseFunctions(object4, keysIn2(object4))
}
function get3(object4, path, defaultValue) {
var result2 = object4 == null ? undefined$1 : baseGet2(object4, path)
return result2 === undefined$1 ? defaultValue : result2
}
function has2(object4, path) {
return object4 != null && hasPath2(object4, path, baseHas)
}
function hasIn2(object4, path) {
return object4 != null && hasPath2(object4, path, baseHasIn2)
}
var invert2 = createInverter(function (result2, value2, key2) {
if (value2 != null && typeof value2.toString != 'function') {
value2 = nativeObjectToString2.call(value2)
}
result2[value2] = key2
}, constant2(identity2))
var invertBy = createInverter(function (result2, value2, key2) {
if (value2 != null && typeof value2.toString != 'function') {
value2 = nativeObjectToString2.call(value2)
}
if (hasOwnProperty2.call(result2, value2)) {
result2[value2].push(key2)
} else {
result2[value2] = [key2]
}
}, getIteratee)
var invoke2 = baseRest2(baseInvoke)
function keys3(object4) {
return isArrayLike2(object4)
? arrayLikeKeys2(object4)
: baseKeys2(object4)
}
function keysIn2(object4) {
return isArrayLike2(object4)
? arrayLikeKeys2(object4, true)
: baseKeysIn2(object4)
}
function mapKeys(object4, iteratee2) {
var result2 = {}
iteratee2 = getIteratee(iteratee2, 3)
baseForOwn(object4, function (value2, key2, object5) {
baseAssignValue2(result2, iteratee2(value2, key2, object5), value2)
})
return result2
}
function mapValues(object4, iteratee2) {
var result2 = {}
iteratee2 = getIteratee(iteratee2, 3)
baseForOwn(object4, function (value2, key2, object5) {
baseAssignValue2(result2, key2, iteratee2(value2, key2, object5))
})
return result2
}
var merge2 = createAssigner(function (object4, source2, srcIndex) {
baseMerge(object4, source2, srcIndex)
})
var mergeWith = createAssigner(function (
object4,
source2,
srcIndex,
customizer
) {
baseMerge(object4, source2, srcIndex, customizer)
})
var omit2 = flatRest2(function (object4, paths) {
var result2 = {}
if (object4 == null) {
return result2
}
var isDeep = false
paths = arrayMap2(paths, function (path) {
path = castPath2(path, object4)
isDeep || (isDeep = path.length > 1)
return path
})
copyObject2(object4, getAllKeysIn2(object4), result2)
if (isDeep) {
result2 = baseClone2(
result2,
CLONE_DEEP_FLAG2 | CLONE_FLAT_FLAG2 | CLONE_SYMBOLS_FLAG2,
customOmitClone
)
}
var length2 = paths.length
while (length2--) {
baseUnset(result2, paths[length2])
}
return result2
})
function omitBy(object4, predicate) {
return pickBy(object4, negate2(getIteratee(predicate)))
}
var pick2 = flatRest2(function (object4, paths) {
return object4 == null ? {} : basePick2(object4, paths)
})
function pickBy(object4, predicate) {
if (object4 == null) {
return {}
}
var props2 = arrayMap2(getAllKeysIn2(object4), function (prop) {
return [prop]
})
predicate = getIteratee(predicate)
return basePickBy2(object4, props2, function (value2, path) {
return predicate(value2, path[0])
})
}
function result(object4, path, defaultValue) {
path = castPath2(path, object4)
var index2 = -1,
length2 = path.length
if (!length2) {
length2 = 1
object4 = undefined$1
}
while (++index2 < length2) {
var value2 =
object4 == null ? undefined$1 : object4[toKey2(path[index2])]
if (value2 === undefined$1) {
index2 = length2
value2 = defaultValue
}
object4 = isFunction2(value2) ? value2.call(object4) : value2
}
return object4
}
function set2(object4, path, value2) {
return object4 == null ? object4 : baseSet2(object4, path, value2)
}
function setWith(object4, path, value2, customizer) {
customizer = typeof customizer == 'function' ? customizer : undefined$1
return object4 == null
? object4
: baseSet2(object4, path, value2, customizer)
}
var toPairs = createToPairs(keys3)
var toPairsIn = createToPairs(keysIn2)
function transform3(object4, iteratee2, accumulator) {
var isArr = isArray3(object4),
isArrLike = isArr || isBuffer2(object4) || isTypedArray2(object4)
iteratee2 = getIteratee(iteratee2, 4)
if (accumulator == null) {
var Ctor = object4 && object4.constructor
if (isArrLike) {
accumulator = isArr ? new Ctor() : []
} else if (isObject2(object4)) {
accumulator = isFunction2(Ctor)
? baseCreate2(getPrototype2(object4))
: {}
} else {
accumulator = {}
}
}
;(isArrLike ? arrayEach2 : baseForOwn)(
object4,
function (value2, index2, object5) {
return iteratee2(accumulator, value2, index2, object5)
}
)
return accumulator
}
function unset(object4, path) {
return object4 == null ? true : baseUnset(object4, path)
}
function update3(object4, path, updater) {
return object4 == null
? object4
: baseUpdate(object4, path, castFunction(updater))
}
function updateWith(object4, path, updater, customizer) {
customizer = typeof customizer == 'function' ? customizer : undefined$1
return object4 == null
? object4
: baseUpdate(object4, path, castFunction(updater), customizer)
}
function values2(object4) {
return object4 == null ? [] : baseValues(object4, keys3(object4))
}
function valuesIn(object4) {
return object4 == null ? [] : baseValues(object4, keysIn2(object4))
}
function clamp2(number4, lower, upper) {
if (upper === undefined$1) {
upper = lower
lower = undefined$1
}
if (upper !== undefined$1) {
upper = toNumber2(upper)
upper = upper === upper ? upper : 0
}
if (lower !== undefined$1) {
lower = toNumber2(lower)
lower = lower === lower ? lower : 0
}
return baseClamp(toNumber2(number4), lower, upper)
}
function inRange(number4, start2, end2) {
start2 = toFinite(start2)
if (end2 === undefined$1) {
end2 = start2
start2 = 0
} else {
end2 = toFinite(end2)
}
number4 = toNumber2(number4)
return baseInRange(number4, start2, end2)
}
function random2(lower, upper, floating) {
if (
floating &&
typeof floating != 'boolean' &&
isIterateeCall(lower, upper, floating)
) {
upper = floating = undefined$1
}
if (floating === undefined$1) {
if (typeof upper == 'boolean') {
floating = upper
upper = undefined$1
} else if (typeof lower == 'boolean') {
floating = lower
lower = undefined$1
}
}
if (lower === undefined$1 && upper === undefined$1) {
lower = 0
upper = 1
} else {
lower = toFinite(lower)
if (upper === undefined$1) {
upper = lower
lower = 0
} else {
upper = toFinite(upper)
}
}
if (lower > upper) {
var temp = lower
lower = upper
upper = temp
}
if (floating || lower % 1 || upper % 1) {
var rand2 = nativeRandom()
return nativeMin2(
lower +
rand2 *
(upper -
lower +
freeParseFloat('1e-' + ((rand2 + '').length - 1))),
upper
)
}
return baseRandom(lower, upper)
}
var camelCase2 = createCompounder(function (result2, word, index2) {
word = word.toLowerCase()
return result2 + (index2 ? capitalize2(word) : word)
})
function capitalize2(string3) {
return upperFirst(toString4(string3).toLowerCase())
}
function deburr(string3) {
string3 = toString4(string3)
return (
string3 &&
string3.replace(reLatin, deburrLetter).replace(reComboMark, '')
)
}
function endsWith3(string3, target2, position2) {
string3 = toString4(string3)
target2 = baseToString2(target2)
var length2 = string3.length
position2 =
position2 === undefined$1
? length2
: baseClamp(toInteger2(position2), 0, length2)
var end2 = position2
position2 -= target2.length
return position2 >= 0 && string3.slice(position2, end2) == target2
}
function escape2(string3) {
string3 = toString4(string3)
return string3 && reHasUnescapedHtml.test(string3)
? string3.replace(reUnescapedHtml, escapeHtmlChar)
: string3
}
function escapeRegExp(string3) {
string3 = toString4(string3)
return string3 && reHasRegExpChar.test(string3)
? string3.replace(reRegExpChar2, '\\$&')
: string3
}
var kebabCase2 = createCompounder(function (result2, word, index2) {
return result2 + (index2 ? '-' : '') + word.toLowerCase()
})
var lowerCase = createCompounder(function (result2, word, index2) {
return result2 + (index2 ? ' ' : '') + word.toLowerCase()
})
var lowerFirst = createCaseFirst('toLowerCase')
function pad3(string3, length2, chars2) {
string3 = toString4(string3)
length2 = toInteger2(length2)
var strLength = length2 ? stringSize(string3) : 0
if (!length2 || strLength >= length2) {
return string3
}
var mid = (length2 - strLength) / 2
return (
createPadding(nativeFloor(mid), chars2) +
string3 +
createPadding(nativeCeil(mid), chars2)
)
}
function padEnd2(string3, length2, chars2) {
string3 = toString4(string3)
length2 = toInteger2(length2)
var strLength = length2 ? stringSize(string3) : 0
return length2 && strLength < length2
? string3 + createPadding(length2 - strLength, chars2)
: string3
}
function padStart2(string3, length2, chars2) {
string3 = toString4(string3)
length2 = toInteger2(length2)
var strLength = length2 ? stringSize(string3) : 0
return length2 && strLength < length2
? createPadding(length2 - strLength, chars2) + string3
: string3
}
function parseInt2(string3, radix, guard) {
if (guard || radix == null) {
radix = 0
} else if (radix) {
radix = +radix
}
return nativeParseInt(
toString4(string3).replace(reTrimStart2, ''),
radix || 0
)
}
function repeat2(string3, n2, guard) {
if (guard ? isIterateeCall(string3, n2, guard) : n2 === undefined$1) {
n2 = 1
} else {
n2 = toInteger2(n2)
}
return baseRepeat(toString4(string3), n2)
}
function replace2() {
var args = arguments,
string3 = toString4(args[0])
return args.length < 3 ? string3 : string3.replace(args[1], args[2])
}
var snakeCase = createCompounder(function (result2, word, index2) {
return result2 + (index2 ? '_' : '') + word.toLowerCase()
})
function split2(string3, separator, limit2) {
if (
limit2 &&
typeof limit2 != 'number' &&
isIterateeCall(string3, separator, limit2)
) {
separator = limit2 = undefined$1
}
limit2 = limit2 === undefined$1 ? MAX_ARRAY_LENGTH : limit2 >>> 0
if (!limit2) {
return []
}
string3 = toString4(string3)
if (
string3 &&
(typeof separator == 'string' ||
(separator != null && !isRegExp2(separator)))
) {
separator = baseToString2(separator)
if (!separator && hasUnicode(string3)) {
return castSlice(stringToArray(string3), 0, limit2)
}
}
return string3.split(separator, limit2)
}
var startCase = createCompounder(function (result2, word, index2) {
return result2 + (index2 ? ' ' : '') + upperFirst(word)
})
function startsWith3(string3, target2, position2) {
string3 = toString4(string3)
position2 =
position2 == null
? 0
: baseClamp(toInteger2(position2), 0, string3.length)
target2 = baseToString2(target2)
return string3.slice(position2, position2 + target2.length) == target2
}
function template2(string3, options2, guard) {
var settings = lodash2.templateSettings
if (guard && isIterateeCall(string3, options2, guard)) {
options2 = undefined$1
}
string3 = toString4(string3)
options2 = assignInWith({}, options2, settings, customDefaultsAssignIn)
var imports = assignInWith(
{},
options2.imports,
settings.imports,
customDefaultsAssignIn
),
importsKeys = keys3(imports),
importsValues = baseValues(imports, importsKeys)
var isEscaping,
isEvaluating,
index2 = 0,
interpolate = options2.interpolate || reNoMatch,
source2 = "__p += '"
var reDelimiters = RegExp2(
(options2.escape || reNoMatch).source +
'|' +
interpolate.source +
'|' +
(interpolate === reInterpolate ? reEsTemplate : reNoMatch).source +
'|' +
(options2.evaluate || reNoMatch).source +
'|$',
'g'
)
var sourceURL =
'//# sourceURL=' +
(hasOwnProperty2.call(options2, 'sourceURL')
? (options2.sourceURL + '').replace(/\s/g, ' ')
: 'lodash.templateSources[' + ++templateCounter + ']') +
'\n'
string3.replace(
reDelimiters,
function (
match2,
escapeValue,
interpolateValue,
esTemplateValue,
evaluateValue,
offset2
) {
interpolateValue || (interpolateValue = esTemplateValue)
source2 += string3
.slice(index2, offset2)
.replace(reUnescapedString, escapeStringChar)
if (escapeValue) {
isEscaping = true
source2 += "' +\n__e(" + escapeValue + ") +\n'"
}
if (evaluateValue) {
isEvaluating = true
source2 += "';\n" + evaluateValue + ";\n__p += '"
}
if (interpolateValue) {
source2 +=
"' +\n((__t = (" +
interpolateValue +
")) == null ? '' : __t) +\n'"
}
index2 = offset2 + match2.length
return match2
}
)
source2 += "';\n"
var variable =
hasOwnProperty2.call(options2, 'variable') && options2.variable
if (!variable) {
source2 = 'with (obj) {\n' + source2 + '\n}\n'
} else if (reForbiddenIdentifierChars.test(variable)) {
throw new Error2(INVALID_TEMPL_VAR_ERROR_TEXT)
}
source2 = (
isEvaluating ? source2.replace(reEmptyStringLeading, '') : source2
)
.replace(reEmptyStringMiddle, '$1')
.replace(reEmptyStringTrailing, '$1;')
source2 =
'function(' +
(variable || 'obj') +
') {\n' +
(variable ? '' : 'obj || (obj = {});\n') +
"var __t, __p = ''" +
(isEscaping ? ', __e = _.escape' : '') +
(isEvaluating
? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n"
: ';\n') +
source2 +
'return __p\n}'
var result2 = attempt(function () {
return Function2(importsKeys, sourceURL + 'return ' + source2).apply(
undefined$1,
importsValues
)
})
result2.source = source2
if (isError2(result2)) {
throw result2
}
return result2
}
function toLower(value2) {
return toString4(value2).toLowerCase()
}
function toUpper(value2) {
return toString4(value2).toUpperCase()
}
function trim3(string3, chars2, guard) {
string3 = toString4(string3)
if (string3 && (guard || chars2 === undefined$1)) {
return baseTrim2(string3)
}
if (!string3 || !(chars2 = baseToString2(chars2))) {
return string3
}
var strSymbols = stringToArray(string3),
chrSymbols = stringToArray(chars2),
start2 = charsStartIndex(strSymbols, chrSymbols),
end2 = charsEndIndex(strSymbols, chrSymbols) + 1
return castSlice(strSymbols, start2, end2).join('')
}
function trimEnd(string3, chars2, guard) {
string3 = toString4(string3)
if (string3 && (guard || chars2 === undefined$1)) {
return string3.slice(0, trimmedEndIndex2(string3) + 1)
}
if (!string3 || !(chars2 = baseToString2(chars2))) {
return string3
}
var strSymbols = stringToArray(string3),
end2 = charsEndIndex(strSymbols, stringToArray(chars2)) + 1
return castSlice(strSymbols, 0, end2).join('')
}
function trimStart(string3, chars2, guard) {
string3 = toString4(string3)
if (string3 && (guard || chars2 === undefined$1)) {
return string3.replace(reTrimStart2, '')
}
if (!string3 || !(chars2 = baseToString2(chars2))) {
return string3
}
var strSymbols = stringToArray(string3),
start2 = charsStartIndex(strSymbols, stringToArray(chars2))
return castSlice(strSymbols, start2).join('')
}
function truncate(string3, options2) {
var length2 = DEFAULT_TRUNC_LENGTH,
omission = DEFAULT_TRUNC_OMISSION
if (isObject2(options2)) {
var separator =
'separator' in options2 ? options2.separator : separator
length2 = 'length' in options2 ? toInteger2(options2.length) : length2
omission =
'omission' in options2 ? baseToString2(options2.omission) : omission
}
string3 = toString4(string3)
var strLength = string3.length
if (hasUnicode(string3)) {
var strSymbols = stringToArray(string3)
strLength = strSymbols.length
}
if (length2 >= strLength) {
return string3
}
var end2 = length2 - stringSize(omission)
if (end2 < 1) {
return omission
}
var result2 = strSymbols
? castSlice(strSymbols, 0, end2).join('')
: string3.slice(0, end2)
if (separator === undefined$1) {
return result2 + omission
}
if (strSymbols) {
end2 += result2.length - end2
}
if (isRegExp2(separator)) {
if (string3.slice(end2).search(separator)) {
var match2,
substring = result2
if (!separator.global) {
separator = RegExp2(
separator.source,
toString4(reFlags2.exec(separator)) + 'g'
)
}
separator.lastIndex = 0
while ((match2 = separator.exec(substring))) {
var newEnd = match2.index
}
result2 = result2.slice(0, newEnd === undefined$1 ? end2 : newEnd)
}
} else if (string3.indexOf(baseToString2(separator), end2) != end2) {
var index2 = result2.lastIndexOf(separator)
if (index2 > -1) {
result2 = result2.slice(0, index2)
}
}
return result2 + omission
}
function unescape2(string3) {
string3 = toString4(string3)
return string3 && reHasEscapedHtml.test(string3)
? string3.replace(reEscapedHtml, unescapeHtmlChar)
: string3
}
var upperCase = createCompounder(function (result2, word, index2) {
return result2 + (index2 ? ' ' : '') + word.toUpperCase()
})
var upperFirst = createCaseFirst('toUpperCase')
function words(string3, pattern4, guard) {
string3 = toString4(string3)
pattern4 = guard ? undefined$1 : pattern4
if (pattern4 === undefined$1) {
return hasUnicodeWord(string3)
? unicodeWords(string3)
: asciiWords(string3)
}
return string3.match(pattern4) || []
}
var attempt = baseRest2(function (func, args) {
try {
return apply2(func, undefined$1, args)
} catch (e2) {
return isError2(e2) ? e2 : new Error2(e2)
}
})
var bindAll = flatRest2(function (object4, methodNames) {
arrayEach2(methodNames, function (key2) {
key2 = toKey2(key2)
baseAssignValue2(object4, key2, bind3(object4[key2], object4))
})
return object4
})
function cond(pairs) {
var length2 = pairs == null ? 0 : pairs.length,
toIteratee = getIteratee()
pairs = !length2
? []
: arrayMap2(pairs, function (pair) {
if (typeof pair[1] != 'function') {
throw new TypeError2(FUNC_ERROR_TEXT2)
}
return [toIteratee(pair[0]), pair[1]]
})
return baseRest2(function (args) {
var index2 = -1
while (++index2 < length2) {
var pair = pairs[index2]
if (apply2(pair[0], this, args)) {
return apply2(pair[1], this, args)
}
}
})
}
function conforms(source2) {
return baseConforms(baseClone2(source2, CLONE_DEEP_FLAG2))
}
function constant2(value2) {
return function () {
return value2
}
}
function defaultTo(value2, defaultValue) {
return value2 == null || value2 !== value2 ? defaultValue : value2
}
var flow = createFlow()
var flowRight = createFlow(true)
function identity2(value2) {
return value2
}
function iteratee(func) {
return baseIteratee(
typeof func == 'function' ? func : baseClone2(func, CLONE_DEEP_FLAG2)
)
}
function matches2(source2) {
return baseMatches(baseClone2(source2, CLONE_DEEP_FLAG2))
}
function matchesProperty(path, srcValue) {
return baseMatchesProperty(path, baseClone2(srcValue, CLONE_DEEP_FLAG2))
}
var method4 = baseRest2(function (path, args) {
return function (object4) {
return baseInvoke(object4, path, args)
}
})
var methodOf = baseRest2(function (object4, args) {
return function (path) {
return baseInvoke(object4, path, args)
}
})
function mixin2(object4, source2, options2) {
var props2 = keys3(source2),
methodNames = baseFunctions(source2, props2)
if (
options2 == null &&
!(isObject2(source2) && (methodNames.length || !props2.length))
) {
options2 = source2
source2 = object4
object4 = this
methodNames = baseFunctions(source2, keys3(source2))
}
var chain2 =
!(isObject2(options2) && 'chain' in options2) || !!options2.chain,
isFunc = isFunction2(object4)
arrayEach2(methodNames, function (methodName) {
var func = source2[methodName]
object4[methodName] = func
if (isFunc) {
object4.prototype[methodName] = function () {
var chainAll = this.__chain__
if (chain2 || chainAll) {
var result2 = object4(this.__wrapped__),
actions2 = (result2.__actions__ = copyArray2(
this.__actions__
))
actions2.push({ func: func, args: arguments, thisArg: object4 })
result2.__chain__ = chainAll
return result2
}
return func.apply(object4, arrayPush2([this.value()], arguments))
}
}
})
return object4
}
function noConflict() {
if (root2._ === this) {
root2._ = oldDash
}
return this
}
function noop2() {}
function nthArg(n2) {
n2 = toInteger2(n2)
return baseRest2(function (args) {
return baseNth(args, n2)
})
}
var over = createOver(arrayMap2)
var overEvery = createOver(arrayEvery)
var overSome = createOver(arraySome2)
function property2(path) {
return isKey2(path)
? baseProperty(toKey2(path))
: basePropertyDeep(path)
}
function propertyOf(object4) {
return function (path) {
return object4 == null ? undefined$1 : baseGet2(object4, path)
}
}
var range3 = createRange2()
var rangeRight = createRange2(true)
function stubArray2() {
return []
}
function stubFalse2() {
return false
}
function stubObject() {
return {}
}
function stubString() {
return ''
}
function stubTrue() {
return true
}
function times(n2, iteratee2) {
n2 = toInteger2(n2)
if (n2 < 1 || n2 > MAX_SAFE_INTEGER2) {
return []
}
var index2 = MAX_ARRAY_LENGTH,
length2 = nativeMin2(n2, MAX_ARRAY_LENGTH)
iteratee2 = getIteratee(iteratee2)
n2 -= MAX_ARRAY_LENGTH
var result2 = baseTimes2(length2, iteratee2)
while (++index2 < n2) {
iteratee2(index2)
}
return result2
}
function toPath(value2) {
if (isArray3(value2)) {
return arrayMap2(value2, toKey2)
}
return isSymbol2(value2)
? [value2]
: copyArray2(stringToPath2(toString4(value2)))
}
function uniqueId2(prefix) {
var id2 = ++idCounter
return toString4(prefix) + id2
}
var add2 = createMathOperation(function (augend, addend) {
return augend + addend
}, 0)
var ceil2 = createRound('ceil')
var divide2 = createMathOperation(function (dividend, divisor) {
return dividend / divisor
}, 1)
var floor2 = createRound('floor')
function max3(array4) {
return array4 && array4.length
? baseExtremum(array4, identity2, baseGt)
: undefined$1
}
function maxBy(array4, iteratee2) {
return array4 && array4.length
? baseExtremum(array4, getIteratee(iteratee2, 2), baseGt)
: undefined$1
}
function mean2(array4) {
return baseMean(array4, identity2)
}
function meanBy(array4, iteratee2) {
return baseMean(array4, getIteratee(iteratee2, 2))
}
function min3(array4) {
return array4 && array4.length
? baseExtremum(array4, identity2, baseLt)
: undefined$1
}
function minBy(array4, iteratee2) {
return array4 && array4.length
? baseExtremum(array4, getIteratee(iteratee2, 2), baseLt)
: undefined$1
}
var multiply2 = createMathOperation(function (multiplier, multiplicand) {
return multiplier * multiplicand
}, 1)
var round2 = createRound('round')
var subtract2 = createMathOperation(function (minuend, subtrahend) {
return minuend - subtrahend
}, 0)
function sum2(array4) {
return array4 && array4.length ? baseSum(array4, identity2) : 0
}
function sumBy(array4, iteratee2) {
return array4 && array4.length
? baseSum(array4, getIteratee(iteratee2, 2))
: 0
}
lodash2.after = after2
lodash2.ary = ary
lodash2.assign = assign2
lodash2.assignIn = assignIn
lodash2.assignInWith = assignInWith
lodash2.assignWith = assignWith
lodash2.at = at2
lodash2.before = before2
lodash2.bind = bind3
lodash2.bindAll = bindAll
lodash2.bindKey = bindKey
lodash2.castArray = castArray2
lodash2.chain = chain
lodash2.chunk = chunk2
lodash2.compact = compact
lodash2.concat = concat2
lodash2.cond = cond
lodash2.conforms = conforms
lodash2.constant = constant2
lodash2.countBy = countBy2
lodash2.create = create3
lodash2.curry = curry2
lodash2.curryRight = curryRight
lodash2.debounce = debounce2
lodash2.defaults = defaults2
lodash2.defaultsDeep = defaultsDeep
lodash2.defer = defer2
lodash2.delay = delay2
lodash2.difference = difference
lodash2.differenceBy = differenceBy
lodash2.differenceWith = differenceWith
lodash2.drop = drop3
lodash2.dropRight = dropRight
lodash2.dropRightWhile = dropRightWhile
lodash2.dropWhile = dropWhile
lodash2.fill = fill
lodash2.filter = filter2
lodash2.flatMap = flatMap
lodash2.flatMapDeep = flatMapDeep
lodash2.flatMapDepth = flatMapDepth
lodash2.flatten = flatten2
lodash2.flattenDeep = flattenDeep2
lodash2.flattenDepth = flattenDepth
lodash2.flip = flip2
lodash2.flow = flow
lodash2.flowRight = flowRight
lodash2.fromPairs = fromPairs2
lodash2.functions = functions
lodash2.functionsIn = functionsIn
lodash2.groupBy = groupBy2
lodash2.initial = initial
lodash2.intersection = intersection
lodash2.intersectionBy = intersectionBy
lodash2.intersectionWith = intersectionWith
lodash2.invert = invert2
lodash2.invertBy = invertBy
lodash2.invokeMap = invokeMap
lodash2.iteratee = iteratee
lodash2.keyBy = keyBy
lodash2.keys = keys3
lodash2.keysIn = keysIn2
lodash2.map = map2
lodash2.mapKeys = mapKeys
lodash2.mapValues = mapValues
lodash2.matches = matches2
lodash2.matchesProperty = matchesProperty
lodash2.memoize = memoize2
lodash2.merge = merge2
lodash2.mergeWith = mergeWith
lodash2.method = method4
lodash2.methodOf = methodOf
lodash2.mixin = mixin2
lodash2.negate = negate2
lodash2.nthArg = nthArg
lodash2.omit = omit2
lodash2.omitBy = omitBy
lodash2.once = once2
lodash2.orderBy = orderBy2
lodash2.over = over
lodash2.overArgs = overArgs
lodash2.overEvery = overEvery
lodash2.overSome = overSome
lodash2.partial = partial2
lodash2.partialRight = partialRight
lodash2.partition = partition
lodash2.pick = pick2
lodash2.pickBy = pickBy
lodash2.property = property2
lodash2.propertyOf = propertyOf
lodash2.pull = pull
lodash2.pullAll = pullAll
lodash2.pullAllBy = pullAllBy
lodash2.pullAllWith = pullAllWith
lodash2.pullAt = pullAt
lodash2.range = range3
lodash2.rangeRight = rangeRight
lodash2.rearg = rearg
lodash2.reject = reject2
lodash2.remove = remove2
lodash2.rest = rest
lodash2.reverse = reverse3
lodash2.sampleSize = sampleSize
lodash2.set = set2
lodash2.setWith = setWith
lodash2.shuffle = shuffle2
lodash2.slice = slice2
lodash2.sortBy = sortBy2
lodash2.sortedUniq = sortedUniq
lodash2.sortedUniqBy = sortedUniqBy
lodash2.split = split2
lodash2.spread = spread3
lodash2.tail = tail
lodash2.take = take2
lodash2.takeRight = takeRight
lodash2.takeRightWhile = takeRightWhile
lodash2.takeWhile = takeWhile
lodash2.tap = tap
lodash2.throttle = throttle2
lodash2.thru = thru
lodash2.toArray = toArray3
lodash2.toPairs = toPairs
lodash2.toPairsIn = toPairsIn
lodash2.toPath = toPath
lodash2.toPlainObject = toPlainObject
lodash2.transform = transform3
lodash2.unary = unary
lodash2.union = union2
lodash2.unionBy = unionBy
lodash2.unionWith = unionWith
lodash2.uniq = uniq2
lodash2.uniqBy = uniqBy
lodash2.uniqWith = uniqWith
lodash2.unset = unset
lodash2.unzip = unzip2
lodash2.unzipWith = unzipWith
lodash2.update = update3
lodash2.updateWith = updateWith
lodash2.values = values2
lodash2.valuesIn = valuesIn
lodash2.without = without
lodash2.words = words
lodash2.wrap = wrap
lodash2.xor = xor
lodash2.xorBy = xorBy
lodash2.xorWith = xorWith
lodash2.zip = zip2
lodash2.zipObject = zipObject2
lodash2.zipObjectDeep = zipObjectDeep
lodash2.zipWith = zipWith
lodash2.entries = toPairs
lodash2.entriesIn = toPairsIn
lodash2.extend = assignIn
lodash2.extendWith = assignInWith
mixin2(lodash2, lodash2)
lodash2.add = add2
lodash2.attempt = attempt
lodash2.camelCase = camelCase2
lodash2.capitalize = capitalize2
lodash2.ceil = ceil2
lodash2.clamp = clamp2
lodash2.clone = clone2
lodash2.cloneDeep = cloneDeep2
lodash2.cloneDeepWith = cloneDeepWith
lodash2.cloneWith = cloneWith
lodash2.conformsTo = conformsTo
lodash2.deburr = deburr
lodash2.defaultTo = defaultTo
lodash2.divide = divide2
lodash2.endsWith = endsWith3
lodash2.eq = eq2
lodash2.escape = escape2
lodash2.escapeRegExp = escapeRegExp
lodash2.every = every2
lodash2.find = find2
lodash2.findIndex = findIndex
lodash2.findKey = findKey2
lodash2.findLast = findLast2
lodash2.findLastIndex = findLastIndex
lodash2.findLastKey = findLastKey
lodash2.floor = floor2
lodash2.forEach = forEach3
lodash2.forEachRight = forEachRight
lodash2.forIn = forIn
lodash2.forInRight = forInRight
lodash2.forOwn = forOwn
lodash2.forOwnRight = forOwnRight
lodash2.get = get3
lodash2.gt = gt2
lodash2.gte = gte
lodash2.has = has2
lodash2.hasIn = hasIn2
lodash2.head = head
lodash2.identity = identity2
lodash2.includes = includes3
lodash2.indexOf = indexOf3
lodash2.inRange = inRange
lodash2.invoke = invoke2
lodash2.isArguments = isArguments2
lodash2.isArray = isArray3
lodash2.isArrayBuffer = isArrayBuffer2
lodash2.isArrayLike = isArrayLike2
lodash2.isArrayLikeObject = isArrayLikeObject2
lodash2.isBoolean = isBoolean2
lodash2.isBuffer = isBuffer2
lodash2.isDate = isDate2
lodash2.isElement = isElement2
lodash2.isEmpty = isEmpty2
lodash2.isEqual = isEqual2
lodash2.isEqualWith = isEqualWith2
lodash2.isError = isError2
lodash2.isFinite = isFinite2
lodash2.isFunction = isFunction2
lodash2.isInteger = isInteger2
lodash2.isLength = isLength2
lodash2.isMap = isMap2
lodash2.isMatch = isMatch2
lodash2.isMatchWith = isMatchWith
lodash2.isNaN = isNaN2
lodash2.isNative = isNative
lodash2.isNil = isNil2
lodash2.isNull = isNull2
lodash2.isNumber = isNumber2
lodash2.isObject = isObject2
lodash2.isObjectLike = isObjectLike2
lodash2.isPlainObject = isPlainObject2
lodash2.isRegExp = isRegExp2
lodash2.isSafeInteger = isSafeInteger
lodash2.isSet = isSet2
lodash2.isString = isString2
lodash2.isSymbol = isSymbol2
lodash2.isTypedArray = isTypedArray2
lodash2.isUndefined = isUndefined2
lodash2.isWeakMap = isWeakMap2
lodash2.isWeakSet = isWeakSet2
lodash2.join = join2
lodash2.kebabCase = kebabCase2
lodash2.last = last2
lodash2.lastIndexOf = lastIndexOf2
lodash2.lowerCase = lowerCase
lodash2.lowerFirst = lowerFirst
lodash2.lt = lt2
lodash2.lte = lte
lodash2.max = max3
lodash2.maxBy = maxBy
lodash2.mean = mean2
lodash2.meanBy = meanBy
lodash2.min = min3
lodash2.minBy = minBy
lodash2.stubArray = stubArray2
lodash2.stubFalse = stubFalse2
lodash2.stubObject = stubObject
lodash2.stubString = stubString
lodash2.stubTrue = stubTrue
lodash2.multiply = multiply2
lodash2.nth = nth
lodash2.noConflict = noConflict
lodash2.noop = noop2
lodash2.now = now2
lodash2.pad = pad3
lodash2.padEnd = padEnd2
lodash2.padStart = padStart2
lodash2.parseInt = parseInt2
lodash2.random = random2
lodash2.reduce = reduce3
lodash2.reduceRight = reduceRight
lodash2.repeat = repeat2
lodash2.replace = replace2
lodash2.result = result
lodash2.round = round2
lodash2.runInContext = runInContext2
lodash2.sample = sample2
lodash2.size = size
lodash2.snakeCase = snakeCase
lodash2.some = some2
lodash2.sortedIndex = sortedIndex
lodash2.sortedIndexBy = sortedIndexBy
lodash2.sortedIndexOf = sortedIndexOf
lodash2.sortedLastIndex = sortedLastIndex
lodash2.sortedLastIndexBy = sortedLastIndexBy
lodash2.sortedLastIndexOf = sortedLastIndexOf
lodash2.startCase = startCase
lodash2.startsWith = startsWith3
lodash2.subtract = subtract2
lodash2.sum = sum2
lodash2.sumBy = sumBy
lodash2.template = template2
lodash2.times = times
lodash2.toFinite = toFinite
lodash2.toInteger = toInteger2
lodash2.toLength = toLength2
lodash2.toLower = toLower
lodash2.toNumber = toNumber2
lodash2.toSafeInteger = toSafeInteger
lodash2.toString = toString4
lodash2.toUpper = toUpper
lodash2.trim = trim3
lodash2.trimEnd = trimEnd
lodash2.trimStart = trimStart
lodash2.truncate = truncate
lodash2.unescape = unescape2
lodash2.uniqueId = uniqueId2
lodash2.upperCase = upperCase
lodash2.upperFirst = upperFirst
lodash2.each = forEach3
lodash2.eachRight = forEachRight
lodash2.first = head
mixin2(
lodash2,
(function () {
var source2 = {}
baseForOwn(lodash2, function (func, methodName) {
if (!hasOwnProperty2.call(lodash2.prototype, methodName)) {
source2[methodName] = func
}
})
return source2
})(),
{ chain: false }
)
lodash2.VERSION = VERSION2
arrayEach2(
['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'],
function (methodName) {
lodash2[methodName].placeholder = lodash2
}
)
arrayEach2(['drop', 'take'], function (methodName, index2) {
LazyWrapper.prototype[methodName] = function (n2) {
n2 = n2 === undefined$1 ? 1 : nativeMax2(toInteger2(n2), 0)
var result2 =
this.__filtered__ && !index2 ? new LazyWrapper(this) : this.clone()
if (result2.__filtered__) {
result2.__takeCount__ = nativeMin2(n2, result2.__takeCount__)
} else {
result2.__views__.push({
size: nativeMin2(n2, MAX_ARRAY_LENGTH),
type: methodName + (result2.__dir__ < 0 ? 'Right' : ''),
})
}
return result2
}
LazyWrapper.prototype[methodName + 'Right'] = function (n2) {
return this.reverse()[methodName](n2).reverse()
}
})
arrayEach2(['filter', 'map', 'takeWhile'], function (methodName, index2) {
var type4 = index2 + 1,
isFilter = type4 == LAZY_FILTER_FLAG || type4 == LAZY_WHILE_FLAG
LazyWrapper.prototype[methodName] = function (iteratee2) {
var result2 = this.clone()
result2.__iteratees__.push({
iteratee: getIteratee(iteratee2, 3),
type: type4,
})
result2.__filtered__ = result2.__filtered__ || isFilter
return result2
}
})
arrayEach2(['head', 'last'], function (methodName, index2) {
var takeName = 'take' + (index2 ? 'Right' : '')
LazyWrapper.prototype[methodName] = function () {
return this[takeName](1).value()[0]
}
})
arrayEach2(['initial', 'tail'], function (methodName, index2) {
var dropName = 'drop' + (index2 ? '' : 'Right')
LazyWrapper.prototype[methodName] = function () {
return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1)
}
})
LazyWrapper.prototype.compact = function () {
return this.filter(identity2)
}
LazyWrapper.prototype.find = function (predicate) {
return this.filter(predicate).head()
}
LazyWrapper.prototype.findLast = function (predicate) {
return this.reverse().find(predicate)
}
LazyWrapper.prototype.invokeMap = baseRest2(function (path, args) {
if (typeof path == 'function') {
return new LazyWrapper(this)
}
return this.map(function (value2) {
return baseInvoke(value2, path, args)
})
})
LazyWrapper.prototype.reject = function (predicate) {
return this.filter(negate2(getIteratee(predicate)))
}
LazyWrapper.prototype.slice = function (start2, end2) {
start2 = toInteger2(start2)
var result2 = this
if (result2.__filtered__ && (start2 > 0 || end2 < 0)) {
return new LazyWrapper(result2)
}
if (start2 < 0) {
result2 = result2.takeRight(-start2)
} else if (start2) {
result2 = result2.drop(start2)
}
if (end2 !== undefined$1) {
end2 = toInteger2(end2)
result2 =
end2 < 0 ? result2.dropRight(-end2) : result2.take(end2 - start2)
}
return result2
}
LazyWrapper.prototype.takeRightWhile = function (predicate) {
return this.reverse().takeWhile(predicate).reverse()
}
LazyWrapper.prototype.toArray = function () {
return this.take(MAX_ARRAY_LENGTH)
}
baseForOwn(LazyWrapper.prototype, function (func, methodName) {
var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(
methodName
),
isTaker = /^(?:head|last)$/.test(methodName),
lodashFunc =
lodash2[
isTaker
? 'take' + (methodName == 'last' ? 'Right' : '')
: methodName
],
retUnwrapped = isTaker || /^find/.test(methodName)
if (!lodashFunc) {
return
}
lodash2.prototype[methodName] = function () {
var value2 = this.__wrapped__,
args = isTaker ? [1] : arguments,
isLazy = value2 instanceof LazyWrapper,
iteratee2 = args[0],
useLazy = isLazy || isArray3(value2)
var interceptor2 = function (value3) {
var result3 = lodashFunc.apply(lodash2, arrayPush2([value3], args))
return isTaker && chainAll ? result3[0] : result3
}
if (
useLazy &&
checkIteratee &&
typeof iteratee2 == 'function' &&
iteratee2.length != 1
) {
isLazy = useLazy = false
}
var chainAll = this.__chain__,
isHybrid = !!this.__actions__.length,
isUnwrapped = retUnwrapped && !chainAll,
onlyLazy = isLazy && !isHybrid
if (!retUnwrapped && useLazy) {
value2 = onlyLazy ? value2 : new LazyWrapper(this)
var result2 = func.apply(value2, args)
result2.__actions__.push({
func: thru,
args: [interceptor2],
thisArg: undefined$1,
})
return new LodashWrapper(result2, chainAll)
}
if (isUnwrapped && onlyLazy) {
return func.apply(this, args)
}
result2 = this.thru(interceptor2)
return isUnwrapped
? isTaker
? result2.value()[0]
: result2.value()
: result2
}
})
arrayEach2(
['pop', 'push', 'shift', 'sort', 'splice', 'unshift'],
function (methodName) {
var func = arrayProto2[methodName],
chainName = /^(?:push|sort|unshift)$/.test(methodName)
? 'tap'
: 'thru',
retUnwrapped = /^(?:pop|shift)$/.test(methodName)
lodash2.prototype[methodName] = function () {
var args = arguments
if (retUnwrapped && !this.__chain__) {
var value2 = this.value()
return func.apply(isArray3(value2) ? value2 : [], args)
}
return this[chainName](function (value3) {
return func.apply(isArray3(value3) ? value3 : [], args)
})
}
}
)
baseForOwn(LazyWrapper.prototype, function (func, methodName) {
var lodashFunc = lodash2[methodName]
if (lodashFunc) {
var key2 = lodashFunc.name + ''
if (!hasOwnProperty2.call(realNames, key2)) {
realNames[key2] = []
}
realNames[key2].push({ name: methodName, func: lodashFunc })
}
})
realNames[createHybrid(undefined$1, WRAP_BIND_KEY_FLAG).name] = [
{
name: 'wrapper',
func: undefined$1,
},
]
LazyWrapper.prototype.clone = lazyClone
LazyWrapper.prototype.reverse = lazyReverse
LazyWrapper.prototype.value = lazyValue
lodash2.prototype.at = wrapperAt
lodash2.prototype.chain = wrapperChain
lodash2.prototype.commit = wrapperCommit
lodash2.prototype.next = wrapperNext
lodash2.prototype.plant = wrapperPlant
lodash2.prototype.reverse = wrapperReverse
lodash2.prototype.toJSON =
lodash2.prototype.valueOf =
lodash2.prototype.value =
wrapperValue
lodash2.prototype.first = lodash2.prototype.head
if (symIterator) {
lodash2.prototype[symIterator] = wrapperToIterator
}
return lodash2
}
var _2 = runInContext()
if (freeModule2) {
;(freeModule2.exports = _2)._ = _2
freeExports2._ = _2
} else {
root2._ = _2
}
}).call(commonjsGlobal)
})(lodash$2, lodash$2.exports)
var lodash = lodash$2.exports
var lodash$1 = /* @__PURE__ */ _mergeNamespaces(
{
__proto__: null,
default: lodash,
},
[lodash$2.exports]
)
const utils = {
setTheme: (theme2) => {},
colorRgb: (theme2) => {},
createRandomId: () => {
return `${new Date().toJSON()}|${Math.random().toString(32).slice(6)}`
},
copy: (_object, _obj = {}) => {
for (let key2 in _object) {
if (Object.prototype === Object.getPrototypeOf(_object[key2])) {
_obj[key2] = initUtils.copy(_object[key2])
} else {
_obj[key2] = _object[key2]
}
}
return _obj
},
getImgSrc: (name2) => {
const path = `../../images/${name2}.png`
const modules2 = {}
return modules2[path].default
},
getObjectCommonAttribute: (arr) => {
var obj = {}
arr.forEach((item2) => {
for (const i2 in item2) {
if (!obj[i2]) obj[i2] = item2[i2]
}
})
arr.forEach((item2) => {
for (const i2 in obj) {
if (!item2[i2]) delete obj[i2]
}
})
return obj
},
getsTheChangedField: (obj1, obj2) => {
let obj = {
key: '',
val: void 0,
}
const validateArrayField = (arr1, arr2) => {
if (arr1.length != arr2.length) {
return arr2
}
for (let i2 = 0, iLen = arr1.length; i2 < iLen; i2++) {
const element1 = arr1[i2]
const element2 = arr2[i2]
if (element1 != element2) {
return arr2
}
}
return ''
}
for (const key2 in obj1) {
const item1 = obj1[key2]
const item2 = obj2[key2]
if (Object.prototype.toString.call(item1) === '[object Object]');
else if (Object.prototype.toString.call(item1) === '[object Array]') {
const val2 = validateArrayField(item1, item2)
if (val2) {
obj = { key: key2, val: val2 }
break
}
} else {
if (item1 != item2) {
obj = {
key: key2,
val: item2,
}
break
}
}
}
return obj
},
objRecursion: (object1, object22, object32) => {
let _object1 = lodash.cloneDeep(object1)
let _object2 = lodash.cloneDeep(object22)
let _object3 = lodash.cloneDeep(object32)
function showData(key2, value1, value2, value3) {
var prototype = Object.prototype.toString.call(value1)
if (prototype !== '[object Object]' && prototype !== '[object Array]') {
if (value1 !== value2) {
value3 = value2
}
}
return value3
}
const handleData = (obj1, obj2, obj3) => {
for (const key2 in obj1) {
var value1 = obj1[key2]
var value2 = obj2[key2]
var value3 = obj3[key2]
switch (Object.prototype.toString.call(value1)) {
case '[object Object]':
handleData(value1, value2, value3)
break
case '[object Array]':
if (value1.length !== value2.length) {
break
}
for (let i2 = 0, iLen = value1.length; i2 < iLen; i2++) {
const item1 = value1[i2]
const item2 = value2[i2]
let item3 = value3[i2]
item3 = showData(i2, item1, item2, item3)
var prototype1 = Object.prototype.toString.call(item1)
if (
prototype1 === '[object Object]' ||
prototype1 === '[object Array]'
) {
handleData(item1, item2, item3)
}
}
break
default:
value3 = showData(key2, value1, value2, value3)
break
}
}
}
handleData(_object1, _object2, _object3)
},
objRecursion1: (object1, object22) => {
let _object1 = lodash.cloneDeep(object1)
let _object2 = lodash.cloneDeep(object22)
const handleData = (obj1, obj2) => {
const circulationObj = (_obj1, _obj2) => {
for (const key2 in _obj1) {
var value1 = _obj1[key2]
var value2 = _obj2[key2]
var prototype2 = Object.prototype.toString.call(value1)
switch (prototype2) {
case '[object Object]':
handleData(value1, value2)
break
case '[object Array]':
if (value1.length !== value2.length) {
break
}
for (let i2 = 0, iLen = value1.length; i2 < iLen; i2++) {
const item1 = value1[i2]
const item2 = value2[i2]
showData(i2, item1, item2)
var prototype1 = Object.prototype.toString.call(item1)
if (
prototype1 === '[object Object]' ||
prototype1 === '[object Array]'
) {
handleData(item1, item2)
}
}
break
default:
showData(key2, value1, value2)
break
}
}
}
function showData(key2, value1, value2) {
var prototype2 = Object.prototype.toString.call(value1)
if (
prototype2 !== '[object Object]' &&
prototype2 !== '[object Array]'
) {
if (value1 === value2) delete obj2[key2]
}
}
switch (Object.prototype.toString.call(obj1)) {
case '[object Object]':
circulationObj(obj1, obj2)
break
case '[object Array]':
for (let i2 = 0, iLen = obj1.length; i2 < iLen; i2++) {
const item1 = obj1[i2]
const item2 = obj2[i2]
showData(i2, item1, item2)
var prototype = Object.prototype.toString.call(item1)
if (
prototype === '[object Object]' ||
prototype === '[object Array]'
) {
circulationObj(item1, item2)
}
}
break
default:
showData('Array-element', obj1, obj2)
break
}
}
handleData(_object1, _object2)
},
prefixInteger: (num2, m2) => {
return (Array(m2).join('0') + num2).slice(-m2)
},
formateDate: (dateTime, slot = '/') => {
let date4 = new Date(dateTime)
let yy = date4.getFullYear()
let mm = initUtils.prefixInteger(date4.getMonth() + 1, 2)
let dd = initUtils.prefixInteger(date4.getDate(), 2)
let hh = initUtils.prefixInteger(date4.getHours(), 2)
let mf = initUtils.prefixInteger(date4.getMinutes(), 2)
let ss = initUtils.prefixInteger(date4.getSeconds(), 2)
return yy + slot + mm + slot + dd + ' ' + hh + ':' + mf + ':' + ss
},
debouncedFn: useDebounceFn(
(callback) => {
callback()
},
300,
{ maxWait: 5e3 }
),
downFile: (data2, name2, mediaType) => {
if (client.isClient()) {
let arr = name2.split('.')
let fileType = arr[arr.length - 1]
client.invoke(({ electron: electron2 }, fileType2) => {
const { BrowserWindow, downloadItem } = electron2
const win = BrowserWindow.getFocusedWindow()
win.webContents.session.on('will-download', (event, item2) => {
item2.setSaveDialogOptions({
filters: [{ name: `${fileType2} File`, extensions: [fileType2] }],
})
})
}, fileType)
}
const blob = new Blob([data2], { type: mediaType })
const downloadHref = URL.createObjectURL(blob)
const downloadLink = document.createElement('a')
downloadLink.href = downloadHref
downloadLink.download = name2
downloadLink.click()
URL.revokeObjectURL(downloadHref)
},
getDataFromPropertyPath: (data2, path) => {
if (Object.prototype.toString.call(data2) !== '[object Object]')
return void 0
if (Object.prototype.toString.call(path) !== '[object Array]') return void 0
if (!data2 || !path || !path.length) return void 0
var _data = JSON.parse(JSON.stringify(data2))
for (let i2 = 0, iLen = path.length; i2 < iLen; i2++) {
const item2 = path[i2]
if (!_data[item2]) return void 0
_data = _data[item2]
}
return _data
},
getNodeParents: (tree, nodeId, config2) => {
const { children = 'children', id: id2 = 'id' } = config2 || {}
const toFlatArray = (tree2, parentId) => {
return tree2.reduce((t3, _2) => {
const child = _2[children]
return [
...t3,
parentId ? { ..._2, parentId } : _2,
...(child && child.length ? toFlatArray(child, _2[id2]) : []),
]
}, [])
}
const getIds = (flatArray) => {
let ids = [nodeId]
let child = flatArray.find((_2) => _2[id2] === nodeId)
while (child && child.parentId) {
ids = [child.parentId, ...ids]
child = flatArray.find((_2) => _2[id2] === child.parentId)
}
return ids
}
return getIds(toFlatArray(tree, null))
},
getBase64: (imgUrl) => {
window.URL = window.URL || window.webkitURL
var xhr2 = new XMLHttpRequest()
xhr2.open('get', imgUrl, true)
xhr2.responseType = 'blob'
return new Promise((reslove, reject2) => {
xhr2.onload = function () {
if (this.status == 200) {
var blob = this.response
let oFileReader = new FileReader()
oFileReader.onloadend = function (e2) {
let base642 = e2.target?.result
reslove(base642)
}
oFileReader.readAsDataURL(blob)
} else {
reject2('')
}
}
xhr2.send()
})
},
isInputActive: (el2 = document.activeElement) => {
if (!el2) return false
const input = el2
if (input.readOnly || input.disabled) {
return false
}
if (
/^(input)$/i.test(input.tagName) &&
(/^(text|password|number)$/i.test(input.type) || !input.type)
) {
return true
}
if (/^(textarea)$/i.test(input.tagName)) {
return true
}
if (/^(true|plaintext-only)$/i.test(input.contentEditable)) {
return true
}
return false
},
}
const initUtils = utils
function go(page2, type4 = 'push') {
router$1[type4]({
params: {
pageId: page2.id,
},
})
}
function push$4(page2) {
go(page2, 'push')
}
function replace$4(page2) {
go(page2, 'replace')
}
function reload() {
window.location.reload()
}
function back() {
window.history.back()
}
const exportLoading = {
open: (text2 = '\u6587\u4EF6\u5BFC\u51FA\u4E2D', target2 = document.body) => {
exportLoading.close(target2)
let loading2 = document.createElement('div')
loading2.className = 'export-loading'
loading2.id = 'exportLoadingId'
let loadingView = document.createElement('div')
loadingView.className = 'loading'
loadingView.innerText = Language$1._t(text2)
let loadingtips = document.createElement('div')
loadingtips.className = 'tips'
loadingtips.innerText = Language$1._t('\u540E\u53F0\u52A0\u8F7D')
loadingtips.onclick = () => exportLoading.close(target2)
loadingView.appendChild(loadingtips)
loading2.appendChild(loadingView)
target2.appendChild(loading2)
},
close: (target2 = document.body) => {
let exportLoadingId = document.getElementById('exportLoadingId')
if (exportLoadingId) target2.removeChild(exportLoadingId)
},
}
function _typeof$3(o2) {
'@babel/helpers - typeof'
return (
(_typeof$3 =
'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator
? function (o3) {
return typeof o3
}
: function (o3) {
return o3 &&
'function' == typeof Symbol &&
o3.constructor === Symbol &&
o3 !== Symbol.prototype
? 'symbol'
: typeof o3
}),
_typeof$3(o2)
)
}
var u8 = Uint8Array,
u16 = Uint16Array,
u32 = Uint32Array
var fleb = new u8([
0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5,
5, 5, 0, 0, 0, 0,
])
var fdeb = new u8([
0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11,
11, 12, 12, 13, 13, 0, 0,
])
var clim = new u8([
16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15,
])
var freb = function (eb, start2) {
var b2 = new u16(31)
for (var i2 = 0; i2 < 31; ++i2) {
b2[i2] = start2 += 1 << eb[i2 - 1]
}
var r2 = new u32(b2[30])
for (var i2 = 1; i2 < 30; ++i2) {
for (var j2 = b2[i2]; j2 < b2[i2 + 1]; ++j2) {
r2[j2] = ((j2 - b2[i2]) << 5) | i2
}
}
return [b2, r2]
}
var _a$2 = freb(fleb, 2),
fl = _a$2[0],
revfl = _a$2[1]
;(fl[28] = 258), (revfl[258] = 28)
var _b$1 = freb(fdeb, 0),
fd = _b$1[0],
revfd = _b$1[1]
var rev = new u16(32768)
for (var i$6 = 0; i$6 < 32768; ++i$6) {
var x$1 = ((i$6 & 43690) >>> 1) | ((i$6 & 21845) << 1)
x$1 = ((x$1 & 52428) >>> 2) | ((x$1 & 13107) << 2)
x$1 = ((x$1 & 61680) >>> 4) | ((x$1 & 3855) << 4)
rev[i$6] = (((x$1 & 65280) >>> 8) | ((x$1 & 255) << 8)) >>> 1
}
var hMap = function (cd, mb, r2) {
var s2 = cd.length
var i2 = 0
var l2 = new u16(mb)
for (; i2 < s2; ++i2) ++l2[cd[i2] - 1]
var le2 = new u16(mb)
for (i2 = 0; i2 < mb; ++i2) {
le2[i2] = (le2[i2 - 1] + l2[i2 - 1]) << 1
}
var co
if (r2) {
co = new u16(1 << mb)
var rvb = 15 - mb
for (i2 = 0; i2 < s2; ++i2) {
if (cd[i2]) {
var sv2 = (i2 << 4) | cd[i2]
var r_1 = mb - cd[i2]
var v4 = le2[cd[i2] - 1]++ << r_1
for (var m2 = v4 | ((1 << r_1) - 1); v4 <= m2; ++v4) {
co[rev[v4] >>> rvb] = sv2
}
}
}
} else {
co = new u16(s2)
for (i2 = 0; i2 < s2; ++i2)
co[i2] = rev[le2[cd[i2] - 1]++] >>> (15 - cd[i2])
}
return co
}
var flt = new u8(288)
for (var i$6 = 0; i$6 < 144; ++i$6) flt[i$6] = 8
for (var i$6 = 144; i$6 < 256; ++i$6) flt[i$6] = 9
for (var i$6 = 256; i$6 < 280; ++i$6) flt[i$6] = 7
for (var i$6 = 280; i$6 < 288; ++i$6) flt[i$6] = 8
var fdt = new u8(32)
for (var i$6 = 0; i$6 < 32; ++i$6) fdt[i$6] = 5
var flm = /* @__PURE__ */ hMap(flt, 9, 0),
flrm = /* @__PURE__ */ hMap(flt, 9, 1)
var fdm = /* @__PURE__ */ hMap(fdt, 5, 0),
fdrm = /* @__PURE__ */ hMap(fdt, 5, 1)
var max$9 = function (a2) {
var m2 = a2[0]
for (var i2 = 1; i2 < a2.length; ++i2) {
if (a2[i2] > m2) m2 = a2[i2]
}
return m2
}
var bits = function (d3, p2, m2) {
var o2 = (p2 / 8) >> 0
return ((d3[o2] | (d3[o2 + 1] << 8)) >>> (p2 & 7)) & m2
}
var bits16 = function (d3, p2) {
var o2 = (p2 / 8) >> 0
return (d3[o2] | (d3[o2 + 1] << 8) | (d3[o2 + 2] << 16)) >>> (p2 & 7)
}
var shft = function (p2) {
return ((p2 / 8) >> 0) + (p2 & 7 && 1)
}
var slc = function (v4, s2, e2) {
if (s2 == null || s2 < 0) s2 = 0
if (e2 == null || e2 > v4.length) e2 = v4.length
var n2 = new (v4 instanceof u16 ? u16 : v4 instanceof u32 ? u32 : u8)(e2 - s2)
n2.set(v4.subarray(s2, e2))
return n2
}
var inflt = function (dat, buf, st2) {
var sl2 = dat.length
var noBuf = !buf || st2
var noSt = !st2 || st2.i
if (!st2) st2 = {}
if (!buf) buf = new u8(sl2 * 3)
var cbuf = function (l3) {
var bl = buf.length
if (l3 > bl) {
var nbuf = new u8(Math.max(bl * 2, l3))
nbuf.set(buf)
buf = nbuf
}
}
var final = st2.f || 0,
pos = st2.p || 0,
bt2 = st2.b || 0,
lm = st2.l,
dm = st2.d,
lbt = st2.m,
dbt = st2.n
var tbts = sl2 * 8
do {
if (!lm) {
st2.f = final = bits(dat, pos, 1)
var type4 = bits(dat, pos + 1, 3)
pos += 3
if (!type4) {
var s2 = shft(pos) + 4,
l2 = dat[s2 - 4] | (dat[s2 - 3] << 8),
t3 = s2 + l2
if (t3 > sl2) {
if (noSt) throw 'unexpected EOF'
break
}
if (noBuf) cbuf(bt2 + l2)
buf.set(dat.subarray(s2, t3), bt2)
;(st2.b = bt2 += l2), (st2.p = pos = t3 * 8)
continue
} else if (type4 == 1) (lm = flrm), (dm = fdrm), (lbt = 9), (dbt = 5)
else if (type4 == 2) {
var hLit = bits(dat, pos, 31) + 257,
hcLen = bits(dat, pos + 10, 15) + 4
var tl = hLit + bits(dat, pos + 5, 31) + 1
pos += 14
var ldt = new u8(tl)
var clt = new u8(19)
for (var i2 = 0; i2 < hcLen; ++i2) {
clt[clim[i2]] = bits(dat, pos + i2 * 3, 7)
}
pos += hcLen * 3
var clb = max$9(clt),
clbmsk = (1 << clb) - 1
if (!noSt && pos + tl * (clb + 7) > tbts) break
var clm = hMap(clt, clb, 1)
for (var i2 = 0; i2 < tl; ) {
var r2 = clm[bits(dat, pos, clbmsk)]
pos += r2 & 15
var s2 = r2 >>> 4
if (s2 < 16) {
ldt[i2++] = s2
} else {
var c2 = 0,
n2 = 0
if (s2 == 16)
(n2 = 3 + bits(dat, pos, 3)), (pos += 2), (c2 = ldt[i2 - 1])
else if (s2 == 17) (n2 = 3 + bits(dat, pos, 7)), (pos += 3)
else if (s2 == 18) (n2 = 11 + bits(dat, pos, 127)), (pos += 7)
while (n2--) ldt[i2++] = c2
}
}
var lt2 = ldt.subarray(0, hLit),
dt2 = ldt.subarray(hLit)
lbt = max$9(lt2)
dbt = max$9(dt2)
lm = hMap(lt2, lbt, 1)
dm = hMap(dt2, dbt, 1)
} else throw 'invalid block type'
if (pos > tbts) throw 'unexpected EOF'
}
if (noBuf) cbuf(bt2 + 131072)
var lms = (1 << lbt) - 1,
dms = (1 << dbt) - 1
var mxa = lbt + dbt + 18
while (noSt || pos + mxa < tbts) {
var c2 = lm[bits16(dat, pos) & lms],
sym = c2 >>> 4
pos += c2 & 15
if (pos > tbts) throw 'unexpected EOF'
if (!c2) throw 'invalid length/literal'
if (sym < 256) buf[bt2++] = sym
else if (sym == 256) {
lm = null
break
} else {
var add2 = sym - 254
if (sym > 264) {
var i2 = sym - 257,
b2 = fleb[i2]
add2 = bits(dat, pos, (1 << b2) - 1) + fl[i2]
pos += b2
}
var d3 = dm[bits16(dat, pos) & dms],
dsym = d3 >>> 4
if (!d3) throw 'invalid distance'
pos += d3 & 15
var dt2 = fd[dsym]
if (dsym > 3) {
var b2 = fdeb[dsym]
;(dt2 += bits16(dat, pos) & ((1 << b2) - 1)), (pos += b2)
}
if (pos > tbts) throw 'unexpected EOF'
if (noBuf) cbuf(bt2 + 131072)
var end2 = bt2 + add2
for (; bt2 < end2; bt2 += 4) {
buf[bt2] = buf[bt2 - dt2]
buf[bt2 + 1] = buf[bt2 + 1 - dt2]
buf[bt2 + 2] = buf[bt2 + 2 - dt2]
buf[bt2 + 3] = buf[bt2 + 3 - dt2]
}
bt2 = end2
}
}
;(st2.l = lm), (st2.p = pos), (st2.b = bt2)
if (lm) (final = 1), (st2.m = lbt), (st2.d = dm), (st2.n = dbt)
} while (!final)
return bt2 == buf.length ? buf : slc(buf, 0, bt2)
}
var wbits = function (d3, p2, v4) {
v4 <<= p2 & 7
var o2 = (p2 / 8) >> 0
d3[o2] |= v4
d3[o2 + 1] |= v4 >>> 8
}
var wbits16 = function (d3, p2, v4) {
v4 <<= p2 & 7
var o2 = (p2 / 8) >> 0
d3[o2] |= v4
d3[o2 + 1] |= v4 >>> 8
d3[o2 + 2] |= v4 >>> 16
}
var hTree = function (d3, mb) {
var t3 = []
for (var i2 = 0; i2 < d3.length; ++i2) {
if (d3[i2]) t3.push({ s: i2, f: d3[i2] })
}
var s2 = t3.length
var t22 = t3.slice()
if (!s2) return [new u8(0), 0]
if (s2 == 1) {
var v4 = new u8(t3[0].s + 1)
v4[t3[0].s] = 1
return [v4, 1]
}
t3.sort(function (a2, b2) {
return a2.f - b2.f
})
t3.push({ s: -1, f: 25001 })
var l2 = t3[0],
r2 = t3[1],
i0 = 0,
i1 = 1,
i22 = 2
t3[0] = { s: -1, f: l2.f + r2.f, l: l2, r: r2 }
while (i1 != s2 - 1) {
l2 = t3[t3[i0].f < t3[i22].f ? i0++ : i22++]
r2 = t3[i0 != i1 && t3[i0].f < t3[i22].f ? i0++ : i22++]
t3[i1++] = { s: -1, f: l2.f + r2.f, l: l2, r: r2 }
}
var maxSym = t22[0].s
for (var i2 = 1; i2 < s2; ++i2) {
if (t22[i2].s > maxSym) maxSym = t22[i2].s
}
var tr2 = new u16(maxSym + 1)
var mbt = ln(t3[i1 - 1], tr2, 0)
if (mbt > mb) {
var i2 = 0,
dt2 = 0
var lft = mbt - mb,
cst = 1 << lft
t22.sort(function (a2, b2) {
return tr2[b2.s] - tr2[a2.s] || a2.f - b2.f
})
for (; i2 < s2; ++i2) {
var i2_1 = t22[i2].s
if (tr2[i2_1] > mb) {
dt2 += cst - (1 << (mbt - tr2[i2_1]))
tr2[i2_1] = mb
} else break
}
dt2 >>>= lft
while (dt2 > 0) {
var i2_2 = t22[i2].s
if (tr2[i2_2] < mb) dt2 -= 1 << (mb - tr2[i2_2]++ - 1)
else ++i2
}
for (; i2 >= 0 && dt2; --i2) {
var i2_3 = t22[i2].s
if (tr2[i2_3] == mb) {
--tr2[i2_3]
++dt2
}
}
mbt = mb
}
return [new u8(tr2), mbt]
}
var ln = function (n2, l2, d3) {
return n2.s == -1
? Math.max(ln(n2.l, l2, d3 + 1), ln(n2.r, l2, d3 + 1))
: (l2[n2.s] = d3)
}
var lc = function (c2) {
var s2 = c2.length
while (s2 && !c2[--s2]);
var cl = new u16(++s2)
var cli = 0,
cln = c2[0],
cls = 1
var w2 = function (v4) {
cl[cli++] = v4
}
for (var i2 = 1; i2 <= s2; ++i2) {
if (c2[i2] == cln && i2 != s2) ++cls
else {
if (!cln && cls > 2) {
for (; cls > 138; cls -= 138) w2(32754)
if (cls > 2) {
w2(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305)
cls = 0
}
} else if (cls > 3) {
w2(cln), --cls
for (; cls > 6; cls -= 6) w2(8304)
if (cls > 2) w2(((cls - 3) << 5) | 8208), (cls = 0)
}
while (cls--) w2(cln)
cls = 1
cln = c2[i2]
}
}
return [cl.subarray(0, cli), s2]
}
var clen = function (cf, cl) {
var l2 = 0
for (var i2 = 0; i2 < cl.length; ++i2) l2 += cf[i2] * cl[i2]
return l2
}
var wfblk = function (out2, pos, dat) {
var s2 = dat.length
var o2 = shft(pos + 2)
out2[o2] = s2 & 255
out2[o2 + 1] = s2 >>> 8
out2[o2 + 2] = out2[o2] ^ 255
out2[o2 + 3] = out2[o2 + 1] ^ 255
for (var i2 = 0; i2 < s2; ++i2) out2[o2 + i2 + 4] = dat[i2]
return (o2 + 4 + s2) * 8
}
var wblk = function (dat, out2, final, syms, lf, df, eb, li, bs2, bl, p2) {
wbits(out2, p2++, final)
++lf[256]
var _a2 = hTree(lf, 15),
dlt = _a2[0],
mlb = _a2[1]
var _b2 = hTree(df, 15),
ddt = _b2[0],
mdb = _b2[1]
var _c2 = lc(dlt),
lclt = _c2[0],
nlc = _c2[1]
var _d = lc(ddt),
lcdt = _d[0],
ndc = _d[1]
var lcfreq = new u16(19)
for (var i2 = 0; i2 < lclt.length; ++i2) lcfreq[lclt[i2] & 31]++
for (var i2 = 0; i2 < lcdt.length; ++i2) lcfreq[lcdt[i2] & 31]++
var _e = hTree(lcfreq, 7),
lct = _e[0],
mlcb = _e[1]
var nlcc = 19
for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc);
var flen = (bl + 5) << 3
var ftlen = clen(lf, flt) + clen(df, fdt) + eb
var dtlen =
clen(lf, dlt) +
clen(df, ddt) +
eb +
14 +
3 * nlcc +
clen(lcfreq, lct) +
(2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18])
if (flen <= ftlen && flen <= dtlen)
return wfblk(out2, p2, dat.subarray(bs2, bs2 + bl))
var lm, ll, dm, dl
wbits(out2, p2, 1 + (dtlen < ftlen)), (p2 += 2)
if (dtlen < ftlen) {
;(lm = hMap(dlt, mlb, 0)), (ll = dlt), (dm = hMap(ddt, mdb, 0)), (dl = ddt)
var llm = hMap(lct, mlcb, 0)
wbits(out2, p2, nlc - 257)
wbits(out2, p2 + 5, ndc - 1)
wbits(out2, p2 + 10, nlcc - 4)
p2 += 14
for (var i2 = 0; i2 < nlcc; ++i2) wbits(out2, p2 + 3 * i2, lct[clim[i2]])
p2 += 3 * nlcc
var lcts = [lclt, lcdt]
for (var it2 = 0; it2 < 2; ++it2) {
var clct = lcts[it2]
for (var i2 = 0; i2 < clct.length; ++i2) {
var len2 = clct[i2] & 31
wbits(out2, p2, llm[len2]), (p2 += lct[len2])
if (len2 > 15)
wbits(out2, p2, (clct[i2] >>> 5) & 127), (p2 += clct[i2] >>> 12)
}
}
} else {
;(lm = flm), (ll = flt), (dm = fdm), (dl = fdt)
}
for (var i2 = 0; i2 < li; ++i2) {
if (syms[i2] > 255) {
var len2 = (syms[i2] >>> 18) & 31
wbits16(out2, p2, lm[len2 + 257]), (p2 += ll[len2 + 257])
if (len2 > 7) wbits(out2, p2, (syms[i2] >>> 23) & 31), (p2 += fleb[len2])
var dst = syms[i2] & 31
wbits16(out2, p2, dm[dst]), (p2 += dl[dst])
if (dst > 3) wbits16(out2, p2, (syms[i2] >>> 5) & 8191), (p2 += fdeb[dst])
} else {
wbits16(out2, p2, lm[syms[i2]]), (p2 += ll[syms[i2]])
}
}
wbits16(out2, p2, lm[256])
return p2 + ll[256]
}
var deo = /* @__PURE__ */ new u32([
65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632,
])
var et$1 = /* @__PURE__ */ new u8(0)
var dflt = function (dat, lvl, plvl, pre, post, lst) {
var s2 = dat.length
var o2 = new u8(pre + s2 + 5 * (1 + Math.floor(s2 / 7e3)) + post)
var w2 = o2.subarray(pre, o2.length - post)
var pos = 0
if (!lvl || s2 < 8) {
for (var i2 = 0; i2 <= s2; i2 += 65535) {
var e2 = i2 + 65535
if (e2 < s2) {
pos = wfblk(w2, pos, dat.subarray(i2, e2))
} else {
w2[i2] = lst
pos = wfblk(w2, pos, dat.subarray(i2, s2))
}
}
} else {
var opt = deo[lvl - 1]
var n2 = opt >>> 13,
c2 = opt & 8191
var msk_1 = (1 << plvl) - 1
var prev = new u16(32768),
head = new u16(msk_1 + 1)
var bs1_1 = Math.ceil(plvl / 3),
bs2_1 = 2 * bs1_1
var hsh = function (i3) {
return (dat[i3] ^ (dat[i3 + 1] << bs1_1) ^ (dat[i3 + 2] << bs2_1)) & msk_1
}
var syms = new u32(25e3)
var lf = new u16(288),
df = new u16(32)
var lc_1 = 0,
eb = 0,
i2 = 0,
li = 0,
wi = 0,
bs2 = 0
for (; i2 < s2; ++i2) {
var hv = hsh(i2)
var imod = i2 & 32767
var pimod = head[hv]
prev[imod] = pimod
head[hv] = imod
if (wi <= i2) {
var rem = s2 - i2
if ((lc_1 > 7e3 || li > 24576) && rem > 423) {
pos = wblk(dat, w2, 0, syms, lf, df, eb, li, bs2, i2 - bs2, pos)
;(li = lc_1 = eb = 0), (bs2 = i2)
for (var j2 = 0; j2 < 286; ++j2) lf[j2] = 0
for (var j2 = 0; j2 < 30; ++j2) df[j2] = 0
}
var l2 = 2,
d3 = 0,
ch_1 = c2,
dif = (imod - pimod) & 32767
if (rem > 2 && hv == hsh(i2 - dif)) {
var maxn = Math.min(n2, rem) - 1
var maxd = Math.min(32767, i2)
var ml = Math.min(258, rem)
while (dif <= maxd && --ch_1 && imod != pimod) {
if (dat[i2 + l2] == dat[i2 + l2 - dif]) {
var nl2 = 0
for (; nl2 < ml && dat[i2 + nl2] == dat[i2 + nl2 - dif]; ++nl2);
if (nl2 > l2) {
;(l2 = nl2), (d3 = dif)
if (nl2 > maxn) break
var mmd = Math.min(dif, nl2 - 2)
var md = 0
for (var j2 = 0; j2 < mmd; ++j2) {
var ti = (i2 - dif + j2 + 32768) & 32767
var pti = prev[ti]
var cd = (ti - pti + 32768) & 32767
if (cd > md) (md = cd), (pimod = ti)
}
}
}
;(imod = pimod), (pimod = prev[imod])
dif += (imod - pimod + 32768) & 32767
}
}
if (d3) {
syms[li++] = 268435456 | (revfl[l2] << 18) | revfd[d3]
var lin = revfl[l2] & 31,
din = revfd[d3] & 31
eb += fleb[lin] + fdeb[din]
++lf[257 + lin]
++df[din]
wi = i2 + l2
++lc_1
} else {
syms[li++] = dat[i2]
++lf[dat[i2]]
}
}
}
pos = wblk(dat, w2, lst, syms, lf, df, eb, li, bs2, i2 - bs2, pos)
if (!lst) pos = wfblk(w2, pos, et$1)
}
return slc(o2, 0, pre + shft(pos) + post)
}
var adler = function () {
var a2 = 1,
b2 = 0
return {
p: function (d3) {
var n2 = a2,
m2 = b2
var l2 = d3.length
for (var i2 = 0; i2 != l2; ) {
var e2 = Math.min(i2 + 5552, l2)
for (; i2 < e2; ++i2) (n2 += d3[i2]), (m2 += n2)
;(n2 %= 65521), (m2 %= 65521)
}
;(a2 = n2), (b2 = m2)
},
d: function () {
return (
(((a2 >>> 8) << 16) | ((b2 & 255) << 8) | (b2 >>> 8)) +
((a2 & 255) << 23) * 2
)
},
}
}
var dopt = function (dat, opt, pre, post, st2) {
return dflt(
dat,
opt.level == null ? 6 : opt.level,
opt.mem == null
? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5)
: 12 + opt.mem,
pre,
post,
!st2
)
}
var wbytes = function (d3, b2, v4) {
for (; v4; ++b2) (d3[b2] = v4), (v4 >>>= 8)
}
var zlh = function (c2, o2) {
var lv2 = o2.level,
fl2 = lv2 == 0 ? 0 : lv2 < 6 ? 1 : lv2 == 9 ? 3 : 2
;(c2[0] = 120), (c2[1] = (fl2 << 6) | (fl2 ? 32 - 2 * fl2 : 1))
}
var zlv = function (d3) {
if ((d3[0] & 15) != 8 || d3[0] >>> 4 > 7 || ((d3[0] << 8) | d3[1]) % 31)
throw 'invalid zlib data'
if (d3[1] & 32) throw 'invalid zlib data: preset dictionaries not supported'
}
function zlibSync(data2, opts) {
if (opts === void 0) {
opts = {}
}
var a2 = adler()
a2.p(data2)
var d3 = dopt(data2, opts, 2, 4)
return zlh(d3, opts), wbytes(d3, d3.length - 4, a2.d()), d3
}
function unzlibSync(data2, out2) {
return inflt((zlv(data2), data2.subarray(2, -4)), out2)
}
/** @license
*
* jsPDF - PDF Document creation from JavaScript
* Version 2.5.1 Built on 2022-01-28T15:37:57.791Z
* CommitID 00000000
*
* Copyright (c) 2010-2021 James Hall , https://github.com/MrRio/jsPDF
* 2015-2021 yWorks GmbH, http://www.yworks.com
* 2015-2021 Lukas Holländer , https://github.com/HackbrettXXX
* 2016-2018 Aras Abbasi
* 2010 Aaron Spike, https://github.com/acspike
* 2012 Willow Systems Corporation, https://github.com/willowsystems
* 2012 Pablo Hess, https://github.com/pablohess
* 2012 Florian Jenett, https://github.com/fjenett
* 2013 Warren Weckesser, https://github.com/warrenweckesser
* 2013 Youssef Beddad, https://github.com/lifof
* 2013 Lee Driscoll, https://github.com/lsdriscoll
* 2013 Stefan Slonevskiy, https://github.com/stefslon
* 2013 Jeremy Morel, https://github.com/jmorel
* 2013 Christoph Hartmann, https://github.com/chris-rock
* 2014 Juan Pablo Gaviria, https://github.com/juanpgaviria
* 2014 James Makes, https://github.com/dollaruw
* 2014 Diego Casorran, https://github.com/diegocr
* 2014 Steven Spungin, https://github.com/Flamenco
* 2014 Kenneth Glassey, https://github.com/Gavvers
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Contributor(s):
* siefkenj, ahwolf, rickygu, Midnith, saintclair, eaparango,
* kim3er, mfo, alnorth, Flamenco
*/
var n$1 = (function () {
return 'undefined' != typeof window
? window
: 'undefined' != typeof global
? global
: 'undefined' != typeof self
? self
: this
})()
function i$5() {
n$1.console &&
'function' == typeof n$1.console.log &&
n$1.console.log.apply(n$1.console, arguments)
}
var a$2 = {
log: i$5,
warn: function (t3) {
n$1.console &&
('function' == typeof n$1.console.warn
? n$1.console.warn.apply(n$1.console, arguments)
: i$5.call(null, arguments))
},
error: function (t3) {
n$1.console &&
('function' == typeof n$1.console.error
? n$1.console.error.apply(n$1.console, arguments)
: i$5(t3))
},
}
function o$1(t3, e2, r2) {
var n2 = new XMLHttpRequest()
n2.open('GET', t3),
(n2.responseType = 'blob'),
(n2.onload = function () {
l$1(n2.response, e2, r2)
}),
(n2.onerror = function () {
a$2.error('could not download file')
}),
n2.send()
}
function s$1(t3) {
var e2 = new XMLHttpRequest()
e2.open('HEAD', t3, false)
try {
e2.send()
} catch (t4) {}
return e2.status >= 200 && e2.status <= 299
}
function c$2(t3) {
try {
t3.dispatchEvent(new MouseEvent('click'))
} catch (r2) {
var e2 = document.createEvent('MouseEvents')
e2.initMouseEvent(
'click',
true,
true,
window,
0,
0,
0,
80,
20,
false,
false,
false,
false,
0,
null
),
t3.dispatchEvent(e2)
}
}
var u$2,
h$1,
l$1 =
n$1.saveAs ||
('object' !==
('undefined' == typeof window ? 'undefined' : _typeof$3(window)) ||
window !== n$1
? function () {}
: 'undefined' != typeof HTMLAnchorElement &&
'download' in HTMLAnchorElement.prototype
? function (t3, e2, r2) {
var i2 = n$1.URL || n$1.webkitURL,
a2 = document.createElement('a')
;(e2 = e2 || t3.name || 'download'),
(a2.download = e2),
(a2.rel = 'noopener'),
'string' == typeof t3
? ((a2.href = t3),
a2.origin !== location.origin
? s$1(a2.href)
? o$1(t3, e2, r2)
: c$2(a2, (a2.target = '_blank'))
: c$2(a2))
: ((a2.href = i2.createObjectURL(t3)),
setTimeout(function () {
i2.revokeObjectURL(a2.href)
}, 4e4),
setTimeout(function () {
c$2(a2)
}, 0))
}
: 'msSaveOrOpenBlob' in navigator
? function (e2, r2, n2) {
if (((r2 = r2 || e2.name || 'download'), 'string' == typeof e2))
if (s$1(e2)) o$1(e2, r2, n2)
else {
var i2 = document.createElement('a')
;(i2.href = e2),
(i2.target = '_blank'),
setTimeout(function () {
c$2(i2)
})
}
else
navigator.msSaveOrOpenBlob(
(function (e3, r3) {
return (
void 0 === r3
? (r3 = { autoBom: false })
: 'object' !== _typeof$3(r3) &&
(a$2.warn(
'Deprecated: Expected third argument to be a object'
),
(r3 = { autoBom: !r3 })),
r3.autoBom &&
/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(
e3.type
)
? new Blob([String.fromCharCode(65279), e3], {
type: e3.type,
})
: e3
)
})(e2, n2),
r2
)
}
: function (e2, r2, i2, a2) {
if (
((a2 = a2 || open('', '_blank')) &&
(a2.document.title = a2.document.body.innerText =
'downloading...'),
'string' == typeof e2)
)
return o$1(e2, r2, i2)
var s2 = 'application/octet-stream' === e2.type,
c2 = /constructor/i.test(n$1.HTMLElement) || n$1.safari,
u2 = /CriOS\/[\d]+/.test(navigator.userAgent)
if (
(u2 || (s2 && c2)) &&
'object' ===
('undefined' == typeof FileReader
? 'undefined'
: _typeof$3(FileReader))
) {
var h2 = new FileReader()
;(h2.onloadend = function () {
var t3 = h2.result
;(t3 = u2
? t3
: t3.replace(/^data:[^;]*;/, 'data:attachment/file;')),
a2 ? (a2.location.href = t3) : (location = t3),
(a2 = null)
}),
h2.readAsDataURL(e2)
} else {
var l2 = n$1.URL || n$1.webkitURL,
f2 = l2.createObjectURL(e2)
a2 ? (a2.location = f2) : (location.href = f2),
(a2 = null),
setTimeout(function () {
l2.revokeObjectURL(f2)
}, 4e4)
}
})
/**
* A class to parse color values
* @author Stoyan Stefanov
* {@link http://www.phpied.com/rgb-color-parser-in-javascript/}
* @license Use it if you like it
*/
function f$2(t3) {
var e2
;(t3 = t3 || ''),
(this.ok = false),
'#' == t3.charAt(0) && (t3 = t3.substr(1, 6))
t3 =
{
aliceblue: 'f0f8ff',
antiquewhite: 'faebd7',
aqua: '00ffff',
aquamarine: '7fffd4',
azure: 'f0ffff',
beige: 'f5f5dc',
bisque: 'ffe4c4',
black: '000000',
blanchedalmond: 'ffebcd',
blue: '0000ff',
blueviolet: '8a2be2',
brown: 'a52a2a',
burlywood: 'deb887',
cadetblue: '5f9ea0',
chartreuse: '7fff00',
chocolate: 'd2691e',
coral: 'ff7f50',
cornflowerblue: '6495ed',
cornsilk: 'fff8dc',
crimson: 'dc143c',
cyan: '00ffff',
darkblue: '00008b',
darkcyan: '008b8b',
darkgoldenrod: 'b8860b',
darkgray: 'a9a9a9',
darkgreen: '006400',
darkkhaki: 'bdb76b',
darkmagenta: '8b008b',
darkolivegreen: '556b2f',
darkorange: 'ff8c00',
darkorchid: '9932cc',
darkred: '8b0000',
darksalmon: 'e9967a',
darkseagreen: '8fbc8f',
darkslateblue: '483d8b',
darkslategray: '2f4f4f',
darkturquoise: '00ced1',
darkviolet: '9400d3',
deeppink: 'ff1493',
deepskyblue: '00bfff',
dimgray: '696969',
dodgerblue: '1e90ff',
feldspar: 'd19275',
firebrick: 'b22222',
floralwhite: 'fffaf0',
forestgreen: '228b22',
fuchsia: 'ff00ff',
gainsboro: 'dcdcdc',
ghostwhite: 'f8f8ff',
gold: 'ffd700',
goldenrod: 'daa520',
gray: '808080',
green: '008000',
greenyellow: 'adff2f',
honeydew: 'f0fff0',
hotpink: 'ff69b4',
indianred: 'cd5c5c',
indigo: '4b0082',
ivory: 'fffff0',
khaki: 'f0e68c',
lavender: 'e6e6fa',
lavenderblush: 'fff0f5',
lawngreen: '7cfc00',
lemonchiffon: 'fffacd',
lightblue: 'add8e6',
lightcoral: 'f08080',
lightcyan: 'e0ffff',
lightgoldenrodyellow: 'fafad2',
lightgrey: 'd3d3d3',
lightgreen: '90ee90',
lightpink: 'ffb6c1',
lightsalmon: 'ffa07a',
lightseagreen: '20b2aa',
lightskyblue: '87cefa',
lightslateblue: '8470ff',
lightslategray: '778899',
lightsteelblue: 'b0c4de',
lightyellow: 'ffffe0',
lime: '00ff00',
limegreen: '32cd32',
linen: 'faf0e6',
magenta: 'ff00ff',
maroon: '800000',
mediumaquamarine: '66cdaa',
mediumblue: '0000cd',
mediumorchid: 'ba55d3',
mediumpurple: '9370d8',
mediumseagreen: '3cb371',
mediumslateblue: '7b68ee',
mediumspringgreen: '00fa9a',
mediumturquoise: '48d1cc',
mediumvioletred: 'c71585',
midnightblue: '191970',
mintcream: 'f5fffa',
mistyrose: 'ffe4e1',
moccasin: 'ffe4b5',
navajowhite: 'ffdead',
navy: '000080',
oldlace: 'fdf5e6',
olive: '808000',
olivedrab: '6b8e23',
orange: 'ffa500',
orangered: 'ff4500',
orchid: 'da70d6',
palegoldenrod: 'eee8aa',
palegreen: '98fb98',
paleturquoise: 'afeeee',
palevioletred: 'd87093',
papayawhip: 'ffefd5',
peachpuff: 'ffdab9',
peru: 'cd853f',
pink: 'ffc0cb',
plum: 'dda0dd',
powderblue: 'b0e0e6',
purple: '800080',
red: 'ff0000',
rosybrown: 'bc8f8f',
royalblue: '4169e1',
saddlebrown: '8b4513',
salmon: 'fa8072',
sandybrown: 'f4a460',
seagreen: '2e8b57',
seashell: 'fff5ee',
sienna: 'a0522d',
silver: 'c0c0c0',
skyblue: '87ceeb',
slateblue: '6a5acd',
slategray: '708090',
snow: 'fffafa',
springgreen: '00ff7f',
steelblue: '4682b4',
tan: 'd2b48c',
teal: '008080',
thistle: 'd8bfd8',
tomato: 'ff6347',
turquoise: '40e0d0',
violet: 'ee82ee',
violetred: 'd02090',
wheat: 'f5deb3',
white: 'ffffff',
whitesmoke: 'f5f5f5',
yellow: 'ffff00',
yellowgreen: '9acd32',
}[(t3 = (t3 = t3.replace(/ /g, '')).toLowerCase())] || t3
for (
var r2 = [
{
re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,
example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],
process: function (t4) {
return [parseInt(t4[1]), parseInt(t4[2]), parseInt(t4[3])]
},
},
{
re: /^(\w{2})(\w{2})(\w{2})$/,
example: ['#00ff00', '336699'],
process: function (t4) {
return [
parseInt(t4[1], 16),
parseInt(t4[2], 16),
parseInt(t4[3], 16),
]
},
},
{
re: /^(\w{1})(\w{1})(\w{1})$/,
example: ['#fb0', 'f0f'],
process: function (t4) {
return [
parseInt(t4[1] + t4[1], 16),
parseInt(t4[2] + t4[2], 16),
parseInt(t4[3] + t4[3], 16),
]
},
},
],
n2 = 0;
n2 < r2.length;
n2++
) {
var i2 = r2[n2].re,
a2 = r2[n2].process,
o2 = i2.exec(t3)
o2 &&
((e2 = a2(o2)),
(this.r = e2[0]),
(this.g = e2[1]),
(this.b = e2[2]),
(this.ok = true))
}
;(this.r = this.r < 0 || isNaN(this.r) ? 0 : this.r > 255 ? 255 : this.r),
(this.g = this.g < 0 || isNaN(this.g) ? 0 : this.g > 255 ? 255 : this.g),
(this.b = this.b < 0 || isNaN(this.b) ? 0 : this.b > 255 ? 255 : this.b),
(this.toRGB = function () {
return 'rgb(' + this.r + ', ' + this.g + ', ' + this.b + ')'
}),
(this.toHex = function () {
var t4 = this.r.toString(16),
e3 = this.g.toString(16),
r3 = this.b.toString(16)
return (
1 == t4.length && (t4 = '0' + t4),
1 == e3.length && (e3 = '0' + e3),
1 == r3.length && (r3 = '0' + r3),
'#' + t4 + e3 + r3
)
})
}
/**
* @license
* Joseph Myers does not specify a particular license for his work.
*
* Author: Joseph Myers
* Accessed from: http://www.myersdaily.org/joseph/javascript/md5.js
*
* Modified by: Owen Leong
*/
function d(t3, e2) {
var r2 = t3[0],
n2 = t3[1],
i2 = t3[2],
a2 = t3[3]
;(r2 = g(r2, n2, i2, a2, e2[0], 7, -680876936)),
(a2 = g(a2, r2, n2, i2, e2[1], 12, -389564586)),
(i2 = g(i2, a2, r2, n2, e2[2], 17, 606105819)),
(n2 = g(n2, i2, a2, r2, e2[3], 22, -1044525330)),
(r2 = g(r2, n2, i2, a2, e2[4], 7, -176418897)),
(a2 = g(a2, r2, n2, i2, e2[5], 12, 1200080426)),
(i2 = g(i2, a2, r2, n2, e2[6], 17, -1473231341)),
(n2 = g(n2, i2, a2, r2, e2[7], 22, -45705983)),
(r2 = g(r2, n2, i2, a2, e2[8], 7, 1770035416)),
(a2 = g(a2, r2, n2, i2, e2[9], 12, -1958414417)),
(i2 = g(i2, a2, r2, n2, e2[10], 17, -42063)),
(n2 = g(n2, i2, a2, r2, e2[11], 22, -1990404162)),
(r2 = g(r2, n2, i2, a2, e2[12], 7, 1804603682)),
(a2 = g(a2, r2, n2, i2, e2[13], 12, -40341101)),
(i2 = g(i2, a2, r2, n2, e2[14], 17, -1502002290)),
(r2 = m$3(
r2,
(n2 = g(n2, i2, a2, r2, e2[15], 22, 1236535329)),
i2,
a2,
e2[1],
5,
-165796510
)),
(a2 = m$3(a2, r2, n2, i2, e2[6], 9, -1069501632)),
(i2 = m$3(i2, a2, r2, n2, e2[11], 14, 643717713)),
(n2 = m$3(n2, i2, a2, r2, e2[0], 20, -373897302)),
(r2 = m$3(r2, n2, i2, a2, e2[5], 5, -701558691)),
(a2 = m$3(a2, r2, n2, i2, e2[10], 9, 38016083)),
(i2 = m$3(i2, a2, r2, n2, e2[15], 14, -660478335)),
(n2 = m$3(n2, i2, a2, r2, e2[4], 20, -405537848)),
(r2 = m$3(r2, n2, i2, a2, e2[9], 5, 568446438)),
(a2 = m$3(a2, r2, n2, i2, e2[14], 9, -1019803690)),
(i2 = m$3(i2, a2, r2, n2, e2[3], 14, -187363961)),
(n2 = m$3(n2, i2, a2, r2, e2[8], 20, 1163531501)),
(r2 = m$3(r2, n2, i2, a2, e2[13], 5, -1444681467)),
(a2 = m$3(a2, r2, n2, i2, e2[2], 9, -51403784)),
(i2 = m$3(i2, a2, r2, n2, e2[7], 14, 1735328473)),
(r2 = v$2(
r2,
(n2 = m$3(n2, i2, a2, r2, e2[12], 20, -1926607734)),
i2,
a2,
e2[5],
4,
-378558
)),
(a2 = v$2(a2, r2, n2, i2, e2[8], 11, -2022574463)),
(i2 = v$2(i2, a2, r2, n2, e2[11], 16, 1839030562)),
(n2 = v$2(n2, i2, a2, r2, e2[14], 23, -35309556)),
(r2 = v$2(r2, n2, i2, a2, e2[1], 4, -1530992060)),
(a2 = v$2(a2, r2, n2, i2, e2[4], 11, 1272893353)),
(i2 = v$2(i2, a2, r2, n2, e2[7], 16, -155497632)),
(n2 = v$2(n2, i2, a2, r2, e2[10], 23, -1094730640)),
(r2 = v$2(r2, n2, i2, a2, e2[13], 4, 681279174)),
(a2 = v$2(a2, r2, n2, i2, e2[0], 11, -358537222)),
(i2 = v$2(i2, a2, r2, n2, e2[3], 16, -722521979)),
(n2 = v$2(n2, i2, a2, r2, e2[6], 23, 76029189)),
(r2 = v$2(r2, n2, i2, a2, e2[9], 4, -640364487)),
(a2 = v$2(a2, r2, n2, i2, e2[12], 11, -421815835)),
(i2 = v$2(i2, a2, r2, n2, e2[15], 16, 530742520)),
(r2 = b(
r2,
(n2 = v$2(n2, i2, a2, r2, e2[2], 23, -995338651)),
i2,
a2,
e2[0],
6,
-198630844
)),
(a2 = b(a2, r2, n2, i2, e2[7], 10, 1126891415)),
(i2 = b(i2, a2, r2, n2, e2[14], 15, -1416354905)),
(n2 = b(n2, i2, a2, r2, e2[5], 21, -57434055)),
(r2 = b(r2, n2, i2, a2, e2[12], 6, 1700485571)),
(a2 = b(a2, r2, n2, i2, e2[3], 10, -1894986606)),
(i2 = b(i2, a2, r2, n2, e2[10], 15, -1051523)),
(n2 = b(n2, i2, a2, r2, e2[1], 21, -2054922799)),
(r2 = b(r2, n2, i2, a2, e2[8], 6, 1873313359)),
(a2 = b(a2, r2, n2, i2, e2[15], 10, -30611744)),
(i2 = b(i2, a2, r2, n2, e2[6], 15, -1560198380)),
(n2 = b(n2, i2, a2, r2, e2[13], 21, 1309151649)),
(r2 = b(r2, n2, i2, a2, e2[4], 6, -145523070)),
(a2 = b(a2, r2, n2, i2, e2[11], 10, -1120210379)),
(i2 = b(i2, a2, r2, n2, e2[2], 15, 718787259)),
(n2 = b(n2, i2, a2, r2, e2[9], 21, -343485551)),
(t3[0] = _$2(r2, t3[0])),
(t3[1] = _$2(n2, t3[1])),
(t3[2] = _$2(i2, t3[2])),
(t3[3] = _$2(a2, t3[3]))
}
function p$1(t3, e2, r2, n2, i2, a2) {
return (
(e2 = _$2(_$2(e2, t3), _$2(n2, a2))),
_$2((e2 << i2) | (e2 >>> (32 - i2)), r2)
)
}
function g(t3, e2, r2, n2, i2, a2, o2) {
return p$1((e2 & r2) | (~e2 & n2), t3, e2, i2, a2, o2)
}
function m$3(t3, e2, r2, n2, i2, a2, o2) {
return p$1((e2 & n2) | (r2 & ~n2), t3, e2, i2, a2, o2)
}
function v$2(t3, e2, r2, n2, i2, a2, o2) {
return p$1(e2 ^ r2 ^ n2, t3, e2, i2, a2, o2)
}
function b(t3, e2, r2, n2, i2, a2, o2) {
return p$1(r2 ^ (e2 | ~n2), t3, e2, i2, a2, o2)
}
function y$1(t3) {
var e2,
r2 = t3.length,
n2 = [1732584193, -271733879, -1732584194, 271733878]
for (e2 = 64; e2 <= t3.length; e2 += 64) d(n2, w(t3.substring(e2 - 64, e2)))
t3 = t3.substring(e2 - 64)
var i2 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
for (e2 = 0; e2 < t3.length; e2++)
i2[e2 >> 2] |= t3.charCodeAt(e2) << (e2 % 4 << 3)
if (((i2[e2 >> 2] |= 128 << (e2 % 4 << 3)), e2 > 55))
for (d(n2, i2), e2 = 0; e2 < 16; e2++) i2[e2] = 0
return (i2[14] = 8 * r2), d(n2, i2), n2
}
function w(t3) {
var e2,
r2 = []
for (e2 = 0; e2 < 64; e2 += 4)
r2[e2 >> 2] =
t3.charCodeAt(e2) +
(t3.charCodeAt(e2 + 1) << 8) +
(t3.charCodeAt(e2 + 2) << 16) +
(t3.charCodeAt(e2 + 3) << 24)
return r2
}
;(u$2 = n$1.atob.bind(n$1)), (h$1 = n$1.btoa.bind(n$1))
var N$1 = '0123456789abcdef'.split('')
function L$1(t3) {
for (var e2 = '', r2 = 0; r2 < 4; r2++)
e2 += N$1[(t3 >> (8 * r2 + 4)) & 15] + N$1[(t3 >> (8 * r2)) & 15]
return e2
}
function A$1(t3) {
return String.fromCharCode(
(255 & t3) >> 0,
(65280 & t3) >> 8,
(16711680 & t3) >> 16,
(4278190080 & t3) >> 24
)
}
function x(t3) {
return y$1(t3).map(A$1).join('')
}
var S =
'5d41402abc4b2a76b9719d911017c592' !=
(function (t3) {
for (var e2 = 0; e2 < t3.length; e2++) t3[e2] = L$1(t3[e2])
return t3.join('')
})(y$1('hello'))
function _$2(t3, e2) {
if (S) {
var r2 = (65535 & t3) + (65535 & e2)
return (((t3 >> 16) + (e2 >> 16) + (r2 >> 16)) << 16) | (65535 & r2)
}
return (t3 + e2) & 4294967295
}
/**
* @license
* FPDF is released under a permissive license: there is no usage restriction.
* You may embed it freely in your application (commercial or not), with or
* without modifications.
*
* Reference: http://www.fpdf.org/en/script/script37.php
*/
function P(t3, e2) {
var r2, n2, i2, a2
if (t3 !== r2) {
for (
var o2 =
((i2 = t3),
(a2 = 1 + ((256 / t3.length) >> 0)),
new Array(a2 + 1).join(i2)),
s2 = [],
c2 = 0;
c2 < 256;
c2++
)
s2[c2] = c2
var u2 = 0
for (c2 = 0; c2 < 256; c2++) {
var h2 = s2[c2]
;(u2 = (u2 + h2 + o2.charCodeAt(c2)) % 256),
(s2[c2] = s2[u2]),
(s2[u2] = h2)
}
;(r2 = t3), (n2 = s2)
} else s2 = n2
var l2 = e2.length,
f2 = 0,
d3 = 0,
p2 = ''
for (c2 = 0; c2 < l2; c2++)
(d3 = (d3 + (h2 = s2[(f2 = (f2 + 1) % 256)])) % 256),
(s2[f2] = s2[d3]),
(s2[d3] = h2),
(o2 = s2[(s2[f2] + s2[d3]) % 256]),
(p2 += String.fromCharCode(e2.charCodeAt(c2) ^ o2))
return p2
}
/**
* @license
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
* Author: Owen Leong (@owenl131)
* Date: 15 Oct 2020
* References:
* https://www.cs.cmu.edu/~dst/Adobe/Gallery/anon21jul01-pdf-encryption.txt
* https://github.com/foliojs/pdfkit/blob/master/lib/security.js
* http://www.fpdf.org/en/script/script37.php
*/
var k$1 = { print: 4, modify: 8, copy: 16, 'annot-forms': 32 }
function I(t3, e2, r2, n2) {
;(this.v = 1), (this.r = 2)
var i2 = 192
t3.forEach(function (t4) {
if (void 0 !== k$1.perm) throw new Error('Invalid permission: ' + t4)
i2 += k$1[t4]
}),
(this.padding =
'(\xBFN^Nu\x8AAd\0NV\xFF\xFA\b..\0\xB6\xD0h>\x80/\f\xA9\xFEdSiz')
var a2 = (e2 + this.padding).substr(0, 32),
o2 = (r2 + this.padding).substr(0, 32)
;(this.O = this.processOwnerPassword(a2, o2)),
(this.P = -(1 + (255 ^ i2))),
(this.encryptionKey = x(
a2 + this.O + this.lsbFirstWord(this.P) + this.hexToBytes(n2)
).substr(0, 5)),
(this.U = P(this.encryptionKey, this.padding))
}
function F$1(t3) {
if (/[^\u0000-\u00ff]/.test(t3))
throw new Error(
'Invalid PDF Name Object: ' + t3 + ', Only accept ASCII characters.'
)
for (var e2 = '', r2 = t3.length, n2 = 0; n2 < r2; n2++) {
var i2 = t3.charCodeAt(n2)
if (
i2 < 33 ||
35 === i2 ||
37 === i2 ||
40 === i2 ||
41 === i2 ||
47 === i2 ||
60 === i2 ||
62 === i2 ||
91 === i2 ||
93 === i2 ||
123 === i2 ||
125 === i2 ||
i2 > 126
)
e2 += '#' + ('0' + i2.toString(16)).slice(-2)
else e2 += t3[n2]
}
return e2
}
function C(e2) {
if ('object' !== _typeof$3(e2))
throw new Error(
'Invalid Context passed to initialize PubSub (jsPDF-module)'
)
var r2 = {}
;(this.subscribe = function (t3, e3, n2) {
if (
((n2 = n2 || false),
'string' != typeof t3 ||
'function' != typeof e3 ||
'boolean' != typeof n2)
)
throw new Error(
'Invalid arguments passed to PubSub.subscribe (jsPDF-module)'
)
r2.hasOwnProperty(t3) || (r2[t3] = {})
var i2 = Math.random().toString(35)
return (r2[t3][i2] = [e3, !!n2]), i2
}),
(this.unsubscribe = function (t3) {
for (var e3 in r2)
if (r2[e3][t3])
return (
delete r2[e3][t3],
0 === Object.keys(r2[e3]).length && delete r2[e3],
true
)
return false
}),
(this.publish = function (t3) {
if (r2.hasOwnProperty(t3)) {
var i2 = Array.prototype.slice.call(arguments, 1),
o2 = []
for (var s2 in r2[t3]) {
var c2 = r2[t3][s2]
try {
c2[0].apply(e2, i2)
} catch (t4) {
n$1.console && a$2.error('jsPDF PubSub Error', t4.message, t4)
}
c2[1] && o2.push(s2)
}
o2.length && o2.forEach(this.unsubscribe)
}
}),
(this.getTopics = function () {
return r2
})
}
function j(t3) {
if (!(this instanceof j)) return new j(t3)
var e2 = 'opacity,stroke-opacity'.split(',')
for (var r2 in t3)
t3.hasOwnProperty(r2) && e2.indexOf(r2) >= 0 && (this[r2] = t3[r2])
;(this.id = ''), (this.objectNumber = -1)
}
function O$1(t3, e2) {
;(this.gState = t3),
(this.matrix = e2),
(this.id = ''),
(this.objectNumber = -1)
}
function B(t3, e2, r2, n2, i2) {
if (!(this instanceof B)) return new B(t3, e2, r2, n2, i2)
;(this.type = 'axial' === t3 ? 2 : 3),
(this.coords = e2),
(this.colors = r2),
O$1.call(this, n2, i2)
}
function M(t3, e2, r2, n2, i2) {
if (!(this instanceof M)) return new M(t3, e2, r2, n2, i2)
;(this.boundingBox = t3),
(this.xStep = e2),
(this.yStep = r2),
(this.stream = ''),
(this.cloneIndex = 0),
O$1.call(this, n2, i2)
}
function E$1(e2) {
var r2,
i2 = 'string' == typeof arguments[0] ? arguments[0] : 'p',
o2 = arguments[1],
s2 = arguments[2],
c2 = arguments[3],
u2 = [],
d3 = 1,
p2 = 16,
g2 = 'S',
m2 = null
'object' === _typeof$3((e2 = e2 || {})) &&
((i2 = e2.orientation),
(o2 = e2.unit || o2),
(s2 = e2.format || s2),
(c2 = e2.compress || e2.compressPdf || c2),
null !== (m2 = e2.encryption || null) &&
((m2.userPassword = m2.userPassword || ''),
(m2.ownerPassword = m2.ownerPassword || ''),
(m2.userPermissions = m2.userPermissions || [])),
(d3 = 'number' == typeof e2.userUnit ? Math.abs(e2.userUnit) : 1),
void 0 !== e2.precision && (r2 = e2.precision),
void 0 !== e2.floatPrecision && (p2 = e2.floatPrecision),
(g2 = e2.defaultPathOperation || 'S')),
(u2 = e2.filters || (true === c2 ? ['FlateEncode'] : u2)),
(o2 = o2 || 'mm'),
(i2 = ('' + (i2 || 'P')).toLowerCase())
var v4 = e2.putOnlyUsedFonts || false,
b2 = {},
y2 = { internal: {}, __private__: {} }
y2.__private__.PubSub = C
var w2 = '1.3',
N2 = (y2.__private__.getPdfVersion = function () {
return w2
})
y2.__private__.setPdfVersion = function (t3) {
w2 = t3
}
var L2 = {
a0: [2383.94, 3370.39],
a1: [1683.78, 2383.94],
a2: [1190.55, 1683.78],
a3: [841.89, 1190.55],
a4: [595.28, 841.89],
a5: [419.53, 595.28],
a6: [297.64, 419.53],
a7: [209.76, 297.64],
a8: [147.4, 209.76],
a9: [104.88, 147.4],
a10: [73.7, 104.88],
b0: [2834.65, 4008.19],
b1: [2004.09, 2834.65],
b2: [1417.32, 2004.09],
b3: [1000.63, 1417.32],
b4: [708.66, 1000.63],
b5: [498.9, 708.66],
b6: [354.33, 498.9],
b7: [249.45, 354.33],
b8: [175.75, 249.45],
b9: [124.72, 175.75],
b10: [87.87, 124.72],
c0: [2599.37, 3676.54],
c1: [1836.85, 2599.37],
c2: [1298.27, 1836.85],
c3: [918.43, 1298.27],
c4: [649.13, 918.43],
c5: [459.21, 649.13],
c6: [323.15, 459.21],
c7: [229.61, 323.15],
c8: [161.57, 229.61],
c9: [113.39, 161.57],
c10: [79.37, 113.39],
dl: [311.81, 623.62],
letter: [612, 792],
'government-letter': [576, 756],
legal: [612, 1008],
'junior-legal': [576, 360],
ledger: [1224, 792],
tabloid: [792, 1224],
'credit-card': [153, 243],
}
y2.__private__.getPageFormats = function () {
return L2
}
var A2 = (y2.__private__.getPageFormat = function (t3) {
return L2[t3]
})
s2 = s2 || 'a4'
var x2 = { COMPAT: 'compat', ADVANCED: 'advanced' },
S2 = x2.COMPAT
function _2() {
this.saveGraphicsState(),
lt2(new Vt2(_t2, 0, 0, -_t2, 0, Rr() * _t2).toString() + ' cm'),
this.setFontSize(this.getFontSize() / _t2),
(g2 = 'n'),
(S2 = x2.ADVANCED)
}
function P2() {
this.restoreGraphicsState(), (g2 = 'S'), (S2 = x2.COMPAT)
}
var k2 = (y2.__private__.combineFontStyleAndFontWeight = function (t3, e3) {
if (
('bold' == t3 && 'normal' == e3) ||
('bold' == t3 && 400 == e3) ||
('normal' == t3 && 'italic' == e3) ||
('bold' == t3 && 'italic' == e3)
)
throw new Error('Invalid Combination of fontweight and fontstyle')
return (
e3 &&
(t3 =
400 == e3 || 'normal' === e3
? 'italic' === t3
? 'italic'
: 'normal'
: (700 != e3 && 'bold' !== e3) || 'normal' !== t3
? (700 == e3 ? 'bold' : e3) + '' + t3
: 'bold'),
t3
)
})
;(y2.advancedAPI = function (t3) {
var e3 = S2 === x2.COMPAT
return (
e3 && _2.call(this),
'function' != typeof t3 || (t3(this), e3 && P2.call(this)),
this
)
}),
(y2.compatAPI = function (t3) {
var e3 = S2 === x2.ADVANCED
return (
e3 && P2.call(this),
'function' != typeof t3 || (t3(this), e3 && _2.call(this)),
this
)
}),
(y2.isAdvancedAPI = function () {
return S2 === x2.ADVANCED
})
var O2,
q2 = function (t3) {
if (S2 !== x2.ADVANCED)
throw new Error(
t3 +
" is only available in 'advanced' API mode. You need to call advancedAPI() first."
)
},
D2 =
(y2.roundToPrecision =
y2.__private__.roundToPrecision =
function (t3, e3) {
var n2 = r2 || e3
if (isNaN(t3) || isNaN(n2))
throw new Error('Invalid argument passed to jsPDF.roundToPrecision')
return t3.toFixed(n2).replace(/0+$/, '')
})
O2 =
y2.hpf =
y2.__private__.hpf =
'number' == typeof p2
? function (t3) {
if (isNaN(t3))
throw new Error('Invalid argument passed to jsPDF.hpf')
return D2(t3, p2)
}
: 'smart' === p2
? function (t3) {
if (isNaN(t3))
throw new Error('Invalid argument passed to jsPDF.hpf')
return D2(t3, t3 > -1 && t3 < 1 ? 16 : 5)
}
: function (t3) {
if (isNaN(t3))
throw new Error('Invalid argument passed to jsPDF.hpf')
return D2(t3, 16)
}
var R2 =
(y2.f2 =
y2.__private__.f2 =
function (t3) {
if (isNaN(t3)) throw new Error('Invalid argument passed to jsPDF.f2')
return D2(t3, 2)
}),
T2 = (y2.__private__.f3 = function (t3) {
if (isNaN(t3)) throw new Error('Invalid argument passed to jsPDF.f3')
return D2(t3, 3)
}),
U2 =
(y2.scale =
y2.__private__.scale =
function (t3) {
if (isNaN(t3))
throw new Error('Invalid argument passed to jsPDF.scale')
return S2 === x2.COMPAT ? t3 * _t2 : S2 === x2.ADVANCED ? t3 : void 0
}),
z2 = function (t3) {
return S2 === x2.COMPAT ? Rr() - t3 : S2 === x2.ADVANCED ? t3 : void 0
},
H4 = function (t3) {
return U2(z2(t3))
}
y2.__private__.setPrecision = y2.setPrecision = function (t3) {
'number' == typeof parseInt(t3, 10) && (r2 = parseInt(t3, 10))
}
var W2,
V2 = '00000000000000000000000000000000',
G2 = (y2.__private__.getFileId = function () {
return V2
}),
Y2 = (y2.__private__.setFileId = function (t3) {
return (
(V2 =
void 0 !== t3 && /^[a-fA-F0-9]{32}$/.test(t3)
? t3.toUpperCase()
: V2.split('')
.map(function () {
return 'ABCDEF0123456789'.charAt(
Math.floor(16 * Math.random())
)
})
.join('')),
null !== m2 &&
(Ye = new I(
m2.userPermissions,
m2.userPassword,
m2.ownerPassword,
V2
)),
V2
)
})
;(y2.setFileId = function (t3) {
return Y2(t3), this
}),
(y2.getFileId = function () {
return G2()
})
var J2 = (y2.__private__.convertDateToPDFDate = function (t3) {
var e3 = t3.getTimezoneOffset(),
r3 = e3 < 0 ? '+' : '-',
n2 = Math.floor(Math.abs(e3 / 60)),
i3 = Math.abs(e3 % 60),
a2 = [r3, Q2(n2), "'", Q2(i3), "'"].join('')
return [
'D:',
t3.getFullYear(),
Q2(t3.getMonth() + 1),
Q2(t3.getDate()),
Q2(t3.getHours()),
Q2(t3.getMinutes()),
Q2(t3.getSeconds()),
a2,
].join('')
}),
X2 = (y2.__private__.convertPDFDateToDate = function (t3) {
var e3 = parseInt(t3.substr(2, 4), 10),
r3 = parseInt(t3.substr(6, 2), 10) - 1,
n2 = parseInt(t3.substr(8, 2), 10),
i3 = parseInt(t3.substr(10, 2), 10),
a2 = parseInt(t3.substr(12, 2), 10),
o3 = parseInt(t3.substr(14, 2), 10)
return new Date(e3, r3, n2, i3, a2, o3, 0)
}),
K2 = (y2.__private__.setCreationDate = function (t3) {
var e3
if ((void 0 === t3 && (t3 = new Date()), t3 instanceof Date)) e3 = J2(t3)
else {
if (
!/^D:(20[0-2][0-9]|203[0-7]|19[7-9][0-9])(0[0-9]|1[0-2])([0-2][0-9]|3[0-1])(0[0-9]|1[0-9]|2[0-3])(0[0-9]|[1-5][0-9])(0[0-9]|[1-5][0-9])(\+0[0-9]|\+1[0-4]|-0[0-9]|-1[0-1])'(0[0-9]|[1-5][0-9])'?$/.test(
t3
)
)
throw new Error('Invalid argument passed to jsPDF.setCreationDate')
e3 = t3
}
return (W2 = e3)
}),
Z2 = (y2.__private__.getCreationDate = function (t3) {
var e3 = W2
return 'jsDate' === t3 && (e3 = X2(W2)), e3
})
;(y2.setCreationDate = function (t3) {
return K2(t3), this
}),
(y2.getCreationDate = function (t3) {
return Z2(t3)
})
var $2,
Q2 = (y2.__private__.padd2 = function (t3) {
return ('0' + parseInt(t3)).slice(-2)
}),
tt2 = (y2.__private__.padd2Hex = function (t3) {
return ('00' + (t3 = t3.toString())).substr(t3.length)
}),
et2 = 0,
rt2 = [],
nt2 = [],
it2 = 0,
at2 = [],
ot2 = [],
st2 = false,
ct2 = nt2,
ut2 = function () {
;(et2 = 0),
(it2 = 0),
(nt2 = []),
(rt2 = []),
(at2 = []),
(Qt2 = Kt2()),
(te2 = Kt2())
}
y2.__private__.setCustomOutputDestination = function (t3) {
;(st2 = true), (ct2 = t3)
}
var ht2 = function (t3) {
st2 || (ct2 = t3)
}
y2.__private__.resetCustomOutputDestination = function () {
;(st2 = false), (ct2 = nt2)
}
var lt2 = (y2.__private__.out = function (t3) {
return (t3 = t3.toString()), (it2 += t3.length + 1), ct2.push(t3), ct2
}),
ft2 = (y2.__private__.write = function (t3) {
return lt2(
1 === arguments.length
? t3.toString()
: Array.prototype.join.call(arguments, ' ')
)
}),
dt2 = (y2.__private__.getArrayBuffer = function (t3) {
for (
var e3 = t3.length, r3 = new ArrayBuffer(e3), n2 = new Uint8Array(r3);
e3--;
)
n2[e3] = t3.charCodeAt(e3)
return r3
}),
pt3 = [
['Helvetica', 'helvetica', 'normal', 'WinAnsiEncoding'],
['Helvetica-Bold', 'helvetica', 'bold', 'WinAnsiEncoding'],
['Helvetica-Oblique', 'helvetica', 'italic', 'WinAnsiEncoding'],
['Helvetica-BoldOblique', 'helvetica', 'bolditalic', 'WinAnsiEncoding'],
['Courier', 'courier', 'normal', 'WinAnsiEncoding'],
['Courier-Bold', 'courier', 'bold', 'WinAnsiEncoding'],
['Courier-Oblique', 'courier', 'italic', 'WinAnsiEncoding'],
['Courier-BoldOblique', 'courier', 'bolditalic', 'WinAnsiEncoding'],
['Times-Roman', 'times', 'normal', 'WinAnsiEncoding'],
['Times-Bold', 'times', 'bold', 'WinAnsiEncoding'],
['Times-Italic', 'times', 'italic', 'WinAnsiEncoding'],
['Times-BoldItalic', 'times', 'bolditalic', 'WinAnsiEncoding'],
['ZapfDingbats', 'zapfdingbats', 'normal', null],
['Symbol', 'symbol', 'normal', null],
]
y2.__private__.getStandardFonts = function () {
return pt3
}
var gt2 = e2.fontSize || 16
y2.__private__.setFontSize = y2.setFontSize = function (t3) {
return (gt2 = S2 === x2.ADVANCED ? t3 / _t2 : t3), this
}
var mt2,
vt2 =
(y2.__private__.getFontSize =
y2.getFontSize =
function () {
return S2 === x2.COMPAT ? gt2 : gt2 * _t2
}),
bt2 = e2.R2L || false
;(y2.__private__.setR2L = y2.setR2L =
function (t3) {
return (bt2 = t3), this
}),
(y2.__private__.getR2L = y2.getR2L =
function () {
return bt2
})
var yt2,
wt2 = (y2.__private__.setZoomMode = function (t3) {
var e3 = [void 0, null, 'fullwidth', 'fullheight', 'fullpage', 'original']
if (/^(?:\d+\.\d*|\d*\.\d+|\d+)%$/.test(t3)) mt2 = t3
else if (isNaN(t3)) {
if (-1 === e3.indexOf(t3))
throw new Error(
'zoom must be Integer (e.g. 2), a percentage Value (e.g. 300%) or fullwidth, fullheight, fullpage, original. "' +
t3 +
'" is not recognized.'
)
mt2 = t3
} else mt2 = parseInt(t3, 10)
})
y2.__private__.getZoomMode = function () {
return mt2
}
var Nt2,
Lt2 = (y2.__private__.setPageMode = function (t3) {
if (
-1 ==
[
void 0,
null,
'UseNone',
'UseOutlines',
'UseThumbs',
'FullScreen',
].indexOf(t3)
)
throw new Error(
'Page mode must be one of UseNone, UseOutlines, UseThumbs, or FullScreen. "' +
t3 +
'" is not recognized.'
)
yt2 = t3
})
y2.__private__.getPageMode = function () {
return yt2
}
var At2 = (y2.__private__.setLayoutMode = function (t3) {
if (
-1 ==
[
void 0,
null,
'continuous',
'single',
'twoleft',
'tworight',
'two',
].indexOf(t3)
)
throw new Error(
'Layout mode must be one of continuous, single, twoleft, tworight. "' +
t3 +
'" is not recognized.'
)
Nt2 = t3
})
;(y2.__private__.getLayoutMode = function () {
return Nt2
}),
(y2.__private__.setDisplayMode = y2.setDisplayMode =
function (t3, e3, r3) {
return wt2(t3), At2(e3), Lt2(r3), this
})
var xt2 = { title: '', subject: '', author: '', keywords: '', creator: '' }
;(y2.__private__.getDocumentProperty = function (t3) {
if (-1 === Object.keys(xt2).indexOf(t3))
throw new Error('Invalid argument passed to jsPDF.getDocumentProperty')
return xt2[t3]
}),
(y2.__private__.getDocumentProperties = function () {
return xt2
}),
(y2.__private__.setDocumentProperties =
y2.setProperties =
y2.setDocumentProperties =
function (t3) {
for (var e3 in xt2)
xt2.hasOwnProperty(e3) && t3[e3] && (xt2[e3] = t3[e3])
return this
}),
(y2.__private__.setDocumentProperty = function (t3, e3) {
if (-1 === Object.keys(xt2).indexOf(t3))
throw new Error('Invalid arguments passed to jsPDF.setDocumentProperty')
return (xt2[t3] = e3)
})
var St,
_t2,
Pt2,
kt2,
It2,
Ft2 = {},
Ct2 = {},
jt2 = [],
Ot2 = {},
Bt2 = {},
Mt2 = {},
Et2 = {},
qt2 = null,
Dt2 = 0,
Rt2 = [],
Tt2 = new C(y2),
Ut2 = e2.hotfixes || [],
zt2 = {},
Ht2 = {},
Wt2 = [],
Vt2 = function t3(e3, r3, n2, i3, a2, o3) {
if (!(this instanceof t3)) return new t3(e3, r3, n2, i3, a2, o3)
isNaN(e3) && (e3 = 1),
isNaN(r3) && (r3 = 0),
isNaN(n2) && (n2 = 0),
isNaN(i3) && (i3 = 1),
isNaN(a2) && (a2 = 0),
isNaN(o3) && (o3 = 0),
(this._matrix = [e3, r3, n2, i3, a2, o3])
}
Object.defineProperty(Vt2.prototype, 'sx', {
get: function () {
return this._matrix[0]
},
set: function (t3) {
this._matrix[0] = t3
},
}),
Object.defineProperty(Vt2.prototype, 'shy', {
get: function () {
return this._matrix[1]
},
set: function (t3) {
this._matrix[1] = t3
},
}),
Object.defineProperty(Vt2.prototype, 'shx', {
get: function () {
return this._matrix[2]
},
set: function (t3) {
this._matrix[2] = t3
},
}),
Object.defineProperty(Vt2.prototype, 'sy', {
get: function () {
return this._matrix[3]
},
set: function (t3) {
this._matrix[3] = t3
},
}),
Object.defineProperty(Vt2.prototype, 'tx', {
get: function () {
return this._matrix[4]
},
set: function (t3) {
this._matrix[4] = t3
},
}),
Object.defineProperty(Vt2.prototype, 'ty', {
get: function () {
return this._matrix[5]
},
set: function (t3) {
this._matrix[5] = t3
},
}),
Object.defineProperty(Vt2.prototype, 'a', {
get: function () {
return this._matrix[0]
},
set: function (t3) {
this._matrix[0] = t3
},
}),
Object.defineProperty(Vt2.prototype, 'b', {
get: function () {
return this._matrix[1]
},
set: function (t3) {
this._matrix[1] = t3
},
}),
Object.defineProperty(Vt2.prototype, 'c', {
get: function () {
return this._matrix[2]
},
set: function (t3) {
this._matrix[2] = t3
},
}),
Object.defineProperty(Vt2.prototype, 'd', {
get: function () {
return this._matrix[3]
},
set: function (t3) {
this._matrix[3] = t3
},
}),
Object.defineProperty(Vt2.prototype, 'e', {
get: function () {
return this._matrix[4]
},
set: function (t3) {
this._matrix[4] = t3
},
}),
Object.defineProperty(Vt2.prototype, 'f', {
get: function () {
return this._matrix[5]
},
set: function (t3) {
this._matrix[5] = t3
},
}),
Object.defineProperty(Vt2.prototype, 'rotation', {
get: function () {
return Math.atan2(this.shx, this.sx)
},
}),
Object.defineProperty(Vt2.prototype, 'scaleX', {
get: function () {
return this.decompose().scale.sx
},
}),
Object.defineProperty(Vt2.prototype, 'scaleY', {
get: function () {
return this.decompose().scale.sy
},
}),
Object.defineProperty(Vt2.prototype, 'isIdentity', {
get: function () {
return (
1 === this.sx &&
0 === this.shy &&
0 === this.shx &&
1 === this.sy &&
0 === this.tx &&
0 === this.ty
)
},
}),
(Vt2.prototype.join = function (t3) {
return [this.sx, this.shy, this.shx, this.sy, this.tx, this.ty]
.map(O2)
.join(t3)
}),
(Vt2.prototype.multiply = function (t3) {
var e3 = t3.sx * this.sx + t3.shy * this.shx,
r3 = t3.sx * this.shy + t3.shy * this.sy,
n2 = t3.shx * this.sx + t3.sy * this.shx,
i3 = t3.shx * this.shy + t3.sy * this.sy,
a2 = t3.tx * this.sx + t3.ty * this.shx + this.tx,
o3 = t3.tx * this.shy + t3.ty * this.sy + this.ty
return new Vt2(e3, r3, n2, i3, a2, o3)
}),
(Vt2.prototype.decompose = function () {
var t3 = this.sx,
e3 = this.shy,
r3 = this.shx,
n2 = this.sy,
i3 = this.tx,
a2 = this.ty,
o3 = Math.sqrt(t3 * t3 + e3 * e3),
s3 = (t3 /= o3) * r3 + (e3 /= o3) * n2
;(r3 -= t3 * s3), (n2 -= e3 * s3)
var c3 = Math.sqrt(r3 * r3 + n2 * n2)
return (
(s3 /= c3),
t3 * (n2 /= c3) < e3 * (r3 /= c3) &&
((t3 = -t3), (e3 = -e3), (s3 = -s3), (o3 = -o3)),
{
scale: new Vt2(o3, 0, 0, c3, 0, 0),
translate: new Vt2(1, 0, 0, 1, i3, a2),
rotate: new Vt2(t3, e3, -e3, t3, 0, 0),
skew: new Vt2(1, 0, s3, 1, 0, 0),
}
)
}),
(Vt2.prototype.toString = function (t3) {
return this.join(' ')
}),
(Vt2.prototype.inversed = function () {
var t3 = this.sx,
e3 = this.shy,
r3 = this.shx,
n2 = this.sy,
i3 = this.tx,
a2 = this.ty,
o3 = 1 / (t3 * n2 - e3 * r3),
s3 = n2 * o3,
c3 = -e3 * o3,
u3 = -r3 * o3,
h2 = t3 * o3
return new Vt2(s3, c3, u3, h2, -s3 * i3 - u3 * a2, -c3 * i3 - h2 * a2)
}),
(Vt2.prototype.applyToPoint = function (t3) {
var e3 = t3.x * this.sx + t3.y * this.shx + this.tx,
r3 = t3.x * this.shy + t3.y * this.sy + this.ty
return new Cr(e3, r3)
}),
(Vt2.prototype.applyToRectangle = function (t3) {
var e3 = this.applyToPoint(t3),
r3 = this.applyToPoint(new Cr(t3.x + t3.w, t3.y + t3.h))
return new jr(e3.x, e3.y, r3.x - e3.x, r3.y - e3.y)
}),
(Vt2.prototype.clone = function () {
var t3 = this.sx,
e3 = this.shy,
r3 = this.shx,
n2 = this.sy,
i3 = this.tx,
a2 = this.ty
return new Vt2(t3, e3, r3, n2, i3, a2)
}),
(y2.Matrix = Vt2)
var Gt2 = (y2.matrixMult = function (t3, e3) {
return e3.multiply(t3)
}),
Yt2 = new Vt2(1, 0, 0, 1, 0, 0)
y2.unitMatrix = y2.identityMatrix = Yt2
var Jt2 = function (t3, e3) {
if (!Bt2[t3]) {
var r3 =
(e3 instanceof B ? 'Sh' : 'P') +
(Object.keys(Ot2).length + 1).toString(10)
;(e3.id = r3),
(Bt2[t3] = r3),
(Ot2[r3] = e3),
Tt2.publish('addPattern', e3)
}
}
;(y2.ShadingPattern = B),
(y2.TilingPattern = M),
(y2.addShadingPattern = function (t3, e3) {
return q2('addShadingPattern()'), Jt2(t3, e3), this
}),
(y2.beginTilingPattern = function (t3) {
q2('beginTilingPattern()'),
Br(
t3.boundingBox[0],
t3.boundingBox[1],
t3.boundingBox[2] - t3.boundingBox[0],
t3.boundingBox[3] - t3.boundingBox[1],
t3.matrix
)
}),
(y2.endTilingPattern = function (t3, e3) {
q2('endTilingPattern()'),
(e3.stream = ot2[$2].join('\n')),
Jt2(t3, e3),
Tt2.publish('endTilingPattern', e3),
Wt2.pop().restore()
})
var Xt2 = (y2.__private__.newObject = function () {
var t3 = Kt2()
return Zt2(t3, true), t3
}),
Kt2 = (y2.__private__.newObjectDeferred = function () {
return (
et2++,
(rt2[et2] = function () {
return it2
}),
et2
)
}),
Zt2 = function (t3, e3) {
return (
(e3 = 'boolean' == typeof e3 && e3),
(rt2[t3] = it2),
e3 && lt2(t3 + ' 0 obj'),
t3
)
},
$t2 = (y2.__private__.newAdditionalObject = function () {
var t3 = { objId: Kt2(), content: '' }
return at2.push(t3), t3
}),
Qt2 = Kt2(),
te2 = Kt2(),
ee2 = (y2.__private__.decodeColorString = function (t3) {
var e3 = t3.split(' ')
if (2 !== e3.length || ('g' !== e3[1] && 'G' !== e3[1])) {
if (5 === e3.length && ('k' === e3[4] || 'K' === e3[4])) {
e3 = [
(1 - e3[0]) * (1 - e3[3]),
(1 - e3[1]) * (1 - e3[3]),
(1 - e3[2]) * (1 - e3[3]),
'r',
]
}
} else {
var r3 = parseFloat(e3[0])
e3 = [r3, r3, r3, 'r']
}
for (var n2 = '#', i3 = 0; i3 < 3; i3++)
n2 += ('0' + Math.floor(255 * parseFloat(e3[i3])).toString(16)).slice(
-2
)
return n2
}),
re2 = (y2.__private__.encodeColorString = function (e3) {
var r3
'string' == typeof e3 && (e3 = { ch1: e3 })
var n2 = e3.ch1,
i3 = e3.ch2,
a2 = e3.ch3,
o3 = e3.ch4,
s3 = 'draw' === e3.pdfColorType ? ['G', 'RG', 'K'] : ['g', 'rg', 'k']
if ('string' == typeof n2 && '#' !== n2.charAt(0)) {
var c3 = new f$2(n2)
if (c3.ok) n2 = c3.toHex()
else if (!/^\d*\.?\d*$/.test(n2))
throw new Error(
'Invalid color "' + n2 + '" passed to jsPDF.encodeColorString.'
)
}
if (
('string' == typeof n2 &&
/^#[0-9A-Fa-f]{3}$/.test(n2) &&
(n2 = '#' + n2[1] + n2[1] + n2[2] + n2[2] + n2[3] + n2[3]),
'string' == typeof n2 && /^#[0-9A-Fa-f]{6}$/.test(n2))
) {
var u3 = parseInt(n2.substr(1), 16)
;(n2 = (u3 >> 16) & 255), (i3 = (u3 >> 8) & 255), (a2 = 255 & u3)
}
if (void 0 === i3 || (void 0 === o3 && n2 === i3 && i3 === a2))
if ('string' == typeof n2) r3 = n2 + ' ' + s3[0]
else
switch (e3.precision) {
case 2:
r3 = R2(n2 / 255) + ' ' + s3[0]
break
case 3:
default:
r3 = T2(n2 / 255) + ' ' + s3[0]
}
else if (void 0 === o3 || 'object' === _typeof$3(o3)) {
if (o3 && !isNaN(o3.a) && 0 === o3.a)
return (r3 = ['1.', '1.', '1.', s3[1]].join(' '))
if ('string' == typeof n2) r3 = [n2, i3, a2, s3[1]].join(' ')
else
switch (e3.precision) {
case 2:
r3 = [R2(n2 / 255), R2(i3 / 255), R2(a2 / 255), s3[1]].join(' ')
break
default:
case 3:
r3 = [T2(n2 / 255), T2(i3 / 255), T2(a2 / 255), s3[1]].join(' ')
}
} else if ('string' == typeof n2) r3 = [n2, i3, a2, o3, s3[2]].join(' ')
else
switch (e3.precision) {
case 2:
r3 = [R2(n2), R2(i3), R2(a2), R2(o3), s3[2]].join(' ')
break
case 3:
default:
r3 = [T2(n2), T2(i3), T2(a2), T2(o3), s3[2]].join(' ')
}
return r3
}),
ne2 = (y2.__private__.getFilters = function () {
return u2
}),
ie2 = (y2.__private__.putStream = function (t3) {
var e3 = (t3 = t3 || {}).data || '',
r3 = t3.filters || ne2(),
n2 = t3.alreadyAppliedFilters || [],
i3 = t3.addLength1 || false,
a2 = e3.length,
o3 = t3.objectId,
s3 = function (t4) {
return t4
}
if (null !== m2 && void 0 === o3)
throw new Error(
'ObjectId must be passed to putStream for file encryption'
)
null !== m2 && (s3 = Ye.encryptor(o3, 0))
var c3 = {}
true === r3 && (r3 = ['FlateEncode'])
var u3 = t3.additionalKeyValues || [],
h2 =
(c3 =
void 0 !== E$1.API.processDataByFilters
? E$1.API.processDataByFilters(e3, r3)
: { data: e3, reverseChain: [] }).reverseChain +
(Array.isArray(n2) ? n2.join(' ') : n2.toString())
if (
(0 !== c3.data.length &&
(u3.push({ key: 'Length', value: c3.data.length }),
true === i3 && u3.push({ key: 'Length1', value: a2 })),
0 != h2.length)
)
if (h2.split('/').length - 1 == 1) u3.push({ key: 'Filter', value: h2 })
else {
u3.push({ key: 'Filter', value: '[' + h2 + ']' })
for (var l2 = 0; l2 < u3.length; l2 += 1)
if ('DecodeParms' === u3[l2].key) {
for (
var f2 = [], d4 = 0;
d4 < c3.reverseChain.split('/').length - 1;
d4 += 1
)
f2.push('null')
f2.push(u3[l2].value), (u3[l2].value = '[' + f2.join(' ') + ']')
}
}
lt2('<<')
for (var p3 = 0; p3 < u3.length; p3++)
lt2('/' + u3[p3].key + ' ' + u3[p3].value)
lt2('>>'),
0 !== c3.data.length &&
(lt2('stream'), lt2(s3(c3.data)), lt2('endstream'))
}),
ae2 = (y2.__private__.putPage = function (t3) {
var e3 = t3.number,
r3 = t3.data,
n2 = t3.objId,
i3 = t3.contentsObjId
Zt2(n2, true),
lt2('<>'),
lt2('endobj')
var a2 = r3.join('\n')
return (
S2 === x2.ADVANCED && (a2 += '\nQ'),
Zt2(i3, true),
ie2({ data: a2, filters: ne2(), objectId: i3 }),
lt2('endobj'),
n2
)
}),
oe2 = (y2.__private__.putPages = function () {
var t3,
e3,
r3 = []
for (t3 = 1; t3 <= Dt2; t3++)
(Rt2[t3].objId = Kt2()), (Rt2[t3].contentsObjId = Kt2())
for (t3 = 1; t3 <= Dt2; t3++)
r3.push(
ae2({
number: t3,
data: ot2[t3],
objId: Rt2[t3].objId,
contentsObjId: Rt2[t3].contentsObjId,
mediaBox: Rt2[t3].mediaBox,
cropBox: Rt2[t3].cropBox,
bleedBox: Rt2[t3].bleedBox,
trimBox: Rt2[t3].trimBox,
artBox: Rt2[t3].artBox,
userUnit: Rt2[t3].userUnit,
rootDictionaryObjId: Qt2,
resourceDictionaryObjId: te2,
})
)
Zt2(Qt2, true), lt2('<>'),
lt2('endobj'),
Tt2.publish('postPutPages')
}),
se2 = function (t3) {
Tt2.publish('putFont', {
font: t3,
out: lt2,
newObject: Xt2,
putStream: ie2,
}),
true !== t3.isAlreadyPutted &&
((t3.objectNumber = Xt2()),
lt2('<<'),
lt2('/Type /Font'),
lt2('/BaseFont /' + F$1(t3.postScriptName)),
lt2('/Subtype /Type1'),
'string' == typeof t3.encoding && lt2('/Encoding /' + t3.encoding),
lt2('/FirstChar 32'),
lt2('/LastChar 255'),
lt2('>>'),
lt2('endobj'))
},
ce2 = function () {
for (var t3 in Ft2)
Ft2.hasOwnProperty(t3) &&
(false === v4 || (true === v4 && b2.hasOwnProperty(t3))) &&
se2(Ft2[t3])
},
ue2 = function (t3) {
t3.objectNumber = Xt2()
var e3 = []
e3.push({ key: 'Type', value: '/XObject' }),
e3.push({ key: 'Subtype', value: '/Form' }),
e3.push({
key: 'BBox',
value:
'[' +
[
O2(t3.x),
O2(t3.y),
O2(t3.x + t3.width),
O2(t3.y + t3.height),
].join(' ') +
']',
}),
e3.push({ key: 'Matrix', value: '[' + t3.matrix.toString() + ']' })
var r3 = t3.pages[1].join('\n')
ie2({ data: r3, additionalKeyValues: e3, objectId: t3.objectNumber }),
lt2('endobj')
},
he2 = function () {
for (var t3 in zt2) zt2.hasOwnProperty(t3) && ue2(zt2[t3])
},
le2 = function (t3, e3) {
var r3,
n2 = [],
i3 = 1 / (e3 - 1)
for (r3 = 0; r3 < 1; r3 += i3) n2.push(r3)
if ((n2.push(1), 0 != t3[0].offset)) {
var a2 = { offset: 0, color: t3[0].color }
t3.unshift(a2)
}
if (1 != t3[t3.length - 1].offset) {
var o3 = { offset: 1, color: t3[t3.length - 1].color }
t3.push(o3)
}
for (var s3 = '', c3 = 0, u3 = 0; u3 < n2.length; u3++) {
for (r3 = n2[u3]; r3 > t3[c3 + 1].offset; ) c3++
var h2 = t3[c3].offset,
l2 = (r3 - h2) / (t3[c3 + 1].offset - h2),
f2 = t3[c3].color,
d4 = t3[c3 + 1].color
s3 +=
tt2(Math.round((1 - l2) * f2[0] + l2 * d4[0]).toString(16)) +
tt2(Math.round((1 - l2) * f2[1] + l2 * d4[1]).toString(16)) +
tt2(Math.round((1 - l2) * f2[2] + l2 * d4[2]).toString(16))
}
return s3.trim()
},
fe2 = function (t3, e3) {
e3 || (e3 = 21)
var r3 = Xt2(),
n2 = le2(t3.colors, e3),
i3 = []
i3.push({ key: 'FunctionType', value: '0' }),
i3.push({ key: 'Domain', value: '[0.0 1.0]' }),
i3.push({ key: 'Size', value: '[' + e3 + ']' }),
i3.push({ key: 'BitsPerSample', value: '8' }),
i3.push({ key: 'Range', value: '[0.0 1.0 0.0 1.0 0.0 1.0]' }),
i3.push({ key: 'Decode', value: '[0.0 1.0 0.0 1.0 0.0 1.0]' }),
ie2({
data: n2,
additionalKeyValues: i3,
alreadyAppliedFilters: ['/ASCIIHexDecode'],
objectId: r3,
}),
lt2('endobj'),
(t3.objectNumber = Xt2()),
lt2('<< /ShadingType ' + t3.type),
lt2('/ColorSpace /DeviceRGB')
var a2 =
'/Coords [' +
O2(parseFloat(t3.coords[0])) +
' ' +
O2(parseFloat(t3.coords[1])) +
' '
2 === t3.type
? (a2 +=
O2(parseFloat(t3.coords[2])) + ' ' + O2(parseFloat(t3.coords[3])))
: (a2 +=
O2(parseFloat(t3.coords[2])) +
' ' +
O2(parseFloat(t3.coords[3])) +
' ' +
O2(parseFloat(t3.coords[4])) +
' ' +
O2(parseFloat(t3.coords[5]))),
lt2((a2 += ']')),
t3.matrix && lt2('/Matrix [' + t3.matrix.toString() + ']'),
lt2('/Function ' + r3 + ' 0 R'),
lt2('/Extend [true true]'),
lt2('>>'),
lt2('endobj')
},
de2 = function (t3, e3) {
var r3 = Kt2(),
n2 = Xt2()
e3.push({ resourcesOid: r3, objectOid: n2 }), (t3.objectNumber = n2)
var i3 = []
i3.push({ key: 'Type', value: '/Pattern' }),
i3.push({ key: 'PatternType', value: '1' }),
i3.push({ key: 'PaintType', value: '1' }),
i3.push({ key: 'TilingType', value: '1' }),
i3.push({
key: 'BBox',
value: '[' + t3.boundingBox.map(O2).join(' ') + ']',
}),
i3.push({ key: 'XStep', value: O2(t3.xStep) }),
i3.push({ key: 'YStep', value: O2(t3.yStep) }),
i3.push({ key: 'Resources', value: r3 + ' 0 R' }),
t3.matrix &&
i3.push({ key: 'Matrix', value: '[' + t3.matrix.toString() + ']' }),
ie2({
data: t3.stream,
additionalKeyValues: i3,
objectId: t3.objectNumber,
}),
lt2('endobj')
},
pe2 = function (t3) {
var e3
for (e3 in Ot2)
Ot2.hasOwnProperty(e3) &&
(Ot2[e3] instanceof B
? fe2(Ot2[e3])
: Ot2[e3] instanceof M && de2(Ot2[e3], t3))
},
ge2 = function (t3) {
for (var e3 in ((t3.objectNumber = Xt2()), lt2('<<'), t3))
switch (e3) {
case 'opacity':
lt2('/ca ' + R2(t3[e3]))
break
case 'stroke-opacity':
lt2('/CA ' + R2(t3[e3]))
}
lt2('>>'), lt2('endobj')
},
me2 = function () {
var t3
for (t3 in Mt2) Mt2.hasOwnProperty(t3) && ge2(Mt2[t3])
},
ve2 = function () {
for (var t3 in (lt2('/XObject <<'), zt2))
zt2.hasOwnProperty(t3) &&
zt2[t3].objectNumber >= 0 &&
lt2('/' + t3 + ' ' + zt2[t3].objectNumber + ' 0 R')
Tt2.publish('putXobjectDict'), lt2('>>')
},
be2 = function () {
;(Ye.oid = Xt2()),
lt2('<<'),
lt2('/Filter /Standard'),
lt2('/V ' + Ye.v),
lt2('/R ' + Ye.r),
lt2('/U <' + Ye.toHexString(Ye.U) + '>'),
lt2('/O <' + Ye.toHexString(Ye.O) + '>'),
lt2('/P ' + Ye.P),
lt2('>>'),
lt2('endobj')
},
ye2 = function () {
for (var t3 in (lt2('/Font <<'), Ft2))
Ft2.hasOwnProperty(t3) &&
(false === v4 || (true === v4 && b2.hasOwnProperty(t3))) &&
lt2('/' + t3 + ' ' + Ft2[t3].objectNumber + ' 0 R')
lt2('>>')
},
we2 = function () {
if (Object.keys(Ot2).length > 0) {
for (var t3 in (lt2('/Shading <<'), Ot2))
Ot2.hasOwnProperty(t3) &&
Ot2[t3] instanceof B &&
Ot2[t3].objectNumber >= 0 &&
lt2('/' + t3 + ' ' + Ot2[t3].objectNumber + ' 0 R')
Tt2.publish('putShadingPatternDict'), lt2('>>')
}
},
Ne2 = function (t3) {
if (Object.keys(Ot2).length > 0) {
for (var e3 in (lt2('/Pattern <<'), Ot2))
Ot2.hasOwnProperty(e3) &&
Ot2[e3] instanceof y2.TilingPattern &&
Ot2[e3].objectNumber >= 0 &&
Ot2[e3].objectNumber < t3 &&
lt2('/' + e3 + ' ' + Ot2[e3].objectNumber + ' 0 R')
Tt2.publish('putTilingPatternDict'), lt2('>>')
}
},
Le2 = function () {
if (Object.keys(Mt2).length > 0) {
var t3
for (t3 in (lt2('/ExtGState <<'), Mt2))
Mt2.hasOwnProperty(t3) &&
Mt2[t3].objectNumber >= 0 &&
lt2('/' + t3 + ' ' + Mt2[t3].objectNumber + ' 0 R')
Tt2.publish('putGStateDict'), lt2('>>')
}
},
Ae = function (t3) {
Zt2(t3.resourcesOid, true),
lt2('<<'),
lt2('/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]'),
ye2(),
we2(),
Ne2(t3.objectOid),
Le2(),
ve2(),
lt2('>>'),
lt2('endobj')
},
xe = function () {
var t3 = []
ce2(),
me2(),
he2(),
pe2(t3),
Tt2.publish('putResources'),
t3.forEach(Ae),
Ae({ resourcesOid: te2, objectOid: Number.MAX_SAFE_INTEGER }),
Tt2.publish('postPutResources')
},
Se = function () {
Tt2.publish('putAdditionalObjects')
for (var t3 = 0; t3 < at2.length; t3++) {
var e3 = at2[t3]
Zt2(e3.objId, true), lt2(e3.content), lt2('endobj')
}
Tt2.publish('postPutAdditionalObjects')
},
_e = function (t3) {
;(Ct2[t3.fontName] = Ct2[t3.fontName] || {}),
(Ct2[t3.fontName][t3.fontStyle] = t3.id)
},
Pe = function (t3, e3, r3, n2, i3) {
var a2 = {
id: 'F' + (Object.keys(Ft2).length + 1).toString(10),
postScriptName: t3,
fontName: e3,
fontStyle: r3,
encoding: n2,
isStandardFont: i3 || false,
metadata: {},
}
return (
Tt2.publish('addFont', { font: a2, instance: this }),
(Ft2[a2.id] = a2),
_e(a2),
a2.id
)
},
ke = function (t3) {
for (var e3 = 0, r3 = pt3.length; e3 < r3; e3++) {
var n2 = Pe.call(
this,
t3[e3][0],
t3[e3][1],
t3[e3][2],
pt3[e3][3],
true
)
false === v4 && (b2[n2] = true)
var i3 = t3[e3][0].split('-')
_e({ id: n2, fontName: i3[0], fontStyle: i3[1] || '' })
}
Tt2.publish('addFonts', { fonts: Ft2, dictionary: Ct2 })
},
Ie = function (t3) {
return (
(t3.foo = function () {
try {
return t3.apply(this, arguments)
} catch (t4) {
var e3 = t4.stack || ''
~e3.indexOf(' at ') && (e3 = e3.split(' at ')[1])
var r3 =
'Error in function ' +
e3.split('\n')[0].split('<')[0] +
': ' +
t4.message
if (!n$1.console) throw new Error(r3)
n$1.console.error(r3, t4), n$1.alert && alert(r3)
}
}),
(t3.foo.bar = t3),
t3.foo
)
},
Fe = function (t3, e3) {
var r3, n2, i3, a2, o3, s3, c3, u3, h2
if (
((i3 = (e3 = e3 || {}).sourceEncoding || 'Unicode'),
(o3 = e3.outputEncoding),
(e3.autoencode || o3) &&
Ft2[St].metadata &&
Ft2[St].metadata[i3] &&
Ft2[St].metadata[i3].encoding &&
((a2 = Ft2[St].metadata[i3].encoding),
!o3 && Ft2[St].encoding && (o3 = Ft2[St].encoding),
!o3 && a2.codePages && (o3 = a2.codePages[0]),
'string' == typeof o3 && (o3 = a2[o3]),
o3))
) {
for (c3 = false, s3 = [], r3 = 0, n2 = t3.length; r3 < n2; r3++)
(u3 = o3[t3.charCodeAt(r3)])
? s3.push(String.fromCharCode(u3))
: s3.push(t3[r3]),
s3[r3].charCodeAt(0) >> 8 && (c3 = true)
t3 = s3.join('')
}
for (r3 = t3.length; void 0 === c3 && 0 !== r3; )
t3.charCodeAt(r3 - 1) >> 8 && (c3 = true), r3--
if (!c3) return t3
for (
s3 = e3.noBOM ? [] : [254, 255], r3 = 0, n2 = t3.length;
r3 < n2;
r3++
) {
if ((h2 = (u3 = t3.charCodeAt(r3)) >> 8) >> 8)
throw new Error(
'Character at position ' +
r3 +
" of string '" +
t3 +
"' exceeds 16bits. Cannot be encoded into UCS-2 BE"
)
s3.push(h2), s3.push(u3 - (h2 << 8))
}
return String.fromCharCode.apply(void 0, s3)
},
Ce =
(y2.__private__.pdfEscape =
y2.pdfEscape =
function (t3, e3) {
return Fe(t3, e3)
.replace(/\\/g, '\\\\')
.replace(/\(/g, '\\(')
.replace(/\)/g, '\\)')
}),
je = (y2.__private__.beginPage = function (t3) {
;(ot2[++Dt2] = []),
(Rt2[Dt2] = {
objId: 0,
contentsObjId: 0,
userUnit: Number(d3),
artBox: null,
bleedBox: null,
cropBox: null,
trimBox: null,
mediaBox: {
bottomLeftX: 0,
bottomLeftY: 0,
topRightX: Number(t3[0]),
topRightY: Number(t3[1]),
},
}),
Me(Dt2),
ht2(ot2[$2])
}),
Oe = function (t3, e3) {
var r3, n2, o3
switch (
((i2 = e3 || i2),
'string' == typeof t3 &&
((r3 = A2(t3.toLowerCase())),
Array.isArray(r3) && ((n2 = r3[0]), (o3 = r3[1]))),
Array.isArray(t3) && ((n2 = t3[0] * _t2), (o3 = t3[1] * _t2)),
isNaN(n2) && ((n2 = s2[0]), (o3 = s2[1])),
(n2 > 14400 || o3 > 14400) &&
(a$2.warn(
'A page in a PDF can not be wider or taller than 14400 userUnit. jsPDF limits the width/height to 14400'
),
(n2 = Math.min(14400, n2)),
(o3 = Math.min(14400, o3))),
(s2 = [n2, o3]),
i2.substr(0, 1))
) {
case 'l':
o3 > n2 && (s2 = [o3, n2])
break
case 'p':
n2 > o3 && (s2 = [o3, n2])
}
je(s2),
pr(fr2),
lt2(Lr),
0 !== kr && lt2(kr + ' J'),
0 !== Ir && lt2(Ir + ' j'),
Tt2.publish('addPage', { pageNumber: Dt2 })
},
Be = function (t3) {
t3 > 0 &&
t3 <= Dt2 &&
(ot2.splice(t3, 1),
Rt2.splice(t3, 1),
Dt2--,
$2 > Dt2 && ($2 = Dt2),
this.setPage($2))
},
Me = function (t3) {
t3 > 0 && t3 <= Dt2 && ($2 = t3)
},
Ee =
(y2.__private__.getNumberOfPages =
y2.getNumberOfPages =
function () {
return ot2.length - 1
}),
qe = function (t3, e3, r3) {
var n2,
i3 = void 0
return (
(r3 = r3 || {}),
(t3 = void 0 !== t3 ? t3 : Ft2[St].fontName),
(e3 = void 0 !== e3 ? e3 : Ft2[St].fontStyle),
(n2 = t3.toLowerCase()),
void 0 !== Ct2[n2] && void 0 !== Ct2[n2][e3]
? (i3 = Ct2[n2][e3])
: void 0 !== Ct2[t3] && void 0 !== Ct2[t3][e3]
? (i3 = Ct2[t3][e3])
: false === r3.disableWarning &&
a$2.warn(
"Unable to look up font label for font '" +
t3 +
"', '" +
e3 +
"'. Refer to getFontList() for available fonts."
),
i3 ||
r3.noFallback ||
(null == (i3 = Ct2.times[e3]) && (i3 = Ct2.times.normal)),
i3
)
},
De = (y2.__private__.putInfo = function () {
var t3 = Xt2(),
e3 = function (t4) {
return t4
}
for (var r3 in (null !== m2 && (e3 = Ye.encryptor(t3, 0)),
lt2('<<'),
lt2('/Producer (' + Ce(e3('jsPDF ' + E$1.version)) + ')'),
xt2))
xt2.hasOwnProperty(r3) &&
xt2[r3] &&
lt2(
'/' +
r3.substr(0, 1).toUpperCase() +
r3.substr(1) +
' (' +
Ce(e3(xt2[r3])) +
')'
)
lt2('/CreationDate (' + Ce(e3(W2)) + ')'), lt2('>>'), lt2('endobj')
}),
Re = (y2.__private__.putCatalog = function (t3) {
var e3 = (t3 = t3 || {}).rootDictionaryObjId || Qt2
switch (
(Xt2(),
lt2('<<'),
lt2('/Type /Catalog'),
lt2('/Pages ' + e3 + ' 0 R'),
mt2 || (mt2 = 'fullwidth'),
mt2)
) {
case 'fullwidth':
lt2('/OpenAction [3 0 R /FitH null]')
break
case 'fullheight':
lt2('/OpenAction [3 0 R /FitV null]')
break
case 'fullpage':
lt2('/OpenAction [3 0 R /Fit]')
break
case 'original':
lt2('/OpenAction [3 0 R /XYZ null null 1]')
break
default:
var r3 = '' + mt2
'%' === r3.substr(r3.length - 1) && (mt2 = parseInt(mt2) / 100),
'number' == typeof mt2 &&
lt2('/OpenAction [3 0 R /XYZ null null ' + R2(mt2) + ']')
}
switch ((Nt2 || (Nt2 = 'continuous'), Nt2)) {
case 'continuous':
lt2('/PageLayout /OneColumn')
break
case 'single':
lt2('/PageLayout /SinglePage')
break
case 'two':
case 'twoleft':
lt2('/PageLayout /TwoColumnLeft')
break
case 'tworight':
lt2('/PageLayout /TwoColumnRight')
}
yt2 && lt2('/PageMode /' + yt2),
Tt2.publish('putCatalog'),
lt2('>>'),
lt2('endobj')
}),
Te = (y2.__private__.putTrailer = function () {
lt2('trailer'),
lt2('<<'),
lt2('/Size ' + (et2 + 1)),
lt2('/Root ' + et2 + ' 0 R'),
lt2('/Info ' + (et2 - 1) + ' 0 R'),
null !== m2 && lt2('/Encrypt ' + Ye.oid + ' 0 R'),
lt2('/ID [ <' + V2 + '> <' + V2 + '> ]'),
lt2('>>')
}),
Ue = (y2.__private__.putHeader = function () {
lt2('%PDF-' + w2), lt2('%\xBA\xDF\xAC\xE0')
}),
ze = (y2.__private__.putXRef = function () {
var t3 = '0000000000'
lt2('xref'), lt2('0 ' + (et2 + 1)), lt2('0000000000 65535 f ')
for (var e3 = 1; e3 <= et2; e3++) {
'function' == typeof rt2[e3]
? lt2((t3 + rt2[e3]()).slice(-10) + ' 00000 n ')
: void 0 !== rt2[e3]
? lt2((t3 + rt2[e3]).slice(-10) + ' 00000 n ')
: lt2('0000000000 00000 n ')
}
}),
He = (y2.__private__.buildDocument = function () {
ut2(),
ht2(nt2),
Tt2.publish('buildDocument'),
Ue(),
oe2(),
Se(),
xe(),
null !== m2 && be2(),
De(),
Re()
var t3 = it2
return (
ze(),
Te(),
lt2('startxref'),
lt2('' + t3),
lt2('%%EOF'),
ht2(ot2[$2]),
nt2.join('\n')
)
}),
We = (y2.__private__.getBlob = function (t3) {
return new Blob([dt2(t3)], { type: 'application/pdf' })
}),
Ve =
(y2.output =
y2.__private__.output =
Ie(function (t3, e3) {
switch (
('string' == typeof (e3 = e3 || {})
? (e3 = { filename: e3 })
: (e3.filename = e3.filename || 'generated.pdf'),
t3)
) {
case void 0:
return He()
case 'save':
y2.save(e3.filename)
break
case 'arraybuffer':
return dt2(He())
case 'blob':
return We(He())
case 'bloburi':
case 'bloburl':
if (
void 0 !== n$1.URL &&
'function' == typeof n$1.URL.createObjectURL
)
return (n$1.URL && n$1.URL.createObjectURL(We(He()))) || void 0
a$2.warn(
'bloburl is not supported by your system, because URL.createObjectURL is not supported by your browser.'
)
break
case 'datauristring':
case 'dataurlstring':
var r3 = '',
i3 = He()
try {
r3 = h$1(i3)
} catch (t4) {
r3 = h$1(unescape(encodeURIComponent(i3)))
}
return (
'data:application/pdf;filename=' + e3.filename + ';base64,' + r3
)
case 'pdfobjectnewwindow':
if ('[object Window]' === Object.prototype.toString.call(n$1)) {
var o3 =
'https://cdnjs.cloudflare.com/ajax/libs/pdfobject/2.1.1/pdfobject.min.js',
s3 =
' integrity="sha512-4ze/a9/4jqu+tX9dfOqJYSvyYd5M6qum/3HpCLr+/Jqf0whc37VUbkpNGHR7/8pSnCFw47T1fmIpwBV7UySh3g==" crossorigin="anonymous"'
e3.pdfObjectUrl && ((o3 = e3.pdfObjectUrl), (s3 = ''))
var c3 =
'',
u3 = n$1.open()
return null !== u3 && u3.document.write(c3), u3
}
throw new Error(
'The option pdfobjectnewwindow just works in a browser-environment.'
)
case 'pdfjsnewwindow':
if ('[object Window]' === Object.prototype.toString.call(n$1)) {
var l2 =
'',
f2 = n$1.open()
if (null !== f2) {
f2.document.write(l2)
var d4 = this
f2.document.documentElement.querySelector(
'#pdfViewer'
).onload = function () {
;(f2.document.title = e3.filename),
f2.document.documentElement
.querySelector('#pdfViewer')
.contentWindow.PDFViewerApplication.open(
d4.output('bloburl')
)
}
}
return f2
}
throw new Error(
'The option pdfjsnewwindow just works in a browser-environment.'
)
case 'dataurlnewwindow':
if ('[object Window]' !== Object.prototype.toString.call(n$1))
throw new Error(
'The option dataurlnewwindow just works in a browser-environment.'
)
var p3 =
'',
g3 = n$1.open()
if (
(null !== g3 &&
(g3.document.write(p3), (g3.document.title = e3.filename)),
g3 || 'undefined' == typeof safari)
)
return g3
break
case 'datauri':
case 'dataurl':
return (n$1.document.location.href = this.output(
'datauristring',
e3
))
default:
return null
}
})),
Ge = function (t3) {
return true === Array.isArray(Ut2) && Ut2.indexOf(t3) > -1
}
switch (o2) {
case 'pt':
_t2 = 1
break
case 'mm':
_t2 = 72 / 25.4
break
case 'cm':
_t2 = 72 / 2.54
break
case 'in':
_t2 = 72
break
case 'px':
_t2 = 1 == Ge('px_scaling') ? 0.75 : 96 / 72
break
case 'pc':
case 'em':
_t2 = 12
break
case 'ex':
_t2 = 6
break
default:
if ('number' != typeof o2) throw new Error('Invalid unit: ' + o2)
_t2 = o2
}
var Ye = null
K2(), Y2()
var Je = function (t3) {
return null !== m2
? Ye.encryptor(t3, 0)
: function (t4) {
return t4
}
},
Xe =
(y2.__private__.getPageInfo =
y2.getPageInfo =
function (t3) {
if (isNaN(t3) || t3 % 1 != 0)
throw new Error('Invalid argument passed to jsPDF.getPageInfo')
return { objId: Rt2[t3].objId, pageNumber: t3, pageContext: Rt2[t3] }
}),
Ke = (y2.__private__.getPageInfoByObjId = function (t3) {
if (isNaN(t3) || t3 % 1 != 0)
throw new Error('Invalid argument passed to jsPDF.getPageInfoByObjId')
for (var e3 in Rt2) if (Rt2[e3].objId === t3) break
return Xe(e3)
}),
Ze =
(y2.__private__.getCurrentPageInfo =
y2.getCurrentPageInfo =
function () {
return { objId: Rt2[$2].objId, pageNumber: $2, pageContext: Rt2[$2] }
})
;(y2.addPage = function () {
return Oe.apply(this, arguments), this
}),
(y2.setPage = function () {
return Me.apply(this, arguments), ht2.call(this, ot2[$2]), this
}),
(y2.insertPage = function (t3) {
return this.addPage(), this.movePage($2, t3), this
}),
(y2.movePage = function (t3, e3) {
var r3, n2
if (t3 > e3) {
;(r3 = ot2[t3]), (n2 = Rt2[t3])
for (var i3 = t3; i3 > e3; i3--)
(ot2[i3] = ot2[i3 - 1]), (Rt2[i3] = Rt2[i3 - 1])
;(ot2[e3] = r3), (Rt2[e3] = n2), this.setPage(e3)
} else if (t3 < e3) {
;(r3 = ot2[t3]), (n2 = Rt2[t3])
for (var a2 = t3; a2 < e3; a2++)
(ot2[a2] = ot2[a2 + 1]), (Rt2[a2] = Rt2[a2 + 1])
;(ot2[e3] = r3), (Rt2[e3] = n2), this.setPage(e3)
}
return this
}),
(y2.deletePage = function () {
return Be.apply(this, arguments), this
}),
(y2.__private__.text = y2.text =
function (e3, r3, n2, i3, a2) {
var o3,
s3,
c3,
u3,
h2,
l2,
f2,
d4,
p3,
g3 = (i3 = i3 || {}).scope || this
if (
'number' == typeof e3 &&
'number' == typeof r3 &&
('string' == typeof n2 || Array.isArray(n2))
) {
var m3 = n2
;(n2 = r3), (r3 = e3), (e3 = m3)
}
if (
(arguments[3] instanceof Vt2 == false
? ((c3 = arguments[4]),
(u3 = arguments[5]),
('object' === _typeof$3((f2 = arguments[3])) && null !== f2) ||
('string' == typeof c3 && ((u3 = c3), (c3 = null)),
'string' == typeof f2 && ((u3 = f2), (f2 = null)),
'number' == typeof f2 && ((c3 = f2), (f2 = null)),
(i3 = { flags: f2, angle: c3, align: u3 })))
: (q2('The transform parameter of text() with a Matrix value'),
(p3 = a2)),
isNaN(r3) || isNaN(n2) || null == e3)
)
throw new Error('Invalid arguments passed to jsPDF.text')
if (0 === e3.length) return g3
var v5 = '',
y3 = false,
w3 =
'number' == typeof i3.lineHeightFactor ? i3.lineHeightFactor : lr,
N3 = g3.internal.scaleFactor
function L3(t3) {
return (
(t3 = t3.split(' ').join(Array(i3.TabLen || 9).join(' '))),
Ce(t3, f2)
)
}
function A3(t3) {
for (var e4, r4 = t3.concat(), n3 = [], i4 = r4.length; i4--; )
'string' == typeof (e4 = r4.shift())
? n3.push(e4)
: Array.isArray(t3) &&
(1 === e4.length || (void 0 === e4[1] && void 0 === e4[2]))
? n3.push(e4[0])
: n3.push([e4[0], e4[1], e4[2]])
return n3
}
function _3(t3, e4) {
var r4
if ('string' == typeof t3) r4 = e4(t3)[0]
else if (Array.isArray(t3)) {
for (var n3, i4, a3 = t3.concat(), o4 = [], s4 = a3.length; s4--; )
'string' == typeof (n3 = a3.shift())
? o4.push(e4(n3)[0])
: Array.isArray(n3) &&
'string' == typeof n3[0] &&
((i4 = e4(n3[0], n3[1], n3[2])),
o4.push([i4[0], i4[1], i4[2]]))
r4 = o4
}
return r4
}
var P3 = false,
k3 = true
if ('string' == typeof e3) P3 = true
else if (Array.isArray(e3)) {
var I2 = e3.concat()
s3 = []
for (var F2, C2 = I2.length; C2--; )
('string' != typeof (F2 = I2.shift()) ||
(Array.isArray(F2) && 'string' != typeof F2[0])) &&
(k3 = false)
P3 = k3
}
if (false === P3)
throw new Error(
'Type of text must be string or Array. "' +
e3 +
'" is not recognized.'
)
'string' == typeof e3 &&
(e3 = e3.match(/[\r?\n]/) ? e3.split(/\r\n|\r|\n/g) : [e3])
var j2 = gt2 / g3.internal.scaleFactor,
B3 = j2 * (w3 - 1)
switch (i3.baseline) {
case 'bottom':
n2 -= B3
break
case 'top':
n2 += j2 - B3
break
case 'hanging':
n2 += j2 - 2 * B3
break
case 'middle':
n2 += j2 / 2 - B3
}
if (
((l2 = i3.maxWidth || 0) > 0 &&
('string' == typeof e3
? (e3 = g3.splitTextToSize(e3, l2))
: '[object Array]' === Object.prototype.toString.call(e3) &&
(e3 = e3.reduce(function (t3, e4) {
return t3.concat(g3.splitTextToSize(e4, l2))
}, []))),
(o3 = {
text: e3,
x: r3,
y: n2,
options: i3,
mutex: {
pdfEscape: Ce,
activeFontKey: St,
fonts: Ft2,
activeFontSize: gt2,
},
}),
Tt2.publish('preProcessText', o3),
(e3 = o3.text),
(c3 = (i3 = o3.options).angle),
p3 instanceof Vt2 == false && c3 && 'number' == typeof c3)
) {
;(c3 *= Math.PI / 180),
0 === i3.rotationDirection && (c3 = -c3),
S2 === x2.ADVANCED && (c3 = -c3)
var M2 = Math.cos(c3),
E2 = Math.sin(c3)
p3 = new Vt2(M2, E2, -E2, M2, 0, 0)
} else c3 && c3 instanceof Vt2 && (p3 = c3)
S2 !== x2.ADVANCED || p3 || (p3 = Yt2),
void 0 !== (h2 = i3.charSpace || _r) &&
((v5 += O2(U2(h2)) + ' Tc\n'),
this.setCharSpace(this.getCharSpace() || 0)),
void 0 !== (d4 = i3.horizontalScale) && (v5 += O2(100 * d4) + ' Tz\n')
i3.lang
var D3 = -1,
R3 = void 0 !== i3.renderingMode ? i3.renderingMode : i3.stroke,
T3 = g3.internal.getCurrentPageInfo().pageContext
switch (R3) {
case 0:
case false:
case 'fill':
D3 = 0
break
case 1:
case true:
case 'stroke':
D3 = 1
break
case 2:
case 'fillThenStroke':
D3 = 2
break
case 3:
case 'invisible':
D3 = 3
break
case 4:
case 'fillAndAddForClipping':
D3 = 4
break
case 5:
case 'strokeAndAddPathForClipping':
D3 = 5
break
case 6:
case 'fillThenStrokeAndAddToPathForClipping':
D3 = 6
break
case 7:
case 'addToPathForClipping':
D3 = 7
}
var z3 = void 0 !== T3.usedRenderingMode ? T3.usedRenderingMode : -1
;-1 !== D3 ? (v5 += D3 + ' Tr\n') : -1 !== z3 && (v5 += '0 Tr\n'),
-1 !== D3 && (T3.usedRenderingMode = D3),
(u3 = i3.align || 'left')
var H5,
W3 = gt2 * w3,
V3 = g3.internal.pageSize.getWidth(),
G3 = Ft2[St]
;(h2 = i3.charSpace || _r),
(l2 = i3.maxWidth || 0),
(f2 = Object.assign({ autoencode: true, noBOM: true }, i3.flags))
var Y3 = []
if ('[object Array]' === Object.prototype.toString.call(e3)) {
var J3
;(s3 = A3(e3)),
'left' !== u3 &&
(H5 = s3.map(function (t3) {
return (
(g3.getStringUnitWidth(t3, {
font: G3,
charSpace: h2,
fontSize: gt2,
doKerning: false,
}) *
gt2) /
N3
)
}))
var X3,
K3 = 0
if ('right' === u3) {
;(r3 -= H5[0]), (e3 = []), (C2 = s3.length)
for (var Z3 = 0; Z3 < C2; Z3++)
0 === Z3
? ((X3 = br(r3)), (J3 = yr(n2)))
: ((X3 = U2(K3 - H5[Z3])), (J3 = -W3)),
e3.push([s3[Z3], X3, J3]),
(K3 = H5[Z3])
} else if ('center' === u3) {
;(r3 -= H5[0] / 2), (e3 = []), (C2 = s3.length)
for (var $3 = 0; $3 < C2; $3++)
0 === $3
? ((X3 = br(r3)), (J3 = yr(n2)))
: ((X3 = U2((K3 - H5[$3]) / 2)), (J3 = -W3)),
e3.push([s3[$3], X3, J3]),
(K3 = H5[$3])
} else if ('left' === u3) {
;(e3 = []), (C2 = s3.length)
for (var Q3 = 0; Q3 < C2; Q3++) e3.push(s3[Q3])
} else {
if ('justify' !== u3)
throw new Error(
'Unrecognized alignment option, use "left", "center", "right" or "justify".'
)
;(e3 = []), (C2 = s3.length), (l2 = 0 !== l2 ? l2 : V3)
for (var tt3 = 0; tt3 < C2; tt3++)
(J3 = 0 === tt3 ? yr(n2) : -W3),
(X3 = 0 === tt3 ? br(r3) : 0),
tt3 < C2 - 1
? Y3.push(
O2(U2((l2 - H5[tt3]) / (s3[tt3].split(' ').length - 1)))
)
: Y3.push(0),
e3.push([s3[tt3], X3, J3])
}
}
var et3 = 'boolean' == typeof i3.R2L ? i3.R2L : bt2
true === et3 &&
(e3 = _3(e3, function (t3, e4, r4) {
return [t3.split('').reverse().join(''), e4, r4]
})),
(o3 = {
text: e3,
x: r3,
y: n2,
options: i3,
mutex: {
pdfEscape: Ce,
activeFontKey: St,
fonts: Ft2,
activeFontSize: gt2,
},
}),
Tt2.publish('postProcessText', o3),
(e3 = o3.text),
(y3 = o3.mutex.isHex || false)
var rt3 = Ft2[St].encoding
;('WinAnsiEncoding' !== rt3 && 'StandardEncoding' !== rt3) ||
(e3 = _3(e3, function (t3, e4, r4) {
return [L3(t3), e4, r4]
})),
(s3 = A3(e3)),
(e3 = [])
for (
var nt3,
it3,
at3,
ot3 = 0,
st3 = 1,
ct3 = Array.isArray(s3[0]) ? st3 : ot3,
ut3 = '',
ht3 = function (t3, e4, r4) {
var n3 = ''
return (
r4 instanceof Vt2
? ((r4 =
'number' == typeof i3.angle
? Gt2(r4, new Vt2(1, 0, 0, 1, t3, e4))
: Gt2(new Vt2(1, 0, 0, 1, t3, e4), r4)),
S2 === x2.ADVANCED &&
(r4 = Gt2(new Vt2(1, 0, 0, -1, 0, 0), r4)),
(n3 = r4.join(' ') + ' Tm\n'))
: (n3 = O2(t3) + ' ' + O2(e4) + ' Td\n'),
n3
)
},
ft3 = 0;
ft3 < s3.length;
ft3++
) {
switch (((ut3 = ''), ct3)) {
case st3:
;(at3 = (y3 ? '<' : '(') + s3[ft3][0] + (y3 ? '>' : ')')),
(nt3 = parseFloat(s3[ft3][1])),
(it3 = parseFloat(s3[ft3][2]))
break
case ot3:
;(at3 = (y3 ? '<' : '(') + s3[ft3] + (y3 ? '>' : ')')),
(nt3 = br(r3)),
(it3 = yr(n2))
}
void 0 !== Y3 && void 0 !== Y3[ft3] && (ut3 = Y3[ft3] + ' Tw\n'),
0 === ft3
? e3.push(ut3 + ht3(nt3, it3, p3) + at3)
: ct3 === ot3
? e3.push(ut3 + at3)
: ct3 === st3 && e3.push(ut3 + ht3(nt3, it3, p3) + at3)
}
;(e3 = ct3 === ot3 ? e3.join(' Tj\nT* ') : e3.join(' Tj\n')),
(e3 += ' Tj\n')
var dt3 = 'BT\n/'
return (
(dt3 += St + ' ' + gt2 + ' Tf\n'),
(dt3 += O2(gt2 * w3) + ' TL\n'),
(dt3 += xr + '\n'),
(dt3 += v5),
(dt3 += e3),
lt2((dt3 += 'ET')),
(b2[St] = true),
g3
)
})
var $e =
(y2.__private__.clip =
y2.clip =
function (t3) {
return lt2('evenodd' === t3 ? 'W*' : 'W'), this
})
;(y2.clipEvenOdd = function () {
return $e('evenodd')
}),
(y2.__private__.discardPath = y2.discardPath =
function () {
return lt2('n'), this
})
var Qe = (y2.__private__.isValidStyle = function (t3) {
var e3 = false
return (
-1 !==
[
void 0,
null,
'S',
'D',
'F',
'DF',
'FD',
'f',
'f*',
'B',
'B*',
'n',
].indexOf(t3) && (e3 = true),
e3
)
})
y2.__private__.setDefaultPathOperation = y2.setDefaultPathOperation =
function (t3) {
return Qe(t3) && (g2 = t3), this
}
var tr2 =
(y2.__private__.getStyle =
y2.getStyle =
function (t3) {
var e3 = g2
switch (t3) {
case 'D':
case 'S':
e3 = 'S'
break
case 'F':
e3 = 'f'
break
case 'FD':
case 'DF':
e3 = 'B'
break
case 'f':
case 'f*':
case 'B':
case 'B*':
e3 = t3
}
return e3
}),
er = (y2.close = function () {
return lt2('h'), this
})
;(y2.stroke = function () {
return lt2('S'), this
}),
(y2.fill = function (t3) {
return rr2('f', t3), this
}),
(y2.fillEvenOdd = function (t3) {
return rr2('f*', t3), this
}),
(y2.fillStroke = function (t3) {
return rr2('B', t3), this
}),
(y2.fillStrokeEvenOdd = function (t3) {
return rr2('B*', t3), this
})
var rr2 = function (e3, r3) {
'object' === _typeof$3(r3) ? ar2(r3, e3) : lt2(e3)
},
nr = function (t3) {
null === t3 ||
(S2 === x2.ADVANCED && void 0 === t3) ||
((t3 = tr2(t3)), lt2(t3))
}
function ir(t3, e3, r3, n2, i3) {
var a2 = new M(
e3 || this.boundingBox,
r3 || this.xStep,
n2 || this.yStep,
this.gState,
i3 || this.matrix
)
a2.stream = this.stream
var o3 = t3 + '$$' + this.cloneIndex++ + '$$'
return Jt2(o3, a2), a2
}
var ar2 = function (t3, e3) {
var r3 = Bt2[t3.key],
n2 = Ot2[r3]
if (n2 instanceof B)
lt2('q'),
lt2(or(e3)),
n2.gState && y2.setGState(n2.gState),
lt2(t3.matrix.toString() + ' cm'),
lt2('/' + r3 + ' sh'),
lt2('Q')
else if (n2 instanceof M) {
var i3 = new Vt2(1, 0, 0, -1, 0, Rr())
t3.matrix &&
((i3 = i3.multiply(t3.matrix || Yt2)),
(r3 = ir.call(
n2,
t3.key,
t3.boundingBox,
t3.xStep,
t3.yStep,
i3
).id)),
lt2('q'),
lt2('/Pattern cs'),
lt2('/' + r3 + ' scn'),
n2.gState && y2.setGState(n2.gState),
lt2(e3),
lt2('Q')
}
},
or = function (t3) {
switch (t3) {
case 'f':
case 'F':
return 'W n'
case 'f*':
return 'W* n'
case 'B':
return 'W S'
case 'B*':
return 'W* S'
case 'S':
return 'W S'
case 'n':
return 'W n'
}
},
sr2 = (y2.moveTo = function (t3, e3) {
return lt2(O2(U2(t3)) + ' ' + O2(H4(e3)) + ' m'), this
}),
cr = (y2.lineTo = function (t3, e3) {
return lt2(O2(U2(t3)) + ' ' + O2(H4(e3)) + ' l'), this
}),
ur = (y2.curveTo = function (t3, e3, r3, n2, i3, a2) {
return (
lt2(
[
O2(U2(t3)),
O2(H4(e3)),
O2(U2(r3)),
O2(H4(n2)),
O2(U2(i3)),
O2(H4(a2)),
'c',
].join(' ')
),
this
)
})
;(y2.__private__.line = y2.line =
function (t3, e3, r3, n2, i3) {
if (isNaN(t3) || isNaN(e3) || isNaN(r3) || isNaN(n2) || !Qe(i3))
throw new Error('Invalid arguments passed to jsPDF.line')
return S2 === x2.COMPAT
? this.lines([[r3 - t3, n2 - e3]], t3, e3, [1, 1], i3 || 'S')
: this.lines([[r3 - t3, n2 - e3]], t3, e3, [1, 1]).stroke()
}),
(y2.__private__.lines = y2.lines =
function (t3, e3, r3, n2, i3, a2) {
var o3, s3, c3, u3, h2, l2, f2, d4, p3, g3, m3, v5
if (
('number' == typeof t3 &&
((v5 = r3), (r3 = e3), (e3 = t3), (t3 = v5)),
(n2 = n2 || [1, 1]),
(a2 = a2 || false),
isNaN(e3) ||
isNaN(r3) ||
!Array.isArray(t3) ||
!Array.isArray(n2) ||
!Qe(i3) ||
'boolean' != typeof a2)
)
throw new Error('Invalid arguments passed to jsPDF.lines')
for (
sr2(e3, r3),
o3 = n2[0],
s3 = n2[1],
u3 = t3.length,
g3 = e3,
m3 = r3,
c3 = 0;
c3 < u3;
c3++
)
2 === (h2 = t3[c3]).length
? ((g3 = h2[0] * o3 + g3), (m3 = h2[1] * s3 + m3), cr(g3, m3))
: ((l2 = h2[0] * o3 + g3),
(f2 = h2[1] * s3 + m3),
(d4 = h2[2] * o3 + g3),
(p3 = h2[3] * s3 + m3),
(g3 = h2[4] * o3 + g3),
(m3 = h2[5] * s3 + m3),
ur(l2, f2, d4, p3, g3, m3))
return a2 && er(), nr(i3), this
}),
(y2.path = function (t3) {
for (var e3 = 0; e3 < t3.length; e3++) {
var r3 = t3[e3],
n2 = r3.c
switch (r3.op) {
case 'm':
sr2(n2[0], n2[1])
break
case 'l':
cr(n2[0], n2[1])
break
case 'c':
ur.apply(this, n2)
break
case 'h':
er()
}
}
return this
}),
(y2.__private__.rect = y2.rect =
function (t3, e3, r3, n2, i3) {
if (isNaN(t3) || isNaN(e3) || isNaN(r3) || isNaN(n2) || !Qe(i3))
throw new Error('Invalid arguments passed to jsPDF.rect')
return (
S2 === x2.COMPAT && (n2 = -n2),
lt2([O2(U2(t3)), O2(H4(e3)), O2(U2(r3)), O2(U2(n2)), 're'].join(' ')),
nr(i3),
this
)
}),
(y2.__private__.triangle = y2.triangle =
function (t3, e3, r3, n2, i3, a2, o3) {
if (
isNaN(t3) ||
isNaN(e3) ||
isNaN(r3) ||
isNaN(n2) ||
isNaN(i3) ||
isNaN(a2) ||
!Qe(o3)
)
throw new Error('Invalid arguments passed to jsPDF.triangle')
return (
this.lines(
[
[r3 - t3, n2 - e3],
[i3 - r3, a2 - n2],
[t3 - i3, e3 - a2],
],
t3,
e3,
[1, 1],
o3,
true
),
this
)
}),
(y2.__private__.roundedRect = y2.roundedRect =
function (t3, e3, r3, n2, i3, a2, o3) {
if (
isNaN(t3) ||
isNaN(e3) ||
isNaN(r3) ||
isNaN(n2) ||
isNaN(i3) ||
isNaN(a2) ||
!Qe(o3)
)
throw new Error('Invalid arguments passed to jsPDF.roundedRect')
var s3 = (4 / 3) * (Math.SQRT2 - 1)
return (
(i3 = Math.min(i3, 0.5 * r3)),
(a2 = Math.min(a2, 0.5 * n2)),
this.lines(
[
[r3 - 2 * i3, 0],
[i3 * s3, 0, i3, a2 - a2 * s3, i3, a2],
[0, n2 - 2 * a2],
[0, a2 * s3, -i3 * s3, a2, -i3, a2],
[2 * i3 - r3, 0],
[-i3 * s3, 0, -i3, -a2 * s3, -i3, -a2],
[0, 2 * a2 - n2],
[0, -a2 * s3, i3 * s3, -a2, i3, -a2],
],
t3 + i3,
e3,
[1, 1],
o3,
true
),
this
)
}),
(y2.__private__.ellipse = y2.ellipse =
function (t3, e3, r3, n2, i3) {
if (isNaN(t3) || isNaN(e3) || isNaN(r3) || isNaN(n2) || !Qe(i3))
throw new Error('Invalid arguments passed to jsPDF.ellipse')
var a2 = (4 / 3) * (Math.SQRT2 - 1) * r3,
o3 = (4 / 3) * (Math.SQRT2 - 1) * n2
return (
sr2(t3 + r3, e3),
ur(t3 + r3, e3 - o3, t3 + a2, e3 - n2, t3, e3 - n2),
ur(t3 - a2, e3 - n2, t3 - r3, e3 - o3, t3 - r3, e3),
ur(t3 - r3, e3 + o3, t3 - a2, e3 + n2, t3, e3 + n2),
ur(t3 + a2, e3 + n2, t3 + r3, e3 + o3, t3 + r3, e3),
nr(i3),
this
)
}),
(y2.__private__.circle = y2.circle =
function (t3, e3, r3, n2) {
if (isNaN(t3) || isNaN(e3) || isNaN(r3) || !Qe(n2))
throw new Error('Invalid arguments passed to jsPDF.circle')
return this.ellipse(t3, e3, r3, r3, n2)
}),
(y2.setFont = function (t3, e3, r3) {
return (
r3 && (e3 = k2(e3, r3)),
(St = qe(t3, e3, { disableWarning: false })),
this
)
})
var hr2 =
(y2.__private__.getFont =
y2.getFont =
function () {
return Ft2[qe.apply(y2, arguments)]
})
;(y2.__private__.getFontList = y2.getFontList =
function () {
var t3,
e3,
r3 = {}
for (t3 in Ct2)
if (Ct2.hasOwnProperty(t3))
for (e3 in ((r3[t3] = []), Ct2[t3]))
Ct2[t3].hasOwnProperty(e3) && r3[t3].push(e3)
return r3
}),
(y2.addFont = function (t3, e3, r3, n2, i3) {
var a2 = [
'StandardEncoding',
'MacRomanEncoding',
'Identity-H',
'WinAnsiEncoding',
]
return (
arguments[3] && -1 !== a2.indexOf(arguments[3])
? (i3 = arguments[3])
: arguments[3] && -1 == a2.indexOf(arguments[3]) && (r3 = k2(r3, n2)),
(i3 = i3 || 'Identity-H'),
Pe.call(this, t3, e3, r3, i3)
)
})
var lr,
fr2 = e2.lineWidth || 0.200025,
dr =
(y2.__private__.getLineWidth =
y2.getLineWidth =
function () {
return fr2
}),
pr =
(y2.__private__.setLineWidth =
y2.setLineWidth =
function (t3) {
return (fr2 = t3), lt2(O2(U2(t3)) + ' w'), this
})
y2.__private__.setLineDash =
E$1.API.setLineDash =
E$1.API.setLineDashPattern =
function (t3, e3) {
if (((t3 = t3 || []), (e3 = e3 || 0), isNaN(e3) || !Array.isArray(t3)))
throw new Error('Invalid arguments passed to jsPDF.setLineDash')
return (
(t3 = t3
.map(function (t4) {
return O2(U2(t4))
})
.join(' ')),
(e3 = O2(U2(e3))),
lt2('[' + t3 + '] ' + e3 + ' d'),
this
)
}
var gr =
(y2.__private__.getLineHeight =
y2.getLineHeight =
function () {
return gt2 * lr
})
y2.__private__.getLineHeight = y2.getLineHeight = function () {
return gt2 * lr
}
var mr =
(y2.__private__.setLineHeightFactor =
y2.setLineHeightFactor =
function (t3) {
return 'number' == typeof (t3 = t3 || 1.15) && (lr = t3), this
}),
vr =
(y2.__private__.getLineHeightFactor =
y2.getLineHeightFactor =
function () {
return lr
})
mr(e2.lineHeight)
var br = (y2.__private__.getHorizontalCoordinate = function (t3) {
return U2(t3)
}),
yr = (y2.__private__.getVerticalCoordinate = function (t3) {
return S2 === x2.ADVANCED
? t3
: Rt2[$2].mediaBox.topRightY - Rt2[$2].mediaBox.bottomLeftY - U2(t3)
}),
wr =
(y2.__private__.getHorizontalCoordinateString =
y2.getHorizontalCoordinateString =
function (t3) {
return O2(br(t3))
}),
Nr =
(y2.__private__.getVerticalCoordinateString =
y2.getVerticalCoordinateString =
function (t3) {
return O2(yr(t3))
}),
Lr = e2.strokeColor || '0 G'
;(y2.__private__.getStrokeColor = y2.getDrawColor =
function () {
return ee2(Lr)
}),
(y2.__private__.setStrokeColor = y2.setDrawColor =
function (t3, e3, r3, n2) {
return (
(Lr = re2({
ch1: t3,
ch2: e3,
ch3: r3,
ch4: n2,
pdfColorType: 'draw',
precision: 2,
})),
lt2(Lr),
this
)
})
var Ar = e2.fillColor || '0 g'
;(y2.__private__.getFillColor = y2.getFillColor =
function () {
return ee2(Ar)
}),
(y2.__private__.setFillColor = y2.setFillColor =
function (t3, e3, r3, n2) {
return (
(Ar = re2({
ch1: t3,
ch2: e3,
ch3: r3,
ch4: n2,
pdfColorType: 'fill',
precision: 2,
})),
lt2(Ar),
this
)
})
var xr = e2.textColor || '0 g',
Sr =
(y2.__private__.getTextColor =
y2.getTextColor =
function () {
return ee2(xr)
})
y2.__private__.setTextColor = y2.setTextColor = function (t3, e3, r3, n2) {
return (
(xr = re2({
ch1: t3,
ch2: e3,
ch3: r3,
ch4: n2,
pdfColorType: 'text',
precision: 3,
})),
this
)
}
var _r = e2.charSpace,
Pr =
(y2.__private__.getCharSpace =
y2.getCharSpace =
function () {
return parseFloat(_r || 0)
})
y2.__private__.setCharSpace = y2.setCharSpace = function (t3) {
if (isNaN(t3))
throw new Error('Invalid argument passed to jsPDF.setCharSpace')
return (_r = t3), this
}
var kr = 0
;(y2.CapJoinStyles = {
0: 0,
butt: 0,
but: 0,
miter: 0,
1: 1,
round: 1,
rounded: 1,
circle: 1,
2: 2,
projecting: 2,
project: 2,
square: 2,
bevel: 2,
}),
(y2.__private__.setLineCap = y2.setLineCap =
function (t3) {
var e3 = y2.CapJoinStyles[t3]
if (void 0 === e3)
throw new Error(
"Line cap style of '" +
t3 +
"' is not recognized. See or extend .CapJoinStyles property for valid styles"
)
return (kr = e3), lt2(e3 + ' J'), this
})
var Ir = 0
;(y2.__private__.setLineJoin = y2.setLineJoin =
function (t3) {
var e3 = y2.CapJoinStyles[t3]
if (void 0 === e3)
throw new Error(
"Line join style of '" +
t3 +
"' is not recognized. See or extend .CapJoinStyles property for valid styles"
)
return (Ir = e3), lt2(e3 + ' j'), this
}),
(y2.__private__.setLineMiterLimit =
y2.__private__.setMiterLimit =
y2.setLineMiterLimit =
y2.setMiterLimit =
function (t3) {
if (((t3 = t3 || 0), isNaN(t3)))
throw new Error(
'Invalid argument passed to jsPDF.setLineMiterLimit'
)
return lt2(O2(U2(t3)) + ' M'), this
}),
(y2.GState = j),
(y2.setGState = function (t3) {
;(t3 = 'string' == typeof t3 ? Mt2[Et2[t3]] : Fr(null, t3)).equals(qt2) ||
(lt2('/' + t3.id + ' gs'), (qt2 = t3))
})
var Fr = function (t3, e3) {
if (!t3 || !Et2[t3]) {
var r3 = false
for (var n2 in Mt2)
if (Mt2.hasOwnProperty(n2) && Mt2[n2].equals(e3)) {
r3 = true
break
}
if (r3) e3 = Mt2[n2]
else {
var i3 = 'GS' + (Object.keys(Mt2).length + 1).toString(10)
;(Mt2[i3] = e3), (e3.id = i3)
}
return t3 && (Et2[t3] = e3.id), Tt2.publish('addGState', e3), e3
}
}
;(y2.addGState = function (t3, e3) {
return Fr(t3, e3), this
}),
(y2.saveGraphicsState = function () {
return lt2('q'), jt2.push({ key: St, size: gt2, color: xr }), this
}),
(y2.restoreGraphicsState = function () {
lt2('Q')
var t3 = jt2.pop()
return (St = t3.key), (gt2 = t3.size), (xr = t3.color), (qt2 = null), this
}),
(y2.setCurrentTransformationMatrix = function (t3) {
return lt2(t3.toString() + ' cm'), this
}),
(y2.comment = function (t3) {
return lt2('#' + t3), this
})
var Cr = function (t3, e3) {
var r3 = t3 || 0
Object.defineProperty(this, 'x', {
enumerable: true,
get: function () {
return r3
},
set: function (t4) {
isNaN(t4) || (r3 = parseFloat(t4))
},
})
var n2 = e3 || 0
Object.defineProperty(this, 'y', {
enumerable: true,
get: function () {
return n2
},
set: function (t4) {
isNaN(t4) || (n2 = parseFloat(t4))
},
})
var i3 = 'pt'
return (
Object.defineProperty(this, 'type', {
enumerable: true,
get: function () {
return i3
},
set: function (t4) {
i3 = t4.toString()
},
}),
this
)
},
jr = function (t3, e3, r3, n2) {
Cr.call(this, t3, e3), (this.type = 'rect')
var i3 = r3 || 0
Object.defineProperty(this, 'w', {
enumerable: true,
get: function () {
return i3
},
set: function (t4) {
isNaN(t4) || (i3 = parseFloat(t4))
},
})
var a2 = n2 || 0
return (
Object.defineProperty(this, 'h', {
enumerable: true,
get: function () {
return a2
},
set: function (t4) {
isNaN(t4) || (a2 = parseFloat(t4))
},
}),
this
)
},
Or = function () {
;(this.page = Dt2),
(this.currentPage = $2),
(this.pages = ot2.slice(0)),
(this.pagesContext = Rt2.slice(0)),
(this.x = Pt2),
(this.y = kt2),
(this.matrix = It2),
(this.width = qr($2)),
(this.height = Rr($2)),
(this.outputDestination = ct2),
(this.id = ''),
(this.objectNumber = -1)
}
Or.prototype.restore = function () {
;(Dt2 = this.page),
($2 = this.currentPage),
(Rt2 = this.pagesContext),
(ot2 = this.pages),
(Pt2 = this.x),
(kt2 = this.y),
(It2 = this.matrix),
Dr($2, this.width),
Tr($2, this.height),
(ct2 = this.outputDestination)
}
var Br = function (t3, e3, r3, n2, i3) {
Wt2.push(new Or()),
(Dt2 = $2 = 0),
(ot2 = []),
(Pt2 = t3),
(kt2 = e3),
(It2 = i3),
je([r3, n2])
},
Mr = function (t3) {
if (Ht2[t3]) Wt2.pop().restore()
else {
var e3 = new Or(),
r3 = 'Xo' + (Object.keys(zt2).length + 1).toString(10)
;(e3.id = r3),
(Ht2[t3] = r3),
(zt2[r3] = e3),
Tt2.publish('addFormObject', e3),
Wt2.pop().restore()
}
}
for (var Er in ((y2.beginFormObject = function (t3, e3, r3, n2, i3) {
return Br(t3, e3, r3, n2, i3), this
}),
(y2.endFormObject = function (t3) {
return Mr(t3), this
}),
(y2.doFormObject = function (t3, e3) {
var r3 = zt2[Ht2[t3]]
return (
lt2('q'),
lt2(e3.toString() + ' cm'),
lt2('/' + r3.id + ' Do'),
lt2('Q'),
this
)
}),
(y2.getFormObject = function (t3) {
var e3 = zt2[Ht2[t3]]
return {
x: e3.x,
y: e3.y,
width: e3.width,
height: e3.height,
matrix: e3.matrix,
}
}),
(y2.save = function (t3, e3) {
return (
(t3 = t3 || 'generated.pdf'),
((e3 = e3 || {}).returnPromise = e3.returnPromise || false),
false === e3.returnPromise
? (l$1(We(He()), t3),
'function' == typeof l$1.unload &&
n$1.setTimeout &&
setTimeout(l$1.unload, 911),
this)
: new Promise(function (e4, r3) {
try {
var i3 = l$1(We(He()), t3)
'function' == typeof l$1.unload &&
n$1.setTimeout &&
setTimeout(l$1.unload, 911),
e4(i3)
} catch (t4) {
r3(t4.message)
}
})
)
}),
E$1.API))
E$1.API.hasOwnProperty(Er) &&
('events' === Er && E$1.API.events.length
? (function (t3, e3) {
var r3, n2, i3
for (i3 = e3.length - 1; -1 !== i3; i3--)
(r3 = e3[i3][0]),
(n2 = e3[i3][1]),
t3.subscribe.apply(
t3,
[r3].concat('function' == typeof n2 ? [n2] : n2)
)
})(Tt2, E$1.API.events)
: (y2[Er] = E$1.API[Er]))
var qr = (y2.getPageWidth = function (t3) {
return (
(Rt2[(t3 = t3 || $2)].mediaBox.topRightX -
Rt2[t3].mediaBox.bottomLeftX) /
_t2
)
}),
Dr = (y2.setPageWidth = function (t3, e3) {
Rt2[t3].mediaBox.topRightX = e3 * _t2 + Rt2[t3].mediaBox.bottomLeftX
}),
Rr = (y2.getPageHeight = function (t3) {
return (
(Rt2[(t3 = t3 || $2)].mediaBox.topRightY -
Rt2[t3].mediaBox.bottomLeftY) /
_t2
)
}),
Tr = (y2.setPageHeight = function (t3, e3) {
Rt2[t3].mediaBox.topRightY = e3 * _t2 + Rt2[t3].mediaBox.bottomLeftY
})
return (
(y2.internal = {
pdfEscape: Ce,
getStyle: tr2,
getFont: hr2,
getFontSize: vt2,
getCharSpace: Pr,
getTextColor: Sr,
getLineHeight: gr,
getLineHeightFactor: vr,
getLineWidth: dr,
write: ft2,
getHorizontalCoordinate: br,
getVerticalCoordinate: yr,
getCoordinateString: wr,
getVerticalCoordinateString: Nr,
collections: {},
newObject: Xt2,
newAdditionalObject: $t2,
newObjectDeferred: Kt2,
newObjectDeferredBegin: Zt2,
getFilters: ne2,
putStream: ie2,
events: Tt2,
scaleFactor: _t2,
pageSize: {
getWidth: function () {
return qr($2)
},
setWidth: function (t3) {
Dr($2, t3)
},
getHeight: function () {
return Rr($2)
},
setHeight: function (t3) {
Tr($2, t3)
},
},
encryptionOptions: m2,
encryption: Ye,
getEncryptor: Je,
output: Ve,
getNumberOfPages: Ee,
pages: ot2,
out: lt2,
f2: R2,
f3: T2,
getPageInfo: Xe,
getPageInfoByObjId: Ke,
getCurrentPageInfo: Ze,
getPDFVersion: N2,
Point: Cr,
Rectangle: jr,
Matrix: Vt2,
hasHotfix: Ge,
}),
Object.defineProperty(y2.internal.pageSize, 'width', {
get: function () {
return qr($2)
},
set: function (t3) {
Dr($2, t3)
},
enumerable: true,
configurable: true,
}),
Object.defineProperty(y2.internal.pageSize, 'height', {
get: function () {
return Rr($2)
},
set: function (t3) {
Tr($2, t3)
},
enumerable: true,
configurable: true,
}),
ke.call(y2, pt3),
(St = 'F1'),
Oe(s2, i2),
Tt2.publish('initialized'),
y2
)
}
;(I.prototype.lsbFirstWord = function (t3) {
return String.fromCharCode(
(t3 >> 0) & 255,
(t3 >> 8) & 255,
(t3 >> 16) & 255,
(t3 >> 24) & 255
)
}),
(I.prototype.toHexString = function (t3) {
return t3
.split('')
.map(function (t4) {
return ('0' + (255 & t4.charCodeAt(0)).toString(16)).slice(-2)
})
.join('')
}),
(I.prototype.hexToBytes = function (t3) {
for (var e2 = [], r2 = 0; r2 < t3.length; r2 += 2)
e2.push(String.fromCharCode(parseInt(t3.substr(r2, 2), 16)))
return e2.join('')
}),
(I.prototype.processOwnerPassword = function (t3, e2) {
return P(x(e2).substr(0, 5), t3)
}),
(I.prototype.encryptor = function (t3, e2) {
var r2 = x(
this.encryptionKey +
String.fromCharCode(
255 & t3,
(t3 >> 8) & 255,
(t3 >> 16) & 255,
255 & e2,
(e2 >> 8) & 255
)
).substr(0, 10)
return function (t4) {
return P(r2, t4)
}
}),
(j.prototype.equals = function (e2) {
var r2,
n2 = 'id,objectNumber,equals'
if (!e2 || _typeof$3(e2) !== _typeof$3(this)) return false
var i2 = 0
for (r2 in this)
if (!(n2.indexOf(r2) >= 0)) {
if (this.hasOwnProperty(r2) && !e2.hasOwnProperty(r2)) return false
if (this[r2] !== e2[r2]) return false
i2++
}
for (r2 in e2) e2.hasOwnProperty(r2) && n2.indexOf(r2) < 0 && i2--
return 0 === i2
}),
(E$1.API = { events: [] }),
(E$1.version = '2.5.1')
var q = E$1.API,
D = 1,
R = function (t3) {
return t3.replace(/\\/g, '\\\\').replace(/\(/g, '\\(').replace(/\)/g, '\\)')
},
T$2 = function (t3) {
return t3.replace(/\\\\/g, '\\').replace(/\\\(/g, '(').replace(/\\\)/g, ')')
},
U$1 = function (t3) {
return t3.toFixed(2)
},
z$2 = function (t3) {
return t3.toFixed(5)
}
q.__acroform__ = {}
var H = function (t3, e2) {
;(t3.prototype = Object.create(e2.prototype)),
(t3.prototype.constructor = t3)
},
W = function (t3) {
return t3 * D
},
V$1 = function (t3) {
var e2 = new ut(),
r2 = At.internal.getHeight(t3) || 0,
n2 = At.internal.getWidth(t3) || 0
return (e2.BBox = [0, 0, Number(U$1(n2)), Number(U$1(r2))]), e2
},
G = (q.__acroform__.setBit = function (t3, e2) {
if (((t3 = t3 || 0), (e2 = e2 || 0), isNaN(t3) || isNaN(e2)))
throw new Error(
'Invalid arguments passed to jsPDF.API.__acroform__.setBit'
)
return (t3 |= 1 << e2)
}),
Y = (q.__acroform__.clearBit = function (t3, e2) {
if (((t3 = t3 || 0), (e2 = e2 || 0), isNaN(t3) || isNaN(e2)))
throw new Error(
'Invalid arguments passed to jsPDF.API.__acroform__.clearBit'
)
return (t3 &= ~(1 << e2))
}),
J = (q.__acroform__.getBit = function (t3, e2) {
if (isNaN(t3) || isNaN(e2))
throw new Error(
'Invalid arguments passed to jsPDF.API.__acroform__.getBit'
)
return 0 == (t3 & (1 << e2)) ? 0 : 1
}),
X = (q.__acroform__.getBitForPdf = function (t3, e2) {
if (isNaN(t3) || isNaN(e2))
throw new Error(
'Invalid arguments passed to jsPDF.API.__acroform__.getBitForPdf'
)
return J(t3, e2 - 1)
}),
K = (q.__acroform__.setBitForPdf = function (t3, e2) {
if (isNaN(t3) || isNaN(e2))
throw new Error(
'Invalid arguments passed to jsPDF.API.__acroform__.setBitForPdf'
)
return G(t3, e2 - 1)
}),
Z$1 = (q.__acroform__.clearBitForPdf = function (t3, e2) {
if (isNaN(t3) || isNaN(e2))
throw new Error(
'Invalid arguments passed to jsPDF.API.__acroform__.clearBitForPdf'
)
return Y(t3, e2 - 1)
}),
$$g = (q.__acroform__.calculateCoordinates = function (t3, e2) {
var r2 = e2.internal.getHorizontalCoordinate,
n2 = e2.internal.getVerticalCoordinate,
i2 = t3[0],
a2 = t3[1],
o2 = t3[2],
s2 = t3[3],
c2 = {}
return (
(c2.lowerLeft_X = r2(i2) || 0),
(c2.lowerLeft_Y = n2(a2 + s2) || 0),
(c2.upperRight_X = r2(i2 + o2) || 0),
(c2.upperRight_Y = n2(a2) || 0),
[
Number(U$1(c2.lowerLeft_X)),
Number(U$1(c2.lowerLeft_Y)),
Number(U$1(c2.upperRight_X)),
Number(U$1(c2.upperRight_Y)),
]
)
}),
Q = function (t3) {
if (t3.appearanceStreamContent) return t3.appearanceStreamContent
if (t3.V || t3.DV) {
var e2 = [],
r2 = t3._V || t3.DV,
n2 = tt(t3, r2),
i2 = t3.scope.internal.getFont(t3.fontName, t3.fontStyle).id
e2.push('/Tx BMC'),
e2.push('q'),
e2.push('BT'),
e2.push(t3.scope.__private__.encodeColorString(t3.color)),
e2.push('/' + i2 + ' ' + U$1(n2.fontSize) + ' Tf'),
e2.push('1 0 0 1 0 0 Tm'),
e2.push(n2.text),
e2.push('ET'),
e2.push('Q'),
e2.push('EMC')
var a2 = V$1(t3)
return (a2.scope = t3.scope), (a2.stream = e2.join('\n')), a2
}
},
tt = function (t3, e2) {
var r2 = 0 === t3.fontSize ? t3.maxFontSize : t3.fontSize,
n2 = { text: '', fontSize: '' },
i2 = (e2 =
')' ==
(e2 = '(' == e2.substr(0, 1) ? e2.substr(1) : e2).substr(e2.length - 1)
? e2.substr(0, e2.length - 1)
: e2).split(' ')
i2 = t3.multiline
? i2.map(function (t4) {
return t4.split('\n')
})
: i2.map(function (t4) {
return [t4]
})
var a2 = r2,
o2 = At.internal.getHeight(t3) || 0
o2 = o2 < 0 ? -o2 : o2
var s2 = At.internal.getWidth(t3) || 0
s2 = s2 < 0 ? -s2 : s2
var c2 = function (e3, r3, n3) {
if (e3 + 1 < i2.length) {
var a3 = r3 + ' ' + i2[e3 + 1][0]
return et(a3, t3, n3).width <= s2 - 4
}
return false
}
a2++
t: for (; a2 > 0; ) {
;(e2 = ''), a2--
var u2,
h2,
l2 = et('3', t3, a2).height,
f2 = t3.multiline ? o2 - a2 : (o2 - l2) / 2,
d3 = (f2 += 2),
p2 = 0,
g2 = 0,
m2 = 0
if (a2 <= 0) {
;(e2 = '(...) Tj\n'),
(e2 +=
'% Width of Text: ' +
et(e2, t3, (a2 = 12)).width +
', FieldWidth:' +
s2 +
'\n')
break
}
for (var v4 = '', b2 = 0, y2 = 0; y2 < i2.length; y2++)
if (i2.hasOwnProperty(y2)) {
var w2 = false
if (1 !== i2[y2].length && m2 !== i2[y2].length - 1) {
if ((l2 + 2) * (b2 + 2) + 2 > o2) continue t
;(v4 += i2[y2][m2]), (w2 = true), (g2 = y2), y2--
} else {
v4 =
' ' == (v4 += i2[y2][m2] + ' ').substr(v4.length - 1)
? v4.substr(0, v4.length - 1)
: v4
var N2 = parseInt(y2),
L2 = c2(N2, v4, a2),
A2 = y2 >= i2.length - 1
if (L2 && !A2) {
;(v4 += ' '), (m2 = 0)
continue
}
if (L2 || A2) {
if (A2) g2 = N2
else if (t3.multiline && (l2 + 2) * (b2 + 2) + 2 > o2) continue t
} else {
if (!t3.multiline) continue t
if ((l2 + 2) * (b2 + 2) + 2 > o2) continue t
g2 = N2
}
}
for (var x2 = '', S2 = p2; S2 <= g2; S2++) {
var _2 = i2[S2]
if (t3.multiline) {
if (S2 === g2) {
;(x2 += _2[m2] + ' '), (m2 = (m2 + 1) % _2.length)
continue
}
if (S2 === p2) {
x2 += _2[_2.length - 1] + ' '
continue
}
}
x2 += _2[0] + ' '
}
switch (
((x2 =
' ' == x2.substr(x2.length - 1)
? x2.substr(0, x2.length - 1)
: x2),
(h2 = et(x2, t3, a2).width),
t3.textAlign)
) {
case 'right':
u2 = s2 - h2 - 2
break
case 'center':
u2 = (s2 - h2) / 2
break
case 'left':
default:
u2 = 2
}
;(e2 += U$1(u2) + ' ' + U$1(d3) + ' Td\n'),
(e2 += '(' + R(x2) + ') Tj\n'),
(e2 += -U$1(u2) + ' 0 Td\n'),
(d3 = -(a2 + 2)),
(h2 = 0),
(p2 = w2 ? g2 : g2 + 1),
b2++,
(v4 = '')
}
break
}
return (n2.text = e2), (n2.fontSize = a2), n2
},
et = function (t3, e2, r2) {
var n2 = e2.scope.internal.getFont(e2.fontName, e2.fontStyle),
i2 =
e2.scope.getStringUnitWidth(t3, {
font: n2,
fontSize: parseFloat(r2),
charSpace: 0,
}) * parseFloat(r2)
return {
height:
e2.scope.getStringUnitWidth('3', {
font: n2,
fontSize: parseFloat(r2),
charSpace: 0,
}) *
parseFloat(r2) *
1.5,
width: i2,
}
},
rt$1 = {
fields: [],
xForms: [],
acroFormDictionaryRoot: null,
printedOut: false,
internal: null,
isInitialized: false,
},
nt = function (t3, e2) {
var r2 = { type: 'reference', object: t3 }
void 0 ===
e2.internal
.getPageInfo(t3.page)
.pageContext.annotations.find(function (t4) {
return t4.type === r2.type && t4.object === r2.object
}) && e2.internal.getPageInfo(t3.page).pageContext.annotations.push(r2)
},
it = function (e2, r2) {
for (var n2 in e2)
if (e2.hasOwnProperty(n2)) {
var i2 = n2,
a2 = e2[n2]
r2.internal.newObjectDeferredBegin(a2.objId, true),
'object' === _typeof$3(a2) &&
'function' == typeof a2.putStream &&
a2.putStream(),
delete e2[i2]
}
},
at = function (e2, r2) {
if (
((r2.scope = e2),
void 0 !== e2.internal &&
(void 0 === e2.internal.acroformPlugin ||
false === e2.internal.acroformPlugin.isInitialized))
) {
if (
((lt$1.FieldNum = 0),
(e2.internal.acroformPlugin = JSON.parse(JSON.stringify(rt$1))),
e2.internal.acroformPlugin.acroFormDictionaryRoot)
)
throw new Error('Exception while creating AcroformDictionary')
;(D = e2.internal.scaleFactor),
(e2.internal.acroformPlugin.acroFormDictionaryRoot = new ht()),
(e2.internal.acroformPlugin.acroFormDictionaryRoot.scope = e2),
(e2.internal.acroformPlugin.acroFormDictionaryRoot._eventID =
e2.internal.events.subscribe('postPutResources', function () {
!(function (t3) {
t3.internal.events.unsubscribe(
t3.internal.acroformPlugin.acroFormDictionaryRoot._eventID
),
delete t3.internal.acroformPlugin.acroFormDictionaryRoot
._eventID,
(t3.internal.acroformPlugin.printedOut = true)
})(e2)
})),
e2.internal.events.subscribe('buildDocument', function () {
!(function (t3) {
t3.internal.acroformPlugin.acroFormDictionaryRoot.objId = void 0
var e3 = t3.internal.acroformPlugin.acroFormDictionaryRoot.Fields
for (var r3 in e3)
if (e3.hasOwnProperty(r3)) {
var n2 = e3[r3]
;(n2.objId = void 0), n2.hasAnnotation && nt(n2, t3)
}
})(e2)
}),
e2.internal.events.subscribe('putCatalog', function () {
!(function (t3) {
if (void 0 === t3.internal.acroformPlugin.acroFormDictionaryRoot)
throw new Error('putCatalogCallback: Root missing.')
t3.internal.write(
'/AcroForm ' +
t3.internal.acroformPlugin.acroFormDictionaryRoot.objId +
' 0 R'
)
})(e2)
}),
e2.internal.events.subscribe('postPutPages', function (r3) {
!(function (e3, r4) {
var n2 = !e3
for (var i2 in (e3 ||
(r4.internal.newObjectDeferredBegin(
r4.internal.acroformPlugin.acroFormDictionaryRoot.objId,
true
),
r4.internal.acroformPlugin.acroFormDictionaryRoot.putStream()),
(e3 =
e3 || r4.internal.acroformPlugin.acroFormDictionaryRoot.Kids)))
if (e3.hasOwnProperty(i2)) {
var a2 = e3[i2],
o2 = [],
s2 = a2.Rect
if (
(a2.Rect && (a2.Rect = $$g(a2.Rect, r4)),
r4.internal.newObjectDeferredBegin(a2.objId, true),
(a2.DA = At.createDefaultAppearanceStream(a2)),
'object' === _typeof$3(a2) &&
'function' == typeof a2.getKeyValueListForStream &&
(o2 = a2.getKeyValueListForStream()),
(a2.Rect = s2),
a2.hasAppearanceStream && !a2.appearanceStreamContent)
) {
var c2 = Q(a2)
o2.push({ key: 'AP', value: '<>' }),
r4.internal.acroformPlugin.xForms.push(c2)
}
if (a2.appearanceStreamContent) {
var u2 = ''
for (var h2 in a2.appearanceStreamContent)
if (a2.appearanceStreamContent.hasOwnProperty(h2)) {
var l2 = a2.appearanceStreamContent[h2]
if (
((u2 += '/' + h2 + ' '),
(u2 += '<<'),
Object.keys(l2).length >= 1 || Array.isArray(l2))
) {
for (var i2 in l2)
if (l2.hasOwnProperty(i2)) {
var f2 = l2[i2]
'function' == typeof f2 && (f2 = f2.call(r4, a2)),
(u2 += '/' + i2 + ' ' + f2 + ' '),
r4.internal.acroformPlugin.xForms.indexOf(f2) >=
0 || r4.internal.acroformPlugin.xForms.push(f2)
}
} else
'function' == typeof (f2 = l2) &&
(f2 = f2.call(r4, a2)),
(u2 += '/' + i2 + ' ' + f2),
r4.internal.acroformPlugin.xForms.indexOf(f2) >= 0 ||
r4.internal.acroformPlugin.xForms.push(f2)
u2 += '>>'
}
o2.push({ key: 'AP', value: '<<\n' + u2 + '>>' })
}
r4.internal.putStream({
additionalKeyValues: o2,
objectId: a2.objId,
}),
r4.internal.out('endobj')
}
n2 && it(r4.internal.acroformPlugin.xForms, r4)
})(r3, e2)
}),
(e2.internal.acroformPlugin.isInitialized = true)
}
},
ot = (q.__acroform__.arrayToPdfArray = function (e2, r2, n2) {
var i2 = function (t3) {
return t3
}
if (Array.isArray(e2)) {
for (var a2 = '[', o2 = 0; o2 < e2.length; o2++)
switch ((0 !== o2 && (a2 += ' '), _typeof$3(e2[o2]))) {
case 'boolean':
case 'number':
case 'object':
a2 += e2[o2].toString()
break
case 'string':
'/' !== e2[o2].substr(0, 1)
? (void 0 !== r2 && n2 && (i2 = n2.internal.getEncryptor(r2)),
(a2 += '(' + R(i2(e2[o2].toString())) + ')'))
: (a2 += e2[o2].toString())
}
return (a2 += ']')
}
throw new Error(
'Invalid argument passed to jsPDF.__acroform__.arrayToPdfArray'
)
})
var st = function (t3, e2, r2) {
var n2 = function (t4) {
return t4
}
return (
void 0 !== e2 && r2 && (n2 = r2.internal.getEncryptor(e2)),
(t3 = t3 || '').toString(),
(t3 = '(' + R(n2(t3)) + ')')
)
},
ct = function () {
;(this._objId = void 0),
(this._scope = void 0),
Object.defineProperty(this, 'objId', {
get: function () {
if (void 0 === this._objId) {
if (void 0 === this.scope) return
this._objId = this.scope.internal.newObjectDeferred()
}
return this._objId
},
set: function (t3) {
this._objId = t3
},
}),
Object.defineProperty(this, 'scope', {
value: this._scope,
writable: true,
})
}
;(ct.prototype.toString = function () {
return this.objId + ' 0 R'
}),
(ct.prototype.putStream = function () {
var t3 = this.getKeyValueListForStream()
this.scope.internal.putStream({
data: this.stream,
additionalKeyValues: t3,
objectId: this.objId,
}),
this.scope.internal.out('endobj')
}),
(ct.prototype.getKeyValueListForStream = function () {
var t3 = [],
e2 = Object.getOwnPropertyNames(this).filter(function (t4) {
return (
'content' != t4 &&
'appearanceStreamContent' != t4 &&
'scope' != t4 &&
'objId' != t4 &&
'_' != t4.substring(0, 1)
)
})
for (var r2 in e2)
if (
false === Object.getOwnPropertyDescriptor(this, e2[r2]).configurable
) {
var n2 = e2[r2],
i2 = this[n2]
i2 &&
(Array.isArray(i2)
? t3.push({ key: n2, value: ot(i2, this.objId, this.scope) })
: i2 instanceof ct
? ((i2.scope = this.scope),
t3.push({ key: n2, value: i2.objId + ' 0 R' }))
: 'function' != typeof i2 && t3.push({ key: n2, value: i2 }))
}
return t3
})
var ut = function () {
ct.call(this),
Object.defineProperty(this, 'Type', {
value: '/XObject',
configurable: false,
writable: true,
}),
Object.defineProperty(this, 'Subtype', {
value: '/Form',
configurable: false,
writable: true,
}),
Object.defineProperty(this, 'FormType', {
value: 1,
configurable: false,
writable: true,
})
var t3,
e2 = []
Object.defineProperty(this, 'BBox', {
configurable: false,
get: function () {
return e2
},
set: function (t4) {
e2 = t4
},
}),
Object.defineProperty(this, 'Resources', {
value: '2 0 R',
configurable: false,
writable: true,
}),
Object.defineProperty(this, 'stream', {
enumerable: false,
configurable: true,
set: function (e3) {
t3 = e3.trim()
},
get: function () {
return t3 || null
},
})
}
H(ut, ct)
var ht = function () {
ct.call(this)
var t3,
e2 = []
Object.defineProperty(this, 'Kids', {
enumerable: false,
configurable: true,
get: function () {
return e2.length > 0 ? e2 : void 0
},
}),
Object.defineProperty(this, 'Fields', {
enumerable: false,
configurable: false,
get: function () {
return e2
},
}),
Object.defineProperty(this, 'DA', {
enumerable: false,
configurable: false,
get: function () {
if (t3) {
var e3 = function (t4) {
return t4
}
return (
this.scope && (e3 = this.scope.internal.getEncryptor(this.objId)),
'(' + R(e3(t3)) + ')'
)
}
},
set: function (e3) {
t3 = e3
},
})
}
H(ht, ct)
var lt$1 = function t2() {
ct.call(this)
var e2 = 4
Object.defineProperty(this, 'F', {
enumerable: false,
configurable: false,
get: function () {
return e2
},
set: function (t3) {
if (isNaN(t3))
throw new Error('Invalid value "' + t3 + '" for attribute F supplied.')
e2 = t3
},
}),
Object.defineProperty(this, 'showWhenPrinted', {
enumerable: true,
configurable: true,
get: function () {
return Boolean(X(e2, 3))
},
set: function (t3) {
true === Boolean(t3) ? (this.F = K(e2, 3)) : (this.F = Z$1(e2, 3))
},
})
var r2 = 0
Object.defineProperty(this, 'Ff', {
enumerable: false,
configurable: false,
get: function () {
return r2
},
set: function (t3) {
if (isNaN(t3))
throw new Error('Invalid value "' + t3 + '" for attribute Ff supplied.')
r2 = t3
},
})
var n2 = []
Object.defineProperty(this, 'Rect', {
enumerable: false,
configurable: false,
get: function () {
if (0 !== n2.length) return n2
},
set: function (t3) {
n2 = void 0 !== t3 ? t3 : []
},
}),
Object.defineProperty(this, 'x', {
enumerable: true,
configurable: true,
get: function () {
return !n2 || isNaN(n2[0]) ? 0 : n2[0]
},
set: function (t3) {
n2[0] = t3
},
}),
Object.defineProperty(this, 'y', {
enumerable: true,
configurable: true,
get: function () {
return !n2 || isNaN(n2[1]) ? 0 : n2[1]
},
set: function (t3) {
n2[1] = t3
},
}),
Object.defineProperty(this, 'width', {
enumerable: true,
configurable: true,
get: function () {
return !n2 || isNaN(n2[2]) ? 0 : n2[2]
},
set: function (t3) {
n2[2] = t3
},
}),
Object.defineProperty(this, 'height', {
enumerable: true,
configurable: true,
get: function () {
return !n2 || isNaN(n2[3]) ? 0 : n2[3]
},
set: function (t3) {
n2[3] = t3
},
})
var i2 = ''
Object.defineProperty(this, 'FT', {
enumerable: true,
configurable: false,
get: function () {
return i2
},
set: function (t3) {
switch (t3) {
case '/Btn':
case '/Tx':
case '/Ch':
case '/Sig':
i2 = t3
break
default:
throw new Error(
'Invalid value "' + t3 + '" for attribute FT supplied.'
)
}
},
})
var a2 = null
Object.defineProperty(this, 'T', {
enumerable: true,
configurable: false,
get: function () {
if (!a2 || a2.length < 1) {
if (this instanceof yt) return
a2 = 'FieldObject' + t2.FieldNum++
}
var e3 = function (t3) {
return t3
}
return (
this.scope && (e3 = this.scope.internal.getEncryptor(this.objId)),
'(' + R(e3(a2)) + ')'
)
},
set: function (t3) {
a2 = t3.toString()
},
}),
Object.defineProperty(this, 'fieldName', {
configurable: true,
enumerable: true,
get: function () {
return a2
},
set: function (t3) {
a2 = t3
},
})
var o2 = 'helvetica'
Object.defineProperty(this, 'fontName', {
enumerable: true,
configurable: true,
get: function () {
return o2
},
set: function (t3) {
o2 = t3
},
})
var s2 = 'normal'
Object.defineProperty(this, 'fontStyle', {
enumerable: true,
configurable: true,
get: function () {
return s2
},
set: function (t3) {
s2 = t3
},
})
var c2 = 0
Object.defineProperty(this, 'fontSize', {
enumerable: true,
configurable: true,
get: function () {
return c2
},
set: function (t3) {
c2 = t3
},
})
var u2 = void 0
Object.defineProperty(this, 'maxFontSize', {
enumerable: true,
configurable: true,
get: function () {
return void 0 === u2 ? 50 / D : u2
},
set: function (t3) {
u2 = t3
},
})
var h2 = 'black'
Object.defineProperty(this, 'color', {
enumerable: true,
configurable: true,
get: function () {
return h2
},
set: function (t3) {
h2 = t3
},
})
var l2 = '/F1 0 Tf 0 g'
Object.defineProperty(this, 'DA', {
enumerable: true,
configurable: false,
get: function () {
if (!(!l2 || this instanceof yt || this instanceof Nt))
return st(l2, this.objId, this.scope)
},
set: function (t3) {
;(t3 = t3.toString()), (l2 = t3)
},
})
var f2 = null
Object.defineProperty(this, 'DV', {
enumerable: false,
configurable: false,
get: function () {
if (f2)
return this instanceof mt == false ? st(f2, this.objId, this.scope) : f2
},
set: function (t3) {
;(t3 = t3.toString()),
(f2 =
this instanceof mt == false
? '(' === t3.substr(0, 1)
? T$2(t3.substr(1, t3.length - 2))
: T$2(t3)
: t3)
},
}),
Object.defineProperty(this, 'defaultValue', {
enumerable: true,
configurable: true,
get: function () {
return this instanceof mt == true
? T$2(f2.substr(1, f2.length - 1))
: f2
},
set: function (t3) {
;(t3 = t3.toString()), (f2 = this instanceof mt == true ? '/' + t3 : t3)
},
})
var d3 = null
Object.defineProperty(this, '_V', {
enumerable: false,
configurable: false,
get: function () {
if (d3) return d3
},
set: function (t3) {
this.V = t3
},
}),
Object.defineProperty(this, 'V', {
enumerable: false,
configurable: false,
get: function () {
if (d3)
return this instanceof mt == false
? st(d3, this.objId, this.scope)
: d3
},
set: function (t3) {
;(t3 = t3.toString()),
(d3 =
this instanceof mt == false
? '(' === t3.substr(0, 1)
? T$2(t3.substr(1, t3.length - 2))
: T$2(t3)
: t3)
},
}),
Object.defineProperty(this, 'value', {
enumerable: true,
configurable: true,
get: function () {
return this instanceof mt == true
? T$2(d3.substr(1, d3.length - 1))
: d3
},
set: function (t3) {
;(t3 = t3.toString()), (d3 = this instanceof mt == true ? '/' + t3 : t3)
},
}),
Object.defineProperty(this, 'hasAnnotation', {
enumerable: true,
configurable: true,
get: function () {
return this.Rect
},
}),
Object.defineProperty(this, 'Type', {
enumerable: true,
configurable: false,
get: function () {
return this.hasAnnotation ? '/Annot' : null
},
}),
Object.defineProperty(this, 'Subtype', {
enumerable: true,
configurable: false,
get: function () {
return this.hasAnnotation ? '/Widget' : null
},
})
var p2,
g2 = false
Object.defineProperty(this, 'hasAppearanceStream', {
enumerable: true,
configurable: true,
get: function () {
return g2
},
set: function (t3) {
;(t3 = Boolean(t3)), (g2 = t3)
},
}),
Object.defineProperty(this, 'page', {
enumerable: true,
configurable: true,
get: function () {
if (p2) return p2
},
set: function (t3) {
p2 = t3
},
}),
Object.defineProperty(this, 'readOnly', {
enumerable: true,
configurable: true,
get: function () {
return Boolean(X(this.Ff, 1))
},
set: function (t3) {
true === Boolean(t3)
? (this.Ff = K(this.Ff, 1))
: (this.Ff = Z$1(this.Ff, 1))
},
}),
Object.defineProperty(this, 'required', {
enumerable: true,
configurable: true,
get: function () {
return Boolean(X(this.Ff, 2))
},
set: function (t3) {
true === Boolean(t3)
? (this.Ff = K(this.Ff, 2))
: (this.Ff = Z$1(this.Ff, 2))
},
}),
Object.defineProperty(this, 'noExport', {
enumerable: true,
configurable: true,
get: function () {
return Boolean(X(this.Ff, 3))
},
set: function (t3) {
true === Boolean(t3)
? (this.Ff = K(this.Ff, 3))
: (this.Ff = Z$1(this.Ff, 3))
},
})
var m2 = null
Object.defineProperty(this, 'Q', {
enumerable: true,
configurable: false,
get: function () {
if (null !== m2) return m2
},
set: function (t3) {
if (-1 === [0, 1, 2].indexOf(t3))
throw new Error('Invalid value "' + t3 + '" for attribute Q supplied.')
m2 = t3
},
}),
Object.defineProperty(this, 'textAlign', {
get: function () {
var t3
switch (m2) {
case 0:
default:
t3 = 'left'
break
case 1:
t3 = 'center'
break
case 2:
t3 = 'right'
}
return t3
},
configurable: true,
enumerable: true,
set: function (t3) {
switch (t3) {
case 'right':
case 2:
m2 = 2
break
case 'center':
case 1:
m2 = 1
break
case 'left':
case 0:
default:
m2 = 0
}
},
})
}
H(lt$1, ct)
var ft = function () {
lt$1.call(this),
(this.FT = '/Ch'),
(this.V = '()'),
(this.fontName = 'zapfdingbats')
var t3 = 0
Object.defineProperty(this, 'TI', {
enumerable: true,
configurable: false,
get: function () {
return t3
},
set: function (e3) {
t3 = e3
},
}),
Object.defineProperty(this, 'topIndex', {
enumerable: true,
configurable: true,
get: function () {
return t3
},
set: function (e3) {
t3 = e3
},
})
var e2 = []
Object.defineProperty(this, 'Opt', {
enumerable: true,
configurable: false,
get: function () {
return ot(e2, this.objId, this.scope)
},
set: function (t4) {
var r2, n2
;(n2 = []),
'string' == typeof (r2 = t4) &&
(n2 = (function (t5, e3, r3) {
r3 || (r3 = 1)
for (var n3, i2 = []; (n3 = e3.exec(t5)); ) i2.push(n3[r3])
return i2
})(r2, /\((.*?)\)/g)),
(e2 = n2)
},
}),
(this.getOptions = function () {
return e2
}),
(this.setOptions = function (t4) {
;(e2 = t4), this.sort && e2.sort()
}),
(this.addOption = function (t4) {
;(t4 = (t4 = t4 || '').toString()), e2.push(t4), this.sort && e2.sort()
}),
(this.removeOption = function (t4, r2) {
for (
r2 = r2 || false, t4 = (t4 = t4 || '').toString();
-1 !== e2.indexOf(t4) && (e2.splice(e2.indexOf(t4), 1), false !== r2);
);
}),
Object.defineProperty(this, 'combo', {
enumerable: true,
configurable: true,
get: function () {
return Boolean(X(this.Ff, 18))
},
set: function (t4) {
true === Boolean(t4)
? (this.Ff = K(this.Ff, 18))
: (this.Ff = Z$1(this.Ff, 18))
},
}),
Object.defineProperty(this, 'edit', {
enumerable: true,
configurable: true,
get: function () {
return Boolean(X(this.Ff, 19))
},
set: function (t4) {
true === this.combo &&
(true === Boolean(t4)
? (this.Ff = K(this.Ff, 19))
: (this.Ff = Z$1(this.Ff, 19)))
},
}),
Object.defineProperty(this, 'sort', {
enumerable: true,
configurable: true,
get: function () {
return Boolean(X(this.Ff, 20))
},
set: function (t4) {
true === Boolean(t4)
? ((this.Ff = K(this.Ff, 20)), e2.sort())
: (this.Ff = Z$1(this.Ff, 20))
},
}),
Object.defineProperty(this, 'multiSelect', {
enumerable: true,
configurable: true,
get: function () {
return Boolean(X(this.Ff, 22))
},
set: function (t4) {
true === Boolean(t4)
? (this.Ff = K(this.Ff, 22))
: (this.Ff = Z$1(this.Ff, 22))
},
}),
Object.defineProperty(this, 'doNotSpellCheck', {
enumerable: true,
configurable: true,
get: function () {
return Boolean(X(this.Ff, 23))
},
set: function (t4) {
true === Boolean(t4)
? (this.Ff = K(this.Ff, 23))
: (this.Ff = Z$1(this.Ff, 23))
},
}),
Object.defineProperty(this, 'commitOnSelChange', {
enumerable: true,
configurable: true,
get: function () {
return Boolean(X(this.Ff, 27))
},
set: function (t4) {
true === Boolean(t4)
? (this.Ff = K(this.Ff, 27))
: (this.Ff = Z$1(this.Ff, 27))
},
}),
(this.hasAppearanceStream = false)
}
H(ft, lt$1)
var dt = function () {
ft.call(this), (this.fontName = 'helvetica'), (this.combo = false)
}
H(dt, ft)
var pt = function () {
dt.call(this), (this.combo = true)
}
H(pt, dt)
var gt = function () {
pt.call(this), (this.edit = true)
}
H(gt, pt)
var mt = function () {
lt$1.call(this),
(this.FT = '/Btn'),
Object.defineProperty(this, 'noToggleToOff', {
enumerable: true,
configurable: true,
get: function () {
return Boolean(X(this.Ff, 15))
},
set: function (t3) {
true === Boolean(t3)
? (this.Ff = K(this.Ff, 15))
: (this.Ff = Z$1(this.Ff, 15))
},
}),
Object.defineProperty(this, 'radio', {
enumerable: true,
configurable: true,
get: function () {
return Boolean(X(this.Ff, 16))
},
set: function (t3) {
true === Boolean(t3)
? (this.Ff = K(this.Ff, 16))
: (this.Ff = Z$1(this.Ff, 16))
},
}),
Object.defineProperty(this, 'pushButton', {
enumerable: true,
configurable: true,
get: function () {
return Boolean(X(this.Ff, 17))
},
set: function (t3) {
true === Boolean(t3)
? (this.Ff = K(this.Ff, 17))
: (this.Ff = Z$1(this.Ff, 17))
},
}),
Object.defineProperty(this, 'radioIsUnison', {
enumerable: true,
configurable: true,
get: function () {
return Boolean(X(this.Ff, 26))
},
set: function (t3) {
true === Boolean(t3)
? (this.Ff = K(this.Ff, 26))
: (this.Ff = Z$1(this.Ff, 26))
},
})
var e2,
r2 = {}
Object.defineProperty(this, 'MK', {
enumerable: false,
configurable: false,
get: function () {
var t3 = function (t4) {
return t4
}
if (
(this.scope && (t3 = this.scope.internal.getEncryptor(this.objId)),
0 !== Object.keys(r2).length)
) {
var e3,
n2 = []
for (e3 in (n2.push('<<'), r2))
n2.push('/' + e3 + ' (' + R(t3(r2[e3])) + ')')
return n2.push('>>'), n2.join('\n')
}
},
set: function (e3) {
'object' === _typeof$3(e3) && (r2 = e3)
},
}),
Object.defineProperty(this, 'caption', {
enumerable: true,
configurable: true,
get: function () {
return r2.CA || ''
},
set: function (t3) {
'string' == typeof t3 && (r2.CA = t3)
},
}),
Object.defineProperty(this, 'AS', {
enumerable: false,
configurable: false,
get: function () {
return e2
},
set: function (t3) {
e2 = t3
},
}),
Object.defineProperty(this, 'appearanceState', {
enumerable: true,
configurable: true,
get: function () {
return e2.substr(1, e2.length - 1)
},
set: function (t3) {
e2 = '/' + t3
},
})
}
H(mt, lt$1)
var vt = function () {
mt.call(this), (this.pushButton = true)
}
H(vt, mt)
var bt = function () {
mt.call(this), (this.radio = true), (this.pushButton = false)
var t3 = []
Object.defineProperty(this, 'Kids', {
enumerable: true,
configurable: false,
get: function () {
return t3
},
set: function (e2) {
t3 = void 0 !== e2 ? e2 : []
},
})
}
H(bt, mt)
var yt = function () {
var e2, r2
lt$1.call(this),
Object.defineProperty(this, 'Parent', {
enumerable: false,
configurable: false,
get: function () {
return e2
},
set: function (t3) {
e2 = t3
},
}),
Object.defineProperty(this, 'optionName', {
enumerable: false,
configurable: true,
get: function () {
return r2
},
set: function (t3) {
r2 = t3
},
})
var n2,
i2 = {}
Object.defineProperty(this, 'MK', {
enumerable: false,
configurable: false,
get: function () {
var t3 = function (t4) {
return t4
}
this.scope && (t3 = this.scope.internal.getEncryptor(this.objId))
var e3,
r3 = []
for (e3 in (r3.push('<<'), i2))
r3.push('/' + e3 + ' (' + R(t3(i2[e3])) + ')')
return r3.push('>>'), r3.join('\n')
},
set: function (e3) {
'object' === _typeof$3(e3) && (i2 = e3)
},
}),
Object.defineProperty(this, 'caption', {
enumerable: true,
configurable: true,
get: function () {
return i2.CA || ''
},
set: function (t3) {
'string' == typeof t3 && (i2.CA = t3)
},
}),
Object.defineProperty(this, 'AS', {
enumerable: false,
configurable: false,
get: function () {
return n2
},
set: function (t3) {
n2 = t3
},
}),
Object.defineProperty(this, 'appearanceState', {
enumerable: true,
configurable: true,
get: function () {
return n2.substr(1, n2.length - 1)
},
set: function (t3) {
n2 = '/' + t3
},
}),
(this.caption = 'l'),
(this.appearanceState = 'Off'),
(this._AppearanceType = At.RadioButton.Circle),
(this.appearanceStreamContent = this._AppearanceType.createAppearanceStream(
this.optionName
))
}
H(yt, lt$1),
(bt.prototype.setAppearance = function (t3) {
if (!('createAppearanceStream' in t3) || !('getCA' in t3))
throw new Error(
"Couldn't assign Appearance to RadioButton. Appearance was Invalid!"
)
for (var e2 in this.Kids)
if (this.Kids.hasOwnProperty(e2)) {
var r2 = this.Kids[e2]
;(r2.appearanceStreamContent = t3.createAppearanceStream(
r2.optionName
)),
(r2.caption = t3.getCA())
}
}),
(bt.prototype.createOption = function (t3) {
var e2 = new yt()
return (
(e2.Parent = this),
(e2.optionName = t3),
this.Kids.push(e2),
xt.call(this.scope, e2),
e2
)
})
var wt = function () {
mt.call(this),
(this.fontName = 'zapfdingbats'),
(this.caption = '3'),
(this.appearanceState = 'On'),
(this.value = 'On'),
(this.textAlign = 'center'),
(this.appearanceStreamContent = At.CheckBox.createAppearanceStream())
}
H(wt, mt)
var Nt = function () {
lt$1.call(this),
(this.FT = '/Tx'),
Object.defineProperty(this, 'multiline', {
enumerable: true,
configurable: true,
get: function () {
return Boolean(X(this.Ff, 13))
},
set: function (t4) {
true === Boolean(t4)
? (this.Ff = K(this.Ff, 13))
: (this.Ff = Z$1(this.Ff, 13))
},
}),
Object.defineProperty(this, 'fileSelect', {
enumerable: true,
configurable: true,
get: function () {
return Boolean(X(this.Ff, 21))
},
set: function (t4) {
true === Boolean(t4)
? (this.Ff = K(this.Ff, 21))
: (this.Ff = Z$1(this.Ff, 21))
},
}),
Object.defineProperty(this, 'doNotSpellCheck', {
enumerable: true,
configurable: true,
get: function () {
return Boolean(X(this.Ff, 23))
},
set: function (t4) {
true === Boolean(t4)
? (this.Ff = K(this.Ff, 23))
: (this.Ff = Z$1(this.Ff, 23))
},
}),
Object.defineProperty(this, 'doNotScroll', {
enumerable: true,
configurable: true,
get: function () {
return Boolean(X(this.Ff, 24))
},
set: function (t4) {
true === Boolean(t4)
? (this.Ff = K(this.Ff, 24))
: (this.Ff = Z$1(this.Ff, 24))
},
}),
Object.defineProperty(this, 'comb', {
enumerable: true,
configurable: true,
get: function () {
return Boolean(X(this.Ff, 25))
},
set: function (t4) {
true === Boolean(t4)
? (this.Ff = K(this.Ff, 25))
: (this.Ff = Z$1(this.Ff, 25))
},
}),
Object.defineProperty(this, 'richText', {
enumerable: true,
configurable: true,
get: function () {
return Boolean(X(this.Ff, 26))
},
set: function (t4) {
true === Boolean(t4)
? (this.Ff = K(this.Ff, 26))
: (this.Ff = Z$1(this.Ff, 26))
},
})
var t3 = null
Object.defineProperty(this, 'MaxLen', {
enumerable: true,
configurable: false,
get: function () {
return t3
},
set: function (e2) {
t3 = e2
},
}),
Object.defineProperty(this, 'maxLength', {
enumerable: true,
configurable: true,
get: function () {
return t3
},
set: function (e2) {
Number.isInteger(e2) && (t3 = e2)
},
}),
Object.defineProperty(this, 'hasAppearanceStream', {
enumerable: true,
configurable: true,
get: function () {
return this.V || this.DV
},
})
}
H(Nt, lt$1)
var Lt = function () {
Nt.call(this),
Object.defineProperty(this, 'password', {
enumerable: true,
configurable: true,
get: function () {
return Boolean(X(this.Ff, 14))
},
set: function (t3) {
true === Boolean(t3)
? (this.Ff = K(this.Ff, 14))
: (this.Ff = Z$1(this.Ff, 14))
},
}),
(this.password = true)
}
H(Lt, Nt)
var At = {
CheckBox: {
createAppearanceStream: function () {
return {
N: { On: At.CheckBox.YesNormal },
D: { On: At.CheckBox.YesPushDown, Off: At.CheckBox.OffPushDown },
}
},
YesPushDown: function (t3) {
var e2 = V$1(t3)
e2.scope = t3.scope
var r2 = [],
n2 = t3.scope.internal.getFont(t3.fontName, t3.fontStyle).id,
i2 = t3.scope.__private__.encodeColorString(t3.color),
a2 = tt(t3, t3.caption)
return (
r2.push('0.749023 g'),
r2.push(
'0 0 ' +
U$1(At.internal.getWidth(t3)) +
' ' +
U$1(At.internal.getHeight(t3)) +
' re'
),
r2.push('f'),
r2.push('BMC'),
r2.push('q'),
r2.push('0 0 1 rg'),
r2.push('/' + n2 + ' ' + U$1(a2.fontSize) + ' Tf ' + i2),
r2.push('BT'),
r2.push(a2.text),
r2.push('ET'),
r2.push('Q'),
r2.push('EMC'),
(e2.stream = r2.join('\n')),
e2
)
},
YesNormal: function (t3) {
var e2 = V$1(t3)
e2.scope = t3.scope
var r2 = t3.scope.internal.getFont(t3.fontName, t3.fontStyle).id,
n2 = t3.scope.__private__.encodeColorString(t3.color),
i2 = [],
a2 = At.internal.getHeight(t3),
o2 = At.internal.getWidth(t3),
s2 = tt(t3, t3.caption)
return (
i2.push('1 g'),
i2.push('0 0 ' + U$1(o2) + ' ' + U$1(a2) + ' re'),
i2.push('f'),
i2.push('q'),
i2.push('0 0 1 rg'),
i2.push('0 0 ' + U$1(o2 - 1) + ' ' + U$1(a2 - 1) + ' re'),
i2.push('W'),
i2.push('n'),
i2.push('0 g'),
i2.push('BT'),
i2.push('/' + r2 + ' ' + U$1(s2.fontSize) + ' Tf ' + n2),
i2.push(s2.text),
i2.push('ET'),
i2.push('Q'),
(e2.stream = i2.join('\n')),
e2
)
},
OffPushDown: function (t3) {
var e2 = V$1(t3)
e2.scope = t3.scope
var r2 = []
return (
r2.push('0.749023 g'),
r2.push(
'0 0 ' +
U$1(At.internal.getWidth(t3)) +
' ' +
U$1(At.internal.getHeight(t3)) +
' re'
),
r2.push('f'),
(e2.stream = r2.join('\n')),
e2
)
},
},
RadioButton: {
Circle: {
createAppearanceStream: function (t3) {
var e2 = { D: { Off: At.RadioButton.Circle.OffPushDown }, N: {} }
return (
(e2.N[t3] = At.RadioButton.Circle.YesNormal),
(e2.D[t3] = At.RadioButton.Circle.YesPushDown),
e2
)
},
getCA: function () {
return 'l'
},
YesNormal: function (t3) {
var e2 = V$1(t3)
e2.scope = t3.scope
var r2 = [],
n2 =
At.internal.getWidth(t3) <= At.internal.getHeight(t3)
? At.internal.getWidth(t3) / 4
: At.internal.getHeight(t3) / 4
n2 = Number((0.9 * n2).toFixed(5))
var i2 = At.internal.Bezier_C,
a2 = Number((n2 * i2).toFixed(5))
return (
r2.push('q'),
r2.push(
'1 0 0 1 ' +
z$2(At.internal.getWidth(t3) / 2) +
' ' +
z$2(At.internal.getHeight(t3) / 2) +
' cm'
),
r2.push(n2 + ' 0 m'),
r2.push(n2 + ' ' + a2 + ' ' + a2 + ' ' + n2 + ' 0 ' + n2 + ' c'),
r2.push(
'-' + a2 + ' ' + n2 + ' -' + n2 + ' ' + a2 + ' -' + n2 + ' 0 c'
),
r2.push(
'-' + n2 + ' -' + a2 + ' -' + a2 + ' -' + n2 + ' 0 -' + n2 + ' c'
),
r2.push(a2 + ' -' + n2 + ' ' + n2 + ' -' + a2 + ' ' + n2 + ' 0 c'),
r2.push('f'),
r2.push('Q'),
(e2.stream = r2.join('\n')),
e2
)
},
YesPushDown: function (t3) {
var e2 = V$1(t3)
e2.scope = t3.scope
var r2 = [],
n2 =
At.internal.getWidth(t3) <= At.internal.getHeight(t3)
? At.internal.getWidth(t3) / 4
: At.internal.getHeight(t3) / 4
n2 = Number((0.9 * n2).toFixed(5))
var i2 = Number((2 * n2).toFixed(5)),
a2 = Number((i2 * At.internal.Bezier_C).toFixed(5)),
o2 = Number((n2 * At.internal.Bezier_C).toFixed(5))
return (
r2.push('0.749023 g'),
r2.push('q'),
r2.push(
'1 0 0 1 ' +
z$2(At.internal.getWidth(t3) / 2) +
' ' +
z$2(At.internal.getHeight(t3) / 2) +
' cm'
),
r2.push(i2 + ' 0 m'),
r2.push(i2 + ' ' + a2 + ' ' + a2 + ' ' + i2 + ' 0 ' + i2 + ' c'),
r2.push(
'-' + a2 + ' ' + i2 + ' -' + i2 + ' ' + a2 + ' -' + i2 + ' 0 c'
),
r2.push(
'-' + i2 + ' -' + a2 + ' -' + a2 + ' -' + i2 + ' 0 -' + i2 + ' c'
),
r2.push(a2 + ' -' + i2 + ' ' + i2 + ' -' + a2 + ' ' + i2 + ' 0 c'),
r2.push('f'),
r2.push('Q'),
r2.push('0 g'),
r2.push('q'),
r2.push(
'1 0 0 1 ' +
z$2(At.internal.getWidth(t3) / 2) +
' ' +
z$2(At.internal.getHeight(t3) / 2) +
' cm'
),
r2.push(n2 + ' 0 m'),
r2.push(n2 + ' ' + o2 + ' ' + o2 + ' ' + n2 + ' 0 ' + n2 + ' c'),
r2.push(
'-' + o2 + ' ' + n2 + ' -' + n2 + ' ' + o2 + ' -' + n2 + ' 0 c'
),
r2.push(
'-' + n2 + ' -' + o2 + ' -' + o2 + ' -' + n2 + ' 0 -' + n2 + ' c'
),
r2.push(o2 + ' -' + n2 + ' ' + n2 + ' -' + o2 + ' ' + n2 + ' 0 c'),
r2.push('f'),
r2.push('Q'),
(e2.stream = r2.join('\n')),
e2
)
},
OffPushDown: function (t3) {
var e2 = V$1(t3)
e2.scope = t3.scope
var r2 = [],
n2 =
At.internal.getWidth(t3) <= At.internal.getHeight(t3)
? At.internal.getWidth(t3) / 4
: At.internal.getHeight(t3) / 4
n2 = Number((0.9 * n2).toFixed(5))
var i2 = Number((2 * n2).toFixed(5)),
a2 = Number((i2 * At.internal.Bezier_C).toFixed(5))
return (
r2.push('0.749023 g'),
r2.push('q'),
r2.push(
'1 0 0 1 ' +
z$2(At.internal.getWidth(t3) / 2) +
' ' +
z$2(At.internal.getHeight(t3) / 2) +
' cm'
),
r2.push(i2 + ' 0 m'),
r2.push(i2 + ' ' + a2 + ' ' + a2 + ' ' + i2 + ' 0 ' + i2 + ' c'),
r2.push(
'-' + a2 + ' ' + i2 + ' -' + i2 + ' ' + a2 + ' -' + i2 + ' 0 c'
),
r2.push(
'-' + i2 + ' -' + a2 + ' -' + a2 + ' -' + i2 + ' 0 -' + i2 + ' c'
),
r2.push(a2 + ' -' + i2 + ' ' + i2 + ' -' + a2 + ' ' + i2 + ' 0 c'),
r2.push('f'),
r2.push('Q'),
(e2.stream = r2.join('\n')),
e2
)
},
},
Cross: {
createAppearanceStream: function (t3) {
var e2 = { D: { Off: At.RadioButton.Cross.OffPushDown }, N: {} }
return (
(e2.N[t3] = At.RadioButton.Cross.YesNormal),
(e2.D[t3] = At.RadioButton.Cross.YesPushDown),
e2
)
},
getCA: function () {
return '8'
},
YesNormal: function (t3) {
var e2 = V$1(t3)
e2.scope = t3.scope
var r2 = [],
n2 = At.internal.calculateCross(t3)
return (
r2.push('q'),
r2.push(
'1 1 ' +
U$1(At.internal.getWidth(t3) - 2) +
' ' +
U$1(At.internal.getHeight(t3) - 2) +
' re'
),
r2.push('W'),
r2.push('n'),
r2.push(U$1(n2.x1.x) + ' ' + U$1(n2.x1.y) + ' m'),
r2.push(U$1(n2.x2.x) + ' ' + U$1(n2.x2.y) + ' l'),
r2.push(U$1(n2.x4.x) + ' ' + U$1(n2.x4.y) + ' m'),
r2.push(U$1(n2.x3.x) + ' ' + U$1(n2.x3.y) + ' l'),
r2.push('s'),
r2.push('Q'),
(e2.stream = r2.join('\n')),
e2
)
},
YesPushDown: function (t3) {
var e2 = V$1(t3)
e2.scope = t3.scope
var r2 = At.internal.calculateCross(t3),
n2 = []
return (
n2.push('0.749023 g'),
n2.push(
'0 0 ' +
U$1(At.internal.getWidth(t3)) +
' ' +
U$1(At.internal.getHeight(t3)) +
' re'
),
n2.push('f'),
n2.push('q'),
n2.push(
'1 1 ' +
U$1(At.internal.getWidth(t3) - 2) +
' ' +
U$1(At.internal.getHeight(t3) - 2) +
' re'
),
n2.push('W'),
n2.push('n'),
n2.push(U$1(r2.x1.x) + ' ' + U$1(r2.x1.y) + ' m'),
n2.push(U$1(r2.x2.x) + ' ' + U$1(r2.x2.y) + ' l'),
n2.push(U$1(r2.x4.x) + ' ' + U$1(r2.x4.y) + ' m'),
n2.push(U$1(r2.x3.x) + ' ' + U$1(r2.x3.y) + ' l'),
n2.push('s'),
n2.push('Q'),
(e2.stream = n2.join('\n')),
e2
)
},
OffPushDown: function (t3) {
var e2 = V$1(t3)
e2.scope = t3.scope
var r2 = []
return (
r2.push('0.749023 g'),
r2.push(
'0 0 ' +
U$1(At.internal.getWidth(t3)) +
' ' +
U$1(At.internal.getHeight(t3)) +
' re'
),
r2.push('f'),
(e2.stream = r2.join('\n')),
e2
)
},
},
},
createDefaultAppearanceStream: function (t3) {
var e2 = t3.scope.internal.getFont(t3.fontName, t3.fontStyle).id,
r2 = t3.scope.__private__.encodeColorString(t3.color)
return '/' + e2 + ' ' + t3.fontSize + ' Tf ' + r2
},
}
;(At.internal = {
Bezier_C: 0.551915024494,
calculateCross: function (t3) {
var e2 = At.internal.getWidth(t3),
r2 = At.internal.getHeight(t3),
n2 = Math.min(e2, r2)
return {
x1: { x: (e2 - n2) / 2, y: (r2 - n2) / 2 + n2 },
x2: { x: (e2 - n2) / 2 + n2, y: (r2 - n2) / 2 },
x3: { x: (e2 - n2) / 2, y: (r2 - n2) / 2 },
x4: { x: (e2 - n2) / 2 + n2, y: (r2 - n2) / 2 + n2 },
}
},
}),
(At.internal.getWidth = function (e2) {
var r2 = 0
return 'object' === _typeof$3(e2) && (r2 = W(e2.Rect[2])), r2
}),
(At.internal.getHeight = function (e2) {
var r2 = 0
return 'object' === _typeof$3(e2) && (r2 = W(e2.Rect[3])), r2
})
var xt = (q.addField = function (t3) {
if ((at(this, t3), !(t3 instanceof lt$1)))
throw new Error('Invalid argument passed to jsPDF.addField.')
var e2
return (
(e2 = t3).scope.internal.acroformPlugin.printedOut &&
((e2.scope.internal.acroformPlugin.printedOut = false),
(e2.scope.internal.acroformPlugin.acroFormDictionaryRoot = null)),
e2.scope.internal.acroformPlugin.acroFormDictionaryRoot.Fields.push(e2),
(t3.page = t3.scope.internal.getCurrentPageInfo().pageNumber),
this
)
})
;(q.AcroFormChoiceField = ft),
(q.AcroFormListBox = dt),
(q.AcroFormComboBox = pt),
(q.AcroFormEditBox = gt),
(q.AcroFormButton = mt),
(q.AcroFormPushButton = vt),
(q.AcroFormRadioButton = bt),
(q.AcroFormCheckBox = wt),
(q.AcroFormTextField = Nt),
(q.AcroFormPasswordField = Lt),
(q.AcroFormAppearance = At),
(q.AcroForm = {
ChoiceField: ft,
ListBox: dt,
ComboBox: pt,
EditBox: gt,
Button: mt,
PushButton: vt,
RadioButton: bt,
CheckBox: wt,
TextField: Nt,
PasswordField: Lt,
Appearance: At,
}),
(E$1.AcroForm = {
ChoiceField: ft,
ListBox: dt,
ComboBox: pt,
EditBox: gt,
Button: mt,
PushButton: vt,
RadioButton: bt,
CheckBox: wt,
TextField: Nt,
PasswordField: Lt,
Appearance: At,
})
E$1.AcroForm
function _t$2(t3) {
return t3.reduce(function (t4, e2, r2) {
return (t4[e2] = r2), t4
}, {})
}
!(function (e2) {
e2.__addimage__ = {}
var r2 = 'UNKNOWN',
n2 = {
PNG: [[137, 80, 78, 71]],
TIFF: [
[77, 77, 0, 42],
[73, 73, 42, 0],
],
JPEG: [
[255, 216, 255, 224, void 0, void 0, 74, 70, 73, 70, 0],
[255, 216, 255, 225, void 0, void 0, 69, 120, 105, 102, 0, 0],
[255, 216, 255, 219],
[255, 216, 255, 238],
],
JPEG2000: [[0, 0, 0, 12, 106, 80, 32, 32]],
GIF87a: [[71, 73, 70, 56, 55, 97]],
GIF89a: [[71, 73, 70, 56, 57, 97]],
WEBP: [[82, 73, 70, 70, void 0, void 0, void 0, void 0, 87, 69, 66, 80]],
BMP: [
[66, 77],
[66, 65],
[67, 73],
[67, 80],
[73, 67],
[80, 84],
],
},
i2 = (e2.__addimage__.getImageFileTypeByImageData = function (t3, e3) {
var i3,
a3,
o3,
s3,
c3,
u2 = r2
if (
'RGBA' === (e3 = e3 || r2) ||
(void 0 !== t3.data &&
t3.data instanceof Uint8ClampedArray &&
'height' in t3 &&
'width' in t3)
)
return 'RGBA'
if (x2(t3))
for (c3 in n2)
for (o3 = n2[c3], i3 = 0; i3 < o3.length; i3 += 1) {
for (s3 = true, a3 = 0; a3 < o3[i3].length; a3 += 1)
if (void 0 !== o3[i3][a3] && o3[i3][a3] !== t3[a3]) {
s3 = false
break
}
if (true === s3) {
u2 = c3
break
}
}
else
for (c3 in n2)
for (o3 = n2[c3], i3 = 0; i3 < o3.length; i3 += 1) {
for (s3 = true, a3 = 0; a3 < o3[i3].length; a3 += 1)
if (void 0 !== o3[i3][a3] && o3[i3][a3] !== t3.charCodeAt(a3)) {
s3 = false
break
}
if (true === s3) {
u2 = c3
break
}
}
return u2 === r2 && e3 !== r2 && (u2 = e3), u2
}),
a2 = function t3(e3) {
for (
var r3 = this.internal.write,
n3 = this.internal.putStream,
i3 = (0, this.internal.getFilters)();
-1 !== i3.indexOf('FlateEncode');
)
i3.splice(i3.indexOf('FlateEncode'), 1)
e3.objectId = this.internal.newObject()
var a3 = []
if (
(a3.push({ key: 'Type', value: '/XObject' }),
a3.push({ key: 'Subtype', value: '/Image' }),
a3.push({ key: 'Width', value: e3.width }),
a3.push({ key: 'Height', value: e3.height }),
e3.colorSpace === b2.INDEXED
? a3.push({
key: 'ColorSpace',
value:
'[/Indexed /DeviceRGB ' +
(e3.palette.length / 3 - 1) +
' ' +
('sMask' in e3 && void 0 !== e3.sMask
? e3.objectId + 2
: e3.objectId + 1) +
' 0 R]',
})
: (a3.push({ key: 'ColorSpace', value: '/' + e3.colorSpace }),
e3.colorSpace === b2.DEVICE_CMYK &&
a3.push({ key: 'Decode', value: '[1 0 1 0 1 0 1 0]' })),
a3.push({ key: 'BitsPerComponent', value: e3.bitsPerComponent }),
'decodeParameters' in e3 &&
void 0 !== e3.decodeParameters &&
a3.push({
key: 'DecodeParms',
value: '<<' + e3.decodeParameters + '>>',
}),
'transparency' in e3 && Array.isArray(e3.transparency))
) {
for (var o3 = '', s3 = 0, c3 = e3.transparency.length; s3 < c3; s3++)
o3 += e3.transparency[s3] + ' ' + e3.transparency[s3] + ' '
a3.push({ key: 'Mask', value: '[' + o3 + ']' })
}
void 0 !== e3.sMask &&
a3.push({ key: 'SMask', value: e3.objectId + 1 + ' 0 R' })
var u2 = void 0 !== e3.filter ? ['/' + e3.filter] : void 0
if (
(n3({
data: e3.data,
additionalKeyValues: a3,
alreadyAppliedFilters: u2,
objectId: e3.objectId,
}),
r3('endobj'),
'sMask' in e3 && void 0 !== e3.sMask)
) {
var h3 =
'/Predictor ' +
e3.predictor +
' /Colors 1 /BitsPerComponent ' +
e3.bitsPerComponent +
' /Columns ' +
e3.width,
l3 = {
width: e3.width,
height: e3.height,
colorSpace: 'DeviceGray',
bitsPerComponent: e3.bitsPerComponent,
decodeParameters: h3,
data: e3.sMask,
}
'filter' in e3 && (l3.filter = e3.filter), t3.call(this, l3)
}
if (e3.colorSpace === b2.INDEXED) {
var f3 = this.internal.newObject()
n3({ data: _2(new Uint8Array(e3.palette)), objectId: f3 }), r3('endobj')
}
},
o2 = function () {
var t3 = this.internal.collections.addImage_images
for (var e3 in t3) a2.call(this, t3[e3])
},
s2 = function () {
var t3,
e3 = this.internal.collections.addImage_images,
r3 = this.internal.write
for (var n3 in e3) r3('/I' + (t3 = e3[n3]).index, t3.objectId, '0', 'R')
},
c2 = function () {
this.internal.collections.addImage_images ||
((this.internal.collections.addImage_images = {}),
this.internal.events.subscribe('putResources', o2),
this.internal.events.subscribe('putXobjectDict', s2))
},
h2 = function () {
var t3 = this.internal.collections.addImage_images
return c2.call(this), t3
},
l2 = function () {
return Object.keys(this.internal.collections.addImage_images).length
},
f2 = function (t3) {
return 'function' == typeof e2['process' + t3.toUpperCase()]
},
d3 = function (e3) {
return 'object' === _typeof$3(e3) && 1 === e3.nodeType
},
p2 = function (t3, r3) {
if ('IMG' === t3.nodeName && t3.hasAttribute('src')) {
var n3 = '' + t3.getAttribute('src')
if (0 === n3.indexOf('data:image/'))
return u$2(unescape(n3).split('base64,').pop())
var i3 = e2.loadFile(n3, true)
if (void 0 !== i3) return i3
}
if ('CANVAS' === t3.nodeName) {
if (0 === t3.width || 0 === t3.height)
throw new Error(
'Given canvas must have data. Canvas width: ' +
t3.width +
', height: ' +
t3.height
)
var a3
switch (r3) {
case 'PNG':
a3 = 'image/png'
break
case 'WEBP':
a3 = 'image/webp'
break
case 'JPEG':
case 'JPG':
default:
a3 = 'image/jpeg'
}
return u$2(t3.toDataURL(a3, 1).split('base64,').pop())
}
},
g2 = function (t3) {
var e3 = this.internal.collections.addImage_images
if (e3) {
for (var r3 in e3) if (t3 === e3[r3].alias) return e3[r3]
}
},
m2 = function (t3, e3, r3) {
return (
t3 || e3 || ((t3 = -96), (e3 = -96)),
t3 < 0 && (t3 = (-1 * r3.width * 72) / t3 / this.internal.scaleFactor),
e3 < 0 && (e3 = (-1 * r3.height * 72) / e3 / this.internal.scaleFactor),
0 === t3 && (t3 = (e3 * r3.width) / r3.height),
0 === e3 && (e3 = (t3 * r3.height) / r3.width),
[t3, e3]
)
},
v4 = function (t3, e3, r3, n3, i3, a3) {
var o3 = m2.call(this, r3, n3, i3),
s3 = this.internal.getCoordinateString,
c3 = this.internal.getVerticalCoordinateString,
u2 = h2.call(this)
if (((r3 = o3[0]), (n3 = o3[1]), (u2[i3.index] = i3), a3)) {
a3 *= Math.PI / 180
var l3 = Math.cos(a3),
f3 = Math.sin(a3),
d4 = function (t4) {
return t4.toFixed(4)
},
p3 = [d4(l3), d4(f3), d4(-1 * f3), d4(l3), 0, 0, 'cm']
}
this.internal.write('q'),
a3
? (this.internal.write(
[1, '0', '0', 1, s3(t3), c3(e3 + n3), 'cm'].join(' ')
),
this.internal.write(p3.join(' ')),
this.internal.write(
[s3(r3), '0', '0', s3(n3), '0', '0', 'cm'].join(' ')
))
: this.internal.write(
[s3(r3), '0', '0', s3(n3), s3(t3), c3(e3 + n3), 'cm'].join(' ')
),
this.isAdvancedAPI() &&
this.internal.write([1, 0, 0, -1, 0, 0, 'cm'].join(' ')),
this.internal.write('/I' + i3.index + ' Do'),
this.internal.write('Q')
},
b2 = (e2.color_spaces = {
DEVICE_RGB: 'DeviceRGB',
DEVICE_GRAY: 'DeviceGray',
DEVICE_CMYK: 'DeviceCMYK',
CAL_GREY: 'CalGray',
CAL_RGB: 'CalRGB',
LAB: 'Lab',
ICC_BASED: 'ICCBased',
INDEXED: 'Indexed',
PATTERN: 'Pattern',
SEPARATION: 'Separation',
DEVICE_N: 'DeviceN',
})
e2.decode = {
DCT_DECODE: 'DCTDecode',
FLATE_DECODE: 'FlateDecode',
LZW_DECODE: 'LZWDecode',
JPX_DECODE: 'JPXDecode',
JBIG2_DECODE: 'JBIG2Decode',
ASCII85_DECODE: 'ASCII85Decode',
ASCII_HEX_DECODE: 'ASCIIHexDecode',
RUN_LENGTH_DECODE: 'RunLengthDecode',
CCITT_FAX_DECODE: 'CCITTFaxDecode',
}
var y2 = (e2.image_compression = {
NONE: 'NONE',
FAST: 'FAST',
MEDIUM: 'MEDIUM',
SLOW: 'SLOW',
}),
w2 = (e2.__addimage__.sHashCode = function (t3) {
var e3,
r3,
n3 = 0
if ('string' == typeof t3)
for (r3 = t3.length, e3 = 0; e3 < r3; e3++)
(n3 = (n3 << 5) - n3 + t3.charCodeAt(e3)), (n3 |= 0)
else if (x2(t3))
for (r3 = t3.byteLength / 2, e3 = 0; e3 < r3; e3++)
(n3 = (n3 << 5) - n3 + t3[e3]), (n3 |= 0)
return n3
}),
N2 = (e2.__addimage__.validateStringAsBase64 = function (t3) {
;(t3 = t3 || '').toString().trim()
var e3 = true
return (
0 === t3.length && (e3 = false),
t3.length % 4 != 0 && (e3 = false),
false === /^[A-Za-z0-9+/]+$/.test(t3.substr(0, t3.length - 2)) &&
(e3 = false),
false ===
/^[A-Za-z0-9/][A-Za-z0-9+/]|[A-Za-z0-9+/]=|==$/.test(t3.substr(-2)) &&
(e3 = false),
e3
)
}),
L2 = (e2.__addimage__.extractImageFromDataUrl = function (t3) {
var e3 = (t3 = t3 || '').split('base64,'),
r3 = null
if (2 === e3.length) {
var n3 = /^data:(\w*\/\w*);*(charset=(?!charset=)[\w=-]*)*;*$/.exec(
e3[0]
)
Array.isArray(n3) &&
(r3 = { mimeType: n3[1], charset: n3[2], data: e3[1] })
}
return r3
}),
A2 = (e2.__addimage__.supportsArrayBuffer = function () {
return (
'undefined' != typeof ArrayBuffer && 'undefined' != typeof Uint8Array
)
})
e2.__addimage__.isArrayBuffer = function (t3) {
return A2() && t3 instanceof ArrayBuffer
}
var x2 = (e2.__addimage__.isArrayBufferView = function (t3) {
return (
A2() &&
'undefined' != typeof Uint32Array &&
(t3 instanceof Int8Array ||
t3 instanceof Uint8Array ||
('undefined' != typeof Uint8ClampedArray &&
t3 instanceof Uint8ClampedArray) ||
t3 instanceof Int16Array ||
t3 instanceof Uint16Array ||
t3 instanceof Int32Array ||
t3 instanceof Uint32Array ||
t3 instanceof Float32Array ||
t3 instanceof Float64Array)
)
}),
S2 = (e2.__addimage__.binaryStringToUint8Array = function (t3) {
for (var e3 = t3.length, r3 = new Uint8Array(e3), n3 = 0; n3 < e3; n3++)
r3[n3] = t3.charCodeAt(n3)
return r3
}),
_2 = (e2.__addimage__.arrayBufferToBinaryString = function (t3) {
for (
var e3 = '', r3 = x2(t3) ? t3 : new Uint8Array(t3), n3 = 0;
n3 < r3.length;
n3 += 8192
)
e3 += String.fromCharCode.apply(null, r3.subarray(n3, n3 + 8192))
return e3
})
e2.addImage = function () {
var e3, n3, i3, a3, o3, s3, u2, h3, l3
if (
('number' == typeof arguments[1]
? ((n3 = r2),
(i3 = arguments[1]),
(a3 = arguments[2]),
(o3 = arguments[3]),
(s3 = arguments[4]),
(u2 = arguments[5]),
(h3 = arguments[6]),
(l3 = arguments[7]))
: ((n3 = arguments[1]),
(i3 = arguments[2]),
(a3 = arguments[3]),
(o3 = arguments[4]),
(s3 = arguments[5]),
(u2 = arguments[6]),
(h3 = arguments[7]),
(l3 = arguments[8])),
'object' === _typeof$3((e3 = arguments[0])) &&
!d3(e3) &&
'imageData' in e3)
) {
var f3 = e3
;(e3 = f3.imageData),
(n3 = f3.format || n3 || r2),
(i3 = f3.x || i3 || 0),
(a3 = f3.y || a3 || 0),
(o3 = f3.w || f3.width || o3),
(s3 = f3.h || f3.height || s3),
(u2 = f3.alias || u2),
(h3 = f3.compression || h3),
(l3 = f3.rotation || f3.angle || l3)
}
var p3 = this.internal.getFilters()
if (
(void 0 === h3 && -1 !== p3.indexOf('FlateEncode') && (h3 = 'SLOW'),
isNaN(i3) || isNaN(a3))
)
throw new Error('Invalid coordinates passed to jsPDF.addImage')
c2.call(this)
var g3 = P2.call(this, e3, n3, u2, h3)
return v4.call(this, i3, a3, o3, s3, g3, l3), this
}
var P2 = function (t3, n3, a3, o3) {
var s3, c3, u2
if ('string' == typeof t3 && i2(t3) === r2) {
t3 = unescape(t3)
var h3 = k2(t3, false)
;('' !== h3 || void 0 !== (h3 = e2.loadFile(t3, true))) && (t3 = h3)
}
if ((d3(t3) && (t3 = p2(t3, n3)), (n3 = i2(t3, n3)), !f2(n3)))
throw new Error(
"addImage does not support files of type '" +
n3 +
"', please ensure that a plugin for '" +
n3 +
"' support is added."
)
if (
((null == (u2 = a3) || 0 === u2.length) &&
(a3 = (function (t4) {
return 'string' == typeof t4 || x2(t4)
? w2(t4)
: x2(t4.data)
? w2(t4.data)
: null
})(t3)),
(s3 = g2.call(this, a3)) ||
(A2() &&
(t3 instanceof Uint8Array ||
'RGBA' === n3 ||
((c3 = t3), (t3 = S2(t3)))),
(s3 = this['process' + n3.toUpperCase()](
t3,
l2.call(this),
a3,
(function (t4) {
return (
t4 && 'string' == typeof t4 && (t4 = t4.toUpperCase()),
t4 in e2.image_compression ? t4 : y2.NONE
)
})(o3),
c3
))),
!s3)
)
throw new Error(
'An unknown error occurred whilst processing the image.'
)
return s3
},
k2 = (e2.__addimage__.convertBase64ToBinaryString = function (t3, e3) {
var r3
e3 = 'boolean' != typeof e3 || e3
var n3,
i3 = ''
if ('string' == typeof t3) {
n3 = null !== (r3 = L2(t3)) ? r3.data : t3
try {
i3 = u$2(n3)
} catch (t4) {
if (e3)
throw N2(n3)
? new Error(
'atob-Error in jsPDF.convertBase64ToBinaryString ' +
t4.message
)
: new Error(
'Supplied Data is not a valid base64-String jsPDF.convertBase64ToBinaryString '
)
}
}
return i3
})
e2.getImageProperties = function (t3) {
var n3,
a3,
o3 = ''
if (
(d3(t3) && (t3 = p2(t3)),
'string' == typeof t3 &&
i2(t3) === r2 &&
('' === (o3 = k2(t3, false)) && (o3 = e2.loadFile(t3) || ''),
(t3 = o3)),
(a3 = i2(t3)),
!f2(a3))
)
throw new Error(
"addImage does not support files of type '" +
a3 +
"', please ensure that a plugin for '" +
a3 +
"' support is added."
)
if (
(!A2() || t3 instanceof Uint8Array || (t3 = S2(t3)),
!(n3 = this['process' + a3.toUpperCase()](t3)))
)
throw new Error('An unknown error occurred whilst processing the image')
return (n3.fileType = a3), n3
}
})(E$1.API),
(function (t3) {
var e2 = function (t4) {
if (void 0 !== t4 && '' != t4) return true
}
E$1.API.events.push([
'addPage',
function (t4) {
this.internal.getPageInfo(t4.pageNumber).pageContext.annotations = []
},
]),
t3.events.push([
'putPage',
function (t4) {
for (
var r2,
n2,
i2,
a2 = this.internal.getCoordinateString,
o2 = this.internal.getVerticalCoordinateString,
s2 = this.internal.getPageInfoByObjId(t4.objId),
c2 = t4.pageContext.annotations,
u2 = false,
h2 = 0;
h2 < c2.length && !u2;
h2++
)
switch ((r2 = c2[h2]).type) {
case 'link':
;(e2(r2.options.url) || e2(r2.options.pageNumber)) &&
(u2 = true)
break
case 'reference':
case 'text':
case 'freetext':
u2 = true
}
if (0 != u2) {
this.internal.write('/Annots [')
for (var l2 = 0; l2 < c2.length; l2++) {
r2 = c2[l2]
var f2 = this.internal.pdfEscape,
d3 = this.internal.getEncryptor(t4.objId)
switch (r2.type) {
case 'reference':
this.internal.write(' ' + r2.object.objId + ' 0 R ')
break
case 'text':
var p2 = this.internal.newAdditionalObject(),
g2 = this.internal.newAdditionalObject(),
m2 = this.internal.getEncryptor(p2.objId),
v4 = r2.title || 'Note'
;(i2 =
'<>'),
(p2.content = i2)
var b2 = p2.objId + ' 0 R'
;(i2 =
'<>'),
(g2.content = i2),
this.internal.write(p2.objId, '0 R', g2.objId, '0 R')
break
case 'freetext':
n2 =
'/Rect [' +
a2(r2.bounds.x) +
' ' +
o2(r2.bounds.y) +
' ' +
a2(r2.bounds.x + r2.bounds.w) +
' ' +
o2(r2.bounds.y + r2.bounds.h) +
'] '
var y2 = r2.color || '#000000'
;(i2 =
'<>'),
this.internal.write(i2)
break
case 'link':
if (r2.options.name) {
var w2 = this.annotations._nameMap[r2.options.name]
;(r2.options.pageNumber = w2.page), (r2.options.top = w2.y)
} else r2.options.top || (r2.options.top = 0)
if (
((n2 =
'/Rect [' +
r2.finalBounds.x +
' ' +
r2.finalBounds.y +
' ' +
r2.finalBounds.w +
' ' +
r2.finalBounds.h +
'] '),
(i2 = ''),
r2.options.url)
)
i2 =
'<>'
else if (r2.options.pageNumber) {
switch (
((i2 =
'<>'), this.internal.write(i2))
}
}
this.internal.write(']')
}
},
]),
(t3.createAnnotation = function (t4) {
var e3 = this.internal.getCurrentPageInfo()
switch (t4.type) {
case 'link':
this.link(t4.bounds.x, t4.bounds.y, t4.bounds.w, t4.bounds.h, t4)
break
case 'text':
case 'freetext':
e3.pageContext.annotations.push(t4)
}
}),
(t3.link = function (t4, e3, r2, n2, i2) {
var a2 = this.internal.getCurrentPageInfo(),
o2 = this.internal.getCoordinateString,
s2 = this.internal.getVerticalCoordinateString
a2.pageContext.annotations.push({
finalBounds: { x: o2(t4), y: s2(e3), w: o2(t4 + r2), h: s2(e3 + n2) },
options: i2,
type: 'link',
})
}),
(t3.textWithLink = function (t4, e3, r2, n2) {
var i2,
a2,
o2 = this.getTextWidth(t4),
s2 = this.internal.getLineHeight() / this.internal.scaleFactor
if (void 0 !== n2.maxWidth) {
a2 = n2.maxWidth
var c2 = this.splitTextToSize(t4, a2).length
i2 = Math.ceil(s2 * c2)
} else (a2 = o2), (i2 = s2)
return (
this.text(t4, e3, r2, n2),
(r2 += 0.2 * s2),
'center' === n2.align && (e3 -= o2 / 2),
'right' === n2.align && (e3 -= o2),
this.link(e3, r2 - s2, a2, i2, n2),
o2
)
}),
(t3.getTextWidth = function (t4) {
var e3 = this.internal.getFontSize()
return (this.getStringUnitWidth(t4) * e3) / this.internal.scaleFactor
})
})(E$1.API),
(function (t3) {
var e2 = {
1569: [65152],
1570: [65153, 65154],
1571: [65155, 65156],
1572: [65157, 65158],
1573: [65159, 65160],
1574: [65161, 65162, 65163, 65164],
1575: [65165, 65166],
1576: [65167, 65168, 65169, 65170],
1577: [65171, 65172],
1578: [65173, 65174, 65175, 65176],
1579: [65177, 65178, 65179, 65180],
1580: [65181, 65182, 65183, 65184],
1581: [65185, 65186, 65187, 65188],
1582: [65189, 65190, 65191, 65192],
1583: [65193, 65194],
1584: [65195, 65196],
1585: [65197, 65198],
1586: [65199, 65200],
1587: [65201, 65202, 65203, 65204],
1588: [65205, 65206, 65207, 65208],
1589: [65209, 65210, 65211, 65212],
1590: [65213, 65214, 65215, 65216],
1591: [65217, 65218, 65219, 65220],
1592: [65221, 65222, 65223, 65224],
1593: [65225, 65226, 65227, 65228],
1594: [65229, 65230, 65231, 65232],
1601: [65233, 65234, 65235, 65236],
1602: [65237, 65238, 65239, 65240],
1603: [65241, 65242, 65243, 65244],
1604: [65245, 65246, 65247, 65248],
1605: [65249, 65250, 65251, 65252],
1606: [65253, 65254, 65255, 65256],
1607: [65257, 65258, 65259, 65260],
1608: [65261, 65262],
1609: [65263, 65264, 64488, 64489],
1610: [65265, 65266, 65267, 65268],
1649: [64336, 64337],
1655: [64477],
1657: [64358, 64359, 64360, 64361],
1658: [64350, 64351, 64352, 64353],
1659: [64338, 64339, 64340, 64341],
1662: [64342, 64343, 64344, 64345],
1663: [64354, 64355, 64356, 64357],
1664: [64346, 64347, 64348, 64349],
1667: [64374, 64375, 64376, 64377],
1668: [64370, 64371, 64372, 64373],
1670: [64378, 64379, 64380, 64381],
1671: [64382, 64383, 64384, 64385],
1672: [64392, 64393],
1676: [64388, 64389],
1677: [64386, 64387],
1678: [64390, 64391],
1681: [64396, 64397],
1688: [64394, 64395],
1700: [64362, 64363, 64364, 64365],
1702: [64366, 64367, 64368, 64369],
1705: [64398, 64399, 64400, 64401],
1709: [64467, 64468, 64469, 64470],
1711: [64402, 64403, 64404, 64405],
1713: [64410, 64411, 64412, 64413],
1715: [64406, 64407, 64408, 64409],
1722: [64414, 64415],
1723: [64416, 64417, 64418, 64419],
1726: [64426, 64427, 64428, 64429],
1728: [64420, 64421],
1729: [64422, 64423, 64424, 64425],
1733: [64480, 64481],
1734: [64473, 64474],
1735: [64471, 64472],
1736: [64475, 64476],
1737: [64482, 64483],
1739: [64478, 64479],
1740: [64508, 64509, 64510, 64511],
1744: [64484, 64485, 64486, 64487],
1746: [64430, 64431],
1747: [64432, 64433],
},
r2 = {
65247: { 65154: 65269, 65156: 65271, 65160: 65273, 65166: 65275 },
65248: { 65154: 65270, 65156: 65272, 65160: 65274, 65166: 65276 },
65165: { 65247: { 65248: { 65258: 65010 } } },
1617: {
1612: 64606,
1613: 64607,
1614: 64608,
1615: 64609,
1616: 64610,
},
},
n2 = { 1612: 64606, 1613: 64607, 1614: 64608, 1615: 64609, 1616: 64610 },
i2 = [1570, 1571, 1573, 1575]
t3.__arabicParser__ = {}
var a2 = (t3.__arabicParser__.isInArabicSubstitutionA = function (t4) {
return void 0 !== e2[t4.charCodeAt(0)]
}),
o2 = (t3.__arabicParser__.isArabicLetter = function (t4) {
return (
'string' == typeof t4 &&
/^[\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF\uFB50-\uFDFF\uFE70-\uFEFF]+$/.test(
t4
)
)
}),
s2 = (t3.__arabicParser__.isArabicEndLetter = function (t4) {
return o2(t4) && a2(t4) && e2[t4.charCodeAt(0)].length <= 2
}),
c2 = (t3.__arabicParser__.isArabicAlfLetter = function (t4) {
return o2(t4) && i2.indexOf(t4.charCodeAt(0)) >= 0
})
t3.__arabicParser__.arabicLetterHasIsolatedForm = function (t4) {
return o2(t4) && a2(t4) && e2[t4.charCodeAt(0)].length >= 1
}
var u2 = (t3.__arabicParser__.arabicLetterHasFinalForm = function (t4) {
return o2(t4) && a2(t4) && e2[t4.charCodeAt(0)].length >= 2
})
t3.__arabicParser__.arabicLetterHasInitialForm = function (t4) {
return o2(t4) && a2(t4) && e2[t4.charCodeAt(0)].length >= 3
}
var h2 = (t3.__arabicParser__.arabicLetterHasMedialForm = function (t4) {
return o2(t4) && a2(t4) && 4 == e2[t4.charCodeAt(0)].length
}),
l2 = (t3.__arabicParser__.resolveLigatures = function (t4) {
var e3 = 0,
n3 = r2,
i3 = '',
a3 = 0
for (e3 = 0; e3 < t4.length; e3 += 1)
void 0 !== n3[t4.charCodeAt(e3)]
? (a3++,
'number' == typeof (n3 = n3[t4.charCodeAt(e3)]) &&
((i3 += String.fromCharCode(n3)), (n3 = r2), (a3 = 0)),
e3 === t4.length - 1 &&
((n3 = r2),
(i3 += t4.charAt(e3 - (a3 - 1))),
(e3 -= a3 - 1),
(a3 = 0)))
: ((n3 = r2), (i3 += t4.charAt(e3 - a3)), (e3 -= a3), (a3 = 0))
return i3
})
t3.__arabicParser__.isArabicDiacritic = function (t4) {
return void 0 !== t4 && void 0 !== n2[t4.charCodeAt(0)]
}
var f2 = (t3.__arabicParser__.getCorrectForm = function (t4, e3, r3) {
return o2(t4)
? false === a2(t4)
? -1
: !u2(t4) ||
(!o2(e3) && !o2(r3)) ||
(!o2(r3) && s2(e3)) ||
(s2(t4) && !o2(e3)) ||
(s2(t4) && c2(e3)) ||
(s2(t4) && s2(e3))
? 0
: h2(t4) && o2(e3) && !s2(e3) && o2(r3) && u2(r3)
? 3
: s2(t4) || !o2(r3)
? 1
: 2
: -1
}),
d3 = function (t4) {
var r3 = 0,
n3 = 0,
i3 = 0,
a3 = '',
s3 = '',
c3 = '',
u3 = (t4 = t4 || '').split('\\s+'),
h3 = []
for (r3 = 0; r3 < u3.length; r3 += 1) {
for (h3.push(''), n3 = 0; n3 < u3[r3].length; n3 += 1)
(a3 = u3[r3][n3]),
(s3 = u3[r3][n3 - 1]),
(c3 = u3[r3][n3 + 1]),
o2(a3)
? ((i3 = f2(a3, s3, c3)),
(h3[r3] +=
-1 !== i3
? String.fromCharCode(e2[a3.charCodeAt(0)][i3])
: a3))
: (h3[r3] += a3)
h3[r3] = l2(h3[r3])
}
return h3.join(' ')
},
p2 =
(t3.__arabicParser__.processArabic =
t3.processArabic =
function () {
var t4,
e3 =
'string' == typeof arguments[0]
? arguments[0]
: arguments[0].text,
r3 = []
if (Array.isArray(e3)) {
var n3 = 0
for (r3 = [], n3 = 0; n3 < e3.length; n3 += 1)
Array.isArray(e3[n3])
? r3.push([d3(e3[n3][0]), e3[n3][1], e3[n3][2]])
: r3.push([d3(e3[n3])])
t4 = r3
} else t4 = d3(e3)
return 'string' == typeof arguments[0]
? t4
: ((arguments[0].text = t4), arguments[0])
})
t3.events.push(['preProcessText', p2])
})(E$1.API),
(E$1.API.autoPrint = function (t3) {
var e2
switch (
(((t3 = t3 || {}).variant = t3.variant || 'non-conform'), t3.variant)
) {
case 'javascript':
this.addJS('print({});')
break
case 'non-conform':
default:
this.internal.events.subscribe('postPutResources', function () {
;(e2 = this.internal.newObject()),
this.internal.out('<<'),
this.internal.out('/S /Named'),
this.internal.out('/Type /Action'),
this.internal.out('/N /Print'),
this.internal.out('>>'),
this.internal.out('endobj')
}),
this.internal.events.subscribe('putCatalog', function () {
this.internal.out('/OpenAction ' + e2 + ' 0 R')
})
}
return this
}),
(function (t3) {
var e2 = function () {
var t4 = void 0
Object.defineProperty(this, 'pdf', {
get: function () {
return t4
},
set: function (e4) {
t4 = e4
},
})
var e3 = 150
Object.defineProperty(this, 'width', {
get: function () {
return e3
},
set: function (t5) {
;(e3 =
isNaN(t5) || false === Number.isInteger(t5) || t5 < 0 ? 150 : t5),
this.getContext('2d').pageWrapXEnabled &&
(this.getContext('2d').pageWrapX = e3 + 1)
},
})
var r2 = 300
Object.defineProperty(this, 'height', {
get: function () {
return r2
},
set: function (t5) {
;(r2 =
isNaN(t5) || false === Number.isInteger(t5) || t5 < 0 ? 300 : t5),
this.getContext('2d').pageWrapYEnabled &&
(this.getContext('2d').pageWrapY = r2 + 1)
},
})
var n2 = []
Object.defineProperty(this, 'childNodes', {
get: function () {
return n2
},
set: function (t5) {
n2 = t5
},
})
var i2 = {}
Object.defineProperty(this, 'style', {
get: function () {
return i2
},
set: function (t5) {
i2 = t5
},
}),
Object.defineProperty(this, 'parentNode', {})
}
;(e2.prototype.getContext = function (t4, e3) {
var r2
if ('2d' !== (t4 = t4 || '2d')) return null
for (r2 in e3)
this.pdf.context2d.hasOwnProperty(r2) &&
(this.pdf.context2d[r2] = e3[r2])
return (this.pdf.context2d._canvas = this), this.pdf.context2d
}),
(e2.prototype.toDataURL = function () {
throw new Error('toDataURL is not implemented.')
}),
t3.events.push([
'initialized',
function () {
;(this.canvas = new e2()), (this.canvas.pdf = this)
},
])
})(E$1.API),
(function (e2) {
var r2 = { left: 0, top: 0, bottom: 0, right: 0 },
n2 = false,
i2 = function () {
void 0 === this.internal.__cell__ &&
((this.internal.__cell__ = {}),
(this.internal.__cell__.padding = 3),
(this.internal.__cell__.headerFunction = void 0),
(this.internal.__cell__.margins = Object.assign({}, r2)),
(this.internal.__cell__.margins.width = this.getPageWidth()),
a2.call(this))
},
a2 = function () {
;(this.internal.__cell__.lastCell = new o2()),
(this.internal.__cell__.pages = 1)
},
o2 = function () {
var t3 = arguments[0]
Object.defineProperty(this, 'x', {
enumerable: true,
get: function () {
return t3
},
set: function (e4) {
t3 = e4
},
})
var e3 = arguments[1]
Object.defineProperty(this, 'y', {
enumerable: true,
get: function () {
return e3
},
set: function (t4) {
e3 = t4
},
})
var r3 = arguments[2]
Object.defineProperty(this, 'width', {
enumerable: true,
get: function () {
return r3
},
set: function (t4) {
r3 = t4
},
})
var n3 = arguments[3]
Object.defineProperty(this, 'height', {
enumerable: true,
get: function () {
return n3
},
set: function (t4) {
n3 = t4
},
})
var i3 = arguments[4]
Object.defineProperty(this, 'text', {
enumerable: true,
get: function () {
return i3
},
set: function (t4) {
i3 = t4
},
})
var a3 = arguments[5]
Object.defineProperty(this, 'lineNumber', {
enumerable: true,
get: function () {
return a3
},
set: function (t4) {
a3 = t4
},
})
var o3 = arguments[6]
return (
Object.defineProperty(this, 'align', {
enumerable: true,
get: function () {
return o3
},
set: function (t4) {
o3 = t4
},
}),
this
)
}
;(o2.prototype.clone = function () {
return new o2(
this.x,
this.y,
this.width,
this.height,
this.text,
this.lineNumber,
this.align
)
}),
(o2.prototype.toArray = function () {
return [
this.x,
this.y,
this.width,
this.height,
this.text,
this.lineNumber,
this.align,
]
}),
(e2.setHeaderFunction = function (t3) {
return (
i2.call(this),
(this.internal.__cell__.headerFunction =
'function' == typeof t3 ? t3 : void 0),
this
)
}),
(e2.getTextDimensions = function (t3, e3) {
i2.call(this)
var r3 = (e3 = e3 || {}).fontSize || this.getFontSize(),
n3 = e3.font || this.getFont(),
a3 = e3.scaleFactor || this.internal.scaleFactor,
o3 = 0,
s3 = 0,
c3 = 0,
u2 = this
if (!Array.isArray(t3) && 'string' != typeof t3) {
if ('number' != typeof t3)
throw new Error(
'getTextDimensions expects text-parameter to be of type String or type Number or an Array of Strings.'
)
t3 = String(t3)
}
var h2 = e3.maxWidth
h2 > 0
? 'string' == typeof t3
? (t3 = this.splitTextToSize(t3, h2))
: '[object Array]' === Object.prototype.toString.call(t3) &&
(t3 = t3.reduce(function (t4, e4) {
return t4.concat(u2.splitTextToSize(e4, h2))
}, []))
: (t3 = Array.isArray(t3) ? t3 : [t3])
for (var l2 = 0; l2 < t3.length; l2++)
o3 < (c3 = this.getStringUnitWidth(t3[l2], { font: n3 }) * r3) &&
(o3 = c3)
return (
0 !== o3 && (s3 = t3.length),
{
w: (o3 /= a3),
h: Math.max(
(s3 * r3 * this.getLineHeightFactor() -
r3 * (this.getLineHeightFactor() - 1)) /
a3,
0
),
}
)
}),
(e2.cellAddPage = function () {
i2.call(this), this.addPage()
var t3 = this.internal.__cell__.margins || r2
return (
(this.internal.__cell__.lastCell = new o2(
t3.left,
t3.top,
void 0,
void 0
)),
(this.internal.__cell__.pages += 1),
this
)
})
var s2 = (e2.cell = function () {
var t3
;(t3 =
arguments[0] instanceof o2
? arguments[0]
: new o2(
arguments[0],
arguments[1],
arguments[2],
arguments[3],
arguments[4],
arguments[5]
)),
i2.call(this)
var e3 = this.internal.__cell__.lastCell,
a3 = this.internal.__cell__.padding,
s3 = this.internal.__cell__.margins || r2,
c3 = this.internal.__cell__.tableHeaderRow,
u2 = this.internal.__cell__.printHeaders
return (
void 0 !== e3.lineNumber &&
(e3.lineNumber === t3.lineNumber
? ((t3.x = (e3.x || 0) + (e3.width || 0)), (t3.y = e3.y || 0))
: e3.y + e3.height + t3.height + s3.bottom > this.getPageHeight()
? (this.cellAddPage(),
(t3.y = s3.top),
u2 &&
c3 &&
(this.printHeaderRow(t3.lineNumber, true),
(t3.y += c3[0].height)))
: (t3.y = e3.y + e3.height || t3.y)),
void 0 !== t3.text[0] &&
(this.rect(
t3.x,
t3.y,
t3.width,
t3.height,
true === n2 ? 'FD' : void 0
),
'right' === t3.align
? this.text(t3.text, t3.x + t3.width - a3, t3.y + a3, {
align: 'right',
baseline: 'top',
})
: 'center' === t3.align
? this.text(t3.text, t3.x + t3.width / 2, t3.y + a3, {
align: 'center',
baseline: 'top',
maxWidth: t3.width - a3 - a3,
})
: this.text(t3.text, t3.x + a3, t3.y + a3, {
align: 'left',
baseline: 'top',
maxWidth: t3.width - a3 - a3,
})),
(this.internal.__cell__.lastCell = t3),
this
)
})
e2.table = function (e3, n3, u2, h2, l2) {
if ((i2.call(this), !u2)) throw new Error('No data for PDF table.')
var f2,
d3,
p2,
g2,
m2 = [],
v4 = [],
b2 = [],
y2 = {},
w2 = {},
N2 = [],
L2 = [],
A2 = (l2 = l2 || {}).autoSize || false,
x2 = false !== l2.printHeaders,
S2 =
l2.css && void 0 !== l2.css['font-size']
? 16 * l2.css['font-size']
: l2.fontSize || 12,
_2 = l2.margins || Object.assign({ width: this.getPageWidth() }, r2),
P2 = 'number' == typeof l2.padding ? l2.padding : 3,
k2 = l2.headerBackgroundColor || '#c8c8c8',
I2 = l2.headerTextColor || '#000'
if (
(a2.call(this),
(this.internal.__cell__.printHeaders = x2),
(this.internal.__cell__.margins = _2),
(this.internal.__cell__.table_font_size = S2),
(this.internal.__cell__.padding = P2),
(this.internal.__cell__.headerBackgroundColor = k2),
(this.internal.__cell__.headerTextColor = I2),
this.setFontSize(S2),
null == h2)
)
(v4 = m2 = Object.keys(u2[0])),
(b2 = m2.map(function () {
return 'left'
}))
else if (Array.isArray(h2) && 'object' === _typeof$3(h2[0]))
for (
m2 = h2.map(function (t3) {
return t3.name
}),
v4 = h2.map(function (t3) {
return t3.prompt || t3.name || ''
}),
b2 = h2.map(function (t3) {
return t3.align || 'left'
}),
f2 = 0;
f2 < h2.length;
f2 += 1
)
w2[h2[f2].name] = h2[f2].width * (19.049976 / 25.4)
else
Array.isArray(h2) &&
'string' == typeof h2[0] &&
((v4 = m2 = h2),
(b2 = m2.map(function () {
return 'left'
})))
if (A2 || (Array.isArray(h2) && 'string' == typeof h2[0]))
for (f2 = 0; f2 < m2.length; f2 += 1) {
for (
y2[(g2 = m2[f2])] = u2.map(function (t3) {
return t3[g2]
}),
this.setFont(void 0, 'bold'),
N2.push(
this.getTextDimensions(v4[f2], {
fontSize: this.internal.__cell__.table_font_size,
scaleFactor: this.internal.scaleFactor,
}).w
),
d3 = y2[g2],
this.setFont(void 0, 'normal'),
p2 = 0;
p2 < d3.length;
p2 += 1
)
N2.push(
this.getTextDimensions(d3[p2], {
fontSize: this.internal.__cell__.table_font_size,
scaleFactor: this.internal.scaleFactor,
}).w
)
;(w2[g2] = Math.max.apply(null, N2) + P2 + P2), (N2 = [])
}
if (x2) {
var F2 = {}
for (f2 = 0; f2 < m2.length; f2 += 1)
(F2[m2[f2]] = {}),
(F2[m2[f2]].text = v4[f2]),
(F2[m2[f2]].align = b2[f2])
var C2 = c2.call(this, F2, w2)
;(L2 = m2.map(function (t3) {
return new o2(e3, n3, w2[t3], C2, F2[t3].text, void 0, F2[t3].align)
})),
this.setTableHeaderRow(L2),
this.printHeaderRow(1, false)
}
var j2 = h2.reduce(function (t3, e4) {
return (t3[e4.name] = e4.align), t3
}, {})
for (f2 = 0; f2 < u2.length; f2 += 1) {
'rowStart' in l2 &&
l2.rowStart instanceof Function &&
l2.rowStart({ row: f2, data: u2[f2] }, this)
var O2 = c2.call(this, u2[f2], w2)
for (p2 = 0; p2 < m2.length; p2 += 1) {
var B3 = u2[f2][m2[p2]]
'cellStart' in l2 &&
l2.cellStart instanceof Function &&
l2.cellStart({ row: f2, col: p2, data: B3 }, this),
s2.call(
this,
new o2(e3, n3, w2[m2[p2]], O2, B3, f2 + 2, j2[m2[p2]])
)
}
}
return (
(this.internal.__cell__.table_x = e3),
(this.internal.__cell__.table_y = n3),
this
)
}
var c2 = function (t3, e3) {
var r3 = this.internal.__cell__.padding,
n3 = this.internal.__cell__.table_font_size,
i3 = this.internal.scaleFactor
return Object.keys(t3)
.map(function (n4) {
var i4 = t3[n4]
return this.splitTextToSize(
i4.hasOwnProperty('text') ? i4.text : i4,
e3[n4] - r3 - r3
)
}, this)
.map(function (t4) {
return (this.getLineHeightFactor() * t4.length * n3) / i3 + r3 + r3
}, this)
.reduce(function (t4, e4) {
return Math.max(t4, e4)
}, 0)
}
;(e2.setTableHeaderRow = function (t3) {
i2.call(this), (this.internal.__cell__.tableHeaderRow = t3)
}),
(e2.printHeaderRow = function (t3, e3) {
if ((i2.call(this), !this.internal.__cell__.tableHeaderRow))
throw new Error('Property tableHeaderRow does not exist.')
var r3
if (
((n2 = true),
'function' == typeof this.internal.__cell__.headerFunction)
) {
var a3 = this.internal.__cell__.headerFunction(
this,
this.internal.__cell__.pages
)
this.internal.__cell__.lastCell = new o2(
a3[0],
a3[1],
a3[2],
a3[3],
void 0,
-1
)
}
this.setFont(void 0, 'bold')
for (
var c3 = [], u2 = 0;
u2 < this.internal.__cell__.tableHeaderRow.length;
u2 += 1
) {
;(r3 = this.internal.__cell__.tableHeaderRow[u2].clone()),
e3 &&
((r3.y = this.internal.__cell__.margins.top || 0), c3.push(r3)),
(r3.lineNumber = t3)
var h2 = this.getTextColor()
this.setTextColor(this.internal.__cell__.headerTextColor),
this.setFillColor(this.internal.__cell__.headerBackgroundColor),
s2.call(this, r3),
this.setTextColor(h2)
}
c3.length > 0 && this.setTableHeaderRow(c3),
this.setFont(void 0, 'normal'),
(n2 = false)
})
})(E$1.API)
var Pt = {
italic: ['italic', 'oblique', 'normal'],
oblique: ['oblique', 'italic', 'normal'],
normal: ['normal', 'oblique', 'italic'],
},
kt = [
'ultra-condensed',
'extra-condensed',
'condensed',
'semi-condensed',
'normal',
'semi-expanded',
'expanded',
'extra-expanded',
'ultra-expanded',
],
It = _t$2(kt),
Ft = [100, 200, 300, 400, 500, 600, 700, 800, 900],
Ct = _t$2(Ft)
function jt(t3) {
var e2 = t3.family.replace(/"|'/g, '').toLowerCase(),
r2 = (function (t4) {
return Pt[(t4 = t4 || 'normal')] ? t4 : 'normal'
})(t3.style),
n2 = (function (t4) {
if (!t4) return 400
if ('number' == typeof t4)
return t4 >= 100 && t4 <= 900 && t4 % 100 == 0 ? t4 : 400
if (/^\d00$/.test(t4)) return parseInt(t4)
switch (t4) {
case 'bold':
return 700
case 'normal':
default:
return 400
}
})(t3.weight),
i2 = (function (t4) {
return 'number' == typeof It[(t4 = t4 || 'normal')] ? t4 : 'normal'
})(t3.stretch)
return {
family: e2,
style: r2,
weight: n2,
stretch: i2,
src: t3.src || [],
ref: t3.ref || { name: e2, style: [i2, r2, n2].join(' ') },
}
}
function Ot(t3, e2, r2, n2) {
var i2
for (i2 = r2; i2 >= 0 && i2 < e2.length; i2 += n2)
if (t3[e2[i2]]) return t3[e2[i2]]
for (i2 = r2; i2 >= 0 && i2 < e2.length; i2 -= n2)
if (t3[e2[i2]]) return t3[e2[i2]]
}
var Bt = {
'sans-serif': 'helvetica',
fixed: 'courier',
monospace: 'courier',
terminal: 'courier',
cursive: 'times',
fantasy: 'times',
serif: 'times',
},
Mt = {
caption: 'times',
icon: 'times',
menu: 'times',
'message-box': 'times',
'small-caption': 'times',
'status-bar': 'times',
}
function Et(t3) {
return [t3.stretch, t3.style, t3.weight, t3.family].join(' ')
}
function qt(t3, e2, r2) {
for (
var n2 = (r2 = r2 || {}).defaultFontFamily || 'times',
i2 = Object.assign({}, Bt, r2.genericFontFamilies || {}),
a2 = null,
o2 = null,
s2 = 0;
s2 < e2.length;
++s2
)
if (
(i2[(a2 = jt(e2[s2])).family] && (a2.family = i2[a2.family]),
t3.hasOwnProperty(a2.family))
) {
o2 = t3[a2.family]
break
}
if (!(o2 = o2 || t3[n2]))
throw new Error(
"Could not find a font-family for the rule '" +
Et(a2) +
"' and default family '" +
n2 +
"'."
)
if (
((o2 = (function (t4, e3) {
if (e3[t4]) return e3[t4]
var r3 = It[t4],
n3 = r3 <= It.normal ? -1 : 1,
i3 = Ot(e3, kt, r3, n3)
if (!i3)
throw new Error(
'Could not find a matching font-stretch value for ' + t4
)
return i3
})(a2.stretch, o2)),
(o2 = (function (t4, e3) {
if (e3[t4]) return e3[t4]
for (var r3 = Pt[t4], n3 = 0; n3 < r3.length; ++n3)
if (e3[r3[n3]]) return e3[r3[n3]]
throw new Error('Could not find a matching font-style for ' + t4)
})(a2.style, o2)),
!(o2 = (function (t4, e3) {
if (e3[t4]) return e3[t4]
if (400 === t4 && e3[500]) return e3[500]
if (500 === t4 && e3[400]) return e3[400]
var r3 = Ct[t4],
n3 = Ot(e3, Ft, r3, t4 < 400 ? -1 : 1)
if (!n3)
throw new Error('Could not find a matching font-weight for value ' + t4)
return n3
})(a2.weight, o2)))
)
throw new Error("Failed to resolve a font for the rule '" + Et(a2) + "'.")
return o2
}
function Dt(t3) {
return t3.trimLeft()
}
function Rt(t3, e2) {
for (var r2 = 0; r2 < t3.length; ) {
if (t3.charAt(r2) === e2) return [t3.substring(0, r2), t3.substring(r2 + 1)]
r2 += 1
}
return null
}
function Tt(t3) {
var e2 = t3.match(/^(-[a-z_]|[a-z_])[a-z0-9_-]*/i)
return null === e2 ? null : [e2[0], t3.substring(e2[0].length)]
}
var Ut,
zt,
Ht,
Wt = ['times']
!(function (e2) {
var r2,
n2,
i2,
o2,
s2,
c2,
u2,
h2,
l2,
d3 = function (t3) {
return (
(t3 = t3 || {}),
(this.isStrokeTransparent = t3.isStrokeTransparent || false),
(this.strokeOpacity = t3.strokeOpacity || 1),
(this.strokeStyle = t3.strokeStyle || '#000000'),
(this.fillStyle = t3.fillStyle || '#000000'),
(this.isFillTransparent = t3.isFillTransparent || false),
(this.fillOpacity = t3.fillOpacity || 1),
(this.font = t3.font || '10px sans-serif'),
(this.textBaseline = t3.textBaseline || 'alphabetic'),
(this.textAlign = t3.textAlign || 'left'),
(this.lineWidth = t3.lineWidth || 1),
(this.lineJoin = t3.lineJoin || 'miter'),
(this.lineCap = t3.lineCap || 'butt'),
(this.path = t3.path || []),
(this.transform =
void 0 !== t3.transform ? t3.transform.clone() : new h2()),
(this.globalCompositeOperation =
t3.globalCompositeOperation || 'normal'),
(this.globalAlpha = t3.globalAlpha || 1),
(this.clip_path = t3.clip_path || []),
(this.currentPoint = t3.currentPoint || new c2()),
(this.miterLimit = t3.miterLimit || 10),
(this.lastPoint = t3.lastPoint || new c2()),
(this.lineDashOffset = t3.lineDashOffset || 0),
(this.lineDash = t3.lineDash || []),
(this.margin = t3.margin || [0, 0, 0, 0]),
(this.prevPageLastElemOffset = t3.prevPageLastElemOffset || 0),
(this.ignoreClearRect =
'boolean' != typeof t3.ignoreClearRect || t3.ignoreClearRect),
this
)
}
e2.events.push([
'initialized',
function () {
;(this.context2d = new p2(this)),
(r2 = this.internal.f2),
(n2 = this.internal.getCoordinateString),
(i2 = this.internal.getVerticalCoordinateString),
(o2 = this.internal.getHorizontalCoordinate),
(s2 = this.internal.getVerticalCoordinate),
(c2 = this.internal.Point),
(u2 = this.internal.Rectangle),
(h2 = this.internal.Matrix),
(l2 = new d3())
},
])
var p2 = function (t3) {
Object.defineProperty(this, 'canvas', {
get: function () {
return { parentNode: false, style: false }
},
})
var e3 = t3
Object.defineProperty(this, 'pdf', {
get: function () {
return e3
},
})
var r3 = false
Object.defineProperty(this, 'pageWrapXEnabled', {
get: function () {
return r3
},
set: function (t4) {
r3 = Boolean(t4)
},
})
var n3 = false
Object.defineProperty(this, 'pageWrapYEnabled', {
get: function () {
return n3
},
set: function (t4) {
n3 = Boolean(t4)
},
})
var i3 = 0
Object.defineProperty(this, 'posX', {
get: function () {
return i3
},
set: function (t4) {
isNaN(t4) || (i3 = t4)
},
})
var a2 = 0
Object.defineProperty(this, 'posY', {
get: function () {
return a2
},
set: function (t4) {
isNaN(t4) || (a2 = t4)
},
}),
Object.defineProperty(this, 'margin', {
get: function () {
return l2.margin
},
set: function (t4) {
var e4
'number' == typeof t4
? (e4 = [t4, t4, t4, t4])
: (((e4 = new Array(4))[0] = t4[0]),
(e4[1] = t4.length >= 2 ? t4[1] : e4[0]),
(e4[2] = t4.length >= 3 ? t4[2] : e4[0]),
(e4[3] = t4.length >= 4 ? t4[3] : e4[1])),
(l2.margin = e4)
},
})
var o3 = false
Object.defineProperty(this, 'autoPaging', {
get: function () {
return o3
},
set: function (t4) {
o3 = t4
},
})
var s3 = 0
Object.defineProperty(this, 'lastBreak', {
get: function () {
return s3
},
set: function (t4) {
s3 = t4
},
})
var c3 = []
Object.defineProperty(this, 'pageBreaks', {
get: function () {
return c3
},
set: function (t4) {
c3 = t4
},
}),
Object.defineProperty(this, 'ctx', {
get: function () {
return l2
},
set: function (t4) {
t4 instanceof d3 && (l2 = t4)
},
}),
Object.defineProperty(this, 'path', {
get: function () {
return l2.path
},
set: function (t4) {
l2.path = t4
},
})
var u3 = []
Object.defineProperty(this, 'ctxStack', {
get: function () {
return u3
},
set: function (t4) {
u3 = t4
},
}),
Object.defineProperty(this, 'fillStyle', {
get: function () {
return this.ctx.fillStyle
},
set: function (t4) {
var e4
;(e4 = g2(t4)),
(this.ctx.fillStyle = e4.style),
(this.ctx.isFillTransparent = 0 === e4.a),
(this.ctx.fillOpacity = e4.a),
this.pdf.setFillColor(e4.r, e4.g, e4.b, { a: e4.a }),
this.pdf.setTextColor(e4.r, e4.g, e4.b, { a: e4.a })
},
}),
Object.defineProperty(this, 'strokeStyle', {
get: function () {
return this.ctx.strokeStyle
},
set: function (t4) {
var e4 = g2(t4)
;(this.ctx.strokeStyle = e4.style),
(this.ctx.isStrokeTransparent = 0 === e4.a),
(this.ctx.strokeOpacity = e4.a),
0 === e4.a
? this.pdf.setDrawColor(255, 255, 255)
: (e4.a, this.pdf.setDrawColor(e4.r, e4.g, e4.b))
},
}),
Object.defineProperty(this, 'lineCap', {
get: function () {
return this.ctx.lineCap
},
set: function (t4) {
;-1 !== ['butt', 'round', 'square'].indexOf(t4) &&
((this.ctx.lineCap = t4), this.pdf.setLineCap(t4))
},
}),
Object.defineProperty(this, 'lineWidth', {
get: function () {
return this.ctx.lineWidth
},
set: function (t4) {
isNaN(t4) || ((this.ctx.lineWidth = t4), this.pdf.setLineWidth(t4))
},
}),
Object.defineProperty(this, 'lineJoin', {
get: function () {
return this.ctx.lineJoin
},
set: function (t4) {
;-1 !== ['bevel', 'round', 'miter'].indexOf(t4) &&
((this.ctx.lineJoin = t4), this.pdf.setLineJoin(t4))
},
}),
Object.defineProperty(this, 'miterLimit', {
get: function () {
return this.ctx.miterLimit
},
set: function (t4) {
isNaN(t4) || ((this.ctx.miterLimit = t4), this.pdf.setMiterLimit(t4))
},
}),
Object.defineProperty(this, 'textBaseline', {
get: function () {
return this.ctx.textBaseline
},
set: function (t4) {
this.ctx.textBaseline = t4
},
}),
Object.defineProperty(this, 'textAlign', {
get: function () {
return this.ctx.textAlign
},
set: function (t4) {
;-1 !== ['right', 'end', 'center', 'left', 'start'].indexOf(t4) &&
(this.ctx.textAlign = t4)
},
})
var h3 = null
function f2(t4, e4) {
if (null === h3) {
var r4 = (function (t5) {
var e5 = []
return (
Object.keys(t5).forEach(function (r5) {
t5[r5].forEach(function (t6) {
var n4 = null
switch (t6) {
case 'bold':
n4 = { family: r5, weight: 'bold' }
break
case 'italic':
n4 = { family: r5, style: 'italic' }
break
case 'bolditalic':
n4 = { family: r5, weight: 'bold', style: 'italic' }
break
case '':
case 'normal':
n4 = { family: r5 }
}
null !== n4 && ((n4.ref = { name: r5, style: t6 }), e5.push(n4))
})
}),
e5
)
})(t4.getFontList())
h3 = (function (t5) {
for (var e5 = {}, r5 = 0; r5 < t5.length; ++r5) {
var n4 = jt(t5[r5]),
i4 = n4.family,
a3 = n4.stretch,
o4 = n4.style,
s4 = n4.weight
;(e5[i4] = e5[i4] || {}),
(e5[i4][a3] = e5[i4][a3] || {}),
(e5[i4][a3][o4] = e5[i4][a3][o4] || {}),
(e5[i4][a3][o4][s4] = n4)
}
return e5
})(r4.concat(e4))
}
return h3
}
var p3 = null
Object.defineProperty(this, 'fontFaces', {
get: function () {
return p3
},
set: function (t4) {
;(h3 = null), (p3 = t4)
},
}),
Object.defineProperty(this, 'font', {
get: function () {
return this.ctx.font
},
set: function (t4) {
var e4
if (
((this.ctx.font = t4),
null !==
(e4 =
/^\s*(?=(?:(?:[-a-z]+\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\1|\2|\3)\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\d]+(?:\%|in|[cem]m|ex|p[ctx]))(?:\s*\/\s*(normal|[.\d]+(?:\%|in|[cem]m|ex|p[ctx])))?\s*([-_,\"\'\sa-z]+?)\s*$/i.exec(
t4
)))
) {
var r4 = e4[1],
n4 = (e4[2], e4[3]),
i4 = e4[4],
a3 = (e4[5], e4[6]),
o4 = /^([.\d]+)((?:%|in|[cem]m|ex|p[ctx]))$/i.exec(i4)[2]
;(i4 =
'px' === o4
? Math.floor(parseFloat(i4) * this.pdf.internal.scaleFactor)
: 'em' === o4
? Math.floor(parseFloat(i4) * this.pdf.getFontSize())
: Math.floor(parseFloat(i4) * this.pdf.internal.scaleFactor)),
this.pdf.setFontSize(i4)
var s4 = (function (t5) {
var e5,
r5,
n5 = [],
i5 = t5.trim()
if ('' === i5) return Wt
if (i5 in Mt) return [Mt[i5]]
for (; '' !== i5; ) {
switch (((r5 = null), (e5 = (i5 = Dt(i5)).charAt(0)))) {
case '"':
case "'":
r5 = Rt(i5.substring(1), e5)
break
default:
r5 = Tt(i5)
}
if (null === r5) return Wt
if (
(n5.push(r5[0]),
'' !== (i5 = Dt(r5[1])) && ',' !== i5.charAt(0))
)
return Wt
i5 = i5.replace(/^,/, '')
}
return n5
})(a3)
if (this.fontFaces) {
var c4 = qt(
f2(this.pdf, this.fontFaces),
s4.map(function (t5) {
return {
family: t5,
stretch: 'normal',
weight: n4,
style: r4,
}
})
)
this.pdf.setFont(c4.ref.name, c4.ref.style)
} else {
var u4 = ''
;('bold' === n4 || parseInt(n4, 10) >= 700 || 'bold' === r4) &&
(u4 = 'bold'),
'italic' === r4 && (u4 += 'italic'),
0 === u4.length && (u4 = 'normal')
for (
var h4 = '',
l3 = {
arial: 'Helvetica',
Arial: 'Helvetica',
verdana: 'Helvetica',
Verdana: 'Helvetica',
helvetica: 'Helvetica',
Helvetica: 'Helvetica',
'sans-serif': 'Helvetica',
fixed: 'Courier',
monospace: 'Courier',
terminal: 'Courier',
cursive: 'Times',
fantasy: 'Times',
serif: 'Times',
},
d4 = 0;
d4 < s4.length;
d4++
) {
if (
void 0 !==
this.pdf.internal.getFont(s4[d4], u4, {
noFallback: true,
disableWarning: true,
})
) {
h4 = s4[d4]
break
}
if (
'bolditalic' === u4 &&
void 0 !==
this.pdf.internal.getFont(s4[d4], 'bold', {
noFallback: true,
disableWarning: true,
})
)
(h4 = s4[d4]), (u4 = 'bold')
else if (
void 0 !==
this.pdf.internal.getFont(s4[d4], 'normal', {
noFallback: true,
disableWarning: true,
})
) {
;(h4 = s4[d4]), (u4 = 'normal')
break
}
}
if ('' === h4) {
for (var p4 = 0; p4 < s4.length; p4++)
if (l3[s4[p4]]) {
h4 = l3[s4[p4]]
break
}
}
;(h4 = '' === h4 ? 'Times' : h4), this.pdf.setFont(h4, u4)
}
}
},
}),
Object.defineProperty(this, 'globalCompositeOperation', {
get: function () {
return this.ctx.globalCompositeOperation
},
set: function (t4) {
this.ctx.globalCompositeOperation = t4
},
}),
Object.defineProperty(this, 'globalAlpha', {
get: function () {
return this.ctx.globalAlpha
},
set: function (t4) {
this.ctx.globalAlpha = t4
},
}),
Object.defineProperty(this, 'lineDashOffset', {
get: function () {
return this.ctx.lineDashOffset
},
set: function (t4) {
;(this.ctx.lineDashOffset = t4), T2.call(this)
},
}),
Object.defineProperty(this, 'lineDash', {
get: function () {
return this.ctx.lineDash
},
set: function (t4) {
;(this.ctx.lineDash = t4), T2.call(this)
},
}),
Object.defineProperty(this, 'ignoreClearRect', {
get: function () {
return this.ctx.ignoreClearRect
},
set: function (t4) {
this.ctx.ignoreClearRect = Boolean(t4)
},
})
}
;(p2.prototype.setLineDash = function (t3) {
this.lineDash = t3
}),
(p2.prototype.getLineDash = function () {
return this.lineDash.length % 2
? this.lineDash.concat(this.lineDash)
: this.lineDash.slice()
}),
(p2.prototype.fill = function () {
A2.call(this, 'fill', false)
}),
(p2.prototype.stroke = function () {
A2.call(this, 'stroke', false)
}),
(p2.prototype.beginPath = function () {
this.path = [{ type: 'begin' }]
}),
(p2.prototype.moveTo = function (t3, e3) {
if (isNaN(t3) || isNaN(e3))
throw (
(a$2.error('jsPDF.context2d.moveTo: Invalid arguments', arguments),
new Error('Invalid arguments passed to jsPDF.context2d.moveTo'))
)
var r3 = this.ctx.transform.applyToPoint(new c2(t3, e3))
this.path.push({ type: 'mt', x: r3.x, y: r3.y }),
(this.ctx.lastPoint = new c2(t3, e3))
}),
(p2.prototype.closePath = function () {
var e3 = new c2(0, 0),
r3 = 0
for (r3 = this.path.length - 1; -1 !== r3; r3--)
if (
'begin' === this.path[r3].type &&
'object' === _typeof$3(this.path[r3 + 1]) &&
'number' == typeof this.path[r3 + 1].x
) {
e3 = new c2(this.path[r3 + 1].x, this.path[r3 + 1].y)
break
}
this.path.push({ type: 'close' }),
(this.ctx.lastPoint = new c2(e3.x, e3.y))
}),
(p2.prototype.lineTo = function (t3, e3) {
if (isNaN(t3) || isNaN(e3))
throw (
(a$2.error('jsPDF.context2d.lineTo: Invalid arguments', arguments),
new Error('Invalid arguments passed to jsPDF.context2d.lineTo'))
)
var r3 = this.ctx.transform.applyToPoint(new c2(t3, e3))
this.path.push({ type: 'lt', x: r3.x, y: r3.y }),
(this.ctx.lastPoint = new c2(r3.x, r3.y))
}),
(p2.prototype.clip = function () {
;(this.ctx.clip_path = JSON.parse(JSON.stringify(this.path))),
A2.call(this, null, true)
}),
(p2.prototype.quadraticCurveTo = function (t3, e3, r3, n3) {
if (isNaN(r3) || isNaN(n3) || isNaN(t3) || isNaN(e3))
throw (
(a$2.error(
'jsPDF.context2d.quadraticCurveTo: Invalid arguments',
arguments
),
new Error(
'Invalid arguments passed to jsPDF.context2d.quadraticCurveTo'
))
)
var i3 = this.ctx.transform.applyToPoint(new c2(r3, n3)),
o3 = this.ctx.transform.applyToPoint(new c2(t3, e3))
this.path.push({ type: 'qct', x1: o3.x, y1: o3.y, x: i3.x, y: i3.y }),
(this.ctx.lastPoint = new c2(i3.x, i3.y))
}),
(p2.prototype.bezierCurveTo = function (t3, e3, r3, n3, i3, o3) {
if (
isNaN(i3) ||
isNaN(o3) ||
isNaN(t3) ||
isNaN(e3) ||
isNaN(r3) ||
isNaN(n3)
)
throw (
(a$2.error(
'jsPDF.context2d.bezierCurveTo: Invalid arguments',
arguments
),
new Error(
'Invalid arguments passed to jsPDF.context2d.bezierCurveTo'
))
)
var s3 = this.ctx.transform.applyToPoint(new c2(i3, o3)),
u3 = this.ctx.transform.applyToPoint(new c2(t3, e3)),
h3 = this.ctx.transform.applyToPoint(new c2(r3, n3))
this.path.push({
type: 'bct',
x1: u3.x,
y1: u3.y,
x2: h3.x,
y2: h3.y,
x: s3.x,
y: s3.y,
}),
(this.ctx.lastPoint = new c2(s3.x, s3.y))
}),
(p2.prototype.arc = function (t3, e3, r3, n3, i3, o3) {
if (isNaN(t3) || isNaN(e3) || isNaN(r3) || isNaN(n3) || isNaN(i3))
throw (
(a$2.error('jsPDF.context2d.arc: Invalid arguments', arguments),
new Error('Invalid arguments passed to jsPDF.context2d.arc'))
)
if (((o3 = Boolean(o3)), !this.ctx.transform.isIdentity)) {
var s3 = this.ctx.transform.applyToPoint(new c2(t3, e3))
;(t3 = s3.x), (e3 = s3.y)
var u3 = this.ctx.transform.applyToPoint(new c2(0, r3)),
h3 = this.ctx.transform.applyToPoint(new c2(0, 0))
r3 = Math.sqrt(Math.pow(u3.x - h3.x, 2) + Math.pow(u3.y - h3.y, 2))
}
Math.abs(i3 - n3) >= 2 * Math.PI && ((n3 = 0), (i3 = 2 * Math.PI)),
this.path.push({
type: 'arc',
x: t3,
y: e3,
radius: r3,
startAngle: n3,
endAngle: i3,
counterclockwise: o3,
})
}),
(p2.prototype.arcTo = function (t3, e3, r3, n3, i3) {
throw new Error('arcTo not implemented.')
}),
(p2.prototype.rect = function (t3, e3, r3, n3) {
if (isNaN(t3) || isNaN(e3) || isNaN(r3) || isNaN(n3))
throw (
(a$2.error('jsPDF.context2d.rect: Invalid arguments', arguments),
new Error('Invalid arguments passed to jsPDF.context2d.rect'))
)
this.moveTo(t3, e3),
this.lineTo(t3 + r3, e3),
this.lineTo(t3 + r3, e3 + n3),
this.lineTo(t3, e3 + n3),
this.lineTo(t3, e3),
this.lineTo(t3 + r3, e3),
this.lineTo(t3, e3)
}),
(p2.prototype.fillRect = function (t3, e3, r3, n3) {
if (isNaN(t3) || isNaN(e3) || isNaN(r3) || isNaN(n3))
throw (
(a$2.error('jsPDF.context2d.fillRect: Invalid arguments', arguments),
new Error('Invalid arguments passed to jsPDF.context2d.fillRect'))
)
if (!m2.call(this)) {
var i3 = {}
'butt' !== this.lineCap &&
((i3.lineCap = this.lineCap), (this.lineCap = 'butt')),
'miter' !== this.lineJoin &&
((i3.lineJoin = this.lineJoin), (this.lineJoin = 'miter')),
this.beginPath(),
this.rect(t3, e3, r3, n3),
this.fill(),
i3.hasOwnProperty('lineCap') && (this.lineCap = i3.lineCap),
i3.hasOwnProperty('lineJoin') && (this.lineJoin = i3.lineJoin)
}
}),
(p2.prototype.strokeRect = function (t3, e3, r3, n3) {
if (isNaN(t3) || isNaN(e3) || isNaN(r3) || isNaN(n3))
throw (
(a$2.error(
'jsPDF.context2d.strokeRect: Invalid arguments',
arguments
),
new Error('Invalid arguments passed to jsPDF.context2d.strokeRect'))
)
v4.call(this) ||
(this.beginPath(), this.rect(t3, e3, r3, n3), this.stroke())
}),
(p2.prototype.clearRect = function (t3, e3, r3, n3) {
if (isNaN(t3) || isNaN(e3) || isNaN(r3) || isNaN(n3))
throw (
(a$2.error('jsPDF.context2d.clearRect: Invalid arguments', arguments),
new Error('Invalid arguments passed to jsPDF.context2d.clearRect'))
)
this.ignoreClearRect ||
((this.fillStyle = '#ffffff'), this.fillRect(t3, e3, r3, n3))
}),
(p2.prototype.save = function (t3) {
t3 = 'boolean' != typeof t3 || t3
for (
var e3 = this.pdf.internal.getCurrentPageInfo().pageNumber, r3 = 0;
r3 < this.pdf.internal.getNumberOfPages();
r3++
)
this.pdf.setPage(r3 + 1), this.pdf.internal.out('q')
if ((this.pdf.setPage(e3), t3)) {
this.ctx.fontSize = this.pdf.internal.getFontSize()
var n3 = new d3(this.ctx)
this.ctxStack.push(this.ctx), (this.ctx = n3)
}
}),
(p2.prototype.restore = function (t3) {
t3 = 'boolean' != typeof t3 || t3
for (
var e3 = this.pdf.internal.getCurrentPageInfo().pageNumber, r3 = 0;
r3 < this.pdf.internal.getNumberOfPages();
r3++
)
this.pdf.setPage(r3 + 1), this.pdf.internal.out('Q')
this.pdf.setPage(e3),
t3 &&
0 !== this.ctxStack.length &&
((this.ctx = this.ctxStack.pop()),
(this.fillStyle = this.ctx.fillStyle),
(this.strokeStyle = this.ctx.strokeStyle),
(this.font = this.ctx.font),
(this.lineCap = this.ctx.lineCap),
(this.lineWidth = this.ctx.lineWidth),
(this.lineJoin = this.ctx.lineJoin),
(this.lineDash = this.ctx.lineDash),
(this.lineDashOffset = this.ctx.lineDashOffset))
}),
(p2.prototype.toDataURL = function () {
throw new Error('toDataUrl not implemented.')
})
var g2 = function (t3) {
var e3, r3, n3, i3
if ((true === t3.isCanvasGradient && (t3 = t3.getColor()), !t3))
return { r: 0, g: 0, b: 0, a: 0, style: t3 }
if (
/transparent|rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*0+\s*\)/.test(
t3
)
)
(e3 = 0), (r3 = 0), (n3 = 0), (i3 = 0)
else {
var a2 = /rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/.exec(t3)
if (null !== a2)
(e3 = parseInt(a2[1])),
(r3 = parseInt(a2[2])),
(n3 = parseInt(a2[3])),
(i3 = 1)
else if (
null !==
(a2 =
/rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d.]+)\s*\)/.exec(
t3
))
)
(e3 = parseInt(a2[1])),
(r3 = parseInt(a2[2])),
(n3 = parseInt(a2[3])),
(i3 = parseFloat(a2[4]))
else {
if (((i3 = 1), 'string' == typeof t3 && '#' !== t3.charAt(0))) {
var o3 = new f$2(t3)
t3 = o3.ok ? o3.toHex() : '#000000'
}
4 === t3.length
? ((e3 = t3.substring(1, 2)),
(e3 += e3),
(r3 = t3.substring(2, 3)),
(r3 += r3),
(n3 = t3.substring(3, 4)),
(n3 += n3))
: ((e3 = t3.substring(1, 3)),
(r3 = t3.substring(3, 5)),
(n3 = t3.substring(5, 7))),
(e3 = parseInt(e3, 16)),
(r3 = parseInt(r3, 16)),
(n3 = parseInt(n3, 16))
}
}
return { r: e3, g: r3, b: n3, a: i3, style: t3 }
},
m2 = function () {
return this.ctx.isFillTransparent || 0 == this.globalAlpha
},
v4 = function () {
return Boolean(this.ctx.isStrokeTransparent || 0 == this.globalAlpha)
}
;(p2.prototype.fillText = function (t3, e3, r3, n3) {
if (isNaN(e3) || isNaN(r3) || 'string' != typeof t3)
throw (
(a$2.error('jsPDF.context2d.fillText: Invalid arguments', arguments),
new Error('Invalid arguments passed to jsPDF.context2d.fillText'))
)
if (((n3 = isNaN(n3) ? void 0 : n3), !m2.call(this))) {
var i3 = q2(this.ctx.transform.rotation),
o3 = this.ctx.transform.scaleX
C2.call(this, {
text: t3,
x: e3,
y: r3,
scale: o3,
angle: i3,
align: this.textAlign,
maxWidth: n3,
})
}
}),
(p2.prototype.strokeText = function (t3, e3, r3, n3) {
if (isNaN(e3) || isNaN(r3) || 'string' != typeof t3)
throw (
(a$2.error(
'jsPDF.context2d.strokeText: Invalid arguments',
arguments
),
new Error('Invalid arguments passed to jsPDF.context2d.strokeText'))
)
if (!v4.call(this)) {
n3 = isNaN(n3) ? void 0 : n3
var i3 = q2(this.ctx.transform.rotation),
o3 = this.ctx.transform.scaleX
C2.call(this, {
text: t3,
x: e3,
y: r3,
scale: o3,
renderingMode: 'stroke',
angle: i3,
align: this.textAlign,
maxWidth: n3,
})
}
}),
(p2.prototype.measureText = function (t3) {
if ('string' != typeof t3)
throw (
(a$2.error(
'jsPDF.context2d.measureText: Invalid arguments',
arguments
),
new Error('Invalid arguments passed to jsPDF.context2d.measureText'))
)
var e3 = this.pdf,
r3 = this.pdf.internal.scaleFactor,
n3 = e3.internal.getFontSize(),
i3 = (e3.getStringUnitWidth(t3) * n3) / e3.internal.scaleFactor,
o3 = function (t4) {
var e4 = (t4 = t4 || {}).width || 0
return (
Object.defineProperty(this, 'width', {
get: function () {
return e4
},
}),
this
)
}
return new o3({ width: (i3 *= Math.round(((96 * r3) / 72) * 1e4) / 1e4) })
}),
(p2.prototype.scale = function (t3, e3) {
if (isNaN(t3) || isNaN(e3))
throw (
(a$2.error('jsPDF.context2d.scale: Invalid arguments', arguments),
new Error('Invalid arguments passed to jsPDF.context2d.scale'))
)
var r3 = new h2(t3, 0, 0, e3, 0, 0)
this.ctx.transform = this.ctx.transform.multiply(r3)
}),
(p2.prototype.rotate = function (t3) {
if (isNaN(t3))
throw (
(a$2.error('jsPDF.context2d.rotate: Invalid arguments', arguments),
new Error('Invalid arguments passed to jsPDF.context2d.rotate'))
)
var e3 = new h2(
Math.cos(t3),
Math.sin(t3),
-Math.sin(t3),
Math.cos(t3),
0,
0
)
this.ctx.transform = this.ctx.transform.multiply(e3)
}),
(p2.prototype.translate = function (t3, e3) {
if (isNaN(t3) || isNaN(e3))
throw (
(a$2.error('jsPDF.context2d.translate: Invalid arguments', arguments),
new Error('Invalid arguments passed to jsPDF.context2d.translate'))
)
var r3 = new h2(1, 0, 0, 1, t3, e3)
this.ctx.transform = this.ctx.transform.multiply(r3)
}),
(p2.prototype.transform = function (t3, e3, r3, n3, i3, o3) {
if (
isNaN(t3) ||
isNaN(e3) ||
isNaN(r3) ||
isNaN(n3) ||
isNaN(i3) ||
isNaN(o3)
)
throw (
(a$2.error('jsPDF.context2d.transform: Invalid arguments', arguments),
new Error('Invalid arguments passed to jsPDF.context2d.transform'))
)
var s3 = new h2(t3, e3, r3, n3, i3, o3)
this.ctx.transform = this.ctx.transform.multiply(s3)
}),
(p2.prototype.setTransform = function (t3, e3, r3, n3, i3, a2) {
;(t3 = isNaN(t3) ? 1 : t3),
(e3 = isNaN(e3) ? 0 : e3),
(r3 = isNaN(r3) ? 0 : r3),
(n3 = isNaN(n3) ? 1 : n3),
(i3 = isNaN(i3) ? 0 : i3),
(a2 = isNaN(a2) ? 0 : a2),
(this.ctx.transform = new h2(t3, e3, r3, n3, i3, a2))
})
var b2 = function () {
return (
this.margin[0] > 0 ||
this.margin[1] > 0 ||
this.margin[2] > 0 ||
this.margin[3] > 0
)
}
p2.prototype.drawImage = function (t3, e3, r3, n3, i3, a2, o3, s3, c3) {
var l3 = this.pdf.getImageProperties(t3),
f2 = 1,
d4 = 1,
p3 = 1,
g3 = 1
void 0 !== n3 &&
void 0 !== s3 &&
((p3 = s3 / n3),
(g3 = c3 / i3),
(f2 = ((l3.width / n3) * s3) / n3),
(d4 = ((l3.height / i3) * c3) / i3)),
void 0 === a2 && ((a2 = e3), (o3 = r3), (e3 = 0), (r3 = 0)),
void 0 !== n3 && void 0 === s3 && ((s3 = n3), (c3 = i3)),
void 0 === n3 && void 0 === s3 && ((s3 = l3.width), (c3 = l3.height))
for (
var m3,
v5 = this.ctx.transform.decompose(),
w3 = q2(v5.rotate.shx),
A3 = new h2(),
S3 = (A3 = (A3 = (A3 = A3.multiply(v5.translate)).multiply(
v5.skew
)).multiply(v5.scale)).applyToRectangle(
new u2(a2 - e3 * p3, o3 - r3 * g3, n3 * f2, i3 * d4)
),
_3 = y2.call(this, S3),
P3 = [],
k3 = 0;
k3 < _3.length;
k3 += 1
)
-1 === P3.indexOf(_3[k3]) && P3.push(_3[k3])
if ((L2(P3), this.autoPaging))
for (var I3 = P3[0], F3 = P3[P3.length - 1], C3 = I3; C3 < F3 + 1; C3++) {
this.pdf.setPage(C3)
var j3 =
this.pdf.internal.pageSize.width - this.margin[3] - this.margin[1],
O3 = 1 === C3 ? this.posY + this.margin[0] : this.margin[0],
B4 =
this.pdf.internal.pageSize.height -
this.posY -
this.margin[0] -
this.margin[2],
M3 =
this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2],
E3 = 1 === C3 ? 0 : B4 + (C3 - 2) * M3
if (0 !== this.ctx.clip_path.length) {
var D3 = this.path
;(m3 = JSON.parse(JSON.stringify(this.ctx.clip_path))),
(this.path = N2(
m3,
this.posX + this.margin[3],
-E3 + O3 + this.ctx.prevPageLastElemOffset
)),
x2.call(this, 'fill', true),
(this.path = D3)
}
var R3 = JSON.parse(JSON.stringify(S3))
R3 = N2(
[R3],
this.posX + this.margin[3],
-E3 + O3 + this.ctx.prevPageLastElemOffset
)[0]
var T3 = (C3 > I3 || C3 < F3) && b2.call(this)
T3 &&
(this.pdf.saveGraphicsState(),
this.pdf
.rect(this.margin[3], this.margin[0], j3, M3, null)
.clip()
.discardPath()),
this.pdf.addImage(t3, 'JPEG', R3.x, R3.y, R3.w, R3.h, null, null, w3),
T3 && this.pdf.restoreGraphicsState()
}
else this.pdf.addImage(t3, 'JPEG', S3.x, S3.y, S3.w, S3.h, null, null, w3)
}
var y2 = function (t3, e3, r3) {
var n3 = []
;(e3 = e3 || this.pdf.internal.pageSize.width),
(r3 =
r3 ||
this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2])
var i3 = this.posY + this.ctx.prevPageLastElemOffset
switch (t3.type) {
default:
case 'mt':
case 'lt':
n3.push(Math.floor((t3.y + i3) / r3) + 1)
break
case 'arc':
n3.push(Math.floor((t3.y + i3 - t3.radius) / r3) + 1),
n3.push(Math.floor((t3.y + i3 + t3.radius) / r3) + 1)
break
case 'qct':
var a2 = D2(
this.ctx.lastPoint.x,
this.ctx.lastPoint.y,
t3.x1,
t3.y1,
t3.x,
t3.y
)
n3.push(Math.floor((a2.y + i3) / r3) + 1),
n3.push(Math.floor((a2.y + a2.h + i3) / r3) + 1)
break
case 'bct':
var o3 = R2(
this.ctx.lastPoint.x,
this.ctx.lastPoint.y,
t3.x1,
t3.y1,
t3.x2,
t3.y2,
t3.x,
t3.y
)
n3.push(Math.floor((o3.y + i3) / r3) + 1),
n3.push(Math.floor((o3.y + o3.h + i3) / r3) + 1)
break
case 'rect':
n3.push(Math.floor((t3.y + i3) / r3) + 1),
n3.push(Math.floor((t3.y + t3.h + i3) / r3) + 1)
}
for (var s3 = 0; s3 < n3.length; s3 += 1)
for (; this.pdf.internal.getNumberOfPages() < n3[s3]; ) w2.call(this)
return n3
},
w2 = function () {
var t3 = this.fillStyle,
e3 = this.strokeStyle,
r3 = this.font,
n3 = this.lineCap,
i3 = this.lineWidth,
a2 = this.lineJoin
this.pdf.addPage(),
(this.fillStyle = t3),
(this.strokeStyle = e3),
(this.font = r3),
(this.lineCap = n3),
(this.lineWidth = i3),
(this.lineJoin = a2)
},
N2 = function (t3, e3, r3) {
for (var n3 = 0; n3 < t3.length; n3++)
switch (t3[n3].type) {
case 'bct':
;(t3[n3].x2 += e3), (t3[n3].y2 += r3)
case 'qct':
;(t3[n3].x1 += e3), (t3[n3].y1 += r3)
case 'mt':
case 'lt':
case 'arc':
default:
;(t3[n3].x += e3), (t3[n3].y += r3)
}
return t3
},
L2 = function (t3) {
return t3.sort(function (t4, e3) {
return t4 - e3
})
},
A2 = function (t3, e3) {
for (
var r3,
n3,
i3 = this.fillStyle,
a2 = this.strokeStyle,
o3 = this.lineCap,
s3 = this.lineWidth,
c3 = Math.abs(s3 * this.ctx.transform.scaleX),
u3 = this.lineJoin,
h3 = JSON.parse(JSON.stringify(this.path)),
l3 = JSON.parse(JSON.stringify(this.path)),
f2 = [],
d4 = 0;
d4 < l3.length;
d4++
)
if (void 0 !== l3[d4].x)
for (var p3 = y2.call(this, l3[d4]), g3 = 0; g3 < p3.length; g3 += 1)
-1 === f2.indexOf(p3[g3]) && f2.push(p3[g3])
for (var m3 = 0; m3 < f2.length; m3++)
for (; this.pdf.internal.getNumberOfPages() < f2[m3]; ) w2.call(this)
if ((L2(f2), this.autoPaging))
for (
var v5 = f2[0], A3 = f2[f2.length - 1], S3 = v5;
S3 < A3 + 1;
S3++
) {
this.pdf.setPage(S3),
(this.fillStyle = i3),
(this.strokeStyle = a2),
(this.lineCap = o3),
(this.lineWidth = c3),
(this.lineJoin = u3)
var _3 =
this.pdf.internal.pageSize.width -
this.margin[3] -
this.margin[1],
P3 = 1 === S3 ? this.posY + this.margin[0] : this.margin[0],
k3 =
this.pdf.internal.pageSize.height -
this.posY -
this.margin[0] -
this.margin[2],
I3 =
this.pdf.internal.pageSize.height -
this.margin[0] -
this.margin[2],
F3 = 1 === S3 ? 0 : k3 + (S3 - 2) * I3
if (0 !== this.ctx.clip_path.length) {
var C3 = this.path
;(r3 = JSON.parse(JSON.stringify(this.ctx.clip_path))),
(this.path = N2(
r3,
this.posX + this.margin[3],
-F3 + P3 + this.ctx.prevPageLastElemOffset
)),
x2.call(this, t3, true),
(this.path = C3)
}
if (
((n3 = JSON.parse(JSON.stringify(h3))),
(this.path = N2(
n3,
this.posX + this.margin[3],
-F3 + P3 + this.ctx.prevPageLastElemOffset
)),
false === e3 || 0 === S3)
) {
var j3 = (S3 > v5 || S3 < A3) && b2.call(this)
j3 &&
(this.pdf.saveGraphicsState(),
this.pdf
.rect(this.margin[3], this.margin[0], _3, I3, null)
.clip()
.discardPath()),
x2.call(this, t3, e3),
j3 && this.pdf.restoreGraphicsState()
}
this.lineWidth = s3
}
else (this.lineWidth = c3), x2.call(this, t3, e3), (this.lineWidth = s3)
this.path = h3
},
x2 = function (t3, e3) {
if (
('stroke' !== t3 || e3 || !v4.call(this)) &&
('stroke' === t3 || e3 || !m2.call(this))
) {
for (
var r3, n3, i3 = [], a2 = this.path, o3 = 0;
o3 < a2.length;
o3++
) {
var s3 = a2[o3]
switch (s3.type) {
case 'begin':
i3.push({ begin: true })
break
case 'close':
i3.push({ close: true })
break
case 'mt':
i3.push({ start: s3, deltas: [], abs: [] })
break
case 'lt':
var c3 = i3.length
if (
a2[o3 - 1] &&
!isNaN(a2[o3 - 1].x) &&
((r3 = [s3.x - a2[o3 - 1].x, s3.y - a2[o3 - 1].y]), c3 > 0)
) {
for (; c3 >= 0; c3--)
if (true !== i3[c3 - 1].close && true !== i3[c3 - 1].begin) {
i3[c3 - 1].deltas.push(r3), i3[c3 - 1].abs.push(s3)
break
}
}
break
case 'bct':
;(r3 = [
s3.x1 - a2[o3 - 1].x,
s3.y1 - a2[o3 - 1].y,
s3.x2 - a2[o3 - 1].x,
s3.y2 - a2[o3 - 1].y,
s3.x - a2[o3 - 1].x,
s3.y - a2[o3 - 1].y,
]),
i3[i3.length - 1].deltas.push(r3)
break
case 'qct':
var u3 = a2[o3 - 1].x + (2 / 3) * (s3.x1 - a2[o3 - 1].x),
h3 = a2[o3 - 1].y + (2 / 3) * (s3.y1 - a2[o3 - 1].y),
l3 = s3.x + (2 / 3) * (s3.x1 - s3.x),
f2 = s3.y + (2 / 3) * (s3.y1 - s3.y),
d4 = s3.x,
p3 = s3.y
;(r3 = [
u3 - a2[o3 - 1].x,
h3 - a2[o3 - 1].y,
l3 - a2[o3 - 1].x,
f2 - a2[o3 - 1].y,
d4 - a2[o3 - 1].x,
p3 - a2[o3 - 1].y,
]),
i3[i3.length - 1].deltas.push(r3)
break
case 'arc':
i3.push({ deltas: [], abs: [], arc: true }),
Array.isArray(i3[i3.length - 1].abs) &&
i3[i3.length - 1].abs.push(s3)
}
}
n3 = e3 ? null : 'stroke' === t3 ? 'stroke' : 'fill'
for (var g3 = false, b3 = 0; b3 < i3.length; b3++)
if (i3[b3].arc)
for (var y3 = i3[b3].abs, w3 = 0; w3 < y3.length; w3++) {
var N3 = y3[w3]
'arc' === N3.type
? P2.call(
this,
N3.x,
N3.y,
N3.radius,
N3.startAngle,
N3.endAngle,
N3.counterclockwise,
void 0,
e3,
!g3
)
: j2.call(this, N3.x, N3.y),
(g3 = true)
}
else if (true === i3[b3].close)
this.pdf.internal.out('h'), (g3 = false)
else if (true !== i3[b3].begin) {
var L3 = i3[b3].start.x,
A3 = i3[b3].start.y
O2.call(this, i3[b3].deltas, L3, A3), (g3 = true)
}
n3 && k2.call(this, n3), e3 && I2.call(this)
}
},
S2 = function (t3) {
var e3 = this.pdf.internal.getFontSize() / this.pdf.internal.scaleFactor,
r3 = e3 * (this.pdf.internal.getLineHeightFactor() - 1)
switch (this.ctx.textBaseline) {
case 'bottom':
return t3 - r3
case 'top':
return t3 + e3 - r3
case 'hanging':
return t3 + e3 - 2 * r3
case 'middle':
return t3 + e3 / 2 - r3
case 'ideographic':
return t3
case 'alphabetic':
default:
return t3
}
},
_2 = function (t3) {
return (
t3 +
(this.pdf.internal.getFontSize() / this.pdf.internal.scaleFactor) *
(this.pdf.internal.getLineHeightFactor() - 1)
)
}
;(p2.prototype.createLinearGradient = function () {
var t3 = function () {}
return (
(t3.colorStops = []),
(t3.addColorStop = function (t4, e3) {
this.colorStops.push([t4, e3])
}),
(t3.getColor = function () {
return 0 === this.colorStops.length ? '#000000' : this.colorStops[0][1]
}),
(t3.isCanvasGradient = true),
t3
)
}),
(p2.prototype.createPattern = function () {
return this.createLinearGradient()
}),
(p2.prototype.createRadialGradient = function () {
return this.createLinearGradient()
})
var P2 = function (t3, e3, r3, n3, i3, a2, o3, s3, c3) {
for (
var u3 = M2.call(this, r3, n3, i3, a2), h3 = 0;
h3 < u3.length;
h3++
) {
var l3 = u3[h3]
0 === h3 &&
(c3
? F2.call(this, l3.x1 + t3, l3.y1 + e3)
: j2.call(this, l3.x1 + t3, l3.y1 + e3)),
B3.call(this, t3, e3, l3.x2, l3.y2, l3.x3, l3.y3, l3.x4, l3.y4)
}
s3 ? I2.call(this) : k2.call(this, o3)
},
k2 = function (t3) {
switch (t3) {
case 'stroke':
this.pdf.internal.out('S')
break
case 'fill':
this.pdf.internal.out('f')
}
},
I2 = function () {
this.pdf.clip(), this.pdf.discardPath()
},
F2 = function (t3, e3) {
this.pdf.internal.out(n2(t3) + ' ' + i2(e3) + ' m')
},
C2 = function (t3) {
var e3
switch (t3.align) {
case 'right':
case 'end':
e3 = 'right'
break
case 'center':
e3 = 'center'
break
case 'left':
case 'start':
default:
e3 = 'left'
}
var r3 = this.pdf.getTextDimensions(t3.text),
n3 = S2.call(this, t3.y),
i3 = _2.call(this, n3) - r3.h,
a2 = this.ctx.transform.applyToPoint(new c2(t3.x, n3)),
o3 = this.ctx.transform.decompose(),
s3 = new h2()
s3 = (s3 = (s3 = s3.multiply(o3.translate)).multiply(o3.skew)).multiply(
o3.scale
)
for (
var l3,
f2,
d4,
p3 = this.ctx.transform.applyToRectangle(
new u2(t3.x, n3, r3.w, r3.h)
),
g3 = s3.applyToRectangle(new u2(t3.x, i3, r3.w, r3.h)),
m3 = y2.call(this, g3),
v5 = [],
w3 = 0;
w3 < m3.length;
w3 += 1
)
-1 === v5.indexOf(m3[w3]) && v5.push(m3[w3])
if ((L2(v5), this.autoPaging))
for (
var A3 = v5[0], P3 = v5[v5.length - 1], k3 = A3;
k3 < P3 + 1;
k3++
) {
this.pdf.setPage(k3)
var I3 = 1 === k3 ? this.posY + this.margin[0] : this.margin[0],
F3 =
this.pdf.internal.pageSize.height -
this.posY -
this.margin[0] -
this.margin[2],
C3 = this.pdf.internal.pageSize.height - this.margin[2],
j3 = C3 - this.margin[0],
O3 = this.pdf.internal.pageSize.width - this.margin[1],
B4 = O3 - this.margin[3],
M3 = 1 === k3 ? 0 : F3 + (k3 - 2) * j3
if (0 !== this.ctx.clip_path.length) {
var E3 = this.path
;(l3 = JSON.parse(JSON.stringify(this.ctx.clip_path))),
(this.path = N2(l3, this.posX + this.margin[3], -1 * M3 + I3)),
x2.call(this, 'fill', true),
(this.path = E3)
}
var q3 = N2(
[JSON.parse(JSON.stringify(g3))],
this.posX + this.margin[3],
-M3 + I3 + this.ctx.prevPageLastElemOffset
)[0]
t3.scale >= 0.01 &&
((f2 = this.pdf.internal.getFontSize()),
this.pdf.setFontSize(f2 * t3.scale),
(d4 = this.lineWidth),
(this.lineWidth = d4 * t3.scale))
var D3 = 'text' !== this.autoPaging
if (D3 || q3.y + q3.h <= C3) {
if (D3 || (q3.y >= I3 && q3.x <= O3)) {
var R3 = D3
? t3.text
: this.pdf.splitTextToSize(
t3.text,
t3.maxWidth || O3 - q3.x
)[0],
T3 = N2(
[JSON.parse(JSON.stringify(p3))],
this.posX + this.margin[3],
-M3 + I3 + this.ctx.prevPageLastElemOffset
)[0],
U2 = D3 && (k3 > A3 || k3 < P3) && b2.call(this)
U2 &&
(this.pdf.saveGraphicsState(),
this.pdf
.rect(this.margin[3], this.margin[0], B4, j3, null)
.clip()
.discardPath()),
this.pdf.text(R3, T3.x, T3.y, {
angle: t3.angle,
align: e3,
renderingMode: t3.renderingMode,
}),
U2 && this.pdf.restoreGraphicsState()
}
} else q3.y < C3 && (this.ctx.prevPageLastElemOffset += C3 - q3.y)
t3.scale >= 0.01 && (this.pdf.setFontSize(f2), (this.lineWidth = d4))
}
else
t3.scale >= 0.01 &&
((f2 = this.pdf.internal.getFontSize()),
this.pdf.setFontSize(f2 * t3.scale),
(d4 = this.lineWidth),
(this.lineWidth = d4 * t3.scale)),
this.pdf.text(t3.text, a2.x + this.posX, a2.y + this.posY, {
angle: t3.angle,
align: e3,
renderingMode: t3.renderingMode,
maxWidth: t3.maxWidth,
}),
t3.scale >= 0.01 && (this.pdf.setFontSize(f2), (this.lineWidth = d4))
},
j2 = function (t3, e3, r3, a2) {
;(r3 = r3 || 0),
(a2 = a2 || 0),
this.pdf.internal.out(n2(t3 + r3) + ' ' + i2(e3 + a2) + ' l')
},
O2 = function (t3, e3, r3) {
return this.pdf.lines(t3, e3, r3, null, null)
},
B3 = function (t3, e3, n3, i3, a2, c3, u3, h3) {
this.pdf.internal.out(
[
r2(o2(n3 + t3)),
r2(s2(i3 + e3)),
r2(o2(a2 + t3)),
r2(s2(c3 + e3)),
r2(o2(u3 + t3)),
r2(s2(h3 + e3)),
'c',
].join(' ')
)
},
M2 = function (t3, e3, r3, n3) {
for (var i3 = 2 * Math.PI, a2 = Math.PI / 2; e3 > r3; ) e3 -= i3
var o3 = Math.abs(r3 - e3)
o3 < i3 && n3 && (o3 = i3 - o3)
for (var s3 = [], c3 = n3 ? -1 : 1, u3 = e3; o3 > 1e-5; ) {
var h3 = u3 + c3 * Math.min(o3, a2)
s3.push(E2.call(this, t3, u3, h3)), (o3 -= Math.abs(h3 - u3)), (u3 = h3)
}
return s3
},
E2 = function (t3, e3, r3) {
var n3 = (r3 - e3) / 2,
i3 = t3 * Math.cos(n3),
a2 = t3 * Math.sin(n3),
o3 = i3,
s3 = -a2,
c3 = o3 * o3 + s3 * s3,
u3 = c3 + o3 * i3 + s3 * a2,
h3 = ((4 / 3) * (Math.sqrt(2 * c3 * u3) - u3)) / (o3 * a2 - s3 * i3),
l3 = o3 - h3 * s3,
f2 = s3 + h3 * o3,
d4 = l3,
p3 = -f2,
g3 = n3 + e3,
m3 = Math.cos(g3),
v5 = Math.sin(g3)
return {
x1: t3 * Math.cos(e3),
y1: t3 * Math.sin(e3),
x2: l3 * m3 - f2 * v5,
y2: l3 * v5 + f2 * m3,
x3: d4 * m3 - p3 * v5,
y3: d4 * v5 + p3 * m3,
x4: t3 * Math.cos(r3),
y4: t3 * Math.sin(r3),
}
},
q2 = function (t3) {
return (180 * t3) / Math.PI
},
D2 = function (t3, e3, r3, n3, i3, a2) {
var o3 = t3 + 0.5 * (r3 - t3),
s3 = e3 + 0.5 * (n3 - e3),
c3 = i3 + 0.5 * (r3 - i3),
h3 = a2 + 0.5 * (n3 - a2),
l3 = Math.min(t3, i3, o3, c3),
f2 = Math.max(t3, i3, o3, c3),
d4 = Math.min(e3, a2, s3, h3),
p3 = Math.max(e3, a2, s3, h3)
return new u2(l3, d4, f2 - l3, p3 - d4)
},
R2 = function (t3, e3, r3, n3, i3, a2, o3, s3) {
var c3,
h3,
l3,
f2,
d4,
p3,
g3,
m3,
v5,
b3,
y3,
w3,
N3,
L3,
A3 = r3 - t3,
x3 = n3 - e3,
S3 = i3 - r3,
_3 = a2 - n3,
P3 = o3 - i3,
k3 = s3 - a2
for (h3 = 0; h3 < 41; h3++)
(v5 =
(g3 =
(l3 = t3 + (c3 = h3 / 40) * A3) + c3 * ((d4 = r3 + c3 * S3) - l3)) +
c3 * (d4 + c3 * (i3 + c3 * P3 - d4) - g3)),
(b3 =
(m3 = (f2 = e3 + c3 * x3) + c3 * ((p3 = n3 + c3 * _3) - f2)) +
c3 * (p3 + c3 * (a2 + c3 * k3 - p3) - m3)),
0 == h3
? ((y3 = v5), (w3 = b3), (N3 = v5), (L3 = b3))
: ((y3 = Math.min(y3, v5)),
(w3 = Math.min(w3, b3)),
(N3 = Math.max(N3, v5)),
(L3 = Math.max(L3, b3)))
return new u2(
Math.round(y3),
Math.round(w3),
Math.round(N3 - y3),
Math.round(L3 - w3)
)
},
T2 = function () {
if (
this.prevLineDash ||
this.ctx.lineDash.length ||
this.ctx.lineDashOffset
) {
var t3,
e3,
r3 =
((t3 = this.ctx.lineDash),
(e3 = this.ctx.lineDashOffset),
JSON.stringify({ lineDash: t3, lineDashOffset: e3 }))
this.prevLineDash !== r3 &&
(this.pdf.setLineDash(this.ctx.lineDash, this.ctx.lineDashOffset),
(this.prevLineDash = r3))
}
}
})(E$1.API),
(function (t3) {
var r2 = function (t4) {
var e2, r3, n3, i3, a3, o2, s2, c2, u2, h2
for (
/[^\x00-\xFF]/.test(t4),
r3 = [],
n3 = 0,
i3 = (t4 += e2 = '\0\0\0\0'.slice(t4.length % 4 || 4)).length;
i3 > n3;
n3 += 4
)
0 !==
(a3 =
(t4.charCodeAt(n3) << 24) +
(t4.charCodeAt(n3 + 1) << 16) +
(t4.charCodeAt(n3 + 2) << 8) +
t4.charCodeAt(n3 + 3))
? ((o2 =
(a3 =
((a3 =
((a3 =
((a3 = (a3 - (h2 = a3 % 85)) / 85) - (u2 = a3 % 85)) /
85) -
(c2 = a3 % 85)) /
85) -
(s2 = a3 % 85)) /
85) % 85),
r3.push(o2 + 33, s2 + 33, c2 + 33, u2 + 33, h2 + 33))
: r3.push(122)
return (
(function (t5, e3) {
for (var r4 = e3; r4 > 0; r4--) t5.pop()
})(r3, e2.length),
String.fromCharCode.apply(String, r3) + '~>'
)
},
n2 = function (t4) {
var e2,
r3,
n3,
i3,
a3,
o2 = String,
s2 = 'length',
c2 = 255,
u2 = 'charCodeAt',
h2 = 'slice',
l2 = 'replace'
for (
t4[h2](-2),
t4 = t4[h2](0, -2)[l2](/\s/g, '')[l2]('z', '!!!!!'),
n3 = [],
i3 = 0,
a3 = (t4 += e2 = 'uuuuu'[h2](t4[s2] % 5 || 5))[s2];
a3 > i3;
i3 += 5
)
(r3 =
52200625 * (t4[u2](i3) - 33) +
614125 * (t4[u2](i3 + 1) - 33) +
7225 * (t4[u2](i3 + 2) - 33) +
85 * (t4[u2](i3 + 3) - 33) +
(t4[u2](i3 + 4) - 33)),
n3.push(c2 & (r3 >> 24), c2 & (r3 >> 16), c2 & (r3 >> 8), c2 & r3)
return (
(function (t5, e3) {
for (var r4 = e3; r4 > 0; r4--) t5.pop()
})(n3, e2[s2]),
o2.fromCharCode.apply(o2, n3)
)
},
i2 = function (t4) {
var e2 = new RegExp(/^([0-9A-Fa-f]{2})+$/)
if (
(-1 !== (t4 = t4.replace(/\s/g, '')).indexOf('>') &&
(t4 = t4.substr(0, t4.indexOf('>'))),
t4.length % 2 && (t4 += '0'),
false === e2.test(t4))
)
return ''
for (var r3 = '', n3 = 0; n3 < t4.length; n3 += 2)
r3 += String.fromCharCode('0x' + (t4[n3] + t4[n3 + 1]))
return r3
},
a2 = function (t4) {
for (var r3 = new Uint8Array(t4.length), n3 = t4.length; n3--; )
r3[n3] = t4.charCodeAt(n3)
return (t4 = (r3 = zlibSync(r3)).reduce(function (t5, e2) {
return t5 + String.fromCharCode(e2)
}, ''))
}
t3.processDataByFilters = function (t4, e2) {
var o2 = 0,
s2 = t4 || '',
c2 = []
for (
'string' == typeof (e2 = e2 || []) && (e2 = [e2]), o2 = 0;
o2 < e2.length;
o2 += 1
)
switch (e2[o2]) {
case 'ASCII85Decode':
case '/ASCII85Decode':
;(s2 = n2(s2)), c2.push('/ASCII85Encode')
break
case 'ASCII85Encode':
case '/ASCII85Encode':
;(s2 = r2(s2)), c2.push('/ASCII85Decode')
break
case 'ASCIIHexDecode':
case '/ASCIIHexDecode':
;(s2 = i2(s2)), c2.push('/ASCIIHexEncode')
break
case 'ASCIIHexEncode':
case '/ASCIIHexEncode':
;(s2 =
s2
.split('')
.map(function (t5) {
return ('0' + t5.charCodeAt().toString(16)).slice(-2)
})
.join('') + '>'),
c2.push('/ASCIIHexDecode')
break
case 'FlateEncode':
case '/FlateEncode':
;(s2 = a2(s2)), c2.push('/FlateDecode')
break
default:
throw new Error('The filter: "' + e2[o2] + '" is not implemented')
}
return { data: s2, reverseChain: c2.reverse().join(' ') }
}
})(E$1.API),
(function (t3) {
;(t3.loadFile = function (t4, e2, r2) {
return (function (t5, e3, r3) {
;(e3 = false !== e3),
(r3 = 'function' == typeof r3 ? r3 : function () {})
var n2 = void 0
try {
n2 = (function (t6, e4, r4) {
var n3 = new XMLHttpRequest(),
i2 = 0,
a2 = function (t7) {
var e5 = t7.length,
r5 = [],
n4 = String.fromCharCode
for (i2 = 0; i2 < e5; i2 += 1)
r5.push(n4(255 & t7.charCodeAt(i2)))
return r5.join('')
}
if (
(n3.open('GET', t6, !e4),
n3.overrideMimeType('text/plain; charset=x-user-defined'),
false === e4 &&
(n3.onload = function () {
200 === n3.status ? r4(a2(this.responseText)) : r4(void 0)
}),
n3.send(null),
e4 && 200 === n3.status)
)
return a2(n3.responseText)
})(t5, e3, r3)
} catch (t6) {}
return n2
})(t4, e2, r2)
}),
(t3.loadImageFile = t3.loadFile)
})(E$1.API),
(function (e2) {
function r2() {
return (
n$1.html2canvas
? Promise.resolve(n$1.html2canvas)
: Promise.resolve().then(function () {
return html2canvas_esm
})
)
.catch(function (t3) {
return Promise.reject(new Error('Could not load html2canvas: ' + t3))
})
.then(function (t3) {
return t3.default ? t3.default : t3
})
}
function i2() {
return (
n$1.DOMPurify
? Promise.resolve(n$1.DOMPurify)
: Promise.resolve().then(function () {
return purify_es
})
)
.catch(function (t3) {
return Promise.reject(new Error('Could not load dompurify: ' + t3))
})
.then(function (t3) {
return t3.default ? t3.default : t3
})
}
var a2 = function (e3) {
var r3 = _typeof$3(e3)
return 'undefined' === r3
? 'undefined'
: 'string' === r3 || e3 instanceof String
? 'string'
: 'number' === r3 || e3 instanceof Number
? 'number'
: 'function' === r3 || e3 instanceof Function
? 'function'
: e3 && e3.constructor === Array
? 'array'
: e3 && 1 === e3.nodeType
? 'element'
: 'object' === r3
? 'object'
: 'unknown'
},
o2 = function (t3, e3) {
var r3 = document.createElement(t3)
for (var n2 in (e3.className && (r3.className = e3.className),
e3.innerHTML &&
e3.dompurify &&
(r3.innerHTML = e3.dompurify.sanitize(e3.innerHTML)),
e3.style))
r3.style[n2] = e3.style[n2]
return r3
},
s2 = function t3(e3) {
var r3 = Object.assign(
t3.convert(Promise.resolve()),
JSON.parse(JSON.stringify(t3.template))
),
n2 = t3.convert(Promise.resolve(), r3)
return (n2 = (n2 = n2.setProgress(1, t3, 1, [t3])).set(e3))
}
;((s2.prototype = Object.create(Promise.prototype)).constructor = s2),
(s2.convert = function (t3, e3) {
return (t3.__proto__ = e3 || s2.prototype), t3
}),
(s2.template = {
prop: {
src: null,
container: null,
overlay: null,
canvas: null,
img: null,
pdf: null,
pageSize: null,
callback: function () {},
},
progress: { val: 0, state: null, n: 0, stack: [] },
opt: {
filename: 'file.pdf',
margin: [0, 0, 0, 0],
enableLinks: true,
x: 0,
y: 0,
html2canvas: {},
jsPDF: {},
backgroundColor: 'transparent',
},
}),
(s2.prototype.from = function (t3, e3) {
return this.then(function () {
switch (
(e3 =
e3 ||
(function (t4) {
switch (a2(t4)) {
case 'string':
return 'string'
case 'element':
return 'canvas' === t4.nodeName.toLowerCase()
? 'canvas'
: 'element'
default:
return 'unknown'
}
})(t3))
) {
case 'string':
return this.then(i2).then(function (e4) {
return this.set({
src: o2('div', { innerHTML: t3, dompurify: e4 }),
})
})
case 'element':
return this.set({ src: t3 })
case 'canvas':
return this.set({ canvas: t3 })
case 'img':
return this.set({ img: t3 })
default:
return this.error('Unknown source type.')
}
})
}),
(s2.prototype.to = function (t3) {
switch (t3) {
case 'container':
return this.toContainer()
case 'canvas':
return this.toCanvas()
case 'img':
return this.toImg()
case 'pdf':
return this.toPdf()
default:
return this.error('Invalid target.')
}
}),
(s2.prototype.toContainer = function () {
return this.thenList([
function () {
return (
this.prop.src || this.error('Cannot duplicate - no source HTML.')
)
},
function () {
return this.prop.pageSize || this.setPageSize()
},
]).then(function () {
var t3 = {
position: 'relative',
display: 'inline-block',
width:
('number' != typeof this.opt.width ||
isNaN(this.opt.width) ||
'number' != typeof this.opt.windowWidth ||
isNaN(this.opt.windowWidth)
? Math.max(
this.prop.src.clientWidth,
this.prop.src.scrollWidth,
this.prop.src.offsetWidth
)
: this.opt.windowWidth) + 'px',
left: 0,
right: 0,
top: 0,
margin: 'auto',
backgroundColor: this.opt.backgroundColor,
},
e3 = (function t4(e4, r3) {
for (
var n2 =
3 === e4.nodeType
? document.createTextNode(e4.nodeValue)
: e4.cloneNode(false),
i3 = e4.firstChild;
i3;
i3 = i3.nextSibling
)
(true !== r3 &&
1 === i3.nodeType &&
'SCRIPT' === i3.nodeName) ||
n2.appendChild(t4(i3, r3))
return (
1 === e4.nodeType &&
('CANVAS' === e4.nodeName
? ((n2.width = e4.width),
(n2.height = e4.height),
n2.getContext('2d').drawImage(e4, 0, 0))
: ('TEXTAREA' !== e4.nodeName &&
'SELECT' !== e4.nodeName) ||
(n2.value = e4.value),
n2.addEventListener(
'load',
function () {
;(n2.scrollTop = e4.scrollTop),
(n2.scrollLeft = e4.scrollLeft)
},
true
)),
n2
)
})(this.prop.src, this.opt.html2canvas.javascriptEnabled)
'BODY' === e3.tagName &&
(t3.height =
Math.max(
document.body.scrollHeight,
document.body.offsetHeight,
document.documentElement.clientHeight,
document.documentElement.scrollHeight,
document.documentElement.offsetHeight
) + 'px'),
(this.prop.overlay = o2('div', {
className: 'html2pdf__overlay',
style: {
position: 'fixed',
overflow: 'hidden',
zIndex: 1e3,
left: '-100000px',
right: 0,
bottom: 0,
top: 0,
},
})),
(this.prop.container = o2('div', {
className: 'html2pdf__container',
style: t3,
})),
this.prop.container.appendChild(e3),
this.prop.container.firstChild.appendChild(
o2('div', {
style: {
clear: 'both',
border: '0 none transparent',
margin: 0,
padding: 0,
height: 0,
},
})
),
(this.prop.container.style.float = 'none'),
this.prop.overlay.appendChild(this.prop.container),
document.body.appendChild(this.prop.overlay),
(this.prop.container.firstChild.style.position = 'relative'),
(this.prop.container.height =
Math.max(
this.prop.container.firstChild.clientHeight,
this.prop.container.firstChild.scrollHeight,
this.prop.container.firstChild.offsetHeight
) + 'px')
})
}),
(s2.prototype.toCanvas = function () {
var t3 = [
function () {
return (
document.body.contains(this.prop.container) || this.toContainer()
)
},
]
return this.thenList(t3)
.then(r2)
.then(function (t4) {
var e3 = Object.assign({}, this.opt.html2canvas)
return delete e3.onrendered, t4(this.prop.container, e3)
})
.then(function (t4) {
;(this.opt.html2canvas.onrendered || function () {})(t4),
(this.prop.canvas = t4),
document.body.removeChild(this.prop.overlay)
})
}),
(s2.prototype.toContext2d = function () {
var t3 = [
function () {
return (
document.body.contains(this.prop.container) || this.toContainer()
)
},
]
return this.thenList(t3)
.then(r2)
.then(function (t4) {
var e3 = this.opt.jsPDF,
r3 = this.opt.fontFaces,
n2 =
'number' != typeof this.opt.width ||
isNaN(this.opt.width) ||
'number' != typeof this.opt.windowWidth ||
isNaN(this.opt.windowWidth)
? 1
: this.opt.width / this.opt.windowWidth,
i3 = Object.assign(
{
async: true,
allowTaint: true,
scale: n2,
scrollX: this.opt.scrollX || 0,
scrollY: this.opt.scrollY || 0,
backgroundColor: '#ffffff',
imageTimeout: 15e3,
logging: true,
proxy: null,
removeContainer: true,
foreignObjectRendering: false,
useCORS: false,
},
this.opt.html2canvas
)
if (
(delete i3.onrendered,
(e3.context2d.autoPaging =
void 0 === this.opt.autoPaging || this.opt.autoPaging),
(e3.context2d.posX = this.opt.x),
(e3.context2d.posY = this.opt.y),
(e3.context2d.margin = this.opt.margin),
(e3.context2d.fontFaces = r3),
r3)
)
for (var a3 = 0; a3 < r3.length; ++a3) {
var o3 = r3[a3],
s3 = o3.src.find(function (t5) {
return 'truetype' === t5.format
})
s3 && e3.addFont(s3.url, o3.ref.name, o3.ref.style)
}
return (
(i3.windowHeight = i3.windowHeight || 0),
(i3.windowHeight =
0 == i3.windowHeight
? Math.max(
this.prop.container.clientHeight,
this.prop.container.scrollHeight,
this.prop.container.offsetHeight
)
: i3.windowHeight),
e3.context2d.save(true),
t4(this.prop.container, i3)
)
})
.then(function (t4) {
this.opt.jsPDF.context2d.restore(true),
(this.opt.html2canvas.onrendered || function () {})(t4),
(this.prop.canvas = t4),
document.body.removeChild(this.prop.overlay)
})
}),
(s2.prototype.toImg = function () {
return this.thenList([
function () {
return this.prop.canvas || this.toCanvas()
},
]).then(function () {
var t3 = this.prop.canvas.toDataURL(
'image/' + this.opt.image.type,
this.opt.image.quality
)
;(this.prop.img = document.createElement('img')),
(this.prop.img.src = t3)
})
}),
(s2.prototype.toPdf = function () {
return this.thenList([
function () {
return this.toContext2d()
},
]).then(function () {
this.prop.pdf = this.prop.pdf || this.opt.jsPDF
})
}),
(s2.prototype.output = function (t3, e3, r3) {
return 'img' === (r3 = r3 || 'pdf').toLowerCase() ||
'image' === r3.toLowerCase()
? this.outputImg(t3, e3)
: this.outputPdf(t3, e3)
}),
(s2.prototype.outputPdf = function (t3, e3) {
return this.thenList([
function () {
return this.prop.pdf || this.toPdf()
},
]).then(function () {
return this.prop.pdf.output(t3, e3)
})
}),
(s2.prototype.outputImg = function (t3) {
return this.thenList([
function () {
return this.prop.img || this.toImg()
},
]).then(function () {
switch (t3) {
case void 0:
case 'img':
return this.prop.img
case 'datauristring':
case 'dataurlstring':
return this.prop.img.src
case 'datauri':
case 'dataurl':
return (document.location.href = this.prop.img.src)
default:
throw 'Image output type "' + t3 + '" is not supported.'
}
})
}),
(s2.prototype.save = function (t3) {
return this.thenList([
function () {
return this.prop.pdf || this.toPdf()
},
])
.set(t3 ? { filename: t3 } : null)
.then(function () {
this.prop.pdf.save(this.opt.filename)
})
}),
(s2.prototype.doCallback = function () {
return this.thenList([
function () {
return this.prop.pdf || this.toPdf()
},
]).then(function () {
this.prop.callback(this.prop.pdf)
})
}),
(s2.prototype.set = function (t3) {
if ('object' !== a2(t3)) return this
var e3 = Object.keys(t3 || {}).map(function (e4) {
if (e4 in s2.template.prop)
return function () {
this.prop[e4] = t3[e4]
}
switch (e4) {
case 'margin':
return this.setMargin.bind(this, t3.margin)
case 'jsPDF':
return function () {
return (this.opt.jsPDF = t3.jsPDF), this.setPageSize()
}
case 'pageSize':
return this.setPageSize.bind(this, t3.pageSize)
default:
return function () {
this.opt[e4] = t3[e4]
}
}
}, this)
return this.then(function () {
return this.thenList(e3)
})
}),
(s2.prototype.get = function (t3, e3) {
return this.then(function () {
var r3 = t3 in s2.template.prop ? this.prop[t3] : this.opt[t3]
return e3 ? e3(r3) : r3
})
}),
(s2.prototype.setMargin = function (t3) {
return this.then(function () {
switch (a2(t3)) {
case 'number':
t3 = [t3, t3, t3, t3]
case 'array':
if (
(2 === t3.length && (t3 = [t3[0], t3[1], t3[0], t3[1]]),
4 === t3.length)
)
break
default:
return this.error('Invalid margin array.')
}
this.opt.margin = t3
}).then(this.setPageSize)
}),
(s2.prototype.setPageSize = function (t3) {
function e3(t4, e4) {
return Math.floor(((t4 * e4) / 72) * 96)
}
return this.then(function () {
;(t3 = t3 || E$1.getPageSize(this.opt.jsPDF)).hasOwnProperty(
'inner'
) ||
((t3.inner = {
width: t3.width - this.opt.margin[1] - this.opt.margin[3],
height: t3.height - this.opt.margin[0] - this.opt.margin[2],
}),
(t3.inner.px = {
width: e3(t3.inner.width, t3.k),
height: e3(t3.inner.height, t3.k),
}),
(t3.inner.ratio = t3.inner.height / t3.inner.width)),
(this.prop.pageSize = t3)
})
}),
(s2.prototype.setProgress = function (t3, e3, r3, n2) {
return (
null != t3 && (this.progress.val = t3),
null != e3 && (this.progress.state = e3),
null != r3 && (this.progress.n = r3),
null != n2 && (this.progress.stack = n2),
(this.progress.ratio = this.progress.val / this.progress.state),
this
)
}),
(s2.prototype.updateProgress = function (t3, e3, r3, n2) {
return this.setProgress(
t3 ? this.progress.val + t3 : null,
e3 || null,
r3 ? this.progress.n + r3 : null,
n2 ? this.progress.stack.concat(n2) : null
)
}),
(s2.prototype.then = function (t3, e3) {
var r3 = this
return this.thenCore(t3, e3, function (t4, e4) {
return (
r3.updateProgress(null, null, 1, [t4]),
Promise.prototype.then
.call(this, function (e5) {
return r3.updateProgress(null, t4), e5
})
.then(t4, e4)
.then(function (t5) {
return r3.updateProgress(1), t5
})
)
})
}),
(s2.prototype.thenCore = function (t3, e3, r3) {
r3 = r3 || Promise.prototype.then
t3 && (t3 = t3.bind(this)), e3 && (e3 = e3.bind(this))
var n2 =
-1 !== Promise.toString().indexOf('[native code]') &&
'Promise' === Promise.name
? this
: s2.convert(Object.assign({}, this), Promise.prototype),
i3 = r3.call(n2, t3, e3)
return s2.convert(i3, this.__proto__)
}),
(s2.prototype.thenExternal = function (t3, e3) {
return Promise.prototype.then.call(this, t3, e3)
}),
(s2.prototype.thenList = function (t3) {
var e3 = this
return (
t3.forEach(function (t4) {
e3 = e3.thenCore(t4)
}),
e3
)
}),
(s2.prototype.catch = function (t3) {
t3 && (t3 = t3.bind(this))
var e3 = Promise.prototype.catch.call(this, t3)
return s2.convert(e3, this)
}),
(s2.prototype.catchExternal = function (t3) {
return Promise.prototype.catch.call(this, t3)
}),
(s2.prototype.error = function (t3) {
return this.then(function () {
throw new Error(t3)
})
}),
(s2.prototype.using = s2.prototype.set),
(s2.prototype.saveAs = s2.prototype.save),
(s2.prototype.export = s2.prototype.output),
(s2.prototype.run = s2.prototype.then),
(E$1.getPageSize = function (e3, r3, n2) {
if ('object' === _typeof$3(e3)) {
var i3 = e3
;(e3 = i3.orientation), (r3 = i3.unit || r3), (n2 = i3.format || n2)
}
;(r3 = r3 || 'mm'),
(n2 = n2 || 'a4'),
(e3 = ('' + (e3 || 'P')).toLowerCase())
var a3,
o3 = ('' + n2).toLowerCase(),
s3 = {
a0: [2383.94, 3370.39],
a1: [1683.78, 2383.94],
a2: [1190.55, 1683.78],
a3: [841.89, 1190.55],
a4: [595.28, 841.89],
a5: [419.53, 595.28],
a6: [297.64, 419.53],
a7: [209.76, 297.64],
a8: [147.4, 209.76],
a9: [104.88, 147.4],
a10: [73.7, 104.88],
b0: [2834.65, 4008.19],
b1: [2004.09, 2834.65],
b2: [1417.32, 2004.09],
b3: [1000.63, 1417.32],
b4: [708.66, 1000.63],
b5: [498.9, 708.66],
b6: [354.33, 498.9],
b7: [249.45, 354.33],
b8: [175.75, 249.45],
b9: [124.72, 175.75],
b10: [87.87, 124.72],
c0: [2599.37, 3676.54],
c1: [1836.85, 2599.37],
c2: [1298.27, 1836.85],
c3: [918.43, 1298.27],
c4: [649.13, 918.43],
c5: [459.21, 649.13],
c6: [323.15, 459.21],
c7: [229.61, 323.15],
c8: [161.57, 229.61],
c9: [113.39, 161.57],
c10: [79.37, 113.39],
dl: [311.81, 623.62],
letter: [612, 792],
'government-letter': [576, 756],
legal: [612, 1008],
'junior-legal': [576, 360],
ledger: [1224, 792],
tabloid: [792, 1224],
'credit-card': [153, 243],
}
switch (r3) {
case 'pt':
a3 = 1
break
case 'mm':
a3 = 72 / 25.4
break
case 'cm':
a3 = 72 / 2.54
break
case 'in':
a3 = 72
break
case 'px':
a3 = 0.75
break
case 'pc':
case 'em':
a3 = 12
break
case 'ex':
a3 = 6
break
default:
throw 'Invalid unit: ' + r3
}
var c2,
u2 = 0,
h2 = 0
if (s3.hasOwnProperty(o3)) (u2 = s3[o3][1] / a3), (h2 = s3[o3][0] / a3)
else
try {
;(u2 = n2[1]), (h2 = n2[0])
} catch (t3) {
throw new Error('Invalid format: ' + n2)
}
if ('p' === e3 || 'portrait' === e3)
(e3 = 'p'), h2 > u2 && ((c2 = h2), (h2 = u2), (u2 = c2))
else {
if ('l' !== e3 && 'landscape' !== e3)
throw 'Invalid orientation: ' + e3
;(e3 = 'l'), u2 > h2 && ((c2 = h2), (h2 = u2), (u2 = c2))
}
return { width: h2, height: u2, unit: r3, k: a3, orientation: e3 }
}),
(e2.html = function (t3, e3) {
;((e3 = e3 || {}).callback = e3.callback || function () {}),
(e3.html2canvas = e3.html2canvas || {}),
(e3.html2canvas.canvas = e3.html2canvas.canvas || this.canvas),
(e3.jsPDF = e3.jsPDF || this),
(e3.fontFaces = e3.fontFaces ? e3.fontFaces.map(jt) : null)
var r3 = new s2(e3)
return e3.worker ? r3 : r3.from(t3).doCallback()
})
})(E$1.API),
(E$1.API.addJS = function (t3) {
return (
(Ht = t3),
this.internal.events.subscribe('postPutResources', function () {
;(Ut = this.internal.newObject()),
this.internal.out('<<'),
this.internal.out('/Names [(EmbeddedJS) ' + (Ut + 1) + ' 0 R]'),
this.internal.out('>>'),
this.internal.out('endobj'),
(zt = this.internal.newObject()),
this.internal.out('<<'),
this.internal.out('/S /JavaScript'),
this.internal.out('/JS (' + Ht + ')'),
this.internal.out('>>'),
this.internal.out('endobj')
}),
this.internal.events.subscribe('putCatalog', function () {
void 0 !== Ut &&
void 0 !== zt &&
this.internal.out('/Names <>')
}),
this
)
}),
(function (t3) {
var e2
t3.events.push([
'postPutResources',
function () {
var t4 = this,
r2 = /^(\d+) 0 obj$/
if (this.outline.root.children.length > 0)
for (
var n2 = t4.outline.render().split(/\r\n/), i2 = 0;
i2 < n2.length;
i2++
) {
var a2 = n2[i2],
o2 = r2.exec(a2)
if (null != o2) {
var s2 = o2[1]
t4.internal.newObjectDeferredBegin(s2, false)
}
t4.internal.write(a2)
}
if (this.outline.createNamedDestinations) {
var c2 = this.internal.pages.length,
u2 = []
for (i2 = 0; i2 < c2; i2++) {
var h2 = t4.internal.newObject()
u2.push(h2)
var l2 = t4.internal.getPageInfo(i2 + 1)
t4.internal.write(
'<< /D[' + l2.objId + ' 0 R /XYZ null null null]>> endobj'
)
}
var f2 = t4.internal.newObject()
t4.internal.write('<< /Names [ ')
for (i2 = 0; i2 < u2.length; i2++)
t4.internal.write('(page_' + (i2 + 1) + ')' + u2[i2] + ' 0 R')
t4.internal.write(' ] >>', 'endobj'),
(e2 = t4.internal.newObject()),
t4.internal.write('<< /Dests ' + f2 + ' 0 R'),
t4.internal.write('>>', 'endobj')
}
},
]),
t3.events.push([
'putCatalog',
function () {
this.outline.root.children.length > 0 &&
(this.internal.write(
'/Outlines',
this.outline.makeRef(this.outline.root)
),
this.outline.createNamedDestinations &&
this.internal.write('/Names ' + e2 + ' 0 R'))
},
]),
t3.events.push([
'initialized',
function () {
var t4 = this
;(t4.outline = {
createNamedDestinations: false,
root: { children: [] },
}),
(t4.outline.add = function (t5, e3, r2) {
var n2 = { title: e3, options: r2, children: [] }
return null == t5 && (t5 = this.root), t5.children.push(n2), n2
}),
(t4.outline.render = function () {
return (
(this.ctx = {}),
(this.ctx.val = ''),
(this.ctx.pdf = t4),
this.genIds_r(this.root),
this.renderRoot(this.root),
this.renderItems(this.root),
this.ctx.val
)
}),
(t4.outline.genIds_r = function (e3) {
e3.id = t4.internal.newObjectDeferred()
for (var r2 = 0; r2 < e3.children.length; r2++)
this.genIds_r(e3.children[r2])
}),
(t4.outline.renderRoot = function (t5) {
this.objStart(t5),
this.line('/Type /Outlines'),
t5.children.length > 0 &&
(this.line('/First ' + this.makeRef(t5.children[0])),
this.line(
'/Last ' + this.makeRef(t5.children[t5.children.length - 1])
)),
this.line('/Count ' + this.count_r({ count: 0 }, t5)),
this.objEnd()
}),
(t4.outline.renderItems = function (e3) {
for (
var r2 = this.ctx.pdf.internal.getVerticalCoordinateString,
n2 = 0;
n2 < e3.children.length;
n2++
) {
var i2 = e3.children[n2]
this.objStart(i2),
this.line('/Title ' + this.makeString(i2.title)),
this.line('/Parent ' + this.makeRef(e3)),
n2 > 0 &&
this.line('/Prev ' + this.makeRef(e3.children[n2 - 1])),
n2 < e3.children.length - 1 &&
this.line('/Next ' + this.makeRef(e3.children[n2 + 1])),
i2.children.length > 0 &&
(this.line('/First ' + this.makeRef(i2.children[0])),
this.line(
'/Last ' +
this.makeRef(i2.children[i2.children.length - 1])
))
var a2 = (this.count = this.count_r({ count: 0 }, i2))
if (
(a2 > 0 && this.line('/Count ' + a2),
i2.options && i2.options.pageNumber)
) {
var o2 = t4.internal.getPageInfo(i2.options.pageNumber)
this.line(
'/Dest [' + o2.objId + ' 0 R /XYZ 0 ' + r2(0) + ' 0]'
)
}
this.objEnd()
}
for (var s2 = 0; s2 < e3.children.length; s2++)
this.renderItems(e3.children[s2])
}),
(t4.outline.line = function (t5) {
this.ctx.val += t5 + '\r\n'
}),
(t4.outline.makeRef = function (t5) {
return t5.id + ' 0 R'
}),
(t4.outline.makeString = function (e3) {
return '(' + t4.internal.pdfEscape(e3) + ')'
}),
(t4.outline.objStart = function (t5) {
this.ctx.val += '\r\n' + t5.id + ' 0 obj\r\n<<\r\n'
}),
(t4.outline.objEnd = function () {
this.ctx.val += '>> \r\nendobj\r\n'
}),
(t4.outline.count_r = function (t5, e3) {
for (var r2 = 0; r2 < e3.children.length; r2++)
t5.count++, this.count_r(t5, e3.children[r2])
return t5.count
})
},
])
})(E$1.API),
(function (t3) {
var e2 = [192, 193, 194, 195, 196, 197, 198, 199]
t3.processJPEG = function (t4, r2, n2, i2, a2, o2) {
var s2,
c2 = this.decode.DCT_DECODE,
u2 = null
if (
'string' == typeof t4 ||
this.__addimage__.isArrayBuffer(t4) ||
this.__addimage__.isArrayBufferView(t4)
) {
switch (
((t4 = a2 || t4),
(t4 = this.__addimage__.isArrayBuffer(t4) ? new Uint8Array(t4) : t4),
(s2 = (function (t5) {
for (
var r3,
n3 = 256 * t5.charCodeAt(4) + t5.charCodeAt(5),
i3 = t5.length,
a3 = { width: 0, height: 0, numcomponents: 1 },
o3 = 4;
o3 < i3;
o3 += 2
) {
if (((o3 += n3), -1 !== e2.indexOf(t5.charCodeAt(o3 + 1)))) {
;(r3 = 256 * t5.charCodeAt(o3 + 5) + t5.charCodeAt(o3 + 6)),
(a3 = {
width: 256 * t5.charCodeAt(o3 + 7) + t5.charCodeAt(o3 + 8),
height: r3,
numcomponents: t5.charCodeAt(o3 + 9),
})
break
}
n3 = 256 * t5.charCodeAt(o3 + 2) + t5.charCodeAt(o3 + 3)
}
return a3
})(
(t4 = this.__addimage__.isArrayBufferView(t4)
? this.__addimage__.arrayBufferToBinaryString(t4)
: t4)
)).numcomponents)
) {
case 1:
o2 = this.color_spaces.DEVICE_GRAY
break
case 4:
o2 = this.color_spaces.DEVICE_CMYK
break
case 3:
o2 = this.color_spaces.DEVICE_RGB
}
u2 = {
data: t4,
width: s2.width,
height: s2.height,
colorSpace: o2,
bitsPerComponent: 8,
filter: c2,
index: r2,
alias: n2,
}
}
return u2
}
})(E$1.API)
var Vt,
Gt,
Yt,
Jt,
Xt,
Kt = (function () {
var t3, e2, i2
function a2(t4) {
var e3, r2, n2, i3, a3, o3, s2, c2, u2, h2, l2, f2, d3, p2
for (
this.data = t4,
this.pos = 8,
this.palette = [],
this.imgData = [],
this.transparency = {},
this.animation = null,
this.text = {},
o3 = null;
;
) {
switch (
((e3 = this.readUInt32()),
(u2 = function () {
var t5, e4
for (e4 = [], t5 = 0; t5 < 4; ++t5)
e4.push(String.fromCharCode(this.data[this.pos++]))
return e4
}
.call(this)
.join('')))
) {
case 'IHDR':
;(this.width = this.readUInt32()),
(this.height = this.readUInt32()),
(this.bits = this.data[this.pos++]),
(this.colorType = this.data[this.pos++]),
(this.compressionMethod = this.data[this.pos++]),
(this.filterMethod = this.data[this.pos++]),
(this.interlaceMethod = this.data[this.pos++])
break
case 'acTL':
this.animation = {
numFrames: this.readUInt32(),
numPlays: this.readUInt32() || 1 / 0,
frames: [],
}
break
case 'PLTE':
this.palette = this.read(e3)
break
case 'fcTL':
o3 && this.animation.frames.push(o3),
(this.pos += 4),
(o3 = {
width: this.readUInt32(),
height: this.readUInt32(),
xOffset: this.readUInt32(),
yOffset: this.readUInt32(),
}),
(a3 = this.readUInt16()),
(i3 = this.readUInt16() || 100),
(o3.delay = (1e3 * a3) / i3),
(o3.disposeOp = this.data[this.pos++]),
(o3.blendOp = this.data[this.pos++]),
(o3.data = [])
break
case 'IDAT':
case 'fdAT':
for (
'fdAT' === u2 && ((this.pos += 4), (e3 -= 4)),
t4 = (null != o3 ? o3.data : void 0) || this.imgData,
f2 = 0;
0 <= e3 ? f2 < e3 : f2 > e3;
0 <= e3 ? ++f2 : --f2
)
t4.push(this.data[this.pos++])
break
case 'tRNS':
switch (((this.transparency = {}), this.colorType)) {
case 3:
if (
((n2 = this.palette.length / 3),
(this.transparency.indexed = this.read(e3)),
this.transparency.indexed.length > n2)
)
throw new Error('More transparent colors than palette size')
if ((h2 = n2 - this.transparency.indexed.length) > 0)
for (
d3 = 0;
0 <= h2 ? d3 < h2 : d3 > h2;
0 <= h2 ? ++d3 : --d3
)
this.transparency.indexed.push(255)
break
case 0:
this.transparency.grayscale = this.read(e3)[0]
break
case 2:
this.transparency.rgb = this.read(e3)
}
break
case 'tEXt':
;(s2 = (l2 = this.read(e3)).indexOf(0)),
(c2 = String.fromCharCode.apply(String, l2.slice(0, s2))),
(this.text[c2] = String.fromCharCode.apply(
String,
l2.slice(s2 + 1)
))
break
case 'IEND':
return (
o3 && this.animation.frames.push(o3),
(this.colors = function () {
switch (this.colorType) {
case 0:
case 3:
case 4:
return 1
case 2:
case 6:
return 3
}
}.call(this)),
(this.hasAlphaChannel = 4 === (p2 = this.colorType) || 6 === p2),
(r2 = this.colors + (this.hasAlphaChannel ? 1 : 0)),
(this.pixelBitlength = this.bits * r2),
(this.colorSpace = function () {
switch (this.colors) {
case 1:
return 'DeviceGray'
case 3:
return 'DeviceRGB'
}
}.call(this)),
void (this.imgData = new Uint8Array(this.imgData))
)
default:
this.pos += e3
}
if (((this.pos += 4), this.pos > this.data.length))
throw new Error('Incomplete or corrupt PNG file')
}
}
;(a2.prototype.read = function (t4) {
var e3, r2
for (r2 = [], e3 = 0; 0 <= t4 ? e3 < t4 : e3 > t4; 0 <= t4 ? ++e3 : --e3)
r2.push(this.data[this.pos++])
return r2
}),
(a2.prototype.readUInt32 = function () {
return (
(this.data[this.pos++] << 24) |
(this.data[this.pos++] << 16) |
(this.data[this.pos++] << 8) |
this.data[this.pos++]
)
}),
(a2.prototype.readUInt16 = function () {
return (this.data[this.pos++] << 8) | this.data[this.pos++]
}),
(a2.prototype.decodePixels = function (t4) {
var e3 = this.pixelBitlength / 8,
n2 = new Uint8Array(this.width * this.height * e3),
i3 = 0,
a3 = this
if ((null == t4 && (t4 = this.imgData), 0 === t4.length))
return new Uint8Array(0)
function o3(r2, o4, s2, c2) {
var u2,
h2,
l2,
f2,
d3,
p2,
g2,
m2,
v4,
b2,
y2,
w2,
N2,
L2,
A2,
x2,
S2,
_2,
P2,
k2,
I2,
F2 = Math.ceil((a3.width - r2) / s2),
C2 = Math.ceil((a3.height - o4) / c2),
j2 = a3.width == F2 && a3.height == C2
for (
L2 = e3 * F2,
w2 = j2 ? n2 : new Uint8Array(L2 * C2),
p2 = t4.length,
N2 = 0,
h2 = 0;
N2 < C2 && i3 < p2;
) {
switch (t4[i3++]) {
case 0:
for (f2 = S2 = 0; S2 < L2; f2 = S2 += 1) w2[h2++] = t4[i3++]
break
case 1:
for (f2 = _2 = 0; _2 < L2; f2 = _2 += 1)
(u2 = t4[i3++]),
(d3 = f2 < e3 ? 0 : w2[h2 - e3]),
(w2[h2++] = (u2 + d3) % 256)
break
case 2:
for (f2 = P2 = 0; P2 < L2; f2 = P2 += 1)
(u2 = t4[i3++]),
(l2 = (f2 - (f2 % e3)) / e3),
(A2 = N2 && w2[(N2 - 1) * L2 + l2 * e3 + (f2 % e3)]),
(w2[h2++] = (A2 + u2) % 256)
break
case 3:
for (f2 = k2 = 0; k2 < L2; f2 = k2 += 1)
(u2 = t4[i3++]),
(l2 = (f2 - (f2 % e3)) / e3),
(d3 = f2 < e3 ? 0 : w2[h2 - e3]),
(A2 = N2 && w2[(N2 - 1) * L2 + l2 * e3 + (f2 % e3)]),
(w2[h2++] = (u2 + Math.floor((d3 + A2) / 2)) % 256)
break
case 4:
for (f2 = I2 = 0; I2 < L2; f2 = I2 += 1)
(u2 = t4[i3++]),
(l2 = (f2 - (f2 % e3)) / e3),
(d3 = f2 < e3 ? 0 : w2[h2 - e3]),
0 === N2
? (A2 = x2 = 0)
: ((A2 = w2[(N2 - 1) * L2 + l2 * e3 + (f2 % e3)]),
(x2 =
l2 && w2[(N2 - 1) * L2 + (l2 - 1) * e3 + (f2 % e3)])),
(g2 = d3 + A2 - x2),
(m2 = Math.abs(g2 - d3)),
(b2 = Math.abs(g2 - A2)),
(y2 = Math.abs(g2 - x2)),
(v4 = m2 <= b2 && m2 <= y2 ? d3 : b2 <= y2 ? A2 : x2),
(w2[h2++] = (u2 + v4) % 256)
break
default:
throw new Error('Invalid filter algorithm: ' + t4[i3 - 1])
}
if (!j2) {
var O2 = ((o4 + N2 * c2) * a3.width + r2) * e3,
B3 = N2 * L2
for (f2 = 0; f2 < F2; f2 += 1) {
for (var M2 = 0; M2 < e3; M2 += 1) n2[O2++] = w2[B3++]
O2 += (s2 - 1) * e3
}
}
N2++
}
}
return (
(t4 = unzlibSync(t4)),
1 == a3.interlaceMethod
? (o3(0, 0, 8, 8),
o3(4, 0, 8, 8),
o3(0, 4, 4, 8),
o3(2, 0, 4, 4),
o3(0, 2, 2, 4),
o3(1, 0, 2, 2),
o3(0, 1, 1, 2))
: o3(0, 0, 1, 1),
n2
)
}),
(a2.prototype.decodePalette = function () {
var t4, e3, r2, n2, i3, a3, o3, s2, c2
for (
r2 = this.palette,
a3 = this.transparency.indexed || [],
i3 = new Uint8Array((a3.length || 0) + r2.length),
n2 = 0,
t4 = 0,
e3 = o3 = 0,
s2 = r2.length;
o3 < s2;
e3 = o3 += 3
)
(i3[n2++] = r2[e3]),
(i3[n2++] = r2[e3 + 1]),
(i3[n2++] = r2[e3 + 2]),
(i3[n2++] = null != (c2 = a3[t4++]) ? c2 : 255)
return i3
}),
(a2.prototype.copyToImageData = function (t4, e3) {
var r2, n2, i3, a3, o3, s2, c2, u2, h2, l2, f2
if (
((n2 = this.colors),
(h2 = null),
(r2 = this.hasAlphaChannel),
this.palette.length &&
((h2 =
null != (f2 = this._decodedPalette)
? f2
: (this._decodedPalette = this.decodePalette())),
(n2 = 4),
(r2 = true)),
(u2 = (i3 = t4.data || t4).length),
(o3 = h2 || e3),
(a3 = s2 = 0),
1 === n2)
)
for (; a3 < u2; )
(c2 = h2 ? 4 * e3[a3 / 4] : s2),
(l2 = o3[c2++]),
(i3[a3++] = l2),
(i3[a3++] = l2),
(i3[a3++] = l2),
(i3[a3++] = r2 ? o3[c2++] : 255),
(s2 = c2)
else
for (; a3 < u2; )
(c2 = h2 ? 4 * e3[a3 / 4] : s2),
(i3[a3++] = o3[c2++]),
(i3[a3++] = o3[c2++]),
(i3[a3++] = o3[c2++]),
(i3[a3++] = r2 ? o3[c2++] : 255),
(s2 = c2)
}),
(a2.prototype.decode = function () {
var t4
return (
(t4 = new Uint8Array(this.width * this.height * 4)),
this.copyToImageData(t4, this.decodePixels()),
t4
)
})
var o2 = function () {
if ('[object Window]' === Object.prototype.toString.call(n$1)) {
try {
;(e2 = n$1.document.createElement('canvas')),
(i2 = e2.getContext('2d'))
} catch (t4) {
return false
}
return true
}
return false
}
return (
o2(),
(t3 = function (t4) {
var r2
if (true === o2())
return (
(i2.width = t4.width),
(i2.height = t4.height),
i2.clearRect(0, 0, t4.width, t4.height),
i2.putImageData(t4, 0, 0),
((r2 = new Image()).src = e2.toDataURL()),
r2
)
throw new Error(
'This method requires a Browser with Canvas-capability.'
)
}),
(a2.prototype.decodeFrames = function (e3) {
var r2, n2, i3, a3, o3, s2, c2, u2
if (this.animation) {
for (
u2 = [], n2 = o3 = 0, s2 = (c2 = this.animation.frames).length;
o3 < s2;
n2 = ++o3
)
(r2 = c2[n2]),
(i3 = e3.createImageData(r2.width, r2.height)),
(a3 = this.decodePixels(new Uint8Array(r2.data))),
this.copyToImageData(i3, a3),
(r2.imageData = i3),
u2.push((r2.image = t3(i3)))
return u2
}
}),
(a2.prototype.renderFrame = function (t4, e3) {
var r2, n2, i3
return (
(r2 = (n2 = this.animation.frames)[e3]),
(i3 = n2[e3 - 1]),
0 === e3 && t4.clearRect(0, 0, this.width, this.height),
1 === (null != i3 ? i3.disposeOp : void 0)
? t4.clearRect(i3.xOffset, i3.yOffset, i3.width, i3.height)
: 2 === (null != i3 ? i3.disposeOp : void 0) &&
t4.putImageData(i3.imageData, i3.xOffset, i3.yOffset),
0 === r2.blendOp &&
t4.clearRect(r2.xOffset, r2.yOffset, r2.width, r2.height),
t4.drawImage(r2.image, r2.xOffset, r2.yOffset)
)
}),
(a2.prototype.animate = function (t4) {
var e3,
r2,
n2,
i3,
a3,
o3,
s2 = this
return (
(r2 = 0),
(o3 = this.animation),
(i3 = o3.numFrames),
(n2 = o3.frames),
(a3 = o3.numPlays),
(e3 = function () {
var o4, c2
if (
((o4 = r2++ % i3),
(c2 = n2[o4]),
s2.renderFrame(t4, o4),
i3 > 1 && r2 / i3 < a3)
)
return (s2.animation._timeout = setTimeout(e3, c2.delay))
})()
)
}),
(a2.prototype.stopAnimation = function () {
var t4
return clearTimeout(
null != (t4 = this.animation) ? t4._timeout : void 0
)
}),
(a2.prototype.render = function (t4) {
var e3, r2
return (
t4._png && t4._png.stopAnimation(),
(t4._png = this),
(t4.width = this.width),
(t4.height = this.height),
(e3 = t4.getContext('2d')),
this.animation
? (this.decodeFrames(e3), this.animate(e3))
: ((r2 = e3.createImageData(this.width, this.height)),
this.copyToImageData(r2, this.decodePixels()),
e3.putImageData(r2, 0, 0))
)
}),
a2
)
})()
/**
* @license
*
* Copyright (c) 2014 James Robb, https://github.com/jamesbrobb
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
* ====================================================================
*/
/**
* @license
* (c) Dean McNamee , 2013.
*
* https://github.com/deanm/omggif
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to
* deal in the Software without restriction, including without limitation the
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
* IN THE SOFTWARE.
*
* omggif is a JavaScript implementation of a GIF 89a encoder and decoder,
* including animation and compression. It does not rely on any specific
* underlying system, so should run in the browser, Node, or Plask.
*/
function Zt(t3) {
var e2 = 0
if (
71 !== t3[e2++] ||
73 !== t3[e2++] ||
70 !== t3[e2++] ||
56 !== t3[e2++] ||
56 != ((t3[e2++] + 1) & 253) ||
97 !== t3[e2++]
)
throw new Error('Invalid GIF 87a/89a header.')
var r2 = t3[e2++] | (t3[e2++] << 8),
n2 = t3[e2++] | (t3[e2++] << 8),
i2 = t3[e2++],
a2 = i2 >> 7,
o2 = 1 << ((7 & i2) + 1)
t3[e2++]
t3[e2++]
var s2 = null,
c2 = null
a2 && ((s2 = e2), (c2 = o2), (e2 += 3 * o2))
var u2 = true,
h2 = [],
l2 = 0,
f2 = null,
d3 = 0,
p2 = null
for (this.width = r2, this.height = n2; u2 && e2 < t3.length; )
switch (t3[e2++]) {
case 33:
switch (t3[e2++]) {
case 255:
if (
11 !== t3[e2] ||
(78 == t3[e2 + 1] &&
69 == t3[e2 + 2] &&
84 == t3[e2 + 3] &&
83 == t3[e2 + 4] &&
67 == t3[e2 + 5] &&
65 == t3[e2 + 6] &&
80 == t3[e2 + 7] &&
69 == t3[e2 + 8] &&
50 == t3[e2 + 9] &&
46 == t3[e2 + 10] &&
48 == t3[e2 + 11] &&
3 == t3[e2 + 12] &&
1 == t3[e2 + 13] &&
0 == t3[e2 + 16])
)
(e2 += 14), (p2 = t3[e2++] | (t3[e2++] << 8)), e2++
else
for (e2 += 12; ; ) {
if (!((P2 = t3[e2++]) >= 0)) throw Error('Invalid block size')
if (0 === P2) break
e2 += P2
}
break
case 249:
if (4 !== t3[e2++] || 0 !== t3[e2 + 4])
throw new Error('Invalid graphics extension block.')
var g2 = t3[e2++]
;(l2 = t3[e2++] | (t3[e2++] << 8)),
(f2 = t3[e2++]),
0 == (1 & g2) && (f2 = null),
(d3 = (g2 >> 2) & 7),
e2++
break
case 254:
for (;;) {
if (!((P2 = t3[e2++]) >= 0)) throw Error('Invalid block size')
if (0 === P2) break
e2 += P2
}
break
default:
throw new Error(
'Unknown graphic control label: 0x' + t3[e2 - 1].toString(16)
)
}
break
case 44:
var m2 = t3[e2++] | (t3[e2++] << 8),
v4 = t3[e2++] | (t3[e2++] << 8),
b2 = t3[e2++] | (t3[e2++] << 8),
y2 = t3[e2++] | (t3[e2++] << 8),
w2 = t3[e2++],
N2 = (w2 >> 6) & 1,
L2 = 1 << ((7 & w2) + 1),
A2 = s2,
x2 = c2,
S2 = false
if (w2 >> 7) {
S2 = true
;(A2 = e2), (x2 = L2), (e2 += 3 * L2)
}
var _2 = e2
for (e2++; ; ) {
var P2
if (!((P2 = t3[e2++]) >= 0)) throw Error('Invalid block size')
if (0 === P2) break
e2 += P2
}
h2.push({
x: m2,
y: v4,
width: b2,
height: y2,
has_local_palette: S2,
palette_offset: A2,
palette_size: x2,
data_offset: _2,
data_length: e2 - _2,
transparent_index: f2,
interlaced: !!N2,
delay: l2,
disposal: d3,
})
break
case 59:
u2 = false
break
default:
throw new Error('Unknown gif block: 0x' + t3[e2 - 1].toString(16))
}
;(this.numFrames = function () {
return h2.length
}),
(this.loopCount = function () {
return p2
}),
(this.frameInfo = function (t4) {
if (t4 < 0 || t4 >= h2.length)
throw new Error('Frame index out of range.')
return h2[t4]
}),
(this.decodeAndBlitFrameBGRA = function (e3, n3) {
var i3 = this.frameInfo(e3),
a3 = i3.width * i3.height,
o3 = new Uint8Array(a3)
$t(t3, i3.data_offset, o3, a3)
var s3 = i3.palette_offset,
c3 = i3.transparent_index
null === c3 && (c3 = 256)
var u3 = i3.width,
h3 = r2 - u3,
l3 = u3,
f3 = 4 * (i3.y * r2 + i3.x),
d4 = 4 * ((i3.y + i3.height) * r2 + i3.x),
p3 = f3,
g3 = 4 * h3
true === i3.interlaced && (g3 += 4 * r2 * 7)
for (var m3 = 8, v5 = 0, b3 = o3.length; v5 < b3; ++v5) {
var y3 = o3[v5]
if (
(0 === l3 &&
((l3 = u3),
(p3 += g3) >= d4 &&
((g3 = 4 * h3 + 4 * r2 * (m3 - 1)),
(p3 = f3 + (u3 + h3) * (m3 << 1)),
(m3 >>= 1))),
y3 === c3)
)
p3 += 4
else {
var w3 = t3[s3 + 3 * y3],
N3 = t3[s3 + 3 * y3 + 1],
L3 = t3[s3 + 3 * y3 + 2]
;(n3[p3++] = L3), (n3[p3++] = N3), (n3[p3++] = w3), (n3[p3++] = 255)
}
--l3
}
}),
(this.decodeAndBlitFrameRGBA = function (e3, n3) {
var i3 = this.frameInfo(e3),
a3 = i3.width * i3.height,
o3 = new Uint8Array(a3)
$t(t3, i3.data_offset, o3, a3)
var s3 = i3.palette_offset,
c3 = i3.transparent_index
null === c3 && (c3 = 256)
var u3 = i3.width,
h3 = r2 - u3,
l3 = u3,
f3 = 4 * (i3.y * r2 + i3.x),
d4 = 4 * ((i3.y + i3.height) * r2 + i3.x),
p3 = f3,
g3 = 4 * h3
true === i3.interlaced && (g3 += 4 * r2 * 7)
for (var m3 = 8, v5 = 0, b3 = o3.length; v5 < b3; ++v5) {
var y3 = o3[v5]
if (
(0 === l3 &&
((l3 = u3),
(p3 += g3) >= d4 &&
((g3 = 4 * h3 + 4 * r2 * (m3 - 1)),
(p3 = f3 + (u3 + h3) * (m3 << 1)),
(m3 >>= 1))),
y3 === c3)
)
p3 += 4
else {
var w3 = t3[s3 + 3 * y3],
N3 = t3[s3 + 3 * y3 + 1],
L3 = t3[s3 + 3 * y3 + 2]
;(n3[p3++] = w3), (n3[p3++] = N3), (n3[p3++] = L3), (n3[p3++] = 255)
}
--l3
}
})
}
function $t(t3, e2, r2, n2) {
for (
var i2 = t3[e2++],
o2 = 1 << i2,
s2 = o2 + 1,
c2 = s2 + 1,
u2 = i2 + 1,
h2 = (1 << u2) - 1,
l2 = 0,
f2 = 0,
d3 = 0,
p2 = t3[e2++],
g2 = new Int32Array(4096),
m2 = null;
;
) {
for (; l2 < 16 && 0 !== p2; )
(f2 |= t3[e2++] << l2), (l2 += 8), 1 === p2 ? (p2 = t3[e2++]) : --p2
if (l2 < u2) break
var v4 = f2 & h2
if (((f2 >>= u2), (l2 -= u2), v4 !== o2)) {
if (v4 === s2) break
for (var b2 = v4 < c2 ? v4 : m2, y2 = 0, w2 = b2; w2 > o2; )
(w2 = g2[w2] >> 8), ++y2
var N2 = w2
if (d3 + y2 + (b2 !== v4 ? 1 : 0) > n2)
return void a$2.log('Warning, gif stream longer than expected.')
r2[d3++] = N2
var L2 = (d3 += y2)
for (b2 !== v4 && (r2[d3++] = N2), w2 = b2; y2--; )
(w2 = g2[w2]), (r2[--L2] = 255 & w2), (w2 >>= 8)
null !== m2 &&
c2 < 4096 &&
((g2[c2++] = (m2 << 8) | N2),
c2 >= h2 + 1 && u2 < 12 && (++u2, (h2 = (h2 << 1) | 1))),
(m2 = v4)
} else (c2 = s2 + 1), (h2 = (1 << (u2 = i2 + 1)) - 1), (m2 = null)
}
return d3 !== n2 && a$2.log('Warning, gif stream shorter than expected.'), r2
}
/**
* @license
Copyright (c) 2008, Adobe Systems Incorporated
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of Adobe Systems Incorporated nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
function Qt(t3) {
var e2,
r2,
n2,
i2,
a2,
o2 = Math.floor,
s2 = new Array(64),
c2 = new Array(64),
u2 = new Array(64),
h2 = new Array(64),
l2 = new Array(65535),
f2 = new Array(65535),
d3 = new Array(64),
p2 = new Array(64),
g2 = [],
m2 = 0,
v4 = 7,
b2 = new Array(64),
y2 = new Array(64),
w2 = new Array(64),
N2 = new Array(256),
L2 = new Array(2048),
A2 = [
0, 1, 5, 6, 14, 15, 27, 28, 2, 4, 7, 13, 16, 26, 29, 42, 3, 8, 12, 17, 25,
30, 41, 43, 9, 11, 18, 24, 31, 40, 44, 53, 10, 19, 23, 32, 39, 45, 52, 54,
20, 22, 33, 38, 46, 51, 55, 60, 21, 34, 37, 47, 50, 56, 59, 61, 35, 36,
48, 49, 57, 58, 62, 63,
],
x2 = [0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0],
S2 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
_2 = [0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 125],
P2 = [
1, 2, 3, 0, 4, 17, 5, 18, 33, 49, 65, 6, 19, 81, 97, 7, 34, 113, 20, 50,
129, 145, 161, 8, 35, 66, 177, 193, 21, 82, 209, 240, 36, 51, 98, 114,
130, 9, 10, 22, 23, 24, 25, 26, 37, 38, 39, 40, 41, 42, 52, 53, 54, 55,
56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89,
90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120,
121, 122, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150,
151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179,
180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201,
202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 225, 226, 227, 228, 229,
230, 231, 232, 233, 234, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
],
k2 = [0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0],
I2 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
F2 = [0, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 119],
C2 = [
0, 1, 2, 3, 17, 4, 5, 33, 49, 6, 18, 65, 81, 7, 97, 113, 19, 34, 50, 129,
8, 20, 66, 145, 161, 177, 193, 9, 35, 51, 82, 240, 21, 98, 114, 209, 10,
22, 36, 52, 225, 37, 241, 23, 24, 25, 26, 38, 39, 40, 41, 42, 53, 54, 55,
56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89,
90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120,
121, 122, 130, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149,
150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178,
179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200,
201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 226, 227, 228, 229,
230, 231, 232, 233, 234, 242, 243, 244, 245, 246, 247, 248, 249, 250,
]
function j2(t4, e3) {
for (var r3 = 0, n3 = 0, i3 = new Array(), a3 = 1; a3 <= 16; a3++) {
for (var o3 = 1; o3 <= t4[a3]; o3++)
(i3[e3[n3]] = []),
(i3[e3[n3]][0] = r3),
(i3[e3[n3]][1] = a3),
n3++,
r3++
r3 *= 2
}
return i3
}
function O2(t4) {
for (var e3 = t4[0], r3 = t4[1] - 1; r3 >= 0; )
e3 & (1 << r3) && (m2 |= 1 << v4),
r3--,
--v4 < 0 && (255 == m2 ? (B3(255), B3(0)) : B3(m2), (v4 = 7), (m2 = 0))
}
function B3(t4) {
g2.push(t4)
}
function M2(t4) {
B3((t4 >> 8) & 255), B3(255 & t4)
}
function E2(t4, e3, r3, n3, i3) {
for (
var a3,
o3 = i3[0],
s3 = i3[240],
c3 = (function (t5, e4) {
var r4,
n4,
i4,
a4,
o4,
s4,
c4,
u4,
h4,
l3,
f3 = 0
for (h4 = 0; h4 < 8; ++h4) {
;(r4 = t5[f3]),
(n4 = t5[f3 + 1]),
(i4 = t5[f3 + 2]),
(a4 = t5[f3 + 3]),
(o4 = t5[f3 + 4]),
(s4 = t5[f3 + 5]),
(c4 = t5[f3 + 6])
var p3 = r4 + (u4 = t5[f3 + 7]),
g4 = r4 - u4,
m4 = n4 + c4,
v6 = n4 - c4,
b4 = i4 + s4,
y4 = i4 - s4,
w4 = a4 + o4,
N3 = a4 - o4,
L3 = p3 + w4,
A3 = p3 - w4,
x3 = m4 + b4,
S3 = m4 - b4
;(t5[f3] = L3 + x3), (t5[f3 + 4] = L3 - x3)
var _3 = 0.707106781 * (S3 + A3)
;(t5[f3 + 2] = A3 + _3), (t5[f3 + 6] = A3 - _3)
var P3 = 0.382683433 * ((L3 = N3 + y4) - (S3 = v6 + g4)),
k3 = 0.5411961 * L3 + P3,
I3 = 1.306562965 * S3 + P3,
F3 = 0.707106781 * (x3 = y4 + v6),
C3 = g4 + F3,
j3 = g4 - F3
;(t5[f3 + 5] = j3 + k3),
(t5[f3 + 3] = j3 - k3),
(t5[f3 + 1] = C3 + I3),
(t5[f3 + 7] = C3 - I3),
(f3 += 8)
}
for (f3 = 0, h4 = 0; h4 < 8; ++h4) {
;(r4 = t5[f3]),
(n4 = t5[f3 + 8]),
(i4 = t5[f3 + 16]),
(a4 = t5[f3 + 24]),
(o4 = t5[f3 + 32]),
(s4 = t5[f3 + 40]),
(c4 = t5[f3 + 48])
var O3 = r4 + (u4 = t5[f3 + 56]),
B4 = r4 - u4,
M3 = n4 + c4,
E3 = n4 - c4,
q3 = i4 + s4,
D2 = i4 - s4,
R2 = a4 + o4,
T2 = a4 - o4,
U2 = O3 + R2,
z2 = O3 - R2,
H4 = M3 + q3,
W2 = M3 - q3
;(t5[f3] = U2 + H4), (t5[f3 + 32] = U2 - H4)
var V2 = 0.707106781 * (W2 + z2)
;(t5[f3 + 16] = z2 + V2), (t5[f3 + 48] = z2 - V2)
var G2 = 0.382683433 * ((U2 = T2 + D2) - (W2 = E3 + B4)),
Y2 = 0.5411961 * U2 + G2,
J2 = 1.306562965 * W2 + G2,
X2 = 0.707106781 * (H4 = D2 + E3),
K2 = B4 + X2,
Z2 = B4 - X2
;(t5[f3 + 40] = Z2 + Y2),
(t5[f3 + 24] = Z2 - Y2),
(t5[f3 + 8] = K2 + J2),
(t5[f3 + 56] = K2 - J2),
f3++
}
for (h4 = 0; h4 < 64; ++h4)
(l3 = t5[h4] * e4[h4]),
(d3[h4] = l3 > 0 ? (l3 + 0.5) | 0 : (l3 - 0.5) | 0)
return d3
})(t4, e3),
u3 = 0;
u3 < 64;
++u3
)
p2[A2[u3]] = c3[u3]
var h3 = p2[0] - r3
;(r3 = p2[0]),
0 == h3 ? O2(n3[0]) : (O2(n3[f2[(a3 = 32767 + h3)]]), O2(l2[a3]))
for (var g3 = 63; g3 > 0 && 0 == p2[g3]; ) g3--
if (0 == g3) return O2(o3), r3
for (var m3, v5 = 1; v5 <= g3; ) {
for (var b3 = v5; 0 == p2[v5] && v5 <= g3; ) ++v5
var y3 = v5 - b3
if (y3 >= 16) {
m3 = y3 >> 4
for (var w3 = 1; w3 <= m3; ++w3) O2(s3)
y3 &= 15
}
;(a3 = 32767 + p2[v5]), O2(i3[(y3 << 4) + f2[a3]]), O2(l2[a3]), v5++
}
return 63 != g3 && O2(o3), r3
}
function q2(t4) {
;((t4 = Math.min(Math.max(t4, 1), 100)), a2 != t4) &&
(!(function (t5) {
for (
var e3 = [
16, 11, 10, 16, 24, 40, 51, 61, 12, 12, 14, 19, 26, 58, 60, 55,
14, 13, 16, 24, 40, 57, 69, 56, 14, 17, 22, 29, 51, 87, 80, 62,
18, 22, 37, 56, 68, 109, 103, 77, 24, 35, 55, 64, 81, 104, 113,
92, 49, 64, 78, 87, 103, 121, 120, 101, 72, 92, 95, 98, 112, 100,
103, 99,
],
r3 = 0;
r3 < 64;
r3++
) {
var n3 = o2((e3[r3] * t5 + 50) / 100)
;(n3 = Math.min(Math.max(n3, 1), 255)), (s2[A2[r3]] = n3)
}
for (
var i3 = [
17, 18, 24, 47, 99, 99, 99, 99, 18, 21, 26, 66, 99, 99, 99, 99,
24, 26, 56, 99, 99, 99, 99, 99, 47, 66, 99, 99, 99, 99, 99, 99,
99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
],
a3 = 0;
a3 < 64;
a3++
) {
var l3 = o2((i3[a3] * t5 + 50) / 100)
;(l3 = Math.min(Math.max(l3, 1), 255)), (c2[A2[a3]] = l3)
}
for (
var f3 = [
1, 1.387039845, 1.306562965, 1.175875602, 1, 0.785694958,
0.5411961, 0.275899379,
],
d4 = 0,
p3 = 0;
p3 < 8;
p3++
)
for (var g3 = 0; g3 < 8; g3++)
(u2[d4] = 1 / (s2[A2[d4]] * f3[p3] * f3[g3] * 8)),
(h2[d4] = 1 / (c2[A2[d4]] * f3[p3] * f3[g3] * 8)),
d4++
})(t4 < 50 ? Math.floor(5e3 / t4) : Math.floor(200 - 2 * t4)),
(a2 = t4))
}
;(this.encode = function (t4, a3) {
a3 && q2(a3),
(g2 = new Array()),
(m2 = 0),
(v4 = 7),
M2(65496),
M2(65504),
M2(16),
B3(74),
B3(70),
B3(73),
B3(70),
B3(0),
B3(1),
B3(1),
B3(0),
M2(1),
M2(1),
B3(0),
B3(0),
(function () {
M2(65499), M2(132), B3(0)
for (var t5 = 0; t5 < 64; t5++) B3(s2[t5])
B3(1)
for (var e3 = 0; e3 < 64; e3++) B3(c2[e3])
})(),
(function (t5, e3) {
M2(65472),
M2(17),
B3(8),
M2(e3),
M2(t5),
B3(3),
B3(1),
B3(17),
B3(0),
B3(2),
B3(17),
B3(1),
B3(3),
B3(17),
B3(1)
})(t4.width, t4.height),
(function () {
M2(65476), M2(418), B3(0)
for (var t5 = 0; t5 < 16; t5++) B3(x2[t5 + 1])
for (var e3 = 0; e3 <= 11; e3++) B3(S2[e3])
B3(16)
for (var r3 = 0; r3 < 16; r3++) B3(_2[r3 + 1])
for (var n3 = 0; n3 <= 161; n3++) B3(P2[n3])
B3(1)
for (var i3 = 0; i3 < 16; i3++) B3(k2[i3 + 1])
for (var a4 = 0; a4 <= 11; a4++) B3(I2[a4])
B3(17)
for (var o4 = 0; o4 < 16; o4++) B3(F2[o4 + 1])
for (var s3 = 0; s3 <= 161; s3++) B3(C2[s3])
})(),
M2(65498),
M2(12),
B3(3),
B3(1),
B3(0),
B3(2),
B3(17),
B3(3),
B3(17),
B3(0),
B3(63),
B3(0)
var o3 = 0,
l3 = 0,
f3 = 0
;(m2 = 0), (v4 = 7), (this.encode.displayName = '_encode_')
for (
var d4,
p3,
N3,
A3,
j3,
D2,
R2,
T2,
U2,
z2 = t4.data,
H4 = t4.width,
W2 = t4.height,
V2 = 4 * H4,
G2 = 0;
G2 < W2;
) {
for (d4 = 0; d4 < V2; ) {
for (j3 = V2 * G2 + d4, R2 = -1, T2 = 0, U2 = 0; U2 < 64; U2++)
(D2 = j3 + (T2 = U2 >> 3) * V2 + (R2 = 4 * (7 & U2))),
G2 + T2 >= W2 && (D2 -= V2 * (G2 + 1 + T2 - W2)),
d4 + R2 >= V2 && (D2 -= d4 + R2 - V2 + 4),
(p3 = z2[D2++]),
(N3 = z2[D2++]),
(A3 = z2[D2++]),
(b2[U2] =
((L2[p3] + L2[(N3 + 256) >> 0] + L2[(A3 + 512) >> 0]) >> 16) -
128),
(y2[U2] =
((L2[(p3 + 768) >> 0] +
L2[(N3 + 1024) >> 0] +
L2[(A3 + 1280) >> 0]) >>
16) -
128),
(w2[U2] =
((L2[(p3 + 1280) >> 0] +
L2[(N3 + 1536) >> 0] +
L2[(A3 + 1792) >> 0]) >>
16) -
128)
;(o3 = E2(b2, u2, o3, e2, n2)),
(l3 = E2(y2, h2, l3, r2, i2)),
(f3 = E2(w2, h2, f3, r2, i2)),
(d4 += 32)
}
G2 += 8
}
if (v4 >= 0) {
var Y2 = []
;(Y2[1] = v4 + 1), (Y2[0] = (1 << (v4 + 1)) - 1), O2(Y2)
}
return M2(65497), new Uint8Array(g2)
}),
(t3 = t3 || 50),
(function () {
for (var t4 = String.fromCharCode, e3 = 0; e3 < 256; e3++) N2[e3] = t4(e3)
})(),
(e2 = j2(x2, S2)),
(r2 = j2(k2, I2)),
(n2 = j2(_2, P2)),
(i2 = j2(F2, C2)),
(function () {
for (var t4 = 1, e3 = 2, r3 = 1; r3 <= 15; r3++) {
for (var n3 = t4; n3 < e3; n3++)
(f2[32767 + n3] = r3),
(l2[32767 + n3] = []),
(l2[32767 + n3][1] = r3),
(l2[32767 + n3][0] = n3)
for (var i3 = -(e3 - 1); i3 <= -t4; i3++)
(f2[32767 + i3] = r3),
(l2[32767 + i3] = []),
(l2[32767 + i3][1] = r3),
(l2[32767 + i3][0] = e3 - 1 + i3)
;(t4 <<= 1), (e3 <<= 1)
}
})(),
(function () {
for (var t4 = 0; t4 < 256; t4++)
(L2[t4] = 19595 * t4),
(L2[(t4 + 256) >> 0] = 38470 * t4),
(L2[(t4 + 512) >> 0] = 7471 * t4 + 32768),
(L2[(t4 + 768) >> 0] = -11059 * t4),
(L2[(t4 + 1024) >> 0] = -21709 * t4),
(L2[(t4 + 1280) >> 0] = 32768 * t4 + 8421375),
(L2[(t4 + 1536) >> 0] = -27439 * t4),
(L2[(t4 + 1792) >> 0] = -5329 * t4)
})(),
q2(t3)
}
/**
* @license
* Copyright (c) 2017 Aras Abbasi
*
* Licensed under the MIT License.
* http://opensource.org/licenses/mit-license
*/
function te(t3, e2) {
if (
((this.pos = 0),
(this.buffer = t3),
(this.datav = new DataView(t3.buffer)),
(this.is_with_alpha = !!e2),
(this.bottom_up = true),
(this.flag =
String.fromCharCode(this.buffer[0]) +
String.fromCharCode(this.buffer[1])),
(this.pos += 2),
-1 === ['BM', 'BA', 'CI', 'CP', 'IC', 'PT'].indexOf(this.flag))
)
throw new Error('Invalid BMP File')
this.parseHeader(), this.parseBGR()
}
function ee(t3) {
function e2(t4) {
if (!t4) throw Error('assert :P')
}
function r2(t4, e3, r3) {
for (var n3 = 0; 4 > n3; n3++)
if (t4[e3 + n3] != r3.charCodeAt(n3)) return true
return false
}
function n2(t4, e3, r3, n3, i3) {
for (var a3 = 0; a3 < i3; a3++) t4[e3 + a3] = r3[n3 + a3]
}
function i2(t4, e3, r3, n3) {
for (var i3 = 0; i3 < n3; i3++) t4[e3 + i3] = r3
}
function a2(t4) {
return new Int32Array(t4)
}
function o2(t4, e3) {
for (var r3 = [], n3 = 0; n3 < t4; n3++) r3.push(new e3())
return r3
}
function s2(t4, e3) {
var r3 = []
return (
(function t5(r4, n3, i3) {
for (
var a3 = i3[n3], o3 = 0;
o3 < a3 &&
(r4.push(i3.length > n3 + 1 ? [] : new e3()), !(i3.length < n3 + 1));
o3++
)
t5(r4[o3], n3 + 1, i3)
})(r3, 0, t4),
r3
)
}
var c2 = function () {
var t4 = this
function c3(t5, e3) {
for (var r3 = (1 << (e3 - 1)) >>> 0; t5 & r3; ) r3 >>>= 1
return r3 ? (t5 & (r3 - 1)) + r3 : t5
}
function u3(t5, r3, n3, i3, a3) {
e2(!(i3 % n3))
do {
t5[r3 + (i3 -= n3)] = a3
} while (0 < i3)
}
function h3(t5, r3, n3, i3, o3) {
if ((e2(2328 >= o3), 512 >= o3)) var s3 = a2(512)
else if (null == (s3 = a2(o3))) return 0
return (function (t6, r4, n4, i4, o4, s4) {
var h4,
f4,
d5 = r4,
p4 = 1 << n4,
g4 = a2(16),
m4 = a2(16)
for (
e2(0 != o4), e2(null != i4), e2(null != t6), e2(0 < n4), f4 = 0;
f4 < o4;
++f4
) {
if (15 < i4[f4]) return 0
++g4[i4[f4]]
}
if (g4[0] == o4) return 0
for (m4[1] = 0, h4 = 1; 15 > h4; ++h4) {
if (g4[h4] > 1 << h4) return 0
m4[h4 + 1] = m4[h4] + g4[h4]
}
for (f4 = 0; f4 < o4; ++f4)
(h4 = i4[f4]), 0 < i4[f4] && (s4[m4[h4]++] = f4)
if (1 == m4[15])
return (
((i4 = new l3()).g = 0),
(i4.value = s4[0]),
u3(t6, d5, 1, p4, i4),
p4
)
var v6,
b4 = -1,
y4 = p4 - 1,
w4 = 0,
N4 = 1,
L4 = 1,
A4 = 1 << n4
for (f4 = 0, h4 = 1, o4 = 2; h4 <= n4; ++h4, o4 <<= 1) {
if (((N4 += L4 <<= 1), 0 > (L4 -= g4[h4]))) return 0
for (; 0 < g4[h4]; --g4[h4])
((i4 = new l3()).g = h4),
(i4.value = s4[f4++]),
u3(t6, d5 + w4, o4, A4, i4),
(w4 = c3(w4, h4))
}
for (h4 = n4 + 1, o4 = 2; 15 >= h4; ++h4, o4 <<= 1) {
if (((N4 += L4 <<= 1), 0 > (L4 -= g4[h4]))) return 0
for (; 0 < g4[h4]; --g4[h4]) {
if (((i4 = new l3()), (w4 & y4) != b4)) {
for (
d5 += A4, v6 = 1 << ((b4 = h4) - n4);
15 > b4 && !(0 >= (v6 -= g4[b4]));
)
++b4, (v6 <<= 1)
;(p4 += A4 = 1 << (v6 = b4 - n4)),
(t6[r4 + (b4 = w4 & y4)].g = v6 + n4),
(t6[r4 + b4].value = d5 - r4 - b4)
}
;(i4.g = h4 - n4),
(i4.value = s4[f4++]),
u3(t6, d5 + (w4 >> n4), o4, A4, i4),
(w4 = c3(w4, h4))
}
}
return N4 != 2 * m4[15] - 1 ? 0 : p4
})(t5, r3, n3, i3, o3, s3)
}
function l3() {
this.value = this.g = 0
}
function f3() {
this.value = this.g = 0
}
function d4() {
;(this.G = o2(5, l3)),
(this.H = a2(5)),
(this.jc = this.Qb = this.qb = this.nd = 0),
(this.pd = o2(Dr, f3))
}
function p3(t5, r3, n3, i3) {
e2(null != t5),
e2(null != r3),
e2(2147483648 > i3),
(t5.Ca = 254),
(t5.I = 0),
(t5.b = -8),
(t5.Ka = 0),
(t5.oa = r3),
(t5.pa = n3),
(t5.Jd = r3),
(t5.Yc = n3 + i3),
(t5.Zc = 4 <= i3 ? n3 + i3 - 4 + 1 : n3),
_2(t5)
}
function g3(t5, e3) {
for (var r3 = 0; 0 < e3--; ) r3 |= k2(t5, 128) << e3
return r3
}
function m3(t5, e3) {
var r3 = g3(t5, e3)
return P2(t5) ? -r3 : r3
}
function v5(t5, r3, n3, i3) {
var a3,
o3 = 0
for (
e2(null != t5),
e2(null != r3),
e2(4294967288 > i3),
t5.Sb = i3,
t5.Ra = 0,
t5.u = 0,
t5.h = 0,
4 < i3 && (i3 = 4),
a3 = 0;
a3 < i3;
++a3
)
o3 += r3[n3 + a3] << (8 * a3)
;(t5.Ra = o3), (t5.bb = i3), (t5.oa = r3), (t5.pa = n3)
}
function b3(t5) {
for (; 8 <= t5.u && t5.bb < t5.Sb; )
(t5.Ra >>>= 8),
(t5.Ra += (t5.oa[t5.pa + t5.bb] << (Ur - 8)) >>> 0),
++t5.bb,
(t5.u -= 8)
A3(t5) && ((t5.h = 1), (t5.u = 0))
}
function y3(t5, r3) {
if ((e2(0 <= r3), !t5.h && r3 <= Tr)) {
var n3 = L3(t5) & Rr[r3]
return (t5.u += r3), b3(t5), n3
}
return (t5.h = 1), (t5.u = 0)
}
function w3() {
;(this.b = this.Ca = this.I = 0),
(this.oa = []),
(this.pa = 0),
(this.Jd = []),
(this.Yc = 0),
(this.Zc = []),
(this.Ka = 0)
}
function N3() {
;(this.Ra = 0),
(this.oa = []),
(this.h = this.u = this.bb = this.Sb = this.pa = 0)
}
function L3(t5) {
return (t5.Ra >>> (t5.u & (Ur - 1))) >>> 0
}
function A3(t5) {
return e2(t5.bb <= t5.Sb), t5.h || (t5.bb == t5.Sb && t5.u > Ur)
}
function x2(t5, e3) {
;(t5.u = e3), (t5.h = A3(t5))
}
function S2(t5) {
t5.u >= zr && (e2(t5.u >= zr), b3(t5))
}
function _2(t5) {
e2(null != t5 && null != t5.oa),
t5.pa < t5.Zc
? ((t5.I = (t5.oa[t5.pa++] | (t5.I << 8)) >>> 0), (t5.b += 8))
: (e2(null != t5 && null != t5.oa),
t5.pa < t5.Yc
? ((t5.b += 8), (t5.I = t5.oa[t5.pa++] | (t5.I << 8)))
: t5.Ka
? (t5.b = 0)
: ((t5.I <<= 8), (t5.b += 8), (t5.Ka = 1)))
}
function P2(t5) {
return g3(t5, 1)
}
function k2(t5, e3) {
var r3 = t5.Ca
0 > t5.b && _2(t5)
var n3 = t5.b,
i3 = (r3 * e3) >>> 8,
a3 = (t5.I >>> n3 > i3) + 0
for (
a3 ? ((r3 -= i3), (t5.I -= ((i3 + 1) << n3) >>> 0)) : (r3 = i3 + 1),
n3 = r3,
i3 = 0;
256 <= n3;
)
(i3 += 8), (n3 >>= 8)
return (
(n3 = 7 ^ (i3 + Hr[n3])), (t5.b -= n3), (t5.Ca = (r3 << n3) - 1), a3
)
}
function I2(t5, e3, r3) {
;(t5[e3 + 0] = (r3 >> 24) & 255),
(t5[e3 + 1] = (r3 >> 16) & 255),
(t5[e3 + 2] = (r3 >> 8) & 255),
(t5[e3 + 3] = (r3 >> 0) & 255)
}
function F2(t5, e3) {
return (t5[e3 + 0] << 0) | (t5[e3 + 1] << 8)
}
function C2(t5, e3) {
return F2(t5, e3) | (t5[e3 + 2] << 16)
}
function j2(t5, e3) {
return F2(t5, e3) | (F2(t5, e3 + 2) << 16)
}
function O2(t5, r3) {
var n3 = 1 << r3
return (
e2(null != t5),
e2(0 < r3),
(t5.X = a2(n3)),
null == t5.X ? 0 : ((t5.Mb = 32 - r3), (t5.Xa = r3), 1)
)
}
function B3(t5, r3) {
e2(null != t5),
e2(null != r3),
e2(t5.Xa == r3.Xa),
n2(r3.X, 0, t5.X, 0, 1 << r3.Xa)
}
function M2() {
;(this.X = []), (this.Xa = this.Mb = 0)
}
function E2(t5, r3, n3, i3) {
e2(null != n3), e2(null != i3)
var a3 = n3[0],
o3 = i3[0]
return (
0 == a3 && (a3 = (t5 * o3 + r3 / 2) / r3),
0 == o3 && (o3 = (r3 * a3 + t5 / 2) / t5),
0 >= a3 || 0 >= o3 ? 0 : ((n3[0] = a3), (i3[0] = o3), 1)
)
}
function q2(t5, e3) {
return (t5 + (1 << e3) - 1) >>> e3
}
function D2(t5, e3) {
return (
(((((4278255360 & t5) + (4278255360 & e3)) >>> 0) & 4278255360) +
((((16711935 & t5) + (16711935 & e3)) >>> 0) & 16711935)) >>>
0
)
}
function R2(e3, r3) {
t4[r3] = function (r4, n3, i3, a3, o3, s3, c4) {
var u4
for (u4 = 0; u4 < o3; ++u4) {
var h4 = t4[e3](s3[c4 + u4 - 1], i3, a3 + u4)
s3[c4 + u4] = D2(r4[n3 + u4], h4)
}
}
}
function T2() {
this.ud = this.hd = this.jd = 0
}
function U2(t5, e3) {
return (((4278124286 & (t5 ^ e3)) >>> 1) + (t5 & e3)) >>> 0
}
function z2(t5) {
return 0 <= t5 && 256 > t5 ? t5 : 0 > t5 ? 0 : 255 < t5 ? 255 : void 0
}
function H4(t5, e3) {
return z2(t5 + ((t5 - e3 + 0.5) >> 1))
}
function W2(t5, e3, r3) {
return Math.abs(e3 - r3) - Math.abs(t5 - r3)
}
function V2(t5, e3, r3, n3, i3, a3, o3) {
for (n3 = a3[o3 - 1], r3 = 0; r3 < i3; ++r3)
a3[o3 + r3] = n3 = D2(t5[e3 + r3], n3)
}
function G2(t5, e3, r3, n3, i3) {
var a3
for (a3 = 0; a3 < r3; ++a3) {
var o3 = t5[e3 + a3],
s3 = (o3 >> 8) & 255,
c4 = 16711935 & (c4 = (c4 = 16711935 & o3) + ((s3 << 16) + s3))
n3[i3 + a3] = ((4278255360 & o3) + c4) >>> 0
}
}
function Y2(t5, e3) {
;(e3.jd = (t5 >> 0) & 255),
(e3.hd = (t5 >> 8) & 255),
(e3.ud = (t5 >> 16) & 255)
}
function J2(t5, e3, r3, n3, i3, a3) {
var o3
for (o3 = 0; o3 < n3; ++o3) {
var s3 = e3[r3 + o3],
c4 = s3 >>> 8,
u4 = s3,
h4 =
255 &
(h4 =
(h4 = s3 >>> 16) +
((((t5.jd << 24) >> 24) * ((c4 << 24) >> 24)) >>> 5))
u4 =
255 &
(u4 =
(u4 = u4 + ((((t5.hd << 24) >> 24) * ((c4 << 24) >> 24)) >>> 5)) +
((((t5.ud << 24) >> 24) * ((h4 << 24) >> 24)) >>> 5))
i3[a3 + o3] = (4278255360 & s3) + (h4 << 16) + u4
}
}
function X2(e3, r3, n3, i3, a3) {
;(t4[r3] = function (t5, e4, r4, n4, o3, s3, c4, u4, h4) {
for (n4 = c4; n4 < u4; ++n4)
for (c4 = 0; c4 < h4; ++c4) o3[s3++] = a3(r4[i3(t5[e4++])])
}),
(t4[e3] = function (e4, r4, o3, s3, c4, u4, h4) {
var l4 = 8 >> e4.b,
f4 = e4.Ea,
d5 = e4.K[0],
p4 = e4.w
if (8 > l4)
for (e4 = (1 << e4.b) - 1, p4 = (1 << l4) - 1; r4 < o3; ++r4) {
var g4,
m4 = 0
for (g4 = 0; g4 < f4; ++g4)
g4 & e4 || (m4 = i3(s3[c4++])),
(u4[h4++] = a3(d5[m4 & p4])),
(m4 >>= l4)
}
else t4['VP8LMapColor' + n3](s3, c4, d5, p4, u4, h4, r4, o3, f4)
})
}
function K2(t5, e3, r3, n3, i3) {
for (r3 = e3 + r3; e3 < r3; ) {
var a3 = t5[e3++]
;(n3[i3++] = (a3 >> 16) & 255),
(n3[i3++] = (a3 >> 8) & 255),
(n3[i3++] = (a3 >> 0) & 255)
}
}
function Z2(t5, e3, r3, n3, i3) {
for (r3 = e3 + r3; e3 < r3; ) {
var a3 = t5[e3++]
;(n3[i3++] = (a3 >> 16) & 255),
(n3[i3++] = (a3 >> 8) & 255),
(n3[i3++] = (a3 >> 0) & 255),
(n3[i3++] = (a3 >> 24) & 255)
}
}
function $2(t5, e3, r3, n3, i3) {
for (r3 = e3 + r3; e3 < r3; ) {
var a3 = (((o3 = t5[e3++]) >> 16) & 240) | ((o3 >> 12) & 15),
o3 = ((o3 >> 0) & 240) | ((o3 >> 28) & 15)
;(n3[i3++] = a3), (n3[i3++] = o3)
}
}
function Q2(t5, e3, r3, n3, i3) {
for (r3 = e3 + r3; e3 < r3; ) {
var a3 = (((o3 = t5[e3++]) >> 16) & 248) | ((o3 >> 13) & 7),
o3 = ((o3 >> 5) & 224) | ((o3 >> 3) & 31)
;(n3[i3++] = a3), (n3[i3++] = o3)
}
}
function tt2(t5, e3, r3, n3, i3) {
for (r3 = e3 + r3; e3 < r3; ) {
var a3 = t5[e3++]
;(n3[i3++] = (a3 >> 0) & 255),
(n3[i3++] = (a3 >> 8) & 255),
(n3[i3++] = (a3 >> 16) & 255)
}
}
function et2(t5, e3, r3, i3, a3, o3) {
if (0 == o3)
for (r3 = e3 + r3; e3 < r3; )
I2(
i3,
(((o3 = t5[e3++])[0] >> 24) |
((o3[1] >> 8) & 65280) |
((o3[2] << 8) & 16711680) |
(o3[3] << 24)) >>>
0
),
(a3 += 32)
else n2(i3, a3, t5, e3, r3)
}
function rt2(e3, r3) {
;(t4[r3][0] = t4[e3 + '0']),
(t4[r3][1] = t4[e3 + '1']),
(t4[r3][2] = t4[e3 + '2']),
(t4[r3][3] = t4[e3 + '3']),
(t4[r3][4] = t4[e3 + '4']),
(t4[r3][5] = t4[e3 + '5']),
(t4[r3][6] = t4[e3 + '6']),
(t4[r3][7] = t4[e3 + '7']),
(t4[r3][8] = t4[e3 + '8']),
(t4[r3][9] = t4[e3 + '9']),
(t4[r3][10] = t4[e3 + '10']),
(t4[r3][11] = t4[e3 + '11']),
(t4[r3][12] = t4[e3 + '12']),
(t4[r3][13] = t4[e3 + '13']),
(t4[r3][14] = t4[e3 + '0']),
(t4[r3][15] = t4[e3 + '0'])
}
function nt2(t5) {
return t5 == Hn || t5 == Wn || t5 == Vn || t5 == Gn
}
function it2() {
;(this.eb = []), (this.size = this.A = this.fb = 0)
}
function at2() {
;(this.y = []),
(this.f = []),
(this.ea = []),
(this.F = []),
(this.Tc =
this.Ed =
this.Cd =
this.Fd =
this.lb =
this.Db =
this.Ab =
this.fa =
this.J =
this.W =
this.N =
this.O =
0)
}
function ot2() {
;(this.Rd = this.height = this.width = this.S = 0),
(this.f = {}),
(this.f.RGBA = new it2()),
(this.f.kb = new at2()),
(this.sd = null)
}
function st2() {
;(this.width = [0]),
(this.height = [0]),
(this.Pd = [0]),
(this.Qd = [0]),
(this.format = [0])
}
function ct2() {
this.Id =
this.fd =
this.Md =
this.hb =
this.ib =
this.da =
this.bd =
this.cd =
this.j =
this.v =
this.Da =
this.Sd =
this.ob =
0
}
function ut2(t5) {
return alert('todo:WebPSamplerProcessPlane'), t5.T
}
function ht2(t5, e3) {
var r3 = t5.T,
i3 = e3.ba.f.RGBA,
a3 = i3.eb,
o3 = i3.fb + t5.ka * i3.A,
s3 = vi2[e3.ba.S],
c4 = t5.y,
u4 = t5.O,
h4 = t5.f,
l4 = t5.N,
f4 = t5.ea,
d5 = t5.W,
p4 = e3.cc,
g4 = e3.dc,
m4 = e3.Mc,
v6 = e3.Nc,
b4 = t5.ka,
y4 = t5.ka + t5.T,
w4 = t5.U,
N4 = (w4 + 1) >> 1
for (
0 == b4
? s3(
c4,
u4,
null,
null,
h4,
l4,
f4,
d5,
h4,
l4,
f4,
d5,
a3,
o3,
null,
null,
w4
)
: (s3(
e3.ec,
e3.fc,
c4,
u4,
p4,
g4,
m4,
v6,
h4,
l4,
f4,
d5,
a3,
o3 - i3.A,
a3,
o3,
w4
),
++r3);
b4 + 2 < y4;
b4 += 2
)
(p4 = h4),
(g4 = l4),
(m4 = f4),
(v6 = d5),
(l4 += t5.Rc),
(d5 += t5.Rc),
(o3 += 2 * i3.A),
s3(
c4,
(u4 += 2 * t5.fa) - t5.fa,
c4,
u4,
p4,
g4,
m4,
v6,
h4,
l4,
f4,
d5,
a3,
o3 - i3.A,
a3,
o3,
w4
)
return (
(u4 += t5.fa),
t5.j + y4 < t5.o
? (n2(e3.ec, e3.fc, c4, u4, w4),
n2(e3.cc, e3.dc, h4, l4, N4),
n2(e3.Mc, e3.Nc, f4, d5, N4),
r3--)
: 1 & y4 ||
s3(
c4,
u4,
null,
null,
h4,
l4,
f4,
d5,
h4,
l4,
f4,
d5,
a3,
o3 + i3.A,
null,
null,
w4
),
r3
)
}
function lt2(t5, r3, n3) {
var i3 = t5.F,
a3 = [t5.J]
if (null != i3) {
var o3 = t5.U,
s3 = r3.ba.S,
c4 = s3 == Tn || s3 == Vn
r3 = r3.ba.f.RGBA
var u4 = [0],
h4 = t5.ka
;(u4[0] = t5.T),
t5.Kb &&
(0 == h4 ? --u4[0] : (--h4, (a3[0] -= t5.width)),
t5.j + t5.ka + t5.T == t5.o && (u4[0] = t5.o - t5.j - h4))
var l4 = r3.eb
h4 = r3.fb + h4 * r3.A
;(t5 = Sn(i3, a3[0], t5.width, o3, u4, l4, h4 + (c4 ? 0 : 3), r3.A)),
e2(n3 == u4),
t5 && nt2(s3) && An(l4, h4, c4, o3, u4, r3.A)
}
return 0
}
function ft2(t5) {
var e3 = t5.ma,
r3 = e3.ba.S,
n3 = 11 > r3,
i3 = r3 == qn || r3 == Rn || r3 == Tn || r3 == Un || 12 == r3 || nt2(r3)
if (
((e3.memory = null),
(e3.Ib = null),
(e3.Jb = null),
(e3.Nd = null),
!Mr(e3.Oa, t5, i3 ? 11 : 12))
)
return 0
if ((i3 && nt2(r3) && br(), t5.da)) alert('todo:use_scaling')
else {
if (n3) {
if (((e3.Ib = ut2), t5.Kb)) {
if (
((r3 = (t5.U + 1) >> 1),
(e3.memory = a2(t5.U + 2 * r3)),
null == e3.memory)
)
return 0
;(e3.ec = e3.memory),
(e3.fc = 0),
(e3.cc = e3.ec),
(e3.dc = e3.fc + t5.U),
(e3.Mc = e3.cc),
(e3.Nc = e3.dc + r3),
(e3.Ib = ht2),
br()
}
} else alert('todo:EmitYUV')
i3 && ((e3.Jb = lt2), n3 && mr())
}
if (n3 && !Ci) {
for (t5 = 0; 256 > t5; ++t5)
(ji[t5] = (89858 * (t5 - 128) + _i) >> Si),
(Mi[t5] = -22014 * (t5 - 128) + _i),
(Bi[t5] = -45773 * (t5 - 128)),
(Oi[t5] = (113618 * (t5 - 128) + _i) >> Si)
for (t5 = Pi; t5 < ki; ++t5)
(e3 = (76283 * (t5 - 16) + _i) >> Si),
(Ei[t5 - Pi] = Vt2(e3, 255)),
(qi[t5 - Pi] = Vt2((e3 + 8) >> 4, 15))
Ci = 1
}
return 1
}
function dt2(t5) {
var r3 = t5.ma,
n3 = t5.U,
i3 = t5.T
return (
e2(!(1 & t5.ka)),
0 >= n3 || 0 >= i3
? 0
: ((n3 = r3.Ib(t5, r3)),
null != r3.Jb && r3.Jb(t5, r3, n3),
(r3.Dc += n3),
1)
)
}
function pt3(t5) {
t5.ma.memory = null
}
function gt2(t5, e3, r3, n3) {
return 47 != y3(t5, 8)
? 0
: ((e3[0] = y3(t5, 14) + 1),
(r3[0] = y3(t5, 14) + 1),
(n3[0] = y3(t5, 1)),
0 != y3(t5, 3) ? 0 : !t5.h)
}
function mt2(t5, e3) {
if (4 > t5) return t5 + 1
var r3 = (t5 - 2) >> 1
return ((2 + (1 & t5)) << r3) + y3(e3, r3) + 1
}
function vt2(t5, e3) {
return 120 < e3
? e3 - 120
: 1 <= (r3 = ((r3 = $n[e3 - 1]) >> 4) * t5 + (8 - (15 & r3)))
? r3
: 1
var r3
}
function bt2(t5, e3, r3) {
var n3 = L3(r3),
i3 = t5[(e3 += 255 & n3)].g - 8
return (
0 < i3 &&
(x2(r3, r3.u + 8),
(n3 = L3(r3)),
(e3 += t5[e3].value),
(e3 += n3 & ((1 << i3) - 1))),
x2(r3, r3.u + t5[e3].g),
t5[e3].value
)
}
function yt2(t5, r3, n3) {
return (
(n3.g += t5.g),
(n3.value += (t5.value << r3) >>> 0),
e2(8 >= n3.g),
t5.g
)
}
function wt2(t5, r3, n3) {
var i3 = t5.xc
return (
e2((r3 = 0 == i3 ? 0 : t5.vc[t5.md * (n3 >> i3) + (r3 >> i3)]) < t5.Wb),
t5.Ya[r3]
)
}
function Nt2(t5, r3, i3, a3) {
var o3 = t5.ab,
s3 = t5.c * r3,
c4 = t5.C
r3 = c4 + r3
var u4 = i3,
h4 = a3
for (a3 = t5.Ta, i3 = t5.Ua; 0 < o3--; ) {
var l4 = t5.gc[o3],
f4 = c4,
d5 = r3,
p4 = u4,
g4 = h4,
m4 = ((h4 = a3), (u4 = i3), l4.Ea)
switch ((e2(f4 < d5), e2(d5 <= l4.nc), l4.hc)) {
case 2:
Gr(p4, g4, (d5 - f4) * m4, h4, u4)
break
case 0:
var v6 = f4,
b4 = d5,
y4 = h4,
w4 = u4,
N4 = (_3 = l4).Ea
0 == v6 &&
(Wr(p4, g4, null, null, 1, y4, w4),
V2(p4, g4 + 1, 0, 0, N4 - 1, y4, w4 + 1),
(g4 += N4),
(w4 += N4),
++v6)
for (
var L4 = 1 << _3.b,
A4 = L4 - 1,
x3 = q2(N4, _3.b),
S3 = _3.K,
_3 = _3.w + (v6 >> _3.b) * x3;
v6 < b4;
) {
var P3 = S3,
k3 = _3,
I3 = 1
for (Vr(p4, g4, y4, w4 - N4, 1, y4, w4); I3 < N4; ) {
var F3 = (I3 & ~A4) + L4
F3 > N4 && (F3 = N4),
(0, Zr[(P3[k3++] >> 8) & 15])(
p4,
g4 + +I3,
y4,
w4 + I3 - N4,
F3 - I3,
y4,
w4 + I3
),
(I3 = F3)
}
;(g4 += N4), (w4 += N4), ++v6 & A4 || (_3 += x3)
}
d5 != l4.nc && n2(h4, u4 - m4, h4, u4 + (d5 - f4 - 1) * m4, m4)
break
case 1:
for (
m4 = p4,
b4 = g4,
N4 = (p4 = l4.Ea) - (w4 = p4 & ~(y4 = (g4 = 1 << l4.b) - 1)),
v6 = q2(p4, l4.b),
L4 = l4.K,
l4 = l4.w + (f4 >> l4.b) * v6;
f4 < d5;
) {
for (
A4 = L4, x3 = l4, S3 = new T2(), _3 = b4 + w4, P3 = b4 + p4;
b4 < _3;
)
Y2(A4[x3++], S3),
$r(S3, m4, b4, g4, h4, u4),
(b4 += g4),
(u4 += g4)
b4 < P3 &&
(Y2(A4[x3++], S3),
$r(S3, m4, b4, N4, h4, u4),
(b4 += N4),
(u4 += N4)),
++f4 & y4 || (l4 += v6)
}
break
case 3:
if (p4 == h4 && g4 == u4 && 0 < l4.b) {
for (
b4 = h4,
p4 = m4 =
u4 + (d5 - f4) * m4 - (w4 = (d5 - f4) * q2(l4.Ea, l4.b)),
g4 = h4,
y4 = u4,
v6 = [],
w4 = (N4 = w4) - 1;
0 <= w4;
--w4
)
v6[w4] = g4[y4 + w4]
for (w4 = N4 - 1; 0 <= w4; --w4) b4[p4 + w4] = v6[w4]
Yr(l4, f4, d5, h4, m4, h4, u4)
} else Yr(l4, f4, d5, p4, g4, h4, u4)
}
;(u4 = a3), (h4 = i3)
}
h4 != i3 && n2(a3, i3, u4, h4, s3)
}
function Lt2(t5, r3) {
var n3 = t5.V,
i3 = t5.Ba + t5.c * t5.C,
a3 = r3 - t5.C
if ((e2(r3 <= t5.l.o), e2(16 >= a3), 0 < a3)) {
var o3 = t5.l,
s3 = t5.Ta,
c4 = t5.Ua,
u4 = o3.width
if (
(Nt2(t5, a3, n3, i3),
(a3 = c4 = [c4]),
e2((n3 = t5.C) < (i3 = r3)),
e2(o3.v < o3.va),
i3 > o3.o && (i3 = o3.o),
n3 < o3.j)
) {
var h4 = o3.j - n3
n3 = o3.j
a3[0] += h4 * u4
}
if (
(n3 >= i3
? (n3 = 0)
: ((a3[0] += 4 * o3.v),
(o3.ka = n3 - o3.j),
(o3.U = o3.va - o3.v),
(o3.T = i3 - n3),
(n3 = 1)),
n3)
) {
if (((c4 = c4[0]), 11 > (n3 = t5.ca).S)) {
var l4 = n3.f.RGBA,
f4 = ((i3 = n3.S), (a3 = o3.U), (o3 = o3.T), (h4 = l4.eb), l4.A),
d5 = o3
for (l4 = l4.fb + t5.Ma * l4.A; 0 < d5--; ) {
var p4 = s3,
g4 = c4,
m4 = a3,
v6 = h4,
b4 = l4
switch (i3) {
case En:
Qr(p4, g4, m4, v6, b4)
break
case qn:
tn(p4, g4, m4, v6, b4)
break
case Hn:
tn(p4, g4, m4, v6, b4), An(v6, b4, 0, m4, 1, 0)
break
case Dn:
nn(p4, g4, m4, v6, b4)
break
case Rn:
et2(p4, g4, m4, v6, b4, 1)
break
case Wn:
et2(p4, g4, m4, v6, b4, 1), An(v6, b4, 0, m4, 1, 0)
break
case Tn:
et2(p4, g4, m4, v6, b4, 0)
break
case Vn:
et2(p4, g4, m4, v6, b4, 0), An(v6, b4, 1, m4, 1, 0)
break
case Un:
en2(p4, g4, m4, v6, b4)
break
case Gn:
en2(p4, g4, m4, v6, b4), xn(v6, b4, m4, 1, 0)
break
case zn:
rn(p4, g4, m4, v6, b4)
break
default:
e2(0)
}
;(c4 += u4), (l4 += f4)
}
t5.Ma += o3
} else alert('todo:EmitRescaledRowsYUVA')
e2(t5.Ma <= n3.height)
}
}
;(t5.C = r3), e2(t5.C <= t5.i)
}
function At2(t5) {
var e3
if (0 < t5.ua) return 0
for (e3 = 0; e3 < t5.Wb; ++e3) {
var r3 = t5.Ya[e3].G,
n3 = t5.Ya[e3].H
if (
0 < r3[1][n3[1] + 0].g ||
0 < r3[2][n3[2] + 0].g ||
0 < r3[3][n3[3] + 0].g
)
return 0
}
return 1
}
function xt2(t5, r3, n3, i3, a3, o3) {
if (0 != t5.Z) {
var s3 = t5.qd,
c4 = t5.rd
for (e2(null != mi[t5.Z]); r3 < n3; ++r3)
mi[t5.Z](s3, c4, i3, a3, i3, a3, o3), (s3 = i3), (c4 = a3), (a3 += o3)
;(t5.qd = s3), (t5.rd = c4)
}
}
function St(t5, r3) {
var n3 = t5.l.ma,
i3 = 0 == n3.Z || 1 == n3.Z ? t5.l.j : t5.C
i3 = t5.C < i3 ? i3 : t5.C
if ((e2(r3 <= t5.l.o), r3 > i3)) {
var a3 = t5.l.width,
o3 = n3.ca,
s3 = n3.tb + a3 * i3,
c4 = t5.V,
u4 = t5.Ba + t5.c * i3,
h4 = t5.gc
e2(1 == t5.ab),
e2(3 == h4[0].hc),
Xr(h4[0], i3, r3, c4, u4, o3, s3),
xt2(n3, i3, r3, o3, s3, a3)
}
t5.C = t5.Ma = r3
}
function _t2(t5, r3, n3, i3, a3, o3, s3) {
var c4 = t5.$ / i3,
u4 = t5.$ % i3,
h4 = t5.m,
l4 = t5.s,
f4 = n3 + t5.$,
d5 = f4
a3 = n3 + i3 * a3
var p4 = n3 + i3 * o3,
g4 = 280 + l4.ua,
m4 = t5.Pb ? c4 : 16777216,
v6 = 0 < l4.ua ? l4.Wa : null,
b4 = l4.wc,
y4 = f4 < p4 ? wt2(l4, u4, c4) : null
e2(t5.C < o3), e2(p4 <= a3)
var w4 = false
t: for (;;) {
for (; w4 || f4 < p4; ) {
var N4 = 0
if (c4 >= m4) {
var _3 = f4 - n3
e2((m4 = t5).Pb),
(m4.wd = m4.m),
(m4.xd = _3),
0 < m4.s.ua && B3(m4.s.Wa, m4.s.vb),
(m4 = c4 + ti)
}
if (
(u4 & b4 || (y4 = wt2(l4, u4, c4)),
e2(null != y4),
y4.Qb && ((r3[f4] = y4.qb), (w4 = true)),
!w4)
)
if ((S2(h4), y4.jc)) {
;(N4 = h4), (_3 = r3)
var P3 = f4,
k3 = y4.pd[L3(N4) & (Dr - 1)]
e2(y4.jc),
256 > k3.g
? (x2(N4, N4.u + k3.g), (_3[P3] = k3.value), (N4 = 0))
: (x2(N4, N4.u + k3.g - 256),
e2(256 <= k3.value),
(N4 = k3.value)),
0 == N4 && (w4 = true)
} else N4 = bt2(y4.G[0], y4.H[0], h4)
if (h4.h) break
if (w4 || 256 > N4) {
if (!w4)
if (y4.nd) r3[f4] = (y4.qb | (N4 << 8)) >>> 0
else {
if (
(S2(h4),
(w4 = bt2(y4.G[1], y4.H[1], h4)),
S2(h4),
(_3 = bt2(y4.G[2], y4.H[2], h4)),
(P3 = bt2(y4.G[3], y4.H[3], h4)),
h4.h)
)
break
r3[f4] = ((P3 << 24) | (w4 << 16) | (N4 << 8) | _3) >>> 0
}
if (
((w4 = false),
++f4,
++u4 >= i3 &&
((u4 = 0),
++c4,
null != s3 && c4 <= o3 && !(c4 % 16) && s3(t5, c4),
null != v6))
)
for (; d5 < f4; )
(N4 = r3[d5++]),
(v6.X[((506832829 * N4) & 4294967295) >>> v6.Mb] = N4)
} else if (280 > N4) {
if (
((N4 = mt2(N4 - 256, h4)),
(_3 = bt2(y4.G[4], y4.H[4], h4)),
S2(h4),
(_3 = vt2(i3, (_3 = mt2(_3, h4)))),
h4.h)
)
break
if (f4 - n3 < _3 || a3 - f4 < N4) break t
for (P3 = 0; P3 < N4; ++P3) r3[f4 + P3] = r3[f4 + P3 - _3]
for (f4 += N4, u4 += N4; u4 >= i3; )
(u4 -= i3),
++c4,
null != s3 && c4 <= o3 && !(c4 % 16) && s3(t5, c4)
if ((e2(f4 <= a3), u4 & b4 && (y4 = wt2(l4, u4, c4)), null != v6))
for (; d5 < f4; )
(N4 = r3[d5++]),
(v6.X[((506832829 * N4) & 4294967295) >>> v6.Mb] = N4)
} else {
if (!(N4 < g4)) break t
for (w4 = N4 - 280, e2(null != v6); d5 < f4; )
(N4 = r3[d5++]),
(v6.X[((506832829 * N4) & 4294967295) >>> v6.Mb] = N4)
;(N4 = f4),
e2(!(w4 >>> (_3 = v6).Xa)),
(r3[N4] = _3.X[w4]),
(w4 = true)
}
w4 || e2(h4.h == A3(h4))
}
if (t5.Pb && h4.h && f4 < a3)
e2(t5.m.h),
(t5.a = 5),
(t5.m = t5.wd),
(t5.$ = t5.xd),
0 < t5.s.ua && B3(t5.s.vb, t5.s.Wa)
else {
if (h4.h) break t
null != s3 && s3(t5, c4 > o3 ? o3 : c4), (t5.a = 0), (t5.$ = f4 - n3)
}
return 1
}
return (t5.a = 3), 0
}
function Pt2(t5) {
e2(null != t5), (t5.vc = null), (t5.yc = null), (t5.Ya = null)
var r3 = t5.Wa
null != r3 && (r3.X = null), (t5.vb = null), e2(null != t5)
}
function kt2() {
var e3 = new or()
return null == e3
? null
: ((e3.a = 0),
(e3.xb = gi),
rt2('Predictor', 'VP8LPredictors'),
rt2('Predictor', 'VP8LPredictors_C'),
rt2('PredictorAdd', 'VP8LPredictorsAdd'),
rt2('PredictorAdd', 'VP8LPredictorsAdd_C'),
(Gr = G2),
($r = J2),
(Qr = K2),
(tn = Z2),
(en2 = $2),
(rn = Q2),
(nn = tt2),
(t4.VP8LMapColor32b = Jr),
(t4.VP8LMapColor8b = Kr),
e3)
}
function It2(t5, r3, n3, s3, c4) {
var u4 = 1,
f4 = [t5],
p4 = [r3],
g4 = s3.m,
m4 = s3.s,
v6 = null,
b4 = 0
t: for (;;) {
if (n3)
for (; u4 && y3(g4, 1); ) {
var w4 = f4,
N4 = p4,
A4 = s3,
_3 = 1,
P3 = A4.m,
k3 = A4.gc[A4.ab],
I3 = y3(P3, 2)
if (A4.Oc & (1 << I3)) u4 = 0
else {
switch (
((A4.Oc |= 1 << I3),
(k3.hc = I3),
(k3.Ea = w4[0]),
(k3.nc = N4[0]),
(k3.K = [null]),
++A4.ab,
e2(4 >= A4.ab),
I3)
) {
case 0:
case 1:
;(k3.b = y3(P3, 3) + 2),
(_3 = It2(q2(k3.Ea, k3.b), q2(k3.nc, k3.b), 0, A4, k3.K)),
(k3.K = k3.K[0])
break
case 3:
var F3,
C3 = y3(P3, 8) + 1,
j3 = 16 < C3 ? 0 : 4 < C3 ? 1 : 2 < C3 ? 2 : 3
if (
((w4[0] = q2(k3.Ea, j3)),
(k3.b = j3),
(F3 = _3 = It2(C3, 1, 0, A4, k3.K)))
) {
var B4,
M3 = C3,
E3 = k3,
R3 = 1 << (8 >> E3.b),
T3 = a2(R3)
if (null == T3) F3 = 0
else {
var U3 = E3.K[0],
z3 = E3.w
for (T3[0] = E3.K[0][0], B4 = 1; B4 < 1 * M3; ++B4)
T3[B4] = D2(U3[z3 + B4], T3[B4 - 1])
for (; B4 < 4 * R3; ++B4) T3[B4] = 0
;(E3.K[0] = null), (E3.K[0] = T3), (F3 = 1)
}
}
_3 = F3
break
case 2:
break
default:
e2(0)
}
u4 = _3
}
}
if (
((f4 = f4[0]),
(p4 = p4[0]),
u4 && y3(g4, 1) && !(u4 = 1 <= (b4 = y3(g4, 4)) && 11 >= b4))
) {
s3.a = 3
break t
}
var H5
if ((H5 = u4))
e: {
var W3,
V3,
G3,
Y3 = s3,
J3 = f4,
X3 = p4,
K3 = b4,
Z3 = n3,
$3 = Y3.m,
Q3 = Y3.s,
tt3 = [null],
et3 = 1,
rt3 = 0,
nt3 = Qn[K3]
r: for (;;) {
if (Z3 && y3($3, 1)) {
var it3 = y3($3, 3) + 2,
at3 = q2(J3, it3),
ot3 = q2(X3, it3),
st3 = at3 * ot3
if (!It2(at3, ot3, 0, Y3, tt3)) break r
for (tt3 = tt3[0], Q3.xc = it3, W3 = 0; W3 < st3; ++W3) {
var ct3 = (tt3[W3] >> 8) & 65535
;(tt3[W3] = ct3), ct3 >= et3 && (et3 = ct3 + 1)
}
}
if ($3.h) break r
for (V3 = 0; 5 > V3; ++V3) {
var ut3 = Xn[V3]
!V3 && 0 < K3 && (ut3 += 1 << K3), rt3 < ut3 && (rt3 = ut3)
}
var ht3 = o2(et3 * nt3, l3),
lt3 = et3,
ft3 = o2(lt3, d4)
if (null == ft3) var dt3 = null
else e2(65536 >= lt3), (dt3 = ft3)
var pt4 = a2(rt3)
if (null == dt3 || null == pt4 || null == ht3) {
Y3.a = 1
break r
}
var gt3 = ht3
for (W3 = G3 = 0; W3 < et3; ++W3) {
var mt3 = dt3[W3],
vt3 = mt3.G,
bt3 = mt3.H,
wt3 = 0,
Nt3 = 1,
Lt3 = 0
for (V3 = 0; 5 > V3; ++V3) {
;(ut3 = Xn[V3]),
(vt3[V3] = gt3),
(bt3[V3] = G3),
!V3 && 0 < K3 && (ut3 += 1 << K3)
n: {
var At3,
xt3 = ut3,
St2 = Y3,
kt3 = pt4,
Ft3 = gt3,
Ct3 = G3,
jt3 = 0,
Ot3 = St2.m,
Bt3 = y3(Ot3, 1)
if ((i2(kt3, 0, 0, xt3), Bt3)) {
var Mt3 = y3(Ot3, 1) + 1,
Et3 = y3(Ot3, 1),
qt3 = y3(Ot3, 0 == Et3 ? 1 : 8)
;(kt3[qt3] = 1), 2 == Mt3 && (kt3[(qt3 = y3(Ot3, 8))] = 1)
var Dt3 = 1
} else {
var Rt3 = a2(19),
Tt3 = y3(Ot3, 4) + 4
if (19 < Tt3) {
St2.a = 3
var Ut3 = 0
break n
}
for (At3 = 0; At3 < Tt3; ++At3) Rt3[Zn[At3]] = y3(Ot3, 3)
var zt3 = void 0,
Ht3 = void 0,
Wt3 = St2,
Vt3 = Rt3,
Gt3 = xt3,
Yt3 = kt3,
Jt3 = 0,
Xt3 = Wt3.m,
Kt3 = 8,
Zt3 = o2(128, l3)
i: for (; h3(Zt3, 0, 7, Vt3, 19); ) {
if (y3(Xt3, 1)) {
var $t3 = 2 + 2 * y3(Xt3, 3)
if ((zt3 = 2 + y3(Xt3, $t3)) > Gt3) break i
} else zt3 = Gt3
for (Ht3 = 0; Ht3 < Gt3 && zt3--; ) {
S2(Xt3)
var Qt3 = Zt3[0 + (127 & L3(Xt3))]
x2(Xt3, Xt3.u + Qt3.g)
var te3 = Qt3.value
if (16 > te3)
(Yt3[Ht3++] = te3), 0 != te3 && (Kt3 = te3)
else {
var ee3 = 16 == te3,
re3 = te3 - 16,
ne3 = Jn[re3],
ie3 = y3(Xt3, Yn[re3]) + ne3
if (Ht3 + ie3 > Gt3) break i
for (var ae3 = ee3 ? Kt3 : 0; 0 < ie3--; )
Yt3[Ht3++] = ae3
}
}
Jt3 = 1
break i
}
Jt3 || (Wt3.a = 3), (Dt3 = Jt3)
}
;(Dt3 = Dt3 && !Ot3.h) && (jt3 = h3(Ft3, Ct3, 8, kt3, xt3)),
Dt3 && 0 != jt3 ? (Ut3 = jt3) : ((St2.a = 3), (Ut3 = 0))
}
if (0 == Ut3) break r
if (
(Nt3 && 1 == Kn[V3] && (Nt3 = 0 == gt3[G3].g),
(wt3 += gt3[G3].g),
(G3 += Ut3),
3 >= V3)
) {
var oe3,
se3 = pt4[0]
for (oe3 = 1; oe3 < ut3; ++oe3)
pt4[oe3] > se3 && (se3 = pt4[oe3])
Lt3 += se3
}
}
if (
((mt3.nd = Nt3),
(mt3.Qb = 0),
Nt3 &&
((mt3.qb =
((vt3[3][bt3[3] + 0].value << 24) |
(vt3[1][bt3[1] + 0].value << 16) |
vt3[2][bt3[2] + 0].value) >>>
0),
0 == wt3 &&
256 > vt3[0][bt3[0] + 0].value &&
((mt3.Qb = 1),
(mt3.qb += vt3[0][bt3[0] + 0].value << 8))),
(mt3.jc = !mt3.Qb && 6 > Lt3),
mt3.jc)
) {
var ce3,
ue3 = mt3
for (ce3 = 0; ce3 < Dr; ++ce3) {
var he3 = ce3,
le3 = ue3.pd[he3],
fe3 = ue3.G[0][ue3.H[0] + he3]
256 <= fe3.value
? ((le3.g = fe3.g + 256), (le3.value = fe3.value))
: ((le3.g = 0),
(le3.value = 0),
(he3 >>= yt2(fe3, 8, le3)),
(he3 >>= yt2(ue3.G[1][ue3.H[1] + he3], 16, le3)),
(he3 >>= yt2(ue3.G[2][ue3.H[2] + he3], 0, le3)),
yt2(ue3.G[3][ue3.H[3] + he3], 24, le3))
}
}
}
;(Q3.vc = tt3),
(Q3.Wb = et3),
(Q3.Ya = dt3),
(Q3.yc = ht3),
(H5 = 1)
break e
}
H5 = 0
}
if (!(u4 = H5)) {
s3.a = 3
break t
}
if (0 < b4) {
if (((m4.ua = 1 << b4), !O2(m4.Wa, b4))) {
;(s3.a = 1), (u4 = 0)
break t
}
} else m4.ua = 0
var de3 = s3,
pe3 = f4,
ge3 = p4,
me3 = de3.s,
ve3 = me3.xc
if (
((de3.c = pe3),
(de3.i = ge3),
(me3.md = q2(pe3, ve3)),
(me3.wc = 0 == ve3 ? -1 : (1 << ve3) - 1),
n3)
) {
s3.xb = pi
break t
}
if (null == (v6 = a2(f4 * p4))) {
;(s3.a = 1), (u4 = 0)
break t
}
u4 = (u4 = _t2(s3, v6, 0, f4, p4, p4, null)) && !g4.h
break t
}
return (
u4
? (null != c4 ? (c4[0] = v6) : (e2(null == v6), e2(n3)),
(s3.$ = 0),
n3 || Pt2(m4))
: Pt2(m4),
u4
)
}
function Ft2(t5, r3) {
var n3 = t5.c * t5.i,
i3 = n3 + r3 + 16 * r3
return (
e2(t5.c <= r3),
(t5.V = a2(i3)),
null == t5.V
? ((t5.Ta = null), (t5.Ua = 0), (t5.a = 1), 0)
: ((t5.Ta = t5.V), (t5.Ua = t5.Ba + n3 + r3), 1)
)
}
function Ct2(t5, r3) {
var n3 = t5.C,
i3 = r3 - n3,
a3 = t5.V,
o3 = t5.Ba + t5.c * n3
for (e2(r3 <= t5.l.o); 0 < i3; ) {
var s3 = 16 < i3 ? 16 : i3,
c4 = t5.l.ma,
u4 = t5.l.width,
h4 = u4 * s3,
l4 = c4.ca,
f4 = c4.tb + u4 * n3,
d5 = t5.Ta,
p4 = t5.Ua
Nt2(t5, s3, a3, o3),
_n(d5, p4, l4, f4, h4),
xt2(c4, n3, n3 + s3, l4, f4, u4),
(i3 -= s3),
(a3 += s3 * t5.c),
(n3 += s3)
}
e2(n3 == r3), (t5.C = t5.Ma = r3)
}
function jt2() {
this.ub = this.yd = this.td = this.Rb = 0
}
function Ot2() {
this.Kd = this.Ld = this.Ud = this.Td = this.i = this.c = 0
}
function Bt2() {
;(this.Fb = this.Bb = this.Cb = 0), (this.Zb = a2(4)), (this.Lb = a2(4))
}
function Mt2() {
this.Yb = (function () {
var t5 = []
return (
(function t6(e3, r3, n3) {
for (
var i3 = n3[r3], a3 = 0;
a3 < i3 &&
(e3.push(n3.length > r3 + 1 ? [] : 0), !(n3.length < r3 + 1));
a3++
)
t6(e3[a3], r3 + 1, n3)
})(t5, 0, [3, 11]),
t5
)
})()
}
function Et2() {
;(this.jb = a2(3)),
(this.Wc = s2([4, 8], Mt2)),
(this.Xc = s2([4, 17], Mt2))
}
function qt2() {
;(this.Pc = this.wb = this.Tb = this.zd = 0),
(this.vd = new a2(4)),
(this.od = new a2(4))
}
function Dt2() {
this.ld = this.La = this.dd = this.tc = 0
}
function Rt2() {
this.Na = this.la = 0
}
function Tt2() {
;(this.Sc = [0, 0]),
(this.Eb = [0, 0]),
(this.Qc = [0, 0]),
(this.ia = this.lc = 0)
}
function Ut2() {
;(this.ad = a2(384)),
(this.Za = 0),
(this.Ob = a2(16)),
(this.$b = this.Ad = this.ia = this.Gc = this.Hc = this.Dd = 0)
}
function zt2() {
;(this.uc = this.M = this.Nb = 0),
(this.wa = Array(new Dt2())),
(this.Y = 0),
(this.ya = Array(new Ut2())),
(this.aa = 0),
(this.l = new Gt2())
}
function Ht2() {
;(this.y = a2(16)), (this.f = a2(8)), (this.ea = a2(8))
}
function Wt2() {
;(this.cb = this.a = 0),
(this.sc = ''),
(this.m = new w3()),
(this.Od = new jt2()),
(this.Kc = new Ot2()),
(this.ed = new qt2()),
(this.Qa = new Bt2()),
(this.Ic = this.$c = this.Aa = 0),
(this.D = new zt2()),
(this.Xb =
this.Va =
this.Hb =
this.zb =
this.yb =
this.Ub =
this.za =
0),
(this.Jc = o2(8, w3)),
(this.ia = 0),
(this.pb = o2(4, Tt2)),
(this.Pa = new Et2()),
(this.Bd = this.kc = 0),
(this.Ac = []),
(this.Bc = 0),
(this.zc = [0, 0, 0, 0]),
(this.Gd = Array(new Ht2())),
(this.Hd = 0),
(this.rb = Array(new Rt2())),
(this.sb = 0),
(this.wa = Array(new Dt2())),
(this.Y = 0),
(this.oc = []),
(this.pc = 0),
(this.sa = []),
(this.ta = 0),
(this.qa = []),
(this.ra = 0),
(this.Ha = []),
(this.B = this.R = this.Ia = 0),
(this.Ec = []),
(this.M = this.ja = this.Vb = this.Fc = 0),
(this.ya = Array(new Ut2())),
(this.L = this.aa = 0),
(this.gd = s2([4, 2], Dt2)),
(this.ga = null),
(this.Fa = []),
(this.Cc = this.qc = this.P = 0),
(this.Gb = []),
(this.Uc = 0),
(this.mb = []),
(this.nb = 0),
(this.rc = []),
(this.Ga = this.Vc = 0)
}
function Vt2(t5, e3) {
return 0 > t5 ? 0 : t5 > e3 ? e3 : t5
}
function Gt2() {
;(this.T = this.U = this.ka = this.height = this.width = 0),
(this.y = []),
(this.f = []),
(this.ea = []),
(this.Rc = this.fa = this.W = this.N = this.O = 0),
(this.ma = 'void'),
(this.put = 'VP8IoPutHook'),
(this.ac = 'VP8IoSetupHook'),
(this.bc = 'VP8IoTeardownHook'),
(this.ha = this.Kb = 0),
(this.data = []),
(this.hb =
this.ib =
this.da =
this.o =
this.j =
this.va =
this.v =
this.Da =
this.ob =
this.w =
0),
(this.F = []),
(this.J = 0)
}
function Yt2() {
var t5 = new Wt2()
return (
null != t5 &&
((t5.a = 0),
(t5.sc = 'OK'),
(t5.cb = 0),
(t5.Xb = 0),
ni || (ni = Zt2)),
t5
)
}
function Jt2(t5, e3, r3) {
return 0 == t5.a && ((t5.a = e3), (t5.sc = r3), (t5.cb = 0)), 0
}
function Xt2(t5, e3, r3) {
return 3 <= r3 && 157 == t5[e3 + 0] && 1 == t5[e3 + 1] && 42 == t5[e3 + 2]
}
function Kt2(t5, r3) {
if (null == t5) return 0
if (((t5.a = 0), (t5.sc = 'OK'), null == r3))
return Jt2(t5, 2, 'null VP8Io passed to VP8GetHeaders()')
var n3 = r3.data,
a3 = r3.w,
o3 = r3.ha
if (4 > o3) return Jt2(t5, 7, 'Truncated header.')
var s3 = n3[a3 + 0] | (n3[a3 + 1] << 8) | (n3[a3 + 2] << 16),
c4 = t5.Od
if (
((c4.Rb = !(1 & s3)),
(c4.td = (s3 >> 1) & 7),
(c4.yd = (s3 >> 4) & 1),
(c4.ub = s3 >> 5),
3 < c4.td)
)
return Jt2(t5, 3, 'Incorrect keyframe parameters.')
if (!c4.yd) return Jt2(t5, 4, 'Frame not displayable.')
;(a3 += 3), (o3 -= 3)
var u4 = t5.Kc
if (c4.Rb) {
if (7 > o3) return Jt2(t5, 7, 'cannot parse picture header')
if (!Xt2(n3, a3, o3)) return Jt2(t5, 3, 'Bad code word')
;(u4.c = 16383 & ((n3[a3 + 4] << 8) | n3[a3 + 3])),
(u4.Td = n3[a3 + 4] >> 6),
(u4.i = 16383 & ((n3[a3 + 6] << 8) | n3[a3 + 5])),
(u4.Ud = n3[a3 + 6] >> 6),
(a3 += 7),
(o3 -= 7),
(t5.za = (u4.c + 15) >> 4),
(t5.Ub = (u4.i + 15) >> 4),
(r3.width = u4.c),
(r3.height = u4.i),
(r3.Da = 0),
(r3.j = 0),
(r3.v = 0),
(r3.va = r3.width),
(r3.o = r3.height),
(r3.da = 0),
(r3.ib = r3.width),
(r3.hb = r3.height),
(r3.U = r3.width),
(r3.T = r3.height),
i2((s3 = t5.Pa).jb, 0, 255, s3.jb.length),
e2(null != (s3 = t5.Qa)),
(s3.Cb = 0),
(s3.Bb = 0),
(s3.Fb = 1),
i2(s3.Zb, 0, 0, s3.Zb.length),
i2(s3.Lb, 0, 0, s3.Lb)
}
if (c4.ub > o3) return Jt2(t5, 7, 'bad partition length')
p3((s3 = t5.m), n3, a3, c4.ub),
(a3 += c4.ub),
(o3 -= c4.ub),
c4.Rb && ((u4.Ld = P2(s3)), (u4.Kd = P2(s3))),
(u4 = t5.Qa)
var h4,
l4 = t5.Pa
if ((e2(null != s3), e2(null != u4), (u4.Cb = P2(s3)), u4.Cb)) {
if (((u4.Bb = P2(s3)), P2(s3))) {
for (u4.Fb = P2(s3), h4 = 0; 4 > h4; ++h4)
u4.Zb[h4] = P2(s3) ? m3(s3, 7) : 0
for (h4 = 0; 4 > h4; ++h4) u4.Lb[h4] = P2(s3) ? m3(s3, 6) : 0
}
if (u4.Bb)
for (h4 = 0; 3 > h4; ++h4) l4.jb[h4] = P2(s3) ? g3(s3, 8) : 255
} else u4.Bb = 0
if (s3.Ka) return Jt2(t5, 3, 'cannot parse segment header')
if (
(((u4 = t5.ed).zd = P2(s3)),
(u4.Tb = g3(s3, 6)),
(u4.wb = g3(s3, 3)),
(u4.Pc = P2(s3)),
u4.Pc && P2(s3))
) {
for (l4 = 0; 4 > l4; ++l4) P2(s3) && (u4.vd[l4] = m3(s3, 6))
for (l4 = 0; 4 > l4; ++l4) P2(s3) && (u4.od[l4] = m3(s3, 6))
}
if (((t5.L = 0 == u4.Tb ? 0 : u4.zd ? 1 : 2), s3.Ka))
return Jt2(t5, 3, 'cannot parse filter header')
var f4 = o3
if (
((o3 = h4 = a3),
(a3 = h4 + f4),
(u4 = f4),
(t5.Xb = (1 << g3(t5.m, 2)) - 1),
f4 < 3 * (l4 = t5.Xb))
)
n3 = 7
else {
for (h4 += 3 * l4, u4 -= 3 * l4, f4 = 0; f4 < l4; ++f4) {
var d5 = n3[o3 + 0] | (n3[o3 + 1] << 8) | (n3[o3 + 2] << 16)
d5 > u4 && (d5 = u4),
p3(t5.Jc[+f4], n3, h4, d5),
(h4 += d5),
(u4 -= d5),
(o3 += 3)
}
p3(t5.Jc[+l4], n3, h4, u4), (n3 = h4 < a3 ? 0 : 5)
}
if (0 != n3) return Jt2(t5, n3, 'cannot parse partitions')
for (
n3 = g3((h4 = t5.m), 7),
o3 = P2(h4) ? m3(h4, 4) : 0,
a3 = P2(h4) ? m3(h4, 4) : 0,
u4 = P2(h4) ? m3(h4, 4) : 0,
l4 = P2(h4) ? m3(h4, 4) : 0,
h4 = P2(h4) ? m3(h4, 4) : 0,
f4 = t5.Qa,
d5 = 0;
4 > d5;
++d5
) {
if (f4.Cb) {
var v6 = f4.Zb[d5]
f4.Fb || (v6 += n3)
} else {
if (0 < d5) {
t5.pb[d5] = t5.pb[0]
continue
}
v6 = n3
}
var b4 = t5.pb[d5]
;(b4.Sc[0] = ei[Vt2(v6 + o3, 127)]),
(b4.Sc[1] = ri[Vt2(v6 + 0, 127)]),
(b4.Eb[0] = 2 * ei[Vt2(v6 + a3, 127)]),
(b4.Eb[1] = (101581 * ri[Vt2(v6 + u4, 127)]) >> 16),
8 > b4.Eb[1] && (b4.Eb[1] = 8),
(b4.Qc[0] = ei[Vt2(v6 + l4, 117)]),
(b4.Qc[1] = ri[Vt2(v6 + h4, 127)]),
(b4.lc = v6 + h4)
}
if (!c4.Rb) return Jt2(t5, 4, 'Not a key frame.')
for (P2(s3), c4 = t5.Pa, n3 = 0; 4 > n3; ++n3) {
for (o3 = 0; 8 > o3; ++o3)
for (a3 = 0; 3 > a3; ++a3)
for (u4 = 0; 11 > u4; ++u4)
(l4 = k2(s3, ui[n3][o3][a3][u4])
? g3(s3, 8)
: si[n3][o3][a3][u4]),
(c4.Wc[n3][o3].Yb[a3][u4] = l4)
for (o3 = 0; 17 > o3; ++o3) c4.Xc[n3][o3] = c4.Wc[n3][hi[o3]]
}
return (t5.kc = P2(s3)), t5.kc && (t5.Bd = g3(s3, 8)), (t5.cb = 1)
}
function Zt2(t5, e3, r3, n3, i3, a3, o3) {
var s3 = e3[i3].Yb[r3]
for (r3 = 0; 16 > i3; ++i3) {
if (!k2(t5, s3[r3 + 0])) return i3
for (; !k2(t5, s3[r3 + 1]); )
if (((s3 = e3[++i3].Yb[0]), (r3 = 0), 16 == i3)) return 16
var c4 = e3[i3 + 1].Yb
if (k2(t5, s3[r3 + 2])) {
var u4 = t5,
h4 = 0
if (k2(u4, (f4 = s3)[(l4 = r3) + 3]))
if (k2(u4, f4[l4 + 6])) {
for (
s3 = 0,
l4 =
2 * (h4 = k2(u4, f4[l4 + 8])) +
(f4 = k2(u4, f4[l4 + 9 + h4])),
h4 = 0,
f4 = ii[l4];
f4[s3];
++s3
)
h4 += h4 + k2(u4, f4[s3])
h4 += 3 + (8 << l4)
} else
k2(u4, f4[l4 + 7])
? ((h4 = 7 + 2 * k2(u4, 165)), (h4 += k2(u4, 145)))
: (h4 = 5 + k2(u4, 159))
else h4 = k2(u4, f4[l4 + 4]) ? 3 + k2(u4, f4[l4 + 5]) : 2
s3 = c4[2]
} else (h4 = 1), (s3 = c4[1])
;(c4 = o3 + ai[i3]), 0 > (u4 = t5).b && _2(u4)
var l4,
f4 = u4.b,
d5 = ((l4 = u4.Ca >> 1) - (u4.I >> f4)) >> 31
--u4.b,
(u4.Ca += d5),
(u4.Ca |= 1),
(u4.I -= ((l4 + 1) & d5) << f4),
(a3[c4] = ((h4 ^ d5) - d5) * n3[(0 < i3) + 0])
}
return 16
}
function $t2(t5) {
var e3 = t5.rb[t5.sb - 1]
;(e3.la = 0), (e3.Na = 0), i2(t5.zc, 0, 0, t5.zc.length), (t5.ja = 0)
}
function Qt2(t5, r3) {
if (null == t5) return 0
if (null == r3) return Jt2(t5, 2, 'NULL VP8Io parameter in VP8Decode().')
if (!t5.cb && !Kt2(t5, r3)) return 0
if ((e2(t5.cb), null == r3.ac || r3.ac(r3))) {
r3.ob && (t5.L = 0)
var s3 = Ri[t5.L]
if (
(2 == t5.L
? ((t5.yb = 0), (t5.zb = 0))
: ((t5.yb = (r3.v - s3) >> 4),
(t5.zb = (r3.j - s3) >> 4),
0 > t5.yb && (t5.yb = 0),
0 > t5.zb && (t5.zb = 0)),
(t5.Va = (r3.o + 15 + s3) >> 4),
(t5.Hb = (r3.va + 15 + s3) >> 4),
t5.Hb > t5.za && (t5.Hb = t5.za),
t5.Va > t5.Ub && (t5.Va = t5.Ub),
0 < t5.L)
) {
var c4 = t5.ed
for (s3 = 0; 4 > s3; ++s3) {
var u4
if (t5.Qa.Cb) {
var h4 = t5.Qa.Lb[s3]
t5.Qa.Fb || (h4 += c4.Tb)
} else h4 = c4.Tb
for (u4 = 0; 1 >= u4; ++u4) {
var l4 = t5.gd[s3][u4],
f4 = h4
if (
(c4.Pc && ((f4 += c4.vd[0]), u4 && (f4 += c4.od[0])),
0 < (f4 = 0 > f4 ? 0 : 63 < f4 ? 63 : f4))
) {
var d5 = f4
0 < c4.wb &&
(d5 = 4 < c4.wb ? d5 >> 2 : d5 >> 1) > 9 - c4.wb &&
(d5 = 9 - c4.wb),
1 > d5 && (d5 = 1),
(l4.dd = d5),
(l4.tc = 2 * f4 + d5),
(l4.ld = 40 <= f4 ? 2 : 15 <= f4 ? 1 : 0)
} else l4.tc = 0
l4.La = u4
}
}
}
s3 = 0
} else Jt2(t5, 6, 'Frame setup failed'), (s3 = t5.a)
if ((s3 = 0 == s3)) {
if (s3) {
;(t5.$c = 0), 0 < t5.Aa || (t5.Ic = Ui)
t: {
s3 = t5.Ic
c4 = 4 * (d5 = t5.za)
var p4 = 32 * d5,
g4 = d5 + 1,
m4 = 0 < t5.L ? d5 * (0 < t5.Aa ? 2 : 1) : 0,
v6 = (2 == t5.Aa ? 2 : 1) * d5
if (
(l4 =
c4 +
832 +
(u4 = ((3 * (16 * s3 + Ri[t5.L])) / 2) * p4) +
(h4 =
null != t5.Fa && 0 < t5.Fa.length ? t5.Kc.c * t5.Kc.i : 0)) !=
l4
)
s3 = 0
else {
if (l4 > t5.Vb) {
if (
((t5.Vb = 0), (t5.Ec = a2(l4)), (t5.Fc = 0), null == t5.Ec)
) {
s3 = Jt2(t5, 1, 'no memory during frame initialization.')
break t
}
t5.Vb = l4
}
;(l4 = t5.Ec),
(f4 = t5.Fc),
(t5.Ac = l4),
(t5.Bc = f4),
(f4 += c4),
(t5.Gd = o2(p4, Ht2)),
(t5.Hd = 0),
(t5.rb = o2(g4 + 1, Rt2)),
(t5.sb = 1),
(t5.wa = m4 ? o2(m4, Dt2) : null),
(t5.Y = 0),
(t5.D.Nb = 0),
(t5.D.wa = t5.wa),
(t5.D.Y = t5.Y),
0 < t5.Aa && (t5.D.Y += d5),
e2(true),
(t5.oc = l4),
(t5.pc = f4),
(f4 += 832),
(t5.ya = o2(v6, Ut2)),
(t5.aa = 0),
(t5.D.ya = t5.ya),
(t5.D.aa = t5.aa),
2 == t5.Aa && (t5.D.aa += d5),
(t5.R = 16 * d5),
(t5.B = 8 * d5),
(d5 = (p4 = Ri[t5.L]) * t5.R),
(p4 = (p4 / 2) * t5.B),
(t5.sa = l4),
(t5.ta = f4 + d5),
(t5.qa = t5.sa),
(t5.ra = t5.ta + 16 * s3 * t5.R + p4),
(t5.Ha = t5.qa),
(t5.Ia = t5.ra + 8 * s3 * t5.B + p4),
(t5.$c = 0),
(f4 += u4),
(t5.mb = h4 ? l4 : null),
(t5.nb = h4 ? f4 : null),
e2(f4 + h4 <= t5.Fc + t5.Vb),
$t2(t5),
i2(t5.Ac, t5.Bc, 0, c4),
(s3 = 1)
}
}
if (s3) {
if (
((r3.ka = 0),
(r3.y = t5.sa),
(r3.O = t5.ta),
(r3.f = t5.qa),
(r3.N = t5.ra),
(r3.ea = t5.Ha),
(r3.Vd = t5.Ia),
(r3.fa = t5.R),
(r3.Rc = t5.B),
(r3.F = null),
(r3.J = 0),
!Cn)
) {
for (s3 = -255; 255 >= s3; ++s3) Pn[255 + s3] = 0 > s3 ? -s3 : s3
for (s3 = -1020; 1020 >= s3; ++s3)
kn[1020 + s3] = -128 > s3 ? -128 : 127 < s3 ? 127 : s3
for (s3 = -112; 112 >= s3; ++s3)
In[112 + s3] = -16 > s3 ? -16 : 15 < s3 ? 15 : s3
for (s3 = -255; 510 >= s3; ++s3)
Fn[255 + s3] = 0 > s3 ? 0 : 255 < s3 ? 255 : s3
Cn = 1
}
;(an = ue2),
(on2 = ae2),
(cn = oe2),
(un = se2),
(hn = ce2),
(sn = ie2),
(ln2 = Je),
(fn2 = Xe),
(dn = $e),
(pn = Qe),
(gn = Ke),
(mn2 = Ze),
(vn = tr2),
(bn2 = er),
(yn = ze),
(wn = He),
(Nn = We),
(Ln = Ve),
(fi2[0] = xe),
(fi2[1] = le2),
(fi2[2] = Le2),
(fi2[3] = Ae),
(fi2[4] = Se),
(fi2[5] = Pe),
(fi2[6] = _e),
(fi2[7] = ke),
(fi2[8] = Fe),
(fi2[9] = Ie),
(li[0] = ve2),
(li[1] = de2),
(li[2] = pe2),
(li[3] = ge2),
(li[4] = be2),
(li[5] = ye2),
(li[6] = we2),
(di[0] = Be),
(di[1] = fe2),
(di[2] = Ce),
(di[3] = je),
(di[4] = Ee),
(di[5] = Me),
(di[6] = qe),
(s3 = 1)
} else s3 = 0
}
s3 &&
(s3 = (function (t6, r4) {
for (t6.M = 0; t6.M < t6.Va; ++t6.M) {
var o3,
s4 = t6.Jc[t6.M & t6.Xb],
c5 = t6.m,
u5 = t6
for (o3 = 0; o3 < u5.za; ++o3) {
var h5 = c5,
l5 = u5,
f5 = l5.Ac,
d6 = l5.Bc + 4 * o3,
p5 = l5.zc,
g5 = l5.ya[l5.aa + o3]
if (
(l5.Qa.Bb
? (g5.$b = k2(h5, l5.Pa.jb[0])
? 2 + k2(h5, l5.Pa.jb[2])
: k2(h5, l5.Pa.jb[1]))
: (g5.$b = 0),
l5.kc && (g5.Ad = k2(h5, l5.Bd)),
(g5.Za = !k2(h5, 145) + 0),
g5.Za)
) {
var m5 = g5.Ob,
v7 = 0
for (l5 = 0; 4 > l5; ++l5) {
var b4,
y4 = p5[0 + l5]
for (b4 = 0; 4 > b4; ++b4) {
y4 = ci[f5[d6 + b4]][y4]
for (var w4 = oi[k2(h5, y4[0])]; 0 < w4; )
w4 = oi[2 * w4 + k2(h5, y4[w4])]
;(y4 = -w4), (f5[d6 + b4] = y4)
}
n2(m5, v7, f5, d6, 4), (v7 += 4), (p5[0 + l5] = y4)
}
} else
(y4 = k2(h5, 156)
? k2(h5, 128)
? 1
: 3
: k2(h5, 163)
? 2
: 0),
(g5.Ob[0] = y4),
i2(f5, d6, y4, 4),
i2(p5, 0, y4, 4)
g5.Dd = k2(h5, 142)
? k2(h5, 114)
? k2(h5, 183)
? 1
: 3
: 2
: 0
}
if (u5.m.Ka)
return Jt2(t6, 7, 'Premature end-of-partition0 encountered.')
for (; t6.ja < t6.za; ++t6.ja) {
if (
((u5 = s4),
(h5 = (c5 = t6).rb[c5.sb - 1]),
(f5 = c5.rb[c5.sb + c5.ja]),
(o3 = c5.ya[c5.aa + c5.ja]),
(d6 = c5.kc ? o3.Ad : 0))
)
(h5.la = f5.la = 0),
o3.Za || (h5.Na = f5.Na = 0),
(o3.Hc = 0),
(o3.Gc = 0),
(o3.ia = 0)
else {
var N4, L4
;(h5 = f5),
(f5 = u5),
(d6 = c5.Pa.Xc),
(p5 = c5.ya[c5.aa + c5.ja]),
(g5 = c5.pb[p5.$b])
if (
((l5 = p5.ad),
(m5 = 0),
(v7 = c5.rb[c5.sb - 1]),
(y4 = b4 = 0),
i2(l5, m5, 0, 384),
p5.Za)
)
var A4 = 0,
x3 = d6[3]
else {
w4 = a2(16)
var S3 = h5.Na + v7.Na
if (
((S3 = ni(f5, d6[1], S3, g5.Eb, 0, w4, 0)),
(h5.Na = v7.Na = (0 < S3) + 0),
1 < S3)
)
an(w4, 0, l5, m5)
else {
var _3 = (w4[0] + 3) >> 3
for (w4 = 0; 256 > w4; w4 += 16) l5[m5 + w4] = _3
}
;(A4 = 1), (x3 = d6[0])
}
var P3 = 15 & h5.la,
I3 = 15 & v7.la
for (w4 = 0; 4 > w4; ++w4) {
var F3 = 1 & I3
for (_3 = L4 = 0; 4 > _3; ++_3)
(P3 =
(P3 >> 1) |
((F3 =
(S3 = ni(
f5,
x3,
(S3 = F3 + (1 & P3)),
g5.Sc,
A4,
l5,
m5
)) > A4) <<
7)),
(L4 =
(L4 << 2) |
(3 < S3 ? 3 : 1 < S3 ? 2 : 0 != l5[m5 + 0])),
(m5 += 16)
;(P3 >>= 4),
(I3 = (I3 >> 1) | (F3 << 7)),
(b4 = ((b4 << 8) | L4) >>> 0)
}
for (x3 = P3, A4 = I3 >> 4, N4 = 0; 4 > N4; N4 += 2) {
for (
L4 = 0,
P3 = h5.la >> (4 + N4),
I3 = v7.la >> (4 + N4),
w4 = 0;
2 > w4;
++w4
) {
for (F3 = 1 & I3, _3 = 0; 2 > _3; ++_3)
(S3 = F3 + (1 & P3)),
(P3 =
(P3 >> 1) |
((F3 =
0 < (S3 = ni(f5, d6[2], S3, g5.Qc, 0, l5, m5))) <<
3)),
(L4 =
(L4 << 2) |
(3 < S3 ? 3 : 1 < S3 ? 2 : 0 != l5[m5 + 0])),
(m5 += 16)
;(P3 >>= 2), (I3 = (I3 >> 1) | (F3 << 5))
}
;(y4 |= L4 << (4 * N4)),
(x3 |= (P3 << 4) << N4),
(A4 |= (240 & I3) << N4)
}
;(h5.la = x3),
(v7.la = A4),
(p5.Hc = b4),
(p5.Gc = y4),
(p5.ia = 43690 & y4 ? 0 : g5.ia),
(d6 = !(b4 | y4))
}
if (
(0 < c5.L &&
((c5.wa[c5.Y + c5.ja] = c5.gd[o3.$b][o3.Za]),
(c5.wa[c5.Y + c5.ja].La |= !d6)),
u5.Ka)
)
return Jt2(t6, 7, 'Premature end-of-file encountered.')
}
if (
($t2(t6),
(c5 = r4),
(u5 = 1),
(o3 = (s4 = t6).D),
(h5 = 0 < s4.L && s4.M >= s4.zb && s4.M <= s4.Va),
0 == s4.Aa)
)
t: {
if (
((o3.M = s4.M),
(o3.uc = h5),
Or(s4, o3),
(u5 = 1),
(o3 = (L4 = s4.D).Nb),
(h5 = (y4 = Ri[s4.L]) * s4.R),
(f5 = (y4 / 2) * s4.B),
(w4 = 16 * o3 * s4.R),
(_3 = 8 * o3 * s4.B),
(d6 = s4.sa),
(p5 = s4.ta - h5 + w4),
(g5 = s4.qa),
(l5 = s4.ra - f5 + _3),
(m5 = s4.Ha),
(v7 = s4.Ia - f5 + _3),
(I3 = 0 == (P3 = L4.M)),
(b4 = P3 >= s4.Va - 1),
2 == s4.Aa && Or(s4, L4),
L4.uc)
)
for (
F3 = (S3 = s4).D.M, e2(S3.D.uc), L4 = S3.yb;
L4 < S3.Hb;
++L4
) {
;(A4 = L4), (x3 = F3)
var C3 = (j3 = (U3 = S3).D).Nb
N4 = U3.R
var j3 = j3.wa[j3.Y + A4],
O3 = U3.sa,
B4 = U3.ta + 16 * C3 * N4 + 16 * A4,
M3 = j3.dd,
E3 = j3.tc
if (0 != E3)
if ((e2(3 <= E3), 1 == U3.L))
0 < A4 && wn(O3, B4, N4, E3 + 4),
j3.La && Ln(O3, B4, N4, E3),
0 < x3 && yn(O3, B4, N4, E3 + 4),
j3.La && Nn(O3, B4, N4, E3)
else {
var q3 = U3.B,
D3 = U3.qa,
R3 = U3.ra + 8 * C3 * q3 + 8 * A4,
T3 = U3.Ha,
U3 = U3.Ia + 8 * C3 * q3 + 8 * A4
C3 = j3.ld
0 < A4 &&
(fn2(O3, B4, N4, E3 + 4, M3, C3),
pn(D3, R3, T3, U3, q3, E3 + 4, M3, C3)),
j3.La &&
(mn2(O3, B4, N4, E3, M3, C3),
bn2(D3, R3, T3, U3, q3, E3, M3, C3)),
0 < x3 &&
(ln2(O3, B4, N4, E3 + 4, M3, C3),
dn(D3, R3, T3, U3, q3, E3 + 4, M3, C3)),
j3.La &&
(gn(O3, B4, N4, E3, M3, C3),
vn(D3, R3, T3, U3, q3, E3, M3, C3))
}
}
if ((s4.ia && alert('todo:DitherRow'), null != c5.put)) {
if (
((L4 = 16 * P3),
(P3 = 16 * (P3 + 1)),
I3
? ((c5.y = s4.sa),
(c5.O = s4.ta + w4),
(c5.f = s4.qa),
(c5.N = s4.ra + _3),
(c5.ea = s4.Ha),
(c5.W = s4.Ia + _3))
: ((L4 -= y4),
(c5.y = d6),
(c5.O = p5),
(c5.f = g5),
(c5.N = l5),
(c5.ea = m5),
(c5.W = v7)),
b4 || (P3 -= y4),
P3 > c5.o && (P3 = c5.o),
(c5.F = null),
(c5.J = null),
null != s4.Fa &&
0 < s4.Fa.length &&
L4 < P3 &&
((c5.J = lr(s4, c5, L4, P3 - L4)),
(c5.F = s4.mb),
null == c5.F && 0 == c5.F.length))
) {
u5 = Jt2(s4, 3, 'Could not decode alpha data.')
break t
}
L4 < c5.j &&
((y4 = c5.j - L4),
(L4 = c5.j),
e2(!(1 & y4)),
(c5.O += s4.R * y4),
(c5.N += s4.B * (y4 >> 1)),
(c5.W += s4.B * (y4 >> 1)),
null != c5.F && (c5.J += c5.width * y4)),
L4 < P3 &&
((c5.O += c5.v),
(c5.N += c5.v >> 1),
(c5.W += c5.v >> 1),
null != c5.F && (c5.J += c5.v),
(c5.ka = L4 - c5.j),
(c5.U = c5.va - c5.v),
(c5.T = P3 - L4),
(u5 = c5.put(c5)))
}
o3 + 1 != s4.Ic ||
b4 ||
(n2(s4.sa, s4.ta - h5, d6, p5 + 16 * s4.R, h5),
n2(s4.qa, s4.ra - f5, g5, l5 + 8 * s4.B, f5),
n2(s4.Ha, s4.Ia - f5, m5, v7 + 8 * s4.B, f5))
}
if (!u5) return Jt2(t6, 6, 'Output aborted.')
}
return 1
})(t5, r3)),
null != r3.bc && r3.bc(r3),
(s3 &= 1)
}
return s3 ? ((t5.cb = 0), s3) : 0
}
function te2(t5, e3, r3, n3, i3) {
;(i3 = t5[e3 + r3 + 32 * n3] + (i3 >> 3)),
(t5[e3 + r3 + 32 * n3] = -256 & i3 ? (0 > i3 ? 0 : 255) : i3)
}
function ee2(t5, e3, r3, n3, i3, a3) {
te2(t5, e3, 0, r3, n3 + i3),
te2(t5, e3, 1, r3, n3 + a3),
te2(t5, e3, 2, r3, n3 - a3),
te2(t5, e3, 3, r3, n3 - i3)
}
function re2(t5) {
return ((20091 * t5) >> 16) + t5
}
function ne2(t5, e3, r3, n3) {
var i3,
o3 = 0,
s3 = a2(16)
for (i3 = 0; 4 > i3; ++i3) {
var c4 = t5[e3 + 0] + t5[e3 + 8],
u4 = t5[e3 + 0] - t5[e3 + 8],
h4 = ((35468 * t5[e3 + 4]) >> 16) - re2(t5[e3 + 12]),
l4 = re2(t5[e3 + 4]) + ((35468 * t5[e3 + 12]) >> 16)
;(s3[o3 + 0] = c4 + l4),
(s3[o3 + 1] = u4 + h4),
(s3[o3 + 2] = u4 - h4),
(s3[o3 + 3] = c4 - l4),
(o3 += 4),
e3++
}
for (i3 = o3 = 0; 4 > i3; ++i3)
(c4 = (t5 = s3[o3 + 0] + 4) + s3[o3 + 8]),
(u4 = t5 - s3[o3 + 8]),
(h4 = ((35468 * s3[o3 + 4]) >> 16) - re2(s3[o3 + 12])),
te2(
r3,
n3,
0,
0,
c4 + (l4 = re2(s3[o3 + 4]) + ((35468 * s3[o3 + 12]) >> 16))
),
te2(r3, n3, 1, 0, u4 + h4),
te2(r3, n3, 2, 0, u4 - h4),
te2(r3, n3, 3, 0, c4 - l4),
o3++,
(n3 += 32)
}
function ie2(t5, e3, r3, n3) {
var i3 = t5[e3 + 0] + 4,
a3 = (35468 * t5[e3 + 4]) >> 16,
o3 = re2(t5[e3 + 4]),
s3 = (35468 * t5[e3 + 1]) >> 16
ee2(r3, n3, 0, i3 + o3, (t5 = re2(t5[e3 + 1])), s3),
ee2(r3, n3, 1, i3 + a3, t5, s3),
ee2(r3, n3, 2, i3 - a3, t5, s3),
ee2(r3, n3, 3, i3 - o3, t5, s3)
}
function ae2(t5, e3, r3, n3, i3) {
ne2(t5, e3, r3, n3), i3 && ne2(t5, e3 + 16, r3, n3 + 4)
}
function oe2(t5, e3, r3, n3) {
on2(t5, e3 + 0, r3, n3, 1), on2(t5, e3 + 32, r3, n3 + 128, 1)
}
function se2(t5, e3, r3, n3) {
var i3
for (t5 = t5[e3 + 0] + 4, i3 = 0; 4 > i3; ++i3)
for (e3 = 0; 4 > e3; ++e3) te2(r3, n3, e3, i3, t5)
}
function ce2(t5, e3, r3, n3) {
t5[e3 + 0] && un(t5, e3 + 0, r3, n3),
t5[e3 + 16] && un(t5, e3 + 16, r3, n3 + 4),
t5[e3 + 32] && un(t5, e3 + 32, r3, n3 + 128),
t5[e3 + 48] && un(t5, e3 + 48, r3, n3 + 128 + 4)
}
function ue2(t5, e3, r3, n3) {
var i3,
o3 = a2(16)
for (i3 = 0; 4 > i3; ++i3) {
var s3 = t5[e3 + 0 + i3] + t5[e3 + 12 + i3],
c4 = t5[e3 + 4 + i3] + t5[e3 + 8 + i3],
u4 = t5[e3 + 4 + i3] - t5[e3 + 8 + i3],
h4 = t5[e3 + 0 + i3] - t5[e3 + 12 + i3]
;(o3[0 + i3] = s3 + c4),
(o3[8 + i3] = s3 - c4),
(o3[4 + i3] = h4 + u4),
(o3[12 + i3] = h4 - u4)
}
for (i3 = 0; 4 > i3; ++i3)
(s3 = (t5 = o3[0 + 4 * i3] + 3) + o3[3 + 4 * i3]),
(c4 = o3[1 + 4 * i3] + o3[2 + 4 * i3]),
(u4 = o3[1 + 4 * i3] - o3[2 + 4 * i3]),
(h4 = t5 - o3[3 + 4 * i3]),
(r3[n3 + 0] = (s3 + c4) >> 3),
(r3[n3 + 16] = (h4 + u4) >> 3),
(r3[n3 + 32] = (s3 - c4) >> 3),
(r3[n3 + 48] = (h4 - u4) >> 3),
(n3 += 64)
}
function he2(t5, e3, r3) {
var n3,
i3 = e3 - 32,
a3 = Bn,
o3 = 255 - t5[i3 - 1]
for (n3 = 0; n3 < r3; ++n3) {
var s3,
c4 = a3,
u4 = o3 + t5[e3 - 1]
for (s3 = 0; s3 < r3; ++s3) t5[e3 + s3] = c4[u4 + t5[i3 + s3]]
e3 += 32
}
}
function le2(t5, e3) {
he2(t5, e3, 4)
}
function fe2(t5, e3) {
he2(t5, e3, 8)
}
function de2(t5, e3) {
he2(t5, e3, 16)
}
function pe2(t5, e3) {
var r3
for (r3 = 0; 16 > r3; ++r3) n2(t5, e3 + 32 * r3, t5, e3 - 32, 16)
}
function ge2(t5, e3) {
var r3
for (r3 = 16; 0 < r3; --r3) i2(t5, e3, t5[e3 - 1], 16), (e3 += 32)
}
function me2(t5, e3, r3) {
var n3
for (n3 = 0; 16 > n3; ++n3) i2(e3, r3 + 32 * n3, t5, 16)
}
function ve2(t5, e3) {
var r3,
n3 = 16
for (r3 = 0; 16 > r3; ++r3) n3 += t5[e3 - 1 + 32 * r3] + t5[e3 + r3 - 32]
me2(n3 >> 5, t5, e3)
}
function be2(t5, e3) {
var r3,
n3 = 8
for (r3 = 0; 16 > r3; ++r3) n3 += t5[e3 - 1 + 32 * r3]
me2(n3 >> 4, t5, e3)
}
function ye2(t5, e3) {
var r3,
n3 = 8
for (r3 = 0; 16 > r3; ++r3) n3 += t5[e3 + r3 - 32]
me2(n3 >> 4, t5, e3)
}
function we2(t5, e3) {
me2(128, t5, e3)
}
function Ne2(t5, e3, r3) {
return (t5 + 2 * e3 + r3 + 2) >> 2
}
function Le2(t5, e3) {
var r3,
i3 = e3 - 32
i3 = new Uint8Array([
Ne2(t5[i3 - 1], t5[i3 + 0], t5[i3 + 1]),
Ne2(t5[i3 + 0], t5[i3 + 1], t5[i3 + 2]),
Ne2(t5[i3 + 1], t5[i3 + 2], t5[i3 + 3]),
Ne2(t5[i3 + 2], t5[i3 + 3], t5[i3 + 4]),
])
for (r3 = 0; 4 > r3; ++r3) n2(t5, e3 + 32 * r3, i3, 0, i3.length)
}
function Ae(t5, e3) {
var r3 = t5[e3 - 1],
n3 = t5[e3 - 1 + 32],
i3 = t5[e3 - 1 + 64],
a3 = t5[e3 - 1 + 96]
I2(t5, e3 + 0, 16843009 * Ne2(t5[e3 - 1 - 32], r3, n3)),
I2(t5, e3 + 32, 16843009 * Ne2(r3, n3, i3)),
I2(t5, e3 + 64, 16843009 * Ne2(n3, i3, a3)),
I2(t5, e3 + 96, 16843009 * Ne2(i3, a3, a3))
}
function xe(t5, e3) {
var r3,
n3 = 4
for (r3 = 0; 4 > r3; ++r3) n3 += t5[e3 + r3 - 32] + t5[e3 - 1 + 32 * r3]
for (n3 >>= 3, r3 = 0; 4 > r3; ++r3) i2(t5, e3 + 32 * r3, n3, 4)
}
function Se(t5, e3) {
var r3 = t5[e3 - 1 + 0],
n3 = t5[e3 - 1 + 32],
i3 = t5[e3 - 1 + 64],
a3 = t5[e3 - 1 - 32],
o3 = t5[e3 + 0 - 32],
s3 = t5[e3 + 1 - 32],
c4 = t5[e3 + 2 - 32],
u4 = t5[e3 + 3 - 32]
;(t5[e3 + 0 + 96] = Ne2(n3, i3, t5[e3 - 1 + 96])),
(t5[e3 + 1 + 96] = t5[e3 + 0 + 64] = Ne2(r3, n3, i3)),
(t5[e3 + 2 + 96] = t5[e3 + 1 + 64] = t5[e3 + 0 + 32] = Ne2(a3, r3, n3)),
(t5[e3 + 3 + 96] =
t5[e3 + 2 + 64] =
t5[e3 + 1 + 32] =
t5[e3 + 0 + 0] =
Ne2(o3, a3, r3)),
(t5[e3 + 3 + 64] = t5[e3 + 2 + 32] = t5[e3 + 1 + 0] = Ne2(s3, o3, a3)),
(t5[e3 + 3 + 32] = t5[e3 + 2 + 0] = Ne2(c4, s3, o3)),
(t5[e3 + 3 + 0] = Ne2(u4, c4, s3))
}
function _e(t5, e3) {
var r3 = t5[e3 + 1 - 32],
n3 = t5[e3 + 2 - 32],
i3 = t5[e3 + 3 - 32],
a3 = t5[e3 + 4 - 32],
o3 = t5[e3 + 5 - 32],
s3 = t5[e3 + 6 - 32],
c4 = t5[e3 + 7 - 32]
;(t5[e3 + 0 + 0] = Ne2(t5[e3 + 0 - 32], r3, n3)),
(t5[e3 + 1 + 0] = t5[e3 + 0 + 32] = Ne2(r3, n3, i3)),
(t5[e3 + 2 + 0] = t5[e3 + 1 + 32] = t5[e3 + 0 + 64] = Ne2(n3, i3, a3)),
(t5[e3 + 3 + 0] =
t5[e3 + 2 + 32] =
t5[e3 + 1 + 64] =
t5[e3 + 0 + 96] =
Ne2(i3, a3, o3)),
(t5[e3 + 3 + 32] = t5[e3 + 2 + 64] = t5[e3 + 1 + 96] = Ne2(a3, o3, s3)),
(t5[e3 + 3 + 64] = t5[e3 + 2 + 96] = Ne2(o3, s3, c4)),
(t5[e3 + 3 + 96] = Ne2(s3, c4, c4))
}
function Pe(t5, e3) {
var r3 = t5[e3 - 1 + 0],
n3 = t5[e3 - 1 + 32],
i3 = t5[e3 - 1 + 64],
a3 = t5[e3 - 1 - 32],
o3 = t5[e3 + 0 - 32],
s3 = t5[e3 + 1 - 32],
c4 = t5[e3 + 2 - 32],
u4 = t5[e3 + 3 - 32]
;(t5[e3 + 0 + 0] = t5[e3 + 1 + 64] = (a3 + o3 + 1) >> 1),
(t5[e3 + 1 + 0] = t5[e3 + 2 + 64] = (o3 + s3 + 1) >> 1),
(t5[e3 + 2 + 0] = t5[e3 + 3 + 64] = (s3 + c4 + 1) >> 1),
(t5[e3 + 3 + 0] = (c4 + u4 + 1) >> 1),
(t5[e3 + 0 + 96] = Ne2(i3, n3, r3)),
(t5[e3 + 0 + 64] = Ne2(n3, r3, a3)),
(t5[e3 + 0 + 32] = t5[e3 + 1 + 96] = Ne2(r3, a3, o3)),
(t5[e3 + 1 + 32] = t5[e3 + 2 + 96] = Ne2(a3, o3, s3)),
(t5[e3 + 2 + 32] = t5[e3 + 3 + 96] = Ne2(o3, s3, c4)),
(t5[e3 + 3 + 32] = Ne2(s3, c4, u4))
}
function ke(t5, e3) {
var r3 = t5[e3 + 0 - 32],
n3 = t5[e3 + 1 - 32],
i3 = t5[e3 + 2 - 32],
a3 = t5[e3 + 3 - 32],
o3 = t5[e3 + 4 - 32],
s3 = t5[e3 + 5 - 32],
c4 = t5[e3 + 6 - 32],
u4 = t5[e3 + 7 - 32]
;(t5[e3 + 0 + 0] = (r3 + n3 + 1) >> 1),
(t5[e3 + 1 + 0] = t5[e3 + 0 + 64] = (n3 + i3 + 1) >> 1),
(t5[e3 + 2 + 0] = t5[e3 + 1 + 64] = (i3 + a3 + 1) >> 1),
(t5[e3 + 3 + 0] = t5[e3 + 2 + 64] = (a3 + o3 + 1) >> 1),
(t5[e3 + 0 + 32] = Ne2(r3, n3, i3)),
(t5[e3 + 1 + 32] = t5[e3 + 0 + 96] = Ne2(n3, i3, a3)),
(t5[e3 + 2 + 32] = t5[e3 + 1 + 96] = Ne2(i3, a3, o3)),
(t5[e3 + 3 + 32] = t5[e3 + 2 + 96] = Ne2(a3, o3, s3)),
(t5[e3 + 3 + 64] = Ne2(o3, s3, c4)),
(t5[e3 + 3 + 96] = Ne2(s3, c4, u4))
}
function Ie(t5, e3) {
var r3 = t5[e3 - 1 + 0],
n3 = t5[e3 - 1 + 32],
i3 = t5[e3 - 1 + 64],
a3 = t5[e3 - 1 + 96]
;(t5[e3 + 0 + 0] = (r3 + n3 + 1) >> 1),
(t5[e3 + 2 + 0] = t5[e3 + 0 + 32] = (n3 + i3 + 1) >> 1),
(t5[e3 + 2 + 32] = t5[e3 + 0 + 64] = (i3 + a3 + 1) >> 1),
(t5[e3 + 1 + 0] = Ne2(r3, n3, i3)),
(t5[e3 + 3 + 0] = t5[e3 + 1 + 32] = Ne2(n3, i3, a3)),
(t5[e3 + 3 + 32] = t5[e3 + 1 + 64] = Ne2(i3, a3, a3)),
(t5[e3 + 3 + 64] =
t5[e3 + 2 + 64] =
t5[e3 + 0 + 96] =
t5[e3 + 1 + 96] =
t5[e3 + 2 + 96] =
t5[e3 + 3 + 96] =
a3)
}
function Fe(t5, e3) {
var r3 = t5[e3 - 1 + 0],
n3 = t5[e3 - 1 + 32],
i3 = t5[e3 - 1 + 64],
a3 = t5[e3 - 1 + 96],
o3 = t5[e3 - 1 - 32],
s3 = t5[e3 + 0 - 32],
c4 = t5[e3 + 1 - 32],
u4 = t5[e3 + 2 - 32]
;(t5[e3 + 0 + 0] = t5[e3 + 2 + 32] = (r3 + o3 + 1) >> 1),
(t5[e3 + 0 + 32] = t5[e3 + 2 + 64] = (n3 + r3 + 1) >> 1),
(t5[e3 + 0 + 64] = t5[e3 + 2 + 96] = (i3 + n3 + 1) >> 1),
(t5[e3 + 0 + 96] = (a3 + i3 + 1) >> 1),
(t5[e3 + 3 + 0] = Ne2(s3, c4, u4)),
(t5[e3 + 2 + 0] = Ne2(o3, s3, c4)),
(t5[e3 + 1 + 0] = t5[e3 + 3 + 32] = Ne2(r3, o3, s3)),
(t5[e3 + 1 + 32] = t5[e3 + 3 + 64] = Ne2(n3, r3, o3)),
(t5[e3 + 1 + 64] = t5[e3 + 3 + 96] = Ne2(i3, n3, r3)),
(t5[e3 + 1 + 96] = Ne2(a3, i3, n3))
}
function Ce(t5, e3) {
var r3
for (r3 = 0; 8 > r3; ++r3) n2(t5, e3 + 32 * r3, t5, e3 - 32, 8)
}
function je(t5, e3) {
var r3
for (r3 = 0; 8 > r3; ++r3) i2(t5, e3, t5[e3 - 1], 8), (e3 += 32)
}
function Oe(t5, e3, r3) {
var n3
for (n3 = 0; 8 > n3; ++n3) i2(e3, r3 + 32 * n3, t5, 8)
}
function Be(t5, e3) {
var r3,
n3 = 8
for (r3 = 0; 8 > r3; ++r3) n3 += t5[e3 + r3 - 32] + t5[e3 - 1 + 32 * r3]
Oe(n3 >> 4, t5, e3)
}
function Me(t5, e3) {
var r3,
n3 = 4
for (r3 = 0; 8 > r3; ++r3) n3 += t5[e3 + r3 - 32]
Oe(n3 >> 3, t5, e3)
}
function Ee(t5, e3) {
var r3,
n3 = 4
for (r3 = 0; 8 > r3; ++r3) n3 += t5[e3 - 1 + 32 * r3]
Oe(n3 >> 3, t5, e3)
}
function qe(t5, e3) {
Oe(128, t5, e3)
}
function De(t5, e3, r3) {
var n3 = t5[e3 - r3],
i3 = t5[e3 + 0],
a3 = 3 * (i3 - n3) + jn[1020 + t5[e3 - 2 * r3] - t5[e3 + r3]],
o3 = On[112 + ((a3 + 4) >> 3)]
;(t5[e3 - r3] = Bn[255 + n3 + On[112 + ((a3 + 3) >> 3)]]),
(t5[e3 + 0] = Bn[255 + i3 - o3])
}
function Re(t5, e3, r3, n3) {
var i3 = t5[e3 + 0],
a3 = t5[e3 + r3]
return (
Mn[255 + t5[e3 - 2 * r3] - t5[e3 - r3]] > n3 || Mn[255 + a3 - i3] > n3
)
}
function Te(t5, e3, r3, n3) {
return (
4 * Mn[255 + t5[e3 - r3] - t5[e3 + 0]] +
Mn[255 + t5[e3 - 2 * r3] - t5[e3 + r3]] <=
n3
)
}
function Ue(t5, e3, r3, n3, i3) {
var a3 = t5[e3 - 3 * r3],
o3 = t5[e3 - 2 * r3],
s3 = t5[e3 - r3],
c4 = t5[e3 + 0],
u4 = t5[e3 + r3],
h4 = t5[e3 + 2 * r3],
l4 = t5[e3 + 3 * r3]
return 4 * Mn[255 + s3 - c4] + Mn[255 + o3 - u4] > n3
? 0
: Mn[255 + t5[e3 - 4 * r3] - a3] <= i3 &&
Mn[255 + a3 - o3] <= i3 &&
Mn[255 + o3 - s3] <= i3 &&
Mn[255 + l4 - h4] <= i3 &&
Mn[255 + h4 - u4] <= i3 &&
Mn[255 + u4 - c4] <= i3
}
function ze(t5, e3, r3, n3) {
var i3 = 2 * n3 + 1
for (n3 = 0; 16 > n3; ++n3) Te(t5, e3 + n3, r3, i3) && De(t5, e3 + n3, r3)
}
function He(t5, e3, r3, n3) {
var i3 = 2 * n3 + 1
for (n3 = 0; 16 > n3; ++n3)
Te(t5, e3 + n3 * r3, 1, i3) && De(t5, e3 + n3 * r3, 1)
}
function We(t5, e3, r3, n3) {
var i3
for (i3 = 3; 0 < i3; --i3) ze(t5, (e3 += 4 * r3), r3, n3)
}
function Ve(t5, e3, r3, n3) {
var i3
for (i3 = 3; 0 < i3; --i3) He(t5, (e3 += 4), r3, n3)
}
function Ge(t5, e3, r3, n3, i3, a3, o3, s3) {
for (a3 = 2 * a3 + 1; 0 < i3--; ) {
if (Ue(t5, e3, r3, a3, o3))
if (Re(t5, e3, r3, s3)) De(t5, e3, r3)
else {
var c4 = t5,
u4 = e3,
h4 = r3,
l4 = c4[u4 - 2 * h4],
f4 = c4[u4 - h4],
d5 = c4[u4 + 0],
p4 = c4[u4 + h4],
g4 = c4[u4 + 2 * h4],
m4 =
(27 * (b4 = jn[1020 + 3 * (d5 - f4) + jn[1020 + l4 - p4]]) +
63) >>
7,
v6 = (18 * b4 + 63) >> 7,
b4 = (9 * b4 + 63) >> 7
;(c4[u4 - 3 * h4] = Bn[255 + c4[u4 - 3 * h4] + b4]),
(c4[u4 - 2 * h4] = Bn[255 + l4 + v6]),
(c4[u4 - h4] = Bn[255 + f4 + m4]),
(c4[u4 + 0] = Bn[255 + d5 - m4]),
(c4[u4 + h4] = Bn[255 + p4 - v6]),
(c4[u4 + 2 * h4] = Bn[255 + g4 - b4])
}
e3 += n3
}
}
function Ye(t5, e3, r3, n3, i3, a3, o3, s3) {
for (a3 = 2 * a3 + 1; 0 < i3--; ) {
if (Ue(t5, e3, r3, a3, o3))
if (Re(t5, e3, r3, s3)) De(t5, e3, r3)
else {
var c4 = t5,
u4 = e3,
h4 = r3,
l4 = c4[u4 - h4],
f4 = c4[u4 + 0],
d5 = c4[u4 + h4],
p4 = On[112 + (((g4 = 3 * (f4 - l4)) + 4) >> 3)],
g4 = On[112 + ((g4 + 3) >> 3)],
m4 = (p4 + 1) >> 1
;(c4[u4 - 2 * h4] = Bn[255 + c4[u4 - 2 * h4] + m4]),
(c4[u4 - h4] = Bn[255 + l4 + g4]),
(c4[u4 + 0] = Bn[255 + f4 - p4]),
(c4[u4 + h4] = Bn[255 + d5 - m4])
}
e3 += n3
}
}
function Je(t5, e3, r3, n3, i3, a3) {
Ge(t5, e3, r3, 1, 16, n3, i3, a3)
}
function Xe(t5, e3, r3, n3, i3, a3) {
Ge(t5, e3, 1, r3, 16, n3, i3, a3)
}
function Ke(t5, e3, r3, n3, i3, a3) {
var o3
for (o3 = 3; 0 < o3; --o3) Ye(t5, (e3 += 4 * r3), r3, 1, 16, n3, i3, a3)
}
function Ze(t5, e3, r3, n3, i3, a3) {
var o3
for (o3 = 3; 0 < o3; --o3) Ye(t5, (e3 += 4), 1, r3, 16, n3, i3, a3)
}
function $e(t5, e3, r3, n3, i3, a3, o3, s3) {
Ge(t5, e3, i3, 1, 8, a3, o3, s3), Ge(r3, n3, i3, 1, 8, a3, o3, s3)
}
function Qe(t5, e3, r3, n3, i3, a3, o3, s3) {
Ge(t5, e3, 1, i3, 8, a3, o3, s3), Ge(r3, n3, 1, i3, 8, a3, o3, s3)
}
function tr2(t5, e3, r3, n3, i3, a3, o3, s3) {
Ye(t5, e3 + 4 * i3, i3, 1, 8, a3, o3, s3),
Ye(r3, n3 + 4 * i3, i3, 1, 8, a3, o3, s3)
}
function er(t5, e3, r3, n3, i3, a3, o3, s3) {
Ye(t5, e3 + 4, 1, i3, 8, a3, o3, s3), Ye(r3, n3 + 4, 1, i3, 8, a3, o3, s3)
}
function rr2() {
;(this.ba = new ot2()),
(this.ec = []),
(this.cc = []),
(this.Mc = []),
(this.Dc = this.Nc = this.dc = this.fc = 0),
(this.Oa = new ct2()),
(this.memory = 0),
(this.Ib = 'OutputFunc'),
(this.Jb = 'OutputAlphaFunc'),
(this.Nd = 'OutputRowFunc')
}
function nr() {
;(this.data = []),
(this.offset = this.kd = this.ha = this.w = 0),
(this.na = []),
(this.xa = this.gb = this.Ja = this.Sa = this.P = 0)
}
function ir() {
;(this.nc = this.Ea = this.b = this.hc = 0), (this.K = []), (this.w = 0)
}
function ar2() {
;(this.ua = 0),
(this.Wa = new M2()),
(this.vb = new M2()),
(this.md = this.xc = this.wc = 0),
(this.vc = []),
(this.Wb = 0),
(this.Ya = new d4()),
(this.yc = new l3())
}
function or() {
;(this.xb = this.a = 0),
(this.l = new Gt2()),
(this.ca = new ot2()),
(this.V = []),
(this.Ba = 0),
(this.Ta = []),
(this.Ua = 0),
(this.m = new N3()),
(this.Pb = 0),
(this.wd = new N3()),
(this.Ma = this.$ = this.C = this.i = this.c = this.xd = 0),
(this.s = new ar2()),
(this.ab = 0),
(this.gc = o2(4, ir)),
(this.Oc = 0)
}
function sr2() {
;(this.Lc = this.Z = this.$a = this.i = this.c = 0),
(this.l = new Gt2()),
(this.ic = 0),
(this.ca = []),
(this.tb = 0),
(this.qd = null),
(this.rd = 0)
}
function cr(t5, e3, r3, n3, i3, a3, o3) {
for (t5 = null == t5 ? 0 : t5[e3 + 0], e3 = 0; e3 < o3; ++e3)
(i3[a3 + e3] = (t5 + r3[n3 + e3]) & 255), (t5 = i3[a3 + e3])
}
function ur(t5, e3, r3, n3, i3, a3, o3) {
var s3
if (null == t5) cr(null, null, r3, n3, i3, a3, o3)
else
for (s3 = 0; s3 < o3; ++s3)
i3[a3 + s3] = (t5[e3 + s3] + r3[n3 + s3]) & 255
}
function hr2(t5, e3, r3, n3, i3, a3, o3) {
if (null == t5) cr(null, null, r3, n3, i3, a3, o3)
else {
var s3,
c4 = t5[e3 + 0],
u4 = c4,
h4 = c4
for (s3 = 0; s3 < o3; ++s3)
(u4 = h4 + (c4 = t5[e3 + s3]) - u4),
(h4 = (r3[n3 + s3] + (-256 & u4 ? (0 > u4 ? 0 : 255) : u4)) & 255),
(u4 = c4),
(i3[a3 + s3] = h4)
}
}
function lr(t5, r3, i3, o3) {
var s3 = r3.width,
c4 = r3.o
if ((e2(null != t5 && null != r3), 0 > i3 || 0 >= o3 || i3 + o3 > c4))
return null
if (!t5.Cc) {
if (null == t5.ga) {
var u4
if (
((t5.ga = new sr2()),
(u4 = null == t5.ga) ||
((u4 = r3.width * r3.o),
e2(0 == t5.Gb.length),
(t5.Gb = a2(u4)),
(t5.Uc = 0),
null == t5.Gb
? (u4 = 0)
: ((t5.mb = t5.Gb), (t5.nb = t5.Uc), (t5.rc = null), (u4 = 1)),
(u4 = !u4)),
!u4)
) {
u4 = t5.ga
var h4 = t5.Fa,
l4 = t5.P,
f4 = t5.qc,
d5 = t5.mb,
p4 = t5.nb,
g4 = l4 + 1,
m4 = f4 - 1,
b4 = u4.l
if (
(e2(null != h4 && null != d5 && null != r3),
(mi[0] = null),
(mi[1] = cr),
(mi[2] = ur),
(mi[3] = hr2),
(u4.ca = d5),
(u4.tb = p4),
(u4.c = r3.width),
(u4.i = r3.height),
e2(0 < u4.c && 0 < u4.i),
1 >= f4)
)
r3 = 0
else if (
((u4.$a = (h4[l4 + 0] >> 0) & 3),
(u4.Z = (h4[l4 + 0] >> 2) & 3),
(u4.Lc = (h4[l4 + 0] >> 4) & 3),
(l4 = (h4[l4 + 0] >> 6) & 3),
0 > u4.$a || 1 < u4.$a || 4 <= u4.Z || 1 < u4.Lc || l4)
)
r3 = 0
else if (
((b4.put = dt2),
(b4.ac = ft2),
(b4.bc = pt3),
(b4.ma = u4),
(b4.width = r3.width),
(b4.height = r3.height),
(b4.Da = r3.Da),
(b4.v = r3.v),
(b4.va = r3.va),
(b4.j = r3.j),
(b4.o = r3.o),
u4.$a)
)
t: {
e2(1 == u4.$a), (r3 = kt2())
e: for (;;) {
if (null == r3) {
r3 = 0
break t
}
if (
(e2(null != u4),
(u4.mc = r3),
(r3.c = u4.c),
(r3.i = u4.i),
(r3.l = u4.l),
(r3.l.ma = u4),
(r3.l.width = u4.c),
(r3.l.height = u4.i),
(r3.a = 0),
v5(r3.m, h4, g4, m4),
!It2(u4.c, u4.i, 1, r3, null))
)
break e
if (
(1 == r3.ab && 3 == r3.gc[0].hc && At2(r3.s)
? ((u4.ic = 1),
(h4 = r3.c * r3.i),
(r3.Ta = null),
(r3.Ua = 0),
(r3.V = a2(h4)),
(r3.Ba = 0),
null == r3.V ? ((r3.a = 1), (r3 = 0)) : (r3 = 1))
: ((u4.ic = 0), (r3 = Ft2(r3, u4.c))),
!r3)
)
break e
r3 = 1
break t
}
;(u4.mc = null), (r3 = 0)
}
else r3 = m4 >= u4.c * u4.i
u4 = !r3
}
if (u4) return null
1 != t5.ga.Lc ? (t5.Ga = 0) : (o3 = c4 - i3)
}
e2(null != t5.ga), e2(i3 + o3 <= c4)
t: {
if (((r3 = (h4 = t5.ga).c), (c4 = h4.l.o), 0 == h4.$a)) {
if (
((g4 = t5.rc),
(m4 = t5.Vc),
(b4 = t5.Fa),
(l4 = t5.P + 1 + i3 * r3),
(f4 = t5.mb),
(d5 = t5.nb + i3 * r3),
e2(l4 <= t5.P + t5.qc),
0 != h4.Z)
)
for (e2(null != mi[h4.Z]), u4 = 0; u4 < o3; ++u4)
mi[h4.Z](g4, m4, b4, l4, f4, d5, r3),
(g4 = f4),
(m4 = d5),
(d5 += r3),
(l4 += r3)
else
for (u4 = 0; u4 < o3; ++u4)
n2(f4, d5, b4, l4, r3),
(g4 = f4),
(m4 = d5),
(d5 += r3),
(l4 += r3)
;(t5.rc = g4), (t5.Vc = m4)
} else {
if (
(e2(null != h4.mc),
(r3 = i3 + o3),
e2(null != (u4 = h4.mc)),
e2(r3 <= u4.i),
u4.C >= r3)
)
r3 = 1
else if ((h4.ic || mr(), h4.ic)) {
;(h4 = u4.V), (g4 = u4.Ba), (m4 = u4.c)
var y4 = u4.i,
w4 =
((b4 = 1),
(l4 = u4.$ / m4),
(f4 = u4.$ % m4),
(d5 = u4.m),
(p4 = u4.s),
u4.$),
N4 = m4 * y4,
L4 = m4 * r3,
x3 = p4.wc,
_3 = w4 < L4 ? wt2(p4, f4, l4) : null
e2(w4 <= N4), e2(r3 <= y4), e2(At2(p4))
e: for (;;) {
for (; !d5.h && w4 < L4; ) {
if (
(f4 & x3 || (_3 = wt2(p4, f4, l4)),
e2(null != _3),
S2(d5),
256 > (y4 = bt2(_3.G[0], _3.H[0], d5)))
)
(h4[g4 + w4] = y4),
++w4,
++f4 >= m4 &&
((f4 = 0), ++l4 <= r3 && !(l4 % 16) && St(u4, l4))
else {
if (!(280 > y4)) {
b4 = 0
break e
}
y4 = mt2(y4 - 256, d5)
var P3,
k3 = bt2(_3.G[4], _3.H[4], d5)
if (
(S2(d5),
!(
w4 >= (k3 = vt2(m4, (k3 = mt2(k3, d5)))) &&
N4 - w4 >= y4
))
) {
b4 = 0
break e
}
for (P3 = 0; P3 < y4; ++P3)
h4[g4 + w4 + P3] = h4[g4 + w4 + P3 - k3]
for (w4 += y4, f4 += y4; f4 >= m4; )
(f4 -= m4), ++l4 <= r3 && !(l4 % 16) && St(u4, l4)
w4 < L4 && f4 & x3 && (_3 = wt2(p4, f4, l4))
}
e2(d5.h == A3(d5))
}
St(u4, l4 > r3 ? r3 : l4)
break e
}
!b4 || (d5.h && w4 < N4)
? ((b4 = 0), (u4.a = d5.h ? 5 : 3))
: (u4.$ = w4),
(r3 = b4)
} else r3 = _t2(u4, u4.V, u4.Ba, u4.c, u4.i, r3, Ct2)
if (!r3) {
o3 = 0
break t
}
}
i3 + o3 >= c4 && (t5.Cc = 1), (o3 = 1)
}
if (!o3) return null
if (
t5.Cc &&
(null != (o3 = t5.ga) && (o3.mc = null), (t5.ga = null), 0 < t5.Ga)
)
return alert('todo:WebPDequantizeLevels'), null
}
return t5.nb + i3 * s3
}
function fr2(t5, e3, r3, n3, i3, a3) {
for (; 0 < i3--; ) {
var o3,
s3 = t5,
c4 = e3 + (r3 ? 1 : 0),
u4 = t5,
h4 = e3 + (r3 ? 0 : 3)
for (o3 = 0; o3 < n3; ++o3) {
var l4 = u4[h4 + 4 * o3]
255 != l4 &&
((l4 *= 32897),
(s3[c4 + 4 * o3 + 0] = (s3[c4 + 4 * o3 + 0] * l4) >> 23),
(s3[c4 + 4 * o3 + 1] = (s3[c4 + 4 * o3 + 1] * l4) >> 23),
(s3[c4 + 4 * o3 + 2] = (s3[c4 + 4 * o3 + 2] * l4) >> 23))
}
e3 += a3
}
}
function dr(t5, e3, r3, n3, i3) {
for (; 0 < n3--; ) {
var a3
for (a3 = 0; a3 < r3; ++a3) {
var o3 = t5[e3 + 2 * a3 + 0],
s3 = 15 & (u4 = t5[e3 + 2 * a3 + 1]),
c4 = 4369 * s3,
u4 = (((240 & u4) | (u4 >> 4)) * c4) >> 16
;(t5[e3 + 2 * a3 + 0] =
(((((240 & o3) | (o3 >> 4)) * c4) >> 16) & 240) |
((((((15 & o3) | (o3 << 4)) * c4) >> 16) >> 4) & 15)),
(t5[e3 + 2 * a3 + 1] = (240 & u4) | s3)
}
e3 += i3
}
}
function pr(t5, e3, r3, n3, i3, a3, o3, s3) {
var c4,
u4,
h4 = 255
for (u4 = 0; u4 < i3; ++u4) {
for (c4 = 0; c4 < n3; ++c4) {
var l4 = t5[e3 + c4]
;(a3[o3 + 4 * c4] = l4), (h4 &= l4)
}
;(e3 += r3), (o3 += s3)
}
return 255 != h4
}
function gr(t5, e3, r3, n3, i3) {
var a3
for (a3 = 0; a3 < i3; ++a3) r3[n3 + a3] = t5[e3 + a3] >> 8
}
function mr() {
;(An = fr2), (xn = dr), (Sn = pr), (_n = gr)
}
function vr(r3, n3, i3) {
t4[r3] = function (
t5,
r4,
a3,
o3,
s3,
c4,
u4,
h4,
l4,
f4,
d5,
p4,
g4,
m4,
v6,
b4,
y4
) {
var w4,
N4 = (y4 - 1) >> 1,
L4 = s3[c4 + 0] | (u4[h4 + 0] << 16),
A4 = l4[f4 + 0] | (d5[p4 + 0] << 16)
e2(null != t5)
var x3 = (3 * L4 + A4 + 131074) >> 2
for (
n3(t5[r4 + 0], 255 & x3, x3 >> 16, g4, m4),
null != a3 &&
((x3 = (3 * A4 + L4 + 131074) >> 2),
n3(a3[o3 + 0], 255 & x3, x3 >> 16, v6, b4)),
w4 = 1;
w4 <= N4;
++w4
) {
var S3 = s3[c4 + w4] | (u4[h4 + w4] << 16),
_3 = l4[f4 + w4] | (d5[p4 + w4] << 16),
P3 = L4 + S3 + A4 + _3 + 524296,
k3 = (P3 + 2 * (S3 + A4)) >> 3
;(x3 = (k3 + L4) >> 1),
(L4 = ((P3 = (P3 + 2 * (L4 + _3)) >> 3) + S3) >> 1),
n3(
t5[r4 + 2 * w4 - 1],
255 & x3,
x3 >> 16,
g4,
m4 + (2 * w4 - 1) * i3
),
n3(
t5[r4 + 2 * w4 - 0],
255 & L4,
L4 >> 16,
g4,
m4 + (2 * w4 - 0) * i3
),
null != a3 &&
((x3 = (P3 + A4) >> 1),
(L4 = (k3 + _3) >> 1),
n3(
a3[o3 + 2 * w4 - 1],
255 & x3,
x3 >> 16,
v6,
b4 + (2 * w4 - 1) * i3
),
n3(
a3[o3 + 2 * w4 + 0],
255 & L4,
L4 >> 16,
v6,
b4 + (2 * w4 + 0) * i3
)),
(L4 = S3),
(A4 = _3)
}
1 & y4 ||
((x3 = (3 * L4 + A4 + 131074) >> 2),
n3(t5[r4 + y4 - 1], 255 & x3, x3 >> 16, g4, m4 + (y4 - 1) * i3),
null != a3 &&
((x3 = (3 * A4 + L4 + 131074) >> 2),
n3(a3[o3 + y4 - 1], 255 & x3, x3 >> 16, v6, b4 + (y4 - 1) * i3)))
}
}
function br() {
;(vi2[En] = bi),
(vi2[qn] = wi),
(vi2[Dn] = yi),
(vi2[Rn] = Ni),
(vi2[Tn] = Li),
(vi2[Un] = Ai),
(vi2[zn] = xi),
(vi2[Hn] = wi),
(vi2[Wn] = Ni),
(vi2[Vn] = Li),
(vi2[Gn] = Ai)
}
function yr(t5) {
return t5 & ~Fi ? (0 > t5 ? 0 : 255) : t5 >> Ii
}
function wr(t5, e3) {
return yr(((19077 * t5) >> 8) + ((26149 * e3) >> 8) - 14234)
}
function Nr(t5, e3, r3) {
return yr(
((19077 * t5) >> 8) - ((6419 * e3) >> 8) - ((13320 * r3) >> 8) + 8708
)
}
function Lr(t5, e3) {
return yr(((19077 * t5) >> 8) + ((33050 * e3) >> 8) - 17685)
}
function Ar(t5, e3, r3, n3, i3) {
;(n3[i3 + 0] = wr(t5, r3)),
(n3[i3 + 1] = Nr(t5, e3, r3)),
(n3[i3 + 2] = Lr(t5, e3))
}
function xr(t5, e3, r3, n3, i3) {
;(n3[i3 + 0] = Lr(t5, e3)),
(n3[i3 + 1] = Nr(t5, e3, r3)),
(n3[i3 + 2] = wr(t5, r3))
}
function Sr(t5, e3, r3, n3, i3) {
var a3 = Nr(t5, e3, r3)
;(e3 = ((a3 << 3) & 224) | (Lr(t5, e3) >> 3)),
(n3[i3 + 0] = (248 & wr(t5, r3)) | (a3 >> 5)),
(n3[i3 + 1] = e3)
}
function _r(t5, e3, r3, n3, i3) {
var a3 = (240 & Lr(t5, e3)) | 15
;(n3[i3 + 0] = (240 & wr(t5, r3)) | (Nr(t5, e3, r3) >> 4)),
(n3[i3 + 1] = a3)
}
function Pr(t5, e3, r3, n3, i3) {
;(n3[i3 + 0] = 255), Ar(t5, e3, r3, n3, i3 + 1)
}
function kr(t5, e3, r3, n3, i3) {
xr(t5, e3, r3, n3, i3), (n3[i3 + 3] = 255)
}
function Ir(t5, e3, r3, n3, i3) {
Ar(t5, e3, r3, n3, i3), (n3[i3 + 3] = 255)
}
function Vt2(t5, e3) {
return 0 > t5 ? 0 : t5 > e3 ? e3 : t5
}
function Fr(e3, r3, n3) {
t4[e3] = function (t5, e4, i3, a3, o3, s3, c4, u4, h4) {
for (var l4 = u4 + (-2 & h4) * n3; u4 != l4; )
r3(t5[e4 + 0], i3[a3 + 0], o3[s3 + 0], c4, u4),
r3(t5[e4 + 1], i3[a3 + 0], o3[s3 + 0], c4, u4 + n3),
(e4 += 2),
++a3,
++s3,
(u4 += 2 * n3)
1 & h4 && r3(t5[e4 + 0], i3[a3 + 0], o3[s3 + 0], c4, u4)
}
}
function Cr(t5, e3, r3) {
return 0 == r3 ? (0 == t5 ? (0 == e3 ? 6 : 5) : 0 == e3 ? 4 : 0) : r3
}
function jr(t5, e3, r3, n3, i3) {
switch (t5 >>> 30) {
case 3:
on2(e3, r3, n3, i3, 0)
break
case 2:
sn(e3, r3, n3, i3)
break
case 1:
un(e3, r3, n3, i3)
}
}
function Or(t5, e3) {
var r3,
a3,
o3 = e3.M,
s3 = e3.Nb,
c4 = t5.oc,
u4 = t5.pc + 40,
h4 = t5.oc,
l4 = t5.pc + 584,
f4 = t5.oc,
d5 = t5.pc + 600
for (r3 = 0; 16 > r3; ++r3) c4[u4 + 32 * r3 - 1] = 129
for (r3 = 0; 8 > r3; ++r3)
(h4[l4 + 32 * r3 - 1] = 129), (f4[d5 + 32 * r3 - 1] = 129)
for (
0 < o3
? (c4[u4 - 1 - 32] = h4[l4 - 1 - 32] = f4[d5 - 1 - 32] = 129)
: (i2(c4, u4 - 32 - 1, 127, 21),
i2(h4, l4 - 32 - 1, 127, 9),
i2(f4, d5 - 32 - 1, 127, 9)),
a3 = 0;
a3 < t5.za;
++a3
) {
var p4 = e3.ya[e3.aa + a3]
if (0 < a3) {
for (r3 = -1; 16 > r3; ++r3)
n2(c4, u4 + 32 * r3 - 4, c4, u4 + 32 * r3 + 12, 4)
for (r3 = -1; 8 > r3; ++r3)
n2(h4, l4 + 32 * r3 - 4, h4, l4 + 32 * r3 + 4, 4),
n2(f4, d5 + 32 * r3 - 4, f4, d5 + 32 * r3 + 4, 4)
}
var g4 = t5.Gd,
m4 = t5.Hd + a3,
v6 = p4.ad,
b4 = p4.Hc
if (
(0 < o3 &&
(n2(c4, u4 - 32, g4[m4].y, 0, 16),
n2(h4, l4 - 32, g4[m4].f, 0, 8),
n2(f4, d5 - 32, g4[m4].ea, 0, 8)),
p4.Za)
) {
var y4 = c4,
w4 = u4 - 32 + 16
for (
0 < o3 &&
(a3 >= t5.za - 1
? i2(y4, w4, g4[m4].y[15], 4)
: n2(y4, w4, g4[m4 + 1].y, 0, 4)),
r3 = 0;
4 > r3;
r3++
)
y4[w4 + 128 + r3] =
y4[w4 + 256 + r3] =
y4[w4 + 384 + r3] =
y4[w4 + 0 + r3]
for (r3 = 0; 16 > r3; ++r3, b4 <<= 2)
(y4 = c4),
(w4 = u4 + Di[r3]),
fi2[p4.Ob[r3]](y4, w4),
jr(b4, v6, 16 * +r3, y4, w4)
} else if (((y4 = Cr(a3, o3, p4.Ob[0])), li[y4](c4, u4), 0 != b4))
for (r3 = 0; 16 > r3; ++r3, b4 <<= 2)
jr(b4, v6, 16 * +r3, c4, u4 + Di[r3])
for (
r3 = p4.Gc,
y4 = Cr(a3, o3, p4.Dd),
di[y4](h4, l4),
di[y4](f4, d5),
b4 = v6,
y4 = h4,
w4 = l4,
255 & (p4 = r3 >> 0) &&
(170 & p4 ? cn(b4, 256, y4, w4) : hn(b4, 256, y4, w4)),
p4 = f4,
b4 = d5,
255 & (r3 >>= 8) &&
(170 & r3 ? cn(v6, 320, p4, b4) : hn(v6, 320, p4, b4)),
o3 < t5.Ub - 1 &&
(n2(g4[m4].y, 0, c4, u4 + 480, 16),
n2(g4[m4].f, 0, h4, l4 + 224, 8),
n2(g4[m4].ea, 0, f4, d5 + 224, 8)),
r3 = 8 * s3 * t5.B,
g4 = t5.sa,
m4 = t5.ta + 16 * a3 + 16 * s3 * t5.R,
v6 = t5.qa,
p4 = t5.ra + 8 * a3 + r3,
b4 = t5.Ha,
y4 = t5.Ia + 8 * a3 + r3,
r3 = 0;
16 > r3;
++r3
)
n2(g4, m4 + r3 * t5.R, c4, u4 + 32 * r3, 16)
for (r3 = 0; 8 > r3; ++r3)
n2(v6, p4 + r3 * t5.B, h4, l4 + 32 * r3, 8),
n2(b4, y4 + r3 * t5.B, f4, d5 + 32 * r3, 8)
}
}
function Br(t5, n3, i3, a3, o3, s3, c4, u4, h4) {
var l4 = [0],
f4 = [0],
d5 = 0,
p4 = null != h4 ? h4.kd : 0,
g4 = null != h4 ? h4 : new nr()
if (null == t5 || 12 > i3) return 7
;(g4.data = t5),
(g4.w = n3),
(g4.ha = i3),
(n3 = [n3]),
(i3 = [i3]),
(g4.gb = [g4.gb])
t: {
var m4 = n3,
b4 = i3,
y4 = g4.gb
if (
(e2(null != t5),
e2(null != b4),
e2(null != y4),
(y4[0] = 0),
12 <= b4[0] && !r2(t5, m4[0], 'RIFF'))
) {
if (r2(t5, m4[0] + 8, 'WEBP')) {
y4 = 3
break t
}
var w4 = j2(t5, m4[0] + 4)
if (12 > w4 || 4294967286 < w4) {
y4 = 3
break t
}
if (p4 && w4 > b4[0] - 8) {
y4 = 7
break t
}
;(y4[0] = w4), (m4[0] += 12), (b4[0] -= 12)
}
y4 = 0
}
if (0 != y4) return y4
for (w4 = 0 < g4.gb[0], i3 = i3[0]; ; ) {
t: {
var L4 = t5
;(b4 = n3), (y4 = i3)
var A4 = l4,
x3 = f4,
S3 = (m4 = [0])
if ((((k3 = d5 = [d5])[0] = 0), 8 > y4[0])) y4 = 7
else {
if (!r2(L4, b4[0], 'VP8X')) {
if (10 != j2(L4, b4[0] + 4)) {
y4 = 3
break t
}
if (18 > y4[0]) {
y4 = 7
break t
}
var _3 = j2(L4, b4[0] + 8),
P3 = 1 + C2(L4, b4[0] + 12)
if (2147483648 <= P3 * (L4 = 1 + C2(L4, b4[0] + 15))) {
y4 = 3
break t
}
null != S3 && (S3[0] = _3),
null != A4 && (A4[0] = P3),
null != x3 && (x3[0] = L4),
(b4[0] += 18),
(y4[0] -= 18),
(k3[0] = 1)
}
y4 = 0
}
}
if (((d5 = d5[0]), (m4 = m4[0]), 0 != y4)) return y4
if (((b4 = !!(2 & m4)), !w4 && d5)) return 3
if (
(null != s3 && (s3[0] = !!(16 & m4)),
null != c4 && (c4[0] = b4),
null != u4 && (u4[0] = 0),
(c4 = l4[0]),
(m4 = f4[0]),
d5 && b4 && null == h4)
) {
y4 = 0
break
}
if (4 > i3) {
y4 = 7
break
}
if ((w4 && d5) || (!w4 && !d5 && !r2(t5, n3[0], 'ALPH'))) {
;(i3 = [i3]), (g4.na = [g4.na]), (g4.P = [g4.P]), (g4.Sa = [g4.Sa])
t: {
;(_3 = t5), (y4 = n3), (w4 = i3)
var k3 = g4.gb
;(A4 = g4.na), (x3 = g4.P), (S3 = g4.Sa)
;(P3 = 22), e2(null != _3), e2(null != w4), (L4 = y4[0])
var I3 = w4[0]
for (
e2(null != A4),
e2(null != S3),
A4[0] = null,
x3[0] = null,
S3[0] = 0;
;
) {
if (((y4[0] = L4), (w4[0] = I3), 8 > I3)) {
y4 = 7
break t
}
var F3 = j2(_3, L4 + 4)
if (4294967286 < F3) {
y4 = 3
break t
}
var O3 = (8 + F3 + 1) & -2
if (((P3 += O3), 0 < k3 && P3 > k3)) {
y4 = 3
break t
}
if (!r2(_3, L4, 'VP8 ') || !r2(_3, L4, 'VP8L')) {
y4 = 0
break t
}
if (I3[0] < O3) {
y4 = 7
break t
}
r2(_3, L4, 'ALPH') ||
((A4[0] = _3), (x3[0] = L4 + 8), (S3[0] = F3)),
(L4 += O3),
(I3 -= O3)
}
}
if (
((i3 = i3[0]),
(g4.na = g4.na[0]),
(g4.P = g4.P[0]),
(g4.Sa = g4.Sa[0]),
0 != y4)
)
break
}
;(i3 = [i3]), (g4.Ja = [g4.Ja]), (g4.xa = [g4.xa])
t: if (
((k3 = t5),
(y4 = n3),
(w4 = i3),
(A4 = g4.gb[0]),
(x3 = g4.Ja),
(S3 = g4.xa),
(_3 = y4[0]),
(L4 = !r2(k3, _3, 'VP8 ')),
(P3 = !r2(k3, _3, 'VP8L')),
e2(null != k3),
e2(null != w4),
e2(null != x3),
e2(null != S3),
8 > w4[0])
)
y4 = 7
else {
if (L4 || P3) {
if (((k3 = j2(k3, _3 + 4)), 12 <= A4 && k3 > A4 - 12)) {
y4 = 3
break t
}
if (p4 && k3 > w4[0] - 8) {
y4 = 7
break t
}
;(x3[0] = k3), (y4[0] += 8), (w4[0] -= 8), (S3[0] = P3)
} else
(S3[0] = 5 <= w4[0] && 47 == k3[_3 + 0] && !(k3[_3 + 4] >> 5)),
(x3[0] = w4[0])
y4 = 0
}
if (
((i3 = i3[0]),
(g4.Ja = g4.Ja[0]),
(g4.xa = g4.xa[0]),
(n3 = n3[0]),
0 != y4)
)
break
if (4294967286 < g4.Ja) return 3
if (
(null == u4 || b4 || (u4[0] = g4.xa ? 2 : 1),
(c4 = [c4]),
(m4 = [m4]),
g4.xa)
) {
if (5 > i3) {
y4 = 7
break
}
;(u4 = c4),
(p4 = m4),
(b4 = s3),
null == t5 || 5 > i3
? (t5 = 0)
: 5 <= i3 && 47 == t5[n3 + 0] && !(t5[n3 + 4] >> 5)
? ((w4 = [0]),
(k3 = [0]),
(A4 = [0]),
v5((x3 = new N3()), t5, n3, i3),
gt2(x3, w4, k3, A4)
? (null != u4 && (u4[0] = w4[0]),
null != p4 && (p4[0] = k3[0]),
null != b4 && (b4[0] = A4[0]),
(t5 = 1))
: (t5 = 0))
: (t5 = 0)
} else {
if (10 > i3) {
y4 = 7
break
}
;(u4 = m4),
null == t5 || 10 > i3 || !Xt2(t5, n3 + 3, i3 - 3)
? (t5 = 0)
: ((p4 = t5[n3 + 0] | (t5[n3 + 1] << 8) | (t5[n3 + 2] << 16)),
(b4 = 16383 & ((t5[n3 + 7] << 8) | t5[n3 + 6])),
(t5 = 16383 & ((t5[n3 + 9] << 8) | t5[n3 + 8])),
1 & p4 ||
3 < ((p4 >> 1) & 7) ||
!((p4 >> 4) & 1) ||
p4 >> 5 >= g4.Ja ||
!b4 ||
!t5
? (t5 = 0)
: (c4 && (c4[0] = b4), u4 && (u4[0] = t5), (t5 = 1)))
}
if (!t5) return 3
if (((c4 = c4[0]), (m4 = m4[0]), d5 && (l4[0] != c4 || f4[0] != m4)))
return 3
null != h4 &&
((h4[0] = g4),
(h4.offset = n3 - h4.w),
e2(4294967286 > n3 - h4.w),
e2(h4.offset == h4.ha - i3))
break
}
return 0 == y4 || (7 == y4 && d5 && null == h4)
? (null != s3 && (s3[0] |= null != g4.na && 0 < g4.na.length),
null != a3 && (a3[0] = c4),
null != o3 && (o3[0] = m4),
0)
: y4
}
function Mr(t5, e3, r3) {
var n3 = e3.width,
i3 = e3.height,
a3 = 0,
o3 = 0,
s3 = n3,
c4 = i3
if (
((e3.Da = null != t5 && 0 < t5.Da),
e3.Da &&
((s3 = t5.cd),
(c4 = t5.bd),
(a3 = t5.v),
(o3 = t5.j),
11 > r3 || ((a3 &= -2), (o3 &= -2)),
0 > a3 ||
0 > o3 ||
0 >= s3 ||
0 >= c4 ||
a3 + s3 > n3 ||
o3 + c4 > i3))
)
return 0
if (
((e3.v = a3),
(e3.j = o3),
(e3.va = a3 + s3),
(e3.o = o3 + c4),
(e3.U = s3),
(e3.T = c4),
(e3.da = null != t5 && 0 < t5.da),
e3.da)
) {
if (!E2(s3, c4, (r3 = [t5.ib]), (a3 = [t5.hb]))) return 0
;(e3.ib = r3[0]), (e3.hb = a3[0])
}
return (
(e3.ob = null != t5 && t5.ob),
(e3.Kb = null == t5 || !t5.Sd),
e3.da &&
((e3.ob = e3.ib < (3 * n3) / 4 && e3.hb < (3 * i3) / 4), (e3.Kb = 0)),
1
)
}
function Er(t5) {
if (null == t5) return 2
if (11 > t5.S) {
var e3 = t5.f.RGBA
;(e3.fb += (t5.height - 1) * e3.A), (e3.A = -e3.A)
} else
(e3 = t5.f.kb),
(t5 = t5.height),
(e3.O += (t5 - 1) * e3.fa),
(e3.fa = -e3.fa),
(e3.N += ((t5 - 1) >> 1) * e3.Ab),
(e3.Ab = -e3.Ab),
(e3.W += ((t5 - 1) >> 1) * e3.Db),
(e3.Db = -e3.Db),
null != e3.F && ((e3.J += (t5 - 1) * e3.lb), (e3.lb = -e3.lb))
return 0
}
function qr(t5, e3, r3, n3) {
if (null == n3 || 0 >= t5 || 0 >= e3) return 2
if (null != r3) {
if (r3.Da) {
var i3 = r3.cd,
o3 = r3.bd,
s3 = -2 & r3.v,
c4 = -2 & r3.j
if (
0 > s3 ||
0 > c4 ||
0 >= i3 ||
0 >= o3 ||
s3 + i3 > t5 ||
c4 + o3 > e3
)
return 2
;(t5 = i3), (e3 = o3)
}
if (r3.da) {
if (!E2(t5, e3, (i3 = [r3.ib]), (o3 = [r3.hb]))) return 2
;(t5 = i3[0]), (e3 = o3[0])
}
}
;(n3.width = t5), (n3.height = e3)
t: {
var u4 = n3.width,
h4 = n3.height
if (((t5 = n3.S), 0 >= u4 || 0 >= h4 || !(t5 >= En && 13 > t5))) t5 = 2
else {
if (0 >= n3.Rd && null == n3.sd) {
s3 = o3 = i3 = e3 = 0
var l4 = (c4 = u4 * zi[t5]) * h4
if (
(11 > t5 ||
((o3 = ((h4 + 1) / 2) * (e3 = (u4 + 1) / 2)),
12 == t5 && (s3 = (i3 = u4) * h4)),
null == (h4 = a2(l4 + 2 * o3 + s3)))
) {
t5 = 1
break t
}
;(n3.sd = h4),
11 > t5
? (((u4 = n3.f.RGBA).eb = h4),
(u4.fb = 0),
(u4.A = c4),
(u4.size = l4))
: (((u4 = n3.f.kb).y = h4),
(u4.O = 0),
(u4.fa = c4),
(u4.Fd = l4),
(u4.f = h4),
(u4.N = 0 + l4),
(u4.Ab = e3),
(u4.Cd = o3),
(u4.ea = h4),
(u4.W = 0 + l4 + o3),
(u4.Db = e3),
(u4.Ed = o3),
12 == t5 && ((u4.F = h4), (u4.J = 0 + l4 + 2 * o3)),
(u4.Tc = s3),
(u4.lb = i3))
}
if (
((e3 = 1),
(i3 = n3.S),
(o3 = n3.width),
(s3 = n3.height),
i3 >= En && 13 > i3)
)
if (11 > i3)
(t5 = n3.f.RGBA),
(e3 &= (c4 = Math.abs(t5.A)) * (s3 - 1) + o3 <= t5.size),
(e3 &= c4 >= o3 * zi[i3]),
(e3 &= null != t5.eb)
else {
;(t5 = n3.f.kb),
(c4 = (o3 + 1) / 2),
(l4 = (s3 + 1) / 2),
(u4 = Math.abs(t5.fa))
h4 = Math.abs(t5.Ab)
var f4 = Math.abs(t5.Db),
d5 = Math.abs(t5.lb),
p4 = d5 * (s3 - 1) + o3
;(e3 &= u4 * (s3 - 1) + o3 <= t5.Fd),
(e3 &= h4 * (l4 - 1) + c4 <= t5.Cd),
(e3 =
(e3 &= f4 * (l4 - 1) + c4 <= t5.Ed) &
(u4 >= o3) &
(h4 >= c4) &
(f4 >= c4)),
(e3 &= null != t5.y),
(e3 &= null != t5.f),
(e3 &= null != t5.ea),
12 == i3 &&
((e3 &= d5 >= o3), (e3 &= p4 <= t5.Tc), (e3 &= null != t5.F))
}
else e3 = 0
t5 = e3 ? 0 : 2
}
}
return 0 != t5 || (null != r3 && r3.fd && (t5 = Er(n3))), t5
}
var Dr = 64,
Rr = [
0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383,
32767, 65535, 131071, 262143, 524287, 1048575, 2097151, 4194303,
8388607, 16777215,
],
Tr = 24,
Ur = 32,
zr = 8,
Hr = [
0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
]
R2('Predictor0', 'PredictorAdd0'),
(t4.Predictor0 = function () {
return 4278190080
}),
(t4.Predictor1 = function (t5) {
return t5
}),
(t4.Predictor2 = function (t5, e3, r3) {
return e3[r3 + 0]
}),
(t4.Predictor3 = function (t5, e3, r3) {
return e3[r3 + 1]
}),
(t4.Predictor4 = function (t5, e3, r3) {
return e3[r3 - 1]
}),
(t4.Predictor5 = function (t5, e3, r3) {
return U2(U2(t5, e3[r3 + 1]), e3[r3 + 0])
}),
(t4.Predictor6 = function (t5, e3, r3) {
return U2(t5, e3[r3 - 1])
}),
(t4.Predictor7 = function (t5, e3, r3) {
return U2(t5, e3[r3 + 0])
}),
(t4.Predictor8 = function (t5, e3, r3) {
return U2(e3[r3 - 1], e3[r3 + 0])
}),
(t4.Predictor9 = function (t5, e3, r3) {
return U2(e3[r3 + 0], e3[r3 + 1])
}),
(t4.Predictor10 = function (t5, e3, r3) {
return U2(U2(t5, e3[r3 - 1]), U2(e3[r3 + 0], e3[r3 + 1]))
}),
(t4.Predictor11 = function (t5, e3, r3) {
var n3 = e3[r3 + 0]
return 0 >=
W2(
(n3 >> 24) & 255,
(t5 >> 24) & 255,
((e3 = e3[r3 - 1]) >> 24) & 255
) +
W2((n3 >> 16) & 255, (t5 >> 16) & 255, (e3 >> 16) & 255) +
W2((n3 >> 8) & 255, (t5 >> 8) & 255, (e3 >> 8) & 255) +
W2(255 & n3, 255 & t5, 255 & e3)
? n3
: t5
}),
(t4.Predictor12 = function (t5, e3, r3) {
var n3 = e3[r3 + 0]
return (
((z2(
((t5 >> 24) & 255) +
((n3 >> 24) & 255) -
(((e3 = e3[r3 - 1]) >> 24) & 255)
) <<
24) |
(z2(((t5 >> 16) & 255) + ((n3 >> 16) & 255) - ((e3 >> 16) & 255)) <<
16) |
(z2(((t5 >> 8) & 255) + ((n3 >> 8) & 255) - ((e3 >> 8) & 255)) <<
8) |
z2((255 & t5) + (255 & n3) - (255 & e3))) >>>
0
)
}),
(t4.Predictor13 = function (t5, e3, r3) {
var n3 = e3[r3 - 1]
return (
((H4(((t5 = U2(t5, e3[r3 + 0])) >> 24) & 255, (n3 >> 24) & 255) <<
24) |
(H4((t5 >> 16) & 255, (n3 >> 16) & 255) << 16) |
(H4((t5 >> 8) & 255, (n3 >> 8) & 255) << 8) |
H4((t5 >> 0) & 255, (n3 >> 0) & 255)) >>>
0
)
})
var Wr = t4.PredictorAdd0
;(t4.PredictorAdd1 = V2),
R2('Predictor2', 'PredictorAdd2'),
R2('Predictor3', 'PredictorAdd3'),
R2('Predictor4', 'PredictorAdd4'),
R2('Predictor5', 'PredictorAdd5'),
R2('Predictor6', 'PredictorAdd6'),
R2('Predictor7', 'PredictorAdd7'),
R2('Predictor8', 'PredictorAdd8'),
R2('Predictor9', 'PredictorAdd9'),
R2('Predictor10', 'PredictorAdd10'),
R2('Predictor11', 'PredictorAdd11'),
R2('Predictor12', 'PredictorAdd12'),
R2('Predictor13', 'PredictorAdd13')
var Vr = t4.PredictorAdd2
X2(
'ColorIndexInverseTransform',
'MapARGB',
'32b',
function (t5) {
return (t5 >> 8) & 255
},
function (t5) {
return t5
}
),
X2(
'VP8LColorIndexInverseTransformAlpha',
'MapAlpha',
'8b',
function (t5) {
return t5
},
function (t5) {
return (t5 >> 8) & 255
}
)
var Gr,
Yr = t4.ColorIndexInverseTransform,
Jr = t4.MapARGB,
Xr = t4.VP8LColorIndexInverseTransformAlpha,
Kr = t4.MapAlpha,
Zr = (t4.VP8LPredictorsAdd = [])
;(Zr.length = 16),
((t4.VP8LPredictors = []).length = 16),
((t4.VP8LPredictorsAdd_C = []).length = 16),
((t4.VP8LPredictors_C = []).length = 16)
var $r,
Qr,
tn,
en2,
rn,
nn,
an,
on2,
sn,
cn,
un,
hn,
ln2,
fn2,
dn,
pn,
gn,
mn2,
vn,
bn2,
yn,
wn,
Nn,
Ln,
An,
xn,
Sn,
_n,
Pn = a2(511),
kn = a2(2041),
In = a2(225),
Fn = a2(767),
Cn = 0,
jn = kn,
On = In,
Bn = Fn,
Mn = Pn,
En = 0,
qn = 1,
Dn = 2,
Rn = 3,
Tn = 4,
Un = 5,
zn = 6,
Hn = 7,
Wn = 8,
Vn = 9,
Gn = 10,
Yn = [2, 3, 7],
Jn = [3, 3, 11],
Xn = [280, 256, 256, 256, 40],
Kn = [0, 1, 1, 1, 0],
Zn = [17, 18, 0, 1, 2, 3, 4, 5, 16, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
$n = [
24, 7, 23, 25, 40, 6, 39, 41, 22, 26, 38, 42, 56, 5, 55, 57, 21, 27, 54,
58, 37, 43, 72, 4, 71, 73, 20, 28, 53, 59, 70, 74, 36, 44, 88, 69, 75,
52, 60, 3, 87, 89, 19, 29, 86, 90, 35, 45, 68, 76, 85, 91, 51, 61, 104,
2, 103, 105, 18, 30, 102, 106, 34, 46, 84, 92, 67, 77, 101, 107, 50, 62,
120, 1, 119, 121, 83, 93, 17, 31, 100, 108, 66, 78, 118, 122, 33, 47,
117, 123, 49, 63, 99, 109, 82, 94, 0, 116, 124, 65, 79, 16, 32, 98, 110,
48, 115, 125, 81, 95, 64, 114, 126, 97, 111, 80, 113, 127, 96, 112,
],
Qn = [
2954, 2956, 2958, 2962, 2970, 2986, 3018, 3082, 3212, 3468, 3980, 5004,
],
ti = 8,
ei = [
4, 5, 6, 7, 8, 9, 10, 10, 11, 12, 13, 14, 15, 16, 17, 17, 18, 19, 20,
20, 21, 21, 22, 22, 23, 23, 24, 25, 25, 26, 27, 28, 29, 30, 31, 32, 33,
34, 35, 36, 37, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 46, 47, 48, 49,
50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
68, 69, 70, 71, 72, 73, 74, 75, 76, 76, 77, 78, 79, 80, 81, 82, 83, 84,
85, 86, 87, 88, 89, 91, 93, 95, 96, 98, 100, 101, 102, 104, 106, 108,
110, 112, 114, 116, 118, 122, 124, 126, 128, 130, 132, 134, 136, 138,
140, 143, 145, 148, 151, 154, 157,
],
ri = [
4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94,
96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 119, 122, 125, 128,
131, 134, 137, 140, 143, 146, 149, 152, 155, 158, 161, 164, 167, 170,
173, 177, 181, 185, 189, 193, 197, 201, 205, 209, 213, 217, 221, 225,
229, 234, 239, 245, 249, 254, 259, 264, 269, 274, 279, 284,
],
ni = null,
ii = [
[173, 148, 140, 0],
[176, 155, 140, 135, 0],
[180, 157, 141, 134, 130, 0],
[254, 254, 243, 230, 196, 177, 153, 140, 133, 130, 129, 0],
],
ai = [0, 1, 4, 8, 5, 2, 3, 6, 9, 12, 13, 10, 7, 11, 14, 15],
oi = [-0, 1, -1, 2, -2, 3, 4, 6, -3, 5, -4, -5, -6, 7, -7, 8, -8, -9],
si = [
[
[
[128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],
[128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],
[128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],
],
[
[253, 136, 254, 255, 228, 219, 128, 128, 128, 128, 128],
[189, 129, 242, 255, 227, 213, 255, 219, 128, 128, 128],
[106, 126, 227, 252, 214, 209, 255, 255, 128, 128, 128],
],
[
[1, 98, 248, 255, 236, 226, 255, 255, 128, 128, 128],
[181, 133, 238, 254, 221, 234, 255, 154, 128, 128, 128],
[78, 134, 202, 247, 198, 180, 255, 219, 128, 128, 128],
],
[
[1, 185, 249, 255, 243, 255, 128, 128, 128, 128, 128],
[184, 150, 247, 255, 236, 224, 128, 128, 128, 128, 128],
[77, 110, 216, 255, 236, 230, 128, 128, 128, 128, 128],
],
[
[1, 101, 251, 255, 241, 255, 128, 128, 128, 128, 128],
[170, 139, 241, 252, 236, 209, 255, 255, 128, 128, 128],
[37, 116, 196, 243, 228, 255, 255, 255, 128, 128, 128],
],
[
[1, 204, 254, 255, 245, 255, 128, 128, 128, 128, 128],
[207, 160, 250, 255, 238, 128, 128, 128, 128, 128, 128],
[102, 103, 231, 255, 211, 171, 128, 128, 128, 128, 128],
],
[
[1, 152, 252, 255, 240, 255, 128, 128, 128, 128, 128],
[177, 135, 243, 255, 234, 225, 128, 128, 128, 128, 128],
[80, 129, 211, 255, 194, 224, 128, 128, 128, 128, 128],
],
[
[1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],
[246, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],
[255, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],
],
],
[
[
[198, 35, 237, 223, 193, 187, 162, 160, 145, 155, 62],
[131, 45, 198, 221, 172, 176, 220, 157, 252, 221, 1],
[68, 47, 146, 208, 149, 167, 221, 162, 255, 223, 128],
],
[
[1, 149, 241, 255, 221, 224, 255, 255, 128, 128, 128],
[184, 141, 234, 253, 222, 220, 255, 199, 128, 128, 128],
[81, 99, 181, 242, 176, 190, 249, 202, 255, 255, 128],
],
[
[1, 129, 232, 253, 214, 197, 242, 196, 255, 255, 128],
[99, 121, 210, 250, 201, 198, 255, 202, 128, 128, 128],
[23, 91, 163, 242, 170, 187, 247, 210, 255, 255, 128],
],
[
[1, 200, 246, 255, 234, 255, 128, 128, 128, 128, 128],
[109, 178, 241, 255, 231, 245, 255, 255, 128, 128, 128],
[44, 130, 201, 253, 205, 192, 255, 255, 128, 128, 128],
],
[
[1, 132, 239, 251, 219, 209, 255, 165, 128, 128, 128],
[94, 136, 225, 251, 218, 190, 255, 255, 128, 128, 128],
[22, 100, 174, 245, 186, 161, 255, 199, 128, 128, 128],
],
[
[1, 182, 249, 255, 232, 235, 128, 128, 128, 128, 128],
[124, 143, 241, 255, 227, 234, 128, 128, 128, 128, 128],
[35, 77, 181, 251, 193, 211, 255, 205, 128, 128, 128],
],
[
[1, 157, 247, 255, 236, 231, 255, 255, 128, 128, 128],
[121, 141, 235, 255, 225, 227, 255, 255, 128, 128, 128],
[45, 99, 188, 251, 195, 217, 255, 224, 128, 128, 128],
],
[
[1, 1, 251, 255, 213, 255, 128, 128, 128, 128, 128],
[203, 1, 248, 255, 255, 128, 128, 128, 128, 128, 128],
[137, 1, 177, 255, 224, 255, 128, 128, 128, 128, 128],
],
],
[
[
[253, 9, 248, 251, 207, 208, 255, 192, 128, 128, 128],
[175, 13, 224, 243, 193, 185, 249, 198, 255, 255, 128],
[73, 17, 171, 221, 161, 179, 236, 167, 255, 234, 128],
],
[
[1, 95, 247, 253, 212, 183, 255, 255, 128, 128, 128],
[239, 90, 244, 250, 211, 209, 255, 255, 128, 128, 128],
[155, 77, 195, 248, 188, 195, 255, 255, 128, 128, 128],
],
[
[1, 24, 239, 251, 218, 219, 255, 205, 128, 128, 128],
[201, 51, 219, 255, 196, 186, 128, 128, 128, 128, 128],
[69, 46, 190, 239, 201, 218, 255, 228, 128, 128, 128],
],
[
[1, 191, 251, 255, 255, 128, 128, 128, 128, 128, 128],
[223, 165, 249, 255, 213, 255, 128, 128, 128, 128, 128],
[141, 124, 248, 255, 255, 128, 128, 128, 128, 128, 128],
],
[
[1, 16, 248, 255, 255, 128, 128, 128, 128, 128, 128],
[190, 36, 230, 255, 236, 255, 128, 128, 128, 128, 128],
[149, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],
],
[
[1, 226, 255, 128, 128, 128, 128, 128, 128, 128, 128],
[247, 192, 255, 128, 128, 128, 128, 128, 128, 128, 128],
[240, 128, 255, 128, 128, 128, 128, 128, 128, 128, 128],
],
[
[1, 134, 252, 255, 255, 128, 128, 128, 128, 128, 128],
[213, 62, 250, 255, 255, 128, 128, 128, 128, 128, 128],
[55, 93, 255, 128, 128, 128, 128, 128, 128, 128, 128],
],
[
[128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],
[128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],
[128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],
],
],
[
[
[202, 24, 213, 235, 186, 191, 220, 160, 240, 175, 255],
[126, 38, 182, 232, 169, 184, 228, 174, 255, 187, 128],
[61, 46, 138, 219, 151, 178, 240, 170, 255, 216, 128],
],
[
[1, 112, 230, 250, 199, 191, 247, 159, 255, 255, 128],
[166, 109, 228, 252, 211, 215, 255, 174, 128, 128, 128],
[39, 77, 162, 232, 172, 180, 245, 178, 255, 255, 128],
],
[
[1, 52, 220, 246, 198, 199, 249, 220, 255, 255, 128],
[124, 74, 191, 243, 183, 193, 250, 221, 255, 255, 128],
[24, 71, 130, 219, 154, 170, 243, 182, 255, 255, 128],
],
[
[1, 182, 225, 249, 219, 240, 255, 224, 128, 128, 128],
[149, 150, 226, 252, 216, 205, 255, 171, 128, 128, 128],
[28, 108, 170, 242, 183, 194, 254, 223, 255, 255, 128],
],
[
[1, 81, 230, 252, 204, 203, 255, 192, 128, 128, 128],
[123, 102, 209, 247, 188, 196, 255, 233, 128, 128, 128],
[20, 95, 153, 243, 164, 173, 255, 203, 128, 128, 128],
],
[
[1, 222, 248, 255, 216, 213, 128, 128, 128, 128, 128],
[168, 175, 246, 252, 235, 205, 255, 255, 128, 128, 128],
[47, 116, 215, 255, 211, 212, 255, 255, 128, 128, 128],
],
[
[1, 121, 236, 253, 212, 214, 255, 255, 128, 128, 128],
[141, 84, 213, 252, 201, 202, 255, 219, 128, 128, 128],
[42, 80, 160, 240, 162, 185, 255, 205, 128, 128, 128],
],
[
[1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],
[244, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],
[238, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],
],
],
],
ci = [
[
[231, 120, 48, 89, 115, 113, 120, 152, 112],
[152, 179, 64, 126, 170, 118, 46, 70, 95],
[175, 69, 143, 80, 85, 82, 72, 155, 103],
[56, 58, 10, 171, 218, 189, 17, 13, 152],
[114, 26, 17, 163, 44, 195, 21, 10, 173],
[121, 24, 80, 195, 26, 62, 44, 64, 85],
[144, 71, 10, 38, 171, 213, 144, 34, 26],
[170, 46, 55, 19, 136, 160, 33, 206, 71],
[63, 20, 8, 114, 114, 208, 12, 9, 226],
[81, 40, 11, 96, 182, 84, 29, 16, 36],
],
[
[134, 183, 89, 137, 98, 101, 106, 165, 148],
[72, 187, 100, 130, 157, 111, 32, 75, 80],
[66, 102, 167, 99, 74, 62, 40, 234, 128],
[41, 53, 9, 178, 241, 141, 26, 8, 107],
[74, 43, 26, 146, 73, 166, 49, 23, 157],
[65, 38, 105, 160, 51, 52, 31, 115, 128],
[104, 79, 12, 27, 217, 255, 87, 17, 7],
[87, 68, 71, 44, 114, 51, 15, 186, 23],
[47, 41, 14, 110, 182, 183, 21, 17, 194],
[66, 45, 25, 102, 197, 189, 23, 18, 22],
],
[
[88, 88, 147, 150, 42, 46, 45, 196, 205],
[43, 97, 183, 117, 85, 38, 35, 179, 61],
[39, 53, 200, 87, 26, 21, 43, 232, 171],
[56, 34, 51, 104, 114, 102, 29, 93, 77],
[39, 28, 85, 171, 58, 165, 90, 98, 64],
[34, 22, 116, 206, 23, 34, 43, 166, 73],
[107, 54, 32, 26, 51, 1, 81, 43, 31],
[68, 25, 106, 22, 64, 171, 36, 225, 114],
[34, 19, 21, 102, 132, 188, 16, 76, 124],
[62, 18, 78, 95, 85, 57, 50, 48, 51],
],
[
[193, 101, 35, 159, 215, 111, 89, 46, 111],
[60, 148, 31, 172, 219, 228, 21, 18, 111],
[112, 113, 77, 85, 179, 255, 38, 120, 114],
[40, 42, 1, 196, 245, 209, 10, 25, 109],
[88, 43, 29, 140, 166, 213, 37, 43, 154],
[61, 63, 30, 155, 67, 45, 68, 1, 209],
[100, 80, 8, 43, 154, 1, 51, 26, 71],
[142, 78, 78, 16, 255, 128, 34, 197, 171],
[41, 40, 5, 102, 211, 183, 4, 1, 221],
[51, 50, 17, 168, 209, 192, 23, 25, 82],
],
[
[138, 31, 36, 171, 27, 166, 38, 44, 229],
[67, 87, 58, 169, 82, 115, 26, 59, 179],
[63, 59, 90, 180, 59, 166, 93, 73, 154],
[40, 40, 21, 116, 143, 209, 34, 39, 175],
[47, 15, 16, 183, 34, 223, 49, 45, 183],
[46, 17, 33, 183, 6, 98, 15, 32, 183],
[57, 46, 22, 24, 128, 1, 54, 17, 37],
[65, 32, 73, 115, 28, 128, 23, 128, 205],
[40, 3, 9, 115, 51, 192, 18, 6, 223],
[87, 37, 9, 115, 59, 77, 64, 21, 47],
],
[
[104, 55, 44, 218, 9, 54, 53, 130, 226],
[64, 90, 70, 205, 40, 41, 23, 26, 57],
[54, 57, 112, 184, 5, 41, 38, 166, 213],
[30, 34, 26, 133, 152, 116, 10, 32, 134],
[39, 19, 53, 221, 26, 114, 32, 73, 255],
[31, 9, 65, 234, 2, 15, 1, 118, 73],
[75, 32, 12, 51, 192, 255, 160, 43, 51],
[88, 31, 35, 67, 102, 85, 55, 186, 85],
[56, 21, 23, 111, 59, 205, 45, 37, 192],
[55, 38, 70, 124, 73, 102, 1, 34, 98],
],
[
[125, 98, 42, 88, 104, 85, 117, 175, 82],
[95, 84, 53, 89, 128, 100, 113, 101, 45],
[75, 79, 123, 47, 51, 128, 81, 171, 1],
[57, 17, 5, 71, 102, 57, 53, 41, 49],
[38, 33, 13, 121, 57, 73, 26, 1, 85],
[41, 10, 67, 138, 77, 110, 90, 47, 114],
[115, 21, 2, 10, 102, 255, 166, 23, 6],
[101, 29, 16, 10, 85, 128, 101, 196, 26],
[57, 18, 10, 102, 102, 213, 34, 20, 43],
[117, 20, 15, 36, 163, 128, 68, 1, 26],
],
[
[102, 61, 71, 37, 34, 53, 31, 243, 192],
[69, 60, 71, 38, 73, 119, 28, 222, 37],
[68, 45, 128, 34, 1, 47, 11, 245, 171],
[62, 17, 19, 70, 146, 85, 55, 62, 70],
[37, 43, 37, 154, 100, 163, 85, 160, 1],
[63, 9, 92, 136, 28, 64, 32, 201, 85],
[75, 15, 9, 9, 64, 255, 184, 119, 16],
[86, 6, 28, 5, 64, 255, 25, 248, 1],
[56, 8, 17, 132, 137, 255, 55, 116, 128],
[58, 15, 20, 82, 135, 57, 26, 121, 40],
],
[
[164, 50, 31, 137, 154, 133, 25, 35, 218],
[51, 103, 44, 131, 131, 123, 31, 6, 158],
[86, 40, 64, 135, 148, 224, 45, 183, 128],
[22, 26, 17, 131, 240, 154, 14, 1, 209],
[45, 16, 21, 91, 64, 222, 7, 1, 197],
[56, 21, 39, 155, 60, 138, 23, 102, 213],
[83, 12, 13, 54, 192, 255, 68, 47, 28],
[85, 26, 85, 85, 128, 128, 32, 146, 171],
[18, 11, 7, 63, 144, 171, 4, 4, 246],
[35, 27, 10, 146, 174, 171, 12, 26, 128],
],
[
[190, 80, 35, 99, 180, 80, 126, 54, 45],
[85, 126, 47, 87, 176, 51, 41, 20, 32],
[101, 75, 128, 139, 118, 146, 116, 128, 85],
[56, 41, 15, 176, 236, 85, 37, 9, 62],
[71, 30, 17, 119, 118, 255, 17, 18, 138],
[101, 38, 60, 138, 55, 70, 43, 26, 142],
[146, 36, 19, 30, 171, 255, 97, 27, 20],
[138, 45, 61, 62, 219, 1, 81, 188, 64],
[32, 41, 20, 117, 151, 142, 20, 21, 163],
[112, 19, 12, 61, 195, 128, 48, 4, 24],
],
],
ui = [
[
[
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
],
[
[176, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[223, 241, 252, 255, 255, 255, 255, 255, 255, 255, 255],
[249, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255],
],
[
[255, 244, 252, 255, 255, 255, 255, 255, 255, 255, 255],
[234, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],
[253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
],
[
[255, 246, 254, 255, 255, 255, 255, 255, 255, 255, 255],
[239, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],
[254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255],
],
[
[255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255],
[251, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
],
[
[255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],
[251, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],
[254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255],
],
[
[255, 254, 253, 255, 254, 255, 255, 255, 255, 255, 255],
[250, 255, 254, 255, 254, 255, 255, 255, 255, 255, 255],
[254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
],
[
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
],
],
[
[
[217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[225, 252, 241, 253, 255, 255, 254, 255, 255, 255, 255],
[234, 250, 241, 250, 253, 255, 253, 254, 255, 255, 255],
],
[
[255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[223, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],
[238, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255],
],
[
[255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255],
[249, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
],
[
[255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[247, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
],
[
[255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],
[252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
],
[
[255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],
[253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
],
[
[255, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255],
[250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
],
[
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
],
],
[
[
[186, 251, 250, 255, 255, 255, 255, 255, 255, 255, 255],
[234, 251, 244, 254, 255, 255, 255, 255, 255, 255, 255],
[251, 251, 243, 253, 254, 255, 254, 255, 255, 255, 255],
],
[
[255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],
[236, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],
[251, 253, 253, 254, 254, 255, 255, 255, 255, 255, 255],
],
[
[255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],
[254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
],
[
[255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
],
[
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
],
[
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
],
[
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
],
[
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
],
],
[
[
[248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[250, 254, 252, 254, 255, 255, 255, 255, 255, 255, 255],
[248, 254, 249, 253, 255, 255, 255, 255, 255, 255, 255],
],
[
[255, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255],
[246, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255],
[252, 254, 251, 254, 254, 255, 255, 255, 255, 255, 255],
],
[
[255, 254, 252, 255, 255, 255, 255, 255, 255, 255, 255],
[248, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255],
[253, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255],
],
[
[255, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255],
[245, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255],
[253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],
],
[
[255, 251, 253, 255, 255, 255, 255, 255, 255, 255, 255],
[252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],
],
[
[255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[249, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255],
],
[
[255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255],
[250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
],
[
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
],
],
],
hi = [0, 1, 2, 3, 6, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 0],
li = [],
fi2 = [],
di = [],
pi = 1,
gi = 2,
mi = [],
vi2 = []
vr('UpsampleRgbLinePair', Ar, 3),
vr('UpsampleBgrLinePair', xr, 3),
vr('UpsampleRgbaLinePair', Ir, 4),
vr('UpsampleBgraLinePair', kr, 4),
vr('UpsampleArgbLinePair', Pr, 4),
vr('UpsampleRgba4444LinePair', _r, 2),
vr('UpsampleRgb565LinePair', Sr, 2)
var bi = t4.UpsampleRgbLinePair,
yi = t4.UpsampleBgrLinePair,
wi = t4.UpsampleRgbaLinePair,
Ni = t4.UpsampleBgraLinePair,
Li = t4.UpsampleArgbLinePair,
Ai = t4.UpsampleRgba4444LinePair,
xi = t4.UpsampleRgb565LinePair,
Si = 16,
_i = 1 << (Si - 1),
Pi = -227,
ki = 482,
Ii = 6,
Fi = (256 << Ii) - 1,
Ci = 0,
ji = a2(256),
Oi = a2(256),
Bi = a2(256),
Mi = a2(256),
Ei = a2(ki - Pi),
qi = a2(ki - Pi)
Fr('YuvToRgbRow', Ar, 3),
Fr('YuvToBgrRow', xr, 3),
Fr('YuvToRgbaRow', Ir, 4),
Fr('YuvToBgraRow', kr, 4),
Fr('YuvToArgbRow', Pr, 4),
Fr('YuvToRgba4444Row', _r, 2),
Fr('YuvToRgb565Row', Sr, 2)
var Di = [
0, 4, 8, 12, 128, 132, 136, 140, 256, 260, 264, 268, 384, 388, 392, 396,
],
Ri = [0, 2, 8],
Ti = [8, 7, 6, 4, 4, 2, 2, 2, 1, 1, 1, 1],
Ui = 1
this.WebPDecodeRGBA = function (t5, r3, n3, i3, a3) {
var o3 = qn,
s3 = new rr2(),
c4 = new ot2()
;(s3.ba = c4),
(c4.S = o3),
(c4.width = [c4.width]),
(c4.height = [c4.height])
var u4 = c4.width,
h4 = c4.height,
l4 = new st2()
if (null == l4 || null == t5) var f4 = 2
else
e2(null != l4),
(f4 = Br(
t5,
r3,
n3,
l4.width,
l4.height,
l4.Pd,
l4.Qd,
l4.format,
null
))
if (
(0 != f4
? (u4 = 0)
: (null != u4 && (u4[0] = l4.width[0]),
null != h4 && (h4[0] = l4.height[0]),
(u4 = 1)),
u4)
) {
;(c4.width = c4.width[0]),
(c4.height = c4.height[0]),
null != i3 && (i3[0] = c4.width),
null != a3 && (a3[0] = c4.height)
t: {
if (
((i3 = new Gt2()),
((a3 = new nr()).data = t5),
(a3.w = r3),
(a3.ha = n3),
(a3.kd = 1),
(r3 = [0]),
e2(null != a3),
(0 ==
(t5 = Br(a3.data, a3.w, a3.ha, null, null, null, r3, null, a3)) ||
7 == t5) &&
r3[0] &&
(t5 = 4),
0 == (r3 = t5))
) {
if (
(e2(null != s3),
(i3.data = a3.data),
(i3.w = a3.w + a3.offset),
(i3.ha = a3.ha - a3.offset),
(i3.put = dt2),
(i3.ac = ft2),
(i3.bc = pt3),
(i3.ma = s3),
a3.xa)
) {
if (null == (t5 = kt2())) {
s3 = 1
break t
}
if (
(function (t6, r4) {
var n4 = [0],
i4 = [0],
a4 = [0]
e: for (;;) {
if (null == t6) return 0
if (null == r4) return (t6.a = 2), 0
if (
((t6.l = r4),
(t6.a = 0),
v5(t6.m, r4.data, r4.w, r4.ha),
!gt2(t6.m, n4, i4, a4))
) {
t6.a = 3
break e
}
if (
((t6.xb = gi),
(r4.width = n4[0]),
(r4.height = i4[0]),
!It2(n4[0], i4[0], 1, t6, null))
)
break e
return 1
}
return e2(0 != t6.a), 0
})(t5, i3)
) {
if ((i3 = 0 == (r3 = qr(i3.width, i3.height, s3.Oa, s3.ba)))) {
e: {
i3 = t5
r: for (;;) {
if (null == i3) {
i3 = 0
break e
}
if (
(e2(null != i3.s.yc),
e2(null != i3.s.Ya),
e2(0 < i3.s.Wb),
e2(null != (n3 = i3.l)),
e2(null != (a3 = n3.ma)),
0 != i3.xb)
) {
if (
((i3.ca = a3.ba),
(i3.tb = a3.tb),
e2(null != i3.ca),
!Mr(a3.Oa, n3, Rn))
) {
i3.a = 2
break r
}
if (!Ft2(i3, n3.width)) break r
if (n3.da) break r
if (
((n3.da || nt2(i3.ca.S)) && mr(),
11 > i3.ca.S ||
(alert('todo:WebPInitConvertARGBToYUV'),
null != i3.ca.f.kb.F && mr()),
i3.Pb &&
0 < i3.s.ua &&
null == i3.s.vb.X &&
!O2(i3.s.vb, i3.s.Wa.Xa))
) {
i3.a = 1
break r
}
i3.xb = 0
}
if (!_t2(i3, i3.V, i3.Ba, i3.c, i3.i, n3.o, Lt2)) break r
;(a3.Dc = i3.Ma), (i3 = 1)
break e
}
e2(0 != i3.a), (i3 = 0)
}
i3 = !i3
}
i3 && (r3 = t5.a)
} else r3 = t5.a
} else {
if (null == (t5 = new Yt2())) {
s3 = 1
break t
}
if (
((t5.Fa = a3.na), (t5.P = a3.P), (t5.qc = a3.Sa), Kt2(t5, i3))
) {
if (0 == (r3 = qr(i3.width, i3.height, s3.Oa, s3.ba))) {
if (
((t5.Aa = 0),
(n3 = s3.Oa),
e2(null != (a3 = t5)),
null != n3)
) {
if (
0 <
(u4 =
0 > (u4 = n3.Md)
? 0
: 100 < u4
? 255
: (255 * u4) / 100)
) {
for (h4 = l4 = 0; 4 > h4; ++h4)
12 > (f4 = a3.pb[h4]).lc &&
(f4.ia = (u4 * Ti[0 > f4.lc ? 0 : f4.lc]) >> 3),
(l4 |= f4.ia)
l4 && (alert('todo:VP8InitRandom'), (a3.ia = 1))
}
;(a3.Ga = n3.Id),
100 < a3.Ga ? (a3.Ga = 100) : 0 > a3.Ga && (a3.Ga = 0)
}
Qt2(t5, i3) || (r3 = t5.a)
}
} else r3 = t5.a
}
0 == r3 && null != s3.Oa && s3.Oa.fd && (r3 = Er(s3.ba))
}
s3 = r3
}
o3 = 0 != s3 ? null : 11 > o3 ? c4.f.RGBA.eb : c4.f.kb.y
} else o3 = null
return o3
}
var zi = [3, 4, 3, 4, 4, 2, 2, 4, 4, 4, 2, 1, 1]
}
function u2(t4, e3) {
for (var r3 = '', n3 = 0; n3 < 4; n3++) r3 += String.fromCharCode(t4[e3++])
return r3
}
function h2(t4, e3) {
return ((t4[e3 + 0] << 0) | (t4[e3 + 1] << 8) | (t4[e3 + 2] << 16)) >>> 0
}
function l2(t4, e3) {
return (
((t4[e3 + 0] << 0) |
(t4[e3 + 1] << 8) |
(t4[e3 + 2] << 16) |
(t4[e3 + 3] << 24)) >>>
0
)
}
new c2()
var f2 = [0],
d3 = [0],
p2 = [],
g2 = new c2(),
m2 = t3,
v4 = (function (t4, e3) {
var r3 = {},
n3 = 0,
i3 = false,
a3 = 0,
o3 = 0
if (
((r3.frames = []),
!(function (t5, e4, r4, n4) {
for (var i4 = 0; i4 < n4; i4++)
if (t5[e4 + i4] != r4.charCodeAt(i4)) return true
return false
})(t4, e3, 'RIFF', 4))
) {
var s3, c3
l2(t4, (e3 += 4))
for (e3 += 8; e3 < t4.length; ) {
var f3 = u2(t4, e3),
d4 = l2(t4, (e3 += 4))
e3 += 4
var p3 = d4 + (1 & d4)
switch (f3) {
case 'VP8 ':
case 'VP8L':
void 0 === r3.frames[n3] && (r3.frames[n3] = {})
;((v5 = r3.frames[n3]).src_off = i3 ? o3 : e3 - 8),
(v5.src_size = a3 + d4 + 8),
n3++,
i3 && ((i3 = false), (a3 = 0), (o3 = 0))
break
case 'VP8X':
;(v5 = r3.header = {}).feature_flags = t4[e3]
var g3 = e3 + 4
v5.canvas_width = 1 + h2(t4, g3)
g3 += 3
v5.canvas_height = 1 + h2(t4, g3)
g3 += 3
break
case 'ALPH':
;(i3 = true), (a3 = p3 + 8), (o3 = e3 - 8)
break
case 'ANIM':
;(v5 = r3.header).bgcolor = l2(t4, e3)
g3 = e3 + 4
v5.loop_count =
((s3 = t4)[(c3 = g3) + 0] << 0) | (s3[c3 + 1] << 8)
g3 += 2
break
case 'ANMF':
var m3, v5
;((v5 = r3.frames[n3] = {}).offset_x = 2 * h2(t4, e3)),
(e3 += 3),
(v5.offset_y = 2 * h2(t4, e3)),
(e3 += 3),
(v5.width = 1 + h2(t4, e3)),
(e3 += 3),
(v5.height = 1 + h2(t4, e3)),
(e3 += 3),
(v5.duration = h2(t4, e3)),
(e3 += 3),
(m3 = t4[e3++]),
(v5.dispose = 1 & m3),
(v5.blend = (m3 >> 1) & 1)
}
'ANMF' != f3 && (e3 += p3)
}
return r3
}
})(m2, 0)
;(v4.response = m2), (v4.rgbaoutput = true), (v4.dataurl = false)
var b2 = v4.header ? v4.header : null,
y2 = v4.frames ? v4.frames : null
if (b2) {
;(b2.loop_counter = b2.loop_count),
(f2 = [b2.canvas_height]),
(d3 = [b2.canvas_width])
for (var w2 = 0; w2 < y2.length && 0 != y2[w2].blend; w2++);
}
var N2 = y2[0],
L2 = g2.WebPDecodeRGBA(m2, N2.src_off, N2.src_size, d3, f2)
;(N2.rgba = L2), (N2.imgwidth = d3[0]), (N2.imgheight = f2[0])
for (var A2 = 0; A2 < d3[0] * f2[0] * 4; A2++) p2[A2] = L2[A2]
return (this.width = d3), (this.height = f2), (this.data = p2), this
}
!(function (t3) {
var r2 = function () {
return 'function' == typeof zlibSync
},
n2 = function (r3, n3, a3, h3) {
var l3 = 4,
f3 = s2
switch (h3) {
case t3.image_compression.FAST:
;(l3 = 1), (f3 = o2)
break
case t3.image_compression.MEDIUM:
;(l3 = 6), (f3 = c2)
break
case t3.image_compression.SLOW:
;(l3 = 9), (f3 = u2)
}
r3 = i2(r3, n3, a3, f3)
var d3 = zlibSync(r3, { level: l3 })
return t3.__addimage__.arrayBufferToBinaryString(d3)
},
i2 = function (t4, e2, r3, n3) {
for (
var i3,
a3,
o3,
s3 = t4.length / e2,
c3 = new Uint8Array(t4.length + s3),
u3 = l2(),
h3 = 0;
h3 < s3;
h3 += 1
) {
if (((o3 = h3 * e2), (i3 = t4.subarray(o3, o3 + e2)), n3))
c3.set(n3(i3, r3, a3), o3 + h3)
else {
for (var d3, p2 = u3.length, g2 = []; d3 < p2; d3 += 1)
g2[d3] = u3[d3](i3, r3, a3)
var m2 = f2(g2.concat())
c3.set(g2[m2], o3 + h3)
}
a3 = i3
}
return c3
},
a2 = function (t4) {
var e2 = Array.apply([], t4)
return e2.unshift(0), e2
},
o2 = function (t4, e2) {
var r3,
n3 = [],
i3 = t4.length
n3[0] = 1
for (var a3 = 0; a3 < i3; a3 += 1)
(r3 = t4[a3 - e2] || 0), (n3[a3 + 1] = (t4[a3] - r3 + 256) & 255)
return n3
},
s2 = function (t4, e2, r3) {
var n3,
i3 = [],
a3 = t4.length
i3[0] = 2
for (var o3 = 0; o3 < a3; o3 += 1)
(n3 = (r3 && r3[o3]) || 0), (i3[o3 + 1] = (t4[o3] - n3 + 256) & 255)
return i3
},
c2 = function (t4, e2, r3) {
var n3,
i3,
a3 = [],
o3 = t4.length
a3[0] = 3
for (var s3 = 0; s3 < o3; s3 += 1)
(n3 = t4[s3 - e2] || 0),
(i3 = (r3 && r3[s3]) || 0),
(a3[s3 + 1] = (t4[s3] + 256 - ((n3 + i3) >>> 1)) & 255)
return a3
},
u2 = function (t4, e2, r3) {
var n3,
i3,
a3,
o3,
s3 = [],
c3 = t4.length
s3[0] = 4
for (var u3 = 0; u3 < c3; u3 += 1)
(n3 = t4[u3 - e2] || 0),
(i3 = (r3 && r3[u3]) || 0),
(a3 = (r3 && r3[u3 - e2]) || 0),
(o3 = h2(n3, i3, a3)),
(s3[u3 + 1] = (t4[u3] - o3 + 256) & 255)
return s3
},
h2 = function (t4, e2, r3) {
if (t4 === e2 && e2 === r3) return t4
var n3 = Math.abs(e2 - r3),
i3 = Math.abs(t4 - r3),
a3 = Math.abs(t4 + e2 - r3 - r3)
return n3 <= i3 && n3 <= a3 ? t4 : i3 <= a3 ? e2 : r3
},
l2 = function () {
return [a2, o2, s2, c2, u2]
},
f2 = function (t4) {
var e2 = t4.map(function (t5) {
return t5.reduce(function (t6, e3) {
return t6 + Math.abs(e3)
}, 0)
})
return e2.indexOf(Math.min.apply(null, e2))
}
t3.processPNG = function (e2, i3, a3, o3) {
var s3,
c3,
u3,
h3,
l3,
f3,
d3,
p2,
g2,
m2,
v4,
b2,
y2,
w2,
N2,
L2 = this.decode.FLATE_DECODE,
A2 = ''
if (
(this.__addimage__.isArrayBuffer(e2) && (e2 = new Uint8Array(e2)),
this.__addimage__.isArrayBufferView(e2))
) {
if (
((e2 = (u3 = new Kt(e2)).imgData),
(c3 = u3.bits),
(s3 = u3.colorSpace),
(l3 = u3.colors),
-1 !== [4, 6].indexOf(u3.colorType))
) {
if (8 === u3.bits) {
;(g2 = (p2 =
32 == u3.pixelBitlength
? new Uint32Array(u3.decodePixels().buffer)
: 16 == u3.pixelBitlength
? new Uint16Array(u3.decodePixels().buffer)
: new Uint8Array(u3.decodePixels().buffer)).length),
(v4 = new Uint8Array(g2 * u3.colors)),
(m2 = new Uint8Array(g2))
var x2,
S2 = u3.pixelBitlength - u3.bits
for (w2 = 0, N2 = 0; w2 < g2; w2++) {
for (y2 = p2[w2], x2 = 0; x2 < S2; )
(v4[N2++] = (y2 >>> x2) & 255), (x2 += u3.bits)
m2[w2] = (y2 >>> x2) & 255
}
}
if (16 === u3.bits) {
;(g2 = (p2 = new Uint32Array(u3.decodePixels().buffer)).length),
(v4 = new Uint8Array(g2 * (32 / u3.pixelBitlength) * u3.colors)),
(m2 = new Uint8Array(g2 * (32 / u3.pixelBitlength))),
(b2 = u3.colors > 1),
(w2 = 0),
(N2 = 0)
for (var _2 = 0; w2 < g2; )
(y2 = p2[w2++]),
(v4[N2++] = (y2 >>> 0) & 255),
b2 &&
((v4[N2++] = (y2 >>> 16) & 255),
(y2 = p2[w2++]),
(v4[N2++] = (y2 >>> 0) & 255)),
(m2[_2++] = (y2 >>> 16) & 255)
c3 = 8
}
o3 !== t3.image_compression.NONE && r2()
? ((e2 = n2(v4, u3.width * u3.colors, u3.colors, o3)),
(d3 = n2(m2, u3.width, 1, o3)))
: ((e2 = v4), (d3 = m2), (L2 = void 0))
}
if (
3 === u3.colorType &&
((s3 = this.color_spaces.INDEXED),
(f3 = u3.palette),
u3.transparency.indexed)
) {
var P2 = u3.transparency.indexed,
k2 = 0
for (w2 = 0, g2 = P2.length; w2 < g2; ++w2) k2 += P2[w2]
if ((k2 /= 255) === g2 - 1 && -1 !== P2.indexOf(0)) h3 = [P2.indexOf(0)]
else if (k2 !== g2) {
for (
p2 = u3.decodePixels(),
m2 = new Uint8Array(p2.length),
w2 = 0,
g2 = p2.length;
w2 < g2;
w2++
)
m2[w2] = P2[p2[w2]]
d3 = n2(m2, u3.width, 1)
}
}
var I2 = (function (e3) {
var r3
switch (e3) {
case t3.image_compression.FAST:
r3 = 11
break
case t3.image_compression.MEDIUM:
r3 = 13
break
case t3.image_compression.SLOW:
r3 = 14
break
default:
r3 = 12
}
return r3
})(o3)
return (
L2 === this.decode.FLATE_DECODE && (A2 = '/Predictor ' + I2 + ' '),
(A2 +=
'/Colors ' +
l3 +
' /BitsPerComponent ' +
c3 +
' /Columns ' +
u3.width),
(this.__addimage__.isArrayBuffer(e2) ||
this.__addimage__.isArrayBufferView(e2)) &&
(e2 = this.__addimage__.arrayBufferToBinaryString(e2)),
((d3 && this.__addimage__.isArrayBuffer(d3)) ||
this.__addimage__.isArrayBufferView(d3)) &&
(d3 = this.__addimage__.arrayBufferToBinaryString(d3)),
{
alias: a3,
data: e2,
index: i3,
filter: L2,
decodeParameters: A2,
transparency: h3,
palette: f3,
sMask: d3,
predictor: I2,
width: u3.width,
height: u3.height,
bitsPerComponent: c3,
colorSpace: s3,
}
)
}
}
})(E$1.API),
(function (t3) {
;(t3.processGIF89A = function (e2, r2, n2, i2) {
var a2 = new Zt(e2),
o2 = a2.width,
s2 = a2.height,
c2 = []
a2.decodeAndBlitFrameRGBA(0, c2)
var u2 = { data: c2, width: o2, height: s2 },
h2 = new Qt(100).encode(u2, 100)
return t3.processJPEG.call(this, h2, r2, n2, i2)
}),
(t3.processGIF87A = t3.processGIF89A)
})(E$1.API),
(te.prototype.parseHeader = function () {
if (
((this.fileSize = this.datav.getUint32(this.pos, true)),
(this.pos += 4),
(this.reserved = this.datav.getUint32(this.pos, true)),
(this.pos += 4),
(this.offset = this.datav.getUint32(this.pos, true)),
(this.pos += 4),
(this.headerSize = this.datav.getUint32(this.pos, true)),
(this.pos += 4),
(this.width = this.datav.getUint32(this.pos, true)),
(this.pos += 4),
(this.height = this.datav.getInt32(this.pos, true)),
(this.pos += 4),
(this.planes = this.datav.getUint16(this.pos, true)),
(this.pos += 2),
(this.bitPP = this.datav.getUint16(this.pos, true)),
(this.pos += 2),
(this.compress = this.datav.getUint32(this.pos, true)),
(this.pos += 4),
(this.rawSize = this.datav.getUint32(this.pos, true)),
(this.pos += 4),
(this.hr = this.datav.getUint32(this.pos, true)),
(this.pos += 4),
(this.vr = this.datav.getUint32(this.pos, true)),
(this.pos += 4),
(this.colors = this.datav.getUint32(this.pos, true)),
(this.pos += 4),
(this.importantColors = this.datav.getUint32(this.pos, true)),
(this.pos += 4),
16 === this.bitPP && this.is_with_alpha && (this.bitPP = 15),
this.bitPP < 15)
) {
var t3 = 0 === this.colors ? 1 << this.bitPP : this.colors
this.palette = new Array(t3)
for (var e2 = 0; e2 < t3; e2++) {
var r2 = this.datav.getUint8(this.pos++, true),
n2 = this.datav.getUint8(this.pos++, true),
i2 = this.datav.getUint8(this.pos++, true),
a2 = this.datav.getUint8(this.pos++, true)
this.palette[e2] = { red: i2, green: n2, blue: r2, quad: a2 }
}
}
this.height < 0 && ((this.height *= -1), (this.bottom_up = false))
}),
(te.prototype.parseBGR = function () {
this.pos = this.offset
try {
var t3 = 'bit' + this.bitPP,
e2 = this.width * this.height * 4
;(this.data = new Uint8Array(e2)), this[t3]()
} catch (t4) {
a$2.log('bit decode error:' + t4)
}
}),
(te.prototype.bit1 = function () {
var t3,
e2 = Math.ceil(this.width / 8),
r2 = e2 % 4
for (t3 = this.height - 1; t3 >= 0; t3--) {
for (
var n2 = this.bottom_up ? t3 : this.height - 1 - t3, i2 = 0;
i2 < e2;
i2++
)
for (
var a2 = this.datav.getUint8(this.pos++, true),
o2 = n2 * this.width * 4 + 8 * i2 * 4,
s2 = 0;
s2 < 8 && 8 * i2 + s2 < this.width;
s2++
) {
var c2 = this.palette[(a2 >> (7 - s2)) & 1]
;(this.data[o2 + 4 * s2] = c2.blue),
(this.data[o2 + 4 * s2 + 1] = c2.green),
(this.data[o2 + 4 * s2 + 2] = c2.red),
(this.data[o2 + 4 * s2 + 3] = 255)
}
0 !== r2 && (this.pos += 4 - r2)
}
}),
(te.prototype.bit4 = function () {
for (
var t3 = Math.ceil(this.width / 2), e2 = t3 % 4, r2 = this.height - 1;
r2 >= 0;
r2--
) {
for (
var n2 = this.bottom_up ? r2 : this.height - 1 - r2, i2 = 0;
i2 < t3;
i2++
) {
var a2 = this.datav.getUint8(this.pos++, true),
o2 = n2 * this.width * 4 + 2 * i2 * 4,
s2 = a2 >> 4,
c2 = 15 & a2,
u2 = this.palette[s2]
if (
((this.data[o2] = u2.blue),
(this.data[o2 + 1] = u2.green),
(this.data[o2 + 2] = u2.red),
(this.data[o2 + 3] = 255),
2 * i2 + 1 >= this.width)
)
break
;(u2 = this.palette[c2]),
(this.data[o2 + 4] = u2.blue),
(this.data[o2 + 4 + 1] = u2.green),
(this.data[o2 + 4 + 2] = u2.red),
(this.data[o2 + 4 + 3] = 255)
}
0 !== e2 && (this.pos += 4 - e2)
}
}),
(te.prototype.bit8 = function () {
for (var t3 = this.width % 4, e2 = this.height - 1; e2 >= 0; e2--) {
for (
var r2 = this.bottom_up ? e2 : this.height - 1 - e2, n2 = 0;
n2 < this.width;
n2++
) {
var i2 = this.datav.getUint8(this.pos++, true),
a2 = r2 * this.width * 4 + 4 * n2
if (i2 < this.palette.length) {
var o2 = this.palette[i2]
;(this.data[a2] = o2.red),
(this.data[a2 + 1] = o2.green),
(this.data[a2 + 2] = o2.blue),
(this.data[a2 + 3] = 255)
} else
(this.data[a2] = 255),
(this.data[a2 + 1] = 255),
(this.data[a2 + 2] = 255),
(this.data[a2 + 3] = 255)
}
0 !== t3 && (this.pos += 4 - t3)
}
}),
(te.prototype.bit15 = function () {
for (
var t3 = this.width % 3, e2 = parseInt('11111', 2), r2 = this.height - 1;
r2 >= 0;
r2--
) {
for (
var n2 = this.bottom_up ? r2 : this.height - 1 - r2, i2 = 0;
i2 < this.width;
i2++
) {
var a2 = this.datav.getUint16(this.pos, true)
this.pos += 2
var o2 = (((a2 & e2) / e2) * 255) | 0,
s2 = ((((a2 >> 5) & e2) / e2) * 255) | 0,
c2 = ((((a2 >> 10) & e2) / e2) * 255) | 0,
u2 = a2 >> 15 ? 255 : 0,
h2 = n2 * this.width * 4 + 4 * i2
;(this.data[h2] = c2),
(this.data[h2 + 1] = s2),
(this.data[h2 + 2] = o2),
(this.data[h2 + 3] = u2)
}
this.pos += t3
}
}),
(te.prototype.bit16 = function () {
for (
var t3 = this.width % 3,
e2 = parseInt('11111', 2),
r2 = parseInt('111111', 2),
n2 = this.height - 1;
n2 >= 0;
n2--
) {
for (
var i2 = this.bottom_up ? n2 : this.height - 1 - n2, a2 = 0;
a2 < this.width;
a2++
) {
var o2 = this.datav.getUint16(this.pos, true)
this.pos += 2
var s2 = (((o2 & e2) / e2) * 255) | 0,
c2 = ((((o2 >> 5) & r2) / r2) * 255) | 0,
u2 = (((o2 >> 11) / e2) * 255) | 0,
h2 = i2 * this.width * 4 + 4 * a2
;(this.data[h2] = u2),
(this.data[h2 + 1] = c2),
(this.data[h2 + 2] = s2),
(this.data[h2 + 3] = 255)
}
this.pos += t3
}
}),
(te.prototype.bit24 = function () {
for (var t3 = this.height - 1; t3 >= 0; t3--) {
for (
var e2 = this.bottom_up ? t3 : this.height - 1 - t3, r2 = 0;
r2 < this.width;
r2++
) {
var n2 = this.datav.getUint8(this.pos++, true),
i2 = this.datav.getUint8(this.pos++, true),
a2 = this.datav.getUint8(this.pos++, true),
o2 = e2 * this.width * 4 + 4 * r2
;(this.data[o2] = a2),
(this.data[o2 + 1] = i2),
(this.data[o2 + 2] = n2),
(this.data[o2 + 3] = 255)
}
this.pos += this.width % 4
}
}),
(te.prototype.bit32 = function () {
for (var t3 = this.height - 1; t3 >= 0; t3--)
for (
var e2 = this.bottom_up ? t3 : this.height - 1 - t3, r2 = 0;
r2 < this.width;
r2++
) {
var n2 = this.datav.getUint8(this.pos++, true),
i2 = this.datav.getUint8(this.pos++, true),
a2 = this.datav.getUint8(this.pos++, true),
o2 = this.datav.getUint8(this.pos++, true),
s2 = e2 * this.width * 4 + 4 * r2
;(this.data[s2] = a2),
(this.data[s2 + 1] = i2),
(this.data[s2 + 2] = n2),
(this.data[s2 + 3] = o2)
}
}),
(te.prototype.getData = function () {
return this.data
}),
(function (t3) {
t3.processBMP = function (e2, r2, n2, i2) {
var a2 = new te(e2, false),
o2 = a2.width,
s2 = a2.height,
c2 = { data: a2.getData(), width: o2, height: s2 },
u2 = new Qt(100).encode(c2, 100)
return t3.processJPEG.call(this, u2, r2, n2, i2)
}
})(E$1.API),
(ee.prototype.getData = function () {
return this.data
}),
(function (t3) {
t3.processWEBP = function (e2, r2, n2, i2) {
var a2 = new ee(e2),
o2 = a2.width,
s2 = a2.height,
c2 = { data: a2.getData(), width: o2, height: s2 },
u2 = new Qt(100).encode(c2, 100)
return t3.processJPEG.call(this, u2, r2, n2, i2)
}
})(E$1.API),
(E$1.API.processRGBA = function (t3, e2, r2) {
for (
var n2 = t3.data,
i2 = n2.length,
a2 = new Uint8Array((i2 / 4) * 3),
o2 = new Uint8Array(i2 / 4),
s2 = 0,
c2 = 0,
u2 = 0;
u2 < i2;
u2 += 4
) {
var h2 = n2[u2],
l2 = n2[u2 + 1],
f2 = n2[u2 + 2],
d3 = n2[u2 + 3]
;(a2[s2++] = h2), (a2[s2++] = l2), (a2[s2++] = f2), (o2[c2++] = d3)
}
var p2 = this.__addimage__.arrayBufferToBinaryString(a2)
return {
alpha: this.__addimage__.arrayBufferToBinaryString(o2),
data: p2,
index: e2,
alias: r2,
colorSpace: 'DeviceRGB',
bitsPerComponent: 8,
width: t3.width,
height: t3.height,
}
}),
(E$1.API.setLanguage = function (t3) {
return (
void 0 === this.internal.languageSettings &&
((this.internal.languageSettings = {}),
(this.internal.languageSettings.isSubscribed = false)),
void 0 !==
{
af: 'Afrikaans',
sq: 'Albanian',
ar: 'Arabic (Standard)',
'ar-DZ': 'Arabic (Algeria)',
'ar-BH': 'Arabic (Bahrain)',
'ar-EG': 'Arabic (Egypt)',
'ar-IQ': 'Arabic (Iraq)',
'ar-JO': 'Arabic (Jordan)',
'ar-KW': 'Arabic (Kuwait)',
'ar-LB': 'Arabic (Lebanon)',
'ar-LY': 'Arabic (Libya)',
'ar-MA': 'Arabic (Morocco)',
'ar-OM': 'Arabic (Oman)',
'ar-QA': 'Arabic (Qatar)',
'ar-SA': 'Arabic (Saudi Arabia)',
'ar-SY': 'Arabic (Syria)',
'ar-TN': 'Arabic (Tunisia)',
'ar-AE': 'Arabic (U.A.E.)',
'ar-YE': 'Arabic (Yemen)',
an: 'Aragonese',
hy: 'Armenian',
as: 'Assamese',
ast: 'Asturian',
az: 'Azerbaijani',
eu: 'Basque',
be: 'Belarusian',
bn: 'Bengali',
bs: 'Bosnian',
br: 'Breton',
bg: 'Bulgarian',
my: 'Burmese',
ca: 'Catalan',
ch: 'Chamorro',
ce: 'Chechen',
zh: 'Chinese',
'zh-HK': 'Chinese (Hong Kong)',
'zh-CN': 'Chinese (PRC)',
'zh-SG': 'Chinese (Singapore)',
'zh-TW': 'Chinese (Taiwan)',
cv: 'Chuvash',
co: 'Corsican',
cr: 'Cree',
hr: 'Croatian',
cs: 'Czech',
da: 'Danish',
nl: 'Dutch (Standard)',
'nl-BE': 'Dutch (Belgian)',
en: 'English',
'en-AU': 'English (Australia)',
'en-BZ': 'English (Belize)',
'en-CA': 'English (Canada)',
'en-IE': 'English (Ireland)',
'en-JM': 'English (Jamaica)',
'en-NZ': 'English (New Zealand)',
'en-PH': 'English (Philippines)',
'en-ZA': 'English (South Africa)',
'en-TT': 'English (Trinidad & Tobago)',
'en-GB': 'English (United Kingdom)',
'en-US': 'English (United States)',
'en-ZW': 'English (Zimbabwe)',
eo: 'Esperanto',
et: 'Estonian',
fo: 'Faeroese',
fj: 'Fijian',
fi: 'Finnish',
fr: 'French (Standard)',
'fr-BE': 'French (Belgium)',
'fr-CA': 'French (Canada)',
'fr-FR': 'French (France)',
'fr-LU': 'French (Luxembourg)',
'fr-MC': 'French (Monaco)',
'fr-CH': 'French (Switzerland)',
fy: 'Frisian',
fur: 'Friulian',
gd: 'Gaelic (Scots)',
'gd-IE': 'Gaelic (Irish)',
gl: 'Galacian',
ka: 'Georgian',
de: 'German (Standard)',
'de-AT': 'German (Austria)',
'de-DE': 'German (Germany)',
'de-LI': 'German (Liechtenstein)',
'de-LU': 'German (Luxembourg)',
'de-CH': 'German (Switzerland)',
el: 'Greek',
gu: 'Gujurati',
ht: 'Haitian',
he: 'Hebrew',
hi: 'Hindi',
hu: 'Hungarian',
is: 'Icelandic',
id: 'Indonesian',
iu: 'Inuktitut',
ga: 'Irish',
it: 'Italian (Standard)',
'it-CH': 'Italian (Switzerland)',
ja: 'Japanese',
kn: 'Kannada',
ks: 'Kashmiri',
kk: 'Kazakh',
km: 'Khmer',
ky: 'Kirghiz',
tlh: 'Klingon',
ko: 'Korean',
'ko-KP': 'Korean (North Korea)',
'ko-KR': 'Korean (South Korea)',
la: 'Latin',
lv: 'Latvian',
lt: 'Lithuanian',
lb: 'Luxembourgish',
mk: 'North Macedonia',
ms: 'Malay',
ml: 'Malayalam',
mt: 'Maltese',
mi: 'Maori',
mr: 'Marathi',
mo: 'Moldavian',
nv: 'Navajo',
ng: 'Ndonga',
ne: 'Nepali',
no: 'Norwegian',
nb: 'Norwegian (Bokmal)',
nn: 'Norwegian (Nynorsk)',
oc: 'Occitan',
or: 'Oriya',
om: 'Oromo',
fa: 'Persian',
'fa-IR': 'Persian/Iran',
pl: 'Polish',
pt: 'Portuguese',
'pt-BR': 'Portuguese (Brazil)',
pa: 'Punjabi',
'pa-IN': 'Punjabi (India)',
'pa-PK': 'Punjabi (Pakistan)',
qu: 'Quechua',
rm: 'Rhaeto-Romanic',
ro: 'Romanian',
'ro-MO': 'Romanian (Moldavia)',
ru: 'Russian',
'ru-MO': 'Russian (Moldavia)',
sz: 'Sami (Lappish)',
sg: 'Sango',
sa: 'Sanskrit',
sc: 'Sardinian',
sd: 'Sindhi',
si: 'Singhalese',
sr: 'Serbian',
sk: 'Slovak',
sl: 'Slovenian',
so: 'Somani',
sb: 'Sorbian',
es: 'Spanish',
'es-AR': 'Spanish (Argentina)',
'es-BO': 'Spanish (Bolivia)',
'es-CL': 'Spanish (Chile)',
'es-CO': 'Spanish (Colombia)',
'es-CR': 'Spanish (Costa Rica)',
'es-DO': 'Spanish (Dominican Republic)',
'es-EC': 'Spanish (Ecuador)',
'es-SV': 'Spanish (El Salvador)',
'es-GT': 'Spanish (Guatemala)',
'es-HN': 'Spanish (Honduras)',
'es-MX': 'Spanish (Mexico)',
'es-NI': 'Spanish (Nicaragua)',
'es-PA': 'Spanish (Panama)',
'es-PY': 'Spanish (Paraguay)',
'es-PE': 'Spanish (Peru)',
'es-PR': 'Spanish (Puerto Rico)',
'es-ES': 'Spanish (Spain)',
'es-UY': 'Spanish (Uruguay)',
'es-VE': 'Spanish (Venezuela)',
sx: 'Sutu',
sw: 'Swahili',
sv: 'Swedish',
'sv-FI': 'Swedish (Finland)',
'sv-SV': 'Swedish (Sweden)',
ta: 'Tamil',
tt: 'Tatar',
te: 'Teluga',
th: 'Thai',
tig: 'Tigre',
ts: 'Tsonga',
tn: 'Tswana',
tr: 'Turkish',
tk: 'Turkmen',
uk: 'Ukrainian',
hsb: 'Upper Sorbian',
ur: 'Urdu',
ve: 'Venda',
vi: 'Vietnamese',
vo: 'Volapuk',
wa: 'Walloon',
cy: 'Welsh',
xh: 'Xhosa',
ji: 'Yiddish',
zu: 'Zulu',
}[t3] &&
((this.internal.languageSettings.languageCode = t3),
false === this.internal.languageSettings.isSubscribed &&
(this.internal.events.subscribe('putCatalog', function () {
this.internal.write(
'/Lang (' + this.internal.languageSettings.languageCode + ')'
)
}),
(this.internal.languageSettings.isSubscribed = true))),
this
)
}),
(Vt = E$1.API),
(Gt = Vt.getCharWidthsArray =
function (e2, r2) {
var n2,
i2,
a2 = (r2 = r2 || {}).font || this.internal.getFont(),
o2 = r2.fontSize || this.internal.getFontSize(),
s2 = r2.charSpace || this.internal.getCharSpace(),
c2 = r2.widths ? r2.widths : a2.metadata.Unicode.widths,
u2 = c2.fof ? c2.fof : 1,
h2 = r2.kerning ? r2.kerning : a2.metadata.Unicode.kerning,
l2 = h2.fof ? h2.fof : 1,
f2 = false !== r2.doKerning,
d3 = 0,
p2 = e2.length,
g2 = 0,
m2 = c2[0] || u2,
v4 = []
for (n2 = 0; n2 < p2; n2++)
(i2 = e2.charCodeAt(n2)),
'function' == typeof a2.metadata.widthOfString
? v4.push(
(a2.metadata.widthOfGlyph(a2.metadata.characterToGlyph(i2)) +
s2 * (1e3 / o2) || 0) / 1e3
)
: ((d3 =
f2 &&
'object' === _typeof$3(h2[i2]) &&
!isNaN(parseInt(h2[i2][g2], 10))
? h2[i2][g2] / l2
: 0),
v4.push((c2[i2] || m2) / u2 + d3)),
(g2 = i2)
return v4
}),
(Yt = Vt.getStringUnitWidth =
function (t3, e2) {
var r2 = (e2 = e2 || {}).fontSize || this.internal.getFontSize(),
n2 = e2.font || this.internal.getFont(),
i2 = e2.charSpace || this.internal.getCharSpace()
return (
Vt.processArabic && (t3 = Vt.processArabic(t3)),
'function' == typeof n2.metadata.widthOfString
? n2.metadata.widthOfString(t3, r2, i2) / r2
: Gt.apply(this, arguments).reduce(function (t4, e3) {
return t4 + e3
}, 0)
)
}),
(Jt = function (t3, e2, r2, n2) {
for (
var i2 = [], a2 = 0, o2 = t3.length, s2 = 0;
a2 !== o2 && s2 + e2[a2] < r2;
)
(s2 += e2[a2]), a2++
i2.push(t3.slice(0, a2))
var c2 = a2
for (s2 = 0; a2 !== o2; )
s2 + e2[a2] > n2 && (i2.push(t3.slice(c2, a2)), (s2 = 0), (c2 = a2)),
(s2 += e2[a2]),
a2++
return c2 !== a2 && i2.push(t3.slice(c2, a2)), i2
}),
(Xt = function (t3, e2, r2) {
r2 || (r2 = {})
var n2,
i2,
a2,
o2,
s2,
c2,
u2,
h2 = [],
l2 = [h2],
f2 = r2.textIndent || 0,
d3 = 0,
p2 = 0,
g2 = t3.split(' '),
m2 = Gt.apply(this, [' ', r2])[0]
if ((c2 = -1 === r2.lineIndent ? g2[0].length + 2 : r2.lineIndent || 0)) {
var v4 = Array(c2).join(' '),
b2 = []
g2.map(function (t4) {
;(t4 = t4.split(/\s*\n/)).length > 1
? (b2 = b2.concat(
t4.map(function (t5, e3) {
return (e3 && t5.length ? '\n' : '') + t5
})
))
: b2.push(t4[0])
}),
(g2 = b2),
(c2 = Yt.apply(this, [v4, r2]))
}
for (a2 = 0, o2 = g2.length; a2 < o2; a2++) {
var y2 = 0
if (
((n2 = g2[a2]),
c2 && '\n' == n2[0] && ((n2 = n2.substr(1)), (y2 = 1)),
f2 +
d3 +
(p2 = (i2 = Gt.apply(this, [n2, r2])).reduce(function (t4, e3) {
return t4 + e3
}, 0)) >
e2 || y2)
) {
if (p2 > e2) {
for (
s2 = Jt.apply(this, [n2, i2, e2 - (f2 + d3), e2]),
h2.push(s2.shift()),
h2 = [s2.pop()];
s2.length;
)
l2.push([s2.shift()])
p2 = i2
.slice(n2.length - (h2[0] ? h2[0].length : 0))
.reduce(function (t4, e3) {
return t4 + e3
}, 0)
} else h2 = [n2]
l2.push(h2), (f2 = p2 + c2), (d3 = m2)
} else h2.push(n2), (f2 += d3 + p2), (d3 = m2)
}
return (
(u2 = c2
? function (t4, e3) {
return (e3 ? v4 : '') + t4.join(' ')
}
: function (t4) {
return t4.join(' ')
}),
l2.map(u2)
)
}),
(Vt.splitTextToSize = function (t3, e2, r2) {
var n2,
i2 = (r2 = r2 || {}).fontSize || this.internal.getFontSize(),
a2 = function (t4) {
if (t4.widths && t4.kerning)
return { widths: t4.widths, kerning: t4.kerning }
var e3 = this.internal.getFont(t4.fontName, t4.fontStyle)
return e3.metadata.Unicode
? {
widths: e3.metadata.Unicode.widths || { 0: 1 },
kerning: e3.metadata.Unicode.kerning || {},
}
: {
font: e3.metadata,
fontSize: this.internal.getFontSize(),
charSpace: this.internal.getCharSpace(),
}
}.call(this, r2)
n2 = Array.isArray(t3) ? t3 : String(t3).split(/\r?\n/)
var o2 = (1 * this.internal.scaleFactor * e2) / i2
;(a2.textIndent = r2.textIndent
? (1 * r2.textIndent * this.internal.scaleFactor) / i2
: 0),
(a2.lineIndent = r2.lineIndent)
var s2,
c2,
u2 = []
for (s2 = 0, c2 = n2.length; s2 < c2; s2++)
u2 = u2.concat(Xt.apply(this, [n2[s2], o2, a2]))
return u2
}),
(function (e2) {
e2.__fontmetrics__ = e2.__fontmetrics__ || {}
for (
var r2 = 'klmnopqrstuvwxyz', n2 = {}, i2 = {}, a2 = 0;
a2 < r2.length;
a2++
)
(n2[r2[a2]] = '0123456789abcdef'[a2]),
(i2['0123456789abcdef'[a2]] = r2[a2])
var o2 = function (t3) {
return '0x' + parseInt(t3, 10).toString(16)
},
s2 = (e2.__fontmetrics__.compress = function (e3) {
var r3,
n3,
a3,
c3,
u3 = ['{']
for (var h3 in e3) {
if (
((r3 = e3[h3]),
isNaN(parseInt(h3, 10))
? (n3 = "'" + h3 + "'")
: ((h3 = parseInt(h3, 10)),
(n3 = (n3 = o2(h3).slice(2)).slice(0, -1) + i2[n3.slice(-1)])),
'number' == typeof r3)
)
r3 < 0
? ((a3 = o2(r3).slice(3)), (c3 = '-'))
: ((a3 = o2(r3).slice(2)), (c3 = '')),
(a3 = c3 + a3.slice(0, -1) + i2[a3.slice(-1)])
else {
if ('object' !== _typeof$3(r3))
throw new Error(
"Don't know what to do with value type " + _typeof$3(r3) + '.'
)
a3 = s2(r3)
}
u3.push(n3 + a3)
}
return u3.push('}'), u3.join('')
}),
c2 = (e2.__fontmetrics__.uncompress = function (t3) {
if ('string' != typeof t3)
throw new Error('Invalid argument passed to uncompress.')
for (
var e3,
r3,
i3,
a3,
o3 = {},
s3 = 1,
c3 = o3,
u3 = [],
h3 = '',
l3 = '',
f2 = t3.length - 1,
d3 = 1;
d3 < f2;
d3 += 1
)
"'" == (a3 = t3[d3])
? e3
? ((i3 = e3.join('')), (e3 = void 0))
: (e3 = [])
: e3
? e3.push(a3)
: '{' == a3
? (u3.push([c3, i3]), (c3 = {}), (i3 = void 0))
: '}' == a3
? (((r3 = u3.pop())[0][r3[1]] = c3), (i3 = void 0), (c3 = r3[0]))
: '-' == a3
? (s3 = -1)
: void 0 === i3
? n2.hasOwnProperty(a3)
? ((h3 += n2[a3]),
(i3 = parseInt(h3, 16) * s3),
(s3 = 1),
(h3 = ''))
: (h3 += a3)
: n2.hasOwnProperty(a3)
? ((l3 += n2[a3]),
(c3[i3] = parseInt(l3, 16) * s3),
(s3 = 1),
(i3 = void 0),
(l3 = ''))
: (l3 += a3)
return o3
}),
u2 = {
codePages: ['WinAnsiEncoding'],
WinAnsiEncoding: c2(
'{19m8n201n9q201o9r201s9l201t9m201u8m201w9n201x9o201y8o202k8q202l8r202m9p202q8p20aw8k203k8t203t8v203u9v2cq8s212m9t15m8w15n9w2dw9s16k8u16l9u17s9z17x8y17y9y}'
),
},
h2 = {
Unicode: {
Courier: u2,
'Courier-Bold': u2,
'Courier-BoldOblique': u2,
'Courier-Oblique': u2,
Helvetica: u2,
'Helvetica-Bold': u2,
'Helvetica-BoldOblique': u2,
'Helvetica-Oblique': u2,
'Times-Roman': u2,
'Times-Bold': u2,
'Times-BoldItalic': u2,
'Times-Italic': u2,
},
},
l2 = {
Unicode: {
'Courier-Oblique': c2("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),
'Times-BoldItalic': c2(
"{'widths'{k3o2q4ycx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2r202m2n2n3m2o3m2p5n202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5n4l4m4m4m4n4m4o4s4p4m4q4m4r4s4s4y4t2r4u3m4v4m4w3x4x5t4y4s4z4s5k3x5l4s5m4m5n3r5o3x5p4s5q4m5r5t5s4m5t3x5u3x5v2l5w1w5x2l5y3t5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q2l6r3m6s3r6t1w6u1w6v3m6w1w6x4y6y3r6z3m7k3m7l3m7m2r7n2r7o1w7p3r7q2w7r4m7s3m7t2w7u2r7v2n7w1q7x2n7y3t202l3mcl4mal2ram3man3mao3map3mar3mas2lat4uau1uav3maw3way4uaz2lbk2sbl3t'fof'6obo2lbp3tbq3mbr1tbs2lbu1ybv3mbz3mck4m202k3mcm4mcn4mco4mcp4mcq5ycr4mcs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz2w203k6o212m6o2dw2l2cq2l3t3m3u2l17s3x19m3m}'kerning'{cl{4qu5kt5qt5rs17ss5ts}201s{201ss}201t{cks4lscmscnscoscpscls2wu2yu201ts}201x{2wu2yu}2k{201ts}2w{4qx5kx5ou5qx5rs17su5tu}2x{17su5tu5ou}2y{4qx5kx5ou5qx5rs17ss5ts}'fof'-6ofn{17sw5tw5ou5qw5rs}7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qs}3v{17su5tu5os5qs}7p{17su5tu}ck{4qu5kt5qt5rs17ss5ts}4l{4qu5kt5qt5rs17ss5ts}cm{4qu5kt5qt5rs17ss5ts}cn{4qu5kt5qt5rs17ss5ts}co{4qu5kt5qt5rs17ss5ts}cp{4qu5kt5qt5rs17ss5ts}6l{4qu5ou5qw5rt17su5tu}5q{ckuclucmucnucoucpu4lu}5r{ckuclucmucnucoucpu4lu}7q{cksclscmscnscoscps4ls}6p{4qu5ou5qw5rt17sw5tw}ek{4qu5ou5qw5rt17su5tu}el{4qu5ou5qw5rt17su5tu}em{4qu5ou5qw5rt17su5tu}en{4qu5ou5qw5rt17su5tu}eo{4qu5ou5qw5rt17su5tu}ep{4qu5ou5qw5rt17su5tu}es{17ss5ts5qs4qu}et{4qu5ou5qw5rt17sw5tw}eu{4qu5ou5qw5rt17ss5ts}ev{17ss5ts5qs4qu}6z{17sw5tw5ou5qw5rs}fm{17sw5tw5ou5qw5rs}7n{201ts}fo{17sw5tw5ou5qw5rs}fp{17sw5tw5ou5qw5rs}fq{17sw5tw5ou5qw5rs}7r{cksclscmscnscoscps4ls}fs{17sw5tw5ou5qw5rs}ft{17su5tu}fu{17su5tu}fv{17su5tu}fw{17su5tu}fz{cksclscmscnscoscps4ls}}}"
),
'Helvetica-Bold': c2(
"{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}"
),
Courier: c2("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),
'Courier-BoldOblique': c2(
"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"
),
'Times-Bold': c2(
"{'widths'{k3q2q5ncx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2l202m2n2n3m2o3m2p6o202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5x4l4s4m4m4n4s4o4s4p4m4q3x4r4y4s4y4t2r4u3m4v4y4w4m4x5y4y4s4z4y5k3x5l4y5m4s5n3r5o4m5p4s5q4s5r6o5s4s5t4s5u4m5v2l5w1w5x2l5y3u5z3m6k2l6l3m6m3r6n2w6o3r6p2w6q2l6r3m6s3r6t1w6u2l6v3r6w1w6x5n6y3r6z3m7k3r7l3r7m2w7n2r7o2l7p3r7q3m7r4s7s3m7t3m7u2w7v2r7w1q7x2r7y3o202l3mcl4sal2lam3man3mao3map3mar3mas2lat4uau1yav3maw3tay4uaz2lbk2sbl3t'fof'6obo2lbp3rbr1tbs2lbu2lbv3mbz3mck4s202k3mcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3rek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3m3u2l17s4s19m3m}'kerning'{cl{4qt5ks5ot5qy5rw17sv5tv}201t{cks4lscmscnscoscpscls4wv}2k{201ts}2w{4qu5ku7mu5os5qx5ru17su5tu}2x{17su5tu5ou5qs}2y{4qv5kv7mu5ot5qz5ru17su5tu}'fof'-6o7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qu}3v{17su5tu5os5qu}fu{17su5tu5ou5qu}7p{17su5tu5ou5qu}ck{4qt5ks5ot5qy5rw17sv5tv}4l{4qt5ks5ot5qy5rw17sv5tv}cm{4qt5ks5ot5qy5rw17sv5tv}cn{4qt5ks5ot5qy5rw17sv5tv}co{4qt5ks5ot5qy5rw17sv5tv}cp{4qt5ks5ot5qy5rw17sv5tv}6l{17st5tt5ou5qu}17s{ckuclucmucnucoucpu4lu4wu}5o{ckuclucmucnucoucpu4lu4wu}5q{ckzclzcmzcnzcozcpz4lz4wu}5r{ckxclxcmxcnxcoxcpx4lx4wu}5t{ckuclucmucnucoucpu4lu4wu}7q{ckuclucmucnucoucpu4lu}6p{17sw5tw5ou5qu}ek{17st5tt5qu}el{17st5tt5ou5qu}em{17st5tt5qu}en{17st5tt5qu}eo{17st5tt5qu}ep{17st5tt5ou5qu}es{17ss5ts5qu}et{17sw5tw5ou5qu}eu{17sw5tw5ou5qu}ev{17ss5ts5qu}6z{17sw5tw5ou5qu5rs}fm{17sw5tw5ou5qu5rs}fn{17sw5tw5ou5qu5rs}fo{17sw5tw5ou5qu5rs}fp{17sw5tw5ou5qu5rs}fq{17sw5tw5ou5qu5rs}7r{cktcltcmtcntcotcpt4lt5os}fs{17sw5tw5ou5qu5rs}ft{17su5tu5ou5qu}7m{5os}fv{17su5tu5ou5qu}fw{17su5tu5ou5qu}fz{cksclscmscnscoscps4ls}}}"
),
Symbol: c2(
"{'widths'{k3uaw4r19m3m2k1t2l2l202m2y2n3m2p5n202q6o3k3m2s2l2t2l2v3r2w1t3m3m2y1t2z1wbk2sbl3r'fof'6o3n3m3o3m3p3m3q3m3r3m3s3m3t3m3u1w3v1w3w3r3x3r3y3r3z2wbp3t3l3m5v2l5x2l5z3m2q4yfr3r7v3k7w1o7x3k}'kerning'{'fof'-6o}}"
),
Helvetica: c2(
"{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}"
),
'Helvetica-BoldOblique': c2(
"{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}"
),
ZapfDingbats: c2("{'widths'{k4u2k1w'fof'6o}'kerning'{'fof'-6o}}"),
'Courier-Bold': c2("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),
'Times-Italic': c2(
"{'widths'{k3n2q4ycx2l201n3m201o5t201s2l201t2l201u2l201w3r201x3r201y3r2k1t2l2l202m2n2n3m2o3m2p5n202q5t2r1p2s2l2t2l2u3m2v4n2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w4n3x4n3y4n3z3m4k5w4l3x4m3x4n4m4o4s4p3x4q3x4r4s4s4s4t2l4u2w4v4m4w3r4x5n4y4m4z4s5k3x5l4s5m3x5n3m5o3r5p4s5q3x5r5n5s3x5t3r5u3r5v2r5w1w5x2r5y2u5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q1w6r3m6s3m6t1w6u1w6v2w6w1w6x4s6y3m6z3m7k3m7l3m7m2r7n2r7o1w7p3m7q2w7r4m7s2w7t2w7u2r7v2s7w1v7x2s7y3q202l3mcl3xal2ram3man3mao3map3mar3mas2lat4wau1vav3maw4nay4waz2lbk2sbl4n'fof'6obo2lbp3mbq3obr1tbs2lbu1zbv3mbz3mck3x202k3mcm3xcn3xco3xcp3xcq5tcr4mcs3xct3xcu3xcv3xcw2l2m2ucy2lcz2ldl4mdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr4nfs3mft3mfu3mfv3mfw3mfz2w203k6o212m6m2dw2l2cq2l3t3m3u2l17s3r19m3m}'kerning'{cl{5kt4qw}201s{201sw}201t{201tw2wy2yy6q-t}201x{2wy2yy}2k{201tw}2w{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}2x{17ss5ts5os}2y{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}'fof'-6o6t{17ss5ts5qs}7t{5os}3v{5qs}7p{17su5tu5qs}ck{5kt4qw}4l{5kt4qw}cm{5kt4qw}cn{5kt4qw}co{5kt4qw}cp{5kt4qw}6l{4qs5ks5ou5qw5ru17su5tu}17s{2ks}5q{ckvclvcmvcnvcovcpv4lv}5r{ckuclucmucnucoucpu4lu}5t{2ks}6p{4qs5ks5ou5qw5ru17su5tu}ek{4qs5ks5ou5qw5ru17su5tu}el{4qs5ks5ou5qw5ru17su5tu}em{4qs5ks5ou5qw5ru17su5tu}en{4qs5ks5ou5qw5ru17su5tu}eo{4qs5ks5ou5qw5ru17su5tu}ep{4qs5ks5ou5qw5ru17su5tu}es{5ks5qs4qs}et{4qs5ks5ou5qw5ru17su5tu}eu{4qs5ks5qw5ru17su5tu}ev{5ks5qs4qs}ex{17ss5ts5qs}6z{4qv5ks5ou5qw5ru17su5tu}fm{4qv5ks5ou5qw5ru17su5tu}fn{4qv5ks5ou5qw5ru17su5tu}fo{4qv5ks5ou5qw5ru17su5tu}fp{4qv5ks5ou5qw5ru17su5tu}fq{4qv5ks5ou5qw5ru17su5tu}7r{5os}fs{4qv5ks5ou5qw5ru17su5tu}ft{17su5tu5qs}fu{17su5tu5qs}fv{17su5tu5qs}fw{17su5tu5qs}}}"
),
'Times-Roman': c2(
"{'widths'{k3n2q4ycx2l201n3m201o6o201s2l201t2l201u2l201w2w201x2w201y2w2k1t2l2l202m2n2n3m2o3m2p5n202q6o2r1m2s2l2t2l2u3m2v3s2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v1w3w3s3x3s3y3s3z2w4k5w4l4s4m4m4n4m4o4s4p3x4q3r4r4s4s4s4t2l4u2r4v4s4w3x4x5t4y4s4z4s5k3r5l4s5m4m5n3r5o3x5p4s5q4s5r5y5s4s5t4s5u3x5v2l5w1w5x2l5y2z5z3m6k2l6l2w6m3m6n2w6o3m6p2w6q2l6r3m6s3m6t1w6u1w6v3m6w1w6x4y6y3m6z3m7k3m7l3m7m2l7n2r7o1w7p3m7q3m7r4s7s3m7t3m7u2w7v3k7w1o7x3k7y3q202l3mcl4sal2lam3man3mao3map3mar3mas2lat4wau1vav3maw3say4waz2lbk2sbl3s'fof'6obo2lbp3mbq2xbr1tbs2lbu1zbv3mbz2wck4s202k3mcm4scn4sco4scp4scq5tcr4mcs3xct3xcu3xcv3xcw2l2m2tcy2lcz2ldl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek2wel2wem2wen2weo2wep2weq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr3sfs3mft3mfu3mfv3mfw3mfz3m203k6o212m6m2dw2l2cq2l3t3m3u1w17s4s19m3m}'kerning'{cl{4qs5ku17sw5ou5qy5rw201ss5tw201ws}201s{201ss}201t{ckw4lwcmwcnwcowcpwclw4wu201ts}2k{201ts}2w{4qs5kw5os5qx5ru17sx5tx}2x{17sw5tw5ou5qu}2y{4qs5kw5os5qx5ru17sx5tx}'fof'-6o7t{ckuclucmucnucoucpu4lu5os5rs}3u{17su5tu5qs}3v{17su5tu5qs}7p{17sw5tw5qs}ck{4qs5ku17sw5ou5qy5rw201ss5tw201ws}4l{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cm{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cn{4qs5ku17sw5ou5qy5rw201ss5tw201ws}co{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cp{4qs5ku17sw5ou5qy5rw201ss5tw201ws}6l{17su5tu5os5qw5rs}17s{2ktclvcmvcnvcovcpv4lv4wuckv}5o{ckwclwcmwcnwcowcpw4lw4wu}5q{ckyclycmycnycoycpy4ly4wu5ms}5r{cktcltcmtcntcotcpt4lt4ws}5t{2ktclvcmvcnvcovcpv4lv4wuckv}7q{cksclscmscnscoscps4ls}6p{17su5tu5qw5rs}ek{5qs5rs}el{17su5tu5os5qw5rs}em{17su5tu5os5qs5rs}en{17su5qs5rs}eo{5qs5rs}ep{17su5tu5os5qw5rs}es{5qs}et{17su5tu5qw5rs}eu{17su5tu5qs5rs}ev{5qs}6z{17sv5tv5os5qx5rs}fm{5os5qt5rs}fn{17sv5tv5os5qx5rs}fo{17sv5tv5os5qx5rs}fp{5os5qt5rs}fq{5os5qt5rs}7r{ckuclucmucnucoucpu4lu5os}fs{17sv5tv5os5qx5rs}ft{17ss5ts5qs}fu{17sw5tw5qs}fv{17sw5tw5qs}fw{17ss5ts5qs}fz{ckuclucmucnucoucpu4lu5os5rs}}}"
),
'Helvetica-Oblique': c2(
"{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}"
),
},
}
e2.events.push([
'addFont',
function (t3) {
var e3 = t3.font,
r3 = l2.Unicode[e3.postScriptName]
r3 &&
((e3.metadata.Unicode = {}),
(e3.metadata.Unicode.widths = r3.widths),
(e3.metadata.Unicode.kerning = r3.kerning))
var n3 = h2.Unicode[e3.postScriptName]
n3 &&
((e3.metadata.Unicode.encoding = n3), (e3.encoding = n3.codePages[0]))
},
])
})(E$1.API),
(function (t3) {
var e2 = function (t4) {
for (var e3 = t4.length, r2 = new Uint8Array(e3), n2 = 0; n2 < e3; n2++)
r2[n2] = t4.charCodeAt(n2)
return r2
}
t3.API.events.push([
'addFont',
function (r2) {
var n2 = void 0,
i2 = r2.font,
a2 = r2.instance
if (!i2.isStandardFont) {
if (void 0 === a2)
throw new Error(
"Font does not exist in vFS, import fonts or remove declaration doc.addFont('" +
i2.postScriptName +
"')."
)
if (
'string' !=
typeof (n2 =
false === a2.existsFileInVFS(i2.postScriptName)
? a2.loadFile(i2.postScriptName)
: a2.getFileFromVFS(i2.postScriptName))
)
throw new Error(
"Font is not stored as string-data in vFS, import fonts or remove declaration doc.addFont('" +
i2.postScriptName +
"')."
)
!(function (r3, n3) {
;(n3 = /^\x00\x01\x00\x00/.test(n3) ? e2(n3) : e2(u$2(n3))),
(r3.metadata = t3.API.TTFFont.open(n3)),
(r3.metadata.Unicode = r3.metadata.Unicode || {
encoding: {},
kerning: {},
widths: [],
}),
(r3.metadata.glyIdsUsed = [0])
})(i2, n2)
}
},
])
})(E$1),
(function (t3) {
function e2() {
return (
n$1.canvg
? Promise.resolve(n$1.canvg)
: Promise.resolve().then(function () {
return index_es
})
)
.catch(function (t4) {
return Promise.reject(new Error('Could not load canvg: ' + t4))
})
.then(function (t4) {
return t4.default ? t4.default : t4
})
}
E$1.API.addSvgAsImage = function (t4, r2, n2, i2, o2, s2, c2, u2) {
if (isNaN(r2) || isNaN(n2))
throw (
(a$2.error('jsPDF.addSvgAsImage: Invalid coordinates', arguments),
new Error('Invalid coordinates passed to jsPDF.addSvgAsImage'))
)
if (isNaN(i2) || isNaN(o2))
throw (
(a$2.error('jsPDF.addSvgAsImage: Invalid measurements', arguments),
new Error(
'Invalid measurements (width and/or height) passed to jsPDF.addSvgAsImage'
))
)
var h2 = document.createElement('canvas')
;(h2.width = i2), (h2.height = o2)
var l2 = h2.getContext('2d')
;(l2.fillStyle = '#fff'), l2.fillRect(0, 0, h2.width, h2.height)
var f2 = {
ignoreMouse: true,
ignoreAnimation: true,
ignoreDimensions: true,
},
d3 = this
return e2()
.then(
function (e3) {
return e3.fromString(l2, t4, f2)
},
function () {
return Promise.reject(new Error('Could not load canvg.'))
}
)
.then(function (t5) {
return t5.render(f2)
})
.then(function () {
d3.addImage(h2.toDataURL('image/jpeg', 1), r2, n2, i2, o2, c2, u2)
})
}
})(),
(E$1.API.putTotalPages = function (t3) {
var e2,
r2 = 0
parseInt(this.internal.getFont().id.substr(1), 10) < 15
? ((e2 = new RegExp(t3, 'g')), (r2 = this.internal.getNumberOfPages()))
: ((e2 = new RegExp(this.pdfEscape16(t3, this.internal.getFont()), 'g')),
(r2 = this.pdfEscape16(
this.internal.getNumberOfPages() + '',
this.internal.getFont()
)))
for (var n2 = 1; n2 <= this.internal.getNumberOfPages(); n2++)
for (var i2 = 0; i2 < this.internal.pages[n2].length; i2++)
this.internal.pages[n2][i2] = this.internal.pages[n2][i2].replace(
e2,
r2
)
return this
}),
(E$1.API.viewerPreferences = function (e2, r2) {
var n2
;(e2 = e2 || {}), (r2 = r2 || false)
var i2,
a2,
o2,
s2 = {
HideToolbar: {
defaultValue: false,
value: false,
type: 'boolean',
explicitSet: false,
valueSet: [true, false],
pdfVersion: 1.3,
},
HideMenubar: {
defaultValue: false,
value: false,
type: 'boolean',
explicitSet: false,
valueSet: [true, false],
pdfVersion: 1.3,
},
HideWindowUI: {
defaultValue: false,
value: false,
type: 'boolean',
explicitSet: false,
valueSet: [true, false],
pdfVersion: 1.3,
},
FitWindow: {
defaultValue: false,
value: false,
type: 'boolean',
explicitSet: false,
valueSet: [true, false],
pdfVersion: 1.3,
},
CenterWindow: {
defaultValue: false,
value: false,
type: 'boolean',
explicitSet: false,
valueSet: [true, false],
pdfVersion: 1.3,
},
DisplayDocTitle: {
defaultValue: false,
value: false,
type: 'boolean',
explicitSet: false,
valueSet: [true, false],
pdfVersion: 1.4,
},
NonFullScreenPageMode: {
defaultValue: 'UseNone',
value: 'UseNone',
type: 'name',
explicitSet: false,
valueSet: ['UseNone', 'UseOutlines', 'UseThumbs', 'UseOC'],
pdfVersion: 1.3,
},
Direction: {
defaultValue: 'L2R',
value: 'L2R',
type: 'name',
explicitSet: false,
valueSet: ['L2R', 'R2L'],
pdfVersion: 1.3,
},
ViewArea: {
defaultValue: 'CropBox',
value: 'CropBox',
type: 'name',
explicitSet: false,
valueSet: ['MediaBox', 'CropBox', 'TrimBox', 'BleedBox', 'ArtBox'],
pdfVersion: 1.4,
},
ViewClip: {
defaultValue: 'CropBox',
value: 'CropBox',
type: 'name',
explicitSet: false,
valueSet: ['MediaBox', 'CropBox', 'TrimBox', 'BleedBox', 'ArtBox'],
pdfVersion: 1.4,
},
PrintArea: {
defaultValue: 'CropBox',
value: 'CropBox',
type: 'name',
explicitSet: false,
valueSet: ['MediaBox', 'CropBox', 'TrimBox', 'BleedBox', 'ArtBox'],
pdfVersion: 1.4,
},
PrintClip: {
defaultValue: 'CropBox',
value: 'CropBox',
type: 'name',
explicitSet: false,
valueSet: ['MediaBox', 'CropBox', 'TrimBox', 'BleedBox', 'ArtBox'],
pdfVersion: 1.4,
},
PrintScaling: {
defaultValue: 'AppDefault',
value: 'AppDefault',
type: 'name',
explicitSet: false,
valueSet: ['AppDefault', 'None'],
pdfVersion: 1.6,
},
Duplex: {
defaultValue: '',
value: 'none',
type: 'name',
explicitSet: false,
valueSet: [
'Simplex',
'DuplexFlipShortEdge',
'DuplexFlipLongEdge',
'none',
],
pdfVersion: 1.7,
},
PickTrayByPDFSize: {
defaultValue: false,
value: false,
type: 'boolean',
explicitSet: false,
valueSet: [true, false],
pdfVersion: 1.7,
},
PrintPageRange: {
defaultValue: '',
value: '',
type: 'array',
explicitSet: false,
valueSet: null,
pdfVersion: 1.7,
},
NumCopies: {
defaultValue: 1,
value: 1,
type: 'integer',
explicitSet: false,
valueSet: null,
pdfVersion: 1.7,
},
},
c2 = Object.keys(s2),
u2 = [],
h2 = 0,
l2 = 0,
f2 = 0
function d3(t3, e3) {
var r3,
n3 = false
for (r3 = 0; r3 < t3.length; r3 += 1) t3[r3] === e3 && (n3 = true)
return n3
}
if (
(void 0 === this.internal.viewerpreferences &&
((this.internal.viewerpreferences = {}),
(this.internal.viewerpreferences.configuration = JSON.parse(
JSON.stringify(s2)
)),
(this.internal.viewerpreferences.isSubscribed = false)),
(n2 = this.internal.viewerpreferences.configuration),
'reset' === e2 || true === r2)
) {
var p2 = c2.length
for (f2 = 0; f2 < p2; f2 += 1)
(n2[c2[f2]].value = n2[c2[f2]].defaultValue),
(n2[c2[f2]].explicitSet = false)
}
if ('object' === _typeof$3(e2)) {
for (a2 in e2)
if (((o2 = e2[a2]), d3(c2, a2) && void 0 !== o2)) {
if ('boolean' === n2[a2].type && 'boolean' == typeof o2)
n2[a2].value = o2
else if ('name' === n2[a2].type && d3(n2[a2].valueSet, o2))
n2[a2].value = o2
else if ('integer' === n2[a2].type && Number.isInteger(o2))
n2[a2].value = o2
else if ('array' === n2[a2].type) {
for (h2 = 0; h2 < o2.length; h2 += 1)
if (
((i2 = true),
1 === o2[h2].length && 'number' == typeof o2[h2][0])
)
u2.push(String(o2[h2] - 1))
else if (o2[h2].length > 1) {
for (l2 = 0; l2 < o2[h2].length; l2 += 1)
'number' != typeof o2[h2][l2] && (i2 = false)
true === i2 && u2.push([o2[h2][0] - 1, o2[h2][1] - 1].join(' '))
}
n2[a2].value = '[' + u2.join(' ') + ']'
} else n2[a2].value = n2[a2].defaultValue
n2[a2].explicitSet = true
}
}
return (
false === this.internal.viewerpreferences.isSubscribed &&
(this.internal.events.subscribe('putCatalog', function () {
var t3,
e3 = []
for (t3 in n2)
true === n2[t3].explicitSet &&
('name' === n2[t3].type
? e3.push('/' + t3 + ' /' + n2[t3].value)
: e3.push('/' + t3 + ' ' + n2[t3].value))
0 !== e3.length &&
this.internal.write(
'/ViewerPreferences\n<<\n' + e3.join('\n') + '\n>>'
)
}),
(this.internal.viewerpreferences.isSubscribed = true)),
(this.internal.viewerpreferences.configuration = n2),
this
)
}),
(function (t3) {
var e2 = function () {
var t4 =
'',
e3 = unescape(
encodeURIComponent('')
),
r3 = unescape(encodeURIComponent(t4)),
n2 = unescape(
encodeURIComponent(this.internal.__metadata__.metadata)
),
i2 = unescape(
encodeURIComponent('')
),
a2 = unescape(encodeURIComponent('')),
o2 = r3.length + n2.length + i2.length + e3.length + a2.length
;(this.internal.__metadata__.metadata_object_number =
this.internal.newObject()),
this.internal.write(
'<< /Type /Metadata /Subtype /XML /Length ' + o2 + ' >>'
),
this.internal.write('stream'),
this.internal.write(e3 + r3 + n2 + i2 + a2),
this.internal.write('endstream'),
this.internal.write('endobj')
},
r2 = function () {
this.internal.__metadata__.metadata_object_number &&
this.internal.write(
'/Metadata ' +
this.internal.__metadata__.metadata_object_number +
' 0 R'
)
}
t3.addMetadata = function (t4, n2) {
return (
void 0 === this.internal.__metadata__ &&
((this.internal.__metadata__ = {
metadata: t4,
namespaceuri: n2 || 'http://jspdf.default.namespaceuri/',
}),
this.internal.events.subscribe('putCatalog', r2),
this.internal.events.subscribe('postPutResources', e2)),
this
)
}
})(E$1.API),
(function (t3) {
var e2 = t3.API,
r2 = (e2.pdfEscape16 = function (t4, e3) {
for (
var r3,
n3 = e3.metadata.Unicode.widths,
i3 = ['', '0', '00', '000', '0000'],
a2 = [''],
o2 = 0,
s2 = t4.length;
o2 < s2;
++o2
) {
if (
((r3 = e3.metadata.characterToGlyph(t4.charCodeAt(o2))),
e3.metadata.glyIdsUsed.push(r3),
(e3.metadata.toUnicode[r3] = t4.charCodeAt(o2)),
-1 == n3.indexOf(r3) &&
(n3.push(r3),
n3.push([parseInt(e3.metadata.widthOfGlyph(r3), 10)])),
'0' == r3)
)
return a2.join('')
;(r3 = r3.toString(16)), a2.push(i3[4 - r3.length], r3)
}
return a2.join('')
}),
n2 = function (t4) {
var e3, r3, n3, i3, a2, o2, s2
for (
a2 =
'/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n/CIDSystemInfo <<\n /Registry (Adobe)\n /Ordering (UCS)\n /Supplement 0\n>> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n1 begincodespacerange\n<0000>\nendcodespacerange',
n3 = [],
o2 = 0,
s2 = (r3 = Object.keys(t4).sort(function (t5, e4) {
return t5 - e4
})).length;
o2 < s2;
o2++
)
(e3 = r3[o2]),
n3.length >= 100 &&
((a2 +=
'\n' +
n3.length +
' beginbfchar\n' +
n3.join('\n') +
'\nendbfchar'),
(n3 = [])),
void 0 !== t4[e3] &&
null !== t4[e3] &&
'function' == typeof t4[e3].toString &&
((i3 = ('0000' + t4[e3].toString(16)).slice(-4)),
(e3 = ('0000' + (+e3).toString(16)).slice(-4)),
n3.push('<' + e3 + '><' + i3 + '>'))
return (
n3.length &&
(a2 +=
'\n' +
n3.length +
' beginbfchar\n' +
n3.join('\n') +
'\nendbfchar\n'),
(a2 +=
'endcmap\nCMapName currentdict /CMap defineresource pop\nend\nend')
)
}
e2.events.push([
'putFont',
function (e3) {
!(function (e4) {
var r3 = e4.font,
i3 = e4.out,
a2 = e4.newObject,
o2 = e4.putStream
if (
r3.metadata instanceof t3.API.TTFFont &&
'Identity-H' === r3.encoding
) {
for (
var s2 = r3.metadata.Unicode.widths,
c2 = r3.metadata.subset.encode(r3.metadata.glyIdsUsed, 1),
u2 = '',
h2 = 0;
h2 < c2.length;
h2++
)
u2 += String.fromCharCode(c2[h2])
var l2 = a2()
o2({ data: u2, addLength1: true, objectId: l2 }), i3('endobj')
var f2 = a2()
o2({
data: n2(r3.metadata.toUnicode),
addLength1: true,
objectId: f2,
}),
i3('endobj')
var d3 = a2()
i3('<<'),
i3('/Type /FontDescriptor'),
i3('/FontName /' + F$1(r3.fontName)),
i3('/FontFile2 ' + l2 + ' 0 R'),
i3('/FontBBox ' + t3.API.PDFObject.convert(r3.metadata.bbox)),
i3('/Flags ' + r3.metadata.flags),
i3('/StemV ' + r3.metadata.stemV),
i3('/ItalicAngle ' + r3.metadata.italicAngle),
i3('/Ascent ' + r3.metadata.ascender),
i3('/Descent ' + r3.metadata.decender),
i3('/CapHeight ' + r3.metadata.capHeight),
i3('>>'),
i3('endobj')
var p2 = a2()
i3('<<'),
i3('/Type /Font'),
i3('/BaseFont /' + F$1(r3.fontName)),
i3('/FontDescriptor ' + d3 + ' 0 R'),
i3('/W ' + t3.API.PDFObject.convert(s2)),
i3('/CIDToGIDMap /Identity'),
i3('/DW 1000'),
i3('/Subtype /CIDFontType2'),
i3('/CIDSystemInfo'),
i3('<<'),
i3('/Supplement 0'),
i3('/Registry (Adobe)'),
i3('/Ordering (' + r3.encoding + ')'),
i3('>>'),
i3('>>'),
i3('endobj'),
(r3.objectNumber = a2()),
i3('<<'),
i3('/Type /Font'),
i3('/Subtype /Type0'),
i3('/ToUnicode ' + f2 + ' 0 R'),
i3('/BaseFont /' + F$1(r3.fontName)),
i3('/Encoding /' + r3.encoding),
i3('/DescendantFonts [' + p2 + ' 0 R]'),
i3('>>'),
i3('endobj'),
(r3.isAlreadyPutted = true)
}
})(e3)
},
])
e2.events.push([
'putFont',
function (e3) {
!(function (e4) {
var r3 = e4.font,
i3 = e4.out,
a2 = e4.newObject,
o2 = e4.putStream
if (
r3.metadata instanceof t3.API.TTFFont &&
'WinAnsiEncoding' === r3.encoding
) {
for (
var s2 = r3.metadata.rawData, c2 = '', u2 = 0;
u2 < s2.length;
u2++
)
c2 += String.fromCharCode(s2[u2])
var h2 = a2()
o2({ data: c2, addLength1: true, objectId: h2 }), i3('endobj')
var l2 = a2()
o2({
data: n2(r3.metadata.toUnicode),
addLength1: true,
objectId: l2,
}),
i3('endobj')
var f2 = a2()
i3('<<'),
i3('/Descent ' + r3.metadata.decender),
i3('/CapHeight ' + r3.metadata.capHeight),
i3('/StemV ' + r3.metadata.stemV),
i3('/Type /FontDescriptor'),
i3('/FontFile2 ' + h2 + ' 0 R'),
i3('/Flags 96'),
i3('/FontBBox ' + t3.API.PDFObject.convert(r3.metadata.bbox)),
i3('/FontName /' + F$1(r3.fontName)),
i3('/ItalicAngle ' + r3.metadata.italicAngle),
i3('/Ascent ' + r3.metadata.ascender),
i3('>>'),
i3('endobj'),
(r3.objectNumber = a2())
for (var d3 = 0; d3 < r3.metadata.hmtx.widths.length; d3++)
r3.metadata.hmtx.widths[d3] = parseInt(
r3.metadata.hmtx.widths[d3] *
(1e3 / r3.metadata.head.unitsPerEm)
)
i3(
'<>'
),
i3('endobj'),
(r3.isAlreadyPutted = true)
}
})(e3)
},
])
var i2 = function (t4) {
var e3,
n3 = t4.text || '',
i3 = t4.x,
a2 = t4.y,
o2 = t4.options || {},
s2 = t4.mutex || {},
c2 = s2.pdfEscape,
u2 = s2.activeFontKey,
h2 = s2.fonts,
l2 = u2,
f2 = '',
d3 = 0,
p2 = '',
g2 = h2[l2].encoding
if ('Identity-H' !== h2[l2].encoding)
return { text: n3, x: i3, y: a2, options: o2, mutex: s2 }
for (
p2 = n3, l2 = u2, Array.isArray(n3) && (p2 = n3[0]), d3 = 0;
d3 < p2.length;
d3 += 1
)
h2[l2].metadata.hasOwnProperty('cmap') &&
(e3 = h2[l2].metadata.cmap.unicode.codeMap[p2[d3].charCodeAt(0)]),
e3 ||
(p2[d3].charCodeAt(0) < 256 &&
h2[l2].metadata.hasOwnProperty('Unicode'))
? (f2 += p2[d3])
: (f2 += '')
var m2 = ''
return (
parseInt(l2.slice(1)) < 14 || 'WinAnsiEncoding' === g2
? (m2 = c2(f2, l2)
.split('')
.map(function (t5) {
return t5.charCodeAt(0).toString(16)
})
.join(''))
: 'Identity-H' === g2 && (m2 = r2(f2, h2[l2])),
(s2.isHex = true),
{ text: m2, x: i3, y: a2, options: o2, mutex: s2 }
)
}
e2.events.push([
'postProcessText',
function (t4) {
var e3 = t4.text || '',
r3 = [],
n3 = {
text: e3,
x: t4.x,
y: t4.y,
options: t4.options,
mutex: t4.mutex,
}
if (Array.isArray(e3)) {
var a2 = 0
for (a2 = 0; a2 < e3.length; a2 += 1)
Array.isArray(e3[a2]) && 3 === e3[a2].length
? r3.push([
i2(Object.assign({}, n3, { text: e3[a2][0] })).text,
e3[a2][1],
e3[a2][2],
])
: r3.push(i2(Object.assign({}, n3, { text: e3[a2] })).text)
t4.text = r3
} else t4.text = i2(Object.assign({}, n3, { text: e3 })).text
},
])
})(E$1),
(function (t3) {
var e2 = function () {
return void 0 === this.internal.vFS && (this.internal.vFS = {}), true
}
;(t3.existsFileInVFS = function (t4) {
return e2.call(this), void 0 !== this.internal.vFS[t4]
}),
(t3.addFileToVFS = function (t4, r2) {
return e2.call(this), (this.internal.vFS[t4] = r2), this
}),
(t3.getFileFromVFS = function (t4) {
return (
e2.call(this),
void 0 !== this.internal.vFS[t4] ? this.internal.vFS[t4] : null
)
})
})(E$1.API),
(function (t3) {
t3.__bidiEngine__ = t3.prototype.__bidiEngine__ = function (t4) {
var r3,
n2,
i2,
a2,
o2,
s2,
c2,
u2 = e2,
h2 = [
[0, 3, 0, 1, 0, 0, 0],
[0, 3, 0, 1, 2, 2, 0],
[0, 3, 0, 17, 2, 0, 1],
[0, 3, 5, 5, 4, 1, 0],
[0, 3, 21, 21, 4, 0, 1],
[0, 3, 5, 5, 4, 2, 0],
],
l2 = [
[2, 0, 1, 1, 0, 1, 0],
[2, 0, 1, 1, 0, 2, 0],
[2, 0, 2, 1, 3, 2, 0],
[2, 0, 2, 33, 3, 1, 1],
],
f2 = { L: 0, R: 1, EN: 2, AN: 3, N: 4, B: 5, S: 6 },
d3 = { 0: 0, 5: 1, 6: 2, 7: 3, 32: 4, 251: 5, 254: 6, 255: 7 },
p2 = [
'(',
')',
'(',
'<',
'>',
'<',
'[',
']',
'[',
'{',
'}',
'{',
'\xAB',
'\xBB',
'\xAB',
'\u2039',
'\u203A',
'\u2039',
'\u2045',
'\u2046',
'\u2045',
'\u207D',
'\u207E',
'\u207D',
'\u208D',
'\u208E',
'\u208D',
'\u2264',
'\u2265',
'\u2264',
'\u2329',
'\u232A',
'\u2329',
'\uFE59',
'\uFE5A',
'\uFE59',
'\uFE5B',
'\uFE5C',
'\uFE5B',
'\uFE5D',
'\uFE5E',
'\uFE5D',
'\uFE64',
'\uFE65',
'\uFE64',
],
g2 = new RegExp(
/^([1-4|9]|1[0-9]|2[0-9]|3[0168]|4[04589]|5[012]|7[78]|159|16[0-9]|17[0-2]|21[569]|22[03489]|250)$/
),
m2 = false,
v4 = 0
this.__bidiEngine__ = {}
var b2 = function (t5) {
var e3 = t5.charCodeAt(),
r4 = e3 >> 8,
n3 = d3[r4]
return void 0 !== n3
? u2[256 * n3 + (255 & e3)]
: 252 === r4 || 253 === r4
? 'AL'
: g2.test(r4)
? 'L'
: 8 === r4
? 'R'
: 'N'
},
y2 = function (t5) {
for (var e3, r4 = 0; r4 < t5.length; r4++) {
if ('L' === (e3 = b2(t5.charAt(r4)))) return false
if ('R' === e3) return true
}
return false
},
w2 = function (t5, e3, o3, s3) {
var c3,
u3,
h3,
l3,
f3 = e3[s3]
switch (f3) {
case 'L':
case 'R':
m2 = false
break
case 'N':
case 'AN':
break
case 'EN':
m2 && (f3 = 'AN')
break
case 'AL':
;(m2 = true), (f3 = 'R')
break
case 'WS':
f3 = 'N'
break
case 'CS':
s3 < 1 ||
s3 + 1 >= e3.length ||
('EN' !== (c3 = o3[s3 - 1]) && 'AN' !== c3) ||
('EN' !== (u3 = e3[s3 + 1]) && 'AN' !== u3)
? (f3 = 'N')
: m2 && (u3 = 'AN'),
(f3 = u3 === c3 ? u3 : 'N')
break
case 'ES':
f3 =
'EN' === (c3 = s3 > 0 ? o3[s3 - 1] : 'B') &&
s3 + 1 < e3.length &&
'EN' === e3[s3 + 1]
? 'EN'
: 'N'
break
case 'ET':
if (s3 > 0 && 'EN' === o3[s3 - 1]) {
f3 = 'EN'
break
}
if (m2) {
f3 = 'N'
break
}
for (h3 = s3 + 1, l3 = e3.length; h3 < l3 && 'ET' === e3[h3]; )
h3++
f3 = h3 < l3 && 'EN' === e3[h3] ? 'EN' : 'N'
break
case 'NSM':
if (i2 && !a2) {
for (l3 = e3.length, h3 = s3 + 1; h3 < l3 && 'NSM' === e3[h3]; )
h3++
if (h3 < l3) {
var d4 = t5[s3],
p3 = (d4 >= 1425 && d4 <= 2303) || 64286 === d4
if (((c3 = e3[h3]), p3 && ('R' === c3 || 'AL' === c3))) {
f3 = 'R'
break
}
}
}
f3 = s3 < 1 || 'B' === (c3 = e3[s3 - 1]) ? 'N' : o3[s3 - 1]
break
case 'B':
;(m2 = false), (r3 = true), (f3 = v4)
break
case 'S':
;(n2 = true), (f3 = 'N')
break
case 'LRE':
case 'RLE':
case 'LRO':
case 'RLO':
case 'PDF':
m2 = false
break
case 'BN':
f3 = 'N'
}
return f3
},
N2 = function (t5, e3, r4) {
var n3 = t5.split('')
return (
r4 && L2(n3, r4, { hiLevel: v4 }),
n3.reverse(),
e3 && e3.reverse(),
n3.join('')
)
},
L2 = function (t5, e3, i3) {
var a3,
o3,
s3,
c3,
u3,
d4 = -1,
p3 = t5.length,
g3 = 0,
y3 = [],
N3 = v4 ? l2 : h2,
L3 = []
for (m2 = false, r3 = false, n2 = false, o3 = 0; o3 < p3; o3++)
L3[o3] = b2(t5[o3])
for (s3 = 0; s3 < p3; s3++) {
if (
((u3 = g3),
(y3[s3] = w2(t5, L3, y3, s3)),
(a3 = 240 & (g3 = N3[u3][f2[y3[s3]]])),
(g3 &= 15),
(e3[s3] = c3 = N3[g3][5]),
a3 > 0)
)
if (16 === a3) {
for (o3 = d4; o3 < s3; o3++) e3[o3] = 1
d4 = -1
} else d4 = -1
if (N3[g3][6]) -1 === d4 && (d4 = s3)
else if (d4 > -1) {
for (o3 = d4; o3 < s3; o3++) e3[o3] = c3
d4 = -1
}
'B' === L3[s3] && (e3[s3] = 0), (i3.hiLevel |= c3)
}
n2 &&
(function (t6, e4, r4) {
for (var n3 = 0; n3 < r4; n3++)
if ('S' === t6[n3]) {
e4[n3] = v4
for (var i4 = n3 - 1; i4 >= 0 && 'WS' === t6[i4]; i4--)
e4[i4] = v4
}
})(L3, e3, p3)
},
A2 = function (t5, e3, n3, i3, a3) {
if (!(a3.hiLevel < t5)) {
if (1 === t5 && 1 === v4 && !r3)
return e3.reverse(), void (n3 && n3.reverse())
for (var o3, s3, c3, u3, h3 = e3.length, l3 = 0; l3 < h3; ) {
if (i3[l3] >= t5) {
for (c3 = l3 + 1; c3 < h3 && i3[c3] >= t5; ) c3++
for (u3 = l3, s3 = c3 - 1; u3 < s3; u3++, s3--)
(o3 = e3[u3]),
(e3[u3] = e3[s3]),
(e3[s3] = o3),
n3 && ((o3 = n3[u3]), (n3[u3] = n3[s3]), (n3[s3] = o3))
l3 = c3
}
l3++
}
}
},
x2 = function (t5, e3, r4) {
var n3 = t5.split(''),
i3 = { hiLevel: v4 }
return (
r4 || (r4 = []),
L2(n3, r4, i3),
(function (t6, e4, r5) {
if (0 !== r5.hiLevel && c2)
for (var n4, i4 = 0; i4 < t6.length; i4++)
1 === e4[i4] &&
(n4 = p2.indexOf(t6[i4])) >= 0 &&
(t6[i4] = p2[n4 + 1])
})(n3, r4, i3),
A2(2, n3, e3, r4, i3),
A2(1, n3, e3, r4, i3),
n3.join('')
)
}
return (
(this.__bidiEngine__.doBidiReorder = function (t5, e3, r4) {
if (
((function (t6, e4) {
if (e4) for (var r5 = 0; r5 < t6.length; r5++) e4[r5] = r5
void 0 === a2 && (a2 = y2(t6)), void 0 === s2 && (s2 = y2(t6))
})(t5, e3),
i2 || !o2 || s2)
)
if (i2 && o2 && a2 ^ s2) (v4 = a2 ? 1 : 0), (t5 = N2(t5, e3, r4))
else if (!i2 && o2 && s2)
(v4 = a2 ? 1 : 0), (t5 = x2(t5, e3, r4)), (t5 = N2(t5, e3))
else if (!i2 || a2 || o2 || s2) {
if (i2 && !o2 && a2 ^ s2)
(t5 = N2(t5, e3)),
a2
? ((v4 = 0), (t5 = x2(t5, e3, r4)))
: ((v4 = 1), (t5 = x2(t5, e3, r4)), (t5 = N2(t5, e3)))
else if (i2 && a2 && !o2 && s2)
(v4 = 1), (t5 = x2(t5, e3, r4)), (t5 = N2(t5, e3))
else if (!i2 && !o2 && a2 ^ s2) {
var n3 = c2
a2
? ((v4 = 1),
(t5 = x2(t5, e3, r4)),
(v4 = 0),
(c2 = false),
(t5 = x2(t5, e3, r4)),
(c2 = n3))
: ((v4 = 0),
(t5 = x2(t5, e3, r4)),
(t5 = N2(t5, e3)),
(v4 = 1),
(c2 = false),
(t5 = x2(t5, e3, r4)),
(c2 = n3),
(t5 = N2(t5, e3)))
}
} else (v4 = 0), (t5 = x2(t5, e3, r4))
else (v4 = a2 ? 1 : 0), (t5 = x2(t5, e3, r4))
return t5
}),
(this.__bidiEngine__.setOptions = function (t5) {
t5 &&
((i2 = t5.isInputVisual),
(o2 = t5.isOutputVisual),
(a2 = t5.isInputRtl),
(s2 = t5.isOutputRtl),
(c2 = t5.isSymmetricSwapping))
}),
this.__bidiEngine__.setOptions(t4),
this.__bidiEngine__
)
}
var e2 = [
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'S',
'B',
'S',
'WS',
'B',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'B',
'B',
'B',
'S',
'WS',
'N',
'N',
'ET',
'ET',
'ET',
'N',
'N',
'N',
'N',
'N',
'ES',
'CS',
'ES',
'CS',
'CS',
'EN',
'EN',
'EN',
'EN',
'EN',
'EN',
'EN',
'EN',
'EN',
'EN',
'CS',
'N',
'N',
'N',
'N',
'N',
'N',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'N',
'N',
'N',
'N',
'N',
'N',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'N',
'N',
'N',
'N',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'B',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'CS',
'N',
'ET',
'ET',
'ET',
'ET',
'N',
'N',
'N',
'N',
'L',
'N',
'N',
'BN',
'N',
'N',
'ET',
'ET',
'EN',
'EN',
'N',
'L',
'N',
'N',
'N',
'EN',
'L',
'N',
'N',
'N',
'N',
'N',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'N',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'N',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'N',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'N',
'N',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'N',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'N',
'L',
'N',
'N',
'N',
'N',
'N',
'ET',
'N',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'R',
'NSM',
'R',
'NSM',
'NSM',
'R',
'NSM',
'NSM',
'R',
'NSM',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'N',
'N',
'N',
'N',
'N',
'R',
'R',
'R',
'R',
'R',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'AN',
'AN',
'AN',
'AN',
'AN',
'AN',
'N',
'N',
'AL',
'ET',
'ET',
'AL',
'CS',
'AL',
'N',
'N',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'AL',
'AL',
'N',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'AN',
'AN',
'AN',
'AN',
'AN',
'AN',
'AN',
'AN',
'AN',
'AN',
'ET',
'AN',
'AN',
'AL',
'AL',
'AL',
'NSM',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'AN',
'N',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'AL',
'AL',
'NSM',
'NSM',
'N',
'NSM',
'NSM',
'NSM',
'NSM',
'AL',
'AL',
'EN',
'EN',
'EN',
'EN',
'EN',
'EN',
'EN',
'EN',
'EN',
'EN',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'N',
'AL',
'AL',
'NSM',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'N',
'N',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'AL',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'R',
'R',
'N',
'N',
'N',
'N',
'R',
'N',
'N',
'N',
'N',
'N',
'WS',
'WS',
'WS',
'WS',
'WS',
'WS',
'WS',
'WS',
'WS',
'WS',
'WS',
'BN',
'BN',
'BN',
'L',
'R',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'WS',
'B',
'LRE',
'RLE',
'PDF',
'LRO',
'RLO',
'CS',
'ET',
'ET',
'ET',
'ET',
'ET',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'CS',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'WS',
'BN',
'BN',
'BN',
'BN',
'BN',
'N',
'LRI',
'RLI',
'FSI',
'PDI',
'BN',
'BN',
'BN',
'BN',
'BN',
'BN',
'EN',
'L',
'N',
'N',
'EN',
'EN',
'EN',
'EN',
'EN',
'EN',
'ES',
'ES',
'N',
'N',
'N',
'L',
'EN',
'EN',
'EN',
'EN',
'EN',
'EN',
'EN',
'EN',
'EN',
'EN',
'ES',
'ES',
'N',
'N',
'N',
'N',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'N',
'N',
'N',
'ET',
'ET',
'ET',
'ET',
'ET',
'ET',
'ET',
'ET',
'ET',
'ET',
'ET',
'ET',
'ET',
'ET',
'ET',
'ET',
'ET',
'ET',
'ET',
'ET',
'ET',
'ET',
'ET',
'ET',
'ET',
'ET',
'ET',
'ET',
'ET',
'ET',
'ET',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'L',
'L',
'L',
'L',
'L',
'N',
'N',
'N',
'N',
'N',
'R',
'NSM',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'ES',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'N',
'R',
'R',
'R',
'R',
'R',
'N',
'R',
'N',
'R',
'R',
'N',
'R',
'R',
'N',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'R',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'NSM',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'CS',
'N',
'CS',
'N',
'N',
'CS',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'ET',
'N',
'N',
'ES',
'ES',
'N',
'N',
'N',
'N',
'N',
'ET',
'ET',
'N',
'N',
'N',
'N',
'N',
'AL',
'AL',
'AL',
'AL',
'AL',
'N',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'AL',
'N',
'N',
'BN',
'N',
'N',
'N',
'ET',
'ET',
'ET',
'N',
'N',
'N',
'N',
'N',
'ES',
'CS',
'ES',
'CS',
'CS',
'EN',
'EN',
'EN',
'EN',
'EN',
'EN',
'EN',
'EN',
'EN',
'EN',
'CS',
'N',
'N',
'N',
'N',
'N',
'N',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'N',
'N',
'N',
'N',
'N',
'N',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'L',
'N',
'N',
'N',
'L',
'L',
'L',
'L',
'L',
'L',
'N',
'N',
'L',
'L',
'L',
'L',
'L',
'L',
'N',
'N',
'L',
'L',
'L',
'L',
'L',
'L',
'N',
'N',
'L',
'L',
'L',
'N',
'N',
'N',
'ET',
'ET',
'N',
'N',
'N',
'ET',
'ET',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
'N',
],
r2 = new t3.__bidiEngine__({ isInputVisual: true })
t3.API.events.push([
'postProcessText',
function (t4) {
var e3 = t4.text,
n2 = (t4.x, t4.y, t4.options || {}),
i2 = (t4.mutex, n2.lang, [])
if (
((n2.isInputVisual =
'boolean' != typeof n2.isInputVisual || n2.isInputVisual),
r2.setOptions(n2),
'[object Array]' === Object.prototype.toString.call(e3))
) {
var a2 = 0
for (i2 = [], a2 = 0; a2 < e3.length; a2 += 1)
'[object Array]' === Object.prototype.toString.call(e3[a2])
? i2.push([r2.doBidiReorder(e3[a2][0]), e3[a2][1], e3[a2][2]])
: i2.push([r2.doBidiReorder(e3[a2])])
t4.text = i2
} else t4.text = r2.doBidiReorder(e3)
r2.setOptions({ isInputVisual: true })
},
])
})(E$1),
(E$1.API.TTFFont = (function () {
function t3(t4) {
var e2
if (
((this.rawData = t4),
(e2 = this.contents = new ne(t4)),
(this.contents.pos = 4),
'ttcf' === e2.readString(4))
)
throw new Error('TTCF not supported.')
;(e2.pos = 0),
this.parse(),
(this.subset = new Le(this)),
this.registerTTF()
}
return (
(t3.open = function (e2) {
return new t3(e2)
}),
(t3.prototype.parse = function () {
return (
(this.directory = new ie(this.contents)),
(this.head = new se(this)),
(this.name = new pe(this)),
(this.cmap = new ue(this)),
(this.toUnicode = {}),
(this.hhea = new he(this)),
(this.maxp = new ge(this)),
(this.hmtx = new me(this)),
(this.post = new fe(this)),
(this.os2 = new le(this)),
(this.loca = new Ne(this)),
(this.glyf = new be(this)),
(this.ascender =
(this.os2.exists && this.os2.ascender) || this.hhea.ascender),
(this.decender =
(this.os2.exists && this.os2.decender) || this.hhea.decender),
(this.lineGap =
(this.os2.exists && this.os2.lineGap) || this.hhea.lineGap),
(this.bbox = [
this.head.xMin,
this.head.yMin,
this.head.xMax,
this.head.yMax,
])
)
}),
(t3.prototype.registerTTF = function () {
var t4, e2, r2, n2, i2
if (
((this.scaleFactor = 1e3 / this.head.unitsPerEm),
(this.bbox = function () {
var e3, r3, n3, i3
for (i3 = [], e3 = 0, r3 = (n3 = this.bbox).length; e3 < r3; e3++)
(t4 = n3[e3]), i3.push(Math.round(t4 * this.scaleFactor))
return i3
}.call(this)),
(this.stemV = 0),
this.post.exists
? ((r2 = 255 & (n2 = this.post.italic_angle)),
0 != (32768 & (e2 = n2 >> 16)) && (e2 = -(1 + (65535 ^ e2))),
(this.italicAngle = +(e2 + '.' + r2)))
: (this.italicAngle = 0),
(this.ascender = Math.round(this.ascender * this.scaleFactor)),
(this.decender = Math.round(this.decender * this.scaleFactor)),
(this.lineGap = Math.round(this.lineGap * this.scaleFactor)),
(this.capHeight =
(this.os2.exists && this.os2.capHeight) || this.ascender),
(this.xHeight = (this.os2.exists && this.os2.xHeight) || 0),
(this.familyClass =
((this.os2.exists && this.os2.familyClass) || 0) >> 8),
(this.isSerif =
1 === (i2 = this.familyClass) ||
2 === i2 ||
3 === i2 ||
4 === i2 ||
5 === i2 ||
7 === i2),
(this.isScript = 10 === this.familyClass),
(this.flags = 0),
this.post.isFixedPitch && (this.flags |= 1),
this.isSerif && (this.flags |= 2),
this.isScript && (this.flags |= 8),
0 !== this.italicAngle && (this.flags |= 64),
(this.flags |= 32),
!this.cmap.unicode)
)
throw new Error('No unicode cmap for font')
}),
(t3.prototype.characterToGlyph = function (t4) {
var e2
return (null != (e2 = this.cmap.unicode) ? e2.codeMap[t4] : void 0) || 0
}),
(t3.prototype.widthOfGlyph = function (t4) {
var e2
return (
(e2 = 1e3 / this.head.unitsPerEm), this.hmtx.forGlyph(t4).advance * e2
)
}),
(t3.prototype.widthOfString = function (t4, e2, r2) {
var n2, i2, a2, o2
for (
a2 = 0, i2 = 0, o2 = (t4 = '' + t4).length;
0 <= o2 ? i2 < o2 : i2 > o2;
i2 = 0 <= o2 ? ++i2 : --i2
)
(n2 = t4.charCodeAt(i2)),
(a2 +=
this.widthOfGlyph(this.characterToGlyph(n2)) + r2 * (1e3 / e2) ||
0)
return a2 * (e2 / 1e3)
}),
(t3.prototype.lineHeight = function (t4, e2) {
var r2
return (
null == e2 && (e2 = false),
(r2 = e2 ? this.lineGap : 0),
((this.ascender + r2 - this.decender) / 1e3) * t4
)
}),
t3
)
})())
var re,
ne = (function () {
function t3(t4) {
;(this.data = null != t4 ? t4 : []),
(this.pos = 0),
(this.length = this.data.length)
}
return (
(t3.prototype.readByte = function () {
return this.data[this.pos++]
}),
(t3.prototype.writeByte = function (t4) {
return (this.data[this.pos++] = t4)
}),
(t3.prototype.readUInt32 = function () {
return (
16777216 * this.readByte() +
(this.readByte() << 16) +
(this.readByte() << 8) +
this.readByte()
)
}),
(t3.prototype.writeUInt32 = function (t4) {
return (
this.writeByte((t4 >>> 24) & 255),
this.writeByte((t4 >> 16) & 255),
this.writeByte((t4 >> 8) & 255),
this.writeByte(255 & t4)
)
}),
(t3.prototype.readInt32 = function () {
var t4
return (t4 = this.readUInt32()) >= 2147483648 ? t4 - 4294967296 : t4
}),
(t3.prototype.writeInt32 = function (t4) {
return t4 < 0 && (t4 += 4294967296), this.writeUInt32(t4)
}),
(t3.prototype.readUInt16 = function () {
return (this.readByte() << 8) | this.readByte()
}),
(t3.prototype.writeUInt16 = function (t4) {
return this.writeByte((t4 >> 8) & 255), this.writeByte(255 & t4)
}),
(t3.prototype.readInt16 = function () {
var t4
return (t4 = this.readUInt16()) >= 32768 ? t4 - 65536 : t4
}),
(t3.prototype.writeInt16 = function (t4) {
return t4 < 0 && (t4 += 65536), this.writeUInt16(t4)
}),
(t3.prototype.readString = function (t4) {
var e2, r2
for (
r2 = [], e2 = 0;
0 <= t4 ? e2 < t4 : e2 > t4;
e2 = 0 <= t4 ? ++e2 : --e2
)
r2[e2] = String.fromCharCode(this.readByte())
return r2.join('')
}),
(t3.prototype.writeString = function (t4) {
var e2, r2, n2
for (
n2 = [], e2 = 0, r2 = t4.length;
0 <= r2 ? e2 < r2 : e2 > r2;
e2 = 0 <= r2 ? ++e2 : --e2
)
n2.push(this.writeByte(t4.charCodeAt(e2)))
return n2
}),
(t3.prototype.readShort = function () {
return this.readInt16()
}),
(t3.prototype.writeShort = function (t4) {
return this.writeInt16(t4)
}),
(t3.prototype.readLongLong = function () {
var t4, e2, r2, n2, i2, a2, o2, s2
return (
(t4 = this.readByte()),
(e2 = this.readByte()),
(r2 = this.readByte()),
(n2 = this.readByte()),
(i2 = this.readByte()),
(a2 = this.readByte()),
(o2 = this.readByte()),
(s2 = this.readByte()),
128 & t4
? -1 *
(72057594037927940 * (255 ^ t4) +
281474976710656 * (255 ^ e2) +
1099511627776 * (255 ^ r2) +
4294967296 * (255 ^ n2) +
16777216 * (255 ^ i2) +
65536 * (255 ^ a2) +
256 * (255 ^ o2) +
(255 ^ s2) +
1)
: 72057594037927940 * t4 +
281474976710656 * e2 +
1099511627776 * r2 +
4294967296 * n2 +
16777216 * i2 +
65536 * a2 +
256 * o2 +
s2
)
}),
(t3.prototype.writeLongLong = function (t4) {
var e2, r2
return (
(e2 = Math.floor(t4 / 4294967296)),
(r2 = 4294967295 & t4),
this.writeByte((e2 >> 24) & 255),
this.writeByte((e2 >> 16) & 255),
this.writeByte((e2 >> 8) & 255),
this.writeByte(255 & e2),
this.writeByte((r2 >> 24) & 255),
this.writeByte((r2 >> 16) & 255),
this.writeByte((r2 >> 8) & 255),
this.writeByte(255 & r2)
)
}),
(t3.prototype.readInt = function () {
return this.readInt32()
}),
(t3.prototype.writeInt = function (t4) {
return this.writeInt32(t4)
}),
(t3.prototype.read = function (t4) {
var e2, r2
for (
e2 = [], r2 = 0;
0 <= t4 ? r2 < t4 : r2 > t4;
r2 = 0 <= t4 ? ++r2 : --r2
)
e2.push(this.readByte())
return e2
}),
(t3.prototype.write = function (t4) {
var e2, r2, n2, i2
for (i2 = [], r2 = 0, n2 = t4.length; r2 < n2; r2++)
(e2 = t4[r2]), i2.push(this.writeByte(e2))
return i2
}),
t3
)
})(),
ie = (function () {
var t3
function e2(t4) {
var e3, r2, n2
for (
this.scalarType = t4.readInt(),
this.tableCount = t4.readShort(),
this.searchRange = t4.readShort(),
this.entrySelector = t4.readShort(),
this.rangeShift = t4.readShort(),
this.tables = {},
r2 = 0,
n2 = this.tableCount;
0 <= n2 ? r2 < n2 : r2 > n2;
r2 = 0 <= n2 ? ++r2 : --r2
)
(e3 = {
tag: t4.readString(4),
checksum: t4.readInt(),
offset: t4.readInt(),
length: t4.readInt(),
}),
(this.tables[e3.tag] = e3)
}
return (
(e2.prototype.encode = function (e3) {
var r2, n2, i2, a2, o2, s2, c2, u2, h2, l2, f2, d3, p2
for (p2 in ((f2 = Object.keys(e3).length),
(s2 = Math.log(2)),
(h2 = 16 * Math.floor(Math.log(f2) / s2)),
(a2 = Math.floor(h2 / s2)),
(u2 = 16 * f2 - h2),
(n2 = new ne()).writeInt(this.scalarType),
n2.writeShort(f2),
n2.writeShort(h2),
n2.writeShort(a2),
n2.writeShort(u2),
(i2 = 16 * f2),
(c2 = n2.pos + i2),
(o2 = null),
(d3 = []),
e3))
for (
l2 = e3[p2],
n2.writeString(p2),
n2.writeInt(t3(l2)),
n2.writeInt(c2),
n2.writeInt(l2.length),
d3 = d3.concat(l2),
'head' === p2 && (o2 = c2),
c2 += l2.length;
c2 % 4;
)
d3.push(0), c2++
return (
n2.write(d3),
(r2 = 2981146554 - t3(n2.data)),
(n2.pos = o2 + 8),
n2.writeUInt32(r2),
n2.data
)
}),
(t3 = function (t4) {
var e3, r2, n2, i2
for (t4 = ve.call(t4); t4.length % 4; ) t4.push(0)
for (
n2 = new ne(t4), r2 = 0, e3 = 0, i2 = t4.length;
e3 < i2;
e3 = e3 += 4
)
r2 += n2.readUInt32()
return 4294967295 & r2
}),
e2
)
})(),
ae = {}.hasOwnProperty,
oe = function (t3, e2) {
for (var r2 in e2) ae.call(e2, r2) && (t3[r2] = e2[r2])
function n2() {
this.constructor = t3
}
return (
(n2.prototype = e2.prototype),
(t3.prototype = new n2()),
(t3.__super__ = e2.prototype),
t3
)
}
re = (function () {
function t3(t4) {
var e2
;(this.file = t4),
(e2 = this.file.directory.tables[this.tag]),
(this.exists = !!e2),
e2 &&
((this.offset = e2.offset),
(this.length = e2.length),
this.parse(this.file.contents))
}
return (
(t3.prototype.parse = function () {}),
(t3.prototype.encode = function () {}),
(t3.prototype.raw = function () {
return this.exists
? ((this.file.contents.pos = this.offset),
this.file.contents.read(this.length))
: null
}),
t3
)
})()
var se = (function (t3) {
function e2() {
return e2.__super__.constructor.apply(this, arguments)
}
return (
oe(e2, re),
(e2.prototype.tag = 'head'),
(e2.prototype.parse = function (t4) {
return (
(t4.pos = this.offset),
(this.version = t4.readInt()),
(this.revision = t4.readInt()),
(this.checkSumAdjustment = t4.readInt()),
(this.magicNumber = t4.readInt()),
(this.flags = t4.readShort()),
(this.unitsPerEm = t4.readShort()),
(this.created = t4.readLongLong()),
(this.modified = t4.readLongLong()),
(this.xMin = t4.readShort()),
(this.yMin = t4.readShort()),
(this.xMax = t4.readShort()),
(this.yMax = t4.readShort()),
(this.macStyle = t4.readShort()),
(this.lowestRecPPEM = t4.readShort()),
(this.fontDirectionHint = t4.readShort()),
(this.indexToLocFormat = t4.readShort()),
(this.glyphDataFormat = t4.readShort())
)
}),
(e2.prototype.encode = function (t4) {
var e3
return (
(e3 = new ne()).writeInt(this.version),
e3.writeInt(this.revision),
e3.writeInt(this.checkSumAdjustment),
e3.writeInt(this.magicNumber),
e3.writeShort(this.flags),
e3.writeShort(this.unitsPerEm),
e3.writeLongLong(this.created),
e3.writeLongLong(this.modified),
e3.writeShort(this.xMin),
e3.writeShort(this.yMin),
e3.writeShort(this.xMax),
e3.writeShort(this.yMax),
e3.writeShort(this.macStyle),
e3.writeShort(this.lowestRecPPEM),
e3.writeShort(this.fontDirectionHint),
e3.writeShort(t4),
e3.writeShort(this.glyphDataFormat),
e3.data
)
}),
e2
)
})(),
ce = (function () {
function t3(t4, e2) {
var r2, n2, i2, a2, o2, s2, c2, u2, h2, l2, f2, d3, p2, g2, m2, v4, b2
switch (
((this.platformID = t4.readUInt16()),
(this.encodingID = t4.readShort()),
(this.offset = e2 + t4.readInt()),
(h2 = t4.pos),
(t4.pos = this.offset),
(this.format = t4.readUInt16()),
(this.length = t4.readUInt16()),
(this.language = t4.readUInt16()),
(this.isUnicode =
(3 === this.platformID &&
1 === this.encodingID &&
4 === this.format) ||
(0 === this.platformID && 4 === this.format)),
(this.codeMap = {}),
this.format)
) {
case 0:
for (s2 = 0; s2 < 256; ++s2) this.codeMap[s2] = t4.readByte()
break
case 4:
for (
f2 = t4.readUInt16(),
l2 = f2 / 2,
t4.pos += 6,
i2 = (function () {
var e3, r3
for (
r3 = [], s2 = e3 = 0;
0 <= l2 ? e3 < l2 : e3 > l2;
s2 = 0 <= l2 ? ++e3 : --e3
)
r3.push(t4.readUInt16())
return r3
})(),
t4.pos += 2,
p2 = (function () {
var e3, r3
for (
r3 = [], s2 = e3 = 0;
0 <= l2 ? e3 < l2 : e3 > l2;
s2 = 0 <= l2 ? ++e3 : --e3
)
r3.push(t4.readUInt16())
return r3
})(),
c2 = (function () {
var e3, r3
for (
r3 = [], s2 = e3 = 0;
0 <= l2 ? e3 < l2 : e3 > l2;
s2 = 0 <= l2 ? ++e3 : --e3
)
r3.push(t4.readUInt16())
return r3
})(),
u2 = (function () {
var e3, r3
for (
r3 = [], s2 = e3 = 0;
0 <= l2 ? e3 < l2 : e3 > l2;
s2 = 0 <= l2 ? ++e3 : --e3
)
r3.push(t4.readUInt16())
return r3
})(),
n2 = (this.length - t4.pos + this.offset) / 2,
o2 = (function () {
var e3, r3
for (
r3 = [], s2 = e3 = 0;
0 <= n2 ? e3 < n2 : e3 > n2;
s2 = 0 <= n2 ? ++e3 : --e3
)
r3.push(t4.readUInt16())
return r3
})(),
s2 = m2 = 0,
b2 = i2.length;
m2 < b2;
s2 = ++m2
)
for (
g2 = i2[s2], r2 = v4 = d3 = p2[s2];
d3 <= g2 ? v4 <= g2 : v4 >= g2;
r2 = d3 <= g2 ? ++v4 : --v4
)
0 === u2[s2]
? (a2 = r2 + c2[s2])
: 0 !== (a2 = o2[u2[s2] / 2 + (r2 - d3) - (l2 - s2)] || 0) &&
(a2 += c2[s2]),
(this.codeMap[r2] = 65535 & a2)
}
t4.pos = h2
}
return (
(t3.encode = function (t4, e2) {
var r2,
n2,
i2,
a2,
o2,
s2,
c2,
u2,
h2,
l2,
f2,
d3,
p2,
g2,
m2,
v4,
b2,
y2,
w2,
N2,
L2,
A2,
x2,
S2,
_2,
P2,
k2,
I2,
F2,
C2,
j2,
O2,
B3,
M2,
E2,
q2,
D2,
R2,
T2,
U2,
z2,
H4,
W2,
V2,
G2,
Y2
switch (
((I2 = new ne()),
(a2 = Object.keys(t4).sort(function (t5, e3) {
return t5 - e3
})),
e2)
) {
case 'macroman':
for (
p2 = 0,
g2 = (function () {
var t5 = []
for (d3 = 0; d3 < 256; ++d3) t5.push(0)
return t5
})(),
v4 = { 0: 0 },
i2 = {},
F2 = 0,
B3 = a2.length;
F2 < B3;
F2++
)
null == v4[(W2 = t4[(n2 = a2[F2])])] && (v4[W2] = ++p2),
(i2[n2] = { old: t4[n2], new: v4[t4[n2]] }),
(g2[n2] = v4[t4[n2]])
return (
I2.writeUInt16(1),
I2.writeUInt16(0),
I2.writeUInt32(12),
I2.writeUInt16(0),
I2.writeUInt16(262),
I2.writeUInt16(0),
I2.write(g2),
{ charMap: i2, subtable: I2.data, maxGlyphID: p2 + 1 }
)
case 'unicode':
for (
P2 = [],
h2 = [],
b2 = 0,
v4 = {},
r2 = {},
m2 = c2 = null,
C2 = 0,
M2 = a2.length;
C2 < M2;
C2++
)
null == v4[(w2 = t4[(n2 = a2[C2])])] && (v4[w2] = ++b2),
(r2[n2] = { old: w2, new: v4[w2] }),
(o2 = v4[w2] - n2),
(null != m2 && o2 === c2) ||
(m2 && h2.push(m2), P2.push(n2), (c2 = o2)),
(m2 = n2)
for (
m2 && h2.push(m2),
h2.push(65535),
P2.push(65535),
S2 = 2 * (x2 = P2.length),
A2 = 2 * Math.pow(Math.log(x2) / Math.LN2, 2),
l2 = Math.log(A2 / 2) / Math.LN2,
L2 = 2 * x2 - A2,
s2 = [],
N2 = [],
f2 = [],
d3 = j2 = 0,
E2 = P2.length;
j2 < E2;
d3 = ++j2
) {
if (((_2 = P2[d3]), (u2 = h2[d3]), 65535 === _2)) {
s2.push(0), N2.push(0)
break
}
if (_2 - (k2 = r2[_2].new) >= 32768)
for (
s2.push(0), N2.push(2 * (f2.length + x2 - d3)), n2 = O2 = _2;
_2 <= u2 ? O2 <= u2 : O2 >= u2;
n2 = _2 <= u2 ? ++O2 : --O2
)
f2.push(r2[n2].new)
else s2.push(k2 - _2), N2.push(0)
}
for (
I2.writeUInt16(3),
I2.writeUInt16(1),
I2.writeUInt32(12),
I2.writeUInt16(4),
I2.writeUInt16(16 + 8 * x2 + 2 * f2.length),
I2.writeUInt16(0),
I2.writeUInt16(S2),
I2.writeUInt16(A2),
I2.writeUInt16(l2),
I2.writeUInt16(L2),
z2 = 0,
q2 = h2.length;
z2 < q2;
z2++
)
(n2 = h2[z2]), I2.writeUInt16(n2)
for (I2.writeUInt16(0), H4 = 0, D2 = P2.length; H4 < D2; H4++)
(n2 = P2[H4]), I2.writeUInt16(n2)
for (V2 = 0, R2 = s2.length; V2 < R2; V2++)
(o2 = s2[V2]), I2.writeUInt16(o2)
for (G2 = 0, T2 = N2.length; G2 < T2; G2++)
(y2 = N2[G2]), I2.writeUInt16(y2)
for (Y2 = 0, U2 = f2.length; Y2 < U2; Y2++)
(p2 = f2[Y2]), I2.writeUInt16(p2)
return { charMap: r2, subtable: I2.data, maxGlyphID: b2 + 1 }
}
}),
t3
)
})(),
ue = (function (t3) {
function e2() {
return e2.__super__.constructor.apply(this, arguments)
}
return (
oe(e2, re),
(e2.prototype.tag = 'cmap'),
(e2.prototype.parse = function (t4) {
var e3, r2, n2
for (
t4.pos = this.offset,
this.version = t4.readUInt16(),
n2 = t4.readUInt16(),
this.tables = [],
this.unicode = null,
r2 = 0;
0 <= n2 ? r2 < n2 : r2 > n2;
r2 = 0 <= n2 ? ++r2 : --r2
)
(e3 = new ce(t4, this.offset)),
this.tables.push(e3),
e3.isUnicode && null == this.unicode && (this.unicode = e3)
return true
}),
(e2.encode = function (t4, e3) {
var r2, n2
return (
null == e3 && (e3 = 'macroman'),
(r2 = ce.encode(t4, e3)),
(n2 = new ne()).writeUInt16(0),
n2.writeUInt16(1),
(r2.table = n2.data.concat(r2.subtable)),
r2
)
}),
e2
)
})(),
he = (function (t3) {
function e2() {
return e2.__super__.constructor.apply(this, arguments)
}
return (
oe(e2, re),
(e2.prototype.tag = 'hhea'),
(e2.prototype.parse = function (t4) {
return (
(t4.pos = this.offset),
(this.version = t4.readInt()),
(this.ascender = t4.readShort()),
(this.decender = t4.readShort()),
(this.lineGap = t4.readShort()),
(this.advanceWidthMax = t4.readShort()),
(this.minLeftSideBearing = t4.readShort()),
(this.minRightSideBearing = t4.readShort()),
(this.xMaxExtent = t4.readShort()),
(this.caretSlopeRise = t4.readShort()),
(this.caretSlopeRun = t4.readShort()),
(this.caretOffset = t4.readShort()),
(t4.pos += 8),
(this.metricDataFormat = t4.readShort()),
(this.numberOfMetrics = t4.readUInt16())
)
}),
e2
)
})(),
le = (function (t3) {
function e2() {
return e2.__super__.constructor.apply(this, arguments)
}
return (
oe(e2, re),
(e2.prototype.tag = 'OS/2'),
(e2.prototype.parse = function (t4) {
if (
((t4.pos = this.offset),
(this.version = t4.readUInt16()),
(this.averageCharWidth = t4.readShort()),
(this.weightClass = t4.readUInt16()),
(this.widthClass = t4.readUInt16()),
(this.type = t4.readShort()),
(this.ySubscriptXSize = t4.readShort()),
(this.ySubscriptYSize = t4.readShort()),
(this.ySubscriptXOffset = t4.readShort()),
(this.ySubscriptYOffset = t4.readShort()),
(this.ySuperscriptXSize = t4.readShort()),
(this.ySuperscriptYSize = t4.readShort()),
(this.ySuperscriptXOffset = t4.readShort()),
(this.ySuperscriptYOffset = t4.readShort()),
(this.yStrikeoutSize = t4.readShort()),
(this.yStrikeoutPosition = t4.readShort()),
(this.familyClass = t4.readShort()),
(this.panose = (function () {
var e3, r2
for (r2 = [], e3 = 0; e3 < 10; ++e3) r2.push(t4.readByte())
return r2
})()),
(this.charRange = (function () {
var e3, r2
for (r2 = [], e3 = 0; e3 < 4; ++e3) r2.push(t4.readInt())
return r2
})()),
(this.vendorID = t4.readString(4)),
(this.selection = t4.readShort()),
(this.firstCharIndex = t4.readShort()),
(this.lastCharIndex = t4.readShort()),
this.version > 0 &&
((this.ascent = t4.readShort()),
(this.descent = t4.readShort()),
(this.lineGap = t4.readShort()),
(this.winAscent = t4.readShort()),
(this.winDescent = t4.readShort()),
(this.codePageRange = (function () {
var e3, r2
for (r2 = [], e3 = 0; e3 < 2; e3 = ++e3) r2.push(t4.readInt())
return r2
})()),
this.version > 1))
)
return (
(this.xHeight = t4.readShort()),
(this.capHeight = t4.readShort()),
(this.defaultChar = t4.readShort()),
(this.breakChar = t4.readShort()),
(this.maxContext = t4.readShort())
)
}),
e2
)
})(),
fe = (function (t3) {
function e2() {
return e2.__super__.constructor.apply(this, arguments)
}
return (
oe(e2, re),
(e2.prototype.tag = 'post'),
(e2.prototype.parse = function (t4) {
var e3, r2, n2
switch (
((t4.pos = this.offset),
(this.format = t4.readInt()),
(this.italicAngle = t4.readInt()),
(this.underlinePosition = t4.readShort()),
(this.underlineThickness = t4.readShort()),
(this.isFixedPitch = t4.readInt()),
(this.minMemType42 = t4.readInt()),
(this.maxMemType42 = t4.readInt()),
(this.minMemType1 = t4.readInt()),
(this.maxMemType1 = t4.readInt()),
this.format)
) {
case 65536:
break
case 131072:
var i2
for (
r2 = t4.readUInt16(), this.glyphNameIndex = [], i2 = 0;
0 <= r2 ? i2 < r2 : i2 > r2;
i2 = 0 <= r2 ? ++i2 : --i2
)
this.glyphNameIndex.push(t4.readUInt16())
for (this.names = [], n2 = []; t4.pos < this.offset + this.length; )
(e3 = t4.readByte()), n2.push(this.names.push(t4.readString(e3)))
return n2
case 151552:
return (r2 = t4.readUInt16()), (this.offsets = t4.read(r2))
case 196608:
break
case 262144:
return (this.map = function () {
var e4, r3, n3
for (
n3 = [], i2 = e4 = 0, r3 = this.file.maxp.numGlyphs;
0 <= r3 ? e4 < r3 : e4 > r3;
i2 = 0 <= r3 ? ++e4 : --e4
)
n3.push(t4.readUInt32())
return n3
}.call(this))
}
}),
e2
)
})(),
de = function (t3, e2) {
;(this.raw = t3),
(this.length = t3.length),
(this.platformID = e2.platformID),
(this.encodingID = e2.encodingID),
(this.languageID = e2.languageID)
},
pe = (function (t3) {
function e2() {
return e2.__super__.constructor.apply(this, arguments)
}
return (
oe(e2, re),
(e2.prototype.tag = 'name'),
(e2.prototype.parse = function (t4) {
var e3, r2, n2, i2, a2, o2, s2, c2, u2, h2, l2
for (
t4.pos = this.offset,
t4.readShort(),
e3 = t4.readShort(),
o2 = t4.readShort(),
r2 = [],
i2 = 0;
0 <= e3 ? i2 < e3 : i2 > e3;
i2 = 0 <= e3 ? ++i2 : --i2
)
r2.push({
platformID: t4.readShort(),
encodingID: t4.readShort(),
languageID: t4.readShort(),
nameID: t4.readShort(),
length: t4.readShort(),
offset: this.offset + o2 + t4.readShort(),
})
for (s2 = {}, i2 = u2 = 0, h2 = r2.length; u2 < h2; i2 = ++u2)
(n2 = r2[i2]),
(t4.pos = n2.offset),
(c2 = t4.readString(n2.length)),
(a2 = new de(c2, n2)),
null == s2[(l2 = n2.nameID)] && (s2[l2] = []),
s2[n2.nameID].push(a2)
;(this.strings = s2),
(this.copyright = s2[0]),
(this.fontFamily = s2[1]),
(this.fontSubfamily = s2[2]),
(this.uniqueSubfamily = s2[3]),
(this.fontName = s2[4]),
(this.version = s2[5])
try {
this.postscriptName = s2[6][0].raw.replace(
/[\x00-\x19\x80-\xff]/g,
''
)
} catch (t5) {
this.postscriptName = s2[4][0].raw.replace(
/[\x00-\x19\x80-\xff]/g,
''
)
}
return (
(this.trademark = s2[7]),
(this.manufacturer = s2[8]),
(this.designer = s2[9]),
(this.description = s2[10]),
(this.vendorUrl = s2[11]),
(this.designerUrl = s2[12]),
(this.license = s2[13]),
(this.licenseUrl = s2[14]),
(this.preferredFamily = s2[15]),
(this.preferredSubfamily = s2[17]),
(this.compatibleFull = s2[18]),
(this.sampleText = s2[19])
)
}),
e2
)
})(),
ge = (function (t3) {
function e2() {
return e2.__super__.constructor.apply(this, arguments)
}
return (
oe(e2, re),
(e2.prototype.tag = 'maxp'),
(e2.prototype.parse = function (t4) {
return (
(t4.pos = this.offset),
(this.version = t4.readInt()),
(this.numGlyphs = t4.readUInt16()),
(this.maxPoints = t4.readUInt16()),
(this.maxContours = t4.readUInt16()),
(this.maxCompositePoints = t4.readUInt16()),
(this.maxComponentContours = t4.readUInt16()),
(this.maxZones = t4.readUInt16()),
(this.maxTwilightPoints = t4.readUInt16()),
(this.maxStorage = t4.readUInt16()),
(this.maxFunctionDefs = t4.readUInt16()),
(this.maxInstructionDefs = t4.readUInt16()),
(this.maxStackElements = t4.readUInt16()),
(this.maxSizeOfInstructions = t4.readUInt16()),
(this.maxComponentElements = t4.readUInt16()),
(this.maxComponentDepth = t4.readUInt16())
)
}),
e2
)
})(),
me = (function (t3) {
function e2() {
return e2.__super__.constructor.apply(this, arguments)
}
return (
oe(e2, re),
(e2.prototype.tag = 'hmtx'),
(e2.prototype.parse = function (t4) {
var e3, r2, n2, i2, a2, o2, s2
for (
t4.pos = this.offset,
this.metrics = [],
e3 = 0,
o2 = this.file.hhea.numberOfMetrics;
0 <= o2 ? e3 < o2 : e3 > o2;
e3 = 0 <= o2 ? ++e3 : --e3
)
this.metrics.push({ advance: t4.readUInt16(), lsb: t4.readInt16() })
for (
n2 = this.file.maxp.numGlyphs - this.file.hhea.numberOfMetrics,
this.leftSideBearings = (function () {
var r3, i3
for (
i3 = [], e3 = r3 = 0;
0 <= n2 ? r3 < n2 : r3 > n2;
e3 = 0 <= n2 ? ++r3 : --r3
)
i3.push(t4.readInt16())
return i3
})(),
this.widths = function () {
var t5, e4, r3, n3
for (
n3 = [], t5 = 0, e4 = (r3 = this.metrics).length;
t5 < e4;
t5++
)
(i2 = r3[t5]), n3.push(i2.advance)
return n3
}.call(this),
r2 = this.widths[this.widths.length - 1],
s2 = [],
e3 = a2 = 0;
0 <= n2 ? a2 < n2 : a2 > n2;
e3 = 0 <= n2 ? ++a2 : --a2
)
s2.push(this.widths.push(r2))
return s2
}),
(e2.prototype.forGlyph = function (t4) {
return t4 in this.metrics
? this.metrics[t4]
: {
advance: this.metrics[this.metrics.length - 1].advance,
lsb: this.leftSideBearings[t4 - this.metrics.length],
}
}),
e2
)
})(),
ve = [].slice,
be = (function (t3) {
function e2() {
return e2.__super__.constructor.apply(this, arguments)
}
return (
oe(e2, re),
(e2.prototype.tag = 'glyf'),
(e2.prototype.parse = function () {
return (this.cache = {})
}),
(e2.prototype.glyphFor = function (t4) {
var e3, r2, n2, i2, a2, o2, s2, c2, u2, h2
return t4 in this.cache
? this.cache[t4]
: ((i2 = this.file.loca),
(e3 = this.file.contents),
(r2 = i2.indexOf(t4)),
0 === (n2 = i2.lengthOf(t4))
? (this.cache[t4] = null)
: ((e3.pos = this.offset + r2),
(a2 = (o2 = new ne(e3.read(n2))).readShort()),
(c2 = o2.readShort()),
(h2 = o2.readShort()),
(s2 = o2.readShort()),
(u2 = o2.readShort()),
(this.cache[t4] =
-1 === a2
? new we(o2, c2, h2, s2, u2)
: new ye(o2, a2, c2, h2, s2, u2)),
this.cache[t4]))
}),
(e2.prototype.encode = function (t4, e3, r2) {
var n2, i2, a2, o2, s2
for (a2 = [], i2 = [], o2 = 0, s2 = e3.length; o2 < s2; o2++)
(n2 = t4[e3[o2]]),
i2.push(a2.length),
n2 && (a2 = a2.concat(n2.encode(r2)))
return i2.push(a2.length), { table: a2, offsets: i2 }
}),
e2
)
})(),
ye = (function () {
function t3(t4, e2, r2, n2, i2, a2) {
;(this.raw = t4),
(this.numberOfContours = e2),
(this.xMin = r2),
(this.yMin = n2),
(this.xMax = i2),
(this.yMax = a2),
(this.compound = false)
}
return (
(t3.prototype.encode = function () {
return this.raw.data
}),
t3
)
})(),
we = (function () {
function t3(t4, e2, r2, n2, i2) {
var a2, o2
for (
this.raw = t4,
this.xMin = e2,
this.yMin = r2,
this.xMax = n2,
this.yMax = i2,
this.compound = true,
this.glyphIDs = [],
this.glyphOffsets = [],
a2 = this.raw;
(o2 = a2.readShort()),
this.glyphOffsets.push(a2.pos),
this.glyphIDs.push(a2.readUInt16()),
32 & o2;
)
(a2.pos += 1 & o2 ? 4 : 2),
128 & o2
? (a2.pos += 8)
: 64 & o2
? (a2.pos += 4)
: 8 & o2 && (a2.pos += 2)
}
return (
(t3.prototype.encode = function () {
var t4, e2, r2
for (
e2 = new ne(ve.call(this.raw.data)),
t4 = 0,
r2 = this.glyphIDs.length;
t4 < r2;
++t4
)
e2.pos = this.glyphOffsets[t4]
return e2.data
}),
t3
)
})(),
Ne = (function (t3) {
function e2() {
return e2.__super__.constructor.apply(this, arguments)
}
return (
oe(e2, re),
(e2.prototype.tag = 'loca'),
(e2.prototype.parse = function (t4) {
var e3, r2
return (
(t4.pos = this.offset),
(e3 = this.file.head.indexToLocFormat),
(this.offsets =
0 === e3
? function () {
var e4, n2
for (n2 = [], r2 = 0, e4 = this.length; r2 < e4; r2 += 2)
n2.push(2 * t4.readUInt16())
return n2
}.call(this)
: function () {
var e4, n2
for (n2 = [], r2 = 0, e4 = this.length; r2 < e4; r2 += 4)
n2.push(t4.readUInt32())
return n2
}.call(this))
)
}),
(e2.prototype.indexOf = function (t4) {
return this.offsets[t4]
}),
(e2.prototype.lengthOf = function (t4) {
return this.offsets[t4 + 1] - this.offsets[t4]
}),
(e2.prototype.encode = function (t4, e3) {
for (
var r2 = new Uint32Array(this.offsets.length), n2 = 0, i2 = 0, a2 = 0;
a2 < r2.length;
++a2
)
if (((r2[a2] = n2), i2 < e3.length && e3[i2] == a2)) {
++i2, (r2[a2] = n2)
var o2 = this.offsets[a2],
s2 = this.offsets[a2 + 1] - o2
s2 > 0 && (n2 += s2)
}
for (var c2 = new Array(4 * r2.length), u2 = 0; u2 < r2.length; ++u2)
(c2[4 * u2 + 3] = 255 & r2[u2]),
(c2[4 * u2 + 2] = (65280 & r2[u2]) >> 8),
(c2[4 * u2 + 1] = (16711680 & r2[u2]) >> 16),
(c2[4 * u2] = (4278190080 & r2[u2]) >> 24)
return c2
}),
e2
)
})(),
Le = (function () {
function t3(t4) {
;(this.font = t4),
(this.subset = {}),
(this.unicodes = {}),
(this.next = 33)
}
return (
(t3.prototype.generateCmap = function () {
var t4, e2, r2, n2, i2
for (e2 in ((n2 = this.font.cmap.tables[0].codeMap),
(t4 = {}),
(i2 = this.subset)))
(r2 = i2[e2]), (t4[e2] = n2[r2])
return t4
}),
(t3.prototype.glyphsFor = function (t4) {
var e2, r2, n2, i2, a2, o2, s2
for (n2 = {}, a2 = 0, o2 = t4.length; a2 < o2; a2++)
n2[(i2 = t4[a2])] = this.font.glyf.glyphFor(i2)
for (i2 in ((e2 = []), n2))
(null != (r2 = n2[i2]) ? r2.compound : void 0) &&
e2.push.apply(e2, r2.glyphIDs)
if (e2.length > 0)
for (i2 in (s2 = this.glyphsFor(e2))) (r2 = s2[i2]), (n2[i2] = r2)
return n2
}),
(t3.prototype.encode = function (t4, e2) {
var r2, n2, i2, a2, o2, s2, c2, u2, h2, l2, f2, d3, p2, g2, m2
for (n2 in ((r2 = ue.encode(this.generateCmap(), 'unicode')),
(a2 = this.glyphsFor(t4)),
(f2 = { 0: 0 }),
(m2 = r2.charMap)))
f2[(s2 = m2[n2]).old] = s2.new
for (d3 in ((l2 = r2.maxGlyphID), a2)) d3 in f2 || (f2[d3] = l2++)
return (
(u2 = (function (t5) {
var e3, r3
for (e3 in ((r3 = {}), t5)) r3[t5[e3]] = e3
return r3
})(f2)),
(h2 = Object.keys(u2).sort(function (t5, e3) {
return t5 - e3
})),
(p2 = (function () {
var t5, e3, r3
for (r3 = [], t5 = 0, e3 = h2.length; t5 < e3; t5++)
(o2 = h2[t5]), r3.push(u2[o2])
return r3
})()),
(i2 = this.font.glyf.encode(a2, p2, f2)),
(c2 = this.font.loca.encode(i2.offsets, p2)),
(g2 = {
cmap: this.font.cmap.raw(),
glyf: i2.table,
loca: c2,
hmtx: this.font.hmtx.raw(),
hhea: this.font.hhea.raw(),
maxp: this.font.maxp.raw(),
post: this.font.post.raw(),
name: this.font.name.raw(),
head: this.font.head.encode(e2),
}),
this.font.os2.exists && (g2['OS/2'] = this.font.os2.raw()),
this.font.directory.encode(g2)
)
}),
t3
)
})()
E$1.API.PDFObject = (function () {
var t3
function e2() {}
return (
(t3 = function (t4, e3) {
return (Array(e3 + 1).join('0') + t4).slice(-e3)
}),
(e2.convert = function (r2) {
var n2, i2, a2, o2
if (Array.isArray(r2))
return (
'[' +
(function () {
var t4, i3, a3
for (a3 = [], t4 = 0, i3 = r2.length; t4 < i3; t4++)
(n2 = r2[t4]), a3.push(e2.convert(n2))
return a3
})().join(' ') +
']'
)
if ('string' == typeof r2) return '/' + r2
if (null != r2 ? r2.isString : void 0) return '(' + r2 + ')'
if (r2 instanceof Date)
return (
'(D:' +
t3(r2.getUTCFullYear(), 4) +
t3(r2.getUTCMonth(), 2) +
t3(r2.getUTCDate(), 2) +
t3(r2.getUTCHours(), 2) +
t3(r2.getUTCMinutes(), 2) +
t3(r2.getUTCSeconds(), 2) +
'Z)'
)
if ('[object Object]' === {}.toString.call(r2)) {
for (i2 in ((a2 = ['<<']), r2))
(o2 = r2[i2]), a2.push('/' + i2 + ' ' + e2.convert(o2))
return a2.push('>>'), a2.join('\n')
}
return '' + r2
}),
e2
)
})()
/*!
* html2canvas 1.4.1
* Copyright (c) 2022 Niklas von Hertzen
* Released under MIT License
*/
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
var extendStatics$2 = function (d3, b2) {
extendStatics$2 =
Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array &&
function (d4, b3) {
d4.__proto__ = b3
}) ||
function (d4, b3) {
for (var p2 in b3)
if (Object.prototype.hasOwnProperty.call(b3, p2)) d4[p2] = b3[p2]
}
return extendStatics$2(d3, b2)
}
function __extends$3(d3, b2) {
if (typeof b2 !== 'function' && b2 !== null)
throw new TypeError(
'Class extends value ' + String(b2) + ' is not a constructor or null'
)
extendStatics$2(d3, b2)
function __() {
this.constructor = d3
}
d3.prototype =
b2 === null ? Object.create(b2) : ((__.prototype = b2.prototype), new __())
}
var __assign$k = function () {
__assign$k =
Object.assign ||
function __assign2(t3) {
for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
s2 = arguments[i2]
for (var p2 in s2)
if (Object.prototype.hasOwnProperty.call(s2, p2)) t3[p2] = s2[p2]
}
return t3
}
return __assign$k.apply(this, arguments)
}
function __awaiter(thisArg, _arguments, P2, generator) {
function adopt(value2) {
return value2 instanceof P2
? value2
: new P2(function (resolve2) {
resolve2(value2)
})
}
return new (P2 || (P2 = Promise))(function (resolve2, reject2) {
function fulfilled(value2) {
try {
step(generator.next(value2))
} catch (e2) {
reject2(e2)
}
}
function rejected(value2) {
try {
step(generator['throw'](value2))
} catch (e2) {
reject2(e2)
}
}
function step(result) {
result.done
? resolve2(result.value)
: adopt(result.value).then(fulfilled, rejected)
}
step((generator = generator.apply(thisArg, _arguments || [])).next())
})
}
function __generator(thisArg, body) {
var _2 = {
label: 0,
sent: function () {
if (t3[0] & 1) throw t3[1]
return t3[1]
},
trys: [],
ops: [],
},
f2,
y2,
t3,
g2
return (
(g2 = { next: verb(0), throw: verb(1), return: verb(2) }),
typeof Symbol === 'function' &&
(g2[Symbol.iterator] = function () {
return this
}),
g2
)
function verb(n2) {
return function (v4) {
return step([n2, v4])
}
}
function step(op) {
if (f2) throw new TypeError('Generator is already executing.')
while (_2)
try {
if (
((f2 = 1),
y2 &&
(t3 =
op[0] & 2
? y2['return']
: op[0]
? y2['throw'] || ((t3 = y2['return']) && t3.call(y2), 0)
: y2.next) &&
!(t3 = t3.call(y2, op[1])).done)
)
return t3
if (((y2 = 0), t3)) op = [op[0] & 2, t3.value]
switch (op[0]) {
case 0:
case 1:
t3 = op
break
case 4:
_2.label++
return { value: op[1], done: false }
case 5:
_2.label++
y2 = op[1]
op = [0]
continue
case 7:
op = _2.ops.pop()
_2.trys.pop()
continue
default:
if (
!((t3 = _2.trys), (t3 = t3.length > 0 && t3[t3.length - 1])) &&
(op[0] === 6 || op[0] === 2)
) {
_2 = 0
continue
}
if (op[0] === 3 && (!t3 || (op[1] > t3[0] && op[1] < t3[3]))) {
_2.label = op[1]
break
}
if (op[0] === 6 && _2.label < t3[1]) {
_2.label = t3[1]
t3 = op
break
}
if (t3 && _2.label < t3[2]) {
_2.label = t3[2]
_2.ops.push(op)
break
}
if (t3[2]) _2.ops.pop()
_2.trys.pop()
continue
}
op = body.call(thisArg, _2)
} catch (e2) {
op = [6, e2]
y2 = 0
} finally {
f2 = t3 = 0
}
if (op[0] & 5) throw op[1]
return { value: op[0] ? op[1] : void 0, done: true }
}
}
function __spreadArray$7(to, from, pack2) {
if (pack2 || arguments.length === 2)
for (var i2 = 0, l2 = from.length, ar2; i2 < l2; i2++) {
if (ar2 || !(i2 in from)) {
if (!ar2) ar2 = Array.prototype.slice.call(from, 0, i2)
ar2[i2] = from[i2]
}
}
return to.concat(ar2 || from)
}
var Bounds = (function () {
function Bounds2(left2, top2, width, height) {
this.left = left2
this.top = top2
this.width = width
this.height = height
}
Bounds2.prototype.add = function (x2, y2, w2, h2) {
return new Bounds2(
this.left + x2,
this.top + y2,
this.width + w2,
this.height + h2
)
}
Bounds2.fromClientRect = function (context2, clientRect) {
return new Bounds2(
clientRect.left + context2.windowBounds.left,
clientRect.top + context2.windowBounds.top,
clientRect.width,
clientRect.height
)
}
Bounds2.fromDOMRectList = function (context2, domRectList) {
var domRect = Array.from(domRectList).find(function (rect) {
return rect.width !== 0
})
return domRect
? new Bounds2(
domRect.left + context2.windowBounds.left,
domRect.top + context2.windowBounds.top,
domRect.width,
domRect.height
)
: Bounds2.EMPTY
}
Bounds2.EMPTY = new Bounds2(0, 0, 0, 0)
return Bounds2
})()
var parseBounds = function (context2, node2) {
return Bounds.fromClientRect(context2, node2.getBoundingClientRect())
}
var parseDocumentSize = function (document2) {
var body = document2.body
var documentElement = document2.documentElement
if (!body || !documentElement) {
throw new Error('Unable to get document size')
}
var width = Math.max(
Math.max(body.scrollWidth, documentElement.scrollWidth),
Math.max(body.offsetWidth, documentElement.offsetWidth),
Math.max(body.clientWidth, documentElement.clientWidth)
)
var height = Math.max(
Math.max(body.scrollHeight, documentElement.scrollHeight),
Math.max(body.offsetHeight, documentElement.offsetHeight),
Math.max(body.clientHeight, documentElement.clientHeight)
)
return new Bounds(0, 0, width, height)
}
var toCodePoints$1 = function (str) {
var codePoints = []
var i2 = 0
var length2 = str.length
while (i2 < length2) {
var value2 = str.charCodeAt(i2++)
if (value2 >= 55296 && value2 <= 56319 && i2 < length2) {
var extra = str.charCodeAt(i2++)
if ((extra & 64512) === 56320) {
codePoints.push(((value2 & 1023) << 10) + (extra & 1023) + 65536)
} else {
codePoints.push(value2)
i2--
}
} else {
codePoints.push(value2)
}
}
return codePoints
}
var fromCodePoint$1 = function () {
var codePoints = []
for (var _i = 0; _i < arguments.length; _i++) {
codePoints[_i] = arguments[_i]
}
if (String.fromCodePoint) {
return String.fromCodePoint.apply(String, codePoints)
}
var length2 = codePoints.length
if (!length2) {
return ''
}
var codeUnits = []
var index2 = -1
var result = ''
while (++index2 < length2) {
var codePoint = codePoints[index2]
if (codePoint <= 65535) {
codeUnits.push(codePoint)
} else {
codePoint -= 65536
codeUnits.push((codePoint >> 10) + 55296, (codePoint % 1024) + 56320)
}
if (index2 + 1 === length2 || codeUnits.length > 16384) {
result += String.fromCharCode.apply(String, codeUnits)
codeUnits.length = 0
}
}
return result
}
var chars$2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
var lookup$2 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256)
for (var i$2$1 = 0; i$2$1 < chars$2.length; i$2$1++) {
lookup$2[chars$2.charCodeAt(i$2$1)] = i$2$1
}
var chars$1$1 =
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
var lookup$1$1 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256)
for (var i$1$1 = 0; i$1$1 < chars$1$1.length; i$1$1++) {
lookup$1$1[chars$1$1.charCodeAt(i$1$1)] = i$1$1
}
var decode$1 = function (base642) {
var bufferLength = base642.length * 0.75,
len2 = base642.length,
i2,
p2 = 0,
encoded1,
encoded2,
encoded3,
encoded4
if (base642[base642.length - 1] === '=') {
bufferLength--
if (base642[base642.length - 2] === '=') {
bufferLength--
}
}
var buffer =
typeof ArrayBuffer !== 'undefined' &&
typeof Uint8Array !== 'undefined' &&
typeof Uint8Array.prototype.slice !== 'undefined'
? new ArrayBuffer(bufferLength)
: new Array(bufferLength)
var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer)
for (i2 = 0; i2 < len2; i2 += 4) {
encoded1 = lookup$1$1[base642.charCodeAt(i2)]
encoded2 = lookup$1$1[base642.charCodeAt(i2 + 1)]
encoded3 = lookup$1$1[base642.charCodeAt(i2 + 2)]
encoded4 = lookup$1$1[base642.charCodeAt(i2 + 3)]
bytes[p2++] = (encoded1 << 2) | (encoded2 >> 4)
bytes[p2++] = ((encoded2 & 15) << 4) | (encoded3 >> 2)
bytes[p2++] = ((encoded3 & 3) << 6) | (encoded4 & 63)
}
return buffer
}
var polyUint16Array$1 = function (buffer) {
var length2 = buffer.length
var bytes = []
for (var i2 = 0; i2 < length2; i2 += 2) {
bytes.push((buffer[i2 + 1] << 8) | buffer[i2])
}
return bytes
}
var polyUint32Array$1 = function (buffer) {
var length2 = buffer.length
var bytes = []
for (var i2 = 0; i2 < length2; i2 += 4) {
bytes.push(
(buffer[i2 + 3] << 24) |
(buffer[i2 + 2] << 16) |
(buffer[i2 + 1] << 8) |
buffer[i2]
)
}
return bytes
}
var UTRIE2_SHIFT_2$1 = 5
var UTRIE2_SHIFT_1$1 = 6 + 5
var UTRIE2_INDEX_SHIFT$1 = 2
var UTRIE2_SHIFT_1_2$1 = UTRIE2_SHIFT_1$1 - UTRIE2_SHIFT_2$1
var UTRIE2_LSCP_INDEX_2_OFFSET$1 = 65536 >> UTRIE2_SHIFT_2$1
var UTRIE2_DATA_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_2$1
var UTRIE2_DATA_MASK$1 = UTRIE2_DATA_BLOCK_LENGTH$1 - 1
var UTRIE2_LSCP_INDEX_2_LENGTH$1 = 1024 >> UTRIE2_SHIFT_2$1
var UTRIE2_INDEX_2_BMP_LENGTH$1 =
UTRIE2_LSCP_INDEX_2_OFFSET$1 + UTRIE2_LSCP_INDEX_2_LENGTH$1
var UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 = UTRIE2_INDEX_2_BMP_LENGTH$1
var UTRIE2_UTF8_2B_INDEX_2_LENGTH$1 = 2048 >> 6
var UTRIE2_INDEX_1_OFFSET$1 =
UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 + UTRIE2_UTF8_2B_INDEX_2_LENGTH$1
var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 = 65536 >> UTRIE2_SHIFT_1$1
var UTRIE2_INDEX_2_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_1_2$1
var UTRIE2_INDEX_2_MASK$1 = UTRIE2_INDEX_2_BLOCK_LENGTH$1 - 1
var slice16$1 = function (view2, start2, end2) {
if (view2.slice) {
return view2.slice(start2, end2)
}
return new Uint16Array(Array.prototype.slice.call(view2, start2, end2))
}
var slice32$1 = function (view2, start2, end2) {
if (view2.slice) {
return view2.slice(start2, end2)
}
return new Uint32Array(Array.prototype.slice.call(view2, start2, end2))
}
var createTrieFromBase64$1 = function (base642, _byteLength) {
var buffer = decode$1(base642)
var view32 = Array.isArray(buffer)
? polyUint32Array$1(buffer)
: new Uint32Array(buffer)
var view16 = Array.isArray(buffer)
? polyUint16Array$1(buffer)
: new Uint16Array(buffer)
var headerLength = 24
var index2 = slice16$1(view16, headerLength / 2, view32[4] / 2)
var data2 =
view32[5] === 2
? slice16$1(view16, (headerLength + view32[4]) / 2)
: slice32$1(view32, Math.ceil((headerLength + view32[4]) / 4))
return new Trie$1(view32[0], view32[1], view32[2], view32[3], index2, data2)
}
var Trie$1 = (function () {
function Trie2(
initialValue,
errorValue,
highStart,
highValueIndex,
index2,
data2
) {
this.initialValue = initialValue
this.errorValue = errorValue
this.highStart = highStart
this.highValueIndex = highValueIndex
this.index = index2
this.data = data2
}
Trie2.prototype.get = function (codePoint) {
var ix
if (codePoint >= 0) {
if (codePoint < 55296 || (codePoint > 56319 && codePoint <= 65535)) {
ix = this.index[codePoint >> UTRIE2_SHIFT_2$1]
ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1)
return this.data[ix]
}
if (codePoint <= 65535) {
ix =
this.index[
UTRIE2_LSCP_INDEX_2_OFFSET$1 +
((codePoint - 55296) >> UTRIE2_SHIFT_2$1)
]
ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1)
return this.data[ix]
}
if (codePoint < this.highStart) {
ix =
UTRIE2_INDEX_1_OFFSET$1 -
UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 +
(codePoint >> UTRIE2_SHIFT_1$1)
ix = this.index[ix]
ix += (codePoint >> UTRIE2_SHIFT_2$1) & UTRIE2_INDEX_2_MASK$1
ix = this.index[ix]
ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1)
return this.data[ix]
}
if (codePoint <= 1114111) {
return this.data[this.highValueIndex]
}
}
return this.errorValue
}
return Trie2
})()
var chars$3 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
var lookup$3 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256)
for (var i$3$1 = 0; i$3$1 < chars$3.length; i$3$1++) {
lookup$3[chars$3.charCodeAt(i$3$1)] = i$3$1
}
var base64$1 =
'KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA=='
var LETTER_NUMBER_MODIFIER = 50
var BK = 1
var CR$1 = 2
var LF$1 = 3
var CM = 4
var NL = 5
var WJ = 7
var ZW = 8
var GL = 9
var SP = 10
var ZWJ$1 = 11
var B2 = 12
var BA = 13
var BB = 14
var HY = 15
var CB = 16
var CL = 17
var CP = 18
var EX = 19
var IN = 20
var NS = 21
var OP = 22
var QU = 23
var IS = 24
var NU = 25
var PO = 26
var PR = 27
var SY = 28
var AI = 29
var AL = 30
var CJ = 31
var EB = 32
var EM = 33
var H2 = 34
var H3 = 35
var HL = 36
var ID = 37
var JL = 38
var JV = 39
var JT = 40
var RI$1 = 41
var SA = 42
var XX = 43
var ea_OP = [9001, 65288]
var BREAK_MANDATORY = '!'
var BREAK_NOT_ALLOWED$1 = '\xD7'
var BREAK_ALLOWED$1 = '\xF7'
var UnicodeTrie$1 = createTrieFromBase64$1(base64$1)
var ALPHABETICS = [AL, HL]
var HARD_LINE_BREAKS = [BK, CR$1, LF$1, NL]
var SPACE$1 = [SP, ZW]
var PREFIX_POSTFIX = [PR, PO]
var LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE$1)
var KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3]
var HYPHEN = [HY, BA]
var codePointsToCharacterClasses = function (codePoints, lineBreak2) {
if (lineBreak2 === void 0) {
lineBreak2 = 'strict'
}
var types2 = []
var indices = []
var categories = []
codePoints.forEach(function (codePoint, index2) {
var classType = UnicodeTrie$1.get(codePoint)
if (classType > LETTER_NUMBER_MODIFIER) {
categories.push(true)
classType -= LETTER_NUMBER_MODIFIER
} else {
categories.push(false)
}
if (['normal', 'auto', 'loose'].indexOf(lineBreak2) !== -1) {
if ([8208, 8211, 12316, 12448].indexOf(codePoint) !== -1) {
indices.push(index2)
return types2.push(CB)
}
}
if (classType === CM || classType === ZWJ$1) {
if (index2 === 0) {
indices.push(index2)
return types2.push(AL)
}
var prev = types2[index2 - 1]
if (LINE_BREAKS.indexOf(prev) === -1) {
indices.push(indices[index2 - 1])
return types2.push(prev)
}
indices.push(index2)
return types2.push(AL)
}
indices.push(index2)
if (classType === CJ) {
return types2.push(lineBreak2 === 'strict' ? NS : ID)
}
if (classType === SA) {
return types2.push(AL)
}
if (classType === AI) {
return types2.push(AL)
}
if (classType === XX) {
if (
(codePoint >= 131072 && codePoint <= 196605) ||
(codePoint >= 196608 && codePoint <= 262141)
) {
return types2.push(ID)
} else {
return types2.push(AL)
}
}
types2.push(classType)
})
return [indices, types2, categories]
}
var isAdjacentWithSpaceIgnored = function (a2, b2, currentIndex, classTypes) {
var current2 = classTypes[currentIndex]
if (Array.isArray(a2) ? a2.indexOf(current2) !== -1 : a2 === current2) {
var i2 = currentIndex
while (i2 <= classTypes.length) {
i2++
var next = classTypes[i2]
if (next === b2) {
return true
}
if (next !== SP) {
break
}
}
}
if (current2 === SP) {
var i2 = currentIndex
while (i2 > 0) {
i2--
var prev = classTypes[i2]
if (Array.isArray(a2) ? a2.indexOf(prev) !== -1 : a2 === prev) {
var n2 = currentIndex
while (n2 <= classTypes.length) {
n2++
var next = classTypes[n2]
if (next === b2) {
return true
}
if (next !== SP) {
break
}
}
}
if (prev !== SP) {
break
}
}
}
return false
}
var previousNonSpaceClassType = function (currentIndex, classTypes) {
var i2 = currentIndex
while (i2 >= 0) {
var type4 = classTypes[i2]
if (type4 === SP) {
i2--
} else {
return type4
}
}
return 0
}
var _lineBreakAtIndex = function (
codePoints,
classTypes,
indicies,
index2,
forbiddenBreaks
) {
if (indicies[index2] === 0) {
return BREAK_NOT_ALLOWED$1
}
var currentIndex = index2 - 1
if (
Array.isArray(forbiddenBreaks) &&
forbiddenBreaks[currentIndex] === true
) {
return BREAK_NOT_ALLOWED$1
}
var beforeIndex = currentIndex - 1
var afterIndex = currentIndex + 1
var current2 = classTypes[currentIndex]
var before2 = beforeIndex >= 0 ? classTypes[beforeIndex] : 0
var next = classTypes[afterIndex]
if (current2 === CR$1 && next === LF$1) {
return BREAK_NOT_ALLOWED$1
}
if (HARD_LINE_BREAKS.indexOf(current2) !== -1) {
return BREAK_MANDATORY
}
if (HARD_LINE_BREAKS.indexOf(next) !== -1) {
return BREAK_NOT_ALLOWED$1
}
if (SPACE$1.indexOf(next) !== -1) {
return BREAK_NOT_ALLOWED$1
}
if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {
return BREAK_ALLOWED$1
}
if (UnicodeTrie$1.get(codePoints[currentIndex]) === ZWJ$1) {
return BREAK_NOT_ALLOWED$1
}
if (
(current2 === EB || current2 === EM) &&
UnicodeTrie$1.get(codePoints[afterIndex]) === ZWJ$1
) {
return BREAK_NOT_ALLOWED$1
}
if (current2 === WJ || next === WJ) {
return BREAK_NOT_ALLOWED$1
}
if (current2 === GL) {
return BREAK_NOT_ALLOWED$1
}
if ([SP, BA, HY].indexOf(current2) === -1 && next === GL) {
return BREAK_NOT_ALLOWED$1
}
if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {
return BREAK_NOT_ALLOWED$1
}
if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {
return BREAK_NOT_ALLOWED$1
}
if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {
return BREAK_NOT_ALLOWED$1
}
if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {
return BREAK_NOT_ALLOWED$1
}
if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {
return BREAK_NOT_ALLOWED$1
}
if (current2 === SP) {
return BREAK_ALLOWED$1
}
if (current2 === QU || next === QU) {
return BREAK_NOT_ALLOWED$1
}
if (next === CB || current2 === CB) {
return BREAK_ALLOWED$1
}
if ([BA, HY, NS].indexOf(next) !== -1 || current2 === BB) {
return BREAK_NOT_ALLOWED$1
}
if (before2 === HL && HYPHEN.indexOf(current2) !== -1) {
return BREAK_NOT_ALLOWED$1
}
if (current2 === SY && next === HL) {
return BREAK_NOT_ALLOWED$1
}
if (next === IN) {
return BREAK_NOT_ALLOWED$1
}
if (
(ALPHABETICS.indexOf(next) !== -1 && current2 === NU) ||
(ALPHABETICS.indexOf(current2) !== -1 && next === NU)
) {
return BREAK_NOT_ALLOWED$1
}
if (
(current2 === PR && [ID, EB, EM].indexOf(next) !== -1) ||
([ID, EB, EM].indexOf(current2) !== -1 && next === PO)
) {
return BREAK_NOT_ALLOWED$1
}
if (
(ALPHABETICS.indexOf(current2) !== -1 &&
PREFIX_POSTFIX.indexOf(next) !== -1) ||
(PREFIX_POSTFIX.indexOf(current2) !== -1 &&
ALPHABETICS.indexOf(next) !== -1)
) {
return BREAK_NOT_ALLOWED$1
}
if (
([PR, PO].indexOf(current2) !== -1 &&
(next === NU ||
([OP, HY].indexOf(next) !== -1 &&
classTypes[afterIndex + 1] === NU))) ||
([OP, HY].indexOf(current2) !== -1 && next === NU) ||
(current2 === NU && [NU, SY, IS].indexOf(next) !== -1)
) {
return BREAK_NOT_ALLOWED$1
}
if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {
var prevIndex = currentIndex
while (prevIndex >= 0) {
var type4 = classTypes[prevIndex]
if (type4 === NU) {
return BREAK_NOT_ALLOWED$1
} else if ([SY, IS].indexOf(type4) !== -1) {
prevIndex--
} else {
break
}
}
}
if ([PR, PO].indexOf(next) !== -1) {
var prevIndex =
[CL, CP].indexOf(current2) !== -1 ? beforeIndex : currentIndex
while (prevIndex >= 0) {
var type4 = classTypes[prevIndex]
if (type4 === NU) {
return BREAK_NOT_ALLOWED$1
} else if ([SY, IS].indexOf(type4) !== -1) {
prevIndex--
} else {
break
}
}
}
if (
(JL === current2 && [JL, JV, H2, H3].indexOf(next) !== -1) ||
([JV, H2].indexOf(current2) !== -1 && [JV, JT].indexOf(next) !== -1) ||
([JT, H3].indexOf(current2) !== -1 && next === JT)
) {
return BREAK_NOT_ALLOWED$1
}
if (
(KOREAN_SYLLABLE_BLOCK.indexOf(current2) !== -1 &&
[IN, PO].indexOf(next) !== -1) ||
(KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current2 === PR)
) {
return BREAK_NOT_ALLOWED$1
}
if (
ALPHABETICS.indexOf(current2) !== -1 &&
ALPHABETICS.indexOf(next) !== -1
) {
return BREAK_NOT_ALLOWED$1
}
if (current2 === IS && ALPHABETICS.indexOf(next) !== -1) {
return BREAK_NOT_ALLOWED$1
}
if (
(ALPHABETICS.concat(NU).indexOf(current2) !== -1 &&
next === OP &&
ea_OP.indexOf(codePoints[afterIndex]) === -1) ||
(ALPHABETICS.concat(NU).indexOf(next) !== -1 && current2 === CP)
) {
return BREAK_NOT_ALLOWED$1
}
if (current2 === RI$1 && next === RI$1) {
var i2 = indicies[currentIndex]
var count2 = 1
while (i2 > 0) {
i2--
if (classTypes[i2] === RI$1) {
count2++
} else {
break
}
}
if (count2 % 2 !== 0) {
return BREAK_NOT_ALLOWED$1
}
}
if (current2 === EB && next === EM) {
return BREAK_NOT_ALLOWED$1
}
return BREAK_ALLOWED$1
}
var cssFormattedClasses = function (codePoints, options2) {
if (!options2) {
options2 = { lineBreak: 'normal', wordBreak: 'normal' }
}
var _a2 = codePointsToCharacterClasses(codePoints, options2.lineBreak),
indicies = _a2[0],
classTypes = _a2[1],
isLetterNumber = _a2[2]
if (
options2.wordBreak === 'break-all' ||
options2.wordBreak === 'break-word'
) {
classTypes = classTypes.map(function (type4) {
return [NU, AL, SA].indexOf(type4) !== -1 ? ID : type4
})
}
var forbiddenBreakpoints =
options2.wordBreak === 'keep-all'
? isLetterNumber.map(function (letterNumber, i2) {
return (
letterNumber && codePoints[i2] >= 19968 && codePoints[i2] <= 40959
)
})
: void 0
return [indicies, classTypes, forbiddenBreakpoints]
}
var Break = (function () {
function Break2(codePoints, lineBreak2, start2, end2) {
this.codePoints = codePoints
this.required = lineBreak2 === BREAK_MANDATORY
this.start = start2
this.end = end2
}
Break2.prototype.slice = function () {
return fromCodePoint$1.apply(
void 0,
this.codePoints.slice(this.start, this.end)
)
}
return Break2
})()
var LineBreaker = function (str, options2) {
var codePoints = toCodePoints$1(str)
var _a2 = cssFormattedClasses(codePoints, options2),
indicies = _a2[0],
classTypes = _a2[1],
forbiddenBreakpoints = _a2[2]
var length2 = codePoints.length
var lastEnd = 0
var nextIndex = 0
return {
next: function () {
if (nextIndex >= length2) {
return { done: true, value: null }
}
var lineBreak2 = BREAK_NOT_ALLOWED$1
while (
nextIndex < length2 &&
(lineBreak2 = _lineBreakAtIndex(
codePoints,
classTypes,
indicies,
++nextIndex,
forbiddenBreakpoints
)) === BREAK_NOT_ALLOWED$1
) {}
if (lineBreak2 !== BREAK_NOT_ALLOWED$1 || nextIndex === length2) {
var value2 = new Break(codePoints, lineBreak2, lastEnd, nextIndex)
lastEnd = nextIndex
return { value: value2, done: false }
}
return { done: true, value: null }
},
}
}
var FLAG_UNRESTRICTED = 1 << 0
var FLAG_ID = 1 << 1
var FLAG_INTEGER = 1 << 2
var FLAG_NUMBER = 1 << 3
var LINE_FEED = 10
var SOLIDUS = 47
var REVERSE_SOLIDUS = 92
var CHARACTER_TABULATION = 9
var SPACE = 32
var QUOTATION_MARK = 34
var EQUALS_SIGN = 61
var NUMBER_SIGN = 35
var DOLLAR_SIGN = 36
var PERCENTAGE_SIGN = 37
var APOSTROPHE = 39
var LEFT_PARENTHESIS = 40
var RIGHT_PARENTHESIS = 41
var LOW_LINE = 95
var HYPHEN_MINUS = 45
var EXCLAMATION_MARK = 33
var LESS_THAN_SIGN = 60
var GREATER_THAN_SIGN = 62
var COMMERCIAL_AT = 64
var LEFT_SQUARE_BRACKET = 91
var RIGHT_SQUARE_BRACKET = 93
var CIRCUMFLEX_ACCENT = 61
var LEFT_CURLY_BRACKET = 123
var QUESTION_MARK = 63
var RIGHT_CURLY_BRACKET = 125
var VERTICAL_LINE = 124
var TILDE = 126
var CONTROL = 128
var REPLACEMENT_CHARACTER = 65533
var ASTERISK = 42
var PLUS_SIGN = 43
var COMMA = 44
var COLON = 58
var SEMICOLON = 59
var FULL_STOP = 46
var NULL = 0
var BACKSPACE = 8
var LINE_TABULATION = 11
var SHIFT_OUT = 14
var INFORMATION_SEPARATOR_ONE = 31
var DELETE = 127
var EOF$1 = -1
var ZERO = 48
var a$1 = 97
var e$2 = 101
var f$1 = 102
var u$1 = 117
var z$1 = 122
var A = 65
var E = 69
var F = 70
var U = 85
var Z = 90
var isDigit = function (codePoint) {
return codePoint >= ZERO && codePoint <= 57
}
var isSurrogateCodePoint = function (codePoint) {
return codePoint >= 55296 && codePoint <= 57343
}
var isHex = function (codePoint) {
return (
isDigit(codePoint) ||
(codePoint >= A && codePoint <= F) ||
(codePoint >= a$1 && codePoint <= f$1)
)
}
var isLowerCaseLetter = function (codePoint) {
return codePoint >= a$1 && codePoint <= z$1
}
var isUpperCaseLetter = function (codePoint) {
return codePoint >= A && codePoint <= Z
}
var isLetter = function (codePoint) {
return isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint)
}
var isNonASCIICodePoint = function (codePoint) {
return codePoint >= CONTROL
}
var isWhiteSpace = function (codePoint) {
return (
codePoint === LINE_FEED ||
codePoint === CHARACTER_TABULATION ||
codePoint === SPACE
)
}
var isNameStartCodePoint = function (codePoint) {
return (
isLetter(codePoint) ||
isNonASCIICodePoint(codePoint) ||
codePoint === LOW_LINE
)
}
var isNameCodePoint = function (codePoint) {
return (
isNameStartCodePoint(codePoint) ||
isDigit(codePoint) ||
codePoint === HYPHEN_MINUS
)
}
var isNonPrintableCodePoint = function (codePoint) {
return (
(codePoint >= NULL && codePoint <= BACKSPACE) ||
codePoint === LINE_TABULATION ||
(codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE) ||
codePoint === DELETE
)
}
var isValidEscape = function (c1, c2) {
if (c1 !== REVERSE_SOLIDUS) {
return false
}
return c2 !== LINE_FEED
}
var isIdentifierStart = function (c1, c2, c3) {
if (c1 === HYPHEN_MINUS) {
return isNameStartCodePoint(c2) || isValidEscape(c2, c3)
} else if (isNameStartCodePoint(c1)) {
return true
} else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {
return true
}
return false
}
var isNumberStart = function (c1, c2, c3) {
if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {
if (isDigit(c2)) {
return true
}
return c2 === FULL_STOP && isDigit(c3)
}
if (c1 === FULL_STOP) {
return isDigit(c2)
}
return isDigit(c1)
}
var stringToNumber = function (codePoints) {
var c2 = 0
var sign = 1
if (codePoints[c2] === PLUS_SIGN || codePoints[c2] === HYPHEN_MINUS) {
if (codePoints[c2] === HYPHEN_MINUS) {
sign = -1
}
c2++
}
var integers = []
while (isDigit(codePoints[c2])) {
integers.push(codePoints[c2++])
}
var int = integers.length
? parseInt(fromCodePoint$1.apply(void 0, integers), 10)
: 0
if (codePoints[c2] === FULL_STOP) {
c2++
}
var fraction = []
while (isDigit(codePoints[c2])) {
fraction.push(codePoints[c2++])
}
var fracd = fraction.length
var frac = fracd ? parseInt(fromCodePoint$1.apply(void 0, fraction), 10) : 0
if (codePoints[c2] === E || codePoints[c2] === e$2) {
c2++
}
var expsign = 1
if (codePoints[c2] === PLUS_SIGN || codePoints[c2] === HYPHEN_MINUS) {
if (codePoints[c2] === HYPHEN_MINUS) {
expsign = -1
}
c2++
}
var exponent = []
while (isDigit(codePoints[c2])) {
exponent.push(codePoints[c2++])
}
var exp = exponent.length
? parseInt(fromCodePoint$1.apply(void 0, exponent), 10)
: 0
return (
sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp)
)
}
var LEFT_PARENTHESIS_TOKEN = {
type: 2,
}
var RIGHT_PARENTHESIS_TOKEN = {
type: 3,
}
var COMMA_TOKEN = { type: 4 }
var SUFFIX_MATCH_TOKEN = { type: 13 }
var PREFIX_MATCH_TOKEN = { type: 8 }
var COLUMN_TOKEN = { type: 21 }
var DASH_MATCH_TOKEN = { type: 9 }
var INCLUDE_MATCH_TOKEN = { type: 10 }
var LEFT_CURLY_BRACKET_TOKEN = {
type: 11,
}
var RIGHT_CURLY_BRACKET_TOKEN = {
type: 12,
}
var SUBSTRING_MATCH_TOKEN = { type: 14 }
var BAD_URL_TOKEN = { type: 23 }
var BAD_STRING_TOKEN = { type: 1 }
var CDO_TOKEN = { type: 25 }
var CDC_TOKEN = { type: 24 }
var COLON_TOKEN = { type: 26 }
var SEMICOLON_TOKEN = { type: 27 }
var LEFT_SQUARE_BRACKET_TOKEN = {
type: 28,
}
var RIGHT_SQUARE_BRACKET_TOKEN = {
type: 29,
}
var WHITESPACE_TOKEN = { type: 31 }
var EOF_TOKEN = { type: 32 }
var Tokenizer = (function () {
function Tokenizer2() {
this._value = []
}
Tokenizer2.prototype.write = function (chunk2) {
this._value = this._value.concat(toCodePoints$1(chunk2))
}
Tokenizer2.prototype.read = function () {
var tokens = []
var token = this.consumeToken()
while (token !== EOF_TOKEN) {
tokens.push(token)
token = this.consumeToken()
}
return tokens
}
Tokenizer2.prototype.consumeToken = function () {
var codePoint = this.consumeCodePoint()
switch (codePoint) {
case QUOTATION_MARK:
return this.consumeStringToken(QUOTATION_MARK)
case NUMBER_SIGN:
var c1 = this.peekCodePoint(0)
var c2 = this.peekCodePoint(1)
var c3 = this.peekCodePoint(2)
if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {
var flags = isIdentifierStart(c1, c2, c3)
? FLAG_ID
: FLAG_UNRESTRICTED
var value2 = this.consumeName()
return { type: 5, value: value2, flags }
}
break
case DOLLAR_SIGN:
if (this.peekCodePoint(0) === EQUALS_SIGN) {
this.consumeCodePoint()
return SUFFIX_MATCH_TOKEN
}
break
case APOSTROPHE:
return this.consumeStringToken(APOSTROPHE)
case LEFT_PARENTHESIS:
return LEFT_PARENTHESIS_TOKEN
case RIGHT_PARENTHESIS:
return RIGHT_PARENTHESIS_TOKEN
case ASTERISK:
if (this.peekCodePoint(0) === EQUALS_SIGN) {
this.consumeCodePoint()
return SUBSTRING_MATCH_TOKEN
}
break
case PLUS_SIGN:
if (
isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))
) {
this.reconsumeCodePoint(codePoint)
return this.consumeNumericToken()
}
break
case COMMA:
return COMMA_TOKEN
case HYPHEN_MINUS:
var e1 = codePoint
var e2 = this.peekCodePoint(0)
var e3 = this.peekCodePoint(1)
if (isNumberStart(e1, e2, e3)) {
this.reconsumeCodePoint(codePoint)
return this.consumeNumericToken()
}
if (isIdentifierStart(e1, e2, e3)) {
this.reconsumeCodePoint(codePoint)
return this.consumeIdentLikeToken()
}
if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {
this.consumeCodePoint()
this.consumeCodePoint()
return CDC_TOKEN
}
break
case FULL_STOP:
if (
isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))
) {
this.reconsumeCodePoint(codePoint)
return this.consumeNumericToken()
}
break
case SOLIDUS:
if (this.peekCodePoint(0) === ASTERISK) {
this.consumeCodePoint()
while (true) {
var c4 = this.consumeCodePoint()
if (c4 === ASTERISK) {
c4 = this.consumeCodePoint()
if (c4 === SOLIDUS) {
return this.consumeToken()
}
}
if (c4 === EOF$1) {
return this.consumeToken()
}
}
}
break
case COLON:
return COLON_TOKEN
case SEMICOLON:
return SEMICOLON_TOKEN
case LESS_THAN_SIGN:
if (
this.peekCodePoint(0) === EXCLAMATION_MARK &&
this.peekCodePoint(1) === HYPHEN_MINUS &&
this.peekCodePoint(2) === HYPHEN_MINUS
) {
this.consumeCodePoint()
this.consumeCodePoint()
return CDO_TOKEN
}
break
case COMMERCIAL_AT:
var a1 = this.peekCodePoint(0)
var a2 = this.peekCodePoint(1)
var a3 = this.peekCodePoint(2)
if (isIdentifierStart(a1, a2, a3)) {
var value2 = this.consumeName()
return { type: 7, value: value2 }
}
break
case LEFT_SQUARE_BRACKET:
return LEFT_SQUARE_BRACKET_TOKEN
case REVERSE_SOLIDUS:
if (isValidEscape(codePoint, this.peekCodePoint(0))) {
this.reconsumeCodePoint(codePoint)
return this.consumeIdentLikeToken()
}
break
case RIGHT_SQUARE_BRACKET:
return RIGHT_SQUARE_BRACKET_TOKEN
case CIRCUMFLEX_ACCENT:
if (this.peekCodePoint(0) === EQUALS_SIGN) {
this.consumeCodePoint()
return PREFIX_MATCH_TOKEN
}
break
case LEFT_CURLY_BRACKET:
return LEFT_CURLY_BRACKET_TOKEN
case RIGHT_CURLY_BRACKET:
return RIGHT_CURLY_BRACKET_TOKEN
case u$1:
case U:
var u1 = this.peekCodePoint(0)
var u2 = this.peekCodePoint(1)
if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {
this.consumeCodePoint()
this.consumeUnicodeRangeToken()
}
this.reconsumeCodePoint(codePoint)
return this.consumeIdentLikeToken()
case VERTICAL_LINE:
if (this.peekCodePoint(0) === EQUALS_SIGN) {
this.consumeCodePoint()
return DASH_MATCH_TOKEN
}
if (this.peekCodePoint(0) === VERTICAL_LINE) {
this.consumeCodePoint()
return COLUMN_TOKEN
}
break
case TILDE:
if (this.peekCodePoint(0) === EQUALS_SIGN) {
this.consumeCodePoint()
return INCLUDE_MATCH_TOKEN
}
break
case EOF$1:
return EOF_TOKEN
}
if (isWhiteSpace(codePoint)) {
this.consumeWhiteSpace()
return WHITESPACE_TOKEN
}
if (isDigit(codePoint)) {
this.reconsumeCodePoint(codePoint)
return this.consumeNumericToken()
}
if (isNameStartCodePoint(codePoint)) {
this.reconsumeCodePoint(codePoint)
return this.consumeIdentLikeToken()
}
return { type: 6, value: fromCodePoint$1(codePoint) }
}
Tokenizer2.prototype.consumeCodePoint = function () {
var value2 = this._value.shift()
return typeof value2 === 'undefined' ? -1 : value2
}
Tokenizer2.prototype.reconsumeCodePoint = function (codePoint) {
this._value.unshift(codePoint)
}
Tokenizer2.prototype.peekCodePoint = function (delta) {
if (delta >= this._value.length) {
return -1
}
return this._value[delta]
}
Tokenizer2.prototype.consumeUnicodeRangeToken = function () {
var digits = []
var codePoint = this.consumeCodePoint()
while (isHex(codePoint) && digits.length < 6) {
digits.push(codePoint)
codePoint = this.consumeCodePoint()
}
var questionMarks = false
while (codePoint === QUESTION_MARK && digits.length < 6) {
digits.push(codePoint)
codePoint = this.consumeCodePoint()
questionMarks = true
}
if (questionMarks) {
var start_1 = parseInt(
fromCodePoint$1.apply(
void 0,
digits.map(function (digit) {
return digit === QUESTION_MARK ? ZERO : digit
})
),
16
)
var end2 = parseInt(
fromCodePoint$1.apply(
void 0,
digits.map(function (digit) {
return digit === QUESTION_MARK ? F : digit
})
),
16
)
return { type: 30, start: start_1, end: end2 }
}
var start2 = parseInt(fromCodePoint$1.apply(void 0, digits), 16)
if (
this.peekCodePoint(0) === HYPHEN_MINUS &&
isHex(this.peekCodePoint(1))
) {
this.consumeCodePoint()
codePoint = this.consumeCodePoint()
var endDigits = []
while (isHex(codePoint) && endDigits.length < 6) {
endDigits.push(codePoint)
codePoint = this.consumeCodePoint()
}
var end2 = parseInt(fromCodePoint$1.apply(void 0, endDigits), 16)
return { type: 30, start: start2, end: end2 }
} else {
return { type: 30, start: start2, end: start2 }
}
}
Tokenizer2.prototype.consumeIdentLikeToken = function () {
var value2 = this.consumeName()
if (
value2.toLowerCase() === 'url' &&
this.peekCodePoint(0) === LEFT_PARENTHESIS
) {
this.consumeCodePoint()
return this.consumeUrlToken()
} else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {
this.consumeCodePoint()
return { type: 19, value: value2 }
}
return { type: 20, value: value2 }
}
Tokenizer2.prototype.consumeUrlToken = function () {
var value2 = []
this.consumeWhiteSpace()
if (this.peekCodePoint(0) === EOF$1) {
return { type: 22, value: '' }
}
var next = this.peekCodePoint(0)
if (next === APOSTROPHE || next === QUOTATION_MARK) {
var stringToken = this.consumeStringToken(this.consumeCodePoint())
if (stringToken.type === 0) {
this.consumeWhiteSpace()
if (
this.peekCodePoint(0) === EOF$1 ||
this.peekCodePoint(0) === RIGHT_PARENTHESIS
) {
this.consumeCodePoint()
return { type: 22, value: stringToken.value }
}
}
this.consumeBadUrlRemnants()
return BAD_URL_TOKEN
}
while (true) {
var codePoint = this.consumeCodePoint()
if (codePoint === EOF$1 || codePoint === RIGHT_PARENTHESIS) {
return { type: 22, value: fromCodePoint$1.apply(void 0, value2) }
} else if (isWhiteSpace(codePoint)) {
this.consumeWhiteSpace()
if (
this.peekCodePoint(0) === EOF$1 ||
this.peekCodePoint(0) === RIGHT_PARENTHESIS
) {
this.consumeCodePoint()
return { type: 22, value: fromCodePoint$1.apply(void 0, value2) }
}
this.consumeBadUrlRemnants()
return BAD_URL_TOKEN
} else if (
codePoint === QUOTATION_MARK ||
codePoint === APOSTROPHE ||
codePoint === LEFT_PARENTHESIS ||
isNonPrintableCodePoint(codePoint)
) {
this.consumeBadUrlRemnants()
return BAD_URL_TOKEN
} else if (codePoint === REVERSE_SOLIDUS) {
if (isValidEscape(codePoint, this.peekCodePoint(0))) {
value2.push(this.consumeEscapedCodePoint())
} else {
this.consumeBadUrlRemnants()
return BAD_URL_TOKEN
}
} else {
value2.push(codePoint)
}
}
}
Tokenizer2.prototype.consumeWhiteSpace = function () {
while (isWhiteSpace(this.peekCodePoint(0))) {
this.consumeCodePoint()
}
}
Tokenizer2.prototype.consumeBadUrlRemnants = function () {
while (true) {
var codePoint = this.consumeCodePoint()
if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF$1) {
return
}
if (isValidEscape(codePoint, this.peekCodePoint(0))) {
this.consumeEscapedCodePoint()
}
}
}
Tokenizer2.prototype.consumeStringSlice = function (count2) {
var SLICE_STACK_SIZE = 5e4
var value2 = ''
while (count2 > 0) {
var amount = Math.min(SLICE_STACK_SIZE, count2)
value2 += fromCodePoint$1.apply(void 0, this._value.splice(0, amount))
count2 -= amount
}
this._value.shift()
return value2
}
Tokenizer2.prototype.consumeStringToken = function (endingCodePoint) {
var value2 = ''
var i2 = 0
do {
var codePoint = this._value[i2]
if (
codePoint === EOF$1 ||
codePoint === void 0 ||
codePoint === endingCodePoint
) {
value2 += this.consumeStringSlice(i2)
return { type: 0, value: value2 }
}
if (codePoint === LINE_FEED) {
this._value.splice(0, i2)
return BAD_STRING_TOKEN
}
if (codePoint === REVERSE_SOLIDUS) {
var next = this._value[i2 + 1]
if (next !== EOF$1 && next !== void 0) {
if (next === LINE_FEED) {
value2 += this.consumeStringSlice(i2)
i2 = -1
this._value.shift()
} else if (isValidEscape(codePoint, next)) {
value2 += this.consumeStringSlice(i2)
value2 += fromCodePoint$1(this.consumeEscapedCodePoint())
i2 = -1
}
}
}
i2++
} while (true)
}
Tokenizer2.prototype.consumeNumber = function () {
var repr = []
var type4 = FLAG_INTEGER
var c1 = this.peekCodePoint(0)
if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {
repr.push(this.consumeCodePoint())
}
while (isDigit(this.peekCodePoint(0))) {
repr.push(this.consumeCodePoint())
}
c1 = this.peekCodePoint(0)
var c2 = this.peekCodePoint(1)
if (c1 === FULL_STOP && isDigit(c2)) {
repr.push(this.consumeCodePoint(), this.consumeCodePoint())
type4 = FLAG_NUMBER
while (isDigit(this.peekCodePoint(0))) {
repr.push(this.consumeCodePoint())
}
}
c1 = this.peekCodePoint(0)
c2 = this.peekCodePoint(1)
var c3 = this.peekCodePoint(2)
if (
(c1 === E || c1 === e$2) &&
(((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3)) ||
isDigit(c2))
) {
repr.push(this.consumeCodePoint(), this.consumeCodePoint())
type4 = FLAG_NUMBER
while (isDigit(this.peekCodePoint(0))) {
repr.push(this.consumeCodePoint())
}
}
return [stringToNumber(repr), type4]
}
Tokenizer2.prototype.consumeNumericToken = function () {
var _a2 = this.consumeNumber(),
number4 = _a2[0],
flags = _a2[1]
var c1 = this.peekCodePoint(0)
var c2 = this.peekCodePoint(1)
var c3 = this.peekCodePoint(2)
if (isIdentifierStart(c1, c2, c3)) {
var unit = this.consumeName()
return { type: 15, number: number4, flags, unit }
}
if (c1 === PERCENTAGE_SIGN) {
this.consumeCodePoint()
return { type: 16, number: number4, flags }
}
return { type: 17, number: number4, flags }
}
Tokenizer2.prototype.consumeEscapedCodePoint = function () {
var codePoint = this.consumeCodePoint()
if (isHex(codePoint)) {
var hex2 = fromCodePoint$1(codePoint)
while (isHex(this.peekCodePoint(0)) && hex2.length < 6) {
hex2 += fromCodePoint$1(this.consumeCodePoint())
}
if (isWhiteSpace(this.peekCodePoint(0))) {
this.consumeCodePoint()
}
var hexCodePoint = parseInt(hex2, 16)
if (
hexCodePoint === 0 ||
isSurrogateCodePoint(hexCodePoint) ||
hexCodePoint > 1114111
) {
return REPLACEMENT_CHARACTER
}
return hexCodePoint
}
if (codePoint === EOF$1) {
return REPLACEMENT_CHARACTER
}
return codePoint
}
Tokenizer2.prototype.consumeName = function () {
var result = ''
while (true) {
var codePoint = this.consumeCodePoint()
if (isNameCodePoint(codePoint)) {
result += fromCodePoint$1(codePoint)
} else if (isValidEscape(codePoint, this.peekCodePoint(0))) {
result += fromCodePoint$1(this.consumeEscapedCodePoint())
} else {
this.reconsumeCodePoint(codePoint)
return result
}
}
}
return Tokenizer2
})()
var Parser$1 = (function () {
function Parser2(tokens) {
this._tokens = tokens
}
Parser2.create = function (value2) {
var tokenizer = new Tokenizer()
tokenizer.write(value2)
return new Parser2(tokenizer.read())
}
Parser2.parseValue = function (value2) {
return Parser2.create(value2).parseComponentValue()
}
Parser2.parseValues = function (value2) {
return Parser2.create(value2).parseComponentValues()
}
Parser2.prototype.parseComponentValue = function () {
var token = this.consumeToken()
while (token.type === 31) {
token = this.consumeToken()
}
if (token.type === 32) {
throw new SyntaxError('Error parsing CSS component value, unexpected EOF')
}
this.reconsumeToken(token)
var value2 = this.consumeComponentValue()
do {
token = this.consumeToken()
} while (token.type === 31)
if (token.type === 32) {
return value2
}
throw new SyntaxError(
'Error parsing CSS component value, multiple values found when expecting only one'
)
}
Parser2.prototype.parseComponentValues = function () {
var values2 = []
while (true) {
var value2 = this.consumeComponentValue()
if (value2.type === 32) {
return values2
}
values2.push(value2)
values2.push()
}
}
Parser2.prototype.consumeComponentValue = function () {
var token = this.consumeToken()
switch (token.type) {
case 11:
case 28:
case 2:
return this.consumeSimpleBlock(token.type)
case 19:
return this.consumeFunction(token)
}
return token
}
Parser2.prototype.consumeSimpleBlock = function (type4) {
var block = { type: type4, values: [] }
var token = this.consumeToken()
while (true) {
if (token.type === 32 || isEndingTokenFor(token, type4)) {
return block
}
this.reconsumeToken(token)
block.values.push(this.consumeComponentValue())
token = this.consumeToken()
}
}
Parser2.prototype.consumeFunction = function (functionToken) {
var cssFunction = {
name: functionToken.value,
values: [],
type: 18,
}
while (true) {
var token = this.consumeToken()
if (token.type === 32 || token.type === 3) {
return cssFunction
}
this.reconsumeToken(token)
cssFunction.values.push(this.consumeComponentValue())
}
}
Parser2.prototype.consumeToken = function () {
var token = this._tokens.shift()
return typeof token === 'undefined' ? EOF_TOKEN : token
}
Parser2.prototype.reconsumeToken = function (token) {
this._tokens.unshift(token)
}
return Parser2
})()
var isDimensionToken = function (token) {
return token.type === 15
}
var isNumberToken = function (token) {
return token.type === 17
}
var isIdentToken = function (token) {
return token.type === 20
}
var isStringToken = function (token) {
return token.type === 0
}
var isIdentWithValue = function (token, value2) {
return isIdentToken(token) && token.value === value2
}
var nonWhiteSpace = function (token) {
return token.type !== 31
}
var nonFunctionArgSeparator = function (token) {
return token.type !== 31 && token.type !== 4
}
var parseFunctionArgs = function (tokens) {
var args = []
var arg = []
tokens.forEach(function (token) {
if (token.type === 4) {
if (arg.length === 0) {
throw new Error('Error parsing function args, zero tokens for arg')
}
args.push(arg)
arg = []
return
}
if (token.type !== 31) {
arg.push(token)
}
})
if (arg.length) {
args.push(arg)
}
return args
}
var isEndingTokenFor = function (token, type4) {
if (type4 === 11 && token.type === 12) {
return true
}
if (type4 === 28 && token.type === 29) {
return true
}
return type4 === 2 && token.type === 3
}
var isLength$3 = function (token) {
return token.type === 17 || token.type === 15
}
var isLengthPercentage = function (token) {
return token.type === 16 || isLength$3(token)
}
var parseLengthPercentageTuple = function (tokens) {
return tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]]
}
var ZERO_LENGTH = {
type: 17,
number: 0,
flags: FLAG_INTEGER,
}
var FIFTY_PERCENT = {
type: 16,
number: 50,
flags: FLAG_INTEGER,
}
var HUNDRED_PERCENT = {
type: 16,
number: 100,
flags: FLAG_INTEGER,
}
var getAbsoluteValueForTuple = function (tuple, width, height) {
var x2 = tuple[0],
y2 = tuple[1]
return [
getAbsoluteValue(x2, width),
getAbsoluteValue(typeof y2 !== 'undefined' ? y2 : x2, height),
]
}
var getAbsoluteValue = function (token, parent2) {
if (token.type === 16) {
return (token.number / 100) * parent2
}
if (isDimensionToken(token)) {
switch (token.unit) {
case 'rem':
case 'em':
return 16 * token.number
case 'px':
default:
return token.number
}
}
return token.number
}
var DEG = 'deg'
var GRAD = 'grad'
var RAD = 'rad'
var TURN = 'turn'
var angle = {
name: 'angle',
parse: function (_context, value2) {
if (value2.type === 15) {
switch (value2.unit) {
case DEG:
return (Math.PI * value2.number) / 180
case GRAD:
return (Math.PI / 200) * value2.number
case RAD:
return value2.number
case TURN:
return Math.PI * 2 * value2.number
}
}
throw new Error('Unsupported angle type')
},
}
var isAngle = function (value2) {
if (value2.type === 15) {
if (
value2.unit === DEG ||
value2.unit === GRAD ||
value2.unit === RAD ||
value2.unit === TURN
) {
return true
}
}
return false
}
var parseNamedSide = function (tokens) {
var sideOrCorner = tokens
.filter(isIdentToken)
.map(function (ident) {
return ident.value
})
.join(' ')
switch (sideOrCorner) {
case 'to bottom right':
case 'to right bottom':
case 'left top':
case 'top left':
return [ZERO_LENGTH, ZERO_LENGTH]
case 'to top':
case 'bottom':
return deg(0)
case 'to bottom left':
case 'to left bottom':
case 'right top':
case 'top right':
return [ZERO_LENGTH, HUNDRED_PERCENT]
case 'to right':
case 'left':
return deg(90)
case 'to top left':
case 'to left top':
case 'right bottom':
case 'bottom right':
return [HUNDRED_PERCENT, HUNDRED_PERCENT]
case 'to bottom':
case 'top':
return deg(180)
case 'to top right':
case 'to right top':
case 'left bottom':
case 'bottom left':
return [HUNDRED_PERCENT, ZERO_LENGTH]
case 'to left':
case 'right':
return deg(270)
}
return 0
}
var deg = function (deg2) {
return (Math.PI * deg2) / 180
}
var color$1$1 = {
name: 'color',
parse: function (context2, value2) {
if (value2.type === 18) {
var colorFunction = SUPPORTED_COLOR_FUNCTIONS[value2.name]
if (typeof colorFunction === 'undefined') {
throw new Error(
'Attempting to parse an unsupported color function "' +
value2.name +
'"'
)
}
return colorFunction(context2, value2.values)
}
if (value2.type === 5) {
if (value2.value.length === 3) {
var r2 = value2.value.substring(0, 1)
var g2 = value2.value.substring(1, 2)
var b2 = value2.value.substring(2, 3)
return pack(
parseInt(r2 + r2, 16),
parseInt(g2 + g2, 16),
parseInt(b2 + b2, 16),
1
)
}
if (value2.value.length === 4) {
var r2 = value2.value.substring(0, 1)
var g2 = value2.value.substring(1, 2)
var b2 = value2.value.substring(2, 3)
var a2 = value2.value.substring(3, 4)
return pack(
parseInt(r2 + r2, 16),
parseInt(g2 + g2, 16),
parseInt(b2 + b2, 16),
parseInt(a2 + a2, 16) / 255
)
}
if (value2.value.length === 6) {
var r2 = value2.value.substring(0, 2)
var g2 = value2.value.substring(2, 4)
var b2 = value2.value.substring(4, 6)
return pack(parseInt(r2, 16), parseInt(g2, 16), parseInt(b2, 16), 1)
}
if (value2.value.length === 8) {
var r2 = value2.value.substring(0, 2)
var g2 = value2.value.substring(2, 4)
var b2 = value2.value.substring(4, 6)
var a2 = value2.value.substring(6, 8)
return pack(
parseInt(r2, 16),
parseInt(g2, 16),
parseInt(b2, 16),
parseInt(a2, 16) / 255
)
}
}
if (value2.type === 20) {
var namedColor = COLORS[value2.value.toUpperCase()]
if (typeof namedColor !== 'undefined') {
return namedColor
}
}
return COLORS.TRANSPARENT
},
}
var isTransparent = function (color2) {
return (255 & color2) === 0
}
var asString = function (color2) {
var alpha = 255 & color2
var blue = 255 & (color2 >> 8)
var green = 255 & (color2 >> 16)
var red = 255 & (color2 >> 24)
return alpha < 255
? 'rgba(' + red + ',' + green + ',' + blue + ',' + alpha / 255 + ')'
: 'rgb(' + red + ',' + green + ',' + blue + ')'
}
var pack = function (r2, g2, b2, a2) {
return (
((r2 << 24) | (g2 << 16) | (b2 << 8) | (Math.round(a2 * 255) << 0)) >>> 0
)
}
var getTokenColorValue = function (token, i2) {
if (token.type === 17) {
return token.number
}
if (token.type === 16) {
var max3 = i2 === 3 ? 1 : 255
return i2 === 3
? (token.number / 100) * max3
: Math.round((token.number / 100) * max3)
}
return 0
}
var rgb = function (_context, args) {
var tokens = args.filter(nonFunctionArgSeparator)
if (tokens.length === 3) {
var _a2 = tokens.map(getTokenColorValue),
r2 = _a2[0],
g2 = _a2[1],
b2 = _a2[2]
return pack(r2, g2, b2, 1)
}
if (tokens.length === 4) {
var _b2 = tokens.map(getTokenColorValue),
r2 = _b2[0],
g2 = _b2[1],
b2 = _b2[2],
a2 = _b2[3]
return pack(r2, g2, b2, a2)
}
return 0
}
function hue2rgb(t1, t22, hue) {
if (hue < 0) {
hue += 1
}
if (hue >= 1) {
hue -= 1
}
if (hue < 1 / 6) {
return (t22 - t1) * hue * 6 + t1
} else if (hue < 1 / 2) {
return t22
} else if (hue < 2 / 3) {
return (t22 - t1) * 6 * (2 / 3 - hue) + t1
} else {
return t1
}
}
var hsl = function (context2, args) {
var tokens = args.filter(nonFunctionArgSeparator)
var hue = tokens[0],
saturation = tokens[1],
lightness = tokens[2],
alpha = tokens[3]
var h2 =
(hue.type === 17 ? deg(hue.number) : angle.parse(context2, hue)) /
(Math.PI * 2)
var s2 = isLengthPercentage(saturation) ? saturation.number / 100 : 0
var l2 = isLengthPercentage(lightness) ? lightness.number / 100 : 0
var a2 =
typeof alpha !== 'undefined' && isLengthPercentage(alpha)
? getAbsoluteValue(alpha, 1)
: 1
if (s2 === 0) {
return pack(l2 * 255, l2 * 255, l2 * 255, 1)
}
var t22 = l2 <= 0.5 ? l2 * (s2 + 1) : l2 + s2 - l2 * s2
var t1 = l2 * 2 - t22
var r2 = hue2rgb(t1, t22, h2 + 1 / 3)
var g2 = hue2rgb(t1, t22, h2)
var b2 = hue2rgb(t1, t22, h2 - 1 / 3)
return pack(r2 * 255, g2 * 255, b2 * 255, a2)
}
var SUPPORTED_COLOR_FUNCTIONS = {
hsl,
hsla: hsl,
rgb,
rgba: rgb,
}
var parseColor = function (context2, value2) {
return color$1$1.parse(
context2,
Parser$1.create(value2).parseComponentValue()
)
}
var COLORS = {
ALICEBLUE: 4042850303,
ANTIQUEWHITE: 4209760255,
AQUA: 16777215,
AQUAMARINE: 2147472639,
AZURE: 4043309055,
BEIGE: 4126530815,
BISQUE: 4293182719,
BLACK: 255,
BLANCHEDALMOND: 4293643775,
BLUE: 65535,
BLUEVIOLET: 2318131967,
BROWN: 2771004159,
BURLYWOOD: 3736635391,
CADETBLUE: 1604231423,
CHARTREUSE: 2147418367,
CHOCOLATE: 3530104575,
CORAL: 4286533887,
CORNFLOWERBLUE: 1687547391,
CORNSILK: 4294499583,
CRIMSON: 3692313855,
CYAN: 16777215,
DARKBLUE: 35839,
DARKCYAN: 9145343,
DARKGOLDENROD: 3095837695,
DARKGRAY: 2846468607,
DARKGREEN: 6553855,
DARKGREY: 2846468607,
DARKKHAKI: 3182914559,
DARKMAGENTA: 2332068863,
DARKOLIVEGREEN: 1433087999,
DARKORANGE: 4287365375,
DARKORCHID: 2570243327,
DARKRED: 2332033279,
DARKSALMON: 3918953215,
DARKSEAGREEN: 2411499519,
DARKSLATEBLUE: 1211993087,
DARKSLATEGRAY: 793726975,
DARKSLATEGREY: 793726975,
DARKTURQUOISE: 13554175,
DARKVIOLET: 2483082239,
DEEPPINK: 4279538687,
DEEPSKYBLUE: 12582911,
DIMGRAY: 1768516095,
DIMGREY: 1768516095,
DODGERBLUE: 512819199,
FIREBRICK: 2988581631,
FLORALWHITE: 4294635775,
FORESTGREEN: 579543807,
FUCHSIA: 4278255615,
GAINSBORO: 3705462015,
GHOSTWHITE: 4177068031,
GOLD: 4292280575,
GOLDENROD: 3668254975,
GRAY: 2155905279,
GREEN: 8388863,
GREENYELLOW: 2919182335,
GREY: 2155905279,
HONEYDEW: 4043305215,
HOTPINK: 4285117695,
INDIANRED: 3445382399,
INDIGO: 1258324735,
IVORY: 4294963455,
KHAKI: 4041641215,
LAVENDER: 3873897215,
LAVENDERBLUSH: 4293981695,
LAWNGREEN: 2096890111,
LEMONCHIFFON: 4294626815,
LIGHTBLUE: 2916673279,
LIGHTCORAL: 4034953471,
LIGHTCYAN: 3774873599,
LIGHTGOLDENRODYELLOW: 4210742015,
LIGHTGRAY: 3553874943,
LIGHTGREEN: 2431553791,
LIGHTGREY: 3553874943,
LIGHTPINK: 4290167295,
LIGHTSALMON: 4288707327,
LIGHTSEAGREEN: 548580095,
LIGHTSKYBLUE: 2278488831,
LIGHTSLATEGRAY: 2005441023,
LIGHTSLATEGREY: 2005441023,
LIGHTSTEELBLUE: 2965692159,
LIGHTYELLOW: 4294959359,
LIME: 16711935,
LIMEGREEN: 852308735,
LINEN: 4210091775,
MAGENTA: 4278255615,
MAROON: 2147483903,
MEDIUMAQUAMARINE: 1724754687,
MEDIUMBLUE: 52735,
MEDIUMORCHID: 3126187007,
MEDIUMPURPLE: 2473647103,
MEDIUMSEAGREEN: 1018393087,
MEDIUMSLATEBLUE: 2070474495,
MEDIUMSPRINGGREEN: 16423679,
MEDIUMTURQUOISE: 1221709055,
MEDIUMVIOLETRED: 3340076543,
MIDNIGHTBLUE: 421097727,
MINTCREAM: 4127193855,
MISTYROSE: 4293190143,
MOCCASIN: 4293178879,
NAVAJOWHITE: 4292783615,
NAVY: 33023,
OLDLACE: 4260751103,
OLIVE: 2155872511,
OLIVEDRAB: 1804477439,
ORANGE: 4289003775,
ORANGERED: 4282712319,
ORCHID: 3664828159,
PALEGOLDENROD: 4008225535,
PALEGREEN: 2566625535,
PALETURQUOISE: 2951671551,
PALEVIOLETRED: 3681588223,
PAPAYAWHIP: 4293907967,
PEACHPUFF: 4292524543,
PERU: 3448061951,
PINK: 4290825215,
PLUM: 3718307327,
POWDERBLUE: 2967529215,
PURPLE: 2147516671,
REBECCAPURPLE: 1714657791,
RED: 4278190335,
ROSYBROWN: 3163525119,
ROYALBLUE: 1097458175,
SADDLEBROWN: 2336560127,
SALMON: 4202722047,
SANDYBROWN: 4104413439,
SEAGREEN: 780883967,
SEASHELL: 4294307583,
SIENNA: 2689740287,
SILVER: 3233857791,
SKYBLUE: 2278484991,
SLATEBLUE: 1784335871,
SLATEGRAY: 1887473919,
SLATEGREY: 1887473919,
SNOW: 4294638335,
SPRINGGREEN: 16744447,
STEELBLUE: 1182971135,
TAN: 3535047935,
TEAL: 8421631,
THISTLE: 3636451583,
TOMATO: 4284696575,
TRANSPARENT: 0,
TURQUOISE: 1088475391,
VIOLET: 4001558271,
WHEAT: 4125012991,
WHITE: 4294967295,
WHITESMOKE: 4126537215,
YELLOW: 4294902015,
YELLOWGREEN: 2597139199,
}
var backgroundClip = {
name: 'background-clip',
initialValue: 'border-box',
prefix: false,
type: 1,
parse: function (_context, tokens) {
return tokens.map(function (token) {
if (isIdentToken(token)) {
switch (token.value) {
case 'padding-box':
return 1
case 'content-box':
return 2
}
}
return 0
})
},
}
var backgroundColor$1 = {
name: 'background-color',
initialValue: 'transparent',
prefix: false,
type: 3,
format: 'color',
}
var parseColorStop = function (context2, args) {
var color2 = color$1$1.parse(context2, args[0])
var stop2 = args[1]
return stop2 && isLengthPercentage(stop2)
? { color: color2, stop: stop2 }
: { color: color2, stop: null }
}
var processColorStops = function (stops, lineLength) {
var first2 = stops[0]
var last2 = stops[stops.length - 1]
if (first2.stop === null) {
first2.stop = ZERO_LENGTH
}
if (last2.stop === null) {
last2.stop = HUNDRED_PERCENT
}
var processStops = []
var previous = 0
for (var i2 = 0; i2 < stops.length; i2++) {
var stop_1 = stops[i2].stop
if (stop_1 !== null) {
var absoluteValue = getAbsoluteValue(stop_1, lineLength)
if (absoluteValue > previous) {
processStops.push(absoluteValue)
} else {
processStops.push(previous)
}
previous = absoluteValue
} else {
processStops.push(null)
}
}
var gapBegin = null
for (var i2 = 0; i2 < processStops.length; i2++) {
var stop_2 = processStops[i2]
if (stop_2 === null) {
if (gapBegin === null) {
gapBegin = i2
}
} else if (gapBegin !== null) {
var gapLength = i2 - gapBegin
var beforeGap = processStops[gapBegin - 1]
var gapValue = (stop_2 - beforeGap) / (gapLength + 1)
for (var g2 = 1; g2 <= gapLength; g2++) {
processStops[gapBegin + g2 - 1] = gapValue * g2
}
gapBegin = null
}
}
return stops.map(function (_a2, i3) {
var color2 = _a2.color
return {
color: color2,
stop: Math.max(Math.min(1, processStops[i3] / lineLength), 0),
}
})
}
var getAngleFromCorner = function (corner, width, height) {
var centerX = width / 2
var centerY = height / 2
var x2 = getAbsoluteValue(corner[0], width) - centerX
var y2 = centerY - getAbsoluteValue(corner[1], height)
return (Math.atan2(y2, x2) + Math.PI * 2) % (Math.PI * 2)
}
var calculateGradientDirection = function (angle2, width, height) {
var radian =
typeof angle2 === 'number'
? angle2
: getAngleFromCorner(angle2, width, height)
var lineLength =
Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian))
var halfWidth = width / 2
var halfHeight = height / 2
var halfLineLength = lineLength / 2
var yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength
var xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength
return [
lineLength,
halfWidth - xDiff,
halfWidth + xDiff,
halfHeight - yDiff,
halfHeight + yDiff,
]
}
var distance$1 = function (a2, b2) {
return Math.sqrt(a2 * a2 + b2 * b2)
}
var findCorner = function (width, height, x2, y2, closest2) {
var corners = [
[0, 0],
[0, height],
[width, 0],
[width, height],
]
return corners.reduce(
function (stat, corner) {
var cx = corner[0],
cy = corner[1]
var d3 = distance$1(x2 - cx, y2 - cy)
if (closest2 ? d3 < stat.optimumDistance : d3 > stat.optimumDistance) {
return {
optimumCorner: corner,
optimumDistance: d3,
}
}
return stat
},
{
optimumDistance: closest2 ? Infinity : -Infinity,
optimumCorner: null,
}
).optimumCorner
}
var calculateRadius = function (gradient, x2, y2, width, height) {
var rx = 0
var ry = 0
switch (gradient.size) {
case 0:
if (gradient.shape === 0) {
rx = ry = Math.min(
Math.abs(x2),
Math.abs(x2 - width),
Math.abs(y2),
Math.abs(y2 - height)
)
} else if (gradient.shape === 1) {
rx = Math.min(Math.abs(x2), Math.abs(x2 - width))
ry = Math.min(Math.abs(y2), Math.abs(y2 - height))
}
break
case 2:
if (gradient.shape === 0) {
rx = ry = Math.min(
distance$1(x2, y2),
distance$1(x2, y2 - height),
distance$1(x2 - width, y2),
distance$1(x2 - width, y2 - height)
)
} else if (gradient.shape === 1) {
var c2 =
Math.min(Math.abs(y2), Math.abs(y2 - height)) /
Math.min(Math.abs(x2), Math.abs(x2 - width))
var _a2 = findCorner(width, height, x2, y2, true),
cx = _a2[0],
cy = _a2[1]
rx = distance$1(cx - x2, (cy - y2) / c2)
ry = c2 * rx
}
break
case 1:
if (gradient.shape === 0) {
rx = ry = Math.max(
Math.abs(x2),
Math.abs(x2 - width),
Math.abs(y2),
Math.abs(y2 - height)
)
} else if (gradient.shape === 1) {
rx = Math.max(Math.abs(x2), Math.abs(x2 - width))
ry = Math.max(Math.abs(y2), Math.abs(y2 - height))
}
break
case 3:
if (gradient.shape === 0) {
rx = ry = Math.max(
distance$1(x2, y2),
distance$1(x2, y2 - height),
distance$1(x2 - width, y2),
distance$1(x2 - width, y2 - height)
)
} else if (gradient.shape === 1) {
var c2 =
Math.max(Math.abs(y2), Math.abs(y2 - height)) /
Math.max(Math.abs(x2), Math.abs(x2 - width))
var _b2 = findCorner(width, height, x2, y2, false),
cx = _b2[0],
cy = _b2[1]
rx = distance$1(cx - x2, (cy - y2) / c2)
ry = c2 * rx
}
break
}
if (Array.isArray(gradient.size)) {
rx = getAbsoluteValue(gradient.size[0], width)
ry =
gradient.size.length === 2
? getAbsoluteValue(gradient.size[1], height)
: rx
}
return [rx, ry]
}
var linearGradient = function (context2, tokens) {
var angle$1 = deg(180)
var stops = []
parseFunctionArgs(tokens).forEach(function (arg, i2) {
if (i2 === 0) {
var firstToken = arg[0]
if (firstToken.type === 20 && firstToken.value === 'to') {
angle$1 = parseNamedSide(arg)
return
} else if (isAngle(firstToken)) {
angle$1 = angle.parse(context2, firstToken)
return
}
}
var colorStop = parseColorStop(context2, arg)
stops.push(colorStop)
})
return { angle: angle$1, stops, type: 1 }
}
var prefixLinearGradient = function (context2, tokens) {
var angle$1 = deg(180)
var stops = []
parseFunctionArgs(tokens).forEach(function (arg, i2) {
if (i2 === 0) {
var firstToken = arg[0]
if (
firstToken.type === 20 &&
['top', 'left', 'right', 'bottom'].indexOf(firstToken.value) !== -1
) {
angle$1 = parseNamedSide(arg)
return
} else if (isAngle(firstToken)) {
angle$1 = (angle.parse(context2, firstToken) + deg(270)) % deg(360)
return
}
}
var colorStop = parseColorStop(context2, arg)
stops.push(colorStop)
})
return {
angle: angle$1,
stops,
type: 1,
}
}
var webkitGradient = function (context2, tokens) {
var angle2 = deg(180)
var stops = []
var type4 = 1
var shape = 0
var size = 3
var position2 = []
parseFunctionArgs(tokens).forEach(function (arg, i2) {
var firstToken = arg[0]
if (i2 === 0) {
if (isIdentToken(firstToken) && firstToken.value === 'linear') {
type4 = 1
return
} else if (isIdentToken(firstToken) && firstToken.value === 'radial') {
type4 = 2
return
}
}
if (firstToken.type === 18) {
if (firstToken.name === 'from') {
var color2 = color$1$1.parse(context2, firstToken.values[0])
stops.push({ stop: ZERO_LENGTH, color: color2 })
} else if (firstToken.name === 'to') {
var color2 = color$1$1.parse(context2, firstToken.values[0])
stops.push({ stop: HUNDRED_PERCENT, color: color2 })
} else if (firstToken.name === 'color-stop') {
var values2 = firstToken.values.filter(nonFunctionArgSeparator)
if (values2.length === 2) {
var color2 = color$1$1.parse(context2, values2[1])
var stop_1 = values2[0]
if (isNumberToken(stop_1)) {
stops.push({
stop: {
type: 16,
number: stop_1.number * 100,
flags: stop_1.flags,
},
color: color2,
})
}
}
}
}
})
return type4 === 1
? {
angle: (angle2 + deg(180)) % deg(360),
stops,
type: type4,
}
: { size, shape, stops, position: position2, type: type4 }
}
var CLOSEST_SIDE = 'closest-side'
var FARTHEST_SIDE = 'farthest-side'
var CLOSEST_CORNER = 'closest-corner'
var FARTHEST_CORNER = 'farthest-corner'
var CIRCLE = 'circle'
var ELLIPSE = 'ellipse'
var COVER = 'cover'
var CONTAIN = 'contain'
var radialGradient = function (context2, tokens) {
var shape = 0
var size = 3
var stops = []
var position2 = []
parseFunctionArgs(tokens).forEach(function (arg, i2) {
var isColorStop = true
if (i2 === 0) {
var isAtPosition_1 = false
isColorStop = arg.reduce(function (acc, token) {
if (isAtPosition_1) {
if (isIdentToken(token)) {
switch (token.value) {
case 'center':
position2.push(FIFTY_PERCENT)
return acc
case 'top':
case 'left':
position2.push(ZERO_LENGTH)
return acc
case 'right':
case 'bottom':
position2.push(HUNDRED_PERCENT)
return acc
}
} else if (isLengthPercentage(token) || isLength$3(token)) {
position2.push(token)
}
} else if (isIdentToken(token)) {
switch (token.value) {
case CIRCLE:
shape = 0
return false
case ELLIPSE:
shape = 1
return false
case 'at':
isAtPosition_1 = true
return false
case CLOSEST_SIDE:
size = 0
return false
case COVER:
case FARTHEST_SIDE:
size = 1
return false
case CONTAIN:
case CLOSEST_CORNER:
size = 2
return false
case FARTHEST_CORNER:
size = 3
return false
}
} else if (isLength$3(token) || isLengthPercentage(token)) {
if (!Array.isArray(size)) {
size = []
}
size.push(token)
return false
}
return acc
}, isColorStop)
}
if (isColorStop) {
var colorStop = parseColorStop(context2, arg)
stops.push(colorStop)
}
})
return { size, shape, stops, position: position2, type: 2 }
}
var prefixRadialGradient = function (context2, tokens) {
var shape = 0
var size = 3
var stops = []
var position2 = []
parseFunctionArgs(tokens).forEach(function (arg, i2) {
var isColorStop = true
if (i2 === 0) {
isColorStop = arg.reduce(function (acc, token) {
if (isIdentToken(token)) {
switch (token.value) {
case 'center':
position2.push(FIFTY_PERCENT)
return false
case 'top':
case 'left':
position2.push(ZERO_LENGTH)
return false
case 'right':
case 'bottom':
position2.push(HUNDRED_PERCENT)
return false
}
} else if (isLengthPercentage(token) || isLength$3(token)) {
position2.push(token)
return false
}
return acc
}, isColorStop)
} else if (i2 === 1) {
isColorStop = arg.reduce(function (acc, token) {
if (isIdentToken(token)) {
switch (token.value) {
case CIRCLE:
shape = 0
return false
case ELLIPSE:
shape = 1
return false
case CONTAIN:
case CLOSEST_SIDE:
size = 0
return false
case FARTHEST_SIDE:
size = 1
return false
case CLOSEST_CORNER:
size = 2
return false
case COVER:
case FARTHEST_CORNER:
size = 3
return false
}
} else if (isLength$3(token) || isLengthPercentage(token)) {
if (!Array.isArray(size)) {
size = []
}
size.push(token)
return false
}
return acc
}, isColorStop)
}
if (isColorStop) {
var colorStop = parseColorStop(context2, arg)
stops.push(colorStop)
}
})
return { size, shape, stops, position: position2, type: 2 }
}
var isLinearGradient$1 = function (background) {
return background.type === 1
}
var isRadialGradient$1 = function (background) {
return background.type === 2
}
var image$1 = {
name: 'image',
parse: function (context2, value2) {
if (value2.type === 22) {
var image_1 = { url: value2.value, type: 0 }
context2.cache.addImage(value2.value)
return image_1
}
if (value2.type === 18) {
var imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value2.name]
if (typeof imageFunction === 'undefined') {
throw new Error(
'Attempting to parse an unsupported image function "' +
value2.name +
'"'
)
}
return imageFunction(context2, value2.values)
}
throw new Error('Unsupported image type ' + value2.type)
},
}
function isSupportedImage(value2) {
return (
!(value2.type === 20 && value2.value === 'none') &&
(value2.type !== 18 || !!SUPPORTED_IMAGE_FUNCTIONS[value2.name])
)
}
var SUPPORTED_IMAGE_FUNCTIONS = {
'linear-gradient': linearGradient,
'-moz-linear-gradient': prefixLinearGradient,
'-ms-linear-gradient': prefixLinearGradient,
'-o-linear-gradient': prefixLinearGradient,
'-webkit-linear-gradient': prefixLinearGradient,
'radial-gradient': radialGradient,
'-moz-radial-gradient': prefixRadialGradient,
'-ms-radial-gradient': prefixRadialGradient,
'-o-radial-gradient': prefixRadialGradient,
'-webkit-radial-gradient': prefixRadialGradient,
'-webkit-gradient': webkitGradient,
}
var backgroundImage = {
name: 'background-image',
initialValue: 'none',
type: 1,
prefix: false,
parse: function (context2, tokens) {
if (tokens.length === 0) {
return []
}
var first2 = tokens[0]
if (first2.type === 20 && first2.value === 'none') {
return []
}
return tokens
.filter(function (value2) {
return nonFunctionArgSeparator(value2) && isSupportedImage(value2)
})
.map(function (value2) {
return image$1.parse(context2, value2)
})
},
}
var backgroundOrigin = {
name: 'background-origin',
initialValue: 'border-box',
prefix: false,
type: 1,
parse: function (_context, tokens) {
return tokens.map(function (token) {
if (isIdentToken(token)) {
switch (token.value) {
case 'padding-box':
return 1
case 'content-box':
return 2
}
}
return 0
})
},
}
var backgroundPosition = {
name: 'background-position',
initialValue: '0% 0%',
type: 1,
prefix: false,
parse: function (_context, tokens) {
return parseFunctionArgs(tokens)
.map(function (values2) {
return values2.filter(isLengthPercentage)
})
.map(parseLengthPercentageTuple)
},
}
var backgroundRepeat = {
name: 'background-repeat',
initialValue: 'repeat',
prefix: false,
type: 1,
parse: function (_context, tokens) {
return parseFunctionArgs(tokens)
.map(function (values2) {
return values2
.filter(isIdentToken)
.map(function (token) {
return token.value
})
.join(' ')
})
.map(parseBackgroundRepeat)
},
}
var parseBackgroundRepeat = function (value2) {
switch (value2) {
case 'no-repeat':
return 1
case 'repeat-x':
case 'repeat no-repeat':
return 2
case 'repeat-y':
case 'no-repeat repeat':
return 3
case 'repeat':
default:
return 0
}
}
var BACKGROUND_SIZE
;(function (BACKGROUND_SIZE2) {
BACKGROUND_SIZE2['AUTO'] = 'auto'
BACKGROUND_SIZE2['CONTAIN'] = 'contain'
BACKGROUND_SIZE2['COVER'] = 'cover'
})(BACKGROUND_SIZE || (BACKGROUND_SIZE = {}))
var backgroundSize = {
name: 'background-size',
initialValue: '0',
prefix: false,
type: 1,
parse: function (_context, tokens) {
return parseFunctionArgs(tokens).map(function (values2) {
return values2.filter(isBackgroundSizeInfoToken)
})
},
}
var isBackgroundSizeInfoToken = function (value2) {
return isIdentToken(value2) || isLengthPercentage(value2)
}
var borderColorForSide = function (side) {
return {
name: 'border-' + side + '-color',
initialValue: 'transparent',
prefix: false,
type: 3,
format: 'color',
}
}
var borderTopColor = borderColorForSide('top')
var borderRightColor = borderColorForSide('right')
var borderBottomColor = borderColorForSide('bottom')
var borderLeftColor = borderColorForSide('left')
var borderRadiusForSide = function (side) {
return {
name: 'border-radius-' + side,
initialValue: '0 0',
prefix: false,
type: 1,
parse: function (_context, tokens) {
return parseLengthPercentageTuple(tokens.filter(isLengthPercentage))
},
}
}
var borderTopLeftRadius = borderRadiusForSide('top-left')
var borderTopRightRadius = borderRadiusForSide('top-right')
var borderBottomRightRadius = borderRadiusForSide('bottom-right')
var borderBottomLeftRadius = borderRadiusForSide('bottom-left')
var borderStyleForSide = function (side) {
return {
name: 'border-' + side + '-style',
initialValue: 'solid',
prefix: false,
type: 2,
parse: function (_context, style2) {
switch (style2) {
case 'none':
return 0
case 'dashed':
return 2
case 'dotted':
return 3
case 'double':
return 4
}
return 1
},
}
}
var borderTopStyle = borderStyleForSide('top')
var borderRightStyle = borderStyleForSide('right')
var borderBottomStyle = borderStyleForSide('bottom')
var borderLeftStyle = borderStyleForSide('left')
var borderWidthForSide = function (side) {
return {
name: 'border-' + side + '-width',
initialValue: '0',
type: 0,
prefix: false,
parse: function (_context, token) {
if (isDimensionToken(token)) {
return token.number
}
return 0
},
}
}
var borderTopWidth = borderWidthForSide('top')
var borderRightWidth = borderWidthForSide('right')
var borderBottomWidth = borderWidthForSide('bottom')
var borderLeftWidth = borderWidthForSide('left')
var color$2 = {
name: 'color',
initialValue: 'transparent',
prefix: false,
type: 3,
format: 'color',
}
var direction = {
name: 'direction',
initialValue: 'ltr',
prefix: false,
type: 2,
parse: function (_context, direction2) {
switch (direction2) {
case 'rtl':
return 1
case 'ltr':
default:
return 0
}
},
}
var display = {
name: 'display',
initialValue: 'inline-block',
prefix: false,
type: 1,
parse: function (_context, tokens) {
return tokens.filter(isIdentToken).reduce(function (bit, token) {
return bit | parseDisplayValue(token.value)
}, 0)
},
}
var parseDisplayValue = function (display2) {
switch (display2) {
case 'block':
case '-webkit-box':
return 2
case 'inline':
return 4
case 'run-in':
return 8
case 'flow':
return 16
case 'flow-root':
return 32
case 'table':
return 64
case 'flex':
case '-webkit-flex':
return 128
case 'grid':
case '-ms-grid':
return 256
case 'ruby':
return 512
case 'subgrid':
return 1024
case 'list-item':
return 2048
case 'table-row-group':
return 4096
case 'table-header-group':
return 8192
case 'table-footer-group':
return 16384
case 'table-row':
return 32768
case 'table-cell':
return 65536
case 'table-column-group':
return 131072
case 'table-column':
return 262144
case 'table-caption':
return 524288
case 'ruby-base':
return 1048576
case 'ruby-text':
return 2097152
case 'ruby-base-container':
return 4194304
case 'ruby-text-container':
return 8388608
case 'contents':
return 16777216
case 'inline-block':
return 33554432
case 'inline-list-item':
return 67108864
case 'inline-table':
return 134217728
case 'inline-flex':
return 268435456
case 'inline-grid':
return 536870912
}
return 0
}
var float = {
name: 'float',
initialValue: 'none',
prefix: false,
type: 2,
parse: function (_context, float3) {
switch (float3) {
case 'left':
return 1
case 'right':
return 2
case 'inline-start':
return 3
case 'inline-end':
return 4
}
return 0
},
}
var letterSpacing = {
name: 'letter-spacing',
initialValue: '0',
prefix: false,
type: 0,
parse: function (_context, token) {
if (token.type === 20 && token.value === 'normal') {
return 0
}
if (token.type === 17) {
return token.number
}
if (token.type === 15) {
return token.number
}
return 0
},
}
var LINE_BREAK
;(function (LINE_BREAK2) {
LINE_BREAK2['NORMAL'] = 'normal'
LINE_BREAK2['STRICT'] = 'strict'
})(LINE_BREAK || (LINE_BREAK = {}))
var lineBreak = {
name: 'line-break',
initialValue: 'normal',
prefix: false,
type: 2,
parse: function (_context, lineBreak2) {
switch (lineBreak2) {
case 'strict':
return LINE_BREAK.STRICT
case 'normal':
default:
return LINE_BREAK.NORMAL
}
},
}
var lineHeight = {
name: 'line-height',
initialValue: 'normal',
prefix: false,
type: 4,
}
var computeLineHeight = function (token, fontSize2) {
if (isIdentToken(token) && token.value === 'normal') {
return 1.2 * fontSize2
} else if (token.type === 17) {
return fontSize2 * token.number
} else if (isLengthPercentage(token)) {
return getAbsoluteValue(token, fontSize2)
}
return fontSize2
}
var listStyleImage = {
name: 'list-style-image',
initialValue: 'none',
type: 0,
prefix: false,
parse: function (context2, token) {
if (token.type === 20 && token.value === 'none') {
return null
}
return image$1.parse(context2, token)
},
}
var listStylePosition = {
name: 'list-style-position',
initialValue: 'outside',
prefix: false,
type: 2,
parse: function (_context, position2) {
switch (position2) {
case 'inside':
return 0
case 'outside':
default:
return 1
}
},
}
var listStyleType = {
name: 'list-style-type',
initialValue: 'none',
prefix: false,
type: 2,
parse: function (_context, type4) {
switch (type4) {
case 'disc':
return 0
case 'circle':
return 1
case 'square':
return 2
case 'decimal':
return 3
case 'cjk-decimal':
return 4
case 'decimal-leading-zero':
return 5
case 'lower-roman':
return 6
case 'upper-roman':
return 7
case 'lower-greek':
return 8
case 'lower-alpha':
return 9
case 'upper-alpha':
return 10
case 'arabic-indic':
return 11
case 'armenian':
return 12
case 'bengali':
return 13
case 'cambodian':
return 14
case 'cjk-earthly-branch':
return 15
case 'cjk-heavenly-stem':
return 16
case 'cjk-ideographic':
return 17
case 'devanagari':
return 18
case 'ethiopic-numeric':
return 19
case 'georgian':
return 20
case 'gujarati':
return 21
case 'gurmukhi':
return 22
case 'hebrew':
return 22
case 'hiragana':
return 23
case 'hiragana-iroha':
return 24
case 'japanese-formal':
return 25
case 'japanese-informal':
return 26
case 'kannada':
return 27
case 'katakana':
return 28
case 'katakana-iroha':
return 29
case 'khmer':
return 30
case 'korean-hangul-formal':
return 31
case 'korean-hanja-formal':
return 32
case 'korean-hanja-informal':
return 33
case 'lao':
return 34
case 'lower-armenian':
return 35
case 'malayalam':
return 36
case 'mongolian':
return 37
case 'myanmar':
return 38
case 'oriya':
return 39
case 'persian':
return 40
case 'simp-chinese-formal':
return 41
case 'simp-chinese-informal':
return 42
case 'tamil':
return 43
case 'telugu':
return 44
case 'thai':
return 45
case 'tibetan':
return 46
case 'trad-chinese-formal':
return 47
case 'trad-chinese-informal':
return 48
case 'upper-armenian':
return 49
case 'disclosure-open':
return 50
case 'disclosure-closed':
return 51
case 'none':
default:
return -1
}
},
}
var marginForSide = function (side) {
return {
name: 'margin-' + side,
initialValue: '0',
prefix: false,
type: 4,
}
}
var marginTop = marginForSide('top')
var marginRight = marginForSide('right')
var marginBottom = marginForSide('bottom')
var marginLeft = marginForSide('left')
var overflow = {
name: 'overflow',
initialValue: 'visible',
prefix: false,
type: 1,
parse: function (_context, tokens) {
return tokens.filter(isIdentToken).map(function (overflow2) {
switch (overflow2.value) {
case 'hidden':
return 1
case 'scroll':
return 2
case 'clip':
return 3
case 'auto':
return 4
case 'visible':
default:
return 0
}
})
},
}
var overflowWrap = {
name: 'overflow-wrap',
initialValue: 'normal',
prefix: false,
type: 2,
parse: function (_context, overflow2) {
switch (overflow2) {
case 'break-word':
return 'break-word'
case 'normal':
default:
return 'normal'
}
},
}
var paddingForSide = function (side) {
return {
name: 'padding-' + side,
initialValue: '0',
prefix: false,
type: 3,
format: 'length-percentage',
}
}
var paddingTop = paddingForSide('top')
var paddingRight = paddingForSide('right')
var paddingBottom = paddingForSide('bottom')
var paddingLeft = paddingForSide('left')
var textAlign = {
name: 'text-align',
initialValue: 'left',
prefix: false,
type: 2,
parse: function (_context, textAlign2) {
switch (textAlign2) {
case 'right':
return 2
case 'center':
case 'justify':
return 1
case 'left':
default:
return 0
}
},
}
var position$1 = {
name: 'position',
initialValue: 'static',
prefix: false,
type: 2,
parse: function (_context, position2) {
switch (position2) {
case 'relative':
return 1
case 'absolute':
return 2
case 'fixed':
return 3
case 'sticky':
return 4
}
return 0
},
}
var textShadow = {
name: 'text-shadow',
initialValue: 'none',
type: 1,
prefix: false,
parse: function (context2, tokens) {
if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {
return []
}
return parseFunctionArgs(tokens).map(function (values2) {
var shadow = {
color: COLORS.TRANSPARENT,
offsetX: ZERO_LENGTH,
offsetY: ZERO_LENGTH,
blur: ZERO_LENGTH,
}
var c2 = 0
for (var i2 = 0; i2 < values2.length; i2++) {
var token = values2[i2]
if (isLength$3(token)) {
if (c2 === 0) {
shadow.offsetX = token
} else if (c2 === 1) {
shadow.offsetY = token
} else {
shadow.blur = token
}
c2++
} else {
shadow.color = color$1$1.parse(context2, token)
}
}
return shadow
})
},
}
var textTransform = {
name: 'text-transform',
initialValue: 'none',
prefix: false,
type: 2,
parse: function (_context, textTransform2) {
switch (textTransform2) {
case 'uppercase':
return 2
case 'lowercase':
return 1
case 'capitalize':
return 3
}
return 0
},
}
var transform$1 = {
name: 'transform',
initialValue: 'none',
prefix: true,
type: 0,
parse: function (_context, token) {
if (token.type === 20 && token.value === 'none') {
return null
}
if (token.type === 18) {
var transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name]
if (typeof transformFunction === 'undefined') {
throw new Error(
'Attempting to parse an unsupported transform function "' +
token.name +
'"'
)
}
return transformFunction(token.values)
}
return null
},
}
var matrix$2 = function (args) {
var values2 = args
.filter(function (arg) {
return arg.type === 17
})
.map(function (arg) {
return arg.number
})
return values2.length === 6 ? values2 : null
}
var matrix3d = function (args) {
var values2 = args
.filter(function (arg) {
return arg.type === 17
})
.map(function (arg) {
return arg.number
})
var a1 = values2[0],
b1 = values2[1]
values2[2]
values2[3]
var a2 = values2[4],
b2 = values2[5]
values2[6]
values2[7]
values2[8]
values2[9]
values2[10]
values2[11]
var a4 = values2[12],
b4 = values2[13]
values2[14]
values2[15]
return values2.length === 16 ? [a1, b1, a2, b2, a4, b4] : null
}
var SUPPORTED_TRANSFORM_FUNCTIONS = {
matrix: matrix$2,
matrix3d,
}
var DEFAULT_VALUE = {
type: 16,
number: 50,
flags: FLAG_INTEGER,
}
var DEFAULT = [DEFAULT_VALUE, DEFAULT_VALUE]
var transformOrigin = {
name: 'transform-origin',
initialValue: '50% 50%',
prefix: true,
type: 1,
parse: function (_context, tokens) {
var origins = tokens.filter(isLengthPercentage)
if (origins.length !== 2) {
return DEFAULT
}
return [origins[0], origins[1]]
},
}
var visibility = {
name: 'visible',
initialValue: 'none',
prefix: false,
type: 2,
parse: function (_context, visibility2) {
switch (visibility2) {
case 'hidden':
return 1
case 'collapse':
return 2
case 'visible':
default:
return 0
}
},
}
var WORD_BREAK
;(function (WORD_BREAK2) {
WORD_BREAK2['NORMAL'] = 'normal'
WORD_BREAK2['BREAK_ALL'] = 'break-all'
WORD_BREAK2['KEEP_ALL'] = 'keep-all'
})(WORD_BREAK || (WORD_BREAK = {}))
var wordBreak = {
name: 'word-break',
initialValue: 'normal',
prefix: false,
type: 2,
parse: function (_context, wordBreak2) {
switch (wordBreak2) {
case 'break-all':
return WORD_BREAK.BREAK_ALL
case 'keep-all':
return WORD_BREAK.KEEP_ALL
case 'normal':
default:
return WORD_BREAK.NORMAL
}
},
}
var zIndex = {
name: 'z-index',
initialValue: 'auto',
prefix: false,
type: 0,
parse: function (_context, token) {
if (token.type === 20) {
return { auto: true, order: 0 }
}
if (isNumberToken(token)) {
return { auto: false, order: token.number }
}
throw new Error('Invalid z-index number parsed')
},
}
var time$1 = {
name: 'time',
parse: function (_context, value2) {
if (value2.type === 15) {
switch (value2.unit.toLowerCase()) {
case 's':
return 1e3 * value2.number
case 'ms':
return value2.number
}
}
throw new Error('Unsupported time type')
},
}
var opacity = {
name: 'opacity',
initialValue: '1',
type: 0,
prefix: false,
parse: function (_context, token) {
if (isNumberToken(token)) {
return token.number
}
return 1
},
}
var textDecorationColor = {
name: 'text-decoration-color',
initialValue: 'transparent',
prefix: false,
type: 3,
format: 'color',
}
var textDecorationLine = {
name: 'text-decoration-line',
initialValue: 'none',
prefix: false,
type: 1,
parse: function (_context, tokens) {
return tokens
.filter(isIdentToken)
.map(function (token) {
switch (token.value) {
case 'underline':
return 1
case 'overline':
return 2
case 'line-through':
return 3
case 'none':
return 4
}
return 0
})
.filter(function (line) {
return line !== 0
})
},
}
var fontFamily = {
name: 'font-family',
initialValue: '',
prefix: false,
type: 1,
parse: function (_context, tokens) {
var accumulator = []
var results = []
tokens.forEach(function (token) {
switch (token.type) {
case 20:
case 0:
accumulator.push(token.value)
break
case 17:
accumulator.push(token.number.toString())
break
case 4:
results.push(accumulator.join(' '))
accumulator.length = 0
break
}
})
if (accumulator.length) {
results.push(accumulator.join(' '))
}
return results.map(function (result) {
return result.indexOf(' ') === -1 ? result : "'" + result + "'"
})
},
}
var fontSize = {
name: 'font-size',
initialValue: '0',
prefix: false,
type: 3,
format: 'length',
}
var fontWeight = {
name: 'font-weight',
initialValue: 'normal',
type: 0,
prefix: false,
parse: function (_context, token) {
if (isNumberToken(token)) {
return token.number
}
if (isIdentToken(token)) {
switch (token.value) {
case 'bold':
return 700
case 'normal':
default:
return 400
}
}
return 400
},
}
var fontVariant = {
name: 'font-variant',
initialValue: 'none',
type: 1,
prefix: false,
parse: function (_context, tokens) {
return tokens.filter(isIdentToken).map(function (token) {
return token.value
})
},
}
var fontStyle = {
name: 'font-style',
initialValue: 'normal',
prefix: false,
type: 2,
parse: function (_context, overflow2) {
switch (overflow2) {
case 'oblique':
return 'oblique'
case 'italic':
return 'italic'
case 'normal':
default:
return 'normal'
}
},
}
var contains = function (bit, value2) {
return (bit & value2) !== 0
}
var content = {
name: 'content',
initialValue: 'none',
type: 1,
prefix: false,
parse: function (_context, tokens) {
if (tokens.length === 0) {
return []
}
var first2 = tokens[0]
if (first2.type === 20 && first2.value === 'none') {
return []
}
return tokens
},
}
var counterIncrement = {
name: 'counter-increment',
initialValue: 'none',
prefix: true,
type: 1,
parse: function (_context, tokens) {
if (tokens.length === 0) {
return null
}
var first2 = tokens[0]
if (first2.type === 20 && first2.value === 'none') {
return null
}
var increments = []
var filtered = tokens.filter(nonWhiteSpace)
for (var i2 = 0; i2 < filtered.length; i2++) {
var counter2 = filtered[i2]
var next = filtered[i2 + 1]
if (counter2.type === 20) {
var increment = next && isNumberToken(next) ? next.number : 1
increments.push({ counter: counter2.value, increment })
}
}
return increments
},
}
var counterReset = {
name: 'counter-reset',
initialValue: 'none',
prefix: true,
type: 1,
parse: function (_context, tokens) {
if (tokens.length === 0) {
return []
}
var resets = []
var filtered = tokens.filter(nonWhiteSpace)
for (var i2 = 0; i2 < filtered.length; i2++) {
var counter2 = filtered[i2]
var next = filtered[i2 + 1]
if (isIdentToken(counter2) && counter2.value !== 'none') {
var reset2 = next && isNumberToken(next) ? next.number : 0
resets.push({ counter: counter2.value, reset: reset2 })
}
}
return resets
},
}
var duration = {
name: 'duration',
initialValue: '0s',
prefix: false,
type: 1,
parse: function (context2, tokens) {
return tokens.filter(isDimensionToken).map(function (token) {
return time$1.parse(context2, token)
})
},
}
var quotes = {
name: 'quotes',
initialValue: 'none',
prefix: true,
type: 1,
parse: function (_context, tokens) {
if (tokens.length === 0) {
return null
}
var first2 = tokens[0]
if (first2.type === 20 && first2.value === 'none') {
return null
}
var quotes2 = []
var filtered = tokens.filter(isStringToken)
if (filtered.length % 2 !== 0) {
return null
}
for (var i2 = 0; i2 < filtered.length; i2 += 2) {
var open_1 = filtered[i2].value
var close_1 = filtered[i2 + 1].value
quotes2.push({ open: open_1, close: close_1 })
}
return quotes2
},
}
var getQuote = function (quotes2, depth, open2) {
if (!quotes2) {
return ''
}
var quote = quotes2[Math.min(depth, quotes2.length - 1)]
if (!quote) {
return ''
}
return open2 ? quote.open : quote.close
}
var boxShadow = {
name: 'box-shadow',
initialValue: 'none',
type: 1,
prefix: false,
parse: function (context2, tokens) {
if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {
return []
}
return parseFunctionArgs(tokens).map(function (values2) {
var shadow = {
color: 255,
offsetX: ZERO_LENGTH,
offsetY: ZERO_LENGTH,
blur: ZERO_LENGTH,
spread: ZERO_LENGTH,
inset: false,
}
var c2 = 0
for (var i2 = 0; i2 < values2.length; i2++) {
var token = values2[i2]
if (isIdentWithValue(token, 'inset')) {
shadow.inset = true
} else if (isLength$3(token)) {
if (c2 === 0) {
shadow.offsetX = token
} else if (c2 === 1) {
shadow.offsetY = token
} else if (c2 === 2) {
shadow.blur = token
} else {
shadow.spread = token
}
c2++
} else {
shadow.color = color$1$1.parse(context2, token)
}
}
return shadow
})
},
}
var paintOrder = {
name: 'paint-order',
initialValue: 'normal',
prefix: false,
type: 1,
parse: function (_context, tokens) {
var DEFAULT_VALUE2 = [0, 1, 2]
var layers = []
tokens.filter(isIdentToken).forEach(function (token) {
switch (token.value) {
case 'stroke':
layers.push(1)
break
case 'fill':
layers.push(0)
break
case 'markers':
layers.push(2)
break
}
})
DEFAULT_VALUE2.forEach(function (value2) {
if (layers.indexOf(value2) === -1) {
layers.push(value2)
}
})
return layers
},
}
var webkitTextStrokeColor = {
name: '-webkit-text-stroke-color',
initialValue: 'currentcolor',
prefix: false,
type: 3,
format: 'color',
}
var webkitTextStrokeWidth = {
name: '-webkit-text-stroke-width',
initialValue: '0',
type: 0,
prefix: false,
parse: function (_context, token) {
if (isDimensionToken(token)) {
return token.number
}
return 0
},
}
var CSSParsedDeclaration = (function () {
function CSSParsedDeclaration2(context2, declaration) {
var _a2, _b2
this.animationDuration = parse$2(
context2,
duration,
declaration.animationDuration
)
this.backgroundClip = parse$2(
context2,
backgroundClip,
declaration.backgroundClip
)
this.backgroundColor = parse$2(
context2,
backgroundColor$1,
declaration.backgroundColor
)
this.backgroundImage = parse$2(
context2,
backgroundImage,
declaration.backgroundImage
)
this.backgroundOrigin = parse$2(
context2,
backgroundOrigin,
declaration.backgroundOrigin
)
this.backgroundPosition = parse$2(
context2,
backgroundPosition,
declaration.backgroundPosition
)
this.backgroundRepeat = parse$2(
context2,
backgroundRepeat,
declaration.backgroundRepeat
)
this.backgroundSize = parse$2(
context2,
backgroundSize,
declaration.backgroundSize
)
this.borderTopColor = parse$2(
context2,
borderTopColor,
declaration.borderTopColor
)
this.borderRightColor = parse$2(
context2,
borderRightColor,
declaration.borderRightColor
)
this.borderBottomColor = parse$2(
context2,
borderBottomColor,
declaration.borderBottomColor
)
this.borderLeftColor = parse$2(
context2,
borderLeftColor,
declaration.borderLeftColor
)
this.borderTopLeftRadius = parse$2(
context2,
borderTopLeftRadius,
declaration.borderTopLeftRadius
)
this.borderTopRightRadius = parse$2(
context2,
borderTopRightRadius,
declaration.borderTopRightRadius
)
this.borderBottomRightRadius = parse$2(
context2,
borderBottomRightRadius,
declaration.borderBottomRightRadius
)
this.borderBottomLeftRadius = parse$2(
context2,
borderBottomLeftRadius,
declaration.borderBottomLeftRadius
)
this.borderTopStyle = parse$2(
context2,
borderTopStyle,
declaration.borderTopStyle
)
this.borderRightStyle = parse$2(
context2,
borderRightStyle,
declaration.borderRightStyle
)
this.borderBottomStyle = parse$2(
context2,
borderBottomStyle,
declaration.borderBottomStyle
)
this.borderLeftStyle = parse$2(
context2,
borderLeftStyle,
declaration.borderLeftStyle
)
this.borderTopWidth = parse$2(
context2,
borderTopWidth,
declaration.borderTopWidth
)
this.borderRightWidth = parse$2(
context2,
borderRightWidth,
declaration.borderRightWidth
)
this.borderBottomWidth = parse$2(
context2,
borderBottomWidth,
declaration.borderBottomWidth
)
this.borderLeftWidth = parse$2(
context2,
borderLeftWidth,
declaration.borderLeftWidth
)
this.boxShadow = parse$2(context2, boxShadow, declaration.boxShadow)
this.color = parse$2(context2, color$2, declaration.color)
this.direction = parse$2(context2, direction, declaration.direction)
this.display = parse$2(context2, display, declaration.display)
this.float = parse$2(context2, float, declaration.cssFloat)
this.fontFamily = parse$2(context2, fontFamily, declaration.fontFamily)
this.fontSize = parse$2(context2, fontSize, declaration.fontSize)
this.fontStyle = parse$2(context2, fontStyle, declaration.fontStyle)
this.fontVariant = parse$2(context2, fontVariant, declaration.fontVariant)
this.fontWeight = parse$2(context2, fontWeight, declaration.fontWeight)
this.letterSpacing = parse$2(
context2,
letterSpacing,
declaration.letterSpacing
)
this.lineBreak = parse$2(context2, lineBreak, declaration.lineBreak)
this.lineHeight = parse$2(context2, lineHeight, declaration.lineHeight)
this.listStyleImage = parse$2(
context2,
listStyleImage,
declaration.listStyleImage
)
this.listStylePosition = parse$2(
context2,
listStylePosition,
declaration.listStylePosition
)
this.listStyleType = parse$2(
context2,
listStyleType,
declaration.listStyleType
)
this.marginTop = parse$2(context2, marginTop, declaration.marginTop)
this.marginRight = parse$2(context2, marginRight, declaration.marginRight)
this.marginBottom = parse$2(
context2,
marginBottom,
declaration.marginBottom
)
this.marginLeft = parse$2(context2, marginLeft, declaration.marginLeft)
this.opacity = parse$2(context2, opacity, declaration.opacity)
var overflowTuple = parse$2(context2, overflow, declaration.overflow)
this.overflowX = overflowTuple[0]
this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0]
this.overflowWrap = parse$2(
context2,
overflowWrap,
declaration.overflowWrap
)
this.paddingTop = parse$2(context2, paddingTop, declaration.paddingTop)
this.paddingRight = parse$2(
context2,
paddingRight,
declaration.paddingRight
)
this.paddingBottom = parse$2(
context2,
paddingBottom,
declaration.paddingBottom
)
this.paddingLeft = parse$2(context2, paddingLeft, declaration.paddingLeft)
this.paintOrder = parse$2(context2, paintOrder, declaration.paintOrder)
this.position = parse$2(context2, position$1, declaration.position)
this.textAlign = parse$2(context2, textAlign, declaration.textAlign)
this.textDecorationColor = parse$2(
context2,
textDecorationColor,
(_a2 = declaration.textDecorationColor) !== null && _a2 !== void 0
? _a2
: declaration.color
)
this.textDecorationLine = parse$2(
context2,
textDecorationLine,
(_b2 = declaration.textDecorationLine) !== null && _b2 !== void 0
? _b2
: declaration.textDecoration
)
this.textShadow = parse$2(context2, textShadow, declaration.textShadow)
this.textTransform = parse$2(
context2,
textTransform,
declaration.textTransform
)
this.transform = parse$2(context2, transform$1, declaration.transform)
this.transformOrigin = parse$2(
context2,
transformOrigin,
declaration.transformOrigin
)
this.visibility = parse$2(context2, visibility, declaration.visibility)
this.webkitTextStrokeColor = parse$2(
context2,
webkitTextStrokeColor,
declaration.webkitTextStrokeColor
)
this.webkitTextStrokeWidth = parse$2(
context2,
webkitTextStrokeWidth,
declaration.webkitTextStrokeWidth
)
this.wordBreak = parse$2(context2, wordBreak, declaration.wordBreak)
this.zIndex = parse$2(context2, zIndex, declaration.zIndex)
}
CSSParsedDeclaration2.prototype.isVisible = function () {
return this.display > 0 && this.opacity > 0 && this.visibility === 0
}
CSSParsedDeclaration2.prototype.isTransparent = function () {
return isTransparent(this.backgroundColor)
}
CSSParsedDeclaration2.prototype.isTransformed = function () {
return this.transform !== null
}
CSSParsedDeclaration2.prototype.isPositioned = function () {
return this.position !== 0
}
CSSParsedDeclaration2.prototype.isPositionedWithZIndex = function () {
return this.isPositioned() && !this.zIndex.auto
}
CSSParsedDeclaration2.prototype.isFloating = function () {
return this.float !== 0
}
CSSParsedDeclaration2.prototype.isInlineLevel = function () {
return (
contains(this.display, 4) ||
contains(this.display, 33554432) ||
contains(this.display, 268435456) ||
contains(this.display, 536870912) ||
contains(this.display, 67108864) ||
contains(this.display, 134217728)
)
}
return CSSParsedDeclaration2
})()
var CSSParsedPseudoDeclaration = (function () {
function CSSParsedPseudoDeclaration2(context2, declaration) {
this.content = parse$2(context2, content, declaration.content)
this.quotes = parse$2(context2, quotes, declaration.quotes)
}
return CSSParsedPseudoDeclaration2
})()
var CSSParsedCounterDeclaration = (function () {
function CSSParsedCounterDeclaration2(context2, declaration) {
this.counterIncrement = parse$2(
context2,
counterIncrement,
declaration.counterIncrement
)
this.counterReset = parse$2(
context2,
counterReset,
declaration.counterReset
)
}
return CSSParsedCounterDeclaration2
})()
var parse$2 = function (context2, descriptor, style2) {
var tokenizer = new Tokenizer()
var value2 =
style2 !== null && typeof style2 !== 'undefined'
? style2.toString()
: descriptor.initialValue
tokenizer.write(value2)
var parser2 = new Parser$1(tokenizer.read())
switch (descriptor.type) {
case 2:
var token = parser2.parseComponentValue()
return descriptor.parse(
context2,
isIdentToken(token) ? token.value : descriptor.initialValue
)
case 0:
return descriptor.parse(context2, parser2.parseComponentValue())
case 1:
return descriptor.parse(context2, parser2.parseComponentValues())
case 4:
return parser2.parseComponentValue()
case 3:
switch (descriptor.format) {
case 'angle':
return angle.parse(context2, parser2.parseComponentValue())
case 'color':
return color$1$1.parse(context2, parser2.parseComponentValue())
case 'image':
return image$1.parse(context2, parser2.parseComponentValue())
case 'length':
var length_1 = parser2.parseComponentValue()
return isLength$3(length_1) ? length_1 : ZERO_LENGTH
case 'length-percentage':
var value_1 = parser2.parseComponentValue()
return isLengthPercentage(value_1) ? value_1 : ZERO_LENGTH
case 'time':
return time$1.parse(context2, parser2.parseComponentValue())
}
break
}
}
var elementDebuggerAttribute = 'data-html2canvas-debug'
var getElementDebugType = function (element) {
var attribute = element.getAttribute(elementDebuggerAttribute)
switch (attribute) {
case 'all':
return 1
case 'clone':
return 2
case 'parse':
return 3
case 'render':
return 4
default:
return 0
}
}
var isDebugging = function (element, type4) {
var elementType = getElementDebugType(element)
return elementType === 1 || type4 === elementType
}
var ElementContainer = (function () {
function ElementContainer2(context2, element) {
this.context = context2
this.textNodes = []
this.elements = []
this.flags = 0
if (isDebugging(element, 3)) {
debugger
}
this.styles = new CSSParsedDeclaration(
context2,
window.getComputedStyle(element, null)
)
if (isHTMLElementNode(element)) {
if (
this.styles.animationDuration.some(function (duration2) {
return duration2 > 0
})
) {
element.style.animationDuration = '0s'
}
if (this.styles.transform !== null) {
element.style.transform = 'none'
}
}
this.bounds = parseBounds(this.context, element)
if (isDebugging(element, 4)) {
this.flags |= 16
}
}
return ElementContainer2
})()
var base64 =
'AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA='
var chars$1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
var lookup$1 = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256)
for (var i$1$2 = 0; i$1$2 < chars$1.length; i$1$2++) {
lookup$1[chars$1.charCodeAt(i$1$2)] = i$1$2
}
var decode$2 = function (base642) {
var bufferLength = base642.length * 0.75,
len2 = base642.length,
i2,
p2 = 0,
encoded1,
encoded2,
encoded3,
encoded4
if (base642[base642.length - 1] === '=') {
bufferLength--
if (base642[base642.length - 2] === '=') {
bufferLength--
}
}
var buffer =
typeof ArrayBuffer !== 'undefined' &&
typeof Uint8Array !== 'undefined' &&
typeof Uint8Array.prototype.slice !== 'undefined'
? new ArrayBuffer(bufferLength)
: new Array(bufferLength)
var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer)
for (i2 = 0; i2 < len2; i2 += 4) {
encoded1 = lookup$1[base642.charCodeAt(i2)]
encoded2 = lookup$1[base642.charCodeAt(i2 + 1)]
encoded3 = lookup$1[base642.charCodeAt(i2 + 2)]
encoded4 = lookup$1[base642.charCodeAt(i2 + 3)]
bytes[p2++] = (encoded1 << 2) | (encoded2 >> 4)
bytes[p2++] = ((encoded2 & 15) << 4) | (encoded3 >> 2)
bytes[p2++] = ((encoded3 & 3) << 6) | (encoded4 & 63)
}
return buffer
}
var polyUint16Array = function (buffer) {
var length2 = buffer.length
var bytes = []
for (var i2 = 0; i2 < length2; i2 += 2) {
bytes.push((buffer[i2 + 1] << 8) | buffer[i2])
}
return bytes
}
var polyUint32Array = function (buffer) {
var length2 = buffer.length
var bytes = []
for (var i2 = 0; i2 < length2; i2 += 4) {
bytes.push(
(buffer[i2 + 3] << 24) |
(buffer[i2 + 2] << 16) |
(buffer[i2 + 1] << 8) |
buffer[i2]
)
}
return bytes
}
var UTRIE2_SHIFT_2 = 5
var UTRIE2_SHIFT_1 = 6 + 5
var UTRIE2_INDEX_SHIFT = 2
var UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2
var UTRIE2_LSCP_INDEX_2_OFFSET = 65536 >> UTRIE2_SHIFT_2
var UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2
var UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1
var UTRIE2_LSCP_INDEX_2_LENGTH = 1024 >> UTRIE2_SHIFT_2
var UTRIE2_INDEX_2_BMP_LENGTH =
UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH
var UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH
var UTRIE2_UTF8_2B_INDEX_2_LENGTH = 2048 >> 6
var UTRIE2_INDEX_1_OFFSET =
UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH
var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 65536 >> UTRIE2_SHIFT_1
var UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2
var UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1
var slice16 = function (view2, start2, end2) {
if (view2.slice) {
return view2.slice(start2, end2)
}
return new Uint16Array(Array.prototype.slice.call(view2, start2, end2))
}
var slice32 = function (view2, start2, end2) {
if (view2.slice) {
return view2.slice(start2, end2)
}
return new Uint32Array(Array.prototype.slice.call(view2, start2, end2))
}
var createTrieFromBase64 = function (base642, _byteLength) {
var buffer = decode$2(base642)
var view32 = Array.isArray(buffer)
? polyUint32Array(buffer)
: new Uint32Array(buffer)
var view16 = Array.isArray(buffer)
? polyUint16Array(buffer)
: new Uint16Array(buffer)
var headerLength = 24
var index2 = slice16(view16, headerLength / 2, view32[4] / 2)
var data2 =
view32[5] === 2
? slice16(view16, (headerLength + view32[4]) / 2)
: slice32(view32, Math.ceil((headerLength + view32[4]) / 4))
return new Trie(view32[0], view32[1], view32[2], view32[3], index2, data2)
}
var Trie = (function () {
function Trie2(
initialValue,
errorValue,
highStart,
highValueIndex,
index2,
data2
) {
this.initialValue = initialValue
this.errorValue = errorValue
this.highStart = highStart
this.highValueIndex = highValueIndex
this.index = index2
this.data = data2
}
Trie2.prototype.get = function (codePoint) {
var ix
if (codePoint >= 0) {
if (codePoint < 55296 || (codePoint > 56319 && codePoint <= 65535)) {
ix = this.index[codePoint >> UTRIE2_SHIFT_2]
ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK)
return this.data[ix]
}
if (codePoint <= 65535) {
ix =
this.index[
UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 55296) >> UTRIE2_SHIFT_2)
]
ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK)
return this.data[ix]
}
if (codePoint < this.highStart) {
ix =
UTRIE2_INDEX_1_OFFSET -
UTRIE2_OMITTED_BMP_INDEX_1_LENGTH +
(codePoint >> UTRIE2_SHIFT_1)
ix = this.index[ix]
ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK
ix = this.index[ix]
ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK)
return this.data[ix]
}
if (codePoint <= 1114111) {
return this.data[this.highValueIndex]
}
}
return this.errorValue
}
return Trie2
})()
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
var lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256)
for (var i$4 = 0; i$4 < chars.length; i$4++) {
lookup[chars.charCodeAt(i$4)] = i$4
}
var Prepend = 1
var CR = 2
var LF = 3
var Control = 4
var Extend = 5
var SpacingMark = 7
var L = 8
var V = 9
var T$1 = 10
var LV = 11
var LVT = 12
var ZWJ = 13
var Extended_Pictographic = 14
var RI = 15
var toCodePoints = function (str) {
var codePoints = []
var i2 = 0
var length2 = str.length
while (i2 < length2) {
var value2 = str.charCodeAt(i2++)
if (value2 >= 55296 && value2 <= 56319 && i2 < length2) {
var extra = str.charCodeAt(i2++)
if ((extra & 64512) === 56320) {
codePoints.push(((value2 & 1023) << 10) + (extra & 1023) + 65536)
} else {
codePoints.push(value2)
i2--
}
} else {
codePoints.push(value2)
}
}
return codePoints
}
var fromCodePoint = function () {
var codePoints = []
for (var _i = 0; _i < arguments.length; _i++) {
codePoints[_i] = arguments[_i]
}
if (String.fromCodePoint) {
return String.fromCodePoint.apply(String, codePoints)
}
var length2 = codePoints.length
if (!length2) {
return ''
}
var codeUnits = []
var index2 = -1
var result = ''
while (++index2 < length2) {
var codePoint = codePoints[index2]
if (codePoint <= 65535) {
codeUnits.push(codePoint)
} else {
codePoint -= 65536
codeUnits.push((codePoint >> 10) + 55296, (codePoint % 1024) + 56320)
}
if (index2 + 1 === length2 || codeUnits.length > 16384) {
result += String.fromCharCode.apply(String, codeUnits)
codeUnits.length = 0
}
}
return result
}
var UnicodeTrie = createTrieFromBase64(base64)
var BREAK_NOT_ALLOWED = '\xD7'
var BREAK_ALLOWED = '\xF7'
var codePointToClass = function (codePoint) {
return UnicodeTrie.get(codePoint)
}
var _graphemeBreakAtIndex = function (_codePoints, classTypes, index2) {
var prevIndex = index2 - 2
var prev = classTypes[prevIndex]
var current2 = classTypes[index2 - 1]
var next = classTypes[index2]
if (current2 === CR && next === LF) {
return BREAK_NOT_ALLOWED
}
if (current2 === CR || current2 === LF || current2 === Control) {
return BREAK_ALLOWED
}
if (next === CR || next === LF || next === Control) {
return BREAK_ALLOWED
}
if (current2 === L && [L, V, LV, LVT].indexOf(next) !== -1) {
return BREAK_NOT_ALLOWED
}
if ((current2 === LV || current2 === V) && (next === V || next === T$1)) {
return BREAK_NOT_ALLOWED
}
if ((current2 === LVT || current2 === T$1) && next === T$1) {
return BREAK_NOT_ALLOWED
}
if (next === ZWJ || next === Extend) {
return BREAK_NOT_ALLOWED
}
if (next === SpacingMark) {
return BREAK_NOT_ALLOWED
}
if (current2 === Prepend) {
return BREAK_NOT_ALLOWED
}
if (current2 === ZWJ && next === Extended_Pictographic) {
while (prev === Extend) {
prev = classTypes[--prevIndex]
}
if (prev === Extended_Pictographic) {
return BREAK_NOT_ALLOWED
}
}
if (current2 === RI && next === RI) {
var countRI = 0
while (prev === RI) {
countRI++
prev = classTypes[--prevIndex]
}
if (countRI % 2 === 0) {
return BREAK_NOT_ALLOWED
}
}
return BREAK_ALLOWED
}
var GraphemeBreaker = function (str) {
var codePoints = toCodePoints(str)
var length2 = codePoints.length
var index2 = 0
var lastEnd = 0
var classTypes = codePoints.map(codePointToClass)
return {
next: function () {
if (index2 >= length2) {
return { done: true, value: null }
}
var graphemeBreak = BREAK_NOT_ALLOWED
while (
index2 < length2 &&
(graphemeBreak = _graphemeBreakAtIndex(
codePoints,
classTypes,
++index2
)) === BREAK_NOT_ALLOWED
) {}
if (graphemeBreak !== BREAK_NOT_ALLOWED || index2 === length2) {
var value2 = fromCodePoint.apply(
null,
codePoints.slice(lastEnd, index2)
)
lastEnd = index2
return { value: value2, done: false }
}
return { done: true, value: null }
},
}
}
var splitGraphemes = function (str) {
var breaker = GraphemeBreaker(str)
var graphemes = []
var bk
while (!(bk = breaker.next()).done) {
if (bk.value) {
graphemes.push(bk.value.slice())
}
}
return graphemes
}
var testRangeBounds = function (document2) {
var TEST_HEIGHT = 123
if (document2.createRange) {
var range3 = document2.createRange()
if (range3.getBoundingClientRect) {
var testElement = document2.createElement('boundtest')
testElement.style.height = TEST_HEIGHT + 'px'
testElement.style.display = 'block'
document2.body.appendChild(testElement)
range3.selectNode(testElement)
var rangeBounds = range3.getBoundingClientRect()
var rangeHeight = Math.round(rangeBounds.height)
document2.body.removeChild(testElement)
if (rangeHeight === TEST_HEIGHT) {
return true
}
}
}
return false
}
var testIOSLineBreak = function (document2) {
var testElement = document2.createElement('boundtest')
testElement.style.width = '50px'
testElement.style.display = 'block'
testElement.style.fontSize = '12px'
testElement.style.letterSpacing = '0px'
testElement.style.wordSpacing = '0px'
document2.body.appendChild(testElement)
var range3 = document2.createRange()
testElement.innerHTML =
typeof ''.repeat === 'function' ? '👨'.repeat(10) : ''
var node2 = testElement.firstChild
var textList = toCodePoints$1(node2.data).map(function (i2) {
return fromCodePoint$1(i2)
})
var offset2 = 0
var prev = {}
var supports = textList.every(function (text2, i2) {
range3.setStart(node2, offset2)
range3.setEnd(node2, offset2 + text2.length)
var rect = range3.getBoundingClientRect()
offset2 += text2.length
var boundAhead = rect.x > prev.x || rect.y > prev.y
prev = rect
if (i2 === 0) {
return true
}
return boundAhead
})
document2.body.removeChild(testElement)
return supports
}
var testCORS = function () {
return typeof new Image().crossOrigin !== 'undefined'
}
var testResponseType = function () {
return typeof new XMLHttpRequest().responseType === 'string'
}
var testSVG = function (document2) {
var img = new Image()
var canvas = document2.createElement('canvas')
var ctx = canvas.getContext('2d')
if (!ctx) {
return false
}
img.src = "data:image/svg+xml,"
try {
ctx.drawImage(img, 0, 0)
canvas.toDataURL()
} catch (e2) {
return false
}
return true
}
var isGreenPixel = function (data2) {
return (
data2[0] === 0 && data2[1] === 255 && data2[2] === 0 && data2[3] === 255
)
}
var testForeignObject = function (document2) {
var canvas = document2.createElement('canvas')
var size = 100
canvas.width = size
canvas.height = size
var ctx = canvas.getContext('2d')
if (!ctx) {
return Promise.reject(false)
}
ctx.fillStyle = 'rgb(0, 255, 0)'
ctx.fillRect(0, 0, size, size)
var img = new Image()
var greenImageSrc = canvas.toDataURL()
img.src = greenImageSrc
var svg2 = createForeignObjectSVG(size, size, 0, 0, img)
ctx.fillStyle = 'red'
ctx.fillRect(0, 0, size, size)
return loadSerializedSVG$1(svg2)
.then(function (img2) {
ctx.drawImage(img2, 0, 0)
var data2 = ctx.getImageData(0, 0, size, size).data
ctx.fillStyle = 'red'
ctx.fillRect(0, 0, size, size)
var node2 = document2.createElement('div')
node2.style.backgroundImage = 'url(' + greenImageSrc + ')'
node2.style.height = size + 'px'
return isGreenPixel(data2)
? loadSerializedSVG$1(createForeignObjectSVG(size, size, 0, 0, node2))
: Promise.reject(false)
})
.then(function (img2) {
ctx.drawImage(img2, 0, 0)
return isGreenPixel(ctx.getImageData(0, 0, size, size).data)
})
.catch(function () {
return false
})
}
var createForeignObjectSVG = function (width, height, x2, y2, node2) {
var xmlns = 'http://www.w3.org/2000/svg'
var svg2 = document.createElementNS(xmlns, 'svg')
var foreignObject = document.createElementNS(xmlns, 'foreignObject')
svg2.setAttributeNS(null, 'width', width.toString())
svg2.setAttributeNS(null, 'height', height.toString())
foreignObject.setAttributeNS(null, 'width', '100%')
foreignObject.setAttributeNS(null, 'height', '100%')
foreignObject.setAttributeNS(null, 'x', x2.toString())
foreignObject.setAttributeNS(null, 'y', y2.toString())
foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true')
svg2.appendChild(foreignObject)
foreignObject.appendChild(node2)
return svg2
}
var loadSerializedSVG$1 = function (svg2) {
return new Promise(function (resolve2, reject2) {
var img = new Image()
img.onload = function () {
return resolve2(img)
}
img.onerror = reject2
img.src =
'data:image/svg+xml;charset=utf-8,' +
encodeURIComponent(new XMLSerializer().serializeToString(svg2))
})
}
var FEATURES = {
get SUPPORT_RANGE_BOUNDS() {
var value2 = testRangeBounds(document)
Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', { value: value2 })
return value2
},
get SUPPORT_WORD_BREAKING() {
var value2 = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document)
Object.defineProperty(FEATURES, 'SUPPORT_WORD_BREAKING', { value: value2 })
return value2
},
get SUPPORT_SVG_DRAWING() {
var value2 = testSVG(document)
Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', { value: value2 })
return value2
},
get SUPPORT_FOREIGNOBJECT_DRAWING() {
var value2 =
typeof Array.from === 'function' && typeof window.fetch === 'function'
? testForeignObject(document)
: Promise.resolve(false)
Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', {
value: value2,
})
return value2
},
get SUPPORT_CORS_IMAGES() {
var value2 = testCORS()
Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', { value: value2 })
return value2
},
get SUPPORT_RESPONSE_TYPE() {
var value2 = testResponseType()
Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', { value: value2 })
return value2
},
get SUPPORT_CORS_XHR() {
var value2 = 'withCredentials' in new XMLHttpRequest()
Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', { value: value2 })
return value2
},
get SUPPORT_NATIVE_TEXT_SEGMENTATION() {
var value2 = !!(typeof Intl !== 'undefined' && Intl.Segmenter)
Object.defineProperty(FEATURES, 'SUPPORT_NATIVE_TEXT_SEGMENTATION', {
value: value2,
})
return value2
},
}
var TextBounds = (function () {
function TextBounds2(text2, bounds) {
this.text = text2
this.bounds = bounds
}
return TextBounds2
})()
var parseTextBounds = function (context2, value2, styles, node2) {
var textList = breakText(value2, styles)
var textBounds = []
var offset2 = 0
textList.forEach(function (text2) {
if (styles.textDecorationLine.length || text2.trim().length > 0) {
if (FEATURES.SUPPORT_RANGE_BOUNDS) {
var clientRects = createRange(
node2,
offset2,
text2.length
).getClientRects()
if (clientRects.length > 1) {
var subSegments = segmentGraphemes(text2)
var subOffset_1 = 0
subSegments.forEach(function (subSegment) {
textBounds.push(
new TextBounds(
subSegment,
Bounds.fromDOMRectList(
context2,
createRange(
node2,
subOffset_1 + offset2,
subSegment.length
).getClientRects()
)
)
)
subOffset_1 += subSegment.length
})
} else {
textBounds.push(
new TextBounds(text2, Bounds.fromDOMRectList(context2, clientRects))
)
}
} else {
var replacementNode = node2.splitText(text2.length)
textBounds.push(
new TextBounds(text2, getWrapperBounds(context2, node2))
)
node2 = replacementNode
}
} else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {
node2 = node2.splitText(text2.length)
}
offset2 += text2.length
})
return textBounds
}
var getWrapperBounds = function (context2, node2) {
var ownerDocument = node2.ownerDocument
if (ownerDocument) {
var wrapper = ownerDocument.createElement('html2canvaswrapper')
wrapper.appendChild(node2.cloneNode(true))
var parentNode2 = node2.parentNode
if (parentNode2) {
parentNode2.replaceChild(wrapper, node2)
var bounds = parseBounds(context2, wrapper)
if (wrapper.firstChild) {
parentNode2.replaceChild(wrapper.firstChild, wrapper)
}
return bounds
}
}
return Bounds.EMPTY
}
var createRange = function (node2, offset2, length2) {
var ownerDocument = node2.ownerDocument
if (!ownerDocument) {
throw new Error('Node has no owner document')
}
var range3 = ownerDocument.createRange()
range3.setStart(node2, offset2)
range3.setEnd(node2, offset2 + length2)
return range3
}
var segmentGraphemes = function (value2) {
if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {
var segmenter = new Intl.Segmenter(void 0, { granularity: 'grapheme' })
return Array.from(segmenter.segment(value2)).map(function (segment) {
return segment.segment
})
}
return splitGraphemes(value2)
}
var segmentWords = function (value2, styles) {
if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {
var segmenter = new Intl.Segmenter(void 0, {
granularity: 'word',
})
return Array.from(segmenter.segment(value2)).map(function (segment) {
return segment.segment
})
}
return breakWords(value2, styles)
}
var breakText = function (value2, styles) {
return styles.letterSpacing !== 0
? segmentGraphemes(value2)
: segmentWords(value2, styles)
}
var wordSeparators = [32, 160, 4961, 65792, 65793, 4153, 4241]
var breakWords = function (str, styles) {
var breaker = LineBreaker(str, {
lineBreak: styles.lineBreak,
wordBreak:
styles.overflowWrap === 'break-word' ? 'break-word' : styles.wordBreak,
})
var words = []
var bk
var _loop_1 = function () {
if (bk.value) {
var value2 = bk.value.slice()
var codePoints = toCodePoints$1(value2)
var word_1 = ''
codePoints.forEach(function (codePoint) {
if (wordSeparators.indexOf(codePoint) === -1) {
word_1 += fromCodePoint$1(codePoint)
} else {
if (word_1.length) {
words.push(word_1)
}
words.push(fromCodePoint$1(codePoint))
word_1 = ''
}
})
if (word_1.length) {
words.push(word_1)
}
}
}
while (!(bk = breaker.next()).done) {
_loop_1()
}
return words
}
var TextContainer = (function () {
function TextContainer2(context2, node2, styles) {
this.text = transform$2(node2.data, styles.textTransform)
this.textBounds = parseTextBounds(context2, this.text, styles, node2)
}
return TextContainer2
})()
var transform$2 = function (text2, transform3) {
switch (transform3) {
case 1:
return text2.toLowerCase()
case 3:
return text2.replace(CAPITALIZE, capitalize$1)
case 2:
return text2.toUpperCase()
default:
return text2
}
}
var CAPITALIZE = /(^|\s|:|-|\(|\))([a-z])/g
var capitalize$1 = function (m2, p1, p2) {
if (m2.length > 0) {
return p1 + p2.toUpperCase()
}
return m2
}
var ImageElementContainer = (function (_super) {
__extends$3(ImageElementContainer2, _super)
function ImageElementContainer2(context2, img) {
var _this = _super.call(this, context2, img) || this
_this.src = img.currentSrc || img.src
_this.intrinsicWidth = img.naturalWidth
_this.intrinsicHeight = img.naturalHeight
_this.context.cache.addImage(_this.src)
return _this
}
return ImageElementContainer2
})(ElementContainer)
var CanvasElementContainer = (function (_super) {
__extends$3(CanvasElementContainer2, _super)
function CanvasElementContainer2(context2, canvas) {
var _this = _super.call(this, context2, canvas) || this
_this.canvas = canvas
_this.intrinsicWidth = canvas.width
_this.intrinsicHeight = canvas.height
return _this
}
return CanvasElementContainer2
})(ElementContainer)
var SVGElementContainer = (function (_super) {
__extends$3(SVGElementContainer2, _super)
function SVGElementContainer2(context2, img) {
var _this = _super.call(this, context2, img) || this
var s2 = new XMLSerializer()
var bounds = parseBounds(context2, img)
img.setAttribute('width', bounds.width + 'px')
img.setAttribute('height', bounds.height + 'px')
_this.svg =
'data:image/svg+xml,' + encodeURIComponent(s2.serializeToString(img))
_this.intrinsicWidth = img.width.baseVal.value
_this.intrinsicHeight = img.height.baseVal.value
_this.context.cache.addImage(_this.svg)
return _this
}
return SVGElementContainer2
})(ElementContainer)
var LIElementContainer = (function (_super) {
__extends$3(LIElementContainer2, _super)
function LIElementContainer2(context2, element) {
var _this = _super.call(this, context2, element) || this
_this.value = element.value
return _this
}
return LIElementContainer2
})(ElementContainer)
var OLElementContainer = (function (_super) {
__extends$3(OLElementContainer2, _super)
function OLElementContainer2(context2, element) {
var _this = _super.call(this, context2, element) || this
_this.start = element.start
_this.reversed =
typeof element.reversed === 'boolean' && element.reversed === true
return _this
}
return OLElementContainer2
})(ElementContainer)
var CHECKBOX_BORDER_RADIUS = [
{
type: 15,
flags: 0,
unit: 'px',
number: 3,
},
]
var RADIO_BORDER_RADIUS = [
{
type: 16,
flags: 0,
number: 50,
},
]
var reformatInputBounds = function (bounds) {
if (bounds.width > bounds.height) {
return new Bounds(
bounds.left + (bounds.width - bounds.height) / 2,
bounds.top,
bounds.height,
bounds.height
)
} else if (bounds.width < bounds.height) {
return new Bounds(
bounds.left,
bounds.top + (bounds.height - bounds.width) / 2,
bounds.width,
bounds.width
)
}
return bounds
}
var getInputValue = function (node2) {
var value2 =
node2.type === PASSWORD
? new Array(node2.value.length + 1).join('\u2022')
: node2.value
return value2.length === 0 ? node2.placeholder || '' : value2
}
var CHECKBOX = 'checkbox'
var RADIO = 'radio'
var PASSWORD = 'password'
var INPUT_COLOR = 707406591
var InputElementContainer = (function (_super) {
__extends$3(InputElementContainer2, _super)
function InputElementContainer2(context2, input) {
var _this = _super.call(this, context2, input) || this
_this.type = input.type.toLowerCase()
_this.checked = input.checked
_this.value = getInputValue(input)
if (_this.type === CHECKBOX || _this.type === RADIO) {
_this.styles.backgroundColor = 3739148031
_this.styles.borderTopColor =
_this.styles.borderRightColor =
_this.styles.borderBottomColor =
_this.styles.borderLeftColor =
2779096575
_this.styles.borderTopWidth =
_this.styles.borderRightWidth =
_this.styles.borderBottomWidth =
_this.styles.borderLeftWidth =
1
_this.styles.borderTopStyle =
_this.styles.borderRightStyle =
_this.styles.borderBottomStyle =
_this.styles.borderLeftStyle =
1
_this.styles.backgroundClip = [0]
_this.styles.backgroundOrigin = [0]
_this.bounds = reformatInputBounds(_this.bounds)
}
switch (_this.type) {
case CHECKBOX:
_this.styles.borderTopRightRadius =
_this.styles.borderTopLeftRadius =
_this.styles.borderBottomRightRadius =
_this.styles.borderBottomLeftRadius =
CHECKBOX_BORDER_RADIUS
break
case RADIO:
_this.styles.borderTopRightRadius =
_this.styles.borderTopLeftRadius =
_this.styles.borderBottomRightRadius =
_this.styles.borderBottomLeftRadius =
RADIO_BORDER_RADIUS
break
}
return _this
}
return InputElementContainer2
})(ElementContainer)
var SelectElementContainer = (function (_super) {
__extends$3(SelectElementContainer2, _super)
function SelectElementContainer2(context2, element) {
var _this = _super.call(this, context2, element) || this
var option2 = element.options[element.selectedIndex || 0]
_this.value = option2 ? option2.text || '' : ''
return _this
}
return SelectElementContainer2
})(ElementContainer)
var TextareaElementContainer = (function (_super) {
__extends$3(TextareaElementContainer2, _super)
function TextareaElementContainer2(context2, element) {
var _this = _super.call(this, context2, element) || this
_this.value = element.value
return _this
}
return TextareaElementContainer2
})(ElementContainer)
var IFrameElementContainer = (function (_super) {
__extends$3(IFrameElementContainer2, _super)
function IFrameElementContainer2(context2, iframe) {
var _this = _super.call(this, context2, iframe) || this
_this.src = iframe.src
_this.width = parseInt(iframe.width, 10) || 0
_this.height = parseInt(iframe.height, 10) || 0
_this.backgroundColor = _this.styles.backgroundColor
try {
if (
iframe.contentWindow &&
iframe.contentWindow.document &&
iframe.contentWindow.document.documentElement
) {
_this.tree = parseTree(
context2,
iframe.contentWindow.document.documentElement
)
var documentBackgroundColor = iframe.contentWindow.document
.documentElement
? parseColor(
context2,
getComputedStyle(iframe.contentWindow.document.documentElement)
.backgroundColor
)
: COLORS.TRANSPARENT
var bodyBackgroundColor = iframe.contentWindow.document.body
? parseColor(
context2,
getComputedStyle(iframe.contentWindow.document.body)
.backgroundColor
)
: COLORS.TRANSPARENT
_this.backgroundColor = isTransparent(documentBackgroundColor)
? isTransparent(bodyBackgroundColor)
? _this.styles.backgroundColor
: bodyBackgroundColor
: documentBackgroundColor
}
} catch (e2) {}
return _this
}
return IFrameElementContainer2
})(ElementContainer)
var LIST_OWNERS = ['OL', 'UL', 'MENU']
var parseNodeTree = function (context2, node2, parent2, root2) {
for (
var childNode = node2.firstChild, nextNode = void 0;
childNode;
childNode = nextNode
) {
nextNode = childNode.nextSibling
if (isTextNode(childNode) && childNode.data.trim().length > 0) {
parent2.textNodes.push(
new TextContainer(context2, childNode, parent2.styles)
)
} else if (isElementNode(childNode)) {
if (isSlotElement$1(childNode) && childNode.assignedNodes) {
childNode.assignedNodes().forEach(function (childNode2) {
return parseNodeTree(context2, childNode2, parent2, root2)
})
} else {
var container = createContainer(context2, childNode)
if (container.styles.isVisible()) {
if (createsRealStackingContext(childNode, container, root2)) {
container.flags |= 4
} else if (createsStackingContext(container.styles)) {
container.flags |= 2
}
if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {
container.flags |= 8
}
parent2.elements.push(container)
childNode.slot
if (childNode.shadowRoot) {
parseNodeTree(context2, childNode.shadowRoot, container, root2)
} else if (
!isTextareaElement(childNode) &&
!isSVGElement(childNode) &&
!isSelectElement(childNode)
) {
parseNodeTree(context2, childNode, container, root2)
}
}
}
}
}
}
var createContainer = function (context2, element) {
if (isImageElement(element)) {
return new ImageElementContainer(context2, element)
}
if (isCanvasElement(element)) {
return new CanvasElementContainer(context2, element)
}
if (isSVGElement(element)) {
return new SVGElementContainer(context2, element)
}
if (isLIElement(element)) {
return new LIElementContainer(context2, element)
}
if (isOLElement(element)) {
return new OLElementContainer(context2, element)
}
if (isInputElement(element)) {
return new InputElementContainer(context2, element)
}
if (isSelectElement(element)) {
return new SelectElementContainer(context2, element)
}
if (isTextareaElement(element)) {
return new TextareaElementContainer(context2, element)
}
if (isIFrameElement(element)) {
return new IFrameElementContainer(context2, element)
}
return new ElementContainer(context2, element)
}
var parseTree = function (context2, element) {
var container = createContainer(context2, element)
container.flags |= 4
parseNodeTree(context2, element, container, container)
return container
}
var createsRealStackingContext = function (node2, container, root2) {
return (
container.styles.isPositionedWithZIndex() ||
container.styles.opacity < 1 ||
container.styles.isTransformed() ||
(isBodyElement(node2) && root2.styles.isTransparent())
)
}
var createsStackingContext = function (styles) {
return styles.isPositioned() || styles.isFloating()
}
var isTextNode = function (node2) {
return node2.nodeType === Node.TEXT_NODE
}
var isElementNode = function (node2) {
return node2.nodeType === Node.ELEMENT_NODE
}
var isHTMLElementNode = function (node2) {
return (
isElementNode(node2) &&
typeof node2.style !== 'undefined' &&
!isSVGElementNode(node2)
)
}
var isSVGElementNode = function (element) {
return typeof element.className === 'object'
}
var isLIElement = function (node2) {
return node2.tagName === 'LI'
}
var isOLElement = function (node2) {
return node2.tagName === 'OL'
}
var isInputElement = function (node2) {
return node2.tagName === 'INPUT'
}
var isHTMLElement = function (node2) {
return node2.tagName === 'HTML'
}
var isSVGElement = function (node2) {
return node2.tagName === 'svg'
}
var isBodyElement = function (node2) {
return node2.tagName === 'BODY'
}
var isCanvasElement = function (node2) {
return node2.tagName === 'CANVAS'
}
var isVideoElement = function (node2) {
return node2.tagName === 'VIDEO'
}
var isImageElement = function (node2) {
return node2.tagName === 'IMG'
}
var isIFrameElement = function (node2) {
return node2.tagName === 'IFRAME'
}
var isStyleElement = function (node2) {
return node2.tagName === 'STYLE'
}
var isScriptElement = function (node2) {
return node2.tagName === 'SCRIPT'
}
var isTextareaElement = function (node2) {
return node2.tagName === 'TEXTAREA'
}
var isSelectElement = function (node2) {
return node2.tagName === 'SELECT'
}
var isSlotElement$1 = function (node2) {
return node2.tagName === 'SLOT'
}
var isCustomElement = function (node2) {
return node2.tagName.indexOf('-') > 0
}
var CounterState = (function () {
function CounterState2() {
this.counters = {}
}
CounterState2.prototype.getCounterValue = function (name2) {
var counter2 = this.counters[name2]
if (counter2 && counter2.length) {
return counter2[counter2.length - 1]
}
return 1
}
CounterState2.prototype.getCounterValues = function (name2) {
var counter2 = this.counters[name2]
return counter2 ? counter2 : []
}
CounterState2.prototype.pop = function (counters) {
var _this = this
counters.forEach(function (counter2) {
return _this.counters[counter2].pop()
})
}
CounterState2.prototype.parse = function (style2) {
var _this = this
var counterIncrement2 = style2.counterIncrement
var counterReset2 = style2.counterReset
var canReset = true
if (counterIncrement2 !== null) {
counterIncrement2.forEach(function (entry) {
var counter2 = _this.counters[entry.counter]
if (counter2 && entry.increment !== 0) {
canReset = false
if (!counter2.length) {
counter2.push(1)
}
counter2[Math.max(0, counter2.length - 1)] += entry.increment
}
})
}
var counterNames = []
if (canReset) {
counterReset2.forEach(function (entry) {
var counter2 = _this.counters[entry.counter]
counterNames.push(entry.counter)
if (!counter2) {
counter2 = _this.counters[entry.counter] = []
}
counter2.push(entry.reset)
})
}
return counterNames
}
return CounterState2
})()
var ROMAN_UPPER = {
integers: [1e3, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],
values: [
'M',
'CM',
'D',
'CD',
'C',
'XC',
'L',
'XL',
'X',
'IX',
'V',
'IV',
'I',
],
}
var ARMENIAN = {
integers: [
9e3, 8e3, 7e3, 6e3, 5e3, 4e3, 3e3, 2e3, 1e3, 900, 800, 700, 600, 500, 400,
300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2,
1,
],
values: [
'\u0554',
'\u0553',
'\u0552',
'\u0551',
'\u0550',
'\u054F',
'\u054E',
'\u054D',
'\u054C',
'\u054B',
'\u054A',
'\u0549',
'\u0548',
'\u0547',
'\u0546',
'\u0545',
'\u0544',
'\u0543',
'\u0542',
'\u0541',
'\u0540',
'\u053F',
'\u053E',
'\u053D',
'\u053C',
'\u053B',
'\u053A',
'\u0539',
'\u0538',
'\u0537',
'\u0536',
'\u0535',
'\u0534',
'\u0533',
'\u0532',
'\u0531',
],
}
var HEBREW = {
integers: [
1e4, 9e3, 8e3, 7e3, 6e3, 5e3, 4e3, 3e3, 2e3, 1e3, 400, 300, 200, 100, 90,
80, 70, 60, 50, 40, 30, 20, 19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2,
1,
],
values: [
'\u05D9\u05F3',
'\u05D8\u05F3',
'\u05D7\u05F3',
'\u05D6\u05F3',
'\u05D5\u05F3',
'\u05D4\u05F3',
'\u05D3\u05F3',
'\u05D2\u05F3',
'\u05D1\u05F3',
'\u05D0\u05F3',
'\u05EA',
'\u05E9',
'\u05E8',
'\u05E7',
'\u05E6',
'\u05E4',
'\u05E2',
'\u05E1',
'\u05E0',
'\u05DE',
'\u05DC',
'\u05DB',
'\u05D9\u05D8',
'\u05D9\u05D7',
'\u05D9\u05D6',
'\u05D8\u05D6',
'\u05D8\u05D5',
'\u05D9',
'\u05D8',
'\u05D7',
'\u05D6',
'\u05D5',
'\u05D4',
'\u05D3',
'\u05D2',
'\u05D1',
'\u05D0',
],
}
var GEORGIAN = {
integers: [
1e4, 9e3, 8e3, 7e3, 6e3, 5e3, 4e3, 3e3, 2e3, 1e3, 900, 800, 700, 600, 500,
400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3,
2, 1,
],
values: [
'\u10F5',
'\u10F0',
'\u10EF',
'\u10F4',
'\u10EE',
'\u10ED',
'\u10EC',
'\u10EB',
'\u10EA',
'\u10E9',
'\u10E8',
'\u10E7',
'\u10E6',
'\u10E5',
'\u10E4',
'\u10F3',
'\u10E2',
'\u10E1',
'\u10E0',
'\u10DF',
'\u10DE',
'\u10DD',
'\u10F2',
'\u10DC',
'\u10DB',
'\u10DA',
'\u10D9',
'\u10D8',
'\u10D7',
'\u10F1',
'\u10D6',
'\u10D5',
'\u10D4',
'\u10D3',
'\u10D2',
'\u10D1',
'\u10D0',
],
}
var createAdditiveCounter = function (
value2,
min3,
max3,
symbols,
fallback,
suffix2
) {
if (value2 < min3 || value2 > max3) {
return createCounterText(value2, fallback, suffix2.length > 0)
}
return (
symbols.integers.reduce(function (string3, integer4, index2) {
while (value2 >= integer4) {
value2 -= integer4
string3 += symbols.values[index2]
}
return string3
}, '') + suffix2
)
}
var createCounterStyleWithSymbolResolver = function (
value2,
codePointRangeLength,
isNumeric2,
resolver
) {
var string3 = ''
do {
if (!isNumeric2) {
value2--
}
string3 = resolver(value2) + string3
value2 /= codePointRangeLength
} while (value2 * codePointRangeLength >= codePointRangeLength)
return string3
}
var createCounterStyleFromRange = function (
value2,
codePointRangeStart,
codePointRangeEnd,
isNumeric2,
suffix2
) {
var codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1
return (
(value2 < 0 ? '-' : '') +
(createCounterStyleWithSymbolResolver(
Math.abs(value2),
codePointRangeLength,
isNumeric2,
function (codePoint) {
return fromCodePoint$1(
Math.floor(codePoint % codePointRangeLength) + codePointRangeStart
)
}
) +
suffix2)
)
}
var createCounterStyleFromSymbols = function (value2, symbols, suffix2) {
if (suffix2 === void 0) {
suffix2 = '. '
}
var codePointRangeLength = symbols.length
return (
createCounterStyleWithSymbolResolver(
Math.abs(value2),
codePointRangeLength,
false,
function (codePoint) {
return symbols[Math.floor(codePoint % codePointRangeLength)]
}
) + suffix2
)
}
var CJK_ZEROS = 1 << 0
var CJK_TEN_COEFFICIENTS = 1 << 1
var CJK_TEN_HIGH_COEFFICIENTS = 1 << 2
var CJK_HUNDRED_COEFFICIENTS = 1 << 3
var createCJKCounter = function (
value2,
numbers,
multipliers,
negativeSign,
suffix2,
flags
) {
if (value2 < -9999 || value2 > 9999) {
return createCounterText(value2, 4, suffix2.length > 0)
}
var tmp = Math.abs(value2)
var string3 = suffix2
if (tmp === 0) {
return numbers[0] + string3
}
for (var digit = 0; tmp > 0 && digit <= 4; digit++) {
var coefficient = tmp % 10
if (coefficient === 0 && contains(flags, CJK_ZEROS) && string3 !== '') {
string3 = numbers[coefficient] + string3
} else if (
coefficient > 1 ||
(coefficient === 1 && digit === 0) ||
(coefficient === 1 &&
digit === 1 &&
contains(flags, CJK_TEN_COEFFICIENTS)) ||
(coefficient === 1 &&
digit === 1 &&
contains(flags, CJK_TEN_HIGH_COEFFICIENTS) &&
value2 > 100) ||
(coefficient === 1 &&
digit > 1 &&
contains(flags, CJK_HUNDRED_COEFFICIENTS))
) {
string3 =
numbers[coefficient] +
(digit > 0 ? multipliers[digit - 1] : '') +
string3
} else if (coefficient === 1 && digit > 0) {
string3 = multipliers[digit - 1] + string3
}
tmp = Math.floor(tmp / 10)
}
return (value2 < 0 ? negativeSign : '') + string3
}
var CHINESE_INFORMAL_MULTIPLIERS = '\u5341\u767E\u5343\u842C'
var CHINESE_FORMAL_MULTIPLIERS = '\u62FE\u4F70\u4EDF\u842C'
var JAPANESE_NEGATIVE = '\u30DE\u30A4\u30CA\u30B9'
var KOREAN_NEGATIVE = '\uB9C8\uC774\uB108\uC2A4'
var createCounterText = function (value2, type4, appendSuffix) {
var defaultSuffix = appendSuffix ? '. ' : ''
var cjkSuffix = appendSuffix ? '\u3001' : ''
var koreanSuffix = appendSuffix ? ', ' : ''
var spaceSuffix = appendSuffix ? ' ' : ''
switch (type4) {
case 0:
return '\u2022' + spaceSuffix
case 1:
return '\u25E6' + spaceSuffix
case 2:
return '\u25FE' + spaceSuffix
case 5:
var string3 = createCounterStyleFromRange(
value2,
48,
57,
true,
defaultSuffix
)
return string3.length < 4 ? '0' + string3 : string3
case 4:
return createCounterStyleFromSymbols(
value2,
'\u3007\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D',
cjkSuffix
)
case 6:
return createAdditiveCounter(
value2,
1,
3999,
ROMAN_UPPER,
3,
defaultSuffix
).toLowerCase()
case 7:
return createAdditiveCounter(
value2,
1,
3999,
ROMAN_UPPER,
3,
defaultSuffix
)
case 8:
return createCounterStyleFromRange(value2, 945, 969, false, defaultSuffix)
case 9:
return createCounterStyleFromRange(value2, 97, 122, false, defaultSuffix)
case 10:
return createCounterStyleFromRange(value2, 65, 90, false, defaultSuffix)
case 11:
return createCounterStyleFromRange(
value2,
1632,
1641,
true,
defaultSuffix
)
case 12:
case 49:
return createAdditiveCounter(value2, 1, 9999, ARMENIAN, 3, defaultSuffix)
case 35:
return createAdditiveCounter(
value2,
1,
9999,
ARMENIAN,
3,
defaultSuffix
).toLowerCase()
case 13:
return createCounterStyleFromRange(
value2,
2534,
2543,
true,
defaultSuffix
)
case 14:
case 30:
return createCounterStyleFromRange(
value2,
6112,
6121,
true,
defaultSuffix
)
case 15:
return createCounterStyleFromSymbols(
value2,
'\u5B50\u4E11\u5BC5\u536F\u8FB0\u5DF3\u5348\u672A\u7533\u9149\u620C\u4EA5',
cjkSuffix
)
case 16:
return createCounterStyleFromSymbols(
value2,
'\u7532\u4E59\u4E19\u4E01\u620A\u5DF1\u5E9A\u8F9B\u58EC\u7678',
cjkSuffix
)
case 17:
case 48:
return createCJKCounter(
value2,
'\u96F6\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D',
CHINESE_INFORMAL_MULTIPLIERS,
'\u8CA0',
cjkSuffix,
CJK_TEN_COEFFICIENTS |
CJK_TEN_HIGH_COEFFICIENTS |
CJK_HUNDRED_COEFFICIENTS
)
case 47:
return createCJKCounter(
value2,
'\u96F6\u58F9\u8CB3\u53C3\u8086\u4F0D\u9678\u67D2\u634C\u7396',
CHINESE_FORMAL_MULTIPLIERS,
'\u8CA0',
cjkSuffix,
CJK_ZEROS |
CJK_TEN_COEFFICIENTS |
CJK_TEN_HIGH_COEFFICIENTS |
CJK_HUNDRED_COEFFICIENTS
)
case 42:
return createCJKCounter(
value2,
'\u96F6\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D',
CHINESE_INFORMAL_MULTIPLIERS,
'\u8D1F',
cjkSuffix,
CJK_TEN_COEFFICIENTS |
CJK_TEN_HIGH_COEFFICIENTS |
CJK_HUNDRED_COEFFICIENTS
)
case 41:
return createCJKCounter(
value2,
'\u96F6\u58F9\u8D30\u53C1\u8086\u4F0D\u9646\u67D2\u634C\u7396',
CHINESE_FORMAL_MULTIPLIERS,
'\u8D1F',
cjkSuffix,
CJK_ZEROS |
CJK_TEN_COEFFICIENTS |
CJK_TEN_HIGH_COEFFICIENTS |
CJK_HUNDRED_COEFFICIENTS
)
case 26:
return createCJKCounter(
value2,
'\u3007\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D',
'\u5341\u767E\u5343\u4E07',
JAPANESE_NEGATIVE,
cjkSuffix,
0
)
case 25:
return createCJKCounter(
value2,
'\u96F6\u58F1\u5F10\u53C2\u56DB\u4F0D\u516D\u4E03\u516B\u4E5D',
'\u62FE\u767E\u5343\u4E07',
JAPANESE_NEGATIVE,
cjkSuffix,
CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS
)
case 31:
return createCJKCounter(
value2,
'\uC601\uC77C\uC774\uC0BC\uC0AC\uC624\uC721\uCE60\uD314\uAD6C',
'\uC2ED\uBC31\uCC9C\uB9CC',
KOREAN_NEGATIVE,
koreanSuffix,
CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS
)
case 33:
return createCJKCounter(
value2,
'\u96F6\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D',
'\u5341\u767E\u5343\u842C',
KOREAN_NEGATIVE,
koreanSuffix,
0
)
case 32:
return createCJKCounter(
value2,
'\u96F6\u58F9\u8CB3\u53C3\u56DB\u4E94\u516D\u4E03\u516B\u4E5D',
'\u62FE\u767E\u5343',
KOREAN_NEGATIVE,
koreanSuffix,
CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS
)
case 18:
return createCounterStyleFromRange(
value2,
2406,
2415,
true,
defaultSuffix
)
case 20:
return createAdditiveCounter(value2, 1, 19999, GEORGIAN, 3, defaultSuffix)
case 21:
return createCounterStyleFromRange(
value2,
2790,
2799,
true,
defaultSuffix
)
case 22:
return createCounterStyleFromRange(
value2,
2662,
2671,
true,
defaultSuffix
)
case 22:
return createAdditiveCounter(value2, 1, 10999, HEBREW, 3, defaultSuffix)
case 23:
return createCounterStyleFromSymbols(
value2,
'\u3042\u3044\u3046\u3048\u304A\u304B\u304D\u304F\u3051\u3053\u3055\u3057\u3059\u305B\u305D\u305F\u3061\u3064\u3066\u3068\u306A\u306B\u306C\u306D\u306E\u306F\u3072\u3075\u3078\u307B\u307E\u307F\u3080\u3081\u3082\u3084\u3086\u3088\u3089\u308A\u308B\u308C\u308D\u308F\u3090\u3091\u3092\u3093'
)
case 24:
return createCounterStyleFromSymbols(
value2,
'\u3044\u308D\u306F\u306B\u307B\u3078\u3068\u3061\u308A\u306C\u308B\u3092\u308F\u304B\u3088\u305F\u308C\u305D\u3064\u306D\u306A\u3089\u3080\u3046\u3090\u306E\u304A\u304F\u3084\u307E\u3051\u3075\u3053\u3048\u3066\u3042\u3055\u304D\u3086\u3081\u307F\u3057\u3091\u3072\u3082\u305B\u3059'
)
case 27:
return createCounterStyleFromRange(
value2,
3302,
3311,
true,
defaultSuffix
)
case 28:
return createCounterStyleFromSymbols(
value2,
'\u30A2\u30A4\u30A6\u30A8\u30AA\u30AB\u30AD\u30AF\u30B1\u30B3\u30B5\u30B7\u30B9\u30BB\u30BD\u30BF\u30C1\u30C4\u30C6\u30C8\u30CA\u30CB\u30CC\u30CD\u30CE\u30CF\u30D2\u30D5\u30D8\u30DB\u30DE\u30DF\u30E0\u30E1\u30E2\u30E4\u30E6\u30E8\u30E9\u30EA\u30EB\u30EC\u30ED\u30EF\u30F0\u30F1\u30F2\u30F3',
cjkSuffix
)
case 29:
return createCounterStyleFromSymbols(
value2,
'\u30A4\u30ED\u30CF\u30CB\u30DB\u30D8\u30C8\u30C1\u30EA\u30CC\u30EB\u30F2\u30EF\u30AB\u30E8\u30BF\u30EC\u30BD\u30C4\u30CD\u30CA\u30E9\u30E0\u30A6\u30F0\u30CE\u30AA\u30AF\u30E4\u30DE\u30B1\u30D5\u30B3\u30A8\u30C6\u30A2\u30B5\u30AD\u30E6\u30E1\u30DF\u30B7\u30F1\u30D2\u30E2\u30BB\u30B9',
cjkSuffix
)
case 34:
return createCounterStyleFromRange(
value2,
3792,
3801,
true,
defaultSuffix
)
case 37:
return createCounterStyleFromRange(
value2,
6160,
6169,
true,
defaultSuffix
)
case 38:
return createCounterStyleFromRange(
value2,
4160,
4169,
true,
defaultSuffix
)
case 39:
return createCounterStyleFromRange(
value2,
2918,
2927,
true,
defaultSuffix
)
case 40:
return createCounterStyleFromRange(
value2,
1776,
1785,
true,
defaultSuffix
)
case 43:
return createCounterStyleFromRange(
value2,
3046,
3055,
true,
defaultSuffix
)
case 44:
return createCounterStyleFromRange(
value2,
3174,
3183,
true,
defaultSuffix
)
case 45:
return createCounterStyleFromRange(
value2,
3664,
3673,
true,
defaultSuffix
)
case 46:
return createCounterStyleFromRange(
value2,
3872,
3881,
true,
defaultSuffix
)
case 3:
default:
return createCounterStyleFromRange(value2, 48, 57, true, defaultSuffix)
}
}
var IGNORE_ATTRIBUTE = 'data-html2canvas-ignore'
var DocumentCloner = (function () {
function DocumentCloner2(context2, element, options2) {
this.context = context2
this.options = options2
this.scrolledElements = []
this.referenceElement = element
this.counters = new CounterState()
this.quoteDepth = 0
if (!element.ownerDocument) {
throw new Error('Cloned element does not have an owner document')
}
this.documentElement = this.cloneNode(
element.ownerDocument.documentElement,
false
)
}
DocumentCloner2.prototype.toIFrame = function (ownerDocument, windowSize) {
var _this = this
var iframe = createIFrameContainer(ownerDocument, windowSize)
if (!iframe.contentWindow) {
return Promise.reject('Unable to find iframe window')
}
var scrollX = ownerDocument.defaultView.pageXOffset
var scrollY = ownerDocument.defaultView.pageYOffset
var cloneWindow = iframe.contentWindow
var documentClone = cloneWindow.document
var iframeLoad = iframeLoader(iframe).then(function () {
return __awaiter(_this, void 0, void 0, function () {
var onclone, referenceElement
return __generator(this, function (_a2) {
switch (_a2.label) {
case 0:
this.scrolledElements.forEach(restoreNodeScroll)
if (cloneWindow) {
cloneWindow.scrollTo(windowSize.left, windowSize.top)
if (
/(iPad|iPhone|iPod)/g.test(navigator.userAgent) &&
(cloneWindow.scrollY !== windowSize.top ||
cloneWindow.scrollX !== windowSize.left)
) {
this.context.logger.warn(
'Unable to restore scroll position for cloned document'
)
this.context.windowBounds = this.context.windowBounds.add(
cloneWindow.scrollX - windowSize.left,
cloneWindow.scrollY - windowSize.top,
0,
0
)
}
}
onclone = this.options.onclone
referenceElement = this.clonedReferenceElement
if (typeof referenceElement === 'undefined') {
return [
2,
Promise.reject(
'Error finding the ' +
this.referenceElement.nodeName +
' in the cloned document'
),
]
}
if (!(documentClone.fonts && documentClone.fonts.ready))
return [3, 2]
return [4, documentClone.fonts.ready]
case 1:
_a2.sent()
_a2.label = 2
case 2:
if (!/(AppleWebKit)/g.test(navigator.userAgent)) return [3, 4]
return [4, imagesReady(documentClone)]
case 3:
_a2.sent()
_a2.label = 4
case 4:
if (typeof onclone === 'function') {
return [
2,
Promise.resolve()
.then(function () {
return onclone(documentClone, referenceElement)
})
.then(function () {
return iframe
}),
]
}
return [2, iframe]
}
})
})
})
documentClone.open()
documentClone.write(serializeDoctype(document.doctype) + '')
restoreOwnerScroll(this.referenceElement.ownerDocument, scrollX, scrollY)
documentClone.replaceChild(
documentClone.adoptNode(this.documentElement),
documentClone.documentElement
)
documentClone.close()
return iframeLoad
}
DocumentCloner2.prototype.createElementClone = function (node2) {
if (isDebugging(node2, 2)) {
debugger
}
if (isCanvasElement(node2)) {
return this.createCanvasClone(node2)
}
if (isVideoElement(node2)) {
return this.createVideoClone(node2)
}
if (isStyleElement(node2)) {
return this.createStyleClone(node2)
}
var clone2 = node2.cloneNode(false)
if (isImageElement(clone2)) {
if (
isImageElement(node2) &&
node2.currentSrc &&
node2.currentSrc !== node2.src
) {
clone2.src = node2.currentSrc
clone2.srcset = ''
}
if (clone2.loading === 'lazy') {
clone2.loading = 'eager'
}
}
if (isCustomElement(clone2)) {
return this.createCustomElementClone(clone2)
}
return clone2
}
DocumentCloner2.prototype.createCustomElementClone = function (node2) {
var clone2 = document.createElement('html2canvascustomelement')
copyCSSStyles(node2.style, clone2)
return clone2
}
DocumentCloner2.prototype.createStyleClone = function (node2) {
try {
var sheet = node2.sheet
if (sheet && sheet.cssRules) {
var css2 = [].slice
.call(sheet.cssRules, 0)
.reduce(function (css3, rule2) {
if (rule2 && typeof rule2.cssText === 'string') {
return css3 + rule2.cssText
}
return css3
}, '')
var style2 = node2.cloneNode(false)
style2.textContent = css2
return style2
}
} catch (e2) {
this.context.logger.error('Unable to access cssRules property', e2)
if (e2.name !== 'SecurityError') {
throw e2
}
}
return node2.cloneNode(false)
}
DocumentCloner2.prototype.createCanvasClone = function (canvas) {
var _a2
if (this.options.inlineImages && canvas.ownerDocument) {
var img = canvas.ownerDocument.createElement('img')
try {
img.src = canvas.toDataURL()
return img
} catch (e2) {
this.context.logger.info(
'Unable to inline canvas contents, canvas is tainted',
canvas
)
}
}
var clonedCanvas = canvas.cloneNode(false)
try {
clonedCanvas.width = canvas.width
clonedCanvas.height = canvas.height
var ctx = canvas.getContext('2d')
var clonedCtx = clonedCanvas.getContext('2d')
if (clonedCtx) {
if (!this.options.allowTaint && ctx) {
clonedCtx.putImageData(
ctx.getImageData(0, 0, canvas.width, canvas.height),
0,
0
)
} else {
var gl =
(_a2 = canvas.getContext('webgl2')) !== null && _a2 !== void 0
? _a2
: canvas.getContext('webgl')
if (gl) {
var attribs = gl.getContextAttributes()
if (
(attribs === null || attribs === void 0
? void 0
: attribs.preserveDrawingBuffer) === false
) {
this.context.logger.warn(
'Unable to clone WebGL context as it has preserveDrawingBuffer=false',
canvas
)
}
}
clonedCtx.drawImage(canvas, 0, 0)
}
}
return clonedCanvas
} catch (e2) {
this.context.logger.info(
'Unable to clone canvas as it is tainted',
canvas
)
}
return clonedCanvas
}
DocumentCloner2.prototype.createVideoClone = function (video) {
var canvas = video.ownerDocument.createElement('canvas')
canvas.width = video.offsetWidth
canvas.height = video.offsetHeight
var ctx = canvas.getContext('2d')
try {
if (ctx) {
ctx.drawImage(video, 0, 0, canvas.width, canvas.height)
if (!this.options.allowTaint) {
ctx.getImageData(0, 0, canvas.width, canvas.height)
}
}
return canvas
} catch (e2) {
this.context.logger.info('Unable to clone video as it is tainted', video)
}
var blankCanvas = video.ownerDocument.createElement('canvas')
blankCanvas.width = video.offsetWidth
blankCanvas.height = video.offsetHeight
return blankCanvas
}
DocumentCloner2.prototype.appendChildNode = function (
clone2,
child,
copyStyles
) {
if (
!isElementNode(child) ||
(!isScriptElement(child) &&
!child.hasAttribute(IGNORE_ATTRIBUTE) &&
(typeof this.options.ignoreElements !== 'function' ||
!this.options.ignoreElements(child)))
) {
if (
!this.options.copyStyles ||
!isElementNode(child) ||
!isStyleElement(child)
) {
clone2.appendChild(this.cloneNode(child, copyStyles))
}
}
}
DocumentCloner2.prototype.cloneChildNodes = function (
node2,
clone2,
copyStyles
) {
var _this = this
for (
var child = node2.shadowRoot
? node2.shadowRoot.firstChild
: node2.firstChild;
child;
child = child.nextSibling
) {
if (
isElementNode(child) &&
isSlotElement$1(child) &&
typeof child.assignedNodes === 'function'
) {
var assignedNodes = child.assignedNodes()
if (assignedNodes.length) {
assignedNodes.forEach(function (assignedNode) {
return _this.appendChildNode(clone2, assignedNode, copyStyles)
})
}
} else {
this.appendChildNode(clone2, child, copyStyles)
}
}
}
DocumentCloner2.prototype.cloneNode = function (node2, copyStyles) {
if (isTextNode(node2)) {
return document.createTextNode(node2.data)
}
if (!node2.ownerDocument) {
return node2.cloneNode(false)
}
var window2 = node2.ownerDocument.defaultView
if (
window2 &&
isElementNode(node2) &&
(isHTMLElementNode(node2) || isSVGElementNode(node2))
) {
var clone2 = this.createElementClone(node2)
clone2.style.transitionProperty = 'none'
var style2 = window2.getComputedStyle(node2)
var styleBefore = window2.getComputedStyle(node2, ':before')
var styleAfter = window2.getComputedStyle(node2, ':after')
if (this.referenceElement === node2 && isHTMLElementNode(clone2)) {
this.clonedReferenceElement = clone2
}
if (isBodyElement(clone2)) {
createPseudoHideStyles(clone2)
}
var counters = this.counters.parse(
new CSSParsedCounterDeclaration(this.context, style2)
)
var before2 = this.resolvePseudoContent(
node2,
clone2,
styleBefore,
PseudoElementType.BEFORE
)
if (isCustomElement(node2)) {
copyStyles = true
}
if (!isVideoElement(node2)) {
this.cloneChildNodes(node2, clone2, copyStyles)
}
if (before2) {
clone2.insertBefore(before2, clone2.firstChild)
}
var after2 = this.resolvePseudoContent(
node2,
clone2,
styleAfter,
PseudoElementType.AFTER
)
if (after2) {
clone2.appendChild(after2)
}
this.counters.pop(counters)
if (
(style2 &&
(this.options.copyStyles || isSVGElementNode(node2)) &&
!isIFrameElement(node2)) ||
copyStyles
) {
copyCSSStyles(style2, clone2)
}
if (node2.scrollTop !== 0 || node2.scrollLeft !== 0) {
this.scrolledElements.push([clone2, node2.scrollLeft, node2.scrollTop])
}
if (
(isTextareaElement(node2) || isSelectElement(node2)) &&
(isTextareaElement(clone2) || isSelectElement(clone2))
) {
clone2.value = node2.value
}
return clone2
}
return node2.cloneNode(false)
}
DocumentCloner2.prototype.resolvePseudoContent = function (
node2,
clone2,
style2,
pseudoElt
) {
var _this = this
if (!style2) {
return
}
var value2 = style2.content
var document2 = clone2.ownerDocument
if (
!document2 ||
!value2 ||
value2 === 'none' ||
value2 === '-moz-alt-content' ||
style2.display === 'none'
) {
return
}
this.counters.parse(new CSSParsedCounterDeclaration(this.context, style2))
var declaration = new CSSParsedPseudoDeclaration(this.context, style2)
var anonymousReplacedElement = document2.createElement(
'html2canvaspseudoelement'
)
copyCSSStyles(style2, anonymousReplacedElement)
declaration.content.forEach(function (token) {
if (token.type === 0) {
anonymousReplacedElement.appendChild(
document2.createTextNode(token.value)
)
} else if (token.type === 22) {
var img = document2.createElement('img')
img.src = token.value
img.style.opacity = '1'
anonymousReplacedElement.appendChild(img)
} else if (token.type === 18) {
if (token.name === 'attr') {
var attr = token.values.filter(isIdentToken)
if (attr.length) {
anonymousReplacedElement.appendChild(
document2.createTextNode(node2.getAttribute(attr[0].value) || '')
)
}
} else if (token.name === 'counter') {
var _a2 = token.values.filter(nonFunctionArgSeparator),
counter2 = _a2[0],
counterStyle = _a2[1]
if (counter2 && isIdentToken(counter2)) {
var counterState = _this.counters.getCounterValue(counter2.value)
var counterType =
counterStyle && isIdentToken(counterStyle)
? listStyleType.parse(_this.context, counterStyle.value)
: 3
anonymousReplacedElement.appendChild(
document2.createTextNode(
createCounterText(counterState, counterType, false)
)
)
}
} else if (token.name === 'counters') {
var _b2 = token.values.filter(nonFunctionArgSeparator),
counter2 = _b2[0],
delim = _b2[1],
counterStyle = _b2[2]
if (counter2 && isIdentToken(counter2)) {
var counterStates = _this.counters.getCounterValues(counter2.value)
var counterType_1 =
counterStyle && isIdentToken(counterStyle)
? listStyleType.parse(_this.context, counterStyle.value)
: 3
var separator = delim && delim.type === 0 ? delim.value : ''
var text2 = counterStates
.map(function (value3) {
return createCounterText(value3, counterType_1, false)
})
.join(separator)
anonymousReplacedElement.appendChild(
document2.createTextNode(text2)
)
}
} else;
} else if (token.type === 20) {
switch (token.value) {
case 'open-quote':
anonymousReplacedElement.appendChild(
document2.createTextNode(
getQuote(declaration.quotes, _this.quoteDepth++, true)
)
)
break
case 'close-quote':
anonymousReplacedElement.appendChild(
document2.createTextNode(
getQuote(declaration.quotes, --_this.quoteDepth, false)
)
)
break
default:
anonymousReplacedElement.appendChild(
document2.createTextNode(token.value)
)
}
}
})
anonymousReplacedElement.className =
PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + ' ' + PSEUDO_HIDE_ELEMENT_CLASS_AFTER
var newClassName =
pseudoElt === PseudoElementType.BEFORE
? ' ' + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE
: ' ' + PSEUDO_HIDE_ELEMENT_CLASS_AFTER
if (isSVGElementNode(clone2)) {
clone2.className.baseValue += newClassName
} else {
clone2.className += newClassName
}
return anonymousReplacedElement
}
DocumentCloner2.destroy = function (container) {
if (container.parentNode) {
container.parentNode.removeChild(container)
return true
}
return false
}
return DocumentCloner2
})()
var PseudoElementType
;(function (PseudoElementType2) {
PseudoElementType2[(PseudoElementType2['BEFORE'] = 0)] = 'BEFORE'
PseudoElementType2[(PseudoElementType2['AFTER'] = 1)] = 'AFTER'
})(PseudoElementType || (PseudoElementType = {}))
var createIFrameContainer = function (ownerDocument, bounds) {
var cloneIframeContainer = ownerDocument.createElement('iframe')
cloneIframeContainer.className = 'html2canvas-container'
cloneIframeContainer.style.visibility = 'hidden'
cloneIframeContainer.style.position = 'fixed'
cloneIframeContainer.style.left = '-10000px'
cloneIframeContainer.style.top = '0px'
cloneIframeContainer.style.border = '0'
cloneIframeContainer.width = bounds.width.toString()
cloneIframeContainer.height = bounds.height.toString()
cloneIframeContainer.scrolling = 'no'
cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, 'true')
ownerDocument.body.appendChild(cloneIframeContainer)
return cloneIframeContainer
}
var imageReady = function (img) {
return new Promise(function (resolve2) {
if (img.complete) {
resolve2()
return
}
if (!img.src) {
resolve2()
return
}
img.onload = resolve2
img.onerror = resolve2
})
}
var imagesReady = function (document2) {
return Promise.all([].slice.call(document2.images, 0).map(imageReady))
}
var iframeLoader = function (iframe) {
return new Promise(function (resolve2, reject2) {
var cloneWindow = iframe.contentWindow
if (!cloneWindow) {
return reject2('No window assigned for iframe')
}
var documentClone = cloneWindow.document
cloneWindow.onload = iframe.onload = function () {
cloneWindow.onload = iframe.onload = null
var interval = setInterval(function () {
if (
documentClone.body.childNodes.length > 0 &&
documentClone.readyState === 'complete'
) {
clearInterval(interval)
resolve2(iframe)
}
}, 50)
}
})
}
var ignoredStyleProperties = ['all', 'd', 'content']
var copyCSSStyles = function (style2, target2) {
for (var i2 = style2.length - 1; i2 >= 0; i2--) {
var property2 = style2.item(i2)
if (ignoredStyleProperties.indexOf(property2) === -1) {
target2.style.setProperty(property2, style2.getPropertyValue(property2))
}
}
return target2
}
var serializeDoctype = function (doctype) {
var str = ''
if (doctype) {
str += ''
}
return str
}
var restoreOwnerScroll = function (ownerDocument, x2, y2) {
if (
ownerDocument &&
ownerDocument.defaultView &&
(x2 !== ownerDocument.defaultView.pageXOffset ||
y2 !== ownerDocument.defaultView.pageYOffset)
) {
ownerDocument.defaultView.scrollTo(x2, y2)
}
}
var restoreNodeScroll = function (_a2) {
var element = _a2[0],
x2 = _a2[1],
y2 = _a2[2]
element.scrollLeft = x2
element.scrollTop = y2
}
var PSEUDO_BEFORE = ':before'
var PSEUDO_AFTER = ':after'
var PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = '___html2canvas___pseudoelement_before'
var PSEUDO_HIDE_ELEMENT_CLASS_AFTER = '___html2canvas___pseudoelement_after'
var PSEUDO_HIDE_ELEMENT_STYLE =
'{\n content: "" !important;\n display: none !important;\n}'
var createPseudoHideStyles = function (body) {
createStyles(
body,
'.' +
PSEUDO_HIDE_ELEMENT_CLASS_BEFORE +
PSEUDO_BEFORE +
PSEUDO_HIDE_ELEMENT_STYLE +
'\n .' +
PSEUDO_HIDE_ELEMENT_CLASS_AFTER +
PSEUDO_AFTER +
PSEUDO_HIDE_ELEMENT_STYLE
)
}
var createStyles = function (body, styles) {
var document2 = body.ownerDocument
if (document2) {
var style2 = document2.createElement('style')
style2.textContent = styles
body.appendChild(style2)
}
}
var CacheStorage = (function () {
function CacheStorage2() {}
CacheStorage2.getOrigin = function (url2) {
var link2 = CacheStorage2._link
if (!link2) {
return 'about:blank'
}
link2.href = url2
link2.href = link2.href
return link2.protocol + link2.hostname + link2.port
}
CacheStorage2.isSameOrigin = function (src) {
return CacheStorage2.getOrigin(src) === CacheStorage2._origin
}
CacheStorage2.setContext = function (window2) {
CacheStorage2._link = window2.document.createElement('a')
CacheStorage2._origin = CacheStorage2.getOrigin(window2.location.href)
}
CacheStorage2._origin = 'about:blank'
return CacheStorage2
})()
var Cache = (function () {
function Cache2(context2, _options) {
this.context = context2
this._options = _options
this._cache = {}
}
Cache2.prototype.addImage = function (src) {
var result = Promise.resolve()
if (this.has(src)) {
return result
}
if (isBlobImage(src) || isRenderable(src)) {
;(this._cache[src] = this.loadImage(src)).catch(function () {})
return result
}
return result
}
Cache2.prototype.match = function (src) {
return this._cache[src]
}
Cache2.prototype.loadImage = function (key2) {
return __awaiter(this, void 0, void 0, function () {
var isSameOrigin, useCORS, useProxy, src
var _this = this
return __generator(this, function (_a2) {
switch (_a2.label) {
case 0:
isSameOrigin = CacheStorage.isSameOrigin(key2)
useCORS =
!isInlineImage(key2) &&
this._options.useCORS === true &&
FEATURES.SUPPORT_CORS_IMAGES &&
!isSameOrigin
useProxy =
!isInlineImage(key2) &&
!isSameOrigin &&
!isBlobImage(key2) &&
typeof this._options.proxy === 'string' &&
FEATURES.SUPPORT_CORS_XHR &&
!useCORS
if (
!isSameOrigin &&
this._options.allowTaint === false &&
!isInlineImage(key2) &&
!isBlobImage(key2) &&
!useProxy &&
!useCORS
) {
return [2]
}
src = key2
if (!useProxy) return [3, 2]
return [4, this.proxy(src)]
case 1:
src = _a2.sent()
_a2.label = 2
case 2:
this.context.logger.debug('Added image ' + key2.substring(0, 256))
return [
4,
new Promise(function (resolve2, reject2) {
var img = new Image()
img.onload = function () {
return resolve2(img)
}
img.onerror = reject2
if (isInlineBase64Image(src) || useCORS) {
img.crossOrigin = 'anonymous'
}
img.src = src
if (img.complete === true) {
setTimeout(function () {
return resolve2(img)
}, 500)
}
if (_this._options.imageTimeout > 0) {
setTimeout(function () {
return reject2(
'Timed out (' +
_this._options.imageTimeout +
'ms) loading image'
)
}, _this._options.imageTimeout)
}
}),
]
case 3:
return [2, _a2.sent()]
}
})
})
}
Cache2.prototype.has = function (key2) {
return typeof this._cache[key2] !== 'undefined'
}
Cache2.prototype.keys = function () {
return Promise.resolve(Object.keys(this._cache))
}
Cache2.prototype.proxy = function (src) {
var _this = this
var proxy = this._options.proxy
if (!proxy) {
throw new Error('No proxy defined')
}
var key2 = src.substring(0, 256)
return new Promise(function (resolve2, reject2) {
var responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? 'blob' : 'text'
var xhr2 = new XMLHttpRequest()
xhr2.onload = function () {
if (xhr2.status === 200) {
if (responseType === 'text') {
resolve2(xhr2.response)
} else {
var reader_1 = new FileReader()
reader_1.addEventListener(
'load',
function () {
return resolve2(reader_1.result)
},
false
)
reader_1.addEventListener(
'error',
function (e2) {
return reject2(e2)
},
false
)
reader_1.readAsDataURL(xhr2.response)
}
} else {
reject2(
'Failed to proxy resource ' +
key2 +
' with status code ' +
xhr2.status
)
}
}
xhr2.onerror = reject2
var queryString = proxy.indexOf('?') > -1 ? '&' : '?'
xhr2.open(
'GET',
'' +
proxy +
queryString +
'url=' +
encodeURIComponent(src) +
'&responseType=' +
responseType
)
if (responseType !== 'text' && xhr2 instanceof XMLHttpRequest) {
xhr2.responseType = responseType
}
if (_this._options.imageTimeout) {
var timeout_1 = _this._options.imageTimeout
xhr2.timeout = timeout_1
xhr2.ontimeout = function () {
return reject2('Timed out (' + timeout_1 + 'ms) proxying ' + key2)
}
}
xhr2.send()
})
}
return Cache2
})()
var INLINE_SVG = /^data:image\/svg\+xml/i
var INLINE_BASE64 = /^data:image\/.*;base64,/i
var INLINE_IMG = /^data:image\/.*/i
var isRenderable = function (src) {
return FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src)
}
var isInlineImage = function (src) {
return INLINE_IMG.test(src)
}
var isInlineBase64Image = function (src) {
return INLINE_BASE64.test(src)
}
var isBlobImage = function (src) {
return src.substr(0, 4) === 'blob'
}
var isSVG = function (src) {
return src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src)
}
var Vector = (function () {
function Vector2(x2, y2) {
this.type = 0
this.x = x2
this.y = y2
}
Vector2.prototype.add = function (deltaX, deltaY) {
return new Vector2(this.x + deltaX, this.y + deltaY)
}
return Vector2
})()
var lerp$2 = function (a2, b2, t3) {
return new Vector(a2.x + (b2.x - a2.x) * t3, a2.y + (b2.y - a2.y) * t3)
}
var BezierCurve$2 = (function () {
function BezierCurve2(start2, startControl, endControl, end2) {
this.type = 1
this.start = start2
this.startControl = startControl
this.endControl = endControl
this.end = end2
}
BezierCurve2.prototype.subdivide = function (t3, firstHalf) {
var ab = lerp$2(this.start, this.startControl, t3)
var bc = lerp$2(this.startControl, this.endControl, t3)
var cd = lerp$2(this.endControl, this.end, t3)
var abbc = lerp$2(ab, bc, t3)
var bccd = lerp$2(bc, cd, t3)
var dest = lerp$2(abbc, bccd, t3)
return firstHalf
? new BezierCurve2(this.start, ab, abbc, dest)
: new BezierCurve2(dest, bccd, cd, this.end)
}
BezierCurve2.prototype.add = function (deltaX, deltaY) {
return new BezierCurve2(
this.start.add(deltaX, deltaY),
this.startControl.add(deltaX, deltaY),
this.endControl.add(deltaX, deltaY),
this.end.add(deltaX, deltaY)
)
}
BezierCurve2.prototype.reverse = function () {
return new BezierCurve2(
this.end,
this.endControl,
this.startControl,
this.start
)
}
return BezierCurve2
})()
var isBezierCurve = function (path) {
return path.type === 1
}
var BoundCurves = (function () {
function BoundCurves2(element) {
var styles = element.styles
var bounds = element.bounds
var _a2 = getAbsoluteValueForTuple(
styles.borderTopLeftRadius,
bounds.width,
bounds.height
),
tlh = _a2[0],
tlv = _a2[1]
var _b2 = getAbsoluteValueForTuple(
styles.borderTopRightRadius,
bounds.width,
bounds.height
),
trh = _b2[0],
trv = _b2[1]
var _c2 = getAbsoluteValueForTuple(
styles.borderBottomRightRadius,
bounds.width,
bounds.height
),
brh = _c2[0],
brv = _c2[1]
var _d = getAbsoluteValueForTuple(
styles.borderBottomLeftRadius,
bounds.width,
bounds.height
),
blh = _d[0],
blv = _d[1]
var factors = []
factors.push((tlh + trh) / bounds.width)
factors.push((blh + brh) / bounds.width)
factors.push((tlv + blv) / bounds.height)
factors.push((trv + brv) / bounds.height)
var maxFactor = Math.max.apply(Math, factors)
if (maxFactor > 1) {
tlh /= maxFactor
tlv /= maxFactor
trh /= maxFactor
trv /= maxFactor
brh /= maxFactor
brv /= maxFactor
blh /= maxFactor
blv /= maxFactor
}
var topWidth = bounds.width - trh
var rightHeight = bounds.height - brv
var bottomWidth = bounds.width - brh
var leftHeight = bounds.height - blv
var borderTopWidth2 = styles.borderTopWidth
var borderRightWidth2 = styles.borderRightWidth
var borderBottomWidth2 = styles.borderBottomWidth
var borderLeftWidth2 = styles.borderLeftWidth
var paddingTop2 = getAbsoluteValue(styles.paddingTop, element.bounds.width)
var paddingRight2 = getAbsoluteValue(
styles.paddingRight,
element.bounds.width
)
var paddingBottom2 = getAbsoluteValue(
styles.paddingBottom,
element.bounds.width
)
var paddingLeft2 = getAbsoluteValue(
styles.paddingLeft,
element.bounds.width
)
this.topLeftBorderDoubleOuterBox =
tlh > 0 || tlv > 0
? getCurvePoints(
bounds.left + borderLeftWidth2 / 3,
bounds.top + borderTopWidth2 / 3,
tlh - borderLeftWidth2 / 3,
tlv - borderTopWidth2 / 3,
CORNER.TOP_LEFT
)
: new Vector(
bounds.left + borderLeftWidth2 / 3,
bounds.top + borderTopWidth2 / 3
)
this.topRightBorderDoubleOuterBox =
tlh > 0 || tlv > 0
? getCurvePoints(
bounds.left + topWidth,
bounds.top + borderTopWidth2 / 3,
trh - borderRightWidth2 / 3,
trv - borderTopWidth2 / 3,
CORNER.TOP_RIGHT
)
: new Vector(
bounds.left + bounds.width - borderRightWidth2 / 3,
bounds.top + borderTopWidth2 / 3
)
this.bottomRightBorderDoubleOuterBox =
brh > 0 || brv > 0
? getCurvePoints(
bounds.left + bottomWidth,
bounds.top + rightHeight,
brh - borderRightWidth2 / 3,
brv - borderBottomWidth2 / 3,
CORNER.BOTTOM_RIGHT
)
: new Vector(
bounds.left + bounds.width - borderRightWidth2 / 3,
bounds.top + bounds.height - borderBottomWidth2 / 3
)
this.bottomLeftBorderDoubleOuterBox =
blh > 0 || blv > 0
? getCurvePoints(
bounds.left + borderLeftWidth2 / 3,
bounds.top + leftHeight,
blh - borderLeftWidth2 / 3,
blv - borderBottomWidth2 / 3,
CORNER.BOTTOM_LEFT
)
: new Vector(
bounds.left + borderLeftWidth2 / 3,
bounds.top + bounds.height - borderBottomWidth2 / 3
)
this.topLeftBorderDoubleInnerBox =
tlh > 0 || tlv > 0
? getCurvePoints(
bounds.left + (borderLeftWidth2 * 2) / 3,
bounds.top + (borderTopWidth2 * 2) / 3,
tlh - (borderLeftWidth2 * 2) / 3,
tlv - (borderTopWidth2 * 2) / 3,
CORNER.TOP_LEFT
)
: new Vector(
bounds.left + (borderLeftWidth2 * 2) / 3,
bounds.top + (borderTopWidth2 * 2) / 3
)
this.topRightBorderDoubleInnerBox =
tlh > 0 || tlv > 0
? getCurvePoints(
bounds.left + topWidth,
bounds.top + (borderTopWidth2 * 2) / 3,
trh - (borderRightWidth2 * 2) / 3,
trv - (borderTopWidth2 * 2) / 3,
CORNER.TOP_RIGHT
)
: new Vector(
bounds.left + bounds.width - (borderRightWidth2 * 2) / 3,
bounds.top + (borderTopWidth2 * 2) / 3
)
this.bottomRightBorderDoubleInnerBox =
brh > 0 || brv > 0
? getCurvePoints(
bounds.left + bottomWidth,
bounds.top + rightHeight,
brh - (borderRightWidth2 * 2) / 3,
brv - (borderBottomWidth2 * 2) / 3,
CORNER.BOTTOM_RIGHT
)
: new Vector(
bounds.left + bounds.width - (borderRightWidth2 * 2) / 3,
bounds.top + bounds.height - (borderBottomWidth2 * 2) / 3
)
this.bottomLeftBorderDoubleInnerBox =
blh > 0 || blv > 0
? getCurvePoints(
bounds.left + (borderLeftWidth2 * 2) / 3,
bounds.top + leftHeight,
blh - (borderLeftWidth2 * 2) / 3,
blv - (borderBottomWidth2 * 2) / 3,
CORNER.BOTTOM_LEFT
)
: new Vector(
bounds.left + (borderLeftWidth2 * 2) / 3,
bounds.top + bounds.height - (borderBottomWidth2 * 2) / 3
)
this.topLeftBorderStroke =
tlh > 0 || tlv > 0
? getCurvePoints(
bounds.left + borderLeftWidth2 / 2,
bounds.top + borderTopWidth2 / 2,
tlh - borderLeftWidth2 / 2,
tlv - borderTopWidth2 / 2,
CORNER.TOP_LEFT
)
: new Vector(
bounds.left + borderLeftWidth2 / 2,
bounds.top + borderTopWidth2 / 2
)
this.topRightBorderStroke =
tlh > 0 || tlv > 0
? getCurvePoints(
bounds.left + topWidth,
bounds.top + borderTopWidth2 / 2,
trh - borderRightWidth2 / 2,
trv - borderTopWidth2 / 2,
CORNER.TOP_RIGHT
)
: new Vector(
bounds.left + bounds.width - borderRightWidth2 / 2,
bounds.top + borderTopWidth2 / 2
)
this.bottomRightBorderStroke =
brh > 0 || brv > 0
? getCurvePoints(
bounds.left + bottomWidth,
bounds.top + rightHeight,
brh - borderRightWidth2 / 2,
brv - borderBottomWidth2 / 2,
CORNER.BOTTOM_RIGHT
)
: new Vector(
bounds.left + bounds.width - borderRightWidth2 / 2,
bounds.top + bounds.height - borderBottomWidth2 / 2
)
this.bottomLeftBorderStroke =
blh > 0 || blv > 0
? getCurvePoints(
bounds.left + borderLeftWidth2 / 2,
bounds.top + leftHeight,
blh - borderLeftWidth2 / 2,
blv - borderBottomWidth2 / 2,
CORNER.BOTTOM_LEFT
)
: new Vector(
bounds.left + borderLeftWidth2 / 2,
bounds.top + bounds.height - borderBottomWidth2 / 2
)
this.topLeftBorderBox =
tlh > 0 || tlv > 0
? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT)
: new Vector(bounds.left, bounds.top)
this.topRightBorderBox =
trh > 0 || trv > 0
? getCurvePoints(
bounds.left + topWidth,
bounds.top,
trh,
trv,
CORNER.TOP_RIGHT
)
: new Vector(bounds.left + bounds.width, bounds.top)
this.bottomRightBorderBox =
brh > 0 || brv > 0
? getCurvePoints(
bounds.left + bottomWidth,
bounds.top + rightHeight,
brh,
brv,
CORNER.BOTTOM_RIGHT
)
: new Vector(bounds.left + bounds.width, bounds.top + bounds.height)
this.bottomLeftBorderBox =
blh > 0 || blv > 0
? getCurvePoints(
bounds.left,
bounds.top + leftHeight,
blh,
blv,
CORNER.BOTTOM_LEFT
)
: new Vector(bounds.left, bounds.top + bounds.height)
this.topLeftPaddingBox =
tlh > 0 || tlv > 0
? getCurvePoints(
bounds.left + borderLeftWidth2,
bounds.top + borderTopWidth2,
Math.max(0, tlh - borderLeftWidth2),
Math.max(0, tlv - borderTopWidth2),
CORNER.TOP_LEFT
)
: new Vector(
bounds.left + borderLeftWidth2,
bounds.top + borderTopWidth2
)
this.topRightPaddingBox =
trh > 0 || trv > 0
? getCurvePoints(
bounds.left + Math.min(topWidth, bounds.width - borderRightWidth2),
bounds.top + borderTopWidth2,
topWidth > bounds.width + borderRightWidth2
? 0
: Math.max(0, trh - borderRightWidth2),
Math.max(0, trv - borderTopWidth2),
CORNER.TOP_RIGHT
)
: new Vector(
bounds.left + bounds.width - borderRightWidth2,
bounds.top + borderTopWidth2
)
this.bottomRightPaddingBox =
brh > 0 || brv > 0
? getCurvePoints(
bounds.left +
Math.min(bottomWidth, bounds.width - borderLeftWidth2),
bounds.top +
Math.min(rightHeight, bounds.height - borderBottomWidth2),
Math.max(0, brh - borderRightWidth2),
Math.max(0, brv - borderBottomWidth2),
CORNER.BOTTOM_RIGHT
)
: new Vector(
bounds.left + bounds.width - borderRightWidth2,
bounds.top + bounds.height - borderBottomWidth2
)
this.bottomLeftPaddingBox =
blh > 0 || blv > 0
? getCurvePoints(
bounds.left + borderLeftWidth2,
bounds.top +
Math.min(leftHeight, bounds.height - borderBottomWidth2),
Math.max(0, blh - borderLeftWidth2),
Math.max(0, blv - borderBottomWidth2),
CORNER.BOTTOM_LEFT
)
: new Vector(
bounds.left + borderLeftWidth2,
bounds.top + bounds.height - borderBottomWidth2
)
this.topLeftContentBox =
tlh > 0 || tlv > 0
? getCurvePoints(
bounds.left + borderLeftWidth2 + paddingLeft2,
bounds.top + borderTopWidth2 + paddingTop2,
Math.max(0, tlh - (borderLeftWidth2 + paddingLeft2)),
Math.max(0, tlv - (borderTopWidth2 + paddingTop2)),
CORNER.TOP_LEFT
)
: new Vector(
bounds.left + borderLeftWidth2 + paddingLeft2,
bounds.top + borderTopWidth2 + paddingTop2
)
this.topRightContentBox =
trh > 0 || trv > 0
? getCurvePoints(
bounds.left +
Math.min(
topWidth,
bounds.width + borderLeftWidth2 + paddingLeft2
),
bounds.top + borderTopWidth2 + paddingTop2,
topWidth > bounds.width + borderLeftWidth2 + paddingLeft2
? 0
: trh - borderLeftWidth2 + paddingLeft2,
trv - (borderTopWidth2 + paddingTop2),
CORNER.TOP_RIGHT
)
: new Vector(
bounds.left + bounds.width - (borderRightWidth2 + paddingRight2),
bounds.top + borderTopWidth2 + paddingTop2
)
this.bottomRightContentBox =
brh > 0 || brv > 0
? getCurvePoints(
bounds.left +
Math.min(
bottomWidth,
bounds.width - (borderLeftWidth2 + paddingLeft2)
),
bounds.top +
Math.min(
rightHeight,
bounds.height + borderTopWidth2 + paddingTop2
),
Math.max(0, brh - (borderRightWidth2 + paddingRight2)),
brv - (borderBottomWidth2 + paddingBottom2),
CORNER.BOTTOM_RIGHT
)
: new Vector(
bounds.left + bounds.width - (borderRightWidth2 + paddingRight2),
bounds.top + bounds.height - (borderBottomWidth2 + paddingBottom2)
)
this.bottomLeftContentBox =
blh > 0 || blv > 0
? getCurvePoints(
bounds.left + borderLeftWidth2 + paddingLeft2,
bounds.top + leftHeight,
Math.max(0, blh - (borderLeftWidth2 + paddingLeft2)),
blv - (borderBottomWidth2 + paddingBottom2),
CORNER.BOTTOM_LEFT
)
: new Vector(
bounds.left + borderLeftWidth2 + paddingLeft2,
bounds.top + bounds.height - (borderBottomWidth2 + paddingBottom2)
)
}
return BoundCurves2
})()
var CORNER
;(function (CORNER2) {
CORNER2[(CORNER2['TOP_LEFT'] = 0)] = 'TOP_LEFT'
CORNER2[(CORNER2['TOP_RIGHT'] = 1)] = 'TOP_RIGHT'
CORNER2[(CORNER2['BOTTOM_RIGHT'] = 2)] = 'BOTTOM_RIGHT'
CORNER2[(CORNER2['BOTTOM_LEFT'] = 3)] = 'BOTTOM_LEFT'
})(CORNER || (CORNER = {}))
var getCurvePoints = function (x2, y2, r1, r2, position2) {
var kappa = 4 * ((Math.sqrt(2) - 1) / 3)
var ox = r1 * kappa
var oy = r2 * kappa
var xm = x2 + r1
var ym = y2 + r2
switch (position2) {
case CORNER.TOP_LEFT:
return new BezierCurve$2(
new Vector(x2, ym),
new Vector(x2, ym - oy),
new Vector(xm - ox, y2),
new Vector(xm, y2)
)
case CORNER.TOP_RIGHT:
return new BezierCurve$2(
new Vector(x2, y2),
new Vector(x2 + ox, y2),
new Vector(xm, ym - oy),
new Vector(xm, ym)
)
case CORNER.BOTTOM_RIGHT:
return new BezierCurve$2(
new Vector(xm, y2),
new Vector(xm, y2 + oy),
new Vector(x2 + ox, ym),
new Vector(x2, ym)
)
case CORNER.BOTTOM_LEFT:
default:
return new BezierCurve$2(
new Vector(xm, ym),
new Vector(xm - ox, ym),
new Vector(x2, y2 + oy),
new Vector(x2, y2)
)
}
}
var calculateBorderBoxPath = function (curves) {
return [
curves.topLeftBorderBox,
curves.topRightBorderBox,
curves.bottomRightBorderBox,
curves.bottomLeftBorderBox,
]
}
var calculateContentBoxPath = function (curves) {
return [
curves.topLeftContentBox,
curves.topRightContentBox,
curves.bottomRightContentBox,
curves.bottomLeftContentBox,
]
}
var calculatePaddingBoxPath = function (curves) {
return [
curves.topLeftPaddingBox,
curves.topRightPaddingBox,
curves.bottomRightPaddingBox,
curves.bottomLeftPaddingBox,
]
}
var TransformEffect = (function () {
function TransformEffect2(offsetX, offsetY, matrix2) {
this.offsetX = offsetX
this.offsetY = offsetY
this.matrix = matrix2
this.type = 0
this.target = 2 | 4
}
return TransformEffect2
})()
var ClipEffect = (function () {
function ClipEffect2(path, target2) {
this.path = path
this.target = target2
this.type = 1
}
return ClipEffect2
})()
var OpacityEffect = (function () {
function OpacityEffect2(opacity2) {
this.opacity = opacity2
this.type = 2
this.target = 2 | 4
}
return OpacityEffect2
})()
var isTransformEffect = function (effect2) {
return effect2.type === 0
}
var isClipEffect = function (effect2) {
return effect2.type === 1
}
var isOpacityEffect = function (effect2) {
return effect2.type === 2
}
var equalPath = function (a2, b2) {
if (a2.length === b2.length) {
return a2.some(function (v4, i2) {
return v4 === b2[i2]
})
}
return false
}
var transformPath$1 = function (path, deltaX, deltaY, deltaW, deltaH) {
return path.map(function (point, index2) {
switch (index2) {
case 0:
return point.add(deltaX, deltaY)
case 1:
return point.add(deltaX + deltaW, deltaY)
case 2:
return point.add(deltaX + deltaW, deltaY + deltaH)
case 3:
return point.add(deltaX, deltaY + deltaH)
}
return point
})
}
var StackingContext = (function () {
function StackingContext2(container) {
this.element = container
this.inlineLevel = []
this.nonInlineLevel = []
this.negativeZIndex = []
this.zeroOrAutoZIndexOrTransformedOrOpacity = []
this.positiveZIndex = []
this.nonPositionedFloats = []
this.nonPositionedInlineLevel = []
}
return StackingContext2
})()
var ElementPaint = (function () {
function ElementPaint2(container, parent2) {
this.container = container
this.parent = parent2
this.effects = []
this.curves = new BoundCurves(this.container)
if (this.container.styles.opacity < 1) {
this.effects.push(new OpacityEffect(this.container.styles.opacity))
}
if (this.container.styles.transform !== null) {
var offsetX =
this.container.bounds.left +
this.container.styles.transformOrigin[0].number
var offsetY =
this.container.bounds.top +
this.container.styles.transformOrigin[1].number
var matrix2 = this.container.styles.transform
this.effects.push(new TransformEffect(offsetX, offsetY, matrix2))
}
if (this.container.styles.overflowX !== 0) {
var borderBox = calculateBorderBoxPath(this.curves)
var paddingBox2 = calculatePaddingBoxPath(this.curves)
if (equalPath(borderBox, paddingBox2)) {
this.effects.push(new ClipEffect(borderBox, 2 | 4))
} else {
this.effects.push(new ClipEffect(borderBox, 2))
this.effects.push(new ClipEffect(paddingBox2, 4))
}
}
}
ElementPaint2.prototype.getEffects = function (target2) {
var inFlow = [2, 3].indexOf(this.container.styles.position) === -1
var parent2 = this.parent
var effects = this.effects.slice(0)
while (parent2) {
var croplessEffects = parent2.effects.filter(function (effect2) {
return !isClipEffect(effect2)
})
if (
inFlow ||
parent2.container.styles.position !== 0 ||
!parent2.parent
) {
effects.unshift.apply(effects, croplessEffects)
inFlow = [2, 3].indexOf(parent2.container.styles.position) === -1
if (parent2.container.styles.overflowX !== 0) {
var borderBox = calculateBorderBoxPath(parent2.curves)
var paddingBox2 = calculatePaddingBoxPath(parent2.curves)
if (!equalPath(borderBox, paddingBox2)) {
effects.unshift(new ClipEffect(paddingBox2, 2 | 4))
}
}
} else {
effects.unshift.apply(effects, croplessEffects)
}
parent2 = parent2.parent
}
return effects.filter(function (effect2) {
return contains(effect2.target, target2)
})
}
return ElementPaint2
})()
var parseStackTree = function (
parent2,
stackingContext,
realStackingContext,
listItems
) {
parent2.container.elements.forEach(function (child) {
var treatAsRealStackingContext = contains(child.flags, 4)
var createsStackingContext2 = contains(child.flags, 2)
var paintContainer = new ElementPaint(child, parent2)
if (contains(child.styles.display, 2048)) {
listItems.push(paintContainer)
}
var listOwnerItems = contains(child.flags, 8) ? [] : listItems
if (treatAsRealStackingContext || createsStackingContext2) {
var parentStack =
treatAsRealStackingContext || child.styles.isPositioned()
? realStackingContext
: stackingContext
var stack = new StackingContext(paintContainer)
if (
child.styles.isPositioned() ||
child.styles.opacity < 1 ||
child.styles.isTransformed()
) {
var order_1 = child.styles.zIndex.order
if (order_1 < 0) {
var index_1 = 0
parentStack.negativeZIndex.some(function (current2, i2) {
if (order_1 > current2.element.container.styles.zIndex.order) {
index_1 = i2
return false
} else if (index_1 > 0) {
return true
}
return false
})
parentStack.negativeZIndex.splice(index_1, 0, stack)
} else if (order_1 > 0) {
var index_2 = 0
parentStack.positiveZIndex.some(function (current2, i2) {
if (order_1 >= current2.element.container.styles.zIndex.order) {
index_2 = i2 + 1
return false
} else if (index_2 > 0) {
return true
}
return false
})
parentStack.positiveZIndex.splice(index_2, 0, stack)
} else {
parentStack.zeroOrAutoZIndexOrTransformedOrOpacity.push(stack)
}
} else {
if (child.styles.isFloating()) {
parentStack.nonPositionedFloats.push(stack)
} else {
parentStack.nonPositionedInlineLevel.push(stack)
}
}
parseStackTree(
paintContainer,
stack,
treatAsRealStackingContext ? stack : realStackingContext,
listOwnerItems
)
} else {
if (child.styles.isInlineLevel()) {
stackingContext.inlineLevel.push(paintContainer)
} else {
stackingContext.nonInlineLevel.push(paintContainer)
}
parseStackTree(
paintContainer,
stackingContext,
realStackingContext,
listOwnerItems
)
}
if (contains(child.flags, 8)) {
processListItems(child, listOwnerItems)
}
})
}
var processListItems = function (owner, elements2) {
var numbering = owner instanceof OLElementContainer ? owner.start : 1
var reversed = owner instanceof OLElementContainer ? owner.reversed : false
for (var i2 = 0; i2 < elements2.length; i2++) {
var item2 = elements2[i2]
if (
item2.container instanceof LIElementContainer &&
typeof item2.container.value === 'number' &&
item2.container.value !== 0
) {
numbering = item2.container.value
}
item2.listValue = createCounterText(
numbering,
item2.container.styles.listStyleType,
true
)
numbering += reversed ? -1 : 1
}
}
var parseStackingContexts = function (container) {
var paintContainer = new ElementPaint(container, null)
var root2 = new StackingContext(paintContainer)
var listItems = []
parseStackTree(paintContainer, root2, root2, listItems)
processListItems(paintContainer.container, listItems)
return root2
}
var parsePathForBorder = function (curves, borderSide) {
switch (borderSide) {
case 0:
return createPathFromCurves(
curves.topLeftBorderBox,
curves.topLeftPaddingBox,
curves.topRightBorderBox,
curves.topRightPaddingBox
)
case 1:
return createPathFromCurves(
curves.topRightBorderBox,
curves.topRightPaddingBox,
curves.bottomRightBorderBox,
curves.bottomRightPaddingBox
)
case 2:
return createPathFromCurves(
curves.bottomRightBorderBox,
curves.bottomRightPaddingBox,
curves.bottomLeftBorderBox,
curves.bottomLeftPaddingBox
)
case 3:
default:
return createPathFromCurves(
curves.bottomLeftBorderBox,
curves.bottomLeftPaddingBox,
curves.topLeftBorderBox,
curves.topLeftPaddingBox
)
}
}
var parsePathForBorderDoubleOuter = function (curves, borderSide) {
switch (borderSide) {
case 0:
return createPathFromCurves(
curves.topLeftBorderBox,
curves.topLeftBorderDoubleOuterBox,
curves.topRightBorderBox,
curves.topRightBorderDoubleOuterBox
)
case 1:
return createPathFromCurves(
curves.topRightBorderBox,
curves.topRightBorderDoubleOuterBox,
curves.bottomRightBorderBox,
curves.bottomRightBorderDoubleOuterBox
)
case 2:
return createPathFromCurves(
curves.bottomRightBorderBox,
curves.bottomRightBorderDoubleOuterBox,
curves.bottomLeftBorderBox,
curves.bottomLeftBorderDoubleOuterBox
)
case 3:
default:
return createPathFromCurves(
curves.bottomLeftBorderBox,
curves.bottomLeftBorderDoubleOuterBox,
curves.topLeftBorderBox,
curves.topLeftBorderDoubleOuterBox
)
}
}
var parsePathForBorderDoubleInner = function (curves, borderSide) {
switch (borderSide) {
case 0:
return createPathFromCurves(
curves.topLeftBorderDoubleInnerBox,
curves.topLeftPaddingBox,
curves.topRightBorderDoubleInnerBox,
curves.topRightPaddingBox
)
case 1:
return createPathFromCurves(
curves.topRightBorderDoubleInnerBox,
curves.topRightPaddingBox,
curves.bottomRightBorderDoubleInnerBox,
curves.bottomRightPaddingBox
)
case 2:
return createPathFromCurves(
curves.bottomRightBorderDoubleInnerBox,
curves.bottomRightPaddingBox,
curves.bottomLeftBorderDoubleInnerBox,
curves.bottomLeftPaddingBox
)
case 3:
default:
return createPathFromCurves(
curves.bottomLeftBorderDoubleInnerBox,
curves.bottomLeftPaddingBox,
curves.topLeftBorderDoubleInnerBox,
curves.topLeftPaddingBox
)
}
}
var parsePathForBorderStroke = function (curves, borderSide) {
switch (borderSide) {
case 0:
return createStrokePathFromCurves(
curves.topLeftBorderStroke,
curves.topRightBorderStroke
)
case 1:
return createStrokePathFromCurves(
curves.topRightBorderStroke,
curves.bottomRightBorderStroke
)
case 2:
return createStrokePathFromCurves(
curves.bottomRightBorderStroke,
curves.bottomLeftBorderStroke
)
case 3:
default:
return createStrokePathFromCurves(
curves.bottomLeftBorderStroke,
curves.topLeftBorderStroke
)
}
}
var createStrokePathFromCurves = function (outer1, outer2) {
var path = []
if (isBezierCurve(outer1)) {
path.push(outer1.subdivide(0.5, false))
} else {
path.push(outer1)
}
if (isBezierCurve(outer2)) {
path.push(outer2.subdivide(0.5, true))
} else {
path.push(outer2)
}
return path
}
var createPathFromCurves = function (outer1, inner1, outer2, inner2) {
var path = []
if (isBezierCurve(outer1)) {
path.push(outer1.subdivide(0.5, false))
} else {
path.push(outer1)
}
if (isBezierCurve(outer2)) {
path.push(outer2.subdivide(0.5, true))
} else {
path.push(outer2)
}
if (isBezierCurve(inner2)) {
path.push(inner2.subdivide(0.5, true).reverse())
} else {
path.push(inner2)
}
if (isBezierCurve(inner1)) {
path.push(inner1.subdivide(0.5, false).reverse())
} else {
path.push(inner1)
}
return path
}
var paddingBox = function (element) {
var bounds = element.bounds
var styles = element.styles
return bounds.add(
styles.borderLeftWidth,
styles.borderTopWidth,
-(styles.borderRightWidth + styles.borderLeftWidth),
-(styles.borderTopWidth + styles.borderBottomWidth)
)
}
var contentBox = function (element) {
var styles = element.styles
var bounds = element.bounds
var paddingLeft2 = getAbsoluteValue(styles.paddingLeft, bounds.width)
var paddingRight2 = getAbsoluteValue(styles.paddingRight, bounds.width)
var paddingTop2 = getAbsoluteValue(styles.paddingTop, bounds.width)
var paddingBottom2 = getAbsoluteValue(styles.paddingBottom, bounds.width)
return bounds.add(
paddingLeft2 + styles.borderLeftWidth,
paddingTop2 + styles.borderTopWidth,
-(
styles.borderRightWidth +
styles.borderLeftWidth +
paddingLeft2 +
paddingRight2
),
-(
styles.borderTopWidth +
styles.borderBottomWidth +
paddingTop2 +
paddingBottom2
)
)
}
var calculateBackgroundPositioningArea = function (backgroundOrigin2, element) {
if (backgroundOrigin2 === 0) {
return element.bounds
}
if (backgroundOrigin2 === 2) {
return contentBox(element)
}
return paddingBox(element)
}
var calculateBackgroundPaintingArea = function (backgroundClip2, element) {
if (backgroundClip2 === 0) {
return element.bounds
}
if (backgroundClip2 === 2) {
return contentBox(element)
}
return paddingBox(element)
}
var calculateBackgroundRendering = function (container, index2, intrinsicSize) {
var backgroundPositioningArea = calculateBackgroundPositioningArea(
getBackgroundValueForIndex(container.styles.backgroundOrigin, index2),
container
)
var backgroundPaintingArea = calculateBackgroundPaintingArea(
getBackgroundValueForIndex(container.styles.backgroundClip, index2),
container
)
var backgroundImageSize = calculateBackgroundSize(
getBackgroundValueForIndex(container.styles.backgroundSize, index2),
intrinsicSize,
backgroundPositioningArea
)
var sizeWidth = backgroundImageSize[0],
sizeHeight = backgroundImageSize[1]
var position2 = getAbsoluteValueForTuple(
getBackgroundValueForIndex(container.styles.backgroundPosition, index2),
backgroundPositioningArea.width - sizeWidth,
backgroundPositioningArea.height - sizeHeight
)
var path = calculateBackgroundRepeatPath(
getBackgroundValueForIndex(container.styles.backgroundRepeat, index2),
position2,
backgroundImageSize,
backgroundPositioningArea,
backgroundPaintingArea
)
var offsetX = Math.round(backgroundPositioningArea.left + position2[0])
var offsetY = Math.round(backgroundPositioningArea.top + position2[1])
return [path, offsetX, offsetY, sizeWidth, sizeHeight]
}
var isAuto = function (token) {
return isIdentToken(token) && token.value === BACKGROUND_SIZE.AUTO
}
var hasIntrinsicValue = function (value2) {
return typeof value2 === 'number'
}
var calculateBackgroundSize = function (size, _a2, bounds) {
var intrinsicWidth = _a2[0],
intrinsicHeight = _a2[1],
intrinsicProportion = _a2[2]
var first2 = size[0],
second = size[1]
if (!first2) {
return [0, 0]
}
if (isLengthPercentage(first2) && second && isLengthPercentage(second)) {
return [
getAbsoluteValue(first2, bounds.width),
getAbsoluteValue(second, bounds.height),
]
}
var hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion)
if (
isIdentToken(first2) &&
(first2.value === BACKGROUND_SIZE.CONTAIN ||
first2.value === BACKGROUND_SIZE.COVER)
) {
if (hasIntrinsicValue(intrinsicProportion)) {
var targetRatio = bounds.width / bounds.height
return targetRatio < intrinsicProportion !==
(first2.value === BACKGROUND_SIZE.COVER)
? [bounds.width, bounds.width / intrinsicProportion]
: [bounds.height * intrinsicProportion, bounds.height]
}
return [bounds.width, bounds.height]
}
var hasIntrinsicWidth = hasIntrinsicValue(intrinsicWidth)
var hasIntrinsicHeight = hasIntrinsicValue(intrinsicHeight)
var hasIntrinsicDimensions = hasIntrinsicWidth || hasIntrinsicHeight
if (isAuto(first2) && (!second || isAuto(second))) {
if (hasIntrinsicWidth && hasIntrinsicHeight) {
return [intrinsicWidth, intrinsicHeight]
}
if (!hasIntrinsicProportion && !hasIntrinsicDimensions) {
return [bounds.width, bounds.height]
}
if (hasIntrinsicDimensions && hasIntrinsicProportion) {
var width_1 = hasIntrinsicWidth
? intrinsicWidth
: intrinsicHeight * intrinsicProportion
var height_1 = hasIntrinsicHeight
? intrinsicHeight
: intrinsicWidth / intrinsicProportion
return [width_1, height_1]
}
var width_2 = hasIntrinsicWidth ? intrinsicWidth : bounds.width
var height_2 = hasIntrinsicHeight ? intrinsicHeight : bounds.height
return [width_2, height_2]
}
if (hasIntrinsicProportion) {
var width_3 = 0
var height_3 = 0
if (isLengthPercentage(first2)) {
width_3 = getAbsoluteValue(first2, bounds.width)
} else if (isLengthPercentage(second)) {
height_3 = getAbsoluteValue(second, bounds.height)
}
if (isAuto(first2)) {
width_3 = height_3 * intrinsicProportion
} else if (!second || isAuto(second)) {
height_3 = width_3 / intrinsicProportion
}
return [width_3, height_3]
}
var width = null
var height = null
if (isLengthPercentage(first2)) {
width = getAbsoluteValue(first2, bounds.width)
} else if (second && isLengthPercentage(second)) {
height = getAbsoluteValue(second, bounds.height)
}
if (width !== null && (!second || isAuto(second))) {
height =
hasIntrinsicWidth && hasIntrinsicHeight
? (width / intrinsicWidth) * intrinsicHeight
: bounds.height
}
if (height !== null && isAuto(first2)) {
width =
hasIntrinsicWidth && hasIntrinsicHeight
? (height / intrinsicHeight) * intrinsicWidth
: bounds.width
}
if (width !== null && height !== null) {
return [width, height]
}
throw new Error('Unable to calculate background-size for element')
}
var getBackgroundValueForIndex = function (values2, index2) {
var value2 = values2[index2]
if (typeof value2 === 'undefined') {
return values2[0]
}
return value2
}
var calculateBackgroundRepeatPath = function (
repeat2,
_a2,
_b2,
backgroundPositioningArea,
backgroundPaintingArea
) {
var x2 = _a2[0],
y2 = _a2[1]
var width = _b2[0],
height = _b2[1]
switch (repeat2) {
case 2:
return [
new Vector(
Math.round(backgroundPositioningArea.left),
Math.round(backgroundPositioningArea.top + y2)
),
new Vector(
Math.round(
backgroundPositioningArea.left + backgroundPositioningArea.width
),
Math.round(backgroundPositioningArea.top + y2)
),
new Vector(
Math.round(
backgroundPositioningArea.left + backgroundPositioningArea.width
),
Math.round(height + backgroundPositioningArea.top + y2)
),
new Vector(
Math.round(backgroundPositioningArea.left),
Math.round(height + backgroundPositioningArea.top + y2)
),
]
case 3:
return [
new Vector(
Math.round(backgroundPositioningArea.left + x2),
Math.round(backgroundPositioningArea.top)
),
new Vector(
Math.round(backgroundPositioningArea.left + x2 + width),
Math.round(backgroundPositioningArea.top)
),
new Vector(
Math.round(backgroundPositioningArea.left + x2 + width),
Math.round(
backgroundPositioningArea.height + backgroundPositioningArea.top
)
),
new Vector(
Math.round(backgroundPositioningArea.left + x2),
Math.round(
backgroundPositioningArea.height + backgroundPositioningArea.top
)
),
]
case 1:
return [
new Vector(
Math.round(backgroundPositioningArea.left + x2),
Math.round(backgroundPositioningArea.top + y2)
),
new Vector(
Math.round(backgroundPositioningArea.left + x2 + width),
Math.round(backgroundPositioningArea.top + y2)
),
new Vector(
Math.round(backgroundPositioningArea.left + x2 + width),
Math.round(backgroundPositioningArea.top + y2 + height)
),
new Vector(
Math.round(backgroundPositioningArea.left + x2),
Math.round(backgroundPositioningArea.top + y2 + height)
),
]
default:
return [
new Vector(
Math.round(backgroundPaintingArea.left),
Math.round(backgroundPaintingArea.top)
),
new Vector(
Math.round(
backgroundPaintingArea.left + backgroundPaintingArea.width
),
Math.round(backgroundPaintingArea.top)
),
new Vector(
Math.round(
backgroundPaintingArea.left + backgroundPaintingArea.width
),
Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)
),
new Vector(
Math.round(backgroundPaintingArea.left),
Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)
),
]
}
}
var SMALL_IMAGE =
'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'
var SAMPLE_TEXT = 'Hidden Text'
var FontMetrics = (function () {
function FontMetrics2(document2) {
this._data = {}
this._document = document2
}
FontMetrics2.prototype.parseMetrics = function (fontFamily2, fontSize2) {
var container = this._document.createElement('div')
var img = this._document.createElement('img')
var span = this._document.createElement('span')
var body = this._document.body
container.style.visibility = 'hidden'
container.style.fontFamily = fontFamily2
container.style.fontSize = fontSize2
container.style.margin = '0'
container.style.padding = '0'
container.style.whiteSpace = 'nowrap'
body.appendChild(container)
img.src = SMALL_IMAGE
img.width = 1
img.height = 1
img.style.margin = '0'
img.style.padding = '0'
img.style.verticalAlign = 'baseline'
span.style.fontFamily = fontFamily2
span.style.fontSize = fontSize2
span.style.margin = '0'
span.style.padding = '0'
span.appendChild(this._document.createTextNode(SAMPLE_TEXT))
container.appendChild(span)
container.appendChild(img)
var baseline = img.offsetTop - span.offsetTop + 2
container.removeChild(span)
container.appendChild(this._document.createTextNode(SAMPLE_TEXT))
container.style.lineHeight = 'normal'
img.style.verticalAlign = 'super'
var middle = img.offsetTop - container.offsetTop + 2
body.removeChild(container)
return { baseline, middle }
}
FontMetrics2.prototype.getMetrics = function (fontFamily2, fontSize2) {
var key2 = fontFamily2 + ' ' + fontSize2
if (typeof this._data[key2] === 'undefined') {
this._data[key2] = this.parseMetrics(fontFamily2, fontSize2)
}
return this._data[key2]
}
return FontMetrics2
})()
var Renderer = (function () {
function Renderer2(context2, options2) {
this.context = context2
this.options = options2
}
return Renderer2
})()
var MASK_OFFSET = 1e4
var CanvasRenderer = (function (_super) {
__extends$3(CanvasRenderer2, _super)
function CanvasRenderer2(context2, options2) {
var _this = _super.call(this, context2, options2) || this
_this._activeEffects = []
_this.canvas = options2.canvas
? options2.canvas
: document.createElement('canvas')
_this.ctx = _this.canvas.getContext('2d')
if (!options2.canvas) {
_this.canvas.width = Math.floor(options2.width * options2.scale)
_this.canvas.height = Math.floor(options2.height * options2.scale)
_this.canvas.style.width = options2.width + 'px'
_this.canvas.style.height = options2.height + 'px'
}
_this.fontMetrics = new FontMetrics(document)
_this.ctx.scale(_this.options.scale, _this.options.scale)
_this.ctx.translate(-options2.x, -options2.y)
_this.ctx.textBaseline = 'bottom'
_this._activeEffects = []
_this.context.logger.debug(
'Canvas renderer initialized (' +
options2.width +
'x' +
options2.height +
') with scale ' +
options2.scale
)
return _this
}
CanvasRenderer2.prototype.applyEffects = function (effects) {
var _this = this
while (this._activeEffects.length) {
this.popEffect()
}
effects.forEach(function (effect2) {
return _this.applyEffect(effect2)
})
}
CanvasRenderer2.prototype.applyEffect = function (effect2) {
this.ctx.save()
if (isOpacityEffect(effect2)) {
this.ctx.globalAlpha = effect2.opacity
}
if (isTransformEffect(effect2)) {
this.ctx.translate(effect2.offsetX, effect2.offsetY)
this.ctx.transform(
effect2.matrix[0],
effect2.matrix[1],
effect2.matrix[2],
effect2.matrix[3],
effect2.matrix[4],
effect2.matrix[5]
)
this.ctx.translate(-effect2.offsetX, -effect2.offsetY)
}
if (isClipEffect(effect2)) {
this.path(effect2.path)
this.ctx.clip()
}
this._activeEffects.push(effect2)
}
CanvasRenderer2.prototype.popEffect = function () {
this._activeEffects.pop()
this.ctx.restore()
}
CanvasRenderer2.prototype.renderStack = function (stack) {
return __awaiter(this, void 0, void 0, function () {
var styles
return __generator(this, function (_a2) {
switch (_a2.label) {
case 0:
styles = stack.element.container.styles
if (!styles.isVisible()) return [3, 2]
return [4, this.renderStackContent(stack)]
case 1:
_a2.sent()
_a2.label = 2
case 2:
return [2]
}
})
})
}
CanvasRenderer2.prototype.renderNode = function (paint) {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a2) {
switch (_a2.label) {
case 0:
if (contains(paint.container.flags, 16)) {
debugger
}
if (!paint.container.styles.isVisible()) return [3, 3]
return [4, this.renderNodeBackgroundAndBorders(paint)]
case 1:
_a2.sent()
return [4, this.renderNodeContent(paint)]
case 2:
_a2.sent()
_a2.label = 3
case 3:
return [2]
}
})
})
}
CanvasRenderer2.prototype.renderTextWithLetterSpacing = function (
text2,
letterSpacing2,
baseline
) {
var _this = this
if (letterSpacing2 === 0) {
this.ctx.fillText(
text2.text,
text2.bounds.left,
text2.bounds.top + baseline
)
} else {
var letters = segmentGraphemes(text2.text)
letters.reduce(function (left2, letter) {
_this.ctx.fillText(letter, left2, text2.bounds.top + baseline)
return left2 + _this.ctx.measureText(letter).width
}, text2.bounds.left)
}
}
CanvasRenderer2.prototype.createFontStyle = function (styles) {
var fontVariant2 = styles.fontVariant
.filter(function (variant) {
return variant === 'normal' || variant === 'small-caps'
})
.join('')
var fontFamily2 = fixIOSSystemFonts(styles.fontFamily).join(', ')
var fontSize2 = isDimensionToken(styles.fontSize)
? '' + styles.fontSize.number + styles.fontSize.unit
: styles.fontSize.number + 'px'
return [
[
styles.fontStyle,
fontVariant2,
styles.fontWeight,
fontSize2,
fontFamily2,
].join(' '),
fontFamily2,
fontSize2,
]
}
CanvasRenderer2.prototype.renderTextNode = function (text2, styles) {
return __awaiter(this, void 0, void 0, function () {
var _a2, font2, fontFamily2, fontSize2, _b2, baseline, middle, paintOrder2
var _this = this
return __generator(this, function (_c2) {
;(_a2 = this.createFontStyle(styles)),
(font2 = _a2[0]),
(fontFamily2 = _a2[1]),
(fontSize2 = _a2[2])
this.ctx.font = font2
this.ctx.direction = styles.direction === 1 ? 'rtl' : 'ltr'
this.ctx.textAlign = 'left'
this.ctx.textBaseline = 'alphabetic'
;(_b2 = this.fontMetrics.getMetrics(fontFamily2, fontSize2)),
(baseline = _b2.baseline),
(middle = _b2.middle)
paintOrder2 = styles.paintOrder
text2.textBounds.forEach(function (text3) {
paintOrder2.forEach(function (paintOrderLayer) {
switch (paintOrderLayer) {
case 0:
_this.ctx.fillStyle = asString(styles.color)
_this.renderTextWithLetterSpacing(
text3,
styles.letterSpacing,
baseline
)
var textShadows = styles.textShadow
if (textShadows.length && text3.text.trim().length) {
textShadows
.slice(0)
.reverse()
.forEach(function (textShadow2) {
_this.ctx.shadowColor = asString(textShadow2.color)
_this.ctx.shadowOffsetX =
textShadow2.offsetX.number * _this.options.scale
_this.ctx.shadowOffsetY =
textShadow2.offsetY.number * _this.options.scale
_this.ctx.shadowBlur = textShadow2.blur.number
_this.renderTextWithLetterSpacing(
text3,
styles.letterSpacing,
baseline
)
})
_this.ctx.shadowColor = ''
_this.ctx.shadowOffsetX = 0
_this.ctx.shadowOffsetY = 0
_this.ctx.shadowBlur = 0
}
if (styles.textDecorationLine.length) {
_this.ctx.fillStyle = asString(
styles.textDecorationColor || styles.color
)
styles.textDecorationLine.forEach(function (
textDecorationLine2
) {
switch (textDecorationLine2) {
case 1:
_this.ctx.fillRect(
text3.bounds.left,
Math.round(text3.bounds.top + baseline),
text3.bounds.width,
1
)
break
case 2:
_this.ctx.fillRect(
text3.bounds.left,
Math.round(text3.bounds.top),
text3.bounds.width,
1
)
break
case 3:
_this.ctx.fillRect(
text3.bounds.left,
Math.ceil(text3.bounds.top + middle),
text3.bounds.width,
1
)
break
}
})
}
break
case 1:
if (styles.webkitTextStrokeWidth && text3.text.trim().length) {
_this.ctx.strokeStyle = asString(styles.webkitTextStrokeColor)
_this.ctx.lineWidth = styles.webkitTextStrokeWidth
_this.ctx.lineJoin = !!window.chrome ? 'miter' : 'round'
_this.ctx.strokeText(
text3.text,
text3.bounds.left,
text3.bounds.top + baseline
)
}
_this.ctx.strokeStyle = ''
_this.ctx.lineWidth = 0
_this.ctx.lineJoin = 'miter'
break
}
})
})
return [2]
})
})
}
CanvasRenderer2.prototype.renderReplacedElement = function (
container,
curves,
image2
) {
if (
image2 &&
container.intrinsicWidth > 0 &&
container.intrinsicHeight > 0
) {
var box2 = contentBox(container)
var path = calculatePaddingBoxPath(curves)
this.path(path)
this.ctx.save()
this.ctx.clip()
this.ctx.drawImage(
image2,
0,
0,
container.intrinsicWidth,
container.intrinsicHeight,
box2.left,
box2.top,
box2.width,
box2.height
)
this.ctx.restore()
}
}
CanvasRenderer2.prototype.renderNodeContent = function (paint) {
return __awaiter(this, void 0, void 0, function () {
var container,
curves,
styles,
_i,
_a2,
child,
image2,
image2,
iframeRenderer,
canvas,
size,
_b2,
fontFamily2,
fontSize2,
baseline,
bounds,
x2,
textBounds,
img,
image2,
url2,
fontFamily2,
bounds
return __generator(this, function (_c2) {
switch (_c2.label) {
case 0:
this.applyEffects(paint.getEffects(4))
container = paint.container
curves = paint.curves
styles = container.styles
;(_i = 0), (_a2 = container.textNodes)
_c2.label = 1
case 1:
if (!(_i < _a2.length)) return [3, 4]
child = _a2[_i]
return [4, this.renderTextNode(child, styles)]
case 2:
_c2.sent()
_c2.label = 3
case 3:
_i++
return [3, 1]
case 4:
if (!(container instanceof ImageElementContainer)) return [3, 8]
_c2.label = 5
case 5:
_c2.trys.push([5, 7, , 8])
return [4, this.context.cache.match(container.src)]
case 6:
image2 = _c2.sent()
this.renderReplacedElement(container, curves, image2)
return [3, 8]
case 7:
_c2.sent()
this.context.logger.error('Error loading image ' + container.src)
return [3, 8]
case 8:
if (container instanceof CanvasElementContainer) {
this.renderReplacedElement(container, curves, container.canvas)
}
if (!(container instanceof SVGElementContainer)) return [3, 12]
_c2.label = 9
case 9:
_c2.trys.push([9, 11, , 12])
return [4, this.context.cache.match(container.svg)]
case 10:
image2 = _c2.sent()
this.renderReplacedElement(container, curves, image2)
return [3, 12]
case 11:
_c2.sent()
this.context.logger.error(
'Error loading svg ' + container.svg.substring(0, 255)
)
return [3, 12]
case 12:
if (
!(container instanceof IFrameElementContainer && container.tree)
)
return [3, 14]
iframeRenderer = new CanvasRenderer2(this.context, {
scale: this.options.scale,
backgroundColor: container.backgroundColor,
x: 0,
y: 0,
width: container.width,
height: container.height,
})
return [4, iframeRenderer.render(container.tree)]
case 13:
canvas = _c2.sent()
if (container.width && container.height) {
this.ctx.drawImage(
canvas,
0,
0,
container.width,
container.height,
container.bounds.left,
container.bounds.top,
container.bounds.width,
container.bounds.height
)
}
_c2.label = 14
case 14:
if (container instanceof InputElementContainer) {
size = Math.min(container.bounds.width, container.bounds.height)
if (container.type === CHECKBOX) {
if (container.checked) {
this.ctx.save()
this.path([
new Vector(
container.bounds.left + size * 0.39363,
container.bounds.top + size * 0.79
),
new Vector(
container.bounds.left + size * 0.16,
container.bounds.top + size * 0.5549
),
new Vector(
container.bounds.left + size * 0.27347,
container.bounds.top + size * 0.44071
),
new Vector(
container.bounds.left + size * 0.39694,
container.bounds.top + size * 0.5649
),
new Vector(
container.bounds.left + size * 0.72983,
container.bounds.top + size * 0.23
),
new Vector(
container.bounds.left + size * 0.84,
container.bounds.top + size * 0.34085
),
new Vector(
container.bounds.left + size * 0.39363,
container.bounds.top + size * 0.79
),
])
this.ctx.fillStyle = asString(INPUT_COLOR)
this.ctx.fill()
this.ctx.restore()
}
} else if (container.type === RADIO) {
if (container.checked) {
this.ctx.save()
this.ctx.beginPath()
this.ctx.arc(
container.bounds.left + size / 2,
container.bounds.top + size / 2,
size / 4,
0,
Math.PI * 2,
true
)
this.ctx.fillStyle = asString(INPUT_COLOR)
this.ctx.fill()
this.ctx.restore()
}
}
}
if (isTextInputElement(container) && container.value.length) {
;(_b2 = this.createFontStyle(styles)),
(fontFamily2 = _b2[0]),
(fontSize2 = _b2[1])
baseline = this.fontMetrics.getMetrics(
fontFamily2,
fontSize2
).baseline
this.ctx.font = fontFamily2
this.ctx.fillStyle = asString(styles.color)
this.ctx.textBaseline = 'alphabetic'
this.ctx.textAlign = canvasTextAlign(container.styles.textAlign)
bounds = contentBox(container)
x2 = 0
switch (container.styles.textAlign) {
case 1:
x2 += bounds.width / 2
break
case 2:
x2 += bounds.width
break
}
textBounds = bounds.add(x2, 0, 0, -bounds.height / 2 + 1)
this.ctx.save()
this.path([
new Vector(bounds.left, bounds.top),
new Vector(bounds.left + bounds.width, bounds.top),
new Vector(
bounds.left + bounds.width,
bounds.top + bounds.height
),
new Vector(bounds.left, bounds.top + bounds.height),
])
this.ctx.clip()
this.renderTextWithLetterSpacing(
new TextBounds(container.value, textBounds),
styles.letterSpacing,
baseline
)
this.ctx.restore()
this.ctx.textBaseline = 'alphabetic'
this.ctx.textAlign = 'left'
}
if (!contains(container.styles.display, 2048)) return [3, 20]
if (!(container.styles.listStyleImage !== null)) return [3, 19]
img = container.styles.listStyleImage
if (!(img.type === 0)) return [3, 18]
image2 = void 0
url2 = img.url
_c2.label = 15
case 15:
_c2.trys.push([15, 17, , 18])
return [4, this.context.cache.match(url2)]
case 16:
image2 = _c2.sent()
this.ctx.drawImage(
image2,
container.bounds.left - (image2.width + 10),
container.bounds.top
)
return [3, 18]
case 17:
_c2.sent()
this.context.logger.error('Error loading list-style-image ' + url2)
return [3, 18]
case 18:
return [3, 20]
case 19:
if (paint.listValue && container.styles.listStyleType !== -1) {
fontFamily2 = this.createFontStyle(styles)[0]
this.ctx.font = fontFamily2
this.ctx.fillStyle = asString(styles.color)
this.ctx.textBaseline = 'middle'
this.ctx.textAlign = 'right'
bounds = new Bounds(
container.bounds.left,
container.bounds.top +
getAbsoluteValue(
container.styles.paddingTop,
container.bounds.width
),
container.bounds.width,
computeLineHeight(styles.lineHeight, styles.fontSize.number) /
2 +
1
)
this.renderTextWithLetterSpacing(
new TextBounds(paint.listValue, bounds),
styles.letterSpacing,
computeLineHeight(styles.lineHeight, styles.fontSize.number) /
2 +
2
)
this.ctx.textBaseline = 'bottom'
this.ctx.textAlign = 'left'
}
_c2.label = 20
case 20:
return [2]
}
})
})
}
CanvasRenderer2.prototype.renderStackContent = function (stack) {
return __awaiter(this, void 0, void 0, function () {
var _i,
_a2,
child,
_b2,
_c2,
child,
_d,
_e,
child,
_f,
_g,
child,
_h,
_j,
child,
_k,
_l,
child,
_m,
_o,
child
return __generator(this, function (_p) {
switch (_p.label) {
case 0:
if (contains(stack.element.container.flags, 16)) {
debugger
}
return [4, this.renderNodeBackgroundAndBorders(stack.element)]
case 1:
_p.sent()
;(_i = 0), (_a2 = stack.negativeZIndex)
_p.label = 2
case 2:
if (!(_i < _a2.length)) return [3, 5]
child = _a2[_i]
return [4, this.renderStack(child)]
case 3:
_p.sent()
_p.label = 4
case 4:
_i++
return [3, 2]
case 5:
return [4, this.renderNodeContent(stack.element)]
case 6:
_p.sent()
;(_b2 = 0), (_c2 = stack.nonInlineLevel)
_p.label = 7
case 7:
if (!(_b2 < _c2.length)) return [3, 10]
child = _c2[_b2]
return [4, this.renderNode(child)]
case 8:
_p.sent()
_p.label = 9
case 9:
_b2++
return [3, 7]
case 10:
;(_d = 0), (_e = stack.nonPositionedFloats)
_p.label = 11
case 11:
if (!(_d < _e.length)) return [3, 14]
child = _e[_d]
return [4, this.renderStack(child)]
case 12:
_p.sent()
_p.label = 13
case 13:
_d++
return [3, 11]
case 14:
;(_f = 0), (_g = stack.nonPositionedInlineLevel)
_p.label = 15
case 15:
if (!(_f < _g.length)) return [3, 18]
child = _g[_f]
return [4, this.renderStack(child)]
case 16:
_p.sent()
_p.label = 17
case 17:
_f++
return [3, 15]
case 18:
;(_h = 0), (_j = stack.inlineLevel)
_p.label = 19
case 19:
if (!(_h < _j.length)) return [3, 22]
child = _j[_h]
return [4, this.renderNode(child)]
case 20:
_p.sent()
_p.label = 21
case 21:
_h++
return [3, 19]
case 22:
;(_k = 0), (_l = stack.zeroOrAutoZIndexOrTransformedOrOpacity)
_p.label = 23
case 23:
if (!(_k < _l.length)) return [3, 26]
child = _l[_k]
return [4, this.renderStack(child)]
case 24:
_p.sent()
_p.label = 25
case 25:
_k++
return [3, 23]
case 26:
;(_m = 0), (_o = stack.positiveZIndex)
_p.label = 27
case 27:
if (!(_m < _o.length)) return [3, 30]
child = _o[_m]
return [4, this.renderStack(child)]
case 28:
_p.sent()
_p.label = 29
case 29:
_m++
return [3, 27]
case 30:
return [2]
}
})
})
}
CanvasRenderer2.prototype.mask = function (paths) {
this.ctx.beginPath()
this.ctx.moveTo(0, 0)
this.ctx.lineTo(this.canvas.width, 0)
this.ctx.lineTo(this.canvas.width, this.canvas.height)
this.ctx.lineTo(0, this.canvas.height)
this.ctx.lineTo(0, 0)
this.formatPath(paths.slice(0).reverse())
this.ctx.closePath()
}
CanvasRenderer2.prototype.path = function (paths) {
this.ctx.beginPath()
this.formatPath(paths)
this.ctx.closePath()
}
CanvasRenderer2.prototype.formatPath = function (paths) {
var _this = this
paths.forEach(function (point, index2) {
var start2 = isBezierCurve(point) ? point.start : point
if (index2 === 0) {
_this.ctx.moveTo(start2.x, start2.y)
} else {
_this.ctx.lineTo(start2.x, start2.y)
}
if (isBezierCurve(point)) {
_this.ctx.bezierCurveTo(
point.startControl.x,
point.startControl.y,
point.endControl.x,
point.endControl.y,
point.end.x,
point.end.y
)
}
})
}
CanvasRenderer2.prototype.renderRepeat = function (
path,
pattern4,
offsetX,
offsetY
) {
this.path(path)
this.ctx.fillStyle = pattern4
this.ctx.translate(offsetX, offsetY)
this.ctx.fill()
this.ctx.translate(-offsetX, -offsetY)
}
CanvasRenderer2.prototype.resizeImage = function (image2, width, height) {
var _a2
if (image2.width === width && image2.height === height) {
return image2
}
var ownerDocument =
(_a2 = this.canvas.ownerDocument) !== null && _a2 !== void 0
? _a2
: document
var canvas = ownerDocument.createElement('canvas')
canvas.width = Math.max(1, width)
canvas.height = Math.max(1, height)
var ctx = canvas.getContext('2d')
ctx.drawImage(
image2,
0,
0,
image2.width,
image2.height,
0,
0,
width,
height
)
return canvas
}
CanvasRenderer2.prototype.renderBackgroundImage = function (container) {
return __awaiter(this, void 0, void 0, function () {
var index2, _loop_1, this_1, _i, _a2, backgroundImage2
return __generator(this, function (_b2) {
switch (_b2.label) {
case 0:
index2 = container.styles.backgroundImage.length - 1
_loop_1 = function (backgroundImage3) {
var image2,
url2,
_c2,
path,
x2,
y2,
width,
height,
pattern4,
_d,
path,
x2,
y2,
width,
height,
_e,
lineLength,
x0,
x1,
y0,
y1,
canvas,
ctx,
gradient_1,
pattern4,
_f,
path,
left2,
top_1,
width,
height,
position2,
x2,
y2,
_g,
rx,
ry,
radialGradient_1,
midX,
midY,
f2,
invF
return __generator(this, function (_h) {
switch (_h.label) {
case 0:
if (!(backgroundImage3.type === 0)) return [3, 5]
image2 = void 0
url2 = backgroundImage3.url
_h.label = 1
case 1:
_h.trys.push([1, 3, , 4])
return [4, this_1.context.cache.match(url2)]
case 2:
image2 = _h.sent()
return [3, 4]
case 3:
_h.sent()
this_1.context.logger.error(
'Error loading background-image ' + url2
)
return [3, 4]
case 4:
if (image2) {
;(_c2 = calculateBackgroundRendering(container, index2, [
image2.width,
image2.height,
image2.width / image2.height,
])),
(path = _c2[0]),
(x2 = _c2[1]),
(y2 = _c2[2]),
(width = _c2[3]),
(height = _c2[4])
pattern4 = this_1.ctx.createPattern(
this_1.resizeImage(image2, width, height),
'repeat'
)
this_1.renderRepeat(path, pattern4, x2, y2)
}
return [3, 6]
case 5:
if (isLinearGradient$1(backgroundImage3)) {
;(_d = calculateBackgroundRendering(container, index2, [
null,
null,
null,
])),
(path = _d[0]),
(x2 = _d[1]),
(y2 = _d[2]),
(width = _d[3]),
(height = _d[4])
;(_e = calculateGradientDirection(
backgroundImage3.angle,
width,
height
)),
(lineLength = _e[0]),
(x0 = _e[1]),
(x1 = _e[2]),
(y0 = _e[3]),
(y1 = _e[4])
canvas = document.createElement('canvas')
canvas.width = width
canvas.height = height
ctx = canvas.getContext('2d')
gradient_1 = ctx.createLinearGradient(x0, y0, x1, y1)
processColorStops(
backgroundImage3.stops,
lineLength
).forEach(function (colorStop) {
return gradient_1.addColorStop(
colorStop.stop,
asString(colorStop.color)
)
})
ctx.fillStyle = gradient_1
ctx.fillRect(0, 0, width, height)
if (width > 0 && height > 0) {
pattern4 = this_1.ctx.createPattern(canvas, 'repeat')
this_1.renderRepeat(path, pattern4, x2, y2)
}
} else if (isRadialGradient$1(backgroundImage3)) {
;(_f = calculateBackgroundRendering(container, index2, [
null,
null,
null,
])),
(path = _f[0]),
(left2 = _f[1]),
(top_1 = _f[2]),
(width = _f[3]),
(height = _f[4])
position2 =
backgroundImage3.position.length === 0
? [FIFTY_PERCENT]
: backgroundImage3.position
x2 = getAbsoluteValue(position2[0], width)
y2 = getAbsoluteValue(
position2[position2.length - 1],
height
)
;(_g = calculateRadius(
backgroundImage3,
x2,
y2,
width,
height
)),
(rx = _g[0]),
(ry = _g[1])
if (rx > 0 && ry > 0) {
radialGradient_1 = this_1.ctx.createRadialGradient(
left2 + x2,
top_1 + y2,
0,
left2 + x2,
top_1 + y2,
rx
)
processColorStops(
backgroundImage3.stops,
rx * 2
).forEach(function (colorStop) {
return radialGradient_1.addColorStop(
colorStop.stop,
asString(colorStop.color)
)
})
this_1.path(path)
this_1.ctx.fillStyle = radialGradient_1
if (rx !== ry) {
midX =
container.bounds.left + 0.5 * container.bounds.width
midY =
container.bounds.top + 0.5 * container.bounds.height
f2 = ry / rx
invF = 1 / f2
this_1.ctx.save()
this_1.ctx.translate(midX, midY)
this_1.ctx.transform(1, 0, 0, f2, 0, 0)
this_1.ctx.translate(-midX, -midY)
this_1.ctx.fillRect(
left2,
invF * (top_1 - midY) + midY,
width,
height * invF
)
this_1.ctx.restore()
} else {
this_1.ctx.fill()
}
}
}
_h.label = 6
case 6:
index2--
return [2]
}
})
}
this_1 = this
;(_i = 0),
(_a2 = container.styles.backgroundImage.slice(0).reverse())
_b2.label = 1
case 1:
if (!(_i < _a2.length)) return [3, 4]
backgroundImage2 = _a2[_i]
return [5, _loop_1(backgroundImage2)]
case 2:
_b2.sent()
_b2.label = 3
case 3:
_i++
return [3, 1]
case 4:
return [2]
}
})
})
}
CanvasRenderer2.prototype.renderSolidBorder = function (
color2,
side,
curvePoints
) {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a2) {
this.path(parsePathForBorder(curvePoints, side))
this.ctx.fillStyle = asString(color2)
this.ctx.fill()
return [2]
})
})
}
CanvasRenderer2.prototype.renderDoubleBorder = function (
color2,
width,
side,
curvePoints
) {
return __awaiter(this, void 0, void 0, function () {
var outerPaths, innerPaths
return __generator(this, function (_a2) {
switch (_a2.label) {
case 0:
if (!(width < 3)) return [3, 2]
return [4, this.renderSolidBorder(color2, side, curvePoints)]
case 1:
_a2.sent()
return [2]
case 2:
outerPaths = parsePathForBorderDoubleOuter(curvePoints, side)
this.path(outerPaths)
this.ctx.fillStyle = asString(color2)
this.ctx.fill()
innerPaths = parsePathForBorderDoubleInner(curvePoints, side)
this.path(innerPaths)
this.ctx.fill()
return [2]
}
})
})
}
CanvasRenderer2.prototype.renderNodeBackgroundAndBorders = function (paint) {
return __awaiter(this, void 0, void 0, function () {
var styles,
hasBackground,
borders,
backgroundPaintingArea,
side,
_i,
borders_1,
border
var _this = this
return __generator(this, function (_a2) {
switch (_a2.label) {
case 0:
this.applyEffects(paint.getEffects(2))
styles = paint.container.styles
hasBackground =
!isTransparent(styles.backgroundColor) ||
styles.backgroundImage.length
borders = [
{
style: styles.borderTopStyle,
color: styles.borderTopColor,
width: styles.borderTopWidth,
},
{
style: styles.borderRightStyle,
color: styles.borderRightColor,
width: styles.borderRightWidth,
},
{
style: styles.borderBottomStyle,
color: styles.borderBottomColor,
width: styles.borderBottomWidth,
},
{
style: styles.borderLeftStyle,
color: styles.borderLeftColor,
width: styles.borderLeftWidth,
},
]
backgroundPaintingArea = calculateBackgroundCurvedPaintingArea(
getBackgroundValueForIndex(styles.backgroundClip, 0),
paint.curves
)
if (!(hasBackground || styles.boxShadow.length)) return [3, 2]
this.ctx.save()
this.path(backgroundPaintingArea)
this.ctx.clip()
if (!isTransparent(styles.backgroundColor)) {
this.ctx.fillStyle = asString(styles.backgroundColor)
this.ctx.fill()
}
return [4, this.renderBackgroundImage(paint.container)]
case 1:
_a2.sent()
this.ctx.restore()
styles.boxShadow
.slice(0)
.reverse()
.forEach(function (shadow) {
_this.ctx.save()
var borderBoxArea = calculateBorderBoxPath(paint.curves)
var maskOffset = shadow.inset ? 0 : MASK_OFFSET
var shadowPaintingArea = transformPath$1(
borderBoxArea,
-maskOffset + (shadow.inset ? 1 : -1) * shadow.spread.number,
(shadow.inset ? 1 : -1) * shadow.spread.number,
shadow.spread.number * (shadow.inset ? -2 : 2),
shadow.spread.number * (shadow.inset ? -2 : 2)
)
if (shadow.inset) {
_this.path(borderBoxArea)
_this.ctx.clip()
_this.mask(shadowPaintingArea)
} else {
_this.mask(borderBoxArea)
_this.ctx.clip()
_this.path(shadowPaintingArea)
}
_this.ctx.shadowOffsetX = shadow.offsetX.number + maskOffset
_this.ctx.shadowOffsetY = shadow.offsetY.number
_this.ctx.shadowColor = asString(shadow.color)
_this.ctx.shadowBlur = shadow.blur.number
_this.ctx.fillStyle = shadow.inset
? asString(shadow.color)
: 'rgba(0,0,0,1)'
_this.ctx.fill()
_this.ctx.restore()
})
_a2.label = 2
case 2:
side = 0
;(_i = 0), (borders_1 = borders)
_a2.label = 3
case 3:
if (!(_i < borders_1.length)) return [3, 13]
border = borders_1[_i]
if (
!(
border.style !== 0 &&
!isTransparent(border.color) &&
border.width > 0
)
)
return [3, 11]
if (!(border.style === 2)) return [3, 5]
return [
4,
this.renderDashedDottedBorder(
border.color,
border.width,
side,
paint.curves,
2
),
]
case 4:
_a2.sent()
return [3, 11]
case 5:
if (!(border.style === 3)) return [3, 7]
return [
4,
this.renderDashedDottedBorder(
border.color,
border.width,
side,
paint.curves,
3
),
]
case 6:
_a2.sent()
return [3, 11]
case 7:
if (!(border.style === 4)) return [3, 9]
return [
4,
this.renderDoubleBorder(
border.color,
border.width,
side,
paint.curves
),
]
case 8:
_a2.sent()
return [3, 11]
case 9:
return [4, this.renderSolidBorder(border.color, side, paint.curves)]
case 10:
_a2.sent()
_a2.label = 11
case 11:
side++
_a2.label = 12
case 12:
_i++
return [3, 3]
case 13:
return [2]
}
})
})
}
CanvasRenderer2.prototype.renderDashedDottedBorder = function (
color2,
width,
side,
curvePoints,
style2
) {
return __awaiter(this, void 0, void 0, function () {
var strokePaths,
boxPaths,
startX,
startY,
endX,
endY,
length2,
dashLength,
spaceLength,
useLineDash,
multiplier,
numberOfDashes,
minSpace,
maxSpace,
path1,
path2,
path1,
path2
return __generator(this, function (_a2) {
this.ctx.save()
strokePaths = parsePathForBorderStroke(curvePoints, side)
boxPaths = parsePathForBorder(curvePoints, side)
if (style2 === 2) {
this.path(boxPaths)
this.ctx.clip()
}
if (isBezierCurve(boxPaths[0])) {
startX = boxPaths[0].start.x
startY = boxPaths[0].start.y
} else {
startX = boxPaths[0].x
startY = boxPaths[0].y
}
if (isBezierCurve(boxPaths[1])) {
endX = boxPaths[1].end.x
endY = boxPaths[1].end.y
} else {
endX = boxPaths[1].x
endY = boxPaths[1].y
}
if (side === 0 || side === 2) {
length2 = Math.abs(startX - endX)
} else {
length2 = Math.abs(startY - endY)
}
this.ctx.beginPath()
if (style2 === 3) {
this.formatPath(strokePaths)
} else {
this.formatPath(boxPaths.slice(0, 2))
}
dashLength = width < 3 ? width * 3 : width * 2
spaceLength = width < 3 ? width * 2 : width
if (style2 === 3) {
dashLength = width
spaceLength = width
}
useLineDash = true
if (length2 <= dashLength * 2) {
useLineDash = false
} else if (length2 <= dashLength * 2 + spaceLength) {
multiplier = length2 / (2 * dashLength + spaceLength)
dashLength *= multiplier
spaceLength *= multiplier
} else {
numberOfDashes = Math.floor(
(length2 + spaceLength) / (dashLength + spaceLength)
)
minSpace =
(length2 - numberOfDashes * dashLength) / (numberOfDashes - 1)
maxSpace =
(length2 - (numberOfDashes + 1) * dashLength) / numberOfDashes
spaceLength =
maxSpace <= 0 ||
Math.abs(spaceLength - minSpace) < Math.abs(spaceLength - maxSpace)
? minSpace
: maxSpace
}
if (useLineDash) {
if (style2 === 3) {
this.ctx.setLineDash([0, dashLength + spaceLength])
} else {
this.ctx.setLineDash([dashLength, spaceLength])
}
}
if (style2 === 3) {
this.ctx.lineCap = 'round'
this.ctx.lineWidth = width
} else {
this.ctx.lineWidth = width * 2 + 1.1
}
this.ctx.strokeStyle = asString(color2)
this.ctx.stroke()
this.ctx.setLineDash([])
if (style2 === 2) {
if (isBezierCurve(boxPaths[0])) {
path1 = boxPaths[3]
path2 = boxPaths[0]
this.ctx.beginPath()
this.formatPath([
new Vector(path1.end.x, path1.end.y),
new Vector(path2.start.x, path2.start.y),
])
this.ctx.stroke()
}
if (isBezierCurve(boxPaths[1])) {
path1 = boxPaths[1]
path2 = boxPaths[2]
this.ctx.beginPath()
this.formatPath([
new Vector(path1.end.x, path1.end.y),
new Vector(path2.start.x, path2.start.y),
])
this.ctx.stroke()
}
}
this.ctx.restore()
return [2]
})
})
}
CanvasRenderer2.prototype.render = function (element) {
return __awaiter(this, void 0, void 0, function () {
var stack
return __generator(this, function (_a2) {
switch (_a2.label) {
case 0:
if (this.options.backgroundColor) {
this.ctx.fillStyle = asString(this.options.backgroundColor)
this.ctx.fillRect(
this.options.x,
this.options.y,
this.options.width,
this.options.height
)
}
stack = parseStackingContexts(element)
return [4, this.renderStack(stack)]
case 1:
_a2.sent()
this.applyEffects([])
return [2, this.canvas]
}
})
})
}
return CanvasRenderer2
})(Renderer)
var isTextInputElement = function (container) {
if (container instanceof TextareaElementContainer) {
return true
} else if (container instanceof SelectElementContainer) {
return true
} else if (
container instanceof InputElementContainer &&
container.type !== RADIO &&
container.type !== CHECKBOX
) {
return true
}
return false
}
var calculateBackgroundCurvedPaintingArea = function (clip2, curves) {
switch (clip2) {
case 0:
return calculateBorderBoxPath(curves)
case 2:
return calculateContentBoxPath(curves)
case 1:
default:
return calculatePaddingBoxPath(curves)
}
}
var canvasTextAlign = function (textAlign2) {
switch (textAlign2) {
case 1:
return 'center'
case 2:
return 'right'
case 0:
default:
return 'left'
}
}
var iOSBrokenFonts = ['-apple-system', 'system-ui']
var fixIOSSystemFonts = function (fontFamilies) {
return /iPhone OS 15_(0|1)/.test(window.navigator.userAgent)
? fontFamilies.filter(function (fontFamily2) {
return iOSBrokenFonts.indexOf(fontFamily2) === -1
})
: fontFamilies
}
var ForeignObjectRenderer = (function (_super) {
__extends$3(ForeignObjectRenderer2, _super)
function ForeignObjectRenderer2(context2, options2) {
var _this = _super.call(this, context2, options2) || this
_this.canvas = options2.canvas
? options2.canvas
: document.createElement('canvas')
_this.ctx = _this.canvas.getContext('2d')
_this.options = options2
_this.canvas.width = Math.floor(options2.width * options2.scale)
_this.canvas.height = Math.floor(options2.height * options2.scale)
_this.canvas.style.width = options2.width + 'px'
_this.canvas.style.height = options2.height + 'px'
_this.ctx.scale(_this.options.scale, _this.options.scale)
_this.ctx.translate(-options2.x, -options2.y)
_this.context.logger.debug(
'EXPERIMENTAL ForeignObject renderer initialized (' +
options2.width +
'x' +
options2.height +
' at ' +
options2.x +
',' +
options2.y +
') with scale ' +
options2.scale
)
return _this
}
ForeignObjectRenderer2.prototype.render = function (element) {
return __awaiter(this, void 0, void 0, function () {
var svg2, img
return __generator(this, function (_a2) {
switch (_a2.label) {
case 0:
svg2 = createForeignObjectSVG(
this.options.width * this.options.scale,
this.options.height * this.options.scale,
this.options.scale,
this.options.scale,
element
)
return [4, loadSerializedSVG(svg2)]
case 1:
img = _a2.sent()
if (this.options.backgroundColor) {
this.ctx.fillStyle = asString(this.options.backgroundColor)
this.ctx.fillRect(
0,
0,
this.options.width * this.options.scale,
this.options.height * this.options.scale
)
}
this.ctx.drawImage(
img,
-this.options.x * this.options.scale,
-this.options.y * this.options.scale
)
return [2, this.canvas]
}
})
})
}
return ForeignObjectRenderer2
})(Renderer)
var loadSerializedSVG = function (svg2) {
return new Promise(function (resolve2, reject2) {
var img = new Image()
img.onload = function () {
resolve2(img)
}
img.onerror = reject2
img.src =
'data:image/svg+xml;charset=utf-8,' +
encodeURIComponent(new XMLSerializer().serializeToString(svg2))
})
}
var Logger = (function () {
function Logger2(_a2) {
var id2 = _a2.id,
enabled = _a2.enabled
this.id = id2
this.enabled = enabled
this.start = Date.now()
}
Logger2.prototype.debug = function () {
var args = []
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i]
}
if (this.enabled) {
if (
typeof window !== 'undefined' &&
window.console &&
typeof console.debug === 'function'
) {
console.debug.apply(
console,
__spreadArray$7([this.id, this.getTime() + 'ms'], args)
)
} else {
this.info.apply(this, args)
}
}
}
Logger2.prototype.getTime = function () {
return Date.now() - this.start
}
Logger2.prototype.info = function () {
var args = []
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i]
}
if (this.enabled) {
if (
typeof window !== 'undefined' &&
window.console &&
typeof console.info === 'function'
) {
console.info.apply(
console,
__spreadArray$7([this.id, this.getTime() + 'ms'], args)
)
}
}
}
Logger2.prototype.warn = function () {
var args = []
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i]
}
if (this.enabled) {
if (
typeof window !== 'undefined' &&
window.console &&
typeof console.warn === 'function'
) {
console.warn.apply(
console,
__spreadArray$7([this.id, this.getTime() + 'ms'], args)
)
} else {
this.info.apply(this, args)
}
}
}
Logger2.prototype.error = function () {
var args = []
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i]
}
if (this.enabled) {
if (
typeof window !== 'undefined' &&
window.console &&
typeof console.error === 'function'
) {
console.error.apply(
console,
__spreadArray$7([this.id, this.getTime() + 'ms'], args)
)
} else {
this.info.apply(this, args)
}
}
}
Logger2.instances = {}
return Logger2
})()
var Context = (function () {
function Context2(options2, windowBounds) {
var _a2
this.windowBounds = windowBounds
this.instanceName = '#' + Context2.instanceCount++
this.logger = new Logger({
id: this.instanceName,
enabled: options2.logging,
})
this.cache =
(_a2 = options2.cache) !== null && _a2 !== void 0
? _a2
: new Cache(this, options2)
}
Context2.instanceCount = 1
return Context2
})()
var html2canvas = function (element, options2) {
if (options2 === void 0) {
options2 = {}
}
return renderElement(element, options2)
}
if (typeof window !== 'undefined') {
CacheStorage.setContext(window)
}
var renderElement = function (element, opts) {
return __awaiter(void 0, void 0, void 0, function () {
var ownerDocument,
defaultView,
resourceOptions,
contextOptions,
windowOptions,
windowBounds,
context2,
foreignObjectRendering,
cloneOptions,
documentCloner,
clonedElement,
container,
_a2,
width,
height,
left2,
top2,
backgroundColor2,
renderOptions,
canvas,
renderer2,
root2,
renderer2
var _b2, _c2, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t2
return __generator(this, function (_u) {
switch (_u.label) {
case 0:
if (!element || typeof element !== 'object') {
return [
2,
Promise.reject('Invalid element provided as first argument'),
]
}
ownerDocument = element.ownerDocument
if (!ownerDocument) {
throw new Error('Element is not attached to a Document')
}
defaultView = ownerDocument.defaultView
if (!defaultView) {
throw new Error('Document is not attached to a Window')
}
resourceOptions = {
allowTaint:
(_b2 = opts.allowTaint) !== null && _b2 !== void 0 ? _b2 : false,
imageTimeout:
(_c2 = opts.imageTimeout) !== null && _c2 !== void 0 ? _c2 : 15e3,
proxy: opts.proxy,
useCORS: (_d = opts.useCORS) !== null && _d !== void 0 ? _d : false,
}
contextOptions = __assign$k(
{
logging:
(_e = opts.logging) !== null && _e !== void 0 ? _e : true,
cache: opts.cache,
},
resourceOptions
)
windowOptions = {
windowWidth:
(_f = opts.windowWidth) !== null && _f !== void 0
? _f
: defaultView.innerWidth,
windowHeight:
(_g = opts.windowHeight) !== null && _g !== void 0
? _g
: defaultView.innerHeight,
scrollX:
(_h = opts.scrollX) !== null && _h !== void 0
? _h
: defaultView.pageXOffset,
scrollY:
(_j = opts.scrollY) !== null && _j !== void 0
? _j
: defaultView.pageYOffset,
}
windowBounds = new Bounds(
windowOptions.scrollX,
windowOptions.scrollY,
windowOptions.windowWidth,
windowOptions.windowHeight
)
context2 = new Context(contextOptions, windowBounds)
foreignObjectRendering =
(_k = opts.foreignObjectRendering) !== null && _k !== void 0
? _k
: false
cloneOptions = {
allowTaint:
(_l = opts.allowTaint) !== null && _l !== void 0 ? _l : false,
onclone: opts.onclone,
ignoreElements: opts.ignoreElements,
inlineImages: foreignObjectRendering,
copyStyles: foreignObjectRendering,
}
context2.logger.debug(
'Starting document clone with size ' +
windowBounds.width +
'x' +
windowBounds.height +
' scrolled to ' +
-windowBounds.left +
',' +
-windowBounds.top
)
documentCloner = new DocumentCloner(context2, element, cloneOptions)
clonedElement = documentCloner.clonedReferenceElement
if (!clonedElement) {
return [
2,
Promise.reject('Unable to find element in cloned iframe'),
]
}
return [4, documentCloner.toIFrame(ownerDocument, windowBounds)]
case 1:
container = _u.sent()
;(_a2 =
isBodyElement(clonedElement) || isHTMLElement(clonedElement)
? parseDocumentSize(clonedElement.ownerDocument)
: parseBounds(context2, clonedElement)),
(width = _a2.width),
(height = _a2.height),
(left2 = _a2.left),
(top2 = _a2.top)
backgroundColor2 = parseBackgroundColor(
context2,
clonedElement,
opts.backgroundColor
)
renderOptions = {
canvas: opts.canvas,
backgroundColor: backgroundColor2,
scale:
(_o =
(_m = opts.scale) !== null && _m !== void 0
? _m
: defaultView.devicePixelRatio) !== null && _o !== void 0
? _o
: 1,
x: ((_p = opts.x) !== null && _p !== void 0 ? _p : 0) + left2,
y: ((_q = opts.y) !== null && _q !== void 0 ? _q : 0) + top2,
width:
(_r = opts.width) !== null && _r !== void 0
? _r
: Math.ceil(width),
height:
(_s = opts.height) !== null && _s !== void 0
? _s
: Math.ceil(height),
}
if (!foreignObjectRendering) return [3, 3]
context2.logger.debug(
'Document cloned, using foreign object rendering'
)
renderer2 = new ForeignObjectRenderer(context2, renderOptions)
return [4, renderer2.render(clonedElement)]
case 2:
canvas = _u.sent()
return [3, 5]
case 3:
context2.logger.debug(
'Document cloned, element located at ' +
left2 +
',' +
top2 +
' with size ' +
width +
'x' +
height +
' using computed rendering'
)
context2.logger.debug('Starting DOM parsing')
root2 = parseTree(context2, clonedElement)
if (backgroundColor2 === root2.styles.backgroundColor) {
root2.styles.backgroundColor = COLORS.TRANSPARENT
}
context2.logger.debug(
'Starting renderer for element at ' +
renderOptions.x +
',' +
renderOptions.y +
' with size ' +
renderOptions.width +
'x' +
renderOptions.height
)
renderer2 = new CanvasRenderer(context2, renderOptions)
return [4, renderer2.render(root2)]
case 4:
canvas = _u.sent()
_u.label = 5
case 5:
if (
(_t2 = opts.removeContainer) !== null && _t2 !== void 0 ? _t2 : true
) {
if (!DocumentCloner.destroy(container)) {
context2.logger.error(
'Cannot detach cloned iframe as it is not in the DOM anymore'
)
}
}
context2.logger.debug('Finished rendering')
return [2, canvas]
}
})
})
}
var parseBackgroundColor = function (
context2,
element,
backgroundColorOverride
) {
var ownerDocument = element.ownerDocument
var documentBackgroundColor = ownerDocument.documentElement
? parseColor(
context2,
getComputedStyle(ownerDocument.documentElement).backgroundColor
)
: COLORS.TRANSPARENT
var bodyBackgroundColor = ownerDocument.body
? parseColor(context2, getComputedStyle(ownerDocument.body).backgroundColor)
: COLORS.TRANSPARENT
var defaultBackgroundColor =
typeof backgroundColorOverride === 'string'
? parseColor(context2, backgroundColorOverride)
: backgroundColorOverride === null
? COLORS.TRANSPARENT
: 4294967295
return element === ownerDocument.documentElement
? isTransparent(documentBackgroundColor)
? isTransparent(bodyBackgroundColor)
? defaultBackgroundColor
: bodyBackgroundColor
: documentBackgroundColor
: defaultBackgroundColor
}
var html2canvas_esm = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: html2canvas,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
function resolveUrl(url2, baseUrl) {
if (url2.match(/^[a-z]+:\/\//i)) {
return url2
}
if (url2.match(/^\/\//)) {
return window.location.protocol + url2
}
if (url2.match(/^[a-z]+:/i)) {
return url2
}
const doc = document.implementation.createHTMLDocument()
const base2 = doc.createElement('base')
const a2 = doc.createElement('a')
doc.head.appendChild(base2)
doc.body.appendChild(a2)
if (baseUrl) {
base2.href = baseUrl
}
a2.href = url2
return a2.href
}
const uuid$1 = (() => {
let counter2 = 0
const random2 = () =>
`0000${((Math.random() * 36 ** 4) << 0).toString(36)}`.slice(-4)
return () => {
counter2 += 1
return `u${random2()}${counter2}`
}
})()
function toArray$4(arrayLike) {
const arr = []
for (let i2 = 0, l2 = arrayLike.length; i2 < l2; i2++) {
arr.push(arrayLike[i2])
}
return arr
}
function px(node2, styleProperty) {
const win = node2.ownerDocument.defaultView || window
const val2 = win.getComputedStyle(node2).getPropertyValue(styleProperty)
return val2 ? parseFloat(val2.replace('px', '')) : 0
}
function getNodeWidth(node2) {
const leftBorder = px(node2, 'border-left-width')
const rightBorder = px(node2, 'border-right-width')
return node2.clientWidth + leftBorder + rightBorder
}
function getNodeHeight(node2) {
const topBorder = px(node2, 'border-top-width')
const bottomBorder = px(node2, 'border-bottom-width')
return node2.clientHeight + topBorder + bottomBorder
}
function getImageSize(targetNode, options2 = {}) {
const width = options2.width || getNodeWidth(targetNode)
const height = options2.height || getNodeHeight(targetNode)
return { width, height }
}
function getPixelRatio() {
let ratio
let FINAL_PROCESS
try {
FINAL_PROCESS = process
} catch (e2) {}
const val2 =
FINAL_PROCESS && FINAL_PROCESS.env
? FINAL_PROCESS.env.devicePixelRatio
: null
if (val2) {
ratio = parseInt(val2, 10)
if (Number.isNaN(ratio)) {
ratio = 1
}
}
return ratio || window.devicePixelRatio || 1
}
const canvasDimensionLimit = 16384
function checkCanvasDimensions(canvas) {
if (
canvas.width > canvasDimensionLimit ||
canvas.height > canvasDimensionLimit
) {
if (
canvas.width > canvasDimensionLimit &&
canvas.height > canvasDimensionLimit
) {
if (canvas.width > canvas.height) {
canvas.height *= canvasDimensionLimit / canvas.width
canvas.width = canvasDimensionLimit
} else {
canvas.width *= canvasDimensionLimit / canvas.height
canvas.height = canvasDimensionLimit
}
} else if (canvas.width > canvasDimensionLimit) {
canvas.height *= canvasDimensionLimit / canvas.width
canvas.width = canvasDimensionLimit
} else {
canvas.width *= canvasDimensionLimit / canvas.height
canvas.height = canvasDimensionLimit
}
}
}
function canvasToBlob(canvas, options2 = {}) {
if (canvas.toBlob) {
return new Promise((resolve2) => {
canvas.toBlob(
resolve2,
options2.type ? options2.type : 'image/png',
options2.quality ? options2.quality : 1
)
})
}
return new Promise((resolve2) => {
const binaryString = window.atob(
canvas
.toDataURL(
options2.type ? options2.type : void 0,
options2.quality ? options2.quality : void 0
)
.split(',')[1]
)
const len2 = binaryString.length
const binaryArray = new Uint8Array(len2)
for (let i2 = 0; i2 < len2; i2 += 1) {
binaryArray[i2] = binaryString.charCodeAt(i2)
}
resolve2(
new Blob([binaryArray], {
type: options2.type ? options2.type : 'image/png',
})
)
})
}
function createImage$1(url2) {
return new Promise((resolve2, reject2) => {
const img = new Image()
img.decode = () => resolve2(img)
img.onload = () => resolve2(img)
img.onerror = reject2
img.crossOrigin = 'anonymous'
img.decoding = 'async'
img.src = url2
})
}
async function svgToDataURL(svg2) {
return Promise.resolve()
.then(() => new XMLSerializer().serializeToString(svg2))
.then(encodeURIComponent)
.then((html2) => `data:image/svg+xml;charset=utf-8,${html2}`)
}
async function nodeToDataURL(node2, width, height) {
const xmlns = 'http://www.w3.org/2000/svg'
const svg2 = document.createElementNS(xmlns, 'svg')
const foreignObject = document.createElementNS(xmlns, 'foreignObject')
svg2.setAttribute('width', `${width}`)
svg2.setAttribute('height', `${height}`)
svg2.setAttribute('viewBox', `0 0 ${width} ${height}`)
foreignObject.setAttribute('width', '100%')
foreignObject.setAttribute('height', '100%')
foreignObject.setAttribute('x', '0')
foreignObject.setAttribute('y', '0')
foreignObject.setAttribute('externalResourcesRequired', 'true')
svg2.appendChild(foreignObject)
foreignObject.appendChild(node2)
return svgToDataURL(svg2)
}
const isInstanceOfElement = (node2, instance) => {
if (node2 instanceof instance) return true
const nodePrototype = Object.getPrototypeOf(node2)
if (nodePrototype === null) return false
return (
nodePrototype.constructor.name === instance.name ||
isInstanceOfElement(nodePrototype, instance)
)
}
function formatCSSText(style2) {
const content2 = style2.getPropertyValue('content')
return `${style2.cssText} content: '${content2.replace(/'|"/g, '')}';`
}
function formatCSSProperties(style2) {
return toArray$4(style2)
.map((name2) => {
const value2 = style2.getPropertyValue(name2)
const priority = style2.getPropertyPriority(name2)
return `${name2}: ${value2}${priority ? ' !important' : ''};`
})
.join(' ')
}
function getPseudoElementStyle(className, pseudo, style2) {
const selector2 = `.${className}:${pseudo}`
const cssText = style2.cssText
? formatCSSText(style2)
: formatCSSProperties(style2)
return document.createTextNode(`${selector2}{${cssText}}`)
}
function clonePseudoElement(nativeNode, clonedNode, pseudo) {
const style2 = window.getComputedStyle(nativeNode, pseudo)
const content2 = style2.getPropertyValue('content')
if (content2 === '' || content2 === 'none') {
return
}
const className = uuid$1()
try {
clonedNode.className = `${clonedNode.className} ${className}`
} catch (err) {
return
}
const styleElement = document.createElement('style')
styleElement.appendChild(getPseudoElementStyle(className, pseudo, style2))
clonedNode.appendChild(styleElement)
}
function clonePseudoElements(nativeNode, clonedNode) {
clonePseudoElement(nativeNode, clonedNode, ':before')
clonePseudoElement(nativeNode, clonedNode, ':after')
}
const WOFF = 'application/font-woff'
const JPEG = 'image/jpeg'
const mimes = {
woff: WOFF,
woff2: WOFF,
ttf: 'application/font-truetype',
eot: 'application/vnd.ms-fontobject',
png: 'image/png',
jpg: JPEG,
jpeg: JPEG,
gif: 'image/gif',
tiff: 'image/tiff',
svg: 'image/svg+xml',
webp: 'image/webp',
}
function getExtension(url2) {
const match2 = /\.([^./]*?)$/g.exec(url2)
return match2 ? match2[1] : ''
}
function getMimeType(url2) {
const extension = getExtension(url2).toLowerCase()
return mimes[extension] || ''
}
function getContentFromDataUrl(dataURL) {
return dataURL.split(/,/)[1]
}
function isDataUrl(url2) {
return url2.search(/^(data:)/) !== -1
}
function makeDataUrl(content2, mimeType) {
return `data:${mimeType};base64,${content2}`
}
async function fetchAsDataURL(url2, init2, process2) {
const res = await fetch(url2, init2)
if (res.status === 404) {
throw new Error(`Resource "${res.url}" not found`)
}
const blob = await res.blob()
return new Promise((resolve2, reject2) => {
const reader = new FileReader()
reader.onerror = reject2
reader.onloadend = () => {
try {
resolve2(process2({ res, result: reader.result }))
} catch (error2) {
reject2(error2)
}
}
reader.readAsDataURL(blob)
})
}
const cache$1 = {}
function getCacheKey(url2, contentType, includeQueryParams) {
let key2 = url2.replace(/\?.*/, '')
if (includeQueryParams) {
key2 = url2
}
if (/ttf|otf|eot|woff2?/i.test(key2)) {
key2 = key2.replace(/.*\//, '')
}
return contentType ? `[${contentType}]${key2}` : key2
}
async function resourceToDataURL(resourceUrl, contentType, options2) {
const cacheKey = getCacheKey(
resourceUrl,
contentType,
options2.includeQueryParams
)
if (cache$1[cacheKey] != null) {
return cache$1[cacheKey]
}
if (options2.cacheBust) {
resourceUrl += (/\?/.test(resourceUrl) ? '&' : '?') + new Date().getTime()
}
let dataURL
try {
const content2 = await fetchAsDataURL(
resourceUrl,
options2.fetchRequestInit,
({ res, result }) => {
if (!contentType) {
contentType = res.headers.get('Content-Type') || ''
}
return getContentFromDataUrl(result)
}
)
dataURL = makeDataUrl(content2, contentType)
} catch (error2) {
dataURL = options2.imagePlaceholder || ''
let msg = `Failed to fetch resource: ${resourceUrl}`
if (error2) {
msg = typeof error2 === 'string' ? error2 : error2.message
}
if (msg) {
console.warn(msg)
}
}
cache$1[cacheKey] = dataURL
return dataURL
}
async function cloneCanvasElement(canvas) {
const dataURL = canvas.toDataURL()
if (dataURL === 'data:,') {
return canvas.cloneNode(false)
}
return createImage$1(dataURL)
}
async function cloneVideoElement(video, options2) {
if (video.currentSrc) {
const canvas = document.createElement('canvas')
const ctx = canvas.getContext('2d')
canvas.width = video.clientWidth
canvas.height = video.clientHeight
ctx === null || ctx === void 0
? void 0
: ctx.drawImage(video, 0, 0, canvas.width, canvas.height)
const dataURL2 = canvas.toDataURL()
return createImage$1(dataURL2)
}
const poster = video.poster
const contentType = getMimeType(poster)
const dataURL = await resourceToDataURL(poster, contentType, options2)
return createImage$1(dataURL)
}
async function cloneIFrameElement(iframe) {
var _a2
try {
if (
(_a2 =
iframe === null || iframe === void 0
? void 0
: iframe.contentDocument) === null || _a2 === void 0
? void 0
: _a2.body
) {
return await cloneNode(iframe.contentDocument.body, {}, true)
}
} catch (_b2) {}
return iframe.cloneNode(false)
}
async function cloneSingleNode(node2, options2) {
if (isInstanceOfElement(node2, HTMLCanvasElement)) {
return cloneCanvasElement(node2)
}
if (isInstanceOfElement(node2, HTMLVideoElement)) {
return cloneVideoElement(node2, options2)
}
if (isInstanceOfElement(node2, HTMLIFrameElement)) {
return cloneIFrameElement(node2)
}
return node2.cloneNode(false)
}
const isSlotElement = (node2) =>
node2.tagName != null && node2.tagName.toUpperCase() === 'SLOT'
async function cloneChildren(nativeNode, clonedNode, options2) {
var _a2, _b2
let children = []
if (isSlotElement(nativeNode) && nativeNode.assignedNodes) {
children = toArray$4(nativeNode.assignedNodes())
} else if (
isInstanceOfElement(nativeNode, HTMLIFrameElement) &&
((_a2 = nativeNode.contentDocument) === null || _a2 === void 0
? void 0
: _a2.body)
) {
children = toArray$4(nativeNode.contentDocument.body.childNodes)
} else {
children = toArray$4(
((_b2 = nativeNode.shadowRoot) !== null && _b2 !== void 0
? _b2
: nativeNode
).childNodes
)
}
if (
children.length === 0 ||
isInstanceOfElement(nativeNode, HTMLVideoElement)
) {
return clonedNode
}
await children.reduce(
(deferred, child) =>
deferred
.then(() => cloneNode(child, options2))
.then((clonedChild) => {
if (clonedChild) {
clonedNode.appendChild(clonedChild)
}
}),
Promise.resolve()
)
return clonedNode
}
function cloneCSSStyle(nativeNode, clonedNode) {
const targetStyle = clonedNode.style
if (!targetStyle) {
return
}
const sourceStyle = window.getComputedStyle(nativeNode)
if (sourceStyle.cssText) {
targetStyle.cssText = sourceStyle.cssText
targetStyle.transformOrigin = sourceStyle.transformOrigin
} else {
toArray$4(sourceStyle).forEach((name2) => {
let value2 = sourceStyle.getPropertyValue(name2)
if (name2 === 'font-size' && value2.endsWith('px')) {
const reducedFont =
Math.floor(parseFloat(value2.substring(0, value2.length - 2))) - 0.1
value2 = `${reducedFont}px`
}
if (
isInstanceOfElement(nativeNode, HTMLIFrameElement) &&
name2 === 'display' &&
value2 === 'inline'
) {
value2 = 'block'
}
if (name2 === 'd' && clonedNode.getAttribute('d')) {
value2 = `path(${clonedNode.getAttribute('d')})`
}
targetStyle.setProperty(
name2,
value2,
sourceStyle.getPropertyPriority(name2)
)
})
}
}
function cloneInputValue(nativeNode, clonedNode) {
if (isInstanceOfElement(nativeNode, HTMLTextAreaElement)) {
clonedNode.innerHTML = nativeNode.value
}
if (isInstanceOfElement(nativeNode, HTMLInputElement)) {
clonedNode.setAttribute('value', nativeNode.value)
}
}
function cloneSelectValue(nativeNode, clonedNode) {
if (isInstanceOfElement(nativeNode, HTMLSelectElement)) {
const clonedSelect = clonedNode
const selectedOption = Array.from(clonedSelect.children).find(
(child) => nativeNode.value === child.getAttribute('value')
)
if (selectedOption) {
selectedOption.setAttribute('selected', '')
}
}
}
function decorate(nativeNode, clonedNode) {
if (isInstanceOfElement(clonedNode, Element)) {
cloneCSSStyle(nativeNode, clonedNode)
clonePseudoElements(nativeNode, clonedNode)
cloneInputValue(nativeNode, clonedNode)
cloneSelectValue(nativeNode, clonedNode)
}
return clonedNode
}
async function ensureSVGSymbols(clone2, options2) {
const uses = clone2.querySelectorAll ? clone2.querySelectorAll('use') : []
if (uses.length === 0) {
return clone2
}
const processedDefs = {}
for (let i2 = 0; i2 < uses.length; i2++) {
const use3 = uses[i2]
const id2 = use3.getAttribute('xlink:href')
if (id2) {
const exist = clone2.querySelector(id2)
const definition = document.querySelector(id2)
if (!exist && definition && !processedDefs[id2]) {
processedDefs[id2] = await cloneNode(definition, options2, true)
}
}
}
const nodes = Object.values(processedDefs)
if (nodes.length) {
const ns = 'http://www.w3.org/1999/xhtml'
const svg2 = document.createElementNS(ns, 'svg')
svg2.setAttribute('xmlns', ns)
svg2.style.position = 'absolute'
svg2.style.width = '0'
svg2.style.height = '0'
svg2.style.overflow = 'hidden'
svg2.style.display = 'none'
const defs = document.createElementNS(ns, 'defs')
svg2.appendChild(defs)
for (let i2 = 0; i2 < nodes.length; i2++) {
defs.appendChild(nodes[i2])
}
clone2.appendChild(svg2)
}
return clone2
}
async function cloneNode(node2, options2, isRoot) {
if (!isRoot && options2.filter && !options2.filter(node2)) {
return null
}
return Promise.resolve(node2)
.then((clonedNode) => cloneSingleNode(clonedNode, options2))
.then((clonedNode) => cloneChildren(node2, clonedNode, options2))
.then((clonedNode) => decorate(node2, clonedNode))
.then((clonedNode) => ensureSVGSymbols(clonedNode, options2))
}
const URL_REGEX = /url\((['"]?)([^'"]+?)\1\)/g
const URL_WITH_FORMAT_REGEX = /url\([^)]+\)\s*format\((["']?)([^"']+)\1\)/g
const FONT_SRC_REGEX = /src:\s*(?:url\([^)]+\)\s*format\([^)]+\)[,;]\s*)+/g
function toRegex(url2) {
const escaped = url2.replace(/([.*+?^${}()|\[\]\/\\])/g, '\\$1')
return new RegExp(`(url\\(['"]?)(${escaped})(['"]?\\))`, 'g')
}
function parseURLs(cssText) {
const urls = []
cssText.replace(URL_REGEX, (raw, quotation, url2) => {
urls.push(url2)
return raw
})
return urls.filter((url2) => !isDataUrl(url2))
}
async function embed(
cssText,
resourceURL,
baseURL2,
options2,
getContentFromUrl
) {
try {
const resolvedURL = baseURL2
? resolveUrl(resourceURL, baseURL2)
: resourceURL
const contentType = getMimeType(resourceURL)
let dataURL
if (getContentFromUrl) {
const content2 = await getContentFromUrl(resolvedURL)
dataURL = makeDataUrl(content2, contentType)
} else {
dataURL = await resourceToDataURL(resolvedURL, contentType, options2)
}
return cssText.replace(toRegex(resourceURL), `$1${dataURL}$3`)
} catch (error2) {}
return cssText
}
function filterPreferredFontFormat(str, { preferredFontFormat }) {
return !preferredFontFormat
? str
: str.replace(FONT_SRC_REGEX, (match2) => {
while (true) {
const [src, , format2] = URL_WITH_FORMAT_REGEX.exec(match2) || []
if (!format2) {
return ''
}
if (format2 === preferredFontFormat) {
return `src: ${src};`
}
}
})
}
function shouldEmbed(url2) {
return url2.search(URL_REGEX) !== -1
}
async function embedResources(cssText, baseUrl, options2) {
if (!shouldEmbed(cssText)) {
return cssText
}
const filteredCSSText = filterPreferredFontFormat(cssText, options2)
const urls = parseURLs(filteredCSSText)
return urls.reduce(
(deferred, url2) =>
deferred.then((css2) => embed(css2, url2, baseUrl, options2)),
Promise.resolve(filteredCSSText)
)
}
async function embedProp(propName, node2, options2) {
var _a2
const propValue =
(_a2 = node2.style) === null || _a2 === void 0
? void 0
: _a2.getPropertyValue(propName)
if (propValue) {
const cssString = await embedResources(propValue, null, options2)
node2.style.setProperty(
propName,
cssString,
node2.style.getPropertyPriority(propName)
)
return true
}
return false
}
async function embedBackground(clonedNode, options2) {
if (!(await embedProp('background', clonedNode, options2))) {
await embedProp('background-image', clonedNode, options2)
}
if (!(await embedProp('mask', clonedNode, options2))) {
await embedProp('mask-image', clonedNode, options2)
}
}
async function embedImageNode(clonedNode, options2) {
const isImageElement2 = isInstanceOfElement(clonedNode, HTMLImageElement)
if (
!(isImageElement2 && !isDataUrl(clonedNode.src)) &&
!(
isInstanceOfElement(clonedNode, SVGImageElement) &&
!isDataUrl(clonedNode.href.baseVal)
)
) {
return
}
const url2 = isImageElement2 ? clonedNode.src : clonedNode.href.baseVal
const dataURL = await resourceToDataURL(url2, getMimeType(url2), options2)
await new Promise((resolve2, reject2) => {
clonedNode.onload = resolve2
clonedNode.onerror = reject2
const image2 = clonedNode
if (image2.decode) {
image2.decode = resolve2
}
if (image2.loading === 'lazy') {
image2.loading = 'eager'
}
if (isImageElement2) {
clonedNode.srcset = ''
clonedNode.src = dataURL
} else {
clonedNode.href.baseVal = dataURL
}
})
}
async function embedChildren(clonedNode, options2) {
const children = toArray$4(clonedNode.childNodes)
const deferreds = children.map((child) => embedImages(child, options2))
await Promise.all(deferreds).then(() => clonedNode)
}
async function embedImages(clonedNode, options2) {
if (isInstanceOfElement(clonedNode, Element)) {
await embedBackground(clonedNode, options2)
await embedImageNode(clonedNode, options2)
await embedChildren(clonedNode, options2)
}
}
function applyStyle(node2, options2) {
const { style: style2 } = node2
if (options2.backgroundColor) {
style2.backgroundColor = options2.backgroundColor
}
if (options2.width) {
style2.width = `${options2.width}px`
}
if (options2.height) {
style2.height = `${options2.height}px`
}
const manual = options2.style
if (manual != null) {
Object.keys(manual).forEach((key2) => {
style2[key2] = manual[key2]
})
}
return node2
}
const cssFetchCache = {}
async function fetchCSS(url2) {
let cache2 = cssFetchCache[url2]
if (cache2 != null) {
return cache2
}
const res = await fetch(url2)
const cssText = await res.text()
cache2 = { url: url2, cssText }
cssFetchCache[url2] = cache2
return cache2
}
async function embedFonts(data2, options2) {
let cssText = data2.cssText
const regexUrl = /url\(["']?([^"')]+)["']?\)/g
const fontLocs = cssText.match(/url\([^)]+\)/g) || []
const loadFonts = fontLocs.map(async (loc) => {
let url2 = loc.replace(regexUrl, '$1')
if (!url2.startsWith('https://')) {
url2 = new URL(url2, data2.url).href
}
return fetchAsDataURL(url2, options2.fetchRequestInit, ({ result }) => {
cssText = cssText.replace(loc, `url(${result})`)
return [loc, result]
})
})
return Promise.all(loadFonts).then(() => cssText)
}
function parseCSS(source2) {
if (source2 == null) {
return []
}
const result = []
const commentsRegex = /(\/\*[\s\S]*?\*\/)/gi
let cssText = source2.replace(commentsRegex, '')
const keyframesRegex = new RegExp(
'((@.*?keyframes [\\s\\S]*?){([\\s\\S]*?}\\s*?)})',
'gi'
)
while (true) {
const matches2 = keyframesRegex.exec(cssText)
if (matches2 === null) {
break
}
result.push(matches2[0])
}
cssText = cssText.replace(keyframesRegex, '')
const importRegex = /@import[\s\S]*?url\([^)]*\)[\s\S]*?;/gi
const combinedCSSRegex =
'((\\s*?(?:\\/\\*[\\s\\S]*?\\*\\/)?\\s*?@media[\\s\\S]*?){([\\s\\S]*?)}\\s*?})|(([\\s\\S]*?){([\\s\\S]*?)})'
const unifiedRegex = new RegExp(combinedCSSRegex, 'gi')
while (true) {
let matches2 = importRegex.exec(cssText)
if (matches2 === null) {
matches2 = unifiedRegex.exec(cssText)
if (matches2 === null) {
break
} else {
importRegex.lastIndex = unifiedRegex.lastIndex
}
} else {
unifiedRegex.lastIndex = importRegex.lastIndex
}
result.push(matches2[0])
}
return result
}
async function getCSSRules(styleSheets, options2) {
const ret = []
const deferreds = []
styleSheets.forEach((sheet) => {
if ('cssRules' in sheet) {
try {
toArray$4(sheet.cssRules || []).forEach((item2, index2) => {
if (item2.type === CSSRule.IMPORT_RULE) {
let importIndex = index2 + 1
const url2 = item2.href
const deferred = fetchCSS(url2)
.then((metadata) => embedFonts(metadata, options2))
.then((cssText) =>
parseCSS(cssText).forEach((rule2) => {
try {
sheet.insertRule(
rule2,
rule2.startsWith('@import')
? (importIndex += 1)
: sheet.cssRules.length
)
} catch (error2) {
console.error('Error inserting rule from remote css', {
rule: rule2,
error: error2,
})
}
})
)
.catch((e2) => {
console.error('Error loading remote css', e2.toString())
})
deferreds.push(deferred)
}
})
} catch (e2) {
const inline =
styleSheets.find((a2) => a2.href == null) || document.styleSheets[0]
if (sheet.href != null) {
deferreds.push(
fetchCSS(sheet.href)
.then((metadata) => embedFonts(metadata, options2))
.then((cssText) =>
parseCSS(cssText).forEach((rule2) => {
inline.insertRule(rule2, sheet.cssRules.length)
})
)
.catch((err) => {
console.error('Error loading remote stylesheet', err)
})
)
}
console.error('Error inlining remote css file', e2)
}
}
})
return Promise.all(deferreds).then(() => {
styleSheets.forEach((sheet) => {
if ('cssRules' in sheet) {
try {
toArray$4(sheet.cssRules || []).forEach((item2) => {
ret.push(item2)
})
} catch (e2) {
console.error(`Error while reading CSS rules from ${sheet.href}`, e2)
}
}
})
return ret
})
}
function getWebFontRules(cssRules) {
return cssRules
.filter((rule2) => rule2.type === CSSRule.FONT_FACE_RULE)
.filter((rule2) => shouldEmbed(rule2.style.getPropertyValue('src')))
}
async function parseWebFontRules(node2, options2) {
if (node2.ownerDocument == null) {
throw new Error('Provided element is not within a Document')
}
const styleSheets = toArray$4(node2.ownerDocument.styleSheets)
const cssRules = await getCSSRules(styleSheets, options2)
return getWebFontRules(cssRules)
}
async function getWebFontCSS(node2, options2) {
const rules2 = await parseWebFontRules(node2, options2)
const cssTexts = await Promise.all(
rules2.map((rule2) => {
const baseUrl = rule2.parentStyleSheet
? rule2.parentStyleSheet.href
: null
return embedResources(rule2.cssText, baseUrl, options2)
})
)
return cssTexts.join('\n')
}
async function embedWebFonts(clonedNode, options2) {
const cssText =
options2.fontEmbedCSS != null
? options2.fontEmbedCSS
: options2.skipFonts
? null
: await getWebFontCSS(clonedNode, options2)
if (cssText) {
const styleNode = document.createElement('style')
const sytleContent = document.createTextNode(cssText)
styleNode.appendChild(sytleContent)
if (clonedNode.firstChild) {
clonedNode.insertBefore(styleNode, clonedNode.firstChild)
} else {
clonedNode.appendChild(styleNode)
}
}
}
async function toSvg(node2, options2 = {}) {
const { width, height } = getImageSize(node2, options2)
const clonedNode = await cloneNode(node2, options2, true)
await embedWebFonts(clonedNode, options2)
await embedImages(clonedNode, options2)
applyStyle(clonedNode, options2)
const datauri = await nodeToDataURL(clonedNode, width, height)
return datauri
}
async function toCanvas(node2, options2 = {}) {
const { width, height } = getImageSize(node2, options2)
const svg2 = await toSvg(node2, options2)
const img = await createImage$1(svg2)
const canvas = document.createElement('canvas')
const context2 = canvas.getContext('2d')
const ratio = options2.pixelRatio || getPixelRatio()
const canvasWidth = options2.canvasWidth || width
const canvasHeight = options2.canvasHeight || height
canvas.width = canvasWidth * ratio
canvas.height = canvasHeight * ratio
if (!options2.skipAutoScale) {
checkCanvasDimensions(canvas)
}
canvas.style.width = `${canvasWidth}`
canvas.style.height = `${canvasHeight}`
if (options2.backgroundColor) {
context2.fillStyle = options2.backgroundColor
context2.fillRect(0, 0, canvas.width, canvas.height)
}
context2.drawImage(img, 0, 0, canvas.width, canvas.height)
return canvas
}
async function toPng(node2, options2 = {}) {
const canvas = await toCanvas(node2, options2)
return canvas.toDataURL()
}
async function toBlob(node2, options2 = {}) {
const canvas = await toCanvas(node2, options2)
const blob = await canvasToBlob(canvas)
return blob
}
const paperSize = {
A4: {
w: 210,
h: 297,
},
A3: {
w: 297,
h: 420,
},
Letter: {
w: 215.9,
h: 279.4,
},
Legal: {
w: 215.9,
h: 355.6,
},
Tabloid: {
w: 279.4,
h: 431.8,
},
B5: {
w: 176,
h: 250,
},
B4: {
w: 250,
h: 353,
},
C5: {
w: 162,
h: 229,
},
}
const paperTypeList = () => {
let list2 = []
for (let key2 in paperSize) {
let data2 = {
name: key2,
value: key2,
}
list2.push(data2)
}
return list2
}
var print$1 = { exports: {} }
;(function (module2, exports2) {
;(function webpackUniversalModuleDefinition(root2, factory) {
module2.exports = factory()
})(window, function () {
return (function (modules2) {
var installedModules = {}
function __webpack_require__2(moduleId) {
if (installedModules[moduleId]) {
return installedModules[moduleId].exports
}
var module3 = (installedModules[moduleId] = {
i: moduleId,
l: false,
exports: {},
})
modules2[moduleId].call(
module3.exports,
module3,
module3.exports,
__webpack_require__2
)
module3.l = true
return module3.exports
}
__webpack_require__2.m = modules2
__webpack_require__2.c = installedModules
__webpack_require__2.d = function (exports3, name2, getter) {
if (!__webpack_require__2.o(exports3, name2)) {
Object.defineProperty(exports3, name2, {
enumerable: true,
get: getter,
})
}
}
__webpack_require__2.r = function (exports3) {
if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {
Object.defineProperty(exports3, Symbol.toStringTag, {
value: 'Module',
})
}
Object.defineProperty(exports3, '__esModule', { value: true })
}
__webpack_require__2.t = function (value2, mode2) {
if (mode2 & 1) value2 = __webpack_require__2(value2)
if (mode2 & 8) return value2
if (
mode2 & 4 &&
typeof value2 === 'object' &&
value2 &&
value2.__esModule
)
return value2
var ns = /* @__PURE__ */ Object.create(null)
__webpack_require__2.r(ns)
Object.defineProperty(ns, 'default', {
enumerable: true,
value: value2,
})
if (mode2 & 2 && typeof value2 != 'string')
for (var key2 in value2)
__webpack_require__2.d(
ns,
key2,
function (key3) {
return value2[key3]
}.bind(null, key2)
)
return ns
}
__webpack_require__2.n = function (module3) {
var getter =
module3 && module3.__esModule
? function getDefault() {
return module3['default']
}
: function getModuleExports() {
return module3
}
__webpack_require__2.d(getter, 'a', getter)
return getter
}
__webpack_require__2.o = function (object4, property2) {
return Object.prototype.hasOwnProperty.call(object4, property2)
}
__webpack_require__2.p = ''
return __webpack_require__2((__webpack_require__2.s = 0))
})({
'./src/index.js': function (
module3,
__webpack_exports__,
__webpack_require__2
) {
__webpack_require__2.r(__webpack_exports__)
__webpack_require__2('./src/sass/index.scss')
var _js_init__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__2('./src/js/init.js')
var printJS2 = _js_init__WEBPACK_IMPORTED_MODULE_1__['default'].init
if (typeof window !== 'undefined') {
window.printJS = printJS2
}
__webpack_exports__['default'] = printJS2
},
'./src/js/browser.js': function (
module3,
__webpack_exports__,
__webpack_require__2
) {
__webpack_require__2.r(__webpack_exports__)
var Browser2 = {
isFirefox: function isFirefox2() {
return typeof InstallTrigger !== 'undefined'
},
isIE: function isIE() {
return (
navigator.userAgent.indexOf('MSIE') !== -1 ||
!!document.documentMode
)
},
isEdge: function isEdge() {
return !Browser2.isIE() && !!window.StyleMedia
},
isChrome: function isChrome() {
var context2 =
arguments.length > 0 && arguments[0] !== void 0
? arguments[0]
: window
return !!context2.chrome
},
isSafari: function isSafari() {
return (
Object.prototype.toString
.call(window.HTMLElement)
.indexOf('Constructor') > 0 ||
navigator.userAgent.toLowerCase().indexOf('safari') !== -1
)
},
isIOSChrome: function isIOSChrome() {
return navigator.userAgent.toLowerCase().indexOf('crios') !== -1
},
}
__webpack_exports__['default'] = Browser2
},
'./src/js/functions.js': function (
module3,
__webpack_exports__,
__webpack_require__2
) {
__webpack_require__2.r(__webpack_exports__)
__webpack_require__2.d(__webpack_exports__, 'addWrapper', function () {
return addWrapper
})
__webpack_require__2.d(
__webpack_exports__,
'capitalizePrint',
function () {
return capitalizePrint
}
)
__webpack_require__2.d(
__webpack_exports__,
'collectStyles',
function () {
return collectStyles
}
)
__webpack_require__2.d(__webpack_exports__, 'addHeader', function () {
return addHeader
})
__webpack_require__2.d(__webpack_exports__, 'cleanUp', function () {
return cleanUp
})
__webpack_require__2.d(__webpack_exports__, 'isRawHTML', function () {
return isRawHTML
})
var _modal__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__2('./src/js/modal.js')
var _browser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__2(
'./src/js/browser.js'
)
function _typeof2(obj) {
'@babel/helpers - typeof'
if (
typeof Symbol === 'function' &&
typeof Symbol.iterator === 'symbol'
) {
_typeof2 = function _typeof3(obj2) {
return typeof obj2
}
} else {
_typeof2 = function _typeof3(obj2) {
return obj2 &&
typeof Symbol === 'function' &&
obj2.constructor === Symbol &&
obj2 !== Symbol.prototype
? 'symbol'
: typeof obj2
}
}
return _typeof2(obj)
}
function addWrapper(htmlData, params2) {
var bodyStyle =
'font-family:' +
params2.font +
' !important; font-size: ' +
params2.font_size +
' !important; width:100%;'
return '' + htmlData + '
'
}
function capitalizePrint(obj) {
return obj.charAt(0).toUpperCase() + obj.slice(1)
}
function collectStyles(element, params2) {
var win = document.defaultView || window
var elementStyle = ''
var styles = win.getComputedStyle(element, '')
for (var key2 = 0; key2 < styles.length; key2++) {
if (
params2.targetStyles.indexOf('*') !== -1 ||
params2.targetStyle.indexOf(styles[key2]) !== -1 ||
targetStylesMatch(params2.targetStyles, styles[key2])
) {
if (styles.getPropertyValue(styles[key2]))
elementStyle +=
styles[key2] +
':' +
styles.getPropertyValue(styles[key2]) +
';'
}
}
elementStyle +=
'max-width: ' +
params2.maxWidth +
'px !important; font-size: ' +
params2.font_size +
' !important;'
return elementStyle
}
function targetStylesMatch(styles, value2) {
for (var i2 = 0; i2 < styles.length; i2++) {
if (
_typeof2(value2) === 'object' &&
value2.indexOf(styles[i2]) !== -1
)
return true
}
return false
}
function addHeader(printElement, params2) {
var headerContainer = document.createElement('div')
if (isRawHTML(params2.header)) {
headerContainer.innerHTML = params2.header
} else {
var headerElement = document.createElement('h1')
var headerNode = document.createTextNode(params2.header)
headerElement.appendChild(headerNode)
headerElement.setAttribute('style', params2.headerStyle)
headerContainer.appendChild(headerElement)
}
printElement.insertBefore(headerContainer, printElement.childNodes[0])
}
function cleanUp(params2) {
if (params2.showModal)
_modal__WEBPACK_IMPORTED_MODULE_0__['default'].close()
if (params2.onLoadingEnd) params2.onLoadingEnd()
if (params2.showModal || params2.onLoadingStart)
window.URL.revokeObjectURL(params2.printable)
var event = 'mouseover'
if (
_browser__WEBPACK_IMPORTED_MODULE_1__['default'].isChrome() ||
_browser__WEBPACK_IMPORTED_MODULE_1__['default'].isFirefox()
) {
event = 'focus'
}
var handler = function handler2() {
window.removeEventListener(event, handler2)
params2.onPrintDialogClose()
var iframe = document.getElementById(params2.frameId)
if (iframe) {
iframe.remove()
}
}
window.addEventListener(event, handler)
}
function isRawHTML(raw) {
var regexHtml = new RegExp(
'<([A-Za-z][A-Za-z0-9]*)\\b[^>]*>(.*?)\\1>'
)
return regexHtml.test(raw)
}
},
'./src/js/html.js': function (
module3,
__webpack_exports__,
__webpack_require__2
) {
__webpack_require__2.r(__webpack_exports__)
var _functions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__2(
'./src/js/functions.js'
)
var _print__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__2('./src/js/print.js')
function _typeof2(obj) {
'@babel/helpers - typeof'
if (
typeof Symbol === 'function' &&
typeof Symbol.iterator === 'symbol'
) {
_typeof2 = function _typeof3(obj2) {
return typeof obj2
}
} else {
_typeof2 = function _typeof3(obj2) {
return obj2 &&
typeof Symbol === 'function' &&
obj2.constructor === Symbol &&
obj2 !== Symbol.prototype
? 'symbol'
: typeof obj2
}
}
return _typeof2(obj)
}
__webpack_exports__['default'] = {
print: function print2(params2, printFrame) {
var printElement = isHtmlElement(params2.printable)
? params2.printable
: document.getElementById(params2.printable)
if (!printElement) {
window.console.error(
'Invalid HTML element id: ' + params2.printable
)
return
}
params2.printableElement = cloneElement(printElement, params2)
if (params2.header) {
Object(_functions__WEBPACK_IMPORTED_MODULE_0__['addHeader'])(
params2.printableElement,
params2
)
}
_print__WEBPACK_IMPORTED_MODULE_1__['default'].send(
params2,
printFrame
)
},
}
function cloneElement(element, params2) {
var clone2 = element.cloneNode()
var childNodesArray = Array.prototype.slice.call(element.childNodes)
for (var i2 = 0; i2 < childNodesArray.length; i2++) {
if (params2.ignoreElements.indexOf(childNodesArray[i2].id) !== -1) {
continue
}
var clonedChild = cloneElement(childNodesArray[i2], params2)
clone2.appendChild(clonedChild)
}
if (params2.scanStyles && element.nodeType === 1) {
clone2.setAttribute(
'style',
Object(_functions__WEBPACK_IMPORTED_MODULE_0__['collectStyles'])(
element,
params2
)
)
}
switch (element.tagName) {
case 'SELECT':
clone2.value = element.value
break
case 'CANVAS':
clone2.getContext('2d').drawImage(element, 0, 0)
break
}
return clone2
}
function isHtmlElement(printable) {
return (
_typeof2(printable) === 'object' &&
printable &&
(printable instanceof HTMLElement || printable.nodeType === 1)
)
}
},
'./src/js/image.js': function (
module3,
__webpack_exports__,
__webpack_require__2
) {
__webpack_require__2.r(__webpack_exports__)
var _functions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__2(
'./src/js/functions.js'
)
var _print__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__2('./src/js/print.js')
var _browser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__2(
'./src/js/browser.js'
)
__webpack_exports__['default'] = {
print: function print2(params2, printFrame) {
if (params2.printable.constructor !== Array) {
params2.printable = [params2.printable]
}
params2.printableElement = document.createElement('div')
params2.printable.forEach(function (src) {
var img = document.createElement('img')
img.setAttribute('style', params2.imageStyle)
img.src = src
if (
_browser__WEBPACK_IMPORTED_MODULE_2__['default'].isFirefox()
) {
var fullyQualifiedSrc = img.src
img.src = fullyQualifiedSrc
}
var imageWrapper = document.createElement('div')
imageWrapper.appendChild(img)
params2.printableElement.appendChild(imageWrapper)
})
if (params2.header)
Object(_functions__WEBPACK_IMPORTED_MODULE_0__['addHeader'])(
params2.printableElement,
params2
)
_print__WEBPACK_IMPORTED_MODULE_1__['default'].send(
params2,
printFrame
)
},
}
},
'./src/js/init.js': function (
module3,
__webpack_exports__,
__webpack_require__2
) {
__webpack_require__2.r(__webpack_exports__)
var _browser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__2(
'./src/js/browser.js'
)
var _modal__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__2('./src/js/modal.js')
var _pdf__WEBPACK_IMPORTED_MODULE_2__ =
__webpack_require__2('./src/js/pdf.js')
var _html__WEBPACK_IMPORTED_MODULE_3__ =
__webpack_require__2('./src/js/html.js')
var _raw_html__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__2(
'./src/js/raw-html.js'
)
var _image__WEBPACK_IMPORTED_MODULE_5__ =
__webpack_require__2('./src/js/image.js')
var _json__WEBPACK_IMPORTED_MODULE_6__ =
__webpack_require__2('./src/js/json.js')
function _typeof2(obj) {
'@babel/helpers - typeof'
if (
typeof Symbol === 'function' &&
typeof Symbol.iterator === 'symbol'
) {
_typeof2 = function _typeof3(obj2) {
return typeof obj2
}
} else {
_typeof2 = function _typeof3(obj2) {
return obj2 &&
typeof Symbol === 'function' &&
obj2.constructor === Symbol &&
obj2 !== Symbol.prototype
? 'symbol'
: typeof obj2
}
}
return _typeof2(obj)
}
var printTypes = ['pdf', 'html', 'image', 'json', 'raw-html']
__webpack_exports__['default'] = {
init: function init2() {
var params2 = {
printable: null,
fallbackPrintable: null,
type: 'pdf',
header: null,
headerStyle: 'font-weight: 300;',
maxWidth: 800,
properties: null,
gridHeaderStyle:
'font-weight: bold; padding: 5px; border: 1px solid #dddddd;',
gridStyle: 'border: 1px solid lightgray; margin-bottom: -1px;',
showModal: false,
onError: function onError(error2) {
throw error2
},
onLoadingStart: null,
onLoadingEnd: null,
onPrintDialogClose: function onPrintDialogClose() {},
onIncompatibleBrowser: function onIncompatibleBrowser() {},
modalMessage: 'Retrieving Document...',
frameId: 'printJS',
printableElement: null,
documentTitle: 'Document',
targetStyle: [
'clear',
'display',
'width',
'min-width',
'height',
'min-height',
'max-height',
],
targetStyles: ['border', 'box', 'break', 'text-decoration'],
ignoreElements: [],
repeatTableHeader: true,
css: null,
style: null,
scanStyles: true,
base64: false,
onPdfOpen: null,
font: 'TimesNewRoman',
font_size: '12pt',
honorMarginPadding: true,
honorColor: false,
imageStyle: 'max-width: 100%;',
}
var args = arguments[0]
if (args === void 0) {
throw new Error('printJS expects at least 1 attribute.')
}
switch (_typeof2(args)) {
case 'string':
params2.printable = encodeURI(args)
params2.fallbackPrintable = params2.printable
params2.type = arguments[1] || params2.type
break
case 'object':
params2.printable = args.printable
params2.fallbackPrintable =
typeof args.fallbackPrintable !== 'undefined'
? args.fallbackPrintable
: params2.printable
params2.fallbackPrintable = params2.base64
? 'data:application/pdf;base64,'.concat(
params2.fallbackPrintable
)
: params2.fallbackPrintable
for (var k2 in params2) {
if (k2 === 'printable' || k2 === 'fallbackPrintable') continue
params2[k2] =
typeof args[k2] !== 'undefined' ? args[k2] : params2[k2]
}
break
default:
throw new Error(
'Unexpected argument type! Expected "string" or "object", got ' +
_typeof2(args)
)
}
if (!params2.printable)
throw new Error('Missing printable information.')
if (
!params2.type ||
typeof params2.type !== 'string' ||
printTypes.indexOf(params2.type.toLowerCase()) === -1
) {
throw new Error(
'Invalid print type. Available types are: pdf, html, image and json.'
)
}
if (params2.showModal)
_modal__WEBPACK_IMPORTED_MODULE_1__['default'].show(params2)
if (params2.onLoadingStart) params2.onLoadingStart()
var usedFrame = document.getElementById(params2.frameId)
if (usedFrame) usedFrame.parentNode.removeChild(usedFrame)
var printFrame = document.createElement('iframe')
if (_browser__WEBPACK_IMPORTED_MODULE_0__['default'].isFirefox()) {
printFrame.setAttribute(
'style',
'width: 1px; height: 100px; position: fixed; left: 0; top: 0; opacity: 0; border-width: 0; margin: 0; padding: 0'
)
} else {
printFrame.setAttribute(
'style',
'visibility: hidden; height: 0; width: 0; position: absolute; border: 0'
)
}
printFrame.setAttribute('id', params2.frameId)
if (params2.type !== 'pdf') {
printFrame.srcdoc =
'' + params2.documentTitle + ''
if (params2.css) {
if (!Array.isArray(params2.css)) params2.css = [params2.css]
params2.css.forEach(function (file2) {
printFrame.srcdoc +=
''
})
}
printFrame.srcdoc += ''
}
switch (params2.type) {
case 'pdf':
if (_browser__WEBPACK_IMPORTED_MODULE_0__['default'].isIE()) {
try {
console.info(
"Print.js doesn't support PDF printing in Internet Explorer."
)
var win = window.open(params2.fallbackPrintable, '_blank')
win.focus()
params2.onIncompatibleBrowser()
} catch (error2) {
params2.onError(error2)
} finally {
if (params2.showModal)
_modal__WEBPACK_IMPORTED_MODULE_1__['default'].close()
if (params2.onLoadingEnd) params2.onLoadingEnd()
}
} else {
_pdf__WEBPACK_IMPORTED_MODULE_2__['default'].print(
params2,
printFrame
)
}
break
case 'image':
_image__WEBPACK_IMPORTED_MODULE_5__['default'].print(
params2,
printFrame
)
break
case 'html':
_html__WEBPACK_IMPORTED_MODULE_3__['default'].print(
params2,
printFrame
)
break
case 'raw-html':
_raw_html__WEBPACK_IMPORTED_MODULE_4__['default'].print(
params2,
printFrame
)
break
case 'json':
_json__WEBPACK_IMPORTED_MODULE_6__['default'].print(
params2,
printFrame
)
break
}
},
}
},
'./src/js/json.js': function (
module3,
__webpack_exports__,
__webpack_require__2
) {
__webpack_require__2.r(__webpack_exports__)
var _functions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__2(
'./src/js/functions.js'
)
var _print__WEBPACK_IMPORTED_MODULE_1__ =
__webpack_require__2('./src/js/print.js')
function _typeof2(obj) {
'@babel/helpers - typeof'
if (
typeof Symbol === 'function' &&
typeof Symbol.iterator === 'symbol'
) {
_typeof2 = function _typeof3(obj2) {
return typeof obj2
}
} else {
_typeof2 = function _typeof3(obj2) {
return obj2 &&
typeof Symbol === 'function' &&
obj2.constructor === Symbol &&
obj2 !== Symbol.prototype
? 'symbol'
: typeof obj2
}
}
return _typeof2(obj)
}
__webpack_exports__['default'] = {
print: function print2(params2, printFrame) {
if (_typeof2(params2.printable) !== 'object') {
throw new Error('Invalid javascript data object (JSON).')
}
if (typeof params2.repeatTableHeader !== 'boolean') {
throw new Error(
'Invalid value for repeatTableHeader attribute (JSON).'
)
}
if (!params2.properties || !Array.isArray(params2.properties)) {
throw new Error('Invalid properties array for your JSON data.')
}
params2.properties = params2.properties.map(function (property2) {
return {
field:
_typeof2(property2) === 'object'
? property2.field
: property2,
displayName:
_typeof2(property2) === 'object'
? property2.displayName
: property2,
columnSize:
_typeof2(property2) === 'object' && property2.columnSize
? property2.columnSize + ';'
: 100 / params2.properties.length + '%;',
}
})
params2.printableElement = document.createElement('div')
if (params2.header) {
Object(_functions__WEBPACK_IMPORTED_MODULE_0__['addHeader'])(
params2.printableElement,
params2
)
}
params2.printableElement.innerHTML += jsonToHTML(params2)
_print__WEBPACK_IMPORTED_MODULE_1__['default'].send(
params2,
printFrame
)
},
}
function jsonToHTML(params2) {
var data2 = params2.printable
var properties = params2.properties
var htmlData =
''
if (params2.repeatTableHeader) {
htmlData += ''
}
htmlData += ''
for (var a2 = 0; a2 < properties.length; a2++) {
htmlData +=
'| ' +
Object(
_functions__WEBPACK_IMPORTED_MODULE_0__['capitalizePrint']
)(properties[a2].displayName) +
' | '
}
htmlData += '
'
if (params2.repeatTableHeader) {
htmlData += ''
}
htmlData += ''
for (var i2 = 0; i2 < data2.length; i2++) {
htmlData += ''
for (var n2 = 0; n2 < properties.length; n2++) {
var stringData = data2[i2]
var property2 = properties[n2].field.split('.')
if (property2.length > 1) {
for (var p2 = 0; p2 < property2.length; p2++) {
stringData = stringData[property2[p2]]
}
} else {
stringData = stringData[properties[n2].field]
}
htmlData +=
'| ' +
stringData +
' | '
}
htmlData += '
'
}
htmlData += '
'
return htmlData
}
},
'./src/js/modal.js': function (
module3,
__webpack_exports__,
__webpack_require__2
) {
__webpack_require__2.r(__webpack_exports__)
var Modal = {
show: function show(params2) {
var modalStyle =
'font-family:sans-serif; display:table; text-align:center; font-weight:300; font-size:30px; left:0; top:0;position:fixed; z-index: 9990;color: #0460B5; width: 100%; height: 100%; background-color:rgba(255,255,255,.9);transition: opacity .3s ease;'
var printModal = document.createElement('div')
printModal.setAttribute('style', modalStyle)
printModal.setAttribute('id', 'printJS-Modal')
var contentDiv = document.createElement('div')
contentDiv.setAttribute(
'style',
'display:table-cell; vertical-align:middle; padding-bottom:100px;'
)
var closeButton = document.createElement('div')
closeButton.setAttribute('class', 'printClose')
closeButton.setAttribute('id', 'printClose')
contentDiv.appendChild(closeButton)
var spinner = document.createElement('span')
spinner.setAttribute('class', 'printSpinner')
contentDiv.appendChild(spinner)
var messageNode = document.createTextNode(params2.modalMessage)
contentDiv.appendChild(messageNode)
printModal.appendChild(contentDiv)
document.getElementsByTagName('body')[0].appendChild(printModal)
document
.getElementById('printClose')
.addEventListener('click', function () {
Modal.close()
})
},
close: function close2() {
var printModal = document.getElementById('printJS-Modal')
if (printModal) {
printModal.parentNode.removeChild(printModal)
}
},
}
__webpack_exports__['default'] = Modal
},
'./src/js/pdf.js': function (
module3,
__webpack_exports__,
__webpack_require__2
) {
__webpack_require__2.r(__webpack_exports__)
var _print__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__2('./src/js/print.js')
var _functions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__2(
'./src/js/functions.js'
)
__webpack_exports__['default'] = {
print: function print2(params2, printFrame) {
if (params2.base64) {
var bytesArray = Uint8Array.from(
atob(params2.printable),
function (c2) {
return c2.charCodeAt(0)
}
)
createBlobAndPrint(params2, printFrame, bytesArray)
return
}
params2.printable = /^(blob|http|\/\/)/i.test(params2.printable)
? params2.printable
: window.location.origin +
(params2.printable.charAt(0) !== '/'
? '/' + params2.printable
: params2.printable)
var req = new window.XMLHttpRequest()
req.responseType = 'arraybuffer'
req.addEventListener('error', function () {
Object(_functions__WEBPACK_IMPORTED_MODULE_1__['cleanUp'])(
params2
)
params2.onError(req.statusText, req)
})
req.addEventListener('load', function () {
if ([200, 201].indexOf(req.status) === -1) {
Object(_functions__WEBPACK_IMPORTED_MODULE_1__['cleanUp'])(
params2
)
params2.onError(req.statusText, req)
return
}
createBlobAndPrint(params2, printFrame, req.response)
})
req.open('GET', params2.printable, true)
req.send()
},
}
function createBlobAndPrint(params2, printFrame, data2) {
var localPdf = new window.Blob([data2], {
type: 'application/pdf',
})
localPdf = window.URL.createObjectURL(localPdf)
printFrame.setAttribute('src', localPdf)
_print__WEBPACK_IMPORTED_MODULE_0__['default'].send(
params2,
printFrame
)
}
},
'./src/js/print.js': function (
module3,
__webpack_exports__,
__webpack_require__2
) {
__webpack_require__2.r(__webpack_exports__)
var _browser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__2(
'./src/js/browser.js'
)
var _functions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__2(
'./src/js/functions.js'
)
var Print = {
send: function send(params2, printFrame) {
document.getElementsByTagName('body')[0].appendChild(printFrame)
var iframeElement = document.getElementById(params2.frameId)
iframeElement.onload = function () {
if (params2.type === 'pdf') {
if (
_browser__WEBPACK_IMPORTED_MODULE_0__['default'].isFirefox()
) {
setTimeout(function () {
return performPrint(iframeElement, params2)
}, 1e3)
} else {
performPrint(iframeElement, params2)
}
return
}
var printDocument =
iframeElement.contentWindow || iframeElement.contentDocument
if (printDocument.document) printDocument = printDocument.document
printDocument.body.appendChild(params2.printableElement)
if (params2.type !== 'pdf' && params2.style) {
var style2 = document.createElement('style')
style2.innerHTML = params2.style
printDocument.head.appendChild(style2)
}
var images = printDocument.getElementsByTagName('img')
if (images.length > 0) {
loadIframeImages(Array.from(images)).then(function () {
return performPrint(iframeElement, params2)
})
} else {
performPrint(iframeElement, params2)
}
}
},
}
function performPrint(iframeElement, params2) {
try {
iframeElement.focus()
if (
_browser__WEBPACK_IMPORTED_MODULE_0__['default'].isEdge() ||
_browser__WEBPACK_IMPORTED_MODULE_0__['default'].isIE()
) {
try {
iframeElement.contentWindow.document.execCommand(
'print',
false,
null
)
} catch (e2) {
iframeElement.contentWindow.print()
}
} else {
iframeElement.contentWindow.print()
}
} catch (error2) {
params2.onError(error2)
} finally {
if (_browser__WEBPACK_IMPORTED_MODULE_0__['default'].isFirefox()) {
iframeElement.style.visibility = 'hidden'
iframeElement.style.left = '-1px'
}
Object(_functions__WEBPACK_IMPORTED_MODULE_1__['cleanUp'])(params2)
}
}
function loadIframeImages(images) {
var promises = images.map(function (image2) {
if (image2.src && image2.src !== window.location.href) {
return loadIframeImage(image2)
}
})
return Promise.all(promises)
}
function loadIframeImage(image2) {
return new Promise(function (resolve2) {
var pollImage = function pollImage2() {
!image2 ||
typeof image2.naturalWidth === 'undefined' ||
image2.naturalWidth === 0 ||
!image2.complete
? setTimeout(pollImage2, 500)
: resolve2()
}
pollImage()
})
}
__webpack_exports__['default'] = Print
},
'./src/js/raw-html.js': function (
module3,
__webpack_exports__,
__webpack_require__2
) {
__webpack_require__2.r(__webpack_exports__)
var _print__WEBPACK_IMPORTED_MODULE_0__ =
__webpack_require__2('./src/js/print.js')
__webpack_exports__['default'] = {
print: function print2(params2, printFrame) {
params2.printableElement = document.createElement('div')
params2.printableElement.setAttribute('style', 'width:100%')
params2.printableElement.innerHTML = params2.printable
_print__WEBPACK_IMPORTED_MODULE_0__['default'].send(
params2,
printFrame
)
},
}
},
'./src/sass/index.scss': function (
module3,
exports3,
__webpack_require__2
) {},
0: function (module3, exports3, __webpack_require__2) {
module3.exports = __webpack_require__2('./src/index.js')
},
})['default']
})
})(print$1)
var printJS = /* @__PURE__ */ getDefaultExportFromCjs(print$1.exports)
const electron = window.electron
function getImg(element) {
return new Promise((resolve2, reject2) => {
toPng(element)
.then(function (canvas) {
const imageUrl = canvas
const bufferData = base64ToUint8Array(imageUrl)
resolve2({
imageUrl,
bufferData,
})
})
.catch((err) => {
reject2(err)
})
})
}
function getImg1(
element,
canvasOpts = {
dpi: 600,
useCORS: true,
allowTaint: false,
tainttest: true,
logging: false,
}
) {
return new Promise((resolve2, reject2) => {
html2canvas(element, canvasOpts)
.then(function (canvas) {
const imageUrl = canvas.toDataURL('image/png')
const bufferData = base64ToUint8Array(imageUrl)
resolve2({
imageUrl,
bufferData,
})
})
.catch((err) => {
reject2(err)
})
})
}
let isPdf = false
function exportPdf(
element,
filename,
filePath = null,
pdfOpts = {
orientation: 'p',
unit: 'mm',
format: 'A4',
}
) {
if (isPdf) return
return new Promise((resolve2, reject2) => {
isPdf = true
toCanvas(element, { quality: 1 })
.then(function (canvas) {
let pdf = new E$1(pdfOpts)
let ctx = canvas.getContext('2d')
if (!ctx) {
return
}
const w2 = pdfOpts.orientation?.match(/^p/) ? 'w' : 'h'
const h2 = pdfOpts.orientation?.match(/^p/) ? 'h' : 'w'
let aw = lodash$2.exports.isArray(pdfOpts.format)
? pdfOpts.format[0]
: paperSize[String(pdfOpts.format)][w2]
let ah = lodash$2.exports.isArray(pdfOpts.format)
? pdfOpts.format[1]
: paperSize[String(pdfOpts.format)][h2]
let imgHeight = Math.floor((ah * canvas.width) / aw)
let renderedHeight = 0
while (renderedHeight < canvas.height) {
let page2 = document.createElement('canvas')
page2.width = canvas.width
page2.height = Math.min(imgHeight, canvas.height - renderedHeight)
page2
.getContext('2d')
?.putImageData(
ctx.getImageData(
0,
renderedHeight,
canvas.width,
Math.min(imgHeight, canvas.height - renderedHeight)
),
0,
0
)
pdf.addImage(
page2.toDataURL('image/jpeg', 1),
'JPEG',
0,
0,
aw,
Math.min(ah, (aw * page2.height) / page2.width)
)
renderedHeight += imgHeight
if (renderedHeight < canvas.height) {
pdf.addPage()
}
}
if (filePath && window.electron) {
let rawdata = pdf.output('arraybuffer')
specifiedDownload(filePath, filename, 'pdf', rawdata)
} else {
pdf.save(filename)
}
isPdf = false
resolve2(pdf)
})
.catch((err) => {
isPdf = false
reject2(err)
})
})
}
let isPrint = false
function print(printable, type4 = 'html', targetStyles = ['*']) {
if (isPrint) return
return new Promise((resolve2, reject2) => {
isPrint = true
let focuser = setInterval(
() => window.dispatchEvent(new Event('focus')),
500
)
printJS({
printable,
type: type4,
targetStyles,
onError: (err) => {
isPrint = false
reject2(err)
},
onLoadingEnd: () => {},
onPrintDialogClose: () => {
clearInterval(focuser)
isPrint = false
resolve2(true)
},
})
})
}
function download(url2, filename, suffix2) {
const aLink = document.createElement('a')
aLink.style.display = 'none'
aLink.href = url2
aLink.download = `${filename}.${suffix2}`
document.body.appendChild(aLink)
aLink.click()
document.body.removeChild(aLink)
}
function specifiedDownload(path, filename, suffix2, rawdata) {
if (!electron) return ''
const fs = require('fs')
let buffer = new Buffer(rawdata)
const url2 = `${path}/${filename}.${suffix2}`
fs.writeFile(url2, buffer, function (e2) {
if (e2) throw e2
ElMessage({
message: `${filename}.${suffix2}\u6307\u5B9A\u8DEF\u5F84\u5BFC\u51FA\u6210\u529F`,
type: 'success',
customClass: 'cms-el-message el-message--success',
})
})
}
function base64toFile(dataurl, filename = 'file') {
let mime = dataurl.split(',')[0].split(':')[1].split(';')[0]
let suffix2 = mime.split('/')[1]
let bstr = window.atob(dataurl.split(',')[1])
let n2 = bstr.length
let u8arr = new Uint8Array(n2)
while (n2--) {
u8arr[n2] = bstr.charCodeAt(n2)
}
let file2 = new File([u8arr], `${filename}.${suffix2}`, {
type: mime,
})
return file2
}
function base64ToUint8Array(base64String) {
const rawData = window.atob(base64String.split(',')[1])
const outputArray = new Uint8Array(rawData.length)
for (let i2 = 0; i2 < rawData.length; ++i2) {
outputArray[i2] = rawData.charCodeAt(i2)
}
return outputArray
}
const controllerState = reactive({})
const ControllerEventType = {
UNION_CHART: 'UNION_CHART',
UN_UNION_CHART: 'UN_UNION_CHART',
CHART_DATA: 'CHART_DATA',
UNION_FILTER: 'UNION_FILTER',
UN_UNION_FILTER: 'UN_UNION_FILTER',
DESTROY_CONTROLLER: 'DESTROY_CONTROLLER',
FILTER_DATA: 'FILTER_DATA',
CONTROLLER_STATE_CHANGED: 'CONTROLLER_STATE_CHANGED',
}
function emit(eventType, detail) {
dispatchEvent(
new CustomEvent(eventType, {
detail,
})
)
}
function on$1(eventType, cb) {
useEventListener(window, eventType, (e2) => {
cb(e2.detail)
})
}
on$1(ControllerEventType.UNION_CHART, function (detail) {
controllerState[detail.controllerId] = detail
})
on$1(ControllerEventType.UN_UNION_CHART, function (detail) {
delete controllerState[detail.controllerId]
})
on$1(ControllerEventType.UNION_FILTER, function (detail) {
let controllerDetail = controllerState[detail.controllerId]
if (!controllerDetail) {
controllerDetail = {
isFilter: true,
controllerId: detail.controllerId,
relativeList: detail.relativeList || [],
chartIds: [detail.chartId],
}
} else {
if (detail.relativeList) {
controllerDetail.relativeList = controllerDetail.relativeList.concat(
detail.relativeList
)
}
if (detail.chartId) {
controllerDetail.chartIds = controllerDetail.chartIds.concat([
detail.chartId,
])
}
}
controllerState[detail.controllerId] = controllerDetail
})
on$1(ControllerEventType.UN_UNION_FILTER, function (detail) {
let controllerDetail = controllerState[detail.prevControllerId]
if (controllerDetail) {
controllerDetail.relativeList = controllerDetail.relativeList.filter(
(item2) => item2.chartId !== detail.removeChartId
)
controllerDetail.chartIds = controllerDetail.chartIds.filter(
(item2) => item2 !== detail.removeChartId
)
}
})
on$1(ControllerEventType.DESTROY_CONTROLLER, function (detail) {
delete controllerState[detail.controllerId]
})
function getControllerDetailListByChartId(chartId) {
const list2 = []
for (const controllerId in controllerState) {
const controllerDetail = controllerState[controllerId]
if (controllerDetail.isFilter) continue
for (const item2 of controllerDetail.relativeList) {
if (item2.chartId === chartId) {
list2.push(controllerDetail)
}
}
}
return list2
}
watchDebounced(
controllerState,
(val2) => {
emit(ControllerEventType.CONTROLLER_STATE_CHANGED, val2)
},
{ debounce: 500, maxWait: 1e3 }
)
window.controllerState = controllerState
const methodList = {
0: '\u6C42\u548C',
1: '\u5E73\u5747\u503C',
2: '\u6700\u5C0F\u503C',
3: '\u6700\u5927\u503C',
4: '\u8BA1\u6570',
5: '\u53BB\u91CD\u8BA1\u6570',
}
const exportExcelIcon =
'path://M467.968 216.064L382.976 343.04l-12.8 25.6-14.336-25.088c-1.024-2.048-2.56-3.584-4.096-5.632l-0.512-0.512-87.04-121.344H206.848l137.728 178.688-123.392 176.128h54.784l76.8-123.904 0.512-1.024c1.024-1.536 2.048-2.56 3.072-4.096l14.848-20.992 12.8 26.112c7.68 11.776 38.4 61.44 70.656 113.664l5.632 9.728h57.344l-122.88-178.176 130.56-176.128H467.968zM781.824 185.344c-10.24 0-18.944 8.192-18.944 18.944 0 10.24 8.192 18.944 18.944 18.944h89.6c10.24 0 18.944-8.192 18.944-18.944 0-10.24-8.192-18.944-18.944-18.944h-89.6zM781.824 370.176c-10.24 0-18.944 8.192-18.944 18.944s8.192 18.944 18.944 18.944h89.6c5.12 0 9.728-2.048 13.312-5.632s5.632-8.192 5.632-13.312c0-10.24-8.192-18.944-18.944-18.944h-89.6zM781.824 544.768c-10.24 0-18.944 8.192-18.944 18.944s8.192 18.944 18.944 18.944h89.6c5.12 0 9.728-2.048 13.312-5.632s5.632-8.192 5.632-13.312c0-10.24-8.192-18.944-18.944-18.944h-89.6zM634.368 88.064H97.28c-22.528 0-40.96 18.432-40.96 40.96V657.92c0 22.528 18.432 40.96 40.96 40.96h537.088c22.528 0 40.96-18.432 40.96-40.96v-528.896c0-22.528-18.432-40.96-40.96-40.96zM97.28 679.424c-11.776 0-20.992-9.728-20.992-20.992v-528.896c0-11.776 9.728-20.992 20.992-20.992h537.088c11.776 0 20.992 9.728 20.992 20.992V657.92c0 11.776-9.728 20.992-20.992 20.992H97.28zM916.992 840.192H323.584c-28.16 0-50.688-22.528-50.688-50.688v-90.624h20.48V789.504c0 16.384 13.312 30.208 30.208 30.208H916.48c16.384 0 30.208-13.312 30.208-30.208v-811.008c0-16.384-13.312-30.208-30.208-30.208H323.584c-16.384 0-30.208 13.312-30.208 30.208v109.568h-20.48v-109.568c0-28.16 22.528-50.688 50.688-50.688H916.48c28.16 0 50.688 22.528 50.688 50.688V789.504c0 27.648-22.528 50.688-50.176 50.688z'
const exportImageIcon =
'path://M512 137.728c-3.584 0-7.168 1.536-10.752 5.12l-138.24 138.24c-6.656 6.656-6.656 14.848 0 20.992 4.096 4.096 8.192 5.12 10.752 5.12s6.656-1.024 10.24-4.608l112.64-112.64V798.72c0 10.752 4.608 15.36 15.36 15.36s15.36-4.608 15.36-15.36v-609.28l112.64 112.64c3.072 3.072 6.656 5.12 10.752 5.12 3.584 0 7.168-1.536 10.752-5.12 6.656-6.656 6.656-14.848 0-20.992l-138.24-138.24c-3.584-3.072-7.168-5.12-11.264-5.12zM235.52-46.08c-61.44 0-107.52 46.08-107.52 107.52v322.56c0 61.44 46.08 107.52 107.52 107.52h92.16c10.752 0 15.36-4.608 15.36-15.36s-4.608-15.36-15.36-15.36H235.52c-44.544 0-76.8-32.256-76.8-76.8v-322.56c0-44.544 32.256-76.8 76.8-76.8h552.96c44.544 0 76.8 32.256 76.8 76.8v322.56c0 44.544-32.256 76.8-76.8 76.8h-92.16c-10.752 0-15.36 4.608-15.36 15.36s4.608 15.36 15.36 15.36h92.16c61.44 0 107.52-46.08 107.52-107.52v-322.56c0-61.44-46.08-107.52-107.52-107.52H235.52z'
const dateFormatList = [
{
value: 'yyyy-MM-dd HH:mm:ss',
label: 'yyyy-MM-dd HH:mm:ss',
},
{
value: 'yyyy-MM-dd HH:mm',
label: 'yyyy-MM-dd HH:mm',
},
{
value: 'yyyy-MM-dd HH',
label: 'yyyy-MM-dd HH',
},
{
value: 'yyyy-MM-dd',
label: 'yyyy-MM-dd',
},
{
value: 'yyyy-MM',
label: 'yyyy-MM',
},
{
value: 'yyyy',
label: 'yyyy',
},
{
value: 'HH:mm:ss',
label: 'HH:mm:ss',
},
{
value: 'HH:mm',
label: 'HH:mm',
},
{
value: 'HH',
label: 'HH',
},
]
const DIMENSION_LIST = [
{
id: '0',
fieldName: '\u8BB0\u5F55\u65F6\u95F4',
fieldType: 3,
aliasName: '',
sort: 0,
align: 0,
mode: 0,
timeFormat: 'yyyy-MM-dd HH:mm:ss',
},
{
id: '0',
fieldName: '\u53D8\u91CF\u540D',
fieldType: 1,
aliasName: '',
sort: 0,
align: 0,
mode: 0,
dataFormat: 0,
},
]
var DATA_TYPE = /* @__PURE__ */ ((DATA_TYPE2) => {
DATA_TYPE2[(DATA_TYPE2['AGGREGATE'] = 0)] = 'AGGREGATE'
DATA_TYPE2[(DATA_TYPE2['HISTORY'] = 1)] = 'HISTORY'
DATA_TYPE2[(DATA_TYPE2['VARIABLE'] = 2)] = 'VARIABLE'
return DATA_TYPE2
})(DATA_TYPE || {})
const tableTypeList = [
{
type: 'concise',
label: '\u7B80\u6D01',
icon: 'icon-jianjie',
color: '#90A7EB',
},
{
type: 'stripe',
label: '\u6591\u9A6C\u7EBF',
icon: 'icon-banmaxian',
color: '#8CA0D1',
},
{
type: 'border',
label: '\u7EBF\u6846',
icon: 'icon-xiankuang',
color: '#3d6eff',
},
]
const textAlignList = [
{
label: '\u5DE6\u5BF9\u9F50',
value: 'left',
},
{
label: '\u5C45\u4E2D',
value: 'center',
},
{
label: '\u53F3\u5BF9\u9F50',
value: 'right',
},
]
const pageSizeList = [
{
label: '10\u6761/\u9875',
value: 10,
},
{
label: '20\u6761/\u9875',
value: 20,
},
{
label: '30\u6761/\u9875',
value: 30,
},
{
label: '50\u6761/\u9875',
value: 50,
},
{
label: '100\u6761/\u9875',
value: 100,
},
]
const pageTypeList = [
{
label: '\u5206\u9875',
value: 'page',
},
{
label: '\u5468\u671F\u6EDA\u52A8',
value: 'cycleScroll',
},
{
label: '\u8FDE\u7EED\u6EDA\u52A8',
value: 'continuScroll',
},
]
const borderStyleList = [
{
label: '\u65E0',
src: '',
value: 'none',
},
{
label: '\u76F4\u7EBF',
src: '',
value: 'solid',
},
{
label: '\u865A\u7EBF',
src: '',
value: 'dashed',
},
{
label: '\u5706\u70B9',
src: '',
value: 'dotted',
},
]
const locationList$1 = [
{
label: '\u5E95\u90E8',
value: 'bottom',
},
{
label: '\u9876\u90E8',
value: 'top',
},
]
const calculationListEnum = {
sum: 1,
average: 2,
max: 3,
min: 4,
median: 5,
variance: 6,
deviation: 7,
hidden: 0,
}
const calculationList = [
{
label: '\u6C42\u548C',
value: 'sum',
},
{
label: '\u5E73\u5747',
value: 'average',
},
{
label: '\u6700\u5927\u503C',
value: 'max',
},
{
label: '\u6700\u5C0F\u503C',
value: 'min',
},
{
label: '\u4E2D\u4F4D\u6570',
value: 'median',
},
{
label: '\u65B9\u5DEE',
value: 'variance',
},
{
label: '\u6807\u51C6\u5DEE',
value: 'deviation',
},
{
label: '\u9690\u85CF',
value: 'hidden',
},
]
const totalRangeList = [
{
label: '\u67E5\u8BE2\u5408\u8BA1',
value: 'total',
},
{
label: '\u5206\u9875\u5408\u8BA1',
value: 'paging',
},
]
const cycleList = (key2, obj1, obj2) => {
const map2 = obj2.reduce((t3, c2, ci) => {
t3[c2.prop] = ci
return t3
}, {})
for (let i2 = 0; i2 < obj1.length; i2++) {
let item2 = obj1[i2]
let num2 = 0
for (let o2 = 0; o2 < obj2.length; o2++) {
if (item2[key2] == obj2[o2][key2]) {
num2++
obj1[i2] = obj2[o2]
break
}
}
if (num2 <= 0) {
if (item2.children) {
cycleList(key2, item2.children, obj2)
} else {
obj1.splice(i2--, 1)
}
}
}
obj1.sort((a2, b2) => {
return map2[a2.prop] - map2[b2.prop]
})
}
const setColumnList = (obj1, obj2) => {
if (obj1.length && obj2.length) {
cycleList('prop', obj1, obj2)
for (let o2 = 0; o2 < obj2.length; o2++) {
let obj2Item = obj2[o2]
let num2 = 0
const cycleObj1 = (obj2Item2, list2) => {
for (let o1 = 0; o1 < list2.length; o1++) {
let item2 = list2[o1]
if (item2.id == obj2Item2.id && item2.prop == obj2Item2.prop) {
num2++
break
} else if (item2.children) {
cycleObj1(obj2Item2, item2.children)
}
}
}
cycleObj1(obj2Item, obj1)
if (num2 <= 0) {
obj1.push(obj2[o2])
}
}
} else {
obj2.forEach((item2) => {
obj1.push(item2)
})
}
obj1.sort((a2, b2) => {
if (a2.type > b2.type) {
return 1
} else if (a2.type < b2.type) {
return -1
} else {
return 0
}
})
}
function isNumber$e(val2) {
var regPos = /^[0-9]+.?[0-9]*/
if (regPos.test(val2)) {
return true
} else {
return false
}
}
const getMappingData = (list2) => {
let mapKey = {}
let mapName = {}
list2.forEach((item2) => {
let method4 = item2.method
let id2 = item2.id
let name2 = item2.name
let aliasName = item2.aliasName
let fieldName = item2.fieldName
if (method4 != null && Number(method4) >= 0) {
mapKey[id2 + '-' + method4] = name2
mapName[id2 + '-' + method4] =
aliasName || fieldName + `(${methodList[method4]})`
} else {
mapKey[id2] = name2
mapName[id2] = aliasName || fieldName
}
})
return { mapKey, mapName }
}
const getdefaultMappingData = (dimissions, indexes) => {
let mapKey = {}
let mapName = {}
dimissions.forEach((item2) => {
let id2 = item2.id
let aliasName = item2.aliasName
let fieldName = item2.fieldName
mapKey[id2] = fieldName
mapName[id2] = aliasName || fieldName
})
indexes.forEach((item2) => {
let id2 = item2.id
let mode2 = item2.mode
let aliasName = item2.aliasName
let fieldName = item2.fieldName
if (mode2 != null && Number(mode2) >= 0) {
mapKey[id2 + '-' + mode2] = fieldName
mapName[id2 + '-' + mode2] =
aliasName || fieldName + `(${methodList[mode2]})`
}
})
return { mapKey, mapName }
}
const whereJsonMap = reactive({})
function fetchDataSetFieldList(dataSetId, dataSetType) {
return new Promise((resolve2, reject2) => {
if (dataSetType == 2) {
request({
url: `/api/v1/dataconfig/filingtable/${dataSetId}/headers`,
method: 'get',
silent: true,
})
.then((res) => {
resolve2(res)
})
.catch((err) => {
reject2(err)
})
}
if (dataSetType == 3) {
request({
url: `/api/v1/dataconfig/aggregatetable/${dataSetId}/headers`,
method: 'get',
silent: true,
})
.then((res) => {
resolve2(res)
})
.catch((err) => {
reject2(err)
})
}
})
}
function uniqueFun(arr, key2) {
const res = /* @__PURE__ */ new Map()
return arr.filter((item2) => !res.has(item2[key2]) && res.set(item2[key2], 1))
}
const isChartPie = (node2) => {
if (node2.is && /^ChartPie/.test(node2.is)) return true
return false
}
const useCacheCharts = (node2) => {
if (node2.is && /^ChartBar/.test(node2.is)) return true
if (node2.is && /^ChartLine/.test(node2.is)) return true
return false
}
const isUseCache = (node2) => {
const dataConfig = node2.props.dataConfig
if (
dataConfig?.dataSetId &&
useCacheCharts(node2) &&
dataConfig?.dataSetType == '2' &&
dataConfig?.useCache
)
return true
return false
}
const controlList = {
MaxThen: 0,
MaxOrEqualsThen: 1,
MinThen: 2,
MinOrEqualsThen: 3,
Equals: 4,
NotEquals: 5,
Like: 6,
In: 7,
NotIn: 8,
Xor: 9,
Between: 10,
}
async function fetchData(
node2,
nodeId,
dataSetId,
dimissions,
indexes,
whereJson2,
limit2 = null,
pageSize = null,
pageIndex2 = null,
total2 = false
) {
let filterControllerList = getControllerDetailListByChartId(nodeId)
let filters = []
filterControllerList.forEach((item2) => {
let relativeList = item2.relativeList.filter((item1) => {
return item1.chartId == nodeId && item1.field
})
if (relativeList[0] && relativeList[0].field)
filters.push({
control: controlList[item2.type],
combine: 0,
values:
item2.value?.constructor === Array ? item2.value : [item2.value],
fieldName: relativeList[0].field,
innerFilters: [],
})
})
const noAggregation = () => {
if (isUseCache(node2)) return true
if (node2.is == 'ChartTable') return false
if (node2.is === 'ChartCard') return true
if (dimissionsList.length <= 0) return true
return false
}
const dimissionsList = dimissions
.filter((d3) => d3.id)
.map((item2) => {
return {
aliasName: item2.aliasName,
fieldName: item2.id,
sort: item2.sort || 0,
timeFormat: item2.timeFormat,
}
})
const noDimensions = () => {
if (
node2.props.dataConfig?.dataType === 1 &&
node2.props.dataConfig?.isVariableName
)
return true
if (node2.is === 'ChartTable') return false
if (node2.is === 'ChartCard') return true
if (dimissionsList.length <= 0) return true
return false
}
let searchData = {
dataSetId,
dimensions: dimissionsList,
measures: indexes
.filter((i2) => i2.id)
.map((item2) => {
let mode2 = node2.props.dataConfig?.dataType === 2 ? 4 : item2.mode
return {
aliasName: item2.aliasName,
fieldName: item2.id + '',
mode: parseFloat(mode2),
dataFormat: item2.dataFormat || 0,
sort: item2.sort || 0,
mergeType:
node2.props.tableConfig.totalRowOption.totalRange === 'total' ||
node2.props.tableConfig.tableBodyOption.pageType !== 'page'
? calculationListEnum[
node2.props.tableConfig.tableOption.columnOptionList.find(
(e2) => e2.prop === item2.id + '-' + mode2
)?.calculation
]
: 0,
}
}),
filters: isUseCache(node2) ? null : filters,
total: total2,
pageSize,
pageIndex: pageIndex2,
limit: limit2,
noAggregation: noAggregation(),
noDimensions: noDimensions(),
whereJson: whereJson2,
}
return new Promise((resolve2, reject2) => {
if (isUseCache(node2)) {
searchData.measures.push({
fieldName: '_id',
mode: -1,
dataFormat: 0,
sort: 0,
})
request({
url: `/api/v1/data/getcache`,
method: 'post',
data: searchData,
silent: true,
})
.then((res) => {
const list2 = res.values ? res.values : []
const mapping = res.mapping || []
const total22 = res.total
const mergeResults = res.mergeResults
resolve2({ list: list2, mapping, total: total22, mergeResults })
})
.catch((err) => {
reject2(err)
})
} else {
request({
url: `/api/v1/data/aggregate`,
method: 'post',
data: searchData,
silent: true,
})
.then((res) => {
if (res.errorMsg) {
resolve2(res)
} else {
const list2 = res.values || []
const mapping = res.mapping || []
const total22 = res.total
const mergeResults = res.mergeResults
resolve2({ list: list2, mapping, total: total22, mergeResults })
}
})
.catch((err) => {
reject2(err)
})
}
})
}
async function exportChartsExcel(
filename = '\u56FE\u8868',
charts2 = [],
exportTable = false,
exportControl = false,
exportImage = false,
path = ''
) {
let chartsList = []
const SUFFIX = 'png'
let param = new FormData()
for (let i2 = 0; i2 < charts2.length; i2++) {
let c2 = charts2[i2]
let nodeId = c2.id
let chartNode = CanvasNode$1.getById(nodeId)
let props2 = chartNode?.props
let dataSetId = props2?.dataConfig.dataSetId || 'history'
let dimissions = props2?.dataConfig.dimissions
let indexes = props2?.dataConfig.indexes.filter((i22) => i22.id)
let name2 =
c2.sheetName ?? chartNode?.name + '_' + Math.random().toString().slice(-4)
if (
chartNode === void 0 ||
(!indexes.length && chartNode.is?.includes('ChartTable'))
)
break
if (isUseCache(chartNode)) indexes = uniqueFun(indexes, 'id')
let filterControllerList = getControllerDetailListByChartId(nodeId)
let filters = []
let controlStrings = []
let whereJson2 = void 0
let historyTimeRanges = void 0
const initFilter = () => {
if (whereJsonMap[nodeId]?.label) {
whereJson2 = whereJsonMap[nodeId]?.value
if (exportControl) controlStrings.push([whereJsonMap[nodeId].label])
}
filterControllerList.forEach((item2) => {
let relativeList = item2.relativeList.filter((item1) => {
return item1.chartId == nodeId && item1.field
})[0]
if (relativeList) {
let value2 =
item2.value?.constructor === Array ? item2.value : [item2.value]
filters.push({
control: controlList[item2.type],
combine: 0,
values: value2,
fieldName: relativeList.field,
innerFilters: [],
})
if (exportControl) {
if (item2.type == 'Between') {
controlStrings.push([relativeList.field, value2.join('-')])
} else {
controlStrings.push([relativeList.field, value2.join(',')])
}
}
}
})
}
let excelData = void 0
if (c2.is === 'ChartLineTrend') {
let chartProps = CanvasNode$1.getById(c2.id)?.props
if (c2.isRealtime || !chartProps?.archivingDataTimeRange.length) {
if (chartProps?.excelData) {
let cloneExcelData = lodash$2.exports.cloneDeep(chartProps.excelData)
cloneExcelData.rows.forEach((item2) => {
item2['\u8BB0\u5F55\u65F6\u95F4'] = dayjs(
item2['\u8BB0\u5F55\u65F6\u95F4']
).format('YYYY-MM-DD HH:mm:ss')
})
excelData = cloneExcelData
}
if (
chartProps?.realTimeControlString &&
chartProps.realTimeControlString.length
) {
controlStrings.push(chartProps.realTimeControlString)
}
} else {
initFilter()
historyTimeRanges = chartProps?.archivingDataTimeRange || []
}
} else {
initFilter()
}
let searchData = {
sheetName: name2,
dataSetId,
dimensions: dimissions
.filter((d3) => d3.id)
.map((item2) => {
return {
fieldName: dataSetId === 'history' ? item2.fieldName : item2.id,
sort: item2.sort || 0,
aliasName: Language$1.t(item2.aliasName),
}
}),
measures: indexes.map((item2) => {
return {
fieldName: '' + item2.id,
aliasName: Language$1.t(item2.aliasName),
mode: parseFloat(item2.mode),
dataFormat: item2.dataFormat || 0,
sort: item2.sort || 0,
}
}),
filters,
total: false,
pageSize: null,
pageIndex: null,
limit: isChartPie(chartNode)
? props2?.pieConfig.dataConfig.runningLimit
: props2?.dataConfig.runningLimit,
exportTable,
exportControl,
exportImage,
controlStrings,
isCache: isUseCache(chartNode),
insertImages: [`${nodeId}.${SUFFIX}`],
whereJson: whereJson2,
noDimensions: props2?.dataConfig.isVariableName ? true : false,
historyTimeRanges,
excelData,
}
chartsList.push(searchData)
}
param.append('request', JSON.stringify(chartsList))
if (exportImage) {
for (let i2 = 0; i2 < charts2.length; i2++) {
let id2 = charts2[i2].id
let chartDom = document.getElementById(id2)
if (chartDom) {
chartDom.classList.add('hiddenAllShadow')
let { imageUrl } = await getImg1(chartDom)
let file2 = base64toFile(imageUrl, id2)
param.append(`${id2}.${SUFFIX}`, file2)
chartDom.classList.remove('hiddenAllShadow')
}
}
}
const electron2 = window.electron
return new Promise((resolve2, reject2) => {
request({
url: `/api/v1/data/excel?name=${filename || '\u56FE\u8868'}&path=${
electron2 ? path : ''
}`,
method: 'post',
data: param,
responseType: 'arraybuffer',
silent: true,
})
.then((res) => {
let name2 = filename + '_' + dayjs(new Date()).format('YYYYMMDDHHmmss')
if (path && electron2) {
resolve2({ data: res, path })
ElMessage({
message: `${name2}.xlsx\u6307\u5B9A\u8DEF\u5F84\u5BFC\u51FA\u6210\u529F`,
type: 'success',
customClass: 'cms-el-message el-message--success',
})
} else {
let blob = new Blob([res], {
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
})
let reader = new FileReader()
reader.readAsDataURL(blob)
reader.onload = function (e2) {
download(String(e2.target?.result), name2, 'xlsx')
resolve2({ data: res, path: '' })
}
}
})
.catch((err) => {
console.warn('\u5BFC\u51FA\u5931\u8D25\u62C9' + err)
reject2(err)
})
})
}
function judgeDivisor(m2, n2) {
let num2 = {}
var i2 = 0
m2 = m2 % n2
while (m2 != 0 && !(m2 in num2)) {
num2[m2] = i2++
m2 = (m2 * 10) % n2
}
return m2 == 0
}
const end$1 = (max3, min3, splitNumber) => {
let length2 = 0
if (String(max3).split('.').length > 1) {
length2 = String(max3).split('.')[1].length
}
length2 += String(splitNumber).length
let data1 = max3 - min3
let data2 = data1 / splitNumber
let newNum
if (judgeDivisor(data1, splitNumber)) {
newNum = data2
} else {
newNum = data2 + 1 / Math.pow(10, length2)
}
if (newNum >= 0) {
return Math.ceil(newNum)
} else {
return Math.floor(newNum)
}
}
const getarea = (num2, type4, zf) => {
num2 = Math.abs(num2)
if (num2 == 0) {
return 0
}
let splitnum = 1
let daitnum = String(num2)
if (daitnum.split('.')[0].length > 1) {
let nownum = String(daitnum.split('.')[0]).length
for (let i2 = 0; i2 <= nownum; i2++) {
splitnum = splitnum * 10
}
}
num2 = num2 / splitnum
let numlength = String(num2)
let endnum = ''
let breaknum = ''
for (let i2 = 0; i2 < numlength.length; i2++) {
endnum += numlength[i2]
if (numlength[i2] !== '.') {
if (Number(numlength[i2]) > 0) {
breaknum = Number(numlength[i2])
endnum = Number(endnum)
break
}
}
}
endnum = Number(endnum)
breaknum = Number(breaknum)
let newNum
if (type4 == 'min') {
if ((endnum * zf - endnum / breaknum) * splitnum == 0) {
newNum = (endnum * zf - endnum / breaknum / 10) * splitnum
} else {
newNum = (endnum * zf - endnum / breaknum) * splitnum
}
} else {
newNum = (endnum * zf + endnum / breaknum) * splitnum
}
if (newNum >= 0) {
return Math.ceil(newNum)
} else {
return Math.floor(newNum)
}
}
const transformHistoryData = (res, props2) => {
let { list: list2, mapping } = res
if (props2.dataConfig.dataType === 1 && props2.dataConfig.isVariableName) {
let arr = []
let indexes = props2.dataConfig.indexes
let dimensions = props2.dataConfig.dimissions
list2.map((item2) => {
delete item2?.['\u8BB0\u5F55\u65F6\u95F4']
dimensions.forEach((i2) => {
i2.fieldName && delete item2?.[i2.fieldName]
i2.aliasName && delete item2?.[i2.aliasName]
})
let keys3 = Object.keys(item2)
for (const key2 of keys3) {
let obj = {}
keys3.forEach((i2) => {
let index2 = indexes.find(
(item22) => item22.fieldName + '(' + item22.mode + ')' === i2
)
obj[index2.aliasName || i2] = i2 === key2 ? item2[key2] : null
})
arr.push(obj)
}
})
list2 = arr
}
return { list: list2, mapping }
}
class Widget {
is = ''
name = ''
authorizationRequired = false
category
icon
permission
canvasView
settingsView
props
styleConfig = {}
onCreate
constructor(object4 = {}) {
const widget = Widget.store[object4.is] || this
Object.assign(widget, object4)
Widget.store[widget.is] = widget
return widget
}
static store = {}
static get list() {
const store2 = Widget.store
const array4 = []
for (const key2 in store2) {
array4.push(store2[key2])
}
return array4
}
static async loadExternalWidgets(externalWidgetsAPI) {
try {
const urlList = await request(`${externalWidgetsAPI}`)
const promises = []
for (const url2 of urlList) {
const promise2 = Widget.importExternalWidgets(baseURL + url2)
promises.push(promise2)
}
await Promise.all(promises)
} catch (error2) {
setTimeout(() => {
throw error2
})
}
}
static async importExternalWidgets(url2) {
try {
window.Vue = Vue
window.ElementPlus = ElementPlus
const externalModule = await import(
/* @vite-ignore */
`${url2}?importWidgets&t=${Date.now()}`
)
const externalExports = externalModule.default || window.__importWidgets
const widgetObjectList = [].concat(externalExports)
for (const widgetInfo of widgetObjectList) {
new Widget(widgetInfo)
}
} catch (error2) {
setTimeout(() => {
throw error2
})
}
}
static sortInfo = {
base: ['Line', 'Circle', 'Rect', 'StaticText'],
readWrite: [
'NumberShow',
'NumberInput',
'ReadWriteInput',
'SwitchButton',
'JogButton',
'ControlButton',
'SelectControl',
'RadioControl',
'CheckboxControl',
'DynamicCircle',
'DynamicText',
'DynamicImg',
'Progress',
],
chart: [
'Sheet',
'ChartBar',
'ChartBarHorizontal',
'ChartBarHorizontalStacked',
'ChartBarStacked',
'ChartCard',
'ChartLine',
'ChartLineArea',
'ChartLineAreaStacked',
'ChartPie',
'ChartPieRing',
'ChartPieRose',
'ChartTable',
'ChartLineTrend',
],
run: ['LogManage', 'PermissionManage', 'ChartLineTrendConfig'],
}
}
const params$1 = new URL(location.href).searchParams
const widgetsURL = params$1.get('widgets')
if (widgetsURL) {
await Widget.importExternalWidgets(widgetsURL)
}
var __glob_0_15 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
Widget,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
function userBehaviorAnalysis(behavior) {
const common = {
remoteTime: new Date().toISOString(),
}
const data2 = {
common,
behavior,
}
return request({
url: '/api/v1/userbehavioranalysis',
method: 'post',
data: data2,
})
}
function getPageAnalysisData() {
let globalCallBlocks = 0
let pageCallBlocks = 0
let componentCallBlocks = 0
let standardCanvasNodes = 0
let imgCanvasNodes = 0
let chartCanvasNodes = 0
let controlCanvasNodes = 0
let runningCanvasNodes = 0
const project = app.current.project
const page2 = project.current.page
const childNodes = page2.document.body.childNodes
let systemBlocks = project.blocks
let pageBlocks = page2.document.body.blocks
globalCallBlocks = calcBlocks(systemBlocks)
let componentAnalysisData = calcCanvasNodes(childNodes)
componentCallBlocks = componentAnalysisData.callBlocks
standardCanvasNodes = componentAnalysisData.standardCanvasNodes
imgCanvasNodes = componentAnalysisData.imgCanvasNodes
chartCanvasNodes = componentAnalysisData.chartCanvasNodes
controlCanvasNodes = componentAnalysisData.controlCanvasNodes
runningCanvasNodes = componentAnalysisData.runningCanvasNodes
pageCallBlocks = calcBlocks(pageBlocks)
return {
projectEvents: globalCallBlocks,
pageEvents: pageCallBlocks + componentCallBlocks,
standardComponents: standardCanvasNodes,
imgComponents: imgCanvasNodes,
chartComponents: chartCanvasNodes,
controlComponents: controlCanvasNodes,
runningComponents: runningCanvasNodes,
}
}
function calcBlocks(blocks2) {
let callBlocks = 0
blocks2.forEach((block) => {
if (block.class === OnBlock.class) {
block.children.forEach((element) => {
if (element.class === IfBlock.class) {
callBlocks += element.children.length
} else if (element.class === CallBlock.class) {
callBlocks++
}
})
}
})
return callBlocks
}
function calcCanvasNodes(childNodes) {
let callBlocks = 0
let standardCanvasNodes = 0
let imgCanvasNodes = 0
let chartCanvasNodes = 0
let controlCanvasNodes = 0
let runningCanvasNodes = 0
childNodes.forEach((node2) => {
if (!node2.is) return
if (node2.is === 'Group') {
callBlocks += calcBlocks(node2.blocks)
let {
callBlocks: ac,
standardCanvasNodes: standard,
imgCanvasNodes: imgs,
chartCanvasNodes: charts2,
} = calcCanvasNodes(node2.childNodes)
callBlocks += ac
standardCanvasNodes += standard
imgCanvasNodes += imgs
chartCanvasNodes += charts2
} else {
let category =
node2.is === 'Img' ? 'img' : Widget.store[node2.is]?.category
switch (category) {
case 'img':
imgCanvasNodes++
break
case 'chart':
chartCanvasNodes++
break
case 'controller':
controlCanvasNodes++
break
case 'run':
runningCanvasNodes++
break
default:
standardCanvasNodes++
}
callBlocks += calcBlocks(node2.blocks)
}
})
return {
callBlocks,
standardCanvasNodes,
imgCanvasNodes,
chartCanvasNodes,
controlCanvasNodes,
runningCanvasNodes,
}
}
function getPictures() {
return request({
url: `/api/v1/view/node/tree`,
method: 'get',
})
}
function addPicture(params2, copyFrom) {
return request({
url: `/api/v1/view/node?copyFrom=${copyFrom || ''}`,
method: 'post',
data: params2,
})
}
function changePicture(id2, params2) {
return request({
url: `/api/v1/view/node/${id2}`,
method: 'put',
data: params2,
})
}
function pageSort(id2, params2) {
return request({
url: `/api/v1/view/node/${id2}/sort`,
method: 'post',
data: params2,
})
}
function delPicture(id2) {
return request({
url: `/api/v1/view/node/${id2}`,
method: 'delete',
})
}
function batchDelPicture(ids) {
return request({
url: `/api/v1/view/node/range`,
method: 'delete',
data: ids,
})
}
function getPicturesContent(id2) {
return request({
url: `/api/v1/view/content/${id2}`,
method: 'get',
})
}
async function savePicturesContent(id2, params2, silent = false) {
const statistics = JSON.stringify(await getPageAnalysisData())
return request({
url: `/api/v1/view/content/${id2}`,
method: 'put',
data: {
...params2,
statistics,
},
silent,
})
}
function searchVariable(deviceId, groupId, type4, keyword) {
return request({
url: `/api/v1/variable/query`,
method: 'get',
params: { deviceId, groupId, type: type4, keyword },
silent: true,
})
}
function getAllPicture(keyword) {
return request({
url: `/api/v1/view/node`,
method: 'get',
params: { keyword },
})
}
function checkVariable(data2) {
return request({
url: `/api/v1/variable/check`,
method: 'post',
data: data2,
})
}
const TIME_THRESHOLD = 1e3
let clearLastDialogInfoTimer = null
let pageManager
class PageManager extends Base {
id = 'PageManager'
name = '\u9875\u9762\u63A7\u5236\u5668'
topPageZIndex = '99'
dialogPages = []
miniPagesId = []
currentDialogPageUUID = ''
static lastDialogInfo
constructor() {
super()
if (pageManager) {
return pageManager
}
pageManager = this
}
get currentPage() {
return this.dialogPages.filter(
(dialogPage) =>
dialogPage.dialog._props.uuid === this.currentDialogPageUUID
)[0]
}
getDialogPageById(id2) {
const dialogPages = this.dialogPages.filter(
(dialogPage) => id2 === dialogPage.dialog._props.uuid
)
if (dialogPages.length) {
return dialogPages[0].dialog
} else {
return null
}
}
removeMiniPagesById(id2) {
this.miniPagesId = this.miniPagesId.filter((page2) => page2.id !== id2)
}
removeDialogPagesById(id2) {
this.dialogPages = this.dialogPages.filter(
(dialogPage) => dialogPage.dialog._props.uuid !== id2
)
}
jumpRoute(pageId) {
setTimeout(() => {
if (this.dialogPages.length && this.currentPage) {
const currentPage2 = this.currentPage
const currentDialog = currentPage2?.dialog
currentPage2?.pageIds.push(pageId)
currentDialog._props.loadPage(pageId)
} else {
push$4({
id: pageId + '',
})
}
})
}
reloadRoute() {
if (this.currentPage) {
const pageId =
this.currentPage?.pageIds[this.currentPage?.pageIds.length - 1]
this.currentPage.dialog._props.loadPage(pageId)
} else {
reload()
}
}
backRoute() {
if (this.dialogPages.length && this.currentPage) {
const currentPage2 = this.currentPage
const currentDialog = currentPage2?.dialog
if (currentPage2?.pageIds.length > 1) {
currentPage2?.pageIds.pop()
currentDialog._props.loadPage(
currentPage2?.pageIds[currentPage2.pageIds.length - 1]
)
} else {
currentDialog._props.dialogClose()
}
} else {
back()
}
}
closeRoute() {
if (this.currentPage) {
this.currentPage.dialog._props.dialogClose()
this.removeDialogPagesById(this.currentPage.dialog._props.uuid)
} else {
this.dialogPages.forEach(({ dialog: dialogPage }) => {
dialogPage._props.dialogClose()
})
this.dialogPages = []
}
}
async alertRoute(
targetPageId,
title,
fixedSize,
width,
height,
target2,
closeBtn
) {
if (this.dialogPages.length < 3) {
if (
PageManager.lastDialogInfo?.pageId === String(targetPageId) &&
new Date().getTime() - PageManager.lastDialogInfo?.timestamp <
TIME_THRESHOLD
) {
ElMessage.warning(
Language$1._t(
'\u89E6\u53D1\u4E8B\u4EF6\u52A8\u4F5C\u6267\u884C\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u914D\u7F6E'
)
)
clearLastDialogInfoTimer = setTimeout(() => {
PageManager.lastDialogInfo = {
timestamp: 0,
pageId: '',
}
}, TIME_THRESHOLD)
} else {
const dialog = (
await Promise.resolve().then(function () {
return DialogPage
})
).default
const dialogComponent = await dialog({
id: targetPageId,
title: String(title),
fixedSize,
width,
height,
closeBtn,
operationAble: target2 !== 'dialog',
})
clearTimeout(clearLastDialogInfoTimer)
PageManager.lastDialogInfo = {
timestamp: new Date().getTime(),
pageId: String(targetPageId),
}
this.dialogPages.push({
dialog: dialogComponent,
pageIds: [targetPageId],
})
}
} else {
ElMessage.warning(
Language$1._t('\u6700\u591A\u53EA\u80FD\u6253\u5F003\u4E2A\u5F39\u7A97')
)
}
}
async exportCurrentPage(
pageInfo,
type4,
filename,
format2,
orientation,
specifiedSavePath,
timeout = 2e3
) {
exportLoading.open()
let bodyInfo = null
if (pageInfo.id) {
await getPicturesContent(pageInfo.id).then((res) => {
if (res) {
bodyInfo = JSON.parse(res.content).body
}
})
} else {
bodyInfo = {
id: pageInfo.elementId,
}
}
return new Promise((resolve2) => {
let timer2 = setTimeout(async () => {
let rootDom = document.getElementById(bodyInfo.id)
if (!rootDom) {
ElMessage.warning(
Language$1._t('\u5F53\u524D\u753B\u9762\u4E0D\u53EF\u5BFC\u51FA') +
type4
)
console.warn('!rootDom')
exportLoading.close()
return
}
let name2 = filename + '_' + dayjs(new Date()).format('YYYYMMDDHHmmss')
if (type4 == 'PDF') {
let pdfOpts = {
format: format2,
unit: 'mm',
orientation,
}
await exportPdf(rootDom, name2, specifiedSavePath, pdfOpts)
}
if (type4 == 'Image') {
const { imageUrl, bufferData } = await getImg(rootDom)
if (specifiedSavePath && window.electron) {
specifiedDownload(specifiedSavePath, name2, 'png', bufferData)
} else {
download(imageUrl, name2, 'png')
}
}
exportLoading.close()
clearTimeout(timer2)
resolve2()
}, timeout)
})
}
async printCurrentPage(pageInfo, timeout = 2e3) {
exportLoading.open(Language$1._t('\u6253\u5370\u51C6\u5907\u4E2D'))
let bodyInfo = null
if (pageInfo.id) {
await getPicturesContent(pageInfo.id).then((res) => {
if (res) {
bodyInfo = JSON.parse(res.content).body
}
})
} else {
bodyInfo = {
id: pageInfo.elementId,
}
}
return new Promise((resolve2) => {
let timer2 = setTimeout(async () => {
let rootDom = document.getElementById(bodyInfo.id)
if (!rootDom) {
ElMessage.warning(
Language$1._t('\u5F53\u524D\u753B\u9762\u4E0D\u53EF\u6253\u5370')
)
console.warn('!rootDom')
exportLoading.close()
return
}
await print(rootDom)
clearTimeout(timer2)
exportLoading.close()
resolve2()
}, timeout)
})
}
async exportChartsData(
pageComponent,
filename,
type4,
exportContent,
specifiedSavePath,
timeout = 1e3
) {
exportLoading.open()
const { page: page2, component: component2 } = pageComponent
let pageId = page2.id
let bodyInfo = null
await getPicturesContent(pageId).then((res) => {
if (res) {
bodyInfo = JSON.parse(res.content).body
}
})
return new Promise((resolve2) => {
let timer2 = setTimeout(async () => {
let rootDom = document.getElementById(bodyInfo.id)
if (!rootDom) {
ElMessage.warning(
Language$1._t(
'\u5F53\u524D\u753B\u9762\u4E0D\u53EF\u5BFC\u51FA\u5173\u8054\u56FE\u8868'
)
)
console.warn('!rootDom')
exportLoading.close()
return
}
let data2 = false
let filter2 = false
let effect2 = false
exportContent.forEach((item2) => {
if (item2.indexOf('data') >= 0) data2 = true
if (item2.indexOf('filter') >= 0) filter2 = true
if (item2.indexOf('effect') >= 0) effect2 = true
})
await exportChartsExcel(
filename,
component2,
data2,
filter2,
effect2,
specifiedSavePath
).catch((err) => {
console.warn(err)
})
exportLoading.close()
clearTimeout(timer2)
}, timeout)
resolve2()
})
}
}
var __glob_0_10 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
PageManager,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const outputTypeList = [
{
name: '\u5BFC\u51FA',
value: 'export',
},
{
name: '\u6253\u5370',
value: 'print',
},
]
const outputTargetList = [
{
name: '\u5F53\u524D\u9875\u9762',
value: 'currentPage',
},
{
name: '\u5173\u8054\u56FE\u8868',
value: 'correlationCharts',
},
]
const exportTypeList1 = [
{
name: 'PDF',
value: 'PDF',
},
{
name: '\u56FE\u7247',
value: 'Image',
},
]
const exportTypeList2 = [
{
name: 'Excel',
value: 'Excel',
},
]
const chartsExportContentList = [
{
name: '\u56FE\u8868\u6570\u636E',
value: 'data',
},
{
name: '\u7B5B\u9009\u6761\u4EF6',
value: 'filter',
},
{
name: '\u56FE\u8868\u6548\u679C',
value: 'effect',
},
]
const layoutList = [
{
name: '\u7EB5\u5411',
value: 'portrait',
},
{
name: '\u6A2A\u5411',
value: 'landscape',
},
]
const filterList = [
{
value: 'Equals',
label: '==',
},
{
value: 'NotEquals',
label: '!=',
},
{
value: 'MaxThen',
label: '>',
},
{
value: 'MinThen',
label: '<',
},
{
value: 'MaxOrEqualsThen',
label: '>=',
},
{
value: 'MinOrEqualsThen',
label: '<=',
},
{
value: 'Between',
label: '\u533A\u95F4',
},
{
value: 'unNull',
label: '\u4E0D\u4E3A\u7A7A',
},
{
value: 'null',
label: '\u4E3A\u7A7A',
},
]
const showAll = ['', 'Between']
const showOne = [
'Equals',
'NotEquals',
'MaxThen',
'MinThen',
'MaxOrEqualsThen',
'MinOrEqualsThen',
]
const unShow = ['null', 'unNull']
function visibleChange(dropDownSelect, val2) {
if (mode === 'editing') {
let { popperPaneRef, popperRef, selectWrapper, selectRef } = dropDownSelect
let popRef = popperPaneRef || popperRef
let selRef = selectWrapper || selectRef
if (!selRef) return
if (!val2) {
popRef.style.opacity = 0
} else {
popRef.style.opacity = 1
}
setTimeout(() => {
let popoverHeight = popRef.clientHeight
let selectHeight = selRef.clientHeight
let offsetY = 12
let bodyHeight = parseFloat(
app.current.project.current.page.document.body.style.height + ''
)
let height =
popoverHeight + selectHeight + selRef.parentNode.offsetTop + offsetY
if (bodyHeight - height >= 0) {
popRef.style.left = 0
popRef.style.top = selectHeight + offsetY + 'px'
} else {
popRef.style.left = 0
popRef.style.top = -(popoverHeight + offsetY) + 'px'
}
})
}
}
class HttpError extends Error {
constructor(errorMessage, statusCode) {
const trueProto = new.target.prototype
super(`${errorMessage}: Status code '${statusCode}'`)
this.statusCode = statusCode
this.__proto__ = trueProto
}
}
class TimeoutError extends Error {
constructor(errorMessage = 'A timeout occurred.') {
const trueProto = new.target.prototype
super(errorMessage)
this.__proto__ = trueProto
}
}
class AbortError extends Error {
constructor(errorMessage = 'An abort occurred.') {
const trueProto = new.target.prototype
super(errorMessage)
this.__proto__ = trueProto
}
}
class UnsupportedTransportError extends Error {
constructor(message2, transport) {
const trueProto = new.target.prototype
super(message2)
this.transport = transport
this.errorType = 'UnsupportedTransportError'
this.__proto__ = trueProto
}
}
class DisabledTransportError extends Error {
constructor(message2, transport) {
const trueProto = new.target.prototype
super(message2)
this.transport = transport
this.errorType = 'DisabledTransportError'
this.__proto__ = trueProto
}
}
class FailedToStartTransportError extends Error {
constructor(message2, transport) {
const trueProto = new.target.prototype
super(message2)
this.transport = transport
this.errorType = 'FailedToStartTransportError'
this.__proto__ = trueProto
}
}
class FailedToNegotiateWithServerError extends Error {
constructor(message2) {
const trueProto = new.target.prototype
super(message2)
this.errorType = 'FailedToNegotiateWithServerError'
this.__proto__ = trueProto
}
}
class AggregateErrors extends Error {
constructor(message2, innerErrors) {
const trueProto = new.target.prototype
super(message2)
this.innerErrors = innerErrors
this.__proto__ = trueProto
}
}
class HttpResponse {
constructor(statusCode, statusText, content2) {
this.statusCode = statusCode
this.statusText = statusText
this.content = content2
}
}
class HttpClient {
get(url2, options2) {
return this.send({
...options2,
method: 'GET',
url: url2,
})
}
post(url2, options2) {
return this.send({
...options2,
method: 'POST',
url: url2,
})
}
delete(url2, options2) {
return this.send({
...options2,
method: 'DELETE',
url: url2,
})
}
getCookieString(url2) {
return ''
}
}
var LogLevel
;(function (LogLevel2) {
LogLevel2[(LogLevel2['Trace'] = 0)] = 'Trace'
LogLevel2[(LogLevel2['Debug'] = 1)] = 'Debug'
LogLevel2[(LogLevel2['Information'] = 2)] = 'Information'
LogLevel2[(LogLevel2['Warning'] = 3)] = 'Warning'
LogLevel2[(LogLevel2['Error'] = 4)] = 'Error'
LogLevel2[(LogLevel2['Critical'] = 5)] = 'Critical'
LogLevel2[(LogLevel2['None'] = 6)] = 'None'
})(LogLevel || (LogLevel = {}))
class NullLogger {
constructor() {}
log(_logLevel, _message) {}
}
NullLogger.instance = new NullLogger()
const VERSION$2 = '6.0.23'
class Arg {
static isRequired(val2, name2) {
if (val2 === null || val2 === void 0) {
throw new Error(`The '${name2}' argument is required.`)
}
}
static isNotEmpty(val2, name2) {
if (!val2 || val2.match(/^\s*$/)) {
throw new Error(`The '${name2}' argument should not be empty.`)
}
}
static isIn(val2, values2, name2) {
if (!(val2 in values2)) {
throw new Error(`Unknown ${name2} value: ${val2}.`)
}
}
}
class Platform {
static get isBrowser() {
return typeof window === 'object' && typeof window.document === 'object'
}
static get isWebWorker() {
return typeof self === 'object' && 'importScripts' in self
}
static get isReactNative() {
return typeof window === 'object' && typeof window.document === 'undefined'
}
static get isNode() {
return !this.isBrowser && !this.isWebWorker && !this.isReactNative
}
}
function getDataDetail(data2, includeContent) {
let detail = ''
if (isArrayBuffer(data2)) {
detail = `Binary data of length ${data2.byteLength}`
if (includeContent) {
detail += `. Content: '${formatArrayBuffer(data2)}'`
}
} else if (typeof data2 === 'string') {
detail = `String data of length ${data2.length}`
if (includeContent) {
detail += `. Content: '${data2}'`
}
}
return detail
}
function formatArrayBuffer(data2) {
const view2 = new Uint8Array(data2)
let str = ''
view2.forEach((num2) => {
const pad3 = num2 < 16 ? '0' : ''
str += `0x${pad3}${num2.toString(16)} `
})
return str.substr(0, str.length - 1)
}
function isArrayBuffer(val2) {
return (
val2 &&
typeof ArrayBuffer !== 'undefined' &&
(val2 instanceof ArrayBuffer ||
(val2.constructor && val2.constructor.name === 'ArrayBuffer'))
)
}
async function sendMessage(
logger,
transportName,
httpClient,
url2,
accessTokenFactory,
content2,
options2
) {
let headers = {}
if (accessTokenFactory) {
const token = await accessTokenFactory()
if (token) {
headers = {
['Authorization']: `Bearer ${token}`,
}
}
}
const [name2, value2] = getUserAgentHeader()
headers[name2] = value2
logger.log(
LogLevel.Trace,
`(${transportName} transport) sending data. ${getDataDetail(
content2,
options2.logMessageContent
)}.`
)
const responseType = isArrayBuffer(content2) ? 'arraybuffer' : 'text'
const response = await httpClient.post(url2, {
content: content2,
headers: { ...headers, ...options2.headers },
responseType,
timeout: options2.timeout,
withCredentials: options2.withCredentials,
})
logger.log(
LogLevel.Trace,
`(${transportName} transport) request complete. Response status: ${response.statusCode}.`
)
}
function createLogger$1(logger) {
if (logger === void 0) {
return new ConsoleLogger(LogLevel.Information)
}
if (logger === null) {
return NullLogger.instance
}
if (logger.log !== void 0) {
return logger
}
return new ConsoleLogger(logger)
}
class SubjectSubscription {
constructor(subject, observer) {
this._subject = subject
this._observer = observer
}
dispose() {
const index2 = this._subject.observers.indexOf(this._observer)
if (index2 > -1) {
this._subject.observers.splice(index2, 1)
}
if (this._subject.observers.length === 0 && this._subject.cancelCallback) {
this._subject.cancelCallback().catch((_2) => {})
}
}
}
class ConsoleLogger {
constructor(minimumLogLevel) {
this._minLevel = minimumLogLevel
this.out = console
}
log(logLevel, message2) {
if (logLevel >= this._minLevel) {
const msg = `[${new Date().toISOString()}] ${
LogLevel[logLevel]
}: ${message2}`
switch (logLevel) {
case LogLevel.Critical:
case LogLevel.Error:
this.out.error(msg)
break
case LogLevel.Warning:
this.out.warn(msg)
break
case LogLevel.Information:
this.out.info(msg)
break
default:
this.out.log(msg)
break
}
}
}
}
function getUserAgentHeader() {
let userAgentHeaderName = 'X-SignalR-User-Agent'
if (Platform.isNode) {
userAgentHeaderName = 'User-Agent'
}
return [
userAgentHeaderName,
constructUserAgent(
VERSION$2,
getOsName(),
getRuntime(),
getRuntimeVersion()
),
]
}
function constructUserAgent(version2, os, runtime, runtimeVersion) {
let userAgent2 = 'Microsoft SignalR/'
const majorAndMinor = version2.split('.')
userAgent2 += `${majorAndMinor[0]}.${majorAndMinor[1]}`
userAgent2 += ` (${version2}; `
if (os && os !== '') {
userAgent2 += `${os}; `
} else {
userAgent2 += 'Unknown OS; '
}
userAgent2 += `${runtime}`
if (runtimeVersion) {
userAgent2 += `; ${runtimeVersion}`
} else {
userAgent2 += '; Unknown Runtime Version'
}
userAgent2 += ')'
return userAgent2
}
function getOsName() {
if (Platform.isNode) {
switch (process.platform) {
case 'win32':
return 'Windows NT'
case 'darwin':
return 'macOS'
case 'linux':
return 'Linux'
default:
return process.platform
}
} else {
return ''
}
}
function getRuntimeVersion() {
if (Platform.isNode) {
return process.versions.node
}
return void 0
}
function getRuntime() {
if (Platform.isNode) {
return 'NodeJS'
} else {
return 'Browser'
}
}
function getErrorString(e2) {
if (e2.stack) {
return e2.stack
} else if (e2.message) {
return e2.message
}
return `${e2}`
}
function getGlobalThis$1() {
if (typeof globalThis !== 'undefined') {
return globalThis
}
if (typeof self !== 'undefined') {
return self
}
if (typeof window !== 'undefined') {
return window
}
if (typeof global !== 'undefined') {
return global
}
throw new Error('could not find global')
}
class FetchHttpClient extends HttpClient {
constructor(logger) {
super()
this._logger = logger
if (typeof fetch === 'undefined') {
const requireFunc =
typeof __webpack_require__ === 'function'
? __non_webpack_require__
: require
this._jar = new (requireFunc('tough-cookie').CookieJar)()
this._fetchType = requireFunc('node-fetch')
this._fetchType = requireFunc('fetch-cookie')(this._fetchType, this._jar)
} else {
this._fetchType = fetch.bind(getGlobalThis$1())
}
if (typeof AbortController === 'undefined') {
const requireFunc =
typeof __webpack_require__ === 'function'
? __non_webpack_require__
: require
this._abortControllerType = requireFunc('abort-controller')
} else {
this._abortControllerType = AbortController
}
}
async send(request3) {
if (request3.abortSignal && request3.abortSignal.aborted) {
throw new AbortError()
}
if (!request3.method) {
throw new Error('No method defined.')
}
if (!request3.url) {
throw new Error('No url defined.')
}
const abortController = new this._abortControllerType()
let error2
if (request3.abortSignal) {
request3.abortSignal.onabort = () => {
abortController.abort()
error2 = new AbortError()
}
}
let timeoutId = null
if (request3.timeout) {
const msTimeout = request3.timeout
timeoutId = setTimeout(() => {
abortController.abort()
this._logger.log(LogLevel.Warning, `Timeout from HTTP request.`)
error2 = new TimeoutError()
}, msTimeout)
}
let response
try {
response = await this._fetchType(request3.url, {
body: request3.content,
cache: 'no-cache',
credentials:
request3.withCredentials === true ? 'include' : 'same-origin',
headers: {
'Content-Type': 'text/plain;charset=UTF-8',
'X-Requested-With': 'XMLHttpRequest',
...request3.headers,
},
method: request3.method,
mode: 'cors',
redirect: 'follow',
signal: abortController.signal,
})
} catch (e2) {
if (error2) {
throw error2
}
this._logger.log(LogLevel.Warning, `Error from HTTP request. ${e2}.`)
throw e2
} finally {
if (timeoutId) {
clearTimeout(timeoutId)
}
if (request3.abortSignal) {
request3.abortSignal.onabort = null
}
}
if (!response.ok) {
const errorMessage = await deserializeContent(response, 'text')
throw new HttpError(errorMessage || response.statusText, response.status)
}
const content2 = deserializeContent(response, request3.responseType)
const payload = await content2
return new HttpResponse(response.status, response.statusText, payload)
}
getCookieString(url2) {
let cookies2 = ''
if (Platform.isNode && this._jar) {
this._jar.getCookies(url2, (e2, c2) => (cookies2 = c2.join('; ')))
}
return cookies2
}
}
function deserializeContent(response, responseType) {
let content2
switch (responseType) {
case 'arraybuffer':
content2 = response.arrayBuffer()
break
case 'text':
content2 = response.text()
break
case 'blob':
case 'document':
case 'json':
throw new Error(`${responseType} is not supported.`)
default:
content2 = response.text()
break
}
return content2
}
class XhrHttpClient extends HttpClient {
constructor(logger) {
super()
this._logger = logger
}
send(request3) {
if (request3.abortSignal && request3.abortSignal.aborted) {
return Promise.reject(new AbortError())
}
if (!request3.method) {
return Promise.reject(new Error('No method defined.'))
}
if (!request3.url) {
return Promise.reject(new Error('No url defined.'))
}
return new Promise((resolve2, reject2) => {
const xhr2 = new XMLHttpRequest()
xhr2.open(request3.method, request3.url, true)
xhr2.withCredentials =
request3.withCredentials === void 0 ? true : request3.withCredentials
xhr2.setRequestHeader('X-Requested-With', 'XMLHttpRequest')
xhr2.setRequestHeader('Content-Type', 'text/plain;charset=UTF-8')
const headers = request3.headers
if (headers) {
Object.keys(headers).forEach((header) => {
xhr2.setRequestHeader(header, headers[header])
})
}
if (request3.responseType) {
xhr2.responseType = request3.responseType
}
if (request3.abortSignal) {
request3.abortSignal.onabort = () => {
xhr2.abort()
reject2(new AbortError())
}
}
if (request3.timeout) {
xhr2.timeout = request3.timeout
}
xhr2.onload = () => {
if (request3.abortSignal) {
request3.abortSignal.onabort = null
}
if (xhr2.status >= 200 && xhr2.status < 300) {
resolve2(
new HttpResponse(
xhr2.status,
xhr2.statusText,
xhr2.response || xhr2.responseText
)
)
} else {
reject2(
new HttpError(
xhr2.response || xhr2.responseText || xhr2.statusText,
xhr2.status
)
)
}
}
xhr2.onerror = () => {
this._logger.log(
LogLevel.Warning,
`Error from HTTP request. ${xhr2.status}: ${xhr2.statusText}.`
)
reject2(new HttpError(xhr2.statusText, xhr2.status))
}
xhr2.ontimeout = () => {
this._logger.log(LogLevel.Warning, `Timeout from HTTP request.`)
reject2(new TimeoutError())
}
xhr2.send(request3.content || '')
})
}
}
class DefaultHttpClient extends HttpClient {
constructor(logger) {
super()
if (typeof fetch !== 'undefined' || Platform.isNode) {
this._httpClient = new FetchHttpClient(logger)
} else if (typeof XMLHttpRequest !== 'undefined') {
this._httpClient = new XhrHttpClient(logger)
} else {
throw new Error('No usable HttpClient found.')
}
}
send(request3) {
if (request3.abortSignal && request3.abortSignal.aborted) {
return Promise.reject(new AbortError())
}
if (!request3.method) {
return Promise.reject(new Error('No method defined.'))
}
if (!request3.url) {
return Promise.reject(new Error('No url defined.'))
}
return this._httpClient.send(request3)
}
getCookieString(url2) {
return this._httpClient.getCookieString(url2)
}
}
class TextMessageFormat {
static write(output) {
return `${output}${TextMessageFormat.RecordSeparator}`
}
static parse(input) {
if (input[input.length - 1] !== TextMessageFormat.RecordSeparator) {
throw new Error('Message is incomplete.')
}
const messages2 = input.split(TextMessageFormat.RecordSeparator)
messages2.pop()
return messages2
}
}
TextMessageFormat.RecordSeparatorCode = 30
TextMessageFormat.RecordSeparator = String.fromCharCode(
TextMessageFormat.RecordSeparatorCode
)
class HandshakeProtocol {
writeHandshakeRequest(handshakeRequest) {
return TextMessageFormat.write(JSON.stringify(handshakeRequest))
}
parseHandshakeResponse(data2) {
let messageData
let remainingData
if (isArrayBuffer(data2)) {
const binaryData = new Uint8Array(data2)
const separatorIndex = binaryData.indexOf(
TextMessageFormat.RecordSeparatorCode
)
if (separatorIndex === -1) {
throw new Error('Message is incomplete.')
}
const responseLength = separatorIndex + 1
messageData = String.fromCharCode.apply(
null,
Array.prototype.slice.call(binaryData.slice(0, responseLength))
)
remainingData =
binaryData.byteLength > responseLength
? binaryData.slice(responseLength).buffer
: null
} else {
const textData = data2
const separatorIndex = textData.indexOf(TextMessageFormat.RecordSeparator)
if (separatorIndex === -1) {
throw new Error('Message is incomplete.')
}
const responseLength = separatorIndex + 1
messageData = textData.substring(0, responseLength)
remainingData =
textData.length > responseLength
? textData.substring(responseLength)
: null
}
const messages2 = TextMessageFormat.parse(messageData)
const response = JSON.parse(messages2[0])
if (response.type) {
throw new Error('Expected a handshake response from the server.')
}
const responseMessage = response
return [remainingData, responseMessage]
}
}
var MessageType
;(function (MessageType2) {
MessageType2[(MessageType2['Invocation'] = 1)] = 'Invocation'
MessageType2[(MessageType2['StreamItem'] = 2)] = 'StreamItem'
MessageType2[(MessageType2['Completion'] = 3)] = 'Completion'
MessageType2[(MessageType2['StreamInvocation'] = 4)] = 'StreamInvocation'
MessageType2[(MessageType2['CancelInvocation'] = 5)] = 'CancelInvocation'
MessageType2[(MessageType2['Ping'] = 6)] = 'Ping'
MessageType2[(MessageType2['Close'] = 7)] = 'Close'
})(MessageType || (MessageType = {}))
class Subject {
constructor() {
this.observers = []
}
next(item2) {
for (const observer of this.observers) {
observer.next(item2)
}
}
error(err) {
for (const observer of this.observers) {
if (observer.error) {
observer.error(err)
}
}
}
complete() {
for (const observer of this.observers) {
if (observer.complete) {
observer.complete()
}
}
}
subscribe(observer) {
this.observers.push(observer)
return new SubjectSubscription(this, observer)
}
}
const DEFAULT_TIMEOUT_IN_MS = 30 * 1e3
const DEFAULT_PING_INTERVAL_IN_MS = 15 * 1e3
var HubConnectionState
;(function (HubConnectionState2) {
HubConnectionState2['Disconnected'] = 'Disconnected'
HubConnectionState2['Connecting'] = 'Connecting'
HubConnectionState2['Connected'] = 'Connected'
HubConnectionState2['Disconnecting'] = 'Disconnecting'
HubConnectionState2['Reconnecting'] = 'Reconnecting'
})(HubConnectionState || (HubConnectionState = {}))
class HubConnection {
constructor(connection2, logger, protocol, reconnectPolicy) {
this._nextKeepAlive = 0
this._freezeEventListener = () => {
this._logger.log(
LogLevel.Warning,
'The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://docs.microsoft.com/aspnet/core/signalr/javascript-client#bsleep'
)
}
Arg.isRequired(connection2, 'connection')
Arg.isRequired(logger, 'logger')
Arg.isRequired(protocol, 'protocol')
this.serverTimeoutInMilliseconds = DEFAULT_TIMEOUT_IN_MS
this.keepAliveIntervalInMilliseconds = DEFAULT_PING_INTERVAL_IN_MS
this._logger = logger
this._protocol = protocol
this.connection = connection2
this._reconnectPolicy = reconnectPolicy
this._handshakeProtocol = new HandshakeProtocol()
this.connection.onreceive = (data2) => this._processIncomingData(data2)
this.connection.onclose = (error2) => this._connectionClosed(error2)
this._callbacks = {}
this._methods = {}
this._closedCallbacks = []
this._reconnectingCallbacks = []
this._reconnectedCallbacks = []
this._invocationId = 0
this._receivedHandshakeResponse = false
this._connectionState = HubConnectionState.Disconnected
this._connectionStarted = false
this._cachedPingMessage = this._protocol.writeMessage({
type: MessageType.Ping,
})
}
static create(connection2, logger, protocol, reconnectPolicy) {
return new HubConnection(connection2, logger, protocol, reconnectPolicy)
}
get state() {
return this._connectionState
}
get connectionId() {
return this.connection ? this.connection.connectionId || null : null
}
get baseUrl() {
return this.connection.baseUrl || ''
}
set baseUrl(url2) {
if (
this._connectionState !== HubConnectionState.Disconnected &&
this._connectionState !== HubConnectionState.Reconnecting
) {
throw new Error(
'The HubConnection must be in the Disconnected or Reconnecting state to change the url.'
)
}
if (!url2) {
throw new Error('The HubConnection url must be a valid url.')
}
this.connection.baseUrl = url2
}
start() {
this._startPromise = this._startWithStateTransitions()
return this._startPromise
}
async _startWithStateTransitions() {
if (this._connectionState !== HubConnectionState.Disconnected) {
return Promise.reject(
new Error(
"Cannot start a HubConnection that is not in the 'Disconnected' state."
)
)
}
this._connectionState = HubConnectionState.Connecting
this._logger.log(LogLevel.Debug, 'Starting HubConnection.')
try {
await this._startInternal()
if (Platform.isBrowser) {
window.document.addEventListener('freeze', this._freezeEventListener)
}
this._connectionState = HubConnectionState.Connected
this._connectionStarted = true
this._logger.log(LogLevel.Debug, 'HubConnection connected successfully.')
} catch (e2) {
this._connectionState = HubConnectionState.Disconnected
this._logger.log(
LogLevel.Debug,
`HubConnection failed to start successfully because of error '${e2}'.`
)
return Promise.reject(e2)
}
}
async _startInternal() {
this._stopDuringStartError = void 0
this._receivedHandshakeResponse = false
const handshakePromise = new Promise((resolve2, reject2) => {
this._handshakeResolver = resolve2
this._handshakeRejecter = reject2
})
await this.connection.start(this._protocol.transferFormat)
try {
const handshakeRequest = {
protocol: this._protocol.name,
version: this._protocol.version,
}
this._logger.log(LogLevel.Debug, 'Sending handshake request.')
await this._sendMessage(
this._handshakeProtocol.writeHandshakeRequest(handshakeRequest)
)
this._logger.log(
LogLevel.Information,
`Using HubProtocol '${this._protocol.name}'.`
)
this._cleanupTimeout()
this._resetTimeoutPeriod()
this._resetKeepAliveInterval()
await handshakePromise
if (this._stopDuringStartError) {
throw this._stopDuringStartError
}
} catch (e2) {
this._logger.log(
LogLevel.Debug,
`Hub handshake failed with error '${e2}' during start(). Stopping HubConnection.`
)
this._cleanupTimeout()
this._cleanupPingTimer()
await this.connection.stop(e2)
throw e2
}
}
async stop() {
const startPromise = this._startPromise
this._stopPromise = this._stopInternal()
await this._stopPromise
try {
await startPromise
} catch (e2) {}
}
_stopInternal(error2) {
if (this._connectionState === HubConnectionState.Disconnected) {
this._logger.log(
LogLevel.Debug,
`Call to HubConnection.stop(${error2}) ignored because it is already in the disconnected state.`
)
return Promise.resolve()
}
if (this._connectionState === HubConnectionState.Disconnecting) {
this._logger.log(
LogLevel.Debug,
`Call to HttpConnection.stop(${error2}) ignored because the connection is already in the disconnecting state.`
)
return this._stopPromise
}
this._connectionState = HubConnectionState.Disconnecting
this._logger.log(LogLevel.Debug, 'Stopping HubConnection.')
if (this._reconnectDelayHandle) {
this._logger.log(
LogLevel.Debug,
'Connection stopped during reconnect delay. Done reconnecting.'
)
clearTimeout(this._reconnectDelayHandle)
this._reconnectDelayHandle = void 0
this._completeClose()
return Promise.resolve()
}
this._cleanupTimeout()
this._cleanupPingTimer()
this._stopDuringStartError =
error2 ||
new Error(
'The connection was stopped before the hub handshake could complete.'
)
return this.connection.stop(error2)
}
stream(methodName, ...args) {
const [streams, streamIds] = this._replaceStreamingParams(args)
const invocationDescriptor = this._createStreamInvocation(
methodName,
args,
streamIds
)
let promiseQueue
const subject = new Subject()
subject.cancelCallback = () => {
const cancelInvocation = this._createCancelInvocation(
invocationDescriptor.invocationId
)
delete this._callbacks[invocationDescriptor.invocationId]
return promiseQueue.then(() => {
return this._sendWithProtocol(cancelInvocation)
})
}
this._callbacks[invocationDescriptor.invocationId] = (
invocationEvent,
error2
) => {
if (error2) {
subject.error(error2)
return
} else if (invocationEvent) {
if (invocationEvent.type === MessageType.Completion) {
if (invocationEvent.error) {
subject.error(new Error(invocationEvent.error))
} else {
subject.complete()
}
} else {
subject.next(invocationEvent.item)
}
}
}
promiseQueue = this._sendWithProtocol(invocationDescriptor).catch((e2) => {
subject.error(e2)
delete this._callbacks[invocationDescriptor.invocationId]
})
this._launchStreams(streams, promiseQueue)
return subject
}
_sendMessage(message2) {
this._resetKeepAliveInterval()
return this.connection.send(message2)
}
_sendWithProtocol(message2) {
return this._sendMessage(this._protocol.writeMessage(message2))
}
send(methodName, ...args) {
const [streams, streamIds] = this._replaceStreamingParams(args)
const sendPromise = this._sendWithProtocol(
this._createInvocation(methodName, args, true, streamIds)
)
this._launchStreams(streams, sendPromise)
return sendPromise
}
invoke(methodName, ...args) {
const [streams, streamIds] = this._replaceStreamingParams(args)
const invocationDescriptor = this._createInvocation(
methodName,
args,
false,
streamIds
)
const p2 = new Promise((resolve2, reject2) => {
this._callbacks[invocationDescriptor.invocationId] = (
invocationEvent,
error2
) => {
if (error2) {
reject2(error2)
return
} else if (invocationEvent) {
if (invocationEvent.type === MessageType.Completion) {
if (invocationEvent.error) {
reject2(new Error(invocationEvent.error))
} else {
resolve2(invocationEvent.result)
}
} else {
reject2(
new Error(`Unexpected message type: ${invocationEvent.type}`)
)
}
}
}
const promiseQueue = this._sendWithProtocol(invocationDescriptor).catch(
(e2) => {
reject2(e2)
delete this._callbacks[invocationDescriptor.invocationId]
}
)
this._launchStreams(streams, promiseQueue)
})
return p2
}
on(methodName, newMethod) {
if (!methodName || !newMethod) {
return
}
methodName = methodName.toLowerCase()
if (!this._methods[methodName]) {
this._methods[methodName] = []
}
if (this._methods[methodName].indexOf(newMethod) !== -1) {
return
}
this._methods[methodName].push(newMethod)
}
off(methodName, method4) {
if (!methodName) {
return
}
methodName = methodName.toLowerCase()
const handlers2 = this._methods[methodName]
if (!handlers2) {
return
}
if (method4) {
const removeIdx = handlers2.indexOf(method4)
if (removeIdx !== -1) {
handlers2.splice(removeIdx, 1)
if (handlers2.length === 0) {
delete this._methods[methodName]
}
}
} else {
delete this._methods[methodName]
}
}
onclose(callback) {
if (callback) {
this._closedCallbacks.push(callback)
}
}
onreconnecting(callback) {
if (callback) {
this._reconnectingCallbacks.push(callback)
}
}
onreconnected(callback) {
if (callback) {
this._reconnectedCallbacks.push(callback)
}
}
_processIncomingData(data2) {
this._cleanupTimeout()
if (!this._receivedHandshakeResponse) {
data2 = this._processHandshakeResponse(data2)
this._receivedHandshakeResponse = true
}
if (data2) {
const messages2 = this._protocol.parseMessages(data2, this._logger)
for (const message2 of messages2) {
switch (message2.type) {
case MessageType.Invocation:
this._invokeClientMethod(message2)
break
case MessageType.StreamItem:
case MessageType.Completion: {
const callback = this._callbacks[message2.invocationId]
if (callback) {
if (message2.type === MessageType.Completion) {
delete this._callbacks[message2.invocationId]
}
try {
callback(message2)
} catch (e2) {
this._logger.log(
LogLevel.Error,
`Stream callback threw error: ${getErrorString(e2)}`
)
}
}
break
}
case MessageType.Ping:
break
case MessageType.Close: {
this._logger.log(
LogLevel.Information,
'Close message received from server.'
)
const error2 = message2.error
? new Error(
'Server returned an error on close: ' + message2.error
)
: void 0
if (message2.allowReconnect === true) {
this.connection.stop(error2)
} else {
this._stopPromise = this._stopInternal(error2)
}
break
}
default:
this._logger.log(
LogLevel.Warning,
`Invalid message type: ${message2.type}.`
)
break
}
}
}
this._resetTimeoutPeriod()
}
_processHandshakeResponse(data2) {
let responseMessage
let remainingData
try {
;[remainingData, responseMessage] =
this._handshakeProtocol.parseHandshakeResponse(data2)
} catch (e2) {
const message2 = 'Error parsing handshake response: ' + e2
this._logger.log(LogLevel.Error, message2)
const error2 = new Error(message2)
this._handshakeRejecter(error2)
throw error2
}
if (responseMessage.error) {
const message2 =
'Server returned handshake error: ' + responseMessage.error
this._logger.log(LogLevel.Error, message2)
const error2 = new Error(message2)
this._handshakeRejecter(error2)
throw error2
} else {
this._logger.log(LogLevel.Debug, 'Server handshake complete.')
}
this._handshakeResolver()
return remainingData
}
_resetKeepAliveInterval() {
if (this.connection.features.inherentKeepAlive) {
return
}
this._nextKeepAlive =
new Date().getTime() + this.keepAliveIntervalInMilliseconds
this._cleanupPingTimer()
}
_resetTimeoutPeriod() {
if (
!this.connection.features ||
!this.connection.features.inherentKeepAlive
) {
this._timeoutHandle = setTimeout(
() => this.serverTimeout(),
this.serverTimeoutInMilliseconds
)
if (this._pingServerHandle === void 0) {
let nextPing = this._nextKeepAlive - new Date().getTime()
if (nextPing < 0) {
nextPing = 0
}
this._pingServerHandle = setTimeout(async () => {
if (this._connectionState === HubConnectionState.Connected) {
try {
await this._sendMessage(this._cachedPingMessage)
} catch {
this._cleanupPingTimer()
}
}
}, nextPing)
}
}
}
serverTimeout() {
this.connection.stop(
new Error(
'Server timeout elapsed without receiving a message from the server.'
)
)
}
_invokeClientMethod(invocationMessage) {
const methods = this._methods[invocationMessage.target.toLowerCase()]
if (methods) {
try {
methods.forEach((m2) => m2.apply(this, invocationMessage.arguments))
} catch (e2) {
this._logger.log(
LogLevel.Error,
`A callback for the method ${invocationMessage.target.toLowerCase()} threw error '${e2}'.`
)
}
if (invocationMessage.invocationId) {
const message2 =
'Server requested a response, which is not supported in this version of the client.'
this._logger.log(LogLevel.Error, message2)
this._stopPromise = this._stopInternal(new Error(message2))
}
} else {
this._logger.log(
LogLevel.Warning,
`No client method with the name '${invocationMessage.target}' found.`
)
}
}
_connectionClosed(error2) {
this._logger.log(
LogLevel.Debug,
`HubConnection.connectionClosed(${error2}) called while in state ${this._connectionState}.`
)
this._stopDuringStartError =
this._stopDuringStartError ||
error2 ||
new Error(
'The underlying connection was closed before the hub handshake could complete.'
)
if (this._handshakeResolver) {
this._handshakeResolver()
}
this._cancelCallbacksWithError(
error2 ||
new Error(
'Invocation canceled due to the underlying connection being closed.'
)
)
this._cleanupTimeout()
this._cleanupPingTimer()
if (this._connectionState === HubConnectionState.Disconnecting) {
this._completeClose(error2)
} else if (
this._connectionState === HubConnectionState.Connected &&
this._reconnectPolicy
) {
this._reconnect(error2)
} else if (this._connectionState === HubConnectionState.Connected) {
this._completeClose(error2)
}
}
_completeClose(error2) {
if (this._connectionStarted) {
this._connectionState = HubConnectionState.Disconnected
this._connectionStarted = false
if (Platform.isBrowser) {
window.document.removeEventListener('freeze', this._freezeEventListener)
}
try {
this._closedCallbacks.forEach((c2) => c2.apply(this, [error2]))
} catch (e2) {
this._logger.log(
LogLevel.Error,
`An onclose callback called with error '${error2}' threw error '${e2}'.`
)
}
}
}
async _reconnect(error2) {
const reconnectStartTime = Date.now()
let previousReconnectAttempts = 0
let retryError =
error2 !== void 0
? error2
: new Error('Attempting to reconnect due to a unknown error.')
let nextRetryDelay = this._getNextRetryDelay(
previousReconnectAttempts++,
0,
retryError
)
if (nextRetryDelay === null) {
this._logger.log(
LogLevel.Debug,
'Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt.'
)
this._completeClose(error2)
return
}
this._connectionState = HubConnectionState.Reconnecting
if (error2) {
this._logger.log(
LogLevel.Information,
`Connection reconnecting because of error '${error2}'.`
)
} else {
this._logger.log(LogLevel.Information, 'Connection reconnecting.')
}
if (this._reconnectingCallbacks.length !== 0) {
try {
this._reconnectingCallbacks.forEach((c2) => c2.apply(this, [error2]))
} catch (e2) {
this._logger.log(
LogLevel.Error,
`An onreconnecting callback called with error '${error2}' threw error '${e2}'.`
)
}
if (this._connectionState !== HubConnectionState.Reconnecting) {
this._logger.log(
LogLevel.Debug,
'Connection left the reconnecting state in onreconnecting callback. Done reconnecting.'
)
return
}
}
while (nextRetryDelay !== null) {
this._logger.log(
LogLevel.Information,
`Reconnect attempt number ${previousReconnectAttempts} will start in ${nextRetryDelay} ms.`
)
await new Promise((resolve2) => {
this._reconnectDelayHandle = setTimeout(resolve2, nextRetryDelay)
})
this._reconnectDelayHandle = void 0
if (this._connectionState !== HubConnectionState.Reconnecting) {
this._logger.log(
LogLevel.Debug,
'Connection left the reconnecting state during reconnect delay. Done reconnecting.'
)
return
}
try {
await this._startInternal()
this._connectionState = HubConnectionState.Connected
this._logger.log(
LogLevel.Information,
'HubConnection reconnected successfully.'
)
if (this._reconnectedCallbacks.length !== 0) {
try {
this._reconnectedCallbacks.forEach((c2) =>
c2.apply(this, [this.connection.connectionId])
)
} catch (e2) {
this._logger.log(
LogLevel.Error,
`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e2}'.`
)
}
}
return
} catch (e2) {
this._logger.log(
LogLevel.Information,
`Reconnect attempt failed because of error '${e2}'.`
)
if (this._connectionState !== HubConnectionState.Reconnecting) {
this._logger.log(
LogLevel.Debug,
`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`
)
if (this._connectionState === HubConnectionState.Disconnecting) {
this._completeClose()
}
return
}
retryError = e2 instanceof Error ? e2 : new Error(e2.toString())
nextRetryDelay = this._getNextRetryDelay(
previousReconnectAttempts++,
Date.now() - reconnectStartTime,
retryError
)
}
}
this._logger.log(
LogLevel.Information,
`Reconnect retries have been exhausted after ${
Date.now() - reconnectStartTime
} ms and ${previousReconnectAttempts} failed attempts. Connection disconnecting.`
)
this._completeClose()
}
_getNextRetryDelay(previousRetryCount, elapsedMilliseconds, retryReason) {
try {
return this._reconnectPolicy.nextRetryDelayInMilliseconds({
elapsedMilliseconds,
previousRetryCount,
retryReason,
})
} catch (e2) {
this._logger.log(
LogLevel.Error,
`IRetryPolicy.nextRetryDelayInMilliseconds(${previousRetryCount}, ${elapsedMilliseconds}) threw error '${e2}'.`
)
return null
}
}
_cancelCallbacksWithError(error2) {
const callbacks = this._callbacks
this._callbacks = {}
Object.keys(callbacks).forEach((key2) => {
const callback = callbacks[key2]
try {
callback(null, error2)
} catch (e2) {
this._logger.log(
LogLevel.Error,
`Stream 'error' callback called with '${error2}' threw error: ${getErrorString(
e2
)}`
)
}
})
}
_cleanupPingTimer() {
if (this._pingServerHandle) {
clearTimeout(this._pingServerHandle)
this._pingServerHandle = void 0
}
}
_cleanupTimeout() {
if (this._timeoutHandle) {
clearTimeout(this._timeoutHandle)
}
}
_createInvocation(methodName, args, nonblocking, streamIds) {
if (nonblocking) {
if (streamIds.length !== 0) {
return {
arguments: args,
streamIds,
target: methodName,
type: MessageType.Invocation,
}
} else {
return {
arguments: args,
target: methodName,
type: MessageType.Invocation,
}
}
} else {
const invocationId = this._invocationId
this._invocationId++
if (streamIds.length !== 0) {
return {
arguments: args,
invocationId: invocationId.toString(),
streamIds,
target: methodName,
type: MessageType.Invocation,
}
} else {
return {
arguments: args,
invocationId: invocationId.toString(),
target: methodName,
type: MessageType.Invocation,
}
}
}
}
_launchStreams(streams, promiseQueue) {
if (streams.length === 0) {
return
}
if (!promiseQueue) {
promiseQueue = Promise.resolve()
}
for (const streamId in streams) {
streams[streamId].subscribe({
complete: () => {
promiseQueue = promiseQueue.then(() =>
this._sendWithProtocol(this._createCompletionMessage(streamId))
)
},
error: (err) => {
let message2
if (err instanceof Error) {
message2 = err.message
} else if (err && err.toString) {
message2 = err.toString()
} else {
message2 = 'Unknown error'
}
promiseQueue = promiseQueue.then(() =>
this._sendWithProtocol(
this._createCompletionMessage(streamId, message2)
)
)
},
next: (item2) => {
promiseQueue = promiseQueue.then(() =>
this._sendWithProtocol(
this._createStreamItemMessage(streamId, item2)
)
)
},
})
}
}
_replaceStreamingParams(args) {
const streams = []
const streamIds = []
for (let i2 = 0; i2 < args.length; i2++) {
const argument = args[i2]
if (this._isObservable(argument)) {
const streamId = this._invocationId
this._invocationId++
streams[streamId] = argument
streamIds.push(streamId.toString())
args.splice(i2, 1)
}
}
return [streams, streamIds]
}
_isObservable(arg) {
return arg && arg.subscribe && typeof arg.subscribe === 'function'
}
_createStreamInvocation(methodName, args, streamIds) {
const invocationId = this._invocationId
this._invocationId++
if (streamIds.length !== 0) {
return {
arguments: args,
invocationId: invocationId.toString(),
streamIds,
target: methodName,
type: MessageType.StreamInvocation,
}
} else {
return {
arguments: args,
invocationId: invocationId.toString(),
target: methodName,
type: MessageType.StreamInvocation,
}
}
}
_createCancelInvocation(id2) {
return {
invocationId: id2,
type: MessageType.CancelInvocation,
}
}
_createStreamItemMessage(id2, item2) {
return {
invocationId: id2,
item: item2,
type: MessageType.StreamItem,
}
}
_createCompletionMessage(id2, error2, result) {
if (error2) {
return {
error: error2,
invocationId: id2,
type: MessageType.Completion,
}
}
return {
invocationId: id2,
result,
type: MessageType.Completion,
}
}
}
const DEFAULT_RETRY_DELAYS_IN_MILLISECONDS = [0, 2e3, 1e4, 3e4, null]
class DefaultReconnectPolicy {
constructor(retryDelays) {
this._retryDelays =
retryDelays !== void 0
? [...retryDelays, null]
: DEFAULT_RETRY_DELAYS_IN_MILLISECONDS
}
nextRetryDelayInMilliseconds(retryContext) {
return this._retryDelays[retryContext.previousRetryCount]
}
}
class HeaderNames {}
HeaderNames.Authorization = 'Authorization'
HeaderNames.Cookie = 'Cookie'
var HttpTransportType
;(function (HttpTransportType2) {
HttpTransportType2[(HttpTransportType2['None'] = 0)] = 'None'
HttpTransportType2[(HttpTransportType2['WebSockets'] = 1)] = 'WebSockets'
HttpTransportType2[(HttpTransportType2['ServerSentEvents'] = 2)] =
'ServerSentEvents'
HttpTransportType2[(HttpTransportType2['LongPolling'] = 4)] = 'LongPolling'
})(HttpTransportType || (HttpTransportType = {}))
var TransferFormat
;(function (TransferFormat2) {
TransferFormat2[(TransferFormat2['Text'] = 1)] = 'Text'
TransferFormat2[(TransferFormat2['Binary'] = 2)] = 'Binary'
})(TransferFormat || (TransferFormat = {}))
class AbortController$1 {
constructor() {
this._isAborted = false
this.onabort = null
}
abort() {
if (!this._isAborted) {
this._isAborted = true
if (this.onabort) {
this.onabort()
}
}
}
get signal() {
return this
}
get aborted() {
return this._isAborted
}
}
class LongPollingTransport {
constructor(httpClient, accessTokenFactory, logger, options2) {
this._httpClient = httpClient
this._accessTokenFactory = accessTokenFactory
this._logger = logger
this._pollAbort = new AbortController$1()
this._options = options2
this._running = false
this.onreceive = null
this.onclose = null
}
get pollAborted() {
return this._pollAbort.aborted
}
async connect(url2, transferFormat) {
Arg.isRequired(url2, 'url')
Arg.isRequired(transferFormat, 'transferFormat')
Arg.isIn(transferFormat, TransferFormat, 'transferFormat')
this._url = url2
this._logger.log(LogLevel.Trace, '(LongPolling transport) Connecting.')
if (
transferFormat === TransferFormat.Binary &&
typeof XMLHttpRequest !== 'undefined' &&
typeof new XMLHttpRequest().responseType !== 'string'
) {
throw new Error(
'Binary protocols over XmlHttpRequest not implementing advanced features are not supported.'
)
}
const [name2, value2] = getUserAgentHeader()
const headers = { [name2]: value2, ...this._options.headers }
const pollOptions = {
abortSignal: this._pollAbort.signal,
headers,
timeout: 1e5,
withCredentials: this._options.withCredentials,
}
if (transferFormat === TransferFormat.Binary) {
pollOptions.responseType = 'arraybuffer'
}
const token = await this._getAccessToken()
this._updateHeaderToken(pollOptions, token)
const pollUrl = `${url2}&_=${Date.now()}`
this._logger.log(
LogLevel.Trace,
`(LongPolling transport) polling: ${pollUrl}.`
)
const response = await this._httpClient.get(pollUrl, pollOptions)
if (response.statusCode !== 200) {
this._logger.log(
LogLevel.Error,
`(LongPolling transport) Unexpected response code: ${response.statusCode}.`
)
this._closeError = new HttpError(
response.statusText || '',
response.statusCode
)
this._running = false
} else {
this._running = true
}
this._receiving = this._poll(this._url, pollOptions)
}
async _getAccessToken() {
if (this._accessTokenFactory) {
return await this._accessTokenFactory()
}
return null
}
_updateHeaderToken(request3, token) {
if (!request3.headers) {
request3.headers = {}
}
if (token) {
request3.headers[HeaderNames.Authorization] = `Bearer ${token}`
return
}
if (request3.headers[HeaderNames.Authorization]) {
delete request3.headers[HeaderNames.Authorization]
}
}
async _poll(url2, pollOptions) {
try {
while (this._running) {
const token = await this._getAccessToken()
this._updateHeaderToken(pollOptions, token)
try {
const pollUrl = `${url2}&_=${Date.now()}`
this._logger.log(
LogLevel.Trace,
`(LongPolling transport) polling: ${pollUrl}.`
)
const response = await this._httpClient.get(pollUrl, pollOptions)
if (response.statusCode === 204) {
this._logger.log(
LogLevel.Information,
'(LongPolling transport) Poll terminated by server.'
)
this._running = false
} else if (response.statusCode !== 200) {
this._logger.log(
LogLevel.Error,
`(LongPolling transport) Unexpected response code: ${response.statusCode}.`
)
this._closeError = new HttpError(
response.statusText || '',
response.statusCode
)
this._running = false
} else {
if (response.content) {
this._logger.log(
LogLevel.Trace,
`(LongPolling transport) data received. ${getDataDetail(
response.content,
this._options.logMessageContent
)}.`
)
if (this.onreceive) {
this.onreceive(response.content)
}
} else {
this._logger.log(
LogLevel.Trace,
'(LongPolling transport) Poll timed out, reissuing.'
)
}
}
} catch (e2) {
if (!this._running) {
this._logger.log(
LogLevel.Trace,
`(LongPolling transport) Poll errored after shutdown: ${e2.message}`
)
} else {
if (e2 instanceof TimeoutError) {
this._logger.log(
LogLevel.Trace,
'(LongPolling transport) Poll timed out, reissuing.'
)
} else {
this._closeError = e2
this._running = false
}
}
}
}
} finally {
this._logger.log(
LogLevel.Trace,
'(LongPolling transport) Polling complete.'
)
if (!this.pollAborted) {
this._raiseOnClose()
}
}
}
async send(data2) {
if (!this._running) {
return Promise.reject(
new Error('Cannot send until the transport is connected')
)
}
return sendMessage(
this._logger,
'LongPolling',
this._httpClient,
this._url,
this._accessTokenFactory,
data2,
this._options
)
}
async stop() {
this._logger.log(
LogLevel.Trace,
'(LongPolling transport) Stopping polling.'
)
this._running = false
this._pollAbort.abort()
try {
await this._receiving
this._logger.log(
LogLevel.Trace,
`(LongPolling transport) sending DELETE request to ${this._url}.`
)
const headers = {}
const [name2, value2] = getUserAgentHeader()
headers[name2] = value2
const deleteOptions = {
headers: { ...headers, ...this._options.headers },
timeout: this._options.timeout,
withCredentials: this._options.withCredentials,
}
const token = await this._getAccessToken()
this._updateHeaderToken(deleteOptions, token)
await this._httpClient.delete(this._url, deleteOptions)
this._logger.log(
LogLevel.Trace,
'(LongPolling transport) DELETE request sent.'
)
} finally {
this._logger.log(LogLevel.Trace, '(LongPolling transport) Stop finished.')
this._raiseOnClose()
}
}
_raiseOnClose() {
if (this.onclose) {
let logMessage = '(LongPolling transport) Firing onclose event.'
if (this._closeError) {
logMessage += ' Error: ' + this._closeError
}
this._logger.log(LogLevel.Trace, logMessage)
this.onclose(this._closeError)
}
}
}
class ServerSentEventsTransport {
constructor(httpClient, accessTokenFactory, logger, options2) {
this._httpClient = httpClient
this._accessTokenFactory = accessTokenFactory
this._logger = logger
this._options = options2
this.onreceive = null
this.onclose = null
}
async connect(url2, transferFormat) {
Arg.isRequired(url2, 'url')
Arg.isRequired(transferFormat, 'transferFormat')
Arg.isIn(transferFormat, TransferFormat, 'transferFormat')
this._logger.log(LogLevel.Trace, '(SSE transport) Connecting.')
this._url = url2
if (this._accessTokenFactory) {
const token = await this._accessTokenFactory()
if (token) {
url2 +=
(url2.indexOf('?') < 0 ? '?' : '&') +
`access_token=${encodeURIComponent(token)}`
}
}
return new Promise((resolve2, reject2) => {
let opened = false
if (transferFormat !== TransferFormat.Text) {
reject2(
new Error(
"The Server-Sent Events transport only supports the 'Text' transfer format"
)
)
return
}
let eventSource
if (Platform.isBrowser || Platform.isWebWorker) {
eventSource = new this._options.EventSource(url2, {
withCredentials: this._options.withCredentials,
})
} else {
const cookies2 = this._httpClient.getCookieString(url2)
const headers = {}
headers.Cookie = cookies2
const [name2, value2] = getUserAgentHeader()
headers[name2] = value2
eventSource = new this._options.EventSource(url2, {
withCredentials: this._options.withCredentials,
headers: { ...headers, ...this._options.headers },
})
}
try {
eventSource.onmessage = (e2) => {
if (this.onreceive) {
try {
this._logger.log(
LogLevel.Trace,
`(SSE transport) data received. ${getDataDetail(
e2.data,
this._options.logMessageContent
)}.`
)
this.onreceive(e2.data)
} catch (error2) {
this._close(error2)
return
}
}
}
eventSource.onerror = (e2) => {
if (opened) {
this._close()
} else {
reject2(
new Error(
'EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled.'
)
)
}
}
eventSource.onopen = () => {
this._logger.log(
LogLevel.Information,
`SSE connected to ${this._url}`
)
this._eventSource = eventSource
opened = true
resolve2()
}
} catch (e2) {
reject2(e2)
return
}
})
}
async send(data2) {
if (!this._eventSource) {
return Promise.reject(
new Error('Cannot send until the transport is connected')
)
}
return sendMessage(
this._logger,
'SSE',
this._httpClient,
this._url,
this._accessTokenFactory,
data2,
this._options
)
}
stop() {
this._close()
return Promise.resolve()
}
_close(e2) {
if (this._eventSource) {
this._eventSource.close()
this._eventSource = void 0
if (this.onclose) {
this.onclose(e2)
}
}
}
}
class WebSocketTransport {
constructor(
httpClient,
accessTokenFactory,
logger,
logMessageContent,
webSocketConstructor,
headers
) {
this._logger = logger
this._accessTokenFactory = accessTokenFactory
this._logMessageContent = logMessageContent
this._webSocketConstructor = webSocketConstructor
this._httpClient = httpClient
this.onreceive = null
this.onclose = null
this._headers = headers
}
async connect(url2, transferFormat) {
Arg.isRequired(url2, 'url')
Arg.isRequired(transferFormat, 'transferFormat')
Arg.isIn(transferFormat, TransferFormat, 'transferFormat')
this._logger.log(LogLevel.Trace, '(WebSockets transport) Connecting.')
if (this._accessTokenFactory) {
const token = await this._accessTokenFactory()
if (token) {
url2 +=
(url2.indexOf('?') < 0 ? '?' : '&') +
`access_token=${encodeURIComponent(token)}`
}
}
return new Promise((resolve2, reject2) => {
url2 = url2.replace(/^http/, 'ws')
let webSocket
const cookies2 = this._httpClient.getCookieString(url2)
let opened = false
if (Platform.isNode) {
const headers = {}
const [name2, value2] = getUserAgentHeader()
headers[name2] = value2
if (cookies2) {
headers[HeaderNames.Cookie] = `${cookies2}`
}
webSocket = new this._webSocketConstructor(url2, void 0, {
headers: { ...headers, ...this._headers },
})
}
if (!webSocket) {
webSocket = new this._webSocketConstructor(url2)
}
if (transferFormat === TransferFormat.Binary) {
webSocket.binaryType = 'arraybuffer'
}
webSocket.onopen = (_event2) => {
this._logger.log(
LogLevel.Information,
`WebSocket connected to ${url2}.`
)
this._webSocket = webSocket
opened = true
resolve2()
}
webSocket.onerror = (event) => {
let error2 = null
if (typeof ErrorEvent !== 'undefined' && event instanceof ErrorEvent) {
error2 = event.error
} else {
error2 = 'There was an error with the transport'
}
this._logger.log(
LogLevel.Information,
`(WebSockets transport) ${error2}.`
)
}
webSocket.onmessage = (message2) => {
this._logger.log(
LogLevel.Trace,
`(WebSockets transport) data received. ${getDataDetail(
message2.data,
this._logMessageContent
)}.`
)
if (this.onreceive) {
try {
this.onreceive(message2.data)
} catch (error2) {
this._close(error2)
return
}
}
}
webSocket.onclose = (event) => {
if (opened) {
this._close(event)
} else {
let error2 = null
if (
typeof ErrorEvent !== 'undefined' &&
event instanceof ErrorEvent
) {
error2 = event.error
} else {
error2 =
'WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.'
}
reject2(new Error(error2))
}
}
})
}
send(data2) {
if (
this._webSocket &&
this._webSocket.readyState === this._webSocketConstructor.OPEN
) {
this._logger.log(
LogLevel.Trace,
`(WebSockets transport) sending data. ${getDataDetail(
data2,
this._logMessageContent
)}.`
)
this._webSocket.send(data2)
return Promise.resolve()
}
return Promise.reject('WebSocket is not in the OPEN state')
}
stop() {
if (this._webSocket) {
this._close(void 0)
}
return Promise.resolve()
}
_close(event) {
if (this._webSocket) {
this._webSocket.onclose = () => {}
this._webSocket.onmessage = () => {}
this._webSocket.onerror = () => {}
this._webSocket.close()
this._webSocket = void 0
}
this._logger.log(LogLevel.Trace, '(WebSockets transport) socket closed.')
if (this.onclose) {
if (
this._isCloseEvent(event) &&
(event.wasClean === false || event.code !== 1e3)
) {
this.onclose(
new Error(
`WebSocket closed with status code: ${event.code} (${
event.reason || 'no reason given'
}).`
)
)
} else if (event instanceof Error) {
this.onclose(event)
} else {
this.onclose()
}
}
}
_isCloseEvent(event) {
return (
event &&
typeof event.wasClean === 'boolean' &&
typeof event.code === 'number'
)
}
}
const MAX_REDIRECTS = 100
class HttpConnection {
constructor(url2, options2 = {}) {
this._stopPromiseResolver = () => {}
this.features = {}
this._negotiateVersion = 1
Arg.isRequired(url2, 'url')
this._logger = createLogger$1(options2.logger)
this.baseUrl = this._resolveUrl(url2)
options2 = options2 || {}
options2.logMessageContent =
options2.logMessageContent === void 0 ? false : options2.logMessageContent
if (
typeof options2.withCredentials === 'boolean' ||
options2.withCredentials === void 0
) {
options2.withCredentials =
options2.withCredentials === void 0 ? true : options2.withCredentials
} else {
throw new Error(
"withCredentials option was not a 'boolean' or 'undefined' value"
)
}
options2.timeout =
options2.timeout === void 0 ? 100 * 1e3 : options2.timeout
let webSocketModule = null
let eventSourceModule = null
if (Platform.isNode && typeof require !== 'undefined') {
const requireFunc =
typeof __webpack_require__ === 'function'
? __non_webpack_require__
: require
webSocketModule = requireFunc('ws')
eventSourceModule = requireFunc('eventsource')
}
if (
!Platform.isNode &&
typeof WebSocket !== 'undefined' &&
!options2.WebSocket
) {
options2.WebSocket = WebSocket
} else if (Platform.isNode && !options2.WebSocket) {
if (webSocketModule) {
options2.WebSocket = webSocketModule
}
}
if (
!Platform.isNode &&
typeof EventSource !== 'undefined' &&
!options2.EventSource
) {
options2.EventSource = EventSource
} else if (Platform.isNode && !options2.EventSource) {
if (typeof eventSourceModule !== 'undefined') {
options2.EventSource = eventSourceModule
}
}
this._httpClient =
options2.httpClient || new DefaultHttpClient(this._logger)
this._connectionState = 'Disconnected'
this._connectionStarted = false
this._options = options2
this.onreceive = null
this.onclose = null
}
async start(transferFormat) {
transferFormat = transferFormat || TransferFormat.Binary
Arg.isIn(transferFormat, TransferFormat, 'transferFormat')
this._logger.log(
LogLevel.Debug,
`Starting connection with transfer format '${TransferFormat[transferFormat]}'.`
)
if (this._connectionState !== 'Disconnected') {
return Promise.reject(
new Error(
"Cannot start an HttpConnection that is not in the 'Disconnected' state."
)
)
}
this._connectionState = 'Connecting'
this._startInternalPromise = this._startInternal(transferFormat)
await this._startInternalPromise
if (this._connectionState === 'Disconnecting') {
const message2 =
'Failed to start the HttpConnection before stop() was called.'
this._logger.log(LogLevel.Error, message2)
await this._stopPromise
return Promise.reject(new Error(message2))
} else if (this._connectionState !== 'Connected') {
const message2 =
"HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!"
this._logger.log(LogLevel.Error, message2)
return Promise.reject(new Error(message2))
}
this._connectionStarted = true
}
send(data2) {
if (this._connectionState !== 'Connected') {
return Promise.reject(
new Error(
"Cannot send data if the connection is not in the 'Connected' State."
)
)
}
if (!this._sendQueue) {
this._sendQueue = new TransportSendQueue(this.transport)
}
return this._sendQueue.send(data2)
}
async stop(error2) {
if (this._connectionState === 'Disconnected') {
this._logger.log(
LogLevel.Debug,
`Call to HttpConnection.stop(${error2}) ignored because the connection is already in the disconnected state.`
)
return Promise.resolve()
}
if (this._connectionState === 'Disconnecting') {
this._logger.log(
LogLevel.Debug,
`Call to HttpConnection.stop(${error2}) ignored because the connection is already in the disconnecting state.`
)
return this._stopPromise
}
this._connectionState = 'Disconnecting'
this._stopPromise = new Promise((resolve2) => {
this._stopPromiseResolver = resolve2
})
await this._stopInternal(error2)
await this._stopPromise
}
async _stopInternal(error2) {
this._stopError = error2
try {
await this._startInternalPromise
} catch (e2) {}
if (this.transport) {
try {
await this.transport.stop()
} catch (e2) {
this._logger.log(
LogLevel.Error,
`HttpConnection.transport.stop() threw error '${e2}'.`
)
this._stopConnection()
}
this.transport = void 0
} else {
this._logger.log(
LogLevel.Debug,
'HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.'
)
}
}
async _startInternal(transferFormat) {
let url2 = this.baseUrl
this._accessTokenFactory = this._options.accessTokenFactory
try {
if (this._options.skipNegotiation) {
if (this._options.transport === HttpTransportType.WebSockets) {
this.transport = this._constructTransport(
HttpTransportType.WebSockets
)
await this._startTransport(url2, transferFormat)
} else {
throw new Error(
'Negotiation can only be skipped when using the WebSocket transport directly.'
)
}
} else {
let negotiateResponse = null
let redirects = 0
do {
negotiateResponse = await this._getNegotiationResponse(url2)
if (
this._connectionState === 'Disconnecting' ||
this._connectionState === 'Disconnected'
) {
throw new Error('The connection was stopped during negotiation.')
}
if (negotiateResponse.error) {
throw new Error(negotiateResponse.error)
}
if (negotiateResponse.ProtocolVersion) {
throw new Error(
'Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.'
)
}
if (negotiateResponse.url) {
url2 = negotiateResponse.url
}
if (negotiateResponse.accessToken) {
const accessToken = negotiateResponse.accessToken
this._accessTokenFactory = () => accessToken
}
redirects++
} while (negotiateResponse.url && redirects < MAX_REDIRECTS)
if (redirects === MAX_REDIRECTS && negotiateResponse.url) {
throw new Error('Negotiate redirection limit exceeded.')
}
await this._createTransport(
url2,
this._options.transport,
negotiateResponse,
transferFormat
)
}
if (this.transport instanceof LongPollingTransport) {
this.features.inherentKeepAlive = true
}
if (this._connectionState === 'Connecting') {
this._logger.log(
LogLevel.Debug,
'The HttpConnection connected successfully.'
)
this._connectionState = 'Connected'
}
} catch (e2) {
this._logger.log(LogLevel.Error, 'Failed to start the connection: ' + e2)
this._connectionState = 'Disconnected'
this.transport = void 0
this._stopPromiseResolver()
return Promise.reject(e2)
}
}
async _getNegotiationResponse(url2) {
const headers = {}
if (this._accessTokenFactory) {
const token = await this._accessTokenFactory()
if (token) {
headers[HeaderNames.Authorization] = `Bearer ${token}`
}
}
const [name2, value2] = getUserAgentHeader()
headers[name2] = value2
const negotiateUrl = this._resolveNegotiateUrl(url2)
this._logger.log(
LogLevel.Debug,
`Sending negotiation request: ${negotiateUrl}.`
)
try {
const response = await this._httpClient.post(negotiateUrl, {
content: '',
headers: { ...headers, ...this._options.headers },
timeout: this._options.timeout,
withCredentials: this._options.withCredentials,
})
if (response.statusCode !== 200) {
return Promise.reject(
new Error(
`Unexpected status code returned from negotiate '${response.statusCode}'`
)
)
}
const negotiateResponse = JSON.parse(response.content)
if (
!negotiateResponse.negotiateVersion ||
negotiateResponse.negotiateVersion < 1
) {
negotiateResponse.connectionToken = negotiateResponse.connectionId
}
return negotiateResponse
} catch (e2) {
let errorMessage = 'Failed to complete negotiation with the server: ' + e2
if (e2 instanceof HttpError) {
if (e2.statusCode === 404) {
errorMessage =
errorMessage +
' Either this is not a SignalR endpoint or there is a proxy blocking the connection.'
}
}
this._logger.log(LogLevel.Error, errorMessage)
return Promise.reject(new FailedToNegotiateWithServerError(errorMessage))
}
}
_createConnectUrl(url2, connectionToken) {
if (!connectionToken) {
return url2
}
return (
url2 + (url2.indexOf('?') === -1 ? '?' : '&') + `id=${connectionToken}`
)
}
async _createTransport(
url2,
requestedTransport,
negotiateResponse,
requestedTransferFormat
) {
let connectUrl = this._createConnectUrl(
url2,
negotiateResponse.connectionToken
)
if (this._isITransport(requestedTransport)) {
this._logger.log(
LogLevel.Debug,
'Connection was provided an instance of ITransport, using that directly.'
)
this.transport = requestedTransport
await this._startTransport(connectUrl, requestedTransferFormat)
this.connectionId = negotiateResponse.connectionId
return
}
const transportExceptions = []
const transports = negotiateResponse.availableTransports || []
let negotiate = negotiateResponse
for (const endpoint of transports) {
const transportOrError = this._resolveTransportOrError(
endpoint,
requestedTransport,
requestedTransferFormat
)
if (transportOrError instanceof Error) {
transportExceptions.push(`${endpoint.transport} failed:`)
transportExceptions.push(transportOrError)
} else if (this._isITransport(transportOrError)) {
this.transport = transportOrError
if (!negotiate) {
try {
negotiate = await this._getNegotiationResponse(url2)
} catch (ex) {
return Promise.reject(ex)
}
connectUrl = this._createConnectUrl(url2, negotiate.connectionToken)
}
try {
await this._startTransport(connectUrl, requestedTransferFormat)
this.connectionId = negotiate.connectionId
return
} catch (ex) {
this._logger.log(
LogLevel.Error,
`Failed to start the transport '${endpoint.transport}': ${ex}`
)
negotiate = void 0
transportExceptions.push(
new FailedToStartTransportError(
`${endpoint.transport} failed: ${ex}`,
HttpTransportType[endpoint.transport]
)
)
if (this._connectionState !== 'Connecting') {
const message2 =
'Failed to select transport before stop() was called.'
this._logger.log(LogLevel.Debug, message2)
return Promise.reject(new Error(message2))
}
}
}
}
if (transportExceptions.length > 0) {
return Promise.reject(
new AggregateErrors(
`Unable to connect to the server with any of the available transports. ${transportExceptions.join(
' '
)}`,
transportExceptions
)
)
}
return Promise.reject(
new Error(
'None of the transports supported by the client are supported by the server.'
)
)
}
_constructTransport(transport) {
switch (transport) {
case HttpTransportType.WebSockets:
if (!this._options.WebSocket) {
throw new Error("'WebSocket' is not supported in your environment.")
}
return new WebSocketTransport(
this._httpClient,
this._accessTokenFactory,
this._logger,
this._options.logMessageContent,
this._options.WebSocket,
this._options.headers || {}
)
case HttpTransportType.ServerSentEvents:
if (!this._options.EventSource) {
throw new Error("'EventSource' is not supported in your environment.")
}
return new ServerSentEventsTransport(
this._httpClient,
this._accessTokenFactory,
this._logger,
this._options
)
case HttpTransportType.LongPolling:
return new LongPollingTransport(
this._httpClient,
this._accessTokenFactory,
this._logger,
this._options
)
default:
throw new Error(`Unknown transport: ${transport}.`)
}
}
_startTransport(url2, transferFormat) {
this.transport.onreceive = this.onreceive
this.transport.onclose = (e2) => this._stopConnection(e2)
return this.transport.connect(url2, transferFormat)
}
_resolveTransportOrError(
endpoint,
requestedTransport,
requestedTransferFormat
) {
const transport = HttpTransportType[endpoint.transport]
if (transport === null || transport === void 0) {
this._logger.log(
LogLevel.Debug,
`Skipping transport '${endpoint.transport}' because it is not supported by this client.`
)
return new Error(
`Skipping transport '${endpoint.transport}' because it is not supported by this client.`
)
} else {
if (transportMatches(requestedTransport, transport)) {
const transferFormats = endpoint.transferFormats.map(
(s2) => TransferFormat[s2]
)
if (transferFormats.indexOf(requestedTransferFormat) >= 0) {
if (
(transport === HttpTransportType.WebSockets &&
!this._options.WebSocket) ||
(transport === HttpTransportType.ServerSentEvents &&
!this._options.EventSource)
) {
this._logger.log(
LogLevel.Debug,
`Skipping transport '${HttpTransportType[transport]}' because it is not supported in your environment.'`
)
return new UnsupportedTransportError(
`'${HttpTransportType[transport]}' is not supported in your environment.`,
transport
)
} else {
this._logger.log(
LogLevel.Debug,
`Selecting transport '${HttpTransportType[transport]}'.`
)
try {
return this._constructTransport(transport)
} catch (ex) {
return ex
}
}
} else {
this._logger.log(
LogLevel.Debug,
`Skipping transport '${HttpTransportType[transport]}' because it does not support the requested transfer format '${TransferFormat[requestedTransferFormat]}'.`
)
return new Error(
`'${HttpTransportType[transport]}' does not support ${TransferFormat[requestedTransferFormat]}.`
)
}
} else {
this._logger.log(
LogLevel.Debug,
`Skipping transport '${HttpTransportType[transport]}' because it was disabled by the client.`
)
return new DisabledTransportError(
`'${HttpTransportType[transport]}' is disabled by the client.`,
transport
)
}
}
}
_isITransport(transport) {
return transport && typeof transport === 'object' && 'connect' in transport
}
_stopConnection(error2) {
this._logger.log(
LogLevel.Debug,
`HttpConnection.stopConnection(${error2}) called while in state ${this._connectionState}.`
)
this.transport = void 0
error2 = this._stopError || error2
this._stopError = void 0
if (this._connectionState === 'Disconnected') {
this._logger.log(
LogLevel.Debug,
`Call to HttpConnection.stopConnection(${error2}) was ignored because the connection is already in the disconnected state.`
)
return
}
if (this._connectionState === 'Connecting') {
this._logger.log(
LogLevel.Warning,
`Call to HttpConnection.stopConnection(${error2}) was ignored because the connection is still in the connecting state.`
)
throw new Error(
`HttpConnection.stopConnection(${error2}) was called while the connection is still in the connecting state.`
)
}
if (this._connectionState === 'Disconnecting') {
this._stopPromiseResolver()
}
if (error2) {
this._logger.log(
LogLevel.Error,
`Connection disconnected with error '${error2}'.`
)
} else {
this._logger.log(LogLevel.Information, 'Connection disconnected.')
}
if (this._sendQueue) {
this._sendQueue.stop().catch((e2) => {
this._logger.log(
LogLevel.Error,
`TransportSendQueue.stop() threw error '${e2}'.`
)
})
this._sendQueue = void 0
}
this.connectionId = void 0
this._connectionState = 'Disconnected'
if (this._connectionStarted) {
this._connectionStarted = false
try {
if (this.onclose) {
this.onclose(error2)
}
} catch (e2) {
this._logger.log(
LogLevel.Error,
`HttpConnection.onclose(${error2}) threw error '${e2}'.`
)
}
}
}
_resolveUrl(url2) {
if (
url2.lastIndexOf('https://', 0) === 0 ||
url2.lastIndexOf('http://', 0) === 0
) {
return url2
}
if (!Platform.isBrowser) {
throw new Error(`Cannot resolve '${url2}'.`)
}
const aTag = window.document.createElement('a')
aTag.href = url2
this._logger.log(
LogLevel.Information,
`Normalizing '${url2}' to '${aTag.href}'.`
)
return aTag.href
}
_resolveNegotiateUrl(url2) {
const index2 = url2.indexOf('?')
let negotiateUrl = url2.substring(0, index2 === -1 ? url2.length : index2)
if (negotiateUrl[negotiateUrl.length - 1] !== '/') {
negotiateUrl += '/'
}
negotiateUrl += 'negotiate'
negotiateUrl += index2 === -1 ? '' : url2.substring(index2)
if (negotiateUrl.indexOf('negotiateVersion') === -1) {
negotiateUrl += index2 === -1 ? '?' : '&'
negotiateUrl += 'negotiateVersion=' + this._negotiateVersion
}
return negotiateUrl
}
}
function transportMatches(requestedTransport, actualTransport) {
return !requestedTransport || (actualTransport & requestedTransport) !== 0
}
class TransportSendQueue {
constructor(_transport) {
this._transport = _transport
this._buffer = []
this._executing = true
this._sendBufferedData = new PromiseSource()
this._transportResult = new PromiseSource()
this._sendLoopPromise = this._sendLoop()
}
send(data2) {
this._bufferData(data2)
if (!this._transportResult) {
this._transportResult = new PromiseSource()
}
return this._transportResult.promise
}
stop() {
this._executing = false
this._sendBufferedData.resolve()
return this._sendLoopPromise
}
_bufferData(data2) {
if (this._buffer.length && typeof this._buffer[0] !== typeof data2) {
throw new Error(
`Expected data to be of type ${typeof this
._buffer} but was of type ${typeof data2}`
)
}
this._buffer.push(data2)
this._sendBufferedData.resolve()
}
async _sendLoop() {
while (true) {
await this._sendBufferedData.promise
if (!this._executing) {
if (this._transportResult) {
this._transportResult.reject('Connection stopped.')
}
break
}
this._sendBufferedData = new PromiseSource()
const transportResult = this._transportResult
this._transportResult = void 0
const data2 =
typeof this._buffer[0] === 'string'
? this._buffer.join('')
: TransportSendQueue._concatBuffers(this._buffer)
this._buffer.length = 0
try {
await this._transport.send(data2)
transportResult.resolve()
} catch (error2) {
transportResult.reject(error2)
}
}
}
static _concatBuffers(arrayBuffers) {
const totalLength = arrayBuffers
.map((b2) => b2.byteLength)
.reduce((a2, b2) => a2 + b2)
const result = new Uint8Array(totalLength)
let offset2 = 0
for (const item2 of arrayBuffers) {
result.set(new Uint8Array(item2), offset2)
offset2 += item2.byteLength
}
return result.buffer
}
}
class PromiseSource {
constructor() {
this.promise = new Promise(
(resolve2, reject2) =>
([this._resolver, this._rejecter] = [resolve2, reject2])
)
}
resolve() {
this._resolver()
}
reject(reason) {
this._rejecter(reason)
}
}
const JSON_HUB_PROTOCOL_NAME = 'json'
class JsonHubProtocol {
constructor() {
this.name = JSON_HUB_PROTOCOL_NAME
this.version = 1
this.transferFormat = TransferFormat.Text
}
parseMessages(input, logger) {
if (typeof input !== 'string') {
throw new Error('Invalid input for JSON hub protocol. Expected a string.')
}
if (!input) {
return []
}
if (logger === null) {
logger = NullLogger.instance
}
const messages2 = TextMessageFormat.parse(input)
const hubMessages = []
for (const message2 of messages2) {
const parsedMessage = JSON.parse(message2)
if (typeof parsedMessage.type !== 'number') {
throw new Error('Invalid payload.')
}
switch (parsedMessage.type) {
case MessageType.Invocation:
this._isInvocationMessage(parsedMessage)
break
case MessageType.StreamItem:
this._isStreamItemMessage(parsedMessage)
break
case MessageType.Completion:
this._isCompletionMessage(parsedMessage)
break
case MessageType.Ping:
break
case MessageType.Close:
break
default:
logger.log(
LogLevel.Information,
"Unknown message type '" + parsedMessage.type + "' ignored."
)
continue
}
hubMessages.push(parsedMessage)
}
return hubMessages
}
writeMessage(message2) {
return TextMessageFormat.write(JSON.stringify(message2))
}
_isInvocationMessage(message2) {
this._assertNotEmptyString(
message2.target,
'Invalid payload for Invocation message.'
)
if (message2.invocationId !== void 0) {
this._assertNotEmptyString(
message2.invocationId,
'Invalid payload for Invocation message.'
)
}
}
_isStreamItemMessage(message2) {
this._assertNotEmptyString(
message2.invocationId,
'Invalid payload for StreamItem message.'
)
if (message2.item === void 0) {
throw new Error('Invalid payload for StreamItem message.')
}
}
_isCompletionMessage(message2) {
if (message2.result && message2.error) {
throw new Error('Invalid payload for Completion message.')
}
if (!message2.result && message2.error) {
this._assertNotEmptyString(
message2.error,
'Invalid payload for Completion message.'
)
}
this._assertNotEmptyString(
message2.invocationId,
'Invalid payload for Completion message.'
)
}
_assertNotEmptyString(value2, errorMessage) {
if (typeof value2 !== 'string' || value2 === '') {
throw new Error(errorMessage)
}
}
}
const LogLevelNameMapping = {
trace: LogLevel.Trace,
debug: LogLevel.Debug,
info: LogLevel.Information,
information: LogLevel.Information,
warn: LogLevel.Warning,
warning: LogLevel.Warning,
error: LogLevel.Error,
critical: LogLevel.Critical,
none: LogLevel.None,
}
function parseLogLevel(name2) {
const mapping = LogLevelNameMapping[name2.toLowerCase()]
if (typeof mapping !== 'undefined') {
return mapping
} else {
throw new Error(`Unknown log level: ${name2}`)
}
}
class HubConnectionBuilder {
configureLogging(logging) {
Arg.isRequired(logging, 'logging')
if (isLogger(logging)) {
this.logger = logging
} else if (typeof logging === 'string') {
const logLevel = parseLogLevel(logging)
this.logger = new ConsoleLogger(logLevel)
} else {
this.logger = new ConsoleLogger(logging)
}
return this
}
withUrl(url2, transportTypeOrOptions) {
Arg.isRequired(url2, 'url')
Arg.isNotEmpty(url2, 'url')
this.url = url2
if (typeof transportTypeOrOptions === 'object') {
this.httpConnectionOptions = {
...this.httpConnectionOptions,
...transportTypeOrOptions,
}
} else {
this.httpConnectionOptions = {
...this.httpConnectionOptions,
transport: transportTypeOrOptions,
}
}
return this
}
withHubProtocol(protocol) {
Arg.isRequired(protocol, 'protocol')
this.protocol = protocol
return this
}
withAutomaticReconnect(retryDelaysOrReconnectPolicy) {
if (this.reconnectPolicy) {
throw new Error('A reconnectPolicy has already been set.')
}
if (!retryDelaysOrReconnectPolicy) {
this.reconnectPolicy = new DefaultReconnectPolicy()
} else if (Array.isArray(retryDelaysOrReconnectPolicy)) {
this.reconnectPolicy = new DefaultReconnectPolicy(
retryDelaysOrReconnectPolicy
)
} else {
this.reconnectPolicy = retryDelaysOrReconnectPolicy
}
return this
}
build() {
const httpConnectionOptions = this.httpConnectionOptions || {}
if (httpConnectionOptions.logger === void 0) {
httpConnectionOptions.logger = this.logger
}
if (!this.url) {
throw new Error(
"The 'HubConnectionBuilder.withUrl' method must be called before building the connection."
)
}
const connection2 = new HttpConnection(this.url, httpConnectionOptions)
return HubConnection.create(
connection2,
this.logger || NullLogger.instance,
this.protocol || new JsonHubProtocol(),
this.reconnectPolicy
)
}
}
function isLogger(logger) {
return logger.log !== void 0
}
let clientType_id = `browser_${`${dayjs().format(
'YYYYMMDDHHmmssSSS'
)}_${Math.random().toString(36).slice(2)}`}`
let local_id = localStorage.getItem('local_id')
let currentClientId_local = ''
if (!local_id) {
localStorage.setItem('local_id', clientType_id)
currentClientId_local = clientType_id
} else {
currentClientId_local = local_id
}
class Socket {
url = `/hubs/v1/variables?clientId=${currentClientId_local}`
name = '\u53D8\u91CF\u670D\u52A1'
connection
callbackMap = /* @__PURE__ */ new Map()
constructor(object4 = {}) {
Object.assign(this, object4)
this.connection = Socket.createConnection(this.url)
Socket.lockWS()
}
call(...args) {
this.connection.invoke(...args)
}
on(type4, callback, params2 = {}) {
const connection2 = this.connection
const callbackId = `callback_${Math.random().toString(32).slice(-8)}`
const callbackInfo = {
type: type4,
params: params2,
callbackId,
}
connection2.invoke('on', callbackInfo)
connection2.on(callbackId, callback)
this.callbackMap.set(callback, callbackInfo)
return () => {
this.off(type4, callback)
}
}
useOn(...args) {
const off2 = this.on(...args)
onUnmounted(() => {
this.off(args[0], args[1])
})
return off2
}
off(type4, callback) {
const connection2 = this.connection
const callbackInfo = this.callbackMap.get(callback)
if (!callbackInfo) return
const callbackId = callbackInfo.callbackId
connection2.invoke('off', callbackInfo)
connection2.off(callbackId)
this.callbackMap.delete(callback)
}
startCount = 0
async start() {
if (this.startCount) return
let resolve2
const promise2 = new Promise((r2) => (resolve2 = r2))
const self2 = this
const singleToast = createSingleToast()
const connection2 = this.connection
const toast2 = function (...args) {
if (args[2] !== -1) {
singleToast(...args)
}
const methodMap = {
warning: 'warn',
error: 'error',
}
const method4 = methodMap[args[1]] || 'log'
console[method4]('[Socket]', ...args)
}
const start2 = async () => {
if (connection2.state !== 'Disconnected') return
if (this.startCount)
toast2(
`${Language$1._t(self2.name)}\uFF1A${Language$1._t(
'\u8FDE\u63A5\u5DF2\u65AD\u5F00\uFF0C\u91CD\u65B0\u8FDE\u63A5\u4E2D'
)}...`,
'warning',
0
)
self2.startCount += 1
const first2 = this.startCount === 1
connection2
.start()
.then(() => {
if (first2) {
toast2(
`${Language$1._t(self2.name)}\uFF1A${Language$1._t(
'\u8FDE\u63A5\u6210\u529F'
)}`,
'success',
-1
)
resolve2()
} else {
toast2(
`${Language$1._t(self2.name)}\uFF1A${Language$1._t(
'\u91CD\u65B0\u8FDE\u63A5\u6210\u529F'
)}`,
'success'
)
for (const [, callbackInfo] of this.callbackMap) {
connection2.invoke('on', callbackInfo)
}
}
})
.catch(() => {
const delay2 = Math.min(this.startCount * 1e3, 1e4)
toast2(
`${Language$1._t(self2.name)}\uFF1A${Language$1._t(
'\u8FDE\u63A5\u5931\u8D25'
)}\uFF0C${delay2 / 1e3}${Language$1._t('s\u540E\u91CD\u8BD5')}`,
'error',
0
)
setTimeout(start2, delay2)
})
}
connection2.onclose(async () => {
toast2(
`${Language$1._t(self2.name)}\uFF1A${Language$1._t(
'\u8FDE\u63A5\u5DF2\u65AD\u5F00'
)}`,
'error',
0
)
await start2()
})
await start2()
return promise2
}
static lockWS() {
navigator.locks?.request('ws', { mode: 'shared' }, function () {
return new Promise(() => {})
})
}
static createConnection(url2) {
const connection2 = new HubConnectionBuilder()
.withUrl(`${baseURL}${url2}`)
.configureLogging(LogLevel.Information)
.build()
return connection2
}
}
var __glob_0_13 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
Socket,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
class Variable extends Base {
constructor(Ce = {}, Ee = app.current.project) {
super(), (this.project = Ee)
const _e = Variable.getByName(Ce.name, Ee),
Be = _e || this
return Object.assign(Be, Ce), _e || (Ee.variableMap[Be.name] = Be), Be
}
project
collectStatus = !1
dataQuality
_value
oldValue
/** 仅由后端推送时更新 */
serverValue
updateTime = ''
id = ''
tunnelType = null
// 变量通道类型
groupId = null
// 变量组
name = ''
description = ''
type = NaN
// 数据类型
typeName = ''
// 数据类型名称
readWriteMode = 0
// 读写访问
archiveSetting = null
// 历史归档配置
historicBriefMsg = null
// 归档配置简要信息
historicGroupId = null
// 归档关联的历史组id
historicGroupName = null
// 归档关联的历史组名称
// IO变量
address = ''
interval = 1e3
// 采集间隔
collectMode = 0
// 采集模式
stringLength = null
//字符长度
zoom = null
// 缩放比
digit = null
// 小数位数
readWriteRule = 1
// 读写规则
// 系统变量
scopeType = 0
// 变量作用域
// 内部变量
initType = 0
// 初始值类型
setValue = null
// 初始值
// 逻辑变量
expression = null
// 映射变量
mappingVariable = null
// 访问变量
shareTag = null
/** 更新属性,不触发下发 */
assign(Ce) {
const Ee = { ...Ce }
return (
'value' in Ee &&
(Ee.value !== this._value && (Ee._value = Ee.value), delete Ee.value),
Object.assign(this, Ee),
this
)
}
get value() {
return this._value
}
/**
* 自动下发
*/
set value(Ce) {
this.set(Ce)
}
get() {
return this._value
}
/**
* 下发且同步更新本地
*/
set(Ce) {
Variable.applyPost(this, Ce, this.value), (this._value = Ce)
}
/**
* 仅下发,不马上更新本地
* @param newValue
*/
post(Ce) {
Variable.applyPost(this, Ce, this.value)
}
/**
* 合并所有变量变更,统一下发
*/
static postBufferMap = /* @__PURE__ */ new Map()
/**
* 收集变化
* @param variable
* @param newValue
*/
static applyPost(Ce, Ee, _e) {
let Be = Variable.postBufferMap.get(Ce.name)
Be
? (Be.newValue = Ee)
: ((Be = {
variable: Ce,
newValue: Ee,
value: _e,
}),
Variable.postBufferMap.set(Ce.name, Be)),
setTimeout(() => {
const Ie = Variable.postBufferMap
Ie.size &&
((Variable.postBufferMap = /* @__PURE__ */ new Map()),
Variable.post(Ie))
})
}
/**
* 下发,如果失败则恢复旧值
* @param map
* @returns
*/
static post(Ce) {
if (!Ce.size) return
const Ee = {},
_e = {}
for (const [Be, { newValue: Ie }] of Ce)
(_e[Be] = Ie), (Ee[Be] = String(_e[Be]))
request
.post('/api/v1/variable/setvalues', Ee)
.then((Be) => {
let Ie = ''
for (const Se in Be.items) {
const xe = Be.items[Se]
if (xe.quality) {
Ie += `${Se}: ${xe.errorMsg || Language$1._t('下发失败')}`
const Te = Ce.get(Se)
if (Te) {
const { variable: De, value: $e } = Te
De._value = $e
}
}
if (xe.quality == 0) {
const Te = Ce.get(Se)
if (Te) {
const { variable: De, newValue: $e } = Te
$e != xe.value && (De._value = xe.value)
}
}
}
Be.allSuccess || (console.error(Be), toast(Ie, 'error'))
})
.catch(() => {
for (const [, { variable: Be, value: Ie }] of Ce) Be._value = Ie
})
}
remove() {
const Ce = this.project.variableMap
delete Ce[this.name]
}
static get map() {
return app.current.project.variableMap
}
static get valueMap() {
return app.current.project.variableValueMap
}
static get oldValueMap() {
return app.current.project.variableOldValueMap
}
static getByName(Ce, Ee = app.current.project) {
return Ee.variableMap[Ce]
}
/**
* 读写变量
* 仅下发,不更新本地
* 下发成功后,后端会重新推送过来才会更新本地
* @example
* Variable.store.varName = 'varValue'
*/
static get store() {
return new Proxy(Variable.valueMap, {
get(Ce, Ee) {
return Variable.getByName(Ee)?.value
},
set(Ce, Ee, _e) {
return new Variable({ name: Ee }).post(_e), !0
},
})
}
/**
* 读写变量
* 不下发,仅更新本地
*/
static get _store() {
return new Proxy(Variable.valueMap, {
get(Ce, Ee) {
return Variable.getByName(Ee)?.value
},
set(Ce, Ee, _e) {
const Be = new Variable({ name: Ee })
return (Be._value = _e), !0
},
})
}
/**
* 读写变量
* 下发,且同步更新本地
*/
static get _store_() {
return new Proxy(Variable.valueMap, {
get(Ce, Ee) {
return Variable.getByName(Ee)?.value
},
set(Ce, Ee, _e) {
const Be = new Variable({ name: Ee })
return (Be.value = _e), !0
},
})
}
static socket
/**
* 启动变量监听
* {@link app} 创建完成后启动
*
*/
static async start() {
const Ce = (this.socket = new Socket()),
Ee = Ce.connection
let _e
const Be = new Promise((Te) => (_e = Te))
Ee.on(
'variablesChange',
/**
* @param data
*```
{
"System_Date": {
"type": 11,
"typeName": "日期",
"tunnelType": 2,
"config": {
"scopeType": 0,
"initType": 0,
"setValue": null,
"exitValue": null,
"readWriteMode": 1
},
"description": "Variable:SysVarDesc:System_Date",
"name": "System_Date",
"collectStatus": true,
"value": "2024/11/7 00:00:00",
"dataQuality": 0,
"updateTime": "2024-11-07T02:21:21.181Z"
}
}
*```
*/
(Te) => {
Ie(Te)
}
),
Ee.on('OnReceivedAllVariablesChanged', (Te) => {
Ie(Se(Te))
}),
Ee.on('OnReceivedVariableChanged', (Te) => {
Ie(Te)
})
function Ie(Te) {
xe(function () {
for (const $e in Te) {
const ke = Te[$e],
Ve = new Variable({ name: $e })
'value' in ke &&
((ke.oldValue = Ve.value), (ke.serverValue = ke.value)),
Ve.assign(ke)
}
_e(Te)
})
}
function Se(Te) {
const De = {}
for (const $e in Te) {
const ke = Te[$e]
if ('new' in ke) {
const Ve = {
name: ke.name,
...ke.new,
dataQuality: ke.new?.dataQuality ?? void 0,
}
De[$e] = Ve
}
}
return De
}
function xe(Te) {
document.hidden
? Te()
: requestAnimationFrame(() => {
Te()
})
}
return await Ce.start(), Be
}
/**
* 后端推送的类型不正确,临时转换处理
* @todo 后端处理正确后,应该去掉
* @param value
* @returns
*/
static convertRemoteValue(Ce) {
return (
Ce === 'True' && (Ce = !0),
Ce === 'False' && (Ce = !1),
Ce && typeof Ce == 'string' && !isNaN(Number(Ce)) && (Ce = Number(Ce)),
Ce
)
}
static isVarName(Ce) {
return Expression.isValidVariableName(Ce)
}
/**
* 通过表达式求值
* @deprecated 请使用 {@link Expression}
* @param code 表达式
* @returns 值
* @example
* Variable.exp('m')
* Variable.exp('m * n')
* Variable.exp('m > n ? 1 : 0')
*/
static exp(Ce) {
return console.warn('Variable.exp 已弃用'), Expression.getValue(Ce)
}
/**
* 监听表达式的值的变化
* @deprecated 请使用 {@link Expression}
*/
static watchExp(Ce, Ee) {
return new Expression(Ce).watch(Ee)
}
/**
* 表达式输入框tooltip提示
* @deprecated 请使用 {@link Expression}
*/
static get expTitleTip() {
return Expression.inputTip
}
/**
* 数据类型
*/
static types = {
0: {
code: 'binary',
label: '二进制变量',
classify: '二进制',
},
1: {
code: 'int8',
label: '有符号8位整型',
classify: '整型',
},
2: {
code: 'uint8',
label: '无符号8位整型',
classify: '整型',
},
3: {
code: 'int16',
label: '有符号16位整型',
classify: '整型',
},
4: {
code: 'uint16',
label: '无符号16位整型',
classify: '整型',
},
5: {
code: 'int32',
label: '有符号32位整型',
classify: '整型',
},
6: {
code: 'uint32',
label: '无符号32位整型',
classify: '整型',
},
7: {
code: 'int64',
label: '有符号64位整型',
classify: '整型',
},
8: {
code: 'uint64',
label: '无符号64位整型',
classify: '整型',
},
9: {
code: 'float32',
label: 'F32位浮点数IEEE754',
classify: '浮点型',
},
10: {
code: 'float64',
label: 'F64位浮点数IEEE754',
classify: '浮点型',
},
11: {
code: 'date',
label: '日期',
classify: '时间',
},
12: {
code: 'time',
label: '时间',
classify: '时间',
},
13: {
code: 'datetime',
label: '日期时间',
classify: '时间',
},
14: {
code: 'string',
label: '字符串',
classify: '字符串',
},
15: {
code: 'wstring',
label: '宽字符串',
classify: '字符串',
},
16: {
code: 'str8',
label: '文本变量8位字符集',
classify: '字符串',
},
17: {
code: 'str16',
label: '文本变量16位字符集',
classify: '字符串',
},
18: {
code: 'timer',
label: '定时器',
classify: '整型',
},
19: {
code: 'ASCII',
label: 'ASCII字符集',
classify: '字符串',
},
}
/**
* 数据类型分类
*/
static typeClassify = {
二进制: 0,
整型: 1,
浮点型: 2,
字符串: 3,
时间: 4,
}
/**
* 分类下数据类型
*/
static get typeClassifyMap() {
const Ce = {}
for (let [Ee, _e] of Object.entries(Variable.types)) {
const Be = _e.classify
Ce[Be] ||
(Ce[Be] = {
value: Variable.typeClassify[Be],
types: [],
labels: [],
codes: [],
}),
Ce[Be].types.push(Number(Ee)),
Ce[Be].labels.push(_e.label),
Ce[Be].codes.push(_e.code)
}
return Ce
}
/**
* 通过code获取字符label
* @param code 字符code
* @returns
*/
static getLabelByCode(Ce) {
const Ee = Object.values(Variable.types).find((_e) => _e.code === Ce)
return Ee && Ee.label
}
/**
* 根据变量名判断变量是否存在
* @param name string
* @returns variable[]
*/
static async isVariableByName(Ce) {
return (
await request({
url: '/api/v1/variable/query',
method: 'get',
params: {
keyword: Ce,
keywordOnlySearchName: !0,
},
silent: !0,
})
).result
}
// 变量通道类型
static tunnelTypes = {
1: '外部变量',
2: '系统变量',
3: '内部变量',
4: '逻辑变量',
5: 'I/O映射',
6: 'CMS站点',
}
/**
* 获取变量通道类型
* @param tunnelType Variable['tunnelType']
* @returns string
*/
static getTunnelName(Ce) {
return Ce === null ? '' : Variable.tunnelTypes[Ce] || ''
}
/**
* 判断某分类下数据类型
* @param classifyKey 数据类型分类 key
* @param type 数据类型 key
* @param label 数据类型 label 值
* @param code 数据类型 code 值
* @example
* Variable.checkTypeClassify('整型', {type: 2})
* Variable.checkTypeClassify(['整型','浮点型'], {type: 2})
*/
static checkTypeClassify(Ce, Ee = {}) {
let _e = !1
for (let [Be, Ie] of Object.entries(Ee))
if (Ie !== void 0) {
_e = (typeof Ce == 'string' ? [Ce] : Ce)
.reduce(
(Te, De) => Te.concat(Variable.typeClassifyMap[De][`${Be}s`]),
[]
)
.includes(Ie)
break
}
return _e
}
/**
* 判断是否是二进制
*/
static isBinaryType(Ce = {}) {
return Variable.checkTypeClassify('二进制', Ce)
}
/**
* 判断是否是int类型
*/
static isIntType(Ce = {}) {
return Variable.checkTypeClassify('整型', Ce)
}
/**
* 判断是否是浮点型
*/
static isFloatType(Ce = {}) {
return Variable.checkTypeClassify('浮点型', Ce)
}
/**
* 判断是否是字符串
*/
static isStringType(Ce = {}) {
return Variable.checkTypeClassify('字符串', Ce)
}
/**
* 判断是否是时间
*/
static isTimeType(Ce = {}) {
return Variable.checkTypeClassify('时间', Ce)
}
/**
* 判断是否是数字
*/
static isNumberType(Ce = {}) {
return Variable.checkTypeClassify(['整型', '浮点型'], Ce)
}
/**
* 读写访问
*/
static readWriteModeTypes = {
0: '读写',
1: '只读',
2: '只写',
}
/**
* 读写规则
*/
static readWriteRuleTypes = {
1: '舍位取数',
2: '四舍五入',
3: '进位取数',
}
/**
* 初始值类型
*/
static InitTypeTypes = {
1: '设定值',
2: '保存值',
0: '无',
}
/**
* 变量作用域
*/
static scopeTypeTypes = {
0: '服务端',
1: '客户端',
}
/**
* 采集模式
*/
static collectModes = {
1: '页面使用',
// 被动采集,页面模式
0: '服务运行',
// 主动采集,服务模式
}
}
var __glob_0_14 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
Variable,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
class Expression extends Base {
constructor(expression = {}) {
if (typeof expression === 'string') {
expression = { code: expression }
}
super()
Object.assign(this, expression)
}
code = ''
toString() {
return this.code
}
toValue(throwError2 = false) {
return Expression.getValue(this.code, throwError2)
}
watch(callback) {
const unWatch = watch$1(() => this.toValue(), callback)
return unWatch
}
static get $vars() {
return app.current.project.variableValueMap
}
static TOKEN_REG =
/(["'`])((\\.|[^])*?)(\1)|(\/\/)(.*)|(\/\*)([^]*?)(\*\/)|(\.\s*)?([^`~!@#%^&*()\-=+[{}\];:'"\\|,<.>/?\s]+)/g
static codeFunctionCache = /* @__PURE__ */ new Map()
static inputTip = `\u5B57\u7B26\u4E32\u4F7F\u7528\u82F1\u6587\u5F15\u53F7 "str" 'str'`
static getValue(code2, throwError2 = false, $vars = Expression.$vars) {
let fn2 = Expression.codeFunctionCache.get(code2)
try {
if (!fn2) {
fn2 = Function(
`
var $vars = arguments[0]
var __vs__ = $vars
with($vars) {
return (function(){
"use strict"
return (${code2})
})()
}
`
)
Expression.codeFunctionCache.set(code2, fn2)
}
var value2 = fn2($vars)
return value2
} catch (error2) {
if (throwError2) {
throw error2
}
}
}
static getVars(code2) {
let tokens = code2.match(Expression.TOKEN_REG) || []
let vars = tokens.filter((v4) => Variable.isVarName(v4))
vars = [...new Set(vars)]
return vars
}
static isValidVariableName(name2) {
try {
return Function(name2, `return ${name2}==="${name2}"`)(name2)
} catch {
return false
}
}
static isValid(code2 = '') {
try {
Function(`return (${code2})`)
return true
} catch (error2) {
return false
}
}
static string(text2) {
return this.wrapQuotes(text2)
}
static wrapQuotes(text2) {
return `"${text2.replace(/['"`\\\s]/g, '\\$&')}"`
}
static unwrapQuotes(code2) {
if (/^['"`]/.test(code2)) {
return Expression.getValue(code2) ?? code2
}
return code2
}
static valueToCode(value2) {
if (value2 === void 0) return 'undefined'
try {
return JSON.stringify(value2)
} catch (error2) {
console.error(`valueToCode error\uFF1A${error2}, value\uFF1A${value2}`)
return 'undefined'
}
}
static inputToValue(input, type4) {
if (type4 === 'boolean') {
if (input === 'true' || input === '1') {
return true
}
if (input === 'false' || input === '0') {
return false
}
}
if (type4 === 'number') {
let val2 = Number(input)
if (!isNaN(val2)) {
return val2
}
}
return input
}
}
var __glob_0_6 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
Expression,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const wm = /* @__PURE__ */ new WeakMap()
class Block extends Base {
class = this.constructor.class
children = []
id = utils.createRandomId()
get isExpand() {
let rs2 = wm.get(this)?.expand || false
return rs2
}
set isExpand(bool2) {
const privateMembers = wm.get(this) || {}
privateMembers.expand = bool2
wm.set(this, privateMembers)
for (const child of this.children) {
child.isExpand = bool2
}
}
constructor(object4 = {}) {
super()
if (this.constructor === Block) {
let block
if (object4.class === OnBlock.class) {
block = new OnBlock(object4)
block.event = new EventBlock(object4.event)
}
if (object4.class === IfBlock.class) {
block = new IfBlock(object4)
}
if (object4.class === CallBlock.class) {
block = new CallBlock(object4)
}
if (!block) {
console.error('[Block] unknown', object4)
block = this
}
for (const [i2, child] of (object4.children || []).entries()) {
block.children[i2] = new Block(child)
}
return block
}
}
static createArray(objectArray) {
for (const [i2, object4] of objectArray.entries()) {
objectArray[i2] = new Block(object4)
}
return objectArray
}
static codeToValue(code2) {
try {
return Function(`return ${code2}`)()
} catch (error2) {
console.error(`codeToValue error\uFF1A${error2}, code\uFF1A${code2}`)
}
}
static valueToCode(value2) {
if (value2 === void 0) return 'undefined'
try {
return JSON.stringify(value2)
} catch (error2) {
console.error(`valueToCode error\uFF1A${error2}, value\uFF1A${value2}`)
return 'undefined'
}
}
static fixValue(value2) {
try {
return Function(`return ${value2}`)()
} catch (error2) {
return value2
}
}
toCode() {
return ''
}
}
class OnBlock extends Block {
static class = 'OnBlock'
event = new EventBlock()
isEnable = true
_onProps
constructor(object4 = {}) {
super()
Object.assign(this, object4)
}
toJSON() {
return {
...this,
_onProps: void 0,
}
}
toCode() {
return `
${this.children.map((c2) => c2.toCode()).join('\n')}
`
}
getCallback() {
const f2 = Expression.getValue(
`
async function(event){
${this.toCode()}
}
`,
true
)
return f2
}
getCallbackCatch() {
const self2 = this
async function fCatch(event = {}) {
let f2
try {
f2 = self2.getCallback()
await f2(event)
} catch (error2) {
toast(
`${Language$1._t('\u4E8B\u4EF6\u914D\u7F6E\u6709\u8BEF')}\uFF1A` +
error2,
'warning'
)
console.error(
'\u4E8B\u4EF6\u914D\u7F6E\u6709\u8BEF\uFF1A',
error2,
'\n',
f2 || self2.toCode(),
'\n',
self2
)
}
}
return fCatch
}
getOnProp() {
if (this._onProps) {
return this._onProps
}
const onProps = {}
const type4 = this.event.type
const Type2 = type4.replace(/^./, ($2) => $2.toUpperCase())
const Capture = ['focus', 'blur'].includes(type4) ? `Capture` : ''
const onType = `on${Type2}${Capture}`
const callback = this.getCallbackCatch()
onProps[onType] = callback
if (onProps.onMounted) {
onProps.onVnodeMounted = onProps.onMounted
}
if (onProps.onUnmounted) {
onProps.onVnodeUnmounted = onProps.onUnmounted
}
if (type4 === 'broadcast') {
const broadcastCallback = (e2) => {
if (!(e2 instanceof CustomEvent)) return
const message2 = e2.detail
const expression = this.event.detail.expression || 'undefined'
const value2 = Expression.getValue(expression, true)
if (value2 === message2) {
callback()
}
}
onProps.onVnodeMounted = function () {
addEventListener('broadcast', broadcastCallback)
}
onProps.onVnodeUnmounted = function () {
removeEventListener('broadcast', broadcastCallback)
}
}
if (type4 === EventBlock.types.variable) {
const callback2 = this.getCallbackCatch()
const expression = this.event.detail.expression || 'undefined'
let condition2 = this.event.detail.condition ?? 0
let firstError = true
let value2 = void 0
let lastValue = Expression.getValue(expression)
const ifCallback = {
0() {},
1() {
if (!!value2 !== !!lastValue && value2) {
callback2()
}
},
2() {
if (!!value2 !== !!lastValue && !value2) {
callback2()
}
},
3() {
if (value2 !== lastValue) {
callback2()
}
},
4() {
if (!!value2 !== !!lastValue) {
callback2()
}
},
}[condition2]
let lastVariableChangeFlag = Variable.state.variableChangeFlag
const variableCallback = () => {
if (lastVariableChangeFlag === Variable.state.variableChangeFlag) {
return
}
lastVariableChangeFlag = Variable.state.variableChangeFlag
try {
value2 = Expression.getValue(expression, true)
ifCallback()
lastValue = value2
} catch (error2) {
toast(String(error2), 'warning')
if (firstError) {
firstError = false
console.error(error2)
}
}
}
let off2
onProps.onVnodeMounted = function () {
off2 = watchEffect(variableCallback)
}
onProps.onVnodeUnmounted = function () {
off2()
}
}
if (type4 === EventBlock.types.timer) {
const callback2 = this.getCallbackCatch()
const detail = this.event.detail
let timer2
onProps.onVnodeMounted = function () {
timer2 = app.dataeventSocket.on('BeginInterval', callback2, {
startTime: new Date(detail.start),
interval: detail.frequency,
intervalType: detail.unit,
endTime: detail.end === '' ? null : new Date(detail.end),
})
}
onProps.onVnodeUnmounted = function () {
timer2?.()
}
}
if (type4 === EventBlock.types.alarm) {
const callback2 = this.getCallbackCatch()
const detail = this.event.detail
let alarmTimer = []
onProps.onVnodeMounted = function () {
detail.checkedList.forEach((item2) => {
let offTimer = app.dataeventSocket.on('BeginAlarmEvent', callback2, {
alarmPointID: item2,
})
alarmTimer.push(offTimer)
})
}
onProps.onVnodeUnmounted = function () {
alarmTimer.forEach((timer2) => {
timer2()
})
}
}
if (type4 === EventBlock.types.alarmRecovery) {
const callback2 = this.getCallbackCatch()
const detail = this.event.detail
let alarmRecovery
onProps.onVnodeMounted = function () {
alarmRecovery = app.dataeventSocket.on('BeginAlarmsEvent', callback2, {
alarmPointIDs: detail.checkedList,
all: detail.triggerType === 1,
})
}
onProps.onVnodeUnmounted = function () {
alarmRecovery?.()
}
}
this._onProps = onProps
return onProps
}
static getOnPropList(onBlockList) {
const onPropList = []
for (const onBlock of onBlockList) {
if (onBlock instanceof OnBlock) {
onPropList.push(onBlock.getOnProp())
} else {
console.warn('!(onBlock instanceof OnBlock)', OnBlock)
}
}
return onPropList
}
static getBlockById(id2) {
const loop = (CanvasNodeList2) => {
for (const canvasNode of CanvasNodeList2) {
for (const block of canvasNode.blocks) {
if (id2 === block.id) {
return block
}
}
const rs2 = loop(canvasNode.children)
if (rs2) {
return rs2
}
}
}
return loop(app.current.project.current.page.document.body.children)
}
}
class EventBlock extends Block {
static class = 'EventBlock'
static types = {
click: 'click',
dblclick: 'dblclick',
contextmenu: 'contextmenu',
mousedown: 'mousedown',
mouseup: 'mouseup',
mouseenter: 'mouseenter',
mouseleave: 'mouseleave',
focus: 'focus',
blur: 'blur',
change: 'change',
mouselongpress: 'mouselongpress',
hover: 'hover',
timer: 'timer',
variable: 'variable',
alarm: 'alarm',
alarmRecovery: 'alarmRecovery',
broadcast: 'broadcast',
mounted: 'mounted',
unmounted: 'unmounted',
__DIVISION__: '__DIVISION__',
clickCell: 'clickCell',
}
static triggerDiyNameEventList = [
EventBlock.types.__DIVISION__,
EventBlock.types.variable,
EventBlock.types.broadcast,
]
type = EventBlock.types.click
name = '\u9F20\u6807\u5355\u51FB'
detail = {}
arguments = []
eventCategory = 'CanvasNodeBlock'
isPrivateEvent = false
supportActionType = {
CanvasNodeBlock: true,
PageManagerBlock: true,
ProjectBlock: true,
onlyOneSelf: false,
}
constructor(object4 = {}) {
super()
Object.assign(this, object4)
}
toCode() {
if (!this.detail) return ``
return `${this.detail?.expression}`
}
}
class IfBlock extends Block {
static class = 'IfBlock'
expression = 'true'
constructor(object4 = {}) {
super()
Object.assign(this, object4)
}
toCode() {
return `
if( ${String(this.expression) || 'false'} ){
${this.children.map((c2) => c2.toCode()).join('\n')}
}`
}
}
class CallBlock extends Block {
static class = 'CallBlock'
object
method = ''
name = ''
arguments = []
constructor(object4 = {}) {
super()
Object.assign(this, object4)
this.object && (this.object = new ObjectBlock(this.object))
for (const [i2, arg] of this.arguments.entries()) {
this.arguments[i2] = new ArgumentBlock(arg)
}
}
toCode() {
if (!this.method) return ''
if (
this.object?.class === 'ProjectBlock' &&
this.method === 'setVariable'
) {
return `
${Expression.unwrapQuotes(
this.arguments[0].expression
)} = ${this.arguments[1].toCode()}
`
}
return `
await __call__(
"${this.object?.class}", "${this.object?.id}",
"${this.method}", [${this.arguments.map((a2) => a2.toCode()).join(', ')}]
)
`
}
static objectClassMap = {
Project: 'Project',
Page: 'Page',
CanvasNode: 'CanvasNode',
}
static async __call__(blockClass, id2, method4, args) {
try {
const model = ObjectBlock.findModel(blockClass, id2)
const fn2 = model.methods?.[method4] || model[method4]
const rs2 = fn2.apply(model, args)
CallBlock.__call__.rs = rs2
return rs2
} catch (error2) {
console.error(arguments)
console.error(error2)
}
}
static MAX_DURATION = 1e4
static _callCount = 0
static macroTaskStart
static callErrorTipShowing = false
static async checkCallError() {
CallBlock._callCount += 1
const now2 = new Date()
await Promise.resolve()
if (!CallBlock.macroTaskStart) {
CallBlock.macroTaskStart = now2
setTimeout(() => {
CallBlock.macroTaskStart = void 0
})
postMessage('')
addEventListener('message', function f2() {
removeEventListener('message', f2)
CallBlock.macroTaskStart = void 0
})
}
if (
now2.getTime() - CallBlock.macroTaskStart.getTime() >
CallBlock.MAX_DURATION
) {
if (!CallBlock.callErrorTipShowing) {
toast(
Language$1._t(
'\u68C0\u6D4B\u5230\u4E8B\u4EF6\u6267\u884C\u5361\u6B7B\uFF0C\u8BF7\u68C0\u67E5\u903B\u8F91\u91CD\u65B0\u914D\u7F6E'
),
'error',
0
)
CallBlock.callErrorTipShowing = true
setTimeout(() => {
CallBlock.callErrorTipShowing = false
}, 0)
}
return true
}
return false
}
}
window.__call__ = CallBlock.__call__
class MethodBlock extends Block {
object = ''
type = ''
name = ''
method = ''
arguments = []
constructor(obj = {}) {
super()
obj = JSON.parse(JSON.stringify(obj))
Object.assign(this, obj)
for (const [i2, child] of this.arguments.entries()) {
this.arguments[i2] = new ArgumentBlock(child)
}
}
cloneNode() {
const nodeNew = new MethodBlock(this)
function cloneId(node2) {
node2.id = String(node2.id).replace(
/\|.*?$/,
`|${Math.random().toString(32).slice(-6)}`
)
for (const child of node2.children) {
cloneId(child)
}
}
cloneId(nodeNew)
return nodeNew
}
}
class ArgumentBlock extends Block {
static class = 'ArgumentBlock'
static types = {
string: 'string',
number: 'number',
boolean: 'boolean',
Array: 'Array',
Object: 'Object',
}
static views = {
text: 'text',
number: 'number',
date: 'date',
slide: 'slide',
switch: 'switch',
radio: 'radio',
checkbox: 'checkbox',
select: 'select',
color: 'color',
image: 'image',
variableName: 'variableName',
page: 'page',
charts: 'charts',
currentPage: 'currentPage',
file: 'file',
}
name = '\u53C2\u6570'
expression = '"Hello World!"'
type = ArgumentBlock.types.string
view = ArgumentBlock.views.text
unit = ''
min = 0
max = 100
step = 1
appendVariableEvent = false
options = []
static convertOptions(_options) {
let options2 = []
for (let option2 of _options) {
if (typeof option2 !== 'object') {
option2 = {
name: String(option2),
value: option2,
}
}
options2.push({
name: Block.fixValue(option2.name || option2.value),
expression:
option2.expression ||
Block.valueToCode(Block.fixValue(option2.value)),
get value() {
return Block.codeToValue(this.expression)
},
})
}
return options2
}
constructor(object4 = {}) {
super()
Object.assign(this, object4)
if (!object4.view) {
const typeViewMap = {
[ArgumentBlock.types.string]: ArgumentBlock.views.text,
[ArgumentBlock.types.number]: ArgumentBlock.views.number,
[ArgumentBlock.types.boolean]: ArgumentBlock.views.checkbox,
}
let view2 = typeViewMap[this.type]
if (view2) this.view = view2
}
this.options = ArgumentBlock.convertOptions(this.options)
if (!object4.expression) {
const typeExpressionMap = {
[ArgumentBlock.types.string]: this.expression,
[ArgumentBlock.types.number]: '1',
[ArgumentBlock.types.boolean]: 'true',
[ArgumentBlock.types.Object]: '{}',
[ArgumentBlock.types.Array]: '[]',
}
const expression = typeExpressionMap[this.type]
if (expression) this.expression = expression
if (this.options.length) {
const option0 = this.options[0]
if (this.type === ArgumentBlock.types.Array) {
this.expression = `[${option0.expression}]`
} else {
this.expression = option0.expression
}
}
}
}
toCode() {
return `(${this.expression ?? 'undefined'})`
}
}
class ObjectBlock extends Block {
static class = 'ObjectBlock'
id = ''
name = ''
static privateConfig
static methodList = [
new MethodBlock({
method: 'example',
name: '\u53C2\u6570\u793A\u4F8B',
arguments: [
new ArgumentBlock({
name: 'string',
type: ArgumentBlock.types.string,
}),
new ArgumentBlock({
name: 'number',
type: ArgumentBlock.types.number,
unit: 'px',
}),
new ArgumentBlock({
name: 'boolean',
type: ArgumentBlock.types.boolean,
}),
new ArgumentBlock({
name: 'options',
view: ArgumentBlock.views.radio,
options: [
{ name: 'option0', value: '"value0"' },
{ name: 'option1', value: '"value1"' },
],
}),
new ArgumentBlock({
name: 'options',
view: ArgumentBlock.views.select,
options: [
{ name: 'option0', value: '"value0"' },
{ name: 'option1', value: '"value1"' },
],
}),
new ArgumentBlock({
name: 'page',
view: ArgumentBlock.views.page,
expression: '',
}),
new ArgumentBlock({
name: 'currentPage',
view: ArgumentBlock.views.currentPage,
}),
],
}),
]
constructor(object4 = {}) {
super()
Object.assign(this, object4)
if (this.constructor === ObjectBlock) {
let block
if (object4.class === ProjectBlock.class) {
block = new ProjectBlock(object4)
}
if (object4.class === PageBlock.class) {
block = new PageBlock(object4)
}
if (object4.class === PageManagerBlock.class) {
block = new PageManagerBlock(object4)
}
if (object4.class === CanvasNodeBlock.class) {
block = new CanvasNodeBlock(object4)
}
if (!block) {
console.error('todo')
}
return block
}
}
static findModel(blockClass, id2) {
let model
if (blockClass === CanvasNodeBlock.class) {
model = CanvasNode$1.getById(id2)
} else if (blockClass === PageBlock.class) {
model = app.current.project.current.page
} else if (blockClass === ProjectBlock.class) {
model = app.current.project
} else if (blockClass === PageManagerBlock.class) {
model = new PageManager()
} else {
throw new Error(
`\u627E\u4E0D\u5230\u8BE5\u7C7B\u578B\uFF1A${blockClass}:${id2}`
)
}
if (!model) {
console.warn('\u627E\u4E0D\u5230model\uFF1A', ...arguments)
}
return model
}
static getObjectBlock(blockClass) {
let objectBlock
if (blockClass === CanvasNodeBlock.class) {
objectBlock = CanvasNodeBlock
} else if (blockClass === ProjectBlock.class) {
objectBlock = ProjectBlock
} else if (blockClass === PageManagerBlock.class) {
objectBlock = PageManagerBlock
} else {
throw new Error(`\u627E\u4E0D\u5230\u8BE5\u7C7B\u578B\uFF1A${blockClass}`)
}
return objectBlock
}
static getMethodInfo(method4) {
return method4
}
}
class ProjectBlock extends ObjectBlock {
static class = 'ProjectBlock'
name = ''
static supportActionType = {
ProjectBlock: true,
PageManagerBlock: true,
CanvasNodeBlock: false,
onlyOneSelf: false,
}
static eventList = [
{ type: EventBlock.types.mounted, name: '\u7CFB\u7EDF\u542F\u52A8' },
{
type: EventBlock.types.variable,
name: '\u53D8\u91CF\u53D8\u5316',
hasConfig: true,
detail: {
type: EventBlock.types.variable,
expression: '',
condition: 1,
name: '',
},
},
{
type: EventBlock.types.timer,
name: '\u8FBE\u5230\u5B9A\u65F6\u6267\u884C',
hasConfig: true,
detail: {
type: EventBlock.types.timer,
name: '\u8FBE\u5230\u5B9A\u65F6\u6267\u884C',
start: new Date(),
frequency: 1,
frequencyType: 0,
end: '',
unit: 0,
},
},
{
type: EventBlock.types.alarm,
name: '\u62A5\u8B66\u89E6\u53D1',
hasConfig: true,
detail: {
type: EventBlock.types.alarm,
name: '\u62A5\u8B66\u89E6\u53D1',
point: [],
checkedList: [],
},
},
{
type: EventBlock.types.alarmRecovery,
name: '\u62A5\u8B66\u6062\u590D',
hasConfig: true,
detail: {
type: EventBlock.types.alarmRecovery,
name: '\u62A5\u8B66\u6062\u590D',
triggerType: 1,
point: [],
checkedList: [],
},
},
{
type: EventBlock.types.broadcast,
name: '\u63A5\u6536\u5230\u5E7F\u64AD',
hasConfig: true,
detail: {
name: '',
type: EventBlock.types.broadcast,
expression: '"message"',
},
},
]
static methodList = [
new MethodBlock({
method: 'toast',
name: '\u7CFB\u7EDF\u63D0\u793A',
arguments: [
new ArgumentBlock({
name: '\u6D88\u606F',
expression: '"Hello World!"',
}),
new ArgumentBlock({
name: '\u7C7B\u578B',
view: ArgumentBlock.views.radio,
options: [
{
name: '\u4FE1\u606F',
value: '"info"',
},
{
name: '\u6210\u529F',
value: '"success"',
},
{
name: '\u8B66\u544A',
value: '"warning"',
},
{
name: '\u9519\u8BEF',
value: '"error"',
},
],
}),
],
}),
new MethodBlock({
method: 'setVariable',
name: '\u8BBE\u7F6E\u53D8\u91CF',
arguments: [
new ArgumentBlock({
name: '\u53D8\u91CF\u540D',
view: ArgumentBlock.views.variableName,
expression: '',
}),
new ArgumentBlock({
name: '\u53D8\u91CF\u503C',
expression: '""',
}),
],
}),
new MethodBlock({
method: 'waiting',
name: '\u7B49\u5F85',
arguments: [
new ArgumentBlock({
name: '\u65F6\u957F',
type: ArgumentBlock.types.number,
expression: '1000',
unit: 'ms',
}),
],
}),
new MethodBlock({
method: 'sendBroadcast',
name: '\u53D1\u9001\u5E7F\u64AD',
arguments: [
new ArgumentBlock({
name: '\u5E7F\u64AD\u5185\u5BB9',
expression: '"message"',
}),
],
}),
new MethodBlock({
method: 'openVirtualKeyboard',
name: '\u5F00\u542F\u865A\u62DF\u952E\u76D8',
}),
new MethodBlock({
method: 'closeVirtualKeyboard',
name: '\u5173\u95ED\u865A\u62DF\u952E\u76D8',
}),
new MethodBlock({
method: 'audioPlay',
name: '\u64AD\u653E\u97F3\u9891',
arguments: [
new ArgumentBlock({
name: '\u6587\u4EF6',
view: ArgumentBlock.views.file,
expression: '""',
}),
new ArgumentBlock({
name: '\u91CD\u590D\u64AD\u653E',
view: ArgumentBlock.views.checkbox,
expression: 'true',
}),
],
}),
new MethodBlock({
method: 'audioPause',
name: '\u505C\u6B62\u97F3\u9891\u64AD\u653E',
}),
]
constructor(object4 = {}) {
super()
Object.assign(this, object4)
}
}
class PageBlock extends ObjectBlock {
static class = 'PageBlock'
static methodList = []
constructor(object4 = {}) {
super()
Object.assign(this, object4)
}
}
class PageManagerBlock extends ObjectBlock {
static class = 'PageManagerBlock'
static supportActionType = {
PageManagerBlock: true,
ProjectBlock: true,
CanvasNodeBlock: true,
onlyOneSelf: false,
}
static eventList = [
{ type: EventBlock.types.mounted, name: '\u753B\u9762\u8F7D\u5165' },
{
type: EventBlock.types.unmounted,
name: '\u753B\u9762\u9000\u51FA',
supportActionType: {
PageManagerBlock: false,
CanvasNodeBlock: false,
},
},
{
type: EventBlock.types.variable,
name: '\u53D8\u91CF\u53D8\u5316',
hasConfig: true,
detail: {
type: EventBlock.types.variable,
expression: '',
condition: 1,
},
},
{
type: EventBlock.types.broadcast,
name: '\u63A5\u6536\u5230\u5E7F\u64AD',
hasConfig: true,
detail: {
type: EventBlock.types.broadcast,
expression: '"message"',
},
},
]
static methodList = [
new MethodBlock({
method: 'jumpRoute',
name: '\u8DF3\u8F6C\u753B\u9762',
arguments: [
new ArgumentBlock({
name: '\u76EE\u6807\u753B\u9762',
view: ArgumentBlock.views.page,
expression: '',
options: [],
}),
],
}),
new MethodBlock({
method: 'reloadRoute',
name: '\u91CD\u8F7D\u753B\u9762',
arguments: [],
}),
new MethodBlock({
method: 'backRoute',
name: '\u8FD4\u56DE\u4E0A\u4E00\u753B\u9762',
arguments: [],
}),
new MethodBlock({
method: 'closeRoute',
name: '\u5173\u95ED\u753B\u9762',
arguments: [],
}),
new MethodBlock({
method: 'alertRoute',
name: '\u5F39\u7A97\u753B\u9762',
arguments: [
new ArgumentBlock({
name: '\u76EE\u6807\u753B\u9762',
view: ArgumentBlock.views.page,
expression: '',
}),
new ArgumentBlock({
name: '\u6807\u9898',
}),
new ArgumentBlock({
name: '\u56FA\u5B9A',
type: ArgumentBlock.types.boolean,
view: ArgumentBlock.views.checkbox,
expression: 'false',
}),
new ArgumentBlock({
name: 'W',
type: ArgumentBlock.types.number,
unit: 'px',
expression: '500',
}),
new ArgumentBlock({
name: 'H',
type: ArgumentBlock.types.number,
unit: 'px',
expression: '500',
}),
new ArgumentBlock({
name: '\u5C5E\u6027',
view: ArgumentBlock.views.radio,
options: [
{
name: '\u56FA\u5B9A',
value: '"dialog"',
},
{
name: '\u81EA\u7531',
value: '"_blank"',
},
],
}),
new ArgumentBlock({
name: '\u5173\u95ED\u6309\u94AE',
view: ArgumentBlock.views.radio,
options: [
{
name: '\u6709',
value: 'true',
},
{
name: '\u65E0',
value: 'false',
},
],
}),
],
}),
new MethodBlock({
method: 'exportCurrentPage',
name: '\u5BFC\u51FA\u753B\u9762',
arguments: [
new ArgumentBlock({
name: '\u76EE\u6807\u9875\u9762',
view: ArgumentBlock.views.currentPage,
}),
new ArgumentBlock({
name: '\u683C\u5F0F',
view: ArgumentBlock.views.radio,
options: exportTypeList1.map((e2) => ({
...e2,
value: `"${e2.value}"`,
})),
}),
new ArgumentBlock({
name: '\u6587\u4EF6\u547D\u540D',
type: ArgumentBlock.types.string,
expression: '""',
}),
new ArgumentBlock({
name: '\u7EB8\u5F20\u5927\u5C0F',
view: ArgumentBlock.views.select,
options: paperTypeList().map((e2) => ({
...e2,
value: `"${e2.value}"`,
})),
}),
new ArgumentBlock({
name: '\u5E03\u5C40',
view: ArgumentBlock.views.radio,
options: layoutList.map((e2) => ({ ...e2, value: `"${e2.value}"` })),
}),
new ArgumentBlock({
name: '\u4FDD\u5B58\u8DEF\u5F84',
type: ArgumentBlock.types.string,
expression: '""',
}),
],
}),
new MethodBlock({
method: 'printCurrentPage',
name: '\u6253\u5370\u753B\u9762',
arguments: [
new ArgumentBlock({
name: '\u76EE\u6807\u9875\u9762',
view: ArgumentBlock.views.currentPage,
}),
],
}),
new MethodBlock({
method: 'exportChartsData',
name: '\u5BFC\u51FA\u56FE\u8868\u6570\u636E',
arguments: [
new ArgumentBlock({
name: '\u5173\u8054\u56FE\u8868',
type: ArgumentBlock.types.Object,
view: ArgumentBlock.views.charts,
}),
new ArgumentBlock({
name: '\u6587\u4EF6\u547D\u540D',
type: ArgumentBlock.types.string,
expression: '""',
}),
new ArgumentBlock({
name: '\u5BFC\u51FA\u683C\u5F0F',
view: ArgumentBlock.views.radio,
options: exportTypeList2.map((e2) => ({
...e2,
value: `"${e2.value}"`,
})),
}),
new ArgumentBlock({
name: '\u5BFC\u51FA\u5185\u5BB9',
type: ArgumentBlock.types.Array,
view: ArgumentBlock.views.checkbox,
options: chartsExportContentList.map((e2) => ({
...e2,
value: `"${e2.value}"`,
})),
}),
new ArgumentBlock({
name: '\u4FDD\u5B58\u8DEF\u5F84',
type: ArgumentBlock.types.string,
expression: '""',
}),
],
}),
]
constructor(object4 = {}) {
super()
Object.assign(this, object4)
}
}
class CanvasNodeBlock extends ObjectBlock {
static class = 'CanvasNodeBlock'
static supportActionType = {
PageManagerBlock: true,
ProjectBlock: true,
CanvasNodeBlock: true,
onlyOneSelf: false,
}
static privateConfig = {
Img: {
eventList: [],
methodList: [
new MethodBlock({
method: 'setFilename',
name: '\u8BBE\u7F6E\u56FE\u7247',
arguments: [
new ArgumentBlock({
view: ArgumentBlock.views.image,
name: '\u56FE\u7247\u540D',
expression: '""',
}),
],
}),
],
},
Sheet: {
eventList: [
new EventBlock({
type: EventBlock.types.clickCell,
name: '\u9009\u4E2D\u5355\u5143\u683C',
arguments: [
{
类别: '\u4E8B\u4EF6\u53C2\u6570',
参数: 'event.cell.computedContent',
说明: '\u8FD4\u56DE\u6240\u9009\u4E2D\u5355\u5143\u683C\u7684\u5B57\u6BB5\u503C',
},
{
类别: '\u4E8B\u4EF6\u53C2\u6570',
参数: 'event.row.cells[0].computedContent',
说明: '\u8FD4\u56DE\u6240\u9009\u4E2D\u884C\u67D0\u5355\u5143\u683C\u7684\u5B57\u6BB5\u503C',
示例: 'event.row.cells[0].computedContent \u4E3A\u6240\u9009\u4E2D\u884C\u7B2C1\u4E2A\u5355\u5143\u683C\u7684\u5B57\u6BB5\u503C',
},
{
类别: '\u4E8B\u4EF6\u53C2\u6570',
参数: 'event.col.cells[0].computedContent',
说明: '\u8FD4\u56DE\u6240\u9009\u4E2D\u5217\u67D0\u5355\u5143\u683C\u7684\u5B57\u6BB5\u503C',
示例: 'event.col.cells[0].computedContent \u4E3A\u6240\u9009\u4E2D\u5217\u7B2C1\u4E2A\u5355\u5143\u683C\u7684\u5B57\u6BB5\u503C',
},
],
}),
],
methodList: [],
},
ChartTable: {
eventList: [
new EventBlock({
type: EventBlock.types.clickCell,
name: '\u9009\u4E2D\u5355\u5143\u683C',
arguments: [
{
类别: '\u4E8B\u4EF6\u53C2\u6570',
参数: 'event.cell.name',
说明: '\u8FD4\u56DE\u6240\u9009\u4E2D\u5355\u5143\u683C\u7684\u5B57\u6BB5\u540D',
},
{
类别: '\u4E8B\u4EF6\u53C2\u6570',
参数: 'event.cell.value',
说明: '\u8FD4\u56DE\u6240\u9009\u4E2D\u5355\u5143\u683C\u7684\u5B57\u6BB5\u503C',
},
{
类别: '\u4E8B\u4EF6\u53C2\u6570',
参数: 'event.row.cells[0].name',
说明: '\u8FD4\u56DE\u6240\u9009\u4E2D\u884C\u67D0\u5355\u5143\u683C\u7684\u5B57\u6BB5\u540D',
示例: 'event.row.cells[0].name\u4E3A\u6240\u9009\u4E2D\u884C\u7B2C1\u4E2A\u5355\u5143\u683C\u7684\u5B57\u6BB5\u540D',
},
{
类别: '\u4E8B\u4EF6\u53C2\u6570',
参数: 'event.row.cells[0].value',
说明: '\u8FD4\u56DE\u6240\u9009\u4E2D\u884C\u67D0\u5355\u5143\u683C\u7684\u5B57\u6BB5\u503C',
示例: 'event.row.cells[0].value\u4E3A\u6240\u9009\u4E2D\u884C\u7B2C1\u4E2A\u5355\u5143\u683C\u7684\u5B57\u6BB5\u503C',
},
],
}),
],
methodList: [],
},
DateRange: {
eventList: [],
methodList: [
new MethodBlock({
method: 'setDateTimer',
name: '\u8BBE\u7F6E\u65F6\u95F4\u7B5B\u9009',
arguments: [
new ArgumentBlock({
view: ArgumentBlock.views.date,
name: '\u5F00\u59CB\u65F6\u95F4',
expression: `"${dayjs(new Date()).format(
'YYYY-MM-DD HH:mm:ss'
)}"`,
}),
new ArgumentBlock({
view: ArgumentBlock.views.date,
name: '\u7ED3\u675F\u65F6\u95F4',
expression: `"${dayjs(new Date()).format(
'YYYY-MM-DD HH:mm:ss'
)}"`,
}),
],
}),
],
},
DateSelector: {
eventList: [],
methodList: [
new MethodBlock({
method: 'getValueToVariable',
name: '\u83B7\u53D6\u63A7\u4EF6\u503C\u81F3\u53D8\u91CF',
arguments: [
new ArgumentBlock({
view: ArgumentBlock.views.variableName,
name: '\u53D8\u91CF',
}),
],
}),
new MethodBlock({
method: 'setValue',
name: '\u8BBE\u7F6E\u63A7\u4EF6\u503C',
arguments: [
new ArgumentBlock({
name: '\u503C',
}),
],
}),
],
},
Input: {
eventList: [],
methodList: [
new MethodBlock({
method: 'getValueToVariable',
name: '\u83B7\u53D6\u63A7\u4EF6\u503C\u81F3\u53D8\u91CF',
arguments: [
new ArgumentBlock({
view: ArgumentBlock.views.variableName,
name: '\u53D8\u91CF',
}),
],
}),
new MethodBlock({
method: 'setValue',
name: '\u8BBE\u7F6E\u63A7\u4EF6\u503C',
arguments: [
new ArgumentBlock({
name: '\u503C',
}),
],
}),
],
},
Select: {
eventList: [],
methodList: [
new MethodBlock({
method: 'getValueToVariable',
name: '\u83B7\u53D6\u63A7\u4EF6\u503C\u81F3\u53D8\u91CF',
arguments: [
new ArgumentBlock({
view: ArgumentBlock.views.variableName,
name: '\u53D8\u91CF',
}),
],
}),
new MethodBlock({
method: 'setValue',
name: '\u8BBE\u7F6E\u63A7\u4EF6\u503C',
arguments: [
new ArgumentBlock({
name: '\u503C',
}),
],
}),
],
},
DropDownList: {
eventList: [],
methodList: [
new MethodBlock({
method: 'setSelectValue',
name: '\u8BBE\u7F6E\u5217\u8868\u7B5B\u9009',
arguments: [
new ArgumentBlock({
type: ArgumentBlock.types.string,
name: '\u7B5B\u9009\u503C',
expression: '""',
}),
],
}),
],
},
TextInput: {
eventList: [],
methodList: [
new MethodBlock({
method: 'setValue',
name: '\u8BBE\u7F6E\u6587\u672C\u7B5B\u9009',
arguments: [
new ArgumentBlock({
type: ArgumentBlock.types.string,
name: '\u8F93\u5165\u503C',
expression: '""',
}),
],
}),
],
},
Filter: {
eventList: [],
methodList: [
new MethodBlock({
method: 'getValueToVariable',
name: '\u83B7\u53D6\u63A7\u4EF6\u503C\u81F3\u53D8\u91CF',
arguments: [
new ArgumentBlock({
view: ArgumentBlock.views.variableName,
name: '\u53D8\u91CF',
}),
],
}),
new MethodBlock({
method: 'setValue',
name: '\u8BBE\u7F6E\u63A7\u4EF6\u503C',
arguments: [
new ArgumentBlock({
name: '\u503C',
}),
],
}),
],
},
PageFrame: {
eventList: [],
methodList: [
new MethodBlock({
method: 'setTargetPage',
name: '\u8BBE\u7F6E\u753B\u9762',
arguments: [
new ArgumentBlock({
name: '\u76EE\u6807\u753B\u9762',
view: ArgumentBlock.views.page,
expression: '',
}),
],
}),
],
},
NumberFilter: {
eventList: [],
methodList: [
new MethodBlock({
method: 'setNumberFilter',
name: '\u8BBE\u7F6E\u6570\u503C\u7B5B\u9009',
arguments: [
new ArgumentBlock({
name: '\u6761\u4EF6',
view: ArgumentBlock.views.select,
options: filterList.map((e2) => ({
value: `"${e2.value}"`,
name: e2.label,
})),
expression: '',
}),
new ArgumentBlock({
name: '\u503C',
type: ArgumentBlock.types.string,
expression: '',
}),
new ArgumentBlock({
name: '\u503C',
type: ArgumentBlock.types.string,
expression: '',
}),
],
}),
],
},
ReadWriteInput: {
eventList: [],
methodList: [
new MethodBlock({
method: 'getValueToVariable',
name: '\u83B7\u53D6\u63A7\u4EF6\u503C\u81F3\u53D8\u91CF',
arguments: [
new ArgumentBlock({
name: '\u53D8\u91CF',
view: ArgumentBlock.views.variableName,
expression: '',
}),
],
}),
],
},
NumberInput: {
eventList: [],
methodList: [
new MethodBlock({
method: 'getValueToVariable',
name: '\u83B7\u53D6\u63A7\u4EF6\u503C\u81F3\u53D8\u91CF',
arguments: [
new ArgumentBlock({
name: '\u53D8\u91CF',
view: ArgumentBlock.views.variableName,
expression: '',
}),
],
}),
],
},
RadioControl: {
eventList: [],
methodList: [
new MethodBlock({
method: 'getValueToVariable',
name: '\u83B7\u53D6\u63A7\u4EF6\u503C\u81F3\u53D8\u91CF',
arguments: [
new ArgumentBlock({
view: ArgumentBlock.views.variableName,
name: '\u53D8\u91CF',
expression: '',
}),
],
}),
],
},
SelectControl: {
eventList: [],
methodList: [
new MethodBlock({
method: 'getValueToVariable',
name: '\u83B7\u53D6\u63A7\u4EF6\u503C\u81F3\u53D8\u91CF',
arguments: [
new ArgumentBlock({
view: ArgumentBlock.views.variableName,
name: '\u53D8\u91CF',
expression: '',
}),
],
}),
],
},
CheckboxControl: {
eventList: [],
methodList: [
new MethodBlock({
method: 'getValueToVariable',
name: '\u83B7\u53D6\u63A7\u4EF6\u503C\u81F3\u53D8\u91CF',
arguments: [
new ArgumentBlock({
view: ArgumentBlock.views.variableName,
name: '\u53D8\u91CF',
expression: '',
}),
],
}),
],
},
}
static eventList = [
{ type: EventBlock.types.click, name: '\u9F20\u6807\u5355\u51FB' },
{ type: EventBlock.types.dblclick, name: '\u9F20\u6807\u53CC\u51FB' },
{ type: EventBlock.types.contextmenu, name: '\u9F20\u6807\u53F3\u952E' },
{ type: EventBlock.types.mousedown, name: '\u9F20\u6807\u6309\u4E0B' },
{ type: EventBlock.types.mouseup, name: '\u9F20\u6807\u677E\u5F00' },
{ type: EventBlock.types.mouseenter, name: '\u9F20\u6807\u79FB\u5165' },
{ type: EventBlock.types.mouseleave, name: '\u9F20\u6807\u79FB\u51FA' },
{ type: EventBlock.types.hover, name: '\u9F20\u6807\u505C\u653E' },
{ type: EventBlock.types.mouselongpress, name: '\u9F20\u6807\u957F\u6309' },
{ type: EventBlock.types.focus, name: '\u83B7\u5F97\u7126\u70B9' },
{ type: EventBlock.types.blur, name: '\u5931\u53BB\u7126\u70B9' },
{
type: EventBlock.types.change,
name: '\u8F93\u5165\u53D8\u5316',
arguments: [
{
类别: '\u4E8B\u4EF6\u53C2\u6570',
参数: 'event.target.value',
说明: '\u5F53\u524D\u63A7\u4EF6\u503C',
},
],
},
{ type: EventBlock.types.__DIVISION__, name: '\u5206\u5272\u7EBF' },
{ type: EventBlock.types.mounted, name: '\u7EC4\u4EF6\u8F7D\u5165' },
{ type: EventBlock.types.unmounted, name: '\u7EC4\u4EF6\u9000\u51FA' },
{ type: EventBlock.types.__DIVISION__, name: '\u5206\u5272\u7EBF' },
{
type: EventBlock.types.variable,
name: '\u53D8\u91CF\u53D8\u5316',
hasConfig: true,
detail: {
type: EventBlock.types.variable,
expression: '',
condition: 1,
name: '',
},
supportActionType: {
PageManagerBlock: false,
onlyOneSelf: true,
},
},
{
type: EventBlock.types.broadcast,
name: '\u63A5\u6536\u5230\u5E7F\u64AD',
hasConfig: true,
detail: {
name: '',
type: EventBlock.types.broadcast,
expression: '"message"',
},
supportActionType: {
onlyOneSelf: true,
},
},
]
static methodList = [
new MethodBlock({
method: 'toggleVisible',
name: '\u663E\u793A/\u9690\u85CF',
type: '\u53EF\u89C1\u6027\u7C7B',
arguments: [
new ArgumentBlock({
name: '\u6A21\u5F0F',
view: ArgumentBlock.views.radio,
expression: '"toggle"',
options: [
{
value: '"show"',
name: '\u663E\u793A',
},
{
value: '"hide"',
name: '\u9690\u85CF',
},
{
value: '"toggle"',
name: '\u5207\u6362',
},
],
}),
],
}),
new MethodBlock({
method: 'setWidthHeight',
name: '\u5C3A\u5BF8',
type: '\u5E03\u5C40\u5C3A\u5BF8\u7C7B',
arguments: [
new ArgumentBlock({
name: '\u6A21\u5F0F',
view: ArgumentBlock.views.radio,
options: [
{ name: '"\u7EDD\u5BF9\u5C3A\u5BF8"', value: '"absolute"' },
{ name: '"\u767E\u5206\u6BD4"', value: '"percentage"' },
],
}),
new ArgumentBlock({
type: ArgumentBlock.types.number,
name: 'W',
unit: 'px/%',
expression: '100',
}),
new ArgumentBlock({
type: ArgumentBlock.types.number,
name: 'H',
unit: 'px/%',
expression: '100',
}),
],
}),
new MethodBlock({
method: 'setLetTop',
name: '\u79FB\u52A8',
type: '\u5E03\u5C40\u5C3A\u5BF8\u7C7B',
arguments: [
new ArgumentBlock({
name: '\u6A21\u5F0F',
view: ArgumentBlock.views.radio,
options: [
{ name: '"\u76F8\u5BF9\u5750\u6807"', value: '"relative"' },
{ name: '"\u7EDD\u5BF9\u5750\u6807"', value: '"absolute"' },
],
}),
new ArgumentBlock({
type: ArgumentBlock.types.number,
name: 'X',
unit: 'px',
}),
new ArgumentBlock({
type: ArgumentBlock.types.number,
name: 'Y',
unit: 'px',
}),
],
}),
new MethodBlock({
method: 'setRotate',
name: '\u65CB\u8F6C',
type: '\u5E03\u5C40\u5C3A\u5BF8\u7C7B',
arguments: [
new ArgumentBlock({
view: ArgumentBlock.views.radio,
options: [
{ name: '"\u76F8\u5BF9\u89D2\u5EA6"', value: '"relative"' },
{ name: '"\u7EDD\u5BF9\u89D2\u5EA6"', value: '"absolute"' },
],
}),
new ArgumentBlock({
type: ArgumentBlock.types.number,
name: '\u89D2\u5EA6',
unit: '\u5EA6',
}),
new ArgumentBlock({
type: ArgumentBlock.types.number,
name: '\u53C2\u8003\u504F\u79FBX',
expression: '0',
}),
new ArgumentBlock({
type: ArgumentBlock.types.number,
name: '\u53C2\u8003\u504F\u79FBY',
expression: '0',
}),
],
}),
new MethodBlock({
method: 'setTextStyle',
name: '\u6587\u672C\u6837\u5F0F',
type: '\u6587\u672C\u7C7B',
arguments: [
new ArgumentBlock({
view: ArgumentBlock.views.color,
name: '\u989C\u8272',
expression: '"rgba(0, 0, 0, 1)"',
}),
new ArgumentBlock({
type: ArgumentBlock.types.number,
name: '\u5B57\u53F7',
unit: 'px',
expression: '14',
}),
new ArgumentBlock({
type: ArgumentBlock.types.boolean,
view: ArgumentBlock.views.checkbox,
name: '\u7C97\u4F53',
expression: 'false',
}),
new ArgumentBlock({
type: ArgumentBlock.types.boolean,
view: ArgumentBlock.views.checkbox,
name: '\u659C\u4F53',
expression: 'false',
}),
new ArgumentBlock({
type: ArgumentBlock.types.boolean,
view: ArgumentBlock.views.checkbox,
name: '\u4E0B\u5212\u7EBF',
expression: 'false',
}),
new ArgumentBlock({
view: ArgumentBlock.views.radio,
name: '\u6C34\u5E73\u5BF9\u9F50',
options: [
{ name: '"\u5DE6\u4FA7"', value: '"left"' },
{ name: '"\u5C45\u4E2D"', value: '"center"' },
{ name: '"\u53F3\u4FA7"', value: '"right"' },
],
expression: '"center"',
}),
new ArgumentBlock({
type: ArgumentBlock.types.number,
name: '\u5B57\u95F4\u8DDD',
unit: 'px',
expression: '0',
}),
new ArgumentBlock({
type: ArgumentBlock.types.number,
name: '\u884C\u95F4\u8DDD',
unit: 'px',
expression: '14',
}),
],
}),
new MethodBlock({
method: 'setTextContent',
name: '\u6587\u672C\u5185\u5BB9',
type: '\u6587\u672C\u7C7B',
arguments: [
new ArgumentBlock({
view: ArgumentBlock.views.text,
name: '\u6587\u672C\u5185\u5BB9',
}),
],
}),
new MethodBlock({
method: 'setBackground',
name: '\u80CC\u666F',
type: '\u5916\u89C2\u7C7B',
arguments: [
new ArgumentBlock({
view: ArgumentBlock.views.color,
name: '\u989C\u8272',
expression: '"rgba(0, 0, 0, 1)"',
}),
new ArgumentBlock({
view: ArgumentBlock.views.image,
name: '\u80CC\u666F\u56FE',
expression: '""',
}),
new ArgumentBlock({
view: ArgumentBlock.views.select,
options: [
{ name: '\u81EA\u9002\u5E94', value: '"contain"' },
{ name: '\u62C9\u4F38', value: '"100% 100%"' },
{ name: '\u5B9E\u9645\u5927\u5C0F', value: '"auto"' },
{ name: '\u8986\u76D6', value: '"cover"' },
],
expression: '"100% 100%"',
name: '\u5C55\u793A\u6A21\u5F0F',
}),
],
}),
new MethodBlock({
method: 'setBorder',
name: '\u8FB9\u6846',
type: '\u5916\u89C2\u7C7B',
arguments: [
new ArgumentBlock({
view: ArgumentBlock.views.color,
name: '\u989C\u8272',
expression: '"rgba(0, 0, 0, 1)"',
}),
new ArgumentBlock({
type: ArgumentBlock.types.number,
name: '\u7EBF\u5BBD',
unit: 'px',
expression: '1',
}),
new ArgumentBlock({
view: ArgumentBlock.views.radio,
name: '\u7EBF\u578B',
options: [
{
name: '"\u65E0"',
value: '"none"',
},
{
name: '"\u76F4\u7EBF"',
value: '"solid"',
},
{
name: '"\u865A\u7EBF"',
value: '"dashed"',
},
{
name: '"\u5706\u70B9"',
value: '"dotted"',
},
],
expression: '"solid"',
}),
],
}),
new MethodBlock({
method: 'setBorderRadius',
name: '\u5706\u89D2',
type: '\u5916\u89C2\u7C7B',
arguments: [
new ArgumentBlock({
type: ArgumentBlock.types.number,
name: '\u5706\u89D2',
unit: 'px',
}),
],
}),
new MethodBlock({
method: 'setBoxShadow',
name: '\u9634\u5F71',
type: '\u5916\u89C2\u7C7B',
arguments: [
new ArgumentBlock({
view: ArgumentBlock.views.radio,
name: '\u6A21\u5F0F',
options: [
{ name: '"\u5916\u90E8"', value: '"outset"' },
{ name: '"\u5185\u90E8"', value: '"inset"' },
],
}),
new ArgumentBlock({
name: '\u6C34\u5E73',
view: ArgumentBlock.views.slide,
type: ArgumentBlock.types.number,
min: -50,
max: 50,
}),
new ArgumentBlock({
name: '\u5782\u76F4',
view: ArgumentBlock.views.slide,
type: ArgumentBlock.types.number,
min: -50,
max: 50,
}),
new ArgumentBlock({
name: '\u6A21\u7CCA',
view: ArgumentBlock.views.slide,
type: ArgumentBlock.types.number,
min: 0,
max: 50,
}),
new ArgumentBlock({
name: '\u5927\u5C0F',
view: ArgumentBlock.views.slide,
type: ArgumentBlock.types.number,
min: -50,
max: 50,
}),
new ArgumentBlock({
name: '\u989C\u8272',
view: ArgumentBlock.views.color,
expression: '"rgba(0, 0, 0, 1)"',
}),
],
}),
new MethodBlock({
method: 'setOpacity',
name: '\u4E0D\u900F\u660E\u5EA6',
type: '\u53EF\u89C1\u6027\u7C7B',
arguments: [
new ArgumentBlock({
name: '\u4E0D\u900F\u660E\u5EA6',
view: ArgumentBlock.views.number,
expression: '100',
}),
],
}),
new MethodBlock({
method: 'toggleBling',
name: '\u95EA\u70C1',
type: '\u53EF\u89C1\u6027\u7C7B',
arguments: [
new ArgumentBlock({
name: '\u6A21\u5F0F',
view: ArgumentBlock.views.radio,
expression: 'true',
options: [
{
value: 'true',
name: '\u5F00\u59CB\u95EA\u70C1',
},
{
value: 'false',
name: '\u505C\u6B62\u95EA\u70C1',
},
],
}),
new ArgumentBlock({
name: '\u95EA\u70C1\u901F\u7387',
view: ArgumentBlock.views.radio,
expression: '"slow"',
options: [
{
value: '"slow"',
name: '\u6162',
},
{
value: '"medium"',
name: '\u4E2D',
},
{
value: '"fast"',
name: '\u5FEB',
},
],
}),
],
}),
new MethodBlock({
method: 'toggleEnable',
name: '\u542F\u7528/\u7981\u7528',
type: '\u64CD\u4F5C\u7C7B',
arguments: [
new ArgumentBlock({
name: '\u6A21\u5F0F',
view: ArgumentBlock.views.radio,
expression: '"toggle"',
options: [
{
value: '"enable"',
name: '\u542F\u7528',
},
{
value: '"disable"',
name: '\u7981\u7528',
},
{
value: '"toggle"',
name: '\u5207\u6362',
},
],
}),
],
}),
new MethodBlock({
method: 'dispatchEvent',
name: '\u89E6\u53D1\u4E8B\u4EF6',
type: '\u64CD\u4F5C\u7C7B',
arguments: [
new ArgumentBlock({
name: '\u4E8B\u4EF6',
view: ArgumentBlock.views.select,
appendVariableEvent: true,
options: CanvasNodeBlock.eventList
.filter((e2) => {
const excludeList = EventBlock.triggerDiyNameEventList
if (excludeList.includes(e2.type)) return
return true
})
.map((e2) => {
return {
value: `"${e2.type}"`,
name: e2.name,
}
}),
}),
],
}),
]
constructor(object4 = {}) {
super()
Object.assign(this, object4)
}
}
var __glob_0_2 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
Block,
OnBlock,
EventBlock,
IfBlock,
CallBlock,
MethodBlock,
ArgumentBlock,
ObjectBlock,
ProjectBlock,
PageBlock,
PageManagerBlock,
CanvasNodeBlock,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
function styleConverter(style2) {
const properties = {
rotate: {
get() {
if (style2.rotate === 'none') return 0
return parseFloat(String(style2.rotate))
},
set(value2) {
style2.rotate = `${value2}deg`
},
},
opacity: {
get() {
const opacity2 = Number(style2.opacity ?? 1) || 1
const opacity100 = +(opacity2 * 100).toFixed()
return opacity100
},
set(value2) {
style2.opacity = (value2 / 100).toFixed(2)
},
},
boxShadow: {
get() {
let rs2 = [
['rgba(0, 0, 0, 1)', 0, 0, 0, 0],
['rgba(0, 0, 0, 1)', 0, 0, 0, 0],
]
const reg =
/(#\S+|rgba?\(.*?\)) (\S+)px (\S+)px (\S+)px (\S+)px,\s+(#\S+|rgba?\(.*?\)) (\S+)px (\S+)px (\S+)px (\S+)px inset/
let res = reg.exec(style2.boxShadow || '')
if (res) {
rs2 = [
[res[1], +res[2], +res[3], +res[4], +res[5]],
[res[6], +res[7], +res[8], +res[9], +res[10]],
]
}
return rs2
},
set([o2 = [], i2 = []]) {
const value2 = [
`${o2[0]} ${o2[1]}px ${o2[2]}px ${o2[3]}px ${o2[4]}px`,
`${i2[0]} ${i2[1]}px ${i2[2]}px ${i2[3]}px ${i2[4]}px inset`,
].join(', ')
style2.boxShadow = value2
},
},
backgroundImage: {
get() {
const reg = /[^/\\()'"`.,\s]+?(\.jpg|\.jpeg|\.png|\.gif|\.svg)/gi
const res = style2.backgroundImage?.match(reg)
return res ? res[0] : ''
},
set(imageFileName) {
style2.backgroundImage = imageFileName
? `url("/api/v1/view/image/${imageFileName}")`
: ''
},
},
}
const proxy = new Proxy(style2, {
get(style22, key2) {
const value2 = style22[key2]
if (typeof properties[key2]?.get === 'function') {
return properties[key2].get()
}
if (typeof value2 === 'string' && /px$/.test(value2)) {
return parseFloat(value2)
}
return value2
},
set(style22, key2, value2) {
if (typeof properties[key2]?.set === 'function') {
properties[key2].set(value2)
return true
}
if (typeof value2 === 'number') {
style22[key2] = `${value2}px`
return true
}
style22[key2] = value2
return true
},
})
return proxy
}
window.styleConverter = styleConverter
class CanvasNode$1 extends Base {
constructor(object4 = {}) {
object4 = JSON.parse(JSON.stringify(object4))
super()
Object.assign(this.style, object4.style)
Object.assign(this, { ...object4, style: this.style })
Block.createArray(this.blocks)
for (const [i2, child] of this.childNodes.entries()) {
this.childNodes[i2] = new CanvasNode$1(child)
}
Widget.store[this.is]?.onCreate?.(this)
}
toJSON() {
return {
id: this.id,
name: this.name,
tagName: this.tagName,
style: this.style,
langStyleMap: this.langStyleMap,
is: this.is,
props: this.props,
blocks: this.blocks,
childNodes: this.childNodes,
permission: this.permission,
locked: this.locked,
aspectRatioLocked: this.aspectRatioLocked,
}
}
id = utils.createRandomId()
name = ''
is = ''
tagName = ''
props = {}
blocks = []
methods = {}
permission = false
get selected() {
return this._selected
}
set selected(boolean) {
const selectedList = CanvasNode$1.selectedList
if (!this.selected && boolean) {
selectedList.push(this)
} else if (this.selected && !boolean) {
selectedList.splice(selectedList.indexOf(this), 1)
}
this._selected = boolean
}
_selected = false
static get selectedList() {
return app.current.project.current.page.selectedCanvasNodeList
}
locked = false
aspectRatioLocked = false
style = {}
computedStyle = (function (node2) {
return new Proxy(node2.style, {
get(style2, key2) {
if (/^(__isVue|__v_|Symbol)/.test(String(key2))) return style2[key2]
if (!node2.isGroup()) {
let value2 = node2.langStyle[key2] ?? style2[key2]
if (!value2 && node2.computedStyleCache?.[key2]) {
return node2.computedStyleCache[key2]
}
if (!value2 && node2.dom) {
const computedStyle = getComputedStyle(node2.dom)
value2 = computedStyle[key2]
node2.computedStyleCache = { ...computedStyle }
}
return value2
} else {
let value2
if (CanvasNode$1.GROUP_SELF_STYLE_KEY_REG.test(String(key2))) {
return node2.langStyle[key2]
} else {
for (const child of node2.childNodes) {
let val2 = child.computedStyle[key2]
if (value2 === void 0) value2 = val2
if (val2 !== value2) return
}
}
return value2
}
},
set(target2, key2, value2) {
if (!node2.isGroup()) {
node2.langStyle[key2] = value2
} else {
if (CanvasNode$1.GROUP_SELF_STYLE_KEY_REG.test(String(key2))) {
node2.langStyle[key2] = value2
} else {
if (key2 === 'rotate') {
delete node2.style.rotate
}
for (const child of node2.childNodes) {
child.computedStyle[key2] = value2
}
}
}
return true
},
})
})(this)
static GROUP_SELF_STYLE_KEY_REG = /^(left|top|width|height|visibility)$/i
convertedStyle = styleConverter(this.computedStyle)
langStyle = ((node2) => {
return new Proxy(this.style, {
get(style2, key2) {
return node2.getLangStyleValue(key2)
},
set(style2, key2, value2) {
node2.setLangStyleValue(key2, value2)
return true
},
})
})(this)
computedStyleCache
get styleProxy() {
return this.convertedStyle
}
langStyleMap = {}
getLangStyleValue(key2) {
return (
this.langStyleMap[$$f.language.followLang]?.[key2] ?? this.style[key2]
)
}
setLangStyleValue(key2, value2) {
if (typeof key2 != 'string') return
let lang = $$f.language.followLang
if (!/^(fontSize)$/.test(key2)) {
this.style[key2] = value2
return
}
if (lang === 'original') {
this.style[key2] = value2
} else {
if (!this.style[key2]) {
this.style[key2] = this.computedStyle[key2]
}
this.langStyleMap[lang] = {
...this.langStyleMap[lang],
[key2]: value2,
}
}
}
get dom() {
return document.getElementById(this.id)
}
get parentNode() {
return this.dom?.parentElement.__canvasNode
}
childNodes = []
get children() {
return this.childNodes
}
get childrenReversed() {
return new Proxy(this.children, {
get(o2, k2) {
if (typeof k2 === 'string' && !isNaN(Number(k2))) {
const _index = Number(k2)
const index2 = o2.length - 1 - _index
return o2[index2]
}
return o2[k2]
},
set(o2, k2, v4) {
if (typeof k2 === 'string' && !isNaN(Number(k2))) {
const _index = Number(k2)
const index2 = o2.length - 1 - _index
if (index2 < 0) {
const arr = []
arr.length = -index2
o2.unshift(...arr)
o2[0] = v4
return true
}
o2[index2] = v4
return true
}
o2[k2] = v4
return true
},
deleteProperty(o2, k2) {
if (typeof k2 === 'string' && !isNaN(Number(k2))) {
const _index = Number(k2)
const index2 = o2.length - 1 - _index
o2.splice(index2, 1)
}
return true
},
})
}
setDefaultProps(defaultProps2) {
const props2 = this.props
defaultProps2 = structuredClone(defaultProps2)
merge2(props2, defaultProps2)
function merge2(obj, obj_) {
if (obj === null || obj_ === null) return obj
const keys3 = [
.../* @__PURE__ */ new Set([...Object.keys(obj), ...Object.keys(obj_)]),
]
for (const key2 of keys3) {
const value2 = obj[key2]
const value_ = obj_[key2]
if (typeof value2 !== typeof value_) {
if (value_ === void 0) {
continue
}
obj[key2] = value_
continue
}
if (Array.isArray(value2) && Array.isArray(value2)) {
continue
}
if (typeof value2 === 'object' && typeof value_ === 'object') {
merge2(value2, value_)
continue
}
}
return obj
}
return props2
}
cloneNode() {
const clonedCanvasNode = new CanvasNode$1(this)
const idClonedMap = {}
loopCanvasNode(clonedCanvasNode)
function loopCanvasNode(clonedNode) {
const newId = String(clonedNode.id).replace(
/\[clone\|.*?\]|$/,
`[clone|${Math.random().toString(32).slice(-6)}]`
)
idClonedMap[clonedNode.id] = newId
for (const child of clonedNode.childNodes) {
loopCanvasNode(child)
}
}
const loopCache = /* @__PURE__ */ new WeakMap()
loop(clonedCanvasNode)
function loop(obj) {
if (!obj || typeof obj !== 'object') return
if (loopCache.get(obj)) return
loopCache.set(obj, true)
for (const key2 in obj) {
if (idClonedMap[obj[key2]]) {
obj[key2] = idClonedMap[obj[key2]]
}
if (typeof obj[key2] === 'object') {
loop(obj[key2])
}
}
}
return clonedCanvasNode
}
isGroup() {
return this.is === 'Group'
}
remove() {
if (!this.parentNode) return
const list2 = this.parentNode.childNodes
list2.splice(list2.indexOf(this), 1)
}
appendChild(child) {
child.remove()
this.childNodes.push(child)
}
getTriggerDiyNameEventList() {
return this.blocks.filter((item2) =>
EventBlock.triggerDiyNameEventList.includes(item2.event.type)
)
}
static styleProxy = new Proxy(Object(), {
get(target2, key2) {
const selectedList = CanvasNode$1.getSelectedOrBodyList()
const value2 = CanvasNode$1.getSameStyleProxyValue(selectedList, key2)
return value2
},
set(target2, key2, value2) {
const selectedList = CanvasNode$1.getSelectedOrBodyList()
CanvasNode$1.setSameStyleProxyValue(selectedList, key2, value2)
return true
},
})
static getSelectedOrBodyList() {
return CanvasNode$1.selectedList.length
? CanvasNode$1.selectedList
: [CanvasNode$1.getBody()]
}
static getUnlockedSelectedList() {
return this.selectedList.filter((item2) => !item2.locked)
}
static getSameStyleProxyValue(nodes, key2) {
let value2
for (const child of nodes) {
const val2 = child.computedStyle[key2]
if (value2 === void 0) value2 = val2
if (val2 !== value2) {
value2 = void 0
break
}
}
return styleConverter({ [key2]: value2 })[key2]
}
static setSameStyleProxyValue(nodes, key2, value2) {
for (const child of nodes) {
child.styleProxy[key2] = value2
}
}
static getById(id2) {
const dom = document.getElementById(id2)
const node2 = dom?.__canvasNode
return node2
}
static getBody() {
return app.current.project.current.page.document.body
}
toggleVisible(visibleState = '') {
switch (visibleState) {
case 'show':
this.style.visibility = 'visible'
break
case 'hide':
this.style.visibility = 'hidden'
break
default:
this.style.visibility =
this.style.visibility === 'hidden' ? 'visible' : 'hidden'
break
}
}
addClass(className) {
this.dom?.classList.add(className)
}
removeClass(className) {
this.dom?.classList.remove(className)
}
hasClass(className) {
return this.dom?.classList.contains(className)
}
toggleClass(className) {
if (this.hasClass(className)) {
this.removeClass(className)
} else {
this.addClass(className)
}
}
toggleEnable(enableState = '') {
switch (enableState) {
case 'enable':
this.removeClass('forbidden')
break
case 'disable':
this.addClass('forbidden')
break
default:
this.toggleClass('forbidden')
break
}
}
setOpacity(opacity2) {
this.styleProxy.opacity = opacity2
}
toggleBling(isStarted, speed = 'fast') {
const speedClass = 'bling-' + speed
;['slow', 'medium', 'fast'].forEach((item2) => {
this.removeClass('bling-' + item2)
})
if (isStarted) {
this.addClass(speedClass)
}
}
setWidthHeight(mode2, w2, h2) {
if (mode2 === 'absolute') {
this.styleProxy.width = w2
this.styleProxy.height = h2
}
if (mode2 === 'percentage') {
const _setWH = (nodes) => {
for (const node2 of nodes) {
if (node2.isGroup()) {
_setWH(node2.childNodes)
} else {
const { width, height } = node2.styleProxy
node2.styleProxy.width = Math.floor(width * w2 * 0.01)
node2.styleProxy.height = Math.floor(height * h2 * 0.01)
}
}
}
_setWH([this])
}
}
setLetTop(mode2, x2, y2) {
this.styleProxy.left = mode2 === 'absolute' ? x2 : this.styleProxy.left + x2
this.styleProxy.top = mode2 === 'absolute' ? y2 : this.styleProxy.top + y2
}
setRotate(mode2, deg2, originX, originY) {
if (mode2 === 'absolute') {
this.styleProxy.transformOrigin = `${originX}px ${originY}px`
this.styleProxy.rotate = deg2
}
if (mode2 === 'relative') {
const _setRotate = (nodes) => {
for (const node2 of nodes) {
if (node2.isGroup()) {
_setRotate(node2.childNodes)
} else {
const { rotate: rotate2 = 0 } = node2.styleProxy
node2.styleProxy.transformOrigin = `${originX}px ${originY}px`
node2.styleProxy.rotate = rotate2 + deg2
}
}
}
_setRotate([this])
}
}
setTextStyle(
color2,
fontSize2,
bold,
italic,
underline,
textAlign2,
letterSpacing2,
lineHeight2
) {
Object.assign(this.styleProxy, {
color: color2,
fontSize: fontSize2,
fontWeight: bold ? 'bold' : '',
fontStyle: italic ? 'italic' : '',
textDecoration: underline ? 'underline' : '',
textAlign: textAlign2,
letterSpacing: letterSpacing2,
lineHeight: lineHeight2,
})
}
setTextContent(content2) {
const _setTextContent = (nodes) => {
for (const node2 of nodes) {
if (node2.isGroup()) {
_setTextContent(node2.childNodes)
} else {
const el2 = node2.dom
if (
el2 &&
!Array.from(el2.children).find((e2) => e2.nodeName != 'BR')
) {
el2.textContent = content2
}
}
}
}
_setTextContent([this])
}
setBackgroundColor(color2) {
this.styleProxy.backgroundColor = color2
}
setBackground(backgroundColor2, backgroundImage2, backgroundSize2) {
Object.assign(this.styleProxy, {
backgroundColor: backgroundColor2,
backgroundImage: backgroundImage2,
backgroundSize: backgroundSize2,
backgroundPosition: 'center',
backgroundRepeat: 'no-repeat',
})
}
setBorder(color2, width, style2) {
Object.assign(this.styleProxy, {
borderColor: color2,
borderWidth: width,
borderStyle: style2,
})
}
setBorderRadius(borderRadius) {
this.styleProxy.borderRadius = borderRadius
}
setBoxShadow(mode2, horizontal, vertical, blur, spread3, color2) {
let boxShadow2 = this.styleProxy.boxShadow
boxShadow2[
{
outset: 0,
inset: 1,
}[mode2]
] = [color2, horizontal, vertical, blur, spread3]
this.styleProxy.boxShadow = boxShadow2
}
dispatchEvent(type4) {
let block = OnBlock.getBlockById(type4)
block
? block.isEnable && block.getCallbackCatch()()
: this.dom?.dispatchEvent(new Event(type4))
}
toggleExpandAllBlock(isExpand) {
const loop = (blocks2) => {
for (const block of blocks2) {
block.isExpand = isExpand
if (block.children) {
loop(block.children)
}
}
}
loop(this.blocks)
}
}
var __glob_0_3 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
CanvasNode: CanvasNode$1,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
class PageHistory extends Base {
constructor(page2) {
super()
this.page = page2
}
page
stack = []
cursor = -1
watching = false
start() {
this.watch()
}
stop() {
this.unwatch()
this.stack.length = 0
this.cursor = -1
}
pause() {
this.unwatch()
}
resume() {
this.watch()
}
init() {
if (this.cursor === -1) {
this.stack.length = 0
this.cursor = 0
this.stack.push(this.getNewItem())
}
}
watch() {
if (app.running) return
if (this.watching) return
this.watching = true
this.init()
const _watchCallback = lodash$2.exports.debounce(
() => this.watchCallback(),
PageHistory.DEBOUNCE_DELAY
)
const callback = (event) => {
if (event instanceof KeyboardEvent) {
if (utils.isInputActive()) {
return
}
}
if (event instanceof FocusEvent && event.target instanceof Element) {
if (!utils.isInputActive(event.target)) {
return
}
}
_watchCallback()
}
for (const eventType of PageHistory.WATCH_EVENT_TYPES) {
addEventListener(eventType, callback, true)
}
const unwatch = () => {
this.watching = false
for (const eventType of PageHistory.WATCH_EVENT_TYPES) {
removeEventListener(eventType, callback, true)
}
}
this.unwatch = unwatch
return unwatch
}
unwatch = () => {}
watchCallback() {
if (this.page !== $$f.page) {
this.unwatch()
return
}
this.record()
}
record() {
const newItem = this.getNewItem()
if (!this.isChanged(newItem)) {
return
}
this.page.save(true)
this.stack.length = this.cursor + 1
this.stack.push(newItem)
this.cursor++
if (this.stack.length > PageHistory.MAX) {
this.stack.splice(1, 1)
this.cursor--
}
}
isChanged(newItem) {
return this.getCurrentItem().json !== newItem.json
}
getNewItem() {
return new HistoryItem(this.page.document)
}
getCurrentItem() {
return this.stack[this.cursor]
}
apply(item2) {
const document2 = item2.object
document2.body = new CanvasNode$1(document2.body)
this.merge(this.page.document, document2)
const selectedCanvasNodeList = [...this.page.selectedCanvasNodeList]
this.page.selectedCanvasNodeList.length = 0
for (const node2 of selectedCanvasNodeList) {
if (CanvasNode$1.getById(node2.id)) {
this.page.selectedCanvasNodeList.push(node2)
}
}
this.page.save(true)
}
merge(obj, obj_) {
const mergeCache = /* @__PURE__ */ new Map()
const merge2 = function (obj2, obj_2) {
if (mergeCache.get(obj2)) {
return
} else {
mergeCache.set(obj2, true)
}
if (Array.isArray(obj2) && Array.isArray(obj_2)) {
if (obj2[0]?.id || obj_2[0]?.id) {
const objCopy = [...obj2]
for (const [i_, item_] of obj_2.entries()) {
const item2 = objCopy.find((item22) => item22.id === item_.id)
obj2[i_] = item2
}
}
obj2.length = obj_2.length
}
for (const key2 in obj2) {
if (!(key2 in obj_2)) {
delete obj2[key2]
}
}
for (const k2 in obj_2) {
const v4 = obj2[k2]
const v_ = obj_2[k2]
if (typeof v4 !== 'object' || v4 === null) {
if (v4 != v_) {
obj2[k2] = v_
continue
}
}
if (v4?.constructor !== v_?.constructor) {
if (typeof v4?.constructor === 'function') {
if (!(v4 instanceof Node)) {
obj2[k2] = v_
continue
}
}
}
if (typeof v4 === 'object' && typeof v_ === 'object') {
if (v4?.constructor !== Object && v_?.constructor !== Object) {
if (v4?.id || v_?.id) {
if (v4?.id !== v_?.id) {
obj2[k2] = v_
continue
}
}
}
merge2(v4, v_)
}
}
return obj2
}
return merge2(obj, obj_)
}
undo() {
if (!this.canUndo()) return
this.cursor -= 1
const item2 = this.getCurrentItem()
this.apply(item2)
}
redo() {
if (!this.canRedo()) return
this.cursor += 1
const item2 = this.getCurrentItem()
this.apply(item2)
}
canUndo() {
return this.cursor > 0
}
canRedo() {
return this.stack.length > this.cursor + 1
}
static MAX = 50
static DEBOUNCE_DELAY = 50
static WATCH_EVENT_TYPES = ['mouseup', 'drop', 'change', 'blur', 'keyup']
}
class HistoryItem {
constructor(item2) {
this.json = JSON.stringify(item2, null, 2)
}
json = ''
get object() {
return JSON.parse(this.json)
}
}
var __glob_0_9 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
PageHistory,
HistoryItem,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const state$6 = reactive({
current: {
get nodes() {
return app.current.project.current.page.selectedCanvasNodeList || []
},
copyNodes: [],
cuting: false,
zoom: 1,
translateX: 0,
translateY: 0,
model: '',
selectId: '',
},
get permissions() {
return app.current.project?.current.page?.permissions || []
},
document: {
get body() {
return app.current.project.current.page.document.body
},
set body(v4) {
app.current.project.current.page.document.body = v4
},
},
})
window.editorState = state$6
function eachNode(handler, root2 = state$6.document.body) {
function loop(node2) {
handler(node2)
for (const child of node2.childNodes || []) {
loop(child)
}
}
loop(root2)
}
function isGroup(node2) {
return node2.is === 'Group'
}
function eachRootChildNode(handler) {
for (const child of state$6.document.body.childNodes || []) {
handler(child)
}
}
function getSelectedNodes() {
return state$6.current.nodes
}
function getUnLockedSelectedNodes() {
return getSelectedNodes().filter((n2) => !n2.locked)
}
function getUnwrapGroupNodes(nodes) {
const list2 = []
for (const node2 of nodes) {
if (!isGroup(node2)) {
list2.push(node2)
} else {
const subList = getUnwrapGroupNodes(node2.childNodes || [])
list2.push(...subList)
}
}
return list2
}
function getRootNode() {
return state$6.document.body
}
function getParentNodeListByDom(dom) {
const list2 = []
function loop(dom2) {
if (!dom2) return
const node2 = getNodeByDom(dom2)
if (node2) {
list2.unshift(node2)
}
loop(dom2.parentElement)
}
loop(dom)
return list2
}
function getChildNodes(parent2) {
return parent2.childNodes || []
}
function getParentNode$1(node2) {
const dom = getDomByNode(node2)
if (dom && dom.parentElement) {
return getClosestNodeByDom(dom.parentElement)
}
}
function getDomByNode(node2) {
return document.getElementById(node2.id)
}
function getRectByNode(node2) {
return getDomByNode(node2)?.getBoundingClientRect()
}
function getNodeByDom(dom) {
const node2 = dom.__canvasNode
return node2
}
function getClosestNodeByDom(dom) {
return getParentNodeListByDom(dom).at(-1)
}
function getChildNodeFromList(parent2, list2) {
return list2.find((node2) => isChildTo(node2, parent2))
}
function isSelectedNode(node2) {
return node2.selected
}
function hasSelectedNodes() {
return !!state$6.current.nodes.length
}
function isRootNode(node2) {
return node2 === state$6.document.body
}
function isChildTo(child, parent2) {
return parent2.childNodes?.includes(child)
}
const MIN_SIXE = 1 * 1024 * 1024
const MAX_WIDTH = 2560
const MAX_HEIGHT = 1900
function uploadBefore(file2) {
return new Promise((resolve2, reject2) => {
let image2 = new Image()
image2.src = URL.createObjectURL(file2)
image2.onload = () => {
let resultBlob
if (file2.size > MIN_SIXE) {
resultBlob = compressUpload(image2, file2, MAX_WIDTH, MAX_HEIGHT)
} else {
resultBlob = new Blob([file2])
}
resolve2(resultBlob)
URL.revokeObjectURL(image2.src)
}
image2.onerror = () => {
reject2()
}
})
}
function compressUpload(
image2,
file2,
maxWidth = 4096,
maxHeight = 2160,
quality = 0.4
) {
let canvas = document.createElement('canvas')
let ctx = canvas.getContext('2d')
let { width, height } = image2
let newWidth = width
let newHeight = height
if (width > maxWidth && height > maxHeight) {
const rate = Math.min(maxWidth / width, maxHeight / height)
newWidth = width * rate
newHeight = height * rate
} else if (width > maxWidth) {
newWidth = maxWidth
newHeight = (maxWidth / width) * height
} else if (height > maxHeight) {
newWidth = maxHeight
newHeight = (maxHeight / height) * width
} else {
newWidth = width
newHeight = height
}
canvas.width = newWidth
canvas.height = newHeight
ctx?.drawImage(image2, 0, 0, newWidth, newHeight)
let compressData = canvas.toDataURL(file2.type || 'image/jpeg', quality)
let blobImg = dataURItoBlob(compressData)
return blobImg
}
function dataURItoBlob(data2) {
let byteString
if (data2.split(',')[0].indexOf('base64') >= 0) {
byteString = atob(data2.split(',')[1])
} else {
byteString = unescape(data2.split(',')[1])
}
let mimeString = data2.split(',')[0].split(':')[1].split(';')[0]
let ia = new Uint8Array(byteString.length)
for (let i2 = 0; i2 < byteString.length; i2 += 1) {
ia[i2] = byteString.charCodeAt(i2)
}
return new Blob([ia], { type: mimeString })
}
function createProjectImg(groupKey, imageKey) {
return new Promise((resolve2, reject2) => {
request({
url: `/api/v1/view/image/fromgallery`,
method: 'post',
data: {
groupKey,
imageKey,
},
silent: true,
})
.then((res) => {
resolve2(res)
})
.catch(() => {
reject2()
})
})
}
const copyNodeInfo = /* @__PURE__ */ new WeakMap()
const createRandomId = () => {
return (
(Math.random() * 1e7).toString(16).substr(0, 4) +
new Date().getTime() +
Math.random().toString().substr(2, 5)
)
}
const getParentNode = (node2) => {
let parentNode2 = new CanvasNode$1({
id: '',
name: '',
style: {},
childNodes: [],
props: {},
})
if (!state$6.document.body) return parentNode2
const recursion = (parent2) => {
if (parentNode2.id && parentNode2.name) return
if (!parent2.childNodes) return
for (let i2 = 0; i2 < parent2.childNodes.length; i2++) {
const item2 = parent2.childNodes[i2]
if (item2.id === node2.id) {
parentNode2 = parent2
break
} else if (item2.childNodes && !item2.is) {
recursion(item2)
}
}
}
recursion(state$6.document.body)
return parentNode2
}
const getParentNodeById = (parentId) => {
let parentNode2 = new CanvasNode$1({
id: '',
name: '',
style: {},
childNodes: [],
props: {},
})
if (!state$6.document.body) return parentNode2
const recursion = (parent2) => {
if (parentNode2.id && parentNode2.name) return
if (!parent2.childNodes) return
for (let i2 = 0; i2 < parent2.childNodes.length; i2++) {
const item2 = parent2.childNodes[i2]
if (item2.id === parentId) {
parentNode2 = item2
break
} else if (item2.childNodes && !item2.is) {
recursion(item2)
}
}
}
recursion(state$6.document.body)
return parentNode2
}
const getNodeById = (id2) => {
let parentList = []
const childNodes = state$6.document.body.childNodes || []
let node2 = new CanvasNode$1({
id: '',
name: '',
style: {},
childNodes: [],
props: {},
})
if (!childNodes || !childNodes.length) return node2
const recursion = (list2) => {
for (let i2 = 0; i2 < list2.length; i2++) {
const item2 = list2[i2]
if (item2.id === id2) {
node2 = item2
break
} else if (item2.childNodes && !item2.is) {
parentList = item2.childNodes
recursion(parentList)
}
}
}
recursion(childNodes)
return node2
}
function getNodeDom(node2) {
return document.getElementById(node2.id)
}
function getNodeRect(node2) {
return getNodeDom(node2).getBoundingClientRect()
}
function getOffsetValue(node2) {
const dom = getNodeDom(node2)
return {
x: dom.offsetLeft,
y: dom.offsetTop,
}
}
function setNodeRect(node2, { width, height }) {
styleConverter(node2.style).width = width
styleConverter(node2.style).height = height
}
function getNodePos(node2) {
const nodeRect = getNodeRect(node2)
const relativeNodeRect = getNodeRect(state$6.document.body)
const x2 = nodeRect.x - relativeNodeRect.x
const y2 = nodeRect.y - relativeNodeRect.y
return { x: x2, y: y2 }
}
function setNodePos(node2, { x: x2, y: y2 }, parentId) {
let parent2 = getParentNode(node2)
if (!parent2.id && !parent2.name && parentId) {
parent2 = getParentNodeById(parentId)
}
if (!parent2.id && !parent2.name) parent2 = state$6.document.body
if ([state$6.document.body].includes(parent2)) {
styleConverter(node2.style).left = x2
styleConverter(node2.style).top = y2
return
}
const parentPos = getNodePos(parent2)
const offsetX = x2 - parentPos.x
const offsetY = y2 - parentPos.y
styleConverter(node2.style).left = offsetX
styleConverter(node2.style).top = offsetY
}
function selectNode$1(node2, e2) {
if (!(e2.ctrlKey || e2.shiftKey || e2.metaKey))
state$6.current.nodes.length = 0
const selectNodes = state$6.current.nodes
const iLen = selectNodes.length
for (let i2 = 0; i2 < iLen; i2++) {
const item2 = state$6.current.nodes[i2]
if (item2.id === node2.id) {
state$6.current.nodes.splice(i2, 1)
return
}
}
const firstSelectNode = state$6.current.nodes[0]
if (iLen === 0 || firstSelectNode?.parentNode === node2.parentNode) {
state$6.current.nodes.push(node2)
}
}
const allSelectNode = () => {
if (!state$6.document.body.childNodes) return
state$6.current.nodes.length = 0
for (
let i2 = 0, iLen = state$6.document.body.childNodes.length;
i2 < iLen;
i2++
) {
const node2 = state$6.document.body.childNodes[i2]
state$6.current.nodes.push(node2)
}
}
const deleteNode = (node2) => {
let parentList = []
const childNodes = state$6.document.body.childNodes || []
if (!childNodes || !childNodes.length) return null
const recursion = (list2) => {
for (let i2 = 0; i2 < list2.length; i2++) {
const item2 = list2[i2]
if (item2.id === node2.id) {
list2.splice(i2, 1)
break
} else if (item2.childNodes) {
parentList = item2.childNodes
recursion(parentList)
}
}
}
recursion(childNodes)
}
const createNode = (oldNode) => {
return oldNode.cloneNode()
}
const creatCopyNode = (node2, index2, nodeList2) => {
let parentList = []
const childNodes = nodeList2 || state$6.document.body.childNodes || []
if (!childNodes || !childNodes.length) return null
const loop = (list2) => {
for (let i2 = 0; i2 < list2.length; i2++) {
const item2 = list2[i2]
if ([item2].includes(node2)) {
let _node = createNode(node2)
list2.splice(index2 ?? list2.length, 0, _node)
break
} else if (item2.childNodes && !item2.is) {
parentList = item2.childNodes
loop(parentList)
}
}
}
loop(childNodes)
}
const copyNode$1 = (model) => {
if (!state$6.current.nodes.length) return
let nodes = lodash$2.exports.cloneDeep(state$6.current.nodes) || []
state$6.current.copyNodes = nodes
const pageId = app.current.project.current.page?.id
for (let i2 = 0, iLen = state$6.current.copyNodes.length; i2 < iLen; i2++) {
const node2 = state$6.current.copyNodes[i2]
const parent2 = getParentNode(node2)
const { x: x2, y: y2 } = getOffsetValue(node2)
const nodeInfo = {
node: node2,
parentId: parent2.id,
x: x2,
y: y2,
initX: x2,
initY: y2,
pageId,
pastedPageIds: /* @__PURE__ */ new Set(),
}
copyNodeInfo.set(node2, nodeInfo)
}
if (model === 'copy') {
state$6.current.cuting = false
} else {
state$6.current.cuting = true
for (let i2 = 0, iLen = state$6.current.copyNodes.length; i2 < iLen; i2++) {
const node2 = state$6.current.copyNodes[i2]
deleteNode(node2)
}
}
}
const pasteNode = () => {
let newNodeList = []
if (!state$6.current.copyNodes.length) return newNodeList
const pageId = app.current.project.current.page?.id
const copyNode0 = state$6.current.copyNodes.find(
(n2) => n2.id !== state$6.document.body.id
)
let isOffset = false
if (copyNode0) {
const nodeInfo0 = copyNodeInfo.get(copyNode0)
let pasted = false
if (!pasted) {
pasted = nodeInfo0.pastedPageIds.has(pageId) ? true : false
nodeInfo0.pastedPageIds.add(pageId)
}
isOffset = nodeInfo0.pageId !== pageId && !pasted ? false : true
}
for (let i2 = 0, iLen = state$6.current.copyNodes.length; i2 < iLen; i2++) {
let node2 = state$6.current.copyNodes[i2]
if (state$6.document.body.id === node2.id) continue
const nodeInfo = copyNodeInfo.get(node2)
const offset2 = state$6.current.cuting || !isOffset ? 0 : 10
const x2 = isOffset ? nodeInfo.x : nodeInfo.initX
const y2 = isOffset ? nodeInfo.y : nodeInfo.initY
let left2 = x2 + offset2
let top2 = y2 + offset2
if (node2.parentNode?.isGroup()) {
const parentNode2 = getGroupNode$1(node2)
if (parentNode2) {
left2 = left2 + parentNode2.dom?.offsetLeft
top2 = top2 + parentNode2.dom?.offsetTop
}
}
styleConverter(node2.style).left = left2
styleConverter(node2.style).top = top2
copyNodeInfo.set(node2, {
node: node2,
x: left2,
y: top2,
parentId: nodeInfo.parentId,
initX: nodeInfo.initX,
initY: nodeInfo.initY,
pageId: nodeInfo.pageId,
pastedPageIds: nodeInfo.pastedPageIds,
})
const newNode = createNode(node2)
if (!state$6.document.body.childNodes) return newNodeList
state$6.document.body.childNodes.push(newNode)
newNodeList.push(newNode)
}
if (state$6.current.cuting) state$6.current.cuting = false
state$6.current.nodes.length = 0
state$6.current.nodes.push(...newNodeList)
return newNodeList
}
const splitNode = (node2) => {
const childNodes = state$6.document.body.childNodes || []
const list2 = node2.childNodes || []
let index2 = 0
for (let i2 = 0, iLen = childNodes.length; i2 < iLen; i2++) {
const item2 = childNodes[i2]
if (item2.id === node2.id) {
index2 = i2
break
}
}
const parentLeft = Number(String(node2.style.left).replace('px', ''))
const parentTop = Number(String(node2.style.top).replace('px', ''))
let parentIndex = 0
list2.forEach((item2) => {
let left2 = Number(String(item2.style.left).replace('px', ''))
let top2 = Number(String(item2.style.top).replace('px', ''))
if (node2.parentNode?.isGroup() && node2.dom) {
parentIndex = node2.parentNode?.childNodes.findIndex(
(item22) => item22.id === node2.id
)
item2.style.left = left2 + node2.dom?.offsetLeft + 'px'
item2.style.top = top2 + node2.dom?.offsetTop + 'px'
} else {
item2.style.left = parentLeft + left2 + 'px'
item2.style.top = parentTop + top2 + 'px'
}
})
for (let i2 = 0, iLen = list2.length; i2 < iLen; i2++) {
const item2 = list2[i2]
node2.parentNode?.isGroup()
? node2.parentNode.childNodes.splice(parentIndex++, 0, item2)
: childNodes.splice(index2++, 0, item2)
}
deleteNode(node2)
}
const splitCurrentNode = () => {
const currentNodes = [...state$6.current.nodes]
state$6.current.nodes.length = 0
for (let i2 = 0, iLen = currentNodes.length; i2 < iLen; i2++) {
const node2 = currentNodes[i2]
if (node2.isGroup()) {
splitNode(node2)
state$6.current.nodes.push(...node2.childNodes)
}
}
}
const combinationNode = (nodes) => {
nodes = nodes ? nodes : CanvasNode$1.selectedList
if (nodes.length <= 1) return
const groupNode = new CanvasNode$1({
name: '\u7EC4\u5408',
is: 'Group',
style: {
position: 'absolute',
},
})
let arr = []
const filterSortNodes = (nodes2) => {
if (!nodes2 || !nodes2.length) return
const zNodes2 = CanvasNode$1.selectedList[0]?.parentNode?.childNodes
if (!zNodes2?.length) return
const groupNodesInZIndex = [...zNodes2].filter((zn) =>
nodes2.find((sn) => sn.id === zn.id)
)
nodes2.forEach((node2) => {
arr.push([...zNodes2].findIndex((sn) => sn.id === node2.id))
})
return groupNodesInZIndex
}
let zNodes = filterSortNodes(nodes)
if (zNodes) {
nodes = zNodes
}
let topZIndex = -1
const getTopZIndex = (nodes2) => {
if (!nodes2?.length) return -1
const topZIndexNode = nodes2[nodes2.length - 1]
const pageNodes = app.current.project.current.page.document.body.childNodes
const indexBeforeGroup = pageNodes.findIndex(
(pn) => pn.id === topZIndexNode.id
)
if (indexBeforeGroup == -1) return -1
const indexAfterGroup = indexBeforeGroup + 1 - nodes2.length
return indexAfterGroup
}
topZIndex = getTopZIndex(nodes)
for (const node2 of nodes) {
groupNode.appendChild(node2)
}
const nodePosList = nodes.map((node2) => getNodePos(node2))
const left2 = Math.min(...nodePosList.map((n2) => n2.x))
const top2 = Math.min(...nodePosList.map((n2) => n2.y))
let isParentGroup = false
let parentGroup = {
childNodes: [],
}
const canvasRect = getRectByNode(state$6.document.body)
const nodeRectList = nodes.map((node2) => {
const nodePos = getNodePos(node2)
const nodeRect = getNodeRect(node2)
let right22 = 0
let bottom22 = 0
let left22 = 0
let top22 = 0
if (node2.parentNode?.isGroup() && canvasRect) {
left22 = nodePos.x
top22 = nodePos.y
right22 = nodeRect.right - canvasRect.x
bottom22 = nodeRect.bottom - canvasRect.y
isParentGroup = true
parentGroup = node2.parentNode
} else {
right22 = nodePos.x + nodeRect.width
bottom22 = nodePos.y + nodeRect.height
isParentGroup = false
}
return {
right: right22,
bottom: bottom22,
left: left22,
top: top22,
}
})
const right2 = Math.max(...nodeRectList.map((n2) => n2.right))
const bottom2 = Math.max(...nodeRectList.map((n2) => n2.bottom))
if (isParentGroup) {
const left22 = Math.min(...nodeRectList.map((n2) => n2.left))
const top22 = Math.min(...nodeRectList.map((n2) => n2.top))
const nodeParentPos = getNodePos(nodes[0].parentNode)
setNodePos(groupNode, {
x: left22 - nodeParentPos.x,
y: top22 - nodeParentPos.y,
})
setNodeRect(groupNode, { width: right2 - left22, height: bottom2 - top22 })
} else {
setNodePos(groupNode, { x: left2, y: top2 })
setNodeRect(groupNode, { width: right2 - left2, height: bottom2 - top2 })
}
if (!groupNode.childNodes) return
for (let i2 = 0, iLen = groupNode.childNodes.length; i2 < iLen; i2++) {
const node2 = groupNode.childNodes[i2]
const nodePos = getNodePos(node2)
const nodeRect = getNodeRect(node2)
const nodeParentPos = getNodePos(node2.parentNode)
let x2
let y2
if (isParentGroup) {
x2 = nodePos.x - nodeParentPos.x - parseFloat(groupNode.style.left)
y2 = nodePos.y - nodeParentPos.y - parseFloat(groupNode.style.top)
} else {
x2 =
nodePos.x -
left2 +
(nodeRect.width - node2.dom?.offsetWidth) / 2 -
nodeParentPos.x
y2 =
nodePos.y -
top2 +
(nodeRect.height - node2.dom?.offsetHeight) / 2 -
nodeParentPos.y
}
setNodePos(node2, { x: x2, y: y2 })
}
if (!state$6.document.body.childNodes) return
if (isParentGroup) {
parentGroup.childNodes.splice(Math.min(...arr), 0, groupNode)
} else {
state$6.document.body.childNodes.splice(topZIndex, 0, groupNode)
}
state$6.current.nodes.length = 0
state$6.current.nodes.push(groupNode)
}
const setLeft = () => {
if (!state$6.current.nodes.length) return
if (state$6.current.nodes.length === 1) {
const node2 = state$6.current.nodes[0]
const nodeRect = getRectByNode(node2)
if (node2.locked) return
const width = node2?.dom?.offsetWidth
const nodeTop = styleConverter(node2.style).top
const distance2 = (nodeRect?.width - width) / 2
setNodePos(node2, { x: distance2, y: nodeTop })
return
}
const { firstNodeRect, firstNode } = getFirstNodeRect()
for (let i2 = 0, iLen = state$6.current.nodes.length; i2 < iLen; i2++) {
const node2 = state$6.current.nodes[i2]
if (node2.id !== firstNode.id) {
const nodeTop = styleConverter(node2.style).top
const nodeRect = getRectByNode(node2)
if (node2.locked) continue
const distance2 = nodeRect.left - firstNodeRect.left
setNodePos(node2, {
x: styleConverter(node2.style).left - distance2,
y: nodeTop,
})
}
}
}
const setRight = () => {
if (!state$6.current.nodes.length) return
const canvasRect = getRectByNode(state$6.document.body)
if (!canvasRect) return
if (state$6.current.nodes.length === 1) {
const node2 = state$6.current.nodes[0]
const nodeRect = getRectByNode(node2)
if (node2.locked) return
const nodeTop = styleConverter(node2.style).top
const width = node2?.dom?.offsetWidth
const distance2 = (nodeRect?.width - width) / 2
setNodePos(node2, {
x: canvasRect.width + distance2 - nodeRect?.width,
y: nodeTop,
})
return
}
const { firstNodeRect, firstNode } = getFirstNodeRect()
for (let i2 = 0, iLen = state$6.current.nodes.length; i2 < iLen; i2++) {
const node2 = state$6.current.nodes[i2]
if (node2.id !== firstNode.id) {
const nodeTop = styleConverter(node2.style).top
const nodeRect = getRectByNode(node2)
if (node2.locked) continue
const distance2 =
nodeRect.left +
nodeRect.width -
firstNodeRect.left -
firstNodeRect?.width
setNodePos(node2, {
x: styleConverter(node2.style).left - distance2,
y: nodeTop,
})
}
}
}
const setTop = () => {
if (!state$6.current.nodes.length) return
if (state$6.current.nodes.length === 1) {
const node2 = state$6.current.nodes[0]
const nodeRect = getRectByNode(node2)
if (node2.locked) return
const left2 = styleConverter(node2.style).left
const height = node2?.dom?.offsetHeight
const distance2 = (nodeRect?.height - height) / 2
setNodePos(node2, { x: left2, y: distance2 })
return
}
const { firstNodeRect, firstNode } = getFirstNodeRect()
for (let i2 = 0, iLen = state$6.current.nodes.length; i2 < iLen; i2++) {
const node2 = state$6.current.nodes[i2]
if (node2.id !== firstNode.id) {
const nodeLeft = styleConverter(node2.style).left
const nodeRect = getRectByNode(node2)
if (node2.locked) continue
const distance2 = nodeRect.top - firstNodeRect.top
setNodePos(node2, {
x: nodeLeft,
y: styleConverter(node2.style).top - distance2,
})
}
}
}
const setBottom = () => {
if (!state$6.current.nodes.length) return
const canvasRect = getRectByNode(state$6.document.body)
if (!canvasRect) return
if (state$6.current.nodes.length === 1) {
const node2 = state$6.current.nodes[0]
const nodeRect = getRectByNode(node2)
if (node2.locked) return
const left2 = styleConverter(node2.style).left
const height = node2?.dom?.offsetHeight
const distance2 = (nodeRect?.height - height) / 2
setNodePos(node2, {
x: left2,
y: canvasRect.height + distance2 - nodeRect?.height,
})
return
}
const { firstNodeRect, firstNode } = getFirstNodeRect()
for (let i2 = 0, iLen = state$6.current.nodes.length; i2 < iLen; i2++) {
const node2 = state$6.current.nodes[i2]
if (node2.id !== firstNode.id) {
const nodeLeft = styleConverter(node2.style).left
const nodeRect = getRectByNode(node2)
if (node2.locked) continue
const distance2 =
nodeRect.top +
nodeRect.height -
firstNodeRect.top -
firstNodeRect?.height
setNodePos(node2, {
x: nodeLeft,
y: styleConverter(node2.style).top - distance2,
})
}
}
}
const getFirstNodeRect = () => {
const model = state$6.current.model || 'click'
let firstNode = null
if (model === 'click') {
for (let i2 = 0, iLen = state$6.current.nodes.length; i2 < iLen; i2++) {
const node2 = state$6.current.nodes[i2]
if (!node2.locked) {
firstNode = node2
break
}
}
if (!firstNode) return
} else {
firstNode = state$6.current.nodes.find(
(e2) => e2.id === state$6.current.selectId
)
}
const firstNodeRect = getRectByNode(firstNode)
return {
firstNodeRect,
firstNode,
}
}
const moveComponent = (model, size = 1) => {
if (!state$6.current.nodes.length) return
for (let i2 = 0, iLen = state$6.current.nodes.length; i2 < iLen; i2++) {
const node2 = state$6.current.nodes[i2]
if (node2.locked) continue
let nodeTop = styleConverter(node2.style).top
let nodeLeft = styleConverter(node2.style).left
switch (model) {
case 'top':
nodeTop -= size
break
case 'right':
nodeLeft += size
break
case 'bottom':
nodeTop += size
break
case 'left':
nodeLeft -= size
break
}
setNodePos(node2, { x: nodeLeft, y: nodeTop })
}
}
const setMiddle = (model) => {
if (!state$6.current.nodes.length) return
const canvasRect = getRectByNode(state$6.document.body)
if (!canvasRect) return
const config2 = {
vertical: { targetKey: 'top', volume: 'width', coordinates: 'x' },
horizontal: { targetKey: 'left', volume: 'height', coordinates: 'y' },
}
const targetKey = config2[model].targetKey
const volume = config2[model].volume
const coordinates = config2[model].coordinates
if (
state$6.current.nodes.length === 1 &&
state$6.current.nodes[0]?.parentNode?.isGroup()
) {
return
}
const { firstNode } = getFirstNodeRect()
const benchmarkNode =
state$6.current.nodes.length === 1 ? state$6.document.body : firstNode
const benchmarkNodeRect = getRectByNode(benchmarkNode)
if (!benchmarkNodeRect) return
const start2 = benchmarkNodeRect[coordinates] - canvasRect[coordinates]
const most = start2 + benchmarkNodeRect[volume]
let startCoordinates = start2
let endCoordinates = most
let centerCoordinates =
(endCoordinates - startCoordinates) / 2 + startCoordinates
for (let i2 = 0, iLen = state$6.current.nodes.length; i2 < iLen; i2++) {
const node2 = state$6.current.nodes[i2]
if (node2.locked || node2.id === firstNode.id) continue
const nodeTargetKey = styleConverter(node2.style)[targetKey]
const nodeRect = getRectByNode(node2)
if (!nodeRect) continue
let xy = centerCoordinates - node2.styleProxy[volume] / 2
if (model === 'vertical') {
if (node2.parentNode?.isGroup()) {
const parentNode2 = getGroupNode$1(node2)
if (parentNode2) {
xy = xy - parentNode2.styleProxy.left
}
}
setNodePos(node2, { x: xy, y: nodeTargetKey })
} else {
if (node2.parentNode?.isGroup()) {
const parentNode2 = getGroupNode$1(node2)
if (parentNode2) {
xy = xy - parentNode2.styleProxy.top
}
}
setNodePos(node2, { x: nodeTargetKey, y: xy })
}
}
}
const setSameSize = (model) => {
if (state$6.current.nodes.length <= 1) return
const benchmarkNode = state$6.current.nodes[0]
const benchmarkNodeRect = benchmarkNode.styleProxy
if (!benchmarkNodeRect) return
let value2 = benchmarkNodeRect[model]
for (let i2 = 0, iLen = state$6.current.nodes.length; i2 < iLen; i2++) {
const node2 = state$6.current.nodes[i2]
if (node2.locked) continue
const nodeRect = node2.styleProxy
if (!nodeRect) continue
switch (model) {
case 'width':
setNodeRect(node2, { width: value2, height: nodeRect.height })
break
case 'height':
setNodeRect(node2, { width: nodeRect.width, height: value2 })
break
}
}
}
const isometric = (model) => {
if (state$6.current.nodes.length <= 2) return
let space = 0
const config2 = {
vertical: { offset: 'top', volume: 'height', coordinates: 'y' },
horizontal: { offset: 'left', volume: 'width', coordinates: 'x' },
}
const getSpace = () => {
let startSide = 0
let endSide = 0
let maxSize = 0
let nodesMaxSize = 0
let remainSpace = 0
let _space = 0
for (let i2 = 0, iLen = state$6.current.nodes.length; i2 < iLen; i2++) {
const node2 = state$6.current.nodes[i2]
const style2 = getComputedStyle(node2.dom)
const styleProxy = styleConverter(style2)
const nodeStartSide = styleProxy[config2[model].offset]
const nodeEndSide = nodeStartSide + styleProxy[config2[model].volume]
if (i2 === 0) startSide = nodeStartSide
if (startSide > nodeStartSide) startSide = nodeStartSide
if (endSide < nodeEndSide) endSide = nodeEndSide
nodesMaxSize += styleProxy[config2[model].volume]
}
maxSize = endSide - startSide
remainSpace = maxSize - nodesMaxSize
_space = remainSpace / (state$6.current.nodes.length - 1)
return _space
}
space = getSpace()
let beforeNodeSide = 0
let list2 = lodash$2.exports.cloneDeep(state$6.current.nodes)
list2.sort((node1, node2) => {
const node1style = getComputedStyle(node1.dom)
const node1Rect = styleConverter(node1style)
const node1Left = node1Rect[config2[model].offset]
const node2style = getComputedStyle(node2.dom)
const node2Rect = styleConverter(node2style)
const node2Left = node2Rect[config2[model].offset]
return node1Left - node2Left
})
for (let i2 = 0, iLen = list2.length; i2 < iLen; i2++) {
const item2 = list2[i2]
if (i2 === 0 || i2 === list2.length - 1) continue
for (let n2 = 0, nLen = state$6.current.nodes.length; n2 < nLen; n2++) {
const beforeNode = list2[i2 - 1]
const thisNode = state$6.current.nodes[n2]
if (item2.id === thisNode.id) {
const style2 = getComputedStyle(beforeNode.dom)
const beforeNodeRect = styleConverter(style2)
const startSide = beforeNodeRect[config2[model].offset]
if (beforeNodeSide === 0) beforeNodeSide = startSide
beforeNodeSide =
beforeNodeSide + space + beforeNodeRect[config2[model].volume]
if (model === 'vertical') {
const nodeLeft = styleConverter(thisNode.style).left
setNodePos(thisNode, { x: nodeLeft, y: beforeNodeSide })
} else {
const nodeTop = styleConverter(thisNode.style).top
setNodePos(thisNode, { x: beforeNodeSide, y: nodeTop })
}
break
}
}
}
}
const setZIndex$1 = (model) => {
for (let i2 = 0, iLen = state$6.current.nodes.length; i2 < iLen; i2++) {
const item2 = state$6.current.nodes[i2]
const parent2 = item2?.parentNode?.isGroup()
? item2.parentNode
: getParentNode(item2)
if (!parent2.childNodes) continue
for (let n2 = 0, nLen = parent2.childNodes.length; n2 < nLen; n2++) {
const element = parent2.childNodes[n2]
if (element.id === item2.id) {
const index2 = model === 'bottom' ? 0 : parent2.childNodes.length
parent2.childNodes.splice(n2, 1)
parent2.childNodes.splice(index2, 0, item2)
break
}
}
}
}
function treeSelectSort(treeData, current2, isCloneDeep = false) {
const _current = isCloneDeep ? lodash$2.exports.cloneDeep(current2) : current2
let index2 = 0
const wm2 = /* @__PURE__ */ new WeakMap()
function loop(obj) {
if (!obj.childNodes) return
for (const item2 of obj.childNodes) {
index2++
for (const element of _current) {
if (element.id !== item2.id) continue
wm2.set(element, index2)
break
}
if (item2.childNodes) loop(item2)
}
}
loop(treeData)
return _current.sort((a2, b2) => wm2.get(a2) - wm2.get(b2))
}
function moveZIndex(model) {
function move(currentNode) {
const parent2 = getParentNode$1(currentNode)
if (!parent2) return false
const fun = {
before: () => {
for (let i2 = 0, iLen = parent2.childNodes.length; i2 < iLen; i2++) {
const targetNode = parent2.childNodes[i2]
if (targetNode.id !== currentNode.id) continue
if (i2 === 0 && parent2.childNodes.length === 1) {
return false
}
const index2 = state$6.current.nodes.findIndex(
(node2) => node2.id === targetNode.id
)
if (index2 !== i2) {
parent2.childNodes.splice(i2, 1)
let index22 = i2
parent2.childNodes.splice(index22 - 1, 0, targetNode)
break
}
}
return true
},
after: () => {
for (let i2 = parent2.childNodes.length - 1; i2 >= 0; i2--) {
const targetNode = parent2.childNodes[i2]
if (targetNode.id !== currentNode.id) continue
if (
i2 === parent2.childNodes.length - 1 &&
parent2.childNodes.length === 1
) {
return false
}
const index2 = state$6.current.nodes.findIndex(
(node2) => node2.id === targetNode.id
)
if (parent2.childNodes.length - 1 - index2 !== i2) {
parent2.childNodes.splice(i2, 1)
let index22 = i2
parent2.childNodes.splice(index22 + 1, 0, targetNode)
break
}
}
return true
},
}
return fun[model]()
}
let isRun = true
treeSelectSort(state$6.document.body, state$6.current.nodes)
const list2 =
model === 'before' ? state$6.current.nodes : state$6.current.nodes.reverse()
for (const currentNode of list2) {
isRun = move(currentNode)
if (!isRun) break
}
}
const getPermissions = (childNodes = []) => {
let permissions = []
if (!childNodes) return permissions
const loop = (childNodes2) => {
for (let i2 = 0, iLen = childNodes2.length; i2 < iLen; i2++) {
const node2 = childNodes2[i2]
if (node2.permission) {
permissions.push({
id: node2.id,
name: node2.name,
})
}
if (node2.childNodes && node2.childNodes.length) loop(node2.childNodes)
}
}
loop(childNodes)
return permissions
}
const save = async (silent) => {
app.current.project.current.page.save(silent)
}
const setCanvasZoom = (zoom) => {
state$6.current.zoom = zoom
state$6.current.translateX = 0
state$6.current.translateY = 0
}
const copyClipboardImg = () => {
const getImageUrl = (file2) => {
return new Promise((resolve2, reject2) => {
uploadBefore(file2).then((fileData) => {
let newFile = new File([fileData], 'img.png')
let param = new FormData()
param.append('formFile', newFile)
request({
url: `/api/v1/view/image`,
method: 'post',
data: param,
})
.then((res) => {
resolve2(res)
})
.catch((err) => {
reject2(err)
})
})
})
}
const setNode = (filename) => {
let style2 = {
position: 'absolute',
left: '0px',
top: '0px',
}
let newImgData = new CanvasNode$1({
id: createRandomId(),
is: 'Img',
name: '\u7C98\u8D34\u56FE\u7247',
props: {
filename,
},
style: style2,
childNodes: [],
})
CanvasNode$1.getBody().appendChild(newImgData)
}
return new Promise((resolve2, reject2) => {
if (navigator.clipboard) {
navigator.clipboard
?.read()
.then((res) => {
let clipboardItem = res[0]
for (const type4 of clipboardItem.types) {
if (type4.indexOf('image') > -1) {
clipboardItem
.getType(type4)
.then((res1) => {
getImageUrl(res1).then((res2) => {
setNode(res2)
resolve2(true)
})
})
.catch((err) => {
console.error(err)
})
} else {
reject2(false)
}
}
})
.catch(() => {
reject2(false)
})
} else {
reject2(false)
}
})
}
const emptyClipboard = () => {
return new Promise((resolve2, reject2) => {
let copyText = window.getSelection()?.toString() || ''
if (navigator.clipboard) {
if (copyText == '') {
navigator.clipboard
.writeText('')
.then(() => {
resolve2(true)
})
.catch(() => {
reject2(false)
})
}
} else {
reject2(false)
}
})
}
function lockedComponent(locked) {
for (let i2 = 0, iLen = state$6.current.nodes.length; i2 < iLen; i2++) {
const item2 = state$6.current.nodes[i2]
item2.locked = locked
}
}
function toggleComponentVisible(node2, visible) {
eachNode((childNode) => {
visible
? (childNode.style.visibility = 'inherit')
: (childNode.style.visibility = 'hidden')
}, node2)
}
function batchToggleComponentVisible(visible) {
for (let i2 = 0, iLen = state$6.current.nodes.length; i2 < iLen; i2++) {
const node2 = state$6.current.nodes[i2]
toggleComponentVisible(node2, visible)
}
}
function setDeepComponent(node2, key2, value2) {
eachNode((childNode) => {
childNode[key2] = value2
}, node2)
}
function batchSetDeepComponent(key2, value2) {
const selectNodes = app.current.project.current.page.selectedCanvasNodeList
const iLen = selectNodes.length
for (let i2 = 0; i2 < iLen; i2++) {
const node2 = selectNodes[i2]
setDeepComponent(node2, key2, value2)
}
}
const getGroupNode$1 = (nodes) => {
let node2
if (nodes.parentNode) {
node2 = nodes.parentNode.isGroup()
? getGroupNode$1(nodes.parentNode)
: nodes
}
return node2
}
class Page extends Base {
id = ''
name = ''
children = []
document = {
body: new CanvasNode$1({
name: '\u753B\u5E03',
style: {
width: '1920px',
height: '1080px',
backgroundColor: '#fff',
},
}),
}
selectedCanvasNodeList = new Proxy([], {
set(o2, k2, v4) {
o2 = reactive(o2)
if (v4 instanceof CanvasNode$1) {
v4._selected = true
}
if (k2 === 'length') {
o2.slice(v4, o2.length).forEach((n2) => {
n2._selected = false
})
}
o2[k2] = v4
return true
},
deleteProperty(o2, k2) {
const v4 = reactive(o2[k2])
if (v4 instanceof CanvasNode$1) {
v4._selected = false
}
return true
},
})
history = new PageHistory(this)
type = 1
updateTime
sort
parent
hasEvent = false
permissions = []
get parentId() {
return this.parent?.id
}
constructor(object4 = {}) {
if (object4.id) {
const page2 = Page.getPageById(object4.id)
if (page2) {
return page2
}
}
super()
Object.assign(this, object4)
for (const [i2, child] of this.children.entries()) {
this.children[i2] = new Page({ ...child, parent: this })
}
}
static getPageById(id2) {
const loop = (pageList) => {
for (const page2 of pageList) {
if (id2 === page2.id) {
return page2
}
const rs2 = loop(page2.children)
if (rs2) {
return rs2
}
}
}
return loop(app.current.project.pageList)
}
async copyPage() {
const copyPage = async (page2) => {
let sort3 = page2.getSort()
if (sort3 != null) {
sort3++
}
const getId2 = async (pageNode) => {
const id2 = JSON.parse(JSON.stringify(pageNode.id))
const data2 = {
name: pageNode.name,
parentId: pageNode.parentId || null,
type: pageNode.type,
sort: sort3 ? sort3 + 1 : 1,
}
const newId2 =
pageNode.type === 0
? await addPicture(data2)
: await addPicture(data2, Number(id2))
return Number(newId2)
}
let newId = String(await getId2(page2))
let _page = lodash$2.exports.cloneDeep(page2)
let newPage = new Page({
document: _page.document,
permissions: _page.permissions,
type: _page.type,
id: newId,
name: _page.name + '-' + newId,
parent: void 0,
children: [],
})
if (!page2.parent) {
Page.appendPageList(newPage, sort3)
}
if (page2.parent) {
page2.parent?.appendChild(newPage, sort3)
}
return newPage
}
try {
const page2 = await copyPage(this)
const newPage = Page.getPageById(page2.id)
if (!newPage) {
console.warn('\u627E\u4E0D\u5230\u8BE5\u9875\u9762' + page2.id)
return
}
const res = await getPicturesContent(newPage.id)
let bodyInfo = res.content ? JSON.parse(res.content).body : {}
let oldBody = new CanvasNode$1(bodyInfo)
let newBody = oldBody.cloneNode().toJSON()
let data2 = {
...res,
content: JSON.stringify({
body: newBody,
}),
permissions: res.permissions,
}
await savePicturesContent(newPage.id, data2)
return newPage
} catch (error2) {
toast('\u526F\u672C\u4FDD\u5B58\u5931\u8D25', 'error')
}
}
static appendPageList(child, sort3 = null) {
child.parent = void 0
const pageList = app.current.project.pageList
if (sort3 != null) {
pageList.splice(sort3, 0, child)
} else {
pageList.push(child)
}
}
appendChild(child, sort3 = null) {
child.remove()
child.parent = this
if (sort3 != null) {
this.children.splice(sort3, 0, child)
} else {
this.children.push(child)
}
}
remove() {
const list2 = this.parent
? this.parent.children
: app.current.project.pageList
if (list2.indexOf(this) >= 0) list2.splice(list2.indexOf(this), 1)
}
getSort() {
const list2 = this.parent
? this.parent.children
: app.current.project.pageList
let sort3 = list2.indexOf(this)
return sort3 >= 0 ? sort3 : null
}
async save(silent = false) {
const project = app.current.project
const page2 = this
const pageId = this.id
if (!pageId && !silent) {
toast('\u9875\u9762id\u4E0D\u80FD\u4E3A\u7A7A', 'error')
return
}
project.moduleSavedStatusMap.Page = 'saving'
const childNodes = page2.document.body.childNodes
let permissions = page2.permissions
let newPermissions = lodash$2.exports.uniqBy(
[...getPermissions(childNodes), ...permissions],
'id'
)
const filterPermissions = () => {
let list2 = newPermissions.filter(function (per) {
let have = false
const loop = (childNodes2) => {
if (have) return
for (let i2 = 0, iLen = childNodes2.length; i2 < iLen; i2++) {
const node2 = childNodes2[i2]
if (node2.id === per.id) {
have = true
break
}
if (node2.childNodes && node2.childNodes.length)
loop(node2.childNodes)
}
}
if (!childNodes) return
loop(childNodes)
if (have) return per
})
return list2
}
project.current.page.permissions = filterPermissions()
let hasEvent = this.document.body.blocks.length > 0
let data2 = {
content: JSON.stringify(this.document),
permissions: JSON.stringify(this.permissions),
hasEvent,
}
this.hasEvent = hasEvent
let savePagePromise = new Promise((resolve2, reject2) => {
savePicturesContent(this.id, data2, true).then(
(res) => {
resolve2(res)
},
(err) => {
ElMessage.error('\u4FDD\u5B58\u5931\u8D25')
reject2(err)
}
)
})
Promise.all([savePagePromise])
.then(() => {
project.moduleSavedStatusMap.Page = 'saved'
if (!silent) {
toast('\u4FDD\u5B58\u6210\u529F', 'success')
}
})
.catch(() => {
project.moduleSavedStatusMap.Page = 'fail'
})
Language$1.collect(pageId)
}
}
var __glob_0_8 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
Page,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const audio = new Audio('')
function checkFileType(fileUrl) {
const ACCEPT = ['mp3', 'wav']
const suffix2 = fileUrl.slice(fileUrl.lastIndexOf('.') + 1)
if (!ACCEPT.includes(suffix2)) {
const message2 =
Language$1._t(
'\u8BF7\u9009\u62E9\u6B63\u786E\u7684\u97F3\u9891\u6587\u4EF6'
) + ` (${ACCEPT.join('/').toUpperCase()})`
toast(message2, 'error')
return false
}
return true
}
function audioPlay(fileUrl, loop) {
audioPause()
if (!checkFileType(fileUrl)) {
return
}
audio.loop = loop
audio.src = `${baseURL}/api/v1/view/resource/${fileUrl}`
audio.play()
}
function audioPause() {
audio.pause()
}
class Project$2 extends CanvasNode$1 {
id = ''
identifier = ''
name = ''
path = ''
createTime = ''
updateTime = ''
constructor(object4 = {}) {
const id2 = object4.id || ''
if (Project$2.cache[id2]) return Project$2.cache[id2]
super()
Object.assign(this, object4)
Block.createArray(this.blocks)
Project$2.cache[id2] = this
}
static cache = {}
get saved() {
return this.saveStatus === 'saved'
}
get saveStatus() {
const saveStatusTypes = Project$2.saveStatusTypes
for (const name2 in this.moduleSavedStatusMap) {
const status = this.moduleSavedStatusMap[name2]
if (status === saveStatusTypes.saving) {
return saveStatusTypes.saving
}
if (status === saveStatusTypes.fail) {
return saveStatusTypes.fail
}
if (status === saveStatusTypes.unsaved) {
return saveStatusTypes.unsaved
}
}
return saveStatusTypes.saved
}
moduleSavedStatusMap = {
Variable: 'saved',
Page: 'saved',
Base: 'saved',
Data: 'saved',
Alarm: 'saved',
Language: 'saved',
Connection: 'saved',
}
static saveStatusTypes = {
saved: 'saved',
saving: 'saving',
fail: 'fail',
unsaved: 'unsaved',
}
pageList = []
languageList = []
variableMap = {}
variableValueMap = new Proxy(this.variableMap, {
get(target2, name2) {
if (!{}.hasOwnProperty.call(target2, name2)) {
return target2[name2]
}
return target2[name2]?.value
},
set(target2, name2, value2) {
const variable = target2[name2]
variable.set(value2)
return true
},
})
variableOldValueMap = new Proxy(this.variableMap, {
get(target2, name2) {
return target2[name2]?.oldValue ?? target2[name2]?.value
},
})
current = {
page: new Page(),
language: new Language$1({ lang: 'original' }, this),
pageList: [],
}
blocks = []
remove() {
const projectList = app.projectList
projectList.splice(projectList.indexOf(this))
}
toast(...args) {
toast(...args)
}
setVariable(name2, value2) {
Variable.map[name2].set(value2)
}
waiting(time2 = 0) {
return new Promise((resolve2) => {
setTimeout(() => resolve2(true), time2)
})
}
sendBroadcast(message2) {
const event = new CustomEvent(`broadcast`, {
detail: message2,
})
window.dispatchEvent(event)
}
openVirtualKeyboard() {
dispatchEvent(new Event('openVirtualKeyboard'))
}
closeVirtualKeyboard() {
dispatchEvent(new Event('closeVirtualKeyboard'))
}
audioPlay(fileUrl, loop) {
audioPlay(fileUrl, loop)
}
audioPause() {
audioPause()
}
}
var __glob_0_11 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
Project: Project$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
class Config extends Base {
isFullAllWindow = false
isFullScreen = true
isMenu = true
sync() {
const localConfig = this.getSession()
Object.assign(this, localConfig)
this.setSession()
}
getSession() {
return Session.get(Config.STORAGE_KEY) || {}
}
setSession() {
Session.set(Config.STORAGE_KEY, this)
}
constructor() {
super()
const self2 = this
this.sync()
return new Proxy(this, {
get(obj, key2) {
const session = self2.getSession()
return session[key2]
},
set(obj, key2, value2) {
obj[key2] = value2
self2.setSession()
return true
},
})
}
static STORAGE_KEY = 'config'
}
var __glob_0_5 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
Config,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
let app
class App extends Base {
constructor() {
if (app) return app
super()
app = this
window.app = app
}
config = new Config()
mode = mode
editing = editing
running = running
current = {
project: new Proxy(new Project$2(), {
get(o2, k2) {
if (k2 === 'variableMap') {
console.error('!project')
throw '!project'
}
return o2[k2]
},
}),
}
projectList = []
winList = []
viewStatus = {
toolbar: {
expended: true,
},
sidebar: {
expended: true,
width: 230,
limit: {
min: 230,
max: 600,
},
content: {
page: {
expended: true,
height: '50%',
},
node: {
expended: true,
height: '50%',
},
},
},
componentBox: {
show: true,
},
}
dataeventSocket = {}
async setCurrentProject(object4) {
const project = new Project$2(object4)
app.current.project = project
let info = await request.get(`/api/v1/project/${object4.id}/info`)
Object.assign(project, info)
App.updateCurrentProjectLocalInfo()
await request.get(`/api/v1/event/get?key=${project.id}`).then((res) => {
if (!res) return
project.blocks = Block.createArray(res)
})
if (app.editing) {
this.unwatchProjectBlocks()
this.unwatchProjectBlocks = watch$1(
() => {
return project.blocks
},
lodash$2.exports.debounce((blocks2) => {
request({
url: `/api/v1/event/addorupdate?key=${project.id}`,
method: 'post',
data: JSON.stringify(blocks2),
silent: true,
})
}, 500),
{
deep: true,
}
)
}
}
unwatchProjectBlocks() {}
static updateCurrentProjectLocalInfo() {
const project = app.current.project
if (!project.identifier) return
Session.set('X-Project-ID', project.id)
Session.set('X-Project', project.identifier)
Session.set('X-Project-Name', project.name)
const maxAge = 60 * 60 * 24 * 365 * 100
document.cookie = `project=${project.identifier}; max-age=${maxAge}`
document.cookie = `X-Project=${project.identifier}; max-age=${maxAge}`
}
}
addEventListener('focus', App.updateCurrentProjectLocalInfo)
function createApp() {
return new App()
}
function getApp() {
return new App()
}
async function closeTip(msg, btnList) {
client.invoke(
({ electron: electron2 }, msg2, btnList2) => {
let { dialog, BrowserWindow } = electron2
const win = BrowserWindow.getFocusedWindow()
win?.webContents.once('will-prevent-unload', (event) => {
event.preventDefault()
const choice = dialog.showMessageBoxSync(win, {
type: 'question',
buttons: btnList2,
title: '\u63D0\u793A',
message: msg2,
defaultId: 0,
cancelId: 1,
noLink: true,
})
const leave = choice === 1
if (leave) {
event.defaultPrevented = false
}
})
},
msg,
btnList
)
}
window.onbeforeunload = () => {
let isUnSave = void 0
let saved = !app.current.project.saved
let isClient2 = client.isClient()
saved && (isUnSave = true)
if (isClient2) {
if (opener === null) {
app.winList = app.winList.filter((win) => !win.closed)
saved = app.winList.some((win) => !win.app.current.project.saved)
saved && (isUnSave = true)
}
if (isUnSave) {
closeTip(
'\u5B58\u5728\u5DE5\u7A0B\u6587\u4EF6\u88AB\u4FEE\u6539\uFF0C\u5173\u95ED\u540E\u6240\u505A\u4FEE\u6539\u5C06\u4F1A\u4E22\u5931\uFF0C\u662F\u5426\u5173\u95ED\u7A97\u53E3',
['\u5173\u95ED', '\u53D6\u6D88']
)
} else if (opener === null && app.winList.length > 0) {
isUnSave = true
closeTip(
'\u5B58\u5728\u5DE5\u7A0B\u5904\u4E8E\u7F16\u8F91\u72B6\u6001\uFF0C\u5173\u95ED\u6B64\u9875\u9762\u4F1A\u540C\u65F6\u5173\u95ED\u5176\u4ED6\u5DE5\u7A0B\u9875\u9762\uFF0C\u662F\u5426\u7EE7\u7EED\u64CD\u4F5C\uFF1F',
['\u662F', '\u5426']
)
}
}
return isUnSave
}
window.onunload = async () => {
if (opener && editing) {
await request.post('/api/v1/project/service/stop')
}
}
var __glob_0_0 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
get app() {
return app
},
App,
createApp,
getApp,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const getters = {
get app() {
return getApp()
},
get project() {
return this.app.current.project
},
get page() {
return this.app.current.project.current.page
},
get document() {
return this.app.current.project.current.page.document
},
get body() {
return this.app.current.project.current.page.document.body
},
get selectedCanvasNodeList() {
return this.app.current.project.current.page.selectedCanvasNodeList
},
get nodes() {
return this.selectedCanvasNodeList
},
get language() {
return this.app.current.project.current.language
},
}
const $$f = getters
var __glob_0_16 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
getters,
$: $$f,
default: getters,
App,
createApp,
getApp,
get app() {
return app
},
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var zhCn$1 = {}
;(function (exports2) {
Object.defineProperty(exports2, '__esModule', { value: true })
var zhCn2 = {
name: 'zh-cn',
el: {
colorpicker: {
confirm: '\u786E\u5B9A',
clear: '\u6E05\u7A7A',
},
datepicker: {
now: '\u6B64\u523B',
today: '\u4ECA\u5929',
cancel: '\u53D6\u6D88',
clear: '\u6E05\u7A7A',
confirm: '\u786E\u5B9A',
selectDate: '\u9009\u62E9\u65E5\u671F',
selectTime: '\u9009\u62E9\u65F6\u95F4',
startDate: '\u5F00\u59CB\u65E5\u671F',
startTime: '\u5F00\u59CB\u65F6\u95F4',
endDate: '\u7ED3\u675F\u65E5\u671F',
endTime: '\u7ED3\u675F\u65F6\u95F4',
prevYear: '\u524D\u4E00\u5E74',
nextYear: '\u540E\u4E00\u5E74',
prevMonth: '\u4E0A\u4E2A\u6708',
nextMonth: '\u4E0B\u4E2A\u6708',
year: '\u5E74',
month1: '1 \u6708',
month2: '2 \u6708',
month3: '3 \u6708',
month4: '4 \u6708',
month5: '5 \u6708',
month6: '6 \u6708',
month7: '7 \u6708',
month8: '8 \u6708',
month9: '9 \u6708',
month10: '10 \u6708',
month11: '11 \u6708',
month12: '12 \u6708',
weeks: {
sun: '\u65E5',
mon: '\u4E00',
tue: '\u4E8C',
wed: '\u4E09',
thu: '\u56DB',
fri: '\u4E94',
sat: '\u516D',
},
months: {
jan: '\u4E00\u6708',
feb: '\u4E8C\u6708',
mar: '\u4E09\u6708',
apr: '\u56DB\u6708',
may: '\u4E94\u6708',
jun: '\u516D\u6708',
jul: '\u4E03\u6708',
aug: '\u516B\u6708',
sep: '\u4E5D\u6708',
oct: '\u5341\u6708',
nov: '\u5341\u4E00\u6708',
dec: '\u5341\u4E8C\u6708',
},
},
select: {
loading: '\u52A0\u8F7D\u4E2D',
noMatch: '\u65E0\u5339\u914D\u6570\u636E',
noData: '\u65E0\u6570\u636E',
placeholder: '\u8BF7\u9009\u62E9',
},
cascader: {
noMatch: '\u65E0\u5339\u914D\u6570\u636E',
loading: '\u52A0\u8F7D\u4E2D',
placeholder: '\u8BF7\u9009\u62E9',
noData: '\u6682\u65E0\u6570\u636E',
},
pagination: {
goto: '\u524D\u5F80',
pagesize: '\u6761/\u9875',
total: '\u5171 {total} \u6761',
pageClassifier: '\u9875',
deprecationWarning:
'\u4F60\u4F7F\u7528\u4E86\u4E00\u4E9B\u5DF2\u88AB\u5E9F\u5F03\u7684\u7528\u6CD5\uFF0C\u8BF7\u53C2\u8003 el-pagination \u7684\u5B98\u65B9\u6587\u6863',
},
messagebox: {
title: '\u63D0\u793A',
confirm: '\u786E\u5B9A',
cancel: '\u53D6\u6D88',
error: '\u8F93\u5165\u7684\u6570\u636E\u4E0D\u5408\u6CD5!',
},
upload: {
deleteTip: '\u6309 delete \u952E\u53EF\u5220\u9664',
delete: '\u5220\u9664',
preview: '\u67E5\u770B\u56FE\u7247',
continue: '\u7EE7\u7EED\u4E0A\u4F20',
},
table: {
emptyText: '\u6682\u65E0\u6570\u636E',
confirmFilter: '\u7B5B\u9009',
resetFilter: '\u91CD\u7F6E',
clearFilter: '\u5168\u90E8',
sumText: '\u5408\u8BA1',
},
tree: {
emptyText: '\u6682\u65E0\u6570\u636E',
},
transfer: {
noMatch: '\u65E0\u5339\u914D\u6570\u636E',
noData: '\u65E0\u6570\u636E',
titles: ['\u5217\u8868 1', '\u5217\u8868 2'],
filterPlaceholder: '\u8BF7\u8F93\u5165\u641C\u7D22\u5185\u5BB9',
noCheckedFormat: '\u5171 {total} \u9879',
hasCheckedFormat: '\u5DF2\u9009 {checked}/{total} \u9879',
},
image: {
error: '\u52A0\u8F7D\u5931\u8D25',
},
pageHeader: {
title: '\u8FD4\u56DE',
},
popconfirm: {
confirmButtonText: '\u786E\u5B9A',
cancelButtonText: '\u53D6\u6D88',
},
},
}
exports2['default'] = zhCn2
})(zhCn$1)
var zhCn = /* @__PURE__ */ getDefaultExportFromCjs(zhCn$1)
var en$1 = {}
;(function (exports2) {
Object.defineProperty(exports2, '__esModule', { value: true })
var English2 = {
name: 'en',
el: {
colorpicker: {
confirm: 'OK',
clear: 'Clear',
},
datepicker: {
now: 'Now',
today: 'Today',
cancel: 'Cancel',
clear: 'Clear',
confirm: 'OK',
selectDate: 'Select date',
selectTime: 'Select time',
startDate: 'Start Date',
startTime: 'Start Time',
endDate: 'End Date',
endTime: 'End Time',
prevYear: 'Previous Year',
nextYear: 'Next Year',
prevMonth: 'Previous Month',
nextMonth: 'Next Month',
year: '',
month1: 'January',
month2: 'February',
month3: 'March',
month4: 'April',
month5: 'May',
month6: 'June',
month7: 'July',
month8: 'August',
month9: 'September',
month10: 'October',
month11: 'November',
month12: 'December',
week: 'week',
weeks: {
sun: 'Sun',
mon: 'Mon',
tue: 'Tue',
wed: 'Wed',
thu: 'Thu',
fri: 'Fri',
sat: 'Sat',
},
months: {
jan: 'Jan',
feb: 'Feb',
mar: 'Mar',
apr: 'Apr',
may: 'May',
jun: 'Jun',
jul: 'Jul',
aug: 'Aug',
sep: 'Sep',
oct: 'Oct',
nov: 'Nov',
dec: 'Dec',
},
},
select: {
loading: 'Loading',
noMatch: 'No matching data',
noData: 'No data',
placeholder: 'Select',
},
cascader: {
noMatch: 'No matching data',
loading: 'Loading',
placeholder: 'Select',
noData: 'No data',
},
pagination: {
goto: 'Go to',
pagesize: '/page',
total: 'Total {total}',
pageClassifier: '',
deprecationWarning:
'Deprecated usages detected, please refer to the el-pagination documentation for more details',
},
messagebox: {
title: 'Message',
confirm: 'OK',
cancel: 'Cancel',
error: 'Illegal input',
},
upload: {
deleteTip: 'press delete to remove',
delete: 'Delete',
preview: 'Preview',
continue: 'Continue',
},
table: {
emptyText: 'No Data',
confirmFilter: 'Confirm',
resetFilter: 'Reset',
clearFilter: 'All',
sumText: 'Sum',
},
tree: {
emptyText: 'No Data',
},
transfer: {
noMatch: 'No matching data',
noData: 'No data',
titles: ['List 1', 'List 2'],
filterPlaceholder: 'Enter keyword',
noCheckedFormat: '{total} items',
hasCheckedFormat: '{checked}/{total} checked',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: 'Back',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
exports2['default'] = English2
})(en$1)
var en = /* @__PURE__ */ getDefaultExportFromCjs(en$1)
var ja$1 = {}
;(function (exports2) {
Object.defineProperty(exports2, '__esModule', { value: true })
var ja2 = {
name: 'ja',
el: {
colorpicker: {
confirm: 'OK',
clear: '\u30AF\u30EA\u30A2',
},
datepicker: {
now: '\u73FE\u5728',
today: '\u4ECA\u65E5',
cancel: '\u30AD\u30E3\u30F3\u30BB\u30EB',
clear: '\u30AF\u30EA\u30A2',
confirm: 'OK',
selectDate: '\u65E5\u4ED8\u3092\u9078\u629E',
selectTime: '\u6642\u9593\u3092\u9078\u629E',
startDate: '\u958B\u59CB\u65E5',
startTime: '\u958B\u59CB\u6642\u9593',
endDate: '\u7D42\u4E86\u65E5',
endTime: '\u7D42\u4E86\u6642\u9593',
prevYear: '\u524D\u5E74',
nextYear: '\u7FCC\u5E74',
prevMonth: '\u524D\u6708',
nextMonth: '\u7FCC\u6708',
year: '\u5E74',
month1: '1\u6708',
month2: '2\u6708',
month3: '3\u6708',
month4: '4\u6708',
month5: '5\u6708',
month6: '6\u6708',
month7: '7\u6708',
month8: '8\u6708',
month9: '9\u6708',
month10: '10\u6708',
month11: '11\u6708',
month12: '12\u6708',
weeks: {
sun: '\u65E5',
mon: '\u6708',
tue: '\u706B',
wed: '\u6C34',
thu: '\u6728',
fri: '\u91D1',
sat: '\u571F',
},
months: {
jan: '1\u6708',
feb: '2\u6708',
mar: '3\u6708',
apr: '4\u6708',
may: '5\u6708',
jun: '6\u6708',
jul: '7\u6708',
aug: '8\u6708',
sep: '9\u6708',
oct: '10\u6708',
nov: '11\u6708',
dec: '12\u6708',
},
},
select: {
loading: '\u30ED\u30FC\u30C9\u4E2D',
noMatch: '\u30C7\u30FC\u30BF\u306A\u3057',
noData: '\u30C7\u30FC\u30BF\u306A\u3057',
placeholder: '\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044',
},
cascader: {
noMatch: '\u30C7\u30FC\u30BF\u306A\u3057',
loading: '\u30ED\u30FC\u30C9\u4E2D',
placeholder: '\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044',
noData: '\u30C7\u30FC\u30BF\u306A\u3057',
},
pagination: {
goto: '',
pagesize: '\u4EF6/\u30DA\u30FC\u30B8',
total: '\u7DCF\u8A08 {total} \u4EF6',
pageClassifier: '\u30DA\u30FC\u30B8\u76EE\u3078',
},
messagebox: {
title: '\u30E1\u30C3\u30BB\u30FC\u30B8',
confirm: 'OK',
cancel: '\u30AD\u30E3\u30F3\u30BB\u30EB',
error: '\u6B63\u3057\u304F\u306A\u3044\u5165\u529B',
},
upload: {
deleteTip:
'Del\u30AD\u30FC\u3092\u62BC\u3057\u3066\u524A\u9664\u3059\u308B',
delete: '\u524A\u9664\u3059\u308B',
preview: '\u30D7\u30EC\u30D3\u30E5\u30FC',
continue: '\u7D9A\u884C\u3059\u308B',
},
table: {
emptyText: '\u30C7\u30FC\u30BF\u306A\u3057',
confirmFilter: '\u78BA\u8A8D',
resetFilter: '\u521D\u671F\u5316',
clearFilter: '\u3059\u3079\u3066',
sumText: '\u5408\u8A08',
},
tree: {
emptyText: '\u30C7\u30FC\u30BF\u306A\u3057',
},
transfer: {
noMatch: '\u30C7\u30FC\u30BF\u306A\u3057',
noData: '\u30C7\u30FC\u30BF\u306A\u3057',
titles: ['\u30EA\u30B9\u30C8 1', '\u30EA\u30B9\u30C8 2'],
filterPlaceholder: '\u30AD\u30FC\u30EF\u30FC\u30C9\u3092\u5165\u529B',
noCheckedFormat: '\u7DCF\u8A08 {total} \u4EF6',
hasCheckedFormat: '{checked}/{total} \u3092\u9078\u629E\u3057\u305F',
},
image: {
error: '\u5931\u6557',
},
pageHeader: {
title: '\u623B\u308B',
},
popconfirm: {
confirmButtonText: '\u306F\u3044',
cancelButtonText: '\u3044\u3044\u3048',
},
},
}
exports2['default'] = ja2
})(ja$1)
var ja = /* @__PURE__ */ getDefaultExportFromCjs(ja$1)
var th$1 = {}
;(function (exports2) {
Object.defineProperty(exports2, '__esModule', { value: true })
var th2 = {
name: 'th',
el: {
colorpicker: {
confirm: '\u0E15\u0E01\u0E25\u0E07',
clear: '\u0E25\u0E49\u0E32\u0E07\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25',
},
datepicker: {
now: '\u0E15\u0E2D\u0E19\u0E19\u0E35\u0E49',
today: '\u0E27\u0E31\u0E19\u0E19\u0E35\u0E49',
cancel: '\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01',
clear: '\u0E25\u0E49\u0E32\u0E07\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25',
confirm: '\u0E15\u0E01\u0E25\u0E07',
selectDate:
'\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48',
selectTime: '\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E40\u0E27\u0E25\u0E32',
startDate:
'\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E40\u0E23\u0E34\u0E48\u0E21\u0E15\u0E49\u0E19',
startTime:
'\u0E40\u0E27\u0E25\u0E32\u0E40\u0E23\u0E34\u0E48\u0E21\u0E15\u0E49\u0E19',
endDate:
'\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E2A\u0E34\u0E49\u0E19\u0E2A\u0E38\u0E14',
endTime:
'\u0E40\u0E27\u0E25\u0E32\u0E2A\u0E34\u0E49\u0E19\u0E2A\u0E38\u0E14',
prevYear:
'\u0E1B\u0E35\u0E01\u0E48\u0E2D\u0E19\u0E2B\u0E19\u0E49\u0E32',
nextYear: '\u0E1B\u0E35\u0E16\u0E31\u0E14\u0E44\u0E1B',
prevMonth:
'\u0E40\u0E14\u0E37\u0E2D\u0E19\u0E01\u0E48\u0E2D\u0E19\u0E2B\u0E19\u0E49\u0E32',
nextMonth:
'\u0E40\u0E14\u0E37\u0E2D\u0E19\u0E16\u0E31\u0E14\u0E44\u0E1B',
year: '\u0E1B\u0E35',
month1: '\u0E21\u0E01\u0E23\u0E32\u0E04\u0E21',
month2: '\u0E01\u0E38\u0E21\u0E20\u0E32\u0E1E\u0E31\u0E19\u0E18\u0E4C',
month3: '\u0E21\u0E35\u0E19\u0E32\u0E04\u0E21',
month4: '\u0E40\u0E21\u0E29\u0E32\u0E22\u0E19',
month5: '\u0E1E\u0E24\u0E29\u0E20\u0E32\u0E04\u0E21',
month6: '\u0E21\u0E34\u0E16\u0E38\u0E19\u0E32\u0E22\u0E19',
month7: '\u0E01\u0E23\u0E01\u0E0E\u0E32\u0E04\u0E21',
month8: '\u0E2A\u0E34\u0E07\u0E2B\u0E32\u0E04\u0E21',
month9: '\u0E01\u0E31\u0E19\u0E22\u0E32\u0E22\u0E19',
month10: '\u0E15\u0E38\u0E25\u0E32\u0E04\u0E21',
month11: '\u0E1E\u0E24\u0E28\u0E08\u0E34\u0E01\u0E32\u0E22\u0E19',
month12: '\u0E18\u0E31\u0E19\u0E27\u0E32\u0E04\u0E21',
weeks: {
sun: '\u0E2D\u0E32',
mon: '\u0E08',
tue: '\u0E2D',
wed: '\u0E1E',
thu: '\u0E1E\u0E24',
fri: '\u0E28',
sat: '\u0E2A',
},
months: {
jan: '\u0E21\u0E01\u0E23\u0E32',
feb: '\u0E01\u0E38\u0E21\u0E20\u0E32',
mar: '\u0E21\u0E35\u0E19\u0E32',
apr: '\u0E40\u0E21\u0E29\u0E32',
may: '\u0E1E\u0E24\u0E29\u0E20\u0E32',
jun: '\u0E21\u0E34\u0E16\u0E38\u0E19\u0E32',
jul: '\u0E01\u0E23\u0E01\u0E0E\u0E32',
aug: '\u0E2A\u0E34\u0E07\u0E2B\u0E32',
sep: '\u0E01\u0E31\u0E19\u0E22\u0E32',
oct: '\u0E15\u0E38\u0E25\u0E32',
nov: '\u0E1E\u0E24\u0E28\u0E08\u0E34\u0E01\u0E32',
dec: '\u0E18\u0E31\u0E19\u0E27\u0E32',
},
},
select: {
loading: '\u0E01\u0E33\u0E25\u0E31\u0E07\u0E42\u0E2B\u0E25\u0E14',
noMatch:
'\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E15\u0E23\u0E07\u0E01\u0E31\u0E19',
noData:
'\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25',
placeholder: '\u0E40\u0E25\u0E37\u0E2D\u0E01',
},
cascader: {
noMatch:
'\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E15\u0E23\u0E07\u0E01\u0E31\u0E19',
loading: '\u0E01\u0E33\u0E25\u0E31\u0E07\u0E42\u0E2B\u0E25\u0E14',
placeholder: '\u0E40\u0E25\u0E37\u0E2D\u0E01',
noData:
'\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25',
},
pagination: {
goto: '\u0E44\u0E1B\u0E17\u0E35\u0E48',
pagesize: '/\u0E2B\u0E19\u0E49\u0E32',
total: '\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14 {total}',
pageClassifier: '',
},
messagebox: {
title: '\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21',
confirm: '\u0E15\u0E01\u0E25\u0E07',
cancel: '\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01',
error:
'\u0E04\u0E38\u0E13\u0E1B\u0E49\u0E2D\u0E19\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07',
},
upload: {
deleteTip:
'\u0E01\u0E14\u0E1B\u0E38\u0E48\u0E21 "\u0E25\u0E1A" \u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E25\u0E1A\u0E2D\u0E2D\u0E01',
delete: '\u0E25\u0E1A',
preview: '\u0E15\u0E31\u0E27\u0E2D\u0E22\u0E48\u0E32\u0E07',
continue: '\u0E17\u0E33\u0E15\u0E48\u0E2D',
},
table: {
emptyText:
'\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25',
confirmFilter: '\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19',
resetFilter: '\u0E23\u0E35\u0E40\u0E0B\u0E47\u0E15',
clearFilter: '\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14',
sumText: '\u0E23\u0E27\u0E21',
},
tree: {
emptyText:
'\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25',
},
transfer: {
noMatch:
'\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E15\u0E23\u0E07\u0E01\u0E31\u0E19',
noData:
'\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25',
titles: ['List 1', 'List 2'],
filterPlaceholder:
'\u0E01\u0E23\u0E2D\u0E01\u0E04\u0E35\u0E22\u0E4C\u0E40\u0E27\u0E34\u0E23\u0E4C\u0E14',
noCheckedFormat: '{total} items',
hasCheckedFormat: '{checked}/{total} checked',
},
image: {
error: 'FAILED',
},
pageHeader: {
title: '\u0E22\u0E49\u0E2D\u0E19\u0E01\u0E25\u0E31\u0E1A',
},
popconfirm: {
confirmButtonText: 'Yes',
cancelButtonText: 'No',
},
},
}
exports2['default'] = th2
})(th$1)
var th = /* @__PURE__ */ getDefaultExportFromCjs(th$1)
const modulesFiles$1 = {
'../../node_modules/element-plus/es/locale/lang/af.mjs': __glob_8_0,
'../../node_modules/element-plus/es/locale/lang/ar.mjs': __glob_8_1,
'../../node_modules/element-plus/es/locale/lang/az.mjs': __glob_8_2,
'../../node_modules/element-plus/es/locale/lang/bg.mjs': __glob_8_3,
'../../node_modules/element-plus/es/locale/lang/bn.mjs': __glob_8_4,
'../../node_modules/element-plus/es/locale/lang/ca.mjs': __glob_8_5,
'../../node_modules/element-plus/es/locale/lang/cs.mjs': __glob_8_6,
'../../node_modules/element-plus/es/locale/lang/da.mjs': __glob_8_7,
'../../node_modules/element-plus/es/locale/lang/de.mjs': __glob_8_8,
'../../node_modules/element-plus/es/locale/lang/el.mjs': __glob_8_9,
'../../node_modules/element-plus/es/locale/lang/en.mjs': __glob_8_10,
'../../node_modules/element-plus/es/locale/lang/eo.mjs': __glob_8_11,
'../../node_modules/element-plus/es/locale/lang/es.mjs': __glob_8_12,
'../../node_modules/element-plus/es/locale/lang/et.mjs': __glob_8_13,
'../../node_modules/element-plus/es/locale/lang/eu.mjs': __glob_8_14,
'../../node_modules/element-plus/es/locale/lang/fa.mjs': __glob_8_15,
'../../node_modules/element-plus/es/locale/lang/fi.mjs': __glob_8_16,
'../../node_modules/element-plus/es/locale/lang/fr.mjs': __glob_8_17,
'../../node_modules/element-plus/es/locale/lang/he.mjs': __glob_8_18,
'../../node_modules/element-plus/es/locale/lang/hr.mjs': __glob_8_19,
'../../node_modules/element-plus/es/locale/lang/hu.mjs': __glob_8_20,
'../../node_modules/element-plus/es/locale/lang/hy-am.mjs': __glob_8_21,
'../../node_modules/element-plus/es/locale/lang/id.mjs': __glob_8_22,
'../../node_modules/element-plus/es/locale/lang/it.mjs': __glob_8_23,
'../../node_modules/element-plus/es/locale/lang/ja.mjs': __glob_8_24,
'../../node_modules/element-plus/es/locale/lang/kk.mjs': __glob_8_25,
'../../node_modules/element-plus/es/locale/lang/km.mjs': __glob_8_26,
'../../node_modules/element-plus/es/locale/lang/ko.mjs': __glob_8_27,
'../../node_modules/element-plus/es/locale/lang/ku.mjs': __glob_8_28,
'../../node_modules/element-plus/es/locale/lang/ky.mjs': __glob_8_29,
'../../node_modules/element-plus/es/locale/lang/lt.mjs': __glob_8_30,
'../../node_modules/element-plus/es/locale/lang/lv.mjs': __glob_8_31,
'../../node_modules/element-plus/es/locale/lang/mg.mjs': __glob_8_32,
'../../node_modules/element-plus/es/locale/lang/mn.mjs': __glob_8_33,
'../../node_modules/element-plus/es/locale/lang/nb-no.mjs': __glob_8_34,
'../../node_modules/element-plus/es/locale/lang/nl.mjs': __glob_8_35,
'../../node_modules/element-plus/es/locale/lang/pa.mjs': __glob_8_36,
'../../node_modules/element-plus/es/locale/lang/pl.mjs': __glob_8_37,
'../../node_modules/element-plus/es/locale/lang/pt-br.mjs': __glob_8_38,
'../../node_modules/element-plus/es/locale/lang/pt.mjs': __glob_8_39,
'../../node_modules/element-plus/es/locale/lang/ro.mjs': __glob_8_40,
'../../node_modules/element-plus/es/locale/lang/ru.mjs': __glob_8_41,
'../../node_modules/element-plus/es/locale/lang/sk.mjs': __glob_8_42,
'../../node_modules/element-plus/es/locale/lang/sl.mjs': __glob_8_43,
'../../node_modules/element-plus/es/locale/lang/sr.mjs': __glob_8_44,
'../../node_modules/element-plus/es/locale/lang/sv.mjs': __glob_8_45,
'../../node_modules/element-plus/es/locale/lang/ta.mjs': __glob_8_46,
'../../node_modules/element-plus/es/locale/lang/th.mjs': __glob_8_47,
'../../node_modules/element-plus/es/locale/lang/tk.mjs': __glob_8_48,
'../../node_modules/element-plus/es/locale/lang/tr.mjs': __glob_8_49,
'../../node_modules/element-plus/es/locale/lang/ug-cn.mjs': __glob_8_50,
'../../node_modules/element-plus/es/locale/lang/uk.mjs': __glob_8_51,
'../../node_modules/element-plus/es/locale/lang/uz-uz.mjs': __glob_8_52,
'../../node_modules/element-plus/es/locale/lang/vi.mjs': __glob_8_53,
'../../node_modules/element-plus/es/locale/lang/zh-cn.mjs': __glob_8_54,
'../../node_modules/element-plus/es/locale/lang/zh-tw.mjs': __glob_8_55,
}
const locales = {}
const regex = /..\/..\/node_modules\/element-plus\/es\/locale\/lang\//
const regex2 = /\.mjs/
for (const key2 in modulesFiles$1) {
locales[key2.replace(regex, '').replace(regex2, '')] =
modulesFiles$1[key2].default
}
class Language$1 extends Base {
project
lang
followLang
map = {}
staticMap = {}
constructor(
{ lang, running: running2 = false },
project = app.current.project
) {
super()
this.project = project
this.lang = lang
this.followLang = this.lang === 'auto' ? navigator.language : this.lang
running2 && this.setLang(this.lang)
this.fetch()
}
static isOriginal() {
try {
const project = app.current.project
const { language } = project.current
return language.lang === 'original'
} catch (error2) {
return false
}
}
setLang(lang) {
localStorage.setItem('lang', lang)
}
async fetch() {
if (this.followLang === 'original') {
Language$1.trigger(this)
return
}
const mappingType = 1
const result = await request.put(
`/api/v1/multiplelanguage/${mappingType}/${this.followLang}`
)
this.map = this.handleMap(result)
this.staticMap = await request.get(`/api/v1/multiplelanguage/static`)
Language$1.trigger(this)
}
handleMap(maps) {
let res = {}
maps.map((item2) => {
res[item2.originalText] = item2.translationText
})
return res
}
static scope(namespace) {
return function (rawText) {
return Language$1._t(rawText, namespace)
}
}
static initDefautLangInRun(running2) {
if (!running2) return
const lang = localStorage.getItem('lang')
const _lang = lang === null ? 'auto' : lang
app.current.project.current.language = new Language$1({ lang: _lang })
}
static langs = {
original: 'original',
auto: 'auto',
'zh-CN': 'zh-CN',
'en-US': 'en-US',
}
static store = []
static collectingRef = ref(0)
static collecting = false
static collect(pageId) {
Language$1.resetStore()
this.collecting = true
Language$1.collectingRef.value = Math.random()
nextTick(() => {
this.saveRawText(pageId)
this.collecting = false
})
}
static getTranslateText = (rawText) => {
const _rawText = rawText.trim()
const language = app.current.project?.current?.language
return language?.map[_rawText] || rawText
}
static t(rawText) {
Language$1.collectingRef.value
if (!rawText) return rawText
const text2 = Language$1.getTranslateText(rawText)
if (Language$1.collecting && Language$1.isOriginal()) {
Language$1.store.push(rawText.trim())
}
return text2
}
static _t(rawText, namespace = 'UI') {
if (!rawText) return rawText
const language = app.current.project?.current?.language
const map2 = language?.staticMap[namespace] || {}
return map2[rawText] || rawText
}
static toLanguage(rawText, noLanguage) {
if (noLanguage) return rawText
return Language$1._t(rawText)
}
static saveRawText(pageId, clear2 = false) {
if (!Language$1.isOriginal()) return
Language$1.triggerRenderFn()
setTimeout(() => {
const data2 = {
mappingType: 1,
pageId: String(pageId),
originalTexts: clear2 ? [] : [...new Set(Language$1.store)],
}
request.put('/api/v1/multiplelanguage/sync', data2, { silent: true })
}, 0)
}
static resetStore() {
Language$1.store.length = 0
}
static list = []
static useChange(fn2) {
Language$1.list.push(fn2)
onUnmounted(() => {
Language$1.remove(fn2)
})
}
static trigger(lang) {
const fns = Language$1.list
if (!fns || fns.length === 0) return false
for (let i2 = 0, fn2; (fn2 = fns[i2]); i2++) {
fn2(lang)
}
}
static remove(fn2) {
const fns = Language$1.list
for (let len2 = fns.length - 1; len2 >= 0; len2--) {
const _fn = fns[len2]
if (_fn === fn2) {
fns.splice(len2, 1)
}
}
}
static triggerRenderData = reactive({ i: 0 })
static triggerRenderFn() {
Language$1.triggerRenderData.i = Math.random()
}
static useElementPlusI18n() {
let local = ref(zhCn)
const map2 = {
original: zhCn,
'zh-CN': zhCn,
'en-US': en,
ja,
th,
...locales,
}
const initLang = (language) => {
local.value = map2[language.followLang] || en
}
Language$1.useChange((language) => {
initLang(language)
})
onMounted(() => {
initLang(app.current.project.current.language)
})
return { local }
}
static getLangReqHeader() {
const acceptLang = Language$1.isOriginal()
? 'zh-CN'
: app.current.project.current.language.followLang
return `${acceptLang},zh-CN;q=0.9,en-US;q=0.8,en;q=0.7,ja;q=0.6,th;q=0.5`
}
}
window.t = Language$1.t
window._t = Language$1._t
var __glob_0_7 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
Language: Language$1,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
let baseURL = ''
const params = new URLSearchParams(location.search)
baseURL = baseURL || params.get('baseURL') || ''
console.info('[baseURL]', baseURL)
const service = axios.create({
baseURL,
headers: {
'Content-Type': 'application/json;charset=UTF-8',
},
})
let reqNum = 0
let loadingOptions = {
fullscreen: true,
background: 'rgba(0,0,0,.05)',
customClass: 'delay-loading',
}
let loadingInstance
let lastClickTime = Date.now()
addEventListener(
'click',
() => {
lastClickTime = Date.now()
},
true
)
const setLoading = (silent) => {
if (silent) return
reqNum++
if (reqNum === 1) {
loadingInstance = ElLoading.service({
...loadingOptions,
customClass: `${loadingOptions.customClass} ${
Date.now() - lastClickTime < 16 ? 'locked' : ''
}`,
})
}
}
const closeLoading = (silent) => {
if (silent) return
reqNum--
if (reqNum <= 0) {
reqNum = 0
loadingInstance && loadingInstance.close()
}
}
service.interceptors.request.use(
async (config2) => {
setLoading(config2.silent)
const token = Session.get('Token')
if (token) {
config2.headers['Authorization'] = `Bearer ${token}`
}
config2.headers['X-Project'] = Session.get('X-Project')
try {
config2.headers['Accept-Language'] = Language$1.getLangReqHeader()
} catch (error2) {}
if (app.running) {
config2.headers['environment'] = 'runningtime'
}
if (typeof config2.data !== 'object') {
config2.data = JSON.stringify(config2.data)
}
return config2
},
(error2) => {
return Promise.reject(error2)
}
)
service.interceptors.response.use(
(response) => {
closeLoading(response.config.silent)
if (/api\//.test(response.config.url) && /^ {
Session.remove('Token')
history.go()
})
.catch(() => {
console.warn('x')
})
return Promise.reject(error2)
}
if (status == 409 && app.editing) {
Session.remove('X-Project')
ElMessageBox.alert(
Language$1._t('\u662F\u5426\u91CD\u65B0\u767B\u5F55'),
Language$1._t('\u767B\u5F55\u5DF2\u5931\u6548'),
{
confirmButtonText: Language$1._t('\u786E\u8BA4'),
}
).then(() => {
router$1.replace('/').then(() => {
history.go()
})
})
return Promise.reject(error2)
}
toast(Language$1._t(message2), 'error', 15e3)
return Promise.reject(error2)
}
)
const request = service
window.request = request
const userInfo = reactive({
user: {},
permissions: {
all: false,
pages: [],
widgets: [],
},
})
function hasPagePermission(page2) {
const permissions = userInfo.permissions
if (permissions.all) {
return true
}
return permissions.pages.find((pageId) => String(pageId) === String(page2.id))
}
function hasWidgetPermission(widget) {
const permissions = userInfo.permissions
if (permissions.all) {
return true
}
return permissions.widgets.find(
(widgetId) => String(widgetId) === String(widget.id)
)
}
window.userInfo = userInfo
const getPageTreeData = async () => {
const changeFieldChildToChildren = (list2) => {
const recursion = (list22) => {
for (let i2 = 0; i2 < list22.length; i2++) {
let item2 = list22[i2]
item2.id = String(item2.id)
item2.children = item2.child
delete item2.child
delete item2.parentId
if (item2.children.length) {
recursion(item2.children)
}
}
}
recursion(list2)
return list2
}
return getPictures().then((res) => {
const newRes = changeFieldChildToChildren(res)
app.current.project.pageList = newRes.map((item2) => {
return new Page(item2)
})
return newRes
})
}
const selectPage = async (page2) => {
if (page2.type === 0 || !page2.id) return
const project = app.current.project
project.current.page.history.pause()
project.current.page.selectedCanvasNodeList.length = 0
const pageContentPromise = getPicturesContent(page2.id).then((res) => {
let document2 = res.content || page2.document
let permissions = res.permissions || []
try {
document2 = JSON.parse(document2)
permissions = JSON.parse(permissions)
} catch (error2) {}
document2.body = new CanvasNode$1(document2.body)
page2.document = document2
page2.permissions = permissions
})
await Promise.all([pageContentPromise])
if (project.current.page !== page2) {
project.current.page.document.body = new CanvasNode$1({
style: {
...project.current.page.document.body.style,
},
})
}
project.current.page = page2
page2.history.resume()
}
const createFile$1 = async (model) => {
const currentPage2 = app.current.project.current.page
const parent2 = currentPage2.parent
const name2 =
model === 'folders'
? '\u65B0\u5EFA\u6587\u4EF6\u5939'
: '\u65B0\u5EFA\u9875\u9762'
const type4 = model === 'folders' ? 0 : 1
let sort3 = currentPage2.getSort()
if (sort3 != null) {
sort3++
}
const newId = await addPicture({
name: name2,
parentId: parent2?.id || null,
type: type4,
sort: sort3 ? sort3 + 1 : 1,
})
let newPage = new Page({
id: String(newId),
parent: parent2,
name: name2 + '-' + newId,
type: type4,
})
if (!currentPage2.id || !newPage.parent) {
Page.appendPageList(newPage, sort3)
}
if (parent2) {
parent2.appendChild(newPage, sort3)
}
return newPage
}
const deletePage = async (page2) => {
await delPicture(page2.id)
closePageTab(page2.id)
page2.remove()
}
const batchDelPage = async (pages) => {
const ids = pages.map((page2) => page2.id)
await batchDelPicture(ids)
closePageTab(ids)
for (const page2 of pages) {
page2.remove()
Language$1.saveRawText(page2.id, true)
}
checkHomePage('delete')
}
const setHomePage = async (id2) => {
app.current.project.current.homePageId = id2
return request.put('/api/v1/view/home', { homeNodeId: id2 }).then((res) => {
if (res) app.current.project.current.homePageId = String(res)
})
}
const getHomePageId = async () => {
const res = await request.get('/api/v1/view/home')
app.current.project.current.homePageId = String(res)
return res
}
const checkHomePage = (type4) => {
if (type4 === 'create') {
if (!app.current.project.current.homePageId) getHomePageId()
}
if (type4 === 'delete') {
if (!app.current.project.current.homePageId) {
getHomePageId()
} else {
const home = Page.getPageById(app.current.project.current.homePageId)
if (!home || !home.id) {
app.current.project.current.homePageId = void 0
getHomePageId()
}
}
}
}
const addPageTab = (page2) => {
if (page2.type === 0 || !page2.id) return
const pageList = app.current.project.current.pageList
if (!pageList.includes(page2)) {
pageList.push(page2)
}
selectPage(page2)
}
const closePageTab = (pageIds, onlySelf = false) => {
if (pageIds instanceof Array) {
for (const id2 of pageIds) {
deleteTab(id2, onlySelf)
}
} else {
deleteTab(pageIds, onlySelf)
}
const tabPageList = app.current.project.current.pageList
if (!tabPageList.length) {
const emptyPage = new Page()
app.current.project.current.page = emptyPage
replace$4(emptyPage)
return
}
const currentPageId = app.current.project.current.page.id
if (!tabPageList.some((page2) => page2.id === currentPageId)) {
const firstPage = tabPageList[0]
selectPage(firstPage)
replace$4(firstPage)
}
}
const deleteTab = (pageId, onlySelf = false) => {
if (!onlySelf) {
const page2 = app.current.project.pageList.find(
(page22) => page22.id === pageId
)
if (page2 && page2.children) {
page2.children.forEach((page22) => {
deleteTab(page22.id)
})
}
}
const tabPageList = app.current.project.current.pageList
const pageIndex2 = tabPageList.findIndex((page2) => page2.id === pageId)
if (pageIndex2 === -1) return
tabPageList.splice(pageIndex2, 1)
}
const closeAllPageTabs = () => {
app.current.project.current.pageList = []
const emptyPage = new Page()
app.current.project.current.page = emptyPage
replace$4(emptyPage)
}
const closeElsePageTabs = (pageId) => {
app.current.project.current.pageList =
app.current.project.current.pageList.filter((page2) => page2.id === pageId)
replace$4({ id: pageId })
}
let CacheSocket = null
const initSocket = async function () {
CacheSocket = new Socket({
url: '/hubs/v1/datacache',
name: '\u5B9E\u65F6\u670D\u52A1',
})
await CacheSocket.start()
}
const authorizeInfo = reactive({
licenseInfo: {
usedVariables: 0,
totalVariable: 0,
usedDevices: 0,
totalDevices: 0,
useClient: 0,
totalClient: 0,
services: {},
protocals: {},
components: {},
},
})
const accessSocketInVision = async () => {
const socket = new Socket({
url: '/hubs/v1/cmsv2authorization',
name: '\u8FD0\u884C\u7248\u8BBF\u95EE',
})
await socket.start()
}
const getLicenseInfo = async () => {
authorizeInfo.licenseInfo = await request.get(`/api/v1/license/info`)
}
const checkWidgetAuth = (is2) => {
if (!Widget.store[is2]?.authorizationRequired) return true
const componentKeys = Object.keys(authorizeInfo.licenseInfo.components)
return componentKeys.includes(is2)
}
const notFound = () =>
Promise.resolve().then(function () {
return _404NotFound$1
})
const routes = [
{
path: '/',
name: '/',
component: () =>
Promise.resolve().then(function () {
return Frame$1
}),
children: [
{
path: '/',
name: '',
component: () =>
Promise.resolve().then(function () {
return Projects$1
}),
},
],
},
{
path: '/editing/project/:projectId',
component: () =>
Promise.resolve().then(function () {
return Project$1
}),
children: [
{
path: 'vars',
name: 'vars',
component: () =>
Promise.resolve().then(function () {
return Vars$1
}),
},
{
path: 'page/:pageId?',
name: 'page',
component: () =>
Promise.resolve().then(function () {
return Pages$1
}),
beforeEnter: async () => {
await getPageTreeData()
await getHomePageId()
return true
},
},
{
path: 'history',
name: 'history',
component: () =>
Promise.resolve().then(function () {
return History$3
}),
},
{
path: 'basis',
name: 'basis',
component: () =>
Promise.resolve().then(function () {
return Basis$1
}),
},
{
path: 'lang',
name: 'lang',
component: () =>
Promise.resolve().then(function () {
return Lang$1
}),
},
{
path: 'connection',
name: 'connection',
component: () =>
Promise.resolve().then(function () {
return Connection$1
}),
},
{
path: 'data',
name: 'data',
component: () =>
Promise.resolve().then(function () {
return Data$1
}),
},
{
path: 'alarm',
name: 'alarm',
component: () =>
Promise.resolve().then(function () {
return Alarm$1
}),
},
],
},
{
path: '/login',
name: 'login',
component: () =>
Promise.resolve().then(function () {
return login$1
}),
},
{
path: '/running/project/:projectId/page/:pageId?',
name: 'running',
component: () =>
Promise.resolve().then(function () {
return Run$1
}),
},
{ path: '/404', name: '404', component: notFound },
{
path: '/:pathMatch(.*)*',
name: 'not-found',
component: notFound,
},
]
const vueFileMap = {
'../App.vue': () =>
Promise.resolve().then(function () {
return App$1
}),
'../components/left-menu.vue': () =>
Promise.resolve().then(function () {
return leftMenu$1
}),
'../components/scaling-zoom.vue': () =>
Promise.resolve().then(function () {
return scalingZoom
}),
'../components/theme-menu.vue': () =>
Promise.resolve().then(function () {
return themeMenu
}),
'../layout/login.vue': () =>
Promise.resolve().then(function () {
return login$1
}),
'../views/404NotFound.vue': () =>
Promise.resolve().then(function () {
return _404NotFound$1
}),
'../components/AsyncComponent/AsyncComponent.vue': () =>
Promise.resolve().then(function () {
return AsyncComponent
}),
'../components/DialogPage/DialogPage.vue': () =>
Promise.resolve().then(function () {
return DialogPage$2
}),
'../components/EllipsisTooltip/EllipsisTooltip.vue': () =>
Promise.resolve().then(function () {
return EllipsisTooltip$1
}),
'../components/MiniPagesMenu/MiniPagesMenu.vue': () =>
Promise.resolve().then(function () {
return MiniPagesMenu$1
}),
'../components/TitleTooltip/TitleTooltip.vue': () =>
Promise.resolve().then(function () {
return TitleTooltip
}),
'../components/VirtualKeyboard/VirtualKeyboard.vue': () =>
Promise.resolve().then(function () {
return VirtualKeyboard$1
}),
'../components/VirtualTree/TreeNode.vue': () =>
Promise.resolve().then(function () {
return TreeNode$2
}),
'../components/VirtualTree/VirtualTree.vue': () =>
Promise.resolve().then(function () {
return VirtualTree$1
}),
'../components/collapse/collapse.vue': () =>
Promise.resolve().then(function () {
return collapse$1
}),
'../components/component-styles/module-appearance.vue': () =>
Promise.resolve().then(function () {
return moduleAppearance$1
}),
'../components/component-styles/module-function.vue': () =>
Promise.resolve().then(function () {
return moduleFunction$1
}),
'../components/component-styles/module-opacity.vue': () =>
Promise.resolve().then(function () {
return moduleOpacity$1
}),
'../components/component-styles/module-permission.vue': () =>
Promise.resolve().then(function () {
return modulePermission$1
}),
'../components/component-styles/module-position.vue': () =>
Promise.resolve().then(function () {
return modulePosition$1
}),
'../components/component-styles/module-text.vue': () =>
Promise.resolve().then(function () {
return moduleText$1
}),
'../components/component-styles/module-title.vue': () =>
Promise.resolve().then(function () {
return moduleTitle$1
}),
'../components/gallery/GalleryMaterial.vue': () =>
Promise.resolve().then(function () {
return GalleryMaterial$1
}),
'../components/gallery/OfficialMaterial.vue': () =>
Promise.resolve().then(function () {
return OfficialMaterial$1
}),
'../components/gallery/gallery.vue': () =>
Promise.resolve().then(function () {
return gallery
}),
'../sdk/components/SettingItem.vue': () =>
Promise.resolve().then(function () {
return SettingItem
}),
'../views/Frame/Frame.vue': () =>
Promise.resolve().then(function () {
return Frame$1
}),
'../views/Frame/Header.vue': () =>
Promise.resolve().then(function () {
return Header$5
}),
'../views/Project/Project.vue': () =>
Promise.resolve().then(function () {
return Project$1
}),
'../views/Projects/Projects.vue': () =>
Promise.resolve().then(function () {
return Projects$1
}),
'../views/Run/Run.vue': () =>
Promise.resolve().then(function () {
return Run$1
}),
'../views/picture-management/index.vue': () =>
Promise.resolve().then(function () {
return index$a
}),
'../widgets/CheckboxControl/CheckboxControl.settings.vue': () =>
Promise.resolve().then(function () {
return __glob_1_0
}),
'../widgets/CheckboxControl/CheckboxControl.vue': () =>
Promise.resolve().then(function () {
return __glob_1_1
}),
'../widgets/DateSelector/DateSelector.settings.vue': () =>
Promise.resolve().then(function () {
return __glob_1_2
}),
'../widgets/DateSelector/DateSelector.vue': () =>
Promise.resolve().then(function () {
return __glob_1_3
}),
'../widgets/Filter/DateIcon.vue': () =>
Promise.resolve().then(function () {
return __glob_1_4
}),
'../widgets/Filter/Filter.settings.vue': () =>
Promise.resolve().then(function () {
return __glob_1_5
}),
'../widgets/Filter/Filter.vue': () =>
Promise.resolve().then(function () {
return __glob_1_6
}),
'../widgets/Progress/Progress.settings.vue': () =>
Promise.resolve().then(function () {
return __glob_1_7
}),
'../widgets/Progress/Progress.vue': () =>
Promise.resolve().then(function () {
return __glob_1_8
}),
'../widgets/QueryButton/QueryButton.settings.vue': () =>
Promise.resolve().then(function () {
return __glob_1_9
}),
'../widgets/QueryButton/QueryButton.vue': () =>
Promise.resolve().then(function () {
return __glob_1_10
}),
'../widgets/RadioControl/RadioControl.settings.vue': () =>
Promise.resolve().then(function () {
return __glob_1_11
}),
'../widgets/RadioControl/RadioControl.vue': () =>
Promise.resolve().then(function () {
return __glob_1_12
}),
'../widgets/Select/OptionConfigDialog.vue': () =>
Promise.resolve().then(function () {
return __glob_1_13
}),
'../widgets/Select/Select.settings.vue': () =>
Promise.resolve().then(function () {
return __glob_1_14
}),
'../widgets/Select/Select.vue': () =>
Promise.resolve().then(function () {
return __glob_1_15
}),
'../widgets/SelectControl/SelectControl.settings.vue': () =>
Promise.resolve().then(function () {
return __glob_1_16
}),
'../widgets/SelectControl/SelectControl.vue': () =>
Promise.resolve().then(function () {
return __glob_1_17
}),
'../widgets/Sheet/DataToolbar.vue': () =>
Promise.resolve().then(function () {
return __glob_1_18
}),
'../widgets/Sheet/Sheet.settings.vue': () =>
Promise.resolve().then(function () {
return __glob_1_19
}),
'../widgets/Sheet/Sheet.vue': () =>
Promise.resolve().then(function () {
return __glob_1_20
}),
'../widgets/Unauthorized/Unauthorized.settings.vue': () =>
Promise.resolve().then(function () {
return __glob_1_21
}),
'../widgets/Unauthorized/Unauthorized.vue': () =>
Promise.resolve().then(function () {
return __glob_1_22
}),
'../components/component-styles/function-dialogs/function-dialog-btn.vue':
() =>
Promise.resolve().then(function () {
return functionDialogBtn$1
}),
'../components/component-styles/function-dialogs/function-dialog-variate.vue':
() =>
Promise.resolve().then(function () {
return functionDialogVariate
}),
'../components/component-styles/function-dialogs/function-dialog.vue': () =>
Promise.resolve().then(function () {
return functionDialog$1
}),
'../components/component-styles/function-items/function-input-precision.vue':
() =>
Promise.resolve().then(function () {
return functionInputPrecision
}),
'../components/component-styles/function-items/function-input-range.vue':
() =>
Promise.resolve().then(function () {
return functionInputRange
}),
'../components/component-styles/function-items/function-jump-page.vue': () =>
Promise.resolve().then(function () {
return functionJumpPage
}),
'../components/component-styles/function-items/function-popup.vue': () =>
Promise.resolve().then(function () {
return functionPopup$1
}),
'../components/component-styles/function-items/function-relate-variable.vue':
() =>
Promise.resolve().then(function () {
return functionRelateVariable
}),
'../components/component-styles/function-items/function-send-variable.vue':
() =>
Promise.resolve().then(function () {
return functionSendVariable$1
}),
'../components/component-styles/function-items/function-show-dialog.vue':
() =>
Promise.resolve().then(function () {
return functionShowDialog
}),
'../components/component-styles/function-items/function-tree.vue': () =>
Promise.resolve().then(function () {
return functionTree$1
}),
'../components/gallery/component/PanelLayout.vue': () =>
Promise.resolve().then(function () {
return PanelLayout$3
}),
'../components/picture-management/picture-production/component-event.vue':
() =>
Promise.resolve().then(function () {
return componentEvent
}),
'../components/picture-management/picture-production/component-object.vue':
() =>
Promise.resolve().then(function () {
return componentObject
}),
'../components/picture-management/picture-production/component-style.vue':
() =>
Promise.resolve().then(function () {
return componentStyle
}),
'../components/picture-management/picture-production/drag-choose-component-box.vue':
() =>
Promise.resolve().then(function () {
return dragChooseComponentBox$1
}),
'../components/picture-management/picture-production/picture-header.vue':
() =>
Promise.resolve().then(function () {
return pictureHeader
}),
'../components/picture-management/picture-production/project-page.vue': () =>
Promise.resolve().then(function () {
return projectPage
}),
'../components/picture-management/variable-management/add-device-form.vue':
() =>
Promise.resolve().then(function () {
return addDeviceForm
}),
'../components/picture-management/variable-management/add-device-group-form.vue':
() =>
Promise.resolve().then(function () {
return addDeviceGroupForm
}),
'../components/picture-management/variable-management/address-config.vue':
() =>
Promise.resolve().then(function () {
return addressConfig
}),
'../components/picture-management/variable-management/associated-variable.vue':
() =>
Promise.resolve().then(function () {
return associatedVariable
}),
'../components/picture-management/variable-management/compoment-table-inner.vue':
() =>
Promise.resolve().then(function () {
return compomentTableInner
}),
'../components/picture-management/variable-management/compoment-table.vue':
() =>
Promise.resolve().then(function () {
return compomentTable
}),
'../components/picture-management/variable-management/compoment-ztree-inner.vue':
() =>
Promise.resolve().then(function () {
return compomentZtreeInner
}),
'../components/picture-management/variable-management/compoment-ztree.vue':
() =>
Promise.resolve().then(function () {
return compomentZtree
}),
'../components/picture-management/variable-management/history-archive.vue':
() =>
Promise.resolve().then(function () {
return historyArchive
}),
'../views/Project/Alarm/Alarm.vue': () =>
Promise.resolve().then(function () {
return Alarm$1
}),
'../views/Project/Basis/Basis.vue': () =>
Promise.resolve().then(function () {
return Basis$1
}),
'../views/Project/Connection/Connection.vue': () =>
Promise.resolve().then(function () {
return Connection$1
}),
'../views/Project/Data/Data.vue': () =>
Promise.resolve().then(function () {
return Data$1
}),
'../views/Project/History/History.vue': () =>
Promise.resolve().then(function () {
return History$3
}),
'../views/Project/Lang/Lang.vue': () =>
Promise.resolve().then(function () {
return Lang$1
}),
'../views/Project/Pages/Pages.vue': () =>
Promise.resolve().then(function () {
return Pages$1
}),
'../views/Project/Vars/Vars.vue': () =>
Promise.resolve().then(function () {
return Vars$1
}),
'../views/Projects/components/BackupDialog.vue': () =>
Promise.resolve().then(function () {
return BackupDialog$1
}),
'../views/Projects/components/CreateProjectDialog.vue': () =>
Promise.resolve().then(function () {
return CreateProjectDialog$1
}),
'../views/Projects/components/HandleProjectConflict.vue': () =>
Promise.resolve().then(function () {
return HandleProjectConflict$1
}),
'../views/Projects/components/ModifyLevel.vue': () =>
Promise.resolve().then(function () {
return ModifyLevel$1
}),
'../views/Projects/components/RecoveryDataDialog.vue': () =>
Promise.resolve().then(function () {
return RecoveryDataDialog$1
}),
'../views/Projects/components/RenameDialog.vue': () =>
Promise.resolve().then(function () {
return RenameDialog$1
}),
'../views/Projects/components/TipDialog.vue': () =>
Promise.resolve().then(function () {
return TipDialog$1
}),
'../views/Projects/components/VersionUpdate.vue': () =>
Promise.resolve().then(function () {
return VersionUpdate$1
}),
'../views/Projects/components/createFolderDialog.vue': () =>
Promise.resolve().then(function () {
return createFolderDialog
}),
'../views/Run/AuthorizeInfo/AuthorizeInfo.vue': () =>
Promise.resolve().then(function () {
return AuthorizeInfo$1
}),
'../views/Run/AuthorizeInfo/UnauthorizedLabel.vue': () =>
Promise.resolve().then(function () {
return UnauthorizedLabel$1
}),
'../views/Run/Menu/Menu.vue': () =>
Promise.resolve().then(function () {
return Menu$1
}),
'../views/Run/RunSetting/RunSetting.vue': () =>
Promise.resolve().then(function () {
return RunSetting$1
}),
'../views/picture-management/picture-production/index.vue': () =>
Promise.resolve().then(function () {
return index$7
}),
'../views/picture-management/resources-management/index.vue': () =>
Promise.resolve().then(function () {
return index$5
}),
'../views/picture-management/variable-management/index.vue': () =>
Promise.resolve().then(function () {
return index$3
}),
'../widgets/CheckboxControl/components/ExpressionFn.vue': () =>
Promise.resolve().then(function () {
return ExpressionFn$1
}),
'../widgets/CheckboxControl/components/RelationVariable.vue': () =>
Promise.resolve().then(function () {
return RelationVariable$1
}),
'../widgets/QueryButton/settings/ControllerCharts.vue': () =>
Promise.resolve().then(function () {
return ControllerCharts$1
}),
'../widgets/RadioControl/components/ButtonStyle.vue': () =>
Promise.resolve().then(function () {
return ButtonStyle$1
}),
'../widgets/RadioControl/components/OptionsTable.vue': () =>
Promise.resolve().then(function () {
return OptionsTable$1
}),
'../components/picture-management/picture-production/component-box/index.vue':
() =>
Promise.resolve().then(function () {
return index$8
}),
'../views/Project/Alarm/Sidebar/Sidebar.vue': () =>
Promise.resolve().then(function () {
return Sidebar$1
}),
'../views/Project/Alarm/components/AlarmTable.vue': () =>
Promise.resolve().then(function () {
return AlarmTable$1
}),
'../views/Project/Alarm/components/SelectAlarmTypes.vue': () =>
Promise.resolve().then(function () {
return SelectAlarmTypes$1
}),
'../views/Project/Basis/Classes/Classes.vue': () =>
Promise.resolve().then(function () {
return Classes$1
}),
'../views/Project/Connection/EditorForm/ChoiceField.vue': () =>
Promise.resolve().then(function () {
return ChoiceField$2
}),
'../views/Project/Connection/EditorForm/ChoiceFieldDialog.vue': () =>
Promise.resolve().then(function () {
return ChoiceFieldDialog$1
}),
'../views/Project/Connection/EditorForm/EditorForm.vue': () =>
Promise.resolve().then(function () {
return EditorForm$1
}),
'../views/Project/Connection/EditorForm/Filter.vue': () =>
Promise.resolve().then(function () {
return Filter
}),
'../views/Project/Connection/EditorForm/MappingTable.vue': () =>
Promise.resolve().then(function () {
return MappingTable
}),
'../views/Project/Connection/EditorForm/Sort.vue': () =>
Promise.resolve().then(function () {
return Sort
}),
'../views/Project/Connection/EditorForm/TriggerSetting.vue': () =>
Promise.resolve().then(function () {
return TriggerSetting$2
}),
'../views/Project/Connection/EditorForm/TriggerSettingConfig.vue': () =>
Promise.resolve().then(function () {
return TriggerSettingConfig$1
}),
'../views/Project/Connection/EditorForm/VarTable.vue': () =>
Promise.resolve().then(function () {
return VarTable
}),
'../views/Project/Connection/EditorForm/dataBaseTable.vue': () =>
Promise.resolve().then(function () {
return dataBaseTable
}),
'../views/Project/Connection/EditorTable/EditorTable.vue': () =>
Promise.resolve().then(function () {
return EditorTable$1
}),
'../views/Project/Connection/Sidebar/Sidebar.vue': () =>
Promise.resolve().then(function () {
return Sidebar$5
}),
'../views/Project/Data/DataAggregation/DataAggregation.vue': () =>
Promise.resolve().then(function () {
return DataAggregation
}),
'../views/Project/Data/Sidebar/Sidebar.vue': () =>
Promise.resolve().then(function () {
return Sidebar$3
}),
'../views/Project/Data/VariableTag/VariableTag.vue': () =>
Promise.resolve().then(function () {
return VariableTag
}),
'../views/Project/Data/components/Header.vue': () =>
Promise.resolve().then(function () {
return Header$1
}),
'../views/Project/History/Dialog/HistoryConfig.vue': () =>
Promise.resolve().then(function () {
return HistoryConfig
}),
'../views/Project/History/Dialog/MoveFolder.vue': () =>
Promise.resolve().then(function () {
return MoveFolder$1
}),
'../views/Project/History/Dialog/StorageSet.vue': () =>
Promise.resolve().then(function () {
return StorageSet
}),
'../views/Project/History/Dialog/Tip.vue': () =>
Promise.resolve().then(function () {
return Tip
}),
'../views/Project/History/HistoryList/HistoryList.vue': () =>
Promise.resolve().then(function () {
return HistoryList$1
}),
'../views/Project/History/Table/Table.vue': () =>
Promise.resolve().then(function () {
return Table$1
}),
'../views/Project/History/components/DataBackup.vue': () =>
Promise.resolve().then(function () {
return DataBackup
}),
'../views/Project/History/components/HistoryDialog.vue': () =>
Promise.resolve().then(function () {
return HistoryDialog
}),
'../views/Project/History/components/TriggerFrequency.vue': () =>
Promise.resolve().then(function () {
return TriggerFrequency$3
}),
'../views/Project/Lang/ContentTable/ContentTable.vue': () =>
Promise.resolve().then(function () {
return ContentTable$1
}),
'../views/Project/Lang/Sidebar/Sidebar.vue': () =>
Promise.resolve().then(function () {
return Sidebar$7
}),
'../views/Project/Pages/Editor/Editor.vue': () =>
Promise.resolve().then(function () {
return Editor$1
}),
'../views/Project/Pages/Sidebar/Sidebar.vue': () =>
Promise.resolve().then(function () {
return Sidebar$9
}),
'../views/Project/Pages/Viewer/Viewer.vue': () =>
Promise.resolve().then(function () {
return Viewer$1
}),
'../views/Project/Vars/Header/Header.vue': () =>
Promise.resolve().then(function () {
return Header$3
}),
'../views/Project/Vars/Sidebar/Sidebar.vue': () =>
Promise.resolve().then(function () {
return Sidebar$b
}),
'../views/Project/Vars/Table/Table.vue': () =>
Promise.resolve().then(function () {
return Table$3
}),
'../views/Project/Vars/components/ReadWriteInput.vue': () =>
Promise.resolve().then(function () {
return ReadWriteInput$1
}),
'../views/Project/Vars/components/VarReferenceConfig.vue': () =>
Promise.resolve().then(function () {
return VarReferenceConfig$1
}),
'../views/Run/Menu/Login/Login.vue': () =>
Promise.resolve().then(function () {
return Login$1
}),
'../views/Run/Menu/User/User.vue': () =>
Promise.resolve().then(function () {
return User$1
}),
'../widgets/Sheet/components/ContextMenu/ContextMenu.vue': () =>
Promise.resolve().then(function () {
return ContextMenu$1
}),
'../widgets/Sheet/components/SlantLine/SlantLine.vue': () =>
Promise.resolve().then(function () {
return SlantLine$1
}),
'../widgets/Sheet/components/Toolbar/ToolColorPicker.vue': () =>
Promise.resolve().then(function () {
return ToolColorPicker
}),
'../widgets/Sheet/components/Toolbar/Toolbar.vue': () =>
Promise.resolve().then(function () {
return Toolbar$3
}),
'../widgets/Sheet/components/settings/Cell.vue': () =>
Promise.resolve().then(function () {
return Cell
}),
'../widgets/Sheet/components/settings/CellElement.vue': () =>
Promise.resolve().then(function () {
return CellElement$1
}),
'../widgets/Sheet/components/settings/Data.vue': () =>
Promise.resolve().then(function () {
return Data$3
}),
'../widgets/Sheet/components/settings/DataFieldConfigDialog.vue': () =>
Promise.resolve().then(function () {
return DataFieldConfigDialog$1
}),
'../widgets/Sheet/components/settings/QueryConditions.vue': () =>
Promise.resolve().then(function () {
return QueryConditions$1
}),
'../widgets/Sheet/components/settings/ReportSetting.vue': () =>
Promise.resolve().then(function () {
return ReportSetting$1
}),
'../widgets/Sheet/components/settings/StyleConditionsDialog.vue': () =>
Promise.resolve().then(function () {
return StyleConditionsDialog$1
}),
'../widgets/Sheet/components/settings/Title.vue': () =>
Promise.resolve().then(function () {
return Title$1
}),
'../widgets/Sheet/components/settings/Type.vue': () =>
Promise.resolve().then(function () {
return Type$1
}),
'../components/picture-management/picture-production/component-box/component/default-module.vue':
() =>
Promise.resolve().then(function () {
return defaultModule
}),
'../components/picture-management/picture-production/component-box/component/run-module.vue':
() =>
Promise.resolve().then(function () {
return runModule$1
}),
'../components/picture-management/picture-production/component-box/component/standard-controls.vue':
() =>
Promise.resolve().then(function () {
return standardControls
}),
'../views/Project/Alarm/Sidebar/components/AlarmLevelsConf.vue': () =>
Promise.resolve().then(function () {
return AlarmLevelsConf$1
}),
'../views/Project/Alarm/Sidebar/components/AlarmRecordsConf.vue': () =>
Promise.resolve().then(function () {
return AlarmRecordsConf$1
}),
'../views/Project/Alarm/Sidebar/components/AlarmTypeConf.vue': () =>
Promise.resolve().then(function () {
return AlarmTypeConf$1
}),
'../views/Project/Alarm/Sidebar/components/AlarmTypesConf.vue': () =>
Promise.resolve().then(function () {
return AlarmTypesConf$1
}),
'../views/Project/Alarm/Sidebar/components/SheetCreateDialog.vue': () =>
Promise.resolve().then(function () {
return SheetCreateDialog$1
}),
'../views/Project/Connection/EditorTable/components/ModifyRowsConfig.vue':
() =>
Promise.resolve().then(function () {
return ModifyRowsConfig$1
}),
'../views/Project/Connection/Sidebar/components/CreateConnection.vue': () =>
Promise.resolve().then(function () {
return CreateConnection$1
}),
'../views/Project/Connection/Sidebar/components/CreateData.vue': () =>
Promise.resolve().then(function () {
return CreateData
}),
'../views/Project/Connection/Sidebar/components/SqlConfigDialog.vue': () =>
Promise.resolve().then(function () {
return SqlConfigDialog$1
}),
'../views/Project/Connection/Sidebar/components/databaseConfig.vue': () =>
Promise.resolve().then(function () {
return databaseConfig$1
}),
'../views/Project/Connection/Sidebar/components/previewDatabaseTable.vue':
() =>
Promise.resolve().then(function () {
return previewDatabaseTable
}),
'../views/Project/Connection/Sidebar/components/selectDataTable.vue': () =>
Promise.resolve().then(function () {
return selectDataTable$1
}),
'../views/Project/Data/DataAggregation/components/ChoiceField.vue': () =>
Promise.resolve().then(function () {
return ChoiceField$1
}),
'../views/Project/Data/DataAggregation/components/FieldConfig.vue': () =>
Promise.resolve().then(function () {
return FieldConfig$1
}),
'../views/Project/Data/DataAggregation/components/FilterConditions.vue': () =>
Promise.resolve().then(function () {
return FilterConditions$1
}),
'../views/Project/Data/DataAggregation/components/TriggerConfig.vue': () =>
Promise.resolve().then(function () {
return TriggerConfig$1
}),
'../views/Project/Data/Sidebar/components/SheetCreateDialog.vue': () =>
Promise.resolve().then(function () {
return SheetCreateDialog$3
}),
'../views/Project/Data/VariableTag/components/ExpConfigDialog.vue': () =>
Promise.resolve().then(function () {
return ExpConfigDialog$4
}),
'../views/Project/Data/VariableTag/components/FieldType.vue': () =>
Promise.resolve().then(function () {
return FieldType$1
}),
'../views/Project/Data/VariableTag/components/FormulaConfigDialog.vue': () =>
Promise.resolve().then(function () {
return FormulaConfigDialog$1
}),
'../views/Project/Data/VariableTag/components/InputCode.vue': () =>
Promise.resolve().then(function () {
return InputCode$1
}),
'../views/Project/Data/VariableTag/components/RelevanceButton.vue': () =>
Promise.resolve().then(function () {
return RelevanceButton$1
}),
'../views/Project/Data/VariableTag/components/TriggerFrequency.vue': () =>
Promise.resolve().then(function () {
return TriggerFrequency$1
}),
'../views/Project/Data/VariableTag/components/TriggerSetting.vue': () =>
Promise.resolve().then(function () {
return TriggerSetting$1
}),
'../views/Project/Data/VariableTag/components/cacheSetting.vue': () =>
Promise.resolve().then(function () {
return cacheSetting
}),
'../views/Project/Data/VariableTag/components/noDataButton.vue': () =>
Promise.resolve().then(function () {
return noDataButton$1
}),
'../views/Project/Data/VariableTag/components/storageSetting.vue': () =>
Promise.resolve().then(function () {
return storageSetting$1
}),
'../views/Project/Lang/ContentTable/components/ExportFile.vue': () =>
Promise.resolve().then(function () {
return ExportFile
}),
'../views/Project/Lang/ContentTable/components/ImportFile.vue': () =>
Promise.resolve().then(function () {
return ImportFile$1
}),
'../views/Project/Lang/Sidebar/components/CmsSwitch.vue': () =>
Promise.resolve().then(function () {
return CmsSwitch$1
}),
'../views/Project/Lang/Sidebar/components/CreateDialog.vue': () =>
Promise.resolve().then(function () {
return CreateDialog$1
}),
'../views/Project/Pages/Editor/Board/Board.vue': () =>
Promise.resolve().then(function () {
return Board$1
}),
'../views/Project/Pages/Editor/Empty/Empty.vue': () =>
Promise.resolve().then(function () {
return Empty$1
}),
'../views/Project/Pages/Editor/Settings/Settings.vue': () =>
Promise.resolve().then(function () {
return Settings$1
}),
'../views/Project/Pages/Editor/Tab/Tab.vue': () =>
Promise.resolve().then(function () {
return Tab$1
}),
'../views/Project/Pages/Sidebar/CanvasNodeList/CanvasNodeList.vue': () =>
Promise.resolve().then(function () {
return CanvasNodeList$1
}),
'../views/Project/Pages/Sidebar/PageList/PageList.vue': () =>
Promise.resolve().then(function () {
return PageList$1
}),
'../views/Project/Vars/Header/components/Filter.vue': () =>
Promise.resolve().then(function () {
return Filter$3
}),
'../views/Project/Vars/Sidebar/components/IOTunnelDriveTree.vue': () =>
Promise.resolve().then(function () {
return IOTunnelDriveTree$1
}),
'../views/Project/Vars/Sidebar/components/IOTunnelOperate.vue': () =>
Promise.resolve().then(function () {
return IOTunnelOperate
}),
'../views/Project/Vars/Sidebar/components/InnerTunnelOperate.vue': () =>
Promise.resolve().then(function () {
return InnerTunnelOperate
}),
'../views/Project/Vars/Sidebar/components/SUBTunnelOperate.vue': () =>
Promise.resolve().then(function () {
return SUBTunnelOperate
}),
'../views/Project/Vars/Sidebar/components/VarGroupOperate.vue': () =>
Promise.resolve().then(function () {
return VarGroupOperate
}),
'../views/Project/Vars/Sidebar/components/VarNameConfig.vue': () =>
Promise.resolve().then(function () {
return VarNameConfig
}),
'../views/Project/Vars/Table/components/ImportFile.vue': () =>
Promise.resolve().then(function () {
return ImportFile$2
}),
'../views/Project/Vars/Table/components/VarAddressConfig.vue': () =>
Promise.resolve().then(function () {
return VarAddressConfig
}),
'../views/Project/Vars/Table/components/VarBatchCreate.vue': () =>
Promise.resolve().then(function () {
return VarBatchCreate
}),
'../views/Project/Vars/Table/components/VarBatchIssue.vue': () =>
Promise.resolve().then(function () {
return VarBatchIssue
}),
'../views/Project/Vars/Table/components/VarBatchModify.vue': () =>
Promise.resolve().then(function () {
return VarBatchModify
}),
'../views/Project/Vars/Table/components/VarHistoricArchiveConfig.vue': () =>
Promise.resolve().then(function () {
return VarHistoricArchiveConfig$1
}),
'../views/Project/Vars/Table/components/VarReferenceListCheck.vue': () =>
Promise.resolve().then(function () {
return VarReferenceListCheck
}),
'../views/Project/Pages/Editor/Board/ApplicationResource/ApplicationResource.vue':
() =>
Promise.resolve().then(function () {
return ApplicationResource$1
}),
'../views/Project/Pages/Editor/Board/Canvas/Canvas.vue': () =>
Promise.resolve().then(function () {
return Canvas$1
}),
'../views/Project/Pages/Editor/Board/Canvas/CanvasNode.vue': () =>
Promise.resolve().then(function () {
return CanvasNode
}),
'../views/Project/Pages/Editor/Board/History/History.vue': () =>
Promise.resolve().then(function () {
return History$1
}),
'../views/Project/Pages/Editor/Board/Selector/Resizer.vue': () =>
Promise.resolve().then(function () {
return Resizer$1
}),
'../views/Project/Pages/Editor/Board/Selector/Selected.vue': () =>
Promise.resolve().then(function () {
return Selected$1
}),
'../views/Project/Pages/Editor/Board/Selector/Selector.vue': () =>
Promise.resolve().then(function () {
return Selector$1
}),
'../views/Project/Pages/Editor/Board/Toolbar/LanguageSelect.vue': () =>
Promise.resolve().then(function () {
return LanguageSelect$1
}),
'../views/Project/Pages/Editor/Board/Toolbar/Toolbar.vue': () =>
Promise.resolve().then(function () {
return Toolbar$1
}),
'../views/Project/Pages/Editor/Board/Toolbar/ZoomSelect.vue': () =>
Promise.resolve().then(function () {
return ZoomSelect$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/Icon.vue': () =>
Promise.resolve().then(function () {
return Icon$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/WidgetLib.vue': () =>
Promise.resolve().then(function () {
return WidgetLib$1
}),
'../views/Project/Pages/Editor/Board/Zoom/Zoom.vue': () =>
Promise.resolve().then(function () {
return Zoom$1
}),
'../views/Project/Pages/Editor/Settings/Events/Events.vue': () =>
Promise.resolve().then(function () {
return Events$1
}),
'../views/Project/Pages/Editor/Settings/Style/Style.vue': () =>
Promise.resolve().then(function () {
return Style$1
}),
'../views/Project/Pages/Editor/Settings/WidgetSettings/InputSettings.vue':
() =>
Promise.resolve().then(function () {
return InputSettings$1
}),
'../views/Project/Pages/Editor/Settings/WidgetSettings/Permission.vue': () =>
Promise.resolve().then(function () {
return Permission$1
}),
'../views/Project/Pages/Editor/Settings/WidgetSettings/WidgetSettings.vue':
() =>
Promise.resolve().then(function () {
return WidgetSettings$1
}),
'../views/Project/Pages/Editor/Settings/components/SettingItem.vue': () =>
Promise.resolve().then(function () {
return SettingItem$2
}),
'../views/Project/Pages/Editor/Board/ApplicationResource/Panels/PanelContent.vue':
() =>
Promise.resolve().then(function () {
return PanelContent$1
}),
'../views/Project/Pages/Editor/Board/ApplicationResource/Panels/PanelLayout.vue':
() =>
Promise.resolve().then(function () {
return PanelLayout$1
}),
'../views/Project/Pages/Editor/Settings/Events/components/ActionPopover.vue':
() =>
Promise.resolve().then(function () {
return ActionPopover$1
}),
'../views/Project/Pages/Editor/Settings/Events/components/ActionSetting.vue':
() =>
Promise.resolve().then(function () {
return ActionSetting$1
}),
'../views/Project/Pages/Editor/Settings/Events/components/ActionTargetPopover.vue':
() =>
Promise.resolve().then(function () {
return ActionTargetPopover$1
}),
'../views/Project/Pages/Editor/Settings/Events/components/AlarmRecoverySetting.vue':
() =>
Promise.resolve().then(function () {
return AlarmRecoverySetting$1
}),
'../views/Project/Pages/Editor/Settings/Events/components/AlarmSetting.vue':
() =>
Promise.resolve().then(function () {
return AlarmSetting$1
}),
'../views/Project/Pages/Editor/Settings/Events/components/ConditionSetting.vue':
() =>
Promise.resolve().then(function () {
return ConditionSetting$1
}),
'../views/Project/Pages/Editor/Settings/Events/components/EventPopover.vue':
() =>
Promise.resolve().then(function () {
return EventPopover$1
}),
'../views/Project/Pages/Editor/Settings/Events/components/EventSettings.vue':
() =>
Promise.resolve().then(function () {
return EventSettings
}),
'../views/Project/Pages/Editor/Settings/Events/components/ExpConfigDialog.vue':
() =>
Promise.resolve().then(function () {
return ExpConfigDialog$3
}),
'../views/Project/Pages/Editor/Settings/Events/components/Footer.vue': () =>
Promise.resolve().then(function () {
return Footer$1
}),
'../views/Project/Pages/Editor/Settings/Events/components/OnBroadcastSetting.vue':
() =>
Promise.resolve().then(function () {
return OnBroadcastSetting$1
}),
'../views/Project/Pages/Editor/Settings/Events/components/Popover.vue': () =>
Promise.resolve().then(function () {
return Popover$1
}),
'../views/Project/Pages/Editor/Settings/Events/components/TimerSetting.vue':
() =>
Promise.resolve().then(function () {
return TimerSetting$1
}),
'../views/Project/Pages/Editor/Settings/Events/components/VarConditionConfig.vue':
() =>
Promise.resolve().then(function () {
return VarConditionConfig$1
}),
'../views/Project/Pages/Editor/Settings/Style/components/AppearanceSettings.vue':
() =>
Promise.resolve().then(function () {
return AppearanceSettings$1
}),
'../views/Project/Pages/Editor/Settings/Style/components/BackgroundImageSetting.vue':
() =>
Promise.resolve().then(function () {
return BackgroundImageSetting$1
}),
'../views/Project/Pages/Editor/Settings/Style/components/TextSettings.vue':
() =>
Promise.resolve().then(function () {
return TextSettings$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/A/A.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_0$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/A/A.vue': () =>
Promise.resolve().then(function () {
return __glob_2_1$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Button/Button.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_2$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Button/Button.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_3$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/Chart.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_4$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/Chart.vue': () =>
Promise.resolve().then(function () {
return __glob_2_5$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartBar/ChartBar.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_6$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartBar/ChartBar.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_7$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartBar/SetChart.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_8$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartBarHorizontal/ChartBarHorizontal.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_9$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartBarHorizontal/ChartBarHorizontal.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_10
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartBarHorizontalStacked/ChartBarHorizontalStacked.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_11
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartBarHorizontalStacked/ChartBarHorizontalStacked.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_12
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartBarStacked/ChartBarStacked.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_13
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartBarStacked/ChartBarStacked.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_14
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartCard/ChartCard.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_15
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartCard/ChartCard.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_16
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLine/ChartLine.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_17
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLine/ChartLine.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_18
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLine/SetChart.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_19
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineArea/ChartLineArea.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_20
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineArea/ChartLineArea.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_21
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineAreaStacked/ChartLineAreaStacked.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_22
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineAreaStacked/ChartLineAreaStacked.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_23
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineTrend/Chart.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_24
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineTrend/ChartLineTrend.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_25
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineTrend/ChartLineTrend.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_26
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineTrendConfig/ChartLineTrendConfig.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_27
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineTrendConfig/ChartLineTrendConfig.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_28
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartMixed/ChartMixed.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_29
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartMixed/ChartMixed.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_30
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartPie/ChartPie.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_31
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartPie/ChartPie.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_32
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartPie/Label.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_33
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartPie/SetChart.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_34
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartPieRing/ChartPieRing.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_35
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartPieRing/ChartPieRing.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_36
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartPieRing/SetChart.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_37
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartPieRose/ChartPieRose.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_38
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartPieRose/ChartPieRose.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_39
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartTable/ChartTable.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_40
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartTable/ChartTable.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_41
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Circle/Circle.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_42
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Circle/Circle.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_43
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ControlButton/ControlButton.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_44
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ControlButton/ControlButton.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_45
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DateRange/DateRange.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_46
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DateRange/DateRange.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_47
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DropDownList/DropDownList.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_48
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DropDownList/DropDownList.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_49
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DropdownMenu/DropdownMenu.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_50
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DropdownMenu/DropdownMenu.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_51
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DropdownMenuVertical/DropdownMenuVertical.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_52
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DropdownMenuVertical/DropdownMenuVertical.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_53
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DropdownMenuVertical2/DropdownMenuVertical2.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_54
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DropdownMenuVertical2/DropdownMenuVertical2.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_55
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Dynamic/Dynamic.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_56
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DynamicCircle/DynamicCircle.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_57
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DynamicCircle/DynamicCircle.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_58
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DynamicImg/DynamicImg.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_59
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DynamicImg/DynamicImg.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_60
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DynamicRect/DynamicRect.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_61
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DynamicRect/DynamicRect.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_62
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DynamicText/DynamicText.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_63
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DynamicText/DynamicText.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_64
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Exp/Exp.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_65
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Exp/Exp.vue': () =>
Promise.resolve().then(function () {
return __glob_2_66
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ExportButton/ExportButton.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_67
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ExportButton/ExportButton.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_68
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Group/Group.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_69
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Group/Group.vue': () =>
Promise.resolve().then(function () {
return __glob_2_70
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Img/Img.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_71
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Img/Img.vue': () =>
Promise.resolve().then(function () {
return __glob_2_72
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Input/Input.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_73
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Input/Input.vue': () =>
Promise.resolve().then(function () {
return __glob_2_74
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/JogButton/JogButton.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_75
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/JogButton/JogButton.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_76
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/JumpButton/JumpButton.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_77
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/JumpButton/JumpButton.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_78
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Language/Language.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_79
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Language/Language.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_80
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Line/Line.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_81
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Line/Line.vue': () =>
Promise.resolve().then(function () {
return __glob_2_82
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/LogManage/LogManage.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_83
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/LogManage/LogManage.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_84
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Login/Login.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_85
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Login/Login.vue': () =>
Promise.resolve().then(function () {
return __glob_2_86
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/NumberFilter/NumberFilter.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_87
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/NumberFilter/NumberFilter.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_88
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/NumberInput/NumberInput.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_89
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/NumberInput/NumberInput.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_90
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/NumberShow/NumberShow.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_91
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/NumberShow/NumberShow.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_92
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/PageFrame/PageFrame.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_93
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/PageFrame/PageFrame.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_94
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/PageList/PageList.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_95
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/PageList/PageList.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_96
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/PermissionManage/PermissionManage.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_97
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/PermissionManage/PermissionManage.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_98
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/PopupWindowButton/PopupWindowButton.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_99
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/PopupWindowButton/PopupWindowButton.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_100
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ReadWriteInput/ReadWriteInput.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_101
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ReadWriteInput/ReadWriteInput.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_102
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Rect/Rect.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_103
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Rect/Rect.vue': () =>
Promise.resolve().then(function () {
return __glob_2_104
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/RouterLink/RouterLink.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_105
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/RouterLink/RouterLink.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_106
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ShutdownButton/ShutdownButton.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_107
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ShutdownButton/ShutdownButton.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_108
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/StaticText/StaticText.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_109
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/StaticText/StaticText.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_110
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/SwitchButton/SwitchButton.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_111
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/SwitchButton/SwitchButton.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_112
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/TextInput/TextInput.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_113
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/TextInput/TextInput.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_114
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/UserInformation/UserInformation.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_115
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/UserInformation/UserInformation.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_116
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/VarList/VarList.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_117
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/VarList/VarList.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_118
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/VirtualKeyboardButton/VirtualKeyboardButton.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_119
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/VirtualKeyboardButton/VirtualKeyboardButton.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_120
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/ExpConfigDialog.vue':
() =>
Promise.resolve().then(function () {
return ExpConfigDialog$1
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/charts.vue':
() =>
Promise.resolve().then(function () {
return charts
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/checkbox.vue':
() =>
Promise.resolve().then(function () {
return checkbox
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/checkboxGroup.vue':
() =>
Promise.resolve().then(function () {
return checkboxGroup$1
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/color.vue':
() =>
Promise.resolve().then(function () {
return color
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/currentPage.vue':
() =>
Promise.resolve().then(function () {
return currentPage
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/date.vue':
() =>
Promise.resolve().then(function () {
return date
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/file.vue':
() =>
Promise.resolve().then(function () {
return file
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/image.vue':
() =>
Promise.resolve().then(function () {
return image
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/number.vue':
() =>
Promise.resolve().then(function () {
return number$1
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/page.vue':
() =>
Promise.resolve().then(function () {
return page
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/radio.vue':
() =>
Promise.resolve().then(function () {
return radio
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/select.vue':
() =>
Promise.resolve().then(function () {
return select
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/slide.vue':
() =>
Promise.resolve().then(function () {
return slide
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/text.vue':
() =>
Promise.resolve().then(function () {
return text
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/variableName.vue':
() =>
Promise.resolve().then(function () {
return variableName
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Button/settings/ConfirmBoxSetting.vue':
() =>
Promise.resolve().then(function () {
return ConfirmBoxSetting$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineTrendConfig/components/CurveAnalysis.vue':
() =>
Promise.resolve().then(function () {
return CurveAnalysis
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineTrendConfig/components/CurveDefine.vue':
() =>
Promise.resolve().then(function () {
return CurveDefine
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineTrendConfig/components/EditCurveGroup.vue':
() =>
Promise.resolve().then(function () {
return EditCurveGroup$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartTable/components/TableColumn.vue':
() =>
Promise.resolve().then(function () {
return TableColumn$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DateRange/controller/ControllerIcon.vue':
() =>
Promise.resolve().then(function () {
return ControllerIcon
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DateRange/controller/DateRangeIcon.vue':
() =>
Promise.resolve().then(function () {
return DateRangeIcon$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DateRange/settings/ControllerCharts.vue':
() =>
Promise.resolve().then(function () {
return ControllerCharts$5
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DropdownMenu/components/function-tree.vue':
() =>
Promise.resolve().then(function () {
return functionTree$3
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DropdownMenu/components/menu-style.vue':
() =>
Promise.resolve().then(function () {
return menuStyle
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DropdownMenu/components/styleSetting.vue':
() =>
Promise.resolve().then(function () {
return styleSetting
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DropdownMenu/components/type.vue':
() =>
Promise.resolve().then(function () {
return type
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Dynamic/components/Condition.vue':
() =>
Promise.resolve().then(function () {
return Condition$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Dynamic/components/StatusItem.vue':
() =>
Promise.resolve().then(function () {
return StatusItem$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ExportButton/settings/ControllerCharts.vue':
() =>
Promise.resolve().then(function () {
return ControllerCharts$3
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/LogManage/components/DeviceLog.vue':
() =>
Promise.resolve().then(function () {
return DeviceLog
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/LogManage/components/LoginLog.vue':
() =>
Promise.resolve().then(function () {
return LoginLog
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/LogManage/components/ModuleLog.vue':
() =>
Promise.resolve().then(function () {
return ModuleLog
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Login/components/Shadow.vue':
() =>
Promise.resolve().then(function () {
return Shadow$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Login/components/ShapeConfiguration.vue':
() =>
Promise.resolve().then(function () {
return ShapeConfiguration$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Login/components/TextConfiguration.vue':
() =>
Promise.resolve().then(function () {
return TextConfiguration$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/PermissionManage/components/RoleManage.vue':
() =>
Promise.resolve().then(function () {
return RoleManage
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/PermissionManage/components/UserManage.vue':
() =>
Promise.resolve().then(function () {
return UserManage
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/SwitchButton/components/Switch.vue':
() =>
Promise.resolve().then(function () {
return Switch$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/other/StyleConditionsDialog.vue':
() =>
Promise.resolve().then(function () {
return StyleConditionsDialog$2
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/Data.vue':
() =>
Promise.resolve().then(function () {
return Data$5
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/DataDimissions.vue':
() =>
Promise.resolve().then(function () {
return DataDimissions$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/DataFeildConfig.vue':
() =>
Promise.resolve().then(function () {
return DataFeildConfig$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/DataIndexes.vue':
() =>
Promise.resolve().then(function () {
return DataIndexes$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/DataZoom.vue':
() =>
Promise.resolve().then(function () {
return DataZoom$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/DataZoomConfig.vue':
() =>
Promise.resolve().then(function () {
return DataZoomConfig$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/Grid.vue':
() =>
Promise.resolve().then(function () {
return Grid$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/Label.vue':
() =>
Promise.resolve().then(function () {
return Label$2
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/Legend.vue':
() =>
Promise.resolve().then(function () {
return Legend$3
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/LegendColor.vue':
() =>
Promise.resolve().then(function () {
return LegendColor$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/MarkLineConfig.vue':
() =>
Promise.resolve().then(function () {
return MarkLineConfig$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/Padding.vue':
() =>
Promise.resolve().then(function () {
return Padding$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/QueryConditions.vue':
() =>
Promise.resolve().then(function () {
return QueryConditions$5
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/StyleConditions.vue':
() =>
Promise.resolve().then(function () {
return StyleConditions$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/Title.vue':
() =>
Promise.resolve().then(function () {
return Title$3
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/Toolbox.vue':
() =>
Promise.resolve().then(function () {
return Toolbox
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/Type.vue':
() =>
Promise.resolve().then(function () {
return Type$4
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/XAxis.vue':
() =>
Promise.resolve().then(function () {
return XAxis$3
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/YAxis.vue':
() =>
Promise.resolve().then(function () {
return YAxis$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/_.vue':
() =>
Promise.resolve().then(function () {
return _
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartCard/components/settings/Dialog.vue':
() =>
Promise.resolve().then(function () {
return Dialog$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartCard/components/settings/LabelSettings.vue':
() =>
Promise.resolve().then(function () {
return LabelSettings$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineTrend/components/settings/Legend.vue':
() =>
Promise.resolve().then(function () {
return Legend$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineTrend/components/settings/QueryConditions.vue':
() =>
Promise.resolve().then(function () {
return QueryConditions$3
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineTrend/components/settings/SetChart.vue':
() =>
Promise.resolve().then(function () {
return SetChart$3
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineTrend/components/settings/Toolbar.vue':
() =>
Promise.resolve().then(function () {
return Toolbar$5
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineTrend/components/settings/XAxis.vue':
() =>
Promise.resolve().then(function () {
return XAxis$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartTable/components/settings/Dialog.vue':
() =>
Promise.resolve().then(function () {
return Dialog$3
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartTable/components/settings/HeaderSettingDialog.vue':
() =>
Promise.resolve().then(function () {
return HeaderSettingDialog$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/PermissionManage/components/dialogs/ManageDialog.vue':
() =>
Promise.resolve().then(function () {
return ManageDialog
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/PermissionManage/components/dialogs/ResetDialog.vue':
() =>
Promise.resolve().then(function () {
return ResetDialog$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/PermissionManage/components/dialogs/RoleDialog.vue':
() =>
Promise.resolve().then(function () {
return RoleDialog$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/PermissionManage/components/dialogs/UserDialog.vue':
() =>
Promise.resolve().then(function () {
return UserDialog
}),
}
for (const filePath in vueFileMap) {
const component2 = vueFileMap[filePath]
routes.push({
path: filePath
.replace(/^../, '/:path(.*)')
.replace(/([^/\\]+)\.vue$/, ':file($1|$1.vue)?'),
component: component2,
})
}
const router = createRouter({
history: createWebHashHistory(),
routes,
})
let lastProjectId = Session.get('X-Project-ID') + ''
let userInfoLoaded = false
let licenseInfoLoaded = false
router.beforeEach(async (to, from, next) => {
await projectInit(to, from)
next()
})
let isStartSocket = false
async function projectInit(to, from) {
let { projectId } = to.params
if (projectId !== from.params.projectId) {
await app.setCurrentProject({
id: projectId + '',
})
}
if (projectId) {
if (!isStartSocket) {
isStartSocket = true
await Promise.all([
Variable.start(),
initSocket(),
(async () => {
if (to.name === 'running') {
app.dataeventSocket = new Socket({
url: `/hubs/v1/dataevent`,
name: '\u5168\u5C40\u4E8B\u4EF6',
})
await app.dataeventSocket.start()
}
})(),
(async () => {
if (app.running) await accessSocketInVision()
})(),
])
}
}
const token = Session.get('Token')
let type4 = ''
if (!editing && !token) {
type4 = 'Tourist'
}
if (!token || (projectId && lastProjectId !== projectId)) {
lastProjectId = projectId
const rs2 = await request({
url: `/api/v1/auth/requesttoken`,
method: 'post',
data: type4,
})
Session.set('Token', rs2)
}
if (projectId && !userInfoLoaded) {
const user2 = await request('/api/v1/authority/user/current')
Variable._store['Client_LoginUser'] = user2.name
const permissions = await request(
`/api/v1/authority/roleclaim/user/${user2.id}`
)
userInfo.user = user2
userInfo.permissions.all = permissions.all
userInfo.permissions.pages = permissions.left
userInfo.permissions.widgets = permissions.right
userInfoLoaded = true
}
if (!licenseInfoLoaded) {
await getLicenseInfo()
licenseInfoLoaded = true
}
}
var router$1 = router
var moduleA = {
namespaced: true,
modules: {
account: {
state: {
name: 'tom',
age: 18,
sex: true,
},
getters: {
getAge(state2) {
if (state2.age >= 18) return '\u6210\u5E74'
return '\u672A\u6210\u5E74'
},
},
mutations: {
setAge(state2, age) {
state2.age = age
},
},
actions: {
setAgeActions(context2, age) {
setTimeout(() => {
context2.commit('setAge', age)
}, 1e3)
},
},
},
},
}
var __glob_1_0$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: moduleA,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var moduleB = {
namespaced: true,
modules: {
account: {
state: {
name: 'Anne',
age: 16,
sex: false,
},
getters: {
getAge(state2) {
if (state2.age >= 18) return '\u6210\u5E74'
return '\u672A\u6210\u5E74'
},
},
mutations: {
setAge(state2, age) {
state2.age = age
},
},
actions: {
setAgeActions(context2, age) {
setTimeout(() => {
context2.commit('setAge', age)
}, 1e3)
},
},
},
},
}
var __glob_1_1$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: moduleB,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var pictureProduction = {
namespaced: true,
modules: {
constant: {
selectComponent: {
selectAttribute: 'style',
data: {
id: '',
name: '',
alias: '',
type: '',
moduleType: 'standardControls',
style: {},
event: {},
},
list: [],
},
pageContent: {
projectId: '',
id: '',
name: '',
canvasBox: {
drag: {
model: 'off',
space: false,
ctrl: false,
mousedown: false,
canvasLeftInit: 0,
canvasTopInit: 0,
initX: 0,
initY: 0,
},
width: 0,
height: 0,
left: 0,
top: 0,
x: 0,
y: 0,
zoom: 100,
backgroundColor: '#ffffff',
},
components: [],
},
},
account: {
state: {
constant: {
selectComponent: {
selectAttribute: 'style',
data: {
id: '',
name: '',
alias: '',
type: '',
style: {},
event: {},
},
list: [],
},
pageContent: {
projectId: '',
id: '',
name: '',
canvasBox: {
drag: {
model: 'off',
space: false,
ctrl: false,
mousedown: false,
canvasLeftInit: 0,
canvasTopInit: 0,
initX: 0,
initY: 0,
},
width: 0,
height: 0,
left: 0,
top: 0,
x: 0,
y: 0,
zoom: 100,
backgroundColor: '#ffffff',
},
components: [],
},
},
pageContent: {
projectId: '',
id: '',
name: '',
canvasBox: {
drag: {
model: 'off',
space: false,
ctrl: false,
mousedown: false,
canvasLeftInit: 0,
canvasTopInit: 0,
initX: 0,
initY: 0,
},
width: 0,
height: 0,
left: 0,
top: 0,
x: 0,
y: 0,
zoom: 100,
backgroundColor: '#ffffff',
},
components: [],
},
cacheComponents: {
state: 'off',
list: [],
},
},
mutations: {
setPageContent(state2, pageContent) {
state2.pageContent = pageContent
},
setPageContentComponents(state2, components) {
state2.pageContent.components = components
},
addPageContentComponents(state2, components) {
state2.pageContent.components.push(components)
},
editPageContentComponents(state2, data2) {
state2.pageContent.components[data2.index] = JSON.parse(
JSON.stringify(data2.components)
)
},
setCacheComponents(state2, components) {
state2.cacheComponents.list = components
},
},
},
},
}
var __glob_1_2$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: pictureProduction,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
/*!
* vuex v4.1.0
* (c) 2022 Evan You
* @license MIT
*/
var storeKey = 'store'
function useStore(key2) {
if (key2 === void 0) key2 = null
return inject(key2 !== null ? key2 : storeKey)
}
function find$4(list2, f2) {
return list2.filter(f2)[0]
}
function deepCopy$1(obj, cache2) {
if (cache2 === void 0) cache2 = []
if (obj === null || typeof obj !== 'object') {
return obj
}
var hit = find$4(cache2, function (c2) {
return c2.original === obj
})
if (hit) {
return hit.copy
}
var copy2 = Array.isArray(obj) ? [] : {}
cache2.push({
original: obj,
copy: copy2,
})
Object.keys(obj).forEach(function (key2) {
copy2[key2] = deepCopy$1(obj[key2], cache2)
})
return copy2
}
function forEachValue(obj, fn2) {
Object.keys(obj).forEach(function (key2) {
return fn2(obj[key2], key2)
})
}
function isObject$r(obj) {
return obj !== null && typeof obj === 'object'
}
function isPromise(val2) {
return val2 && typeof val2.then === 'function'
}
function partial(fn2, arg) {
return function () {
return fn2(arg)
}
}
function genericSubscribe(fn2, subs, options2) {
if (subs.indexOf(fn2) < 0) {
options2 && options2.prepend ? subs.unshift(fn2) : subs.push(fn2)
}
return function () {
var i2 = subs.indexOf(fn2)
if (i2 > -1) {
subs.splice(i2, 1)
}
}
}
function resetStore(store2, hot) {
store2._actions = /* @__PURE__ */ Object.create(null)
store2._mutations = /* @__PURE__ */ Object.create(null)
store2._wrappedGetters = /* @__PURE__ */ Object.create(null)
store2._modulesNamespaceMap = /* @__PURE__ */ Object.create(null)
var state2 = store2.state
installModule(store2, state2, [], store2._modules.root, true)
resetStoreState(store2, state2, hot)
}
function resetStoreState(store2, state2, hot) {
var oldState = store2._state
var oldScope = store2._scope
store2.getters = {}
store2._makeLocalGettersCache = /* @__PURE__ */ Object.create(null)
var wrappedGetters = store2._wrappedGetters
var computedObj = {}
var computedCache = {}
var scope = effectScope(true)
scope.run(function () {
forEachValue(wrappedGetters, function (fn2, key2) {
computedObj[key2] = partial(fn2, store2)
computedCache[key2] = computed(function () {
return computedObj[key2]()
})
Object.defineProperty(store2.getters, key2, {
get: function () {
return computedCache[key2].value
},
enumerable: true,
})
})
})
store2._state = reactive({
data: state2,
})
store2._scope = scope
if (store2.strict) {
enableStrictMode(store2)
}
if (oldState) {
if (hot) {
store2._withCommit(function () {
oldState.data = null
})
}
}
if (oldScope) {
oldScope.stop()
}
}
function installModule(store2, rootState, path, module2, hot) {
var isRoot = !path.length
var namespace = store2._modules.getNamespace(path)
if (module2.namespaced) {
if (store2._modulesNamespaceMap[namespace] && false) {
console.error(
'[vuex] duplicate namespace ' +
namespace +
' for the namespaced module ' +
path.join('/')
)
}
store2._modulesNamespaceMap[namespace] = module2
}
if (!isRoot && !hot) {
var parentState = getNestedState(rootState, path.slice(0, -1))
var moduleName = path[path.length - 1]
store2._withCommit(function () {
parentState[moduleName] = module2.state
})
}
var local = (module2.context = makeLocalContext(store2, namespace, path))
module2.forEachMutation(function (mutation, key2) {
var namespacedType = namespace + key2
registerMutation(store2, namespacedType, mutation, local)
})
module2.forEachAction(function (action, key2) {
var type4 = action.root ? key2 : namespace + key2
var handler = action.handler || action
registerAction$1(store2, type4, handler, local)
})
module2.forEachGetter(function (getter, key2) {
var namespacedType = namespace + key2
registerGetter(store2, namespacedType, getter, local)
})
module2.forEachChild(function (child, key2) {
installModule(store2, rootState, path.concat(key2), child, hot)
})
}
function makeLocalContext(store2, namespace, path) {
var noNamespace = namespace === ''
var local = {
dispatch: noNamespace
? store2.dispatch
: function (_type, _payload, _options) {
var args = unifyObjectStyle(_type, _payload, _options)
var payload = args.payload
var options2 = args.options
var type4 = args.type
if (!options2 || !options2.root) {
type4 = namespace + type4
}
return store2.dispatch(type4, payload)
},
commit: noNamespace
? store2.commit
: function (_type, _payload, _options) {
var args = unifyObjectStyle(_type, _payload, _options)
var payload = args.payload
var options2 = args.options
var type4 = args.type
if (!options2 || !options2.root) {
type4 = namespace + type4
}
store2.commit(type4, payload, options2)
},
}
Object.defineProperties(local, {
getters: {
get: noNamespace
? function () {
return store2.getters
}
: function () {
return makeLocalGetters(store2, namespace)
},
},
state: {
get: function () {
return getNestedState(store2.state, path)
},
},
})
return local
}
function makeLocalGetters(store2, namespace) {
if (!store2._makeLocalGettersCache[namespace]) {
var gettersProxy = {}
var splitPos = namespace.length
Object.keys(store2.getters).forEach(function (type4) {
if (type4.slice(0, splitPos) !== namespace) {
return
}
var localType = type4.slice(splitPos)
Object.defineProperty(gettersProxy, localType, {
get: function () {
return store2.getters[type4]
},
enumerable: true,
})
})
store2._makeLocalGettersCache[namespace] = gettersProxy
}
return store2._makeLocalGettersCache[namespace]
}
function registerMutation(store2, type4, handler, local) {
var entry = store2._mutations[type4] || (store2._mutations[type4] = [])
entry.push(function wrappedMutationHandler(payload) {
handler.call(store2, local.state, payload)
})
}
function registerAction$1(store2, type4, handler, local) {
var entry = store2._actions[type4] || (store2._actions[type4] = [])
entry.push(function wrappedActionHandler(payload) {
var res = handler.call(
store2,
{
dispatch: local.dispatch,
commit: local.commit,
getters: local.getters,
state: local.state,
rootGetters: store2.getters,
rootState: store2.state,
},
payload
)
if (!isPromise(res)) {
res = Promise.resolve(res)
}
if (store2._devtoolHook) {
return res.catch(function (err) {
store2._devtoolHook.emit('vuex:error', err)
throw err
})
} else {
return res
}
})
}
function registerGetter(store2, type4, rawGetter, local) {
if (store2._wrappedGetters[type4]) {
return
}
store2._wrappedGetters[type4] = function wrappedGetter(store3) {
return rawGetter(local.state, local.getters, store3.state, store3.getters)
}
}
function enableStrictMode(store2) {
watch$1(
function () {
return store2._state.data
},
function () {},
{ deep: true, flush: 'sync' }
)
}
function getNestedState(state2, path) {
return path.reduce(function (state3, key2) {
return state3[key2]
}, state2)
}
function unifyObjectStyle(type4, payload, options2) {
if (isObject$r(type4) && type4.type) {
options2 = payload
payload = type4
type4 = type4.type
}
return { type: type4, payload, options: options2 }
}
var LABEL_VUEX_BINDINGS = 'vuex bindings'
var MUTATIONS_LAYER_ID = 'vuex:mutations'
var ACTIONS_LAYER_ID = 'vuex:actions'
var INSPECTOR_ID = 'vuex'
var actionId = 0
function addDevtools(app2, store2) {
setupDevtoolsPlugin(
{
id: 'org.vuejs.vuex',
app: app2,
label: 'Vuex',
homepage: 'https://next.vuex.vuejs.org/',
logo: 'https://vuejs.org/images/icons/favicon-96x96.png',
packageName: 'vuex',
componentStateTypes: [LABEL_VUEX_BINDINGS],
},
function (api) {
api.addTimelineLayer({
id: MUTATIONS_LAYER_ID,
label: 'Vuex Mutations',
color: COLOR_LIME_500,
})
api.addTimelineLayer({
id: ACTIONS_LAYER_ID,
label: 'Vuex Actions',
color: COLOR_LIME_500,
})
api.addInspector({
id: INSPECTOR_ID,
label: 'Vuex',
icon: 'storage',
treeFilterPlaceholder: 'Filter stores...',
})
api.on.getInspectorTree(function (payload) {
if (payload.app === app2 && payload.inspectorId === INSPECTOR_ID) {
if (payload.filter) {
var nodes = []
flattenStoreForInspectorTree(
nodes,
store2._modules.root,
payload.filter,
''
)
payload.rootNodes = nodes
} else {
payload.rootNodes = [
formatStoreForInspectorTree(store2._modules.root, ''),
]
}
}
})
api.on.getInspectorState(function (payload) {
if (payload.app === app2 && payload.inspectorId === INSPECTOR_ID) {
var modulePath = payload.nodeId
makeLocalGetters(store2, modulePath)
payload.state = formatStoreForInspectorState(
getStoreModule(store2._modules, modulePath),
modulePath === 'root'
? store2.getters
: store2._makeLocalGettersCache,
modulePath
)
}
})
api.on.editInspectorState(function (payload) {
if (payload.app === app2 && payload.inspectorId === INSPECTOR_ID) {
var modulePath = payload.nodeId
var path = payload.path
if (modulePath !== 'root') {
path = modulePath.split('/').filter(Boolean).concat(path)
}
store2._withCommit(function () {
payload.set(store2._state.data, path, payload.state.value)
})
}
})
store2.subscribe(function (mutation, state2) {
var data2 = {}
if (mutation.payload) {
data2.payload = mutation.payload
}
data2.state = state2
api.notifyComponentUpdate()
api.sendInspectorTree(INSPECTOR_ID)
api.sendInspectorState(INSPECTOR_ID)
api.addTimelineEvent({
layerId: MUTATIONS_LAYER_ID,
event: {
time: Date.now(),
title: mutation.type,
data: data2,
},
})
})
store2.subscribeAction({
before: function (action, state2) {
var data2 = {}
if (action.payload) {
data2.payload = action.payload
}
action._id = actionId++
action._time = Date.now()
data2.state = state2
api.addTimelineEvent({
layerId: ACTIONS_LAYER_ID,
event: {
time: action._time,
title: action.type,
groupId: action._id,
subtitle: 'start',
data: data2,
},
})
},
after: function (action, state2) {
var data2 = {}
var duration2 = Date.now() - action._time
data2.duration = {
_custom: {
type: 'duration',
display: duration2 + 'ms',
tooltip: 'Action duration',
value: duration2,
},
}
if (action.payload) {
data2.payload = action.payload
}
data2.state = state2
api.addTimelineEvent({
layerId: ACTIONS_LAYER_ID,
event: {
time: Date.now(),
title: action.type,
groupId: action._id,
subtitle: 'end',
data: data2,
},
})
},
})
}
)
}
var COLOR_LIME_500 = 8702998
var COLOR_DARK = 6710886
var COLOR_WHITE = 16777215
var TAG_NAMESPACED = {
label: 'namespaced',
textColor: COLOR_WHITE,
backgroundColor: COLOR_DARK,
}
function extractNameFromPath(path) {
return path && path !== 'root' ? path.split('/').slice(-2, -1)[0] : 'Root'
}
function formatStoreForInspectorTree(module2, path) {
return {
id: path || 'root',
label: extractNameFromPath(path),
tags: module2.namespaced ? [TAG_NAMESPACED] : [],
children: Object.keys(module2._children).map(function (moduleName) {
return formatStoreForInspectorTree(
module2._children[moduleName],
path + moduleName + '/'
)
}),
}
}
function flattenStoreForInspectorTree(result, module2, filter2, path) {
if (path.includes(filter2)) {
result.push({
id: path || 'root',
label: path.endsWith('/')
? path.slice(0, path.length - 1)
: path || 'Root',
tags: module2.namespaced ? [TAG_NAMESPACED] : [],
})
}
Object.keys(module2._children).forEach(function (moduleName) {
flattenStoreForInspectorTree(
result,
module2._children[moduleName],
filter2,
path + moduleName + '/'
)
})
}
function formatStoreForInspectorState(module2, getters2, path) {
getters2 = path === 'root' ? getters2 : getters2[path]
var gettersKeys = Object.keys(getters2)
var storeState = {
state: Object.keys(module2.state).map(function (key2) {
return {
key: key2,
editable: true,
value: module2.state[key2],
}
}),
}
if (gettersKeys.length) {
var tree = transformPathsToObjectTree(getters2)
storeState.getters = Object.keys(tree).map(function (key2) {
return {
key: key2.endsWith('/') ? extractNameFromPath(key2) : key2,
editable: false,
value: canThrow(function () {
return tree[key2]
}),
}
})
}
return storeState
}
function transformPathsToObjectTree(getters2) {
var result = {}
Object.keys(getters2).forEach(function (key2) {
var path = key2.split('/')
if (path.length > 1) {
var target2 = result
var leafKey = path.pop()
path.forEach(function (p2) {
if (!target2[p2]) {
target2[p2] = {
_custom: {
value: {},
display: p2,
tooltip: 'Module',
abstract: true,
},
}
}
target2 = target2[p2]._custom.value
})
target2[leafKey] = canThrow(function () {
return getters2[key2]
})
} else {
result[key2] = canThrow(function () {
return getters2[key2]
})
}
})
return result
}
function getStoreModule(moduleMap2, path) {
var names2 = path.split('/').filter(function (n2) {
return n2
})
return names2.reduce(
function (module2, moduleName, i2) {
var child = module2[moduleName]
if (!child) {
throw new Error(
'Missing module "' + moduleName + '" for path "' + path + '".'
)
}
return i2 === names2.length - 1 ? child : child._children
},
path === 'root' ? moduleMap2 : moduleMap2.root._children
)
}
function canThrow(cb) {
try {
return cb()
} catch (e2) {
return e2
}
}
var Module = function Module2(rawModule, runtime) {
this.runtime = runtime
this._children = /* @__PURE__ */ Object.create(null)
this._rawModule = rawModule
var rawState = rawModule.state
this.state = (typeof rawState === 'function' ? rawState() : rawState) || {}
}
var prototypeAccessors$1 = { namespaced: { configurable: true } }
prototypeAccessors$1.namespaced.get = function () {
return !!this._rawModule.namespaced
}
Module.prototype.addChild = function addChild2(key2, module2) {
this._children[key2] = module2
}
Module.prototype.removeChild = function removeChild2(key2) {
delete this._children[key2]
}
Module.prototype.getChild = function getChild2(key2) {
return this._children[key2]
}
Module.prototype.hasChild = function hasChild(key2) {
return key2 in this._children
}
Module.prototype.update = function update2(rawModule) {
this._rawModule.namespaced = rawModule.namespaced
if (rawModule.actions) {
this._rawModule.actions = rawModule.actions
}
if (rawModule.mutations) {
this._rawModule.mutations = rawModule.mutations
}
if (rawModule.getters) {
this._rawModule.getters = rawModule.getters
}
}
Module.prototype.forEachChild = function forEachChild(fn2) {
forEachValue(this._children, fn2)
}
Module.prototype.forEachGetter = function forEachGetter(fn2) {
if (this._rawModule.getters) {
forEachValue(this._rawModule.getters, fn2)
}
}
Module.prototype.forEachAction = function forEachAction(fn2) {
if (this._rawModule.actions) {
forEachValue(this._rawModule.actions, fn2)
}
}
Module.prototype.forEachMutation = function forEachMutation(fn2) {
if (this._rawModule.mutations) {
forEachValue(this._rawModule.mutations, fn2)
}
}
Object.defineProperties(Module.prototype, prototypeAccessors$1)
var ModuleCollection = function ModuleCollection2(rawRootModule) {
this.register([], rawRootModule, false)
}
ModuleCollection.prototype.get = function get2(path) {
return path.reduce(function (module2, key2) {
return module2.getChild(key2)
}, this.root)
}
ModuleCollection.prototype.getNamespace = function getNamespace(path) {
var module2 = this.root
return path.reduce(function (namespace, key2) {
module2 = module2.getChild(key2)
return namespace + (module2.namespaced ? key2 + '/' : '')
}, '')
}
ModuleCollection.prototype.update = function update$1(rawRootModule) {
update([], this.root, rawRootModule)
}
ModuleCollection.prototype.register = function register3(
path,
rawModule,
runtime
) {
var this$1$1 = this
if (runtime === void 0) runtime = true
var newModule = new Module(rawModule, runtime)
if (path.length === 0) {
this.root = newModule
} else {
var parent2 = this.get(path.slice(0, -1))
parent2.addChild(path[path.length - 1], newModule)
}
if (rawModule.modules) {
forEachValue(rawModule.modules, function (rawChildModule, key2) {
this$1$1.register(path.concat(key2), rawChildModule, runtime)
})
}
}
ModuleCollection.prototype.unregister = function unregister2(path) {
var parent2 = this.get(path.slice(0, -1))
var key2 = path[path.length - 1]
var child = parent2.getChild(key2)
if (!child) {
return
}
if (!child.runtime) {
return
}
parent2.removeChild(key2)
}
ModuleCollection.prototype.isRegistered = function isRegistered(path) {
var parent2 = this.get(path.slice(0, -1))
var key2 = path[path.length - 1]
if (parent2) {
return parent2.hasChild(key2)
}
return false
}
function update(path, targetModule, newModule) {
targetModule.update(newModule)
if (newModule.modules) {
for (var key2 in newModule.modules) {
if (!targetModule.getChild(key2)) {
return
}
update(
path.concat(key2),
targetModule.getChild(key2),
newModule.modules[key2]
)
}
}
}
function createStore(options2) {
return new Store$1(options2)
}
var Store$1 = function Store2(options2) {
var this$1$1 = this
if (options2 === void 0) options2 = {}
var plugins2 = options2.plugins
if (plugins2 === void 0) plugins2 = []
var strict = options2.strict
if (strict === void 0) strict = false
var devtools2 = options2.devtools
this._committing = false
this._actions = /* @__PURE__ */ Object.create(null)
this._actionSubscribers = []
this._mutations = /* @__PURE__ */ Object.create(null)
this._wrappedGetters = /* @__PURE__ */ Object.create(null)
this._modules = new ModuleCollection(options2)
this._modulesNamespaceMap = /* @__PURE__ */ Object.create(null)
this._subscribers = []
this._makeLocalGettersCache = /* @__PURE__ */ Object.create(null)
this._scope = null
this._devtools = devtools2
var store2 = this
var ref2 = this
var dispatch2 = ref2.dispatch
var commit2 = ref2.commit
this.dispatch = function boundDispatch(type4, payload) {
return dispatch2.call(store2, type4, payload)
}
this.commit = function boundCommit(type4, payload, options3) {
return commit2.call(store2, type4, payload, options3)
}
this.strict = strict
var state2 = this._modules.root.state
installModule(this, state2, [], this._modules.root)
resetStoreState(this, state2)
plugins2.forEach(function (plugin) {
return plugin(this$1$1)
})
}
var prototypeAccessors = { state: { configurable: true } }
Store$1.prototype.install = function install2(app2, injectKey) {
app2.provide(injectKey || storeKey, this)
app2.config.globalProperties.$store = this
var useDevtools = this._devtools !== void 0 ? this._devtools : false
if (useDevtools) {
addDevtools(app2, this)
}
}
prototypeAccessors.state.get = function () {
return this._state.data
}
prototypeAccessors.state.set = function (v4) {}
Store$1.prototype.commit = function commit(_type, _payload, _options) {
var this$1$1 = this
var ref2 = unifyObjectStyle(_type, _payload, _options)
var type4 = ref2.type
var payload = ref2.payload
var mutation = { type: type4, payload }
var entry = this._mutations[type4]
if (!entry) {
return
}
this._withCommit(function () {
entry.forEach(function commitIterator(handler) {
handler(payload)
})
})
this._subscribers.slice().forEach(function (sub2) {
return sub2(mutation, this$1$1.state)
})
}
Store$1.prototype.dispatch = function dispatch(_type, _payload) {
var this$1$1 = this
var ref2 = unifyObjectStyle(_type, _payload)
var type4 = ref2.type
var payload = ref2.payload
var action = { type: type4, payload }
var entry = this._actions[type4]
if (!entry) {
return
}
try {
this._actionSubscribers
.slice()
.filter(function (sub2) {
return sub2.before
})
.forEach(function (sub2) {
return sub2.before(action, this$1$1.state)
})
} catch (e2) {}
var result =
entry.length > 1
? Promise.all(
entry.map(function (handler) {
return handler(payload)
})
)
: entry[0](payload)
return new Promise(function (resolve2, reject2) {
result.then(
function (res) {
try {
this$1$1._actionSubscribers
.filter(function (sub2) {
return sub2.after
})
.forEach(function (sub2) {
return sub2.after(action, this$1$1.state)
})
} catch (e2) {}
resolve2(res)
},
function (error2) {
try {
this$1$1._actionSubscribers
.filter(function (sub2) {
return sub2.error
})
.forEach(function (sub2) {
return sub2.error(action, this$1$1.state, error2)
})
} catch (e2) {}
reject2(error2)
}
)
})
}
Store$1.prototype.subscribe = function subscribe2(fn2, options2) {
return genericSubscribe(fn2, this._subscribers, options2)
}
Store$1.prototype.subscribeAction = function subscribeAction(fn2, options2) {
var subs = typeof fn2 === 'function' ? { before: fn2 } : fn2
return genericSubscribe(subs, this._actionSubscribers, options2)
}
Store$1.prototype.watch = function watch$1$1(getter, cb, options2) {
var this$1$1 = this
return watch$1(
function () {
return getter(this$1$1.state, this$1$1.getters)
},
cb,
Object.assign({}, options2)
)
}
Store$1.prototype.replaceState = function replaceState(state2) {
var this$1$1 = this
this._withCommit(function () {
this$1$1._state.data = state2
})
}
Store$1.prototype.registerModule = function registerModule(
path,
rawModule,
options2
) {
if (options2 === void 0) options2 = {}
if (typeof path === 'string') {
path = [path]
}
this._modules.register(path, rawModule)
installModule(
this,
this.state,
path,
this._modules.get(path),
options2.preserveState
)
resetStoreState(this, this.state)
}
Store$1.prototype.unregisterModule = function unregisterModule(path) {
var this$1$1 = this
if (typeof path === 'string') {
path = [path]
}
this._modules.unregister(path)
this._withCommit(function () {
var parentState = getNestedState(this$1$1.state, path.slice(0, -1))
delete parentState[path[path.length - 1]]
})
resetStore(this)
}
Store$1.prototype.hasModule = function hasModule(path) {
if (typeof path === 'string') {
path = [path]
}
return this._modules.isRegistered(path)
}
Store$1.prototype.hotUpdate = function hotUpdate(newOptions) {
this._modules.update(newOptions)
resetStore(this, true)
}
Store$1.prototype._withCommit = function _withCommit(fn2) {
var committing = this._committing
this._committing = true
fn2()
this._committing = committing
}
Object.defineProperties(Store$1.prototype, prototypeAccessors)
var mapState = normalizeNamespace(function (namespace, states) {
var res = {}
normalizeMap(states).forEach(function (ref2) {
var key2 = ref2.key
var val2 = ref2.val
res[key2] = function mappedState() {
var state2 = this.$store.state
var getters2 = this.$store.getters
if (namespace) {
var module2 = getModuleByNamespace(this.$store, 'mapState', namespace)
if (!module2) {
return
}
state2 = module2.context.state
getters2 = module2.context.getters
}
return typeof val2 === 'function'
? val2.call(this, state2, getters2)
: state2[val2]
}
res[key2].vuex = true
})
return res
})
var mapMutations = normalizeNamespace(function (namespace, mutations) {
var res = {}
normalizeMap(mutations).forEach(function (ref2) {
var key2 = ref2.key
var val2 = ref2.val
res[key2] = function mappedMutation() {
var args = [],
len2 = arguments.length
while (len2--) args[len2] = arguments[len2]
var commit2 = this.$store.commit
if (namespace) {
var module2 = getModuleByNamespace(
this.$store,
'mapMutations',
namespace
)
if (!module2) {
return
}
commit2 = module2.context.commit
}
return typeof val2 === 'function'
? val2.apply(this, [commit2].concat(args))
: commit2.apply(this.$store, [val2].concat(args))
}
})
return res
})
var mapGetters = normalizeNamespace(function (namespace, getters2) {
var res = {}
normalizeMap(getters2).forEach(function (ref2) {
var key2 = ref2.key
var val2 = ref2.val
val2 = namespace + val2
res[key2] = function mappedGetter() {
if (
namespace &&
!getModuleByNamespace(this.$store, 'mapGetters', namespace)
) {
return
}
return this.$store.getters[val2]
}
res[key2].vuex = true
})
return res
})
var mapActions = normalizeNamespace(function (namespace, actions2) {
var res = {}
normalizeMap(actions2).forEach(function (ref2) {
var key2 = ref2.key
var val2 = ref2.val
res[key2] = function mappedAction() {
var args = [],
len2 = arguments.length
while (len2--) args[len2] = arguments[len2]
var dispatch2 = this.$store.dispatch
if (namespace) {
var module2 = getModuleByNamespace(this.$store, 'mapActions', namespace)
if (!module2) {
return
}
dispatch2 = module2.context.dispatch
}
return typeof val2 === 'function'
? val2.apply(this, [dispatch2].concat(args))
: dispatch2.apply(this.$store, [val2].concat(args))
}
})
return res
})
var createNamespacedHelpers = function (namespace) {
return {
mapState: mapState.bind(null, namespace),
mapGetters: mapGetters.bind(null, namespace),
mapMutations: mapMutations.bind(null, namespace),
mapActions: mapActions.bind(null, namespace),
}
}
function normalizeMap(map2) {
if (!isValidMap(map2)) {
return []
}
return Array.isArray(map2)
? map2.map(function (key2) {
return { key: key2, val: key2 }
})
: Object.keys(map2).map(function (key2) {
return { key: key2, val: map2[key2] }
})
}
function isValidMap(map2) {
return Array.isArray(map2) || isObject$r(map2)
}
function normalizeNamespace(fn2) {
return function (namespace, map2) {
if (typeof namespace !== 'string') {
map2 = namespace
namespace = ''
} else if (namespace.charAt(namespace.length - 1) !== '/') {
namespace += '/'
}
return fn2(namespace, map2)
}
}
function getModuleByNamespace(store2, helper2, namespace) {
var module2 = store2._modulesNamespaceMap[namespace]
return module2
}
function createLogger(ref2) {
if (ref2 === void 0) ref2 = {}
var collapsed = ref2.collapsed
if (collapsed === void 0) collapsed = true
var filter2 = ref2.filter
if (filter2 === void 0)
filter2 = function (mutation, stateBefore, stateAfter) {
return true
}
var transformer = ref2.transformer
if (transformer === void 0)
transformer = function (state2) {
return state2
}
var mutationTransformer = ref2.mutationTransformer
if (mutationTransformer === void 0)
mutationTransformer = function (mut) {
return mut
}
var actionFilter = ref2.actionFilter
if (actionFilter === void 0)
actionFilter = function (action, state2) {
return true
}
var actionTransformer = ref2.actionTransformer
if (actionTransformer === void 0)
actionTransformer = function (act) {
return act
}
var logMutations = ref2.logMutations
if (logMutations === void 0) logMutations = true
var logActions = ref2.logActions
if (logActions === void 0) logActions = true
var logger = ref2.logger
if (logger === void 0) logger = console
return function (store2) {
var prevState = deepCopy$1(store2.state)
if (typeof logger === 'undefined') {
return
}
if (logMutations) {
store2.subscribe(function (mutation, state2) {
var nextState = deepCopy$1(state2)
if (filter2(mutation, prevState, nextState)) {
var formattedTime = getFormattedTime()
var formattedMutation = mutationTransformer(mutation)
var message2 = 'mutation ' + mutation.type + formattedTime
startMessage(logger, message2, collapsed)
logger.log(
'%c prev state',
'color: #9E9E9E; font-weight: bold',
transformer(prevState)
)
logger.log(
'%c mutation',
'color: #03A9F4; font-weight: bold',
formattedMutation
)
logger.log(
'%c next state',
'color: #4CAF50; font-weight: bold',
transformer(nextState)
)
endMessage(logger)
}
prevState = nextState
})
}
if (logActions) {
store2.subscribeAction(function (action, state2) {
if (actionFilter(action, state2)) {
var formattedTime = getFormattedTime()
var formattedAction = actionTransformer(action)
var message2 = 'action ' + action.type + formattedTime
startMessage(logger, message2, collapsed)
logger.log(
'%c action',
'color: #03A9F4; font-weight: bold',
formattedAction
)
endMessage(logger)
}
})
}
}
}
function startMessage(logger, message2, collapsed) {
var startMessage2 = collapsed ? logger.groupCollapsed : logger.group
try {
startMessage2.call(logger, message2)
} catch (e2) {
logger.log(message2)
}
}
function endMessage(logger) {
try {
logger.groupEnd()
} catch (e2) {
logger.log('\u2014\u2014 log end \u2014\u2014')
}
}
function getFormattedTime() {
var time2 = new Date()
return (
' @ ' +
pad$1(time2.getHours(), 2) +
':' +
pad$1(time2.getMinutes(), 2) +
':' +
pad$1(time2.getSeconds(), 2) +
'.' +
pad$1(time2.getMilliseconds(), 3)
)
}
function repeat$2(str, times) {
return new Array(times + 1).join(str)
}
function pad$1(num2, maxLength) {
return repeat$2('0', maxLength - num2.toString().length) + num2
}
var index$o = {
version: '4.1.0',
Store: Store$1,
storeKey,
createStore,
useStore,
mapState,
mapMutations,
mapGetters,
mapActions,
createNamespacedHelpers,
createLogger,
}
var vuex_esmBundler = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: index$o,
Store: Store$1,
createLogger,
createNamespacedHelpers,
createStore,
mapActions,
mapGetters,
mapMutations,
mapState,
storeKey,
useStore,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const modulesFiles = {
'./modules/moduleA.ts': __glob_1_0$1,
'./modules/moduleB.ts': __glob_1_1$1,
'./modules/picture-production.ts': __glob_1_2$1,
}
const modules$1 = {}
for (const key2 in modulesFiles) {
modules$1[key2.replace(/(\.\/modules\/|\.ts)/g, '')] =
modulesFiles[key2].default
}
var store$5 = createStore({
modules: modules$1,
strict: false,
})
var setupDefaults$9 = {
cookies: {
path: '/',
},
treeOptions: {
parentKey: 'parentId',
key: 'id',
children: 'children',
},
parseDateFormat: 'yyyy-MM-dd HH:mm:ss',
firstDayOfWeek: 1,
}
var setupDefaults_1 = setupDefaults$9
function arrayEach$g(list2, iterate2, context2) {
if (list2) {
if (list2.forEach) {
list2.forEach(iterate2, context2)
} else {
for (var index2 = 0, len2 = list2.length; index2 < len2; index2++) {
iterate2.call(context2, list2[index2], index2, list2)
}
}
}
}
var arrayEach_1 = arrayEach$g
var objectToString$5 = Object.prototype.toString
var staticObjectToString = objectToString$5
var objectToString$4 = staticObjectToString
function helperCreateInInObjectString$5(type4) {
return function (obj) {
return '[object ' + type4 + ']' === objectToString$4.call(obj)
}
}
var helperCreateInInObjectString_1 = helperCreateInInObjectString$5
var helperCreateInInObjectString$4 = helperCreateInInObjectString_1
var isArray$A = Array.isArray || helperCreateInInObjectString$4('Array')
var isArray_1$1 = isArray$A
function hasOwnProp$a(obj, key2) {
return obj && obj.hasOwnProperty ? obj.hasOwnProperty(key2) : false
}
var hasOwnProp_1 = hasOwnProp$a
var hasOwnProp$9 = hasOwnProp_1
function objectEach$5(obj, iterate2, context2) {
if (obj) {
for (var key2 in obj) {
if (hasOwnProp$9(obj, key2)) {
iterate2.call(context2, obj[key2], key2, obj)
}
}
}
}
var objectEach_1 = objectEach$5
var isArray$z = isArray_1$1
var arrayEach$f = arrayEach_1
var objectEach$4 = objectEach_1
function each$z(obj, iterate2, context2) {
if (obj) {
return (isArray$z(obj) ? arrayEach$f : objectEach$4)(
obj,
iterate2,
context2
)
}
return obj
}
var each_1 = each$z
function helperCreateInTypeof$6(type4) {
return function (obj) {
return typeof obj === type4
}
}
var helperCreateInTypeof_1 = helperCreateInTypeof$6
var helperCreateInTypeof$5 = helperCreateInTypeof_1
var isFunction$i = helperCreateInTypeof$5('function')
var isFunction_1$1 = isFunction$i
var each$y = each_1
function helperCreateGetObjects$3(name2, getIndex) {
var proMethod = Object[name2]
return function (obj) {
var result = []
if (obj) {
if (proMethod) {
return proMethod(obj)
}
each$y(
obj,
getIndex > 1
? function (key2) {
result.push(['' + key2, obj[key2]])
}
: function () {
result.push(arguments[getIndex])
}
)
}
return result
}
}
var helperCreateGetObjects_1 = helperCreateGetObjects$3
var helperCreateGetObjects$2 = helperCreateGetObjects_1
var keys$g = helperCreateGetObjects$2('keys', 1)
var keys_1$1 = keys$g
var objectToString$3 = staticObjectToString
var objectEach$3 = objectEach_1
var arrayEach$e = arrayEach_1
function getCativeCtor(val2, args) {
var Ctor = val2.__proto__.constructor
return args ? new Ctor(args) : new Ctor()
}
function handleValueClone(item2, isDeep) {
return isDeep ? copyValue$1(item2, isDeep) : item2
}
function copyValue$1(val2, isDeep) {
if (val2) {
switch (objectToString$3.call(val2)) {
case '[object Object]': {
var restObj = Object.create(val2.__proto__)
objectEach$3(val2, function (item2, key2) {
restObj[key2] = handleValueClone(item2, isDeep)
})
return restObj
}
case '[object Date]':
case '[object RegExp]': {
return getCativeCtor(val2, val2.valueOf())
}
case '[object Array]':
case '[object Arguments]': {
var restArr = []
arrayEach$e(val2, function (item2) {
restArr.push(handleValueClone(item2, isDeep))
})
return restArr
}
case '[object Set]': {
var restSet = getCativeCtor(val2)
restSet.forEach(function (item2) {
restSet.add(handleValueClone(item2, isDeep))
})
return restSet
}
case '[object Map]': {
var restMap = getCativeCtor(val2)
restMap.forEach(function (item2, key2) {
restMap.set(key2, handleValueClone(item2, isDeep))
})
return restMap
}
}
}
return val2
}
function clone$a(obj, deep) {
if (obj) {
return copyValue$1(obj, deep)
}
return obj
}
var clone_1 = clone$a
var arrayEach$d = arrayEach_1
var keys$f = keys_1$1
var isArray$y = isArray_1$1
var clone$9 = clone_1
var objectAssignFns = Object.assign
function handleAssign(destination, args, isClone) {
var len2 = args.length
for (var source2, index2 = 1; index2 < len2; index2++) {
source2 = args[index2]
arrayEach$d(
keys$f(args[index2]),
isClone
? function (key2) {
destination[key2] = clone$9(source2[key2], isClone)
}
: function (key2) {
destination[key2] = source2[key2]
}
)
}
return destination
}
var assign$d = function (target2) {
if (target2) {
var args = arguments
if (target2 === true) {
if (args.length > 1) {
target2 = isArray$y(target2[1]) ? [] : {}
return handleAssign(target2, args, true)
}
} else {
return objectAssignFns
? objectAssignFns.apply(Object, args)
: handleAssign(target2, args)
}
}
return target2
}
var assign_1 = assign$d
var setupDefaults$8 = setupDefaults_1
var arrayEach$c = arrayEach_1
var each$x = each_1
var isFunction$h = isFunction_1$1
var assign$c = assign_1
var XEUtils$1 = function () {}
function mixin$1() {
arrayEach$c(arguments, function (methods) {
each$x(methods, function (fn2, name2) {
XEUtils$1[name2] = isFunction$h(fn2)
? function () {
var result = fn2.apply(XEUtils$1.$context, arguments)
XEUtils$1.$context = null
return result
}
: fn2
})
})
}
function setup$1(options2) {
return assign$c(setupDefaults$8, options2)
}
XEUtils$1.VERSION = '3.5.14'
XEUtils$1.mixin = mixin$1
XEUtils$1.setup = setup$1
var ctor = XEUtils$1
function lastArrayEach$3(obj, iterate2, context2) {
for (var len2 = obj.length - 1; len2 >= 0; len2--) {
iterate2.call(context2, obj[len2], len2, obj)
}
}
var lastArrayEach_1 = lastArrayEach$3
var lastArrayEach$2 = lastArrayEach_1
var keys$e = keys_1$1
function lastObjectEach$2(obj, iterate2, context2) {
lastArrayEach$2(keys$e(obj), function (key2) {
iterate2.call(context2, obj[key2], key2, obj)
})
}
var lastObjectEach_1 = lastObjectEach$2
function isNull$9(obj) {
return obj === null
}
var isNull_1 = isNull$9
var isNull$8 = isNull_1
function property$6(name2, defs) {
return function (obj) {
return isNull$8(obj) ? defs : obj[name2]
}
}
var property_1 = property$6
var each$w = each_1
var isFunction$g = isFunction_1$1
var property$5 = property_1
function objectMap$1(obj, iterate2, context2) {
var result = {}
if (obj) {
if (iterate2) {
if (!isFunction$g(iterate2)) {
iterate2 = property$5(iterate2)
}
each$w(obj, function (val2, index2) {
result[index2] = iterate2.call(context2, val2, index2, obj)
})
} else {
return obj
}
}
return result
}
var objectMap_1 = objectMap$1
function isPlainObject$7(obj) {
return obj ? obj.constructor === Object : false
}
var isPlainObject_1 = isPlainObject$7
var isArray$x = isArray_1$1
var isPlainObject$6 = isPlainObject_1
var each$v = each_1
function handleMerge(target2, source2) {
if (
(isPlainObject$6(target2) && isPlainObject$6(source2)) ||
(isArray$x(target2) && isArray$x(source2))
) {
each$v(source2, function (obj, key2) {
target2[key2] = handleMerge(target2[key2], obj)
})
return target2
}
return source2
}
var merge$2 = function (target2) {
if (!target2) {
target2 = {}
}
var args = arguments
var len2 = args.length
for (var source2, index2 = 1; index2 < len2; index2++) {
source2 = args[index2]
if (source2) {
handleMerge(target2, source2)
}
}
return target2
}
var merge_1 = merge$2
var each$u = each_1
function map$8(obj, iterate2, context2) {
var result = []
if (obj && arguments.length > 1) {
if (obj.map) {
return obj.map(iterate2, context2)
} else {
each$u(obj, function () {
result.push(iterate2.apply(context2, arguments))
})
}
}
return result
}
var map_1 = map$8
var hasOwnProp$8 = hasOwnProp_1
var isArray$w = isArray_1$1
function helperCreateIterateHandle$4(
prop,
useArray,
restIndex,
matchValue,
defaultValue
) {
return function (obj, iterate2, context2) {
if (obj && iterate2) {
if (prop && obj[prop]) {
return obj[prop](iterate2, context2)
} else {
if (useArray && isArray$w(obj)) {
for (var index2 = 0, len2 = obj.length; index2 < len2; index2++) {
if (
!!iterate2.call(context2, obj[index2], index2, obj) === matchValue
) {
return [true, false, index2, obj[index2]][restIndex]
}
}
} else {
for (var key2 in obj) {
if (hasOwnProp$8(obj, key2)) {
if (
!!iterate2.call(context2, obj[key2], key2, obj) === matchValue
) {
return [true, false, key2, obj[key2]][restIndex]
}
}
}
}
}
}
return defaultValue
}
}
var helperCreateIterateHandle_1 = helperCreateIterateHandle$4
var helperCreateIterateHandle$3 = helperCreateIterateHandle_1
var some$2 = helperCreateIterateHandle$3('some', 1, 0, true, false)
var some_1 = some$2
var helperCreateIterateHandle$2 = helperCreateIterateHandle_1
var every$2 = helperCreateIterateHandle$2('every', 1, 1, false, true)
var every_1 = every$2
var hasOwnProp$7 = hasOwnProp_1
function includes$5(obj, val2) {
if (obj) {
if (obj.includes) {
return obj.includes(val2)
}
for (var key2 in obj) {
if (hasOwnProp$7(obj, key2)) {
if (val2 === obj[key2]) {
return true
}
}
}
}
return false
}
var includes_1 = includes$5
var isArray$v = isArray_1$1
var includes$4 = includes_1
function includeArrays$2(array1, array22) {
var len2
var index2 = 0
if (isArray$v(array1) && isArray$v(array22)) {
for (len2 = array22.length; index2 < len2; index2++) {
if (!includes$4(array1, array22[index2])) {
return false
}
}
return true
}
return includes$4(array1, array22)
}
var includeArrays_1 = includeArrays$2
var each$t = each_1
var includes$3 = includes_1
var isFunction$f = isFunction_1$1
var property$4 = property_1
function uniq$2(array4, iterate2, context2) {
var result = []
if (iterate2) {
if (!isFunction$f(iterate2)) {
iterate2 = property$4(iterate2)
}
var val2,
valMap = {}
each$t(array4, function (item2, key2) {
val2 = iterate2.call(context2, item2, key2, array4)
if (!valMap[val2]) {
valMap[val2] = 1
result.push(item2)
}
})
} else {
each$t(array4, function (value2) {
if (!includes$3(result, value2)) {
result.push(value2)
}
})
}
return result
}
var uniq_1 = uniq$2
var map$7 = map_1
function toArray$3(list2) {
return map$7(list2, function (item2) {
return item2
})
}
var toArray_1 = toArray$3
var uniq$1 = uniq_1
var toArray$2 = toArray_1
function union$1() {
var args = arguments
var result = []
var index2 = 0
var len2 = args.length
for (; index2 < len2; index2++) {
result = result.concat(toArray$2(args[index2]))
}
return uniq$1(result)
}
var union_1 = union$1
var staticStrUndefined$b = 'undefined'
var staticStrUndefined_1 = staticStrUndefined$b
var staticStrUndefined$a = staticStrUndefined_1
var helperCreateInTypeof$4 = helperCreateInTypeof_1
var isUndefined$a = helperCreateInTypeof$4(staticStrUndefined$a)
var isUndefined_1 = isUndefined$a
var isNull$7 = isNull_1
var isUndefined$9 = isUndefined_1
function eqNull$8(obj) {
return isNull$7(obj) || isUndefined$9(obj)
}
var eqNull_1 = eqNull$8
var staticHGKeyRE$2 = /(.+)?\[(\d+)\]$/
var staticHGKeyRE_1 = staticHGKeyRE$2
function helperGetHGSKeys$3(property2) {
return property2
? property2.splice && property2.join
? property2
: ('' + property2)
.replace(/(\[\d+\])\.?/g, '$1.')
.replace(/\.$/, '')
.split('.')
: []
}
var helperGetHGSKeys_1 = helperGetHGSKeys$3
var staticHGKeyRE$1 = staticHGKeyRE_1
var helperGetHGSKeys$2 = helperGetHGSKeys_1
var hasOwnProp$6 = hasOwnProp_1
var isUndefined$8 = isUndefined_1
var eqNull$7 = eqNull_1
function get$7(obj, property2, defaultValue) {
if (eqNull$7(obj)) {
return defaultValue
}
var result = getValueByPath(obj, property2)
return isUndefined$8(result) ? defaultValue : result
}
function getDeepProps(obj, key2) {
var matchs = key2 ? key2.match(staticHGKeyRE$1) : ''
return matchs
? matchs[1]
? obj[matchs[1]]
? obj[matchs[1]][matchs[2]]
: void 0
: obj[matchs[2]]
: obj[key2]
}
function getValueByPath(obj, property2) {
if (obj) {
var rest, props2, len2
var index2 = 0
if (obj[property2] || hasOwnProp$6(obj, property2)) {
return obj[property2]
} else {
props2 = helperGetHGSKeys$2(property2)
len2 = props2.length
if (len2) {
for (rest = obj; index2 < len2; index2++) {
rest = getDeepProps(rest, props2[index2])
if (eqNull$7(rest)) {
if (index2 === len2 - 1) {
return rest
}
return
}
}
}
return rest
}
}
}
var get_1 = get$7
var arrayEach$b = arrayEach_1
var toArray$1 = toArray_1
var map$6 = map_1
var isArray$u = isArray_1$1
var isFunction$e = isFunction_1$1
var isPlainObject$5 = isPlainObject_1
var isUndefined$7 = isUndefined_1
var isNull$6 = isNull_1
var eqNull$6 = eqNull_1
var get$6 = get_1
var property$3 = property_1
var ORDER_PROP_ASC = 'asc'
var ORDER_PROP_DESC = 'desc'
function handleSort(v12, v22) {
if (isUndefined$7(v12)) {
return 1
}
if (isNull$6(v12)) {
return isUndefined$7(v22) ? -1 : 1
}
return v12 && v12.localeCompare ? v12.localeCompare(v22) : v12 > v22 ? 1 : -1
}
function buildMultiOrders(name2, confs, compares) {
return function (item1, item2) {
var v12 = item1[name2]
var v22 = item2[name2]
if (v12 === v22) {
return compares ? compares(item1, item2) : 0
}
return confs.order === ORDER_PROP_DESC
? handleSort(v22, v12)
: handleSort(v12, v22)
}
}
function getSortConfs(arr, list2, fieldConfs, context2) {
var sortConfs = []
fieldConfs = isArray$u(fieldConfs) ? fieldConfs : [fieldConfs]
arrayEach$b(fieldConfs, function (handle, index2) {
if (handle) {
var field2 = handle
var order2
if (isArray$u(handle)) {
field2 = handle[0]
order2 = handle[1]
} else if (isPlainObject$5(handle)) {
field2 = handle.field
order2 = handle.order
}
sortConfs.push({
field: field2,
order: order2 || ORDER_PROP_ASC,
})
arrayEach$b(
list2,
isFunction$e(field2)
? function (item2, key2) {
item2[index2] = field2.call(context2, item2.data, key2, arr)
}
: function (item2) {
item2[index2] = field2 ? get$6(item2.data, field2) : item2.data
}
)
}
})
return sortConfs
}
function orderBy$3(arr, fieldConfs, context2) {
if (arr) {
if (eqNull$6(fieldConfs)) {
return toArray$1(arr).sort(handleSort)
}
var compares
var list2 = map$6(arr, function (item2) {
return { data: item2 }
})
var sortConfs = getSortConfs(arr, list2, fieldConfs, context2)
var len2 = sortConfs.length - 1
while (len2 >= 0) {
compares = buildMultiOrders(len2, sortConfs[len2], compares)
len2--
}
if (compares) {
list2 = list2.sort(compares)
}
return map$6(list2, property$3('data'))
}
return []
}
var orderBy_1 = orderBy$3
var orderBy$2 = orderBy_1
var sortBy$1 = orderBy$2
var sortBy_1 = sortBy$1
function random$3(minVal, maxVal) {
return minVal >= maxVal
? minVal
: (minVal = minVal >> 0) +
Math.round(Math.random() * ((maxVal || 9) - minVal))
}
var random_1 = random$3
var helperCreateGetObjects$1 = helperCreateGetObjects_1
var values$7 = helperCreateGetObjects$1('values', 0)
var values_1 = values$7
var random$2 = random_1
var values$6 = values_1
function shuffle$2(array4) {
var index2
var result = []
var list2 = values$6(array4)
var len2 = list2.length - 1
for (; len2 >= 0; len2--) {
index2 = len2 > 0 ? random$2(0, len2) : 0
result.push(list2[index2])
list2.splice(index2, 1)
}
return result
}
var shuffle_1 = shuffle$2
var shuffle$1 = shuffle_1
function sample$1(array4, number4) {
var result = shuffle$1(array4)
if (arguments.length <= 1) {
return result[0]
}
if (number4 < result.length) {
result.length = number4 || 0
}
return result
}
var sample_1 = sample$1
function helperCreateToNumber$2(handle) {
return function (str) {
if (str) {
var num2 = handle(str && str.replace ? str.replace(/,/g, '') : str)
if (!isNaN(num2)) {
return num2
}
}
return 0
}
}
var helperCreateToNumber_1 = helperCreateToNumber$2
var helperCreateToNumber$1 = helperCreateToNumber_1
var toNumber$7 = helperCreateToNumber$1(parseFloat)
var toNumber_1 = toNumber$7
var toNumber$6 = toNumber_1
function slice$9(array4, startIndex, endIndex) {
var result = []
var argsSize = arguments.length
if (array4) {
startIndex = argsSize >= 2 ? toNumber$6(startIndex) : 0
endIndex = argsSize >= 3 ? toNumber$6(endIndex) : array4.length
if (array4.slice) {
return array4.slice(startIndex, endIndex)
}
for (; startIndex < endIndex; startIndex++) {
result.push(array4[startIndex])
}
}
return result
}
var slice_1 = slice$9
var each$s = each_1
function filter$2(obj, iterate2, context2) {
var result = []
if (obj && iterate2) {
if (obj.filter) {
return obj.filter(iterate2, context2)
}
each$s(obj, function (val2, key2) {
if (iterate2.call(context2, val2, key2, obj)) {
result.push(val2)
}
})
}
return result
}
var filter_1 = filter$2
var helperCreateIterateHandle$1 = helperCreateIterateHandle_1
var findKey$1 = helperCreateIterateHandle$1('', 0, 2, true)
var findKey_1 = findKey$1
var helperCreateIterateHandle = helperCreateIterateHandle_1
var find$3 = helperCreateIterateHandle('find', 1, 3, true)
var find_1 = find$3
var isArray$t = isArray_1$1
var values$5 = values_1
function findLast$1(obj, iterate2, context2) {
if (obj) {
if (!isArray$t(obj)) {
obj = values$5(obj)
}
for (var len2 = obj.length - 1; len2 >= 0; len2--) {
if (iterate2.call(context2, obj[len2], len2, obj)) {
return obj[len2]
}
}
}
}
var findLast_1 = findLast$1
var keys$d = keys_1$1
function reduce$2(array4, callback, initialValue) {
if (array4) {
var len2, reduceMethod
var index2 = 0
var context2 = null
var previous = initialValue
var isInitialVal = arguments.length > 2
var keyList = keys$d(array4)
if (array4.length && array4.reduce) {
reduceMethod = function () {
return callback.apply(context2, arguments)
}
if (isInitialVal) {
return array4.reduce(reduceMethod, previous)
}
return array4.reduce(reduceMethod)
}
if (isInitialVal) {
index2 = 1
previous = array4[keyList[0]]
}
for (len2 = keyList.length; index2 < len2; index2++) {
previous = callback.call(
context2,
previous,
array4[keyList[index2]],
index2,
array4
)
}
return previous
}
}
var reduce_1 = reduce$2
var isArray$s = isArray_1$1
function copyWithin$1(array4, target2, start2, end2) {
if (isArray$s(array4) && array4.copyWithin) {
return array4.copyWithin(target2, start2, end2)
}
var replaceIndex, replaceArray
var targetIndex = target2 >> 0
var startIndex = start2 >> 0
var len2 = array4.length
var endIndex = arguments.length > 3 ? end2 >> 0 : len2
if (targetIndex < len2) {
targetIndex = targetIndex >= 0 ? targetIndex : len2 + targetIndex
if (targetIndex >= 0) {
startIndex = startIndex >= 0 ? startIndex : len2 + startIndex
endIndex = endIndex >= 0 ? endIndex : len2 + endIndex
if (startIndex < endIndex) {
for (
replaceIndex = 0, replaceArray = array4.slice(startIndex, endIndex);
targetIndex < len2;
targetIndex++
) {
if (replaceArray.length <= replaceIndex) {
break
}
array4[targetIndex] = replaceArray[replaceIndex++]
}
}
}
}
return array4
}
var copyWithin_1 = copyWithin$1
var isArray$r = isArray_1$1
function chunk$1(array4, size) {
var index2
var result = []
var arrLen = size >> 0 || 1
if (isArray$r(array4)) {
if (arrLen >= 0 && array4.length > arrLen) {
index2 = 0
while (index2 < array4.length) {
result.push(array4.slice(index2, index2 + arrLen))
index2 += arrLen
}
} else {
result = array4.length ? [array4] : array4
}
}
return result
}
var chunk_1 = chunk$1
var map$5 = map_1
var property$2 = property_1
function pluck$2(obj, key2) {
return map$5(obj, property$2(key2))
}
var pluck_1 = pluck$2
var isFunction$d = isFunction_1$1
var eqNull$5 = eqNull_1
var get$5 = get_1
var arrayEach$a = arrayEach_1
function helperCreateMinMax$2(handle) {
return function (arr, iterate2) {
if (arr && arr.length) {
var rest, itemIndex
arrayEach$a(arr, function (itemVal, index2) {
if (iterate2) {
itemVal = isFunction$d(iterate2)
? iterate2(itemVal, index2, arr)
: get$5(itemVal, iterate2)
}
if (!eqNull$5(itemVal) && (eqNull$5(rest) || handle(rest, itemVal))) {
itemIndex = index2
rest = itemVal
}
})
return arr[itemIndex]
}
return rest
}
}
var helperCreateMinMax_1 = helperCreateMinMax$2
var helperCreateMinMax$1 = helperCreateMinMax_1
var max$8 = helperCreateMinMax$1(function (rest, itemVal) {
return rest < itemVal
})
var max_1 = max$8
var pluck$1 = pluck_1
var max$7 = max_1
function unzip$2(arrays) {
var index2, maxItem, len2
var result = []
if (arrays && arrays.length) {
index2 = 0
maxItem = max$7(arrays, function (item2) {
return item2 ? item2.length : 0
})
for (len2 = maxItem ? maxItem.length : 0; index2 < len2; index2++) {
result.push(pluck$1(arrays, index2))
}
}
return result
}
var unzip_1 = unzip$2
var unzip$1 = unzip_1
function zip$1() {
return unzip$1(arguments)
}
var zip_1 = zip$1
var values$4 = values_1
var each$r = each_1
function zipObject$1(props2, arr) {
var result = {}
arr = arr || []
each$r(values$4(props2), function (val2, key2) {
result[val2] = arr[key2]
})
return result
}
var zipObject_1 = zipObject$1
var isArray$q = isArray_1$1
var arrayEach$9 = arrayEach_1
function flattenDeep(array4, deep) {
var result = []
arrayEach$9(array4, function (vals) {
result = result.concat(
isArray$q(vals) ? (deep ? flattenDeep(vals, deep) : vals) : [vals]
)
})
return result
}
function flatten$1(array4, deep) {
if (isArray$q(array4)) {
return flattenDeep(array4, deep)
}
return []
}
var flatten_1 = flatten$1
var map$4 = map_1
var isArray$p = isArray_1$1
function deepGetObj(obj, path) {
var index2 = 0
var len2 = path.length
while (obj && index2 < len2) {
obj = obj[path[index2++]]
}
return len2 && obj ? obj : 0
}
function invoke$1(list2, path) {
var func
var args = arguments
var params2 = []
var paths = []
var index2 = 2
var len2 = args.length
for (; index2 < len2; index2++) {
params2.push(args[index2])
}
if (isArray$p(path)) {
len2 = path.length - 1
for (index2 = 0; index2 < len2; index2++) {
paths.push(path[index2])
}
path = path[len2]
}
return map$4(list2, function (context2) {
if (paths.length) {
context2 = deepGetObj(context2, paths)
}
func = context2[path] || path
if (func && func.apply) {
return func.apply(context2, params2)
}
})
}
var invoke_1 = invoke$1
function helperDeleteProperty$2(obj, property2) {
try {
delete obj[property2]
} catch (e2) {
obj[property2] = void 0
}
}
var helperDeleteProperty_1 = helperDeleteProperty$2
var isArray$o = isArray_1$1
var lastArrayEach$1 = lastArrayEach_1
var lastObjectEach$1 = lastObjectEach_1
function lastEach$2(obj, iterate2, context2) {
if (obj) {
return (isArray$o(obj) ? lastArrayEach$1 : lastObjectEach$1)(
obj,
iterate2,
context2
)
}
return obj
}
var lastEach_1 = lastEach$2
var helperCreateInTypeof$3 = helperCreateInTypeof_1
var isObject$q = helperCreateInTypeof$3('object')
var isObject_1$1 = isObject$q
var helperDeleteProperty$1 = helperDeleteProperty_1
var isPlainObject$4 = isPlainObject_1
var isObject$p = isObject_1$1
var isArray$n = isArray_1$1
var isNull$5 = isNull_1
var assign$b = assign_1
var objectEach$2 = objectEach_1
function clear$5(obj, defs, assigns) {
if (obj) {
var len2
var isDefs = arguments.length > 1 && (isNull$5(defs) || !isObject$p(defs))
var extds = isDefs ? assigns : defs
if (isPlainObject$4(obj)) {
objectEach$2(
obj,
isDefs
? function (val2, key2) {
obj[key2] = defs
}
: function (val2, key2) {
helperDeleteProperty$1(obj, key2)
}
)
if (extds) {
assign$b(obj, extds)
}
} else if (isArray$n(obj)) {
if (isDefs) {
len2 = obj.length
while (len2 > 0) {
len2--
obj[len2] = defs
}
} else {
obj.length = 0
}
if (extds) {
obj.push.apply(obj, extds)
}
}
}
return obj
}
var clear_1 = clear$5
var helperDeleteProperty = helperDeleteProperty_1
var isFunction$c = isFunction_1$1
var isArray$m = isArray_1$1
var each$q = each_1
var arrayEach$8 = arrayEach_1
var lastEach$1 = lastEach_1
var clear$4 = clear_1
var eqNull$4 = eqNull_1
function pluckProperty(name2) {
return function (obj, key2) {
return key2 === name2
}
}
function remove$2(obj, iterate2, context2) {
if (obj) {
if (!eqNull$4(iterate2)) {
var removeKeys = []
var rest = []
if (!isFunction$c(iterate2)) {
iterate2 = pluckProperty(iterate2)
}
each$q(obj, function (item2, index2, rest2) {
if (iterate2.call(context2, item2, index2, rest2)) {
removeKeys.push(index2)
}
})
if (isArray$m(obj)) {
lastEach$1(removeKeys, function (item2, key2) {
rest.push(obj[item2])
obj.splice(item2, 1)
})
} else {
rest = {}
arrayEach$8(removeKeys, function (key2) {
rest[key2] = obj[key2]
helperDeleteProperty(obj, key2)
})
}
return rest
}
return clear$4(obj)
}
return obj
}
var remove_1 = remove$2
var setupDefaults$7 = setupDefaults_1
var orderBy$1 = orderBy_1
var clone$8 = clone_1
var eqNull$3 = eqNull_1
var each$p = each_1
var remove$1 = remove_1
var assign$a = assign_1
function strictTree(array4, optChildren) {
each$p(array4, function (item2) {
if (item2[optChildren] && !item2[optChildren].length) {
remove$1(item2, optChildren)
}
})
}
function toArrayTree$1(array4, options2) {
var opts = assign$a({}, setupDefaults$7.treeOptions, options2)
var optStrict = opts.strict
var optKey = opts.key
var optParentKey = opts.parentKey
var optChildren = opts.children
var optMapChildren = opts.mapChildren
var optSortKey = opts.sortKey
var optReverse = opts.reverse
var optData = opts.data
var result = []
var treeMap = {}
var idsMap = {}
var id2, treeData, parentId
if (optSortKey) {
array4 = orderBy$1(clone$8(array4), optSortKey)
if (optReverse) {
array4 = array4.reverse()
}
}
each$p(array4, function (item2) {
id2 = item2[optKey]
idsMap[id2] = true
})
each$p(array4, function (item2) {
id2 = item2[optKey]
if (optData) {
treeData = {}
treeData[optData] = item2
} else {
treeData = item2
}
parentId = item2[optParentKey]
treeMap[id2] = treeMap[id2] || []
treeMap[parentId] = treeMap[parentId] || []
treeMap[parentId].push(treeData)
treeData[optKey] = id2
treeData[optParentKey] = parentId
treeData[optChildren] = treeMap[id2]
if (optMapChildren) {
treeData[optMapChildren] = treeMap[id2]
}
if (!optStrict || (optStrict && eqNull$3(parentId))) {
if (!idsMap[parentId]) {
result.push(treeData)
}
}
})
if (optStrict) {
strictTree(array4, optChildren)
}
return result
}
var toArrayTree_1 = toArrayTree$1
var setupDefaults$6 = setupDefaults_1
var each$o = each_1
var assign$9 = assign_1
function unTreeList(result, array4, opts) {
var optChildren = opts.children
var optData = opts.data
var optClear = opts.clear
each$o(array4, function (item2) {
var children = item2[optChildren]
if (optData) {
item2 = item2[optData]
}
result.push(item2)
if (children && children.length) {
unTreeList(result, children, opts)
}
if (optClear) {
delete item2[optChildren]
}
})
return result
}
function toTreeArray$1(array4, options2) {
return unTreeList(
[],
array4,
assign$9({}, setupDefaults$6.treeOptions, options2)
)
}
var toTreeArray_1 = toTreeArray$1
function helperCreateTreeFunc$4(handle) {
return function (obj, iterate2, options2, context2) {
var opts = options2 || {}
var optChildren = opts.children || 'children'
return handle(null, obj, iterate2, context2, [], [], optChildren, opts)
}
}
var helperCreateTreeFunc_1 = helperCreateTreeFunc$4
var helperCreateTreeFunc$3 = helperCreateTreeFunc_1
function findTreeItem(
parent2,
obj,
iterate2,
context2,
path,
node2,
parseChildren,
opts
) {
if (obj) {
var item2, index2, len2, paths, nodes, match2
for (index2 = 0, len2 = obj.length; index2 < len2; index2++) {
item2 = obj[index2]
paths = path.concat(['' + index2])
nodes = node2.concat([item2])
if (iterate2.call(context2, item2, index2, obj, paths, parent2, nodes)) {
return {
index: index2,
item: item2,
path: paths,
items: obj,
parent: parent2,
nodes,
}
}
if (parseChildren && item2) {
match2 = findTreeItem(
item2,
item2[parseChildren],
iterate2,
context2,
paths.concat([parseChildren]),
nodes,
parseChildren
)
if (match2) {
return match2
}
}
}
}
}
var findTree$1 = helperCreateTreeFunc$3(findTreeItem)
var findTree_1 = findTree$1
var helperCreateTreeFunc$2 = helperCreateTreeFunc_1
var each$n = each_1
function eachTreeItem(
parent2,
obj,
iterate2,
context2,
path,
node2,
parseChildren,
opts
) {
var paths, nodes
each$n(obj, function (item2, index2) {
paths = path.concat(['' + index2])
nodes = node2.concat([item2])
iterate2.call(context2, item2, index2, obj, paths, parent2, nodes)
if (item2 && parseChildren) {
paths.push(parseChildren)
eachTreeItem(
item2,
item2[parseChildren],
iterate2,
context2,
paths,
nodes,
parseChildren
)
}
})
}
var eachTree$2 = helperCreateTreeFunc$2(eachTreeItem)
var eachTree_1 = eachTree$2
var helperCreateTreeFunc$1 = helperCreateTreeFunc_1
var map$3 = map_1
function mapTreeItem(
parent2,
obj,
iterate2,
context2,
path,
node2,
parseChildren,
opts
) {
var paths, nodes, rest
var mapChildren = opts.mapChildren || parseChildren
return map$3(obj, function (item2, index2) {
paths = path.concat(['' + index2])
nodes = node2.concat([item2])
rest = iterate2.call(context2, item2, index2, obj, paths, parent2, nodes)
if (rest && item2 && parseChildren && item2[parseChildren]) {
rest[mapChildren] = mapTreeItem(
item2,
item2[parseChildren],
iterate2,
context2,
paths,
nodes,
parseChildren,
opts
)
}
return rest
})
}
var mapTree$1 = helperCreateTreeFunc$1(mapTreeItem)
var mapTree_1 = mapTree$1
var eachTree$1 = eachTree_1
function filterTree$1(obj, iterate2, options2, context2) {
var result = []
if (obj && iterate2) {
eachTree$1(
obj,
function (item2, index2, items, path, parent2, nodes) {
if (
iterate2.call(context2, item2, index2, items, path, parent2, nodes)
) {
result.push(item2)
}
},
options2
)
}
return result
}
var filterTree_1 = filterTree$1
var helperCreateTreeFunc = helperCreateTreeFunc_1
var arrayEach$7 = arrayEach_1
var assign$8 = assign_1
function searchTreeItem(
parentAllow,
parent2,
obj,
iterate2,
context2,
path,
node2,
parseChildren,
opts
) {
var paths, nodes, rest, isAllow, hasChild2
var rests = []
var hasOriginal = opts.original
var sourceData = opts.data
var mapChildren = opts.mapChildren || parseChildren
arrayEach$7(obj, function (item2, index2) {
paths = path.concat(['' + index2])
nodes = node2.concat([item2])
isAllow =
parentAllow ||
iterate2.call(context2, item2, index2, obj, paths, parent2, nodes)
hasChild2 = parseChildren && item2[parseChildren]
if (isAllow || hasChild2) {
if (hasOriginal) {
rest = item2
} else {
rest = assign$8({}, item2)
if (sourceData) {
rest[sourceData] = item2
}
}
rest[mapChildren] = searchTreeItem(
isAllow,
item2,
item2[parseChildren],
iterate2,
context2,
paths,
nodes,
parseChildren,
opts
)
if (isAllow || rest[mapChildren].length) {
rests.push(rest)
}
} else if (isAllow) {
rests.push(rest)
}
})
return rests
}
var searchTree$1 = helperCreateTreeFunc(function (
parent2,
obj,
iterate2,
context2,
path,
nodes,
parseChildren,
opts
) {
return searchTreeItem(
0,
parent2,
obj,
iterate2,
context2,
path,
nodes,
parseChildren,
opts
)
})
var searchTree_1 = searchTree$1
function arrayIndexOf$2(list2, val2) {
if (list2.indexOf) {
return list2.indexOf(val2)
}
for (var index2 = 0, len2 = list2.length; index2 < len2; index2++) {
if (val2 === list2[index2]) {
return index2
}
}
}
var arrayIndexOf_1 = arrayIndexOf$2
function arrayLastIndexOf$2(list2, val2) {
if (list2.lastIndexOf) {
return list2.lastIndexOf(val2)
}
for (var len2 = list2.length - 1; len2 >= 0; len2--) {
if (val2 === list2[len2]) {
return len2
}
}
return -1
}
var arrayLastIndexOf_1 = arrayLastIndexOf$2
var helperCreateInTypeof$2 = helperCreateInTypeof_1
var isNumber$d = helperCreateInTypeof$2('number')
var isNumber_1 = isNumber$d
var isNumber$c = isNumber_1
function isNumberNaN$1(obj) {
return isNumber$c(obj) && isNaN(obj)
}
var _isNaN = isNumberNaN$1
var helperCreateInTypeof$1 = helperCreateInTypeof_1
var isString$c = helperCreateInTypeof$1('string')
var isString_1 = isString$c
var helperCreateInInObjectString$3 = helperCreateInInObjectString_1
var isDate$9 = helperCreateInInObjectString$3('Date')
var isDate_1 = isDate$9
var staticParseInt$5 = parseInt
var staticParseInt_1 = staticParseInt$5
function helperGetUTCDateTime$1(resMaps) {
return Date.UTC(
resMaps.y,
resMaps.M || 0,
resMaps.d || 1,
resMaps.H || 0,
resMaps.m || 0,
resMaps.s || 0,
resMaps.S || 0
)
}
var helperGetUTCDateTime_1 = helperGetUTCDateTime$1
function helperGetDateTime$c(date4) {
return date4.getTime()
}
var helperGetDateTime_1 = helperGetDateTime$c
var staticParseInt$4 = staticParseInt_1
var helperGetUTCDateTime = helperGetUTCDateTime_1
var helperGetDateTime$b = helperGetDateTime_1
var isString$b = isString_1
var isDate$8 = isDate_1
function getParseRule(txt) {
return '(\\d{' + txt + '})'
}
function toParseMs(num2) {
if (num2 < 10) {
return num2 * 100
} else if (num2 < 100) {
return num2 * 10
}
return num2
}
function toParseNum(num2) {
return isNaN(num2) ? num2 : staticParseInt$4(num2)
}
var d2 = getParseRule(2)
var d1or2 = getParseRule('1,2')
var d1or7 = getParseRule('1,7')
var d3or4 = getParseRule('3,4')
var place = '.{1}'
var d1Or2RE = place + d1or2
var dzZ = '(([zZ])|([-+]\\d{2}:?\\d{2}))'
var defaulParseStrs = [
d3or4,
d1Or2RE,
d1Or2RE,
d1Or2RE,
d1Or2RE,
d1Or2RE,
place + d1or7,
dzZ,
]
var defaulParseREs = []
for (var len$1 = defaulParseStrs.length - 1; len$1 >= 0; len$1--) {
var rule = ''
for (var i$3 = 0; i$3 < len$1 + 1; i$3++) {
rule += defaulParseStrs[i$3]
}
defaulParseREs.push(new RegExp('^' + rule + '$'))
}
function parseDefaultRules(str) {
var matchRest,
resMaps = {}
for (var i2 = 0, dfrLen = defaulParseREs.length; i2 < dfrLen; i2++) {
matchRest = str.match(defaulParseREs[i2])
if (matchRest) {
resMaps.y = matchRest[1]
resMaps.M = matchRest[2]
resMaps.d = matchRest[3]
resMaps.H = matchRest[4]
resMaps.m = matchRest[5]
resMaps.s = matchRest[6]
resMaps.S = matchRest[7]
resMaps.Z = matchRest[8]
break
}
}
return resMaps
}
var customParseStrs = [
['yyyy', d3or4],
['yy', d2],
['MM', d2],
['M', d1or2],
['dd', d2],
['d', d1or2],
['HH', d2],
['H', d1or2],
['mm', d2],
['m', d1or2],
['ss', d2],
['s', d1or2],
['SSS', getParseRule(3)],
['S', d1or7],
['Z', dzZ],
]
var parseRuleMaps = {}
var parseRuleKeys = ['\\[([^\\]]+)\\]']
for (var i$3 = 0; i$3 < customParseStrs.length; i$3++) {
var itemRule = customParseStrs[i$3]
parseRuleMaps[itemRule[0]] = itemRule[1] + '?'
parseRuleKeys.push(itemRule[0])
}
var customParseRes = new RegExp(parseRuleKeys.join('|'), 'g')
var cacheFormatMaps = {}
function parseCustomRules(str, format2) {
var cacheItem = cacheFormatMaps[format2]
if (!cacheItem) {
var posIndexs = []
var re2 = format2
.replace(/([$(){}*+.?\\^|])/g, '\\$1')
.replace(customParseRes, function (text2, val2) {
var firstChar = text2.charAt(0)
if (firstChar === '[') {
return val2
}
posIndexs.push(firstChar)
return parseRuleMaps[text2]
})
cacheItem = cacheFormatMaps[format2] = {
_i: posIndexs,
_r: new RegExp(re2),
}
}
var resMaps = {}
var matchRest = str.match(cacheItem._r)
if (matchRest) {
var _i = cacheItem._i
for (var i2 = 1, len2 = matchRest.length; i2 < len2; i2++) {
resMaps[_i[i2 - 1]] = matchRest[i2]
}
return resMaps
}
return resMaps
}
function parseTimeZone(resMaps) {
if (/^[zZ]/.test(resMaps.Z)) {
return new Date(helperGetUTCDateTime(resMaps))
} else {
var matchRest = resMaps.Z.match(/([-+])(\d{2}):?(\d{2})/)
if (matchRest) {
return new Date(
helperGetUTCDateTime(resMaps) -
(matchRest[1] === '-' ? -1 : 1) *
staticParseInt$4(matchRest[2]) *
36e5 +
staticParseInt$4(matchRest[3]) * 6e4
)
}
}
return new Date('')
}
function toStringDate$d(str, format2) {
if (str) {
var isDType = isDate$8(str)
if (isDType || (!format2 && /^[0-9]{11,15}$/.test(str))) {
return new Date(
isDType ? helperGetDateTime$b(str) : staticParseInt$4(str)
)
}
if (isString$b(str)) {
var resMaps = format2
? parseCustomRules(str, format2)
: parseDefaultRules(str)
if (resMaps.y) {
if (resMaps.M) {
resMaps.M = toParseNum(resMaps.M) - 1
}
if (resMaps.S) {
resMaps.S = toParseMs(toParseNum(resMaps.S.substring(0, 3)))
}
if (resMaps.Z) {
return parseTimeZone(resMaps)
} else {
return new Date(
resMaps.y,
resMaps.M || 0,
resMaps.d || 1,
resMaps.H || 0,
resMaps.m || 0,
resMaps.s || 0,
resMaps.S || 0
)
}
}
}
}
return new Date('')
}
var toStringDate_1 = toStringDate$d
function helperNewDate$4() {
return new Date()
}
var helperNewDate_1 = helperNewDate$4
var isDate$7 = isDate_1
var toStringDate$c = toStringDate_1
var helperNewDate$3 = helperNewDate_1
function isLeapYear$2(date4) {
var year
var currentDate = date4 ? toStringDate$c(date4) : helperNewDate$3()
if (isDate$7(currentDate)) {
year = currentDate.getFullYear()
return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0)
}
return false
}
var isLeapYear_1 = isLeapYear$2
var isArray$l = isArray_1$1
var hasOwnProp$5 = hasOwnProp_1
function forOf$1(obj, iterate2, context2) {
if (obj) {
if (isArray$l(obj)) {
for (var index2 = 0, len2 = obj.length; index2 < len2; index2++) {
if (iterate2.call(context2, obj[index2], index2, obj) === false) {
break
}
}
} else {
for (var key2 in obj) {
if (hasOwnProp$5(obj, key2)) {
if (iterate2.call(context2, obj[key2], key2, obj) === false) {
break
}
}
}
}
}
}
var forOf_1 = forOf$1
var isArray$k = isArray_1$1
var keys$c = hasOwnProp_1
function lastForOf$1(obj, iterate2, context2) {
if (obj) {
var len2, list2
if (isArray$k(obj)) {
for (len2 = obj.length - 1; len2 >= 0; len2--) {
if (iterate2.call(context2, obj[len2], len2, obj) === false) {
break
}
}
} else {
list2 = keys$c(obj)
for (len2 = list2.length - 1; len2 >= 0; len2--) {
if (
iterate2.call(context2, obj[list2[len2]], list2[len2], obj) === false
) {
break
}
}
}
}
}
var lastForOf_1 = lastForOf$1
var isArray$j = isArray_1$1
var isString$a = isString_1
var hasOwnProp$4 = hasOwnProp_1
function helperCreateIndexOf$2(name2, callback) {
return function (obj, val2) {
if (obj) {
if (obj[name2]) {
return obj[name2](val2)
}
if (isString$a(obj) || isArray$j(obj)) {
return callback(obj, val2)
}
for (var key2 in obj) {
if (hasOwnProp$4(obj, key2)) {
if (val2 === obj[key2]) {
return key2
}
}
}
}
return -1
}
}
var helperCreateIndexOf_1 = helperCreateIndexOf$2
var helperCreateIndexOf$1 = helperCreateIndexOf_1
var arrayIndexOf$1 = arrayIndexOf_1
var indexOf$4 = helperCreateIndexOf$1('indexOf', arrayIndexOf$1)
var indexOf_1 = indexOf$4
var helperCreateIndexOf = helperCreateIndexOf_1
var arrayLastIndexOf$1 = arrayLastIndexOf_1
var lastIndexOf$2 = helperCreateIndexOf('lastIndexOf', arrayLastIndexOf$1)
var lastIndexOf_1 = lastIndexOf$2
var isArray$i = isArray_1$1
var isString$9 = isString_1
var each$m = each_1
function getSize$4(obj) {
var len2 = 0
if (isString$9(obj) || isArray$i(obj)) {
return obj.length
}
each$m(obj, function () {
len2++
})
return len2
}
var getSize_1 = getSize$4
var isNumber$b = isNumber_1
function isNumberFinite$1(obj) {
return isNumber$b(obj) && isFinite(obj)
}
var _isFinite = isNumberFinite$1
var isArray$h = isArray_1$1
var isNull$4 = isNull_1
var isInteger$2 = function (obj) {
return !isNull$4(obj) && !isNaN(obj) && !isArray$h(obj) && obj % 1 === 0
}
var isInteger_1 = isInteger$2
var isArray$g = isArray_1$1
var isInteger$1 = isInteger_1
var isNull$3 = isNull_1
function isFloat$1(obj) {
return !isNull$3(obj) && !isNaN(obj) && !isArray$g(obj) && !isInteger$1(obj)
}
var isFloat_1 = isFloat$1
var helperCreateInTypeof = helperCreateInTypeof_1
var isBoolean$3 = helperCreateInTypeof('boolean')
var isBoolean_1 = isBoolean$3
var helperCreateInInObjectString$2 = helperCreateInInObjectString_1
var isRegExp$7 = helperCreateInInObjectString$2('RegExp')
var isRegExp_1 = isRegExp$7
var helperCreateInInObjectString$1 = helperCreateInInObjectString_1
var isError$2 = helperCreateInInObjectString$1('Error')
var isError_1 = isError$2
function isTypeError$1(obj) {
return obj ? obj.constructor === TypeError : false
}
var isTypeError_1 = isTypeError$1
function isEmpty$2(obj) {
for (var key2 in obj) {
return false
}
return true
}
var isEmpty_1 = isEmpty$2
var staticStrUndefined$9 = staticStrUndefined_1
var supportSymbol = typeof Symbol !== staticStrUndefined$9
function isSymbol$5(obj) {
return supportSymbol && Symbol.isSymbol
? Symbol.isSymbol(obj)
: typeof obj === 'symbol'
}
var isSymbol_1 = isSymbol$5
var helperCreateInInObjectString = helperCreateInInObjectString_1
var isArguments$3 = helperCreateInInObjectString('Arguments')
var isArguments_1$1 = isArguments$3
var isString$8 = isString_1
var isNumber$a = isNumber_1
function isElement$1(obj) {
return !!(obj && isString$8(obj.nodeName) && isNumber$a(obj.nodeType))
}
var isElement_1 = isElement$1
var staticStrUndefined$8 = staticStrUndefined_1
var staticDocument$3 = typeof document === staticStrUndefined$8 ? 0 : document
var staticDocument_1 = staticDocument$3
var staticDocument$2 = staticDocument_1
function isDocument$1(obj) {
return !!(obj && staticDocument$2 && obj.nodeType === 9)
}
var isDocument_1 = isDocument$1
var staticStrUndefined$7 = staticStrUndefined_1
var staticWindow$2 = typeof window === staticStrUndefined$7 ? 0 : window
var staticWindow_1 = staticWindow$2
var staticWindow$1 = staticWindow_1
function isWindow$1(obj) {
return staticWindow$1 && !!(obj && obj === obj.window)
}
var isWindow_1 = isWindow$1
var staticStrUndefined$6 = staticStrUndefined_1
var supportFormData = typeof FormData !== staticStrUndefined$6
function isFormData$1(obj) {
return supportFormData && obj instanceof FormData
}
var isFormData_1 = isFormData$1
var staticStrUndefined$5 = staticStrUndefined_1
var supportMap = typeof Map !== staticStrUndefined$5
function isMap$3(obj) {
return supportMap && obj instanceof Map
}
var isMap_1$1 = isMap$3
var staticStrUndefined$4 = staticStrUndefined_1
var supportWeakMap = typeof WeakMap !== staticStrUndefined$4
function isWeakMap$1(obj) {
return supportWeakMap && obj instanceof WeakMap
}
var isWeakMap_1 = isWeakMap$1
var staticStrUndefined$3 = staticStrUndefined_1
var supportSet = typeof Set !== staticStrUndefined$3
function isSet$3(obj) {
return supportSet && obj instanceof Set
}
var isSet_1$1 = isSet$3
var staticStrUndefined$2 = staticStrUndefined_1
var supportWeakSet = typeof WeakSet !== staticStrUndefined$2
function isWeakSet$1(obj) {
return supportWeakSet && obj instanceof WeakSet
}
var isWeakSet_1 = isWeakSet$1
var isFunction$b = isFunction_1$1
var isString$7 = isString_1
var isArray$f = isArray_1$1
var hasOwnProp$3 = hasOwnProp_1
function helperCreateiterateIndexOf$2(callback) {
return function (obj, iterate2, context2) {
if (obj && isFunction$b(iterate2)) {
if (isArray$f(obj) || isString$7(obj)) {
return callback(obj, iterate2, context2)
}
for (var key2 in obj) {
if (hasOwnProp$3(obj, key2)) {
if (iterate2.call(context2, obj[key2], key2, obj)) {
return key2
}
}
}
}
return -1
}
}
var helperCreateiterateIndexOf_1 = helperCreateiterateIndexOf$2
var helperCreateiterateIndexOf$1 = helperCreateiterateIndexOf_1
var findIndexOf$3 = helperCreateiterateIndexOf$1(function (
obj,
iterate2,
context2
) {
for (var index2 = 0, len2 = obj.length; index2 < len2; index2++) {
if (iterate2.call(context2, obj[index2], index2, obj)) {
return index2
}
}
return -1
})
var findIndexOf_1 = findIndexOf$3
var isNumber$9 = isNumber_1
var isArray$e = isArray_1$1
var isString$6 = isString_1
var isRegExp$6 = isRegExp_1
var isDate$6 = isDate_1
var isBoolean$2 = isBoolean_1
var isUndefined$6 = isUndefined_1
var keys$b = keys_1$1
var every$1 = every_1
function helperEqualCompare$2(val1, val2, compare2, func, key2, obj1, obj2) {
if (val1 === val2) {
return true
}
if (
val1 &&
val2 &&
!isNumber$9(val1) &&
!isNumber$9(val2) &&
!isString$6(val1) &&
!isString$6(val2)
) {
if (isRegExp$6(val1)) {
return compare2('' + val1, '' + val2, key2, obj1, obj2)
}
if (isDate$6(val1) || isBoolean$2(val1)) {
return compare2(+val1, +val2, key2, obj1, obj2)
} else {
var result, val1Keys, val2Keys
var isObj1Arr = isArray$e(val1)
var isObj2Arr = isArray$e(val2)
if (
isObj1Arr || isObj2Arr
? isObj1Arr && isObj2Arr
: val1.constructor === val2.constructor
) {
val1Keys = keys$b(val1)
val2Keys = keys$b(val2)
if (func) {
result = func(val1, val2, key2)
}
if (val1Keys.length === val2Keys.length) {
return isUndefined$6(result)
? every$1(val1Keys, function (key3, index2) {
return (
key3 === val2Keys[index2] &&
helperEqualCompare$2(
val1[key3],
val2[val2Keys[index2]],
compare2,
func,
isObj1Arr || isObj2Arr ? index2 : key3,
val1,
val2
)
)
})
: !!result
}
return false
}
}
}
return compare2(val1, val2, key2, obj1, obj2)
}
var helperEqualCompare_1 = helperEqualCompare$2
function helperDefaultCompare$2(v12, v22) {
return v12 === v22
}
var helperDefaultCompare_1 = helperDefaultCompare$2
var helperEqualCompare$1 = helperEqualCompare_1
var helperDefaultCompare$1 = helperDefaultCompare_1
function isEqual$2(obj1, obj2) {
return helperEqualCompare$1(obj1, obj2, helperDefaultCompare$1)
}
var isEqual_1 = isEqual$2
var keys$a = keys_1$1
var findIndexOf$2 = findIndexOf_1
var isEqual$1 = isEqual_1
var some$1 = some_1
var includeArrays$1 = includeArrays_1
function isMatch$1(obj, source2) {
var objKeys = keys$a(obj)
var sourceKeys = keys$a(source2)
if (sourceKeys.length) {
if (includeArrays$1(objKeys, sourceKeys)) {
return some$1(sourceKeys, function (key2) {
return (
findIndexOf$2(objKeys, function (key1) {
return key1 === key2 && isEqual$1(obj[key1], source2[key2])
}) > -1
)
})
}
} else {
return true
}
return isEqual$1(obj, source2)
}
var isMatch_1 = isMatch$1
var helperEqualCompare = helperEqualCompare_1
var helperDefaultCompare = helperDefaultCompare_1
var isFunction$a = isFunction_1$1
var isUndefined$5 = isUndefined_1
function isEqualWith$1(obj1, obj2, func) {
if (isFunction$a(func)) {
return helperEqualCompare(
obj1,
obj2,
function (v12, v22, key2, obj12, obj22) {
var result = func(v12, v22, key2, obj12, obj22)
return isUndefined$5(result) ? helperDefaultCompare(v12, v22) : !!result
},
func
)
}
return helperEqualCompare(obj1, obj2, helperDefaultCompare)
}
var isEqualWith_1 = isEqualWith$1
var isSymbol$4 = isSymbol_1
var isDate$5 = isDate_1
var isArray$d = isArray_1$1
var isRegExp$5 = isRegExp_1
var isError$1 = isError_1
var isNull$2 = isNull_1
function getType$1(obj) {
if (isNull$2(obj)) {
return 'null'
}
if (isSymbol$4(obj)) {
return 'symbol'
}
if (isDate$5(obj)) {
return 'date'
}
if (isArray$d(obj)) {
return 'array'
}
if (isRegExp$5(obj)) {
return 'regexp'
}
if (isError$1(obj)) {
return 'error'
}
return typeof obj
}
var getType_1 = getType$1
var __uniqueId = 0
function uniqueId$1(prefix) {
return [prefix, ++__uniqueId].join('')
}
var uniqueId_1 = uniqueId$1
var helperCreateiterateIndexOf = helperCreateiterateIndexOf_1
var findLastIndexOf$1 = helperCreateiterateIndexOf(function (
obj,
iterate2,
context2
) {
for (var len2 = obj.length - 1; len2 >= 0; len2--) {
if (iterate2.call(context2, obj[len2], len2, obj)) {
return len2
}
}
return -1
})
var findLastIndexOf_1 = findLastIndexOf$1
var isPlainObject$3 = isPlainObject_1
var isString$5 = isString_1
function toStringJSON$1(str) {
if (isPlainObject$3(str)) {
return str
} else if (isString$5(str)) {
try {
return JSON.parse(str)
} catch (e2) {}
}
return {}
}
var toStringJSON_1 = toStringJSON$1
var eqNull$2 = eqNull_1
function toJSONString$1(obj) {
return eqNull$2(obj) ? '' : JSON.stringify(obj)
}
var toJSONString_1 = toJSONString$1
var helperCreateGetObjects = helperCreateGetObjects_1
var entries$1 = helperCreateGetObjects('entries', 2)
var entries_1 = entries$1
var isFunction$9 = isFunction_1$1
var isArray$c = isArray_1$1
var each$l = each_1
var findIndexOf$1 = findIndexOf_1
function helperCreatePickOmit$2(case1, case2) {
return function (obj, callback) {
var item2, index2
var rest = {}
var result = []
var context2 = this
var args = arguments
var len2 = args.length
if (!isFunction$9(callback)) {
for (index2 = 1; index2 < len2; index2++) {
item2 = args[index2]
result.push.apply(result, isArray$c(item2) ? item2 : [item2])
}
callback = 0
}
each$l(obj, function (val2, key2) {
if (
(
callback
? callback.call(context2, val2, key2, obj)
: findIndexOf$1(result, function (name2) {
return name2 === key2
}) > -1
)
? case1
: case2
) {
rest[key2] = val2
}
})
return rest
}
}
var helperCreatePickOmit_1 = helperCreatePickOmit$2
var helperCreatePickOmit$1 = helperCreatePickOmit_1
var pick$1 = helperCreatePickOmit$1(1, 0)
var pick_1 = pick$1
var helperCreatePickOmit = helperCreatePickOmit_1
var omit$1 = helperCreatePickOmit(0, 1)
var omit_1 = omit$1
var values$3 = values_1
function first$1(obj) {
return values$3(obj)[0]
}
var first_1 = first$1
var values$2 = values_1
function last$2(obj) {
var list2 = values$2(obj)
return list2[list2.length - 1]
}
var last_1 = last$2
var staticHGKeyRE = staticHGKeyRE_1
var helperGetHGSKeys$1 = helperGetHGSKeys_1
var hasOwnProp$2 = hasOwnProp_1
function has$4(obj, property2) {
if (obj) {
if (hasOwnProp$2(obj, property2)) {
return true
} else {
var prop, arrIndex, objProp, matchs, rest, isHas
var props2 = helperGetHGSKeys$1(property2)
var index2 = 0
var len2 = props2.length
for (rest = obj; index2 < len2; index2++) {
isHas = false
prop = props2[index2]
matchs = prop ? prop.match(staticHGKeyRE) : ''
if (matchs) {
arrIndex = matchs[1]
objProp = matchs[2]
if (arrIndex) {
if (rest[arrIndex]) {
if (hasOwnProp$2(rest[arrIndex], objProp)) {
isHas = true
rest = rest[arrIndex][objProp]
}
}
} else {
if (hasOwnProp$2(rest, objProp)) {
isHas = true
rest = rest[objProp]
}
}
} else {
if (hasOwnProp$2(rest, prop)) {
isHas = true
rest = rest[prop]
}
}
if (isHas) {
if (index2 === len2 - 1) {
return true
}
} else {
break
}
}
}
}
return false
}
var has_1 = has$4
var staticParseInt$3 = staticParseInt_1
var helperGetHGSKeys = helperGetHGSKeys_1
var hasOwnProp$1 = hasOwnProp_1
var sKeyRE = /(.+)?\[(\d+)\]$/
function setDeepProps(obj, key2, isEnd, nextKey, value2) {
if (obj[key2]) {
if (isEnd) {
obj[key2] = value2
}
} else {
var index2
var rest
var currMatchs = key2 ? key2.match(sKeyRE) : null
if (isEnd) {
rest = value2
} else {
var nextMatchs = nextKey ? nextKey.match(sKeyRE) : null
if (nextMatchs && !nextMatchs[1]) {
rest = new Array(staticParseInt$3(nextMatchs[2]) + 1)
} else {
rest = {}
}
}
if (currMatchs) {
if (currMatchs[1]) {
index2 = staticParseInt$3(currMatchs[2])
if (obj[currMatchs[1]]) {
if (isEnd) {
obj[currMatchs[1]][index2] = rest
} else {
if (obj[currMatchs[1]][index2]) {
rest = obj[currMatchs[1]][index2]
} else {
obj[currMatchs[1]][index2] = rest
}
}
} else {
obj[currMatchs[1]] = new Array(index2 + 1)
obj[currMatchs[1]][index2] = rest
}
} else {
obj[currMatchs[2]] = rest
}
} else {
obj[key2] = rest
}
return rest
}
return obj[key2]
}
function set$5(obj, property2, value2) {
if (obj) {
if (
(obj[property2] || hasOwnProp$1(obj, property2)) &&
!isPrototypePolluted(property2)
) {
obj[property2] = value2
} else {
var rest = obj
var props2 = helperGetHGSKeys(property2)
var len2 = props2.length
for (var index2 = 0; index2 < len2; index2++) {
if (isPrototypePolluted(props2[index2])) {
continue
}
var isEnd = index2 === len2 - 1
rest = setDeepProps(
rest,
props2[index2],
isEnd,
isEnd ? null : props2[index2 + 1],
value2
)
}
}
}
return obj
}
function isPrototypePolluted(key2) {
return key2 === '__proto__' || key2 === 'constructor' || key2 === 'prototype'
}
var set_1 = set$5
var isEmpty$1 = isEmpty_1
var isObject$o = isObject_1$1
var isFunction$8 = isFunction_1$1
var property$1 = property_1
var each$k = each_1
function createiterateEmpty(iterate2) {
return function () {
return isEmpty$1(iterate2)
}
}
function groupBy$2(obj, iterate2, context2) {
var groupKey
var result = {}
if (obj) {
if (iterate2 && isObject$o(iterate2)) {
iterate2 = createiterateEmpty(iterate2)
} else if (!isFunction$8(iterate2)) {
iterate2 = property$1(iterate2)
}
each$k(obj, function (val2, key2) {
groupKey = iterate2 ? iterate2.call(context2, val2, key2, obj) : val2
if (result[groupKey]) {
result[groupKey].push(val2)
} else {
result[groupKey] = [val2]
}
})
}
return result
}
var groupBy_1 = groupBy$2
var groupBy$1 = groupBy_1
var objectEach$1 = objectEach_1
function countBy$1(obj, iterate2, context2) {
var result = groupBy$1(obj, iterate2, context2 || this)
objectEach$1(result, function (item2, key2) {
result[key2] = item2.length
})
return result
}
var countBy_1 = countBy$1
function range$1(start2, stop2, step) {
var index2, len2
var result = []
var args = arguments
if (args.length < 2) {
stop2 = args[0]
start2 = 0
}
index2 = start2 >> 0
len2 = stop2 >> 0
if (index2 < stop2) {
step = step >> 0 || 1
for (; index2 < len2; index2 += step) {
result.push(index2)
}
}
return result
}
var range_1 = range$1
var keys$9 = keys_1$1
var slice$8 = slice_1
var includes$2 = includes_1
var arrayEach$6 = arrayEach_1
var assign$7 = assign_1
function destructuring$1(destination, sources) {
if (destination && sources) {
var rest = assign$7.apply(this, [{}].concat(slice$8(arguments, 1)))
var restKeys = keys$9(rest)
arrayEach$6(keys$9(destination), function (key2) {
if (includes$2(restKeys, key2)) {
destination[key2] = rest[key2]
}
})
}
return destination
}
var destructuring_1 = destructuring$1
var helperCreateMinMax = helperCreateMinMax_1
var min$9 = helperCreateMinMax(function (rest, itemVal) {
return rest > itemVal
})
var min_1 = min$9
function helperNumberDecimal$4(numStr) {
return (numStr.split('.')[1] || '').length
}
var helperNumberDecimal_1 = helperNumberDecimal$4
var staticParseInt$2 = staticParseInt_1
function helperStringRepeat$5(str, count2) {
if (str.repeat) {
return str.repeat(count2)
}
var list2 = isNaN(count2) ? [] : new Array(staticParseInt$2(count2))
return list2.join(str) + (list2.length > 0 ? str : '')
}
var helperStringRepeat_1 = helperStringRepeat$5
function helperNumberOffsetPoint$2(str, offsetIndex) {
return (
str.substring(0, offsetIndex) + '.' + str.substring(offsetIndex, str.length)
)
}
var helperNumberOffsetPoint_1 = helperNumberOffsetPoint$2
var helperStringRepeat$4 = helperStringRepeat_1
var helperNumberOffsetPoint$1 = helperNumberOffsetPoint_1
function toNumberString$8(num2) {
var rest = '' + num2
var scienceMatchs = rest.match(
/^([-+]?)((\d+)|((\d+)?[.](\d+)?))e([-+]{1})([0-9]+)$/
)
if (scienceMatchs) {
var isNegative = num2 < 0
var absFlag = isNegative ? '-' : ''
var intNumStr = scienceMatchs[3] || ''
var dIntNumStr = scienceMatchs[5] || ''
var dFloatNumStr = scienceMatchs[6] || ''
var sciencFlag = scienceMatchs[7]
var scienceNumStr = scienceMatchs[8]
var floatOffsetIndex = scienceNumStr - dFloatNumStr.length
var intOffsetIndex = scienceNumStr - intNumStr.length
var dIntOffsetIndex = scienceNumStr - dIntNumStr.length
if (sciencFlag === '+') {
if (intNumStr) {
return absFlag + intNumStr + helperStringRepeat$4('0', scienceNumStr)
}
if (floatOffsetIndex > 0) {
return (
absFlag +
dIntNumStr +
dFloatNumStr +
helperStringRepeat$4('0', floatOffsetIndex)
)
}
return (
absFlag +
dIntNumStr +
helperNumberOffsetPoint$1(dFloatNumStr, scienceNumStr)
)
}
if (intNumStr) {
if (intOffsetIndex > 0) {
return (
absFlag +
'0.' +
helperStringRepeat$4('0', Math.abs(intOffsetIndex)) +
intNumStr
)
}
return absFlag + helperNumberOffsetPoint$1(intNumStr, intOffsetIndex)
}
if (dIntOffsetIndex > 0) {
return (
absFlag +
'0.' +
helperStringRepeat$4('0', Math.abs(dIntOffsetIndex)) +
dIntNumStr +
dFloatNumStr
)
}
return (
absFlag +
helperNumberOffsetPoint$1(dIntNumStr, dIntOffsetIndex) +
dFloatNumStr
)
}
return rest
}
var toNumberString_1 = toNumberString$8
var helperNumberDecimal$3 = helperNumberDecimal_1
var toNumberString$7 = toNumberString_1
function helperMultiply$2(multiplier, multiplicand) {
var str1 = toNumberString$7(multiplier)
var str2 = toNumberString$7(multiplicand)
return (
(parseInt(str1.replace('.', '')) * parseInt(str2.replace('.', ''))) /
Math.pow(10, helperNumberDecimal$3(str1) + helperNumberDecimal$3(str2))
)
}
var helperMultiply_1 = helperMultiply$2
var helperMultiply$1 = helperMultiply_1
var toNumber$5 = toNumber_1
var toNumberString$6 = toNumberString_1
function helperCreateMathNumber$3(name2) {
return function (num2, digits) {
var numRest = toNumber$5(num2)
var rest = numRest
if (numRest) {
digits = digits >> 0
var numStr = toNumberString$6(numRest)
var nums = numStr.split('.')
var intStr = nums[0]
var floatStr = nums[1] || ''
var fStr = floatStr.substring(0, digits + 1)
var subRest = intStr + (fStr ? '.' + fStr : '')
if (digits >= floatStr.length) {
return toNumber$5(subRest)
}
subRest = numRest
if (digits > 0) {
var ratio = Math.pow(10, digits)
rest = Math[name2](helperMultiply$1(subRest, ratio)) / ratio
} else {
rest = Math[name2](subRest)
}
}
return rest
}
}
var helperCreateMathNumber_1 = helperCreateMathNumber$3
var helperCreateMathNumber$2 = helperCreateMathNumber_1
var round$7 = helperCreateMathNumber$2('round')
var round_1 = round$7
var helperCreateMathNumber$1 = helperCreateMathNumber_1
var ceil$3 = helperCreateMathNumber$1('ceil')
var ceil_1 = ceil$3
var helperCreateMathNumber = helperCreateMathNumber_1
var floor$4 = helperCreateMathNumber('floor')
var floor_1 = floor$4
var eqNull$1 = eqNull_1
var isNumber$8 = isNumber_1
var toNumberString$5 = toNumberString_1
function toValueString$e(obj) {
if (isNumber$8(obj)) {
return toNumberString$5(obj)
}
return '' + (eqNull$1(obj) ? '' : obj)
}
var toValueString_1 = toValueString$e
var round$6 = round_1
var toValueString$d = toValueString_1
var helperStringRepeat$3 = helperStringRepeat_1
var helperNumberOffsetPoint = helperNumberOffsetPoint_1
function toFixed$3(num2, digits) {
digits = digits >> 0
var str = toValueString$d(round$6(num2, digits))
var nums = str.split('.')
var intStr = nums[0]
var floatStr = nums[1] || ''
var digitOffsetIndex = digits - floatStr.length
if (digits) {
if (digitOffsetIndex > 0) {
return (
intStr + '.' + floatStr + helperStringRepeat$3('0', digitOffsetIndex)
)
}
return (
intStr + helperNumberOffsetPoint(floatStr, Math.abs(digitOffsetIndex))
)
}
return intStr
}
var toFixed_1 = toFixed$3
var setupDefaults$5 = setupDefaults_1
var round$5 = round_1
var ceil$2 = ceil_1
var floor$3 = floor_1
var isNumber$7 = isNumber_1
var toValueString$c = toValueString_1
var toFixed$2 = toFixed_1
var toNumberString$4 = toNumberString_1
var assign$6 = assign_1
function commafy$1(num2, options2) {
var opts = assign$6({}, setupDefaults$5.commafyOptions, options2)
var optDigits = opts.digits
var isNum = isNumber$7(num2)
var rest, result, isNegative, intStr, floatStr
if (isNum) {
rest = (opts.ceil ? ceil$2 : opts.floor ? floor$3 : round$5)(
num2,
optDigits
)
result = toNumberString$4(
optDigits ? toFixed$2(rest, optDigits) : rest
).split('.')
intStr = result[0]
floatStr = result[1]
isNegative = intStr && rest < 0
if (isNegative) {
intStr = intStr.substring(1, intStr.length)
}
} else {
rest = toValueString$c(num2).replace(/,/g, '')
result = rest ? [rest] : []
intStr = result[0]
}
if (result.length) {
return (
(isNegative ? '-' : '') +
intStr.replace(
new RegExp('(?=(?!(\\b))(.{' + (opts.spaceNumber || 3) + '})+$)', 'g'),
opts.separator || ','
) +
(floatStr ? '.' + floatStr : '')
)
}
return rest
}
var commafy_1 = commafy$1
var staticParseInt$1 = staticParseInt_1
var helperCreateToNumber = helperCreateToNumber_1
var toInteger$1 = helperCreateToNumber(staticParseInt$1)
var toInteger_1 = toInteger$1
var helperMultiply = helperMultiply_1
var toNumber$4 = toNumber_1
function multiply$3(num1, num2) {
var multiplier = toNumber$4(num1)
var multiplicand = toNumber$4(num2)
return helperMultiply(multiplier, multiplicand)
}
var multiply_1 = multiply$3
var helperNumberDecimal$2 = helperNumberDecimal_1
var toNumberString$3 = toNumberString_1
var multiply$2 = multiply_1
function helperNumberAdd$2(addend, augend) {
var str1 = toNumberString$3(addend)
var str2 = toNumberString$3(augend)
var ratio = Math.pow(
10,
Math.max(helperNumberDecimal$2(str1), helperNumberDecimal$2(str2))
)
return (multiply$2(addend, ratio) + multiply$2(augend, ratio)) / ratio
}
var helperNumberAdd_1 = helperNumberAdd$2
var helperNumberAdd$1 = helperNumberAdd_1
var toNumber$3 = toNumber_1
function add$2(num1, num2) {
return helperNumberAdd$1(toNumber$3(num1), toNumber$3(num2))
}
var add_1 = add$2
var helperNumberDecimal$1 = helperNumberDecimal_1
var toNumberString$2 = toNumberString_1
var toNumber$2 = toNumber_1
var toFixed$1 = toFixed_1
function subtract$1(num1, num2) {
var subtrahend = toNumber$2(num1)
var minuend = toNumber$2(num2)
var str1 = toNumberString$2(subtrahend)
var str2 = toNumberString$2(minuend)
var digit1 = helperNumberDecimal$1(str1)
var digit2 = helperNumberDecimal$1(str2)
var ratio = Math.pow(10, Math.max(digit1, digit2))
var precision = digit1 >= digit2 ? digit1 : digit2
return parseFloat(
toFixed$1((subtrahend * ratio - minuend * ratio) / ratio, precision)
)
}
var subtract_1 = subtract$1
var helperNumberDecimal = helperNumberDecimal_1
var toNumberString$1 = toNumberString_1
var multiply$1 = multiply_1
function helperNumberDivide$2(divisor, dividend) {
var str1 = toNumberString$1(divisor)
var str2 = toNumberString$1(dividend)
var divisorDecimal = helperNumberDecimal(str1)
var dividendDecimal = helperNumberDecimal(str2)
var powY = dividendDecimal - divisorDecimal
var isMinus = powY < 0
var multiplicand = Math.pow(10, isMinus ? Math.abs(powY) : powY)
return multiply$1(
str1.replace('.', '') / str2.replace('.', ''),
isMinus ? 1 / multiplicand : multiplicand
)
}
var helperNumberDivide_1 = helperNumberDivide$2
var helperNumberDivide$1 = helperNumberDivide_1
var toNumber$1 = toNumber_1
function divide$1(num1, num2) {
return helperNumberDivide$1(toNumber$1(num1), toNumber$1(num2))
}
var divide_1 = divide$1
var helperNumberAdd = helperNumberAdd_1
var isFunction$7 = isFunction_1$1
var each$j = each_1
var get$4 = get_1
function sum$3(array4, iterate2, context2) {
var result = 0
each$j(
array4,
iterate2
? isFunction$7(iterate2)
? function () {
result = helperNumberAdd(
result,
iterate2.apply(context2, arguments)
)
}
: function (val2) {
result = helperNumberAdd(result, get$4(val2, iterate2))
}
: function (val2) {
result = helperNumberAdd(result, val2)
}
)
return result
}
var sum_1 = sum$3
var helperNumberDivide = helperNumberDivide_1
var getSize$3 = getSize_1
var sum$2 = sum_1
function mean$1(array4, iterate2, context2) {
return helperNumberDivide(
sum$2(array4, iterate2, context2),
getSize$3(array4)
)
}
var mean_1 = mean$1
var staticStrFirst$5 = 'first'
var staticStrFirst_1 = staticStrFirst$5
var staticStrLast$4 = 'last'
var staticStrLast_1 = staticStrLast$4
function helperGetDateFullYear$5(date4) {
return date4.getFullYear()
}
var helperGetDateFullYear_1 = helperGetDateFullYear$5
var staticDayTime$5 = 864e5
var staticDayTime_1 = staticDayTime$5
function helperGetDateMonth$4(date4) {
return date4.getMonth()
}
var helperGetDateMonth_1 = helperGetDateMonth$4
var isDate$4 = isDate_1
var helperGetDateTime$a = helperGetDateTime_1
function isValidDate$c(val2) {
return isDate$4(val2) && !isNaN(helperGetDateTime$a(val2))
}
var isValidDate_1 = isValidDate$c
var staticStrFirst$4 = staticStrFirst_1
var staticStrLast$3 = staticStrLast_1
var staticDayTime$4 = staticDayTime_1
var helperGetDateFullYear$4 = helperGetDateFullYear_1
var helperGetDateTime$9 = helperGetDateTime_1
var helperGetDateMonth$3 = helperGetDateMonth_1
var toStringDate$b = toStringDate_1
var isValidDate$b = isValidDate_1
var isNumber$6 = isNumber_1
function getWhatMonth$5(date4, offsetMonth, offsetDay) {
var monthNum = offsetMonth && !isNaN(offsetMonth) ? offsetMonth : 0
date4 = toStringDate$b(date4)
if (isValidDate$b(date4)) {
if (offsetDay === staticStrFirst$4) {
return new Date(
helperGetDateFullYear$4(date4),
helperGetDateMonth$3(date4) + monthNum,
1
)
} else if (offsetDay === staticStrLast$3) {
return new Date(
helperGetDateTime$9(
getWhatMonth$5(date4, monthNum + 1, staticStrFirst$4)
) - 1
)
} else if (isNumber$6(offsetDay)) {
date4.setDate(offsetDay)
}
if (monthNum) {
var currDate = date4.getDate()
date4.setMonth(helperGetDateMonth$3(date4) + monthNum)
if (currDate !== date4.getDate()) {
date4.setDate(1)
return new Date(helperGetDateTime$9(date4) - staticDayTime$4)
}
}
}
return date4
}
var getWhatMonth_1 = getWhatMonth$5
var staticStrFirst$3 = staticStrFirst_1
var staticStrLast$2 = staticStrLast_1
var helperGetDateFullYear$3 = helperGetDateFullYear_1
var getWhatMonth$4 = getWhatMonth_1
var toStringDate$a = toStringDate_1
var isValidDate$a = isValidDate_1
function getWhatYear$4(date4, offset2, month) {
var number4
date4 = toStringDate$a(date4)
if (isValidDate$a(date4)) {
if (offset2) {
number4 = offset2 && !isNaN(offset2) ? offset2 : 0
date4.setFullYear(helperGetDateFullYear$3(date4) + number4)
}
if (month || !isNaN(month)) {
if (month === staticStrFirst$3) {
return new Date(helperGetDateFullYear$3(date4), 0, 1)
} else if (month === staticStrLast$2) {
date4.setMonth(11)
return getWhatMonth$4(date4, 0, staticStrLast$2)
} else {
date4.setMonth(month)
}
}
}
return date4
}
var getWhatYear_1 = getWhatYear$4
var getWhatMonth$3 = getWhatMonth_1
var toStringDate$9 = toStringDate_1
var isValidDate$9 = isValidDate_1
function getQuarterNumber(date4) {
var month = date4.getMonth()
if (month < 3) {
return 1
} else if (month < 6) {
return 2
} else if (month < 9) {
return 3
}
return 4
}
function getWhatQuarter$1(date4, offset2, day) {
var currMonth,
monthOffset = offset2 && !isNaN(offset2) ? offset2 * 3 : 0
date4 = toStringDate$9(date4)
if (isValidDate$9(date4)) {
currMonth = (getQuarterNumber(date4) - 1) * 3
date4.setMonth(currMonth)
return getWhatMonth$3(date4, monthOffset, day)
}
return date4
}
var getWhatQuarter_1 = getWhatQuarter$1
var staticStrFirst$2 = staticStrFirst_1
var staticStrLast$1 = staticStrLast_1
var staticParseInt = staticParseInt_1
var helperGetDateFullYear$2 = helperGetDateFullYear_1
var helperGetDateMonth$2 = helperGetDateMonth_1
var helperGetDateTime$8 = helperGetDateTime_1
var toStringDate$8 = toStringDate_1
var isValidDate$8 = isValidDate_1
function getWhatDay$2(date4, offset2, mode2) {
date4 = toStringDate$8(date4)
if (isValidDate$8(date4) && !isNaN(offset2)) {
date4.setDate(date4.getDate() + staticParseInt(offset2))
if (mode2 === staticStrFirst$2) {
return new Date(
helperGetDateFullYear$2(date4),
helperGetDateMonth$2(date4),
date4.getDate()
)
} else if (mode2 === staticStrLast$1) {
return new Date(
helperGetDateTime$8(getWhatDay$2(date4, 1, staticStrFirst$2)) - 1
)
}
}
return date4
}
var getWhatDay_1 = getWhatDay$2
function helperStringUpperCase$2(str) {
return str.toUpperCase()
}
var helperStringUpperCase_1 = helperStringUpperCase$2
var staticDayTime$3 = staticDayTime_1
var staticWeekTime$2 = staticDayTime$3 * 7
var staticWeekTime_1 = staticWeekTime$2
var setupDefaults$4 = setupDefaults_1
var staticDayTime$2 = staticDayTime_1
var staticWeekTime$1 = staticWeekTime_1
var helperGetDateTime$7 = helperGetDateTime_1
var toStringDate$7 = toStringDate_1
var isValidDate$7 = isValidDate_1
var isNumber$5 = isNumber_1
function getWhatWeek$2(date4, offsetWeek, offsetDay, firstDay) {
date4 = toStringDate$7(date4)
if (isValidDate$7(date4)) {
var hasCustomDay = isNumber$5(offsetDay)
var hasStartDay = isNumber$5(firstDay)
var whatDayTime = helperGetDateTime$7(date4)
if (hasCustomDay || hasStartDay) {
var viewStartDay = hasStartDay ? firstDay : setupDefaults$4.firstDayOfWeek
var currentDay = date4.getDay()
var customDay = hasCustomDay ? offsetDay : currentDay
if (currentDay !== customDay) {
var offsetNum = 0
if (viewStartDay > currentDay) {
offsetNum = -(7 - viewStartDay + currentDay)
} else if (viewStartDay < currentDay) {
offsetNum = viewStartDay - currentDay
}
if (customDay > viewStartDay) {
whatDayTime +=
((customDay === 0 ? 7 : customDay) - viewStartDay + offsetNum) *
staticDayTime$2
} else if (customDay < viewStartDay) {
whatDayTime +=
(7 - viewStartDay + customDay + offsetNum) * staticDayTime$2
} else {
whatDayTime += offsetNum * staticDayTime$2
}
}
}
if (offsetWeek && !isNaN(offsetWeek)) {
whatDayTime += offsetWeek * staticWeekTime$1
}
return new Date(whatDayTime)
}
return date4
}
var getWhatWeek_1 = getWhatWeek$2
var setupDefaults$3 = setupDefaults_1
var staticWeekTime = staticWeekTime_1
var isNumber$4 = isNumber_1
var isValidDate$6 = isValidDate_1
var getWhatWeek$1 = getWhatWeek_1
var helperGetDateTime$6 = helperGetDateTime_1
function helperCreateGetDateWeek$2(getStartDate) {
return function (date4, firstDay) {
var viewStartDay = isNumber$4(firstDay)
? firstDay
: setupDefaults$3.firstDayOfWeek
var targetDate = getWhatWeek$1(date4, 0, viewStartDay, viewStartDay)
if (isValidDate$6(targetDate)) {
var targetOffsetDate = new Date(
targetDate.getFullYear(),
targetDate.getMonth(),
targetDate.getDate()
)
var targerStartDate = getStartDate(targetDate)
var targetFirstDay = targerStartDate.getDay()
if (targetFirstDay > viewStartDay) {
targerStartDate.setDate(7 - targetFirstDay + viewStartDay + 1)
}
if (targetFirstDay < viewStartDay) {
targerStartDate.setDate(viewStartDay - targetFirstDay + 1)
}
return Math.floor(
(helperGetDateTime$6(targetOffsetDate) -
helperGetDateTime$6(targerStartDate)) /
staticWeekTime +
1
)
}
return NaN
}
}
var helperCreateGetDateWeek_1 = helperCreateGetDateWeek$2
var helperCreateGetDateWeek$1 = helperCreateGetDateWeek_1
var getYearWeek$2 = helperCreateGetDateWeek$1(function (targetDate) {
return new Date(targetDate.getFullYear(), 0, 1)
})
var getYearWeek_1 = getYearWeek$2
var helperGetDateFullYear$1 = helperGetDateFullYear_1
var helperGetDateMonth$1 = helperGetDateMonth_1
function helperGetYMD$1(date4) {
return new Date(
helperGetDateFullYear$1(date4),
helperGetDateMonth$1(date4),
date4.getDate()
)
}
var helperGetYMD_1 = helperGetYMD$1
var helperGetDateTime$5 = helperGetDateTime_1
var helperGetYMD = helperGetYMD_1
function helperGetYMDTime$1(date4) {
return helperGetDateTime$5(helperGetYMD(date4))
}
var helperGetYMDTime_1 = helperGetYMDTime$1
var staticDayTime$1 = staticDayTime_1
var staticStrFirst$1 = staticStrFirst_1
var helperGetYMDTime = helperGetYMDTime_1
var getWhatYear$3 = getWhatYear_1
var toStringDate$6 = toStringDate_1
var isValidDate$5 = isValidDate_1
function getYearDay$2(date4) {
date4 = toStringDate$6(date4)
if (isValidDate$5(date4)) {
return (
Math.floor(
(helperGetYMDTime(date4) -
helperGetYMDTime(getWhatYear$3(date4, 0, staticStrFirst$1))) /
staticDayTime$1
) + 1
)
}
return NaN
}
var getYearDay_1 = getYearDay$2
var toValueString$b = toValueString_1
var isUndefined$4 = isUndefined_1
var helperStringRepeat$2 = helperStringRepeat_1
function padStart$2(str, targetLength, padString) {
var rest = toValueString$b(str)
targetLength = targetLength >> 0
padString = isUndefined$4(padString) ? ' ' : '' + padString
if (rest.padStart) {
return rest.padStart(targetLength, padString)
}
if (targetLength > rest.length) {
targetLength -= rest.length
if (targetLength > padString.length) {
padString += helperStringRepeat$2(
padString,
targetLength / padString.length
)
}
return padString.slice(0, targetLength) + rest
}
return rest
}
var padStart_1 = padStart$2
var setupDefaults$2 = setupDefaults_1
var helperStringUpperCase$1 = helperStringUpperCase_1
var helperGetDateFullYear = helperGetDateFullYear_1
var helperGetDateMonth = helperGetDateMonth_1
var toStringDate$5 = toStringDate_1
var getYearWeek$1 = getYearWeek_1
var getYearDay$1 = getYearDay_1
var assign$5 = assign_1
var isValidDate$4 = isValidDate_1
var isFunction$6 = isFunction_1$1
var padStart$1 = padStart_1
function handleCustomTemplate(date4, formats2, match2, value2) {
var format2 = formats2[match2]
if (format2) {
if (isFunction$6(format2)) {
return format2(value2, match2, date4)
} else {
return format2[value2]
}
}
return value2
}
var dateFormatRE =
/\[([^\]]+)]|y{2,4}|M{1,2}|d{1,2}|H{1,2}|h{1,2}|m{1,2}|s{1,2}|S{1,3}|Z{1,2}|W{1,2}|D{1,3}|[aAeEq]/g
function toDateString$2(date4, format2, options2) {
if (date4) {
date4 = toStringDate$5(date4)
if (isValidDate$4(date4)) {
var result =
format2 ||
setupDefaults$2.parseDateFormat ||
setupDefaults$2.formatString
var hours = date4.getHours()
var apm = hours < 12 ? 'am' : 'pm'
var formats2 = assign$5(
{},
setupDefaults$2.parseDateRules || setupDefaults$2.formatStringMatchs,
options2 ? options2.formats : null
)
var fy = function (match2, length2) {
return ('' + helperGetDateFullYear(date4)).substr(4 - length2)
}
var fM = function (match2, length2) {
return padStart$1(helperGetDateMonth(date4) + 1, length2, '0')
}
var fd2 = function (match2, length2) {
return padStart$1(date4.getDate(), length2, '0')
}
var fH = function (match2, length2) {
return padStart$1(hours, length2, '0')
}
var fh = function (match2, length2) {
return padStart$1(hours <= 12 ? hours : hours - 12, length2, '0')
}
var fm = function (match2, length2) {
return padStart$1(date4.getMinutes(), length2, '0')
}
var fs = function (match2, length2) {
return padStart$1(date4.getSeconds(), length2, '0')
}
var fS = function (match2, length2) {
return padStart$1(date4.getMilliseconds(), length2, '0')
}
var fZ = function (match2, length2) {
var zoneHours = (date4.getTimezoneOffset() / 60) * -1
return handleCustomTemplate(
date4,
formats2,
match2,
(zoneHours >= 0 ? '+' : '-') +
padStart$1(zoneHours, 2, '0') +
(length2 === 1 ? ':' : '') +
'00'
)
}
var fW = function (match2, length2) {
return padStart$1(
handleCustomTemplate(
date4,
formats2,
match2,
getYearWeek$1(
date4,
(options2 ? options2.firstDay : null) ||
setupDefaults$2.firstDayOfWeek
)
),
length2,
'0'
)
}
var fD = function (match2, length2) {
return padStart$1(
handleCustomTemplate(date4, formats2, match2, getYearDay$1(date4)),
length2,
'0'
)
}
var parseDates = {
yyyy: fy,
yy: fy,
MM: fM,
M: fM,
dd: fd2,
d: fd2,
HH: fH,
H: fH,
hh: fh,
h: fh,
mm: fm,
m: fm,
ss: fs,
s: fs,
SSS: fS,
S: fS,
ZZ: fZ,
Z: fZ,
WW: fW,
W: fW,
DDD: fD,
D: fD,
a: function (match2) {
return handleCustomTemplate(date4, formats2, match2, apm)
},
A: function (match2) {
return handleCustomTemplate(
date4,
formats2,
match2,
helperStringUpperCase$1(apm)
)
},
e: function (match2) {
return handleCustomTemplate(date4, formats2, match2, date4.getDay())
},
E: function (match2) {
return handleCustomTemplate(date4, formats2, match2, date4.getDay())
},
q: function (match2) {
return handleCustomTemplate(
date4,
formats2,
match2,
Math.floor((helperGetDateMonth(date4) + 3) / 3)
)
},
}
return result.replace(dateFormatRE, function (match2, skip) {
return (
skip ||
(parseDates[match2]
? parseDates[match2](match2, match2.length)
: match2)
)
})
}
return 'Invalid Date'
}
return ''
}
var toDateString_1 = toDateString$2
var helperGetDateTime$4 = helperGetDateTime_1
var helperNewDate$2 = helperNewDate_1
var now$3 =
Date.now ||
function () {
return helperGetDateTime$4(helperNewDate$2())
}
var now_1 = now$3
var helperGetDateTime$3 = helperGetDateTime_1
var now$2 = now_1
var toStringDate$4 = toStringDate_1
var isDate$3 = isDate_1
var timestamp$1 = function (str, format2) {
if (str) {
var date4 = toStringDate$4(str, format2)
return isDate$3(date4) ? helperGetDateTime$3(date4) : date4
}
return now$2()
}
var timestamp_1 = timestamp$1
var toDateString$1 = toDateString_1
function isDateSame$1(date1, date22, format2) {
if (date1 && date22) {
date1 = toDateString$1(date1, format2)
return date1 !== 'Invalid Date' && date1 === toDateString$1(date22, format2)
}
return false
}
var isDateSame_1 = isDateSame$1
var helperCreateGetDateWeek = helperCreateGetDateWeek_1
var getMonthWeek$1 = helperCreateGetDateWeek(function (targetDate) {
return new Date(targetDate.getFullYear(), targetDate.getMonth(), 1)
})
var getMonthWeek_1 = getMonthWeek$1
var getWhatYear$2 = getWhatYear_1
var toStringDate$3 = toStringDate_1
var isValidDate$3 = isValidDate_1
var isLeapYear$1 = isLeapYear_1
function getDayOfYear$1(date4, year) {
date4 = toStringDate$3(date4)
if (isValidDate$3(date4)) {
return isLeapYear$1(getWhatYear$2(date4, year)) ? 366 : 365
}
return NaN
}
var getDayOfYear_1 = getDayOfYear$1
var staticDayTime = staticDayTime_1
var staticStrFirst = staticStrFirst_1
var staticStrLast = staticStrLast_1
var helperGetDateTime$2 = helperGetDateTime_1
var getWhatMonth$2 = getWhatMonth_1
var toStringDate$2 = toStringDate_1
var isValidDate$2 = isValidDate_1
function getDayOfMonth$1(date4, month) {
date4 = toStringDate$2(date4)
if (isValidDate$2(date4)) {
return (
Math.floor(
(helperGetDateTime$2(getWhatMonth$2(date4, month, staticStrLast)) -
helperGetDateTime$2(getWhatMonth$2(date4, month, staticStrFirst))) /
staticDayTime
) + 1
)
}
return NaN
}
var getDayOfMonth_1 = getDayOfMonth$1
var helperGetDateTime$1 = helperGetDateTime_1
var helperNewDate$1 = helperNewDate_1
var toStringDate$1 = toStringDate_1
var isValidDate$1 = isValidDate_1
var dateDiffRules = [
['yyyy', 31536e6],
['MM', 2592e6],
['dd', 864e5],
['HH', 36e5],
['mm', 6e4],
['ss', 1e3],
['S', 0],
]
function getDateDiff$1(startDate, endDate) {
var startTime, endTime, item2, diffTime, len2, index2
var result = { done: false, time: 0 }
startDate = toStringDate$1(startDate)
endDate = endDate ? toStringDate$1(endDate) : helperNewDate$1()
if (isValidDate$1(startDate) && isValidDate$1(endDate)) {
startTime = helperGetDateTime$1(startDate)
endTime = helperGetDateTime$1(endDate)
if (startTime < endTime) {
diffTime = result.time = endTime - startTime
result.done = true
for (index2 = 0, len2 = dateDiffRules.length; index2 < len2; index2++) {
item2 = dateDiffRules[index2]
if (diffTime >= item2[1]) {
if (index2 === len2 - 1) {
result[item2[0]] = diffTime || 0
} else {
result[item2[0]] = Math.floor(diffTime / item2[1])
diffTime -= result[item2[0]] * item2[1]
}
} else {
result[item2[0]] = 0
}
}
}
}
return result
}
var getDateDiff_1 = getDateDiff$1
var toValueString$a = toValueString_1
var isUndefined$3 = isUndefined_1
var helperStringRepeat$1 = helperStringRepeat_1
function padEnd$1(str, targetLength, padString) {
var rest = toValueString$a(str)
targetLength = targetLength >> 0
padString = isUndefined$3(padString) ? ' ' : '' + padString
if (rest.padEnd) {
return rest.padEnd(targetLength, padString)
}
if (targetLength > rest.length) {
targetLength -= rest.length
if (targetLength > padString.length) {
padString += helperStringRepeat$1(
padString,
targetLength / padString.length
)
}
return rest + padString.slice(0, targetLength)
}
return rest
}
var padEnd_1 = padEnd$1
var toValueString$9 = toValueString_1
var helperStringRepeat = helperStringRepeat_1
function repeat$1(str, count2) {
return helperStringRepeat(toValueString$9(str), count2)
}
var repeat_1 = repeat$1
var toValueString$8 = toValueString_1
function trimRight$3(str) {
return str && str.trimRight
? str.trimRight()
: toValueString$8(str).replace(/[\s\uFEFF\xA0]+$/g, '')
}
var trimRight_1 = trimRight$3
var toValueString$7 = toValueString_1
function trimLeft$3(str) {
return str && str.trimLeft
? str.trimLeft()
: toValueString$7(str).replace(/^[\s\uFEFF\xA0]+/g, '')
}
var trimLeft_1 = trimLeft$3
var trimRight$2 = trimRight_1
var trimLeft$2 = trimLeft_1
function trim$4(str) {
return str && str.trim ? str.trim() : trimRight$2(trimLeft$2(str))
}
var trim_1 = trim$4
var staticEscapeMap$2 = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": ''',
'`': '`',
}
var staticEscapeMap_1 = staticEscapeMap$2
var toValueString$6 = toValueString_1
var keys$8 = keys_1$1
function helperFormatEscaper$2(dataMap) {
var replaceRegexp = new RegExp('(?:' + keys$8(dataMap).join('|') + ')', 'g')
return function (str) {
return toValueString$6(str).replace(replaceRegexp, function (match2) {
return dataMap[match2]
})
}
}
var helperFormatEscaper_1 = helperFormatEscaper$2
var staticEscapeMap$1 = staticEscapeMap_1
var helperFormatEscaper$1 = helperFormatEscaper_1
var escape$2 = helperFormatEscaper$1(staticEscapeMap$1)
var _escape = escape$2
var staticEscapeMap = staticEscapeMap_1
var helperFormatEscaper = helperFormatEscaper_1
var each$i = each_1
var unescapeMap = {}
each$i(staticEscapeMap, function (item2, key2) {
unescapeMap[staticEscapeMap[key2]] = key2
})
var unescape$2 = helperFormatEscaper(unescapeMap)
var _unescape = unescape$2
function helperStringSubstring$2(str, start2, end2) {
return str.substring(start2, end2)
}
var helperStringSubstring_1 = helperStringSubstring$2
function helperStringLowerCase$2(str) {
return str.toLowerCase()
}
var helperStringLowerCase_1 = helperStringLowerCase$2
var toValueString$5 = toValueString_1
var helperStringSubstring$1 = helperStringSubstring_1
var helperStringUpperCase = helperStringUpperCase_1
var helperStringLowerCase$1 = helperStringLowerCase_1
var camelCacheMaps = {}
function camelCase$1(str) {
str = toValueString$5(str)
if (camelCacheMaps[str]) {
return camelCacheMaps[str]
}
var strLen = str.length
var rest = str.replace(/([-]+)/g, function (text2, flag2, index2) {
return index2 && index2 + flag2.length < strLen ? '-' : ''
})
strLen = rest.length
rest = rest
.replace(/([A-Z]+)/g, function (text2, upper, index2) {
var upperLen = upper.length
upper = helperStringLowerCase$1(upper)
if (index2) {
if (upperLen > 2 && index2 + upperLen < strLen) {
return (
helperStringUpperCase(helperStringSubstring$1(upper, 0, 1)) +
helperStringSubstring$1(upper, 1, upperLen - 1) +
helperStringUpperCase(
helperStringSubstring$1(upper, upperLen - 1, upperLen)
)
)
}
return (
helperStringUpperCase(helperStringSubstring$1(upper, 0, 1)) +
helperStringSubstring$1(upper, 1, upperLen)
)
} else {
if (upperLen > 1 && index2 + upperLen < strLen) {
return (
helperStringSubstring$1(upper, 0, upperLen - 1) +
helperStringUpperCase(
helperStringSubstring$1(upper, upperLen - 1, upperLen)
)
)
}
}
return upper
})
.replace(/(-[a-zA-Z])/g, function (text2, upper) {
return helperStringUpperCase(
helperStringSubstring$1(upper, 1, upper.length)
)
})
camelCacheMaps[str] = rest
return rest
}
var camelCase_1 = camelCase$1
var toValueString$4 = toValueString_1
var helperStringSubstring = helperStringSubstring_1
var helperStringLowerCase = helperStringLowerCase_1
var kebabCacheMaps = {}
function kebabCase$1(str) {
str = toValueString$4(str)
if (kebabCacheMaps[str]) {
return kebabCacheMaps[str]
}
if (/^[A-Z]+$/.test(str)) {
return helperStringLowerCase(str)
}
var rest = str
.replace(
/^([a-z])([A-Z]+)([a-z]+)$/,
function (text2, prevLower, upper, nextLower) {
var upperLen = upper.length
if (upperLen > 1) {
return (
prevLower +
'-' +
helperStringLowerCase(
helperStringSubstring(upper, 0, upperLen - 1)
) +
'-' +
helperStringLowerCase(
helperStringSubstring(upper, upperLen - 1, upperLen)
) +
nextLower
)
}
return helperStringLowerCase(prevLower + '-' + upper + nextLower)
}
)
.replace(/^([A-Z]+)([a-z]+)?$/, function (text2, upper, nextLower) {
var upperLen = upper.length
return helperStringLowerCase(
helperStringSubstring(upper, 0, upperLen - 1) +
'-' +
helperStringSubstring(upper, upperLen - 1, upperLen) +
(nextLower || '')
)
})
.replace(
/([a-z]?)([A-Z]+)([a-z]?)/g,
function (text2, prevLower, upper, nextLower, index2) {
var upperLen = upper.length
if (upperLen > 1) {
if (prevLower) {
prevLower += '-'
}
if (nextLower) {
return (
(prevLower || '') +
helperStringLowerCase(
helperStringSubstring(upper, 0, upperLen - 1)
) +
'-' +
helperStringLowerCase(
helperStringSubstring(upper, upperLen - 1, upperLen)
) +
nextLower
)
}
}
return (
(prevLower || '') +
(index2 ? '-' : '') +
helperStringLowerCase(upper) +
(nextLower || '')
)
}
)
rest = rest.replace(/([-]+)/g, function (text2, flag2, index2) {
return index2 && index2 + flag2.length < rest.length ? '-' : ''
})
kebabCacheMaps[str] = rest
return rest
}
var kebabCase_1 = kebabCase$1
var toValueString$3 = toValueString_1
function startsWith$1(str, val2, startIndex) {
var rest = toValueString$3(str)
return (
(arguments.length === 1 ? rest : rest.substring(startIndex)).indexOf(
val2
) === 0
)
}
var startsWith_1 = startsWith$1
var toValueString$2 = toValueString_1
function endsWith$1(str, val2, startIndex) {
var rest = toValueString$2(str)
var argsLen = arguments.length
return (
argsLen > 1 &&
(argsLen > 2
? rest.substring(0, startIndex).indexOf(val2) === startIndex - 1
: rest.indexOf(val2) === rest.length - 1)
)
}
var endsWith_1 = endsWith$1
var setupDefaults$1 = setupDefaults_1
var toValueString$1 = toValueString_1
var trim$3 = trim_1
var get$3 = get_1
function template$2(str, args, options2) {
return toValueString$1(str).replace(
(options2 || setupDefaults$1).tmplRE || /\{{2}([.\w[\]\s]+)\}{2}/g,
function (match2, key2) {
return get$3(args, trim$3(key2))
}
)
}
var template_1 = template$2
var template$1 = template_1
function toFormatString$1(str, obj) {
return template$1(str, obj, { tmplRE: /\{([.\w[\]\s]+)\}/g })
}
var toFormatString_1 = toFormatString$1
function noop$4() {}
var noop_1 = noop$4
var slice$7 = slice_1
function bind$8(callback, context2) {
var args = slice$7(arguments, 2)
return function () {
return callback.apply(context2, slice$7(arguments).concat(args))
}
}
var bind_1 = bind$8
var slice$6 = slice_1
function once$1(callback, context2) {
var done = false
var rest = null
var args = slice$6(arguments, 2)
return function () {
if (done) {
return rest
}
rest = callback.apply(context2, slice$6(arguments).concat(args))
done = true
return rest
}
}
var once_1 = once$1
var slice$5 = slice_1
function after$1(count2, callback, context2) {
var runCount = 0
var rests = []
return function () {
var args = arguments
runCount++
if (runCount <= count2) {
rests.push(args[0])
}
if (runCount >= count2) {
callback.apply(context2, [rests].concat(slice$5(args)))
}
}
}
var after_1 = after$1
var slice$4 = slice_1
function before$1(count2, callback, context2) {
var runCount = 0
var rests = []
context2 = context2 || this
return function () {
var args = arguments
runCount++
if (runCount < count2) {
rests.push(args[0])
callback.apply(context2, [rests].concat(slice$4(args)))
}
}
}
var before_1 = before$1
function throttle$3(callback, wait, options2) {
var args, context2
var opts = options2 || {}
var runFlag = false
var timeout = 0
var optLeading = 'leading' in opts ? opts.leading : true
var optTrailing = 'trailing' in opts ? opts.trailing : false
var runFn = function () {
{
runFlag = true
callback.apply(context2, args)
timeout = setTimeout(endFn, wait)
}
}
var endFn = function () {
timeout = 0
if (!runFlag && optTrailing === true) {
runFn()
}
}
var cancelFn = function () {
var rest = timeout !== 0
clearTimeout(timeout)
args = null
context2 = null
runFlag = false
timeout = 0
return rest
}
var throttled = function () {
args = arguments
context2 = this
runFlag = false
if (timeout === 0) {
if (optLeading === true) {
runFn()
} else if (optTrailing === true) {
timeout = setTimeout(endFn, wait)
}
}
}
throttled.cancel = cancelFn
return throttled
}
var throttle_1 = throttle$3
function debounce$1(callback, wait, options2) {
var args, context2
var opts = options2 || {}
var runFlag = false
var timeout = 0
var isLeading = typeof options2 === 'boolean'
var optLeading = 'leading' in opts ? opts.leading : isLeading
var optTrailing = 'trailing' in opts ? opts.trailing : !isLeading
var runFn = function () {
{
runFlag = true
timeout = 0
callback.apply(context2, args)
}
}
var endFn = function () {
if (optLeading === true) {
timeout = 0
}
if (!runFlag && optTrailing === true) {
runFn()
}
}
var cancelFn = function () {
var rest = timeout !== 0
clearTimeout(timeout)
args = null
context2 = null
timeout = 0
return rest
}
var debounced = function () {
runFlag = false
args = arguments
context2 = this
if (timeout === 0) {
if (optLeading === true) {
runFn()
}
} else {
clearTimeout(timeout)
}
timeout = setTimeout(endFn, wait)
}
debounced.cancel = cancelFn
return debounced
}
var debounce_1 = debounce$1
var slice$3 = slice_1
function delay$1(callback, wait) {
var args = slice$3(arguments, 2)
var context2 = this
return setTimeout(function () {
callback.apply(context2, args)
}, wait)
}
var delay_1 = delay$1
var staticDecodeURIComponent$2 = decodeURIComponent
var staticDecodeURIComponent_1 = staticDecodeURIComponent$2
var staticDecodeURIComponent$1 = staticDecodeURIComponent_1
var arrayEach$5 = arrayEach_1
var isString$4 = isString_1
function unserialize$2(str) {
var items
var result = {}
if (str && isString$4(str)) {
arrayEach$5(str.split('&'), function (param) {
items = param.split('=')
result[staticDecodeURIComponent$1(items[0])] = staticDecodeURIComponent$1(
items[1] || ''
)
})
}
return result
}
var unserialize_1 = unserialize$2
var staticEncodeURIComponent$2 = encodeURIComponent
var staticEncodeURIComponent_1 = staticEncodeURIComponent$2
var staticEncodeURIComponent$1 = staticEncodeURIComponent_1
var each$h = each_1
var isArray$b = isArray_1$1
var isNull$1 = isNull_1
var isUndefined$2 = isUndefined_1
var isPlainObject$2 = isPlainObject_1
function stringifyParams(resultVal, resultKey, isArr) {
var _arr
var result = []
each$h(resultVal, function (item2, key2) {
_arr = isArray$b(item2)
if (isPlainObject$2(item2) || _arr) {
result = result.concat(
stringifyParams(item2, resultKey + '[' + key2 + ']', _arr)
)
} else {
result.push(
staticEncodeURIComponent$1(
resultKey + '[' + (isArr ? '' : key2) + ']'
) +
'=' +
staticEncodeURIComponent$1(isNull$1(item2) ? '' : item2)
)
}
})
return result
}
function serialize$1(query) {
var _arr
var params2 = []
each$h(query, function (item2, key2) {
if (!isUndefined$2(item2)) {
_arr = isArray$b(item2)
if (isPlainObject$2(item2) || _arr) {
params2 = params2.concat(stringifyParams(item2, key2, _arr))
} else {
params2.push(
staticEncodeURIComponent$1(key2) +
'=' +
staticEncodeURIComponent$1(isNull$1(item2) ? '' : item2)
)
}
}
})
return params2.join('&').replace(/%20/g, '+')
}
var serialize_1 = serialize$1
var staticStrUndefined$1 = staticStrUndefined_1
var staticLocation$4 = typeof location === staticStrUndefined$1 ? 0 : location
var staticLocation_1 = staticLocation$4
var staticLocation$3 = staticLocation_1
function helperGetLocatOrigin$2() {
return staticLocation$3
? staticLocation$3.origin ||
staticLocation$3.protocol + '//' + staticLocation$3.host
: ''
}
var helperGetLocatOrigin_1 = helperGetLocatOrigin$2
var staticLocation$2 = staticLocation_1
var unserialize$1 = unserialize_1
var helperGetLocatOrigin$1 = helperGetLocatOrigin_1
function parseURLQuery(uri) {
return unserialize$1(uri.split('?')[1] || '')
}
function parseUrl$2(url2) {
var hashs, portText, searchs, parsed
var href = '' + url2
if (href.indexOf('//') === 0) {
href = (staticLocation$2 ? staticLocation$2.protocol : '') + href
} else if (href.indexOf('/') === 0) {
href = helperGetLocatOrigin$1() + href
}
searchs = href.replace(/#.*/, '').match(/(\?.*)/)
parsed = {
href,
hash: '',
host: '',
hostname: '',
protocol: '',
port: '',
search: searchs && searchs[1] && searchs[1].length > 1 ? searchs[1] : '',
}
parsed.path = href
.replace(/^([a-z0-9.+-]*:)\/\//, function (text2, protocol) {
parsed.protocol = protocol
return ''
})
.replace(/^([a-z0-9.+-]*)(:\d+)?\/?/, function (text2, hostname, port2) {
portText = port2 || ''
parsed.port = portText.replace(':', '')
parsed.hostname = hostname
parsed.host = hostname + portText
return '/'
})
.replace(/(#.*)/, function (text2, hash2) {
parsed.hash = hash2.length > 1 ? hash2 : ''
return ''
})
hashs = parsed.hash.match(/#((.*)\?|(.*))/)
parsed.pathname = parsed.path.replace(/(\?|#.*).*/, '')
parsed.origin = parsed.protocol + '//' + parsed.host
parsed.hashKey = hashs ? hashs[2] || hashs[1] || '' : ''
parsed.hashQuery = parseURLQuery(parsed.hash)
parsed.searchQuery = parseURLQuery(parsed.search)
return parsed
}
var parseUrl_1 = parseUrl$2
var staticLocation$1 = staticLocation_1
var helperGetLocatOrigin = helperGetLocatOrigin_1
var lastIndexOf$1 = lastIndexOf_1
function getBaseURL$1() {
if (staticLocation$1) {
var pathname = staticLocation$1.pathname
var lastIndex = lastIndexOf$1(pathname, '/') + 1
return (
helperGetLocatOrigin() +
(lastIndex === pathname.length
? pathname
: pathname.substring(0, lastIndex))
)
}
return ''
}
var getBaseURL_1 = getBaseURL$1
var staticLocation = staticLocation_1
var parseUrl$1 = parseUrl_1
function locat$1() {
return staticLocation ? parseUrl$1(staticLocation.href) : {}
}
var locat_1 = locat$1
var setupDefaults = setupDefaults_1
var staticDocument$1 = staticDocument_1
var staticDecodeURIComponent = staticDecodeURIComponent_1
var staticEncodeURIComponent = staticEncodeURIComponent_1
var isArray$a = isArray_1$1
var isObject$n = isObject_1$1
var isDate$2 = isDate_1
var isUndefined$1 = isUndefined_1
var includes$1 = includes_1
var keys$7 = keys_1$1
var assign$4 = assign_1
var arrayEach$4 = arrayEach_1
var helperNewDate = helperNewDate_1
var helperGetDateTime = helperGetDateTime_1
var getWhatYear$1 = getWhatYear_1
var getWhatMonth$1 = getWhatMonth_1
var getWhatDay$1 = getWhatDay_1
function toCookieUnitTime(unit, expires) {
var num2 = parseFloat(expires)
var nowdate = helperNewDate()
var time2 = helperGetDateTime(nowdate)
switch (unit) {
case 'y':
return helperGetDateTime(getWhatYear$1(nowdate, num2))
case 'M':
return helperGetDateTime(getWhatMonth$1(nowdate, num2))
case 'd':
return helperGetDateTime(getWhatDay$1(nowdate, num2))
case 'h':
case 'H':
return time2 + num2 * 60 * 60 * 1e3
case 'm':
return time2 + num2 * 60 * 1e3
case 's':
return time2 + num2 * 1e3
}
return time2
}
function toCookieUTCString(date4) {
return (isDate$2(date4) ? date4 : new Date(date4)).toUTCString()
}
function cookie$1(name2, value2, options2) {
if (staticDocument$1) {
var opts, expires, values2, result, cookies2, keyIndex
var inserts = []
var args = arguments
if (isArray$a(name2)) {
inserts = name2
} else if (args.length > 1) {
inserts = [assign$4({ name: name2, value: value2 }, options2)]
} else if (isObject$n(name2)) {
inserts = [name2]
}
if (inserts.length > 0) {
arrayEach$4(inserts, function (obj) {
opts = assign$4({}, setupDefaults.cookies, obj)
values2 = []
if (opts.name) {
expires = opts.expires
values2.push(
staticEncodeURIComponent(opts.name) +
'=' +
staticEncodeURIComponent(
isObject$n(opts.value) ? JSON.stringify(opts.value) : opts.value
)
)
if (expires) {
if (isNaN(expires)) {
expires = expires.replace(
/^([0-9]+)(y|M|d|H|h|m|s)$/,
function (text2, num2, unit) {
return toCookieUTCString(toCookieUnitTime(unit, num2))
}
)
} else if (/^[0-9]{11,13}$/.test(expires) || isDate$2(expires)) {
expires = toCookieUTCString(expires)
} else {
expires = toCookieUTCString(toCookieUnitTime('d', expires))
}
opts.expires = expires
}
arrayEach$4(['expires', 'path', 'domain', 'secure'], function (key2) {
if (!isUndefined$1(opts[key2])) {
values2.push(
opts[key2] && key2 === 'secure' ? key2 : key2 + '=' + opts[key2]
)
}
})
}
staticDocument$1.cookie = values2.join('; ')
})
return true
} else {
result = {}
cookies2 = staticDocument$1.cookie
if (cookies2) {
arrayEach$4(cookies2.split('; '), function (val2) {
keyIndex = val2.indexOf('=')
result[staticDecodeURIComponent(val2.substring(0, keyIndex))] =
staticDecodeURIComponent(val2.substring(keyIndex + 1) || '')
})
}
return args.length === 1 ? result[name2] : result
}
}
return false
}
function hasCookieItem(value2) {
return includes$1(cookieKeys(), value2)
}
function getCookieItem(name2) {
return cookie$1(name2)
}
function setCookieItem(name2, value2, options2) {
cookie$1(name2, value2, options2)
return cookie$1
}
function removeCookieItem(name2, options2) {
cookie$1(
name2,
'',
assign$4({ expires: -1 }, setupDefaults.cookies, options2)
)
}
function cookieKeys() {
return keys$7(cookie$1())
}
function cookieJson() {
return cookie$1()
}
assign$4(cookie$1, {
has: hasCookieItem,
set: setCookieItem,
setItem: setCookieItem,
get: getCookieItem,
getItem: getCookieItem,
remove: removeCookieItem,
removeItem: removeCookieItem,
keys: cookieKeys,
getJSON: cookieJson,
})
var cookie_1 = cookie$1
var staticStrUndefined = staticStrUndefined_1
var staticDocument = staticDocument_1
var staticWindow = staticWindow_1
var assign$3 = assign_1
var arrayEach$3 = arrayEach_1
function isBrowseStorage(storage2) {
try {
var testKey = '__xe_t'
storage2.setItem(testKey, 1)
storage2.removeItem(testKey)
return true
} catch (e2) {
return false
}
}
function isBrowseType(type4) {
return navigator.userAgent.indexOf(type4) > -1
}
function browse$2() {
var $body, isChrome, isEdge
var isMobile = false
var isLocalStorage = false
var isSessionStorage = false
var result = {
isNode: false,
isMobile,
isPC: false,
isDoc: !!staticDocument,
}
if (!staticWindow && typeof process !== staticStrUndefined) {
result.isNode = true
} else {
isEdge = isBrowseType('Edge')
isChrome = isBrowseType('Chrome')
isMobile =
/(Android|webOS|iPhone|iPad|iPod|SymbianOS|BlackBerry|Windows Phone)/.test(
navigator.userAgent
)
if (result.isDoc) {
$body = staticDocument.body || staticDocument.documentElement
arrayEach$3(['webkit', 'khtml', 'moz', 'ms', 'o'], function (core2) {
result['-' + core2] = !!$body[core2 + 'MatchesSelector']
})
}
try {
isLocalStorage = isBrowseStorage(staticWindow.localStorage)
} catch (e2) {}
try {
isSessionStorage = isBrowseStorage(staticWindow.sessionStorage)
} catch (e2) {}
assign$3(result, {
edge: isEdge,
firefox: isBrowseType('Firefox'),
msie: !isEdge && result['-ms'],
safari: !isChrome && !isEdge && isBrowseType('Safari'),
isMobile,
isPC: !isMobile,
isLocalStorage,
isSessionStorage,
})
}
return result
}
var browse_1 = browse$2
var XEUtils = ctor
var assign$2 = assign_1
var objectEach = objectEach_1
var lastObjectEach = lastObjectEach_1
var objectMap = objectMap_1
var merge$1 = merge_1
var map$2 = map_1
var some = some_1
var every = every_1
var includeArrays = includeArrays_1
var arrayEach$2 = arrayEach_1
var lastArrayEach = lastArrayEach_1
var uniq = uniq_1
var union = union_1
var toArray = toArray_1
var sortBy = sortBy_1
var orderBy = orderBy_1
var shuffle = shuffle_1
var sample = sample_1
var slice$2 = slice_1
var filter$1 = filter_1
var findKey = findKey_1
var includes = includes_1
var find$2 = find_1
var findLast = findLast_1
var reduce$1 = reduce_1
var copyWithin = copyWithin_1
var chunk = chunk_1
var zip = zip_1
var unzip = unzip_1
var zipObject = zipObject_1
var flatten = flatten_1
var pluck = pluck_1
var invoke = invoke_1
var toArrayTree = toArrayTree_1
var toTreeArray = toTreeArray_1
var findTree = findTree_1
var eachTree = eachTree_1
var mapTree = mapTree_1
var filterTree = filterTree_1
var searchTree = searchTree_1
var arrayIndexOf = arrayIndexOf_1
var arrayLastIndexOf = arrayLastIndexOf_1
var hasOwnProp = hasOwnProp_1
var isArray$9 = isArray_1$1
var isNull = isNull_1
var isNumberNaN = _isNaN
var isUndefined = isUndefined_1
var isFunction$5 = isFunction_1$1
var isObject$m = isObject_1$1
var isString$3 = isString_1
var isPlainObject$1 = isPlainObject_1
var isLeapYear = isLeapYear_1
var isDate$1 = isDate_1
var eqNull = eqNull_1
var each$g = each_1
var forOf = forOf_1
var lastForOf = lastForOf_1
var indexOf$3 = indexOf_1
var lastIndexOf = lastIndexOf_1
var keys$6 = keys_1$1
var values$1 = values_1
var clone$7 = clone_1
var getSize$2 = getSize_1
var lastEach = lastEach_1
var remove = remove_1
var clear$3 = clear_1
var isNumberFinite = _isFinite
var isFloat = isFloat_1
var isInteger = isInteger_1
var isBoolean$1 = isBoolean_1
var isNumber$3 = isNumber_1
var isRegExp$4 = isRegExp_1
var isError = isError_1
var isTypeError = isTypeError_1
var isEmpty = isEmpty_1
var isSymbol$3 = isSymbol_1
var isArguments$2 = isArguments_1$1
var isElement = isElement_1
var isDocument = isDocument_1
var isWindow = isWindow_1
var isFormData = isFormData_1
var isMap$2 = isMap_1$1
var isWeakMap = isWeakMap_1
var isSet$2 = isSet_1$1
var isWeakSet = isWeakSet_1
var isMatch = isMatch_1
var isEqual = isEqual_1
var isEqualWith = isEqualWith_1
var getType = getType_1
var uniqueId = uniqueId_1
var findIndexOf = findIndexOf_1
var findLastIndexOf = findLastIndexOf_1
var toStringJSON = toStringJSON_1
var toJSONString = toJSONString_1
var entries = entries_1
var pick = pick_1
var omit = omit_1
var first = first_1
var last$1 = last_1
var has$3 = has_1
var get$2 = get_1
var set$4 = set_1
var groupBy = groupBy_1
var countBy = countBy_1
var range = range_1
var destructuring = destructuring_1
var random$1 = random_1
var max$6 = max_1
var min$8 = min_1
var commafy = commafy_1
var round$4 = round_1
var ceil$1 = ceil_1
var floor$2 = floor_1
var toFixed = toFixed_1
var toInteger = toInteger_1
var toNumber = toNumber_1
var toNumberString = toNumberString_1
var add$1 = add_1
var subtract = subtract_1
var multiply = multiply_1
var divide = divide_1
var sum$1 = sum_1
var mean = mean_1
var getWhatYear = getWhatYear_1
var getWhatQuarter = getWhatQuarter_1
var getWhatMonth = getWhatMonth_1
var getWhatDay = getWhatDay_1
var toStringDate = toStringDate_1
var toDateString = toDateString_1
var now$1 = now_1
var timestamp = timestamp_1
var isValidDate = isValidDate_1
var isDateSame = isDateSame_1
var getWhatWeek = getWhatWeek_1
var getYearDay = getYearDay_1
var getYearWeek = getYearWeek_1
var getMonthWeek = getMonthWeek_1
var getDayOfYear = getDayOfYear_1
var getDayOfMonth = getDayOfMonth_1
var getDateDiff = getDateDiff_1
var padEnd = padEnd_1
var padStart = padStart_1
var repeat = repeat_1
var trim$2 = trim_1
var trimRight$1 = trimRight_1
var trimLeft$1 = trimLeft_1
var escape$1 = _escape
var unescape$1 = _unescape
var camelCase = camelCase_1
var kebabCase = kebabCase_1
var startsWith = startsWith_1
var endsWith = endsWith_1
var template = template_1
var toFormatString = toFormatString_1
var toValueString = toValueString_1
var noop$3 = noop_1
var property = property_1
var bind$7 = bind_1
var once = once_1
var after = after_1
var before = before_1
var throttle$2 = throttle_1
var debounce = debounce_1
var delay = delay_1
var unserialize = unserialize_1
var serialize = serialize_1
var parseUrl = parseUrl_1
var getBaseURL = getBaseURL_1
var locat = locat_1
var cookie = cookie_1
var browse$1 = browse_1
assign$2(XEUtils, {
assign: assign$2,
objectEach,
lastObjectEach,
objectMap,
merge: merge$1,
uniq,
union,
sortBy,
orderBy,
shuffle,
sample,
some,
every,
slice: slice$2,
filter: filter$1,
find: find$2,
findLast,
findKey,
includes,
arrayIndexOf,
arrayLastIndexOf,
map: map$2,
reduce: reduce$1,
copyWithin,
chunk,
zip,
unzip,
zipObject,
flatten,
toArray,
includeArrays,
pluck,
invoke,
arrayEach: arrayEach$2,
lastArrayEach,
toArrayTree,
toTreeArray,
findTree,
eachTree,
mapTree,
filterTree,
searchTree,
hasOwnProp,
eqNull,
isNaN: isNumberNaN,
isFinite: isNumberFinite,
isUndefined,
isArray: isArray$9,
isFloat,
isInteger,
isFunction: isFunction$5,
isBoolean: isBoolean$1,
isString: isString$3,
isNumber: isNumber$3,
isRegExp: isRegExp$4,
isObject: isObject$m,
isPlainObject: isPlainObject$1,
isDate: isDate$1,
isError,
isTypeError,
isEmpty,
isNull,
isSymbol: isSymbol$3,
isArguments: isArguments$2,
isElement,
isDocument,
isWindow,
isFormData,
isMap: isMap$2,
isWeakMap,
isSet: isSet$2,
isWeakSet,
isLeapYear,
isMatch,
isEqual,
isEqualWith,
getType,
uniqueId,
getSize: getSize$2,
indexOf: indexOf$3,
lastIndexOf,
findIndexOf,
findLastIndexOf,
toStringJSON,
toJSONString,
keys: keys$6,
values: values$1,
entries,
pick,
omit,
first,
last: last$1,
each: each$g,
forOf,
lastForOf,
lastEach,
has: has$3,
get: get$2,
set: set$4,
groupBy,
countBy,
clone: clone$7,
clear: clear$3,
remove,
range,
destructuring,
random: random$1,
min: min$8,
max: max$6,
commafy,
round: round$4,
ceil: ceil$1,
floor: floor$2,
toFixed,
toNumber,
toNumberString,
toInteger,
add: add$1,
subtract,
multiply,
divide,
sum: sum$1,
mean,
now: now$1,
timestamp,
isValidDate,
isDateSame,
toStringDate,
toDateString,
getWhatYear,
getWhatQuarter,
getWhatMonth,
getWhatWeek,
getWhatDay,
getYearDay,
getYearWeek,
getMonthWeek,
getDayOfYear,
getDayOfMonth,
getDateDiff,
trim: trim$2,
trimLeft: trimLeft$1,
trimRight: trimRight$1,
escape: escape$1,
unescape: unescape$1,
camelCase,
kebabCase,
repeat,
padStart,
padEnd,
startsWith,
endsWith,
template,
toFormatString,
toString: toValueString,
toValueString,
noop: noop$3,
property,
bind: bind$7,
once,
after,
before,
throttle: throttle$2,
debounce,
delay,
unserialize,
serialize,
parseUrl,
getBaseURL,
locat,
browse: browse$1,
cookie,
})
var xeUtils = XEUtils
var index_common = {}
;(function (exports2) {
Object.defineProperty(exports2, '__esModule', {
value: true,
})
exports2['default'] = exports2.VXETablePluginElement = void 0
var _xeUtils = _interopRequireDefault(xeUtils)
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : { default: obj }
}
function _defineProperty2(obj, key2, value2) {
if (key2 in obj) {
Object.defineProperty(obj, key2, {
value: value2,
enumerable: true,
configurable: true,
writable: true,
})
} else {
obj[key2] = value2
}
return obj
}
function isEmptyValue2(cellValue) {
return cellValue === null || cellValue === void 0 || cellValue === ''
}
function getModelProp(renderOpts) {
return 'value'
}
function getModelEvent2(renderOpts) {
return 'input'
}
function getChangeEvent2(renderOpts) {
var type4 = 'change'
switch (renderOpts.name) {
case 'ElAutocomplete':
type4 = 'select'
break
case 'ElInput':
case 'ElInputNumber':
type4 = 'input'
break
}
return type4
}
function parseDate2(value2, props2) {
return value2 && props2.valueFormat
? _xeUtils['default'].toStringDate(value2, props2.valueFormat)
: value2
}
function getFormatDate2(value2, props2, defaultFormat) {
return _xeUtils['default'].toDateString(
parseDate2(value2, props2),
props2.format || defaultFormat
)
}
function getFormatDates(values2, props2, separator, defaultFormat) {
return _xeUtils['default']
.map(values2, function (date4) {
return getFormatDate2(date4, props2, defaultFormat)
})
.join(separator)
}
function equalDaterange(cellValue, data2, props2, defaultFormat) {
cellValue = getFormatDate2(cellValue, props2, defaultFormat)
return (
cellValue >= getFormatDate2(data2[0], props2, defaultFormat) &&
cellValue <= getFormatDate2(data2[1], props2, defaultFormat)
)
}
function getCellEditFilterProps2(renderOpts, params2, value2, defaultProps2) {
var vSize = params2.$table.vSize
return _xeUtils['default'].assign(
vSize
? {
size: vSize,
}
: {},
defaultProps2,
renderOpts.props,
_defineProperty2({}, getModelProp(), value2)
)
}
function getItemProps(renderOpts, params2, value2, defaultProps2) {
var vSize = params2.$form.vSize
return _xeUtils['default'].assign(
vSize
? {
size: vSize,
}
: {},
defaultProps2,
renderOpts.props,
_defineProperty2({}, getModelProp(), value2)
)
}
function formatText2(cellValue) {
return '' + (isEmptyValue2(cellValue) ? '' : cellValue)
}
function getCellLabelVNs2(h2, renderOpts, params2, cellLabel) {
var placeholder = renderOpts.placeholder
return [
h2(
'span',
{
class: 'vxe-cell--label',
},
placeholder && isEmptyValue2(cellLabel)
? [
h2(
'span',
{
class: 'vxe-cell--placeholder',
},
formatText2(placeholder)
),
]
: formatText2(cellLabel)
),
]
}
function getNativeOns(renderOpts, params2) {
var nativeEvents = renderOpts.nativeEvents
var nativeOns = {}
_xeUtils['default'].objectEach(nativeEvents, function (func, key2) {
nativeOns[key2] = function () {
for (
var _len = arguments.length, args = new Array(_len), _key = 0;
_key < _len;
_key++
) {
args[_key] = arguments[_key]
}
func.apply(void 0, [params2].concat(args))
}
})
return nativeOns
}
function getOns(renderOpts, params2, inputFunc, changeFunc) {
var events2 = renderOpts.events
var modelEvent = getModelEvent2()
var changeEvent = getChangeEvent2(renderOpts)
var isSameEvent = changeEvent === modelEvent
var ons = {}
_xeUtils['default'].objectEach(events2, function (func, key2) {
ons[key2] = function () {
for (
var _len2 = arguments.length, args = new Array(_len2), _key2 = 0;
_key2 < _len2;
_key2++
) {
args[_key2] = arguments[_key2]
}
func.apply(void 0, [params2].concat(args))
}
})
if (inputFunc) {
ons[modelEvent] = function (targetEvnt) {
inputFunc(targetEvnt)
if (events2 && events2[modelEvent]) {
events2[modelEvent](params2, targetEvnt)
}
if (isSameEvent && changeFunc) {
changeFunc(targetEvnt)
}
}
}
if (!isSameEvent && changeFunc) {
ons[changeEvent] = function () {
for (
var _len3 = arguments.length, args = new Array(_len3), _key3 = 0;
_key3 < _len3;
_key3++
) {
args[_key3] = arguments[_key3]
}
changeFunc.apply(void 0, args)
if (events2 && events2[changeEvent]) {
events2[changeEvent].apply(events2, [params2].concat(args))
}
}
}
return ons
}
function getEditOns2(renderOpts, params2) {
var $table = params2.$table,
row = params2.row,
column = params2.column
return getOns(
renderOpts,
params2,
function (value2) {
_xeUtils['default'].set(row, column.property, value2)
},
function () {
$table.updateStatus(params2)
}
)
}
function getFilterOns2(renderOpts, params2, option2, changeFunc) {
return getOns(
renderOpts,
params2,
function (value2) {
option2.data = value2
},
changeFunc
)
}
function getItemOns2(renderOpts, params2) {
var $form = params2.$form,
data2 = params2.data,
property2 = params2.property
return getOns(
renderOpts,
params2,
function (value2) {
_xeUtils['default'].set(data2, property2, value2)
},
function () {
$form.updateStatus(params2)
}
)
}
function matchCascaderData(index2, list2, values2, labels) {
var val2 = values2[index2]
if (list2 && values2.length > index2) {
_xeUtils['default'].each(list2, function (item2) {
if (item2.value === val2) {
labels.push(item2.label)
matchCascaderData(++index2, item2.children, values2, labels)
}
})
}
}
function getSelectCellValue2(renderOpts, params2) {
var _renderOpts$options = renderOpts.options,
options2 = _renderOpts$options === void 0 ? [] : _renderOpts$options,
optionGroups = renderOpts.optionGroups,
_renderOpts$props = renderOpts.props,
props2 = _renderOpts$props === void 0 ? {} : _renderOpts$props,
_renderOpts$optionPro = renderOpts.optionProps,
optionProps =
_renderOpts$optionPro === void 0 ? {} : _renderOpts$optionPro,
_renderOpts$optionGro = renderOpts.optionGroupProps,
optionGroupProps =
_renderOpts$optionGro === void 0 ? {} : _renderOpts$optionGro
var row = params2.row,
column = params2.column
var $table = params2.$table
var labelProp = optionProps.label || 'label'
var valueProp = optionProps.value || 'value'
var groupOptions = optionGroupProps.options || 'options'
var cellValue = _xeUtils['default'].get(row, column.property)
var colid = column.id
var rest
var cellData
if (props2.filterable) {
var fullAllDataRowMap = $table.fullAllDataRowMap
var cacheCell = fullAllDataRowMap.has(row)
if (cacheCell) {
rest = fullAllDataRowMap.get(row)
cellData = rest.cellData
if (!cellData) {
cellData = fullAllDataRowMap.get(row).cellData = {}
}
}
if (rest && cellData[colid] && cellData[colid].value === cellValue) {
return cellData[colid].label
}
}
if (!isEmptyValue2(cellValue)) {
var selectlabel = _xeUtils['default']
.map(
props2.multiple ? cellValue : [cellValue],
optionGroups
? function (value2) {
var selectItem
for (var index2 = 0; index2 < optionGroups.length; index2++) {
selectItem = _xeUtils['default'].find(
optionGroups[index2][groupOptions],
function (item2) {
return item2[valueProp] === value2
}
)
if (selectItem) {
break
}
}
return selectItem ? selectItem[labelProp] : value2
}
: function (value2) {
var selectItem = _xeUtils['default'].find(
options2,
function (item2) {
return item2[valueProp] === value2
}
)
return selectItem ? selectItem[labelProp] : value2
}
)
.join(', ')
if (cellData && options2 && options2.length) {
cellData[colid] = {
value: cellValue,
label: selectlabel,
}
}
return selectlabel
}
return ''
}
function getCascaderCellValue(renderOpts, params2) {
var _renderOpts$props2 = renderOpts.props,
props2 = _renderOpts$props2 === void 0 ? {} : _renderOpts$props2
var row = params2.row,
column = params2.column
var cellValue = _xeUtils['default'].get(row, column.property)
var values2 = cellValue || []
var labels = []
matchCascaderData(0, props2.options, values2, labels)
return (
props2.showAllLevels === false
? labels.slice(labels.length - 1, labels.length)
: labels
).join(' '.concat(props2.separator || '/', ' '))
}
function getDatePickerCellValue(renderOpts, params2) {
var _renderOpts$props3 = renderOpts.props,
props2 = _renderOpts$props3 === void 0 ? {} : _renderOpts$props3
var row = params2.row,
column = params2.column
var _props$rangeSeparator = props2.rangeSeparator,
rangeSeparator =
_props$rangeSeparator === void 0 ? '-' : _props$rangeSeparator
var cellValue = _xeUtils['default'].get(row, column.property)
switch (props2.type) {
case 'week':
cellValue = getFormatDate2(cellValue, props2, 'yyyywWW')
break
case 'month':
cellValue = getFormatDate2(cellValue, props2, 'yyyy-MM')
break
case 'year':
cellValue = getFormatDate2(cellValue, props2, 'yyyy')
break
case 'dates':
cellValue = getFormatDates(cellValue, props2, ', ', 'yyyy-MM-dd')
break
case 'daterange':
cellValue = getFormatDates(
cellValue,
props2,
' '.concat(rangeSeparator, ' '),
'yyyy-MM-dd'
)
break
case 'datetimerange':
cellValue = getFormatDates(
cellValue,
props2,
' '.concat(rangeSeparator, ' '),
'yyyy-MM-dd HH:ss:mm'
)
break
case 'monthrange':
cellValue = getFormatDates(
cellValue,
props2,
' '.concat(rangeSeparator, ' '),
'yyyy-MM'
)
break
default:
cellValue = getFormatDate2(cellValue, props2, 'yyyy-MM-dd')
}
return cellValue
}
function getTimePickerCellValue(renderOpts, params2) {
var _renderOpts$props4 = renderOpts.props,
props2 = _renderOpts$props4 === void 0 ? {} : _renderOpts$props4
var row = params2.row,
column = params2.column
var isRange = props2.isRange,
_props$format = props2.format,
format2 = _props$format === void 0 ? 'hh:mm:ss' : _props$format,
_props$rangeSeparator2 = props2.rangeSeparator,
rangeSeparator =
_props$rangeSeparator2 === void 0 ? '-' : _props$rangeSeparator2
var cellValue = _xeUtils['default'].get(row, column.property)
if (cellValue && isRange) {
cellValue = _xeUtils['default']
.map(cellValue, function (date4) {
return _xeUtils['default'].toDateString(
parseDate2(date4, props2),
format2
)
})
.join(' '.concat(rangeSeparator, ' '))
}
return _xeUtils['default'].toDateString(
parseDate2(cellValue, props2),
format2
)
}
function createEditRender(defaultProps2) {
return function (h2, renderOpts, params2) {
var row = params2.row,
column = params2.column
var attrs = renderOpts.attrs
var cellValue = _xeUtils['default'].get(row, column.property)
return [
h2(renderOpts.name, {
attrs,
props: getCellEditFilterProps2(
renderOpts,
params2,
cellValue,
defaultProps2
),
on: getEditOns2(renderOpts, params2),
nativeOn: getNativeOns(renderOpts, params2),
}),
]
}
}
function defaultButtonEditRender2(h2, renderOpts, params2) {
var attrs = renderOpts.attrs
return [
h2(
'el-button',
{
attrs,
props: getCellEditFilterProps2(renderOpts, params2, null),
on: getOns(renderOpts, params2),
nativeOn: getNativeOns(renderOpts, params2),
},
cellText(h2, renderOpts.content)
),
]
}
function defaultButtonsEditRender2(h2, renderOpts, params2) {
return renderOpts.children.map(function (childRenderOpts) {
return defaultButtonEditRender2(h2, childRenderOpts, params2)[0]
})
}
function createFilterRender(defaultProps2) {
return function (h2, renderOpts, params2) {
var column = params2.column
var name2 = renderOpts.name,
attrs = renderOpts.attrs
var nativeOn = getNativeOns(renderOpts, params2)
return [
h2(
'div',
{
class: 'vxe-table--filter-element-wrapper',
},
column.filters.map(function (option2, oIndex) {
var optionValue = option2.data
return h2(name2, {
key: oIndex,
attrs,
props: getCellEditFilterProps2(
renderOpts,
params2,
optionValue,
defaultProps2
),
on: getFilterOns2(renderOpts, params2, option2, function () {
handleConfirmFilter2(params2, !!option2.data, option2)
}),
nativeOn,
})
})
),
]
}
}
function handleConfirmFilter2(params2, checked2, option2) {
var $panel = params2.$panel
$panel.changeOption({}, checked2, option2)
}
function defaultFuzzyFilterMethod(params2) {
var option2 = params2.option,
row = params2.row,
column = params2.column
var data2 = option2.data
var cellValue = _xeUtils['default'].get(row, column.property)
return _xeUtils['default'].toValueString(cellValue).indexOf(data2) > -1
}
function defaultExactFilterMethod(params2) {
var option2 = params2.option,
row = params2.row,
column = params2.column
var data2 = option2.data
var cellValue = _xeUtils['default'].get(row, column.property)
return cellValue === data2
}
function renderOptions(h2, options2, optionProps) {
var labelProp = optionProps.label || 'label'
var valueProp = optionProps.value || 'value'
return _xeUtils['default'].map(options2, function (item2, oIndex) {
return h2('el-option', {
key: oIndex,
props: {
value: item2[valueProp],
label: item2[labelProp],
disabled: item2.disabled,
},
})
})
}
function cellText(h2, cellValue) {
return [formatText2(cellValue)]
}
function createFormItemRender(defaultProps2) {
return function (h2, renderOpts, params2) {
var data2 = params2.data,
property2 = params2.property
var name2 = renderOpts.name
var attrs = renderOpts.attrs
var itemValue = _xeUtils['default'].get(data2, property2)
return [
h2(name2, {
attrs,
props: getItemProps(renderOpts, params2, itemValue, defaultProps2),
on: getItemOns2(renderOpts, params2),
nativeOn: getNativeOns(renderOpts, params2),
}),
]
}
}
function defaultButtonItemRender2(h2, renderOpts, params2) {
var attrs = renderOpts.attrs
var props2 = getItemProps(renderOpts, params2, null)
return [
h2(
'el-button',
{
attrs,
props: props2,
on: getOns(renderOpts, params2),
nativeOn: getNativeOns(renderOpts, params2),
},
cellText(h2, renderOpts.content || props2.content)
),
]
}
function defaultButtonsItemRender2(h2, renderOpts, params2) {
return renderOpts.children.map(function (childRenderOpts) {
return defaultButtonItemRender2(h2, childRenderOpts, params2)[0]
})
}
function createExportMethod(getExportCellValue) {
return function (params2) {
var row = params2.row,
column = params2.column,
options2 = params2.options
return options2 && options2.original
? _xeUtils['default'].get(row, column.property)
: getExportCellValue(column.editRender || column.cellRender, params2)
}
}
function createFormItemRadioAndCheckboxRender() {
return function (h2, renderOpts, params2) {
var name2 = renderOpts.name,
_renderOpts$options2 = renderOpts.options,
options2 = _renderOpts$options2 === void 0 ? [] : _renderOpts$options2,
_renderOpts$optionPro2 = renderOpts.optionProps,
optionProps =
_renderOpts$optionPro2 === void 0 ? {} : _renderOpts$optionPro2,
attrs = renderOpts.attrs
var data2 = params2.data,
property2 = params2.property
var labelProp = optionProps.label || 'label'
var valueProp = optionProps.value || 'value'
var itemValue = _xeUtils['default'].get(data2, property2)
return [
h2(
''.concat(name2, 'Group'),
{
attrs,
props: getItemProps(renderOpts, params2, itemValue),
on: getItemOns2(renderOpts, params2),
nativeOn: getNativeOns(renderOpts, params2),
},
options2.map(function (option2, oIndex) {
return h2(
name2,
{
key: oIndex,
props: {
label: option2[valueProp],
disabled: option2.disabled,
},
},
option2[labelProp]
)
})
),
]
}
}
function getEventTargetNode2(evnt, container, className) {
var targetElem
var target2 = evnt.target
while (target2 && target2.nodeType && target2 !== document) {
if (
className &&
target2.className &&
target2.className.split &&
target2.className.split(' ').indexOf(className) > -1
) {
targetElem = target2
} else if (target2 === container) {
return {
flag: className ? !!targetElem : true,
container,
targetElem,
}
}
target2 = target2.parentNode
}
return {
flag: false,
}
}
function handleClearEvent(params2, e2) {
var bodyElem = document.body
var evnt = params2.$event || e2
if (
getEventTargetNode2(evnt, bodyElem, 'el-autocomplete-suggestion').flag ||
getEventTargetNode2(evnt, bodyElem, 'el-select-dropdown').flag ||
getEventTargetNode2(evnt, bodyElem, 'el-cascader__dropdown').flag ||
getEventTargetNode2(evnt, bodyElem, 'el-cascader-menus').flag ||
getEventTargetNode2(evnt, bodyElem, 'el-time-panel').flag ||
getEventTargetNode2(evnt, bodyElem, 'el-picker-panel').flag ||
getEventTargetNode2(evnt, bodyElem, 'el-color-dropdown').flag
) {
return false
}
}
var VXETablePluginElement2 = {
install: function install3(vxetable) {
if (!/^(2|3)\./.test(vxetable.version)) {
// console.error("[vxe-table-plugin-element] Version vxe-table 3.x is required");
}
vxetable.renderer.mixin({
ElAutocomplete: {
autofocus: 'input.el-input__inner',
renderDefault: createEditRender(),
renderEdit: createEditRender(),
renderFilter: createFilterRender(),
defaultFilterMethod: defaultExactFilterMethod,
renderItem: createFormItemRender(),
renderItemContent: createFormItemRender(),
},
ElInput: {
autofocus: 'input.el-input__inner',
renderDefault: createEditRender(),
renderEdit: createEditRender(),
renderFilter: createFilterRender(),
defaultFilterMethod: defaultFuzzyFilterMethod,
renderItem: createFormItemRender(),
renderItemContent: createFormItemRender(),
},
ElInputNumber: {
autofocus: 'input.el-input__inner',
renderDefault: createEditRender(),
renderEdit: createEditRender(),
renderFilter: createFilterRender(),
defaultFilterMethod: defaultFuzzyFilterMethod,
renderItem: createFormItemRender(),
renderItemContent: createFormItemRender(),
},
ElSelect: {
renderEdit: function renderEdit(h2, renderOpts, params2) {
var _renderOpts$options3 = renderOpts.options,
options2 =
_renderOpts$options3 === void 0 ? [] : _renderOpts$options3,
optionGroups = renderOpts.optionGroups,
_renderOpts$optionPro3 = renderOpts.optionProps,
optionProps =
_renderOpts$optionPro3 === void 0 ? {} : _renderOpts$optionPro3,
_renderOpts$optionGro2 = renderOpts.optionGroupProps,
optionGroupProps =
_renderOpts$optionGro2 === void 0 ? {} : _renderOpts$optionGro2
var row = params2.row,
column = params2.column
var attrs = renderOpts.attrs
var cellValue = _xeUtils['default'].get(row, column.property)
var props2 = getCellEditFilterProps2(renderOpts, params2, cellValue)
var on2 = getEditOns2(renderOpts, params2)
var nativeOn = getNativeOns(renderOpts, params2)
if (optionGroups) {
var groupOptions = optionGroupProps.options || 'options'
var groupLabel = optionGroupProps.label || 'label'
return [
h2(
'el-select',
{
attrs,
props: props2,
on: on2,
nativeOn,
},
_xeUtils['default'].map(
optionGroups,
function (group, gIndex) {
return h2(
'el-option-group',
{
key: gIndex,
props: {
label: group[groupLabel],
},
},
renderOptions(h2, group[groupOptions], optionProps)
)
}
)
),
]
}
return [
h2(
'el-select',
{
props: props2,
attrs,
on: on2,
nativeOn,
},
renderOptions(h2, options2, optionProps)
),
]
},
renderCell: function renderCell(h2, renderOpts, params2) {
return getCellLabelVNs2(
h2,
renderOpts,
params2,
getSelectCellValue2(renderOpts, params2)
)
},
renderFilter: function renderFilter(h2, renderOpts, params2) {
var _renderOpts$options4 = renderOpts.options,
options2 =
_renderOpts$options4 === void 0 ? [] : _renderOpts$options4,
optionGroups = renderOpts.optionGroups,
_renderOpts$optionPro4 = renderOpts.optionProps,
optionProps =
_renderOpts$optionPro4 === void 0 ? {} : _renderOpts$optionPro4,
_renderOpts$optionGro3 = renderOpts.optionGroupProps,
optionGroupProps =
_renderOpts$optionGro3 === void 0 ? {} : _renderOpts$optionGro3
var groupOptions = optionGroupProps.options || 'options'
var groupLabel = optionGroupProps.label || 'label'
var column = params2.column
var attrs = renderOpts.attrs
var nativeOn = getNativeOns(renderOpts, params2)
return [
h2(
'div',
{
class: 'vxe-table--filter-element-wrapper',
},
optionGroups
? column.filters.map(function (option2, oIndex) {
var optionValue = option2.data
var props2 = getCellEditFilterProps2(
renderOpts,
params2,
optionValue
)
return h2(
'el-select',
{
key: oIndex,
attrs,
props: props2,
on: getFilterOns2(
renderOpts,
params2,
option2,
function () {
handleConfirmFilter2(
params2,
props2.multiple
? option2.data && option2.data.length > 0
: !_xeUtils['default'].eqNull(option2.data),
option2
)
}
),
nativeOn,
},
_xeUtils['default'].map(
optionGroups,
function (group, gIndex) {
return h2(
'el-option-group',
{
key: gIndex,
props: {
label: group[groupLabel],
},
},
renderOptions(
h2,
group[groupOptions],
optionProps
)
)
}
)
)
})
: column.filters.map(function (option2, oIndex) {
var optionValue = option2.data
var props2 = getCellEditFilterProps2(
renderOpts,
params2,
optionValue
)
return h2(
'el-select',
{
key: oIndex,
attrs,
props: props2,
on: getFilterOns2(
renderOpts,
params2,
option2,
function () {
handleConfirmFilter2(
params2,
props2.multiple
? option2.data && option2.data.length > 0
: !_xeUtils['default'].eqNull(option2.data),
option2
)
}
),
nativeOn,
},
renderOptions(h2, options2, optionProps)
)
})
),
]
},
defaultFilterMethod: function defaultFilterMethod(params2) {
var option2 = params2.option,
row = params2.row,
column = params2.column
var data2 = option2.data
var property2 = column.property,
renderOpts = column.filterRender
var _renderOpts$props5 = renderOpts.props,
props2 = _renderOpts$props5 === void 0 ? {} : _renderOpts$props5
var cellValue = _xeUtils['default'].get(row, property2)
if (props2.multiple) {
if (_xeUtils['default'].isArray(cellValue)) {
return _xeUtils['default'].includeArrays(cellValue, data2)
}
return data2.indexOf(cellValue) > -1
}
return cellValue == data2
},
renderItem: function renderItem(h2, renderOpts, params2) {
var _renderOpts$options5 = renderOpts.options,
options2 =
_renderOpts$options5 === void 0 ? [] : _renderOpts$options5,
optionGroups = renderOpts.optionGroups,
_renderOpts$optionPro5 = renderOpts.optionProps,
optionProps =
_renderOpts$optionPro5 === void 0 ? {} : _renderOpts$optionPro5,
_renderOpts$optionGro4 = renderOpts.optionGroupProps,
optionGroupProps =
_renderOpts$optionGro4 === void 0 ? {} : _renderOpts$optionGro4
var data2 = params2.data,
property2 = params2.property
var attrs = renderOpts.attrs
var itemValue = _xeUtils['default'].get(data2, property2)
var props2 = getItemProps(renderOpts, params2, itemValue)
var on2 = getItemOns2(renderOpts, params2)
var nativeOn = getNativeOns(renderOpts, params2)
if (optionGroups) {
var groupOptions = optionGroupProps.options || 'options'
var groupLabel = optionGroupProps.label || 'label'
return [
h2(
'el-select',
{
attrs,
props: props2,
on: on2,
nativeOn,
},
_xeUtils['default'].map(
optionGroups,
function (group, gIndex) {
return h2(
'el-option-group',
{
props: {
label: group[groupLabel],
},
key: gIndex,
},
renderOptions(h2, group[groupOptions], optionProps)
)
}
)
),
]
}
return [
h2(
'el-select',
{
attrs,
props: props2,
on: on2,
nativeOn,
},
renderOptions(h2, options2, optionProps)
),
]
},
renderItemContent: function renderItemContent(
h2,
renderOpts,
params2
) {
var _renderOpts$options6 = renderOpts.options,
options2 =
_renderOpts$options6 === void 0 ? [] : _renderOpts$options6,
optionGroups = renderOpts.optionGroups,
_renderOpts$optionPro6 = renderOpts.optionProps,
optionProps =
_renderOpts$optionPro6 === void 0 ? {} : _renderOpts$optionPro6,
_renderOpts$optionGro5 = renderOpts.optionGroupProps,
optionGroupProps =
_renderOpts$optionGro5 === void 0 ? {} : _renderOpts$optionGro5
var data2 = params2.data,
property2 = params2.property
var attrs = renderOpts.attrs
var itemValue = _xeUtils['default'].get(data2, property2)
var props2 = getItemProps(renderOpts, params2, itemValue)
var on2 = getItemOns2(renderOpts, params2)
var nativeOn = getNativeOns(renderOpts, params2)
if (optionGroups) {
var groupOptions = optionGroupProps.options || 'options'
var groupLabel = optionGroupProps.label || 'label'
return [
h2(
'el-select',
{
attrs,
props: props2,
on: on2,
nativeOn,
},
_xeUtils['default'].map(
optionGroups,
function (group, gIndex) {
return h2(
'el-option-group',
{
props: {
label: group[groupLabel],
},
key: gIndex,
},
renderOptions(h2, group[groupOptions], optionProps)
)
}
)
),
]
}
return [
h2(
'el-select',
{
attrs,
props: props2,
on: on2,
nativeOn,
},
renderOptions(h2, options2, optionProps)
),
]
},
cellExportMethod: createExportMethod(getSelectCellValue2),
exportMethod: createExportMethod(getSelectCellValue2),
},
ElCascader: {
renderEdit: createEditRender(),
renderCell: function renderCell(h2, renderOpts, params2) {
return getCellLabelVNs2(
h2,
renderOpts,
params2,
getCascaderCellValue(renderOpts, params2)
)
},
renderItem: createFormItemRender(),
renderItemContent: createFormItemRender(),
cellExportMethod: createExportMethod(getCascaderCellValue),
exportMethod: createExportMethod(getCascaderCellValue),
},
ElDatePicker: {
renderEdit: createEditRender(),
renderCell: function renderCell(h2, renderOpts, params2) {
return getCellLabelVNs2(
h2,
renderOpts,
params2,
getDatePickerCellValue(renderOpts, params2)
)
},
renderFilter: function renderFilter(h2, renderOpts, params2) {
var column = params2.column
var attrs = renderOpts.attrs
var nativeOn = getNativeOns(renderOpts, params2)
return [
h2(
'div',
{
class: 'vxe-table--filter-element-wrapper',
},
column.filters.map(function (option2, oIndex) {
var optionValue = option2.data
return h2(renderOpts.name, {
key: oIndex,
attrs,
props: getCellEditFilterProps2(
renderOpts,
params2,
optionValue
),
on: getFilterOns2(
renderOpts,
params2,
option2,
function () {
handleConfirmFilter2(params2, !!option2.data, option2)
}
),
nativeOn,
})
})
),
]
},
defaultFilterMethod: function defaultFilterMethod(params2) {
var option2 = params2.option,
row = params2.row,
column = params2.column
var data2 = option2.data
var renderOpts = column.filterRender
var _renderOpts$props6 = renderOpts.props,
props2 = _renderOpts$props6 === void 0 ? {} : _renderOpts$props6
var cellValue = _xeUtils['default'].get(row, column.property)
if (data2) {
switch (props2.type) {
case 'daterange':
return equalDaterange(cellValue, data2, props2, 'yyyy-MM-dd')
case 'datetimerange':
return equalDaterange(
cellValue,
data2,
props2,
'yyyy-MM-dd HH:ss:mm'
)
case 'monthrange':
return equalDaterange(cellValue, data2, props2, 'yyyy-MM')
default:
return cellValue === data2
}
}
return false
},
renderItem: createFormItemRender(),
renderItemContent: createFormItemRender(),
cellExportMethod: createExportMethod(getDatePickerCellValue),
exportMethod: createExportMethod(getDatePickerCellValue),
},
ElTimePicker: {
renderEdit: createEditRender(),
renderCell: function renderCell(h2, renderOpts, params2) {
return getCellLabelVNs2(
h2,
renderOpts,
params2,
getTimePickerCellValue(renderOpts, params2)
)
},
renderItem: createFormItemRender(),
renderItemContent: createFormItemRender(),
cellExportMethod: createExportMethod(getTimePickerCellValue),
exportMethod: createExportMethod(getTimePickerCellValue),
},
ElTimeSelect: {
renderEdit: createEditRender(),
renderItem: createFormItemRender(),
renderItemContent: createFormItemRender(),
},
ElRate: {
renderDefault: createEditRender(),
renderEdit: createEditRender(),
renderFilter: createFilterRender(),
defaultFilterMethod: defaultExactFilterMethod,
renderItem: createFormItemRender(),
renderItemContent: createFormItemRender(),
},
ElSwitch: {
renderDefault: createEditRender(),
renderEdit: createEditRender(),
renderFilter: function renderFilter(h2, renderOpts, params2) {
var column = params2.column
var name2 = renderOpts.name,
attrs = renderOpts.attrs
var nativeOn = getNativeOns(renderOpts, params2)
return [
h2(
'div',
{
class: 'vxe-table--filter-element-wrapper',
},
column.filters.map(function (option2, oIndex) {
var optionValue = option2.data
return h2(name2, {
key: oIndex,
attrs,
props: getCellEditFilterProps2(
renderOpts,
params2,
optionValue
),
on: getFilterOns2(
renderOpts,
params2,
option2,
function () {
handleConfirmFilter2(
params2,
_xeUtils['default'].isBoolean(option2.data),
option2
)
}
),
nativeOn,
})
})
),
]
},
defaultFilterMethod: defaultExactFilterMethod,
renderItem: createFormItemRender(),
renderItemContent: createFormItemRender(),
},
ElSlider: {
renderDefault: createEditRender(),
renderEdit: createEditRender(),
renderFilter: createFilterRender(),
defaultFilterMethod: defaultExactFilterMethod,
renderItem: createFormItemRender(),
renderItemContent: createFormItemRender(),
},
ElRadio: {
renderItem: createFormItemRadioAndCheckboxRender(),
renderItemContent: createFormItemRadioAndCheckboxRender(),
},
ElCheckbox: {
renderItem: createFormItemRadioAndCheckboxRender(),
renderItemContent: createFormItemRadioAndCheckboxRender(),
},
ElButton: {
renderDefault: defaultButtonEditRender2,
renderItem: defaultButtonItemRender2,
renderItemContent: defaultButtonItemRender2,
},
ElButtons: {
renderDefault: defaultButtonsEditRender2,
renderItem: defaultButtonsItemRender2,
renderItemContent: defaultButtonsItemRender2,
},
})
vxetable.interceptor.add('event.clearFilter', handleClearEvent)
vxetable.interceptor.add('event.clearActived', handleClearEvent)
vxetable.interceptor.add('event.clearAreas', handleClearEvent)
},
}
exports2.VXETablePluginElement = VXETablePluginElement2
if (typeof window !== 'undefined' && window.VXETable && window.VXETable.use) {
window.VXETable.use(VXETablePluginElement2)
}
var _default2 = VXETablePluginElement2
exports2['default'] = _default2
})(index_common)
var VXETablePluginElement =
/* @__PURE__ */ getDefaultExportFromCjs(index_common)
var style$2 = ''
var iconPrefix = 'vxe-icon-'
var GlobalConfig = {
size: null,
zIndex: 999,
version: 0,
emptyCell: '\u3000',
table: {
fit: true,
showHeader: true,
animat: true,
delayHover: 250,
autoResize: true,
minHeight: 144,
resizeConfig: {
refreshDelay: 250,
},
radioConfig: {
strict: true,
},
checkboxConfig: {
strict: true,
},
tooltipConfig: {
enterable: true,
},
validConfig: {
showMessage: true,
autoClear: true,
message: 'inline',
msgMode: 'single',
},
columnConfig: {
maxFixedSize: 4,
},
sortConfig: {
showIcon: true,
},
filterConfig: {
showIcon: true,
},
treeConfig: {
rowField: 'id',
parentField: 'parentId',
childrenField: 'children',
hasChildField: 'hasChild',
mapChildrenField: '_X_ROW_CHILD',
indent: 20,
showIcon: true,
},
expandConfig: {
showIcon: true,
},
editConfig: {
showIcon: true,
showAsterisk: true,
},
importConfig: {
modes: ['insert', 'covering'],
},
exportConfig: {
modes: ['current', 'selected'],
},
printConfig: {
modes: ['current', 'selected'],
},
mouseConfig: {
extension: true,
},
keyboardConfig: {
isEsc: true,
},
areaConfig: {
selectCellByHeader: true,
},
clipConfig: {
isCopy: true,
isCut: true,
isPaste: true,
},
fnrConfig: {
isFind: true,
isReplace: true,
},
scrollX: {
gt: 60,
},
scrollY: {
gt: 100,
},
},
export: {
types: {},
},
icon: {
LOADING: iconPrefix + 'spinner roll vxe-loading--default-icon',
TABLE_SORT_ASC: iconPrefix + 'caret-up',
TABLE_SORT_DESC: iconPrefix + 'caret-down',
TABLE_FILTER_NONE: iconPrefix + 'funnel',
TABLE_FILTER_MATCH: iconPrefix + 'funnel',
TABLE_EDIT: iconPrefix + 'edit',
TABLE_HELP: iconPrefix + 'question-circle-fill',
TABLE_TREE_LOADED: iconPrefix + 'spinner roll',
TABLE_TREE_OPEN: iconPrefix + 'caret-right rotate90',
TABLE_TREE_CLOSE: iconPrefix + 'caret-right',
TABLE_EXPAND_LOADED: iconPrefix + 'spinner roll',
TABLE_EXPAND_OPEN: iconPrefix + 'arrow-right rotate90',
TABLE_EXPAND_CLOSE: iconPrefix + 'arrow-right',
TABLE_CHECKBOX_CHECKED: iconPrefix + 'checkbox-checked',
TABLE_CHECKBOX_UNCHECKED: iconPrefix + 'checkbox-unchecked',
TABLE_CHECKBOX_INDETERMINATE: iconPrefix + 'checkbox-indeterminate',
TABLE_RADIO_CHECKED: iconPrefix + 'radio-checked',
TABLE_RADIO_UNCHECKED: iconPrefix + 'radio-unchecked',
BUTTON_DROPDOWN: iconPrefix + 'arrow-down',
BUTTON_LOADING: iconPrefix + 'spinner roll',
SELECT_LOADED: iconPrefix + 'spinner roll',
SELECT_OPEN: iconPrefix + 'caret-down rotate180',
SELECT_CLOSE: iconPrefix + 'caret-down',
PAGER_JUMP_PREV: iconPrefix + 'arrow-double-left',
PAGER_JUMP_NEXT: iconPrefix + 'arrow-double-right',
PAGER_PREV_PAGE: iconPrefix + 'arrow-left',
PAGER_NEXT_PAGE: iconPrefix + 'arrow-right',
PAGER_JUMP_MORE: iconPrefix + 'ellipsis-h',
INPUT_CLEAR: iconPrefix + 'error-circle-fill',
INPUT_PWD: iconPrefix + 'eye-fill',
INPUT_SHOW_PWD: iconPrefix + 'eye-fill-close',
INPUT_PREV_NUM: iconPrefix + 'caret-up',
INPUT_NEXT_NUM: iconPrefix + 'caret-down',
INPUT_DATE: iconPrefix + 'calendar',
INPUT_SEARCH: iconPrefix + 'search',
MODAL_ZOOM_IN: iconPrefix + 'square',
MODAL_ZOOM_OUT: iconPrefix + 'maximize',
MODAL_CLOSE: iconPrefix + 'close',
MODAL_INFO: iconPrefix + 'info-circle-fill',
MODAL_SUCCESS: iconPrefix + 'success-circle-fill',
MODAL_WARNING: iconPrefix + 'warnion-circle-fill',
MODAL_ERROR: iconPrefix + 'error-circle-fill',
MODAL_QUESTION: iconPrefix + 'question-circle-fill',
MODAL_LOADING: iconPrefix + 'spinner roll',
TOOLBAR_TOOLS_REFRESH: iconPrefix + 'repeat',
TOOLBAR_TOOLS_REFRESH_LOADING: iconPrefix + 'repeat roll',
TOOLBAR_TOOLS_IMPORT: iconPrefix + 'upload',
TOOLBAR_TOOLS_EXPORT: iconPrefix + 'download',
TOOLBAR_TOOLS_PRINT: iconPrefix + 'print',
TOOLBAR_TOOLS_FULLSCREEN: iconPrefix + 'fullscreen',
TOOLBAR_TOOLS_MINIMIZE: iconPrefix + 'minimize',
TOOLBAR_TOOLS_CUSTOM: iconPrefix + 'custom-column',
TOOLBAR_TOOLS_FIXED_LEFT: iconPrefix + 'fixed-left',
TOOLBAR_TOOLS_FIXED_LEFT_ACTIVED: iconPrefix + 'fixed-left-fill',
TOOLBAR_TOOLS_FIXED_RIGHT: iconPrefix + 'fixed-right',
TOOLBAR_TOOLS_FIXED_RIGHT_ACTIVED: iconPrefix + 'fixed-right-fill',
FORM_PREFIX: iconPrefix + 'question-circle-fill',
FORM_SUFFIX: iconPrefix + 'question-circle-fill',
FORM_FOLDING: iconPrefix + 'arrow-up rotate180',
FORM_UNFOLDING: iconPrefix + 'arrow-up',
},
grid: {
formConfig: {
enabled: true,
},
pagerConfig: {
enabled: true,
},
toolbarConfig: {
enabled: true,
},
proxyConfig: {
enabled: true,
autoLoad: true,
message: true,
props: {
list: null,
result: 'result',
total: 'page.total',
message: 'message',
},
},
},
tooltip: {
trigger: 'hover',
theme: 'dark',
enterDelay: 500,
leaveDelay: 300,
},
pager: {},
form: {
validConfig: {
showMessage: true,
autoPos: true,
},
tooltipConfig: {
enterable: true,
},
titleAsterisk: true,
},
input: {
startDate: new Date(1900, 0, 1),
endDate: new Date(2100, 0, 1),
startDay: 1,
selectDay: 1,
digits: 2,
controls: true,
},
textarea: {},
select: {
multiCharOverflow: 8,
},
toolbar: {
custom: {
allowFixed: true,
showFooter: true,
},
},
button: {},
radio: {
strict: true,
},
radioButton: {
strict: true,
},
radioGroup: {
strict: true,
},
checkbox: {},
switch: {},
modal: {
top: 15,
showHeader: true,
minWidth: 340,
minHeight: 140,
lockView: true,
mask: true,
duration: 3e3,
marginSize: 0,
dblclickZoom: true,
showTitleOverflow: true,
animat: true,
showClose: true,
draggable: true,
storageKey: 'VXE_MODAL_POSITION',
},
list: {
scrollY: {
enabled: true,
gt: 100,
},
},
i18n: function (key2) {
return key2
},
}
function getLog(message2, params2) {
return '[vxe-table v'
.concat('4.5.12', '] ')
.concat(GlobalConfig.i18n(message2, params2))
}
function outLog(type4) {
return function (message2, params2) {
var msg = getLog(message2, params2)
console[type4](msg)
return msg
}
}
var warnLog = outLog('warn')
var errLog = outLog('error')
var storeMap = {}
var interceptor = {
mixin: function (options2) {
xeUtils.each(options2, function (callback, type4) {
return interceptor.add(type4, callback)
})
return interceptor
},
get: function (type4) {
return storeMap[type4] || []
},
add: function (type4, callback) {
if (callback) {
var eList = storeMap[type4]
if (!eList) {
eList = storeMap[type4] = []
}
eList.push(callback)
}
return interceptor
},
delete: function (type4, callback) {
var eList = storeMap[type4]
if (eList) {
if (callback) {
xeUtils.remove(eList, function (fn2) {
return fn2 === callback
})
} else {
delete storeMap[type4]
}
}
},
}
var VXEFormatsStore = (function () {
function VXEFormatsStore2() {
this.store = {}
}
VXEFormatsStore2.prototype.mixin = function (options2) {
var _this = this
xeUtils.each(options2, function (item2, key2) {
_this.add(key2, item2)
})
return this
}
VXEFormatsStore2.prototype.has = function (name2) {
return !!this.get(name2)
}
VXEFormatsStore2.prototype.get = function (name2) {
return this.store[name2]
}
VXEFormatsStore2.prototype.add = function (name2, render2) {
var conf = this.store[name2]
if (xeUtils.isFunction(render2)) {
render2 = {
cellFormatMethod: render2,
}
}
this.store[name2] = conf ? xeUtils.merge(conf, render2) : render2
return this
}
VXEFormatsStore2.prototype.delete = function (name2) {
delete this.store[name2]
}
VXEFormatsStore2.prototype.forEach = function (callback) {
xeUtils.objectEach(this.store, callback)
}
return VXEFormatsStore2
})()
var formats = new VXEFormatsStore()
var storeEl = null
var storeId = 'z-index-manage'
var storeMainKey = 'm'
var storeSubKey = 's'
var storeData = {
m: 1e3,
s: 1e3,
}
function getDom() {
if (!storeEl) {
if (typeof document !== 'undefined') {
storeEl = document.getElementById(storeId)
if (!storeEl) {
storeEl = document.createElement('div')
storeEl.id = storeId
storeEl.style.display = 'none'
document.body.appendChild(storeEl)
setCurrent(storeData.m)
setSubCurrent(storeData.s)
}
}
}
return storeEl
}
function createSetHandle(key2) {
return function (value2) {
if (value2) {
value2 = Number(value2)
storeData[key2] = value2
var doc = getDom()
if (doc) {
if (doc.dataset) {
doc.dataset[key2] = value2 + ''
} else {
doc.setAttribute('data-' + key2, value2 + '')
}
}
}
return storeData[key2]
}
}
var setCurrent = createSetHandle(storeMainKey)
function createGetHandle(key2, nextMethod) {
return function getCurrent2(currZindex) {
var zIndex2
var doc = getDom()
if (doc) {
var domVal = doc.dataset
? doc.dataset[key2]
: doc.getAttribute('data-' + key2)
if (domVal) {
zIndex2 = Number(domVal)
}
}
if (!zIndex2) {
zIndex2 = storeData[key2]
}
if (currZindex) {
if (Number(currZindex) < zIndex2) {
return nextMethod()
}
return currZindex
}
return zIndex2
}
}
var getCurrent = createGetHandle(storeMainKey, getNext)
function getNext() {
return setCurrent(getCurrent() + 1)
}
var setSubCurrent = createSetHandle(storeSubKey)
var _getSubCurrent = createGetHandle(storeSubKey, getSubNext)
function getSubCurrent() {
return getCurrent() + _getSubCurrent()
}
function getSubNext() {
setSubCurrent(_getSubCurrent() + 1)
return getSubCurrent()
}
var DomZIndex = {
setCurrent,
getCurrent,
getNext,
setSubCurrent,
getSubCurrent,
getSubNext,
}
function isEnableConf(conf) {
return conf && conf.enabled !== false
}
function isEmptyValue$1(cellValue) {
return cellValue === null || cellValue === void 0 || cellValue === ''
}
function parseFile(file2) {
var name2 = file2.name
var tIndex = xeUtils.lastIndexOf(name2, '.')
var type4 = name2.substring(tIndex + 1, name2.length).toLowerCase()
var filename = name2.substring(0, tIndex)
return { filename, type: type4 }
}
function nextZIndex() {
return DomZIndex.getNext()
}
function getLastZIndex() {
return DomZIndex.getCurrent()
}
function hasChildrenList(item2) {
return item2 && item2.children && item2.children.length > 0
}
function getFuncText(content2) {
return content2
? xeUtils.toValueString(
GlobalConfig.translate
? GlobalConfig.translate('' + content2)
: content2
)
: ''
}
function formatText(value2, placeholder) {
return (
'' +
(isEmptyValue$1(value2)
? placeholder
? GlobalConfig.emptyCell
: ''
: value2)
)
}
function eqEmptyValue(cellValue) {
return cellValue === '' || xeUtils.eqNull(cellValue)
}
var ColumnInfo = (function () {
function ColumnInfo2($xetable, _vm, _a2) {
var _b2 = _a2 === void 0 ? {} : _a2,
renderHeader = _b2.renderHeader,
renderCell = _b2.renderCell,
renderFooter = _b2.renderFooter,
renderData = _b2.renderData
var $xegrid = $xetable.xegrid
var formatter2 = _vm.formatter
var visible = xeUtils.isBoolean(_vm.visible) ? _vm.visible : true
Object.assign(this, {
type: _vm.type,
property: _vm.field,
field: _vm.field,
title: _vm.title,
width: _vm.width,
minWidth: _vm.minWidth,
maxWidth: _vm.maxWidth,
resizable: _vm.resizable,
fixed: _vm.fixed,
align: _vm.align,
headerAlign: _vm.headerAlign,
footerAlign: _vm.footerAlign,
showOverflow: _vm.showOverflow,
showHeaderOverflow: _vm.showHeaderOverflow,
showFooterOverflow: _vm.showFooterOverflow,
className: _vm.className,
headerClassName: _vm.headerClassName,
footerClassName: _vm.footerClassName,
formatter: formatter2,
sortable: _vm.sortable,
sortBy: _vm.sortBy,
sortType: _vm.sortType,
filters: toFilters(_vm.filters),
filterMultiple: xeUtils.isBoolean(_vm.filterMultiple)
? _vm.filterMultiple
: true,
filterMethod: _vm.filterMethod,
filterResetMethod: _vm.filterResetMethod,
filterRecoverMethod: _vm.filterRecoverMethod,
filterRender: _vm.filterRender,
treeNode: _vm.treeNode,
cellType: _vm.cellType,
cellRender: _vm.cellRender,
editRender: _vm.editRender,
contentRender: _vm.contentRender,
headerExportMethod: _vm.headerExportMethod,
exportMethod: _vm.exportMethod,
footerExportMethod: _vm.footerExportMethod,
titleHelp: _vm.titleHelp,
titlePrefix: _vm.titlePrefix,
params: _vm.params,
id: _vm.colId || xeUtils.uniqueId('col_'),
parentId: null,
visible,
halfVisible: false,
defaultVisible: visible,
defaultFixed: _vm.fixed,
checked: false,
halfChecked: false,
disabled: false,
level: 1,
rowSpan: 1,
colSpan: 1,
order: null,
sortTime: 0,
customOrder: 0,
renderWidth: 0,
renderHeight: 0,
resizeWidth: 0,
renderLeft: 0,
renderArgs: [],
model: {},
renderHeader: renderHeader || _vm.renderHeader,
renderCell: renderCell || _vm.renderCell,
renderFooter: renderFooter || _vm.renderFooter,
renderData,
slots: _vm.slots,
})
if ($xegrid) {
var computeProxyOpts = $xegrid.getComputeMaps().computeProxyOpts
var proxyOpts = computeProxyOpts.value
if (proxyOpts.beforeColumn) {
proxyOpts.beforeColumn({ $grid: $xegrid, column: this })
}
}
}
ColumnInfo2.prototype.getTitle = function () {
return getFuncText(
this.title ||
(this.type === 'seq' ? GlobalConfig.i18n('vxe.table.seqTitle') : '')
)
}
ColumnInfo2.prototype.getKey = function () {
return this.field || (this.type ? 'type='.concat(this.type) : null)
}
ColumnInfo2.prototype.update = function (name2, value2) {
if (name2 !== 'filters') {
if (name2 === 'field') {
this.property = value2
}
this[name2] = value2
}
}
return ColumnInfo2
})()
var reClsMap = {}
var browse = xeUtils.browse()
function getPropClass(property2, params2) {
return property2
? xeUtils.isFunction(property2)
? property2(params2)
: property2
: ''
}
function getClsRE(cls) {
if (!reClsMap[cls]) {
reClsMap[cls] = new RegExp('(?:^|\\s)'.concat(cls, '(?!\\S)'), 'g')
}
return reClsMap[cls]
}
function getNodeOffset(elem, container, rest) {
if (elem) {
var parentElem = elem.parentNode
rest.top += elem.offsetTop
rest.left += elem.offsetLeft
if (
parentElem &&
parentElem !== document.documentElement &&
parentElem !== document.body
) {
rest.top -= parentElem.scrollTop
rest.left -= parentElem.scrollLeft
}
if (
container && (elem === container || elem.offsetParent === container)
? 0
: elem.offsetParent
) {
return getNodeOffset(elem.offsetParent, container, rest)
}
}
return rest
}
function isPx(val2) {
return val2 && /^\d+(px)?$/.test(val2)
}
function isScale(val2) {
return val2 && /^\d+%$/.test(val2)
}
function hasClass(elem, cls) {
return (
elem &&
elem.className &&
elem.className.match &&
elem.className.match(getClsRE(cls))
)
}
function removeClass(elem, cls) {
if (elem && hasClass(elem, cls)) {
elem.className = elem.className.replace(getClsRE(cls), '')
}
}
function addClass(elem, cls) {
if (elem && !hasClass(elem, cls)) {
removeClass(elem, cls)
elem.className = ''.concat(elem.className, ' ').concat(cls)
}
}
function getDomNode() {
var documentElement = document.documentElement
var bodyElem = document.body
return {
scrollTop: documentElement.scrollTop || bodyElem.scrollTop,
scrollLeft: documentElement.scrollLeft || bodyElem.scrollLeft,
visibleHeight: documentElement.clientHeight || bodyElem.clientHeight,
visibleWidth: documentElement.clientWidth || bodyElem.clientWidth,
}
}
function getOffsetHeight(elem) {
return elem ? elem.offsetHeight : 0
}
function getPaddingTopBottomSize(elem) {
if (elem) {
var computedStyle = getComputedStyle(elem)
var paddingTop2 = xeUtils.toNumber(computedStyle.paddingTop)
var paddingBottom2 = xeUtils.toNumber(computedStyle.paddingBottom)
return paddingTop2 + paddingBottom2
}
return 0
}
function setScrollTop(elem, scrollTop) {
if (elem) {
elem.scrollTop = scrollTop
}
}
function setScrollLeft(elem, scrollLeft) {
if (elem) {
elem.scrollLeft = scrollLeft
}
}
function updateCellTitle(overflowElem, column) {
var content2 =
column.type === 'html' ? overflowElem.innerText : overflowElem.textContent
if (overflowElem.getAttribute('title') !== content2) {
overflowElem.setAttribute('title', content2)
}
}
function getEventTargetNode(evnt, container, queryCls, queryMethod) {
var targetElem
var target2 =
evnt.target.shadowRoot && evnt.composed
? evnt.composedPath()[0] || evnt.target
: evnt.target
while (target2 && target2.nodeType && target2 !== document) {
if (
queryCls &&
hasClass(target2, queryCls) &&
(!queryMethod || queryMethod(target2))
) {
targetElem = target2
} else if (target2 === container) {
return { flag: queryCls ? !!targetElem : true, container, targetElem }
}
target2 = target2.parentNode
}
return { flag: false }
}
function getOffsetPos(elem, container) {
return getNodeOffset(elem, container, { left: 0, top: 0 })
}
function getAbsolutePos(elem) {
var bounding = elem.getBoundingClientRect()
var boundingTop = bounding.top
var boundingLeft = bounding.left
var _a2 = getDomNode(),
scrollTop = _a2.scrollTop,
scrollLeft = _a2.scrollLeft,
visibleHeight = _a2.visibleHeight,
visibleWidth = _a2.visibleWidth
return {
boundingTop,
top: scrollTop + boundingTop,
boundingLeft,
left: scrollLeft + boundingLeft,
visibleHeight,
visibleWidth,
}
}
var scrollIntoViewIfNeeded = 'scrollIntoViewIfNeeded'
var scrollIntoView = 'scrollIntoView'
function scrollToView(elem) {
if (elem) {
if (elem[scrollIntoViewIfNeeded]) {
elem[scrollIntoViewIfNeeded]()
} else if (elem[scrollIntoView]) {
elem[scrollIntoView]()
}
}
}
function isNodeElement(elem) {
return elem && elem.nodeType === 1
}
function restoreScrollLocation($xetable, scrollLeft, scrollTop) {
var internalData = $xetable.internalData
return $xetable.clearScroll().then(function () {
if (scrollLeft || scrollTop) {
internalData.lastScrollLeft = 0
internalData.lastScrollTop = 0
return $xetable.scrollTo(scrollLeft, scrollTop)
}
})
}
function removeScrollListener(scrollElem) {
if (scrollElem && scrollElem._onscroll) {
scrollElem.onscroll = null
}
}
function restoreScrollListener(scrollElem) {
if (scrollElem && scrollElem._onscroll) {
scrollElem.onscroll = scrollElem._onscroll
}
}
function getRowUniqueId() {
return xeUtils.uniqueId('row_')
}
function getRowkey($xetable) {
var props2 = $xetable.props
var computeRowOpts = $xetable.getComputeMaps().computeRowOpts
var rowId = props2.rowId
var rowOpts = computeRowOpts.value
return rowId || rowOpts.keyField || '_X_ROW_KEY'
}
function getRowid($xetable, row) {
var rowid = xeUtils.get(row, getRowkey($xetable))
return xeUtils.eqNull(rowid) ? '' : encodeURIComponent(rowid)
}
var handleFieldOrColumn = function ($xetable, fieldOrColumn) {
if (fieldOrColumn) {
return xeUtils.isString(fieldOrColumn)
? $xetable.getColumnByField(fieldOrColumn)
: fieldOrColumn
}
return null
}
function getPaddingLeftRightSize(elem) {
if (elem) {
var computedStyle = getComputedStyle(elem)
var paddingLeft2 = xeUtils.toNumber(computedStyle.paddingLeft)
var paddingRight2 = xeUtils.toNumber(computedStyle.paddingRight)
return paddingLeft2 + paddingRight2
}
return 0
}
function getElemenMarginWidth(elem) {
if (elem) {
var computedStyle = getComputedStyle(elem)
var marginLeft2 = xeUtils.toNumber(computedStyle.marginLeft)
var marginRight2 = xeUtils.toNumber(computedStyle.marginRight)
return elem.offsetWidth + marginLeft2 + marginRight2
}
return 0
}
function queryCellElement(cell, selector2) {
return cell.querySelector('.vxe-cell' + selector2)
}
function toFilters(filters) {
if (filters && xeUtils.isArray(filters)) {
return filters.map(function (_a2) {
var label = _a2.label,
value2 = _a2.value,
data2 = _a2.data,
resetValue = _a2.resetValue,
checked2 = _a2.checked
return {
label,
value: value2,
data: data2,
resetValue,
checked: !!checked2,
_checked: !!checked2,
}
})
}
return filters
}
function toTreePathSeq(path) {
return path
.map(function (num2, i2) {
return i2 % 2 === 0 ? Number(num2) + 1 : '.'
})
.join('')
}
function getCellValue(row, column) {
return xeUtils.get(row, column.field)
}
function setCellValue(row, column, value2) {
return xeUtils.set(row, column.field, value2)
}
function getColReMinWidth(params2) {
var $table = params2.$table,
column = params2.column,
cell = params2.cell
var tableProps2 = $table.props
var computeResizableOpts = $table.getComputeMaps().computeResizableOpts
var resizableOpts = computeResizableOpts.value
var reMinWidth = resizableOpts.minWidth
if (reMinWidth) {
var customMinWidth = xeUtils.isFunction(reMinWidth)
? reMinWidth(params2)
: reMinWidth
if (customMinWidth !== 'auto') {
return Math.max(1, xeUtils.toNumber(customMinWidth))
}
}
var allColumnHeaderOverflow = tableProps2.showHeaderOverflow
var showHeaderOverflow = column.showHeaderOverflow,
colMinWidth = column.minWidth
var headOverflow =
xeUtils.isUndefined(showHeaderOverflow) ||
xeUtils.isNull(showHeaderOverflow)
? allColumnHeaderOverflow
: showHeaderOverflow
var showEllipsis = headOverflow === 'ellipsis'
var showTitle = headOverflow === 'title'
var showTooltip2 = headOverflow === true || headOverflow === 'tooltip'
var hasEllipsis = showTitle || showTooltip2 || showEllipsis
var minTitleWidth = xeUtils.floor(
(xeUtils.toNumber(getComputedStyle(cell).fontSize) || 14) * 1.6
)
var paddingLeftRight =
getPaddingLeftRightSize(cell) +
getPaddingLeftRightSize(queryCellElement(cell, ''))
var mWidth = minTitleWidth + paddingLeftRight
if (hasEllipsis) {
var checkboxIconWidth = getPaddingLeftRightSize(
queryCellElement(cell, '--title>.vxe-cell--checkbox')
)
var requiredIconWidth = getElemenMarginWidth(
queryCellElement(cell, '>.vxe-cell--required-icon')
)
var editIconWidth = getElemenMarginWidth(
queryCellElement(cell, '>.vxe-cell--edit-icon')
)
var helpIconWidth = getElemenMarginWidth(
queryCellElement(cell, '>.vxe-cell-help-icon')
)
var sortIconWidth = getElemenMarginWidth(
queryCellElement(cell, '>.vxe-cell--sort')
)
var filterIconWidth = getElemenMarginWidth(
queryCellElement(cell, '>.vxe-cell--filter')
)
mWidth +=
checkboxIconWidth +
requiredIconWidth +
editIconWidth +
helpIconWidth +
filterIconWidth +
sortIconWidth
}
if (colMinWidth) {
var refTableBody = $table.getRefMaps().refTableBody
var tableBody = refTableBody.value
var bodyElem = tableBody ? tableBody.$el : null
if (bodyElem) {
if (isScale(colMinWidth)) {
var bodyWidth = bodyElem.clientWidth - 1
var meanWidth = bodyWidth / 100
return Math.max(
mWidth,
Math.floor(xeUtils.toInteger(colMinWidth) * meanWidth)
)
} else if (isPx(colMinWidth)) {
return Math.max(mWidth, xeUtils.toInteger(colMinWidth))
}
}
}
return mWidth
}
function isColumnInfo(column) {
return (
column &&
(column.constructor === ColumnInfo || column instanceof ColumnInfo)
)
}
function createColumn($xetable, options2, renderOptions) {
return isColumnInfo(options2)
? options2
: reactive(new ColumnInfo($xetable, options2, renderOptions))
}
function watchColumn($xetable, props2, column) {
Object.keys(props2).forEach(function (name2) {
watch$1(
function () {
return props2[name2]
},
function (value2) {
column.update(name2, value2)
if ($xetable) {
if (name2 === 'filters') {
$xetable.setFilter(column, value2)
$xetable.handleUpdateDataQueue()
} else if (
['visible', 'fixed', 'width', 'minWidth', 'maxWidth'].includes(
name2
)
) {
$xetable.handleRefreshColumnQueue()
}
}
}
)
})
}
function assemColumn($xetable, elem, column, colgroup) {
var reactData = $xetable.reactData
var staticColumns = reactData.staticColumns
var parentElem = elem.parentNode
var parentColumn = colgroup ? colgroup.column : null
var parentCols = parentColumn ? parentColumn.children : staticColumns
if (parentElem && parentCols) {
parentCols.splice(
xeUtils.arrayIndexOf(parentElem.children, elem),
0,
column
)
reactData.staticColumns = staticColumns.slice(0)
}
}
function destroyColumn($xetable, column) {
var reactData = $xetable.reactData
var staticColumns = reactData.staticColumns
var matchObj = xeUtils.findTree(
staticColumns,
function (item2) {
return item2.id === column.id
},
{ children: 'children' }
)
if (matchObj) {
matchObj.items.splice(matchObj.index, 1)
}
reactData.staticColumns = staticColumns.slice(0)
}
function getRootColumn($xetable, column) {
var internalData = $xetable.internalData
var fullColumnIdData = internalData.fullColumnIdData
if (!column) {
return null
}
var parentColId = column.parentId
while (fullColumnIdData[parentColId]) {
var column_1 = fullColumnIdData[parentColId].column
parentColId = column_1.parentId
if (!parentColId) {
return column_1
}
}
return column
}
function mergeBodyMethod(mergeList, _rowIndex, _columnIndex) {
for (var mIndex = 0; mIndex < mergeList.length; mIndex++) {
var _a2 = mergeList[mIndex],
mergeRowIndex = _a2.row,
mergeColIndex = _a2.col,
mergeRowspan = _a2.rowspan,
mergeColspan = _a2.colspan
if (
mergeColIndex > -1 &&
mergeRowIndex > -1 &&
mergeRowspan &&
mergeColspan
) {
if (mergeRowIndex === _rowIndex && mergeColIndex === _columnIndex) {
return { rowspan: mergeRowspan, colspan: mergeColspan }
}
if (
_rowIndex >= mergeRowIndex &&
_rowIndex < mergeRowIndex + mergeRowspan &&
_columnIndex >= mergeColIndex &&
_columnIndex < mergeColIndex + mergeColspan
) {
return { rowspan: 0, colspan: 0 }
}
}
}
}
function clearTableDefaultStatus($xetable) {
var props2 = $xetable.props,
internalData = $xetable.internalData
internalData.initStatus = false
$xetable.clearSort()
$xetable.clearCurrentRow()
$xetable.clearCurrentColumn()
$xetable.clearRadioRow()
$xetable.clearRadioReserve()
$xetable.clearCheckboxRow()
$xetable.clearCheckboxReserve()
$xetable.clearRowExpand()
$xetable.clearTreeExpand()
$xetable.clearTreeExpandReserve()
if ($xetable.clearFilter) {
$xetable.clearFilter()
}
if ($xetable.clearSelected && (props2.keyboardConfig || props2.mouseConfig)) {
$xetable.clearSelected()
}
if ($xetable.clearCellAreas && props2.mouseConfig) {
$xetable.clearCellAreas()
$xetable.clearCopyCellArea()
}
return $xetable.clearScroll()
}
function clearTableAllStatus($xetable) {
if ($xetable.clearFilter) {
$xetable.clearFilter()
}
return clearTableDefaultStatus($xetable)
}
function rowToVisible($xetable, row) {
var reactData = $xetable.reactData,
internalData = $xetable.internalData
var refTableBody = $xetable.getRefMaps().refTableBody
var scrollYLoad = reactData.scrollYLoad
var afterFullData = internalData.afterFullData,
scrollYStore = internalData.scrollYStore
var tableBody = refTableBody.value
var bodyElem = tableBody ? tableBody.$el : null
if (bodyElem) {
var trElem = bodyElem.querySelector(
'[rowid="'.concat(getRowid($xetable, row), '"]')
)
if (trElem) {
var bodyHeight = bodyElem.clientHeight
var bodySrcollTop = bodyElem.scrollTop
var trOffsetParent = trElem.offsetParent
var trOffsetTop =
trElem.offsetTop + (trOffsetParent ? trOffsetParent.offsetTop : 0)
var trHeight = trElem.clientHeight
if (
trOffsetTop < bodySrcollTop ||
trOffsetTop > bodySrcollTop + bodyHeight
) {
return $xetable.scrollTo(null, trOffsetTop)
} else if (trOffsetTop + trHeight >= bodyHeight + bodySrcollTop) {
return $xetable.scrollTo(null, bodySrcollTop + trHeight)
}
} else {
if (scrollYLoad) {
return $xetable.scrollTo(
null,
(afterFullData.indexOf(row) - 1) * scrollYStore.rowHeight
)
}
}
}
return Promise.resolve()
}
function colToVisible($xetable, column) {
var reactData = $xetable.reactData,
internalData = $xetable.internalData
var refTableBody = $xetable.getRefMaps().refTableBody
var scrollXLoad = reactData.scrollXLoad
var visibleColumn = internalData.visibleColumn
var tableBody = refTableBody.value
var bodyElem = tableBody ? tableBody.$el : null
if (bodyElem) {
var tdElem = bodyElem.querySelector('.'.concat(column.id))
if (tdElem) {
var bodyWidth = bodyElem.clientWidth
var bodySrcollLeft = bodyElem.scrollLeft
var tdOffsetParent = tdElem.offsetParent
var tdOffsetLeft =
tdElem.offsetLeft + (tdOffsetParent ? tdOffsetParent.offsetLeft : 0)
var tdWidth = tdElem.clientWidth
if (
tdOffsetLeft < bodySrcollLeft ||
tdOffsetLeft > bodySrcollLeft + bodyWidth
) {
return $xetable.scrollTo(tdOffsetLeft)
} else if (tdOffsetLeft + tdWidth >= bodyWidth + bodySrcollLeft) {
return $xetable.scrollTo(bodySrcollLeft + tdWidth)
}
} else {
if (scrollXLoad) {
var scrollLeft = 0
for (var index2 = 0; index2 < visibleColumn.length; index2++) {
if (visibleColumn[index2] === column) {
break
}
scrollLeft += visibleColumn[index2].renderWidth
}
return $xetable.scrollTo(scrollLeft)
}
}
}
return Promise.resolve()
}
function getOnName(type4) {
return 'on' + type4.substring(0, 1).toLocaleUpperCase() + type4.substring(1)
}
function getSlotVNs(vns) {
if (xeUtils.isArray(vns)) {
return vns
}
return [vns]
}
var __assign$j =
(globalThis && globalThis.__assign) ||
function () {
__assign$j =
Object.assign ||
function (t3) {
for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
s2 = arguments[i2]
for (var p2 in s2)
if (Object.prototype.hasOwnProperty.call(s2, p2)) t3[p2] = s2[p2]
}
return t3
}
return __assign$j.apply(this, arguments)
}
var __spreadArray$6 =
(globalThis && globalThis.__spreadArray) ||
function (to, from, pack2) {
if (pack2 || arguments.length === 2)
for (var i2 = 0, l2 = from.length, ar2; i2 < l2; i2++) {
if (ar2 || !(i2 in from)) {
if (!ar2) ar2 = Array.prototype.slice.call(from, 0, i2)
ar2[i2] = from[i2]
}
}
return to.concat(ar2 || Array.prototype.slice.call(from))
}
var componentDefaultModelProp = 'modelValue'
var defaultCompProps = { transfer: true }
function getModelEvent(renderOpts) {
switch (renderOpts.name) {
case 'input':
case 'textarea':
return 'input'
}
return 'update:modelValue'
}
function getChangeEvent(renderOpts) {
switch (renderOpts.name) {
case 'input':
case 'textarea':
case '$input':
case '$textarea':
return 'input'
}
return 'change'
}
function parseDate$1(value2, props2) {
return value2 && props2.valueFormat
? xeUtils.toStringDate(value2, props2.valueFormat)
: value2
}
function getFormatDate(value2, props2, defaultFormat) {
var _a2 = props2.dateConfig,
dateConfig = _a2 === void 0 ? {} : _a2
return xeUtils.toDateString(
parseDate$1(value2, props2),
dateConfig.labelFormat || defaultFormat
)
}
function getLabelFormatDate(value2, props2) {
return getFormatDate(
value2,
props2,
GlobalConfig.i18n('vxe.input.date.labelFormat.'.concat(props2.type))
)
}
function getComponentName(name2) {
return 'vxe-'.concat(name2.replace('$', ''))
}
function getDefaultComponent(_a2) {
var name2 = _a2.name
return resolveComponent(getComponentName(name2))
}
function handleConfirmFilter(params2, checked2, option2) {
var $panel = params2.$panel
$panel.changeOption({}, checked2, option2)
}
function getNativeAttrs(renderOpts) {
var name2 = renderOpts.name,
attrs = renderOpts.attrs
if (name2 === 'input') {
attrs = Object.assign({ type: 'text' }, attrs)
}
return attrs
}
function getInputImmediateModel(renderOpts) {
var name2 = renderOpts.name,
immediate = renderOpts.immediate,
props2 = renderOpts.props
if (!immediate) {
if (name2 === '$input') {
var type4 = (props2 || {}).type
return !(
!type4 ||
type4 === 'text' ||
type4 === 'number' ||
type4 === 'integer' ||
type4 === 'float'
)
}
if (name2 === 'input' || name2 === 'textarea' || name2 === '$textarea') {
return false
}
return true
}
return immediate
}
function getCellEditProps(renderOpts, params2, value2, defaultProps2) {
var _a2
return xeUtils.assign(
{ immediate: getInputImmediateModel(renderOpts) },
defaultCompProps,
defaultProps2,
renderOpts.props,
((_a2 = {}), (_a2[componentDefaultModelProp] = value2), _a2)
)
}
function getCellEditFilterProps(renderOpts, params2, value2, defaultProps2) {
var _a2
return xeUtils.assign(
{},
defaultCompProps,
defaultProps2,
renderOpts.props,
((_a2 = {}), (_a2[componentDefaultModelProp] = value2), _a2)
)
}
function getComponentFormItemProps(renderOpts, params2, value2, defaultProps2) {
var _a2
return xeUtils.assign(
{},
defaultCompProps,
defaultProps2,
renderOpts.props,
((_a2 = {}), (_a2[componentDefaultModelProp] = value2), _a2)
)
}
function isImmediateCell(renderOpts, params2) {
return params2.$type === 'cell' || getInputImmediateModel(renderOpts)
}
function getCellLabelVNs(renderOpts, params2, cellLabel) {
var placeholder = renderOpts.placeholder
return [
h$4(
'span',
{
class: 'vxe-cell--label',
},
placeholder && isEmptyValue$1(cellLabel)
? [
h$4(
'span',
{
class: 'vxe-cell--placeholder',
},
formatText(getFuncText(placeholder), 1)
),
]
: formatText(cellLabel, 1)
),
]
}
function getElementOns(renderOpts, params2, modelFunc, changeFunc) {
var events2 = renderOpts.events
var modelEvent = getModelEvent(renderOpts)
var changeEvent = getChangeEvent(renderOpts)
var isSameEvent = changeEvent === modelEvent
var ons = {}
if (events2) {
xeUtils.objectEach(events2, function (func, key2) {
ons[getOnName(key2)] = function () {
var args = []
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i]
}
func.apply(void 0, __spreadArray$6([params2], args, false))
}
})
}
if (modelFunc) {
ons[getOnName(modelEvent)] = function (targetEvnt) {
modelFunc(targetEvnt)
if (isSameEvent && changeFunc) {
changeFunc(targetEvnt)
}
if (events2 && events2[modelEvent]) {
events2[modelEvent](params2, targetEvnt)
}
}
}
if (!isSameEvent && changeFunc) {
ons[getOnName(changeEvent)] = function () {
var args = []
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i]
}
changeFunc.apply(void 0, args)
if (events2 && events2[changeEvent]) {
events2[changeEvent].apply(
events2,
__spreadArray$6([params2], args, false)
)
}
}
}
return ons
}
function getComponentOns(renderOpts, params2, modelFunc, changeFunc) {
var events2 = renderOpts.events
var modelEvent = getModelEvent(renderOpts)
var changeEvent = getChangeEvent(renderOpts)
var ons = {}
xeUtils.objectEach(events2, function (func, key2) {
ons[getOnName(key2)] = function () {
var args = []
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i]
}
func.apply(void 0, __spreadArray$6([params2], args, false))
}
})
if (modelFunc) {
ons[getOnName(modelEvent)] = function (targetEvnt) {
modelFunc(targetEvnt)
if (events2 && events2[modelEvent]) {
events2[modelEvent](params2, targetEvnt)
}
}
}
if (changeFunc) {
ons[getOnName(changeEvent)] = function () {
var args = []
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i]
}
changeFunc.apply(void 0, args)
if (events2 && events2[changeEvent]) {
events2[changeEvent].apply(
events2,
__spreadArray$6([params2], args, false)
)
}
}
}
return ons
}
function getEditOns(renderOpts, params2) {
var $table = params2.$table,
row = params2.row,
column = params2.column
var name2 = renderOpts.name
var model = column.model
var isImmediate = isImmediateCell(renderOpts, params2)
return getComponentOns(
renderOpts,
params2,
function (cellValue) {
if (isImmediate) {
setCellValue(row, column, cellValue)
} else {
model.update = true
model.value = cellValue
}
},
function (eventParams) {
if (!isImmediate && (name2 === '$input' || name2 === '$textarea')) {
var cellValue = eventParams.value
model.update = true
model.value = cellValue
$table.updateStatus(params2, cellValue)
} else {
$table.updateStatus(params2)
}
}
)
}
function getFilterOns(renderOpts, params2, option2) {
return getComponentOns(
renderOpts,
params2,
function (value2) {
option2.data = value2
},
function () {
handleConfirmFilter(params2, !xeUtils.eqNull(option2.data), option2)
}
)
}
function getItemOns(renderOpts, params2) {
var $form = params2.$form,
data2 = params2.data,
property2 = params2.property
return getComponentOns(
renderOpts,
params2,
function (value2) {
xeUtils.set(data2, property2, value2)
},
function () {
$form.updateStatus(params2)
}
)
}
function getNativeEditOns(renderOpts, params2) {
var $table = params2.$table,
row = params2.row,
column = params2.column
var model = column.model
return getElementOns(
renderOpts,
params2,
function (evnt) {
var cellValue = evnt.target.value
if (isImmediateCell(renderOpts, params2)) {
setCellValue(row, column, cellValue)
} else {
model.update = true
model.value = cellValue
}
},
function (evnt) {
var cellValue = evnt.target.value
$table.updateStatus(params2, cellValue)
}
)
}
function getNativeFilterOns(renderOpts, params2, option2) {
return getElementOns(
renderOpts,
params2,
function (evnt) {
option2.data = evnt.target.value
},
function () {
handleConfirmFilter(params2, !xeUtils.eqNull(option2.data), option2)
}
)
}
function getNativeItemOns(renderOpts, params2) {
var $form = params2.$form,
data2 = params2.data,
property2 = params2.property
return getElementOns(
renderOpts,
params2,
function (evnt) {
var itemValue = evnt.target.value
xeUtils.set(data2, property2, itemValue)
},
function () {
$form.updateStatus(params2)
}
)
}
function nativeEditRender(renderOpts, params2) {
var row = params2.row,
column = params2.column
var name2 = renderOpts.name
var cellValue = isImmediateCell(renderOpts, params2)
? getCellValue(row, column)
: column.model.value
return [
h$4(
name2,
__assign$j(
__assign$j(
__assign$j(
{ class: 'vxe-default-'.concat(name2) },
getNativeAttrs(renderOpts)
),
{ value: cellValue }
),
getNativeEditOns(renderOpts, params2)
)
),
]
}
function defaultEditRender(renderOpts, params2) {
var row = params2.row,
column = params2.column
var cellValue = getCellValue(row, column)
return [
h$4(
getDefaultComponent(renderOpts),
__assign$j(
__assign$j({}, getCellEditProps(renderOpts, params2, cellValue)),
getEditOns(renderOpts, params2)
)
),
]
}
function defaultButtonEditRender(renderOpts, params2) {
return [
h$4(
resolveComponent('vxe-button'),
__assign$j(
__assign$j({}, getCellEditProps(renderOpts, params2, null)),
getComponentOns(renderOpts, params2)
)
),
]
}
function defaultButtonsEditRender(renderOpts, params2) {
return renderOpts.children.map(function (childRenderOpts) {
return defaultButtonEditRender(childRenderOpts, params2)[0]
})
}
function renderNativeOptgroups(renderOpts, params2, renderOptionsMethods) {
var optionGroups = renderOpts.optionGroups,
_a2 = renderOpts.optionGroupProps,
optionGroupProps = _a2 === void 0 ? {} : _a2
var groupOptions = optionGroupProps.options || 'options'
var groupLabel = optionGroupProps.label || 'label'
return optionGroups.map(function (group, gIndex) {
return h$4(
'optgroup',
{
key: gIndex,
label: group[groupLabel],
},
renderOptionsMethods(group[groupOptions], renderOpts, params2)
)
})
}
function renderNativeOptions(options2, renderOpts, params2) {
var _a2 = renderOpts.optionProps,
optionProps = _a2 === void 0 ? {} : _a2
var row = params2.row,
column = params2.column
var labelProp = optionProps.label || 'label'
var valueProp = optionProps.value || 'value'
var disabledProp = optionProps.disabled || 'disabled'
var cellValue = isImmediateCell(renderOpts, params2)
? getCellValue(row, column)
: column.model.value
return options2.map(function (option2, oIndex) {
return h$4(
'option',
{
key: oIndex,
value: option2[valueProp],
disabled: option2[disabledProp],
selected: option2[valueProp] == cellValue,
},
option2[labelProp]
)
})
}
function nativeFilterRender(renderOpts, params2) {
var column = params2.column
var name2 = renderOpts.name
var attrs = getNativeAttrs(renderOpts)
return column.filters.map(function (option2, oIndex) {
return h$4(
name2,
__assign$j(
__assign$j(
__assign$j(
{ key: oIndex, class: 'vxe-default-'.concat(name2) },
attrs
),
{ value: option2.data }
),
getNativeFilterOns(renderOpts, params2, option2)
)
)
})
}
function defaultFilterRender(renderOpts, params2) {
var column = params2.column
return column.filters.map(function (option2, oIndex) {
var optionValue = option2.data
return h$4(
getDefaultComponent(renderOpts),
__assign$j(
__assign$j(
{ key: oIndex },
getCellEditFilterProps(renderOpts, renderOpts, optionValue)
),
getFilterOns(renderOpts, params2, option2)
)
)
})
}
function handleFilterMethod(_a2) {
var option2 = _a2.option,
row = _a2.row,
column = _a2.column
var data2 = option2.data
var cellValue = xeUtils.get(row, column.property)
return cellValue == data2
}
function nativeSelectEditRender(renderOpts, params2) {
return [
h$4(
'select',
__assign$j(
__assign$j({ class: 'vxe-default-select' }, getNativeAttrs(renderOpts)),
getNativeEditOns(renderOpts, params2)
),
renderOpts.optionGroups
? renderNativeOptgroups(renderOpts, params2, renderNativeOptions)
: renderNativeOptions(renderOpts.options, renderOpts, params2)
),
]
}
function defaultSelectEditRender(renderOpts, params2) {
var row = params2.row,
column = params2.column
var options2 = renderOpts.options,
optionProps = renderOpts.optionProps,
optionGroups = renderOpts.optionGroups,
optionGroupProps = renderOpts.optionGroupProps
var cellValue = getCellValue(row, column)
return [
h$4(
getDefaultComponent(renderOpts),
__assign$j(
__assign$j(
{},
getCellEditProps(renderOpts, params2, cellValue, {
options: options2,
optionProps,
optionGroups,
optionGroupProps,
})
),
getEditOns(renderOpts, params2)
)
),
]
}
function getSelectCellValue(renderOpts, _a2) {
var row = _a2.row,
column = _a2.column
var _b2 = renderOpts.props,
props2 = _b2 === void 0 ? {} : _b2,
options2 = renderOpts.options,
optionGroups = renderOpts.optionGroups,
_c2 = renderOpts.optionProps,
optionProps = _c2 === void 0 ? {} : _c2,
_d = renderOpts.optionGroupProps,
optionGroupProps = _d === void 0 ? {} : _d
var cellValue = xeUtils.get(row, column.property)
var selectItem
var labelProp = optionProps.label || 'label'
var valueProp = optionProps.value || 'value'
if (!isEmptyValue$1(cellValue)) {
return xeUtils
.map(
props2.multiple ? cellValue : [cellValue],
optionGroups
? function (value2) {
var groupOptions = optionGroupProps.options || 'options'
for (var index2 = 0; index2 < optionGroups.length; index2++) {
selectItem = xeUtils.find(
optionGroups[index2][groupOptions],
function (item2) {
return item2[valueProp] == value2
}
)
if (selectItem) {
break
}
}
return selectItem ? selectItem[labelProp] : value2
}
: function (value2) {
selectItem = xeUtils.find(options2, function (item2) {
return item2[valueProp] == value2
})
return selectItem ? selectItem[labelProp] : value2
}
)
.join(', ')
}
return ''
}
function nativeItemRender(renderOpts, params2) {
var data2 = params2.data,
property2 = params2.property
var name2 = renderOpts.name
var attrs = getNativeAttrs(renderOpts)
var itemValue = xeUtils.get(data2, property2)
return [
h$4(
name2,
__assign$j(
__assign$j(__assign$j({ class: 'vxe-default-'.concat(name2) }, attrs), {
value:
attrs &&
name2 === 'input' &&
(attrs.type === 'submit' || attrs.type === 'reset')
? null
: itemValue,
}),
getNativeItemOns(renderOpts, params2)
)
),
]
}
function defaultItemRender(renderOpts, params2) {
var data2 = params2.data,
property2 = params2.property
var itemValue = xeUtils.get(data2, property2)
return [
h$4(
getDefaultComponent(renderOpts),
__assign$j(
__assign$j(
{},
getComponentFormItemProps(renderOpts, params2, itemValue)
),
getItemOns(renderOpts, params2)
)
),
]
}
function defaultButtonItemRender(renderOpts, params2) {
return [
h$4(
resolveComponent('vxe-button'),
__assign$j(
__assign$j({}, getComponentFormItemProps(renderOpts, params2, null)),
getComponentOns(renderOpts, params2)
)
),
]
}
function defaultButtonsItemRender(renderOpts, params2) {
return renderOpts.children.map(function (childRenderOpts) {
return defaultButtonItemRender(childRenderOpts, params2)[0]
})
}
function renderNativeFormOptions(options2, renderOpts, params2) {
var data2 = params2.data,
property2 = params2.property
var _a2 = renderOpts.optionProps,
optionProps = _a2 === void 0 ? {} : _a2
var labelProp = optionProps.label || 'label'
var valueProp = optionProps.value || 'value'
var disabledProp = optionProps.disabled || 'disabled'
var cellValue = xeUtils.get(data2, property2)
return options2.map(function (item2, oIndex) {
return h$4(
'option',
{
key: oIndex,
value: item2[valueProp],
disabled: item2[disabledProp],
selected: item2[valueProp] == cellValue,
},
item2[labelProp]
)
})
}
function handleExportSelectMethod(params2) {
var row = params2.row,
column = params2.column,
options2 = params2.options
return options2.original
? getCellValue(row, column)
: getSelectCellValue(column.editRender || column.cellRender, params2)
}
function defaultFormItemRadioAndCheckboxRender(renderOpts, params2) {
var name2 = renderOpts.name,
options2 = renderOpts.options,
_a2 = renderOpts.optionProps,
optionProps = _a2 === void 0 ? {} : _a2
var data2 = params2.data,
property2 = params2.property
var labelProp = optionProps.label || 'label'
var valueProp = optionProps.value || 'value'
var disabledProp = optionProps.disabled || 'disabled'
var itemValue = xeUtils.get(data2, property2)
var compName = getComponentName(name2)
if (options2) {
return [
h$4(
resolveComponent(''.concat(compName, '-group')),
__assign$j(
__assign$j(
{},
getComponentFormItemProps(renderOpts, params2, itemValue)
),
getItemOns(renderOpts, params2)
),
{
default: function () {
return options2.map(function (item2, index2) {
return h$4(resolveComponent(compName), {
key: index2,
label: item2[valueProp],
content: item2[labelProp],
disabled: item2[disabledProp],
})
})
},
}
),
]
}
return [
h$4(
resolveComponent(compName),
__assign$j(
__assign$j(
{},
getComponentFormItemProps(renderOpts, params2, itemValue)
),
getItemOns(renderOpts, params2)
)
),
]
}
var renderMap = {
input: {
autofocus: 'input',
renderEdit: nativeEditRender,
renderDefault: nativeEditRender,
renderFilter: nativeFilterRender,
defaultFilterMethod: handleFilterMethod,
renderItemContent: nativeItemRender,
},
textarea: {
autofocus: 'textarea',
renderEdit: nativeEditRender,
renderItemContent: nativeItemRender,
},
select: {
renderEdit: nativeSelectEditRender,
renderDefault: nativeSelectEditRender,
renderCell: function (renderOpts, params2) {
return getCellLabelVNs(
renderOpts,
params2,
getSelectCellValue(renderOpts, params2)
)
},
renderFilter: function (renderOpts, params2) {
var column = params2.column
return column.filters.map(function (option2, oIndex) {
return h$4(
'select',
__assign$j(
__assign$j(
{ key: oIndex, class: 'vxe-default-select' },
getNativeAttrs(renderOpts)
),
getNativeFilterOns(renderOpts, params2, option2)
),
renderOpts.optionGroups
? renderNativeOptgroups(renderOpts, params2, renderNativeOptions)
: renderNativeOptions(renderOpts.options, renderOpts, params2)
)
})
},
defaultFilterMethod: handleFilterMethod,
renderItemContent: function (renderOpts, params2) {
return [
h$4(
'select',
__assign$j(
__assign$j(
{ class: 'vxe-default-select' },
getNativeAttrs(renderOpts)
),
getNativeItemOns(renderOpts, params2)
),
renderOpts.optionGroups
? renderNativeOptgroups(
renderOpts,
params2,
renderNativeFormOptions
)
: renderNativeFormOptions(renderOpts.options, renderOpts, params2)
),
]
},
cellExportMethod: handleExportSelectMethod,
},
$input: {
autofocus: '.vxe-input--inner',
renderEdit: defaultEditRender,
renderCell: function (renderOpts, params2) {
var _a2 = renderOpts.props,
props2 = _a2 === void 0 ? {} : _a2
var row = params2.row,
column = params2.column
var digits = props2.digits || GlobalConfig.input.digits
var cellValue = xeUtils.get(row, column.property)
if (cellValue) {
switch (props2.type) {
case 'date':
case 'week':
case 'month':
case 'year':
cellValue = getLabelFormatDate(cellValue, props2)
break
case 'float':
cellValue = xeUtils.toFixed(
xeUtils.floor(cellValue, digits),
digits
)
break
}
}
return getCellLabelVNs(renderOpts, params2, cellValue)
},
renderDefault: defaultEditRender,
renderFilter: defaultFilterRender,
defaultFilterMethod: handleFilterMethod,
renderItemContent: defaultItemRender,
},
$textarea: {
autofocus: '.vxe-textarea--inner',
renderItemContent: defaultItemRender,
},
$button: {
renderDefault: defaultButtonEditRender,
renderItemContent: defaultButtonItemRender,
},
$buttons: {
renderDefault: defaultButtonsEditRender,
renderItemContent: defaultButtonsItemRender,
},
$select: {
autofocus: '.vxe-input--inner',
renderEdit: defaultSelectEditRender,
renderDefault: defaultSelectEditRender,
renderCell: function (renderOpts, params2) {
return getCellLabelVNs(
renderOpts,
params2,
getSelectCellValue(renderOpts, params2)
)
},
renderFilter: function (renderOpts, params2) {
var column = params2.column
var options2 = renderOpts.options,
optionProps = renderOpts.optionProps,
optionGroups = renderOpts.optionGroups,
optionGroupProps = renderOpts.optionGroupProps
return column.filters.map(function (option2, oIndex) {
var optionValue = option2.data
return h$4(
getDefaultComponent(renderOpts),
__assign$j(
__assign$j(
{ key: oIndex },
getCellEditFilterProps(renderOpts, params2, optionValue, {
options: options2,
optionProps,
optionGroups,
optionGroupProps,
})
),
getFilterOns(renderOpts, params2, option2)
)
)
})
},
defaultFilterMethod: handleFilterMethod,
renderItemContent: function (renderOpts, params2) {
var data2 = params2.data,
property2 = params2.property
var options2 = renderOpts.options,
optionProps = renderOpts.optionProps,
optionGroups = renderOpts.optionGroups,
optionGroupProps = renderOpts.optionGroupProps
var itemValue = xeUtils.get(data2, property2)
return [
h$4(
getDefaultComponent(renderOpts),
__assign$j(
__assign$j(
{},
getComponentFormItemProps(renderOpts, params2, itemValue, {
options: options2,
optionProps,
optionGroups,
optionGroupProps,
})
),
getItemOns(renderOpts, params2)
)
),
]
},
cellExportMethod: handleExportSelectMethod,
},
$radio: {
autofocus: '.vxe-radio--input',
renderItemContent: defaultFormItemRadioAndCheckboxRender,
},
$checkbox: {
autofocus: '.vxe-checkbox--input',
renderItemContent: defaultFormItemRadioAndCheckboxRender,
},
$switch: {
autofocus: '.vxe-switch--button',
renderEdit: defaultEditRender,
renderDefault: defaultEditRender,
renderItemContent: defaultItemRender,
},
}
var renderer = {
mixin: function (opts) {
xeUtils.each(opts, function (options2, name2) {
return renderer.add(name2, options2)
})
return renderer
},
get: function (name2) {
return renderMap[name2] || null
},
add: function (name2, options2) {
if (name2 && options2) {
var renders_1 = renderMap[name2]
if (renders_1) {
Object.assign(renders_1, options2)
} else {
renderMap[name2] = options2
}
}
return renderer
},
delete: function (name2) {
delete renderMap[name2]
return renderer
},
}
var VXECommandsStore = (function () {
function VXECommandsStore2() {
this.store = {}
}
VXECommandsStore2.prototype.mixin = function (options2) {
var _this = this
xeUtils.each(options2, function (item2, key2) {
_this.add(key2, item2)
})
return this
}
VXECommandsStore2.prototype.has = function (name2) {
return !!this.get(name2)
}
VXECommandsStore2.prototype.get = function (name2) {
return this.store[name2]
}
VXECommandsStore2.prototype.add = function (name2, render2) {
var conf = this.store[name2]
if (xeUtils.isFunction(render2)) {
render2 = {
commandMethod: render2,
}
}
this.store[name2] = conf ? xeUtils.merge(conf, render2) : render2
return this
}
VXECommandsStore2.prototype.delete = function (name2) {
delete this.store[name2]
}
VXECommandsStore2.prototype.forEach = function (callback) {
xeUtils.objectEach(this.store, callback)
}
return VXECommandsStore2
})()
var commands = new VXECommandsStore()
var VXEMenusStore = (function () {
function VXEMenusStore2() {
this.store = {}
}
VXEMenusStore2.prototype.mixin = function (options2) {
var _this = this
xeUtils.each(options2, function (item2, key2) {
_this.add(key2, item2)
})
return this
}
VXEMenusStore2.prototype.has = function (name2) {
return !!this.get(name2)
}
VXEMenusStore2.prototype.get = function (name2) {
return this.store[name2]
}
VXEMenusStore2.prototype.add = function (name2, render2) {
var conf = this.store[name2]
if (xeUtils.isFunction(render2)) {
render2 = {
menuMethod: render2,
}
}
this.store[name2] = conf ? xeUtils.merge(conf, render2) : render2
return this
}
VXEMenusStore2.prototype.delete = function (name2) {
delete this.store[name2]
}
VXEMenusStore2.prototype.forEach = function (callback) {
xeUtils.objectEach(this.store, callback)
}
return VXEMenusStore2
})()
var menus = new VXEMenusStore()
var Store = (function () {
function Store3() {
this.store = {}
}
Store3.prototype.mixin = function (options2) {
var _this = this
xeUtils.each(options2, function (item2, key2) {
_this.add(key2, item2)
})
return this
}
Store3.prototype.has = function (name2) {
return !!this.get(name2)
}
Store3.prototype.get = function (name2) {
return this.store[name2]
}
Store3.prototype.add = function (name2, render2) {
var conf = this.store[name2]
this.store[name2] = conf ? xeUtils.merge(conf, render2) : render2
return this
}
Store3.prototype.delete = function (name2) {
delete this.store[name2]
}
Store3.prototype.forEach = function (callback) {
xeUtils.objectEach(this.store, callback)
}
return Store3
})()
var validators = new Store()
var hooks = new Store()
var config$X = function (options2) {
if (options2 && options2.zIndex) {
DomZIndex.setCurrent(options2.zIndex)
}
return xeUtils.merge(GlobalConfig, options2)
}
function getExportOrImpotType(types2, flag2) {
var rest = []
xeUtils.objectEach(types2, function (val2, type4) {
if (val2 === 0 || val2 === flag2) {
rest.push(type4)
}
})
return rest
}
var installedPlugins = []
function use$1(Plugin, options2) {
if (Plugin && Plugin.install) {
if (installedPlugins.indexOf(Plugin) === -1) {
Plugin.install(VXETable, options2)
installedPlugins.push(Plugin)
}
}
return VXETable
}
function t$4(key2, args) {
return GlobalConfig.i18n(key2, args)
}
function _t$1(key2, args) {
return key2
? xeUtils.toValueString(
GlobalConfig.translate ? GlobalConfig.translate(key2, args) : key2
)
: ''
}
var VXETableConfig = (function () {
function VXETableConfig2() {}
Object.defineProperty(VXETableConfig2.prototype, 'zIndex', {
get: function () {
return getLastZIndex()
},
enumerable: false,
configurable: true,
})
Object.defineProperty(VXETableConfig2.prototype, 'nextZIndex', {
get: function () {
return nextZIndex()
},
enumerable: false,
configurable: true,
})
Object.defineProperty(VXETableConfig2.prototype, 'exportTypes', {
get: function () {
return getExportOrImpotType(GlobalConfig.export.types, 1)
},
enumerable: false,
configurable: true,
})
Object.defineProperty(VXETableConfig2.prototype, 'importTypes', {
get: function () {
return getExportOrImpotType(GlobalConfig.export.types, 2)
},
enumerable: false,
configurable: true,
})
return VXETableConfig2
})()
var globalConfs = new VXETableConfig()
var v$1 = 'v4'
var setup = config$X
var globalStore = {}
var VXETable = {
v: v$1,
version: '4.5.12',
setup,
globalStore,
interceptor,
renderer,
commands,
formats,
validators,
menus,
hooks,
use: use$1,
t: t$4,
_t: _t$1,
config: config$X,
globalConfs,
}
var PanelComponent$1 = defineComponent({
name: 'VxeTableFilter',
props: {
filterStore: Object,
},
setup: function (props2) {
var $xetable = inject('$xetable', {})
var tableReactData = $xetable.reactData,
tableInternalData = $xetable.internalData
var computeHasCheckOption = computed(function () {
var filterStore = props2.filterStore
return (
filterStore &&
filterStore.options.some(function (option2) {
return option2.checked
})
)
})
var filterCheckAllEvent = function (evnt, value2) {
var filterStore = props2.filterStore
filterStore.options.forEach(function (option2) {
option2._checked = value2
option2.checked = value2
})
filterStore.isAllSelected = value2
filterStore.isIndeterminate = false
}
var confirmFilter = function (evnt) {
var filterStore = props2.filterStore
filterStore.options.forEach(function (option2) {
option2.checked = option2._checked
})
$xetable.confirmFilterEvent(evnt)
}
var changeRadioOption = function (evnt, checked2, item2) {
var filterStore = props2.filterStore
filterStore.options.forEach(function (option2) {
option2._checked = false
})
item2._checked = checked2
$xetable.checkFilterOptions()
confirmFilter(evnt)
}
var resetFilter = function (evnt) {
var filterStore = props2.filterStore
$xetable.handleClearFilter(filterStore.column)
$xetable.confirmFilterEvent(evnt)
}
var changeMultipleOption = function (evnt, checked2, item2) {
item2._checked = checked2
$xetable.checkFilterOptions()
}
var changeOption = function (evnt, checked2, item2) {
var filterStore = props2.filterStore
if (filterStore.multiple) {
changeMultipleOption(evnt, checked2, item2)
} else {
changeRadioOption(evnt, checked2, item2)
}
}
var changeAllOption = function (evnt, checked2) {
var filterStore = props2.filterStore
if (filterStore.multiple) {
filterCheckAllEvent(evnt, checked2)
} else {
resetFilter(evnt)
}
}
var $panel = {
changeRadioOption,
changeMultipleOption,
changeAllOption,
changeOption,
confirmFilter,
resetFilter,
}
var renderOptions = function (filterRender, compConf) {
var filterStore = props2.filterStore
var column = filterStore.column,
multiple = filterStore.multiple,
maxHeight = filterStore.maxHeight
var slots = column.slots
var filterSlot = slots ? slots.filter : null
var params2 = Object.assign({}, tableInternalData._currFilterParams, {
$panel,
$table: $xetable,
})
if (filterSlot) {
return [
h$4(
'div',
{
class: 'vxe-table--filter-template',
},
$xetable.callSlot(filterSlot, params2)
),
]
} else if (compConf && compConf.renderFilter) {
return [
h$4(
'div',
{
class: 'vxe-table--filter-template',
},
getSlotVNs(compConf.renderFilter(filterRender, params2))
),
]
}
var isAllChecked = multiple
? filterStore.isAllSelected
: !filterStore.options.some(function (item2) {
return item2._checked
})
var isAllIndeterminate = multiple && filterStore.isIndeterminate
return [
h$4(
'ul',
{
class: 'vxe-table--filter-header',
},
[
h$4(
'li',
{
class: [
'vxe-table--filter-option',
{
'is--checked': isAllChecked,
'is--indeterminate': isAllIndeterminate,
},
],
title: GlobalConfig.i18n(
multiple ? 'vxe.table.allTitle' : 'vxe.table.allFilter'
),
onClick: function (evnt) {
changeAllOption(evnt, !filterStore.isAllSelected)
},
},
(multiple
? [
h$4('span', {
class: [
'vxe-checkbox--icon',
isAllIndeterminate
? GlobalConfig.icon.TABLE_CHECKBOX_INDETERMINATE
: isAllChecked
? GlobalConfig.icon.TABLE_CHECKBOX_CHECKED
: GlobalConfig.icon.TABLE_CHECKBOX_UNCHECKED,
],
}),
]
: []
).concat([
h$4(
'span',
{
class: 'vxe-checkbox--label',
},
GlobalConfig.i18n('vxe.table.allFilter')
),
])
),
]
),
h$4(
'ul',
{
class: 'vxe-table--filter-body',
style: maxHeight
? {
maxHeight: ''.concat(maxHeight, 'px'),
}
: {},
},
filterStore.options.map(function (item2) {
var isChecked = item2._checked
return h$4(
'li',
{
class: [
'vxe-table--filter-option',
{
'is--checked': item2._checked,
},
],
title: item2.label,
onClick: function (evnt) {
changeOption(evnt, !item2._checked, item2)
},
},
(multiple
? [
h$4('span', {
class: [
'vxe-checkbox--icon',
isChecked
? GlobalConfig.icon.TABLE_CHECKBOX_CHECKED
: GlobalConfig.icon.TABLE_CHECKBOX_UNCHECKED,
],
}),
]
: []
).concat([
h$4(
'span',
{
class: 'vxe-checkbox--label',
},
formatText(item2.label, 1)
),
])
)
})
),
]
}
var renderFooters = function () {
var filterStore = props2.filterStore
var column = filterStore.column,
multiple = filterStore.multiple
var hasCheckOption = computeHasCheckOption.value
var filterRender = column.filterRender
var compConf = filterRender
? VXETable.renderer.get(filterRender.name)
: null
var isDisabled =
!hasCheckOption &&
!filterStore.isAllSelected &&
!filterStore.isIndeterminate
return multiple && (!compConf || compConf.showFilterFooter !== false)
? [
h$4(
'div',
{
class: 'vxe-table--filter-footer',
},
[
h$4(
'button',
{
class: {
'is--disabled': isDisabled,
},
disabled: isDisabled,
onClick: confirmFilter,
},
GlobalConfig.i18n('vxe.table.confirmFilter')
),
h$4(
'button',
{
onClick: resetFilter,
},
GlobalConfig.i18n('vxe.table.resetFilter')
),
]
),
]
: []
}
var renderVN = function () {
var filterStore = props2.filterStore
var initStore = tableReactData.initStore
var column = filterStore.column
var filterRender = column ? column.filterRender : null
var compConf = filterRender
? VXETable.renderer.get(filterRender.name)
: null
var filterClassName = compConf ? compConf.filterClassName : ''
var params2 = Object.assign({}, tableInternalData._currFilterParams, {
$panel,
$table: $xetable,
})
return h$4(
'div',
{
class: [
'vxe-table--filter-wrapper',
'filter--prevent-default',
getPropClass(filterClassName, params2),
{
'is--animat': $xetable.props.animat,
'is--multiple': filterStore.multiple,
'is--active': filterStore.visible,
},
],
style: filterStore.style,
},
initStore.filter && filterStore.visible
? renderOptions(filterRender, compConf).concat(renderFooters())
: []
)
}
return renderVN
},
})
var __assign$i =
(globalThis && globalThis.__assign) ||
function () {
__assign$i =
Object.assign ||
function (t3) {
for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
s2 = arguments[i2]
for (var p2 in s2)
if (Object.prototype.hasOwnProperty.call(s2, p2)) t3[p2] = s2[p2]
}
return t3
}
return __assign$i.apply(this, arguments)
}
var dynamicContainerElem
var dynamicStore = reactive({
modals: [],
})
var VxeDynamics = defineComponent({
setup: function () {
return function () {
var modals = dynamicStore.modals
return h$4(
'div',
{
class: 'vxe-dynamics--modal',
},
modals.map(function (item2) {
return h$4(resolveComponent('vxe-modal'), item2)
})
)
}
},
})
var dynamicApp = createApp$1(VxeDynamics)
function checkDynamic() {
if (!dynamicContainerElem) {
dynamicContainerElem = document.createElement('div')
dynamicContainerElem.className = 'vxe-dynamics'
document.body.appendChild(dynamicContainerElem)
dynamicApp.mount(dynamicContainerElem)
}
}
dynamicApp.component(PanelComponent$1.name, PanelComponent$1)
var PanelComponent = defineComponent({
name: 'VxeTableContextMenu',
setup: function (props2, context2) {
var xID = xeUtils.uniqueId()
var $xetable = inject('$xetable', {})
var tableReactData = $xetable.reactData
var refElem = ref()
var refMaps = {
refElem,
}
var $xemenupanel = {
xID,
props: props2,
context: context2,
getRefMaps: function () {
return refMaps
},
}
var renderVN = function () {
var ctxMenuStore = tableReactData.ctxMenuStore
var computeMenuOpts = $xetable.getComputeMaps().computeMenuOpts
var menuOpts = computeMenuOpts.value
return h$4(
Teleport,
{
to: 'body',
disabled: false,
},
[
h$4(
'div',
{
ref: refElem,
class: [
'vxe-table--context-menu-wrapper',
menuOpts.className,
{
'is--visible': ctxMenuStore.visible,
},
],
style: ctxMenuStore.style,
},
ctxMenuStore.list.map(function (options2, gIndex) {
return options2.every(function (item2) {
return item2.visible === false
})
? createCommentVNode()
: h$4(
'ul',
{
class: 'vxe-context-menu--option-wrapper',
key: gIndex,
},
options2.map(function (item2, index2) {
var hasChildMenus =
item2.children &&
item2.children.some(function (child) {
return child.visible !== false
})
return item2.visible === false
? null
: h$4(
'li',
{
class: [
item2.className,
{
'link--disabled': item2.disabled,
'link--active':
item2 === ctxMenuStore.selected,
},
],
key: ''.concat(gIndex, '_').concat(index2),
},
[
h$4(
'a',
{
class: 'vxe-context-menu--link',
onClick: function (evnt) {
$xetable.ctxMenuLinkEvent(evnt, item2)
},
onMouseover: function (evnt) {
$xetable.ctxMenuMouseoverEvent(evnt, item2)
},
onMouseout: function (evnt) {
$xetable.ctxMenuMouseoutEvent(evnt, item2)
},
},
[
h$4('i', {
class: [
'vxe-context-menu--link-prefix',
item2.prefixIcon,
],
}),
h$4(
'span',
{
class: 'vxe-context-menu--link-content',
},
getFuncText(item2.name)
),
h$4('i', {
class: [
'vxe-context-menu--link-suffix',
hasChildMenus
? item2.suffixIcon || 'suffix--haschild'
: item2.suffixIcon,
],
}),
]
),
hasChildMenus
? h$4(
'ul',
{
class: [
'vxe-table--context-menu-clild-wrapper',
{
'is--show':
item2 === ctxMenuStore.selected &&
ctxMenuStore.showChild,
},
],
},
item2.children.map(function (
child,
cIndex
) {
return child.visible === false
? null
: h$4(
'li',
{
class: [
child.className,
{
'link--disabled':
child.disabled,
'link--active':
child ===
ctxMenuStore.selectChild,
},
],
key: ''
.concat(gIndex, '_')
.concat(index2, '_')
.concat(cIndex),
},
[
h$4(
'a',
{
class:
'vxe-context-menu--link',
onClick: function (evnt) {
$xetable.ctxMenuLinkEvent(
evnt,
child
)
},
onMouseover: function (evnt) {
$xetable.ctxMenuMouseoverEvent(
evnt,
item2,
child
)
},
onMouseout: function (evnt) {
$xetable.ctxMenuMouseoutEvent(
evnt,
item2
)
},
},
[
h$4('i', {
class: [
'vxe-context-menu--link-prefix',
child.prefixIcon,
],
}),
h$4(
'span',
{
class:
'vxe-context-menu--link-content',
},
getFuncText(child.name)
),
]
),
]
)
})
)
: null,
]
)
})
)
})
),
]
)
}
$xemenupanel.renderVN = renderVN
return $xemenupanel
},
render: function () {
return this.renderVN()
},
})
var EVENT_KEYS = {
F2: 'F2',
ESCAPE: 'Escape',
ENTER: 'Enter',
TAB: 'Tab',
DELETE: 'Delete',
BACKSPACE: 'Backspace',
SPACEBAR: ' ',
CONTEXT_MENU: 'ContextMenu',
ARROW_UP: 'ArrowUp',
ARROW_DOWN: 'ArrowDown',
ARROW_LEFT: 'ArrowLeft',
ARROW_RIGHT: 'ArrowRight',
PAGE_UP: 'PageUp',
PAGE_DOWN: 'PageDown',
}
var convertEventKeys = {
' ': 'Spacebar',
Apps: EVENT_KEYS.CONTEXT_MENU,
Del: EVENT_KEYS.DELETE,
Up: EVENT_KEYS.ARROW_UP,
Down: EVENT_KEYS.ARROW_DOWN,
Left: EVENT_KEYS.ARROW_LEFT,
Right: EVENT_KEYS.ARROW_RIGHT,
}
var wheelName = browse.firefox ? 'DOMMouseScroll' : 'mousewheel'
var eventStore$1 = []
var hasEventKey = function (evnt, targetKey) {
var key2 = evnt.key
targetKey = targetKey.toLowerCase()
return key2
? targetKey === key2.toLowerCase() ||
!!(
convertEventKeys[key2] &&
convertEventKeys[key2].toLowerCase() === targetKey
)
: false
}
function triggerEvent(evnt) {
var isWheel = evnt.type === wheelName
eventStore$1.forEach(function (_a2) {
var type4 = _a2.type,
cb = _a2.cb
if (!evnt.cancelBubble) {
if (type4 === evnt.type || (isWheel && type4 === 'mousewheel')) {
cb(evnt)
}
}
})
}
var GlobalEvent = {
on: function (comp, type4, cb) {
eventStore$1.push({ comp, type: type4, cb })
},
off: function (comp, type4) {
xeUtils.remove(eventStore$1, function (item2) {
return item2.comp === comp && item2.type === type4
})
},
trigger: triggerEvent,
eqKeypad: function (evnt, keyVal) {
var key2 = evnt.key
if (keyVal.toLowerCase() === key2.toLowerCase()) {
return true
}
return false
},
}
if (browse.isDoc) {
if (!browse.msie) {
document.addEventListener('copy', triggerEvent, false)
document.addEventListener('cut', triggerEvent, false)
document.addEventListener('paste', triggerEvent, false)
}
document.addEventListener('keydown', triggerEvent, false)
document.addEventListener('contextmenu', triggerEvent, false)
window.addEventListener('mousedown', triggerEvent, false)
window.addEventListener('blur', triggerEvent, false)
window.addEventListener('resize', triggerEvent, false)
window.addEventListener(
wheelName,
xeUtils.throttle(triggerEvent, 100, { leading: true, trailing: false }),
{ passive: true, capture: false }
)
}
var __assign$h =
(globalThis && globalThis.__assign) ||
function () {
__assign$h =
Object.assign ||
function (t3) {
for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
s2 = arguments[i2]
for (var p2 in s2)
if (Object.prototype.hasOwnProperty.call(s2, p2)) t3[p2] = s2[p2]
}
return t3
}
return __assign$h.apply(this, arguments)
}
dynamicApp.component(PanelComponent.name, PanelComponent)
var __assign$g =
(globalThis && globalThis.__assign) ||
function () {
__assign$g =
Object.assign ||
function (t3) {
for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
s2 = arguments[i2]
for (var p2 in s2)
if (Object.prototype.hasOwnProperty.call(s2, p2)) t3[p2] = s2[p2]
}
return t3
}
return __assign$g.apply(this, arguments)
}
var __spreadArray$5 =
(globalThis && globalThis.__spreadArray) ||
function (to, from, pack2) {
if (pack2 || arguments.length === 2)
for (var i2 = 0, l2 = from.length, ar2; i2 < l2; i2++) {
if (ar2 || !(i2 in from)) {
if (!ar2) ar2 = Array.prototype.slice.call(from, 0, i2)
ar2[i2] = from[i2]
}
}
return to.concat(ar2 || Array.prototype.slice.call(from))
}
var tableEditMethodKeys = [
'insert',
'insertAt',
'insertNextAt',
'remove',
'removeCheckboxRow',
'removeRadioRow',
'removeCurrentRow',
'getRecordset',
'getInsertRecords',
'getRemoveRecords',
'getUpdateRecords',
'getEditRecord',
'getActiveRecord',
'getSelectedCell',
'clearEdit',
'clearActived',
'clearSelected',
'isEditByRow',
'isActiveByRow',
'setEditRow',
'setActiveRow',
'setEditCell',
'setActiveCell',
'setSelectCell',
]
var editHook = {
setupTable: function ($xetable) {
var props2 = $xetable.props,
reactData = $xetable.reactData,
internalData = $xetable.internalData
var refElem = $xetable.getRefMaps().refElem
var _a2 = $xetable.getComputeMaps(),
computeMouseOpts = _a2.computeMouseOpts,
computeEditOpts = _a2.computeEditOpts,
computeCheckboxOpts = _a2.computeCheckboxOpts,
computeTreeOpts = _a2.computeTreeOpts
var editMethods = {}
var editPrivateMethods = {}
var getEditColumnModel = function (row, column) {
var model = column.model,
editRender = column.editRender
if (editRender) {
model.value = getCellValue(row, column)
model.update = false
}
}
var setEditColumnModel = function (row, column) {
var model = column.model,
editRender = column.editRender
if (editRender && model.update) {
setCellValue(row, column, model.value)
model.update = false
model.value = null
}
}
var removeCellSelectedClass = function () {
var el2 = refElem.value
if (el2) {
var cell = el2.querySelector('.col--selected')
if (cell) {
removeClass(cell, 'col--selected')
}
}
}
function syncActivedCell() {
var editStore = reactData.editStore,
tableColumn = reactData.tableColumn
var editOpts = computeEditOpts.value
var actived = editStore.actived
var row = actived.row,
column = actived.column
if (row || column) {
if (editOpts.mode === 'row') {
tableColumn.forEach(function (column2) {
return setEditColumnModel(row, column2)
})
} else {
setEditColumnModel(row, column)
}
}
}
function insertTreeRow(newRecords, isAppend) {
var tableFullTreeData = internalData.tableFullTreeData,
afterFullData = internalData.afterFullData,
fullDataRowIdData = internalData.fullDataRowIdData,
fullAllDataRowIdData = internalData.fullAllDataRowIdData
var treeOpts = computeTreeOpts.value
var rowField = treeOpts.rowField,
parentField = treeOpts.parentField,
mapChildrenField = treeOpts.mapChildrenField
var childrenField = treeOpts.children || treeOpts.childrenField
var funcName = isAppend ? 'push' : 'unshift'
newRecords.forEach(function (item2) {
var parentRowId = item2[parentField]
var rowid = getRowid($xetable, item2)
var matchObj = parentRowId
? xeUtils.findTree(
tableFullTreeData,
function (item3) {
return parentRowId === item3[rowField]
},
{ children: mapChildrenField }
)
: null
if (matchObj) {
var parentRow = matchObj.item
var parentRest = fullAllDataRowIdData[getRowid($xetable, parentRow)]
var parentLevel = parentRest ? parentRest.level : 0
var parentChilds = parentRow[childrenField]
var mapChilds = parentRow[mapChildrenField]
if (!xeUtils.isArray(parentChilds)) {
parentChilds = parentRow[childrenField] = []
}
if (!xeUtils.isArray(mapChilds)) {
mapChilds = parentRow[childrenField] = []
}
parentChilds[funcName](item2)
mapChilds[funcName](item2)
var rest = {
row: item2,
rowid,
seq: -1,
index: -1,
_index: -1,
$index: -1,
items: parentChilds,
parent,
level: parentLevel + 1,
}
fullDataRowIdData[rowid] = rest
fullAllDataRowIdData[rowid] = rest
} else {
afterFullData[funcName](item2)
tableFullTreeData[funcName](item2)
var rest = {
row: item2,
rowid,
seq: -1,
index: -1,
_index: -1,
$index: -1,
items: tableFullTreeData,
parent: null,
level: 0,
}
fullDataRowIdData[rowid] = rest
fullAllDataRowIdData[rowid] = rest
}
})
}
var handleInsertRowAt = function (records, row, isInsertNextRow) {
var treeConfig = props2.treeConfig
var mergeList = reactData.mergeList,
editStore = reactData.editStore
var tableFullTreeData = internalData.tableFullTreeData,
afterFullData = internalData.afterFullData,
tableFullData = internalData.tableFullData,
fullDataRowIdData = internalData.fullDataRowIdData,
fullAllDataRowIdData = internalData.fullAllDataRowIdData
var treeOpts = computeTreeOpts.value
var transform3 = treeOpts.transform,
rowField = treeOpts.rowField,
mapChildrenField = treeOpts.mapChildrenField
var childrenField = treeOpts.children || treeOpts.childrenField
if (!xeUtils.isArray(records)) {
records = [records]
}
var newRecords = reactive(
$xetable.defineField(
records.map(function (record) {
var _a3
return Object.assign(
treeConfig && transform3
? ((_a3 = {}),
(_a3[mapChildrenField] = []),
(_a3[childrenField] = []),
_a3)
: {},
record
)
})
)
)
if (!row) {
if (treeConfig && transform3) {
insertTreeRow(newRecords, false)
} else {
afterFullData.unshift.apply(afterFullData, newRecords)
tableFullData.unshift.apply(tableFullData, newRecords)
mergeList.forEach(function (mergeItem) {
var mergeRowIndex = mergeItem.row
if (mergeRowIndex > 0) {
mergeItem.row = mergeRowIndex + newRecords.length
}
})
}
} else {
if (row === -1) {
if (treeConfig && transform3) {
insertTreeRow(newRecords, true)
} else {
afterFullData.push.apply(afterFullData, newRecords)
tableFullData.push.apply(tableFullData, newRecords)
mergeList.forEach(function (mergeItem) {
var mergeRowIndex = mergeItem.row,
mergeRowspan = mergeItem.rowspan
if (mergeRowIndex + mergeRowspan > afterFullData.length) {
mergeItem.rowspan = mergeRowspan + newRecords.length
}
})
}
} else {
if (treeConfig && transform3) {
var matchMapObj_1 = xeUtils.findTree(
tableFullTreeData,
function (item2) {
return row[rowField] === item2[rowField]
},
{ children: mapChildrenField }
)
if (matchMapObj_1) {
var parentRow_1 = matchMapObj_1.parent
var parentMapChilds_1 = parentRow_1
? parentRow_1[mapChildrenField]
: tableFullTreeData
var parentRest =
fullAllDataRowIdData[getRowid($xetable, parentRow_1)]
var parentLevel_1 = parentRest ? parentRest.level : 0
newRecords.forEach(function (item2, i2) {
var rowid = getRowid($xetable, item2)
if (parentRow_1) {
item2[treeOpts.parentField] = parentRow_1[rowField]
}
var targetIndex2 = matchMapObj_1.index + i2
if (isInsertNextRow) {
targetIndex2 = targetIndex2 + 1
}
parentMapChilds_1.splice(targetIndex2, 0, item2)
var rest = {
row: item2,
rowid,
seq: -1,
index: -1,
_index: -1,
$index: -1,
items: parentMapChilds_1,
parent: parentRow_1,
level: parentLevel_1 + 1,
}
fullDataRowIdData[rowid] = rest
fullAllDataRowIdData[rowid] = rest
})
if (parentRow_1) {
var matchObj = xeUtils.findTree(
tableFullTreeData,
function (item2) {
return row[rowField] === item2[rowField]
},
{ children: childrenField }
)
if (matchObj) {
var parentChilds = matchObj.items
var targetIndex = matchObj.index
if (isInsertNextRow) {
targetIndex = targetIndex + 1
}
parentChilds.splice.apply(
parentChilds,
__spreadArray$5([targetIndex, 0], newRecords, false)
)
}
}
} else {
insertTreeRow(newRecords, true)
}
} else {
if (treeConfig) {
throw new Error(getLog('vxe.error.noTree', ['insert']))
}
var afIndex_1 = -1
if (xeUtils.isNumber(row)) {
if (row < afterFullData.length) {
afIndex_1 = row
}
} else {
afIndex_1 = $xetable.findRowIndexOf(afterFullData, row)
}
if (isInsertNextRow) {
afIndex_1 = Math.max(afterFullData.length, afIndex_1 + 1)
}
if (afIndex_1 === -1) {
throw new Error(errLog('vxe.error.unableInsert'))
}
afterFullData.splice.apply(
afterFullData,
__spreadArray$5([afIndex_1, 0], newRecords, false)
)
tableFullData.splice.apply(
tableFullData,
__spreadArray$5(
[$xetable.findRowIndexOf(tableFullData, row), 0],
newRecords,
false
)
)
mergeList.forEach(function (mergeItem) {
var mergeRowIndex = mergeItem.row,
mergeRowspan = mergeItem.rowspan
if (mergeRowIndex > afIndex_1) {
mergeItem.row = mergeRowIndex + newRecords.length
} else if (mergeRowIndex + mergeRowspan > afIndex_1) {
mergeItem.rowspan = mergeRowspan + newRecords.length
}
})
}
}
}
var insertMaps = editStore.insertMaps
newRecords.forEach(function (newRow) {
var rowid = getRowid($xetable, newRow)
insertMaps[rowid] = newRow
})
$xetable.cacheRowMap()
$xetable.updateScrollYStatus()
$xetable.handleTableData(treeConfig && transform3)
if (!(treeConfig && transform3)) {
$xetable.updateAfterDataIndex()
}
$xetable.updateFooter()
$xetable.checkSelectionStatus()
if (reactData.scrollYLoad) {
$xetable.updateScrollYSpace()
}
return nextTick()
.then(function () {
$xetable.updateCellAreas()
return $xetable.recalculate()
})
.then(function () {
return {
row: newRecords.length ? newRecords[newRecords.length - 1] : null,
rows: newRecords,
}
})
}
editMethods = {
insert: function (records) {
return handleInsertRowAt(records, null)
},
insertAt: function (records, row) {
return handleInsertRowAt(records, row)
},
insertNextAt: function (records, row) {
return handleInsertRowAt(records, row, true)
},
remove: function (rows) {
var treeConfig = props2.treeConfig
var mergeList = reactData.mergeList,
editStore = reactData.editStore,
selectCheckboxMaps = reactData.selectCheckboxMaps
var tableFullTreeData = internalData.tableFullTreeData,
afterFullData = internalData.afterFullData,
tableFullData = internalData.tableFullData
var checkboxOpts = computeCheckboxOpts.value
var treeOpts = computeTreeOpts.value
var transform3 = treeOpts.transform,
mapChildrenField = treeOpts.mapChildrenField
var childrenField = treeOpts.children || treeOpts.childrenField
var actived = editStore.actived,
removeMaps = editStore.removeMaps,
insertMaps = editStore.insertMaps
var checkField = checkboxOpts.checkField
var delList = []
if (!rows) {
rows = tableFullData
} else if (!xeUtils.isArray(rows)) {
rows = [rows]
}
rows.forEach(function (row) {
if (!$xetable.isInsertByRow(row)) {
var rowid = getRowid($xetable, row)
removeMaps[rowid] = row
}
})
if (!checkField) {
var selectRowMaps_1 = __assign$g({}, selectCheckboxMaps)
rows.forEach(function (row) {
var rowid = getRowid($xetable, row)
if (selectRowMaps_1[rowid]) {
delete selectRowMaps_1[rowid]
}
})
reactData.selectCheckboxMaps = selectRowMaps_1
}
if (tableFullData === rows) {
rows = delList = tableFullData.slice(0)
internalData.tableFullData = []
internalData.afterFullData = []
$xetable.clearMergeCells()
} else {
if (treeConfig && transform3) {
rows.forEach(function (row) {
var rowid = getRowid($xetable, row)
var matchMapObj = xeUtils.findTree(
tableFullTreeData,
function (item2) {
return rowid === getRowid($xetable, item2)
},
{ children: mapChildrenField }
)
if (matchMapObj) {
var rItems = matchMapObj.items.splice(matchMapObj.index, 1)
delList.push(rItems[0])
}
var matchObj = xeUtils.findTree(
tableFullTreeData,
function (item2) {
return rowid === getRowid($xetable, item2)
},
{ children: childrenField }
)
if (matchObj) {
matchObj.items.splice(matchObj.index, 1)
}
var afIndex = $xetable.findRowIndexOf(afterFullData, row)
if (afIndex > -1) {
afterFullData.splice(afIndex, 1)
}
})
} else {
rows.forEach(function (row) {
var tfIndex = $xetable.findRowIndexOf(tableFullData, row)
if (tfIndex > -1) {
var rItems = tableFullData.splice(tfIndex, 1)
delList.push(rItems[0])
}
var afIndex = $xetable.findRowIndexOf(afterFullData, row)
if (afIndex > -1) {
mergeList.forEach(function (mergeItem) {
var mergeRowIndex = mergeItem.row,
mergeRowspan = mergeItem.rowspan
if (mergeRowIndex > afIndex) {
mergeItem.row = mergeRowIndex - 1
} else if (mergeRowIndex + mergeRowspan > afIndex) {
mergeItem.rowspan = mergeRowspan - 1
}
})
afterFullData.splice(afIndex, 1)
}
})
}
}
if (actived.row && $xetable.findRowIndexOf(rows, actived.row) > -1) {
editMethods.clearEdit()
}
rows.forEach(function (row) {
var rowid = getRowid($xetable, row)
if (insertMaps[rowid]) {
delete insertMaps[rowid]
}
})
$xetable.updateFooter()
$xetable.cacheRowMap()
$xetable.handleTableData(treeConfig && transform3)
if (!(treeConfig && transform3)) {
$xetable.updateAfterDataIndex()
}
$xetable.checkSelectionStatus()
if (reactData.scrollYLoad) {
$xetable.updateScrollYSpace()
}
return nextTick()
.then(function () {
$xetable.updateCellAreas()
return $xetable.recalculate()
})
.then(function () {
return {
row: delList.length ? delList[delList.length - 1] : null,
rows: delList,
}
})
},
removeCheckboxRow: function () {
return editMethods
.remove($xetable.getCheckboxRecords())
.then(function (params2) {
$xetable.clearCheckboxRow()
return params2
})
},
removeRadioRow: function () {
var radioRecord = $xetable.getRadioRecord()
return editMethods.remove(radioRecord || []).then(function (params2) {
$xetable.clearRadioRow()
return params2
})
},
removeCurrentRow: function () {
var currentRecord = $xetable.getCurrentRecord()
return editMethods.remove(currentRecord || []).then(function (params2) {
$xetable.clearCurrentRow()
return params2
})
},
getRecordset: function () {
return {
insertRecords: editMethods.getInsertRecords(),
removeRecords: editMethods.getRemoveRecords(),
updateRecords: editMethods.getUpdateRecords(),
}
},
getInsertRecords: function () {
var editStore = reactData.editStore
var fullAllDataRowIdData = internalData.fullAllDataRowIdData
var insertMaps = editStore.insertMaps
var insertRecords = []
xeUtils.each(insertMaps, function (row, rowid) {
if (fullAllDataRowIdData[rowid]) {
insertRecords.push(row)
}
})
return insertRecords
},
getRemoveRecords: function () {
var editStore = reactData.editStore
var removeMaps = editStore.removeMaps
var removeRecords = []
xeUtils.each(removeMaps, function (row) {
removeRecords.push(row)
})
return removeRecords
},
getUpdateRecords: function () {
var keepSource = props2.keepSource,
treeConfig = props2.treeConfig
var tableFullData = internalData.tableFullData
var treeOpts = computeTreeOpts.value
if (keepSource) {
syncActivedCell()
if (treeConfig) {
return xeUtils.filterTree(
tableFullData,
function (row) {
return $xetable.isUpdateByRow(row)
},
treeOpts
)
}
return tableFullData.filter(function (row) {
return $xetable.isUpdateByRow(row)
})
}
return []
},
getActiveRecord: function () {
return this.getEditRecord()
},
getEditRecord: function () {
var editStore = reactData.editStore
var afterFullData = internalData.afterFullData
var el2 = refElem.value
var _a3 = editStore.actived,
args = _a3.args,
row = _a3.row
if (
args &&
$xetable.findRowIndexOf(afterFullData, row) > -1 &&
el2.querySelectorAll('.vxe-body--column.col--actived').length
) {
return Object.assign({}, args)
}
return null
},
getSelectedCell: function () {
var editStore = reactData.editStore
var _a3 = editStore.selected,
args = _a3.args,
column = _a3.column
if (args && column) {
return Object.assign({}, args)
}
return null
},
clearActived: function (evnt) {
return this.clearEdit(evnt)
},
clearEdit: function (evnt) {
var editStore = reactData.editStore
var actived = editStore.actived
var row = actived.row,
column = actived.column
if (row || column) {
syncActivedCell()
actived.args = null
actived.row = null
actived.column = null
$xetable.updateFooter()
$xetable.dispatchEvent(
'edit-closed',
{
row,
rowIndex: $xetable.getRowIndex(row),
$rowIndex: $xetable.getVMRowIndex(row),
column,
columnIndex: $xetable.getColumnIndex(column),
$columnIndex: $xetable.getVMColumnIndex(column),
},
evnt || null
)
}
if (GlobalConfig.cellVaildMode === 'obsolete') {
if ($xetable.clearValidate) {
return $xetable.clearValidate()
}
}
return nextTick()
},
clearSelected: function () {
var editStore = reactData.editStore
var selected = editStore.selected
selected.row = null
selected.column = null
removeCellSelectedClass()
return nextTick()
},
isActiveByRow: function (row) {
return this.isEditByRow(row)
},
isEditByRow: function (row) {
var editStore = reactData.editStore
return editStore.actived.row === row
},
setActiveRow: function (row) {
return editMethods.setEditRow(row)
},
setEditRow: function (row) {
var visibleColumn = internalData.visibleColumn
return $xetable.setEditCell(
row,
xeUtils.find(visibleColumn, function (column) {
return isEnableConf(column.editRender)
})
)
},
setActiveCell: function (row, fieldOrColumn) {
return editMethods.setEditCell(row, fieldOrColumn)
},
setEditCell: function (row, fieldOrColumn) {
var editConfig = props2.editConfig
var column = xeUtils.isString(fieldOrColumn)
? $xetable.getColumnByField(fieldOrColumn)
: fieldOrColumn
if (
row &&
column &&
isEnableConf(editConfig) &&
isEnableConf(column.editRender)
) {
return $xetable.scrollToRow(row, column).then(function () {
var cell = $xetable.getCell(row, column)
if (cell) {
editPrivateMethods.handleActived({
row,
rowIndex: $xetable.getRowIndex(row),
column,
columnIndex: $xetable.getColumnIndex(column),
cell,
$table: $xetable,
})
internalData._lastCallTime = Date.now()
}
return nextTick()
})
}
return nextTick()
},
setSelectCell: function (row, fieldOrColumn) {
var tableData2 = reactData.tableData
var editOpts = computeEditOpts.value
var column = xeUtils.isString(fieldOrColumn)
? $xetable.getColumnByField(fieldOrColumn)
: fieldOrColumn
if (row && column && editOpts.trigger !== 'manual') {
var rowIndex = $xetable.findRowIndexOf(tableData2, row)
if (rowIndex > -1 && column) {
var cell = $xetable.getCell(row, column)
var params2 = {
row,
rowIndex,
column,
columnIndex: $xetable.getColumnIndex(column),
cell,
}
$xetable.handleSelected(params2, {})
}
}
return nextTick()
},
}
editPrivateMethods = {
handleActived: function (params2, evnt) {
var editConfig = props2.editConfig,
mouseConfig = props2.mouseConfig
var editStore = reactData.editStore,
tableColumn = reactData.tableColumn
var editOpts = computeEditOpts.value
var mode2 = editOpts.mode
var actived = editStore.actived
var row = params2.row,
column = params2.column
var editRender = column.editRender
var cell = params2.cell || $xetable.getCell(row, column)
var beforeEditMethod =
editOpts.beforeEditMethod || editOpts.activeMethod
params2.cell = cell
if (isEnableConf(editConfig) && isEnableConf(editRender) && cell) {
if (
actived.row !== row ||
(mode2 === 'cell' ? actived.column !== column : false)
) {
var type4 = 'edit-disabled'
if (
!beforeEditMethod ||
beforeEditMethod(
__assign$g(__assign$g({}, params2), { $table: $xetable })
)
) {
if (mouseConfig) {
editMethods.clearSelected()
if ($xetable.clearCellAreas) {
$xetable.clearCellAreas()
$xetable.clearCopyCellArea()
}
}
$xetable.closeTooltip()
if (actived.column) {
editMethods.clearEdit(evnt)
}
type4 = 'edit-actived'
column.renderHeight = cell.offsetHeight
actived.args = params2
actived.row = row
actived.column = column
if (mode2 === 'row') {
tableColumn.forEach(function (column2) {
return getEditColumnModel(row, column2)
})
} else {
getEditColumnModel(row, column)
}
nextTick(function () {
editPrivateMethods.handleFocus(params2, evnt)
})
}
$xetable.dispatchEvent(
type4,
{
row,
rowIndex: $xetable.getRowIndex(row),
$rowIndex: $xetable.getVMRowIndex(row),
column,
columnIndex: $xetable.getColumnIndex(column),
$columnIndex: $xetable.getVMColumnIndex(column),
},
evnt
)
} else {
var oldColumn = actived.column
if (mouseConfig) {
editMethods.clearSelected()
if ($xetable.clearCellAreas) {
$xetable.clearCellAreas()
$xetable.clearCopyCellArea()
}
}
if (oldColumn !== column) {
var oldModel = oldColumn.model
if (oldModel.update) {
setCellValue(row, oldColumn, oldModel.value)
}
if ($xetable.clearValidate) {
$xetable.clearValidate(row, column)
}
}
column.renderHeight = cell.offsetHeight
actived.args = params2
actived.column = column
setTimeout(function () {
editPrivateMethods.handleFocus(params2, evnt)
})
}
$xetable.focus()
}
return nextTick()
},
handleFocus: function (params2) {
var row = params2.row,
column = params2.column,
cell = params2.cell
var editRender = column.editRender
if (isEnableConf(editRender)) {
var compRender = renderer.get(editRender.name)
var autofocus = editRender.autofocus,
autoselect = editRender.autoselect
var inputElem = void 0
if (!autofocus && compRender) {
autofocus = compRender.autofocus
}
if (!autoselect && compRender) {
autoselect = compRender.autoselect
}
if (xeUtils.isFunction(autofocus)) {
inputElem = autofocus.call(this, params2)
} else if (autofocus) {
inputElem = cell.querySelector(autofocus)
if (inputElem) {
inputElem.focus()
}
}
if (inputElem) {
if (autoselect) {
inputElem.select()
} else {
if (browse.msie) {
var textRange = inputElem.createTextRange()
textRange.collapse(false)
textRange.select()
}
}
} else {
$xetable.scrollToRow(row, column)
}
}
},
handleSelected: function (params2, evnt) {
var mouseConfig = props2.mouseConfig
var editStore = reactData.editStore
var mouseOpts = computeMouseOpts.value
var editOpts = computeEditOpts.value
var actived = editStore.actived,
selected = editStore.selected
var row = params2.row,
column = params2.column
var isMouseSelected = mouseConfig && mouseOpts.selected
var selectMethod = function () {
if (
isMouseSelected &&
(selected.row !== row || selected.column !== column)
) {
if (
actived.row !== row ||
(editOpts.mode === 'cell' ? actived.column !== column : false)
) {
editMethods.clearEdit(evnt)
editMethods.clearSelected()
if ($xetable.clearCellAreas) {
$xetable.clearCellAreas()
$xetable.clearCopyCellArea()
}
selected.args = params2
selected.row = row
selected.column = column
if (isMouseSelected) {
editPrivateMethods.addCellSelectedClass()
}
$xetable.focus()
if (evnt) {
$xetable.dispatchEvent('cell-selected', params2, evnt)
}
}
}
return nextTick()
}
return selectMethod()
},
addCellSelectedClass: function () {
var editStore = reactData.editStore
var selected = editStore.selected
var row = selected.row,
column = selected.column
removeCellSelectedClass()
if (row && column) {
var cell = $xetable.getCell(row, column)
if (cell) {
addClass(cell, 'col--selected')
}
}
},
}
return __assign$g(__assign$g({}, editMethods), editPrivateMethods)
},
setupGrid: function ($xegrid) {
return $xegrid.extendTableMethods(tableEditMethodKeys)
},
}
var VxeModuleEdit = {
install: function () {
VXETable.hooks.add('$tableEdit', editHook)
},
}
var Edit = VxeModuleEdit
function useSize(props2) {
var xesize = inject('xesize', null)
var computeSize = computed(function () {
return props2.size || (xesize ? xesize.value : null)
})
provide('xesize', computeSize)
return computeSize
}
var VxeButtonComponent = defineComponent({
name: 'VxeButton',
props: {
type: String,
className: [String, Function],
popupClassName: [String, Function],
size: {
type: String,
default: function () {
return GlobalConfig.button.size || GlobalConfig.size
},
},
name: [String, Number],
content: String,
placement: String,
status: String,
icon: String,
round: Boolean,
circle: Boolean,
disabled: Boolean,
loading: Boolean,
destroyOnClose: Boolean,
transfer: {
type: Boolean,
default: function () {
return GlobalConfig.button.transfer
},
},
},
emits: ['click', 'dropdown-click'],
setup: function (props2, context2) {
var slots = context2.slots,
emit2 = context2.emit
var xID = xeUtils.uniqueId()
var computeSize = useSize(props2)
var reactData = reactive({
inited: false,
showPanel: false,
animatVisible: false,
panelIndex: 0,
panelStyle: {},
panelPlacement: '',
})
var internalData = {
showTime: null,
}
var refElem = ref()
var refButton = ref()
var refBtnPanel = ref()
var refMaps = {
refElem,
}
var $xebutton = {
xID,
props: props2,
context: context2,
reactData,
internalData,
getRefMaps: function () {
return refMaps
},
}
var buttonMethods = {}
var computeIsFormBtn = computed(function () {
var type4 = props2.type
if (type4) {
return ['submit', 'reset', 'button'].indexOf(type4) > -1
}
return false
})
var computeBtnType = computed(function () {
var type4 = props2.type
return type4 && type4 === 'text' ? type4 : 'button'
})
var updateZindex = function () {
if (reactData.panelIndex < getLastZIndex()) {
reactData.panelIndex = nextZIndex()
}
}
var updatePlacement = function () {
return nextTick().then(function () {
var transfer = props2.transfer,
placement = props2.placement
var panelIndex = reactData.panelIndex
var targetElem = refButton.value
var panelElem = refBtnPanel.value
if (panelElem && targetElem) {
var targetHeight = targetElem.offsetHeight
var targetWidth = targetElem.offsetWidth
var panelHeight = panelElem.offsetHeight
var panelWidth = panelElem.offsetWidth
var marginSize = 5
var panelStyle = {
zIndex: panelIndex,
}
var _a2 = getAbsolutePos(targetElem),
top_1 = _a2.top,
left2 = _a2.left,
boundingTop = _a2.boundingTop,
visibleHeight = _a2.visibleHeight,
visibleWidth = _a2.visibleWidth
var panelPlacement = 'bottom'
if (transfer) {
var btnLeft = left2 + targetWidth - panelWidth
var btnTop = top_1 + targetHeight
if (placement === 'top') {
panelPlacement = 'top'
btnTop = top_1 - panelHeight
} else if (!placement) {
if (
boundingTop + targetHeight + panelHeight + marginSize >
visibleHeight
) {
panelPlacement = 'top'
btnTop = top_1 - panelHeight
}
if (btnTop < marginSize) {
panelPlacement = 'bottom'
btnTop = top_1 + targetHeight
}
}
if (btnLeft + panelWidth + marginSize > visibleWidth) {
btnLeft -= btnLeft + panelWidth + marginSize - visibleWidth
}
if (btnLeft < marginSize) {
btnLeft = marginSize
}
Object.assign(panelStyle, {
left: ''.concat(btnLeft, 'px'),
right: 'auto',
top: ''.concat(btnTop, 'px'),
minWidth: ''.concat(targetWidth, 'px'),
})
} else {
if (placement === 'top') {
panelPlacement = 'top'
panelStyle.bottom = ''.concat(targetHeight, 'px')
} else if (!placement) {
if (boundingTop + targetHeight + panelHeight > visibleHeight) {
if (boundingTop - targetHeight - panelHeight > marginSize) {
panelPlacement = 'top'
panelStyle.bottom = ''.concat(targetHeight, 'px')
}
}
}
}
reactData.panelStyle = panelStyle
reactData.panelPlacement = panelPlacement
return nextTick()
}
})
}
var clickEvent = function (evnt) {
buttonMethods.dispatchEvent('click', { $event: evnt }, evnt)
}
var mousedownDropdownEvent = function (evnt) {
var isLeftBtn = evnt.button === 0
if (isLeftBtn) {
evnt.stopPropagation()
}
}
var clickDropdownEvent = function (evnt) {
var dropdownElem = evnt.currentTarget
var panelElem = refBtnPanel.value
var _a2 = getEventTargetNode(evnt, dropdownElem, 'vxe-button'),
flag2 = _a2.flag,
targetElem = _a2.targetElem
if (flag2) {
if (panelElem) {
panelElem.dataset.active = 'N'
}
reactData.showPanel = false
setTimeout(function () {
if (!panelElem || panelElem.dataset.active !== 'Y') {
reactData.animatVisible = false
}
}, 350)
buttonMethods.dispatchEvent(
'dropdown-click',
{ name: targetElem.getAttribute('name'), $event: evnt },
evnt
)
}
}
var mouseenterEvent = function () {
var panelElem = refBtnPanel.value
if (panelElem) {
panelElem.dataset.active = 'Y'
reactData.animatVisible = true
setTimeout(function () {
if (panelElem.dataset.active === 'Y') {
reactData.showPanel = true
updateZindex()
updatePlacement()
setTimeout(function () {
if (reactData.showPanel) {
updatePlacement()
}
}, 50)
}
}, 20)
}
}
var mouseenterTargetEvent = function () {
var panelElem = refBtnPanel.value
if (panelElem) {
panelElem.dataset.active = 'Y'
if (!reactData.inited) {
reactData.inited = true
}
internalData.showTime = setTimeout(function () {
if (panelElem.dataset.active === 'Y') {
mouseenterEvent()
} else {
reactData.animatVisible = false
}
}, 250)
}
}
var closePanel = function () {
var panelElem = refBtnPanel.value
clearTimeout(internalData.showTime)
if (panelElem) {
panelElem.dataset.active = 'N'
setTimeout(function () {
if (panelElem.dataset.active !== 'Y') {
reactData.showPanel = false
setTimeout(function () {
if (panelElem.dataset.active !== 'Y') {
reactData.animatVisible = false
}
}, 350)
}
}, 100)
} else {
reactData.animatVisible = false
reactData.showPanel = false
}
}
var mouseleaveEvent = function () {
closePanel()
}
var renderContent = function () {
var content2 = props2.content,
icon = props2.icon,
loading2 = props2.loading
var contVNs = []
if (loading2) {
contVNs.push(
h$4('i', {
class: [
'vxe-button--loading-icon',
GlobalConfig.icon.BUTTON_LOADING,
],
})
)
} else if (slots.icon) {
contVNs.push(
h$4(
'span',
{
class: 'vxe-button--custom-icon',
},
slots.icon({})
)
)
} else if (icon) {
contVNs.push(
h$4('i', {
class: ['vxe-button--icon', icon],
})
)
}
if (slots.default) {
contVNs.push(
h$4(
'span',
{
class: 'vxe-button--content',
},
slots.default({})
)
)
} else if (content2) {
contVNs.push(
h$4(
'span',
{
class: 'vxe-button--content',
},
getFuncText(content2)
)
)
}
return contVNs
}
buttonMethods = {
dispatchEvent: function (type4, params2, evnt) {
emit2(
type4,
Object.assign({ $button: $xebutton, $event: evnt }, params2)
)
},
focus: function () {
var btnElem = refButton.value
btnElem.focus()
return nextTick()
},
blur: function () {
var btnElem = refButton.value
btnElem.blur()
return nextTick()
},
}
Object.assign($xebutton, buttonMethods)
onMounted(function () {
GlobalEvent.on($xebutton, 'mousewheel', function (evnt) {
var panelElem = refBtnPanel.value
if (reactData.showPanel && !getEventTargetNode(evnt, panelElem).flag) {
closePanel()
}
})
})
onUnmounted(function () {
GlobalEvent.off($xebutton, 'mousewheel')
})
var renderVN = function () {
var _a2, _b2, _c2, _d
var className = props2.className,
popupClassName = props2.popupClassName,
transfer = props2.transfer,
type4 = props2.type,
round2 = props2.round,
circle = props2.circle,
destroyOnClose = props2.destroyOnClose,
status = props2.status,
name2 = props2.name,
disabled = props2.disabled,
loading2 = props2.loading
var inited = reactData.inited,
showPanel = reactData.showPanel
var isFormBtn = computeIsFormBtn.value
var btnType = computeBtnType.value
var vSize = computeSize.value
if (slots.dropdowns) {
return h$4(
'div',
{
ref: refElem,
class: [
'vxe-button--dropdown',
className
? xeUtils.isFunction(className)
? className({ $button: $xebutton })
: className
: '',
((_a2 = {}),
(_a2['size--'.concat(vSize)] = vSize),
(_a2['is--active'] = showPanel),
_a2),
],
},
[
h$4(
'button',
{
ref: refButton,
class: [
'vxe-button',
'type--'.concat(btnType),
((_b2 = {}),
(_b2['size--'.concat(vSize)] = vSize),
(_b2['theme--'.concat(status)] = status),
(_b2['is--round'] = round2),
(_b2['is--circle'] = circle),
(_b2['is--disabled'] = disabled || loading2),
(_b2['is--loading'] = loading2),
_b2),
],
name: name2,
type: isFormBtn ? type4 : 'button',
disabled: disabled || loading2,
onMouseenter: mouseenterTargetEvent,
onMouseleave: mouseleaveEvent,
onClick: clickEvent,
},
renderContent().concat([
h$4('i', {
class: 'vxe-button--dropdown-arrow '.concat(
GlobalConfig.icon.BUTTON_DROPDOWN
),
}),
])
),
h$4(
Teleport,
{
to: 'body',
disabled: transfer ? !inited : true,
},
[
h$4(
'div',
{
ref: refBtnPanel,
class: [
'vxe-button--dropdown-panel',
popupClassName
? xeUtils.isFunction(popupClassName)
? popupClassName({ $button: $xebutton })
: popupClassName
: '',
((_c2 = {}),
(_c2['size--'.concat(vSize)] = vSize),
(_c2['animat--leave'] = reactData.animatVisible),
(_c2['animat--enter'] = showPanel),
_c2),
],
placement: reactData.panelPlacement,
style: reactData.panelStyle,
},
inited
? [
h$4(
'div',
{
class: 'vxe-button--dropdown-wrapper',
onMousedown: mousedownDropdownEvent,
onClick: clickDropdownEvent,
onMouseenter: mouseenterEvent,
onMouseleave: mouseleaveEvent,
},
destroyOnClose && !showPanel
? []
: slots.dropdowns({})
),
]
: []
),
]
),
]
)
}
return h$4(
'button',
{
ref: refButton,
class: [
'vxe-button',
'type--'.concat(btnType),
((_d = {}),
(_d['size--'.concat(vSize)] = vSize),
(_d['theme--'.concat(status)] = status),
(_d['is--round'] = round2),
(_d['is--circle'] = circle),
(_d['is--disabled'] = disabled || loading2),
(_d['is--loading'] = loading2),
_d),
],
name: name2,
type: isFormBtn ? type4 : 'button',
disabled: disabled || loading2,
onClick: clickEvent,
},
renderContent()
)
}
$xebutton.renderVN = renderVN
return $xebutton
},
render: function () {
return this.renderVN()
},
})
var VxeLoadingComponent = defineComponent({
name: 'VxeLoading',
props: {
modelValue: Boolean,
icon: String,
text: String,
},
setup: function (props2, _a2) {
var slots = _a2.slots
var computeLoadingIcon = computed(function () {
return props2.icon || GlobalConfig.icon.LOADING
})
var computeLoadingText = computed(function () {
var loadingText = GlobalConfig.loadingText
return (
props2.text ||
(loadingText === null
? loadingText
: GlobalConfig.i18n('vxe.loading.text'))
)
})
return function () {
var loadingIcon = computeLoadingIcon.value
var loadingText = computeLoadingText.value
return h$4(
'div',
{
class: [
'vxe-loading',
{
'is--visible': props2.modelValue,
},
],
},
slots.default
? [
h$4(
'div',
{
class: 'vxe-loading--warpper',
},
slots.default({})
),
]
: [
h$4(
'div',
{
class: 'vxe-loading--chunk',
},
[
loadingIcon
? h$4('i', {
class: loadingIcon,
})
: h$4('div', {
class: 'vxe-loading--spinner',
}),
loadingText
? h$4(
'div',
{
class: 'vxe-loading--text',
},
''.concat(loadingText)
)
: null,
]
),
]
)
}
},
})
var VxeLoading = Object.assign(VxeLoadingComponent, {
install: function (app2) {
app2.component(VxeLoadingComponent.name, VxeLoadingComponent)
},
})
var __assign$f =
(globalThis && globalThis.__assign) ||
function () {
__assign$f =
Object.assign ||
function (t3) {
for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
s2 = arguments[i2]
for (var p2 in s2)
if (Object.prototype.hasOwnProperty.call(s2, p2)) t3[p2] = s2[p2]
}
return t3
}
return __assign$f.apply(this, arguments)
}
var allActivedModals = []
var msgQueue = []
var VxeModalComponent = defineComponent({
name: 'VxeModal',
props: {
modelValue: Boolean,
id: String,
type: { type: String, default: 'modal' },
loading: { type: Boolean, default: null },
status: String,
iconStatus: String,
className: String,
top: {
type: [Number, String],
default: function () {
return GlobalConfig.modal.top
},
},
position: [String, Object],
title: String,
duration: {
type: [Number, String],
default: function () {
return GlobalConfig.modal.duration
},
},
message: [Number, String],
content: [Number, String],
cancelButtonText: {
type: String,
default: function () {
return GlobalConfig.modal.cancelButtonText
},
},
confirmButtonText: {
type: String,
default: function () {
return GlobalConfig.modal.confirmButtonText
},
},
lockView: {
type: Boolean,
default: function () {
return GlobalConfig.modal.lockView
},
},
lockScroll: Boolean,
mask: {
type: Boolean,
default: function () {
return GlobalConfig.modal.mask
},
},
maskClosable: {
type: Boolean,
default: function () {
return GlobalConfig.modal.maskClosable
},
},
escClosable: {
type: Boolean,
default: function () {
return GlobalConfig.modal.escClosable
},
},
resize: Boolean,
showHeader: {
type: Boolean,
default: function () {
return GlobalConfig.modal.showHeader
},
},
showFooter: {
type: Boolean,
default: function () {
return GlobalConfig.modal.showFooter
},
},
showZoom: Boolean,
showClose: {
type: Boolean,
default: function () {
return GlobalConfig.modal.showClose
},
},
dblclickZoom: {
type: Boolean,
default: function () {
return GlobalConfig.modal.dblclickZoom
},
},
width: [Number, String],
height: [Number, String],
minWidth: {
type: [Number, String],
default: function () {
return GlobalConfig.modal.minWidth
},
},
minHeight: {
type: [Number, String],
default: function () {
return GlobalConfig.modal.minHeight
},
},
zIndex: Number,
marginSize: {
type: [Number, String],
default: function () {
return GlobalConfig.modal.marginSize
},
},
fullscreen: Boolean,
draggable: {
type: Boolean,
default: function () {
return GlobalConfig.modal.draggable
},
},
remember: {
type: Boolean,
default: function () {
return GlobalConfig.modal.remember
},
},
destroyOnClose: {
type: Boolean,
default: function () {
return GlobalConfig.modal.destroyOnClose
},
},
showTitleOverflow: {
type: Boolean,
default: function () {
return GlobalConfig.modal.showTitleOverflow
},
},
transfer: {
type: Boolean,
default: function () {
return GlobalConfig.modal.transfer
},
},
storage: {
type: Boolean,
default: function () {
return GlobalConfig.modal.storage
},
},
storageKey: {
type: String,
default: function () {
return GlobalConfig.modal.storageKey
},
},
animat: {
type: Boolean,
default: function () {
return GlobalConfig.modal.animat
},
},
size: {
type: String,
default: function () {
return GlobalConfig.modal.size || GlobalConfig.size
},
},
beforeHideMethod: {
type: Function,
default: function () {
return GlobalConfig.modal.beforeHideMethod
},
},
slots: Object,
},
emits: [
'update:modelValue',
'show',
'hide',
'before-hide',
'close',
'confirm',
'cancel',
'zoom',
],
setup: function (props2, context2) {
var slots = context2.slots,
emit2 = context2.emit
var xID = xeUtils.uniqueId()
var computeSize = useSize(props2)
var reactData = reactive({
inited: false,
visible: false,
contentVisible: false,
modalTop: 0,
modalZindex: 0,
zoomLocat: null,
firstOpen: true,
})
var refElem = ref()
var refModalBox = ref()
var refConfirmBtn = ref()
var refCancelBtn = ref()
var refMaps = {
refElem,
}
var $xemodal = {
xID,
props: props2,
context: context2,
reactData,
getRefMaps: function () {
return refMaps
},
}
var modalMethods = {}
var computeIsMsg = computed(function () {
return props2.type === 'message'
})
var getBox = function () {
var boxElem = refModalBox.value
return boxElem
}
var recalculate = function () {
var width = props2.width,
height = props2.height
var boxElem = getBox()
boxElem.style.width = ''.concat(
width ? (isNaN(width) ? width : ''.concat(width, 'px')) : ''
)
boxElem.style.height = ''.concat(
height ? (isNaN(height) ? height : ''.concat(height, 'px')) : ''
)
return nextTick()
}
var updateZindex = function () {
var zIndex2 = props2.zIndex
var modalZindex = reactData.modalZindex
if (zIndex2) {
reactData.modalZindex = zIndex2
} else if (modalZindex < getLastZIndex()) {
reactData.modalZindex = nextZIndex()
}
}
var updatePosition = function () {
return nextTick().then(function () {
var position2 = props2.position
var marginSize = xeUtils.toNumber(props2.marginSize)
var boxElem = getBox()
var clientVisibleWidth =
document.documentElement.clientWidth || document.body.clientWidth
var clientVisibleHeight =
document.documentElement.clientHeight || document.body.clientHeight
var isPosCenter = position2 === 'center'
var _a2 = xeUtils.isString(position2)
? { top: position2, left: position2 }
: Object.assign({}, position2),
top2 = _a2.top,
left2 = _a2.left
var topCenter = isPosCenter || top2 === 'center'
var leftCenter = isPosCenter || left2 === 'center'
var posTop = ''
var posLeft = ''
if (left2 && !leftCenter) {
posLeft = isNaN(left2) ? left2 : ''.concat(left2, 'px')
} else {
posLeft = ''.concat(
Math.max(
marginSize,
clientVisibleWidth / 2 - boxElem.offsetWidth / 2
),
'px'
)
}
if (top2 && !topCenter) {
posTop = isNaN(top2) ? top2 : ''.concat(top2, 'px')
} else {
posTop = ''.concat(
Math.max(
marginSize,
clientVisibleHeight / 2 - boxElem.offsetHeight / 2
),
'px'
)
}
boxElem.style.top = posTop
boxElem.style.left = posLeft
})
}
var updateStyle2 = function () {
nextTick(function () {
var offsetTop = 0
msgQueue.forEach(function (comp) {
var boxElem = comp.getBox()
offsetTop += xeUtils.toNumber(comp.props.top)
comp.reactData.modalTop = offsetTop
offsetTop += boxElem.clientHeight
})
})
}
var removeMsgQueue = function () {
if (msgQueue.indexOf($xemodal) > -1) {
xeUtils.remove(msgQueue, function (comp) {
return comp === $xemodal
})
}
updateStyle2()
}
var closeModal2 = function (type4) {
var remember = props2.remember,
beforeHideMethod = props2.beforeHideMethod
var visible = reactData.visible
var isMsg = computeIsMsg.value
var params2 = { type: type4 }
if (visible) {
Promise.resolve(beforeHideMethod ? beforeHideMethod(params2) : null)
.then(function (rest) {
if (!xeUtils.isError(rest)) {
if (isMsg) {
removeMsgQueue()
}
reactData.contentVisible = false
if (!remember) {
reactData.zoomLocat = null
}
xeUtils.remove(allActivedModals, function (item2) {
return item2 === $xemodal
})
modalMethods.dispatchEvent('before-hide', params2)
setTimeout(function () {
reactData.visible = false
emit2('update:modelValue', false)
modalMethods.dispatchEvent('hide', params2)
}, 200)
}
})
.catch(function (e2) {
return e2
})
}
return nextTick()
}
var closeEvent = function (evnt) {
var type4 = 'close'
modalMethods.dispatchEvent(type4, { type: type4 }, evnt)
closeModal2(type4)
}
var confirmEvent = function (evnt) {
var type4 = 'confirm'
modalMethods.dispatchEvent(type4, { type: type4 }, evnt)
closeModal2(type4)
}
var cancelEvent = function (evnt) {
var type4 = 'cancel'
modalMethods.dispatchEvent(type4, { type: type4 }, evnt)
closeModal2(type4)
}
var getStorageMap = function (key2) {
var version2 = GlobalConfig.version
var rest = xeUtils.toStringJSON(localStorage.getItem(key2) || '')
return rest && rest._v === version2 ? rest : { _v: version2 }
}
var hasPosStorage = function () {
var id2 = props2.id,
remember = props2.remember,
storage2 = props2.storage,
storageKey = props2.storageKey
return !!(id2 && remember && storage2 && getStorageMap(storageKey)[id2])
}
var restorePosStorage = function () {
var id2 = props2.id,
remember = props2.remember,
storage2 = props2.storage,
storageKey = props2.storageKey
if (id2 && remember && storage2) {
var posStorage = getStorageMap(storageKey)[id2]
if (posStorage) {
var boxElem = getBox()
var _a2 = posStorage.split(','),
left2 = _a2[0],
top_1 = _a2[1],
width = _a2[2],
height = _a2[3],
zoomLeft = _a2[4],
zoomTop = _a2[5],
zoomWidth = _a2[6],
zoomHeight = _a2[7]
if (left2) {
boxElem.style.left = ''.concat(left2, 'px')
}
if (top_1) {
boxElem.style.top = ''.concat(top_1, 'px')
}
if (width) {
boxElem.style.width = ''.concat(width, 'px')
}
if (height) {
boxElem.style.height = ''.concat(height, 'px')
}
if (zoomLeft && zoomTop) {
reactData.zoomLocat = {
left: zoomLeft,
top: zoomTop,
width: zoomWidth,
height: zoomHeight,
}
}
}
}
}
var addMsgQueue = function () {
if (msgQueue.indexOf($xemodal) === -1) {
msgQueue.push($xemodal)
}
updateStyle2()
}
var savePosStorage = function () {
var id2 = props2.id,
remember = props2.remember,
storage2 = props2.storage,
storageKey = props2.storageKey
var zoomLocat = reactData.zoomLocat
if (id2 && remember && storage2) {
var boxElem = getBox()
var posStorageMap = getStorageMap(storageKey)
posStorageMap[id2] = [
boxElem.style.left,
boxElem.style.top,
boxElem.style.width,
boxElem.style.height,
]
.concat(
zoomLocat
? [
zoomLocat.left,
zoomLocat.top,
zoomLocat.width,
zoomLocat.height,
]
: []
)
.map(function (val2) {
return val2 ? xeUtils.toNumber(val2) : ''
})
.join(',')
localStorage.setItem(storageKey, xeUtils.toJSONString(posStorageMap))
}
}
var maximize = function () {
return nextTick().then(function () {
if (!reactData.zoomLocat) {
var marginSize = Math.max(0, xeUtils.toNumber(props2.marginSize))
var boxElem = getBox()
var _a2 = getDomNode(),
visibleHeight = _a2.visibleHeight,
visibleWidth = _a2.visibleWidth
reactData.zoomLocat = {
top: boxElem.offsetTop,
left: boxElem.offsetLeft,
width: boxElem.offsetWidth + (boxElem.style.width ? 0 : 1),
height: boxElem.offsetHeight + (boxElem.style.height ? 0 : 1),
}
Object.assign(boxElem.style, {
top: ''.concat(marginSize, 'px'),
left: ''.concat(marginSize, 'px'),
width: ''.concat(visibleWidth - marginSize * 2, 'px'),
height: ''.concat(visibleHeight - marginSize * 2, 'px'),
})
savePosStorage()
}
})
}
var openModal2 = function () {
var duration2 = props2.duration,
remember = props2.remember,
showFooter = props2.showFooter
var inited = reactData.inited,
visible = reactData.visible
var isMsg = computeIsMsg.value
if (!inited) {
reactData.inited = true
}
if (!visible) {
if (!remember) {
recalculate()
}
reactData.visible = true
reactData.contentVisible = false
updateZindex()
allActivedModals.push($xemodal)
setTimeout(function () {
reactData.contentVisible = true
nextTick(function () {
if (showFooter) {
var confirmBtn = refConfirmBtn.value
var cancelBtn = refCancelBtn.value
var operBtn = confirmBtn || cancelBtn
if (operBtn) {
operBtn.focus()
}
}
var type4 = ''
var params2 = { type: type4 }
emit2('update:modelValue', true)
modalMethods.dispatchEvent('show', params2)
})
}, 10)
if (isMsg) {
addMsgQueue()
if (duration2 !== -1) {
setTimeout(function () {
return closeModal2('close')
}, xeUtils.toNumber(duration2))
}
} else {
nextTick(function () {
var fullscreen = props2.fullscreen
var firstOpen = reactData.firstOpen
if (!remember || firstOpen) {
updatePosition().then(function () {
setTimeout(function () {
return updatePosition()
}, 20)
})
}
if (firstOpen) {
reactData.firstOpen = false
if (hasPosStorage()) {
restorePosStorage()
} else if (fullscreen) {
nextTick(function () {
return maximize()
})
}
} else {
if (fullscreen) {
nextTick(function () {
return maximize()
})
}
}
})
}
}
return nextTick()
}
var selfClickEvent = function (evnt) {
var el2 = refElem.value
if (props2.maskClosable && evnt.target === el2) {
var type4 = 'mask'
closeModal2(type4)
}
}
var handleGlobalKeydownEvent = function (evnt) {
var isEsc = hasEventKey(evnt, EVENT_KEYS.ESCAPE)
if (isEsc) {
var lastModal_1 = xeUtils.max(allActivedModals, function (item2) {
return item2.reactData.modalZindex
})
if (lastModal_1) {
setTimeout(function () {
if (lastModal_1 === $xemodal && lastModal_1.props.escClosable) {
closeModal2('exit')
}
}, 10)
}
}
}
var isMaximized = function () {
return !!reactData.zoomLocat
}
var revert = function () {
return nextTick().then(function () {
var zoomLocat = reactData.zoomLocat
if (zoomLocat) {
var boxElem = getBox()
reactData.zoomLocat = null
Object.assign(boxElem.style, {
top: ''.concat(zoomLocat.top, 'px'),
left: ''.concat(zoomLocat.left, 'px'),
width: ''.concat(zoomLocat.width, 'px'),
height: ''.concat(zoomLocat.height, 'px'),
})
savePosStorage()
}
})
}
var zoom = function () {
if (reactData.zoomLocat) {
return revert().then(function () {
return isMaximized()
})
}
return maximize().then(function () {
return isMaximized()
})
}
var toggleZoomEvent = function (evnt) {
var zoomLocat = reactData.zoomLocat
var params2 = { type: zoomLocat ? 'revert' : 'max' }
return zoom().then(function () {
modalMethods.dispatchEvent('zoom', params2, evnt)
})
}
var getPosition = function () {
var isMsg = computeIsMsg.value
if (!isMsg) {
var boxElem = getBox()
if (boxElem) {
return {
top: boxElem.offsetTop,
left: boxElem.offsetLeft,
}
}
}
return null
}
var setPosition = function (top2, left2) {
var isMsg = computeIsMsg.value
if (!isMsg) {
var boxElem = getBox()
if (xeUtils.isNumber(top2)) {
boxElem.style.top = ''.concat(top2, 'px')
}
if (xeUtils.isNumber(left2)) {
boxElem.style.left = ''.concat(left2, 'px')
}
}
return nextTick()
}
var boxMousedownEvent = function () {
var modalZindex = reactData.modalZindex
if (
allActivedModals.some(function (comp) {
return (
comp.reactData.visible && comp.reactData.modalZindex > modalZindex
)
})
) {
updateZindex()
}
}
var mousedownEvent = function (evnt) {
var remember = props2.remember,
storage2 = props2.storage
var zoomLocat = reactData.zoomLocat
var marginSize = xeUtils.toNumber(props2.marginSize)
var boxElem = getBox()
if (
!zoomLocat &&
evnt.button === 0 &&
!getEventTargetNode(evnt, boxElem, 'trigger--btn').flag
) {
evnt.preventDefault()
var domMousemove_1 = document.onmousemove
var domMouseup_1 = document.onmouseup
var disX_1 = evnt.clientX - boxElem.offsetLeft
var disY_1 = evnt.clientY - boxElem.offsetTop
var _a2 = getDomNode(),
visibleHeight_1 = _a2.visibleHeight,
visibleWidth_1 = _a2.visibleWidth
document.onmousemove = function (evnt2) {
evnt2.preventDefault()
var offsetWidth = boxElem.offsetWidth
var offsetHeight = boxElem.offsetHeight
var minX = marginSize
var maxX = visibleWidth_1 - offsetWidth - marginSize - 1
var minY = marginSize
var maxY = visibleHeight_1 - offsetHeight - marginSize - 1
var left2 = evnt2.clientX - disX_1
var top2 = evnt2.clientY - disY_1
if (left2 > maxX) {
left2 = maxX
}
if (left2 < minX) {
left2 = minX
}
if (top2 > maxY) {
top2 = maxY
}
if (top2 < minY) {
top2 = minY
}
boxElem.style.left = ''.concat(left2, 'px')
boxElem.style.top = ''.concat(top2, 'px')
boxElem.className =
boxElem.className.replace(/\s?is--drag/, '') + ' is--drag'
}
document.onmouseup = function () {
document.onmousemove = domMousemove_1
document.onmouseup = domMouseup_1
if (remember && storage2) {
nextTick(function () {
savePosStorage()
})
}
setTimeout(function () {
boxElem.className = boxElem.className.replace(/\s?is--drag/, '')
}, 50)
}
}
}
var dragEvent = function (evnt) {
evnt.preventDefault()
var remember = props2.remember,
storage2 = props2.storage
var _a2 = getDomNode(),
visibleHeight = _a2.visibleHeight,
visibleWidth = _a2.visibleWidth
var marginSize = xeUtils.toNumber(props2.marginSize)
var targetElem = evnt.target
var type4 = targetElem.getAttribute('type')
var minWidth = xeUtils.toNumber(props2.minWidth)
var minHeight = xeUtils.toNumber(props2.minHeight)
var maxWidth = visibleWidth
var maxHeight = visibleHeight
var boxElem = getBox()
var domMousemove = document.onmousemove
var domMouseup = document.onmouseup
var clientWidth = boxElem.clientWidth
var clientHeight = boxElem.clientHeight
var disX = evnt.clientX
var disY = evnt.clientY
var offsetTop = boxElem.offsetTop
var offsetLeft = boxElem.offsetLeft
var params2 = { type: 'resize' }
document.onmousemove = function (evnt2) {
evnt2.preventDefault()
var dragLeft
var dragTop
var width
var height
switch (type4) {
case 'wl':
dragLeft = disX - evnt2.clientX
width = dragLeft + clientWidth
if (offsetLeft - dragLeft > marginSize) {
if (width > minWidth) {
boxElem.style.width = ''.concat(
width < maxWidth ? width : maxWidth,
'px'
)
boxElem.style.left = ''.concat(offsetLeft - dragLeft, 'px')
}
}
break
case 'swst':
dragLeft = disX - evnt2.clientX
dragTop = disY - evnt2.clientY
width = dragLeft + clientWidth
height = dragTop + clientHeight
if (offsetLeft - dragLeft > marginSize) {
if (width > minWidth) {
boxElem.style.width = ''.concat(
width < maxWidth ? width : maxWidth,
'px'
)
boxElem.style.left = ''.concat(offsetLeft - dragLeft, 'px')
}
}
if (offsetTop - dragTop > marginSize) {
if (height > minHeight) {
boxElem.style.height = ''.concat(
height < maxHeight ? height : maxHeight,
'px'
)
boxElem.style.top = ''.concat(offsetTop - dragTop, 'px')
}
}
break
case 'swlb':
dragLeft = disX - evnt2.clientX
dragTop = evnt2.clientY - disY
width = dragLeft + clientWidth
height = dragTop + clientHeight
if (offsetLeft - dragLeft > marginSize) {
if (width > minWidth) {
boxElem.style.width = ''.concat(
width < maxWidth ? width : maxWidth,
'px'
)
boxElem.style.left = ''.concat(offsetLeft - dragLeft, 'px')
}
}
if (offsetTop + height + marginSize < visibleHeight) {
if (height > minHeight) {
boxElem.style.height = ''.concat(
height < maxHeight ? height : maxHeight,
'px'
)
}
}
break
case 'st':
dragTop = disY - evnt2.clientY
height = clientHeight + dragTop
if (offsetTop - dragTop > marginSize) {
if (height > minHeight) {
boxElem.style.height = ''.concat(
height < maxHeight ? height : maxHeight,
'px'
)
boxElem.style.top = ''.concat(offsetTop - dragTop, 'px')
}
}
break
case 'wr':
dragLeft = evnt2.clientX - disX
width = dragLeft + clientWidth
if (offsetLeft + width + marginSize < visibleWidth) {
if (width > minWidth) {
boxElem.style.width = ''.concat(
width < maxWidth ? width : maxWidth,
'px'
)
}
}
break
case 'sest':
dragLeft = evnt2.clientX - disX
dragTop = disY - evnt2.clientY
width = dragLeft + clientWidth
height = dragTop + clientHeight
if (offsetLeft + width + marginSize < visibleWidth) {
if (width > minWidth) {
boxElem.style.width = ''.concat(
width < maxWidth ? width : maxWidth,
'px'
)
}
}
if (offsetTop - dragTop > marginSize) {
if (height > minHeight) {
boxElem.style.height = ''.concat(
height < maxHeight ? height : maxHeight,
'px'
)
boxElem.style.top = ''.concat(offsetTop - dragTop, 'px')
}
}
break
case 'selb':
dragLeft = evnt2.clientX - disX
dragTop = evnt2.clientY - disY
width = dragLeft + clientWidth
height = dragTop + clientHeight
if (offsetLeft + width + marginSize < visibleWidth) {
if (width > minWidth) {
boxElem.style.width = ''.concat(
width < maxWidth ? width : maxWidth,
'px'
)
}
}
if (offsetTop + height + marginSize < visibleHeight) {
if (height > minHeight) {
boxElem.style.height = ''.concat(
height < maxHeight ? height : maxHeight,
'px'
)
}
}
break
case 'sb':
dragTop = evnt2.clientY - disY
height = dragTop + clientHeight
if (offsetTop + height + marginSize < visibleHeight) {
if (height > minHeight) {
boxElem.style.height = ''.concat(
height < maxHeight ? height : maxHeight,
'px'
)
}
}
break
}
boxElem.className =
boxElem.className.replace(/\s?is--drag/, '') + ' is--drag'
if (remember && storage2) {
savePosStorage()
}
modalMethods.dispatchEvent('zoom', params2, evnt2)
}
document.onmouseup = function () {
reactData.zoomLocat = null
document.onmousemove = domMousemove
document.onmouseup = domMouseup
setTimeout(function () {
boxElem.className = boxElem.className.replace(/\s?is--drag/, '')
}, 50)
}
}
var renderTitles = function () {
var _a2 = props2.slots,
propSlots = _a2 === void 0 ? {} : _a2,
showClose = props2.showClose,
showZoom = props2.showZoom,
title = props2.title
var zoomLocat = reactData.zoomLocat
var titleSlot = slots.title || propSlots.title
var cornerSlot = slots.corner || propSlots.corner
var titVNs = [
h$4(
'div',
{
class: 'vxe-modal--header-title',
},
titleSlot
? getSlotVNs(titleSlot({ $modal: $xemodal }))
: title
? getFuncText(title)
: GlobalConfig.i18n('vxe.alert.title')
),
]
var rightVNs = []
if (cornerSlot) {
rightVNs.push(
h$4(
'span',
{
class: 'vxe-modal--corner-warpper',
},
getSlotVNs(cornerSlot({ $modal: $xemodal }))
)
)
}
if (showZoom) {
rightVNs.push(
h$4('i', {
class: [
'vxe-modal--zoom-btn',
'trigger--btn',
zoomLocat
? GlobalConfig.icon.MODAL_ZOOM_OUT
: GlobalConfig.icon.MODAL_ZOOM_IN,
],
title: GlobalConfig.i18n(
'vxe.modal.zoom'.concat(zoomLocat ? 'Out' : 'In')
),
onClick: toggleZoomEvent,
})
)
}
if (showClose) {
rightVNs.push(
h$4('i', {
class: [
'vxe-modal--close-btn',
'trigger--btn',
GlobalConfig.icon.MODAL_CLOSE,
],
title: GlobalConfig.i18n('vxe.modal.close'),
onClick: closeEvent,
})
)
}
titVNs.push(
h$4(
'div',
{
class: 'vxe-modal--header-right',
},
rightVNs
)
)
return titVNs
}
var renderHeaders = function () {
var _a2 = props2.slots,
propSlots = _a2 === void 0 ? {} : _a2,
showZoom = props2.showZoom,
draggable2 = props2.draggable
var isMsg = computeIsMsg.value
var headerSlot = slots.header || propSlots.header
var headVNs = []
if (props2.showHeader) {
var headerOns = {}
if (draggable2) {
headerOns.onMousedown = mousedownEvent
}
if (showZoom && props2.dblclickZoom && props2.type === 'modal') {
headerOns.onDblclick = toggleZoomEvent
}
headVNs.push(
h$4(
'div',
__assign$f(
{
class: [
'vxe-modal--header',
{
'is--draggable': draggable2,
'is--ellipsis': !isMsg && props2.showTitleOverflow,
},
],
},
headerOns
),
headerSlot
? !reactData.inited ||
(props2.destroyOnClose && !reactData.visible)
? []
: getSlotVNs(headerSlot({ $modal: $xemodal }))
: renderTitles()
)
)
}
return headVNs
}
var renderBodys = function () {
var _a2 = props2.slots,
propSlots = _a2 === void 0 ? {} : _a2,
status = props2.status,
message2 = props2.message
var content2 = props2.content || message2
var isMsg = computeIsMsg.value
var defaultSlot = slots.default || propSlots.default
var contVNs = []
if (status) {
contVNs.push(
h$4(
'div',
{
class: 'vxe-modal--status-wrapper',
},
[
h$4('i', {
class: [
'vxe-modal--status-icon',
props2.iconStatus ||
GlobalConfig.icon[
'MODAL_'.concat(status).toLocaleUpperCase()
],
],
}),
]
)
)
}
contVNs.push(
h$4(
'div',
{
class: 'vxe-modal--content',
},
defaultSlot
? !reactData.inited || (props2.destroyOnClose && !reactData.visible)
? []
: getSlotVNs(defaultSlot({ $modal: $xemodal }))
: getFuncText(content2)
)
)
if (!isMsg) {
contVNs.push(
h$4(VxeLoading, {
class: 'vxe-modal--loading',
modelValue: props2.loading,
})
)
}
return [
h$4(
'div',
{
class: 'vxe-modal--body',
},
contVNs
),
]
}
var renderBtns = function () {
var type4 = props2.type
var btnVNs = []
if (type4 === 'confirm') {
btnVNs.push(
h$4(VxeButtonComponent, {
ref: refCancelBtn,
content:
props2.cancelButtonText || GlobalConfig.i18n('vxe.button.cancel'),
onClick: cancelEvent,
})
)
}
btnVNs.push(
h$4(VxeButtonComponent, {
ref: refConfirmBtn,
status: 'primary',
content:
props2.confirmButtonText || GlobalConfig.i18n('vxe.button.confirm'),
onClick: confirmEvent,
})
)
return btnVNs
}
var renderFooters = function () {
var _a2 = props2.slots,
propSlots = _a2 === void 0 ? {} : _a2
var isMsg = computeIsMsg.value
var footerSlot = slots.footer || propSlots.footer
var footVNs = []
if (props2.showFooter) {
footVNs.push(
h$4(
'div',
{
class: 'vxe-modal--footer',
},
footerSlot
? !reactData.inited ||
(props2.destroyOnClose && !reactData.visible)
? []
: getSlotVNs(footerSlot({ $modal: $xemodal }))
: renderBtns()
)
)
}
if (!isMsg && props2.resize) {
footVNs.push(
h$4(
'span',
{
class: 'vxe-modal--resize',
},
['wl', 'wr', 'swst', 'sest', 'st', 'swlb', 'selb', 'sb'].map(
function (type4) {
return h$4('span', {
class: ''.concat(type4, '-resize'),
type: type4,
onMousedown: dragEvent,
})
}
)
)
)
}
return footVNs
}
modalMethods = {
dispatchEvent: function (type4, params2, evnt) {
emit2(type4, Object.assign({ $modal: $xemodal, $event: evnt }, params2))
},
open: openModal2,
close: function () {
return closeModal2('close')
},
getBox,
getPosition,
setPosition,
isMaximized,
zoom,
maximize,
revert,
}
Object.assign($xemodal, modalMethods)
watch$1(function () {
return props2.width
}, recalculate)
watch$1(function () {
return props2.height
}, recalculate)
watch$1(
function () {
return props2.modelValue
},
function (value2) {
if (value2) {
openModal2()
} else {
closeModal2('model')
}
}
)
onMounted(function () {
nextTick(function () {
if (props2.storage && !props2.id) {
errLog('vxe.error.reqProp', ['modal.id'])
}
if (props2.modelValue) {
openModal2()
}
recalculate()
})
if (props2.escClosable) {
GlobalEvent.on($xemodal, 'keydown', handleGlobalKeydownEvent)
}
})
onUnmounted(function () {
GlobalEvent.off($xemodal, 'keydown')
removeMsgQueue()
})
var renderVN = function () {
var _a2
var className = props2.className,
type4 = props2.type,
animat = props2.animat,
loading2 = props2.loading,
status = props2.status,
lockScroll = props2.lockScroll,
lockView = props2.lockView,
mask = props2.mask,
resize = props2.resize
var inited = reactData.inited,
zoomLocat = reactData.zoomLocat,
modalTop = reactData.modalTop,
contentVisible = reactData.contentVisible,
visible = reactData.visible
var vSize = computeSize.value
return h$4(
Teleport,
{
to: 'body',
disabled: props2.transfer ? !inited : true,
},
[
h$4(
'div',
{
ref: refElem,
class: [
'vxe-modal--wrapper',
'type--'.concat(type4),
className || '',
((_a2 = {}),
(_a2['size--'.concat(vSize)] = vSize),
(_a2['status--'.concat(status)] = status),
(_a2['is--animat'] = animat),
(_a2['lock--scroll'] = lockScroll),
(_a2['lock--view'] = lockView),
(_a2['is--resize'] = resize),
(_a2['is--mask'] = mask),
(_a2['is--maximize'] = zoomLocat),
(_a2['is--visible'] = contentVisible),
(_a2['is--active'] = visible),
(_a2['is--loading'] = loading2),
_a2),
],
style: {
zIndex: reactData.modalZindex,
top: modalTop ? ''.concat(modalTop, 'px') : null,
},
onClick: selfClickEvent,
},
[
h$4(
'div',
{
ref: refModalBox,
class: 'vxe-modal--box',
onMousedown: boxMousedownEvent,
},
renderHeaders().concat(renderBodys(), renderFooters())
),
]
),
]
)
}
$xemodal.renderVN = renderVN
return $xemodal
},
render: function () {
return this.renderVN()
},
})
function toStringTimeDate(str) {
if (str) {
var rest = new Date()
var h2 = 0
var m2 = 0
var s2 = 0
if (xeUtils.isDate(str)) {
h2 = str.getHours()
m2 = str.getMinutes()
s2 = str.getSeconds()
} else {
str = xeUtils.toValueString(str)
var parses = str.match(/^(\d{1,2})(:(\d{1,2}))?(:(\d{1,2}))?/)
if (parses) {
h2 = xeUtils.toNumber(parses[1])
m2 = xeUtils.toNumber(parses[3])
s2 = xeUtils.toNumber(parses[5])
}
}
rest.setHours(h2)
rest.setMinutes(m2)
rest.setSeconds(s2)
return rest
}
return new Date('')
}
function getDateQuarter(date4) {
var month = date4.getMonth()
if (month < 3) {
return 1
} else if (month < 6) {
return 2
} else if (month < 9) {
return 3
}
return 4
}
function handleNumber(val2) {
return xeUtils.isString(val2) ? val2.replace(/,/g, '') : val2
}
function toFloatValueFixed(inputValue, digitsValue) {
if (/^-/.test('' + inputValue)) {
return xeUtils.toFixed(xeUtils.ceil(inputValue, digitsValue), digitsValue)
}
return xeUtils.toFixed(xeUtils.floor(inputValue, digitsValue), digitsValue)
}
var __spreadArray$4 =
(globalThis && globalThis.__spreadArray) ||
function (to, from, pack2) {
if (pack2 || arguments.length === 2)
for (var i2 = 0, l2 = from.length, ar2; i2 < l2; i2++) {
if (ar2 || !(i2 in from)) {
if (!ar2) ar2 = Array.prototype.slice.call(from, 0, i2)
ar2[i2] = from[i2]
}
}
return to.concat(ar2 || Array.prototype.slice.call(from))
}
var yearSize = 12
var monthSize = 20
var quarterSize = 8
var VxeInputConstructor = defineComponent({
name: 'VxeInput',
props: {
modelValue: [String, Number, Date],
immediate: { type: Boolean, default: true },
name: String,
type: { type: String, default: 'text' },
clearable: {
type: Boolean,
default: function () {
return GlobalConfig.input.clearable
},
},
readonly: Boolean,
disabled: Boolean,
placeholder: {
type: String,
default: function () {
return xeUtils.eqNull(GlobalConfig.input.placeholder)
? GlobalConfig.i18n('vxe.base.pleaseInput')
: GlobalConfig.input.placeholder
},
},
maxlength: [String, Number],
autocomplete: { type: String, default: 'off' },
align: String,
form: String,
className: String,
size: {
type: String,
default: function () {
return GlobalConfig.input.size || GlobalConfig.size
},
},
multiple: Boolean,
showWordCount: Boolean,
countMethod: Function,
min: { type: [String, Number], default: null },
max: { type: [String, Number], default: null },
step: [String, Number],
exponential: {
type: Boolean,
default: function () {
return GlobalConfig.input.exponential
},
},
controls: {
type: Boolean,
default: function () {
return GlobalConfig.input.controls
},
},
digits: {
type: [String, Number],
default: function () {
return GlobalConfig.input.digits
},
},
startDate: {
type: [String, Number, Date],
default: function () {
return GlobalConfig.input.startDate
},
},
endDate: {
type: [String, Number, Date],
default: function () {
return GlobalConfig.input.endDate
},
},
minDate: [String, Number, Date],
maxDate: [String, Number, Date],
startWeek: Number,
startDay: {
type: [String, Number],
default: function () {
return GlobalConfig.input.startDay
},
},
labelFormat: {
type: String,
default: function () {
return GlobalConfig.input.labelFormat
},
},
valueFormat: {
type: String,
default: function () {
return GlobalConfig.input.valueFormat
},
},
editable: { type: Boolean, default: true },
festivalMethod: {
type: Function,
default: function () {
return GlobalConfig.input.festivalMethod
},
},
disabledMethod: {
type: Function,
default: function () {
return GlobalConfig.input.disabledMethod
},
},
selectDay: {
type: [String, Number],
default: function () {
return GlobalConfig.input.selectDay
},
},
prefixIcon: String,
suffixIcon: String,
placement: String,
transfer: {
type: Boolean,
default: function () {
return GlobalConfig.input.transfer
},
},
},
emits: [
'update:modelValue',
'input',
'change',
'keydown',
'keyup',
'wheel',
'click',
'focus',
'blur',
'clear',
'search-click',
'toggle-visible',
'prev-number',
'next-number',
'prefix-click',
'suffix-click',
'date-prev',
'date-today',
'date-next',
],
setup: function (props2, context2) {
var slots = context2.slots,
emit2 = context2.emit
var $xeform = inject('$xeform', null)
var $xeformiteminfo = inject('$xeformiteminfo', null)
var xID = xeUtils.uniqueId()
var computeSize = useSize(props2)
var reactData = reactive({
inited: false,
panelIndex: 0,
showPwd: false,
visiblePanel: false,
animatVisible: false,
panelStyle: null,
panelPlacement: '',
isActivated: false,
inputValue: props2.modelValue,
datetimePanelValue: null,
datePanelValue: null,
datePanelLabel: '',
datePanelType: 'day',
selectMonth: null,
currentDate: null,
})
var refElem = ref()
var refInputTarget = ref()
var refInputPanel = ref()
var refInputTimeBody = ref()
var refMaps = {
refElem,
refInput: refInputTarget,
}
var $xeinput = {
xID,
props: props2,
context: context2,
reactData,
getRefMaps: function () {
return refMaps
},
}
var inputMethods = {}
var parseDate2 = function (value2, format2) {
var type4 = props2.type
if (type4 === 'time') {
return toStringTimeDate(value2)
}
return xeUtils.toStringDate(value2, format2)
}
var computeIsDateTimeType = computed(function () {
var type4 = props2.type
return type4 === 'time' || type4 === 'datetime'
})
var computeIsNumType = computed(function () {
return ['number', 'integer', 'float'].indexOf(props2.type) > -1
})
var computeInputCount = computed(function () {
return xeUtils.getSize(reactData.inputValue)
})
var computeIsCountError = computed(function () {
var inputCount = computeInputCount.value
return props2.maxlength && inputCount > xeUtils.toNumber(props2.maxlength)
})
var computeIsDatePickerType = computed(function () {
var isDateTimeType = computeIsDateTimeType.value
return (
isDateTimeType ||
['date', 'week', 'month', 'quarter', 'year'].indexOf(props2.type) > -1
)
})
var computeIsPawdType = computed(function () {
return props2.type === 'password'
})
var computeIsSearchType = computed(function () {
return props2.type === 'search'
})
var computeDigitsValue = computed(function () {
return xeUtils.toInteger(props2.digits) || 1
})
var computeStepValue = computed(function () {
var type4 = props2.type
var digitsValue = computeDigitsValue.value
var step = props2.step
if (type4 === 'integer') {
return xeUtils.toInteger(step) || 1
} else if (type4 === 'float') {
return xeUtils.toNumber(step) || 1 / Math.pow(10, digitsValue)
}
return xeUtils.toNumber(step) || 1
})
var computeIsClearable = computed(function () {
var type4 = props2.type
var isNumType = computeIsNumType.value
var isDatePickerType = computeIsDatePickerType.value
var isPawdType = computeIsPawdType.value
return (
props2.clearable &&
(isPawdType ||
isNumType ||
isDatePickerType ||
type4 === 'text' ||
type4 === 'search')
)
})
var computeDateStartTime = computed(function () {
return props2.startDate ? xeUtils.toStringDate(props2.startDate) : null
})
var computeDateEndTime = computed(function () {
return props2.endDate ? xeUtils.toStringDate(props2.endDate) : null
})
var computeSupportMultiples = computed(function () {
return ['date', 'week', 'month', 'quarter', 'year'].includes(props2.type)
})
var computeDateListValue = computed(function () {
var modelValue = props2.modelValue,
multiple = props2.multiple
var isDatePickerType = computeIsDatePickerType.value
var dateValueFormat = computeDateValueFormat.value
if (multiple && modelValue && isDatePickerType) {
return xeUtils
.toValueString(modelValue)
.split(',')
.map(function (item2) {
var date4 = parseDate2(item2, dateValueFormat)
if (xeUtils.isValidDate(date4)) {
return date4
}
return null
})
}
return []
})
var computeDateMultipleValue = computed(function () {
var dateListValue = computeDateListValue.value
var dateValueFormat = computeDateValueFormat.value
return dateListValue.map(function (date4) {
return xeUtils.toDateString(date4, dateValueFormat)
})
})
var computeDateMultipleLabel = computed(function () {
var dateListValue = computeDateListValue.value
var dateLabelFormat = computeDateLabelFormat.value
return dateListValue
.map(function (date4) {
return xeUtils.toDateString(date4, dateLabelFormat)
})
.join(', ')
})
var computeDateValueFormat = computed(function () {
var type4 = props2.type
return type4 === 'time'
? 'HH:mm:ss'
: props2.valueFormat ||
(type4 === 'datetime' ? 'yyyy-MM-dd HH:mm:ss' : 'yyyy-MM-dd')
})
var computeDateValue = computed(function () {
var modelValue = props2.modelValue
var isDatePickerType = computeIsDatePickerType.value
var dateValueFormat = computeDateValueFormat.value
var val2 = null
if (modelValue && isDatePickerType) {
var date4 = parseDate2(modelValue, dateValueFormat)
if (xeUtils.isValidDate(date4)) {
val2 = date4
}
}
return val2
})
var computeIsDisabledPrevDateBtn = computed(function () {
var dateStartTime = computeDateStartTime.value
var selectMonth = reactData.selectMonth
if (selectMonth && dateStartTime) {
return selectMonth <= dateStartTime
}
return false
})
var computeIsDisabledNextDateBtn = computed(function () {
var dateEndTime = computeDateEndTime.value
var selectMonth = reactData.selectMonth
if (selectMonth && dateEndTime) {
return selectMonth >= dateEndTime
}
return false
})
var computeDateTimeLabel = computed(function () {
var datetimePanelValue = reactData.datetimePanelValue
if (datetimePanelValue) {
return xeUtils.toDateString(datetimePanelValue, 'HH:mm:ss')
}
return ''
})
var computeDateHMSTime = computed(function () {
var dateValue = computeDateValue.value
var isDateTimeType = computeIsDateTimeType.value
return dateValue && isDateTimeType
? (dateValue.getHours() * 3600 +
dateValue.getMinutes() * 60 +
dateValue.getSeconds()) *
1e3
: 0
})
var computeDateLabelFormat = computed(function () {
var isDatePickerType = computeIsDatePickerType.value
if (isDatePickerType) {
return (
props2.labelFormat ||
GlobalConfig.i18n('vxe.input.date.labelFormat.'.concat(props2.type))
)
}
return null
})
var computeYearList = computed(function () {
var selectMonth = reactData.selectMonth,
currentDate = reactData.currentDate
var years = []
if (selectMonth && currentDate) {
var currFullYear = currentDate.getFullYear()
var selectFullYear = selectMonth.getFullYear()
var startYearDate = new Date(
selectFullYear - (selectFullYear % yearSize),
0,
1
)
for (var index2 = -4; index2 < yearSize + 4; index2++) {
var date4 = xeUtils.getWhatYear(startYearDate, index2, 'first')
var itemFullYear = date4.getFullYear()
years.push({
date: date4,
isCurrent: true,
isPrev: index2 < 0,
isNow: currFullYear === itemFullYear,
isNext: index2 >= yearSize,
year: itemFullYear,
})
}
}
return years
})
var computeSelectDatePanelLabel = computed(function () {
var isDatePickerType = computeIsDatePickerType.value
if (isDatePickerType) {
var datePanelType = reactData.datePanelType,
selectMonth = reactData.selectMonth
var yearList = computeYearList.value
var year = ''
var month = void 0
if (selectMonth) {
year = selectMonth.getFullYear()
month = selectMonth.getMonth() + 1
}
if (datePanelType === 'quarter') {
return GlobalConfig.i18n('vxe.input.date.quarterLabel', [year])
} else if (datePanelType === 'month') {
return GlobalConfig.i18n('vxe.input.date.monthLabel', [year])
} else if (datePanelType === 'year') {
return yearList.length
? ''
.concat(yearList[0].year, ' - ')
.concat(yearList[yearList.length - 1].year)
: ''
}
return GlobalConfig.i18n('vxe.input.date.dayLabel', [
year,
month ? GlobalConfig.i18n('vxe.input.date.m'.concat(month)) : '-',
])
}
return ''
})
var computeFirstDayOfWeek = computed(function () {
var startDay = props2.startDay,
startWeek = props2.startWeek
return xeUtils.toNumber(
xeUtils.isNumber(startDay) || xeUtils.isString(startDay)
? startDay
: startWeek
)
})
var computeWeekDatas = computed(function () {
var weeks = []
var isDatePickerType = computeIsDatePickerType.value
if (isDatePickerType) {
var sWeek = computeFirstDayOfWeek.value
weeks.push(sWeek)
for (var index2 = 0; index2 < 6; index2++) {
if (sWeek >= 6) {
sWeek = 0
} else {
sWeek++
}
weeks.push(sWeek)
}
}
return weeks
})
var computeDateHeaders = computed(function () {
var isDatePickerType = computeIsDatePickerType.value
if (isDatePickerType) {
var weekDatas = computeWeekDatas.value
return weekDatas.map(function (day) {
return {
value: day,
label: GlobalConfig.i18n('vxe.input.date.weeks.w'.concat(day)),
}
})
}
return []
})
var computeWeekHeaders = computed(function () {
var isDatePickerType = computeIsDatePickerType.value
if (isDatePickerType) {
var dateHeaders = computeDateHeaders.value
return [{ label: GlobalConfig.i18n('vxe.input.date.weeks.w') }].concat(
dateHeaders
)
}
return []
})
var computeYearDatas = computed(function () {
var yearList = computeYearList.value
return xeUtils.chunk(yearList, 4)
})
var computeQuarterList = computed(function () {
var selectMonth = reactData.selectMonth,
currentDate = reactData.currentDate
var quarters = []
if (selectMonth && currentDate) {
var currFullYear = currentDate.getFullYear()
var currQuarter = getDateQuarter(currentDate)
var firstYear = xeUtils.getWhatYear(selectMonth, 0, 'first')
var selFullYear = firstYear.getFullYear()
for (var index2 = -2; index2 < quarterSize - 2; index2++) {
var date4 = xeUtils.getWhatQuarter(firstYear, index2)
var itemFullYear = date4.getFullYear()
var itemQuarter = getDateQuarter(date4)
var isPrev = itemFullYear < selFullYear
quarters.push({
date: date4,
isPrev,
isCurrent: itemFullYear === selFullYear,
isNow: itemFullYear === currFullYear && itemQuarter === currQuarter,
isNext: !isPrev && itemFullYear > selFullYear,
quarter: itemQuarter,
})
}
}
return quarters
})
var computeQuarterDatas = computed(function () {
var quarterList = computeQuarterList.value
return xeUtils.chunk(quarterList, 2)
})
var computeMonthList = computed(function () {
var selectMonth = reactData.selectMonth,
currentDate = reactData.currentDate
var months = []
if (selectMonth && currentDate) {
var currFullYear = currentDate.getFullYear()
var currMonth = currentDate.getMonth()
var selFullYear = xeUtils
.getWhatYear(selectMonth, 0, 'first')
.getFullYear()
for (var index2 = -4; index2 < monthSize - 4; index2++) {
var date4 = xeUtils.getWhatYear(selectMonth, 0, index2)
var itemFullYear = date4.getFullYear()
var itemMonth = date4.getMonth()
var isPrev = itemFullYear < selFullYear
months.push({
date: date4,
isPrev,
isCurrent: itemFullYear === selFullYear,
isNow: itemFullYear === currFullYear && itemMonth === currMonth,
isNext: !isPrev && itemFullYear > selFullYear,
month: itemMonth,
})
}
}
return months
})
var computeMonthDatas = computed(function () {
var monthList = computeMonthList.value
return xeUtils.chunk(monthList, 4)
})
var computeDayList = computed(function () {
var selectMonth = reactData.selectMonth,
currentDate = reactData.currentDate
var days = []
if (selectMonth && currentDate) {
var dateHMSTime = computeDateHMSTime.value
var weekDatas = computeWeekDatas.value
var currFullYear = currentDate.getFullYear()
var currMonth = currentDate.getMonth()
var currDate = currentDate.getDate()
var selFullYear = selectMonth.getFullYear()
var selMonth = selectMonth.getMonth()
var selDay = selectMonth.getDay()
var prevOffsetDate = -weekDatas.indexOf(selDay)
var startDayDate = new Date(
xeUtils.getWhatDay(selectMonth, prevOffsetDate).getTime() +
dateHMSTime
)
for (var index2 = 0; index2 < 42; index2++) {
var date4 = xeUtils.getWhatDay(startDayDate, index2)
var itemFullYear = date4.getFullYear()
var itemMonth = date4.getMonth()
var itemDate = date4.getDate()
var isPrev = date4 < selectMonth
days.push({
date: date4,
isPrev,
isCurrent: itemFullYear === selFullYear && itemMonth === selMonth,
isNow:
itemFullYear === currFullYear &&
itemMonth === currMonth &&
itemDate === currDate,
isNext: !isPrev && selMonth !== itemMonth,
label: itemDate,
})
}
}
return days
})
var computeDayDatas = computed(function () {
var dayList = computeDayList.value
return xeUtils.chunk(dayList, 7)
})
var computeWeekDates = computed(function () {
var dayDatas = computeDayDatas.value
var firstDayOfWeek = computeFirstDayOfWeek.value
return dayDatas.map(function (list2) {
var firstItem = list2[0]
var item2 = {
date: firstItem.date,
isWeekNumber: true,
isPrev: false,
isCurrent: false,
isNow: false,
isNext: false,
label: xeUtils.getYearWeek(firstItem.date, firstDayOfWeek),
}
return [item2].concat(list2)
})
})
var computeHourList = computed(function () {
var list2 = []
var isDateTimeType = computeIsDateTimeType.value
if (isDateTimeType) {
for (var index2 = 0; index2 < 24; index2++) {
list2.push({
value: index2,
label: ('' + index2).padStart(2, '0'),
})
}
}
return list2
})
var computeMinuteList = computed(function () {
var list2 = []
var isDateTimeType = computeIsDateTimeType.value
if (isDateTimeType) {
for (var index2 = 0; index2 < 60; index2++) {
list2.push({
value: index2,
label: ('' + index2).padStart(2, '0'),
})
}
}
return list2
})
var computeSecondList = computed(function () {
var minuteList = computeMinuteList.value
return minuteList
})
var computeInpReadonly = computed(function () {
var type4 = props2.type,
readonly2 = props2.readonly,
editable = props2.editable,
multiple = props2.multiple
return (
readonly2 ||
multiple ||
!editable ||
type4 === 'week' ||
type4 === 'quarter'
)
})
var computeInputType = computed(function () {
var type4 = props2.type
var showPwd = reactData.showPwd
var isNumType = computeIsNumType.value
var isDatePickerType = computeIsDatePickerType.value
var isPawdType = computeIsPawdType.value
if (
isDatePickerType ||
isNumType ||
(isPawdType && showPwd) ||
type4 === 'number'
) {
return 'text'
}
return type4
})
var computeInpPlaceholder = computed(function () {
var placeholder = props2.placeholder
if (placeholder) {
return getFuncText(placeholder)
}
return ''
})
var computeInpMaxlength = computed(function () {
var maxlength = props2.maxlength
var isNumType = computeIsNumType.value
return isNumType && !xeUtils.toNumber(maxlength) ? 16 : maxlength
})
var computeInpImmediate = computed(function () {
var type4 = props2.type,
immediate = props2.immediate
return (
immediate ||
!(
type4 === 'text' ||
type4 === 'number' ||
type4 === 'integer' ||
type4 === 'float'
)
)
})
var computeNumValue = computed(function () {
var type4 = props2.type
var inputValue = reactData.inputValue
var isNumType = computeIsNumType.value
if (isNumType) {
return type4 === 'integer'
? xeUtils.toInteger(handleNumber(inputValue))
: xeUtils.toNumber(handleNumber(inputValue))
}
return 0
})
var computeIsDisabledSubtractNumber = computed(function () {
var min3 = props2.min
var inputValue = reactData.inputValue
var isNumType = computeIsNumType.value
var numValue = computeNumValue.value
if ((inputValue || inputValue === 0) && isNumType && min3 !== null) {
return numValue <= xeUtils.toNumber(min3)
}
return false
})
var computeIsDisabledAddNumber = computed(function () {
var max3 = props2.max
var inputValue = reactData.inputValue
var isNumType = computeIsNumType.value
var numValue = computeNumValue.value
if ((inputValue || inputValue === 0) && isNumType && max3 !== null) {
return numValue >= xeUtils.toNumber(max3)
}
return false
})
var getNumberValue = function (val2) {
var type4 = props2.type,
exponential = props2.exponential
var inpMaxlength = computeInpMaxlength.value
var digitsValue = computeDigitsValue.value
var restVal =
type4 === 'float'
? toFloatValueFixed(val2, digitsValue)
: xeUtils.toValueString(val2)
if (
exponential &&
(val2 === restVal ||
xeUtils.toValueString(val2).toLowerCase() ===
xeUtils.toNumber(restVal).toExponential())
) {
return val2
}
return restVal.slice(0, inpMaxlength)
}
var triggerEvent2 = function (evnt) {
var inputValue = reactData.inputValue
inputMethods.dispatchEvent(evnt.type, { value: inputValue }, evnt)
}
var emitModel = function (value2, evnt) {
reactData.inputValue = value2
emit2('update:modelValue', value2)
inputMethods.dispatchEvent('input', { value: value2 }, evnt)
if (xeUtils.toValueString(props2.modelValue) !== value2) {
inputMethods.dispatchEvent('change', { value: value2 }, evnt)
if ($xeform && $xeformiteminfo) {
$xeform.triggerItemEvent(
evnt,
$xeformiteminfo.itemConfig.field,
value2
)
}
}
}
var emitInputEvent = function (value2, evnt) {
var isDatePickerType = computeIsDatePickerType.value
var inpImmediate = computeInpImmediate.value
reactData.inputValue = value2
if (!isDatePickerType) {
if (inpImmediate) {
emitModel(value2, evnt)
} else {
inputMethods.dispatchEvent('input', { value: value2 }, evnt)
}
}
}
var inputEvent = function (evnt) {
var inputElem = evnt.target
var value2 = inputElem.value
emitInputEvent(value2, evnt)
}
var changeEvent = function (evnt) {
var inpImmediate = computeInpImmediate.value
if (!inpImmediate) {
triggerEvent2(evnt)
}
}
var focusEvent = function (evnt) {
reactData.isActivated = true
var isDatePickerType = computeIsDatePickerType.value
if (isDatePickerType) {
datePickerOpenEvent(evnt)
}
triggerEvent2(evnt)
}
var clickPrefixEvent = function (evnt) {
var disabled = props2.disabled
if (!disabled) {
var inputValue = reactData.inputValue
inputMethods.dispatchEvent('prefix-click', { value: inputValue }, evnt)
}
}
var hidePanelTimeout
var hidePanel = function () {
return new Promise(function (resolve2) {
reactData.visiblePanel = false
hidePanelTimeout = window.setTimeout(function () {
reactData.animatVisible = false
resolve2()
}, 350)
})
}
var clearValueEvent = function (evnt, value2) {
var type4 = props2.type
var isNumType = computeIsNumType.value
var isDatePickerType = computeIsDatePickerType.value
if (isDatePickerType) {
hidePanel()
}
if (isNumType || ['text', 'search', 'password'].indexOf(type4) > -1) {
focus()
}
inputMethods.dispatchEvent('clear', { value: value2 }, evnt)
}
var clickSuffixEvent = function (evnt) {
var disabled = props2.disabled
if (!disabled) {
if (hasClass(evnt.currentTarget, 'is--clear')) {
emitModel('', evnt)
clearValueEvent(evnt, '')
} else {
var inputValue = reactData.inputValue
inputMethods.dispatchEvent(
'suffix-click',
{ value: inputValue },
evnt
)
}
}
}
var dateParseValue = function (value2) {
var type4 = props2.type
var valueFormat = props2.valueFormat
var dateLabelFormat = computeDateLabelFormat.value
var firstDayOfWeek = computeFirstDayOfWeek.value
var dValue = null
var dLabel = ''
if (value2) {
dValue = parseDate2(value2, valueFormat)
}
if (xeUtils.isValidDate(dValue)) {
dLabel = xeUtils.toDateString(dValue, dateLabelFormat, {
firstDay: firstDayOfWeek,
})
if (dateLabelFormat && type4 === 'week') {
var firstWeekDate = xeUtils.getWhatWeek(
dValue,
0,
firstDayOfWeek,
firstDayOfWeek
)
if (firstWeekDate.getFullYear() < dValue.getFullYear()) {
var yyIndex = dateLabelFormat.indexOf('yyyy')
if (yyIndex > -1) {
var yyNum = Number(dLabel.substring(yyIndex, yyIndex + 4))
if (yyNum && !isNaN(yyNum)) {
dLabel = dLabel.replace(''.concat(yyNum), ''.concat(yyNum - 1))
}
}
}
}
} else {
dValue = null
}
reactData.datePanelValue = dValue
reactData.datePanelLabel = dLabel
}
var changeValue = function () {
var isDatePickerType = computeIsDatePickerType.value
var inputValue = reactData.inputValue
if (isDatePickerType) {
dateParseValue(inputValue)
reactData.inputValue = props2.multiple
? computeDateMultipleLabel.value
: reactData.datePanelLabel
}
}
var initValue = function () {
var type4 = props2.type
var inputValue = reactData.inputValue
var isDatePickerType = computeIsDatePickerType.value
var digitsValue = computeDigitsValue.value
if (isDatePickerType) {
changeValue()
} else if (type4 === 'float') {
if (inputValue) {
var validValue = toFloatValueFixed(inputValue, digitsValue)
if (inputValue !== validValue) {
emitModel(validValue, { type: 'init' })
}
}
}
}
var vaildMaxNum = function (num2) {
return (
props2.max === null ||
xeUtils.toNumber(num2) <= xeUtils.toNumber(props2.max)
)
}
var vaildMinNum = function (num2) {
return (
props2.min === null ||
xeUtils.toNumber(num2) >= xeUtils.toNumber(props2.min)
)
}
var dateRevert = function () {
reactData.inputValue = props2.multiple
? computeDateMultipleLabel.value
: reactData.datePanelLabel
}
var dateCheckMonth = function (date4) {
var month = xeUtils.getWhatMonth(date4, 0, 'first')
if (!xeUtils.isEqual(month, reactData.selectMonth)) {
reactData.selectMonth = month
}
}
var dateChange = function (date4) {
var modelValue = props2.modelValue,
multiple = props2.multiple
var datetimePanelValue = reactData.datetimePanelValue
var isDateTimeType = computeIsDateTimeType.value
var dateValueFormat = computeDateValueFormat.value
var firstDayOfWeek = computeFirstDayOfWeek.value
if (props2.type === 'week') {
var sWeek = xeUtils.toNumber(props2.selectDay)
date4 = xeUtils.getWhatWeek(date4, 0, sWeek, firstDayOfWeek)
} else if (isDateTimeType) {
date4.setHours(datetimePanelValue.getHours())
date4.setMinutes(datetimePanelValue.getMinutes())
date4.setSeconds(datetimePanelValue.getSeconds())
}
var inpVal = xeUtils.toDateString(date4, dateValueFormat, {
firstDay: firstDayOfWeek,
})
dateCheckMonth(date4)
if (multiple) {
var dateMultipleValue = computeDateMultipleValue.value
if (isDateTimeType) {
var dateListValue = __spreadArray$4(
[],
computeDateListValue.value,
true
)
var datetimeRest_1 = []
var eqIndex = xeUtils.findIndexOf(dateListValue, function (val2) {
return xeUtils.isDateSame(date4, val2, 'yyyyMMdd')
})
if (eqIndex === -1) {
dateListValue.push(date4)
} else {
dateListValue.splice(eqIndex, 1)
}
dateListValue.forEach(function (item2) {
if (item2) {
item2.setHours(datetimePanelValue.getHours())
item2.setMinutes(datetimePanelValue.getMinutes())
item2.setSeconds(datetimePanelValue.getSeconds())
datetimeRest_1.push(item2)
}
})
emitModel(
datetimeRest_1
.map(function (date5) {
return xeUtils.toDateString(date5, dateValueFormat)
})
.join(','),
{ type: 'update' }
)
} else {
if (
dateMultipleValue.some(function (val2) {
return xeUtils.isEqual(val2, inpVal)
})
) {
emitModel(
dateMultipleValue
.filter(function (val2) {
return !xeUtils.isEqual(val2, inpVal)
})
.join(','),
{ type: 'update' }
)
} else {
emitModel(dateMultipleValue.concat([inpVal]).join(','), {
type: 'update',
})
}
}
} else {
if (!xeUtils.isEqual(modelValue, inpVal)) {
emitModel(inpVal, { type: 'update' })
}
}
}
var afterCheckValue = function () {
var type4 = props2.type,
min3 = props2.min,
max3 = props2.max,
exponential = props2.exponential
var inputValue = reactData.inputValue,
datetimePanelValue = reactData.datetimePanelValue
var isNumType = computeIsNumType.value
var isDatePickerType = computeIsDatePickerType.value
var dateLabelFormat = computeDateLabelFormat.value
var inpReadonly = computeInpReadonly.value
if (!inpReadonly) {
if (isNumType) {
if (inputValue) {
var inpNumVal =
type4 === 'integer'
? xeUtils.toInteger(handleNumber(inputValue))
: xeUtils.toNumber(handleNumber(inputValue))
if (!vaildMinNum(inpNumVal)) {
inpNumVal = min3
} else if (!vaildMaxNum(inpNumVal)) {
inpNumVal = max3
}
if (exponential) {
var inpStringVal = xeUtils.toValueString(inputValue).toLowerCase()
if (
inpStringVal === xeUtils.toNumber(inpNumVal).toExponential()
) {
inpNumVal = inpStringVal
}
}
emitModel(getNumberValue(inpNumVal), { type: 'check' })
}
} else if (isDatePickerType) {
if (inputValue) {
var inpDateVal = parseDate2(inputValue, dateLabelFormat)
if (xeUtils.isValidDate(inpDateVal)) {
if (type4 === 'time') {
inpDateVal = xeUtils.toDateString(inpDateVal, dateLabelFormat)
if (inputValue !== inpDateVal) {
emitModel(inpDateVal, { type: 'check' })
}
reactData.inputValue = inpDateVal
} else {
var isChange = false
var firstDayOfWeek = computeFirstDayOfWeek.value
if (type4 === 'datetime') {
var dateValue = computeDateValue.value
if (
inputValue !==
xeUtils.toDateString(dateValue, dateLabelFormat) ||
inputValue !==
xeUtils.toDateString(inpDateVal, dateLabelFormat)
) {
isChange = true
datetimePanelValue.setHours(inpDateVal.getHours())
datetimePanelValue.setMinutes(inpDateVal.getMinutes())
datetimePanelValue.setSeconds(inpDateVal.getSeconds())
}
} else {
isChange = true
}
reactData.inputValue = xeUtils.toDateString(
inpDateVal,
dateLabelFormat,
{ firstDay: firstDayOfWeek }
)
if (isChange) {
dateChange(inpDateVal)
}
}
} else {
dateRevert()
}
} else {
emitModel('', { type: 'check' })
}
}
}
}
var blurEvent = function (evnt) {
var inputValue = reactData.inputValue
var inpImmediate = computeInpImmediate.value
if (!inpImmediate) {
emitModel(inputValue, evnt)
}
afterCheckValue()
if (!reactData.visiblePanel) {
reactData.isActivated = false
}
inputMethods.dispatchEvent('blur', { value: inputValue }, evnt)
}
var passwordToggleEvent = function (evnt) {
var readonly2 = props2.readonly,
disabled = props2.disabled
var showPwd = reactData.showPwd
if (!disabled && !readonly2) {
reactData.showPwd = !showPwd
}
inputMethods.dispatchEvent(
'toggle-visible',
{ visible: reactData.showPwd },
evnt
)
}
var searchEvent = function (evnt) {
inputMethods.dispatchEvent('search-click', {}, evnt)
}
var numberChange = function (isPlus, evnt) {
var min3 = props2.min,
max3 = props2.max,
type4 = props2.type
var inputValue = reactData.inputValue
var stepValue = computeStepValue.value
var numValue =
type4 === 'integer'
? xeUtils.toInteger(handleNumber(inputValue))
: xeUtils.toNumber(handleNumber(inputValue))
var newValue = isPlus
? xeUtils.add(numValue, stepValue)
: xeUtils.subtract(numValue, stepValue)
var restNum
if (!vaildMinNum(newValue)) {
restNum = min3
} else if (!vaildMaxNum(newValue)) {
restNum = max3
} else {
restNum = newValue
}
emitInputEvent(getNumberValue(restNum), evnt)
}
var downbumTimeout
var numberNextEvent = function (evnt) {
var readonly2 = props2.readonly,
disabled = props2.disabled
var isDisabledSubtractNumber = computeIsDisabledSubtractNumber.value
clearTimeout(downbumTimeout)
if (!disabled && !readonly2 && !isDisabledSubtractNumber) {
numberChange(false, evnt)
}
inputMethods.dispatchEvent('next-number', {}, evnt)
}
var numberDownNextEvent = function (evnt) {
downbumTimeout = window.setTimeout(function () {
numberNextEvent(evnt)
numberDownNextEvent(evnt)
}, 60)
}
var numberPrevEvent = function (evnt) {
var readonly2 = props2.readonly,
disabled = props2.disabled
var isDisabledAddNumber = computeIsDisabledAddNumber.value
clearTimeout(downbumTimeout)
if (!disabled && !readonly2 && !isDisabledAddNumber) {
numberChange(true, evnt)
}
inputMethods.dispatchEvent('prev-number', {}, evnt)
}
var numberKeydownEvent = function (evnt) {
var isUpArrow = hasEventKey(evnt, EVENT_KEYS.ARROW_UP)
var isDwArrow = hasEventKey(evnt, EVENT_KEYS.ARROW_DOWN)
if (isUpArrow || isDwArrow) {
evnt.preventDefault()
if (isUpArrow) {
numberPrevEvent(evnt)
} else {
numberNextEvent(evnt)
}
}
}
var keydownEvent = function (evnt) {
var exponential = props2.exponential,
controls = props2.controls
var isNumType = computeIsNumType.value
if (isNumType) {
var isCtrlKey2 = evnt.ctrlKey
var isShiftKey = evnt.shiftKey
var isAltKey = evnt.altKey
var keyCode = evnt.keyCode
if (
!isCtrlKey2 &&
!isShiftKey &&
!isAltKey &&
(hasEventKey(evnt, EVENT_KEYS.SPACEBAR) ||
((!exponential || keyCode !== 69) &&
keyCode >= 65 &&
keyCode <= 90) ||
(keyCode >= 186 && keyCode <= 188) ||
keyCode >= 191)
) {
evnt.preventDefault()
}
if (controls) {
numberKeydownEvent(evnt)
}
}
triggerEvent2(evnt)
}
var keyupEvent = function (evnt) {
triggerEvent2(evnt)
}
var numberStopDown = function () {
clearTimeout(downbumTimeout)
}
var numberDownPrevEvent = function (evnt) {
downbumTimeout = window.setTimeout(function () {
numberPrevEvent(evnt)
numberDownPrevEvent(evnt)
}, 60)
}
var numberMousedownEvent = function (evnt) {
numberStopDown()
if (evnt.button === 0) {
var isPrevNumber_1 = hasClass(evnt.currentTarget, 'is--prev')
if (isPrevNumber_1) {
numberPrevEvent(evnt)
} else {
numberNextEvent(evnt)
}
downbumTimeout = window.setTimeout(function () {
if (isPrevNumber_1) {
numberDownPrevEvent(evnt)
} else {
numberDownNextEvent(evnt)
}
}, 500)
}
}
var wheelEvent = function (evnt) {
var isNumType = computeIsNumType.value
if (isNumType && props2.controls) {
if (reactData.isActivated) {
var delta = evnt.deltaY
if (delta > 0) {
numberNextEvent(evnt)
} else if (delta < 0) {
numberPrevEvent(evnt)
}
evnt.preventDefault()
}
}
triggerEvent2(evnt)
}
var dateMonthHandle = function (date4, offsetMonth) {
reactData.selectMonth = xeUtils.getWhatMonth(date4, offsetMonth, 'first')
}
var dateNowHandle = function () {
var currentDate = xeUtils.getWhatDay(Date.now(), 0, 'first')
reactData.currentDate = currentDate
dateMonthHandle(currentDate, 0)
}
var dateToggleTypeEvent = function () {
var datePanelType = reactData.datePanelType
if (datePanelType === 'month' || datePanelType === 'quarter') {
datePanelType = 'year'
} else {
datePanelType = 'month'
}
reactData.datePanelType = datePanelType
}
var datePrevEvent = function (evnt) {
var type4 = props2.type
var datePanelType = reactData.datePanelType,
selectMonth = reactData.selectMonth
var isDisabledPrevDateBtn = computeIsDisabledPrevDateBtn.value
if (!isDisabledPrevDateBtn) {
if (type4 === 'year') {
reactData.selectMonth = xeUtils.getWhatYear(
selectMonth,
-yearSize,
'first'
)
} else if (type4 === 'month' || type4 === 'quarter') {
if (datePanelType === 'year') {
reactData.selectMonth = xeUtils.getWhatYear(
selectMonth,
-yearSize,
'first'
)
} else {
reactData.selectMonth = xeUtils.getWhatYear(
selectMonth,
-1,
'first'
)
}
} else {
if (datePanelType === 'year') {
reactData.selectMonth = xeUtils.getWhatYear(
selectMonth,
-yearSize,
'first'
)
} else if (datePanelType === 'month') {
reactData.selectMonth = xeUtils.getWhatYear(
selectMonth,
-1,
'first'
)
} else {
reactData.selectMonth = xeUtils.getWhatMonth(
selectMonth,
-1,
'first'
)
}
}
inputMethods.dispatchEvent('date-prev', { type: type4 }, evnt)
}
}
var dateTodayMonthEvent = function (evnt) {
dateNowHandle()
if (!props2.multiple) {
dateChange(reactData.currentDate)
hidePanel()
}
inputMethods.dispatchEvent('date-today', { type: props2.type }, evnt)
}
var dateNextEvent = function (evnt) {
var type4 = props2.type
var datePanelType = reactData.datePanelType,
selectMonth = reactData.selectMonth
var isDisabledNextDateBtn = computeIsDisabledNextDateBtn.value
if (!isDisabledNextDateBtn) {
if (type4 === 'year') {
reactData.selectMonth = xeUtils.getWhatYear(
selectMonth,
yearSize,
'first'
)
} else if (type4 === 'month' || type4 === 'quarter') {
if (datePanelType === 'year') {
reactData.selectMonth = xeUtils.getWhatYear(
selectMonth,
yearSize,
'first'
)
} else {
reactData.selectMonth = xeUtils.getWhatYear(selectMonth, 1, 'first')
}
} else {
if (datePanelType === 'year') {
reactData.selectMonth = xeUtils.getWhatYear(
selectMonth,
yearSize,
'first'
)
} else if (datePanelType === 'month') {
reactData.selectMonth = xeUtils.getWhatYear(selectMonth, 1, 'first')
} else {
reactData.selectMonth = xeUtils.getWhatMonth(
selectMonth,
1,
'first'
)
}
}
inputMethods.dispatchEvent('date-next', { type: type4 }, evnt)
}
}
var isDateDisabled = function (item2) {
var disabledMethod = props2.disabledMethod
var datePanelType = reactData.datePanelType
return (
disabledMethod &&
disabledMethod({
type: datePanelType,
viewType: datePanelType,
date: item2.date,
$input: $xeinput,
})
)
}
var dateSelectItem = function (date4) {
var type4 = props2.type,
multiple = props2.multiple
var datePanelType = reactData.datePanelType
if (type4 === 'month') {
if (datePanelType === 'year') {
reactData.datePanelType = 'month'
dateCheckMonth(date4)
} else {
dateChange(date4)
if (!multiple) {
hidePanel()
}
}
} else if (type4 === 'year') {
dateChange(date4)
if (!multiple) {
hidePanel()
}
} else if (type4 === 'quarter') {
if (datePanelType === 'year') {
reactData.datePanelType = 'quarter'
dateCheckMonth(date4)
} else {
dateChange(date4)
if (!multiple) {
hidePanel()
}
}
} else {
if (datePanelType === 'month') {
reactData.datePanelType = type4 === 'week' ? type4 : 'day'
dateCheckMonth(date4)
} else if (datePanelType === 'year') {
reactData.datePanelType = 'month'
dateCheckMonth(date4)
} else {
dateChange(date4)
if (!multiple) {
hidePanel()
}
}
}
}
var dateSelectEvent = function (item2) {
if (!isDateDisabled(item2)) {
dateSelectItem(item2.date)
}
}
var dateMoveDay = function (offsetDay) {
if (!isDateDisabled({ date: offsetDay })) {
var dayList = computeDayList.value
if (
!dayList.some(function (item2) {
return xeUtils.isDateSame(item2.date, offsetDay, 'yyyyMMdd')
})
) {
dateCheckMonth(offsetDay)
}
dateParseValue(offsetDay)
}
}
var dateMoveYear = function (offsetYear) {
if (!isDateDisabled({ date: offsetYear })) {
var yearList = computeYearList.value
if (
!yearList.some(function (item2) {
return xeUtils.isDateSame(item2.date, offsetYear, 'yyyy')
})
) {
dateCheckMonth(offsetYear)
}
dateParseValue(offsetYear)
}
}
var dateMoveQuarter = function (offsetQuarter) {
if (!isDateDisabled({ date: offsetQuarter })) {
var quarterList = computeQuarterList.value
if (
!quarterList.some(function (item2) {
return xeUtils.isDateSame(item2.date, offsetQuarter, 'yyyyq')
})
) {
dateCheckMonth(offsetQuarter)
}
dateParseValue(offsetQuarter)
}
}
var dateMoveMonth = function (offsetMonth) {
if (!isDateDisabled({ date: offsetMonth })) {
var monthList = computeMonthList.value
if (
!monthList.some(function (item2) {
return xeUtils.isDateSame(item2.date, offsetMonth, 'yyyyMM')
})
) {
dateCheckMonth(offsetMonth)
}
dateParseValue(offsetMonth)
}
}
var dateMouseenterEvent = function (item2) {
if (!isDateDisabled(item2)) {
var datePanelType = reactData.datePanelType
if (datePanelType === 'month') {
dateMoveMonth(item2.date)
} else if (datePanelType === 'quarter') {
dateMoveQuarter(item2.date)
} else if (datePanelType === 'year') {
dateMoveYear(item2.date)
} else {
dateMoveDay(item2.date)
}
}
}
var updateTimePos = function (liElem) {
if (liElem) {
var height = liElem.offsetHeight
var ulElem = liElem.parentNode
ulElem.scrollTop = liElem.offsetTop - height * 4
}
}
var dateTimeChangeEvent = function (evnt) {
reactData.datetimePanelValue = new Date(
reactData.datetimePanelValue.getTime()
)
updateTimePos(evnt.currentTarget)
}
var dateHourEvent = function (evnt, item2) {
reactData.datetimePanelValue.setHours(item2.value)
dateTimeChangeEvent(evnt)
}
var dateConfirmEvent = function () {
var multiple = props2.multiple
var datetimePanelValue = reactData.datetimePanelValue
var dateValue = computeDateValue.value
var isDateTimeType = computeIsDateTimeType.value
if (isDateTimeType) {
var dateValueFormat_1 = computeDateValueFormat.value
if (multiple) {
var dateMultipleValue = computeDateMultipleValue.value
if (isDateTimeType) {
var dateListValue = __spreadArray$4(
[],
computeDateListValue.value,
true
)
var datetimeRest_2 = []
dateListValue.forEach(function (item2) {
if (item2) {
item2.setHours(datetimePanelValue.getHours())
item2.setMinutes(datetimePanelValue.getMinutes())
item2.setSeconds(datetimePanelValue.getSeconds())
datetimeRest_2.push(item2)
}
})
emitModel(
datetimeRest_2
.map(function (date4) {
return xeUtils.toDateString(date4, dateValueFormat_1)
})
.join(','),
{ type: 'update' }
)
} else {
emitModel(dateMultipleValue.join(','), { type: 'update' })
}
} else {
dateChange(dateValue || reactData.currentDate)
}
}
hidePanel()
}
var dateMinuteEvent = function (evnt, item2) {
reactData.datetimePanelValue.setMinutes(item2.value)
dateTimeChangeEvent(evnt)
}
var dateSecondEvent = function (evnt, item2) {
reactData.datetimePanelValue.setSeconds(item2.value)
dateTimeChangeEvent(evnt)
}
var dateOffsetEvent = function (evnt) {
var isActivated = reactData.isActivated,
datePanelValue = reactData.datePanelValue,
datePanelType = reactData.datePanelType
if (isActivated) {
evnt.preventDefault()
var isLeftArrow = hasEventKey(evnt, EVENT_KEYS.ARROW_LEFT)
var isUpArrow = hasEventKey(evnt, EVENT_KEYS.ARROW_UP)
var isRightArrow = hasEventKey(evnt, EVENT_KEYS.ARROW_RIGHT)
var isDwArrow = hasEventKey(evnt, EVENT_KEYS.ARROW_DOWN)
if (datePanelType === 'year') {
var offsetYear = xeUtils.getWhatYear(
datePanelValue || Date.now(),
0,
'first'
)
if (isLeftArrow) {
offsetYear = xeUtils.getWhatYear(offsetYear, -1)
} else if (isUpArrow) {
offsetYear = xeUtils.getWhatYear(offsetYear, -4)
} else if (isRightArrow) {
offsetYear = xeUtils.getWhatYear(offsetYear, 1)
} else if (isDwArrow) {
offsetYear = xeUtils.getWhatYear(offsetYear, 4)
}
dateMoveYear(offsetYear)
} else if (datePanelType === 'quarter') {
var offsetQuarter = xeUtils.getWhatQuarter(
datePanelValue || Date.now(),
0,
'first'
)
if (isLeftArrow) {
offsetQuarter = xeUtils.getWhatQuarter(offsetQuarter, -1)
} else if (isUpArrow) {
offsetQuarter = xeUtils.getWhatQuarter(offsetQuarter, -2)
} else if (isRightArrow) {
offsetQuarter = xeUtils.getWhatQuarter(offsetQuarter, 1)
} else if (isDwArrow) {
offsetQuarter = xeUtils.getWhatQuarter(offsetQuarter, 2)
}
dateMoveQuarter(offsetQuarter)
} else if (datePanelType === 'month') {
var offsetMonth = xeUtils.getWhatMonth(
datePanelValue || Date.now(),
0,
'first'
)
if (isLeftArrow) {
offsetMonth = xeUtils.getWhatMonth(offsetMonth, -1)
} else if (isUpArrow) {
offsetMonth = xeUtils.getWhatMonth(offsetMonth, -4)
} else if (isRightArrow) {
offsetMonth = xeUtils.getWhatMonth(offsetMonth, 1)
} else if (isDwArrow) {
offsetMonth = xeUtils.getWhatMonth(offsetMonth, 4)
}
dateMoveMonth(offsetMonth)
} else {
var offsetDay =
datePanelValue || xeUtils.getWhatDay(Date.now(), 0, 'first')
var firstDayOfWeek = computeFirstDayOfWeek.value
if (isLeftArrow) {
offsetDay = xeUtils.getWhatDay(offsetDay, -1)
} else if (isUpArrow) {
offsetDay = xeUtils.getWhatWeek(offsetDay, -1, firstDayOfWeek)
} else if (isRightArrow) {
offsetDay = xeUtils.getWhatDay(offsetDay, 1)
} else if (isDwArrow) {
offsetDay = xeUtils.getWhatWeek(offsetDay, 1, firstDayOfWeek)
}
dateMoveDay(offsetDay)
}
}
}
var datePgOffsetEvent = function (evnt) {
var isActivated = reactData.isActivated
if (isActivated) {
var isPgUp = hasEventKey(evnt, EVENT_KEYS.PAGE_UP)
evnt.preventDefault()
if (isPgUp) {
datePrevEvent(evnt)
} else {
dateNextEvent(evnt)
}
}
}
var dateOpenPanel = function () {
var type4 = props2.type
var isDateTimeType = computeIsDateTimeType.value
var dateValue = computeDateValue.value
if (['year', 'quarter', 'month', 'week'].indexOf(type4) > -1) {
reactData.datePanelType = type4
} else {
reactData.datePanelType = 'day'
}
reactData.currentDate = xeUtils.getWhatDay(Date.now(), 0, 'first')
if (dateValue) {
dateMonthHandle(dateValue, 0)
dateParseValue(dateValue)
} else {
dateNowHandle()
}
if (isDateTimeType) {
reactData.datetimePanelValue =
reactData.datePanelValue || xeUtils.getWhatDay(Date.now(), 0, 'first')
nextTick(function () {
var timeBodyElem = refInputTimeBody.value
xeUtils.arrayEach(
timeBodyElem.querySelectorAll('li.is--selected'),
updateTimePos
)
})
}
}
var updateZindex = function () {
if (reactData.panelIndex < getLastZIndex()) {
reactData.panelIndex = nextZIndex()
}
}
var updatePlacement = function () {
return nextTick().then(function () {
var transfer = props2.transfer,
placement = props2.placement
var panelIndex = reactData.panelIndex
var targetElem = refInputTarget.value
var panelElem = refInputPanel.value
if (targetElem && panelElem) {
var targetHeight = targetElem.offsetHeight
var targetWidth = targetElem.offsetWidth
var panelHeight = panelElem.offsetHeight
var panelWidth = panelElem.offsetWidth
var marginSize = 5
var panelStyle = {
zIndex: panelIndex,
}
var _a2 = getAbsolutePos(targetElem),
boundingTop = _a2.boundingTop,
boundingLeft = _a2.boundingLeft,
visibleHeight = _a2.visibleHeight,
visibleWidth = _a2.visibleWidth
var panelPlacement = 'bottom'
if (transfer) {
var left2 = boundingLeft
var top_1 = boundingTop + targetHeight
if (placement === 'top') {
panelPlacement = 'top'
top_1 = boundingTop - panelHeight
} else if (!placement) {
if (top_1 + panelHeight + marginSize > visibleHeight) {
panelPlacement = 'top'
top_1 = boundingTop - panelHeight
}
if (top_1 < marginSize) {
panelPlacement = 'bottom'
top_1 = boundingTop + targetHeight
}
}
if (left2 + panelWidth + marginSize > visibleWidth) {
left2 -= left2 + panelWidth + marginSize - visibleWidth
}
if (left2 < marginSize) {
left2 = marginSize
}
Object.assign(panelStyle, {
left: ''.concat(left2, 'px'),
top: ''.concat(top_1, 'px'),
minWidth: ''.concat(targetWidth, 'px'),
})
} else {
if (placement === 'top') {
panelPlacement = 'top'
panelStyle.bottom = ''.concat(targetHeight, 'px')
} else if (!placement) {
if (boundingTop + targetHeight + panelHeight > visibleHeight) {
if (boundingTop - targetHeight - panelHeight > marginSize) {
panelPlacement = 'top'
panelStyle.bottom = ''.concat(targetHeight, 'px')
}
}
}
}
reactData.panelStyle = panelStyle
reactData.panelPlacement = panelPlacement
return nextTick()
}
})
}
var showPanel = function () {
var disabled = props2.disabled
var visiblePanel = reactData.visiblePanel
var isDatePickerType = computeIsDatePickerType.value
if (!disabled && !visiblePanel) {
if (!reactData.inited) {
reactData.inited = true
}
clearTimeout(hidePanelTimeout)
reactData.isActivated = true
reactData.animatVisible = true
if (isDatePickerType) {
dateOpenPanel()
}
setTimeout(function () {
reactData.visiblePanel = true
}, 10)
updateZindex()
return updatePlacement()
}
return nextTick()
}
var datePickerOpenEvent = function (evnt) {
var readonly2 = props2.readonly
if (!readonly2) {
evnt.preventDefault()
showPanel()
}
}
var clickEvent = function (evnt) {
triggerEvent2(evnt)
}
var handleGlobalMousedownEvent = function (evnt) {
var disabled = props2.disabled
var visiblePanel = reactData.visiblePanel,
isActivated = reactData.isActivated
var isDatePickerType = computeIsDatePickerType.value
var el2 = refElem.value
var panelElem = refInputPanel.value
if (!disabled && isActivated) {
reactData.isActivated =
getEventTargetNode(evnt, el2).flag ||
getEventTargetNode(evnt, panelElem).flag
if (!reactData.isActivated) {
if (isDatePickerType) {
if (visiblePanel) {
hidePanel()
afterCheckValue()
}
} else {
afterCheckValue()
}
}
}
}
var handleGlobalKeydownEvent = function (evnt) {
var clearable = props2.clearable,
disabled = props2.disabled
var visiblePanel = reactData.visiblePanel
var isDatePickerType = computeIsDatePickerType.value
if (!disabled) {
var isTab = hasEventKey(evnt, EVENT_KEYS.TAB)
var isDel = hasEventKey(evnt, EVENT_KEYS.DELETE)
var isEsc = hasEventKey(evnt, EVENT_KEYS.ESCAPE)
var isEnter = hasEventKey(evnt, EVENT_KEYS.ENTER)
var isLeftArrow = hasEventKey(evnt, EVENT_KEYS.ARROW_LEFT)
var isUpArrow = hasEventKey(evnt, EVENT_KEYS.ARROW_UP)
var isRightArrow = hasEventKey(evnt, EVENT_KEYS.ARROW_RIGHT)
var isDwArrow = hasEventKey(evnt, EVENT_KEYS.ARROW_DOWN)
var isPgUp = hasEventKey(evnt, EVENT_KEYS.PAGE_UP)
var isPgDn = hasEventKey(evnt, EVENT_KEYS.PAGE_DOWN)
var operArrow = isLeftArrow || isUpArrow || isRightArrow || isDwArrow
var isActivated = reactData.isActivated
if (isTab) {
if (isActivated) {
afterCheckValue()
}
isActivated = false
reactData.isActivated = isActivated
} else if (operArrow) {
if (isDatePickerType) {
if (isActivated) {
if (visiblePanel) {
dateOffsetEvent(evnt)
} else if (isUpArrow || isDwArrow) {
datePickerOpenEvent(evnt)
}
}
}
} else if (isEnter) {
if (isDatePickerType) {
if (visiblePanel) {
if (reactData.datePanelValue) {
dateSelectItem(reactData.datePanelValue)
} else {
hidePanel()
}
} else if (isActivated) {
datePickerOpenEvent(evnt)
}
}
} else if (isPgUp || isPgDn) {
if (isDatePickerType) {
if (isActivated) {
datePgOffsetEvent(evnt)
}
}
}
if (isTab || isEsc) {
if (visiblePanel) {
hidePanel()
}
} else if (isDel && clearable) {
if (isActivated) {
clearValueEvent(evnt, null)
}
}
}
}
var handleGlobalMousewheelEvent = function (evnt) {
var disabled = props2.disabled
var visiblePanel = reactData.visiblePanel
if (!disabled) {
if (visiblePanel) {
var panelElem = refInputPanel.value
if (getEventTargetNode(evnt, panelElem).flag) {
updatePlacement()
} else {
hidePanel()
afterCheckValue()
}
}
}
}
var handleGlobalBlurEvent = function () {
var isActivated = reactData.isActivated,
visiblePanel = reactData.visiblePanel
if (visiblePanel) {
hidePanel()
afterCheckValue()
} else if (isActivated) {
afterCheckValue()
}
}
var renderDateLabel = function (item2, label) {
var festivalMethod = props2.festivalMethod
if (festivalMethod) {
var datePanelType = reactData.datePanelType
var festivalRest = festivalMethod({
type: datePanelType,
viewType: datePanelType,
date: item2.date,
$input: $xeinput,
})
var festivalItem = festivalRest
? xeUtils.isString(festivalRest)
? { label: festivalRest }
: festivalRest
: {}
var extraItem = festivalItem.extra
? xeUtils.isString(festivalItem.extra)
? { label: festivalItem.extra }
: festivalItem.extra
: null
var labels = [
h$4(
'span',
{
class: [
'vxe-input--date-label',
{
'is-notice': festivalItem.notice,
},
],
},
extraItem && extraItem.label
? [
h$4('span', label),
h$4(
'span',
{
class: [
'vxe-input--date-label--extra',
extraItem.important ? 'is-important' : '',
extraItem.className,
],
style: extraItem.style,
},
xeUtils.toValueString(extraItem.label)
),
]
: label
),
]
var festivalLabel = festivalItem.label
if (festivalLabel) {
var festivalLabels = xeUtils.toValueString(festivalLabel).split(',')
labels.push(
h$4(
'span',
{
class: [
'vxe-input--date-festival',
festivalItem.important ? 'is-important' : '',
festivalItem.className,
],
style: festivalItem.style,
},
[
festivalLabels.length > 1
? h$4(
'span',
{
class: [
'vxe-input--date-festival--overlap',
'overlap--'.concat(festivalLabels.length),
],
},
festivalLabels.map(function (label2) {
return h$4('span', label2.substring(0, 3))
})
)
: h$4(
'span',
{
class: 'vxe-input--date-festival--label',
},
festivalLabels[0].substring(0, 3)
),
]
)
)
}
return labels
}
return label
}
var renderDateDayTable = function () {
var multiple = props2.multiple
var datePanelType = reactData.datePanelType,
datePanelValue = reactData.datePanelValue
var dateValue = computeDateValue.value
var dateHeaders = computeDateHeaders.value
var dayDatas = computeDayDatas.value
var dateListValue = computeDateListValue.value
var matchFormat = 'yyyyMMdd'
return [
h$4(
'table',
{
class: 'vxe-input--date-'.concat(datePanelType, '-view'),
cellspacing: 0,
cellpadding: 0,
border: 0,
},
[
h$4('thead', [
h$4(
'tr',
dateHeaders.map(function (item2) {
return h$4('th', item2.label)
})
),
]),
h$4(
'tbody',
dayDatas.map(function (rows) {
return h$4(
'tr',
rows.map(function (item2) {
return h$4(
'td',
{
class: {
'is--prev': item2.isPrev,
'is--current': item2.isCurrent,
'is--now': item2.isNow,
'is--next': item2.isNext,
'is--disabled': isDateDisabled(item2),
'is--selected': multiple
? dateListValue.some(function (val2) {
return xeUtils.isDateSame(
val2,
item2.date,
matchFormat
)
})
: xeUtils.isDateSame(
dateValue,
item2.date,
matchFormat
),
'is--hover': xeUtils.isDateSame(
datePanelValue,
item2.date,
matchFormat
),
},
onClick: function () {
return dateSelectEvent(item2)
},
onMouseenter: function () {
return dateMouseenterEvent(item2)
},
},
renderDateLabel(item2, item2.label)
)
})
)
})
),
]
),
]
}
var renderDateWeekTable = function () {
var multiple = props2.multiple
var datePanelType = reactData.datePanelType,
datePanelValue = reactData.datePanelValue
var dateValue = computeDateValue.value
var weekHeaders = computeWeekHeaders.value
var weekDates = computeWeekDates.value
var dateListValue = computeDateListValue.value
var matchFormat = 'yyyyMMdd'
return [
h$4(
'table',
{
class: 'vxe-input--date-'.concat(datePanelType, '-view'),
cellspacing: 0,
cellpadding: 0,
border: 0,
},
[
h$4('thead', [
h$4(
'tr',
weekHeaders.map(function (item2) {
return h$4('th', item2.label)
})
),
]),
h$4(
'tbody',
weekDates.map(function (rows) {
var isSelected = multiple
? rows.some(function (item2) {
return dateListValue.some(function (val2) {
return xeUtils.isDateSame(val2, item2.date, matchFormat)
})
})
: rows.some(function (item2) {
return xeUtils.isDateSame(
dateValue,
item2.date,
matchFormat
)
})
var isHover2 = rows.some(function (item2) {
return xeUtils.isDateSame(
datePanelValue,
item2.date,
matchFormat
)
})
return h$4(
'tr',
rows.map(function (item2) {
return h$4(
'td',
{
class: {
'is--prev': item2.isPrev,
'is--current': item2.isCurrent,
'is--now': item2.isNow,
'is--next': item2.isNext,
'is--disabled': isDateDisabled(item2),
'is--selected': isSelected,
'is--hover': isHover2,
},
onClick: function () {
return dateSelectEvent(item2)
},
onMouseenter: function () {
return dateMouseenterEvent(item2)
},
},
renderDateLabel(item2, item2.label)
)
})
)
})
),
]
),
]
}
var renderDateMonthTable = function () {
var multiple = props2.multiple
var datePanelType = reactData.datePanelType,
datePanelValue = reactData.datePanelValue
var dateValue = computeDateValue.value
var monthDatas = computeMonthDatas.value
var dateListValue = computeDateListValue.value
var matchFormat = 'yyyyMM'
return [
h$4(
'table',
{
class: 'vxe-input--date-'.concat(datePanelType, '-view'),
cellspacing: 0,
cellpadding: 0,
border: 0,
},
[
h$4(
'tbody',
monthDatas.map(function (rows) {
return h$4(
'tr',
rows.map(function (item2) {
return h$4(
'td',
{
class: {
'is--prev': item2.isPrev,
'is--current': item2.isCurrent,
'is--now': item2.isNow,
'is--next': item2.isNext,
'is--disabled': isDateDisabled(item2),
'is--selected': multiple
? dateListValue.some(function (val2) {
return xeUtils.isDateSame(
val2,
item2.date,
matchFormat
)
})
: xeUtils.isDateSame(
dateValue,
item2.date,
matchFormat
),
'is--hover': xeUtils.isDateSame(
datePanelValue,
item2.date,
matchFormat
),
},
onClick: function () {
return dateSelectEvent(item2)
},
onMouseenter: function () {
return dateMouseenterEvent(item2)
},
},
renderDateLabel(
item2,
GlobalConfig.i18n(
'vxe.input.date.months.m'.concat(item2.month)
)
)
)
})
)
})
),
]
),
]
}
var renderDateQuarterTable = function () {
var multiple = props2.multiple
var datePanelType = reactData.datePanelType,
datePanelValue = reactData.datePanelValue
var dateValue = computeDateValue.value
var quarterDatas = computeQuarterDatas.value
var dateListValue = computeDateListValue.value
var matchFormat = 'yyyyq'
return [
h$4(
'table',
{
class: 'vxe-input--date-'.concat(datePanelType, '-view'),
cellspacing: 0,
cellpadding: 0,
border: 0,
},
[
h$4(
'tbody',
quarterDatas.map(function (rows) {
return h$4(
'tr',
rows.map(function (item2) {
return h$4(
'td',
{
class: {
'is--prev': item2.isPrev,
'is--current': item2.isCurrent,
'is--now': item2.isNow,
'is--next': item2.isNext,
'is--disabled': isDateDisabled(item2),
'is--selected': multiple
? dateListValue.some(function (val2) {
return xeUtils.isDateSame(
val2,
item2.date,
matchFormat
)
})
: xeUtils.isDateSame(
dateValue,
item2.date,
matchFormat
),
'is--hover': xeUtils.isDateSame(
datePanelValue,
item2.date,
matchFormat
),
},
onClick: function () {
return dateSelectEvent(item2)
},
onMouseenter: function () {
return dateMouseenterEvent(item2)
},
},
renderDateLabel(
item2,
GlobalConfig.i18n(
'vxe.input.date.quarters.q'.concat(item2.quarter)
)
)
)
})
)
})
),
]
),
]
}
var renderDateYearTable = function () {
var multiple = props2.multiple
var datePanelType = reactData.datePanelType,
datePanelValue = reactData.datePanelValue
var dateValue = computeDateValue.value
var yearDatas = computeYearDatas.value
var dateListValue = computeDateListValue.value
var matchFormat = 'yyyy'
return [
h$4(
'table',
{
class: 'vxe-input--date-'.concat(datePanelType, '-view'),
cellspacing: 0,
cellpadding: 0,
border: 0,
},
[
h$4(
'tbody',
yearDatas.map(function (rows) {
return h$4(
'tr',
rows.map(function (item2) {
return h$4(
'td',
{
class: {
'is--prev': item2.isPrev,
'is--current': item2.isCurrent,
'is--now': item2.isNow,
'is--next': item2.isNext,
'is--disabled': isDateDisabled(item2),
'is--selected': multiple
? dateListValue.some(function (val2) {
return xeUtils.isDateSame(
val2,
item2.date,
matchFormat
)
})
: xeUtils.isDateSame(
dateValue,
item2.date,
matchFormat
),
'is--hover': xeUtils.isDateSame(
datePanelValue,
item2.date,
matchFormat
),
},
onClick: function () {
return dateSelectEvent(item2)
},
onMouseenter: function () {
return dateMouseenterEvent(item2)
},
},
renderDateLabel(item2, item2.year)
)
})
)
})
),
]
),
]
}
var renderDateTable = function () {
var datePanelType = reactData.datePanelType
switch (datePanelType) {
case 'week':
return renderDateWeekTable()
case 'month':
return renderDateMonthTable()
case 'quarter':
return renderDateQuarterTable()
case 'year':
return renderDateYearTable()
}
return renderDateDayTable()
}
var renderDatePanel = function () {
var multiple = props2.multiple
var datePanelType = reactData.datePanelType
var isDisabledPrevDateBtn = computeIsDisabledPrevDateBtn.value
var isDisabledNextDateBtn = computeIsDisabledNextDateBtn.value
var selectDatePanelLabel = computeSelectDatePanelLabel.value
return [
h$4(
'div',
{
class: 'vxe-input--date-picker-header',
},
[
h$4(
'div',
{
class: 'vxe-input--date-picker-type-wrapper',
},
[
datePanelType === 'year'
? h$4(
'span',
{
class: 'vxe-input--date-picker-label',
},
selectDatePanelLabel
)
: h$4(
'span',
{
class: 'vxe-input--date-picker-btn',
onClick: dateToggleTypeEvent,
},
selectDatePanelLabel
),
]
),
h$4(
'div',
{
class: 'vxe-input--date-picker-btn-wrapper',
},
[
h$4(
'span',
{
class: [
'vxe-input--date-picker-btn vxe-input--date-picker-prev-btn',
{
'is--disabled': isDisabledPrevDateBtn,
},
],
onClick: datePrevEvent,
},
[
h$4('i', {
class: 'vxe-icon-caret-left',
}),
]
),
h$4(
'span',
{
class:
'vxe-input--date-picker-btn vxe-input--date-picker-current-btn',
onClick: dateTodayMonthEvent,
},
[
h$4('i', {
class: 'vxe-icon-dot',
}),
]
),
h$4(
'span',
{
class: [
'vxe-input--date-picker-btn vxe-input--date-picker-next-btn',
{
'is--disabled': isDisabledNextDateBtn,
},
],
onClick: dateNextEvent,
},
[
h$4('i', {
class: 'vxe-icon-caret-right',
}),
]
),
multiple && computeSupportMultiples.value
? h$4(
'span',
{
class:
'vxe-input--date-picker-btn vxe-input--date-picker-confirm-btn',
},
[
h$4(
'button',
{
class: 'vxe-input--date-picker-confirm',
type: 'button',
onClick: dateConfirmEvent,
},
GlobalConfig.i18n('vxe.button.confirm')
),
]
)
: null,
]
),
]
),
h$4(
'div',
{
class: 'vxe-input--date-picker-body',
},
renderDateTable()
),
]
}
var renderTimePanel = function () {
var datetimePanelValue = reactData.datetimePanelValue
var dateTimeLabel = computeDateTimeLabel.value
var hourList = computeHourList.value
var minuteList = computeMinuteList.value
var secondList = computeSecondList.value
return [
h$4(
'div',
{
class: 'vxe-input--time-picker-header',
},
[
h$4(
'span',
{
class: 'vxe-input--time-picker-title',
},
dateTimeLabel
),
h$4(
'button',
{
class: 'vxe-input--time-picker-confirm',
type: 'button',
onClick: dateConfirmEvent,
},
GlobalConfig.i18n('vxe.button.confirm')
),
]
),
h$4(
'div',
{
ref: refInputTimeBody,
class: 'vxe-input--time-picker-body',
},
[
h$4(
'ul',
{
class: 'vxe-input--time-picker-hour-list',
},
hourList.map(function (item2, index2) {
return h$4(
'li',
{
key: index2,
class: {
'is--selected':
datetimePanelValue &&
datetimePanelValue.getHours() === item2.value,
},
onClick: function (evnt) {
return dateHourEvent(evnt, item2)
},
},
item2.label
)
})
),
h$4(
'ul',
{
class: 'vxe-input--time-picker-minute-list',
},
minuteList.map(function (item2, index2) {
return h$4(
'li',
{
key: index2,
class: {
'is--selected':
datetimePanelValue &&
datetimePanelValue.getMinutes() === item2.value,
},
onClick: function (evnt) {
return dateMinuteEvent(evnt, item2)
},
},
item2.label
)
})
),
h$4(
'ul',
{
class: 'vxe-input--time-picker-second-list',
},
secondList.map(function (item2, index2) {
return h$4(
'li',
{
key: index2,
class: {
'is--selected':
datetimePanelValue &&
datetimePanelValue.getSeconds() === item2.value,
},
onClick: function (evnt) {
return dateSecondEvent(evnt, item2)
},
},
item2.label
)
})
),
]
),
]
}
var renderPanel = function () {
var _a2
var type4 = props2.type,
transfer = props2.transfer
var inited = reactData.inited,
animatVisible = reactData.animatVisible,
visiblePanel = reactData.visiblePanel,
panelPlacement = reactData.panelPlacement,
panelStyle = reactData.panelStyle
var vSize = computeSize.value
var isDatePickerType = computeIsDatePickerType.value
var renders = []
if (isDatePickerType) {
if (type4 === 'datetime') {
renders.push(
h$4(
'div',
{
class: 'vxe-input--panel-layout-wrapper',
},
[
h$4(
'div',
{
class: 'vxe-input--panel-left-wrapper',
},
renderDatePanel()
),
h$4(
'div',
{
class: 'vxe-input--panel-right-wrapper',
},
renderTimePanel()
),
]
)
)
} else if (type4 === 'time') {
renders.push(
h$4(
'div',
{
class: 'vxe-input--panel-wrapper',
},
renderTimePanel()
)
)
} else {
renders.push(
h$4(
'div',
{
class: 'vxe-input--panel-wrapper',
},
renderDatePanel()
)
)
}
return h$4(
Teleport,
{
to: 'body',
disabled: transfer ? !inited : true,
},
[
h$4(
'div',
{
ref: refInputPanel,
class: [
'vxe-table--ignore-clear vxe-input--panel',
'type--'.concat(type4),
((_a2 = {}),
(_a2['size--'.concat(vSize)] = vSize),
(_a2['is--transfer'] = transfer),
(_a2['animat--leave'] = animatVisible),
(_a2['animat--enter'] = visiblePanel),
_a2),
],
placement: panelPlacement,
style: panelStyle,
},
renders
),
]
)
}
return null
}
var renderNumberIcon = function () {
var isDisabledAddNumber = computeIsDisabledAddNumber.value
var isDisabledSubtractNumber = computeIsDisabledSubtractNumber.value
return h$4(
'span',
{
class: 'vxe-input--number-suffix',
},
[
h$4(
'span',
{
class: [
'vxe-input--number-prev is--prev',
{
'is--disabled': isDisabledAddNumber,
},
],
onMousedown: numberMousedownEvent,
onMouseup: numberStopDown,
onMouseleave: numberStopDown,
},
[
h$4('i', {
class: [
'vxe-input--number-prev-icon',
GlobalConfig.icon.INPUT_PREV_NUM,
],
}),
]
),
h$4(
'span',
{
class: [
'vxe-input--number-next is--next',
{
'is--disabled': isDisabledSubtractNumber,
},
],
onMousedown: numberMousedownEvent,
onMouseup: numberStopDown,
onMouseleave: numberStopDown,
},
[
h$4('i', {
class: [
'vxe-input--number-next-icon',
GlobalConfig.icon.INPUT_NEXT_NUM,
],
}),
]
),
]
)
}
var renderDatePickerIcon = function () {
return h$4(
'span',
{
class: 'vxe-input--date-picker-suffix',
onClick: datePickerOpenEvent,
},
[
h$4('i', {
class: [
'vxe-input--date-picker-icon',
GlobalConfig.icon.INPUT_DATE,
],
}),
]
)
}
var renderSearchIcon = function () {
return h$4(
'span',
{
class: 'vxe-input--search-suffix',
onClick: searchEvent,
},
[
h$4('i', {
class: ['vxe-input--search-icon', GlobalConfig.icon.INPUT_SEARCH],
}),
]
)
}
var renderPasswordIcon = function () {
var showPwd = reactData.showPwd
return h$4(
'span',
{
class: 'vxe-input--password-suffix',
onClick: passwordToggleEvent,
},
[
h$4('i', {
class: [
'vxe-input--password-icon',
showPwd
? GlobalConfig.icon.INPUT_SHOW_PWD
: GlobalConfig.icon.INPUT_PWD,
],
}),
]
)
}
var rendePrefixIcon = function () {
var prefixIcon = props2.prefixIcon
var prefixSlot = slots.prefix
var icons = []
if (prefixSlot) {
icons.push(
h$4(
'span',
{
class: 'vxe-input--prefix-icon',
},
prefixSlot({})
)
)
} else if (prefixIcon) {
icons.push(
h$4('i', {
class: ['vxe-input--prefix-icon', prefixIcon],
})
)
}
return icons.length
? h$4(
'span',
{
class: 'vxe-input--prefix',
onClick: clickPrefixEvent,
},
icons
)
: null
}
var renderSuffixIcon2 = function () {
var disabled = props2.disabled,
suffixIcon = props2.suffixIcon
var inputValue = reactData.inputValue
var suffixSlot = slots.suffix
var isClearable = computeIsClearable.value
var icons = []
if (suffixSlot) {
icons.push(
h$4(
'span',
{
class: 'vxe-input--suffix-icon',
},
suffixSlot({})
)
)
} else if (suffixIcon) {
icons.push(
h$4('i', {
class: ['vxe-input--suffix-icon', suffixIcon],
})
)
}
if (isClearable) {
icons.push(
h$4('i', {
class: ['vxe-input--clear-icon', GlobalConfig.icon.INPUT_CLEAR],
})
)
}
return icons.length
? h$4(
'span',
{
class: [
'vxe-input--suffix',
{
'is--clear':
isClearable &&
!disabled &&
!(inputValue === '' || xeUtils.eqNull(inputValue)),
},
],
onClick: clickSuffixEvent,
},
icons
)
: null
}
var renderExtraSuffixIcon = function () {
var controls = props2.controls
var isNumType = computeIsNumType.value
var isDatePickerType = computeIsDatePickerType.value
var isPawdType = computeIsPawdType.value
var isSearchType = computeIsSearchType.value
var icons
if (isPawdType) {
icons = renderPasswordIcon()
} else if (isNumType) {
if (controls) {
icons = renderNumberIcon()
}
} else if (isDatePickerType) {
icons = renderDatePickerIcon()
} else if (isSearchType) {
icons = renderSearchIcon()
}
return icons
? h$4(
'span',
{
class: 'vxe-input--extra-suffix',
},
[icons]
)
: null
}
inputMethods = {
dispatchEvent: function (type4, params2, evnt) {
emit2(type4, Object.assign({ $input: $xeinput, $event: evnt }, params2))
},
focus: function () {
var inputElem = refInputTarget.value
reactData.isActivated = true
inputElem.focus()
return nextTick()
},
blur: function () {
var inputElem = refInputTarget.value
inputElem.blur()
reactData.isActivated = false
return nextTick()
},
select: function () {
var inputElem = refInputTarget.value
inputElem.select()
reactData.isActivated = false
return nextTick()
},
showPanel,
hidePanel,
updatePlacement,
}
Object.assign($xeinput, inputMethods)
watch$1(
function () {
return props2.modelValue
},
function (val2) {
reactData.inputValue = val2
changeValue()
}
)
watch$1(
function () {
return props2.type
},
function () {
Object.assign(reactData, {
inputValue: props2.modelValue,
datetimePanelValue: null,
datePanelValue: null,
datePanelLabel: '',
datePanelType: 'day',
selectMonth: null,
currentDate: null,
})
initValue()
}
)
watch$1(computeDateLabelFormat, function () {
var isDatePickerType = computeIsDatePickerType.value
if (isDatePickerType) {
dateParseValue(reactData.datePanelValue)
reactData.inputValue = props2.multiple
? computeDateMultipleLabel.value
: reactData.datePanelLabel
}
})
nextTick(function () {
GlobalEvent.on($xeinput, 'mousewheel', handleGlobalMousewheelEvent)
GlobalEvent.on($xeinput, 'mousedown', handleGlobalMousedownEvent)
GlobalEvent.on($xeinput, 'keydown', handleGlobalKeydownEvent)
GlobalEvent.on($xeinput, 'blur', handleGlobalBlurEvent)
})
onUnmounted(function () {
numberStopDown()
GlobalEvent.off($xeinput, 'mousewheel')
GlobalEvent.off($xeinput, 'mousedown')
GlobalEvent.off($xeinput, 'keydown')
GlobalEvent.off($xeinput, 'blur')
})
initValue()
var renderVN = function () {
var _a2
var className = props2.className,
controls = props2.controls,
type4 = props2.type,
align = props2.align,
showWordCount = props2.showWordCount,
countMethod = props2.countMethod,
name2 = props2.name,
disabled = props2.disabled,
readonly2 = props2.readonly,
autocomplete = props2.autocomplete
var inputValue = reactData.inputValue,
visiblePanel = reactData.visiblePanel,
isActivated = reactData.isActivated
var vSize = computeSize.value
var isCountError = computeIsCountError.value
var inputCount = computeInputCount.value
var isDatePickerType = computeIsDatePickerType.value
var inpReadonly = computeInpReadonly.value
var inpMaxlength = computeInpMaxlength.value
var inputType = computeInputType.value
var inpPlaceholder = computeInpPlaceholder.value
var childs = []
var prefix = rendePrefixIcon()
var suffix2 = renderSuffixIcon2()
if (prefix) {
childs.push(prefix)
}
childs.push(
h$4('input', {
ref: refInputTarget,
class: 'vxe-input--inner',
value: inputValue,
name: name2,
type: inputType,
placeholder: inpPlaceholder,
maxlength: inpMaxlength,
readonly: inpReadonly,
disabled,
autocomplete,
onKeydown: keydownEvent,
onKeyup: keyupEvent,
onWheel: wheelEvent,
onClick: clickEvent,
onInput: inputEvent,
onChange: changeEvent,
onFocus: focusEvent,
onBlur: blurEvent,
})
)
if (suffix2) {
childs.push(suffix2)
}
childs.push(renderExtraSuffixIcon())
if (isDatePickerType) {
childs.push(renderPanel())
}
var isWordCount = false
if (showWordCount && ['text', 'search'].includes(type4)) {
isWordCount = true
childs.push(
h$4(
'span',
{
class: [
'vxe-input--count',
{
'is--error': isCountError,
},
],
},
countMethod
? ''.concat(countMethod({ value: inputValue }))
: ''
.concat(inputCount)
.concat(inpMaxlength ? '/'.concat(inpMaxlength) : '')
)
)
}
return h$4(
'div',
{
ref: refElem,
class: [
'vxe-input',
'type--'.concat(type4),
className,
((_a2 = {}),
(_a2['size--'.concat(vSize)] = vSize),
(_a2['is--'.concat(align)] = align),
(_a2['is--controls'] = controls),
(_a2['is--prefix'] = !!prefix),
(_a2['is--suffix'] = !!suffix2),
(_a2['is--readonly'] = readonly2),
(_a2['is--visivle'] = visiblePanel),
(_a2['is--count'] = isWordCount),
(_a2['is--disabled'] = disabled),
(_a2['is--active'] = isActivated),
_a2),
],
},
childs
)
}
$xeinput.renderVN = renderVN
return $xeinput
},
render: function () {
return this.renderVN()
},
})
var VxeCheckboxComponent = defineComponent({
name: 'VxeCheckbox',
props: {
modelValue: [String, Number, Boolean],
label: { type: [String, Number], default: null },
indeterminate: Boolean,
title: [String, Number],
checkedValue: { type: [String, Number, Boolean], default: true },
uncheckedValue: { type: [String, Number, Boolean], default: false },
content: [String, Number],
disabled: Boolean,
size: {
type: String,
default: function () {
return GlobalConfig.checkbox.size || GlobalConfig.size
},
},
},
emits: ['update:modelValue', 'change'],
setup: function (props2, context2) {
var slots = context2.slots,
emit2 = context2.emit
var $xeform = inject('$xeform', null)
var $xeformiteminfo = inject('$xeformiteminfo', null)
var xID = xeUtils.uniqueId()
var $xecheckbox = {
xID,
props: props2,
context: context2,
}
var checkboxMethods = {}
var computeSize = useSize(props2)
var $xecheckboxgroup = inject('$xecheckboxgroup', null)
var computeIsChecked = computed(function () {
if ($xecheckboxgroup) {
return xeUtils.includes($xecheckboxgroup.props.modelValue, props2.label)
}
return props2.modelValue === props2.checkedValue
})
var computeIsDisabled = computed(function () {
if (props2.disabled) {
return true
}
if ($xecheckboxgroup) {
var groupProps = $xecheckboxgroup.props
var computeIsMaximize =
$xecheckboxgroup.getComputeMaps().computeIsMaximize
var isMaximize = computeIsMaximize.value
var isChecked = computeIsChecked.value
return groupProps.disabled || (isMaximize && !isChecked)
}
return false
})
var changeEvent = function (evnt) {
var checkedValue = props2.checkedValue,
uncheckedValue = props2.uncheckedValue
var isDisabled = computeIsDisabled.value
if (!isDisabled) {
var checked2 = evnt.target.checked
var value2 = checked2 ? checkedValue : uncheckedValue
var params2 = { checked: checked2, value: value2, label: props2.label }
if ($xecheckboxgroup) {
$xecheckboxgroup.handleChecked(params2, evnt)
} else {
emit2('update:modelValue', value2)
checkboxMethods.dispatchEvent('change', params2, evnt)
if ($xeform && $xeformiteminfo) {
$xeform.triggerItemEvent(
evnt,
$xeformiteminfo.itemConfig.field,
value2
)
}
}
}
}
checkboxMethods = {
dispatchEvent: function (type4, params2, evnt) {
emit2(
type4,
Object.assign({ $checkbox: $xecheckbox, $event: evnt }, params2)
)
},
}
Object.assign($xecheckbox, checkboxMethods)
var renderVN = function () {
var _a2
var vSize = computeSize.value
var isDisabled = computeIsDisabled.value
var isChecked = computeIsChecked.value
var indeterminate = props2.indeterminate
return h$4(
'label',
{
class: [
'vxe-checkbox',
((_a2 = {}),
(_a2['size--'.concat(vSize)] = vSize),
(_a2['is--indeterminate'] = indeterminate),
(_a2['is--disabled'] = isDisabled),
(_a2['is--checked'] = isChecked),
_a2),
],
title: props2.title,
},
[
h$4('input', {
class: 'vxe-checkbox--input',
type: 'checkbox',
disabled: isDisabled,
checked: isChecked,
onChange: changeEvent,
}),
h$4('span', {
class: [
'vxe-checkbox--icon',
indeterminate
? 'vxe-icon-checkbox-indeterminate'
: isChecked
? 'vxe-icon-checkbox-checked'
: 'vxe-icon-checkbox-unchecked',
],
}),
h$4(
'span',
{
class: 'vxe-checkbox--label',
},
slots.default ? slots.default({}) : getFuncText(props2.content)
),
]
)
}
$xecheckbox.renderVN = renderVN
return $xecheckbox
},
render: function () {
return this.renderVN()
},
})
function isOptionVisible(option2) {
return option2.visible !== false
}
function getOptUniqueId() {
return xeUtils.uniqueId('opt_')
}
var VxeSelectComponent = defineComponent({
name: 'VxeSelect',
props: {
modelValue: null,
clearable: Boolean,
placeholder: {
type: String,
default: function () {
return xeUtils.eqNull(GlobalConfig.select.placeholder)
? GlobalConfig.i18n('vxe.base.pleaseSelect')
: GlobalConfig.select.placeholder
},
},
loading: Boolean,
disabled: Boolean,
multiple: Boolean,
multiCharOverflow: {
type: [Number, String],
default: function () {
return GlobalConfig.select.multiCharOverflow
},
},
prefixIcon: String,
placement: String,
options: Array,
optionProps: Object,
optionGroups: Array,
optionGroupProps: Object,
optionConfig: Object,
className: [String, Function],
popupClassName: [String, Function],
max: { type: [String, Number], default: null },
size: {
type: String,
default: function () {
return GlobalConfig.select.size || GlobalConfig.size
},
},
filterable: Boolean,
filterMethod: Function,
remote: Boolean,
remoteMethod: Function,
emptyText: String,
optionId: {
type: String,
default: function () {
return GlobalConfig.select.optionId
},
},
optionKey: Boolean,
transfer: {
type: Boolean,
default: function () {
return GlobalConfig.select.transfer
},
},
},
emits: ['update:modelValue', 'change', 'clear', 'blur', 'focus'],
setup: function (props2, context2) {
var slots = context2.slots,
emit2 = context2.emit
var $xeform = inject('$xeform', null)
var $xeformiteminfo = inject('$xeformiteminfo', null)
var xID = xeUtils.uniqueId()
var computeSize = useSize(props2)
var reactData = reactive({
inited: false,
staticOptions: [],
fullGroupList: [],
fullOptionList: [],
visibleGroupList: [],
visibleOptionList: [],
remoteValueList: [],
panelIndex: 0,
panelStyle: {},
panelPlacement: null,
currentOption: null,
currentValue: null,
visiblePanel: false,
animatVisible: false,
isActivated: false,
searchValue: '',
searchLoading: false,
})
var refElem = ref()
var refInput = ref()
var refInpSearch = ref()
var refOptionWrapper = ref()
var refOptionPanel = ref()
var refMaps = {
refElem,
}
var $xeselect = {
xID,
props: props2,
context: context2,
reactData,
getRefMaps: function () {
return refMaps
},
}
var selectMethods = {}
var computePropsOpts = computed(function () {
return props2.optionProps || {}
})
var computeGroupPropsOpts = computed(function () {
return props2.optionGroupProps || {}
})
var computeLabelField = computed(function () {
var propsOpts = computePropsOpts.value
return propsOpts.label || 'label'
})
var computeValueField = computed(function () {
var propsOpts = computePropsOpts.value
return propsOpts.value || 'value'
})
var computeGroupLabelField = computed(function () {
var groupPropsOpts = computeGroupPropsOpts.value
return groupPropsOpts.label || 'label'
})
var computeGroupOptionsField = computed(function () {
var groupPropsOpts = computeGroupPropsOpts.value
return groupPropsOpts.options || 'options'
})
var computeIsMaximize = computed(function () {
var modelValue = props2.modelValue,
multiple = props2.multiple,
max3 = props2.max
if (multiple && max3) {
return (modelValue ? modelValue.length : 0) >= xeUtils.toNumber(max3)
}
return false
})
var computeOptionOpts = computed(function () {
return Object.assign(
{},
GlobalConfig.select.optionConfig,
props2.optionConfig
)
})
var computeIsGroup = computed(function () {
return reactData.fullGroupList.some(function (item2) {
return item2.options && item2.options.length
})
})
var computeMultiMaxCharNum = computed(function () {
return xeUtils.toNumber(props2.multiCharOverflow)
})
var callSlot = function (slotFunc, params2) {
if (slotFunc) {
if (xeUtils.isString(slotFunc)) {
slotFunc = slots[slotFunc] || null
}
if (xeUtils.isFunction(slotFunc)) {
return getSlotVNs(slotFunc(params2))
}
}
return []
}
var findOption = function (optionValue) {
var fullOptionList = reactData.fullOptionList,
fullGroupList = reactData.fullGroupList
var isGroup2 = computeIsGroup.value
var valueField = computeValueField.value
if (isGroup2) {
for (var gIndex = 0; gIndex < fullGroupList.length; gIndex++) {
var group = fullGroupList[gIndex]
if (group.options) {
for (var index2 = 0; index2 < group.options.length; index2++) {
var option2 = group.options[index2]
if (optionValue === option2[valueField]) {
return option2
}
}
}
}
}
return fullOptionList.find(function (item2) {
return optionValue === item2[valueField]
})
}
var getRemoteSelectLabel = function (value2) {
var remoteValueList = reactData.remoteValueList
var labelField = computeLabelField.value
var remoteItem = remoteValueList.find(function (item3) {
return value2 === item3.key
})
var item2 = remoteItem ? remoteItem.result : null
return xeUtils.toValueString(item2 ? item2[labelField] : value2)
}
var getSelectLabel = function (value2) {
var labelField = computeLabelField.value
var item2 = findOption(value2)
return xeUtils.toValueString(item2 ? item2[labelField] : value2)
}
var computeSelectLabel = computed(function () {
var modelValue = props2.modelValue,
multiple = props2.multiple,
remote = props2.remote
var multiMaxCharNum = computeMultiMaxCharNum.value
if (modelValue && multiple) {
var vals = xeUtils.isArray(modelValue) ? modelValue : [modelValue]
if (remote) {
return vals
.map(function (val2) {
return getRemoteSelectLabel(val2)
})
.join(', ')
}
return vals
.map(function (val2) {
var label = getSelectLabel(val2)
if (multiMaxCharNum > 0 && label.length > multiMaxCharNum) {
return ''.concat(label.substring(0, multiMaxCharNum), '...')
}
return label
})
.join(', ')
}
if (remote) {
return getRemoteSelectLabel(modelValue)
}
return getSelectLabel(modelValue)
})
var getOptkey = function () {
var optionOpts = computeOptionOpts.value
return optionOpts.keyField || props2.optionId || '_X_OPTION_KEY'
}
var getOptid = function (option2) {
var optid = option2[getOptkey()]
return optid ? encodeURIComponent(optid) : ''
}
var refreshOption = function () {
var filterable = props2.filterable,
filterMethod = props2.filterMethod
var fullOptionList = reactData.fullOptionList,
fullGroupList = reactData.fullGroupList,
searchValue = reactData.searchValue
var isGroup2 = computeIsGroup.value
var groupLabelField = computeGroupLabelField.value
var labelField = computeLabelField.value
if (isGroup2) {
if (filterable && filterMethod) {
reactData.visibleGroupList = fullGroupList.filter(function (group) {
return (
isOptionVisible(group) &&
filterMethod({ group, option: null, searchValue })
)
})
} else if (filterable) {
reactData.visibleGroupList = fullGroupList.filter(function (group) {
return (
isOptionVisible(group) &&
(!searchValue ||
''.concat(group[groupLabelField]).indexOf(searchValue) > -1)
)
})
} else {
reactData.visibleGroupList = fullGroupList.filter(isOptionVisible)
}
} else {
if (filterable && filterMethod) {
reactData.visibleOptionList = fullOptionList.filter(function (
option2
) {
return (
isOptionVisible(option2) &&
filterMethod({ group: null, option: option2, searchValue })
)
})
} else if (filterable) {
reactData.visibleOptionList = fullOptionList.filter(function (
option2
) {
return (
isOptionVisible(option2) &&
(!searchValue ||
''.concat(option2[labelField]).indexOf(searchValue) > -1)
)
})
} else {
reactData.visibleOptionList = fullOptionList.filter(isOptionVisible)
}
}
return nextTick()
}
var cacheItemMap = function () {
var fullOptionList = reactData.fullOptionList,
fullGroupList = reactData.fullGroupList
var groupOptionsField = computeGroupOptionsField.value
var key2 = getOptkey()
var handleOptis = function (item2) {
if (!getOptid(item2)) {
item2[key2] = getOptUniqueId()
}
}
if (fullGroupList.length) {
fullGroupList.forEach(function (group) {
handleOptis(group)
if (group[groupOptionsField]) {
group[groupOptionsField].forEach(handleOptis)
}
})
} else if (fullOptionList.length) {
fullOptionList.forEach(handleOptis)
}
refreshOption()
}
var setCurrentOption = function (option2) {
var valueField = computeValueField.value
if (option2) {
reactData.currentOption = option2
reactData.currentValue = option2[valueField]
}
}
var scrollToOption = function (option2, isAlignBottom) {
return nextTick().then(function () {
if (option2) {
var optWrapperElem = refOptionWrapper.value
var panelElem = refOptionPanel.value
var optElem = panelElem.querySelector(
"[optid='".concat(getOptid(option2), "']")
)
if (optWrapperElem && optElem) {
var wrapperHeight = optWrapperElem.offsetHeight
var offsetPadding = 5
if (isAlignBottom) {
if (
optElem.offsetTop +
optElem.offsetHeight -
optWrapperElem.scrollTop >
wrapperHeight
) {
optWrapperElem.scrollTop =
optElem.offsetTop + optElem.offsetHeight - wrapperHeight
}
} else {
if (
optElem.offsetTop + offsetPadding < optWrapperElem.scrollTop ||
optElem.offsetTop + offsetPadding >
optWrapperElem.scrollTop + optWrapperElem.clientHeight
) {
optWrapperElem.scrollTop = optElem.offsetTop - offsetPadding
}
}
}
}
})
}
var updateZindex = function () {
if (reactData.panelIndex < getLastZIndex()) {
reactData.panelIndex = nextZIndex()
}
}
var updatePlacement = function () {
return nextTick().then(function () {
var transfer = props2.transfer,
placement = props2.placement
var panelIndex = reactData.panelIndex
var el2 = refElem.value
var panelElem = refOptionPanel.value
if (panelElem && el2) {
var targetHeight = el2.offsetHeight
var targetWidth = el2.offsetWidth
var panelHeight = panelElem.offsetHeight
var panelWidth = panelElem.offsetWidth
var marginSize = 5
var panelStyle = {
zIndex: panelIndex,
}
var _a2 = getAbsolutePos(el2),
boundingTop = _a2.boundingTop,
boundingLeft = _a2.boundingLeft,
visibleHeight = _a2.visibleHeight,
visibleWidth = _a2.visibleWidth
var panelPlacement = 'bottom'
if (transfer) {
var left2 = boundingLeft
var top_1 = boundingTop + targetHeight
if (placement === 'top') {
panelPlacement = 'top'
top_1 = boundingTop - panelHeight
} else if (!placement) {
if (top_1 + panelHeight + marginSize > visibleHeight) {
panelPlacement = 'top'
top_1 = boundingTop - panelHeight
}
if (top_1 < marginSize) {
panelPlacement = 'bottom'
top_1 = boundingTop + targetHeight
}
}
if (left2 + panelWidth + marginSize > visibleWidth) {
left2 -= left2 + panelWidth + marginSize - visibleWidth
}
if (left2 < marginSize) {
left2 = marginSize
}
Object.assign(panelStyle, {
left: ''.concat(left2, 'px'),
top: ''.concat(top_1, 'px'),
minWidth: ''.concat(targetWidth, 'px'),
})
} else {
if (placement === 'top') {
panelPlacement = 'top'
panelStyle.bottom = ''.concat(targetHeight, 'px')
} else if (!placement) {
if (boundingTop + targetHeight + panelHeight > visibleHeight) {
if (boundingTop - targetHeight - panelHeight > marginSize) {
panelPlacement = 'top'
panelStyle.bottom = ''.concat(targetHeight, 'px')
}
}
}
}
reactData.panelStyle = panelStyle
reactData.panelPlacement = panelPlacement
return nextTick()
}
})
}
var hidePanelTimeout
var showOptionPanel = function () {
var loading2 = props2.loading,
disabled = props2.disabled,
filterable = props2.filterable
if (!loading2 && !disabled) {
clearTimeout(hidePanelTimeout)
if (!reactData.inited) {
reactData.inited = true
}
reactData.isActivated = true
reactData.animatVisible = true
if (filterable) {
refreshOption()
}
setTimeout(function () {
var modelValue = props2.modelValue,
multiple = props2.multiple
var currOption = findOption(
multiple && modelValue ? modelValue[0] : modelValue
)
reactData.visiblePanel = true
if (currOption) {
setCurrentOption(currOption)
scrollToOption(currOption)
}
handleFocusSearch()
}, 10)
updateZindex()
updatePlacement()
}
}
var hideOptionPanel = function () {
reactData.searchValue = ''
reactData.searchLoading = false
reactData.visiblePanel = false
hidePanelTimeout = window.setTimeout(function () {
reactData.animatVisible = false
}, 350)
}
var changeEvent = function (evnt, selectValue) {
if (selectValue !== props2.modelValue) {
emit2('update:modelValue', selectValue)
selectMethods.dispatchEvent('change', { value: selectValue }, evnt)
if ($xeform && $xeformiteminfo) {
$xeform.triggerItemEvent(
evnt,
$xeformiteminfo.itemConfig.field,
selectValue
)
}
}
}
var clearValueEvent = function (evnt, selectValue) {
reactData.remoteValueList = []
changeEvent(evnt, selectValue)
selectMethods.dispatchEvent('clear', { value: selectValue }, evnt)
}
var clearEvent = function (params2, evnt) {
clearValueEvent(evnt, null)
hideOptionPanel()
}
var changeOptionEvent = function (evnt, selectValue, option2) {
var modelValue = props2.modelValue,
multiple = props2.multiple
var remoteValueList = reactData.remoteValueList
if (multiple) {
var multipleValue = void 0
if (modelValue) {
if (modelValue.indexOf(selectValue) === -1) {
multipleValue = modelValue.concat([selectValue])
} else {
multipleValue = modelValue.filter(function (val2) {
return val2 !== selectValue
})
}
} else {
multipleValue = [selectValue]
}
var remoteItem = remoteValueList.find(function (item2) {
return item2.key === selectValue
})
if (remoteItem) {
remoteItem.result = option2
} else {
remoteValueList.push({ key: selectValue, result: option2 })
}
changeEvent(evnt, multipleValue)
} else {
reactData.remoteValueList = [{ key: selectValue, result: option2 }]
changeEvent(evnt, selectValue)
hideOptionPanel()
}
}
var handleGlobalMousewheelEvent = function (evnt) {
var disabled = props2.disabled
var visiblePanel = reactData.visiblePanel
if (!disabled) {
if (visiblePanel) {
var panelElem = refOptionPanel.value
if (getEventTargetNode(evnt, panelElem).flag) {
updatePlacement()
} else {
hideOptionPanel()
}
}
}
}
var handleGlobalMousedownEvent = function (evnt) {
var disabled = props2.disabled
var visiblePanel = reactData.visiblePanel
if (!disabled) {
var el2 = refElem.value
var panelElem = refOptionPanel.value
reactData.isActivated =
getEventTargetNode(evnt, el2).flag ||
getEventTargetNode(evnt, panelElem).flag
if (visiblePanel && !reactData.isActivated) {
hideOptionPanel()
}
}
}
var findOffsetOption = function (optionValue, isUpArrow) {
var visibleOptionList = reactData.visibleOptionList,
visibleGroupList = reactData.visibleGroupList
var isGroup2 = computeIsGroup.value
var valueField = computeValueField.value
var groupOptionsField = computeGroupOptionsField.value
var firstOption
var prevOption
var nextOption
var currOption
if (isGroup2) {
for (var gIndex = 0; gIndex < visibleGroupList.length; gIndex++) {
var group = visibleGroupList[gIndex]
var groupOptionList = group[groupOptionsField]
var isGroupDisabled = group.disabled
if (groupOptionList) {
for (var index2 = 0; index2 < groupOptionList.length; index2++) {
var option2 = groupOptionList[index2]
var isVisible2 = isOptionVisible(option2)
var isDisabled = isGroupDisabled || option2.disabled
if (!firstOption && !isDisabled) {
firstOption = option2
}
if (currOption) {
if (isVisible2 && !isDisabled) {
nextOption = option2
if (!isUpArrow) {
return { offsetOption: nextOption }
}
}
}
if (optionValue === option2[valueField]) {
currOption = option2
if (isUpArrow) {
return { offsetOption: prevOption }
}
} else {
if (isVisible2 && !isDisabled) {
prevOption = option2
}
}
}
}
}
} else {
for (var index2 = 0; index2 < visibleOptionList.length; index2++) {
var option2 = visibleOptionList[index2]
var isDisabled = option2.disabled
if (!firstOption && !isDisabled) {
firstOption = option2
}
if (currOption) {
if (!isDisabled) {
nextOption = option2
if (!isUpArrow) {
return { offsetOption: nextOption }
}
}
}
if (optionValue === option2[valueField]) {
currOption = option2
if (isUpArrow) {
return { offsetOption: prevOption }
}
} else {
if (!isDisabled) {
prevOption = option2
}
}
}
}
return { firstOption }
}
var handleGlobalKeydownEvent = function (evnt) {
var clearable = props2.clearable,
disabled = props2.disabled
var visiblePanel = reactData.visiblePanel,
currentValue = reactData.currentValue,
currentOption = reactData.currentOption
if (!disabled) {
var isTab = hasEventKey(evnt, EVENT_KEYS.TAB)
var isEnter = hasEventKey(evnt, EVENT_KEYS.ENTER)
var isEsc = hasEventKey(evnt, EVENT_KEYS.ESCAPE)
var isUpArrow = hasEventKey(evnt, EVENT_KEYS.ARROW_UP)
var isDwArrow = hasEventKey(evnt, EVENT_KEYS.ARROW_DOWN)
var isDel = hasEventKey(evnt, EVENT_KEYS.DELETE)
var isSpacebar = hasEventKey(evnt, EVENT_KEYS.SPACEBAR)
if (isTab) {
reactData.isActivated = false
}
if (visiblePanel) {
if (isEsc || isTab) {
hideOptionPanel()
} else if (isEnter) {
evnt.preventDefault()
evnt.stopPropagation()
changeOptionEvent(evnt, currentValue, currentOption)
} else if (isUpArrow || isDwArrow) {
evnt.preventDefault()
var _a2 = findOffsetOption(currentValue, isUpArrow),
firstOption = _a2.firstOption,
offsetOption = _a2.offsetOption
if (!offsetOption && !findOption(currentValue)) {
offsetOption = firstOption
}
setCurrentOption(offsetOption)
scrollToOption(offsetOption, isDwArrow)
} else if (isSpacebar) {
evnt.preventDefault()
}
} else if (
(isUpArrow || isDwArrow || isEnter || isSpacebar) &&
reactData.isActivated
) {
evnt.preventDefault()
showOptionPanel()
}
if (reactData.isActivated) {
if (isDel && clearable) {
clearValueEvent(evnt, null)
}
}
}
}
var handleGlobalBlurEvent = function () {
hideOptionPanel()
}
var handleFocusSearch = function () {
if (props2.filterable) {
nextTick(function () {
var inpSearch = refInpSearch.value
if (inpSearch) {
inpSearch.focus()
}
})
}
}
var focusEvent = function (evnt) {
if (!props2.disabled) {
reactData.isActivated = true
}
selectMethods.dispatchEvent('focus', {}, evnt)
}
var blurEvent = function (evnt) {
reactData.isActivated = false
selectMethods.dispatchEvent('blur', {}, evnt)
}
var modelSearchEvent = function (value2) {
reactData.searchValue = value2
}
var focusSearchEvent = function () {
reactData.isActivated = true
}
var keydownSearchEvent = function (params2) {
var $event = params2.$event
var isEnter = hasEventKey($event, EVENT_KEYS.ENTER)
if (isEnter) {
$event.preventDefault()
$event.stopPropagation()
}
}
var triggerSearchEvent = xeUtils.debounce(
function () {
var remote = props2.remote,
remoteMethod = props2.remoteMethod
var searchValue = reactData.searchValue
if (remote && remoteMethod) {
reactData.searchLoading = true
Promise.resolve(remoteMethod({ searchValue }))
.then(function () {
return nextTick()
})
.catch(function () {
return nextTick()
})
.finally(function () {
reactData.searchLoading = false
refreshOption()
})
} else {
refreshOption()
}
},
350,
{ trailing: true }
)
var togglePanelEvent = function (params2) {
var $event = params2.$event
$event.preventDefault()
if (reactData.visiblePanel) {
hideOptionPanel()
} else {
showOptionPanel()
}
}
var checkOptionDisabled = function (isSelected, option2, group) {
if (option2.disabled) {
return true
}
if (group && group.disabled) {
return true
}
var isMaximize = computeIsMaximize.value
if (isMaximize && !isSelected) {
return true
}
return false
}
var renderOption = function (list2, group) {
var optionKey = props2.optionKey,
modelValue = props2.modelValue,
multiple = props2.multiple
var currentValue = reactData.currentValue
var optionOpts = computeOptionOpts.value
var labelField = computeLabelField.value
var valueField = computeValueField.value
var isGroup2 = computeIsGroup.value
var useKey = optionOpts.useKey
return list2.map(function (option2, cIndex) {
var slots2 = option2.slots,
className = option2.className
var optionValue = option2[valueField]
var isSelected = multiple
? modelValue && modelValue.indexOf(optionValue) > -1
: modelValue === optionValue
var isVisible2 = !isGroup2 || isOptionVisible(option2)
var isDisabled = checkOptionDisabled(isSelected, option2, group)
var optid = getOptid(option2)
var defaultSlot = slots2 ? slots2.default : null
return isVisible2
? h$4(
'div',
{
key: useKey || optionKey ? optid : cIndex,
class: [
'vxe-select-option',
className
? xeUtils.isFunction(className)
? className({ option: option2, $select: $xeselect })
: className
: '',
{
'is--disabled': isDisabled,
'is--selected': isSelected,
'is--hover': currentValue === optionValue,
},
],
optid,
onMousedown: function (evnt) {
var isLeftBtn = evnt.button === 0
if (isLeftBtn) {
evnt.stopPropagation()
}
},
onClick: function (evnt) {
if (!isDisabled) {
changeOptionEvent(evnt, optionValue, option2)
}
},
onMouseenter: function () {
if (!isDisabled) {
setCurrentOption(option2)
}
},
},
defaultSlot
? callSlot(defaultSlot, { option: option2, $select: $xeselect })
: formatText(getFuncText(option2[labelField]))
)
: null
})
}
var renderOptgroup = function () {
var optionKey = props2.optionKey
var visibleGroupList = reactData.visibleGroupList
var optionOpts = computeOptionOpts.value
var groupLabelField = computeGroupLabelField.value
var groupOptionsField = computeGroupOptionsField.value
var useKey = optionOpts.useKey
return visibleGroupList.map(function (group, gIndex) {
var slots2 = group.slots,
className = group.className
var optid = getOptid(group)
var isGroupDisabled = group.disabled
var defaultSlot = slots2 ? slots2.default : null
return h$4(
'div',
{
key: useKey || optionKey ? optid : gIndex,
class: [
'vxe-optgroup',
className
? xeUtils.isFunction(className)
? className({ option: group, $select: $xeselect })
: className
: '',
{
'is--disabled': isGroupDisabled,
},
],
optid,
},
[
h$4(
'div',
{
class: 'vxe-optgroup--title',
},
defaultSlot
? callSlot(defaultSlot, { option: group, $select: $xeselect })
: getFuncText(group[groupLabelField])
),
h$4(
'div',
{
class: 'vxe-optgroup--wrapper',
},
renderOption(group[groupOptionsField] || [], group)
),
]
)
})
}
var renderOpts = function () {
var visibleGroupList = reactData.visibleGroupList,
visibleOptionList = reactData.visibleOptionList,
searchLoading = reactData.searchLoading
var isGroup2 = computeIsGroup.value
if (searchLoading) {
return [
h$4(
'div',
{
class: 'vxe-select--search-loading',
},
[
h$4('i', {
class: [
'vxe-select--search-icon',
GlobalConfig.icon.SELECT_LOADED,
],
}),
h$4(
'span',
{
class: 'vxe-select--search-text',
},
GlobalConfig.i18n('vxe.select.loadingText')
),
]
),
]
}
if (isGroup2) {
if (visibleGroupList.length) {
return renderOptgroup()
}
} else {
if (visibleOptionList.length) {
return renderOption(visibleOptionList)
}
}
return [
h$4(
'div',
{
class: 'vxe-select--empty-placeholder',
},
props2.emptyText || GlobalConfig.i18n('vxe.select.emptyText')
),
]
}
selectMethods = {
dispatchEvent: function (type4, params2, evnt) {
emit2(
type4,
Object.assign({ $select: $xeselect, $event: evnt }, params2)
)
},
isPanelVisible: function () {
return reactData.visiblePanel
},
togglePanel: function () {
if (reactData.visiblePanel) {
hideOptionPanel()
} else {
showOptionPanel()
}
return nextTick()
},
hidePanel: function () {
if (reactData.visiblePanel) {
hideOptionPanel()
}
return nextTick()
},
showPanel: function () {
if (!reactData.visiblePanel) {
showOptionPanel()
}
return nextTick()
},
refreshOption,
focus: function () {
var $input = refInput.value
reactData.isActivated = true
$input.blur()
return nextTick()
},
blur: function () {
var $input = refInput.value
$input.blur()
reactData.isActivated = false
return nextTick()
},
}
Object.assign($xeselect, selectMethods)
watch$1(
function () {
return reactData.staticOptions
},
function (value2) {
if (
value2.some(function (item2) {
return item2.options && item2.options.length
})
) {
reactData.fullOptionList = []
reactData.fullGroupList = value2
} else {
reactData.fullGroupList = []
reactData.fullOptionList = value2 || []
}
cacheItemMap()
}
)
watch$1(
function () {
return props2.options
},
function (value2) {
reactData.fullGroupList = []
reactData.fullOptionList = value2 || []
cacheItemMap()
}
)
watch$1(
function () {
return props2.optionGroups
},
function (value2) {
reactData.fullOptionList = []
reactData.fullGroupList = value2 || []
cacheItemMap()
}
)
onMounted(function () {
nextTick(function () {
var options2 = props2.options,
optionGroups = props2.optionGroups
if (optionGroups) {
reactData.fullGroupList = optionGroups
} else if (options2) {
reactData.fullOptionList = options2
}
cacheItemMap()
})
GlobalEvent.on($xeselect, 'mousewheel', handleGlobalMousewheelEvent)
GlobalEvent.on($xeselect, 'mousedown', handleGlobalMousedownEvent)
GlobalEvent.on($xeselect, 'keydown', handleGlobalKeydownEvent)
GlobalEvent.on($xeselect, 'blur', handleGlobalBlurEvent)
})
onUnmounted(function () {
GlobalEvent.off($xeselect, 'mousewheel')
GlobalEvent.off($xeselect, 'mousedown')
GlobalEvent.off($xeselect, 'keydown')
GlobalEvent.off($xeselect, 'blur')
})
var renderVN = function () {
var _a2, _b2
var className = props2.className,
popupClassName = props2.popupClassName,
transfer = props2.transfer,
disabled = props2.disabled,
loading2 = props2.loading,
filterable = props2.filterable
var inited = reactData.inited,
isActivated = reactData.isActivated,
visiblePanel = reactData.visiblePanel
var vSize = computeSize.value
var selectLabel = computeSelectLabel.value
var prefixSlot = slots.prefix
return h$4(
'div',
{
ref: refElem,
class: [
'vxe-select',
className
? xeUtils.isFunction(className)
? className({ $select: $xeselect })
: className
: '',
((_a2 = {}),
(_a2['size--'.concat(vSize)] = vSize),
(_a2['is--visivle'] = visiblePanel),
(_a2['is--disabled'] = disabled),
(_a2['is--filter'] = filterable),
(_a2['is--loading'] = loading2),
(_a2['is--active'] = isActivated),
_a2),
],
},
[
h$4(
'div',
{
class: 'vxe-select-slots',
ref: 'hideOption',
},
slots.default ? slots.default({}) : []
),
h$4(
VxeInputConstructor,
{
ref: refInput,
clearable: props2.clearable,
placeholder: props2.placeholder,
readonly: true,
disabled,
type: 'text',
prefixIcon: props2.prefixIcon,
suffixIcon: loading2
? GlobalConfig.icon.SELECT_LOADED
: visiblePanel
? GlobalConfig.icon.SELECT_OPEN
: GlobalConfig.icon.SELECT_CLOSE,
modelValue: selectLabel,
onClear: clearEvent,
onClick: togglePanelEvent,
onFocus: focusEvent,
onBlur: blurEvent,
onSuffixClick: togglePanelEvent,
},
prefixSlot
? {
prefix: function () {
return prefixSlot({})
},
}
: {}
),
h$4(
Teleport,
{
to: 'body',
disabled: transfer ? !inited : true,
},
[
h$4(
'div',
{
ref: refOptionPanel,
class: [
'vxe-table--ignore-clear vxe-select--panel',
popupClassName
? xeUtils.isFunction(popupClassName)
? popupClassName({ $select: $xeselect })
: popupClassName
: '',
((_b2 = {}),
(_b2['size--'.concat(vSize)] = vSize),
(_b2['is--transfer'] = transfer),
(_b2['animat--leave'] =
!loading2 && reactData.animatVisible),
(_b2['animat--enter'] = !loading2 && visiblePanel),
_b2),
],
placement: reactData.panelPlacement,
style: reactData.panelStyle,
},
inited
? [
filterable
? h$4(
'div',
{
class: 'vxe-select-filter--wrapper',
},
[
h$4(VxeInputConstructor, {
ref: refInpSearch,
class: 'vxe-select-filter--input',
modelValue: reactData.searchValue,
clearable: true,
placeholder:
GlobalConfig.i18n('vxe.select.search'),
prefixIcon: GlobalConfig.icon.INPUT_SEARCH,
'onUpdate:modelValue': modelSearchEvent,
onFocus: focusSearchEvent,
onKeydown: keydownSearchEvent,
onChange: triggerSearchEvent,
onSearch: triggerSearchEvent,
}),
]
)
: createCommentVNode(),
h$4(
'div',
{
ref: refOptionWrapper,
class: 'vxe-select-option--wrapper',
},
renderOpts()
),
]
: []
),
]
),
]
)
}
$xeselect.renderVN = renderVN
provide('$xeselect', $xeselect)
return $xeselect
},
render: function () {
return this.renderVN()
},
})
var ExportPanelComponent = defineComponent({
name: 'VxeExportPanel',
props: {
defaultOptions: Object,
storeData: Object,
},
setup: function (props2) {
var $xetable = inject('$xetable', {})
var _a2 = $xetable.getComputeMaps(),
computeExportOpts = _a2.computeExportOpts,
computePrintOpts = _a2.computePrintOpts
var reactData = reactive({
isAll: false,
isIndeterminate: false,
loading: false,
})
var xButtonConfirm = ref()
var xInputFilename = ref()
var xInputSheetname = ref()
var computeCheckedAll = computed(function () {
var storeData2 = props2.storeData
return storeData2.columns.every(function (column) {
return column.checked
})
})
var computeShowSheet = computed(function () {
var defaultOptions2 = props2.defaultOptions
return ['html', 'xml', 'xlsx', 'pdf'].indexOf(defaultOptions2.type) > -1
})
var computeSupportMerge = computed(function () {
var storeData2 = props2.storeData,
defaultOptions2 = props2.defaultOptions
return (
!defaultOptions2.original &&
defaultOptions2.mode === 'current' &&
(storeData2.isPrint ||
['html', 'xlsx'].indexOf(defaultOptions2.type) > -1)
)
})
var computeSupportStyle = computed(function () {
var defaultOptions2 = props2.defaultOptions
return (
!defaultOptions2.original && ['xlsx'].indexOf(defaultOptions2.type) > -1
)
})
var handleOptionCheck = function (column) {
var storeData2 = props2.storeData
var matchObj = xeUtils.findTree(storeData2.columns, function (item2) {
return item2 === column
})
if (matchObj && matchObj.parent) {
var parent_1 = matchObj.parent
if (parent_1.children && parent_1.children.length) {
parent_1.checked = parent_1.children.every(function (column2) {
return column2.checked
})
parent_1.halfChecked =
!parent_1.checked &&
parent_1.children.some(function (column2) {
return column2.checked || column2.halfChecked
})
handleOptionCheck(parent_1)
}
}
}
var checkStatus = function () {
var storeData2 = props2.storeData
var columns = storeData2.columns
reactData.isAll = columns.every(function (column) {
return column.disabled || column.checked
})
reactData.isIndeterminate =
!reactData.isAll &&
columns.some(function (column) {
return !column.disabled && (column.checked || column.halfChecked)
})
}
var changeOption = function (column) {
var isChecked = !column.checked
xeUtils.eachTree([column], function (item2) {
item2.checked = isChecked
item2.halfChecked = false
})
handleOptionCheck(column)
checkStatus()
}
var allColumnEvent = function () {
var storeData2 = props2.storeData
var isAll = !reactData.isAll
xeUtils.eachTree(storeData2.columns, function (column) {
if (!column.disabled) {
column.checked = isAll
column.halfChecked = false
}
})
reactData.isAll = isAll
checkStatus()
}
var showEvent = function () {
nextTick(function () {
var filenameInp = xInputFilename.value
var sheetnameInp = xInputSheetname.value
var confirmBtn = xButtonConfirm.value
var targetElem = filenameInp || sheetnameInp || confirmBtn
if (targetElem) {
targetElem.focus()
}
})
checkStatus()
}
var getExportOption = function () {
var storeData2 = props2.storeData,
defaultOptions2 = props2.defaultOptions
var hasMerge = storeData2.hasMerge,
columns = storeData2.columns
var checkedAll = computeCheckedAll.value
var supportMerge = computeSupportMerge.value
var expColumns = xeUtils.searchTree(
columns,
function (column) {
return column.checked
},
{ children: 'children', mapChildren: 'childNodes', original: true }
)
return Object.assign({}, defaultOptions2, {
columns: expColumns,
isMerge:
hasMerge && supportMerge && checkedAll
? defaultOptions2.isMerge
: false,
})
}
var printEvent = function () {
var storeData2 = props2.storeData
var printOpts = computePrintOpts.value
storeData2.visible = false
$xetable.print(Object.assign({}, printOpts, getExportOption()))
}
var exportEvent = function () {
var storeData2 = props2.storeData
var exportOpts = computeExportOpts.value
reactData.loading = true
$xetable
.exportData(Object.assign({}, exportOpts, getExportOption()))
.then(function () {
reactData.loading = false
storeData2.visible = false
})
.catch(function () {
reactData.loading = false
})
}
var cancelEvent = function () {
var storeData2 = props2.storeData
storeData2.visible = false
}
var confirmEvent = function () {
var storeData2 = props2.storeData
if (storeData2.isPrint) {
printEvent()
} else {
exportEvent()
}
}
var renderVN = function () {
var defaultOptions2 = props2.defaultOptions,
storeData2 = props2.storeData
var isAllChecked = reactData.isAll,
isAllIndeterminate = reactData.isIndeterminate
var hasTree = storeData2.hasTree,
hasMerge = storeData2.hasMerge,
isPrint2 = storeData2.isPrint,
hasColgroup = storeData2.hasColgroup
var isHeader = defaultOptions2.isHeader
var cols = []
var checkedAll = computeCheckedAll.value
var showSheet = computeShowSheet.value
var supportMerge = computeSupportMerge.value
var supportStyle = computeSupportStyle.value
xeUtils.eachTree(storeData2.columns, function (column) {
var colTitle = formatText(column.getTitle(), 1)
var isColGroup = column.children && column.children.length
var isChecked = column.checked
var indeterminate = column.halfChecked
cols.push(
h$4(
'li',
{
class: [
'vxe-export--panel-column-option',
'level--'.concat(column.level),
{
'is--group': isColGroup,
'is--checked': isChecked,
'is--indeterminate': indeterminate,
'is--disabled': column.disabled,
},
],
title: colTitle,
onClick: function () {
if (!column.disabled) {
changeOption(column)
}
},
},
[
h$4('span', {
class: [
'vxe-checkbox--icon',
indeterminate
? GlobalConfig.icon.TABLE_CHECKBOX_INDETERMINATE
: isChecked
? GlobalConfig.icon.TABLE_CHECKBOX_CHECKED
: GlobalConfig.icon.TABLE_CHECKBOX_UNCHECKED,
],
}),
h$4(
'span',
{
class: 'vxe-checkbox--label',
},
colTitle
),
]
)
)
})
return h$4(
VxeModalComponent,
{
modelValue: storeData2.visible,
title: GlobalConfig.i18n(
isPrint2 ? 'vxe.export.printTitle' : 'vxe.export.expTitle'
),
width: 660,
mask: true,
lockView: true,
showFooter: false,
escClosable: true,
maskClosable: true,
loading: reactData.loading,
'onUpdate:modelValue': function (value2) {
storeData2.visible = value2
},
onShow: showEvent,
},
{
default: function () {
return h$4(
'div',
{
class: 'vxe-export--panel',
},
[
h$4(
'table',
{
cellspacing: 0,
cellpadding: 0,
border: 0,
},
[
h$4('tbody', [
[
isPrint2
? createCommentVNode()
: h$4('tr', [
h$4(
'td',
GlobalConfig.i18n('vxe.export.expName')
),
h$4('td', [
h$4(VxeInputConstructor, {
ref: xInputFilename,
modelValue: defaultOptions2.filename,
type: 'text',
clearable: true,
placeholder: GlobalConfig.i18n(
'vxe.export.expNamePlaceholder'
),
'onUpdate:modelValue': function (value2) {
defaultOptions2.filename = value2
},
}),
]),
]),
isPrint2
? createCommentVNode()
: h$4('tr', [
h$4(
'td',
GlobalConfig.i18n('vxe.export.expType')
),
h$4('td', [
h$4(VxeSelectComponent, {
modelValue: defaultOptions2.type,
options: storeData2.typeList.map(function (
item2
) {
return {
value: item2.value,
label: GlobalConfig.i18n(item2.label),
}
}),
'onUpdate:modelValue': function (value2) {
defaultOptions2.type = value2
},
}),
]),
]),
isPrint2 || showSheet
? h$4('tr', [
h$4(
'td',
GlobalConfig.i18n('vxe.export.expSheetName')
),
h$4('td', [
h$4(VxeInputConstructor, {
ref: xInputSheetname,
modelValue: defaultOptions2.sheetName,
type: 'text',
clearable: true,
placeholder: GlobalConfig.i18n(
'vxe.export.expSheetNamePlaceholder'
),
'onUpdate:modelValue': function (value2) {
defaultOptions2.sheetName = value2
},
}),
]),
])
: createCommentVNode(),
h$4('tr', [
h$4('td', GlobalConfig.i18n('vxe.export.expMode')),
h$4('td', [
h$4(VxeSelectComponent, {
modelValue: defaultOptions2.mode,
options: storeData2.modeList.map(function (
item2
) {
return {
value: item2.value,
label: GlobalConfig.i18n(item2.label),
}
}),
'onUpdate:modelValue': function (value2) {
defaultOptions2.mode = value2
},
}),
]),
]),
h$4('tr', [
h$4('td', [
GlobalConfig.i18n('vxe.export.expColumn'),
]),
h$4('td', [
h$4(
'div',
{
class: 'vxe-export--panel-column',
},
[
h$4(
'ul',
{
class: 'vxe-export--panel-column-header',
},
[
h$4(
'li',
{
class: [
'vxe-export--panel-column-option',
{
'is--checked': isAllChecked,
'is--indeterminate':
isAllIndeterminate,
},
],
title:
GlobalConfig.i18n(
'vxe.table.allTitle'
),
onClick: allColumnEvent,
},
[
h$4('span', {
class: [
'vxe-checkbox--icon',
isAllIndeterminate
? GlobalConfig.icon
.TABLE_CHECKBOX_INDETERMINATE
: isAllChecked
? GlobalConfig.icon
.TABLE_CHECKBOX_CHECKED
: GlobalConfig.icon
.TABLE_CHECKBOX_UNCHECKED,
],
}),
h$4(
'span',
{
class: 'vxe-checkbox--label',
},
GlobalConfig.i18n(
'vxe.export.expCurrentColumn'
)
),
]
),
]
),
h$4(
'ul',
{
class: 'vxe-export--panel-column-body',
},
cols
),
]
),
]),
]),
h$4('tr', [
h$4('td', GlobalConfig.i18n('vxe.export.expOpts')),
h$4('td', [
h$4(
'div',
{
class: 'vxe-export--panel-option-row',
},
[
h$4(VxeCheckboxComponent, {
modelValue: defaultOptions2.isHeader,
title: GlobalConfig.i18n(
'vxe.export.expHeaderTitle'
),
content: GlobalConfig.i18n(
'vxe.export.expOptHeader'
),
'onUpdate:modelValue': function (value2) {
defaultOptions2.isHeader = value2
},
}),
h$4(VxeCheckboxComponent, {
modelValue: defaultOptions2.isFooter,
disabled: !storeData2.hasFooter,
title: GlobalConfig.i18n(
'vxe.export.expFooterTitle'
),
content: GlobalConfig.i18n(
'vxe.export.expOptFooter'
),
'onUpdate:modelValue': function (value2) {
defaultOptions2.isFooter = value2
},
}),
h$4(VxeCheckboxComponent, {
modelValue: defaultOptions2.original,
title: GlobalConfig.i18n(
'vxe.export.expOriginalTitle'
),
content: GlobalConfig.i18n(
'vxe.export.expOptOriginal'
),
'onUpdate:modelValue': function (value2) {
defaultOptions2.original = value2
},
}),
]
),
h$4(
'div',
{
class: 'vxe-export--panel-option-row',
},
[
h$4(VxeCheckboxComponent, {
modelValue:
isHeader && hasColgroup && supportMerge
? defaultOptions2.isColgroup
: false,
title: GlobalConfig.i18n(
'vxe.export.expColgroupTitle'
),
disabled:
!isHeader || !hasColgroup || !supportMerge,
content: GlobalConfig.i18n(
'vxe.export.expOptColgroup'
),
'onUpdate:modelValue': function (value2) {
defaultOptions2.isColgroup = value2
},
}),
h$4(VxeCheckboxComponent, {
modelValue:
hasMerge && supportMerge && checkedAll
? defaultOptions2.isMerge
: false,
title: GlobalConfig.i18n(
'vxe.export.expMergeTitle'
),
disabled:
!hasMerge || !supportMerge || !checkedAll,
content: GlobalConfig.i18n(
'vxe.export.expOptMerge'
),
'onUpdate:modelValue': function (value2) {
defaultOptions2.isMerge = value2
},
}),
isPrint2
? createCommentVNode()
: h$4(VxeCheckboxComponent, {
modelValue: supportStyle
? defaultOptions2.useStyle
: false,
disabled: !supportStyle,
title: GlobalConfig.i18n(
'vxe.export.expUseStyleTitle'
),
content: GlobalConfig.i18n(
'vxe.export.expOptUseStyle'
),
'onUpdate:modelValue': function (value2) {
defaultOptions2.useStyle = value2
},
}),
h$4(VxeCheckboxComponent, {
modelValue: hasTree
? defaultOptions2.isAllExpand
: false,
disabled: !hasTree,
title: GlobalConfig.i18n(
'vxe.export.expAllExpandTitle'
),
content: GlobalConfig.i18n(
'vxe.export.expOptAllExpand'
),
'onUpdate:modelValue': function (value2) {
defaultOptions2.isAllExpand = value2
},
}),
]
),
]),
]),
],
]),
]
),
h$4(
'div',
{
class: 'vxe-export--panel-btns',
},
[
h$4(VxeButtonComponent, {
content: GlobalConfig.i18n('vxe.export.expCancel'),
onClick: cancelEvent,
}),
h$4(VxeButtonComponent, {
ref: xButtonConfirm,
status: 'primary',
content: GlobalConfig.i18n(
isPrint2
? 'vxe.export.expPrint'
: 'vxe.export.expConfirm'
),
onClick: confirmEvent,
}),
]
),
]
)
},
}
)
}
return renderVN
},
})
var VxeRadioGroupComponent = defineComponent({
name: 'VxeRadioGroup',
props: {
modelValue: [String, Number, Boolean],
disabled: Boolean,
strict: {
type: Boolean,
default: function () {
return GlobalConfig.radio.strict
},
},
size: {
type: String,
default: function () {
return GlobalConfig.radio.size || GlobalConfig.size
},
},
},
emits: ['update:modelValue', 'change'],
setup: function (props2, context2) {
var slots = context2.slots,
emit2 = context2.emit
var $xeform = inject('$xeform', null)
var $xeformiteminfo = inject('$xeformiteminfo', null)
var xID = xeUtils.uniqueId()
var $xeradiogroup = {
xID,
props: props2,
context: context2,
name: xeUtils.uniqueId('xegroup_'),
}
var radioGroupMethods = {}
useSize(props2)
var radioGroupPrivateMethods = {
handleChecked: function (params2, evnt) {
emit2('update:modelValue', params2.label)
radioGroupMethods.dispatchEvent('change', params2)
if ($xeform && $xeformiteminfo) {
$xeform.triggerItemEvent(
evnt,
$xeformiteminfo.itemConfig.field,
params2.label
)
}
},
}
radioGroupMethods = {
dispatchEvent: function (type4, params2, evnt) {
emit2(
type4,
Object.assign({ $radioGroup: $xeradiogroup, $event: evnt }, params2)
)
},
}
var renderVN = function () {
return h$4(
'div',
{
class: 'vxe-radio-group',
},
slots.default ? slots.default({}) : []
)
}
Object.assign($xeradiogroup, radioGroupPrivateMethods, {
renderVN,
dispatchEvent,
})
provide('$xeradiogroup', $xeradiogroup)
return renderVN
},
})
var VxeRadioComponent = defineComponent({
name: 'VxeRadio',
props: {
modelValue: [String, Number, Boolean],
label: { type: [String, Number, Boolean], default: null },
title: [String, Number],
content: [String, Number],
disabled: Boolean,
name: String,
strict: {
type: Boolean,
default: function () {
return GlobalConfig.radio.strict
},
},
size: {
type: String,
default: function () {
return GlobalConfig.radio.size || GlobalConfig.size
},
},
},
emits: ['update:modelValue', 'change'],
setup: function (props2, context2) {
var slots = context2.slots,
emit2 = context2.emit
var $xeform = inject('$xeform', null)
var $xeformiteminfo = inject('$xeformiteminfo', null)
var xID = xeUtils.uniqueId()
var $xeradio = {
xID,
props: props2,
context: context2,
}
var computeSize = useSize(props2)
var $xeradiogroup = inject('$xeradiogroup', null)
var radioMethods = {}
var computeDisabled = computed(function () {
return props2.disabled || ($xeradiogroup && $xeradiogroup.props.disabled)
})
var computeName = computed(function () {
return $xeradiogroup ? $xeradiogroup.name : props2.name
})
var computeStrict = computed(function () {
return $xeradiogroup ? $xeradiogroup.props.strict : props2.strict
})
var computeChecked = computed(function () {
var modelValue = props2.modelValue,
label = props2.label
return $xeradiogroup
? $xeradiogroup.props.modelValue === label
: modelValue === label
})
var handleValue2 = function (label, evnt) {
if ($xeradiogroup) {
$xeradiogroup.handleChecked({ label }, evnt)
} else {
emit2('update:modelValue', label)
radioMethods.dispatchEvent('change', { label }, evnt)
if ($xeform && $xeformiteminfo) {
$xeform.triggerItemEvent(
evnt,
$xeformiteminfo.itemConfig.field,
label
)
}
}
}
var changeEvent = function (evnt) {
var isDisabled = computeDisabled.value
if (!isDisabled) {
handleValue2(props2.label, evnt)
}
}
var clickEvent = function (evnt) {
var isDisabled = computeDisabled.value
var isStrict = computeStrict.value
if (!isDisabled && !isStrict) {
if (
props2.label ===
($xeradiogroup ? $xeradiogroup.props.modelValue : props2.modelValue)
) {
handleValue2(null, evnt)
}
}
}
radioMethods = {
dispatchEvent: function (type4, params2, evnt) {
emit2(type4, Object.assign({ $radio: $xeradio, $event: evnt }, params2))
},
}
Object.assign($xeradio, radioMethods)
var renderVN = function () {
var _a2
var vSize = computeSize.value
var isDisabled = computeDisabled.value
var name2 = computeName.value
var isChecked = computeChecked.value
return h$4(
'label',
{
class: [
'vxe-radio',
((_a2 = {}),
(_a2['size--'.concat(vSize)] = vSize),
(_a2['is--checked'] = isChecked),
(_a2['is--disabled'] = isDisabled),
_a2),
],
title: props2.title,
},
[
h$4('input', {
class: 'vxe-radio--input',
type: 'radio',
name: name2,
checked: isChecked,
disabled: isDisabled,
onChange: changeEvent,
onClick: clickEvent,
}),
h$4('span', {
class: [
'vxe-radio--icon',
isChecked ? 'vxe-icon-radio-checked' : 'vxe-icon-radio-unchecked',
],
}),
h$4(
'span',
{
class: 'vxe-radio--label',
},
slots.default ? slots.default({}) : getFuncText(props2.content)
),
]
)
}
$xeradio.renderVN = renderVN
return $xeradio
},
render: function () {
return this.renderVN()
},
})
var ImportPanelComponent = defineComponent({
name: 'VxeImportPanel',
props: {
defaultOptions: Object,
storeData: Object,
},
setup: function (props2) {
var $xetable = inject('$xetable', {})
var computeImportOpts = $xetable.getComputeMaps().computeImportOpts
var reactData = reactive({
loading: false,
})
var refFileBtn = ref()
var computeSelectName = computed(function () {
var storeData2 = props2.storeData
return ''.concat(storeData2.filename, '.').concat(storeData2.type)
})
var computeHasFile = computed(function () {
var storeData2 = props2.storeData
return storeData2.file && storeData2.type
})
var computeParseTypeLabel = computed(function () {
var storeData2 = props2.storeData
var type4 = storeData2.type,
typeList = storeData2.typeList
if (type4) {
var selectItem = xeUtils.find(typeList, function (item2) {
return type4 === item2.value
})
return selectItem ? GlobalConfig.i18n(selectItem.label) : '*.*'
}
return '*.'.concat(
typeList
.map(function (item2) {
return item2.value
})
.join(', *.')
)
})
var clearFileEvent = function () {
var storeData2 = props2.storeData
Object.assign(storeData2, {
filename: '',
sheetName: '',
type: '',
})
}
var selectFileEvent = function () {
var storeData2 = props2.storeData,
defaultOptions2 = props2.defaultOptions
$xetable
.readFile(defaultOptions2)
.then(function (params2) {
var file2 = params2.file
Object.assign(storeData2, parseFile(file2), { file: file2 })
})
.catch(function (e2) {
return e2
})
}
var showEvent = function () {
nextTick(function () {
var targetElem = refFileBtn.value
if (targetElem) {
targetElem.focus()
}
})
}
var cancelEvent = function () {
var storeData2 = props2.storeData
storeData2.visible = false
}
var importEvent = function () {
var storeData2 = props2.storeData,
defaultOptions2 = props2.defaultOptions
var importOpts = computeImportOpts.value
reactData.loading = true
$xetable
.importByFile(
storeData2.file,
Object.assign({}, importOpts, defaultOptions2)
)
.then(function () {
reactData.loading = false
storeData2.visible = false
})
.catch(function () {
reactData.loading = false
})
}
var renderVN = function () {
var defaultOptions2 = props2.defaultOptions,
storeData2 = props2.storeData
var selectName = computeSelectName.value
var hasFile = computeHasFile.value
var parseTypeLabel = computeParseTypeLabel.value
return h$4(
VxeModalComponent,
{
modelValue: storeData2.visible,
title: GlobalConfig.i18n('vxe.import.impTitle'),
width: 440,
mask: true,
lockView: true,
showFooter: false,
escClosable: true,
maskClosable: true,
loading: reactData.loading,
'onUpdate:modelValue': function (value2) {
storeData2.visible = value2
},
onShow: showEvent,
},
{
default: function () {
return h$4(
'div',
{
class: 'vxe-export--panel',
},
[
h$4(
'table',
{
cellspacing: 0,
cellpadding: 0,
border: 0,
},
[
h$4('tbody', [
h$4('tr', [
h$4('td', GlobalConfig.i18n('vxe.import.impFile')),
h$4('td', [
hasFile
? h$4(
'div',
{
class: 'vxe-import-selected--file',
title: selectName,
},
[
h$4('span', selectName),
h$4('i', {
class: GlobalConfig.icon.INPUT_CLEAR,
onClick: clearFileEvent,
}),
]
)
: h$4(
'button',
{
ref: refFileBtn,
class: 'vxe-import-select--file',
onClick: selectFileEvent,
},
GlobalConfig.i18n('vxe.import.impSelect')
),
]),
]),
h$4('tr', [
h$4('td', GlobalConfig.i18n('vxe.import.impType')),
h$4('td', parseTypeLabel),
]),
h$4('tr', [
h$4('td', GlobalConfig.i18n('vxe.import.impOpts')),
h$4('td', [
h$4(
VxeRadioGroupComponent,
{
modelValue: defaultOptions2.mode,
'onUpdate:modelValue': function (value2) {
defaultOptions2.mode = value2
},
},
{
default: function () {
return storeData2.modeList.map(function (
item2
) {
return h$4(VxeRadioComponent, {
label: item2.value,
content: GlobalConfig.i18n(item2.label),
})
})
},
}
),
]),
]),
]),
]
),
h$4(
'div',
{
class: 'vxe-export--panel-btns',
},
[
h$4(VxeButtonComponent, {
content: GlobalConfig.i18n('vxe.import.impCancel'),
onClick: cancelEvent,
}),
h$4(VxeButtonComponent, {
status: 'primary',
disabled: !hasFile,
content: GlobalConfig.i18n('vxe.import.impConfirm'),
onClick: importEvent,
}),
]
),
]
)
},
}
)
}
return renderVN
},
})
dynamicApp.component(ExportPanelComponent.name, ExportPanelComponent)
dynamicApp.component(ImportPanelComponent.name, ImportPanelComponent)
var __assign$e =
(globalThis && globalThis.__assign) ||
function () {
__assign$e =
Object.assign ||
function (t3) {
for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
s2 = arguments[i2]
for (var p2 in s2)
if (Object.prototype.hasOwnProperty.call(s2, p2)) t3[p2] = s2[p2]
}
return t3
}
return __assign$e.apply(this, arguments)
}
var Rule$1 = (function () {
function Rule2(rule2) {
Object.assign(this, {
$options: rule2,
required: rule2.required,
min: rule2.min,
max: rule2.max,
type: rule2.type,
pattern: rule2.pattern,
validator: rule2.validator,
trigger: rule2.trigger,
maxWidth: rule2.maxWidth,
})
}
Object.defineProperty(Rule2.prototype, 'content', {
get: function () {
return getFuncText(this.$options.content || this.$options.message)
},
enumerable: false,
configurable: true,
})
Object.defineProperty(Rule2.prototype, 'message', {
get: function () {
return this.content
},
enumerable: false,
configurable: true,
})
return Rule2
})()
var tableValidatorMethodKeys = ['fullValidate', 'validate', 'clearValidate']
var validatorHook = {
setupTable: function ($xetable) {
var props2 = $xetable.props,
reactData = $xetable.reactData,
internalData = $xetable.internalData
var refValidTooltip = $xetable.getRefMaps().refValidTooltip
var _a2 = $xetable.getComputeMaps(),
computeValidOpts = _a2.computeValidOpts,
computeTreeOpts = _a2.computeTreeOpts,
computeEditOpts = _a2.computeEditOpts
var validatorMethods = {}
var validatorPrivateMethods = {}
var validRuleErr
var handleValidError = function (params2) {
return new Promise(function (resolve2) {
var validOpts = computeValidOpts.value
if (validOpts.autoPos === false) {
$xetable.dispatchEvent('valid-error', params2, null)
resolve2()
} else {
$xetable
.handleActived(params2, { type: 'valid-error', trigger: 'call' })
.then(function () {
resolve2(validatorPrivateMethods.showValidTooltip(params2))
})
}
})
}
var handleErrMsgMode = function (validErrMaps) {
var validOpts = computeValidOpts.value
if (validOpts.msgMode === 'single') {
var keys3 = Object.keys(validErrMaps)
var resMaps = validErrMaps
if (keys3.length) {
var firstKey = keys3[0]
resMaps[firstKey] = validErrMaps[firstKey]
}
return resMaps
}
return validErrMaps
}
var beginValidate = function (rows, cb, isFull) {
var validRest = {}
var editRules = props2.editRules,
treeConfig = props2.treeConfig
var afterFullData = internalData.afterFullData
var treeOpts = computeTreeOpts.value
var childrenField = treeOpts.children || treeOpts.childrenField
var validOpts = computeValidOpts.value
var vaildDatas
if (rows === true) {
vaildDatas = afterFullData
} else if (rows) {
if (xeUtils.isFunction(rows)) {
cb = rows
} else {
vaildDatas = xeUtils.isArray(rows) ? rows : [rows]
}
}
if (!vaildDatas) {
if ($xetable.getInsertRecords) {
vaildDatas = $xetable
.getInsertRecords()
.concat($xetable.getUpdateRecords())
} else {
vaildDatas = []
}
}
var rowValids = []
internalData._lastCallTime = Date.now()
validRuleErr = false
validatorMethods.clearValidate()
var validErrMaps = {}
if (editRules) {
var columns_1 = $xetable.getColumns()
var handleVaild = function (row) {
if (isFull || !validRuleErr) {
var colVailds_1 = []
columns_1.forEach(function (column) {
if (
(isFull || !validRuleErr) &&
xeUtils.has(editRules, column.property)
) {
colVailds_1.push(
validatorPrivateMethods
.validCellRules('all', row, column)
.catch(function (_a3) {
var rule2 = _a3.rule,
rules2 = _a3.rules
var rest = {
rule: rule2,
rules: rules2,
rowIndex: $xetable.getRowIndex(row),
row,
columnIndex: $xetable.getColumnIndex(column),
column,
field: column.property,
$table: $xetable,
}
if (!validRest[column.property]) {
validRest[column.property] = []
}
validErrMaps[
''
.concat(getRowid($xetable, row), ':')
.concat(column.id)
] = {
column,
row,
rule: rule2,
content: rule2.content,
}
validRest[column.property].push(rest)
if (!isFull) {
validRuleErr = true
return Promise.reject(rest)
}
})
)
}
})
rowValids.push(Promise.all(colVailds_1))
}
}
if (treeConfig) {
xeUtils.eachTree(vaildDatas, handleVaild, { children: childrenField })
} else {
vaildDatas.forEach(handleVaild)
}
return Promise.all(rowValids)
.then(function () {
var ruleProps = Object.keys(validRest)
reactData.validErrorMaps = handleErrMsgMode(validErrMaps)
return nextTick().then(function () {
if (ruleProps.length) {
return Promise.reject(validRest[ruleProps[0]][0])
}
if (cb) {
cb()
}
})
})
.catch(function (firstErrParams) {
return new Promise(function (resolve2, reject2) {
var finish = function () {
nextTick(function () {
if (cb) {
cb(validRest)
resolve2()
} else {
if (GlobalConfig.validToReject === 'obsolete') {
reject2(validRest)
} else {
resolve2(validRest)
}
}
})
}
var posAndFinish = function () {
firstErrParams.cell = $xetable.getCell(
firstErrParams.row,
firstErrParams.column
)
scrollToView(firstErrParams.cell)
handleValidError(firstErrParams).then(finish)
}
var row = firstErrParams.row
var rowIndex = afterFullData.indexOf(row)
var locatRow = rowIndex > 0 ? afterFullData[rowIndex - 1] : row
if (validOpts.autoPos === false) {
finish()
} else {
if (treeConfig) {
$xetable.scrollToTreeRow(locatRow).then(posAndFinish)
} else {
$xetable.scrollToRow(locatRow).then(posAndFinish)
}
}
})
})
} else {
reactData.validErrorMaps = {}
}
return nextTick().then(function () {
if (cb) {
cb()
}
})
}
validatorMethods = {
fullValidate: function (rows, cb) {
return beginValidate(rows, cb, true)
},
validate: function (rows, cb) {
return beginValidate(rows, cb)
},
clearValidate: function (rows, fieldOrColumn) {
var validErrorMaps = reactData.validErrorMaps
var validTip = refValidTooltip.value
var validOpts = computeValidOpts.value
var rowList = xeUtils.isArray(rows) ? rows : rows ? [rows] : []
var colList = xeUtils.isArray(fieldOrColumn)
? fieldOrColumn
: (fieldOrColumn ? [fieldOrColumn] : []).map(function (column) {
return handleFieldOrColumn($xetable, column)
})
var validErrMaps = {}
if (validTip && validTip.reactData.visible) {
validTip.close()
}
if (validOpts.msgMode === 'single') {
reactData.validErrorMaps = {}
return nextTick()
}
if (rowList.length && colList.length) {
validErrMaps = Object.assign({}, validErrorMaps)
rowList.forEach(function (row) {
colList.forEach(function (column) {
var vaildKey = ''
.concat(getRowid($xetable, row), ':')
.concat(column.id)
if (validErrMaps[vaildKey]) {
delete validErrMaps[vaildKey]
}
})
})
} else if (rowList.length) {
var rowidList_1 = rowList.map(function (row) {
return ''.concat(getRowid($xetable, row))
})
xeUtils.each(validErrorMaps, function (item2, key2) {
if (rowidList_1.indexOf(key2.split(':')[0]) > -1) {
validErrMaps[key2] = item2
}
})
} else if (colList.length) {
var colidList_1 = colList.map(function (column) {
return ''.concat(column.id)
})
xeUtils.each(validErrorMaps, function (item2, key2) {
if (colidList_1.indexOf(key2.split(':')[1]) > -1) {
validErrMaps[key2] = item2
}
})
}
reactData.validErrorMaps = validErrMaps
return nextTick()
},
}
var validErrorRuleValue2 = function (rule2, val2) {
var type4 = rule2.type,
min3 = rule2.min,
max3 = rule2.max,
pattern4 = rule2.pattern
var isNumType = type4 === 'number'
var numVal = isNumType ? xeUtils.toNumber(val2) : xeUtils.getSize(val2)
if (isNumType && isNaN(val2)) {
return true
}
if (!xeUtils.eqNull(min3) && numVal < xeUtils.toNumber(min3)) {
return true
}
if (!xeUtils.eqNull(max3) && numVal > xeUtils.toNumber(max3)) {
return true
}
if (
pattern4 &&
!(xeUtils.isRegExp(pattern4) ? pattern4 : new RegExp(pattern4)).test(
val2
)
) {
return true
}
return false
}
validatorPrivateMethods = {
validCellRules: function (validType, row, column, val2) {
var editRules = props2.editRules
var field2 = column.field
var errorRules = []
var syncVailds = []
if (field2 && editRules) {
var rules_1 = xeUtils.get(editRules, field2)
if (rules_1) {
var cellValue_1 = xeUtils.isUndefined(val2)
? xeUtils.get(row, field2)
: val2
rules_1.forEach(function (rule2) {
var type4 = rule2.type,
trigger2 = rule2.trigger,
required4 = rule2.required,
validator2 = rule2.validator
if (validType === 'all' || !trigger2 || validType === trigger2) {
if (validator2) {
var validParams = {
cellValue: cellValue_1,
rule: rule2,
rules: rules_1,
row,
rowIndex: $xetable.getRowIndex(row),
column,
columnIndex: $xetable.getColumnIndex(column),
field: column.field,
$table: $xetable,
$grid: $xetable.xegrid,
}
var customValid = void 0
if (xeUtils.isString(validator2)) {
var gvItem = VXETable.validators.get(validator2)
if (gvItem) {
if (gvItem.cellValidatorMethod) {
customValid = gvItem.cellValidatorMethod(validParams)
}
}
} else {
customValid = validator2(validParams)
}
if (customValid) {
if (xeUtils.isError(customValid)) {
validRuleErr = true
errorRules.push(
new Rule$1({
type: 'custom',
trigger: trigger2,
content: customValid.message,
rule: new Rule$1(rule2),
})
)
} else if (customValid.catch) {
syncVailds.push(
customValid.catch(function (e2) {
validRuleErr = true
errorRules.push(
new Rule$1({
type: 'custom',
trigger: trigger2,
content:
e2 && e2.message
? e2.message
: rule2.content || rule2.message,
rule: new Rule$1(rule2),
})
)
})
)
}
}
} else {
var isArrType = type4 === 'array'
var isArrVal = xeUtils.isArray(cellValue_1)
var hasEmpty = true
if (isArrType || isArrVal) {
hasEmpty = !isArrVal || !cellValue_1.length
} else if (xeUtils.isString(cellValue_1)) {
hasEmpty = eqEmptyValue(cellValue_1.trim())
} else {
hasEmpty = eqEmptyValue(cellValue_1)
}
if (
required4
? hasEmpty || validErrorRuleValue2(rule2, cellValue_1)
: !hasEmpty && validErrorRuleValue2(rule2, cellValue_1)
) {
validRuleErr = true
errorRules.push(new Rule$1(rule2))
}
}
}
})
}
}
return Promise.all(syncVailds).then(function () {
if (errorRules.length) {
var rest = { rules: errorRules, rule: errorRules[0] }
return Promise.reject(rest)
}
})
},
hasCellRules: function (type4, row, column) {
var editRules = props2.editRules
var field2 = column.field
if (field2 && editRules) {
var rules2 = xeUtils.get(editRules, field2)
return (
rules2 &&
!!xeUtils.find(rules2, function (rule2) {
return (
type4 === 'all' || !rule2.trigger || type4 === rule2.trigger
)
})
)
}
return false
},
triggerValidate: function (type4) {
var editConfig = props2.editConfig,
editRules = props2.editRules
var editStore = reactData.editStore
var actived = editStore.actived
var editOpts = computeEditOpts.value
var validOpts = computeValidOpts.value
if (editRules && validOpts.msgMode === 'single') {
reactData.validErrorMaps = {}
}
if (editConfig && editRules && actived.row) {
var _a3 = actived.args,
row_1 = _a3.row,
column_1 = _a3.column,
cell_1 = _a3.cell
if (validatorPrivateMethods.hasCellRules(type4, row_1, column_1)) {
return validatorPrivateMethods
.validCellRules(type4, row_1, column_1)
.then(function () {
if (editOpts.mode === 'row') {
validatorMethods.clearValidate(row_1, column_1)
}
})
.catch(function (_a4) {
var rule2 = _a4.rule
if (!rule2.trigger || type4 === rule2.trigger) {
var rest = {
rule: rule2,
row: row_1,
column: column_1,
cell: cell_1,
}
validatorPrivateMethods.showValidTooltip(rest)
return Promise.reject(rest)
}
return Promise.resolve()
})
}
}
return Promise.resolve()
},
showValidTooltip: function (params2) {
var _a3, _b2
var height = props2.height
var tableData2 = reactData.tableData,
validStore = reactData.validStore,
validErrorMaps = reactData.validErrorMaps
var validOpts = computeValidOpts.value
var validTip = refValidTooltip.value
validStore.visible = true
if (validOpts.msgMode === 'single') {
reactData.validErrorMaps =
((_a3 = {}),
(_a3[
''
.concat(getRowid($xetable, params2.row), ':')
.concat(params2.column.id)
] = {
column: params2.column,
row: params2.row,
rule: params2.rule,
content: params2.rule.content,
}),
_a3)
} else {
reactData.validErrorMaps = Object.assign(
{},
validErrorMaps,
((_b2 = {}),
(_b2[
''
.concat(getRowid($xetable, params2.row), ':')
.concat(params2.column.id)
] = {
column: params2.column,
row: params2.row,
rule: params2.rule,
content: params2.rule.content,
}),
_b2)
)
}
$xetable.dispatchEvent('valid-error', params2, null)
if (validTip) {
var cell = params2.cell
if (
validTip &&
(validOpts.message === 'tooltip' ||
(validOpts.message === 'default' &&
!height &&
tableData2.length < 2))
) {
return validTip.open(cell, params2.rule.content)
}
}
return nextTick()
},
}
return __assign$e(__assign$e({}, validatorMethods), validatorPrivateMethods)
},
setupGrid: function ($xegrid) {
return $xegrid.extendTableMethods(tableValidatorMethodKeys)
},
}
var VxeModuleValidator = {
install: function () {
VXETable.hooks.add('$tableValidator', validatorHook)
},
}
var Validator = VxeModuleValidator
var VxeIconComponent = defineComponent({
name: 'VxeIcon',
props: {
name: String,
roll: Boolean,
},
emits: ['click'],
setup: function (props2, _a2) {
var emit2 = _a2.emit
var clickEvent = function (evnt) {
emit2('click', { $event: evnt })
}
return function () {
return h$4('i', {
class: ['vxe-icon-'.concat(props2.name), props2.roll ? 'roll' : ''],
onClick: clickEvent,
})
}
},
})
var VxeIcon = Object.assign(VxeIconComponent, {
install: function (app2) {
app2.component(VxeIconComponent.name, VxeIconComponent)
},
})
var Icon$2 = VxeIcon
dynamicApp.component(VxeIcon.name, VxeIcon)
var __assign$d =
(globalThis && globalThis.__assign) ||
function () {
__assign$d =
Object.assign ||
function (t3) {
for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
s2 = arguments[i2]
for (var p2 in s2)
if (Object.prototype.hasOwnProperty.call(s2, p2)) t3[p2] = s2[p2]
}
return t3
}
return __assign$d.apply(this, arguments)
}
function renderHelpIcon(params2) {
var $table = params2.$table,
column = params2.column
var titlePrefix = column.titlePrefix || column.titleHelp
return titlePrefix
? [
h$4('i', {
class: [
'vxe-cell-help-icon',
titlePrefix.icon || GlobalConfig.icon.TABLE_HELP,
],
onMouseenter: function (evnt) {
$table.triggerHeaderHelpEvent(evnt, params2)
},
onMouseleave: function (evnt) {
$table.handleTargetLeaveEvent(evnt)
},
}),
]
: []
}
function renderTitleContent(params2, content2) {
var $table = params2.$table,
column = params2.column
var props2 = $table.props,
reactData = $table.reactData
var computeTooltipOpts = $table.getComputeMaps().computeTooltipOpts
var allColumnHeaderOverflow = props2.showHeaderOverflow
var type4 = column.type,
showHeaderOverflow = column.showHeaderOverflow
var tooltipOpts = computeTooltipOpts.value
var showAllTip = tooltipOpts.showAll
var headOverflow =
xeUtils.isUndefined(showHeaderOverflow) ||
xeUtils.isNull(showHeaderOverflow)
? allColumnHeaderOverflow
: showHeaderOverflow
var showTitle = headOverflow === 'title'
var showTooltip2 = headOverflow === true || headOverflow === 'tooltip'
var ons = {}
if (showTitle || showTooltip2 || showAllTip) {
ons.onMouseenter = function (evnt) {
if (reactData._isResize) {
return
}
if (showTitle) {
updateCellTitle(evnt.currentTarget, column)
} else if (showTooltip2 || showAllTip) {
$table.triggerHeaderTooltipEvent(evnt, params2)
}
}
}
if (showTooltip2 || showAllTip) {
ons.onMouseleave = function (evnt) {
if (reactData._isResize) {
return
}
if (showTooltip2 || showAllTip) {
$table.handleTargetLeaveEvent(evnt)
}
}
}
return [
type4 === 'html' && xeUtils.isString(content2)
? h$4(
'span',
__assign$d({ class: 'vxe-cell--title', innerHTML: content2 }, ons)
)
: h$4(
'span',
__assign$d({ class: 'vxe-cell--title' }, ons),
getSlotVNs(content2)
),
]
}
function getFooterContent(params2) {
var $table = params2.$table,
column = params2.column,
_columnIndex = params2._columnIndex,
items = params2.items
var slots = column.slots,
editRender = column.editRender,
cellRender = column.cellRender
var renderOpts = editRender || cellRender
var footerSlot = slots ? slots.footer : null
if (footerSlot) {
return $table.callSlot(footerSlot, params2)
}
if (renderOpts) {
var compConf = VXETable.renderer.get(renderOpts.name)
if (compConf && compConf.renderFooter) {
return getSlotVNs(compConf.renderFooter(renderOpts, params2))
}
}
return [formatText(items[_columnIndex], 1)]
}
function getDefaultCellLabel(params2) {
var $table = params2.$table,
row = params2.row,
column = params2.column
return formatText($table.getCellLabel(row, column), 1)
}
var Cell$1 = {
createColumn: function ($xetable, columnOpts) {
var type4 = columnOpts.type,
sortable = columnOpts.sortable,
filters = columnOpts.filters,
editRender = columnOpts.editRender,
treeNode = columnOpts.treeNode
var props2 = $xetable.props
var editConfig = props2.editConfig
var _a2 = $xetable.getComputeMaps(),
computeEditOpts = _a2.computeEditOpts,
computeCheckboxOpts = _a2.computeCheckboxOpts
var checkboxOpts = computeCheckboxOpts.value
var editOpts = computeEditOpts.value
var renConfs = {
renderHeader: Cell$1.renderDefaultHeader,
renderCell: treeNode ? Cell$1.renderTreeCell : Cell$1.renderDefaultCell,
renderFooter: Cell$1.renderDefaultFooter,
}
switch (type4) {
case 'seq':
renConfs.renderHeader = Cell$1.renderSeqHeader
renConfs.renderCell = treeNode
? Cell$1.renderTreeIndexCell
: Cell$1.renderSeqCell
break
case 'radio':
renConfs.renderHeader = Cell$1.renderRadioHeader
renConfs.renderCell = treeNode
? Cell$1.renderTreeRadioCell
: Cell$1.renderRadioCell
break
case 'checkbox':
renConfs.renderHeader = Cell$1.renderCheckboxHeader
renConfs.renderCell = checkboxOpts.checkField
? treeNode
? Cell$1.renderTreeSelectionCellByProp
: Cell$1.renderCheckboxCellByProp
: treeNode
? Cell$1.renderTreeSelectionCell
: Cell$1.renderCheckboxCell
break
case 'expand':
renConfs.renderCell = Cell$1.renderExpandCell
renConfs.renderData = Cell$1.renderExpandData
break
case 'html':
renConfs.renderCell = treeNode
? Cell$1.renderTreeHTMLCell
: Cell$1.renderHTMLCell
if (filters && sortable) {
renConfs.renderHeader = Cell$1.renderSortAndFilterHeader
} else if (sortable) {
renConfs.renderHeader = Cell$1.renderSortHeader
} else if (filters) {
renConfs.renderHeader = Cell$1.renderFilterHeader
}
break
default:
if (editConfig && editRender) {
renConfs.renderHeader = Cell$1.renderEditHeader
renConfs.renderCell =
editOpts.mode === 'cell'
? treeNode
? Cell$1.renderTreeCellEdit
: Cell$1.renderCellEdit
: treeNode
? Cell$1.renderTreeRowEdit
: Cell$1.renderRowEdit
} else if (filters && sortable) {
renConfs.renderHeader = Cell$1.renderSortAndFilterHeader
} else if (sortable) {
renConfs.renderHeader = Cell$1.renderSortHeader
} else if (filters) {
renConfs.renderHeader = Cell$1.renderFilterHeader
}
}
return createColumn($xetable, columnOpts, renConfs)
},
renderHeaderTitle: function (params2) {
var $table = params2.$table,
column = params2.column
var slots = column.slots,
editRender = column.editRender,
cellRender = column.cellRender
var renderOpts = editRender || cellRender
var headerSlot = slots ? slots.header : null
if (headerSlot) {
return renderTitleContent(params2, $table.callSlot(headerSlot, params2))
}
if (renderOpts) {
var compConf = VXETable.renderer.get(renderOpts.name)
if (compConf && compConf.renderHeader) {
return renderTitleContent(
params2,
getSlotVNs(compConf.renderHeader(renderOpts, params2))
)
}
}
return renderTitleContent(params2, formatText(column.getTitle(), 1))
},
renderDefaultHeader: function (params2) {
return renderHelpIcon(params2).concat(Cell$1.renderHeaderTitle(params2))
},
renderDefaultCell: function (params2) {
var $table = params2.$table,
row = params2.row,
column = params2.column
var slots = column.slots,
editRender = column.editRender,
cellRender = column.cellRender
var renderOpts = editRender || cellRender
var defaultSlot = slots ? slots.default : null
if (defaultSlot) {
return $table.callSlot(defaultSlot, params2)
}
if (renderOpts) {
var funName = editRender ? 'renderCell' : 'renderDefault'
var compConf = VXETable.renderer.get(renderOpts.name)
var compFn = compConf ? compConf[funName] : null
if (compFn) {
return getSlotVNs(
compFn(
renderOpts,
Object.assign({ $type: editRender ? 'edit' : 'cell' }, params2)
)
)
}
}
var cellValue = $table.getCellLabel(row, column)
var cellPlaceholder = editRender ? editRender.placeholder : ''
return [
h$4(
'span',
{
class: 'vxe-cell--label',
},
editRender && eqEmptyValue(cellValue)
? [
h$4(
'span',
{
class: 'vxe-cell--placeholder',
},
formatText(getFuncText(cellPlaceholder), 1)
),
]
: formatText(cellValue, 1)
),
]
},
renderTreeCell: function (params2) {
return Cell$1.renderTreeIcon(params2, Cell$1.renderDefaultCell(params2))
},
renderDefaultFooter: function (params2) {
return [
h$4(
'span',
{
class: 'vxe-cell--item',
},
getFooterContent(params2)
),
]
},
renderTreeIcon: function (params2, cellVNodes) {
var $table = params2.$table,
isHidden2 = params2.isHidden
var reactData = $table.reactData
var computeTreeOpts = $table.getComputeMaps().computeTreeOpts
var treeExpandedMaps = reactData.treeExpandedMaps,
treeExpandLazyLoadedMaps = reactData.treeExpandLazyLoadedMaps
var treeOpts = computeTreeOpts.value
var row = params2.row,
column = params2.column,
level = params2.level
var slots = column.slots
var indent = treeOpts.indent,
lazy = treeOpts.lazy,
trigger2 = treeOpts.trigger,
iconLoaded = treeOpts.iconLoaded,
showIcon = treeOpts.showIcon,
iconOpen = treeOpts.iconOpen,
iconClose = treeOpts.iconClose
var childrenField = treeOpts.children || treeOpts.childrenField
var hasChildField = treeOpts.hasChild || treeOpts.hasChildField
var rowChilds = row[childrenField]
var iconSlot = slots ? slots.icon : null
var hasLazyChilds = false
var isAceived = false
var isLazyLoaded = false
var ons = {}
if (iconSlot) {
return $table.callSlot(iconSlot, params2)
}
if (!isHidden2) {
var rowid = getRowid($table, row)
isAceived = !!treeExpandedMaps[rowid]
if (lazy) {
isLazyLoaded = !!treeExpandLazyLoadedMaps[rowid]
hasLazyChilds = row[hasChildField]
}
}
if (!trigger2 || trigger2 === 'default') {
ons.onClick = function (evnt) {
evnt.stopPropagation()
$table.triggerTreeExpandEvent(evnt, params2)
}
}
return [
h$4(
'div',
{
class: [
'vxe-cell--tree-node',
{
'is--active': isAceived,
},
],
style: {
paddingLeft: ''.concat(level * indent, 'px'),
},
},
[
showIcon && ((rowChilds && rowChilds.length) || hasLazyChilds)
? [
h$4(
'div',
__assign$d({ class: 'vxe-tree--btn-wrapper' }, ons),
[
h$4('i', {
class: [
'vxe-tree--node-btn',
isLazyLoaded
? iconLoaded || GlobalConfig.icon.TABLE_TREE_LOADED
: isAceived
? iconOpen || GlobalConfig.icon.TABLE_TREE_OPEN
: iconClose || GlobalConfig.icon.TABLE_TREE_CLOSE,
],
}),
]
),
]
: null,
h$4(
'div',
{
class: 'vxe-tree-cell',
},
cellVNodes
),
]
),
]
},
renderSeqHeader: function (params2) {
var $table = params2.$table,
column = params2.column
var slots = column.slots
var headerSlot = slots ? slots.header : null
return renderTitleContent(
params2,
headerSlot
? $table.callSlot(headerSlot, params2)
: formatText(column.getTitle(), 1)
)
},
renderSeqCell: function (params2) {
var $table = params2.$table,
column = params2.column
var props2 = $table.props
var treeConfig = props2.treeConfig
var computeSeqOpts = $table.getComputeMaps().computeSeqOpts
var seqOpts = computeSeqOpts.value
var slots = column.slots
var defaultSlot = slots ? slots.default : null
if (defaultSlot) {
return $table.callSlot(defaultSlot, params2)
}
var seq = params2.seq
var seqMethod = seqOpts.seqMethod
return [
formatText(
seqMethod
? seqMethod(params2)
: treeConfig
? seq
: (seqOpts.startIndex || 0) + seq,
1
),
]
},
renderTreeIndexCell: function (params2) {
return Cell$1.renderTreeIcon(params2, Cell$1.renderSeqCell(params2))
},
renderRadioHeader: function (params2) {
var $table = params2.$table,
column = params2.column
var slots = column.slots
var headerSlot = slots ? slots.header : null
var titleSlot = slots ? slots.title : null
return renderTitleContent(
params2,
headerSlot
? $table.callSlot(headerSlot, params2)
: [
h$4(
'span',
{
class: 'vxe-radio--label',
},
titleSlot
? $table.callSlot(titleSlot, params2)
: formatText(column.getTitle(), 1)
),
]
)
},
renderRadioCell: function (params2) {
var $table = params2.$table,
column = params2.column,
isHidden2 = params2.isHidden
var reactData = $table.reactData
var computeRadioOpts = $table.getComputeMaps().computeRadioOpts
var selectRadioRow = reactData.selectRadioRow
var radioOpts = computeRadioOpts.value
var slots = column.slots
var labelField = radioOpts.labelField,
checkMethod = radioOpts.checkMethod,
visibleMethod = radioOpts.visibleMethod
var row = params2.row
var defaultSlot = slots ? slots.default : null
var radioSlot = slots ? slots.radio : null
var isChecked = $table.eqRow(row, selectRadioRow)
var isVisible2 = !visibleMethod || visibleMethod({ row })
var isDisabled = !!checkMethod
var ons
if (!isHidden2) {
ons = {
onClick: function (evnt) {
if (!isDisabled && isVisible2) {
evnt.stopPropagation()
$table.triggerRadioRowEvent(evnt, params2)
}
},
}
if (checkMethod) {
isDisabled = !checkMethod({ row })
}
}
var radioParams = __assign$d(__assign$d({}, params2), {
checked: isChecked,
disabled: isDisabled,
visible: isVisible2,
})
if (radioSlot) {
return $table.callSlot(radioSlot, radioParams)
}
var radioVNs = []
if (isVisible2) {
radioVNs.push(
h$4('span', {
class: [
'vxe-radio--icon',
isChecked
? GlobalConfig.icon.TABLE_RADIO_CHECKED
: GlobalConfig.icon.TABLE_RADIO_UNCHECKED,
],
})
)
}
if (defaultSlot || labelField) {
radioVNs.push(
h$4(
'span',
{
class: 'vxe-radio--label',
},
defaultSlot
? $table.callSlot(defaultSlot, radioParams)
: xeUtils.get(row, labelField)
)
)
}
return [
h$4(
'span',
__assign$d(
{
class: [
'vxe-cell--radio',
{
'is--checked': isChecked,
'is--disabled': isDisabled,
},
],
},
ons
),
radioVNs
),
]
},
renderTreeRadioCell: function (params2) {
return Cell$1.renderTreeIcon(params2, Cell$1.renderRadioCell(params2))
},
renderCheckboxHeader: function (params2) {
var $table = params2.$table,
column = params2.column,
isHidden2 = params2.isHidden
var reactData = $table.reactData
var _a2 = $table.getComputeMaps(),
computeIsAllCheckboxDisabled = _a2.computeIsAllCheckboxDisabled,
computeCheckboxOpts = _a2.computeCheckboxOpts
var isAllCheckboxSelected = reactData.isAllSelected,
isAllCheckboxIndeterminate = reactData.isIndeterminate
var isAllCheckboxDisabled = computeIsAllCheckboxDisabled.value
var slots = column.slots
var headerSlot = slots ? slots.header : null
var titleSlot = slots ? slots.title : null
var checkboxOpts = computeCheckboxOpts.value
var headerTitle = column.getTitle()
var ons
if (!isHidden2) {
ons = {
onClick: function (evnt) {
if (!isAllCheckboxDisabled) {
evnt.stopPropagation()
$table.triggerCheckAllEvent(evnt, !isAllCheckboxSelected)
}
},
}
}
var checkboxParams = __assign$d(__assign$d({}, params2), {
checked: isAllCheckboxSelected,
disabled: isAllCheckboxDisabled,
indeterminate: isAllCheckboxIndeterminate,
})
if (headerSlot) {
return renderTitleContent(
checkboxParams,
$table.callSlot(headerSlot, checkboxParams)
)
}
if (
checkboxOpts.checkStrictly
? !checkboxOpts.showHeader
: checkboxOpts.showHeader === false
) {
return renderTitleContent(checkboxParams, [
h$4(
'span',
{
class: 'vxe-checkbox--label',
},
titleSlot ? $table.callSlot(titleSlot, checkboxParams) : headerTitle
),
])
}
return renderTitleContent(checkboxParams, [
h$4(
'span',
__assign$d(
{
class: [
'vxe-cell--checkbox',
{
'is--checked': isAllCheckboxSelected,
'is--disabled': isAllCheckboxDisabled,
'is--indeterminate': isAllCheckboxIndeterminate,
},
],
title: GlobalConfig.i18n('vxe.table.allTitle'),
},
ons
),
[
h$4('span', {
class: [
'vxe-checkbox--icon',
isAllCheckboxIndeterminate
? GlobalConfig.icon.TABLE_CHECKBOX_INDETERMINATE
: isAllCheckboxSelected
? GlobalConfig.icon.TABLE_CHECKBOX_CHECKED
: GlobalConfig.icon.TABLE_CHECKBOX_UNCHECKED,
],
}),
].concat(
titleSlot || headerTitle
? [
h$4(
'span',
{
class: 'vxe-checkbox--label',
},
titleSlot
? $table.callSlot(titleSlot, checkboxParams)
: headerTitle
),
]
: []
)
),
])
},
renderCheckboxCell: function (params2) {
var $table = params2.$table,
row = params2.row,
column = params2.column,
isHidden2 = params2.isHidden
var props2 = $table.props,
reactData = $table.reactData
var treeConfig = props2.treeConfig
var selectCheckboxMaps = reactData.selectCheckboxMaps,
treeIndeterminateMaps = reactData.treeIndeterminateMaps
var computeCheckboxOpts = $table.getComputeMaps().computeCheckboxOpts
var checkboxOpts = computeCheckboxOpts.value
var labelField = checkboxOpts.labelField,
checkMethod = checkboxOpts.checkMethod,
visibleMethod = checkboxOpts.visibleMethod
var slots = column.slots
var defaultSlot = slots ? slots.default : null
var checkboxSlot = slots ? slots.checkbox : null
var indeterminate = false
var isChecked = false
var isVisible2 = !visibleMethod || visibleMethod({ row })
var isDisabled = !!checkMethod
var ons
if (!isHidden2) {
var rowid = getRowid($table, row)
isChecked = !!selectCheckboxMaps[rowid]
ons = {
onClick: function (evnt) {
if (!isDisabled && isVisible2) {
evnt.stopPropagation()
$table.triggerCheckRowEvent(evnt, params2, !isChecked)
}
},
}
if (checkMethod) {
isDisabled = !checkMethod({ row })
}
if (treeConfig) {
indeterminate = !!treeIndeterminateMaps[rowid]
}
}
var checkboxParams = __assign$d(__assign$d({}, params2), {
checked: isChecked,
disabled: isDisabled,
visible: isVisible2,
indeterminate,
})
if (checkboxSlot) {
return $table.callSlot(checkboxSlot, checkboxParams)
}
var checkVNs = []
if (isVisible2) {
checkVNs.push(
h$4('span', {
class: [
'vxe-checkbox--icon',
indeterminate
? GlobalConfig.icon.TABLE_CHECKBOX_INDETERMINATE
: isChecked
? GlobalConfig.icon.TABLE_CHECKBOX_CHECKED
: GlobalConfig.icon.TABLE_CHECKBOX_UNCHECKED,
],
})
)
}
if (defaultSlot || labelField) {
checkVNs.push(
h$4(
'span',
{
class: 'vxe-checkbox--label',
},
defaultSlot
? $table.callSlot(defaultSlot, checkboxParams)
: xeUtils.get(row, labelField)
)
)
}
return [
h$4(
'span',
__assign$d(
{
class: [
'vxe-cell--checkbox',
{
'is--checked': isChecked,
'is--disabled': isDisabled,
'is--indeterminate': indeterminate,
},
],
},
ons
),
checkVNs
),
]
},
renderTreeSelectionCell: function (params2) {
return Cell$1.renderTreeIcon(params2, Cell$1.renderCheckboxCell(params2))
},
renderCheckboxCellByProp: function (params2) {
var $table = params2.$table,
row = params2.row,
column = params2.column,
isHidden2 = params2.isHidden
var props2 = $table.props,
reactData = $table.reactData
var treeConfig = props2.treeConfig
var treeIndeterminateMaps = reactData.treeIndeterminateMaps
var computeCheckboxOpts = $table.getComputeMaps().computeCheckboxOpts
var checkboxOpts = computeCheckboxOpts.value
var labelField = checkboxOpts.labelField,
checkField = checkboxOpts.checkField,
checkMethod = checkboxOpts.checkMethod,
visibleMethod = checkboxOpts.visibleMethod
var indeterminateField =
checkboxOpts.indeterminateField || checkboxOpts.halfField
var slots = column.slots
var defaultSlot = slots ? slots.default : null
var checkboxSlot = slots ? slots.checkbox : null
var isIndeterminate = false
var isChecked = false
var isVisible2 = !visibleMethod || visibleMethod({ row })
var isDisabled = !!checkMethod
var ons
if (!isHidden2) {
var rowid = getRowid($table, row)
isChecked = xeUtils.get(row, checkField)
ons = {
onClick: function (evnt) {
if (!isDisabled && isVisible2) {
evnt.stopPropagation()
$table.triggerCheckRowEvent(evnt, params2, !isChecked)
}
},
}
if (checkMethod) {
isDisabled = !checkMethod({ row })
}
if (treeConfig) {
isIndeterminate = !!treeIndeterminateMaps[rowid]
}
}
var checkboxParams = __assign$d(__assign$d({}, params2), {
checked: isChecked,
disabled: isDisabled,
visible: isVisible2,
indeterminate: isIndeterminate,
})
if (checkboxSlot) {
return $table.callSlot(checkboxSlot, checkboxParams)
}
var checkVNs = []
if (isVisible2) {
checkVNs.push(
h$4('span', {
class: [
'vxe-checkbox--icon',
isIndeterminate
? GlobalConfig.icon.TABLE_CHECKBOX_INDETERMINATE
: isChecked
? GlobalConfig.icon.TABLE_CHECKBOX_CHECKED
: GlobalConfig.icon.TABLE_CHECKBOX_UNCHECKED,
],
})
)
if (defaultSlot || labelField) {
checkVNs.push(
h$4(
'span',
{
class: 'vxe-checkbox--label',
},
defaultSlot
? $table.callSlot(defaultSlot, checkboxParams)
: xeUtils.get(row, labelField)
)
)
}
}
return [
h$4(
'span',
__assign$d(
{
class: [
'vxe-cell--checkbox',
{
'is--checked': isChecked,
'is--disabled': isDisabled,
'is--indeterminate':
indeterminateField && !isChecked
? row[indeterminateField]
: isIndeterminate,
},
],
},
ons
),
checkVNs
),
]
},
renderTreeSelectionCellByProp: function (params2) {
return Cell$1.renderTreeIcon(
params2,
Cell$1.renderCheckboxCellByProp(params2)
)
},
renderExpandCell: function (params2) {
var $table = params2.$table,
isHidden2 = params2.isHidden,
row = params2.row,
column = params2.column
var reactData = $table.reactData
var rowExpandedMaps = reactData.rowExpandedMaps,
rowExpandLazyLoadedMaps = reactData.rowExpandLazyLoadedMaps
var computeExpandOpts = $table.getComputeMaps().computeExpandOpts
var expandOpts = computeExpandOpts.value
var lazy = expandOpts.lazy,
labelField = expandOpts.labelField,
iconLoaded = expandOpts.iconLoaded,
showIcon = expandOpts.showIcon,
iconOpen = expandOpts.iconOpen,
iconClose = expandOpts.iconClose,
visibleMethod = expandOpts.visibleMethod
var slots = column.slots
var defaultSlot = slots ? slots.default : null
var iconSlot = slots ? slots.icon : null
var isAceived = false
var isLazyLoaded = false
if (iconSlot) {
return $table.callSlot(iconSlot, params2)
}
if (!isHidden2) {
var rowid = getRowid($table, row)
isAceived = !!rowExpandedMaps[rowid]
if (lazy) {
isLazyLoaded = !!rowExpandLazyLoadedMaps[rowid]
}
}
return [
showIcon && (!visibleMethod || visibleMethod(params2))
? h$4(
'span',
{
class: [
'vxe-table--expanded',
{
'is--active': isAceived,
},
],
onClick: function (evnt) {
evnt.stopPropagation()
$table.triggerRowExpandEvent(evnt, params2)
},
},
[
h$4('i', {
class: [
'vxe-table--expand-btn',
isLazyLoaded
? iconLoaded || GlobalConfig.icon.TABLE_EXPAND_LOADED
: isAceived
? iconOpen || GlobalConfig.icon.TABLE_EXPAND_OPEN
: iconClose || GlobalConfig.icon.TABLE_EXPAND_CLOSE,
],
}),
]
)
: null,
defaultSlot || labelField
? h$4(
'span',
{
class: 'vxe-table--expand-label',
},
defaultSlot
? $table.callSlot(defaultSlot, params2)
: xeUtils.get(row, labelField)
)
: null,
]
},
renderExpandData: function (params2) {
var $table = params2.$table,
column = params2.column
var slots = column.slots,
contentRender = column.contentRender
var contentSlot = slots ? slots.content : null
if (contentSlot) {
return $table.callSlot(contentSlot, params2)
}
if (contentRender) {
var compConf = VXETable.renderer.get(contentRender.name)
if (compConf && compConf.renderExpand) {
return getSlotVNs(compConf.renderExpand(contentRender, params2))
}
}
return []
},
renderHTMLCell: function (params2) {
var $table = params2.$table,
column = params2.column
var slots = column.slots
var defaultSlot = slots ? slots.default : null
if (defaultSlot) {
return $table.callSlot(defaultSlot, params2)
}
return [
h$4('span', {
class: 'vxe-cell--html',
innerHTML: getDefaultCellLabel(params2),
}),
]
},
renderTreeHTMLCell: function (params2) {
return Cell$1.renderTreeIcon(params2, Cell$1.renderHTMLCell(params2))
},
renderSortAndFilterHeader: function (params2) {
return Cell$1.renderDefaultHeader(params2)
.concat(Cell$1.renderSortIcon(params2))
.concat(Cell$1.renderFilterIcon(params2))
},
renderSortHeader: function (params2) {
return Cell$1.renderDefaultHeader(params2).concat(
Cell$1.renderSortIcon(params2)
)
},
renderSortIcon: function (params2) {
var $table = params2.$table,
column = params2.column
var computeSortOpts = $table.getComputeMaps().computeSortOpts
var sortOpts = computeSortOpts.value
var showIcon = sortOpts.showIcon,
iconAsc = sortOpts.iconAsc,
iconDesc = sortOpts.iconDesc
var order2 = column.order
return showIcon
? [
h$4(
'span',
{
class: 'vxe-cell--sort',
},
[
h$4('i', {
class: [
'vxe-sort--asc-btn',
iconAsc || GlobalConfig.icon.TABLE_SORT_ASC,
{
'sort--active': order2 === 'asc',
},
],
title: GlobalConfig.i18n('vxe.table.sortAsc'),
onClick: function (evnt) {
evnt.stopPropagation()
$table.triggerSortEvent(evnt, column, 'asc')
},
}),
h$4('i', {
class: [
'vxe-sort--desc-btn',
iconDesc || GlobalConfig.icon.TABLE_SORT_DESC,
{
'sort--active': order2 === 'desc',
},
],
title: GlobalConfig.i18n('vxe.table.sortDesc'),
onClick: function (evnt) {
evnt.stopPropagation()
$table.triggerSortEvent(evnt, column, 'desc')
},
}),
]
),
]
: []
},
renderFilterHeader: function (params2) {
return Cell$1.renderDefaultHeader(params2).concat(
Cell$1.renderFilterIcon(params2)
)
},
renderFilterIcon: function (params2) {
var $table = params2.$table,
column = params2.column,
hasFilter = params2.hasFilter
var reactData = $table.reactData
var filterStore = reactData.filterStore
var computeFilterOpts = $table.getComputeMaps().computeFilterOpts
var filterOpts = computeFilterOpts.value
var showIcon = filterOpts.showIcon,
iconNone = filterOpts.iconNone,
iconMatch = filterOpts.iconMatch
return showIcon
? [
h$4(
'span',
{
class: [
'vxe-cell--filter',
{
'is--active':
filterStore.visible && filterStore.column === column,
},
],
},
[
h$4('i', {
class: [
'vxe-filter--btn',
hasFilter
? iconMatch || GlobalConfig.icon.TABLE_FILTER_MATCH
: iconNone || GlobalConfig.icon.TABLE_FILTER_NONE,
],
title: GlobalConfig.i18n('vxe.table.filter'),
onClick: function (evnt) {
if ($table.triggerFilterEvent) {
$table.triggerFilterEvent(evnt, params2.column, params2)
}
},
}),
]
),
]
: []
},
renderEditHeader: function (params2) {
var $table = params2.$table,
column = params2.column
var props2 = $table.props
var computeEditOpts = $table.getComputeMaps().computeEditOpts
var editConfig = props2.editConfig,
editRules = props2.editRules
var editOpts = computeEditOpts.value
var sortable = column.sortable,
filters = column.filters,
editRender = column.editRender
var isRequired = false
if (editRules) {
var columnRules = xeUtils.get(editRules, column.field)
if (columnRules) {
isRequired = columnRules.some(function (rule2) {
return rule2.required
})
}
}
return (
isEnableConf(editConfig)
? [
isRequired && editOpts.showAsterisk
? h$4('i', {
class: 'vxe-cell--required-icon',
})
: null,
isEnableConf(editRender) && editOpts.showIcon
? h$4('i', {
class: [
'vxe-cell--edit-icon',
editOpts.icon || GlobalConfig.icon.TABLE_EDIT,
],
})
: null,
]
: []
)
.concat(Cell$1.renderDefaultHeader(params2))
.concat(sortable ? Cell$1.renderSortIcon(params2) : [])
.concat(filters ? Cell$1.renderFilterIcon(params2) : [])
},
renderRowEdit: function (params2) {
var $table = params2.$table,
column = params2.column
var reactData = $table.reactData
var editStore = reactData.editStore
var actived = editStore.actived
var editRender = column.editRender
return Cell$1.runRenderer(
params2,
isEnableConf(editRender) && actived && actived.row === params2.row
)
},
renderTreeRowEdit: function (params2) {
return Cell$1.renderTreeIcon(params2, Cell$1.renderRowEdit(params2))
},
renderCellEdit: function (params2) {
var $table = params2.$table,
column = params2.column
var reactData = $table.reactData
var editStore = reactData.editStore
var actived = editStore.actived
var editRender = column.editRender
return Cell$1.runRenderer(
params2,
isEnableConf(editRender) &&
actived &&
actived.row === params2.row &&
actived.column === params2.column
)
},
renderTreeCellEdit: function (params2) {
return Cell$1.renderTreeIcon(params2, Cell$1.renderCellEdit(params2))
},
runRenderer: function (params2, isEdit) {
var $table = params2.$table,
column = params2.column
var slots = column.slots,
editRender = column.editRender,
formatter2 = column.formatter
var defaultSlot = slots ? slots.default : null
var editSlot = slots ? slots.edit : null
var compConf = VXETable.renderer.get(editRender.name)
if (isEdit) {
if (editSlot) {
return $table.callSlot(editSlot, params2)
}
if (compConf && compConf.renderEdit) {
return getSlotVNs(
compConf.renderEdit(
editRender,
Object.assign({ $type: 'edit' }, params2)
)
)
}
return []
}
if (defaultSlot) {
return $table.callSlot(defaultSlot, params2)
}
if (formatter2) {
return [
h$4(
'span',
{
class: 'vxe-cell--label',
},
getDefaultCellLabel(params2)
),
]
}
return Cell$1.renderDefaultCell(params2)
},
}
var columnProps = {
colId: [String, Number],
type: String,
field: String,
title: String,
width: [Number, String],
minWidth: [Number, String],
maxWidth: [Number, String],
resizable: { type: Boolean, default: null },
fixed: String,
align: String,
headerAlign: String,
footerAlign: String,
showOverflow: { type: [Boolean, String], default: null },
showHeaderOverflow: { type: [Boolean, String], default: null },
showFooterOverflow: { type: [Boolean, String], default: null },
className: [String, Function],
headerClassName: [String, Function],
footerClassName: [String, Function],
formatter: [Function, Array, String],
sortable: Boolean,
sortBy: [String, Function],
sortType: String,
filters: { type: Array, default: null },
filterMultiple: { type: Boolean, default: true },
filterMethod: Function,
filterResetMethod: Function,
filterRecoverMethod: Function,
filterRender: Object,
treeNode: Boolean,
visible: { type: Boolean, default: null },
headerExportMethod: Function,
exportMethod: Function,
footerExportMethod: Function,
titleHelp: Object,
titlePrefix: Object,
cellType: String,
cellRender: Object,
editRender: Object,
contentRender: Object,
params: Object,
}
var VxeTableColumnComponent = defineComponent({
name: 'VxeColumn',
props: columnProps,
setup: function (props2, _a2) {
var slots = _a2.slots
var refElem = ref()
var $xetable = inject('$xetable', {})
var colgroup = inject('xecolgroup', null)
var column = Cell$1.createColumn($xetable, props2)
column.slots = slots
provide('$xegrid', null)
watchColumn($xetable, props2, column)
onMounted(function () {
assemColumn($xetable, refElem.value, column, colgroup)
})
onUnmounted(function () {
destroyColumn($xetable, column)
})
var renderVN = function () {
return h$4('div', {
ref: refElem,
})
}
return renderVN
},
})
var VxeColumn = Object.assign(VxeTableColumnComponent, {
install: function (app2) {
app2.component(VxeTableColumnComponent.name, VxeTableColumnComponent)
app2.component('VxeTableColumn', VxeTableColumnComponent)
},
})
var Column = VxeColumn
dynamicApp.component(VxeTableColumnComponent.name, VxeTableColumnComponent)
dynamicApp.component('VxeTableColumn', VxeTableColumnComponent)
var VxeTableColgroupComponent = defineComponent({
name: 'VxeColgroup',
props: columnProps,
setup: function (props2, _a2) {
var slots = _a2.slots
var refElem = ref()
var $xetable = inject('$xetable', {})
var colgroup = inject('xecolgroup', null)
var column = Cell$1.createColumn($xetable, props2)
var columnSlots = {}
if (slots.header) {
columnSlots.header = slots.header
}
var xecolumn = { column }
column.slots = columnSlots
column.children = []
provide('xecolgroup', xecolumn)
provide('$xegrid', null)
watchColumn($xetable, props2, column)
onMounted(function () {
assemColumn($xetable, refElem.value, column, colgroup)
})
onUnmounted(function () {
destroyColumn($xetable, column)
})
var renderVN = function () {
return h$4(
'div',
{
ref: refElem,
},
slots.default ? slots.default() : []
)
}
return renderVN
},
})
Object.assign(VxeTableColgroupComponent, {
install: function (app2) {
app2.component(VxeTableColgroupComponent.name, VxeTableColgroupComponent)
app2.component('VxeTableColgroup', VxeTableColgroupComponent)
},
})
dynamicApp.component(VxeTableColgroupComponent.name, VxeTableColgroupComponent)
dynamicApp.component('VxeTableColgroup', VxeTableColgroupComponent)
var tableProps = {
id: String,
data: Array,
height: [Number, String],
minHeight: {
type: [Number, String],
default: function () {
return GlobalConfig.table.minHeight
},
},
maxHeight: [Number, String],
resizable: {
type: Boolean,
default: function () {
return GlobalConfig.table.resizable
},
},
stripe: {
type: Boolean,
default: function () {
return GlobalConfig.table.stripe
},
},
border: {
type: [Boolean, String],
default: function () {
return GlobalConfig.table.border
},
},
round: {
type: Boolean,
default: function () {
return GlobalConfig.table.round
},
},
size: {
type: String,
default: function () {
return GlobalConfig.table.size || GlobalConfig.size
},
},
fit: {
type: Boolean,
default: function () {
return GlobalConfig.table.fit
},
},
loading: Boolean,
align: {
type: String,
default: function () {
return GlobalConfig.table.align
},
},
headerAlign: {
type: String,
default: function () {
return GlobalConfig.table.headerAlign
},
},
footerAlign: {
type: String,
default: function () {
return GlobalConfig.table.footerAlign
},
},
showHeader: {
type: Boolean,
default: function () {
return GlobalConfig.table.showHeader
},
},
highlightCurrentRow: {
type: Boolean,
default: function () {
return GlobalConfig.table.highlightCurrentRow
},
},
highlightHoverRow: {
type: Boolean,
default: function () {
return GlobalConfig.table.highlightHoverRow
},
},
highlightCurrentColumn: {
type: Boolean,
default: function () {
return GlobalConfig.table.highlightCurrentColumn
},
},
highlightHoverColumn: {
type: Boolean,
default: function () {
return GlobalConfig.table.highlightHoverColumn
},
},
highlightCell: Boolean,
showFooter: Boolean,
footerMethod: Function,
rowClassName: [String, Function],
cellClassName: [String, Function],
headerRowClassName: [String, Function],
headerCellClassName: [String, Function],
footerRowClassName: [String, Function],
footerCellClassName: [String, Function],
cellStyle: [Object, Function],
headerCellStyle: [Object, Function],
footerCellStyle: [Object, Function],
rowStyle: [Object, Function],
headerRowStyle: [Object, Function],
footerRowStyle: [Object, Function],
mergeCells: Array,
mergeFooterItems: Array,
spanMethod: Function,
footerSpanMethod: Function,
showOverflow: {
type: [Boolean, String],
default: function () {
return GlobalConfig.table.showOverflow
},
},
showHeaderOverflow: {
type: [Boolean, String],
default: function () {
return GlobalConfig.table.showHeaderOverflow
},
},
showFooterOverflow: {
type: [Boolean, String],
default: function () {
return GlobalConfig.table.showFooterOverflow
},
},
columnKey: Boolean,
rowKey: Boolean,
rowId: {
type: String,
default: function () {
return GlobalConfig.table.rowId
},
},
zIndex: Number,
emptyText: {
type: String,
default: function () {
return GlobalConfig.table.emptyText
},
},
keepSource: {
type: Boolean,
default: function () {
return GlobalConfig.table.keepSource
},
},
autoResize: {
type: Boolean,
default: function () {
return GlobalConfig.table.autoResize
},
},
syncResize: [Boolean, String, Number],
resizeConfig: Object,
columnConfig: Object,
rowConfig: Object,
resizableConfig: Object,
seqConfig: Object,
sortConfig: Object,
filterConfig: Object,
radioConfig: Object,
checkboxConfig: Object,
tooltipConfig: Object,
exportConfig: Object,
importConfig: Object,
printConfig: Object,
expandConfig: Object,
treeConfig: Object,
menuConfig: Object,
mouseConfig: Object,
areaConfig: Object,
keyboardConfig: Object,
clipConfig: Object,
fnrConfig: Object,
editConfig: Object,
validConfig: Object,
editRules: Object,
loadingConfig: Object,
emptyRender: Object,
customConfig: Object,
scrollX: Object,
scrollY: Object,
animat: {
type: Boolean,
default: function () {
return GlobalConfig.table.animat
},
},
delayHover: {
type: Number,
default: function () {
return GlobalConfig.table.delayHover
},
},
params: Object,
}
var tableEmits = [
'update:data',
'keydown-start',
'keydown',
'keydown-end',
'paste',
'copy',
'cut',
'current-change',
'radio-change',
'checkbox-change',
'checkbox-all',
'checkbox-range-start',
'checkbox-range-change',
'checkbox-range-end',
'checkbox-range-select',
'cell-click',
'cell-dblclick',
'cell-menu',
'cell-mouseenter',
'cell-mouseleave',
'cell-selected',
'header-cell-click',
'header-cell-dblclick',
'header-cell-menu',
'footer-cell-click',
'footer-cell-dblclick',
'footer-cell-menu',
'clear-merge',
'sort-change',
'clear-sort',
'filter-change',
'filter-visible',
'clear-filter',
'resizable-change',
'toggle-row-expand',
'toggle-tree-expand',
'menu-click',
'edit-closed',
'edit-actived',
'edit-disabled',
'valid-error',
'scroll',
'custom',
'change-fnr',
'open-fnr',
'fnr-change',
'fnr-find',
'fnr-find-all',
'fnr-replace',
'fnr-replace-all',
'cell-area-copy',
'cell-area-cut',
'cell-area-paste',
'cell-area-merge',
'clear-cell-area-merge',
'header-cell-area-selection',
'cell-area-selection-start',
'cell-area-selection-drag',
'cell-area-selection-end',
'cell-area-extension-start',
'cell-area-extension-drag',
'cell-area-extension-end',
'cell-area-selection-all-start',
'cell-area-selection-all-end',
'cell-area-arrows-start',
'cell-area-arrows-end',
'active-cell-change-start',
'active-cell-change-end',
]
var __assign$c =
(globalThis && globalThis.__assign) ||
function () {
__assign$c =
Object.assign ||
function (t3) {
for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
s2 = arguments[i2]
for (var p2 in s2)
if (Object.prototype.hasOwnProperty.call(s2, p2)) t3[p2] = s2[p2]
}
return t3
}
return __assign$c.apply(this, arguments)
}
var __spreadArray$3 =
(globalThis && globalThis.__spreadArray) ||
function (to, from, pack2) {
if (pack2 || arguments.length === 2)
for (var i2 = 0, l2 = from.length, ar2; i2 < l2; i2++) {
if (ar2 || !(i2 in from)) {
if (!ar2) ar2 = Array.prototype.slice.call(from, 0, i2)
ar2[i2] = from[i2]
}
}
return to.concat(ar2 || Array.prototype.slice.call(from))
}
var tableComponentPropKeys = Object.keys(tableProps)
var tableComponentMethodKeys = [
'clearAll',
'syncData',
'updateData',
'loadData',
'reloadData',
'reloadRow',
'loadColumn',
'reloadColumn',
'getRowNode',
'getColumnNode',
'getRowIndex',
'getVTRowIndex',
'getVMRowIndex',
'getColumnIndex',
'getVTColumnIndex',
'getVMColumnIndex',
'createData',
'createRow',
'revertData',
'clearData',
'isInsertByRow',
'isUpdateByRow',
'getColumns',
'getColumnById',
'getColumnByField',
'getTableColumn',
'getData',
'getCheckboxRecords',
'getParentRow',
'getRowSeq',
'getRowById',
'getRowid',
'getTableData',
'setColumnFixed',
'clearColumnFixed',
'setColumnWidth',
'getColumnWidth',
'hideColumn',
'showColumn',
'resetColumn',
'refreshColumn',
'refreshScroll',
'recalculate',
'closeTooltip',
'isAllCheckboxChecked',
'isAllCheckboxIndeterminate',
'getCheckboxIndeterminateRecords',
'setCheckboxRow',
'isCheckedByCheckboxRow',
'isIndeterminateByCheckboxRow',
'toggleCheckboxRow',
'setAllCheckboxRow',
'getRadioReserveRecord',
'clearRadioReserve',
'getCheckboxReserveRecords',
'clearCheckboxReserve',
'toggleAllCheckboxRow',
'clearCheckboxRow',
'setCurrentRow',
'isCheckedByRadioRow',
'setRadioRow',
'clearCurrentRow',
'clearRadioRow',
'getCurrentRecord',
'getRadioRecord',
'getCurrentColumn',
'setCurrentColumn',
'clearCurrentColumn',
'sort',
'clearSort',
'isSort',
'getSortColumns',
'closeFilter',
'isFilter',
'isActiveFilterByColumn',
'isRowExpandLoaded',
'clearRowExpandLoaded',
'reloadRowExpand',
'reloadRowExpand',
'toggleRowExpand',
'setAllRowExpand',
'setRowExpand',
'isExpandByRow',
'clearRowExpand',
'clearRowExpandReserve',
'getRowExpandRecords',
'getTreeExpandRecords',
'isTreeExpandLoaded',
'clearTreeExpandLoaded',
'reloadTreeExpand',
'reloadTreeChilds',
'toggleTreeExpand',
'setAllTreeExpand',
'setTreeExpand',
'isTreeExpandByRow',
'clearTreeExpand',
'clearTreeExpandReserve',
'getScroll',
'scrollTo',
'scrollToRow',
'scrollToColumn',
'clearScroll',
'updateFooter',
'updateStatus',
'setMergeCells',
'removeInsertRow',
'removeMergeCells',
'getMergeCells',
'clearMergeCells',
'setMergeFooterItems',
'removeMergeFooterItems',
'getMergeFooterItems',
'clearMergeFooterItems',
'openTooltip',
'focus',
'blur',
'connect',
]
var gridComponentEmits = __spreadArray$3(
__spreadArray$3([], tableEmits, true),
[
'page-change',
'form-submit',
'form-submit-invalid',
'form-reset',
'form-collapse',
'form-toggle-collapse',
'proxy-query',
'proxy-delete',
'proxy-save',
'toolbar-button-click',
'toolbar-tool-click',
'zoom',
],
false
)
var VxeGridComponent = defineComponent({
name: 'VxeGrid',
props: __assign$c(__assign$c({}, tableProps), {
columns: Array,
pagerConfig: Object,
proxyConfig: Object,
toolbarConfig: Object,
formConfig: Object,
zoomConfig: Object,
size: {
type: String,
default: function () {
return GlobalConfig.grid.size || GlobalConfig.size
},
},
}),
emits: gridComponentEmits,
setup: function (props2, context2) {
var slots = context2.slots,
emit2 = context2.emit
var xID = xeUtils.uniqueId()
var instance = getCurrentInstance()
var computeSize = useSize(props2)
var reactData = reactive({
tableLoading: false,
proxyInited: false,
isZMax: false,
tableData: [],
pendingRecords: [],
filterData: [],
formData: {},
sortData: [],
tZindex: 0,
tablePage: {
total: 0,
pageSize: GlobalConfig.pager.pageSize || 10,
currentPage: 1,
},
})
var refElem = ref()
var refTable = ref()
var refForm = ref()
var refToolbar = ref()
var refPager = ref()
var refFormWrapper = ref()
var refToolbarWrapper = ref()
var refTopWrapper = ref()
var refBottomWrapper = ref()
var refPagerWrapper = ref()
var extendTableMethods = function (methodKeys) {
var funcs = {}
methodKeys.forEach(function (name2) {
funcs[name2] = function () {
var args = []
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i]
}
var $xetable = refTable.value
if ($xetable && $xetable[name2]) {
return $xetable[name2].apply($xetable, args)
}
}
})
return funcs
}
var gridExtendTableMethods = extendTableMethods(tableComponentMethodKeys)
tableComponentMethodKeys.forEach(function (name2) {
gridExtendTableMethods[name2] = function () {
var args = []
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i]
}
var $xetable = refTable.value
if ($xetable && $xetable[name2]) {
return $xetable && $xetable[name2].apply($xetable, args)
}
}
})
var computeProxyOpts = computed(function () {
return Object.assign(
{},
GlobalConfig.grid.proxyConfig,
props2.proxyConfig
)
})
var computeIsMsg = computed(function () {
var proxyOpts = computeProxyOpts.value
return proxyOpts.message !== false
})
var computePagerOpts = computed(function () {
return Object.assign(
{},
GlobalConfig.grid.pagerConfig,
props2.pagerConfig
)
})
var computeFormOpts = computed(function () {
return Object.assign({}, GlobalConfig.grid.formConfig, props2.formConfig)
})
var computeToolbarOpts = computed(function () {
return Object.assign(
{},
GlobalConfig.grid.toolbarConfig,
props2.toolbarConfig
)
})
var computeZoomOpts = computed(function () {
return Object.assign({}, GlobalConfig.grid.zoomConfig, props2.zoomConfig)
})
var computeStyles2 = computed(function () {
return reactData.isZMax ? { zIndex: reactData.tZindex } : null
})
var computeTableExtendProps = computed(function () {
var rest = {}
var gridProps = props2
tableComponentPropKeys.forEach(function (key2) {
rest[key2] = gridProps[key2]
})
return rest
})
var refMaps = {
refElem,
refTable,
refForm,
refToolbar,
refPager,
}
var computeMaps = {
computeProxyOpts,
computePagerOpts,
computeFormOpts,
computeToolbarOpts,
computeZoomOpts,
}
var $xegrid = {
xID,
props: props2,
context: context2,
instance,
reactData,
getRefMaps: function () {
return refMaps
},
getComputeMaps: function () {
return computeMaps
},
}
var gridMethods = {}
var handleRowClassName = function (params2) {
var pendingRecords = reactData.pendingRecords
var rowClassName = props2.rowClassName
var clss = []
if (
pendingRecords.some(function (item2) {
return item2 === params2.row
})
) {
clss.push('row--pending')
}
clss.push(
rowClassName
? xeUtils.isFunction(rowClassName)
? rowClassName(params2)
: rowClassName
: ''
)
return clss
}
var handleBeforeEditMethod = function (params2) {
var editConfig = props2.editConfig
var pendingRecords = reactData.pendingRecords
var $xetable = refTable.value
var beforeEditMethod = editConfig
? editConfig.beforeEditMethod || editConfig.activeMethod
: null
if ($xetable.findRowIndexOf(pendingRecords, params2.row) === -1) {
return (
!beforeEditMethod ||
beforeEditMethod(
__assign$c(__assign$c({}, params2), { $grid: $xegrid })
)
)
}
return false
}
var computeTableProps = computed(function () {
var seqConfig = props2.seqConfig,
pagerConfig = props2.pagerConfig,
loading2 = props2.loading,
editConfig = props2.editConfig,
proxyConfig = props2.proxyConfig
var isZMax = reactData.isZMax,
tableLoading = reactData.tableLoading,
tablePage = reactData.tablePage,
tableData2 = reactData.tableData
var tableExtendProps = computeTableExtendProps.value
var proxyOpts = computeProxyOpts.value
var pagerOpts = computePagerOpts.value
var tableProps2 = Object.assign({}, tableExtendProps)
if (isZMax) {
if (tableExtendProps.maxHeight) {
tableProps2.maxHeight = 'auto'
} else {
tableProps2.height = 'auto'
}
}
if (proxyConfig && isEnableConf(proxyOpts)) {
tableProps2.loading = loading2 || tableLoading
tableProps2.data = tableData2
tableProps2.rowClassName = handleRowClassName
if (pagerConfig && proxyOpts.seq && isEnableConf(pagerOpts)) {
tableProps2.seqConfig = Object.assign({}, seqConfig, {
startIndex: (tablePage.currentPage - 1) * tablePage.pageSize,
})
}
}
if (editConfig) {
tableProps2.editConfig = Object.assign({}, editConfig, {
beforeEditMethod: handleBeforeEditMethod,
})
}
return tableProps2
})
var initToolbar = function () {
var toolbarOpts = computeToolbarOpts.value
if (props2.toolbarConfig && isEnableConf(toolbarOpts)) {
nextTick(function () {
var $xetable = refTable.value
var $xetoolbar = refToolbar.value
if ($xetable && $xetoolbar) {
$xetable.connect($xetoolbar)
}
})
}
}
var initPages = function () {
var tablePage = reactData.tablePage
var pagerConfig = props2.pagerConfig
var pagerOpts = computePagerOpts.value
var currentPage2 = pagerOpts.currentPage,
pageSize = pagerOpts.pageSize
if (pagerConfig && isEnableConf(pagerOpts)) {
if (currentPage2) {
tablePage.currentPage = currentPage2
}
if (pageSize) {
tablePage.pageSize = pageSize
}
}
}
var triggerPendingEvent = function (code2) {
var pendingRecords = reactData.pendingRecords
var isMsg = computeIsMsg.value
var $xetable = refTable.value
var selectRecords = $xetable.getCheckboxRecords()
if (selectRecords.length) {
var plus_1 = []
var minus_1 = []
selectRecords.forEach(function (data2) {
if (
pendingRecords.some(function (item2) {
return data2 === item2
})
) {
minus_1.push(data2)
} else {
plus_1.push(data2)
}
})
if (minus_1.length) {
reactData.pendingRecords = pendingRecords
.filter(function (item2) {
return $xetable.findRowIndexOf(minus_1, item2) === -1
})
.concat(plus_1)
} else if (plus_1.length) {
reactData.pendingRecords = pendingRecords.concat(plus_1)
}
gridExtendTableMethods.clearCheckboxRow()
} else {
if (isMsg) {
VXETable.modal.message({
id: code2,
content: GlobalConfig.i18n('vxe.grid.selectOneRecord'),
status: 'warning',
})
}
}
}
var getRespMsg = function (rest, defaultMsg) {
var proxyOpts = computeProxyOpts.value
var _a2 = proxyOpts.props,
proxyProps = _a2 === void 0 ? {} : _a2
var msg
if (rest && proxyProps.message) {
msg = xeUtils.get(rest, proxyProps.message)
}
return msg || GlobalConfig.i18n(defaultMsg)
}
var handleDeleteRow = function (code2, alertKey, callback) {
var isMsg = computeIsMsg.value
var selectRecords = gridExtendTableMethods.getCheckboxRecords()
if (isMsg) {
if (selectRecords.length) {
return VXETable.modal
.confirm({
id: 'cfm_'.concat(code2),
content: GlobalConfig.i18n(alertKey),
escClosable: true,
})
.then(function (type4) {
if (type4 === 'confirm') {
return callback()
}
})
} else {
VXETable.modal.message({
id: 'msg_'.concat(code2),
content: GlobalConfig.i18n('vxe.grid.selectOneRecord'),
status: 'warning',
})
}
} else {
if (selectRecords.length) {
callback()
}
}
return Promise.resolve()
}
var pageChangeEvent = function (params2) {
var proxyConfig = props2.proxyConfig
var tablePage = reactData.tablePage
var currentPage2 = params2.currentPage,
pageSize = params2.pageSize
var proxyOpts = computeProxyOpts.value
tablePage.currentPage = currentPage2
tablePage.pageSize = pageSize
gridMethods.dispatchEvent('page-change', params2)
if (proxyConfig && isEnableConf(proxyOpts)) {
gridMethods.commitProxy('query').then(function (rest) {
gridMethods.dispatchEvent('proxy-query', rest, params2.$event)
})
}
}
var sortChangeEvent = function (params2) {
var $xetable = refTable.value
var proxyConfig = props2.proxyConfig
var computeSortOpts = $xetable.getComputeMaps().computeSortOpts
var proxyOpts = computeProxyOpts.value
var sortOpts = computeSortOpts.value
if (sortOpts.remote) {
reactData.sortData = params2.sortList
if (proxyConfig && isEnableConf(proxyOpts)) {
reactData.tablePage.currentPage = 1
gridMethods.commitProxy('query').then(function (rest) {
gridMethods.dispatchEvent('proxy-query', rest, params2.$event)
})
}
}
gridMethods.dispatchEvent('sort-change', params2)
}
var filterChangeEvent = function (params2) {
var $xetable = refTable.value
var proxyConfig = props2.proxyConfig
var computeFilterOpts = $xetable.getComputeMaps().computeFilterOpts
var proxyOpts = computeProxyOpts.value
var filterOpts = computeFilterOpts.value
if (filterOpts.remote) {
reactData.filterData = params2.filterList
if (proxyConfig && isEnableConf(proxyOpts)) {
reactData.tablePage.currentPage = 1
gridMethods.commitProxy('query').then(function (rest) {
gridMethods.dispatchEvent('proxy-query', rest, params2.$event)
})
}
}
gridMethods.dispatchEvent('filter-change', params2)
}
var submitFormEvent = function (params2) {
var proxyConfig = props2.proxyConfig
var proxyOpts = computeProxyOpts.value
if (proxyConfig && isEnableConf(proxyOpts)) {
gridMethods.commitProxy('reload').then(function (rest) {
gridMethods.dispatchEvent(
'proxy-query',
__assign$c(__assign$c({}, rest), { isReload: true }),
params2.$event
)
})
}
gridMethods.dispatchEvent('form-submit', params2)
}
var resetFormEvent = function (params2) {
var proxyConfig = props2.proxyConfig
var proxyOpts = computeProxyOpts.value
if (proxyConfig && isEnableConf(proxyOpts)) {
gridMethods.commitProxy('reload').then(function (rest) {
gridMethods.dispatchEvent(
'proxy-query',
__assign$c(__assign$c({}, rest), { isReload: true }),
params2.$event
)
})
}
gridMethods.dispatchEvent('form-reset', params2)
}
var submitInvalidEvent = function (params2) {
gridMethods.dispatchEvent('form-submit-invalid', params2)
}
var collapseEvent = function (params2) {
nextTick(function () {
return gridExtendTableMethods.recalculate(true)
})
gridMethods.dispatchEvent('form-toggle-collapse', params2)
gridMethods.dispatchEvent('form-collapse', params2)
}
var handleZoom = function (isMax) {
var isZMax = reactData.isZMax
if (isMax ? !isZMax : isZMax) {
reactData.isZMax = !isZMax
if (reactData.tZindex < getLastZIndex()) {
reactData.tZindex = nextZIndex()
}
}
return nextTick()
.then(function () {
return gridExtendTableMethods.recalculate(true)
})
.then(function () {
return reactData.isZMax
})
}
var getFuncSlot = function (optSlots, slotKey) {
var funcSlot = optSlots[slotKey]
if (funcSlot) {
if (xeUtils.isString(funcSlot)) {
if (slots[funcSlot]) {
return slots[funcSlot]
}
} else {
return funcSlot
}
}
return null
}
var renderForms = function () {
var formConfig = props2.formConfig,
proxyConfig = props2.proxyConfig
var formData = reactData.formData
var proxyOpts = computeProxyOpts.value
var formOpts = computeFormOpts.value
var restVNs = []
if ((formConfig && isEnableConf(formOpts)) || slots.form) {
var slotVNs = []
if (slots.form) {
slotVNs = slots.form({ $grid: $xegrid })
} else {
if (formOpts.items) {
var formSlots_1 = {}
if (!formOpts.inited) {
formOpts.inited = true
var beforeItem_1 = proxyOpts.beforeItem
if (proxyOpts && beforeItem_1) {
formOpts.items.forEach(function (item2) {
beforeItem_1({ $grid: $xegrid, item: item2 })
})
}
}
formOpts.items.forEach(function (item2) {
xeUtils.each(item2.slots, function (func) {
if (!xeUtils.isFunction(func)) {
if (slots[func]) {
formSlots_1[func] = slots[func]
}
}
})
})
slotVNs.push(
h$4(
resolveComponent('vxe-form'),
__assign$c(
__assign$c(
{ ref: refForm },
Object.assign({}, formOpts, {
data:
proxyConfig && isEnableConf(proxyOpts) && proxyOpts.form
? formData
: formOpts.data,
})
),
{
onSubmit: submitFormEvent,
onReset: resetFormEvent,
onSubmitInvalid: submitInvalidEvent,
onCollapse: collapseEvent,
}
),
formSlots_1
)
)
}
}
restVNs.push(
h$4(
'div',
{
ref: refFormWrapper,
class: 'vxe-grid--form-wrapper',
},
slotVNs
)
)
}
return restVNs
}
var renderToolbars = function () {
var toolbarConfig = props2.toolbarConfig
var toolbarOpts = computeToolbarOpts.value
var restVNs = []
if ((toolbarConfig && isEnableConf(toolbarOpts)) || slots.toolbar) {
var slotVNs = []
if (slots.toolbar) {
slotVNs = slots.toolbar({ $grid: $xegrid })
} else {
var toolbarOptSlots = toolbarOpts.slots
var buttonsSlot = void 0
var toolsSlot = void 0
var toolbarSlots = {}
if (toolbarOptSlots) {
buttonsSlot = getFuncSlot(toolbarOptSlots, 'buttons')
toolsSlot = getFuncSlot(toolbarOptSlots, 'tools')
if (buttonsSlot) {
toolbarSlots.buttons = buttonsSlot
}
if (toolsSlot) {
toolbarSlots.tools = toolsSlot
}
}
slotVNs.push(
h$4(
resolveComponent('vxe-toolbar'),
__assign$c({ ref: refToolbar }, toolbarOpts),
toolbarSlots
)
)
}
restVNs.push(
h$4(
'div',
{
ref: refToolbarWrapper,
class: 'vxe-grid--toolbar-wrapper',
},
slotVNs
)
)
}
return restVNs
}
var renderTops = function () {
if (slots.top) {
return [
h$4(
'div',
{
ref: refTopWrapper,
class: 'vxe-grid--top-wrapper',
},
slots.top({ $grid: $xegrid })
),
]
}
return []
}
var tableCompEvents = {}
tableEmits.forEach(function (name2) {
var type4 = xeUtils.camelCase('on-'.concat(name2))
tableCompEvents[type4] = function () {
var args = []
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i]
}
return emit2.apply(void 0, __spreadArray$3([name2], args, false))
}
})
var renderTables = function () {
var proxyConfig = props2.proxyConfig
var tableProps2 = computeTableProps.value
var proxyOpts = computeProxyOpts.value
var tableOns = Object.assign({}, tableCompEvents)
var emptySlot = slots.empty
var loadingSlot = slots.loading
if (proxyConfig && isEnableConf(proxyOpts)) {
if (proxyOpts.sort) {
tableOns.onSortChange = sortChangeEvent
}
if (proxyOpts.filter) {
tableOns.onFilterChange = filterChangeEvent
}
}
var slotObj = {}
if (emptySlot) {
slotObj.empty = function () {
return emptySlot({})
}
}
if (loadingSlot) {
slotObj.loading = function () {
return loadingSlot({})
}
}
return [
h$4(
resolveComponent('vxe-table'),
__assign$c(__assign$c({ ref: refTable }, tableProps2), tableOns),
slotObj
),
]
}
var renderBottoms = function () {
if (slots.bottom) {
return [
h$4(
'div',
{
ref: refBottomWrapper,
class: 'vxe-grid--bottom-wrapper',
},
slots.bottom({ $grid: $xegrid })
),
]
}
return []
}
var renderPagers = function () {
var proxyConfig = props2.proxyConfig,
pagerConfig = props2.pagerConfig
var proxyOpts = computeProxyOpts.value
var pagerOpts = computePagerOpts.value
var restVNs = []
if ((pagerConfig && isEnableConf(pagerOpts)) || slots.pager) {
var slotVNs = []
if (slots.pager) {
slotVNs = slots.pager({ $grid: $xegrid })
} else {
var pagerOptSlots = pagerOpts.slots
var pagerSlots = {}
var leftSlot = void 0
var rightSlot = void 0
if (pagerOptSlots) {
leftSlot = getFuncSlot(pagerOptSlots, 'left')
rightSlot = getFuncSlot(pagerOptSlots, 'right')
if (leftSlot) {
pagerSlots.left = leftSlot
}
if (rightSlot) {
pagerSlots.right = rightSlot
}
}
slotVNs.push(
h$4(
resolveComponent('vxe-pager'),
__assign$c(
__assign$c(
__assign$c({ ref: refPager }, pagerOpts),
proxyConfig && isEnableConf(proxyOpts)
? reactData.tablePage
: {}
),
{ onPageChange: pageChangeEvent }
),
pagerSlots
)
)
}
restVNs.push(
h$4(
'div',
{
ref: refPagerWrapper,
class: 'vxe-grid--pager-wrapper',
},
slotVNs
)
)
}
return restVNs
}
var initProxy = function () {
var proxyConfig = props2.proxyConfig,
formConfig = props2.formConfig
var proxyInited = reactData.proxyInited
var proxyOpts = computeProxyOpts.value
var formOpts = computeFormOpts.value
if (proxyConfig && isEnableConf(proxyOpts)) {
if (
formConfig &&
isEnableConf(formOpts) &&
proxyOpts.form &&
formOpts.items
) {
var formData_1 = {}
formOpts.items.forEach(function (item2) {
var field2 = item2.field,
itemRender = item2.itemRender
if (field2) {
var itemValue = null
if (itemRender) {
var defaultValue = itemRender.defaultValue
if (xeUtils.isFunction(defaultValue)) {
itemValue = defaultValue({ item: item2 })
} else if (!xeUtils.isUndefined(defaultValue)) {
itemValue = defaultValue
}
}
formData_1[field2] = itemValue
}
})
reactData.formData = formData_1
}
if (!proxyInited) {
reactData.proxyInited = true
if (proxyOpts.autoLoad !== false) {
nextTick()
.then(function () {
return gridMethods.commitProxy('_init')
})
.then(function (rest) {
gridMethods.dispatchEvent(
'proxy-query',
__assign$c(__assign$c({}, rest), { isInited: true }),
new Event('init')
)
})
}
}
}
}
gridMethods = {
dispatchEvent: function (type4, params2, evnt) {
emit2(type4, Object.assign({ $grid: $xegrid, $event: evnt }, params2))
},
commitProxy: function (proxyTarget) {
var args = []
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i]
}
var toolbarConfig = props2.toolbarConfig,
pagerConfig = props2.pagerConfig,
editRules = props2.editRules
var tablePage = reactData.tablePage,
formData = reactData.formData
var isMsg = computeIsMsg.value
var proxyOpts = computeProxyOpts.value
var pagerOpts = computePagerOpts.value
var toolbarOpts = computeToolbarOpts.value
var beforeQuery = proxyOpts.beforeQuery,
afterQuery = proxyOpts.afterQuery,
beforeDelete = proxyOpts.beforeDelete,
afterDelete = proxyOpts.afterDelete,
beforeSave = proxyOpts.beforeSave,
afterSave = proxyOpts.afterSave,
_a2 = proxyOpts.ajax,
ajax = _a2 === void 0 ? {} : _a2,
_b2 = proxyOpts.props,
proxyProps = _b2 === void 0 ? {} : _b2
var $xetable = refTable.value
var button = null
var code2 = null
if (xeUtils.isString(proxyTarget)) {
var buttons = toolbarOpts.buttons
var matchObj =
toolbarConfig && isEnableConf(toolbarOpts) && buttons
? xeUtils.findTree(
buttons,
function (item2) {
return item2.code === proxyTarget
},
{ children: 'dropdowns' }
)
: null
button = matchObj ? matchObj.item : null
code2 = proxyTarget
} else {
button = proxyTarget
code2 = button.code
}
var btnParams = button ? button.params : null
switch (code2) {
case 'insert':
return $xetable.insert({})
case 'insert_actived':
return $xetable.insert({}).then(function (_a3) {
var row = _a3.row
return $xetable.setEditRow(row)
})
case 'mark_cancel':
triggerPendingEvent(code2)
break
case 'remove':
return handleDeleteRow(
code2,
'vxe.grid.removeSelectRecord',
function () {
return $xetable.removeCheckboxRow()
}
)
case 'import':
$xetable.importData(btnParams)
break
case 'open_import':
$xetable.openImport(btnParams)
break
case 'export':
$xetable.exportData(btnParams)
break
case 'open_export':
$xetable.openExport(btnParams)
break
case 'reset_custom':
return $xetable.resetColumn(true)
case '_init':
case 'reload':
case 'query': {
var ajaxMethods = ajax.query
if (ajaxMethods) {
var isInited = code2 === '_init'
var isReload = code2 === 'reload'
var sortList2 = []
var filterList2 = []
var pageParams = {}
if (pagerConfig) {
if (isInited || isReload) {
tablePage.currentPage = 1
}
if (isEnableConf(pagerOpts)) {
pageParams = __assign$c({}, tablePage)
}
}
if (isInited) {
var computeSortOpts = $xetable.getComputeMaps().computeSortOpts
var sortOpts = computeSortOpts.value
var defaultSort = sortOpts.defaultSort
if (defaultSort) {
if (!xeUtils.isArray(defaultSort)) {
defaultSort = [defaultSort]
}
sortList2 = defaultSort.map(function (item2) {
return {
field: item2.field,
property: item2.field,
order: item2.order,
}
})
}
filterList2 = $xetable.getCheckedFilters()
} else {
if (isReload) {
reactData.pendingRecords = []
$xetable.clearAll()
} else {
sortList2 = $xetable.getSortColumns()
filterList2 = $xetable.getCheckedFilters()
}
}
var commitParams = {
code: code2,
button,
isInited,
isReload,
$grid: $xegrid,
page: pageParams,
sort: sortList2.length ? sortList2[0] : {},
sorts: sortList2,
filters: filterList2,
form: formData,
options: ajaxMethods,
}
reactData.sortData = sortList2
reactData.filterData = filterList2
reactData.tableLoading = true
var applyArgs_1 = [commitParams].concat(args)
return Promise.resolve(
(beforeQuery || ajaxMethods).apply(void 0, applyArgs_1)
)
.then(function (rest) {
reactData.tableLoading = false
if (rest) {
if (pagerConfig && isEnableConf(pagerOpts)) {
var total2 =
xeUtils.get(rest, proxyProps.total || 'page.total') || 0
tablePage.total = xeUtils.toNumber(total2)
reactData.tableData =
xeUtils.get(rest, proxyProps.result || 'result') || []
var pageCount = Math.max(
Math.ceil(total2 / tablePage.pageSize),
1
)
if (tablePage.currentPage > pageCount) {
tablePage.currentPage = pageCount
}
} else {
reactData.tableData =
(proxyProps.list
? xeUtils.get(rest, proxyProps.list)
: rest) || []
}
} else {
reactData.tableData = []
}
if (afterQuery) {
afterQuery.apply(void 0, applyArgs_1)
}
return { status: true }
})
.catch(function () {
reactData.tableLoading = false
return { status: false }
})
}
break
}
case 'delete': {
var ajaxMethods_1 = ajax.delete
if (ajaxMethods_1) {
var selectRecords_1 = gridExtendTableMethods.getCheckboxRecords()
var removeRecords_1 = selectRecords_1.filter(function (row) {
return !$xetable.isInsertByRow(row)
})
var body = { removeRecords: removeRecords_1 }
var commitParams = {
$grid: $xegrid,
code: code2,
button,
body,
form: formData,
options: ajaxMethods_1,
}
var applyArgs_2 = [commitParams].concat(args)
if (selectRecords_1.length) {
return handleDeleteRow(
code2,
'vxe.grid.deleteSelectRecord',
function () {
if (!removeRecords_1.length) {
return $xetable.remove(selectRecords_1)
}
reactData.tableLoading = true
return Promise.resolve(
(beforeDelete || ajaxMethods_1).apply(void 0, applyArgs_2)
)
.then(function (rest) {
reactData.tableLoading = false
reactData.pendingRecords =
reactData.pendingRecords.filter(function (row) {
return (
$xetable.findRowIndexOf(removeRecords_1, row) ===
-1
)
})
if (isMsg) {
VXETable.modal.message({
content: getRespMsg(rest, 'vxe.grid.delSuccess'),
status: 'success',
})
}
if (afterDelete) {
afterDelete.apply(void 0, applyArgs_2)
} else {
gridMethods.commitProxy('query')
}
return { status: true }
})
.catch(function (rest) {
reactData.tableLoading = false
if (isMsg) {
VXETable.modal.message({
id: code2,
content: getRespMsg(rest, 'vxe.grid.operError'),
status: 'error',
})
}
return { status: false }
})
}
)
} else {
if (isMsg) {
VXETable.modal.message({
id: code2,
content: GlobalConfig.i18n('vxe.grid.selectOneRecord'),
status: 'warning',
})
}
}
}
break
}
case 'save': {
var ajaxMethods_2 = ajax.save
if (ajaxMethods_2) {
var body_1 = Object.assign(
{ pendingRecords: reactData.pendingRecords },
$xetable.getRecordset()
)
var insertRecords_1 = body_1.insertRecords,
removeRecords_2 = body_1.removeRecords,
updateRecords_1 = body_1.updateRecords,
pendingRecords_1 = body_1.pendingRecords
var commitParams = {
$grid: $xegrid,
code: code2,
button,
body: body_1,
form: formData,
options: ajaxMethods_2,
}
var applyArgs_3 = [commitParams].concat(args)
if (insertRecords_1.length) {
body_1.pendingRecords = pendingRecords_1.filter(function (row) {
return $xetable.findRowIndexOf(insertRecords_1, row) === -1
})
}
if (pendingRecords_1.length) {
body_1.insertRecords = insertRecords_1.filter(function (row) {
return $xetable.findRowIndexOf(pendingRecords_1, row) === -1
})
}
var restPromise = Promise.resolve()
if (editRules) {
restPromise = $xetable.validate(
body_1.insertRecords.concat(updateRecords_1)
)
}
return restPromise.then(function (errMap) {
if (errMap) {
return
}
if (
body_1.insertRecords.length ||
removeRecords_2.length ||
updateRecords_1.length ||
body_1.pendingRecords.length
) {
reactData.tableLoading = true
return Promise.resolve(
(beforeSave || ajaxMethods_2).apply(void 0, applyArgs_3)
)
.then(function (rest) {
reactData.tableLoading = false
reactData.pendingRecords = []
if (isMsg) {
VXETable.modal.message({
content: getRespMsg(rest, 'vxe.grid.saveSuccess'),
status: 'success',
})
}
if (afterSave) {
afterSave.apply(void 0, applyArgs_3)
} else {
gridMethods.commitProxy('query')
}
return { status: true }
})
.catch(function (rest) {
reactData.tableLoading = false
if (isMsg) {
VXETable.modal.message({
id: code2,
content: getRespMsg(rest, 'vxe.grid.operError'),
status: 'error',
})
}
return { status: false }
})
} else {
if (isMsg) {
VXETable.modal.message({
id: code2,
content: GlobalConfig.i18n('vxe.grid.dataUnchanged'),
status: 'info',
})
}
}
})
}
break
}
default: {
var gCommandOpts = VXETable.commands.get(code2)
if (gCommandOpts) {
if (gCommandOpts.commandMethod) {
gCommandOpts.commandMethod.apply(
gCommandOpts,
__spreadArray$3(
[{ code: code2, button, $grid: $xegrid, $table: $xetable }],
args,
false
)
)
}
}
}
}
return nextTick()
},
zoom: function () {
if (reactData.isZMax) {
return gridMethods.revert()
}
return gridMethods.maximize()
},
isMaximized: function () {
return reactData.isZMax
},
maximize: function () {
return handleZoom(true)
},
revert: function () {
return handleZoom()
},
getFormItems: function (itemIndex) {
var formOpts = computeFormOpts.value
var formConfig = props2.formConfig
var items = formOpts.items
var itemList = []
xeUtils.eachTree(
formConfig && isEnableConf(formOpts) && items ? items : [],
function (item2) {
itemList.push(item2)
},
{ children: 'children' }
)
return xeUtils.isUndefined(itemIndex) ? itemList : itemList[itemIndex]
},
getPendingRecords: function () {
return reactData.pendingRecords
},
getProxyInfo: function () {
if (props2.proxyConfig) {
var sortData2 = reactData.sortData
return {
data: reactData.tableData,
filter: reactData.filterData,
form: reactData.formData,
sort: sortData2.length ? sortData2[0] : {},
sorts: sortData2,
pager: reactData.tablePage,
pendingRecords: reactData.pendingRecords,
}
}
return null
},
}
var gridPrivateMethods = {
extendTableMethods,
callSlot: function (slotFunc, params2) {
if (slotFunc) {
if (xeUtils.isString(slotFunc)) {
slotFunc = slots[slotFunc] || null
}
if (xeUtils.isFunction(slotFunc)) {
return getSlotVNs(slotFunc(params2))
}
}
return []
},
getExcludeHeight: function () {
var height = props2.height
var isZMax = reactData.isZMax
var el2 = refElem.value
var formWrapper = refFormWrapper.value
var toolbarWrapper = refToolbarWrapper.value
var topWrapper = refTopWrapper.value
var bottomWrapper = refBottomWrapper.value
var pagerWrapper = refPagerWrapper.value
var parentPaddingSize =
isZMax || height !== 'auto'
? 0
: getPaddingTopBottomSize(el2.parentNode)
return (
parentPaddingSize +
getPaddingTopBottomSize(el2) +
getOffsetHeight(formWrapper) +
getOffsetHeight(toolbarWrapper) +
getOffsetHeight(topWrapper) +
getOffsetHeight(bottomWrapper) +
getOffsetHeight(pagerWrapper)
)
},
getParentHeight: function () {
var el2 = refElem.value
if (el2) {
return (
(reactData.isZMax
? getDomNode().visibleHeight
: xeUtils.toNumber(getComputedStyle(el2.parentNode).height)) -
gridPrivateMethods.getExcludeHeight()
)
}
return 0
},
triggerToolbarCommitEvent: function (params2, evnt) {
var code2 = params2.code
return gridMethods.commitProxy(params2, evnt).then(function (rest) {
if (
code2 &&
rest &&
rest.status &&
['query', 'reload', 'delete', 'save'].includes(code2)
) {
gridMethods.dispatchEvent(
code2 === 'delete' || code2 === 'save'
? 'proxy-'.concat(code2)
: 'proxy-query',
__assign$c(__assign$c({}, rest), {
isReload: code2 === 'reload',
}),
evnt
)
}
})
},
triggerToolbarBtnEvent: function (button, evnt) {
gridPrivateMethods.triggerToolbarCommitEvent(button, evnt)
gridMethods.dispatchEvent(
'toolbar-button-click',
{ code: button.code, button },
evnt
)
},
triggerToolbarTolEvent: function (tool, evnt) {
gridPrivateMethods.triggerToolbarCommitEvent(tool, evnt)
gridMethods.dispatchEvent('toolbar-tool-click', {
code: tool.code,
tool,
$event: evnt,
})
},
triggerZoomEvent: function (evnt) {
gridMethods.zoom()
gridMethods.dispatchEvent(
'zoom',
{ type: reactData.isZMax ? 'max' : 'revert' },
evnt
)
},
}
Object.assign(
$xegrid,
gridExtendTableMethods,
gridMethods,
gridPrivateMethods
)
var columnFlag = ref(0)
watch$1(
function () {
return props2.columns ? props2.columns.length : -1
},
function () {
columnFlag.value++
}
)
watch$1(
function () {
return props2.columns
},
function () {
columnFlag.value++
}
)
watch$1(columnFlag, function () {
nextTick(function () {
return $xegrid.loadColumn(props2.columns || [])
})
})
watch$1(
function () {
return props2.toolbarConfig
},
function () {
initToolbar()
}
)
watch$1(
function () {
return props2.pagerConfig
},
function () {
initPages()
}
)
watch$1(
function () {
return props2.proxyConfig
},
function () {
initProxy()
}
)
var handleGlobalKeydownEvent = function (evnt) {
var zoomOpts = computeZoomOpts.value
var isEsc = hasEventKey(evnt, EVENT_KEYS.ESCAPE)
if (isEsc && reactData.isZMax && zoomOpts.escRestore !== false) {
gridPrivateMethods.triggerZoomEvent(evnt)
}
}
VXETable.hooks.forEach(function (options2) {
var setupGrid = options2.setupGrid
if (setupGrid) {
var hookRest = setupGrid($xegrid)
if (hookRest && xeUtils.isObject(hookRest)) {
Object.assign($xegrid, hookRest)
}
}
})
initPages()
onMounted(function () {
nextTick(function () {
var data2 = props2.data,
columns = props2.columns,
proxyConfig = props2.proxyConfig
var proxyOpts = computeProxyOpts.value
var formOpts = computeFormOpts.value
if (
isEnableConf(proxyConfig) &&
(data2 || (proxyOpts.form && formOpts.data))
) {
errLog('vxe.error.errConflicts', ['grid.data', 'grid.proxy-config'])
}
if (columns && columns.length) {
$xegrid.loadColumn(columns)
}
initToolbar()
})
GlobalEvent.on($xegrid, 'keydown', handleGlobalKeydownEvent)
})
onUnmounted(function () {
GlobalEvent.off($xegrid, 'keydown')
})
nextTick(function () {
initProxy()
})
var renderVN = function () {
var _a2
var vSize = computeSize.value
var styles = computeStyles2.value
return h$4(
'div',
{
ref: refElem,
class: [
'vxe-grid',
((_a2 = {}),
(_a2['size--'.concat(vSize)] = vSize),
(_a2['is--animat'] = !!props2.animat),
(_a2['is--round'] = props2.round),
(_a2['is--maximize'] = reactData.isZMax),
(_a2['is--loading'] = props2.loading || reactData.tableLoading),
_a2),
],
style: styles,
},
renderForms().concat(
renderToolbars(),
renderTops(),
renderTables(),
renderBottoms(),
renderPagers()
)
)
}
$xegrid.renderVN = renderVN
provide('$xegrid', $xegrid)
return $xegrid
},
render: function () {
return this.renderVN()
},
})
var VxeGrid = Object.assign(VxeGridComponent, {
install: function (app2) {
app2.component(VxeGridComponent.name, VxeGridComponent)
},
})
var Grid$4 = VxeGrid
dynamicApp.component(VxeGridComponent.name, VxeGridComponent)
var __assign$b =
(globalThis && globalThis.__assign) ||
function () {
__assign$b =
Object.assign ||
function (t3) {
for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
s2 = arguments[i2]
for (var p2 in s2)
if (Object.prototype.hasOwnProperty.call(s2, p2)) t3[p2] = s2[p2]
}
return t3
}
return __assign$b.apply(this, arguments)
}
var VxeToolbarComponent = defineComponent({
name: 'VxeToolbar',
props: {
loading: Boolean,
refresh: [Boolean, Object],
import: [Boolean, Object],
export: [Boolean, Object],
print: [Boolean, Object],
zoom: [Boolean, Object],
custom: [Boolean, Object],
buttons: {
type: Array,
default: function () {
return GlobalConfig.toolbar.buttons
},
},
tools: {
type: Array,
default: function () {
return GlobalConfig.toolbar.tools
},
},
perfect: {
type: Boolean,
default: function () {
return GlobalConfig.toolbar.perfect
},
},
size: {
type: String,
default: function () {
return GlobalConfig.toolbar.size || GlobalConfig.size
},
},
className: [String, Function],
},
emits: ['button-click', 'tool-click'],
setup: function (props2, context2) {
var slots = context2.slots,
emit2 = context2.emit
var xID = xeUtils.uniqueId()
var computeSize = useSize(props2)
var reactData = reactive({
isRefresh: false,
columns: [],
})
var refElem = ref()
var refCustomWrapper = ref()
var customStore = reactive({
isAll: false,
isIndeterminate: false,
activeBtn: false,
activeWrapper: false,
visible: false,
})
var refMaps = {
refElem,
}
var $xetoolbar = {
xID,
props: props2,
context: context2,
reactData,
getRefMaps: function () {
return refMaps
},
}
var toolbarMethods = {}
var $xegrid = inject('$xegrid', null)
var $xetable
var computeRefreshOpts = computed(function () {
return Object.assign({}, GlobalConfig.toolbar.refresh, props2.refresh)
})
var computeImportOpts = computed(function () {
return Object.assign({}, GlobalConfig.toolbar.import, props2.import)
})
var computeExportOpts = computed(function () {
return Object.assign({}, GlobalConfig.toolbar.export, props2.export)
})
var computePrintOpts = computed(function () {
return Object.assign({}, GlobalConfig.toolbar.print, props2.print)
})
var computeZoomOpts = computed(function () {
return Object.assign({}, GlobalConfig.toolbar.zoom, props2.zoom)
})
var computeCustomOpts = computed(function () {
return Object.assign({}, GlobalConfig.toolbar.custom, props2.custom)
})
var checkTable = function () {
if ($xetable) {
return true
}
errLog('vxe.error.barUnableLink')
}
var checkCustomStatus = function () {
var columns = reactData.columns
var computeTableCustomOpts = $xetable.getComputeMaps().computeCustomOpts
var tableCustomOpts = computeTableCustomOpts.value
var checkMethod = tableCustomOpts.checkMethod
customStore.isAll = columns.every(function (column) {
return (
(checkMethod ? !checkMethod({ column }) : false) || column.visible
)
})
customStore.isIndeterminate =
!customStore.isAll &&
columns.some(function (column) {
return (
(!checkMethod || checkMethod({ column })) &&
(column.visible || column.halfVisible)
)
})
}
var showCustom = function () {
customStore.visible = true
checkCustomStatus()
}
var handleTableCustom = function () {
$xetable.handleCustom()
}
var closeCustom = function () {
var custom = props2.custom
var customOpts = computeCustomOpts.value
if (customStore.visible) {
customStore.visible = false
if (custom && !customOpts.immediate) {
handleTableCustom()
}
}
}
var emitCustomEvent = function (type4, evnt) {
var comp = $xegrid || $xetable
comp.dispatchEvent('custom', { type: type4 }, evnt)
}
var confirmCustomEvent = function (evnt) {
closeCustom()
emitCustomEvent('confirm', evnt)
}
var customOpenEvent = function (evnt) {
if (checkTable()) {
if (!customStore.visible) {
showCustom()
emitCustomEvent('open', evnt)
}
}
}
var customColseEvent = function (evnt) {
if (customStore.visible) {
closeCustom()
emitCustomEvent('close', evnt)
}
}
var resetCustomEvent = function (evnt) {
$xetable.resetColumn(true)
closeCustom()
emitCustomEvent('reset', evnt)
}
var handleOptionCheck = function (column) {
var columns = reactData.columns
var matchObj = xeUtils.findTree(columns, function (item2) {
return item2 === column
})
if (matchObj && matchObj.parent) {
var parent_1 = matchObj.parent
if (parent_1.children && parent_1.children.length) {
parent_1.visible = parent_1.children.every(function (column2) {
return column2.visible
})
parent_1.halfVisible =
!parent_1.visible &&
parent_1.children.some(function (column2) {
return column2.visible || column2.halfVisible
})
handleOptionCheck(parent_1)
}
}
}
var changeCheckboxOption = function (column) {
var isChecked = !column.visible
var customOpts = computeCustomOpts.value
xeUtils.eachTree([column], function (item2) {
item2.visible = isChecked
item2.halfVisible = false
})
handleOptionCheck(column)
if (props2.custom && customOpts.immediate) {
handleTableCustom()
}
checkCustomStatus()
}
var changeFixedOption = function (column, colFixed) {
var computeIsMaxFixedColumn =
$xetable.getComputeMaps().computeIsMaxFixedColumn
var isMaxFixedColumn = computeIsMaxFixedColumn.value
if (column.fixed === colFixed) {
$xetable.clearColumnFixed(column)
} else {
if (!isMaxFixedColumn || column.fixed) {
$xetable.setColumnFixed(column, colFixed)
}
}
}
var allCustomEvent = function () {
var columns = reactData.columns
var computeTableCustomOpts = $xetable.getComputeMaps().computeCustomOpts
var tableCustomOpts = computeTableCustomOpts.value
var checkMethod = tableCustomOpts.checkMethod
var isAll = !customStore.isAll
xeUtils.eachTree(columns, function (column) {
if (!checkMethod || checkMethod({ column })) {
column.visible = isAll
column.halfVisible = false
}
})
customStore.isAll = isAll
checkCustomStatus()
}
var handleGlobalMousedownEvent = function (evnt) {
var customWrapperElem = refCustomWrapper.value
if (!getEventTargetNode(evnt, customWrapperElem).flag) {
customColseEvent(evnt)
}
}
var handleGlobalBlurEvent = function (evnt) {
customColseEvent(evnt)
}
var handleClickSettingEvent = function (evnt) {
if (customStore.visible) {
customColseEvent(evnt)
} else {
customOpenEvent(evnt)
}
}
var handleMouseenterSettingEvent = function (evnt) {
customStore.activeBtn = true
customOpenEvent(evnt)
}
var handleMouseleaveSettingEvent = function (evnt) {
customStore.activeBtn = false
setTimeout(function () {
if (!customStore.activeBtn && !customStore.activeWrapper) {
customColseEvent(evnt)
}
}, 300)
}
var handleWrapperMouseenterEvent = function (evnt) {
customStore.activeWrapper = true
customOpenEvent(evnt)
}
var handleWrapperMouseleaveEvent = function (evnt) {
customStore.activeWrapper = false
setTimeout(function () {
if (!customStore.activeBtn && !customStore.activeWrapper) {
customColseEvent(evnt)
}
}, 300)
}
var refreshEvent = function (evnt) {
var isRefresh = reactData.isRefresh
var refreshOpts = computeRefreshOpts.value
if (!isRefresh) {
var queryMethod = refreshOpts.queryMethod || refreshOpts.query
if (queryMethod) {
reactData.isRefresh = true
try {
Promise.resolve(queryMethod({}))
.catch(function (e2) {
return e2
})
.then(function () {
reactData.isRefresh = false
})
} catch (e2) {
reactData.isRefresh = false
}
} else if ($xegrid) {
reactData.isRefresh = true
$xegrid
.triggerToolbarCommitEvent(
{ code: refreshOpts.code || 'reload' },
evnt
)
.catch(function (e2) {
return e2
})
.then(function () {
reactData.isRefresh = false
})
}
}
}
var zoomEvent = function (evnt) {
if ($xegrid) {
$xegrid.triggerZoomEvent(evnt)
}
}
var btnEvent = function (evnt, item2) {
var code2 = item2.code
if (code2) {
if ($xegrid) {
$xegrid.triggerToolbarBtnEvent(item2, evnt)
} else {
var gCommandOpts = VXETable.commands.get(code2)
var params2 = {
code: code2,
button: item2,
$table: $xetable,
$grid: $xegrid,
$event: evnt,
}
if (gCommandOpts) {
if (gCommandOpts.commandMethod) {
gCommandOpts.commandMethod(params2)
}
}
$xetoolbar.dispatchEvent('button-click', params2, evnt)
}
}
}
var tolEvent = function (evnt, item2) {
var code2 = item2.code
if (code2) {
if ($xegrid) {
$xegrid.triggerToolbarTolEvent(item2, evnt)
} else {
var gCommandOpts = VXETable.commands.get(code2)
var params2 = {
code: code2,
tool: item2,
$table: $xetable,
$grid: $xegrid,
$event: evnt,
}
if (gCommandOpts) {
if (gCommandOpts.commandMethod) {
gCommandOpts.commandMethod(params2)
}
}
$xetoolbar.dispatchEvent('tool-click', params2, evnt)
}
}
}
var importEvent = function () {
if (checkTable()) {
$xetable.openImport()
}
}
var exportEvent = function () {
if (checkTable()) {
$xetable.openExport()
}
}
var printEvent = function () {
if (checkTable()) {
$xetable.openPrint()
}
}
var renderDropdowns = function (item2, isBtn) {
var dropdowns = item2.dropdowns
var downVNs = []
if (dropdowns) {
return dropdowns.map(function (child, index2) {
if (child.visible === false) {
return createCommentVNode()
}
return h$4(resolveComponent('vxe-button'), {
key: index2,
disabled: child.disabled,
loading: child.loading,
type: child.type,
icon: child.icon,
circle: child.circle,
round: child.round,
status: child.status,
content: child.name,
onClick: function (evnt) {
return isBtn ? btnEvent(evnt, child) : tolEvent(evnt, child)
},
})
})
}
return downVNs
}
var renderBtns = function () {
var buttons = props2.buttons
var buttonsSlot = slots.buttons
if (buttonsSlot) {
return getSlotVNs(buttonsSlot({ $grid: $xegrid, $table: $xetable }))
}
var btnVNs = []
if (buttons) {
buttons.forEach(function (item2) {
var dropdowns = item2.dropdowns,
buttonRender = item2.buttonRender
if (item2.visible !== false) {
var compConf = buttonRender
? VXETable.renderer.get(buttonRender.name)
: null
if (buttonRender && compConf && compConf.renderToolbarButton) {
var toolbarButtonClassName = compConf.toolbarButtonClassName
var params2 = { $grid: $xegrid, $table: $xetable, button: item2 }
btnVNs.push(
h$4(
'span',
{
class: [
'vxe-button--item',
toolbarButtonClassName
? xeUtils.isFunction(toolbarButtonClassName)
? toolbarButtonClassName(params2)
: toolbarButtonClassName
: '',
],
},
getSlotVNs(
compConf.renderToolbarButton(buttonRender, params2)
)
)
)
} else {
btnVNs.push(
h$4(
resolveComponent('vxe-button'),
{
disabled: item2.disabled,
loading: item2.loading,
type: item2.type,
icon: item2.icon,
circle: item2.circle,
round: item2.round,
status: item2.status,
content: item2.name,
destroyOnClose: item2.destroyOnClose,
placement: item2.placement,
transfer: item2.transfer,
onClick: function (evnt) {
return btnEvent(evnt, item2)
},
},
dropdowns && dropdowns.length
? {
dropdowns: function () {
return renderDropdowns(item2, true)
},
}
: {}
)
)
}
}
})
}
return btnVNs
}
var renderRightTools = function () {
var tools2 = props2.tools
var toolsSlot = slots.tools
if (toolsSlot) {
return getSlotVNs(toolsSlot({ $grid: $xegrid, $table: $xetable }))
}
var btnVNs = []
if (tools2) {
tools2.forEach(function (item2) {
var dropdowns = item2.dropdowns,
toolRender = item2.toolRender
if (item2.visible !== false) {
var compConf = toolRender
? VXETable.renderer.get(toolRender.name)
: null
if (toolRender && compConf && compConf.renderToolbarTool) {
var toolbarToolClassName = compConf.toolbarToolClassName
var params2 = { $grid: $xegrid, $table: $xetable, tool: item2 }
btnVNs.push(
h$4(
'span',
{
class: [
'vxe-tool--item',
toolbarToolClassName
? xeUtils.isFunction(toolbarToolClassName)
? toolbarToolClassName(params2)
: toolbarToolClassName
: '',
],
},
getSlotVNs(compConf.renderToolbarTool(toolRender, params2))
)
)
} else {
btnVNs.push(
h$4(
resolveComponent('vxe-button'),
{
disabled: item2.disabled,
loading: item2.loading,
type: item2.type,
icon: item2.icon,
circle: item2.circle,
round: item2.round,
status: item2.status,
content: item2.name,
destroyOnClose: item2.destroyOnClose,
placement: item2.placement,
transfer: item2.transfer,
onClick: function (evnt) {
return tolEvent(evnt, item2)
},
},
dropdowns && dropdowns.length
? {
dropdowns: function () {
return renderDropdowns(item2, false)
},
}
: {}
)
)
}
}
})
}
return btnVNs
}
var renderCustoms = function () {
var columns = reactData.columns
var customOpts = computeCustomOpts.value
var isMaxFixedColumn = true
var colVNs = []
var customBtnOns = {}
var customWrapperOns = {}
var checkMethod
if ($xetable) {
var _a2 = $xetable.getComputeMaps(),
computeTableCustomOpts = _a2.computeCustomOpts,
computeIsMaxFixedColumn = _a2.computeIsMaxFixedColumn
var tableCustomOpts = computeTableCustomOpts.value
checkMethod = tableCustomOpts.checkMethod
isMaxFixedColumn = computeIsMaxFixedColumn.value
}
if (customOpts.trigger === 'manual');
else if (customOpts.trigger === 'hover') {
customBtnOns.onMouseenter = handleMouseenterSettingEvent
customBtnOns.onMouseleave = handleMouseleaveSettingEvent
customWrapperOns.onMouseenter = handleWrapperMouseenterEvent
customWrapperOns.onMouseleave = handleWrapperMouseleaveEvent
} else {
customBtnOns.onClick = handleClickSettingEvent
}
xeUtils.eachTree(
columns,
function (column, index2, items, path, parent2) {
var colTitle = formatText(column.getTitle(), 1)
var colKey = column.getKey()
var isColGroup = column.children && column.children.length
var isDisabled = checkMethod ? !checkMethod({ column }) : false
if (isColGroup || colKey) {
var isChecked = column.visible
var isIndeterminate = column.halfVisible
colVNs.push(
h$4(
'li',
{
class: [
'vxe-custom--option',
'level--'.concat(column.level),
{
'is--group': isColGroup,
},
],
},
[
h$4(
'div',
{
title: colTitle,
class: [
'vxe-custom--checkbox-option',
{
'is--checked': isChecked,
'is--indeterminate': isIndeterminate,
'is--disabled': isDisabled,
},
],
onClick: function () {
if (!isDisabled) {
changeCheckboxOption(column)
}
},
},
[
h$4('span', {
class: [
'vxe-checkbox--icon',
isIndeterminate
? GlobalConfig.icon.TABLE_CHECKBOX_INDETERMINATE
: isChecked
? GlobalConfig.icon.TABLE_CHECKBOX_CHECKED
: GlobalConfig.icon.TABLE_CHECKBOX_UNCHECKED,
],
}),
h$4(
'span',
{
class: 'vxe-checkbox--label',
},
colTitle
),
]
),
!parent2 && customOpts.allowFixed
? h$4(
'div',
{
class: 'vxe-custom--fixed-option',
},
[
h$4('span', {
class: [
'vxe-custom--fixed-left-option',
column.fixed === 'left'
? GlobalConfig.icon
.TOOLBAR_TOOLS_FIXED_LEFT_ACTIVED
: GlobalConfig.icon.TOOLBAR_TOOLS_FIXED_LEFT,
{
'is--checked': column.fixed === 'left',
'is--disabled':
isMaxFixedColumn && !column.fixed,
},
],
title: GlobalConfig.i18n(
column.fixed === 'left'
? 'vxe.toolbar.cancelfixed'
: 'vxe.toolbar.fixedLeft'
),
onClick: function () {
changeFixedOption(column, 'left')
},
}),
h$4('span', {
class: [
'vxe-custom--fixed-right-option',
column.fixed === 'right'
? GlobalConfig.icon
.TOOLBAR_TOOLS_FIXED_RIGHT_ACTIVED
: GlobalConfig.icon.TOOLBAR_TOOLS_FIXED_RIGHT,
{
'is--checked': column.fixed === 'right',
'is--disabled':
isMaxFixedColumn && !column.fixed,
},
],
title: GlobalConfig.i18n(
column.fixed === 'right'
? 'vxe.toolbar.cancelfixed'
: 'vxe.toolbar.fixedRight'
),
onClick: function () {
changeFixedOption(column, 'right')
},
}),
]
)
: null,
]
)
)
}
}
)
var isAllChecked = customStore.isAll
var isAllIndeterminate = customStore.isIndeterminate
return h$4(
'div',
{
class: [
'vxe-custom--wrapper',
{
'is--active': customStore.visible,
},
],
ref: refCustomWrapper,
},
[
h$4(
resolveComponent('vxe-button'),
__assign$b(
{
circle: true,
icon: customOpts.icon || GlobalConfig.icon.TOOLBAR_TOOLS_CUSTOM,
title: GlobalConfig.i18n('vxe.toolbar.custom'),
},
customBtnOns
)
),
h$4(
'div',
{
class: 'vxe-custom--option-wrapper',
},
[
h$4(
'ul',
{
class: 'vxe-custom--header',
},
[
h$4(
'li',
{
class: 'vxe-custom--option',
},
[
h$4(
'div',
{
class: [
'vxe-custom--checkbox-option',
{
'is--checked': isAllChecked,
'is--indeterminate': isAllIndeterminate,
},
],
title: GlobalConfig.i18n('vxe.table.allTitle'),
onClick: allCustomEvent,
},
[
h$4('span', {
class: [
'vxe-checkbox--icon',
isAllIndeterminate
? GlobalConfig.icon.TABLE_CHECKBOX_INDETERMINATE
: isAllChecked
? GlobalConfig.icon.TABLE_CHECKBOX_CHECKED
: GlobalConfig.icon.TABLE_CHECKBOX_UNCHECKED,
],
}),
h$4(
'span',
{
class: 'vxe-checkbox--label',
},
GlobalConfig.i18n('vxe.toolbar.customAll')
),
]
),
]
),
]
),
h$4(
'ul',
__assign$b({ class: 'vxe-custom--body' }, customWrapperOns),
colVNs
),
customOpts.showFooter || customOpts.isFooter
? h$4(
'div',
{
class: 'vxe-custom--footer',
},
[
h$4(
'button',
{
class: 'btn--reset',
onClick: resetCustomEvent,
},
customOpts.resetButtonText ||
GlobalConfig.i18n('vxe.toolbar.customRestore')
),
h$4(
'button',
{
class: 'btn--confirm',
onClick: confirmCustomEvent,
},
customOpts.confirmButtonText ||
GlobalConfig.i18n('vxe.toolbar.customConfirm')
),
]
)
: null,
]
),
]
)
}
toolbarMethods = {
dispatchEvent: function (type4, params2, evnt) {
emit2(
type4,
Object.assign({ $toolbar: $xetoolbar, $event: evnt }, params2)
)
},
syncUpdate: function (params2) {
var collectColumn = params2.collectColumn
$xetable = params2.$table
reactData.columns = collectColumn
},
}
Object.assign($xetoolbar, toolbarMethods)
onMounted(function () {
GlobalEvent.on($xetoolbar, 'mousedown', handleGlobalMousedownEvent)
GlobalEvent.on($xetoolbar, 'blur', handleGlobalBlurEvent)
})
onUnmounted(function () {
GlobalEvent.off($xetoolbar, 'mousedown')
GlobalEvent.off($xetoolbar, 'blur')
})
nextTick(function () {
var refresh2 = props2.refresh
var refreshOpts = computeRefreshOpts.value
var queryMethod = refreshOpts.queryMethod || refreshOpts.query
if (refresh2 && !$xegrid && !queryMethod) {
warnLog('vxe.error.notFunc', ['queryMethod'])
}
computeCustomOpts.value
})
var renderVN = function () {
var _a2
var perfect = props2.perfect,
loading2 = props2.loading,
refresh2 = props2.refresh,
zoom = props2.zoom,
custom = props2.custom,
className = props2.className
var vSize = computeSize.value
var refreshOpts = computeRefreshOpts.value
var importOpts = computeImportOpts.value
var exportOpts = computeExportOpts.value
var printOpts = computePrintOpts.value
var zoomOpts = computeZoomOpts.value
return h$4(
'div',
{
ref: refElem,
class: [
'vxe-toolbar',
className
? xeUtils.isFunction(className)
? className({ $toolbar: $xetoolbar })
: className
: '',
((_a2 = {}),
(_a2['size--'.concat(vSize)] = vSize),
(_a2['is--perfect'] = perfect),
(_a2['is--loading'] = loading2),
_a2),
],
},
[
h$4(
'div',
{
class: 'vxe-buttons--wrapper',
},
renderBtns()
),
h$4(
'div',
{
class: 'vxe-tools--wrapper',
},
renderRightTools()
),
h$4(
'div',
{
class: 'vxe-tools--operate',
},
[
props2.import
? h$4(resolveComponent('vxe-button'), {
circle: true,
icon:
importOpts.icon || GlobalConfig.icon.TOOLBAR_TOOLS_IMPORT,
title: GlobalConfig.i18n('vxe.toolbar.import'),
onClick: importEvent,
})
: createCommentVNode(),
props2.export
? h$4(resolveComponent('vxe-button'), {
circle: true,
icon:
exportOpts.icon || GlobalConfig.icon.TOOLBAR_TOOLS_EXPORT,
title: GlobalConfig.i18n('vxe.toolbar.export'),
onClick: exportEvent,
})
: createCommentVNode(),
props2.print
? h$4(resolveComponent('vxe-button'), {
circle: true,
icon:
printOpts.icon || GlobalConfig.icon.TOOLBAR_TOOLS_PRINT,
title: GlobalConfig.i18n('vxe.toolbar.print'),
onClick: printEvent,
})
: createCommentVNode(),
refresh2
? h$4(resolveComponent('vxe-button'), {
circle: true,
icon: reactData.isRefresh
? refreshOpts.iconLoading ||
GlobalConfig.icon.TOOLBAR_TOOLS_REFRESH_LOADING
: refreshOpts.icon ||
GlobalConfig.icon.TOOLBAR_TOOLS_REFRESH,
title: GlobalConfig.i18n('vxe.toolbar.refresh'),
onClick: refreshEvent,
})
: createCommentVNode(),
zoom && $xegrid
? h$4(resolveComponent('vxe-button'), {
circle: true,
icon: $xegrid.isMaximized()
? zoomOpts.iconOut ||
GlobalConfig.icon.TOOLBAR_TOOLS_MINIMIZE
: zoomOpts.iconIn ||
GlobalConfig.icon.TOOLBAR_TOOLS_FULLSCREEN,
title: GlobalConfig.i18n(
'vxe.toolbar.zoom'.concat(
$xegrid.isMaximized() ? 'Out' : 'In'
)
),
onClick: zoomEvent,
})
: createCommentVNode(),
custom ? renderCustoms() : createCommentVNode(),
]
),
]
)
}
$xetoolbar.renderVN = renderVN
return $xetoolbar
},
render: function () {
return this.renderVN()
},
})
Object.assign(VxeToolbarComponent, {
install: function (app2) {
app2.component(VxeToolbarComponent.name, VxeToolbarComponent)
},
})
dynamicApp.component(VxeToolbarComponent.name, VxeToolbarComponent)
var __assign$a =
(globalThis && globalThis.__assign) ||
function () {
__assign$a =
Object.assign ||
function (t3) {
for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
s2 = arguments[i2]
for (var p2 in s2)
if (Object.prototype.hasOwnProperty.call(s2, p2)) t3[p2] = s2[p2]
}
return t3
}
return __assign$a.apply(this, arguments)
}
var VxePagerComponent = defineComponent({
name: 'VxePager',
props: {
size: {
type: String,
default: function () {
return GlobalConfig.pager.size || GlobalConfig.size
},
},
layouts: {
type: Array,
default: function () {
return (
GlobalConfig.pager.layouts || [
'PrevJump',
'PrevPage',
'Jump',
'PageCount',
'NextPage',
'NextJump',
'Sizes',
'Total',
]
)
},
},
currentPage: { type: Number, default: 1 },
loading: Boolean,
pageSize: {
type: Number,
default: function () {
return GlobalConfig.pager.pageSize || 10
},
},
total: { type: Number, default: 0 },
pagerCount: {
type: Number,
default: function () {
return GlobalConfig.pager.pagerCount || 7
},
},
pageSizes: {
type: Array,
default: function () {
return GlobalConfig.pager.pageSizes || [10, 15, 20, 50, 100]
},
},
align: {
type: String,
default: function () {
return GlobalConfig.pager.align
},
},
border: {
type: Boolean,
default: function () {
return GlobalConfig.pager.border
},
},
background: {
type: Boolean,
default: function () {
return GlobalConfig.pager.background
},
},
perfect: {
type: Boolean,
default: function () {
return GlobalConfig.pager.perfect
},
},
autoHidden: {
type: Boolean,
default: function () {
return GlobalConfig.pager.autoHidden
},
},
transfer: {
type: Boolean,
default: function () {
return GlobalConfig.pager.transfer
},
},
className: [String, Function],
iconPrevPage: String,
iconJumpPrev: String,
iconJumpNext: String,
iconNextPage: String,
iconJumpMore: String,
},
emits: ['update:pageSize', 'update:currentPage', 'page-change'],
setup: function (props2, context2) {
var slots = context2.slots,
emit2 = context2.emit
var xID = xeUtils.uniqueId()
var computeSize = useSize(props2)
var $xegrid = inject('$xegrid', null)
var reactData = reactive({
inpCurrPage: props2.currentPage,
})
var refElem = ref()
var refMaps = {
refElem,
}
var $xepager = {
xID,
props: props2,
context: context2,
getRefMaps: function () {
return refMaps
},
}
var pagerMethods = {}
var pagerPrivateMethods = {}
var getPageCount = function (total2, size) {
return Math.max(Math.ceil(total2 / size), 1)
}
var computePageCount = computed(function () {
return getPageCount(props2.total, props2.pageSize)
})
var jumpPageEvent = function (evnt, currentPage2) {
emit2('update:currentPage', currentPage2)
if (evnt && currentPage2 !== props2.currentPage) {
pagerMethods.dispatchEvent(
'page-change',
{
type: 'current',
pageSize: props2.pageSize,
currentPage: currentPage2,
},
evnt
)
}
}
var changeCurrentPage = function (currentPage2, evnt) {
emit2('update:currentPage', currentPage2)
if (evnt && currentPage2 !== props2.currentPage) {
pagerMethods.dispatchEvent(
'page-change',
{
type: 'current',
pageSize: props2.pageSize,
currentPage: currentPage2,
},
evnt
)
}
}
var triggerJumpEvent = function (evnt) {
var inputElem = evnt.target
var inpValue = xeUtils.toInteger(inputElem.value)
var pageCount = computePageCount.value
var current2 =
inpValue <= 0 ? 1 : inpValue >= pageCount ? pageCount : inpValue
var currPage = xeUtils.toValueString(current2)
inputElem.value = currPage
reactData.inpCurrPage = currPage
changeCurrentPage(current2, evnt)
}
var computeNumList = computed(function () {
var pagerCount = props2.pagerCount
var pageCount = computePageCount.value
var len2 = pageCount > pagerCount ? pagerCount - 2 : pagerCount
var rest = []
for (var index2 = 0; index2 < len2; index2++) {
rest.push(index2)
}
return rest
})
var computeOffsetNumber = computed(function () {
return Math.floor((props2.pagerCount - 2) / 2)
})
var computeSizeList = computed(function () {
return props2.pageSizes.map(function (item2) {
if (xeUtils.isNumber(item2)) {
return {
value: item2,
label: ''.concat(GlobalConfig.i18n('vxe.pager.pagesize', [item2])),
}
}
return __assign$a({ value: '', label: '' }, item2)
})
})
var handlePrevPage = function (evnt) {
var currentPage2 = props2.currentPage
var pageCount = computePageCount.value
if (currentPage2 > 1) {
changeCurrentPage(
Math.min(pageCount, Math.max(currentPage2 - 1, 1)),
evnt
)
}
}
var handleNextPage = function (evnt) {
var currentPage2 = props2.currentPage
var pageCount = computePageCount.value
if (currentPage2 < pageCount) {
changeCurrentPage(Math.min(pageCount, currentPage2 + 1), evnt)
}
}
var handlePrevJump = function (evnt) {
var numList = computeNumList.value
changeCurrentPage(Math.max(props2.currentPage - numList.length, 1), evnt)
}
var handleNextJump = function (evnt) {
var pageCount = computePageCount.value
var numList = computeNumList.value
changeCurrentPage(
Math.min(props2.currentPage + numList.length, pageCount),
evnt
)
}
var pageSizeEvent = function (params2) {
var value2 = params2.value
var pageSize = xeUtils.toNumber(value2)
var pageCount = getPageCount(props2.total, pageSize)
var currentPage2 = props2.currentPage
if (currentPage2 > pageCount) {
currentPage2 = pageCount
emit2('update:currentPage', pageCount)
}
emit2('update:pageSize', pageSize)
pagerMethods.dispatchEvent('page-change', {
type: 'size',
pageSize,
currentPage: currentPage2,
})
}
var jumpInputEvent = function (evnt) {
var inputElem = evnt.target
reactData.inpCurrPage = inputElem.value
}
var jumpKeydownEvent = function (evnt) {
if (hasEventKey(evnt, EVENT_KEYS.ENTER)) {
triggerJumpEvent(evnt)
} else if (hasEventKey(evnt, EVENT_KEYS.ARROW_UP)) {
evnt.preventDefault()
handleNextPage(evnt)
} else if (hasEventKey(evnt, EVENT_KEYS.ARROW_DOWN)) {
evnt.preventDefault()
handlePrevPage(evnt)
}
}
var renderPrevPage = function () {
return h$4(
'button',
{
class: [
'vxe-pager--prev-btn',
{
'is--disabled': props2.currentPage <= 1,
},
],
type: 'button',
title: GlobalConfig.i18n('vxe.pager.prevPage'),
onClick: handlePrevPage,
},
[
h$4('i', {
class: [
'vxe-pager--btn-icon',
props2.iconPrevPage || GlobalConfig.icon.PAGER_PREV_PAGE,
],
}),
]
)
}
var renderPrevJump = function (tagName) {
return h$4(
tagName || 'button',
{
class: [
'vxe-pager--jump-prev',
{
'is--fixed': !tagName,
'is--disabled': props2.currentPage <= 1,
},
],
type: 'button',
title: GlobalConfig.i18n('vxe.pager.prevJump'),
onClick: handlePrevJump,
},
[
tagName
? h$4('i', {
class: [
'vxe-pager--jump-more-icon',
props2.iconJumpMore || GlobalConfig.icon.PAGER_JUMP_MORE,
],
})
: null,
h$4('i', {
class: [
'vxe-pager--jump-icon',
props2.iconJumpPrev || GlobalConfig.icon.PAGER_JUMP_PREV,
],
}),
]
)
}
var renderNextJump = function (tagName) {
var pageCount = computePageCount.value
return h$4(
tagName || 'button',
{
class: [
'vxe-pager--jump-next',
{
'is--fixed': !tagName,
'is--disabled': props2.currentPage >= pageCount,
},
],
type: 'button',
title: GlobalConfig.i18n('vxe.pager.nextJump'),
onClick: handleNextJump,
},
[
tagName
? h$4('i', {
class: [
'vxe-pager--jump-more-icon',
props2.iconJumpMore || GlobalConfig.icon.PAGER_JUMP_MORE,
],
})
: null,
h$4('i', {
class: [
'vxe-pager--jump-icon',
props2.iconJumpNext || GlobalConfig.icon.PAGER_JUMP_NEXT,
],
}),
]
)
}
var renderNextPage = function () {
var pageCount = computePageCount.value
return h$4(
'button',
{
class: [
'vxe-pager--next-btn',
{
'is--disabled': props2.currentPage >= pageCount,
},
],
type: 'button',
title: GlobalConfig.i18n('vxe.pager.nextPage'),
onClick: handleNextPage,
},
[
h$4('i', {
class: [
'vxe-pager--btn-icon',
props2.iconNextPage || GlobalConfig.icon.PAGER_NEXT_PAGE,
],
}),
]
)
}
var renderNumber = function (showJump) {
var currentPage2 = props2.currentPage,
pagerCount = props2.pagerCount
var nums = []
var pageCount = computePageCount.value
var numList = computeNumList.value
var offsetNumber = computeOffsetNumber.value
var isOv = pageCount > pagerCount
var isLt = isOv && currentPage2 > offsetNumber + 1
var isGt = isOv && currentPage2 < pageCount - offsetNumber
var startNumber = 1
if (isOv) {
if (currentPage2 >= pageCount - offsetNumber) {
startNumber = Math.max(pageCount - numList.length + 1, 1)
} else {
startNumber = Math.max(currentPage2 - offsetNumber, 1)
}
}
if (showJump && isLt) {
nums.push(
h$4(
'button',
{
class: 'vxe-pager--num-btn',
type: 'button',
onClick: function (evnt) {
return jumpPageEvent(evnt, 1)
},
},
1
),
renderPrevJump('span')
)
}
numList.forEach(function (item2, index2) {
var number4 = startNumber + index2
if (number4 <= pageCount) {
nums.push(
h$4(
'button',
{
key: number4,
class: [
'vxe-pager--num-btn',
{
'is--active': currentPage2 === number4,
},
],
type: 'button',
onClick: function (evnt) {
return jumpPageEvent(evnt, number4)
},
},
number4
)
)
}
})
if (showJump && isGt) {
nums.push(
renderNextJump('button'),
h$4(
'button',
{
class: 'vxe-pager--num-btn',
type: 'button',
onClick: function (evnt) {
return jumpPageEvent(evnt, pageCount)
},
},
pageCount
)
)
}
return h$4(
'span',
{
class: 'vxe-pager--btn-wrapper',
},
nums
)
}
var renderJumpNumber = function () {
return renderNumber(true)
}
var renderSizes = function () {
var sizeList = computeSizeList.value
return h$4(resolveComponent('vxe-select'), {
class: 'vxe-pager--sizes',
modelValue: props2.pageSize,
placement: 'top',
transfer: props2.transfer,
options: sizeList,
onChange: pageSizeEvent,
})
}
var renderJump = function (isFull) {
return h$4(
'span',
{
class: 'vxe-pager--jump',
},
[
isFull
? h$4(
'span',
{
class: 'vxe-pager--goto-text',
},
GlobalConfig.i18n('vxe.pager.goto')
)
: null,
h$4('input', {
class: 'vxe-pager--goto',
value: reactData.inpCurrPage,
type: 'text',
autocomplete: 'off',
onInput: jumpInputEvent,
onKeydown: jumpKeydownEvent,
onBlur: triggerJumpEvent,
}),
isFull
? h$4(
'span',
{
class: 'vxe-pager--classifier-text',
},
GlobalConfig.i18n('vxe.pager.pageClassifier')
)
: null,
]
)
}
var renderFullJump = function () {
return renderJump(true)
}
var renderPageCount = function () {
var pageCount = computePageCount.value
return h$4(
'span',
{
class: 'vxe-pager--count',
},
[
h$4('span', {
class: 'vxe-pager--separator',
}),
h$4('span', pageCount),
]
)
}
var renderTotal = function () {
return h$4(
'span',
{
class: 'vxe-pager--total',
},
GlobalConfig.i18n('vxe.pager.total', [props2.total])
)
}
pagerMethods = {
dispatchEvent: function (type4, params2, evnt) {
emit2(type4, Object.assign({ $pager: $xepager, $event: evnt }, params2))
},
prevPage: function () {
handlePrevPage()
return nextTick()
},
nextPage: function () {
handleNextPage()
return nextTick()
},
prevJump: function () {
handlePrevJump()
return nextTick()
},
nextJump: function () {
handleNextJump()
return nextTick()
},
}
pagerPrivateMethods = {
handlePrevPage,
handleNextPage,
handlePrevJump,
handleNextJump,
}
Object.assign($xepager, pagerMethods, pagerPrivateMethods)
watch$1(
function () {
return props2.currentPage
},
function (value2) {
reactData.inpCurrPage = value2
}
)
var renderVN = function () {
var _a2
var align = props2.align,
layouts = props2.layouts,
className = props2.className
var childNodes = []
var vSize = computeSize.value
var pageCount = computePageCount.value
if (slots.left) {
childNodes.push(
h$4(
'span',
{
class: 'vxe-pager--left-wrapper',
},
slots.left({ $grid: $xegrid })
)
)
}
layouts.forEach(function (name2) {
var renderFn
switch (name2) {
case 'PrevPage':
renderFn = renderPrevPage
break
case 'PrevJump':
renderFn = renderPrevJump
break
case 'Number':
renderFn = renderNumber
break
case 'JumpNumber':
renderFn = renderJumpNumber
break
case 'NextJump':
renderFn = renderNextJump
break
case 'NextPage':
renderFn = renderNextPage
break
case 'Sizes':
renderFn = renderSizes
break
case 'FullJump':
renderFn = renderFullJump
break
case 'Jump':
renderFn = renderJump
break
case 'PageCount':
renderFn = renderPageCount
break
case 'Total':
renderFn = renderTotal
break
}
if (renderFn) {
childNodes.push(renderFn())
}
})
if (slots.right) {
childNodes.push(
h$4(
'span',
{
class: 'vxe-pager--right-wrapper',
},
slots.right({ $grid: $xegrid })
)
)
}
return h$4(
'div',
{
ref: refElem,
class: [
'vxe-pager',
className
? xeUtils.isFunction(className)
? className({ $pager: $xepager })
: className
: '',
((_a2 = {}),
(_a2['size--'.concat(vSize)] = vSize),
(_a2['align--'.concat(align)] = align),
(_a2['is--border'] = props2.border),
(_a2['is--background'] = props2.background),
(_a2['is--perfect'] = props2.perfect),
(_a2['is--hidden'] = props2.autoHidden && pageCount === 1),
(_a2['is--loading'] = props2.loading),
_a2),
],
},
[
h$4(
'div',
{
class: 'vxe-pager--wrapper',
},
childNodes
),
]
)
}
$xepager.renderVN = renderVN
return $xepager
},
render: function () {
return this.renderVN()
},
})
Object.assign(VxePagerComponent, {
install: function (app2) {
app2.component(VxePagerComponent.name, VxePagerComponent)
},
})
dynamicApp.component(VxePagerComponent.name, VxePagerComponent)
Object.assign(VxeCheckboxComponent, {
install: function (app2) {
app2.component(VxeCheckboxComponent.name, VxeCheckboxComponent)
},
})
dynamicApp.component(VxeCheckboxComponent.name, VxeCheckboxComponent)
var VxeCheckboxGroupComponent = defineComponent({
name: 'VxeCheckboxGroup',
props: {
modelValue: Array,
disabled: Boolean,
max: { type: [String, Number], default: null },
size: {
type: String,
default: function () {
return GlobalConfig.checkbox.size || GlobalConfig.size
},
},
},
emits: ['update:modelValue', 'change'],
setup: function (props2, context2) {
var slots = context2.slots,
emit2 = context2.emit
var $xeform = inject('$xeform', null)
var $xeformiteminfo = inject('$xeformiteminfo', null)
var xID = xeUtils.uniqueId()
var computeIsMaximize = computed(function () {
var modelValue = props2.modelValue,
max3 = props2.max
if (max3) {
return (modelValue ? modelValue.length : 0) >= xeUtils.toNumber(max3)
}
return false
})
var computeMaps = {
computeIsMaximize,
}
var $xecheckboxgroup = {
xID,
props: props2,
context: context2,
getComputeMaps: function () {
return computeMaps
},
}
useSize(props2)
var checkboxGroupMethods = {
dispatchEvent: function (type4, params2, evnt) {
emit2(
type4,
Object.assign(
{ $checkboxGroup: $xecheckboxgroup, $event: evnt },
params2
)
)
},
}
var checkboxGroupPrivateMethods = {
handleChecked: function (params2, evnt) {
var checked2 = params2.checked,
label = params2.label
var checklist = props2.modelValue || []
var checkIndex = checklist.indexOf(label)
if (checked2) {
if (checkIndex === -1) {
checklist.push(label)
}
} else {
checklist.splice(checkIndex, 1)
}
emit2('update:modelValue', checklist)
$xecheckboxgroup.dispatchEvent(
'change',
Object.assign({ checklist }, params2),
evnt
)
if ($xeform && $xeformiteminfo) {
$xeform.triggerItemEvent(
evnt,
$xeformiteminfo.itemConfig.field,
checklist
)
}
},
}
Object.assign(
$xecheckboxgroup,
checkboxGroupMethods,
checkboxGroupPrivateMethods
)
var renderVN = function () {
return h$4(
'div',
{
class: 'vxe-checkbox-group',
},
slots.default ? slots.default({}) : []
)
}
$xecheckboxgroup.renderVN = renderVN
provide('$xecheckboxgroup', $xecheckboxgroup)
return renderVN
},
})
Object.assign(VxeCheckboxGroupComponent, {
install: function (app2) {
app2.component(VxeCheckboxGroupComponent.name, VxeCheckboxGroupComponent)
},
})
dynamicApp.component(VxeCheckboxGroupComponent.name, VxeCheckboxGroupComponent)
Object.assign(VxeRadioComponent, {
install: function (app2) {
app2.component(VxeRadioComponent.name, VxeRadioComponent)
},
})
dynamicApp.component(VxeRadioComponent.name, VxeRadioComponent)
Object.assign(VxeRadioGroupComponent, {
install: function (app2) {
app2.component(VxeRadioGroupComponent.name, VxeRadioGroupComponent)
},
})
dynamicApp.component(VxeRadioGroupComponent.name, VxeRadioGroupComponent)
var VxeRadioButtonComponent = defineComponent({
name: 'VxeRadioButton',
props: {
modelValue: [String, Number, Boolean],
label: { type: [String, Number, Boolean], default: null },
title: [String, Number],
content: [String, Number],
disabled: Boolean,
strict: {
type: Boolean,
default: function () {
return GlobalConfig.radioButton.strict
},
},
size: {
type: String,
default: function () {
return GlobalConfig.radioButton.size || GlobalConfig.size
},
},
},
emits: ['update:modelValue', 'change'],
setup: function (props2, context2) {
var slots = context2.slots,
emit2 = context2.emit
var $xeform = inject('$xeform', null)
var $xeformiteminfo = inject('$xeformiteminfo', null)
var xID = xeUtils.uniqueId()
var computeSize = useSize(props2)
var $xeradiobutton = {
xID,
props: props2,
context: context2,
}
var radioButtonMethods = {}
var $xeradiogroup = inject('$xeradiogroup', null)
var computeDisabled = computed(function () {
return props2.disabled || ($xeradiogroup && $xeradiogroup.props.disabled)
})
var computeName = computed(function () {
return $xeradiogroup ? $xeradiogroup.name : null
})
var computeStrict = computed(function () {
return $xeradiogroup ? $xeradiogroup.props.strict : props2.strict
})
var computeChecked = computed(function () {
var modelValue = props2.modelValue,
label = props2.label
return $xeradiogroup
? $xeradiogroup.props.modelValue === label
: modelValue === label
})
radioButtonMethods = {
dispatchEvent: function (type4, params2, evnt) {
emit2(
type4,
Object.assign({ $radioButton: $xeradiobutton, $event: evnt }, params2)
)
},
}
Object.assign($xeradiobutton, radioButtonMethods)
var handleValue2 = function (label, evnt) {
if ($xeradiogroup) {
$xeradiogroup.handleChecked({ label }, evnt)
} else {
emit2('update:modelValue', label)
radioButtonMethods.dispatchEvent('change', { label }, evnt)
if ($xeform && $xeformiteminfo) {
$xeform.triggerItemEvent(
evnt,
$xeformiteminfo.itemConfig.field,
label
)
}
}
}
var changeEvent = function (evnt) {
var isDisabled = computeDisabled.value
if (!isDisabled) {
handleValue2(props2.label, evnt)
}
}
var clickEvent = function (evnt) {
var isDisabled = computeDisabled.value
var isStrict = computeStrict.value
if (!isDisabled && !isStrict) {
if (
props2.label ===
($xeradiogroup ? $xeradiogroup.props.modelValue : props2.modelValue)
) {
handleValue2(null, evnt)
}
}
}
var renderVN = function () {
var _a2
var vSize = computeSize.value
var isDisabled = computeDisabled.value
var name2 = computeName.value
var checked2 = computeChecked.value
return h$4(
'label',
{
class: [
'vxe-radio',
'vxe-radio-button',
((_a2 = {}),
(_a2['size--'.concat(vSize)] = vSize),
(_a2['is--disabled'] = isDisabled),
_a2),
],
title: props2.title,
},
[
h$4('input', {
class: 'vxe-radio--input',
type: 'radio',
name: name2,
checked: checked2,
disabled: isDisabled,
onChange: changeEvent,
onClick: clickEvent,
}),
h$4(
'span',
{
class: 'vxe-radio--label',
},
slots.default ? slots.default({}) : getFuncText(props2.content)
),
]
)
}
Object.assign($xeradiobutton, {
renderVN,
dispatchEvent,
})
return renderVN
},
})
Object.assign(VxeRadioButtonComponent, {
install: function (app2) {
app2.component(VxeRadioButtonComponent.name, VxeRadioButtonComponent)
},
})
dynamicApp.component(VxeRadioButtonComponent.name, VxeRadioButtonComponent)
var VxeInput = Object.assign(VxeInputConstructor, {
install: function (app2) {
app2.component(VxeInputConstructor.name, VxeInputConstructor)
},
})
var Input$1 = VxeInput
dynamicApp.component(VxeInputConstructor.name, VxeInputConstructor)
var autoTxtElem
var VxeTextareaComponent = defineComponent({
name: 'VxeTextarea',
props: {
modelValue: [String, Number],
className: String,
immediate: { type: Boolean, default: true },
name: String,
readonly: Boolean,
disabled: Boolean,
placeholder: {
type: String,
default: function () {
return xeUtils.eqNull(GlobalConfig.textarea.placeholder)
? GlobalConfig.i18n('vxe.base.pleaseInput')
: GlobalConfig.textarea.placeholder
},
},
maxlength: [String, Number],
rows: { type: [String, Number], default: 2 },
cols: { type: [String, Number], default: null },
showWordCount: Boolean,
countMethod: Function,
autosize: [Boolean, Object],
form: String,
resize: {
type: String,
default: function () {
return GlobalConfig.textarea.resize
},
},
size: {
type: String,
default: function () {
return GlobalConfig.textarea.size || GlobalConfig.size
},
},
},
emits: [
'update:modelValue',
'input',
'keydown',
'keyup',
'click',
'change',
'focus',
'blur',
],
setup: function (props2, context2) {
var emit2 = context2.emit
var $xeform = inject('$xeform', null)
var $xeformiteminfo = inject('$xeformiteminfo', null)
var xID = xeUtils.uniqueId()
var computeSize = useSize(props2)
var reactData = reactive({
inputValue: props2.modelValue,
})
var refElem = ref()
var refTextarea = ref()
var refMaps = {
refElem,
refTextarea,
}
var $xetextarea = {
xID,
props: props2,
context: context2,
reactData,
getRefMaps: function () {
return refMaps
},
}
var textareaMethods = {}
var computeInputCount = computed(function () {
return xeUtils.getSize(reactData.inputValue)
})
var computeIsCountError = computed(function () {
var inputCount = computeInputCount.value
return props2.maxlength && inputCount > xeUtils.toNumber(props2.maxlength)
})
var computeSizeOpts = computed(function () {
return Object.assign(
{ minRows: 1, maxRows: 10 },
GlobalConfig.textarea.autosize,
props2.autosize
)
})
var updateAutoTxt = function () {
var size = props2.size,
autosize = props2.autosize
var inputValue = reactData.inputValue
if (autosize) {
if (!autoTxtElem) {
autoTxtElem = document.createElement('div')
}
if (!autoTxtElem.parentNode) {
document.body.appendChild(autoTxtElem)
}
var textElem = refTextarea.value
var textStyle = getComputedStyle(textElem)
autoTxtElem.className = [
'vxe-textarea--autosize',
size ? 'size--'.concat(size) : '',
].join(' ')
autoTxtElem.style.width = ''.concat(textElem.clientWidth, 'px')
autoTxtElem.style.padding = textStyle.padding
autoTxtElem.innerHTML = ('' + (inputValue || '\u3000')).replace(
/\n$/,
'\n\u3000'
)
}
}
var handleResize = function () {
if (props2.autosize) {
nextTick(function () {
var sizeOpts = computeSizeOpts.value
var minRows = sizeOpts.minRows,
maxRows = sizeOpts.maxRows
var textElem = refTextarea.value
var sizeHeight = autoTxtElem.clientHeight
var textStyle = getComputedStyle(textElem)
var lineHeight2 = xeUtils.toNumber(textStyle.lineHeight)
var paddingTop2 = xeUtils.toNumber(textStyle.paddingTop)
var paddingBottom2 = xeUtils.toNumber(textStyle.paddingBottom)
var borderTopWidth2 = xeUtils.toNumber(textStyle.borderTopWidth)
var borderBottomWidth2 = xeUtils.toNumber(textStyle.borderBottomWidth)
var intervalHeight =
paddingTop2 + paddingBottom2 + borderTopWidth2 + borderBottomWidth2
var rowNum = (sizeHeight - intervalHeight) / lineHeight2
var textRows =
rowNum && /[0-9]/.test('' + rowNum)
? rowNum
: Math.floor(rowNum) + 1
var vaildRows = textRows
if (textRows < minRows) {
vaildRows = minRows
} else if (textRows > maxRows) {
vaildRows = maxRows
}
textElem.style.height = ''.concat(
vaildRows * lineHeight2 + intervalHeight,
'px'
)
})
}
}
var triggerEvent2 = function (evnt) {
var value2 = reactData.inputValue
$xetextarea.dispatchEvent(evnt.type, { value: value2 }, evnt)
}
var emitUpdate = function (value2, evnt) {
reactData.inputValue = value2
emit2('update:modelValue', value2)
if (xeUtils.toValueString(props2.modelValue) !== value2) {
textareaMethods.dispatchEvent('change', { value: value2 }, evnt)
if ($xeform && $xeformiteminfo) {
$xeform.triggerItemEvent(
evnt,
$xeformiteminfo.itemConfig.field,
value2
)
}
}
}
var inputEvent = function (evnt) {
var immediate = props2.immediate
var textElem = evnt.target
var value2 = textElem.value
reactData.inputValue = value2
if (immediate) {
emitUpdate(value2, evnt)
}
$xetextarea.dispatchEvent('input', { value: value2 }, evnt)
handleResize()
}
var changeEvent = function (evnt) {
var immediate = props2.immediate
if (immediate) {
triggerEvent2(evnt)
} else {
emitUpdate(reactData.inputValue, evnt)
}
}
var blurEvent = function (evnt) {
var immediate = props2.immediate
var inputValue = reactData.inputValue
if (!immediate) {
emitUpdate(inputValue, evnt)
}
$xetextarea.dispatchEvent('blur', { value: inputValue }, evnt)
}
textareaMethods = {
dispatchEvent: function (type4, params2, evnt) {
emit2(
type4,
Object.assign({ $textarea: $xetextarea, $event: evnt }, params2)
)
},
focus: function () {
var textElem = refTextarea.value
textElem.focus()
return nextTick()
},
blur: function () {
var textElem = refTextarea.value
textElem.blur()
return nextTick()
},
}
Object.assign($xetextarea, textareaMethods)
watch$1(
function () {
return props2.modelValue
},
function (val2) {
reactData.inputValue = val2
updateAutoTxt()
}
)
nextTick(function () {
var autosize = props2.autosize
if (autosize) {
updateAutoTxt()
handleResize()
}
})
var renderVN = function () {
var _a2
var className = props2.className,
resize = props2.resize,
placeholder = props2.placeholder,
disabled = props2.disabled,
maxlength = props2.maxlength,
autosize = props2.autosize,
showWordCount = props2.showWordCount,
countMethod = props2.countMethod,
rows = props2.rows,
cols = props2.cols
var inputValue = reactData.inputValue
var vSize = computeSize.value
var isCountError = computeIsCountError.value
var inputCount = computeInputCount.value
return h$4(
'div',
{
ref: refElem,
class: [
'vxe-textarea',
className,
((_a2 = {}),
(_a2['size--'.concat(vSize)] = vSize),
(_a2['is--autosize'] = autosize),
(_a2['is--count'] = showWordCount),
(_a2['is--disabled'] = disabled),
(_a2['def--rows'] = !xeUtils.eqNull(rows)),
(_a2['def--cols'] = !xeUtils.eqNull(cols)),
_a2),
],
},
[
h$4('textarea', {
ref: refTextarea,
class: 'vxe-textarea--inner',
value: inputValue,
name: props2.name,
placeholder: placeholder ? getFuncText(placeholder) : null,
maxlength,
readonly: props2.readonly,
disabled,
rows,
cols,
style: resize
? {
resize,
}
: null,
onInput: inputEvent,
onChange: changeEvent,
onKeydown: triggerEvent2,
onKeyup: triggerEvent2,
onClick: triggerEvent2,
onFocus: triggerEvent2,
onBlur: blurEvent,
}),
showWordCount
? h$4(
'span',
{
class: [
'vxe-textarea--count',
{
'is--error': isCountError,
},
],
},
countMethod
? ''.concat(countMethod({ value: inputValue }))
: ''
.concat(inputCount)
.concat(maxlength ? '/'.concat(maxlength) : '')
)
: null,
]
)
}
$xetextarea.renderVN = renderVN
return $xetextarea
},
render: function () {
return this.renderVN()
},
})
Object.assign(VxeTextareaComponent, {
install: function (app2) {
app2.component(VxeTextareaComponent.name, VxeTextareaComponent)
},
})
dynamicApp.component(VxeTextareaComponent.name, VxeTextareaComponent)
Object.assign(VxeButtonComponent, {
install: function (app2) {
app2.component(VxeButtonComponent.name, VxeButtonComponent)
},
})
dynamicApp.component(VxeButtonComponent.name, VxeButtonComponent)
var __assign$9 =
(globalThis && globalThis.__assign) ||
function () {
__assign$9 =
Object.assign ||
function (t3) {
for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
s2 = arguments[i2]
for (var p2 in s2)
if (Object.prototype.hasOwnProperty.call(s2, p2)) t3[p2] = s2[p2]
}
return t3
}
return __assign$9.apply(this, arguments)
}
function openModal(options2) {
checkDynamic()
return new Promise(function (resolve2) {
if (
options2 &&
options2.id &&
allActivedModals.some(function (comp) {
return comp.props.id === options2.id
})
) {
resolve2('exist')
} else {
var _onHide_1 = options2.onHide
var modalOpts_1 = Object.assign(options2, {
key: xeUtils.uniqueId(),
modelValue: true,
onHide: function (params2) {
var modalList = dynamicStore.modals
if (_onHide_1) {
_onHide_1(params2)
}
dynamicStore.modals = modalList.filter(function (item2) {
return item2.key !== modalOpts_1.key
})
resolve2(params2.type)
},
})
dynamicStore.modals.push(modalOpts_1)
}
})
}
function getModal(id2) {
return xeUtils.find(allActivedModals, function ($modal) {
return $modal.props.id === id2
})
}
function closeModal(id2) {
var modals = id2 ? [getModal(id2)] : allActivedModals
var restPromises = []
modals.forEach(function ($modal) {
if ($modal) {
restPromises.push($modal.close())
}
})
return Promise.all(restPromises)
}
function handleOpen(defOpts, content2, title, options2) {
var opts
if (xeUtils.isObject(content2)) {
opts = content2
} else {
opts = { content: xeUtils.toValueString(content2), title }
}
return openModal(
__assign$9(__assign$9(__assign$9({}, defOpts), options2), opts)
)
}
function openAlert(content2, title, options2) {
return handleOpen(
{
type: 'alert',
showFooter: true,
},
content2,
title,
options2
)
}
function openConfirm(content2, title, options2) {
return handleOpen(
{
type: 'confirm',
status: 'question',
showFooter: true,
},
content2,
title,
options2
)
}
function openMessage(content2, options2) {
return handleOpen(
{
type: 'message',
mask: false,
lockView: false,
showHeader: false,
},
content2,
'',
options2
)
}
var ModalController = {
get: getModal,
close: closeModal,
open: openModal,
alert: openAlert,
confirm: openConfirm,
message: openMessage,
}
Object.assign(VxeModalComponent, {
install: function (app2) {
app2.component(VxeModalComponent.name, VxeModalComponent)
VXETable.modal = ModalController
},
})
dynamicApp.component(VxeModalComponent.name, VxeModalComponent)
var __assign$8 =
(globalThis && globalThis.__assign) ||
function () {
__assign$8 =
Object.assign ||
function (t3) {
for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
s2 = arguments[i2]
for (var p2 in s2)
if (Object.prototype.hasOwnProperty.call(s2, p2)) t3[p2] = s2[p2]
}
return t3
}
return __assign$8.apply(this, arguments)
}
var __spreadArray$2 =
(globalThis && globalThis.__spreadArray) ||
function (to, from, pack2) {
if (pack2 || arguments.length === 2)
for (var i2 = 0, l2 = from.length, ar2; i2 < l2; i2++) {
if (ar2 || !(i2 in from)) {
if (!ar2) ar2 = Array.prototype.slice.call(from, 0, i2)
ar2[i2] = from[i2]
}
}
return to.concat(ar2 || Array.prototype.slice.call(from))
}
var VxeTooltipComponent = defineComponent({
name: 'VxeTooltip',
props: {
modelValue: Boolean,
size: {
type: String,
default: function () {
return GlobalConfig.tooltip.size || GlobalConfig.size
},
},
trigger: {
type: String,
default: function () {
return GlobalConfig.tooltip.trigger
},
},
theme: {
type: String,
default: function () {
return GlobalConfig.tooltip.theme
},
},
content: { type: [String, Number], default: null },
useHTML: Boolean,
zIndex: [String, Number],
popupClassName: [String, Function],
isArrow: { type: Boolean, default: true },
enterable: Boolean,
enterDelay: {
type: Number,
default: function () {
return GlobalConfig.tooltip.enterDelay
},
},
leaveDelay: {
type: Number,
default: function () {
return GlobalConfig.tooltip.leaveDelay
},
},
},
emits: ['update:modelValue'],
setup: function (props2, context2) {
var slots = context2.slots,
emit2 = context2.emit
var xID = xeUtils.uniqueId()
var computeSize = useSize(props2)
var reactData = reactive({
target: null,
isUpdate: false,
visible: false,
tipContent: '',
tipActive: false,
tipTarget: null,
tipZindex: 0,
tipStore: {
style: {},
placement: '',
arrowStyle: {},
},
})
var refElem = ref()
var refMaps = {
refElem,
}
var $xetooltip = {
xID,
props: props2,
context: context2,
reactData,
getRefMaps: function () {
return refMaps
},
}
var tooltipMethods = {}
var updateTipStyle = function () {
var tipTarget = reactData.tipTarget,
tipStore = reactData.tipStore
if (tipTarget) {
var _a2 = getDomNode(),
scrollTop = _a2.scrollTop,
scrollLeft = _a2.scrollLeft,
visibleWidth = _a2.visibleWidth
var _b2 = getAbsolutePos(tipTarget),
top_1 = _b2.top,
left2 = _b2.left
var el2 = refElem.value
var marginSize = 6
var offsetHeight = el2.offsetHeight
var offsetWidth = el2.offsetWidth
var tipLeft = left2
var tipTop = top_1 - offsetHeight - marginSize
tipLeft = Math.max(
marginSize,
left2 + Math.floor((tipTarget.offsetWidth - offsetWidth) / 2)
)
if (tipLeft + offsetWidth + marginSize > scrollLeft + visibleWidth) {
tipLeft = scrollLeft + visibleWidth - offsetWidth - marginSize
}
if (top_1 - offsetHeight < scrollTop + marginSize) {
tipStore.placement = 'bottom'
tipTop = top_1 + tipTarget.offsetHeight + marginSize
}
tipStore.style.top = ''.concat(tipTop, 'px')
tipStore.style.left = ''.concat(tipLeft, 'px')
tipStore.arrowStyle.left = ''.concat(
left2 - tipLeft + tipTarget.offsetWidth / 2,
'px'
)
}
}
var updateValue = function (value2) {
if (value2 !== reactData.visible) {
reactData.visible = value2
reactData.isUpdate = true
emit2('update:modelValue', value2)
}
}
var updateZindex = function () {
if (reactData.tipZindex < getLastZIndex()) {
reactData.tipZindex = nextZIndex()
}
}
var clickEvent = function () {
if (reactData.visible) {
tooltipMethods.close()
} else {
tooltipMethods.open()
}
}
var targetMouseenterEvent = function () {
tooltipMethods.open()
}
var targetMouseleaveEvent = function () {
var trigger2 = props2.trigger,
enterable = props2.enterable,
leaveDelay = props2.leaveDelay
reactData.tipActive = false
if (enterable && trigger2 === 'hover') {
setTimeout(function () {
if (!reactData.tipActive) {
tooltipMethods.close()
}
}, leaveDelay)
} else {
tooltipMethods.close()
}
}
var wrapperMouseenterEvent = function () {
reactData.tipActive = true
}
var wrapperMouseleaveEvent = function () {
var trigger2 = props2.trigger,
enterable = props2.enterable,
leaveDelay = props2.leaveDelay
reactData.tipActive = false
if (enterable && trigger2 === 'hover') {
setTimeout(function () {
if (!reactData.tipActive) {
tooltipMethods.close()
}
}, leaveDelay)
}
}
var showTip = function () {
var tipStore = reactData.tipStore
var el2 = refElem.value
if (el2) {
var parentNode2 = el2.parentNode
if (!parentNode2) {
document.body.appendChild(el2)
}
}
updateValue(true)
updateZindex()
tipStore.placement = 'top'
tipStore.style = {
width: 'auto',
left: 0,
top: 0,
zIndex: props2.zIndex || reactData.tipZindex,
}
tipStore.arrowStyle = { left: '50%' }
return tooltipMethods.updatePlacement()
}
var showDelayTip = xeUtils.debounce(
function () {
if (reactData.tipActive) {
showTip()
}
},
props2.enterDelay,
{ leading: false, trailing: true }
)
tooltipMethods = {
dispatchEvent: function (type4, params2, evnt) {
emit2(
type4,
Object.assign({ $tooltip: $xetooltip, $event: evnt }, params2)
)
},
open: function (target2, content2) {
return tooltipMethods.toVisible(target2 || reactData.target, content2)
},
close: function () {
reactData.tipTarget = null
reactData.tipActive = false
Object.assign(reactData.tipStore, {
style: {},
placement: '',
arrowStyle: null,
})
updateValue(false)
return nextTick()
},
toVisible: function (target2, content2) {
if (target2) {
var trigger2 = props2.trigger,
enterDelay = props2.enterDelay
reactData.tipActive = true
reactData.tipTarget = target2
if (content2) {
reactData.tipContent = content2
}
if (enterDelay && trigger2 === 'hover') {
showDelayTip()
} else {
return showTip()
}
}
return nextTick()
},
updatePlacement: function () {
return nextTick().then(function () {
var tipTarget = reactData.tipTarget
var el2 = refElem.value
if (tipTarget && el2) {
updateTipStyle()
return nextTick().then(updateTipStyle)
}
})
},
isActived: function () {
return reactData.tipActive
},
setActived: function (actived) {
reactData.tipActive = !!actived
},
}
Object.assign($xetooltip, tooltipMethods)
watch$1(
function () {
return props2.content
},
function () {
reactData.tipContent = props2.content
}
)
watch$1(
function () {
return props2.modelValue
},
function () {
if (!reactData.isUpdate) {
if (props2.modelValue) {
tooltipMethods.open()
} else {
tooltipMethods.close()
}
}
reactData.isUpdate = false
}
)
onMounted(function () {
nextTick(function () {
var trigger2 = props2.trigger,
content2 = props2.content,
modelValue = props2.modelValue
var wrapperElem = refElem.value
var parentNode2 = wrapperElem.parentNode
if (parentNode2) {
reactData.tipContent = content2
reactData.tipZindex = nextZIndex()
xeUtils.arrayEach(wrapperElem.children, function (elem, index2) {
if (index2 > 1) {
parentNode2.insertBefore(elem, wrapperElem)
if (!reactData.target) {
reactData.target = elem
}
}
})
parentNode2.removeChild(wrapperElem)
var target2 = reactData.target
if (target2) {
if (trigger2 === 'hover') {
target2.onmouseenter = targetMouseenterEvent
target2.onmouseleave = targetMouseleaveEvent
} else if (trigger2 === 'click') {
target2.onclick = clickEvent
}
}
if (modelValue) {
tooltipMethods.open()
}
}
})
})
onBeforeUnmount(function () {
var trigger2 = props2.trigger
var target2 = reactData.target
var wrapperElem = refElem.value
if (wrapperElem) {
var parentNode2 = wrapperElem.parentNode
if (parentNode2) {
parentNode2.removeChild(wrapperElem)
}
}
if (target2) {
if (trigger2 === 'hover') {
target2.onmouseenter = null
target2.onmouseleave = null
} else if (trigger2 === 'click') {
target2.onclick = null
}
}
})
var renderContent = function () {
var useHTML = props2.useHTML
var tipContent = reactData.tipContent
var contentSlot = slots.content
if (contentSlot) {
return h$4(
'div',
{
key: 1,
class: 'vxe-table--tooltip-content',
},
getSlotVNs(contentSlot({}))
)
}
if (useHTML) {
return h$4('div', {
key: 2,
class: 'vxe-table--tooltip-content',
innerHTML: tipContent,
})
}
return h$4(
'div',
{
key: 3,
class: 'vxe-table--tooltip-content',
},
formatText(tipContent)
)
}
var renderVN = function () {
var _a2
var popupClassName = props2.popupClassName,
theme2 = props2.theme,
isArrow = props2.isArrow,
enterable = props2.enterable
var tipActive = reactData.tipActive,
visible = reactData.visible,
tipStore = reactData.tipStore
var defaultSlot = slots.default
var vSize = computeSize.value
var ons
if (enterable) {
ons = {
onMouseenter: wrapperMouseenterEvent,
onMouseleave: wrapperMouseleaveEvent,
}
}
return h$4(
'div',
__assign$8(
{
ref: refElem,
class: [
'vxe-table--tooltip-wrapper',
'theme--'.concat(theme2),
popupClassName
? xeUtils.isFunction(popupClassName)
? popupClassName({ $tooltip: $xetooltip })
: popupClassName
: '',
((_a2 = {}),
(_a2['size--'.concat(vSize)] = vSize),
(_a2['placement--'.concat(tipStore.placement)] =
tipStore.placement),
(_a2['is--enterable'] = enterable),
(_a2['is--visible'] = visible),
(_a2['is--arrow'] = isArrow),
(_a2['is--actived'] = tipActive),
_a2),
],
style: tipStore.style,
},
ons
),
__spreadArray$2(
[
renderContent(),
h$4('div', {
class: 'vxe-table--tooltip-arrow',
style: tipStore.arrowStyle,
}),
],
defaultSlot ? getSlotVNs(defaultSlot({})) : [],
true
)
)
}
$xetooltip.renderVN = renderVN
return $xetooltip
},
render: function () {
return this.renderVN()
},
})
var VxeTooltip = Object.assign(VxeTooltipComponent, {
install: function (app2) {
VXETable.tooltip = true
app2.component(VxeTooltipComponent.name, VxeTooltipComponent)
},
})
var Tooltip = VxeTooltip
dynamicApp.component(VxeTooltipComponent.name, VxeTooltipComponent)
var ItemInfo = (function () {
function ItemInfo2($xeform, item2) {
Object.assign(this, {
id: xeUtils.uniqueId('item_'),
title: item2.title,
field: item2.field,
span: item2.span,
align: item2.align,
titleAlign: item2.titleAlign,
titleWidth: item2.titleWidth,
titleColon: item2.titleColon,
titleAsterisk: item2.titleAsterisk,
titlePrefix: item2.titlePrefix,
titleSuffix: item2.titleSuffix,
titleOverflow: item2.titleOverflow,
showTitle: item2.showTitle,
resetValue: item2.resetValue,
visibleMethod: item2.visibleMethod,
visible: item2.visible,
folding: item2.folding,
collapseNode: item2.collapseNode,
className: item2.className,
contentClassName: item2.contentClassName,
contentStyle: item2.contentStyle,
titleClassName: item2.titleClassName,
titleStyle: item2.titleStyle,
itemRender: item2.itemRender,
showError: false,
errRule: null,
slots: item2.slots,
children: [],
})
}
ItemInfo2.prototype.update = function (name2, value2) {
this[name2] = value2
}
return ItemInfo2
})()
function isFormItem(item2) {
return item2 instanceof ItemInfo
}
function createItem($xeform, _vm) {
return isFormItem(_vm) ? _vm : new ItemInfo($xeform, _vm)
}
function handleFieldOrItem($xeform, fieldOrItem) {
if (fieldOrItem) {
return xeUtils.isString(fieldOrItem)
? $xeform.getItemByField(fieldOrItem)
: fieldOrItem
}
return null
}
function isHiddenItem($xeform, formItem) {
var reactData = $xeform.reactData
var collapseAll = reactData.collapseAll
var folding = formItem.folding,
visible = formItem.visible
return visible === false || (folding && collapseAll)
}
function isActivetem($xeform, formItem) {
var visibleMethod = formItem.visibleMethod,
itemRender = formItem.itemRender,
visible = formItem.visible,
field2 = formItem.field
if (visible === false) {
return visible
}
var compConf = isEnableConf(itemRender)
? VXETable.renderer.get(itemRender.name)
: null
if (!visibleMethod && compConf && compConf.itemVisibleMethod) {
visibleMethod = compConf.itemVisibleMethod
}
if (!visibleMethod) {
return true
}
var data2 = $xeform.props.data
return visibleMethod({
data: data2,
field: field2,
property: field2,
item: formItem,
$form: $xeform,
$grid: $xeform.xegrid,
})
}
function watchItem(props2, formItem) {
Object.keys(props2).forEach(function (name2) {
watch$1(
function () {
return props2[name2]
},
function (value2) {
formItem.update(name2, value2)
}
)
})
}
function assemItem($xeform, el2, formItem, formGather) {
var reactData = $xeform.reactData
var staticItems = reactData.staticItems
var parentElem = el2.parentNode
var parentItem = formGather ? formGather.formItem : null
var parentItems = parentItem ? parentItem.children : staticItems
if (parentElem) {
parentItems.splice(
xeUtils.arrayIndexOf(parentElem.children, el2),
0,
formItem
)
reactData.staticItems = staticItems.slice(0)
}
}
function destroyItem($xeform, formItem) {
var reactData = $xeform.reactData
var staticItems = reactData.staticItems
var index2 = xeUtils.findIndexOf(staticItems, function (item2) {
return item2.id === formItem.id
})
if (index2 > -1) {
staticItems.splice(index2, 1)
}
reactData.staticItems = staticItems.slice(0)
}
var __assign$7 =
(globalThis && globalThis.__assign) ||
function () {
__assign$7 =
Object.assign ||
function (t3) {
for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
s2 = arguments[i2]
for (var p2 in s2)
if (Object.prototype.hasOwnProperty.call(s2, p2)) t3[p2] = s2[p2]
}
return t3
}
return __assign$7.apply(this, arguments)
}
function renderPrefixIcon(titlePrefix) {
return h$4(
'span',
{
class: 'vxe-form--item-title-prefix',
},
[
h$4('i', {
class: titlePrefix.icon || GlobalConfig.icon.FORM_PREFIX,
}),
]
)
}
function renderSuffixIcon(titleSuffix) {
return h$4(
'span',
{
class: 'vxe-form--item-title-suffix',
},
[
h$4('i', {
class: titleSuffix.icon || GlobalConfig.icon.FORM_SUFFIX,
}),
]
)
}
function renderTitle($xeform, item2) {
var data2 = $xeform.props.data
var computeTooltipOpts = $xeform.getComputeMaps().computeTooltipOpts
var slots = item2.slots,
field2 = item2.field,
itemRender = item2.itemRender,
titlePrefix = item2.titlePrefix,
titleSuffix = item2.titleSuffix
var tooltipOpts = computeTooltipOpts.value
var compConf = isEnableConf(itemRender)
? VXETable.renderer.get(itemRender.name)
: null
var params2 = {
data: data2,
field: field2,
property: field2,
item: item2,
$form: $xeform,
$grid: $xeform.xegrid,
}
var titleSlot = slots ? slots.title : null
var contVNs = []
var titVNs = []
if (titlePrefix) {
titVNs.push(
titlePrefix.content || titlePrefix.message
? h$4(
resolveComponent('vxe-tooltip'),
__assign$7(__assign$7(__assign$7({}, tooltipOpts), titlePrefix), {
content: getFuncText(titlePrefix.content || titlePrefix.message),
}),
{
default: function () {
return renderPrefixIcon(titlePrefix)
},
}
)
: renderPrefixIcon(titlePrefix)
)
}
titVNs.push(
h$4(
'span',
{
class: 'vxe-form--item-title-label',
},
compConf && compConf.renderItemTitle
? getSlotVNs(compConf.renderItemTitle(itemRender, params2))
: titleSlot
? $xeform.callSlot(titleSlot, params2)
: getFuncText(item2.title)
)
)
contVNs.push(
h$4(
'div',
{
class: 'vxe-form--item-title-content',
},
titVNs
)
)
var fixVNs = []
if (titleSuffix) {
fixVNs.push(
titleSuffix.content || titleSuffix.message
? h$4(
resolveComponent('vxe-tooltip'),
__assign$7(__assign$7(__assign$7({}, tooltipOpts), titleSuffix), {
content: getFuncText(titleSuffix.content || titleSuffix.message),
}),
{
default: function () {
return renderSuffixIcon(titleSuffix)
},
}
)
: renderSuffixIcon(titleSuffix)
)
}
contVNs.push(
h$4(
'div',
{
class: 'vxe-form--item-title-postfix',
},
fixVNs
)
)
return contVNs
}
var __assign$6 =
(globalThis && globalThis.__assign) ||
function () {
__assign$6 =
Object.assign ||
function (t3) {
for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
s2 = arguments[i2]
for (var p2 in s2)
if (Object.prototype.hasOwnProperty.call(s2, p2)) t3[p2] = s2[p2]
}
return t3
}
return __assign$6.apply(this, arguments)
}
var VxeFormConfigItem = defineComponent({
name: 'VxeFormConfigItem',
props: {
itemConfig: Object,
},
setup: function (props2) {
var $xeform = inject('$xeform', {})
var xeformiteminfo = { itemConfig: props2.itemConfig }
provide('$xeformiteminfo', xeformiteminfo)
provide('$xeformgather', null)
var renderVN = function () {
var reactData = $xeform.reactData
var _a2 = $xeform.props,
data2 = _a2.data,
rules2 = _a2.rules,
allSpan = _a2.span,
allAlign = _a2.align,
allTitleAlign = _a2.titleAlign,
allTitleWidth = _a2.titleWidth,
allTitleColon = _a2.titleColon,
allTitleAsterisk = _a2.titleAsterisk,
allTitleOverflow = _a2.titleOverflow,
allVertical = _a2.vertical
var computeValidOpts = $xeform.getComputeMaps().computeValidOpts
var item2 = props2.itemConfig
var collapseAll = reactData.collapseAll
var validOpts = computeValidOpts.value
var slots = item2.slots,
title = item2.title,
visible = item2.visible,
folding = item2.folding,
field2 = item2.field,
collapseNode = item2.collapseNode,
itemRender = item2.itemRender,
showError = item2.showError,
errRule = item2.errRule,
className = item2.className,
titleOverflow = item2.titleOverflow,
vertical = item2.vertical,
children = item2.children,
showTitle = item2.showTitle,
contentClassName = item2.contentClassName,
contentStyle = item2.contentStyle,
titleClassName = item2.titleClassName,
titleStyle = item2.titleStyle
var compConf = isEnableConf(itemRender)
? VXETable.renderer.get(itemRender.name)
: null
var itemClassName = compConf ? compConf.itemClassName : ''
var itemStyle = compConf ? compConf.itemStyle : null
var itemContentClassName = compConf ? compConf.itemContentClassName : ''
var itemContentStyle = compConf ? compConf.itemContentStyle : null
var itemTitleClassName = compConf ? compConf.itemTitleClassName : ''
var itemTitleStyle = compConf ? compConf.itemTitleStyle : null
var defaultSlot = slots ? slots.default : null
var titleSlot = slots ? slots.title : null
var span = item2.span || allSpan
var align = item2.align || allAlign
var titleAlign = xeUtils.eqNull(item2.titleAlign)
? allTitleAlign
: item2.titleAlign
var titleWidth = xeUtils.eqNull(item2.titleWidth)
? allTitleWidth
: item2.titleWidth
var titleColon = xeUtils.eqNull(item2.titleColon)
? allTitleColon
: item2.titleColon
var titleAsterisk = xeUtils.eqNull(item2.titleAsterisk)
? allTitleAsterisk
: item2.titleAsterisk
var itemOverflow =
xeUtils.isUndefined(titleOverflow) || xeUtils.isNull(titleOverflow)
? allTitleOverflow
: titleOverflow
var itemVertical =
xeUtils.isUndefined(vertical) || xeUtils.isNull(vertical)
? allVertical
: vertical
var ovEllipsis = itemOverflow === 'ellipsis'
var ovTitle = itemOverflow === 'title'
var ovTooltip = itemOverflow === true || itemOverflow === 'tooltip'
var hasEllipsis = ovTitle || ovTooltip || ovEllipsis
var params2 = {
data: data2,
field: field2,
property: field2,
item: item2,
$form: $xeform,
$grid: $xeform.xegrid,
}
if (visible === false) {
return createCommentVNode()
}
var isRequired = false
if (rules2) {
var itemRules = rules2[field2]
if (itemRules) {
isRequired = itemRules.some(function (rule2) {
return rule2.required
})
}
}
var isGather = children && children.length > 0
if (isGather) {
var childVNs = children.map(function (childItem, index2) {
return h$4(VxeFormConfigItem, {
key: index2,
itemConfig: childItem,
})
})
return childVNs.length
? h$4(
'div',
{
class: [
'vxe-form--gather vxe-row',
item2.id,
span ? 'vxe-col--'.concat(span, ' is--span') : '',
className
? xeUtils.isFunction(className)
? className(params2)
: className
: '',
],
},
childVNs
)
: createCommentVNode()
}
var contentVNs = []
if (defaultSlot) {
contentVNs = $xeform.callSlot(defaultSlot, params2)
} else if (compConf && compConf.renderItemContent) {
contentVNs = getSlotVNs(compConf.renderItemContent(itemRender, params2))
} else if (field2) {
contentVNs = [xeUtils.toValueString(xeUtils.get(data2, field2))]
}
if (collapseNode) {
contentVNs.push(
h$4(
'div',
{
class: 'vxe-form--item-trigger-node',
onClick: $xeform.toggleCollapseEvent,
},
[
h$4(
'span',
{
class: 'vxe-form--item-trigger-text',
},
collapseAll
? GlobalConfig.i18n('vxe.form.unfolding')
: GlobalConfig.i18n('vxe.form.folding')
),
h$4('i', {
class: [
'vxe-form--item-trigger-icon',
collapseAll
? GlobalConfig.icon.FORM_FOLDING
: GlobalConfig.icon.FORM_UNFOLDING,
],
}),
]
)
)
}
if (errRule && validOpts.showMessage) {
contentVNs.push(
h$4(
'div',
{
class: 'vxe-form--item-valid',
style: errRule.maxWidth
? {
width: ''.concat(errRule.maxWidth, 'px'),
}
: null,
},
errRule.content
)
)
}
var ons = ovTooltip
? {
onMouseenter: function (evnt) {
$xeform.triggerTitleTipEvent(evnt, params2)
},
onMouseleave: $xeform.handleTitleTipLeaveEvent,
}
: {}
return h$4(
'div',
{
class: [
'vxe-form--item',
item2.id,
span ? 'vxe-col--'.concat(span, ' is--span') : '',
className
? xeUtils.isFunction(className)
? className(params2)
: className
: '',
itemClassName
? xeUtils.isFunction(itemClassName)
? itemClassName(params2)
: itemClassName
: '',
{
'is--title': title,
'is--colon': titleColon,
'is--vertical': itemVertical,
'is--asterisk': titleAsterisk,
'is--required': isRequired,
'is--hidden': folding && collapseAll,
'is--active': isActivetem($xeform, item2),
'is--error': showError,
},
],
style: xeUtils.isFunction(itemStyle) ? itemStyle(params2) : itemStyle,
},
[
h$4(
'div',
{
class: 'vxe-form--item-inner',
},
[
showTitle !== false && (title || titleSlot)
? h$4(
'div',
__assign$6(
{
class: [
'vxe-form--item-title',
titleAlign ? 'align--'.concat(titleAlign) : '',
hasEllipsis ? 'is--ellipsis' : '',
itemTitleClassName
? xeUtils.isFunction(itemTitleClassName)
? itemTitleClassName(params2)
: itemTitleClassName
: '',
titleClassName
? xeUtils.isFunction(titleClassName)
? titleClassName(params2)
: titleClassName
: '',
],
style: Object.assign(
{},
xeUtils.isFunction(itemTitleStyle)
? itemTitleStyle(params2)
: itemTitleStyle,
xeUtils.isFunction(titleStyle)
? titleStyle(params2)
: titleStyle,
titleWidth
? {
width: isNaN(titleWidth)
? titleWidth
: ''.concat(titleWidth, 'px'),
}
: null
),
title: ovTitle ? getFuncText(title) : null,
},
ons
),
renderTitle($xeform, item2)
)
: null,
h$4(
'div',
{
class: [
'vxe-form--item-content',
align ? 'align--'.concat(align) : '',
itemContentClassName
? xeUtils.isFunction(itemContentClassName)
? itemContentClassName(params2)
: itemContentClassName
: '',
contentClassName
? xeUtils.isFunction(contentClassName)
? contentClassName(params2)
: contentClassName
: '',
],
style: Object.assign(
{},
xeUtils.isFunction(itemContentStyle)
? itemContentStyle(params2)
: itemContentStyle,
xeUtils.isFunction(contentStyle)
? contentStyle(params2)
: contentStyle
),
},
contentVNs
),
]
),
]
)
}
var $xeformconfigitem = {
renderVN,
}
return $xeformconfigitem
},
render: function () {
return this.renderVN()
},
})
var __assign$5 =
(globalThis && globalThis.__assign) ||
function () {
__assign$5 =
Object.assign ||
function (t3) {
for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
s2 = arguments[i2]
for (var p2 in s2)
if (Object.prototype.hasOwnProperty.call(s2, p2)) t3[p2] = s2[p2]
}
return t3
}
return __assign$5.apply(this, arguments)
}
var Rule = (function () {
function Rule2(rule2) {
Object.assign(this, {
$options: rule2,
required: rule2.required,
min: rule2.min,
max: rule2.min,
type: rule2.type,
pattern: rule2.pattern,
validator: rule2.validator,
trigger: rule2.trigger,
maxWidth: rule2.maxWidth,
})
}
Object.defineProperty(Rule2.prototype, 'content', {
get: function () {
return getFuncText(this.$options.content || this.$options.message)
},
enumerable: false,
configurable: true,
})
Object.defineProperty(Rule2.prototype, 'message', {
get: function () {
return this.content
},
enumerable: false,
configurable: true,
})
return Rule2
})()
var validErrorRuleValue = function (rule2, val2) {
var type4 = rule2.type,
min3 = rule2.min,
max3 = rule2.max,
pattern4 = rule2.pattern
var isNumType = type4 === 'number'
var numVal = isNumType ? xeUtils.toNumber(val2) : xeUtils.getSize(val2)
if (isNumType && isNaN(val2)) {
return true
}
if (!xeUtils.eqNull(min3) && numVal < xeUtils.toNumber(min3)) {
return true
}
if (!xeUtils.eqNull(max3) && numVal > xeUtils.toNumber(max3)) {
return true
}
if (
pattern4 &&
!(xeUtils.isRegExp(pattern4) ? pattern4 : new RegExp(pattern4)).test(val2)
) {
return true
}
return false
}
function getResetValue(value2, resetValue) {
if (xeUtils.isArray(value2)) {
resetValue = []
}
return resetValue
}
var VxeFormComponent = defineComponent({
name: 'VxeForm',
props: {
collapseStatus: { type: Boolean, default: true },
loading: Boolean,
data: Object,
size: {
type: String,
default: function () {
return GlobalConfig.form.size || GlobalConfig.size
},
},
span: {
type: [String, Number],
default: function () {
return GlobalConfig.form.span
},
},
align: {
type: String,
default: function () {
return GlobalConfig.form.align
},
},
titleAlign: {
type: String,
default: function () {
return GlobalConfig.form.titleAlign
},
},
titleWidth: {
type: [String, Number],
default: function () {
return GlobalConfig.form.titleWidth
},
},
titleColon: {
type: Boolean,
default: function () {
return GlobalConfig.form.titleColon
},
},
titleAsterisk: {
type: Boolean,
default: function () {
return GlobalConfig.form.titleAsterisk
},
},
titleOverflow: { type: [Boolean, String], default: null },
vertical: {
type: Boolean,
default: null,
},
className: [String, Function],
readonly: Boolean,
items: Array,
rules: Object,
preventSubmit: {
type: Boolean,
default: function () {
return GlobalConfig.form.preventSubmit
},
},
validConfig: Object,
tooltipConfig: Object,
customLayout: {
type: Boolean,
default: function () {
return GlobalConfig.form.customLayout
},
},
},
emits: [
'update:collapseStatus',
'collapse',
'toggle-collapse',
'submit',
'submit-invalid',
'reset',
],
setup: function (props2, context2) {
var hasUseTooltip = VXETable.tooltip
var slots = context2.slots,
emit2 = context2.emit
var xID = xeUtils.uniqueId()
var computeSize = useSize(props2)
var reactData = reactive({
collapseAll: props2.collapseStatus,
staticItems: [],
formItems: [],
})
var internalData = reactive({
tooltipTimeout: null,
tooltipStore: {
item: null,
visible: false,
},
})
var $xegrid = inject('$xegrid', null)
var refElem = ref()
var refTooltip = ref()
var formMethods = {}
var computeValidOpts = computed(function () {
return Object.assign(
{},
GlobalConfig.form.validConfig,
props2.validConfig
)
})
var computeTooltipOpts = computed(function () {
return Object.assign(
{},
GlobalConfig.tooltip,
GlobalConfig.form.tooltipConfig,
props2.tooltipConfig
)
})
var refMaps = {
refElem,
}
var computeMaps = {
computeSize,
computeValidOpts,
computeTooltipOpts,
}
var $xeform = {
xID,
props: props2,
context: context2,
reactData,
xegrid: $xegrid,
getRefMaps: function () {
return refMaps
},
getComputeMaps: function () {
return computeMaps
},
}
var callSlot = function (slotFunc, params2) {
if (slotFunc) {
if (xeUtils.isString(slotFunc)) {
slotFunc = slots[slotFunc] || null
}
if (xeUtils.isFunction(slotFunc)) {
return getSlotVNs(slotFunc(params2))
}
}
return []
}
var loadItem = function (list2) {
if (list2.length) {
reactData.staticItems = xeUtils.mapTree(
list2,
function (item2) {
return createItem($xeform, item2)
},
{ children: 'children' }
)
}
return nextTick()
}
var getItems = function () {
var itemList = []
xeUtils.eachTree(
reactData.formItems,
function (item2) {
itemList.push(item2)
},
{ children: 'children' }
)
return itemList
}
var getItemByField = function (field2) {
var rest = xeUtils.findTree(
reactData.formItems,
function (item2) {
return item2.field === field2
},
{ children: 'children' }
)
return rest ? rest.item : null
}
var getCollapseStatus = function () {
return reactData.collapseAll
}
var toggleCollapse = function () {
var status = !getCollapseStatus()
reactData.collapseAll = status
emit2('update:collapseStatus', status)
return nextTick()
}
var toggleCollapseEvent = function (evnt) {
toggleCollapse()
var status = getCollapseStatus()
formMethods.dispatchEvent(
'toggle-collapse',
{ status, collapse: status, data: props2.data },
evnt
)
formMethods.dispatchEvent(
'collapse',
{ status, collapse: status, data: props2.data },
evnt
)
}
var clearValidate = function (fieldOrItem) {
if (fieldOrItem) {
var fields = fieldOrItem
if (!xeUtils.isArray(fieldOrItem)) {
fields = [fieldOrItem]
}
fields.forEach(function (field2) {
if (field2) {
var item2 = handleFieldOrItem($xeform, field2)
if (item2) {
item2.showError = false
}
}
})
} else {
getItems().forEach(function (item2) {
item2.showError = false
})
}
return nextTick()
}
var reset2 = function () {
var data2 = props2.data
var itemList = getItems()
if (data2) {
itemList.forEach(function (item2) {
var field2 = item2.field,
resetValue = item2.resetValue,
itemRender = item2.itemRender
if (isEnableConf(itemRender)) {
var compConf = VXETable.renderer.get(itemRender.name)
if (compConf && compConf.itemResetMethod) {
compConf.itemResetMethod({
data: data2,
field: field2,
property: field2,
item: item2,
$form: $xeform,
$grid: $xeform.xegrid,
})
} else if (field2) {
xeUtils.set(
data2,
field2,
resetValue === null
? getResetValue(xeUtils.get(data2, field2), void 0)
: xeUtils.clone(resetValue, true)
)
}
}
})
}
return clearValidate()
}
var resetEvent = function (evnt) {
evnt.preventDefault()
reset2()
formMethods.dispatchEvent('reset', { data: props2.data }, evnt)
}
var handleFocus = function (fields) {
var el2 = refElem.value
for (var i2 = 0; i2 < fields.length; i2++) {
var property2 = fields[i2]
var item2 = getItemByField(property2)
if (item2 && isEnableConf(item2.itemRender)) {
var itemRender = item2.itemRender
var compConf = VXETable.renderer.get(itemRender.name)
var inputElem = null
if (!i2) {
scrollToView(el2.querySelector('.'.concat(item2.id)))
}
if (itemRender.autofocus) {
inputElem = el2.querySelector(
'.'.concat(item2.id, ' ').concat(itemRender.autofocus)
)
}
if (!inputElem && compConf && compConf.autofocus) {
inputElem = el2.querySelector(
'.'.concat(item2.id, ' ').concat(compConf.autofocus)
)
}
if (inputElem) {
inputElem.focus()
break
}
}
}
}
var validItemRules = function (validType, fields, val2) {
var data2 = props2.data,
formRules = props2.rules
var errorMaps = {}
if (!xeUtils.isArray(fields)) {
fields = [fields]
}
return Promise.all(
fields.map(function (property2) {
var errorRules = []
var syncVailds = []
if (property2 && formRules) {
var rules_1 = xeUtils.get(formRules, property2)
if (rules_1) {
var itemValue_1 = xeUtils.isUndefined(val2)
? xeUtils.get(data2, property2)
: val2
rules_1.forEach(function (rule2) {
var type4 = rule2.type,
trigger2 = rule2.trigger,
required4 = rule2.required,
validator2 = rule2.validator
if (
validType === 'all' ||
!trigger2 ||
validType === trigger2
) {
if (validator2) {
var validParams = {
itemValue: itemValue_1,
rule: rule2,
rules: rules_1,
data: data2,
field: property2,
property: property2,
$form: $xeform,
}
var customValid = void 0
if (xeUtils.isString(validator2)) {
var gvItem = VXETable.validators.get(validator2)
if (gvItem) {
if (gvItem.itemValidatorMethod) {
customValid = gvItem.itemValidatorMethod(validParams)
}
}
} else {
customValid = validator2(validParams)
}
if (customValid) {
if (xeUtils.isError(customValid)) {
errorRules.push(
new Rule({
type: 'custom',
trigger: trigger2,
content: customValid.message,
rule: new Rule(rule2),
})
)
} else if (customValid.catch) {
syncVailds.push(
customValid.catch(function (e2) {
errorRules.push(
new Rule({
type: 'custom',
trigger: trigger2,
content: e2
? e2.message
: rule2.content || rule2.message,
rule: new Rule(rule2),
})
)
})
)
}
}
} else {
var isArrType = type4 === 'array'
var isArrVal = xeUtils.isArray(itemValue_1)
var hasEmpty = true
if (isArrType || isArrVal) {
hasEmpty = !isArrVal || !itemValue_1.length
} else if (xeUtils.isString(itemValue_1)) {
hasEmpty = eqEmptyValue(itemValue_1.trim())
} else {
hasEmpty = eqEmptyValue(itemValue_1)
}
if (
required4
? hasEmpty || validErrorRuleValue(rule2, itemValue_1)
: !hasEmpty && validErrorRuleValue(rule2, itemValue_1)
) {
errorRules.push(new Rule(rule2))
}
}
}
})
}
}
return Promise.all(syncVailds).then(function () {
if (errorRules.length) {
errorMaps[property2] = errorRules.map(function (rule2) {
return {
$form: $xeform,
rule: rule2,
data: data2,
field: property2,
property: property2,
}
})
}
})
})
).then(function () {
if (!xeUtils.isEmpty(errorMaps)) {
return Promise.reject(errorMaps)
}
})
}
var showErrTime
var beginValidate = function (itemList, type4, callback) {
var data2 = props2.data,
formRules = props2.rules
var validOpts = computeValidOpts.value
var validRest = {}
var validFields = []
var itemValids = []
clearTimeout(showErrTime)
if (data2 && formRules) {
itemList.forEach(function (item2) {
var field2 = item2.field
if (
field2 &&
!isHiddenItem($xeform, item2) &&
isActivetem($xeform, item2)
) {
itemValids.push(
validItemRules(type4 || 'all', field2)
.then(function () {
item2.errRule = null
})
.catch(function (errorMaps) {
var rest = errorMaps[field2]
if (!validRest[field2]) {
validRest[field2] = []
}
validRest[field2].push(rest)
validFields.push(field2)
item2.errRule = rest[0].rule
return Promise.reject(rest)
})
)
}
})
return Promise.all(itemValids)
.then(function () {
if (callback) {
callback()
}
})
.catch(function () {
return new Promise(function (resolve2) {
showErrTime = window.setTimeout(function () {
itemList.forEach(function (item2) {
if (item2.errRule) {
item2.showError = true
}
})
}, 20)
if (validOpts.autoPos !== false) {
nextTick(function () {
handleFocus(validFields)
})
}
if (callback) {
callback(validRest)
resolve2()
} else {
resolve2(validRest)
}
})
})
}
if (callback) {
callback()
}
return Promise.resolve()
}
var validate = function (callback) {
clearValidate()
return beginValidate(getItems(), '', callback)
}
var validateField = function (fieldOrItem, callback) {
var fields = []
if (xeUtils.isArray(fieldOrItem)) {
fields = fieldOrItem
} else {
fields = [fieldOrItem]
}
return beginValidate(
fields.map(function (field2) {
return handleFieldOrItem($xeform, field2)
}),
'',
callback
)
}
var submitEvent = function (evnt) {
evnt.preventDefault()
if (!props2.preventSubmit) {
clearValidate()
beginValidate(getItems()).then(function (errMap) {
if (errMap) {
formMethods.dispatchEvent(
'submit-invalid',
{ data: props2.data, errMap },
evnt
)
} else {
formMethods.dispatchEvent('submit', { data: props2.data }, evnt)
}
})
}
}
var closeTooltip = function () {
var tooltipStore = internalData.tooltipStore
var $tooltip = refTooltip.value
if (tooltipStore.visible) {
Object.assign(tooltipStore, {
item: null,
visible: false,
})
if ($tooltip) {
$tooltip.close()
}
}
return nextTick()
}
var triggerTitleTipEvent = function (evnt, params2) {
var item2 = params2.item
var tooltipStore = internalData.tooltipStore
var $tooltip = refTooltip.value
var overflowElem = evnt.currentTarget.children[0]
var content2 = (overflowElem.textContent || '').trim()
var isCellOverflow = overflowElem.scrollWidth > overflowElem.clientWidth
clearTimeout(internalData.tooltipTimeout)
if (tooltipStore.item !== item2) {
closeTooltip()
}
if (content2 && isCellOverflow) {
Object.assign(tooltipStore, {
item: item2,
visible: true,
})
if ($tooltip) {
$tooltip.open(overflowElem, content2)
}
}
}
var handleTitleTipLeaveEvent = function () {
var tooltipOpts = computeTooltipOpts.value
var $tooltip = refTooltip.value
if ($tooltip) {
$tooltip.setActived(false)
}
if (tooltipOpts.enterable) {
internalData.tooltipTimeout = setTimeout(function () {
$tooltip = refTooltip.value
if ($tooltip && !$tooltip.isActived()) {
closeTooltip()
}
}, tooltipOpts.leaveDelay)
} else {
closeTooltip()
}
}
var triggerItemEvent = function (evnt, field2, itemValue) {
if (field2) {
return validItemRules(
evnt ? (['blur'].includes(evnt.type) ? 'blur' : 'change') : 'all',
field2,
itemValue
)
.then(function () {
clearValidate(field2)
})
.catch(function (errorMaps) {
var rest = errorMaps[field2]
var item2 = getItemByField(field2)
if (rest && item2) {
item2.showError = true
item2.errRule = rest[0].rule
}
})
}
return nextTick()
}
var updateStatus = function (scope, itemValue) {
var field2 = scope.field
return triggerItemEvent(new Event('change'), field2, itemValue)
}
formMethods = {
dispatchEvent: function (type4, params2, evnt) {
emit2(
type4,
Object.assign(
{ $form: $xeform, $grid: $xegrid, $event: evnt },
params2
)
)
},
reset: reset2,
validate,
validateField,
clearValidate,
updateStatus,
toggleCollapse,
getItems,
getItemByField,
closeTooltip,
}
var formPrivateMethods = {
callSlot,
triggerItemEvent,
toggleCollapseEvent,
triggerTitleTipEvent,
handleTitleTipLeaveEvent,
}
Object.assign($xeform, formMethods, formPrivateMethods)
var staticItemFlag = ref(0)
watch$1(
function () {
return reactData.staticItems.length
},
function () {
staticItemFlag.value++
}
)
watch$1(
function () {
return reactData.staticItems
},
function () {
staticItemFlag.value++
}
)
watch$1(staticItemFlag, function () {
reactData.formItems = reactData.staticItems
})
var itemFlag = ref(0)
watch$1(
function () {
return props2.items ? props2.items.length : -1
},
function () {
itemFlag.value++
}
)
watch$1(
function () {
return props2.items
},
function () {
itemFlag.value++
}
)
watch$1(itemFlag, function () {
loadItem(props2.items || [])
})
watch$1(
function () {
return props2.collapseStatus
},
function (value2) {
reactData.collapseAll = !!value2
}
)
onMounted(function () {
nextTick(function () {
loadItem(props2.items || [])
})
})
var renderVN = function () {
var _a2
var loading2 = props2.loading,
className = props2.className,
data2 = props2.data,
customLayout = props2.customLayout
var formItems = reactData.formItems
var vSize = computeSize.value
var tooltipOpts = computeTooltipOpts.value
var defaultSlot = slots.default
return h$4(
'form',
{
ref: refElem,
class: [
'vxe-form',
className
? xeUtils.isFunction(className)
? className({ items: formItems, data: data2, $form: $xeform })
: className
: '',
((_a2 = {}),
(_a2['size--'.concat(vSize)] = vSize),
(_a2['is--loading'] = loading2),
_a2),
],
onSubmit: submitEvent,
onReset: resetEvent,
},
[
h$4(
'div',
{
class: 'vxe-form--wrapper vxe-row',
},
customLayout
? defaultSlot
? defaultSlot({})
: []
: formItems.map(function (item2, index2) {
return h$4(VxeFormConfigItem, {
key: index2,
itemConfig: item2,
})
})
),
h$4(
'div',
{
class: 'vxe-form-slots',
ref: 'hideItem',
},
customLayout ? [] : defaultSlot ? defaultSlot({}) : []
),
h$4(VxeLoading, {
class: 'vxe-form--loading',
modelValue: loading2,
}),
hasUseTooltip
? h$4(
resolveComponent('vxe-tooltip'),
__assign$5({ ref: refTooltip }, tooltipOpts)
)
: createCommentVNode(),
]
)
}
$xeform.renderVN = renderVN
provide('$xeform', $xeform)
provide('$xeformgather', null)
provide('$xeformitem', null)
provide('$xeformiteminfo', null)
return $xeform
},
render: function () {
return this.renderVN()
},
})
Object.assign(VxeFormComponent, {
install: function (app2) {
app2.component(VxeFormComponent.name, VxeFormComponent)
},
})
dynamicApp.component(VxeFormComponent.name, VxeFormComponent)
var __assign$4 =
(globalThis && globalThis.__assign) ||
function () {
__assign$4 =
Object.assign ||
function (t3) {
for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
s2 = arguments[i2]
for (var p2 in s2)
if (Object.prototype.hasOwnProperty.call(s2, p2)) t3[p2] = s2[p2]
}
return t3
}
return __assign$4.apply(this, arguments)
}
var formItemProps = {
title: String,
field: String,
span: [String, Number],
align: String,
titleAlign: {
type: String,
default: null,
},
titleWidth: {
type: [String, Number],
default: null,
},
titleColon: {
type: Boolean,
default: null,
},
titleAsterisk: {
type: Boolean,
default: null,
},
showTitle: {
type: Boolean,
default: true,
},
vertical: {
type: Boolean,
default: null,
},
className: [String, Function],
contentClassName: [String, Function],
contentStyle: [Object, Function],
titleClassName: [String, Function],
titleStyle: [Object, Function],
titleOverflow: {
type: [Boolean, String],
default: null,
},
titlePrefix: Object,
titleSuffix: Object,
resetValue: { default: null },
visibleMethod: Function,
visible: { type: Boolean, default: null },
folding: Boolean,
collapseNode: Boolean,
itemRender: Object,
}
var VxeFormItemComponent = defineComponent({
name: 'VxeFormItem',
props: formItemProps,
setup: function (props2, _a2) {
var slots = _a2.slots
var refElem = ref()
var $xeform = inject('$xeform', {})
var formGather = inject('$xeformgather', null)
var formItem = reactive(createItem($xeform, props2))
var xeformitem = { formItem }
var xeformiteminfo = { itemConfig: formItem }
formItem.slots = slots
provide('$xeformiteminfo', xeformiteminfo)
provide('$xeformitem', xeformitem)
provide('$xeformgather', null)
watchItem(props2, formItem)
onMounted(function () {
assemItem($xeform, refElem.value, formItem, formGather)
})
onUnmounted(function () {
destroyItem($xeform, formItem)
})
var renderItem = function ($xeform2, item2) {
var props3 = $xeform2.props,
reactData = $xeform2.reactData
var data2 = props3.data,
rules2 = props3.rules,
allTitleAlign = props3.titleAlign,
allTitleWidth = props3.titleWidth,
allTitleColon = props3.titleColon,
allTitleAsterisk = props3.titleAsterisk,
allTitleOverflow = props3.titleOverflow,
allVertical = props3.vertical
var collapseAll = reactData.collapseAll
var computeValidOpts = $xeform2.getComputeMaps().computeValidOpts
var validOpts = computeValidOpts.value
var slots2 = item2.slots,
title = item2.title,
visible = item2.visible,
folding = item2.folding,
field2 = item2.field,
collapseNode = item2.collapseNode,
itemRender = item2.itemRender,
showError = item2.showError,
errRule = item2.errRule,
className = item2.className,
titleOverflow = item2.titleOverflow,
vertical = item2.vertical,
showTitle = item2.showTitle,
contentClassName = item2.contentClassName,
contentStyle = item2.contentStyle,
titleClassName = item2.titleClassName,
titleStyle = item2.titleStyle
var compConf = isEnableConf(itemRender)
? VXETable.renderer.get(itemRender.name)
: null
var itemClassName = compConf ? compConf.itemClassName : ''
var itemStyle = compConf ? compConf.itemStyle : null
var itemContentClassName = compConf ? compConf.itemContentClassName : ''
var itemContentStyle = compConf ? compConf.itemContentStyle : null
var itemTitleClassName = compConf ? compConf.itemTitleClassName : ''
var itemTitleStyle = compConf ? compConf.itemTitleStyle : null
var defaultSlot = slots2 ? slots2.default : null
var titleSlot = slots2 ? slots2.title : null
var span = item2.span || props3.span
var align = item2.align || props3.align
var titleAlign = xeUtils.eqNull(item2.titleAlign)
? allTitleAlign
: item2.titleAlign
var titleWidth = xeUtils.eqNull(item2.titleWidth)
? allTitleWidth
: item2.titleWidth
var titleColon = xeUtils.eqNull(item2.titleColon)
? allTitleColon
: item2.titleColon
var titleAsterisk = xeUtils.eqNull(item2.titleAsterisk)
? allTitleAsterisk
: item2.titleAsterisk
var itemOverflow =
xeUtils.isUndefined(titleOverflow) || xeUtils.isNull(titleOverflow)
? allTitleOverflow
: titleOverflow
var itemVertical =
xeUtils.isUndefined(vertical) || xeUtils.isNull(vertical)
? allVertical
: vertical
var ovEllipsis = itemOverflow === 'ellipsis'
var ovTitle = itemOverflow === 'title'
var ovTooltip = itemOverflow === true || itemOverflow === 'tooltip'
var hasEllipsis = ovTitle || ovTooltip || ovEllipsis
var params2 = {
data: data2,
field: field2,
property: field2,
item: item2,
$form: $xeform2,
$grid: $xeform2.xegrid,
}
var isRequired = false
if (visible === false) {
return createCommentVNode()
}
if (rules2) {
var itemRules = rules2[field2]
if (itemRules) {
isRequired = itemRules.some(function (rule2) {
return rule2.required
})
}
}
var contentVNs = []
if (defaultSlot) {
contentVNs = $xeform2.callSlot(defaultSlot, params2)
} else if (compConf && compConf.renderItemContent) {
contentVNs = getSlotVNs(compConf.renderItemContent(itemRender, params2))
} else if (field2) {
contentVNs = [''.concat(xeUtils.get(data2, field2))]
}
if (collapseNode) {
contentVNs.push(
h$4(
'div',
{
class: 'vxe-form--item-trigger-node',
onClick: $xeform2.toggleCollapseEvent,
},
[
h$4(
'span',
{
class: 'vxe-form--item-trigger-text',
},
collapseAll
? GlobalConfig.i18n('vxe.form.unfolding')
: GlobalConfig.i18n('vxe.form.folding')
),
h$4('i', {
class: [
'vxe-form--item-trigger-icon',
collapseAll
? GlobalConfig.icon.FORM_FOLDING
: GlobalConfig.icon.FORM_UNFOLDING,
],
}),
]
)
)
}
if (errRule && validOpts.showMessage) {
contentVNs.push(
h$4(
'div',
{
class: 'vxe-form--item-valid',
style: errRule.maxWidth
? {
width: ''.concat(errRule.maxWidth, 'px'),
}
: null,
},
errRule.message
)
)
}
var ons = ovTooltip
? {
onMouseenter: function (evnt) {
$xeform2.triggerTitleTipEvent(evnt, params2)
},
onMouseleave: $xeform2.handleTitleTipLeaveEvent,
}
: {}
return h$4(
'div',
{
ref: refElem,
class: [
'vxe-form--item',
item2.id,
span ? 'vxe-col--'.concat(span, ' is--span') : '',
className
? xeUtils.isFunction(className)
? className(params2)
: className
: '',
itemClassName
? xeUtils.isFunction(itemClassName)
? itemClassName(params2)
: itemClassName
: '',
{
'is--title': title,
'is--colon': titleColon,
'is--vertical': itemVertical,
'is--asterisk': titleAsterisk,
'is--required': isRequired,
'is--hidden': folding && collapseAll,
'is--active': isActivetem($xeform2, item2),
'is--error': showError,
},
],
style: xeUtils.isFunction(itemStyle) ? itemStyle(params2) : itemStyle,
},
[
h$4(
'div',
{
class: 'vxe-form--item-inner',
},
[
showTitle !== false && (title || titleSlot)
? h$4(
'div',
__assign$4(
{
class: [
'vxe-form--item-title',
titleAlign ? 'align--'.concat(titleAlign) : '',
hasEllipsis ? 'is--ellipsis' : '',
itemTitleClassName
? xeUtils.isFunction(itemTitleClassName)
? itemTitleClassName(params2)
: itemTitleClassName
: '',
titleClassName
? xeUtils.isFunction(titleClassName)
? titleClassName(params2)
: titleClassName
: '',
],
style: Object.assign(
{},
xeUtils.isFunction(itemTitleStyle)
? itemTitleStyle(params2)
: itemTitleStyle,
xeUtils.isFunction(titleStyle)
? titleStyle(params2)
: titleStyle,
titleWidth
? {
width: isNaN(titleWidth)
? titleWidth
: ''.concat(titleWidth, 'px'),
}
: null
),
title: ovTitle ? getFuncText(title) : null,
},
ons
),
renderTitle($xeform2, item2)
)
: null,
h$4(
'div',
{
class: [
'vxe-form--item-content',
align ? 'align--'.concat(align) : '',
itemContentClassName
? xeUtils.isFunction(itemContentClassName)
? itemContentClassName(params2)
: itemContentClassName
: '',
contentClassName
? xeUtils.isFunction(contentClassName)
? contentClassName(params2)
: contentClassName
: '',
],
style: Object.assign(
{},
xeUtils.isFunction(itemContentStyle)
? itemContentStyle(params2)
: itemContentStyle,
xeUtils.isFunction(contentStyle)
? contentStyle(params2)
: contentStyle
),
},
contentVNs
),
]
),
]
)
}
var renderVN = function () {
var formProps2 = $xeform ? $xeform.props : null
return formProps2 && formProps2.customLayout
? renderItem($xeform, formItem)
: h$4('div', {
ref: refElem,
})
}
var $xeformitem = {
renderVN,
}
return $xeformitem
},
render: function () {
return this.renderVN()
},
})
Object.assign(VxeFormItemComponent, {
install: function (app2) {
app2.component(VxeFormItemComponent.name, VxeFormItemComponent)
},
})
dynamicApp.component(VxeFormItemComponent.name, VxeFormItemComponent)
var VxeFormGatherComponent = defineComponent({
name: 'VxeFormGather',
props: formItemProps,
setup: function (props2, _a2) {
var slots = _a2.slots
var refElem = ref()
var $xeform = inject('$xeform', {})
var formGather = inject('$xeformgather', null)
var defaultSlot = slots.default
var formItem = reactive(createItem($xeform, props2))
var xeformitem = { formItem }
var xeformiteminfo = { itemConfig: formItem }
formItem.children = []
provide('$xeformiteminfo', xeformiteminfo)
provide('$xeformgather', xeformitem)
provide('$xeformitem', null)
watchItem(props2, formItem)
onMounted(function () {
assemItem($xeform, refElem.value, formItem, formGather)
})
onUnmounted(function () {
destroyItem($xeform, formItem)
})
var renderVN = function () {
return h$4(
'div',
{
ref: refElem,
},
defaultSlot ? defaultSlot() : []
)
}
var $xeformgather = {
renderVN,
}
return $xeformgather
},
render: function () {
return this.renderVN()
},
})
Object.assign(VxeFormGatherComponent, {
install: function (app2) {
app2.component(VxeFormGatherComponent.name, VxeFormGatherComponent)
},
})
dynamicApp.component(VxeFormGatherComponent.name, VxeFormGatherComponent)
var VxeSelect = Object.assign(VxeSelectComponent, {
install: function (app2) {
app2.component(VxeSelectComponent.name, VxeSelectComponent)
},
})
var Select$1 = VxeSelect
dynamicApp.component(VxeSelectComponent.name, VxeSelectComponent)
var OptionInfo = (function () {
function OptionInfo2($xeselect, _vm) {
Object.assign(this, {
id: xeUtils.uniqueId('option_'),
value: _vm.value,
label: _vm.label,
visible: _vm.visible,
className: _vm.className,
disabled: _vm.disabled,
})
}
OptionInfo2.prototype.update = function (name2, value2) {
this[name2] = value2
}
return OptionInfo2
})()
function isOption(option2) {
return option2 instanceof OptionInfo
}
function createOption($xeselect, _vm) {
return isOption(_vm) ? _vm : new OptionInfo($xeselect, _vm)
}
function watchOption(props2, option2) {
Object.keys(props2).forEach(function (name2) {
watch$1(
function () {
return props2[name2]
},
function (value2) {
option2.update(name2, value2)
}
)
})
}
function assemOption($xeselect, el2, option2, optgroup) {
var reactData = $xeselect.reactData
var staticOptions = reactData.staticOptions
var parentElem = el2.parentNode
var parentOption = optgroup ? optgroup.option : null
var parentCols = parentOption ? parentOption.options : staticOptions
if (parentElem && parentCols) {
parentCols.splice(
xeUtils.arrayIndexOf(parentElem.children, el2),
0,
option2
)
reactData.staticOptions = staticOptions.slice(0)
}
}
function destroyOption($xeselect, option2) {
var reactData = $xeselect.reactData
var staticOptions = reactData.staticOptions
var matchObj = xeUtils.findTree(
staticOptions,
function (item2) {
return item2.id === option2.id
},
{ children: 'options' }
)
if (matchObj) {
matchObj.items.splice(matchObj.index, 1)
}
reactData.staticOptions = staticOptions.slice(0)
}
var VxeOptgroupComponent = defineComponent({
name: 'VxeOptgroup',
props: {
label: { type: [String, Number, Boolean], default: '' },
visible: { type: Boolean, default: null },
className: [String, Function],
disabled: Boolean,
},
setup: function (props2, _a2) {
var slots = _a2.slots
var elem = ref()
var $xeselect = inject('$xeselect', {})
var option2 = createOption($xeselect, props2)
var xeoption = { option: option2 }
option2.options = []
provide('xeoptgroup', xeoption)
watchOption(props2, option2)
onMounted(function () {
assemOption($xeselect, elem.value, option2)
})
onUnmounted(function () {
destroyOption($xeselect, option2)
})
return function () {
return h$4(
'div',
{
ref: elem,
},
slots.default ? slots.default() : []
)
}
},
})
var VxeOptgroup = Object.assign(VxeOptgroupComponent, {
install: function (app2) {
app2.component(VxeOptgroupComponent.name, VxeOptgroupComponent)
},
})
var Optgroup = VxeOptgroup
dynamicApp.component(VxeOptgroupComponent.name, VxeOptgroupComponent)
var VxeOptionComponent = defineComponent({
name: 'VxeOption',
props: {
value: null,
label: { type: [String, Number, Boolean], default: '' },
visible: { type: Boolean, default: null },
className: [String, Function],
disabled: Boolean,
},
setup: function (props2, _a2) {
var slots = _a2.slots
var elem = ref()
var $xeselect = inject('$xeselect', {})
var optgroup = inject('xeoptgroup', null)
var option2 = createOption($xeselect, props2)
option2.slots = slots
watchOption(props2, option2)
onMounted(function () {
assemOption($xeselect, elem.value, option2, optgroup)
})
onUnmounted(function () {
destroyOption($xeselect, option2)
})
return function () {
return h$4('div', {
ref: elem,
})
}
},
})
var VxeOption = Object.assign(VxeOptionComponent, {
install: function (app2) {
app2.component(VxeOptionComponent.name, VxeOptionComponent)
},
})
var Option = VxeOption
dynamicApp.component(VxeOptionComponent.name, VxeOptionComponent)
var VxeSwitchComponent = defineComponent({
name: 'VxeSwitch',
props: {
modelValue: [String, Number, Boolean],
disabled: Boolean,
size: {
type: String,
default: function () {
return GlobalConfig.switch.size || GlobalConfig.size
},
},
openLabel: String,
closeLabel: String,
openValue: { type: [String, Number, Boolean], default: true },
closeValue: { type: [String, Number, Boolean], default: false },
openIcon: String,
closeIcon: String,
},
emits: ['update:modelValue', 'change', 'focus', 'blur'],
setup: function (props2, context2) {
var emit2 = context2.emit
var $xeform = inject('$xeform', null)
var $xeformiteminfo = inject('$xeformiteminfo', null)
var xID = xeUtils.uniqueId()
var computeSize = useSize(props2)
var reactData = reactive({
isActivated: false,
hasAnimat: false,
offsetLeft: 0,
})
var $xeswitch = {
xID,
props: props2,
context: context2,
reactData,
}
var refButton = ref()
var switchMethods = {}
var computeOnShowLabel = computed(function () {
return getFuncText(props2.openLabel)
})
var computeOffShowLabel = computed(function () {
return getFuncText(props2.closeLabel)
})
var computeIsChecked = computed(function () {
return props2.modelValue === props2.openValue
})
var _atimeout
var clickEvent = function (evnt) {
if (!props2.disabled) {
var isChecked = computeIsChecked.value
clearTimeout(_atimeout)
var value2 = isChecked ? props2.closeValue : props2.openValue
reactData.hasAnimat = true
emit2('update:modelValue', value2)
switchMethods.dispatchEvent('change', { value: value2 }, evnt)
if ($xeform && $xeformiteminfo) {
$xeform.triggerItemEvent(
evnt,
$xeformiteminfo.itemConfig.field,
value2
)
}
_atimeout = setTimeout(function () {
reactData.hasAnimat = false
}, 400)
}
}
var focusEvent = function (evnt) {
reactData.isActivated = true
switchMethods.dispatchEvent('focus', { value: props2.modelValue }, evnt)
}
var blurEvent = function (evnt) {
reactData.isActivated = false
switchMethods.dispatchEvent('blur', { value: props2.modelValue }, evnt)
}
switchMethods = {
dispatchEvent: function (type4, params2, evnt) {
emit2(
type4,
Object.assign({ $switch: $xeswitch, $event: evnt }, params2)
)
},
focus: function () {
var btnElem = refButton.value
reactData.isActivated = true
btnElem.focus()
return nextTick()
},
blur: function () {
var btnElem = refButton.value
btnElem.blur()
reactData.isActivated = false
return nextTick()
},
}
Object.assign($xeswitch, switchMethods)
var renderVN = function () {
var _a2
var disabled = props2.disabled,
openIcon = props2.openIcon,
closeIcon = props2.closeIcon
var isChecked = computeIsChecked.value
var vSize = computeSize.value
var onShowLabel = computeOnShowLabel.value
var offShowLabel = computeOffShowLabel.value
return h$4(
'div',
{
class: [
'vxe-switch',
isChecked ? 'is--on' : 'is--off',
((_a2 = {}),
(_a2['size--'.concat(vSize)] = vSize),
(_a2['is--disabled'] = disabled),
(_a2['is--animat'] = reactData.hasAnimat),
_a2),
],
},
[
h$4(
'button',
{
ref: refButton,
class: 'vxe-switch--button',
type: 'button',
disabled,
onClick: clickEvent,
onFocus: focusEvent,
onBlur: blurEvent,
},
[
h$4(
'span',
{
class: 'vxe-switch--label vxe-switch--label-on',
},
[
openIcon
? h$4('i', {
class: ['vxe-switch--label-icon', openIcon],
})
: createCommentVNode(),
onShowLabel,
]
),
h$4(
'span',
{
class: 'vxe-switch--label vxe-switch--label-off',
},
[
closeIcon
? h$4('i', {
class: ['vxe-switch--label-icon', closeIcon],
})
: createCommentVNode(),
offShowLabel,
]
),
h$4('span', {
class: 'vxe-switch--icon',
}),
]
),
]
)
}
$xeswitch.renderVN = renderVN
return $xeswitch
},
render: function () {
return this.renderVN()
},
})
Object.assign(VxeSwitchComponent, {
install: function (app2) {
app2.component(VxeSwitchComponent.name, VxeSwitchComponent)
},
})
dynamicApp.component(VxeSwitchComponent.name, VxeSwitchComponent)
var resizeTimeout
var eventStore = []
var defaultInterval = 500
function eventHandle() {
if (eventStore.length) {
eventStore.forEach(function (item2) {
item2.tarList.forEach(function (observer) {
var target2 = observer.target,
width = observer.width,
heighe = observer.heighe
var clientWidth = target2.clientWidth
var clientHeight = target2.clientHeight
var rWidth = clientWidth && width !== clientWidth
var rHeight = clientHeight && heighe !== clientHeight
if (rWidth || rHeight) {
observer.width = clientWidth
observer.heighe = clientHeight
setTimeout(item2.callback)
}
})
})
eventListener$1()
}
}
function eventListener$1() {
clearTimeout(resizeTimeout)
resizeTimeout = setTimeout(
eventHandle,
GlobalConfig.resizeInterval || defaultInterval
)
}
var XEResizeObserver = (function () {
function XEResizeObserver2(callback) {
this.tarList = []
this.callback = callback
}
XEResizeObserver2.prototype.observe = function (target2) {
var _this = this
if (target2) {
var tarList = this.tarList
if (
!tarList.some(function (observer) {
return observer.target === target2
})
) {
tarList.push({
target: target2,
width: target2.clientWidth,
heighe: target2.clientHeight,
})
}
if (!eventStore.length) {
eventListener$1()
}
if (
!eventStore.some(function (item2) {
return item2 === _this
})
) {
eventStore.push(this)
}
}
}
XEResizeObserver2.prototype.unobserve = function (target2) {
xeUtils.remove(eventStore, function (item2) {
return item2.tarList.some(function (observer) {
return observer.target === target2
})
})
}
XEResizeObserver2.prototype.disconnect = function () {
var _this = this
xeUtils.remove(eventStore, function (item2) {
return item2 === _this
})
}
return XEResizeObserver2
})()
function createResizeEvent(callback) {
if (window.ResizeObserver) {
return new window.ResizeObserver(callback)
}
return new XEResizeObserver(callback)
}
var VxeListComponent = defineComponent({
name: 'VxeList',
props: {
data: Array,
height: [Number, String],
maxHeight: [Number, String],
loading: Boolean,
className: [String, Function],
size: {
type: String,
default: function () {
return GlobalConfig.list.size || GlobalConfig.size
},
},
autoResize: {
type: Boolean,
default: function () {
return GlobalConfig.list.autoResize
},
},
syncResize: [Boolean, String, Number],
scrollY: Object,
},
emits: ['scroll'],
setup: function (props2, context2) {
var slots = context2.slots,
emit2 = context2.emit
var xID = xeUtils.uniqueId()
var computeSize = useSize(props2)
var reactData = reactive({
scrollYLoad: false,
bodyHeight: 0,
rowHeight: 0,
topSpaceHeight: 0,
items: [],
})
var refElem = ref()
var refVirtualWrapper = ref()
var refVirtualBody = ref()
var internalData = {
fullData: [],
lastScrollLeft: 0,
lastScrollTop: 0,
scrollYStore: {
startIndex: 0,
endIndex: 0,
visibleSize: 0,
offsetSize: 0,
rowHeight: 0,
},
}
var refMaps = {
refElem,
}
var $xelist = {
xID,
props: props2,
context: context2,
reactData,
internalData,
getRefMaps: function () {
return refMaps
},
}
var listMethods = {}
var computeSYOpts = computed(function () {
return Object.assign({}, GlobalConfig.list.scrollY, props2.scrollY)
})
var computeStyles2 = computed(function () {
var height = props2.height,
maxHeight = props2.maxHeight
var style2 = {}
if (height) {
style2.height = ''.concat(
isNaN(height) ? height : ''.concat(height, 'px')
)
} else if (maxHeight) {
style2.height = 'auto'
style2.maxHeight = ''.concat(
isNaN(maxHeight) ? maxHeight : ''.concat(maxHeight, 'px')
)
}
return style2
})
var updateYSpace = function () {
var scrollYLoad = reactData.scrollYLoad
var scrollYStore = internalData.scrollYStore,
fullData = internalData.fullData
reactData.bodyHeight = scrollYLoad
? fullData.length * scrollYStore.rowHeight
: 0
reactData.topSpaceHeight = scrollYLoad
? Math.max(scrollYStore.startIndex * scrollYStore.rowHeight, 0)
: 0
}
var handleData = function () {
var scrollYLoad = reactData.scrollYLoad
var fullData = internalData.fullData,
scrollYStore = internalData.scrollYStore
reactData.items = scrollYLoad
? fullData.slice(scrollYStore.startIndex, scrollYStore.endIndex)
: fullData.slice(0)
return nextTick()
}
var updateYData = function () {
handleData()
updateYSpace()
}
var computeScrollLoad = function () {
return nextTick().then(function () {
var scrollYLoad = reactData.scrollYLoad
var scrollYStore = internalData.scrollYStore
var virtualBodyElem = refVirtualBody.value
var sYOpts = computeSYOpts.value
var rowHeight = 0
var firstItemElem
if (virtualBodyElem) {
if (sYOpts.sItem) {
firstItemElem = virtualBodyElem.querySelector(sYOpts.sItem)
}
if (!firstItemElem) {
firstItemElem = virtualBodyElem.children[0]
}
}
if (firstItemElem) {
rowHeight = firstItemElem.offsetHeight
}
rowHeight = Math.max(20, rowHeight)
scrollYStore.rowHeight = rowHeight
if (scrollYLoad) {
var scrollBodyElem = refVirtualWrapper.value
var visibleYSize = Math.max(
8,
Math.ceil(scrollBodyElem.clientHeight / rowHeight)
)
var offsetYSize = sYOpts.oSize
? xeUtils.toNumber(sYOpts.oSize)
: browse.edge
? 10
: 0
scrollYStore.offsetSize = offsetYSize
scrollYStore.visibleSize = visibleYSize
scrollYStore.endIndex = Math.max(
scrollYStore.startIndex,
visibleYSize + offsetYSize,
scrollYStore.endIndex
)
updateYData()
} else {
updateYSpace()
}
reactData.rowHeight = rowHeight
})
}
var clearScroll = function () {
var scrollBodyElem = refVirtualWrapper.value
if (scrollBodyElem) {
scrollBodyElem.scrollTop = 0
}
return nextTick()
}
var scrollTo = function (scrollLeft, scrollTop) {
var scrollBodyElem = refVirtualWrapper.value
if (xeUtils.isNumber(scrollLeft)) {
scrollBodyElem.scrollLeft = scrollLeft
}
if (xeUtils.isNumber(scrollTop)) {
scrollBodyElem.scrollTop = scrollTop
}
if (reactData.scrollYLoad) {
return new Promise(function (resolve2) {
setTimeout(function () {
nextTick(function () {
resolve2()
})
}, 50)
})
}
return nextTick()
}
var refreshScroll = function () {
var lastScrollLeft = internalData.lastScrollLeft,
lastScrollTop = internalData.lastScrollTop
return clearScroll().then(function () {
if (lastScrollLeft || lastScrollTop) {
internalData.lastScrollLeft = 0
internalData.lastScrollTop = 0
return scrollTo(lastScrollLeft, lastScrollTop)
}
})
}
var recalculate = function () {
var el2 = refElem.value
if (el2.clientWidth && el2.clientHeight) {
return computeScrollLoad()
}
return Promise.resolve()
}
var loadYData = function (evnt) {
var scrollYStore = internalData.scrollYStore
var startIndex = scrollYStore.startIndex,
endIndex = scrollYStore.endIndex,
visibleSize = scrollYStore.visibleSize,
offsetSize = scrollYStore.offsetSize,
rowHeight = scrollYStore.rowHeight
var scrollBodyElem = evnt.target
var scrollTop = scrollBodyElem.scrollTop
var toVisibleIndex = Math.floor(scrollTop / rowHeight)
var offsetStartIndex = Math.max(0, toVisibleIndex - 1 - offsetSize)
var offsetEndIndex = toVisibleIndex + visibleSize + offsetSize
if (
toVisibleIndex <= startIndex ||
toVisibleIndex >= endIndex - visibleSize - 1
) {
if (startIndex !== offsetStartIndex || endIndex !== offsetEndIndex) {
scrollYStore.startIndex = offsetStartIndex
scrollYStore.endIndex = offsetEndIndex
updateYData()
}
}
}
var scrollEvent = function (evnt) {
var scrollBodyElem = evnt.target
var scrollTop = scrollBodyElem.scrollTop
var scrollLeft = scrollBodyElem.scrollLeft
var isX = scrollLeft !== internalData.lastScrollLeft
var isY = scrollTop !== internalData.lastScrollTop
internalData.lastScrollTop = scrollTop
internalData.lastScrollLeft = scrollLeft
if (reactData.scrollYLoad) {
loadYData(evnt)
}
listMethods.dispatchEvent(
'scroll',
{ scrollLeft, scrollTop, isX, isY },
evnt
)
}
listMethods = {
dispatchEvent: function (type4, params2, evnt) {
emit2(type4, Object.assign({ $list: $xelist, $event: evnt }, params2))
},
loadData: function (datas) {
var scrollYStore = internalData.scrollYStore
var sYOpts = computeSYOpts.value
var fullData = datas || []
Object.assign(scrollYStore, {
startIndex: 0,
endIndex: 1,
visibleSize: 0,
})
internalData.fullData = fullData
reactData.scrollYLoad =
!!sYOpts.enabled &&
sYOpts.gt > -1 &&
(sYOpts.gt === 0 || sYOpts.gt <= fullData.length)
handleData()
return computeScrollLoad().then(function () {
refreshScroll()
})
},
reloadData: function (datas) {
clearScroll()
return listMethods.loadData(datas)
},
recalculate,
scrollTo,
refreshScroll,
clearScroll,
}
Object.assign($xelist, listMethods)
var dataFlag = ref(0)
watch$1(
function () {
return props2.data ? props2.data.length : -1
},
function () {
dataFlag.value++
}
)
watch$1(
function () {
return props2.data
},
function () {
dataFlag.value++
}
)
watch$1(dataFlag, function () {
listMethods.loadData(props2.data || [])
})
watch$1(
function () {
return props2.syncResize
},
function (value2) {
if (value2) {
recalculate()
nextTick(function () {
return setTimeout(function () {
return recalculate()
})
})
}
}
)
onActivated(function () {
recalculate().then(function () {
return refreshScroll()
})
})
var resizeObserver
nextTick(function () {
GlobalEvent.on($xelist, 'resize', function () {
recalculate()
})
if (props2.autoResize) {
var el2 = refElem.value
resizeObserver = createResizeEvent(function () {
return recalculate()
})
resizeObserver.observe(el2)
}
listMethods.loadData(props2.data || [])
})
onUnmounted(function () {
if (resizeObserver) {
resizeObserver.disconnect()
}
GlobalEvent.off($xelist, 'resize')
})
var renderVN = function () {
var _a2
var className = props2.className,
loading2 = props2.loading
var bodyHeight = reactData.bodyHeight,
topSpaceHeight = reactData.topSpaceHeight,
items = reactData.items
var vSize = computeSize.value
var styles = computeStyles2.value
return h$4(
'div',
{
ref: refElem,
class: [
'vxe-list',
className
? xeUtils.isFunction(className)
? className({ $list: $xelist })
: className
: '',
((_a2 = {}),
(_a2['size--'.concat(vSize)] = vSize),
(_a2['is--loading'] = loading2),
_a2),
],
},
[
h$4(
'div',
{
ref: refVirtualWrapper,
class: 'vxe-list--virtual-wrapper',
style: styles,
onScroll: scrollEvent,
},
[
h$4('div', {
class: 'vxe-list--y-space',
style: {
height: bodyHeight ? ''.concat(bodyHeight, 'px') : '',
},
}),
h$4(
'div',
{
ref: refVirtualBody,
class: 'vxe-list--body',
style: {
marginTop: topSpaceHeight
? ''.concat(topSpaceHeight, 'px')
: '',
},
},
slots.default ? slots.default({ items, $list: $xelist }) : []
),
]
),
h$4(VxeLoading, {
class: 'vxe-list--loading',
modelValue: loading2,
}),
]
)
}
$xelist.renderVN = renderVN
return $xelist
},
render: function () {
return this.renderVN()
},
})
var VxeList = Object.assign(VxeListComponent, {
install: function (app2) {
app2.component(VxeListComponent.name, VxeListComponent)
},
})
var List = VxeList
dynamicApp.component(VxeListComponent.name, VxeListComponent)
var VxePulldownComponent = defineComponent({
name: 'VxePulldown',
props: {
modelValue: Boolean,
disabled: Boolean,
placement: String,
size: {
type: String,
default: function () {
return GlobalConfig.size
},
},
className: [String, Function],
popupClassName: [String, Function],
destroyOnClose: Boolean,
transfer: Boolean,
},
emits: ['update:modelValue', 'hide-panel'],
setup: function (props2, context2) {
var slots = context2.slots,
emit2 = context2.emit
var xID = xeUtils.uniqueId()
var computeSize = useSize(props2)
var reactData = reactive({
inited: false,
panelIndex: 0,
panelStyle: null,
panelPlacement: null,
visiblePanel: false,
animatVisible: false,
isActivated: false,
})
var refElem = ref()
var refPulldowContent = ref()
var refPulldowPnanel = ref()
var refMaps = {
refElem,
}
var $xepulldown = {
xID,
props: props2,
context: context2,
reactData,
getRefMaps: function () {
return refMaps
},
}
var pulldownMethods = {}
var updateZindex = function () {
if (reactData.panelIndex < getLastZIndex()) {
reactData.panelIndex = nextZIndex()
}
}
var isPanelVisible = function () {
return reactData.visiblePanel
}
var updatePlacement = function () {
return nextTick().then(function () {
var transfer = props2.transfer,
placement = props2.placement
var panelIndex = reactData.panelIndex,
visiblePanel = reactData.visiblePanel
if (visiblePanel) {
var targetElem = refPulldowContent.value
var panelElem = refPulldowPnanel.value
if (panelElem && targetElem) {
var targetHeight = targetElem.offsetHeight
var targetWidth = targetElem.offsetWidth
var panelHeight = panelElem.offsetHeight
var panelWidth = panelElem.offsetWidth
var marginSize = 5
var panelStyle = {
zIndex: panelIndex,
}
var _a2 = getAbsolutePos(targetElem),
boundingTop = _a2.boundingTop,
boundingLeft = _a2.boundingLeft,
visibleHeight = _a2.visibleHeight,
visibleWidth = _a2.visibleWidth
var panelPlacement = 'bottom'
if (transfer) {
var left2 = boundingLeft
var top_1 = boundingTop + targetHeight
if (placement === 'top') {
panelPlacement = 'top'
top_1 = boundingTop - panelHeight
} else if (!placement) {
if (top_1 + panelHeight + marginSize > visibleHeight) {
panelPlacement = 'top'
top_1 = boundingTop - panelHeight
}
if (top_1 < marginSize) {
panelPlacement = 'bottom'
top_1 = boundingTop + targetHeight
}
}
if (left2 + panelWidth + marginSize > visibleWidth) {
left2 -= left2 + panelWidth + marginSize - visibleWidth
}
if (left2 < marginSize) {
left2 = marginSize
}
Object.assign(panelStyle, {
left: ''.concat(left2, 'px'),
top: ''.concat(top_1, 'px'),
minWidth: ''.concat(targetWidth, 'px'),
})
} else {
if (placement === 'top') {
panelPlacement = 'top'
panelStyle.bottom = ''.concat(targetHeight, 'px')
} else if (!placement) {
if (boundingTop + targetHeight + panelHeight > visibleHeight) {
if (boundingTop - targetHeight - panelHeight > marginSize) {
panelPlacement = 'top'
panelStyle.bottom = ''.concat(targetHeight, 'px')
}
}
}
}
reactData.panelStyle = panelStyle
reactData.panelPlacement = panelPlacement
}
}
return nextTick()
})
}
var hidePanelTimeout
var showPanel = function () {
if (!reactData.inited) {
reactData.inited = true
}
return new Promise(function (resolve2) {
if (!props2.disabled) {
clearTimeout(hidePanelTimeout)
reactData.isActivated = true
reactData.animatVisible = true
setTimeout(function () {
reactData.visiblePanel = true
emit2('update:modelValue', true)
updatePlacement()
setTimeout(function () {
resolve2(updatePlacement())
}, 40)
}, 10)
updateZindex()
} else {
nextTick(function () {
resolve2()
})
}
})
}
var hidePanel = function () {
reactData.visiblePanel = false
emit2('update:modelValue', false)
return new Promise(function (resolve2) {
if (reactData.animatVisible) {
hidePanelTimeout = window.setTimeout(function () {
reactData.animatVisible = false
nextTick(function () {
resolve2()
})
}, 350)
} else {
nextTick(function () {
resolve2()
})
}
})
}
var togglePanel = function () {
if (reactData.visiblePanel) {
return hidePanel()
}
return showPanel()
}
var handleGlobalMousewheelEvent = function (evnt) {
var disabled = props2.disabled
var visiblePanel = reactData.visiblePanel
var panelElem = refPulldowPnanel.value
if (!disabled) {
if (visiblePanel) {
if (getEventTargetNode(evnt, panelElem).flag) {
updatePlacement()
} else {
hidePanel()
pulldownMethods.dispatchEvent('hide-panel', {}, evnt)
}
}
}
}
var handleGlobalMousedownEvent = function (evnt) {
var disabled = props2.disabled
var visiblePanel = reactData.visiblePanel
var el2 = refElem.value
var panelElem = refPulldowPnanel.value
if (!disabled) {
reactData.isActivated =
getEventTargetNode(evnt, el2).flag ||
getEventTargetNode(evnt, panelElem).flag
if (visiblePanel && !reactData.isActivated) {
hidePanel()
pulldownMethods.dispatchEvent('hide-panel', {}, evnt)
}
}
}
var handleGlobalBlurEvent = function (evnt) {
if (reactData.visiblePanel) {
reactData.isActivated = false
hidePanel()
pulldownMethods.dispatchEvent('hide-panel', {}, evnt)
}
}
pulldownMethods = {
dispatchEvent: function (type4, params2, evnt) {
emit2(
type4,
Object.assign({ $pulldown: $xepulldown, $event: evnt }, params2)
)
},
isPanelVisible,
togglePanel,
showPanel,
hidePanel,
}
Object.assign($xepulldown, pulldownMethods)
watch$1(
function () {
return props2.modelValue
},
function (value2) {
if (value2) {
showPanel()
} else {
hidePanel()
}
}
)
nextTick(function () {
GlobalEvent.on($xepulldown, 'mousewheel', handleGlobalMousewheelEvent)
GlobalEvent.on($xepulldown, 'mousedown', handleGlobalMousedownEvent)
GlobalEvent.on($xepulldown, 'blur', handleGlobalBlurEvent)
})
onUnmounted(function () {
GlobalEvent.off($xepulldown, 'mousewheel')
GlobalEvent.off($xepulldown, 'mousedown')
GlobalEvent.off($xepulldown, 'blur')
})
var renderVN = function () {
var _a2, _b2
var className = props2.className,
popupClassName = props2.popupClassName,
destroyOnClose = props2.destroyOnClose,
transfer = props2.transfer,
disabled = props2.disabled
var inited = reactData.inited,
isActivated = reactData.isActivated,
animatVisible = reactData.animatVisible,
visiblePanel = reactData.visiblePanel,
panelStyle = reactData.panelStyle,
panelPlacement = reactData.panelPlacement
var vSize = computeSize.value
return h$4(
'div',
{
ref: refElem,
class: [
'vxe-pulldown',
className
? xeUtils.isFunction(className)
? className({ $pulldown: $xepulldown })
: className
: '',
((_a2 = {}),
(_a2['size--'.concat(vSize)] = vSize),
(_a2['is--visivle'] = visiblePanel),
(_a2['is--disabled'] = disabled),
(_a2['is--active'] = isActivated),
_a2),
],
},
[
h$4(
'div',
{
ref: refPulldowContent,
class: 'vxe-pulldown--content',
},
slots.default ? slots.default({ $pulldown: $xepulldown }) : []
),
h$4(
Teleport,
{
to: 'body',
disabled: transfer ? !inited : true,
},
[
h$4(
'div',
{
ref: refPulldowPnanel,
class: [
'vxe-table--ignore-clear vxe-pulldown--panel',
popupClassName
? xeUtils.isFunction(popupClassName)
? popupClassName({ $pulldown: $xepulldown })
: popupClassName
: '',
((_b2 = {}),
(_b2['size--'.concat(vSize)] = vSize),
(_b2['is--transfer'] = transfer),
(_b2['animat--leave'] = animatVisible),
(_b2['animat--enter'] = visiblePanel),
_b2),
],
placement: panelPlacement,
style: panelStyle,
},
slots.dropdown
? [
h$4(
'div',
{
class: 'vxe-pulldown--wrapper',
},
!inited ||
(destroyOnClose && !visiblePanel && !animatVisible)
? []
: slots.dropdown({ $pulldown: $xepulldown })
),
]
: []
),
]
),
]
)
}
$xepulldown.renderVN = renderVN
return $xepulldown
},
render: function () {
return this.renderVN()
},
})
Object.assign(VxePulldownComponent, {
install: function (app2) {
app2.component(VxePulldownComponent.name, VxePulldownComponent)
},
})
dynamicApp.component(VxePulldownComponent.name, VxePulldownComponent)
var __assign$3 =
(globalThis && globalThis.__assign) ||
function () {
__assign$3 =
Object.assign ||
function (t3) {
for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
s2 = arguments[i2]
for (var p2 in s2)
if (Object.prototype.hasOwnProperty.call(s2, p2)) t3[p2] = s2[p2]
}
return t3
}
return __assign$3.apply(this, arguments)
}
var __spreadArray$1 =
(globalThis && globalThis.__spreadArray) ||
function (to, from, pack2) {
if (pack2 || arguments.length === 2)
for (var i2 = 0, l2 = from.length, ar2; i2 < l2; i2++) {
if (ar2 || !(i2 in from)) {
if (!ar2) ar2 = Array.prototype.slice.call(from, 0, i2)
ar2[i2] = from[i2]
}
}
return to.concat(ar2 || Array.prototype.slice.call(from))
}
var renderType$2 = 'body'
var lineOffsetSizes = {
mini: 3,
small: 2,
medium: 1,
}
var TableBodyComponent = defineComponent({
name: 'VxeTableBody',
props: {
tableData: Array,
tableColumn: Array,
fixedColumn: Array,
fixedType: { type: String, default: null },
},
setup: function (props2) {
var $xetable = inject('$xetable', {})
var xesize = inject('xesize', null)
var xID = $xetable.xID,
tableProps2 = $xetable.props,
tableContext = $xetable.context,
tableReactData = $xetable.reactData,
tableInternalData = $xetable.internalData
var _a2 = $xetable.getRefMaps(),
refTableHeader = _a2.refTableHeader,
refTableBody = _a2.refTableBody,
refTableFooter = _a2.refTableFooter,
refTableLeftBody = _a2.refTableLeftBody,
refTableRightBody = _a2.refTableRightBody,
refValidTooltip = _a2.refValidTooltip
var _b2 = $xetable.getComputeMaps(),
computeEditOpts = _b2.computeEditOpts,
computeMouseOpts = _b2.computeMouseOpts,
computeSYOpts = _b2.computeSYOpts,
computeEmptyOpts = _b2.computeEmptyOpts,
computeKeyboardOpts = _b2.computeKeyboardOpts,
computeTooltipOpts = _b2.computeTooltipOpts,
computeRadioOpts = _b2.computeRadioOpts,
computeExpandOpts = _b2.computeExpandOpts,
computeTreeOpts = _b2.computeTreeOpts,
computeCheckboxOpts = _b2.computeCheckboxOpts,
computeValidOpts = _b2.computeValidOpts,
computeRowOpts = _b2.computeRowOpts,
computeColumnOpts = _b2.computeColumnOpts
var refElem = ref()
var refBodyTable = ref()
var refBodyColgroup = ref()
var refBodyTBody = ref()
var refBodyXSpace = ref()
var refBodyYSpace = ref()
var refBodyEmptyBlock = ref()
var getOffsetSize = function () {
if (xesize) {
var vSize = xesize.value
if (vSize) {
return lineOffsetSizes[vSize] || 0
}
}
return 0
}
var isVMScrollProcess = function () {
var delayHover = tableProps2.delayHover
var lastScrollTime = tableReactData.lastScrollTime,
_isResize = tableReactData._isResize
return !!(
_isResize ||
(lastScrollTime && Date.now() < lastScrollTime + delayHover)
)
}
var countTreeExpand = function (prevRow, params2) {
var count2 = 1
if (!prevRow) {
return count2
}
var treeOpts = computeTreeOpts.value
var childrenField = treeOpts.children || treeOpts.childrenField
var rowChildren = prevRow[childrenField]
if (rowChildren && $xetable.isTreeExpandByRow(prevRow)) {
for (var index2 = 0; index2 < rowChildren.length; index2++) {
count2 += countTreeExpand(rowChildren[index2])
}
}
return count2
}
var calcTreeLine = function (params2, items, rIndex) {
var expandSize = 1
if (rIndex) {
expandSize = countTreeExpand(items[rIndex - 1])
}
return (
tableReactData.rowHeight * expandSize -
(rIndex ? 1 : 12 - getOffsetSize())
)
}
var renderLine = function (params2) {
var row = params2.row,
column = params2.column
var treeConfig = tableProps2.treeConfig
var treeOpts = computeTreeOpts.value
var slots = column.slots,
treeNode = column.treeNode
var fullAllDataRowIdData = tableInternalData.fullAllDataRowIdData
var rowid = getRowid($xetable, row)
var rest = fullAllDataRowIdData[rowid]
var rLevel = 0
var rIndex = 0
var items = []
if (rest) {
rLevel = rest.level
rIndex = rest._index
items = rest.items
}
if (slots && slots.line) {
return $xetable.callSlot(slots.line, params2)
}
if (treeConfig && treeNode && (treeOpts.showLine || treeOpts.line)) {
return [
h$4(
'div',
{
class: 'vxe-tree--line-wrapper',
},
[
h$4('div', {
class: 'vxe-tree--line',
style: {
height: ''.concat(calcTreeLine(params2, items, rIndex), 'px'),
left: ''.concat(
rLevel * treeOpts.indent +
(rLevel ? 2 - getOffsetSize() : 0) +
16,
'px'
),
},
}),
]
),
]
}
return []
}
var renderColumn = function (
seq,
rowid,
fixedType,
rowLevel,
row,
rowIndex,
$rowIndex,
_rowIndex,
column,
$columnIndex,
columns,
items
) {
var _a3
var columnKey2 = tableProps2.columnKey,
height = tableProps2.height,
allColumnOverflow = tableProps2.showOverflow,
allCellClassName = tableProps2.cellClassName,
cellStyle = tableProps2.cellStyle,
allAlign = tableProps2.align,
spanMethod = tableProps2.spanMethod,
mouseConfig = tableProps2.mouseConfig,
editConfig = tableProps2.editConfig,
editRules = tableProps2.editRules,
tooltipConfig = tableProps2.tooltipConfig
var tableData2 = tableReactData.tableData,
overflowX = tableReactData.overflowX,
scrollYLoad = tableReactData.scrollYLoad,
currentColumn = tableReactData.currentColumn,
mergeList = tableReactData.mergeList,
editStore = tableReactData.editStore,
isAllOverflow = tableReactData.isAllOverflow,
validErrorMaps = tableReactData.validErrorMaps
var afterFullData = tableInternalData.afterFullData
var validOpts = computeValidOpts.value
var checkboxOpts = computeCheckboxOpts.value
var editOpts = computeEditOpts.value
var tooltipOpts = computeTooltipOpts.value
var rowOpts = computeRowOpts.value
var sYOpts = computeSYOpts.value
var columnOpts = computeColumnOpts.value
var type4 = column.type,
cellRender = column.cellRender,
editRender = column.editRender,
align = column.align,
showOverflow = column.showOverflow,
className = column.className,
treeNode = column.treeNode
var actived = editStore.actived
var scrollYRHeight = sYOpts.rHeight
var rowHeight = rowOpts.height
var renderOpts = editRender || cellRender
var compConf = renderOpts ? VXETable.renderer.get(renderOpts.name) : null
var compCellClassName = compConf ? compConf.cellClassName : ''
var compCellStyle = compConf ? compConf.cellStyle : ''
var showAllTip = tooltipOpts.showAll
var columnIndex = $xetable.getColumnIndex(column)
var _columnIndex = $xetable.getVTColumnIndex(column)
var isEdit = isEnableConf(editRender)
var fixedHiddenColumn = fixedType
? column.fixed !== fixedType
: column.fixed && overflowX
var cellOverflow =
xeUtils.isUndefined(showOverflow) || xeUtils.isNull(showOverflow)
? allColumnOverflow
: showOverflow
var showEllipsis = cellOverflow === 'ellipsis'
var showTitle = cellOverflow === 'title'
var showTooltip2 = cellOverflow === true || cellOverflow === 'tooltip'
var hasEllipsis = showTitle || showTooltip2 || showEllipsis
var isDirty
var tdOns = {}
var cellAlign = align || allAlign
var errorValidItem =
validErrorMaps[''.concat(rowid, ':').concat(column.id)]
var showValidTip =
editRules &&
validOpts.showMessage &&
(validOpts.message === 'default'
? height || tableData2.length > 1
: validOpts.message === 'inline')
var attrs = { colid: column.id }
var params2 = {
$table: $xetable,
$grid: $xetable.xegrid,
seq,
rowid,
row,
rowIndex,
$rowIndex,
_rowIndex,
column,
columnIndex,
$columnIndex,
_columnIndex,
fixed: fixedType,
type: renderType$2,
isHidden: fixedHiddenColumn,
level: rowLevel,
visibleData: afterFullData,
data: tableData2,
items,
}
if (scrollYLoad && !hasEllipsis) {
showEllipsis = hasEllipsis = true
}
if (showTitle || showTooltip2 || showAllTip || tooltipConfig) {
tdOns.onMouseenter = function (evnt) {
if (isVMScrollProcess()) {
return
}
if (showTitle) {
updateCellTitle(evnt.currentTarget, column)
} else if (showTooltip2 || showAllTip) {
$xetable.triggerBodyTooltipEvent(evnt, params2)
}
$xetable.dispatchEvent(
'cell-mouseenter',
Object.assign({ cell: evnt.currentTarget }, params2),
evnt
)
}
}
if (showTooltip2 || showAllTip || tooltipConfig) {
tdOns.onMouseleave = function (evnt) {
if (isVMScrollProcess()) {
return
}
if (showTooltip2 || showAllTip) {
$xetable.handleTargetLeaveEvent(evnt)
}
$xetable.dispatchEvent(
'cell-mouseleave',
Object.assign({ cell: evnt.currentTarget }, params2),
evnt
)
}
}
if (checkboxOpts.range || mouseConfig) {
tdOns.onMousedown = function (evnt) {
$xetable.triggerCellMousedownEvent(evnt, params2)
}
}
tdOns.onClick = function (evnt) {
$xetable.triggerCellClickEvent(evnt, params2)
}
tdOns.onDblclick = function (evnt) {
$xetable.triggerCellDblclickEvent(evnt, params2)
}
if (mergeList.length) {
var spanRest = mergeBodyMethod(mergeList, _rowIndex, _columnIndex)
if (spanRest) {
var rowspan = spanRest.rowspan,
colspan = spanRest.colspan
if (!rowspan || !colspan) {
return null
}
if (rowspan > 1) {
attrs.rowspan = rowspan
}
if (colspan > 1) {
attrs.colspan = colspan
}
}
} else if (spanMethod) {
var _b3 = spanMethod(params2) || {},
_c2 = _b3.rowspan,
rowspan = _c2 === void 0 ? 1 : _c2,
_d = _b3.colspan,
colspan = _d === void 0 ? 1 : _d
if (!rowspan || !colspan) {
return null
}
if (rowspan > 1) {
attrs.rowspan = rowspan
}
if (colspan > 1) {
attrs.colspan = colspan
}
}
if (fixedHiddenColumn && mergeList) {
if (attrs.colspan > 1 || attrs.rowspan > 1) {
fixedHiddenColumn = false
}
}
if (
!fixedHiddenColumn &&
editConfig &&
(editRender || cellRender) &&
(editOpts.showStatus || editOpts.showUpdateStatus)
) {
isDirty = $xetable.isUpdateByRow(row, column.field)
}
var tdVNs = []
if (
fixedHiddenColumn &&
(allColumnOverflow ? isAllOverflow : allColumnOverflow)
) {
tdVNs.push(
h$4('div', {
class: [
'vxe-cell',
{
'c--title': showTitle,
'c--tooltip': showTooltip2,
'c--ellipsis': showEllipsis,
},
],
style: {
maxHeight:
hasEllipsis && (scrollYRHeight || rowHeight)
? ''.concat(scrollYRHeight || rowHeight, 'px')
: '',
},
})
)
} else {
tdVNs.push.apply(
tdVNs,
__spreadArray$1(
__spreadArray$1([], renderLine(params2), false),
[
h$4(
'div',
{
class: [
'vxe-cell',
{
'c--title': showTitle,
'c--tooltip': showTooltip2,
'c--ellipsis': showEllipsis,
},
],
style: {
maxHeight:
hasEllipsis && (scrollYRHeight || rowHeight)
? ''.concat(scrollYRHeight || rowHeight, 'px')
: '',
},
title: showTitle ? $xetable.getCellLabel(row, column) : null,
},
column.renderCell(params2)
),
],
false
)
)
if (showValidTip && errorValidItem) {
tdVNs.push(
h$4(
'div',
{
class: 'vxe-cell--valid',
style:
errorValidItem.rule && errorValidItem.rule.maxWidth
? {
width: ''.concat(errorValidItem.rule.maxWidth, 'px'),
}
: null,
},
[
h$4(
'span',
{
class: 'vxe-cell--valid-msg',
},
errorValidItem.content
),
]
)
)
}
}
return h$4(
'td',
__assign$3(
__assign$3(
__assign$3(
{
class: [
'vxe-body--column',
column.id,
((_a3 = {}),
(_a3['col--'.concat(cellAlign)] = cellAlign),
(_a3['col--'.concat(type4)] = type4),
(_a3['col--last'] = $columnIndex === columns.length - 1),
(_a3['col--tree-node'] = treeNode),
(_a3['col--edit'] = isEdit),
(_a3['col--ellipsis'] = hasEllipsis),
(_a3['fixed--hidden'] = fixedHiddenColumn),
(_a3['col--dirty'] = isDirty),
(_a3['col--actived'] =
editConfig &&
isEdit &&
actived.row === row &&
(actived.column === column || editOpts.mode === 'row')),
(_a3['col--valid-error'] = !!errorValidItem),
(_a3['col--current'] = currentColumn === column),
_a3),
getPropClass(compCellClassName, params2),
getPropClass(className, params2),
getPropClass(allCellClassName, params2),
],
key: columnKey2 || columnOpts.useKey ? column.id : $columnIndex,
},
attrs
),
{
style: Object.assign(
{
height:
hasEllipsis && (scrollYRHeight || rowHeight)
? ''.concat(scrollYRHeight || rowHeight, 'px')
: '',
},
xeUtils.isFunction(compCellStyle)
? compCellStyle(params2)
: compCellStyle,
xeUtils.isFunction(cellStyle) ? cellStyle(params2) : cellStyle
),
}
),
tdOns
),
tdVNs
)
}
var renderRows = function (fixedType, tableData2, tableColumn) {
var stripe = tableProps2.stripe,
rowKey = tableProps2.rowKey,
highlightHoverRow = tableProps2.highlightHoverRow,
rowClassName = tableProps2.rowClassName,
rowStyle = tableProps2.rowStyle,
allColumnOverflow = tableProps2.showOverflow,
editConfig = tableProps2.editConfig,
treeConfig = tableProps2.treeConfig
var hasFixedColumn = tableReactData.hasFixedColumn,
treeExpandedMaps = tableReactData.treeExpandedMaps,
scrollYLoad = tableReactData.scrollYLoad,
rowExpandedMaps = tableReactData.rowExpandedMaps,
expandColumn = tableReactData.expandColumn,
selectRadioRow = tableReactData.selectRadioRow
var fullAllDataRowIdData = tableInternalData.fullAllDataRowIdData
var checkboxOpts = computeCheckboxOpts.value
var radioOpts = computeRadioOpts.value
var treeOpts = computeTreeOpts.value
var editOpts = computeEditOpts.value
var rowOpts = computeRowOpts.value
var transform3 = treeOpts.transform
var childrenField = treeOpts.children || treeOpts.childrenField
var rows = []
tableData2.forEach(function (row, $rowIndex) {
var trOn = {}
var rowIndex = $rowIndex
rowIndex = $xetable.getRowIndex(row)
if (rowOpts.isHover || highlightHoverRow) {
trOn.onMouseenter = function (evnt) {
if (isVMScrollProcess()) {
return
}
$xetable.triggerHoverEvent(evnt, { row, rowIndex })
}
trOn.onMouseleave = function () {
if (isVMScrollProcess()) {
return
}
$xetable.clearHoverRow()
}
}
var rowid = getRowid($xetable, row)
var rest = fullAllDataRowIdData[rowid]
var rowLevel = 0
var seq = -1
var _rowIndex = 0
if (rest) {
rowLevel = rest.level
seq = rest.seq
_rowIndex = rest._index
}
var params2 = {
$table: $xetable,
seq,
rowid,
fixed: fixedType,
type: renderType$2,
level: rowLevel,
row,
rowIndex,
$rowIndex,
_rowIndex,
}
var isExpandRow = expandColumn && !!rowExpandedMaps[rowid]
var isExpandTree = false
var rowChildren = []
var isNewRow = false
if (editConfig) {
isNewRow = $xetable.isInsertByRow(row)
}
if (treeConfig && !scrollYLoad && !transform3) {
rowChildren = row[childrenField]
isExpandTree =
rowChildren && rowChildren.length && !!treeExpandedMaps[rowid]
}
rows.push(
h$4(
'tr',
__assign$3(
{
class: [
'vxe-body--row',
treeConfig ? 'row--level-'.concat(rowLevel) : '',
{
'row--stripe':
stripe && ($xetable.getVTRowIndex(row) + 1) % 2 === 0,
'is--new': isNewRow,
'is--expand-row': isExpandRow,
'is--expand-tree': isExpandTree,
'row--new':
isNewRow &&
(editOpts.showStatus || editOpts.showInsertStatus),
'row--radio':
radioOpts.highlight &&
$xetable.eqRow(selectRadioRow, row),
'row--checked':
checkboxOpts.highlight &&
$xetable.isCheckedByCheckboxRow(row),
},
getPropClass(rowClassName, params2),
],
rowid,
style: rowStyle
? xeUtils.isFunction(rowStyle)
? rowStyle(params2)
: rowStyle
: null,
key: rowKey || rowOpts.useKey || treeConfig ? rowid : $rowIndex,
},
trOn
),
tableColumn.map(function (column, $columnIndex) {
return renderColumn(
seq,
rowid,
fixedType,
rowLevel,
row,
rowIndex,
$rowIndex,
_rowIndex,
column,
$columnIndex,
tableColumn,
tableData2
)
})
)
)
if (isExpandRow) {
var expandOpts = computeExpandOpts.value
var expandHeight = expandOpts.height
var cellStyle = {}
if (expandHeight) {
cellStyle.height = ''.concat(expandHeight, 'px')
}
if (treeConfig) {
cellStyle.paddingLeft = ''.concat(
rowLevel * treeOpts.indent + 30,
'px'
)
}
var showOverflow = expandColumn.showOverflow
var hasEllipsis =
xeUtils.isUndefined(showOverflow) || xeUtils.isNull(showOverflow)
? allColumnOverflow
: showOverflow
var expandParams = {
$table: $xetable,
seq,
column: expandColumn,
fixed: fixedType,
type: renderType$2,
level: rowLevel,
row,
rowIndex,
$rowIndex,
_rowIndex,
}
rows.push(
h$4(
'tr',
__assign$3(
{
class: 'vxe-body--expanded-row',
key: 'expand_'.concat(rowid),
style: rowStyle
? xeUtils.isFunction(rowStyle)
? rowStyle(expandParams)
: rowStyle
: null,
},
trOn
),
[
h$4(
'td',
{
class: {
'vxe-body--expanded-column': 1,
'fixed--hidden': fixedType && !hasFixedColumn,
'col--ellipsis': hasEllipsis,
},
colspan: tableColumn.length,
},
[
h$4(
'div',
{
class: {
'vxe-body--expanded-cell': 1,
'is--ellipsis': expandHeight,
},
style: cellStyle,
},
[expandColumn.renderData(expandParams)]
),
]
),
]
)
)
}
if (isExpandTree) {
rows.push.apply(rows, renderRows(fixedType, rowChildren, tableColumn))
}
})
return rows
}
var scrollProcessTimeout
var syncBodyScroll = function (fixedType, scrollTop, elem1, elem2) {
if (elem1 || elem2) {
if (elem1) {
removeScrollListener(elem1)
elem1.scrollTop = scrollTop
}
if (elem2) {
removeScrollListener(elem2)
elem2.scrollTop = scrollTop
}
clearTimeout(scrollProcessTimeout)
scrollProcessTimeout = setTimeout(function () {
restoreScrollListener(elem1)
restoreScrollListener(elem2)
tableReactData.lastScrollTime = Date.now()
}, 300)
}
}
var scrollEvent = function (evnt) {
var fixedType = props2.fixedType
var highlightHoverRow = tableProps2.highlightHoverRow
var scrollXLoad = tableReactData.scrollXLoad,
scrollYLoad = tableReactData.scrollYLoad
var elemStore = tableInternalData.elemStore,
lastScrollTop = tableInternalData.lastScrollTop,
lastScrollLeft = tableInternalData.lastScrollLeft
var rowOpts = computeRowOpts.value
var tableHeader = refTableHeader.value
var tableBody = refTableBody.value
var tableFooter = refTableFooter.value
var leftBody = refTableLeftBody.value
var rightBody = refTableRightBody.value
var validTip = refValidTooltip.value
var scrollBodyElem = refElem.value
var headerElem = tableHeader ? tableHeader.$el : null
var footerElem = tableFooter ? tableFooter.$el : null
var bodyElem = tableBody.$el
var leftElem = leftBody ? leftBody.$el : null
var rightElem = rightBody ? rightBody.$el : null
var bodyYRef = elemStore['main-body-ySpace']
var bodyYElem = bodyYRef ? bodyYRef.value : null
var bodyXRef = elemStore['main-body-xSpace']
var bodyXElem = bodyXRef ? bodyXRef.value : null
var bodyHeight =
scrollYLoad && bodyYElem
? bodyYElem.clientHeight
: bodyElem.clientHeight
var bodyWidth =
scrollXLoad && bodyXElem ? bodyXElem.clientWidth : bodyElem.clientWidth
var scrollTop = scrollBodyElem.scrollTop
var scrollLeft = bodyElem.scrollLeft
var isRollX = scrollLeft !== lastScrollLeft
var isRollY = scrollTop !== lastScrollTop
tableInternalData.lastScrollTop = scrollTop
tableInternalData.lastScrollLeft = scrollLeft
tableReactData.lastScrollTime = Date.now()
if (rowOpts.isHover || highlightHoverRow) {
$xetable.clearHoverRow()
}
if (leftElem && fixedType === 'left') {
scrollTop = leftElem.scrollTop
syncBodyScroll(fixedType, scrollTop, bodyElem, rightElem)
} else if (rightElem && fixedType === 'right') {
scrollTop = rightElem.scrollTop
syncBodyScroll(fixedType, scrollTop, bodyElem, leftElem)
} else {
if (isRollX) {
if (headerElem) {
headerElem.scrollLeft = bodyElem.scrollLeft
}
if (footerElem) {
footerElem.scrollLeft = bodyElem.scrollLeft
}
}
if (leftElem || rightElem) {
$xetable.checkScrolling()
if (isRollY) {
syncBodyScroll(fixedType, scrollTop, leftElem, rightElem)
}
}
}
if (scrollXLoad && isRollX) {
$xetable.triggerScrollXEvent(evnt)
}
if (scrollYLoad && isRollY) {
$xetable.triggerScrollYEvent(evnt)
}
if (isRollX && validTip && validTip.reactData.visible) {
validTip.updatePlacement()
}
$xetable.dispatchEvent(
'scroll',
{
type: renderType$2,
fixed: fixedType,
scrollTop,
scrollLeft,
scrollHeight: bodyElem.scrollHeight,
scrollWidth: bodyElem.scrollWidth,
bodyHeight,
bodyWidth,
isX: isRollX,
isY: isRollY,
},
evnt
)
}
var wheelTime
var wheelYSize = 0
var wheelYInterval = 0
var wheelYTotal = 0
var isPrevWheelTop = false
var handleWheel = function (evnt, isTopWheel, deltaTop, isRollX, isRollY) {
var elemStore = tableInternalData.elemStore
var scrollXLoad = tableReactData.scrollXLoad,
scrollYLoad = tableReactData.scrollYLoad
var tableBody = refTableBody.value
var leftBody = refTableLeftBody.value
var rightBody = refTableRightBody.value
var leftElem = leftBody ? leftBody.$el : null
var rightElem = rightBody ? rightBody.$el : null
var bodyElem = tableBody.$el
var bodyYRef = elemStore['main-body-ySpace']
var bodyYElem = bodyYRef ? bodyYRef.value : null
var bodyXRef = elemStore['main-body-xSpace']
var bodyXElem = bodyXRef ? bodyXRef.value : null
var bodyHeight =
scrollYLoad && bodyYElem
? bodyYElem.clientHeight
: bodyElem.clientHeight
var bodyWidth =
scrollXLoad && bodyXElem ? bodyXElem.clientWidth : bodyElem.clientWidth
var remainSize =
isPrevWheelTop === isTopWheel
? Math.max(0, wheelYSize - wheelYTotal)
: 0
isPrevWheelTop = isTopWheel
wheelYSize = Math.abs(
isTopWheel ? deltaTop - remainSize : deltaTop + remainSize
)
wheelYInterval = 0
wheelYTotal = 0
clearTimeout(wheelTime)
var handleSmooth = function () {
if (wheelYTotal < wheelYSize) {
var fixedType = props2.fixedType
wheelYInterval = Math.max(5, Math.floor(wheelYInterval * 1.5))
wheelYTotal = wheelYTotal + wheelYInterval
if (wheelYTotal > wheelYSize) {
wheelYInterval = wheelYInterval - (wheelYTotal - wheelYSize)
}
var scrollTop = bodyElem.scrollTop,
clientHeight = bodyElem.clientHeight,
scrollHeight = bodyElem.scrollHeight
var targerTop = scrollTop + wheelYInterval * (isTopWheel ? -1 : 1)
bodyElem.scrollTop = targerTop
if (leftElem) {
leftElem.scrollTop = targerTop
}
if (rightElem) {
rightElem.scrollTop = targerTop
}
if (
isTopWheel
? targerTop < scrollHeight - clientHeight
: targerTop >= 0
) {
wheelTime = setTimeout(handleSmooth, 10)
}
$xetable.dispatchEvent(
'scroll',
{
type: renderType$2,
fixed: fixedType,
scrollTop: bodyElem.scrollTop,
scrollLeft: bodyElem.scrollLeft,
scrollHeight: bodyElem.scrollHeight,
scrollWidth: bodyElem.scrollWidth,
bodyHeight,
bodyWidth,
isX: isRollX,
isY: isRollY,
},
evnt
)
}
}
handleSmooth()
}
var wheelEvent = function (evnt) {
var deltaY = evnt.deltaY,
deltaX = evnt.deltaX
var highlightHoverRow = tableProps2.highlightHoverRow
var scrollYLoad = tableReactData.scrollYLoad
var lastScrollTop = tableInternalData.lastScrollTop,
lastScrollLeft = tableInternalData.lastScrollLeft
var rowOpts = computeRowOpts.value
var tableBody = refTableBody.value
var scrollBodyElem = refElem.value
var bodyElem = tableBody.$el
var deltaTop = deltaY
var deltaLeft = deltaX
var isTopWheel = deltaTop < 0
if (
isTopWheel
? scrollBodyElem.scrollTop <= 0
: scrollBodyElem.scrollTop >=
scrollBodyElem.scrollHeight - scrollBodyElem.clientHeight
) {
return
}
var scrollTop = scrollBodyElem.scrollTop + deltaTop
var scrollLeft = bodyElem.scrollLeft + deltaLeft
var isRollX = scrollLeft !== lastScrollLeft
var isRollY = scrollTop !== lastScrollTop
if (isRollY) {
evnt.preventDefault()
tableInternalData.lastScrollTop = scrollTop
tableInternalData.lastScrollLeft = scrollLeft
tableReactData.lastScrollTime = Date.now()
if (rowOpts.isHover || highlightHoverRow) {
$xetable.clearHoverRow()
}
handleWheel(evnt, isTopWheel, deltaTop, isRollX, isRollY)
if (scrollYLoad) {
$xetable.triggerScrollYEvent(evnt)
}
}
}
onMounted(function () {
nextTick(function () {
var fixedType = props2.fixedType
var elemStore = tableInternalData.elemStore
var prefix = ''.concat(fixedType || 'main', '-body-')
var el2 = refElem.value
elemStore[''.concat(prefix, 'wrapper')] = refElem
elemStore[''.concat(prefix, 'table')] = refBodyTable
elemStore[''.concat(prefix, 'colgroup')] = refBodyColgroup
elemStore[''.concat(prefix, 'list')] = refBodyTBody
elemStore[''.concat(prefix, 'xSpace')] = refBodyXSpace
elemStore[''.concat(prefix, 'ySpace')] = refBodyYSpace
elemStore[''.concat(prefix, 'emptyBlock')] = refBodyEmptyBlock
el2.onscroll = scrollEvent
el2._onscroll = scrollEvent
})
})
onBeforeUnmount(function () {
var el2 = refElem.value
clearTimeout(wheelTime)
if (el2) {
el2._onscroll = null
el2.onscroll = null
}
})
onUnmounted(function () {
var fixedType = props2.fixedType
var elemStore = tableInternalData.elemStore
var prefix = ''.concat(fixedType || 'main', '-body-')
elemStore[''.concat(prefix, 'wrapper')] = null
elemStore[''.concat(prefix, 'table')] = null
elemStore[''.concat(prefix, 'colgroup')] = null
elemStore[''.concat(prefix, 'list')] = null
elemStore[''.concat(prefix, 'xSpace')] = null
elemStore[''.concat(prefix, 'ySpace')] = null
elemStore[''.concat(prefix, 'emptyBlock')] = null
})
var renderVN = function () {
var fixedColumn = props2.fixedColumn,
fixedType = props2.fixedType,
tableColumn = props2.tableColumn
var keyboardConfig = tableProps2.keyboardConfig,
allColumnOverflow = tableProps2.showOverflow,
spanMethod = tableProps2.spanMethod,
mouseConfig = tableProps2.mouseConfig
var tableData2 = tableReactData.tableData,
mergeList = tableReactData.mergeList,
scrollYLoad = tableReactData.scrollYLoad,
isAllOverflow = tableReactData.isAllOverflow
var visibleColumn = tableInternalData.visibleColumn
var slots = tableContext.slots
var sYOpts = computeSYOpts.value
var emptyOpts = computeEmptyOpts.value
var keyboardOpts = computeKeyboardOpts.value
var mouseOpts = computeMouseOpts.value
if (fixedType) {
if (
!tableReactData.expandColumn &&
(scrollYLoad ||
(allColumnOverflow ? isAllOverflow : allColumnOverflow))
) {
if (
!mergeList.length &&
!spanMethod &&
!(keyboardConfig && keyboardOpts.isMerge)
) {
tableColumn = fixedColumn
} else {
tableColumn = visibleColumn
}
} else {
tableColumn = visibleColumn
}
}
var emptyContent
if (slots.empty) {
emptyContent = $xetable.callSlot(slots.empty, {
$table: $xetable,
$grid: $xetable.xegrid,
})
} else {
var compConf = emptyOpts.name
? VXETable.renderer.get(emptyOpts.name)
: null
var renderEmpty = compConf ? compConf.renderEmpty : null
if (renderEmpty) {
emptyContent = getSlotVNs(
renderEmpty(emptyOpts, { $table: $xetable })
)
} else {
emptyContent =
tableProps2.emptyText || GlobalConfig.i18n('vxe.table.emptyText')
}
}
return h$4(
'div',
__assign$3(
{
ref: refElem,
class: [
'vxe-table--body-wrapper',
fixedType
? 'fixed-'.concat(fixedType, '--wrapper')
: 'body--wrapper',
],
xid: xID,
},
sYOpts.mode === 'wheel' ? { onWheel: wheelEvent } : {}
),
[
fixedType
? createCommentVNode()
: h$4('div', {
ref: refBodyXSpace,
class: 'vxe-body--x-space',
}),
h$4('div', {
ref: refBodyYSpace,
class: 'vxe-body--y-space',
}),
h$4(
'table',
{
ref: refBodyTable,
class: 'vxe-table--body',
xid: xID,
cellspacing: 0,
cellpadding: 0,
border: 0,
},
[
h$4(
'colgroup',
{
ref: refBodyColgroup,
},
tableColumn.map(function (column, $columnIndex) {
return h$4('col', {
name: column.id,
key: $columnIndex,
})
})
),
h$4(
'tbody',
{
ref: refBodyTBody,
},
renderRows(fixedType, tableData2, tableColumn)
),
]
),
h$4('div', {
class: 'vxe-table--checkbox-range',
}),
mouseConfig && mouseOpts.area
? h$4(
'div',
{
class: 'vxe-table--cell-area',
},
[
h$4(
'span',
{
class: 'vxe-table--cell-main-area',
},
mouseOpts.extension
? [
h$4('span', {
class: 'vxe-table--cell-main-area-btn',
onMousedown: function (evnt) {
$xetable.triggerCellExtendMousedownEvent(evnt, {
$table: $xetable,
fixed: fixedType,
type: renderType$2,
})
},
}),
]
: []
),
h$4('span', {
class: 'vxe-table--cell-copy-area',
}),
h$4('span', {
class: 'vxe-table--cell-extend-area',
}),
h$4('span', {
class: 'vxe-table--cell-multi-area',
}),
h$4('span', {
class: 'vxe-table--cell-active-area',
}),
]
)
: null,
!fixedType
? h$4(
'div',
{
class: 'vxe-table--empty-block',
ref: refBodyEmptyBlock,
},
[
h$4(
'div',
{
class: 'vxe-table--empty-content',
},
emptyContent
),
]
)
: null,
]
)
}
return renderVN
},
})
var getAllColumns = function (columns, parentColumn) {
var result = []
columns.forEach(function (column) {
column.parentId = parentColumn ? parentColumn.id : null
if (column.visible) {
if (
column.children &&
column.children.length &&
column.children.some(function (column2) {
return column2.visible
})
) {
result.push(column)
result.push.apply(result, getAllColumns(column.children, column))
} else {
result.push(column)
}
}
})
return result
}
var convertToRows = function (originColumns) {
var maxLevel = 1
var traverse = function (column, parent2) {
if (parent2) {
column.level = parent2.level + 1
if (maxLevel < column.level) {
maxLevel = column.level
}
}
if (
column.children &&
column.children.length &&
column.children.some(function (column2) {
return column2.visible
})
) {
var colSpan_1 = 0
column.children.forEach(function (subColumn) {
if (subColumn.visible) {
traverse(subColumn, column)
colSpan_1 += subColumn.colSpan
}
})
column.colSpan = colSpan_1
} else {
column.colSpan = 1
}
}
originColumns.forEach(function (column) {
column.level = 1
traverse(column)
})
var rows = []
for (var i2 = 0; i2 < maxLevel; i2++) {
rows.push([])
}
var allColumns = getAllColumns(originColumns)
allColumns.forEach(function (column) {
if (
column.children &&
column.children.length &&
column.children.some(function (column2) {
return column2.visible
})
) {
column.rowSpan = 1
} else {
column.rowSpan = maxLevel - column.level + 1
}
rows[column.level - 1].push(column)
})
return rows
}
var __assign$2 =
(globalThis && globalThis.__assign) ||
function () {
__assign$2 =
Object.assign ||
function (t3) {
for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
s2 = arguments[i2]
for (var p2 in s2)
if (Object.prototype.hasOwnProperty.call(s2, p2)) t3[p2] = s2[p2]
}
return t3
}
return __assign$2.apply(this, arguments)
}
var renderType$1 = 'header'
var VxeTableHeader = defineComponent({
name: 'VxeTableHeader',
props: {
tableData: Array,
tableColumn: Array,
tableGroupColumn: Array,
fixedColumn: Array,
fixedType: { type: String, default: null },
},
setup: function (props2) {
var $xetable = inject('$xetable', {})
var xID = $xetable.xID,
tableProps2 = $xetable.props,
tableReactData = $xetable.reactData,
tableInternalData = $xetable.internalData
var _a2 = $xetable.getRefMaps(),
tableRefElem = _a2.refElem,
refTableBody = _a2.refTableBody,
refLeftContainer = _a2.refLeftContainer,
refRightContainer = _a2.refRightContainer,
refCellResizeBar = _a2.refCellResizeBar
var computeColumnOpts = $xetable.getComputeMaps().computeColumnOpts
var headerColumn = ref([])
var refElem = ref()
var refHeaderTable = ref()
var refHeaderColgroup = ref()
var refHeaderTHead = ref()
var refHeaderXSpace = ref()
var refHeaderBorderRepair = ref()
var uploadColumn = function () {
var isGroup2 = tableReactData.isGroup
headerColumn.value = isGroup2
? convertToRows(props2.tableGroupColumn)
: []
}
var resizeMousedown = function (evnt, params2) {
var column = params2.column
var fixedType = props2.fixedType
var tableBody = refTableBody.value
var leftContainerElem = refLeftContainer.value
var rightContainerElem = refRightContainer.value
var resizeBarElem = refCellResizeBar.value
var dragClientX = evnt.clientX
var wrapperElem = refElem.value
var dragBtnElem = evnt.target
var cell = (params2.cell = dragBtnElem.parentNode)
var dragLeft = 0
var tableBodyElem = tableBody.$el
var pos = getOffsetPos(dragBtnElem, wrapperElem)
var dragBtnWidth = dragBtnElem.clientWidth
var dragBtnOffsetWidth = Math.floor(dragBtnWidth / 2)
var minInterval = getColReMinWidth(params2) - dragBtnOffsetWidth
var dragMinLeft = pos.left - cell.clientWidth + dragBtnWidth + minInterval
var dragPosLeft = pos.left + dragBtnOffsetWidth
var domMousemove = document.onmousemove
var domMouseup = document.onmouseup
var isLeftFixed = fixedType === 'left'
var isRightFixed = fixedType === 'right'
var tableEl = tableRefElem.value
var fixedOffsetWidth = 0
if (isLeftFixed || isRightFixed) {
var siblingProp = isLeftFixed
? 'nextElementSibling'
: 'previousElementSibling'
var tempCellElem = cell[siblingProp]
while (tempCellElem) {
if (hasClass(tempCellElem, 'fixed--hidden')) {
break
} else if (!hasClass(tempCellElem, 'col--group')) {
fixedOffsetWidth += tempCellElem.offsetWidth
}
tempCellElem = tempCellElem[siblingProp]
}
if (isRightFixed && rightContainerElem) {
dragPosLeft = rightContainerElem.offsetLeft + fixedOffsetWidth
}
}
var updateEvent = function (evnt2) {
evnt2.stopPropagation()
evnt2.preventDefault()
var offsetX = evnt2.clientX - dragClientX
var left2 = dragPosLeft + offsetX
var scrollLeft = fixedType ? 0 : tableBodyElem.scrollLeft
if (isLeftFixed) {
left2 = Math.min(
left2,
(rightContainerElem
? rightContainerElem.offsetLeft
: tableBodyElem.clientWidth) -
fixedOffsetWidth -
minInterval
)
} else if (isRightFixed) {
dragMinLeft =
(leftContainerElem ? leftContainerElem.clientWidth : 0) +
fixedOffsetWidth +
minInterval
left2 = Math.min(left2, dragPosLeft + cell.clientWidth - minInterval)
} else {
dragMinLeft = Math.max(tableBodyElem.scrollLeft, dragMinLeft)
}
dragLeft = Math.max(left2, dragMinLeft)
resizeBarElem.style.left = ''.concat(dragLeft - scrollLeft, 'px')
}
tableReactData._isResize = true
addClass(tableEl, 'drag--resize')
resizeBarElem.style.display = 'block'
document.onmousemove = updateEvent
document.onmouseup = function (evnt2) {
document.onmousemove = domMousemove
document.onmouseup = domMouseup
var resizeWidth =
column.renderWidth +
(isRightFixed ? dragPosLeft - dragLeft : dragLeft - dragPosLeft)
column.resizeWidth = resizeWidth
resizeBarElem.style.display = 'none'
tableReactData._isResize = false
tableInternalData._lastResizeTime = Date.now()
$xetable.analyColumnWidth()
$xetable.recalculate(true).then(function () {
$xetable.saveCustomResizable()
$xetable.updateCellAreas()
$xetable.dispatchEvent(
'resizable-change',
__assign$2(__assign$2({}, params2), { resizeWidth }),
evnt2
)
})
removeClass(tableEl, 'drag--resize')
}
updateEvent(evnt)
if ($xetable.closeMenu) {
$xetable.closeMenu()
}
}
watch$1(function () {
return props2.tableColumn
}, uploadColumn)
onMounted(function () {
nextTick(function () {
var fixedType = props2.fixedType
var internalData = $xetable.internalData
var elemStore = internalData.elemStore
var prefix = ''.concat(fixedType || 'main', '-header-')
elemStore[''.concat(prefix, 'wrapper')] = refElem
elemStore[''.concat(prefix, 'table')] = refHeaderTable
elemStore[''.concat(prefix, 'colgroup')] = refHeaderColgroup
elemStore[''.concat(prefix, 'list')] = refHeaderTHead
elemStore[''.concat(prefix, 'xSpace')] = refHeaderXSpace
elemStore[''.concat(prefix, 'repair')] = refHeaderBorderRepair
uploadColumn()
})
})
onUnmounted(function () {
var fixedType = props2.fixedType
var internalData = $xetable.internalData
var elemStore = internalData.elemStore
var prefix = ''.concat(fixedType || 'main', '-header-')
elemStore[''.concat(prefix, 'wrapper')] = null
elemStore[''.concat(prefix, 'table')] = null
elemStore[''.concat(prefix, 'colgroup')] = null
elemStore[''.concat(prefix, 'list')] = null
elemStore[''.concat(prefix, 'xSpace')] = null
elemStore[''.concat(prefix, 'repair')] = null
})
var renderVN = function () {
var fixedType = props2.fixedType,
fixedColumn = props2.fixedColumn,
tableColumn = props2.tableColumn
var resizable = tableProps2.resizable,
border = tableProps2.border,
columnKey2 = tableProps2.columnKey,
headerRowClassName = tableProps2.headerRowClassName,
headerCellClassName = tableProps2.headerCellClassName,
headerRowStyle2 = tableProps2.headerRowStyle,
headerCellStyle = tableProps2.headerCellStyle,
allColumnHeaderOverflow = tableProps2.showHeaderOverflow,
allHeaderAlign = tableProps2.headerAlign,
allAlign = tableProps2.align,
mouseConfig = tableProps2.mouseConfig
var isGroup2 = tableReactData.isGroup,
currentColumn = tableReactData.currentColumn,
scrollXLoad = tableReactData.scrollXLoad,
overflowX = tableReactData.overflowX,
scrollbarWidth = tableReactData.scrollbarWidth
var visibleColumn = tableInternalData.visibleColumn
var columnOpts = computeColumnOpts.value
var headerGroups = headerColumn.value
var renderColumnList = tableColumn
if (isGroup2) {
renderColumnList = visibleColumn
} else {
if (fixedType) {
if (scrollXLoad || allColumnHeaderOverflow) {
renderColumnList = fixedColumn
}
}
headerGroups = [renderColumnList]
}
return h$4(
'div',
{
ref: refElem,
class: [
'vxe-table--header-wrapper',
fixedType
? 'fixed-'.concat(fixedType, '--wrapper')
: 'body--wrapper',
],
xid: xID,
},
[
fixedType
? createCommentVNode()
: h$4('div', {
ref: refHeaderXSpace,
class: 'vxe-body--x-space',
}),
h$4(
'table',
{
ref: refHeaderTable,
class: 'vxe-table--header',
xid: xID,
cellspacing: 0,
cellpadding: 0,
border: 0,
},
[
h$4(
'colgroup',
{
ref: refHeaderColgroup,
},
renderColumnList
.map(function (column, $columnIndex) {
return h$4('col', {
name: column.id,
key: $columnIndex,
})
})
.concat(
scrollbarWidth
? [
h$4('col', {
name: 'col_gutter',
}),
]
: []
)
),
h$4(
'thead',
{
ref: refHeaderTHead,
},
headerGroups.map(function (cols, $rowIndex) {
return h$4(
'tr',
{
class: [
'vxe-header--row',
headerRowClassName
? xeUtils.isFunction(headerRowClassName)
? headerRowClassName({
$table: $xetable,
$rowIndex,
fixed: fixedType,
type: renderType$1,
})
: headerRowClassName
: '',
],
style: headerRowStyle2
? xeUtils.isFunction(headerRowStyle2)
? headerRowStyle2({
$table: $xetable,
$rowIndex,
fixed: fixedType,
type: renderType$1,
})
: headerRowStyle2
: null,
},
cols
.map(function (column, $columnIndex) {
var _a3
var type4 = column.type,
showHeaderOverflow = column.showHeaderOverflow,
headerAlign = column.headerAlign,
align = column.align,
headerClassName = column.headerClassName
var isColGroup =
column.children && column.children.length
var fixedHiddenColumn = fixedType
? column.fixed !== fixedType && !isColGroup
: !!column.fixed && overflowX
var headOverflow =
xeUtils.isUndefined(showHeaderOverflow) ||
xeUtils.isNull(showHeaderOverflow)
? allColumnHeaderOverflow
: showHeaderOverflow
var headAlign =
headerAlign || align || allHeaderAlign || allAlign
var showEllipsis = headOverflow === 'ellipsis'
var showTitle = headOverflow === 'title'
var showTooltip2 =
headOverflow === true || headOverflow === 'tooltip'
var hasEllipsis =
showTitle || showTooltip2 || showEllipsis
var hasFilter =
column.filters &&
column.filters.some(function (item2) {
return item2.checked
})
var columnIndex = $xetable.getColumnIndex(column)
var _columnIndex = $xetable.getVTColumnIndex(column)
var params2 = {
$table: $xetable,
$grid: $xetable.xegrid,
$rowIndex,
column,
columnIndex,
$columnIndex,
_columnIndex,
fixed: fixedType,
type: renderType$1,
isHidden: fixedHiddenColumn,
hasFilter,
}
var thOns = {
onClick: function (evnt) {
return $xetable.triggerHeaderCellClickEvent(
evnt,
params2
)
},
onDblclick: function (evnt) {
return $xetable.triggerHeaderCellDblclickEvent(
evnt,
params2
)
},
}
if (scrollXLoad && !hasEllipsis) {
showEllipsis = hasEllipsis = true
}
if (mouseConfig) {
thOns.onMousedown = function (evnt) {
return $xetable.triggerHeaderCellMousedownEvent(
evnt,
params2
)
}
}
return h$4(
'th',
__assign$2(
__assign$2(
{
class: [
'vxe-header--column',
column.id,
((_a3 = {}),
(_a3['col--'.concat(headAlign)] = headAlign),
(_a3['col--'.concat(type4)] = type4),
(_a3['col--last'] =
$columnIndex === cols.length - 1),
(_a3['col--fixed'] = column.fixed),
(_a3['col--group'] = isColGroup),
(_a3['col--ellipsis'] = hasEllipsis),
(_a3['fixed--hidden'] = fixedHiddenColumn),
(_a3['is--sortable'] = column.sortable),
(_a3['col--filter'] = !!column.filters),
(_a3['is--filter-active'] = hasFilter),
(_a3['col--current'] =
currentColumn === column),
_a3),
headerClassName
? xeUtils.isFunction(headerClassName)
? headerClassName(params2)
: headerClassName
: '',
headerCellClassName
? xeUtils.isFunction(headerCellClassName)
? headerCellClassName(params2)
: headerCellClassName
: '',
],
colid: column.id,
colspan:
column.colSpan > 1 ? column.colSpan : null,
rowspan:
column.rowSpan > 1 ? column.rowSpan : null,
style: headerCellStyle
? xeUtils.isFunction(headerCellStyle)
? headerCellStyle(params2)
: headerCellStyle
: null,
},
thOns
),
{
key:
columnKey2 || columnOpts.useKey || isColGroup
? column.id
: $columnIndex,
}
),
[
h$4(
'div',
{
class: [
'vxe-cell',
{
'c--title': showTitle,
'c--tooltip': showTooltip2,
'c--ellipsis': showEllipsis,
},
],
},
column.renderHeader(params2)
),
!fixedHiddenColumn &&
!isColGroup &&
(xeUtils.isBoolean(column.resizable)
? column.resizable
: columnOpts.resizable || resizable)
? h$4('div', {
class: [
'vxe-resizable',
{
'is--line': !border || border === 'none',
},
],
onMousedown: function (evnt) {
return resizeMousedown(evnt, params2)
},
})
: null,
]
)
})
.concat(
scrollbarWidth
? [
h$4('th', {
class: 'vxe-header--gutter col--gutter',
}),
]
: []
)
)
})
),
]
),
h$4('div', {
ref: refHeaderBorderRepair,
class: 'vxe-table--header-border-line',
}),
]
)
}
return renderVN
},
})
var Header$6 = Object.assign(VxeTableHeader, {
install: function (app2) {
app2.component(VxeTableHeader.name, VxeTableHeader)
},
})
dynamicApp.component(VxeTableHeader.name, VxeTableHeader)
var __assign$1 =
(globalThis && globalThis.__assign) ||
function () {
__assign$1 =
Object.assign ||
function (t3) {
for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
s2 = arguments[i2]
for (var p2 in s2)
if (Object.prototype.hasOwnProperty.call(s2, p2)) t3[p2] = s2[p2]
}
return t3
}
return __assign$1.apply(this, arguments)
}
var renderType = 'footer'
function mergeFooterMethod(mergeFooterList, _rowIndex, _columnIndex) {
for (var mIndex = 0; mIndex < mergeFooterList.length; mIndex++) {
var _a2 = mergeFooterList[mIndex],
mergeRowIndex = _a2.row,
mergeColIndex = _a2.col,
mergeRowspan = _a2.rowspan,
mergeColspan = _a2.colspan
if (
mergeColIndex > -1 &&
mergeRowIndex > -1 &&
mergeRowspan &&
mergeColspan
) {
if (mergeRowIndex === _rowIndex && mergeColIndex === _columnIndex) {
return { rowspan: mergeRowspan, colspan: mergeColspan }
}
if (
_rowIndex >= mergeRowIndex &&
_rowIndex < mergeRowIndex + mergeRowspan &&
_columnIndex >= mergeColIndex &&
_columnIndex < mergeColIndex + mergeColspan
) {
return { rowspan: 0, colspan: 0 }
}
}
}
}
var VxeTableFooterComponent = defineComponent({
name: 'VxeTableFooter',
props: {
footerTableData: {
type: Array,
default: function () {
return []
},
},
tableColumn: {
type: Array,
default: function () {
return []
},
},
fixedColumn: {
type: Array,
default: function () {
return []
},
},
fixedType: { type: String, default: null },
},
setup: function (props2) {
var $xetable = inject('$xetable', {})
var xID = $xetable.xID,
tableProps2 = $xetable.props,
tableReactData = $xetable.reactData,
tableInternalData = $xetable.internalData
var _a2 = $xetable.getRefMaps(),
refTableHeader = _a2.refTableHeader,
refTableBody = _a2.refTableBody,
refValidTooltip = _a2.refValidTooltip
var _b2 = $xetable.getComputeMaps(),
computeTooltipOpts = _b2.computeTooltipOpts,
computeColumnOpts = _b2.computeColumnOpts
var refElem = ref()
var refFooterTable = ref()
var refFooterColgroup = ref()
var refFooterTFoot = ref()
var refFooterXSpace = ref()
var scrollEvent = function (evnt) {
var fixedType = props2.fixedType
var scrollXLoad = tableReactData.scrollXLoad
var lastScrollLeft = tableInternalData.lastScrollLeft
var validTip = refValidTooltip.value
var tableHeader = refTableHeader.value
var tableBody = refTableBody.value
var headerElem = tableHeader ? tableHeader.$el : null
var footerElem = refElem.value
var bodyElem = tableBody.$el
var scrollLeft = footerElem.scrollLeft
var isX = scrollLeft !== lastScrollLeft
tableInternalData.lastScrollLeft = scrollLeft
tableReactData.lastScrollTime = Date.now()
if (headerElem) {
headerElem.scrollLeft = scrollLeft
}
if (bodyElem) {
bodyElem.scrollLeft = scrollLeft
}
if (scrollXLoad && isX) {
$xetable.triggerScrollXEvent(evnt)
}
if (isX && validTip && validTip.reactData.visible) {
validTip.updatePlacement()
}
$xetable.dispatchEvent(
'scroll',
{
type: renderType,
fixed: fixedType,
scrollTop: bodyElem.scrollTop,
scrollLeft,
isX,
isY: false,
},
evnt
)
}
onMounted(function () {
nextTick(function () {
var fixedType = props2.fixedType
var elemStore = tableInternalData.elemStore
var prefix = ''.concat(fixedType || 'main', '-footer-')
elemStore[''.concat(prefix, 'wrapper')] = refElem
elemStore[''.concat(prefix, 'table')] = refFooterTable
elemStore[''.concat(prefix, 'colgroup')] = refFooterColgroup
elemStore[''.concat(prefix, 'list')] = refFooterTFoot
elemStore[''.concat(prefix, 'xSpace')] = refFooterXSpace
})
})
onUnmounted(function () {
var fixedType = props2.fixedType
var elemStore = tableInternalData.elemStore
var prefix = ''.concat(fixedType || 'main', '-footer-')
elemStore[''.concat(prefix, 'wrapper')] = null
elemStore[''.concat(prefix, 'table')] = null
elemStore[''.concat(prefix, 'colgroup')] = null
elemStore[''.concat(prefix, 'list')] = null
elemStore[''.concat(prefix, 'xSpace')] = null
})
var renderVN = function () {
var fixedType = props2.fixedType,
fixedColumn = props2.fixedColumn,
tableColumn = props2.tableColumn,
footerTableData = props2.footerTableData
var footerRowClassName = tableProps2.footerRowClassName,
footerCellClassName = tableProps2.footerCellClassName,
footerRowStyle = tableProps2.footerRowStyle,
footerCellStyle = tableProps2.footerCellStyle,
allFooterAlign = tableProps2.footerAlign,
footerSpanMethod = tableProps2.footerSpanMethod,
allAlign = tableProps2.align,
columnKey2 = tableProps2.columnKey,
allColumnFooterOverflow = tableProps2.showFooterOverflow
var visibleColumn = tableInternalData.visibleColumn
var scrollXLoad = tableReactData.scrollXLoad,
overflowX = tableReactData.overflowX,
scrollbarWidth = tableReactData.scrollbarWidth,
currentColumn = tableReactData.currentColumn,
mergeFooterList = tableReactData.mergeFooterList
var tooltipOpts = computeTooltipOpts.value
var columnOpts = computeColumnOpts.value
if (fixedType) {
if (
!tableReactData.expandColumn &&
(scrollXLoad || allColumnFooterOverflow)
) {
if (!mergeFooterList.length || !footerSpanMethod) {
tableColumn = fixedColumn
} else {
tableColumn = visibleColumn
}
} else {
tableColumn = visibleColumn
}
}
return h$4(
'div',
{
ref: refElem,
class: [
'vxe-table--footer-wrapper',
fixedType
? 'fixed-'.concat(fixedType, '--wrapper')
: 'body--wrapper',
],
xid: xID,
onScroll: scrollEvent,
},
[
fixedType
? createCommentVNode()
: h$4('div', {
ref: refFooterXSpace,
class: 'vxe-body--x-space',
}),
h$4(
'table',
{
ref: refFooterTable,
class: 'vxe-table--footer',
xid: xID,
cellspacing: 0,
cellpadding: 0,
border: 0,
},
[
h$4(
'colgroup',
{
ref: refFooterColgroup,
},
tableColumn
.map(function (column, $columnIndex) {
return h$4('col', {
name: column.id,
key: $columnIndex,
})
})
.concat(
scrollbarWidth
? [
h$4('col', {
name: 'col_gutter',
}),
]
: []
)
),
h$4(
'tfoot',
{
ref: refFooterTFoot,
},
footerTableData.map(function (list2, _rowIndex) {
var $rowIndex = _rowIndex
return h$4(
'tr',
{
class: [
'vxe-footer--row',
footerRowClassName
? xeUtils.isFunction(footerRowClassName)
? footerRowClassName({
$table: $xetable,
_rowIndex,
$rowIndex,
fixed: fixedType,
type: renderType,
})
: footerRowClassName
: '',
],
style: footerRowStyle
? xeUtils.isFunction(footerRowStyle)
? footerRowStyle({
$table: $xetable,
_rowIndex,
$rowIndex,
fixed: fixedType,
type: renderType,
})
: footerRowStyle
: null,
},
tableColumn
.map(function (column, $columnIndex) {
var _a3
var type4 = column.type,
showFooterOverflow = column.showFooterOverflow,
footerAlign = column.footerAlign,
align = column.align,
footerClassName = column.footerClassName
var showAllTip = tooltipOpts.showAll
var isColGroup =
column.children && column.children.length
var fixedHiddenColumn = fixedType
? column.fixed !== fixedType && !isColGroup
: column.fixed && overflowX
var footOverflow =
xeUtils.isUndefined(showFooterOverflow) ||
xeUtils.isNull(showFooterOverflow)
? allColumnFooterOverflow
: showFooterOverflow
var footAlign =
footerAlign || align || allFooterAlign || allAlign
var showEllipsis = footOverflow === 'ellipsis'
var showTitle = footOverflow === 'title'
var showTooltip2 =
footOverflow === true || footOverflow === 'tooltip'
var hasEllipsis =
showTitle || showTooltip2 || showEllipsis
var attrs = { colid: column.id }
var tfOns = {}
var columnIndex = $xetable.getColumnIndex(column)
var _columnIndex = $xetable.getVTColumnIndex(column)
var itemIndex = _columnIndex
var params2 = {
$table: $xetable,
$grid: $xetable.xegrid,
_rowIndex,
$rowIndex,
column,
columnIndex,
$columnIndex,
_columnIndex,
itemIndex,
items: list2,
fixed: fixedType,
type: renderType,
data: footerTableData,
}
if (scrollXLoad && !hasEllipsis) {
showEllipsis = hasEllipsis = true
}
if (showTitle || showTooltip2 || showAllTip) {
tfOns.onMouseenter = function (evnt) {
if (showTitle) {
updateCellTitle(evnt.currentTarget, column)
} else if (showTooltip2 || showAllTip) {
$xetable.triggerFooterTooltipEvent(evnt, params2)
}
}
}
if (showTooltip2 || showAllTip) {
tfOns.onMouseleave = function (evnt) {
if (showTooltip2 || showAllTip) {
$xetable.handleTargetLeaveEvent(evnt)
}
}
}
tfOns.onClick = function (evnt) {
$xetable.dispatchEvent(
'footer-cell-click',
Object.assign(
{ cell: evnt.currentTarget },
params2
),
evnt
)
}
tfOns.onDblclick = function (evnt) {
$xetable.dispatchEvent(
'footer-cell-dblclick',
Object.assign(
{ cell: evnt.currentTarget },
params2
),
evnt
)
}
if (mergeFooterList.length) {
var spanRest = mergeFooterMethod(
mergeFooterList,
_rowIndex,
_columnIndex
)
if (spanRest) {
var rowspan = spanRest.rowspan,
colspan = spanRest.colspan
if (!rowspan || !colspan) {
return null
}
if (rowspan > 1) {
attrs.rowspan = rowspan
}
if (colspan > 1) {
attrs.colspan = colspan
}
}
} else if (footerSpanMethod) {
var _b3 = footerSpanMethod(params2) || {},
_c2 = _b3.rowspan,
rowspan = _c2 === void 0 ? 1 : _c2,
_d = _b3.colspan,
colspan = _d === void 0 ? 1 : _d
if (!rowspan || !colspan) {
return null
}
if (rowspan > 1) {
attrs.rowspan = rowspan
}
if (colspan > 1) {
attrs.colspan = colspan
}
}
return h$4(
'td',
__assign$1(
__assign$1(
__assign$1(
__assign$1(
{
class: [
'vxe-footer--column',
column.id,
((_a3 = {}),
(_a3['col--'.concat(footAlign)] =
footAlign),
(_a3['col--'.concat(type4)] = type4),
(_a3['col--last'] =
$columnIndex ===
tableColumn.length - 1),
(_a3['fixed--hidden'] =
fixedHiddenColumn),
(_a3['col--ellipsis'] = hasEllipsis),
(_a3['col--current'] =
currentColumn === column),
_a3),
getPropClass(footerClassName, params2),
getPropClass(
footerCellClassName,
params2
),
],
},
attrs
),
{
style: footerCellStyle
? xeUtils.isFunction(footerCellStyle)
? footerCellStyle(params2)
: footerCellStyle
: null,
}
),
tfOns
),
{
key:
columnKey2 || columnOpts.useKey
? column.id
: $columnIndex,
}
),
[
h$4(
'div',
{
class: [
'vxe-cell',
{
'c--title': showTitle,
'c--tooltip': showTooltip2,
'c--ellipsis': showEllipsis,
},
],
},
column.renderFooter(params2)
),
]
)
})
.concat(
scrollbarWidth
? [
h$4('td', {
class: 'vxe-footer--gutter col--gutter',
}),
]
: []
)
)
})
),
]
),
]
)
}
return renderVN
},
})
var Footer$2 = Object.assign(VxeTableFooterComponent, {
install: function (app2) {
app2.component(VxeTableFooterComponent.name, VxeTableFooterComponent)
},
})
dynamicApp.component(VxeTableFooterComponent.name, VxeTableFooterComponent)
var __assign =
(globalThis && globalThis.__assign) ||
function () {
__assign =
Object.assign ||
function (t3) {
for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) {
s2 = arguments[i2]
for (var p2 in s2)
if (Object.prototype.hasOwnProperty.call(s2, p2)) t3[p2] = s2[p2]
}
return t3
}
return __assign.apply(this, arguments)
}
var __spreadArray =
(globalThis && globalThis.__spreadArray) ||
function (to, from, pack2) {
if (pack2 || arguments.length === 2)
for (var i2 = 0, l2 = from.length, ar2; i2 < l2; i2++) {
if (ar2 || !(i2 in from)) {
if (!ar2) ar2 = Array.prototype.slice.call(from, 0, i2)
ar2[i2] = from[i2]
}
}
return to.concat(ar2 || Array.prototype.slice.call(from))
}
var isWebkit = browse['-webkit'] && !browse.edge
var resizableStorageKey = 'VXE_TABLE_CUSTOM_COLUMN_WIDTH'
var visibleStorageKey = 'VXE_TABLE_CUSTOM_COLUMN_VISIBLE'
var fixedStorageKey = 'VXE_TABLE_CUSTOM_COLUMN_FIXED'
var orderStorageKey = 'VXE_TABLE_CUSTOM_COLUMN_ORDER'
var VxeTableComponent = defineComponent({
name: 'VxeTable',
props: tableProps,
emits: tableEmits,
setup: function (props2, context2) {
var slots = context2.slots,
emit2 = context2.emit
var hasUseTooltip = VXETable.tooltip
var xID = xeUtils.uniqueId()
var computeSize = useSize(props2)
var instance = getCurrentInstance()
var reactData = reactive({
staticColumns: [],
tableGroupColumn: [],
tableColumn: [],
tableData: [],
scrollXLoad: false,
scrollYLoad: false,
overflowY: true,
overflowX: false,
scrollbarWidth: 0,
scrollbarHeight: 0,
lastScrollTime: 0,
rowHeight: 0,
parentHeight: 0,
isGroup: false,
isAllOverflow: false,
isAllSelected: false,
isIndeterminate: false,
selectCheckboxMaps: {},
currentRow: null,
currentColumn: null,
selectRadioRow: null,
footerTableData: [],
expandColumn: null,
treeNodeColumn: null,
hasFixedColumn: false,
rowExpandedMaps: {},
rowExpandLazyLoadedMaps: {},
treeExpandedMaps: {},
treeExpandLazyLoadedMaps: {},
treeIndeterminateMaps: {},
mergeList: [],
mergeFooterList: [],
upDataFlag: 0,
reColumnFlag: 0,
initStore: {
filter: false,
import: false,
export: false,
},
filterStore: {
isAllSelected: false,
isIndeterminate: false,
style: null,
options: [],
column: null,
multiple: false,
visible: false,
maxHeight: null,
},
columnStore: {
leftList: [],
centerList: [],
rightList: [],
resizeList: [],
pxList: [],
pxMinList: [],
scaleList: [],
scaleMinList: [],
autoList: [],
},
ctxMenuStore: {
selected: null,
visible: false,
showChild: false,
selectChild: null,
list: [],
style: null,
},
editStore: {
indexs: {
columns: [],
},
titles: {
columns: [],
},
selected: {
row: null,
column: null,
},
copyed: {
cut: false,
rows: [],
columns: [],
},
actived: {
row: null,
column: null,
},
insertMaps: {},
removeMaps: {},
},
tooltipStore: {
row: null,
column: null,
content: null,
visible: false,
currOpts: null,
},
validStore: {
visible: false,
},
validErrorMaps: {},
importStore: {
inited: false,
file: null,
type: '',
modeList: [],
typeList: [],
filename: '',
visible: false,
},
importParams: {
mode: '',
types: null,
message: true,
},
exportStore: {
inited: false,
name: '',
modeList: [],
typeList: [],
columns: [],
isPrint: false,
hasFooter: false,
hasMerge: false,
hasTree: false,
hasColgroup: false,
visible: false,
},
exportParams: {
filename: '',
sheetName: '',
mode: '',
type: '',
isColgroup: false,
isMerge: false,
isAllExpand: false,
useStyle: false,
original: false,
message: true,
isHeader: false,
isFooter: false,
},
scrollVMLoading: false,
_isResize: false,
})
var internalData = {
tZindex: 0,
elemStore: {},
scrollXStore: {
offsetSize: 0,
visibleSize: 0,
startIndex: 0,
endIndex: 0,
},
scrollYStore: {
rowHeight: 0,
offsetSize: 0,
visibleSize: 0,
startIndex: 0,
endIndex: 0,
},
tableWidth: 0,
tableHeight: 0,
headerHeight: 0,
footerHeight: 0,
customHeight: 0,
customMinHeight: 0,
customMaxHeight: 0,
hoverRow: null,
lastScrollLeft: 0,
lastScrollTop: 0,
radioReserveRow: null,
checkboxReserveRowMap: {},
rowExpandedReserveRowMap: {},
treeExpandedReserveRowMap: {},
treeIndeterminateRowMaps: {},
tableFullData: [],
afterFullData: [],
afterTreeFullData: [],
afterFullRowMaps: {},
tableFullTreeData: [],
tableSynchData: [],
tableSourceData: [],
collectColumn: [],
tableFullColumn: [],
visibleColumn: [],
fullAllDataRowIdData: {},
sourceDataRowIdData: {},
fullDataRowIdData: {},
fullColumnIdData: {},
fullColumnFieldData: {},
inited: false,
tooltipTimeout: null,
initStatus: false,
isActivated: false,
}
var tableMethods = {}
var tablePrivateMethods = {}
var refElem = ref()
var refTooltip = ref()
var refCommTooltip = ref()
var refValidTooltip = ref()
var refTableFilter = ref()
var refTableMenu = ref()
var refTableHeader = ref()
var refTableBody = ref()
var refTableFooter = ref()
var refTableLeftHeader = ref()
var refTableLeftBody = ref()
var refTableLeftFooter = ref()
var refTableRightHeader = ref()
var refTableRightBody = ref()
var refTableRightFooter = ref()
var refLeftContainer = ref()
var refRightContainer = ref()
var refCellResizeBar = ref()
var refEmptyPlaceholder = ref()
var $xegrid = inject('$xegrid', null)
var $xetoolbar
var computeValidOpts = computed(function () {
return Object.assign(
{},
GlobalConfig.table.validConfig,
props2.validConfig
)
})
var computeSXOpts = computed(function () {
return Object.assign({}, GlobalConfig.table.scrollX, props2.scrollX)
})
var computeSYOpts = computed(function () {
return Object.assign({}, GlobalConfig.table.scrollY, props2.scrollY)
})
var computeRowHeightMaps = computed(function () {
return {
default: 48,
medium: 44,
small: 40,
mini: 36,
}
})
var computeColumnOpts = computed(function () {
return Object.assign(
{},
GlobalConfig.table.columnConfig,
props2.columnConfig
)
})
var computeRowOpts = computed(function () {
return Object.assign({}, GlobalConfig.table.rowConfig, props2.rowConfig)
})
var computeResizeleOpts = computed(function () {
return Object.assign(
{},
GlobalConfig.table.resizeConfig,
props2.resizeConfig
)
})
var computeResizableOpts = computed(function () {
return Object.assign(
{},
GlobalConfig.table.resizableConfig,
props2.resizableConfig
)
})
var computeSeqOpts = computed(function () {
return Object.assign(
{ startIndex: 0 },
GlobalConfig.table.seqConfig,
props2.seqConfig
)
})
var computeRadioOpts = computed(function () {
return Object.assign(
{},
GlobalConfig.table.radioConfig,
props2.radioConfig
)
})
var computeCheckboxOpts = computed(function () {
return Object.assign(
{},
GlobalConfig.table.checkboxConfig,
props2.checkboxConfig
)
})
var computeTooltipOpts = ref()
computeTooltipOpts = computed(function () {
return Object.assign(
{},
GlobalConfig.tooltip,
GlobalConfig.table.tooltipConfig,
props2.tooltipConfig
)
})
var computeTipConfig = computed(function () {
var tooltipStore = reactData.tooltipStore
var tooltipOpts = computeTooltipOpts.value
return __assign(__assign({}, tooltipOpts), tooltipStore.currOpts)
})
var computeValidTipOpts = computed(function () {
var tooltipOpts = computeTooltipOpts.value
return Object.assign({ isArrow: false }, tooltipOpts)
})
var computeEditOpts = computed(function () {
return Object.assign({}, GlobalConfig.table.editConfig, props2.editConfig)
})
var computeSortOpts = computed(function () {
return Object.assign(
{ orders: ['asc', 'desc', null] },
GlobalConfig.table.sortConfig,
props2.sortConfig
)
})
var computeFilterOpts = computed(function () {
return Object.assign(
{},
GlobalConfig.table.filterConfig,
props2.filterConfig
)
})
var computeMouseOpts = computed(function () {
return Object.assign(
{},
GlobalConfig.table.mouseConfig,
props2.mouseConfig
)
})
var computeAreaOpts = computed(function () {
return Object.assign({}, GlobalConfig.table.areaConfig, props2.areaConfig)
})
var computeKeyboardOpts = computed(function () {
return Object.assign(
{},
GlobalConfig.table.keyboardConfig,
props2.keyboardConfig
)
})
var computeClipOpts = computed(function () {
return Object.assign({}, GlobalConfig.table.clipConfig, props2.clipConfig)
})
var computeFNROpts = computed(function () {
return Object.assign({}, GlobalConfig.table.fnrConfig, props2.fnrConfig)
})
var computeMenuOpts = computed(function () {
return Object.assign({}, GlobalConfig.table.menuConfig, props2.menuConfig)
})
var computeHeaderMenu = computed(function () {
var menuOpts = computeMenuOpts.value
var headerOpts = menuOpts.header
return headerOpts && headerOpts.options ? headerOpts.options : []
})
var computeBodyMenu = computed(function () {
var menuOpts = computeMenuOpts.value
var bodyOpts = menuOpts.body
return bodyOpts && bodyOpts.options ? bodyOpts.options : []
})
var computeFooterMenu = computed(function () {
var menuOpts = computeMenuOpts.value
var footerOpts = menuOpts.footer
return footerOpts && footerOpts.options ? footerOpts.options : []
})
var computeIsMenu = computed(function () {
var menuOpts = computeMenuOpts.value
var headerMenu = computeHeaderMenu.value
var bodyMenu = computeBodyMenu.value
var footerMenu = computeFooterMenu.value
return !!(
props2.menuConfig &&
isEnableConf(menuOpts) &&
(headerMenu.length || bodyMenu.length || footerMenu.length)
)
})
var computeMenuList = computed(function () {
var ctxMenuStore = reactData.ctxMenuStore
var rest = []
ctxMenuStore.list.forEach(function (list2) {
list2.forEach(function (item2) {
rest.push(item2)
})
})
return rest
})
var computeExportOpts = computed(function () {
return Object.assign(
{},
GlobalConfig.table.exportConfig,
props2.exportConfig
)
})
var computeImportOpts = computed(function () {
return Object.assign(
{},
GlobalConfig.table.importConfig,
props2.importConfig
)
})
var computePrintOpts = computed(function () {
return Object.assign(
{},
GlobalConfig.table.printConfig,
props2.printConfig
)
})
var computeExpandOpts = computed(function () {
return Object.assign(
{},
GlobalConfig.table.expandConfig,
props2.expandConfig
)
})
var computeTreeOpts = computed(function () {
return Object.assign({}, GlobalConfig.table.treeConfig, props2.treeConfig)
})
var computeEmptyOpts = computed(function () {
return Object.assign(
{},
GlobalConfig.table.emptyRender,
props2.emptyRender
)
})
var computeLoadingOpts = computed(function () {
return Object.assign(
{},
GlobalConfig.table.loadingConfig,
props2.loadingConfig
)
})
var computeCellOffsetWidth = computed(function () {
return props2.border
? Math.max(
2,
Math.ceil(reactData.scrollbarWidth / reactData.tableColumn.length)
)
: 1
})
var computeCustomOpts = computed(function () {
return Object.assign(
{},
GlobalConfig.table.customConfig,
props2.customConfig
)
})
var computeFixedColumnSize = computed(function () {
var tableFullColumn = internalData.tableFullColumn
var fixedSize = 0
tableFullColumn.forEach(function (column) {
if (column.fixed) {
fixedSize++
}
})
return fixedSize
})
var computeIsMaxFixedColumn = computed(function () {
var fixedColumnSize = computeFixedColumnSize.value
var columnOpts = computeColumnOpts.value
var maxFixedSize = columnOpts.maxFixedSize
if (maxFixedSize) {
return fixedColumnSize >= maxFixedSize
}
return false
})
var computeTableBorder = computed(function () {
var border = props2.border
if (border === true) {
return 'full'
}
if (border) {
return border
}
return 'default'
})
var computeIsAllCheckboxDisabled = computed(function () {
props2.treeConfig
var tableData2 = reactData.tableData
var tableFullData = internalData.tableFullData
var checkboxOpts = computeCheckboxOpts.value
var strict = checkboxOpts.strict,
checkMethod = checkboxOpts.checkMethod
if (strict) {
if (tableData2.length || tableFullData.length) {
if (checkMethod) {
return tableFullData.every(function (row) {
return !checkMethod({ row })
})
}
return false
}
return true
}
return false
})
var refMaps = {
refElem,
refTooltip,
refValidTooltip,
refTableFilter,
refTableMenu,
refTableHeader,
refTableBody,
refTableFooter,
refTableLeftHeader,
refTableLeftBody,
refTableLeftFooter,
refTableRightHeader,
refTableRightBody,
refTableRightFooter,
refLeftContainer,
refRightContainer,
refCellResizeBar,
}
var computeMaps = {
computeSize,
computeValidOpts,
computeSXOpts,
computeSYOpts,
computeColumnOpts,
computeRowOpts,
computeResizeleOpts,
computeResizableOpts,
computeSeqOpts,
computeRadioOpts,
computeCheckboxOpts,
computeTooltipOpts,
computeEditOpts,
computeSortOpts,
computeFilterOpts,
computeMouseOpts,
computeAreaOpts,
computeKeyboardOpts,
computeClipOpts,
computeFNROpts,
computeHeaderMenu,
computeBodyMenu,
computeFooterMenu,
computeIsMenu,
computeMenuOpts,
computeExportOpts,
computeImportOpts,
computePrintOpts,
computeExpandOpts,
computeTreeOpts,
computeEmptyOpts,
computeLoadingOpts,
computeCustomOpts,
computeFixedColumnSize,
computeIsMaxFixedColumn,
computeIsAllCheckboxDisabled,
}
var $xetable = {
xID,
props: props2,
context: context2,
instance,
reactData,
internalData,
getRefMaps: function () {
return refMaps
},
getComputeMaps: function () {
return computeMaps
},
xegrid: $xegrid,
}
var eqCellValue = function (row1, row2, field2) {
var val1 = xeUtils.get(row1, field2)
var val2 = xeUtils.get(row2, field2)
if (eqEmptyValue(val1) && eqEmptyValue(val2)) {
return true
}
if (xeUtils.isString(val1) || xeUtils.isNumber(val1)) {
return '' + val1 === '' + val2
}
return xeUtils.isEqual(val1, val2)
}
var getNextSortOrder = function (column) {
var sortOpts = computeSortOpts.value
var orders = sortOpts.orders
var currOrder = column.order || null
var oIndex = orders.indexOf(currOrder) + 1
return orders[oIndex < orders.length ? oIndex : 0]
}
var getCustomStorageMap = function (key2) {
var version2 = GlobalConfig.version
var rest = xeUtils.toStringJSON(localStorage.getItem(key2) || '')
return rest && rest._v === version2 ? rest : { _v: version2 }
}
var getRecoverRowMaps = function (keyMaps) {
var fullAllDataRowIdData = internalData.fullAllDataRowIdData
var restKeys = {}
xeUtils.each(keyMaps, function (row, rowid) {
if (fullAllDataRowIdData[rowid]) {
restKeys[rowid] = row
}
})
return restKeys
}
var handleReserveRow = function (reserveRowMap) {
var fullDataRowIdData = internalData.fullDataRowIdData
var reserveList = []
xeUtils.each(reserveRowMap, function (item2, rowid) {
if (
fullDataRowIdData[rowid] &&
$xetable.findRowIndexOf(reserveList, fullDataRowIdData[rowid].row) ===
-1
) {
reserveList.push(fullDataRowIdData[rowid].row)
}
})
return reserveList
}
var computeVirtualX = function () {
var visibleColumn = internalData.visibleColumn
var tableBody = refTableBody.value
var tableBodyElem = tableBody ? tableBody.$el : null
if (tableBodyElem) {
var scrollLeft = tableBodyElem.scrollLeft,
clientWidth = tableBodyElem.clientWidth
var endWidth = scrollLeft + clientWidth
var toVisibleIndex = -1
var cWidth = 0
var visibleSize = 0
for (
var colIndex = 0, colLen = visibleColumn.length;
colIndex < colLen;
colIndex++
) {
cWidth += visibleColumn[colIndex].renderWidth
if (toVisibleIndex === -1 && scrollLeft < cWidth) {
toVisibleIndex = colIndex
}
if (toVisibleIndex >= 0) {
visibleSize++
if (cWidth > endWidth) {
break
}
}
}
return {
toVisibleIndex: Math.max(0, toVisibleIndex),
visibleSize: Math.max(8, visibleSize),
}
}
return { toVisibleIndex: 0, visibleSize: 8 }
}
var computeVirtualY = function () {
var tableHeader = refTableHeader.value
var tableBody = refTableBody.value
var tableBodyElem = tableBody ? tableBody.$el : null
var vSize = computeSize.value
var rowHeightMaps = computeRowHeightMaps.value
if (tableBodyElem) {
var tableHeaderElem = tableHeader ? tableHeader.$el : null
var rowHeight = 0
var firstTrElem = void 0
firstTrElem = tableBodyElem.querySelector('tr')
if (!firstTrElem && tableHeaderElem) {
firstTrElem = tableHeaderElem.querySelector('tr')
}
if (firstTrElem) {
rowHeight = firstTrElem.clientHeight
}
if (!rowHeight) {
rowHeight = rowHeightMaps[vSize || 'default']
}
var visibleSize = Math.max(
8,
Math.ceil(tableBodyElem.clientHeight / rowHeight) + 2
)
return { rowHeight, visibleSize }
}
return { rowHeight: 0, visibleSize: 8 }
}
var calculateMergerOffserIndex = function (list2, offsetItem, type4) {
for (var mcIndex = 0, len2 = list2.length; mcIndex < len2; mcIndex++) {
var mergeItem = list2[mcIndex]
var startIndex = offsetItem.startIndex,
endIndex = offsetItem.endIndex
var mergeStartIndex = mergeItem[type4]
var mergeSpanNumber = mergeItem[type4 + 'span']
var mergeEndIndex = mergeStartIndex + mergeSpanNumber
if (mergeStartIndex < startIndex && startIndex < mergeEndIndex) {
offsetItem.startIndex = mergeStartIndex
}
if (mergeStartIndex < endIndex && endIndex < mergeEndIndex) {
offsetItem.endIndex = mergeEndIndex
}
if (
offsetItem.startIndex !== startIndex ||
offsetItem.endIndex !== endIndex
) {
mcIndex = -1
}
}
}
var setMerges = function (merges, mList, rowList) {
if (merges) {
var treeConfig = props2.treeConfig
var visibleColumn_1 = internalData.visibleColumn
if (!xeUtils.isArray(merges)) {
merges = [merges]
}
if (treeConfig && merges.length) {
errLog('vxe.error.noTree', ['merge-cells | merge-footer-items'])
}
merges.forEach(function (item2) {
var row = item2.row,
col = item2.col,
rowspan = item2.rowspan,
colspan = item2.colspan
if (rowList && xeUtils.isNumber(row)) {
row = rowList[row]
}
if (xeUtils.isNumber(col)) {
col = visibleColumn_1[col]
}
if (
(rowList ? row : xeUtils.isNumber(row)) &&
col &&
(rowspan || colspan)
) {
rowspan = xeUtils.toNumber(rowspan) || 1
colspan = xeUtils.toNumber(colspan) || 1
if (rowspan > 1 || colspan > 1) {
var mcIndex = xeUtils.findIndexOf(mList, function (item3) {
return (
(item3._row === row ||
getRowid($xetable, item3._row) ===
getRowid($xetable, row)) &&
(item3._col.id === col || item3._col.id === col.id)
)
})
var mergeItem = mList[mcIndex]
if (mergeItem) {
mergeItem.rowspan = rowspan
mergeItem.colspan = colspan
mergeItem._rowspan = rowspan
mergeItem._colspan = colspan
} else {
var mergeRowIndex = rowList
? $xetable.findRowIndexOf(rowList, row)
: row
var mergeColIndex = tableMethods.getVTColumnIndex(col)
mList.push({
row: mergeRowIndex,
col: mergeColIndex,
rowspan,
colspan,
_row: row,
_col: col,
_rowspan: rowspan,
_colspan: colspan,
})
}
}
}
})
}
}
var removeMerges = function (merges, mList, rowList) {
var rest = []
if (merges) {
var treeConfig = props2.treeConfig
var visibleColumn_2 = internalData.visibleColumn
if (!xeUtils.isArray(merges)) {
merges = [merges]
}
if (treeConfig && merges.length) {
errLog('vxe.error.noTree', ['merge-cells | merge-footer-items'])
}
merges.forEach(function (item2) {
var row = item2.row,
col = item2.col
if (rowList && xeUtils.isNumber(row)) {
row = rowList[row]
}
if (xeUtils.isNumber(col)) {
col = visibleColumn_2[col]
}
var mcIndex = xeUtils.findIndexOf(mList, function (item3) {
return (
(item3._row === row ||
getRowid($xetable, item3._row) === getRowid($xetable, row)) &&
(item3._col.id === col || item3._col.id === col.id)
)
})
if (mcIndex > -1) {
var rItems = mList.splice(mcIndex, 1)
rest.push(rItems[0])
}
})
}
return rest
}
var clearAllSort = function () {
var tableFullColumn = internalData.tableFullColumn
tableFullColumn.forEach(function (column) {
column.order = null
})
}
var calcHeight = function (key2) {
var parentHeight = reactData.parentHeight
var val2 = props2[key2]
var num2 = 0
if (val2) {
if (val2 === 'auto') {
num2 = parentHeight
} else {
var excludeHeight = $xetable.getExcludeHeight()
if (isScale(val2)) {
num2 = Math.floor(
((xeUtils.toInteger(val2) || 1) / 100) * parentHeight
)
} else {
num2 = xeUtils.toNumber(val2)
}
num2 = Math.max(40, num2 - excludeHeight)
}
}
return num2
}
var restoreCustomStorage = function () {
var id2 = props2.id,
customConfig = props2.customConfig
var collectColumn = internalData.collectColumn
var customOpts = computeCustomOpts.value
var storage2 = customOpts.storage
var isCustomResizable =
storage2 === true || (storage2 && storage2.resizable)
var isCustomVisible = storage2 === true || (storage2 && storage2.visible)
var isCustomFixed = storage2 === true || (storage2 && storage2.fixed)
var isCustomOrder = storage2 === true || (storage2 && storage2.order)
if (
customConfig &&
(isCustomResizable || isCustomVisible || isCustomFixed || isCustomOrder)
) {
var customMap_1 = {}
if (!id2) {
errLog('vxe.error.reqProp', ['id'])
return
}
if (isCustomResizable) {
var columnWidthStorage = getCustomStorageMap(resizableStorageKey)[id2]
if (columnWidthStorage) {
xeUtils.each(columnWidthStorage, function (resizeWidth, colKey) {
customMap_1[colKey] = { resizeWidth }
})
}
}
if (isCustomFixed) {
var columnFixedStorage = getCustomStorageMap(fixedStorageKey)[id2]
if (columnFixedStorage) {
var colFixeds = columnFixedStorage.split(',')
colFixeds.forEach(function (fixConf) {
var _a2 = fixConf.split('|'),
colKey = _a2[0],
fixed = _a2[1]
if (customMap_1[colKey]) {
customMap_1[colKey].fixed = fixed
} else {
customMap_1[colKey] = { fixed }
}
})
}
}
if (isCustomOrder) {
getCustomStorageMap(orderStorageKey)[id2]
}
if (isCustomVisible) {
var columnVisibleStorage = getCustomStorageMap(visibleStorageKey)[id2]
if (columnVisibleStorage) {
var colVisibles = columnVisibleStorage.split('|')
var colHides = colVisibles[0] ? colVisibles[0].split(',') : []
var colShows = colVisibles[1] ? colVisibles[1].split(',') : []
colHides.forEach(function (colKey) {
if (customMap_1[colKey]) {
customMap_1[colKey].visible = false
} else {
customMap_1[colKey] = { visible: false }
}
})
colShows.forEach(function (colKey) {
if (customMap_1[colKey]) {
customMap_1[colKey].visible = true
} else {
customMap_1[colKey] = { visible: true }
}
})
}
}
var keyMap_1 = {}
xeUtils.eachTree(collectColumn, function (column) {
var colKey = column.getKey()
if (colKey) {
keyMap_1[colKey] = column
}
})
xeUtils.each(customMap_1, function (_a2, colKey) {
var visible = _a2.visible,
resizeWidth = _a2.resizeWidth,
fixed = _a2.fixed,
order2 = _a2.order
var column = keyMap_1[colKey]
if (column) {
if (xeUtils.isNumber(resizeWidth)) {
column.resizeWidth = resizeWidth
}
if (xeUtils.isBoolean(visible)) {
column.visible = visible
}
if (fixed) {
column.fixed = fixed
}
if (order2) {
column.customOrder = order2
}
}
})
}
}
var cacheColumnMap = function () {
var tableFullColumn = internalData.tableFullColumn,
collectColumn = internalData.collectColumn
var fullColumnIdData = (internalData.fullColumnIdData = {})
var fullColumnFieldData = (internalData.fullColumnFieldData = {})
computeMouseOpts.value
computeColumnOpts.value
computeRowOpts.value
var isGroup2 = collectColumn.some(hasChildrenList)
var isAllOverflow = !!props2.showOverflow
var expandColumn
var treeNodeColumn
var handleFunc = function (column, index2, items, path, parent2) {
var colid = column.id,
field2 = column.field
column.fixed
var type4 = column.type,
treeNode = column.treeNode
var rest = { column, colid, index: index2, items, parent: parent2 }
if (field2) {
fullColumnFieldData[field2] = rest
}
if (treeNode) {
if (!treeNodeColumn) {
treeNodeColumn = column
}
} else if (type4 === 'expand') {
if (!expandColumn) {
expandColumn = column
}
}
if (isAllOverflow && column.showOverflow === false) {
isAllOverflow = false
}
if (fullColumnIdData[colid]) {
errLog('vxe.error.colRepet', ['colId', colid])
}
fullColumnIdData[colid] = rest
}
if (isGroup2) {
xeUtils.eachTree(
collectColumn,
function (column, index2, items, path, parent2, nodes) {
column.level = nodes.length
handleFunc(column, index2, items, path, parent2)
}
)
} else {
tableFullColumn.forEach(handleFunc)
}
reactData.isGroup = isGroup2
reactData.treeNodeColumn = treeNodeColumn
reactData.expandColumn = expandColumn
reactData.isAllOverflow = isAllOverflow
}
var updateHeight = function () {
internalData.customHeight = calcHeight('height')
internalData.customMinHeight = calcHeight('minHeight')
internalData.customMaxHeight = calcHeight('maxHeight')
}
var autoCellWidth = function () {
var tableHeader = refTableHeader.value
var tableBody = refTableBody.value
var tableFooter = refTableFooter.value
var bodyElem = tableBody ? tableBody.$el : null
var headerElem = tableHeader ? tableHeader.$el : null
var footerElem = tableFooter ? tableFooter.$el : null
if (!bodyElem) {
return
}
var tableWidth = 0
var minCellWidth = 40
var bodyWidth = bodyElem.clientWidth - 1
var remainWidth = bodyWidth
var meanWidth = remainWidth / 100
var fit = props2.fit
var columnStore = reactData.columnStore
var resizeList = columnStore.resizeList,
pxMinList = columnStore.pxMinList,
pxList = columnStore.pxList,
scaleList = columnStore.scaleList,
scaleMinList = columnStore.scaleMinList,
autoList = columnStore.autoList
pxMinList.forEach(function (column) {
var minWidth = xeUtils.toInteger(column.minWidth)
tableWidth += minWidth
column.renderWidth = minWidth
})
scaleMinList.forEach(function (column) {
var scaleWidth = Math.floor(
xeUtils.toInteger(column.minWidth) * meanWidth
)
tableWidth += scaleWidth
column.renderWidth = scaleWidth
})
scaleList.forEach(function (column) {
var scaleWidth = Math.floor(xeUtils.toInteger(column.width) * meanWidth)
tableWidth += scaleWidth
column.renderWidth = scaleWidth
})
pxList.forEach(function (column) {
var width = xeUtils.toInteger(column.width)
tableWidth += width
column.renderWidth = width
})
resizeList.forEach(function (column) {
var width = xeUtils.toInteger(column.resizeWidth)
tableWidth += width
column.renderWidth = width
})
remainWidth -= tableWidth
meanWidth =
remainWidth > 0
? Math.floor(
remainWidth /
(scaleMinList.length + pxMinList.length + autoList.length)
)
: 0
if (fit) {
if (remainWidth > 0) {
scaleMinList.concat(pxMinList).forEach(function (column) {
tableWidth += meanWidth
column.renderWidth += meanWidth
})
}
} else {
meanWidth = minCellWidth
}
autoList.forEach(function (column) {
var width = Math.max(meanWidth, minCellWidth)
column.renderWidth = width
tableWidth += width
})
if (fit) {
var dynamicList = scaleList
.concat(scaleMinList)
.concat(pxMinList)
.concat(autoList)
var dynamicSize = dynamicList.length - 1
if (dynamicSize > 0) {
var odiffer = bodyWidth - tableWidth
if (odiffer > 0) {
while (odiffer > 0 && dynamicSize >= 0) {
odiffer--
dynamicList[dynamicSize--].renderWidth++
}
tableWidth = bodyWidth
}
}
}
var tableHeight = bodyElem.offsetHeight
var overflowY = bodyElem.scrollHeight > bodyElem.clientHeight
var scrollbarWidth = 0
if (overflowY) {
scrollbarWidth = Math.max(
bodyElem.offsetWidth - bodyElem.clientWidth,
0
)
}
reactData.scrollbarWidth = scrollbarWidth
reactData.overflowY = overflowY
internalData.tableWidth = tableWidth
internalData.tableHeight = tableHeight
var headerHeight = 0
if (headerElem) {
headerHeight = headerElem.clientHeight
nextTick(function () {
if (
headerElem &&
bodyElem &&
headerElem.scrollLeft !== bodyElem.scrollLeft
) {
headerElem.scrollLeft = bodyElem.scrollLeft
}
})
}
internalData.headerHeight = headerHeight
var overflowX = false
var footerHeight = 0
var scrollbarHeight = 0
if (footerElem) {
footerHeight = footerElem.offsetHeight
overflowX = tableWidth > footerElem.clientWidth
if (overflowX) {
scrollbarHeight = Math.max(footerHeight - footerElem.clientHeight, 0)
}
} else {
overflowX = tableWidth > bodyWidth
if (overflowX) {
scrollbarHeight = Math.max(tableHeight - bodyElem.clientHeight, 0)
}
}
internalData.footerHeight = footerHeight
reactData.overflowX = overflowX
reactData.scrollbarHeight = scrollbarHeight
updateHeight()
reactData.parentHeight = Math.max(
internalData.headerHeight + footerHeight + 20,
tablePrivateMethods.getParentHeight()
)
if (overflowX) {
tablePrivateMethods.checkScrolling()
}
}
var getOrderField = function (column) {
var sortBy2 = column.sortBy,
sortType = column.sortType
return function (row) {
var cellValue
if (sortBy2) {
cellValue = xeUtils.isFunction(sortBy2)
? sortBy2({ row, column })
: xeUtils.get(row, sortBy2)
} else {
cellValue = tablePrivateMethods.getCellLabel(row, column)
}
if (!sortType || sortType === 'auto') {
return isNaN(cellValue) ? cellValue : xeUtils.toNumber(cellValue)
} else if (sortType === 'number') {
return xeUtils.toNumber(cellValue)
} else if (sortType === 'string') {
return xeUtils.toValueString(cellValue)
}
return cellValue
}
}
var updateAfterDataIndex = function () {
var treeConfig = props2.treeConfig
var afterFullData = internalData.afterFullData,
fullDataRowIdData = internalData.fullDataRowIdData,
fullAllDataRowIdData = internalData.fullAllDataRowIdData
var afterTreeFullData = internalData.afterTreeFullData
var treeOpts = computeTreeOpts.value
var childrenField = treeOpts.children || treeOpts.childrenField
var fullMaps = {}
if (treeConfig) {
xeUtils.eachTree(
afterTreeFullData,
function (row, index2, items, path) {
var rowid = getRowid($xetable, row)
var allrest = fullAllDataRowIdData[rowid]
var seq = path
.map(function (num2, i2) {
return i2 % 2 === 0 ? Number(num2) + 1 : '.'
})
.join('')
if (allrest) {
allrest.seq = seq
allrest._index = index2
} else {
var rest = {
row,
rowid,
seq,
index: -1,
$index: -1,
_index: index2,
items: [],
parent: null,
level: 0,
}
fullAllDataRowIdData[rowid] = rest
fullDataRowIdData[rowid] = rest
}
fullMaps[rowid] = row
},
{
children: treeOpts.transform
? treeOpts.mapChildrenField
: childrenField,
}
)
} else {
afterFullData.forEach(function (row, index2) {
var rowid = getRowid($xetable, row)
var allrest = fullAllDataRowIdData[rowid]
var seq = index2 + 1
if (allrest) {
allrest.seq = seq
allrest._index = index2
} else {
var rest = {
row,
rowid,
seq,
index: -1,
$index: -1,
_index: index2,
items: [],
parent: null,
level: 0,
}
fullAllDataRowIdData[rowid] = rest
fullDataRowIdData[rowid] = rest
}
fullMaps[rowid] = row
})
}
internalData.afterFullRowMaps = fullMaps
}
var handleVirtualTreeToList = function () {
var treeConfig = props2.treeConfig
var treeExpandedMaps = reactData.treeExpandedMaps
var treeOpts = computeTreeOpts.value
if (treeConfig && treeOpts.transform) {
var fullData_1 = []
var expandMaps_1 = {}
xeUtils.eachTree(
internalData.afterTreeFullData,
function (row, index2, items, path, parent2) {
var rowid = getRowid($xetable, row)
var parentRowid = getRowid($xetable, parent2)
if (
!parent2 ||
(expandMaps_1[parentRowid] && treeExpandedMaps[parentRowid])
) {
expandMaps_1[rowid] = 1
fullData_1.push(row)
}
},
{ children: treeOpts.mapChildrenField }
)
internalData.afterFullData = fullData_1
updateScrollYStatus(fullData_1)
return fullData_1
}
return internalData.afterFullData
}
var updateAfterFullData = function () {
var treeConfig = props2.treeConfig
var tableFullColumn = internalData.tableFullColumn,
tableFullData = internalData.tableFullData,
tableFullTreeData = internalData.tableFullTreeData
var filterOpts = computeFilterOpts.value
var sortOpts = computeSortOpts.value
var treeOpts = computeTreeOpts.value
var transform3 = treeOpts.transform
var allRemoteFilter = filterOpts.remote,
allFilterMethod = filterOpts.filterMethod
var allRemoteSort = sortOpts.remote,
allSortMethod = sortOpts.sortMethod,
sortMultiple = sortOpts.multiple,
chronological = sortOpts.chronological
var tableData2 = []
var tableTree = []
if (!allRemoteFilter || !allRemoteSort) {
var filterColumns_1 = []
var orderColumns_1 = []
tableFullColumn.forEach(function (column) {
var field2 = column.field,
sortable = column.sortable,
order2 = column.order,
filters = column.filters
if (!allRemoteFilter && filters && filters.length) {
var valueList_1 = []
var itemList_1 = []
filters.forEach(function (item2) {
if (item2.checked) {
itemList_1.push(item2)
valueList_1.push(item2.value)
}
})
if (itemList_1.length) {
filterColumns_1.push({
column,
valueList: valueList_1,
itemList: itemList_1,
})
}
}
if (!allRemoteSort && sortable && order2) {
orderColumns_1.push({
column,
field: field2,
property: field2,
order: order2,
sortTime: column.sortTime,
})
}
})
if (sortMultiple && chronological && orderColumns_1.length > 1) {
orderColumns_1 = xeUtils.orderBy(orderColumns_1, 'sortTime')
}
if (!allRemoteFilter && filterColumns_1.length) {
var handleFilter = function (row) {
return filterColumns_1.every(function (_a2) {
var column = _a2.column,
valueList = _a2.valueList,
itemList = _a2.itemList
var filterMethod = column.filterMethod,
filterRender = column.filterRender
var compConf = filterRender
? VXETable.renderer.get(filterRender.name)
: null
var compFilterMethod = compConf ? compConf.filterMethod : null
var defaultFilterMethod = compConf
? compConf.defaultFilterMethod
: null
var cellValue = getCellValue(row, column)
if (filterMethod) {
return itemList.some(function (item2) {
return filterMethod({
value: item2.value,
option: item2,
cellValue,
row,
column,
$table: $xetable,
})
})
} else if (compFilterMethod) {
return itemList.some(function (item2) {
return compFilterMethod({
value: item2.value,
option: item2,
cellValue,
row,
column,
$table: $xetable,
})
})
} else if (allFilterMethod) {
return allFilterMethod({
options: itemList,
values: valueList,
cellValue,
row,
column,
})
} else if (defaultFilterMethod) {
return itemList.some(function (item2) {
return defaultFilterMethod({
value: item2.value,
option: item2,
cellValue,
row,
column,
$table: $xetable,
})
})
}
return valueList.indexOf(xeUtils.get(row, column.field)) > -1
})
}
if (treeConfig && transform3) {
tableTree = xeUtils.searchTree(
tableFullTreeData,
handleFilter,
__assign(__assign({}, treeOpts), { original: true })
)
tableData2 = tableTree
} else {
tableData2 = treeConfig
? tableFullTreeData.filter(handleFilter)
: tableFullData.filter(handleFilter)
tableTree = tableData2
}
} else {
if (treeConfig && transform3) {
tableTree = xeUtils.searchTree(
tableFullTreeData,
function () {
return true
},
__assign(__assign({}, treeOpts), { original: true })
)
tableData2 = tableTree
} else {
tableData2 = treeConfig
? tableFullTreeData.slice(0)
: tableFullData.slice(0)
tableTree = tableData2
}
}
if (!allRemoteSort && orderColumns_1.length) {
if (treeConfig && transform3) {
if (allSortMethod) {
var sortRests = allSortMethod({
data: tableTree,
sortList: orderColumns_1,
$table: $xetable,
})
tableTree = xeUtils.isArray(sortRests) ? sortRests : tableTree
} else {
tableTree = xeUtils.orderBy(
tableTree,
orderColumns_1.map(function (_a2) {
var column = _a2.column,
order2 = _a2.order
return [getOrderField(column), order2]
})
)
}
tableData2 = tableTree
} else {
if (allSortMethod) {
var sortRests = allSortMethod({
data: tableData2,
sortList: orderColumns_1,
$table: $xetable,
})
tableData2 = xeUtils.isArray(sortRests) ? sortRests : tableData2
} else {
tableData2 = xeUtils.orderBy(
tableData2,
orderColumns_1.map(function (_a2) {
var column = _a2.column,
order2 = _a2.order
return [getOrderField(column), order2]
})
)
}
tableTree = tableData2
}
}
} else {
if (treeConfig && transform3) {
tableTree = xeUtils.searchTree(
tableFullTreeData,
function () {
return true
},
__assign(__assign({}, treeOpts), { original: true })
)
tableData2 = tableTree
} else {
tableData2 = treeConfig
? tableFullTreeData.slice(0)
: tableFullData.slice(0)
tableTree = tableData2
}
}
internalData.afterFullData = tableData2
internalData.afterTreeFullData = tableTree
updateAfterDataIndex()
}
var updateStyle2 = function () {
var border = props2.border,
showFooter = props2.showFooter,
allColumnOverflow = props2.showOverflow,
allColumnHeaderOverflow = props2.showHeaderOverflow,
allColumnFooterOverflow = props2.showFooterOverflow,
mouseConfig = props2.mouseConfig,
spanMethod = props2.spanMethod,
footerSpanMethod = props2.footerSpanMethod,
keyboardConfig = props2.keyboardConfig
var isGroup2 = reactData.isGroup,
currentRow = reactData.currentRow,
tableColumn = reactData.tableColumn,
scrollXLoad = reactData.scrollXLoad,
scrollYLoad = reactData.scrollYLoad,
scrollbarWidth = reactData.scrollbarWidth,
scrollbarHeight = reactData.scrollbarHeight,
columnStore = reactData.columnStore,
editStore = reactData.editStore,
mergeList = reactData.mergeList,
mergeFooterList = reactData.mergeFooterList,
isAllOverflow = reactData.isAllOverflow
var visibleColumn = internalData.visibleColumn,
fullColumnIdData = internalData.fullColumnIdData,
tableHeight = internalData.tableHeight,
tableWidth = internalData.tableWidth,
headerHeight = internalData.headerHeight,
footerHeight = internalData.footerHeight,
elemStore = internalData.elemStore,
customHeight = internalData.customHeight,
customMinHeight = internalData.customMinHeight,
customMaxHeight = internalData.customMaxHeight
var containerList = ['main', 'left', 'right']
var emptyPlaceholderElem = refEmptyPlaceholder.value
var cellOffsetWidth = computeCellOffsetWidth.value
var mouseOpts = computeMouseOpts.value
var keyboardOpts = computeKeyboardOpts.value
var bodyWrapperRef = elemStore['main-body-wrapper']
var bodyWrapperElem = bodyWrapperRef ? bodyWrapperRef.value : null
if (emptyPlaceholderElem) {
emptyPlaceholderElem.style.top = ''.concat(headerHeight, 'px')
emptyPlaceholderElem.style.height = bodyWrapperElem
? ''.concat(bodyWrapperElem.offsetHeight - scrollbarHeight, 'px')
: ''
}
if (customHeight > 0) {
if (showFooter) {
customHeight += scrollbarHeight
}
}
containerList.forEach(function (name2, index2) {
var fixedType = index2 > 0 ? name2 : ''
var layoutList2 = ['header', 'body', 'footer']
var isFixedLeft = fixedType === 'left'
var fixedColumn = []
var fixedWrapperElem
if (fixedType) {
fixedColumn = isFixedLeft
? columnStore.leftList
: columnStore.rightList
fixedWrapperElem = isFixedLeft
? refLeftContainer.value
: refRightContainer.value
}
layoutList2.forEach(function (layout2) {
var wrapperRef =
elemStore[''.concat(name2, '-').concat(layout2, '-wrapper')]
var wrapperElem = wrapperRef ? wrapperRef.value : null
var tableRef =
elemStore[''.concat(name2, '-').concat(layout2, '-table')]
var tableElem = tableRef ? tableRef.value : null
if (layout2 === 'header') {
var tWidth = tableWidth
var renderColumnList = tableColumn
if (isGroup2) {
renderColumnList = visibleColumn
} else {
if (fixedType) {
if (scrollXLoad || allColumnHeaderOverflow) {
renderColumnList = fixedColumn
}
}
}
tWidth = renderColumnList.reduce(function (previous, column) {
return previous + column.renderWidth
}, 0)
if (tableElem) {
tableElem.style.width = tWidth
? ''.concat(tWidth + scrollbarWidth, 'px')
: ''
}
var repairRef =
elemStore[''.concat(name2, '-').concat(layout2, '-repair')]
var repairElem = repairRef ? repairRef.value : null
if (repairElem) {
repairElem.style.width = ''.concat(tableWidth, 'px')
}
var listRef =
elemStore[''.concat(name2, '-').concat(layout2, '-list')]
var listElem = listRef ? listRef.value : null
if (isGroup2 && listElem) {
xeUtils.arrayEach(
listElem.querySelectorAll('.col--group'),
function (thElem) {
var colNode = tableMethods.getColumnNode(thElem)
if (colNode) {
var column_1 = colNode.item
var showHeaderOverflow = column_1.showHeaderOverflow
var cellOverflow = xeUtils.isBoolean(showHeaderOverflow)
? showHeaderOverflow
: allColumnHeaderOverflow
var showEllipsis = cellOverflow === 'ellipsis'
var showTitle = cellOverflow === 'title'
var showTooltip2 =
cellOverflow === true || cellOverflow === 'tooltip'
var hasEllipsis = showTitle || showTooltip2 || showEllipsis
var childWidth_1 = 0
var countChild_1 = 0
if (hasEllipsis) {
xeUtils.eachTree(
column_1.children,
function (item2) {
if (!item2.children || !column_1.children.length) {
countChild_1++
}
childWidth_1 += item2.renderWidth
},
{ children: 'children' }
)
}
thElem.style.width = hasEllipsis
? ''.concat(
childWidth_1 - countChild_1 - (border ? 2 : 0),
'px'
)
: ''
}
}
)
}
} else if (layout2 === 'body') {
var emptyBlockRef =
elemStore[''.concat(name2, '-').concat(layout2, '-emptyBlock')]
var emptyBlockElem = emptyBlockRef ? emptyBlockRef.value : null
if (isNodeElement(wrapperElem)) {
var bodyMaxHeight = 0
var bodyMinHeight = customMinHeight - headerHeight - footerHeight
if (customMaxHeight) {
bodyMaxHeight = customMaxHeight - headerHeight - footerHeight
if (fixedType) {
bodyMaxHeight -= showFooter ? 0 : scrollbarHeight
}
bodyMaxHeight = Math.max(bodyMinHeight, bodyMaxHeight)
wrapperElem.style.maxHeight = ''.concat(bodyMaxHeight, 'px')
}
if (customHeight) {
var bodyHeight = customHeight - headerHeight - footerHeight
if (fixedType) {
bodyHeight -= showFooter ? 0 : scrollbarHeight
}
if (bodyMaxHeight) {
bodyHeight = Math.min(bodyMaxHeight, bodyHeight)
}
wrapperElem.style.height = ''.concat(
Math.max(bodyMinHeight, bodyHeight),
'px'
)
} else {
wrapperElem.style.height = ''
}
wrapperElem.style.minHeight = ''.concat(bodyMinHeight, 'px')
}
if (fixedWrapperElem) {
if (isNodeElement(wrapperElem)) {
wrapperElem.style.top = ''.concat(headerHeight, 'px')
}
fixedWrapperElem.style.height = ''.concat(
(customHeight > 0
? customHeight - headerHeight - footerHeight
: tableHeight) +
headerHeight +
footerHeight -
scrollbarHeight * (showFooter ? 2 : 1),
'px'
)
fixedWrapperElem.style.width = ''.concat(
fixedColumn.reduce(
function (previous, column) {
return previous + column.renderWidth
},
isFixedLeft ? 0 : scrollbarWidth
),
'px'
)
}
var tWidth = tableWidth
var renderColumnList = tableColumn
if (fixedType) {
if (
!reactData.expandColumn &&
(scrollYLoad ||
(allColumnOverflow ? isAllOverflow : allColumnOverflow))
) {
if (
!mergeList.length &&
!spanMethod &&
!(keyboardConfig && keyboardOpts.isMerge)
) {
renderColumnList = fixedColumn
} else {
renderColumnList = visibleColumn
}
} else {
renderColumnList = visibleColumn
}
}
tWidth = renderColumnList.reduce(function (previous, column) {
return previous + column.renderWidth
}, 0)
if (tableElem) {
tableElem.style.width = tWidth ? ''.concat(tWidth, 'px') : ''
tableElem.style.paddingRight =
scrollbarWidth && fixedType && (browse['-moz'] || browse.safari)
? ''.concat(scrollbarWidth, 'px')
: ''
}
if (emptyBlockElem) {
emptyBlockElem.style.width = tWidth ? ''.concat(tWidth, 'px') : ''
}
} else if (layout2 === 'footer') {
var tWidth = tableWidth
var renderColumnList = tableColumn
if (fixedType) {
if (
!reactData.expandColumn &&
(scrollXLoad || allColumnFooterOverflow)
) {
if (!mergeFooterList.length || !footerSpanMethod) {
renderColumnList = fixedColumn
} else {
renderColumnList = visibleColumn
}
} else {
renderColumnList = visibleColumn
}
}
tWidth = renderColumnList.reduce(function (previous, column) {
return previous + column.renderWidth
}, 0)
if (isNodeElement(wrapperElem)) {
if (fixedWrapperElem) {
wrapperElem.style.top = ''.concat(
customHeight > 0
? customHeight - footerHeight
: tableHeight + headerHeight,
'px'
)
}
wrapperElem.style.marginTop = ''.concat(
-Math.max(1, scrollbarHeight),
'px'
)
}
if (tableElem) {
tableElem.style.width = tWidth
? ''.concat(tWidth + scrollbarWidth, 'px')
: ''
}
}
var colgroupRef =
elemStore[''.concat(name2, '-').concat(layout2, '-colgroup')]
var colgroupElem = colgroupRef ? colgroupRef.value : null
if (colgroupElem) {
xeUtils.arrayEach(colgroupElem.children, function (colElem) {
var colid = colElem.getAttribute('name')
if (colid === 'col_gutter') {
colElem.style.width = ''.concat(scrollbarWidth, 'px')
}
if (fullColumnIdData[colid]) {
var column_2 = fullColumnIdData[colid].column
var showHeaderOverflow = column_2.showHeaderOverflow,
showFooterOverflow = column_2.showFooterOverflow,
showOverflow = column_2.showOverflow
var cellOverflow = void 0
colElem.style.width = ''.concat(column_2.renderWidth, 'px')
if (layout2 === 'header') {
cellOverflow =
xeUtils.isUndefined(showHeaderOverflow) ||
xeUtils.isNull(showHeaderOverflow)
? allColumnHeaderOverflow
: showHeaderOverflow
} else if (layout2 === 'footer') {
cellOverflow =
xeUtils.isUndefined(showFooterOverflow) ||
xeUtils.isNull(showFooterOverflow)
? allColumnFooterOverflow
: showFooterOverflow
} else {
cellOverflow =
xeUtils.isUndefined(showOverflow) ||
xeUtils.isNull(showOverflow)
? allColumnOverflow
: showOverflow
}
var showEllipsis = cellOverflow === 'ellipsis'
var showTitle = cellOverflow === 'title'
var showTooltip2 =
cellOverflow === true || cellOverflow === 'tooltip'
var hasEllipsis_1 = showTitle || showTooltip2 || showEllipsis
var listRef2 =
elemStore[''.concat(name2, '-').concat(layout2, '-list')]
var listElem2 = listRef2 ? listRef2.value : null
if (scrollYLoad && !hasEllipsis_1) {
hasEllipsis_1 = true
}
if (listElem2) {
xeUtils.arrayEach(
listElem2.querySelectorAll('.'.concat(column_2.id)),
function (elem) {
var colspan = parseInt(elem.getAttribute('colspan') || 1)
var cellElem = elem.querySelector('.vxe-cell')
var colWidth = column_2.renderWidth
if (cellElem) {
if (colspan > 1) {
var columnIndex =
tableMethods.getColumnIndex(column_2)
for (var index_1 = 1; index_1 < colspan; index_1++) {
var nextColumn = tableMethods.getColumns(
columnIndex + index_1
)
if (nextColumn) {
colWidth += nextColumn.renderWidth
}
}
}
cellElem.style.width = hasEllipsis_1
? ''.concat(
colWidth - cellOffsetWidth * colspan,
'px'
)
: ''
}
}
)
}
}
})
}
})
})
if (currentRow) {
tableMethods.setCurrentRow(currentRow)
}
if (
mouseConfig &&
mouseOpts.selected &&
editStore.selected.row &&
editStore.selected.column
) {
$xetable.addCellSelectedClass()
}
return nextTick()
}
var checkValidate = function (type4) {
if ($xetable.triggerValidate) {
return $xetable.triggerValidate(type4)
}
return nextTick()
}
var handleChangeCell = function (evnt, params2) {
checkValidate('blur')
.catch(function (e2) {
return e2
})
.then(function () {
$xetable
.handleActived(params2, evnt)
.then(function () {
return checkValidate('change')
})
.catch(function (e2) {
return e2
})
})
}
var handleDefaultSort = function () {
var sortConfig = props2.sortConfig
if (sortConfig) {
var sortOpts = computeSortOpts.value
var defaultSort = sortOpts.defaultSort
if (defaultSort) {
if (!xeUtils.isArray(defaultSort)) {
defaultSort = [defaultSort]
}
if (defaultSort.length) {
;(sortConfig.multiple
? defaultSort
: defaultSort.slice(0, 1)
).forEach(function (item2, index2) {
var field2 = item2.field,
order2 = item2.order
if (field2 && order2) {
var column = tableMethods.getColumnByField(field2)
if (column && column.sortable) {
column.order = order2
column.sortTime = Date.now() + index2
}
}
})
if (!sortOpts.remote) {
tablePrivateMethods.handleTableData(true).then(updateStyle2)
}
}
}
}
}
var handleDefaultSelectionChecked = function () {
var checkboxConfig = props2.checkboxConfig
if (checkboxConfig) {
var fullDataRowIdData_1 = internalData.fullDataRowIdData
var checkboxOpts = computeCheckboxOpts.value
var checkAll = checkboxOpts.checkAll,
checkRowKeys = checkboxOpts.checkRowKeys
if (checkAll) {
handleCheckedAllCheckboxRow(true, true)
} else if (checkRowKeys) {
var defSelection_1 = []
checkRowKeys.forEach(function (rowid) {
if (fullDataRowIdData_1[rowid]) {
defSelection_1.push(fullDataRowIdData_1[rowid].row)
}
})
handleCheckedCheckboxRow(defSelection_1, true, true)
}
}
}
var handleDefaultRadioChecked = function () {
var _a2
var radioConfig = props2.radioConfig
if (radioConfig) {
var fullDataRowIdData = internalData.fullDataRowIdData
var radioOpts = computeRadioOpts.value
var rowid = radioOpts.checkRowKey,
reserve = radioOpts.reserve
if (rowid) {
if (fullDataRowIdData[rowid]) {
handleCheckedRadioRow(fullDataRowIdData[rowid].row, true)
}
if (reserve) {
var rowkey = getRowkey($xetable)
internalData.radioReserveRow =
((_a2 = {}), (_a2[rowkey] = rowid), _a2)
}
}
}
}
var handleDefaultRowExpand = function () {
var expandConfig = props2.expandConfig
if (expandConfig) {
var fullDataRowIdData_2 = internalData.fullDataRowIdData
var expandOpts = computeExpandOpts.value
var expandAll = expandOpts.expandAll,
expandRowKeys = expandOpts.expandRowKeys
if (expandAll) {
tableMethods.setAllRowExpand(true)
} else if (expandRowKeys) {
var defExpandeds_1 = []
expandRowKeys.forEach(function (rowid) {
if (fullDataRowIdData_2[rowid]) {
defExpandeds_1.push(fullDataRowIdData_2[rowid].row)
}
})
tableMethods.setRowExpand(defExpandeds_1, true)
}
}
}
var handleRadioReserveRow = function (row) {
var radioOpts = computeRadioOpts.value
if (radioOpts.reserve) {
internalData.radioReserveRow = row
}
}
var handleCheckboxReserveRow = function (row, checked2) {
var checkboxReserveRowMap = internalData.checkboxReserveRowMap
var checkboxOpts = computeCheckboxOpts.value
if (checkboxOpts.reserve) {
var rowid = getRowid($xetable, row)
if (checked2) {
checkboxReserveRowMap[rowid] = row
} else if (checkboxReserveRowMap[rowid]) {
delete checkboxReserveRowMap[rowid]
}
}
}
var handleCheckedRadioRow = function (row, isForce) {
var radioOpts = computeRadioOpts.value
var checkMethod = radioOpts.checkMethod
if (row && (isForce || !checkMethod || checkMethod({ row }))) {
reactData.selectRadioRow = row
handleRadioReserveRow(row)
}
return nextTick()
}
var handleCheckedCheckboxRow = function (rows, value2, isForce) {
if (rows && !xeUtils.isArray(rows)) {
rows = [rows]
}
rows.forEach(function (row) {
return tablePrivateMethods.handleSelectRow({ row }, !!value2, isForce)
})
return nextTick()
}
var handleCheckedAllCheckboxRow = function (value2, isForce) {
var treeConfig = props2.treeConfig
var selectCheckboxMaps = reactData.selectCheckboxMaps
var afterFullData = internalData.afterFullData,
afterFullRowMaps = internalData.afterFullRowMaps,
checkboxReserveRowMap = internalData.checkboxReserveRowMap
var treeOpts = computeTreeOpts.value
var childrenField = treeOpts.children || treeOpts.childrenField
var checkboxOpts = computeCheckboxOpts.value
var checkField = checkboxOpts.checkField,
reserve = checkboxOpts.reserve,
checkStrictly = checkboxOpts.checkStrictly,
checkMethod = checkboxOpts.checkMethod
var indeterminateField =
checkboxOpts.indeterminateField || checkboxOpts.halfField
var selectRowMaps = {}
if (!treeConfig) {
xeUtils.each(selectCheckboxMaps, function (row, rowid) {
if (!afterFullRowMaps[rowid]) {
selectRowMaps[rowid] = row
}
})
}
if (checkStrictly) {
reactData.isAllSelected = value2
} else {
if (checkField) {
var checkValFn = function (row) {
if (isForce || !checkMethod || checkMethod({ row })) {
if (value2) {
selectRowMaps[getRowid($xetable, row)] = row
}
xeUtils.set(row, checkField, value2)
}
if (treeConfig && indeterminateField) {
xeUtils.set(row, indeterminateField, false)
}
}
if (treeConfig) {
xeUtils.eachTree(afterFullData, checkValFn, {
children: childrenField,
})
} else {
afterFullData.forEach(checkValFn)
}
} else {
if (treeConfig) {
if (value2) {
xeUtils.eachTree(
afterFullData,
function (row) {
if (isForce || !checkMethod || checkMethod({ row })) {
selectRowMaps[getRowid($xetable, row)] = row
}
},
{ children: childrenField }
)
} else {
if (!isForce && checkMethod) {
xeUtils.eachTree(
afterFullData,
function (row) {
var rowid = getRowid($xetable, row)
if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
selectRowMaps[rowid] = row
}
},
{ children: childrenField }
)
}
}
} else {
if (value2) {
if (!isForce && checkMethod) {
afterFullData.forEach(function (row) {
var rowid = getRowid($xetable, row)
if (selectCheckboxMaps[rowid] || checkMethod({ row })) {
selectRowMaps[rowid] = row
}
})
} else {
afterFullData.forEach(function (row) {
selectRowMaps[getRowid($xetable, row)] = row
})
}
} else {
if (!isForce && checkMethod) {
afterFullData.forEach(function (row) {
var rowid = getRowid($xetable, row)
if (checkMethod({ row }) ? 0 : selectCheckboxMaps[rowid]) {
selectRowMaps[rowid] = row
}
})
}
}
}
}
if (reserve) {
if (value2) {
xeUtils.each(selectRowMaps, function (row, rowid) {
checkboxReserveRowMap[rowid] = row
})
} else {
afterFullData.forEach(function (row) {
return handleCheckboxReserveRow(row, false)
})
}
}
reactData.selectCheckboxMaps = checkField ? {} : selectRowMaps
}
reactData.treeIndeterminateMaps = {}
internalData.treeIndeterminateRowMaps = {}
tablePrivateMethods.checkSelectionStatus()
return nextTick()
}
var handleReserveStatus = function () {
var treeConfig = props2.treeConfig
var expandColumn = reactData.expandColumn,
currentRow = reactData.currentRow,
selectCheckboxMaps = reactData.selectCheckboxMaps,
selectRadioRow = reactData.selectRadioRow,
rowExpandedMaps = reactData.rowExpandedMaps,
treeExpandedMaps = reactData.treeExpandedMaps
var fullDataRowIdData = internalData.fullDataRowIdData,
fullAllDataRowIdData = internalData.fullAllDataRowIdData,
radioReserveRow = internalData.radioReserveRow
var expandOpts = computeExpandOpts.value
var treeOpts = computeTreeOpts.value
var radioOpts = computeRadioOpts.value
var checkboxOpts = computeCheckboxOpts.value
if (
selectRadioRow &&
!fullAllDataRowIdData[getRowid($xetable, selectRadioRow)]
) {
reactData.selectRadioRow = null
}
if (radioOpts.reserve && radioReserveRow) {
var rowid = getRowid($xetable, radioReserveRow)
if (fullDataRowIdData[rowid]) {
handleCheckedRadioRow(fullDataRowIdData[rowid].row, true)
}
}
reactData.selectCheckboxMaps = getRecoverRowMaps(selectCheckboxMaps)
if (checkboxOpts.reserve) {
handleCheckedCheckboxRow(
handleReserveRow(internalData.checkboxReserveRowMap),
true,
true
)
}
if (currentRow && !fullAllDataRowIdData[getRowid($xetable, currentRow)]) {
reactData.currentRow = null
}
reactData.rowExpandedMaps = expandColumn
? getRecoverRowMaps(rowExpandedMaps)
: {}
if (expandColumn && expandOpts.reserve) {
tableMethods.setRowExpand(
handleReserveRow(internalData.rowExpandedReserveRowMap),
true
)
}
reactData.treeExpandedMaps = treeConfig
? getRecoverRowMaps(treeExpandedMaps)
: {}
if (treeConfig && treeOpts.reserve) {
tableMethods.setTreeExpand(
handleReserveRow(internalData.treeExpandedReserveRowMap),
true
)
}
}
var handleDefaultTreeExpand = function () {
var treeConfig = props2.treeConfig
if (treeConfig) {
var tableFullData_1 = internalData.tableFullData
var treeOpts = computeTreeOpts.value
var expandAll = treeOpts.expandAll,
expandRowKeys = treeOpts.expandRowKeys
var childrenField_1 = treeOpts.children || treeOpts.childrenField
if (expandAll) {
tableMethods.setAllTreeExpand(true)
} else if (expandRowKeys) {
var defExpandeds_2 = []
var rowkey_1 = getRowkey($xetable)
expandRowKeys.forEach(function (rowid) {
var matchObj = xeUtils.findTree(
tableFullData_1,
function (item2) {
return rowid === xeUtils.get(item2, rowkey_1)
},
{ children: childrenField_1 }
)
if (matchObj) {
defExpandeds_2.push(matchObj.item)
}
})
tableMethods.setTreeExpand(defExpandeds_2, true)
}
}
}
var handleAsyncTreeExpandChilds = function (row) {
var treeOpts = computeTreeOpts.value
var checkboxOpts = computeCheckboxOpts.value
var transform3 = treeOpts.transform,
loadMethod = treeOpts.loadMethod
var checkStrictly = checkboxOpts.checkStrictly
return new Promise(function (resolve2) {
if (loadMethod) {
var treeExpandLazyLoadedMaps_1 = reactData.treeExpandLazyLoadedMaps
var fullAllDataRowIdData = internalData.fullAllDataRowIdData
var rowid_1 = getRowid($xetable, row)
var rest_1 = fullAllDataRowIdData[rowid_1]
treeExpandLazyLoadedMaps_1[rowid_1] = row
loadMethod({ $table: $xetable, row })
.then(function (childRecords) {
rest_1.treeLoaded = true
if (treeExpandLazyLoadedMaps_1[rowid_1]) {
delete treeExpandLazyLoadedMaps_1[rowid_1]
}
if (!xeUtils.isArray(childRecords)) {
childRecords = []
}
if (childRecords) {
return tableMethods
.loadTreeChildren(row, childRecords)
.then(function (childRows) {
var treeExpandedMaps = reactData.treeExpandedMaps
if (childRows.length && !treeExpandedMaps[rowid_1]) {
treeExpandedMaps[rowid_1] = row
}
if (
!checkStrictly &&
tableMethods.isCheckedByCheckboxRow(row)
) {
handleCheckedCheckboxRow(childRows, true)
}
return nextTick().then(function () {
if (transform3) {
return tablePrivateMethods.handleTableData()
}
})
})
}
})
.catch(function () {
var treeExpandLazyLoadedMaps = reactData.treeExpandLazyLoadedMaps
rest_1.treeLoaded = false
if (treeExpandLazyLoadedMaps[rowid_1]) {
delete treeExpandLazyLoadedMaps[rowid_1]
}
})
.finally(function () {
nextTick()
.then(function () {
return tableMethods.recalculate()
})
.then(function () {
return resolve2()
})
})
} else {
resolve2()
}
})
}
var handleTreeExpandReserve = function (row, expanded) {
var treeExpandedReserveRowMap = internalData.treeExpandedReserveRowMap
var treeOpts = computeTreeOpts.value
if (treeOpts.reserve) {
var rowid = getRowid($xetable, row)
if (expanded) {
treeExpandedReserveRowMap[rowid] = row
} else if (treeExpandedReserveRowMap[rowid]) {
delete treeExpandedReserveRowMap[rowid]
}
}
}
var handleAsyncRowExpand = function (row) {
return new Promise(function (resolve2) {
var expandOpts = computeExpandOpts.value
var loadMethod = expandOpts.loadMethod
if (loadMethod) {
var fullAllDataRowIdData = internalData.fullAllDataRowIdData
var rowExpandLazyLoadedMaps = reactData.rowExpandLazyLoadedMaps
var rowid_2 = getRowid($xetable, row)
var rest_2 = fullAllDataRowIdData[rowid_2]
rowExpandLazyLoadedMaps[rowid_2] = row
loadMethod({
$table: $xetable,
row,
rowIndex: tableMethods.getRowIndex(row),
$rowIndex: tableMethods.getVMRowIndex(row),
})
.then(function () {
var rowExpandedMaps = reactData.rowExpandedMaps
rest_2.expandLoaded = true
rowExpandedMaps[rowid_2] = row
})
.catch(function () {
rest_2.expandLoaded = false
})
.finally(function () {
var rowExpandLazyLoadedMaps2 = reactData.rowExpandLazyLoadedMaps
if (rowExpandLazyLoadedMaps2[rowid_2]) {
delete rowExpandLazyLoadedMaps2[rowid_2]
}
nextTick()
.then(function () {
return tableMethods.recalculate()
})
.then(function () {
return resolve2()
})
})
} else {
resolve2()
}
})
}
var handleRowExpandReserve = function (row, expanded) {
var rowExpandedReserveRowMap = internalData.rowExpandedReserveRowMap
var expandOpts = computeExpandOpts.value
if (expandOpts.reserve) {
var rowid = getRowid($xetable, row)
if (expanded) {
rowExpandedReserveRowMap[rowid] = row
} else if (rowExpandedReserveRowMap[rowid]) {
delete rowExpandedReserveRowMap[rowid]
}
}
}
var handleDefaultMergeCells = function () {
var mergeCells = props2.mergeCells
if (mergeCells) {
tableMethods.setMergeCells(mergeCells)
}
}
var handleDefaultMergeFooterItems = function () {
var mergeFooterItems = props2.mergeFooterItems
if (mergeFooterItems) {
tableMethods.setMergeFooterItems(mergeFooterItems)
}
}
var computeScrollLoad = function () {
return nextTick().then(function () {
var scrollXLoad = reactData.scrollXLoad,
scrollYLoad = reactData.scrollYLoad
var scrollXStore = internalData.scrollXStore,
scrollYStore = internalData.scrollYStore
var sYOpts = computeSYOpts.value
var sXOpts = computeSXOpts.value
if (scrollXLoad) {
var visibleXSize = computeVirtualX().visibleSize
var offsetXSize = sXOpts.oSize
? xeUtils.toNumber(sXOpts.oSize)
: browse.edge
? 5
: 0
scrollXStore.offsetSize = offsetXSize
scrollXStore.visibleSize = visibleXSize
scrollXStore.endIndex = Math.max(
scrollXStore.startIndex + scrollXStore.visibleSize + offsetXSize,
scrollXStore.endIndex
)
tablePrivateMethods.updateScrollXData()
} else {
tablePrivateMethods.updateScrollXSpace()
}
var _a2 = computeVirtualY(),
rowHeight = _a2.rowHeight,
visibleYSize = _a2.visibleSize
scrollYStore.rowHeight = rowHeight
if (scrollYLoad) {
var offsetYSize = sYOpts.oSize
? xeUtils.toNumber(sYOpts.oSize)
: browse.edge
? 10
: 0
scrollYStore.offsetSize = offsetYSize
scrollYStore.visibleSize = visibleYSize
scrollYStore.endIndex = Math.max(
scrollYStore.startIndex + visibleYSize + offsetYSize,
scrollYStore.endIndex
)
tablePrivateMethods.updateScrollYData()
} else {
tablePrivateMethods.updateScrollYSpace()
}
reactData.rowHeight = rowHeight
nextTick(updateStyle2)
})
}
var loadTableData = function (datas) {
var keepSource = props2.keepSource,
treeConfig = props2.treeConfig
var editStore = reactData.editStore,
oldScrollYLoad = reactData.scrollYLoad
var scrollYStore = internalData.scrollYStore,
scrollXStore = internalData.scrollXStore,
lastScrollLeft = internalData.lastScrollLeft,
lastScrollTop = internalData.lastScrollTop
var treeOpts = computeTreeOpts.value
var transform3 = treeOpts.transform
var childrenField = treeOpts.children || treeOpts.childrenField
var treeData = []
var fullData = reactive(datas ? datas.slice(0) : [])
if (treeConfig) {
if (transform3) {
treeData = xeUtils.toArrayTree(fullData, {
key: treeOpts.rowField,
parentKey: treeOpts.parentField,
children: childrenField,
mapChildren: treeOpts.mapChildrenField,
})
fullData = treeData.slice(0)
} else {
treeData = fullData.slice(0)
}
}
scrollYStore.startIndex = 0
scrollYStore.endIndex = 1
scrollXStore.startIndex = 0
scrollXStore.endIndex = 1
reactData.scrollVMLoading = false
editStore.insertMaps = {}
editStore.removeMaps = {}
var sYLoad = updateScrollYStatus(fullData)
reactData.scrollYLoad = sYLoad
internalData.tableFullData = fullData
internalData.tableFullTreeData = treeData
tablePrivateMethods.cacheRowMap(true)
internalData.tableSynchData = datas
if (keepSource) {
tablePrivateMethods.cacheSourceMap(fullData)
}
if ($xetable.clearCellAreas && props2.mouseConfig) {
$xetable.clearCellAreas()
$xetable.clearCopyCellArea()
}
tableMethods.clearMergeCells()
tableMethods.clearMergeFooterItems()
tablePrivateMethods.handleTableData(true)
tableMethods.updateFooter()
return nextTick()
.then(function () {
updateHeight()
updateStyle2()
})
.then(function () {
computeScrollLoad()
})
.then(function () {
if (sYLoad) {
scrollYStore.endIndex = scrollYStore.visibleSize
}
handleReserveStatus()
tablePrivateMethods.checkSelectionStatus()
return new Promise(function (resolve2) {
nextTick()
.then(function () {
return tableMethods.recalculate()
})
.then(function () {
var targetScrollLeft = lastScrollLeft
var targetScrollTop = lastScrollTop
var sXOpts = computeSXOpts.value
var sYOpts = computeSYOpts.value
if (sXOpts.scrollToLeftOnChange) {
targetScrollLeft = 0
}
if (sYOpts.scrollToTopOnChange) {
targetScrollTop = 0
}
if (oldScrollYLoad === sYLoad) {
restoreScrollLocation(
$xetable,
targetScrollLeft,
targetScrollTop
).then(resolve2)
} else {
setTimeout(function () {
return restoreScrollLocation(
$xetable,
targetScrollLeft,
targetScrollTop
).then(resolve2)
})
}
})
})
})
}
var handleLoadDefaults = function () {
handleDefaultSelectionChecked()
handleDefaultRadioChecked()
handleDefaultRowExpand()
handleDefaultTreeExpand()
handleDefaultMergeCells()
handleDefaultMergeFooterItems()
nextTick(function () {
return setTimeout(function () {
return tableMethods.recalculate()
})
})
}
var handleInitDefaults = function () {
handleDefaultSort()
}
var handleTableColumn = function () {
var scrollXLoad = reactData.scrollXLoad
var visibleColumn = internalData.visibleColumn,
scrollXStore = internalData.scrollXStore,
fullColumnIdData = internalData.fullColumnIdData
var tableColumn = scrollXLoad
? visibleColumn.slice(scrollXStore.startIndex, scrollXStore.endIndex)
: visibleColumn.slice(0)
tableColumn.forEach(function (column, $index) {
var colid = column.id
var rest = fullColumnIdData[colid]
if (rest) {
rest.$index = $index
}
})
reactData.tableColumn = tableColumn
}
var loadScrollXData = function () {
var mergeList = reactData.mergeList,
mergeFooterList = reactData.mergeFooterList
var scrollXStore = internalData.scrollXStore
var startIndex = scrollXStore.startIndex,
endIndex = scrollXStore.endIndex,
offsetSize = scrollXStore.offsetSize
var _a2 = computeVirtualX(),
toVisibleIndex = _a2.toVisibleIndex,
visibleSize = _a2.visibleSize
var offsetItem = {
startIndex: Math.max(0, toVisibleIndex - 1 - offsetSize),
endIndex: toVisibleIndex + visibleSize + offsetSize,
}
calculateMergerOffserIndex(
mergeList.concat(mergeFooterList),
offsetItem,
'col'
)
var offsetStartIndex = offsetItem.startIndex,
offsetEndIndex = offsetItem.endIndex
if (
toVisibleIndex <= startIndex ||
toVisibleIndex >= endIndex - visibleSize - 1
) {
if (startIndex !== offsetStartIndex || endIndex !== offsetEndIndex) {
scrollXStore.startIndex = offsetStartIndex
scrollXStore.endIndex = offsetEndIndex
tablePrivateMethods.updateScrollXData()
}
}
tableMethods.closeTooltip()
}
var getColumnList = function (columns) {
var result = []
columns.forEach(function (column) {
result.push.apply(
result,
column.children && column.children.length
? getColumnList(column.children)
: [column]
)
})
return result
}
var parseColumns = function () {
var leftList = []
var centerList = []
var rightList = []
var isGroup2 = reactData.isGroup,
columnStore = reactData.columnStore
var sXOpts = computeSXOpts.value
var collectColumn = internalData.collectColumn,
tableFullColumn = internalData.tableFullColumn,
scrollXStore = internalData.scrollXStore,
fullColumnIdData = internalData.fullColumnIdData
if (isGroup2) {
var leftGroupList_1 = []
var centerGroupList_1 = []
var rightGroupList_1 = []
xeUtils.eachTree(
collectColumn,
function (column, index2, items, path, parent2) {
var isColGroup = hasChildrenList(column)
if (parent2 && parent2.fixed) {
column.fixed = parent2.fixed
}
if (parent2 && column.fixed !== parent2.fixed) {
errLog('vxe.error.groupFixed')
}
if (isColGroup) {
column.visible = !!xeUtils.findTree(
column.children,
function (subColumn) {
return hasChildrenList(subColumn) ? false : subColumn.visible
}
)
} else if (column.visible) {
if (column.fixed === 'left') {
leftList.push(column)
} else if (column.fixed === 'right') {
rightList.push(column)
} else {
centerList.push(column)
}
}
}
)
collectColumn.forEach(function (column) {
if (column.visible) {
if (column.fixed === 'left') {
leftGroupList_1.push(column)
} else if (column.fixed === 'right') {
rightGroupList_1.push(column)
} else {
centerGroupList_1.push(column)
}
}
})
reactData.tableGroupColumn = leftGroupList_1
.concat(centerGroupList_1)
.concat(rightGroupList_1)
} else {
tableFullColumn.forEach(function (column) {
if (column.visible) {
if (column.fixed === 'left') {
leftList.push(column)
} else if (column.fixed === 'right') {
rightList.push(column)
} else {
centerList.push(column)
}
}
})
}
var visibleColumn = leftList.concat(centerList).concat(rightList)
var scrollXLoad =
!!sXOpts.enabled &&
sXOpts.gt > -1 &&
(sXOpts.gt === 0 || sXOpts.gt < tableFullColumn.length)
reactData.hasFixedColumn = leftList.length > 0 || rightList.length > 0
Object.assign(columnStore, { leftList, centerList, rightList })
if (scrollXLoad) {
var visibleSize = computeVirtualX().visibleSize
scrollXStore.startIndex = 0
scrollXStore.endIndex = visibleSize
scrollXStore.visibleSize = visibleSize
}
if (
visibleColumn.length !== internalData.visibleColumn.length ||
!internalData.visibleColumn.every(function (column, index2) {
return column === visibleColumn[index2]
})
) {
tableMethods.clearMergeCells()
tableMethods.clearMergeFooterItems()
}
reactData.scrollXLoad = scrollXLoad
visibleColumn.forEach(function (column, index2) {
var colid = column.id
var rest = fullColumnIdData[colid]
if (rest) {
rest._index = index2
}
})
internalData.visibleColumn = visibleColumn
handleTableColumn()
return tableMethods
.updateFooter()
.then(function () {
return tableMethods.recalculate()
})
.then(function () {
tableMethods.updateCellAreas()
return tableMethods.recalculate()
})
}
var handleColumn = function (collectColumn) {
internalData.collectColumn = collectColumn
var tableFullColumn = getColumnList(collectColumn)
internalData.tableFullColumn = tableFullColumn
cacheColumnMap()
restoreCustomStorage()
parseColumns().then(function () {
if (reactData.scrollXLoad) {
loadScrollXData()
}
})
tableMethods.clearMergeCells()
tableMethods.clearMergeFooterItems()
tablePrivateMethods.handleTableData(true)
return nextTick().then(function () {
if ($xetoolbar) {
$xetoolbar.syncUpdate({ collectColumn, $table: $xetable })
}
return tableMethods.recalculate()
})
}
var updateScrollYStatus = function (fullData) {
var treeConfig = props2.treeConfig
var sYOpts = computeSYOpts.value
var treeOpts = computeTreeOpts.value
var transform3 = treeOpts.transform
var allList = fullData || internalData.tableFullData
var scrollYLoad =
(transform3 || !treeConfig) &&
!!sYOpts.enabled &&
sYOpts.gt > -1 &&
(sYOpts.gt === 0 || sYOpts.gt < allList.length)
reactData.scrollYLoad = scrollYLoad
return scrollYLoad
}
var handleBaseTreeExpand = function (rows, expanded) {
var treeExpandedMaps = reactData.treeExpandedMaps,
treeExpandLazyLoadedMaps = reactData.treeExpandLazyLoadedMaps,
treeNodeColumn = reactData.treeNodeColumn
var treeTempExpandedMaps = __assign({}, treeExpandedMaps)
var fullAllDataRowIdData = internalData.fullAllDataRowIdData,
tableFullData = internalData.tableFullData
var treeOpts = computeTreeOpts.value
var reserve = treeOpts.reserve,
lazy = treeOpts.lazy,
accordion = treeOpts.accordion,
toggleMethod = treeOpts.toggleMethod
var childrenField = treeOpts.children || treeOpts.childrenField
var hasChildField = treeOpts.hasChild || treeOpts.hasChildField
var result = []
var columnIndex = tableMethods.getColumnIndex(treeNodeColumn)
var $columnIndex = tableMethods.getVMColumnIndex(treeNodeColumn)
var validRows = toggleMethod
? rows.filter(function (row) {
return toggleMethod({
$table: $xetable,
expanded,
column: treeNodeColumn,
columnIndex,
$columnIndex,
row,
})
})
: rows
if (accordion) {
validRows = validRows.length ? [validRows[validRows.length - 1]] : []
var matchObj = xeUtils.findTree(
tableFullData,
function (item2) {
return item2 === validRows[0]
},
{ children: childrenField }
)
if (matchObj) {
matchObj.items.forEach(function (item2) {
var rowid = getRowid($xetable, item2)
if (treeTempExpandedMaps[rowid]) {
delete treeTempExpandedMaps[rowid]
}
})
}
}
if (expanded) {
validRows.forEach(function (row) {
var rowid = getRowid($xetable, row)
if (!treeTempExpandedMaps[rowid]) {
var rest = fullAllDataRowIdData[rowid]
var isLoad =
lazy &&
row[hasChildField] &&
!rest.treeLoaded &&
!treeExpandLazyLoadedMaps[rowid]
if (isLoad) {
result.push(handleAsyncTreeExpandChilds(row))
} else {
if (row[childrenField] && row[childrenField].length) {
treeTempExpandedMaps[rowid] = row
}
}
}
})
} else {
validRows.forEach(function (item2) {
var rowid = getRowid($xetable, item2)
if (treeTempExpandedMaps[rowid]) {
delete treeTempExpandedMaps[rowid]
}
})
}
if (reserve) {
validRows.forEach(function (row) {
return handleTreeExpandReserve(row, expanded)
})
}
reactData.treeExpandedMaps = treeTempExpandedMaps
return Promise.all(result).then(function () {
return tableMethods.recalculate()
})
}
var handleVirtualTreeExpand = function (rows, expanded) {
return handleBaseTreeExpand(rows, expanded)
.then(function () {
handleVirtualTreeToList()
return tablePrivateMethods.handleTableData()
})
.then(function () {
return tableMethods.recalculate()
})
}
var loadScrollYData = function (evnt) {
var mergeList = reactData.mergeList
var scrollYStore = internalData.scrollYStore
var startIndex = scrollYStore.startIndex,
endIndex = scrollYStore.endIndex,
visibleSize = scrollYStore.visibleSize,
offsetSize = scrollYStore.offsetSize,
rowHeight = scrollYStore.rowHeight
var scrollBodyElem = evnt.currentTarget || evnt.target
var scrollTop = scrollBodyElem.scrollTop
var toVisibleIndex = Math.floor(scrollTop / rowHeight)
var offsetItem = {
startIndex: Math.max(0, toVisibleIndex - 1 - offsetSize),
endIndex: toVisibleIndex + visibleSize + offsetSize,
}
calculateMergerOffserIndex(mergeList, offsetItem, 'row')
var offsetStartIndex = offsetItem.startIndex,
offsetEndIndex = offsetItem.endIndex
if (
toVisibleIndex <= startIndex ||
toVisibleIndex >= endIndex - visibleSize - 1
) {
if (startIndex !== offsetStartIndex || endIndex !== offsetEndIndex) {
scrollYStore.startIndex = offsetStartIndex
scrollYStore.endIndex = offsetEndIndex
tablePrivateMethods.updateScrollYData()
}
}
}
var createGetRowCacheProp = function (prop) {
return function (row) {
var fullAllDataRowIdData = internalData.fullAllDataRowIdData
if (row) {
var rowid = getRowid($xetable, row)
var rest = fullAllDataRowIdData[rowid]
if (rest) {
return rest[prop]
}
}
return -1
}
}
var createGetColumnCacheProp = function (prop) {
return function (column) {
var fullColumnIdData = internalData.fullColumnIdData
if (column) {
var rest = fullColumnIdData[column.id]
if (rest) {
return rest[prop]
}
}
return -1
}
}
var debounceScrollY = xeUtils.debounce(
function (evnt) {
loadScrollYData(evnt)
},
20,
{ leading: false, trailing: true }
)
var keyCtxTimeout
tableMethods = {
dispatchEvent: function (type4, params2, evnt) {
emit2(
type4,
Object.assign(
{ $table: $xetable, $grid: $xegrid, $event: evnt },
params2
)
)
},
clearAll: function () {
return clearTableAllStatus($xetable)
},
syncData: function () {
warnLog('vxe.error.delFunc', ['syncData', 'getData'])
return nextTick().then(function () {
reactData.tableData = []
emit2('update:data', internalData.tableFullData)
return nextTick()
})
},
updateData: function () {
var scrollXLoad = reactData.scrollXLoad,
scrollYLoad = reactData.scrollYLoad
return tablePrivateMethods
.handleTableData(true)
.then(function () {
tableMethods.updateFooter()
if (scrollXLoad || scrollYLoad) {
if (scrollXLoad) {
tablePrivateMethods.updateScrollXSpace()
}
if (scrollYLoad) {
tablePrivateMethods.updateScrollYSpace()
}
return tableMethods.refreshScroll()
}
})
.then(function () {
tableMethods.updateCellAreas()
return tableMethods.recalculate(true)
})
.then(function () {
setTimeout(function () {
return $xetable.recalculate()
}, 50)
})
},
loadData: function (datas) {
var inited = internalData.inited,
initStatus = internalData.initStatus
return loadTableData(datas).then(function () {
internalData.inited = true
internalData.initStatus = true
if (!initStatus) {
handleLoadDefaults()
}
if (!inited) {
handleInitDefaults()
}
return tableMethods.recalculate()
})
},
reloadData: function (datas) {
var inited = internalData.inited
return tableMethods
.clearAll()
.then(function () {
internalData.inited = true
internalData.initStatus = true
return loadTableData(datas)
})
.then(function () {
handleLoadDefaults()
if (!inited) {
handleInitDefaults()
}
return tableMethods.recalculate()
})
},
reloadRow: function (row, record, field2) {
var keepSource = props2.keepSource
var tableData2 = reactData.tableData
var tableSourceData = internalData.tableSourceData
if (keepSource) {
var rowIndex = tableMethods.getRowIndex(row)
var oRow = tableSourceData[rowIndex]
if (oRow && row) {
if (field2) {
var newValue = xeUtils.get(record || row, field2)
xeUtils.set(row, field2, newValue)
xeUtils.set(oRow, field2, newValue)
} else {
var newRecord = xeUtils.clone(__assign({}, record), true)
xeUtils.destructuring(oRow, Object.assign(row, newRecord))
}
}
reactData.tableData = tableData2.slice(0)
}
return nextTick()
},
loadTreeChildren: function (row, childRecords) {
var keepSource = props2.keepSource
var tableSourceData = internalData.tableSourceData,
fullDataRowIdData = internalData.fullDataRowIdData,
fullAllDataRowIdData = internalData.fullAllDataRowIdData,
sourceDataRowIdData = internalData.sourceDataRowIdData
var treeOpts = computeTreeOpts.value
var transform3 = treeOpts.transform,
mapChildrenField = treeOpts.mapChildrenField
var childrenField = treeOpts.children || treeOpts.childrenField
var parentRest = fullAllDataRowIdData[getRowid($xetable, row)]
var parentLevel = parentRest ? parentRest.level : 0
return tableMethods.createData(childRecords).then(function (rows) {
if (keepSource) {
var rowid_3 = getRowid($xetable, row)
var matchObj = xeUtils.findTree(
tableSourceData,
function (item2) {
return rowid_3 === getRowid($xetable, item2)
},
{ children: childrenField }
)
if (matchObj) {
matchObj.item[childrenField] = xeUtils.clone(rows, true)
}
rows.forEach(function (childRow) {
var rowid = getRowid($xetable, childRow)
sourceDataRowIdData[rowid] = xeUtils.clone(childRow, true)
})
}
xeUtils.eachTree(
rows,
function (childRow, index2, items, path, parent2, nodes) {
var rowid = getRowid($xetable, childRow)
var rest = {
row: childRow,
rowid,
seq: -1,
index: index2,
_index: -1,
$index: -1,
items,
parent: parent2,
level: parentLevel + nodes.length,
}
fullDataRowIdData[rowid] = rest
fullAllDataRowIdData[rowid] = rest
},
{ children: childrenField }
)
row[childrenField] = rows
if (transform3) {
row[mapChildrenField] = rows
}
updateAfterDataIndex()
return rows
})
},
loadColumn: function (columns) {
var collectColumn = xeUtils.mapTree(columns, function (column) {
return reactive(Cell$1.createColumn($xetable, column))
})
return handleColumn(collectColumn)
},
reloadColumn: function (columns) {
return tableMethods.clearAll().then(function () {
return tableMethods.loadColumn(columns)
})
},
getRowNode: function (tr2) {
if (tr2) {
var fullAllDataRowIdData = internalData.fullAllDataRowIdData
var rowid = tr2.getAttribute('rowid')
if (rowid) {
var rest = fullAllDataRowIdData[rowid]
if (rest) {
return {
rowid: rest.rowid,
item: rest.row,
index: rest.index,
items: rest.items,
parent: rest.parent,
}
}
}
}
return null
},
getColumnNode: function (cell) {
if (cell) {
var fullColumnIdData = internalData.fullColumnIdData
var colid = cell.getAttribute('colid')
if (colid) {
var rest = fullColumnIdData[colid]
if (rest) {
return {
colid: rest.colid,
item: rest.column,
index: rest.index,
items: rest.items,
parent: rest.parent,
}
}
}
}
return null
},
getRowSeq: createGetRowCacheProp('seq'),
getRowIndex: createGetRowCacheProp('index'),
getVTRowIndex: createGetRowCacheProp('_index'),
getVMRowIndex: createGetRowCacheProp('$index'),
getColumnIndex: createGetColumnCacheProp('index'),
getVTColumnIndex: createGetColumnCacheProp('_index'),
getVMColumnIndex: createGetColumnCacheProp('$index'),
createData: function (records) {
return nextTick().then(function () {
return reactive(tablePrivateMethods.defineField(records))
})
},
createRow: function (records) {
var isArr = xeUtils.isArray(records)
if (!isArr) {
records = [records || {}]
}
return tableMethods.createData(records).then(function (rows) {
return isArr ? rows : rows[0]
})
},
revertData: function (rows, field2) {
var keepSource = props2.keepSource
var tableSourceData = internalData.tableSourceData,
sourceDataRowIdData = internalData.sourceDataRowIdData
if (!keepSource) {
return nextTick()
}
var targetRows = rows
if (rows) {
if (!xeUtils.isArray(rows)) {
targetRows = [rows]
}
} else {
targetRows = xeUtils.toArray($xetable.getUpdateRecords())
}
if (targetRows.length) {
targetRows.forEach(function (row) {
if (!tableMethods.isInsertByRow(row)) {
var rowid = getRowid($xetable, row)
var oRow = sourceDataRowIdData[rowid]
if (oRow && row) {
if (field2) {
xeUtils.set(
row,
field2,
xeUtils.clone(xeUtils.get(oRow, field2), true)
)
} else {
xeUtils.destructuring(row, xeUtils.clone(oRow, true))
}
}
}
})
}
if (rows) {
return nextTick()
}
return tableMethods.reloadData(tableSourceData)
},
clearData: function (rows, field2) {
var tableFullData = internalData.tableFullData,
visibleColumn = internalData.visibleColumn
if (!arguments.length) {
rows = tableFullData
} else if (rows && !xeUtils.isArray(rows)) {
rows = [rows]
}
if (field2) {
rows.forEach(function (row) {
return xeUtils.set(row, field2, null)
})
} else {
rows.forEach(function (row) {
visibleColumn.forEach(function (column) {
if (column.field) {
setCellValue(row, column, null)
}
})
})
}
return nextTick()
},
isInsertByRow: function (row) {
var editStore = reactData.editStore
var rowid = getRowid($xetable, row)
return editStore.insertMaps[rowid]
},
removeInsertRow: function () {
var editStore = reactData.editStore
editStore.insertMaps = {}
return $xetable.remove($xetable.getInsertRecords())
},
isUpdateByRow: function (row, field2) {
var keepSource = props2.keepSource
var tableFullColumn = internalData.tableFullColumn,
fullDataRowIdData = internalData.fullDataRowIdData,
sourceDataRowIdData = internalData.sourceDataRowIdData
if (keepSource) {
var rowid = getRowid($xetable, row)
if (!fullDataRowIdData[rowid]) {
return false
}
var oRow = sourceDataRowIdData[rowid]
if (oRow) {
if (arguments.length > 1) {
return !eqCellValue(oRow, row, field2)
}
for (
var index2 = 0, len2 = tableFullColumn.length;
index2 < len2;
index2++
) {
var property2 = tableFullColumn[index2].field
if (property2 && !eqCellValue(oRow, row, property2)) {
return true
}
}
}
}
return false
},
getColumns: function (columnIndex) {
var columns = internalData.visibleColumn
return xeUtils.isUndefined(columnIndex)
? columns.slice(0)
: columns[columnIndex]
},
getColumnById: function (colid) {
var fullColumnIdData = internalData.fullColumnIdData
return fullColumnIdData[colid] ? fullColumnIdData[colid].column : null
},
getColumnByField: function (field2) {
var fullColumnFieldData = internalData.fullColumnFieldData
return fullColumnFieldData[field2]
? fullColumnFieldData[field2].column
: null
},
getTableColumn: function () {
return {
collectColumn: internalData.collectColumn.slice(0),
fullColumn: internalData.tableFullColumn.slice(0),
visibleColumn: internalData.visibleColumn.slice(0),
tableColumn: reactData.tableColumn.slice(0),
}
},
getData: function (rowIndex) {
var tableSynchData = props2.data || internalData.tableSynchData
return xeUtils.isUndefined(rowIndex)
? tableSynchData.slice(0)
: tableSynchData[rowIndex]
},
getCheckboxRecords: function (isFull) {
var treeConfig = props2.treeConfig
var tableFullData = internalData.tableFullData,
afterFullData = internalData.afterFullData,
afterTreeFullData = internalData.afterTreeFullData,
tableFullTreeData = internalData.tableFullTreeData,
fullDataRowIdData = internalData.fullDataRowIdData,
afterFullRowMaps = internalData.afterFullRowMaps
var treeOpts = computeTreeOpts.value
var checkboxOpts = computeCheckboxOpts.value
var transform3 = treeOpts.transform,
mapChildrenField = treeOpts.mapChildrenField
var checkField = checkboxOpts.checkField
var childrenField = treeOpts.children || treeOpts.childrenField
var rowList = []
var currTableData = isFull
? transform3
? tableFullTreeData
: tableFullData
: transform3
? afterTreeFullData
: afterFullData
if (checkField) {
if (treeConfig) {
rowList = xeUtils.filterTree(
currTableData,
function (row) {
return xeUtils.get(row, checkField)
},
{ children: transform3 ? mapChildrenField : childrenField }
)
} else {
rowList = currTableData.filter(function (row) {
return xeUtils.get(row, checkField)
})
}
} else {
var selectCheckboxMaps = reactData.selectCheckboxMaps
xeUtils.each(selectCheckboxMaps, function (row, rowid) {
if (isFull ? fullDataRowIdData[rowid] : afterFullRowMaps[rowid]) {
rowList.push(row)
}
})
}
return rowList
},
getParentRow: function (rowOrRowid) {
var treeConfig = props2.treeConfig
var fullDataRowIdData = internalData.fullDataRowIdData
if (rowOrRowid && treeConfig) {
var rowid = void 0
if (xeUtils.isString(rowOrRowid)) {
rowid = rowOrRowid
} else {
rowid = getRowid($xetable, rowOrRowid)
}
if (rowid) {
return fullDataRowIdData[rowid]
? fullDataRowIdData[rowid].parent
: null
}
}
return null
},
getRowById: function (cellValue) {
var fullDataRowIdData = internalData.fullDataRowIdData
var rowid = xeUtils.eqNull(cellValue)
? ''
: encodeURIComponent(cellValue)
return fullDataRowIdData[rowid] ? fullDataRowIdData[rowid].row : null
},
getRowid: function (row) {
return getRowid($xetable, row)
},
getTableData: function () {
var tableData2 = reactData.tableData,
footerTableData = reactData.footerTableData
var tableFullData = internalData.tableFullData,
afterFullData = internalData.afterFullData
return {
fullData: tableFullData.slice(0),
visibleData: afterFullData.slice(0),
tableData: tableData2.slice(0),
footerData: footerTableData.slice(0),
}
},
setColumnFixed: function (fieldOrColumn, fixed) {
var column = handleFieldOrColumn($xetable, fieldOrColumn)
var targetColumn = getRootColumn($xetable, column)
var isMaxFixedColumn = computeIsMaxFixedColumn.value
if (targetColumn && targetColumn.fixed !== fixed) {
if (!targetColumn.fixed && isMaxFixedColumn) {
if (VXETable.modal) {
VXETable.modal.message({
status: 'error',
content: GlobalConfig.i18n('vxe.table.maxFixedCol'),
})
}
return nextTick()
}
xeUtils.eachTree([targetColumn], function (column2) {
column2.fixed = fixed
})
tablePrivateMethods.saveCustomFixed()
return tableMethods.refreshColumn()
}
return nextTick()
},
clearColumnFixed: function (fieldOrColumn) {
var column = handleFieldOrColumn($xetable, fieldOrColumn)
var targetColumn = getRootColumn($xetable, column)
if (targetColumn && targetColumn.fixed) {
xeUtils.eachTree([targetColumn], function (column2) {
column2.fixed = null
})
tablePrivateMethods.saveCustomFixed()
return tableMethods.refreshColumn()
}
return nextTick()
},
hideColumn: function (fieldOrColumn) {
var column = handleFieldOrColumn($xetable, fieldOrColumn)
if (column && column.visible) {
column.visible = false
return tablePrivateMethods.handleCustom()
}
return nextTick()
},
showColumn: function (fieldOrColumn) {
var column = handleFieldOrColumn($xetable, fieldOrColumn)
if (column && !column.visible) {
column.visible = true
return tablePrivateMethods.handleCustom()
}
return nextTick()
},
setColumnWidth: function (fieldOrColumn, width) {
var column = handleFieldOrColumn($xetable, fieldOrColumn)
if (column) {
var colWidth = xeUtils.toInteger(width)
var rdWidth = colWidth
if (isScale(width)) {
var tableBody = refTableBody.value
var bodyElem = tableBody ? tableBody.$el : null
var bodyWidth = bodyElem ? bodyElem.clientWidth - 1 : 0
rdWidth = Math.floor(colWidth * bodyWidth)
}
column.renderWidth = rdWidth
}
return nextTick()
},
getColumnWidth: function (fieldOrColumn) {
var column = handleFieldOrColumn($xetable, fieldOrColumn)
if (column) {
return column.renderWidth
}
return 0
},
resetColumn: function (options2) {
var collectColumn = internalData.collectColumn
var customOpts = computeCustomOpts.value
var checkMethod = customOpts.checkMethod
var opts = Object.assign(
{
visible: true,
resizable: options2 === true,
fixed: options2 === true,
},
options2
)
xeUtils.eachTree(collectColumn, function (column) {
if (opts.resizable) {
column.resizeWidth = 0
}
if (opts.fixed) {
column.fixed = column.defaultFixed
}
if (!checkMethod || checkMethod({ column })) {
column.visible = column.defaultVisible
}
})
if (opts.resizable) {
tablePrivateMethods.saveCustomResizable(true)
}
if (opts.fixed) {
tablePrivateMethods.saveCustomFixed()
}
return tablePrivateMethods.handleCustom()
},
refreshColumn: function () {
return parseColumns()
.then(function () {
return tableMethods.refreshScroll()
})
.then(function () {
return tableMethods.recalculate()
})
},
refreshScroll: function () {
var lastScrollLeft = internalData.lastScrollLeft,
lastScrollTop = internalData.lastScrollTop
var tableBody = refTableBody.value
var tableFooter = refTableFooter.value
var leftBody = refTableLeftBody.value
var rightBody = refTableRightBody.value
var tableBodyElem = tableBody ? tableBody.$el : null
var leftBodyElem = leftBody ? leftBody.$el : null
var rightBodyElem = rightBody ? rightBody.$el : null
var tableFooterElem = tableFooter ? tableFooter.$el : null
return new Promise(function (resolve2) {
if (lastScrollLeft || lastScrollTop) {
return restoreScrollLocation(
$xetable,
lastScrollLeft,
lastScrollTop
)
.then()
.then(function () {
setTimeout(resolve2, 30)
})
}
setScrollTop(tableBodyElem, lastScrollTop)
setScrollTop(leftBodyElem, lastScrollTop)
setScrollTop(rightBodyElem, lastScrollTop)
setScrollLeft(tableFooterElem, lastScrollLeft)
setTimeout(resolve2, 30)
})
},
recalculate: function (refull) {
autoCellWidth()
if (refull === true) {
return computeScrollLoad().then(function () {
autoCellWidth()
return computeScrollLoad()
})
}
return computeScrollLoad()
},
openTooltip: function (target2, content2) {
var $commTip = refCommTooltip.value
if ($commTip) {
return $commTip.open(target2, content2)
}
return nextTick()
},
closeTooltip: function () {
var tooltipStore = reactData.tooltipStore
var $tooltip = refTooltip.value
var $commTip = refCommTooltip.value
if (tooltipStore.visible) {
Object.assign(tooltipStore, {
row: null,
column: null,
content: null,
visible: false,
})
if ($tooltip) {
$tooltip.close()
}
}
if ($commTip) {
$commTip.close()
}
return nextTick()
},
isAllCheckboxChecked: function () {
return reactData.isAllSelected
},
isAllCheckboxIndeterminate: function () {
return !reactData.isAllSelected && reactData.isIndeterminate
},
getCheckboxIndeterminateRecords: function (isFull) {
var treeConfig = props2.treeConfig
var fullDataRowIdData = internalData.fullDataRowIdData
var treeIndeterminateMaps = reactData.treeIndeterminateMaps
if (treeConfig) {
var fullRest_1 = []
var defRest_1 = []
xeUtils.each(treeIndeterminateMaps, function (item2, rowid) {
if (item2) {
fullRest_1.push(item2)
if (fullDataRowIdData[rowid]) {
defRest_1.push(item2)
}
}
})
if (isFull) {
return fullRest_1
}
return defRest_1
}
return []
},
setCheckboxRow: function (rows, value2) {
return handleCheckedCheckboxRow(rows, value2, true)
},
isCheckedByCheckboxRow: function (row) {
var selectCheckboxMaps = reactData.selectCheckboxMaps
var checkboxOpts = computeCheckboxOpts.value
var checkField = checkboxOpts.checkField
if (checkField) {
return xeUtils.get(row, checkField)
}
return !!selectCheckboxMaps[getRowid($xetable, row)]
},
isIndeterminateByCheckboxRow: function (row) {
var treeIndeterminateMaps = reactData.treeIndeterminateMaps
return (
!!treeIndeterminateMaps[getRowid($xetable, row)] &&
!tableMethods.isCheckedByCheckboxRow(row)
)
},
toggleCheckboxRow: function (row) {
var selectCheckboxMaps = reactData.selectCheckboxMaps
var checkboxOpts = computeCheckboxOpts.value
var checkField = checkboxOpts.checkField
var value2 = checkField
? !xeUtils.get(row, checkField)
: !selectCheckboxMaps[getRowid($xetable, row)]
tablePrivateMethods.handleSelectRow({ row }, value2, true)
return nextTick()
},
setAllCheckboxRow: function (value2) {
return handleCheckedAllCheckboxRow(value2, true)
},
getRadioReserveRecord: function (isFull) {
var treeConfig = props2.treeConfig
var fullDataRowIdData = internalData.fullDataRowIdData,
radioReserveRow = internalData.radioReserveRow,
afterFullData = internalData.afterFullData
var radioOpts = computeRadioOpts.value
var treeOpts = computeTreeOpts.value
var childrenField = treeOpts.children || treeOpts.childrenField
if (radioOpts.reserve && radioReserveRow) {
var rowid_4 = getRowid($xetable, radioReserveRow)
if (isFull) {
if (!fullDataRowIdData[rowid_4]) {
return radioReserveRow
}
} else {
var rowkey_2 = getRowkey($xetable)
if (treeConfig) {
var matchObj = xeUtils.findTree(
afterFullData,
function (row) {
return rowid_4 === xeUtils.get(row, rowkey_2)
},
{ children: childrenField }
)
if (matchObj) {
return radioReserveRow
}
} else {
if (
!afterFullData.some(function (row) {
return rowid_4 === xeUtils.get(row, rowkey_2)
})
) {
return radioReserveRow
}
}
}
}
return null
},
clearRadioReserve: function () {
internalData.radioReserveRow = null
return nextTick()
},
getCheckboxReserveRecords: function (isFull) {
var treeConfig = props2.treeConfig
var afterFullData = internalData.afterFullData,
fullDataRowIdData = internalData.fullDataRowIdData,
checkboxReserveRowMap = internalData.checkboxReserveRowMap
var checkboxOpts = computeCheckboxOpts.value
var treeOpts = computeTreeOpts.value
var childrenField = treeOpts.children || treeOpts.childrenField
var reserveSelection = []
if (checkboxOpts.reserve) {
var afterFullIdMaps_1 = {}
if (treeConfig) {
xeUtils.eachTree(
afterFullData,
function (row) {
afterFullIdMaps_1[getRowid($xetable, row)] = 1
},
{ children: childrenField }
)
} else {
afterFullData.forEach(function (row) {
afterFullIdMaps_1[getRowid($xetable, row)] = 1
})
}
xeUtils.each(checkboxReserveRowMap, function (oldRow, oldRowid) {
if (oldRow) {
if (isFull) {
if (!fullDataRowIdData[oldRowid]) {
reserveSelection.push(oldRow)
}
} else {
if (!afterFullIdMaps_1[oldRowid]) {
reserveSelection.push(oldRow)
}
}
}
})
}
return reserveSelection
},
clearCheckboxReserve: function () {
internalData.checkboxReserveRowMap = {}
return nextTick()
},
toggleAllCheckboxRow: function () {
tablePrivateMethods.triggerCheckAllEvent(null, !reactData.isAllSelected)
return nextTick()
},
clearCheckboxRow: function () {
var treeConfig = props2.treeConfig
var tableFullData = internalData.tableFullData
var treeOpts = computeTreeOpts.value
var childrenField = treeOpts.children || treeOpts.childrenField
var checkboxOpts = computeCheckboxOpts.value
var checkField = checkboxOpts.checkField,
reserve = checkboxOpts.reserve
var indeterminateField =
checkboxOpts.indeterminateField || checkboxOpts.halfField
if (checkField) {
var handleClearChecked = function (item2) {
if (treeConfig && indeterminateField) {
xeUtils.set(item2, indeterminateField, false)
}
xeUtils.set(item2, checkField, false)
}
if (treeConfig) {
xeUtils.eachTree(tableFullData, handleClearChecked, {
children: childrenField,
})
} else {
tableFullData.forEach(handleClearChecked)
}
}
if (reserve) {
tableFullData.forEach(function (row) {
return handleCheckboxReserveRow(row, false)
})
}
reactData.isAllSelected = false
reactData.isIndeterminate = false
reactData.selectCheckboxMaps = {}
reactData.treeIndeterminateMaps = {}
return nextTick()
},
setCurrentRow: function (row) {
var rowOpts = computeRowOpts.value
var el2 = refElem.value
tableMethods.clearCurrentRow()
reactData.currentRow = row
if (rowOpts.isCurrent || props2.highlightCurrentRow) {
if (el2) {
xeUtils.arrayEach(
el2.querySelectorAll(
'[rowid="'.concat(getRowid($xetable, row), '"]')
),
function (elem) {
return addClass(elem, 'row--current')
}
)
}
}
return nextTick()
},
isCheckedByRadioRow: function (row) {
return $xetable.eqRow(reactData.selectRadioRow, row)
},
setRadioRow: function (row) {
return handleCheckedRadioRow(row, true)
},
clearCurrentRow: function () {
var el2 = refElem.value
reactData.currentRow = null
internalData.hoverRow = null
if (el2) {
xeUtils.arrayEach(
el2.querySelectorAll('.row--current'),
function (elem) {
return removeClass(elem, 'row--current')
}
)
}
return nextTick()
},
clearRadioRow: function () {
reactData.selectRadioRow = null
return nextTick()
},
getCurrentRecord: function () {
var rowOpts = computeRowOpts.value
return rowOpts.isCurrent || props2.highlightCurrentRow
? reactData.currentRow
: null
},
getRadioRecord: function (isFull) {
var fullDataRowIdData = internalData.fullDataRowIdData,
afterFullRowMaps = internalData.afterFullRowMaps
var selectRadioRow = reactData.selectRadioRow
if (selectRadioRow) {
var rowid = getRowid($xetable, selectRadioRow)
if (isFull) {
if (!fullDataRowIdData[rowid]) {
return selectRadioRow
}
} else {
if (afterFullRowMaps[rowid]) {
return selectRadioRow
}
}
}
return null
},
getCurrentColumn: function () {
var columnOpts = computeColumnOpts.value
return columnOpts.isCurrent || props2.highlightCurrentColumn
? reactData.currentColumn
: null
},
setCurrentColumn: function (fieldOrColumn) {
var column = handleFieldOrColumn($xetable, fieldOrColumn)
if (column) {
tableMethods.clearCurrentColumn()
reactData.currentColumn = column
}
return nextTick()
},
clearCurrentColumn: function () {
reactData.currentColumn = null
return nextTick()
},
sort: function (sortConfs, sortOrder) {
var sortOpts = computeSortOpts.value
var multiple = sortOpts.multiple,
remote = sortOpts.remote,
orders = sortOpts.orders
if (sortConfs) {
if (xeUtils.isString(sortConfs)) {
sortConfs = [{ field: sortConfs, order: sortOrder }]
}
}
if (!xeUtils.isArray(sortConfs)) {
sortConfs = [sortConfs]
}
if (sortConfs.length) {
if (!multiple) {
clearAllSort()
}
;(multiple ? sortConfs : [sortConfs[0]]).forEach(function (
confs,
index2
) {
var field2 = confs.field,
order2 = confs.order
var column = field2
if (xeUtils.isString(field2)) {
column = tableMethods.getColumnByField(field2)
}
if (column && column.sortable) {
if (orders.indexOf(order2) === -1) {
order2 = getNextSortOrder(column)
}
if (column.order !== order2) {
column.order = order2
}
column.sortTime = Date.now() + index2
}
})
if (!remote) {
tablePrivateMethods.handleTableData(true)
}
return nextTick().then(function () {
tableMethods.updateCellAreas()
return updateStyle2()
})
}
return nextTick()
},
clearSort: function (fieldOrColumn) {
var sortOpts = computeSortOpts.value
if (fieldOrColumn) {
var column = handleFieldOrColumn($xetable, fieldOrColumn)
if (column) {
column.order = null
}
} else {
clearAllSort()
}
if (!sortOpts.remote) {
tablePrivateMethods.handleTableData(true)
}
return nextTick().then(updateStyle2)
},
isSort: function (fieldOrColumn) {
if (fieldOrColumn) {
var column = handleFieldOrColumn($xetable, fieldOrColumn)
return column ? column.sortable && !!column.order : false
}
return tableMethods.getSortColumns().length > 0
},
getSortColumns: function () {
var sortOpts = computeSortOpts.value
var multiple = sortOpts.multiple,
chronological = sortOpts.chronological
var sortList2 = []
var tableFullColumn = internalData.tableFullColumn
tableFullColumn.forEach(function (column) {
var field2 = column.field,
order2 = column.order
if (column.sortable && order2) {
sortList2.push({
column,
field: field2,
property: field2,
order: order2,
sortTime: column.sortTime,
})
}
})
if (multiple && chronological && sortList2.length > 1) {
return xeUtils.orderBy(sortList2, 'sortTime')
}
return sortList2
},
closeFilter: function () {
var filterStore = reactData.filterStore
var column = filterStore.column,
visible = filterStore.visible
Object.assign(filterStore, {
isAllSelected: false,
isIndeterminate: false,
options: [],
visible: false,
})
if (visible) {
$xetable.dispatchEvent(
'filter-visible',
{
column,
property: column.field,
field: column.field,
filterList: $xetable.getCheckedFilters(),
visible: false,
},
null
)
}
return nextTick()
},
isActiveFilterByColumn: function (fieldOrColumn) {
var column = handleFieldOrColumn($xetable, fieldOrColumn)
if (column) {
return (
column.filters &&
column.filters.some(function (option2) {
return option2.checked
})
)
}
return $xetable.getCheckedFilters().length > 0
},
isFilter: function (fieldOrColumn) {
return tableMethods.isActiveFilterByColumn(fieldOrColumn)
},
isRowExpandLoaded: function (row) {
var fullAllDataRowIdData = internalData.fullAllDataRowIdData
var rest = fullAllDataRowIdData[getRowid($xetable, row)]
return rest && !!rest.expandLoaded
},
clearRowExpandLoaded: function (row) {
var rowExpandLazyLoadedMaps = reactData.rowExpandLazyLoadedMaps
var fullAllDataRowIdData = internalData.fullAllDataRowIdData
var expandOpts = computeExpandOpts.value
var lazy = expandOpts.lazy
var rowid = getRowid($xetable, row)
var rest = fullAllDataRowIdData[rowid]
if (lazy && rest) {
rest.expandLoaded = false
delete rowExpandLazyLoadedMaps[rowid]
}
return nextTick()
},
reloadRowExpand: function (row) {
var rowExpandLazyLoadedMaps = reactData.rowExpandLazyLoadedMaps
var expandOpts = computeExpandOpts.value
var lazy = expandOpts.lazy
var rowid = getRowid($xetable, row)
if (lazy && !rowExpandLazyLoadedMaps[rowid]) {
tableMethods.clearRowExpandLoaded(row).then(function () {
return handleAsyncRowExpand(row)
})
}
return nextTick()
},
reloadExpandContent: function (row) {
return tableMethods.reloadRowExpand(row)
},
toggleRowExpand: function (row) {
return tableMethods.setRowExpand(row, !tableMethods.isExpandByRow(row))
},
setAllRowExpand: function (expanded) {
var treeOpts = computeTreeOpts.value
var tableFullData = internalData.tableFullData,
tableFullTreeData = internalData.tableFullTreeData
var childrenField = treeOpts.children || treeOpts.childrenField
var expandedRows = []
if (props2.treeConfig) {
xeUtils.eachTree(
tableFullTreeData,
function (row) {
expandedRows.push(row)
},
{ children: childrenField }
)
} else {
expandedRows = tableFullData
}
return tableMethods.setRowExpand(expandedRows, expanded)
},
setRowExpand: function (rows, expanded) {
var rowExpandedMaps = reactData.rowExpandedMaps,
rowExpandLazyLoadedMaps = reactData.rowExpandLazyLoadedMaps,
column = reactData.expandColumn
var fullAllDataRowIdData = internalData.fullAllDataRowIdData
var rExpandedMaps = __assign({}, rowExpandedMaps)
var expandOpts = computeExpandOpts.value
var reserve = expandOpts.reserve,
lazy = expandOpts.lazy,
accordion = expandOpts.accordion,
toggleMethod = expandOpts.toggleMethod
var lazyRests = []
var columnIndex = tableMethods.getColumnIndex(column)
var $columnIndex = tableMethods.getVMColumnIndex(column)
if (rows) {
if (!xeUtils.isArray(rows)) {
rows = [rows]
}
if (accordion) {
rExpandedMaps = {}
rows = rows.slice(rows.length - 1, rows.length)
}
var validRows = toggleMethod
? rows.filter(function (row) {
return toggleMethod({
$table: $xetable,
expanded,
column,
columnIndex,
$columnIndex,
row,
rowIndex: tableMethods.getRowIndex(row),
$rowIndex: tableMethods.getVMRowIndex(row),
})
})
: rows
if (expanded) {
validRows.forEach(function (row) {
var rowid = getRowid($xetable, row)
if (!rExpandedMaps[rowid]) {
var rest = fullAllDataRowIdData[rowid]
var isLoad =
lazy && !rest.expandLoaded && !rowExpandLazyLoadedMaps[rowid]
if (isLoad) {
lazyRests.push(handleAsyncRowExpand(row))
} else {
rExpandedMaps[rowid] = row
}
}
})
} else {
validRows.forEach(function (item2) {
var rowid = getRowid($xetable, item2)
if (rExpandedMaps[rowid]) {
delete rExpandedMaps[rowid]
}
})
}
if (reserve) {
validRows.forEach(function (row) {
return handleRowExpandReserve(row, expanded)
})
}
}
reactData.rowExpandedMaps = rExpandedMaps
return Promise.all(lazyRests).then(function () {
return tableMethods.recalculate()
})
},
isExpandByRow: function (row) {
var rowExpandedMaps = reactData.rowExpandedMaps
var rowid = getRowid($xetable, row)
return !!rowExpandedMaps[rowid]
},
clearRowExpand: function () {
var tableFullData = internalData.tableFullData
var expandOpts = computeExpandOpts.value
var reserve = expandOpts.reserve
var expList = tableMethods.getRowExpandRecords()
reactData.rowExpandedMaps = {}
if (reserve) {
tableFullData.forEach(function (row) {
return handleRowExpandReserve(row, false)
})
}
return nextTick().then(function () {
if (expList.length) {
tableMethods.recalculate()
}
})
},
clearRowExpandReserve: function () {
internalData.rowExpandedReserveRowMap = {}
return nextTick()
},
getRowExpandRecords: function () {
var rest = []
xeUtils.each(reactData.rowExpandedMaps, function (item2) {
if (item2) {
rest.push(item2)
}
})
return rest
},
getTreeExpandRecords: function () {
var rest = []
xeUtils.each(reactData.treeExpandedMaps, function (item2) {
if (item2) {
rest.push(item2)
}
})
return rest
},
isTreeExpandLoaded: function (row) {
var fullAllDataRowIdData = internalData.fullAllDataRowIdData
var rest = fullAllDataRowIdData[getRowid($xetable, row)]
return rest && !!rest.treeLoaded
},
clearTreeExpandLoaded: function (row) {
var treeExpandedMaps = reactData.treeExpandedMaps
var fullAllDataRowIdData = internalData.fullAllDataRowIdData
var treeOpts = computeTreeOpts.value
var transform3 = treeOpts.transform,
lazy = treeOpts.lazy
var rowid = getRowid($xetable, row)
var rest = fullAllDataRowIdData[rowid]
if (lazy && rest) {
rest.treeLoaded = false
if (treeExpandedMaps[rowid]) {
delete treeExpandedMaps[rowid]
}
}
if (transform3) {
handleVirtualTreeToList()
return tablePrivateMethods.handleTableData()
}
return nextTick()
},
reloadTreeExpand: function (row) {
var treeExpandLazyLoadedMaps = reactData.treeExpandLazyLoadedMaps
var treeOpts = computeTreeOpts.value
var hasChildField = treeOpts.hasChild || treeOpts.hasChildField
var transform3 = treeOpts.transform,
lazy = treeOpts.lazy
var rowid = getRowid($xetable, row)
if (lazy && row[hasChildField] && !treeExpandLazyLoadedMaps[rowid]) {
tableMethods
.clearTreeExpandLoaded(row)
.then(function () {
return handleAsyncTreeExpandChilds(row)
})
.then(function () {
if (transform3) {
handleVirtualTreeToList()
return tablePrivateMethods.handleTableData()
}
})
.then(function () {
return tableMethods.recalculate()
})
}
return nextTick()
},
reloadTreeChilds: function (row) {
return tableMethods.reloadTreeExpand(row)
},
toggleTreeExpand: function (row) {
return tableMethods.setTreeExpand(
row,
!tableMethods.isTreeExpandByRow(row)
)
},
setAllTreeExpand: function (expanded) {
var tableFullData = internalData.tableFullData
var treeOpts = computeTreeOpts.value
var transform3 = treeOpts.transform,
lazy = treeOpts.lazy
var childrenField = treeOpts.children || treeOpts.childrenField
var expandeds = []
xeUtils.eachTree(
tableFullData,
function (row) {
var rowChildren = row[childrenField]
if (lazy || (rowChildren && rowChildren.length)) {
expandeds.push(row)
}
},
{ children: childrenField }
)
return tableMethods
.setTreeExpand(expandeds, expanded)
.then(function () {
if (transform3) {
handleVirtualTreeToList()
return tableMethods.recalculate()
}
})
},
setTreeExpand: function (rows, expanded) {
var treeOpts = computeTreeOpts.value
var transform3 = treeOpts.transform
if (rows) {
if (!xeUtils.isArray(rows)) {
rows = [rows]
}
if (rows.length) {
if (transform3) {
return handleVirtualTreeExpand(rows, expanded)
} else {
return handleBaseTreeExpand(rows, expanded)
}
}
}
return nextTick()
},
isTreeExpandByRow: function (row) {
var treeExpandedMaps = reactData.treeExpandedMaps
return !!treeExpandedMaps[getRowid($xetable, row)]
},
clearTreeExpand: function () {
var tableFullTreeData = internalData.tableFullTreeData
var treeOpts = computeTreeOpts.value
var childrenField = treeOpts.children || treeOpts.childrenField
var transform3 = treeOpts.transform,
reserve = treeOpts.reserve
var expList = tableMethods.getTreeExpandRecords()
reactData.treeExpandedMaps = {}
if (reserve) {
xeUtils.eachTree(
tableFullTreeData,
function (row) {
return handleTreeExpandReserve(row, false)
},
{ children: childrenField }
)
}
return tablePrivateMethods
.handleTableData()
.then(function () {
if (transform3) {
handleVirtualTreeToList()
return tablePrivateMethods.handleTableData()
}
})
.then(function () {
if (expList.length) {
return tableMethods.recalculate()
}
})
},
clearTreeExpandReserve: function () {
internalData.treeExpandedReserveRowMap = {}
return nextTick()
},
getScroll: function () {
var scrollXLoad = reactData.scrollXLoad,
scrollYLoad = reactData.scrollYLoad
var tableBody = refTableBody.value
var bodyElem = tableBody.$el
return {
virtualX: scrollXLoad,
virtualY: scrollYLoad,
scrollTop: bodyElem.scrollTop,
scrollLeft: bodyElem.scrollLeft,
}
},
scrollTo: function (scrollLeft, scrollTop) {
var tableBody = refTableBody.value
var tableFooter = refTableFooter.value
var rightBody = refTableRightBody.value
var tableBodyElem = tableBody ? tableBody.$el : null
var rightBodyElem = rightBody ? rightBody.$el : null
var tableFooterElem = tableFooter ? tableFooter.$el : null
if (xeUtils.isNumber(scrollLeft)) {
setScrollLeft(tableFooterElem || tableBodyElem, scrollLeft)
}
if (xeUtils.isNumber(scrollTop)) {
setScrollTop(rightBodyElem || tableBodyElem, scrollTop)
}
if (reactData.scrollXLoad || reactData.scrollYLoad) {
return new Promise(function (resolve2) {
setTimeout(function () {
nextTick(function () {
resolve2()
})
}, 50)
})
}
return nextTick()
},
scrollToRow: function (row, fieldOrColumn) {
var rest = []
if (row) {
if (props2.treeConfig) {
rest.push(tablePrivateMethods.scrollToTreeRow(row))
} else {
rest.push(rowToVisible($xetable, row))
}
}
if (fieldOrColumn) {
rest.push(tableMethods.scrollToColumn(fieldOrColumn))
}
return Promise.all(rest)
},
scrollToColumn: function (fieldOrColumn) {
var fullColumnIdData = internalData.fullColumnIdData
var column = handleFieldOrColumn($xetable, fieldOrColumn)
if (column && fullColumnIdData[column.id]) {
return colToVisible($xetable, column)
}
return nextTick()
},
clearScroll: function () {
var scrollXStore = internalData.scrollXStore,
scrollYStore = internalData.scrollYStore
var tableBody = refTableBody.value
var tableFooter = refTableFooter.value
var rightBody = refTableRightBody.value
var tableBodyElem = tableBody ? tableBody.$el : null
var rightBodyElem = rightBody ? rightBody.$el : null
var tableFooterElem = tableFooter ? tableFooter.$el : null
if (rightBodyElem) {
restoreScrollListener(rightBodyElem)
rightBodyElem.scrollTop = 0
}
if (tableFooterElem) {
tableFooterElem.scrollLeft = 0
}
if (tableBodyElem) {
restoreScrollListener(tableBodyElem)
tableBodyElem.scrollTop = 0
tableBodyElem.scrollLeft = 0
}
scrollXStore.startIndex = 0
scrollYStore.startIndex = 0
return nextTick()
},
updateFooter: function () {
var showFooter = props2.showFooter,
footerMethod = props2.footerMethod
var visibleColumn = internalData.visibleColumn,
afterFullData = internalData.afterFullData
if (showFooter && footerMethod) {
reactData.footerTableData = visibleColumn.length
? footerMethod({
columns: visibleColumn,
data: afterFullData,
$table: $xetable,
$grid: $xegrid,
})
: []
}
return nextTick()
},
updateStatus: function (slotParams, cellValue) {
var customVal = !xeUtils.isUndefined(cellValue)
return nextTick().then(function () {
var editRules = props2.editRules
var validStore = reactData.validStore
var tableBody = refTableBody.value
if (slotParams && tableBody && editRules) {
var row_1 = slotParams.row,
column_3 = slotParams.column
var type4 = 'change'
if ($xetable.hasCellRules) {
if ($xetable.hasCellRules(type4, row_1, column_3)) {
var cell_1 = tablePrivateMethods.getCell(row_1, column_3)
if (cell_1) {
return $xetable
.validCellRules(type4, row_1, column_3, cellValue)
.then(function () {
if (customVal && validStore.visible) {
setCellValue(row_1, column_3, cellValue)
}
$xetable.clearValidate(row_1, column_3)
})
.catch(function (_a2) {
var rule2 = _a2.rule
if (customVal) {
setCellValue(row_1, column_3, cellValue)
}
$xetable.showValidTooltip({
rule: rule2,
row: row_1,
column: column_3,
cell: cell_1,
})
})
}
}
}
}
})
},
setMergeCells: function (merges) {
if (props2.spanMethod) {
errLog('vxe.error.errConflicts', ['merge-cells', 'span-method'])
}
setMerges(merges, reactData.mergeList, internalData.afterFullData)
return nextTick().then(function () {
return tableMethods.updateCellAreas()
})
},
removeMergeCells: function (merges) {
if (props2.spanMethod) {
errLog('vxe.error.errConflicts', ['merge-cells', 'span-method'])
}
var rest = removeMerges(
merges,
reactData.mergeList,
internalData.afterFullData
)
return nextTick().then(function () {
tableMethods.updateCellAreas()
return rest
})
},
getMergeCells: function () {
return reactData.mergeList.slice(0)
},
clearMergeCells: function () {
reactData.mergeList = []
return nextTick()
},
setMergeFooterItems: function (merges) {
if (props2.footerSpanMethod) {
errLog('vxe.error.errConflicts', [
'merge-footer-items',
'footer-span-method',
])
}
setMerges(merges, reactData.mergeFooterList)
return nextTick().then(function () {
return tableMethods.updateCellAreas()
})
},
removeMergeFooterItems: function (merges) {
if (props2.footerSpanMethod) {
errLog('vxe.error.errConflicts', [
'merge-footer-items',
'footer-span-method',
])
}
var rest = removeMerges(merges, reactData.mergeFooterList)
return nextTick().then(function () {
tableMethods.updateCellAreas()
return rest
})
},
getMergeFooterItems: function () {
return reactData.mergeFooterList.slice(0)
},
clearMergeFooterItems: function () {
reactData.mergeFooterList = []
return nextTick()
},
updateCellAreas: function () {
var mouseConfig = props2.mouseConfig
var mouseOpts = computeMouseOpts.value
if (mouseConfig && mouseOpts.area && $xetable.handleUpdateCellAreas) {
return $xetable.handleUpdateCellAreas()
}
return nextTick()
},
focus: function () {
internalData.isActivated = true
return nextTick()
},
blur: function () {
internalData.isActivated = false
return nextTick()
},
connect: function ($toolbar) {
if ($toolbar) {
$xetoolbar = $toolbar
$xetoolbar.syncUpdate({
collectColumn: internalData.collectColumn,
$table: $xetable,
})
} else {
errLog('vxe.error.barUnableLink')
}
return nextTick()
},
}
var handleGlobalMousedownEvent = function (evnt) {
var editStore = reactData.editStore,
ctxMenuStore = reactData.ctxMenuStore,
filterStore = reactData.filterStore
var mouseConfig = props2.mouseConfig,
editRules = props2.editRules
var el2 = refElem.value
var editOpts = computeEditOpts.value
var validOpts = computeValidOpts.value
var actived = editStore.actived
var $validTooltip = refValidTooltip.value
var tableFilter = refTableFilter.value
var tableMenu = refTableMenu.value
if (tableFilter) {
if (getEventTargetNode(evnt, el2, 'vxe-cell--filter').flag);
else if (getEventTargetNode(evnt, tableFilter.$el).flag);
else {
if (
!getEventTargetNode(evnt, document.body, 'vxe-table--ignore-clear')
.flag
) {
tablePrivateMethods.preventEvent(
evnt,
'event.clearFilter',
filterStore.args,
tableMethods.closeFilter
)
}
}
}
if (actived.row) {
if (!(editOpts.autoClear === false)) {
var cell = actived.args.cell
if (!cell || !getEventTargetNode(evnt, cell).flag) {
if (
$validTooltip &&
getEventTargetNode(evnt, $validTooltip.$el).flag
);
else if (
!internalData._lastCallTime ||
internalData._lastCallTime + 50 < Date.now()
) {
if (
!getEventTargetNode(
evnt,
document.body,
'vxe-table--ignore-clear'
).flag
) {
tablePrivateMethods.preventEvent(
evnt,
'event.clearActived',
actived.args,
function () {
var isClear
if (editOpts.mode === 'row') {
var rowTargetNode = getEventTargetNode(
evnt,
el2,
'vxe-body--row'
)
var rowNodeRest = rowTargetNode.flag
? tableMethods.getRowNode(rowTargetNode.targetElem)
: null
isClear = rowNodeRest
? !$xetable.eqRow(rowNodeRest.item, actived.args.row)
: false
} else {
isClear = !getEventTargetNode(evnt, el2, 'col--edit').flag
}
if (!isClear) {
isClear = getEventTargetNode(
evnt,
el2,
'vxe-header--row'
).flag
}
if (!isClear) {
isClear = getEventTargetNode(
evnt,
el2,
'vxe-footer--row'
).flag
}
if (!isClear && props2.height && !reactData.overflowY) {
var bodyWrapperElem = evnt.target
if (
hasClass(bodyWrapperElem, 'vxe-table--body-wrapper')
) {
isClear = evnt.offsetY < bodyWrapperElem.clientHeight
}
}
if (isClear || !getEventTargetNode(evnt, el2).flag) {
setTimeout(function () {
return $xetable.clearEdit(evnt)
})
}
}
)
}
}
}
}
} else if (mouseConfig) {
if (
!getEventTargetNode(evnt, el2).flag &&
!(
$xegrid &&
getEventTargetNode(evnt, $xegrid.getRefMaps().refElem.value).flag
) &&
!(
tableMenu &&
getEventTargetNode(evnt, tableMenu.getRefMaps().refElem.value).flag
) &&
!(
$xetoolbar &&
getEventTargetNode(evnt, $xetoolbar.getRefMaps().refElem.value).flag
)
) {
$xetable.clearSelected()
if ($xetable.clearCellAreas) {
if (
!getEventTargetNode(
evnt,
document.body,
'vxe-table--ignore-areas-clear'
).flag
) {
tablePrivateMethods.preventEvent(
evnt,
'event.clearAreas',
{},
function () {
$xetable.clearCellAreas()
$xetable.clearCopyCellArea()
}
)
}
}
}
}
if ($xetable.closeMenu) {
if (
ctxMenuStore.visible &&
tableMenu &&
!getEventTargetNode(evnt, tableMenu.getRefMaps().refElem.value).flag
) {
$xetable.closeMenu()
}
}
var isActivated = getEventTargetNode(
evnt,
$xegrid ? $xegrid.getRefMaps().refElem.value : el2
).flag
if (!isActivated && editRules && validOpts.autoClear) {
reactData.validErrorMaps = {}
}
internalData.isActivated = isActivated
}
var handleGlobalBlurEvent = function () {
tableMethods.closeFilter()
if ($xetable.closeMenu) {
$xetable.closeMenu()
}
}
var handleGlobalMousewheelEvent = function () {
tableMethods.closeTooltip()
if ($xetable.closeMenu) {
$xetable.closeMenu()
}
}
var keydownEvent = function (evnt) {
var mouseConfig = props2.mouseConfig,
keyboardConfig = props2.keyboardConfig
var filterStore = reactData.filterStore,
ctxMenuStore = reactData.ctxMenuStore,
editStore = reactData.editStore
var mouseOpts = computeMouseOpts.value
var keyboardOpts = computeKeyboardOpts.value
var actived = editStore.actived
var isEsc = hasEventKey(evnt, EVENT_KEYS.ESCAPE)
if (isEsc) {
tablePrivateMethods.preventEvent(
evnt,
'event.keydown',
null,
function () {
tableMethods.dispatchEvent('keydown-start', {}, evnt)
if (
keyboardConfig &&
mouseConfig &&
mouseOpts.area &&
$xetable.handleKeyboardEvent
) {
$xetable.handleKeyboardEvent(evnt)
} else if (
actived.row ||
filterStore.visible ||
ctxMenuStore.visible
) {
evnt.stopPropagation()
if ($xetable.closeMenu) {
$xetable.closeMenu()
}
tableMethods.closeFilter()
if (keyboardConfig && keyboardOpts.isEsc) {
if (actived.row) {
var params_1 = actived.args
$xetable.clearEdit(evnt)
if (mouseOpts.selected) {
nextTick(function () {
return $xetable.handleSelected(params_1, evnt)
})
}
}
}
}
tableMethods.dispatchEvent('keydown', {}, evnt)
tableMethods.dispatchEvent('keydown-end', {}, evnt)
}
)
}
}
var handleGlobalKeydownEvent = function (evnt) {
if (internalData.isActivated) {
tablePrivateMethods.preventEvent(
evnt,
'event.keydown',
null,
function () {
var mouseConfig = props2.mouseConfig,
keyboardConfig = props2.keyboardConfig,
treeConfig = props2.treeConfig,
editConfig = props2.editConfig,
highlightCurrentRow = props2.highlightCurrentRow
var ctxMenuStore = reactData.ctxMenuStore,
editStore = reactData.editStore,
currentRow = reactData.currentRow
var isMenu = computeIsMenu.value
var bodyMenu = computeBodyMenu.value
var keyboardOpts = computeKeyboardOpts.value
var mouseOpts = computeMouseOpts.value
var editOpts = computeEditOpts.value
var treeOpts = computeTreeOpts.value
var menuList = computeMenuList.value
var rowOpts = computeRowOpts.value
var selected = editStore.selected,
actived = editStore.actived
var childrenField = treeOpts.children || treeOpts.childrenField
var keyCode = evnt.keyCode
var isEsc = hasEventKey(evnt, EVENT_KEYS.ESCAPE)
var isBack = hasEventKey(evnt, EVENT_KEYS.BACKSPACE)
var isTab = hasEventKey(evnt, EVENT_KEYS.TAB)
var isEnter = hasEventKey(evnt, EVENT_KEYS.ENTER)
var isSpacebar = hasEventKey(evnt, EVENT_KEYS.SPACEBAR)
var isLeftArrow = hasEventKey(evnt, EVENT_KEYS.ARROW_LEFT)
var isUpArrow = hasEventKey(evnt, EVENT_KEYS.ARROW_UP)
var isRightArrow = hasEventKey(evnt, EVENT_KEYS.ARROW_RIGHT)
var isDwArrow = hasEventKey(evnt, EVENT_KEYS.ARROW_DOWN)
var isDel = hasEventKey(evnt, EVENT_KEYS.DELETE)
var isF2 = hasEventKey(evnt, EVENT_KEYS.F2)
var isContextMenu = hasEventKey(evnt, EVENT_KEYS.CONTEXT_MENU)
var hasMetaKey = evnt.metaKey
var hasCtrlKey = evnt.ctrlKey
var hasShiftKey = evnt.shiftKey
var isAltKey = evnt.altKey
var operArrow =
isLeftArrow || isUpArrow || isRightArrow || isDwArrow
var operCtxMenu =
isMenu &&
ctxMenuStore.visible &&
(isEnter || isSpacebar || operArrow)
var isEditStatus =
isEnableConf(editConfig) && actived.column && actived.row
var params2
if (operCtxMenu) {
evnt.preventDefault()
if (
ctxMenuStore.showChild &&
hasChildrenList(ctxMenuStore.selected)
) {
$xetable.moveCtxMenu(
evnt,
ctxMenuStore,
'selectChild',
isLeftArrow,
false,
ctxMenuStore.selected.children
)
} else {
$xetable.moveCtxMenu(
evnt,
ctxMenuStore,
'selected',
isRightArrow,
true,
menuList
)
}
} else if (
keyboardConfig &&
mouseConfig &&
mouseOpts.area &&
$xetable.handleKeyboardEvent
) {
$xetable.handleKeyboardEvent(evnt)
} else if (isEsc) {
if ($xetable.closeMenu) {
$xetable.closeMenu()
}
tableMethods.closeFilter()
if (keyboardConfig && keyboardOpts.isEsc) {
if (actived.row) {
var params_2 = actived.args
$xetable.clearEdit(evnt)
if (mouseOpts.selected) {
nextTick(function () {
return $xetable.handleSelected(params_2, evnt)
})
}
}
}
} else if (
isSpacebar &&
keyboardConfig &&
keyboardOpts.isChecked &&
selected.row &&
selected.column &&
(selected.column.type === 'checkbox' ||
selected.column.type === 'radio')
) {
evnt.preventDefault()
if (selected.column.type === 'checkbox') {
tablePrivateMethods.handleToggleCheckRowEvent(
evnt,
selected.args
)
} else {
tablePrivateMethods.triggerRadioRowEvent(evnt, selected.args)
}
} else if (isF2 && isEnableConf(editConfig)) {
if (!isEditStatus) {
if (selected.row && selected.column) {
evnt.preventDefault()
$xetable.handleActived(selected.args, evnt)
}
}
} else if (isContextMenu) {
internalData._keyCtx =
selected.row && selected.column && bodyMenu.length
clearTimeout(keyCtxTimeout)
keyCtxTimeout = setTimeout(function () {
internalData._keyCtx = false
}, 1e3)
} else if (
isEnter &&
!isAltKey &&
keyboardConfig &&
keyboardOpts.isEnter &&
(selected.row ||
actived.row ||
(treeConfig &&
(rowOpts.isCurrent || highlightCurrentRow) &&
currentRow))
) {
if (hasCtrlKey) {
if (actived.row) {
params2 = actived.args
$xetable.clearEdit(evnt)
if (mouseOpts.selected) {
nextTick(function () {
return $xetable.handleSelected(params2, evnt)
})
}
}
} else {
if (selected.row || actived.row) {
var targetArgs = selected.row ? selected.args : actived.args
if (hasShiftKey) {
if (keyboardOpts.enterToTab) {
$xetable.moveTabSelected(targetArgs, hasShiftKey, evnt)
} else {
$xetable.moveSelected(
targetArgs,
isLeftArrow,
true,
isRightArrow,
false,
evnt
)
}
} else {
if (keyboardOpts.enterToTab) {
$xetable.moveTabSelected(targetArgs, hasShiftKey, evnt)
} else {
$xetable.moveSelected(
targetArgs,
isLeftArrow,
false,
isRightArrow,
true,
evnt
)
}
}
} else if (
treeConfig &&
(rowOpts.isCurrent || highlightCurrentRow) &&
currentRow
) {
var childrens = currentRow[childrenField]
if (childrens && childrens.length) {
evnt.preventDefault()
var targetRow_1 = childrens[0]
params2 = {
$table: $xetable,
row: targetRow_1,
rowIndex: tableMethods.getRowIndex(targetRow_1),
$rowIndex: tableMethods.getVMRowIndex(targetRow_1),
}
tableMethods
.setTreeExpand(currentRow, true)
.then(function () {
return tableMethods.scrollToRow(targetRow_1)
})
.then(function () {
return tablePrivateMethods.triggerCurrentRowEvent(
evnt,
params2
)
})
}
}
}
} else if (operArrow && keyboardConfig && keyboardOpts.isArrow) {
if (!isEditStatus) {
if (selected.row && selected.column) {
$xetable.moveSelected(
selected.args,
isLeftArrow,
isUpArrow,
isRightArrow,
isDwArrow,
evnt
)
} else if (
(isUpArrow || isDwArrow) &&
(rowOpts.isCurrent || highlightCurrentRow)
) {
$xetable.moveCurrentRow(isUpArrow, isDwArrow, evnt)
}
}
} else if (isTab && keyboardConfig && keyboardOpts.isTab) {
if (selected.row || selected.column) {
$xetable.moveTabSelected(selected.args, hasShiftKey, evnt)
} else if (actived.row || actived.column) {
$xetable.moveTabSelected(actived.args, hasShiftKey, evnt)
}
} else if (
keyboardConfig &&
isEnableConf(editConfig) &&
(isDel ||
(treeConfig &&
(rowOpts.isCurrent || highlightCurrentRow) &&
currentRow
? isBack && keyboardOpts.isArrow
: isBack))
) {
if (!isEditStatus) {
var delMethod = keyboardOpts.delMethod,
backMethod = keyboardOpts.backMethod
if (keyboardOpts.isDel && (selected.row || selected.column)) {
if (delMethod) {
delMethod({
row: selected.row,
rowIndex: tableMethods.getRowIndex(selected.row),
column: selected.column,
columnIndex: tableMethods.getColumnIndex(selected.column),
$table: $xetable,
})
} else {
setCellValue(selected.row, selected.column, null)
}
if (isBack) {
if (backMethod) {
backMethod({
row: selected.row,
rowIndex: tableMethods.getRowIndex(selected.row),
column: selected.column,
columnIndex: tableMethods.getColumnIndex(
selected.column
),
$table: $xetable,
})
} else {
$xetable.handleActived(selected.args, evnt)
}
} else if (isDel) {
tableMethods.updateFooter()
}
} else if (
isBack &&
keyboardOpts.isArrow &&
treeConfig &&
(rowOpts.isCurrent || highlightCurrentRow) &&
currentRow
) {
var parentRow_1 = xeUtils.findTree(
internalData.afterFullData,
function (item2) {
return item2 === currentRow
},
{ children: childrenField }
).parent
if (parentRow_1) {
evnt.preventDefault()
params2 = {
$table: $xetable,
row: parentRow_1,
rowIndex: tableMethods.getRowIndex(parentRow_1),
$rowIndex: tableMethods.getVMRowIndex(parentRow_1),
}
tableMethods
.setTreeExpand(parentRow_1, false)
.then(function () {
return tableMethods.scrollToRow(parentRow_1)
})
.then(function () {
return tablePrivateMethods.triggerCurrentRowEvent(
evnt,
params2
)
})
}
}
}
} else if (
keyboardConfig &&
isEnableConf(editConfig) &&
keyboardOpts.isEdit &&
!hasCtrlKey &&
!hasMetaKey &&
(isSpacebar ||
(keyCode >= 48 && keyCode <= 57) ||
(keyCode >= 65 && keyCode <= 90) ||
(keyCode >= 96 && keyCode <= 111) ||
(keyCode >= 186 && keyCode <= 192) ||
(keyCode >= 219 && keyCode <= 222))
) {
var editMethod = keyboardOpts.editMethod
if (
selected.column &&
selected.row &&
isEnableConf(selected.column.editRender)
) {
var beforeEditMethod =
editOpts.beforeEditMethod || editOpts.activeMethod
if (
!beforeEditMethod ||
beforeEditMethod(
__assign(__assign({}, selected.args), { $table: $xetable })
)
) {
if (editMethod) {
editMethod({
row: selected.row,
rowIndex: tableMethods.getRowIndex(selected.row),
column: selected.column,
columnIndex: tableMethods.getColumnIndex(selected.column),
$table: $xetable,
$grid: $xegrid,
})
} else {
setCellValue(selected.row, selected.column, null)
$xetable.handleActived(selected.args, evnt)
}
}
}
}
tableMethods.dispatchEvent('keydown', {}, evnt)
}
)
}
}
var handleGlobalPasteEvent = function (evnt) {
var keyboardConfig = props2.keyboardConfig,
mouseConfig = props2.mouseConfig
var editStore = reactData.editStore,
filterStore = reactData.filterStore
var isActivated = internalData.isActivated
var mouseOpts = computeMouseOpts.value
var keyboardOpts = computeKeyboardOpts.value
var actived = editStore.actived
if (isActivated && !filterStore.visible) {
if (!(actived.row || actived.column)) {
if (
keyboardConfig &&
keyboardOpts.isClip &&
mouseConfig &&
mouseOpts.area &&
$xetable.handlePasteCellAreaEvent
) {
$xetable.handlePasteCellAreaEvent(evnt)
}
}
tableMethods.dispatchEvent('paste', {}, evnt)
}
}
var handleGlobalCopyEvent = function (evnt) {
var keyboardConfig = props2.keyboardConfig,
mouseConfig = props2.mouseConfig
var editStore = reactData.editStore,
filterStore = reactData.filterStore
var isActivated = internalData.isActivated
var mouseOpts = computeMouseOpts.value
var keyboardOpts = computeKeyboardOpts.value
var actived = editStore.actived
if (isActivated && !filterStore.visible) {
if (!(actived.row || actived.column)) {
if (
keyboardConfig &&
keyboardOpts.isClip &&
mouseConfig &&
mouseOpts.area &&
$xetable.handleCopyCellAreaEvent
) {
$xetable.handleCopyCellAreaEvent(evnt)
}
}
tableMethods.dispatchEvent('copy', {}, evnt)
}
}
var handleGlobalCutEvent = function (evnt) {
var keyboardConfig = props2.keyboardConfig,
mouseConfig = props2.mouseConfig
var editStore = reactData.editStore,
filterStore = reactData.filterStore
var isActivated = internalData.isActivated
var mouseOpts = computeMouseOpts.value
var keyboardOpts = computeKeyboardOpts.value
var actived = editStore.actived
if (isActivated && !filterStore.visible) {
if (!(actived.row || actived.column)) {
if (
keyboardConfig &&
keyboardOpts.isClip &&
mouseConfig &&
mouseOpts.area &&
$xetable.handleCutCellAreaEvent
) {
$xetable.handleCutCellAreaEvent(evnt)
}
}
tableMethods.dispatchEvent('cut', {}, evnt)
}
}
var handleGlobalResizeEvent = function () {
if ($xetable.closeMenu) {
$xetable.closeMenu()
}
tableMethods.updateCellAreas()
tableMethods.recalculate(true)
}
var handleTargetEnterEvent = function (isClear) {
var $tooltip = refTooltip.value
clearTimeout(internalData.tooltipTimeout)
if (isClear) {
tableMethods.closeTooltip()
} else {
if ($tooltip) {
$tooltip.setActived(true)
}
}
}
var handleTooltip = function (evnt, cell, overflowElem, tipElem, params2) {
params2.cell = cell
var tooltipStore = reactData.tooltipStore
var tooltipOpts = computeTooltipOpts.value
var column = params2.column,
row = params2.row
var showAll2 = tooltipOpts.showAll,
contentMethod = tooltipOpts.contentMethod
var customContent = contentMethod ? contentMethod(params2) : null
var useCustom = contentMethod && !xeUtils.eqNull(customContent)
var content2 = useCustom
? customContent
: xeUtils
.toString(
column.type === 'html'
? overflowElem.innerText
: overflowElem.textContent
)
.trim()
var isCellOverflow = overflowElem.scrollWidth > overflowElem.clientWidth
if (content2 && (showAll2 || useCustom || isCellOverflow)) {
Object.assign(tooltipStore, {
row,
column,
visible: true,
currOpts: null,
})
nextTick(function () {
var $tooltip = refTooltip.value
if ($tooltip) {
$tooltip.open(
isCellOverflow ? overflowElem : tipElem || overflowElem,
formatText(content2)
)
}
})
}
return nextTick()
}
tablePrivateMethods = {
getSetupOptions: function () {
return GlobalConfig
},
updateAfterDataIndex,
callSlot: function (slotFunc, params2) {
if (slotFunc) {
if ($xegrid) {
return $xegrid.callSlot(slotFunc, params2)
}
if (xeUtils.isFunction(slotFunc)) {
return getSlotVNs(slotFunc(params2))
}
}
return []
},
getParentElem: function () {
var el2 = refElem.value
if ($xegrid) {
var gridEl = $xegrid.getRefMaps().refElem.value
return gridEl ? gridEl.parentNode : null
}
return el2 ? el2.parentNode : null
},
getParentHeight: function () {
var height = props2.height
var el2 = refElem.value
if (el2) {
var parentElem = el2.parentNode
var parentPaddingSize =
height === 'auto' ? getPaddingTopBottomSize(parentElem) : 0
return Math.floor(
$xegrid
? $xegrid.getParentHeight()
: xeUtils.toNumber(getComputedStyle(parentElem).height) -
parentPaddingSize
)
}
return 0
},
getExcludeHeight: function () {
return $xegrid ? $xegrid.getExcludeHeight() : 0
},
defineField: function (records) {
var treeConfig = props2.treeConfig
var expandOpts = computeExpandOpts.value
var treeOpts = computeTreeOpts.value
var radioOpts = computeRadioOpts.value
var checkboxOpts = computeCheckboxOpts.value
var childrenField = treeOpts.children || treeOpts.childrenField
var rowkey = getRowkey($xetable)
if (!xeUtils.isArray(records)) {
records = [records]
}
return records.map(function (record) {
internalData.tableFullColumn.forEach(function (column) {
var field2 = column.field,
editRender = column.editRender
if (field2 && !xeUtils.has(record, field2) && !record[field2]) {
var cellValue = null
if (editRender) {
var defaultValue = editRender.defaultValue
if (xeUtils.isFunction(defaultValue)) {
cellValue = defaultValue({ column })
} else if (!xeUtils.isUndefined(defaultValue)) {
cellValue = defaultValue
}
}
xeUtils.set(record, field2, cellValue)
}
})
var otherFields = [
radioOpts.labelField,
checkboxOpts.checkField,
checkboxOpts.labelField,
expandOpts.labelField,
]
otherFields.forEach(function (key2) {
if (key2 && eqEmptyValue(xeUtils.get(record, key2))) {
xeUtils.set(record, key2, null)
}
})
if (
treeConfig &&
treeOpts.lazy &&
xeUtils.isUndefined(record[childrenField])
) {
record[childrenField] = null
}
if (eqEmptyValue(xeUtils.get(record, rowkey))) {
xeUtils.set(record, rowkey, getRowUniqueId())
}
return record
})
},
handleTableData: function (force) {
var scrollYLoad = reactData.scrollYLoad
var scrollYStore = internalData.scrollYStore,
fullDataRowIdData = internalData.fullDataRowIdData
var fullList = internalData.afterFullData
if (force) {
updateAfterFullData()
fullList = handleVirtualTreeToList()
}
var tableData2 = scrollYLoad
? fullList.slice(scrollYStore.startIndex, scrollYStore.endIndex)
: fullList.slice(0)
tableData2.forEach(function (row, $index) {
var rowid = getRowid($xetable, row)
var rest = fullDataRowIdData[rowid]
if (rest) {
rest.$index = $index
}
})
reactData.tableData = tableData2
return nextTick()
},
cacheRowMap: function (isSource) {
var treeConfig = props2.treeConfig
var treeOpts = computeTreeOpts.value
var fullDataRowIdData = internalData.fullDataRowIdData,
fullAllDataRowIdData = internalData.fullAllDataRowIdData,
tableFullData = internalData.tableFullData,
tableFullTreeData = internalData.tableFullTreeData
var childrenField = treeOpts.children || treeOpts.childrenField
var hasChildField = treeOpts.hasChild || treeOpts.hasChildField
var rowkey = getRowkey($xetable)
var isLazy = treeConfig && treeOpts.lazy
var handleRow = function (row, index2, items, path, parent2, nodes) {
var rowid = getRowid($xetable, row)
var seq = treeConfig && path ? toTreePathSeq(path) : index2 + 1
var level = nodes ? nodes.length - 1 : 0
if (eqEmptyValue(rowid)) {
rowid = getRowUniqueId()
xeUtils.set(row, rowkey, rowid)
}
if (
isLazy &&
row[hasChildField] &&
xeUtils.isUndefined(row[childrenField])
) {
row[childrenField] = null
}
var rest = {
row,
rowid,
seq,
index: treeConfig && parent2 ? -1 : index2,
_index: -1,
$index: -1,
items,
parent: parent2,
level,
}
if (isSource) {
fullDataRowIdData[rowid] = rest
}
fullAllDataRowIdData[rowid] = rest
}
if (isSource) {
fullDataRowIdData = internalData.fullDataRowIdData = {}
}
fullAllDataRowIdData = internalData.fullAllDataRowIdData = {}
if (treeConfig) {
xeUtils.eachTree(tableFullTreeData, handleRow, {
children: childrenField,
})
} else {
tableFullData.forEach(handleRow)
}
},
cacheSourceMap: function (fullData) {
var treeConfig = props2.treeConfig
var treeOpts = computeTreeOpts.value
var sourceDataRowIdData = internalData.sourceDataRowIdData
var sourceData = xeUtils.clone(fullData, true)
var rowkey = getRowkey($xetable)
sourceDataRowIdData = internalData.sourceDataRowIdData = {}
var handleSourceRow = function (row) {
var rowid = getRowid($xetable, row)
if (eqEmptyValue(rowid)) {
rowid = getRowUniqueId()
xeUtils.set(row, rowkey, rowid)
}
sourceDataRowIdData[rowid] = row
}
if (treeConfig) {
var childrenField = treeOpts.children || treeOpts.childrenField
xeUtils.eachTree(sourceData, handleSourceRow, {
children: treeOpts.transform
? treeOpts.mapChildrenField
: childrenField,
})
} else {
sourceData.forEach(handleSourceRow)
}
internalData.tableSourceData = sourceData
},
analyColumnWidth: function () {
var tableFullColumn = internalData.tableFullColumn
var columnOpts = computeColumnOpts.value
var defaultWidth = columnOpts.width,
defaultMinWidth = columnOpts.minWidth
var resizeList = []
var pxList = []
var pxMinList = []
var scaleList = []
var scaleMinList = []
var autoList = []
tableFullColumn.forEach(function (column) {
if (defaultWidth && !column.width) {
column.width = defaultWidth
}
if (defaultMinWidth && !column.minWidth) {
column.minWidth = defaultMinWidth
}
if (column.visible) {
if (column.resizeWidth) {
resizeList.push(column)
} else if (isPx(column.width)) {
pxList.push(column)
} else if (isScale(column.width)) {
scaleList.push(column)
} else if (isPx(column.minWidth)) {
pxMinList.push(column)
} else if (isScale(column.minWidth)) {
scaleMinList.push(column)
} else {
autoList.push(column)
}
}
})
Object.assign(reactData.columnStore, {
resizeList,
pxList,
pxMinList,
scaleList,
scaleMinList,
autoList,
})
},
saveCustomResizable: function (isReset) {
var id2 = props2.id,
customConfig = props2.customConfig
var customOpts = computeCustomOpts.value
var collectColumn = internalData.collectColumn
var storage2 = customOpts.storage
var isResizable = storage2 === true || (storage2 && storage2.resizable)
if (customConfig && isResizable) {
var columnWidthStorageMap = getCustomStorageMap(resizableStorageKey)
var columnWidthStorage_1
if (!id2) {
errLog('vxe.error.reqProp', ['id'])
return
}
if (!isReset) {
columnWidthStorage_1 = xeUtils.isPlainObject(
columnWidthStorageMap[id2]
)
? columnWidthStorageMap[id2]
: {}
xeUtils.eachTree(collectColumn, function (column) {
if (column.resizeWidth) {
var colKey = column.getKey()
if (colKey) {
columnWidthStorage_1[colKey] = column.renderWidth
}
}
})
}
columnWidthStorageMap[id2] = xeUtils.isEmpty(columnWidthStorage_1)
? void 0
: columnWidthStorage_1
localStorage.setItem(
resizableStorageKey,
xeUtils.toJSONString(columnWidthStorageMap)
)
}
},
saveCustomFixed: function () {
var id2 = props2.id,
customConfig = props2.customConfig
var collectColumn = internalData.collectColumn
var customOpts = computeCustomOpts.value
var storage2 = customOpts.storage
var isCustomFixed = storage2 === true || (storage2 && storage2.fixed)
if (customConfig && isCustomFixed) {
var columnFixedStorageMap = getCustomStorageMap(fixedStorageKey)
var colFixeds_1 = []
if (!id2) {
errLog('vxe.error.reqProp', ['id'])
return
}
xeUtils.eachTree(collectColumn, function (column) {
if (column.fixed && column.fixed !== column.defaultFixed) {
var colKey = column.getKey()
if (colKey) {
colFixeds_1.push(''.concat(colKey, '|').concat(column.fixed))
}
}
})
columnFixedStorageMap[id2] = colFixeds_1.join(',') || void 0
localStorage.setItem(
fixedStorageKey,
xeUtils.toJSONString(columnFixedStorageMap)
)
}
},
saveCustomVisible: function () {
var id2 = props2.id,
customConfig = props2.customConfig
var collectColumn = internalData.collectColumn
var customOpts = computeCustomOpts.value
var checkMethod = customOpts.checkMethod,
storage2 = customOpts.storage
var isCustomVisible =
storage2 === true || (storage2 && storage2.visible)
if (customConfig && isCustomVisible) {
var columnVisibleStorageMap = getCustomStorageMap(visibleStorageKey)
var colHides_1 = []
var colShows_1 = []
if (!id2) {
errLog('vxe.error.reqProp', ['id'])
return
}
xeUtils.eachTree(collectColumn, function (column) {
if (!checkMethod || checkMethod({ column })) {
if (!column.visible && column.defaultVisible) {
var colKey = column.getKey()
if (colKey) {
colHides_1.push(colKey)
}
} else if (column.visible && !column.defaultVisible) {
var colKey = column.getKey()
if (colKey) {
colShows_1.push(colKey)
}
}
}
})
columnVisibleStorageMap[id2] =
[colHides_1.join(',')]
.concat(colShows_1.length ? [colShows_1.join(',')] : [])
.join('|') || void 0
localStorage.setItem(
visibleStorageKey,
xeUtils.toJSONString(columnVisibleStorageMap)
)
}
},
handleCustom: function () {
tablePrivateMethods.saveCustomVisible()
tablePrivateMethods.analyColumnWidth()
return tableMethods.refreshColumn()
},
handleUpdateDataQueue: function () {
reactData.upDataFlag++
},
handleRefreshColumnQueue: function () {
reactData.reColumnFlag++
},
preventEvent: function (evnt, type4, args, next, end2) {
var evntList = VXETable.interceptor.get(type4)
var rest
if (
!evntList.some(function (func) {
return (
func(
Object.assign(
{ $grid: $xegrid, $table: $xetable, $event: evnt },
args
)
) === false
)
})
) {
if (next) {
rest = next()
}
}
if (end2) {
end2()
}
return rest
},
checkSelectionStatus: function () {
var treeConfig = props2.treeConfig
var selectCheckboxMaps = reactData.selectCheckboxMaps,
treeIndeterminateMaps = reactData.treeIndeterminateMaps
var afterFullData = internalData.afterFullData
var checkboxOpts = computeCheckboxOpts.value
var checkField = checkboxOpts.checkField,
checkStrictly = checkboxOpts.checkStrictly,
checkMethod = checkboxOpts.checkMethod
var indeterminateField =
checkboxOpts.indeterminateField || checkboxOpts.halfField
if (!checkStrictly) {
var disableRows_1 = []
var checkRows_1 = []
var isAllResolve = false
var isAllSelected = false
var isIndeterminate = false
if (checkField) {
isAllResolve = afterFullData.every(
checkMethod
? function (row) {
if (!checkMethod({ row })) {
disableRows_1.push(row)
return true
}
if (xeUtils.get(row, checkField)) {
checkRows_1.push(row)
return true
}
return false
}
: function (row) {
return xeUtils.get(row, checkField)
}
)
isAllSelected =
isAllResolve && afterFullData.length !== disableRows_1.length
if (treeConfig) {
if (indeterminateField) {
isIndeterminate =
!isAllSelected &&
afterFullData.some(function (row) {
return (
xeUtils.get(row, checkField) ||
xeUtils.get(row, indeterminateField) ||
!!treeIndeterminateMaps[getRowid($xetable, row)]
)
})
} else {
isIndeterminate =
!isAllSelected &&
afterFullData.some(function (row) {
return (
xeUtils.get(row, checkField) ||
!!treeIndeterminateMaps[getRowid($xetable, row)]
)
})
}
} else {
if (indeterminateField) {
isIndeterminate =
!isAllSelected &&
afterFullData.some(function (row) {
return (
xeUtils.get(row, checkField) ||
xeUtils.get(row, indeterminateField)
)
})
} else {
isIndeterminate =
!isAllSelected &&
afterFullData.some(function (row) {
return xeUtils.get(row, checkField)
})
}
}
} else {
isAllResolve = afterFullData.every(
checkMethod
? function (row) {
if (!checkMethod({ row })) {
disableRows_1.push(row)
return true
}
if (selectCheckboxMaps[getRowid($xetable, row)]) {
checkRows_1.push(row)
return true
}
return false
}
: function (row) {
return selectCheckboxMaps[getRowid($xetable, row)]
}
)
isAllSelected =
isAllResolve && afterFullData.length !== disableRows_1.length
if (treeConfig) {
isIndeterminate =
!isAllSelected &&
afterFullData.some(function (row) {
var itemRid = getRowid($xetable, row)
return (
treeIndeterminateMaps[itemRid] ||
selectCheckboxMaps[itemRid]
)
})
} else {
isIndeterminate =
!isAllSelected &&
afterFullData.some(function (row) {
return selectCheckboxMaps[getRowid($xetable, row)]
})
}
}
reactData.isAllSelected = isAllSelected
reactData.isIndeterminate = isIndeterminate
}
},
handleSelectRow: function (_a2, value2, isForce) {
var row = _a2.row
var treeConfig = props2.treeConfig
var selectCheckboxMaps = reactData.selectCheckboxMaps,
treeIndeterminateMaps = reactData.treeIndeterminateMaps
var selectRowMaps = __assign({}, selectCheckboxMaps)
var afterFullData = internalData.afterFullData
var treeOpts = computeTreeOpts.value
var childrenField = treeOpts.children || treeOpts.childrenField
var checkboxOpts = computeCheckboxOpts.value
var checkField = checkboxOpts.checkField,
checkStrictly = checkboxOpts.checkStrictly,
checkMethod = checkboxOpts.checkMethod
var indeterminateField =
checkboxOpts.indeterminateField || checkboxOpts.halfField
var rowid = getRowid($xetable, row)
if (checkField) {
if (treeConfig && !checkStrictly) {
if (value2 === -1) {
if (!treeIndeterminateMaps[rowid]) {
if (indeterminateField) {
xeUtils.set(row, indeterminateField, true)
}
treeIndeterminateMaps[rowid] = row
}
xeUtils.set(row, checkField, false)
} else {
xeUtils.eachTree(
[row],
function (item2) {
if (
$xetable.eqRow(item2, row) ||
isForce ||
!checkMethod ||
checkMethod({ row: item2 })
) {
xeUtils.set(item2, checkField, value2)
if (indeterminateField) {
xeUtils.set(row, indeterminateField, false)
}
delete treeIndeterminateMaps[getRowid($xetable, item2)]
handleCheckboxReserveRow(row, value2)
}
},
{ children: childrenField }
)
}
var matchObj = xeUtils.findTree(
afterFullData,
function (item2) {
return $xetable.eqRow(item2, row)
},
{ children: childrenField }
)
if (matchObj && matchObj.parent) {
var parentStatus = void 0
var vItems_1 = []
var vItemMaps_1 = {}
if (!isForce && checkMethod) {
matchObj.items.forEach(function (item2) {
if (checkMethod({ row: item2 })) {
var itemRid = getRowid($xetable, item2)
vItemMaps_1[itemRid] = item2
vItems_1.push(item2)
}
})
} else {
matchObj.items.forEach(function (item2) {
var itemRid = getRowid($xetable, item2)
vItemMaps_1[itemRid] = item2
vItems_1.push(item2)
})
}
var indeterminatesItem = xeUtils.find(
matchObj.items,
function (item2) {
return !!treeIndeterminateMaps[getRowid($xetable, item2)]
}
)
if (indeterminatesItem) {
parentStatus = -1
} else {
var selectItems_1 = []
matchObj.items.forEach(function (item2) {
if (xeUtils.get(item2, checkField)) {
selectItems_1.push(item2)
}
})
parentStatus =
selectItems_1.filter(function (item2) {
return vItemMaps_1[getRowid($xetable, item2)]
}).length === vItems_1.length
? true
: selectItems_1.length || value2 === -1
? -1
: false
}
reactData.selectCheckboxMaps = selectRowMaps
return tablePrivateMethods.handleSelectRow(
{ row: matchObj.parent },
parentStatus,
isForce
)
}
} else {
if (isForce || !checkMethod || checkMethod({ row })) {
xeUtils.set(row, checkField, value2)
handleCheckboxReserveRow(row, value2)
}
}
} else {
if (treeConfig && !checkStrictly) {
if (value2 === -1) {
if (!treeIndeterminateMaps[rowid]) {
if (indeterminateField) {
xeUtils.set(row, indeterminateField, true)
}
treeIndeterminateMaps[rowid] = row
}
if (selectRowMaps[rowid]) {
delete selectRowMaps[rowid]
}
} else {
xeUtils.eachTree(
[row],
function (item2) {
var itemRid = getRowid($xetable, item2)
if (
$xetable.eqRow(item2, row) ||
isForce ||
!checkMethod ||
checkMethod({ row: item2 })
) {
if (value2) {
selectRowMaps[itemRid] = item2
} else {
if (selectRowMaps[itemRid]) {
delete selectRowMaps[itemRid]
}
}
if (indeterminateField) {
xeUtils.set(row, indeterminateField, false)
}
delete treeIndeterminateMaps[getRowid($xetable, item2)]
handleCheckboxReserveRow(row, value2)
}
},
{ children: childrenField }
)
}
var matchObj = xeUtils.findTree(
afterFullData,
function (item2) {
return $xetable.eqRow(item2, row)
},
{ children: childrenField }
)
if (matchObj && matchObj.parent) {
var parentStatus = void 0
var vItems_2 = []
var vItemMaps_2 = {}
if (!isForce && checkMethod) {
matchObj.items.forEach(function (item2) {
if (checkMethod({ row: item2 })) {
var itemRid = getRowid($xetable, item2)
vItemMaps_2[itemRid] = item2
vItems_2.push(item2)
}
})
} else {
matchObj.items.forEach(function (item2) {
var itemRid = getRowid($xetable, item2)
vItemMaps_2[itemRid] = item2
vItems_2.push(item2)
})
}
var indeterminatesItem = xeUtils.find(
matchObj.items,
function (item2) {
return !!treeIndeterminateMaps[getRowid($xetable, item2)]
}
)
if (indeterminatesItem) {
parentStatus = -1
} else {
var selectItems_2 = []
matchObj.items.forEach(function (item2) {
var itemRid = getRowid($xetable, item2)
if (selectRowMaps[itemRid]) {
selectItems_2.push(item2)
}
})
parentStatus =
selectItems_2.filter(function (item2) {
return vItemMaps_2[getRowid($xetable, item2)]
}).length === vItems_2.length
? true
: selectItems_2.length || value2 === -1
? -1
: false
}
reactData.selectCheckboxMaps = selectRowMaps
return tablePrivateMethods.handleSelectRow(
{ row: matchObj.parent },
parentStatus,
isForce
)
}
} else {
if (isForce || !checkMethod || checkMethod({ row })) {
if (value2) {
if (!selectRowMaps[rowid]) {
selectRowMaps[rowid] = row
}
} else {
if (selectRowMaps[rowid]) {
delete selectRowMaps[rowid]
}
}
handleCheckboxReserveRow(row, value2)
}
}
}
reactData.selectCheckboxMaps = selectRowMaps
tablePrivateMethods.checkSelectionStatus()
},
triggerHeaderHelpEvent: function (evnt, params2) {
var column = params2.column
var titlePrefix = column.titlePrefix || column.titleHelp
if (titlePrefix.content || titlePrefix.message) {
var tooltipStore = reactData.tooltipStore
var content_1 = getFuncText(
titlePrefix.content || titlePrefix.message
)
handleTargetEnterEvent(true)
tooltipStore.visible = true
tooltipStore.currOpts = __assign(__assign({}, titlePrefix), {
content: null,
})
nextTick(function () {
var $tooltip = refTooltip.value
if ($tooltip) {
$tooltip.open(evnt.currentTarget, content_1)
}
})
}
},
triggerHeaderTooltipEvent: function (evnt, params2) {
var tooltipStore = reactData.tooltipStore
var column = params2.column
var titleElem = evnt.currentTarget
handleTargetEnterEvent(true)
if (tooltipStore.column !== column || !tooltipStore.visible) {
handleTooltip(evnt, titleElem, titleElem, null, params2)
}
},
triggerBodyTooltipEvent: function (evnt, params2) {
var editConfig = props2.editConfig
var editStore = reactData.editStore
var tooltipStore = reactData.tooltipStore
var editOpts = computeEditOpts.value
var actived = editStore.actived
var row = params2.row,
column = params2.column
var cell = evnt.currentTarget
handleTargetEnterEvent(
tooltipStore.column !== column || tooltipStore.row !== row
)
if (column.editRender && isEnableConf(editConfig)) {
if (editOpts.mode === 'row' && actived.row === row) {
return
}
if (actived.row === row && actived.column === column) {
return
}
}
if (
tooltipStore.column !== column ||
tooltipStore.row !== row ||
!tooltipStore.visible
) {
var overflowElem = void 0
var tipElem = void 0
if (column.treeNode) {
overflowElem = cell.querySelector('.vxe-tree-cell')
if (column.type === 'html') {
tipElem = cell.querySelector('.vxe-cell--html')
}
} else {
tipElem = cell.querySelector(
column.type === 'html' ? '.vxe-cell--html' : '.vxe-cell--label'
)
}
handleTooltip(
evnt,
cell,
overflowElem || cell.children[0],
tipElem,
params2
)
}
},
triggerFooterTooltipEvent: function (evnt, params2) {
var column = params2.column
var tooltipStore = reactData.tooltipStore
var cell = evnt.currentTarget
handleTargetEnterEvent(
tooltipStore.column !== column || !!tooltipStore.row
)
if (tooltipStore.column !== column || !tooltipStore.visible) {
handleTooltip(
evnt,
cell,
cell.querySelector('.vxe-cell--item') || cell.children[0],
null,
params2
)
}
},
handleTargetLeaveEvent: function () {
var tooltipOpts = computeTooltipOpts.value
var $tooltip = refTooltip.value
if ($tooltip) {
$tooltip.setActived(false)
}
if (tooltipOpts.enterable) {
internalData.tooltipTimeout = setTimeout(function () {
$tooltip = refTooltip.value
if ($tooltip && !$tooltip.isActived()) {
tableMethods.closeTooltip()
}
}, tooltipOpts.leaveDelay)
} else {
tableMethods.closeTooltip()
}
},
triggerHeaderCellClickEvent: function (evnt, params2) {
var _lastResizeTime = internalData._lastResizeTime
var sortOpts = computeSortOpts.value
var columnOpts = computeColumnOpts.value
var column = params2.column
var cell = evnt.currentTarget
var triggerResizable =
_lastResizeTime && _lastResizeTime > Date.now() - 300
var triggerSort = getEventTargetNode(evnt, cell, 'vxe-cell--sort').flag
var triggerFilter = getEventTargetNode(
evnt,
cell,
'vxe-cell--filter'
).flag
if (
sortOpts.trigger === 'cell' &&
!(triggerResizable || triggerSort || triggerFilter)
) {
tablePrivateMethods.triggerSortEvent(
evnt,
column,
getNextSortOrder(column)
)
}
tableMethods.dispatchEvent(
'header-cell-click',
Object.assign(
{ triggerResizable, triggerSort, triggerFilter, cell },
params2
),
evnt
)
if (columnOpts.isCurrent || props2.highlightCurrentColumn) {
tableMethods.setCurrentColumn(column)
}
},
triggerHeaderCellDblclickEvent: function (evnt, params2) {
tableMethods.dispatchEvent(
'header-cell-dblclick',
Object.assign({ cell: evnt.currentTarget }, params2),
evnt
)
},
triggerCellClickEvent: function (evnt, params2) {
var highlightCurrentRow = props2.highlightCurrentRow,
editConfig = props2.editConfig
var editStore = reactData.editStore
var expandOpts = computeExpandOpts.value
var editOpts = computeEditOpts.value
var treeOpts = computeTreeOpts.value
var radioOpts = computeRadioOpts.value
var checkboxOpts = computeCheckboxOpts.value
var rowOpts = computeRowOpts.value
var actived = editStore.actived
var row = params2.row,
column = params2.column
var type4 = column.type,
treeNode = column.treeNode
var isRadioType = type4 === 'radio'
var isCheckboxType = type4 === 'checkbox'
var isExpandType = type4 === 'expand'
var cell = evnt.currentTarget
var triggerRadio =
isRadioType && getEventTargetNode(evnt, cell, 'vxe-cell--radio').flag
var triggerCheckbox =
isCheckboxType &&
getEventTargetNode(evnt, cell, 'vxe-cell--checkbox').flag
var triggerTreeNode =
treeNode &&
getEventTargetNode(evnt, cell, 'vxe-tree--btn-wrapper').flag
var triggerExpandNode =
isExpandType &&
getEventTargetNode(evnt, cell, 'vxe-table--expanded').flag
params2 = Object.assign(
{
cell,
triggerRadio,
triggerCheckbox,
triggerTreeNode,
triggerExpandNode,
},
params2
)
if (!triggerCheckbox && !triggerRadio) {
if (
!triggerExpandNode &&
(expandOpts.trigger === 'row' ||
(isExpandType && expandOpts.trigger === 'cell'))
) {
tablePrivateMethods.triggerRowExpandEvent(evnt, params2)
}
if (
treeOpts.trigger === 'row' ||
(treeNode && treeOpts.trigger === 'cell')
) {
tablePrivateMethods.triggerTreeExpandEvent(evnt, params2)
}
}
if (!triggerTreeNode) {
if (!triggerExpandNode) {
if (rowOpts.isCurrent || highlightCurrentRow) {
if (!triggerCheckbox && !triggerRadio) {
tablePrivateMethods.triggerCurrentRowEvent(evnt, params2)
}
}
if (
!triggerRadio &&
(radioOpts.trigger === 'row' ||
(isRadioType && radioOpts.trigger === 'cell'))
) {
tablePrivateMethods.triggerRadioRowEvent(evnt, params2)
}
if (
!triggerCheckbox &&
(checkboxOpts.trigger === 'row' ||
(isCheckboxType && checkboxOpts.trigger === 'cell'))
) {
tablePrivateMethods.handleToggleCheckRowEvent(evnt, params2)
}
}
if (isEnableConf(editConfig)) {
if (editOpts.trigger === 'manual') {
if (
actived.args &&
actived.row === row &&
column !== actived.column
) {
handleChangeCell(evnt, params2)
}
} else if (
!actived.args ||
row !== actived.row ||
column !== actived.column
) {
if (editOpts.trigger === 'click') {
handleChangeCell(evnt, params2)
} else if (editOpts.trigger === 'dblclick') {
if (editOpts.mode === 'row' && actived.row === row) {
handleChangeCell(evnt, params2)
}
}
}
}
}
tableMethods.dispatchEvent('cell-click', params2, evnt)
},
triggerCellDblclickEvent: function (evnt, params2) {
var editConfig = props2.editConfig
var editStore = reactData.editStore
var editOpts = computeEditOpts.value
var actived = editStore.actived
var cell = evnt.currentTarget
params2 = Object.assign({ cell }, params2)
if (isEnableConf(editConfig) && editOpts.trigger === 'dblclick') {
if (!actived.args || evnt.currentTarget !== actived.args.cell) {
if (editOpts.mode === 'row') {
checkValidate('blur')
.catch(function (e2) {
return e2
})
.then(function () {
$xetable
.handleActived(params2, evnt)
.then(function () {
return checkValidate('change')
})
.catch(function (e2) {
return e2
})
})
} else if (editOpts.mode === 'cell') {
$xetable
.handleActived(params2, evnt)
.then(function () {
return checkValidate('change')
})
.catch(function (e2) {
return e2
})
}
}
}
tableMethods.dispatchEvent('cell-dblclick', params2, evnt)
},
handleToggleCheckRowEvent: function (evnt, params2) {
var selectCheckboxMaps = reactData.selectCheckboxMaps
var checkboxOpts = computeCheckboxOpts.value
var checkField = checkboxOpts.checkField
var row = params2.row
var value2 = false
if (checkField) {
value2 = !xeUtils.get(row, checkField)
} else {
value2 = !selectCheckboxMaps[getRowid($xetable, row)]
}
if (evnt) {
tablePrivateMethods.triggerCheckRowEvent(evnt, params2, value2)
} else {
tablePrivateMethods.handleSelectRow(params2, value2)
}
},
triggerCheckRowEvent: function (evnt, params2, value2) {
var checkboxOpts = computeCheckboxOpts.value
var row = params2.row
var afterFullData = internalData.afterFullData
var checkMethod = checkboxOpts.checkMethod
if (checkboxOpts.isShiftKey && evnt.shiftKey && !props2.treeConfig) {
var checkboxRecords = tableMethods.getCheckboxRecords()
if (checkboxRecords.length) {
var firstRow = checkboxRecords[0]
var _rowIndex = tableMethods.getVTRowIndex(row)
var _firstRowIndex = tableMethods.getVTRowIndex(firstRow)
if (_rowIndex !== _firstRowIndex) {
tableMethods.setAllCheckboxRow(false)
var rangeRows =
_rowIndex < _firstRowIndex
? afterFullData.slice(_rowIndex, _firstRowIndex + 1)
: afterFullData.slice(_firstRowIndex, _rowIndex + 1)
handleCheckedCheckboxRow(rangeRows, true, false)
tableMethods.dispatchEvent(
'checkbox-range-select',
Object.assign({ rangeRecords: rangeRows }, params2),
evnt
)
return
}
}
}
if (!checkMethod || checkMethod({ row })) {
tablePrivateMethods.handleSelectRow(params2, value2)
tableMethods.dispatchEvent(
'checkbox-change',
Object.assign(
{
records: tableMethods.getCheckboxRecords(),
reserves: tableMethods.getCheckboxReserveRecords(),
indeterminates: tableMethods.getCheckboxIndeterminateRecords(),
checked: value2,
},
params2
),
evnt
)
}
},
triggerCheckAllEvent: function (evnt, value2) {
handleCheckedAllCheckboxRow(value2)
if (evnt) {
tableMethods.dispatchEvent(
'checkbox-all',
{
records: tableMethods.getCheckboxRecords(),
reserves: tableMethods.getCheckboxReserveRecords(),
indeterminates: tableMethods.getCheckboxIndeterminateRecords(),
checked: value2,
},
evnt
)
}
},
triggerRadioRowEvent: function (evnt, params2) {
var oldValue = reactData.selectRadioRow
var row = params2.row
var radioOpts = computeRadioOpts.value
var newValue = row
var isChange = oldValue !== newValue
if (isChange) {
handleCheckedRadioRow(newValue)
} else if (!radioOpts.strict) {
isChange = oldValue === newValue
if (isChange) {
newValue = null
tableMethods.clearRadioRow()
}
}
if (isChange) {
tableMethods.dispatchEvent(
'radio-change',
__assign({ oldValue, newValue }, params2),
evnt
)
}
},
triggerCurrentRowEvent: function (evnt, params2) {
var oldValue = reactData.currentRow
var newValue = params2.row
var isChange = oldValue !== newValue
tableMethods.setCurrentRow(newValue)
if (isChange) {
tableMethods.dispatchEvent(
'current-change',
__assign({ oldValue, newValue }, params2),
evnt
)
}
},
triggerRowExpandEvent: function (evnt, params2) {
var rowExpandLazyLoadedMaps = reactData.rowExpandLazyLoadedMaps,
column = reactData.expandColumn
var expandOpts = computeExpandOpts.value
var row = params2.row
var lazy = expandOpts.lazy
var rowid = getRowid($xetable, row)
if (!lazy || !rowExpandLazyLoadedMaps[rowid]) {
var expanded = !tableMethods.isExpandByRow(row)
var columnIndex = tableMethods.getColumnIndex(column)
var $columnIndex = tableMethods.getVMColumnIndex(column)
tableMethods.setRowExpand(row, expanded)
tableMethods.dispatchEvent(
'toggle-row-expand',
{
expanded,
column,
columnIndex,
$columnIndex,
row,
rowIndex: tableMethods.getRowIndex(row),
$rowIndex: tableMethods.getVMRowIndex(row),
},
evnt
)
}
},
triggerTreeExpandEvent: function (evnt, params2) {
var treeExpandLazyLoadedMaps = reactData.treeExpandLazyLoadedMaps
var treeOpts = computeTreeOpts.value
var row = params2.row,
column = params2.column
var lazy = treeOpts.lazy
var rowid = getRowid($xetable, row)
if (!lazy || !treeExpandLazyLoadedMaps[rowid]) {
var expanded = !tableMethods.isTreeExpandByRow(row)
var columnIndex = tableMethods.getColumnIndex(column)
var $columnIndex = tableMethods.getVMColumnIndex(column)
tableMethods.setTreeExpand(row, expanded)
tableMethods.dispatchEvent(
'toggle-tree-expand',
{ expanded, column, columnIndex, $columnIndex, row },
evnt
)
}
},
triggerSortEvent: function (evnt, column, order2) {
var mouseConfig = props2.mouseConfig
var sortOpts = computeSortOpts.value
var mouseOpts = computeMouseOpts.value
var field2 = column.field,
sortable = column.sortable
if (sortable) {
if (!order2 || column.order === order2) {
tableMethods.clearSort(sortOpts.multiple ? column : null)
} else {
tableMethods.sort({ field: field2, order: order2 })
}
var params2 = {
$table: $xetable,
$event: evnt,
column,
field: field2,
property: field2,
order: column.order,
sortList: tableMethods.getSortColumns(),
sortTime: column.sortTime,
}
if (mouseConfig && mouseOpts.area && $xetable.handleSortEvent) {
return $xetable.handleSortEvent(evnt, params2)
}
tableMethods.dispatchEvent('sort-change', params2, evnt)
}
},
triggerScrollXEvent: function () {
loadScrollXData()
},
triggerScrollYEvent: function (evnt) {
var scrollYStore = internalData.scrollYStore
var adaptive = scrollYStore.adaptive,
offsetSize = scrollYStore.offsetSize,
visibleSize = scrollYStore.visibleSize
if (isWebkit && adaptive && offsetSize * 2 + visibleSize <= 40) {
loadScrollYData(evnt)
} else {
debounceScrollY(evnt)
}
},
scrollToTreeRow: function (row) {
var treeConfig = props2.treeConfig
var tableFullData = internalData.tableFullData
var rests = []
if (treeConfig) {
var treeOpts = computeTreeOpts.value
var childrenField = treeOpts.children || treeOpts.childrenField
var matchObj = xeUtils.findTree(
tableFullData,
function (item2) {
return $xetable.eqRow(item2, row)
},
{ children: childrenField }
)
if (matchObj) {
var nodes_1 = matchObj.nodes
nodes_1.forEach(function (row2, index2) {
if (
index2 < nodes_1.length - 1 &&
!tableMethods.isTreeExpandByRow(row2)
) {
rests.push(tableMethods.setTreeExpand(row2, true))
}
})
}
}
return Promise.all(rests).then(function () {
return rowToVisible($xetable, row)
})
},
updateScrollYStatus,
updateScrollXSpace: function () {
var isGroup2 = reactData.isGroup,
scrollXLoad = reactData.scrollXLoad,
scrollbarWidth = reactData.scrollbarWidth
var visibleColumn = internalData.visibleColumn,
scrollXStore = internalData.scrollXStore,
elemStore = internalData.elemStore,
tableWidth = internalData.tableWidth
var tableHeader = refTableHeader.value
var tableBody = refTableBody.value
var tableFooter = refTableFooter.value
var tableBodyElem = tableBody ? tableBody.$el : null
if (tableBodyElem) {
var tableHeaderElem = tableHeader ? tableHeader.$el : null
var tableFooterElem = tableFooter ? tableFooter.$el : null
var headerElem = tableHeaderElem
? tableHeaderElem.querySelector('.vxe-table--header')
: null
var bodyElem = tableBodyElem.querySelector('.vxe-table--body')
var footerElem = tableFooterElem
? tableFooterElem.querySelector('.vxe-table--footer')
: null
var leftSpaceWidth = visibleColumn
.slice(0, scrollXStore.startIndex)
.reduce(function (previous, column) {
return previous + column.renderWidth
}, 0)
var marginLeft2 = ''
if (scrollXLoad) {
marginLeft2 = ''.concat(leftSpaceWidth, 'px')
}
if (headerElem) {
headerElem.style.marginLeft = isGroup2 ? '' : marginLeft2
}
bodyElem.style.marginLeft = marginLeft2
if (footerElem) {
footerElem.style.marginLeft = marginLeft2
}
var containerList = ['main']
containerList.forEach(function (name2) {
var layoutList2 = ['header', 'body', 'footer']
layoutList2.forEach(function (layout2) {
var xSpaceRef =
elemStore[''.concat(name2, '-').concat(layout2, '-xSpace')]
var xSpaceElem = xSpaceRef ? xSpaceRef.value : null
if (xSpaceElem) {
xSpaceElem.style.width = scrollXLoad
? ''.concat(
tableWidth + (layout2 === 'header' ? scrollbarWidth : 0),
'px'
)
: ''
}
})
})
nextTick(updateStyle2)
}
},
updateScrollYSpace: function () {
var scrollYLoad = reactData.scrollYLoad
var scrollYStore = internalData.scrollYStore,
elemStore = internalData.elemStore,
afterFullData = internalData.afterFullData
var startIndex = scrollYStore.startIndex,
rowHeight = scrollYStore.rowHeight
var bodyHeight = afterFullData.length * rowHeight
var topSpaceHeight = Math.max(0, startIndex * rowHeight)
var containerList = ['main', 'left', 'right']
var marginTop2 = ''
var ySpaceHeight = ''
if (scrollYLoad) {
marginTop2 = ''.concat(topSpaceHeight, 'px')
ySpaceHeight = ''.concat(bodyHeight, 'px')
}
containerList.forEach(function (name2) {
var layoutList2 = ['header', 'body', 'footer']
var tableRef = elemStore[''.concat(name2, '-body-table')]
var tableElem = tableRef ? tableRef.value : null
if (tableElem) {
tableElem.style.marginTop = marginTop2
}
layoutList2.forEach(function (layout2) {
var ySpaceRef =
elemStore[''.concat(name2, '-').concat(layout2, '-ySpace')]
var ySpaceElem = ySpaceRef ? ySpaceRef.value : null
if (ySpaceElem) {
ySpaceElem.style.height = ySpaceHeight
}
})
})
nextTick(updateStyle2)
},
updateScrollXData: function () {
nextTick(function () {
handleTableColumn()
tablePrivateMethods.updateScrollXSpace()
})
},
updateScrollYData: function () {
nextTick(function () {
tablePrivateMethods.handleTableData()
tablePrivateMethods.updateScrollYSpace()
})
},
checkScrolling: function () {
var leftContainerElem = refLeftContainer.value
var rightContainerElem = refRightContainer.value
var tableBody = refTableBody.value
var bodyElem = tableBody ? tableBody.$el : null
if (bodyElem) {
if (leftContainerElem) {
if (bodyElem.scrollLeft > 0) {
addClass(leftContainerElem, 'scrolling--middle')
} else {
removeClass(leftContainerElem, 'scrolling--middle')
}
}
if (rightContainerElem) {
if (
bodyElem.clientWidth <
bodyElem.scrollWidth - Math.ceil(bodyElem.scrollLeft)
) {
addClass(rightContainerElem, 'scrolling--middle')
} else {
removeClass(rightContainerElem, 'scrolling--middle')
}
}
}
},
updateZindex: function () {
if (props2.zIndex) {
internalData.tZindex = props2.zIndex
} else if (internalData.tZindex < getLastZIndex()) {
internalData.tZindex = nextZIndex()
}
},
handleCheckedCheckboxRow,
triggerHoverEvent: function (evnt, _a2) {
var row = _a2.row
tablePrivateMethods.setHoverRow(row)
},
setHoverRow: function (row) {
var rowid = getRowid($xetable, row)
var el2 = refElem.value
tablePrivateMethods.clearHoverRow()
if (el2) {
xeUtils.arrayEach(
el2.querySelectorAll('[rowid="'.concat(rowid, '"]')),
function (elem) {
return addClass(elem, 'row--hover')
}
)
}
internalData.hoverRow = row
},
clearHoverRow: function () {
var el2 = refElem.value
if (el2) {
xeUtils.arrayEach(
el2.querySelectorAll('.vxe-body--row.row--hover'),
function (elem) {
return removeClass(elem, 'row--hover')
}
)
}
internalData.hoverRow = null
},
getCell: function (row, column) {
var rowid = getRowid($xetable, row)
var tableBody = refTableBody.value
var leftBody = refTableLeftBody.value
var rightBody = refTableRightBody.value
var bodyElem
if (column.fixed) {
if (column.fixed === 'left') {
if (leftBody) {
bodyElem = leftBody.$el
}
} else {
if (rightBody) {
bodyElem = rightBody.$el
}
}
}
if (!bodyElem) {
bodyElem = tableBody.$el
}
if (bodyElem) {
return bodyElem.querySelector(
'.vxe-body--row[rowid="'.concat(rowid, '"] .').concat(column.id)
)
}
return null
},
getCellLabel: function (row, column) {
var formatter2 = column.formatter
var cellValue = getCellValue(row, column)
var cellLabel = cellValue
if (formatter2) {
var formatData = void 0
var fullAllDataRowIdData = internalData.fullAllDataRowIdData
var rowid = getRowid($xetable, row)
var colid = column.id
var rest = fullAllDataRowIdData[rowid]
if (rest) {
formatData = rest.formatData
if (!formatData) {
formatData = fullAllDataRowIdData[rowid].formatData = {}
}
if (rest && formatData[colid]) {
if (formatData[colid].value === cellValue) {
return formatData[colid].label
}
}
}
var formatParams = {
cellValue,
row,
rowIndex: tableMethods.getRowIndex(row),
column,
columnIndex: tableMethods.getColumnIndex(column),
}
if (xeUtils.isString(formatter2)) {
var gFormatOpts = VXETable.formats.get(formatter2)
cellLabel =
gFormatOpts && gFormatOpts.cellFormatMethod
? gFormatOpts.cellFormatMethod(formatParams)
: ''
} else if (xeUtils.isArray(formatter2)) {
var gFormatOpts = VXETable.formats.get(formatter2[0])
cellLabel =
gFormatOpts && gFormatOpts.cellFormatMethod
? gFormatOpts.cellFormatMethod.apply(
gFormatOpts,
__spreadArray([formatParams], formatter2.slice(1), false)
)
: ''
} else {
cellLabel = formatter2(formatParams)
}
if (formatData) {
formatData[colid] = { value: cellValue, label: cellLabel }
}
}
return cellLabel
},
findRowIndexOf: function (list2, row) {
return row
? xeUtils.findIndexOf(list2, function (item2) {
return $xetable.eqRow(item2, row)
})
: -1
},
eqRow: function (row1, row2) {
if (row1 && row2) {
if (row1 === row2) {
return true
}
return getRowid($xetable, row1) === getRowid($xetable, row2)
}
return false
},
}
Object.assign($xetable, tableMethods, tablePrivateMethods)
var renderFixed = function (fixedType) {
var showHeader = props2.showHeader,
showFooter = props2.showFooter
var tableData2 = reactData.tableData,
tableColumn = reactData.tableColumn,
tableGroupColumn = reactData.tableGroupColumn,
columnStore = reactData.columnStore,
footerTableData = reactData.footerTableData
var isFixedLeft = fixedType === 'left'
var fixedColumn = isFixedLeft
? columnStore.leftList
: columnStore.rightList
return h$4(
'div',
{
ref: isFixedLeft ? refLeftContainer : refRightContainer,
class: 'vxe-table--fixed-'.concat(fixedType, '-wrapper'),
},
[
showHeader
? h$4(Header$6, {
ref: isFixedLeft ? refTableLeftHeader : refTableRightHeader,
fixedType,
tableData: tableData2,
tableColumn,
tableGroupColumn,
fixedColumn,
})
: createCommentVNode(),
h$4(TableBodyComponent, {
ref: isFixedLeft ? refTableLeftBody : refTableRightBody,
fixedType,
tableData: tableData2,
tableColumn,
fixedColumn,
}),
showFooter
? h$4(Footer$2, {
ref: isFixedLeft ? refTableLeftFooter : refTableRightFooter,
footerTableData,
tableColumn,
fixedColumn,
fixedType,
})
: createCommentVNode(),
]
)
}
var renderEmptyContenet = function () {
var emptyOpts = computeEmptyOpts.value
var params2 = { $table: $xetable }
if (slots.empty) {
return slots.empty(params2)
} else {
var compConf = emptyOpts.name
? VXETable.renderer.get(emptyOpts.name)
: null
var renderEmpty = compConf ? compConf.renderEmpty : null
if (renderEmpty) {
return getSlotVNs(renderEmpty(emptyOpts, params2))
}
}
return (
getFuncText(props2.emptyText) ||
GlobalConfig.i18n('vxe.table.emptyText')
)
}
function handleUupdateResize() {
var el2 = refElem.value
if (el2 && el2.clientWidth && el2.clientHeight) {
tableMethods.recalculate()
}
}
var dataFlag = ref(0)
watch$1(
function () {
return props2.data ? props2.data.length : -1
},
function () {
dataFlag.value++
}
)
watch$1(
function () {
return props2.data
},
function () {
dataFlag.value++
}
)
watch$1(dataFlag, function () {
var inited = internalData.inited,
initStatus = internalData.initStatus
loadTableData(props2.data || []).then(function () {
reactData.scrollXLoad
reactData.scrollYLoad
reactData.expandColumn
internalData.inited = true
internalData.initStatus = true
if (!initStatus) {
handleLoadDefaults()
}
if (!inited) {
handleInitDefaults()
}
tableMethods.recalculate()
})
})
var staticColumnFlag = ref(0)
watch$1(
function () {
return reactData.staticColumns.length
},
function () {
staticColumnFlag.value++
}
)
watch$1(
function () {
return reactData.staticColumns
},
function () {
staticColumnFlag.value++
}
)
watch$1(staticColumnFlag, function () {
handleColumn(reactData.staticColumns)
})
var tableColumnFlag = ref(0)
watch$1(
function () {
return reactData.tableColumn.length
},
function () {
tableColumnFlag.value++
}
)
watch$1(
function () {
return reactData.tableColumn
},
function () {
tableColumnFlag.value++
}
)
watch$1(tableColumnFlag, function () {
tablePrivateMethods.analyColumnWidth()
})
watch$1(
function () {
return reactData.upDataFlag
},
function () {
nextTick(function () {
tableMethods.updateData()
})
}
)
watch$1(
function () {
return reactData.reColumnFlag
},
function () {
nextTick(function () {
tableMethods.refreshColumn()
})
}
)
watch$1(
function () {
return props2.showHeader
},
function () {
nextTick(function () {
tableMethods.recalculate(true).then(function () {
return tableMethods.refreshScroll()
})
})
}
)
watch$1(
function () {
return props2.showFooter
},
function () {
nextTick(function () {
tableMethods.recalculate(true).then(function () {
return tableMethods.refreshScroll()
})
})
}
)
watch$1(
function () {
return props2.height
},
function () {
nextTick(function () {
return tableMethods.recalculate(true)
})
}
)
watch$1(
function () {
return props2.maxHeight
},
function () {
nextTick(function () {
return tableMethods.recalculate(true)
})
}
)
watch$1(
function () {
return props2.syncResize
},
function (value2) {
if (value2) {
handleUupdateResize()
nextTick(function () {
handleUupdateResize()
setTimeout(function () {
return handleUupdateResize()
})
})
}
}
)
var mergeCellFlag = ref(0)
watch$1(
function () {
return props2.mergeCells ? props2.mergeCells.length : -1
},
function () {
mergeCellFlag.value++
}
)
watch$1(
function () {
return props2.mergeCells
},
function () {
mergeCellFlag.value++
}
)
watch$1(mergeCellFlag, function () {
tableMethods.clearMergeCells()
nextTick(function () {
if (props2.mergeCells) {
tableMethods.setMergeCells(props2.mergeCells)
}
})
})
var mergeFooterItemFlag = ref(0)
watch$1(
function () {
return props2.mergeFooterItems ? props2.mergeFooterItems.length : -1
},
function () {
mergeFooterItemFlag.value++
}
)
watch$1(
function () {
return props2.mergeFooterItems
},
function () {
mergeFooterItemFlag.value++
}
)
watch$1(mergeFooterItemFlag, function () {
tableMethods.clearMergeFooterItems()
nextTick(function () {
if (props2.mergeFooterItems) {
tableMethods.setMergeFooterItems(props2.mergeFooterItems)
}
})
})
VXETable.hooks.forEach(function (options2) {
var setupTable = options2.setupTable
if (setupTable) {
var hookRest = setupTable($xetable)
if (hookRest && xeUtils.isObject(hookRest)) {
Object.assign($xetable, hookRest)
}
}
})
tablePrivateMethods.preventEvent(null, 'created', { $table: $xetable })
var resizeObserver
onActivated(function () {
tableMethods.recalculate().then(function () {
return tableMethods.refreshScroll()
})
tablePrivateMethods.preventEvent(null, 'activated', { $table: $xetable })
})
onDeactivated(function () {
internalData.isActivated = false
tablePrivateMethods.preventEvent(null, 'deactivated', {
$table: $xetable,
})
})
onMounted(function () {
nextTick(function () {
var data2 = props2.data
props2.treeConfig
props2.showOverflow
var scrollXStore = internalData.scrollXStore,
scrollYStore = internalData.scrollYStore
var sYOpts = computeSYOpts.value
computeEditOpts.value
computeTreeOpts.value
computeRadioOpts.value
computeCheckboxOpts.value
computeExpandOpts.value
computeRowOpts.value
Object.assign(scrollYStore, {
startIndex: 0,
endIndex: 0,
visibleSize: 0,
adaptive: sYOpts.adaptive !== false,
})
Object.assign(scrollXStore, {
startIndex: 0,
endIndex: 0,
visibleSize: 0,
})
loadTableData(data2 || []).then(function () {
if (data2 && data2.length) {
internalData.inited = true
internalData.initStatus = true
handleLoadDefaults()
handleInitDefaults()
}
updateStyle2()
})
if (props2.autoResize) {
var resizeOpts = computeResizeleOpts.value
var refreshDelay = resizeOpts.refreshDelay
var el2 = refElem.value
var parentEl2 = tablePrivateMethods.getParentElem()
var handleOptimizeResize_1 = refreshDelay
? xeUtils.throttle(
function () {
return tableMethods.recalculate(true)
},
refreshDelay,
{ leading: true, trailing: true }
)
: null
resizeObserver = createResizeEvent(
handleOptimizeResize_1
? function () {
if (props2.autoResize) {
requestAnimationFrame(handleOptimizeResize_1)
}
}
: function () {
if (props2.autoResize) {
tableMethods.recalculate(true)
}
}
)
if (el2) {
resizeObserver.observe(el2)
}
if (parentEl2) {
resizeObserver.observe(parentEl2)
}
}
})
GlobalEvent.on($xetable, 'paste', handleGlobalPasteEvent)
GlobalEvent.on($xetable, 'copy', handleGlobalCopyEvent)
GlobalEvent.on($xetable, 'cut', handleGlobalCutEvent)
GlobalEvent.on($xetable, 'mousedown', handleGlobalMousedownEvent)
GlobalEvent.on($xetable, 'blur', handleGlobalBlurEvent)
GlobalEvent.on($xetable, 'mousewheel', handleGlobalMousewheelEvent)
GlobalEvent.on($xetable, 'keydown', handleGlobalKeydownEvent)
GlobalEvent.on($xetable, 'resize', handleGlobalResizeEvent)
if ($xetable.handleGlobalContextmenuEvent) {
GlobalEvent.on(
$xetable,
'contextmenu',
$xetable.handleGlobalContextmenuEvent
)
}
tablePrivateMethods.preventEvent(null, 'mounted', { $table: $xetable })
})
onBeforeUnmount(function () {
if (resizeObserver) {
resizeObserver.disconnect()
}
tableMethods.closeFilter()
if ($xetable.closeMenu) {
$xetable.closeMenu()
}
tablePrivateMethods.preventEvent(null, 'beforeUnmount', {
$table: $xetable,
})
})
onUnmounted(function () {
GlobalEvent.off($xetable, 'paste')
GlobalEvent.off($xetable, 'copy')
GlobalEvent.off($xetable, 'cut')
GlobalEvent.off($xetable, 'mousedown')
GlobalEvent.off($xetable, 'blur')
GlobalEvent.off($xetable, 'mousewheel')
GlobalEvent.off($xetable, 'keydown')
GlobalEvent.off($xetable, 'resize')
GlobalEvent.off($xetable, 'contextmenu')
tablePrivateMethods.preventEvent(null, 'unmounted', { $table: $xetable })
})
var renderVN = function () {
var _a2
var loading2 = props2.loading,
stripe = props2.stripe,
showHeader = props2.showHeader,
height = props2.height,
treeConfig = props2.treeConfig,
mouseConfig = props2.mouseConfig,
showFooter = props2.showFooter,
highlightCell = props2.highlightCell,
highlightHoverRow = props2.highlightHoverRow,
highlightHoverColumn = props2.highlightHoverColumn,
editConfig = props2.editConfig,
editRules = props2.editRules
var isGroup2 = reactData.isGroup,
overflowX = reactData.overflowX,
overflowY = reactData.overflowY,
scrollXLoad = reactData.scrollXLoad,
scrollYLoad = reactData.scrollYLoad,
scrollbarHeight = reactData.scrollbarHeight,
tableData2 = reactData.tableData,
tableColumn = reactData.tableColumn,
tableGroupColumn = reactData.tableGroupColumn,
footerTableData = reactData.footerTableData,
initStore = reactData.initStore,
columnStore = reactData.columnStore,
filterStore = reactData.filterStore
var leftList = columnStore.leftList,
rightList = columnStore.rightList
var loadingSlot = slots.loading
var tipConfig = computeTipConfig.value
var validOpts = computeValidOpts.value
var treeOpts = computeTreeOpts.value
var rowOpts = computeRowOpts.value
var columnOpts = computeColumnOpts.value
var vSize = computeSize.value
var tableBorder = computeTableBorder.value
var mouseOpts = computeMouseOpts.value
var validTipOpts = computeValidTipOpts.value
var loadingOpts = computeLoadingOpts.value
var isMenu = computeIsMenu.value
return h$4(
'div',
{
ref: refElem,
class: [
'vxe-table',
'vxe-table--render-default',
'tid_'.concat(xID),
'border--'.concat(tableBorder),
((_a2 = {}),
(_a2['size--'.concat(vSize)] = vSize),
(_a2['vaild-msg--'.concat(validOpts.msgMode)] = !!editRules),
(_a2['vxe-editable'] = !!editConfig),
(_a2['old-cell-valid'] =
editRules && GlobalConfig.cellVaildMode === 'obsolete'),
(_a2['cell--highlight'] = highlightCell),
(_a2['cell--selected'] = mouseConfig && mouseOpts.selected),
(_a2['cell--area'] = mouseConfig && mouseOpts.area),
(_a2['row--highlight'] = rowOpts.isHover || highlightHoverRow),
(_a2['column--highlight'] =
columnOpts.isHover || highlightHoverColumn),
(_a2['is--header'] = showHeader),
(_a2['is--footer'] = showFooter),
(_a2['is--group'] = isGroup2),
(_a2['is--tree-line'] =
treeConfig && (treeOpts.showLine || treeOpts.line)),
(_a2['is--fixed-left'] = leftList.length),
(_a2['is--fixed-right'] = rightList.length),
(_a2['is--animat'] = !!props2.animat),
(_a2['is--round'] = props2.round),
(_a2['is--stripe'] = !treeConfig && stripe),
(_a2['is--loading'] = loading2),
(_a2['is--empty'] = !loading2 && !tableData2.length),
(_a2['is--scroll-y'] = overflowY),
(_a2['is--scroll-x'] = overflowX),
(_a2['is--virtual-x'] = scrollXLoad),
(_a2['is--virtual-y'] = scrollYLoad),
_a2),
],
onKeydown: keydownEvent,
},
[
h$4(
'div',
{
class: 'vxe-table-slots',
},
slots.default ? slots.default({}) : []
),
h$4(
'div',
{
class: 'vxe-table--render-wrapper',
},
[
h$4(
'div',
{
class: 'vxe-table--main-wrapper',
},
[
showHeader
? h$4(Header$6, {
ref: refTableHeader,
tableData: tableData2,
tableColumn,
tableGroupColumn,
})
: createCommentVNode(),
h$4(TableBodyComponent, {
ref: refTableBody,
tableData: tableData2,
tableColumn,
}),
showFooter
? h$4(Footer$2, {
ref: refTableFooter,
footerTableData,
tableColumn,
})
: createCommentVNode(),
]
),
h$4(
'div',
{
class: 'vxe-table--fixed-wrapper',
},
[
leftList && leftList.length && overflowX
? renderFixed('left')
: createCommentVNode(),
rightList && rightList.length && overflowX
? renderFixed('right')
: createCommentVNode(),
]
),
]
),
h$4(
'div',
{
ref: refEmptyPlaceholder,
class: 'vxe-table--empty-placeholder',
},
[
h$4(
'div',
{
class: 'vxe-table--empty-content',
},
renderEmptyContenet()
),
]
),
h$4('div', {
class: 'vxe-table--border-line',
}),
h$4('div', {
ref: refCellResizeBar,
class: 'vxe-table--resizable-bar',
style: overflowX
? {
'padding-bottom': ''.concat(scrollbarHeight, 'px'),
}
: null,
}),
h$4(
VxeLoading,
{
class: 'vxe-table--loading',
modelValue: loading2,
icon: loadingOpts.icon,
text: loadingOpts.text,
},
loadingSlot
? {
default: function () {
return loadingSlot({ $table: $xetable, $grid: $xegrid })
},
}
: {}
),
initStore.filter
? h$4(resolveComponent('vxe-table-filter'), {
ref: refTableFilter,
filterStore,
})
: createCommentVNode(),
initStore.import && props2.importConfig
? h$4(resolveComponent('vxe-import-panel'), {
defaultOptions: reactData.importParams,
storeData: reactData.importStore,
})
: createCommentVNode(),
initStore.export && (props2.exportConfig || props2.printConfig)
? h$4(resolveComponent('vxe-export-panel'), {
defaultOptions: reactData.exportParams,
storeData: reactData.exportStore,
})
: createCommentVNode(),
isMenu
? h$4(resolveComponent('vxe-table-context-menu'), {
ref: refTableMenu,
})
: createCommentVNode(),
hasUseTooltip
? h$4(resolveComponent('vxe-tooltip'), {
ref: refCommTooltip,
isArrow: false,
enterable: false,
})
: createCommentVNode(),
hasUseTooltip &&
props2.editRules &&
validOpts.showMessage &&
(validOpts.message === 'default'
? !height
: validOpts.message === 'tooltip')
? h$4(
resolveComponent('vxe-tooltip'),
__assign(
{
ref: refValidTooltip,
class: [
{
'old-cell-valid':
editRules &&
GlobalConfig.cellVaildMode === 'obsolete',
},
'vxe-table--valid-error',
],
},
validOpts.message === 'tooltip' || tableData2.length === 1
? validTipOpts
: {}
)
)
: createCommentVNode(),
hasUseTooltip
? h$4(
resolveComponent('vxe-tooltip'),
__assign({ ref: refTooltip }, tipConfig)
)
: createCommentVNode(),
]
)
}
$xetable.renderVN = renderVN
provide('xecolgroup', null)
provide('$xetable', $xetable)
return $xetable
},
render: function () {
return this.renderVN()
},
})
var VxeTable = Object.assign(VxeTableComponent, {
install: function (app2) {
app2.component(VxeTableComponent.name, VxeTableComponent)
},
})
var Table$4 = VxeTable
dynamicApp.component(VxeTableComponent.name, VxeTableComponent)
var zhCN$1 = {
vxe: {
base: {
pleaseInput: '\u8BF7\u8F93\u5165',
pleaseSelect: '\u8BF7\u9009\u62E9',
},
loading: {
text: '\u52A0\u8F7D\u4E2D...',
},
error: {
groupFixed:
'\u5982\u679C\u4F7F\u7528\u5206\u7EC4\u8868\u5934\uFF0C\u56FA\u5B9A\u5217\u5FC5\u987B\u6309\u7EC4\u8BBE\u7F6E',
groupMouseRange:
'\u5206\u7EC4\u8868\u5934\u4E0E "{0}" \u4E0D\u80FD\u540C\u65F6\u4F7F\u7528\uFF0C\u8FD9\u53EF\u80FD\u4F1A\u51FA\u73B0\u9519\u8BEF',
groupTag:
'\u5206\u7EC4\u5217\u5934\u5E94\u8BE5\u4F7F\u7528 "{0}" \u800C\u4E0D\u662F "{1}"\uFF0C\u8FD9\u53EF\u80FD\u4F1A\u51FA\u73B0\u9519\u8BEF',
scrollErrProp:
'\u542F\u7528\u865A\u62DF\u6EDA\u52A8\u540E\u4E0D\u652F\u6301\u8BE5\u53C2\u6570 "{0}"',
errConflicts: '\u53C2\u6570 "{0}" \u4E0E "{1}" \u6709\u51B2\u7A81',
unableInsert:
'\u65E0\u6CD5\u63D2\u5165\u5230\u6307\u5B9A\u4F4D\u7F6E\uFF0C\u8BF7\u68C0\u67E5\u53C2\u6570\u662F\u5426\u6B63\u786E',
useErr:
'\u5B89\u88C5 "{0}" \u6A21\u5757\u65F6\u53D1\u751F\u9519\u8BEF\uFF0C\u53EF\u80FD\u987A\u5E8F\u4E0D\u6B63\u786E\uFF0C\u4F9D\u8D56\u7684\u6A21\u5757\u9700\u8981\u5728 Table \u4E4B\u524D\u5B89\u88C5',
barUnableLink: '\u5DE5\u5177\u680F\u65E0\u6CD5\u5173\u8054\u8868\u683C',
expandContent:
'\u5C55\u5F00\u884C\u7684\u63D2\u69FD\u5E94\u8BE5\u662F "content"\uFF0C\u8BF7\u68C0\u67E5\u662F\u5426\u6B63\u786E',
reqModule: '\u7F3A\u5C11 "{0}" \u6A21\u5757',
reqProp:
'\u7F3A\u5C11\u5FC5\u8981\u7684 "{0}" \u53C2\u6570\uFF0C\u8FD9\u53EF\u80FD\u4F1A\u5BFC\u81F4\u51FA\u73B0\u9519\u8BEF',
emptyProp: '\u53C2\u6570 "{0}" \u4E0D\u5141\u8BB8\u4E3A\u7A7A',
errProp:
'\u4E0D\u652F\u6301\u7684\u53C2\u6570 "{0}"\uFF0C\u53EF\u80FD\u4E3A "{1}"',
colRepet:
'column.{0}="{1}" \u91CD\u590D\u4E86\uFF0C\u8FD9\u53EF\u80FD\u4F1A\u5BFC\u81F4\u67D0\u4E9B\u529F\u80FD\u65E0\u6CD5\u4F7F\u7528',
notFunc: '\u65B9\u6CD5 "{0}" \u4E0D\u5B58\u5728',
errFunc: '\u53C2\u6570 "{0}" \u4E0D\u662F\u4E00\u4E2A\u65B9\u6CD5',
notValidators: '\u5168\u5C40\u6821\u9A8C "{0}" \u4E0D\u5B58\u5728',
notFormats: '\u5168\u5C40\u683C\u5F0F\u5316 "{0}" \u4E0D\u5B58\u5728',
notCommands: '\u5168\u5C40\u6307\u4EE4 "{0}" \u4E0D\u5B58\u5728',
notSlot: '\u63D2\u69FD "{0}" \u4E0D\u5B58\u5728',
noTree: '\u6811\u7ED3\u6784\u4E0D\u652F\u6301 "{0}"',
notProp: '\u4E0D\u652F\u6301\u7684\u53C2\u6570 "{0}"',
checkProp:
'\u5F53\u6570\u636E\u91CF\u8FC7\u5927\u65F6\u53EF\u80FD\u4F1A\u5BFC\u81F4\u590D\u9009\u6846\u5361\u987F\uFF0C\u5EFA\u8BAE\u8BBE\u7F6E\u53C2\u6570 "{0}" \u63D0\u5347\u6E32\u67D3\u901F\u5EA6',
coverProp:
'"{0}" \u7684\u53C2\u6570 "{1}" \u88AB\u8986\u76D6\uFF0C\u8FD9\u53EF\u80FD\u4F1A\u51FA\u73B0\u9519\u8BEF',
delFunc:
'\u65B9\u6CD5 "{0}" \u5DF2\u5E9F\u5F03\uFF0C\u8BF7\u4F7F\u7528 "{1}"',
delProp:
'\u53C2\u6570 "{0}" \u5DF2\u5E9F\u5F03\uFF0C\u8BF7\u4F7F\u7528 "{1}"',
delEvent:
'\u4E8B\u4EF6 "{0}" \u5DF2\u5E9F\u5F03\uFF0C\u8BF7\u4F7F\u7528 "{1}"',
removeProp:
'\u53C2\u6570 "{0}" \u5DF2\u5E9F\u5F03\uFF0C\u4E0D\u5EFA\u8BAE\u4F7F\u7528\uFF0C\u8FD9\u53EF\u80FD\u4F1A\u5BFC\u81F4\u51FA\u73B0\u9519\u8BEF',
errFormat:
'\u5168\u5C40\u7684\u683C\u5F0F\u5316\u5185\u5BB9\u5E94\u8BE5\u4F7F\u7528 "VXETable.formats" \u5B9A\u4E49\uFF0C\u6302\u8F7D "formatter={0}" \u7684\u65B9\u5F0F\u5DF2\u4E0D\u5EFA\u8BAE\u4F7F\u7528',
notType: '\u4E0D\u652F\u6301\u7684\u6587\u4EF6\u7C7B\u578B "{0}"',
notExp:
'\u8BE5\u6D4F\u89C8\u5668\u4E0D\u652F\u6301\u5BFC\u5165/\u5BFC\u51FA\u529F\u80FD',
impFields:
'\u5BFC\u5165\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u5B57\u6BB5\u540D\u548C\u6570\u636E\u683C\u5F0F\u662F\u5426\u6B63\u786E',
treeNotImp: '\u6811\u8868\u683C\u4E0D\u652F\u6301\u5BFC\u5165',
},
renderer: {
search: '\u641C\u7D22',
cases: {
equal: '\u7B49\u4E8E',
unequal: '\u4E0D\u7B49\u4E8E',
gt: '\u5927\u4E8E',
ge: '\u5927\u4E8E\u6216\u7B49\u4E8E',
lt: '\u5C0F\u4E8E',
le: '\u5C0F\u4E8E\u6216\u7B49\u4E8E',
begin: '\u5F00\u5934\u662F',
notbegin: '\u5F00\u5934\u4E0D\u662F',
endin: '\u7ED3\u5C3E\u662F',
notendin: '\u7ED3\u5C3E\u4E0D\u662F',
include: '\u5305\u542B',
exclude: '\u4E0D\u5305\u542B',
between: '\u4ECB\u4E8E',
custom: '\u81EA\u5B9A\u4E49\u7B5B\u9009',
insensitive: '\u4E0D\u533A\u5206\u5927\u5C0F\u5199',
isSensitive: '\u533A\u5206\u5927\u5C0F\u5199',
},
combination: {
menus: {
clearSort: '\u6E05\u9664\u6392\u5E8F',
sortAsc: '\u5347\u5E8F',
sortDesc: '\u964D\u5E8F',
fixedColumn: '\u9501\u5B9A\u5217',
fixedGroup: '\u9501\u5B9A\u7EC4',
cancelFixed: '\u53D6\u6D88\u9501\u5B9A',
fixedLeft: '\u9501\u5B9A\u5DE6\u4FA7',
fixedRight: '\u9501\u5B9A\u53F3\u4FA7',
clearFilter: '\u6E05\u9664\u7B5B\u9009',
textOption: '\u6587\u672C\u7B5B\u9009',
numberOption: '\u6570\u503C\u7B5B\u9009',
},
popup: {
title: '\u81EA\u5B9A\u4E49\u7B5B\u9009\u7684\u65B9\u5F0F',
currColumnTitle: '\u5F53\u524D\u5217\uFF1A',
and: '\u4E0E',
or: '\u6216',
describeHtml:
'\u53EF\u7528 ? \u4EE3\u8868\u5355\u4E2A\u5B57\u7B26
\u7528 * \u4EE3\u8868\u4EFB\u610F\u591A\u4E2A\u5B57\u7B26',
},
empty: '(\u7A7A\u767D)',
notData: '\u65E0\u5339\u914D\u9879',
},
},
pro: {
area: {
mergeErr:
'\u65E0\u6CD5\u5BF9\u5408\u5E76\u5355\u5143\u683C\u8FDB\u884C\u8BE5\u64CD\u4F5C',
multiErr:
'\u65E0\u6CD5\u5BF9\u591A\u91CD\u9009\u62E9\u533A\u57DF\u8FDB\u884C\u8BE5\u64CD\u4F5C',
extendErr:
'\u5982\u679C\u5EF6\u4F38\u7684\u533A\u57DF\u5305\u542B\u88AB\u5408\u5E76\u7684\u5355\u5143\u683C\uFF0C\u6240\u6709\u5408\u5E76\u7684\u5355\u5143\u683C\u9700\u5927\u5C0F\u76F8\u540C',
pasteMultiErr:
'\u65E0\u6CD5\u7C98\u8D34\uFF0C\u9700\u8981\u76F8\u540C\u5927\u5C0F\u7684\u590D\u5236\u7684\u533A\u57DF\u548C\u7C98\u8D34\u7684\u533A\u57DF\u624D\u80FD\u6267\u884C\u6B64\u64CD\u4F5C',
},
fnr: {
title: '\u67E5\u627E\u548C\u66FF\u6362',
findLabel: '\u67E5\u627E',
replaceLabel: '\u66FF\u6362',
findTitle: '\u67E5\u627E\u5185\u5BB9\uFF1A',
replaceTitle: '\u66FF\u6362\u4E3A\uFF1A',
tabs: {
find: '\u67E5\u627E',
replace: '\u66FF\u6362',
},
filter: {
re: '\u6B63\u5219\u8868\u8FBE\u5F0F',
whole: '\u5168\u8BCD\u5339\u914D',
sensitive: '\u533A\u5206\u5927\u5C0F\u5199',
},
btns: {
findNext: '\u67E5\u627E\u4E0B\u4E00\u4E2A',
findAll: '\u67E5\u627E\u5168\u90E8',
replace: '\u66FF\u6362',
replaceAll: '\u66FF\u6362\u5168\u90E8',
cancel: '\u53D6\u6D88',
},
header: {
seq: '#',
cell: '\u5355\u5143\u683C',
value: '\u503C',
},
empty: '(\u7A7A\u503C)',
reError: '\u65E0\u6548\u7684\u6B63\u5219\u8868\u8FBE\u5F0F',
recordCount: '\u5DF2\u627E\u5230 {0} \u4E2A\u5355\u5143\u683C',
notCell: '\u627E\u4E0D\u5230\u5339\u914D\u7684\u5355\u5143\u683C',
replaceSuccess: '\u6210\u529F\u66FF\u6362 {0} \u4E2A\u5355\u5143\u683C',
},
},
table: {
emptyText: '\u6682\u65E0\u6570\u636E',
allTitle: '\u5168\u9009/\u53D6\u6D88',
seqTitle: '#',
confirmFilter: '\u7B5B\u9009',
resetFilter: '\u91CD\u7F6E',
allFilter: '\u5168\u90E8',
sortAsc: '\u5347\u5E8F\uFF1A\u6700\u4F4E\u5230\u6700\u9AD8',
sortDesc: '\u964D\u5E8F\uFF1A\u6700\u9AD8\u5230\u6700\u4F4E',
filter: '\u5BF9\u6240\u9009\u7684\u5217\u542F\u7528\u7B5B\u9009',
impSuccess: '\u6210\u529F\u5BFC\u5165 {0} \u6761\u8BB0\u5F55',
expLoading: '\u6B63\u5728\u5BFC\u51FA\u4E2D',
expSuccess: '\u5BFC\u51FA\u6210\u529F',
expFilename: '\u5BFC\u51FA_{0}',
expOriginFilename: '\u5BFC\u51FA_\u6E90_{0}',
customTitle: '\u5217\u8BBE\u7F6E',
customAll: '\u5168\u90E8',
customConfirm: '\u786E\u8BA4',
customRestore: '\u91CD\u7F6E',
maxFixedCol:
'\u6700\u5927\u56FA\u5B9A\u5217\u7684\u6570\u91CF\u4E0D\u80FD\u8D85\u8FC7 {0} \u4E2A',
},
grid: {
selectOneRecord:
'\u8BF7\u81F3\u5C11\u9009\u62E9\u4E00\u6761\u8BB0\u5F55\uFF01',
deleteSelectRecord:
'\u60A8\u786E\u5B9A\u8981\u5220\u9664\u6240\u9009\u8BB0\u5F55\u5417\uFF1F',
removeSelectRecord:
'\u60A8\u786E\u5B9A\u8981\u79FB\u9664\u6240\u9009\u8BB0\u5F55\u5417\uFF1F',
dataUnchanged: '\u6570\u636E\u672A\u6539\u52A8\uFF01',
delSuccess: '\u6210\u529F\u5220\u9664\u6240\u9009\u8BB0\u5F55\uFF01',
saveSuccess: '\u4FDD\u5B58\u6210\u529F\uFF01',
operError: '\u53D1\u751F\u9519\u8BEF\uFF0C\u64CD\u4F5C\u5931\u8D25\uFF01',
},
select: {
search: '\u641C\u7D22',
loadingText: '\u52A0\u8F7D\u4E2D',
emptyText: '\u6682\u65E0\u6570\u636E',
},
pager: {
goto: '\u524D\u5F80',
pagesize: '{0}\u6761/\u9875',
total: '\u5171 {0} \u6761\u8BB0\u5F55',
pageClassifier: '\u9875',
prevPage: '\u4E0A\u4E00\u9875',
nextPage: '\u4E0B\u4E00\u9875',
prevJump: '\u5411\u4E0A\u8DF3\u9875',
nextJump: '\u5411\u4E0B\u8DF3\u9875',
},
alert: {
title: '\u6D88\u606F\u63D0\u793A',
},
button: {
confirm: '\u786E\u8BA4',
cancel: '\u53D6\u6D88',
},
import: {
modes: {
covering: '\u8986\u76D6',
insert: '\u65B0\u589E',
},
impTitle: '\u5BFC\u5165\u6570\u636E',
impFile: '\u6587\u4EF6\u540D',
impSelect: '\u9009\u62E9\u6587\u4EF6',
impType: '\u6587\u4EF6\u7C7B\u578B',
impOpts: '\u53C2\u6570\u8BBE\u7F6E',
impConfirm: '\u5BFC\u5165',
impCancel: '\u53D6\u6D88',
},
export: {
types: {
csv: 'CSV (\u9017\u53F7\u5206\u9694)(*.csv)',
html: '\u7F51\u9875(*.html)',
xml: 'XML \u6570\u636E(*.xml)',
txt: '\u6587\u672C\u6587\u4EF6(\u5236\u8868\u7B26\u5206\u9694)(*.txt)',
xls: 'Excel 97-2003 \u5DE5\u4F5C\u7C3F(*.xls)',
xlsx: 'Excel \u5DE5\u4F5C\u7C3F(*.xlsx)',
pdf: 'PDF (*.pdf)',
},
modes: {
current:
'\u5F53\u524D\u6570\u636E\uFF08\u5F53\u524D\u9875\u7684\u6570\u636E\uFF09',
selected:
'\u9009\u4E2D\u6570\u636E\uFF08\u5F53\u524D\u9875\u9009\u4E2D\u7684\u6570\u636E\uFF09',
all: '\u5168\u91CF\u6570\u636E\uFF08\u5305\u62EC\u6240\u6709\u5206\u9875\u7684\u6570\u636E\uFF09',
},
printTitle: '\u6253\u5370\u6570\u636E',
expTitle: '\u5BFC\u51FA\u6570\u636E',
expName: '\u6587\u4EF6\u540D',
expNamePlaceholder: '\u8BF7\u8F93\u5165\u6587\u4EF6\u540D',
expSheetName: '\u6807\u9898',
expSheetNamePlaceholder: '\u8BF7\u8F93\u5165\u6807\u9898',
expType: '\u4FDD\u5B58\u7C7B\u578B',
expMode: '\u9009\u62E9\u6570\u636E',
expCurrentColumn: '\u5168\u90E8\u5B57\u6BB5',
expColumn: '\u9009\u62E9\u5B57\u6BB5',
expOpts: '\u53C2\u6570\u8BBE\u7F6E',
expOptHeader: '\u8868\u5934',
expHeaderTitle: '\u662F\u5426\u9700\u8981\u8868\u5934',
expOptFooter: '\u8868\u5C3E',
expFooterTitle: '\u662F\u5426\u9700\u8981\u8868\u5C3E',
expOptColgroup: '\u5206\u7EC4\u8868\u5934',
expColgroupTitle:
'\u5982\u679C\u5B58\u5728\uFF0C\u5219\u652F\u6301\u5E26\u6709\u5206\u7EC4\u7ED3\u6784\u7684\u8868\u5934',
expOptMerge: '\u5408\u5E76',
expMergeTitle:
'\u5982\u679C\u5B58\u5728\uFF0C\u5219\u652F\u6301\u5E26\u6709\u5408\u5E76\u7ED3\u6784\u7684\u5355\u5143\u683C',
expOptAllExpand: '\u5C55\u5F00\u5C42\u7EA7',
expAllExpandTitle:
'\u5982\u679C\u5B58\u5728\uFF0C\u5219\u652F\u6301\u5C06\u5E26\u6709\u5C42\u7EA7\u7ED3\u6784\u7684\u6570\u636E\u5168\u90E8\u5C55\u5F00',
expOptUseStyle: '\u6837\u5F0F',
expUseStyleTitle:
'\u5982\u679C\u5B58\u5728\uFF0C\u5219\u652F\u6301\u5E26\u6837\u5F0F\u7684\u5355\u5143\u683C',
expOptOriginal: '\u6E90\u6570\u636E',
expOriginalTitle:
'\u5982\u679C\u4E3A\u6E90\u6570\u636E\uFF0C\u5219\u652F\u6301\u5BFC\u5165\u5230\u8868\u683C\u4E2D',
expPrint: '\u6253\u5370',
expConfirm: '\u5BFC\u51FA',
expCancel: '\u53D6\u6D88',
},
modal: {
zoomIn: '\u6700\u5927\u5316',
zoomOut: '\u8FD8\u539F',
close: '\u5173\u95ED',
},
form: {
folding: '\u6536\u8D77',
unfolding: '\u5C55\u5F00',
},
toolbar: {
import: '\u5BFC\u5165',
export: '\u5BFC\u51FA',
print: '\u6253\u5370',
refresh: '\u5237\u65B0',
zoomIn: '\u5168\u5C4F',
zoomOut: '\u8FD8\u539F',
custom: '\u5217\u8BBE\u7F6E',
customAll: '\u5168\u90E8',
customConfirm: '\u786E\u8BA4',
customRestore: '\u91CD\u7F6E',
fixedLeft: '\u56FA\u5B9A\u5728\u5DE6\u4FA7',
fixedRight: '\u56FA\u5B9A\u5728\u53F3\u4FA7',
cancelfixed: '\u53D6\u6D88\u56FA\u5B9A',
},
input: {
date: {
m1: '01 \u6708',
m2: '02 \u6708',
m3: '03 \u6708',
m4: '04 \u6708',
m5: '05 \u6708',
m6: '06 \u6708',
m7: '07 \u6708',
m8: '08 \u6708',
m9: '09 \u6708',
m10: '10 \u6708',
m11: '11 \u6708',
m12: '12 \u6708',
quarterLabel: '{0} \u5E74',
monthLabel: '{0} \u5E74',
dayLabel: '{0} \u5E74 {1}',
labelFormat: {
date: 'yyyy-MM-dd',
time: 'HH:mm:ss',
datetime: 'yyyy-MM-dd HH:mm:ss',
week: 'yyyy \u5E74\u7B2C WW \u5468',
month: 'yyyy-MM',
quarter: 'yyyy \u5E74\u7B2C q \u5B63\u5EA6',
year: 'yyyy',
},
weeks: {
w: '\u5468',
w0: '\u5468\u65E5',
w1: '\u5468\u4E00',
w2: '\u5468\u4E8C',
w3: '\u5468\u4E09',
w4: '\u5468\u56DB',
w5: '\u5468\u4E94',
w6: '\u5468\u516D',
},
months: {
m0: '\u4E00\u6708',
m1: '\u4E8C\u6708',
m2: '\u4E09\u6708',
m3: '\u56DB\u6708',
m4: '\u4E94\u6708',
m5: '\u516D\u6708',
m6: '\u4E03\u6708',
m7: '\u516B\u6708',
m8: '\u4E5D\u6708',
m9: '\u5341\u6708',
m10: '\u5341\u4E00\u6708',
m11: '\u5341\u4E8C\u6708',
},
quarters: {
q1: '\u7B2C\u4E00\u5B63\u5EA6',
q2: '\u7B2C\u4E8C\u5B63\u5EA6',
q3: '\u7B2C\u4E09\u5B63\u5EA6',
q4: '\u7B2C\u56DB\u5B63\u5EA6',
},
},
},
},
}
setup({
i18n: function (key2, args) {
return xeUtils.toFormatString(xeUtils.get(zhCN$1, key2), args)
},
})
var style$1 = ''
var zhCN = {}
Object.defineProperty(zhCN, '__esModule', {
value: true,
})
var default_1 = (zhCN.default = void 0)
var _default = {
vxe: {
base: {
pleaseInput: '\u8BF7\u8F93\u5165',
pleaseSelect: '\u8BF7\u9009\u62E9',
},
loading: {
text: '\u52A0\u8F7D\u4E2D...',
},
error: {
groupFixed:
'\u5982\u679C\u4F7F\u7528\u5206\u7EC4\u8868\u5934\uFF0C\u56FA\u5B9A\u5217\u5FC5\u987B\u6309\u7EC4\u8BBE\u7F6E',
groupMouseRange:
'\u5206\u7EC4\u8868\u5934\u4E0E "{0}" \u4E0D\u80FD\u540C\u65F6\u4F7F\u7528\uFF0C\u8FD9\u53EF\u80FD\u4F1A\u51FA\u73B0\u9519\u8BEF',
groupTag:
'\u5206\u7EC4\u5217\u5934\u5E94\u8BE5\u4F7F\u7528 "{0}" \u800C\u4E0D\u662F "{1}"\uFF0C\u8FD9\u53EF\u80FD\u4F1A\u51FA\u73B0\u9519\u8BEF',
scrollErrProp:
'\u542F\u7528\u865A\u62DF\u6EDA\u52A8\u540E\u4E0D\u652F\u6301\u8BE5\u53C2\u6570 "{0}"',
errConflicts: '\u53C2\u6570 "{0}" \u4E0E "{1}" \u6709\u51B2\u7A81',
unableInsert:
'\u65E0\u6CD5\u63D2\u5165\u5230\u6307\u5B9A\u4F4D\u7F6E\uFF0C\u8BF7\u68C0\u67E5\u53C2\u6570\u662F\u5426\u6B63\u786E',
useErr:
'\u5B89\u88C5 "{0}" \u6A21\u5757\u65F6\u53D1\u751F\u9519\u8BEF\uFF0C\u53EF\u80FD\u987A\u5E8F\u4E0D\u6B63\u786E\uFF0C\u4F9D\u8D56\u7684\u6A21\u5757\u9700\u8981\u5728 Table \u4E4B\u524D\u5B89\u88C5',
barUnableLink: '\u5DE5\u5177\u680F\u65E0\u6CD5\u5173\u8054\u8868\u683C',
expandContent:
'\u5C55\u5F00\u884C\u7684\u63D2\u69FD\u5E94\u8BE5\u662F "content"\uFF0C\u8BF7\u68C0\u67E5\u662F\u5426\u6B63\u786E',
reqModule: '\u7F3A\u5C11 "{0}" \u6A21\u5757',
reqProp:
'\u7F3A\u5C11\u5FC5\u8981\u7684 "{0}" \u53C2\u6570\uFF0C\u8FD9\u53EF\u80FD\u4F1A\u5BFC\u81F4\u51FA\u73B0\u9519\u8BEF',
emptyProp: '\u53C2\u6570 "{0}" \u4E0D\u5141\u8BB8\u4E3A\u7A7A',
errProp:
'\u4E0D\u652F\u6301\u7684\u53C2\u6570 "{0}"\uFF0C\u53EF\u80FD\u4E3A "{1}"',
colRepet:
'column.{0}="{1}" \u91CD\u590D\u4E86\uFF0C\u8FD9\u53EF\u80FD\u4F1A\u5BFC\u81F4\u67D0\u4E9B\u529F\u80FD\u65E0\u6CD5\u4F7F\u7528',
notFunc: '\u65B9\u6CD5 "{0}" \u4E0D\u5B58\u5728',
errFunc: '\u53C2\u6570 "{0}" \u4E0D\u662F\u4E00\u4E2A\u65B9\u6CD5',
notValidators: '\u5168\u5C40\u6821\u9A8C "{0}" \u4E0D\u5B58\u5728',
notFormats: '\u5168\u5C40\u683C\u5F0F\u5316 "{0}" \u4E0D\u5B58\u5728',
notCommands: '\u5168\u5C40\u6307\u4EE4 "{0}" \u4E0D\u5B58\u5728',
notSlot: '\u63D2\u69FD "{0}" \u4E0D\u5B58\u5728',
noTree: '\u6811\u7ED3\u6784\u4E0D\u652F\u6301 "{0}"',
notProp: '\u4E0D\u652F\u6301\u7684\u53C2\u6570 "{0}"',
checkProp:
'\u5F53\u6570\u636E\u91CF\u8FC7\u5927\u65F6\u53EF\u80FD\u4F1A\u5BFC\u81F4\u590D\u9009\u6846\u5361\u987F\uFF0C\u5EFA\u8BAE\u8BBE\u7F6E\u53C2\u6570 "{0}" \u63D0\u5347\u6E32\u67D3\u901F\u5EA6',
coverProp:
'"{0}" \u7684\u53C2\u6570 "{1}" \u88AB\u8986\u76D6\uFF0C\u8FD9\u53EF\u80FD\u4F1A\u51FA\u73B0\u9519\u8BEF',
delFunc:
'\u65B9\u6CD5 "{0}" \u5DF2\u5E9F\u5F03\uFF0C\u8BF7\u4F7F\u7528 "{1}"',
delProp:
'\u53C2\u6570 "{0}" \u5DF2\u5E9F\u5F03\uFF0C\u8BF7\u4F7F\u7528 "{1}"',
delEvent:
'\u4E8B\u4EF6 "{0}" \u5DF2\u5E9F\u5F03\uFF0C\u8BF7\u4F7F\u7528 "{1}"',
removeProp:
'\u53C2\u6570 "{0}" \u5DF2\u5E9F\u5F03\uFF0C\u4E0D\u5EFA\u8BAE\u4F7F\u7528\uFF0C\u8FD9\u53EF\u80FD\u4F1A\u5BFC\u81F4\u51FA\u73B0\u9519\u8BEF',
errFormat:
'\u5168\u5C40\u7684\u683C\u5F0F\u5316\u5185\u5BB9\u5E94\u8BE5\u4F7F\u7528 "VXETable.formats" \u5B9A\u4E49\uFF0C\u6302\u8F7D "formatter={0}" \u7684\u65B9\u5F0F\u5DF2\u4E0D\u5EFA\u8BAE\u4F7F\u7528',
notType: '\u4E0D\u652F\u6301\u7684\u6587\u4EF6\u7C7B\u578B "{0}"',
notExp:
'\u8BE5\u6D4F\u89C8\u5668\u4E0D\u652F\u6301\u5BFC\u5165/\u5BFC\u51FA\u529F\u80FD',
impFields:
'\u5BFC\u5165\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u5B57\u6BB5\u540D\u548C\u6570\u636E\u683C\u5F0F\u662F\u5426\u6B63\u786E',
treeNotImp: '\u6811\u8868\u683C\u4E0D\u652F\u6301\u5BFC\u5165',
},
renderer: {
search: '\u641C\u7D22',
cases: {
equal: '\u7B49\u4E8E',
unequal: '\u4E0D\u7B49\u4E8E',
gt: '\u5927\u4E8E',
ge: '\u5927\u4E8E\u6216\u7B49\u4E8E',
lt: '\u5C0F\u4E8E',
le: '\u5C0F\u4E8E\u6216\u7B49\u4E8E',
begin: '\u5F00\u5934\u662F',
notbegin: '\u5F00\u5934\u4E0D\u662F',
endin: '\u7ED3\u5C3E\u662F',
notendin: '\u7ED3\u5C3E\u4E0D\u662F',
include: '\u5305\u542B',
exclude: '\u4E0D\u5305\u542B',
between: '\u4ECB\u4E8E',
custom: '\u81EA\u5B9A\u4E49\u7B5B\u9009',
insensitive: '\u4E0D\u533A\u5206\u5927\u5C0F\u5199',
isSensitive: '\u533A\u5206\u5927\u5C0F\u5199',
},
combination: {
menus: {
clearSort: '\u6E05\u9664\u6392\u5E8F',
sortAsc: '\u5347\u5E8F',
sortDesc: '\u964D\u5E8F',
fixedColumn: '\u9501\u5B9A\u5217',
fixedGroup: '\u9501\u5B9A\u7EC4',
cancelFixed: '\u53D6\u6D88\u9501\u5B9A',
fixedLeft: '\u9501\u5B9A\u5DE6\u4FA7',
fixedRight: '\u9501\u5B9A\u53F3\u4FA7',
clearFilter: '\u6E05\u9664\u7B5B\u9009',
textOption: '\u6587\u672C\u7B5B\u9009',
numberOption: '\u6570\u503C\u7B5B\u9009',
},
popup: {
title: '\u81EA\u5B9A\u4E49\u7B5B\u9009\u7684\u65B9\u5F0F',
currColumnTitle: '\u5F53\u524D\u5217\uFF1A',
and: '\u4E0E',
or: '\u6216',
describeHtml:
'\u53EF\u7528 ? \u4EE3\u8868\u5355\u4E2A\u5B57\u7B26
\u7528 * \u4EE3\u8868\u4EFB\u610F\u591A\u4E2A\u5B57\u7B26',
},
empty: '(\u7A7A\u767D)',
notData: '\u65E0\u5339\u914D\u9879',
},
},
pro: {
area: {
mergeErr:
'\u65E0\u6CD5\u5BF9\u5408\u5E76\u5355\u5143\u683C\u8FDB\u884C\u8BE5\u64CD\u4F5C',
multiErr:
'\u65E0\u6CD5\u5BF9\u591A\u91CD\u9009\u62E9\u533A\u57DF\u8FDB\u884C\u8BE5\u64CD\u4F5C',
extendErr:
'\u5982\u679C\u5EF6\u4F38\u7684\u533A\u57DF\u5305\u542B\u88AB\u5408\u5E76\u7684\u5355\u5143\u683C\uFF0C\u6240\u6709\u5408\u5E76\u7684\u5355\u5143\u683C\u9700\u5927\u5C0F\u76F8\u540C',
pasteMultiErr:
'\u65E0\u6CD5\u7C98\u8D34\uFF0C\u9700\u8981\u76F8\u540C\u5927\u5C0F\u7684\u590D\u5236\u7684\u533A\u57DF\u548C\u7C98\u8D34\u7684\u533A\u57DF\u624D\u80FD\u6267\u884C\u6B64\u64CD\u4F5C',
},
fnr: {
title: '\u67E5\u627E\u548C\u66FF\u6362',
findLabel: '\u67E5\u627E',
replaceLabel: '\u66FF\u6362',
findTitle: '\u67E5\u627E\u5185\u5BB9\uFF1A',
replaceTitle: '\u66FF\u6362\u4E3A\uFF1A',
tabs: {
find: '\u67E5\u627E',
replace: '\u66FF\u6362',
},
filter: {
re: '\u6B63\u5219\u8868\u8FBE\u5F0F',
whole: '\u5168\u8BCD\u5339\u914D',
sensitive: '\u533A\u5206\u5927\u5C0F\u5199',
},
btns: {
findNext: '\u67E5\u627E\u4E0B\u4E00\u4E2A',
findAll: '\u67E5\u627E\u5168\u90E8',
replace: '\u66FF\u6362',
replaceAll: '\u66FF\u6362\u5168\u90E8',
cancel: '\u53D6\u6D88',
},
header: {
seq: '#',
cell: '\u5355\u5143\u683C',
value: '\u503C',
},
empty: '(\u7A7A\u503C)',
reError: '\u65E0\u6548\u7684\u6B63\u5219\u8868\u8FBE\u5F0F',
recordCount: '\u5DF2\u627E\u5230 {0} \u4E2A\u5355\u5143\u683C',
notCell: '\u627E\u4E0D\u5230\u5339\u914D\u7684\u5355\u5143\u683C',
replaceSuccess: '\u6210\u529F\u66FF\u6362 {0} \u4E2A\u5355\u5143\u683C',
},
},
table: {
emptyText: '\u6682\u65E0\u6570\u636E',
allTitle: '\u5168\u9009/\u53D6\u6D88',
seqTitle: '#',
confirmFilter: '\u7B5B\u9009',
resetFilter: '\u91CD\u7F6E',
allFilter: '\u5168\u90E8',
sortAsc: '\u5347\u5E8F\uFF1A\u6700\u4F4E\u5230\u6700\u9AD8',
sortDesc: '\u964D\u5E8F\uFF1A\u6700\u9AD8\u5230\u6700\u4F4E',
filter: '\u5BF9\u6240\u9009\u7684\u5217\u542F\u7528\u7B5B\u9009',
impSuccess: '\u6210\u529F\u5BFC\u5165 {0} \u6761\u8BB0\u5F55',
expLoading: '\u6B63\u5728\u5BFC\u51FA\u4E2D',
expSuccess: '\u5BFC\u51FA\u6210\u529F',
expFilename: '\u5BFC\u51FA_{0}',
expOriginFilename: '\u5BFC\u51FA_\u6E90_{0}',
customTitle: '\u5217\u8BBE\u7F6E',
customAll: '\u5168\u90E8',
customConfirm: '\u786E\u8BA4',
customRestore: '\u91CD\u7F6E',
maxFixedCol:
'\u6700\u5927\u56FA\u5B9A\u5217\u7684\u6570\u91CF\u4E0D\u80FD\u8D85\u8FC7 {0} \u4E2A',
},
grid: {
selectOneRecord:
'\u8BF7\u81F3\u5C11\u9009\u62E9\u4E00\u6761\u8BB0\u5F55\uFF01',
deleteSelectRecord:
'\u60A8\u786E\u5B9A\u8981\u5220\u9664\u6240\u9009\u8BB0\u5F55\u5417\uFF1F',
removeSelectRecord:
'\u60A8\u786E\u5B9A\u8981\u79FB\u9664\u6240\u9009\u8BB0\u5F55\u5417\uFF1F',
dataUnchanged: '\u6570\u636E\u672A\u6539\u52A8\uFF01',
delSuccess: '\u6210\u529F\u5220\u9664\u6240\u9009\u8BB0\u5F55\uFF01',
saveSuccess: '\u4FDD\u5B58\u6210\u529F\uFF01',
operError: '\u53D1\u751F\u9519\u8BEF\uFF0C\u64CD\u4F5C\u5931\u8D25\uFF01',
},
select: {
search: '\u641C\u7D22',
loadingText: '\u52A0\u8F7D\u4E2D',
emptyText: '\u6682\u65E0\u6570\u636E',
},
pager: {
goto: '\u524D\u5F80',
pagesize: '{0}\u6761/\u9875',
total: '\u5171 {0} \u6761\u8BB0\u5F55',
pageClassifier: '\u9875',
prevPage: '\u4E0A\u4E00\u9875',
nextPage: '\u4E0B\u4E00\u9875',
prevJump: '\u5411\u4E0A\u8DF3\u9875',
nextJump: '\u5411\u4E0B\u8DF3\u9875',
},
alert: {
title: '\u6D88\u606F\u63D0\u793A',
},
button: {
confirm: '\u786E\u8BA4',
cancel: '\u53D6\u6D88',
},
import: {
modes: {
covering: '\u8986\u76D6',
insert: '\u65B0\u589E',
},
impTitle: '\u5BFC\u5165\u6570\u636E',
impFile: '\u6587\u4EF6\u540D',
impSelect: '\u9009\u62E9\u6587\u4EF6',
impType: '\u6587\u4EF6\u7C7B\u578B',
impOpts: '\u53C2\u6570\u8BBE\u7F6E',
impConfirm: '\u5BFC\u5165',
impCancel: '\u53D6\u6D88',
},
export: {
types: {
csv: 'CSV (\u9017\u53F7\u5206\u9694)(*.csv)',
html: '\u7F51\u9875(*.html)',
xml: 'XML \u6570\u636E(*.xml)',
txt: '\u6587\u672C\u6587\u4EF6(\u5236\u8868\u7B26\u5206\u9694)(*.txt)',
xls: 'Excel 97-2003 \u5DE5\u4F5C\u7C3F(*.xls)',
xlsx: 'Excel \u5DE5\u4F5C\u7C3F(*.xlsx)',
pdf: 'PDF (*.pdf)',
},
modes: {
current:
'\u5F53\u524D\u6570\u636E\uFF08\u5F53\u524D\u9875\u7684\u6570\u636E\uFF09',
selected:
'\u9009\u4E2D\u6570\u636E\uFF08\u5F53\u524D\u9875\u9009\u4E2D\u7684\u6570\u636E\uFF09',
all: '\u5168\u91CF\u6570\u636E\uFF08\u5305\u62EC\u6240\u6709\u5206\u9875\u7684\u6570\u636E\uFF09',
},
printTitle: '\u6253\u5370\u6570\u636E',
expTitle: '\u5BFC\u51FA\u6570\u636E',
expName: '\u6587\u4EF6\u540D',
expNamePlaceholder: '\u8BF7\u8F93\u5165\u6587\u4EF6\u540D',
expSheetName: '\u6807\u9898',
expSheetNamePlaceholder: '\u8BF7\u8F93\u5165\u6807\u9898',
expType: '\u4FDD\u5B58\u7C7B\u578B',
expMode: '\u9009\u62E9\u6570\u636E',
expCurrentColumn: '\u5168\u90E8\u5B57\u6BB5',
expColumn: '\u9009\u62E9\u5B57\u6BB5',
expOpts: '\u53C2\u6570\u8BBE\u7F6E',
expOptHeader: '\u8868\u5934',
expHeaderTitle: '\u662F\u5426\u9700\u8981\u8868\u5934',
expOptFooter: '\u8868\u5C3E',
expFooterTitle: '\u662F\u5426\u9700\u8981\u8868\u5C3E',
expOptColgroup: '\u5206\u7EC4\u8868\u5934',
expColgroupTitle:
'\u5982\u679C\u5B58\u5728\uFF0C\u5219\u652F\u6301\u5E26\u6709\u5206\u7EC4\u7ED3\u6784\u7684\u8868\u5934',
expOptMerge: '\u5408\u5E76',
expMergeTitle:
'\u5982\u679C\u5B58\u5728\uFF0C\u5219\u652F\u6301\u5E26\u6709\u5408\u5E76\u7ED3\u6784\u7684\u5355\u5143\u683C',
expOptAllExpand: '\u5C55\u5F00\u5C42\u7EA7',
expAllExpandTitle:
'\u5982\u679C\u5B58\u5728\uFF0C\u5219\u652F\u6301\u5C06\u5E26\u6709\u5C42\u7EA7\u7ED3\u6784\u7684\u6570\u636E\u5168\u90E8\u5C55\u5F00',
expOptUseStyle: '\u6837\u5F0F',
expUseStyleTitle:
'\u5982\u679C\u5B58\u5728\uFF0C\u5219\u652F\u6301\u5E26\u6837\u5F0F\u7684\u5355\u5143\u683C',
expOptOriginal: '\u6E90\u6570\u636E',
expOriginalTitle:
'\u5982\u679C\u4E3A\u6E90\u6570\u636E\uFF0C\u5219\u652F\u6301\u5BFC\u5165\u5230\u8868\u683C\u4E2D',
expPrint: '\u6253\u5370',
expConfirm: '\u5BFC\u51FA',
expCancel: '\u53D6\u6D88',
},
modal: {
zoomIn: '\u6700\u5927\u5316',
zoomOut: '\u8FD8\u539F',
close: '\u5173\u95ED',
},
form: {
folding: '\u6536\u8D77',
unfolding: '\u5C55\u5F00',
},
toolbar: {
import: '\u5BFC\u5165',
export: '\u5BFC\u51FA',
print: '\u6253\u5370',
refresh: '\u5237\u65B0',
zoomIn: '\u5168\u5C4F',
zoomOut: '\u8FD8\u539F',
custom: '\u5217\u8BBE\u7F6E',
customAll: '\u5168\u90E8',
customConfirm: '\u786E\u8BA4',
customRestore: '\u91CD\u7F6E',
fixedLeft: '\u56FA\u5B9A\u5728\u5DE6\u4FA7',
fixedRight: '\u56FA\u5B9A\u5728\u53F3\u4FA7',
cancelfixed: '\u53D6\u6D88\u56FA\u5B9A',
},
input: {
date: {
m1: '01 \u6708',
m2: '02 \u6708',
m3: '03 \u6708',
m4: '04 \u6708',
m5: '05 \u6708',
m6: '06 \u6708',
m7: '07 \u6708',
m8: '08 \u6708',
m9: '09 \u6708',
m10: '10 \u6708',
m11: '11 \u6708',
m12: '12 \u6708',
quarterLabel: '{0} \u5E74',
monthLabel: '{0} \u5E74',
dayLabel: '{0} \u5E74 {1}',
labelFormat: {
date: 'yyyy-MM-dd',
time: 'HH:mm:ss',
datetime: 'yyyy-MM-dd HH:mm:ss',
week: 'yyyy \u5E74\u7B2C WW \u5468',
month: 'yyyy-MM',
quarter: 'yyyy \u5E74\u7B2C q \u5B63\u5EA6',
year: 'yyyy',
},
weeks: {
w: '\u5468',
w0: '\u5468\u65E5',
w1: '\u5468\u4E00',
w2: '\u5468\u4E8C',
w3: '\u5468\u4E09',
w4: '\u5468\u56DB',
w5: '\u5468\u4E94',
w6: '\u5468\u516D',
},
months: {
m0: '\u4E00\u6708',
m1: '\u4E8C\u6708',
m2: '\u4E09\u6708',
m3: '\u56DB\u6708',
m4: '\u4E94\u6708',
m5: '\u516D\u6708',
m6: '\u4E03\u6708',
m7: '\u516B\u6708',
m8: '\u4E5D\u6708',
m9: '\u5341\u6708',
m10: '\u5341\u4E00\u6708',
m11: '\u5341\u4E8C\u6708',
},
quarters: {
q1: '\u7B2C\u4E00\u5B63\u5EA6',
q2: '\u7B2C\u4E8C\u5B63\u5EA6',
q3: '\u7B2C\u4E09\u5B63\u5EA6',
q4: '\u7B2C\u56DB\u5B63\u5EA6',
},
},
},
},
}
default_1 = zhCN.default = _default
var vxeTable = ''
VXETable.use(VXETablePluginElement)
VXETable.setup({
version: 0,
zIndex: 2800,
table: {
autoResize: true,
},
tooltipConfig: {
enterable: true,
},
})
VXETable.setup({
i18n: (key2, args) =>
xeUtils.toFormatString(xeUtils.get(default_1, key2), args),
})
function useTable(app2) {
app2
.use(Header$6)
.use(Icon$2)
.use(Column)
.use(Edit)
.use(Validator)
.use(Table$4)
.use(Tooltip)
.use(Grid$4)
.use(List)
.use(Input$1)
.use(Select$1)
.use(Optgroup)
.use(Option)
}
function listenStart() {
log({
flag: '\u{1F680}',
type: 'start',
})
log({
flag: '\u{1F7E2}',
type: 'location',
href: location.href,
})
}
function listenWindowEvents() {
const windowEventTypeList = [
'load',
'beforeunload',
'unload',
'pageshow',
'pagehide',
'visibilitychange',
'resize',
'hashchange',
'close',
'abort',
]
for (const type4 of windowEventTypeList) {
addEventListener(
type4,
function () {
log({
flag: '\u{1F7E1}',
type: type4,
visibilityState: document.visibilityState,
href: location.href,
innerWidth,
innerHeight,
})
},
true
)
}
}
function listenErrorEvents() {
const errorEventTypeList = ['error', 'unhandledrejection']
for (const type4 of errorEventTypeList) {
addEventListener(
type4,
function (e2) {
logError$1(type4, e2)
},
true
)
}
}
function listenKeyboardMouseEvents() {
const mouseEventTypeList = [
'keydown',
'keyup',
'mousedown',
'mouseup',
'dragstart',
'dragend',
'drop',
'touchstart',
'touchend',
]
for (const type4 of mouseEventTypeList) {
addEventListener(
type4,
function (e2) {
const node2 = e2.target
if (!(node2 instanceof HTMLElement)) return
log({
flag: '\u26AB',
type: type4,
textContent: node2.textContent?.trim().slice(0, 10) || '',
el: getCssSelector(node2),
...(e2 instanceof KeyboardEvent ? { key: e2.key } : null),
...(e2 instanceof MouseEvent ? { button: e2.button } : null),
})
},
true
)
}
}
function listenXMLHttpRequest() {
const XMLHttpRequest2 = globalThis.XMLHttpRequest
globalThis.XMLHttpRequest = class extends XMLHttpRequest2 {
__info__ = {}
open(...args) {
this.__info__ = {
method: arguments[0],
url: arguments[1],
xhrId: Date.now(),
}
return super.open(...args)
}
setRequestHeader(...args) {
this.__info__ = {
...this.__info__,
headers: {
...this.__info__.headers,
[arguments[0]]: arguments[1],
},
}
return super.setRequestHeader(...args)
}
send(...args) {
this.__info__ = {
...this.__info__,
body: arguments[0],
}
log({
flag: '\u{1F535}',
type: 'xhr',
...this.__info__,
})
this.addEventListener(
'load',
() => {
let response = this.response
try {
response = JSON.parse(response)
} catch {}
log({
flag: this.status < 400 ? '\u{1F535}' : '\u{1F534}',
type: 'xhr.response',
status: this.status,
url: this.__info__.url,
statusText: this.statusText,
response,
headers: this.getAllResponseHeaders()
.split(/\r?\n/g)
.filter(Boolean),
xhrId: this.__info__.xhrId,
})
},
{ once: true }
)
this.addEventListener(
'error',
(e2) => {
logError$1('xhr.error', e2, {
url: this.__info__.url,
xhrId: this.__info__.xhrId,
})
},
{ once: true }
)
return super.send(...args)
}
}
}
function listenFetch() {
const fetch2 = globalThis.fetch
globalThis.fetch = function () {
const promise2 = fetch2.apply(this, arguments)
const info = {
method: arguments[1]?.method || 'GET',
url: arguments[0],
body: arguments[1]?.body,
fetchId: Date.now(),
}
log({
flag: '\u{1F535}',
type: 'fetch',
...info,
})
promise2
.then(async (res) => {
let response = await res.clone().text()
try {
response = JSON.parse(response)
} catch {}
log({
flag: res.status < 400 ? '\u{1F535}' : '\u{1F534}',
type: 'fetch.response',
status: res.status,
url: info.url,
statusText: res.statusText,
response,
headers: (function () {
const map2 = {}
res.headers.forEach((v4, k2) => {
map2[k2] = v4
})
return map2
})(),
fetchId: info.fetchId,
})
})
.catch((reason) => {
logError$1('fetch.error', reason, {
url: info.url,
reason,
fetchId: info.fetchId,
})
})
return promise2
}
}
function listenWebSocket() {
const WebSocket2 = globalThis.WebSocket
globalThis.WebSocket = class extends WebSocket2 {
constructor(...args) {
super(...args)
const events2 = ['open', 'error', 'close']
for (const type4 of events2) {
this.addEventListener(type4, function () {
log({
flag: '\u{1F7E4}',
type: 'WebSocket',
event: type4,
url: args[0],
...(args[1] ? { protocols: args[1] } : null),
})
})
}
}
}
}
function getCssSelector(node2) {
if (!node2) return ''
if (node2 === document.body) return 'body'
const s2 = `${node2.localName}#${node2.id || void 0}.${node2.classList[0]}`
.replace(/#undefined/, '')
.replace(/(\.)undefined/, '')
return getCssSelector(node2.parentElement) + ' > ' + s2
}
let db
let dbp = new Promise((rs2) => {
const dbr = indexedDB.open('log')
dbr.onupgradeneeded = function () {
dbr.result.createObjectStore('store', {
autoIncrement: true,
})
}
dbr.onsuccess = () => {
rs2(dbr.result)
}
dbr.onerror = (e2) => {
console.warn(e2)
rs2(void 0)
}
dbr.onblocked = (e2) => {
console.warn(e2)
rs2(void 0)
}
setTimeout(() => {
rs2(void 0)
}, 500)
}).then((res) => {
db = res
return db
})
const runId = getTimeString()
const sessionId = (sessionStorage['_logSessionId_'] =
sessionStorage['_logSessionId_'] || runId)
function getTimeString(date4 = new Date()) {
return `${date4.toLocaleString()}.${String(date4.getMilliseconds()).padStart(
3,
'0'
)}`
}
async function log(info) {
const date4 = new Date()
setTimeout(async () => {
await dbp
if (!db) return
try {
const item2 = {
time: getTimeString(date4),
...info,
runId,
sessionId,
}
const transaction = db.transaction('store', 'readwrite')
transaction.onerror = function (e2) {
console.error(e2)
}
const store2 = transaction.objectStore('store')
store2.add(item2)
const max3 = 5e3
const count2 = store2.count()
count2.onsuccess = function () {
if (count2.result > max3) {
const keys3 = store2.getAllKeys(void 0, 10)
keys3.onsuccess = function () {
for (const key2 of keys3.result) {
store2.delete(key2)
}
}
}
}
} catch (e2) {
console.error(e2)
}
})
}
function logError$1(type4, e2, info = {}) {
log({
flag: '\u{1F534}',
type: type4,
...(e2 instanceof ErrorEvent ? { message: e2.message } : null),
...(e2 instanceof PromiseRejectionEvent ? { message: e2.reason } : null),
...(e2 instanceof ErrorEvent ? { stack: e2.error?.stack } : null),
...info,
})
}
listenStart()
listenWindowEvents()
listenErrorEvents()
listenKeyboardMouseEvents()
listenXMLHttpRequest()
listenFetch()
listenWebSocket()
var font = ''
var index$n = ''
var rewriteBase = ''
var rewriteElement = ''
var rewriteElementSelect = ''
var element_overwrite = ''
var iconfont = ''
;(window._iconfont_svg_string_3273823 =
''),
(function (h2) {
var c2 = (c2 = document.getElementsByTagName('script'))[c2.length - 1],
l2 = c2.getAttribute('data-injectcss'),
c2 = c2.getAttribute('data-disable-injectsvg')
if (!c2) {
var i2,
a2,
z2,
o2,
v4,
t3 = function (c3, l3) {
l3.parentNode.insertBefore(c3, l3)
}
if (l2 && !h2.__iconfont__svg__cssinject__) {
h2.__iconfont__svg__cssinject__ = true
try {
document.write(
''
)
} catch (c3) {
console && console.log(c3)
}
}
;(i2 = function () {
var c3,
l3 = document.createElement('div')
;(l3.innerHTML = h2._iconfont_svg_string_3273823),
(l3 = l3.getElementsByTagName('svg')[0]) &&
(l3.setAttribute('aria-hidden', 'true'),
(l3.style.position = 'absolute'),
(l3.style.width = 0),
(l3.style.height = 0),
(l3.style.overflow = 'hidden'),
(l3 = l3),
(c3 = document.body).firstChild
? t3(l3, c3.firstChild)
: c3.appendChild(l3))
}),
document.addEventListener
? ~['complete', 'loaded', 'interactive'].indexOf(document.readyState)
? setTimeout(i2, 0)
: ((a2 = function () {
document.removeEventListener('DOMContentLoaded', a2, false),
i2()
}),
document.addEventListener('DOMContentLoaded', a2, false))
: document.attachEvent &&
((z2 = i2),
(o2 = h2.document),
(v4 = false),
s2(),
(o2.onreadystatechange = function () {
'complete' == o2.readyState &&
((o2.onreadystatechange = null), m2())
}))
}
function m2() {
v4 || ((v4 = true), z2())
}
function s2() {
try {
o2.documentElement.doScroll('left')
} catch (c3) {
return void setTimeout(s2, 50)
}
m2()
}
})(window)
var waves = ''
const context = '@@wavesContext'
function colorRgb(color2) {
var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/
if (reg.test(color2)) {
if (color2.length === 4) {
var colorNew = '#'
for (var i2 = 1; i2 < 4; i2 += 1) {
colorNew += color2.slice(i2, i2 + 1).concat(color2.slice(i2, i2 + 1))
}
color2 = colorNew
}
var colorChange2 = []
for (var n2 = 1; n2 < 7; n2 += 2) {
colorChange2.push(parseInt('0x' + color2.slice(n2, n2 + 2)))
}
return 'RGB(' + colorChange2.join(',') + ')'
} else {
return color2
}
}
function colorChange(color2, alpha) {
let rgbaVal = ''
if (/^#/.test(color2)) {
colorChange(colorRgb(color2), alpha)
} else if (/^(rgba|RGBA)/.test(color2)) {
rgbaVal = color2.substring(5, color2.lastIndexOf(','))
} else if (/^(rgb|RGB)/.test(color2)) {
rgbaVal = color2.substring(4, color2.length - 1)
}
return `rgba(${rgbaVal},${alpha})`
}
function handleClick(el2, binding) {
function handle(e2) {
const customOpts = Object.assign({}, binding.value)
const opts = Object.assign(
{
ele: el2,
type: 'hit',
color: colorChange(window.getComputedStyle(el2).color, 0.3),
},
customOpts
)
const target2 = opts.ele
if (target2) {
target2.style.position = 'relative'
target2.style.overflow = 'hidden'
const rect = target2.getBoundingClientRect()
let ripple = target2.querySelector('.waves-ripple')
if (!ripple) {
ripple = document.createElement('span')
ripple.className = 'waves-ripple'
ripple.style.height = ripple.style.width =
Math.max(rect.width, rect.height) + 'px'
target2.appendChild(ripple)
} else {
ripple.className = 'waves-ripple'
}
switch (opts.type) {
case 'center':
ripple.style.top = rect.height / 2 - ripple.offsetHeight / 2 + 'px'
ripple.style.left = rect.width / 2 - ripple.offsetWidth / 2 + 'px'
break
default:
ripple.style.top =
(e2.pageY -
rect.top -
ripple.offsetHeight / 2 -
document.documentElement.scrollTop || document.body.scrollTop) +
'px'
ripple.style.left =
(e2.pageX -
rect.left -
ripple.offsetWidth / 2 -
document.documentElement.scrollLeft || document.body.scrollLeft) +
'px'
}
ripple.style.backgroundColor = opts.color
ripple.className = 'waves-ripple z-active'
if (!el2[context]) {
el2[context] = {
removeHandle: handle,
}
} else {
el2[context].removeHandle = handle
}
return false
}
}
return handle
}
var directives = (app2) => {
app2.directive('waves', {
mounted(el2, binding) {
el2.addEventListener('click', handleClick(el2, binding), false)
},
unmounted(el2, binding) {
el2?.removeEventListener('click', handleClick(el2, binding), false)
},
})
}
var track = (app2) => {
let uploadServerTimer
const uploadTimeout = 1e3 * 60 * 10
let cleanup = () => {}
app2.directive('track', {
mounted(el2, binding) {
let { arg, value: value2 } = binding
el2.setAttribute('mountedTimeStamp', new Date().getTime())
if (arg === 'page') {
userBehaviorAnalysis({ ...value2, action: 'Enter' })
}
cleanup = useEventListener(window, 'unload', async () => {
let durationSpan =
(new Date().getTime() - el2.getAttribute('mountedTimeStamp')) / 1e3
await userBehaviorAnalysis({
...value2,
durationSpan,
action: 'Leave',
})
})
function startUploadServerTimer() {
uploadServerTimer = setTimeout(async () => {
let durationSpan =
(new Date().getTime() - el2.getAttribute('mountedTimeStamp')) / 1e3
el2.setAttribute('mountedTimeStamp', new Date().getTime())
await userBehaviorAnalysis({
...value2,
durationSpan,
action: 'Leave',
})
startUploadServerTimer()
}, uploadTimeout)
}
startUploadServerTimer()
},
unmounted(el2, binding) {
clearTimeout(uploadServerTimer)
cleanup()
let { arg, value: value2 } = binding
let durationSpan = 0
if (arg === 'page') {
durationSpan =
(new Date().getTime() - el2.getAttribute('mountedTimeStamp')) / 1e3
userBehaviorAnalysis({
...value2,
durationSpan,
action: 'Leave',
})
}
},
updated(el2, binding) {
let { arg, value: value2, oldValue } = binding
if (arg === 'page') {
if (lodash.isEqual(oldValue, value2)) return
let durationSpan = 0
if (arg === 'page') {
durationSpan =
(new Date().getTime() - el2.getAttribute('mountedTimeStamp')) / 1e3
userBehaviorAnalysis({
...oldValue,
durationSpan,
action: 'Leave',
})
el2.setAttribute('mountedTimeStamp', new Date().getTime())
userBehaviorAnalysis({ ...value2, action: 'Enter' })
}
}
},
})
}
function isClickOutsideElement(targetElement, outsideElementSelector) {
return (
targetElement.classList.contains(outsideElementSelector) ||
targetElement.closest(outsideElementSelector)
)
}
const draggable = {
mounted: function (el2, binding) {
el2.style.position = 'absolute'
let disX
let disY
const handleMouseDown = function (e2) {
if (isClickOutsideElement(e2.target, binding.value.exclude)) return
disX = e2.pageX - el2.offsetLeft
disY = e2.pageY - el2.offsetTop
document.body.style.userSelect = 'none'
document.addEventListener('mousemove', handleMouseMove)
document.addEventListener('mouseup', handleMouseUp)
}
const handleMouseMove = function (e2) {
let x2 = e2.pageX - disX
let y2 = e2.pageY - disY
const maxX =
parseInt(window.getComputedStyle(el2.parentNode).width) -
parseInt(window.getComputedStyle(el2).width)
const maxY =
parseInt(window.getComputedStyle(el2.parentNode).height) -
parseInt(window.getComputedStyle(el2).height)
if (x2 < 0) {
x2 = 0
} else if (x2 > maxX) {
x2 = maxX
}
if (y2 < 0) {
y2 = 0
} else if (y2 > maxY) {
y2 = maxY
}
el2.style.left = x2 + 'px'
el2.style.top = y2 + 'px'
}
const handleMouseUp = function () {
document.removeEventListener('mousemove', handleMouseMove)
document.removeEventListener('mouseup', handleMouseUp)
document.body.style.userSelect = ''
}
el2.addEventListener('mousedown', handleMouseDown)
el2.handleMouseDown = handleMouseDown
},
beforeUnmount: function (el2) {
const handleMouseDown = el2.handleMouseDown
el2.removeEventListener('mousedown', handleMouseDown)
el2.removeEventListener('mousedown', el2.handleMouseDown)
},
}
var draggable$1 = (app2) => {
app2.directive('draggable', draggable)
}
function addMouseHover() {
let timer2 = null
let isExecute = false
addEventListener(
'mouseover',
(e2) => {
if (!isExecute) {
timer2 = setTimeout(() => {
isExecute = true
e2.target?.dispatchEvent(new MouseEvent('hover', { bubbles: true }))
}, 1e3)
}
},
true
)
addEventListener(
'mouseout',
() => {
clearTimeout(timer2)
isExecute = false
},
true
)
}
function addMouseLongPress() {
let timer2 = null
let isExecute = false
addEventListener(
'mousedown',
(e2) => {
if (!isExecute) {
timer2 = setTimeout(() => {
isExecute = true
e2.target?.dispatchEvent(
new CustomEvent('mouselongpress', { bubbles: true })
)
}, 1e3)
}
},
true
)
addEventListener(
'mouseup',
() => {
clearTimeout(timer2)
isExecute = false
},
true
)
}
function createGlobalEvent() {
addMouseHover()
addMouseLongPress()
}
const state$5 = reactive({
init: true,
SettingItemModel: '',
accordion: false,
})
var SettingItem_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$5_ = { class: 'setting-item' }
const _hoisted_2$4X = /* @__PURE__ */ createTextVNode('settingItemCollapse')
const _hoisted_3$4u = /* @__PURE__ */ createTextVNode('settingItem')
const _sfc_main$73 = /* @__PURE__ */ defineComponent({
props: {
title: {
default: '',
},
fold: {
type: Boolean,
default: false,
},
},
setup(__props2) {
const props2 = __props2
const initSelect = () => {
if (state$5.accordion) {
if (props2.title && !state$5.SettingItemModel) {
state$5.SettingItemModel = props2.title
}
} else {
if (props2.title && !props2.fold) {
if (Array.isArray(state$5.SettingItemModel)) {
state$5.SettingItemModel.push(props2.title)
} else {
state$5.SettingItemModel = [props2.title]
}
}
}
}
watch$1(
() => state$5.init,
(val2) => {
if (val2) {
initSelect()
setTimeout(() => {
state$5.init = false
})
}
},
{
immediate: true,
}
)
return (_ctx, _cache) => {
const _component_el_collapse_item = resolveComponent('el-collapse-item')
const _component_el_collapse = resolveComponent('el-collapse')
return (
openBlock(),
createElementBlock('div', _hoisted_1$5_, [
props2.title
? (openBlock(),
createBlock(
_component_el_collapse,
{
key: 0,
modelValue: unref(state$5).SettingItemModel,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(state$5).SettingItemModel = $event)),
accordion: unref(state$5).accordion,
},
{
default: withCtx(() => [
createVNode$1(
_component_el_collapse_item,
{
title: props2.title,
name: props2.title,
},
{
title: withCtx(() => [
renderSlot(_ctx.$slots, 'title', {}, void 0, true),
]),
default: withCtx(() => [
renderSlot(
_ctx.$slots,
'default',
{},
() => [_hoisted_2$4X],
true
),
]),
_: 3,
},
8,
['title', 'name']
),
]),
_: 3,
},
8,
['modelValue', 'accordion']
))
: renderSlot(
_ctx.$slots,
'default',
{ key: 1 },
() => [_hoisted_3$4u],
true
),
])
)
}
},
})
var SettingItem$1 = /* @__PURE__ */ _export_sfc(_sfc_main$73, [
['__scopeId', 'data-v-777a3fcb'],
])
var SettingItem$2 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: SettingItem$1,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const __default__$2 = defineComponent({
name: 'SettingItem',
})
const _sfc_main$72 = /* @__PURE__ */ defineComponent({
...__default__$2,
setup(__props2) {
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(SettingItem$1, null, {
default: withCtx(() => [renderSlot(_ctx.$slots, 'default')]),
_: 3,
})
)
}
},
})
var SettingItem = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$72,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Filter_vue_vue_type_style_index_0_scoped_true_lang$1 = ''
var Filter_vue_vue_type_style_index_1_lang = ''
const _hoisted_1$5Z = { class: 'title' }
const _sfc_main$71 = /* @__PURE__ */ defineComponent({
props: {
filterData: null,
styleB: { type: Boolean },
size: null,
noLanguage: { type: Boolean },
},
emits: ['search', 'clear'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const selectPopoverClass = computed(() => {
if (app.running) {
return 'cms-el-select__popper cms-el-select__popper--light'
} else {
return 'cms-el-select__popper'
}
})
const usedTypes = [
{
value: 0,
label: '\u6240\u6709\u53D8\u91CF',
},
{
value: 1,
label: '\u5DF2\u4F7F\u7528\u53D8\u91CF',
},
{
value: 2,
label: '\u672A\u4F7F\u7528\u53D8\u91CF',
},
]
let filterData = ref($props2.filterData)
filterData.value ??= {
dataTypes: [],
usedType: 0,
keyword: '',
}
const search2 = () => emit2('search')
const clear2 = () => emit2('clear')
const input = useDebounceFn(() => {
search2()
}, 500)
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_checkbox_group = resolveComponent('el-checkbox-group')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input = resolveComponent('el-input')
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'varsFilter',
{ styleB: $props2?.styleB, small: $props2?.size == 'small' },
]),
},
[
createElementVNode(
'span',
_hoisted_1$5Z,
toDisplayString$1(
unref(Language$1).toLanguage(
'\u7B5B\u9009',
$props2?.noLanguage
)
) + '\uFF1A',
1
),
createVNode$1(
_component_el_checkbox_group,
{
class: 'search-filter',
modelValue: filterData.value.dataTypes,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(filterData.value.dataTypes = $event)),
onChange: search2,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(Variable).typeClassifyMap, (v4, k2) => {
return (
openBlock(),
createBlock(
_component_el_checkbox,
{
key: k2,
label: v4.value,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(
unref(Language$1).toLanguage(
k2,
$props2?.noLanguage
)
),
1
),
]),
_: 2,
},
1032,
['label']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_select,
{
class: 'cms-el-select search-select',
'popper-class': selectPopoverClass.value,
modelValue: filterData.value.usedType,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(filterData.value.usedType = $event)),
onChange: search2,
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(usedTypes, (item2) => {
return createVNode$1(
_component_el_option,
{
key: item2.value,
value: item2.value,
label: unref(Language$1).toLanguage(
item2.label,
$props2?.noLanguage
),
},
null,
8,
['value', 'label']
)
}),
64
)),
]),
_: 1,
},
8,
['popper-class', 'modelValue']
),
createVNode$1(
_component_el_input,
{
class: 'cms-el-input search-input',
placeholder: unref(Language$1).toLanguage(
'\u8BF7\u8F93\u5165\u5173\u952E\u8BCD',
$props2?.noLanguage
),
modelValue: filterData.value.keyword,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) => (filterData.value.keyword = $event)),
modelModifiers: { lazy: true },
onInput: unref(input),
clearable: '',
},
null,
8,
['placeholder', 'modelValue', 'onInput']
),
createElementVNode(
'button',
{
class: normalizeClass([
'cms-btn',
$props2?.styleB
? 'btn-data-plain primary'
: 'btn-screen-btn btn-reset',
]),
onClick: clear2,
},
toDisplayString$1(
unref(Language$1).toLanguage(
'\u6E05\u9664',
$props2?.noLanguage
)
),
3
),
],
2
)
)
}
},
})
var Filter$2 = /* @__PURE__ */ _export_sfc(_sfc_main$71, [
['__scopeId', 'data-v-1ffde41e'],
])
var Filter$3 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Filter$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
class Node$1 {
nodeKey = 'id'
key = new Date().getTime() + ''
data = {}
level = 1
expanded = true
visible = true
get id() {
return this.data[this.nodeKey]
}
get label() {
return this.data.name
}
props = {
children: 'children',
}
get children() {
return this.data[this.props.children] || []
}
get isLeaf() {
return this.children.length === 0
}
parent
constructor(object4) {
Object.assign(this, object4)
if (!this[this.nodeKey]) {
this[this.nodeKey] = this.data[this.nodeKey]
}
}
toggleExpand() {
this.expanded = !this.expanded
}
isOffspring(targetNodeId) {
const loop = (childList) => {
for (const child of childList) {
if (child.id === targetNodeId) {
return true
}
const rs2 = loop(child.children)
if (rs2) {
return rs2
}
}
}
return loop(this.children)
}
}
var TreeNode_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$5Y = ['draggable', 'onDragend']
const _hoisted_2$4W = ['onClick']
const _hoisted_3$4t = { class: 'custom-tree-node' }
const _hoisted_4$3V = { class: 'tree-node-icon' }
const _hoisted_5$3w = { class: 'tree-node-label' }
const _sfc_main$70 = /* @__PURE__ */ defineComponent({
props: {
node: null,
data: null,
nodeKey: null,
indent: null,
currentNode: null,
draggable: { type: Boolean },
props: null,
refLine: null,
allowDrop: null,
virtualTreeRef: null,
OMTList: null,
itemSize: null,
expandOnClickNode: { type: Boolean },
selectNodes: null,
},
emits: [
'toggleExpand',
'nodeClick',
'nodeDragStart',
'nodeDrop',
'nodeSelect',
],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const data2 = ref($props2.data)
const node2 = ref($props2.node)
const props2 = ref($props2.props)
const refLine = ref($props2.refLine)
const OMTList = ref($props2.OMTList)
let nodeRef = ref()
let expandRef = ref()
function toggleExpand() {
node2.value.toggleExpand()
emit2('toggleExpand', data2.value[$props2.nodeKey])
}
function NodeClick(event) {
emit2('nodeSelect', node2.value, data2.value, event.ctrlKey)
emit2('nodeClick', node2.value, data2.value)
if ($props2.expandOnClickNode) {
toggleExpand()
}
}
function handleDragStart(event) {
refLine.value.draggingNode = node2.value
event.dataTransfer && (event.dataTransfer.effectAllowed = 'move')
emit2('nodeDragStart', node2.value)
}
function handleDragOver(event) {
event.preventDefault()
let nodeKey = $props2.nodeKey
let isOff = refLine.value.draggingNode.isOffspring(node2.value[nodeKey])
if (
(refLine.value.draggingNode &&
node2.value[nodeKey] === refLine.value.draggingNode[nodeKey]) ||
(refLine.value.draggingNode && isOff)
) {
refLine.value.dropType = 'none'
return
}
let dropPrev = true,
dropInner = true,
dropNext = true
if (typeof $props2.allowDrop === 'function') {
dropPrev = $props2.allowDrop(
refLine.value.draggingNode,
node2.value,
'before'
)
dropInner = $props2.allowDrop(
refLine.value.draggingNode,
node2.value,
'inner'
)
dropNext = $props2.allowDrop(
refLine.value.draggingNode,
node2.value,
'after'
)
}
event.dataTransfer &&
(event.dataTransfer.dropEffect =
dropPrev || dropInner || dropNext ? 'move' : 'none')
if (dropPrev || dropInner || dropNext) {
refLine.value.targetNode = node2.value
}
if (
refLine.value.targetNode === null ||
refLine.value.draggingNode === null
)
return
let indicatorTop = 0,
drop_config = refLine.value.draggingNode,
nodeIndex = (
refLine.value.draggingNode.parent?.[props2.value.children] ??
OMTList.value
).findIndex((item2) => item2[nodeKey] === node2.value[nodeKey]),
targetIndex = (
refLine.value.targetNode.parent?.[props2.value.children] ??
OMTList.value
).findIndex(
(item2) => item2[nodeKey] === refLine.value.targetNode[nodeKey]
)
if (
targetIndex + 1 === nodeIndex &&
node2.value.parent === drop_config.parent
) {
dropNext = false
}
if (node2.value.expanded && !node2.value.isLeaf) {
dropNext = false
}
if (
targetIndex - 1 === nodeIndex &&
node2.value.parent === drop_config.parent
) {
dropPrev = false
}
if (drop_config[nodeKey] === refLine.value.targetNode.parent?.[nodeKey]) {
dropInner = false
}
const treePosition = $props2.virtualTreeRef.getBoundingClientRect()
const targetPosition = nodeRef.value?.getBoundingClientRect()
const iconPosition = expandRef.value?.getBoundingClientRect()
const position2 = event.clientY - (targetPosition?.top || 0)
const prevPercent = dropPrev
? dropInner
? 0.25
: dropNext
? 0.45
: 1
: -1
const nextPercent = dropNext
? dropInner
? 0.75
: dropPrev
? 0.55
: 0
: 1
if (
position2 <
(targetPosition?.height || $props2.itemSize) * prevPercent
) {
refLine.value.dropType = 'before'
indicatorTop = (iconPosition?.top || 0) - treePosition.top
} else if (
position2 >
(targetPosition?.height || $props2.itemSize) * nextPercent
) {
refLine.value.dropType = 'after'
indicatorTop = (iconPosition?.bottom || 0) - treePosition.top
} else if (dropInner) {
refLine.value.dropType = 'inner'
} else {
refLine.value.dropType = 'none'
}
refLine.value.left = (iconPosition?.right || 0) - treePosition.left
refLine.value.top = indicatorTop
}
function handleDragEnd2() {
let { dropType, targetNode, draggingNode } = refLine.value
if (dropType === 'none' || !targetNode || !draggingNode) return
let nodeKey = $props2.nodeKey
let parentList =
targetNode.parent?.[props2.value.children] ?? OMTList.value
let targetNodeIndex = parentList.findIndex(
(item2) => item2[nodeKey] === targetNode[nodeKey]
)
let dragParentList =
draggingNode.parent?.[props2.value.children] ?? OMTList.value
let dragNodeIndex = dragParentList.findIndex(
(item2) => item2[nodeKey] === draggingNode[nodeKey]
)
dragParentList.splice(dragNodeIndex, 1)
let index2 =
(draggingNode.parent?.[nodeKey] === targetNode.parent?.[nodeKey] &&
dragNodeIndex > targetNodeIndex) ||
draggingNode.parent?.[nodeKey] !== targetNode.parent?.[nodeKey]
? targetNodeIndex + 1
: targetNodeIndex
if (dropType === 'before') {
parentList.splice(index2 - 1, 0, draggingNode.data)
} else if (dropType === 'after') {
parentList.splice(index2, 0, draggingNode.data)
} else if (dropType === 'inner') {
if (!targetNode.data[props2.value.children]) {
targetNode.data[props2.value.children] = []
}
targetNode.data[props2.value.children].unshift(draggingNode.data)
}
emit2('nodeDrop', draggingNode, targetNode, dropType)
refLine.value.dropType = 'none'
}
function handleDrop(event) {
event.preventDefault()
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
ref_key: 'nodeRef',
ref: nodeRef,
class: normalizeClass([
'tree-node-content',
{
'is-select': __props2.selectNodes.includes(node2.value),
'is-current':
__props2.currentNode?.[__props2.nodeKey] ===
node2.value[__props2.nodeKey],
'is-inner-drop':
refLine.value.dropType === 'inner' &&
refLine.value.targetNode &&
refLine.value.targetNode[__props2.nodeKey] ===
node2.value[__props2.nodeKey],
},
]),
style: normalizeStyle$1({
'padding-left': (node2.value.level - 1) * __props2.indent + 'px',
height: $props2.itemSize + 'px',
}),
draggable: __props2.draggable,
onClick: NodeClick,
onDragstart:
_cache[0] ||
(_cache[0] = withModifiers(
($event) => handleDragStart($event),
['stop']
)),
onDragover:
_cache[1] ||
(_cache[1] = withModifiers(
($event) => handleDragOver($event),
['stop']
)),
onDragend: withModifiers(handleDragEnd2, ['stop']),
onDrop: handleDrop,
},
[
createElementVNode(
'i',
{
ref_key: 'expandRef',
ref: expandRef,
class: normalizeClass([
'tree-node__expand-icon',
{
expanded: !node2.value.expanded,
'icon-xiala2': !node2.value.isLeaf,
},
]),
onClick: withModifiers(toggleExpand, ['stop']),
},
null,
10,
_hoisted_2$4W
),
createElementVNode('div', _hoisted_3$4t, [
renderSlot(
_ctx.$slots,
'default',
{
data: data2.value,
node: node2.value,
},
() => [
createElementVNode('div', _hoisted_4$3V, [
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont',
data2.value[$props2.props.children].length == 0
? 'icon-yemian'
: 'icon-wenjianjia',
]),
},
null,
2
),
]),
createElementVNode(
'div',
_hoisted_5$3w,
toDisplayString$1(node2.value.label),
1
),
],
true
),
]),
],
46,
_hoisted_1$5Y
)
)
}
},
})
var TreeNode$1 = /* @__PURE__ */ _export_sfc(_sfc_main$70, [
['__scopeId', 'data-v-8d5a7524'],
])
var TreeNode$2 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: TreeNode$1,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var VirtualTree_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$5X = {
key: 0,
class: 'tree__empty-block',
}
const _hoisted_2$4V = { class: 'tree__empty-text' }
const _sfc_main$6$ = /* @__PURE__ */ defineComponent({
props: {
data: { default: () => [] },
nodeKey: { default: 'id' },
props: {
default: () => {
return {
label: 'name',
children: 'children',
}
},
},
emptyText: { default: '\u6682\u65E0\u6570\u636E' },
defaultExpandAll: { type: Boolean, default: true },
defaultExpandedKeys: { default: () => [] },
currentNodeKey: null,
draggable: { type: Boolean, default: true },
indent: { default: 18 },
filterText: { default: '' },
expandOnClickNode: { type: Boolean, default: false },
allowDrop: { type: Function, default: () => true },
itemSize: { default: 28 },
multiple: { type: Boolean, default: false },
parentNodeKey: null,
},
emits: [
'nodeClick',
'nodeDragStart',
'nodeDrop',
'toggleExpand',
'select',
'scroll',
],
setup(__props2, { expose, emit: emit2 }) {
const $props2 = __props2
let modelValueCopy = ref($props2.data)
let defaultExpandAll = ref($props2.defaultExpandAll)
let props2 = ref($props2.props)
let reDrawKey = ref('')
let itemSize2 = ref($props2.itemSize)
let startIndex = ref(0)
let visibleCount = ref(20)
let startOffset = ref(0)
let phantomHeight = ref(100)
let expandedKeys = ref(
/* @__PURE__ */ new Set([...$props2.defaultExpandedKeys])
)
let nodeMapList = {}
onMounted(() => {
setVisibleCount()
})
function findIsVisible(node2) {
let isVisible2 = false
if (node2.name.includes($props2.filterText)) return true
const getVisible = (node22) => {
if (!node22) return
for (const item2 of node22) {
if (item2.name.includes($props2.filterText)) {
isVisible2 = true
return
}
getVisible(item2[props2.value.children])
}
}
getVisible(node2[props2.value.children])
return isVisible2
}
function getViewData(
dataList2,
filterText = '',
expandAll = defaultExpandAll.value
) {
let children = props2.value.children
let nodeKey = $props2.nodeKey
let viewData = []
let visibleIdx = 0
const recursionModelValue = (
dataList22,
level = 1,
parentNode2 = dataList22
) => {
for (const item2 of dataList22) {
if (visibleCount.value <= viewData.length) {
return
}
if (!nodeMapList[item2[nodeKey]]) {
let node22 = {
nodeKey,
id: item2[nodeKey],
node: new Node$1({
parent: parentNode2,
level,
...$props2,
data: item2,
expanded: expandAll || expandedKeys.value.has(item2[nodeKey]),
}),
}
nodeMapList[item2[nodeKey]] = node22
}
let node2 = nodeMapList[item2[nodeKey]].node
node2.level = level
node2.parent = parentNode2
node2.data = item2
node2.visible = findIsVisible(item2)
if (node2.visible) {
visibleIdx++
if (visibleIdx >= startIndex.value) {
viewData.push(nodeMapList[item2[nodeKey]])
}
}
if (item2[children]?.length > 0 && node2.visible && node2.expanded) {
recursionModelValue(item2[children], level + 1, item2)
}
}
}
recursionModelValue(dataList2)
defaultExpandAll.value = false
getPhantomHeight()
modelValueCopy.value = dataList2
return viewData
}
function getPhantomHeight() {
let len2 = 0
let children = props2.value.children
const getLength = (dataList2) => {
len2 += dataList2.filter((item2) => findIsVisible(item2)).length
dataList2.forEach((item2) => {
let node2 = nodeMapList[item2[$props2.nodeKey]]?.node
if (
item2[children]?.length > 0 &&
findIsVisible(item2) &&
(node2?.expanded ?? true)
) {
getLength(item2[children])
}
})
}
getLength(modelValueCopy.value)
phantomHeight.value = len2 * itemSize2.value + itemSize2.value
startOffset.value =
startOffset.value > phantomHeight.value ? 0 : startOffset.value
}
let virtualTreeRef = ref()
let virtualTreeListRef = ref()
const getStartIndex = (scrollTop) => {
return Math.floor(scrollTop / itemSize2.value)
}
const getStartOffset = (startIndex2) => {
return startIndex2 * itemSize2.value
}
function handleScroll2() {
let scrollTop = virtualTreeRef.value.scrollTop
startIndex.value = getStartIndex(scrollTop)
startOffset.value = getStartOffset(startIndex.value)
emit2('scroll')
}
const toggleExpand = (id2) => {
expandedKeys.value.has(id2)
? expandedKeys.value.delete(id2)
: expandedKeys.value.add(id2)
update3()
emit2('toggleExpand', expandedKeys.value)
}
let refLine = reactive({
top: 0,
left: 0,
dropType: 'none',
draggingNode: null,
targetNode: null,
prevNode: null,
})
const nodeDragStart = (node2) => {
emit2('nodeDragStart', node2)
}
const handleDragEnd2 = (draggingNode, targetNode, dropType) => {
emit2('nodeDrop', draggingNode, targetNode, dropType)
}
function update3() {
reDrawKey.value = new Date()
}
let currentNode = ref(null)
let selectNodes = ref([])
function nodeClick(node2, data2) {
currentNode.value = node2
emit2('nodeClick', node2, data2)
}
function nodeSelect(node2, data2, ctrlKey) {
if (ctrlKey && $props2.multiple) {
const index2 = selectNodes.value.findIndex(
(nodeItem) => nodeItem === node2
)
if (index2 === -1) {
selectNodes.value.push(node2)
} else {
selectNodes.value.splice(index2, 1)
}
} else {
selectNodes.value = [node2]
}
const datas = selectNodes.value.map((node22) => node22.data)
emit2('select', datas, selectNodes.value)
}
function filter2(val2) {
getViewData(modelValueCopy.value, val2, defaultExpandAll.value)
}
function setCurrentKey(key2) {
const node2 = getNodeById2(key2)
if (node2) {
currentNode.value = node2
selectNodes.value = [node2]
emit2('select', selectNodes.value)
return true
}
return false
}
function clearSelectNodes() {
selectNodes.value.length = 0
emit2('select', selectNodes.value)
}
function getCurrentNode() {
return currentNode.value
}
function getNodeById2(id2) {
return nodeMapList[id2]?.node
}
function setVisibleCount() {
visibleCount.value =
Math.ceil(virtualTreeRef.value.clientHeight / itemSize2.value) + 5
}
const _setVisibleCount = lodash$2.exports.debounce(setVisibleCount, 200, {
leading: true,
})
useResizeObserver(virtualTreeRef, _setVisibleCount)
function createNode2(dataItem) {
let nodeKey = $props2.nodeKey
if (!nodeMapList[dataItem[nodeKey]]) {
let node2 = {
nodeKey,
id: dataItem[nodeKey],
node: new Node$1({
parent: null,
level: 1,
...$props2,
data: dataItem,
expanded: true,
}),
}
nodeMapList[dataItem[nodeKey]] = node2
}
return nodeMapList[dataItem[nodeKey]].node
}
function parentExpand(node2) {
const parent2 = node2.parent
if (!parent2) return
if (!(parent2 instanceof Array)) {
const parentId = parent2.id
let parentNode2 = getNodeById2(parentId)
if (!parentNode2) return
parentNode2.expanded = true
if (!expandedKeys.value.has(parentId)) {
expandedKeys.value.add(parentId)
}
parentExpand(parentNode2)
}
}
function getTargetPosition(id2) {
let index2 = 0
let children = props2.value.children
let hasFound = false
function findIndexFromVisibleNodes(dataList2, id22) {
for (const dataItem of dataList2) {
if (findIsVisible(dataItem) && !hasFound) {
index2++
}
if (id22 === dataItem.id) {
hasFound = true
return index2
}
let node2 = nodeMapList[dataItem[$props2.nodeKey]]?.node
if (
dataItem[children]?.length > 0 &&
findIsVisible(dataItem) &&
(node2?.expanded ?? true)
) {
findIndexFromVisibleNodes(dataItem[children], id22)
}
}
return index2
}
const targetIndex = findIndexFromVisibleNodes($props2.data, id2)
return (targetIndex + 1) * $props2.itemSize
}
function findParents(dataItem) {
if (!$props2.parentNodeKey) return []
let result = []
let parent2 = dataItem
while (parent2) {
parent2 = parent2[$props2.parentNodeKey]
if (parent2) {
result.unshift(parent2)
}
}
if (result[0] && !$props2.data.includes(result[0])) {
result.shift()
}
return result
}
function scrollTo(dataItem) {
if (!$props2.parentNodeKey) return
const id2 = dataItem[$props2.nodeKey]
let node2 = getNodeById2(id2)
if (node2) {
parentExpand(node2)
} else {
const parents = findParents(dataItem)
for (const parentDataItem of parents) {
const parentNode2 = createNode2(parentDataItem)
parentNode2.expanded = true
const parentId = parentNode2.id
if (!expandedKeys.value.has(parentId)) {
expandedKeys.value.add(parentId)
}
}
}
const position2 = getTargetPosition(id2)
const targetScrollTop = Math.max(
position2 - virtualTreeRef.value.offsetHeight,
0
)
virtualTreeRef.value.scrollTop = targetScrollTop
update3()
emit2('toggleExpand', expandedKeys.value)
}
expose({
update: update3,
filter: filter2,
getCurrentNode,
getNodeById: getNodeById2,
setCurrentKey,
clearSelectNodes,
scrollTo,
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'virtual-tree',
ref_key: 'virtualTreeRef',
ref: virtualTreeRef,
onScroll: handleScroll2,
},
[
createElementVNode(
'div',
{
class: 'list-phantom',
style: normalizeStyle$1({ height: phantomHeight.value + 'px' }),
},
null,
4
),
(openBlock(),
createElementBlock(
'div',
{
class: 'virtual-tree-list',
key: reDrawKey.value,
ref_key: 'virtualTreeListRef',
ref: virtualTreeListRef,
style: normalizeStyle$1({
transform: `translate3d(0, ${startOffset.value}px, 0)`,
}),
},
[
__props2.data.length === 0
? (openBlock(),
createElementBlock('div', _hoisted_1$5X, [
createElementVNode(
'span',
_hoisted_2$4V,
toDisplayString$1(__props2.emptyText),
1
),
]))
: createCommentVNode('', true),
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
getViewData(
__props2.data,
__props2.filterText,
$props2.defaultExpandAll
),
(item2) => {
return (
openBlock(),
createBlock(
TreeNode$1,
{
node: item2.node,
key: item2.id,
data: item2.node.data,
draggable: __props2.draggable,
nodeKey: __props2.nodeKey,
props: props2.value,
itemSize: itemSize2.value,
indent: __props2.indent,
currentNode: currentNode.value,
expandOnClickNode: __props2.expandOnClickNode,
allowDrop: __props2.allowDrop,
virtualTreeRef: unref(virtualTreeListRef),
OMTList: __props2.data,
selectNodes: selectNodes.value,
onToggleExpand: toggleExpand,
onNodeClick: nodeClick,
refLine: unref(refLine),
onNodeDragStart: nodeDragStart,
onNodeDrop: handleDragEnd2,
onNodeSelect: nodeSelect,
},
{
default: withCtx(() => [
renderSlot(
_ctx.$slots,
'default',
{
node: item2.node,
data: item2.node.data,
},
void 0,
true
),
]),
_: 2,
},
1032,
[
'node',
'data',
'draggable',
'nodeKey',
'props',
'itemSize',
'indent',
'currentNode',
'expandOnClickNode',
'allowDrop',
'virtualTreeRef',
'OMTList',
'selectNodes',
'refLine',
]
)
)
}
),
128
)),
withDirectives(
createElementVNode(
'div',
{
class: 'tree__drop-indicator',
style: normalizeStyle$1({
left: unref(refLine).left + 'px',
top: unref(refLine).top + 'px',
}),
},
null,
4
),
[
[
vShow,
['before', 'after'].includes(unref(refLine).dropType),
],
]
),
],
4
)),
],
544
)
)
}
},
})
var VirtualTree = /* @__PURE__ */ _export_sfc(_sfc_main$6$, [
['__scopeId', 'data-v-7955664c'],
])
var VirtualTree$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: VirtualTree,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
let state$4 = reactive({
activeNode: null,
activeNodeTunnel: null,
protocolInfos: null,
protocolInfo: null,
dataTypes: [],
debugging: false,
saveAction: 0,
filterData: {
dataTypes: [],
usedType: 0,
keyword: '',
},
tableData: [],
totalList: [],
unSaveList: [],
unSaveListStorageKeys: [],
checkedList: [],
groupList: [],
})
const validFailRowClass = 'valid-fail-row'
const validFailCellClass = 'valid-fail-cell'
const validRules = ref({
testField: [
{ required: true, message: '\u53D8\u91CF\u540D\u5FC5\u987B\u586B\u5199' },
{
pattern: /^[0-9]{0,3}$/,
message:
'\u53D8\u91CF\u540D\u683C\u5F0F\u9519\u8BEF\uFF0C\u8BF7\u8F93\u5165\u4E2D\u6587\u3001\u5B57\u6BCD\u3001\u6570\u5B57\u3001\u4E0B\u5212\u7EBF\u4E2D\u7684\u4E00\u79CD\u6216\u591A\u79CD\uFF0C\u4E14\u4E0D\u80FD\u4EE5\u6570\u5B57\u5F00\u5934',
},
{
customValidator({ value: value2 }) {
if (value2 && !['Develop', 'Test', 'Designer', 'PM'].includes(value2)) {
return '\u8F93\u5165\u4E0D\u6B63\u786E'
}
},
},
],
name: [
{ required: true, message: '\u53D8\u91CF\u540D\u5FC5\u987B\u586B\u5199' },
{
customValidator({ value: value2 }) {
if (!Variable.isVarName(value2)) {
return '\u53D8\u91CF\u540D\u683C\u5F0F\u9519\u8BEF\uFF0C\u8BF7\u8F93\u5165\u4E2D\u6587\u3001\u5B57\u6BCD\u3001\u6570\u5B57\u3001\u4E0B\u5212\u7EBF\u4E2D\u7684\u4E00\u79CD\u6216\u591A\u79CD\uFF0C\u4E14\u4E0D\u80FD\u4EE5\u6570\u5B57\u5F00\u5934'
}
},
},
],
interval: [
{
required: true,
message: '\u91C7\u96C6\u95F4\u9694\u5FC5\u987B\u586B\u5199',
},
{
customValidator({ value: value2 }) {
if (value2 < 10) {
return '\u91C7\u96C6\u95F4\u9694\u4E0D\u53EF\u5C0F\u4E8E10ms'
}
if (value2 > 1e4) {
return '\u91C7\u96C6\u95F4\u9694\u4E0D\u53EF\u5927\u4E8E10000ms'
}
},
},
],
address: [
{
required: true,
message: '\u53D8\u91CF\u5730\u5740\u5FC5\u987B\u586B\u5199',
},
{
customValidator({ value: value2 }) {
const rule2 = state$4.protocolInfo?.protocalAddressRule
if (rule2) {
const reg = new RegExp(rule2)
if (!reg.test(value2)) {
return '\u53D8\u91CF\u5730\u5740\u4E0D\u6B63\u786E\uFF0C\u8BF7\u91CD\u65B0\u8F93\u5165'
}
}
},
},
],
stringLength: [
{
customValidator({ value: value2, row }) {
if (
Variable.checkTypeClassify('\u5B57\u7B26\u4E32', {
label: row.typeName,
})
) {
if (!value2) {
return '\u5B57\u7B26\u4E32\u957F\u5EA6\u5FC5\u987B\u586B\u5199'
}
if (value2 < 1 || value2 > 255) {
return '\u5B57\u7B26\u957F\u5EA6\u4E3A1\u81F3255\u4E4B\u95F4\u7684\u6574\u6570'
}
}
},
},
],
zoom: [
{
customValidator({ value: value2, row }) {
if (
Variable.checkTypeClassify(['\u6574\u578B', '\u6D6E\u70B9\u578B'], {
label: row.typeName,
})
) {
if (value2 <= 0) {
return '\u7F29\u653E\u6BD4\u9700\u5927\u4E8E0'
}
}
},
},
],
digit: [
{
customValidator({ value: value2, row }) {
if (
Variable.checkTypeClassify(['\u6574\u578B', '\u6D6E\u70B9\u578B'], {
label: row.typeName,
})
) {
if (value2 && value2 < 0) {
return '\u5C0F\u6570\u4F4D\u6570\u9700\u5927\u4E8E\u7B49\u4E8E0'
}
}
},
},
],
readWriteRule: [
{
customValidator({ value: value2, row }) {
if (
Variable.checkTypeClassify(['\u6574\u578B', '\u6D6E\u70B9\u578B'], {
label: row.typeName,
})
) {
if (!value2) {
return '\u8BFB\u5199\u89C4\u5219\u5FC5\u987B\u9009\u62E9'
}
}
},
},
],
setValue: [
{
customValidator({ value: value2, row }) {
if (row.initType == 1 && !value2) {
return '\u521D\u59CB\u503C\u5FC5\u987B\u586B\u5199'
}
},
},
],
})
const cellValidator = async (row, field2) => {
const value2 = row[field2]
const rules2 = validRules.value[field2]
if (!rules2) return ''
row.validFail = false
row.validFailMsg ??= { [field2]: '' }
row.validFailMsg[field2] = ''
let msg = ''
for (let rule2 of rules2) {
if (rule2.required && !value2) {
msg = rule2.message
}
if (!msg && rule2.pattern) {
if (!rule2.pattern.test(value2)) {
msg = rule2.message
}
}
if (!msg && rule2.customValidator) {
const errMsg = await rule2.customValidator({ value: value2, row })
if (errMsg) {
msg = errMsg
}
}
}
if (msg) {
row['validFail'] = true
row['validFailMsg'][field2] = msg
} else {
row['validFail'] = Object.values(row['validFailMsg']).some(
(e2) => e2.length != 0
)
}
return msg
}
const rowValidator = async (row) => {
if (!state$4.activeNodeTunnel?.type) {
return false
}
let commonKeys = columnKey['-1']
let configKeys = columnKey[state$4.activeNodeTunnel?.type || 1]
for (let key2 of [...commonKeys, ...configKeys]) {
await cellValidator(row, key2)
}
return row?.validFail ? false : true
}
const limitNumber = (val2) => {
val2 = val2.replace(/[^\d.]/g, '')
val2 = val2.replace(/\.{2,}/g, '.')
val2 = val2.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.')
if (val2.indexOf('.') === 0 && val2 !== '') {
val2 = '0' + val2
} else if (val2.indexOf('.') < 0 && val2 !== '') {
val2 = parseFloat(val2) + ''
}
return val2
}
const limitPIntNum = (value2) => {
return (value2 + '').replace(/[^\d]+/g, '')
}
const getTargetNode = (key2, value2, list2, childrenLabel = 'children') => {
let target2 = {}
const recursion = (list22) => {
if (target2.index) return
for (let item2 of list22) {
if (item2[key2] === value2) {
target2 = item2
break
}
if (item2?.[childrenLabel]?.length) {
recursion(item2[childrenLabel])
}
}
}
recursion(list2)
if (target2[key2]) return target2
return null
}
let varsUnSaveData = {}
const varsUnSaveDataKey = 'varsUnSaveData'
const getVarsUnSaveData = () => {
varsUnSaveData =
JSON.parse(localStorage.getItem(varsUnSaveDataKey) + '') || {}
}
const setVarUnSaveData = (activeNodeKey) => {
const projectId = Session.get('X-Project')
const data2 = varsUnSaveData[projectId] || {}
!state$4.unSaveList?.length
? delete data2[activeNodeKey]
: (data2[activeNodeKey] = state$4.unSaveList)
!Object.keys(data2)?.length
? delete varsUnSaveData[projectId]
: (varsUnSaveData[projectId] = data2)
localStorage.setItem(varsUnSaveDataKey, JSON.stringify(varsUnSaveData))
}
const clearVarUnSaveData = (activeNodeKey) => {
const projectId = Session.get('X-Project')
if (activeNodeKey) {
state$4.unSaveList = []
setVarUnSaveData(activeNodeKey)
} else {
delete varsUnSaveData[projectId]
localStorage.setItem(varsUnSaveDataKey, JSON.stringify(varsUnSaveData))
}
}
const storageUnSaveRow = () => {
if (!state$4.activeNode) return
setVarUnSaveData(state$4.activeNode.index)
getUnSaveListStorageKeys()
app.current.project.moduleSavedStatusMap.Variable = state$4.unSaveList.length
? 'unsaved'
: 'saved'
}
const getUnSaveListStorageKeys = () => {
if (!Object.keys(varsUnSaveData)?.length) {
getVarsUnSaveData()
}
const projectId = Session.get('X-Project')
state$4.unSaveListStorageKeys = Object.keys(varsUnSaveData?.[projectId] || {})
}
const getTableData$1 = async () => {
if (!state$4.activeNode || !state$4.activeNodeTunnel) return
const { index: index2, groupId = null } = state$4.activeNode
const { tunnelId, type: type4 } = state$4.activeNodeTunnel
let params2 = {
groupId,
...state$4.filterData,
}
const res =
(await request.post(
`/api/v1/variable/tunnel/${tunnelId}/tag/query`,
params2
)) || []
res.forEach((e2) => {
if (e2?.config) {
Object.assign(e2, { ...e2.config })
}
})
state$4.tableData = [...res]
const projectId = Session.get('X-Project')
state$4.unSaveList = varsUnSaveData?.[projectId]?.[index2] || []
state$4.unSaveList.forEach((item2) => {
if (item2?.['checked']) item2['checked'] = false
let idx = 0
let isHas =
state$4.tableData.filter((v4, i2) => {
if (v4.id === item2.id) {
idx = i2
return v4.id === item2.id
}
}).length > 0
if (isHas) {
state$4.tableData.splice(idx, 1, item2)
} else {
if (state$4.filterData.usedType !== 1) {
state$4.tableData.push(item2)
}
}
})
if (state$4.checkedList.length) {
const checkedIds = state$4.checkedList.map((e2) => e2.id)
const checkedList = []
state$4.tableData.forEach((e2) => {
if (checkedIds.includes(e2.id)) {
e2.checked = true
checkedList.push(e2)
}
})
state$4.checkedList = [...checkedList]
}
if (type4 === 2) return res
state$4.unSaveList.forEach((e2) => {
setTimeout(() => {
rowValidator(e2)
})
})
return res
}
const innerTunnelDataType = () => {
const dataTypes = []
for (let [k2, v4] of Object.entries(Variable.types)) {
if (Number(k2) <= 15) {
dataTypes.push(v4.label)
}
}
return dataTypes
}
const initStateData = async () => {
state$4.tableData = []
state$4.totalList = []
state$4.unSaveList = []
state$4.checkedList = []
state$4.groupList = []
state$4.dataTypes = []
state$4.protocolInfo = null
if (!state$4.activeNode || !state$4.activeNodeTunnel) return
const { config: config2, tunnelId } = state$4.activeNodeTunnel
if (config2) {
if (!state$4.protocolInfos) {
const rs2 = await request.get('/api/v1/variable/tunnel/io/protocol')
state$4.protocolInfos = rs2.infos
}
if (!state$4.protocolInfos) return
state$4.protocolInfo = state$4.protocolInfos[config2.protocol]
const { protocalDataType = [] } = state$4.protocolInfo
const findDateType = (model) =>
protocalDataType.find((e2) => e2.dependon == model)?.type
if (protocalDataType.length === 1) {
state$4.dataTypes = findDateType('*')
} else if (protocalDataType.length > 1) {
state$4.dataTypes = findDateType(config2.model) || findDateType('*')
}
}
if (!state$4.dataTypes?.length) {
state$4.dataTypes = innerTunnelDataType()
}
getGroupData(tunnelId)
}
const getGroupData = async (tunnelId) => {
const res = await request.get(`/api/v1/variable/tunnel/${tunnelId}/group`, {
silent: true,
})
state$4.groupList = [...res]
}
const columnKey = {
'-1': [
'name',
'description',
'typeName',
'groupId',
'archiveSetting',
'historicBriefMsg',
'historicGroupId',
'historicGroupName',
],
1: [
'address',
'readWriteMode',
'interval',
'stringLength',
'zoom',
'digit',
'readWriteRule',
],
2: ['scopeType'],
3: ['initType', 'setValue'],
4: ['expression'],
5: ['mappingVariable', 'readWriteMode'],
}
const createRow = (rows, tunnelType) => {
const arr = []
rows.forEach((item2) => {
let obj = {}
let config2 = {}
let configKeys = columnKey[tunnelType]
let commonKeys = columnKey['-1']
for (let [k2, v4] of Object.entries(item2)) {
if (commonKeys.includes(k2)) {
obj[k2] = v4
}
if (configKeys.includes(k2)) {
config2[k2] = v4
}
}
obj.config = config2
if ((item2.id + '').indexOf('new_') == -1) obj.id = item2.id
arr.push(obj)
})
return arr
}
const delTableData = async () => {
let ids = []
state$4.checkedList.forEach((item2) => {
if (typeof item2.id == 'number') {
ids.push(item2.id)
}
state$4.tableData.splice(state$4.tableData.indexOf(item2), 1)
state$4.totalList.splice(state$4.totalList.indexOf(item2), 1)
state$4.unSaveList.splice(state$4.unSaveList.indexOf(item2), 1)
})
if (ids.length) {
if (!state$4.activeNodeTunnel) return
let tunnelId = state$4.activeNodeTunnel.tunnelId
await request.delete(`/api/v1/variable/tunnel/${tunnelId}/tag`, {
data: ids,
})
}
}
const saveHistoricArchive = async () => {
let historicArchiveList = []
state$4.unSaveList.forEach((item2) => {
if (item2.archiveSetting) {
historicArchiveList.push({
...item2.archiveSetting,
varId: item2.id,
groupId: item2.historicGroupId,
})
}
})
if (historicArchiveList.length) {
await request.put(
`/api/v1/historicarchive/var/archivesetting`,
historicArchiveList
)
}
}
const saveTableData = async () => {
if (!state$4.activeNode || !state$4.activeNodeTunnel) return
app.current.project.moduleSavedStatusMap.Variable = 'saving'
let { tunnelId, type: type4 } = state$4.activeNodeTunnel
if (type4 == 2) {
await saveHistoricArchive()
app.current.project.moduleSavedStatusMap.Variable = 'saved'
return Promise.resolve(true)
}
let alert2 = ''
for (let item2 of state$4.unSaveList) {
if (!alert2 && !(await rowValidator(item2))) {
alert2 = '\u6821\u9A8C\u5931\u8D25'
} else {
setTimeout(() => {
rowValidator(item2)
})
}
}
if (alert2) {
toast(alert2, 'error')
return Promise.reject(alert2)
}
return new Promise((resolve2) => {
initUtils.debouncedFn(async () => {
let addList = []
let modifyList = []
state$4.unSaveList.forEach((item2) => {
let obj = {}
let config2 = {}
if (!type4) return
let configKeys = columnKey[type4]
let commonKeys = columnKey['-1']
for (let [k2, v4] of Object.entries(item2)) {
if (commonKeys.includes(k2)) {
obj[k2] = v4
}
if (configKeys.includes(k2)) {
config2[k2] = v4
}
}
obj.config = config2
const seq = state$4.tableData.findIndex((e2) => e2 == item2)
obj.index = seq == -1 ? null : seq + 1
if ((item2.id + '').indexOf('new_') >= 0) {
addList.push(obj)
} else {
obj.id = item2.id
obj.sort = item2['sort']
modifyList.push(obj)
}
})
let promise1 = request
.post(`/api/v1/variable/tunnel/${tunnelId}/tag`, addList)
.then((res) => {
if (res && res.length) {
res.forEach((e2) => {
let idx = state$4.tableData.findIndex((t3) => t3.name === e2.name)
if (idx >= 0) {
state$4.tableData[idx].id = e2.id
state$4.tableData[idx]['sort'] = e2.sort
}
})
}
})
let promise2 = request.put(
`/api/v1/variable/tunnel/${tunnelId}/tag`,
modifyList
)
await Promise.all([promise1, promise2])
await saveHistoricArchive()
app.current.project.moduleSavedStatusMap.Variable = 'saved'
return resolve2(true)
})
})
}
const exportFile = async (mode2, tunnelId, groupId, name2) => {
let params2 = {
mode: mode2,
}
if (tunnelId !== null) {
params2['targetTunnelId'] = tunnelId
}
if (groupId !== null) {
params2['targetGroupId'] = groupId
}
return await request({
responseType: 'blob',
url: `/api/v1/variable/export`,
method: 'get',
params: params2,
}).then((res) => {
initUtils.downFile(res, `${name2 || ''}\u53D8\u91CF.xlsx`)
})
}
function alert$1(msg) {
return new Promise((rs2) => {
ElMessageBox.alert(msg).finally(rs2)
})
}
async function confirm(message2, options2 = {}) {
return await ElMessageBox.confirm(message2, Language$1._t('\u63D0\u793A'), {
confirmButtonText: Language$1._t('\u786E\u8BA4'),
cancelButtonText: Language$1._t('\u53D6\u6D88'),
center: true,
customClass: 'cms-el-message-box',
...options2,
})
.then(() => {
return true
})
.catch(() => {
return false
})
}
window.alert = alert$1
var EllipsisTooltip_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$5W = [
'title',
'data-tooltip-disabled',
'data-tooltip-effect',
'data-tooltip-placement',
'data-tooltip-popper-class',
'data-tooltip-raw-content',
]
const _sfc_main$6_ = /* @__PURE__ */ defineComponent({
props: {
width: { default: '' },
content: { default: '' },
tooltipContent: { default: '' },
effect: { default: 'dark' },
placement: { default: 'top-start' },
popperClass: { default: '' },
disabled: { type: Boolean, default: false },
rawContent: { type: Boolean, default: false },
},
setup(__props2) {
const props2 = __props2
let visible = ref(false)
const contentRef = ref()
const mouseover = function () {
visible.value =
contentRef.value.offsetWidth > contentRef.value.parentNode.offsetWidth
? true
: false
}
const mouseleave = function () {
visible.value = false
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'content',
style: normalizeStyle$1({ width: props2.width }),
onMouseover: mouseover,
onMouseleave: mouseleave,
title: props2.tooltipContent
? props2.tooltipContent
: props2.content,
'data-tooltip-disabled': !unref(visible),
'data-tooltip-effect': props2.effect,
'data-tooltip-placement': props2.placement,
'data-tooltip-popper-class': props2.popperClass,
'data-tooltip-raw-content': props2.rawContent,
},
[
createElementVNode(
'span',
{
ref_key: 'contentRef',
ref: contentRef,
},
[
renderSlot(
_ctx.$slots,
'content',
{},
() => [createTextVNode(toDisplayString$1(props2.content), 1)],
true
),
],
512
),
],
44,
_hoisted_1$5W
)
)
}
},
})
var EllipsisTooltip = /* @__PURE__ */ _export_sfc(_sfc_main$6_, [
['__scopeId', 'data-v-ccbf35f2'],
])
var EllipsisTooltip$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: EllipsisTooltip,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var IOTunnelDriveTree_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$3m = (n2) => (
pushScopeId('data-v-47ff0912'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$5V = ['disabled']
const _hoisted_2$4U = { class: 'search' }
const _hoisted_3$4s = /* @__PURE__ */ _withScopeId$3m(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
[
/* @__PURE__ */ createElementVNode('i', {
class: 'iconfont icon-tongdaoqudong drive-icon',
}),
/* @__PURE__ */ createTextVNode('\u901A\u9053\u9A71\u52A8'),
],
-1
)
)
const _hoisted_4$3U = { class: 'tree' }
const _hoisted_5$3v = {
class: 'icon',
'aria-hidden': 'true',
}
const _hoisted_6$38 = ['xlink:href']
const _hoisted_7$2N = { class: 'title' }
const _sfc_main$6Z = /* @__PURE__ */ defineComponent({
props: {
treeData: null,
activeNodeIndex: null,
disabled: { type: Boolean },
},
emits: ['nodeClick'],
setup(__props2, { expose, emit: emit2 }) {
const $props2 = __props2
const folderNodes = ['suppilers', 'models', 'protocols']
let activeNode = ref()
const nodeClick = (node2) => {
if ($props2?.disabled) return
if (folderNodes.includes(node2.nodeType)) return
emit2('nodeClick', node2)
}
const setActiveNode = (node2) => {
activeNode.value = node2
}
const treeRef = ref()
const filterText = ref('')
watch$1(filterText, (val2) => {
treeRef.value.filter(val2)
})
const filterNode = (value2, data2) => {
if (!value2) return true
return data2.name.includes(value2)
}
expose({
setActiveNode,
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_ElTree = resolveComponent('ElTree')
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'channelDriver',
{ disabled: $props2?.disabled },
]),
disabled: $props2?.disabled,
},
[
createElementVNode('div', _hoisted_2$4U, [
_hoisted_3$4s,
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x-search drive-search-input',
'suffix-icon': unref(search),
modelValue: filterText.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (filterText.value = $event)),
placeholder: '\u641C\u7D22',
},
null,
8,
['suffix-icon', 'modelValue']
),
]),
createElementVNode('div', _hoisted_4$3U, [
createVNode$1(
_component_ElTree,
{
ref_key: 'treeRef',
ref: treeRef,
class: 'cms_el_tree_x',
'default-expand-all': false,
'default-expanded-keys': [$props2.activeNodeIndex],
data: __props2.treeData,
'node-key': 'index',
props: { label: 'name' },
'filter-node-method': filterNode,
onNodeClick: nodeClick,
},
{
default: withCtx(({ data: data2 }) => [
createElementVNode(
'div',
{
class: normalizeClass([
'node flex',
{
'node-folder': folderNodes.includes(data2.nodeType),
'node-current':
data2 === activeNode.value ||
data2.index === $props2.activeNodeIndex,
},
]),
style: { width: 'calc(100% - 24px)' },
},
[
(openBlock(),
createElementBlock('svg', _hoisted_5$3v, [
createElementVNode(
'use',
{
'xlink:href': folderNodes.includes(data2.nodeType)
? '#icon-tongdaoqudongdiyiceng'
: '#icon-tongdaoqudongdisanceng',
},
null,
8,
_hoisted_6$38
),
])),
createElementVNode('div', _hoisted_7$2N, [
createVNode$1(
EllipsisTooltip,
{
width: '100%',
content: data2.name,
},
null,
8,
['content']
),
]),
],
2
),
]),
_: 1,
},
8,
['default-expanded-keys', 'data']
),
]),
],
10,
_hoisted_1$5V
)
)
}
},
})
var IOTunnelDriveTree = /* @__PURE__ */ _export_sfc(_sfc_main$6Z, [
['__scopeId', 'data-v-47ff0912'],
])
var IOTunnelDriveTree$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: IOTunnelDriveTree,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _hoisted_1$5U = { class: 'form-table' }
const _sfc_main$6Y = /* @__PURE__ */ defineComponent({
props: {
data: null,
},
emits: ['update:data'],
setup(__props2, { expose, emit: emit2 }) {
const $props2 = __props2
let data2 = ref($props2?.data)
data2.value ??= {
type: '',
oldValue: '',
newValue: '',
prefix: '',
suffix: '',
}
function change2() {
emit2('update:data', data2.value)
}
const configTypes = [
{ value: '', label: '\u8BF7\u9009\u62E9' },
{ value: '0', label: '\u53D8\u91CF\u540D\u79F0\u66FF\u6362' },
{ value: '1', label: '\u6DFB\u52A0\u524D\u7F00' },
{ value: '2', label: '\u6DFB\u52A0\u540E\u7F00' },
]
const getConfigData = () => data2.value
const getConfigResult = () => {
let oldValue = ''
let newValue = ''
if (data2.value.type == '0') {
oldValue = data2.value.oldValue
newValue = data2.value.newValue
}
if (data2.value.type == '1') {
newValue = data2.value.prefix
}
if (data2.value.type == '2') {
newValue = data2.value.suffix
}
return {
rule: Number(data2.value.type),
oldValue,
newValue,
}
}
const requireValid = () => {
let alert2 = ''
if (!data2.value.type)
alert2 = '\u8BF7\u9009\u62E9\u53D8\u91CF\u540D\u79F0\u5904\u7406'
if (
data2.value.type == '0' &&
(!data2.value.oldValue || !data2.value.newValue)
)
alert2 = '\u8BF7\u586B\u5199\u539F/\u65B0\u540D\u79F0'
if (data2.value.type == '1' && !data2.value.prefix)
alert2 = '\u8BF7\u586B\u5199\u524D\u7F00\u540D\u79F0'
if (data2.value.type == '2' && !data2.value.suffix)
alert2 = '\u8BF7\u586B\u5199\u540E\u7F00\u540D\u79F0'
if (alert2) {
toast(alert2, 'error')
return false
}
return true
}
expose({
getConfigResult,
getConfigData,
requireValid,
})
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_input = resolveComponent('el-input')
const _component_el_form = resolveComponent('el-form')
return (
openBlock(),
createBlock(
_component_el_form,
{
onSubmit:
_cache[5] || (_cache[5] = withModifiers(() => {}, ['prevent'])),
'label-width': 'auto',
'label-position': 'left',
class: 'cms-el-form',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$5U, [
createVNode$1(
_component_el_form_item,
{ label: '\u53D8\u91CF\u540D\u79F0\u5904\u7406\uFF1A' },
{
default: withCtx(() => [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select',
'popper-class': 'cms-el-select_check',
modelValue: data2.value.type,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(data2.value.type = $event)),
placeholder: '\u8BF7\u9009\u62E9',
onChange: change2,
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(configTypes, (item2) => {
return createVNode$1(
_component_el_option,
{
key: item2.value,
value: item2.value,
label: item2.label,
},
null,
8,
['value', 'label']
)
}),
64
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
_: 1,
}
),
withDirectives(
createVNode$1(
_component_el_form_item,
{ label: '\u539F\u540D\u79F0\uFF1A' },
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: data2.value.oldValue,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(data2.value.oldValue = $event)),
placeholder: '\u8BF7\u8F93\u5165',
},
null,
8,
['modelValue']
),
]),
_: 1,
},
512
),
[[vShow, data2.value.type == '0']]
),
withDirectives(
createVNode$1(
_component_el_form_item,
{ label: '\u65B0\u540D\u79F0\uFF1A' },
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: data2.value.newValue,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(data2.value.newValue = $event)),
placeholder: '\u8BF7\u8F93\u5165',
},
null,
8,
['modelValue']
),
]),
_: 1,
},
512
),
[[vShow, data2.value.type == '0']]
),
withDirectives(
createVNode$1(
_component_el_form_item,
{ label: '\u524D\u7F00\u540D\u79F0\uFF1A' },
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: data2.value.prefix,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(data2.value.prefix = $event)),
placeholder: '\u8BF7\u8F93\u5165',
},
null,
8,
['modelValue']
),
]),
_: 1,
},
512
),
[[vShow, data2.value.type == '1']]
),
withDirectives(
createVNode$1(
_component_el_form_item,
{ label: '\u540E\u7F00\u540D\u79F0\uFF1A' },
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: data2.value.suffix,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(data2.value.suffix = $event)),
placeholder: '\u8BF7\u8F93\u5165',
},
null,
8,
['modelValue']
),
]),
_: 1,
},
512
),
[[vShow, data2.value.type == '2']]
),
]),
]),
_: 1,
}
)
)
}
},
})
var VarNameConfig = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$6Y,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var IOTunnelOperate_vue_vue_type_style_index_0_scoped_true_lang = ''
var IOTunnelOperate_vue_vue_type_style_index_1_scoped_true_lang = ''
const _withScopeId$3l = (n2) => (
pushScopeId('data-v-0d9952d3'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$5T = { class: 'dialog-content io-channel' }
const _hoisted_2$4T = { class: 'info' }
const _hoisted_3$4r = /* @__PURE__ */ _withScopeId$3l(() =>
/* @__PURE__ */ createElementVNode(
'p',
{ class: 'title' },
[
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u901A\u9053\u4FE1\u606F'
),
],
-1
)
)
const _hoisted_4$3T = { class: 'title tabs' }
const _hoisted_5$3u = ['onClick']
const _hoisted_6$37 = {
key: 0,
class: 'empty-setting',
}
const _hoisted_7$2M = {
key: 0,
class: 'subtitle',
}
const _hoisted_8$2t = {
class: 'el-dialog__footer',
style: { 'margin-top': '0' },
}
const _hoisted_9$2h = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_10$23 = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _hoisted_11$1V = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _hoisted_12$1P = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_13$1D = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$6X = /* @__PURE__ */ defineComponent({
props: {
title: null,
operate: null,
data: null,
},
emits: ['confirm', 'update:modelValue'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const driveTreeRef = ref()
const varNameConfigRef = ref()
const close2 = () => {
emit2('update:modelValue', false)
}
const confirm$1 = async () => {
if (!activeNodeIndex.value) {
toast('\u8BF7\u9009\u62E9\u901A\u9053\u9A71\u52A8', 'error')
return
}
const configParameters = {}
for (let [k2, v4] of Object.entries(parameters.value)) {
configParameters[k2] = v4.value
}
const keys3 = activeNodeIndex.value.split('::')
const params2 = {
parentId: null,
type: 1,
name: form2.value.name,
description: form2.value.description,
config: {
suppiler: keys3[0],
model: keys3[1],
protocol: keys3[2],
parameters: configParameters,
},
}
let msg = ''
let resp = null
const { operate, data: data2 } = $props2
if (operate == 'create') {
params2['copyConfig'] = null
resp = await request.post('/api/v1/variable/tunnel', params2)
msg = '\u65B0\u589E\u6210\u529F'
}
if (operate == 'copy') {
const res = varNameConfigRef.value?.getConfigResult()
params2['copyConfig'] = {
copyFromId: data2.tunnelId,
...res,
}
resp = await request.post('/api/v1/variable/tunnel', params2)
msg = '\u521B\u5EFA\u526F\u672C\u6210\u529F'
}
if (operate == 'edit') {
resp = await request.put(
`/api/v1/variable/tunnel/${data2.tunnelId}`,
params2
)
msg = '\u7F16\u8F91\u6210\u529F'
}
toast(msg, 'success')
emit2('confirm', resp, operate)
close2()
}
const tabs2 = ['base', 'adv']
let currentTab = ref('base')
let form2 = ref({
name: '',
description: '',
})
let varNameConfig = reactive({
visible: false,
toggle() {
varNameConfig.visible = !varNameConfig.visible
},
confirm() {
if (varNameConfigRef.value?.requireValid()) {
confirm$1()
}
},
})
const renderForm = computed(() => {
if (!activeNodeKey.value || !protocolInfo.value[activeNodeKey.value]) {
return [
{
moduleName: '',
moduleParams: [],
},
]
}
if (currentTab.value == 'base') {
return [
{
moduleName: '',
moduleParams:
protocolInfo.value[activeNodeKey.value].protocalParams,
},
]
} else {
return protocolInfo.value[activeNodeKey.value].advancedParams
}
})
let parameters = ref({})
let parametersDefault = {}
const createParameters = (protocolKey) => {
const { protocalParams, advancedParams } = protocolInfo.value[protocolKey]
const obj = {}
const addAttr = (item2) => {
switch (item2.type) {
case 'value':
obj[item2.key] = {
name: item2.name,
value: item2?.valueRule?.defaultValue || '',
rule: item2?.valueRule?.rule || '',
}
break
case 'select':
obj[item2.key] = {
name: item2.name,
value: item2?.selectValue || item2?.selectValues?.[0],
}
break
case 'switch':
obj[item2.key] = {
name: item2.name,
value: false,
}
break
default:
obj[item2.key] = {
name: item2.name,
value: '',
}
}
}
for (let item2 of protocalParams) {
addAttr(item2)
}
for (let item2 of advancedParams) {
for (let subitem of item2.moduleParams) {
addAttr(subitem)
}
}
return obj
}
const checkParametersChange = (data2, defaultData2) => {
let fill = false
for (let [k2, v4] of Object.entries(defaultData2)) {
if (data2[k2].value !== v4.value) {
fill = true
return fill
}
}
return fill
}
let activeNodeIndex = ref('')
let activeNodeKey = ref('')
const nodeSwitch = (node2) => {
driveTreeRef.value?.setActiveNode(node2)
activeNodeIndex.value = node2.index
activeNodeKey.value = node2.key
parameters.value = createParameters(node2.key)
parametersDefault = JSON.parse(JSON.stringify(parameters.value))
}
const nodeClick = async (node2) => {
const isFill = checkParametersChange(parameters.value, parametersDefault)
if (!isFill) {
nodeSwitch(node2)
} else {
if (
await confirm(
'\u662F\u5426\u5207\u6362\u9A71\u52A8\uFF0C\u5207\u6362\u9A71\u52A8\u4F1A\u4E22\u5931\u5F53\u524D\u914D\u7F6E\uFF1F'
)
) {
nodeSwitch(node2)
}
}
}
const changeNodeField = (data2) => {
let list2 = lodash.cloneDeep(data2)
const recursion = (list22) => {
for (let i2 = 0; i2 < list22.length; i2++) {
let item2 = list22[i2]
if (item2.suppilers) {
item2.children = item2.suppilers
item2.nodeType = 'suppilers'
if (!item2.name) item2.name = item2.type
if (!item2.key) item2.key = item2.type
if (!item2.index) item2.index = item2.key + Math.random()
delete item2.suppilers
}
if (item2.models) {
item2.children = item2.models
item2.nodeType = 'models'
if (!item2.index) item2.index = item2.key + Math.random()
delete item2.models
}
if (item2.protocols) {
if (item2.protocols.find((e2) => e2.isShow === true)) {
item2.nodeType = 'protocols'
item2.children = item2.protocols
if (!item2.index) item2.index = item2.key + Math.random()
} else {
item2.nodeType = 'protocol'
item2.index = item2.protocols[0].index
}
delete item2.protocols
}
if (item2.isShow === true || item2.isShow === false) {
item2.nodeType = 'protocol'
}
if (item2.children && item2.children.length) {
recursion(item2.children)
}
}
}
recursion(list2)
return list2
}
let protocolTree = ref([])
let protocolInfo = ref()
const getProtocol = async () => {
const { infos, tree } = await request.get(
'/api/v1/variable/tunnel/io/protocol'
)
protocolTree.value = tree?.length ? changeNodeField(tree) : []
protocolInfo.value = infos
}
onBeforeMount(async () => {
await getProtocol()
if ($props2.operate == 'create');
else {
const { data: data2 } = $props2
if (!data2.config) return
const { suppiler, model, protocol, parameters: params2 } = data2.config
const index2 = [suppiler, model, protocol].join('::')
const node2 = getTargetNode('index', index2, protocolTree.value)
nodeSwitch(node2)
form2.value.name = data2.name
for (let [key2, value2] of Object.entries(params2)) {
parameters.value[key2].value = value2
}
const resp = await request.get(
`/api/v1/variable/tunnel/${data2.tunnelId}`
)
form2.value.description = resp.description
}
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_switch = resolveComponent('el-switch')
const _component_el_form = resolveComponent('el-form')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'custom-class': 'cms-el-dialog',
width: '940px',
'append-to-body': '',
'close-on-click-modal': false,
title: $props2.title,
onClose: close2,
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$5T, [
createVNode$1(
IOTunnelDriveTree,
{
ref_key: 'driveTreeRef',
ref: driveTreeRef,
class: 'drive-tree',
disabled: $props2.operate != 'create',
activeNodeIndex: activeNodeIndex.value,
treeData: protocolTree.value,
onNodeClick: nodeClick,
},
null,
8,
['disabled', 'activeNodeIndex', 'treeData']
),
createElementVNode('div', _hoisted_2$4T, [
createVNode$1(
_component_el_form,
{
inline: true,
onSubmit:
_cache[2] ||
(_cache[2] = withModifiers(() => {}, ['prevent'])),
'label-width': 'auto',
'label-position': 'right',
class: 'cms-el-form info-form',
},
{
default: withCtx(() => [
_hoisted_3$4r,
createElementVNode('div', null, [
createVNode$1(
_component_el_form_item,
{
label: '\u901A\u9053\u540D\u79F0\uFF1A',
'label-width': '90px',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: form2.value.name,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(form2.value.name = $event)),
placeholder:
'\u8BF7\u8F93\u5165\u901A\u9053\u540D\u79F0',
},
null,
8,
['modelValue']
),
]),
_: 1,
}
),
createVNode$1(
_component_el_form_item,
{
label: '\u901A\u9053\u63CF\u8FF0\uFF1A',
'label-width': '90px',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: form2.value.description,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(form2.value.description = $event)),
placeholder:
'\u8BF7\u8F93\u5165\u901A\u9053\u63CF\u8FF0',
},
null,
8,
['modelValue']
),
]),
_: 1,
}
),
]),
createElementVNode('p', _hoisted_4$3T, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(tabs2), (item2) => {
return (
openBlock(),
createElementBlock(
'span',
{
key: item2,
onClick: () => (currentTab.value = item2),
class: normalizeClass({
active: currentTab.value == item2,
}),
},
toDisplayString$1(
item2 == 'base'
? '\u57FA\u7840\u914D\u7F6E'
: '\u9AD8\u7EA7\u914D\u7F6E'
),
11,
_hoisted_5$3u
)
)
}),
128
)),
]),
!unref(renderForm).length
? (openBlock(),
createElementBlock(
'p',
_hoisted_6$37,
'\u6682\u65E0\u76F8\u5173\u914D\u7F6E'
))
: (openBlock(true),
createElementBlock(
Fragment,
{ key: 1 },
renderList(unref(renderForm), (m2, i2) => {
return (
openBlock(),
createElementBlock('div', { key: i2 }, [
m2.moduleName
? (openBlock(),
createElementBlock(
'strong',
_hoisted_7$2M,
toDisplayString$1(m2.moduleName),
1
))
: createCommentVNode('', true),
createElementVNode('div', null, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(m2.moduleParams, (item2) => {
return (
openBlock(),
createBlock(
_component_el_form_item,
{
key: item2.key,
label: item2.name + '\uFF1A',
name: item2.key,
},
{
default: withCtx(() => [
item2.type == 'select'
? (openBlock(),
createBlock(
_component_el_select,
{
key: 0,
modelValue:
parameters.value[
item2.key
].value,
'onUpdate:modelValue':
($event) =>
(parameters.value[
item2.key
].value = $event),
class:
'cms-el-select',
'popper-class':
'cms-el-select__popper',
placeholder: ' ',
},
{
default: withCtx(
() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
item2.selectValues,
(opt) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: opt,
value:
opt,
label:
opt,
},
null,
8,
[
'value',
'label',
]
)
)
}
),
128
)),
]
),
_: 2,
},
1032,
[
'modelValue',
'onUpdate:modelValue',
]
))
: createCommentVNode(
'',
true
),
item2.type == 'value'
? (openBlock(),
createBlock(
_component_el_input,
{
key: 1,
class: 'cms-el-input',
modelValue:
parameters.value[
item2.key
].value,
'onUpdate:modelValue':
($event) =>
(parameters.value[
item2.key
].value = $event),
placeholder:
'\u8BF7\u8F93\u5165' +
item2.name,
},
createSlots({ _: 2 }, [
item2.unit
? {
name: 'append',
fn: withCtx(
() => [
createTextVNode(
toDisplayString$1(
item2.unit
),
1
),
]
),
}
: void 0,
]),
1032,
[
'modelValue',
'onUpdate:modelValue',
'placeholder',
]
))
: createCommentVNode(
'',
true
),
item2.type == 'switch'
? (openBlock(),
createBlock(
_component_el_switch,
{
key: 2,
modelValue:
parameters.value[
item2.key
].value,
'onUpdate:modelValue':
($event) =>
(parameters.value[
item2.key
].value = $event),
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
]
))
: createCommentVNode(
'',
true
),
]),
_: 2,
},
1032,
['label', 'name']
)
)
}),
128
)),
]),
])
)
}),
128
)),
]),
_: 1,
}
),
]),
]),
createElementVNode('div', _hoisted_8$2t, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: close2,
},
{
default: withCtx(() => [_hoisted_9$2h]),
_: 1,
}
),
$props2.operate == 'copy'
? (openBlock(),
createBlock(
_component_el_button,
{
key: 0,
class: 'btn btn-submit',
type: 'primary',
onClick: unref(varNameConfig).toggle,
},
{
default: withCtx(() => [_hoisted_10$23]),
_: 1,
},
8,
['onClick']
))
: (openBlock(),
createBlock(
_component_el_button,
{
key: 1,
class: 'btn btn-submit',
type: 'primary',
onClick: confirm$1,
},
{
default: withCtx(() => [_hoisted_11$1V]),
_: 1,
}
)),
]),
createVNode$1(
_component_el_dialog,
{
'custom-class': 'cms-el-dialog',
width: '450px',
'append-to-body': '',
modelValue: unref(varNameConfig).visible,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(varNameConfig).visible = $event)),
'close-on-click-modal': false,
title: $props2.title,
},
{
footer: withCtx(() => [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: unref(varNameConfig).toggle,
},
{
default: withCtx(() => [_hoisted_12$1P]),
_: 1,
},
8,
['onClick']
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: unref(varNameConfig).confirm,
},
{
default: withCtx(() => [_hoisted_13$1D]),
_: 1,
},
8,
['onClick']
),
]),
default: withCtx(() => [
$props2.operate == 'copy'
? (openBlock(),
createBlock(
_sfc_main$6Y,
{
key: 0,
ref_key: 'varNameConfigRef',
ref: varNameConfigRef,
style: { padding: '0 20px' },
},
null,
512
))
: createCommentVNode('', true),
]),
_: 1,
},
8,
['modelValue', 'title']
),
]),
_: 1,
},
8,
['title']
)
)
}
},
})
var IOTunnelOperateDialog = /* @__PURE__ */ _export_sfc(_sfc_main$6X, [
['__scopeId', 'data-v-0d9952d3'],
])
var IOTunnelOperate = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: IOTunnelOperateDialog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _hoisted_1$5S = { class: 'dialog-content' }
const _hoisted_2$4S = { class: 'el-dialog__footer' }
const _hoisted_3$4q = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_4$3S = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$6W = /* @__PURE__ */ defineComponent({
props: {
title: null,
operate: null,
data: null,
},
emits: ['confirm', 'update:modelValue'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const varNameConfigRef = ref()
const close2 = () => {
emit2('update:modelValue', false)
}
const channelTypes = [
{ value: '3', label: '\u5185\u90E8\u53D8\u91CF' },
{ value: '5', label: 'I/O\u6620\u5C04' },
{ value: '4', label: '\u903B\u8F91\u53D8\u91CF' },
]
let form2 = ref({
type: '',
name: '',
description: '',
})
const confirm2 = async () => {
if (!Number(form2.value.type))
return toast(
'\u901A\u9053\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A',
'error'
)
const params2 = {
...form2.value,
type: Number(form2.value.type),
config: null,
}
let msg = ''
let resp = null
const { operate, data: data2 } = $props2
if (operate == 'create') {
resp = await request.post('/api/v1/variable/tunnel', params2)
msg = '\u65B0\u589E\u6210\u529F'
}
if (operate == 'copy') {
if (!varNameConfigRef.value?.requireValid()) return
const res = varNameConfigRef.value?.getConfigResult()
params2['copyConfig'] = {
copyFromId: data2.tunnelId,
...res,
}
resp = await request.post('/api/v1/variable/tunnel', params2)
msg = '\u521B\u5EFA\u526F\u672C\u6210\u529F'
}
if (operate == 'edit') {
resp = await request.put(
`/api/v1/variable/tunnel/${data2.tunnelId}`,
params2
)
msg = '\u7F16\u8F91\u6210\u529F'
}
toast(msg, 'success')
emit2('confirm', resp, operate)
close2()
}
onMounted(async () => {
const { operate, data: data2 } = $props2
if (operate == 'edit' || operate == 'copy') {
form2.value.name = data2.name
form2.value.type = data2.type + ''
const resp = await request.get(
`/api/v1/variable/tunnel/${data2.tunnelId}`
)
form2.value.description = resp.description
}
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_form = resolveComponent('el-form')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'custom-class': 'cms-el-dialog',
width: '450px',
'close-on-click-modal': false,
title: $props2.title,
'append-to-body': '',
onClose: close2,
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$5S, [
createVNode$1(
_component_el_form,
{
onSubmit:
_cache[3] ||
(_cache[3] = withModifiers(() => {}, ['prevent'])),
'label-width': '110px',
'label-position': 'left',
class: 'cms-el-form',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_form_item,
{ label: '\u901A\u9053\u540D\u79F0\uFF1A' },
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: form2.value.name,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(form2.value.name = $event)),
placeholder:
'\u8BF7\u8F93\u5165\u901A\u9053\u540D\u79F0',
},
null,
8,
['modelValue']
),
]),
_: 1,
}
),
$props2.operate == 'create'
? (openBlock(),
createBlock(
_component_el_form_item,
{
key: 0,
label: '\u901A\u9053\u7C7B\u578B\uFF1A',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select',
'popper-class': 'cms-el-select_check',
modelValue: form2.value.type,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(form2.value.type = $event)),
placeholder: '\u8BF7\u9009\u62E9',
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(channelTypes, (item2) => {
return createVNode$1(
_component_el_option,
{
key: item2.value,
value: item2.value,
label: item2.label,
},
null,
8,
['value', 'label']
)
}),
64
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
_: 1,
}
))
: createCommentVNode('', true),
createVNode$1(
_component_el_form_item,
{ label: '\u901A\u9053\u63CF\u8FF0\uFF1A' },
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: form2.value.description,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(form2.value.description = $event)),
placeholder:
'\u8BF7\u8F93\u5165\u901A\u9053\u63CF\u8FF0',
},
null,
8,
['modelValue']
),
]),
_: 1,
}
),
]),
_: 1,
}
),
$props2.operate == 'copy'
? (openBlock(),
createBlock(
_sfc_main$6Y,
{
key: 0,
ref_key: 'varNameConfigRef',
ref: varNameConfigRef,
},
null,
512
))
: createCommentVNode('', true),
]),
createElementVNode('div', _hoisted_2$4S, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: close2,
},
{
default: withCtx(() => [_hoisted_3$4q]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_4$3S]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['title']
)
)
}
},
})
var InnerTunnelOperate = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$6W,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _hoisted_1$5R = { class: 'dialog-content' }
const _hoisted_2$4R = { class: 'el-dialog__footer' }
const _hoisted_3$4p = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_4$3R = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$6V = /* @__PURE__ */ defineComponent({
props: {
title: null,
operate: null,
node: null,
data: null,
},
emits: ['confirm', 'update:modelValue'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const varNameConfigRef = ref()
const close2 = () => {
emit2('update:modelValue', false)
}
let name2 = ref('')
let address = ref('')
const confirm2 = async () => {
const params2 = {
type: 1,
name: name2.value,
config: { address: address.value },
}
let msg = ''
let resp = null
const { operate, data: data2, node: node2 } = $props2
if (operate == 'create') {
params2['parentId'] = data2.tunnelId
resp = await request.post('/api/v1/variable/tunnel', params2)
msg = '\u65B0\u589E\u6210\u529F'
}
if (operate == 'copy') {
if (!varNameConfigRef.value?.requireValid()) return
const res = varNameConfigRef.value?.getConfigResult()
params2['parentId'] = node2.parent.tunnelId
params2['copyConfig'] = {
copyFromId: data2.tunnelId,
...res,
}
resp = await request.post('/api/v1/variable/tunnel', params2)
msg = '\u521B\u5EFA\u526F\u672C\u6210\u529F'
}
if (operate == 'edit') {
params2['parentId'] = node2.parent.tunnelId
resp = await request.put(
`/api/v1/variable/tunnel/${data2.tunnelId}`,
params2
)
msg = '\u7F16\u8F91\u6210\u529F'
}
toast(msg, 'success')
emit2('confirm', resp, operate)
close2()
}
onMounted(() => {
const { operate, data: data2 } = $props2
if (operate == 'edit' || operate == 'copy') {
name2.value = data2.name
address.value = data2.config?.address || ''
}
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_form = resolveComponent('el-form')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'custom-class': 'cms-el-dialog',
width: '450px',
title: $props2.title,
'close-on-click-modal': false,
'append-to-body': '',
onClose: close2,
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$5R, [
createVNode$1(
_component_el_form,
{
onSubmit:
_cache[2] ||
(_cache[2] = withModifiers(() => {}, ['prevent'])),
'label-width': '110px',
'label-position': 'left',
class: 'cms-el-form',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_form_item,
{ label: '\u7AD9\u70B9\u540D\u79F0\uFF1A' },
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: name2.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(name2.value = $event)),
placeholder: '\u8BF7\u8F93\u5165',
},
null,
8,
['modelValue']
),
]),
_: 1,
}
),
createVNode$1(
_component_el_form_item,
{ label: 'Addr\u7AD9\u53F7\uFF1A' },
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: address.value,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(address.value = $event)),
placeholder: '\u8BF7\u8F93\u5165',
},
null,
8,
['modelValue']
),
]),
_: 1,
}
),
]),
_: 1,
}
),
$props2.operate == 'copy'
? (openBlock(),
createBlock(
_sfc_main$6Y,
{
key: 0,
ref_key: 'varNameConfigRef',
ref: varNameConfigRef,
},
null,
512
))
: createCommentVNode('', true),
]),
createElementVNode('div', _hoisted_2$4R, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: close2,
},
{
default: withCtx(() => [_hoisted_3$4p]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_4$3R]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['title']
)
)
}
},
})
var SUBTunnelOperate = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$6V,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _hoisted_1$5Q = { class: 'dialog-content' }
const _hoisted_2$4Q = { class: 'el-dialog__footer' }
const _hoisted_3$4o = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_4$3Q = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$6U = /* @__PURE__ */ defineComponent({
props: {
title: null,
operate: null,
node: null,
data: null,
},
emits: ['confirm', 'update:modelValue'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const varNameConfigRef = ref()
const close2 = () => {
emit2('update:modelValue', false)
}
let name2 = ref('')
const confirm2 = async () => {
let msg = ''
let resp = null
const { operate, data: data2, node: node2 } = $props2
if (operate == 'create') {
resp = await request.post(
`/api/v1/variable/tunnel/${data2.tunnelId}/group`,
{ name: name2.value }
)
msg = '\u65B0\u589E\u6210\u529F'
}
if (operate == 'copy') {
if (!varNameConfigRef.value?.requireValid()) return
const res = varNameConfigRef.value?.getConfigResult()
const params2 = {
name: name2.value,
copyConfig: {
copyFromId: $props2.data.groupId,
...res,
},
}
resp = await request.post(
`/api/v1/variable/tunnel/${node2.parent.tunnelId}/group`,
params2
)
msg = '\u521B\u5EFA\u526F\u672C\u6210\u529F'
}
if (operate == 'edit') {
resp = await request.put(
`/api/v1/variable/tunnel/${node2.parent.tunnelId}/group/${data2.groupId}`,
{
name: name2.value,
}
)
msg = '\u7F16\u8F91\u6210\u529F'
}
toast(msg, 'success')
emit2('confirm', resp, operate)
close2()
}
onMounted(() => {
const { operate, data: data2 } = $props2
if (operate == 'edit' || operate == 'copy') {
name2.value = data2.name
}
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_form = resolveComponent('el-form')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'custom-class': 'cms-el-dialog',
width: '450px',
'append-to-body': '',
'close-on-click-modal': false,
title: $props2.title,
onClose: close2,
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$5Q, [
createVNode$1(
_component_el_form,
{
onSubmit:
_cache[1] ||
(_cache[1] = withModifiers(() => {}, ['prevent'])),
'label-width': '110px',
'label-position': 'left',
class: 'cms-el-form',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_form_item,
{ label: '\u53D8\u91CF\u7EC4\u540D\u79F0\uFF1A' },
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: name2.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(name2.value = $event)),
placeholder: '\u8BF7\u8F93\u5165',
},
null,
8,
['modelValue']
),
]),
_: 1,
}
),
]),
_: 1,
}
),
$props2.operate == 'copy'
? (openBlock(),
createBlock(
_sfc_main$6Y,
{
key: 0,
ref_key: 'varNameConfigRef',
ref: varNameConfigRef,
},
null,
512
))
: createCommentVNode('', true),
]),
createElementVNode('div', _hoisted_2$4Q, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: close2,
},
{
default: withCtx(() => [_hoisted_3$4o]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_4$3Q]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['title']
)
)
}
},
})
var VarGroupOperate = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$6U,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ImportFile_vue_vue_type_style_index_0_scoped_true_lang$1 = ''
const _withScopeId$3k = (n2) => (
pushScopeId('data-v-003ab8ee'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$5P = { class: 'dialog-content' }
const _hoisted_2$4P = { class: 'use' }
const _hoisted_3$4n = /* @__PURE__ */ createTextVNode(
' \u5BFC\u5165\u65B9\u5F0F\uFF1A '
)
const _hoisted_4$3P = /* @__PURE__ */ _withScopeId$3k(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-tishi1 tips',
title:
'1.\u8986\u76D6\u5BFC\u5165\uFF0C\u5220\u9664\u540C\u540D\u8282\u70B9\u7684\u6570\u636E\uFF0C\u4EE5\u5BFC\u5165\u6587\u4EF6\u7684\u6570\u636E\u4E3A\u51C6\uFF1B
2.\u66F4\u65B0\u5BFC\u5165\uFF0C\u4E0D\u5B58\u5728\u7684\u6570\u636E\u5219\u65B0\u589E\uFF0C\u5B58\u5728\u7684\u6570\u636E\u5219\u66F4\u65B0\u914D\u7F6E\uFF1B',
'data-tooltip-placement': 'right-start',
'data-tooltip-raw-content': '',
},
null,
-1
)
)
const _hoisted_5$3t = { class: 'el-dialog__footer' }
const _hoisted_6$36 = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_7$2L = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$6T = /* @__PURE__ */ defineComponent({
props: {
mode: null,
tunnelId: null,
groupId: null,
},
emits: ['success', 'update:modelValue'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const close2 = () => {
emit2('update:modelValue', false)
}
let use3 = ref('')
const uploaderRef = ref()
const confirm2 = () => {
if (!use3.value)
return toast('\u8BF7\u9009\u62E9\u5BFC\u5165\u65B9\u5F0F', 'error')
uploaderRef.value?.click()
}
const resetFile = () => {
if (uploaderRef.value?.value) uploaderRef.value.value = ''
}
const selectFile = (event) => {
const target2 = event.target
const file2 = target2.files[0]
let formData = new FormData()
formData.set('file', file2)
const replace2 = use3.value == '1' ? true : false
formData.set('mode', props2.mode + '')
formData.set('replace', replace2 + '')
if (props2.tunnelId !== null) {
formData.set('targetTunnelId', props2.tunnelId + '')
}
if (props2.groupId !== null) {
formData.set('targetGroupId', props2.groupId + '')
}
return request({
url: `/api/v1/variable/import`,
method: 'post',
data: formData,
})
.then(() => {
toast('\u5BFC\u5165\u6210\u529F', 'success')
emit2('success', props2.mode, replace2)
close2()
})
.finally(() => {
resetFile()
})
}
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
'close-on-click-modal': false,
title: '\u5BFC\u5165',
'custom-class': 'cms-el-dialog',
width: '450px',
onClose: close2,
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$5P, [
createElementVNode('div', _hoisted_2$4P, [
_hoisted_3$4n,
createVNode$1(
_component_el_select,
{
modelValue: use3.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (use3.value = $event)),
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
placeholder: '\u8BF7\u9009\u62E9',
style: { width: '240px' },
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
key: '0',
value: '',
label: '\u8BF7\u9009\u62E9',
}),
createVNode$1(_component_el_option, {
key: '1',
value: '1',
label: '\u8986\u76D6\u5BFC\u5165',
}),
createVNode$1(_component_el_option, {
key: '2',
value: '2',
label: '\u66F4\u65B0\u5BFC\u5165',
}),
]),
_: 1,
},
8,
['modelValue']
),
_hoisted_4$3P,
]),
createElementVNode(
'input',
{
ref_key: 'uploaderRef',
ref: uploaderRef,
class: 'uploader',
type: 'file',
accept: '.xlsx',
onChange: selectFile,
},
null,
544
),
]),
createElementVNode('div', _hoisted_5$3t, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: close2,
},
{
default: withCtx(() => [_hoisted_6$36]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_7$2L]),
_: 1,
}
),
]),
]),
_: 1,
}
)
)
}
},
})
var ImportFileDialog = /* @__PURE__ */ _export_sfc(_sfc_main$6T, [
['__scopeId', 'data-v-003ab8ee'],
])
var ImportFile$2 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ImportFileDialog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Sidebar_vue_vue_type_style_index_0_scoped_true_lang$5 = ''
var Sidebar_vue_vue_type_style_index_1_lang = ''
const _withScopeId$3j = (n2) => (
pushScopeId('data-v-64d00d6d'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$5O = { class: 'title' }
const _hoisted_2$4O = ['disabled', 'onClick']
const _hoisted_3$4m = {
key: 0,
class: 'search flex',
}
const _hoisted_4$3O = ['title']
const _hoisted_5$3s = { class: 'tree' }
const _hoisted_6$35 = { class: 'tree-node-icon' }
const _hoisted_7$2K = ['title']
const _hoisted_8$2s = {
key: 0,
class: 'icon',
'aria-hidden': 'true',
}
const _hoisted_9$2g = {
key: 0,
'xlink:href': '#icon-jinyong',
fill: '#fff',
}
const _hoisted_10$22 = {
key: 0,
'xlink:href': '#icon-zhengchang',
}
const _hoisted_11$1U = {
key: 1,
'xlink:href': '#icon-lixianzhuangtai',
}
const _hoisted_12$1O = { class: 'title flex' }
const _hoisted_13$1C = {
key: 0,
class: 'tree-node-unsave',
}
const _hoisted_14$1q = {
key: 0,
class: 'btn',
}
const _hoisted_15$1l = /* @__PURE__ */ _withScopeId$3j(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-gengduo menu' },
null,
-1
)
)
const _hoisted_16$1j = /* @__PURE__ */ createTextVNode(
' \u6DFB\u52A0\u7AD9\u70B9 '
)
const _hoisted_17$1b = /* @__PURE__ */ createTextVNode(
' \u6DFB\u52A0\u53D8\u91CF\u7EC4 '
)
const _hoisted_18$13 = /* @__PURE__ */ createTextVNode(
' \u521B\u5EFA\u526F\u672C '
)
const _hoisted_19$_ = /* @__PURE__ */ createTextVNode(' \u7F16\u8F91 ')
const _hoisted_20$U = /* @__PURE__ */ createTextVNode(' \u5220\u9664 ')
const _hoisted_21$K = /* @__PURE__ */ createTextVNode(' \u5BFC\u5165 ')
const _hoisted_22$I = /* @__PURE__ */ createTextVNode(' \u5BFC\u51FA ')
const _hoisted_23$E = /* @__PURE__ */ createTextVNode(' \u542F\u7528 ')
const _hoisted_24$C = /* @__PURE__ */ createTextVNode(' \u7981\u7528 ')
const _sfc_main$6S = /* @__PURE__ */ defineComponent({
props: {
styleB: { type: Boolean },
uneditable: { type: Boolean },
disabledChannelIndex: null,
autoSelectFirstNode: { type: Boolean },
filterData: null,
noLanguage: { type: Boolean },
},
emits: ['delete', 'nodeClick', 'tabSwitch'],
setup(__props2, { expose, emit: emit2 }) {
const $props2 = __props2
onMounted(async () => {
await getTreeData2()
getUnSaveListStorageKeys()
if ($props2.autoSelectFirstNode) {
selectFirstNode()
}
})
const treeRef = ref()
const operationMap = {
create: '\u65B0\u589E',
edit: '\u7F16\u8F91',
copy: '\u590D\u5236',
}
const channelTabs = ['IO\u901A\u9053', '\u5185\u90E8\u901A\u9053']
let activeTab2 = ref('IO\u901A\u9053')
const tabChange = async (tab) => {
if (tab === activeTab2.value) return
activeTab2.value = tab
await getTreeData2()
activeNode.value = null
nodeClick(null, null)
emit2('tabSwitch')
}
const _getTreeData = useDebounceFn(() => {
getTreeData2()
}, 500)
watch$1(
() => $props2.filterData.keyword,
() => {
_getTreeData()
},
{
deep: true,
}
)
watch$1(
() => [$props2.filterData.dataTypes, $props2.filterData.usedType],
() => {
getTreeData2()
},
{
deep: true,
}
)
let treeData = ref([])
let activeNode = ref(null)
let updateVirtualTree = ref(false)
const getNodeIcon = (treeType, type4 = 0, typeTag) => {
if (treeType == 'group') return 'icon-bianliangzuzijiedian'
if (type4 == 2) return 'icon-xitongbianliang'
if (type4 == 3) return 'icon-neibubianliang'
if (type4 == 4) return 'icon-luojibianliang'
if (type4 == 5) return 'icon-IOyingshebianliang'
if (type4 == 1) {
if (typeTag == 'TCP') return 'icon-TCPfujiedian'
if (typeTag == 'COM') return 'icon-chuankoufujiedian'
if (typeTag == 'SUB') return 'icon-zhandianzijiedian1'
}
}
const getTunnelNodeState = (name2) => {
return Variable.getByName(`State_${name2}`)?.value
}
const isStorageIndex = (index2) => {
return state$4.unSaveListStorageKeys.includes(index2)
}
const selectFirstNode = () => {
const data2 = treeData.value[0]
if (!data2) return
const node2 = { parent: treeData.value }
nodeClick(node2, data2)
}
const nodeClick = (node2, data2, reQuery = false) => {
if (
data2 === activeNode.value &&
activeNode.value !== null &&
reQuery == false
)
return
activeNode.value = data2
const cloneData = JSON.parse(JSON.stringify(data2))
const cloneParent = JSON.parse(JSON.stringify(node2?.parent || {}))
let activeNodeTunnel = null
if (data2 && node2) {
if (data2?.treeType == 'group') {
if (['TCP', 'COM'].includes(cloneParent.typeTag)) {
activeNodeTunnel = cloneParent
}
if (cloneParent.typeTag == 'SUB') {
activeNodeTunnel = cloneParent
let tunnelConfig = {}
for (let item2 of treeData.value) {
const t3 = item2?.childs?.find(
(e2) => e2.tunnelId === cloneParent.tunnelId
)
if (t3) {
tunnelConfig = item2.config
break
}
}
if (activeNodeTunnel) activeNodeTunnel['config'] = tunnelConfig
}
if (cloneParent.typeTag === null) {
activeNodeTunnel = cloneParent
}
} else {
if (['TCP', 'COM'].includes(data2.typeTag || '')) {
activeNodeTunnel = data2
}
if (data2.typeTag == 'SUB') {
activeNodeTunnel = cloneData
if (activeNodeTunnel)
activeNodeTunnel['config'] = cloneParent.config
}
if (data2.typeTag === null) {
activeNodeTunnel = cloneData
}
}
}
emit2('nodeClick', data2, activeNodeTunnel, treeData.value.length)
}
const getTreeData2 = async () => {
const treeMode = channelTabs.indexOf(activeTab2.value) + 1
const params2 = {
treeMode,
...$props2.filterData,
}
const resp = await request.post(`/api/v1/variable/tunnel/tree`, params2)
treeData.value = resp
nextTick(() => {
updateVirtualTree.value = true
})
}
const isHightLight = ref(false)
const hightLight = (isActive) => {
isHightLight.value = isActive
if (isActive) {
setTimeout(() => {
isHightLight.value = false
}, 1500)
}
}
const filterText = ref('')
let operatingNode = ref()
let operatingNodeData = ref()
const handleCommand = (params2) => {
let { type: type4, node: node2, data: data2 } = params2
operatingNode.value = node2
operatingNodeData.value = data2
const fun = {
createVarGroup() {
varGroupConfig.open('create')
},
createAddressGroup() {
SUBTunnelConfig.open('create')
},
copy() {
if (['COM', 'TCP', null].includes(data2.typeTag)) {
createTunnelOpen('copy')
}
if (data2.typeTag == 'SUB') {
SUBTunnelConfig.open('copy')
}
if (data2.typeTag === void 0) {
varGroupConfig.open('copy')
}
},
edit: () => {
if (['COM', 'TCP', null].includes(data2.typeTag)) {
createTunnelOpen('edit')
}
if (data2.typeTag == 'SUB') {
SUBTunnelConfig.open('edit')
}
if (data2.typeTag === void 0) {
varGroupConfig.open('edit')
}
},
delete: () => {
deleteNode2(data2, node2)
},
importNode() {
const { mode: mode2, tunnelId, groupId } = createImportExportParams()
Object.assign(importFileConfig, {
visible: true,
mode: mode2,
tunnelId,
groupId,
})
},
exportNode() {
const {
mode: mode2,
tunnelId,
groupId,
name: name2,
} = createImportExportParams()
exportFile(mode2, tunnelId, groupId, name2).then(() => {
toast('\u5BFC\u51FA\u6210\u529F', 'success')
})
},
enable() {
switchNode(data2, 'enable')
},
disabled() {
switchNode(data2, 'disable')
},
}
fun[type4]()
}
const deleteNode2 = async (data2, node2) => {
let msg = '\u662F\u5426\u5220\u9664\u8282\u70B9'
let url2 = `/api/v1/variable/tunnel/${node2.parent.tunnelId}/group/${data2.groupId}`
const isTunnel = ['COM', 'TCP', null].includes(data2.typeTag)
const isSubTunnel = data2.typeTag == 'SUB'
if (isTunnel)
msg =
'\u5220\u9664\u901A\u9053\u5C06\u5220\u9664\u901A\u9053\u4E0B\u6240\u6709\u8282\u70B9\uFF0C\u662F\u5426\u5220\u9664\uFF1F'
if (isSubTunnel)
msg =
'\u5220\u9664\u7AD9\u70B9\u5C06\u5220\u9664\u4E0B\u6240\u6709\u8282\u70B9\uFF0C\u662F\u5426\u5220\u9664\uFF1F'
if (isTunnel || isSubTunnel) {
url2 = `/api/v1/variable/tunnel/${data2.tunnelId}`
}
if (await confirm(msg)) {
await request.delete(url2)
toast('\u5220\u9664\u6210\u529F', 'success')
const list2 = isTunnel ? treeData.value : node2.parent.childs
const idx = list2.findIndex((item2) => item2.index === data2.index)
list2.splice(idx, 1)
if (
data2.index === activeNode.value?.index ||
(data2?.childs &&
getTargetNode(
'index',
activeNode.value?.index,
data2?.childs,
'childs'
))
) {
activeNode.value = null
nodeClick(null, null)
}
}
}
const switchNode = async (data2, operation2) => {
initUtils.debouncedFn(async () => {
await request.put(
`/api/v1/variable/tunnel/${data2.tunnelId}/${operation2}`
)
data2.enable = operation2 == 'enable' ? true : false
})
}
const createSubTunnelOpen = () => {
operatingNode.value = treeRef.value?.getCurrentNode()
operatingNodeData.value = operatingNode.value.data
SUBTunnelConfig.open('create')
}
const createTunnelOpen = (action = 'create') => {
activeTab2.value == 'IO\u901A\u9053'
? IOTunnelConfig.open(action)
: innerTunnelConfig.open(action)
}
const tunnelOperateConfirm = async () => {
getTreeData2()
}
const innerTunnelConfig = reactive({
visible: false,
title: '',
operate: 'create',
open(operate) {
Object.assign(innerTunnelConfig, {
operate,
visible: true,
title: `${operationMap[operate]}\u901A\u9053`,
})
},
})
const IOTunnelConfig = reactive({
visible: false,
title: '',
operate: 'create',
open(operate) {
Object.assign(IOTunnelConfig, {
operate,
visible: true,
title: `${operationMap[operate]}\u901A\u9053`,
})
},
})
const SUBTunnelConfig = reactive({
visible: false,
title: '',
operate: 'create',
open(operate) {
Object.assign(SUBTunnelConfig, {
operate,
visible: true,
title:
operate == 'create'
? '\u6DFB\u52A0\u7AD9\u70B9'
: `${operationMap[operate]}\u7AD9\u70B9`,
})
},
})
const varGroupConfig = reactive({
visible: false,
title: '',
operate: 'create',
open(operate) {
Object.assign(varGroupConfig, {
operate,
visible: true,
title:
operate == 'create'
? '\u6DFB\u52A0\u53D8\u91CF\u7EC4'
: `${operationMap[operate]}\u53D8\u91CF\u7EC4`,
})
},
confirm() {
getTreeData2()
const tunnelId = state$4.activeNodeTunnel?.tunnelId
if (tunnelId) {
getGroupData(tunnelId)
}
},
})
const importFileConfig = reactive({
visible: false,
mode: 0,
tunnelId: null,
groupId: null,
})
const createImportExportParams = () => {
const {
treeType,
tunnelId = 0,
groupId = 0,
name: name2,
} = operatingNodeData.value
const mode2 = treeType == 'tunnel' ? 1 : 2
const tId =
treeType == 'tunnel' ? tunnelId : operatingNode.value.parent.tunnelId
const gId = treeType == 'tunnel' ? null : groupId
return {
mode: mode2,
tunnelId: tId,
groupId: gId,
name: name2,
}
}
const importFileSuccess = async (mode2, replace2) => {
await getTreeData2()
const updateModuleSavedStatus = () => {
app.current.project.moduleSavedStatusMap.Variable = 'saved'
}
if (replace2) {
if (mode2 == 0) {
clearVarUnSaveData()
updateModuleSavedStatus()
} else {
const recursion = (item2) => {
if (item2.index) {
clearVarUnSaveData(item2.index)
}
if (item2?.childs?.length) {
recursion(item2.childs)
}
}
recursion(operatingNodeData.value)
}
getUnSaveListStorageKeys()
}
if (!activeNode.value) return
if (
replace2 &&
!getTargetNode(
'index',
activeNode.value.index,
treeData.value,
'childs'
)
) {
activeNode.value = null
nodeClick(null, null)
updateModuleSavedStatus()
return
}
const activeTreeNode = treeRef.value?.getCurrentNode()
nodeClick(activeTreeNode, activeNode.value, true)
}
expose({
hightLight,
createTunnelOpen,
createSubTunnelOpen,
selectFirstNode,
importFileSuccess,
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_dropdown_item = resolveComponent('el-dropdown-item')
const _component_el_dropdown_menu = resolveComponent('el-dropdown-menu')
const _component_el_dropdown = resolveComponent('el-dropdown')
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'varsSidebar styleA',
{ styleB: $props2?.styleB, 'hight-light': isHightLight.value },
]),
},
[
createElementVNode('div', _hoisted_1$5O, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(channelTabs), (item2, i2) => {
return (
openBlock(),
createElementBlock(
'button',
{
key: item2,
disabled: $props2?.disabledChannelIndex === i2,
class: normalizeClass({
active: item2 == activeTab2.value,
}),
onClick: ($event) => tabChange(item2),
},
toDisplayString$1(
unref(Language$1).toLanguage(item2, $props2?.noLanguage)
),
11,
_hoisted_2$4O
)
)
}),
128
)),
]),
!$props2?.styleB
? (openBlock(),
createElementBlock('div', _hoisted_3$4m, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x-search',
'suffix-icon': unref(search),
modelValue: filterText.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (filterText.value = $event)),
placeholder: '\u641C\u7D22',
},
null,
8,
['suffix-icon', 'modelValue']
),
createElementVNode(
'i',
{
class: 'iconfont icon-tianjiahuamian',
title: `\u6DFB\u52A0${activeTab2.value}`,
onClick:
_cache[1] ||
(_cache[1] = ($event) => createTunnelOpen('create')),
},
null,
8,
_hoisted_4$3O
),
]))
: createCommentVNode('', true),
createElementVNode('div', _hoisted_5$3s, [
updateVirtualTree.value
? (openBlock(),
createBlock(
VirtualTree,
{
key: 0,
ref_key: 'treeRef',
ref: treeRef,
data: treeData.value,
itemSize: 32,
class: 'cms-el-tree',
nodeKey: 'index',
draggable: false,
emptyText: unref(Language$1).toLanguage(
'\u6682\u65E0\u6570\u636E',
$props2?.noLanguage
),
filterText: filterText.value,
props: {
children: 'childs',
},
onNodeClick: nodeClick,
},
{
default: withCtx(({ node: node2, data: data2 }) => [
createElementVNode(
'div',
{
class: normalizeClass([
'custom-tree-node flex',
{
'node-current':
data2.index === activeNode.value?.index,
},
]),
disabled: true,
},
[
createElementVNode('div', _hoisted_6$35, [
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont',
getNodeIcon(
data2.treeType,
data2.type,
data2.typeTag
),
]),
},
null,
2
),
createElementVNode(
'div',
{
class: 'node-icon-status',
title:
data2.status === 3 ? data2.errorMsg : null,
'data-tooltip-placement': 'top',
},
[
['COM', 'TCP'].includes(data2.typeTag)
? (openBlock(),
createElementBlock('svg', _hoisted_8$2s, [
data2.enable === false
? (openBlock(),
createElementBlock(
'use',
_hoisted_9$2g
))
: (openBlock(),
createElementBlock(
Fragment,
{ key: 1 },
[
getTunnelNodeState(
data2.name
) === true
? (openBlock(),
createElementBlock(
'use',
_hoisted_10$22
))
: createCommentVNode(
'',
true
),
getTunnelNodeState(
data2.name
) === false
? (openBlock(),
createElementBlock(
'use',
_hoisted_11$1U
))
: createCommentVNode(
'',
true
),
],
64
)),
]))
: createCommentVNode('', true),
],
8,
_hoisted_7$2K
),
]),
$props2?.uneditable
? (openBlock(),
createBlock(
EllipsisTooltip,
{
key: 0,
width: '100%',
content:
!$props2?.noLanguage &&
data2.name == '\u7CFB\u7EDF\u53D8\u91CF'
? `${_ctx._t(data2.name)}`
: data2.name,
class: 'title',
},
null,
8,
['content']
))
: (openBlock(),
createElementBlock(
Fragment,
{ key: 1 },
[
createElementVNode('div', _hoisted_12$1O, [
createVNode$1(
EllipsisTooltip,
{
width: '100%',
content: data2.name,
},
null,
8,
['content']
),
data2.typeTag != 'COM' &&
isStorageIndex(data2.index)
? (openBlock(),
createElementBlock(
'div',
_hoisted_13$1C,
' \u672A\u4FDD\u5B58 '
))
: createCommentVNode('', true),
]),
data2?.type != 2
? (openBlock(),
createElementBlock(
'div',
_hoisted_14$1q,
[
createVNode$1(
_component_el_dropdown,
{
trigger: 'hover',
onCommand: handleCommand,
teleported: false,
},
{
dropdown: withCtx(() => [
createVNode$1(
_component_el_dropdown_menu,
null,
{
default: withCtx(() => [
data2.typeTag == 'COM'
? (openBlock(),
createBlock(
_component_el_dropdown_item,
{
key: 0,
command: {
type: 'createAddressGroup',
node: node2,
data: data2,
},
},
{
default:
withCtx(
() => [
_hoisted_16$1j,
]
),
_: 2,
},
1032,
['command']
))
: createCommentVNode(
'',
true
),
[
'TCP',
'SUB',
null,
].includes(
data2.typeTag
)
? (openBlock(),
createBlock(
_component_el_dropdown_item,
{
key: 1,
command: {
type: 'createVarGroup',
node: node2,
data: data2,
},
},
{
default:
withCtx(
() => [
_hoisted_17$1b,
]
),
_: 2,
},
1032,
['command']
))
: createCommentVNode(
'',
true
),
createVNode$1(
_component_el_dropdown_item,
{
command: {
type: 'copy',
node: node2,
data: data2,
},
},
{
default: withCtx(
() => [
_hoisted_18$13,
]
),
_: 2,
},
1032,
['command']
),
createVNode$1(
_component_el_dropdown_item,
{
command: {
type: 'edit',
node: node2,
data: data2,
},
},
{
default: withCtx(
() => [
_hoisted_19$_,
]
),
_: 2,
},
1032,
['command']
),
createVNode$1(
_component_el_dropdown_item,
{
class:
'item_delete',
command: {
type: 'delete',
node: node2,
data: data2,
},
},
{
default: withCtx(
() => [
_hoisted_20$U,
]
),
_: 2,
},
1032,
['command']
),
createVNode$1(
_component_el_dropdown_item,
{
command: {
type: 'importNode',
node: node2,
data: data2,
},
},
{
default: withCtx(
() => [
_hoisted_21$K,
]
),
_: 2,
},
1032,
['command']
),
createVNode$1(
_component_el_dropdown_item,
{
command: {
type: 'exportNode',
node: node2,
data: data2,
},
},
{
default: withCtx(
() => [
_hoisted_22$I,
]
),
_: 2,
},
1032,
['command']
),
['COM', 'TCP'].includes(
data2.typeTag
)
? (openBlock(),
createBlock(
_component_el_dropdown_item,
{
key: 2,
command: {
type: 'enable',
node: node2,
data: data2,
},
},
{
default:
withCtx(
() => [
_hoisted_23$E,
]
),
_: 2,
},
1032,
['command']
))
: createCommentVNode(
'',
true
),
['COM', 'TCP'].includes(
data2.typeTag
)
? (openBlock(),
createBlock(
_component_el_dropdown_item,
{
key: 3,
command: {
type: 'disabled',
node: node2,
data: data2,
},
},
{
default:
withCtx(
() => [
_hoisted_24$C,
]
),
_: 2,
},
1032,
['command']
))
: createCommentVNode(
'',
true
),
]),
_: 2,
},
1024
),
]),
default: withCtx(() => [
_hoisted_15$1l,
]),
_: 2,
},
1024
),
]
))
: createCommentVNode('', true),
],
64
)),
],
2
),
]),
_: 1,
},
8,
['data', 'emptyText', 'filterText']
))
: createCommentVNode('', true),
]),
unref(IOTunnelConfig).visible
? (openBlock(),
createBlock(
IOTunnelOperateDialog,
{
key: 1,
modelValue: unref(IOTunnelConfig).visible,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(IOTunnelConfig).visible = $event)),
title: unref(IOTunnelConfig).title,
operate: unref(IOTunnelConfig).operate,
data: operatingNodeData.value,
onConfirm: tunnelOperateConfirm,
},
null,
8,
['modelValue', 'title', 'operate', 'data']
))
: createCommentVNode('', true),
unref(innerTunnelConfig).visible
? (openBlock(),
createBlock(
_sfc_main$6W,
{
key: 2,
modelValue: unref(innerTunnelConfig).visible,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(innerTunnelConfig).visible = $event)),
title: unref(innerTunnelConfig).title,
operate: unref(innerTunnelConfig).operate,
data: operatingNodeData.value,
onConfirm: tunnelOperateConfirm,
},
null,
8,
['modelValue', 'title', 'operate', 'data']
))
: createCommentVNode('', true),
unref(SUBTunnelConfig).visible
? (openBlock(),
createBlock(
_sfc_main$6V,
{
key: 3,
modelValue: unref(SUBTunnelConfig).visible,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(SUBTunnelConfig).visible = $event)),
title: unref(SUBTunnelConfig).title,
operate: unref(SUBTunnelConfig).operate,
node: operatingNode.value,
data: operatingNodeData.value,
onConfirm: tunnelOperateConfirm,
},
null,
8,
['modelValue', 'title', 'operate', 'node', 'data']
))
: createCommentVNode('', true),
unref(varGroupConfig).visible
? (openBlock(),
createBlock(
_sfc_main$6U,
{
key: 4,
modelValue: unref(varGroupConfig).visible,
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) =>
(unref(varGroupConfig).visible = $event)),
title: unref(varGroupConfig).title,
operate: unref(varGroupConfig).operate,
node: operatingNode.value,
data: operatingNodeData.value,
onConfirm: unref(varGroupConfig).confirm,
},
null,
8,
[
'modelValue',
'title',
'operate',
'node',
'data',
'onConfirm',
]
))
: createCommentVNode('', true),
unref(importFileConfig).visible
? (openBlock(),
createBlock(
ImportFileDialog,
{
key: 5,
modelValue: unref(importFileConfig).visible,
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) =>
(unref(importFileConfig).visible = $event)),
mode: unref(importFileConfig).mode,
tunnelId: unref(importFileConfig).tunnelId,
groupId: unref(importFileConfig).groupId,
onSuccess: importFileSuccess,
},
null,
8,
['modelValue', 'mode', 'tunnelId', 'groupId']
))
: createCommentVNode('', true),
],
2
)
)
}
},
})
var Sidebar$a = /* @__PURE__ */ _export_sfc(_sfc_main$6S, [
['__scopeId', 'data-v-64d00d6d'],
])
var Sidebar$b = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Sidebar$a,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var VarReferenceConfig_vue_vue_type_style_index_0_scoped_true_lang = ''
var VarReferenceConfig_vue_vue_type_style_index_1_scoped_true_lang = ''
const _hoisted_1$5N = { class: 'varUseConfig' }
const _hoisted_2$4N = { class: 'content' }
const _hoisted_3$4l = { class: 'table' }
const _sfc_main$6R = /* @__PURE__ */ defineComponent({
props: {
showConfig: {
type: Boolean,
default: false,
},
configData: {
type: Object,
default: () => {
return {
key: 'id',
}
},
},
isMultiple: {
type: Boolean,
default: false,
},
defaultCheckKey: {
type: Array,
default: () => [],
},
data: {
type: Object,
default: () => ({
id: '',
name: '',
}),
},
filterType: {
type: Array,
default: () => [],
},
size: {
type: String,
},
disabledChannelIndex: {
type: Number,
},
disabledNames: {
type: Array,
default: () => [],
},
autoSelectFirstNode: {
type: Boolean,
default: true,
},
defaultDataTypes: {
type: Array,
default: () => [],
},
isConfigureHistory: {
type: Boolean,
default: false,
},
filterClientVariables: {
type: Boolean,
default: false,
},
noLanguage: {
type: Boolean,
default: false,
},
},
emits: ['cancel', 'confirm', 'changeName', 'cellClick'],
setup(__props2, { expose, emit: emit2 }) {
const props2 = __props2
const SidebarCom = ref()
const tableTooltipConfig = {
enterable: true,
contentMethod: ({ column, row }) => {
const { property: property2 } = column
return Language$1.toLanguage(row[property2], props2?.noLanguage)
},
}
const tableRef = ref()
let tableData2 = ref([])
const filterData = ref({
dataTypes: props2.defaultDataTypes,
usedType: 0,
keyword: '',
})
const clearFilterData = () => {
filterData.value.dataTypes = []
filterData.value.usedType = 0
filterData.value.keyword = ''
}
let activeNode = ref(null)
let activeNodeTunnel = ref(null)
const nodeClick = (data2, activeNodeTunnelData) => {
activeNode.value = data2
activeNodeTunnel.value = activeNodeTunnelData
init2()
}
const clear2 = () => {
clearFilterData()
search2()
}
const search2 = async () => {
const records = getRecords()
const cloneRecords = JSON.parse(JSON.stringify(records))
await getData()
if (cloneRecords.length) {
const unContainList = []
cloneRecords.forEach((row) => {
const index2 = tableData2.value.findIndex((f2) => f2.id === row.id)
if (index2 == -1) {
unContainList.push(row)
}
})
tableData2.value.unshift(...unContainList)
if (!props2.isMultiple) {
tableRef.value?.setRadioRow(cloneRecords[0])
} else {
const cloneRecordIds = cloneRecords.map((e2) => e2.id)
tableData2.value.forEach((e2) => {
if (cloneRecordIds.includes(e2.id)) {
e2['checked'] = true
}
})
}
tableRef.value?.loadData(tableData2.value)
}
}
const getData = async () => {
tableData2.value = []
if (!activeNode.value || !activeNodeTunnel.value) return false
let tunnelId = activeNodeTunnel.value?.tunnelId
let params2 = {
isConfigureHistory: props2.isConfigureHistory,
groupId: activeNode.value.groupId || null,
...filterData.value,
}
const res = await request.post(
`/api/v1/variable/tunnel/${tunnelId}/tag/query`,
params2
)
if (props2.filterClientVariables && res?.length) {
for (let i2 = res.length - 1; i2 >= 0; i2--) {
if (res[i2]?.config?.scopeType == 1) {
res.splice(i2, 1)
}
}
}
res.forEach((item2) => {
if (
props2.filterType.length &&
!props2.filterType.includes(item2.type)
) {
return
}
tableData2.value.push(item2)
})
tableRef?.value?.loadData(tableData2.value)
}
const initialIndex = ref(null)
const init2 = async () => {
if (
props2.showConfig &&
JSON.stringify(props2.configData.data) !== '{}'
) {
initialIndex.value = props2.configData.data.findIndex(
(f2) =>
f2[props2.configData.key || 'id'] ===
props2.configData.currentRow[props2.configData.key || 'id']
)
}
await getData()
if (props2.data?.name) {
updateRecordsByKey('name', props2.data.name)
}
if (props2.defaultCheckKey?.length && props2.isMultiple) {
tableData2.value.forEach((e2) => {
if (props2.defaultCheckKey.includes(e2.id)) {
e2['checked'] = true
}
})
tableRef.value?.loadData(tableData2.value)
}
}
const reset2 = () => {
clearFilterData()
tableRef.value?.clearRadioRow()
tableRef.value?.clearCheckboxRow()
}
const cancel2 = () => {
emit2('cancel')
}
const confirm2 = () => {
const records = getRecords()
emit2('confirm', records, initialIndex.value)
}
const config2 = async () => {
const records = getRecords()
if (!records.length) {
ElMessage.warning(
Language$1.toLanguage(
'\u8BF7\u5148\u52FE\u9009\u6570\u636E',
props2?.noLanguage
)
)
return
}
emit2('changeName', initialIndex.value, records)
await getData()
if (props2.data?.name) {
updateRecordsByKey('name', props2.data.name)
}
let dataList2 = props2.configData.data
let variableKey = props2.configData?.variableKey
if (variableKey && initialIndex.value + 1 < dataList2.length) {
const name2 = dataList2[initialIndex.value + 1][variableKey]
updateRecordsByKey('name', name2)
}
initialIndex.value++
if (initialIndex.value > props2.configData.data.length - 1) {
ElMessage.warning(
Language$1.toLanguage(
'\u5DF2\u914D\u7F6E\u5230\u6700\u540E\u4E00\u6761\u6570\u636E',
props2?.noLanguage
)
)
initialIndex.value = props2.configData.data.length - 1
}
}
const getRecords = () => {
if (props2.isMultiple) {
return tableRef.value?.getCheckboxRecords()
} else {
const radio2 = tableRef.value?.getRadioRecord()
return radio2 ? [radio2] : []
}
}
const updateRecords = (row) => {
if (!props2.isMultiple) {
tableRef.value?.setRadioRow(row)
} else {
const records = tableRef.value?.getCheckboxRecords()
const check2 = records.indexOf(row) == -1
tableRef.value?.setCheckboxRow(row, check2)
}
}
const updateRecordsByKey = (key2, value2) => {
const row = tableData2.value.find((f2) => f2[key2] === value2)
if (row) {
updateRecords(row)
}
}
const cellClick = ({ row }) => {
updateRecords(row)
emit2('cellClick', row)
}
expose({
reset: reset2,
init: init2,
cancel: cancel2,
confirm: confirm2,
config: config2,
selectFirstNode: () => SidebarCom.value.selectFirstNode(),
})
return (_ctx, _cache) => {
const _component_vxe_column = resolveComponent('vxe-column')
const _component_vxe_table = resolveComponent('vxe-table')
return (
openBlock(),
createElementBlock('div', _hoisted_1$5N, [
createVNode$1(
Filter$2,
{
filterData: filterData.value,
styleB: true,
size: __props2.size,
noLanguage: props2.noLanguage,
onSearch: search2,
onClear: clear2,
},
null,
8,
['filterData', 'size', 'noLanguage']
),
createElementVNode('div', _hoisted_2$4N, [
createVNode$1(
Sidebar$a,
{
class: 'sidebar',
ref_key: 'SidebarCom',
ref: SidebarCom,
styleB: true,
uneditable: true,
disabledChannelIndex: __props2.disabledChannelIndex,
autoSelectFirstNode: __props2.autoSelectFirstNode,
filterData: filterData.value,
noLanguage: props2.noLanguage,
onNodeClick: nodeClick,
},
null,
8,
[
'disabledChannelIndex',
'autoSelectFirstNode',
'filterData',
'noLanguage',
]
),
createElementVNode('div', _hoisted_3$4l, [
createVNode$1(
_component_vxe_table,
{
border: '',
ref_key: 'tableRef',
ref: tableRef,
class: 'cms-vxe-table cms-vxe-table-min',
height: '100%',
'show-overflow': 'tooltip',
'tooltip-config': tableTooltipConfig,
'column-config': { resizable: true },
'row-config': { keyField: 'id', isCurrent: true },
'row-class-name': ({ row }) => {
return props2.disabledNames.includes(row.name)
? 'disabled-row'
: ''
},
'checkbox-config': {
checkRowKeys: props2.defaultCheckKey,
checkField: 'checked',
highlight: true,
},
data: tableData2.value,
onCellClick: cellClick,
onCheckboxChange: cellClick,
'empty-text': unref(Language$1).toLanguage(
'\u6682\u65E0\u6570\u636E',
props2?.noLanguage
),
},
{
default: withCtx(() => [
createVNode$1(
_component_vxe_column,
{
type: __props2.isMultiple ? 'checkbox' : 'radio',
width: __props2.isMultiple ? '45' : '0',
resizable: false,
align: 'center',
},
null,
8,
['type', 'width']
),
createVNode$1(
_component_vxe_column,
{
type: 'seq',
title: unref(Language$1).toLanguage(
'\u5E8F\u53F7',
props2?.noLanguage
),
width: '100',
},
null,
8,
['title']
),
createVNode$1(
_component_vxe_column,
{
field: 'name',
title: unref(Language$1).toLanguage(
'\u53D8\u91CF\u540D',
props2?.noLanguage
),
'max-width': '205',
},
null,
8,
['title']
),
createVNode$1(
_component_vxe_column,
{
field: 'description',
title: unref(Language$1).toLanguage(
'\u53D8\u91CF\u63CF\u8FF0',
props2?.noLanguage
),
'max-width': '155',
},
null,
8,
['title']
),
createVNode$1(
_component_vxe_column,
{
field: 'typeName',
title: unref(Language$1).toLanguage(
'\u6570\u636E\u7C7B\u578B',
props2?.noLanguage
),
resizable: false,
},
{
default: withCtx(({ row }) => [
createTextVNode(
toDisplayString$1(
unref(Language$1).toLanguage(
row.typeName,
props2?.noLanguage
)
),
1
),
]),
_: 1,
},
8,
['title']
),
]),
_: 1,
},
8,
['row-class-name', 'checkbox-config', 'data', 'empty-text']
),
]),
]),
])
)
}
},
})
var VarReferenceConfig = /* @__PURE__ */ _export_sfc(_sfc_main$6R, [
['__scopeId', 'data-v-7e77d54e'],
])
var VarReferenceConfig$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: VarReferenceConfig,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var functionDialogVariate_vue_vue_type_style_index_0_lang = ''
const _hoisted_1$5M = {
class: 'dialog-content',
style: { height: '650px' },
}
const _sfc_main$6Q = /* @__PURE__ */ defineComponent({
props: {
visible: { type: Boolean },
isAppendToBody: { type: Boolean, default: true },
showConfig: { type: Boolean },
configData: null,
isMultiple: { type: Boolean },
defaultCheckKey: null,
data: null,
dialogClose: { type: Function, default: () => {} },
dialogConfirm: { type: Function, default: () => {} },
dialogChangeName: { type: Function, default: () => {} },
filterType: null,
disabledChannelIndex: null,
autoSelectFirstNode: { type: Boolean },
disabledNames: null,
defaultDataTypes: null,
isConfigureHistory: { type: Boolean },
filterClientVariables: { type: Boolean },
noLanguage: { type: Boolean },
},
emits: ['cancel', 'confirm', 'changeName', 'cellClick'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const varUseRef = ref(null)
const customDialogClass = computed(() => {
if (app.running) {
return 'cms-el-dialog cms-el-dialog__light'
} else {
return 'cms-el-dialog'
}
})
const show = computed({
get: () => $props2.visible,
set: (val2) => val2,
})
const opened = () => {
setTimeout(() => {
varUseRef.value?.selectFirstNode()
}, 300)
}
const cancelHandle = () => {
varUseRef.value?.cancel()
}
const cancel2 = () => {
emit2('cancel')
$props2.dialogClose()
varUseRef.value?.reset()
}
const confirmHandle = () => {
varUseRef.value?.confirm()
}
const confirm2 = (selectRows, index2) => {
emit2('confirm', selectRows)
$props2.dialogConfirm(selectRows, index2)
}
const configHandle = () => {
varUseRef.value?.config()
}
const changeName = (index2, selectRows) => {
emit2('changeName', index2, selectRows)
$props2.dialogChangeName({
index: index2,
rowList: selectRows,
})
}
const cellClick = (row) => {
emit2('cellClick', row)
}
return (_ctx, _cache) => {
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
modelValue: unref(show),
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
isRef(show) ? (show.value = $event) : null),
title: unref(Language$1).toLanguage(
'\u5173\u8054\u53D8\u91CF',
$props2?.noLanguage
),
'append-to-body': $props2?.isAppendToBody,
'close-on-click-modal': false,
'custom-class': customDialogClass.value,
width: '1110px',
onOpened: opened,
onClose: cancel2,
},
{
footer: withCtx(() => [
$props2.showConfig
? (openBlock(),
createElementBlock(
'button',
{
key: 0,
class: 'btn btn_config',
onClick: configHandle,
},
toDisplayString$1(
unref(Language$1).toLanguage(
'\u786E\u8BA4\u5E76\u914D\u7F6E\u4E0B\u4E00\u9879',
$props2?.noLanguage
)
),
1
))
: createCommentVNode('', true),
createVNode$1(
_component_el_button,
{
class: 'btn btn-cancel',
onClick: cancelHandle,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(
unref(Language$1).toLanguage(
'\u53D6\u6D88',
$props2?.noLanguage
)
),
1
),
]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirmHandle,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(
unref(Language$1).toLanguage(
'\u786E\u5B9A',
$props2?.noLanguage
)
),
1
),
]),
_: 1,
}
),
]),
default: withCtx(() => [
createElementVNode('div', _hoisted_1$5M, [
createVNode$1(
VarReferenceConfig,
{
ref_key: 'varUseRef',
ref: varUseRef,
showConfig: $props2?.showConfig,
configData: $props2?.configData,
isMultiple: $props2?.isMultiple,
defaultCheckKey: $props2?.defaultCheckKey,
defaultDataTypes: $props2?.defaultDataTypes,
data: $props2?.data,
filterType: $props2?.filterType,
disabledChannelIndex: $props2?.disabledChannelIndex,
autoSelectFirstNode: false,
disabledNames: $props2?.disabledNames,
isConfigureHistory: $props2?.isConfigureHistory,
filterClientVariables: $props2?.filterClientVariables,
noLanguage: $props2?.noLanguage,
onCancel: cancel2,
onConfirm: confirm2,
onChangeName: changeName,
onCellClick: cellClick,
},
null,
8,
[
'showConfig',
'configData',
'isMultiple',
'defaultCheckKey',
'defaultDataTypes',
'data',
'filterType',
'disabledChannelIndex',
'disabledNames',
'isConfigureHistory',
'filterClientVariables',
'noLanguage',
]
),
]),
]),
_: 1,
},
8,
['modelValue', 'title', 'append-to-body', 'custom-class']
)
)
}
},
})
var functionDialogVariate = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$6Q,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const createVariableDialog = (options2 = {}) => {
const mountNode = document.createElement('div')
function close2() {
Instance.unmount()
document.body.removeChild(mountNode)
}
const Instance = createApp$1(_sfc_main$6Q, {
visible: true,
...options2,
dialogClose: close2,
dialogConfirm: (data2, initialIndex) => {
options2.dialogConfirm?.(data2, initialIndex)
close2()
},
dialogChangeName: (data2) => {
options2.dialogChangeName?.(data2)
},
})
document.body.appendChild(mountNode)
Instance.config.globalProperties.t = Language$1.t
Instance.config.globalProperties._t = Language$1._t
Instance.use(useTable).use(installer).mount(mountNode)
return Instance
}
function openVariableDialog({
currentVariable = {},
isMultiple: isMultiple2 = false,
defaultCheckKey = [],
showConfig = false,
configData = {},
defaultDataTypes = [],
}) {
let selectDataList = []
return new Promise((resolve2) => {
createVariableDialog({
data: currentVariable,
isMultiple: isMultiple2,
defaultCheckKey,
showConfig,
configData,
defaultDataTypes,
dialogConfirm(data2, initialIndex) {
if (showConfig) {
selectDataList.push({
index: initialIndex,
row: data2,
})
let res = {
data: !isMultiple2 ? data2[0] : data2,
selectDataList,
}
resolve2(res)
} else {
if (!isMultiple2) resolve2(data2[0])
resolve2(data2)
}
},
dialogChangeName(selectData) {
if (!showConfig) return
let { index: index2, rowList } = selectData
let row = rowList[0]
selectDataList.push({
index: index2,
row,
})
let dataList2 = configData.data
let variableKey = configData.variableKey
dataList2[index2][variableKey] = row.name
},
})
})
}
class Resource {
id = ''
name = '\u5957\u4EF6'
cover = ''
canvasNode = new CanvasNode$1({
id: '',
is: 'Img',
props: {
filename: '',
},
style: {},
blocks: [],
})
constructor(json) {
Object.assign(this, json)
this.canvasNode = new CanvasNode$1(this.canvasNode)
this.canvasNode.style.position = 'unset'
this.canvasNode.style.left = 'unset'
this.canvasNode.style.top = 'unset'
}
static getImages(nodes) {
const str = JSON.stringify(nodes)
const reg = /[^/\\()'"`.,\s]+?(\.jpg|\.jpeg|\.png|\.gif|\.svg)/gi
const res = str.match(reg)
if (!res) return null
return [...new Set(res)]
}
}
var __glob_0_12 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
Resource,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const moduleMap = {
'../models/App.ts': __glob_0_0,
'../models/Base.ts': __glob_0_1,
'../models/Block.ts': __glob_0_2,
'../models/CanvasNode.ts': __glob_0_3,
'../models/Client.ts': __glob_0_4,
'../models/Config.ts': __glob_0_5,
'../models/Expression.ts': __glob_0_6,
'../models/Language.ts': __glob_0_7,
'../models/Page.ts': __glob_0_8,
'../models/PageHistory.ts': __glob_0_9,
'../models/PageManager.ts': __glob_0_10,
'../models/Project.ts': __glob_0_11,
'../models/Resource.ts': __glob_0_12,
'../models/Socket.ts': __glob_0_13,
'../models/Variable.ts': __glob_0_14,
'../models/Widget.ts': __glob_0_15,
'../models/index.ts': __glob_0_16,
}
const models$1 = new Proxy(
{},
{
get(object4, name2) {
if (object4[name2]) return object4[name2]
for (const fileName in moduleMap) {
const module2 = moduleMap[fileName]
for (const key2 in module2) {
if (key2 === name2) {
const model = module2[key2]
object4[name2] = model
return model
}
}
}
},
}
)
window.models = models$1
const packs = new Proxy(
{},
{
get(object4, key2) {
if (object4[key2]) return object4[key2]
const map2 = {
'@element-plus/icons-vue': () =>
Promise.resolve().then(function () {
return index$s
}),
'@vueuse/core': () =>
Promise.resolve().then(function () {
return index$q
}),
'@vueuse/shared': () =>
Promise.resolve().then(function () {
return index$t
}),
axios: () =>
Promise.resolve().then(function () {
return index$p
}),
'crypto-js': () =>
Promise.resolve().then(function () {
return index$1
}),
dayjs: () =>
Promise.resolve().then(function () {
return dayjs_min
}),
'element-plus': () =>
Promise.resolve().then(function () {
return ElementPlus
}),
echarts: () =>
Promise.resolve().then(function () {
return index
}),
html2canvas: () =>
Promise.resolve().then(function () {
return html2canvas_esm
}),
jszip: () =>
Promise.resolve().then(function () {
return jszip_min
}),
lodash: () =>
Promise.resolve().then(function () {
return lodash$1
}),
vue: () => import('vue'),
'vue-i18n': () =>
Promise.resolve().then(function () {
return vueI18n
}),
'vue-router': () =>
Promise.resolve().then(function () {
return vueRouter
}),
vuex: () =>
Promise.resolve().then(function () {
return vuex_esmBundler
}),
}
const packPromise = map2[key2]?.()
object4[key2] = packPromise
return packPromise
},
}
)
const name = 'syc-cms'
const version$5 = '2.2.1'
const scripts = {
dev: 'vite --host',
open: 'vite --host --open',
build: 'vite build',
'build:update-icon': 'npm run update-icon && npm run build',
'build:sdk': 'vite build --config=vite.sdk.config.ts',
'build:sdk-npm:publish': 'npm run build:sdk && npm run npm:publish',
'npm:publish': 'npm whoami && npm publish',
serve: 'vite preview --host --port=8888',
'build-serve': 'npm run build && npm run serve',
'vue-tsc': 'vue-tsc --noEmit',
test: 'jest',
'update-icon': 'node update-iconfont.js',
}
const main = 'dist/sdk/sdk.es.js'
const files = ['dist/sdk/']
const dependencies$1 = {
'@element-plus/icons-vue': '^1.1.4',
'@microsoft/signalr': '^6.0.6',
'@vue/cli-service': '^5.0.4',
'@vueuse/core': '^9.6.0',
'@vueuse/shared': '^8.9.4',
axios: '^0.24.0',
'crypto-js': '^4.1.1',
dayjs: '^1.11.6',
echarts: '^5.3.0',
'element-plus': '2.1.8',
'html-to-image': '^1.11.11',
html2canvas: '^1.4.1',
jsencrypt: '^3.2.1',
jspdf: '^2.5.1',
jszip: '^3.10.1',
keyboardjs: '^2.6.4',
lodash: '^4.17.21',
nprogress: '^0.2.0',
'path-browserify': '^1.0.1',
'print-js': '^1.6.0',
sortablejs: '^1.15.0',
vue: '3.2.31',
'vue-i18n': '^9.1.9',
'vue-router': '^4.0.11',
vuex: '^4.0.2',
'vxe-table': '^4.2.0',
'vxe-table-plugin-element': '^1.11.4',
'xe-utils': '^3.5.4',
}
const devDependencies = {
'@babel/preset-typescript': '^7.16.7',
'@jest/globals': '^27.5.1',
'@types/crypto-js': '^4.1.1',
'@types/jest': '^27.4.1',
'@types/keyboardjs': '^2.5.0',
'@types/lodash': '^4.14.181',
'@types/node': '^16.11.26',
'@types/sortablejs': '^1.13.0',
'@typescript-eslint/eslint-plugin': '^5.12.1',
'@typescript-eslint/parser': '^5.12.1',
'@vitejs/plugin-vue': '^2.3.3',
'@vue/compiler-sfc': '^3.2.31',
'babel-eslint': '^10.1.0',
compressing: '^1.9.0',
eslint: '^8.12.0',
'eslint-config-airbnb': '^19.0.4',
'eslint-plugin-import': '^2.25.4',
'eslint-plugin-vue': '^8.5.0',
'eslint-plugin-vue-libs': '^4.0.0',
jest: '^27.5.1',
puppeteer: '^20.2.1',
request: '^2.88.2',
sass: '^1.49.9',
'ts-jest': '^27.1.3',
typescript: '^4.5.5',
'unplugin-auto-import': '^0.5.11',
'unplugin-element-plus': '^0.1.3',
'unplugin-vue-components': '^0.17.21',
vite: '^2.8.0',
'vite-plugin-style-import': '^2.0.0',
'vue-eslint-parser': '^8.3.0',
'vue-tsc': '^0.3.0',
}
var package_ = {
name,
version: version$5,
scripts,
main,
files,
dependencies: dependencies$1,
devDependencies,
}
createGlobalEvent()
new App()
const modules = {
'../components/left-menu.vue': () =>
Promise.resolve().then(function () {
return leftMenu$1
}),
'../components/scaling-zoom.vue': () =>
Promise.resolve().then(function () {
return scalingZoom
}),
'../components/theme-menu.vue': () =>
Promise.resolve().then(function () {
return themeMenu
}),
'../views/404NotFound.vue': () =>
Promise.resolve().then(function () {
return _404NotFound$1
}),
'../components/AsyncComponent/AsyncComponent.vue': () =>
Promise.resolve().then(function () {
return AsyncComponent
}),
'../components/DialogPage/DialogPage.vue': () =>
Promise.resolve().then(function () {
return DialogPage$2
}),
'../components/EllipsisTooltip/EllipsisTooltip.vue': () =>
Promise.resolve().then(function () {
return EllipsisTooltip$1
}),
'../components/MiniPagesMenu/MiniPagesMenu.vue': () =>
Promise.resolve().then(function () {
return MiniPagesMenu$1
}),
'../components/TitleTooltip/TitleTooltip.vue': () =>
Promise.resolve().then(function () {
return TitleTooltip
}),
'../components/VirtualKeyboard/VirtualKeyboard.vue': () =>
Promise.resolve().then(function () {
return VirtualKeyboard$1
}),
'../components/VirtualTree/TreeNode.vue': () =>
Promise.resolve().then(function () {
return TreeNode$2
}),
'../components/VirtualTree/VirtualTree.vue': () =>
Promise.resolve().then(function () {
return VirtualTree$1
}),
'../components/collapse/collapse.vue': () =>
Promise.resolve().then(function () {
return collapse$1
}),
'../components/component-styles/module-appearance.vue': () =>
Promise.resolve().then(function () {
return moduleAppearance$1
}),
'../components/component-styles/module-function.vue': () =>
Promise.resolve().then(function () {
return moduleFunction$1
}),
'../components/component-styles/module-opacity.vue': () =>
Promise.resolve().then(function () {
return moduleOpacity$1
}),
'../components/component-styles/module-permission.vue': () =>
Promise.resolve().then(function () {
return modulePermission$1
}),
'../components/component-styles/module-position.vue': () =>
Promise.resolve().then(function () {
return modulePosition$1
}),
'../components/component-styles/module-text.vue': () =>
Promise.resolve().then(function () {
return moduleText$1
}),
'../components/component-styles/module-title.vue': () =>
Promise.resolve().then(function () {
return moduleTitle$1
}),
'../components/gallery/GalleryMaterial.vue': () =>
Promise.resolve().then(function () {
return GalleryMaterial$1
}),
'../components/gallery/OfficialMaterial.vue': () =>
Promise.resolve().then(function () {
return OfficialMaterial$1
}),
'../components/gallery/gallery.vue': () =>
Promise.resolve().then(function () {
return gallery
}),
'../views/Frame/Frame.vue': () =>
Promise.resolve().then(function () {
return Frame$1
}),
'../views/Frame/Header.vue': () =>
Promise.resolve().then(function () {
return Header$5
}),
'../views/Project/Project.vue': () =>
Promise.resolve().then(function () {
return Project$1
}),
'../views/Projects/Projects.vue': () =>
Promise.resolve().then(function () {
return Projects$1
}),
'../views/Run/Run.vue': () =>
Promise.resolve().then(function () {
return Run$1
}),
'../views/picture-management/index.vue': () =>
Promise.resolve().then(function () {
return index$a
}),
'../components/component-styles/function-dialogs/function-dialog-btn.vue':
() =>
Promise.resolve().then(function () {
return functionDialogBtn$1
}),
'../components/component-styles/function-dialogs/function-dialog-variate.vue':
() =>
Promise.resolve().then(function () {
return functionDialogVariate
}),
'../components/component-styles/function-dialogs/function-dialog.vue': () =>
Promise.resolve().then(function () {
return functionDialog$1
}),
'../components/component-styles/function-items/function-input-precision.vue':
() =>
Promise.resolve().then(function () {
return functionInputPrecision
}),
'../components/component-styles/function-items/function-input-range.vue':
() =>
Promise.resolve().then(function () {
return functionInputRange
}),
'../components/component-styles/function-items/function-jump-page.vue': () =>
Promise.resolve().then(function () {
return functionJumpPage
}),
'../components/component-styles/function-items/function-popup.vue': () =>
Promise.resolve().then(function () {
return functionPopup$1
}),
'../components/component-styles/function-items/function-relate-variable.vue':
() =>
Promise.resolve().then(function () {
return functionRelateVariable
}),
'../components/component-styles/function-items/function-send-variable.vue':
() =>
Promise.resolve().then(function () {
return functionSendVariable$1
}),
'../components/component-styles/function-items/function-show-dialog.vue':
() =>
Promise.resolve().then(function () {
return functionShowDialog
}),
'../components/component-styles/function-items/function-tree.vue': () =>
Promise.resolve().then(function () {
return functionTree$1
}),
'../components/gallery/component/PanelLayout.vue': () =>
Promise.resolve().then(function () {
return PanelLayout$3
}),
'../components/picture-management/picture-production/component-event.vue':
() =>
Promise.resolve().then(function () {
return componentEvent
}),
'../components/picture-management/picture-production/component-object.vue':
() =>
Promise.resolve().then(function () {
return componentObject
}),
'../components/picture-management/picture-production/component-style.vue':
() =>
Promise.resolve().then(function () {
return componentStyle
}),
'../components/picture-management/picture-production/drag-choose-component-box.vue':
() =>
Promise.resolve().then(function () {
return dragChooseComponentBox$1
}),
'../components/picture-management/picture-production/picture-header.vue':
() =>
Promise.resolve().then(function () {
return pictureHeader
}),
'../components/picture-management/picture-production/project-page.vue': () =>
Promise.resolve().then(function () {
return projectPage
}),
'../components/picture-management/variable-management/add-device-form.vue':
() =>
Promise.resolve().then(function () {
return addDeviceForm
}),
'../components/picture-management/variable-management/add-device-group-form.vue':
() =>
Promise.resolve().then(function () {
return addDeviceGroupForm
}),
'../components/picture-management/variable-management/address-config.vue':
() =>
Promise.resolve().then(function () {
return addressConfig
}),
'../components/picture-management/variable-management/associated-variable.vue':
() =>
Promise.resolve().then(function () {
return associatedVariable
}),
'../components/picture-management/variable-management/compoment-table-inner.vue':
() =>
Promise.resolve().then(function () {
return compomentTableInner
}),
'../components/picture-management/variable-management/compoment-table.vue':
() =>
Promise.resolve().then(function () {
return compomentTable
}),
'../components/picture-management/variable-management/compoment-ztree-inner.vue':
() =>
Promise.resolve().then(function () {
return compomentZtreeInner
}),
'../components/picture-management/variable-management/compoment-ztree.vue':
() =>
Promise.resolve().then(function () {
return compomentZtree
}),
'../components/picture-management/variable-management/history-archive.vue':
() =>
Promise.resolve().then(function () {
return historyArchive
}),
'../views/Project/Alarm/Alarm.vue': () =>
Promise.resolve().then(function () {
return Alarm$1
}),
'../views/Project/Basis/Basis.vue': () =>
Promise.resolve().then(function () {
return Basis$1
}),
'../views/Project/Connection/Connection.vue': () =>
Promise.resolve().then(function () {
return Connection$1
}),
'../views/Project/Data/Data.vue': () =>
Promise.resolve().then(function () {
return Data$1
}),
'../views/Project/History/History.vue': () =>
Promise.resolve().then(function () {
return History$3
}),
'../views/Project/Lang/Lang.vue': () =>
Promise.resolve().then(function () {
return Lang$1
}),
'../views/Project/Pages/Pages.vue': () =>
Promise.resolve().then(function () {
return Pages$1
}),
'../views/Project/Vars/Vars.vue': () =>
Promise.resolve().then(function () {
return Vars$1
}),
'../views/Projects/components/BackupDialog.vue': () =>
Promise.resolve().then(function () {
return BackupDialog$1
}),
'../views/Projects/components/CreateProjectDialog.vue': () =>
Promise.resolve().then(function () {
return CreateProjectDialog$1
}),
'../views/Projects/components/HandleProjectConflict.vue': () =>
Promise.resolve().then(function () {
return HandleProjectConflict$1
}),
'../views/Projects/components/ModifyLevel.vue': () =>
Promise.resolve().then(function () {
return ModifyLevel$1
}),
'../views/Projects/components/RecoveryDataDialog.vue': () =>
Promise.resolve().then(function () {
return RecoveryDataDialog$1
}),
'../views/Projects/components/RenameDialog.vue': () =>
Promise.resolve().then(function () {
return RenameDialog$1
}),
'../views/Projects/components/TipDialog.vue': () =>
Promise.resolve().then(function () {
return TipDialog$1
}),
'../views/Projects/components/VersionUpdate.vue': () =>
Promise.resolve().then(function () {
return VersionUpdate$1
}),
'../views/Projects/components/createFolderDialog.vue': () =>
Promise.resolve().then(function () {
return createFolderDialog
}),
'../views/Run/AuthorizeInfo/AuthorizeInfo.vue': () =>
Promise.resolve().then(function () {
return AuthorizeInfo$1
}),
'../views/Run/AuthorizeInfo/UnauthorizedLabel.vue': () =>
Promise.resolve().then(function () {
return UnauthorizedLabel$1
}),
'../views/Run/Menu/Menu.vue': () =>
Promise.resolve().then(function () {
return Menu$1
}),
'../views/Run/RunSetting/RunSetting.vue': () =>
Promise.resolve().then(function () {
return RunSetting$1
}),
'../views/picture-management/picture-production/index.vue': () =>
Promise.resolve().then(function () {
return index$7
}),
'../views/picture-management/resources-management/index.vue': () =>
Promise.resolve().then(function () {
return index$5
}),
'../views/picture-management/variable-management/index.vue': () =>
Promise.resolve().then(function () {
return index$3
}),
'../components/picture-management/picture-production/component-box/index.vue':
() =>
Promise.resolve().then(function () {
return index$8
}),
'../views/Project/Alarm/Sidebar/Sidebar.vue': () =>
Promise.resolve().then(function () {
return Sidebar$1
}),
'../views/Project/Alarm/components/AlarmTable.vue': () =>
Promise.resolve().then(function () {
return AlarmTable$1
}),
'../views/Project/Alarm/components/SelectAlarmTypes.vue': () =>
Promise.resolve().then(function () {
return SelectAlarmTypes$1
}),
'../views/Project/Basis/Classes/Classes.vue': () =>
Promise.resolve().then(function () {
return Classes$1
}),
'../views/Project/Connection/EditorForm/ChoiceField.vue': () =>
Promise.resolve().then(function () {
return ChoiceField$2
}),
'../views/Project/Connection/EditorForm/ChoiceFieldDialog.vue': () =>
Promise.resolve().then(function () {
return ChoiceFieldDialog$1
}),
'../views/Project/Connection/EditorForm/EditorForm.vue': () =>
Promise.resolve().then(function () {
return EditorForm$1
}),
'../views/Project/Connection/EditorForm/Filter.vue': () =>
Promise.resolve().then(function () {
return Filter
}),
'../views/Project/Connection/EditorForm/MappingTable.vue': () =>
Promise.resolve().then(function () {
return MappingTable
}),
'../views/Project/Connection/EditorForm/Sort.vue': () =>
Promise.resolve().then(function () {
return Sort
}),
'../views/Project/Connection/EditorForm/TriggerSetting.vue': () =>
Promise.resolve().then(function () {
return TriggerSetting$2
}),
'../views/Project/Connection/EditorForm/TriggerSettingConfig.vue': () =>
Promise.resolve().then(function () {
return TriggerSettingConfig$1
}),
'../views/Project/Connection/EditorForm/VarTable.vue': () =>
Promise.resolve().then(function () {
return VarTable
}),
'../views/Project/Connection/EditorForm/dataBaseTable.vue': () =>
Promise.resolve().then(function () {
return dataBaseTable
}),
'../views/Project/Connection/EditorTable/EditorTable.vue': () =>
Promise.resolve().then(function () {
return EditorTable$1
}),
'../views/Project/Connection/Sidebar/Sidebar.vue': () =>
Promise.resolve().then(function () {
return Sidebar$5
}),
'../views/Project/Data/DataAggregation/DataAggregation.vue': () =>
Promise.resolve().then(function () {
return DataAggregation
}),
'../views/Project/Data/Sidebar/Sidebar.vue': () =>
Promise.resolve().then(function () {
return Sidebar$3
}),
'../views/Project/Data/VariableTag/VariableTag.vue': () =>
Promise.resolve().then(function () {
return VariableTag
}),
'../views/Project/Data/components/Header.vue': () =>
Promise.resolve().then(function () {
return Header$1
}),
'../views/Project/History/Dialog/HistoryConfig.vue': () =>
Promise.resolve().then(function () {
return HistoryConfig
}),
'../views/Project/History/Dialog/MoveFolder.vue': () =>
Promise.resolve().then(function () {
return MoveFolder$1
}),
'../views/Project/History/Dialog/StorageSet.vue': () =>
Promise.resolve().then(function () {
return StorageSet
}),
'../views/Project/History/Dialog/Tip.vue': () =>
Promise.resolve().then(function () {
return Tip
}),
'../views/Project/History/HistoryList/HistoryList.vue': () =>
Promise.resolve().then(function () {
return HistoryList$1
}),
'../views/Project/History/Table/Table.vue': () =>
Promise.resolve().then(function () {
return Table$1
}),
'../views/Project/History/components/DataBackup.vue': () =>
Promise.resolve().then(function () {
return DataBackup
}),
'../views/Project/History/components/HistoryDialog.vue': () =>
Promise.resolve().then(function () {
return HistoryDialog
}),
'../views/Project/History/components/TriggerFrequency.vue': () =>
Promise.resolve().then(function () {
return TriggerFrequency$3
}),
'../views/Project/Lang/ContentTable/ContentTable.vue': () =>
Promise.resolve().then(function () {
return ContentTable$1
}),
'../views/Project/Lang/Sidebar/Sidebar.vue': () =>
Promise.resolve().then(function () {
return Sidebar$7
}),
'../views/Project/Pages/Editor/Editor.vue': () =>
Promise.resolve().then(function () {
return Editor$1
}),
'../views/Project/Pages/Sidebar/Sidebar.vue': () =>
Promise.resolve().then(function () {
return Sidebar$9
}),
'../views/Project/Pages/Viewer/Viewer.vue': () =>
Promise.resolve().then(function () {
return Viewer$1
}),
'../views/Project/Vars/Header/Header.vue': () =>
Promise.resolve().then(function () {
return Header$3
}),
'../views/Project/Vars/Sidebar/Sidebar.vue': () =>
Promise.resolve().then(function () {
return Sidebar$b
}),
'../views/Project/Vars/Table/Table.vue': () =>
Promise.resolve().then(function () {
return Table$3
}),
'../views/Project/Vars/components/ReadWriteInput.vue': () =>
Promise.resolve().then(function () {
return ReadWriteInput$1
}),
'../views/Project/Vars/components/VarReferenceConfig.vue': () =>
Promise.resolve().then(function () {
return VarReferenceConfig$1
}),
'../views/Run/Menu/Login/Login.vue': () =>
Promise.resolve().then(function () {
return Login$1
}),
'../views/Run/Menu/User/User.vue': () =>
Promise.resolve().then(function () {
return User$1
}),
'../components/picture-management/picture-production/component-box/component/default-module.vue':
() =>
Promise.resolve().then(function () {
return defaultModule
}),
'../components/picture-management/picture-production/component-box/component/run-module.vue':
() =>
Promise.resolve().then(function () {
return runModule$1
}),
'../components/picture-management/picture-production/component-box/component/standard-controls.vue':
() =>
Promise.resolve().then(function () {
return standardControls
}),
'../views/Project/Alarm/Sidebar/components/AlarmLevelsConf.vue': () =>
Promise.resolve().then(function () {
return AlarmLevelsConf$1
}),
'../views/Project/Alarm/Sidebar/components/AlarmRecordsConf.vue': () =>
Promise.resolve().then(function () {
return AlarmRecordsConf$1
}),
'../views/Project/Alarm/Sidebar/components/AlarmTypeConf.vue': () =>
Promise.resolve().then(function () {
return AlarmTypeConf$1
}),
'../views/Project/Alarm/Sidebar/components/AlarmTypesConf.vue': () =>
Promise.resolve().then(function () {
return AlarmTypesConf$1
}),
'../views/Project/Alarm/Sidebar/components/SheetCreateDialog.vue': () =>
Promise.resolve().then(function () {
return SheetCreateDialog$1
}),
'../views/Project/Connection/EditorTable/components/ModifyRowsConfig.vue':
() =>
Promise.resolve().then(function () {
return ModifyRowsConfig$1
}),
'../views/Project/Connection/Sidebar/components/CreateConnection.vue': () =>
Promise.resolve().then(function () {
return CreateConnection$1
}),
'../views/Project/Connection/Sidebar/components/CreateData.vue': () =>
Promise.resolve().then(function () {
return CreateData
}),
'../views/Project/Connection/Sidebar/components/SqlConfigDialog.vue': () =>
Promise.resolve().then(function () {
return SqlConfigDialog$1
}),
'../views/Project/Connection/Sidebar/components/databaseConfig.vue': () =>
Promise.resolve().then(function () {
return databaseConfig$1
}),
'../views/Project/Connection/Sidebar/components/previewDatabaseTable.vue':
() =>
Promise.resolve().then(function () {
return previewDatabaseTable
}),
'../views/Project/Connection/Sidebar/components/selectDataTable.vue': () =>
Promise.resolve().then(function () {
return selectDataTable$1
}),
'../views/Project/Data/DataAggregation/components/ChoiceField.vue': () =>
Promise.resolve().then(function () {
return ChoiceField$1
}),
'../views/Project/Data/DataAggregation/components/FieldConfig.vue': () =>
Promise.resolve().then(function () {
return FieldConfig$1
}),
'../views/Project/Data/DataAggregation/components/FilterConditions.vue': () =>
Promise.resolve().then(function () {
return FilterConditions$1
}),
'../views/Project/Data/DataAggregation/components/TriggerConfig.vue': () =>
Promise.resolve().then(function () {
return TriggerConfig$1
}),
'../views/Project/Data/Sidebar/components/SheetCreateDialog.vue': () =>
Promise.resolve().then(function () {
return SheetCreateDialog$3
}),
'../views/Project/Data/VariableTag/components/ExpConfigDialog.vue': () =>
Promise.resolve().then(function () {
return ExpConfigDialog$4
}),
'../views/Project/Data/VariableTag/components/FieldType.vue': () =>
Promise.resolve().then(function () {
return FieldType$1
}),
'../views/Project/Data/VariableTag/components/FormulaConfigDialog.vue': () =>
Promise.resolve().then(function () {
return FormulaConfigDialog$1
}),
'../views/Project/Data/VariableTag/components/InputCode.vue': () =>
Promise.resolve().then(function () {
return InputCode$1
}),
'../views/Project/Data/VariableTag/components/RelevanceButton.vue': () =>
Promise.resolve().then(function () {
return RelevanceButton$1
}),
'../views/Project/Data/VariableTag/components/TriggerFrequency.vue': () =>
Promise.resolve().then(function () {
return TriggerFrequency$1
}),
'../views/Project/Data/VariableTag/components/TriggerSetting.vue': () =>
Promise.resolve().then(function () {
return TriggerSetting$1
}),
'../views/Project/Data/VariableTag/components/cacheSetting.vue': () =>
Promise.resolve().then(function () {
return cacheSetting
}),
'../views/Project/Data/VariableTag/components/noDataButton.vue': () =>
Promise.resolve().then(function () {
return noDataButton$1
}),
'../views/Project/Data/VariableTag/components/storageSetting.vue': () =>
Promise.resolve().then(function () {
return storageSetting$1
}),
'../views/Project/Lang/ContentTable/components/ExportFile.vue': () =>
Promise.resolve().then(function () {
return ExportFile
}),
'../views/Project/Lang/ContentTable/components/ImportFile.vue': () =>
Promise.resolve().then(function () {
return ImportFile$1
}),
'../views/Project/Lang/Sidebar/components/CmsSwitch.vue': () =>
Promise.resolve().then(function () {
return CmsSwitch$1
}),
'../views/Project/Lang/Sidebar/components/CreateDialog.vue': () =>
Promise.resolve().then(function () {
return CreateDialog$1
}),
'../views/Project/Pages/Editor/Board/Board.vue': () =>
Promise.resolve().then(function () {
return Board$1
}),
'../views/Project/Pages/Editor/Empty/Empty.vue': () =>
Promise.resolve().then(function () {
return Empty$1
}),
'../views/Project/Pages/Editor/Settings/Settings.vue': () =>
Promise.resolve().then(function () {
return Settings$1
}),
'../views/Project/Pages/Editor/Tab/Tab.vue': () =>
Promise.resolve().then(function () {
return Tab$1
}),
'../views/Project/Pages/Sidebar/CanvasNodeList/CanvasNodeList.vue': () =>
Promise.resolve().then(function () {
return CanvasNodeList$1
}),
'../views/Project/Pages/Sidebar/PageList/PageList.vue': () =>
Promise.resolve().then(function () {
return PageList$1
}),
'../views/Project/Vars/Header/components/Filter.vue': () =>
Promise.resolve().then(function () {
return Filter$3
}),
'../views/Project/Vars/Sidebar/components/IOTunnelDriveTree.vue': () =>
Promise.resolve().then(function () {
return IOTunnelDriveTree$1
}),
'../views/Project/Vars/Sidebar/components/IOTunnelOperate.vue': () =>
Promise.resolve().then(function () {
return IOTunnelOperate
}),
'../views/Project/Vars/Sidebar/components/InnerTunnelOperate.vue': () =>
Promise.resolve().then(function () {
return InnerTunnelOperate
}),
'../views/Project/Vars/Sidebar/components/SUBTunnelOperate.vue': () =>
Promise.resolve().then(function () {
return SUBTunnelOperate
}),
'../views/Project/Vars/Sidebar/components/VarGroupOperate.vue': () =>
Promise.resolve().then(function () {
return VarGroupOperate
}),
'../views/Project/Vars/Sidebar/components/VarNameConfig.vue': () =>
Promise.resolve().then(function () {
return VarNameConfig
}),
'../views/Project/Vars/Table/components/ImportFile.vue': () =>
Promise.resolve().then(function () {
return ImportFile$2
}),
'../views/Project/Vars/Table/components/VarAddressConfig.vue': () =>
Promise.resolve().then(function () {
return VarAddressConfig
}),
'../views/Project/Vars/Table/components/VarBatchCreate.vue': () =>
Promise.resolve().then(function () {
return VarBatchCreate
}),
'../views/Project/Vars/Table/components/VarBatchIssue.vue': () =>
Promise.resolve().then(function () {
return VarBatchIssue
}),
'../views/Project/Vars/Table/components/VarBatchModify.vue': () =>
Promise.resolve().then(function () {
return VarBatchModify
}),
'../views/Project/Vars/Table/components/VarHistoricArchiveConfig.vue': () =>
Promise.resolve().then(function () {
return VarHistoricArchiveConfig$1
}),
'../views/Project/Vars/Table/components/VarReferenceListCheck.vue': () =>
Promise.resolve().then(function () {
return VarReferenceListCheck
}),
'../views/Project/Pages/Editor/Board/ApplicationResource/ApplicationResource.vue':
() =>
Promise.resolve().then(function () {
return ApplicationResource$1
}),
'../views/Project/Pages/Editor/Board/Canvas/Canvas.vue': () =>
Promise.resolve().then(function () {
return Canvas$1
}),
'../views/Project/Pages/Editor/Board/Canvas/CanvasNode.vue': () =>
Promise.resolve().then(function () {
return CanvasNode
}),
'../views/Project/Pages/Editor/Board/History/History.vue': () =>
Promise.resolve().then(function () {
return History$1
}),
'../views/Project/Pages/Editor/Board/Selector/Resizer.vue': () =>
Promise.resolve().then(function () {
return Resizer$1
}),
'../views/Project/Pages/Editor/Board/Selector/Selected.vue': () =>
Promise.resolve().then(function () {
return Selected$1
}),
'../views/Project/Pages/Editor/Board/Selector/Selector.vue': () =>
Promise.resolve().then(function () {
return Selector$1
}),
'../views/Project/Pages/Editor/Board/Toolbar/LanguageSelect.vue': () =>
Promise.resolve().then(function () {
return LanguageSelect$1
}),
'../views/Project/Pages/Editor/Board/Toolbar/Toolbar.vue': () =>
Promise.resolve().then(function () {
return Toolbar$1
}),
'../views/Project/Pages/Editor/Board/Toolbar/ZoomSelect.vue': () =>
Promise.resolve().then(function () {
return ZoomSelect$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/Icon.vue': () =>
Promise.resolve().then(function () {
return Icon$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/WidgetLib.vue': () =>
Promise.resolve().then(function () {
return WidgetLib$1
}),
'../views/Project/Pages/Editor/Board/Zoom/Zoom.vue': () =>
Promise.resolve().then(function () {
return Zoom$1
}),
'../views/Project/Pages/Editor/Settings/Events/Events.vue': () =>
Promise.resolve().then(function () {
return Events$1
}),
'../views/Project/Pages/Editor/Settings/Style/Style.vue': () =>
Promise.resolve().then(function () {
return Style$1
}),
'../views/Project/Pages/Editor/Settings/WidgetSettings/InputSettings.vue':
() =>
Promise.resolve().then(function () {
return InputSettings$1
}),
'../views/Project/Pages/Editor/Settings/WidgetSettings/Permission.vue': () =>
Promise.resolve().then(function () {
return Permission$1
}),
'../views/Project/Pages/Editor/Settings/WidgetSettings/WidgetSettings.vue':
() =>
Promise.resolve().then(function () {
return WidgetSettings$1
}),
'../views/Project/Pages/Editor/Settings/components/SettingItem.vue': () =>
Promise.resolve().then(function () {
return SettingItem$2
}),
'../views/Project/Pages/Editor/Board/ApplicationResource/Panels/PanelContent.vue':
() =>
Promise.resolve().then(function () {
return PanelContent$1
}),
'../views/Project/Pages/Editor/Board/ApplicationResource/Panels/PanelLayout.vue':
() =>
Promise.resolve().then(function () {
return PanelLayout$1
}),
'../views/Project/Pages/Editor/Settings/Events/components/ActionPopover.vue':
() =>
Promise.resolve().then(function () {
return ActionPopover$1
}),
'../views/Project/Pages/Editor/Settings/Events/components/ActionSetting.vue':
() =>
Promise.resolve().then(function () {
return ActionSetting$1
}),
'../views/Project/Pages/Editor/Settings/Events/components/ActionTargetPopover.vue':
() =>
Promise.resolve().then(function () {
return ActionTargetPopover$1
}),
'../views/Project/Pages/Editor/Settings/Events/components/AlarmRecoverySetting.vue':
() =>
Promise.resolve().then(function () {
return AlarmRecoverySetting$1
}),
'../views/Project/Pages/Editor/Settings/Events/components/AlarmSetting.vue':
() =>
Promise.resolve().then(function () {
return AlarmSetting$1
}),
'../views/Project/Pages/Editor/Settings/Events/components/ConditionSetting.vue':
() =>
Promise.resolve().then(function () {
return ConditionSetting$1
}),
'../views/Project/Pages/Editor/Settings/Events/components/EventPopover.vue':
() =>
Promise.resolve().then(function () {
return EventPopover$1
}),
'../views/Project/Pages/Editor/Settings/Events/components/EventSettings.vue':
() =>
Promise.resolve().then(function () {
return EventSettings
}),
'../views/Project/Pages/Editor/Settings/Events/components/ExpConfigDialog.vue':
() =>
Promise.resolve().then(function () {
return ExpConfigDialog$3
}),
'../views/Project/Pages/Editor/Settings/Events/components/Footer.vue': () =>
Promise.resolve().then(function () {
return Footer$1
}),
'../views/Project/Pages/Editor/Settings/Events/components/OnBroadcastSetting.vue':
() =>
Promise.resolve().then(function () {
return OnBroadcastSetting$1
}),
'../views/Project/Pages/Editor/Settings/Events/components/Popover.vue': () =>
Promise.resolve().then(function () {
return Popover$1
}),
'../views/Project/Pages/Editor/Settings/Events/components/TimerSetting.vue':
() =>
Promise.resolve().then(function () {
return TimerSetting$1
}),
'../views/Project/Pages/Editor/Settings/Events/components/VarConditionConfig.vue':
() =>
Promise.resolve().then(function () {
return VarConditionConfig$1
}),
'../views/Project/Pages/Editor/Settings/Style/components/AppearanceSettings.vue':
() =>
Promise.resolve().then(function () {
return AppearanceSettings$1
}),
'../views/Project/Pages/Editor/Settings/Style/components/BackgroundImageSetting.vue':
() =>
Promise.resolve().then(function () {
return BackgroundImageSetting$1
}),
'../views/Project/Pages/Editor/Settings/Style/components/TextSettings.vue':
() =>
Promise.resolve().then(function () {
return TextSettings$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/A/A.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_0$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/A/A.vue': () =>
Promise.resolve().then(function () {
return __glob_2_1$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Button/Button.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_2$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Button/Button.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_3$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/Chart.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_4$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/Chart.vue': () =>
Promise.resolve().then(function () {
return __glob_2_5$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartBar/ChartBar.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_6$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartBar/ChartBar.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_7$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartBar/SetChart.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_8$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartBarHorizontal/ChartBarHorizontal.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_9$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartBarHorizontal/ChartBarHorizontal.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_10
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartBarHorizontalStacked/ChartBarHorizontalStacked.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_11
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartBarHorizontalStacked/ChartBarHorizontalStacked.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_12
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartBarStacked/ChartBarStacked.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_13
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartBarStacked/ChartBarStacked.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_14
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartCard/ChartCard.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_15
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartCard/ChartCard.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_16
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLine/ChartLine.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_17
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLine/ChartLine.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_18
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLine/SetChart.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_19
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineArea/ChartLineArea.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_20
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineArea/ChartLineArea.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_21
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineAreaStacked/ChartLineAreaStacked.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_22
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineAreaStacked/ChartLineAreaStacked.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_23
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineTrend/Chart.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_24
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineTrend/ChartLineTrend.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_25
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineTrend/ChartLineTrend.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_26
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineTrendConfig/ChartLineTrendConfig.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_27
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineTrendConfig/ChartLineTrendConfig.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_28
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartMixed/ChartMixed.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_29
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartMixed/ChartMixed.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_30
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartPie/ChartPie.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_31
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartPie/ChartPie.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_32
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartPie/Label.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_33
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartPie/SetChart.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_34
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartPieRing/ChartPieRing.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_35
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartPieRing/ChartPieRing.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_36
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartPieRing/SetChart.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_37
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartPieRose/ChartPieRose.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_38
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartPieRose/ChartPieRose.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_39
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartTable/ChartTable.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_40
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartTable/ChartTable.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_41
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Circle/Circle.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_42
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Circle/Circle.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_43
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ControlButton/ControlButton.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_44
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ControlButton/ControlButton.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_45
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DateRange/DateRange.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_46
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DateRange/DateRange.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_47
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DropDownList/DropDownList.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_48
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DropDownList/DropDownList.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_49
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DropdownMenu/DropdownMenu.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_50
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DropdownMenu/DropdownMenu.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_51
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DropdownMenuVertical/DropdownMenuVertical.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_52
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DropdownMenuVertical/DropdownMenuVertical.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_53
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DropdownMenuVertical2/DropdownMenuVertical2.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_54
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DropdownMenuVertical2/DropdownMenuVertical2.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_55
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Dynamic/Dynamic.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_56
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DynamicCircle/DynamicCircle.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_57
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DynamicCircle/DynamicCircle.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_58
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DynamicImg/DynamicImg.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_59
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DynamicImg/DynamicImg.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_60
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DynamicRect/DynamicRect.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_61
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DynamicRect/DynamicRect.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_62
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DynamicText/DynamicText.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_63
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DynamicText/DynamicText.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_64
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Exp/Exp.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_65
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Exp/Exp.vue': () =>
Promise.resolve().then(function () {
return __glob_2_66
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ExportButton/ExportButton.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_67
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ExportButton/ExportButton.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_68
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Group/Group.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_69
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Group/Group.vue': () =>
Promise.resolve().then(function () {
return __glob_2_70
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Img/Img.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_71
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Img/Img.vue': () =>
Promise.resolve().then(function () {
return __glob_2_72
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Input/Input.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_73
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Input/Input.vue': () =>
Promise.resolve().then(function () {
return __glob_2_74
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/JogButton/JogButton.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_75
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/JogButton/JogButton.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_76
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/JumpButton/JumpButton.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_77
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/JumpButton/JumpButton.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_78
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Language/Language.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_79
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Language/Language.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_80
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Line/Line.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_81
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Line/Line.vue': () =>
Promise.resolve().then(function () {
return __glob_2_82
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/LogManage/LogManage.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_83
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/LogManage/LogManage.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_84
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Login/Login.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_85
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Login/Login.vue': () =>
Promise.resolve().then(function () {
return __glob_2_86
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/NumberFilter/NumberFilter.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_87
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/NumberFilter/NumberFilter.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_88
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/NumberInput/NumberInput.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_89
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/NumberInput/NumberInput.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_90
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/NumberShow/NumberShow.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_91
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/NumberShow/NumberShow.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_92
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/PageFrame/PageFrame.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_93
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/PageFrame/PageFrame.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_94
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/PageList/PageList.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_95
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/PageList/PageList.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_96
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/PermissionManage/PermissionManage.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_97
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/PermissionManage/PermissionManage.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_98
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/PopupWindowButton/PopupWindowButton.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_99
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/PopupWindowButton/PopupWindowButton.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_100
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ReadWriteInput/ReadWriteInput.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_101
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ReadWriteInput/ReadWriteInput.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_102
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Rect/Rect.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_103
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Rect/Rect.vue': () =>
Promise.resolve().then(function () {
return __glob_2_104
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/RouterLink/RouterLink.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_105
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/RouterLink/RouterLink.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_106
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ShutdownButton/ShutdownButton.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_107
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ShutdownButton/ShutdownButton.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_108
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/StaticText/StaticText.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_109
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/StaticText/StaticText.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_110
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/SwitchButton/SwitchButton.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_111
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/SwitchButton/SwitchButton.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_112
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/TextInput/TextInput.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_113
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/TextInput/TextInput.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_114
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/UserInformation/UserInformation.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_115
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/UserInformation/UserInformation.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_116
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/VarList/VarList.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_117
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/VarList/VarList.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_118
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/VirtualKeyboardButton/VirtualKeyboardButton.settings.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_119
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/VirtualKeyboardButton/VirtualKeyboardButton.vue':
() =>
Promise.resolve().then(function () {
return __glob_2_120
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/ExpConfigDialog.vue':
() =>
Promise.resolve().then(function () {
return ExpConfigDialog$1
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/charts.vue':
() =>
Promise.resolve().then(function () {
return charts
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/checkbox.vue':
() =>
Promise.resolve().then(function () {
return checkbox
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/checkboxGroup.vue':
() =>
Promise.resolve().then(function () {
return checkboxGroup$1
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/color.vue':
() =>
Promise.resolve().then(function () {
return color
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/currentPage.vue':
() =>
Promise.resolve().then(function () {
return currentPage
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/date.vue':
() =>
Promise.resolve().then(function () {
return date
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/file.vue':
() =>
Promise.resolve().then(function () {
return file
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/image.vue':
() =>
Promise.resolve().then(function () {
return image
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/number.vue':
() =>
Promise.resolve().then(function () {
return number$1
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/page.vue':
() =>
Promise.resolve().then(function () {
return page
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/radio.vue':
() =>
Promise.resolve().then(function () {
return radio
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/select.vue':
() =>
Promise.resolve().then(function () {
return select
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/slide.vue':
() =>
Promise.resolve().then(function () {
return slide
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/text.vue':
() =>
Promise.resolve().then(function () {
return text
}),
'../views/Project/Pages/Editor/Settings/Events/components/argumentBlock/variableName.vue':
() =>
Promise.resolve().then(function () {
return variableName
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Button/settings/ConfirmBoxSetting.vue':
() =>
Promise.resolve().then(function () {
return ConfirmBoxSetting$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineTrendConfig/components/CurveAnalysis.vue':
() =>
Promise.resolve().then(function () {
return CurveAnalysis
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineTrendConfig/components/CurveDefine.vue':
() =>
Promise.resolve().then(function () {
return CurveDefine
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineTrendConfig/components/EditCurveGroup.vue':
() =>
Promise.resolve().then(function () {
return EditCurveGroup$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartTable/components/TableColumn.vue':
() =>
Promise.resolve().then(function () {
return TableColumn$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DateRange/controller/ControllerIcon.vue':
() =>
Promise.resolve().then(function () {
return ControllerIcon
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DateRange/controller/DateRangeIcon.vue':
() =>
Promise.resolve().then(function () {
return DateRangeIcon$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DateRange/settings/ControllerCharts.vue':
() =>
Promise.resolve().then(function () {
return ControllerCharts$5
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DropdownMenu/components/function-tree.vue':
() =>
Promise.resolve().then(function () {
return functionTree$3
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DropdownMenu/components/menu-style.vue':
() =>
Promise.resolve().then(function () {
return menuStyle
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DropdownMenu/components/styleSetting.vue':
() =>
Promise.resolve().then(function () {
return styleSetting
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/DropdownMenu/components/type.vue':
() =>
Promise.resolve().then(function () {
return type
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Dynamic/components/Condition.vue':
() =>
Promise.resolve().then(function () {
return Condition$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Dynamic/components/StatusItem.vue':
() =>
Promise.resolve().then(function () {
return StatusItem$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ExportButton/settings/ControllerCharts.vue':
() =>
Promise.resolve().then(function () {
return ControllerCharts$3
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/LogManage/components/DeviceLog.vue':
() =>
Promise.resolve().then(function () {
return DeviceLog
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/LogManage/components/LoginLog.vue':
() =>
Promise.resolve().then(function () {
return LoginLog
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/LogManage/components/ModuleLog.vue':
() =>
Promise.resolve().then(function () {
return ModuleLog
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Login/components/Shadow.vue':
() =>
Promise.resolve().then(function () {
return Shadow$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Login/components/ShapeConfiguration.vue':
() =>
Promise.resolve().then(function () {
return ShapeConfiguration$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Login/components/TextConfiguration.vue':
() =>
Promise.resolve().then(function () {
return TextConfiguration$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/PermissionManage/components/RoleManage.vue':
() =>
Promise.resolve().then(function () {
return RoleManage
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/PermissionManage/components/UserManage.vue':
() =>
Promise.resolve().then(function () {
return UserManage
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/SwitchButton/components/Switch.vue':
() =>
Promise.resolve().then(function () {
return Switch$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/other/StyleConditionsDialog.vue':
() =>
Promise.resolve().then(function () {
return StyleConditionsDialog$2
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/Data.vue':
() =>
Promise.resolve().then(function () {
return Data$5
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/DataDimissions.vue':
() =>
Promise.resolve().then(function () {
return DataDimissions$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/DataFeildConfig.vue':
() =>
Promise.resolve().then(function () {
return DataFeildConfig$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/DataIndexes.vue':
() =>
Promise.resolve().then(function () {
return DataIndexes$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/DataZoom.vue':
() =>
Promise.resolve().then(function () {
return DataZoom$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/DataZoomConfig.vue':
() =>
Promise.resolve().then(function () {
return DataZoomConfig$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/Grid.vue':
() =>
Promise.resolve().then(function () {
return Grid$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/Label.vue':
() =>
Promise.resolve().then(function () {
return Label$2
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/Legend.vue':
() =>
Promise.resolve().then(function () {
return Legend$3
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/LegendColor.vue':
() =>
Promise.resolve().then(function () {
return LegendColor$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/MarkLineConfig.vue':
() =>
Promise.resolve().then(function () {
return MarkLineConfig$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/Padding.vue':
() =>
Promise.resolve().then(function () {
return Padding$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/QueryConditions.vue':
() =>
Promise.resolve().then(function () {
return QueryConditions$5
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/StyleConditions.vue':
() =>
Promise.resolve().then(function () {
return StyleConditions$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/Title.vue':
() =>
Promise.resolve().then(function () {
return Title$3
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/Toolbox.vue':
() =>
Promise.resolve().then(function () {
return Toolbox
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/Type.vue':
() =>
Promise.resolve().then(function () {
return Type$4
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/XAxis.vue':
() =>
Promise.resolve().then(function () {
return XAxis$3
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/YAxis.vue':
() =>
Promise.resolve().then(function () {
return YAxis$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/Chart/components/settings/_.vue':
() =>
Promise.resolve().then(function () {
return _
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartCard/components/settings/Dialog.vue':
() =>
Promise.resolve().then(function () {
return Dialog$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartCard/components/settings/LabelSettings.vue':
() =>
Promise.resolve().then(function () {
return LabelSettings$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineTrend/components/settings/Legend.vue':
() =>
Promise.resolve().then(function () {
return Legend$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineTrend/components/settings/QueryConditions.vue':
() =>
Promise.resolve().then(function () {
return QueryConditions$3
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineTrend/components/settings/SetChart.vue':
() =>
Promise.resolve().then(function () {
return SetChart$3
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineTrend/components/settings/Toolbar.vue':
() =>
Promise.resolve().then(function () {
return Toolbar$5
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartLineTrend/components/settings/XAxis.vue':
() =>
Promise.resolve().then(function () {
return XAxis$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartTable/components/settings/Dialog.vue':
() =>
Promise.resolve().then(function () {
return Dialog$3
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/ChartTable/components/settings/HeaderSettingDialog.vue':
() =>
Promise.resolve().then(function () {
return HeaderSettingDialog$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/PermissionManage/components/dialogs/ManageDialog.vue':
() =>
Promise.resolve().then(function () {
return ManageDialog
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/PermissionManage/components/dialogs/ResetDialog.vue':
() =>
Promise.resolve().then(function () {
return ResetDialog$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/PermissionManage/components/dialogs/RoleDialog.vue':
() =>
Promise.resolve().then(function () {
return RoleDialog$1
}),
'../views/Project/Pages/Editor/Board/WidgetLib/widgets/PermissionManage/components/dialogs/UserDialog.vue':
() =>
Promise.resolve().then(function () {
return UserDialog
}),
}
const sdk = {
version: version$5,
launch() {
const vueApp = createApp$1(AppView)
vueApp.use(draggable$1)
vueApp.use(track)
vueApp.use(directives)
vueApp.use(router$1)
vueApp.use(store$5)
vueApp.use(useTable)
vueApp.use(installer)
vueApp.mixin({
beforeCreate() {
Object.assign(this, {
window,
console,
alert,
})
},
})
vueApp.config.globalProperties.t = Language$1.t
vueApp.config.globalProperties._t = Language$1._t
vueApp.mount('#app')
return vueApp
},
models: models$1,
importAsync(path) {
const packPromise = packs[path]
if (packPromise) return packPromise
if (/\.vue$/i.test(path)) {
const vuePath = path.replace(/^@\//, '')
const module2 = modules[`../${vuePath}`]
if (module2) {
return defineAsyncComponent(module2)
} else {
throw new Error(`Not Found ${path}`)
}
}
},
components: {
SettingItem: _sfc_main$72,
},
utils: {
request,
userInfo,
openVariableDialog,
},
lib: {
Vue,
ElementPlus: installer,
useTable,
},
packs,
request,
baseURL,
userInfo,
userBehaviorAnalysis,
}
window.sdk = sdk
setTimeout(async () => {
const projectId = sessionStorage.getItem('X-Project')
const project = new Project$2({
id: projectId + '',
})
app.current.project = project
app.dataeventSocket = new Socket({
url: `/hubs/v1/dataevent`,
name: '\u5168\u5C40\u4E8B\u4EF6',
})
await app.dataeventSocket.start()
await accessSocketInVision()
models$1.Variable.start()
}, 0)
/*! @license DOMPurify 2.4.7 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.4.7/LICENSE */
function _typeof$2(obj) {
'@babel/helpers - typeof'
return (
(_typeof$2 =
'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator
? function (obj2) {
return typeof obj2
}
: function (obj2) {
return obj2 &&
'function' == typeof Symbol &&
obj2.constructor === Symbol &&
obj2 !== Symbol.prototype
? 'symbol'
: typeof obj2
}),
_typeof$2(obj)
)
}
function _setPrototypeOf(o2, p2) {
_setPrototypeOf =
Object.setPrototypeOf ||
function _setPrototypeOf2(o3, p3) {
o3.__proto__ = p3
return o3
}
return _setPrototypeOf(o2, p2)
}
function _isNativeReflectConstruct() {
if (typeof Reflect === 'undefined' || !Reflect.construct) return false
if (Reflect.construct.sham) return false
if (typeof Proxy === 'function') return true
try {
Boolean.prototype.valueOf.call(
Reflect.construct(Boolean, [], function () {})
)
return true
} catch (e2) {
return false
}
}
function _construct(Parent, args, Class) {
if (_isNativeReflectConstruct()) {
_construct = Reflect.construct
} else {
_construct = function _construct2(Parent2, args2, Class2) {
var a2 = [null]
a2.push.apply(a2, args2)
var Constructor = Function.bind.apply(Parent2, a2)
var instance = new Constructor()
if (Class2) _setPrototypeOf(instance, Class2.prototype)
return instance
}
}
return _construct.apply(null, arguments)
}
function _toConsumableArray(arr) {
return (
_arrayWithoutHoles(arr) ||
_iterableToArray(arr) ||
_unsupportedIterableToArray(arr) ||
_nonIterableSpread()
)
}
function _arrayWithoutHoles(arr) {
if (Array.isArray(arr)) return _arrayLikeToArray(arr)
}
function _iterableToArray(iter) {
if (
(typeof Symbol !== 'undefined' && iter[Symbol.iterator] != null) ||
iter['@@iterator'] != null
)
return Array.from(iter)
}
function _unsupportedIterableToArray(o2, minLen) {
if (!o2) return
if (typeof o2 === 'string') return _arrayLikeToArray(o2, minLen)
var n2 = Object.prototype.toString.call(o2).slice(8, -1)
if (n2 === 'Object' && o2.constructor) n2 = o2.constructor.name
if (n2 === 'Map' || n2 === 'Set') return Array.from(o2)
if (n2 === 'Arguments' || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n2))
return _arrayLikeToArray(o2, minLen)
}
function _arrayLikeToArray(arr, len2) {
if (len2 == null || len2 > arr.length) len2 = arr.length
for (var i2 = 0, arr2 = new Array(len2); i2 < len2; i2++) arr2[i2] = arr[i2]
return arr2
}
function _nonIterableSpread() {
throw new TypeError(
'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.'
)
}
var hasOwnProperty$c = Object.hasOwnProperty,
setPrototypeOf$2 = Object.setPrototypeOf,
isFrozen = Object.isFrozen,
getPrototypeOf$2 = Object.getPrototypeOf,
getOwnPropertyDescriptor$5 = Object.getOwnPropertyDescriptor
var freeze = Object.freeze,
seal = Object.seal,
create$6 = Object.create
var _ref = typeof Reflect !== 'undefined' && Reflect,
apply$5 = _ref.apply,
construct$1 = _ref.construct
if (!apply$5) {
apply$5 = function apply2(fun, thisValue, args) {
return fun.apply(thisValue, args)
}
}
if (!freeze) {
freeze = function freeze2(x2) {
return x2
}
}
if (!seal) {
seal = function seal2(x2) {
return x2
}
}
if (!construct$1) {
construct$1 = function construct2(Func, args) {
return _construct(Func, _toConsumableArray(args))
}
}
var arrayForEach = unapply(Array.prototype.forEach)
var arrayPop = unapply(Array.prototype.pop)
var arrayPush$3 = unapply(Array.prototype.push)
var stringToLowerCase = unapply(String.prototype.toLowerCase)
var stringToString = unapply(String.prototype.toString)
var stringMatch = unapply(String.prototype.match)
var stringReplace = unapply(String.prototype.replace)
var stringIndexOf$2 = unapply(String.prototype.indexOf)
var stringTrim$1 = unapply(String.prototype.trim)
var regExpTest = unapply(RegExp.prototype.test)
var typeErrorCreate = unconstruct(TypeError)
function unapply(func) {
return function (thisArg) {
for (
var _len = arguments.length,
args = new Array(_len > 1 ? _len - 1 : 0),
_key = 1;
_key < _len;
_key++
) {
args[_key - 1] = arguments[_key]
}
return apply$5(func, thisArg, args)
}
}
function unconstruct(func) {
return function () {
for (
var _len2 = arguments.length, args = new Array(_len2), _key2 = 0;
_key2 < _len2;
_key2++
) {
args[_key2] = arguments[_key2]
}
return construct$1(func, args)
}
}
function addToSet(set2, array4, transformCaseFunc) {
var _transformCaseFunc
transformCaseFunc =
(_transformCaseFunc = transformCaseFunc) !== null &&
_transformCaseFunc !== void 0
? _transformCaseFunc
: stringToLowerCase
if (setPrototypeOf$2) {
setPrototypeOf$2(set2, null)
}
var l2 = array4.length
while (l2--) {
var element = array4[l2]
if (typeof element === 'string') {
var lcElement = transformCaseFunc(element)
if (lcElement !== element) {
if (!isFrozen(array4)) {
array4[l2] = lcElement
}
element = lcElement
}
}
set2[element] = true
}
return set2
}
function clone$6(object4) {
var newObject = create$6(null)
var property2
for (property2 in object4) {
if (apply$5(hasOwnProperty$c, object4, [property2]) === true) {
newObject[property2] = object4[property2]
}
}
return newObject
}
function lookupGetter(object4, prop) {
while (object4 !== null) {
var desc = getOwnPropertyDescriptor$5(object4, prop)
if (desc) {
if (desc.get) {
return unapply(desc.get)
}
if (typeof desc.value === 'function') {
return unapply(desc.value)
}
}
object4 = getPrototypeOf$2(object4)
}
function fallbackValue(element) {
console.warn('fallback value for', element)
return null
}
return fallbackValue
}
var html$1$1 = freeze([
'a',
'abbr',
'acronym',
'address',
'area',
'article',
'aside',
'audio',
'b',
'bdi',
'bdo',
'big',
'blink',
'blockquote',
'body',
'br',
'button',
'canvas',
'caption',
'center',
'cite',
'code',
'col',
'colgroup',
'content',
'data',
'datalist',
'dd',
'decorator',
'del',
'details',
'dfn',
'dialog',
'dir',
'div',
'dl',
'dt',
'element',
'em',
'fieldset',
'figcaption',
'figure',
'font',
'footer',
'form',
'h1',
'h2',
'h3',
'h4',
'h5',
'h6',
'head',
'header',
'hgroup',
'hr',
'html',
'i',
'img',
'input',
'ins',
'kbd',
'label',
'legend',
'li',
'main',
'map',
'mark',
'marquee',
'menu',
'menuitem',
'meter',
'nav',
'nobr',
'ol',
'optgroup',
'option',
'output',
'p',
'picture',
'pre',
'progress',
'q',
'rp',
'rt',
'ruby',
's',
'samp',
'section',
'select',
'shadow',
'small',
'source',
'spacer',
'span',
'strike',
'strong',
'style',
'sub',
'summary',
'sup',
'table',
'tbody',
'td',
'template',
'textarea',
'tfoot',
'th',
'thead',
'time',
'tr',
'track',
'tt',
'u',
'ul',
'var',
'video',
'wbr',
])
var svg$1 = freeze([
'svg',
'a',
'altglyph',
'altglyphdef',
'altglyphitem',
'animatecolor',
'animatemotion',
'animatetransform',
'circle',
'clippath',
'defs',
'desc',
'ellipse',
'filter',
'font',
'g',
'glyph',
'glyphref',
'hkern',
'image',
'line',
'lineargradient',
'marker',
'mask',
'metadata',
'mpath',
'path',
'pattern',
'polygon',
'polyline',
'radialgradient',
'rect',
'stop',
'style',
'switch',
'symbol',
'text',
'textpath',
'title',
'tref',
'tspan',
'view',
'vkern',
])
var svgFilters = freeze([
'feBlend',
'feColorMatrix',
'feComponentTransfer',
'feComposite',
'feConvolveMatrix',
'feDiffuseLighting',
'feDisplacementMap',
'feDistantLight',
'feFlood',
'feFuncA',
'feFuncB',
'feFuncG',
'feFuncR',
'feGaussianBlur',
'feImage',
'feMerge',
'feMergeNode',
'feMorphology',
'feOffset',
'fePointLight',
'feSpecularLighting',
'feSpotLight',
'feTile',
'feTurbulence',
])
var svgDisallowed = freeze([
'animate',
'color-profile',
'cursor',
'discard',
'fedropshadow',
'font-face',
'font-face-format',
'font-face-name',
'font-face-src',
'font-face-uri',
'foreignobject',
'hatch',
'hatchpath',
'mesh',
'meshgradient',
'meshpatch',
'meshrow',
'missing-glyph',
'script',
'set',
'solidcolor',
'unknown',
'use',
])
var mathMl$1 = freeze([
'math',
'menclose',
'merror',
'mfenced',
'mfrac',
'mglyph',
'mi',
'mlabeledtr',
'mmultiscripts',
'mn',
'mo',
'mover',
'mpadded',
'mphantom',
'mroot',
'mrow',
'ms',
'mspace',
'msqrt',
'mstyle',
'msub',
'msup',
'msubsup',
'mtable',
'mtd',
'mtext',
'mtr',
'munder',
'munderover',
])
var mathMlDisallowed = freeze([
'maction',
'maligngroup',
'malignmark',
'mlongdiv',
'mscarries',
'mscarry',
'msgroup',
'mstack',
'msline',
'msrow',
'semantics',
'annotation',
'annotation-xml',
'mprescripts',
'none',
])
var text$1 = freeze(['#text'])
var html$3 = freeze([
'accept',
'action',
'align',
'alt',
'autocapitalize',
'autocomplete',
'autopictureinpicture',
'autoplay',
'background',
'bgcolor',
'border',
'capture',
'cellpadding',
'cellspacing',
'checked',
'cite',
'class',
'clear',
'color',
'cols',
'colspan',
'controls',
'controlslist',
'coords',
'crossorigin',
'datetime',
'decoding',
'default',
'dir',
'disabled',
'disablepictureinpicture',
'disableremoteplayback',
'download',
'draggable',
'enctype',
'enterkeyhint',
'face',
'for',
'headers',
'height',
'hidden',
'high',
'href',
'hreflang',
'id',
'inputmode',
'integrity',
'ismap',
'kind',
'label',
'lang',
'list',
'loading',
'loop',
'low',
'max',
'maxlength',
'media',
'method',
'min',
'minlength',
'multiple',
'muted',
'name',
'nonce',
'noshade',
'novalidate',
'nowrap',
'open',
'optimum',
'pattern',
'placeholder',
'playsinline',
'poster',
'preload',
'pubdate',
'radiogroup',
'readonly',
'rel',
'required',
'rev',
'reversed',
'role',
'rows',
'rowspan',
'spellcheck',
'scope',
'selected',
'shape',
'size',
'sizes',
'span',
'srclang',
'start',
'src',
'srcset',
'step',
'style',
'summary',
'tabindex',
'title',
'translate',
'type',
'usemap',
'valign',
'value',
'width',
'xmlns',
'slot',
])
var svg = freeze([
'accent-height',
'accumulate',
'additive',
'alignment-baseline',
'ascent',
'attributename',
'attributetype',
'azimuth',
'basefrequency',
'baseline-shift',
'begin',
'bias',
'by',
'class',
'clip',
'clippathunits',
'clip-path',
'clip-rule',
'color',
'color-interpolation',
'color-interpolation-filters',
'color-profile',
'color-rendering',
'cx',
'cy',
'd',
'dx',
'dy',
'diffuseconstant',
'direction',
'display',
'divisor',
'dur',
'edgemode',
'elevation',
'end',
'fill',
'fill-opacity',
'fill-rule',
'filter',
'filterunits',
'flood-color',
'flood-opacity',
'font-family',
'font-size',
'font-size-adjust',
'font-stretch',
'font-style',
'font-variant',
'font-weight',
'fx',
'fy',
'g1',
'g2',
'glyph-name',
'glyphref',
'gradientunits',
'gradienttransform',
'height',
'href',
'id',
'image-rendering',
'in',
'in2',
'k',
'k1',
'k2',
'k3',
'k4',
'kerning',
'keypoints',
'keysplines',
'keytimes',
'lang',
'lengthadjust',
'letter-spacing',
'kernelmatrix',
'kernelunitlength',
'lighting-color',
'local',
'marker-end',
'marker-mid',
'marker-start',
'markerheight',
'markerunits',
'markerwidth',
'maskcontentunits',
'maskunits',
'max',
'mask',
'media',
'method',
'mode',
'min',
'name',
'numoctaves',
'offset',
'operator',
'opacity',
'order',
'orient',
'orientation',
'origin',
'overflow',
'paint-order',
'path',
'pathlength',
'patterncontentunits',
'patterntransform',
'patternunits',
'points',
'preservealpha',
'preserveaspectratio',
'primitiveunits',
'r',
'rx',
'ry',
'radius',
'refx',
'refy',
'repeatcount',
'repeatdur',
'restart',
'result',
'rotate',
'scale',
'seed',
'shape-rendering',
'specularconstant',
'specularexponent',
'spreadmethod',
'startoffset',
'stddeviation',
'stitchtiles',
'stop-color',
'stop-opacity',
'stroke-dasharray',
'stroke-dashoffset',
'stroke-linecap',
'stroke-linejoin',
'stroke-miterlimit',
'stroke-opacity',
'stroke',
'stroke-width',
'style',
'surfacescale',
'systemlanguage',
'tabindex',
'targetx',
'targety',
'transform',
'transform-origin',
'text-anchor',
'text-decoration',
'text-rendering',
'textlength',
'type',
'u1',
'u2',
'unicode',
'values',
'viewbox',
'visibility',
'version',
'vert-adv-y',
'vert-origin-x',
'vert-origin-y',
'width',
'word-spacing',
'wrap',
'writing-mode',
'xchannelselector',
'ychannelselector',
'x',
'x1',
'x2',
'xmlns',
'y',
'y1',
'y2',
'z',
'zoomandpan',
])
var mathMl = freeze([
'accent',
'accentunder',
'align',
'bevelled',
'close',
'columnsalign',
'columnlines',
'columnspan',
'denomalign',
'depth',
'dir',
'display',
'displaystyle',
'encoding',
'fence',
'frame',
'height',
'href',
'id',
'largeop',
'length',
'linethickness',
'lspace',
'lquote',
'mathbackground',
'mathcolor',
'mathsize',
'mathvariant',
'maxsize',
'minsize',
'movablelimits',
'notation',
'numalign',
'open',
'rowalign',
'rowlines',
'rowspacing',
'rowspan',
'rspace',
'rquote',
'scriptlevel',
'scriptminsize',
'scriptsizemultiplier',
'selection',
'separator',
'separators',
'stretchy',
'subscriptshift',
'supscriptshift',
'symmetric',
'voffset',
'width',
'xmlns',
])
var xml = freeze([
'xlink:href',
'xml:id',
'xlink:title',
'xml:space',
'xmlns:xlink',
])
var MUSTACHE_EXPR = seal(/\{\{[\w\W]*|[\w\W]*\}\}/gm)
var ERB_EXPR = seal(/<%[\w\W]*|[\w\W]*%>/gm)
var TMPLIT_EXPR = seal(/\${[\w\W]*}/gm)
var DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]/)
var ARIA_ATTR = seal(/^aria-[\-\w]+$/)
var IS_ALLOWED_URI = seal(
/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i
)
var IS_SCRIPT_OR_DATA = seal(/^(?:\w+script|data):/i)
var ATTR_WHITESPACE = seal(
/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g
)
var DOCTYPE_NAME = seal(/^html$/i)
var getGlobal = function getGlobal2() {
return typeof window === 'undefined' ? null : window
}
var _createTrustedTypesPolicy = function _createTrustedTypesPolicy2(
trustedTypes,
document2
) {
if (
_typeof$2(trustedTypes) !== 'object' ||
typeof trustedTypes.createPolicy !== 'function'
) {
return null
}
var suffix2 = null
var ATTR_NAME = 'data-tt-policy-suffix'
if (
document2.currentScript &&
document2.currentScript.hasAttribute(ATTR_NAME)
) {
suffix2 = document2.currentScript.getAttribute(ATTR_NAME)
}
var policyName = 'dompurify' + (suffix2 ? '#' + suffix2 : '')
try {
return trustedTypes.createPolicy(policyName, {
createHTML: function createHTML(html2) {
return html2
},
createScriptURL: function createScriptURL(scriptUrl) {
return scriptUrl
},
})
} catch (_2) {
console.warn('TrustedTypes policy ' + policyName + ' could not be created.')
return null
}
}
function createDOMPurify() {
var window2 =
arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getGlobal()
var DOMPurify = function DOMPurify2(root2) {
return createDOMPurify(root2)
}
DOMPurify.version = '2.4.7'
DOMPurify.removed = []
if (!window2 || !window2.document || window2.document.nodeType !== 9) {
DOMPurify.isSupported = false
return DOMPurify
}
var originalDocument = window2.document
var document2 = window2.document
var DocumentFragment = window2.DocumentFragment,
HTMLTemplateElement = window2.HTMLTemplateElement,
Node2 = window2.Node,
Element2 = window2.Element,
NodeFilter2 = window2.NodeFilter,
_window$NamedNodeMap = window2.NamedNodeMap,
NamedNodeMap =
_window$NamedNodeMap === void 0
? window2.NamedNodeMap || window2.MozNamedAttrMap
: _window$NamedNodeMap,
HTMLFormElement = window2.HTMLFormElement,
DOMParser2 = window2.DOMParser,
trustedTypes = window2.trustedTypes
var ElementPrototype = Element2.prototype
var cloneNode2 = lookupGetter(ElementPrototype, 'cloneNode')
var getNextSibling = lookupGetter(ElementPrototype, 'nextSibling')
var getChildNodes2 = lookupGetter(ElementPrototype, 'childNodes')
var getParentNode2 = lookupGetter(ElementPrototype, 'parentNode')
if (typeof HTMLTemplateElement === 'function') {
var template2 = document2.createElement('template')
if (template2.content && template2.content.ownerDocument) {
document2 = template2.content.ownerDocument
}
}
var trustedTypesPolicy = _createTrustedTypesPolicy(
trustedTypes,
originalDocument
)
var emptyHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML('') : ''
var _document = document2,
implementation = _document.implementation,
createNodeIterator = _document.createNodeIterator,
createDocumentFragment = _document.createDocumentFragment,
getElementsByTagName = _document.getElementsByTagName
var importNode = originalDocument.importNode
var documentMode = {}
try {
documentMode = clone$6(document2).documentMode ? document2.documentMode : {}
} catch (_2) {}
var hooks2 = {}
DOMPurify.isSupported =
typeof getParentNode2 === 'function' &&
implementation &&
implementation.createHTMLDocument !== void 0 &&
documentMode !== 9
var MUSTACHE_EXPR$1 = MUSTACHE_EXPR,
ERB_EXPR$1 = ERB_EXPR,
TMPLIT_EXPR$1 = TMPLIT_EXPR,
DATA_ATTR$1 = DATA_ATTR,
ARIA_ATTR$1 = ARIA_ATTR,
IS_SCRIPT_OR_DATA$1 = IS_SCRIPT_OR_DATA,
ATTR_WHITESPACE$1 = ATTR_WHITESPACE
var IS_ALLOWED_URI$1 = IS_ALLOWED_URI
var ALLOWED_TAGS = null
var DEFAULT_ALLOWED_TAGS = addToSet(
{},
[].concat(
_toConsumableArray(html$1$1),
_toConsumableArray(svg$1),
_toConsumableArray(svgFilters),
_toConsumableArray(mathMl$1),
_toConsumableArray(text$1)
)
)
var ALLOWED_ATTR = null
var DEFAULT_ALLOWED_ATTR = addToSet(
{},
[].concat(
_toConsumableArray(html$3),
_toConsumableArray(svg),
_toConsumableArray(mathMl),
_toConsumableArray(xml)
)
)
var CUSTOM_ELEMENT_HANDLING = Object.seal(
Object.create(null, {
tagNameCheck: {
writable: true,
configurable: false,
enumerable: true,
value: null,
},
attributeNameCheck: {
writable: true,
configurable: false,
enumerable: true,
value: null,
},
allowCustomizedBuiltInElements: {
writable: true,
configurable: false,
enumerable: true,
value: false,
},
})
)
var FORBID_TAGS = null
var FORBID_ATTR = null
var ALLOW_ARIA_ATTR = true
var ALLOW_DATA_ATTR = true
var ALLOW_UNKNOWN_PROTOCOLS = false
var ALLOW_SELF_CLOSE_IN_ATTR = true
var SAFE_FOR_TEMPLATES = false
var WHOLE_DOCUMENT = false
var SET_CONFIG = false
var FORCE_BODY = false
var RETURN_DOM = false
var RETURN_DOM_FRAGMENT = false
var RETURN_TRUSTED_TYPE = false
var SANITIZE_DOM = true
var SANITIZE_NAMED_PROPS = false
var SANITIZE_NAMED_PROPS_PREFIX = 'user-content-'
var KEEP_CONTENT = true
var IN_PLACE = false
var USE_PROFILES = {}
var FORBID_CONTENTS = null
var DEFAULT_FORBID_CONTENTS = addToSet({}, [
'annotation-xml',
'audio',
'colgroup',
'desc',
'foreignobject',
'head',
'iframe',
'math',
'mi',
'mn',
'mo',
'ms',
'mtext',
'noembed',
'noframes',
'noscript',
'plaintext',
'script',
'style',
'svg',
'template',
'thead',
'title',
'video',
'xmp',
])
var DATA_URI_TAGS = null
var DEFAULT_DATA_URI_TAGS = addToSet({}, [
'audio',
'video',
'img',
'source',
'image',
'track',
])
var URI_SAFE_ATTRIBUTES = null
var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [
'alt',
'class',
'for',
'id',
'label',
'name',
'pattern',
'placeholder',
'role',
'summary',
'title',
'value',
'style',
'xmlns',
])
var MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML'
var SVG_NAMESPACE = 'http://www.w3.org/2000/svg'
var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml'
var NAMESPACE = HTML_NAMESPACE
var IS_EMPTY_INPUT = false
var ALLOWED_NAMESPACES = null
var DEFAULT_ALLOWED_NAMESPACES = addToSet(
{},
[MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE],
stringToString
)
var PARSER_MEDIA_TYPE
var SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html']
var DEFAULT_PARSER_MEDIA_TYPE = 'text/html'
var transformCaseFunc
var CONFIG = null
var formElement = document2.createElement('form')
var isRegexOrFunction = function isRegexOrFunction2(testValue) {
return testValue instanceof RegExp || testValue instanceof Function
}
var _parseConfig = function _parseConfig2(cfg) {
if (CONFIG && CONFIG === cfg) {
return
}
if (!cfg || _typeof$2(cfg) !== 'object') {
cfg = {}
}
cfg = clone$6(cfg)
PARSER_MEDIA_TYPE =
SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1
? (PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE)
: (PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE)
transformCaseFunc =
PARSER_MEDIA_TYPE === 'application/xhtml+xml'
? stringToString
: stringToLowerCase
ALLOWED_TAGS =
'ALLOWED_TAGS' in cfg
? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc)
: DEFAULT_ALLOWED_TAGS
ALLOWED_ATTR =
'ALLOWED_ATTR' in cfg
? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc)
: DEFAULT_ALLOWED_ATTR
ALLOWED_NAMESPACES =
'ALLOWED_NAMESPACES' in cfg
? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString)
: DEFAULT_ALLOWED_NAMESPACES
URI_SAFE_ATTRIBUTES =
'ADD_URI_SAFE_ATTR' in cfg
? addToSet(
clone$6(DEFAULT_URI_SAFE_ATTRIBUTES),
cfg.ADD_URI_SAFE_ATTR,
transformCaseFunc
)
: DEFAULT_URI_SAFE_ATTRIBUTES
DATA_URI_TAGS =
'ADD_DATA_URI_TAGS' in cfg
? addToSet(
clone$6(DEFAULT_DATA_URI_TAGS),
cfg.ADD_DATA_URI_TAGS,
transformCaseFunc
)
: DEFAULT_DATA_URI_TAGS
FORBID_CONTENTS =
'FORBID_CONTENTS' in cfg
? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc)
: DEFAULT_FORBID_CONTENTS
FORBID_TAGS =
'FORBID_TAGS' in cfg
? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc)
: {}
FORBID_ATTR =
'FORBID_ATTR' in cfg
? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc)
: {}
USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false
ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false
ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false
ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false
ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false
SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false
WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false
RETURN_DOM = cfg.RETURN_DOM || false
RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false
RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false
FORCE_BODY = cfg.FORCE_BODY || false
SANITIZE_DOM = cfg.SANITIZE_DOM !== false
SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false
KEEP_CONTENT = cfg.KEEP_CONTENT !== false
IN_PLACE = cfg.IN_PLACE || false
IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$1
NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE
CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {}
if (
cfg.CUSTOM_ELEMENT_HANDLING &&
isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)
) {
CUSTOM_ELEMENT_HANDLING.tagNameCheck =
cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck
}
if (
cfg.CUSTOM_ELEMENT_HANDLING &&
isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)
) {
CUSTOM_ELEMENT_HANDLING.attributeNameCheck =
cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck
}
if (
cfg.CUSTOM_ELEMENT_HANDLING &&
typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements ===
'boolean'
) {
CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements =
cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements
}
if (SAFE_FOR_TEMPLATES) {
ALLOW_DATA_ATTR = false
}
if (RETURN_DOM_FRAGMENT) {
RETURN_DOM = true
}
if (USE_PROFILES) {
ALLOWED_TAGS = addToSet({}, _toConsumableArray(text$1))
ALLOWED_ATTR = []
if (USE_PROFILES.html === true) {
addToSet(ALLOWED_TAGS, html$1$1)
addToSet(ALLOWED_ATTR, html$3)
}
if (USE_PROFILES.svg === true) {
addToSet(ALLOWED_TAGS, svg$1)
addToSet(ALLOWED_ATTR, svg)
addToSet(ALLOWED_ATTR, xml)
}
if (USE_PROFILES.svgFilters === true) {
addToSet(ALLOWED_TAGS, svgFilters)
addToSet(ALLOWED_ATTR, svg)
addToSet(ALLOWED_ATTR, xml)
}
if (USE_PROFILES.mathMl === true) {
addToSet(ALLOWED_TAGS, mathMl$1)
addToSet(ALLOWED_ATTR, mathMl)
addToSet(ALLOWED_ATTR, xml)
}
}
if (cfg.ADD_TAGS) {
if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {
ALLOWED_TAGS = clone$6(ALLOWED_TAGS)
}
addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc)
}
if (cfg.ADD_ATTR) {
if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {
ALLOWED_ATTR = clone$6(ALLOWED_ATTR)
}
addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc)
}
if (cfg.ADD_URI_SAFE_ATTR) {
addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc)
}
if (cfg.FORBID_CONTENTS) {
if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {
FORBID_CONTENTS = clone$6(FORBID_CONTENTS)
}
addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc)
}
if (KEEP_CONTENT) {
ALLOWED_TAGS['#text'] = true
}
if (WHOLE_DOCUMENT) {
addToSet(ALLOWED_TAGS, ['html', 'head', 'body'])
}
if (ALLOWED_TAGS.table) {
addToSet(ALLOWED_TAGS, ['tbody'])
delete FORBID_TAGS.tbody
}
if (freeze) {
freeze(cfg)
}
CONFIG = cfg
}
var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, [
'mi',
'mo',
'mn',
'ms',
'mtext',
])
var HTML_INTEGRATION_POINTS = addToSet({}, [
'foreignobject',
'desc',
'title',
'annotation-xml',
])
var COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [
'title',
'style',
'font',
'a',
'script',
])
var ALL_SVG_TAGS = addToSet({}, svg$1)
addToSet(ALL_SVG_TAGS, svgFilters)
addToSet(ALL_SVG_TAGS, svgDisallowed)
var ALL_MATHML_TAGS = addToSet({}, mathMl$1)
addToSet(ALL_MATHML_TAGS, mathMlDisallowed)
var _checkValidNamespace = function _checkValidNamespace2(element) {
var parent2 = getParentNode2(element)
if (!parent2 || !parent2.tagName) {
parent2 = {
namespaceURI: NAMESPACE,
tagName: 'template',
}
}
var tagName = stringToLowerCase(element.tagName)
var parentTagName = stringToLowerCase(parent2.tagName)
if (!ALLOWED_NAMESPACES[element.namespaceURI]) {
return false
}
if (element.namespaceURI === SVG_NAMESPACE) {
if (parent2.namespaceURI === HTML_NAMESPACE) {
return tagName === 'svg'
}
if (parent2.namespaceURI === MATHML_NAMESPACE) {
return (
tagName === 'svg' &&
(parentTagName === 'annotation-xml' ||
MATHML_TEXT_INTEGRATION_POINTS[parentTagName])
)
}
return Boolean(ALL_SVG_TAGS[tagName])
}
if (element.namespaceURI === MATHML_NAMESPACE) {
if (parent2.namespaceURI === HTML_NAMESPACE) {
return tagName === 'math'
}
if (parent2.namespaceURI === SVG_NAMESPACE) {
return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName]
}
return Boolean(ALL_MATHML_TAGS[tagName])
}
if (element.namespaceURI === HTML_NAMESPACE) {
if (
parent2.namespaceURI === SVG_NAMESPACE &&
!HTML_INTEGRATION_POINTS[parentTagName]
) {
return false
}
if (
parent2.namespaceURI === MATHML_NAMESPACE &&
!MATHML_TEXT_INTEGRATION_POINTS[parentTagName]
) {
return false
}
return (
!ALL_MATHML_TAGS[tagName] &&
(COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName])
)
}
if (
PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&
ALLOWED_NAMESPACES[element.namespaceURI]
) {
return true
}
return false
}
var _forceRemove = function _forceRemove2(node2) {
arrayPush$3(DOMPurify.removed, {
element: node2,
})
try {
node2.parentNode.removeChild(node2)
} catch (_2) {
try {
node2.outerHTML = emptyHTML
} catch (_3) {
node2.remove()
}
}
}
var _removeAttribute = function _removeAttribute2(name2, node2) {
try {
arrayPush$3(DOMPurify.removed, {
attribute: node2.getAttributeNode(name2),
from: node2,
})
} catch (_2) {
arrayPush$3(DOMPurify.removed, {
attribute: null,
from: node2,
})
}
node2.removeAttribute(name2)
if (name2 === 'is' && !ALLOWED_ATTR[name2]) {
if (RETURN_DOM || RETURN_DOM_FRAGMENT) {
try {
_forceRemove(node2)
} catch (_2) {}
} else {
try {
node2.setAttribute(name2, '')
} catch (_2) {}
}
}
}
var _initDocument = function _initDocument2(dirty) {
var doc
var leadingWhitespace
if (FORCE_BODY) {
dirty = '' + dirty
} else {
var matches2 = stringMatch(dirty, /^[\r\n\t ]+/)
leadingWhitespace = matches2 && matches2[0]
}
if (
PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&
NAMESPACE === HTML_NAMESPACE
) {
dirty =
'' +
dirty +
''
}
var dirtyPayload = trustedTypesPolicy
? trustedTypesPolicy.createHTML(dirty)
: dirty
if (NAMESPACE === HTML_NAMESPACE) {
try {
doc = new DOMParser2().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE)
} catch (_2) {}
}
if (!doc || !doc.documentElement) {
doc = implementation.createDocument(NAMESPACE, 'template', null)
try {
doc.documentElement.innerHTML = IS_EMPTY_INPUT
? emptyHTML
: dirtyPayload
} catch (_2) {}
}
var body = doc.body || doc.documentElement
if (dirty && leadingWhitespace) {
body.insertBefore(
document2.createTextNode(leadingWhitespace),
body.childNodes[0] || null
)
}
if (NAMESPACE === HTML_NAMESPACE) {
return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0]
}
return WHOLE_DOCUMENT ? doc.documentElement : body
}
var _createIterator = function _createIterator2(root2) {
return createNodeIterator.call(
root2.ownerDocument || root2,
root2,
NodeFilter2.SHOW_ELEMENT |
NodeFilter2.SHOW_COMMENT |
NodeFilter2.SHOW_TEXT,
null,
false
)
}
var _isClobbered = function _isClobbered2(elm) {
return (
elm instanceof HTMLFormElement &&
(typeof elm.nodeName !== 'string' ||
typeof elm.textContent !== 'string' ||
typeof elm.removeChild !== 'function' ||
!(elm.attributes instanceof NamedNodeMap) ||
typeof elm.removeAttribute !== 'function' ||
typeof elm.setAttribute !== 'function' ||
typeof elm.namespaceURI !== 'string' ||
typeof elm.insertBefore !== 'function' ||
typeof elm.hasChildNodes !== 'function')
)
}
var _isNode = function _isNode2(object4) {
return _typeof$2(Node2) === 'object'
? object4 instanceof Node2
: object4 &&
_typeof$2(object4) === 'object' &&
typeof object4.nodeType === 'number' &&
typeof object4.nodeName === 'string'
}
var _executeHook = function _executeHook2(entryPoint, currentNode, data2) {
if (!hooks2[entryPoint]) {
return
}
arrayForEach(hooks2[entryPoint], function (hook) {
hook.call(DOMPurify, currentNode, data2, CONFIG)
})
}
var _sanitizeElements = function _sanitizeElements2(currentNode) {
var content2
_executeHook('beforeSanitizeElements', currentNode, null)
if (_isClobbered(currentNode)) {
_forceRemove(currentNode)
return true
}
if (regExpTest(/[\u0080-\uFFFF]/, currentNode.nodeName)) {
_forceRemove(currentNode)
return true
}
var tagName = transformCaseFunc(currentNode.nodeName)
_executeHook('uponSanitizeElement', currentNode, {
tagName,
allowedTags: ALLOWED_TAGS,
})
if (
currentNode.hasChildNodes() &&
!_isNode(currentNode.firstElementChild) &&
(!_isNode(currentNode.content) ||
!_isNode(currentNode.content.firstElementChild)) &&
regExpTest(/<[/\w]/g, currentNode.innerHTML) &&
regExpTest(/<[/\w]/g, currentNode.textContent)
) {
_forceRemove(currentNode)
return true
}
if (
tagName === 'select' &&
regExpTest(/= 0; --i2) {
parentNode2.insertBefore(
cloneNode2(childNodes[i2], true),
getNextSibling(currentNode)
)
}
}
}
_forceRemove(currentNode)
return true
}
if (currentNode instanceof Element2 && !_checkValidNamespace(currentNode)) {
_forceRemove(currentNode)
return true
}
if (
(tagName === 'noscript' ||
tagName === 'noembed' ||
tagName === 'noframes') &&
regExpTest(/<\/no(script|embed|frames)/i, currentNode.innerHTML)
) {
_forceRemove(currentNode)
return true
}
if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {
content2 = currentNode.textContent
content2 = stringReplace(content2, MUSTACHE_EXPR$1, ' ')
content2 = stringReplace(content2, ERB_EXPR$1, ' ')
content2 = stringReplace(content2, TMPLIT_EXPR$1, ' ')
if (currentNode.textContent !== content2) {
arrayPush$3(DOMPurify.removed, {
element: currentNode.cloneNode(),
})
currentNode.textContent = content2
}
}
_executeHook('afterSanitizeElements', currentNode, null)
return false
}
var _isValidAttribute = function _isValidAttribute2(lcTag, lcName, value2) {
if (
SANITIZE_DOM &&
(lcName === 'id' || lcName === 'name') &&
(value2 in document2 || value2 in formElement)
) {
return false
}
if (
ALLOW_DATA_ATTR &&
!FORBID_ATTR[lcName] &&
regExpTest(DATA_ATTR$1, lcName)
);
else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$1, lcName));
else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {
if (
(_basicCustomElementTest(lcTag) &&
((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&
regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag)) ||
(CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&
CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag))) &&
((CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp &&
regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName)) ||
(CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function &&
CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)))) ||
(lcName === 'is' &&
CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements &&
((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&
regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value2)) ||
(CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&
CUSTOM_ELEMENT_HANDLING.tagNameCheck(value2))))
);
else {
return false
}
} else if (URI_SAFE_ATTRIBUTES[lcName]);
else if (
regExpTest(IS_ALLOWED_URI$1, stringReplace(value2, ATTR_WHITESPACE$1, ''))
);
else if (
(lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') &&
lcTag !== 'script' &&
stringIndexOf$2(value2, 'data:') === 0 &&
DATA_URI_TAGS[lcTag]
);
else if (
ALLOW_UNKNOWN_PROTOCOLS &&
!regExpTest(
IS_SCRIPT_OR_DATA$1,
stringReplace(value2, ATTR_WHITESPACE$1, '')
)
);
else if (value2) {
return false
} else;
return true
}
var _basicCustomElementTest = function _basicCustomElementTest2(tagName) {
return tagName.indexOf('-') > 0
}
var _sanitizeAttributes = function _sanitizeAttributes2(currentNode) {
var attr
var value2
var lcName
var l2
_executeHook('beforeSanitizeAttributes', currentNode, null)
var attributes2 = currentNode.attributes
if (!attributes2) {
return
}
var hookEvent = {
attrName: '',
attrValue: '',
keepAttr: true,
allowedAttributes: ALLOWED_ATTR,
}
l2 = attributes2.length
while (l2--) {
attr = attributes2[l2]
var _attr = attr,
name2 = _attr.name,
namespaceURI = _attr.namespaceURI
value2 = name2 === 'value' ? attr.value : stringTrim$1(attr.value)
lcName = transformCaseFunc(name2)
hookEvent.attrName = lcName
hookEvent.attrValue = value2
hookEvent.keepAttr = true
hookEvent.forceKeepAttr = void 0
_executeHook('uponSanitizeAttribute', currentNode, hookEvent)
value2 = hookEvent.attrValue
if (hookEvent.forceKeepAttr) {
continue
}
_removeAttribute(name2, currentNode)
if (!hookEvent.keepAttr) {
continue
}
if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\/>/i, value2)) {
_removeAttribute(name2, currentNode)
continue
}
if (SAFE_FOR_TEMPLATES) {
value2 = stringReplace(value2, MUSTACHE_EXPR$1, ' ')
value2 = stringReplace(value2, ERB_EXPR$1, ' ')
value2 = stringReplace(value2, TMPLIT_EXPR$1, ' ')
}
var lcTag = transformCaseFunc(currentNode.nodeName)
if (!_isValidAttribute(lcTag, lcName, value2)) {
continue
}
if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {
_removeAttribute(name2, currentNode)
value2 = SANITIZE_NAMED_PROPS_PREFIX + value2
}
if (
trustedTypesPolicy &&
_typeof$2(trustedTypes) === 'object' &&
typeof trustedTypes.getAttributeType === 'function'
) {
if (namespaceURI);
else {
switch (trustedTypes.getAttributeType(lcTag, lcName)) {
case 'TrustedHTML': {
value2 = trustedTypesPolicy.createHTML(value2)
break
}
case 'TrustedScriptURL': {
value2 = trustedTypesPolicy.createScriptURL(value2)
break
}
}
}
}
try {
if (namespaceURI) {
currentNode.setAttributeNS(namespaceURI, name2, value2)
} else {
currentNode.setAttribute(name2, value2)
}
arrayPop(DOMPurify.removed)
} catch (_2) {}
}
_executeHook('afterSanitizeAttributes', currentNode, null)
}
var _sanitizeShadowDOM = function _sanitizeShadowDOM2(fragment) {
var shadowNode
var shadowIterator = _createIterator(fragment)
_executeHook('beforeSanitizeShadowDOM', fragment, null)
while ((shadowNode = shadowIterator.nextNode())) {
_executeHook('uponSanitizeShadowNode', shadowNode, null)
if (_sanitizeElements(shadowNode)) {
continue
}
if (shadowNode.content instanceof DocumentFragment) {
_sanitizeShadowDOM2(shadowNode.content)
}
_sanitizeAttributes(shadowNode)
}
_executeHook('afterSanitizeShadowDOM', fragment, null)
}
DOMPurify.sanitize = function (dirty) {
var cfg =
arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}
var body
var importedNode
var currentNode
var oldNode
var returnNode
IS_EMPTY_INPUT = !dirty
if (IS_EMPTY_INPUT) {
dirty = ''
}
if (typeof dirty !== 'string' && !_isNode(dirty)) {
if (typeof dirty.toString === 'function') {
dirty = dirty.toString()
if (typeof dirty !== 'string') {
throw typeErrorCreate('dirty is not a string, aborting')
}
} else {
throw typeErrorCreate('toString is not a function')
}
}
if (!DOMPurify.isSupported) {
if (
_typeof$2(window2.toStaticHTML) === 'object' ||
typeof window2.toStaticHTML === 'function'
) {
if (typeof dirty === 'string') {
return window2.toStaticHTML(dirty)
}
if (_isNode(dirty)) {
return window2.toStaticHTML(dirty.outerHTML)
}
}
return dirty
}
if (!SET_CONFIG) {
_parseConfig(cfg)
}
DOMPurify.removed = []
if (typeof dirty === 'string') {
IN_PLACE = false
}
if (IN_PLACE) {
if (dirty.nodeName) {
var tagName = transformCaseFunc(dirty.nodeName)
if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {
throw typeErrorCreate(
'root node is forbidden and cannot be sanitized in-place'
)
}
}
} else if (dirty instanceof Node2) {
body = _initDocument('')
importedNode = body.ownerDocument.importNode(dirty, true)
if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {
body = importedNode
} else if (importedNode.nodeName === 'HTML') {
body = importedNode
} else {
body.appendChild(importedNode)
}
} else {
if (
!RETURN_DOM &&
!SAFE_FOR_TEMPLATES &&
!WHOLE_DOCUMENT &&
dirty.indexOf('<') === -1
) {
return trustedTypesPolicy && RETURN_TRUSTED_TYPE
? trustedTypesPolicy.createHTML(dirty)
: dirty
}
body = _initDocument(dirty)
if (!body) {
return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : ''
}
}
if (body && FORCE_BODY) {
_forceRemove(body.firstChild)
}
var nodeIterator = _createIterator(IN_PLACE ? dirty : body)
while ((currentNode = nodeIterator.nextNode())) {
if (currentNode.nodeType === 3 && currentNode === oldNode) {
continue
}
if (_sanitizeElements(currentNode)) {
continue
}
if (currentNode.content instanceof DocumentFragment) {
_sanitizeShadowDOM(currentNode.content)
}
_sanitizeAttributes(currentNode)
oldNode = currentNode
}
oldNode = null
if (IN_PLACE) {
return dirty
}
if (RETURN_DOM) {
if (RETURN_DOM_FRAGMENT) {
returnNode = createDocumentFragment.call(body.ownerDocument)
while (body.firstChild) {
returnNode.appendChild(body.firstChild)
}
} else {
returnNode = body
}
if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmod) {
returnNode = importNode.call(originalDocument, returnNode, true)
}
return returnNode
}
var serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML
if (
WHOLE_DOCUMENT &&
ALLOWED_TAGS['!doctype'] &&
body.ownerDocument &&
body.ownerDocument.doctype &&
body.ownerDocument.doctype.name &&
regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)
) {
serializedHTML =
'\n' + serializedHTML
}
if (SAFE_FOR_TEMPLATES) {
serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR$1, ' ')
serializedHTML = stringReplace(serializedHTML, ERB_EXPR$1, ' ')
serializedHTML = stringReplace(serializedHTML, TMPLIT_EXPR$1, ' ')
}
return trustedTypesPolicy && RETURN_TRUSTED_TYPE
? trustedTypesPolicy.createHTML(serializedHTML)
: serializedHTML
}
DOMPurify.setConfig = function (cfg) {
_parseConfig(cfg)
SET_CONFIG = true
}
DOMPurify.clearConfig = function () {
CONFIG = null
SET_CONFIG = false
}
DOMPurify.isValidAttribute = function (tag, attr, value2) {
if (!CONFIG) {
_parseConfig({})
}
var lcTag = transformCaseFunc(tag)
var lcName = transformCaseFunc(attr)
return _isValidAttribute(lcTag, lcName, value2)
}
DOMPurify.addHook = function (entryPoint, hookFunction) {
if (typeof hookFunction !== 'function') {
return
}
hooks2[entryPoint] = hooks2[entryPoint] || []
arrayPush$3(hooks2[entryPoint], hookFunction)
}
DOMPurify.removeHook = function (entryPoint) {
if (hooks2[entryPoint]) {
return arrayPop(hooks2[entryPoint])
}
}
DOMPurify.removeHooks = function (entryPoint) {
if (hooks2[entryPoint]) {
hooks2[entryPoint] = []
}
}
DOMPurify.removeAllHooks = function () {
hooks2 = {}
}
return DOMPurify
}
var purify = createDOMPurify()
var purify_es = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: purify,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var check = function (it2) {
return it2 && it2.Math === Math && it2
}
var global$l =
check(typeof globalThis == 'object' && globalThis) ||
check(typeof window == 'object' && window) ||
check(typeof self == 'object' && self) ||
check(typeof commonjsGlobal == 'object' && commonjsGlobal) ||
(function () {
return this
})() ||
commonjsGlobal ||
Function('return this')()
var objectGetOwnPropertyDescriptor = {}
var fails$l = function (exec2) {
try {
return !!exec2()
} catch (error2) {
return true
}
}
var fails$k = fails$l
var descriptors = !fails$k(function () {
return (
Object.defineProperty({}, 1, {
get: function () {
return 7
},
})[1] !== 7
)
})
var fails$j = fails$l
var functionBindNative = !fails$j(function () {
var test2 = function () {}.bind()
return typeof test2 != 'function' || test2.hasOwnProperty('prototype')
})
var NATIVE_BIND$3 = functionBindNative
var call$j = Function.prototype.call
var functionCall = NATIVE_BIND$3
? call$j.bind(call$j)
: function () {
return call$j.apply(call$j, arguments)
}
var objectPropertyIsEnumerable = {}
var $propertyIsEnumerable = {}.propertyIsEnumerable
var getOwnPropertyDescriptor$4 = Object.getOwnPropertyDescriptor
var NASHORN_BUG =
getOwnPropertyDescriptor$4 && !$propertyIsEnumerable.call({ 1: 2 }, 1)
objectPropertyIsEnumerable.f = NASHORN_BUG
? function propertyIsEnumerable2(V2) {
var descriptor = getOwnPropertyDescriptor$4(this, V2)
return !!descriptor && descriptor.enumerable
}
: $propertyIsEnumerable
var createPropertyDescriptor$4 = function (bitmap, value2) {
return {
enumerable: !(bitmap & 1),
configurable: !(bitmap & 2),
writable: !(bitmap & 4),
value: value2,
}
}
var NATIVE_BIND$2 = functionBindNative
var FunctionPrototype$2 = Function.prototype
var call$i = FunctionPrototype$2.call
var uncurryThisWithBind =
NATIVE_BIND$2 && FunctionPrototype$2.bind.bind(call$i, call$i)
var functionUncurryThis = NATIVE_BIND$2
? uncurryThisWithBind
: function (fn2) {
return function () {
return call$i.apply(fn2, arguments)
}
}
var uncurryThis$p = functionUncurryThis
var toString$b = uncurryThis$p({}.toString)
var stringSlice$7 = uncurryThis$p(''.slice)
var classofRaw$2 = function (it2) {
return stringSlice$7(toString$b(it2), 8, -1)
}
var uncurryThis$o = functionUncurryThis
var fails$i = fails$l
var classof$8 = classofRaw$2
var $Object$4 = Object
var split$1 = uncurryThis$o(''.split)
var indexedObject = fails$i(function () {
return !$Object$4('z').propertyIsEnumerable(0)
})
? function (it2) {
return classof$8(it2) === 'String' ? split$1(it2, '') : $Object$4(it2)
}
: $Object$4
var isNullOrUndefined$7 = function (it2) {
return it2 === null || it2 === void 0
}
var isNullOrUndefined$6 = isNullOrUndefined$7
var $TypeError$f = TypeError
var requireObjectCoercible$a = function (it2) {
if (isNullOrUndefined$6(it2))
throw new $TypeError$f("Can't call method on " + it2)
return it2
}
var IndexedObject$1 = indexedObject
var requireObjectCoercible$9 = requireObjectCoercible$a
var toIndexedObject$5 = function (it2) {
return IndexedObject$1(requireObjectCoercible$9(it2))
}
var documentAll$2 = typeof document == 'object' && document.all
var IS_HTMLDDA = typeof documentAll$2 == 'undefined' && documentAll$2 !== void 0
var documentAll_1 = {
all: documentAll$2,
IS_HTMLDDA,
}
var $documentAll$1 = documentAll_1
var documentAll$1 = $documentAll$1.all
var isCallable$m = $documentAll$1.IS_HTMLDDA
? function (argument) {
return typeof argument == 'function' || argument === documentAll$1
}
: function (argument) {
return typeof argument == 'function'
}
var isCallable$l = isCallable$m
var $documentAll = documentAll_1
var documentAll = $documentAll.all
var isObject$l = $documentAll.IS_HTMLDDA
? function (it2) {
return typeof it2 == 'object'
? it2 !== null
: isCallable$l(it2) || it2 === documentAll
}
: function (it2) {
return typeof it2 == 'object' ? it2 !== null : isCallable$l(it2)
}
var global$k = global$l
var isCallable$k = isCallable$m
var aFunction = function (argument) {
return isCallable$k(argument) ? argument : void 0
}
var getBuiltIn$7 = function (namespace, method4) {
return arguments.length < 2
? aFunction(global$k[namespace])
: global$k[namespace] && global$k[namespace][method4]
}
var uncurryThis$n = functionUncurryThis
var objectIsPrototypeOf = uncurryThis$n({}.isPrototypeOf)
var engineUserAgent =
(typeof navigator != 'undefined' && String(navigator.userAgent)) || ''
var global$j = global$l
var userAgent$4 = engineUserAgent
var process$4 = global$j.process
var Deno$1 = global$j.Deno
var versions = (process$4 && process$4.versions) || (Deno$1 && Deno$1.version)
var v8 = versions && versions.v8
var match, version$4
if (v8) {
match = v8.split('.')
version$4 = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1])
}
if (!version$4 && userAgent$4) {
match = userAgent$4.match(/Edge\/(\d+)/)
if (!match || match[1] >= 74) {
match = userAgent$4.match(/Chrome\/(\d+)/)
if (match) version$4 = +match[1]
}
}
var engineV8Version = version$4
var V8_VERSION$1 = engineV8Version
var fails$h = fails$l
var global$i = global$l
var $String$5 = global$i.String
var symbolConstructorDetection =
!!Object.getOwnPropertySymbols &&
!fails$h(function () {
var symbol = Symbol('symbol detection')
return (
!$String$5(symbol) ||
!(Object(symbol) instanceof Symbol) ||
(!Symbol.sham && V8_VERSION$1 && V8_VERSION$1 < 41)
)
})
var NATIVE_SYMBOL$1 = symbolConstructorDetection
var useSymbolAsUid =
NATIVE_SYMBOL$1 && !Symbol.sham && typeof Symbol.iterator == 'symbol'
var getBuiltIn$6 = getBuiltIn$7
var isCallable$j = isCallable$m
var isPrototypeOf$3 = objectIsPrototypeOf
var USE_SYMBOL_AS_UID$1 = useSymbolAsUid
var $Object$3 = Object
var isSymbol$2 = USE_SYMBOL_AS_UID$1
? function (it2) {
return typeof it2 == 'symbol'
}
: function (it2) {
var $Symbol = getBuiltIn$6('Symbol')
return (
isCallable$j($Symbol) &&
isPrototypeOf$3($Symbol.prototype, $Object$3(it2))
)
}
var $String$4 = String
var tryToString$4 = function (argument) {
try {
return $String$4(argument)
} catch (error2) {
return 'Object'
}
}
var isCallable$i = isCallable$m
var tryToString$3 = tryToString$4
var $TypeError$e = TypeError
var aCallable$9 = function (argument) {
if (isCallable$i(argument)) return argument
throw new $TypeError$e(tryToString$3(argument) + ' is not a function')
}
var aCallable$8 = aCallable$9
var isNullOrUndefined$5 = isNullOrUndefined$7
var getMethod$6 = function (V2, P2) {
var func = V2[P2]
return isNullOrUndefined$5(func) ? void 0 : aCallable$8(func)
}
var call$h = functionCall
var isCallable$h = isCallable$m
var isObject$k = isObject$l
var $TypeError$d = TypeError
var ordinaryToPrimitive$1 = function (input, pref) {
var fn2, val2
if (
pref === 'string' &&
isCallable$h((fn2 = input.toString)) &&
!isObject$k((val2 = call$h(fn2, input)))
)
return val2
if (
isCallable$h((fn2 = input.valueOf)) &&
!isObject$k((val2 = call$h(fn2, input)))
)
return val2
if (
pref !== 'string' &&
isCallable$h((fn2 = input.toString)) &&
!isObject$k((val2 = call$h(fn2, input)))
)
return val2
throw new $TypeError$d("Can't convert object to primitive value")
}
var shared$4 = { exports: {} }
var global$h = global$l
var defineProperty$7 = Object.defineProperty
var defineGlobalProperty$3 = function (key2, value2) {
try {
defineProperty$7(global$h, key2, {
value: value2,
configurable: true,
writable: true,
})
} catch (error2) {
global$h[key2] = value2
}
return value2
}
var global$g = global$l
var defineGlobalProperty$2 = defineGlobalProperty$3
var SHARED = '__core-js_shared__'
var store$4 = global$g[SHARED] || defineGlobalProperty$2(SHARED, {})
var sharedStore = store$4
var store$3 = sharedStore
;(shared$4.exports = function (key2, value2) {
return store$3[key2] || (store$3[key2] = value2 !== void 0 ? value2 : {})
})('versions', []).push({
version: '3.33.2',
mode: 'global',
copyright: '\xA9 2014-2023 Denis Pushkarev (zloirock.ru)',
license: 'https://github.com/zloirock/core-js/blob/v3.33.2/LICENSE',
source: 'https://github.com/zloirock/core-js',
})
var requireObjectCoercible$8 = requireObjectCoercible$a
var $Object$2 = Object
var toObject$4 = function (argument) {
return $Object$2(requireObjectCoercible$8(argument))
}
var uncurryThis$m = functionUncurryThis
var toObject$3 = toObject$4
var hasOwnProperty$b = uncurryThis$m({}.hasOwnProperty)
var hasOwnProperty_1 =
Object.hasOwn ||
function hasOwn2(it2, key2) {
return hasOwnProperty$b(toObject$3(it2), key2)
}
var uncurryThis$l = functionUncurryThis
var id$1 = 0
var postfix = Math.random()
var toString$a = uncurryThis$l((1).toString)
var uid$2 = function (key2) {
return (
'Symbol(' +
(key2 === void 0 ? '' : key2) +
')_' +
toString$a(++id$1 + postfix, 36)
)
}
var global$f = global$l
var shared$3 = shared$4.exports
var hasOwn$c = hasOwnProperty_1
var uid$1 = uid$2
var NATIVE_SYMBOL = symbolConstructorDetection
var USE_SYMBOL_AS_UID = useSymbolAsUid
var Symbol$6 = global$f.Symbol
var WellKnownSymbolsStore = shared$3('wks')
var createWellKnownSymbol = USE_SYMBOL_AS_UID
? Symbol$6['for'] || Symbol$6
: (Symbol$6 && Symbol$6.withoutSetter) || uid$1
var wellKnownSymbol$i = function (name2) {
if (!hasOwn$c(WellKnownSymbolsStore, name2)) {
WellKnownSymbolsStore[name2] =
NATIVE_SYMBOL && hasOwn$c(Symbol$6, name2)
? Symbol$6[name2]
: createWellKnownSymbol('Symbol.' + name2)
}
return WellKnownSymbolsStore[name2]
}
var call$g = functionCall
var isObject$j = isObject$l
var isSymbol$1 = isSymbol$2
var getMethod$5 = getMethod$6
var ordinaryToPrimitive = ordinaryToPrimitive$1
var wellKnownSymbol$h = wellKnownSymbol$i
var $TypeError$c = TypeError
var TO_PRIMITIVE = wellKnownSymbol$h('toPrimitive')
var toPrimitive$1 = function (input, pref) {
if (!isObject$j(input) || isSymbol$1(input)) return input
var exoticToPrim = getMethod$5(input, TO_PRIMITIVE)
var result
if (exoticToPrim) {
if (pref === void 0) pref = 'default'
result = call$g(exoticToPrim, input, pref)
if (!isObject$j(result) || isSymbol$1(result)) return result
throw new $TypeError$c("Can't convert object to primitive value")
}
if (pref === void 0) pref = 'number'
return ordinaryToPrimitive(input, pref)
}
var toPrimitive = toPrimitive$1
var isSymbol = isSymbol$2
var toPropertyKey$3 = function (argument) {
var key2 = toPrimitive(argument, 'string')
return isSymbol(key2) ? key2 : key2 + ''
}
var global$e = global$l
var isObject$i = isObject$l
var document$3 = global$e.document
var EXISTS$1 = isObject$i(document$3) && isObject$i(document$3.createElement)
var documentCreateElement$2 = function (it2) {
return EXISTS$1 ? document$3.createElement(it2) : {}
}
var DESCRIPTORS$9 = descriptors
var fails$g = fails$l
var createElement$2 = documentCreateElement$2
var ie8DomDefine =
!DESCRIPTORS$9 &&
!fails$g(function () {
return (
Object.defineProperty(createElement$2('div'), 'a', {
get: function () {
return 7
},
}).a !== 7
)
})
var DESCRIPTORS$8 = descriptors
var call$f = functionCall
var propertyIsEnumerableModule = objectPropertyIsEnumerable
var createPropertyDescriptor$3 = createPropertyDescriptor$4
var toIndexedObject$4 = toIndexedObject$5
var toPropertyKey$2 = toPropertyKey$3
var hasOwn$b = hasOwnProperty_1
var IE8_DOM_DEFINE$1 = ie8DomDefine
var $getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor
objectGetOwnPropertyDescriptor.f = DESCRIPTORS$8
? $getOwnPropertyDescriptor$1
: function getOwnPropertyDescriptor2(O2, P2) {
O2 = toIndexedObject$4(O2)
P2 = toPropertyKey$2(P2)
if (IE8_DOM_DEFINE$1)
try {
return $getOwnPropertyDescriptor$1(O2, P2)
} catch (error2) {}
if (hasOwn$b(O2, P2))
return createPropertyDescriptor$3(
!call$f(propertyIsEnumerableModule.f, O2, P2),
O2[P2]
)
}
var objectDefineProperty = {}
var DESCRIPTORS$7 = descriptors
var fails$f = fails$l
var v8PrototypeDefineBug =
DESCRIPTORS$7 &&
fails$f(function () {
return (
Object.defineProperty(function () {}, 'prototype', {
value: 42,
writable: false,
}).prototype !== 42
)
})
var isObject$h = isObject$l
var $String$3 = String
var $TypeError$b = TypeError
var anObject$g = function (argument) {
if (isObject$h(argument)) return argument
throw new $TypeError$b($String$3(argument) + ' is not an object')
}
var DESCRIPTORS$6 = descriptors
var IE8_DOM_DEFINE = ie8DomDefine
var V8_PROTOTYPE_DEFINE_BUG$1 = v8PrototypeDefineBug
var anObject$f = anObject$g
var toPropertyKey$1 = toPropertyKey$3
var $TypeError$a = TypeError
var $defineProperty = Object.defineProperty
var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor
var ENUMERABLE = 'enumerable'
var CONFIGURABLE$1 = 'configurable'
var WRITABLE = 'writable'
objectDefineProperty.f = DESCRIPTORS$6
? V8_PROTOTYPE_DEFINE_BUG$1
? function defineProperty2(O2, P2, Attributes) {
anObject$f(O2)
P2 = toPropertyKey$1(P2)
anObject$f(Attributes)
if (
typeof O2 === 'function' &&
P2 === 'prototype' &&
'value' in Attributes &&
WRITABLE in Attributes &&
!Attributes[WRITABLE]
) {
var current2 = $getOwnPropertyDescriptor(O2, P2)
if (current2 && current2[WRITABLE]) {
O2[P2] = Attributes.value
Attributes = {
configurable:
CONFIGURABLE$1 in Attributes
? Attributes[CONFIGURABLE$1]
: current2[CONFIGURABLE$1],
enumerable:
ENUMERABLE in Attributes
? Attributes[ENUMERABLE]
: current2[ENUMERABLE],
writable: false,
}
}
}
return $defineProperty(O2, P2, Attributes)
}
: $defineProperty
: function defineProperty3(O2, P2, Attributes) {
anObject$f(O2)
P2 = toPropertyKey$1(P2)
anObject$f(Attributes)
if (IE8_DOM_DEFINE)
try {
return $defineProperty(O2, P2, Attributes)
} catch (error2) {}
if ('get' in Attributes || 'set' in Attributes)
throw new $TypeError$a('Accessors not supported')
if ('value' in Attributes) O2[P2] = Attributes.value
return O2
}
var DESCRIPTORS$5 = descriptors
var definePropertyModule$4 = objectDefineProperty
var createPropertyDescriptor$2 = createPropertyDescriptor$4
var createNonEnumerableProperty$5 = DESCRIPTORS$5
? function (object4, key2, value2) {
return definePropertyModule$4.f(
object4,
key2,
createPropertyDescriptor$2(1, value2)
)
}
: function (object4, key2, value2) {
object4[key2] = value2
return object4
}
var makeBuiltIn$3 = { exports: {} }
var DESCRIPTORS$4 = descriptors
var hasOwn$a = hasOwnProperty_1
var FunctionPrototype$1 = Function.prototype
var getDescriptor = DESCRIPTORS$4 && Object.getOwnPropertyDescriptor
var EXISTS = hasOwn$a(FunctionPrototype$1, 'name')
var PROPER = EXISTS && function something() {}.name === 'something'
var CONFIGURABLE =
EXISTS &&
(!DESCRIPTORS$4 ||
(DESCRIPTORS$4 && getDescriptor(FunctionPrototype$1, 'name').configurable))
var functionName = {
EXISTS,
PROPER,
CONFIGURABLE,
}
var uncurryThis$k = functionUncurryThis
var isCallable$g = isCallable$m
var store$2 = sharedStore
var functionToString = uncurryThis$k(Function.toString)
if (!isCallable$g(store$2.inspectSource)) {
store$2.inspectSource = function (it2) {
return functionToString(it2)
}
}
var inspectSource$3 = store$2.inspectSource
var global$d = global$l
var isCallable$f = isCallable$m
var WeakMap$6 = global$d.WeakMap
var weakMapBasicDetection =
isCallable$f(WeakMap$6) && /native code/.test(String(WeakMap$6))
var shared$2 = shared$4.exports
var uid = uid$2
var keys$5 = shared$2('keys')
var sharedKey$3 = function (key2) {
return keys$5[key2] || (keys$5[key2] = uid(key2))
}
var hiddenKeys$4 = {}
var NATIVE_WEAK_MAP = weakMapBasicDetection
var global$c = global$l
var isObject$g = isObject$l
var createNonEnumerableProperty$4 = createNonEnumerableProperty$5
var hasOwn$9 = hasOwnProperty_1
var shared$1 = sharedStore
var sharedKey$2 = sharedKey$3
var hiddenKeys$3 = hiddenKeys$4
var OBJECT_ALREADY_INITIALIZED = 'Object already initialized'
var TypeError$2 = global$c.TypeError
var WeakMap$5 = global$c.WeakMap
var set$3, get$1, has$2
var enforce = function (it2) {
return has$2(it2) ? get$1(it2) : set$3(it2, {})
}
var getterFor = function (TYPE) {
return function (it2) {
var state2
if (!isObject$g(it2) || (state2 = get$1(it2)).type !== TYPE) {
throw new TypeError$2('Incompatible receiver, ' + TYPE + ' required')
}
return state2
}
}
if (NATIVE_WEAK_MAP || shared$1.state) {
var store$1 = shared$1.state || (shared$1.state = new WeakMap$5())
store$1.get = store$1.get
store$1.has = store$1.has
store$1.set = store$1.set
set$3 = function (it2, metadata) {
if (store$1.has(it2)) throw new TypeError$2(OBJECT_ALREADY_INITIALIZED)
metadata.facade = it2
store$1.set(it2, metadata)
return metadata
}
get$1 = function (it2) {
return store$1.get(it2) || {}
}
has$2 = function (it2) {
return store$1.has(it2)
}
} else {
var STATE = sharedKey$2('state')
hiddenKeys$3[STATE] = true
set$3 = function (it2, metadata) {
if (hasOwn$9(it2, STATE)) throw new TypeError$2(OBJECT_ALREADY_INITIALIZED)
metadata.facade = it2
createNonEnumerableProperty$4(it2, STATE, metadata)
return metadata
}
get$1 = function (it2) {
return hasOwn$9(it2, STATE) ? it2[STATE] : {}
}
has$2 = function (it2) {
return hasOwn$9(it2, STATE)
}
}
var internalState = {
set: set$3,
get: get$1,
has: has$2,
enforce,
getterFor,
}
var uncurryThis$j = functionUncurryThis
var fails$e = fails$l
var isCallable$e = isCallable$m
var hasOwn$8 = hasOwnProperty_1
var DESCRIPTORS$3 = descriptors
var CONFIGURABLE_FUNCTION_NAME$1 = functionName.CONFIGURABLE
var inspectSource$2 = inspectSource$3
var InternalStateModule$2 = internalState
var enforceInternalState = InternalStateModule$2.enforce
var getInternalState$2 = InternalStateModule$2.get
var $String$2 = String
var defineProperty$6 = Object.defineProperty
var stringSlice$6 = uncurryThis$j(''.slice)
var replace$3 = uncurryThis$j(''.replace)
var join$2 = uncurryThis$j([].join)
var CONFIGURABLE_LENGTH =
DESCRIPTORS$3 &&
!fails$e(function () {
return defineProperty$6(function () {}, 'length', { value: 8 }).length !== 8
})
var TEMPLATE = String(String).split('String')
var makeBuiltIn$2 = (makeBuiltIn$3.exports = function (
value2,
name2,
options2
) {
if (stringSlice$6($String$2(name2), 0, 7) === 'Symbol(') {
name2 = '[' + replace$3($String$2(name2), /^Symbol\(([^)]*)\)/, '$1') + ']'
}
if (options2 && options2.getter) name2 = 'get ' + name2
if (options2 && options2.setter) name2 = 'set ' + name2
if (
!hasOwn$8(value2, 'name') ||
(CONFIGURABLE_FUNCTION_NAME$1 && value2.name !== name2)
) {
if (DESCRIPTORS$3)
defineProperty$6(value2, 'name', { value: name2, configurable: true })
else value2.name = name2
}
if (
CONFIGURABLE_LENGTH &&
options2 &&
hasOwn$8(options2, 'arity') &&
value2.length !== options2.arity
) {
defineProperty$6(value2, 'length', { value: options2.arity })
}
try {
if (options2 && hasOwn$8(options2, 'constructor') && options2.constructor) {
if (DESCRIPTORS$3)
defineProperty$6(value2, 'prototype', { writable: false })
} else if (value2.prototype) value2.prototype = void 0
} catch (error2) {}
var state2 = enforceInternalState(value2)
if (!hasOwn$8(state2, 'source')) {
state2.source = join$2(TEMPLATE, typeof name2 == 'string' ? name2 : '')
}
return value2
})
Function.prototype.toString = makeBuiltIn$2(function toString3() {
return (
(isCallable$e(this) && getInternalState$2(this).source) ||
inspectSource$2(this)
)
}, 'toString')
var isCallable$d = isCallable$m
var definePropertyModule$3 = objectDefineProperty
var makeBuiltIn$1 = makeBuiltIn$3.exports
var defineGlobalProperty$1 = defineGlobalProperty$3
var defineBuiltIn$7 = function (O2, key2, value2, options2) {
if (!options2) options2 = {}
var simple = options2.enumerable
var name2 = options2.name !== void 0 ? options2.name : key2
if (isCallable$d(value2)) makeBuiltIn$1(value2, name2, options2)
if (options2.global) {
if (simple) O2[key2] = value2
else defineGlobalProperty$1(key2, value2)
} else {
try {
if (!options2.unsafe) delete O2[key2]
else if (O2[key2]) simple = true
} catch (error2) {}
if (simple) O2[key2] = value2
else
definePropertyModule$3.f(O2, key2, {
value: value2,
enumerable: false,
configurable: !options2.nonConfigurable,
writable: !options2.nonWritable,
})
}
return O2
}
var objectGetOwnPropertyNames = {}
var ceil = Math.ceil
var floor$1 = Math.floor
var mathTrunc =
Math.trunc ||
function trunc2(x2) {
var n2 = +x2
return (n2 > 0 ? floor$1 : ceil)(n2)
}
var trunc = mathTrunc
var toIntegerOrInfinity$4 = function (argument) {
var number4 = +argument
return number4 !== number4 || number4 === 0 ? 0 : trunc(number4)
}
var toIntegerOrInfinity$3 = toIntegerOrInfinity$4
var max$5 = Math.max
var min$7 = Math.min
var toAbsoluteIndex$2 = function (index2, length2) {
var integer4 = toIntegerOrInfinity$3(index2)
return integer4 < 0 ? max$5(integer4 + length2, 0) : min$7(integer4, length2)
}
var toIntegerOrInfinity$2 = toIntegerOrInfinity$4
var min$6 = Math.min
var toLength$6 = function (argument) {
return argument > 0
? min$6(toIntegerOrInfinity$2(argument), 9007199254740991)
: 0
}
var toLength$5 = toLength$6
var lengthOfArrayLike$4 = function (obj) {
return toLength$5(obj.length)
}
var toIndexedObject$3 = toIndexedObject$5
var toAbsoluteIndex$1 = toAbsoluteIndex$2
var lengthOfArrayLike$3 = lengthOfArrayLike$4
var createMethod$3 = function (IS_INCLUDES) {
return function ($this, el2, fromIndex) {
var O2 = toIndexedObject$3($this)
var length2 = lengthOfArrayLike$3(O2)
var index2 = toAbsoluteIndex$1(fromIndex, length2)
var value2
if (IS_INCLUDES && el2 !== el2)
while (length2 > index2) {
value2 = O2[index2++]
if (value2 !== value2) return true
}
else
for (; length2 > index2; index2++) {
if ((IS_INCLUDES || index2 in O2) && O2[index2] === el2)
return IS_INCLUDES || index2 || 0
}
return !IS_INCLUDES && -1
}
}
var arrayIncludes = {
includes: createMethod$3(true),
indexOf: createMethod$3(false),
}
var uncurryThis$i = functionUncurryThis
var hasOwn$7 = hasOwnProperty_1
var toIndexedObject$2 = toIndexedObject$5
var indexOf$2 = arrayIncludes.indexOf
var hiddenKeys$2 = hiddenKeys$4
var push$3 = uncurryThis$i([].push)
var objectKeysInternal = function (object4, names2) {
var O2 = toIndexedObject$2(object4)
var i2 = 0
var result = []
var key2
for (key2 in O2)
!hasOwn$7(hiddenKeys$2, key2) && hasOwn$7(O2, key2) && push$3(result, key2)
while (names2.length > i2)
if (hasOwn$7(O2, (key2 = names2[i2++]))) {
~indexOf$2(result, key2) || push$3(result, key2)
}
return result
}
var enumBugKeys$3 = [
'constructor',
'hasOwnProperty',
'isPrototypeOf',
'propertyIsEnumerable',
'toLocaleString',
'toString',
'valueOf',
]
var internalObjectKeys$1 = objectKeysInternal
var enumBugKeys$2 = enumBugKeys$3
var hiddenKeys$1 = enumBugKeys$2.concat('length', 'prototype')
objectGetOwnPropertyNames.f =
Object.getOwnPropertyNames ||
function getOwnPropertyNames(O2) {
return internalObjectKeys$1(O2, hiddenKeys$1)
}
var objectGetOwnPropertySymbols = {}
objectGetOwnPropertySymbols.f = Object.getOwnPropertySymbols
var getBuiltIn$5 = getBuiltIn$7
var uncurryThis$h = functionUncurryThis
var getOwnPropertyNamesModule = objectGetOwnPropertyNames
var getOwnPropertySymbolsModule = objectGetOwnPropertySymbols
var anObject$e = anObject$g
var concat$1 = uncurryThis$h([].concat)
var ownKeys$5 =
getBuiltIn$5('Reflect', 'ownKeys') ||
function ownKeys2(it2) {
var keys3 = getOwnPropertyNamesModule.f(anObject$e(it2))
var getOwnPropertySymbols = getOwnPropertySymbolsModule.f
return getOwnPropertySymbols
? concat$1(keys3, getOwnPropertySymbols(it2))
: keys3
}
var hasOwn$6 = hasOwnProperty_1
var ownKeys$4 = ownKeys$5
var getOwnPropertyDescriptorModule = objectGetOwnPropertyDescriptor
var definePropertyModule$2 = objectDefineProperty
var copyConstructorProperties$1 = function (target2, source2, exceptions) {
var keys3 = ownKeys$4(source2)
var defineProperty4 = definePropertyModule$2.f
var getOwnPropertyDescriptor3 = getOwnPropertyDescriptorModule.f
for (var i2 = 0; i2 < keys3.length; i2++) {
var key2 = keys3[i2]
if (
!hasOwn$6(target2, key2) &&
!(exceptions && hasOwn$6(exceptions, key2))
) {
defineProperty4(target2, key2, getOwnPropertyDescriptor3(source2, key2))
}
}
}
var fails$d = fails$l
var isCallable$c = isCallable$m
var replacement = /#|\.prototype\./
var isForced$2 = function (feature, detection) {
var value2 = data[normalize$4(feature)]
return value2 === POLYFILL
? true
: value2 === NATIVE
? false
: isCallable$c(detection)
? fails$d(detection)
: !!detection
}
var normalize$4 = (isForced$2.normalize = function (string3) {
return String(string3).replace(replacement, '.').toLowerCase()
})
var data = (isForced$2.data = {})
var NATIVE = (isForced$2.NATIVE = 'N')
var POLYFILL = (isForced$2.POLYFILL = 'P')
var isForced_1 = isForced$2
var global$b = global$l
var getOwnPropertyDescriptor$3 = objectGetOwnPropertyDescriptor.f
var createNonEnumerableProperty$3 = createNonEnumerableProperty$5
var defineBuiltIn$6 = defineBuiltIn$7
var defineGlobalProperty = defineGlobalProperty$3
var copyConstructorProperties = copyConstructorProperties$1
var isForced$1 = isForced_1
var _export = function (options2, source2) {
var TARGET = options2.target
var GLOBAL = options2.global
var STATIC = options2.stat
var FORCED2, target2, key2, targetProperty, sourceProperty, descriptor
if (GLOBAL) {
target2 = global$b
} else if (STATIC) {
target2 = global$b[TARGET] || defineGlobalProperty(TARGET, {})
} else {
target2 = (global$b[TARGET] || {}).prototype
}
if (target2)
for (key2 in source2) {
sourceProperty = source2[key2]
if (options2.dontCallGetSet) {
descriptor = getOwnPropertyDescriptor$3(target2, key2)
targetProperty = descriptor && descriptor.value
} else targetProperty = target2[key2]
FORCED2 = isForced$1(
GLOBAL ? key2 : TARGET + (STATIC ? '.' : '#') + key2,
options2.forced
)
if (!FORCED2 && targetProperty !== void 0) {
if (typeof sourceProperty == typeof targetProperty) continue
copyConstructorProperties(sourceProperty, targetProperty)
}
if (options2.sham || (targetProperty && targetProperty.sham)) {
createNonEnumerableProperty$3(sourceProperty, 'sham', true)
}
defineBuiltIn$6(target2, key2, sourceProperty, options2)
}
}
var global$a = global$l
var classof$7 = classofRaw$2
var engineIsNode = classof$7(global$a.process) === 'process'
var uncurryThis$g = functionUncurryThis
var aCallable$7 = aCallable$9
var functionUncurryThisAccessor = function (object4, key2, method4) {
try {
return uncurryThis$g(
aCallable$7(Object.getOwnPropertyDescriptor(object4, key2)[method4])
)
} catch (error2) {}
}
var isCallable$b = isCallable$m
var $String$1 = String
var $TypeError$9 = TypeError
var aPossiblePrototype$1 = function (argument) {
if (typeof argument == 'object' || isCallable$b(argument)) return argument
throw new $TypeError$9("Can't set " + $String$1(argument) + ' as a prototype')
}
var uncurryThisAccessor = functionUncurryThisAccessor
var anObject$d = anObject$g
var aPossiblePrototype = aPossiblePrototype$1
var objectSetPrototypeOf =
Object.setPrototypeOf ||
('__proto__' in {}
? (function () {
var CORRECT_SETTER = false
var test2 = {}
var setter
try {
setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set')
setter(test2, [])
CORRECT_SETTER = test2 instanceof Array
} catch (error2) {}
return function setPrototypeOf2(O2, proto2) {
anObject$d(O2)
aPossiblePrototype(proto2)
if (CORRECT_SETTER) setter(O2, proto2)
else O2.__proto__ = proto2
return O2
}
})()
: void 0)
var defineProperty$5 = objectDefineProperty.f
var hasOwn$5 = hasOwnProperty_1
var wellKnownSymbol$g = wellKnownSymbol$i
var TO_STRING_TAG$3 = wellKnownSymbol$g('toStringTag')
var setToStringTag$3 = function (target2, TAG, STATIC) {
if (target2 && !STATIC) target2 = target2.prototype
if (target2 && !hasOwn$5(target2, TO_STRING_TAG$3)) {
defineProperty$5(target2, TO_STRING_TAG$3, {
configurable: true,
value: TAG,
})
}
}
var makeBuiltIn = makeBuiltIn$3.exports
var defineProperty$4 = objectDefineProperty
var defineBuiltInAccessor$1 = function (target2, name2, descriptor) {
if (descriptor.get) makeBuiltIn(descriptor.get, name2, { getter: true })
if (descriptor.set) makeBuiltIn(descriptor.set, name2, { setter: true })
return defineProperty$4.f(target2, name2, descriptor)
}
var getBuiltIn$4 = getBuiltIn$7
var defineBuiltInAccessor = defineBuiltInAccessor$1
var wellKnownSymbol$f = wellKnownSymbol$i
var DESCRIPTORS$2 = descriptors
var SPECIES$3 = wellKnownSymbol$f('species')
var setSpecies$1 = function (CONSTRUCTOR_NAME) {
var Constructor = getBuiltIn$4(CONSTRUCTOR_NAME)
if (DESCRIPTORS$2 && Constructor && !Constructor[SPECIES$3]) {
defineBuiltInAccessor(Constructor, SPECIES$3, {
configurable: true,
get: function () {
return this
},
})
}
}
var isPrototypeOf$2 = objectIsPrototypeOf
var $TypeError$8 = TypeError
var anInstance$1 = function (it2, Prototype) {
if (isPrototypeOf$2(Prototype, it2)) return it2
throw new $TypeError$8('Incorrect invocation')
}
var wellKnownSymbol$e = wellKnownSymbol$i
var TO_STRING_TAG$2 = wellKnownSymbol$e('toStringTag')
var test$1 = {}
test$1[TO_STRING_TAG$2] = 'z'
var toStringTagSupport = String(test$1) === '[object z]'
var TO_STRING_TAG_SUPPORT = toStringTagSupport
var isCallable$a = isCallable$m
var classofRaw$1 = classofRaw$2
var wellKnownSymbol$d = wellKnownSymbol$i
var TO_STRING_TAG$1 = wellKnownSymbol$d('toStringTag')
var $Object$1 = Object
var CORRECT_ARGUMENTS =
classofRaw$1(
(function () {
return arguments
})()
) === 'Arguments'
var tryGet = function (it2, key2) {
try {
return it2[key2]
} catch (error2) {}
}
var classof$6 = TO_STRING_TAG_SUPPORT
? classofRaw$1
: function (it2) {
var O2, tag, result
return it2 === void 0
? 'Undefined'
: it2 === null
? 'Null'
: typeof (tag = tryGet((O2 = $Object$1(it2)), TO_STRING_TAG$1)) ==
'string'
? tag
: CORRECT_ARGUMENTS
? classofRaw$1(O2)
: (result = classofRaw$1(O2)) === 'Object' && isCallable$a(O2.callee)
? 'Arguments'
: result
}
var uncurryThis$f = functionUncurryThis
var fails$c = fails$l
var isCallable$9 = isCallable$m
var classof$5 = classof$6
var getBuiltIn$3 = getBuiltIn$7
var inspectSource$1 = inspectSource$3
var noop$2 = function () {}
var empty = []
var construct = getBuiltIn$3('Reflect', 'construct')
var constructorRegExp = /^\s*(?:class|function)\b/
var exec$2 = uncurryThis$f(constructorRegExp.exec)
var INCORRECT_TO_STRING = !constructorRegExp.test(noop$2)
var isConstructorModern = function isConstructor2(argument) {
if (!isCallable$9(argument)) return false
try {
construct(noop$2, empty, argument)
return true
} catch (error2) {
return false
}
}
var isConstructorLegacy = function isConstructor3(argument) {
if (!isCallable$9(argument)) return false
switch (classof$5(argument)) {
case 'AsyncFunction':
case 'GeneratorFunction':
case 'AsyncGeneratorFunction':
return false
}
try {
return (
INCORRECT_TO_STRING ||
!!exec$2(constructorRegExp, inspectSource$1(argument))
)
} catch (error2) {
return true
}
}
isConstructorLegacy.sham = true
var isConstructor$1 =
!construct ||
fails$c(function () {
var called2
return (
isConstructorModern(isConstructorModern.call) ||
!isConstructorModern(Object) ||
!isConstructorModern(function () {
called2 = true
}) ||
called2
)
})
? isConstructorLegacy
: isConstructorModern
var isConstructor = isConstructor$1
var tryToString$2 = tryToString$4
var $TypeError$7 = TypeError
var aConstructor$1 = function (argument) {
if (isConstructor(argument)) return argument
throw new $TypeError$7(tryToString$2(argument) + ' is not a constructor')
}
var anObject$c = anObject$g
var aConstructor = aConstructor$1
var isNullOrUndefined$4 = isNullOrUndefined$7
var wellKnownSymbol$c = wellKnownSymbol$i
var SPECIES$2 = wellKnownSymbol$c('species')
var speciesConstructor$2 = function (O2, defaultConstructor) {
var C2 = anObject$c(O2).constructor
var S2
return C2 === void 0 || isNullOrUndefined$4((S2 = anObject$c(C2)[SPECIES$2]))
? defaultConstructor
: aConstructor(S2)
}
var NATIVE_BIND$1 = functionBindNative
var FunctionPrototype = Function.prototype
var apply$4 = FunctionPrototype.apply
var call$e = FunctionPrototype.call
var functionApply =
(typeof Reflect == 'object' && Reflect.apply) ||
(NATIVE_BIND$1
? call$e.bind(apply$4)
: function () {
return call$e.apply(apply$4, arguments)
})
var classofRaw = classofRaw$2
var uncurryThis$e = functionUncurryThis
var functionUncurryThisClause = function (fn2) {
if (classofRaw(fn2) === 'Function') return uncurryThis$e(fn2)
}
var uncurryThis$d = functionUncurryThisClause
var aCallable$6 = aCallable$9
var NATIVE_BIND = functionBindNative
var bind$6 = uncurryThis$d(uncurryThis$d.bind)
var functionBindContext = function (fn2, that) {
aCallable$6(fn2)
return that === void 0
? fn2
: NATIVE_BIND
? bind$6(fn2, that)
: function () {
return fn2.apply(that, arguments)
}
}
var getBuiltIn$2 = getBuiltIn$7
var html$2 = getBuiltIn$2('document', 'documentElement')
var uncurryThis$c = functionUncurryThis
var arraySlice$3 = uncurryThis$c([].slice)
var $TypeError$6 = TypeError
var validateArgumentsLength$1 = function (passed, required4) {
if (passed < required4) throw new $TypeError$6('Not enough arguments')
return passed
}
var userAgent$3 = engineUserAgent
var engineIsIos = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent$3)
var global$9 = global$l
var apply$3 = functionApply
var bind$5 = functionBindContext
var isCallable$8 = isCallable$m
var hasOwn$4 = hasOwnProperty_1
var fails$b = fails$l
var html$1 = html$2
var arraySlice$2 = arraySlice$3
var createElement$1 = documentCreateElement$2
var validateArgumentsLength = validateArgumentsLength$1
var IS_IOS$1 = engineIsIos
var IS_NODE$4 = engineIsNode
var set$2 = global$9.setImmediate
var clear$2 = global$9.clearImmediate
var process$3 = global$9.process
var Dispatch = global$9.Dispatch
var Function$1 = global$9.Function
var MessageChannel$1 = global$9.MessageChannel
var String$1 = global$9.String
var counter = 0
var queue$3 = {}
var ONREADYSTATECHANGE = 'onreadystatechange'
var $location, defer, channel, port
fails$b(function () {
$location = global$9.location
})
var run$1 = function (id2) {
if (hasOwn$4(queue$3, id2)) {
var fn2 = queue$3[id2]
delete queue$3[id2]
fn2()
}
}
var runner = function (id2) {
return function () {
run$1(id2)
}
}
var eventListener = function (event) {
run$1(event.data)
}
var globalPostMessageDefer = function (id2) {
global$9.postMessage(
String$1(id2),
$location.protocol + '//' + $location.host
)
}
if (!set$2 || !clear$2) {
set$2 = function setImmediate2(handler) {
validateArgumentsLength(arguments.length, 1)
var fn2 = isCallable$8(handler) ? handler : Function$1(handler)
var args = arraySlice$2(arguments, 1)
queue$3[++counter] = function () {
apply$3(fn2, void 0, args)
}
defer(counter)
return counter
}
clear$2 = function clearImmediate(id2) {
delete queue$3[id2]
}
if (IS_NODE$4) {
defer = function (id2) {
process$3.nextTick(runner(id2))
}
} else if (Dispatch && Dispatch.now) {
defer = function (id2) {
Dispatch.now(runner(id2))
}
} else if (MessageChannel$1 && !IS_IOS$1) {
channel = new MessageChannel$1()
port = channel.port2
channel.port1.onmessage = eventListener
defer = bind$5(port.postMessage, port)
} else if (
global$9.addEventListener &&
isCallable$8(global$9.postMessage) &&
!global$9.importScripts &&
$location &&
$location.protocol !== 'file:' &&
!fails$b(globalPostMessageDefer)
) {
defer = globalPostMessageDefer
global$9.addEventListener('message', eventListener, false)
} else if (ONREADYSTATECHANGE in createElement$1('script')) {
defer = function (id2) {
html$1.appendChild(createElement$1('script'))[ONREADYSTATECHANGE] =
function () {
html$1.removeChild(this)
run$1(id2)
}
}
} else {
defer = function (id2) {
setTimeout(runner(id2), 0)
}
}
}
var task$1 = {
set: set$2,
clear: clear$2,
}
var Queue$2 = function () {
this.head = null
this.tail = null
}
Queue$2.prototype = {
add: function (item2) {
var entry = { item: item2, next: null }
var tail = this.tail
if (tail) tail.next = entry
else this.head = entry
this.tail = entry
},
get: function () {
var entry = this.head
if (entry) {
var next = (this.head = entry.next)
if (next === null) this.tail = null
return entry.item
}
},
}
var queue$2 = Queue$2
var userAgent$2 = engineUserAgent
var engineIsIosPebble =
/ipad|iphone|ipod/i.test(userAgent$2) && typeof Pebble != 'undefined'
var userAgent$1 = engineUserAgent
var engineIsWebosWebkit = /web0s(?!.*chrome)/i.test(userAgent$1)
var global$8 = global$l
var bind$4 = functionBindContext
var getOwnPropertyDescriptor$2 = objectGetOwnPropertyDescriptor.f
var macrotask = task$1.set
var Queue$1 = queue$2
var IS_IOS = engineIsIos
var IS_IOS_PEBBLE = engineIsIosPebble
var IS_WEBOS_WEBKIT = engineIsWebosWebkit
var IS_NODE$3 = engineIsNode
var MutationObserver$1 =
global$8.MutationObserver || global$8.WebKitMutationObserver
var document$2 = global$8.document
var process$2 = global$8.process
var Promise$3 = global$8.Promise
var queueMicrotaskDescriptor = getOwnPropertyDescriptor$2(
global$8,
'queueMicrotask'
)
var microtask$1 = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value
var notify$1, toggle, node$1, promise, then
if (!microtask$1) {
var queue$1 = new Queue$1()
var flush = function () {
var parent2, fn2
if (IS_NODE$3 && (parent2 = process$2.domain)) parent2.exit()
while ((fn2 = queue$1.get()))
try {
fn2()
} catch (error2) {
if (queue$1.head) notify$1()
throw error2
}
if (parent2) parent2.enter()
}
if (
!IS_IOS &&
!IS_NODE$3 &&
!IS_WEBOS_WEBKIT &&
MutationObserver$1 &&
document$2
) {
toggle = true
node$1 = document$2.createTextNode('')
new MutationObserver$1(flush).observe(node$1, { characterData: true })
notify$1 = function () {
node$1.data = toggle = !toggle
}
} else if (!IS_IOS_PEBBLE && Promise$3 && Promise$3.resolve) {
promise = Promise$3.resolve(void 0)
promise.constructor = Promise$3
then = bind$4(promise.then, promise)
notify$1 = function () {
then(flush)
}
} else if (IS_NODE$3) {
notify$1 = function () {
process$2.nextTick(flush)
}
} else {
macrotask = bind$4(macrotask, global$8)
notify$1 = function () {
macrotask(flush)
}
}
microtask$1 = function (fn2) {
if (!queue$1.head) notify$1()
queue$1.add(fn2)
}
}
var microtask_1 = microtask$1
var hostReportErrors$1 = function (a2, b2) {
try {
arguments.length === 1 ? console.error(a2) : console.error(a2, b2)
} catch (error2) {}
}
var perform$3 = function (exec2) {
try {
return { error: false, value: exec2() }
} catch (error2) {
return { error: true, value: error2 }
}
}
var global$7 = global$l
var promiseNativeConstructor = global$7.Promise
var engineIsDeno =
typeof Deno == 'object' && Deno && typeof Deno.version == 'object'
var IS_DENO$1 = engineIsDeno
var IS_NODE$2 = engineIsNode
var engineIsBrowser =
!IS_DENO$1 &&
!IS_NODE$2 &&
typeof window == 'object' &&
typeof document == 'object'
var global$6 = global$l
var NativePromiseConstructor$3 = promiseNativeConstructor
var isCallable$7 = isCallable$m
var isForced = isForced_1
var inspectSource = inspectSource$3
var wellKnownSymbol$b = wellKnownSymbol$i
var IS_BROWSER = engineIsBrowser
var IS_DENO = engineIsDeno
var V8_VERSION = engineV8Version
NativePromiseConstructor$3 && NativePromiseConstructor$3.prototype
var SPECIES$1 = wellKnownSymbol$b('species')
var SUBCLASSING = false
var NATIVE_PROMISE_REJECTION_EVENT$1 = isCallable$7(
global$6.PromiseRejectionEvent
)
var FORCED_PROMISE_CONSTRUCTOR$5 = isForced('Promise', function () {
var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor$3)
var GLOBAL_CORE_JS_PROMISE =
PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor$3)
if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true
if (
!V8_VERSION ||
V8_VERSION < 51 ||
!/native code/.test(PROMISE_CONSTRUCTOR_SOURCE)
) {
var promise2 = new NativePromiseConstructor$3(function (resolve2) {
resolve2(1)
})
var FakePromise = function (exec2) {
exec2(
function () {},
function () {}
)
}
var constructor = (promise2.constructor = {})
constructor[SPECIES$1] = FakePromise
SUBCLASSING = promise2.then(function () {}) instanceof FakePromise
if (!SUBCLASSING) return true
}
return (
!GLOBAL_CORE_JS_PROMISE &&
(IS_BROWSER || IS_DENO) &&
!NATIVE_PROMISE_REJECTION_EVENT$1
)
})
var promiseConstructorDetection = {
CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR$5,
REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT$1,
SUBCLASSING,
}
var newPromiseCapability$2 = {}
var aCallable$5 = aCallable$9
var $TypeError$5 = TypeError
var PromiseCapability = function (C2) {
var resolve2, reject2
this.promise = new C2(function ($$resolve, $$reject) {
if (resolve2 !== void 0 || reject2 !== void 0)
throw new $TypeError$5('Bad Promise constructor')
resolve2 = $$resolve
reject2 = $$reject
})
this.resolve = aCallable$5(resolve2)
this.reject = aCallable$5(reject2)
}
newPromiseCapability$2.f = function (C2) {
return new PromiseCapability(C2)
}
var $$e = _export
var IS_NODE$1 = engineIsNode
var global$5 = global$l
var call$d = functionCall
var defineBuiltIn$5 = defineBuiltIn$7
var setPrototypeOf$1 = objectSetPrototypeOf
var setToStringTag$2 = setToStringTag$3
var setSpecies = setSpecies$1
var aCallable$4 = aCallable$9
var isCallable$6 = isCallable$m
var isObject$f = isObject$l
var anInstance = anInstance$1
var speciesConstructor$1 = speciesConstructor$2
var task = task$1.set
var microtask = microtask_1
var hostReportErrors = hostReportErrors$1
var perform$2 = perform$3
var Queue = queue$2
var InternalStateModule$1 = internalState
var NativePromiseConstructor$2 = promiseNativeConstructor
var PromiseConstructorDetection = promiseConstructorDetection
var newPromiseCapabilityModule$3 = newPromiseCapability$2
var PROMISE = 'Promise'
var FORCED_PROMISE_CONSTRUCTOR$4 = PromiseConstructorDetection.CONSTRUCTOR
var NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT
var NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING
var getInternalPromiseState = InternalStateModule$1.getterFor(PROMISE)
var setInternalState$1 = InternalStateModule$1.set
var NativePromisePrototype$1 =
NativePromiseConstructor$2 && NativePromiseConstructor$2.prototype
var PromiseConstructor = NativePromiseConstructor$2
var PromisePrototype = NativePromisePrototype$1
var TypeError$1 = global$5.TypeError
var document$1 = global$5.document
var process$1 = global$5.process
var newPromiseCapability$1 = newPromiseCapabilityModule$3.f
var newGenericPromiseCapability = newPromiseCapability$1
var DISPATCH_EVENT = !!(
document$1 &&
document$1.createEvent &&
global$5.dispatchEvent
)
var UNHANDLED_REJECTION = 'unhandledrejection'
var REJECTION_HANDLED = 'rejectionhandled'
var PENDING = 0
var FULFILLED = 1
var REJECTED = 2
var HANDLED = 1
var UNHANDLED = 2
var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen
var isThenable = function (it2) {
var then2
return isObject$f(it2) && isCallable$6((then2 = it2.then)) ? then2 : false
}
var callReaction = function (reaction, state2) {
var value2 = state2.value
var ok = state2.state === FULFILLED
var handler = ok ? reaction.ok : reaction.fail
var resolve2 = reaction.resolve
var reject2 = reaction.reject
var domain = reaction.domain
var result, then2, exited
try {
if (handler) {
if (!ok) {
if (state2.rejection === UNHANDLED) onHandleUnhandled(state2)
state2.rejection = HANDLED
}
if (handler === true) result = value2
else {
if (domain) domain.enter()
result = handler(value2)
if (domain) {
domain.exit()
exited = true
}
}
if (result === reaction.promise) {
reject2(new TypeError$1('Promise-chain cycle'))
} else if ((then2 = isThenable(result))) {
call$d(then2, result, resolve2, reject2)
} else resolve2(result)
} else reject2(value2)
} catch (error2) {
if (domain && !exited) domain.exit()
reject2(error2)
}
}
var notify = function (state2, isReject) {
if (state2.notified) return
state2.notified = true
microtask(function () {
var reactions = state2.reactions
var reaction
while ((reaction = reactions.get())) {
callReaction(reaction, state2)
}
state2.notified = false
if (isReject && !state2.rejection) onUnhandled(state2)
})
}
var dispatchEvent$2 = function (name2, promise2, reason) {
var event, handler
if (DISPATCH_EVENT) {
event = document$1.createEvent('Event')
event.promise = promise2
event.reason = reason
event.initEvent(name2, false, true)
global$5.dispatchEvent(event)
} else event = { promise: promise2, reason }
if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = global$5['on' + name2]))
handler(event)
else if (name2 === UNHANDLED_REJECTION)
hostReportErrors('Unhandled promise rejection', reason)
}
var onUnhandled = function (state2) {
call$d(task, global$5, function () {
var promise2 = state2.facade
var value2 = state2.value
var IS_UNHANDLED = isUnhandled(state2)
var result
if (IS_UNHANDLED) {
result = perform$2(function () {
if (IS_NODE$1) {
process$1.emit('unhandledRejection', value2, promise2)
} else dispatchEvent$2(UNHANDLED_REJECTION, promise2, value2)
})
state2.rejection = IS_NODE$1 || isUnhandled(state2) ? UNHANDLED : HANDLED
if (result.error) throw result.value
}
})
}
var isUnhandled = function (state2) {
return state2.rejection !== HANDLED && !state2.parent
}
var onHandleUnhandled = function (state2) {
call$d(task, global$5, function () {
var promise2 = state2.facade
if (IS_NODE$1) {
process$1.emit('rejectionHandled', promise2)
} else dispatchEvent$2(REJECTION_HANDLED, promise2, state2.value)
})
}
var bind$3 = function (fn2, state2, unwrap) {
return function (value2) {
fn2(state2, value2, unwrap)
}
}
var internalReject = function (state2, value2, unwrap) {
if (state2.done) return
state2.done = true
if (unwrap) state2 = unwrap
state2.value = value2
state2.state = REJECTED
notify(state2, true)
}
var internalResolve = function (state2, value2, unwrap) {
if (state2.done) return
state2.done = true
if (unwrap) state2 = unwrap
try {
if (state2.facade === value2)
throw new TypeError$1("Promise can't be resolved itself")
var then2 = isThenable(value2)
if (then2) {
microtask(function () {
var wrapper = { done: false }
try {
call$d(
then2,
value2,
bind$3(internalResolve, wrapper, state2),
bind$3(internalReject, wrapper, state2)
)
} catch (error2) {
internalReject(wrapper, error2, state2)
}
})
} else {
state2.value = value2
state2.state = FULFILLED
notify(state2, false)
}
} catch (error2) {
internalReject({ done: false }, error2, state2)
}
}
if (FORCED_PROMISE_CONSTRUCTOR$4) {
PromiseConstructor = function Promise2(executor) {
anInstance(this, PromisePrototype)
aCallable$4(executor)
call$d(Internal, this)
var state2 = getInternalPromiseState(this)
try {
executor(bind$3(internalResolve, state2), bind$3(internalReject, state2))
} catch (error2) {
internalReject(state2, error2)
}
}
PromisePrototype = PromiseConstructor.prototype
Internal = function Promise2(executor) {
setInternalState$1(this, {
type: PROMISE,
done: false,
notified: false,
parent: false,
reactions: new Queue(),
rejection: false,
state: PENDING,
value: void 0,
})
}
Internal.prototype = defineBuiltIn$5(
PromisePrototype,
'then',
function then2(onFulfilled, onRejected) {
var state2 = getInternalPromiseState(this)
var reaction = newPromiseCapability$1(
speciesConstructor$1(this, PromiseConstructor)
)
state2.parent = true
reaction.ok = isCallable$6(onFulfilled) ? onFulfilled : true
reaction.fail = isCallable$6(onRejected) && onRejected
reaction.domain = IS_NODE$1 ? process$1.domain : void 0
if (state2.state === PENDING) state2.reactions.add(reaction)
else
microtask(function () {
callReaction(reaction, state2)
})
return reaction.promise
}
)
OwnPromiseCapability = function () {
var promise2 = new Internal()
var state2 = getInternalPromiseState(promise2)
this.promise = promise2
this.resolve = bind$3(internalResolve, state2)
this.reject = bind$3(internalReject, state2)
}
newPromiseCapabilityModule$3.f = newPromiseCapability$1 = function (C2) {
return C2 === PromiseConstructor || C2 === PromiseWrapper
? new OwnPromiseCapability(C2)
: newGenericPromiseCapability(C2)
}
if (
isCallable$6(NativePromiseConstructor$2) &&
NativePromisePrototype$1 !== Object.prototype
) {
nativeThen = NativePromisePrototype$1.then
if (!NATIVE_PROMISE_SUBCLASSING) {
defineBuiltIn$5(
NativePromisePrototype$1,
'then',
function then2(onFulfilled, onRejected) {
var that = this
return new PromiseConstructor(function (resolve2, reject2) {
call$d(nativeThen, that, resolve2, reject2)
}).then(onFulfilled, onRejected)
},
{ unsafe: true }
)
}
try {
delete NativePromisePrototype$1.constructor
} catch (error2) {}
if (setPrototypeOf$1) {
setPrototypeOf$1(NativePromisePrototype$1, PromisePrototype)
}
}
}
$$e(
{
global: true,
constructor: true,
wrap: true,
forced: FORCED_PROMISE_CONSTRUCTOR$4,
},
{
Promise: PromiseConstructor,
}
)
setToStringTag$2(PromiseConstructor, PROMISE, false)
setSpecies(PROMISE)
var iterators = {}
var wellKnownSymbol$a = wellKnownSymbol$i
var Iterators$4 = iterators
var ITERATOR$5 = wellKnownSymbol$a('iterator')
var ArrayPrototype$1 = Array.prototype
var isArrayIteratorMethod$1 = function (it2) {
return (
it2 !== void 0 &&
(Iterators$4.Array === it2 || ArrayPrototype$1[ITERATOR$5] === it2)
)
}
var classof$4 = classof$6
var getMethod$4 = getMethod$6
var isNullOrUndefined$3 = isNullOrUndefined$7
var Iterators$3 = iterators
var wellKnownSymbol$9 = wellKnownSymbol$i
var ITERATOR$4 = wellKnownSymbol$9('iterator')
var getIteratorMethod$2 = function (it2) {
if (!isNullOrUndefined$3(it2))
return (
getMethod$4(it2, ITERATOR$4) ||
getMethod$4(it2, '@@iterator') ||
Iterators$3[classof$4(it2)]
)
}
var call$c = functionCall
var aCallable$3 = aCallable$9
var anObject$b = anObject$g
var tryToString$1 = tryToString$4
var getIteratorMethod$1 = getIteratorMethod$2
var $TypeError$4 = TypeError
var getIterator$1 = function (argument, usingIterator) {
var iteratorMethod =
arguments.length < 2 ? getIteratorMethod$1(argument) : usingIterator
if (aCallable$3(iteratorMethod))
return anObject$b(call$c(iteratorMethod, argument))
throw new $TypeError$4(tryToString$1(argument) + ' is not iterable')
}
var call$b = functionCall
var anObject$a = anObject$g
var getMethod$3 = getMethod$6
var iteratorClose$1 = function (iterator2, kind, value2) {
var innerResult, innerError
anObject$a(iterator2)
try {
innerResult = getMethod$3(iterator2, 'return')
if (!innerResult) {
if (kind === 'throw') throw value2
return value2
}
innerResult = call$b(innerResult, iterator2)
} catch (error2) {
innerError = true
innerResult = error2
}
if (kind === 'throw') throw value2
if (innerError) throw innerResult
anObject$a(innerResult)
return value2
}
var bind$2 = functionBindContext
var call$a = functionCall
var anObject$9 = anObject$g
var tryToString = tryToString$4
var isArrayIteratorMethod = isArrayIteratorMethod$1
var lengthOfArrayLike$2 = lengthOfArrayLike$4
var isPrototypeOf$1 = objectIsPrototypeOf
var getIterator = getIterator$1
var getIteratorMethod = getIteratorMethod$2
var iteratorClose = iteratorClose$1
var $TypeError$3 = TypeError
var Result = function (stopped, result) {
this.stopped = stopped
this.result = result
}
var ResultPrototype = Result.prototype
var iterate$2 = function (iterable, unboundFunction, options2) {
var that = options2 && options2.that
var AS_ENTRIES = !!(options2 && options2.AS_ENTRIES)
var IS_RECORD = !!(options2 && options2.IS_RECORD)
var IS_ITERATOR = !!(options2 && options2.IS_ITERATOR)
var INTERRUPTED = !!(options2 && options2.INTERRUPTED)
var fn2 = bind$2(unboundFunction, that)
var iterator2, iterFn, index2, length2, result, next, step
var stop2 = function (condition2) {
if (iterator2) iteratorClose(iterator2, 'normal', condition2)
return new Result(true, condition2)
}
var callFn = function (value2) {
if (AS_ENTRIES) {
anObject$9(value2)
return INTERRUPTED
? fn2(value2[0], value2[1], stop2)
: fn2(value2[0], value2[1])
}
return INTERRUPTED ? fn2(value2, stop2) : fn2(value2)
}
if (IS_RECORD) {
iterator2 = iterable.iterator
} else if (IS_ITERATOR) {
iterator2 = iterable
} else {
iterFn = getIteratorMethod(iterable)
if (!iterFn)
throw new $TypeError$3(tryToString(iterable) + ' is not iterable')
if (isArrayIteratorMethod(iterFn)) {
for (
index2 = 0, length2 = lengthOfArrayLike$2(iterable);
length2 > index2;
index2++
) {
result = callFn(iterable[index2])
if (result && isPrototypeOf$1(ResultPrototype, result)) return result
}
return new Result(false)
}
iterator2 = getIterator(iterable, iterFn)
}
next = IS_RECORD ? iterable.next : iterator2.next
while (!(step = call$a(next, iterator2)).done) {
try {
result = callFn(step.value)
} catch (error2) {
iteratorClose(iterator2, 'throw', error2)
}
if (
typeof result == 'object' &&
result &&
isPrototypeOf$1(ResultPrototype, result)
)
return result
}
return new Result(false)
}
var wellKnownSymbol$8 = wellKnownSymbol$i
var ITERATOR$3 = wellKnownSymbol$8('iterator')
var SAFE_CLOSING = false
try {
var called = 0
var iteratorWithReturn = {
next: function () {
return { done: !!called++ }
},
return: function () {
SAFE_CLOSING = true
},
}
iteratorWithReturn[ITERATOR$3] = function () {
return this
}
Array.from(iteratorWithReturn, function () {
throw 2
})
} catch (error2) {}
var checkCorrectnessOfIteration$1 = function (exec2, SKIP_CLOSING) {
try {
if (!SKIP_CLOSING && !SAFE_CLOSING) return false
} catch (error2) {
return false
}
var ITERATION_SUPPORT = false
try {
var object4 = {}
object4[ITERATOR$3] = function () {
return {
next: function () {
return { done: (ITERATION_SUPPORT = true) }
},
}
}
exec2(object4)
} catch (error2) {}
return ITERATION_SUPPORT
}
var NativePromiseConstructor$1 = promiseNativeConstructor
var checkCorrectnessOfIteration = checkCorrectnessOfIteration$1
var FORCED_PROMISE_CONSTRUCTOR$3 = promiseConstructorDetection.CONSTRUCTOR
var promiseStaticsIncorrectIteration =
FORCED_PROMISE_CONSTRUCTOR$3 ||
!checkCorrectnessOfIteration(function (iterable) {
NativePromiseConstructor$1.all(iterable).then(void 0, function () {})
})
var $$d = _export
var call$9 = functionCall
var aCallable$2 = aCallable$9
var newPromiseCapabilityModule$2 = newPromiseCapability$2
var perform$1 = perform$3
var iterate$1 = iterate$2
var PROMISE_STATICS_INCORRECT_ITERATION$1 = promiseStaticsIncorrectIteration
$$d(
{
target: 'Promise',
stat: true,
forced: PROMISE_STATICS_INCORRECT_ITERATION$1,
},
{
all: function all2(iterable) {
var C2 = this
var capability = newPromiseCapabilityModule$2.f(C2)
var resolve2 = capability.resolve
var reject2 = capability.reject
var result = perform$1(function () {
var $promiseResolve = aCallable$2(C2.resolve)
var values2 = []
var counter2 = 0
var remaining = 1
iterate$1(iterable, function (promise2) {
var index2 = counter2++
var alreadyCalled = false
remaining++
call$9($promiseResolve, C2, promise2).then(function (value2) {
if (alreadyCalled) return
alreadyCalled = true
values2[index2] = value2
--remaining || resolve2(values2)
}, reject2)
})
--remaining || resolve2(values2)
})
if (result.error) reject2(result.value)
return capability.promise
},
}
)
var $$c = _export
var FORCED_PROMISE_CONSTRUCTOR$2 = promiseConstructorDetection.CONSTRUCTOR
var NativePromiseConstructor = promiseNativeConstructor
var getBuiltIn$1 = getBuiltIn$7
var isCallable$5 = isCallable$m
var defineBuiltIn$4 = defineBuiltIn$7
var NativePromisePrototype =
NativePromiseConstructor && NativePromiseConstructor.prototype
$$c(
{
target: 'Promise',
proto: true,
forced: FORCED_PROMISE_CONSTRUCTOR$2,
real: true,
},
{
catch: function (onRejected) {
return this.then(void 0, onRejected)
},
}
)
if (isCallable$5(NativePromiseConstructor)) {
var method = getBuiltIn$1('Promise').prototype['catch']
if (NativePromisePrototype['catch'] !== method) {
defineBuiltIn$4(NativePromisePrototype, 'catch', method, { unsafe: true })
}
}
var $$b = _export
var call$8 = functionCall
var aCallable$1 = aCallable$9
var newPromiseCapabilityModule$1 = newPromiseCapability$2
var perform = perform$3
var iterate = iterate$2
var PROMISE_STATICS_INCORRECT_ITERATION = promiseStaticsIncorrectIteration
$$b(
{
target: 'Promise',
stat: true,
forced: PROMISE_STATICS_INCORRECT_ITERATION,
},
{
race: function race(iterable) {
var C2 = this
var capability = newPromiseCapabilityModule$1.f(C2)
var reject2 = capability.reject
var result = perform(function () {
var $promiseResolve = aCallable$1(C2.resolve)
iterate(iterable, function (promise2) {
call$8($promiseResolve, C2, promise2).then(
capability.resolve,
reject2
)
})
})
if (result.error) reject2(result.value)
return capability.promise
},
}
)
var $$a = _export
var call$7 = functionCall
var newPromiseCapabilityModule = newPromiseCapability$2
var FORCED_PROMISE_CONSTRUCTOR$1 = promiseConstructorDetection.CONSTRUCTOR
$$a(
{ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR$1 },
{
reject: function reject(r2) {
var capability = newPromiseCapabilityModule.f(this)
call$7(capability.reject, void 0, r2)
return capability.promise
},
}
)
var anObject$8 = anObject$g
var isObject$e = isObject$l
var newPromiseCapability = newPromiseCapability$2
var promiseResolve$1 = function (C2, x2) {
anObject$8(C2)
if (isObject$e(x2) && x2.constructor === C2) return x2
var promiseCapability = newPromiseCapability.f(C2)
var resolve2 = promiseCapability.resolve
resolve2(x2)
return promiseCapability.promise
}
var $$9 = _export
var getBuiltIn = getBuiltIn$7
var FORCED_PROMISE_CONSTRUCTOR = promiseConstructorDetection.CONSTRUCTOR
var promiseResolve = promiseResolve$1
getBuiltIn('Promise')
$$9(
{ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR },
{
resolve: function resolve(x2) {
return promiseResolve(this, x2)
},
}
)
function asyncGeneratorStep(gen, resolve2, reject2, _next, _throw, key2, arg) {
try {
var info = gen[key2](arg)
var value2 = info.value
} catch (error2) {
reject2(error2)
return
}
if (info.done) {
resolve2(value2)
} else {
Promise.resolve(value2).then(_next, _throw)
}
}
function _asyncToGenerator(fn2) {
return function () {
var self2 = this,
args = arguments
return new Promise(function (resolve2, reject2) {
var gen = fn2.apply(self2, args)
function _next(value2) {
asyncGeneratorStep(
gen,
resolve2,
reject2,
_next,
_throw,
'next',
value2
)
}
function _throw(err) {
asyncGeneratorStep(gen, resolve2, reject2, _next, _throw, 'throw', err)
}
_next(void 0)
})
}
}
var classof$3 = classof$6
var $String = String
var toString$9 = function (argument) {
if (classof$3(argument) === 'Symbol')
throw new TypeError('Cannot convert a Symbol value to a string')
return $String(argument)
}
var anObject$7 = anObject$g
var regexpFlags$1 = function () {
var that = anObject$7(this)
var result = ''
if (that.hasIndices) result += 'd'
if (that.global) result += 'g'
if (that.ignoreCase) result += 'i'
if (that.multiline) result += 'm'
if (that.dotAll) result += 's'
if (that.unicode) result += 'u'
if (that.unicodeSets) result += 'v'
if (that.sticky) result += 'y'
return result
}
var fails$a = fails$l
var global$4 = global$l
var $RegExp$2 = global$4.RegExp
var UNSUPPORTED_Y$2 = fails$a(function () {
var re2 = $RegExp$2('a', 'y')
re2.lastIndex = 2
return re2.exec('abcd') !== null
})
var MISSED_STICKY =
UNSUPPORTED_Y$2 ||
fails$a(function () {
return !$RegExp$2('a', 'y').sticky
})
var BROKEN_CARET =
UNSUPPORTED_Y$2 ||
fails$a(function () {
var re2 = $RegExp$2('^r', 'gy')
re2.lastIndex = 2
return re2.exec('str') !== null
})
var regexpStickyHelpers = {
BROKEN_CARET,
MISSED_STICKY,
UNSUPPORTED_Y: UNSUPPORTED_Y$2,
}
var objectDefineProperties = {}
var internalObjectKeys = objectKeysInternal
var enumBugKeys$1 = enumBugKeys$3
var objectKeys$1 =
Object.keys ||
function keys2(O2) {
return internalObjectKeys(O2, enumBugKeys$1)
}
var DESCRIPTORS$1 = descriptors
var V8_PROTOTYPE_DEFINE_BUG = v8PrototypeDefineBug
var definePropertyModule$1 = objectDefineProperty
var anObject$6 = anObject$g
var toIndexedObject$1 = toIndexedObject$5
var objectKeys = objectKeys$1
objectDefineProperties.f =
DESCRIPTORS$1 && !V8_PROTOTYPE_DEFINE_BUG
? Object.defineProperties
: function defineProperties(O2, Properties) {
anObject$6(O2)
var props2 = toIndexedObject$1(Properties)
var keys3 = objectKeys(Properties)
var length2 = keys3.length
var index2 = 0
var key2
while (length2 > index2)
definePropertyModule$1.f(O2, (key2 = keys3[index2++]), props2[key2])
return O2
}
var anObject$5 = anObject$g
var definePropertiesModule = objectDefineProperties
var enumBugKeys = enumBugKeys$3
var hiddenKeys = hiddenKeys$4
var html = html$2
var documentCreateElement$1 = documentCreateElement$2
var sharedKey$1 = sharedKey$3
var GT = '>'
var LT = '<'
var PROTOTYPE = 'prototype'
var SCRIPT = 'script'
var IE_PROTO$1 = sharedKey$1('IE_PROTO')
var EmptyConstructor = function () {}
var scriptTag = function (content2) {
return LT + SCRIPT + GT + content2 + LT + '/' + SCRIPT + GT
}
var NullProtoObjectViaActiveX = function (activeXDocument2) {
activeXDocument2.write(scriptTag(''))
activeXDocument2.close()
var temp = activeXDocument2.parentWindow.Object
activeXDocument2 = null
return temp
}
var NullProtoObjectViaIFrame = function () {
var iframe = documentCreateElement$1('iframe')
var JS = 'java' + SCRIPT + ':'
var iframeDocument
iframe.style.display = 'none'
html.appendChild(iframe)
iframe.src = String(JS)
iframeDocument = iframe.contentWindow.document
iframeDocument.open()
iframeDocument.write(scriptTag('document.F=Object'))
iframeDocument.close()
return iframeDocument.F
}
var activeXDocument
var NullProtoObject = function () {
try {
activeXDocument = new ActiveXObject('htmlfile')
} catch (error2) {}
NullProtoObject =
typeof document != 'undefined'
? document.domain && activeXDocument
? NullProtoObjectViaActiveX(activeXDocument)
: NullProtoObjectViaIFrame()
: NullProtoObjectViaActiveX(activeXDocument)
var length2 = enumBugKeys.length
while (length2--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length2]]
return NullProtoObject()
}
hiddenKeys[IE_PROTO$1] = true
var objectCreate$1 =
Object.create ||
function create2(O2, Properties) {
var result
if (O2 !== null) {
EmptyConstructor[PROTOTYPE] = anObject$5(O2)
result = new EmptyConstructor()
EmptyConstructor[PROTOTYPE] = null
result[IE_PROTO$1] = O2
} else result = NullProtoObject()
return Properties === void 0
? result
: definePropertiesModule.f(result, Properties)
}
var fails$9 = fails$l
var global$3 = global$l
var $RegExp$1 = global$3.RegExp
var regexpUnsupportedDotAll = fails$9(function () {
var re2 = $RegExp$1('.', 's')
return !(re2.dotAll && re2.test('\n') && re2.flags === 's')
})
var fails$8 = fails$l
var global$2 = global$l
var $RegExp = global$2.RegExp
var regexpUnsupportedNcg = fails$8(function () {
var re2 = $RegExp('(?b)', 'g')
return re2.exec('b').groups.a !== 'b' || 'b'.replace(re2, '$c') !== 'bc'
})
var call$6 = functionCall
var uncurryThis$b = functionUncurryThis
var toString$8 = toString$9
var regexpFlags = regexpFlags$1
var stickyHelpers$1 = regexpStickyHelpers
var shared = shared$4.exports
var create$5 = objectCreate$1
var getInternalState$1 = internalState.get
var UNSUPPORTED_DOT_ALL = regexpUnsupportedDotAll
var UNSUPPORTED_NCG = regexpUnsupportedNcg
var nativeReplace = shared('native-string-replace', String.prototype.replace)
var nativeExec = RegExp.prototype.exec
var patchedExec = nativeExec
var charAt$3 = uncurryThis$b(''.charAt)
var indexOf$1 = uncurryThis$b(''.indexOf)
var replace$2 = uncurryThis$b(''.replace)
var stringSlice$5 = uncurryThis$b(''.slice)
var UPDATES_LAST_INDEX_WRONG = (function () {
var re1 = /a/
var re2 = /b*/g
call$6(nativeExec, re1, 'a')
call$6(nativeExec, re2, 'a')
return re1.lastIndex !== 0 || re2.lastIndex !== 0
})()
var UNSUPPORTED_Y$1 = stickyHelpers$1.BROKEN_CARET
var NPCG_INCLUDED = /()??/.exec('')[1] !== void 0
var PATCH =
UPDATES_LAST_INDEX_WRONG ||
NPCG_INCLUDED ||
UNSUPPORTED_Y$1 ||
UNSUPPORTED_DOT_ALL ||
UNSUPPORTED_NCG
if (PATCH) {
patchedExec = function exec2(string3) {
var re2 = this
var state2 = getInternalState$1(re2)
var str = toString$8(string3)
var raw = state2.raw
var result, reCopy, lastIndex, match2, i2, object4, group
if (raw) {
raw.lastIndex = re2.lastIndex
result = call$6(patchedExec, raw, str)
re2.lastIndex = raw.lastIndex
return result
}
var groups = state2.groups
var sticky = UNSUPPORTED_Y$1 && re2.sticky
var flags = call$6(regexpFlags, re2)
var source2 = re2.source
var charsAdded = 0
var strCopy = str
if (sticky) {
flags = replace$2(flags, 'y', '')
if (indexOf$1(flags, 'g') === -1) {
flags += 'g'
}
strCopy = stringSlice$5(str, re2.lastIndex)
if (
re2.lastIndex > 0 &&
(!re2.multiline ||
(re2.multiline && charAt$3(str, re2.lastIndex - 1) !== '\n'))
) {
source2 = '(?: ' + source2 + ')'
strCopy = ' ' + strCopy
charsAdded++
}
reCopy = new RegExp('^(?:' + source2 + ')', flags)
}
if (NPCG_INCLUDED) {
reCopy = new RegExp('^' + source2 + '$(?!\\s)', flags)
}
if (UPDATES_LAST_INDEX_WRONG) lastIndex = re2.lastIndex
match2 = call$6(nativeExec, sticky ? reCopy : re2, strCopy)
if (sticky) {
if (match2) {
match2.input = stringSlice$5(match2.input, charsAdded)
match2[0] = stringSlice$5(match2[0], charsAdded)
match2.index = re2.lastIndex
re2.lastIndex += match2[0].length
} else re2.lastIndex = 0
} else if (UPDATES_LAST_INDEX_WRONG && match2) {
re2.lastIndex = re2.global ? match2.index + match2[0].length : lastIndex
}
if (NPCG_INCLUDED && match2 && match2.length > 1) {
call$6(nativeReplace, match2[0], reCopy, function () {
for (i2 = 1; i2 < arguments.length - 2; i2++) {
if (arguments[i2] === void 0) match2[i2] = void 0
}
})
}
if (match2 && groups) {
match2.groups = object4 = create$5(null)
for (i2 = 0; i2 < groups.length; i2++) {
group = groups[i2]
object4[group[0]] = match2[group[1]]
}
}
return match2
}
}
var regexpExec$3 = patchedExec
var $$8 = _export
var exec$1 = regexpExec$3
$$8(
{ target: 'RegExp', proto: true, forced: /./.exec !== exec$1 },
{
exec: exec$1,
}
)
var uncurryThis$a = functionUncurryThisClause
var defineBuiltIn$3 = defineBuiltIn$7
var regexpExec$2 = regexpExec$3
var fails$7 = fails$l
var wellKnownSymbol$7 = wellKnownSymbol$i
var createNonEnumerableProperty$2 = createNonEnumerableProperty$5
var SPECIES = wellKnownSymbol$7('species')
var RegExpPrototype$2 = RegExp.prototype
var fixRegexpWellKnownSymbolLogic = function (KEY, exec2, FORCED2, SHAM) {
var SYMBOL = wellKnownSymbol$7(KEY)
var DELEGATES_TO_SYMBOL = !fails$7(function () {
var O2 = {}
O2[SYMBOL] = function () {
return 7
}
return ''[KEY](O2) !== 7
})
var DELEGATES_TO_EXEC =
DELEGATES_TO_SYMBOL &&
!fails$7(function () {
var execCalled = false
var re2 = /a/
if (KEY === 'split') {
re2 = {}
re2.constructor = {}
re2.constructor[SPECIES] = function () {
return re2
}
re2.flags = ''
re2[SYMBOL] = /./[SYMBOL]
}
re2.exec = function () {
execCalled = true
return null
}
re2[SYMBOL]('')
return !execCalled
})
if (!DELEGATES_TO_SYMBOL || !DELEGATES_TO_EXEC || FORCED2) {
var uncurriedNativeRegExpMethod = uncurryThis$a(/./[SYMBOL])
var methods = exec2(
SYMBOL,
''[KEY],
function (nativeMethod, regexp4, str, arg2, forceStringMethod) {
var uncurriedNativeMethod = uncurryThis$a(nativeMethod)
var $exec = regexp4.exec
if ($exec === regexpExec$2 || $exec === RegExpPrototype$2.exec) {
if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
return {
done: true,
value: uncurriedNativeRegExpMethod(regexp4, str, arg2),
}
}
return {
done: true,
value: uncurriedNativeMethod(str, regexp4, arg2),
}
}
return { done: false }
}
)
defineBuiltIn$3(String.prototype, KEY, methods[0])
defineBuiltIn$3(RegExpPrototype$2, SYMBOL, methods[1])
}
if (SHAM)
createNonEnumerableProperty$2(RegExpPrototype$2[SYMBOL], 'sham', true)
}
var uncurryThis$9 = functionUncurryThis
var toIntegerOrInfinity$1 = toIntegerOrInfinity$4
var toString$7 = toString$9
var requireObjectCoercible$7 = requireObjectCoercible$a
var charAt$2 = uncurryThis$9(''.charAt)
var charCodeAt = uncurryThis$9(''.charCodeAt)
var stringSlice$4 = uncurryThis$9(''.slice)
var createMethod$2 = function (CONVERT_TO_STRING) {
return function ($this, pos) {
var S2 = toString$7(requireObjectCoercible$7($this))
var position2 = toIntegerOrInfinity$1(pos)
var size = S2.length
var first2, second
if (position2 < 0 || position2 >= size)
return CONVERT_TO_STRING ? '' : void 0
first2 = charCodeAt(S2, position2)
return first2 < 55296 ||
first2 > 56319 ||
position2 + 1 === size ||
(second = charCodeAt(S2, position2 + 1)) < 56320 ||
second > 57343
? CONVERT_TO_STRING
? charAt$2(S2, position2)
: first2
: CONVERT_TO_STRING
? stringSlice$4(S2, position2, position2 + 2)
: ((first2 - 55296) << 10) + (second - 56320) + 65536
}
}
var stringMultibyte = {
codeAt: createMethod$2(false),
charAt: createMethod$2(true),
}
var charAt$1 = stringMultibyte.charAt
var advanceStringIndex$3 = function (S2, index2, unicode) {
return index2 + (unicode ? charAt$1(S2, index2).length : 1)
}
var call$5 = functionCall
var anObject$4 = anObject$g
var isCallable$4 = isCallable$m
var classof$2 = classofRaw$2
var regexpExec$1 = regexpExec$3
var $TypeError$2 = TypeError
var regexpExecAbstract = function (R2, S2) {
var exec2 = R2.exec
if (isCallable$4(exec2)) {
var result = call$5(exec2, R2, S2)
if (result !== null) anObject$4(result)
return result
}
if (classof$2(R2) === 'RegExp') return call$5(regexpExec$1, R2, S2)
throw new $TypeError$2('RegExp#exec called on incompatible receiver')
}
var call$4 = functionCall
var fixRegExpWellKnownSymbolLogic$2 = fixRegexpWellKnownSymbolLogic
var anObject$3 = anObject$g
var isNullOrUndefined$2 = isNullOrUndefined$7
var toLength$4 = toLength$6
var toString$6 = toString$9
var requireObjectCoercible$6 = requireObjectCoercible$a
var getMethod$2 = getMethod$6
var advanceStringIndex$2 = advanceStringIndex$3
var regExpExec$1 = regexpExecAbstract
fixRegExpWellKnownSymbolLogic$2(
'match',
function (MATCH2, nativeMatch, maybeCallNative) {
return [
function match2(regexp4) {
var O2 = requireObjectCoercible$6(this)
var matcher = isNullOrUndefined$2(regexp4)
? void 0
: getMethod$2(regexp4, MATCH2)
return matcher
? call$4(matcher, regexp4, O2)
: new RegExp(regexp4)[MATCH2](toString$6(O2))
},
function (string3) {
var rx = anObject$3(this)
var S2 = toString$6(string3)
var res = maybeCallNative(nativeMatch, rx, S2)
if (res.done) return res.value
if (!rx.global) return regExpExec$1(rx, S2)
var fullUnicode = rx.unicode
rx.lastIndex = 0
var A2 = []
var n2 = 0
var result
while ((result = regExpExec$1(rx, S2)) !== null) {
var matchStr = toString$6(result[0])
A2[n2] = matchStr
if (matchStr === '')
rx.lastIndex = advanceStringIndex$2(
S2,
toLength$4(rx.lastIndex),
fullUnicode
)
n2++
}
return n2 === 0 ? null : A2
},
]
}
)
var uncurryThis$8 = functionUncurryThis
var toObject$2 = toObject$4
var floor = Math.floor
var charAt = uncurryThis$8(''.charAt)
var replace$1 = uncurryThis$8(''.replace)
var stringSlice$3 = uncurryThis$8(''.slice)
var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d{1,2}|<[^>]*>)/g
var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d{1,2})/g
var getSubstitution$1 = function (
matched,
str,
position2,
captures,
namedCaptures,
replacement2
) {
var tailPos = position2 + matched.length
var m2 = captures.length
var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED
if (namedCaptures !== void 0) {
namedCaptures = toObject$2(namedCaptures)
symbols = SUBSTITUTION_SYMBOLS
}
return replace$1(replacement2, symbols, function (match2, ch) {
var capture
switch (charAt(ch, 0)) {
case '$':
return '$'
case '&':
return matched
case '`':
return stringSlice$3(str, 0, position2)
case "'":
return stringSlice$3(str, tailPos)
case '<':
capture = namedCaptures[stringSlice$3(ch, 1, -1)]
break
default:
var n2 = +ch
if (n2 === 0) return match2
if (n2 > m2) {
var f2 = floor(n2 / 10)
if (f2 === 0) return match2
if (f2 <= m2)
return captures[f2 - 1] === void 0
? charAt(ch, 1)
: captures[f2 - 1] + charAt(ch, 1)
return match2
}
capture = captures[n2 - 1]
}
return capture === void 0 ? '' : capture
})
}
var apply$2 = functionApply
var call$3 = functionCall
var uncurryThis$7 = functionUncurryThis
var fixRegExpWellKnownSymbolLogic$1 = fixRegexpWellKnownSymbolLogic
var fails$6 = fails$l
var anObject$2 = anObject$g
var isCallable$3 = isCallable$m
var isNullOrUndefined$1 = isNullOrUndefined$7
var toIntegerOrInfinity = toIntegerOrInfinity$4
var toLength$3 = toLength$6
var toString$5 = toString$9
var requireObjectCoercible$5 = requireObjectCoercible$a
var advanceStringIndex$1 = advanceStringIndex$3
var getMethod$1 = getMethod$6
var getSubstitution = getSubstitution$1
var regExpExec = regexpExecAbstract
var wellKnownSymbol$6 = wellKnownSymbol$i
var REPLACE = wellKnownSymbol$6('replace')
var max$4 = Math.max
var min$5 = Math.min
var concat = uncurryThis$7([].concat)
var push$2 = uncurryThis$7([].push)
var stringIndexOf$1 = uncurryThis$7(''.indexOf)
var stringSlice$2 = uncurryThis$7(''.slice)
var maybeToString = function (it2) {
return it2 === void 0 ? it2 : String(it2)
}
var REPLACE_KEEPS_$0 = (function () {
return 'a'.replace(/./, '$0') === '$0'
})()
var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {
if (/./[REPLACE]) {
return /./[REPLACE]('a', '$0') === ''
}
return false
})()
var REPLACE_SUPPORTS_NAMED_GROUPS = !fails$6(function () {
var re2 = /./
re2.exec = function () {
var result = []
result.groups = { a: '7' }
return result
}
return ''.replace(re2, '$') !== '7'
})
fixRegExpWellKnownSymbolLogic$1(
'replace',
function (_2, nativeReplace2, maybeCallNative) {
var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE
? '$'
: '$0'
return [
function replace2(searchValue, replaceValue) {
var O2 = requireObjectCoercible$5(this)
var replacer = isNullOrUndefined$1(searchValue)
? void 0
: getMethod$1(searchValue, REPLACE)
return replacer
? call$3(replacer, searchValue, O2, replaceValue)
: call$3(nativeReplace2, toString$5(O2), searchValue, replaceValue)
},
function (string3, replaceValue) {
var rx = anObject$2(this)
var S2 = toString$5(string3)
if (
typeof replaceValue == 'string' &&
stringIndexOf$1(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&
stringIndexOf$1(replaceValue, '$<') === -1
) {
var res = maybeCallNative(nativeReplace2, rx, S2, replaceValue)
if (res.done) return res.value
}
var functionalReplace = isCallable$3(replaceValue)
if (!functionalReplace) replaceValue = toString$5(replaceValue)
var global2 = rx.global
var fullUnicode
if (global2) {
fullUnicode = rx.unicode
rx.lastIndex = 0
}
var results = []
var result
while (true) {
result = regExpExec(rx, S2)
if (result === null) break
push$2(results, result)
if (!global2) break
var matchStr = toString$5(result[0])
if (matchStr === '')
rx.lastIndex = advanceStringIndex$1(
S2,
toLength$3(rx.lastIndex),
fullUnicode
)
}
var accumulatedResult = ''
var nextSourcePosition = 0
for (var i2 = 0; i2 < results.length; i2++) {
result = results[i2]
var matched = toString$5(result[0])
var position2 = max$4(
min$5(toIntegerOrInfinity(result.index), S2.length),
0
)
var captures = []
var replacement2
for (var j2 = 1; j2 < result.length; j2++)
push$2(captures, maybeToString(result[j2]))
var namedCaptures = result.groups
if (functionalReplace) {
var replacerArgs = concat([matched], captures, position2, S2)
if (namedCaptures !== void 0) push$2(replacerArgs, namedCaptures)
replacement2 = toString$5(
apply$2(replaceValue, void 0, replacerArgs)
)
} else {
replacement2 = getSubstitution(
matched,
S2,
position2,
captures,
namedCaptures,
replaceValue
)
}
if (position2 >= nextSourcePosition) {
accumulatedResult +=
stringSlice$2(S2, nextSourcePosition, position2) + replacement2
nextSourcePosition = position2 + matched.length
}
}
return accumulatedResult + stringSlice$2(S2, nextSourcePosition)
},
]
},
!REPLACE_SUPPORTS_NAMED_GROUPS ||
!REPLACE_KEEPS_$0 ||
REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE
)
var isObject$d = isObject$l
var classof$1 = classofRaw$2
var wellKnownSymbol$5 = wellKnownSymbol$i
var MATCH$1 = wellKnownSymbol$5('match')
var isRegexp = function (it2) {
var isRegExp2
return (
isObject$d(it2) &&
((isRegExp2 = it2[MATCH$1]) !== void 0
? !!isRegExp2
: classof$1(it2) === 'RegExp')
)
}
var isRegExp$3 = isRegexp
var $TypeError$1 = TypeError
var notARegexp = function (it2) {
if (isRegExp$3(it2)) {
throw new $TypeError$1("The method doesn't accept regular expressions")
}
return it2
}
var wellKnownSymbol$4 = wellKnownSymbol$i
var MATCH = wellKnownSymbol$4('match')
var correctIsRegexpLogic = function (METHOD_NAME) {
var regexp4 = /./
try {
'/./'[METHOD_NAME](regexp4)
} catch (error1) {
try {
regexp4[MATCH] = false
return '/./'[METHOD_NAME](regexp4)
} catch (error2) {}
}
return false
}
var $$7 = _export
var uncurryThis$6 = functionUncurryThisClause
var getOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f
var toLength$2 = toLength$6
var toString$4 = toString$9
var notARegExp$2 = notARegexp
var requireObjectCoercible$4 = requireObjectCoercible$a
var correctIsRegExpLogic$2 = correctIsRegexpLogic
var nativeStartsWith = uncurryThis$6(''.startsWith)
var stringSlice$1 = uncurryThis$6(''.slice)
var min$4 = Math.min
var CORRECT_IS_REGEXP_LOGIC$1 = correctIsRegExpLogic$2('startsWith')
var MDN_POLYFILL_BUG$1 =
!CORRECT_IS_REGEXP_LOGIC$1 &&
!!(function () {
var descriptor = getOwnPropertyDescriptor$1(String.prototype, 'startsWith')
return descriptor && !descriptor.writable
})()
$$7(
{
target: 'String',
proto: true,
forced: !MDN_POLYFILL_BUG$1 && !CORRECT_IS_REGEXP_LOGIC$1,
},
{
startsWith: function startsWith2(searchString) {
var that = toString$4(requireObjectCoercible$4(this))
notARegExp$2(searchString)
var index2 = toLength$2(
min$4(arguments.length > 1 ? arguments[1] : void 0, that.length)
)
var search2 = toString$4(searchString)
return nativeStartsWith
? nativeStartsWith(that, search2, index2)
: stringSlice$1(that, index2, index2 + search2.length) === search2
},
}
)
var wellKnownSymbol$3 = wellKnownSymbol$i
var create$4 = objectCreate$1
var defineProperty$3 = objectDefineProperty.f
var UNSCOPABLES = wellKnownSymbol$3('unscopables')
var ArrayPrototype = Array.prototype
if (ArrayPrototype[UNSCOPABLES] === void 0) {
defineProperty$3(ArrayPrototype, UNSCOPABLES, {
configurable: true,
value: create$4(null),
})
}
var addToUnscopables$1 = function (key2) {
ArrayPrototype[UNSCOPABLES][key2] = true
}
var fails$5 = fails$l
var correctPrototypeGetter = !fails$5(function () {
function F2() {}
F2.prototype.constructor = null
return Object.getPrototypeOf(new F2()) !== F2.prototype
})
var hasOwn$3 = hasOwnProperty_1
var isCallable$2 = isCallable$m
var toObject$1 = toObject$4
var sharedKey = sharedKey$3
var CORRECT_PROTOTYPE_GETTER = correctPrototypeGetter
var IE_PROTO = sharedKey('IE_PROTO')
var $Object = Object
var ObjectPrototype = $Object.prototype
var objectGetPrototypeOf = CORRECT_PROTOTYPE_GETTER
? $Object.getPrototypeOf
: function (O2) {
var object4 = toObject$1(O2)
if (hasOwn$3(object4, IE_PROTO)) return object4[IE_PROTO]
var constructor = object4.constructor
if (isCallable$2(constructor) && object4 instanceof constructor) {
return constructor.prototype
}
return object4 instanceof $Object ? ObjectPrototype : null
}
var fails$4 = fails$l
var isCallable$1 = isCallable$m
var isObject$c = isObject$l
var getPrototypeOf$1 = objectGetPrototypeOf
var defineBuiltIn$2 = defineBuiltIn$7
var wellKnownSymbol$2 = wellKnownSymbol$i
var ITERATOR$2 = wellKnownSymbol$2('iterator')
var BUGGY_SAFARI_ITERATORS$1 = false
var IteratorPrototype$2, PrototypeOfArrayIteratorPrototype, arrayIterator
if ([].keys) {
arrayIterator = [].keys()
if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS$1 = true
else {
PrototypeOfArrayIteratorPrototype = getPrototypeOf$1(
getPrototypeOf$1(arrayIterator)
)
if (PrototypeOfArrayIteratorPrototype !== Object.prototype)
IteratorPrototype$2 = PrototypeOfArrayIteratorPrototype
}
}
var NEW_ITERATOR_PROTOTYPE =
!isObject$c(IteratorPrototype$2) ||
fails$4(function () {
var test2 = {}
return IteratorPrototype$2[ITERATOR$2].call(test2) !== test2
})
if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype$2 = {}
if (!isCallable$1(IteratorPrototype$2[ITERATOR$2])) {
defineBuiltIn$2(IteratorPrototype$2, ITERATOR$2, function () {
return this
})
}
var iteratorsCore = {
IteratorPrototype: IteratorPrototype$2,
BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS$1,
}
var IteratorPrototype$1 = iteratorsCore.IteratorPrototype
var create$3 = objectCreate$1
var createPropertyDescriptor$1 = createPropertyDescriptor$4
var setToStringTag$1 = setToStringTag$3
var Iterators$2 = iterators
var returnThis$1 = function () {
return this
}
var iteratorCreateConstructor = function (
IteratorConstructor,
NAME2,
next,
ENUMERABLE_NEXT
) {
var TO_STRING_TAG2 = NAME2 + ' Iterator'
IteratorConstructor.prototype = create$3(IteratorPrototype$1, {
next: createPropertyDescriptor$1(+!ENUMERABLE_NEXT, next),
})
setToStringTag$1(IteratorConstructor, TO_STRING_TAG2, false)
Iterators$2[TO_STRING_TAG2] = returnThis$1
return IteratorConstructor
}
var $$6 = _export
var call$2 = functionCall
var FunctionName = functionName
var isCallable = isCallable$m
var createIteratorConstructor = iteratorCreateConstructor
var getPrototypeOf = objectGetPrototypeOf
var setPrototypeOf = objectSetPrototypeOf
var setToStringTag = setToStringTag$3
var createNonEnumerableProperty$1 = createNonEnumerableProperty$5
var defineBuiltIn$1 = defineBuiltIn$7
var wellKnownSymbol$1 = wellKnownSymbol$i
var Iterators$1 = iterators
var IteratorsCore = iteratorsCore
var PROPER_FUNCTION_NAME$2 = FunctionName.PROPER
var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE
var IteratorPrototype = IteratorsCore.IteratorPrototype
var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS
var ITERATOR$1 = wellKnownSymbol$1('iterator')
var KEYS = 'keys'
var VALUES = 'values'
var ENTRIES = 'entries'
var returnThis = function () {
return this
}
var iteratorDefine = function (
Iterable,
NAME2,
IteratorConstructor,
next,
DEFAULT2,
IS_SET,
FORCED2
) {
createIteratorConstructor(IteratorConstructor, NAME2, next)
var getIterationMethod = function (KIND) {
if (KIND === DEFAULT2 && defaultIterator) return defaultIterator
if (!BUGGY_SAFARI_ITERATORS && KIND && KIND in IterablePrototype)
return IterablePrototype[KIND]
switch (KIND) {
case KEYS:
return function keys3() {
return new IteratorConstructor(this, KIND)
}
case VALUES:
return function values2() {
return new IteratorConstructor(this, KIND)
}
case ENTRIES:
return function entries2() {
return new IteratorConstructor(this, KIND)
}
}
return function () {
return new IteratorConstructor(this)
}
}
var TO_STRING_TAG2 = NAME2 + ' Iterator'
var INCORRECT_VALUES_NAME = false
var IterablePrototype = Iterable.prototype
var nativeIterator =
IterablePrototype[ITERATOR$1] ||
IterablePrototype['@@iterator'] ||
(DEFAULT2 && IterablePrototype[DEFAULT2])
var defaultIterator =
(!BUGGY_SAFARI_ITERATORS && nativeIterator) || getIterationMethod(DEFAULT2)
var anyNativeIterator =
NAME2 === 'Array'
? IterablePrototype.entries || nativeIterator
: nativeIterator
var CurrentIteratorPrototype, methods, KEY
if (anyNativeIterator) {
CurrentIteratorPrototype = getPrototypeOf(
anyNativeIterator.call(new Iterable())
)
if (
CurrentIteratorPrototype !== Object.prototype &&
CurrentIteratorPrototype.next
) {
if (getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {
if (setPrototypeOf) {
setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype)
} else if (!isCallable(CurrentIteratorPrototype[ITERATOR$1])) {
defineBuiltIn$1(CurrentIteratorPrototype, ITERATOR$1, returnThis)
}
}
setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG2, true)
}
}
if (
PROPER_FUNCTION_NAME$2 &&
DEFAULT2 === VALUES &&
nativeIterator &&
nativeIterator.name !== VALUES
) {
if (CONFIGURABLE_FUNCTION_NAME) {
createNonEnumerableProperty$1(IterablePrototype, 'name', VALUES)
} else {
INCORRECT_VALUES_NAME = true
defaultIterator = function values2() {
return call$2(nativeIterator, this)
}
}
}
if (DEFAULT2) {
methods = {
values: getIterationMethod(VALUES),
keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),
entries: getIterationMethod(ENTRIES),
}
if (FORCED2)
for (KEY in methods) {
if (
BUGGY_SAFARI_ITERATORS ||
INCORRECT_VALUES_NAME ||
!(KEY in IterablePrototype)
) {
defineBuiltIn$1(IterablePrototype, KEY, methods[KEY])
}
}
else
$$6(
{
target: NAME2,
proto: true,
forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME,
},
methods
)
}
if (IterablePrototype[ITERATOR$1] !== defaultIterator) {
defineBuiltIn$1(IterablePrototype, ITERATOR$1, defaultIterator, {
name: DEFAULT2,
})
}
Iterators$1[NAME2] = defaultIterator
return methods
}
var createIterResultObject$1 = function (value2, done) {
return { value: value2, done }
}
var toIndexedObject = toIndexedObject$5
var addToUnscopables = addToUnscopables$1
var Iterators = iterators
var InternalStateModule = internalState
var defineProperty$2 = objectDefineProperty.f
var defineIterator = iteratorDefine
var createIterResultObject = createIterResultObject$1
var DESCRIPTORS = descriptors
var ARRAY_ITERATOR = 'Array Iterator'
var setInternalState = InternalStateModule.set
var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR)
var es_array_iterator = defineIterator(
Array,
'Array',
function (iterated, kind) {
setInternalState(this, {
type: ARRAY_ITERATOR,
target: toIndexedObject(iterated),
index: 0,
kind,
})
},
function () {
var state2 = getInternalState(this)
var target2 = state2.target
var index2 = state2.index++
if (!target2 || index2 >= target2.length) {
state2.target = void 0
return createIterResultObject(void 0, true)
}
switch (state2.kind) {
case 'keys':
return createIterResultObject(index2, false)
case 'values':
return createIterResultObject(target2[index2], false)
}
return createIterResultObject([index2, target2[index2]], false)
},
'values'
)
var values = (Iterators.Arguments = Iterators.Array)
addToUnscopables('keys')
addToUnscopables('values')
addToUnscopables('entries')
if (DESCRIPTORS && values.name !== 'values')
try {
defineProperty$2(values, 'name', { value: 'values' })
} catch (error2) {}
var domIterables = {
CSSRuleList: 0,
CSSStyleDeclaration: 0,
CSSValueList: 0,
ClientRectList: 0,
DOMRectList: 0,
DOMStringList: 0,
DOMTokenList: 1,
DataTransferItemList: 0,
FileList: 0,
HTMLAllCollection: 0,
HTMLCollection: 0,
HTMLFormElement: 0,
HTMLSelectElement: 0,
MediaList: 0,
MimeTypeArray: 0,
NamedNodeMap: 0,
NodeList: 1,
PaintRequestList: 0,
Plugin: 0,
PluginArray: 0,
SVGLengthList: 0,
SVGNumberList: 0,
SVGPathSegList: 0,
SVGPointList: 0,
SVGStringList: 0,
SVGTransformList: 0,
SourceBufferList: 0,
StyleSheetList: 0,
TextTrackCueList: 0,
TextTrackList: 0,
TouchList: 0,
}
var documentCreateElement = documentCreateElement$2
var classList = documentCreateElement('span').classList
var DOMTokenListPrototype$1 =
classList && classList.constructor && classList.constructor.prototype
var domTokenListPrototype =
DOMTokenListPrototype$1 === Object.prototype
? void 0
: DOMTokenListPrototype$1
var global$1 = global$l
var DOMIterables = domIterables
var DOMTokenListPrototype = domTokenListPrototype
var ArrayIteratorMethods = es_array_iterator
var createNonEnumerableProperty = createNonEnumerableProperty$5
var wellKnownSymbol = wellKnownSymbol$i
var ITERATOR = wellKnownSymbol('iterator')
var TO_STRING_TAG = wellKnownSymbol('toStringTag')
var ArrayValues = ArrayIteratorMethods.values
var handlePrototype = function (CollectionPrototype, COLLECTION_NAME2) {
if (CollectionPrototype) {
if (CollectionPrototype[ITERATOR] !== ArrayValues)
try {
createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues)
} catch (error2) {
CollectionPrototype[ITERATOR] = ArrayValues
}
if (!CollectionPrototype[TO_STRING_TAG]) {
createNonEnumerableProperty(
CollectionPrototype,
TO_STRING_TAG,
COLLECTION_NAME2
)
}
if (DOMIterables[COLLECTION_NAME2])
for (var METHOD_NAME in ArrayIteratorMethods) {
if (
CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]
)
try {
createNonEnumerableProperty(
CollectionPrototype,
METHOD_NAME,
ArrayIteratorMethods[METHOD_NAME]
)
} catch (error2) {
CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME]
}
}
}
}
for (var COLLECTION_NAME in DOMIterables) {
handlePrototype(
global$1[COLLECTION_NAME] && global$1[COLLECTION_NAME].prototype,
COLLECTION_NAME
)
}
handlePrototype(DOMTokenListPrototype, 'DOMTokenList')
function _toPrimitive(input, hint) {
if (_typeof$3(input) !== 'object' || input === null) return input
var prim = input[Symbol.toPrimitive]
if (prim !== void 0) {
var res = prim.call(input, hint || 'default')
if (_typeof$3(res) !== 'object') return res
throw new TypeError('@@toPrimitive must return a primitive value.')
}
return (hint === 'string' ? String : Number)(input)
}
function _toPropertyKey(arg) {
var key2 = _toPrimitive(arg, 'string')
return _typeof$3(key2) === 'symbol' ? key2 : String(key2)
}
function _defineProperty$2(obj, key2, value2) {
key2 = _toPropertyKey(key2)
if (key2 in obj) {
Object.defineProperty(obj, key2, {
value: value2,
enumerable: true,
configurable: true,
writable: true,
})
} else {
obj[key2] = value2
}
return obj
}
var aCallable = aCallable$9
var toObject = toObject$4
var IndexedObject = indexedObject
var lengthOfArrayLike$1 = lengthOfArrayLike$4
var $TypeError = TypeError
var createMethod$1 = function (IS_RIGHT) {
return function (that, callbackfn, argumentsLength, memo) {
aCallable(callbackfn)
var O2 = toObject(that)
var self2 = IndexedObject(O2)
var length2 = lengthOfArrayLike$1(O2)
var index2 = IS_RIGHT ? length2 - 1 : 0
var i2 = IS_RIGHT ? -1 : 1
if (argumentsLength < 2)
while (true) {
if (index2 in self2) {
memo = self2[index2]
index2 += i2
break
}
index2 += i2
if (IS_RIGHT ? index2 < 0 : length2 <= index2) {
throw new $TypeError('Reduce of empty array with no initial value')
}
}
for (; IS_RIGHT ? index2 >= 0 : length2 > index2; index2 += i2)
if (index2 in self2) {
memo = callbackfn(memo, self2[index2], index2, O2)
}
return memo
}
}
var arrayReduce = {
left: createMethod$1(false),
right: createMethod$1(true),
}
var fails$3 = fails$l
var arrayMethodIsStrict$2 = function (METHOD_NAME, argument) {
var method4 = [][METHOD_NAME]
return (
!!method4 &&
fails$3(function () {
method4.call(
null,
argument ||
function () {
return 1
},
1
)
})
)
}
var $$5 = _export
var $reduce = arrayReduce.left
var arrayMethodIsStrict$1 = arrayMethodIsStrict$2
var CHROME_VERSION = engineV8Version
var IS_NODE = engineIsNode
var CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83
var FORCED$1 = CHROME_BUG || !arrayMethodIsStrict$1('reduce')
$$5(
{ target: 'Array', proto: true, forced: FORCED$1 },
{
reduce: function reduce2(callbackfn) {
var length2 = arguments.length
return $reduce(
this,
callbackfn,
length2,
length2 > 1 ? arguments[1] : void 0
)
},
}
)
var $$4 = _export
var uncurryThis$5 = functionUncurryThisClause
var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f
var toLength$1 = toLength$6
var toString$3 = toString$9
var notARegExp$1 = notARegexp
var requireObjectCoercible$3 = requireObjectCoercible$a
var correctIsRegExpLogic$1 = correctIsRegexpLogic
var nativeEndsWith = uncurryThis$5(''.endsWith)
var slice$1 = uncurryThis$5(''.slice)
var min$3 = Math.min
var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic$1('endsWith')
var MDN_POLYFILL_BUG =
!CORRECT_IS_REGEXP_LOGIC &&
!!(function () {
var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith')
return descriptor && !descriptor.writable
})()
$$4(
{
target: 'String',
proto: true,
forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC,
},
{
endsWith: function endsWith2(searchString) {
var that = toString$3(requireObjectCoercible$3(this))
notARegExp$1(searchString)
var endPosition = arguments.length > 1 ? arguments[1] : void 0
var len2 = that.length
var end2 =
endPosition === void 0 ? len2 : min$3(toLength$1(endPosition), len2)
var search2 = toString$3(searchString)
return nativeEndsWith
? nativeEndsWith(that, search2, end2)
: slice$1(that, end2 - search2.length, end2) === search2
},
}
)
var toPropertyKey = toPropertyKey$3
var definePropertyModule = objectDefineProperty
var createPropertyDescriptor = createPropertyDescriptor$4
var createProperty$1 = function (object4, key2, value2) {
var propertyKey = toPropertyKey(key2)
if (propertyKey in object4)
definePropertyModule.f(
object4,
propertyKey,
createPropertyDescriptor(0, value2)
)
else object4[propertyKey] = value2
}
var toAbsoluteIndex = toAbsoluteIndex$2
var lengthOfArrayLike = lengthOfArrayLike$4
var createProperty = createProperty$1
var $Array = Array
var max$3 = Math.max
var arraySliceSimple = function (O2, start2, end2) {
var length2 = lengthOfArrayLike(O2)
var k2 = toAbsoluteIndex(start2, length2)
var fin = toAbsoluteIndex(end2 === void 0 ? length2 : end2, length2)
var result = $Array(max$3(fin - k2, 0))
var n2 = 0
for (; k2 < fin; k2++, n2++) createProperty(result, n2, O2[k2])
result.length = n2
return result
}
var apply$1 = functionApply
var call$1 = functionCall
var uncurryThis$4 = functionUncurryThis
var fixRegExpWellKnownSymbolLogic = fixRegexpWellKnownSymbolLogic
var anObject$1 = anObject$g
var isNullOrUndefined = isNullOrUndefined$7
var isRegExp$2 = isRegexp
var requireObjectCoercible$2 = requireObjectCoercible$a
var speciesConstructor = speciesConstructor$2
var advanceStringIndex = advanceStringIndex$3
var toLength = toLength$6
var toString$2 = toString$9
var getMethod = getMethod$6
var arraySlice$1 = arraySliceSimple
var callRegExpExec = regexpExecAbstract
var regexpExec = regexpExec$3
var stickyHelpers = regexpStickyHelpers
var fails$2 = fails$l
var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y
var MAX_UINT32 = 4294967295
var min$2 = Math.min
var $push = [].push
var exec = uncurryThis$4(/./.exec)
var push$1 = uncurryThis$4($push)
var stringSlice = uncurryThis$4(''.slice)
var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails$2(function () {
var re2 = /(?:)/
var originalExec = re2.exec
re2.exec = function () {
return originalExec.apply(this, arguments)
}
var result = 'ab'.split(re2)
return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b'
})
fixRegExpWellKnownSymbolLogic(
'split',
function (SPLIT, nativeSplit, maybeCallNative) {
var internalSplit
if (
'abbc'.split(/(b)*/)[1] === 'c' ||
'test'.split(/(?:)/, -1).length !== 4 ||
'ab'.split(/(?:ab)*/).length !== 2 ||
'.'.split(/(.?)(.?)/).length !== 4 ||
'.'.split(/()()/).length > 1 ||
''.split(/.?/).length
) {
internalSplit = function (separator, limit2) {
var string3 = toString$2(requireObjectCoercible$2(this))
var lim = limit2 === void 0 ? MAX_UINT32 : limit2 >>> 0
if (lim === 0) return []
if (separator === void 0) return [string3]
if (!isRegExp$2(separator)) {
return call$1(nativeSplit, string3, separator, lim)
}
var output = []
var flags =
(separator.ignoreCase ? 'i' : '') +
(separator.multiline ? 'm' : '') +
(separator.unicode ? 'u' : '') +
(separator.sticky ? 'y' : '')
var lastLastIndex = 0
var separatorCopy = new RegExp(separator.source, flags + 'g')
var match2, lastIndex, lastLength
while ((match2 = call$1(regexpExec, separatorCopy, string3))) {
lastIndex = separatorCopy.lastIndex
if (lastIndex > lastLastIndex) {
push$1(output, stringSlice(string3, lastLastIndex, match2.index))
if (match2.length > 1 && match2.index < string3.length)
apply$1($push, output, arraySlice$1(match2, 1))
lastLength = match2[0].length
lastLastIndex = lastIndex
if (output.length >= lim) break
}
if (separatorCopy.lastIndex === match2.index)
separatorCopy.lastIndex++
}
if (lastLastIndex === string3.length) {
if (lastLength || !exec(separatorCopy, '')) push$1(output, '')
} else push$1(output, stringSlice(string3, lastLastIndex))
return output.length > lim ? arraySlice$1(output, 0, lim) : output
}
} else if ('0'.split(void 0, 0).length) {
internalSplit = function (separator, limit2) {
return separator === void 0 && limit2 === 0
? []
: call$1(nativeSplit, this, separator, limit2)
}
} else internalSplit = nativeSplit
return [
function split2(separator, limit2) {
var O2 = requireObjectCoercible$2(this)
var splitter = isNullOrUndefined(separator)
? void 0
: getMethod(separator, SPLIT)
return splitter
? call$1(splitter, separator, O2, limit2)
: call$1(internalSplit, toString$2(O2), separator, limit2)
},
function (string3, limit2) {
var rx = anObject$1(this)
var S2 = toString$2(string3)
var res = maybeCallNative(
internalSplit,
rx,
S2,
limit2,
internalSplit !== nativeSplit
)
if (res.done) return res.value
var C2 = speciesConstructor(rx, RegExp)
var unicodeMatching = rx.unicode
var flags =
(rx.ignoreCase ? 'i' : '') +
(rx.multiline ? 'm' : '') +
(rx.unicode ? 'u' : '') +
(UNSUPPORTED_Y ? 'g' : 'y')
var splitter = new C2(
UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx,
flags
)
var lim = limit2 === void 0 ? MAX_UINT32 : limit2 >>> 0
if (lim === 0) return []
if (S2.length === 0)
return callRegExpExec(splitter, S2) === null ? [S2] : []
var p2 = 0
var q2 = 0
var A2 = []
while (q2 < S2.length) {
splitter.lastIndex = UNSUPPORTED_Y ? 0 : q2
var z2 = callRegExpExec(
splitter,
UNSUPPORTED_Y ? stringSlice(S2, q2) : S2
)
var e2
if (
z2 === null ||
(e2 = min$2(
toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q2 : 0)),
S2.length
)) === p2
) {
q2 = advanceStringIndex(S2, q2, unicodeMatching)
} else {
push$1(A2, stringSlice(S2, p2, q2))
if (A2.length === lim) return A2
for (var i2 = 1; i2 <= z2.length - 1; i2++) {
push$1(A2, z2[i2])
if (A2.length === lim) return A2
}
q2 = p2 = e2
}
}
push$1(A2, stringSlice(S2, p2))
return A2
},
]
},
!SPLIT_WORKS_WITH_OVERWRITTEN_EXEC,
UNSUPPORTED_Y
)
var raf$1 = { exports: {} }
var performanceNow = { exports: {} }
;(function () {
var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime
if (
typeof performance !== 'undefined' &&
performance !== null &&
performance.now
) {
performanceNow.exports = function () {
return performance.now()
}
} else if (
typeof process !== 'undefined' &&
process !== null &&
process.hrtime
) {
performanceNow.exports = function () {
return (getNanoSeconds() - nodeLoadTime) / 1e6
}
hrtime = process.hrtime
getNanoSeconds = function () {
var hr2
hr2 = hrtime()
return hr2[0] * 1e9 + hr2[1]
}
moduleLoadTime = getNanoSeconds()
upTime = process.uptime() * 1e9
nodeLoadTime = moduleLoadTime - upTime
} else if (Date.now) {
performanceNow.exports = function () {
return Date.now() - loadTime
}
loadTime = Date.now()
} else {
performanceNow.exports = function () {
return new Date().getTime() - loadTime
}
loadTime = new Date().getTime()
}
}).call(commonjsGlobal)
var now = performanceNow.exports,
root$9 = typeof window === 'undefined' ? commonjsGlobal : window,
vendors = ['moz', 'webkit'],
suffix = 'AnimationFrame',
raf = root$9['request' + suffix],
caf = root$9['cancel' + suffix] || root$9['cancelRequest' + suffix]
for (var i$2 = 0; !raf && i$2 < vendors.length; i$2++) {
raf = root$9[vendors[i$2] + 'Request' + suffix]
caf =
root$9[vendors[i$2] + 'Cancel' + suffix] ||
root$9[vendors[i$2] + 'CancelRequest' + suffix]
}
if (!raf || !caf) {
var last = 0,
id = 0,
queue = [],
frameDuration = 1e3 / 60
raf = function (callback) {
if (queue.length === 0) {
var _now = now(),
next = Math.max(0, frameDuration - (_now - last))
last = next + _now
setTimeout(function () {
var cp = queue.slice(0)
queue.length = 0
for (var i2 = 0; i2 < cp.length; i2++) {
if (!cp[i2].cancelled) {
try {
cp[i2].callback(last)
} catch (e2) {
setTimeout(function () {
throw e2
}, 0)
}
}
}
}, Math.round(next))
}
queue.push({
handle: ++id,
callback,
cancelled: false,
})
return id
}
caf = function (handle) {
for (var i2 = 0; i2 < queue.length; i2++) {
if (queue[i2].handle === handle) {
queue[i2].cancelled = true
}
}
}
}
raf$1.exports = function (fn2) {
return raf.call(root$9, fn2)
}
raf$1.exports.cancel = function () {
caf.apply(root$9, arguments)
}
raf$1.exports.polyfill = function (object4) {
if (!object4) {
object4 = root$9
}
object4.requestAnimationFrame = raf
object4.cancelAnimationFrame = caf
}
var requestAnimationFrame$3 = raf$1.exports
var whitespaces$2 =
' \n\v\f\r \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF'
var uncurryThis$3 = functionUncurryThis
var requireObjectCoercible$1 = requireObjectCoercible$a
var toString$1 = toString$9
var whitespaces$1 = whitespaces$2
var replace = uncurryThis$3(''.replace)
var ltrim = RegExp('^[' + whitespaces$1 + ']+')
var rtrim = RegExp('(^|[^' + whitespaces$1 + '])[' + whitespaces$1 + ']+$')
var createMethod = function (TYPE) {
return function ($this) {
var string3 = toString$1(requireObjectCoercible$1($this))
if (TYPE & 1) string3 = replace(string3, ltrim, '')
if (TYPE & 2) string3 = replace(string3, rtrim, '$1')
return string3
}
}
var stringTrim = {
start: createMethod(1),
end: createMethod(2),
trim: createMethod(3),
}
var PROPER_FUNCTION_NAME$1 = functionName.PROPER
var fails$1 = fails$l
var whitespaces = whitespaces$2
var non = '\u200B\x85\u180E'
var stringTrimForced = function (METHOD_NAME) {
return fails$1(function () {
return (
!!whitespaces[METHOD_NAME]() ||
non[METHOD_NAME]() !== non ||
(PROPER_FUNCTION_NAME$1 && whitespaces[METHOD_NAME].name !== METHOD_NAME)
)
})
}
var $$3 = _export
var $trim = stringTrim.trim
var forcedStringTrimMethod = stringTrimForced
$$3(
{ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') },
{
trim: function trim2() {
return $trim(this)
},
}
)
var rgbcolor = function (color_string) {
this.ok = false
this.alpha = 1
if (color_string.charAt(0) == '#') {
color_string = color_string.substr(1, 6)
}
color_string = color_string.replace(/ /g, '')
color_string = color_string.toLowerCase()
var simple_colors = {
aliceblue: 'f0f8ff',
antiquewhite: 'faebd7',
aqua: '00ffff',
aquamarine: '7fffd4',
azure: 'f0ffff',
beige: 'f5f5dc',
bisque: 'ffe4c4',
black: '000000',
blanchedalmond: 'ffebcd',
blue: '0000ff',
blueviolet: '8a2be2',
brown: 'a52a2a',
burlywood: 'deb887',
cadetblue: '5f9ea0',
chartreuse: '7fff00',
chocolate: 'd2691e',
coral: 'ff7f50',
cornflowerblue: '6495ed',
cornsilk: 'fff8dc',
crimson: 'dc143c',
cyan: '00ffff',
darkblue: '00008b',
darkcyan: '008b8b',
darkgoldenrod: 'b8860b',
darkgray: 'a9a9a9',
darkgreen: '006400',
darkkhaki: 'bdb76b',
darkmagenta: '8b008b',
darkolivegreen: '556b2f',
darkorange: 'ff8c00',
darkorchid: '9932cc',
darkred: '8b0000',
darksalmon: 'e9967a',
darkseagreen: '8fbc8f',
darkslateblue: '483d8b',
darkslategray: '2f4f4f',
darkturquoise: '00ced1',
darkviolet: '9400d3',
deeppink: 'ff1493',
deepskyblue: '00bfff',
dimgray: '696969',
dodgerblue: '1e90ff',
feldspar: 'd19275',
firebrick: 'b22222',
floralwhite: 'fffaf0',
forestgreen: '228b22',
fuchsia: 'ff00ff',
gainsboro: 'dcdcdc',
ghostwhite: 'f8f8ff',
gold: 'ffd700',
goldenrod: 'daa520',
gray: '808080',
green: '008000',
greenyellow: 'adff2f',
honeydew: 'f0fff0',
hotpink: 'ff69b4',
indianred: 'cd5c5c',
indigo: '4b0082',
ivory: 'fffff0',
khaki: 'f0e68c',
lavender: 'e6e6fa',
lavenderblush: 'fff0f5',
lawngreen: '7cfc00',
lemonchiffon: 'fffacd',
lightblue: 'add8e6',
lightcoral: 'f08080',
lightcyan: 'e0ffff',
lightgoldenrodyellow: 'fafad2',
lightgrey: 'd3d3d3',
lightgreen: '90ee90',
lightpink: 'ffb6c1',
lightsalmon: 'ffa07a',
lightseagreen: '20b2aa',
lightskyblue: '87cefa',
lightslateblue: '8470ff',
lightslategray: '778899',
lightsteelblue: 'b0c4de',
lightyellow: 'ffffe0',
lime: '00ff00',
limegreen: '32cd32',
linen: 'faf0e6',
magenta: 'ff00ff',
maroon: '800000',
mediumaquamarine: '66cdaa',
mediumblue: '0000cd',
mediumorchid: 'ba55d3',
mediumpurple: '9370d8',
mediumseagreen: '3cb371',
mediumslateblue: '7b68ee',
mediumspringgreen: '00fa9a',
mediumturquoise: '48d1cc',
mediumvioletred: 'c71585',
midnightblue: '191970',
mintcream: 'f5fffa',
mistyrose: 'ffe4e1',
moccasin: 'ffe4b5',
navajowhite: 'ffdead',
navy: '000080',
oldlace: 'fdf5e6',
olive: '808000',
olivedrab: '6b8e23',
orange: 'ffa500',
orangered: 'ff4500',
orchid: 'da70d6',
palegoldenrod: 'eee8aa',
palegreen: '98fb98',
paleturquoise: 'afeeee',
palevioletred: 'd87093',
papayawhip: 'ffefd5',
peachpuff: 'ffdab9',
peru: 'cd853f',
pink: 'ffc0cb',
plum: 'dda0dd',
powderblue: 'b0e0e6',
purple: '800080',
rebeccapurple: '663399',
red: 'ff0000',
rosybrown: 'bc8f8f',
royalblue: '4169e1',
saddlebrown: '8b4513',
salmon: 'fa8072',
sandybrown: 'f4a460',
seagreen: '2e8b57',
seashell: 'fff5ee',
sienna: 'a0522d',
silver: 'c0c0c0',
skyblue: '87ceeb',
slateblue: '6a5acd',
slategray: '708090',
snow: 'fffafa',
springgreen: '00ff7f',
steelblue: '4682b4',
tan: 'd2b48c',
teal: '008080',
thistle: 'd8bfd8',
tomato: 'ff6347',
turquoise: '40e0d0',
violet: 'ee82ee',
violetred: 'd02090',
wheat: 'f5deb3',
white: 'ffffff',
whitesmoke: 'f5f5f5',
yellow: 'ffff00',
yellowgreen: '9acd32',
}
color_string = simple_colors[color_string] || color_string
var color_defs = [
{
re: /^rgba\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3}),\s*((?:\d?\.)?\d)\)$/,
example: ['rgba(123, 234, 45, 0.8)', 'rgba(255,234,245,1.0)'],
process: function (bits3) {
return [
parseInt(bits3[1]),
parseInt(bits3[2]),
parseInt(bits3[3]),
parseFloat(bits3[4]),
]
},
},
{
re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,
example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],
process: function (bits3) {
return [parseInt(bits3[1]), parseInt(bits3[2]), parseInt(bits3[3])]
},
},
{
re: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,
example: ['#00ff00', '336699'],
process: function (bits3) {
return [
parseInt(bits3[1], 16),
parseInt(bits3[2], 16),
parseInt(bits3[3], 16),
]
},
},
{
re: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
example: ['#fb0', 'f0f'],
process: function (bits3) {
return [
parseInt(bits3[1] + bits3[1], 16),
parseInt(bits3[2] + bits3[2], 16),
parseInt(bits3[3] + bits3[3], 16),
]
},
},
]
for (var i2 = 0; i2 < color_defs.length; i2++) {
var re2 = color_defs[i2].re
var processor = color_defs[i2].process
var bits2 = re2.exec(color_string)
if (bits2) {
var channels = processor(bits2)
this.r = channels[0]
this.g = channels[1]
this.b = channels[2]
if (channels.length > 3) {
this.alpha = channels[3]
}
this.ok = true
}
}
this.r = this.r < 0 || isNaN(this.r) ? 0 : this.r > 255 ? 255 : this.r
this.g = this.g < 0 || isNaN(this.g) ? 0 : this.g > 255 ? 255 : this.g
this.b = this.b < 0 || isNaN(this.b) ? 0 : this.b > 255 ? 255 : this.b
this.alpha =
this.alpha < 0 ? 0 : this.alpha > 1 || isNaN(this.alpha) ? 1 : this.alpha
this.toRGB = function () {
return 'rgb(' + this.r + ', ' + this.g + ', ' + this.b + ')'
}
this.toRGBA = function () {
return (
'rgba(' + this.r + ', ' + this.g + ', ' + this.b + ', ' + this.alpha + ')'
)
}
this.toHex = function () {
var r2 = this.r.toString(16)
var g2 = this.g.toString(16)
var b2 = this.b.toString(16)
if (r2.length == 1) r2 = '0' + r2
if (g2.length == 1) g2 = '0' + g2
if (b2.length == 1) b2 = '0' + b2
return '#' + r2 + g2 + b2
}
this.getHelpXML = function () {
var examples = new Array()
for (var i3 = 0; i3 < color_defs.length; i3++) {
var example = color_defs[i3].example
for (var j2 = 0; j2 < example.length; j2++) {
examples[examples.length] = example[j2]
}
}
for (var sc in simple_colors) {
examples[examples.length] = sc
}
var xml2 = document.createElement('ul')
xml2.setAttribute('id', 'rgbcolor-examples')
for (var i3 = 0; i3 < examples.length; i3++) {
try {
var list_item = document.createElement('li')
var list_color = new RGBColor(examples[i3])
var example_div = document.createElement('div')
example_div.style.cssText =
'margin: 3px; border: 1px solid black; background:' +
list_color.toHex() +
'; color:' +
list_color.toHex()
example_div.appendChild(document.createTextNode('test'))
var list_item_value = document.createTextNode(
' ' +
examples[i3] +
' -> ' +
list_color.toRGB() +
' -> ' +
list_color.toHex()
)
list_item.appendChild(example_div)
list_item.appendChild(list_item_value)
xml2.appendChild(list_item)
} catch (e2) {}
}
return xml2
}
}
var $$2 = _export
var uncurryThis$2 = functionUncurryThisClause
var $indexOf = arrayIncludes.indexOf
var arrayMethodIsStrict = arrayMethodIsStrict$2
var nativeIndexOf = uncurryThis$2([].indexOf)
var NEGATIVE_ZERO = !!nativeIndexOf && 1 / nativeIndexOf([1], 1, -0) < 0
var FORCED = NEGATIVE_ZERO || !arrayMethodIsStrict('indexOf')
$$2(
{ target: 'Array', proto: true, forced: FORCED },
{
indexOf: function indexOf2(searchElement) {
var fromIndex = arguments.length > 1 ? arguments[1] : void 0
return NEGATIVE_ZERO
? nativeIndexOf(this, searchElement, fromIndex) || 0
: $indexOf(this, searchElement, fromIndex)
},
}
)
var $$1 = _export
var uncurryThis$1 = functionUncurryThis
var notARegExp = notARegexp
var requireObjectCoercible = requireObjectCoercible$a
var toString = toString$9
var correctIsRegExpLogic = correctIsRegexpLogic
var stringIndexOf = uncurryThis$1(''.indexOf)
$$1(
{ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') },
{
includes: function includes2(searchString) {
return !!~stringIndexOf(
toString(requireObjectCoercible(this)),
toString(notARegExp(searchString)),
arguments.length > 1 ? arguments[1] : void 0
)
},
}
)
var classof = classofRaw$2
var isArray$8 =
Array.isArray ||
function isArray2(argument) {
return classof(argument) === 'Array'
}
var $ = _export
var uncurryThis = functionUncurryThis
var isArray$7 = isArray$8
var nativeReverse = uncurryThis([].reverse)
var test = [1, 2]
$(
{
target: 'Array',
proto: true,
forced: String(test) === String(test.reverse()),
},
{
reverse: function reverse2() {
if (isArray$7(this)) this.length = this.length
return nativeReverse(this)
},
}
)
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
var t$3 = function (r2, e2) {
return (t$3 =
Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array &&
function (t3, r3) {
t3.__proto__ = r3
}) ||
function (t3, r3) {
for (var e3 in r3)
Object.prototype.hasOwnProperty.call(r3, e3) && (t3[e3] = r3[e3])
})(r2, e2)
}
function r(r2, e2) {
if ('function' != typeof e2 && null !== e2)
throw new TypeError(
'Class extends value ' + String(e2) + ' is not a constructor or null'
)
function i2() {
this.constructor = r2
}
t$3(r2, e2),
(r2.prototype =
null === e2
? Object.create(e2)
: ((i2.prototype = e2.prototype), new i2()))
}
function e$1(t3) {
var r2 = ''
Array.isArray(t3) || (t3 = [t3])
for (var e2 = 0; e2 < t3.length; e2++) {
var i2 = t3[e2]
if (i2.type === _$1.CLOSE_PATH) r2 += 'z'
else if (i2.type === _$1.HORIZ_LINE_TO)
r2 += (i2.relative ? 'h' : 'H') + i2.x
else if (i2.type === _$1.VERT_LINE_TO)
r2 += (i2.relative ? 'v' : 'V') + i2.y
else if (i2.type === _$1.MOVE_TO)
r2 += (i2.relative ? 'm' : 'M') + i2.x + ' ' + i2.y
else if (i2.type === _$1.LINE_TO)
r2 += (i2.relative ? 'l' : 'L') + i2.x + ' ' + i2.y
else if (i2.type === _$1.CURVE_TO)
r2 +=
(i2.relative ? 'c' : 'C') +
i2.x1 +
' ' +
i2.y1 +
' ' +
i2.x2 +
' ' +
i2.y2 +
' ' +
i2.x +
' ' +
i2.y
else if (i2.type === _$1.SMOOTH_CURVE_TO)
r2 +=
(i2.relative ? 's' : 'S') +
i2.x2 +
' ' +
i2.y2 +
' ' +
i2.x +
' ' +
i2.y
else if (i2.type === _$1.QUAD_TO)
r2 +=
(i2.relative ? 'q' : 'Q') +
i2.x1 +
' ' +
i2.y1 +
' ' +
i2.x +
' ' +
i2.y
else if (i2.type === _$1.SMOOTH_QUAD_TO)
r2 += (i2.relative ? 't' : 'T') + i2.x + ' ' + i2.y
else {
if (i2.type !== _$1.ARC)
throw new Error(
'Unexpected command type "' + i2.type + '" at index ' + e2 + '.'
)
r2 +=
(i2.relative ? 'a' : 'A') +
i2.rX +
' ' +
i2.rY +
' ' +
i2.xRot +
' ' +
+i2.lArcFlag +
' ' +
+i2.sweepFlag +
' ' +
i2.x +
' ' +
i2.y
}
}
return r2
}
function i$1(t3, r2) {
var e2 = t3[0],
i2 = t3[1]
return [
e2 * Math.cos(r2) - i2 * Math.sin(r2),
e2 * Math.sin(r2) + i2 * Math.cos(r2),
]
}
function a() {
for (var t3 = [], r2 = 0; r2 < arguments.length; r2++) t3[r2] = arguments[r2]
for (var e2 = 0; e2 < t3.length; e2++)
if ('number' != typeof t3[e2])
throw new Error(
'assertNumbers arguments[' +
e2 +
'] is not a number. ' +
typeof t3[e2] +
' == typeof ' +
t3[e2]
)
return true
}
var n = Math.PI
function o(t3, r2, e2) {
;(t3.lArcFlag = 0 === t3.lArcFlag ? 0 : 1),
(t3.sweepFlag = 0 === t3.sweepFlag ? 0 : 1)
var a2 = t3.rX,
o2 = t3.rY,
s2 = t3.x,
u2 = t3.y
;(a2 = Math.abs(t3.rX)), (o2 = Math.abs(t3.rY))
var h2 = i$1([(r2 - s2) / 2, (e2 - u2) / 2], (-t3.xRot / 180) * n),
c2 = h2[0],
y2 = h2[1],
p2 = Math.pow(c2, 2) / Math.pow(a2, 2) + Math.pow(y2, 2) / Math.pow(o2, 2)
1 < p2 && ((a2 *= Math.sqrt(p2)), (o2 *= Math.sqrt(p2))),
(t3.rX = a2),
(t3.rY = o2)
var m2 =
Math.pow(a2, 2) * Math.pow(y2, 2) + Math.pow(o2, 2) * Math.pow(c2, 2),
O2 =
(t3.lArcFlag !== t3.sweepFlag ? 1 : -1) *
Math.sqrt(Math.max(0, (Math.pow(a2, 2) * Math.pow(o2, 2) - m2) / m2)),
l2 = ((a2 * y2) / o2) * O2,
T2 = ((-o2 * c2) / a2) * O2,
v4 = i$1([l2, T2], (t3.xRot / 180) * n)
;(t3.cX = v4[0] + (r2 + s2) / 2),
(t3.cY = v4[1] + (e2 + u2) / 2),
(t3.phi1 = Math.atan2((y2 - T2) / o2, (c2 - l2) / a2)),
(t3.phi2 = Math.atan2((-y2 - T2) / o2, (-c2 - l2) / a2)),
0 === t3.sweepFlag && t3.phi2 > t3.phi1 && (t3.phi2 -= 2 * n),
1 === t3.sweepFlag && t3.phi2 < t3.phi1 && (t3.phi2 += 2 * n),
(t3.phi1 *= 180 / n),
(t3.phi2 *= 180 / n)
}
function s(t3, r2, e2) {
a(t3, r2, e2)
var i2 = t3 * t3 + r2 * r2 - e2 * e2
if (0 > i2) return []
if (0 === i2)
return [[(t3 * e2) / (t3 * t3 + r2 * r2), (r2 * e2) / (t3 * t3 + r2 * r2)]]
var n2 = Math.sqrt(i2)
return [
[
(t3 * e2 + r2 * n2) / (t3 * t3 + r2 * r2),
(r2 * e2 - t3 * n2) / (t3 * t3 + r2 * r2),
],
[
(t3 * e2 - r2 * n2) / (t3 * t3 + r2 * r2),
(r2 * e2 + t3 * n2) / (t3 * t3 + r2 * r2),
],
]
}
var u,
h = Math.PI / 180
function c$1(t3, r2, e2) {
return (1 - e2) * t3 + e2 * r2
}
function y(t3, r2, e2, i2) {
return t3 + Math.cos((i2 / 180) * n) * r2 + Math.sin((i2 / 180) * n) * e2
}
function p(t3, r2, e2, i2) {
var a2 = 1e-6,
n2 = r2 - t3,
o2 = e2 - r2,
s2 = 3 * n2 + 3 * (i2 - e2) - 6 * o2,
u2 = 6 * (o2 - n2),
h2 = 3 * n2
return Math.abs(s2) < a2
? [-h2 / u2]
: (function (t4, r3, e3) {
void 0 === e3 && (e3 = 1e-6)
var i3 = (t4 * t4) / 4 - r3
if (i3 < -e3) return []
if (i3 <= e3) return [-t4 / 2]
var a3 = Math.sqrt(i3)
return [-t4 / 2 - a3, -t4 / 2 + a3]
})(u2 / s2, h2 / s2, a2)
}
function m$2(t3, r2, e2, i2, a2) {
var n2 = 1 - a2
return (
t3 * (n2 * n2 * n2) +
r2 * (3 * n2 * n2 * a2) +
e2 * (3 * n2 * a2 * a2) +
i2 * (a2 * a2 * a2)
)
}
!(function (t3) {
function r2() {
return u2(function (t4, r3, e3) {
return (
t4.relative &&
(void 0 !== t4.x1 && (t4.x1 += r3),
void 0 !== t4.y1 && (t4.y1 += e3),
void 0 !== t4.x2 && (t4.x2 += r3),
void 0 !== t4.y2 && (t4.y2 += e3),
void 0 !== t4.x && (t4.x += r3),
void 0 !== t4.y && (t4.y += e3),
(t4.relative = false)),
t4
)
})
}
function e2() {
var t4 = NaN,
r3 = NaN,
e3 = NaN,
i2 = NaN
return u2(function (a2, n3, o2) {
return (
a2.type & _$1.SMOOTH_CURVE_TO &&
((a2.type = _$1.CURVE_TO),
(t4 = isNaN(t4) ? n3 : t4),
(r3 = isNaN(r3) ? o2 : r3),
(a2.x1 = a2.relative ? n3 - t4 : 2 * n3 - t4),
(a2.y1 = a2.relative ? o2 - r3 : 2 * o2 - r3)),
a2.type & _$1.CURVE_TO
? ((t4 = a2.relative ? n3 + a2.x2 : a2.x2),
(r3 = a2.relative ? o2 + a2.y2 : a2.y2))
: ((t4 = NaN), (r3 = NaN)),
a2.type & _$1.SMOOTH_QUAD_TO &&
((a2.type = _$1.QUAD_TO),
(e3 = isNaN(e3) ? n3 : e3),
(i2 = isNaN(i2) ? o2 : i2),
(a2.x1 = a2.relative ? n3 - e3 : 2 * n3 - e3),
(a2.y1 = a2.relative ? o2 - i2 : 2 * o2 - i2)),
a2.type & _$1.QUAD_TO
? ((e3 = a2.relative ? n3 + a2.x1 : a2.x1),
(i2 = a2.relative ? o2 + a2.y1 : a2.y1))
: ((e3 = NaN), (i2 = NaN)),
a2
)
})
}
function n2() {
var t4 = NaN,
r3 = NaN
return u2(function (e3, i2, a2) {
if (
(e3.type & _$1.SMOOTH_QUAD_TO &&
((e3.type = _$1.QUAD_TO),
(t4 = isNaN(t4) ? i2 : t4),
(r3 = isNaN(r3) ? a2 : r3),
(e3.x1 = e3.relative ? i2 - t4 : 2 * i2 - t4),
(e3.y1 = e3.relative ? a2 - r3 : 2 * a2 - r3)),
e3.type & _$1.QUAD_TO)
) {
;(t4 = e3.relative ? i2 + e3.x1 : e3.x1),
(r3 = e3.relative ? a2 + e3.y1 : e3.y1)
var n3 = e3.x1,
o2 = e3.y1
;(e3.type = _$1.CURVE_TO),
(e3.x1 = ((e3.relative ? 0 : i2) + 2 * n3) / 3),
(e3.y1 = ((e3.relative ? 0 : a2) + 2 * o2) / 3),
(e3.x2 = (e3.x + 2 * n3) / 3),
(e3.y2 = (e3.y + 2 * o2) / 3)
} else (t4 = NaN), (r3 = NaN)
return e3
})
}
function u2(t4) {
var r3 = 0,
e3 = 0,
i2 = NaN,
a2 = NaN
return function (n3) {
if (isNaN(i2) && !(n3.type & _$1.MOVE_TO))
throw new Error('path must start with moveto')
var o2 = t4(n3, r3, e3, i2, a2)
return (
n3.type & _$1.CLOSE_PATH && ((r3 = i2), (e3 = a2)),
void 0 !== n3.x && (r3 = n3.relative ? r3 + n3.x : n3.x),
void 0 !== n3.y && (e3 = n3.relative ? e3 + n3.y : n3.y),
n3.type & _$1.MOVE_TO && ((i2 = r3), (a2 = e3)),
o2
)
}
}
function O2(t4, r3, e3, i2, n3, o2) {
return (
a(t4, r3, e3, i2, n3, o2),
u2(function (a2, s2, u3, h2) {
var c2 = a2.x1,
y2 = a2.x2,
p2 = a2.relative && !isNaN(h2),
m2 = void 0 !== a2.x ? a2.x : p2 ? 0 : s2,
O3 = void 0 !== a2.y ? a2.y : p2 ? 0 : u3
function l3(t5) {
return t5 * t5
}
a2.type & _$1.HORIZ_LINE_TO &&
0 !== r3 &&
((a2.type = _$1.LINE_TO), (a2.y = a2.relative ? 0 : u3)),
a2.type & _$1.VERT_LINE_TO &&
0 !== e3 &&
((a2.type = _$1.LINE_TO), (a2.x = a2.relative ? 0 : s2)),
void 0 !== a2.x && (a2.x = a2.x * t4 + O3 * e3 + (p2 ? 0 : n3)),
void 0 !== a2.y && (a2.y = m2 * r3 + a2.y * i2 + (p2 ? 0 : o2)),
void 0 !== a2.x1 && (a2.x1 = a2.x1 * t4 + a2.y1 * e3 + (p2 ? 0 : n3)),
void 0 !== a2.y1 && (a2.y1 = c2 * r3 + a2.y1 * i2 + (p2 ? 0 : o2)),
void 0 !== a2.x2 && (a2.x2 = a2.x2 * t4 + a2.y2 * e3 + (p2 ? 0 : n3)),
void 0 !== a2.y2 && (a2.y2 = y2 * r3 + a2.y2 * i2 + (p2 ? 0 : o2))
var T2 = t4 * i2 - r3 * e3
if (
void 0 !== a2.xRot &&
(1 !== t4 || 0 !== r3 || 0 !== e3 || 1 !== i2)
)
if (0 === T2)
delete a2.rX,
delete a2.rY,
delete a2.xRot,
delete a2.lArcFlag,
delete a2.sweepFlag,
(a2.type = _$1.LINE_TO)
else {
var v4 = (a2.xRot * Math.PI) / 180,
f2 = Math.sin(v4),
N2 = Math.cos(v4),
x2 = 1 / l3(a2.rX),
d3 = 1 / l3(a2.rY),
E2 = l3(N2) * x2 + l3(f2) * d3,
A2 = 2 * f2 * N2 * (x2 - d3),
C2 = l3(f2) * x2 + l3(N2) * d3,
M2 = E2 * i2 * i2 - A2 * r3 * i2 + C2 * r3 * r3,
R2 = A2 * (t4 * i2 + r3 * e3) - 2 * (E2 * e3 * i2 + C2 * t4 * r3),
g2 = E2 * e3 * e3 - A2 * t4 * e3 + C2 * t4 * t4,
I2 = ((Math.atan2(R2, M2 - g2) + Math.PI) % Math.PI) / 2,
S2 = Math.sin(I2),
L2 = Math.cos(I2)
;(a2.rX =
Math.abs(T2) /
Math.sqrt(M2 * l3(L2) + R2 * S2 * L2 + g2 * l3(S2))),
(a2.rY =
Math.abs(T2) /
Math.sqrt(M2 * l3(S2) - R2 * S2 * L2 + g2 * l3(L2))),
(a2.xRot = (180 * I2) / Math.PI)
}
return (
void 0 !== a2.sweepFlag && 0 > T2 && (a2.sweepFlag = +!a2.sweepFlag),
a2
)
})
)
}
function l2() {
return function (t4) {
var r3 = {}
for (var e3 in t4) r3[e3] = t4[e3]
return r3
}
}
;(t3.ROUND = function (t4) {
function r3(r4) {
return Math.round(r4 * t4) / t4
}
return (
void 0 === t4 && (t4 = 1e13),
a(t4),
function (t5) {
return (
void 0 !== t5.x1 && (t5.x1 = r3(t5.x1)),
void 0 !== t5.y1 && (t5.y1 = r3(t5.y1)),
void 0 !== t5.x2 && (t5.x2 = r3(t5.x2)),
void 0 !== t5.y2 && (t5.y2 = r3(t5.y2)),
void 0 !== t5.x && (t5.x = r3(t5.x)),
void 0 !== t5.y && (t5.y = r3(t5.y)),
void 0 !== t5.rX && (t5.rX = r3(t5.rX)),
void 0 !== t5.rY && (t5.rY = r3(t5.rY)),
t5
)
}
)
}),
(t3.TO_ABS = r2),
(t3.TO_REL = function () {
return u2(function (t4, r3, e3) {
return (
t4.relative ||
(void 0 !== t4.x1 && (t4.x1 -= r3),
void 0 !== t4.y1 && (t4.y1 -= e3),
void 0 !== t4.x2 && (t4.x2 -= r3),
void 0 !== t4.y2 && (t4.y2 -= e3),
void 0 !== t4.x && (t4.x -= r3),
void 0 !== t4.y && (t4.y -= e3),
(t4.relative = true)),
t4
)
})
}),
(t3.NORMALIZE_HVZ = function (t4, r3, e3) {
return (
void 0 === t4 && (t4 = true),
void 0 === r3 && (r3 = true),
void 0 === e3 && (e3 = true),
u2(function (i2, a2, n3, o2, s2) {
if (isNaN(o2) && !(i2.type & _$1.MOVE_TO))
throw new Error('path must start with moveto')
return (
r3 &&
i2.type & _$1.HORIZ_LINE_TO &&
((i2.type = _$1.LINE_TO), (i2.y = i2.relative ? 0 : n3)),
e3 &&
i2.type & _$1.VERT_LINE_TO &&
((i2.type = _$1.LINE_TO), (i2.x = i2.relative ? 0 : a2)),
t4 &&
i2.type & _$1.CLOSE_PATH &&
((i2.type = _$1.LINE_TO),
(i2.x = i2.relative ? o2 - a2 : o2),
(i2.y = i2.relative ? s2 - n3 : s2)),
i2.type & _$1.ARC &&
(0 === i2.rX || 0 === i2.rY) &&
((i2.type = _$1.LINE_TO),
delete i2.rX,
delete i2.rY,
delete i2.xRot,
delete i2.lArcFlag,
delete i2.sweepFlag),
i2
)
})
)
}),
(t3.NORMALIZE_ST = e2),
(t3.QT_TO_C = n2),
(t3.INFO = u2),
(t3.SANITIZE = function (t4) {
void 0 === t4 && (t4 = 0), a(t4)
var r3 = NaN,
e3 = NaN,
i2 = NaN,
n3 = NaN
return u2(function (a2, o2, s2, u3, h2) {
var c2 = Math.abs,
y2 = false,
p2 = 0,
m2 = 0
if (
(a2.type & _$1.SMOOTH_CURVE_TO &&
((p2 = isNaN(r3) ? 0 : o2 - r3), (m2 = isNaN(e3) ? 0 : s2 - e3)),
a2.type & (_$1.CURVE_TO | _$1.SMOOTH_CURVE_TO)
? ((r3 = a2.relative ? o2 + a2.x2 : a2.x2),
(e3 = a2.relative ? s2 + a2.y2 : a2.y2))
: ((r3 = NaN), (e3 = NaN)),
a2.type & _$1.SMOOTH_QUAD_TO
? ((i2 = isNaN(i2) ? o2 : 2 * o2 - i2),
(n3 = isNaN(n3) ? s2 : 2 * s2 - n3))
: a2.type & _$1.QUAD_TO
? ((i2 = a2.relative ? o2 + a2.x1 : a2.x1),
(n3 = a2.relative ? s2 + a2.y1 : a2.y2))
: ((i2 = NaN), (n3 = NaN)),
a2.type & _$1.LINE_COMMANDS ||
(a2.type & _$1.ARC &&
(0 === a2.rX || 0 === a2.rY || !a2.lArcFlag)) ||
a2.type & _$1.CURVE_TO ||
a2.type & _$1.SMOOTH_CURVE_TO ||
a2.type & _$1.QUAD_TO ||
a2.type & _$1.SMOOTH_QUAD_TO)
) {
var O3 = void 0 === a2.x ? 0 : a2.relative ? a2.x : a2.x - o2,
l3 = void 0 === a2.y ? 0 : a2.relative ? a2.y : a2.y - s2
;(p2 = isNaN(i2)
? void 0 === a2.x1
? p2
: a2.relative
? a2.x
: a2.x1 - o2
: i2 - o2),
(m2 = isNaN(n3)
? void 0 === a2.y1
? m2
: a2.relative
? a2.y
: a2.y1 - s2
: n3 - s2)
var T2 = void 0 === a2.x2 ? 0 : a2.relative ? a2.x : a2.x2 - o2,
v4 = void 0 === a2.y2 ? 0 : a2.relative ? a2.y : a2.y2 - s2
c2(O3) <= t4 &&
c2(l3) <= t4 &&
c2(p2) <= t4 &&
c2(m2) <= t4 &&
c2(T2) <= t4 &&
c2(v4) <= t4 &&
(y2 = true)
}
return (
a2.type & _$1.CLOSE_PATH &&
c2(o2 - u3) <= t4 &&
c2(s2 - h2) <= t4 &&
(y2 = true),
y2 ? [] : a2
)
})
}),
(t3.MATRIX = O2),
(t3.ROTATE = function (t4, r3, e3) {
void 0 === r3 && (r3 = 0), void 0 === e3 && (e3 = 0), a(t4, r3, e3)
var i2 = Math.sin(t4),
n3 = Math.cos(t4)
return O2(n3, i2, -i2, n3, r3 - r3 * n3 + e3 * i2, e3 - r3 * i2 - e3 * n3)
}),
(t3.TRANSLATE = function (t4, r3) {
return void 0 === r3 && (r3 = 0), a(t4, r3), O2(1, 0, 0, 1, t4, r3)
}),
(t3.SCALE = function (t4, r3) {
return void 0 === r3 && (r3 = t4), a(t4, r3), O2(t4, 0, 0, r3, 0, 0)
}),
(t3.SKEW_X = function (t4) {
return a(t4), O2(1, 0, Math.atan(t4), 1, 0, 0)
}),
(t3.SKEW_Y = function (t4) {
return a(t4), O2(1, Math.atan(t4), 0, 1, 0, 0)
}),
(t3.X_AXIS_SYMMETRY = function (t4) {
return void 0 === t4 && (t4 = 0), a(t4), O2(-1, 0, 0, 1, t4, 0)
}),
(t3.Y_AXIS_SYMMETRY = function (t4) {
return void 0 === t4 && (t4 = 0), a(t4), O2(1, 0, 0, -1, 0, t4)
}),
(t3.A_TO_C = function () {
return u2(function (t4, r3, e3) {
return _$1.ARC === t4.type
? (function (t5, r4, e4) {
var a2, n3, s2, u3
t5.cX || o(t5, r4, e4)
for (
var y2 = Math.min(t5.phi1, t5.phi2),
p2 = Math.max(t5.phi1, t5.phi2) - y2,
m2 = Math.ceil(p2 / 90),
O3 = new Array(m2),
l3 = r4,
T2 = e4,
v4 = 0;
v4 < m2;
v4++
) {
var f2 = c$1(t5.phi1, t5.phi2, v4 / m2),
N2 = c$1(t5.phi1, t5.phi2, (v4 + 1) / m2),
x2 = N2 - f2,
d3 = (4 / 3) * Math.tan((x2 * h) / 4),
E2 = [
Math.cos(f2 * h) - d3 * Math.sin(f2 * h),
Math.sin(f2 * h) + d3 * Math.cos(f2 * h),
],
A2 = E2[0],
C2 = E2[1],
M2 = [Math.cos(N2 * h), Math.sin(N2 * h)],
R2 = M2[0],
g2 = M2[1],
I2 = [R2 + d3 * Math.sin(N2 * h), g2 - d3 * Math.cos(N2 * h)],
S2 = I2[0],
L2 = I2[1]
O3[v4] = { relative: t5.relative, type: _$1.CURVE_TO }
var H4 = function (r5, e5) {
var a3 = i$1([r5 * t5.rX, e5 * t5.rY], t5.xRot),
n4 = a3[0],
o2 = a3[1]
return [t5.cX + n4, t5.cY + o2]
}
;(a2 = H4(A2, C2)),
(O3[v4].x1 = a2[0]),
(O3[v4].y1 = a2[1]),
(n3 = H4(S2, L2)),
(O3[v4].x2 = n3[0]),
(O3[v4].y2 = n3[1]),
(s2 = H4(R2, g2)),
(O3[v4].x = s2[0]),
(O3[v4].y = s2[1]),
t5.relative &&
((O3[v4].x1 -= l3),
(O3[v4].y1 -= T2),
(O3[v4].x2 -= l3),
(O3[v4].y2 -= T2),
(O3[v4].x -= l3),
(O3[v4].y -= T2)),
(l3 = (u3 = [O3[v4].x, O3[v4].y])[0]),
(T2 = u3[1])
}
return O3
})(t4, t4.relative ? 0 : r3, t4.relative ? 0 : e3)
: t4
})
}),
(t3.ANNOTATE_ARCS = function () {
return u2(function (t4, r3, e3) {
return (
t4.relative && ((r3 = 0), (e3 = 0)),
_$1.ARC === t4.type && o(t4, r3, e3),
t4
)
})
}),
(t3.CLONE = l2),
(t3.CALCULATE_BOUNDS = function () {
var t4 = function (t5) {
var r3 = {}
for (var e3 in t5) r3[e3] = t5[e3]
return r3
},
i2 = r2(),
a2 = n2(),
h2 = e2(),
c2 = u2(function (r3, e3, n3) {
var u3 = h2(a2(i2(t4(r3))))
function O3(t5) {
t5 > c2.maxX && (c2.maxX = t5), t5 < c2.minX && (c2.minX = t5)
}
function l3(t5) {
t5 > c2.maxY && (c2.maxY = t5), t5 < c2.minY && (c2.minY = t5)
}
if (
(u3.type & _$1.DRAWING_COMMANDS && (O3(e3), l3(n3)),
u3.type & _$1.HORIZ_LINE_TO && O3(u3.x),
u3.type & _$1.VERT_LINE_TO && l3(u3.y),
u3.type & _$1.LINE_TO && (O3(u3.x), l3(u3.y)),
u3.type & _$1.CURVE_TO)
) {
O3(u3.x), l3(u3.y)
for (
var T2 = 0, v4 = p(e3, u3.x1, u3.x2, u3.x);
T2 < v4.length;
T2++
) {
0 < (w2 = v4[T2]) && 1 > w2 && O3(m$2(e3, u3.x1, u3.x2, u3.x, w2))
}
for (
var f2 = 0, N2 = p(n3, u3.y1, u3.y2, u3.y);
f2 < N2.length;
f2++
) {
0 < (w2 = N2[f2]) && 1 > w2 && l3(m$2(n3, u3.y1, u3.y2, u3.y, w2))
}
}
if (u3.type & _$1.ARC) {
O3(u3.x), l3(u3.y), o(u3, e3, n3)
for (
var x2 = (u3.xRot / 180) * Math.PI,
d3 = Math.cos(x2) * u3.rX,
E2 = Math.sin(x2) * u3.rX,
A2 = -Math.sin(x2) * u3.rY,
C2 = Math.cos(x2) * u3.rY,
M2 =
u3.phi1 < u3.phi2
? [u3.phi1, u3.phi2]
: -180 > u3.phi2
? [u3.phi2 + 360, u3.phi1 + 360]
: [u3.phi2, u3.phi1],
R2 = M2[0],
g2 = M2[1],
I2 = function (t5) {
var r4 = t5[0],
e4 = t5[1],
i3 = (180 * Math.atan2(e4, r4)) / Math.PI
return i3 < R2 ? i3 + 360 : i3
},
S2 = 0,
L2 = s(A2, -d3, 0).map(I2);
S2 < L2.length;
S2++
) {
;(w2 = L2[S2]) > R2 && w2 < g2 && O3(y(u3.cX, d3, A2, w2))
}
for (var H4 = 0, U2 = s(C2, -E2, 0).map(I2); H4 < U2.length; H4++) {
var w2
;(w2 = U2[H4]) > R2 && w2 < g2 && l3(y(u3.cY, E2, C2, w2))
}
}
return r3
})
return (
(c2.minX = 1 / 0),
(c2.maxX = -1 / 0),
(c2.minY = 1 / 0),
(c2.maxY = -1 / 0),
c2
)
})
})(u || (u = {}))
var O,
l = (function () {
function t3() {}
return (
(t3.prototype.round = function (t4) {
return this.transform(u.ROUND(t4))
}),
(t3.prototype.toAbs = function () {
return this.transform(u.TO_ABS())
}),
(t3.prototype.toRel = function () {
return this.transform(u.TO_REL())
}),
(t3.prototype.normalizeHVZ = function (t4, r2, e2) {
return this.transform(u.NORMALIZE_HVZ(t4, r2, e2))
}),
(t3.prototype.normalizeST = function () {
return this.transform(u.NORMALIZE_ST())
}),
(t3.prototype.qtToC = function () {
return this.transform(u.QT_TO_C())
}),
(t3.prototype.aToC = function () {
return this.transform(u.A_TO_C())
}),
(t3.prototype.sanitize = function (t4) {
return this.transform(u.SANITIZE(t4))
}),
(t3.prototype.translate = function (t4, r2) {
return this.transform(u.TRANSLATE(t4, r2))
}),
(t3.prototype.scale = function (t4, r2) {
return this.transform(u.SCALE(t4, r2))
}),
(t3.prototype.rotate = function (t4, r2, e2) {
return this.transform(u.ROTATE(t4, r2, e2))
}),
(t3.prototype.matrix = function (t4, r2, e2, i2, a2, n2) {
return this.transform(u.MATRIX(t4, r2, e2, i2, a2, n2))
}),
(t3.prototype.skewX = function (t4) {
return this.transform(u.SKEW_X(t4))
}),
(t3.prototype.skewY = function (t4) {
return this.transform(u.SKEW_Y(t4))
}),
(t3.prototype.xSymmetry = function (t4) {
return this.transform(u.X_AXIS_SYMMETRY(t4))
}),
(t3.prototype.ySymmetry = function (t4) {
return this.transform(u.Y_AXIS_SYMMETRY(t4))
}),
(t3.prototype.annotateArcs = function () {
return this.transform(u.ANNOTATE_ARCS())
}),
t3
)
})(),
T = function (t3) {
return ' ' === t3 || ' ' === t3 || '\r' === t3 || '\n' === t3
},
v = function (t3) {
return (
'0'.charCodeAt(0) <= t3.charCodeAt(0) &&
t3.charCodeAt(0) <= '9'.charCodeAt(0)
)
},
f = (function (t3) {
function e2() {
var r2 = t3.call(this) || this
return (
(r2.curNumber = ''),
(r2.curCommandType = -1),
(r2.curCommandRelative = false),
(r2.canParseCommandOrComma = true),
(r2.curNumberHasExp = false),
(r2.curNumberHasExpDigits = false),
(r2.curNumberHasDecimal = false),
(r2.curArgs = []),
r2
)
}
return (
r(e2, t3),
(e2.prototype.finish = function (t4) {
if (
(void 0 === t4 && (t4 = []),
this.parse(' ', t4),
0 !== this.curArgs.length || !this.canParseCommandOrComma)
)
throw new SyntaxError('Unterminated command at the path end.')
return t4
}),
(e2.prototype.parse = function (t4, r2) {
var e3 = this
void 0 === r2 && (r2 = [])
for (
var i2 = function (t5) {
r2.push(t5),
(e3.curArgs.length = 0),
(e3.canParseCommandOrComma = true)
},
a2 = 0;
a2 < t4.length;
a2++
) {
var n2 = t4[a2],
o2 = !(
this.curCommandType !== _$1.ARC ||
(3 !== this.curArgs.length && 4 !== this.curArgs.length) ||
1 !== this.curNumber.length ||
('0' !== this.curNumber && '1' !== this.curNumber)
),
s2 = v(n2) && (('0' === this.curNumber && '0' === n2) || o2)
if (!v(n2) || s2)
if ('e' !== n2 && 'E' !== n2)
if (
('-' !== n2 && '+' !== n2) ||
!this.curNumberHasExp ||
this.curNumberHasExpDigits
)
if (
'.' !== n2 ||
this.curNumberHasExp ||
this.curNumberHasDecimal ||
o2
) {
if (this.curNumber && -1 !== this.curCommandType) {
var u2 = Number(this.curNumber)
if (isNaN(u2))
throw new SyntaxError('Invalid number ending at ' + a2)
if (this.curCommandType === _$1.ARC) {
if (
0 === this.curArgs.length ||
1 === this.curArgs.length
) {
if (0 > u2)
throw new SyntaxError(
'Expected positive number, got "' +
u2 +
'" at index "' +
a2 +
'"'
)
} else if (
(3 === this.curArgs.length ||
4 === this.curArgs.length) &&
'0' !== this.curNumber &&
'1' !== this.curNumber
)
throw new SyntaxError(
'Expected a flag, got "' +
this.curNumber +
'" at index "' +
a2 +
'"'
)
}
this.curArgs.push(u2),
this.curArgs.length === N[this.curCommandType] &&
(_$1.HORIZ_LINE_TO === this.curCommandType
? i2({
type: _$1.HORIZ_LINE_TO,
relative: this.curCommandRelative,
x: u2,
})
: _$1.VERT_LINE_TO === this.curCommandType
? i2({
type: _$1.VERT_LINE_TO,
relative: this.curCommandRelative,
y: u2,
})
: this.curCommandType === _$1.MOVE_TO ||
this.curCommandType === _$1.LINE_TO ||
this.curCommandType === _$1.SMOOTH_QUAD_TO
? (i2({
type: this.curCommandType,
relative: this.curCommandRelative,
x: this.curArgs[0],
y: this.curArgs[1],
}),
_$1.MOVE_TO === this.curCommandType &&
(this.curCommandType = _$1.LINE_TO))
: this.curCommandType === _$1.CURVE_TO
? i2({
type: _$1.CURVE_TO,
relative: this.curCommandRelative,
x1: this.curArgs[0],
y1: this.curArgs[1],
x2: this.curArgs[2],
y2: this.curArgs[3],
x: this.curArgs[4],
y: this.curArgs[5],
})
: this.curCommandType === _$1.SMOOTH_CURVE_TO
? i2({
type: _$1.SMOOTH_CURVE_TO,
relative: this.curCommandRelative,
x2: this.curArgs[0],
y2: this.curArgs[1],
x: this.curArgs[2],
y: this.curArgs[3],
})
: this.curCommandType === _$1.QUAD_TO
? i2({
type: _$1.QUAD_TO,
relative: this.curCommandRelative,
x1: this.curArgs[0],
y1: this.curArgs[1],
x: this.curArgs[2],
y: this.curArgs[3],
})
: this.curCommandType === _$1.ARC &&
i2({
type: _$1.ARC,
relative: this.curCommandRelative,
rX: this.curArgs[0],
rY: this.curArgs[1],
xRot: this.curArgs[2],
lArcFlag: this.curArgs[3],
sweepFlag: this.curArgs[4],
x: this.curArgs[5],
y: this.curArgs[6],
})),
(this.curNumber = ''),
(this.curNumberHasExpDigits = false),
(this.curNumberHasExp = false),
(this.curNumberHasDecimal = false),
(this.canParseCommandOrComma = true)
}
if (!T(n2))
if (',' === n2 && this.canParseCommandOrComma)
this.canParseCommandOrComma = false
else if ('+' !== n2 && '-' !== n2 && '.' !== n2)
if (s2)
(this.curNumber = n2),
(this.curNumberHasDecimal = false)
else {
if (0 !== this.curArgs.length)
throw new SyntaxError(
'Unterminated command at index ' + a2 + '.'
)
if (!this.canParseCommandOrComma)
throw new SyntaxError(
'Unexpected character "' +
n2 +
'" at index ' +
a2 +
'. Command cannot follow comma'
)
if (
((this.canParseCommandOrComma = false),
'z' !== n2 && 'Z' !== n2)
)
if ('h' === n2 || 'H' === n2)
(this.curCommandType = _$1.HORIZ_LINE_TO),
(this.curCommandRelative = 'h' === n2)
else if ('v' === n2 || 'V' === n2)
(this.curCommandType = _$1.VERT_LINE_TO),
(this.curCommandRelative = 'v' === n2)
else if ('m' === n2 || 'M' === n2)
(this.curCommandType = _$1.MOVE_TO),
(this.curCommandRelative = 'm' === n2)
else if ('l' === n2 || 'L' === n2)
(this.curCommandType = _$1.LINE_TO),
(this.curCommandRelative = 'l' === n2)
else if ('c' === n2 || 'C' === n2)
(this.curCommandType = _$1.CURVE_TO),
(this.curCommandRelative = 'c' === n2)
else if ('s' === n2 || 'S' === n2)
(this.curCommandType = _$1.SMOOTH_CURVE_TO),
(this.curCommandRelative = 's' === n2)
else if ('q' === n2 || 'Q' === n2)
(this.curCommandType = _$1.QUAD_TO),
(this.curCommandRelative = 'q' === n2)
else if ('t' === n2 || 'T' === n2)
(this.curCommandType = _$1.SMOOTH_QUAD_TO),
(this.curCommandRelative = 't' === n2)
else {
if ('a' !== n2 && 'A' !== n2)
throw new SyntaxError(
'Unexpected character "' +
n2 +
'" at index ' +
a2 +
'.'
)
;(this.curCommandType = _$1.ARC),
(this.curCommandRelative = 'a' === n2)
}
else
r2.push({ type: _$1.CLOSE_PATH }),
(this.canParseCommandOrComma = true),
(this.curCommandType = -1)
}
else
(this.curNumber = n2),
(this.curNumberHasDecimal = '.' === n2)
} else (this.curNumber += n2), (this.curNumberHasDecimal = true)
else this.curNumber += n2
else (this.curNumber += n2), (this.curNumberHasExp = true)
else
(this.curNumber += n2),
(this.curNumberHasExpDigits = this.curNumberHasExp)
}
return r2
}),
(e2.prototype.transform = function (t4) {
return Object.create(this, {
parse: {
value: function (r2, e3) {
void 0 === e3 && (e3 = [])
for (
var i2 = 0,
a2 = Object.getPrototypeOf(this).parse.call(this, r2);
i2 < a2.length;
i2++
) {
var n2 = a2[i2],
o2 = t4(n2)
Array.isArray(o2) ? e3.push.apply(e3, o2) : e3.push(o2)
}
return e3
},
},
})
}),
e2
)
})(l),
_$1 = (function (t3) {
function i2(r2) {
var e2 = t3.call(this) || this
return (e2.commands = 'string' == typeof r2 ? i2.parse(r2) : r2), e2
}
return (
r(i2, t3),
(i2.prototype.encode = function () {
return i2.encode(this.commands)
}),
(i2.prototype.getBounds = function () {
var t4 = u.CALCULATE_BOUNDS()
return this.transform(t4), t4
}),
(i2.prototype.transform = function (t4) {
for (var r2 = [], e2 = 0, i3 = this.commands; e2 < i3.length; e2++) {
var a2 = t4(i3[e2])
Array.isArray(a2) ? r2.push.apply(r2, a2) : r2.push(a2)
}
return (this.commands = r2), this
}),
(i2.encode = function (t4) {
return e$1(t4)
}),
(i2.parse = function (t4) {
var r2 = new f(),
e2 = []
return r2.parse(t4, e2), r2.finish(e2), e2
}),
(i2.CLOSE_PATH = 1),
(i2.MOVE_TO = 2),
(i2.HORIZ_LINE_TO = 4),
(i2.VERT_LINE_TO = 8),
(i2.LINE_TO = 16),
(i2.CURVE_TO = 32),
(i2.SMOOTH_CURVE_TO = 64),
(i2.QUAD_TO = 128),
(i2.SMOOTH_QUAD_TO = 256),
(i2.ARC = 512),
(i2.LINE_COMMANDS = i2.LINE_TO | i2.HORIZ_LINE_TO | i2.VERT_LINE_TO),
(i2.DRAWING_COMMANDS =
i2.HORIZ_LINE_TO |
i2.VERT_LINE_TO |
i2.LINE_TO |
i2.CURVE_TO |
i2.SMOOTH_CURVE_TO |
i2.QUAD_TO |
i2.SMOOTH_QUAD_TO |
i2.ARC),
i2
)
})(l),
N =
(((O = {})[_$1.MOVE_TO] = 2),
(O[_$1.LINE_TO] = 2),
(O[_$1.HORIZ_LINE_TO] = 1),
(O[_$1.VERT_LINE_TO] = 1),
(O[_$1.CLOSE_PATH] = 0),
(O[_$1.QUAD_TO] = 4),
(O[_$1.SMOOTH_QUAD_TO] = 2),
(O[_$1.CURVE_TO] = 6),
(O[_$1.SMOOTH_CURVE_TO] = 4),
(O[_$1.ARC] = 7),
O)
var call = functionCall
var hasOwn$2 = hasOwnProperty_1
var isPrototypeOf = objectIsPrototypeOf
var regExpFlags = regexpFlags$1
var RegExpPrototype$1 = RegExp.prototype
var regexpGetFlags = function (R2) {
var flags = R2.flags
return flags === void 0 &&
!('flags' in RegExpPrototype$1) &&
!hasOwn$2(R2, 'flags') &&
isPrototypeOf(RegExpPrototype$1, R2)
? call(regExpFlags, R2)
: flags
}
var PROPER_FUNCTION_NAME = functionName.PROPER
var defineBuiltIn = defineBuiltIn$7
var anObject = anObject$g
var $toString = toString$9
var fails = fails$l
var getRegExpFlags = regexpGetFlags
var TO_STRING = 'toString'
var RegExpPrototype = RegExp.prototype
var nativeToString = RegExpPrototype[TO_STRING]
var NOT_GENERIC = fails(function () {
return nativeToString.call({ source: 'a', flags: 'b' }) !== '/a/b'
})
var INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name !== TO_STRING
if (NOT_GENERIC || INCORRECT_NAME) {
defineBuiltIn(
RegExp.prototype,
TO_STRING,
function toString4() {
var R2 = anObject(this)
var pattern4 = $toString(R2.source)
var flags = $toString(getRegExpFlags(R2))
return '/' + pattern4 + '/' + flags
},
{ unsafe: true }
)
}
function _typeof$1(obj) {
'@babel/helpers - typeof'
if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {
_typeof$1 = function (obj2) {
return typeof obj2
}
} else {
_typeof$1 = function (obj2) {
return obj2 &&
typeof Symbol === 'function' &&
obj2.constructor === Symbol &&
obj2 !== Symbol.prototype
? 'symbol'
: typeof obj2
}
}
return _typeof$1(obj)
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError('Cannot call a class as a function')
}
}
var mulTable = [
512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292,
512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292,
273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259,
496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292,
282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373,
364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259,
507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381,
374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292,
287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461,
454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373,
368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309,
305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259,
257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442,
437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381,
377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332,
329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292,
289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259,
]
var shgTable = [
9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17,
17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19,
19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23,
23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
24, 24, 24, 24, 24, 24, 24,
]
function getImageDataFromCanvas(canvas, topX, topY, width, height) {
if (typeof canvas === 'string') {
canvas = document.getElementById(canvas)
}
if (!canvas || _typeof$1(canvas) !== 'object' || !('getContext' in canvas)) {
throw new TypeError(
'Expecting canvas with `getContext` method in processCanvasRGB(A) calls!'
)
}
var context2 = canvas.getContext('2d')
try {
return context2.getImageData(topX, topY, width, height)
} catch (e2) {
throw new Error('unable to access image data: ' + e2)
}
}
function processCanvasRGBA(canvas, topX, topY, width, height, radius) {
if (isNaN(radius) || radius < 1) {
return
}
radius |= 0
var imageData = getImageDataFromCanvas(canvas, topX, topY, width, height)
imageData = processImageDataRGBA(imageData, topX, topY, width, height, radius)
canvas.getContext('2d').putImageData(imageData, topX, topY)
}
function processImageDataRGBA(imageData, topX, topY, width, height, radius) {
var pixels = imageData.data
var div2 = 2 * radius + 1
var widthMinus1 = width - 1
var heightMinus1 = height - 1
var radiusPlus1 = radius + 1
var sumFactor = (radiusPlus1 * (radiusPlus1 + 1)) / 2
var stackStart = new BlurStack()
var stack = stackStart
var stackEnd
for (var i2 = 1; i2 < div2; i2++) {
stack = stack.next = new BlurStack()
if (i2 === radiusPlus1) {
stackEnd = stack
}
}
stack.next = stackStart
var stackIn = null,
stackOut = null,
yw = 0,
yi = 0
var mulSum = mulTable[radius]
var shgSum = shgTable[radius]
for (var y2 = 0; y2 < height; y2++) {
stack = stackStart
var pr = pixels[yi],
pg = pixels[yi + 1],
pb = pixels[yi + 2],
pa2 = pixels[yi + 3]
for (var _i = 0; _i < radiusPlus1; _i++) {
stack.r = pr
stack.g = pg
stack.b = pb
stack.a = pa2
stack = stack.next
}
var rInSum = 0,
gInSum = 0,
bInSum = 0,
aInSum = 0,
rOutSum = radiusPlus1 * pr,
gOutSum = radiusPlus1 * pg,
bOutSum = radiusPlus1 * pb,
aOutSum = radiusPlus1 * pa2,
rSum = sumFactor * pr,
gSum = sumFactor * pg,
bSum = sumFactor * pb,
aSum = sumFactor * pa2
for (var _i2 = 1; _i2 < radiusPlus1; _i2++) {
var p2 = yi + ((widthMinus1 < _i2 ? widthMinus1 : _i2) << 2)
var r2 = pixels[p2],
g2 = pixels[p2 + 1],
b2 = pixels[p2 + 2],
a2 = pixels[p2 + 3]
var rbs = radiusPlus1 - _i2
rSum += (stack.r = r2) * rbs
gSum += (stack.g = g2) * rbs
bSum += (stack.b = b2) * rbs
aSum += (stack.a = a2) * rbs
rInSum += r2
gInSum += g2
bInSum += b2
aInSum += a2
stack = stack.next
}
stackIn = stackStart
stackOut = stackEnd
for (var x2 = 0; x2 < width; x2++) {
var paInitial = (aSum * mulSum) >> shgSum
pixels[yi + 3] = paInitial
if (paInitial !== 0) {
var _a2 = 255 / paInitial
pixels[yi] = ((rSum * mulSum) >> shgSum) * _a2
pixels[yi + 1] = ((gSum * mulSum) >> shgSum) * _a2
pixels[yi + 2] = ((bSum * mulSum) >> shgSum) * _a2
} else {
pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0
}
rSum -= rOutSum
gSum -= gOutSum
bSum -= bOutSum
aSum -= aOutSum
rOutSum -= stackIn.r
gOutSum -= stackIn.g
bOutSum -= stackIn.b
aOutSum -= stackIn.a
var _p = x2 + radius + 1
_p = (yw + (_p < widthMinus1 ? _p : widthMinus1)) << 2
rInSum += stackIn.r = pixels[_p]
gInSum += stackIn.g = pixels[_p + 1]
bInSum += stackIn.b = pixels[_p + 2]
aInSum += stackIn.a = pixels[_p + 3]
rSum += rInSum
gSum += gInSum
bSum += bInSum
aSum += aInSum
stackIn = stackIn.next
var _stackOut = stackOut,
_r = _stackOut.r,
_g = _stackOut.g,
_b2 = _stackOut.b,
_a3 = _stackOut.a
rOutSum += _r
gOutSum += _g
bOutSum += _b2
aOutSum += _a3
rInSum -= _r
gInSum -= _g
bInSum -= _b2
aInSum -= _a3
stackOut = stackOut.next
yi += 4
}
yw += width
}
for (var _x = 0; _x < width; _x++) {
yi = _x << 2
var _pr = pixels[yi],
_pg = pixels[yi + 1],
_pb = pixels[yi + 2],
_pa = pixels[yi + 3],
_rOutSum = radiusPlus1 * _pr,
_gOutSum = radiusPlus1 * _pg,
_bOutSum = radiusPlus1 * _pb,
_aOutSum = radiusPlus1 * _pa,
_rSum = sumFactor * _pr,
_gSum = sumFactor * _pg,
_bSum = sumFactor * _pb,
_aSum = sumFactor * _pa
stack = stackStart
for (var _i3 = 0; _i3 < radiusPlus1; _i3++) {
stack.r = _pr
stack.g = _pg
stack.b = _pb
stack.a = _pa
stack = stack.next
}
var yp = width
var _gInSum = 0,
_bInSum = 0,
_aInSum = 0,
_rInSum = 0
for (var _i4 = 1; _i4 <= radius; _i4++) {
yi = (yp + _x) << 2
var _rbs = radiusPlus1 - _i4
_rSum += (stack.r = _pr = pixels[yi]) * _rbs
_gSum += (stack.g = _pg = pixels[yi + 1]) * _rbs
_bSum += (stack.b = _pb = pixels[yi + 2]) * _rbs
_aSum += (stack.a = _pa = pixels[yi + 3]) * _rbs
_rInSum += _pr
_gInSum += _pg
_bInSum += _pb
_aInSum += _pa
stack = stack.next
if (_i4 < heightMinus1) {
yp += width
}
}
yi = _x
stackIn = stackStart
stackOut = stackEnd
for (var _y = 0; _y < height; _y++) {
var _p2 = yi << 2
pixels[_p2 + 3] = _pa = (_aSum * mulSum) >> shgSum
if (_pa > 0) {
_pa = 255 / _pa
pixels[_p2] = ((_rSum * mulSum) >> shgSum) * _pa
pixels[_p2 + 1] = ((_gSum * mulSum) >> shgSum) * _pa
pixels[_p2 + 2] = ((_bSum * mulSum) >> shgSum) * _pa
} else {
pixels[_p2] = pixels[_p2 + 1] = pixels[_p2 + 2] = 0
}
_rSum -= _rOutSum
_gSum -= _gOutSum
_bSum -= _bOutSum
_aSum -= _aOutSum
_rOutSum -= stackIn.r
_gOutSum -= stackIn.g
_bOutSum -= stackIn.b
_aOutSum -= stackIn.a
_p2 =
(_x +
((_p2 = _y + radiusPlus1) < heightMinus1 ? _p2 : heightMinus1) *
width) <<
2
_rSum += _rInSum += stackIn.r = pixels[_p2]
_gSum += _gInSum += stackIn.g = pixels[_p2 + 1]
_bSum += _bInSum += stackIn.b = pixels[_p2 + 2]
_aSum += _aInSum += stackIn.a = pixels[_p2 + 3]
stackIn = stackIn.next
_rOutSum += _pr = stackOut.r
_gOutSum += _pg = stackOut.g
_bOutSum += _pb = stackOut.b
_aOutSum += _pa = stackOut.a
_rInSum -= _pr
_gInSum -= _pg
_bInSum -= _pb
_aInSum -= _pa
stackOut = stackOut.next
yi += width
}
}
return imageData
}
var BlurStack = function BlurStack2() {
_classCallCheck(this, BlurStack2)
this.r = 0
this.g = 0
this.b = 0
this.a = 0
this.next = null
}
function offscreen() {
var { DOMParser: DOMParserFallback } =
arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}
var preset = {
window: null,
ignoreAnimation: true,
ignoreMouse: true,
DOMParser: DOMParserFallback,
createCanvas(width, height) {
return new OffscreenCanvas(width, height)
},
createImage(url2) {
return _asyncToGenerator(function* () {
var response = yield fetch(url2)
var blob = yield response.blob()
var img = yield createImageBitmap(blob)
return img
})()
},
}
if (
typeof DOMParser !== 'undefined' ||
typeof DOMParserFallback === 'undefined'
) {
Reflect.deleteProperty(preset, 'DOMParser')
}
return preset
}
function node(_ref2) {
var { DOMParser: DOMParser2, canvas, fetch: fetch2 } = _ref2
return {
window: null,
ignoreAnimation: true,
ignoreMouse: true,
DOMParser: DOMParser2,
fetch: fetch2,
createCanvas: canvas.createCanvas,
createImage: canvas.loadImage,
}
}
var index$m = /* @__PURE__ */ Object.freeze({
__proto__: null,
offscreen,
node,
})
function compressSpaces(str) {
return str.replace(/(?!\u3000)\s+/gm, ' ')
}
function trimLeft(str) {
return str.replace(/^[\n \t]+/, '')
}
function trimRight(str) {
return str.replace(/[\n \t]+$/, '')
}
function toNumbers(str) {
var matches2 =
(str || '').match(/-?(\d+(?:\.\d*(?:[eE][+-]?\d+)?)?|\.\d+)(?=\D|$)/gm) ||
[]
return matches2.map(parseFloat)
}
var allUppercase = /^[A-Z-]+$/
function normalizeAttributeName(name2) {
if (allUppercase.test(name2)) {
return name2.toLowerCase()
}
return name2
}
function parseExternalUrl(url2) {
var urlMatch = /url\(('([^']+)'|"([^"]+)"|([^'")]+))\)/.exec(url2) || []
return urlMatch[2] || urlMatch[3] || urlMatch[4]
}
function normalizeColor$1(color2) {
if (!color2.startsWith('rgb')) {
return color2
}
var rgbParts = 3
var normalizedColor = color2.replace(/\d+(\.\d+)?/g, (num2, isFloat2) =>
rgbParts-- && isFloat2 ? String(Math.round(parseFloat(num2))) : num2
)
return normalizedColor
}
var attributeRegex = /(\[[^\]]+\])/g
var idRegex = /(#[^\s+>~.[:]+)/g
var classRegex = /(\.[^\s+>~.[:]+)/g
var pseudoElementRegex =
/(::[^\s+>~.[:]+|:first-line|:first-letter|:before|:after)/gi
var pseudoClassWithBracketsRegex = /(:[\w-]+\([^)]*\))/gi
var pseudoClassRegex = /(:[^\s+>~.[:]+)/g
var elementRegex = /([^\s+>~.[:]+)/g
function findSelectorMatch(selector2, regex3) {
var matches2 = regex3.exec(selector2)
if (!matches2) {
return [selector2, 0]
}
return [selector2.replace(regex3, ' '), matches2.length]
}
function getSelectorSpecificity(selector2) {
var specificity = [0, 0, 0]
var currentSelector = selector2
.replace(/:not\(([^)]*)\)/g, ' $1 ')
.replace(/{[\s\S]*/gm, ' ')
var delta = 0
;[currentSelector, delta] = findSelectorMatch(currentSelector, attributeRegex)
specificity[1] += delta
;[currentSelector, delta] = findSelectorMatch(currentSelector, idRegex)
specificity[0] += delta
;[currentSelector, delta] = findSelectorMatch(currentSelector, classRegex)
specificity[1] += delta
;[currentSelector, delta] = findSelectorMatch(
currentSelector,
pseudoElementRegex
)
specificity[2] += delta
;[currentSelector, delta] = findSelectorMatch(
currentSelector,
pseudoClassWithBracketsRegex
)
specificity[1] += delta
;[currentSelector, delta] = findSelectorMatch(
currentSelector,
pseudoClassRegex
)
specificity[1] += delta
currentSelector = currentSelector
.replace(/[*\s+>~]/g, ' ')
.replace(/[#.]/g, ' ')
;[currentSelector, delta] = findSelectorMatch(currentSelector, elementRegex)
specificity[2] += delta
return specificity.join('')
}
var PSEUDO_ZERO = 1e-8
function vectorMagnitude(v4) {
return Math.sqrt(Math.pow(v4[0], 2) + Math.pow(v4[1], 2))
}
function vectorsRatio(u2, v4) {
return (
(u2[0] * v4[0] + u2[1] * v4[1]) /
(vectorMagnitude(u2) * vectorMagnitude(v4))
)
}
function vectorsAngle(u2, v4) {
return (
(u2[0] * v4[1] < u2[1] * v4[0] ? -1 : 1) * Math.acos(vectorsRatio(u2, v4))
)
}
function CB1(t3) {
return t3 * t3 * t3
}
function CB2(t3) {
return 3 * t3 * t3 * (1 - t3)
}
function CB3(t3) {
return 3 * t3 * (1 - t3) * (1 - t3)
}
function CB4(t3) {
return (1 - t3) * (1 - t3) * (1 - t3)
}
function QB1(t3) {
return t3 * t3
}
function QB2(t3) {
return 2 * t3 * (1 - t3)
}
function QB3(t3) {
return (1 - t3) * (1 - t3)
}
class Property {
constructor(document2, name2, value2) {
this.document = document2
this.name = name2
this.value = value2
this.isNormalizedColor = false
}
static empty(document2) {
return new Property(document2, 'EMPTY', '')
}
split() {
var separator =
arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : ' '
var { document: document2, name: name2 } = this
return compressSpaces(this.getString())
.trim()
.split(separator)
.map((value2) => new Property(document2, name2, value2))
}
hasValue(zeroIsValue) {
var { value: value2 } = this
return (
value2 !== null &&
value2 !== '' &&
(zeroIsValue || value2 !== 0) &&
typeof value2 !== 'undefined'
)
}
isString(regexp4) {
var { value: value2 } = this
var result = typeof value2 === 'string'
if (!result || !regexp4) {
return result
}
return regexp4.test(value2)
}
isUrlDefinition() {
return this.isString(/^url\(/)
}
isPixels() {
if (!this.hasValue()) {
return false
}
var asString2 = this.getString()
switch (true) {
case asString2.endsWith('px'):
case /^[0-9]+$/.test(asString2):
return true
default:
return false
}
}
setValue(value2) {
this.value = value2
return this
}
getValue(def) {
if (typeof def === 'undefined' || this.hasValue()) {
return this.value
}
return def
}
getNumber(def) {
if (!this.hasValue()) {
if (typeof def === 'undefined') {
return 0
}
return parseFloat(def)
}
var { value: value2 } = this
var n2 = parseFloat(value2)
if (this.isString(/%$/)) {
n2 /= 100
}
return n2
}
getString(def) {
if (typeof def === 'undefined' || this.hasValue()) {
return typeof this.value === 'undefined' ? '' : String(this.value)
}
return String(def)
}
getColor(def) {
var color2 = this.getString(def)
if (this.isNormalizedColor) {
return color2
}
this.isNormalizedColor = true
color2 = normalizeColor$1(color2)
this.value = color2
return color2
}
getDpi() {
return 96
}
getRem() {
return this.document.rootEmSize
}
getEm() {
return this.document.emSize
}
getUnits() {
return this.getString().replace(/[0-9.-]/g, '')
}
getPixels(axisOrIsFontSize) {
var processPercent =
arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false
if (!this.hasValue()) {
return 0
}
var [axis, isFontSize] =
typeof axisOrIsFontSize === 'boolean'
? [void 0, axisOrIsFontSize]
: [axisOrIsFontSize]
var { viewPort } = this.document.screen
switch (true) {
case this.isString(/vmin$/):
return (
(this.getNumber() / 100) *
Math.min(viewPort.computeSize('x'), viewPort.computeSize('y'))
)
case this.isString(/vmax$/):
return (
(this.getNumber() / 100) *
Math.max(viewPort.computeSize('x'), viewPort.computeSize('y'))
)
case this.isString(/vw$/):
return (this.getNumber() / 100) * viewPort.computeSize('x')
case this.isString(/vh$/):
return (this.getNumber() / 100) * viewPort.computeSize('y')
case this.isString(/rem$/):
return this.getNumber() * this.getRem()
case this.isString(/em$/):
return this.getNumber() * this.getEm()
case this.isString(/ex$/):
return (this.getNumber() * this.getEm()) / 2
case this.isString(/px$/):
return this.getNumber()
case this.isString(/pt$/):
return this.getNumber() * this.getDpi() * (1 / 72)
case this.isString(/pc$/):
return this.getNumber() * 15
case this.isString(/cm$/):
return (this.getNumber() * this.getDpi()) / 2.54
case this.isString(/mm$/):
return (this.getNumber() * this.getDpi()) / 25.4
case this.isString(/in$/):
return this.getNumber() * this.getDpi()
case this.isString(/%$/) && isFontSize:
return this.getNumber() * this.getEm()
case this.isString(/%$/):
return this.getNumber() * viewPort.computeSize(axis)
default: {
var n2 = this.getNumber()
if (processPercent && n2 < 1) {
return n2 * viewPort.computeSize(axis)
}
return n2
}
}
}
getMilliseconds() {
if (!this.hasValue()) {
return 0
}
if (this.isString(/ms$/)) {
return this.getNumber()
}
return this.getNumber() * 1e3
}
getRadians() {
if (!this.hasValue()) {
return 0
}
switch (true) {
case this.isString(/deg$/):
return this.getNumber() * (Math.PI / 180)
case this.isString(/grad$/):
return this.getNumber() * (Math.PI / 200)
case this.isString(/rad$/):
return this.getNumber()
default:
return this.getNumber() * (Math.PI / 180)
}
}
getDefinition() {
var asString2 = this.getString()
var name2 = /#([^)'"]+)/.exec(asString2)
if (name2) {
name2 = name2[1]
}
if (!name2) {
name2 = asString2
}
return this.document.definitions[name2]
}
getFillStyleDefinition(element, opacity2) {
var def = this.getDefinition()
if (!def) {
return null
}
if (typeof def.createGradient === 'function') {
return def.createGradient(this.document.ctx, element, opacity2)
}
if (typeof def.createPattern === 'function') {
if (def.getHrefAttribute().hasValue()) {
var patternTransform = def.getAttribute('patternTransform')
def = def.getHrefAttribute().getDefinition()
if (patternTransform.hasValue()) {
def
.getAttribute('patternTransform', true)
.setValue(patternTransform.value)
}
}
return def.createPattern(this.document.ctx, element, opacity2)
}
return null
}
getTextBaseline() {
if (!this.hasValue()) {
return null
}
return Property.textBaselineMapping[this.getString()]
}
addOpacity(opacity2) {
var value2 = this.getColor()
var len2 = value2.length
var commas = 0
for (var i2 = 0; i2 < len2; i2++) {
if (value2[i2] === ',') {
commas++
}
if (commas === 3) {
break
}
}
if (opacity2.hasValue() && this.isString() && commas !== 3) {
var color2 = new rgbcolor(value2)
if (color2.ok) {
color2.alpha = opacity2.getNumber()
value2 = color2.toRGBA()
}
}
return new Property(this.document, this.name, value2)
}
}
Property.textBaselineMapping = {
baseline: 'alphabetic',
'before-edge': 'top',
'text-before-edge': 'top',
middle: 'middle',
central: 'middle',
'after-edge': 'bottom',
'text-after-edge': 'bottom',
ideographic: 'ideographic',
alphabetic: 'alphabetic',
hanging: 'hanging',
mathematical: 'alphabetic',
}
class ViewPort {
constructor() {
this.viewPorts = []
}
clear() {
this.viewPorts = []
}
setCurrent(width, height) {
this.viewPorts.push({
width,
height,
})
}
removeCurrent() {
this.viewPorts.pop()
}
getCurrent() {
var { viewPorts } = this
return viewPorts[viewPorts.length - 1]
}
get width() {
return this.getCurrent().width
}
get height() {
return this.getCurrent().height
}
computeSize(d3) {
if (typeof d3 === 'number') {
return d3
}
if (d3 === 'x') {
return this.width
}
if (d3 === 'y') {
return this.height
}
return (
Math.sqrt(Math.pow(this.width, 2) + Math.pow(this.height, 2)) /
Math.sqrt(2)
)
}
}
class Point$2 {
constructor(x2, y2) {
this.x = x2
this.y = y2
}
static parse(point) {
var defaultValue =
arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0
var [x2 = defaultValue, y2 = defaultValue] = toNumbers(point)
return new Point$2(x2, y2)
}
static parseScale(scale2) {
var defaultValue =
arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1
var [x2 = defaultValue, y2 = x2] = toNumbers(scale2)
return new Point$2(x2, y2)
}
static parsePath(path) {
var points2 = toNumbers(path)
var len2 = points2.length
var pathPoints = []
for (var i2 = 0; i2 < len2; i2 += 2) {
pathPoints.push(new Point$2(points2[i2], points2[i2 + 1]))
}
return pathPoints
}
angleTo(point) {
return Math.atan2(point.y - this.y, point.x - this.x)
}
applyTransform(transform3) {
var { x: x2, y: y2 } = this
var xp = x2 * transform3[0] + y2 * transform3[2] + transform3[4]
var yp = x2 * transform3[1] + y2 * transform3[3] + transform3[5]
this.x = xp
this.y = yp
}
}
class Mouse {
constructor(screen) {
this.screen = screen
this.working = false
this.events = []
this.eventElements = []
this.onClick = this.onClick.bind(this)
this.onMouseMove = this.onMouseMove.bind(this)
}
isWorking() {
return this.working
}
start() {
if (this.working) {
return
}
var { screen, onClick, onMouseMove } = this
var canvas = screen.ctx.canvas
canvas.onclick = onClick
canvas.onmousemove = onMouseMove
this.working = true
}
stop() {
if (!this.working) {
return
}
var canvas = this.screen.ctx.canvas
this.working = false
canvas.onclick = null
canvas.onmousemove = null
}
hasEvents() {
return this.working && this.events.length > 0
}
runEvents() {
if (!this.working) {
return
}
var { screen: document2, events: events2, eventElements } = this
var { style: style2 } = document2.ctx.canvas
if (style2) {
style2.cursor = ''
}
events2.forEach((_ref2, i2) => {
var { run: run2 } = _ref2
var element = eventElements[i2]
while (element) {
run2(element)
element = element.parent
}
})
this.events = []
this.eventElements = []
}
checkPath(element, ctx) {
if (!this.working || !ctx) {
return
}
var { events: events2, eventElements } = this
events2.forEach((_ref2, i2) => {
var { x: x2, y: y2 } = _ref2
if (
!eventElements[i2] &&
ctx.isPointInPath &&
ctx.isPointInPath(x2, y2)
) {
eventElements[i2] = element
}
})
}
checkBoundingBox(element, boundingBox) {
if (!this.working || !boundingBox) {
return
}
var { events: events2, eventElements } = this
events2.forEach((_ref3, i2) => {
var { x: x2, y: y2 } = _ref3
if (!eventElements[i2] && boundingBox.isPointInBox(x2, y2)) {
eventElements[i2] = element
}
})
}
mapXY(x2, y2) {
var { window: window2, ctx } = this.screen
var point = new Point$2(x2, y2)
var element = ctx.canvas
while (element) {
point.x -= element.offsetLeft
point.y -= element.offsetTop
element = element.offsetParent
}
if (window2.scrollX) {
point.x += window2.scrollX
}
if (window2.scrollY) {
point.y += window2.scrollY
}
return point
}
onClick(event) {
var { x: x2, y: y2 } = this.mapXY(event.clientX, event.clientY)
this.events.push({
type: 'onclick',
x: x2,
y: y2,
run(eventTarget) {
if (eventTarget.onClick) {
eventTarget.onClick()
}
},
})
}
onMouseMove(event) {
var { x: x2, y: y2 } = this.mapXY(event.clientX, event.clientY)
this.events.push({
type: 'onmousemove',
x: x2,
y: y2,
run(eventTarget) {
if (eventTarget.onMouseMove) {
eventTarget.onMouseMove()
}
},
})
}
}
var defaultWindow = typeof window !== 'undefined' ? window : null
var defaultFetch$1 = typeof fetch !== 'undefined' ? fetch.bind(void 0) : null
class Screen {
constructor(ctx) {
var { fetch: fetch2 = defaultFetch$1, window: window2 = defaultWindow } =
arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}
this.ctx = ctx
this.FRAMERATE = 30
this.MAX_VIRTUAL_PIXELS = 3e4
this.CLIENT_WIDTH = 800
this.CLIENT_HEIGHT = 600
this.viewPort = new ViewPort()
this.mouse = new Mouse(this)
this.animations = []
this.waits = []
this.frameDuration = 0
this.isReadyLock = false
this.isFirstRender = true
this.intervalId = null
this.window = window2
this.fetch = fetch2
}
wait(checker) {
this.waits.push(checker)
}
ready() {
if (!this.readyPromise) {
return Promise.resolve()
}
return this.readyPromise
}
isReady() {
if (this.isReadyLock) {
return true
}
var isReadyLock = this.waits.every((_2) => _2())
if (isReadyLock) {
this.waits = []
if (this.resolveReady) {
this.resolveReady()
}
}
this.isReadyLock = isReadyLock
return isReadyLock
}
setDefaults(ctx) {
ctx.strokeStyle = 'rgba(0,0,0,0)'
ctx.lineCap = 'butt'
ctx.lineJoin = 'miter'
ctx.miterLimit = 4
}
setViewBox(_ref2) {
var {
document: document2,
ctx,
aspectRatio,
width,
desiredWidth,
height,
desiredHeight,
minX = 0,
minY = 0,
refX,
refY,
clip: clip2 = false,
clipX = 0,
clipY = 0,
} = _ref2
var cleanAspectRatio = compressSpaces(aspectRatio).replace(/^defer\s/, '')
var [aspectRatioAlign, aspectRatioMeetOrSlice] = cleanAspectRatio.split(' ')
var align = aspectRatioAlign || 'xMidYMid'
var meetOrSlice = aspectRatioMeetOrSlice || 'meet'
var scaleX = width / desiredWidth
var scaleY = height / desiredHeight
var scaleMin = Math.min(scaleX, scaleY)
var scaleMax = Math.max(scaleX, scaleY)
var finalDesiredWidth = desiredWidth
var finalDesiredHeight = desiredHeight
if (meetOrSlice === 'meet') {
finalDesiredWidth *= scaleMin
finalDesiredHeight *= scaleMin
}
if (meetOrSlice === 'slice') {
finalDesiredWidth *= scaleMax
finalDesiredHeight *= scaleMax
}
var refXProp = new Property(document2, 'refX', refX)
var refYProp = new Property(document2, 'refY', refY)
var hasRefs = refXProp.hasValue() && refYProp.hasValue()
if (hasRefs) {
ctx.translate(
-scaleMin * refXProp.getPixels('x'),
-scaleMin * refYProp.getPixels('y')
)
}
if (clip2) {
var scaledClipX = scaleMin * clipX
var scaledClipY = scaleMin * clipY
ctx.beginPath()
ctx.moveTo(scaledClipX, scaledClipY)
ctx.lineTo(width, scaledClipY)
ctx.lineTo(width, height)
ctx.lineTo(scaledClipX, height)
ctx.closePath()
ctx.clip()
}
if (!hasRefs) {
var isMeetMinY = meetOrSlice === 'meet' && scaleMin === scaleY
var isSliceMaxY = meetOrSlice === 'slice' && scaleMax === scaleY
var isMeetMinX = meetOrSlice === 'meet' && scaleMin === scaleX
var isSliceMaxX = meetOrSlice === 'slice' && scaleMax === scaleX
if (align.startsWith('xMid') && (isMeetMinY || isSliceMaxY)) {
ctx.translate(width / 2 - finalDesiredWidth / 2, 0)
}
if (align.endsWith('YMid') && (isMeetMinX || isSliceMaxX)) {
ctx.translate(0, height / 2 - finalDesiredHeight / 2)
}
if (align.startsWith('xMax') && (isMeetMinY || isSliceMaxY)) {
ctx.translate(width - finalDesiredWidth, 0)
}
if (align.endsWith('YMax') && (isMeetMinX || isSliceMaxX)) {
ctx.translate(0, height - finalDesiredHeight)
}
}
switch (true) {
case align === 'none':
ctx.scale(scaleX, scaleY)
break
case meetOrSlice === 'meet':
ctx.scale(scaleMin, scaleMin)
break
case meetOrSlice === 'slice':
ctx.scale(scaleMax, scaleMax)
break
}
ctx.translate(-minX, -minY)
}
start(element) {
var {
enableRedraw = false,
ignoreMouse = false,
ignoreAnimation = false,
ignoreDimensions = false,
ignoreClear = false,
forceRedraw,
scaleWidth,
scaleHeight,
offsetX,
offsetY,
} = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}
var { FRAMERATE, mouse: mouse2 } = this
var frameDuration2 = 1e3 / FRAMERATE
this.frameDuration = frameDuration2
this.readyPromise = new Promise((resolve2) => {
this.resolveReady = resolve2
})
if (this.isReady()) {
this.render(
element,
ignoreDimensions,
ignoreClear,
scaleWidth,
scaleHeight,
offsetX,
offsetY
)
}
if (!enableRedraw) {
return
}
var now2 = Date.now()
var then2 = now2
var delta = 0
var tick = () => {
now2 = Date.now()
delta = now2 - then2
if (delta >= frameDuration2) {
then2 = now2 - (delta % frameDuration2)
if (this.shouldUpdate(ignoreAnimation, forceRedraw)) {
this.render(
element,
ignoreDimensions,
ignoreClear,
scaleWidth,
scaleHeight,
offsetX,
offsetY
)
mouse2.runEvents()
}
}
this.intervalId = requestAnimationFrame$3(tick)
}
if (!ignoreMouse) {
mouse2.start()
}
this.intervalId = requestAnimationFrame$3(tick)
}
stop() {
if (this.intervalId) {
requestAnimationFrame$3.cancel(this.intervalId)
this.intervalId = null
}
this.mouse.stop()
}
shouldUpdate(ignoreAnimation, forceRedraw) {
if (!ignoreAnimation) {
var { frameDuration: frameDuration2 } = this
var shouldUpdate = this.animations.reduce(
(shouldUpdate2, animation) =>
animation.update(frameDuration2) || shouldUpdate2,
false
)
if (shouldUpdate) {
return true
}
}
if (typeof forceRedraw === 'function' && forceRedraw()) {
return true
}
if (!this.isReadyLock && this.isReady()) {
return true
}
if (this.mouse.hasEvents()) {
return true
}
return false
}
render(
element,
ignoreDimensions,
ignoreClear,
scaleWidth,
scaleHeight,
offsetX,
offsetY
) {
var { CLIENT_WIDTH, CLIENT_HEIGHT, viewPort, ctx, isFirstRender } = this
var canvas = ctx.canvas
viewPort.clear()
if (canvas.width && canvas.height) {
viewPort.setCurrent(canvas.width, canvas.height)
} else {
viewPort.setCurrent(CLIENT_WIDTH, CLIENT_HEIGHT)
}
var widthStyle = element.getStyle('width')
var heightStyle = element.getStyle('height')
if (
!ignoreDimensions &&
(isFirstRender ||
(typeof scaleWidth !== 'number' && typeof scaleHeight !== 'number'))
) {
if (widthStyle.hasValue()) {
canvas.width = widthStyle.getPixels('x')
if (canvas.style) {
canvas.style.width = ''.concat(canvas.width, 'px')
}
}
if (heightStyle.hasValue()) {
canvas.height = heightStyle.getPixels('y')
if (canvas.style) {
canvas.style.height = ''.concat(canvas.height, 'px')
}
}
}
var cWidth = canvas.clientWidth || canvas.width
var cHeight = canvas.clientHeight || canvas.height
if (ignoreDimensions && widthStyle.hasValue() && heightStyle.hasValue()) {
cWidth = widthStyle.getPixels('x')
cHeight = heightStyle.getPixels('y')
}
viewPort.setCurrent(cWidth, cHeight)
if (typeof offsetX === 'number') {
element.getAttribute('x', true).setValue(offsetX)
}
if (typeof offsetY === 'number') {
element.getAttribute('y', true).setValue(offsetY)
}
if (typeof scaleWidth === 'number' || typeof scaleHeight === 'number') {
var viewBox = toNumbers(element.getAttribute('viewBox').getString())
var xRatio = 0
var yRatio = 0
if (typeof scaleWidth === 'number') {
var _widthStyle = element.getStyle('width')
if (_widthStyle.hasValue()) {
xRatio = _widthStyle.getPixels('x') / scaleWidth
} else if (!isNaN(viewBox[2])) {
xRatio = viewBox[2] / scaleWidth
}
}
if (typeof scaleHeight === 'number') {
var _heightStyle = element.getStyle('height')
if (_heightStyle.hasValue()) {
yRatio = _heightStyle.getPixels('y') / scaleHeight
} else if (!isNaN(viewBox[3])) {
yRatio = viewBox[3] / scaleHeight
}
}
if (!xRatio) {
xRatio = yRatio
}
if (!yRatio) {
yRatio = xRatio
}
element.getAttribute('width', true).setValue(scaleWidth)
element.getAttribute('height', true).setValue(scaleHeight)
var transformStyle = element.getStyle('transform', true, true)
transformStyle.setValue(
''
.concat(transformStyle.getString(), ' scale(')
.concat(1 / xRatio, ', ')
.concat(1 / yRatio, ')')
)
}
if (!ignoreClear) {
ctx.clearRect(0, 0, cWidth, cHeight)
}
element.render(ctx)
if (isFirstRender) {
this.isFirstRender = false
}
}
}
Screen.defaultWindow = defaultWindow
Screen.defaultFetch = defaultFetch$1
var { defaultFetch } = Screen
var DefaultDOMParser = typeof DOMParser !== 'undefined' ? DOMParser : null
class Parser {
constructor() {
var {
fetch: fetch2 = defaultFetch,
DOMParser: DOMParser2 = DefaultDOMParser,
} = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}
this.fetch = fetch2
this.DOMParser = DOMParser2
}
parse(resource) {
var _this = this
return _asyncToGenerator(function* () {
if (resource.startsWith('<')) {
return _this.parseFromString(resource)
}
return _this.load(resource)
})()
}
parseFromString(xml2) {
var parser2 = new this.DOMParser()
try {
return this.checkDocument(parser2.parseFromString(xml2, 'image/svg+xml'))
} catch (err) {
return this.checkDocument(parser2.parseFromString(xml2, 'text/xml'))
}
}
checkDocument(document2) {
var parserError = document2.getElementsByTagName('parsererror')[0]
if (parserError) {
throw new Error(parserError.textContent)
}
return document2
}
load(url2) {
var _this2 = this
return _asyncToGenerator(function* () {
var response = yield _this2.fetch(url2)
var xml2 = yield response.text()
return _this2.parseFromString(xml2)
})()
}
}
class Translate {
constructor(_2, point) {
this.type = 'translate'
this.point = null
this.point = Point$2.parse(point)
}
apply(ctx) {
var { x: x2, y: y2 } = this.point
ctx.translate(x2 || 0, y2 || 0)
}
unapply(ctx) {
var { x: x2, y: y2 } = this.point
ctx.translate(-1 * x2 || 0, -1 * y2 || 0)
}
applyToPoint(point) {
var { x: x2, y: y2 } = this.point
point.applyTransform([1, 0, 0, 1, x2 || 0, y2 || 0])
}
}
class Rotate {
constructor(document2, rotate2, transformOrigin2) {
this.type = 'rotate'
this.angle = null
this.originX = null
this.originY = null
this.cx = 0
this.cy = 0
var numbers = toNumbers(rotate2)
this.angle = new Property(document2, 'angle', numbers[0])
this.originX = transformOrigin2[0]
this.originY = transformOrigin2[1]
this.cx = numbers[1] || 0
this.cy = numbers[2] || 0
}
apply(ctx) {
var { cx, cy, originX, originY, angle: angle2 } = this
var tx = cx + originX.getPixels('x')
var ty = cy + originY.getPixels('y')
ctx.translate(tx, ty)
ctx.rotate(angle2.getRadians())
ctx.translate(-tx, -ty)
}
unapply(ctx) {
var { cx, cy, originX, originY, angle: angle2 } = this
var tx = cx + originX.getPixels('x')
var ty = cy + originY.getPixels('y')
ctx.translate(tx, ty)
ctx.rotate(-1 * angle2.getRadians())
ctx.translate(-tx, -ty)
}
applyToPoint(point) {
var { cx, cy, angle: angle2 } = this
var rad = angle2.getRadians()
point.applyTransform([1, 0, 0, 1, cx || 0, cy || 0])
point.applyTransform([
Math.cos(rad),
Math.sin(rad),
-Math.sin(rad),
Math.cos(rad),
0,
0,
])
point.applyTransform([1, 0, 0, 1, -cx || 0, -cy || 0])
}
}
class Scale$2 {
constructor(_2, scale2, transformOrigin2) {
this.type = 'scale'
this.scale = null
this.originX = null
this.originY = null
var scaleSize = Point$2.parseScale(scale2)
if (scaleSize.x === 0 || scaleSize.y === 0) {
scaleSize.x = PSEUDO_ZERO
scaleSize.y = PSEUDO_ZERO
}
this.scale = scaleSize
this.originX = transformOrigin2[0]
this.originY = transformOrigin2[1]
}
apply(ctx) {
var {
scale: { x: x2, y: y2 },
originX,
originY,
} = this
var tx = originX.getPixels('x')
var ty = originY.getPixels('y')
ctx.translate(tx, ty)
ctx.scale(x2, y2 || x2)
ctx.translate(-tx, -ty)
}
unapply(ctx) {
var {
scale: { x: x2, y: y2 },
originX,
originY,
} = this
var tx = originX.getPixels('x')
var ty = originY.getPixels('y')
ctx.translate(tx, ty)
ctx.scale(1 / x2, 1 / y2 || x2)
ctx.translate(-tx, -ty)
}
applyToPoint(point) {
var { x: x2, y: y2 } = this.scale
point.applyTransform([x2 || 0, 0, 0, y2 || 0, 0, 0])
}
}
class Matrix {
constructor(_2, matrix2, transformOrigin2) {
this.type = 'matrix'
this.matrix = []
this.originX = null
this.originY = null
this.matrix = toNumbers(matrix2)
this.originX = transformOrigin2[0]
this.originY = transformOrigin2[1]
}
apply(ctx) {
var { originX, originY, matrix: matrix2 } = this
var tx = originX.getPixels('x')
var ty = originY.getPixels('y')
ctx.translate(tx, ty)
ctx.transform(
matrix2[0],
matrix2[1],
matrix2[2],
matrix2[3],
matrix2[4],
matrix2[5]
)
ctx.translate(-tx, -ty)
}
unapply(ctx) {
var { originX, originY, matrix: matrix2 } = this
var a2 = matrix2[0]
var b2 = matrix2[2]
var c2 = matrix2[4]
var d3 = matrix2[1]
var e2 = matrix2[3]
var f2 = matrix2[5]
var g2 = 0
var h2 = 0
var i2 = 1
var det =
1 /
(a2 * (e2 * i2 - f2 * h2) -
b2 * (d3 * i2 - f2 * g2) +
c2 * (d3 * h2 - e2 * g2))
var tx = originX.getPixels('x')
var ty = originY.getPixels('y')
ctx.translate(tx, ty)
ctx.transform(
det * (e2 * i2 - f2 * h2),
det * (f2 * g2 - d3 * i2),
det * (c2 * h2 - b2 * i2),
det * (a2 * i2 - c2 * g2),
det * (b2 * f2 - c2 * e2),
det * (c2 * d3 - a2 * f2)
)
ctx.translate(-tx, -ty)
}
applyToPoint(point) {
point.applyTransform(this.matrix)
}
}
class Skew extends Matrix {
constructor(document2, skew, transformOrigin2) {
super(document2, skew, transformOrigin2)
this.type = 'skew'
this.angle = null
this.angle = new Property(document2, 'angle', skew)
}
}
class SkewX extends Skew {
constructor(document2, skew, transformOrigin2) {
super(document2, skew, transformOrigin2)
this.type = 'skewX'
this.matrix = [1, 0, Math.tan(this.angle.getRadians()), 1, 0, 0]
}
}
class SkewY extends Skew {
constructor(document2, skew, transformOrigin2) {
super(document2, skew, transformOrigin2)
this.type = 'skewY'
this.matrix = [1, Math.tan(this.angle.getRadians()), 0, 1, 0, 0]
}
}
function parseTransforms(transform3) {
return compressSpaces(transform3)
.trim()
.replace(/\)([a-zA-Z])/g, ') $1')
.replace(/\)(\s?,\s?)/g, ') ')
.split(/\s(?=[a-z])/)
}
function parseTransform(transform3) {
var [type4, value2] = transform3.split('(')
return [type4.trim(), value2.trim().replace(')', '')]
}
class Transform {
constructor(document2, transform3, transformOrigin2) {
this.document = document2
this.transforms = []
var data2 = parseTransforms(transform3)
data2.forEach((transform4) => {
if (transform4 === 'none') {
return
}
var [type4, value2] = parseTransform(transform4)
var TransformType = Transform.transformTypes[type4]
if (typeof TransformType !== 'undefined') {
this.transforms.push(
new TransformType(this.document, value2, transformOrigin2)
)
}
})
}
static fromElement(document2, element) {
var transformStyle = element.getStyle('transform', false, true)
var [
transformOriginXProperty,
transformOriginYProperty = transformOriginXProperty,
] = element.getStyle('transform-origin', false, true).split()
var transformOrigin2 = [transformOriginXProperty, transformOriginYProperty]
if (transformStyle.hasValue()) {
return new Transform(
document2,
transformStyle.getString(),
transformOrigin2
)
}
return null
}
apply(ctx) {
var { transforms } = this
var len2 = transforms.length
for (var i2 = 0; i2 < len2; i2++) {
transforms[i2].apply(ctx)
}
}
unapply(ctx) {
var { transforms } = this
var len2 = transforms.length
for (var i2 = len2 - 1; i2 >= 0; i2--) {
transforms[i2].unapply(ctx)
}
}
applyToPoint(point) {
var { transforms } = this
var len2 = transforms.length
for (var i2 = 0; i2 < len2; i2++) {
transforms[i2].applyToPoint(point)
}
}
}
Transform.transformTypes = {
translate: Translate,
rotate: Rotate,
scale: Scale$2,
matrix: Matrix,
skewX: SkewX,
skewY: SkewY,
}
class Element$3 {
constructor(document2, node2) {
var captureTextNodes =
arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false
this.document = document2
this.node = node2
this.captureTextNodes = captureTextNodes
this.attributes = {}
this.styles = {}
this.stylesSpecificity = {}
this.animationFrozen = false
this.animationFrozenValue = ''
this.parent = null
this.children = []
if (!node2 || node2.nodeType !== 1) {
return
}
Array.from(node2.attributes).forEach((attribute) => {
var nodeName = normalizeAttributeName(attribute.nodeName)
this.attributes[nodeName] = new Property(
document2,
nodeName,
attribute.value
)
})
this.addStylesFromStyleDefinition()
if (this.getAttribute('style').hasValue()) {
var styles = this.getAttribute('style')
.getString()
.split(';')
.map((_2) => _2.trim())
styles.forEach((style2) => {
if (!style2) {
return
}
var [name2, value2] = style2.split(':').map((_2) => _2.trim())
this.styles[name2] = new Property(document2, name2, value2)
})
}
var { definitions } = document2
var id2 = this.getAttribute('id')
if (id2.hasValue()) {
if (!definitions[id2.getString()]) {
definitions[id2.getString()] = this
}
}
Array.from(node2.childNodes).forEach((childNode) => {
if (childNode.nodeType === 1) {
this.addChild(childNode)
} else if (
captureTextNodes &&
(childNode.nodeType === 3 || childNode.nodeType === 4)
) {
var textNode = document2.createTextNode(childNode)
if (textNode.getText().length > 0) {
this.addChild(textNode)
}
}
})
}
getAttribute(name2) {
var createIfNotExists =
arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false
var attr = this.attributes[name2]
if (!attr && createIfNotExists) {
var _attr = new Property(this.document, name2, '')
this.attributes[name2] = _attr
return _attr
}
return attr || Property.empty(this.document)
}
getHrefAttribute() {
for (var key2 in this.attributes) {
if (key2 === 'href' || key2.endsWith(':href')) {
return this.attributes[key2]
}
}
return Property.empty(this.document)
}
getStyle(name2) {
var createIfNotExists =
arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false
var skipAncestors =
arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false
var style2 = this.styles[name2]
if (style2) {
return style2
}
var attr = this.getAttribute(name2)
if (attr !== null && attr !== void 0 && attr.hasValue()) {
this.styles[name2] = attr
return attr
}
if (!skipAncestors) {
var { parent: parent2 } = this
if (parent2) {
var parentStyle = parent2.getStyle(name2)
if (
parentStyle !== null &&
parentStyle !== void 0 &&
parentStyle.hasValue()
) {
return parentStyle
}
}
}
if (createIfNotExists) {
var _style = new Property(this.document, name2, '')
this.styles[name2] = _style
return _style
}
return style2 || Property.empty(this.document)
}
render(ctx) {
if (
this.getStyle('display').getString() === 'none' ||
this.getStyle('visibility').getString() === 'hidden'
) {
return
}
ctx.save()
if (this.getStyle('mask').hasValue()) {
var mask = this.getStyle('mask').getDefinition()
if (mask) {
this.applyEffects(ctx)
mask.apply(ctx, this)
}
} else if (this.getStyle('filter').getValue('none') !== 'none') {
var filter2 = this.getStyle('filter').getDefinition()
if (filter2) {
this.applyEffects(ctx)
filter2.apply(ctx, this)
}
} else {
this.setContext(ctx)
this.renderChildren(ctx)
this.clearContext(ctx)
}
ctx.restore()
}
setContext(_2) {}
applyEffects(ctx) {
var transform3 = Transform.fromElement(this.document, this)
if (transform3) {
transform3.apply(ctx)
}
var clipPathStyleProp = this.getStyle('clip-path', false, true)
if (clipPathStyleProp.hasValue()) {
var clip2 = clipPathStyleProp.getDefinition()
if (clip2) {
clip2.apply(ctx)
}
}
}
clearContext(_2) {}
renderChildren(ctx) {
this.children.forEach((child) => {
child.render(ctx)
})
}
addChild(childNode) {
var child =
childNode instanceof Element$3
? childNode
: this.document.createElement(childNode)
child.parent = this
if (!Element$3.ignoreChildTypes.includes(child.type)) {
this.children.push(child)
}
}
matchesSelector(selector2) {
var _node$getAttribute
var { node: node2 } = this
if (typeof node2.matches === 'function') {
return node2.matches(selector2)
}
var styleClasses =
(_node$getAttribute = node2.getAttribute) === null ||
_node$getAttribute === void 0
? void 0
: _node$getAttribute.call(node2, 'class')
if (!styleClasses || styleClasses === '') {
return false
}
return styleClasses
.split(' ')
.some((styleClass) => '.'.concat(styleClass) === selector2)
}
addStylesFromStyleDefinition() {
var { styles, stylesSpecificity } = this.document
for (var selector2 in styles) {
if (!selector2.startsWith('@') && this.matchesSelector(selector2)) {
var style2 = styles[selector2]
var specificity = stylesSpecificity[selector2]
if (style2) {
for (var name2 in style2) {
var existingSpecificity = this.stylesSpecificity[name2]
if (typeof existingSpecificity === 'undefined') {
existingSpecificity = '000'
}
if (specificity >= existingSpecificity) {
this.styles[name2] = style2[name2]
this.stylesSpecificity[name2] = specificity
}
}
}
}
}
}
removeStyles(element, ignoreStyles) {
var toRestore = ignoreStyles.reduce((toRestore2, name2) => {
var styleProp = element.getStyle(name2)
if (!styleProp.hasValue()) {
return toRestore2
}
var value2 = styleProp.getString()
styleProp.setValue('')
return [...toRestore2, [name2, value2]]
}, [])
return toRestore
}
restoreStyles(element, styles) {
styles.forEach((_ref2) => {
var [name2, value2] = _ref2
element.getStyle(name2, true).setValue(value2)
})
}
isFirstChild() {
var _this$parent
return (
((_this$parent = this.parent) === null || _this$parent === void 0
? void 0
: _this$parent.children.indexOf(this)) === 0
)
}
}
Element$3.ignoreChildTypes = ['title']
class UnknownElement extends Element$3 {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes)
}
}
function wrapFontFamily(fontFamily2) {
var trimmed = fontFamily2.trim()
return /^('|")/.test(trimmed) ? trimmed : '"'.concat(trimmed, '"')
}
function prepareFontFamily(fontFamily2) {
return typeof process === 'undefined'
? fontFamily2
: fontFamily2.trim().split(',').map(wrapFontFamily).join(',')
}
function prepareFontStyle(fontStyle2) {
if (!fontStyle2) {
return ''
}
var targetFontStyle = fontStyle2.trim().toLowerCase()
switch (targetFontStyle) {
case 'normal':
case 'italic':
case 'oblique':
case 'inherit':
case 'initial':
case 'unset':
return targetFontStyle
default:
if (/^oblique\s+(-|)\d+deg$/.test(targetFontStyle)) {
return targetFontStyle
}
return ''
}
}
function prepareFontWeight(fontWeight2) {
if (!fontWeight2) {
return ''
}
var targetFontWeight = fontWeight2.trim().toLowerCase()
switch (targetFontWeight) {
case 'normal':
case 'bold':
case 'lighter':
case 'bolder':
case 'inherit':
case 'initial':
case 'unset':
return targetFontWeight
default:
if (/^[\d.]+$/.test(targetFontWeight)) {
return targetFontWeight
}
return ''
}
}
class Font {
constructor(
fontStyle2,
fontVariant2,
fontWeight2,
fontSize2,
fontFamily2,
inherit
) {
var inheritFont = inherit
? typeof inherit === 'string'
? Font.parse(inherit)
: inherit
: {}
this.fontFamily = fontFamily2 || inheritFont.fontFamily
this.fontSize = fontSize2 || inheritFont.fontSize
this.fontStyle = fontStyle2 || inheritFont.fontStyle
this.fontWeight = fontWeight2 || inheritFont.fontWeight
this.fontVariant = fontVariant2 || inheritFont.fontVariant
}
static parse() {
var font2 =
arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : ''
var inherit = arguments.length > 1 ? arguments[1] : void 0
var fontStyle2 = ''
var fontVariant2 = ''
var fontWeight2 = ''
var fontSize2 = ''
var fontFamily2 = ''
var parts = compressSpaces(font2).trim().split(' ')
var set2 = {
fontSize: false,
fontStyle: false,
fontWeight: false,
fontVariant: false,
}
parts.forEach((part) => {
switch (true) {
case !set2.fontStyle && Font.styles.includes(part):
if (part !== 'inherit') {
fontStyle2 = part
}
set2.fontStyle = true
break
case !set2.fontVariant && Font.variants.includes(part):
if (part !== 'inherit') {
fontVariant2 = part
}
set2.fontStyle = true
set2.fontVariant = true
break
case !set2.fontWeight && Font.weights.includes(part):
if (part !== 'inherit') {
fontWeight2 = part
}
set2.fontStyle = true
set2.fontVariant = true
set2.fontWeight = true
break
case !set2.fontSize:
if (part !== 'inherit') {
;[fontSize2] = part.split('/')
}
set2.fontStyle = true
set2.fontVariant = true
set2.fontWeight = true
set2.fontSize = true
break
default:
if (part !== 'inherit') {
fontFamily2 += part
}
}
})
return new Font(
fontStyle2,
fontVariant2,
fontWeight2,
fontSize2,
fontFamily2,
inherit
)
}
toString() {
return [
prepareFontStyle(this.fontStyle),
this.fontVariant,
prepareFontWeight(this.fontWeight),
this.fontSize,
prepareFontFamily(this.fontFamily),
]
.join(' ')
.trim()
}
}
Font.styles = 'normal|italic|oblique|inherit'
Font.variants = 'normal|small-caps|inherit'
Font.weights =
'normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit'
class BoundingBox {
constructor() {
var x1 =
arguments.length > 0 && arguments[0] !== void 0
? arguments[0]
: Number.NaN
var y1 =
arguments.length > 1 && arguments[1] !== void 0
? arguments[1]
: Number.NaN
var x2 =
arguments.length > 2 && arguments[2] !== void 0
? arguments[2]
: Number.NaN
var y2 =
arguments.length > 3 && arguments[3] !== void 0
? arguments[3]
: Number.NaN
this.x1 = x1
this.y1 = y1
this.x2 = x2
this.y2 = y2
this.addPoint(x1, y1)
this.addPoint(x2, y2)
}
get x() {
return this.x1
}
get y() {
return this.y1
}
get width() {
return this.x2 - this.x1
}
get height() {
return this.y2 - this.y1
}
addPoint(x2, y2) {
if (typeof x2 !== 'undefined') {
if (isNaN(this.x1) || isNaN(this.x2)) {
this.x1 = x2
this.x2 = x2
}
if (x2 < this.x1) {
this.x1 = x2
}
if (x2 > this.x2) {
this.x2 = x2
}
}
if (typeof y2 !== 'undefined') {
if (isNaN(this.y1) || isNaN(this.y2)) {
this.y1 = y2
this.y2 = y2
}
if (y2 < this.y1) {
this.y1 = y2
}
if (y2 > this.y2) {
this.y2 = y2
}
}
}
addX(x2) {
this.addPoint(x2, null)
}
addY(y2) {
this.addPoint(null, y2)
}
addBoundingBox(boundingBox) {
if (!boundingBox) {
return
}
var { x1, y1, x2, y2 } = boundingBox
this.addPoint(x1, y1)
this.addPoint(x2, y2)
}
sumCubic(t3, p0, p1, p2, p3) {
return (
Math.pow(1 - t3, 3) * p0 +
3 * Math.pow(1 - t3, 2) * t3 * p1 +
3 * (1 - t3) * Math.pow(t3, 2) * p2 +
Math.pow(t3, 3) * p3
)
}
bezierCurveAdd(forX, p0, p1, p2, p3) {
var b2 = 6 * p0 - 12 * p1 + 6 * p2
var a2 = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3
var c2 = 3 * p1 - 3 * p0
if (a2 === 0) {
if (b2 === 0) {
return
}
var t3 = -c2 / b2
if (0 < t3 && t3 < 1) {
if (forX) {
this.addX(this.sumCubic(t3, p0, p1, p2, p3))
} else {
this.addY(this.sumCubic(t3, p0, p1, p2, p3))
}
}
return
}
var b2ac = Math.pow(b2, 2) - 4 * c2 * a2
if (b2ac < 0) {
return
}
var t1 = (-b2 + Math.sqrt(b2ac)) / (2 * a2)
if (0 < t1 && t1 < 1) {
if (forX) {
this.addX(this.sumCubic(t1, p0, p1, p2, p3))
} else {
this.addY(this.sumCubic(t1, p0, p1, p2, p3))
}
}
var t22 = (-b2 - Math.sqrt(b2ac)) / (2 * a2)
if (0 < t22 && t22 < 1) {
if (forX) {
this.addX(this.sumCubic(t22, p0, p1, p2, p3))
} else {
this.addY(this.sumCubic(t22, p0, p1, p2, p3))
}
}
}
addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {
this.addPoint(p0x, p0y)
this.addPoint(p3x, p3y)
this.bezierCurveAdd(true, p0x, p1x, p2x, p3x)
this.bezierCurveAdd(false, p0y, p1y, p2y, p3y)
}
addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) {
var cp1x = p0x + (2 / 3) * (p1x - p0x)
var cp1y = p0y + (2 / 3) * (p1y - p0y)
var cp2x = cp1x + (1 / 3) * (p2x - p0x)
var cp2y = cp1y + (1 / 3) * (p2y - p0y)
this.addBezierCurve(p0x, p0y, cp1x, cp2x, cp1y, cp2y, p2x, p2y)
}
isPointInBox(x2, y2) {
var { x1, y1, x2: x22, y2: y22 } = this
return x1 <= x2 && x2 <= x22 && y1 <= y2 && y2 <= y22
}
}
class PathParser extends _$1 {
constructor(path) {
super(
path
.replace(/([+\-.])\s+/gm, '$1')
.replace(/[^MmZzLlHhVvCcSsQqTtAae\d\s.,+-].*/g, '')
)
this.control = null
this.start = null
this.current = null
this.command = null
this.commands = this.commands
this.i = -1
this.previousCommand = null
this.points = []
this.angles = []
}
reset() {
this.i = -1
this.command = null
this.previousCommand = null
this.start = new Point$2(0, 0)
this.control = new Point$2(0, 0)
this.current = new Point$2(0, 0)
this.points = []
this.angles = []
}
isEnd() {
var { i: i2, commands: commands2 } = this
return i2 >= commands2.length - 1
}
next() {
var command = this.commands[++this.i]
this.previousCommand = this.command
this.command = command
return command
}
getPoint() {
var xProp =
arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 'x'
var yProp =
arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 'y'
var point = new Point$2(this.command[xProp], this.command[yProp])
return this.makeAbsolute(point)
}
getAsControlPoint(xProp, yProp) {
var point = this.getPoint(xProp, yProp)
this.control = point
return point
}
getAsCurrentPoint(xProp, yProp) {
var point = this.getPoint(xProp, yProp)
this.current = point
return point
}
getReflectedControlPoint() {
var previousCommand = this.previousCommand.type
if (
previousCommand !== _$1.CURVE_TO &&
previousCommand !== _$1.SMOOTH_CURVE_TO &&
previousCommand !== _$1.QUAD_TO &&
previousCommand !== _$1.SMOOTH_QUAD_TO
) {
return this.current
}
var {
current: { x: cx, y: cy },
control: { x: ox, y: oy },
} = this
var point = new Point$2(2 * cx - ox, 2 * cy - oy)
return point
}
makeAbsolute(point) {
if (this.command.relative) {
var { x: x2, y: y2 } = this.current
point.x += x2
point.y += y2
}
return point
}
addMarker(point, from, priorTo) {
var { points: points2, angles } = this
if (priorTo && angles.length > 0 && !angles[angles.length - 1]) {
angles[angles.length - 1] = points2[points2.length - 1].angleTo(priorTo)
}
this.addMarkerAngle(point, from ? from.angleTo(point) : null)
}
addMarkerAngle(point, angle2) {
this.points.push(point)
this.angles.push(angle2)
}
getMarkerPoints() {
return this.points
}
getMarkerAngles() {
var { angles } = this
var len2 = angles.length
for (var i2 = 0; i2 < len2; i2++) {
if (!angles[i2]) {
for (var j2 = i2 + 1; j2 < len2; j2++) {
if (angles[j2]) {
angles[i2] = angles[j2]
break
}
}
}
}
return angles
}
}
class RenderedElement extends Element$3 {
constructor() {
super(...arguments)
this.modifiedEmSizeStack = false
}
calculateOpacity() {
var opacity2 = 1
var element = this
while (element) {
var opacityStyle = element.getStyle('opacity', false, true)
if (opacityStyle.hasValue(true)) {
opacity2 *= opacityStyle.getNumber()
}
element = element.parent
}
return opacity2
}
setContext(ctx) {
var fromMeasure =
arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false
if (!fromMeasure) {
var fillStyleProp = this.getStyle('fill')
var fillOpacityStyleProp = this.getStyle('fill-opacity')
var strokeStyleProp = this.getStyle('stroke')
var strokeOpacityProp = this.getStyle('stroke-opacity')
if (fillStyleProp.isUrlDefinition()) {
var fillStyle = fillStyleProp.getFillStyleDefinition(
this,
fillOpacityStyleProp
)
if (fillStyle) {
ctx.fillStyle = fillStyle
}
} else if (fillStyleProp.hasValue()) {
if (fillStyleProp.getString() === 'currentColor') {
fillStyleProp.setValue(this.getStyle('color').getColor())
}
var _fillStyle = fillStyleProp.getColor()
if (_fillStyle !== 'inherit') {
ctx.fillStyle = _fillStyle === 'none' ? 'rgba(0,0,0,0)' : _fillStyle
}
}
if (fillOpacityStyleProp.hasValue()) {
var _fillStyle2 = new Property(this.document, 'fill', ctx.fillStyle)
.addOpacity(fillOpacityStyleProp)
.getColor()
ctx.fillStyle = _fillStyle2
}
if (strokeStyleProp.isUrlDefinition()) {
var strokeStyle = strokeStyleProp.getFillStyleDefinition(
this,
strokeOpacityProp
)
if (strokeStyle) {
ctx.strokeStyle = strokeStyle
}
} else if (strokeStyleProp.hasValue()) {
if (strokeStyleProp.getString() === 'currentColor') {
strokeStyleProp.setValue(this.getStyle('color').getColor())
}
var _strokeStyle = strokeStyleProp.getString()
if (_strokeStyle !== 'inherit') {
ctx.strokeStyle =
_strokeStyle === 'none' ? 'rgba(0,0,0,0)' : _strokeStyle
}
}
if (strokeOpacityProp.hasValue()) {
var _strokeStyle2 = new Property(
this.document,
'stroke',
ctx.strokeStyle
)
.addOpacity(strokeOpacityProp)
.getString()
ctx.strokeStyle = _strokeStyle2
}
var strokeWidthStyleProp = this.getStyle('stroke-width')
if (strokeWidthStyleProp.hasValue()) {
var newLineWidth = strokeWidthStyleProp.getPixels()
ctx.lineWidth = !newLineWidth ? PSEUDO_ZERO : newLineWidth
}
var strokeLinecapStyleProp = this.getStyle('stroke-linecap')
var strokeLinejoinStyleProp = this.getStyle('stroke-linejoin')
var strokeMiterlimitProp = this.getStyle('stroke-miterlimit')
var strokeDasharrayStyleProp = this.getStyle('stroke-dasharray')
var strokeDashoffsetProp = this.getStyle('stroke-dashoffset')
if (strokeLinecapStyleProp.hasValue()) {
ctx.lineCap = strokeLinecapStyleProp.getString()
}
if (strokeLinejoinStyleProp.hasValue()) {
ctx.lineJoin = strokeLinejoinStyleProp.getString()
}
if (strokeMiterlimitProp.hasValue()) {
ctx.miterLimit = strokeMiterlimitProp.getNumber()
}
if (
strokeDasharrayStyleProp.hasValue() &&
strokeDasharrayStyleProp.getString() !== 'none'
) {
var gaps = toNumbers(strokeDasharrayStyleProp.getString())
if (typeof ctx.setLineDash !== 'undefined') {
ctx.setLineDash(gaps)
} else if (typeof ctx.webkitLineDash !== 'undefined') {
ctx.webkitLineDash = gaps
} else if (
typeof ctx.mozDash !== 'undefined' &&
!(gaps.length === 1 && gaps[0] === 0)
) {
ctx.mozDash = gaps
}
var offset2 = strokeDashoffsetProp.getPixels()
if (typeof ctx.lineDashOffset !== 'undefined') {
ctx.lineDashOffset = offset2
} else if (typeof ctx.webkitLineDashOffset !== 'undefined') {
ctx.webkitLineDashOffset = offset2
} else if (typeof ctx.mozDashOffset !== 'undefined') {
ctx.mozDashOffset = offset2
}
}
}
this.modifiedEmSizeStack = false
if (typeof ctx.font !== 'undefined') {
var fontStyleProp = this.getStyle('font')
var fontStyleStyleProp = this.getStyle('font-style')
var fontVariantStyleProp = this.getStyle('font-variant')
var fontWeightStyleProp = this.getStyle('font-weight')
var fontSizeStyleProp = this.getStyle('font-size')
var fontFamilyStyleProp = this.getStyle('font-family')
var font2 = new Font(
fontStyleStyleProp.getString(),
fontVariantStyleProp.getString(),
fontWeightStyleProp.getString(),
fontSizeStyleProp.hasValue()
? ''.concat(fontSizeStyleProp.getPixels(true), 'px')
: '',
fontFamilyStyleProp.getString(),
Font.parse(fontStyleProp.getString(), ctx.font)
)
fontStyleStyleProp.setValue(font2.fontStyle)
fontVariantStyleProp.setValue(font2.fontVariant)
fontWeightStyleProp.setValue(font2.fontWeight)
fontSizeStyleProp.setValue(font2.fontSize)
fontFamilyStyleProp.setValue(font2.fontFamily)
ctx.font = font2.toString()
if (fontSizeStyleProp.isPixels()) {
this.document.emSize = fontSizeStyleProp.getPixels()
this.modifiedEmSizeStack = true
}
}
if (!fromMeasure) {
this.applyEffects(ctx)
ctx.globalAlpha = this.calculateOpacity()
}
}
clearContext(ctx) {
super.clearContext(ctx)
if (this.modifiedEmSizeStack) {
this.document.popEmSize()
}
}
}
class PathElement extends RenderedElement {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes)
this.type = 'path'
this.pathParser = null
this.pathParser = new PathParser(this.getAttribute('d').getString())
}
path(ctx) {
var { pathParser } = this
var boundingBox = new BoundingBox()
pathParser.reset()
if (ctx) {
ctx.beginPath()
}
while (!pathParser.isEnd()) {
switch (pathParser.next().type) {
case PathParser.MOVE_TO:
this.pathM(ctx, boundingBox)
break
case PathParser.LINE_TO:
this.pathL(ctx, boundingBox)
break
case PathParser.HORIZ_LINE_TO:
this.pathH(ctx, boundingBox)
break
case PathParser.VERT_LINE_TO:
this.pathV(ctx, boundingBox)
break
case PathParser.CURVE_TO:
this.pathC(ctx, boundingBox)
break
case PathParser.SMOOTH_CURVE_TO:
this.pathS(ctx, boundingBox)
break
case PathParser.QUAD_TO:
this.pathQ(ctx, boundingBox)
break
case PathParser.SMOOTH_QUAD_TO:
this.pathT(ctx, boundingBox)
break
case PathParser.ARC:
this.pathA(ctx, boundingBox)
break
case PathParser.CLOSE_PATH:
this.pathZ(ctx, boundingBox)
break
}
}
return boundingBox
}
getBoundingBox(_2) {
return this.path()
}
getMarkers() {
var { pathParser } = this
var points2 = pathParser.getMarkerPoints()
var angles = pathParser.getMarkerAngles()
var markers = points2.map((point, i2) => [point, angles[i2]])
return markers
}
renderChildren(ctx) {
this.path(ctx)
this.document.screen.mouse.checkPath(this, ctx)
var fillRuleStyleProp = this.getStyle('fill-rule')
if (ctx.fillStyle !== '') {
if (fillRuleStyleProp.getString('inherit') !== 'inherit') {
ctx.fill(fillRuleStyleProp.getString())
} else {
ctx.fill()
}
}
if (ctx.strokeStyle !== '') {
if (
this.getAttribute('vector-effect').getString() === 'non-scaling-stroke'
) {
ctx.save()
ctx.setTransform(1, 0, 0, 1, 0, 0)
ctx.stroke()
ctx.restore()
} else {
ctx.stroke()
}
}
var markers = this.getMarkers()
if (markers) {
var markersLastIndex = markers.length - 1
var markerStartStyleProp = this.getStyle('marker-start')
var markerMidStyleProp = this.getStyle('marker-mid')
var markerEndStyleProp = this.getStyle('marker-end')
if (markerStartStyleProp.isUrlDefinition()) {
var marker = markerStartStyleProp.getDefinition()
var [point, angle2] = markers[0]
marker.render(ctx, point, angle2)
}
if (markerMidStyleProp.isUrlDefinition()) {
var _marker = markerMidStyleProp.getDefinition()
for (var i2 = 1; i2 < markersLastIndex; i2++) {
var [_point, _angle] = markers[i2]
_marker.render(ctx, _point, _angle)
}
}
if (markerEndStyleProp.isUrlDefinition()) {
var _marker2 = markerEndStyleProp.getDefinition()
var [_point2, _angle2] = markers[markersLastIndex]
_marker2.render(ctx, _point2, _angle2)
}
}
}
static pathM(pathParser) {
var point = pathParser.getAsCurrentPoint()
pathParser.start = pathParser.current
return {
point,
}
}
pathM(ctx, boundingBox) {
var { pathParser } = this
var { point } = PathElement.pathM(pathParser)
var { x: x2, y: y2 } = point
pathParser.addMarker(point)
boundingBox.addPoint(x2, y2)
if (ctx) {
ctx.moveTo(x2, y2)
}
}
static pathL(pathParser) {
var { current: current2 } = pathParser
var point = pathParser.getAsCurrentPoint()
return {
current: current2,
point,
}
}
pathL(ctx, boundingBox) {
var { pathParser } = this
var { current: current2, point } = PathElement.pathL(pathParser)
var { x: x2, y: y2 } = point
pathParser.addMarker(point, current2)
boundingBox.addPoint(x2, y2)
if (ctx) {
ctx.lineTo(x2, y2)
}
}
static pathH(pathParser) {
var { current: current2, command } = pathParser
var point = new Point$2(
(command.relative ? current2.x : 0) + command.x,
current2.y
)
pathParser.current = point
return {
current: current2,
point,
}
}
pathH(ctx, boundingBox) {
var { pathParser } = this
var { current: current2, point } = PathElement.pathH(pathParser)
var { x: x2, y: y2 } = point
pathParser.addMarker(point, current2)
boundingBox.addPoint(x2, y2)
if (ctx) {
ctx.lineTo(x2, y2)
}
}
static pathV(pathParser) {
var { current: current2, command } = pathParser
var point = new Point$2(
current2.x,
(command.relative ? current2.y : 0) + command.y
)
pathParser.current = point
return {
current: current2,
point,
}
}
pathV(ctx, boundingBox) {
var { pathParser } = this
var { current: current2, point } = PathElement.pathV(pathParser)
var { x: x2, y: y2 } = point
pathParser.addMarker(point, current2)
boundingBox.addPoint(x2, y2)
if (ctx) {
ctx.lineTo(x2, y2)
}
}
static pathC(pathParser) {
var { current: current2 } = pathParser
var point = pathParser.getPoint('x1', 'y1')
var controlPoint = pathParser.getAsControlPoint('x2', 'y2')
var currentPoint = pathParser.getAsCurrentPoint()
return {
current: current2,
point,
controlPoint,
currentPoint,
}
}
pathC(ctx, boundingBox) {
var { pathParser } = this
var {
current: current2,
point,
controlPoint,
currentPoint,
} = PathElement.pathC(pathParser)
pathParser.addMarker(currentPoint, controlPoint, point)
boundingBox.addBezierCurve(
current2.x,
current2.y,
point.x,
point.y,
controlPoint.x,
controlPoint.y,
currentPoint.x,
currentPoint.y
)
if (ctx) {
ctx.bezierCurveTo(
point.x,
point.y,
controlPoint.x,
controlPoint.y,
currentPoint.x,
currentPoint.y
)
}
}
static pathS(pathParser) {
var { current: current2 } = pathParser
var point = pathParser.getReflectedControlPoint()
var controlPoint = pathParser.getAsControlPoint('x2', 'y2')
var currentPoint = pathParser.getAsCurrentPoint()
return {
current: current2,
point,
controlPoint,
currentPoint,
}
}
pathS(ctx, boundingBox) {
var { pathParser } = this
var {
current: current2,
point,
controlPoint,
currentPoint,
} = PathElement.pathS(pathParser)
pathParser.addMarker(currentPoint, controlPoint, point)
boundingBox.addBezierCurve(
current2.x,
current2.y,
point.x,
point.y,
controlPoint.x,
controlPoint.y,
currentPoint.x,
currentPoint.y
)
if (ctx) {
ctx.bezierCurveTo(
point.x,
point.y,
controlPoint.x,
controlPoint.y,
currentPoint.x,
currentPoint.y
)
}
}
static pathQ(pathParser) {
var { current: current2 } = pathParser
var controlPoint = pathParser.getAsControlPoint('x1', 'y1')
var currentPoint = pathParser.getAsCurrentPoint()
return {
current: current2,
controlPoint,
currentPoint,
}
}
pathQ(ctx, boundingBox) {
var { pathParser } = this
var {
current: current2,
controlPoint,
currentPoint,
} = PathElement.pathQ(pathParser)
pathParser.addMarker(currentPoint, controlPoint, controlPoint)
boundingBox.addQuadraticCurve(
current2.x,
current2.y,
controlPoint.x,
controlPoint.y,
currentPoint.x,
currentPoint.y
)
if (ctx) {
ctx.quadraticCurveTo(
controlPoint.x,
controlPoint.y,
currentPoint.x,
currentPoint.y
)
}
}
static pathT(pathParser) {
var { current: current2 } = pathParser
var controlPoint = pathParser.getReflectedControlPoint()
pathParser.control = controlPoint
var currentPoint = pathParser.getAsCurrentPoint()
return {
current: current2,
controlPoint,
currentPoint,
}
}
pathT(ctx, boundingBox) {
var { pathParser } = this
var {
current: current2,
controlPoint,
currentPoint,
} = PathElement.pathT(pathParser)
pathParser.addMarker(currentPoint, controlPoint, controlPoint)
boundingBox.addQuadraticCurve(
current2.x,
current2.y,
controlPoint.x,
controlPoint.y,
currentPoint.x,
currentPoint.y
)
if (ctx) {
ctx.quadraticCurveTo(
controlPoint.x,
controlPoint.y,
currentPoint.x,
currentPoint.y
)
}
}
static pathA(pathParser) {
var { current: current2, command } = pathParser
var { rX, rY, xRot, lArcFlag, sweepFlag } = command
var xAxisRotation = xRot * (Math.PI / 180)
var currentPoint = pathParser.getAsCurrentPoint()
var currp = new Point$2(
(Math.cos(xAxisRotation) * (current2.x - currentPoint.x)) / 2 +
(Math.sin(xAxisRotation) * (current2.y - currentPoint.y)) / 2,
(-Math.sin(xAxisRotation) * (current2.x - currentPoint.x)) / 2 +
(Math.cos(xAxisRotation) * (current2.y - currentPoint.y)) / 2
)
var l2 =
Math.pow(currp.x, 2) / Math.pow(rX, 2) +
Math.pow(currp.y, 2) / Math.pow(rY, 2)
if (l2 > 1) {
rX *= Math.sqrt(l2)
rY *= Math.sqrt(l2)
}
var s2 =
(lArcFlag === sweepFlag ? -1 : 1) *
Math.sqrt(
(Math.pow(rX, 2) * Math.pow(rY, 2) -
Math.pow(rX, 2) * Math.pow(currp.y, 2) -
Math.pow(rY, 2) * Math.pow(currp.x, 2)) /
(Math.pow(rX, 2) * Math.pow(currp.y, 2) +
Math.pow(rY, 2) * Math.pow(currp.x, 2))
)
if (isNaN(s2)) {
s2 = 0
}
var cpp = new Point$2((s2 * rX * currp.y) / rY, (s2 * -rY * currp.x) / rX)
var centp = new Point$2(
(current2.x + currentPoint.x) / 2 +
Math.cos(xAxisRotation) * cpp.x -
Math.sin(xAxisRotation) * cpp.y,
(current2.y + currentPoint.y) / 2 +
Math.sin(xAxisRotation) * cpp.x +
Math.cos(xAxisRotation) * cpp.y
)
var a1 = vectorsAngle(
[1, 0],
[(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY]
)
var u2 = [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY]
var v4 = [(-currp.x - cpp.x) / rX, (-currp.y - cpp.y) / rY]
var ad = vectorsAngle(u2, v4)
if (vectorsRatio(u2, v4) <= -1) {
ad = Math.PI
}
if (vectorsRatio(u2, v4) >= 1) {
ad = 0
}
return {
currentPoint,
rX,
rY,
sweepFlag,
xAxisRotation,
centp,
a1,
ad,
}
}
pathA(ctx, boundingBox) {
var { pathParser } = this
var { currentPoint, rX, rY, sweepFlag, xAxisRotation, centp, a1, ad } =
PathElement.pathA(pathParser)
var dir3 = 1 - sweepFlag ? 1 : -1
var ah = a1 + dir3 * (ad / 2)
var halfWay = new Point$2(
centp.x + rX * Math.cos(ah),
centp.y + rY * Math.sin(ah)
)
pathParser.addMarkerAngle(halfWay, ah - (dir3 * Math.PI) / 2)
pathParser.addMarkerAngle(currentPoint, ah - dir3 * Math.PI)
boundingBox.addPoint(currentPoint.x, currentPoint.y)
if (ctx && !isNaN(a1) && !isNaN(ad)) {
var r2 = rX > rY ? rX : rY
var sx = rX > rY ? 1 : rX / rY
var sy = rX > rY ? rY / rX : 1
ctx.translate(centp.x, centp.y)
ctx.rotate(xAxisRotation)
ctx.scale(sx, sy)
ctx.arc(0, 0, r2, a1, a1 + ad, Boolean(1 - sweepFlag))
ctx.scale(1 / sx, 1 / sy)
ctx.rotate(-xAxisRotation)
ctx.translate(-centp.x, -centp.y)
}
}
static pathZ(pathParser) {
pathParser.current = pathParser.start
}
pathZ(ctx, boundingBox) {
PathElement.pathZ(this.pathParser)
if (ctx) {
if (
boundingBox.x1 !== boundingBox.x2 &&
boundingBox.y1 !== boundingBox.y2
) {
ctx.closePath()
}
}
}
}
class GlyphElement extends PathElement {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes)
this.type = 'glyph'
this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber()
this.unicode = this.getAttribute('unicode').getString()
this.arabicForm = this.getAttribute('arabic-form').getString()
}
}
class TextElement extends RenderedElement {
constructor(document2, node2, captureTextNodes) {
super(
document2,
node2,
new.target === TextElement ? true : captureTextNodes
)
this.type = 'text'
this.x = 0
this.y = 0
this.measureCache = -1
}
setContext(ctx) {
var fromMeasure =
arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false
super.setContext(ctx, fromMeasure)
var textBaseline =
this.getStyle('dominant-baseline').getTextBaseline() ||
this.getStyle('alignment-baseline').getTextBaseline()
if (textBaseline) {
ctx.textBaseline = textBaseline
}
}
initializeCoordinates() {
this.x = 0
this.y = 0
this.leafTexts = []
this.textChunkStart = 0
this.minX = Number.POSITIVE_INFINITY
this.maxX = Number.NEGATIVE_INFINITY
}
getBoundingBox(ctx) {
if (this.type !== 'text') {
return this.getTElementBoundingBox(ctx)
}
this.initializeCoordinates()
this.adjustChildCoordinatesRecursive(ctx)
var boundingBox = null
this.children.forEach((_2, i2) => {
var childBoundingBox = this.getChildBoundingBox(ctx, this, this, i2)
if (!boundingBox) {
boundingBox = childBoundingBox
} else {
boundingBox.addBoundingBox(childBoundingBox)
}
})
return boundingBox
}
getFontSize() {
var { document: document2, parent: parent2 } = this
var inheritFontSize = Font.parse(document2.ctx.font).fontSize
var fontSize2 = parent2.getStyle('font-size').getNumber(inheritFontSize)
return fontSize2
}
getTElementBoundingBox(ctx) {
var fontSize2 = this.getFontSize()
return new BoundingBox(
this.x,
this.y - fontSize2,
this.x + this.measureText(ctx),
this.y
)
}
getGlyph(font2, text2, i2) {
var char = text2[i2]
var glyph = null
if (font2.isArabic) {
var len2 = text2.length
var prevChar = text2[i2 - 1]
var nextChar = text2[i2 + 1]
var arabicForm = 'isolated'
if ((i2 === 0 || prevChar === ' ') && i2 < len2 - 1 && nextChar !== ' ') {
arabicForm = 'terminal'
}
if (i2 > 0 && prevChar !== ' ' && i2 < len2 - 1 && nextChar !== ' ') {
arabicForm = 'medial'
}
if (i2 > 0 && prevChar !== ' ' && (i2 === len2 - 1 || nextChar === ' ')) {
arabicForm = 'initial'
}
if (typeof font2.glyphs[char] !== 'undefined') {
var maybeGlyph = font2.glyphs[char]
glyph =
maybeGlyph instanceof GlyphElement
? maybeGlyph
: maybeGlyph[arabicForm]
}
} else {
glyph = font2.glyphs[char]
}
if (!glyph) {
glyph = font2.missingGlyph
}
return glyph
}
getText() {
return ''
}
getTextFromNode(node2) {
var textNode = node2 || this.node
var childNodes = Array.from(textNode.parentNode.childNodes)
var index2 = childNodes.indexOf(textNode)
var lastIndex = childNodes.length - 1
var text2 = compressSpaces(textNode.textContent || '')
if (index2 === 0) {
text2 = trimLeft(text2)
}
if (index2 === lastIndex) {
text2 = trimRight(text2)
}
return text2
}
renderChildren(ctx) {
if (this.type !== 'text') {
this.renderTElementChildren(ctx)
return
}
this.initializeCoordinates()
this.adjustChildCoordinatesRecursive(ctx)
this.children.forEach((_2, i2) => {
this.renderChild(ctx, this, this, i2)
})
var { mouse: mouse2 } = this.document.screen
if (mouse2.isWorking()) {
mouse2.checkBoundingBox(this, this.getBoundingBox(ctx))
}
}
renderTElementChildren(ctx) {
var { document: document2, parent: parent2 } = this
var renderText = this.getText()
var customFont = parent2.getStyle('font-family').getDefinition()
if (customFont) {
var { unitsPerEm } = customFont.fontFace
var ctxFont = Font.parse(document2.ctx.font)
var fontSize2 = parent2.getStyle('font-size').getNumber(ctxFont.fontSize)
var fontStyle2 = parent2
.getStyle('font-style')
.getString(ctxFont.fontStyle)
var scale2 = fontSize2 / unitsPerEm
var text2 = customFont.isRTL
? renderText.split('').reverse().join('')
: renderText
var dx = toNumbers(parent2.getAttribute('dx').getString())
var len2 = text2.length
for (var i2 = 0; i2 < len2; i2++) {
var glyph = this.getGlyph(customFont, text2, i2)
ctx.translate(this.x, this.y)
ctx.scale(scale2, -scale2)
var lw = ctx.lineWidth
ctx.lineWidth = (ctx.lineWidth * unitsPerEm) / fontSize2
if (fontStyle2 === 'italic') {
ctx.transform(1, 0, 0.4, 1, 0, 0)
}
glyph.render(ctx)
if (fontStyle2 === 'italic') {
ctx.transform(1, 0, -0.4, 1, 0, 0)
}
ctx.lineWidth = lw
ctx.scale(1 / scale2, -1 / scale2)
ctx.translate(-this.x, -this.y)
this.x +=
(fontSize2 * (glyph.horizAdvX || customFont.horizAdvX)) / unitsPerEm
if (typeof dx[i2] !== 'undefined' && !isNaN(dx[i2])) {
this.x += dx[i2]
}
}
return
}
var { x: x2, y: y2 } = this
if (ctx.fillStyle) {
ctx.fillText(renderText, x2, y2)
}
if (ctx.strokeStyle) {
ctx.strokeText(renderText, x2, y2)
}
}
applyAnchoring() {
if (this.textChunkStart >= this.leafTexts.length) {
return
}
var firstElement = this.leafTexts[this.textChunkStart]
var textAnchor = firstElement.getStyle('text-anchor').getString('start')
var isRTL2 = false
var shift = 0
if (
(textAnchor === 'start' && !isRTL2) ||
(textAnchor === 'end' && isRTL2)
) {
shift = firstElement.x - this.minX
} else if (
(textAnchor === 'end' && !isRTL2) ||
(textAnchor === 'start' && isRTL2)
) {
shift = firstElement.x - this.maxX
} else {
shift = firstElement.x - (this.minX + this.maxX) / 2
}
for (var i2 = this.textChunkStart; i2 < this.leafTexts.length; i2++) {
this.leafTexts[i2].x += shift
}
this.minX = Number.POSITIVE_INFINITY
this.maxX = Number.NEGATIVE_INFINITY
this.textChunkStart = this.leafTexts.length
}
adjustChildCoordinatesRecursive(ctx) {
this.children.forEach((_2, i2) => {
this.adjustChildCoordinatesRecursiveCore(ctx, this, this, i2)
})
this.applyAnchoring()
}
adjustChildCoordinatesRecursiveCore(ctx, textParent, parent2, i2) {
var child = parent2.children[i2]
if (child.children.length > 0) {
child.children.forEach((_2, i3) => {
textParent.adjustChildCoordinatesRecursiveCore(
ctx,
textParent,
child,
i3
)
})
} else {
this.adjustChildCoordinates(ctx, textParent, parent2, i2)
}
}
adjustChildCoordinates(ctx, textParent, parent2, i2) {
var child = parent2.children[i2]
if (typeof child.measureText !== 'function') {
return child
}
ctx.save()
child.setContext(ctx, true)
var xAttr = child.getAttribute('x')
var yAttr = child.getAttribute('y')
var dxAttr = child.getAttribute('dx')
var dyAttr = child.getAttribute('dy')
var customFont = child.getStyle('font-family').getDefinition()
var isRTL2 = Boolean(customFont) && customFont.isRTL
if (i2 === 0) {
if (!xAttr.hasValue()) {
xAttr.setValue(child.getInheritedAttribute('x'))
}
if (!yAttr.hasValue()) {
yAttr.setValue(child.getInheritedAttribute('y'))
}
if (!dxAttr.hasValue()) {
dxAttr.setValue(child.getInheritedAttribute('dx'))
}
if (!dyAttr.hasValue()) {
dyAttr.setValue(child.getInheritedAttribute('dy'))
}
}
var width = child.measureText(ctx)
if (isRTL2) {
textParent.x -= width
}
if (xAttr.hasValue()) {
textParent.applyAnchoring()
child.x = xAttr.getPixels('x')
if (dxAttr.hasValue()) {
child.x += dxAttr.getPixels('x')
}
} else {
if (dxAttr.hasValue()) {
textParent.x += dxAttr.getPixels('x')
}
child.x = textParent.x
}
textParent.x = child.x
if (!isRTL2) {
textParent.x += width
}
if (yAttr.hasValue()) {
child.y = yAttr.getPixels('y')
if (dyAttr.hasValue()) {
child.y += dyAttr.getPixels('y')
}
} else {
if (dyAttr.hasValue()) {
textParent.y += dyAttr.getPixels('y')
}
child.y = textParent.y
}
textParent.y = child.y
textParent.leafTexts.push(child)
textParent.minX = Math.min(textParent.minX, child.x, child.x + width)
textParent.maxX = Math.max(textParent.maxX, child.x, child.x + width)
child.clearContext(ctx)
ctx.restore()
return child
}
getChildBoundingBox(ctx, textParent, parent2, i2) {
var child = parent2.children[i2]
if (typeof child.getBoundingBox !== 'function') {
return null
}
var boundingBox = child.getBoundingBox(ctx)
if (!boundingBox) {
return null
}
child.children.forEach((_2, i3) => {
var childBoundingBox = textParent.getChildBoundingBox(
ctx,
textParent,
child,
i3
)
boundingBox.addBoundingBox(childBoundingBox)
})
return boundingBox
}
renderChild(ctx, textParent, parent2, i2) {
var child = parent2.children[i2]
child.render(ctx)
child.children.forEach((_2, i3) => {
textParent.renderChild(ctx, textParent, child, i3)
})
}
measureText(ctx) {
var { measureCache } = this
if (~measureCache) {
return measureCache
}
var renderText = this.getText()
var measure = this.measureTargetText(ctx, renderText)
this.measureCache = measure
return measure
}
measureTargetText(ctx, targetText) {
if (!targetText.length) {
return 0
}
var { parent: parent2 } = this
var customFont = parent2.getStyle('font-family').getDefinition()
if (customFont) {
var fontSize2 = this.getFontSize()
var text2 = customFont.isRTL
? targetText.split('').reverse().join('')
: targetText
var dx = toNumbers(parent2.getAttribute('dx').getString())
var len2 = text2.length
var _measure = 0
for (var i2 = 0; i2 < len2; i2++) {
var glyph = this.getGlyph(customFont, text2, i2)
_measure +=
((glyph.horizAdvX || customFont.horizAdvX) * fontSize2) /
customFont.fontFace.unitsPerEm
if (typeof dx[i2] !== 'undefined' && !isNaN(dx[i2])) {
_measure += dx[i2]
}
}
return _measure
}
if (!ctx.measureText) {
return targetText.length * 10
}
ctx.save()
this.setContext(ctx, true)
var { width: measure } = ctx.measureText(targetText)
this.clearContext(ctx)
ctx.restore()
return measure
}
getInheritedAttribute(name2) {
var current2 = this
while (current2 instanceof TextElement && current2.isFirstChild()) {
var parentAttr = current2.parent.getAttribute(name2)
if (parentAttr.hasValue(true)) {
return parentAttr.getValue('0')
}
current2 = current2.parent
}
return null
}
}
class TSpanElement extends TextElement {
constructor(document2, node2, captureTextNodes) {
super(
document2,
node2,
new.target === TSpanElement ? true : captureTextNodes
)
this.type = 'tspan'
this.text = this.children.length > 0 ? '' : this.getTextFromNode()
}
getText() {
return this.text
}
}
class TextNode extends TSpanElement {
constructor() {
super(...arguments)
this.type = 'textNode'
}
}
class SVGElement extends RenderedElement {
constructor() {
super(...arguments)
this.type = 'svg'
this.root = false
}
setContext(ctx) {
var _this$node$parentNode
var { document: document2 } = this
var { screen, window: window2 } = document2
var canvas = ctx.canvas
screen.setDefaults(ctx)
if (
canvas.style &&
typeof ctx.font !== 'undefined' &&
window2 &&
typeof window2.getComputedStyle !== 'undefined'
) {
ctx.font = window2.getComputedStyle(canvas).getPropertyValue('font')
var fontSizeProp = new Property(
document2,
'fontSize',
Font.parse(ctx.font).fontSize
)
if (fontSizeProp.hasValue()) {
document2.rootEmSize = fontSizeProp.getPixels('y')
document2.emSize = document2.rootEmSize
}
}
if (!this.getAttribute('x').hasValue()) {
this.getAttribute('x', true).setValue(0)
}
if (!this.getAttribute('y').hasValue()) {
this.getAttribute('y', true).setValue(0)
}
var { width, height } = screen.viewPort
if (!this.getStyle('width').hasValue()) {
this.getStyle('width', true).setValue('100%')
}
if (!this.getStyle('height').hasValue()) {
this.getStyle('height', true).setValue('100%')
}
if (!this.getStyle('color').hasValue()) {
this.getStyle('color', true).setValue('black')
}
var refXAttr = this.getAttribute('refX')
var refYAttr = this.getAttribute('refY')
var viewBoxAttr = this.getAttribute('viewBox')
var viewBox = viewBoxAttr.hasValue()
? toNumbers(viewBoxAttr.getString())
: null
var clip2 =
!this.root && this.getStyle('overflow').getValue('hidden') !== 'visible'
var minX = 0
var minY = 0
var clipX = 0
var clipY = 0
if (viewBox) {
minX = viewBox[0]
minY = viewBox[1]
}
if (!this.root) {
width = this.getStyle('width').getPixels('x')
height = this.getStyle('height').getPixels('y')
if (this.type === 'marker') {
clipX = minX
clipY = minY
minX = 0
minY = 0
}
}
screen.viewPort.setCurrent(width, height)
if (
this.node &&
(!this.parent ||
((_this$node$parentNode = this.node.parentNode) === null ||
_this$node$parentNode === void 0
? void 0
: _this$node$parentNode.nodeName) === 'foreignObject') &&
this.getStyle('transform', false, true).hasValue() &&
!this.getStyle('transform-origin', false, true).hasValue()
) {
this.getStyle('transform-origin', true, true).setValue('50% 50%')
}
super.setContext(ctx)
ctx.translate(
this.getAttribute('x').getPixels('x'),
this.getAttribute('y').getPixels('y')
)
if (viewBox) {
width = viewBox[2]
height = viewBox[3]
}
document2.setViewBox({
ctx,
aspectRatio: this.getAttribute('preserveAspectRatio').getString(),
width: screen.viewPort.width,
desiredWidth: width,
height: screen.viewPort.height,
desiredHeight: height,
minX,
minY,
refX: refXAttr.getValue(),
refY: refYAttr.getValue(),
clip: clip2,
clipX,
clipY,
})
if (viewBox) {
screen.viewPort.removeCurrent()
screen.viewPort.setCurrent(width, height)
}
}
clearContext(ctx) {
super.clearContext(ctx)
this.document.screen.viewPort.removeCurrent()
}
resize(width) {
var height =
arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : width
var preserveAspectRatio =
arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false
var widthAttr = this.getAttribute('width', true)
var heightAttr = this.getAttribute('height', true)
var viewBoxAttr = this.getAttribute('viewBox')
var styleAttr = this.getAttribute('style')
var originWidth = widthAttr.getNumber(0)
var originHeight = heightAttr.getNumber(0)
if (preserveAspectRatio) {
if (typeof preserveAspectRatio === 'string') {
this.getAttribute('preserveAspectRatio', true).setValue(
preserveAspectRatio
)
} else {
var preserveAspectRatioAttr = this.getAttribute('preserveAspectRatio')
if (preserveAspectRatioAttr.hasValue()) {
preserveAspectRatioAttr.setValue(
preserveAspectRatioAttr
.getString()
.replace(/^\s*(\S.*\S)\s*$/, '$1')
)
}
}
}
widthAttr.setValue(width)
heightAttr.setValue(height)
if (!viewBoxAttr.hasValue()) {
viewBoxAttr.setValue(
'0 0 '.concat(originWidth || width, ' ').concat(originHeight || height)
)
}
if (styleAttr.hasValue()) {
var widthStyle = this.getStyle('width')
var heightStyle = this.getStyle('height')
if (widthStyle.hasValue()) {
widthStyle.setValue(''.concat(width, 'px'))
}
if (heightStyle.hasValue()) {
heightStyle.setValue(''.concat(height, 'px'))
}
}
}
}
class RectElement extends PathElement {
constructor() {
super(...arguments)
this.type = 'rect'
}
path(ctx) {
var x2 = this.getAttribute('x').getPixels('x')
var y2 = this.getAttribute('y').getPixels('y')
var width = this.getStyle('width', false, true).getPixels('x')
var height = this.getStyle('height', false, true).getPixels('y')
var rxAttr = this.getAttribute('rx')
var ryAttr = this.getAttribute('ry')
var rx = rxAttr.getPixels('x')
var ry = ryAttr.getPixels('y')
if (rxAttr.hasValue() && !ryAttr.hasValue()) {
ry = rx
}
if (ryAttr.hasValue() && !rxAttr.hasValue()) {
rx = ry
}
rx = Math.min(rx, width / 2)
ry = Math.min(ry, height / 2)
if (ctx) {
var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3)
ctx.beginPath()
if (height > 0 && width > 0) {
ctx.moveTo(x2 + rx, y2)
ctx.lineTo(x2 + width - rx, y2)
ctx.bezierCurveTo(
x2 + width - rx + KAPPA * rx,
y2,
x2 + width,
y2 + ry - KAPPA * ry,
x2 + width,
y2 + ry
)
ctx.lineTo(x2 + width, y2 + height - ry)
ctx.bezierCurveTo(
x2 + width,
y2 + height - ry + KAPPA * ry,
x2 + width - rx + KAPPA * rx,
y2 + height,
x2 + width - rx,
y2 + height
)
ctx.lineTo(x2 + rx, y2 + height)
ctx.bezierCurveTo(
x2 + rx - KAPPA * rx,
y2 + height,
x2,
y2 + height - ry + KAPPA * ry,
x2,
y2 + height - ry
)
ctx.lineTo(x2, y2 + ry)
ctx.bezierCurveTo(
x2,
y2 + ry - KAPPA * ry,
x2 + rx - KAPPA * rx,
y2,
x2 + rx,
y2
)
ctx.closePath()
}
}
return new BoundingBox(x2, y2, x2 + width, y2 + height)
}
getMarkers() {
return null
}
}
class CircleElement extends PathElement {
constructor() {
super(...arguments)
this.type = 'circle'
}
path(ctx) {
var cx = this.getAttribute('cx').getPixels('x')
var cy = this.getAttribute('cy').getPixels('y')
var r2 = this.getAttribute('r').getPixels()
if (ctx && r2 > 0) {
ctx.beginPath()
ctx.arc(cx, cy, r2, 0, Math.PI * 2, false)
ctx.closePath()
}
return new BoundingBox(cx - r2, cy - r2, cx + r2, cy + r2)
}
getMarkers() {
return null
}
}
class EllipseElement extends PathElement {
constructor() {
super(...arguments)
this.type = 'ellipse'
}
path(ctx) {
var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3)
var rx = this.getAttribute('rx').getPixels('x')
var ry = this.getAttribute('ry').getPixels('y')
var cx = this.getAttribute('cx').getPixels('x')
var cy = this.getAttribute('cy').getPixels('y')
if (ctx && rx > 0 && ry > 0) {
ctx.beginPath()
ctx.moveTo(cx + rx, cy)
ctx.bezierCurveTo(
cx + rx,
cy + KAPPA * ry,
cx + KAPPA * rx,
cy + ry,
cx,
cy + ry
)
ctx.bezierCurveTo(
cx - KAPPA * rx,
cy + ry,
cx - rx,
cy + KAPPA * ry,
cx - rx,
cy
)
ctx.bezierCurveTo(
cx - rx,
cy - KAPPA * ry,
cx - KAPPA * rx,
cy - ry,
cx,
cy - ry
)
ctx.bezierCurveTo(
cx + KAPPA * rx,
cy - ry,
cx + rx,
cy - KAPPA * ry,
cx + rx,
cy
)
ctx.closePath()
}
return new BoundingBox(cx - rx, cy - ry, cx + rx, cy + ry)
}
getMarkers() {
return null
}
}
class LineElement extends PathElement {
constructor() {
super(...arguments)
this.type = 'line'
}
getPoints() {
return [
new Point$2(
this.getAttribute('x1').getPixels('x'),
this.getAttribute('y1').getPixels('y')
),
new Point$2(
this.getAttribute('x2').getPixels('x'),
this.getAttribute('y2').getPixels('y')
),
]
}
path(ctx) {
var [{ x: x0, y: y0 }, { x: x1, y: y1 }] = this.getPoints()
if (ctx) {
ctx.beginPath()
ctx.moveTo(x0, y0)
ctx.lineTo(x1, y1)
}
return new BoundingBox(x0, y0, x1, y1)
}
getMarkers() {
var [p0, p1] = this.getPoints()
var a2 = p0.angleTo(p1)
return [
[p0, a2],
[p1, a2],
]
}
}
class PolylineElement extends PathElement {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes)
this.type = 'polyline'
this.points = []
this.points = Point$2.parsePath(this.getAttribute('points').getString())
}
path(ctx) {
var { points: points2 } = this
var [{ x: x0, y: y0 }] = points2
var boundingBox = new BoundingBox(x0, y0)
if (ctx) {
ctx.beginPath()
ctx.moveTo(x0, y0)
}
points2.forEach((_ref2) => {
var { x: x2, y: y2 } = _ref2
boundingBox.addPoint(x2, y2)
if (ctx) {
ctx.lineTo(x2, y2)
}
})
return boundingBox
}
getMarkers() {
var { points: points2 } = this
var lastIndex = points2.length - 1
var markers = []
points2.forEach((point, i2) => {
if (i2 === lastIndex) {
return
}
markers.push([point, point.angleTo(points2[i2 + 1])])
})
if (markers.length > 0) {
markers.push([
points2[points2.length - 1],
markers[markers.length - 1][1],
])
}
return markers
}
}
class PolygonElement extends PolylineElement {
constructor() {
super(...arguments)
this.type = 'polygon'
}
path(ctx) {
var boundingBox = super.path(ctx)
var [{ x: x2, y: y2 }] = this.points
if (ctx) {
ctx.lineTo(x2, y2)
ctx.closePath()
}
return boundingBox
}
}
class PatternElement extends Element$3 {
constructor() {
super(...arguments)
this.type = 'pattern'
}
createPattern(ctx, _2, parentOpacityProp) {
var width = this.getStyle('width').getPixels('x', true)
var height = this.getStyle('height').getPixels('y', true)
var patternSvg = new SVGElement(this.document, null)
patternSvg.attributes.viewBox = new Property(
this.document,
'viewBox',
this.getAttribute('viewBox').getValue()
)
patternSvg.attributes.width = new Property(
this.document,
'width',
''.concat(width, 'px')
)
patternSvg.attributes.height = new Property(
this.document,
'height',
''.concat(height, 'px')
)
patternSvg.attributes.transform = new Property(
this.document,
'transform',
this.getAttribute('patternTransform').getValue()
)
patternSvg.children = this.children
var patternCanvas = this.document.createCanvas(width, height)
var patternCtx = patternCanvas.getContext('2d')
var xAttr = this.getAttribute('x')
var yAttr = this.getAttribute('y')
if (xAttr.hasValue() && yAttr.hasValue()) {
patternCtx.translate(
xAttr.getPixels('x', true),
yAttr.getPixels('y', true)
)
}
if (parentOpacityProp.hasValue()) {
this.styles['fill-opacity'] = parentOpacityProp
} else {
Reflect.deleteProperty(this.styles, 'fill-opacity')
}
for (var x2 = -1; x2 <= 1; x2++) {
for (var y2 = -1; y2 <= 1; y2++) {
patternCtx.save()
patternSvg.attributes.x = new Property(
this.document,
'x',
x2 * patternCanvas.width
)
patternSvg.attributes.y = new Property(
this.document,
'y',
y2 * patternCanvas.height
)
patternSvg.render(patternCtx)
patternCtx.restore()
}
}
var pattern4 = ctx.createPattern(patternCanvas, 'repeat')
return pattern4
}
}
class MarkerElement extends Element$3 {
constructor() {
super(...arguments)
this.type = 'marker'
}
render(ctx, point, angle2) {
if (!point) {
return
}
var { x: x2, y: y2 } = point
var orient = this.getAttribute('orient').getString('auto')
var markerUnits = this.getAttribute('markerUnits').getString('strokeWidth')
ctx.translate(x2, y2)
if (orient === 'auto') {
ctx.rotate(angle2)
}
if (markerUnits === 'strokeWidth') {
ctx.scale(ctx.lineWidth, ctx.lineWidth)
}
ctx.save()
var markerSvg = new SVGElement(this.document, null)
markerSvg.type = this.type
markerSvg.attributes.viewBox = new Property(
this.document,
'viewBox',
this.getAttribute('viewBox').getValue()
)
markerSvg.attributes.refX = new Property(
this.document,
'refX',
this.getAttribute('refX').getValue()
)
markerSvg.attributes.refY = new Property(
this.document,
'refY',
this.getAttribute('refY').getValue()
)
markerSvg.attributes.width = new Property(
this.document,
'width',
this.getAttribute('markerWidth').getValue()
)
markerSvg.attributes.height = new Property(
this.document,
'height',
this.getAttribute('markerHeight').getValue()
)
markerSvg.attributes.overflow = new Property(
this.document,
'overflow',
this.getAttribute('overflow').getValue()
)
markerSvg.attributes.fill = new Property(
this.document,
'fill',
this.getAttribute('fill').getColor('black')
)
markerSvg.attributes.stroke = new Property(
this.document,
'stroke',
this.getAttribute('stroke').getValue('none')
)
markerSvg.children = this.children
markerSvg.render(ctx)
ctx.restore()
if (markerUnits === 'strokeWidth') {
ctx.scale(1 / ctx.lineWidth, 1 / ctx.lineWidth)
}
if (orient === 'auto') {
ctx.rotate(-angle2)
}
ctx.translate(-x2, -y2)
}
}
class DefsElement extends Element$3 {
constructor() {
super(...arguments)
this.type = 'defs'
}
render() {}
}
class GElement extends RenderedElement {
constructor() {
super(...arguments)
this.type = 'g'
}
getBoundingBox(ctx) {
var boundingBox = new BoundingBox()
this.children.forEach((child) => {
boundingBox.addBoundingBox(child.getBoundingBox(ctx))
})
return boundingBox
}
}
class GradientElement extends Element$3 {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes)
this.attributesToInherit = ['gradientUnits']
this.stops = []
var { stops, children } = this
children.forEach((child) => {
if (child.type === 'stop') {
stops.push(child)
}
})
}
getGradientUnits() {
return this.getAttribute('gradientUnits').getString('objectBoundingBox')
}
createGradient(ctx, element, parentOpacityProp) {
var stopsContainer = this
if (this.getHrefAttribute().hasValue()) {
stopsContainer = this.getHrefAttribute().getDefinition()
this.inheritStopContainer(stopsContainer)
}
var { stops } = stopsContainer
var gradient = this.getGradient(ctx, element)
if (!gradient) {
return this.addParentOpacity(
parentOpacityProp,
stops[stops.length - 1].color
)
}
stops.forEach((stop2) => {
gradient.addColorStop(
stop2.offset,
this.addParentOpacity(parentOpacityProp, stop2.color)
)
})
if (this.getAttribute('gradientTransform').hasValue()) {
var { document: document2 } = this
var { MAX_VIRTUAL_PIXELS, viewPort } = document2.screen
var [rootView] = viewPort.viewPorts
var rect = new RectElement(document2, null)
rect.attributes.x = new Property(document2, 'x', -MAX_VIRTUAL_PIXELS / 3)
rect.attributes.y = new Property(document2, 'y', -MAX_VIRTUAL_PIXELS / 3)
rect.attributes.width = new Property(
document2,
'width',
MAX_VIRTUAL_PIXELS
)
rect.attributes.height = new Property(
document2,
'height',
MAX_VIRTUAL_PIXELS
)
var group = new GElement(document2, null)
group.attributes.transform = new Property(
document2,
'transform',
this.getAttribute('gradientTransform').getValue()
)
group.children = [rect]
var patternSvg = new SVGElement(document2, null)
patternSvg.attributes.x = new Property(document2, 'x', 0)
patternSvg.attributes.y = new Property(document2, 'y', 0)
patternSvg.attributes.width = new Property(
document2,
'width',
rootView.width
)
patternSvg.attributes.height = new Property(
document2,
'height',
rootView.height
)
patternSvg.children = [group]
var patternCanvas = document2.createCanvas(
rootView.width,
rootView.height
)
var patternCtx = patternCanvas.getContext('2d')
patternCtx.fillStyle = gradient
patternSvg.render(patternCtx)
return patternCtx.createPattern(patternCanvas, 'no-repeat')
}
return gradient
}
inheritStopContainer(stopsContainer) {
this.attributesToInherit.forEach((attributeToInherit) => {
if (
!this.getAttribute(attributeToInherit).hasValue() &&
stopsContainer.getAttribute(attributeToInherit).hasValue()
) {
this.getAttribute(attributeToInherit, true).setValue(
stopsContainer.getAttribute(attributeToInherit).getValue()
)
}
})
}
addParentOpacity(parentOpacityProp, color2) {
if (parentOpacityProp.hasValue()) {
var colorProp = new Property(this.document, 'color', color2)
return colorProp.addOpacity(parentOpacityProp).getColor()
}
return color2
}
}
class LinearGradientElement extends GradientElement {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes)
this.type = 'linearGradient'
this.attributesToInherit.push('x1', 'y1', 'x2', 'y2')
}
getGradient(ctx, element) {
var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox'
var boundingBox = isBoundingBoxUnits ? element.getBoundingBox(ctx) : null
if (isBoundingBoxUnits && !boundingBox) {
return null
}
if (
!this.getAttribute('x1').hasValue() &&
!this.getAttribute('y1').hasValue() &&
!this.getAttribute('x2').hasValue() &&
!this.getAttribute('y2').hasValue()
) {
this.getAttribute('x1', true).setValue(0)
this.getAttribute('y1', true).setValue(0)
this.getAttribute('x2', true).setValue(1)
this.getAttribute('y2', true).setValue(0)
}
var x1 = isBoundingBoxUnits
? boundingBox.x + boundingBox.width * this.getAttribute('x1').getNumber()
: this.getAttribute('x1').getPixels('x')
var y1 = isBoundingBoxUnits
? boundingBox.y + boundingBox.height * this.getAttribute('y1').getNumber()
: this.getAttribute('y1').getPixels('y')
var x2 = isBoundingBoxUnits
? boundingBox.x + boundingBox.width * this.getAttribute('x2').getNumber()
: this.getAttribute('x2').getPixels('x')
var y2 = isBoundingBoxUnits
? boundingBox.y + boundingBox.height * this.getAttribute('y2').getNumber()
: this.getAttribute('y2').getPixels('y')
if (x1 === x2 && y1 === y2) {
return null
}
return ctx.createLinearGradient(x1, y1, x2, y2)
}
}
class RadialGradientElement extends GradientElement {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes)
this.type = 'radialGradient'
this.attributesToInherit.push('cx', 'cy', 'r', 'fx', 'fy', 'fr')
}
getGradient(ctx, element) {
var isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox'
var boundingBox = element.getBoundingBox(ctx)
if (isBoundingBoxUnits && !boundingBox) {
return null
}
if (!this.getAttribute('cx').hasValue()) {
this.getAttribute('cx', true).setValue('50%')
}
if (!this.getAttribute('cy').hasValue()) {
this.getAttribute('cy', true).setValue('50%')
}
if (!this.getAttribute('r').hasValue()) {
this.getAttribute('r', true).setValue('50%')
}
var cx = isBoundingBoxUnits
? boundingBox.x + boundingBox.width * this.getAttribute('cx').getNumber()
: this.getAttribute('cx').getPixels('x')
var cy = isBoundingBoxUnits
? boundingBox.y + boundingBox.height * this.getAttribute('cy').getNumber()
: this.getAttribute('cy').getPixels('y')
var fx = cx
var fy = cy
if (this.getAttribute('fx').hasValue()) {
fx = isBoundingBoxUnits
? boundingBox.x +
boundingBox.width * this.getAttribute('fx').getNumber()
: this.getAttribute('fx').getPixels('x')
}
if (this.getAttribute('fy').hasValue()) {
fy = isBoundingBoxUnits
? boundingBox.y +
boundingBox.height * this.getAttribute('fy').getNumber()
: this.getAttribute('fy').getPixels('y')
}
var r2 = isBoundingBoxUnits
? ((boundingBox.width + boundingBox.height) / 2) *
this.getAttribute('r').getNumber()
: this.getAttribute('r').getPixels()
var fr2 = this.getAttribute('fr').getPixels()
return ctx.createRadialGradient(fx, fy, fr2, cx, cy, r2)
}
}
class StopElement extends Element$3 {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes)
this.type = 'stop'
var offset2 = Math.max(
0,
Math.min(1, this.getAttribute('offset').getNumber())
)
var stopOpacity = this.getStyle('stop-opacity')
var stopColor = this.getStyle('stop-color', true)
if (stopColor.getString() === '') {
stopColor.setValue('#000')
}
if (stopOpacity.hasValue()) {
stopColor = stopColor.addOpacity(stopOpacity)
}
this.offset = offset2
this.color = stopColor.getColor()
}
}
class AnimateElement extends Element$3 {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes)
this.type = 'animate'
this.duration = 0
this.initialValue = null
this.initialUnits = ''
this.removed = false
this.frozen = false
document2.screen.animations.push(this)
this.begin = this.getAttribute('begin').getMilliseconds()
this.maxDuration = this.begin + this.getAttribute('dur').getMilliseconds()
this.from = this.getAttribute('from')
this.to = this.getAttribute('to')
this.values = new Property(document2, 'values', null)
var valuesAttr = this.getAttribute('values')
if (valuesAttr.hasValue()) {
this.values.setValue(valuesAttr.getString().split(';'))
}
}
getProperty() {
var attributeType = this.getAttribute('attributeType').getString()
var attributeName = this.getAttribute('attributeName').getString()
if (attributeType === 'CSS') {
return this.parent.getStyle(attributeName, true)
}
return this.parent.getAttribute(attributeName, true)
}
calcValue() {
var { initialUnits } = this
var { progress, from, to } = this.getProgress()
var newValue =
from.getNumber() + (to.getNumber() - from.getNumber()) * progress
if (initialUnits === '%') {
newValue *= 100
}
return ''.concat(newValue).concat(initialUnits)
}
update(delta) {
var { parent: parent2 } = this
var prop = this.getProperty()
if (!this.initialValue) {
this.initialValue = prop.getString()
this.initialUnits = prop.getUnits()
}
if (this.duration > this.maxDuration) {
var fill = this.getAttribute('fill').getString('remove')
if (
this.getAttribute('repeatCount').getString() === 'indefinite' ||
this.getAttribute('repeatDur').getString() === 'indefinite'
) {
this.duration = 0
} else if (fill === 'freeze' && !this.frozen) {
this.frozen = true
parent2.animationFrozen = true
parent2.animationFrozenValue = prop.getString()
} else if (fill === 'remove' && !this.removed) {
this.removed = true
prop.setValue(
parent2.animationFrozen
? parent2.animationFrozenValue
: this.initialValue
)
return true
}
return false
}
this.duration += delta
var updated = false
if (this.begin < this.duration) {
var newValue = this.calcValue()
var typeAttr = this.getAttribute('type')
if (typeAttr.hasValue()) {
var type4 = typeAttr.getString()
newValue = ''.concat(type4, '(').concat(newValue, ')')
}
prop.setValue(newValue)
updated = true
}
return updated
}
getProgress() {
var { document: document2, values: values2 } = this
var result = {
progress: (this.duration - this.begin) / (this.maxDuration - this.begin),
}
if (values2.hasValue()) {
var p2 = result.progress * (values2.getValue().length - 1)
var lb2 = Math.floor(p2)
var ub = Math.ceil(p2)
result.from = new Property(
document2,
'from',
parseFloat(values2.getValue()[lb2])
)
result.to = new Property(
document2,
'to',
parseFloat(values2.getValue()[ub])
)
result.progress = (p2 - lb2) / (ub - lb2)
} else {
result.from = this.from
result.to = this.to
}
return result
}
}
class AnimateColorElement extends AnimateElement {
constructor() {
super(...arguments)
this.type = 'animateColor'
}
calcValue() {
var { progress, from, to } = this.getProgress()
var colorFrom = new rgbcolor(from.getColor())
var colorTo = new rgbcolor(to.getColor())
if (colorFrom.ok && colorTo.ok) {
var r2 = colorFrom.r + (colorTo.r - colorFrom.r) * progress
var g2 = colorFrom.g + (colorTo.g - colorFrom.g) * progress
var b2 = colorFrom.b + (colorTo.b - colorFrom.b) * progress
return 'rgb('
.concat(Math.floor(r2), ', ')
.concat(Math.floor(g2), ', ')
.concat(Math.floor(b2), ')')
}
return this.getAttribute('from').getColor()
}
}
class AnimateTransformElement extends AnimateElement {
constructor() {
super(...arguments)
this.type = 'animateTransform'
}
calcValue() {
var { progress, from, to } = this.getProgress()
var transformFrom = toNumbers(from.getString())
var transformTo = toNumbers(to.getString())
var newValue = transformFrom
.map((from2, i2) => {
var to2 = transformTo[i2]
return from2 + (to2 - from2) * progress
})
.join(' ')
return newValue
}
}
class FontElement extends Element$3 {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes)
this.type = 'font'
this.glyphs = {}
this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber()
var { definitions } = document2
var { children } = this
for (var child of children) {
switch (child.type) {
case 'font-face': {
this.fontFace = child
var fontFamilyStyle = child.getStyle('font-family')
if (fontFamilyStyle.hasValue()) {
definitions[fontFamilyStyle.getString()] = this
}
break
}
case 'missing-glyph':
this.missingGlyph = child
break
case 'glyph': {
var glyph = child
if (glyph.arabicForm) {
this.isRTL = true
this.isArabic = true
if (typeof this.glyphs[glyph.unicode] === 'undefined') {
this.glyphs[glyph.unicode] = {}
}
this.glyphs[glyph.unicode][glyph.arabicForm] = glyph
} else {
this.glyphs[glyph.unicode] = glyph
}
break
}
}
}
}
render() {}
}
class FontFaceElement extends Element$3 {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes)
this.type = 'font-face'
this.ascent = this.getAttribute('ascent').getNumber()
this.descent = this.getAttribute('descent').getNumber()
this.unitsPerEm = this.getAttribute('units-per-em').getNumber()
}
}
class MissingGlyphElement extends PathElement {
constructor() {
super(...arguments)
this.type = 'missing-glyph'
this.horizAdvX = 0
}
}
class TRefElement extends TextElement {
constructor() {
super(...arguments)
this.type = 'tref'
}
getText() {
var element = this.getHrefAttribute().getDefinition()
if (element) {
var firstChild = element.children[0]
if (firstChild) {
return firstChild.getText()
}
}
return ''
}
}
class AElement extends TextElement {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes)
this.type = 'a'
var { childNodes } = node2
var firstChild = childNodes[0]
var hasText =
childNodes.length > 0 &&
Array.from(childNodes).every((node3) => node3.nodeType === 3)
this.hasText = hasText
this.text = hasText ? this.getTextFromNode(firstChild) : ''
}
getText() {
return this.text
}
renderChildren(ctx) {
if (this.hasText) {
super.renderChildren(ctx)
var { document: document2, x: x2, y: y2 } = this
var { mouse: mouse2 } = document2.screen
var fontSize2 = new Property(
document2,
'fontSize',
Font.parse(document2.ctx.font).fontSize
)
if (mouse2.isWorking()) {
mouse2.checkBoundingBox(
this,
new BoundingBox(
x2,
y2 - fontSize2.getPixels('y'),
x2 + this.measureText(ctx),
y2
)
)
}
} else if (this.children.length > 0) {
var g2 = new GElement(this.document, null)
g2.children = this.children
g2.parent = this
g2.render(ctx)
}
}
onClick() {
var { window: window2 } = this.document
if (window2) {
window2.open(this.getHrefAttribute().getString())
}
}
onMouseMove() {
var ctx = this.document.ctx
ctx.canvas.style.cursor = 'pointer'
}
}
function ownKeys$2(object4, enumerableOnly) {
var keys3 = Object.keys(object4)
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object4)
if (enumerableOnly) {
symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object4, sym).enumerable
})
}
keys3.push.apply(keys3, symbols)
}
return keys3
}
function _objectSpread$2(target2) {
for (var i2 = 1; i2 < arguments.length; i2++) {
var source2 = arguments[i2] != null ? arguments[i2] : {}
if (i2 % 2) {
ownKeys$2(Object(source2), true).forEach(function (key2) {
_defineProperty$2(target2, key2, source2[key2])
})
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(
target2,
Object.getOwnPropertyDescriptors(source2)
)
} else {
ownKeys$2(Object(source2)).forEach(function (key2) {
Object.defineProperty(
target2,
key2,
Object.getOwnPropertyDescriptor(source2, key2)
)
})
}
}
return target2
}
class TextPathElement extends TextElement {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes)
this.type = 'textPath'
this.textWidth = 0
this.textHeight = 0
this.pathLength = -1
this.glyphInfo = null
this.letterSpacingCache = []
this.measuresCache = /* @__PURE__ */ new Map([['', 0]])
var pathElement = this.getHrefAttribute().getDefinition()
this.text = this.getTextFromNode()
this.dataArray = this.parsePathData(pathElement)
}
getText() {
return this.text
}
path(ctx) {
var { dataArray } = this
if (ctx) {
ctx.beginPath()
}
dataArray.forEach((_ref2) => {
var { type: type4, points: points2 } = _ref2
switch (type4) {
case PathParser.LINE_TO:
if (ctx) {
ctx.lineTo(points2[0], points2[1])
}
break
case PathParser.MOVE_TO:
if (ctx) {
ctx.moveTo(points2[0], points2[1])
}
break
case PathParser.CURVE_TO:
if (ctx) {
ctx.bezierCurveTo(
points2[0],
points2[1],
points2[2],
points2[3],
points2[4],
points2[5]
)
}
break
case PathParser.QUAD_TO:
if (ctx) {
ctx.quadraticCurveTo(points2[0], points2[1], points2[2], points2[3])
}
break
case PathParser.ARC: {
var [cx, cy, rx, ry, theta, dTheta, psi, fs] = points2
var r2 = rx > ry ? rx : ry
var scaleX = rx > ry ? 1 : rx / ry
var scaleY = rx > ry ? ry / rx : 1
if (ctx) {
ctx.translate(cx, cy)
ctx.rotate(psi)
ctx.scale(scaleX, scaleY)
ctx.arc(0, 0, r2, theta, theta + dTheta, Boolean(1 - fs))
ctx.scale(1 / scaleX, 1 / scaleY)
ctx.rotate(-psi)
ctx.translate(-cx, -cy)
}
break
}
case PathParser.CLOSE_PATH:
if (ctx) {
ctx.closePath()
}
break
}
})
}
renderChildren(ctx) {
this.setTextData(ctx)
ctx.save()
var textDecoration = this.parent.getStyle('text-decoration').getString()
var fontSize2 = this.getFontSize()
var { glyphInfo } = this
var fill = ctx.fillStyle
if (textDecoration === 'underline') {
ctx.beginPath()
}
glyphInfo.forEach((glyph, i2) => {
var { p0, p1, rotation, text: partialText } = glyph
ctx.save()
ctx.translate(p0.x, p0.y)
ctx.rotate(rotation)
if (ctx.fillStyle) {
ctx.fillText(partialText, 0, 0)
}
if (ctx.strokeStyle) {
ctx.strokeText(partialText, 0, 0)
}
ctx.restore()
if (textDecoration === 'underline') {
if (i2 === 0) {
ctx.moveTo(p0.x, p0.y + fontSize2 / 8)
}
ctx.lineTo(p1.x, p1.y + fontSize2 / 5)
}
})
if (textDecoration === 'underline') {
ctx.lineWidth = fontSize2 / 20
ctx.strokeStyle = fill
ctx.stroke()
ctx.closePath()
}
ctx.restore()
}
getLetterSpacingAt() {
var idx = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0
return this.letterSpacingCache[idx] || 0
}
findSegmentToFitChar(
ctx,
anchor,
textFullWidth,
fullPathWidth,
spacesNumber,
inputOffset,
dy,
c2,
charI
) {
var offset2 = inputOffset
var glyphWidth = this.measureText(ctx, c2)
if (c2 === ' ' && anchor === 'justify' && textFullWidth < fullPathWidth) {
glyphWidth += (fullPathWidth - textFullWidth) / spacesNumber
}
if (charI > -1) {
offset2 += this.getLetterSpacingAt(charI)
}
var splineStep = this.textHeight / 20
var p0 = this.getEquidistantPointOnPath(offset2, splineStep, 0)
var p1 = this.getEquidistantPointOnPath(offset2 + glyphWidth, splineStep, 0)
var segment = {
p0,
p1,
}
var rotation = p0 && p1 ? Math.atan2(p1.y - p0.y, p1.x - p0.x) : 0
if (dy) {
var dyX = Math.cos(Math.PI / 2 + rotation) * dy
var dyY = Math.cos(-rotation) * dy
segment.p0 = _objectSpread$2(
_objectSpread$2({}, p0),
{},
{
x: p0.x + dyX,
y: p0.y + dyY,
}
)
segment.p1 = _objectSpread$2(
_objectSpread$2({}, p1),
{},
{
x: p1.x + dyX,
y: p1.y + dyY,
}
)
}
offset2 += glyphWidth
return {
offset: offset2,
segment,
rotation,
}
}
measureText(ctx, text2) {
var { measuresCache } = this
var targetText = text2 || this.getText()
if (measuresCache.has(targetText)) {
return measuresCache.get(targetText)
}
var measure = this.measureTargetText(ctx, targetText)
measuresCache.set(targetText, measure)
return measure
}
setTextData(ctx) {
if (this.glyphInfo) {
return
}
var renderText = this.getText()
var chars2 = renderText.split('')
var spacesNumber = renderText.split(' ').length - 1
var dx = this.parent
.getAttribute('dx')
.split()
.map((_2) => _2.getPixels('x'))
var dy = this.parent.getAttribute('dy').getPixels('y')
var anchor = this.parent.getStyle('text-anchor').getString('start')
var thisSpacing = this.getStyle('letter-spacing')
var parentSpacing = this.parent.getStyle('letter-spacing')
var letterSpacing2 = 0
if (!thisSpacing.hasValue() || thisSpacing.getValue() === 'inherit') {
letterSpacing2 = parentSpacing.getPixels()
} else if (thisSpacing.hasValue()) {
if (
thisSpacing.getValue() !== 'initial' &&
thisSpacing.getValue() !== 'unset'
) {
letterSpacing2 = thisSpacing.getPixels()
}
}
var letterSpacingCache = []
var textLen = renderText.length
this.letterSpacingCache = letterSpacingCache
for (var i2 = 0; i2 < textLen; i2++) {
letterSpacingCache.push(
typeof dx[i2] !== 'undefined' ? dx[i2] : letterSpacing2
)
}
var dxSum = letterSpacingCache.reduce(
(acc, cur, i3) => (i3 === 0 ? 0 : acc + cur || 0),
0
)
var textWidth = this.measureText(ctx)
var textFullWidth = Math.max(textWidth + dxSum, 0)
this.textWidth = textWidth
this.textHeight = this.getFontSize()
this.glyphInfo = []
var fullPathWidth = this.getPathLength()
var startOffset = this.getStyle('startOffset').getNumber(0) * fullPathWidth
var offset2 = 0
if (anchor === 'middle' || anchor === 'center') {
offset2 = -textFullWidth / 2
}
if (anchor === 'end' || anchor === 'right') {
offset2 = -textFullWidth
}
offset2 += startOffset
chars2.forEach((char, i3) => {
var {
offset: nextOffset,
segment,
rotation,
} = this.findSegmentToFitChar(
ctx,
anchor,
textFullWidth,
fullPathWidth,
spacesNumber,
offset2,
dy,
char,
i3
)
offset2 = nextOffset
if (!segment.p0 || !segment.p1) {
return
}
this.glyphInfo.push({
text: chars2[i3],
p0: segment.p0,
p1: segment.p1,
rotation,
})
})
}
parsePathData(path) {
this.pathLength = -1
if (!path) {
return []
}
var pathCommands = []
var { pathParser } = path
pathParser.reset()
while (!pathParser.isEnd()) {
var { current: current2 } = pathParser
var startX = current2 ? current2.x : 0
var startY = current2 ? current2.y : 0
var command = pathParser.next()
var nextCommandType = command.type
var points2 = []
switch (command.type) {
case PathParser.MOVE_TO:
this.pathM(pathParser, points2)
break
case PathParser.LINE_TO:
nextCommandType = this.pathL(pathParser, points2)
break
case PathParser.HORIZ_LINE_TO:
nextCommandType = this.pathH(pathParser, points2)
break
case PathParser.VERT_LINE_TO:
nextCommandType = this.pathV(pathParser, points2)
break
case PathParser.CURVE_TO:
this.pathC(pathParser, points2)
break
case PathParser.SMOOTH_CURVE_TO:
nextCommandType = this.pathS(pathParser, points2)
break
case PathParser.QUAD_TO:
this.pathQ(pathParser, points2)
break
case PathParser.SMOOTH_QUAD_TO:
nextCommandType = this.pathT(pathParser, points2)
break
case PathParser.ARC:
points2 = this.pathA(pathParser)
break
case PathParser.CLOSE_PATH:
PathElement.pathZ(pathParser)
break
}
if (command.type !== PathParser.CLOSE_PATH) {
pathCommands.push({
type: nextCommandType,
points: points2,
start: {
x: startX,
y: startY,
},
pathLength: this.calcLength(startX, startY, nextCommandType, points2),
})
} else {
pathCommands.push({
type: PathParser.CLOSE_PATH,
points: [],
pathLength: 0,
})
}
}
return pathCommands
}
pathM(pathParser, points2) {
var { x: x2, y: y2 } = PathElement.pathM(pathParser).point
points2.push(x2, y2)
}
pathL(pathParser, points2) {
var { x: x2, y: y2 } = PathElement.pathL(pathParser).point
points2.push(x2, y2)
return PathParser.LINE_TO
}
pathH(pathParser, points2) {
var { x: x2, y: y2 } = PathElement.pathH(pathParser).point
points2.push(x2, y2)
return PathParser.LINE_TO
}
pathV(pathParser, points2) {
var { x: x2, y: y2 } = PathElement.pathV(pathParser).point
points2.push(x2, y2)
return PathParser.LINE_TO
}
pathC(pathParser, points2) {
var { point, controlPoint, currentPoint } = PathElement.pathC(pathParser)
points2.push(
point.x,
point.y,
controlPoint.x,
controlPoint.y,
currentPoint.x,
currentPoint.y
)
}
pathS(pathParser, points2) {
var { point, controlPoint, currentPoint } = PathElement.pathS(pathParser)
points2.push(
point.x,
point.y,
controlPoint.x,
controlPoint.y,
currentPoint.x,
currentPoint.y
)
return PathParser.CURVE_TO
}
pathQ(pathParser, points2) {
var { controlPoint, currentPoint } = PathElement.pathQ(pathParser)
points2.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y)
}
pathT(pathParser, points2) {
var { controlPoint, currentPoint } = PathElement.pathT(pathParser)
points2.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y)
return PathParser.QUAD_TO
}
pathA(pathParser) {
var { rX, rY, sweepFlag, xAxisRotation, centp, a1, ad } =
PathElement.pathA(pathParser)
if (sweepFlag === 0 && ad > 0) {
ad -= 2 * Math.PI
}
if (sweepFlag === 1 && ad < 0) {
ad += 2 * Math.PI
}
return [centp.x, centp.y, rX, rY, a1, ad, xAxisRotation, sweepFlag]
}
calcLength(x2, y2, commandType, points2) {
var len2 = 0
var p1 = null
var p2 = null
var t3 = 0
switch (commandType) {
case PathParser.LINE_TO:
return this.getLineLength(x2, y2, points2[0], points2[1])
case PathParser.CURVE_TO:
len2 = 0
p1 = this.getPointOnCubicBezier(
0,
x2,
y2,
points2[0],
points2[1],
points2[2],
points2[3],
points2[4],
points2[5]
)
for (t3 = 0.01; t3 <= 1; t3 += 0.01) {
p2 = this.getPointOnCubicBezier(
t3,
x2,
y2,
points2[0],
points2[1],
points2[2],
points2[3],
points2[4],
points2[5]
)
len2 += this.getLineLength(p1.x, p1.y, p2.x, p2.y)
p1 = p2
}
return len2
case PathParser.QUAD_TO:
len2 = 0
p1 = this.getPointOnQuadraticBezier(
0,
x2,
y2,
points2[0],
points2[1],
points2[2],
points2[3]
)
for (t3 = 0.01; t3 <= 1; t3 += 0.01) {
p2 = this.getPointOnQuadraticBezier(
t3,
x2,
y2,
points2[0],
points2[1],
points2[2],
points2[3]
)
len2 += this.getLineLength(p1.x, p1.y, p2.x, p2.y)
p1 = p2
}
return len2
case PathParser.ARC: {
len2 = 0
var start2 = points2[4]
var dTheta = points2[5]
var end2 = points2[4] + dTheta
var inc2 = Math.PI / 180
if (Math.abs(start2 - end2) < inc2) {
inc2 = Math.abs(start2 - end2)
}
p1 = this.getPointOnEllipticalArc(
points2[0],
points2[1],
points2[2],
points2[3],
start2,
0
)
if (dTheta < 0) {
for (t3 = start2 - inc2; t3 > end2; t3 -= inc2) {
p2 = this.getPointOnEllipticalArc(
points2[0],
points2[1],
points2[2],
points2[3],
t3,
0
)
len2 += this.getLineLength(p1.x, p1.y, p2.x, p2.y)
p1 = p2
}
} else {
for (t3 = start2 + inc2; t3 < end2; t3 += inc2) {
p2 = this.getPointOnEllipticalArc(
points2[0],
points2[1],
points2[2],
points2[3],
t3,
0
)
len2 += this.getLineLength(p1.x, p1.y, p2.x, p2.y)
p1 = p2
}
}
p2 = this.getPointOnEllipticalArc(
points2[0],
points2[1],
points2[2],
points2[3],
end2,
0
)
len2 += this.getLineLength(p1.x, p1.y, p2.x, p2.y)
return len2
}
}
return 0
}
getPointOnLine(dist2, p1x, p1y, p2x, p2y) {
var fromX =
arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : p1x
var fromY =
arguments.length > 6 && arguments[6] !== void 0 ? arguments[6] : p1y
var m2 = (p2y - p1y) / (p2x - p1x + PSEUDO_ZERO)
var run2 = Math.sqrt((dist2 * dist2) / (1 + m2 * m2))
if (p2x < p1x) {
run2 *= -1
}
var rise = m2 * run2
var pt3 = null
if (p2x === p1x) {
pt3 = {
x: fromX,
y: fromY + rise,
}
} else if ((fromY - p1y) / (fromX - p1x + PSEUDO_ZERO) === m2) {
pt3 = {
x: fromX + run2,
y: fromY + rise,
}
} else {
var ix = 0
var iy = 0
var len2 = this.getLineLength(p1x, p1y, p2x, p2y)
if (len2 < PSEUDO_ZERO) {
return null
}
var u2 = (fromX - p1x) * (p2x - p1x) + (fromY - p1y) * (p2y - p1y)
u2 /= len2 * len2
ix = p1x + u2 * (p2x - p1x)
iy = p1y + u2 * (p2y - p1y)
var pRise = this.getLineLength(fromX, fromY, ix, iy)
var pRun = Math.sqrt(dist2 * dist2 - pRise * pRise)
run2 = Math.sqrt((pRun * pRun) / (1 + m2 * m2))
if (p2x < p1x) {
run2 *= -1
}
rise = m2 * run2
pt3 = {
x: ix + run2,
y: iy + rise,
}
}
return pt3
}
getPointOnPath(distance2) {
var fullLen = this.getPathLength()
var cumulativePathLength = 0
var p2 = null
if (distance2 < -5e-5 || distance2 - 5e-5 > fullLen) {
return null
}
var { dataArray } = this
for (var command of dataArray) {
if (
command &&
(command.pathLength < 5e-5 ||
cumulativePathLength + command.pathLength + 5e-5 < distance2)
) {
cumulativePathLength += command.pathLength
continue
}
var delta = distance2 - cumulativePathLength
var currentT = 0
switch (command.type) {
case PathParser.LINE_TO:
p2 = this.getPointOnLine(
delta,
command.start.x,
command.start.y,
command.points[0],
command.points[1],
command.start.x,
command.start.y
)
break
case PathParser.ARC: {
var start2 = command.points[4]
var dTheta = command.points[5]
var end2 = command.points[4] + dTheta
currentT = start2 + (delta / command.pathLength) * dTheta
if (
(dTheta < 0 && currentT < end2) ||
(dTheta >= 0 && currentT > end2)
) {
break
}
p2 = this.getPointOnEllipticalArc(
command.points[0],
command.points[1],
command.points[2],
command.points[3],
currentT,
command.points[6]
)
break
}
case PathParser.CURVE_TO:
currentT = delta / command.pathLength
if (currentT > 1) {
currentT = 1
}
p2 = this.getPointOnCubicBezier(
currentT,
command.start.x,
command.start.y,
command.points[0],
command.points[1],
command.points[2],
command.points[3],
command.points[4],
command.points[5]
)
break
case PathParser.QUAD_TO:
currentT = delta / command.pathLength
if (currentT > 1) {
currentT = 1
}
p2 = this.getPointOnQuadraticBezier(
currentT,
command.start.x,
command.start.y,
command.points[0],
command.points[1],
command.points[2],
command.points[3]
)
break
}
if (p2) {
return p2
}
break
}
return null
}
getLineLength(x1, y1, x2, y2) {
return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1))
}
getPathLength() {
if (this.pathLength === -1) {
this.pathLength = this.dataArray.reduce(
(length2, command) =>
command.pathLength > 0 ? length2 + command.pathLength : length2,
0
)
}
return this.pathLength
}
getPointOnCubicBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y) {
var x2 = p4x * CB1(pct) + p3x * CB2(pct) + p2x * CB3(pct) + p1x * CB4(pct)
var y2 = p4y * CB1(pct) + p3y * CB2(pct) + p2y * CB3(pct) + p1y * CB4(pct)
return {
x: x2,
y: y2,
}
}
getPointOnQuadraticBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y) {
var x2 = p3x * QB1(pct) + p2x * QB2(pct) + p1x * QB3(pct)
var y2 = p3y * QB1(pct) + p2y * QB2(pct) + p1y * QB3(pct)
return {
x: x2,
y: y2,
}
}
getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {
var cosPsi = Math.cos(psi)
var sinPsi = Math.sin(psi)
var pt3 = {
x: rx * Math.cos(theta),
y: ry * Math.sin(theta),
}
return {
x: cx + (pt3.x * cosPsi - pt3.y * sinPsi),
y: cy + (pt3.x * sinPsi + pt3.y * cosPsi),
}
}
buildEquidistantCache(inputStep, inputPrecision) {
var fullLen = this.getPathLength()
var precision = inputPrecision || 0.25
var step = inputStep || fullLen / 100
if (
!this.equidistantCache ||
this.equidistantCache.step !== step ||
this.equidistantCache.precision !== precision
) {
this.equidistantCache = {
step,
precision,
points: [],
}
var s2 = 0
for (var l2 = 0; l2 <= fullLen; l2 += precision) {
var p0 = this.getPointOnPath(l2)
var p1 = this.getPointOnPath(l2 + precision)
if (!p0 || !p1) {
continue
}
s2 += this.getLineLength(p0.x, p0.y, p1.x, p1.y)
if (s2 >= step) {
this.equidistantCache.points.push({
x: p0.x,
y: p0.y,
distance: l2,
})
s2 -= step
}
}
}
}
getEquidistantPointOnPath(targetDistance, step, precision) {
this.buildEquidistantCache(step, precision)
if (targetDistance < 0 || targetDistance - this.getPathLength() > 5e-5) {
return null
}
var idx = Math.round(
(targetDistance / this.getPathLength()) *
(this.equidistantCache.points.length - 1)
)
return this.equidistantCache.points[idx] || null
}
}
var dataUriRegex =
/^\s*data:(([^/,;]+\/[^/,;]+)(?:;([^,;=]+=[^,;=]+))?)?(?:;(base64))?,(.*)$/i
class ImageElement extends RenderedElement {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes)
this.type = 'image'
this.loaded = false
var href = this.getHrefAttribute().getString()
if (!href) {
return
}
var isSvg = href.endsWith('.svg') || /^\s*data:image\/svg\+xml/i.test(href)
document2.images.push(this)
if (!isSvg) {
void this.loadImage(href)
} else {
void this.loadSvg(href)
}
this.isSvg = isSvg
}
loadImage(href) {
var _this = this
return _asyncToGenerator(function* () {
try {
var image2 = yield _this.document.createImage(href)
_this.image = image2
} catch (err) {
console.error('Error while loading image "'.concat(href, '":'), err)
}
_this.loaded = true
})()
}
loadSvg(href) {
var _this2 = this
return _asyncToGenerator(function* () {
var match2 = dataUriRegex.exec(href)
if (match2) {
var data2 = match2[5]
if (match2[4] === 'base64') {
_this2.image = atob(data2)
} else {
_this2.image = decodeURIComponent(data2)
}
} else {
try {
var response = yield _this2.document.fetch(href)
var svg2 = yield response.text()
_this2.image = svg2
} catch (err) {
console.error('Error while loading image "'.concat(href, '":'), err)
}
}
_this2.loaded = true
})()
}
renderChildren(ctx) {
var { document: document2, image: image2, loaded } = this
var x2 = this.getAttribute('x').getPixels('x')
var y2 = this.getAttribute('y').getPixels('y')
var width = this.getStyle('width').getPixels('x')
var height = this.getStyle('height').getPixels('y')
if (!loaded || !image2 || !width || !height) {
return
}
ctx.save()
ctx.translate(x2, y2)
if (this.isSvg) {
var subDocument = document2.canvg.forkString(ctx, this.image, {
ignoreMouse: true,
ignoreAnimation: true,
ignoreDimensions: true,
ignoreClear: true,
offsetX: 0,
offsetY: 0,
scaleWidth: width,
scaleHeight: height,
})
subDocument.document.documentElement.parent = this
void subDocument.render()
} else {
var _image = this.image
document2.setViewBox({
ctx,
aspectRatio: this.getAttribute('preserveAspectRatio').getString(),
width,
desiredWidth: _image.width,
height,
desiredHeight: _image.height,
})
if (this.loaded) {
if (typeof _image.complete === 'undefined' || _image.complete) {
ctx.drawImage(_image, 0, 0)
}
}
}
ctx.restore()
}
getBoundingBox() {
var x2 = this.getAttribute('x').getPixels('x')
var y2 = this.getAttribute('y').getPixels('y')
var width = this.getStyle('width').getPixels('x')
var height = this.getStyle('height').getPixels('y')
return new BoundingBox(x2, y2, x2 + width, y2 + height)
}
}
class SymbolElement extends RenderedElement {
constructor() {
super(...arguments)
this.type = 'symbol'
}
render(_2) {}
}
class SVGFontLoader {
constructor(document2) {
this.document = document2
this.loaded = false
document2.fonts.push(this)
}
load(fontFamily2, url2) {
var _this = this
return _asyncToGenerator(function* () {
try {
var { document: document2 } = _this
var svgDocument = yield document2.canvg.parser.load(url2)
var fonts = svgDocument.getElementsByTagName('font')
Array.from(fonts).forEach((fontNode) => {
var font2 = document2.createElement(fontNode)
document2.definitions[fontFamily2] = font2
})
} catch (err) {
console.error('Error while loading font "'.concat(url2, '":'), err)
}
_this.loaded = true
})()
}
}
class StyleElement extends Element$3 {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes)
this.type = 'style'
var css2 = compressSpaces(
Array.from(node2.childNodes)
.map((_2) => _2.textContent)
.join('')
.replace(
/(\/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+\/)|(^[\s]*\/\/.*)/gm,
''
)
.replace(/@import.*;/g, '')
)
var cssDefs = css2.split('}')
cssDefs.forEach((_2) => {
var def = _2.trim()
if (!def) {
return
}
var cssParts = def.split('{')
var cssClasses = cssParts[0].split(',')
var cssProps = cssParts[1].split(';')
cssClasses.forEach((_3) => {
var cssClass = _3.trim()
if (!cssClass) {
return
}
var props2 = document2.styles[cssClass] || {}
cssProps.forEach((cssProp) => {
var prop = cssProp.indexOf(':')
var name2 = cssProp.substr(0, prop).trim()
var value2 = cssProp.substr(prop + 1, cssProp.length - prop).trim()
if (name2 && value2) {
props2[name2] = new Property(document2, name2, value2)
}
})
document2.styles[cssClass] = props2
document2.stylesSpecificity[cssClass] = getSelectorSpecificity(cssClass)
if (cssClass === '@font-face') {
var fontFamily2 = props2['font-family']
.getString()
.replace(/"|'/g, '')
var srcs = props2.src.getString().split(',')
srcs.forEach((src) => {
if (src.indexOf('format("svg")') > 0) {
var url2 = parseExternalUrl(src)
if (url2) {
void new SVGFontLoader(document2).load(fontFamily2, url2)
}
}
})
}
})
})
}
}
StyleElement.parseExternalUrl = parseExternalUrl
class UseElement extends RenderedElement {
constructor() {
super(...arguments)
this.type = 'use'
}
setContext(ctx) {
super.setContext(ctx)
var xAttr = this.getAttribute('x')
var yAttr = this.getAttribute('y')
if (xAttr.hasValue()) {
ctx.translate(xAttr.getPixels('x'), 0)
}
if (yAttr.hasValue()) {
ctx.translate(0, yAttr.getPixels('y'))
}
}
path(ctx) {
var { element } = this
if (element) {
element.path(ctx)
}
}
renderChildren(ctx) {
var { document: document2, element } = this
if (element) {
var tempSvg = element
if (element.type === 'symbol') {
tempSvg = new SVGElement(document2, null)
tempSvg.attributes.viewBox = new Property(
document2,
'viewBox',
element.getAttribute('viewBox').getString()
)
tempSvg.attributes.preserveAspectRatio = new Property(
document2,
'preserveAspectRatio',
element.getAttribute('preserveAspectRatio').getString()
)
tempSvg.attributes.overflow = new Property(
document2,
'overflow',
element.getAttribute('overflow').getString()
)
tempSvg.children = element.children
element.styles.opacity = new Property(
document2,
'opacity',
this.calculateOpacity()
)
}
if (tempSvg.type === 'svg') {
var widthStyle = this.getStyle('width', false, true)
var heightStyle = this.getStyle('height', false, true)
if (widthStyle.hasValue()) {
tempSvg.attributes.width = new Property(
document2,
'width',
widthStyle.getString()
)
}
if (heightStyle.hasValue()) {
tempSvg.attributes.height = new Property(
document2,
'height',
heightStyle.getString()
)
}
}
var oldParent = tempSvg.parent
tempSvg.parent = this
tempSvg.render(ctx)
tempSvg.parent = oldParent
}
}
getBoundingBox(ctx) {
var { element } = this
if (element) {
return element.getBoundingBox(ctx)
}
return null
}
elementTransform() {
var { document: document2, element } = this
return Transform.fromElement(document2, element)
}
get element() {
if (!this.cachedElement) {
this.cachedElement = this.getHrefAttribute().getDefinition()
}
return this.cachedElement
}
}
function imGet(img, x2, y2, width, _height, rgba) {
return img[y2 * width * 4 + x2 * 4 + rgba]
}
function imSet(img, x2, y2, width, _height, rgba, val2) {
img[y2 * width * 4 + x2 * 4 + rgba] = val2
}
function m$1(matrix2, i2, v4) {
var mi = matrix2[i2]
return mi * v4
}
function c(a2, m1, m2, m3) {
return m1 + Math.cos(a2) * m2 + Math.sin(a2) * m3
}
class FeColorMatrixElement extends Element$3 {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes)
this.type = 'feColorMatrix'
var matrix2 = toNumbers(this.getAttribute('values').getString())
switch (this.getAttribute('type').getString('matrix')) {
case 'saturate': {
var s2 = matrix2[0]
matrix2 = [
0.213 + 0.787 * s2,
0.715 - 0.715 * s2,
0.072 - 0.072 * s2,
0,
0,
0.213 - 0.213 * s2,
0.715 + 0.285 * s2,
0.072 - 0.072 * s2,
0,
0,
0.213 - 0.213 * s2,
0.715 - 0.715 * s2,
0.072 + 0.928 * s2,
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
0,
1,
]
break
}
case 'hueRotate': {
var a2 = (matrix2[0] * Math.PI) / 180
matrix2 = [
c(a2, 0.213, 0.787, -0.213),
c(a2, 0.715, -0.715, -0.715),
c(a2, 0.072, -0.072, 0.928),
0,
0,
c(a2, 0.213, -0.213, 0.143),
c(a2, 0.715, 0.285, 0.14),
c(a2, 0.072, -0.072, -0.283),
0,
0,
c(a2, 0.213, -0.213, -0.787),
c(a2, 0.715, -0.715, 0.715),
c(a2, 0.072, 0.928, 0.072),
0,
0,
0,
0,
0,
1,
0,
0,
0,
0,
0,
1,
]
break
}
case 'luminanceToAlpha':
matrix2 = [
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2125, 0.7154, 0.0721,
0, 0, 0, 0, 0, 0, 1,
]
break
}
this.matrix = matrix2
this.includeOpacity = this.getAttribute('includeOpacity').hasValue()
}
apply(ctx, _x, _y, width, height) {
var { includeOpacity, matrix: matrix2 } = this
var srcData = ctx.getImageData(0, 0, width, height)
for (var y2 = 0; y2 < height; y2++) {
for (var x2 = 0; x2 < width; x2++) {
var r2 = imGet(srcData.data, x2, y2, width, height, 0)
var g2 = imGet(srcData.data, x2, y2, width, height, 1)
var b2 = imGet(srcData.data, x2, y2, width, height, 2)
var a2 = imGet(srcData.data, x2, y2, width, height, 3)
var nr =
m$1(matrix2, 0, r2) +
m$1(matrix2, 1, g2) +
m$1(matrix2, 2, b2) +
m$1(matrix2, 3, a2) +
m$1(matrix2, 4, 1)
var ng =
m$1(matrix2, 5, r2) +
m$1(matrix2, 6, g2) +
m$1(matrix2, 7, b2) +
m$1(matrix2, 8, a2) +
m$1(matrix2, 9, 1)
var nb =
m$1(matrix2, 10, r2) +
m$1(matrix2, 11, g2) +
m$1(matrix2, 12, b2) +
m$1(matrix2, 13, a2) +
m$1(matrix2, 14, 1)
var na =
m$1(matrix2, 15, r2) +
m$1(matrix2, 16, g2) +
m$1(matrix2, 17, b2) +
m$1(matrix2, 18, a2) +
m$1(matrix2, 19, 1)
if (includeOpacity) {
nr = 0
ng = 0
nb = 0
na *= a2 / 255
}
imSet(srcData.data, x2, y2, width, height, 0, nr)
imSet(srcData.data, x2, y2, width, height, 1, ng)
imSet(srcData.data, x2, y2, width, height, 2, nb)
imSet(srcData.data, x2, y2, width, height, 3, na)
}
}
ctx.clearRect(0, 0, width, height)
ctx.putImageData(srcData, 0, 0)
}
}
class MaskElement extends Element$3 {
constructor() {
super(...arguments)
this.type = 'mask'
}
apply(ctx, element) {
var { document: document2 } = this
var x2 = this.getAttribute('x').getPixels('x')
var y2 = this.getAttribute('y').getPixels('y')
var width = this.getStyle('width').getPixels('x')
var height = this.getStyle('height').getPixels('y')
if (!width && !height) {
var boundingBox = new BoundingBox()
this.children.forEach((child) => {
boundingBox.addBoundingBox(child.getBoundingBox(ctx))
})
x2 = Math.floor(boundingBox.x1)
y2 = Math.floor(boundingBox.y1)
width = Math.floor(boundingBox.width)
height = Math.floor(boundingBox.height)
}
var ignoredStyles = this.removeStyles(element, MaskElement.ignoreStyles)
var maskCanvas = document2.createCanvas(x2 + width, y2 + height)
var maskCtx = maskCanvas.getContext('2d')
document2.screen.setDefaults(maskCtx)
this.renderChildren(maskCtx)
new FeColorMatrixElement(document2, {
nodeType: 1,
childNodes: [],
attributes: [
{
nodeName: 'type',
value: 'luminanceToAlpha',
},
{
nodeName: 'includeOpacity',
value: 'true',
},
],
}).apply(maskCtx, 0, 0, x2 + width, y2 + height)
var tmpCanvas = document2.createCanvas(x2 + width, y2 + height)
var tmpCtx = tmpCanvas.getContext('2d')
document2.screen.setDefaults(tmpCtx)
element.render(tmpCtx)
tmpCtx.globalCompositeOperation = 'destination-in'
tmpCtx.fillStyle = maskCtx.createPattern(maskCanvas, 'no-repeat')
tmpCtx.fillRect(0, 0, x2 + width, y2 + height)
ctx.fillStyle = tmpCtx.createPattern(tmpCanvas, 'no-repeat')
ctx.fillRect(0, 0, x2 + width, y2 + height)
this.restoreStyles(element, ignoredStyles)
}
render(_2) {}
}
MaskElement.ignoreStyles = ['mask', 'transform', 'clip-path']
var noop$1 = () => {}
class ClipPathElement extends Element$3 {
constructor() {
super(...arguments)
this.type = 'clipPath'
}
apply(ctx) {
var { document: document2 } = this
var contextProto = Reflect.getPrototypeOf(ctx)
var { beginPath, closePath } = ctx
if (contextProto) {
contextProto.beginPath = noop$1
contextProto.closePath = noop$1
}
Reflect.apply(beginPath, ctx, [])
this.children.forEach((child) => {
if (typeof child.path === 'undefined') {
return
}
var transform3 =
typeof child.elementTransform !== 'undefined'
? child.elementTransform()
: null
if (!transform3) {
transform3 = Transform.fromElement(document2, child)
}
if (transform3) {
transform3.apply(ctx)
}
child.path(ctx)
if (contextProto) {
contextProto.closePath = closePath
}
if (transform3) {
transform3.unapply(ctx)
}
})
Reflect.apply(closePath, ctx, [])
ctx.clip()
if (contextProto) {
contextProto.beginPath = beginPath
contextProto.closePath = closePath
}
}
render(_2) {}
}
class FilterElement extends Element$3 {
constructor() {
super(...arguments)
this.type = 'filter'
}
apply(ctx, element) {
var { document: document2, children } = this
var boundingBox = element.getBoundingBox(ctx)
if (!boundingBox) {
return
}
var px2 = 0
var py = 0
children.forEach((child) => {
var efd = child.extraFilterDistance || 0
px2 = Math.max(px2, efd)
py = Math.max(py, efd)
})
var width = Math.floor(boundingBox.width)
var height = Math.floor(boundingBox.height)
var tmpCanvasWidth = width + 2 * px2
var tmpCanvasHeight = height + 2 * py
if (tmpCanvasWidth < 1 || tmpCanvasHeight < 1) {
return
}
var x2 = Math.floor(boundingBox.x)
var y2 = Math.floor(boundingBox.y)
var ignoredStyles = this.removeStyles(element, FilterElement.ignoreStyles)
var tmpCanvas = document2.createCanvas(tmpCanvasWidth, tmpCanvasHeight)
var tmpCtx = tmpCanvas.getContext('2d')
document2.screen.setDefaults(tmpCtx)
tmpCtx.translate(-x2 + px2, -y2 + py)
element.render(tmpCtx)
children.forEach((child) => {
if (typeof child.apply === 'function') {
child.apply(tmpCtx, 0, 0, tmpCanvasWidth, tmpCanvasHeight)
}
})
ctx.drawImage(
tmpCanvas,
0,
0,
tmpCanvasWidth,
tmpCanvasHeight,
x2 - px2,
y2 - py,
tmpCanvasWidth,
tmpCanvasHeight
)
this.restoreStyles(element, ignoredStyles)
}
render(_2) {}
}
FilterElement.ignoreStyles = ['filter', 'transform', 'clip-path']
class FeDropShadowElement extends Element$3 {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes)
this.type = 'feDropShadow'
this.addStylesFromStyleDefinition()
}
apply(_2, _x, _y, _width, _height) {}
}
class FeMorphologyElement extends Element$3 {
constructor() {
super(...arguments)
this.type = 'feMorphology'
}
apply(_2, _x, _y, _width, _height) {}
}
class FeCompositeElement extends Element$3 {
constructor() {
super(...arguments)
this.type = 'feComposite'
}
apply(_2, _x, _y, _width, _height) {}
}
class FeGaussianBlurElement extends Element$3 {
constructor(document2, node2, captureTextNodes) {
super(document2, node2, captureTextNodes)
this.type = 'feGaussianBlur'
this.blurRadius = Math.floor(this.getAttribute('stdDeviation').getNumber())
this.extraFilterDistance = this.blurRadius
}
apply(ctx, x2, y2, width, height) {
var { document: document2, blurRadius } = this
var body = document2.window ? document2.window.document.body : null
var canvas = ctx.canvas
canvas.id = document2.getUniqueId()
if (body) {
canvas.style.display = 'none'
body.appendChild(canvas)
}
processCanvasRGBA(canvas, x2, y2, width, height, blurRadius)
if (body) {
body.removeChild(canvas)
}
}
}
class TitleElement extends Element$3 {
constructor() {
super(...arguments)
this.type = 'title'
}
}
class DescElement extends Element$3 {
constructor() {
super(...arguments)
this.type = 'desc'
}
}
var elements = {
svg: SVGElement,
rect: RectElement,
circle: CircleElement,
ellipse: EllipseElement,
line: LineElement,
polyline: PolylineElement,
polygon: PolygonElement,
path: PathElement,
pattern: PatternElement,
marker: MarkerElement,
defs: DefsElement,
linearGradient: LinearGradientElement,
radialGradient: RadialGradientElement,
stop: StopElement,
animate: AnimateElement,
animateColor: AnimateColorElement,
animateTransform: AnimateTransformElement,
font: FontElement,
'font-face': FontFaceElement,
'missing-glyph': MissingGlyphElement,
glyph: GlyphElement,
text: TextElement,
tspan: TSpanElement,
tref: TRefElement,
a: AElement,
textPath: TextPathElement,
image: ImageElement,
g: GElement,
symbol: SymbolElement,
style: StyleElement,
use: UseElement,
mask: MaskElement,
clipPath: ClipPathElement,
filter: FilterElement,
feDropShadow: FeDropShadowElement,
feMorphology: FeMorphologyElement,
feComposite: FeCompositeElement,
feColorMatrix: FeColorMatrixElement,
feGaussianBlur: FeGaussianBlurElement,
title: TitleElement,
desc: DescElement,
}
function ownKeys$1(object4, enumerableOnly) {
var keys3 = Object.keys(object4)
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object4)
if (enumerableOnly) {
symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object4, sym).enumerable
})
}
keys3.push.apply(keys3, symbols)
}
return keys3
}
function _objectSpread$1(target2) {
for (var i2 = 1; i2 < arguments.length; i2++) {
var source2 = arguments[i2] != null ? arguments[i2] : {}
if (i2 % 2) {
ownKeys$1(Object(source2), true).forEach(function (key2) {
_defineProperty$2(target2, key2, source2[key2])
})
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(
target2,
Object.getOwnPropertyDescriptors(source2)
)
} else {
ownKeys$1(Object(source2)).forEach(function (key2) {
Object.defineProperty(
target2,
key2,
Object.getOwnPropertyDescriptor(source2, key2)
)
})
}
}
return target2
}
function createCanvas$1(width, height) {
var canvas = document.createElement('canvas')
canvas.width = width
canvas.height = height
return canvas
}
function createImage(_x) {
return _createImage.apply(this, arguments)
}
function _createImage() {
_createImage = _asyncToGenerator(function* (src) {
var anonymousCrossOrigin =
arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false
var image2 = document.createElement('img')
if (anonymousCrossOrigin) {
image2.crossOrigin = 'Anonymous'
}
return new Promise((resolve2, reject2) => {
image2.onload = () => {
resolve2(image2)
}
image2.onerror = (_event2, _source, _lineno, _colno, error2) => {
reject2(error2)
}
image2.src = src
})
})
return _createImage.apply(this, arguments)
}
class Document$1 {
constructor(canvg) {
var {
rootEmSize = 12,
emSize = 12,
createCanvas: createCanvas2 = Document$1.createCanvas,
createImage: createImage2 = Document$1.createImage,
anonymousCrossOrigin,
} = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}
this.canvg = canvg
this.definitions = {}
this.styles = {}
this.stylesSpecificity = {}
this.images = []
this.fonts = []
this.emSizeStack = []
this.uniqueId = 0
this.screen = canvg.screen
this.rootEmSize = rootEmSize
this.emSize = emSize
this.createCanvas = createCanvas2
this.createImage = this.bindCreateImage(createImage2, anonymousCrossOrigin)
this.screen.wait(this.isImagesLoaded.bind(this))
this.screen.wait(this.isFontsLoaded.bind(this))
}
bindCreateImage(createImage2, anonymousCrossOrigin) {
if (typeof anonymousCrossOrigin === 'boolean') {
return (source2, forceAnonymousCrossOrigin) =>
createImage2(
source2,
typeof forceAnonymousCrossOrigin === 'boolean'
? forceAnonymousCrossOrigin
: anonymousCrossOrigin
)
}
return createImage2
}
get window() {
return this.screen.window
}
get fetch() {
return this.screen.fetch
}
get ctx() {
return this.screen.ctx
}
get emSize() {
var { emSizeStack } = this
return emSizeStack[emSizeStack.length - 1]
}
set emSize(value2) {
var { emSizeStack } = this
emSizeStack.push(value2)
}
popEmSize() {
var { emSizeStack } = this
emSizeStack.pop()
}
getUniqueId() {
return 'canvg'.concat(++this.uniqueId)
}
isImagesLoaded() {
return this.images.every((_2) => _2.loaded)
}
isFontsLoaded() {
return this.fonts.every((_2) => _2.loaded)
}
createDocumentElement(document2) {
var documentElement = this.createElement(document2.documentElement)
documentElement.root = true
documentElement.addStylesFromStyleDefinition()
this.documentElement = documentElement
return documentElement
}
createElement(node2) {
var elementType = node2.nodeName.replace(/^[^:]+:/, '')
var ElementType = Document$1.elementTypes[elementType]
if (typeof ElementType !== 'undefined') {
return new ElementType(this, node2)
}
return new UnknownElement(this, node2)
}
createTextNode(node2) {
return new TextNode(this, node2)
}
setViewBox(config2) {
this.screen.setViewBox(
_objectSpread$1(
{
document: this,
},
config2
)
)
}
}
Document$1.createCanvas = createCanvas$1
Document$1.createImage = createImage
Document$1.elementTypes = elements
function ownKeys$3(object4, enumerableOnly) {
var keys3 = Object.keys(object4)
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object4)
if (enumerableOnly) {
symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object4, sym).enumerable
})
}
keys3.push.apply(keys3, symbols)
}
return keys3
}
function _objectSpread(target2) {
for (var i2 = 1; i2 < arguments.length; i2++) {
var source2 = arguments[i2] != null ? arguments[i2] : {}
if (i2 % 2) {
ownKeys$3(Object(source2), true).forEach(function (key2) {
_defineProperty$2(target2, key2, source2[key2])
})
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(
target2,
Object.getOwnPropertyDescriptors(source2)
)
} else {
ownKeys$3(Object(source2)).forEach(function (key2) {
Object.defineProperty(
target2,
key2,
Object.getOwnPropertyDescriptor(source2, key2)
)
})
}
}
return target2
}
class Canvg {
constructor(ctx, svg2) {
var options2 =
arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}
this.parser = new Parser(options2)
this.screen = new Screen(ctx, options2)
this.options = options2
var document2 = new Document$1(this, options2)
var documentElement = document2.createDocumentElement(svg2)
this.document = document2
this.documentElement = documentElement
}
static from(ctx, svg2) {
var _arguments = arguments
return _asyncToGenerator(function* () {
var options2 =
_arguments.length > 2 && _arguments[2] !== void 0 ? _arguments[2] : {}
var parser2 = new Parser(options2)
var svgDocument = yield parser2.parse(svg2)
return new Canvg(ctx, svgDocument, options2)
})()
}
static fromString(ctx, svg2) {
var options2 =
arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}
var parser2 = new Parser(options2)
var svgDocument = parser2.parseFromString(svg2)
return new Canvg(ctx, svgDocument, options2)
}
fork(ctx, svg2) {
var options2 =
arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}
return Canvg.from(
ctx,
svg2,
_objectSpread(_objectSpread({}, this.options), options2)
)
}
forkString(ctx, svg2) {
var options2 =
arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}
return Canvg.fromString(
ctx,
svg2,
_objectSpread(_objectSpread({}, this.options), options2)
)
}
ready() {
return this.screen.ready()
}
isReady() {
return this.screen.isReady()
}
render() {
var _arguments2 = arguments,
_this = this
return _asyncToGenerator(function* () {
var options2 =
_arguments2.length > 0 && _arguments2[0] !== void 0
? _arguments2[0]
: {}
_this.start(
_objectSpread(
{
enableRedraw: true,
ignoreAnimation: true,
ignoreMouse: true,
},
options2
)
)
yield _this.ready()
_this.stop()
})()
}
start() {
var options2 =
arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}
var { documentElement, screen, options: baseOptions } = this
screen.start(
documentElement,
_objectSpread(
_objectSpread(
{
enableRedraw: true,
},
baseOptions
),
options2
)
)
}
stop() {
this.screen.stop()
}
resize(width) {
var height =
arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : width
var preserveAspectRatio =
arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false
this.documentElement.resize(width, height, preserveAspectRatio)
}
}
var index_es = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
AElement,
AnimateColorElement,
AnimateElement,
AnimateTransformElement,
BoundingBox,
CB1,
CB2,
CB3,
CB4,
Canvg,
CircleElement,
ClipPathElement,
DefsElement,
DescElement,
Document: Document$1,
Element: Element$3,
EllipseElement,
FeColorMatrixElement,
FeCompositeElement,
FeDropShadowElement,
FeGaussianBlurElement,
FeMorphologyElement,
FilterElement,
Font,
FontElement,
FontFaceElement,
GElement,
GlyphElement,
GradientElement,
ImageElement,
LineElement,
LinearGradientElement,
MarkerElement,
MaskElement,
Matrix,
MissingGlyphElement,
Mouse,
PSEUDO_ZERO,
Parser,
PathElement,
PathParser,
PatternElement,
Point: Point$2,
PolygonElement,
PolylineElement,
Property,
QB1,
QB2,
QB3,
RadialGradientElement,
RectElement,
RenderedElement,
Rotate,
SVGElement,
SVGFontLoader,
Scale: Scale$2,
Screen,
Skew,
SkewX,
SkewY,
StopElement,
StyleElement,
SymbolElement,
TRefElement,
TSpanElement,
TextElement,
TextPathElement,
TitleElement,
Transform,
Translate,
UnknownElement,
UseElement,
ViewPort,
compressSpaces,
default: Canvg,
getSelectorSpecificity,
normalizeAttributeName,
normalizeColor: normalizeColor$1,
parseExternalUrl,
presets: index$m,
toNumbers,
trimLeft,
trimRight,
vectorMagnitude,
vectorsAngle,
vectorsRatio,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var A_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const config$W = {
category: 'test',
name: '\u94FE\u63A5',
icon: 'icon-kongzhianniu',
permission: true,
}
const _sfc_main$6P = /* @__PURE__ */ defineComponent({
props: {
props: null,
href: null,
text: null,
},
setup(__props2) {
const props2 = __props2
const props_2 = reactive(props2.props)
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', null, [
withDirectives(
createElementVNode(
'input',
{
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (unref(props_2).text = $event)),
placeholder: 'text',
},
null,
512
),
[[vModelText, unref(props_2).text]]
),
withDirectives(
createElementVNode(
'input',
{
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) => (unref(props_2).href = $event)),
placeholder: 'href',
},
null,
512
),
[[vModelText, unref(props_2).href]]
),
])
)
}
},
})
var A_settings = /* @__PURE__ */ _export_sfc(_sfc_main$6P, [
['__scopeId', 'data-v-11eed704'],
])
var __glob_2_0$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$W,
default: A_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _hoisted_1$5L = ['href']
const _sfc_main$6O = /* @__PURE__ */ defineComponent({
props: {
href: null,
text: null,
},
setup(__props2) {
const props2 = __props2
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'a',
{
href: props2.href,
target: '_blank',
},
toDisplayString$1(props2.text || '\u94FE\u63A5'),
9,
_hoisted_1$5L
)
)
}
},
})
var __glob_2_1$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$6O,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ConfirmBoxSetting_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$5K = /* @__PURE__ */ createTextVNode(
' \u5355\u51FB\u65F6\u51FA\u73B0\u63D0\u793A\u5BF9\u8BDD\u6846 '
)
const _sfc_main$6N = /* @__PURE__ */ defineComponent({
props: {
confirmBoxConfig: null,
},
setup(__props2) {
const $props2 = __props2
const props2 = reactive($props2)
const confirmBoxConfig = props2.confirmBoxConfig || {
check: false,
message: '',
}
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_input = resolveComponent('el-input')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
_component_el_checkbox,
{
class: 'cms-el-checkbox-font-size-12 regular',
modelValue: unref(confirmBoxConfig).check,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(confirmBoxConfig).check = $event)),
},
{
default: withCtx(() => [_hoisted_1$5K]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
placeholder: '\u8BF7\u8F93\u5165\u5185\u5BB9',
modelValue: unref(confirmBoxConfig).message,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(confirmBoxConfig).message = $event)),
disabled: !unref(confirmBoxConfig).check,
},
null,
8,
['modelValue', 'disabled']
),
])
)
}
},
})
var ConfirmBoxSetting = /* @__PURE__ */ _export_sfc(_sfc_main$6N, [
['__scopeId', 'data-v-5b95e860'],
])
var ConfirmBoxSetting$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ConfirmBoxSetting,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const config$V = {
category: 'base',
name: '\u6309\u94AE',
icon: 'icon-kongzhianniu',
styleConfig: {
lineHeight: false,
},
permission: true,
}
const _sfc_main$6M = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
node2.setDefaultProps({
confirmBoxConfig: {
check: false,
message: '',
},
})
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
SettingItem$1,
{ title: '\u529F\u80FD' },
{
default: withCtx(() => [
createVNode$1(
ConfirmBoxSetting,
{
confirmBoxConfig: unref(node2).props.confirmBoxConfig,
},
null,
8,
['confirmBoxConfig']
),
]),
_: 1,
}
)
)
}
},
})
var __glob_2_2$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$V,
default: _sfc_main$6M,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Button_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$5J = ['contenteditable', 't']
const _sfc_main$6L = /* @__PURE__ */ defineComponent({
props: {
node: null,
text: null,
editingClickEnabled: { type: Boolean },
confirmBoxConfig: null,
},
emits: ['click', 'update'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const props2 = reactive($props2.node?.props || {})
props2.text = props2.text || '\u6309\u94AE'
const el2 = ref()
let contenteditable = ref(false)
const onClick = async () => {
if (running) {
click2()
return
}
if (props2?.editingClickEnabled && !contenteditable.value) {
editingClick()
}
}
const click2 = async () => {
const fn2 = () => {
emit2('click')
}
const {
check: check2 = false,
message: message2 = '',
elMessageBoxOptions = {},
} = props2?.confirmBoxConfig || {}
if (!check2) {
fn2()
return
}
if (await confirm(Language$1.t(message2), elMessageBoxOptions)) {
fn2()
}
}
let clickTimer
const editingClick = async () => {
clearTimeout(clickTimer)
clickTimer = setTimeout(async function () {
click2()
}, 350)
}
const onDblclick = () => {
if (!Language$1.isOriginal()) return
if (running) return
contenteditable.value = true
clearTimeout(clickTimer)
setTimeout(() => {
if (!el2.value) return
const selection = getSelection()
const range3 = new Range()
range3.selectNodeContents(el2.value)
selection?.removeAllRanges()
selection?.addRange(range3)
}, 0)
}
const onBlur = (e2) => {
if (!Language$1.isOriginal()) return
emit2('update', { text: e2.target?.innerText })
contenteditable.value = false
}
const collectText2 = () => {
if (!props2.confirmBoxConfig?.message) return
t(props2.confirmBoxConfig.message)
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'button',
{
ref_key: 'el',
ref: el2,
onClick,
onDblclick,
onBlur,
contenteditable: contenteditable.value,
t: collectText2(),
},
toDisplayString$1(_ctx.t(unref(props2).text)),
41,
_hoisted_1$5J
)
)
}
},
})
var Button = /* @__PURE__ */ _export_sfc(_sfc_main$6L, [
['__scopeId', 'data-v-e57f2792'],
])
var __glob_2_3$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Button,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const themeList = [
['#00AB86', '#586EF2', '#FFB0E3', '#9E9CFF', '#58CFFF', '#F4DF58'],
['#3791FB', '#2CDB9F', '#FCCA71', '#FA998C', '#7DD8D1', '#8A8AFB'],
['#5E6EE0', '#33BCA0', '#8AC2FB', '#FDC25D', '#4E8FE9', '#F47C7C'],
['#4484F3', '#1FBD9F', '#F18274', '#6A69E1', '#F5B94C', '#48D7FB'],
['#1F7BE4', '#1F7BE4', '#1F7BE4', '#1F7BE4', '#1F7BE4', '#1F7BE4'],
['#26C4D6', '#26C4D6', '#26C4D6', '#26C4D6', '#26C4D6', '#26C4D6'],
['#2146FF', '#246CE8', '#4499EF', '#2DB9EE', '#31DEF2', '#34FFEA'],
]
const modeForm = {
date: [
{
name: '\u8BA1\u6570',
value: 4,
},
{
name: '\u53BB\u91CD\u8BA1\u6570',
value: 5,
},
],
number: [
{
name: '\u6C42\u548C',
value: 0,
},
{
name: '\u5E73\u5747\u503C',
value: 1,
},
{
name: '\u6700\u5C0F\u503C',
value: 2,
},
{
name: '\u6700\u5927\u503C',
value: 3,
},
{
name: '\u8BA1\u6570',
value: 4,
},
{
name: '\u53BB\u91CD\u8BA1\u6570',
value: 5,
},
],
}
const dataFormatList = [
{
name: '\u81EA\u52A8',
value: 0,
},
{
name: '\u6574\u6570',
value: 1,
},
{
name: '\u4FDD\u75591\u4F4D\u5C0F\u6570',
value: 2,
},
{
name: '\u4FDD\u75592\u4F4D\u5C0F\u6570',
value: 3,
},
{
name: '\u767E\u5206\u6BD4\u4FDD\u75591\u4F4D\u5C0F\u6570',
value: 4,
},
{
name: '\u767E\u5206\u6BD4\u4FDD\u75592\u4F4D\u5C0F\u6570',
value: 5,
},
]
const sortList = [
{
name: '\u9ED8\u8BA4',
value: 0,
},
{
name: '\u5347\u5E8F',
value: 1,
},
{
name: '\u964D\u5E8F',
value: 2,
},
]
const defaultyAxis = {
yAxisName: 'Y1',
position: 'left',
title: '',
showTitle: true,
customLable: false,
unit: '',
offset: 0,
fontFamily: '',
fontSize: 12,
color: '#80A8D5',
nameLocation: 'end',
min: void 0,
max: void 0,
inverse: false,
splitLine: {
show: true,
lineStyle: {
color: '#A4B3D8',
width: 1,
type: 'dashed',
},
},
axisLabel: {
show: true,
fontFamily: '',
fontSize: 12,
color: '#9AA0B1',
},
axisTick: {
show: true,
interval: 'auto',
internalNum: 0,
lineStyle: {
color: '#A4B3D8',
width: 1,
type: 'solid',
},
},
axisLine: {
show: true,
lineStyle: {
type: 'solid',
width: 1,
color: '#A4B3D8',
},
},
}
const defaultProps$8 = {
dataConfig: {
dataSetId: '',
dataSetType: '',
useCache: false,
dataType: 0,
isVariableName: false,
dimissions: [
{
id: 'dim',
fieldName: 'dim',
fieldType: 1,
aliasName: '',
sort: 0,
align: 0,
mode: 0,
dataFormat: 0,
timeFormat: '',
},
],
indexes: [
{
id: 'ind1',
fieldName: 'ind1',
fieldType: 1,
aliasName: '',
sort: 0,
align: 0,
mode: 0,
dataFormat: 0,
yAxisIndex: 0,
},
{
id: 'ind2',
fieldName: 'ind2',
fieldType: 1,
aliasName: '',
sort: 0,
align: 0,
mode: 0,
dataFormat: 0,
yAxisIndex: 0,
},
],
audoRefresh: false,
audoRefreshTime: 5,
editingLimit: 1e3,
runningLimit: 1e4,
queryControllerId: '',
},
chartConfig: {
title: {
text: '',
show: true,
},
label: {
show: false,
list: ['dimissions', 'percentage'],
fontFamily: '',
fontSize: 12,
color: '#666666',
position: 'outside',
displayType: 'adaptive',
},
legend: {
show: true,
fontFamily: '',
fontSize: 12,
color: '#B1B1B1',
position: 'top',
itemColorList: themeList[0],
width: 'auto',
},
toolbox: {
show: true,
exportImage: {
show: false,
},
exportExcel: {
show: false,
},
},
grid: {
left: 10,
right: 10,
top: 40,
bottom: 10,
},
markLine: [],
dataZoom: {
show: false,
inside: {
x: true,
y: true,
},
slider: {
x: false,
y: false,
xInit: 1,
startValue: 0,
},
select: {
x: false,
y: false,
},
},
indexesConditions: [],
},
axisConfig: {
xAxis: {
position: 'middle',
title: '',
unit: '',
fontFamily: '',
fontSize: 12,
color: '#80A8D5',
axisLabel: {
show: true,
fontFamily: '',
fontSize: 12,
color: '#9AA0B1',
displayType: 'auto',
rotate: 0,
interval: 0,
},
axisLine: {
show: true,
lineStyle: {
type: 'solid',
width: 1,
color: '#A4B3D8',
},
},
axisTick: {
show: true,
lineStyle: {
type: 'solid',
width: 1,
color: '#A4B3D8',
},
},
},
yAxis: [defaultyAxis],
},
barConfig: {
borderRadius: void 0,
borderWidth: void 0,
barGap: void 0,
barCategoryGap: void 0,
showBackground: false,
},
lineConfig: {
width: 1,
type: 'solid',
unConnectEmpty: false,
line: 'line',
symbol: {
show: true,
size: 4,
type: 'circle',
},
dataSymbol: {
show: true,
size: 8,
type: 'circle',
},
},
pieConfig: {
dataConfig: {
editingLimit: 100,
runningLimit: 100,
},
displayType: 'all',
total: false,
unit: '',
radius: [0, 100],
circularBackground: false,
labelLine: {
show: false,
length: 10,
length2: 20,
},
},
ringConfig: {
radius: [80, 100],
},
roseConfig: {
radius: [0, 100],
},
tableConfig: {
tableOption: {
tableType: 'concise',
tableColumnList: [],
columnOptionList: [],
adjust: 'adaptive',
},
tableHeaderOption: {
showTableHeader: true,
showColumnWidthAdjustList: false,
},
tableHeaderStyle: {
backgroundColor: '#b2d8ff',
fontFamily: '',
fontSize: '',
color: '#131313',
textAlign: 'center',
},
tableBodyOption: {
showSerialNumber: false,
mergeSimilarCell: false,
wrap: false,
pageType: 'page',
pageSize: 10,
srollCycle: 1,
srollRow: 0,
scrollSpeed: 1,
},
tableBodyStyle: {
backgroundColor: '',
fontFamily: '',
fontSize: '',
color: '',
textAlign: 'center',
borderStyle: 'solid',
borderWidth: '1px',
borderColor: '#ced0d8',
'--oddRowColor': '',
'--oddRowBackgroundColor': '#F0F5F9',
'--evenRowColor': '',
'--evenRowBackgroundColor': '#F8F9FB',
},
totalRowOption: {
show: false,
totalRowName: '\u5408\u8BA1',
location: 'bottom',
totalRange: 'paging',
totalBackgroundColor: '#EBEBEB',
fontFamily: '',
fontSize: '',
color: '',
},
indexesConditions: [],
dimissionsConditions: [],
},
cardConfig: {
showMainLabel: true,
mainLabelStyle: {
fontFamily: '',
fontSize: '',
color: '',
},
mainDataStyle: {
fontFamily: '',
fontSize: '',
color: '#00AB86',
location: '',
},
showDevLabel: true,
devLabelStyle: {
fontFamily: '',
fontSize: '',
color: '',
},
devDataStyle: {
fontFamily: '',
fontSize: '',
color: '',
location: '',
},
textAlign: '',
flexDirection: '',
indexesConditions: [],
},
}
var DataFeildConfig_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$3i = (n2) => (
pushScopeId('data-v-1e091154'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$5I = { class: 'field-edit-content' }
const _hoisted_2$4M = { class: 'table-first-column-header flex' }
const _hoisted_3$4k = /* @__PURE__ */ _withScopeId$3i(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u7EF4\u5EA6', -1)
)
const _hoisted_4$3N = { class: 'table-first-column-default' }
const _hoisted_5$3r = {
key: 0,
class: 'iconType icon-number',
}
const _hoisted_6$34 = {
key: 1,
class: 'iconType icon-text',
}
const _hoisted_7$2J = {
key: 2,
class: 'iconType icon-time',
}
const _hoisted_8$2r = { class: 'text' }
const _hoisted_9$2f = { class: 'table-first-column-header flex' }
const _hoisted_10$21 = /* @__PURE__ */ _withScopeId$3i(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u6307\u6807', -1)
)
const _hoisted_11$1T = { class: 'table-first-column-default' }
const _hoisted_12$1N = {
key: 0,
class: 'iconType icon-number',
}
const _hoisted_13$1B = {
key: 1,
class: 'iconType icon-text',
}
const _hoisted_14$1p = {
key: 2,
class: 'iconType icon-time',
}
const _hoisted_15$1k = { class: 'text' }
const _hoisted_16$1i = { class: 'el-dialog__footer' }
const _sfc_main$6K = /* @__PURE__ */ defineComponent({
props: {
node: null,
visible: { type: Boolean },
dataType: null,
},
emits: ['callback'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const node2 = reactive($props2.node)
const props2 = reactive(node2.props)
const dimissions = ref([])
const indexes = ref([])
const visible = ref(false)
const chartNode = ref(null)
const modeFormNumber = computed(() => {
if (!$props2.dataType) {
return modeForm.number
} else {
return modeForm.number.filter((item2) => item2.value !== 5)
}
})
const modeFormDate = computed(() => {
if (!$props2.dataType) {
return modeForm.date
} else {
return modeForm.date.filter((item2) => item2.value !== 5)
}
})
const disableSortRule = computed(() => {
if ($props2.dataType === DATA_TYPE.VARIABLE) {
return true
} else if ($props2.dataType === DATA_TYPE.HISTORY) {
return props2.dataConfig.isVariableName
} else {
return false
}
})
const disableAggregateType = computed(() => {
if ($props2.dataType === DATA_TYPE.VARIABLE) {
return true
} else if ($props2.dataType === DATA_TYPE.HISTORY) {
return !props2.dataConfig.isVariableName
} else {
return false
}
})
const tableCollapse = (target2) => {
const bodyDom = document.querySelector(
`.${target2} .el-table__body-wrapper`
)
const iconDom = document.querySelector(`.${target2} .collapse-btn`)
if (!bodyDom || !iconDom) return
const _dom = bodyDom
const _iconDom = iconDom
if (_dom.dataset.animationing === 'true') return
const rect = _dom.getBoundingClientRect()
if (rect.height > 0) {
const oldheight = rect.height + 'px'
_dom.dataset.oldheight = rect.height + 'px'
_dom.style.height = oldheight
setTimeout(() => {
_dom.style.height = '0px'
_iconDom.style.transform = 'rotate(-90deg)'
}, 100)
} else {
const height = _dom.dataset.oldheight || ''
_dom.style.height = height
_iconDom.style.transform = 'rotate(0deg)'
}
_dom.dataset.animationing = 'true'
setTimeout(() => {
_dom.dataset.animationing = 'false'
}, 1200)
}
const validatorData = () => {
let validator2 = true
const rulesFun = (field2) => {
if (!field2.aliasName) return true
if (Number(field2.aliasName[0])) {
ElMessage.error(
'\u522B\u540D\u4E0D\u80FD\u662F\u6570\u5B57\u5F00\u5934'
)
return false
}
if (!/^[a-zA-Z0-9_\u4e00-\u9fa5]+$/.test(field2.aliasName)) {
ElMessage.error(
'\u522B\u540D\u4E0D\u80FD\u662F\u7279\u6B8A\u5B57\u7B26'
)
return false
}
for (let i2 = 0, iLen = dimissions.value.length; i2 < iLen; i2++) {
const item2 = dimissions.value[i2]
if ([field2].includes(item2)) continue
if (field2.aliasName === item2.aliasName) {
ElMessage.error(
'\u5B57\u6BB5\u522B\u540D\u4E0D\u5141\u8BB8\u91CD\u590D'
)
return false
}
}
for (let i2 = 0, iLen = indexes.value.length; i2 < iLen; i2++) {
const item2 = indexes.value[i2]
if ([field2].includes(item2)) continue
if (field2.aliasName === item2.aliasName) {
ElMessage.error(
'\u5B57\u6BB5\u522B\u540D\u4E0D\u5141\u8BB8\u91CD\u590D'
)
return false
}
}
return true
}
const list2 = [...dimissions.value, ...indexes.value]
for (let i2 = 0, iLen = list2.length; i2 < iLen; i2++) {
const item2 = list2[i2]
if (!rulesFun(item2)) {
validator2 = false
break
}
}
return validator2
}
const submit = (state2) => {
if (state2 === 'close') {
emit2('callback', state2)
return
}
if (validatorData()) {
props2.dataConfig.dimissions = lodash$2.exports.cloneDeep(
dimissions.value
)
props2.dataConfig.indexes = lodash$2.exports.cloneDeep(indexes.value)
emit2('callback', state2)
}
}
watch$1(
() => $props2.visible,
(newVal) => {
chartNode.value = widgetStore[node2.is || '']
visible.value = newVal
dimissions.value = lodash$2.exports.cloneDeep(
props2.dataConfig.dimissions
)
indexes.value = lodash$2.exports.cloneDeep(props2.dataConfig.indexes)
}
)
return (_ctx, _cache) => {
const _component_el_table_column = resolveComponent('el-table-column')
const _component_el_input = resolveComponent('el-input')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_table = resolveComponent('el-table')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
modelValue: visible.value,
'onUpdate:modelValue':
_cache[4] || (_cache[4] = ($event) => (visible.value = $event)),
width: '900px',
title: '\u5B57\u6BB5\u7F16\u8F91',
'close-on-click-modal': false,
'close-on-press-escape': false,
'custom-class': 'cms-el-dialog field-edit',
onClose: _cache[5] || (_cache[5] = ($event) => submit('close')),
'append-to-body': '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$5I, [
!chartNode.value || chartNode.value.is !== 'ChartCard'
? (openBlock(),
createBlock(
_component_el_table,
{
key: 0,
data: dimissions.value,
style: { width: '100%' },
class: 'dimissions-table',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_table_column,
{
prop: 'fieldName',
label: '\u7EF4\u5EA6',
align: 'center',
},
{
header: withCtx((scope) => [
createElementVNode('div', _hoisted_2$4M, [
createElementVNode('i', {
class: 'collapse-btn iconfont icon-xiala2',
onClick:
_cache[0] ||
(_cache[0] = ($event) =>
tableCollapse('dimissions-table')),
}),
_hoisted_3$4k,
]),
]),
default: withCtx((scope) => [
createElementVNode('div', _hoisted_4$3N, [
scope.row.fieldType === 1
? (openBlock(),
createElementBlock('i', _hoisted_5$3r))
: createCommentVNode('', true),
scope.row.fieldType === 2
? (openBlock(),
createElementBlock('i', _hoisted_6$34))
: createCommentVNode('', true),
scope.row.fieldType === 3
? (openBlock(),
createElementBlock('i', _hoisted_7$2J))
: createCommentVNode('', true),
createElementVNode(
'span',
_hoisted_8$2r,
toDisplayString$1(scope.row.fieldName),
1
),
]),
]),
_: 1,
}
),
createVNode$1(
_component_el_table_column,
{
prop: 'aliasName',
label: '\u5B57\u6BB5\u522B\u540D',
align: 'center',
},
{
default: withCtx((scope) => [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
modelValue: scope.row.aliasName,
'onUpdate:modelValue': ($event) =>
(scope.row.aliasName = $event),
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
]),
_: 1,
}
),
createVNode$1(_component_el_table_column, {
prop: '',
label: '\u805A\u5408\u65B9\u5F0F',
align: 'center',
}),
createVNode$1(
_component_el_table_column,
{
prop: '',
label: '\u6570\u636E\u683C\u5F0F',
align: 'center',
},
{
default: withCtx(({ row }) => [
withDirectives(
createVNode$1(
_component_el_select,
{
placeholder: '',
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
modelValue: row.timeFormat,
'onUpdate:modelValue': ($event) =>
(row.timeFormat = $event),
'suffix-icon': unref(caretTop),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(dateFormatList),
(item2, i2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: i2,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
[
'modelValue',
'onUpdate:modelValue',
'suffix-icon',
]
),
[[vShow, row.fieldType == 3]]
),
]),
_: 1,
}
),
createVNode$1(
_component_el_table_column,
{
prop: 'sort',
label: '\u9ED8\u8BA4\u6392\u5E8F\u89C4\u5219',
align: 'left',
width: '276',
},
{
default: withCtx((scope) => [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
modelValue: scope.row.sort,
'onUpdate:modelValue': ($event) =>
(scope.row.sort = $event),
'suffix-icon': unref(caretTop),
disabled: disableSortRule.value,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(sortList),
(item2, i2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: i2,
label: item2.name,
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
[
'modelValue',
'onUpdate:modelValue',
'suffix-icon',
'disabled',
]
),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['data']
))
: createCommentVNode('', true),
createVNode$1(
_component_el_table,
{
data: indexes.value,
style: { width: '100%' },
class: 'indexes-table',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_table_column,
{
prop: 'fieldName',
label: '\u6307\u6807',
align: 'center',
},
{
header: withCtx((scope) => [
createElementVNode('div', _hoisted_9$2f, [
createElementVNode('i', {
class: 'collapse-btn iconfont icon-xiala2',
onClick:
_cache[1] ||
(_cache[1] = ($event) =>
tableCollapse('indexes-table')),
}),
_hoisted_10$21,
]),
]),
default: withCtx((scope) => [
createElementVNode('div', _hoisted_11$1T, [
scope.row.fieldType === 1
? (openBlock(),
createElementBlock('i', _hoisted_12$1N))
: createCommentVNode('', true),
scope.row.fieldType === 2
? (openBlock(),
createElementBlock('i', _hoisted_13$1B))
: createCommentVNode('', true),
scope.row.fieldType === 3
? (openBlock(),
createElementBlock('i', _hoisted_14$1p))
: createCommentVNode('', true),
createElementVNode(
'span',
_hoisted_15$1k,
toDisplayString$1(scope.row.fieldName),
1
),
]),
]),
_: 1,
}
),
createVNode$1(
_component_el_table_column,
{
prop: 'aliasName',
label: '\u5B57\u6BB5\u522B\u540D',
align: 'center',
},
{
default: withCtx((scope) => [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
modelValue: scope.row.aliasName,
'onUpdate:modelValue': ($event) =>
(scope.row.aliasName = $event),
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
]),
_: 1,
}
),
createVNode$1(
_component_el_table_column,
{
prop: 'mode',
label: '\u805A\u5408\u65B9\u5F0F',
align: 'center',
},
{
default: withCtx((scope) => [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
modelValue: scope.row.mode,
'onUpdate:modelValue': ($event) =>
(scope.row.mode = $event),
'suffix-icon': unref(caretTop),
disabled: disableAggregateType.value,
},
{
default: withCtx(() => [
scope.row.fieldType === 1
? (openBlock(true),
createElementBlock(
Fragment,
{ key: 0 },
renderList(
modeFormNumber.value,
(option2, i2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: i2,
label: option2.name,
value: option2.value,
},
null,
8,
['label', 'value']
)
)
}
),
128
))
: (openBlock(true),
createElementBlock(
Fragment,
{ key: 1 },
renderList(
modeFormDate.value,
(option2, i2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: i2,
label: option2.name,
value: option2.value,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
[
'modelValue',
'onUpdate:modelValue',
'suffix-icon',
'disabled',
]
),
]),
_: 1,
}
),
createVNode$1(
_component_el_table_column,
{
prop: 'dataFormat',
label: '\u6570\u636E\u683C\u5F0F',
align: 'center',
},
{
default: withCtx((scope) => [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
modelValue: scope.row.dataFormat,
'onUpdate:modelValue': ($event) =>
(scope.row.dataFormat = $event),
'suffix-icon': unref(caretTop),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(dataFormatList),
(item2, i2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: i2,
label: item2.name,
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
[
'modelValue',
'onUpdate:modelValue',
'suffix-icon',
]
),
]),
_: 1,
}
),
createVNode$1(
_component_el_table_column,
{
prop: 'sort',
label: '\u9ED8\u8BA4\u6392\u5E8F\u89C4\u5219',
align: 'center',
},
{
default: withCtx((scope) => [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
modelValue: scope.row.sort,
'onUpdate:modelValue': ($event) =>
(scope.row.sort = $event),
'suffix-icon': unref(caretTop),
disabled: disableSortRule.value,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(sortList), (item2, i2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: i2,
label: item2.name,
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 2,
},
1032,
[
'modelValue',
'onUpdate:modelValue',
'suffix-icon',
'disabled',
]
),
]),
_: 1,
}
),
createVNode$1(
_component_el_table_column,
{
prop: 'sort',
label: '\u53C2\u8003\u8F74',
align: 'center',
},
{
default: withCtx((scope) => [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
modelValue: scope.row.yAxisIndex,
'onUpdate:modelValue': ($event) =>
(scope.row.yAxisIndex = $event),
'suffix-icon': unref(caretTop),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(props2).axisConfig.yAxis,
(item2, i2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: i2,
label: item2.yAxisName,
value: i2,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
[
'modelValue',
'onUpdate:modelValue',
'suffix-icon',
]
),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['data']
),
]),
createElementVNode('div', _hoisted_16$1i, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick:
_cache[2] || (_cache[2] = ($event) => submit('close')),
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick:
_cache[3] || (_cache[3] = ($event) => submit('confirm')),
},
'\u786E\u8BA4'
),
]),
]),
_: 1,
},
8,
['modelValue']
)
)
}
},
})
var DataFeildConfig = /* @__PURE__ */ _export_sfc(_sfc_main$6K, [
['__scopeId', 'data-v-1e091154'],
])
var DataFeildConfig$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: DataFeildConfig,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
/**!
* Sortable 1.15.0
* @author RubaXa
* @author owenm
* @license MIT
*/
function ownKeys(object4, enumerableOnly) {
var keys3 = Object.keys(object4)
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object4)
if (enumerableOnly) {
symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object4, sym).enumerable
})
}
keys3.push.apply(keys3, symbols)
}
return keys3
}
function _objectSpread2(target2) {
for (var i2 = 1; i2 < arguments.length; i2++) {
var source2 = arguments[i2] != null ? arguments[i2] : {}
if (i2 % 2) {
ownKeys(Object(source2), true).forEach(function (key2) {
_defineProperty$1(target2, key2, source2[key2])
})
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(
target2,
Object.getOwnPropertyDescriptors(source2)
)
} else {
ownKeys(Object(source2)).forEach(function (key2) {
Object.defineProperty(
target2,
key2,
Object.getOwnPropertyDescriptor(source2, key2)
)
})
}
}
return target2
}
function _typeof(obj) {
'@babel/helpers - typeof'
if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {
_typeof = function (obj2) {
return typeof obj2
}
} else {
_typeof = function (obj2) {
return obj2 &&
typeof Symbol === 'function' &&
obj2.constructor === Symbol &&
obj2 !== Symbol.prototype
? 'symbol'
: typeof obj2
}
}
return _typeof(obj)
}
function _defineProperty$1(obj, key2, value2) {
if (key2 in obj) {
Object.defineProperty(obj, key2, {
value: value2,
enumerable: true,
configurable: true,
writable: true,
})
} else {
obj[key2] = value2
}
return obj
}
function _extends() {
_extends =
Object.assign ||
function (target2) {
for (var i2 = 1; i2 < arguments.length; i2++) {
var source2 = arguments[i2]
for (var key2 in source2) {
if (Object.prototype.hasOwnProperty.call(source2, key2)) {
target2[key2] = source2[key2]
}
}
}
return target2
}
return _extends.apply(this, arguments)
}
function _objectWithoutPropertiesLoose(source2, excluded) {
if (source2 == null) return {}
var target2 = {}
var sourceKeys = Object.keys(source2)
var key2, i2
for (i2 = 0; i2 < sourceKeys.length; i2++) {
key2 = sourceKeys[i2]
if (excluded.indexOf(key2) >= 0) continue
target2[key2] = source2[key2]
}
return target2
}
function _objectWithoutProperties(source2, excluded) {
if (source2 == null) return {}
var target2 = _objectWithoutPropertiesLoose(source2, excluded)
var key2, i2
if (Object.getOwnPropertySymbols) {
var sourceSymbolKeys = Object.getOwnPropertySymbols(source2)
for (i2 = 0; i2 < sourceSymbolKeys.length; i2++) {
key2 = sourceSymbolKeys[i2]
if (excluded.indexOf(key2) >= 0) continue
if (!Object.prototype.propertyIsEnumerable.call(source2, key2)) continue
target2[key2] = source2[key2]
}
}
return target2
}
var version$3 = '1.15.0'
function userAgent(pattern4) {
if (typeof window !== 'undefined' && window.navigator) {
return !!(/* @__PURE__ */ navigator.userAgent.match(pattern4))
}
}
var IE11OrLess = userAgent(
/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i
)
var Edge = userAgent(/Edge/i)
var FireFox = userAgent(/firefox/i)
var Safari =
userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i)
var IOS = userAgent(/iP(ad|od|hone)/i)
var ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i)
var captureMode = {
capture: false,
passive: false,
}
function on(el2, event, fn2) {
el2.addEventListener(event, fn2, !IE11OrLess && captureMode)
}
function off(el2, event, fn2) {
el2.removeEventListener(event, fn2, !IE11OrLess && captureMode)
}
function matches(el2, selector2) {
if (!selector2) return
selector2[0] === '>' && (selector2 = selector2.substring(1))
if (el2) {
try {
if (el2.matches) {
return el2.matches(selector2)
} else if (el2.msMatchesSelector) {
return el2.msMatchesSelector(selector2)
} else if (el2.webkitMatchesSelector) {
return el2.webkitMatchesSelector(selector2)
}
} catch (_2) {
return false
}
}
return false
}
function getParentOrHost(el2) {
return el2.host && el2 !== document && el2.host.nodeType
? el2.host
: el2.parentNode
}
function closest(el2, selector2, ctx, includeCTX) {
if (el2) {
ctx = ctx || document
do {
if (
(selector2 != null &&
(selector2[0] === '>'
? el2.parentNode === ctx && matches(el2, selector2)
: matches(el2, selector2))) ||
(includeCTX && el2 === ctx)
) {
return el2
}
if (el2 === ctx) break
} while ((el2 = getParentOrHost(el2)))
}
return null
}
var R_SPACE = /\s+/g
function toggleClass(el2, name2, state2) {
if (el2 && name2) {
if (el2.classList) {
el2.classList[state2 ? 'add' : 'remove'](name2)
} else {
var className = (' ' + el2.className + ' ')
.replace(R_SPACE, ' ')
.replace(' ' + name2 + ' ', ' ')
el2.className = (className + (state2 ? ' ' + name2 : '')).replace(
R_SPACE,
' '
)
}
}
}
function css(el2, prop, val2) {
var style2 = el2 && el2.style
if (style2) {
if (val2 === void 0) {
if (document.defaultView && document.defaultView.getComputedStyle) {
val2 = document.defaultView.getComputedStyle(el2, '')
} else if (el2.currentStyle) {
val2 = el2.currentStyle
}
return prop === void 0 ? val2 : val2[prop]
} else {
if (!(prop in style2) && prop.indexOf('webkit') === -1) {
prop = '-webkit-' + prop
}
style2[prop] = val2 + (typeof val2 === 'string' ? '' : 'px')
}
}
}
function matrix$1(el2, selfOnly) {
var appliedTransforms = ''
if (typeof el2 === 'string') {
appliedTransforms = el2
} else {
do {
var transform3 = css(el2, 'transform')
if (transform3 && transform3 !== 'none') {
appliedTransforms = transform3 + ' ' + appliedTransforms
}
} while (!selfOnly && (el2 = el2.parentNode))
}
var matrixFn =
window.DOMMatrix ||
window.WebKitCSSMatrix ||
window.CSSMatrix ||
window.MSCSSMatrix
return matrixFn && new matrixFn(appliedTransforms)
}
function find$1(ctx, tagName, iterator2) {
if (ctx) {
var list2 = ctx.getElementsByTagName(tagName),
i2 = 0,
n2 = list2.length
if (iterator2) {
for (; i2 < n2; i2++) {
iterator2(list2[i2], i2)
}
}
return list2
}
return []
}
function getWindowScrollingElement() {
var scrollingElement = document.scrollingElement
if (scrollingElement) {
return scrollingElement
} else {
return document.documentElement
}
}
function getRect(
el2,
relativeToContainingBlock,
relativeToNonStaticParent,
undoScale,
container
) {
if (!el2.getBoundingClientRect && el2 !== window) return
var elRect, top2, left2, bottom2, right2, height, width
if (el2 !== window && el2.parentNode && el2 !== getWindowScrollingElement()) {
elRect = el2.getBoundingClientRect()
top2 = elRect.top
left2 = elRect.left
bottom2 = elRect.bottom
right2 = elRect.right
height = elRect.height
width = elRect.width
} else {
top2 = 0
left2 = 0
bottom2 = window.innerHeight
right2 = window.innerWidth
height = window.innerHeight
width = window.innerWidth
}
if (
(relativeToContainingBlock || relativeToNonStaticParent) &&
el2 !== window
) {
container = container || el2.parentNode
if (!IE11OrLess) {
do {
if (
container &&
container.getBoundingClientRect &&
(css(container, 'transform') !== 'none' ||
(relativeToNonStaticParent &&
css(container, 'position') !== 'static'))
) {
var containerRect = container.getBoundingClientRect()
top2 -=
containerRect.top + parseInt(css(container, 'border-top-width'))
left2 -=
containerRect.left + parseInt(css(container, 'border-left-width'))
bottom2 = top2 + elRect.height
right2 = left2 + elRect.width
break
}
} while ((container = container.parentNode))
}
}
if (undoScale && el2 !== window) {
var elMatrix = matrix$1(container || el2),
scaleX = elMatrix && elMatrix.a,
scaleY = elMatrix && elMatrix.d
if (elMatrix) {
top2 /= scaleY
left2 /= scaleX
width /= scaleX
height /= scaleY
bottom2 = top2 + height
right2 = left2 + width
}
}
return {
top: top2,
left: left2,
bottom: bottom2,
right: right2,
width,
height,
}
}
function isScrolledPast(el2, elSide, parentSide) {
var parent2 = getParentAutoScrollElement(el2, true),
elSideVal = getRect(el2)[elSide]
while (parent2) {
var parentSideVal = getRect(parent2)[parentSide],
visible = void 0
if (parentSide === 'top' || parentSide === 'left') {
visible = elSideVal >= parentSideVal
} else {
visible = elSideVal <= parentSideVal
}
if (!visible) return parent2
if (parent2 === getWindowScrollingElement()) break
parent2 = getParentAutoScrollElement(parent2, false)
}
return false
}
function getChild(el2, childNum, options2, includeDragEl) {
var currentChild = 0,
i2 = 0,
children = el2.children
while (i2 < children.length) {
if (
children[i2].style.display !== 'none' &&
children[i2] !== Sortable.ghost &&
(includeDragEl || children[i2] !== Sortable.dragged) &&
closest(children[i2], options2.draggable, el2, false)
) {
if (currentChild === childNum) {
return children[i2]
}
currentChild++
}
i2++
}
return null
}
function lastChild(el2, selector2) {
var last2 = el2.lastElementChild
while (
last2 &&
(last2 === Sortable.ghost ||
css(last2, 'display') === 'none' ||
(selector2 && !matches(last2, selector2)))
) {
last2 = last2.previousElementSibling
}
return last2 || null
}
function index$l(el2, selector2) {
var index2 = 0
if (!el2 || !el2.parentNode) {
return -1
}
while ((el2 = el2.previousElementSibling)) {
if (
el2.nodeName.toUpperCase() !== 'TEMPLATE' &&
el2 !== Sortable.clone &&
(!selector2 || matches(el2, selector2))
) {
index2++
}
}
return index2
}
function getRelativeScrollOffset(el2) {
var offsetLeft = 0,
offsetTop = 0,
winScroller = getWindowScrollingElement()
if (el2) {
do {
var elMatrix = matrix$1(el2),
scaleX = elMatrix.a,
scaleY = elMatrix.d
offsetLeft += el2.scrollLeft * scaleX
offsetTop += el2.scrollTop * scaleY
} while (el2 !== winScroller && (el2 = el2.parentNode))
}
return [offsetLeft, offsetTop]
}
function indexOfObject(arr, obj) {
for (var i2 in arr) {
if (!arr.hasOwnProperty(i2)) continue
for (var key2 in obj) {
if (obj.hasOwnProperty(key2) && obj[key2] === arr[i2][key2])
return Number(i2)
}
}
return -1
}
function getParentAutoScrollElement(el2, includeSelf) {
if (!el2 || !el2.getBoundingClientRect) return getWindowScrollingElement()
var elem = el2
var gotSelf = false
do {
if (
elem.clientWidth < elem.scrollWidth ||
elem.clientHeight < elem.scrollHeight
) {
var elemCSS = css(elem)
if (
(elem.clientWidth < elem.scrollWidth &&
(elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll')) ||
(elem.clientHeight < elem.scrollHeight &&
(elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll'))
) {
if (!elem.getBoundingClientRect || elem === document.body)
return getWindowScrollingElement()
if (gotSelf || includeSelf) return elem
gotSelf = true
}
}
} while ((elem = elem.parentNode))
return getWindowScrollingElement()
}
function extend$1(dst, src) {
if (dst && src) {
for (var key2 in src) {
if (src.hasOwnProperty(key2)) {
dst[key2] = src[key2]
}
}
}
return dst
}
function isRectEqual(rect1, rect2) {
return (
Math.round(rect1.top) === Math.round(rect2.top) &&
Math.round(rect1.left) === Math.round(rect2.left) &&
Math.round(rect1.height) === Math.round(rect2.height) &&
Math.round(rect1.width) === Math.round(rect2.width)
)
}
var _throttleTimeout
function throttle$1(callback, ms) {
return function () {
if (!_throttleTimeout) {
var args = arguments,
_this = this
if (args.length === 1) {
callback.call(_this, args[0])
} else {
callback.apply(_this, args)
}
_throttleTimeout = setTimeout(function () {
_throttleTimeout = void 0
}, ms)
}
}
}
function cancelThrottle() {
clearTimeout(_throttleTimeout)
_throttleTimeout = void 0
}
function scrollBy(el2, x2, y2) {
el2.scrollLeft += x2
el2.scrollTop += y2
}
function clone$5(el2) {
var Polymer = window.Polymer
var $2 = window.jQuery || window.Zepto
if (Polymer && Polymer.dom) {
return Polymer.dom(el2).cloneNode(true)
} else if ($2) {
return $2(el2).clone(true)[0]
} else {
return el2.cloneNode(true)
}
}
var expando = 'Sortable' + new Date().getTime()
function AnimationStateManager() {
var animationStates = [],
animationCallbackId
return {
captureAnimationState: function captureAnimationState() {
animationStates = []
if (!this.options.animation) return
var children = [].slice.call(this.el.children)
children.forEach(function (child) {
if (css(child, 'display') === 'none' || child === Sortable.ghost) return
animationStates.push({
target: child,
rect: getRect(child),
})
var fromRect = _objectSpread2(
{},
animationStates[animationStates.length - 1].rect
)
if (child.thisAnimationDuration) {
var childMatrix = matrix$1(child, true)
if (childMatrix) {
fromRect.top -= childMatrix.f
fromRect.left -= childMatrix.e
}
}
child.fromRect = fromRect
})
},
addAnimationState: function addAnimationState(state2) {
animationStates.push(state2)
},
removeAnimationState: function removeAnimationState(target2) {
animationStates.splice(
indexOfObject(animationStates, {
target: target2,
}),
1
)
},
animateAll: function animateAll(callback) {
var _this = this
if (!this.options.animation) {
clearTimeout(animationCallbackId)
if (typeof callback === 'function') callback()
return
}
var animating = false,
animationTime = 0
animationStates.forEach(function (state2) {
var time2 = 0,
target2 = state2.target,
fromRect = target2.fromRect,
toRect = getRect(target2),
prevFromRect = target2.prevFromRect,
prevToRect = target2.prevToRect,
animatingRect = state2.rect,
targetMatrix = matrix$1(target2, true)
if (targetMatrix) {
toRect.top -= targetMatrix.f
toRect.left -= targetMatrix.e
}
target2.toRect = toRect
if (target2.thisAnimationDuration) {
if (
isRectEqual(prevFromRect, toRect) &&
!isRectEqual(fromRect, toRect) &&
(animatingRect.top - toRect.top) /
(animatingRect.left - toRect.left) ===
(fromRect.top - toRect.top) / (fromRect.left - toRect.left)
) {
time2 = calculateRealTime(
animatingRect,
prevFromRect,
prevToRect,
_this.options
)
}
}
if (!isRectEqual(toRect, fromRect)) {
target2.prevFromRect = fromRect
target2.prevToRect = toRect
if (!time2) {
time2 = _this.options.animation
}
_this.animate(target2, animatingRect, toRect, time2)
}
if (time2) {
animating = true
animationTime = Math.max(animationTime, time2)
clearTimeout(target2.animationResetTimer)
target2.animationResetTimer = setTimeout(function () {
target2.animationTime = 0
target2.prevFromRect = null
target2.fromRect = null
target2.prevToRect = null
target2.thisAnimationDuration = null
}, time2)
target2.thisAnimationDuration = time2
}
})
clearTimeout(animationCallbackId)
if (!animating) {
if (typeof callback === 'function') callback()
} else {
animationCallbackId = setTimeout(function () {
if (typeof callback === 'function') callback()
}, animationTime)
}
animationStates = []
},
animate: function animate(target2, currentRect, toRect, duration2) {
if (duration2) {
css(target2, 'transition', '')
css(target2, 'transform', '')
var elMatrix = matrix$1(this.el),
scaleX = elMatrix && elMatrix.a,
scaleY = elMatrix && elMatrix.d,
translateX = (currentRect.left - toRect.left) / (scaleX || 1),
translateY = (currentRect.top - toRect.top) / (scaleY || 1)
target2.animatingX = !!translateX
target2.animatingY = !!translateY
css(
target2,
'transform',
'translate3d(' + translateX + 'px,' + translateY + 'px,0)'
)
this.forRepaintDummy = repaint(target2)
css(
target2,
'transition',
'transform ' +
duration2 +
'ms' +
(this.options.easing ? ' ' + this.options.easing : '')
)
css(target2, 'transform', 'translate3d(0,0,0)')
typeof target2.animated === 'number' && clearTimeout(target2.animated)
target2.animated = setTimeout(function () {
css(target2, 'transition', '')
css(target2, 'transform', '')
target2.animated = false
target2.animatingX = false
target2.animatingY = false
}, duration2)
}
},
}
}
function repaint(target2) {
return target2.offsetWidth
}
function calculateRealTime(animatingRect, fromRect, toRect, options2) {
return (
(Math.sqrt(
Math.pow(fromRect.top - animatingRect.top, 2) +
Math.pow(fromRect.left - animatingRect.left, 2)
) /
Math.sqrt(
Math.pow(fromRect.top - toRect.top, 2) +
Math.pow(fromRect.left - toRect.left, 2)
)) *
options2.animation
)
}
var plugins = []
var defaults$1 = {
initializeByDefault: true,
}
var PluginManager = {
mount: function mount(plugin) {
for (var option2 in defaults$1) {
if (defaults$1.hasOwnProperty(option2) && !(option2 in plugin)) {
plugin[option2] = defaults$1[option2]
}
}
plugins.forEach(function (p2) {
if (p2.pluginName === plugin.pluginName) {
throw 'Sortable: Cannot mount plugin '.concat(
plugin.pluginName,
' more than once'
)
}
})
plugins.push(plugin)
},
pluginEvent: function pluginEvent2(eventName, sortable, evt) {
var _this = this
this.eventCanceled = false
evt.cancel = function () {
_this.eventCanceled = true
}
var eventNameGlobal = eventName + 'Global'
plugins.forEach(function (plugin) {
if (!sortable[plugin.pluginName]) return
if (sortable[plugin.pluginName][eventNameGlobal]) {
sortable[plugin.pluginName][eventNameGlobal](
_objectSpread2(
{
sortable,
},
evt
)
)
}
if (
sortable.options[plugin.pluginName] &&
sortable[plugin.pluginName][eventName]
) {
sortable[plugin.pluginName][eventName](
_objectSpread2(
{
sortable,
},
evt
)
)
}
})
},
initializePlugins: function initializePlugins(
sortable,
el2,
defaults2,
options2
) {
plugins.forEach(function (plugin) {
var pluginName = plugin.pluginName
if (!sortable.options[pluginName] && !plugin.initializeByDefault) return
var initialized = new plugin(sortable, el2, sortable.options)
initialized.sortable = sortable
initialized.options = sortable.options
sortable[pluginName] = initialized
_extends(defaults2, initialized.defaults)
})
for (var option2 in sortable.options) {
if (!sortable.options.hasOwnProperty(option2)) continue
var modified = this.modifyOption(
sortable,
option2,
sortable.options[option2]
)
if (typeof modified !== 'undefined') {
sortable.options[option2] = modified
}
}
},
getEventProperties: function getEventProperties(name2, sortable) {
var eventProperties = {}
plugins.forEach(function (plugin) {
if (typeof plugin.eventProperties !== 'function') return
_extends(
eventProperties,
plugin.eventProperties.call(sortable[plugin.pluginName], name2)
)
})
return eventProperties
},
modifyOption: function modifyOption(sortable, name2, value2) {
var modifiedValue
plugins.forEach(function (plugin) {
if (!sortable[plugin.pluginName]) return
if (
plugin.optionListeners &&
typeof plugin.optionListeners[name2] === 'function'
) {
modifiedValue = plugin.optionListeners[name2].call(
sortable[plugin.pluginName],
value2
)
}
})
return modifiedValue
},
}
function dispatchEvent$1(_ref2) {
var sortable = _ref2.sortable,
rootEl2 = _ref2.rootEl,
name2 = _ref2.name,
targetEl = _ref2.targetEl,
cloneEl2 = _ref2.cloneEl,
toEl = _ref2.toEl,
fromEl = _ref2.fromEl,
oldIndex2 = _ref2.oldIndex,
newIndex2 = _ref2.newIndex,
oldDraggableIndex2 = _ref2.oldDraggableIndex,
newDraggableIndex2 = _ref2.newDraggableIndex,
originalEvent = _ref2.originalEvent,
putSortable2 = _ref2.putSortable,
extraEventProperties = _ref2.extraEventProperties
sortable = sortable || (rootEl2 && rootEl2[expando])
if (!sortable) return
var evt,
options2 = sortable.options,
onName = 'on' + name2.charAt(0).toUpperCase() + name2.substr(1)
if (window.CustomEvent && !IE11OrLess && !Edge) {
evt = new CustomEvent(name2, {
bubbles: true,
cancelable: true,
})
} else {
evt = document.createEvent('Event')
evt.initEvent(name2, true, true)
}
evt.to = toEl || rootEl2
evt.from = fromEl || rootEl2
evt.item = targetEl || rootEl2
evt.clone = cloneEl2
evt.oldIndex = oldIndex2
evt.newIndex = newIndex2
evt.oldDraggableIndex = oldDraggableIndex2
evt.newDraggableIndex = newDraggableIndex2
evt.originalEvent = originalEvent
evt.pullMode = putSortable2 ? putSortable2.lastPutMode : void 0
var allEventProperties = _objectSpread2(
_objectSpread2({}, extraEventProperties),
PluginManager.getEventProperties(name2, sortable)
)
for (var option2 in allEventProperties) {
evt[option2] = allEventProperties[option2]
}
if (rootEl2) {
rootEl2.dispatchEvent(evt)
}
if (options2[onName]) {
options2[onName].call(sortable, evt)
}
}
var _excluded = ['evt']
var pluginEvent = function pluginEvent3(eventName, sortable) {
var _ref2 =
arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {},
originalEvent = _ref2.evt,
data2 = _objectWithoutProperties(_ref2, _excluded)
PluginManager.pluginEvent.bind(Sortable)(
eventName,
sortable,
_objectSpread2(
{
dragEl,
parentEl,
ghostEl,
rootEl,
nextEl,
lastDownEl,
cloneEl,
cloneHidden,
dragStarted: moved,
putSortable,
activeSortable: Sortable.active,
originalEvent,
oldIndex,
oldDraggableIndex,
newIndex,
newDraggableIndex,
hideGhostForTarget: _hideGhostForTarget,
unhideGhostForTarget: _unhideGhostForTarget,
cloneNowHidden: function cloneNowHidden() {
cloneHidden = true
},
cloneNowShown: function cloneNowShown() {
cloneHidden = false
},
dispatchSortableEvent: function dispatchSortableEvent(name2) {
_dispatchEvent({
sortable,
name: name2,
originalEvent,
})
},
},
data2
)
)
}
function _dispatchEvent(info) {
dispatchEvent$1(
_objectSpread2(
{
putSortable,
cloneEl,
targetEl: dragEl,
rootEl,
oldIndex,
oldDraggableIndex,
newIndex,
newDraggableIndex,
},
info
)
)
}
var dragEl,
parentEl,
ghostEl,
rootEl,
nextEl,
lastDownEl,
cloneEl,
cloneHidden,
oldIndex,
newIndex,
oldDraggableIndex,
newDraggableIndex,
activeGroup,
putSortable,
awaitingDragStarted = false,
ignoreNextClick = false,
sortables = [],
tapEvt,
touchEvt,
lastDx,
lastDy,
tapDistanceLeft,
tapDistanceTop,
moved,
lastTarget,
lastDirection,
pastFirstInvertThresh = false,
isCircumstantialInvert = false,
targetMoveDistance,
ghostRelativeParent,
ghostRelativeParentInitialScroll = [],
_silent = false,
savedInputChecked = []
var documentExists = typeof document !== 'undefined',
PositionGhostAbsolutely = IOS,
CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',
supportDraggable =
documentExists &&
!ChromeForAndroid &&
!IOS &&
'draggable' in document.createElement('div'),
supportCssPointerEvents = (function () {
if (!documentExists) return
if (IE11OrLess) {
return false
}
var el2 = document.createElement('x')
el2.style.cssText = 'pointer-events:auto'
return el2.style.pointerEvents === 'auto'
})(),
_detectDirection = function _detectDirection2(el2, options2) {
var elCSS = css(el2),
elWidth =
parseInt(elCSS.width) -
parseInt(elCSS.paddingLeft) -
parseInt(elCSS.paddingRight) -
parseInt(elCSS.borderLeftWidth) -
parseInt(elCSS.borderRightWidth),
child1 = getChild(el2, 0, options2),
child2 = getChild(el2, 1, options2),
firstChildCSS = child1 && css(child1),
secondChildCSS = child2 && css(child2),
firstChildWidth =
firstChildCSS &&
parseInt(firstChildCSS.marginLeft) +
parseInt(firstChildCSS.marginRight) +
getRect(child1).width,
secondChildWidth =
secondChildCSS &&
parseInt(secondChildCSS.marginLeft) +
parseInt(secondChildCSS.marginRight) +
getRect(child2).width
if (elCSS.display === 'flex') {
return elCSS.flexDirection === 'column' ||
elCSS.flexDirection === 'column-reverse'
? 'vertical'
: 'horizontal'
}
if (elCSS.display === 'grid') {
return elCSS.gridTemplateColumns.split(' ').length <= 1
? 'vertical'
: 'horizontal'
}
if (child1 && firstChildCSS['float'] && firstChildCSS['float'] !== 'none') {
var touchingSideChild2 =
firstChildCSS['float'] === 'left' ? 'left' : 'right'
return child2 &&
(secondChildCSS.clear === 'both' ||
secondChildCSS.clear === touchingSideChild2)
? 'vertical'
: 'horizontal'
}
return child1 &&
(firstChildCSS.display === 'block' ||
firstChildCSS.display === 'flex' ||
firstChildCSS.display === 'table' ||
firstChildCSS.display === 'grid' ||
(firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none') ||
(child2 &&
elCSS[CSSFloatProperty] === 'none' &&
firstChildWidth + secondChildWidth > elWidth))
? 'vertical'
: 'horizontal'
},
_dragElInRowColumn = function _dragElInRowColumn2(
dragRect,
targetRect,
vertical
) {
var dragElS1Opp = vertical ? dragRect.left : dragRect.top,
dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,
dragElOppLength = vertical ? dragRect.width : dragRect.height,
targetS1Opp = vertical ? targetRect.left : targetRect.top,
targetS2Opp = vertical ? targetRect.right : targetRect.bottom,
targetOppLength = vertical ? targetRect.width : targetRect.height
return (
dragElS1Opp === targetS1Opp ||
dragElS2Opp === targetS2Opp ||
dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2
)
},
_detectNearestEmptySortable = function _detectNearestEmptySortable2(x2, y2) {
var ret
sortables.some(function (sortable) {
var threshold = sortable[expando].options.emptyInsertThreshold
if (!threshold || lastChild(sortable)) return
var rect = getRect(sortable),
insideHorizontally =
x2 >= rect.left - threshold && x2 <= rect.right + threshold,
insideVertically =
y2 >= rect.top - threshold && y2 <= rect.bottom + threshold
if (insideHorizontally && insideVertically) {
return (ret = sortable)
}
})
return ret
},
_prepareGroup = function _prepareGroup2(options2) {
function toFn(value2, pull) {
return function (to, from, dragEl2, evt) {
var sameGroup =
to.options.group.name &&
from.options.group.name &&
to.options.group.name === from.options.group.name
if (value2 == null && (pull || sameGroup)) {
return true
} else if (value2 == null || value2 === false) {
return false
} else if (pull && value2 === 'clone') {
return value2
} else if (typeof value2 === 'function') {
return toFn(value2(to, from, dragEl2, evt), pull)(
to,
from,
dragEl2,
evt
)
} else {
var otherGroup = (pull ? to : from).options.group.name
return (
value2 === true ||
(typeof value2 === 'string' && value2 === otherGroup) ||
(value2.join && value2.indexOf(otherGroup) > -1)
)
}
}
}
var group = {}
var originalGroup = options2.group
if (!originalGroup || _typeof(originalGroup) != 'object') {
originalGroup = {
name: originalGroup,
}
}
group.name = originalGroup.name
group.checkPull = toFn(originalGroup.pull, true)
group.checkPut = toFn(originalGroup.put)
group.revertClone = originalGroup.revertClone
options2.group = group
},
_hideGhostForTarget = function _hideGhostForTarget2() {
if (!supportCssPointerEvents && ghostEl) {
css(ghostEl, 'display', 'none')
}
},
_unhideGhostForTarget = function _unhideGhostForTarget2() {
if (!supportCssPointerEvents && ghostEl) {
css(ghostEl, 'display', '')
}
}
if (documentExists && !ChromeForAndroid) {
document.addEventListener(
'click',
function (evt) {
if (ignoreNextClick) {
evt.preventDefault()
evt.stopPropagation && evt.stopPropagation()
evt.stopImmediatePropagation && evt.stopImmediatePropagation()
ignoreNextClick = false
return false
}
},
true
)
}
var nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent2(
evt
) {
if (dragEl) {
evt = evt.touches ? evt.touches[0] : evt
var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY)
if (nearest) {
var event = {}
for (var i2 in evt) {
if (evt.hasOwnProperty(i2)) {
event[i2] = evt[i2]
}
}
event.target = event.rootEl = nearest
event.preventDefault = void 0
event.stopPropagation = void 0
nearest[expando]._onDragOver(event)
}
}
}
var _checkOutsideTargetEl = function _checkOutsideTargetEl2(evt) {
if (dragEl) {
dragEl.parentNode[expando]._isOutsideThisEl(evt.target)
}
}
function Sortable(el2, options2) {
if (!(el2 && el2.nodeType && el2.nodeType === 1)) {
throw 'Sortable: `el` must be an HTMLElement, not '.concat(
{}.toString.call(el2)
)
}
this.el = el2
this.options = options2 = _extends({}, options2)
el2[expando] = this
var defaults2 = {
group: null,
sort: true,
disabled: false,
store: null,
handle: null,
draggable: /^[uo]l$/i.test(el2.nodeName) ? '>li' : '>*',
swapThreshold: 1,
invertSwap: false,
invertedSwapThreshold: null,
removeCloneOnHide: true,
direction: function direction2() {
return _detectDirection(el2, this.options)
},
ghostClass: 'sortable-ghost',
chosenClass: 'sortable-chosen',
dragClass: 'sortable-drag',
ignore: 'a, img',
filter: null,
preventOnFilter: true,
animation: 0,
easing: null,
setData: function setData(dataTransfer, dragEl2) {
dataTransfer.setData('Text', dragEl2.textContent)
},
dropBubble: false,
dragoverBubble: false,
dataIdAttr: 'data-id',
delay: 0,
delayOnTouchOnly: false,
touchStartThreshold:
(Number.parseInt ? Number : window).parseInt(
window.devicePixelRatio,
10
) || 1,
forceFallback: false,
fallbackClass: 'sortable-fallback',
fallbackOnBody: false,
fallbackTolerance: 0,
fallbackOffset: {
x: 0,
y: 0,
},
supportPointer:
Sortable.supportPointer !== false && 'PointerEvent' in window && !Safari,
emptyInsertThreshold: 5,
}
PluginManager.initializePlugins(this, el2, defaults2)
for (var name2 in defaults2) {
!(name2 in options2) && (options2[name2] = defaults2[name2])
}
_prepareGroup(options2)
for (var fn2 in this) {
if (fn2.charAt(0) === '_' && typeof this[fn2] === 'function') {
this[fn2] = this[fn2].bind(this)
}
}
this.nativeDraggable = options2.forceFallback ? false : supportDraggable
if (this.nativeDraggable) {
this.options.touchStartThreshold = 1
}
if (options2.supportPointer) {
on(el2, 'pointerdown', this._onTapStart)
} else {
on(el2, 'mousedown', this._onTapStart)
on(el2, 'touchstart', this._onTapStart)
}
if (this.nativeDraggable) {
on(el2, 'dragover', this)
on(el2, 'dragenter', this)
}
sortables.push(this.el)
options2.store &&
options2.store.get &&
this.sort(options2.store.get(this) || [])
_extends(this, AnimationStateManager())
}
Sortable.prototype = {
constructor: Sortable,
_isOutsideThisEl: function _isOutsideThisEl(target2) {
if (!this.el.contains(target2) && target2 !== this.el) {
lastTarget = null
}
},
_getDirection: function _getDirection(evt, target2) {
return typeof this.options.direction === 'function'
? this.options.direction.call(this, evt, target2, dragEl)
: this.options.direction
},
_onTapStart: function _onTapStart(evt) {
if (!evt.cancelable) return
var _this = this,
el2 = this.el,
options2 = this.options,
preventOnFilter = options2.preventOnFilter,
type4 = evt.type,
touch =
(evt.touches && evt.touches[0]) ||
(evt.pointerType && evt.pointerType === 'touch' && evt),
target2 = (touch || evt).target,
originalTarget =
(evt.target.shadowRoot &&
((evt.path && evt.path[0]) ||
(evt.composedPath && evt.composedPath()[0]))) ||
target2,
filter2 = options2.filter
_saveInputCheckedState(el2)
if (dragEl) {
return
}
if (
(/mousedown|pointerdown/.test(type4) && evt.button !== 0) ||
options2.disabled
) {
return
}
if (originalTarget.isContentEditable) {
return
}
if (
!this.nativeDraggable &&
Safari &&
target2 &&
target2.tagName.toUpperCase() === 'SELECT'
) {
return
}
target2 = closest(target2, options2.draggable, el2, false)
if (target2 && target2.animated) {
return
}
if (lastDownEl === target2) {
return
}
oldIndex = index$l(target2)
oldDraggableIndex = index$l(target2, options2.draggable)
if (typeof filter2 === 'function') {
if (filter2.call(this, evt, target2, this)) {
_dispatchEvent({
sortable: _this,
rootEl: originalTarget,
name: 'filter',
targetEl: target2,
toEl: el2,
fromEl: el2,
})
pluginEvent('filter', _this, {
evt,
})
preventOnFilter && evt.cancelable && evt.preventDefault()
return
}
} else if (filter2) {
filter2 = filter2.split(',').some(function (criteria) {
criteria = closest(originalTarget, criteria.trim(), el2, false)
if (criteria) {
_dispatchEvent({
sortable: _this,
rootEl: criteria,
name: 'filter',
targetEl: target2,
fromEl: el2,
toEl: el2,
})
pluginEvent('filter', _this, {
evt,
})
return true
}
})
if (filter2) {
preventOnFilter && evt.cancelable && evt.preventDefault()
return
}
}
if (
options2.handle &&
!closest(originalTarget, options2.handle, el2, false)
) {
return
}
this._prepareDragStart(evt, touch, target2)
},
_prepareDragStart: function _prepareDragStart(evt, touch, target2) {
var _this = this,
el2 = _this.el,
options2 = _this.options,
ownerDocument = el2.ownerDocument,
dragStartFn
if (target2 && !dragEl && target2.parentNode === el2) {
var dragRect = getRect(target2)
rootEl = el2
dragEl = target2
parentEl = dragEl.parentNode
nextEl = dragEl.nextSibling
lastDownEl = target2
activeGroup = options2.group
Sortable.dragged = dragEl
tapEvt = {
target: dragEl,
clientX: (touch || evt).clientX,
clientY: (touch || evt).clientY,
}
tapDistanceLeft = tapEvt.clientX - dragRect.left
tapDistanceTop = tapEvt.clientY - dragRect.top
this._lastX = (touch || evt).clientX
this._lastY = (touch || evt).clientY
dragEl.style['will-change'] = 'all'
dragStartFn = function dragStartFn2() {
pluginEvent('delayEnded', _this, {
evt,
})
if (Sortable.eventCanceled) {
_this._onDrop()
return
}
_this._disableDelayedDragEvents()
if (!FireFox && _this.nativeDraggable) {
dragEl.draggable = true
}
_this._triggerDragStart(evt, touch)
_dispatchEvent({
sortable: _this,
name: 'choose',
originalEvent: evt,
})
toggleClass(dragEl, options2.chosenClass, true)
}
options2.ignore.split(',').forEach(function (criteria) {
find$1(dragEl, criteria.trim(), _disableDraggable)
})
on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent)
on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent)
on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent)
on(ownerDocument, 'mouseup', _this._onDrop)
on(ownerDocument, 'touchend', _this._onDrop)
on(ownerDocument, 'touchcancel', _this._onDrop)
if (FireFox && this.nativeDraggable) {
this.options.touchStartThreshold = 4
dragEl.draggable = true
}
pluginEvent('delayStart', this, {
evt,
})
if (
options2.delay &&
(!options2.delayOnTouchOnly || touch) &&
(!this.nativeDraggable || !(Edge || IE11OrLess))
) {
if (Sortable.eventCanceled) {
this._onDrop()
return
}
on(ownerDocument, 'mouseup', _this._disableDelayedDrag)
on(ownerDocument, 'touchend', _this._disableDelayedDrag)
on(ownerDocument, 'touchcancel', _this._disableDelayedDrag)
on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler)
on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler)
options2.supportPointer &&
on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler)
_this._dragStartTimer = setTimeout(dragStartFn, options2.delay)
} else {
dragStartFn()
}
}
},
_delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(e2) {
var touch = e2.touches ? e2.touches[0] : e2
if (
Math.max(
Math.abs(touch.clientX - this._lastX),
Math.abs(touch.clientY - this._lastY)
) >=
Math.floor(
this.options.touchStartThreshold /
((this.nativeDraggable && window.devicePixelRatio) || 1)
)
) {
this._disableDelayedDrag()
}
},
_disableDelayedDrag: function _disableDelayedDrag() {
dragEl && _disableDraggable(dragEl)
clearTimeout(this._dragStartTimer)
this._disableDelayedDragEvents()
},
_disableDelayedDragEvents: function _disableDelayedDragEvents() {
var ownerDocument = this.el.ownerDocument
off(ownerDocument, 'mouseup', this._disableDelayedDrag)
off(ownerDocument, 'touchend', this._disableDelayedDrag)
off(ownerDocument, 'touchcancel', this._disableDelayedDrag)
off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler)
off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler)
off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler)
},
_triggerDragStart: function _triggerDragStart(evt, touch) {
touch = touch || (evt.pointerType == 'touch' && evt)
if (!this.nativeDraggable || touch) {
if (this.options.supportPointer) {
on(document, 'pointermove', this._onTouchMove)
} else if (touch) {
on(document, 'touchmove', this._onTouchMove)
} else {
on(document, 'mousemove', this._onTouchMove)
}
} else {
on(dragEl, 'dragend', this)
on(rootEl, 'dragstart', this._onDragStart)
}
try {
if (document.selection) {
_nextTick(function () {
document.selection.empty()
})
} else {
window.getSelection().removeAllRanges()
}
} catch (err) {}
},
_dragStarted: function _dragStarted(fallback, evt) {
awaitingDragStarted = false
if (rootEl && dragEl) {
pluginEvent('dragStarted', this, {
evt,
})
if (this.nativeDraggable) {
on(document, 'dragover', _checkOutsideTargetEl)
}
var options2 = this.options
!fallback && toggleClass(dragEl, options2.dragClass, false)
toggleClass(dragEl, options2.ghostClass, true)
Sortable.active = this
fallback && this._appendGhost()
_dispatchEvent({
sortable: this,
name: 'start',
originalEvent: evt,
})
} else {
this._nulling()
}
},
_emulateDragOver: function _emulateDragOver() {
if (touchEvt) {
this._lastX = touchEvt.clientX
this._lastY = touchEvt.clientY
_hideGhostForTarget()
var target2 = document.elementFromPoint(
touchEvt.clientX,
touchEvt.clientY
)
var parent2 = target2
while (target2 && target2.shadowRoot) {
target2 = target2.shadowRoot.elementFromPoint(
touchEvt.clientX,
touchEvt.clientY
)
if (target2 === parent2) break
parent2 = target2
}
dragEl.parentNode[expando]._isOutsideThisEl(target2)
if (parent2) {
do {
if (parent2[expando]) {
var inserted = void 0
inserted = parent2[expando]._onDragOver({
clientX: touchEvt.clientX,
clientY: touchEvt.clientY,
target: target2,
rootEl: parent2,
})
if (inserted && !this.options.dragoverBubble) {
break
}
}
target2 = parent2
} while ((parent2 = parent2.parentNode))
}
_unhideGhostForTarget()
}
},
_onTouchMove: function _onTouchMove(evt) {
if (tapEvt) {
var options2 = this.options,
fallbackTolerance = options2.fallbackTolerance,
fallbackOffset = options2.fallbackOffset,
touch = evt.touches ? evt.touches[0] : evt,
ghostMatrix = ghostEl && matrix$1(ghostEl, true),
scaleX = ghostEl && ghostMatrix && ghostMatrix.a,
scaleY = ghostEl && ghostMatrix && ghostMatrix.d,
relativeScrollOffset =
PositionGhostAbsolutely &&
ghostRelativeParent &&
getRelativeScrollOffset(ghostRelativeParent),
dx =
(touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) +
(relativeScrollOffset
? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0]
: 0) /
(scaleX || 1),
dy =
(touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) +
(relativeScrollOffset
? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1]
: 0) /
(scaleY || 1)
if (!Sortable.active && !awaitingDragStarted) {
if (
fallbackTolerance &&
Math.max(
Math.abs(touch.clientX - this._lastX),
Math.abs(touch.clientY - this._lastY)
) < fallbackTolerance
) {
return
}
this._onDragStart(evt, true)
}
if (ghostEl) {
if (ghostMatrix) {
ghostMatrix.e += dx - (lastDx || 0)
ghostMatrix.f += dy - (lastDy || 0)
} else {
ghostMatrix = {
a: 1,
b: 0,
c: 0,
d: 1,
e: dx,
f: dy,
}
}
var cssMatrix = 'matrix('
.concat(ghostMatrix.a, ',')
.concat(ghostMatrix.b, ',')
.concat(ghostMatrix.c, ',')
.concat(ghostMatrix.d, ',')
.concat(ghostMatrix.e, ',')
.concat(ghostMatrix.f, ')')
css(ghostEl, 'webkitTransform', cssMatrix)
css(ghostEl, 'mozTransform', cssMatrix)
css(ghostEl, 'msTransform', cssMatrix)
css(ghostEl, 'transform', cssMatrix)
lastDx = dx
lastDy = dy
touchEvt = touch
}
evt.cancelable && evt.preventDefault()
}
},
_appendGhost: function _appendGhost() {
if (!ghostEl) {
var container = this.options.fallbackOnBody ? document.body : rootEl,
rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),
options2 = this.options
if (PositionGhostAbsolutely) {
ghostRelativeParent = container
while (
css(ghostRelativeParent, 'position') === 'static' &&
css(ghostRelativeParent, 'transform') === 'none' &&
ghostRelativeParent !== document
) {
ghostRelativeParent = ghostRelativeParent.parentNode
}
if (
ghostRelativeParent !== document.body &&
ghostRelativeParent !== document.documentElement
) {
if (ghostRelativeParent === document)
ghostRelativeParent = getWindowScrollingElement()
rect.top += ghostRelativeParent.scrollTop
rect.left += ghostRelativeParent.scrollLeft
} else {
ghostRelativeParent = getWindowScrollingElement()
}
ghostRelativeParentInitialScroll =
getRelativeScrollOffset(ghostRelativeParent)
}
ghostEl = dragEl.cloneNode(true)
toggleClass(ghostEl, options2.ghostClass, false)
toggleClass(ghostEl, options2.fallbackClass, true)
toggleClass(ghostEl, options2.dragClass, true)
css(ghostEl, 'transition', '')
css(ghostEl, 'transform', '')
css(ghostEl, 'box-sizing', 'border-box')
css(ghostEl, 'margin', 0)
css(ghostEl, 'top', rect.top)
css(ghostEl, 'left', rect.left)
css(ghostEl, 'width', rect.width)
css(ghostEl, 'height', rect.height)
css(ghostEl, 'opacity', '0.8')
css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed')
css(ghostEl, 'zIndex', '100000')
css(ghostEl, 'pointerEvents', 'none')
Sortable.ghost = ghostEl
container.appendChild(ghostEl)
css(
ghostEl,
'transform-origin',
(tapDistanceLeft / parseInt(ghostEl.style.width)) * 100 +
'% ' +
(tapDistanceTop / parseInt(ghostEl.style.height)) * 100 +
'%'
)
}
},
_onDragStart: function _onDragStart(evt, fallback) {
var _this = this
var dataTransfer = evt.dataTransfer
var options2 = _this.options
pluginEvent('dragStart', this, {
evt,
})
if (Sortable.eventCanceled) {
this._onDrop()
return
}
pluginEvent('setupClone', this)
if (!Sortable.eventCanceled) {
cloneEl = clone$5(dragEl)
cloneEl.removeAttribute('id')
cloneEl.draggable = false
cloneEl.style['will-change'] = ''
this._hideClone()
toggleClass(cloneEl, this.options.chosenClass, false)
Sortable.clone = cloneEl
}
_this.cloneId = _nextTick(function () {
pluginEvent('clone', _this)
if (Sortable.eventCanceled) return
if (!_this.options.removeCloneOnHide) {
rootEl.insertBefore(cloneEl, dragEl)
}
_this._hideClone()
_dispatchEvent({
sortable: _this,
name: 'clone',
})
})
!fallback && toggleClass(dragEl, options2.dragClass, true)
if (fallback) {
ignoreNextClick = true
_this._loopId = setInterval(_this._emulateDragOver, 50)
} else {
off(document, 'mouseup', _this._onDrop)
off(document, 'touchend', _this._onDrop)
off(document, 'touchcancel', _this._onDrop)
if (dataTransfer) {
dataTransfer.effectAllowed = 'move'
options2.setData && options2.setData.call(_this, dataTransfer, dragEl)
}
on(document, 'drop', _this)
css(dragEl, 'transform', 'translateZ(0)')
}
awaitingDragStarted = true
_this._dragStartId = _nextTick(
_this._dragStarted.bind(_this, fallback, evt)
)
on(document, 'selectstart', _this)
moved = true
if (Safari) {
css(document.body, 'user-select', 'none')
}
},
_onDragOver: function _onDragOver(evt) {
var el2 = this.el,
target2 = evt.target,
dragRect,
targetRect,
revert,
options2 = this.options,
group = options2.group,
activeSortable = Sortable.active,
isOwner = activeGroup === group,
canSort = options2.sort,
fromSortable = putSortable || activeSortable,
vertical,
_this = this,
completedFired = false
if (_silent) return
function dragOverEvent(name2, extra) {
pluginEvent(
name2,
_this,
_objectSpread2(
{
evt,
isOwner,
axis: vertical ? 'vertical' : 'horizontal',
revert,
dragRect,
targetRect,
canSort,
fromSortable,
target: target2,
completed,
onMove: function onMove(target3, after3) {
return _onMove(
rootEl,
el2,
dragEl,
dragRect,
target3,
getRect(target3),
evt,
after3
)
},
changed,
},
extra
)
)
}
function capture() {
dragOverEvent('dragOverAnimationCapture')
_this.captureAnimationState()
if (_this !== fromSortable) {
fromSortable.captureAnimationState()
}
}
function completed(insertion) {
dragOverEvent('dragOverCompleted', {
insertion,
})
if (insertion) {
if (isOwner) {
activeSortable._hideClone()
} else {
activeSortable._showClone(_this)
}
if (_this !== fromSortable) {
toggleClass(
dragEl,
putSortable
? putSortable.options.ghostClass
: activeSortable.options.ghostClass,
false
)
toggleClass(dragEl, options2.ghostClass, true)
}
if (putSortable !== _this && _this !== Sortable.active) {
putSortable = _this
} else if (_this === Sortable.active && putSortable) {
putSortable = null
}
if (fromSortable === _this) {
_this._ignoreWhileAnimating = target2
}
_this.animateAll(function () {
dragOverEvent('dragOverAnimationComplete')
_this._ignoreWhileAnimating = null
})
if (_this !== fromSortable) {
fromSortable.animateAll()
fromSortable._ignoreWhileAnimating = null
}
}
if (
(target2 === dragEl && !dragEl.animated) ||
(target2 === el2 && !target2.animated)
) {
lastTarget = null
}
if (!options2.dragoverBubble && !evt.rootEl && target2 !== document) {
dragEl.parentNode[expando]._isOutsideThisEl(evt.target)
!insertion && nearestEmptyInsertDetectEvent(evt)
}
!options2.dragoverBubble && evt.stopPropagation && evt.stopPropagation()
return (completedFired = true)
}
function changed() {
newIndex = index$l(dragEl)
newDraggableIndex = index$l(dragEl, options2.draggable)
_dispatchEvent({
sortable: _this,
name: 'change',
toEl: el2,
newIndex,
newDraggableIndex,
originalEvent: evt,
})
}
if (evt.preventDefault !== void 0) {
evt.cancelable && evt.preventDefault()
}
target2 = closest(target2, options2.draggable, el2, true)
dragOverEvent('dragOver')
if (Sortable.eventCanceled) return completedFired
if (
dragEl.contains(evt.target) ||
(target2.animated && target2.animatingX && target2.animatingY) ||
_this._ignoreWhileAnimating === target2
) {
return completed(false)
}
ignoreNextClick = false
if (
activeSortable &&
!options2.disabled &&
(isOwner
? canSort || (revert = parentEl !== rootEl)
: putSortable === this ||
((this.lastPutMode = activeGroup.checkPull(
this,
activeSortable,
dragEl,
evt
)) &&
group.checkPut(this, activeSortable, dragEl, evt)))
) {
vertical = this._getDirection(evt, target2) === 'vertical'
dragRect = getRect(dragEl)
dragOverEvent('dragOverValid')
if (Sortable.eventCanceled) return completedFired
if (revert) {
parentEl = rootEl
capture()
this._hideClone()
dragOverEvent('revert')
if (!Sortable.eventCanceled) {
if (nextEl) {
rootEl.insertBefore(dragEl, nextEl)
} else {
rootEl.appendChild(dragEl)
}
}
return completed(true)
}
var elLastChild = lastChild(el2, options2.draggable)
if (
!elLastChild ||
(_ghostIsLast(evt, vertical, this) && !elLastChild.animated)
) {
if (elLastChild === dragEl) {
return completed(false)
}
if (elLastChild && el2 === evt.target) {
target2 = elLastChild
}
if (target2) {
targetRect = getRect(target2)
}
if (
_onMove(
rootEl,
el2,
dragEl,
dragRect,
target2,
targetRect,
evt,
!!target2
) !== false
) {
capture()
if (elLastChild && elLastChild.nextSibling) {
el2.insertBefore(dragEl, elLastChild.nextSibling)
} else {
el2.appendChild(dragEl)
}
parentEl = el2
changed()
return completed(true)
}
} else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {
var firstChild = getChild(el2, 0, options2, true)
if (firstChild === dragEl) {
return completed(false)
}
target2 = firstChild
targetRect = getRect(target2)
if (
_onMove(
rootEl,
el2,
dragEl,
dragRect,
target2,
targetRect,
evt,
false
) !== false
) {
capture()
el2.insertBefore(dragEl, firstChild)
parentEl = el2
changed()
return completed(true)
}
} else if (target2.parentNode === el2) {
targetRect = getRect(target2)
var direction2 = 0,
targetBeforeFirstSwap,
differentLevel = dragEl.parentNode !== el2,
differentRowCol = !_dragElInRowColumn(
(dragEl.animated && dragEl.toRect) || dragRect,
(target2.animated && target2.toRect) || targetRect,
vertical
),
side1 = vertical ? 'top' : 'left',
scrolledPastTop =
isScrolledPast(target2, 'top', 'top') ||
isScrolledPast(dragEl, 'top', 'top'),
scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0
if (lastTarget !== target2) {
targetBeforeFirstSwap = targetRect[side1]
pastFirstInvertThresh = false
isCircumstantialInvert =
(!differentRowCol && options2.invertSwap) || differentLevel
}
direction2 = _getSwapDirection(
evt,
target2,
targetRect,
vertical,
differentRowCol ? 1 : options2.swapThreshold,
options2.invertedSwapThreshold == null
? options2.swapThreshold
: options2.invertedSwapThreshold,
isCircumstantialInvert,
lastTarget === target2
)
var sibling
if (direction2 !== 0) {
var dragIndex = index$l(dragEl)
do {
dragIndex -= direction2
sibling = parentEl.children[dragIndex]
} while (
sibling &&
(css(sibling, 'display') === 'none' || sibling === ghostEl)
)
}
if (direction2 === 0 || sibling === target2) {
return completed(false)
}
lastTarget = target2
lastDirection = direction2
var nextSibling2 = target2.nextElementSibling,
after2 = false
after2 = direction2 === 1
var moveVector = _onMove(
rootEl,
el2,
dragEl,
dragRect,
target2,
targetRect,
evt,
after2
)
if (moveVector !== false) {
if (moveVector === 1 || moveVector === -1) {
after2 = moveVector === 1
}
_silent = true
setTimeout(_unsilent, 30)
capture()
if (after2 && !nextSibling2) {
el2.appendChild(dragEl)
} else {
target2.parentNode.insertBefore(
dragEl,
after2 ? nextSibling2 : target2
)
}
if (scrolledPastTop) {
scrollBy(
scrolledPastTop,
0,
scrollBefore - scrolledPastTop.scrollTop
)
}
parentEl = dragEl.parentNode
if (targetBeforeFirstSwap !== void 0 && !isCircumstantialInvert) {
targetMoveDistance = Math.abs(
targetBeforeFirstSwap - getRect(target2)[side1]
)
}
changed()
return completed(true)
}
}
if (el2.contains(dragEl)) {
return completed(false)
}
}
return false
},
_ignoreWhileAnimating: null,
_offMoveEvents: function _offMoveEvents() {
off(document, 'mousemove', this._onTouchMove)
off(document, 'touchmove', this._onTouchMove)
off(document, 'pointermove', this._onTouchMove)
off(document, 'dragover', nearestEmptyInsertDetectEvent)
off(document, 'mousemove', nearestEmptyInsertDetectEvent)
off(document, 'touchmove', nearestEmptyInsertDetectEvent)
},
_offUpEvents: function _offUpEvents() {
var ownerDocument = this.el.ownerDocument
off(ownerDocument, 'mouseup', this._onDrop)
off(ownerDocument, 'touchend', this._onDrop)
off(ownerDocument, 'pointerup', this._onDrop)
off(ownerDocument, 'touchcancel', this._onDrop)
off(document, 'selectstart', this)
},
_onDrop: function _onDrop(evt) {
var el2 = this.el,
options2 = this.options
newIndex = index$l(dragEl)
newDraggableIndex = index$l(dragEl, options2.draggable)
pluginEvent('drop', this, {
evt,
})
parentEl = dragEl && dragEl.parentNode
newIndex = index$l(dragEl)
newDraggableIndex = index$l(dragEl, options2.draggable)
if (Sortable.eventCanceled) {
this._nulling()
return
}
awaitingDragStarted = false
isCircumstantialInvert = false
pastFirstInvertThresh = false
clearInterval(this._loopId)
clearTimeout(this._dragStartTimer)
_cancelNextTick(this.cloneId)
_cancelNextTick(this._dragStartId)
if (this.nativeDraggable) {
off(document, 'drop', this)
off(el2, 'dragstart', this._onDragStart)
}
this._offMoveEvents()
this._offUpEvents()
if (Safari) {
css(document.body, 'user-select', '')
}
css(dragEl, 'transform', '')
if (evt) {
if (moved) {
evt.cancelable && evt.preventDefault()
!options2.dropBubble && evt.stopPropagation()
}
ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl)
if (
rootEl === parentEl ||
(putSortable && putSortable.lastPutMode !== 'clone')
) {
cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl)
}
if (dragEl) {
if (this.nativeDraggable) {
off(dragEl, 'dragend', this)
}
_disableDraggable(dragEl)
dragEl.style['will-change'] = ''
if (moved && !awaitingDragStarted) {
toggleClass(
dragEl,
putSortable
? putSortable.options.ghostClass
: this.options.ghostClass,
false
)
}
toggleClass(dragEl, this.options.chosenClass, false)
_dispatchEvent({
sortable: this,
name: 'unchoose',
toEl: parentEl,
newIndex: null,
newDraggableIndex: null,
originalEvent: evt,
})
if (rootEl !== parentEl) {
if (newIndex >= 0) {
_dispatchEvent({
rootEl: parentEl,
name: 'add',
toEl: parentEl,
fromEl: rootEl,
originalEvent: evt,
})
_dispatchEvent({
sortable: this,
name: 'remove',
toEl: parentEl,
originalEvent: evt,
})
_dispatchEvent({
rootEl: parentEl,
name: 'sort',
toEl: parentEl,
fromEl: rootEl,
originalEvent: evt,
})
_dispatchEvent({
sortable: this,
name: 'sort',
toEl: parentEl,
originalEvent: evt,
})
}
putSortable && putSortable.save()
} else {
if (newIndex !== oldIndex) {
if (newIndex >= 0) {
_dispatchEvent({
sortable: this,
name: 'update',
toEl: parentEl,
originalEvent: evt,
})
_dispatchEvent({
sortable: this,
name: 'sort',
toEl: parentEl,
originalEvent: evt,
})
}
}
}
if (Sortable.active) {
if (newIndex == null || newIndex === -1) {
newIndex = oldIndex
newDraggableIndex = oldDraggableIndex
}
_dispatchEvent({
sortable: this,
name: 'end',
toEl: parentEl,
originalEvent: evt,
})
this.save()
}
}
}
this._nulling()
},
_nulling: function _nulling() {
pluginEvent('nulling', this)
rootEl =
dragEl =
parentEl =
ghostEl =
nextEl =
cloneEl =
lastDownEl =
cloneHidden =
tapEvt =
touchEvt =
moved =
newIndex =
newDraggableIndex =
oldIndex =
oldDraggableIndex =
lastTarget =
lastDirection =
putSortable =
activeGroup =
Sortable.dragged =
Sortable.ghost =
Sortable.clone =
Sortable.active =
null
savedInputChecked.forEach(function (el2) {
el2.checked = true
})
savedInputChecked.length = lastDx = lastDy = 0
},
handleEvent: function handleEvent(evt) {
switch (evt.type) {
case 'drop':
case 'dragend':
this._onDrop(evt)
break
case 'dragenter':
case 'dragover':
if (dragEl) {
this._onDragOver(evt)
_globalDragOver(evt)
}
break
case 'selectstart':
evt.preventDefault()
break
}
},
toArray: function toArray2() {
var order2 = [],
el2,
children = this.el.children,
i2 = 0,
n2 = children.length,
options2 = this.options
for (; i2 < n2; i2++) {
el2 = children[i2]
if (closest(el2, options2.draggable, this.el, false)) {
order2.push(el2.getAttribute(options2.dataIdAttr) || _generateId(el2))
}
}
return order2
},
sort: function sort2(order2, useAnimation) {
var items = {},
rootEl2 = this.el
this.toArray().forEach(function (id2, i2) {
var el2 = rootEl2.children[i2]
if (closest(el2, this.options.draggable, rootEl2, false)) {
items[id2] = el2
}
}, this)
useAnimation && this.captureAnimationState()
order2.forEach(function (id2) {
if (items[id2]) {
rootEl2.removeChild(items[id2])
rootEl2.appendChild(items[id2])
}
})
useAnimation && this.animateAll()
},
save: function save2() {
var store2 = this.options.store
store2 && store2.set && store2.set(this)
},
closest: function closest$1(el2, selector2) {
return closest(el2, selector2 || this.options.draggable, this.el, false)
},
option: function option(name2, value2) {
var options2 = this.options
if (value2 === void 0) {
return options2[name2]
} else {
var modifiedValue = PluginManager.modifyOption(this, name2, value2)
if (typeof modifiedValue !== 'undefined') {
options2[name2] = modifiedValue
} else {
options2[name2] = value2
}
if (name2 === 'group') {
_prepareGroup(options2)
}
}
},
destroy: function destroy() {
pluginEvent('destroy', this)
var el2 = this.el
el2[expando] = null
off(el2, 'mousedown', this._onTapStart)
off(el2, 'touchstart', this._onTapStart)
off(el2, 'pointerdown', this._onTapStart)
if (this.nativeDraggable) {
off(el2, 'dragover', this)
off(el2, 'dragenter', this)
}
Array.prototype.forEach.call(
el2.querySelectorAll('[draggable]'),
function (el3) {
el3.removeAttribute('draggable')
}
)
this._onDrop()
this._disableDelayedDragEvents()
sortables.splice(sortables.indexOf(this.el), 1)
this.el = el2 = null
},
_hideClone: function _hideClone() {
if (!cloneHidden) {
pluginEvent('hideClone', this)
if (Sortable.eventCanceled) return
css(cloneEl, 'display', 'none')
if (this.options.removeCloneOnHide && cloneEl.parentNode) {
cloneEl.parentNode.removeChild(cloneEl)
}
cloneHidden = true
}
},
_showClone: function _showClone(putSortable2) {
if (putSortable2.lastPutMode !== 'clone') {
this._hideClone()
return
}
if (cloneHidden) {
pluginEvent('showClone', this)
if (Sortable.eventCanceled) return
if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {
rootEl.insertBefore(cloneEl, dragEl)
} else if (nextEl) {
rootEl.insertBefore(cloneEl, nextEl)
} else {
rootEl.appendChild(cloneEl)
}
if (this.options.group.revertClone) {
this.animate(dragEl, cloneEl)
}
css(cloneEl, 'display', '')
cloneHidden = false
}
},
}
function _globalDragOver(evt) {
if (evt.dataTransfer) {
evt.dataTransfer.dropEffect = 'move'
}
evt.cancelable && evt.preventDefault()
}
function _onMove(
fromEl,
toEl,
dragEl2,
dragRect,
targetEl,
targetRect,
originalEvent,
willInsertAfter
) {
var evt,
sortable = fromEl[expando],
onMoveFn = sortable.options.onMove,
retVal
if (window.CustomEvent && !IE11OrLess && !Edge) {
evt = new CustomEvent('move', {
bubbles: true,
cancelable: true,
})
} else {
evt = document.createEvent('Event')
evt.initEvent('move', true, true)
}
evt.to = toEl
evt.from = fromEl
evt.dragged = dragEl2
evt.draggedRect = dragRect
evt.related = targetEl || toEl
evt.relatedRect = targetRect || getRect(toEl)
evt.willInsertAfter = willInsertAfter
evt.originalEvent = originalEvent
fromEl.dispatchEvent(evt)
if (onMoveFn) {
retVal = onMoveFn.call(sortable, evt, originalEvent)
}
return retVal
}
function _disableDraggable(el2) {
el2.draggable = false
}
function _unsilent() {
_silent = false
}
function _ghostIsFirst(evt, vertical, sortable) {
var rect = getRect(getChild(sortable.el, 0, sortable.options, true))
var spacer = 10
return vertical
? evt.clientX < rect.left - spacer ||
(evt.clientY < rect.top && evt.clientX < rect.right)
: evt.clientY < rect.top - spacer ||
(evt.clientY < rect.bottom && evt.clientX < rect.left)
}
function _ghostIsLast(evt, vertical, sortable) {
var rect = getRect(lastChild(sortable.el, sortable.options.draggable))
var spacer = 10
return vertical
? evt.clientX > rect.right + spacer ||
(evt.clientX <= rect.right &&
evt.clientY > rect.bottom &&
evt.clientX >= rect.left)
: (evt.clientX > rect.right && evt.clientY > rect.top) ||
(evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer)
}
function _getSwapDirection(
evt,
target2,
targetRect,
vertical,
swapThreshold,
invertedSwapThreshold,
invertSwap,
isLastTarget
) {
var mouseOnAxis = vertical ? evt.clientY : evt.clientX,
targetLength = vertical ? targetRect.height : targetRect.width,
targetS1 = vertical ? targetRect.top : targetRect.left,
targetS2 = vertical ? targetRect.bottom : targetRect.right,
invert2 = false
if (!invertSwap) {
if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {
if (
!pastFirstInvertThresh &&
(lastDirection === 1
? mouseOnAxis > targetS1 + (targetLength * invertedSwapThreshold) / 2
: mouseOnAxis < targetS2 - (targetLength * invertedSwapThreshold) / 2)
) {
pastFirstInvertThresh = true
}
if (!pastFirstInvertThresh) {
if (
lastDirection === 1
? mouseOnAxis < targetS1 + targetMoveDistance
: mouseOnAxis > targetS2 - targetMoveDistance
) {
return -lastDirection
}
} else {
invert2 = true
}
} else {
if (
mouseOnAxis > targetS1 + (targetLength * (1 - swapThreshold)) / 2 &&
mouseOnAxis < targetS2 - (targetLength * (1 - swapThreshold)) / 2
) {
return _getInsertDirection(target2)
}
}
}
invert2 = invert2 || invertSwap
if (invert2) {
if (
mouseOnAxis < targetS1 + (targetLength * invertedSwapThreshold) / 2 ||
mouseOnAxis > targetS2 - (targetLength * invertedSwapThreshold) / 2
) {
return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1
}
}
return 0
}
function _getInsertDirection(target2) {
if (index$l(dragEl) < index$l(target2)) {
return 1
} else {
return -1
}
}
function _generateId(el2) {
var str = el2.tagName + el2.className + el2.src + el2.href + el2.textContent,
i2 = str.length,
sum2 = 0
while (i2--) {
sum2 += str.charCodeAt(i2)
}
return sum2.toString(36)
}
function _saveInputCheckedState(root2) {
savedInputChecked.length = 0
var inputs = root2.getElementsByTagName('input')
var idx = inputs.length
while (idx--) {
var el2 = inputs[idx]
el2.checked && savedInputChecked.push(el2)
}
}
function _nextTick(fn2) {
return setTimeout(fn2, 0)
}
function _cancelNextTick(id2) {
return clearTimeout(id2)
}
if (documentExists) {
on(document, 'touchmove', function (evt) {
if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {
evt.preventDefault()
}
})
}
Sortable.utils = {
on,
off,
css,
find: find$1,
is: function is(el2, selector2) {
return !!closest(el2, selector2, el2, false)
},
extend: extend$1,
throttle: throttle$1,
closest,
toggleClass,
clone: clone$5,
index: index$l,
nextTick: _nextTick,
cancelNextTick: _cancelNextTick,
detectDirection: _detectDirection,
getChild,
}
Sortable.get = function (element) {
return element[expando]
}
Sortable.mount = function () {
for (
var _len = arguments.length, plugins2 = new Array(_len), _key = 0;
_key < _len;
_key++
) {
plugins2[_key] = arguments[_key]
}
if (plugins2[0].constructor === Array) plugins2 = plugins2[0]
plugins2.forEach(function (plugin) {
if (!plugin.prototype || !plugin.prototype.constructor) {
throw 'Sortable: Mounted plugin must be a constructor function, not '.concat(
{}.toString.call(plugin)
)
}
if (plugin.utils)
Sortable.utils = _objectSpread2(
_objectSpread2({}, Sortable.utils),
plugin.utils
)
PluginManager.mount(plugin)
})
}
Sortable.create = function (el2, options2) {
return new Sortable(el2, options2)
}
Sortable.version = version$3
var autoScrolls = [],
scrollEl,
scrollRootEl,
scrolling = false,
lastAutoScrollX,
lastAutoScrollY,
touchEvt$1,
pointerElemChangedInterval
function AutoScrollPlugin() {
function AutoScroll() {
this.defaults = {
scroll: true,
forceAutoScrollFallback: false,
scrollSensitivity: 30,
scrollSpeed: 10,
bubbleScroll: true,
}
for (var fn2 in this) {
if (fn2.charAt(0) === '_' && typeof this[fn2] === 'function') {
this[fn2] = this[fn2].bind(this)
}
}
}
AutoScroll.prototype = {
dragStarted: function dragStarted(_ref2) {
var originalEvent = _ref2.originalEvent
if (this.sortable.nativeDraggable) {
on(document, 'dragover', this._handleAutoScroll)
} else {
if (this.options.supportPointer) {
on(document, 'pointermove', this._handleFallbackAutoScroll)
} else if (originalEvent.touches) {
on(document, 'touchmove', this._handleFallbackAutoScroll)
} else {
on(document, 'mousemove', this._handleFallbackAutoScroll)
}
}
},
dragOverCompleted: function dragOverCompleted(_ref2) {
var originalEvent = _ref2.originalEvent
if (!this.options.dragOverBubble && !originalEvent.rootEl) {
this._handleAutoScroll(originalEvent)
}
},
drop: function drop3() {
if (this.sortable.nativeDraggable) {
off(document, 'dragover', this._handleAutoScroll)
} else {
off(document, 'pointermove', this._handleFallbackAutoScroll)
off(document, 'touchmove', this._handleFallbackAutoScroll)
off(document, 'mousemove', this._handleFallbackAutoScroll)
}
clearPointerElemChangedInterval()
clearAutoScrolls()
cancelThrottle()
},
nulling: function nulling() {
touchEvt$1 =
scrollRootEl =
scrollEl =
scrolling =
pointerElemChangedInterval =
lastAutoScrollX =
lastAutoScrollY =
null
autoScrolls.length = 0
},
_handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {
this._handleAutoScroll(evt, true)
},
_handleAutoScroll: function _handleAutoScroll(evt, fallback) {
var _this = this
var x2 = (evt.touches ? evt.touches[0] : evt).clientX,
y2 = (evt.touches ? evt.touches[0] : evt).clientY,
elem = document.elementFromPoint(x2, y2)
touchEvt$1 = evt
if (
fallback ||
this.options.forceAutoScrollFallback ||
Edge ||
IE11OrLess ||
Safari
) {
autoScroll(evt, this.options, elem, fallback)
var ogElemScroller = getParentAutoScrollElement(elem, true)
if (
scrolling &&
(!pointerElemChangedInterval ||
x2 !== lastAutoScrollX ||
y2 !== lastAutoScrollY)
) {
pointerElemChangedInterval && clearPointerElemChangedInterval()
pointerElemChangedInterval = setInterval(function () {
var newElem = getParentAutoScrollElement(
document.elementFromPoint(x2, y2),
true
)
if (newElem !== ogElemScroller) {
ogElemScroller = newElem
clearAutoScrolls()
}
autoScroll(evt, _this.options, newElem, fallback)
}, 10)
lastAutoScrollX = x2
lastAutoScrollY = y2
}
} else {
if (
!this.options.bubbleScroll ||
getParentAutoScrollElement(elem, true) === getWindowScrollingElement()
) {
clearAutoScrolls()
return
}
autoScroll(
evt,
this.options,
getParentAutoScrollElement(elem, false),
false
)
}
},
}
return _extends(AutoScroll, {
pluginName: 'scroll',
initializeByDefault: true,
})
}
function clearAutoScrolls() {
autoScrolls.forEach(function (autoScroll2) {
clearInterval(autoScroll2.pid)
})
autoScrolls = []
}
function clearPointerElemChangedInterval() {
clearInterval(pointerElemChangedInterval)
}
var autoScroll = throttle$1(function (evt, options2, rootEl2, isFallback) {
if (!options2.scroll) return
var x2 = (evt.touches ? evt.touches[0] : evt).clientX,
y2 = (evt.touches ? evt.touches[0] : evt).clientY,
sens = options2.scrollSensitivity,
speed = options2.scrollSpeed,
winScroller = getWindowScrollingElement()
var scrollThisInstance = false,
scrollCustomFn
if (scrollRootEl !== rootEl2) {
scrollRootEl = rootEl2
clearAutoScrolls()
scrollEl = options2.scroll
scrollCustomFn = options2.scrollFn
if (scrollEl === true) {
scrollEl = getParentAutoScrollElement(rootEl2, true)
}
}
var layersOut = 0
var currentParent = scrollEl
do {
var el2 = currentParent,
rect = getRect(el2),
top2 = rect.top,
bottom2 = rect.bottom,
left2 = rect.left,
right2 = rect.right,
width = rect.width,
height = rect.height,
canScrollX = void 0,
canScrollY = void 0,
scrollWidth = el2.scrollWidth,
scrollHeight = el2.scrollHeight,
elCSS = css(el2),
scrollPosX = el2.scrollLeft,
scrollPosY = el2.scrollTop
if (el2 === winScroller) {
canScrollX =
width < scrollWidth &&
(elCSS.overflowX === 'auto' ||
elCSS.overflowX === 'scroll' ||
elCSS.overflowX === 'visible')
canScrollY =
height < scrollHeight &&
(elCSS.overflowY === 'auto' ||
elCSS.overflowY === 'scroll' ||
elCSS.overflowY === 'visible')
} else {
canScrollX =
width < scrollWidth &&
(elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll')
canScrollY =
height < scrollHeight &&
(elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll')
}
var vx =
canScrollX &&
(Math.abs(right2 - x2) <= sens && scrollPosX + width < scrollWidth) -
(Math.abs(left2 - x2) <= sens && !!scrollPosX)
var vy =
canScrollY &&
(Math.abs(bottom2 - y2) <= sens && scrollPosY + height < scrollHeight) -
(Math.abs(top2 - y2) <= sens && !!scrollPosY)
if (!autoScrolls[layersOut]) {
for (var i2 = 0; i2 <= layersOut; i2++) {
if (!autoScrolls[i2]) {
autoScrolls[i2] = {}
}
}
}
if (
autoScrolls[layersOut].vx != vx ||
autoScrolls[layersOut].vy != vy ||
autoScrolls[layersOut].el !== el2
) {
autoScrolls[layersOut].el = el2
autoScrolls[layersOut].vx = vx
autoScrolls[layersOut].vy = vy
clearInterval(autoScrolls[layersOut].pid)
if (vx != 0 || vy != 0) {
scrollThisInstance = true
autoScrolls[layersOut].pid = setInterval(
function () {
if (isFallback && this.layer === 0) {
Sortable.active._onTouchMove(touchEvt$1)
}
var scrollOffsetY = autoScrolls[this.layer].vy
? autoScrolls[this.layer].vy * speed
: 0
var scrollOffsetX = autoScrolls[this.layer].vx
? autoScrolls[this.layer].vx * speed
: 0
if (typeof scrollCustomFn === 'function') {
if (
scrollCustomFn.call(
Sortable.dragged.parentNode[expando],
scrollOffsetX,
scrollOffsetY,
evt,
touchEvt$1,
autoScrolls[this.layer].el
) !== 'continue'
) {
return
}
}
scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY)
}.bind({
layer: layersOut,
}),
24
)
}
}
layersOut++
} while (options2.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)))
scrolling = scrollThisInstance
}, 30)
var drop = function drop2(_ref2) {
var originalEvent = _ref2.originalEvent,
putSortable2 = _ref2.putSortable,
dragEl2 = _ref2.dragEl,
activeSortable = _ref2.activeSortable,
dispatchSortableEvent = _ref2.dispatchSortableEvent,
hideGhostForTarget = _ref2.hideGhostForTarget,
unhideGhostForTarget = _ref2.unhideGhostForTarget
if (!originalEvent) return
var toSortable = putSortable2 || activeSortable
hideGhostForTarget()
var touch =
originalEvent.changedTouches && originalEvent.changedTouches.length
? originalEvent.changedTouches[0]
: originalEvent
var target2 = document.elementFromPoint(touch.clientX, touch.clientY)
unhideGhostForTarget()
if (toSortable && !toSortable.el.contains(target2)) {
dispatchSortableEvent('spill')
this.onSpill({
dragEl: dragEl2,
putSortable: putSortable2,
})
}
}
function Revert() {}
Revert.prototype = {
startIndex: null,
dragStart: function dragStart(_ref2) {
var oldDraggableIndex2 = _ref2.oldDraggableIndex
this.startIndex = oldDraggableIndex2
},
onSpill: function onSpill(_ref3) {
var dragEl2 = _ref3.dragEl,
putSortable2 = _ref3.putSortable
this.sortable.captureAnimationState()
if (putSortable2) {
putSortable2.captureAnimationState()
}
var nextSibling2 = getChild(this.sortable.el, this.startIndex, this.options)
if (nextSibling2) {
this.sortable.el.insertBefore(dragEl2, nextSibling2)
} else {
this.sortable.el.appendChild(dragEl2)
}
this.sortable.animateAll()
if (putSortable2) {
putSortable2.animateAll()
}
},
drop,
}
_extends(Revert, {
pluginName: 'revertOnSpill',
})
function Remove() {}
Remove.prototype = {
onSpill: function onSpill2(_ref4) {
var dragEl2 = _ref4.dragEl,
putSortable2 = _ref4.putSortable
var parentSortable = putSortable2 || this.sortable
parentSortable.captureAnimationState()
dragEl2.parentNode && dragEl2.parentNode.removeChild(dragEl2)
parentSortable.animateAll()
},
drop,
}
_extends(Remove, {
pluginName: 'removeOnSpill',
})
Sortable.mount(new AutoScrollPlugin())
Sortable.mount(Remove, Revert)
var DataDimissions_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$3h = (n2) => (
pushScopeId('data-v-7440417a'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$5H = { class: 'dimissions' }
const _hoisted_2$4L = { class: 'head flex' }
const _hoisted_3$4j = /* @__PURE__ */ _withScopeId$3h(() =>
/* @__PURE__ */ createElementVNode(
'div',
null,
[
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'mr6' },
'\u7EF4\u5EA6'
),
/* @__PURE__ */ createElementVNode('i', {
class: 'padding-head-icon iconfont icon-tishi1',
title:
'\u6DFB\u52A0\u7EF4\u5EA6\u5B57\u6BB5\uFF0C\u53EF\u5BF9\u6307\u6807\u8FDB\u884C\u5206\u7EC4\u5448\u73B0',
}),
],
-1
)
)
const _hoisted_4$3M = {
key: 1,
class: 'addbtn',
}
const _hoisted_5$3q = /* @__PURE__ */ _withScopeId$3h(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-quanxiantianjia1' },
null,
-1
)
)
const _hoisted_6$33 = /* @__PURE__ */ _withScopeId$3h(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u6DFB\u52A0\u7EF4\u5EA6',
-1
)
)
const _hoisted_7$2I = [_hoisted_5$3q, _hoisted_6$33]
const _hoisted_8$2q = { class: 'content' }
const _hoisted_9$2e = {
key: 1,
class: 'realtime-dimension',
}
const _hoisted_10$20 = ['onClick']
const _sfc_main$6J = /* @__PURE__ */ defineComponent({
props: {
node: null,
dimissionsList: null,
indexesList: null,
dataType: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
const props2 = reactive(node2.props)
props2.dataConfig.dimissions = props2.dataConfig.dimissions || []
const widgetInfo = widgetStore[String(node2.is)]
const maxDimissionCount = widgetInfo.maxDimissionCount
const oldField = ref(null)
const currentDimissionsList = computed(() => {
const list2 = $props2.dimissionsList.map((field2) => {
let disabled = false
for (
let i2 = 0, iLen = props2.dataConfig.dimissions.length;
i2 < iLen;
i2++
) {
const item2 = props2.dataConfig.dimissions[i2]
if (item2.fieldName === field2.fieldName) {
disabled = true
break
}
}
for (
let i2 = 0, iLen = props2.dataConfig.indexes.length;
i2 < iLen;
i2++
) {
const item2 = props2.dataConfig.indexes[i2]
if (item2.fieldName === field2.fieldName) {
disabled = true
break
}
}
return {
label: field2.fieldName,
value: field2.fieldName,
disabled,
}
})
return list2
})
const changeDimission = (field2) => {
if (field2.fieldName === '\u53D8\u91CF\u540D') {
props2.dataConfig.isVariableName = true
props2.dataConfig.indexes.forEach((item2) => {
item2.sort = 0
})
} else {
props2.dataConfig.isVariableName = false
props2.dataConfig.indexes.forEach((item2) => {
item2.mode = 4
})
}
for (let i2 = 0, iLen = $props2.dimissionsList.length; i2 < iLen; i2++) {
const item2 = $props2.dimissionsList[i2]
if (field2.fieldName === item2.fieldName) {
if (props2.dataConfig.dataType === DATA_TYPE.HISTORY) {
field2.aliasName = ''
}
field2.fieldType = item2.fieldType
field2.id = item2.id
break
}
}
}
const addData = () => {
if (!props2.dataConfig.dataSetId && !props2.dataConfig.dataType) {
ElMessage.warning('\u8BF7\u9009\u62E9\u6570\u636E\u96C6')
return
}
if (!$props2.dimissionsList.length) {
ElMessage.warning(
'\u5F53\u524D\u6570\u636E\u96C6\u6CA1\u6709\u7EF4\u5EA6'
)
return
}
if (props2.dataConfig.dimissions.length === $props2.dimissionsList.length)
return
props2.dataConfig.dimissions.push({
id: '',
fieldName: '',
fieldType: 0,
aliasName: '',
sort: 0,
align: 0,
mode: '',
dataFormat: '',
timeFormat: 'yyyy-MM-dd HH:mm:ss',
})
}
const isHideDelete = computed(() => {
if ($props2.dataType === DATA_TYPE.VARIABLE) {
return true
} else if (
$props2.dataType === 1 &&
props2.dataConfig.dimissions.length === 1
) {
return true
} else {
return false
}
})
const delData = (index2) => {
props2.dataConfig.dimissions.splice(index2, 1)
}
const fieldEditVisible = ref(false)
const fieldEditCallback = () => {
fieldEditVisible.value = false
}
let sortable
const sortableInit = () => {
sortable = Sortable.create(
document.querySelector('.dimissions>.content>.list'),
{
animation: 150,
onStart: () => {},
onEnd: (val2) => {
let oldIndex2 = val2.oldIndex
let newIndex2 = val2.newIndex
const currRow = props2.dataConfig.dimissions.splice(oldIndex2, 1)[0]
props2.dataConfig.dimissions.splice(newIndex2, 0, currRow)
},
}
)
}
watch$1(
() => node2.is,
() => {
if (
props2.dataConfig.dataType === DATA_TYPE.HISTORY &&
props2.dataConfig.isVariableName &&
props2.dataConfig.dimissions[0]
) {
props2.dataConfig.dimissions[0].fieldName = '\u53D8\u91CF\u540D'
}
}
)
onMounted(() => {
sortableInit()
})
onUnmounted(() => {
if (sortable) sortable.destroy()
})
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_tooltip = resolveComponent('el-tooltip')
return withDirectives(
(openBlock(),
createElementBlock(
'div',
_hoisted_1$5H,
[
createElementVNode('div', _hoisted_2$4L, [
_hoisted_3$4j,
createElementVNode('span', null, [
withDirectives(
createElementVNode(
'span',
{ title: '\u6700\u5927\u7EF4\u5EA6\u6570\u91CF' },
toDisplayString$1(unref(maxDimissionCount)),
513
),
[[vShow, unref(maxDimissionCount) >= 0]]
),
withDirectives(
createElementVNode(
'span',
null,
[
unref(props2).dataConfig.dimissions.length
? (openBlock(),
createElementBlock('i', {
key: 0,
class: 'editorbtn iconfont icon-tianjiahuamian',
onClick: addData,
}))
: (openBlock(),
createElementBlock('div', _hoisted_4$3M, [
createElementVNode(
'div',
{
class: 'content',
onClick: addData,
},
_hoisted_7$2I
),
])),
],
512
),
[
[
vShow,
unref(maxDimissionCount) != 0 && __props2.dataType < 1,
],
]
),
createElementVNode('i', {
class: 'editorbtn iconfont icon-shezhi',
onClick:
_cache[0] ||
(_cache[0] = () => {
fieldEditVisible.value = true
}),
}),
]),
]),
withDirectives(
createElementVNode(
'div',
_hoisted_8$2q,
[
createElementVNode(
'div',
{
class: 'list',
onUpdate:
_cache[1] || (_cache[1] = (e2) => e2.stopPropagation()),
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(props2).dataConfig.dimissions,
(item2, i2) => {
return (
openBlock(),
createElementBlock(
'div',
{
key: item2.id + i2,
class: 'item',
},
[
createVNode$1(
_component_el_tooltip,
{
'popper-class': 'cms-el-tooltip',
content: item2.fieldName,
disabled: item2.fieldName ? false : true,
placement: 'left',
persistent: '',
},
{
default: withCtx(() => [
__props2.dataType < 2
? (openBlock(),
createBlock(
_component_el_select,
{
key: 0,
modelValue: item2.fieldName,
'onUpdate:modelValue': (
$event
) => (item2.fieldName = $event),
class: 'cms-el-select-green',
'popper-class':
'cms-el-select_check-green',
placeholder:
'\u8BF7\u9009\u62E9',
'fit-input-width': true,
disabled:
i2 >=
unref(maxDimissionCount),
onFocus: () => {
oldField.value = unref(
lodash$2.exports.cloneDeep
)(item2)
},
onChange: () => {
changeDimission(item2)
},
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(
currentDimissionsList
),
(option2, n2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: n2,
label:
option2.label,
value:
option2.value,
disabled:
option2.disabled,
},
null,
8,
[
'label',
'value',
'disabled',
]
)
)
}
),
128
)),
]),
_: 2,
},
1032,
[
'modelValue',
'onUpdate:modelValue',
'disabled',
'onFocus',
'onChange',
]
))
: (openBlock(),
createElementBlock(
'span',
_hoisted_9$2e,
toDisplayString$1(
item2.fieldName
),
1
)),
]),
_: 2,
},
1032,
['content', 'disabled']
),
!unref(isHideDelete)
? (openBlock(),
createElementBlock(
'i',
{
key: 0,
class: 'delbtn iconfont icon-qingchu',
onClick: ($event) => delData(i2),
},
null,
8,
_hoisted_10$20
))
: createCommentVNode('', true),
]
)
)
}
),
128
)),
],
32
),
],
512
),
[[vShow, unref(props2).dataConfig.dimissions.length]]
),
createVNode$1(
DataFeildConfig,
{
node: unref(node2),
visible: fieldEditVisible.value,
onCallback: fieldEditCallback,
dataType: __props2.dataType,
},
null,
8,
['node', 'visible', 'dataType']
),
],
512
)),
[[vShow, unref(maxDimissionCount) != 0]]
)
}
},
})
var DataDimissions = /* @__PURE__ */ _export_sfc(_sfc_main$6J, [
['__scopeId', 'data-v-7440417a'],
])
var DataDimissions$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: DataDimissions,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var DataIndexes_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$3g = (n2) => (
pushScopeId('data-v-43345d0b'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$5G = { class: 'indexes' }
const _hoisted_2$4K = { class: 'head flex' }
const _hoisted_3$4i = /* @__PURE__ */ _withScopeId$3g(() =>
/* @__PURE__ */ createElementVNode(
'div',
null,
[
/* @__PURE__ */ createElementVNode(
'span',
{ style: { 'margin-right': '6px' } },
'\u6307\u6807'
),
/* @__PURE__ */ createElementVNode('i', {
class: 'padding-head-icon iconfont icon-tishi1',
title:
'\u997C\u56FE\u3001\u73AF\u5F62\u56FE\u3001\u73AB\u7470\u56FE \u63A8\u8350\u9009\u62E9 1 \u6307\u6807',
}),
],
-1
)
)
const _hoisted_4$3L = { class: 'flex' }
const _hoisted_5$3p = /* @__PURE__ */ _withScopeId$3g(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'content' },
[
/* @__PURE__ */ createElementVNode('i', {
class: 'iconfont icon-quanxiantianjia1',
}),
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u6DFB\u52A0\u6307\u6807'
),
],
-1
)
)
const _hoisted_6$32 = [_hoisted_5$3p]
const _hoisted_7$2H = { class: 'content' }
const _hoisted_8$2p = {
key: 1,
class: 'variable-tag',
}
const _hoisted_9$2d = ['onClick']
const _sfc_main$6I = /* @__PURE__ */ defineComponent({
props: {
node: null,
dimissionsList: null,
indexesList: null,
dataType: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
const props2 = reactive(node2.props)
const dataConfig = reactive(props2.dataConfig)
dataConfig.indexes = dataConfig.indexes || []
const oldField = ref(null)
const chartNode = ref(null)
const modeFormNumber = computed(() => {
if (!$props2.dataType) {
return modeForm.number
} else {
return modeForm.number.filter((item2) => item2.value !== 5)
}
})
const modeFormDate = computed(() => {
if (!$props2.dataType) {
return modeForm.date
} else {
return modeForm.date.filter((item2) => item2.value !== 5)
}
})
const currentIndexesList = computed(() => {
return $props2.indexesList.map((field2) => {
let disabled = false
for (let i2 = 0, iLen = dataConfig.dimissions.length; i2 < iLen; i2++) {
const item2 = dataConfig.dimissions[i2]
if (item2.id === field2.id) {
disabled = true
break
}
}
return {
label: field2.fieldName,
value: field2.id,
disabled,
}
})
})
const showAggregate = computed(() => {
if ($props2.dataType === DATA_TYPE.AGGREGATE) return true
if (
$props2.dataType === DATA_TYPE.HISTORY &&
(dataConfig.dimissions[0]?.fieldName !== '\u8BB0\u5F55\u65F6\u95F4' ||
node2.is === 'ChartCard')
)
return true
return false
})
const changeField2 = (index2, id2) => {
const selectField = $props2.indexesList.filter((item2) => {
if (item2.id === id2) return item2
})[0]
const targetField = dataConfig.indexes[index2]
let validation = true
for (let i2 = 0, iLen = dataConfig.dimissions.length; i2 < iLen; i2++) {
const item2 = dataConfig.dimissions[i2]
if (selectField.id === item2.id) {
validation = false
break
}
}
if (validation) {
for (let i2 = 0, iLen = dataConfig.indexes.length; i2 < iLen; i2++) {
const item2 = dataConfig.indexes[i2]
if ([targetField].includes(item2)) continue
if (targetField.id === item2.id && targetField.mode === item2.mode) {
validation = false
break
}
}
}
let mode2 = 4
if (validation && selectField.fieldType !== 1) {
selectField.id
let count2 = 0
for (let i2 = 0, iLen = dataConfig.indexes.length; i2 < iLen; i2++) {
const item2 = dataConfig.indexes[i2]
if ([targetField].includes(item2)) continue
if (selectField.id === item2.id) {
count2++
mode2 = item2.mode
}
}
if (count2 >= 2) validation = false
if (count2 === 1) mode2 = mode2 === 4 ? 5 : 4
}
if (validation) {
dataConfig.indexes[index2].fieldName = selectField.fieldName
dataConfig.indexes[index2].id = selectField.id
dataConfig.indexes[index2].fieldType = selectField.fieldType
if (selectField.fieldType !== 1) dataConfig.indexes[index2].mode = mode2
oldField.value = lodash$2.exports.cloneDeep(dataConfig.indexes[index2])
} else {
dataConfig.indexes[index2] = lodash$2.exports.cloneDeep(oldField.value)
}
}
const changeMode = (index2) => {
const targetField = dataConfig.indexes[index2]
let validation = true
for (let i2 = 0, iLen = dataConfig.indexes.length; i2 < iLen; i2++) {
const item2 = dataConfig.indexes[i2]
if ([targetField].includes(item2)) continue
if (targetField.id === item2.id && targetField.mode === item2.mode) {
validation = false
break
}
}
if (validation) {
oldField.value = lodash$2.exports.cloneDeep(dataConfig.indexes[index2])
} else {
dataConfig.indexes[index2] = lodash$2.exports.cloneDeep(oldField.value)
}
}
let defaultDataTypes = ref([])
let isConfigureHistory = ref(false)
const handleAddData = () => {
if ($props2.dataType != DATA_TYPE.AGGREGATE) {
if ($props2.dataType === DATA_TYPE.VARIABLE) {
defaultDataTypes.value = [1, 2]
isConfigureHistory.value = false
} else {
defaultDataTypes.value = []
isConfigureHistory.value = true
}
handleShowVariate()
} else {
addData()
}
}
const addData = () => {
if (!dataConfig.dataSetId) {
ElMessage.warning('\u8BF7\u9009\u62E9\u6570\u636E\u96C6')
return
}
if (!$props2.dimissionsList.length) {
ElMessage.warning(
'\u5F53\u524D\u6570\u636E\u96C6\u6CA1\u6709\u6307\u6807'
)
return
}
dataConfig.indexes.push({
id: '',
fieldName: '',
fieldType: 1,
aliasName: '',
sort: 0,
align: 0,
mode: 0,
dataFormat: 0,
yAxisIndex: 0,
})
}
const fieldEditVisible = ref(false)
const fieldEditCallback = () => {
fieldEditVisible.value = false
}
let showVariate = ref(false)
let checkedKeys = ref([])
let isMultiple2 = ref(false)
let disabledKeys = ref([])
const getFieldType = (type4) => {
let fieldType2 = 1
if (Variable.isNumberType({ type: type4 })) {
fieldType2 = 1
} else if (Variable.isStringType({ type: type4 })) {
fieldType2 = 2
} else if (Variable.isTimeType({ type: type4 })) {
fieldType2 = 3
}
return fieldType2
}
const handleVariateConfirm = (data2) => {
if (!data2.length) {
ElMessage.warning('\u8BF7\u9009\u62E9\u53D8\u91CF')
return
}
if (
dataConfig.dataType === DATA_TYPE.VARIABLE &&
!data2.every((item2) => Variable.isNumberType({ type: item2.type }))
) {
ElMessage.warning(
'\u53D8\u91CF\u7C7B\u578B\u53EA\u80FD\u4E3A\u6D6E\u70B9\u578B\u6216\u6574\u578B'
)
return
}
let currentIndexesId = dataConfig.indexes.map((item2) => item2.id)
dataConfig.indexes.push(
...data2
.filter((item2) => !currentIndexesId.includes(item2.id))
.map((item2) => {
return {
id: item2.id,
fieldName: item2.name,
fieldType: getFieldType(item2.type),
aliasName: '',
sort: 0,
align: 0,
mode: dataConfig.dataType === DATA_TYPE.VARIABLE ? null : 4,
dataFormat: 0,
yAxisIndex: 0,
}
})
)
showVariate.value = false
}
const handleShowVariate = () => {
checkedKeys.value = dataConfig.indexes.map((item2) => item2.id)
showVariate.value = true
isMultiple2.value = true
}
let sortable
const sortableInit = () => {
sortable = Sortable.create(
document.querySelector('.indexes>.content>.list'),
{
animation: 150,
onStart: () => {},
onEnd: (val2) => {
let oldIndex2 = val2.oldIndex
let newIndex2 = val2.newIndex
const currRow = dataConfig.indexes.splice(oldIndex2, 1)[0]
dataConfig.indexes.splice(newIndex2, 0, currRow)
},
}
)
}
onMounted(() => {
chartNode.value = widgetStore[node2.is || '']
sortableInit()
})
onUnmounted(() => {
if (sortable) sortable.destroy()
})
return (_ctx, _cache) => {
const _component_el_select = resolveComponent('el-select')
const _component_el_option = resolveComponent('el-option')
return (
openBlock(),
createElementBlock('div', _hoisted_1$5G, [
createElementVNode('div', _hoisted_2$4K, [
_hoisted_3$4i,
createElementVNode('div', _hoisted_4$3L, [
unref(dataConfig).indexes.length
? (openBlock(),
createElementBlock('i', {
key: 0,
class: 'editorbtn iconfont icon-tianjiahuamian',
onClick: handleAddData,
}))
: (openBlock(),
createElementBlock(
'div',
{
key: 1,
class: 'addbtn',
onClick: handleAddData,
},
_hoisted_6$32
)),
createElementVNode('i', {
class: 'editorbtn iconfont icon-shezhi',
onClick:
_cache[0] ||
(_cache[0] = () => {
fieldEditVisible.value = true
}),
}),
]),
]),
withDirectives(
createElementVNode(
'div',
_hoisted_7$2H,
[
createElementVNode(
'div',
{
class: 'list',
onUpdate:
_cache[1] || (_cache[1] = (e2) => e2.stopPropagation()),
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(dataConfig).indexes, (item2, index2) => {
return (
openBlock(),
createElementBlock(
'div',
{
key: item2.id + index2,
class: 'item',
},
[
__props2.dataType === 0
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
unref(dataConfig).dataSetId &&
!$props2.indexesList.length
? (openBlock(),
createBlock(_component_el_select, {
key: 0,
class:
'cms-el-select-trigger-yellow',
'popper-class':
'cms-el-select-popper-yellow',
placeholder: 'loading',
}))
: (openBlock(),
createBlock(
_component_el_select,
{
key: 1,
modelValue: item2.id,
'onUpdate:modelValue': ($event) =>
(item2.id = $event),
class:
'cms-el-select-trigger-yellow',
'popper-class':
'cms-el-select-popper-yellow',
placeholder: '\u8BF7\u9009\u62E9',
onFocus: () => {
oldField.value = unref(
lodash$2.exports.cloneDeep
)(item2)
},
onChange: (id2) => {
changeField2(index2, id2)
},
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
currentIndexesList.value,
(item22) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item22.value,
label: item22.label,
value: item22.value,
disabled:
item22.disabled,
},
null,
8,
[
'label',
'value',
'disabled',
]
)
)
}
),
128
)),
]),
_: 2,
},
1032,
[
'modelValue',
'onUpdate:modelValue',
'onFocus',
'onChange',
]
)),
],
64
))
: (openBlock(),
createElementBlock(
'span',
_hoisted_8$2p,
toDisplayString$1(item2.fieldName),
1
)),
showAggregate.value
? (openBlock(),
createElementBlock(
Fragment,
{ key: 2 },
[
item2.fieldType === 1
? (openBlock(),
createBlock(
_component_el_select,
{
key: 0,
modelValue: item2.mode,
'onUpdate:modelValue': ($event) =>
(item2.mode = $event),
class:
'mode cms-el-select-trigger-yellow',
'popper-class':
'cms-el-select-popper-yellow',
placeholder: '\u8BF7\u9009\u62E9',
onFocus: () => {
oldField.value = unref(
lodash$2.exports.cloneDeep
)(item2)
},
onChange: (mode2) => {
changeMode(index2)
},
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
modeFormNumber.value,
(option2, i2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: i2,
label: option2.name,
value:
option2.value,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
[
'modelValue',
'onUpdate:modelValue',
'onFocus',
'onChange',
]
))
: (openBlock(),
createBlock(
_component_el_select,
{
key: 1,
modelValue: item2.mode,
'onUpdate:modelValue': ($event) =>
(item2.mode = $event),
class:
'mode cms-el-select-trigger-yellow',
'popper-class':
'cms-el-select-popper-yellow',
placeholder: '\u8BF7\u9009\u62E9',
onFocus: () => {
oldField.value = unref(
lodash$2.exports.cloneDeep
)(item2)
},
onChange: (mode2) => {
changeMode(index2)
},
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
modeFormDate.value,
(option2, i2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: i2,
label: option2.name,
value:
option2.value,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
[
'modelValue',
'onUpdate:modelValue',
'onFocus',
'onChange',
]
)),
],
64
))
: createCommentVNode('', true),
createElementVNode(
'i',
{
class: 'delbtn iconfont icon-qingchu',
onClick: ($event) =>
unref(dataConfig).indexes.splice(index2, 1),
},
null,
8,
_hoisted_9$2d
),
]
)
)
}),
128
)),
],
32
),
],
512
),
[[vShow, unref(dataConfig).indexes.length]]
),
createVNode$1(
DataFeildConfig,
{
node: unref(node2),
visible: fieldEditVisible.value,
onCallback: fieldEditCallback,
dataType: __props2.dataType,
},
null,
8,
['node', 'visible', 'dataType']
),
showVariate.value
? (openBlock(),
createBlock(
_sfc_main$6Q,
{
key: 0,
visible: showVariate.value,
'no-language': true,
'is-append-to-body': true,
'is-multiple': isMultiple2.value,
'default-check-key': checkedKeys.value,
'disabled-keys': disabledKeys.value,
'default-data-types': defaultDataTypes.value,
'is-configure-history': isConfigureHistory.value,
onConfirm: handleVariateConfirm,
onCancel:
_cache[2] ||
(_cache[2] = ($event) => (showVariate.value = false)),
},
null,
8,
[
'visible',
'is-multiple',
'default-check-key',
'disabled-keys',
'default-data-types',
'is-configure-history',
]
))
: createCommentVNode('', true),
])
)
}
},
})
var DataIndexes = /* @__PURE__ */ _export_sfc(_sfc_main$6I, [
['__scopeId', 'data-v-43345d0b'],
])
var DataIndexes$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: DataIndexes,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Data_vue_vue_type_style_index_0_scoped_true_lang$2 = ''
var Data_vue_vue_type_style_index_1_lang$1 = ''
const _withScopeId$3f = (n2) => (
pushScopeId('data-v-9c02782e'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$5F = { class: 'data' }
const _hoisted_2$4J = { class: 'dataSet flex justify-start' }
const _hoisted_3$4h = { class: 'dataSet' }
const _hoisted_4$3K = /* @__PURE__ */ _withScopeId$3f(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'padding-head-icon iconfont icon-tishi1',
'data-tooltip-raw-content': '',
title:
'\u82E5\u9700\u5C55\u793A\u5B9E\u65F6\u6027\u8981\u6C42\u9AD8\u7684\u6570\u636E\uFF0C\u8BF7\u9009\u62E9\u4F7F\u7528\u5B9E\u65F6\u7F13\u5B58\uFF0C
\u6B64\u65F6\u6570\u636E\u65E0\u5904\u7406\uFF0C\u5206\u7EC4\u805A\u5408\u53CA\u6392\u5E8F\u65E0\u6548\uFF0C\u9ED8\u8BA4\u5C55\u793A\u7F13\u5B58\u7684\u539F\u59CB\u6570\u636E\u3002
\u6B64\u5916\u82E5\u66F4\u6539\u5F52\u6863\u8868\u76F8\u5173\u914D\u7F6E\u5C06\u81EA\u52A8\u6E05\u9664\u5176\u5B9E\u65F6\u7F13\u5B58\uFF0C\u5305\u62EC\u5B57\u6BB5\u914D\u7F6E\u3001\u5F52\u6863\u89E6\u53D1\u3001\u50A8\u5B58\u53CA\u5B9E\u65F6\u7F13\u5B58\u8BBE\u7F6E\u3002',
},
null,
-1
)
)
const _hoisted_5$3o = {
key: 0,
class: 'auto-update limit',
}
const _hoisted_6$31 = /* @__PURE__ */ _withScopeId$3f(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
[
/* @__PURE__ */ createTextVNode('\u6570\u636E\u52A0\u8F7D: '),
/* @__PURE__ */ createElementVNode('i', {
class: 'padding-head-icon iconfont icon-tishi1',
'data-tooltip-raw-content': '',
title:
'\u2460\u7F16\u8F91\uFF1A\u8BBE\u5B9A\u914D\u7F6E\u8C03\u8BD5\u6700\u5927\u52A0\u8F7D\u6570\u636E\u91CF
\u2461\u8FD0\u884C\uFF1A\u8BBE\u5B9A\u5DE5\u7A0B\u5B9E\u9645\u8FD0\u884C\u65F6\u6700\u5927\u52A0\u8F7D\u6570\u636E\u91CF',
}),
],
-1
)
)
const _hoisted_7$2G = { class: 'flex' }
const _hoisted_8$2o = { class: 'limit-editing' }
const _hoisted_9$2c = /* @__PURE__ */ _withScopeId$3f(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u7F16\u8F91', -1)
)
const _hoisted_10$1$ = { class: 'limit-running' }
const _hoisted_11$1S = /* @__PURE__ */ _withScopeId$3f(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u8FD0\u884C', -1)
)
const _hoisted_12$1M = {
class: 'auto-update flex',
style: { padding: '0 7px' },
}
const _hoisted_13$1A = /* @__PURE__ */ _withScopeId$3f(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u79D2\u4E00\u6B21', -1)
)
const _sfc_main$6H = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const treeRef = ref()
const treeProps2 = {
label: 'name',
disabled: false,
}
const node2 = reactive($props2.node)
const props2 = reactive(node2.props)
const dataConfig = reactive(props2.dataConfig)
const dataSetList = ref([])
const dimissionsList = ref([])
const indexesList = ref([])
const dataType2 = computed({
get() {
return props2.dataConfig.dataType || 0
},
set(val2) {
props2.dataConfig.dataType = val2
},
})
let editingLimit = ref(
isChartPie(node2)
? props2.pieConfig.dataConfig.editingLimit
: dataConfig.editingLimit
)
let runningLimit = ref(
isChartPie(node2)
? props2.pieConfig.dataConfig.runningLimit
: dataConfig.runningLimit
)
const changeLimit = (val2, type4) => {
if (isChartPie(node2)) {
props2.pieConfig.dataConfig[type4] = val2
} else {
dataConfig[type4] = val2
}
}
const handleData = (res) => {
dimissionsList.value = []
indexesList.value = []
for (let i2 = 0, iLen = res.length; i2 < iLen; i2++) {
const item2 = res[i2]
if (!item2.fieldType) continue
const newItem = {
id: item2.id,
fieldName: item2.fieldName,
fieldType: item2.fieldType,
aliasName: '',
sort: 0,
align: 0,
mode: 0,
dataFormat: 0,
}
dimissionsList.value.push(newItem)
indexesList.value.push(newItem)
for (let n2 = 0, nLen = dataConfig.dimissions.length; n2 < nLen; n2++) {
const element = dataConfig.dimissions[n2]
if (element.id === newItem.id) {
element.fieldName = newItem.fieldName
break
}
}
for (let n2 = 0, nLen = dataConfig.indexes.length; n2 < nLen; n2++) {
const element = dataConfig.indexes[n2]
if (element.id === newItem.id) {
element.fieldName = newItem.fieldName
break
}
}
}
}
const getData = () => {
const loop = (list2) => {
for (let i2 = 0; i2 < list2.length; i2++) {
let item2 = list2[i2]
item2.value = item2.id
item2.disabled = item2.nodeType === 1 ? true : false
if (item2.children && item2.children.length) loop(item2.children)
}
}
request({
url: `/api/v1/dataconfig/tree`,
method: 'get',
silent: true,
})
.then((res) => {
if (res && res.length) {
loop(res)
dataSetList.value = res
if (dataConfig.dataSetId) {
nextTick(() => {
if (treeRef.value) {
const currentNode = treeRef.value.getNode(
dataConfig.dataSetId
)
if (currentNode) selectDataSet(currentNode.data, false)
}
})
}
}
})
.catch((err) => {
console.error('err', err)
})
}
const selectDataSet = async (node22, isClick = true) => {
if (node22.nodeType === 0 || node22.nodeType === 1) {
dataConfig.dataSetId = ''
dimissionsList.value = []
indexesList.value = []
dataConfig.dimissions = []
dataConfig.indexes = []
dataConfig.useCache = false
treeRef.value.setCheckedKeys([], false)
return
}
dataConfig.dataSetId = node22.id
dataConfig.dataSetType = node22.nodeType
if (isClick) {
dataConfig.dimissions = []
dataConfig.indexes = []
dataConfig.useCache = false
props2.chartConfig.markLine = []
}
let fieldList = await fetchDataSetFieldList(node22.id, node22.nodeType)
handleData(fieldList)
}
const init2 = () => {
getData()
}
const handleChangeDataType = async (val2) => {
dataConfig.dimissions = []
dataConfig.indexes = []
props2.dataConfig.isVariableName = false
emit(ControllerEventType.UN_UNION_FILTER, {
removeChartId: node2.id,
prevControllerId: node2.props.dataConfig.queryControllerId,
})
if (val2 === DATA_TYPE.AGGREGATE) {
init2()
} else if (val2 === DATA_TYPE.HISTORY) {
props2.dataConfig.dataSetId = ''
dimissionsList.value = DIMENSION_LIST
props2.dataConfig.dimissions = [
lodash$2.exports.cloneDeep(DIMENSION_LIST[0]),
]
if (node2.is === 'ChartCard') {
props2.dataConfig.isVariableName = true
} else {
props2.dataConfig.isVariableName = false
}
} else if (val2 === DATA_TYPE.VARIABLE) {
props2.dataConfig.dataSetId = ''
props2.dataConfig.queryControllerId = ''
dimissionsList.value = [DIMENSION_LIST[1]]
props2.dataConfig.dimissions = [
lodash$2.exports.cloneDeep(DIMENSION_LIST[1]),
]
props2.dataConfig.isVariableName = true
}
}
onMounted(() => {
if (dataType2.value === DATA_TYPE.AGGREGATE) {
init2()
} else if (dataType2.value === DATA_TYPE.HISTORY) {
dimissionsList.value = DIMENSION_LIST
} else if (dataType2.value === DATA_TYPE.VARIABLE) {
dimissionsList.value = [DIMENSION_LIST[1]]
}
})
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_tree_select = resolveComponent('el-tree-select')
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_input_number = resolveComponent('el-input-number')
return (
openBlock(),
createBlock(
_sfc_main$72,
{
title: '\u6570\u636E',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$5F, [
createElementVNode('div', _hoisted_2$4J, [
createVNode$1(
_component_el_select,
{
modelValue: dataType2.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (dataType2.value = $event)),
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
style: { width: '100px' },
onChange: handleChangeDataType,
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
label: '\u805A\u5408\u6570\u636E',
value: 0,
}),
createVNode$1(_component_el_option, {
label: '\u5386\u53F2\u6570\u636E',
value: 1,
}),
createVNode$1(_component_el_option, {
label: '\u5B9E\u65F6\u53D8\u91CF',
value: 2,
}),
]),
_: 1,
},
8,
['modelValue']
),
!dataType2.value
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
!dataSetList.value.length
? (openBlock(),
createBlock(
_component_el_tree_select,
{
key: 0,
class: 'cms-el-select-x data-tree-select',
'popper-class': 'cms-el-select_check',
placeholder: unref(dataConfig).indexes.length
? '\u793A\u4F8B'
: 'loading',
persistent: '',
},
null,
8,
['placeholder']
))
: (openBlock(),
createBlock(
_component_el_tree_select,
{
key: 1,
ref_key: 'treeRef',
ref: treeRef,
'node-key': 'id',
class: 'cms-el-select-x data-tree-select',
'popper-class': 'cms-el-select_check',
modelValue: unref(dataConfig).dataSetId,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(dataConfig).dataSetId = $event)),
data: dataSetList.value,
'show-all-levels': false,
props: treeProps2,
onNodeClick: selectDataSet,
placeholder: '\u793A\u4F8B',
persistent: '',
teleported: true,
},
null,
8,
['modelValue', 'data']
)),
],
64
))
: createCommentVNode('', true),
]),
withDirectives(
createElementVNode(
'div',
_hoisted_3$4h,
[
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(dataConfig).useCache,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(dataConfig).useCache = $event)),
label: '\u4F7F\u7528\u5B9E\u65F6\u7F13\u5B58',
class: 'cms-el-checkbox-font-size-12 checkbox',
},
null,
8,
['modelValue']
),
_hoisted_4$3K,
],
512
),
[
[
vShow,
unref(dataConfig).dataSetType == 2 &&
unref(useCacheCharts)(unref(node2)) &&
dataType2.value === 0,
],
]
),
createVNode$1(
DataDimissions,
{
node: unref(node2),
dimissionsList: dimissionsList.value,
indexesList: indexesList.value,
dataType: dataType2.value,
},
null,
8,
['node', 'dimissionsList', 'indexesList', 'dataType']
),
createVNode$1(
DataIndexes,
{
node: unref(node2),
dimissionsList: dimissionsList.value,
indexesList: indexesList.value,
dataType: dataType2.value,
},
null,
8,
['node', 'dimissionsList', 'indexesList', 'dataType']
),
dataType2.value !== 2
? (openBlock(),
createElementBlock('div', _hoisted_5$3o, [
_hoisted_6$31,
createElementVNode('div', _hoisted_7$2G, [
createElementVNode('div', _hoisted_8$2o, [
_hoisted_9$2c,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
'controls-position': 'right',
modelValue: editingLimit.value,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(editingLimit.value = $event)),
min: 0,
max: 1e6,
onInput:
_cache[4] ||
(_cache[4] = ($event) =>
changeLimit($event, 'editingLimit')),
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_10$1$, [
_hoisted_11$1S,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
'controls-position': 'right',
modelValue: runningLimit.value,
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) =>
(runningLimit.value = $event)),
min: 0,
max: 1e6,
onInput:
_cache[6] ||
(_cache[6] = ($event) =>
changeLimit($event, 'runningLimit')),
},
null,
8,
['modelValue']
),
]),
]),
]))
: createCommentVNode('', true),
withDirectives(
createElementVNode(
'div',
_hoisted_12$1M,
[
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(dataConfig).audoRefresh,
'onUpdate:modelValue':
_cache[7] ||
(_cache[7] = ($event) =>
(unref(dataConfig).audoRefresh = $event)),
label: '\u81EA\u52A8\u5237\u65B0\u6570\u636E',
size: 'large',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
'controls-position': 'right',
modelValue: unref(dataConfig).audoRefreshTime,
'onUpdate:modelValue':
_cache[8] ||
(_cache[8] = ($event) =>
(unref(dataConfig).audoRefreshTime = $event)),
min: 1,
},
null,
8,
['modelValue']
),
_hoisted_13$1A,
],
512
),
[
[
vShow,
(!unref(dataConfig).useCache ||
!unref(useCacheCharts)(unref(node2))) &&
dataType2.value !== 2,
],
]
),
]),
]),
_: 1,
}
)
)
}
},
})
var Data$4 = /* @__PURE__ */ _export_sfc(_sfc_main$6H, [
['__scopeId', 'data-v-9c02782e'],
])
var Data$5 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Data$4,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Type_vue_vue_type_style_index_0_scoped_true_lang$1 = ''
const _hoisted_1$5E = { class: 'chart-type' }
const _hoisted_2$4I = {
class: 'iconfont svg-icon',
'aria-hidden': 'true',
}
const _hoisted_3$4g = ['xlink:href']
const _sfc_main$6G = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
const typeList = [
{ is: 'ChartBar', name: '\u67F1\u72B6\u56FE' },
{ is: 'ChartBarHorizontal', name: '\u6761\u5F62\u56FE' },
{
is: 'ChartBarHorizontalStacked',
name: '\u5806\u79EF\u6761\u5F62\u56FE',
},
{ is: 'ChartBarStacked', name: '\u5806\u79EF\u67F1\u72B6\u56FE' },
{ is: 'ChartCard', name: '\u6307\u6807\u5361' },
{ is: 'ChartLine', name: '\u6298\u7EBF\u56FE' },
{ is: 'ChartLineArea', name: '\u9762\u79EF\u56FE' },
{ is: 'ChartLineAreaStacked', name: '\u5806\u79EF\u9762\u79EF\u56FE' },
{ is: 'ChartPie', name: '\u997C\u56FE' },
{ is: 'ChartPieRing', name: '\u73AF\u5F62\u56FE' },
{ is: 'ChartPieRose', name: '\u73AB\u7470\u56FE' },
{ is: 'ChartTable', name: '\u8868\u683C' },
]
let widget = ref(widgetStore[node2.is || ''])
function change2() {
widget.value = widgetStore[node2.is || '']
node2.name = widget.value.name
}
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
return (
openBlock(),
createBlock(
_sfc_main$72,
{
title: '\u56FE\u8868\u7C7B\u578B',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$5E, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
modelValue: unref(node2).is,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (unref(node2).is = $event)),
onChange: change2,
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(typeList, (typeItem, i2) => {
return createVNode$1(
_component_el_option,
{
key: i2,
label: typeItem.name || 'TODO',
value: typeItem.is,
},
null,
8,
['label', 'value']
)
}),
64
)),
]),
_: 1,
},
8,
['modelValue']
),
(openBlock(),
createElementBlock('svg', _hoisted_2$4I, [
createElementVNode(
'use',
{
'xlink:href': '#' + widget.value?.icon,
},
null,
8,
_hoisted_3$4g
),
])),
]),
]),
_: 1,
}
)
)
}
},
})
var Type$3 = /* @__PURE__ */ _export_sfc(_sfc_main$6G, [
['__scopeId', 'data-v-2d97c9dc'],
])
var Type$4 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Type$3,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Title_vue_vue_type_style_index_0_scoped_true_lang$1 = ''
const _withScopeId$3e = (n2) => (
pushScopeId('data-v-c1e18cc8'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$5D = { class: 'title-setting' }
const _hoisted_2$4H = /* @__PURE__ */ _withScopeId$3e(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'checkbox-text' },
'\u663E\u793A\u6807\u9898',
-1
)
)
const _hoisted_3$4f = { class: 'text' }
const _sfc_main$6F = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
const props2 = reactive(node2.props)
const title = reactive(props2.chartConfig.title)
const changeText = () => {
if (!title.text.trim()) {
title.text = node2.name
}
node2.name = title.text
}
onMounted(() => {
changeText()
})
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_input = resolveComponent('el-input')
return (
openBlock(),
createBlock(
_sfc_main$72,
{
title: '\u6807\u9898',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$5D, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(title).show,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (unref(title).show = $event)),
class: 'cms-el-checkbox-font-size-12',
},
{
default: withCtx(() => [_hoisted_2$4H]),
_: 1,
},
8,
['modelValue']
),
createElementVNode('div', _hoisted_3$4f, [
createVNode$1(
_component_el_input,
{
disabled: !unref(title).show,
class: 'input cms-el-input-x',
modelValue: unref(title).text,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) => (unref(title).text = $event)),
placeholder: unref(node2).name,
onChange: changeText,
},
null,
8,
['disabled', 'modelValue', 'placeholder']
),
]),
]),
]),
_: 1,
}
)
)
}
},
})
var Title$2 = /* @__PURE__ */ _export_sfc(_sfc_main$6F, [
['__scopeId', 'data-v-c1e18cc8'],
])
var Title$3 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Title$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const colorList = [
'rgba(0,0,0, 0)',
'#fff',
'#000',
'#f00',
'#0f0',
'#00f',
'#1CC87A',
'#F84D4D',
'#FEBF72',
'#4D64F8',
'#646464',
]
const fontFamilyList = [
{
label: 'system-ui',
value: 'system-ui',
},
{
label: '\u7B49\u5BBD\u4F53',
value: 'monospace',
},
{
label: '\u624B\u5199\u4F53',
value: 'cursive',
},
{
label: '\u886C\u7EBF\u4F53',
value: 'serif',
},
{
label: '\u65E0\u886C\u7EBF\u4F53',
value: 'sans-serif',
},
{
label: '\u5FAE\u8F6F\u96C5\u9ED1',
value: '"Microsoft YaHei"',
hidden: true,
},
{
label: '\u963F\u91CC\u5DF4\u5DF4\u666E\u60E0\u4F53',
value: '"Alibaba PuHuiTi"',
hidden: true,
},
]
var Label_vue_vue_type_style_index_0_scoped_true_lang$1 = ''
const _withScopeId$3d = (n2) => (
pushScopeId('data-v-181e9f78'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$5C = { class: 'label' }
const _hoisted_2$4G = { class: 'content' }
const _hoisted_3$4e = /* @__PURE__ */ _withScopeId$3d(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u5B57\u4F53',
-1
)
)
const _hoisted_4$3J = { class: 'cms-el-color-picker-x' }
const _hoisted_5$3n = { class: 'content' }
const _hoisted_6$30 = /* @__PURE__ */ _withScopeId$3d(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u4F4D\u7F6E',
-1
)
)
const _hoisted_7$2F = { class: 'set-align' }
const _hoisted_8$2n = ['onClick']
const _sfc_main$6E = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const props2 = reactive($props2.node.props)
const positionList = reactive([
{
label: '\u5916\u4FA7',
value: 'outside',
},
{
label: '\u5185\u4FA7',
value: 'inside',
},
])
const changeColor = (color2) => {
props2.chartConfig.label.color = color2
}
const changeLablePosition = (val2) => {
props2.chartConfig.label.position = val2
}
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_color_picker = resolveComponent('el-color-picker')
return (
openBlock(),
createBlock(
_sfc_main$72,
{
title: '\u6807\u7B7E',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$5C, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(props2).chartConfig.label.show,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(props2).chartConfig.label.show = $event)),
label: '\u663E\u793A\u6807\u7B7E',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
withDirectives(
createElementVNode(
'div',
null,
[
createElementVNode('div', _hoisted_2$4G, [
_hoisted_3$4e,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x fontFamily',
'popper-class': 'cms-el-select_check',
modelValue:
unref(props2).chartConfig.label.fontFamily,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(props2).chartConfig.label.fontFamily =
$event)),
'allow-create': '',
filterable: '',
placeholder: '\u5B57\u4F53',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(fontFamilyList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
hidden: item2.hidden,
},
null,
8,
['label', 'value', 'hidden']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x fontSize',
modelValue:
unref(props2).chartConfig.label.fontSize,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(props2).chartConfig.label.fontSize =
$event)),
min: 0,
max: 36,
controls: false,
},
null,
8,
['modelValue']
),
createElementVNode('div', _hoisted_4$3J, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
'model-value':
unref(props2).chartConfig.label.color,
onActiveChange:
_cache[3] ||
(_cache[3] = (e2) => changeColor(e2)),
},
null,
8,
['predefine', 'model-value']
),
]),
]),
createElementVNode('div', _hoisted_5$3n, [
_hoisted_6$30,
createElementVNode('div', _hoisted_7$2F, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(positionList), (item2) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'text-radio',
{
active:
unref(props2).chartConfig.label
.position === item2.value,
},
]),
key: item2.value,
onClick: () =>
changeLablePosition(item2.value),
},
toDisplayString$1(item2.label),
11,
_hoisted_8$2n
)
)
}),
128
)),
]),
]),
],
512
),
[[vShow, unref(props2).chartConfig.label.show]]
),
]),
]),
_: 1,
}
)
)
}
},
})
var Label$1 = /* @__PURE__ */ _export_sfc(_sfc_main$6E, [
['__scopeId', 'data-v-181e9f78'],
])
var Label$2 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Label$1,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var LegendColor_vue_vue_type_style_index_0_lang = ''
var LegendColor_vue_vue_type_style_index_1_scoped_true_lang = ''
const _withScopeId$3c = (n2) => (
pushScopeId('data-v-6defb919'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$5B = { class: 'legend-color-content' }
const _hoisted_2$4F = /* @__PURE__ */ _withScopeId$3c(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'header' },
[
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u56FE\u4F8B'
),
],
-1
)
)
const _hoisted_3$4d = { class: 'content' }
const _hoisted_4$3I = { class: 'items flex' }
const _hoisted_5$3m = { class: 'cms-el-color-picker-x' }
const _hoisted_6$2$ = { class: 'title' }
const _hoisted_7$2E = { class: 'select-theme' }
const _hoisted_8$2m = /* @__PURE__ */ _withScopeId$3c(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u9009\u62E9\u4E3B\u9898',
-1
)
)
const _hoisted_9$2b = { class: 'select-theme-content' }
const _hoisted_10$1_ = { class: 'title' }
const _hoisted_11$1R = ['onClick']
const _hoisted_12$1L = { class: 'el-dialog__footer' }
const _sfc_main$6D = /* @__PURE__ */ defineComponent({
props: {
node: null,
visible: { type: Boolean },
},
emits: ['callback'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const props2 = reactive($props2.node.props)
const visible = ref(false)
const legendColorList = ref([])
const initColor = () => {
legendColorList.value = props2.chartConfig.legend.itemColorList.map(
(color2, i2) => {
return {
name: '\u56FE\u4F8B' + (i2 + 1),
color: color2,
}
}
)
}
const setColor = () => {
props2.chartConfig.legend.itemColorList = legendColorList.value.map(
(item2) => item2.color
)
}
const selectTheme = (themeIndex) => {
const list2 = themeList[themeIndex]
for (let i2 = 0, iLen = list2.length; i2 < iLen; i2++) {
legendColorList.value[i2].color = list2[i2]
}
}
const submit = (state2) => {
if (state2 === 'confirm') setColor()
emit2('callback', state2)
}
watch$1(
() => $props2.visible,
(newVal) => {
visible.value = newVal
initColor()
}
)
return (_ctx, _cache) => {
const _component_el_color_picker = resolveComponent('el-color-picker')
const _component_el_popover = resolveComponent('el-popover')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
modelValue: visible.value,
'onUpdate:modelValue':
_cache[2] || (_cache[2] = ($event) => (visible.value = $event)),
width: '475px',
title: '\u4FEE\u6539\u8272\u7CFB',
'close-on-click-modal': false,
'close-on-press-escape': false,
'custom-class': 'cms-el-dialog legend-color',
onClose: _cache[3] || (_cache[3] = ($event) => submit('close')),
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$5B, [
_hoisted_2$4F,
createElementVNode('div', _hoisted_3$4d, [
createElementVNode('div', _hoisted_4$3I, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(legendColorList.value, (item2, i2) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'item flex',
key: i2,
},
[
createElementVNode('div', _hoisted_5$3m, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
modelValue: item2.color,
'onUpdate:modelValue': ($event) =>
(item2.color = $event),
},
null,
8,
[
'predefine',
'modelValue',
'onUpdate:modelValue',
]
),
]),
createElementVNode(
'span',
_hoisted_6$2$,
toDisplayString$1(item2.name),
1
),
]
)
)
}),
128
)),
]),
createElementVNode('div', _hoisted_7$2E, [
createVNode$1(
_component_el_popover,
{
width: 280,
'popper-class': 'select-theme-popover',
trigger: 'click',
},
{
reference: withCtx(() => [_hoisted_8$2m]),
default: withCtx(() => [
createElementVNode('div', _hoisted_9$2b, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(themeList), (theme2, i2) => {
return (
openBlock(),
createElementBlock(
'div',
{
key: i2,
class: 'theme flex',
},
[
createElementVNode(
'div',
_hoisted_10$1_,
'\u4E3B\u9898' +
toDisplayString$1(i2 + 1) +
'\uFF1A',
1
),
createElementVNode(
'div',
{
class: 'content flex',
onClick: ($event) => selectTheme(i2),
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(theme2, (color2, n2) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'color',
key: n2,
style: normalizeStyle$1(
`background-color: ${color2}`
),
},
null,
4
)
)
}),
128
)),
],
8,
_hoisted_11$1R
),
]
)
)
}),
128
)),
]),
]),
_: 1,
}
),
]),
]),
]),
createElementVNode('div', _hoisted_12$1L, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick:
_cache[0] || (_cache[0] = ($event) => submit('close')),
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick:
_cache[1] || (_cache[1] = ($event) => submit('confirm')),
},
'\u786E\u8BA4'
),
]),
]),
_: 1,
},
8,
['modelValue']
)
)
}
},
})
var LegendColor = /* @__PURE__ */ _export_sfc(_sfc_main$6D, [
['__scopeId', 'data-v-6defb919'],
])
var LegendColor$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: LegendColor,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Legend_vue_vue_type_style_index_0_scoped_true_lang$1 = ''
const _withScopeId$3b = (n2) => (
pushScopeId('data-v-2d2663dc'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$5A = { class: 'legend' }
const _hoisted_2$4E = { class: 'header' }
const _hoisted_3$4c = { class: 'content' }
const _hoisted_4$3H = /* @__PURE__ */ _withScopeId$3b(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u5B57\u4F53\uFF1A',
-1
)
)
const _hoisted_5$3l = { class: 'cms-el-color-picker-x' }
const _hoisted_6$2_ = { class: 'content' }
const _hoisted_7$2D = /* @__PURE__ */ _withScopeId$3b(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u56FE\u4F8B\u4F4D\u7F6E\uFF1A',
-1
)
)
const _hoisted_8$2l = { class: 'set-align' }
const _hoisted_9$2a = /* @__PURE__ */ _withScopeId$3b(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-weizhi-shang',
title: '\u4E0A',
},
null,
-1
)
)
const _hoisted_10$1Z = [_hoisted_9$2a]
const _hoisted_11$1Q = /* @__PURE__ */ _withScopeId$3b(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-weizhi-zhong',
title: '\u4E2D',
},
null,
-1
)
)
const _hoisted_12$1K = [_hoisted_11$1Q]
const _hoisted_13$1z = /* @__PURE__ */ _withScopeId$3b(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-weizhi-xia',
title: '\u4E0B',
},
null,
-1
)
)
const _hoisted_14$1o = [_hoisted_13$1z]
const _hoisted_15$1j = { class: 'content flex justify-start' }
const _hoisted_16$1h = /* @__PURE__ */ _withScopeId$3b(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u8272\u7CFB\uFF1A',
-1
)
)
const _hoisted_17$1a = { class: 'colors-popover' }
const _hoisted_18$12 = ['onClick']
const _sfc_main$6C = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
const props2 = reactive($props2.node.props)
const itemColorList = computed(
() => props2.chartConfig.legend.itemColorList
)
const changeColor = (color2) => {
props2.chartConfig.legend.color = color2
}
let legendColorVisible = ref(false)
const legendColorCallback = () => {
legendColorVisible.value = false
}
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_color_picker = resolveComponent('el-color-picker')
const _component_el_popover = resolveComponent('el-popover')
return (
openBlock(),
createBlock(
_sfc_main$72,
{
title: '\u56FE\u4F8B',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$5A, [
createElementVNode('div', _hoisted_2$4E, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(props2).chartConfig.legend.show,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(props2).chartConfig.legend.show = $event)),
label: '\u663E\u793A\u56FE\u4F8B',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
]),
withDirectives(
createElementVNode(
'div',
null,
[
createElementVNode('div', _hoisted_3$4c, [
_hoisted_4$3H,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x fontFamily',
'popper-class': 'cms-el-select_check',
modelValue:
unref(props2).chartConfig.legend.fontFamily,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(props2).chartConfig.legend.fontFamily =
$event)),
'allow-create': '',
filterable: '',
placeholder: '\u5B57\u4F53',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(fontFamilyList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
hidden: item2.hidden,
},
null,
8,
['label', 'value', 'hidden']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x fontSize',
modelValue:
unref(props2).chartConfig.legend.fontSize,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(props2).chartConfig.legend.fontSize =
$event)),
min: 0,
max: 36,
controls: false,
},
null,
8,
['modelValue']
),
createElementVNode('div', _hoisted_5$3l, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
'model-value':
unref(props2).chartConfig.legend.color,
onActiveChange:
_cache[3] ||
(_cache[3] = (e2) => changeColor(e2)),
},
null,
8,
['predefine', 'model-value']
),
]),
]),
createElementVNode('div', _hoisted_6$2_, [
_hoisted_7$2D,
createElementVNode('div', _hoisted_8$2l, [
createElementVNode(
'div',
{
class: normalizeClass([
'icon-radio',
{
active:
unref(props2).chartConfig.legend
.position === 'top',
},
]),
onClick:
_cache[4] ||
(_cache[4] = () =>
(unref(props2).chartConfig.legend.position =
'top')),
},
_hoisted_10$1Z,
2
),
createElementVNode(
'div',
{
class: normalizeClass([
'icon-radio',
{
active:
unref(props2).chartConfig.legend
.position === 'right',
},
]),
onClick:
_cache[5] ||
(_cache[5] = () =>
(unref(props2).chartConfig.legend.position =
'right')),
},
_hoisted_12$1K,
2
),
createElementVNode(
'div',
{
class: normalizeClass([
'icon-radio',
{
active:
unref(props2).chartConfig.legend
.position === 'bottom',
},
]),
onClick:
_cache[6] ||
(_cache[6] = () =>
(unref(props2).chartConfig.legend.position =
'bottom')),
},
_hoisted_14$1o,
2
),
]),
]),
createElementVNode('div', _hoisted_15$1j, [
_hoisted_16$1h,
createVNode$1(
_component_el_popover,
{
placement: 'bottom',
width: 200,
trigger: 'click',
},
{
reference: withCtx(() => [
createElementVNode(
'div',
{
class: normalizeClass([
'colors',
{
interval:
unref(itemColorList)[0] ===
unref(itemColorList)[1],
},
]),
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(itemColorList),
(item2) => {
return (
openBlock(),
createElementBlock(
'div',
{
key: item2,
style: normalizeStyle$1({
backgroundColor: item2,
}),
},
null,
4
)
)
}
),
128
)),
],
2
),
]),
default: withCtx(() => [
createElementVNode('div', _hoisted_17$1a, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(themeList), (theme2, i2) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'colors',
{
interval: theme2[0] === theme2[1],
active:
theme2.join() ===
unref(itemColorList).join(),
},
]),
key: i2,
onClick: ($event) =>
(unref(
props2
).chartConfig.legend.itemColorList =
theme2),
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(theme2, (item2) => {
return (
openBlock(),
createElementBlock(
'div',
{
key: item2,
style: normalizeStyle$1({
backgroundColor: item2,
}),
},
null,
4
)
)
}),
128
)),
],
10,
_hoisted_18$12
)
)
}),
128
)),
]),
]),
_: 1,
}
),
createElementVNode('i', {
class: 'legendColorBtn iconfont icon-bianjigongcheng',
onClick:
_cache[7] ||
(_cache[7] = () => {
isRef(legendColorVisible)
? (legendColorVisible.value = true)
: (legendColorVisible = true)
}),
}),
]),
],
512
),
[[vShow, unref(props2).chartConfig.legend.show]]
),
]),
createVNode$1(
LegendColor,
{
visible: unref(legendColorVisible),
node: unref(node2),
onCallback: legendColorCallback,
},
null,
8,
['visible', 'node']
),
]),
_: 1,
}
)
)
}
},
})
var Legend$2 = /* @__PURE__ */ _export_sfc(_sfc_main$6C, [
['__scopeId', 'data-v-2d2663dc'],
])
var Legend$3 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Legend$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var XAxis_vue_vue_type_style_index_0_scoped_true_lang$1 = ''
const _withScopeId$3a = (n2) => (
pushScopeId('data-v-23ebb37c'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$5z = { class: 'XAxis' }
const _hoisted_2$4D = { class: 'XAxis-item' }
const _hoisted_3$4b = { class: 'content' }
const _hoisted_4$3G = /* @__PURE__ */ _withScopeId$3a(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u6807\u9898',
-1
)
)
const _hoisted_5$3k = { class: 'content' }
const _hoisted_6$2Z = /* @__PURE__ */ _withScopeId$3a(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u5B57\u4F53',
-1
)
)
const _hoisted_7$2C = { class: 'cms-el-color-picker-x' }
const _hoisted_8$2k = { class: 'content' }
const _hoisted_9$29 = /* @__PURE__ */ _withScopeId$3a(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u4F4D\u7F6E',
-1
)
)
const _hoisted_10$1Y = { class: 'set-align' }
const _hoisted_11$1P = /* @__PURE__ */ _withScopeId$3a(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-xzhouweizhizuo',
title: '\u5F00\u5934',
},
null,
-1
)
)
const _hoisted_12$1J = [_hoisted_11$1P]
const _hoisted_13$1y = /* @__PURE__ */ _withScopeId$3a(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-xzhouweizhizhong',
title: '\u4E2D\u95F4',
},
null,
-1
)
)
const _hoisted_14$1n = [_hoisted_13$1y]
const _hoisted_15$1i = /* @__PURE__ */ _withScopeId$3a(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-xzhouweizhiyou',
title: '\u672B\u5C3E',
},
null,
-1
)
)
const _hoisted_16$1g = [_hoisted_15$1i]
const _hoisted_17$19 = { class: 'XAxis-item' }
const _hoisted_18$11 = { class: 'content' }
const _hoisted_19$Z = /* @__PURE__ */ _withScopeId$3a(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u6807\u7B7E',
-1
)
)
const _hoisted_20$T = { class: 'cms-el-color-picker-x' }
const _hoisted_21$J = { class: 'XAxis-item' }
const _hoisted_22$H = /* @__PURE__ */ _withScopeId$3a(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'header' },
'\u5C55\u793A\u65B9\u5F0F\uFF1A',
-1
)
)
const _hoisted_23$D = { class: 'content' }
const _hoisted_24$B = /* @__PURE__ */ createTextVNode('\u81EA\u9002\u5E94')
const _hoisted_25$w = /* @__PURE__ */ createTextVNode(
'\u5168\u91CF\u663E\u793A'
)
const _hoisted_26$t = /* @__PURE__ */ createTextVNode('\u81EA\u5B9A\u4E49')
const _hoisted_27$s = {
key: 0,
class: 'content',
}
const _hoisted_28$p = { class: 'custom' }
const _hoisted_29$m = /* @__PURE__ */ _withScopeId$3a(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u65CB\u8F6C\u89D2\u5EA6',
-1
)
)
const _hoisted_30$m = { class: 'custom' }
const _hoisted_31$j = /* @__PURE__ */ _withScopeId$3a(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u95F4\u9694\u6570\u91CF',
-1
)
)
const _hoisted_32$j = { class: 'XAxis-item' }
const _hoisted_33$j = { class: 'header' }
const _hoisted_34$f = { class: 'content' }
const _hoisted_35$f = /* @__PURE__ */ _withScopeId$3a(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u7EBF\u578B',
-1
)
)
const _hoisted_36$d = { class: 'cms-el-color-picker-x' }
const _hoisted_37$d = { class: 'XAxis-item' }
const _hoisted_38$c = { class: 'header' }
const _hoisted_39$b = { class: 'content' }
const _hoisted_40$b = /* @__PURE__ */ _withScopeId$3a(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u7EBF\u578B',
-1
)
)
const _hoisted_41$b = { class: 'cms-el-color-picker-x' }
const _sfc_main$6B = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const props2 = reactive($props2.node.props)
const changeDisplayMode = () => {
props2.axisConfig.xAxis.axisLabel.rotate = 0
props2.axisConfig.xAxis.axisLabel.interval = 0
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_color_picker = resolveComponent('el-color-picker')
const _component_el_radio = resolveComponent('el-radio')
const _component_el_radio_group = resolveComponent('el-radio-group')
const _component_el_checkbox = resolveComponent('el-checkbox')
return (
openBlock(),
createBlock(
_sfc_main$72,
{
title: 'X\u8F74',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$5z, [
createElementVNode('div', _hoisted_2$4D, [
createElementVNode('div', _hoisted_3$4b, [
_hoisted_4$3G,
createVNode$1(
_component_el_input,
{
modelValue: unref(props2).axisConfig.xAxis.title,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(props2).axisConfig.xAxis.title = $event)),
class: 'cms-el-input-x title-input',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_5$3k, [
_hoisted_6$2Z,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x fontFamily',
'popper-class': 'cms-el-select_check',
modelValue: unref(props2).axisConfig.xAxis.fontFamily,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(props2).axisConfig.xAxis.fontFamily =
$event)),
'allow-create': '',
filterable: '',
placeholder: '\u5B57\u4F53',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(fontFamilyList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
hidden: item2.hidden,
},
null,
8,
['label', 'value', 'hidden']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x size',
modelValue: unref(props2).axisConfig.xAxis.fontSize,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(props2).axisConfig.xAxis.fontSize = $event)),
min: 0,
max: 36,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
createElementVNode('div', _hoisted_7$2C, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
'model-value': unref(props2).axisConfig.xAxis.color,
onActiveChange:
_cache[3] ||
(_cache[3] = (color2) => {
unref(props2).axisConfig.xAxis.color = color2
}),
},
null,
8,
['predefine', 'model-value']
),
]),
]),
createElementVNode('div', _hoisted_8$2k, [
_hoisted_9$29,
createElementVNode('div', _hoisted_10$1Y, [
createElementVNode(
'div',
{
class: normalizeClass([
'icon-radio',
{
active:
unref(props2).axisConfig.xAxis.position ===
'start',
},
]),
onClick:
_cache[4] ||
(_cache[4] = () =>
(unref(props2).axisConfig.xAxis.position =
'start')),
},
_hoisted_12$1J,
2
),
createElementVNode(
'div',
{
class: normalizeClass([
'icon-radio',
{
active:
unref(props2).axisConfig.xAxis.position ===
'middle',
},
]),
onClick:
_cache[5] ||
(_cache[5] = () =>
(unref(props2).axisConfig.xAxis.position =
'middle')),
},
_hoisted_14$1n,
2
),
createElementVNode(
'div',
{
class: normalizeClass([
'icon-radio',
{
active:
unref(props2).axisConfig.xAxis.position ===
'end',
},
]),
onClick:
_cache[6] ||
(_cache[6] = () =>
(unref(props2).axisConfig.xAxis.position =
'end')),
},
_hoisted_16$1g,
2
),
]),
]),
]),
createElementVNode('div', _hoisted_17$19, [
createElementVNode('div', _hoisted_18$11, [
_hoisted_19$Z,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x fontFamily',
'popper-class': 'cms-el-select_check',
modelValue:
unref(props2).axisConfig.xAxis.axisLabel.fontFamily,
'onUpdate:modelValue':
_cache[7] ||
(_cache[7] = ($event) =>
(unref(
props2
).axisConfig.xAxis.axisLabel.fontFamily = $event)),
'allow-create': '',
filterable: '',
placeholder: '\u5B57\u4F53',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(fontFamilyList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
hidden: item2.hidden,
},
null,
8,
['label', 'value', 'hidden']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x size',
modelValue:
unref(props2).axisConfig.xAxis.axisLabel.fontSize,
'onUpdate:modelValue':
_cache[8] ||
(_cache[8] = ($event) =>
(unref(props2).axisConfig.xAxis.axisLabel.fontSize =
$event)),
min: 0,
max: 36,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
createElementVNode('div', _hoisted_20$T, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
'model-value':
unref(props2).axisConfig.xAxis.axisLabel.color,
onActiveChange:
_cache[9] ||
(_cache[9] = (color2) => {
unref(props2).axisConfig.xAxis.axisLabel.color =
color2
}),
},
null,
8,
['predefine', 'model-value']
),
]),
]),
]),
createElementVNode('div', _hoisted_21$J, [
_hoisted_22$H,
createElementVNode('div', _hoisted_23$D, [
createVNode$1(
_component_el_radio_group,
{
class: 'radio-group',
modelValue:
unref(props2).axisConfig.xAxis.axisLabel.displayType,
'onUpdate:modelValue':
_cache[10] ||
(_cache[10] = ($event) =>
(unref(
props2
).axisConfig.xAxis.axisLabel.displayType = $event)),
onChange: changeDisplayMode,
},
{
default: withCtx(() => [
createVNode$1(
_component_el_radio,
{
label: 'auto',
size: 'large',
},
{
default: withCtx(() => [_hoisted_24$B]),
_: 1,
}
),
createVNode$1(
_component_el_radio,
{
label: 'all',
size: 'large',
},
{
default: withCtx(() => [_hoisted_25$w]),
_: 1,
}
),
createVNode$1(
_component_el_radio,
{
label: 'custom',
size: 'large',
},
{
default: withCtx(() => [_hoisted_26$t]),
_: 1,
}
),
]),
_: 1,
},
8,
['modelValue']
),
unref(props2).axisConfig.xAxis.axisLabel.displayType ===
'custom'
? (openBlock(),
createElementBlock('div', _hoisted_27$s, [
createElementVNode('div', _hoisted_28$p, [
_hoisted_29$m,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
modelValue:
unref(props2).axisConfig.xAxis.axisLabel
.rotate,
'onUpdate:modelValue':
_cache[11] ||
(_cache[11] = ($event) =>
(unref(
props2
).axisConfig.xAxis.axisLabel.rotate =
$event)),
min: -90,
max: 90,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_30$m, [
_hoisted_31$j,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
modelValue:
unref(props2).axisConfig.xAxis.axisLabel
.interval,
'onUpdate:modelValue':
_cache[12] ||
(_cache[12] = ($event) =>
(unref(
props2
).axisConfig.xAxis.axisLabel.interval =
$event)),
min: 0,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
]),
]))
: createCommentVNode('', true),
]),
]),
createElementVNode('div', _hoisted_32$j, [
createElementVNode('div', _hoisted_33$j, [
createVNode$1(
_component_el_checkbox,
{
modelValue:
unref(props2).axisConfig.xAxis.axisLine.show,
'onUpdate:modelValue':
_cache[13] ||
(_cache[13] = ($event) =>
(unref(props2).axisConfig.xAxis.axisLine.show =
$event)),
label: '\u663E\u793A\u8F74\u7EBF',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
]),
withDirectives(
createElementVNode(
'div',
_hoisted_34$f,
[
_hoisted_35$f,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x fontFamily',
'popper-class': 'cms-el-select_check',
modelValue:
unref(props2).axisConfig.xAxis.axisLine.lineStyle
.type,
'onUpdate:modelValue':
_cache[14] ||
(_cache[14] = ($event) =>
(unref(
props2
).axisConfig.xAxis.axisLine.lineStyle.type =
$event)),
'allow-create': '',
filterable: '',
placeholder: '\u7EBF\u578B',
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
label: '\u5B9E\u7EBF',
value: 'solid',
}),
createVNode$1(_component_el_option, {
label: '\u865A\u7EBF',
value: 'dashed',
}),
createVNode$1(_component_el_option, {
label: '\u6591\u70B9',
value: 'dotted',
}),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x size',
modelValue:
unref(props2).axisConfig.xAxis.axisLine.lineStyle
.width,
'onUpdate:modelValue':
_cache[15] ||
(_cache[15] = ($event) =>
(unref(
props2
).axisConfig.xAxis.axisLine.lineStyle.width =
$event)),
min: 0,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
createElementVNode('div', _hoisted_36$d, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
'model-value':
unref(props2).axisConfig.xAxis.axisLine
.lineStyle.color,
onActiveChange:
_cache[16] ||
(_cache[16] = (color2) => {
unref(
props2
).axisConfig.xAxis.axisLine.lineStyle.color =
color2
}),
},
null,
8,
['predefine', 'model-value']
),
]),
],
512
),
[[vShow, unref(props2).axisConfig.xAxis.axisLine.show]]
),
]),
createElementVNode('div', _hoisted_37$d, [
createElementVNode('div', _hoisted_38$c, [
createVNode$1(
_component_el_checkbox,
{
modelValue:
unref(props2).axisConfig.xAxis.axisTick.show,
'onUpdate:modelValue':
_cache[17] ||
(_cache[17] = ($event) =>
(unref(props2).axisConfig.xAxis.axisTick.show =
$event)),
label: '\u663E\u793A\u523B\u5EA6',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
]),
withDirectives(
createElementVNode(
'div',
_hoisted_39$b,
[
_hoisted_40$b,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x fontFamily',
'popper-class': 'cms-el-select_check',
modelValue:
unref(props2).axisConfig.xAxis.axisTick.lineStyle
.type,
'onUpdate:modelValue':
_cache[18] ||
(_cache[18] = ($event) =>
(unref(
props2
).axisConfig.xAxis.axisTick.lineStyle.type =
$event)),
'allow-create': '',
filterable: '',
placeholder: '\u7EBF\u578B',
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
label: '\u5B9E\u7EBF',
value: 'solid',
}),
createVNode$1(_component_el_option, {
label: '\u865A\u7EBF',
value: 'dashed',
}),
createVNode$1(_component_el_option, {
label: '\u6591\u70B9',
value: 'dotted',
}),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x size',
modelValue:
unref(props2).axisConfig.xAxis.axisTick.lineStyle
.width,
'onUpdate:modelValue':
_cache[19] ||
(_cache[19] = ($event) =>
(unref(
props2
).axisConfig.xAxis.axisTick.lineStyle.width =
$event)),
min: 0,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
createElementVNode('div', _hoisted_41$b, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
'model-value':
unref(props2).axisConfig.xAxis.axisTick
.lineStyle.color,
onActiveChange:
_cache[20] ||
(_cache[20] = (color2) => {
unref(
props2
).axisConfig.xAxis.axisTick.lineStyle.color =
color2
}),
},
null,
8,
['predefine', 'model-value']
),
]),
],
512
),
[[vShow, unref(props2).axisConfig.xAxis.axisTick.show]]
),
]),
]),
]),
_: 1,
}
)
)
}
},
})
var XAxis$2 = /* @__PURE__ */ _export_sfc(_sfc_main$6B, [
['__scopeId', 'data-v-23ebb37c'],
])
var XAxis$3 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: XAxis$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var YAxis_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$39 = (n2) => (
pushScopeId('data-v-ba291f50'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$5y = { class: 'yAxis-tabs yAxis-settings' }
const _hoisted_2$4C = ['onClick']
const _hoisted_3$4a = ['onClick']
const _hoisted_4$3F = { class: 'YAxis yAxis-settings' }
const _hoisted_5$3j = { class: 'YAxis-item' }
const _hoisted_6$2Y = { class: 'content' }
const _hoisted_7$2B = /* @__PURE__ */ _withScopeId$39(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u8F74\u6807\u9898',
-1
)
)
const _hoisted_8$2j = { class: 'content' }
const _hoisted_9$28 = /* @__PURE__ */ _withScopeId$39(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u5B57\u4F53',
-1
)
)
const _hoisted_10$1X = { class: 'cms-el-color-picker-x' }
const _hoisted_11$1O = { class: 'content' }
const _hoisted_12$1I = /* @__PURE__ */ _withScopeId$39(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u8F74\u6807\u9898',
-1
)
)
const _hoisted_13$1x = { class: 'set-align' }
const _hoisted_14$1m = /* @__PURE__ */ _withScopeId$39(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-zhoubiaoti-mowei',
title: '\u5F00\u5934',
},
null,
-1
)
)
const _hoisted_15$1h = [_hoisted_14$1m]
const _hoisted_16$1f = /* @__PURE__ */ _withScopeId$39(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-zhoubiaoti-kaitou',
title: '\u672B\u5C3E',
},
null,
-1
)
)
const _hoisted_17$18 = [_hoisted_16$1f]
const _hoisted_18$10 = { class: 'content' }
const _hoisted_19$Y = /* @__PURE__ */ _withScopeId$39(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u8F74\u4F4D\u7F6E',
-1
)
)
const _hoisted_20$S = { class: 'set-align column-gap-0' }
const _hoisted_21$I = ['onClick']
const _hoisted_22$G = /* @__PURE__ */ _withScopeId$39(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title1' },
'\u504F\u79FB',
-1
)
)
const _hoisted_23$C = { class: 'YAxis-item' }
const _hoisted_24$A = { class: 'content' }
const _hoisted_25$v = /* @__PURE__ */ _withScopeId$39(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u6807\u7B7E',
-1
)
)
const _hoisted_26$s = { class: 'cms-el-color-picker-x' }
const _hoisted_27$r = { class: 'customLable' }
const _hoisted_28$o = {
class: 'flex justify-start',
style: { 'column-gap': '10px' },
}
const _hoisted_29$l = { class: 'content' }
const _hoisted_30$l = /* @__PURE__ */ _withScopeId$39(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u6700\u5C0F\u503C',
-1
)
)
const _hoisted_31$i = { class: 'content' }
const _hoisted_32$i = /* @__PURE__ */ _withScopeId$39(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u6700\u5927\u503C',
-1
)
)
const _hoisted_33$i = { class: 'YAxis-item' }
const _hoisted_34$e = { class: 'YAxis-item' }
const _hoisted_35$e = { class: 'content' }
const _hoisted_36$c = { class: 'content1' }
const _hoisted_37$c = /* @__PURE__ */ _withScopeId$39(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u7EBF\u578B',
-1
)
)
const _hoisted_38$b = { class: 'cms-el-color-picker-x' }
const _hoisted_39$a = { class: 'content' }
const _hoisted_40$a = { class: 'content1' }
const _hoisted_41$a = /* @__PURE__ */ _withScopeId$39(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u7EBF\u578B',
-1
)
)
const _hoisted_42$8 = { class: 'cms-el-color-picker-x' }
const _hoisted_43$6 = { class: 'content' }
const _hoisted_44$5 = { class: 'content1' }
const _hoisted_45$5 = /* @__PURE__ */ _withScopeId$39(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u7EBF\u578B',
-1
)
)
const _hoisted_46$5 = { class: 'cms-el-color-picker-x' }
const _hoisted_47$5 = { class: 'content' }
const _hoisted_48$4 = /* @__PURE__ */ _withScopeId$39(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u5206\u5272\u6BB5\u6570',
-1
)
)
const _hoisted_49$4 = { class: 'content1' }
const _hoisted_50$4 = /* @__PURE__ */ createTextVNode('\u81EA\u9002\u5E94')
const _hoisted_51$4 = /* @__PURE__ */ createTextVNode('\u81EA\u5B9A\u4E49')
const _hoisted_52$4 = /* @__PURE__ */ _withScopeId$39(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ style: { 'margin-left': '6px' } },
'\u6BB5',
-1
)
)
const _sfc_main$6A = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const props2 = reactive($props2.node.props)
const yAxis = reactive(props2.axisConfig.yAxis)
let actived = ref(0)
let yAxisData = ref({})
let tabsRef = ref()
ref(false)
const lineList = [
{
value: 'solid',
label: '\u5B9E\u7EBF',
},
{
value: 'dashed',
label: '\u865A\u7EBF',
},
{
value: 'dotted',
label: '\u6591\u70B9',
},
]
const positionList = [
{
value: 'left',
label: '\u5DE6\u4FA7',
},
{
value: 'right',
label: '\u53F3\u4FA7',
},
]
const sameName = (yAxisName, active = void 0) => {
let str = '-' + (Math.random() * 1e7).toString(16).substr(0, 2)
let same = false
for (let i2 = 0, len2 = yAxis.length; i2 < len2; i2++) {
let item2 = yAxis[i2]
if (active != void 0 && active >= 0) {
if (yAxisName == item2.yAxisName && active != i2) {
same = true
break
}
} else {
if (yAxisName == item2.yAxisName) {
same = true
break
}
}
}
return same ? yAxisName + str : yAxisName
}
const addyAxis = () => {
let yAxisName = `Y${yAxis.length + 1}`
let newData = {
...defaultyAxis,
offset: -50 * yAxis.length,
yAxisName: sameName(yAxisName),
position: 'right',
}
yAxis.push(newData)
actived.value = yAxis.length - 1
}
const delyAxis = (index2, e2) => {
e2.stopPropagation()
yAxis.splice(index2, 1)
props2.chartConfig.markLine.forEach((item2) => {
if (item2.yAxisIndex == index2) {
item2.yAxisIndex = 0
} else if (item2.yAxisIndex > index2) {
item2.yAxisIndex -= 1
}
})
props2.dataConfig.indexes.forEach((item2) => {
if (item2.yAxisIndex == index2) {
item2.yAxisIndex = 0
} else if (item2.yAxisIndex > index2) {
item2.yAxisIndex -= 1
}
})
if (actived.value > yAxis.length - 1) {
actived.value = yAxis.length - 1
}
}
const changeTab = (y2, index2) => {
actived.value = index2
}
const changeLeft = () => {
let num2 = 0
let transform3 = tabsRef.value.style.transform
if (tabsRef.value.style.transform) {
num2 = parseFloat(transform3.split('(')[1].split('px')[0])
}
let tabsItems = tabsRef.value.getElementsByClassName('item')
let len2 = tabsItems.length * 62
if (len2 + num2 - tabsRef.value.clientWidth <= 0) return
tabsRef.value.style.transform = `translateX(${num2 - 62}px)`
}
const changeRight = () => {
let num2 = 0
let transform3 = tabsRef.value.style.transform
if (tabsRef.value.style.transform) {
num2 = parseFloat(transform3.split('(')[1].split('px')[0])
}
if (num2 == 0) return
tabsRef.value.style.transform = `translateX(${num2 + 62}px)`
}
let oldyAxisData = ''
watch$1(
[() => actived.value, () => yAxis.length],
() => {
yAxisData.value = lodash$2.exports.cloneDeep(yAxis[actived.value])
oldyAxisData = JSON.stringify(yAxisData.value)
},
{
immediate: true,
deep: true,
}
)
watch$1(
() => yAxisData.value,
() => {
let newYAxisData = JSON.stringify(yAxisData.value)
if (newYAxisData !== oldyAxisData) {
yAxis[actived.value] = yAxisData.value
oldyAxisData = newYAxisData
}
},
{
deep: true,
}
)
const validateYAxisData = (type4) => {
if (type4 === 'min') {
if (yAxisData.value.min > yAxisData.value.max) {
ElMessage.warning(
'\u6700\u5C0F\u503C\u4E0D\u80FD\u5927\u4E8E\u6700\u5927\u503C'
)
yAxisData.value.min = yAxisData.value.max
}
} else {
if (yAxisData.value.max < yAxisData.value.min) {
ElMessage.warning(
'\u6700\u5927\u503C\u4E0D\u80FD\u5C0F\u4E8E\u6700\u5C0F\u503C'
)
yAxisData.value.max = yAxisData.value.min
}
}
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_color_picker = resolveComponent('el-color-picker')
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_radio = resolveComponent('el-radio')
const _component_el_radio_group = resolveComponent('el-radio-group')
return (
openBlock(),
createBlock(
_sfc_main$72,
{
title: 'Y\u8F74',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$5y, [
createElementVNode('i', {
class: 'iconfont icon-zuo11',
onClick: changeRight,
}),
createElementVNode('i', {
class: 'iconfont icon-you11',
onClick: changeLeft,
}),
createElementVNode(
'div',
{
class: 'tabs',
ref_key: 'tabsRef',
ref: tabsRef,
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(yAxis), (item2, index2) => {
return (
openBlock(),
createElementBlock(
'div',
{
onClick: ($event) => changeTab(item2, index2),
key: item2.yAxisName,
class: normalizeClass([
'item',
{ active: actived.value == index2 },
]),
},
[
createTextVNode(
toDisplayString$1(item2.yAxisName) + ' ',
1
),
withDirectives(
createElementVNode(
'i',
{
class: 'iconfont icon-shanchujilu',
onClick: (e2) => delyAxis(index2, e2),
},
null,
8,
_hoisted_3$4a
),
[[vShow, unref(yAxis).length > 1]]
),
],
10,
_hoisted_2$4C
)
)
}),
128
)),
],
512
),
createElementVNode('i', {
class: 'iconfont icon-tianjiahuamian',
style: { top: '0', right: '24px' },
onClick: addyAxis,
}),
]),
createElementVNode('div', _hoisted_4$3F, [
createElementVNode('div', _hoisted_5$3j, [
createElementVNode('div', _hoisted_6$2Y, [
_hoisted_7$2B,
createVNode$1(
_component_el_input,
{
modelValue: yAxisData.value.title,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(yAxisData.value.title = $event)),
class: 'cms-el-input-x title-input',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_8$2j, [
_hoisted_9$28,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x fontFamily',
'popper-class': 'cms-el-select_check',
modelValue: yAxisData.value.fontFamily,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(yAxisData.value.fontFamily = $event)),
'allow-create': '',
filterable: '',
placeholder: '\u5B57\u4F53',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(fontFamilyList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
hidden: item2.hidden,
},
null,
8,
['label', 'value', 'hidden']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x size',
modelValue: yAxisData.value.fontSize,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(yAxisData.value.fontSize = $event)),
min: 0,
max: 36,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
createElementVNode('div', _hoisted_10$1X, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
'model-value': yAxisData.value.color,
onActiveChange:
_cache[3] ||
(_cache[3] = (color2) => {
yAxisData.value.color = color2
}),
},
null,
8,
['predefine', 'model-value']
),
]),
]),
createElementVNode('div', _hoisted_11$1O, [
_hoisted_12$1I,
createElementVNode('div', _hoisted_13$1x, [
createElementVNode(
'div',
{
class: normalizeClass([
'icon-radio',
{
active: yAxisData.value.nameLocation === 'start',
},
]),
onClick:
_cache[4] ||
(_cache[4] = () =>
(yAxisData.value.nameLocation = 'start')),
},
_hoisted_15$1h,
2
),
createElementVNode(
'div',
{
class: normalizeClass([
'icon-radio',
{
active: yAxisData.value.nameLocation === 'middle',
},
]),
onClick:
_cache[5] ||
(_cache[5] = () =>
(yAxisData.value.nameLocation = 'middle')),
},
[
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont icon-zhoubiaoti-zhongjian',
[
yAxisData.value.position === 'right'
? 'icon-weizhi-zhong'
: 'icon-zhoubiaoti-zhongjian',
],
]),
title: '\u4E2D\u95F4',
},
null,
2
),
],
2
),
createElementVNode(
'div',
{
class: normalizeClass([
'icon-radio',
{ active: yAxisData.value.nameLocation === 'end' },
]),
onClick:
_cache[6] ||
(_cache[6] = () =>
(yAxisData.value.nameLocation = 'end')),
},
_hoisted_17$18,
2
),
]),
]),
createElementVNode('div', _hoisted_18$10, [
_hoisted_19$Y,
createElementVNode('div', _hoisted_20$S, [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(positionList, (item2) => {
return createElementVNode(
'div',
{
class: normalizeClass([
'text-radio',
[
yAxisData.value.position === item2.value
? 'active'
: '',
],
]),
key: item2.value,
onClick: () =>
(yAxisData.value.position = item2.value),
},
toDisplayString$1(item2.label),
11,
_hoisted_21$I
)
}),
64
)),
]),
_hoisted_22$G,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x size1',
modelValue: yAxisData.value.offset,
'onUpdate:modelValue':
_cache[7] ||
(_cache[7] = ($event) =>
(yAxisData.value.offset = $event)),
'controls-position': 'right',
},
null,
8,
['modelValue']
),
]),
]),
createElementVNode('div', _hoisted_23$C, [
createElementVNode('div', _hoisted_24$A, [
_hoisted_25$v,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x fontFamily',
'popper-class': 'cms-el-select_check',
modelValue: yAxisData.value.axisLabel.fontFamily,
'onUpdate:modelValue':
_cache[8] ||
(_cache[8] = ($event) =>
(yAxisData.value.axisLabel.fontFamily = $event)),
'allow-create': '',
filterable: '',
placeholder: '\u5B57\u4F53',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(fontFamilyList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
hidden: item2.hidden,
},
null,
8,
['label', 'value', 'hidden']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x size',
modelValue: yAxisData.value.axisLabel.fontSize,
'onUpdate:modelValue':
_cache[9] ||
(_cache[9] = ($event) =>
(yAxisData.value.axisLabel.fontSize = $event)),
min: 0,
max: 36,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
createElementVNode('div', _hoisted_26$s, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
'model-value': yAxisData.value.axisLabel.color,
onActiveChange:
_cache[10] ||
(_cache[10] = (color2) => {
yAxisData.value.axisLabel.color = color2
}),
},
null,
8,
['predefine', 'model-value']
),
]),
createElementVNode('div', _hoisted_27$r, [
createVNode$1(
_component_el_checkbox,
{
modelValue: yAxisData.value.customLable,
'onUpdate:modelValue':
_cache[11] ||
(_cache[11] = ($event) =>
(yAxisData.value.customLable = $event)),
label: '\u81EA\u5B9A\u4E49\u5750\u6807\u8303\u56F4',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
]),
withDirectives(
createElementVNode(
'div',
_hoisted_28$o,
[
createElementVNode('div', _hoisted_29$l, [
_hoisted_30$l,
createVNode$1(
_component_el_input_number,
{
style: { width: '60px' },
class: 'cms-el-input-number-x fontSize',
modelValue: yAxisData.value.min,
'onUpdate:modelValue':
_cache[12] ||
(_cache[12] = ($event) =>
(yAxisData.value.min = $event)),
'controls-position': 'right',
onChange:
_cache[13] ||
(_cache[13] = ($event) =>
validateYAxisData('min')),
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_31$i, [
_hoisted_32$i,
createVNode$1(
_component_el_input_number,
{
style: { width: '60px' },
class: 'cms-el-input-number-x fontSize',
modelValue: yAxisData.value.max,
'onUpdate:modelValue':
_cache[14] ||
(_cache[14] = ($event) =>
(yAxisData.value.max = $event)),
onChange:
_cache[15] ||
(_cache[15] = ($event) =>
validateYAxisData('max')),
'controls-position': 'right',
},
null,
8,
['modelValue']
),
]),
],
512
),
[[vShow, yAxisData.value.customLable]]
),
]),
]),
createElementVNode('div', _hoisted_33$i, [
createVNode$1(
_component_el_checkbox,
{
modelValue: yAxisData.value.inverse,
'onUpdate:modelValue':
_cache[16] ||
(_cache[16] = ($event) =>
(yAxisData.value.inverse = $event)),
label: '\u53CD\u8F6C\u5750\u6807\u8F74',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_34$e, [
createElementVNode('div', _hoisted_35$e, [
createVNode$1(
_component_el_checkbox,
{
modelValue: yAxisData.value.axisLine.show,
'onUpdate:modelValue':
_cache[17] ||
(_cache[17] = ($event) =>
(yAxisData.value.axisLine.show = $event)),
label: '\u663E\u793A\u8F74\u7EBF',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
withDirectives(
createElementVNode(
'div',
_hoisted_36$c,
[
_hoisted_37$c,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x fontFamily',
'popper-class': 'cms-el-select_check',
modelValue:
yAxisData.value.axisLine.lineStyle.type,
'onUpdate:modelValue':
_cache[18] ||
(_cache[18] = ($event) =>
(yAxisData.value.axisLine.lineStyle.type =
$event)),
'allow-create': '',
filterable: '',
placeholder: '\u7EBF\u578B',
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(lineList, (item2, index2) => {
return createVNode$1(
_component_el_option,
{
key: index2,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
}),
64
)),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x size',
modelValue:
yAxisData.value.axisLine.lineStyle.width,
'onUpdate:modelValue':
_cache[19] ||
(_cache[19] = ($event) =>
(yAxisData.value.axisLine.lineStyle.width =
$event)),
min: 0,
max: 10,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
createElementVNode('div', _hoisted_38$b, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
'model-value':
yAxisData.value.axisLine.lineStyle.color,
onActiveChange:
_cache[20] ||
(_cache[20] = (color2) => {
yAxisData.value.axisLine.lineStyle.color =
color2
}),
},
null,
8,
['predefine', 'model-value']
),
]),
],
512
),
[[vShow, yAxisData.value.axisLine.show]]
),
]),
createElementVNode('div', _hoisted_39$a, [
createVNode$1(
_component_el_checkbox,
{
modelValue: yAxisData.value.splitLine.show,
'onUpdate:modelValue':
_cache[21] ||
(_cache[21] = ($event) =>
(yAxisData.value.splitLine.show = $event)),
label: '\u663E\u793A\u7F51\u683C\u7EBF',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
withDirectives(
createElementVNode(
'div',
_hoisted_40$a,
[
_hoisted_41$a,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x fontFamily',
'popper-class': 'cms-el-select_check',
modelValue:
yAxisData.value.splitLine.lineStyle.type,
'onUpdate:modelValue':
_cache[22] ||
(_cache[22] = ($event) =>
(yAxisData.value.splitLine.lineStyle.type =
$event)),
'allow-create': '',
filterable: '',
placeholder: '\u7EBF\u578B',
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(lineList, (item2, index2) => {
return createVNode$1(
_component_el_option,
{
key: index2,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
}),
64
)),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x size',
modelValue:
yAxisData.value.splitLine.lineStyle.width,
'onUpdate:modelValue':
_cache[23] ||
(_cache[23] = ($event) =>
(yAxisData.value.splitLine.lineStyle.width =
$event)),
min: 0,
max: 10,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
createElementVNode('div', _hoisted_42$8, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
'model-value':
yAxisData.value.splitLine.lineStyle.color,
onActiveChange:
_cache[24] ||
(_cache[24] = (color2) => {
yAxisData.value.splitLine.lineStyle.color =
color2
}),
},
null,
8,
['predefine', 'model-value']
),
]),
],
512
),
[[vShow, yAxisData.value.splitLine.show]]
),
]),
createElementVNode('div', _hoisted_43$6, [
createVNode$1(
_component_el_checkbox,
{
modelValue: yAxisData.value.axisTick.show,
'onUpdate:modelValue':
_cache[25] ||
(_cache[25] = ($event) =>
(yAxisData.value.axisTick.show = $event)),
label: '\u663E\u793A\u523B\u5EA6',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
withDirectives(
createElementVNode(
'div',
_hoisted_44$5,
[
_hoisted_45$5,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x fontFamily',
'popper-class': 'cms-el-select_check',
modelValue:
yAxisData.value.axisTick.lineStyle.type,
'onUpdate:modelValue':
_cache[26] ||
(_cache[26] = ($event) =>
(yAxisData.value.axisTick.lineStyle.type =
$event)),
'allow-create': '',
filterable: '',
placeholder: '\u7EBF\u578B',
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(lineList, (item2, index2) => {
return createVNode$1(
_component_el_option,
{
key: index2,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
}),
64
)),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x size',
modelValue:
yAxisData.value.axisTick.lineStyle.width,
'onUpdate:modelValue':
_cache[27] ||
(_cache[27] = ($event) =>
(yAxisData.value.axisTick.lineStyle.width =
$event)),
min: 0,
max: 10,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
createElementVNode('div', _hoisted_46$5, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
'model-value':
yAxisData.value.axisTick.lineStyle.color,
onActiveChange:
_cache[28] ||
(_cache[28] = (color2) => {
yAxisData.value.axisTick.lineStyle.color =
color2
}),
},
null,
8,
['predefine', 'model-value']
),
]),
],
512
),
[[vShow, yAxisData.value.axisTick.show]]
),
]),
createElementVNode('div', _hoisted_47$5, [
_hoisted_48$4,
createElementVNode('div', _hoisted_49$4, [
createVNode$1(
_component_el_radio_group,
{
class: 'radio-group',
modelValue: yAxisData.value.axisTick.interval,
'onUpdate:modelValue':
_cache[29] ||
(_cache[29] = ($event) =>
(yAxisData.value.axisTick.interval = $event)),
},
{
default: withCtx(() => [
createVNode$1(
_component_el_radio,
{ label: 'auto' },
{
default: withCtx(() => [_hoisted_50$4]),
_: 1,
}
),
createVNode$1(
_component_el_radio,
{ label: 'custom' },
{
default: withCtx(() => [_hoisted_51$4]),
_: 1,
}
),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_input_number,
{
disabled:
yAxisData.value.axisTick.interval != 'custom',
class: 'cms-el-input-number-x size1',
modelValue: yAxisData.value.axisTick.internalNum,
'onUpdate:modelValue':
_cache[30] ||
(_cache[30] = ($event) =>
(yAxisData.value.axisTick.internalNum = $event)),
'controls-position': 'right',
min: 0,
},
null,
8,
['disabled', 'modelValue']
),
_hoisted_52$4,
]),
]),
]),
]),
]),
_: 1,
}
)
)
}
},
})
var YAxis = /* @__PURE__ */ _export_sfc(_sfc_main$6A, [
['__scopeId', 'data-v-ba291f50'],
])
var YAxis$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: YAxis,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Chart_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$5x = { class: 'chartSettings' }
const config$U = {
category: 'test',
name: '\u56FE\u8868\u57FA\u7C7B',
icon: 'icon-kongzhianniu',
permission: false,
}
const _sfc_main$6z = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$5x, [
createVNode$1(Data$4, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Type$3, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Title$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Label$1, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Legend$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(XAxis$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(YAxis, { node: unref(node2) }, null, 8, ['node']),
])
)
}
},
})
var Chart_settings = /* @__PURE__ */ _export_sfc(_sfc_main$6z, [
['__scopeId', 'data-v-78c93822'],
])
var __glob_2_4$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$U,
default: Chart_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
var extendStatics$1 = function (d3, b2) {
extendStatics$1 =
Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array &&
function (d4, b3) {
d4.__proto__ = b3
}) ||
function (d4, b3) {
for (var p2 in b3)
if (Object.prototype.hasOwnProperty.call(b3, p2)) d4[p2] = b3[p2]
}
return extendStatics$1(d3, b2)
}
function __extends$2(d3, b2) {
if (typeof b2 !== 'function' && b2 !== null)
throw new TypeError(
'Class extends value ' + String(b2) + ' is not a constructor or null'
)
extendStatics$1(d3, b2)
function __() {
this.constructor = d3
}
d3.prototype =
b2 === null ? Object.create(b2) : ((__.prototype = b2.prototype), new __())
}
var Browser = (function () {
function Browser2() {
this.firefox = false
this.ie = false
this.edge = false
this.newEdge = false
this.weChat = false
}
return Browser2
})()
var Env = (function () {
function Env2() {
this.browser = new Browser()
this.node = false
this.wxa = false
this.worker = false
this.svgSupported = false
this.touchEventsSupported = false
this.pointerEventsSupported = false
this.domSupported = false
this.transformSupported = false
this.transform3dSupported = false
this.hasGlobalWindow = typeof window !== 'undefined'
}
return Env2
})()
var env = new Env()
if (typeof wx === 'object' && typeof wx.getSystemInfoSync === 'function') {
env.wxa = true
env.touchEventsSupported = true
} else if (typeof document === 'undefined' && typeof self !== 'undefined') {
env.worker = true
} else if (typeof navigator === 'undefined') {
env.node = true
env.svgSupported = true
} else {
detect(navigator.userAgent, env)
}
function detect(ua, env2) {
var browser = env2.browser
var firefox = ua.match(/Firefox\/([\d.]+)/)
var ie2 = ua.match(/MSIE\s([\d.]+)/) || ua.match(/Trident\/.+?rv:(([\d.]+))/)
var edge = ua.match(/Edge?\/([\d.]+)/)
var weChat = /micromessenger/i.test(ua)
if (firefox) {
browser.firefox = true
browser.version = firefox[1]
}
if (ie2) {
browser.ie = true
browser.version = ie2[1]
}
if (edge) {
browser.edge = true
browser.version = edge[1]
browser.newEdge = +edge[1].split('.')[0] > 18
}
if (weChat) {
browser.weChat = true
}
env2.svgSupported = typeof SVGRect !== 'undefined'
env2.touchEventsSupported =
'ontouchstart' in window && !browser.ie && !browser.edge
env2.pointerEventsSupported =
'onpointerdown' in window &&
(browser.edge || (browser.ie && +browser.version >= 11))
env2.domSupported = typeof document !== 'undefined'
var style2 = document.documentElement.style
env2.transform3dSupported =
((browser.ie && 'transition' in style2) ||
browser.edge ||
('WebKitCSSMatrix' in window && 'm11' in new WebKitCSSMatrix()) ||
'MozPerspective' in style2) &&
!('OTransition' in style2)
env2.transformSupported =
env2.transform3dSupported || (browser.ie && +browser.version >= 9)
}
var env$1 = env
var DEFAULT_FONT_SIZE = 12
var DEFAULT_FONT_FAMILY = 'sans-serif'
var DEFAULT_FONT = DEFAULT_FONT_SIZE + 'px ' + DEFAULT_FONT_FAMILY
var OFFSET = 20
var SCALE = 100
var defaultWidthMapStr =
"007LLmW'55;N0500LLLLLLLLLL00NNNLzWW\\\\WQb\\0FWLg\\bWb\\WQ\\WrWWQ000CL5LLFLL0LL**F*gLLLL5F0LF\\FFF5.5N"
function getTextWidthMap(mapStr) {
var map2 = {}
if (typeof JSON === 'undefined') {
return map2
}
for (var i2 = 0; i2 < mapStr.length; i2++) {
var char = String.fromCharCode(i2 + 32)
var size = (mapStr.charCodeAt(i2) - OFFSET) / SCALE
map2[char] = size
}
return map2
}
var DEFAULT_TEXT_WIDTH_MAP = getTextWidthMap(defaultWidthMapStr)
var platformApi = {
createCanvas: function () {
return typeof document !== 'undefined' && document.createElement('canvas')
},
measureText: (function () {
var _ctx
var _cachedFont
return function (text2, font2) {
if (!_ctx) {
var canvas = platformApi.createCanvas()
_ctx = canvas && canvas.getContext('2d')
}
if (_ctx) {
if (_cachedFont !== font2) {
_cachedFont = _ctx.font = font2 || DEFAULT_FONT
}
return _ctx.measureText(text2)
} else {
text2 = text2 || ''
font2 = font2 || DEFAULT_FONT
var res = /(\d+)px/.exec(font2)
var fontSize2 = (res && +res[1]) || DEFAULT_FONT_SIZE
var width = 0
if (font2.indexOf('mono') >= 0) {
width = fontSize2 * text2.length
} else {
for (var i2 = 0; i2 < text2.length; i2++) {
var preCalcWidth = DEFAULT_TEXT_WIDTH_MAP[text2[i2]]
width += preCalcWidth == null ? fontSize2 : preCalcWidth * fontSize2
}
}
return { width }
}
}
})(),
loadImage: function (src, onload, onerror) {
var image2 = new Image()
image2.onload = onload
image2.onerror = onerror
image2.src = src
return image2
},
}
function setPlatformAPI(newPlatformApis) {
for (var key2 in platformApi) {
if (newPlatformApis[key2]) {
platformApi[key2] = newPlatformApis[key2]
}
}
}
var BUILTIN_OBJECT = reduce(
[
'Function',
'RegExp',
'Date',
'Error',
'CanvasGradient',
'CanvasPattern',
'Image',
'Canvas',
],
function (obj, val2) {
obj['[object ' + val2 + ']'] = true
return obj
},
{}
)
var TYPED_ARRAY = reduce(
[
'Int8',
'Uint8',
'Uint8Clamped',
'Int16',
'Uint16',
'Int32',
'Uint32',
'Float32',
'Float64',
],
function (obj, val2) {
obj['[object ' + val2 + 'Array]'] = true
return obj
},
{}
)
var objToString = Object.prototype.toString
var arrayProto$1 = Array.prototype
var nativeForEach = arrayProto$1.forEach
var nativeFilter = arrayProto$1.filter
var nativeSlice = arrayProto$1.slice
var nativeMap = arrayProto$1.map
var ctorFunction = function () {}.constructor
var protoFunction = ctorFunction ? ctorFunction.prototype : null
var protoKey = '__proto__'
var idStart = 2311
function guid() {
return idStart++
}
function logError() {
var args = []
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i]
}
if (typeof console !== 'undefined') {
console.error.apply(console, args)
}
}
function clone$4(source2) {
if (source2 == null || typeof source2 !== 'object') {
return source2
}
var result = source2
var typeStr = objToString.call(source2)
if (typeStr === '[object Array]') {
if (!isPrimitive(source2)) {
result = []
for (var i2 = 0, len2 = source2.length; i2 < len2; i2++) {
result[i2] = clone$4(source2[i2])
}
}
} else if (TYPED_ARRAY[typeStr]) {
if (!isPrimitive(source2)) {
var Ctor = source2.constructor
if (Ctor.from) {
result = Ctor.from(source2)
} else {
result = new Ctor(source2.length)
for (var i2 = 0, len2 = source2.length; i2 < len2; i2++) {
result[i2] = source2[i2]
}
}
}
} else if (
!BUILTIN_OBJECT[typeStr] &&
!isPrimitive(source2) &&
!isDom(source2)
) {
result = {}
for (var key2 in source2) {
if (source2.hasOwnProperty(key2) && key2 !== protoKey) {
result[key2] = clone$4(source2[key2])
}
}
}
return result
}
function merge(target2, source2, overwrite) {
if (!isObject$b(source2) || !isObject$b(target2)) {
return overwrite ? clone$4(source2) : target2
}
for (var key2 in source2) {
if (source2.hasOwnProperty(key2) && key2 !== protoKey) {
var targetProp = target2[key2]
var sourceProp = source2[key2]
if (
isObject$b(sourceProp) &&
isObject$b(targetProp) &&
!isArray$6(sourceProp) &&
!isArray$6(targetProp) &&
!isDom(sourceProp) &&
!isDom(targetProp) &&
!isBuiltInObject(sourceProp) &&
!isBuiltInObject(targetProp) &&
!isPrimitive(sourceProp) &&
!isPrimitive(targetProp)
) {
merge(targetProp, sourceProp, overwrite)
} else if (overwrite || !(key2 in target2)) {
target2[key2] = clone$4(source2[key2])
}
}
}
return target2
}
function mergeAll(targetAndSources, overwrite) {
var result = targetAndSources[0]
for (var i2 = 1, len2 = targetAndSources.length; i2 < len2; i2++) {
result = merge(result, targetAndSources[i2], overwrite)
}
return result
}
function extend(target2, source2) {
if (Object.assign) {
Object.assign(target2, source2)
} else {
for (var key2 in source2) {
if (source2.hasOwnProperty(key2) && key2 !== protoKey) {
target2[key2] = source2[key2]
}
}
}
return target2
}
function defaults(target2, source2, overlay) {
var keysArr = keys$4(source2)
for (var i2 = 0; i2 < keysArr.length; i2++) {
var key2 = keysArr[i2]
if (overlay ? source2[key2] != null : target2[key2] == null) {
target2[key2] = source2[key2]
}
}
return target2
}
var createCanvas = platformApi.createCanvas
function indexOf(array4, value2) {
if (array4) {
if (array4.indexOf) {
return array4.indexOf(value2)
}
for (var i2 = 0, len2 = array4.length; i2 < len2; i2++) {
if (array4[i2] === value2) {
return i2
}
}
}
return -1
}
function inherits(clazz, baseClazz) {
var clazzPrototype = clazz.prototype
function F2() {}
F2.prototype = baseClazz.prototype
clazz.prototype = new F2()
for (var prop in clazzPrototype) {
if (clazzPrototype.hasOwnProperty(prop)) {
clazz.prototype[prop] = clazzPrototype[prop]
}
}
clazz.prototype.constructor = clazz
clazz.superClass = baseClazz
}
function mixin(target2, source2, override) {
target2 = 'prototype' in target2 ? target2.prototype : target2
source2 = 'prototype' in source2 ? source2.prototype : source2
if (Object.getOwnPropertyNames) {
var keyList = Object.getOwnPropertyNames(source2)
for (var i2 = 0; i2 < keyList.length; i2++) {
var key2 = keyList[i2]
if (key2 !== 'constructor') {
if (override ? source2[key2] != null : target2[key2] == null) {
target2[key2] = source2[key2]
}
}
}
} else {
defaults(target2, source2, override)
}
}
function isArrayLike$3(data2) {
if (!data2) {
return false
}
if (typeof data2 === 'string') {
return false
}
return typeof data2.length === 'number'
}
function each$f(arr, cb, context2) {
if (!(arr && cb)) {
return
}
if (arr.forEach && arr.forEach === nativeForEach) {
arr.forEach(cb, context2)
} else if (arr.length === +arr.length) {
for (var i2 = 0, len2 = arr.length; i2 < len2; i2++) {
cb.call(context2, arr[i2], i2, arr)
}
} else {
for (var key2 in arr) {
if (arr.hasOwnProperty(key2)) {
cb.call(context2, arr[key2], key2, arr)
}
}
}
}
function map$1(arr, cb, context2) {
if (!arr) {
return []
}
if (!cb) {
return slice(arr)
}
if (arr.map && arr.map === nativeMap) {
return arr.map(cb, context2)
} else {
var result = []
for (var i2 = 0, len2 = arr.length; i2 < len2; i2++) {
result.push(cb.call(context2, arr[i2], i2, arr))
}
return result
}
}
function reduce(arr, cb, memo, context2) {
if (!(arr && cb)) {
return
}
for (var i2 = 0, len2 = arr.length; i2 < len2; i2++) {
memo = cb.call(context2, memo, arr[i2], i2, arr)
}
return memo
}
function filter(arr, cb, context2) {
if (!arr) {
return []
}
if (!cb) {
return slice(arr)
}
if (arr.filter && arr.filter === nativeFilter) {
return arr.filter(cb, context2)
} else {
var result = []
for (var i2 = 0, len2 = arr.length; i2 < len2; i2++) {
if (cb.call(context2, arr[i2], i2, arr)) {
result.push(arr[i2])
}
}
return result
}
}
function find(arr, cb, context2) {
if (!(arr && cb)) {
return
}
for (var i2 = 0, len2 = arr.length; i2 < len2; i2++) {
if (cb.call(context2, arr[i2], i2, arr)) {
return arr[i2]
}
}
}
function keys$4(obj) {
if (!obj) {
return []
}
if (Object.keys) {
return Object.keys(obj)
}
var keyList = []
for (var key2 in obj) {
if (obj.hasOwnProperty(key2)) {
keyList.push(key2)
}
}
return keyList
}
function bindPolyfill(func, context2) {
var args = []
for (var _i = 2; _i < arguments.length; _i++) {
args[_i - 2] = arguments[_i]
}
return function () {
return func.apply(context2, args.concat(nativeSlice.call(arguments)))
}
}
var bind$1 =
protoFunction && isFunction$4(protoFunction.bind)
? protoFunction.call.bind(protoFunction.bind)
: bindPolyfill
function curry$1(func) {
var args = []
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i]
}
return function () {
return func.apply(this, args.concat(nativeSlice.call(arguments)))
}
}
function isArray$6(value2) {
if (Array.isArray) {
return Array.isArray(value2)
}
return objToString.call(value2) === '[object Array]'
}
function isFunction$4(value2) {
return typeof value2 === 'function'
}
function isString$2(value2) {
return typeof value2 === 'string'
}
function isStringSafe(value2) {
return objToString.call(value2) === '[object String]'
}
function isNumber$2(value2) {
return typeof value2 === 'number'
}
function isObject$b(value2) {
var type4 = typeof value2
return type4 === 'function' || (!!value2 && type4 === 'object')
}
function isBuiltInObject(value2) {
return !!BUILTIN_OBJECT[objToString.call(value2)]
}
function isTypedArray$2(value2) {
return !!TYPED_ARRAY[objToString.call(value2)]
}
function isDom(value2) {
return (
typeof value2 === 'object' &&
typeof value2.nodeType === 'number' &&
typeof value2.ownerDocument === 'object'
)
}
function isGradientObject(value2) {
return value2.colorStops != null
}
function isImagePatternObject(value2) {
return value2.image != null
}
function isRegExp$1(value2) {
return objToString.call(value2) === '[object RegExp]'
}
function eqNaN(value2) {
return value2 !== value2
}
function retrieve() {
var args = []
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i]
}
for (var i2 = 0, len2 = args.length; i2 < len2; i2++) {
if (args[i2] != null) {
return args[i2]
}
}
}
function retrieve2(value0, value1) {
return value0 != null ? value0 : value1
}
function retrieve3(value0, value1, value2) {
return value0 != null ? value0 : value1 != null ? value1 : value2
}
function slice(arr) {
var args = []
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i]
}
return nativeSlice.apply(arr, args)
}
function normalizeCssArray$1(val2) {
if (typeof val2 === 'number') {
return [val2, val2, val2, val2]
}
var len2 = val2.length
if (len2 === 2) {
return [val2[0], val2[1], val2[0], val2[1]]
} else if (len2 === 3) {
return [val2[0], val2[1], val2[2], val2[1]]
}
return val2
}
function assert(condition2, message2) {
if (!condition2) {
throw new Error(message2)
}
}
function trim$1(str) {
if (str == null) {
return null
} else if (typeof str.trim === 'function') {
return str.trim()
} else {
return str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '')
}
}
var primitiveKey = '__ec_primitive__'
function setAsPrimitive(obj) {
obj[primitiveKey] = true
}
function isPrimitive(obj) {
return obj[primitiveKey]
}
var MapPolyfill = (function () {
function MapPolyfill2() {
this.data = {}
}
MapPolyfill2.prototype['delete'] = function (key2) {
var existed = this.has(key2)
if (existed) {
delete this.data[key2]
}
return existed
}
MapPolyfill2.prototype.has = function (key2) {
return this.data.hasOwnProperty(key2)
}
MapPolyfill2.prototype.get = function (key2) {
return this.data[key2]
}
MapPolyfill2.prototype.set = function (key2, value2) {
this.data[key2] = value2
return this
}
MapPolyfill2.prototype.keys = function () {
return keys$4(this.data)
}
MapPolyfill2.prototype.forEach = function (callback) {
var data2 = this.data
for (var key2 in data2) {
if (data2.hasOwnProperty(key2)) {
callback(data2[key2], key2)
}
}
}
return MapPolyfill2
})()
var isNativeMapSupported = typeof Map === 'function'
function maybeNativeMap() {
return isNativeMapSupported ? /* @__PURE__ */ new Map() : new MapPolyfill()
}
var HashMap = (function () {
function HashMap2(obj) {
var isArr = isArray$6(obj)
this.data = maybeNativeMap()
var thisMap = this
obj instanceof HashMap2 ? obj.each(visit) : obj && each$f(obj, visit)
function visit(value2, key2) {
isArr ? thisMap.set(value2, key2) : thisMap.set(key2, value2)
}
}
HashMap2.prototype.hasKey = function (key2) {
return this.data.has(key2)
}
HashMap2.prototype.get = function (key2) {
return this.data.get(key2)
}
HashMap2.prototype.set = function (key2, value2) {
this.data.set(key2, value2)
return value2
}
HashMap2.prototype.each = function (cb, context2) {
this.data.forEach(function (value2, key2) {
cb.call(context2, value2, key2)
})
}
HashMap2.prototype.keys = function () {
var keys3 = this.data.keys()
return isNativeMapSupported ? Array.from(keys3) : keys3
}
HashMap2.prototype.removeKey = function (key2) {
this.data['delete'](key2)
}
return HashMap2
})()
function createHashMap(obj) {
return new HashMap(obj)
}
function concatArray(a2, b2) {
var newArray = new a2.constructor(a2.length + b2.length)
for (var i2 = 0; i2 < a2.length; i2++) {
newArray[i2] = a2[i2]
}
var offset2 = a2.length
for (var i2 = 0; i2 < b2.length; i2++) {
newArray[i2 + offset2] = b2[i2]
}
return newArray
}
function createObject(proto2, properties) {
var obj
if (Object.create) {
obj = Object.create(proto2)
} else {
var StyleCtor = function () {}
StyleCtor.prototype = proto2
obj = new StyleCtor()
}
if (properties) {
extend(obj, properties)
}
return obj
}
function disableUserSelect(dom) {
var domStyle = dom.style
domStyle.webkitUserSelect = 'none'
domStyle.userSelect = 'none'
domStyle.webkitTapHighlightColor = 'rgba(0,0,0,0)'
domStyle['-webkit-touch-callout'] = 'none'
}
function hasOwn$1(own, prop) {
return own.hasOwnProperty(prop)
}
function noop() {}
var RADIAN_TO_DEGREE = 180 / Math.PI
var util$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
guid,
logError,
clone: clone$4,
merge,
mergeAll,
extend,
defaults,
createCanvas,
indexOf,
inherits,
mixin,
isArrayLike: isArrayLike$3,
each: each$f,
map: map$1,
reduce,
filter,
find,
keys: keys$4,
bind: bind$1,
curry: curry$1,
isArray: isArray$6,
isFunction: isFunction$4,
isString: isString$2,
isStringSafe,
isNumber: isNumber$2,
isObject: isObject$b,
isBuiltInObject,
isTypedArray: isTypedArray$2,
isDom,
isGradientObject,
isImagePatternObject,
isRegExp: isRegExp$1,
eqNaN,
retrieve,
retrieve2,
retrieve3,
slice,
normalizeCssArray: normalizeCssArray$1,
assert,
trim: trim$1,
setAsPrimitive,
isPrimitive,
HashMap,
createHashMap,
concatArray,
createObject,
disableUserSelect,
hasOwn: hasOwn$1,
noop,
RADIAN_TO_DEGREE,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
var extendStatics = function (d3, b2) {
extendStatics =
Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array &&
function (d4, b3) {
d4.__proto__ = b3
}) ||
function (d4, b3) {
for (var p2 in b3)
if (Object.prototype.hasOwnProperty.call(b3, p2)) d4[p2] = b3[p2]
}
return extendStatics(d3, b2)
}
function __extends$1(d3, b2) {
if (typeof b2 !== 'function' && b2 !== null)
throw new TypeError(
'Class extends value ' + String(b2) + ' is not a constructor or null'
)
extendStatics(d3, b2)
function __() {
this.constructor = d3
}
d3.prototype =
b2 === null ? Object.create(b2) : ((__.prototype = b2.prototype), new __())
}
function create$2(x2, y2) {
if (x2 == null) {
x2 = 0
}
if (y2 == null) {
y2 = 0
}
return [x2, y2]
}
function copy$1(out2, v4) {
out2[0] = v4[0]
out2[1] = v4[1]
return out2
}
function clone$3(v4) {
return [v4[0], v4[1]]
}
function set$1(out2, a2, b2) {
out2[0] = a2
out2[1] = b2
return out2
}
function add(out2, v12, v22) {
out2[0] = v12[0] + v22[0]
out2[1] = v12[1] + v22[1]
return out2
}
function scaleAndAdd$1(out2, v12, v22, a2) {
out2[0] = v12[0] + v22[0] * a2
out2[1] = v12[1] + v22[1] * a2
return out2
}
function sub(out2, v12, v22) {
out2[0] = v12[0] - v22[0]
out2[1] = v12[1] - v22[1]
return out2
}
function len(v4) {
return Math.sqrt(lenSquare(v4))
}
var length = len
function lenSquare(v4) {
return v4[0] * v4[0] + v4[1] * v4[1]
}
var lengthSquare = lenSquare
function mul$1(out2, v12, v22) {
out2[0] = v12[0] * v22[0]
out2[1] = v12[1] * v22[1]
return out2
}
function div(out2, v12, v22) {
out2[0] = v12[0] / v22[0]
out2[1] = v12[1] / v22[1]
return out2
}
function dot(v12, v22) {
return v12[0] * v22[0] + v12[1] * v22[1]
}
function scale$2(out2, v4, s2) {
out2[0] = v4[0] * s2
out2[1] = v4[1] * s2
return out2
}
function normalize$3(out2, v4) {
var d3 = len(v4)
if (d3 === 0) {
out2[0] = 0
out2[1] = 0
} else {
out2[0] = v4[0] / d3
out2[1] = v4[1] / d3
}
return out2
}
function distance(v12, v22) {
return Math.sqrt(
(v12[0] - v22[0]) * (v12[0] - v22[0]) +
(v12[1] - v22[1]) * (v12[1] - v22[1])
)
}
var dist$1 = distance
function distanceSquare(v12, v22) {
return (
(v12[0] - v22[0]) * (v12[0] - v22[0]) +
(v12[1] - v22[1]) * (v12[1] - v22[1])
)
}
var distSquare = distanceSquare
function negate(out2, v4) {
out2[0] = -v4[0]
out2[1] = -v4[1]
return out2
}
function lerp$1(out2, v12, v22, t3) {
out2[0] = v12[0] + t3 * (v22[0] - v12[0])
out2[1] = v12[1] + t3 * (v22[1] - v12[1])
return out2
}
function applyTransform$1(out2, v4, m2) {
var x2 = v4[0]
var y2 = v4[1]
out2[0] = m2[0] * x2 + m2[2] * y2 + m2[4]
out2[1] = m2[1] * x2 + m2[3] * y2 + m2[5]
return out2
}
function min$1(out2, v12, v22) {
out2[0] = Math.min(v12[0], v22[0])
out2[1] = Math.min(v12[1], v22[1])
return out2
}
function max$2(out2, v12, v22) {
out2[0] = Math.max(v12[0], v22[0])
out2[1] = Math.max(v12[1], v22[1])
return out2
}
var vector = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
create: create$2,
copy: copy$1,
clone: clone$3,
set: set$1,
add,
scaleAndAdd: scaleAndAdd$1,
sub,
len,
length,
lenSquare,
lengthSquare,
mul: mul$1,
div,
dot,
scale: scale$2,
normalize: normalize$3,
distance,
dist: dist$1,
distanceSquare,
distSquare,
negate,
lerp: lerp$1,
applyTransform: applyTransform$1,
min: min$1,
max: max$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Param = (function () {
function Param2(target2, e2) {
this.target = target2
this.topTarget = e2 && e2.topTarget
}
return Param2
})()
var Draggable = (function () {
function Draggable2(handler) {
this.handler = handler
handler.on('mousedown', this._dragStart, this)
handler.on('mousemove', this._drag, this)
handler.on('mouseup', this._dragEnd, this)
}
Draggable2.prototype._dragStart = function (e2) {
var draggingTarget = e2.target
while (draggingTarget && !draggingTarget.draggable) {
draggingTarget = draggingTarget.parent || draggingTarget.__hostTarget
}
if (draggingTarget) {
this._draggingTarget = draggingTarget
draggingTarget.dragging = true
this._x = e2.offsetX
this._y = e2.offsetY
this.handler.dispatchToElement(
new Param(draggingTarget, e2),
'dragstart',
e2.event
)
}
}
Draggable2.prototype._drag = function (e2) {
var draggingTarget = this._draggingTarget
if (draggingTarget) {
var x2 = e2.offsetX
var y2 = e2.offsetY
var dx = x2 - this._x
var dy = y2 - this._y
this._x = x2
this._y = y2
draggingTarget.drift(dx, dy, e2)
this.handler.dispatchToElement(
new Param(draggingTarget, e2),
'drag',
e2.event
)
var dropTarget = this.handler.findHover(x2, y2, draggingTarget).target
var lastDropTarget = this._dropTarget
this._dropTarget = dropTarget
if (draggingTarget !== dropTarget) {
if (lastDropTarget && dropTarget !== lastDropTarget) {
this.handler.dispatchToElement(
new Param(lastDropTarget, e2),
'dragleave',
e2.event
)
}
if (dropTarget && dropTarget !== lastDropTarget) {
this.handler.dispatchToElement(
new Param(dropTarget, e2),
'dragenter',
e2.event
)
}
}
}
}
Draggable2.prototype._dragEnd = function (e2) {
var draggingTarget = this._draggingTarget
if (draggingTarget) {
draggingTarget.dragging = false
}
this.handler.dispatchToElement(
new Param(draggingTarget, e2),
'dragend',
e2.event
)
if (this._dropTarget) {
this.handler.dispatchToElement(
new Param(this._dropTarget, e2),
'drop',
e2.event
)
}
this._draggingTarget = null
this._dropTarget = null
}
return Draggable2
})()
var Draggable$1 = Draggable
var Eventful = (function () {
function Eventful2(eventProcessors) {
if (eventProcessors) {
this._$eventProcessor = eventProcessors
}
}
Eventful2.prototype.on = function (event, query, handler, context2) {
if (!this._$handlers) {
this._$handlers = {}
}
var _h = this._$handlers
if (typeof query === 'function') {
context2 = handler
handler = query
query = null
}
if (!handler || !event) {
return this
}
var eventProcessor = this._$eventProcessor
if (query != null && eventProcessor && eventProcessor.normalizeQuery) {
query = eventProcessor.normalizeQuery(query)
}
if (!_h[event]) {
_h[event] = []
}
for (var i2 = 0; i2 < _h[event].length; i2++) {
if (_h[event][i2].h === handler) {
return this
}
}
var wrap = {
h: handler,
query,
ctx: context2 || this,
callAtLast: handler.zrEventfulCallAtLast,
}
var lastIndex = _h[event].length - 1
var lastWrap = _h[event][lastIndex]
lastWrap && lastWrap.callAtLast
? _h[event].splice(lastIndex, 0, wrap)
: _h[event].push(wrap)
return this
}
Eventful2.prototype.isSilent = function (eventName) {
var _h = this._$handlers
return !_h || !_h[eventName] || !_h[eventName].length
}
Eventful2.prototype.off = function (eventType, handler) {
var _h = this._$handlers
if (!_h) {
return this
}
if (!eventType) {
this._$handlers = {}
return this
}
if (handler) {
if (_h[eventType]) {
var newList = []
for (var i2 = 0, l2 = _h[eventType].length; i2 < l2; i2++) {
if (_h[eventType][i2].h !== handler) {
newList.push(_h[eventType][i2])
}
}
_h[eventType] = newList
}
if (_h[eventType] && _h[eventType].length === 0) {
delete _h[eventType]
}
} else {
delete _h[eventType]
}
return this
}
Eventful2.prototype.trigger = function (eventType) {
var args = []
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i]
}
if (!this._$handlers) {
return this
}
var _h = this._$handlers[eventType]
var eventProcessor = this._$eventProcessor
if (_h) {
var argLen = args.length
var len2 = _h.length
for (var i2 = 0; i2 < len2; i2++) {
var hItem = _h[i2]
if (
eventProcessor &&
eventProcessor.filter &&
hItem.query != null &&
!eventProcessor.filter(eventType, hItem.query)
) {
continue
}
switch (argLen) {
case 0:
hItem.h.call(hItem.ctx)
break
case 1:
hItem.h.call(hItem.ctx, args[0])
break
case 2:
hItem.h.call(hItem.ctx, args[0], args[1])
break
default:
hItem.h.apply(hItem.ctx, args)
break
}
}
}
eventProcessor &&
eventProcessor.afterTrigger &&
eventProcessor.afterTrigger(eventType)
return this
}
Eventful2.prototype.triggerWithContext = function (type4) {
var args = []
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i]
}
if (!this._$handlers) {
return this
}
var _h = this._$handlers[type4]
var eventProcessor = this._$eventProcessor
if (_h) {
var argLen = args.length
var ctx = args[argLen - 1]
var len2 = _h.length
for (var i2 = 0; i2 < len2; i2++) {
var hItem = _h[i2]
if (
eventProcessor &&
eventProcessor.filter &&
hItem.query != null &&
!eventProcessor.filter(type4, hItem.query)
) {
continue
}
switch (argLen) {
case 0:
hItem.h.call(ctx)
break
case 1:
hItem.h.call(ctx, args[0])
break
case 2:
hItem.h.call(ctx, args[0], args[1])
break
default:
hItem.h.apply(ctx, args.slice(1, argLen - 1))
break
}
}
}
eventProcessor &&
eventProcessor.afterTrigger &&
eventProcessor.afterTrigger(type4)
return this
}
return Eventful2
})()
var Eventful$1 = Eventful
var LN2 = Math.log(2)
function determinant(rows, rank2, rowStart, rowMask, colMask, detCache) {
var cacheKey = rowMask + '-' + colMask
var fullRank = rows.length
if (detCache.hasOwnProperty(cacheKey)) {
return detCache[cacheKey]
}
if (rank2 === 1) {
var colStart = Math.round(Math.log(((1 << fullRank) - 1) & ~colMask) / LN2)
return rows[rowStart][colStart]
}
var subRowMask = rowMask | (1 << rowStart)
var subRowStart = rowStart + 1
while (rowMask & (1 << subRowStart)) {
subRowStart++
}
var sum2 = 0
for (var j2 = 0, colLocalIdx = 0; j2 < fullRank; j2++) {
var colTag = 1 << j2
if (!(colTag & colMask)) {
sum2 +=
(colLocalIdx % 2 ? -1 : 1) *
rows[rowStart][j2] *
determinant(
rows,
rank2 - 1,
subRowStart,
subRowMask,
colMask | colTag,
detCache
)
colLocalIdx++
}
}
detCache[cacheKey] = sum2
return sum2
}
function buildTransformer(src, dest) {
var mA = [
[src[0], src[1], 1, 0, 0, 0, -dest[0] * src[0], -dest[0] * src[1]],
[0, 0, 0, src[0], src[1], 1, -dest[1] * src[0], -dest[1] * src[1]],
[src[2], src[3], 1, 0, 0, 0, -dest[2] * src[2], -dest[2] * src[3]],
[0, 0, 0, src[2], src[3], 1, -dest[3] * src[2], -dest[3] * src[3]],
[src[4], src[5], 1, 0, 0, 0, -dest[4] * src[4], -dest[4] * src[5]],
[0, 0, 0, src[4], src[5], 1, -dest[5] * src[4], -dest[5] * src[5]],
[src[6], src[7], 1, 0, 0, 0, -dest[6] * src[6], -dest[6] * src[7]],
[0, 0, 0, src[6], src[7], 1, -dest[7] * src[6], -dest[7] * src[7]],
]
var detCache = {}
var det = determinant(mA, 8, 0, 0, 0, detCache)
if (det === 0) {
return
}
var vh = []
for (var i2 = 0; i2 < 8; i2++) {
for (var j2 = 0; j2 < 8; j2++) {
vh[j2] == null && (vh[j2] = 0)
vh[j2] +=
((((i2 + j2) % 2 ? -1 : 1) *
determinant(mA, 7, i2 === 0 ? 1 : 0, 1 << i2, 1 << j2, detCache)) /
det) *
dest[i2]
}
}
return function (out2, srcPointX, srcPointY) {
var pk = srcPointX * vh[6] + srcPointY * vh[7] + 1
out2[0] = (srcPointX * vh[0] + srcPointY * vh[1] + vh[2]) / pk
out2[1] = (srcPointX * vh[3] + srcPointY * vh[4] + vh[5]) / pk
}
}
var EVENT_SAVED_PROP = '___zrEVENTSAVED'
var _calcOut$1 = []
function transformLocalCoord(out2, elFrom, elTarget, inX, inY) {
return (
transformCoordWithViewport(_calcOut$1, elFrom, inX, inY, true) &&
transformCoordWithViewport(out2, elTarget, _calcOut$1[0], _calcOut$1[1])
)
}
function transformCoordWithViewport(out2, el2, inX, inY, inverse) {
if (el2.getBoundingClientRect && env$1.domSupported && !isCanvasEl(el2)) {
var saved = el2[EVENT_SAVED_PROP] || (el2[EVENT_SAVED_PROP] = {})
var markers = prepareCoordMarkers(el2, saved)
var transformer = preparePointerTransformer(markers, saved, inverse)
if (transformer) {
transformer(out2, inX, inY)
return true
}
}
return false
}
function prepareCoordMarkers(el2, saved) {
var markers = saved.markers
if (markers) {
return markers
}
markers = saved.markers = []
var propLR = ['left', 'right']
var propTB = ['top', 'bottom']
for (var i2 = 0; i2 < 4; i2++) {
var marker = document.createElement('div')
var stl = marker.style
var idxLR = i2 % 2
var idxTB = (i2 >> 1) % 2
stl.cssText = [
'position: absolute',
'visibility: hidden',
'padding: 0',
'margin: 0',
'border-width: 0',
'user-select: none',
'width:0',
'height:0',
propLR[idxLR] + ':0',
propTB[idxTB] + ':0',
propLR[1 - idxLR] + ':auto',
propTB[1 - idxTB] + ':auto',
'',
].join('!important;')
el2.appendChild(marker)
markers.push(marker)
}
return markers
}
function preparePointerTransformer(markers, saved, inverse) {
var transformerName = inverse ? 'invTrans' : 'trans'
var transformer = saved[transformerName]
var oldSrcCoords = saved.srcCoords
var srcCoords = []
var destCoords = []
var oldCoordTheSame = true
for (var i2 = 0; i2 < 4; i2++) {
var rect = markers[i2].getBoundingClientRect()
var ii = 2 * i2
var x2 = rect.left
var y2 = rect.top
srcCoords.push(x2, y2)
oldCoordTheSame =
oldCoordTheSame &&
oldSrcCoords &&
x2 === oldSrcCoords[ii] &&
y2 === oldSrcCoords[ii + 1]
destCoords.push(markers[i2].offsetLeft, markers[i2].offsetTop)
}
return oldCoordTheSame && transformer
? transformer
: ((saved.srcCoords = srcCoords),
(saved[transformerName] = inverse
? buildTransformer(destCoords, srcCoords)
: buildTransformer(srcCoords, destCoords)))
}
function isCanvasEl(el2) {
return el2.nodeName.toUpperCase() === 'CANVAS'
}
var replaceReg = /([&<>"'])/g
var replaceMap = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": ''',
}
function encodeHTML(source2) {
return source2 == null
? ''
: (source2 + '').replace(replaceReg, function (str, c2) {
return replaceMap[c2]
})
}
var MOUSE_EVENT_REG = /^(?:mouse|pointer|contextmenu|drag|drop)|click/
var _calcOut = []
var firefoxNotSupportOffsetXY =
env$1.browser.firefox && +env$1.browser.version.split('.')[0] < 39
function clientToLocal(el2, e2, out2, calculate) {
out2 = out2 || {}
if (calculate) {
calculateZrXY(el2, e2, out2)
} else if (
firefoxNotSupportOffsetXY &&
e2.layerX != null &&
e2.layerX !== e2.offsetX
) {
out2.zrX = e2.layerX
out2.zrY = e2.layerY
} else if (e2.offsetX != null) {
out2.zrX = e2.offsetX
out2.zrY = e2.offsetY
} else {
calculateZrXY(el2, e2, out2)
}
return out2
}
function calculateZrXY(el2, e2, out2) {
if (env$1.domSupported && el2.getBoundingClientRect) {
var ex = e2.clientX
var ey = e2.clientY
if (isCanvasEl(el2)) {
var box2 = el2.getBoundingClientRect()
out2.zrX = ex - box2.left
out2.zrY = ey - box2.top
return
} else {
if (transformCoordWithViewport(_calcOut, el2, ex, ey)) {
out2.zrX = _calcOut[0]
out2.zrY = _calcOut[1]
return
}
}
}
out2.zrX = out2.zrY = 0
}
function getNativeEvent(e2) {
return e2 || window.event
}
function normalizeEvent(el2, e2, calculate) {
e2 = getNativeEvent(e2)
if (e2.zrX != null) {
return e2
}
var eventType = e2.type
var isTouch = eventType && eventType.indexOf('touch') >= 0
if (!isTouch) {
clientToLocal(el2, e2, e2, calculate)
var wheelDelta = getWheelDeltaMayPolyfill(e2)
e2.zrDelta = wheelDelta ? wheelDelta / 120 : -(e2.detail || 0) / 3
} else {
var touch =
eventType !== 'touchend' ? e2.targetTouches[0] : e2.changedTouches[0]
touch && clientToLocal(el2, touch, e2, calculate)
}
var button = e2.button
if (e2.which == null && button !== void 0 && MOUSE_EVENT_REG.test(e2.type)) {
e2.which = button & 1 ? 1 : button & 2 ? 3 : button & 4 ? 2 : 0
}
return e2
}
function getWheelDeltaMayPolyfill(e2) {
var rawWheelDelta = e2.wheelDelta
if (rawWheelDelta) {
return rawWheelDelta
}
var deltaX = e2.deltaX
var deltaY = e2.deltaY
if (deltaX == null || deltaY == null) {
return rawWheelDelta
}
var delta = deltaY !== 0 ? Math.abs(deltaY) : Math.abs(deltaX)
var sign = deltaY > 0 ? -1 : deltaY < 0 ? 1 : deltaX > 0 ? -1 : 1
return 3 * delta * sign
}
function addEventListener$1(el2, name2, handler, opt) {
el2.addEventListener(name2, handler, opt)
}
function removeEventListener$1(el2, name2, handler, opt) {
el2.removeEventListener(name2, handler, opt)
}
var stop$1 = function (e2) {
e2.preventDefault()
e2.stopPropagation()
e2.cancelBubble = true
}
function isMiddleOrRightButtonOnMouseUpDown(e2) {
return e2.which === 2 || e2.which === 3
}
var GestureMgr = (function () {
function GestureMgr2() {
this._track = []
}
GestureMgr2.prototype.recognize = function (event, target2, root2) {
this._doTrack(event, target2, root2)
return this._recognize(event)
}
GestureMgr2.prototype.clear = function () {
this._track.length = 0
return this
}
GestureMgr2.prototype._doTrack = function (event, target2, root2) {
var touches = event.touches
if (!touches) {
return
}
var trackItem = {
points: [],
touches: [],
target: target2,
event,
}
for (var i2 = 0, len2 = touches.length; i2 < len2; i2++) {
var touch = touches[i2]
var pos = clientToLocal(root2, touch, {})
trackItem.points.push([pos.zrX, pos.zrY])
trackItem.touches.push(touch)
}
this._track.push(trackItem)
}
GestureMgr2.prototype._recognize = function (event) {
for (var eventName in recognizers) {
if (recognizers.hasOwnProperty(eventName)) {
var gestureInfo = recognizers[eventName](this._track, event)
if (gestureInfo) {
return gestureInfo
}
}
}
}
return GestureMgr2
})()
function dist(pointPair) {
var dx = pointPair[1][0] - pointPair[0][0]
var dy = pointPair[1][1] - pointPair[0][1]
return Math.sqrt(dx * dx + dy * dy)
}
function center$1(pointPair) {
return [
(pointPair[0][0] + pointPair[1][0]) / 2,
(pointPair[0][1] + pointPair[1][1]) / 2,
]
}
var recognizers = {
pinch: function (tracks, event) {
var trackLen = tracks.length
if (!trackLen) {
return
}
var pinchEnd = (tracks[trackLen - 1] || {}).points
var pinchPre = (tracks[trackLen - 2] || {}).points || pinchEnd
if (pinchPre && pinchPre.length > 1 && pinchEnd && pinchEnd.length > 1) {
var pinchScale = dist(pinchEnd) / dist(pinchPre)
!isFinite(pinchScale) && (pinchScale = 1)
event.pinchScale = pinchScale
var pinchCenter = center$1(pinchEnd)
event.pinchX = pinchCenter[0]
event.pinchY = pinchCenter[1]
return {
type: 'pinch',
target: tracks[0].target,
event,
}
}
},
}
function create$1() {
return [1, 0, 0, 1, 0, 0]
}
function identity(out2) {
out2[0] = 1
out2[1] = 0
out2[2] = 0
out2[3] = 1
out2[4] = 0
out2[5] = 0
return out2
}
function copy(out2, m2) {
out2[0] = m2[0]
out2[1] = m2[1]
out2[2] = m2[2]
out2[3] = m2[3]
out2[4] = m2[4]
out2[5] = m2[5]
return out2
}
function mul(out2, m1, m2) {
var out0 = m1[0] * m2[0] + m1[2] * m2[1]
var out1 = m1[1] * m2[0] + m1[3] * m2[1]
var out22 = m1[0] * m2[2] + m1[2] * m2[3]
var out3 = m1[1] * m2[2] + m1[3] * m2[3]
var out4 = m1[0] * m2[4] + m1[2] * m2[5] + m1[4]
var out5 = m1[1] * m2[4] + m1[3] * m2[5] + m1[5]
out2[0] = out0
out2[1] = out1
out2[2] = out22
out2[3] = out3
out2[4] = out4
out2[5] = out5
return out2
}
function translate$1(out2, a2, v4) {
out2[0] = a2[0]
out2[1] = a2[1]
out2[2] = a2[2]
out2[3] = a2[3]
out2[4] = a2[4] + v4[0]
out2[5] = a2[5] + v4[1]
return out2
}
function rotate(out2, a2, rad) {
var aa = a2[0]
var ac = a2[2]
var atx = a2[4]
var ab = a2[1]
var ad = a2[3]
var aty = a2[5]
var st2 = Math.sin(rad)
var ct2 = Math.cos(rad)
out2[0] = aa * ct2 + ab * st2
out2[1] = -aa * st2 + ab * ct2
out2[2] = ac * ct2 + ad * st2
out2[3] = -ac * st2 + ct2 * ad
out2[4] = ct2 * atx + st2 * aty
out2[5] = ct2 * aty - st2 * atx
return out2
}
function scale$1(out2, a2, v4) {
var vx = v4[0]
var vy = v4[1]
out2[0] = a2[0] * vx
out2[1] = a2[1] * vy
out2[2] = a2[2] * vx
out2[3] = a2[3] * vy
out2[4] = a2[4] * vx
out2[5] = a2[5] * vy
return out2
}
function invert(out2, a2) {
var aa = a2[0]
var ac = a2[2]
var atx = a2[4]
var ab = a2[1]
var ad = a2[3]
var aty = a2[5]
var det = aa * ad - ab * ac
if (!det) {
return null
}
det = 1 / det
out2[0] = ad * det
out2[1] = -ab * det
out2[2] = -ac * det
out2[3] = aa * det
out2[4] = (ac * aty - ad * atx) * det
out2[5] = (ab * atx - aa * aty) * det
return out2
}
function clone$2(a2) {
var b2 = create$1()
copy(b2, a2)
return b2
}
var matrix = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
create: create$1,
identity,
copy,
mul,
translate: translate$1,
rotate,
scale: scale$1,
invert,
clone: clone$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Point = (function () {
function Point2(x2, y2) {
this.x = x2 || 0
this.y = y2 || 0
}
Point2.prototype.copy = function (other) {
this.x = other.x
this.y = other.y
return this
}
Point2.prototype.clone = function () {
return new Point2(this.x, this.y)
}
Point2.prototype.set = function (x2, y2) {
this.x = x2
this.y = y2
return this
}
Point2.prototype.equal = function (other) {
return other.x === this.x && other.y === this.y
}
Point2.prototype.add = function (other) {
this.x += other.x
this.y += other.y
return this
}
Point2.prototype.scale = function (scalar) {
this.x *= scalar
this.y *= scalar
}
Point2.prototype.scaleAndAdd = function (other, scalar) {
this.x += other.x * scalar
this.y += other.y * scalar
}
Point2.prototype.sub = function (other) {
this.x -= other.x
this.y -= other.y
return this
}
Point2.prototype.dot = function (other) {
return this.x * other.x + this.y * other.y
}
Point2.prototype.len = function () {
return Math.sqrt(this.x * this.x + this.y * this.y)
}
Point2.prototype.lenSquare = function () {
return this.x * this.x + this.y * this.y
}
Point2.prototype.normalize = function () {
var len2 = this.len()
this.x /= len2
this.y /= len2
return this
}
Point2.prototype.distance = function (other) {
var dx = this.x - other.x
var dy = this.y - other.y
return Math.sqrt(dx * dx + dy * dy)
}
Point2.prototype.distanceSquare = function (other) {
var dx = this.x - other.x
var dy = this.y - other.y
return dx * dx + dy * dy
}
Point2.prototype.negate = function () {
this.x = -this.x
this.y = -this.y
return this
}
Point2.prototype.transform = function (m2) {
if (!m2) {
return
}
var x2 = this.x
var y2 = this.y
this.x = m2[0] * x2 + m2[2] * y2 + m2[4]
this.y = m2[1] * x2 + m2[3] * y2 + m2[5]
return this
}
Point2.prototype.toArray = function (out2) {
out2[0] = this.x
out2[1] = this.y
return out2
}
Point2.prototype.fromArray = function (input) {
this.x = input[0]
this.y = input[1]
}
Point2.set = function (p2, x2, y2) {
p2.x = x2
p2.y = y2
}
Point2.copy = function (p2, p22) {
p2.x = p22.x
p2.y = p22.y
}
Point2.len = function (p2) {
return Math.sqrt(p2.x * p2.x + p2.y * p2.y)
}
Point2.lenSquare = function (p2) {
return p2.x * p2.x + p2.y * p2.y
}
Point2.dot = function (p0, p1) {
return p0.x * p1.x + p0.y * p1.y
}
Point2.add = function (out2, p0, p1) {
out2.x = p0.x + p1.x
out2.y = p0.y + p1.y
}
Point2.sub = function (out2, p0, p1) {
out2.x = p0.x - p1.x
out2.y = p0.y - p1.y
}
Point2.scale = function (out2, p0, scalar) {
out2.x = p0.x * scalar
out2.y = p0.y * scalar
}
Point2.scaleAndAdd = function (out2, p0, p1, scalar) {
out2.x = p0.x + p1.x * scalar
out2.y = p0.y + p1.y * scalar
}
Point2.lerp = function (out2, p0, p1, t3) {
var onet = 1 - t3
out2.x = onet * p0.x + t3 * p1.x
out2.y = onet * p0.y + t3 * p1.y
}
return Point2
})()
var Point$1 = Point
var mathMin$a = Math.min
var mathMax$a = Math.max
var lt = new Point$1()
var rb = new Point$1()
var lb = new Point$1()
var rt = new Point$1()
var minTv$1 = new Point$1()
var maxTv$1 = new Point$1()
var BoundingRect = (function () {
function BoundingRect2(x2, y2, width, height) {
if (width < 0) {
x2 = x2 + width
width = -width
}
if (height < 0) {
y2 = y2 + height
height = -height
}
this.x = x2
this.y = y2
this.width = width
this.height = height
}
BoundingRect2.prototype.union = function (other) {
var x2 = mathMin$a(other.x, this.x)
var y2 = mathMin$a(other.y, this.y)
if (isFinite(this.x) && isFinite(this.width)) {
this.width = mathMax$a(other.x + other.width, this.x + this.width) - x2
} else {
this.width = other.width
}
if (isFinite(this.y) && isFinite(this.height)) {
this.height = mathMax$a(other.y + other.height, this.y + this.height) - y2
} else {
this.height = other.height
}
this.x = x2
this.y = y2
}
BoundingRect2.prototype.applyTransform = function (m2) {
BoundingRect2.applyTransform(this, this, m2)
}
BoundingRect2.prototype.calculateTransform = function (b2) {
var a2 = this
var sx = b2.width / a2.width
var sy = b2.height / a2.height
var m2 = create$1()
translate$1(m2, m2, [-a2.x, -a2.y])
scale$1(m2, m2, [sx, sy])
translate$1(m2, m2, [b2.x, b2.y])
return m2
}
BoundingRect2.prototype.intersect = function (b2, mtv) {
if (!b2) {
return false
}
if (!(b2 instanceof BoundingRect2)) {
b2 = BoundingRect2.create(b2)
}
var a2 = this
var ax0 = a2.x
var ax1 = a2.x + a2.width
var ay0 = a2.y
var ay1 = a2.y + a2.height
var bx0 = b2.x
var bx1 = b2.x + b2.width
var by0 = b2.y
var by1 = b2.y + b2.height
var overlap = !(ax1 < bx0 || bx1 < ax0 || ay1 < by0 || by1 < ay0)
if (mtv) {
var dMin = Infinity
var dMax = 0
var d0 = Math.abs(ax1 - bx0)
var d1 = Math.abs(bx1 - ax0)
var d22 = Math.abs(ay1 - by0)
var d3 = Math.abs(by1 - ay0)
var dx = Math.min(d0, d1)
var dy = Math.min(d22, d3)
if (ax1 < bx0 || bx1 < ax0) {
if (dx > dMax) {
dMax = dx
if (d0 < d1) {
Point$1.set(maxTv$1, -d0, 0)
} else {
Point$1.set(maxTv$1, d1, 0)
}
}
} else {
if (dx < dMin) {
dMin = dx
if (d0 < d1) {
Point$1.set(minTv$1, d0, 0)
} else {
Point$1.set(minTv$1, -d1, 0)
}
}
}
if (ay1 < by0 || by1 < ay0) {
if (dy > dMax) {
dMax = dy
if (d22 < d3) {
Point$1.set(maxTv$1, 0, -d22)
} else {
Point$1.set(maxTv$1, 0, d3)
}
}
} else {
if (dx < dMin) {
dMin = dx
if (d22 < d3) {
Point$1.set(minTv$1, 0, d22)
} else {
Point$1.set(minTv$1, 0, -d3)
}
}
}
}
if (mtv) {
Point$1.copy(mtv, overlap ? minTv$1 : maxTv$1)
}
return overlap
}
BoundingRect2.prototype.contain = function (x2, y2) {
var rect = this
return (
x2 >= rect.x &&
x2 <= rect.x + rect.width &&
y2 >= rect.y &&
y2 <= rect.y + rect.height
)
}
BoundingRect2.prototype.clone = function () {
return new BoundingRect2(this.x, this.y, this.width, this.height)
}
BoundingRect2.prototype.copy = function (other) {
BoundingRect2.copy(this, other)
}
BoundingRect2.prototype.plain = function () {
return {
x: this.x,
y: this.y,
width: this.width,
height: this.height,
}
}
BoundingRect2.prototype.isFinite = function () {
return (
isFinite(this.x) &&
isFinite(this.y) &&
isFinite(this.width) &&
isFinite(this.height)
)
}
BoundingRect2.prototype.isZero = function () {
return this.width === 0 || this.height === 0
}
BoundingRect2.create = function (rect) {
return new BoundingRect2(rect.x, rect.y, rect.width, rect.height)
}
BoundingRect2.copy = function (target2, source2) {
target2.x = source2.x
target2.y = source2.y
target2.width = source2.width
target2.height = source2.height
}
BoundingRect2.applyTransform = function (target2, source2, m2) {
if (!m2) {
if (target2 !== source2) {
BoundingRect2.copy(target2, source2)
}
return
}
if (m2[1] < 1e-5 && m2[1] > -1e-5 && m2[2] < 1e-5 && m2[2] > -1e-5) {
var sx = m2[0]
var sy = m2[3]
var tx = m2[4]
var ty = m2[5]
target2.x = source2.x * sx + tx
target2.y = source2.y * sy + ty
target2.width = source2.width * sx
target2.height = source2.height * sy
if (target2.width < 0) {
target2.x += target2.width
target2.width = -target2.width
}
if (target2.height < 0) {
target2.y += target2.height
target2.height = -target2.height
}
return
}
lt.x = lb.x = source2.x
lt.y = rt.y = source2.y
rb.x = rt.x = source2.x + source2.width
rb.y = lb.y = source2.y + source2.height
lt.transform(m2)
rt.transform(m2)
rb.transform(m2)
lb.transform(m2)
target2.x = mathMin$a(lt.x, rb.x, lb.x, rt.x)
target2.y = mathMin$a(lt.y, rb.y, lb.y, rt.y)
var maxX = mathMax$a(lt.x, rb.x, lb.x, rt.x)
var maxY = mathMax$a(lt.y, rb.y, lb.y, rt.y)
target2.width = maxX - target2.x
target2.height = maxY - target2.y
}
return BoundingRect2
})()
var BoundingRect$1 = BoundingRect
var SILENT = 'silent'
function makeEventPacket(eveType, targetInfo, event) {
return {
type: eveType,
event,
target: targetInfo.target,
topTarget: targetInfo.topTarget,
cancelBubble: false,
offsetX: event.zrX,
offsetY: event.zrY,
gestureEvent: event.gestureEvent,
pinchX: event.pinchX,
pinchY: event.pinchY,
pinchScale: event.pinchScale,
wheelDelta: event.zrDelta,
zrByTouch: event.zrByTouch,
which: event.which,
stop: stopEvent,
}
}
function stopEvent() {
stop$1(this.event)
}
var EmptyProxy = (function (_super) {
__extends$1(EmptyProxy2, _super)
function EmptyProxy2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.handler = null
return _this
}
EmptyProxy2.prototype.dispose = function () {}
EmptyProxy2.prototype.setCursor = function () {}
return EmptyProxy2
})(Eventful$1)
var HoveredResult = (function () {
function HoveredResult2(x2, y2) {
this.x = x2
this.y = y2
}
return HoveredResult2
})()
var handlerNames = [
'click',
'dblclick',
'mousewheel',
'mouseout',
'mouseup',
'mousedown',
'mousemove',
'contextmenu',
]
var tmpRect$1 = new BoundingRect$1(0, 0, 0, 0)
var Handler = (function (_super) {
__extends$1(Handler2, _super)
function Handler2(storage2, painter, proxy, painterRoot, pointerSize) {
var _this = _super.call(this) || this
_this._hovered = new HoveredResult(0, 0)
_this.storage = storage2
_this.painter = painter
_this.painterRoot = painterRoot
_this._pointerSize = pointerSize
proxy = proxy || new EmptyProxy()
_this.proxy = null
_this.setHandlerProxy(proxy)
_this._draggingMgr = new Draggable$1(_this)
return _this
}
Handler2.prototype.setHandlerProxy = function (proxy) {
if (this.proxy) {
this.proxy.dispose()
}
if (proxy) {
each$f(
handlerNames,
function (name2) {
proxy.on && proxy.on(name2, this[name2], this)
},
this
)
proxy.handler = this
}
this.proxy = proxy
}
Handler2.prototype.mousemove = function (event) {
var x2 = event.zrX
var y2 = event.zrY
var isOutside = isOutsideBoundary(this, x2, y2)
var lastHovered = this._hovered
var lastHoveredTarget = lastHovered.target
if (lastHoveredTarget && !lastHoveredTarget.__zr) {
lastHovered = this.findHover(lastHovered.x, lastHovered.y)
lastHoveredTarget = lastHovered.target
}
var hovered = (this._hovered = isOutside
? new HoveredResult(x2, y2)
: this.findHover(x2, y2))
var hoveredTarget = hovered.target
var proxy = this.proxy
proxy.setCursor &&
proxy.setCursor(hoveredTarget ? hoveredTarget.cursor : 'default')
if (lastHoveredTarget && hoveredTarget !== lastHoveredTarget) {
this.dispatchToElement(lastHovered, 'mouseout', event)
}
this.dispatchToElement(hovered, 'mousemove', event)
if (hoveredTarget && hoveredTarget !== lastHoveredTarget) {
this.dispatchToElement(hovered, 'mouseover', event)
}
}
Handler2.prototype.mouseout = function (event) {
var eventControl = event.zrEventControl
if (eventControl !== 'only_globalout') {
this.dispatchToElement(this._hovered, 'mouseout', event)
}
if (eventControl !== 'no_globalout') {
this.trigger('globalout', { type: 'globalout', event })
}
}
Handler2.prototype.resize = function () {
this._hovered = new HoveredResult(0, 0)
}
Handler2.prototype.dispatch = function (eventName, eventArgs) {
var handler = this[eventName]
handler && handler.call(this, eventArgs)
}
Handler2.prototype.dispose = function () {
this.proxy.dispose()
this.storage = null
this.proxy = null
this.painter = null
}
Handler2.prototype.setCursorStyle = function (cursorStyle) {
var proxy = this.proxy
proxy.setCursor && proxy.setCursor(cursorStyle)
}
Handler2.prototype.dispatchToElement = function (
targetInfo,
eventName,
event
) {
targetInfo = targetInfo || {}
var el2 = targetInfo.target
if (el2 && el2.silent) {
return
}
var eventKey = 'on' + eventName
var eventPacket = makeEventPacket(eventName, targetInfo, event)
while (el2) {
el2[eventKey] &&
(eventPacket.cancelBubble = !!el2[eventKey].call(el2, eventPacket))
el2.trigger(eventName, eventPacket)
el2 = el2.__hostTarget ? el2.__hostTarget : el2.parent
if (eventPacket.cancelBubble) {
break
}
}
if (!eventPacket.cancelBubble) {
this.trigger(eventName, eventPacket)
if (this.painter && this.painter.eachOtherLayer) {
this.painter.eachOtherLayer(function (layer) {
if (typeof layer[eventKey] === 'function') {
layer[eventKey].call(layer, eventPacket)
}
if (layer.trigger) {
layer.trigger(eventName, eventPacket)
}
})
}
}
}
Handler2.prototype.findHover = function (x2, y2, exclude) {
var list2 = this.storage.getDisplayList()
var out2 = new HoveredResult(x2, y2)
setHoverTarget(list2, out2, x2, y2, exclude)
if (this._pointerSize && !out2.target) {
var candidates = []
var pointerSize = this._pointerSize
var targetSizeHalf = pointerSize / 2
var pointerRect = new BoundingRect$1(
x2 - targetSizeHalf,
y2 - targetSizeHalf,
pointerSize,
pointerSize
)
for (var i2 = list2.length - 1; i2 >= 0; i2--) {
var el2 = list2[i2]
if (
el2 !== exclude &&
!el2.ignore &&
!el2.ignoreCoarsePointer &&
(!el2.parent || !el2.parent.ignoreCoarsePointer)
) {
tmpRect$1.copy(el2.getBoundingRect())
if (el2.transform) {
tmpRect$1.applyTransform(el2.transform)
}
if (tmpRect$1.intersect(pointerRect)) {
candidates.push(el2)
}
}
}
if (candidates.length) {
var rStep = 4
var thetaStep = Math.PI / 12
var PI22 = Math.PI * 2
for (var r2 = 0; r2 < targetSizeHalf; r2 += rStep) {
for (var theta = 0; theta < PI22; theta += thetaStep) {
var x1 = x2 + r2 * Math.cos(theta)
var y1 = y2 + r2 * Math.sin(theta)
setHoverTarget(candidates, out2, x1, y1, exclude)
if (out2.target) {
return out2
}
}
}
}
}
return out2
}
Handler2.prototype.processGesture = function (event, stage) {
if (!this._gestureMgr) {
this._gestureMgr = new GestureMgr()
}
var gestureMgr = this._gestureMgr
stage === 'start' && gestureMgr.clear()
var gestureInfo = gestureMgr.recognize(
event,
this.findHover(event.zrX, event.zrY, null).target,
this.proxy.dom
)
stage === 'end' && gestureMgr.clear()
if (gestureInfo) {
var type4 = gestureInfo.type
event.gestureEvent = type4
var res = new HoveredResult()
res.target = gestureInfo.target
this.dispatchToElement(res, type4, gestureInfo.event)
}
}
return Handler2
})(Eventful$1)
each$f(
['click', 'mousedown', 'mouseup', 'mousewheel', 'dblclick', 'contextmenu'],
function (name2) {
Handler.prototype[name2] = function (event) {
var x2 = event.zrX
var y2 = event.zrY
var isOutside = isOutsideBoundary(this, x2, y2)
var hovered
var hoveredTarget
if (name2 !== 'mouseup' || !isOutside) {
hovered = this.findHover(x2, y2)
hoveredTarget = hovered.target
}
if (name2 === 'mousedown') {
this._downEl = hoveredTarget
this._downPoint = [event.zrX, event.zrY]
this._upEl = hoveredTarget
} else if (name2 === 'mouseup') {
this._upEl = hoveredTarget
} else if (name2 === 'click') {
if (
this._downEl !== this._upEl ||
!this._downPoint ||
dist$1(this._downPoint, [event.zrX, event.zrY]) > 4
) {
return
}
this._downPoint = null
}
this.dispatchToElement(hovered, name2, event)
}
}
)
function isHover(displayable, x2, y2) {
if (displayable[displayable.rectHover ? 'rectContain' : 'contain'](x2, y2)) {
var el2 = displayable
var isSilent = void 0
var ignoreClip = false
while (el2) {
if (el2.ignoreClip) {
ignoreClip = true
}
if (!ignoreClip) {
var clipPath = el2.getClipPath()
if (clipPath && !clipPath.contain(x2, y2)) {
return false
}
if (el2.silent) {
isSilent = true
}
}
var hostEl = el2.__hostTarget
el2 = hostEl ? hostEl : el2.parent
}
return isSilent ? SILENT : true
}
return false
}
function setHoverTarget(list2, out2, x2, y2, exclude) {
for (var i2 = list2.length - 1; i2 >= 0; i2--) {
var el2 = list2[i2]
var hoverCheckResult = void 0
if (
el2 !== exclude &&
!el2.ignore &&
(hoverCheckResult = isHover(el2, x2, y2))
) {
!out2.topTarget && (out2.topTarget = el2)
if (hoverCheckResult !== SILENT) {
out2.target = el2
break
}
}
}
}
function isOutsideBoundary(handlerInstance, x2, y2) {
var painter = handlerInstance.painter
return x2 < 0 || x2 > painter.getWidth() || y2 < 0 || y2 > painter.getHeight()
}
var Handler$1 = Handler
var DEFAULT_MIN_MERGE = 32
var DEFAULT_MIN_GALLOPING = 7
function minRunLength(n2) {
var r2 = 0
while (n2 >= DEFAULT_MIN_MERGE) {
r2 |= n2 & 1
n2 >>= 1
}
return n2 + r2
}
function makeAscendingRun(array4, lo, hi, compare2) {
var runHi = lo + 1
if (runHi === hi) {
return 1
}
if (compare2(array4[runHi++], array4[lo]) < 0) {
while (runHi < hi && compare2(array4[runHi], array4[runHi - 1]) < 0) {
runHi++
}
reverseRun(array4, lo, runHi)
} else {
while (runHi < hi && compare2(array4[runHi], array4[runHi - 1]) >= 0) {
runHi++
}
}
return runHi - lo
}
function reverseRun(array4, lo, hi) {
hi--
while (lo < hi) {
var t3 = array4[lo]
array4[lo++] = array4[hi]
array4[hi--] = t3
}
}
function binaryInsertionSort(array4, lo, hi, start2, compare2) {
if (start2 === lo) {
start2++
}
for (; start2 < hi; start2++) {
var pivot = array4[start2]
var left2 = lo
var right2 = start2
var mid
while (left2 < right2) {
mid = (left2 + right2) >>> 1
if (compare2(pivot, array4[mid]) < 0) {
right2 = mid
} else {
left2 = mid + 1
}
}
var n2 = start2 - left2
switch (n2) {
case 3:
array4[left2 + 3] = array4[left2 + 2]
case 2:
array4[left2 + 2] = array4[left2 + 1]
case 1:
array4[left2 + 1] = array4[left2]
break
default:
while (n2 > 0) {
array4[left2 + n2] = array4[left2 + n2 - 1]
n2--
}
}
array4[left2] = pivot
}
}
function gallopLeft(value2, array4, start2, length2, hint, compare2) {
var lastOffset = 0
var maxOffset = 0
var offset2 = 1
if (compare2(value2, array4[start2 + hint]) > 0) {
maxOffset = length2 - hint
while (
offset2 < maxOffset &&
compare2(value2, array4[start2 + hint + offset2]) > 0
) {
lastOffset = offset2
offset2 = (offset2 << 1) + 1
if (offset2 <= 0) {
offset2 = maxOffset
}
}
if (offset2 > maxOffset) {
offset2 = maxOffset
}
lastOffset += hint
offset2 += hint
} else {
maxOffset = hint + 1
while (
offset2 < maxOffset &&
compare2(value2, array4[start2 + hint - offset2]) <= 0
) {
lastOffset = offset2
offset2 = (offset2 << 1) + 1
if (offset2 <= 0) {
offset2 = maxOffset
}
}
if (offset2 > maxOffset) {
offset2 = maxOffset
}
var tmp = lastOffset
lastOffset = hint - offset2
offset2 = hint - tmp
}
lastOffset++
while (lastOffset < offset2) {
var m2 = lastOffset + ((offset2 - lastOffset) >>> 1)
if (compare2(value2, array4[start2 + m2]) > 0) {
lastOffset = m2 + 1
} else {
offset2 = m2
}
}
return offset2
}
function gallopRight(value2, array4, start2, length2, hint, compare2) {
var lastOffset = 0
var maxOffset = 0
var offset2 = 1
if (compare2(value2, array4[start2 + hint]) < 0) {
maxOffset = hint + 1
while (
offset2 < maxOffset &&
compare2(value2, array4[start2 + hint - offset2]) < 0
) {
lastOffset = offset2
offset2 = (offset2 << 1) + 1
if (offset2 <= 0) {
offset2 = maxOffset
}
}
if (offset2 > maxOffset) {
offset2 = maxOffset
}
var tmp = lastOffset
lastOffset = hint - offset2
offset2 = hint - tmp
} else {
maxOffset = length2 - hint
while (
offset2 < maxOffset &&
compare2(value2, array4[start2 + hint + offset2]) >= 0
) {
lastOffset = offset2
offset2 = (offset2 << 1) + 1
if (offset2 <= 0) {
offset2 = maxOffset
}
}
if (offset2 > maxOffset) {
offset2 = maxOffset
}
lastOffset += hint
offset2 += hint
}
lastOffset++
while (lastOffset < offset2) {
var m2 = lastOffset + ((offset2 - lastOffset) >>> 1)
if (compare2(value2, array4[start2 + m2]) < 0) {
offset2 = m2
} else {
lastOffset = m2 + 1
}
}
return offset2
}
function TimSort(array4, compare2) {
var minGallop = DEFAULT_MIN_GALLOPING
var runStart
var runLength
var stackSize = 0
array4.length
var tmp = []
runStart = []
runLength = []
function pushRun(_runStart, _runLength) {
runStart[stackSize] = _runStart
runLength[stackSize] = _runLength
stackSize += 1
}
function mergeRuns() {
while (stackSize > 1) {
var n2 = stackSize - 2
if (
(n2 >= 1 && runLength[n2 - 1] <= runLength[n2] + runLength[n2 + 1]) ||
(n2 >= 2 && runLength[n2 - 2] <= runLength[n2] + runLength[n2 - 1])
) {
if (runLength[n2 - 1] < runLength[n2 + 1]) {
n2--
}
} else if (runLength[n2] > runLength[n2 + 1]) {
break
}
mergeAt(n2)
}
}
function forceMergeRuns() {
while (stackSize > 1) {
var n2 = stackSize - 2
if (n2 > 0 && runLength[n2 - 1] < runLength[n2 + 1]) {
n2--
}
mergeAt(n2)
}
}
function mergeAt(i2) {
var start1 = runStart[i2]
var length1 = runLength[i2]
var start2 = runStart[i2 + 1]
var length2 = runLength[i2 + 1]
runLength[i2] = length1 + length2
if (i2 === stackSize - 3) {
runStart[i2 + 1] = runStart[i2 + 2]
runLength[i2 + 1] = runLength[i2 + 2]
}
stackSize--
var k2 = gallopRight(array4[start2], array4, start1, length1, 0, compare2)
start1 += k2
length1 -= k2
if (length1 === 0) {
return
}
length2 = gallopLeft(
array4[start1 + length1 - 1],
array4,
start2,
length2,
length2 - 1,
compare2
)
if (length2 === 0) {
return
}
if (length1 <= length2) {
mergeLow(start1, length1, start2, length2)
} else {
mergeHigh(start1, length1, start2, length2)
}
}
function mergeLow(start1, length1, start2, length2) {
var i2 = 0
for (i2 = 0; i2 < length1; i2++) {
tmp[i2] = array4[start1 + i2]
}
var cursor1 = 0
var cursor2 = start2
var dest = start1
array4[dest++] = array4[cursor2++]
if (--length2 === 0) {
for (i2 = 0; i2 < length1; i2++) {
array4[dest + i2] = tmp[cursor1 + i2]
}
return
}
if (length1 === 1) {
for (i2 = 0; i2 < length2; i2++) {
array4[dest + i2] = array4[cursor2 + i2]
}
array4[dest + length2] = tmp[cursor1]
return
}
var _minGallop = minGallop
var count1
var count2
var exit
while (1) {
count1 = 0
count2 = 0
exit = false
do {
if (compare2(array4[cursor2], tmp[cursor1]) < 0) {
array4[dest++] = array4[cursor2++]
count2++
count1 = 0
if (--length2 === 0) {
exit = true
break
}
} else {
array4[dest++] = tmp[cursor1++]
count1++
count2 = 0
if (--length1 === 1) {
exit = true
break
}
}
} while ((count1 | count2) < _minGallop)
if (exit) {
break
}
do {
count1 = gallopRight(
array4[cursor2],
tmp,
cursor1,
length1,
0,
compare2
)
if (count1 !== 0) {
for (i2 = 0; i2 < count1; i2++) {
array4[dest + i2] = tmp[cursor1 + i2]
}
dest += count1
cursor1 += count1
length1 -= count1
if (length1 <= 1) {
exit = true
break
}
}
array4[dest++] = array4[cursor2++]
if (--length2 === 0) {
exit = true
break
}
count2 = gallopLeft(tmp[cursor1], array4, cursor2, length2, 0, compare2)
if (count2 !== 0) {
for (i2 = 0; i2 < count2; i2++) {
array4[dest + i2] = array4[cursor2 + i2]
}
dest += count2
cursor2 += count2
length2 -= count2
if (length2 === 0) {
exit = true
break
}
}
array4[dest++] = tmp[cursor1++]
if (--length1 === 1) {
exit = true
break
}
_minGallop--
} while (
count1 >= DEFAULT_MIN_GALLOPING ||
count2 >= DEFAULT_MIN_GALLOPING
)
if (exit) {
break
}
if (_minGallop < 0) {
_minGallop = 0
}
_minGallop += 2
}
minGallop = _minGallop
minGallop < 1 && (minGallop = 1)
if (length1 === 1) {
for (i2 = 0; i2 < length2; i2++) {
array4[dest + i2] = array4[cursor2 + i2]
}
array4[dest + length2] = tmp[cursor1]
} else if (length1 === 0) {
throw new Error()
} else {
for (i2 = 0; i2 < length1; i2++) {
array4[dest + i2] = tmp[cursor1 + i2]
}
}
}
function mergeHigh(start1, length1, start2, length2) {
var i2 = 0
for (i2 = 0; i2 < length2; i2++) {
tmp[i2] = array4[start2 + i2]
}
var cursor1 = start1 + length1 - 1
var cursor2 = length2 - 1
var dest = start2 + length2 - 1
var customCursor = 0
var customDest = 0
array4[dest--] = array4[cursor1--]
if (--length1 === 0) {
customCursor = dest - (length2 - 1)
for (i2 = 0; i2 < length2; i2++) {
array4[customCursor + i2] = tmp[i2]
}
return
}
if (length2 === 1) {
dest -= length1
cursor1 -= length1
customDest = dest + 1
customCursor = cursor1 + 1
for (i2 = length1 - 1; i2 >= 0; i2--) {
array4[customDest + i2] = array4[customCursor + i2]
}
array4[dest] = tmp[cursor2]
return
}
var _minGallop = minGallop
while (true) {
var count1 = 0
var count2 = 0
var exit = false
do {
if (compare2(tmp[cursor2], array4[cursor1]) < 0) {
array4[dest--] = array4[cursor1--]
count1++
count2 = 0
if (--length1 === 0) {
exit = true
break
}
} else {
array4[dest--] = tmp[cursor2--]
count2++
count1 = 0
if (--length2 === 1) {
exit = true
break
}
}
} while ((count1 | count2) < _minGallop)
if (exit) {
break
}
do {
count1 =
length1 -
gallopRight(
tmp[cursor2],
array4,
start1,
length1,
length1 - 1,
compare2
)
if (count1 !== 0) {
dest -= count1
cursor1 -= count1
length1 -= count1
customDest = dest + 1
customCursor = cursor1 + 1
for (i2 = count1 - 1; i2 >= 0; i2--) {
array4[customDest + i2] = array4[customCursor + i2]
}
if (length1 === 0) {
exit = true
break
}
}
array4[dest--] = tmp[cursor2--]
if (--length2 === 1) {
exit = true
break
}
count2 =
length2 -
gallopLeft(array4[cursor1], tmp, 0, length2, length2 - 1, compare2)
if (count2 !== 0) {
dest -= count2
cursor2 -= count2
length2 -= count2
customDest = dest + 1
customCursor = cursor2 + 1
for (i2 = 0; i2 < count2; i2++) {
array4[customDest + i2] = tmp[customCursor + i2]
}
if (length2 <= 1) {
exit = true
break
}
}
array4[dest--] = array4[cursor1--]
if (--length1 === 0) {
exit = true
break
}
_minGallop--
} while (
count1 >= DEFAULT_MIN_GALLOPING ||
count2 >= DEFAULT_MIN_GALLOPING
)
if (exit) {
break
}
if (_minGallop < 0) {
_minGallop = 0
}
_minGallop += 2
}
minGallop = _minGallop
if (minGallop < 1) {
minGallop = 1
}
if (length2 === 1) {
dest -= length1
cursor1 -= length1
customDest = dest + 1
customCursor = cursor1 + 1
for (i2 = length1 - 1; i2 >= 0; i2--) {
array4[customDest + i2] = array4[customCursor + i2]
}
array4[dest] = tmp[cursor2]
} else if (length2 === 0) {
throw new Error()
} else {
customCursor = dest - (length2 - 1)
for (i2 = 0; i2 < length2; i2++) {
array4[customCursor + i2] = tmp[i2]
}
}
}
return {
mergeRuns,
forceMergeRuns,
pushRun,
}
}
function sort$2(array4, compare2, lo, hi) {
if (!lo) {
lo = 0
}
if (!hi) {
hi = array4.length
}
var remaining = hi - lo
if (remaining < 2) {
return
}
var runLength = 0
if (remaining < DEFAULT_MIN_MERGE) {
runLength = makeAscendingRun(array4, lo, hi, compare2)
binaryInsertionSort(array4, lo, hi, lo + runLength, compare2)
return
}
var ts = TimSort(array4, compare2)
var minRun = minRunLength(remaining)
do {
runLength = makeAscendingRun(array4, lo, hi, compare2)
if (runLength < minRun) {
var force = remaining
if (force > minRun) {
force = minRun
}
binaryInsertionSort(array4, lo, lo + force, lo + runLength, compare2)
runLength = force
}
ts.pushRun(lo, runLength)
ts.mergeRuns()
remaining -= runLength
lo += runLength
} while (remaining !== 0)
ts.forceMergeRuns()
}
var REDRAW_BIT = 1
var STYLE_CHANGED_BIT = 2
var SHAPE_CHANGED_BIT = 4
var invalidZErrorLogged = false
function logInvalidZError() {
if (invalidZErrorLogged) {
return
}
invalidZErrorLogged = true
console.warn(
'z / z2 / zlevel of displayable is invalid, which may cause unexpected errors'
)
}
function shapeCompareFunc(a2, b2) {
if (a2.zlevel === b2.zlevel) {
if (a2.z === b2.z) {
return a2.z2 - b2.z2
}
return a2.z - b2.z
}
return a2.zlevel - b2.zlevel
}
var Storage = (function () {
function Storage2() {
this._roots = []
this._displayList = []
this._displayListLen = 0
this.displayableSortFunc = shapeCompareFunc
}
Storage2.prototype.traverse = function (cb, context2) {
for (var i2 = 0; i2 < this._roots.length; i2++) {
this._roots[i2].traverse(cb, context2)
}
}
Storage2.prototype.getDisplayList = function (update3, includeIgnore) {
includeIgnore = includeIgnore || false
var displayList = this._displayList
if (update3 || !displayList.length) {
this.updateDisplayList(includeIgnore)
}
return displayList
}
Storage2.prototype.updateDisplayList = function (includeIgnore) {
this._displayListLen = 0
var roots2 = this._roots
var displayList = this._displayList
for (var i2 = 0, len2 = roots2.length; i2 < len2; i2++) {
this._updateAndAddDisplayable(roots2[i2], null, includeIgnore)
}
displayList.length = this._displayListLen
sort$2(displayList, shapeCompareFunc)
}
Storage2.prototype._updateAndAddDisplayable = function (
el2,
clipPaths,
includeIgnore
) {
if (el2.ignore && !includeIgnore) {
return
}
el2.beforeUpdate()
el2.update()
el2.afterUpdate()
var userSetClipPath = el2.getClipPath()
if (el2.ignoreClip) {
clipPaths = null
} else if (userSetClipPath) {
if (clipPaths) {
clipPaths = clipPaths.slice()
} else {
clipPaths = []
}
var currentClipPath = userSetClipPath
var parentClipPath = el2
while (currentClipPath) {
currentClipPath.parent = parentClipPath
currentClipPath.updateTransform()
clipPaths.push(currentClipPath)
parentClipPath = currentClipPath
currentClipPath = currentClipPath.getClipPath()
}
}
if (el2.childrenRef) {
var children = el2.childrenRef()
for (var i2 = 0; i2 < children.length; i2++) {
var child = children[i2]
if (el2.__dirty) {
child.__dirty |= REDRAW_BIT
}
this._updateAndAddDisplayable(child, clipPaths, includeIgnore)
}
el2.__dirty = 0
} else {
var disp = el2
if (clipPaths && clipPaths.length) {
disp.__clipPaths = clipPaths
} else if (disp.__clipPaths && disp.__clipPaths.length > 0) {
disp.__clipPaths = []
}
if (isNaN(disp.z)) {
logInvalidZError()
disp.z = 0
}
if (isNaN(disp.z2)) {
logInvalidZError()
disp.z2 = 0
}
if (isNaN(disp.zlevel)) {
logInvalidZError()
disp.zlevel = 0
}
this._displayList[this._displayListLen++] = disp
}
var decalEl = el2.getDecalElement && el2.getDecalElement()
if (decalEl) {
this._updateAndAddDisplayable(decalEl, clipPaths, includeIgnore)
}
var textGuide = el2.getTextGuideLine()
if (textGuide) {
this._updateAndAddDisplayable(textGuide, clipPaths, includeIgnore)
}
var textEl = el2.getTextContent()
if (textEl) {
this._updateAndAddDisplayable(textEl, clipPaths, includeIgnore)
}
}
Storage2.prototype.addRoot = function (el2) {
if (el2.__zr && el2.__zr.storage === this) {
return
}
this._roots.push(el2)
}
Storage2.prototype.delRoot = function (el2) {
if (el2 instanceof Array) {
for (var i2 = 0, l2 = el2.length; i2 < l2; i2++) {
this.delRoot(el2[i2])
}
return
}
var idx = indexOf(this._roots, el2)
if (idx >= 0) {
this._roots.splice(idx, 1)
}
}
Storage2.prototype.delAllRoots = function () {
this._roots = []
this._displayList = []
this._displayListLen = 0
return
}
Storage2.prototype.getRoots = function () {
return this._roots
}
Storage2.prototype.dispose = function () {
this._displayList = null
this._roots = null
}
return Storage2
})()
var Storage$1 = Storage
var requestAnimationFrame$1
requestAnimationFrame$1 =
(env$1.hasGlobalWindow &&
((window.requestAnimationFrame &&
window.requestAnimationFrame.bind(window)) ||
(window.msRequestAnimationFrame &&
window.msRequestAnimationFrame.bind(window)) ||
window.mozRequestAnimationFrame ||
window.webkitRequestAnimationFrame)) ||
function (func) {
return setTimeout(func, 16)
}
var requestAnimationFrame$2 = requestAnimationFrame$1
var easingFuncs = {
linear: function (k2) {
return k2
},
quadraticIn: function (k2) {
return k2 * k2
},
quadraticOut: function (k2) {
return k2 * (2 - k2)
},
quadraticInOut: function (k2) {
if ((k2 *= 2) < 1) {
return 0.5 * k2 * k2
}
return -0.5 * (--k2 * (k2 - 2) - 1)
},
cubicIn: function (k2) {
return k2 * k2 * k2
},
cubicOut: function (k2) {
return --k2 * k2 * k2 + 1
},
cubicInOut: function (k2) {
if ((k2 *= 2) < 1) {
return 0.5 * k2 * k2 * k2
}
return 0.5 * ((k2 -= 2) * k2 * k2 + 2)
},
quarticIn: function (k2) {
return k2 * k2 * k2 * k2
},
quarticOut: function (k2) {
return 1 - --k2 * k2 * k2 * k2
},
quarticInOut: function (k2) {
if ((k2 *= 2) < 1) {
return 0.5 * k2 * k2 * k2 * k2
}
return -0.5 * ((k2 -= 2) * k2 * k2 * k2 - 2)
},
quinticIn: function (k2) {
return k2 * k2 * k2 * k2 * k2
},
quinticOut: function (k2) {
return --k2 * k2 * k2 * k2 * k2 + 1
},
quinticInOut: function (k2) {
if ((k2 *= 2) < 1) {
return 0.5 * k2 * k2 * k2 * k2 * k2
}
return 0.5 * ((k2 -= 2) * k2 * k2 * k2 * k2 + 2)
},
sinusoidalIn: function (k2) {
return 1 - Math.cos((k2 * Math.PI) / 2)
},
sinusoidalOut: function (k2) {
return Math.sin((k2 * Math.PI) / 2)
},
sinusoidalInOut: function (k2) {
return 0.5 * (1 - Math.cos(Math.PI * k2))
},
exponentialIn: function (k2) {
return k2 === 0 ? 0 : Math.pow(1024, k2 - 1)
},
exponentialOut: function (k2) {
return k2 === 1 ? 1 : 1 - Math.pow(2, -10 * k2)
},
exponentialInOut: function (k2) {
if (k2 === 0) {
return 0
}
if (k2 === 1) {
return 1
}
if ((k2 *= 2) < 1) {
return 0.5 * Math.pow(1024, k2 - 1)
}
return 0.5 * (-Math.pow(2, -10 * (k2 - 1)) + 2)
},
circularIn: function (k2) {
return 1 - Math.sqrt(1 - k2 * k2)
},
circularOut: function (k2) {
return Math.sqrt(1 - --k2 * k2)
},
circularInOut: function (k2) {
if ((k2 *= 2) < 1) {
return -0.5 * (Math.sqrt(1 - k2 * k2) - 1)
}
return 0.5 * (Math.sqrt(1 - (k2 -= 2) * k2) + 1)
},
elasticIn: function (k2) {
var s2
var a2 = 0.1
var p2 = 0.4
if (k2 === 0) {
return 0
}
if (k2 === 1) {
return 1
}
if (!a2 || a2 < 1) {
a2 = 1
s2 = p2 / 4
} else {
s2 = (p2 * Math.asin(1 / a2)) / (2 * Math.PI)
}
return -(
a2 *
Math.pow(2, 10 * (k2 -= 1)) *
Math.sin(((k2 - s2) * (2 * Math.PI)) / p2)
)
},
elasticOut: function (k2) {
var s2
var a2 = 0.1
var p2 = 0.4
if (k2 === 0) {
return 0
}
if (k2 === 1) {
return 1
}
if (!a2 || a2 < 1) {
a2 = 1
s2 = p2 / 4
} else {
s2 = (p2 * Math.asin(1 / a2)) / (2 * Math.PI)
}
return (
a2 * Math.pow(2, -10 * k2) * Math.sin(((k2 - s2) * (2 * Math.PI)) / p2) +
1
)
},
elasticInOut: function (k2) {
var s2
var a2 = 0.1
var p2 = 0.4
if (k2 === 0) {
return 0
}
if (k2 === 1) {
return 1
}
if (!a2 || a2 < 1) {
a2 = 1
s2 = p2 / 4
} else {
s2 = (p2 * Math.asin(1 / a2)) / (2 * Math.PI)
}
if ((k2 *= 2) < 1) {
return (
-0.5 *
(a2 *
Math.pow(2, 10 * (k2 -= 1)) *
Math.sin(((k2 - s2) * (2 * Math.PI)) / p2))
)
}
return (
a2 *
Math.pow(2, -10 * (k2 -= 1)) *
Math.sin(((k2 - s2) * (2 * Math.PI)) / p2) *
0.5 +
1
)
},
backIn: function (k2) {
var s2 = 1.70158
return k2 * k2 * ((s2 + 1) * k2 - s2)
},
backOut: function (k2) {
var s2 = 1.70158
return --k2 * k2 * ((s2 + 1) * k2 + s2) + 1
},
backInOut: function (k2) {
var s2 = 1.70158 * 1.525
if ((k2 *= 2) < 1) {
return 0.5 * (k2 * k2 * ((s2 + 1) * k2 - s2))
}
return 0.5 * ((k2 -= 2) * k2 * ((s2 + 1) * k2 + s2) + 2)
},
bounceIn: function (k2) {
return 1 - easingFuncs.bounceOut(1 - k2)
},
bounceOut: function (k2) {
if (k2 < 1 / 2.75) {
return 7.5625 * k2 * k2
} else if (k2 < 2 / 2.75) {
return 7.5625 * (k2 -= 1.5 / 2.75) * k2 + 0.75
} else if (k2 < 2.5 / 2.75) {
return 7.5625 * (k2 -= 2.25 / 2.75) * k2 + 0.9375
} else {
return 7.5625 * (k2 -= 2.625 / 2.75) * k2 + 0.984375
}
},
bounceInOut: function (k2) {
if (k2 < 0.5) {
return easingFuncs.bounceIn(k2 * 2) * 0.5
}
return easingFuncs.bounceOut(k2 * 2 - 1) * 0.5 + 0.5
},
}
var easingFuncs$1 = easingFuncs
var mathPow$2 = Math.pow
var mathSqrt$3 = Math.sqrt
var EPSILON$4 = 1e-8
var EPSILON_NUMERIC = 1e-4
var THREE_SQRT = mathSqrt$3(3)
var ONE_THIRD = 1 / 3
var _v0 = create$2()
var _v1 = create$2()
var _v2 = create$2()
function isAroundZero$1(val2) {
return val2 > -EPSILON$4 && val2 < EPSILON$4
}
function isNotAroundZero$1(val2) {
return val2 > EPSILON$4 || val2 < -EPSILON$4
}
function cubicAt(p0, p1, p2, p3, t3) {
var onet = 1 - t3
return (
onet * onet * (onet * p0 + 3 * t3 * p1) +
t3 * t3 * (t3 * p3 + 3 * onet * p2)
)
}
function cubicDerivativeAt(p0, p1, p2, p3, t3) {
var onet = 1 - t3
return (
3 * (((p1 - p0) * onet + 2 * (p2 - p1) * t3) * onet + (p3 - p2) * t3 * t3)
)
}
function cubicRootAt(p0, p1, p2, p3, val2, roots2) {
var a2 = p3 + 3 * (p1 - p2) - p0
var b2 = 3 * (p2 - p1 * 2 + p0)
var c2 = 3 * (p1 - p0)
var d3 = p0 - val2
var A2 = b2 * b2 - 3 * a2 * c2
var B3 = b2 * c2 - 9 * a2 * d3
var C2 = c2 * c2 - 3 * b2 * d3
var n2 = 0
if (isAroundZero$1(A2) && isAroundZero$1(B3)) {
if (isAroundZero$1(b2)) {
roots2[0] = 0
} else {
var t1 = -c2 / b2
if (t1 >= 0 && t1 <= 1) {
roots2[n2++] = t1
}
}
} else {
var disc = B3 * B3 - 4 * A2 * C2
if (isAroundZero$1(disc)) {
var K2 = B3 / A2
var t1 = -b2 / a2 + K2
var t22 = -K2 / 2
if (t1 >= 0 && t1 <= 1) {
roots2[n2++] = t1
}
if (t22 >= 0 && t22 <= 1) {
roots2[n2++] = t22
}
} else if (disc > 0) {
var discSqrt = mathSqrt$3(disc)
var Y1 = A2 * b2 + 1.5 * a2 * (-B3 + discSqrt)
var Y2 = A2 * b2 + 1.5 * a2 * (-B3 - discSqrt)
if (Y1 < 0) {
Y1 = -mathPow$2(-Y1, ONE_THIRD)
} else {
Y1 = mathPow$2(Y1, ONE_THIRD)
}
if (Y2 < 0) {
Y2 = -mathPow$2(-Y2, ONE_THIRD)
} else {
Y2 = mathPow$2(Y2, ONE_THIRD)
}
var t1 = (-b2 - (Y1 + Y2)) / (3 * a2)
if (t1 >= 0 && t1 <= 1) {
roots2[n2++] = t1
}
} else {
var T2 = (2 * A2 * b2 - 3 * a2 * B3) / (2 * mathSqrt$3(A2 * A2 * A2))
var theta = Math.acos(T2) / 3
var ASqrt = mathSqrt$3(A2)
var tmp = Math.cos(theta)
var t1 = (-b2 - 2 * ASqrt * tmp) / (3 * a2)
var t22 = (-b2 + ASqrt * (tmp + THREE_SQRT * Math.sin(theta))) / (3 * a2)
var t3 = (-b2 + ASqrt * (tmp - THREE_SQRT * Math.sin(theta))) / (3 * a2)
if (t1 >= 0 && t1 <= 1) {
roots2[n2++] = t1
}
if (t22 >= 0 && t22 <= 1) {
roots2[n2++] = t22
}
if (t3 >= 0 && t3 <= 1) {
roots2[n2++] = t3
}
}
}
return n2
}
function cubicExtrema(p0, p1, p2, p3, extrema2) {
var b2 = 6 * p2 - 12 * p1 + 6 * p0
var a2 = 9 * p1 + 3 * p3 - 3 * p0 - 9 * p2
var c2 = 3 * p1 - 3 * p0
var n2 = 0
if (isAroundZero$1(a2)) {
if (isNotAroundZero$1(b2)) {
var t1 = -c2 / b2
if (t1 >= 0 && t1 <= 1) {
extrema2[n2++] = t1
}
}
} else {
var disc = b2 * b2 - 4 * a2 * c2
if (isAroundZero$1(disc)) {
extrema2[0] = -b2 / (2 * a2)
} else if (disc > 0) {
var discSqrt = mathSqrt$3(disc)
var t1 = (-b2 + discSqrt) / (2 * a2)
var t22 = (-b2 - discSqrt) / (2 * a2)
if (t1 >= 0 && t1 <= 1) {
extrema2[n2++] = t1
}
if (t22 >= 0 && t22 <= 1) {
extrema2[n2++] = t22
}
}
}
return n2
}
function cubicSubdivide(p0, p1, p2, p3, t3, out2) {
var p01 = (p1 - p0) * t3 + p0
var p12 = (p2 - p1) * t3 + p1
var p23 = (p3 - p2) * t3 + p2
var p012 = (p12 - p01) * t3 + p01
var p123 = (p23 - p12) * t3 + p12
var p0123 = (p123 - p012) * t3 + p012
out2[0] = p0
out2[1] = p01
out2[2] = p012
out2[3] = p0123
out2[4] = p0123
out2[5] = p123
out2[6] = p23
out2[7] = p3
}
function cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x4, y4, out2) {
var t3
var interval = 5e-3
var d3 = Infinity
var prev
var next
var d1
var d22
_v0[0] = x4
_v0[1] = y4
for (var _t2 = 0; _t2 < 1; _t2 += 0.05) {
_v1[0] = cubicAt(x0, x1, x2, x3, _t2)
_v1[1] = cubicAt(y0, y1, y2, y3, _t2)
d1 = distSquare(_v0, _v1)
if (d1 < d3) {
t3 = _t2
d3 = d1
}
}
d3 = Infinity
for (var i2 = 0; i2 < 32; i2++) {
if (interval < EPSILON_NUMERIC) {
break
}
prev = t3 - interval
next = t3 + interval
_v1[0] = cubicAt(x0, x1, x2, x3, prev)
_v1[1] = cubicAt(y0, y1, y2, y3, prev)
d1 = distSquare(_v1, _v0)
if (prev >= 0 && d1 < d3) {
t3 = prev
d3 = d1
} else {
_v2[0] = cubicAt(x0, x1, x2, x3, next)
_v2[1] = cubicAt(y0, y1, y2, y3, next)
d22 = distSquare(_v2, _v0)
if (next <= 1 && d22 < d3) {
t3 = next
d3 = d22
} else {
interval *= 0.5
}
}
}
if (out2) {
out2[0] = cubicAt(x0, x1, x2, x3, t3)
out2[1] = cubicAt(y0, y1, y2, y3, t3)
}
return mathSqrt$3(d3)
}
function cubicLength(x0, y0, x1, y1, x2, y2, x3, y3, iteration) {
var px2 = x0
var py = y0
var d3 = 0
var step = 1 / iteration
for (var i2 = 1; i2 <= iteration; i2++) {
var t3 = i2 * step
var x4 = cubicAt(x0, x1, x2, x3, t3)
var y4 = cubicAt(y0, y1, y2, y3, t3)
var dx = x4 - px2
var dy = y4 - py
d3 += Math.sqrt(dx * dx + dy * dy)
px2 = x4
py = y4
}
return d3
}
function quadraticAt$1(p0, p1, p2, t3) {
var onet = 1 - t3
return onet * (onet * p0 + 2 * t3 * p1) + t3 * t3 * p2
}
function quadraticDerivativeAt(p0, p1, p2, t3) {
return 2 * ((1 - t3) * (p1 - p0) + t3 * (p2 - p1))
}
function quadraticRootAt(p0, p1, p2, val2, roots2) {
var a2 = p0 - 2 * p1 + p2
var b2 = 2 * (p1 - p0)
var c2 = p0 - val2
var n2 = 0
if (isAroundZero$1(a2)) {
if (isNotAroundZero$1(b2)) {
var t1 = -c2 / b2
if (t1 >= 0 && t1 <= 1) {
roots2[n2++] = t1
}
}
} else {
var disc = b2 * b2 - 4 * a2 * c2
if (isAroundZero$1(disc)) {
var t1 = -b2 / (2 * a2)
if (t1 >= 0 && t1 <= 1) {
roots2[n2++] = t1
}
} else if (disc > 0) {
var discSqrt = mathSqrt$3(disc)
var t1 = (-b2 + discSqrt) / (2 * a2)
var t22 = (-b2 - discSqrt) / (2 * a2)
if (t1 >= 0 && t1 <= 1) {
roots2[n2++] = t1
}
if (t22 >= 0 && t22 <= 1) {
roots2[n2++] = t22
}
}
}
return n2
}
function quadraticExtremum(p0, p1, p2) {
var divider = p0 + p2 - 2 * p1
if (divider === 0) {
return 0.5
} else {
return (p0 - p1) / divider
}
}
function quadraticSubdivide(p0, p1, p2, t3, out2) {
var p01 = (p1 - p0) * t3 + p0
var p12 = (p2 - p1) * t3 + p1
var p012 = (p12 - p01) * t3 + p01
out2[0] = p0
out2[1] = p01
out2[2] = p012
out2[3] = p012
out2[4] = p12
out2[5] = p2
}
function quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, out2) {
var t3
var interval = 5e-3
var d3 = Infinity
_v0[0] = x3
_v0[1] = y3
for (var _t2 = 0; _t2 < 1; _t2 += 0.05) {
_v1[0] = quadraticAt$1(x0, x1, x2, _t2)
_v1[1] = quadraticAt$1(y0, y1, y2, _t2)
var d1 = distSquare(_v0, _v1)
if (d1 < d3) {
t3 = _t2
d3 = d1
}
}
d3 = Infinity
for (var i2 = 0; i2 < 32; i2++) {
if (interval < EPSILON_NUMERIC) {
break
}
var prev = t3 - interval
var next = t3 + interval
_v1[0] = quadraticAt$1(x0, x1, x2, prev)
_v1[1] = quadraticAt$1(y0, y1, y2, prev)
var d1 = distSquare(_v1, _v0)
if (prev >= 0 && d1 < d3) {
t3 = prev
d3 = d1
} else {
_v2[0] = quadraticAt$1(x0, x1, x2, next)
_v2[1] = quadraticAt$1(y0, y1, y2, next)
var d22 = distSquare(_v2, _v0)
if (next <= 1 && d22 < d3) {
t3 = next
d3 = d22
} else {
interval *= 0.5
}
}
}
if (out2) {
out2[0] = quadraticAt$1(x0, x1, x2, t3)
out2[1] = quadraticAt$1(y0, y1, y2, t3)
}
return mathSqrt$3(d3)
}
function quadraticLength(x0, y0, x1, y1, x2, y2, iteration) {
var px2 = x0
var py = y0
var d3 = 0
var step = 1 / iteration
for (var i2 = 1; i2 <= iteration; i2++) {
var t3 = i2 * step
var x3 = quadraticAt$1(x0, x1, x2, t3)
var y3 = quadraticAt$1(y0, y1, y2, t3)
var dx = x3 - px2
var dy = y3 - py
d3 += Math.sqrt(dx * dx + dy * dy)
px2 = x3
py = y3
}
return d3
}
var regexp = /cubic-bezier\(([0-9,\.e ]+)\)/
function createCubicEasingFunc(cubicEasingStr) {
var cubic2 = cubicEasingStr && regexp.exec(cubicEasingStr)
if (cubic2) {
var points2 = cubic2[1].split(',')
var a_1 = +trim$1(points2[0])
var b_1 = +trim$1(points2[1])
var c_1 = +trim$1(points2[2])
var d_1 = +trim$1(points2[3])
if (isNaN(a_1 + b_1 + c_1 + d_1)) {
return
}
var roots_1 = []
return function (p2) {
return p2 <= 0
? 0
: p2 >= 1
? 1
: cubicRootAt(0, a_1, c_1, 1, p2, roots_1) &&
cubicAt(0, b_1, d_1, 1, roots_1[0])
}
}
}
var Clip = (function () {
function Clip2(opts) {
this._inited = false
this._startTime = 0
this._pausedTime = 0
this._paused = false
this._life = opts.life || 1e3
this._delay = opts.delay || 0
this.loop = opts.loop || false
this.onframe = opts.onframe || noop
this.ondestroy = opts.ondestroy || noop
this.onrestart = opts.onrestart || noop
opts.easing && this.setEasing(opts.easing)
}
Clip2.prototype.step = function (globalTime, deltaTime) {
if (!this._inited) {
this._startTime = globalTime + this._delay
this._inited = true
}
if (this._paused) {
this._pausedTime += deltaTime
return
}
var life = this._life
var elapsedTime = globalTime - this._startTime - this._pausedTime
var percent = elapsedTime / life
if (percent < 0) {
percent = 0
}
percent = Math.min(percent, 1)
var easingFunc = this.easingFunc
var schedule = easingFunc ? easingFunc(percent) : percent
this.onframe(schedule)
if (percent === 1) {
if (this.loop) {
var remainder = elapsedTime % life
this._startTime = globalTime - remainder
this._pausedTime = 0
this.onrestart()
} else {
return true
}
}
return false
}
Clip2.prototype.pause = function () {
this._paused = true
}
Clip2.prototype.resume = function () {
this._paused = false
}
Clip2.prototype.setEasing = function (easing) {
this.easing = easing
this.easingFunc = isFunction$4(easing)
? easing
: easingFuncs$1[easing] || createCubicEasingFunc(easing)
}
return Clip2
})()
var Clip$1 = Clip
var Entry = (function () {
function Entry2(val2) {
this.value = val2
}
return Entry2
})()
var LinkedList = (function () {
function LinkedList2() {
this._len = 0
}
LinkedList2.prototype.insert = function (val2) {
var entry = new Entry(val2)
this.insertEntry(entry)
return entry
}
LinkedList2.prototype.insertEntry = function (entry) {
if (!this.head) {
this.head = this.tail = entry
} else {
this.tail.next = entry
entry.prev = this.tail
entry.next = null
this.tail = entry
}
this._len++
}
LinkedList2.prototype.remove = function (entry) {
var prev = entry.prev
var next = entry.next
if (prev) {
prev.next = next
} else {
this.head = next
}
if (next) {
next.prev = prev
} else {
this.tail = prev
}
entry.next = entry.prev = null
this._len--
}
LinkedList2.prototype.len = function () {
return this._len
}
LinkedList2.prototype.clear = function () {
this.head = this.tail = null
this._len = 0
}
return LinkedList2
})()
var LRU = (function () {
function LRU2(maxSize) {
this._list = new LinkedList()
this._maxSize = 10
this._map = {}
this._maxSize = maxSize
}
LRU2.prototype.put = function (key2, value2) {
var list2 = this._list
var map2 = this._map
var removed = null
if (map2[key2] == null) {
var len2 = list2.len()
var entry = this._lastRemovedEntry
if (len2 >= this._maxSize && len2 > 0) {
var leastUsedEntry = list2.head
list2.remove(leastUsedEntry)
delete map2[leastUsedEntry.key]
removed = leastUsedEntry.value
this._lastRemovedEntry = leastUsedEntry
}
if (entry) {
entry.value = value2
} else {
entry = new Entry(value2)
}
entry.key = key2
list2.insertEntry(entry)
map2[key2] = entry
}
return removed
}
LRU2.prototype.get = function (key2) {
var entry = this._map[key2]
var list2 = this._list
if (entry != null) {
if (entry !== list2.tail) {
list2.remove(entry)
list2.insertEntry(entry)
}
return entry.value
}
}
LRU2.prototype.clear = function () {
this._list.clear()
this._map = {}
}
LRU2.prototype.len = function () {
return this._list.len()
}
return LRU2
})()
var LRU$1 = LRU
var kCSSColorTable = {
transparent: [0, 0, 0, 0],
aliceblue: [240, 248, 255, 1],
antiquewhite: [250, 235, 215, 1],
aqua: [0, 255, 255, 1],
aquamarine: [127, 255, 212, 1],
azure: [240, 255, 255, 1],
beige: [245, 245, 220, 1],
bisque: [255, 228, 196, 1],
black: [0, 0, 0, 1],
blanchedalmond: [255, 235, 205, 1],
blue: [0, 0, 255, 1],
blueviolet: [138, 43, 226, 1],
brown: [165, 42, 42, 1],
burlywood: [222, 184, 135, 1],
cadetblue: [95, 158, 160, 1],
chartreuse: [127, 255, 0, 1],
chocolate: [210, 105, 30, 1],
coral: [255, 127, 80, 1],
cornflowerblue: [100, 149, 237, 1],
cornsilk: [255, 248, 220, 1],
crimson: [220, 20, 60, 1],
cyan: [0, 255, 255, 1],
darkblue: [0, 0, 139, 1],
darkcyan: [0, 139, 139, 1],
darkgoldenrod: [184, 134, 11, 1],
darkgray: [169, 169, 169, 1],
darkgreen: [0, 100, 0, 1],
darkgrey: [169, 169, 169, 1],
darkkhaki: [189, 183, 107, 1],
darkmagenta: [139, 0, 139, 1],
darkolivegreen: [85, 107, 47, 1],
darkorange: [255, 140, 0, 1],
darkorchid: [153, 50, 204, 1],
darkred: [139, 0, 0, 1],
darksalmon: [233, 150, 122, 1],
darkseagreen: [143, 188, 143, 1],
darkslateblue: [72, 61, 139, 1],
darkslategray: [47, 79, 79, 1],
darkslategrey: [47, 79, 79, 1],
darkturquoise: [0, 206, 209, 1],
darkviolet: [148, 0, 211, 1],
deeppink: [255, 20, 147, 1],
deepskyblue: [0, 191, 255, 1],
dimgray: [105, 105, 105, 1],
dimgrey: [105, 105, 105, 1],
dodgerblue: [30, 144, 255, 1],
firebrick: [178, 34, 34, 1],
floralwhite: [255, 250, 240, 1],
forestgreen: [34, 139, 34, 1],
fuchsia: [255, 0, 255, 1],
gainsboro: [220, 220, 220, 1],
ghostwhite: [248, 248, 255, 1],
gold: [255, 215, 0, 1],
goldenrod: [218, 165, 32, 1],
gray: [128, 128, 128, 1],
green: [0, 128, 0, 1],
greenyellow: [173, 255, 47, 1],
grey: [128, 128, 128, 1],
honeydew: [240, 255, 240, 1],
hotpink: [255, 105, 180, 1],
indianred: [205, 92, 92, 1],
indigo: [75, 0, 130, 1],
ivory: [255, 255, 240, 1],
khaki: [240, 230, 140, 1],
lavender: [230, 230, 250, 1],
lavenderblush: [255, 240, 245, 1],
lawngreen: [124, 252, 0, 1],
lemonchiffon: [255, 250, 205, 1],
lightblue: [173, 216, 230, 1],
lightcoral: [240, 128, 128, 1],
lightcyan: [224, 255, 255, 1],
lightgoldenrodyellow: [250, 250, 210, 1],
lightgray: [211, 211, 211, 1],
lightgreen: [144, 238, 144, 1],
lightgrey: [211, 211, 211, 1],
lightpink: [255, 182, 193, 1],
lightsalmon: [255, 160, 122, 1],
lightseagreen: [32, 178, 170, 1],
lightskyblue: [135, 206, 250, 1],
lightslategray: [119, 136, 153, 1],
lightslategrey: [119, 136, 153, 1],
lightsteelblue: [176, 196, 222, 1],
lightyellow: [255, 255, 224, 1],
lime: [0, 255, 0, 1],
limegreen: [50, 205, 50, 1],
linen: [250, 240, 230, 1],
magenta: [255, 0, 255, 1],
maroon: [128, 0, 0, 1],
mediumaquamarine: [102, 205, 170, 1],
mediumblue: [0, 0, 205, 1],
mediumorchid: [186, 85, 211, 1],
mediumpurple: [147, 112, 219, 1],
mediumseagreen: [60, 179, 113, 1],
mediumslateblue: [123, 104, 238, 1],
mediumspringgreen: [0, 250, 154, 1],
mediumturquoise: [72, 209, 204, 1],
mediumvioletred: [199, 21, 133, 1],
midnightblue: [25, 25, 112, 1],
mintcream: [245, 255, 250, 1],
mistyrose: [255, 228, 225, 1],
moccasin: [255, 228, 181, 1],
navajowhite: [255, 222, 173, 1],
navy: [0, 0, 128, 1],
oldlace: [253, 245, 230, 1],
olive: [128, 128, 0, 1],
olivedrab: [107, 142, 35, 1],
orange: [255, 165, 0, 1],
orangered: [255, 69, 0, 1],
orchid: [218, 112, 214, 1],
palegoldenrod: [238, 232, 170, 1],
palegreen: [152, 251, 152, 1],
paleturquoise: [175, 238, 238, 1],
palevioletred: [219, 112, 147, 1],
papayawhip: [255, 239, 213, 1],
peachpuff: [255, 218, 185, 1],
peru: [205, 133, 63, 1],
pink: [255, 192, 203, 1],
plum: [221, 160, 221, 1],
powderblue: [176, 224, 230, 1],
purple: [128, 0, 128, 1],
red: [255, 0, 0, 1],
rosybrown: [188, 143, 143, 1],
royalblue: [65, 105, 225, 1],
saddlebrown: [139, 69, 19, 1],
salmon: [250, 128, 114, 1],
sandybrown: [244, 164, 96, 1],
seagreen: [46, 139, 87, 1],
seashell: [255, 245, 238, 1],
sienna: [160, 82, 45, 1],
silver: [192, 192, 192, 1],
skyblue: [135, 206, 235, 1],
slateblue: [106, 90, 205, 1],
slategray: [112, 128, 144, 1],
slategrey: [112, 128, 144, 1],
snow: [255, 250, 250, 1],
springgreen: [0, 255, 127, 1],
steelblue: [70, 130, 180, 1],
tan: [210, 180, 140, 1],
teal: [0, 128, 128, 1],
thistle: [216, 191, 216, 1],
tomato: [255, 99, 71, 1],
turquoise: [64, 224, 208, 1],
violet: [238, 130, 238, 1],
wheat: [245, 222, 179, 1],
white: [255, 255, 255, 1],
whitesmoke: [245, 245, 245, 1],
yellow: [255, 255, 0, 1],
yellowgreen: [154, 205, 50, 1],
}
function clampCssByte(i2) {
i2 = Math.round(i2)
return i2 < 0 ? 0 : i2 > 255 ? 255 : i2
}
function clampCssAngle(i2) {
i2 = Math.round(i2)
return i2 < 0 ? 0 : i2 > 360 ? 360 : i2
}
function clampCssFloat(f2) {
return f2 < 0 ? 0 : f2 > 1 ? 1 : f2
}
function parseCssInt(val2) {
var str = val2
if (str.length && str.charAt(str.length - 1) === '%') {
return clampCssByte((parseFloat(str) / 100) * 255)
}
return clampCssByte(parseInt(str, 10))
}
function parseCssFloat(val2) {
var str = val2
if (str.length && str.charAt(str.length - 1) === '%') {
return clampCssFloat(parseFloat(str) / 100)
}
return clampCssFloat(parseFloat(str))
}
function cssHueToRgb(m1, m2, h2) {
if (h2 < 0) {
h2 += 1
} else if (h2 > 1) {
h2 -= 1
}
if (h2 * 6 < 1) {
return m1 + (m2 - m1) * h2 * 6
}
if (h2 * 2 < 1) {
return m2
}
if (h2 * 3 < 2) {
return m1 + (m2 - m1) * (2 / 3 - h2) * 6
}
return m1
}
function lerpNumber(a2, b2, p2) {
return a2 + (b2 - a2) * p2
}
function setRgba(out2, r2, g2, b2, a2) {
out2[0] = r2
out2[1] = g2
out2[2] = b2
out2[3] = a2
return out2
}
function copyRgba(out2, a2) {
out2[0] = a2[0]
out2[1] = a2[1]
out2[2] = a2[2]
out2[3] = a2[3]
return out2
}
var colorCache = new LRU$1(20)
var lastRemovedArr = null
function putToCache(colorStr, rgbaArr) {
if (lastRemovedArr) {
copyRgba(lastRemovedArr, rgbaArr)
}
lastRemovedArr = colorCache.put(colorStr, lastRemovedArr || rgbaArr.slice())
}
function parse$1(colorStr, rgbaArr) {
if (!colorStr) {
return
}
rgbaArr = rgbaArr || []
var cached = colorCache.get(colorStr)
if (cached) {
return copyRgba(rgbaArr, cached)
}
colorStr = colorStr + ''
var str = colorStr.replace(/ /g, '').toLowerCase()
if (str in kCSSColorTable) {
copyRgba(rgbaArr, kCSSColorTable[str])
putToCache(colorStr, rgbaArr)
return rgbaArr
}
var strLen = str.length
if (str.charAt(0) === '#') {
if (strLen === 4 || strLen === 5) {
var iv = parseInt(str.slice(1, 4), 16)
if (!(iv >= 0 && iv <= 4095)) {
setRgba(rgbaArr, 0, 0, 0, 1)
return
}
setRgba(
rgbaArr,
((iv & 3840) >> 4) | ((iv & 3840) >> 8),
(iv & 240) | ((iv & 240) >> 4),
(iv & 15) | ((iv & 15) << 4),
strLen === 5 ? parseInt(str.slice(4), 16) / 15 : 1
)
putToCache(colorStr, rgbaArr)
return rgbaArr
} else if (strLen === 7 || strLen === 9) {
var iv = parseInt(str.slice(1, 7), 16)
if (!(iv >= 0 && iv <= 16777215)) {
setRgba(rgbaArr, 0, 0, 0, 1)
return
}
setRgba(
rgbaArr,
(iv & 16711680) >> 16,
(iv & 65280) >> 8,
iv & 255,
strLen === 9 ? parseInt(str.slice(7), 16) / 255 : 1
)
putToCache(colorStr, rgbaArr)
return rgbaArr
}
return
}
var op = str.indexOf('(')
var ep = str.indexOf(')')
if (op !== -1 && ep + 1 === strLen) {
var fname = str.substr(0, op)
var params2 = str.substr(op + 1, ep - (op + 1)).split(',')
var alpha = 1
switch (fname) {
case 'rgba':
if (params2.length !== 4) {
return params2.length === 3
? setRgba(rgbaArr, +params2[0], +params2[1], +params2[2], 1)
: setRgba(rgbaArr, 0, 0, 0, 1)
}
alpha = parseCssFloat(params2.pop())
case 'rgb':
if (params2.length >= 3) {
setRgba(
rgbaArr,
parseCssInt(params2[0]),
parseCssInt(params2[1]),
parseCssInt(params2[2]),
params2.length === 3 ? alpha : parseCssFloat(params2[3])
)
putToCache(colorStr, rgbaArr)
return rgbaArr
} else {
setRgba(rgbaArr, 0, 0, 0, 1)
return
}
case 'hsla':
if (params2.length !== 4) {
setRgba(rgbaArr, 0, 0, 0, 1)
return
}
params2[3] = parseCssFloat(params2[3])
hsla2rgba(params2, rgbaArr)
putToCache(colorStr, rgbaArr)
return rgbaArr
case 'hsl':
if (params2.length !== 3) {
setRgba(rgbaArr, 0, 0, 0, 1)
return
}
hsla2rgba(params2, rgbaArr)
putToCache(colorStr, rgbaArr)
return rgbaArr
default:
return
}
}
setRgba(rgbaArr, 0, 0, 0, 1)
return
}
function hsla2rgba(hsla, rgba) {
var h2 = (((parseFloat(hsla[0]) % 360) + 360) % 360) / 360
var s2 = parseCssFloat(hsla[1])
var l2 = parseCssFloat(hsla[2])
var m2 = l2 <= 0.5 ? l2 * (s2 + 1) : l2 + s2 - l2 * s2
var m1 = l2 * 2 - m2
rgba = rgba || []
setRgba(
rgba,
clampCssByte(cssHueToRgb(m1, m2, h2 + 1 / 3) * 255),
clampCssByte(cssHueToRgb(m1, m2, h2) * 255),
clampCssByte(cssHueToRgb(m1, m2, h2 - 1 / 3) * 255),
1
)
if (hsla.length === 4) {
rgba[3] = hsla[3]
}
return rgba
}
function rgba2hsla(rgba) {
if (!rgba) {
return
}
var R2 = rgba[0] / 255
var G2 = rgba[1] / 255
var B3 = rgba[2] / 255
var vMin = Math.min(R2, G2, B3)
var vMax = Math.max(R2, G2, B3)
var delta = vMax - vMin
var L2 = (vMax + vMin) / 2
var H4
var S2
if (delta === 0) {
H4 = 0
S2 = 0
} else {
if (L2 < 0.5) {
S2 = delta / (vMax + vMin)
} else {
S2 = delta / (2 - vMax - vMin)
}
var deltaR = ((vMax - R2) / 6 + delta / 2) / delta
var deltaG = ((vMax - G2) / 6 + delta / 2) / delta
var deltaB = ((vMax - B3) / 6 + delta / 2) / delta
if (R2 === vMax) {
H4 = deltaB - deltaG
} else if (G2 === vMax) {
H4 = 1 / 3 + deltaR - deltaB
} else if (B3 === vMax) {
H4 = 2 / 3 + deltaG - deltaR
}
if (H4 < 0) {
H4 += 1
}
if (H4 > 1) {
H4 -= 1
}
}
var hsla = [H4 * 360, S2, L2]
if (rgba[3] != null) {
hsla.push(rgba[3])
}
return hsla
}
function lift(color2, level) {
var colorArr = parse$1(color2)
if (colorArr) {
for (var i2 = 0; i2 < 3; i2++) {
if (level < 0) {
colorArr[i2] = (colorArr[i2] * (1 - level)) | 0
} else {
colorArr[i2] = ((255 - colorArr[i2]) * level + colorArr[i2]) | 0
}
if (colorArr[i2] > 255) {
colorArr[i2] = 255
} else if (colorArr[i2] < 0) {
colorArr[i2] = 0
}
}
return stringify(colorArr, colorArr.length === 4 ? 'rgba' : 'rgb')
}
}
function toHex(color2) {
var colorArr = parse$1(color2)
if (colorArr) {
return ((1 << 24) + (colorArr[0] << 16) + (colorArr[1] << 8) + +colorArr[2])
.toString(16)
.slice(1)
}
}
function fastLerp(normalizedValue, colors, out2) {
if (
!(colors && colors.length) ||
!(normalizedValue >= 0 && normalizedValue <= 1)
) {
return
}
out2 = out2 || []
var value2 = normalizedValue * (colors.length - 1)
var leftIndex = Math.floor(value2)
var rightIndex = Math.ceil(value2)
var leftColor = colors[leftIndex]
var rightColor = colors[rightIndex]
var dv = value2 - leftIndex
out2[0] = clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv))
out2[1] = clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv))
out2[2] = clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv))
out2[3] = clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv))
return out2
}
var fastMapToColor = fastLerp
function lerp(normalizedValue, colors, fullOutput) {
if (
!(colors && colors.length) ||
!(normalizedValue >= 0 && normalizedValue <= 1)
) {
return
}
var value2 = normalizedValue * (colors.length - 1)
var leftIndex = Math.floor(value2)
var rightIndex = Math.ceil(value2)
var leftColor = parse$1(colors[leftIndex])
var rightColor = parse$1(colors[rightIndex])
var dv = value2 - leftIndex
var color2 = stringify(
[
clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv)),
clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv)),
clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv)),
clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv)),
],
'rgba'
)
return fullOutput
? {
color: color2,
leftIndex,
rightIndex,
value: value2,
}
: color2
}
var mapToColor = lerp
function modifyHSL(color2, h2, s2, l2) {
var colorArr = parse$1(color2)
if (color2) {
colorArr = rgba2hsla(colorArr)
h2 != null && (colorArr[0] = clampCssAngle(h2))
s2 != null && (colorArr[1] = parseCssFloat(s2))
l2 != null && (colorArr[2] = parseCssFloat(l2))
return stringify(hsla2rgba(colorArr), 'rgba')
}
}
function modifyAlpha(color2, alpha) {
var colorArr = parse$1(color2)
if (colorArr && alpha != null) {
colorArr[3] = clampCssFloat(alpha)
return stringify(colorArr, 'rgba')
}
}
function stringify(arrColor, type4) {
if (!arrColor || !arrColor.length) {
return
}
var colorStr = arrColor[0] + ',' + arrColor[1] + ',' + arrColor[2]
if (type4 === 'rgba' || type4 === 'hsva' || type4 === 'hsla') {
colorStr += ',' + arrColor[3]
}
return type4 + '(' + colorStr + ')'
}
function lum(color2, backgroundLum) {
var arr = parse$1(color2)
return arr
? ((0.299 * arr[0] + 0.587 * arr[1] + 0.114 * arr[2]) * arr[3]) / 255 +
(1 - arr[3]) * backgroundLum
: 0
}
function random() {
return stringify(
[
Math.round(Math.random() * 255),
Math.round(Math.random() * 255),
Math.round(Math.random() * 255),
],
'rgb'
)
}
var color$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
parse: parse$1,
lift,
toHex,
fastLerp,
fastMapToColor,
lerp,
mapToColor,
modifyHSL,
modifyAlpha,
stringify,
lum,
random,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var mathRound$1 = Math.round
function normalizeColor(color2) {
var opacity2
if (!color2 || color2 === 'transparent') {
color2 = 'none'
} else if (typeof color2 === 'string' && color2.indexOf('rgba') > -1) {
var arr = parse$1(color2)
if (arr) {
color2 = 'rgb(' + arr[0] + ',' + arr[1] + ',' + arr[2] + ')'
opacity2 = arr[3]
}
}
return {
color: color2,
opacity: opacity2 == null ? 1 : opacity2,
}
}
var EPSILON$3 = 1e-4
function isAroundZero(transform3) {
return transform3 < EPSILON$3 && transform3 > -EPSILON$3
}
function round3(transform3) {
return mathRound$1(transform3 * 1e3) / 1e3
}
function round4(transform3) {
return mathRound$1(transform3 * 1e4) / 1e4
}
function getMatrixStr(m2) {
return (
'matrix(' +
round3(m2[0]) +
',' +
round3(m2[1]) +
',' +
round3(m2[2]) +
',' +
round3(m2[3]) +
',' +
round4(m2[4]) +
',' +
round4(m2[5]) +
')'
)
}
var TEXT_ALIGN_TO_ANCHOR = {
left: 'start',
right: 'end',
center: 'middle',
middle: 'middle',
}
function adjustTextY$1(y2, lineHeight2, textBaseline) {
if (textBaseline === 'top') {
y2 += lineHeight2 / 2
} else if (textBaseline === 'bottom') {
y2 -= lineHeight2 / 2
}
return y2
}
function hasShadow(style2) {
return (
style2 &&
(style2.shadowBlur || style2.shadowOffsetX || style2.shadowOffsetY)
)
}
function getShadowKey(displayable) {
var style2 = displayable.style
var globalScale = displayable.getGlobalScale()
return [
style2.shadowColor,
(style2.shadowBlur || 0).toFixed(2),
(style2.shadowOffsetX || 0).toFixed(2),
(style2.shadowOffsetY || 0).toFixed(2),
globalScale[0],
globalScale[1],
].join(',')
}
function isImagePattern(val2) {
return val2 && !!val2.image
}
function isSVGPattern(val2) {
return val2 && !!val2.svgElement
}
function isPattern(val2) {
return isImagePattern(val2) || isSVGPattern(val2)
}
function isLinearGradient(val2) {
return val2.type === 'linear'
}
function isRadialGradient(val2) {
return val2.type === 'radial'
}
function isGradient(val2) {
return val2 && (val2.type === 'linear' || val2.type === 'radial')
}
function getIdURL(id2) {
return 'url(#' + id2 + ')'
}
function getPathPrecision(el2) {
var scale2 = el2.getGlobalScale()
var size = Math.max(scale2[0], scale2[1])
return Math.max(Math.ceil(Math.log(size) / Math.log(10)), 1)
}
function getSRTTransformString(transform3) {
var x2 = transform3.x || 0
var y2 = transform3.y || 0
var rotation = (transform3.rotation || 0) * RADIAN_TO_DEGREE
var scaleX = retrieve2(transform3.scaleX, 1)
var scaleY = retrieve2(transform3.scaleY, 1)
var skewX = transform3.skewX || 0
var skewY = transform3.skewY || 0
var res = []
if (x2 || y2) {
res.push('translate(' + x2 + 'px,' + y2 + 'px)')
}
if (rotation) {
res.push('rotate(' + rotation + ')')
}
if (scaleX !== 1 || scaleY !== 1) {
res.push('scale(' + scaleX + ',' + scaleY + ')')
}
if (skewX || skewY) {
res.push(
'skew(' +
mathRound$1(skewX * RADIAN_TO_DEGREE) +
'deg, ' +
mathRound$1(skewY * RADIAN_TO_DEGREE) +
'deg)'
)
}
return res.join(' ')
}
var encodeBase64 = (function () {
if (env$1.hasGlobalWindow && isFunction$4(window.btoa)) {
return function (str) {
return window.btoa(unescape(encodeURIComponent(str)))
}
}
if (typeof Buffer !== 'undefined') {
return function (str) {
return Buffer.from(str).toString('base64')
}
}
return function (str) {
return null
}
})()
var arraySlice = Array.prototype.slice
function interpolateNumber$1(p0, p1, percent) {
return (p1 - p0) * percent + p0
}
function interpolate1DArray(out2, p0, p1, percent) {
var len2 = p0.length
for (var i2 = 0; i2 < len2; i2++) {
out2[i2] = interpolateNumber$1(p0[i2], p1[i2], percent)
}
return out2
}
function interpolate2DArray(out2, p0, p1, percent) {
var len2 = p0.length
var len22 = len2 && p0[0].length
for (var i2 = 0; i2 < len2; i2++) {
if (!out2[i2]) {
out2[i2] = []
}
for (var j2 = 0; j2 < len22; j2++) {
out2[i2][j2] = interpolateNumber$1(p0[i2][j2], p1[i2][j2], percent)
}
}
return out2
}
function add1DArray(out2, p0, p1, sign) {
var len2 = p0.length
for (var i2 = 0; i2 < len2; i2++) {
out2[i2] = p0[i2] + p1[i2] * sign
}
return out2
}
function add2DArray(out2, p0, p1, sign) {
var len2 = p0.length
var len22 = len2 && p0[0].length
for (var i2 = 0; i2 < len2; i2++) {
if (!out2[i2]) {
out2[i2] = []
}
for (var j2 = 0; j2 < len22; j2++) {
out2[i2][j2] = p0[i2][j2] + p1[i2][j2] * sign
}
}
return out2
}
function fillColorStops(val0, val1) {
var len0 = val0.length
var len1 = val1.length
var shorterArr = len0 > len1 ? val1 : val0
var shorterLen = Math.min(len0, len1)
var last2 = shorterArr[shorterLen - 1] || { color: [0, 0, 0, 0], offset: 0 }
for (var i2 = shorterLen; i2 < Math.max(len0, len1); i2++) {
shorterArr.push({
offset: last2.offset,
color: last2.color.slice(),
})
}
}
function fillArray(val0, val1, arrDim) {
var arr0 = val0
var arr1 = val1
if (!arr0.push || !arr1.push) {
return
}
var arr0Len = arr0.length
var arr1Len = arr1.length
if (arr0Len !== arr1Len) {
var isPreviousLarger = arr0Len > arr1Len
if (isPreviousLarger) {
arr0.length = arr1Len
} else {
for (var i2 = arr0Len; i2 < arr1Len; i2++) {
arr0.push(arrDim === 1 ? arr1[i2] : arraySlice.call(arr1[i2]))
}
}
}
var len2 = arr0[0] && arr0[0].length
for (var i2 = 0; i2 < arr0.length; i2++) {
if (arrDim === 1) {
if (isNaN(arr0[i2])) {
arr0[i2] = arr1[i2]
}
} else {
for (var j2 = 0; j2 < len2; j2++) {
if (isNaN(arr0[i2][j2])) {
arr0[i2][j2] = arr1[i2][j2]
}
}
}
}
}
function cloneValue(value2) {
if (isArrayLike$3(value2)) {
var len2 = value2.length
if (isArrayLike$3(value2[0])) {
var ret = []
for (var i2 = 0; i2 < len2; i2++) {
ret.push(arraySlice.call(value2[i2]))
}
return ret
}
return arraySlice.call(value2)
}
return value2
}
function rgba2String(rgba) {
rgba[0] = Math.floor(rgba[0]) || 0
rgba[1] = Math.floor(rgba[1]) || 0
rgba[2] = Math.floor(rgba[2]) || 0
rgba[3] = rgba[3] == null ? 1 : rgba[3]
return 'rgba(' + rgba.join(',') + ')'
}
function guessArrayDim(value2) {
return isArrayLike$3(value2 && value2[0]) ? 2 : 1
}
var VALUE_TYPE_NUMBER = 0
var VALUE_TYPE_1D_ARRAY = 1
var VALUE_TYPE_2D_ARRAY = 2
var VALUE_TYPE_COLOR = 3
var VALUE_TYPE_LINEAR_GRADIENT = 4
var VALUE_TYPE_RADIAL_GRADIENT = 5
var VALUE_TYPE_UNKOWN = 6
function isGradientValueType(valType) {
return (
valType === VALUE_TYPE_LINEAR_GRADIENT ||
valType === VALUE_TYPE_RADIAL_GRADIENT
)
}
function isArrayValueType(valType) {
return valType === VALUE_TYPE_1D_ARRAY || valType === VALUE_TYPE_2D_ARRAY
}
var tmpRgba = [0, 0, 0, 0]
var Track = (function () {
function Track2(propName) {
this.keyframes = []
this.discrete = false
this._invalid = false
this._needsSort = false
this._lastFr = 0
this._lastFrP = 0
this.propName = propName
}
Track2.prototype.isFinished = function () {
return this._finished
}
Track2.prototype.setFinished = function () {
this._finished = true
if (this._additiveTrack) {
this._additiveTrack.setFinished()
}
}
Track2.prototype.needsAnimate = function () {
return this.keyframes.length >= 1
}
Track2.prototype.getAdditiveTrack = function () {
return this._additiveTrack
}
Track2.prototype.addKeyframe = function (time2, rawValue, easing) {
this._needsSort = true
var keyframes = this.keyframes
var len2 = keyframes.length
var discrete = false
var valType = VALUE_TYPE_UNKOWN
var value2 = rawValue
if (isArrayLike$3(rawValue)) {
var arrayDim = guessArrayDim(rawValue)
valType = arrayDim
if (
(arrayDim === 1 && !isNumber$2(rawValue[0])) ||
(arrayDim === 2 && !isNumber$2(rawValue[0][0]))
) {
discrete = true
}
} else {
if (isNumber$2(rawValue) && !eqNaN(rawValue)) {
valType = VALUE_TYPE_NUMBER
} else if (isString$2(rawValue)) {
if (!isNaN(+rawValue)) {
valType = VALUE_TYPE_NUMBER
} else {
var colorArray = parse$1(rawValue)
if (colorArray) {
value2 = colorArray
valType = VALUE_TYPE_COLOR
}
}
} else if (isGradientObject(rawValue)) {
var parsedGradient = extend({}, value2)
parsedGradient.colorStops = map$1(
rawValue.colorStops,
function (colorStop) {
return {
offset: colorStop.offset,
color: parse$1(colorStop.color),
}
}
)
if (isLinearGradient(rawValue)) {
valType = VALUE_TYPE_LINEAR_GRADIENT
} else if (isRadialGradient(rawValue)) {
valType = VALUE_TYPE_RADIAL_GRADIENT
}
value2 = parsedGradient
}
}
if (len2 === 0) {
this.valType = valType
} else if (valType !== this.valType || valType === VALUE_TYPE_UNKOWN) {
discrete = true
}
this.discrete = this.discrete || discrete
var kf = {
time: time2,
value: value2,
rawValue,
percent: 0,
}
if (easing) {
kf.easing = easing
kf.easingFunc = isFunction$4(easing)
? easing
: easingFuncs$1[easing] || createCubicEasingFunc(easing)
}
keyframes.push(kf)
return kf
}
Track2.prototype.prepare = function (maxTime, additiveTrack) {
var kfs = this.keyframes
if (this._needsSort) {
kfs.sort(function (a2, b2) {
return a2.time - b2.time
})
}
var valType = this.valType
var kfsLen = kfs.length
var lastKf = kfs[kfsLen - 1]
var isDiscrete = this.discrete
var isArr = isArrayValueType(valType)
var isGradient2 = isGradientValueType(valType)
for (var i2 = 0; i2 < kfsLen; i2++) {
var kf = kfs[i2]
var value2 = kf.value
var lastValue = lastKf.value
kf.percent = kf.time / maxTime
if (!isDiscrete) {
if (isArr && i2 !== kfsLen - 1) {
fillArray(value2, lastValue, valType)
} else if (isGradient2) {
fillColorStops(value2.colorStops, lastValue.colorStops)
}
}
}
if (
!isDiscrete &&
valType !== VALUE_TYPE_RADIAL_GRADIENT &&
additiveTrack &&
this.needsAnimate() &&
additiveTrack.needsAnimate() &&
valType === additiveTrack.valType &&
!additiveTrack._finished
) {
this._additiveTrack = additiveTrack
var startValue = kfs[0].value
for (var i2 = 0; i2 < kfsLen; i2++) {
if (valType === VALUE_TYPE_NUMBER) {
kfs[i2].additiveValue = kfs[i2].value - startValue
} else if (valType === VALUE_TYPE_COLOR) {
kfs[i2].additiveValue = add1DArray([], kfs[i2].value, startValue, -1)
} else if (isArrayValueType(valType)) {
kfs[i2].additiveValue =
valType === VALUE_TYPE_1D_ARRAY
? add1DArray([], kfs[i2].value, startValue, -1)
: add2DArray([], kfs[i2].value, startValue, -1)
}
}
}
}
Track2.prototype.step = function (target2, percent) {
if (this._finished) {
return
}
if (this._additiveTrack && this._additiveTrack._finished) {
this._additiveTrack = null
}
var isAdditive = this._additiveTrack != null
var valueKey = isAdditive ? 'additiveValue' : 'value'
var valType = this.valType
var keyframes = this.keyframes
var kfsNum = keyframes.length
var propName = this.propName
var isValueColor = valType === VALUE_TYPE_COLOR
var frameIdx
var lastFrame = this._lastFr
var mathMin2 = Math.min
var frame
var nextFrame
if (kfsNum === 1) {
frame = nextFrame = keyframes[0]
} else {
if (percent < 0) {
frameIdx = 0
} else if (percent < this._lastFrP) {
var start2 = mathMin2(lastFrame + 1, kfsNum - 1)
for (frameIdx = start2; frameIdx >= 0; frameIdx--) {
if (keyframes[frameIdx].percent <= percent) {
break
}
}
frameIdx = mathMin2(frameIdx, kfsNum - 2)
} else {
for (frameIdx = lastFrame; frameIdx < kfsNum; frameIdx++) {
if (keyframes[frameIdx].percent > percent) {
break
}
}
frameIdx = mathMin2(frameIdx - 1, kfsNum - 2)
}
nextFrame = keyframes[frameIdx + 1]
frame = keyframes[frameIdx]
}
if (!(frame && nextFrame)) {
return
}
this._lastFr = frameIdx
this._lastFrP = percent
var interval = nextFrame.percent - frame.percent
var w2 =
interval === 0 ? 1 : mathMin2((percent - frame.percent) / interval, 1)
if (nextFrame.easingFunc) {
w2 = nextFrame.easingFunc(w2)
}
var targetArr = isAdditive
? this._additiveValue
: isValueColor
? tmpRgba
: target2[propName]
if ((isArrayValueType(valType) || isValueColor) && !targetArr) {
targetArr = this._additiveValue = []
}
if (this.discrete) {
target2[propName] = w2 < 1 ? frame.rawValue : nextFrame.rawValue
} else if (isArrayValueType(valType)) {
valType === VALUE_TYPE_1D_ARRAY
? interpolate1DArray(
targetArr,
frame[valueKey],
nextFrame[valueKey],
w2
)
: interpolate2DArray(
targetArr,
frame[valueKey],
nextFrame[valueKey],
w2
)
} else if (isGradientValueType(valType)) {
var val2 = frame[valueKey]
var nextVal_1 = nextFrame[valueKey]
var isLinearGradient_1 = valType === VALUE_TYPE_LINEAR_GRADIENT
target2[propName] = {
type: isLinearGradient_1 ? 'linear' : 'radial',
x: interpolateNumber$1(val2.x, nextVal_1.x, w2),
y: interpolateNumber$1(val2.y, nextVal_1.y, w2),
colorStops: map$1(val2.colorStops, function (colorStop, idx) {
var nextColorStop = nextVal_1.colorStops[idx]
return {
offset: interpolateNumber$1(
colorStop.offset,
nextColorStop.offset,
w2
),
color: rgba2String(
interpolate1DArray([], colorStop.color, nextColorStop.color, w2)
),
}
}),
global: nextVal_1.global,
}
if (isLinearGradient_1) {
target2[propName].x2 = interpolateNumber$1(val2.x2, nextVal_1.x2, w2)
target2[propName].y2 = interpolateNumber$1(val2.y2, nextVal_1.y2, w2)
} else {
target2[propName].r = interpolateNumber$1(val2.r, nextVal_1.r, w2)
}
} else if (isValueColor) {
interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w2)
if (!isAdditive) {
target2[propName] = rgba2String(targetArr)
}
} else {
var value2 = interpolateNumber$1(frame[valueKey], nextFrame[valueKey], w2)
if (isAdditive) {
this._additiveValue = value2
} else {
target2[propName] = value2
}
}
if (isAdditive) {
this._addToTarget(target2)
}
}
Track2.prototype._addToTarget = function (target2) {
var valType = this.valType
var propName = this.propName
var additiveValue = this._additiveValue
if (valType === VALUE_TYPE_NUMBER) {
target2[propName] = target2[propName] + additiveValue
} else if (valType === VALUE_TYPE_COLOR) {
parse$1(target2[propName], tmpRgba)
add1DArray(tmpRgba, tmpRgba, additiveValue, 1)
target2[propName] = rgba2String(tmpRgba)
} else if (valType === VALUE_TYPE_1D_ARRAY) {
add1DArray(target2[propName], target2[propName], additiveValue, 1)
} else if (valType === VALUE_TYPE_2D_ARRAY) {
add2DArray(target2[propName], target2[propName], additiveValue, 1)
}
}
return Track2
})()
var Animator = (function () {
function Animator2(target2, loop, allowDiscreteAnimation, additiveTo) {
this._tracks = {}
this._trackKeys = []
this._maxTime = 0
this._started = 0
this._clip = null
this._target = target2
this._loop = loop
if (loop && additiveTo) {
logError("Can' use additive animation on looped animation.")
return
}
this._additiveAnimators = additiveTo
this._allowDiscrete = allowDiscreteAnimation
}
Animator2.prototype.getMaxTime = function () {
return this._maxTime
}
Animator2.prototype.getDelay = function () {
return this._delay
}
Animator2.prototype.getLoop = function () {
return this._loop
}
Animator2.prototype.getTarget = function () {
return this._target
}
Animator2.prototype.changeTarget = function (target2) {
this._target = target2
}
Animator2.prototype.when = function (time2, props2, easing) {
return this.whenWithKeys(time2, props2, keys$4(props2), easing)
}
Animator2.prototype.whenWithKeys = function (
time2,
props2,
propNames,
easing
) {
var tracks = this._tracks
for (var i2 = 0; i2 < propNames.length; i2++) {
var propName = propNames[i2]
var track2 = tracks[propName]
if (!track2) {
track2 = tracks[propName] = new Track(propName)
var initialValue = void 0
var additiveTrack = this._getAdditiveTrack(propName)
if (additiveTrack) {
var addtiveTrackKfs = additiveTrack.keyframes
var lastFinalKf = addtiveTrackKfs[addtiveTrackKfs.length - 1]
initialValue = lastFinalKf && lastFinalKf.value
if (additiveTrack.valType === VALUE_TYPE_COLOR && initialValue) {
initialValue = rgba2String(initialValue)
}
} else {
initialValue = this._target[propName]
}
if (initialValue == null) {
continue
}
if (time2 > 0) {
track2.addKeyframe(0, cloneValue(initialValue), easing)
}
this._trackKeys.push(propName)
}
track2.addKeyframe(time2, cloneValue(props2[propName]), easing)
}
this._maxTime = Math.max(this._maxTime, time2)
return this
}
Animator2.prototype.pause = function () {
this._clip.pause()
this._paused = true
}
Animator2.prototype.resume = function () {
this._clip.resume()
this._paused = false
}
Animator2.prototype.isPaused = function () {
return !!this._paused
}
Animator2.prototype.duration = function (duration2) {
this._maxTime = duration2
this._force = true
return this
}
Animator2.prototype._doneCallback = function () {
this._setTracksFinished()
this._clip = null
var doneList = this._doneCbs
if (doneList) {
var len2 = doneList.length
for (var i2 = 0; i2 < len2; i2++) {
doneList[i2].call(this)
}
}
}
Animator2.prototype._abortedCallback = function () {
this._setTracksFinished()
var animation = this.animation
var abortedList = this._abortedCbs
if (animation) {
animation.removeClip(this._clip)
}
this._clip = null
if (abortedList) {
for (var i2 = 0; i2 < abortedList.length; i2++) {
abortedList[i2].call(this)
}
}
}
Animator2.prototype._setTracksFinished = function () {
var tracks = this._tracks
var tracksKeys = this._trackKeys
for (var i2 = 0; i2 < tracksKeys.length; i2++) {
tracks[tracksKeys[i2]].setFinished()
}
}
Animator2.prototype._getAdditiveTrack = function (trackName) {
var additiveTrack
var additiveAnimators = this._additiveAnimators
if (additiveAnimators) {
for (var i2 = 0; i2 < additiveAnimators.length; i2++) {
var track2 = additiveAnimators[i2].getTrack(trackName)
if (track2) {
additiveTrack = track2
}
}
}
return additiveTrack
}
Animator2.prototype.start = function (easing) {
if (this._started > 0) {
return
}
this._started = 1
var self2 = this
var tracks = []
var maxTime = this._maxTime || 0
for (var i2 = 0; i2 < this._trackKeys.length; i2++) {
var propName = this._trackKeys[i2]
var track2 = this._tracks[propName]
var additiveTrack = this._getAdditiveTrack(propName)
var kfs = track2.keyframes
var kfsNum = kfs.length
track2.prepare(maxTime, additiveTrack)
if (track2.needsAnimate()) {
if (!this._allowDiscrete && track2.discrete) {
var lastKf = kfs[kfsNum - 1]
if (lastKf) {
self2._target[track2.propName] = lastKf.rawValue
}
track2.setFinished()
} else {
tracks.push(track2)
}
}
}
if (tracks.length || this._force) {
var clip2 = new Clip$1({
life: maxTime,
loop: this._loop,
delay: this._delay || 0,
onframe: function (percent) {
self2._started = 2
var additiveAnimators = self2._additiveAnimators
if (additiveAnimators) {
var stillHasAdditiveAnimator = false
for (var i3 = 0; i3 < additiveAnimators.length; i3++) {
if (additiveAnimators[i3]._clip) {
stillHasAdditiveAnimator = true
break
}
}
if (!stillHasAdditiveAnimator) {
self2._additiveAnimators = null
}
}
for (var i3 = 0; i3 < tracks.length; i3++) {
tracks[i3].step(self2._target, percent)
}
var onframeList = self2._onframeCbs
if (onframeList) {
for (var i3 = 0; i3 < onframeList.length; i3++) {
onframeList[i3](self2._target, percent)
}
}
},
ondestroy: function () {
self2._doneCallback()
},
})
this._clip = clip2
if (this.animation) {
this.animation.addClip(clip2)
}
if (easing) {
clip2.setEasing(easing)
}
} else {
this._doneCallback()
}
return this
}
Animator2.prototype.stop = function (forwardToLast) {
if (!this._clip) {
return
}
var clip2 = this._clip
if (forwardToLast) {
clip2.onframe(1)
}
this._abortedCallback()
}
Animator2.prototype.delay = function (time2) {
this._delay = time2
return this
}
Animator2.prototype.during = function (cb) {
if (cb) {
if (!this._onframeCbs) {
this._onframeCbs = []
}
this._onframeCbs.push(cb)
}
return this
}
Animator2.prototype.done = function (cb) {
if (cb) {
if (!this._doneCbs) {
this._doneCbs = []
}
this._doneCbs.push(cb)
}
return this
}
Animator2.prototype.aborted = function (cb) {
if (cb) {
if (!this._abortedCbs) {
this._abortedCbs = []
}
this._abortedCbs.push(cb)
}
return this
}
Animator2.prototype.getClip = function () {
return this._clip
}
Animator2.prototype.getTrack = function (propName) {
return this._tracks[propName]
}
Animator2.prototype.getTracks = function () {
var _this = this
return map$1(this._trackKeys, function (key2) {
return _this._tracks[key2]
})
}
Animator2.prototype.stopTracks = function (propNames, forwardToLast) {
if (!propNames.length || !this._clip) {
return true
}
var tracks = this._tracks
var tracksKeys = this._trackKeys
for (var i2 = 0; i2 < propNames.length; i2++) {
var track2 = tracks[propNames[i2]]
if (track2 && !track2.isFinished()) {
if (forwardToLast) {
track2.step(this._target, 1)
} else if (this._started === 1) {
track2.step(this._target, 0)
}
track2.setFinished()
}
}
var allAborted = true
for (var i2 = 0; i2 < tracksKeys.length; i2++) {
if (!tracks[tracksKeys[i2]].isFinished()) {
allAborted = false
break
}
}
if (allAborted) {
this._abortedCallback()
}
return allAborted
}
Animator2.prototype.saveTo = function (target2, trackKeys, firstOrLast) {
if (!target2) {
return
}
trackKeys = trackKeys || this._trackKeys
for (var i2 = 0; i2 < trackKeys.length; i2++) {
var propName = trackKeys[i2]
var track2 = this._tracks[propName]
if (!track2 || track2.isFinished()) {
continue
}
var kfs = track2.keyframes
var kf = kfs[firstOrLast ? 0 : kfs.length - 1]
if (kf) {
target2[propName] = cloneValue(kf.rawValue)
}
}
}
Animator2.prototype.__changeFinalValue = function (finalProps, trackKeys) {
trackKeys = trackKeys || keys$4(finalProps)
for (var i2 = 0; i2 < trackKeys.length; i2++) {
var propName = trackKeys[i2]
var track2 = this._tracks[propName]
if (!track2) {
continue
}
var kfs = track2.keyframes
if (kfs.length > 1) {
var lastKf = kfs.pop()
track2.addKeyframe(lastKf.time, finalProps[propName])
track2.prepare(this._maxTime, track2.getAdditiveTrack())
}
}
}
return Animator2
})()
var Animator$1 = Animator
function getTime$1() {
return new Date().getTime()
}
var Animation = (function (_super) {
__extends$1(Animation2, _super)
function Animation2(opts) {
var _this = _super.call(this) || this
_this._running = false
_this._time = 0
_this._pausedTime = 0
_this._pauseStart = 0
_this._paused = false
opts = opts || {}
_this.stage = opts.stage || {}
return _this
}
Animation2.prototype.addClip = function (clip2) {
if (clip2.animation) {
this.removeClip(clip2)
}
if (!this._head) {
this._head = this._tail = clip2
} else {
this._tail.next = clip2
clip2.prev = this._tail
clip2.next = null
this._tail = clip2
}
clip2.animation = this
}
Animation2.prototype.addAnimator = function (animator) {
animator.animation = this
var clip2 = animator.getClip()
if (clip2) {
this.addClip(clip2)
}
}
Animation2.prototype.removeClip = function (clip2) {
if (!clip2.animation) {
return
}
var prev = clip2.prev
var next = clip2.next
if (prev) {
prev.next = next
} else {
this._head = next
}
if (next) {
next.prev = prev
} else {
this._tail = prev
}
clip2.next = clip2.prev = clip2.animation = null
}
Animation2.prototype.removeAnimator = function (animator) {
var clip2 = animator.getClip()
if (clip2) {
this.removeClip(clip2)
}
animator.animation = null
}
Animation2.prototype.update = function (notTriggerFrameAndStageUpdate) {
var time2 = getTime$1() - this._pausedTime
var delta = time2 - this._time
var clip2 = this._head
while (clip2) {
var nextClip = clip2.next
var finished2 = clip2.step(time2, delta)
if (finished2) {
clip2.ondestroy()
this.removeClip(clip2)
clip2 = nextClip
} else {
clip2 = nextClip
}
}
this._time = time2
if (!notTriggerFrameAndStageUpdate) {
this.trigger('frame', delta)
this.stage.update && this.stage.update()
}
}
Animation2.prototype._startLoop = function () {
var self2 = this
this._running = true
function step() {
if (self2._running) {
requestAnimationFrame$2(step)
!self2._paused && self2.update()
}
}
requestAnimationFrame$2(step)
}
Animation2.prototype.start = function () {
if (this._running) {
return
}
this._time = getTime$1()
this._pausedTime = 0
this._startLoop()
}
Animation2.prototype.stop = function () {
this._running = false
}
Animation2.prototype.pause = function () {
if (!this._paused) {
this._pauseStart = getTime$1()
this._paused = true
}
}
Animation2.prototype.resume = function () {
if (this._paused) {
this._pausedTime += getTime$1() - this._pauseStart
this._paused = false
}
}
Animation2.prototype.clear = function () {
var clip2 = this._head
while (clip2) {
var nextClip = clip2.next
clip2.prev = clip2.next = clip2.animation = null
clip2 = nextClip
}
this._head = this._tail = null
}
Animation2.prototype.isFinished = function () {
return this._head == null
}
Animation2.prototype.animate = function (target2, options2) {
options2 = options2 || {}
this.start()
var animator = new Animator$1(target2, options2.loop)
this.addAnimator(animator)
return animator
}
return Animation2
})(Eventful$1)
var Animation$1 = Animation
var TOUCH_CLICK_DELAY = 300
var globalEventSupported = env$1.domSupported
var localNativeListenerNames = (function () {
var mouseHandlerNames = [
'click',
'dblclick',
'mousewheel',
'wheel',
'mouseout',
'mouseup',
'mousedown',
'mousemove',
'contextmenu',
]
var touchHandlerNames = ['touchstart', 'touchend', 'touchmove']
var pointerEventNameMap = {
pointerdown: 1,
pointerup: 1,
pointermove: 1,
pointerout: 1,
}
var pointerHandlerNames = map$1(mouseHandlerNames, function (name2) {
var nm = name2.replace('mouse', 'pointer')
return pointerEventNameMap.hasOwnProperty(nm) ? nm : name2
})
return {
mouse: mouseHandlerNames,
touch: touchHandlerNames,
pointer: pointerHandlerNames,
}
})()
var globalNativeListenerNames = {
mouse: ['mousemove', 'mouseup'],
pointer: ['pointermove', 'pointerup'],
}
var wheelEventSupported = false
function isPointerFromTouch(event) {
var pointerType = event.pointerType
return pointerType === 'pen' || pointerType === 'touch'
}
function setTouchTimer(scope) {
scope.touching = true
if (scope.touchTimer != null) {
clearTimeout(scope.touchTimer)
scope.touchTimer = null
}
scope.touchTimer = setTimeout(function () {
scope.touching = false
scope.touchTimer = null
}, 700)
}
function markTouch(event) {
event && (event.zrByTouch = true)
}
function normalizeGlobalEvent(instance, event) {
return normalizeEvent(
instance.dom,
new FakeGlobalEvent(instance, event),
true
)
}
function isLocalEl(instance, el2) {
var elTmp = el2
var isLocal = false
while (
elTmp &&
elTmp.nodeType !== 9 &&
!(isLocal =
elTmp.domBelongToZr || (elTmp !== el2 && elTmp === instance.painterRoot))
) {
elTmp = elTmp.parentNode
}
return isLocal
}
var FakeGlobalEvent = (function () {
function FakeGlobalEvent2(instance, event) {
this.stopPropagation = noop
this.stopImmediatePropagation = noop
this.preventDefault = noop
this.type = event.type
this.target = this.currentTarget = instance.dom
this.pointerType = event.pointerType
this.clientX = event.clientX
this.clientY = event.clientY
}
return FakeGlobalEvent2
})()
var localDOMHandlers = {
mousedown: function (event) {
event = normalizeEvent(this.dom, event)
this.__mayPointerCapture = [event.zrX, event.zrY]
this.trigger('mousedown', event)
},
mousemove: function (event) {
event = normalizeEvent(this.dom, event)
var downPoint = this.__mayPointerCapture
if (
downPoint &&
(event.zrX !== downPoint[0] || event.zrY !== downPoint[1])
) {
this.__togglePointerCapture(true)
}
this.trigger('mousemove', event)
},
mouseup: function (event) {
event = normalizeEvent(this.dom, event)
this.__togglePointerCapture(false)
this.trigger('mouseup', event)
},
mouseout: function (event) {
event = normalizeEvent(this.dom, event)
var element = event.toElement || event.relatedTarget
if (!isLocalEl(this, element)) {
if (this.__pointerCapturing) {
event.zrEventControl = 'no_globalout'
}
this.trigger('mouseout', event)
}
},
wheel: function (event) {
wheelEventSupported = true
event = normalizeEvent(this.dom, event)
this.trigger('mousewheel', event)
},
mousewheel: function (event) {
if (wheelEventSupported) {
return
}
event = normalizeEvent(this.dom, event)
this.trigger('mousewheel', event)
},
touchstart: function (event) {
event = normalizeEvent(this.dom, event)
markTouch(event)
this.__lastTouchMoment = new Date()
this.handler.processGesture(event, 'start')
localDOMHandlers.mousemove.call(this, event)
localDOMHandlers.mousedown.call(this, event)
},
touchmove: function (event) {
event = normalizeEvent(this.dom, event)
markTouch(event)
this.handler.processGesture(event, 'change')
localDOMHandlers.mousemove.call(this, event)
},
touchend: function (event) {
event = normalizeEvent(this.dom, event)
markTouch(event)
this.handler.processGesture(event, 'end')
localDOMHandlers.mouseup.call(this, event)
if (+new Date() - +this.__lastTouchMoment < TOUCH_CLICK_DELAY) {
localDOMHandlers.click.call(this, event)
}
},
pointerdown: function (event) {
localDOMHandlers.mousedown.call(this, event)
},
pointermove: function (event) {
if (!isPointerFromTouch(event)) {
localDOMHandlers.mousemove.call(this, event)
}
},
pointerup: function (event) {
localDOMHandlers.mouseup.call(this, event)
},
pointerout: function (event) {
if (!isPointerFromTouch(event)) {
localDOMHandlers.mouseout.call(this, event)
}
},
}
each$f(['click', 'dblclick', 'contextmenu'], function (name2) {
localDOMHandlers[name2] = function (event) {
event = normalizeEvent(this.dom, event)
this.trigger(name2, event)
}
})
var globalDOMHandlers = {
pointermove: function (event) {
if (!isPointerFromTouch(event)) {
globalDOMHandlers.mousemove.call(this, event)
}
},
pointerup: function (event) {
globalDOMHandlers.mouseup.call(this, event)
},
mousemove: function (event) {
this.trigger('mousemove', event)
},
mouseup: function (event) {
var pointerCaptureReleasing = this.__pointerCapturing
this.__togglePointerCapture(false)
this.trigger('mouseup', event)
if (pointerCaptureReleasing) {
event.zrEventControl = 'only_globalout'
this.trigger('mouseout', event)
}
},
}
function mountLocalDOMEventListeners(instance, scope) {
var domHandlers = scope.domHandlers
if (env$1.pointerEventsSupported) {
each$f(localNativeListenerNames.pointer, function (nativeEventName) {
mountSingleDOMEventListener(scope, nativeEventName, function (event) {
domHandlers[nativeEventName].call(instance, event)
})
})
} else {
if (env$1.touchEventsSupported) {
each$f(localNativeListenerNames.touch, function (nativeEventName) {
mountSingleDOMEventListener(scope, nativeEventName, function (event) {
domHandlers[nativeEventName].call(instance, event)
setTouchTimer(scope)
})
})
}
each$f(localNativeListenerNames.mouse, function (nativeEventName) {
mountSingleDOMEventListener(scope, nativeEventName, function (event) {
event = getNativeEvent(event)
if (!scope.touching) {
domHandlers[nativeEventName].call(instance, event)
}
})
})
}
}
function mountGlobalDOMEventListeners(instance, scope) {
if (env$1.pointerEventsSupported) {
each$f(globalNativeListenerNames.pointer, mount2)
} else if (!env$1.touchEventsSupported) {
each$f(globalNativeListenerNames.mouse, mount2)
}
function mount2(nativeEventName) {
function nativeEventListener(event) {
event = getNativeEvent(event)
if (!isLocalEl(instance, event.target)) {
event = normalizeGlobalEvent(instance, event)
scope.domHandlers[nativeEventName].call(instance, event)
}
}
mountSingleDOMEventListener(scope, nativeEventName, nativeEventListener, {
capture: true,
})
}
}
function mountSingleDOMEventListener(scope, nativeEventName, listener, opt) {
scope.mounted[nativeEventName] = listener
scope.listenerOpts[nativeEventName] = opt
addEventListener$1(scope.domTarget, nativeEventName, listener, opt)
}
function unmountDOMEventListeners(scope) {
var mounted = scope.mounted
for (var nativeEventName in mounted) {
if (mounted.hasOwnProperty(nativeEventName)) {
removeEventListener$1(
scope.domTarget,
nativeEventName,
mounted[nativeEventName],
scope.listenerOpts[nativeEventName]
)
}
}
scope.mounted = {}
}
var DOMHandlerScope = (function () {
function DOMHandlerScope2(domTarget, domHandlers) {
this.mounted = {}
this.listenerOpts = {}
this.touching = false
this.domTarget = domTarget
this.domHandlers = domHandlers
}
return DOMHandlerScope2
})()
var HandlerDomProxy = (function (_super) {
__extends$1(HandlerDomProxy2, _super)
function HandlerDomProxy2(dom, painterRoot) {
var _this = _super.call(this) || this
_this.__pointerCapturing = false
_this.dom = dom
_this.painterRoot = painterRoot
_this._localHandlerScope = new DOMHandlerScope(dom, localDOMHandlers)
if (globalEventSupported) {
_this._globalHandlerScope = new DOMHandlerScope(
document,
globalDOMHandlers
)
}
mountLocalDOMEventListeners(_this, _this._localHandlerScope)
return _this
}
HandlerDomProxy2.prototype.dispose = function () {
unmountDOMEventListeners(this._localHandlerScope)
if (globalEventSupported) {
unmountDOMEventListeners(this._globalHandlerScope)
}
}
HandlerDomProxy2.prototype.setCursor = function (cursorStyle) {
this.dom.style && (this.dom.style.cursor = cursorStyle || 'default')
}
HandlerDomProxy2.prototype.__togglePointerCapture = function (
isPointerCapturing
) {
this.__mayPointerCapture = null
if (
globalEventSupported &&
+this.__pointerCapturing ^ +isPointerCapturing
) {
this.__pointerCapturing = isPointerCapturing
var globalHandlerScope = this._globalHandlerScope
isPointerCapturing
? mountGlobalDOMEventListeners(this, globalHandlerScope)
: unmountDOMEventListeners(globalHandlerScope)
}
}
return HandlerDomProxy2
})(Eventful$1)
var HandlerProxy = HandlerDomProxy
var dpr = 1
if (env$1.hasGlobalWindow) {
dpr = Math.max(
window.devicePixelRatio ||
(window.screen && window.screen.deviceXDPI / window.screen.logicalXDPI) ||
1,
1
)
}
var devicePixelRatio = dpr
var DARK_MODE_THRESHOLD = 0.4
var DARK_LABEL_COLOR = '#333'
var LIGHT_LABEL_COLOR = '#ccc'
var LIGHTER_LABEL_COLOR = '#eee'
var mIdentity = identity
var EPSILON$2 = 5e-5
function isNotAroundZero(val2) {
return val2 > EPSILON$2 || val2 < -EPSILON$2
}
var scaleTmp = []
var tmpTransform = []
var originTransform = create$1()
var abs = Math.abs
var Transformable = (function () {
function Transformable2() {}
Transformable2.prototype.getLocalTransform = function (m2) {
return Transformable2.getLocalTransform(this, m2)
}
Transformable2.prototype.setPosition = function (arr) {
this.x = arr[0]
this.y = arr[1]
}
Transformable2.prototype.setScale = function (arr) {
this.scaleX = arr[0]
this.scaleY = arr[1]
}
Transformable2.prototype.setSkew = function (arr) {
this.skewX = arr[0]
this.skewY = arr[1]
}
Transformable2.prototype.setOrigin = function (arr) {
this.originX = arr[0]
this.originY = arr[1]
}
Transformable2.prototype.needLocalTransform = function () {
return (
isNotAroundZero(this.rotation) ||
isNotAroundZero(this.x) ||
isNotAroundZero(this.y) ||
isNotAroundZero(this.scaleX - 1) ||
isNotAroundZero(this.scaleY - 1) ||
isNotAroundZero(this.skewX) ||
isNotAroundZero(this.skewY)
)
}
Transformable2.prototype.updateTransform = function () {
var parentTransform = this.parent && this.parent.transform
var needLocalTransform = this.needLocalTransform()
var m2 = this.transform
if (!(needLocalTransform || parentTransform)) {
if (m2) {
mIdentity(m2)
this.invTransform = null
}
return
}
m2 = m2 || create$1()
if (needLocalTransform) {
this.getLocalTransform(m2)
} else {
mIdentity(m2)
}
if (parentTransform) {
if (needLocalTransform) {
mul(m2, parentTransform, m2)
} else {
copy(m2, parentTransform)
}
}
this.transform = m2
this._resolveGlobalScaleRatio(m2)
}
Transformable2.prototype._resolveGlobalScaleRatio = function (m2) {
var globalScaleRatio = this.globalScaleRatio
if (globalScaleRatio != null && globalScaleRatio !== 1) {
this.getGlobalScale(scaleTmp)
var relX = scaleTmp[0] < 0 ? -1 : 1
var relY = scaleTmp[1] < 0 ? -1 : 1
var sx =
((scaleTmp[0] - relX) * globalScaleRatio + relX) / scaleTmp[0] || 0
var sy =
((scaleTmp[1] - relY) * globalScaleRatio + relY) / scaleTmp[1] || 0
m2[0] *= sx
m2[1] *= sx
m2[2] *= sy
m2[3] *= sy
}
this.invTransform = this.invTransform || create$1()
invert(this.invTransform, m2)
}
Transformable2.prototype.getComputedTransform = function () {
var transformNode = this
var ancestors = []
while (transformNode) {
ancestors.push(transformNode)
transformNode = transformNode.parent
}
while ((transformNode = ancestors.pop())) {
transformNode.updateTransform()
}
return this.transform
}
Transformable2.prototype.setLocalTransform = function (m2) {
if (!m2) {
return
}
var sx = m2[0] * m2[0] + m2[1] * m2[1]
var sy = m2[2] * m2[2] + m2[3] * m2[3]
var rotation = Math.atan2(m2[1], m2[0])
var shearX = Math.PI / 2 + rotation - Math.atan2(m2[3], m2[2])
sy = Math.sqrt(sy) * Math.cos(shearX)
sx = Math.sqrt(sx)
this.skewX = shearX
this.skewY = 0
this.rotation = -rotation
this.x = +m2[4]
this.y = +m2[5]
this.scaleX = sx
this.scaleY = sy
this.originX = 0
this.originY = 0
}
Transformable2.prototype.decomposeTransform = function () {
if (!this.transform) {
return
}
var parent2 = this.parent
var m2 = this.transform
if (parent2 && parent2.transform) {
mul(tmpTransform, parent2.invTransform, m2)
m2 = tmpTransform
}
var ox = this.originX
var oy = this.originY
if (ox || oy) {
originTransform[4] = ox
originTransform[5] = oy
mul(tmpTransform, m2, originTransform)
tmpTransform[4] -= ox
tmpTransform[5] -= oy
m2 = tmpTransform
}
this.setLocalTransform(m2)
}
Transformable2.prototype.getGlobalScale = function (out2) {
var m2 = this.transform
out2 = out2 || []
if (!m2) {
out2[0] = 1
out2[1] = 1
return out2
}
out2[0] = Math.sqrt(m2[0] * m2[0] + m2[1] * m2[1])
out2[1] = Math.sqrt(m2[2] * m2[2] + m2[3] * m2[3])
if (m2[0] < 0) {
out2[0] = -out2[0]
}
if (m2[3] < 0) {
out2[1] = -out2[1]
}
return out2
}
Transformable2.prototype.transformCoordToLocal = function (x2, y2) {
var v22 = [x2, y2]
var invTransform = this.invTransform
if (invTransform) {
applyTransform$1(v22, v22, invTransform)
}
return v22
}
Transformable2.prototype.transformCoordToGlobal = function (x2, y2) {
var v22 = [x2, y2]
var transform3 = this.transform
if (transform3) {
applyTransform$1(v22, v22, transform3)
}
return v22
}
Transformable2.prototype.getLineScale = function () {
var m2 = this.transform
return m2 && abs(m2[0] - 1) > 1e-10 && abs(m2[3] - 1) > 1e-10
? Math.sqrt(abs(m2[0] * m2[3] - m2[2] * m2[1]))
: 1
}
Transformable2.prototype.copyTransform = function (source2) {
copyTransform(this, source2)
}
Transformable2.getLocalTransform = function (target2, m2) {
m2 = m2 || []
var ox = target2.originX || 0
var oy = target2.originY || 0
var sx = target2.scaleX
var sy = target2.scaleY
var ax = target2.anchorX
var ay = target2.anchorY
var rotation = target2.rotation || 0
var x2 = target2.x
var y2 = target2.y
var skewX = target2.skewX ? Math.tan(target2.skewX) : 0
var skewY = target2.skewY ? Math.tan(-target2.skewY) : 0
if (ox || oy || ax || ay) {
var dx = ox + ax
var dy = oy + ay
m2[4] = -dx * sx - skewX * dy * sy
m2[5] = -dy * sy - skewY * dx * sx
} else {
m2[4] = m2[5] = 0
}
m2[0] = sx
m2[3] = sy
m2[1] = skewY * sx
m2[2] = skewX * sy
rotation && rotate(m2, m2, rotation)
m2[4] += ox + x2
m2[5] += oy + y2
return m2
}
Transformable2.initDefaultProps = (function () {
var proto2 = Transformable2.prototype
proto2.scaleX = proto2.scaleY = proto2.globalScaleRatio = 1
proto2.x =
proto2.y =
proto2.originX =
proto2.originY =
proto2.skewX =
proto2.skewY =
proto2.rotation =
proto2.anchorX =
proto2.anchorY =
0
})()
return Transformable2
})()
var TRANSFORMABLE_PROPS = [
'x',
'y',
'originX',
'originY',
'anchorX',
'anchorY',
'rotation',
'scaleX',
'scaleY',
'skewX',
'skewY',
]
function copyTransform(target2, source2) {
for (var i2 = 0; i2 < TRANSFORMABLE_PROPS.length; i2++) {
var propName = TRANSFORMABLE_PROPS[i2]
target2[propName] = source2[propName]
}
}
var Transformable$1 = Transformable
var textWidthCache = {}
function getWidth(text2, font2) {
font2 = font2 || DEFAULT_FONT
var cacheOfFont = textWidthCache[font2]
if (!cacheOfFont) {
cacheOfFont = textWidthCache[font2] = new LRU$1(500)
}
var width = cacheOfFont.get(text2)
if (width == null) {
width = platformApi.measureText(text2, font2).width
cacheOfFont.put(text2, width)
}
return width
}
function innerGetBoundingRect(text2, font2, textAlign2, textBaseline) {
var width = getWidth(text2, font2)
var height = getLineHeight(font2)
var x2 = adjustTextX(0, width, textAlign2)
var y2 = adjustTextY(0, height, textBaseline)
var rect = new BoundingRect$1(x2, y2, width, height)
return rect
}
function getBoundingRect(text2, font2, textAlign2, textBaseline) {
var textLines = ((text2 || '') + '').split('\n')
var len2 = textLines.length
if (len2 === 1) {
return innerGetBoundingRect(textLines[0], font2, textAlign2, textBaseline)
} else {
var uniondRect = new BoundingRect$1(0, 0, 0, 0)
for (var i2 = 0; i2 < textLines.length; i2++) {
var rect = innerGetBoundingRect(
textLines[i2],
font2,
textAlign2,
textBaseline
)
i2 === 0 ? uniondRect.copy(rect) : uniondRect.union(rect)
}
return uniondRect
}
}
function adjustTextX(x2, width, textAlign2) {
if (textAlign2 === 'right') {
x2 -= width
} else if (textAlign2 === 'center') {
x2 -= width / 2
}
return x2
}
function adjustTextY(y2, height, verticalAlign) {
if (verticalAlign === 'middle') {
y2 -= height / 2
} else if (verticalAlign === 'bottom') {
y2 -= height
}
return y2
}
function getLineHeight(font2) {
return getWidth('\u56FD', font2)
}
function parsePercent$1(value2, maxValue) {
if (typeof value2 === 'string') {
if (value2.lastIndexOf('%') >= 0) {
return (parseFloat(value2) / 100) * maxValue
}
return parseFloat(value2)
}
return value2
}
function calculateTextPosition(out2, opts, rect) {
var textPosition = opts.position || 'inside'
var distance2 = opts.distance != null ? opts.distance : 5
var height = rect.height
var width = rect.width
var halfHeight = height / 2
var x2 = rect.x
var y2 = rect.y
var textAlign2 = 'left'
var textVerticalAlign = 'top'
if (textPosition instanceof Array) {
x2 += parsePercent$1(textPosition[0], rect.width)
y2 += parsePercent$1(textPosition[1], rect.height)
textAlign2 = null
textVerticalAlign = null
} else {
switch (textPosition) {
case 'left':
x2 -= distance2
y2 += halfHeight
textAlign2 = 'right'
textVerticalAlign = 'middle'
break
case 'right':
x2 += distance2 + width
y2 += halfHeight
textVerticalAlign = 'middle'
break
case 'top':
x2 += width / 2
y2 -= distance2
textAlign2 = 'center'
textVerticalAlign = 'bottom'
break
case 'bottom':
x2 += width / 2
y2 += height + distance2
textAlign2 = 'center'
break
case 'inside':
x2 += width / 2
y2 += halfHeight
textAlign2 = 'center'
textVerticalAlign = 'middle'
break
case 'insideLeft':
x2 += distance2
y2 += halfHeight
textVerticalAlign = 'middle'
break
case 'insideRight':
x2 += width - distance2
y2 += halfHeight
textAlign2 = 'right'
textVerticalAlign = 'middle'
break
case 'insideTop':
x2 += width / 2
y2 += distance2
textAlign2 = 'center'
break
case 'insideBottom':
x2 += width / 2
y2 += height - distance2
textAlign2 = 'center'
textVerticalAlign = 'bottom'
break
case 'insideTopLeft':
x2 += distance2
y2 += distance2
break
case 'insideTopRight':
x2 += width - distance2
y2 += distance2
textAlign2 = 'right'
break
case 'insideBottomLeft':
x2 += distance2
y2 += height - distance2
textVerticalAlign = 'bottom'
break
case 'insideBottomRight':
x2 += width - distance2
y2 += height - distance2
textAlign2 = 'right'
textVerticalAlign = 'bottom'
break
}
}
out2 = out2 || {}
out2.x = x2
out2.y = y2
out2.align = textAlign2
out2.verticalAlign = textVerticalAlign
return out2
}
var PRESERVED_NORMAL_STATE = '__zr_normal__'
var PRIMARY_STATES_KEYS$1 = TRANSFORMABLE_PROPS.concat(['ignore'])
var DEFAULT_ANIMATABLE_MAP = reduce(
TRANSFORMABLE_PROPS,
function (obj, key2) {
obj[key2] = true
return obj
},
{ ignore: false }
)
var tmpTextPosCalcRes = {}
var tmpBoundingRect = new BoundingRect$1(0, 0, 0, 0)
var Element$1 = (function () {
function Element2(props2) {
this.id = guid()
this.animators = []
this.currentStates = []
this.states = {}
this._init(props2)
}
Element2.prototype._init = function (props2) {
this.attr(props2)
}
Element2.prototype.drift = function (dx, dy, e2) {
switch (this.draggable) {
case 'horizontal':
dy = 0
break
case 'vertical':
dx = 0
break
}
var m2 = this.transform
if (!m2) {
m2 = this.transform = [1, 0, 0, 1, 0, 0]
}
m2[4] += dx
m2[5] += dy
this.decomposeTransform()
this.markRedraw()
}
Element2.prototype.beforeUpdate = function () {}
Element2.prototype.afterUpdate = function () {}
Element2.prototype.update = function () {
this.updateTransform()
if (this.__dirty) {
this.updateInnerText()
}
}
Element2.prototype.updateInnerText = function (forceUpdate) {
var textEl = this._textContent
if (textEl && (!textEl.ignore || forceUpdate)) {
if (!this.textConfig) {
this.textConfig = {}
}
var textConfig = this.textConfig
var isLocal = textConfig.local
var innerTransformable = textEl.innerTransformable
var textAlign2 = void 0
var textVerticalAlign = void 0
var textStyleChanged = false
innerTransformable.parent = isLocal ? this : null
var innerOrigin = false
innerTransformable.copyTransform(textEl)
if (textConfig.position != null) {
var layoutRect = tmpBoundingRect
if (textConfig.layoutRect) {
layoutRect.copy(textConfig.layoutRect)
} else {
layoutRect.copy(this.getBoundingRect())
}
if (!isLocal) {
layoutRect.applyTransform(this.transform)
}
if (this.calculateTextPosition) {
this.calculateTextPosition(tmpTextPosCalcRes, textConfig, layoutRect)
} else {
calculateTextPosition(tmpTextPosCalcRes, textConfig, layoutRect)
}
innerTransformable.x = tmpTextPosCalcRes.x
innerTransformable.y = tmpTextPosCalcRes.y
textAlign2 = tmpTextPosCalcRes.align
textVerticalAlign = tmpTextPosCalcRes.verticalAlign
var textOrigin = textConfig.origin
if (textOrigin && textConfig.rotation != null) {
var relOriginX = void 0
var relOriginY = void 0
if (textOrigin === 'center') {
relOriginX = layoutRect.width * 0.5
relOriginY = layoutRect.height * 0.5
} else {
relOriginX = parsePercent$1(textOrigin[0], layoutRect.width)
relOriginY = parsePercent$1(textOrigin[1], layoutRect.height)
}
innerOrigin = true
innerTransformable.originX =
-innerTransformable.x + relOriginX + (isLocal ? 0 : layoutRect.x)
innerTransformable.originY =
-innerTransformable.y + relOriginY + (isLocal ? 0 : layoutRect.y)
}
}
if (textConfig.rotation != null) {
innerTransformable.rotation = textConfig.rotation
}
var textOffset = textConfig.offset
if (textOffset) {
innerTransformable.x += textOffset[0]
innerTransformable.y += textOffset[1]
if (!innerOrigin) {
innerTransformable.originX = -textOffset[0]
innerTransformable.originY = -textOffset[1]
}
}
var isInside =
textConfig.inside == null
? typeof textConfig.position === 'string' &&
textConfig.position.indexOf('inside') >= 0
: textConfig.inside
var innerTextDefaultStyle =
this._innerTextDefaultStyle || (this._innerTextDefaultStyle = {})
var textFill = void 0
var textStroke = void 0
var autoStroke = void 0
if (isInside && this.canBeInsideText()) {
textFill = textConfig.insideFill
textStroke = textConfig.insideStroke
if (textFill == null || textFill === 'auto') {
textFill = this.getInsideTextFill()
}
if (textStroke == null || textStroke === 'auto') {
textStroke = this.getInsideTextStroke(textFill)
autoStroke = true
}
} else {
textFill = textConfig.outsideFill
textStroke = textConfig.outsideStroke
if (textFill == null || textFill === 'auto') {
textFill = this.getOutsideFill()
}
if (textStroke == null || textStroke === 'auto') {
textStroke = this.getOutsideStroke(textFill)
autoStroke = true
}
}
textFill = textFill || '#000'
if (
textFill !== innerTextDefaultStyle.fill ||
textStroke !== innerTextDefaultStyle.stroke ||
autoStroke !== innerTextDefaultStyle.autoStroke ||
textAlign2 !== innerTextDefaultStyle.align ||
textVerticalAlign !== innerTextDefaultStyle.verticalAlign
) {
textStyleChanged = true
innerTextDefaultStyle.fill = textFill
innerTextDefaultStyle.stroke = textStroke
innerTextDefaultStyle.autoStroke = autoStroke
innerTextDefaultStyle.align = textAlign2
innerTextDefaultStyle.verticalAlign = textVerticalAlign
textEl.setDefaultTextStyle(innerTextDefaultStyle)
}
textEl.__dirty |= REDRAW_BIT
if (textStyleChanged) {
textEl.dirtyStyle(true)
}
}
}
Element2.prototype.canBeInsideText = function () {
return true
}
Element2.prototype.getInsideTextFill = function () {
return '#fff'
}
Element2.prototype.getInsideTextStroke = function (textFill) {
return '#000'
}
Element2.prototype.getOutsideFill = function () {
return this.__zr && this.__zr.isDarkMode()
? LIGHT_LABEL_COLOR
: DARK_LABEL_COLOR
}
Element2.prototype.getOutsideStroke = function (textFill) {
var backgroundColor2 = this.__zr && this.__zr.getBackgroundColor()
var colorArr =
typeof backgroundColor2 === 'string' && parse$1(backgroundColor2)
if (!colorArr) {
colorArr = [255, 255, 255, 1]
}
var alpha = colorArr[3]
var isDark = this.__zr.isDarkMode()
for (var i2 = 0; i2 < 3; i2++) {
colorArr[i2] = colorArr[i2] * alpha + (isDark ? 0 : 255) * (1 - alpha)
}
colorArr[3] = 1
return stringify(colorArr, 'rgba')
}
Element2.prototype.traverse = function (cb, context2) {}
Element2.prototype.attrKV = function (key2, value2) {
if (key2 === 'textConfig') {
this.setTextConfig(value2)
} else if (key2 === 'textContent') {
this.setTextContent(value2)
} else if (key2 === 'clipPath') {
this.setClipPath(value2)
} else if (key2 === 'extra') {
this.extra = this.extra || {}
extend(this.extra, value2)
} else {
this[key2] = value2
}
}
Element2.prototype.hide = function () {
this.ignore = true
this.markRedraw()
}
Element2.prototype.show = function () {
this.ignore = false
this.markRedraw()
}
Element2.prototype.attr = function (keyOrObj, value2) {
if (typeof keyOrObj === 'string') {
this.attrKV(keyOrObj, value2)
} else if (isObject$b(keyOrObj)) {
var obj = keyOrObj
var keysArr = keys$4(obj)
for (var i2 = 0; i2 < keysArr.length; i2++) {
var key2 = keysArr[i2]
this.attrKV(key2, keyOrObj[key2])
}
}
this.markRedraw()
return this
}
Element2.prototype.saveCurrentToNormalState = function (toState) {
this._innerSaveToNormal(toState)
var normalState = this._normalState
for (var i2 = 0; i2 < this.animators.length; i2++) {
var animator = this.animators[i2]
var fromStateTransition = animator.__fromStateTransition
if (
animator.getLoop() ||
(fromStateTransition && fromStateTransition !== PRESERVED_NORMAL_STATE)
) {
continue
}
var targetName = animator.targetName
var target2 = targetName ? normalState[targetName] : normalState
animator.saveTo(target2)
}
}
Element2.prototype._innerSaveToNormal = function (toState) {
var normalState = this._normalState
if (!normalState) {
normalState = this._normalState = {}
}
if (toState.textConfig && !normalState.textConfig) {
normalState.textConfig = this.textConfig
}
this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS$1)
}
Element2.prototype._savePrimaryToNormal = function (
toState,
normalState,
primaryKeys
) {
for (var i2 = 0; i2 < primaryKeys.length; i2++) {
var key2 = primaryKeys[i2]
if (toState[key2] != null && !(key2 in normalState)) {
normalState[key2] = this[key2]
}
}
}
Element2.prototype.hasState = function () {
return this.currentStates.length > 0
}
Element2.prototype.getState = function (name2) {
return this.states[name2]
}
Element2.prototype.ensureState = function (name2) {
var states = this.states
if (!states[name2]) {
states[name2] = {}
}
return states[name2]
}
Element2.prototype.clearStates = function (noAnimation) {
this.useState(PRESERVED_NORMAL_STATE, false, noAnimation)
}
Element2.prototype.useState = function (
stateName,
keepCurrentStates,
noAnimation,
forceUseHoverLayer
) {
var toNormalState = stateName === PRESERVED_NORMAL_STATE
var hasStates = this.hasState()
if (!hasStates && toNormalState) {
return
}
var currentStates = this.currentStates
var animationCfg = this.stateTransition
if (
indexOf(currentStates, stateName) >= 0 &&
(keepCurrentStates || currentStates.length === 1)
) {
return
}
var state2
if (this.stateProxy && !toNormalState) {
state2 = this.stateProxy(stateName)
}
if (!state2) {
state2 = this.states && this.states[stateName]
}
if (!state2 && !toNormalState) {
logError('State ' + stateName + ' not exists.')
return
}
if (!toNormalState) {
this.saveCurrentToNormalState(state2)
}
var useHoverLayer = !!((state2 && state2.hoverLayer) || forceUseHoverLayer)
if (useHoverLayer) {
this._toggleHoverLayerFlag(true)
}
this._applyStateObj(
stateName,
state2,
this._normalState,
keepCurrentStates,
!noAnimation &&
!this.__inHover &&
animationCfg &&
animationCfg.duration > 0,
animationCfg
)
var textContent = this._textContent
var textGuide = this._textGuide
if (textContent) {
textContent.useState(
stateName,
keepCurrentStates,
noAnimation,
useHoverLayer
)
}
if (textGuide) {
textGuide.useState(
stateName,
keepCurrentStates,
noAnimation,
useHoverLayer
)
}
if (toNormalState) {
this.currentStates = []
this._normalState = {}
} else {
if (!keepCurrentStates) {
this.currentStates = [stateName]
} else {
this.currentStates.push(stateName)
}
}
this._updateAnimationTargets()
this.markRedraw()
if (!useHoverLayer && this.__inHover) {
this._toggleHoverLayerFlag(false)
this.__dirty &= ~REDRAW_BIT
}
return state2
}
Element2.prototype.useStates = function (
states,
noAnimation,
forceUseHoverLayer
) {
if (!states.length) {
this.clearStates()
} else {
var stateObjects = []
var currentStates = this.currentStates
var len2 = states.length
var notChange = len2 === currentStates.length
if (notChange) {
for (var i2 = 0; i2 < len2; i2++) {
if (states[i2] !== currentStates[i2]) {
notChange = false
break
}
}
}
if (notChange) {
return
}
for (var i2 = 0; i2 < len2; i2++) {
var stateName = states[i2]
var stateObj = void 0
if (this.stateProxy) {
stateObj = this.stateProxy(stateName, states)
}
if (!stateObj) {
stateObj = this.states[stateName]
}
if (stateObj) {
stateObjects.push(stateObj)
}
}
var lastStateObj = stateObjects[len2 - 1]
var useHoverLayer = !!(
(lastStateObj && lastStateObj.hoverLayer) ||
forceUseHoverLayer
)
if (useHoverLayer) {
this._toggleHoverLayerFlag(true)
}
var mergedState = this._mergeStates(stateObjects)
var animationCfg = this.stateTransition
this.saveCurrentToNormalState(mergedState)
this._applyStateObj(
states.join(','),
mergedState,
this._normalState,
false,
!noAnimation &&
!this.__inHover &&
animationCfg &&
animationCfg.duration > 0,
animationCfg
)
var textContent = this._textContent
var textGuide = this._textGuide
if (textContent) {
textContent.useStates(states, noAnimation, useHoverLayer)
}
if (textGuide) {
textGuide.useStates(states, noAnimation, useHoverLayer)
}
this._updateAnimationTargets()
this.currentStates = states.slice()
this.markRedraw()
if (!useHoverLayer && this.__inHover) {
this._toggleHoverLayerFlag(false)
this.__dirty &= ~REDRAW_BIT
}
}
}
Element2.prototype._updateAnimationTargets = function () {
for (var i2 = 0; i2 < this.animators.length; i2++) {
var animator = this.animators[i2]
if (animator.targetName) {
animator.changeTarget(this[animator.targetName])
}
}
}
Element2.prototype.removeState = function (state2) {
var idx = indexOf(this.currentStates, state2)
if (idx >= 0) {
var currentStates = this.currentStates.slice()
currentStates.splice(idx, 1)
this.useStates(currentStates)
}
}
Element2.prototype.replaceState = function (oldState, newState, forceAdd) {
var currentStates = this.currentStates.slice()
var idx = indexOf(currentStates, oldState)
var newStateExists = indexOf(currentStates, newState) >= 0
if (idx >= 0) {
if (!newStateExists) {
currentStates[idx] = newState
} else {
currentStates.splice(idx, 1)
}
} else if (forceAdd && !newStateExists) {
currentStates.push(newState)
}
this.useStates(currentStates)
}
Element2.prototype.toggleState = function (state2, enable2) {
if (enable2) {
this.useState(state2, true)
} else {
this.removeState(state2)
}
}
Element2.prototype._mergeStates = function (states) {
var mergedState = {}
var mergedTextConfig
for (var i2 = 0; i2 < states.length; i2++) {
var state2 = states[i2]
extend(mergedState, state2)
if (state2.textConfig) {
mergedTextConfig = mergedTextConfig || {}
extend(mergedTextConfig, state2.textConfig)
}
}
if (mergedTextConfig) {
mergedState.textConfig = mergedTextConfig
}
return mergedState
}
Element2.prototype._applyStateObj = function (
stateName,
state2,
normalState,
keepCurrentStates,
transition,
animationCfg
) {
var needsRestoreToNormal = !(state2 && keepCurrentStates)
if (state2 && state2.textConfig) {
this.textConfig = extend(
{},
keepCurrentStates ? this.textConfig : normalState.textConfig
)
extend(this.textConfig, state2.textConfig)
} else if (needsRestoreToNormal) {
if (normalState.textConfig) {
this.textConfig = normalState.textConfig
}
}
var transitionTarget = {}
var hasTransition = false
for (var i2 = 0; i2 < PRIMARY_STATES_KEYS$1.length; i2++) {
var key2 = PRIMARY_STATES_KEYS$1[i2]
var propNeedsTransition = transition && DEFAULT_ANIMATABLE_MAP[key2]
if (state2 && state2[key2] != null) {
if (propNeedsTransition) {
hasTransition = true
transitionTarget[key2] = state2[key2]
} else {
this[key2] = state2[key2]
}
} else if (needsRestoreToNormal) {
if (normalState[key2] != null) {
if (propNeedsTransition) {
hasTransition = true
transitionTarget[key2] = normalState[key2]
} else {
this[key2] = normalState[key2]
}
}
}
}
if (!transition) {
for (var i2 = 0; i2 < this.animators.length; i2++) {
var animator = this.animators[i2]
var targetName = animator.targetName
if (!animator.getLoop()) {
animator.__changeFinalValue(
targetName
? (state2 || normalState)[targetName]
: state2 || normalState
)
}
}
}
if (hasTransition) {
this._transitionState(stateName, transitionTarget, animationCfg)
}
}
Element2.prototype._attachComponent = function (componentEl) {
if (componentEl.__zr && !componentEl.__hostTarget) {
return
}
if (componentEl === this) {
return
}
var zr = this.__zr
if (zr) {
componentEl.addSelfToZr(zr)
}
componentEl.__zr = zr
componentEl.__hostTarget = this
}
Element2.prototype._detachComponent = function (componentEl) {
if (componentEl.__zr) {
componentEl.removeSelfFromZr(componentEl.__zr)
}
componentEl.__zr = null
componentEl.__hostTarget = null
}
Element2.prototype.getClipPath = function () {
return this._clipPath
}
Element2.prototype.setClipPath = function (clipPath) {
if (this._clipPath && this._clipPath !== clipPath) {
this.removeClipPath()
}
this._attachComponent(clipPath)
this._clipPath = clipPath
this.markRedraw()
}
Element2.prototype.removeClipPath = function () {
var clipPath = this._clipPath
if (clipPath) {
this._detachComponent(clipPath)
this._clipPath = null
this.markRedraw()
}
}
Element2.prototype.getTextContent = function () {
return this._textContent
}
Element2.prototype.setTextContent = function (textEl) {
var previousTextContent = this._textContent
if (previousTextContent === textEl) {
return
}
if (previousTextContent && previousTextContent !== textEl) {
this.removeTextContent()
}
textEl.innerTransformable = new Transformable$1()
this._attachComponent(textEl)
this._textContent = textEl
this.markRedraw()
}
Element2.prototype.setTextConfig = function (cfg) {
if (!this.textConfig) {
this.textConfig = {}
}
extend(this.textConfig, cfg)
this.markRedraw()
}
Element2.prototype.removeTextConfig = function () {
this.textConfig = null
this.markRedraw()
}
Element2.prototype.removeTextContent = function () {
var textEl = this._textContent
if (textEl) {
textEl.innerTransformable = null
this._detachComponent(textEl)
this._textContent = null
this._innerTextDefaultStyle = null
this.markRedraw()
}
}
Element2.prototype.getTextGuideLine = function () {
return this._textGuide
}
Element2.prototype.setTextGuideLine = function (guideLine) {
if (this._textGuide && this._textGuide !== guideLine) {
this.removeTextGuideLine()
}
this._attachComponent(guideLine)
this._textGuide = guideLine
this.markRedraw()
}
Element2.prototype.removeTextGuideLine = function () {
var textGuide = this._textGuide
if (textGuide) {
this._detachComponent(textGuide)
this._textGuide = null
this.markRedraw()
}
}
Element2.prototype.markRedraw = function () {
this.__dirty |= REDRAW_BIT
var zr = this.__zr
if (zr) {
if (this.__inHover) {
zr.refreshHover()
} else {
zr.refresh()
}
}
if (this.__hostTarget) {
this.__hostTarget.markRedraw()
}
}
Element2.prototype.dirty = function () {
this.markRedraw()
}
Element2.prototype._toggleHoverLayerFlag = function (inHover) {
this.__inHover = inHover
var textContent = this._textContent
var textGuide = this._textGuide
if (textContent) {
textContent.__inHover = inHover
}
if (textGuide) {
textGuide.__inHover = inHover
}
}
Element2.prototype.addSelfToZr = function (zr) {
if (this.__zr === zr) {
return
}
this.__zr = zr
var animators = this.animators
if (animators) {
for (var i2 = 0; i2 < animators.length; i2++) {
zr.animation.addAnimator(animators[i2])
}
}
if (this._clipPath) {
this._clipPath.addSelfToZr(zr)
}
if (this._textContent) {
this._textContent.addSelfToZr(zr)
}
if (this._textGuide) {
this._textGuide.addSelfToZr(zr)
}
}
Element2.prototype.removeSelfFromZr = function (zr) {
if (!this.__zr) {
return
}
this.__zr = null
var animators = this.animators
if (animators) {
for (var i2 = 0; i2 < animators.length; i2++) {
zr.animation.removeAnimator(animators[i2])
}
}
if (this._clipPath) {
this._clipPath.removeSelfFromZr(zr)
}
if (this._textContent) {
this._textContent.removeSelfFromZr(zr)
}
if (this._textGuide) {
this._textGuide.removeSelfFromZr(zr)
}
}
Element2.prototype.animate = function (key2, loop, allowDiscreteAnimation) {
var target2 = key2 ? this[key2] : this
var animator = new Animator$1(target2, loop, allowDiscreteAnimation)
key2 && (animator.targetName = key2)
this.addAnimator(animator, key2)
return animator
}
Element2.prototype.addAnimator = function (animator, key2) {
var zr = this.__zr
var el2 = this
animator
.during(function () {
el2.updateDuringAnimation(key2)
})
.done(function () {
var animators = el2.animators
var idx = indexOf(animators, animator)
if (idx >= 0) {
animators.splice(idx, 1)
}
})
this.animators.push(animator)
if (zr) {
zr.animation.addAnimator(animator)
}
zr && zr.wakeUp()
}
Element2.prototype.updateDuringAnimation = function (key2) {
this.markRedraw()
}
Element2.prototype.stopAnimation = function (scope, forwardToLast) {
var animators = this.animators
var len2 = animators.length
var leftAnimators = []
for (var i2 = 0; i2 < len2; i2++) {
var animator = animators[i2]
if (!scope || scope === animator.scope) {
animator.stop(forwardToLast)
} else {
leftAnimators.push(animator)
}
}
this.animators = leftAnimators
return this
}
Element2.prototype.animateTo = function (target2, cfg, animationProps) {
animateTo(this, target2, cfg, animationProps)
}
Element2.prototype.animateFrom = function (target2, cfg, animationProps) {
animateTo(this, target2, cfg, animationProps, true)
}
Element2.prototype._transitionState = function (
stateName,
target2,
cfg,
animationProps
) {
var animators = animateTo(this, target2, cfg, animationProps)
for (var i2 = 0; i2 < animators.length; i2++) {
animators[i2].__fromStateTransition = stateName
}
}
Element2.prototype.getBoundingRect = function () {
return null
}
Element2.prototype.getPaintRect = function () {
return null
}
Element2.initDefaultProps = (function () {
var elProto = Element2.prototype
elProto.type = 'element'
elProto.name = ''
elProto.ignore =
elProto.silent =
elProto.isGroup =
elProto.draggable =
elProto.dragging =
elProto.ignoreClip =
elProto.__inHover =
false
elProto.__dirty = REDRAW_BIT
function createLegacyProperty(key2, privateKey, xKey, yKey) {
Object.defineProperty(elProto, key2, {
get: function () {
if (!this[privateKey]) {
var pos = (this[privateKey] = [])
enhanceArray(this, pos)
}
return this[privateKey]
},
set: function (pos) {
this[xKey] = pos[0]
this[yKey] = pos[1]
this[privateKey] = pos
enhanceArray(this, pos)
},
})
function enhanceArray(self2, pos) {
Object.defineProperty(pos, 0, {
get: function () {
return self2[xKey]
},
set: function (val2) {
self2[xKey] = val2
},
})
Object.defineProperty(pos, 1, {
get: function () {
return self2[yKey]
},
set: function (val2) {
self2[yKey] = val2
},
})
}
}
if (Object.defineProperty) {
createLegacyProperty('position', '_legacyPos', 'x', 'y')
createLegacyProperty('scale', '_legacyScale', 'scaleX', 'scaleY')
createLegacyProperty('origin', '_legacyOrigin', 'originX', 'originY')
}
})()
return Element2
})()
mixin(Element$1, Eventful$1)
mixin(Element$1, Transformable$1)
function animateTo(animatable, target2, cfg, animationProps, reverse3) {
cfg = cfg || {}
var animators = []
animateToShallow(
animatable,
'',
animatable,
target2,
cfg,
animationProps,
animators,
reverse3
)
var finishCount = animators.length
var doneHappened = false
var cfgDone = cfg.done
var cfgAborted = cfg.aborted
var doneCb = function () {
doneHappened = true
finishCount--
if (finishCount <= 0) {
doneHappened ? cfgDone && cfgDone() : cfgAborted && cfgAborted()
}
}
var abortedCb = function () {
finishCount--
if (finishCount <= 0) {
doneHappened ? cfgDone && cfgDone() : cfgAborted && cfgAborted()
}
}
if (!finishCount) {
cfgDone && cfgDone()
}
if (animators.length > 0 && cfg.during) {
animators[0].during(function (target3, percent) {
cfg.during(percent)
})
}
for (var i2 = 0; i2 < animators.length; i2++) {
var animator = animators[i2]
if (doneCb) {
animator.done(doneCb)
}
if (abortedCb) {
animator.aborted(abortedCb)
}
if (cfg.force) {
animator.duration(cfg.duration)
}
animator.start(cfg.easing)
}
return animators
}
function copyArrShallow(source2, target2, len2) {
for (var i2 = 0; i2 < len2; i2++) {
source2[i2] = target2[i2]
}
}
function is2DArray(value2) {
return isArrayLike$3(value2[0])
}
function copyValue(target2, source2, key2) {
if (isArrayLike$3(source2[key2])) {
if (!isArrayLike$3(target2[key2])) {
target2[key2] = []
}
if (isTypedArray$2(source2[key2])) {
var len2 = source2[key2].length
if (target2[key2].length !== len2) {
target2[key2] = new source2[key2].constructor(len2)
copyArrShallow(target2[key2], source2[key2], len2)
}
} else {
var sourceArr = source2[key2]
var targetArr = target2[key2]
var len0 = sourceArr.length
if (is2DArray(sourceArr)) {
var len1 = sourceArr[0].length
for (var i2 = 0; i2 < len0; i2++) {
if (!targetArr[i2]) {
targetArr[i2] = Array.prototype.slice.call(sourceArr[i2])
} else {
copyArrShallow(targetArr[i2], sourceArr[i2], len1)
}
}
} else {
copyArrShallow(targetArr, sourceArr, len0)
}
targetArr.length = sourceArr.length
}
} else {
target2[key2] = source2[key2]
}
}
function isValueSame(val1, val2) {
return (
val1 === val2 ||
(isArrayLike$3(val1) && isArrayLike$3(val2) && is1DArraySame(val1, val2))
)
}
function is1DArraySame(arr0, arr1) {
var len2 = arr0.length
if (len2 !== arr1.length) {
return false
}
for (var i2 = 0; i2 < len2; i2++) {
if (arr0[i2] !== arr1[i2]) {
return false
}
}
return true
}
function animateToShallow(
animatable,
topKey,
animateObj,
target2,
cfg,
animationProps,
animators,
reverse3
) {
var targetKeys = keys$4(target2)
var duration2 = cfg.duration
var delay2 = cfg.delay
var additive = cfg.additive
var setToFinal = cfg.setToFinal
var animateAll = !isObject$b(animationProps)
var existsAnimators = animatable.animators
var animationKeys = []
for (var k2 = 0; k2 < targetKeys.length; k2++) {
var innerKey = targetKeys[k2]
var targetVal = target2[innerKey]
if (
targetVal != null &&
animateObj[innerKey] != null &&
(animateAll || animationProps[innerKey])
) {
if (
isObject$b(targetVal) &&
!isArrayLike$3(targetVal) &&
!isGradientObject(targetVal)
) {
if (topKey) {
if (!reverse3) {
animateObj[innerKey] = targetVal
animatable.updateDuringAnimation(topKey)
}
continue
}
animateToShallow(
animatable,
innerKey,
animateObj[innerKey],
targetVal,
cfg,
animationProps && animationProps[innerKey],
animators,
reverse3
)
} else {
animationKeys.push(innerKey)
}
} else if (!reverse3) {
animateObj[innerKey] = targetVal
animatable.updateDuringAnimation(topKey)
animationKeys.push(innerKey)
}
}
var keyLen = animationKeys.length
if (!additive && keyLen) {
for (var i2 = 0; i2 < existsAnimators.length; i2++) {
var animator = existsAnimators[i2]
if (animator.targetName === topKey) {
var allAborted = animator.stopTracks(animationKeys)
if (allAborted) {
var idx = indexOf(existsAnimators, animator)
existsAnimators.splice(idx, 1)
}
}
}
}
if (!cfg.force) {
animationKeys = filter(animationKeys, function (key2) {
return !isValueSame(target2[key2], animateObj[key2])
})
keyLen = animationKeys.length
}
if (keyLen > 0 || (cfg.force && !animators.length)) {
var revertedSource = void 0
var reversedTarget = void 0
var sourceClone = void 0
if (reverse3) {
reversedTarget = {}
if (setToFinal) {
revertedSource = {}
}
for (var i2 = 0; i2 < keyLen; i2++) {
var innerKey = animationKeys[i2]
reversedTarget[innerKey] = animateObj[innerKey]
if (setToFinal) {
revertedSource[innerKey] = target2[innerKey]
} else {
animateObj[innerKey] = target2[innerKey]
}
}
} else if (setToFinal) {
sourceClone = {}
for (var i2 = 0; i2 < keyLen; i2++) {
var innerKey = animationKeys[i2]
sourceClone[innerKey] = cloneValue(animateObj[innerKey])
copyValue(animateObj, target2, innerKey)
}
}
var animator = new Animator$1(
animateObj,
false,
false,
additive
? filter(existsAnimators, function (animator2) {
return animator2.targetName === topKey
})
: null
)
animator.targetName = topKey
if (cfg.scope) {
animator.scope = cfg.scope
}
if (setToFinal && revertedSource) {
animator.whenWithKeys(0, revertedSource, animationKeys)
}
if (sourceClone) {
animator.whenWithKeys(0, sourceClone, animationKeys)
}
animator
.whenWithKeys(
duration2 == null ? 500 : duration2,
reverse3 ? reversedTarget : target2,
animationKeys
)
.delay(delay2 || 0)
animatable.addAnimator(animator, topKey)
animators.push(animator)
}
}
var Element$2 = Element$1
var Group$4 = (function (_super) {
__extends$1(Group2, _super)
function Group2(opts) {
var _this = _super.call(this) || this
_this.isGroup = true
_this._children = []
_this.attr(opts)
return _this
}
Group2.prototype.childrenRef = function () {
return this._children
}
Group2.prototype.children = function () {
return this._children.slice()
}
Group2.prototype.childAt = function (idx) {
return this._children[idx]
}
Group2.prototype.childOfName = function (name2) {
var children = this._children
for (var i2 = 0; i2 < children.length; i2++) {
if (children[i2].name === name2) {
return children[i2]
}
}
}
Group2.prototype.childCount = function () {
return this._children.length
}
Group2.prototype.add = function (child) {
if (child) {
if (child !== this && child.parent !== this) {
this._children.push(child)
this._doAdd(child)
}
}
return this
}
Group2.prototype.addBefore = function (child, nextSibling2) {
if (
child &&
child !== this &&
child.parent !== this &&
nextSibling2 &&
nextSibling2.parent === this
) {
var children = this._children
var idx = children.indexOf(nextSibling2)
if (idx >= 0) {
children.splice(idx, 0, child)
this._doAdd(child)
}
}
return this
}
Group2.prototype.replace = function (oldChild, newChild) {
var idx = indexOf(this._children, oldChild)
if (idx >= 0) {
this.replaceAt(newChild, idx)
}
return this
}
Group2.prototype.replaceAt = function (child, index2) {
var children = this._children
var old = children[index2]
if (child && child !== this && child.parent !== this && child !== old) {
children[index2] = child
old.parent = null
var zr = this.__zr
if (zr) {
old.removeSelfFromZr(zr)
}
this._doAdd(child)
}
return this
}
Group2.prototype._doAdd = function (child) {
if (child.parent) {
child.parent.remove(child)
}
child.parent = this
var zr = this.__zr
if (zr && zr !== child.__zr) {
child.addSelfToZr(zr)
}
zr && zr.refresh()
}
Group2.prototype.remove = function (child) {
var zr = this.__zr
var children = this._children
var idx = indexOf(children, child)
if (idx < 0) {
return this
}
children.splice(idx, 1)
child.parent = null
if (zr) {
child.removeSelfFromZr(zr)
}
zr && zr.refresh()
return this
}
Group2.prototype.removeAll = function () {
var children = this._children
var zr = this.__zr
for (var i2 = 0; i2 < children.length; i2++) {
var child = children[i2]
if (zr) {
child.removeSelfFromZr(zr)
}
child.parent = null
}
children.length = 0
return this
}
Group2.prototype.eachChild = function (cb, context2) {
var children = this._children
for (var i2 = 0; i2 < children.length; i2++) {
var child = children[i2]
cb.call(context2, child, i2)
}
return this
}
Group2.prototype.traverse = function (cb, context2) {
for (var i2 = 0; i2 < this._children.length; i2++) {
var child = this._children[i2]
var stopped = cb.call(context2, child)
if (child.isGroup && !stopped) {
child.traverse(cb, context2)
}
}
return this
}
Group2.prototype.addSelfToZr = function (zr) {
_super.prototype.addSelfToZr.call(this, zr)
for (var i2 = 0; i2 < this._children.length; i2++) {
var child = this._children[i2]
child.addSelfToZr(zr)
}
}
Group2.prototype.removeSelfFromZr = function (zr) {
_super.prototype.removeSelfFromZr.call(this, zr)
for (var i2 = 0; i2 < this._children.length; i2++) {
var child = this._children[i2]
child.removeSelfFromZr(zr)
}
}
Group2.prototype.getBoundingRect = function (includeChildren) {
var tmpRect2 = new BoundingRect$1(0, 0, 0, 0)
var children = includeChildren || this._children
var tmpMat = []
var rect = null
for (var i2 = 0; i2 < children.length; i2++) {
var child = children[i2]
if (child.ignore || child.invisible) {
continue
}
var childRect = child.getBoundingRect()
var transform3 = child.getLocalTransform(tmpMat)
if (transform3) {
BoundingRect$1.applyTransform(tmpRect2, childRect, transform3)
rect = rect || tmpRect2.clone()
rect.union(tmpRect2)
} else {
rect = rect || childRect.clone()
rect.union(childRect)
}
}
return rect || tmpRect2
}
return Group2
})(Element$2)
Group$4.prototype.type = 'group'
var Group$5 = Group$4
/*!
* ZRender, a high performance 2d drawing library.
*
* Copyright (c) 2013, Baidu Inc.
* All rights reserved.
*
* LICENSE
* https://github.com/ecomfe/zrender/blob/master/LICENSE.txt
*/
var painterCtors = {}
var instances$1 = {}
function delInstance(id2) {
delete instances$1[id2]
}
function isDarkMode(backgroundColor2) {
if (!backgroundColor2) {
return false
}
if (typeof backgroundColor2 === 'string') {
return lum(backgroundColor2, 1) < DARK_MODE_THRESHOLD
} else if (backgroundColor2.colorStops) {
var colorStops = backgroundColor2.colorStops
var totalLum = 0
var len2 = colorStops.length
for (var i2 = 0; i2 < len2; i2++) {
totalLum += lum(colorStops[i2].color, 1)
}
totalLum /= len2
return totalLum < DARK_MODE_THRESHOLD
}
return false
}
var ZRender = (function () {
function ZRender2(id2, dom, opts) {
var _this = this
this._sleepAfterStill = 10
this._stillFrameAccum = 0
this._needsRefresh = true
this._needsRefreshHover = true
this._darkMode = false
opts = opts || {}
this.dom = dom
this.id = id2
var storage2 = new Storage$1()
var rendererType = opts.renderer || 'canvas'
if (!painterCtors[rendererType]) {
rendererType = keys$4(painterCtors)[0]
}
opts.useDirtyRect = opts.useDirtyRect == null ? false : opts.useDirtyRect
var painter = new painterCtors[rendererType](dom, storage2, opts, id2)
var ssrMode = opts.ssr || painter.ssrOnly
this.storage = storage2
this.painter = painter
var handerProxy =
!env$1.node && !env$1.worker && !ssrMode
? new HandlerProxy(painter.getViewportRoot(), painter.root)
: null
var useCoarsePointer = opts.useCoarsePointer
var usePointerSize =
useCoarsePointer == null || useCoarsePointer === 'auto'
? env$1.touchEventsSupported
: !!useCoarsePointer
var defaultPointerSize = 44
var pointerSize
if (usePointerSize) {
pointerSize = retrieve2(opts.pointerSize, defaultPointerSize)
}
this.handler = new Handler$1(
storage2,
painter,
handerProxy,
painter.root,
pointerSize
)
this.animation = new Animation$1({
stage: {
update: ssrMode
? null
: function () {
return _this._flush(true)
},
},
})
if (!ssrMode) {
this.animation.start()
}
}
ZRender2.prototype.add = function (el2) {
if (!el2) {
return
}
this.storage.addRoot(el2)
el2.addSelfToZr(this)
this.refresh()
}
ZRender2.prototype.remove = function (el2) {
if (!el2) {
return
}
this.storage.delRoot(el2)
el2.removeSelfFromZr(this)
this.refresh()
}
ZRender2.prototype.configLayer = function (zLevel, config2) {
if (this.painter.configLayer) {
this.painter.configLayer(zLevel, config2)
}
this.refresh()
}
ZRender2.prototype.setBackgroundColor = function (backgroundColor2) {
if (this.painter.setBackgroundColor) {
this.painter.setBackgroundColor(backgroundColor2)
}
this.refresh()
this._backgroundColor = backgroundColor2
this._darkMode = isDarkMode(backgroundColor2)
}
ZRender2.prototype.getBackgroundColor = function () {
return this._backgroundColor
}
ZRender2.prototype.setDarkMode = function (darkMode) {
this._darkMode = darkMode
}
ZRender2.prototype.isDarkMode = function () {
return this._darkMode
}
ZRender2.prototype.refreshImmediately = function (fromInside) {
if (!fromInside) {
this.animation.update(true)
}
this._needsRefresh = false
this.painter.refresh()
this._needsRefresh = false
}
ZRender2.prototype.refresh = function () {
this._needsRefresh = true
this.animation.start()
}
ZRender2.prototype.flush = function () {
this._flush(false)
}
ZRender2.prototype._flush = function (fromInside) {
var triggerRendered
var start2 = getTime$1()
if (this._needsRefresh) {
triggerRendered = true
this.refreshImmediately(fromInside)
}
if (this._needsRefreshHover) {
triggerRendered = true
this.refreshHoverImmediately()
}
var end2 = getTime$1()
if (triggerRendered) {
this._stillFrameAccum = 0
this.trigger('rendered', {
elapsedTime: end2 - start2,
})
} else if (this._sleepAfterStill > 0) {
this._stillFrameAccum++
if (this._stillFrameAccum > this._sleepAfterStill) {
this.animation.stop()
}
}
}
ZRender2.prototype.setSleepAfterStill = function (stillFramesCount) {
this._sleepAfterStill = stillFramesCount
}
ZRender2.prototype.wakeUp = function () {
this.animation.start()
this._stillFrameAccum = 0
}
ZRender2.prototype.refreshHover = function () {
this._needsRefreshHover = true
}
ZRender2.prototype.refreshHoverImmediately = function () {
this._needsRefreshHover = false
if (this.painter.refreshHover && this.painter.getType() === 'canvas') {
this.painter.refreshHover()
}
}
ZRender2.prototype.resize = function (opts) {
opts = opts || {}
this.painter.resize(opts.width, opts.height)
this.handler.resize()
}
ZRender2.prototype.clearAnimation = function () {
this.animation.clear()
}
ZRender2.prototype.getWidth = function () {
return this.painter.getWidth()
}
ZRender2.prototype.getHeight = function () {
return this.painter.getHeight()
}
ZRender2.prototype.setCursorStyle = function (cursorStyle) {
this.handler.setCursorStyle(cursorStyle)
}
ZRender2.prototype.findHover = function (x2, y2) {
return this.handler.findHover(x2, y2)
}
ZRender2.prototype.on = function (eventName, eventHandler, context2) {
this.handler.on(eventName, eventHandler, context2)
return this
}
ZRender2.prototype.off = function (eventName, eventHandler) {
this.handler.off(eventName, eventHandler)
}
ZRender2.prototype.trigger = function (eventName, event) {
this.handler.trigger(eventName, event)
}
ZRender2.prototype.clear = function () {
var roots2 = this.storage.getRoots()
for (var i2 = 0; i2 < roots2.length; i2++) {
if (roots2[i2] instanceof Group$5) {
roots2[i2].removeSelfFromZr(this)
}
}
this.storage.delAllRoots()
this.painter.clear()
}
ZRender2.prototype.dispose = function () {
this.animation.stop()
this.clear()
this.storage.dispose()
this.painter.dispose()
this.handler.dispose()
this.animation = this.storage = this.painter = this.handler = null
delInstance(this.id)
}
return ZRender2
})()
function init$3(dom, opts) {
var zr = new ZRender(guid(), dom, opts)
instances$1[zr.id] = zr
return zr
}
function dispose$1(zr) {
zr.dispose()
}
function disposeAll() {
for (var key2 in instances$1) {
if (instances$1.hasOwnProperty(key2)) {
instances$1[key2].dispose()
}
}
instances$1 = {}
}
function getInstance(id2) {
return instances$1[id2]
}
function registerPainter(name2, Ctor) {
painterCtors[name2] = Ctor
}
var version$2 = '5.4.4'
var zrender = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
init: init$3,
dispose: dispose$1,
disposeAll,
getInstance,
registerPainter,
version: version$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var RADIAN_EPSILON = 1e-4
var ROUND_SUPPORTED_PRECISION_MAX = 20
function _trim(str) {
return str.replace(/^\s+|\s+$/g, '')
}
function linearMap$2(val2, domain, range3, clamp2) {
var d0 = domain[0]
var d1 = domain[1]
var r0 = range3[0]
var r1 = range3[1]
var subDomain = d1 - d0
var subRange = r1 - r0
if (subDomain === 0) {
return subRange === 0 ? r0 : (r0 + r1) / 2
}
if (clamp2) {
if (subDomain > 0) {
if (val2 <= d0) {
return r0
} else if (val2 >= d1) {
return r1
}
} else {
if (val2 >= d0) {
return r0
} else if (val2 <= d1) {
return r1
}
}
} else {
if (val2 === d0) {
return r0
}
if (val2 === d1) {
return r1
}
}
return ((val2 - d0) / subDomain) * subRange + r0
}
function parsePercent(percent, all3) {
switch (percent) {
case 'center':
case 'middle':
percent = '50%'
break
case 'left':
case 'top':
percent = '0%'
break
case 'right':
case 'bottom':
percent = '100%'
break
}
if (isString$2(percent)) {
if (_trim(percent).match(/%$/)) {
return (parseFloat(percent) / 100) * all3
}
return parseFloat(percent)
}
return percent == null ? NaN : +percent
}
function round$3(x2, precision, returnStr) {
if (precision == null) {
precision = 10
}
precision = Math.min(Math.max(0, precision), ROUND_SUPPORTED_PRECISION_MAX)
x2 = (+x2).toFixed(precision)
return returnStr ? x2 : +x2
}
function asc$2(arr) {
arr.sort(function (a2, b2) {
return a2 - b2
})
return arr
}
function getPrecision(val2) {
val2 = +val2
if (isNaN(val2)) {
return 0
}
if (val2 > 1e-14) {
var e2 = 1
for (var i2 = 0; i2 < 15; i2++, e2 *= 10) {
if (Math.round(val2 * e2) / e2 === val2) {
return i2
}
}
}
return getPrecisionSafe(val2)
}
function getPrecisionSafe(val2) {
var str = val2.toString().toLowerCase()
var eIndex = str.indexOf('e')
var exp = eIndex > 0 ? +str.slice(eIndex + 1) : 0
var significandPartLen = eIndex > 0 ? eIndex : str.length
var dotIndex = str.indexOf('.')
var decimalPartLen = dotIndex < 0 ? 0 : significandPartLen - 1 - dotIndex
return Math.max(0, decimalPartLen - exp)
}
function getPixelPrecision(dataExtent, pixelExtent) {
var log2 = Math.log
var LN10 = Math.LN10
var dataQuantity = Math.floor(log2(dataExtent[1] - dataExtent[0]) / LN10)
var sizeQuantity = Math.round(
log2(Math.abs(pixelExtent[1] - pixelExtent[0])) / LN10
)
var precision = Math.min(Math.max(-dataQuantity + sizeQuantity, 0), 20)
return !isFinite(precision) ? 20 : precision
}
function getPercentWithPrecision(valueList, idx, precision) {
if (!valueList[idx]) {
return 0
}
var seats = getPercentSeats(valueList, precision)
return seats[idx] || 0
}
function getPercentSeats(valueList, precision) {
var sum2 = reduce(
valueList,
function (acc, val2) {
return acc + (isNaN(val2) ? 0 : val2)
},
0
)
if (sum2 === 0) {
return []
}
var digits = Math.pow(10, precision)
var votesPerQuota = map$1(valueList, function (val2) {
return ((isNaN(val2) ? 0 : val2) / sum2) * digits * 100
})
var targetSeats = digits * 100
var seats = map$1(votesPerQuota, function (votes) {
return Math.floor(votes)
})
var currentSum = reduce(
seats,
function (acc, val2) {
return acc + val2
},
0
)
var remainder = map$1(votesPerQuota, function (votes, idx) {
return votes - seats[idx]
})
while (currentSum < targetSeats) {
var max3 = Number.NEGATIVE_INFINITY
var maxId = null
for (var i2 = 0, len2 = remainder.length; i2 < len2; ++i2) {
if (remainder[i2] > max3) {
max3 = remainder[i2]
maxId = i2
}
}
++seats[maxId]
remainder[maxId] = 0
++currentSum
}
return map$1(seats, function (seat) {
return seat / digits
})
}
function addSafe(val0, val1) {
var maxPrecision = Math.max(getPrecision(val0), getPrecision(val1))
var sum2 = val0 + val1
return maxPrecision > ROUND_SUPPORTED_PRECISION_MAX
? sum2
: round$3(sum2, maxPrecision)
}
var MAX_SAFE_INTEGER$2 = 9007199254740991
function remRadian(radian) {
var pi2 = Math.PI * 2
return ((radian % pi2) + pi2) % pi2
}
function isRadianAroundZero(val2) {
return val2 > -RADIAN_EPSILON && val2 < RADIAN_EPSILON
}
var TIME_REG =
/^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d{1,2})(?::(\d{1,2})(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/
function parseDate(value2) {
if (value2 instanceof Date) {
return value2
} else if (isString$2(value2)) {
var match2 = TIME_REG.exec(value2)
if (!match2) {
return new Date(NaN)
}
if (!match2[8]) {
return new Date(
+match2[1],
+(match2[2] || 1) - 1,
+match2[3] || 1,
+match2[4] || 0,
+(match2[5] || 0),
+match2[6] || 0,
match2[7] ? +match2[7].substring(0, 3) : 0
)
} else {
var hour = +match2[4] || 0
if (match2[8].toUpperCase() !== 'Z') {
hour -= +match2[8].slice(0, 3)
}
return new Date(
Date.UTC(
+match2[1],
+(match2[2] || 1) - 1,
+match2[3] || 1,
hour,
+(match2[5] || 0),
+match2[6] || 0,
match2[7] ? +match2[7].substring(0, 3) : 0
)
)
}
} else if (value2 == null) {
return new Date(NaN)
}
return new Date(Math.round(value2))
}
function quantity(val2) {
return Math.pow(10, quantityExponent(val2))
}
function quantityExponent(val2) {
if (val2 === 0) {
return 0
}
var exp = Math.floor(Math.log(val2) / Math.LN10)
if (val2 / Math.pow(10, exp) >= 10) {
exp++
}
return exp
}
function nice(val2, round2) {
var exponent = quantityExponent(val2)
var exp10 = Math.pow(10, exponent)
var f2 = val2 / exp10
var nf
if (round2) {
if (f2 < 1.5) {
nf = 1
} else if (f2 < 2.5) {
nf = 2
} else if (f2 < 4) {
nf = 3
} else if (f2 < 7) {
nf = 5
} else {
nf = 10
}
} else {
if (f2 < 1) {
nf = 1
} else if (f2 < 2) {
nf = 2
} else if (f2 < 3) {
nf = 3
} else if (f2 < 5) {
nf = 5
} else {
nf = 10
}
}
val2 = nf * exp10
return exponent >= -20 ? +val2.toFixed(exponent < 0 ? -exponent : 0) : val2
}
function quantile(ascArr, p2) {
var H4 = (ascArr.length - 1) * p2 + 1
var h2 = Math.floor(H4)
var v4 = +ascArr[h2 - 1]
var e2 = H4 - h2
return e2 ? v4 + e2 * (ascArr[h2] - v4) : v4
}
function reformIntervals(list2) {
list2.sort(function (a2, b2) {
return littleThan2(a2, b2, 0) ? -1 : 1
})
var curr = -Infinity
var currClose = 1
for (var i2 = 0; i2 < list2.length; ) {
var interval = list2[i2].interval
var close_1 = list2[i2].close
for (var lg = 0; lg < 2; lg++) {
if (interval[lg] <= curr) {
interval[lg] = curr
close_1[lg] = !lg ? 1 - currClose : 1
}
curr = interval[lg]
currClose = close_1[lg]
}
if (interval[0] === interval[1] && close_1[0] * close_1[1] !== 1) {
list2.splice(i2, 1)
} else {
i2++
}
}
return list2
function littleThan2(a2, b2, lg2) {
return (
a2.interval[lg2] < b2.interval[lg2] ||
(a2.interval[lg2] === b2.interval[lg2] &&
(a2.close[lg2] - b2.close[lg2] === (!lg2 ? 1 : -1) ||
(!lg2 && littleThan2(a2, b2, 1))))
)
}
}
function numericToNumber(val2) {
var valFloat = parseFloat(val2)
return valFloat == val2 &&
(valFloat !== 0 || !isString$2(val2) || val2.indexOf('x') <= 0)
? valFloat
: NaN
}
function isNumeric(val2) {
return !isNaN(numericToNumber(val2))
}
function getRandomIdBase() {
return Math.round(Math.random() * 9)
}
function getGreatestCommonDividor(a2, b2) {
if (b2 === 0) {
return a2
}
return getGreatestCommonDividor(b2, a2 % b2)
}
function getLeastCommonMultiple(a2, b2) {
if (a2 == null) {
return b2
}
if (b2 == null) {
return a2
}
return (a2 * b2) / getGreatestCommonDividor(a2, b2)
}
var ECHARTS_PREFIX = '[ECharts] '
var storedLogs = {}
var hasConsole = typeof console !== 'undefined' && console.warn && console.log
function outputLog(type4, str, onlyOnce) {
if (hasConsole) {
if (onlyOnce) {
if (storedLogs[str]) {
return
}
storedLogs[str] = true
}
console[type4](ECHARTS_PREFIX + str)
}
}
function warn$1(str, onlyOnce) {
outputLog('warn', str, onlyOnce)
}
function throwError(msg) {
throw new Error(msg)
}
function interpolateNumber(p0, p1, percent) {
return (p1 - p0) * percent + p0
}
var DUMMY_COMPONENT_NAME_PREFIX = 'series\0'
var INTERNAL_COMPONENT_ID_PREFIX = '\0_ec_\0'
function normalizeToArray(value2) {
return value2 instanceof Array ? value2 : value2 == null ? [] : [value2]
}
function defaultEmphasis(opt, key2, subOpts) {
if (opt) {
opt[key2] = opt[key2] || {}
opt.emphasis = opt.emphasis || {}
opt.emphasis[key2] = opt.emphasis[key2] || {}
for (var i2 = 0, len2 = subOpts.length; i2 < len2; i2++) {
var subOptName = subOpts[i2]
if (
!opt.emphasis[key2].hasOwnProperty(subOptName) &&
opt[key2].hasOwnProperty(subOptName)
) {
opt.emphasis[key2][subOptName] = opt[key2][subOptName]
}
}
}
}
var TEXT_STYLE_OPTIONS = [
'fontStyle',
'fontWeight',
'fontSize',
'fontFamily',
'rich',
'tag',
'color',
'textBorderColor',
'textBorderWidth',
'width',
'height',
'lineHeight',
'align',
'verticalAlign',
'baseline',
'shadowColor',
'shadowBlur',
'shadowOffsetX',
'shadowOffsetY',
'textShadowColor',
'textShadowBlur',
'textShadowOffsetX',
'textShadowOffsetY',
'backgroundColor',
'borderColor',
'borderWidth',
'borderRadius',
'padding',
]
function getDataItemValue(dataItem) {
return isObject$b(dataItem) &&
!isArray$6(dataItem) &&
!(dataItem instanceof Date)
? dataItem.value
: dataItem
}
function isDataItemOption(dataItem) {
return isObject$b(dataItem) && !(dataItem instanceof Array)
}
function mappingToExists(existings, newCmptOptions, mode2) {
var isNormalMergeMode = mode2 === 'normalMerge'
var isReplaceMergeMode = mode2 === 'replaceMerge'
var isReplaceAllMode = mode2 === 'replaceAll'
existings = existings || []
newCmptOptions = (newCmptOptions || []).slice()
var existingIdIdxMap = createHashMap()
each$f(newCmptOptions, function (cmptOption, index2) {
if (!isObject$b(cmptOption)) {
newCmptOptions[index2] = null
return
}
})
var result = prepareResult(existings, existingIdIdxMap, mode2)
if (isNormalMergeMode || isReplaceMergeMode) {
mappingById(result, existings, existingIdIdxMap, newCmptOptions)
}
if (isNormalMergeMode) {
mappingByName(result, newCmptOptions)
}
if (isNormalMergeMode || isReplaceMergeMode) {
mappingByIndex(result, newCmptOptions, isReplaceMergeMode)
} else if (isReplaceAllMode) {
mappingInReplaceAllMode(result, newCmptOptions)
}
makeIdAndName(result)
return result
}
function prepareResult(existings, existingIdIdxMap, mode2) {
var result = []
if (mode2 === 'replaceAll') {
return result
}
for (var index2 = 0; index2 < existings.length; index2++) {
var existing = existings[index2]
if (existing && existing.id != null) {
existingIdIdxMap.set(existing.id, index2)
}
result.push({
existing:
mode2 === 'replaceMerge' || isComponentIdInternal(existing)
? null
: existing,
newOption: null,
keyInfo: null,
brandNew: null,
})
}
return result
}
function mappingById(result, existings, existingIdIdxMap, newCmptOptions) {
each$f(newCmptOptions, function (cmptOption, index2) {
if (!cmptOption || cmptOption.id == null) {
return
}
var optionId = makeComparableKey(cmptOption.id)
var existingIdx = existingIdIdxMap.get(optionId)
if (existingIdx != null) {
var resultItem = result[existingIdx]
assert(
!resultItem.newOption,
'Duplicated option on id "' + optionId + '".'
)
resultItem.newOption = cmptOption
resultItem.existing = existings[existingIdx]
newCmptOptions[index2] = null
}
})
}
function mappingByName(result, newCmptOptions) {
each$f(newCmptOptions, function (cmptOption, index2) {
if (!cmptOption || cmptOption.name == null) {
return
}
for (var i2 = 0; i2 < result.length; i2++) {
var existing = result[i2].existing
if (
!result[i2].newOption &&
existing &&
(existing.id == null || cmptOption.id == null) &&
!isComponentIdInternal(cmptOption) &&
!isComponentIdInternal(existing) &&
keyExistAndEqual('name', existing, cmptOption)
) {
result[i2].newOption = cmptOption
newCmptOptions[index2] = null
return
}
}
})
}
function mappingByIndex(result, newCmptOptions, brandNew) {
each$f(newCmptOptions, function (cmptOption) {
if (!cmptOption) {
return
}
var resultItem
var nextIdx = 0
while (
(resultItem = result[nextIdx]) &&
(resultItem.newOption ||
isComponentIdInternal(resultItem.existing) ||
(resultItem.existing &&
cmptOption.id != null &&
!keyExistAndEqual('id', cmptOption, resultItem.existing)))
) {
nextIdx++
}
if (resultItem) {
resultItem.newOption = cmptOption
resultItem.brandNew = brandNew
} else {
result.push({
newOption: cmptOption,
brandNew,
existing: null,
keyInfo: null,
})
}
nextIdx++
})
}
function mappingInReplaceAllMode(result, newCmptOptions) {
each$f(newCmptOptions, function (cmptOption) {
result.push({
newOption: cmptOption,
brandNew: true,
existing: null,
keyInfo: null,
})
})
}
function makeIdAndName(mapResult) {
var idMap = createHashMap()
each$f(mapResult, function (item2) {
var existing = item2.existing
existing && idMap.set(existing.id, item2)
})
each$f(mapResult, function (item2) {
var opt = item2.newOption
assert(
!opt ||
opt.id == null ||
!idMap.get(opt.id) ||
idMap.get(opt.id) === item2,
'id duplicates: ' + (opt && opt.id)
)
opt && opt.id != null && idMap.set(opt.id, item2)
!item2.keyInfo && (item2.keyInfo = {})
})
each$f(mapResult, function (item2, index2) {
var existing = item2.existing
var opt = item2.newOption
var keyInfo = item2.keyInfo
if (!isObject$b(opt)) {
return
}
keyInfo.name =
opt.name != null
? makeComparableKey(opt.name)
: existing
? existing.name
: DUMMY_COMPONENT_NAME_PREFIX + index2
if (existing) {
keyInfo.id = makeComparableKey(existing.id)
} else if (opt.id != null) {
keyInfo.id = makeComparableKey(opt.id)
} else {
var idNum = 0
do {
keyInfo.id = '\0' + keyInfo.name + '\0' + idNum++
} while (idMap.get(keyInfo.id))
}
idMap.set(keyInfo.id, item2)
})
}
function keyExistAndEqual(attr, obj1, obj2) {
var key1 = convertOptionIdName(obj1[attr], null)
var key2 = convertOptionIdName(obj2[attr], null)
return key1 != null && key2 != null && key1 === key2
}
function makeComparableKey(val2) {
return convertOptionIdName(val2, '')
}
function convertOptionIdName(idOrName, defaultValue) {
if (idOrName == null) {
return defaultValue
}
return isString$2(idOrName)
? idOrName
: isNumber$2(idOrName) || isStringSafe(idOrName)
? idOrName + ''
: defaultValue
}
function isNameSpecified(componentModel) {
var name2 = componentModel.name
return !!(name2 && name2.indexOf(DUMMY_COMPONENT_NAME_PREFIX))
}
function isComponentIdInternal(cmptOption) {
return (
cmptOption &&
cmptOption.id != null &&
makeComparableKey(cmptOption.id).indexOf(INTERNAL_COMPONENT_ID_PREFIX) === 0
)
}
function makeInternalComponentId(idSuffix) {
return INTERNAL_COMPONENT_ID_PREFIX + idSuffix
}
function setComponentTypeToKeyInfo(
mappingResult,
mainType,
componentModelCtor
) {
each$f(mappingResult, function (item2) {
var newOption = item2.newOption
if (isObject$b(newOption)) {
item2.keyInfo.mainType = mainType
item2.keyInfo.subType = determineSubType(
mainType,
newOption,
item2.existing,
componentModelCtor
)
}
})
}
function determineSubType(
mainType,
newCmptOption,
existComponent,
componentModelCtor
) {
var subType = newCmptOption.type
? newCmptOption.type
: existComponent
? existComponent.subType
: componentModelCtor.determineSubType(mainType, newCmptOption)
return subType
}
function compressBatches(batchA, batchB) {
var mapA = {}
var mapB = {}
makeMap(batchA || [], mapA)
makeMap(batchB || [], mapB, mapA)
return [mapToArray2(mapA), mapToArray2(mapB)]
function makeMap(sourceBatch, map2, otherMap) {
for (var i2 = 0, len2 = sourceBatch.length; i2 < len2; i2++) {
var seriesId = convertOptionIdName(sourceBatch[i2].seriesId, null)
if (seriesId == null) {
return
}
var dataIndices = normalizeToArray(sourceBatch[i2].dataIndex)
var otherDataIndices = otherMap && otherMap[seriesId]
for (var j2 = 0, lenj = dataIndices.length; j2 < lenj; j2++) {
var dataIndex = dataIndices[j2]
if (otherDataIndices && otherDataIndices[dataIndex]) {
otherDataIndices[dataIndex] = null
} else {
;(map2[seriesId] || (map2[seriesId] = {}))[dataIndex] = 1
}
}
}
}
function mapToArray2(map2, isData) {
var result = []
for (var i2 in map2) {
if (map2.hasOwnProperty(i2) && map2[i2] != null) {
if (isData) {
result.push(+i2)
} else {
var dataIndices = mapToArray2(map2[i2], true)
dataIndices.length &&
result.push({
seriesId: i2,
dataIndex: dataIndices,
})
}
}
}
return result
}
}
function queryDataIndex(data2, payload) {
if (payload.dataIndexInside != null) {
return payload.dataIndexInside
} else if (payload.dataIndex != null) {
return isArray$6(payload.dataIndex)
? map$1(payload.dataIndex, function (value2) {
return data2.indexOfRawIndex(value2)
})
: data2.indexOfRawIndex(payload.dataIndex)
} else if (payload.name != null) {
return isArray$6(payload.name)
? map$1(payload.name, function (value2) {
return data2.indexOfName(value2)
})
: data2.indexOfName(payload.name)
}
}
function makeInner() {
var key2 = '__ec_inner_' + innerUniqueIndex++
return function (hostObj) {
return hostObj[key2] || (hostObj[key2] = {})
}
}
var innerUniqueIndex = getRandomIdBase()
function parseFinder$1(ecModel, finderInput, opt) {
var _a2 = preParseFinder(finderInput, opt),
mainTypeSpecified = _a2.mainTypeSpecified,
queryOptionMap = _a2.queryOptionMap,
others = _a2.others
var result = others
var defaultMainType = opt ? opt.defaultMainType : null
if (!mainTypeSpecified && defaultMainType) {
queryOptionMap.set(defaultMainType, {})
}
queryOptionMap.each(function (queryOption, mainType) {
var queryResult = queryReferringComponents(ecModel, mainType, queryOption, {
useDefault: defaultMainType === mainType,
enableAll: opt && opt.enableAll != null ? opt.enableAll : true,
enableNone: opt && opt.enableNone != null ? opt.enableNone : true,
})
result[mainType + 'Models'] = queryResult.models
result[mainType + 'Model'] = queryResult.models[0]
})
return result
}
function preParseFinder(finderInput, opt) {
var finder
if (isString$2(finderInput)) {
var obj = {}
obj[finderInput + 'Index'] = 0
finder = obj
} else {
finder = finderInput
}
var queryOptionMap = createHashMap()
var others = {}
var mainTypeSpecified = false
each$f(finder, function (value2, key2) {
if (key2 === 'dataIndex' || key2 === 'dataIndexInside') {
others[key2] = value2
return
}
var parsedKey = key2.match(/^(\w+)(Index|Id|Name)$/) || []
var mainType = parsedKey[1]
var queryType = (parsedKey[2] || '').toLowerCase()
if (
!mainType ||
!queryType ||
(opt &&
opt.includeMainTypes &&
indexOf(opt.includeMainTypes, mainType) < 0)
) {
return
}
mainTypeSpecified = mainTypeSpecified || !!mainType
var queryOption =
queryOptionMap.get(mainType) || queryOptionMap.set(mainType, {})
queryOption[queryType] = value2
})
return {
mainTypeSpecified,
queryOptionMap,
others,
}
}
var SINGLE_REFERRING = {
useDefault: true,
enableAll: false,
enableNone: false,
}
var MULTIPLE_REFERRING = {
useDefault: false,
enableAll: true,
enableNone: true,
}
function queryReferringComponents(ecModel, mainType, userOption, opt) {
opt = opt || SINGLE_REFERRING
var indexOption = userOption.index
var idOption = userOption.id
var nameOption = userOption.name
var result = {
models: null,
specified: indexOption != null || idOption != null || nameOption != null,
}
if (!result.specified) {
var firstCmpt = void 0
result.models =
opt.useDefault && (firstCmpt = ecModel.getComponent(mainType))
? [firstCmpt]
: []
return result
}
if (indexOption === 'none' || indexOption === false) {
assert(
opt.enableNone,
'`"none"` or `false` is not a valid value on index option.'
)
result.models = []
return result
}
if (indexOption === 'all') {
assert(opt.enableAll, '`"all"` is not a valid value on index option.')
indexOption = idOption = nameOption = null
}
result.models = ecModel.queryComponents({
mainType,
index: indexOption,
id: idOption,
name: nameOption,
})
return result
}
function setAttribute(dom, key2, value2) {
dom.setAttribute ? dom.setAttribute(key2, value2) : (dom[key2] = value2)
}
function getAttribute(dom, key2) {
return dom.getAttribute ? dom.getAttribute(key2) : dom[key2]
}
function getTooltipRenderMode(renderModeOption) {
if (renderModeOption === 'auto') {
return env$1.domSupported ? 'html' : 'richText'
} else {
return renderModeOption || 'html'
}
}
function groupData(array4, getKey2) {
var buckets = createHashMap()
var keys3 = []
each$f(array4, function (item2) {
var key2 = getKey2(item2)
;(buckets.get(key2) || (keys3.push(key2), buckets.set(key2, []))).push(
item2
)
})
return {
keys: keys3,
buckets,
}
}
function interpolateRawValues(
data2,
precision,
sourceValue,
targetValue,
percent
) {
var isAutoPrecision = precision == null || precision === 'auto'
if (targetValue == null) {
return targetValue
}
if (isNumber$2(targetValue)) {
var value2 = interpolateNumber(sourceValue || 0, targetValue, percent)
return round$3(
value2,
isAutoPrecision
? Math.max(getPrecision(sourceValue || 0), getPrecision(targetValue))
: precision
)
} else if (isString$2(targetValue)) {
return percent < 1 ? sourceValue : targetValue
} else {
var interpolated = []
var leftArr = sourceValue
var rightArr = targetValue
var length_1 = Math.max(leftArr ? leftArr.length : 0, rightArr.length)
for (var i2 = 0; i2 < length_1; ++i2) {
var info = data2.getDimensionInfo(i2)
if (info && info.type === 'ordinal') {
interpolated[i2] = (percent < 1 && leftArr ? leftArr : rightArr)[i2]
} else {
var leftVal = leftArr && leftArr[i2] ? leftArr[i2] : 0
var rightVal = rightArr[i2]
var value2 = interpolateNumber(leftVal, rightVal, percent)
interpolated[i2] = round$3(
value2,
isAutoPrecision
? Math.max(getPrecision(leftVal), getPrecision(rightVal))
: precision
)
}
}
return interpolated
}
}
var TYPE_DELIMITER = '.'
var IS_CONTAINER = '___EC__COMPONENT__CONTAINER___'
var IS_EXTENDED_CLASS = '___EC__EXTENDED_CLASS___'
function parseClassType(componentType) {
var ret = {
main: '',
sub: '',
}
if (componentType) {
var typeArr = componentType.split(TYPE_DELIMITER)
ret.main = typeArr[0] || ''
ret.sub = typeArr[1] || ''
}
return ret
}
function checkClassType(componentType) {
assert(
/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(componentType),
'componentType "' + componentType + '" illegal'
)
}
function isExtendedClass(clz) {
return !!(clz && clz[IS_EXTENDED_CLASS])
}
function enableClassExtend(rootClz, mandatoryMethods) {
rootClz.$constructor = rootClz
rootClz.extend = function (proto2) {
var superClass = this
var ExtendedClass
if (isESClass(superClass)) {
ExtendedClass = (function (_super) {
__extends$2(class_1, _super)
function class_1() {
return _super.apply(this, arguments) || this
}
return class_1
})(superClass)
} else {
ExtendedClass = function () {
;(proto2.$constructor || superClass).apply(this, arguments)
}
inherits(ExtendedClass, this)
}
extend(ExtendedClass.prototype, proto2)
ExtendedClass[IS_EXTENDED_CLASS] = true
ExtendedClass.extend = this.extend
ExtendedClass.superCall = superCall
ExtendedClass.superApply = superApply
ExtendedClass.superClass = superClass
return ExtendedClass
}
}
function isESClass(fn2) {
return (
isFunction$4(fn2) && /^class\s/.test(Function.prototype.toString.call(fn2))
)
}
function mountExtend(SubClz, SupperClz) {
SubClz.extend = SupperClz.extend
}
var classBase = Math.round(Math.random() * 10)
function enableClassCheck(target2) {
var classAttr = ['__\0is_clz', classBase++].join('_')
target2.prototype[classAttr] = true
target2.isInstance = function (obj) {
return !!(obj && obj[classAttr])
}
}
function superCall(context2, methodName) {
var args = []
for (var _i = 2; _i < arguments.length; _i++) {
args[_i - 2] = arguments[_i]
}
return this.superClass.prototype[methodName].apply(context2, args)
}
function superApply(context2, methodName, args) {
return this.superClass.prototype[methodName].apply(context2, args)
}
function enableClassManagement(target2) {
var storage2 = {}
target2.registerClass = function (clz) {
var componentFullType = clz.type || clz.prototype.type
if (componentFullType) {
checkClassType(componentFullType)
clz.prototype.type = componentFullType
var componentTypeInfo = parseClassType(componentFullType)
if (!componentTypeInfo.sub) {
storage2[componentTypeInfo.main] = clz
} else if (componentTypeInfo.sub !== IS_CONTAINER) {
var container = makeContainer(componentTypeInfo)
container[componentTypeInfo.sub] = clz
}
}
return clz
}
target2.getClass = function (mainType, subType, throwWhenNotFound) {
var clz = storage2[mainType]
if (clz && clz[IS_CONTAINER]) {
clz = subType ? clz[subType] : null
}
if (throwWhenNotFound && !clz) {
throw new Error(
!subType
? mainType + '.type should be specified.'
: 'Component ' +
mainType +
'.' +
(subType || '') +
' is used but not imported.'
)
}
return clz
}
target2.getClassesByMainType = function (componentType) {
var componentTypeInfo = parseClassType(componentType)
var result = []
var obj = storage2[componentTypeInfo.main]
if (obj && obj[IS_CONTAINER]) {
each$f(obj, function (o2, type4) {
type4 !== IS_CONTAINER && result.push(o2)
})
} else {
result.push(obj)
}
return result
}
target2.hasClass = function (componentType) {
var componentTypeInfo = parseClassType(componentType)
return !!storage2[componentTypeInfo.main]
}
target2.getAllClassMainTypes = function () {
var types2 = []
each$f(storage2, function (obj, type4) {
types2.push(type4)
})
return types2
}
target2.hasSubTypes = function (componentType) {
var componentTypeInfo = parseClassType(componentType)
var obj = storage2[componentTypeInfo.main]
return obj && obj[IS_CONTAINER]
}
function makeContainer(componentTypeInfo) {
var container = storage2[componentTypeInfo.main]
if (!container || !container[IS_CONTAINER]) {
container = storage2[componentTypeInfo.main] = {}
container[IS_CONTAINER] = true
}
return container
}
}
function makeStyleMapper(properties, ignoreParent) {
for (var i2 = 0; i2 < properties.length; i2++) {
if (!properties[i2][1]) {
properties[i2][1] = properties[i2][0]
}
}
ignoreParent = ignoreParent || false
return function (model, excludes, includes3) {
var style2 = {}
for (var i3 = 0; i3 < properties.length; i3++) {
var propName = properties[i3][1]
if (
(excludes && indexOf(excludes, propName) >= 0) ||
(includes3 && indexOf(includes3, propName) < 0)
) {
continue
}
var val2 = model.getShallow(propName, ignoreParent)
if (val2 != null) {
style2[properties[i3][0]] = val2
}
}
return style2
}
}
var AREA_STYLE_KEY_MAP = [
['fill', 'color'],
['shadowBlur'],
['shadowOffsetX'],
['shadowOffsetY'],
['opacity'],
['shadowColor'],
]
var getAreaStyle = makeStyleMapper(AREA_STYLE_KEY_MAP)
var AreaStyleMixin = (function () {
function AreaStyleMixin2() {}
AreaStyleMixin2.prototype.getAreaStyle = function (excludes, includes3) {
return getAreaStyle(this, excludes, includes3)
}
return AreaStyleMixin2
})()
var globalImageCache = new LRU$1(50)
function findExistImage(newImageOrSrc) {
if (typeof newImageOrSrc === 'string') {
var cachedImgObj = globalImageCache.get(newImageOrSrc)
return cachedImgObj && cachedImgObj.image
} else {
return newImageOrSrc
}
}
function createOrUpdateImage(newImageOrSrc, image2, hostEl, onload, cbPayload) {
if (!newImageOrSrc) {
return image2
} else if (typeof newImageOrSrc === 'string') {
if ((image2 && image2.__zrImageSrc === newImageOrSrc) || !hostEl) {
return image2
}
var cachedImgObj = globalImageCache.get(newImageOrSrc)
var pendingWrap = { hostEl, cb: onload, cbPayload }
if (cachedImgObj) {
image2 = cachedImgObj.image
!isImageReady(image2) && cachedImgObj.pending.push(pendingWrap)
} else {
image2 = platformApi.loadImage(newImageOrSrc, imageOnLoad, imageOnLoad)
image2.__zrImageSrc = newImageOrSrc
globalImageCache.put(
newImageOrSrc,
(image2.__cachedImgObj = {
image: image2,
pending: [pendingWrap],
})
)
}
return image2
} else {
return newImageOrSrc
}
}
function imageOnLoad() {
var cachedImgObj = this.__cachedImgObj
this.onload = this.onerror = this.__cachedImgObj = null
for (var i2 = 0; i2 < cachedImgObj.pending.length; i2++) {
var pendingWrap = cachedImgObj.pending[i2]
var cb = pendingWrap.cb
cb && cb(this, pendingWrap.cbPayload)
pendingWrap.hostEl.dirty()
}
cachedImgObj.pending.length = 0
}
function isImageReady(image2) {
return image2 && image2.width && image2.height
}
var STYLE_REG = /\{([a-zA-Z0-9_]+)\|([^}]*)\}/g
function truncateText(text2, containerWidth, font2, ellipsis2, options2) {
if (!containerWidth) {
return ''
}
var textLines = (text2 + '').split('\n')
options2 = prepareTruncateOptions(containerWidth, font2, ellipsis2, options2)
for (var i2 = 0, len2 = textLines.length; i2 < len2; i2++) {
textLines[i2] = truncateSingleLine(textLines[i2], options2)
}
return textLines.join('\n')
}
function prepareTruncateOptions(containerWidth, font2, ellipsis2, options2) {
options2 = options2 || {}
var preparedOpts = extend({}, options2)
preparedOpts.font = font2
ellipsis2 = retrieve2(ellipsis2, '...')
preparedOpts.maxIterations = retrieve2(options2.maxIterations, 2)
var minChar = (preparedOpts.minChar = retrieve2(options2.minChar, 0))
preparedOpts.cnCharWidth = getWidth('\u56FD', font2)
var ascCharWidth = (preparedOpts.ascCharWidth = getWidth('a', font2))
preparedOpts.placeholder = retrieve2(options2.placeholder, '')
var contentWidth = (containerWidth = Math.max(0, containerWidth - 1))
for (var i2 = 0; i2 < minChar && contentWidth >= ascCharWidth; i2++) {
contentWidth -= ascCharWidth
}
var ellipsisWidth = getWidth(ellipsis2, font2)
if (ellipsisWidth > contentWidth) {
ellipsis2 = ''
ellipsisWidth = 0
}
contentWidth = containerWidth - ellipsisWidth
preparedOpts.ellipsis = ellipsis2
preparedOpts.ellipsisWidth = ellipsisWidth
preparedOpts.contentWidth = contentWidth
preparedOpts.containerWidth = containerWidth
return preparedOpts
}
function truncateSingleLine(textLine, options2) {
var containerWidth = options2.containerWidth
var font2 = options2.font
var contentWidth = options2.contentWidth
if (!containerWidth) {
return ''
}
var lineWidth = getWidth(textLine, font2)
if (lineWidth <= containerWidth) {
return textLine
}
for (var j2 = 0; ; j2++) {
if (lineWidth <= contentWidth || j2 >= options2.maxIterations) {
textLine += options2.ellipsis
break
}
var subLength =
j2 === 0
? estimateLength(
textLine,
contentWidth,
options2.ascCharWidth,
options2.cnCharWidth
)
: lineWidth > 0
? Math.floor((textLine.length * contentWidth) / lineWidth)
: 0
textLine = textLine.substr(0, subLength)
lineWidth = getWidth(textLine, font2)
}
if (textLine === '') {
textLine = options2.placeholder
}
return textLine
}
function estimateLength(text2, contentWidth, ascCharWidth, cnCharWidth) {
var width = 0
var i2 = 0
for (var len2 = text2.length; i2 < len2 && width < contentWidth; i2++) {
var charCode = text2.charCodeAt(i2)
width += 0 <= charCode && charCode <= 127 ? ascCharWidth : cnCharWidth
}
return i2
}
function parsePlainText(text2, style2) {
text2 != null && (text2 += '')
var overflow2 = style2.overflow
var padding = style2.padding
var font2 = style2.font
var truncate = overflow2 === 'truncate'
var calculatedLineHeight = getLineHeight(font2)
var lineHeight2 = retrieve2(style2.lineHeight, calculatedLineHeight)
var bgColorDrawn = !!style2.backgroundColor
var truncateLineOverflow = style2.lineOverflow === 'truncate'
var width = style2.width
var lines
if (width != null && (overflow2 === 'break' || overflow2 === 'breakAll')) {
lines = text2
? wrapText(text2, style2.font, width, overflow2 === 'breakAll', 0).lines
: []
} else {
lines = text2 ? text2.split('\n') : []
}
var contentHeight = lines.length * lineHeight2
var height = retrieve2(style2.height, contentHeight)
if (contentHeight > height && truncateLineOverflow) {
var lineCount = Math.floor(height / lineHeight2)
lines = lines.slice(0, lineCount)
}
if (text2 && truncate && width != null) {
var options2 = prepareTruncateOptions(width, font2, style2.ellipsis, {
minChar: style2.truncateMinChar,
placeholder: style2.placeholder,
})
for (var i2 = 0; i2 < lines.length; i2++) {
lines[i2] = truncateSingleLine(lines[i2], options2)
}
}
var outerHeight = height
var contentWidth = 0
for (var i2 = 0; i2 < lines.length; i2++) {
contentWidth = Math.max(getWidth(lines[i2], font2), contentWidth)
}
if (width == null) {
width = contentWidth
}
var outerWidth = contentWidth
if (padding) {
outerHeight += padding[0] + padding[2]
outerWidth += padding[1] + padding[3]
width += padding[1] + padding[3]
}
if (bgColorDrawn) {
outerWidth = width
}
return {
lines,
height,
outerWidth,
outerHeight,
lineHeight: lineHeight2,
calculatedLineHeight,
contentWidth,
contentHeight,
width,
}
}
var RichTextToken = (function () {
function RichTextToken2() {}
return RichTextToken2
})()
var RichTextLine = (function () {
function RichTextLine2(tokens) {
this.tokens = []
if (tokens) {
this.tokens = tokens
}
}
return RichTextLine2
})()
var RichTextContentBlock = (function () {
function RichTextContentBlock2() {
this.width = 0
this.height = 0
this.contentWidth = 0
this.contentHeight = 0
this.outerWidth = 0
this.outerHeight = 0
this.lines = []
}
return RichTextContentBlock2
})()
function parseRichText(text2, style2) {
var contentBlock = new RichTextContentBlock()
text2 != null && (text2 += '')
if (!text2) {
return contentBlock
}
var topWidth = style2.width
var topHeight = style2.height
var overflow2 = style2.overflow
var wrapInfo =
(overflow2 === 'break' || overflow2 === 'breakAll') && topWidth != null
? { width: topWidth, accumWidth: 0, breakAll: overflow2 === 'breakAll' }
: null
var lastIndex = (STYLE_REG.lastIndex = 0)
var result
while ((result = STYLE_REG.exec(text2)) != null) {
var matchedIndex = result.index
if (matchedIndex > lastIndex) {
pushTokens(
contentBlock,
text2.substring(lastIndex, matchedIndex),
style2,
wrapInfo
)
}
pushTokens(contentBlock, result[2], style2, wrapInfo, result[1])
lastIndex = STYLE_REG.lastIndex
}
if (lastIndex < text2.length) {
pushTokens(
contentBlock,
text2.substring(lastIndex, text2.length),
style2,
wrapInfo
)
}
var pendingList = []
var calculatedHeight = 0
var calculatedWidth = 0
var stlPadding = style2.padding
var truncate = overflow2 === 'truncate'
var truncateLine = style2.lineOverflow === 'truncate'
function finishLine(line2, lineWidth2, lineHeight3) {
line2.width = lineWidth2
line2.lineHeight = lineHeight3
calculatedHeight += lineHeight3
calculatedWidth = Math.max(calculatedWidth, lineWidth2)
}
outer: for (var i2 = 0; i2 < contentBlock.lines.length; i2++) {
var line = contentBlock.lines[i2]
var lineHeight2 = 0
var lineWidth = 0
for (var j2 = 0; j2 < line.tokens.length; j2++) {
var token = line.tokens[j2]
var tokenStyle = (token.styleName && style2.rich[token.styleName]) || {}
var textPadding = (token.textPadding = tokenStyle.padding)
var paddingH = textPadding ? textPadding[1] + textPadding[3] : 0
var font2 = (token.font = tokenStyle.font || style2.font)
token.contentHeight = getLineHeight(font2)
var tokenHeight = retrieve2(tokenStyle.height, token.contentHeight)
token.innerHeight = tokenHeight
textPadding && (tokenHeight += textPadding[0] + textPadding[2])
token.height = tokenHeight
token.lineHeight = retrieve3(
tokenStyle.lineHeight,
style2.lineHeight,
tokenHeight
)
token.align = (tokenStyle && tokenStyle.align) || style2.align
token.verticalAlign = (tokenStyle && tokenStyle.verticalAlign) || 'middle'
if (
truncateLine &&
topHeight != null &&
calculatedHeight + token.lineHeight > topHeight
) {
if (j2 > 0) {
line.tokens = line.tokens.slice(0, j2)
finishLine(line, lineWidth, lineHeight2)
contentBlock.lines = contentBlock.lines.slice(0, i2 + 1)
} else {
contentBlock.lines = contentBlock.lines.slice(0, i2)
}
break outer
}
var styleTokenWidth = tokenStyle.width
var tokenWidthNotSpecified =
styleTokenWidth == null || styleTokenWidth === 'auto'
if (
typeof styleTokenWidth === 'string' &&
styleTokenWidth.charAt(styleTokenWidth.length - 1) === '%'
) {
token.percentWidth = styleTokenWidth
pendingList.push(token)
token.contentWidth = getWidth(token.text, font2)
} else {
if (tokenWidthNotSpecified) {
var textBackgroundColor = tokenStyle.backgroundColor
var bgImg = textBackgroundColor && textBackgroundColor.image
if (bgImg) {
bgImg = findExistImage(bgImg)
if (isImageReady(bgImg)) {
token.width = Math.max(
token.width,
(bgImg.width * tokenHeight) / bgImg.height
)
}
}
}
var remainTruncWidth =
truncate && topWidth != null ? topWidth - lineWidth : null
if (remainTruncWidth != null && remainTruncWidth < token.width) {
if (!tokenWidthNotSpecified || remainTruncWidth < paddingH) {
token.text = ''
token.width = token.contentWidth = 0
} else {
token.text = truncateText(
token.text,
remainTruncWidth - paddingH,
font2,
style2.ellipsis,
{ minChar: style2.truncateMinChar }
)
token.width = token.contentWidth = getWidth(token.text, font2)
}
} else {
token.contentWidth = getWidth(token.text, font2)
}
}
token.width += paddingH
lineWidth += token.width
tokenStyle && (lineHeight2 = Math.max(lineHeight2, token.lineHeight))
}
finishLine(line, lineWidth, lineHeight2)
}
contentBlock.outerWidth = contentBlock.width = retrieve2(
topWidth,
calculatedWidth
)
contentBlock.outerHeight = contentBlock.height = retrieve2(
topHeight,
calculatedHeight
)
contentBlock.contentHeight = calculatedHeight
contentBlock.contentWidth = calculatedWidth
if (stlPadding) {
contentBlock.outerWidth += stlPadding[1] + stlPadding[3]
contentBlock.outerHeight += stlPadding[0] + stlPadding[2]
}
for (var i2 = 0; i2 < pendingList.length; i2++) {
var token = pendingList[i2]
var percentWidth = token.percentWidth
token.width = (parseInt(percentWidth, 10) / 100) * contentBlock.width
}
return contentBlock
}
function pushTokens(block, str, style2, wrapInfo, styleName) {
var isEmptyStr = str === ''
var tokenStyle = (styleName && style2.rich[styleName]) || {}
var lines = block.lines
var font2 = tokenStyle.font || style2.font
var newLine = false
var strLines
var linesWidths
if (wrapInfo) {
var tokenPadding = tokenStyle.padding
var tokenPaddingH = tokenPadding ? tokenPadding[1] + tokenPadding[3] : 0
if (tokenStyle.width != null && tokenStyle.width !== 'auto') {
var outerWidth_1 =
parsePercent$1(tokenStyle.width, wrapInfo.width) + tokenPaddingH
if (lines.length > 0) {
if (outerWidth_1 + wrapInfo.accumWidth > wrapInfo.width) {
strLines = str.split('\n')
newLine = true
}
}
wrapInfo.accumWidth = outerWidth_1
} else {
var res = wrapText(
str,
font2,
wrapInfo.width,
wrapInfo.breakAll,
wrapInfo.accumWidth
)
wrapInfo.accumWidth = res.accumWidth + tokenPaddingH
linesWidths = res.linesWidths
strLines = res.lines
}
} else {
strLines = str.split('\n')
}
for (var i2 = 0; i2 < strLines.length; i2++) {
var text2 = strLines[i2]
var token = new RichTextToken()
token.styleName = styleName
token.text = text2
token.isLineHolder = !text2 && !isEmptyStr
if (typeof tokenStyle.width === 'number') {
token.width = tokenStyle.width
} else {
token.width = linesWidths ? linesWidths[i2] : getWidth(text2, font2)
}
if (!i2 && !newLine) {
var tokens = (lines[lines.length - 1] || (lines[0] = new RichTextLine()))
.tokens
var tokensLen = tokens.length
tokensLen === 1 && tokens[0].isLineHolder
? (tokens[0] = token)
: (text2 || !tokensLen || isEmptyStr) && tokens.push(token)
} else {
lines.push(new RichTextLine([token]))
}
}
}
function isAlphabeticLetter(ch) {
var code2 = ch.charCodeAt(0)
return (
(code2 >= 32 && code2 <= 591) ||
(code2 >= 880 && code2 <= 4351) ||
(code2 >= 4608 && code2 <= 5119) ||
(code2 >= 7680 && code2 <= 8303)
)
}
var breakCharMap = reduce(
',&?/;] '.split(''),
function (obj, ch) {
obj[ch] = true
return obj
},
{}
)
function isWordBreakChar(ch) {
if (isAlphabeticLetter(ch)) {
if (breakCharMap[ch]) {
return true
}
return false
}
return true
}
function wrapText(text2, font2, lineWidth, isBreakAll, lastAccumWidth) {
var lines = []
var linesWidths = []
var line = ''
var currentWord = ''
var currentWordWidth = 0
var accumWidth = 0
for (var i2 = 0; i2 < text2.length; i2++) {
var ch = text2.charAt(i2)
if (ch === '\n') {
if (currentWord) {
line += currentWord
accumWidth += currentWordWidth
}
lines.push(line)
linesWidths.push(accumWidth)
line = ''
currentWord = ''
currentWordWidth = 0
accumWidth = 0
continue
}
var chWidth = getWidth(ch, font2)
var inWord = isBreakAll ? false : !isWordBreakChar(ch)
if (
!lines.length
? lastAccumWidth + accumWidth + chWidth > lineWidth
: accumWidth + chWidth > lineWidth
) {
if (!accumWidth) {
if (inWord) {
lines.push(currentWord)
linesWidths.push(currentWordWidth)
currentWord = ch
currentWordWidth = chWidth
} else {
lines.push(ch)
linesWidths.push(chWidth)
}
} else if (line || currentWord) {
if (inWord) {
if (!line) {
line = currentWord
currentWord = ''
currentWordWidth = 0
accumWidth = currentWordWidth
}
lines.push(line)
linesWidths.push(accumWidth - currentWordWidth)
currentWord += ch
currentWordWidth += chWidth
line = ''
accumWidth = currentWordWidth
} else {
if (currentWord) {
line += currentWord
currentWord = ''
currentWordWidth = 0
}
lines.push(line)
linesWidths.push(accumWidth)
line = ch
accumWidth = chWidth
}
}
continue
}
accumWidth += chWidth
if (inWord) {
currentWord += ch
currentWordWidth += chWidth
} else {
if (currentWord) {
line += currentWord
currentWord = ''
currentWordWidth = 0
}
line += ch
}
}
if (!lines.length && !line) {
line = text2
currentWord = ''
currentWordWidth = 0
}
if (currentWord) {
line += currentWord
}
if (line) {
lines.push(line)
linesWidths.push(accumWidth)
}
if (lines.length === 1) {
accumWidth += lastAccumWidth
}
return {
accumWidth,
lines,
linesWidths,
}
}
var STYLE_MAGIC_KEY = '__zr_style_' + Math.round(Math.random() * 10)
var DEFAULT_COMMON_STYLE = {
shadowBlur: 0,
shadowOffsetX: 0,
shadowOffsetY: 0,
shadowColor: '#000',
opacity: 1,
blend: 'source-over',
}
var DEFAULT_COMMON_ANIMATION_PROPS = {
style: {
shadowBlur: true,
shadowOffsetX: true,
shadowOffsetY: true,
shadowColor: true,
opacity: true,
},
}
DEFAULT_COMMON_STYLE[STYLE_MAGIC_KEY] = true
var PRIMARY_STATES_KEYS = ['z', 'z2', 'invisible']
var PRIMARY_STATES_KEYS_IN_HOVER_LAYER = ['invisible']
var Displayable = (function (_super) {
__extends$1(Displayable2, _super)
function Displayable2(props2) {
return _super.call(this, props2) || this
}
Displayable2.prototype._init = function (props2) {
var keysArr = keys$4(props2)
for (var i2 = 0; i2 < keysArr.length; i2++) {
var key2 = keysArr[i2]
if (key2 === 'style') {
this.useStyle(props2[key2])
} else {
_super.prototype.attrKV.call(this, key2, props2[key2])
}
}
if (!this.style) {
this.useStyle({})
}
}
Displayable2.prototype.beforeBrush = function () {}
Displayable2.prototype.afterBrush = function () {}
Displayable2.prototype.innerBeforeBrush = function () {}
Displayable2.prototype.innerAfterBrush = function () {}
Displayable2.prototype.shouldBePainted = function (
viewWidth,
viewHeight,
considerClipPath,
considerAncestors
) {
var m2 = this.transform
if (
this.ignore ||
this.invisible ||
this.style.opacity === 0 ||
(this.culling && isDisplayableCulled(this, viewWidth, viewHeight)) ||
(m2 && !m2[0] && !m2[3])
) {
return false
}
if (considerClipPath && this.__clipPaths) {
for (var i2 = 0; i2 < this.__clipPaths.length; ++i2) {
if (this.__clipPaths[i2].isZeroArea()) {
return false
}
}
}
if (considerAncestors && this.parent) {
var parent_1 = this.parent
while (parent_1) {
if (parent_1.ignore) {
return false
}
parent_1 = parent_1.parent
}
}
return true
}
Displayable2.prototype.contain = function (x2, y2) {
return this.rectContain(x2, y2)
}
Displayable2.prototype.traverse = function (cb, context2) {
cb.call(context2, this)
}
Displayable2.prototype.rectContain = function (x2, y2) {
var coord = this.transformCoordToLocal(x2, y2)
var rect = this.getBoundingRect()
return rect.contain(coord[0], coord[1])
}
Displayable2.prototype.getPaintRect = function () {
var rect = this._paintRect
if (!this._paintRect || this.__dirty) {
var transform3 = this.transform
var elRect = this.getBoundingRect()
var style2 = this.style
var shadowSize = style2.shadowBlur || 0
var shadowOffsetX = style2.shadowOffsetX || 0
var shadowOffsetY = style2.shadowOffsetY || 0
rect =
this._paintRect || (this._paintRect = new BoundingRect$1(0, 0, 0, 0))
if (transform3) {
BoundingRect$1.applyTransform(rect, elRect, transform3)
} else {
rect.copy(elRect)
}
if (shadowSize || shadowOffsetX || shadowOffsetY) {
rect.width += shadowSize * 2 + Math.abs(shadowOffsetX)
rect.height += shadowSize * 2 + Math.abs(shadowOffsetY)
rect.x = Math.min(rect.x, rect.x + shadowOffsetX - shadowSize)
rect.y = Math.min(rect.y, rect.y + shadowOffsetY - shadowSize)
}
var tolerance = this.dirtyRectTolerance
if (!rect.isZero()) {
rect.x = Math.floor(rect.x - tolerance)
rect.y = Math.floor(rect.y - tolerance)
rect.width = Math.ceil(rect.width + 1 + tolerance * 2)
rect.height = Math.ceil(rect.height + 1 + tolerance * 2)
}
}
return rect
}
Displayable2.prototype.setPrevPaintRect = function (paintRect) {
if (paintRect) {
this._prevPaintRect =
this._prevPaintRect || new BoundingRect$1(0, 0, 0, 0)
this._prevPaintRect.copy(paintRect)
} else {
this._prevPaintRect = null
}
}
Displayable2.prototype.getPrevPaintRect = function () {
return this._prevPaintRect
}
Displayable2.prototype.animateStyle = function (loop) {
return this.animate('style', loop)
}
Displayable2.prototype.updateDuringAnimation = function (targetKey) {
if (targetKey === 'style') {
this.dirtyStyle()
} else {
this.markRedraw()
}
}
Displayable2.prototype.attrKV = function (key2, value2) {
if (key2 !== 'style') {
_super.prototype.attrKV.call(this, key2, value2)
} else {
if (!this.style) {
this.useStyle(value2)
} else {
this.setStyle(value2)
}
}
}
Displayable2.prototype.setStyle = function (keyOrObj, value2) {
if (typeof keyOrObj === 'string') {
this.style[keyOrObj] = value2
} else {
extend(this.style, keyOrObj)
}
this.dirtyStyle()
return this
}
Displayable2.prototype.dirtyStyle = function (notRedraw) {
if (!notRedraw) {
this.markRedraw()
}
this.__dirty |= STYLE_CHANGED_BIT
if (this._rect) {
this._rect = null
}
}
Displayable2.prototype.dirty = function () {
this.dirtyStyle()
}
Displayable2.prototype.styleChanged = function () {
return !!(this.__dirty & STYLE_CHANGED_BIT)
}
Displayable2.prototype.styleUpdated = function () {
this.__dirty &= ~STYLE_CHANGED_BIT
}
Displayable2.prototype.createStyle = function (obj) {
return createObject(DEFAULT_COMMON_STYLE, obj)
}
Displayable2.prototype.useStyle = function (obj) {
if (!obj[STYLE_MAGIC_KEY]) {
obj = this.createStyle(obj)
}
if (this.__inHover) {
this.__hoverStyle = obj
} else {
this.style = obj
}
this.dirtyStyle()
}
Displayable2.prototype.isStyleObject = function (obj) {
return obj[STYLE_MAGIC_KEY]
}
Displayable2.prototype._innerSaveToNormal = function (toState) {
_super.prototype._innerSaveToNormal.call(this, toState)
var normalState = this._normalState
if (toState.style && !normalState.style) {
normalState.style = this._mergeStyle(this.createStyle(), this.style)
}
this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS)
}
Displayable2.prototype._applyStateObj = function (
stateName,
state2,
normalState,
keepCurrentStates,
transition,
animationCfg
) {
_super.prototype._applyStateObj.call(
this,
stateName,
state2,
normalState,
keepCurrentStates,
transition,
animationCfg
)
var needsRestoreToNormal = !(state2 && keepCurrentStates)
var targetStyle
if (state2 && state2.style) {
if (transition) {
if (keepCurrentStates) {
targetStyle = state2.style
} else {
targetStyle = this._mergeStyle(this.createStyle(), normalState.style)
this._mergeStyle(targetStyle, state2.style)
}
} else {
targetStyle = this._mergeStyle(
this.createStyle(),
keepCurrentStates ? this.style : normalState.style
)
this._mergeStyle(targetStyle, state2.style)
}
} else if (needsRestoreToNormal) {
targetStyle = normalState.style
}
if (targetStyle) {
if (transition) {
var sourceStyle = this.style
this.style = this.createStyle(needsRestoreToNormal ? {} : sourceStyle)
if (needsRestoreToNormal) {
var changedKeys = keys$4(sourceStyle)
for (var i2 = 0; i2 < changedKeys.length; i2++) {
var key2 = changedKeys[i2]
if (key2 in targetStyle) {
targetStyle[key2] = targetStyle[key2]
this.style[key2] = sourceStyle[key2]
}
}
}
var targetKeys = keys$4(targetStyle)
for (var i2 = 0; i2 < targetKeys.length; i2++) {
var key2 = targetKeys[i2]
this.style[key2] = this.style[key2]
}
this._transitionState(
stateName,
{
style: targetStyle,
},
animationCfg,
this.getAnimationStyleProps()
)
} else {
this.useStyle(targetStyle)
}
}
var statesKeys = this.__inHover
? PRIMARY_STATES_KEYS_IN_HOVER_LAYER
: PRIMARY_STATES_KEYS
for (var i2 = 0; i2 < statesKeys.length; i2++) {
var key2 = statesKeys[i2]
if (state2 && state2[key2] != null) {
this[key2] = state2[key2]
} else if (needsRestoreToNormal) {
if (normalState[key2] != null) {
this[key2] = normalState[key2]
}
}
}
}
Displayable2.prototype._mergeStates = function (states) {
var mergedState = _super.prototype._mergeStates.call(this, states)
var mergedStyle
for (var i2 = 0; i2 < states.length; i2++) {
var state2 = states[i2]
if (state2.style) {
mergedStyle = mergedStyle || {}
this._mergeStyle(mergedStyle, state2.style)
}
}
if (mergedStyle) {
mergedState.style = mergedStyle
}
return mergedState
}
Displayable2.prototype._mergeStyle = function (targetStyle, sourceStyle) {
extend(targetStyle, sourceStyle)
return targetStyle
}
Displayable2.prototype.getAnimationStyleProps = function () {
return DEFAULT_COMMON_ANIMATION_PROPS
}
Displayable2.initDefaultProps = (function () {
var dispProto = Displayable2.prototype
dispProto.type = 'displayable'
dispProto.invisible = false
dispProto.z = 0
dispProto.z2 = 0
dispProto.zlevel = 0
dispProto.culling = false
dispProto.cursor = 'pointer'
dispProto.rectHover = false
dispProto.incremental = false
dispProto._rect = null
dispProto.dirtyRectTolerance = 0
dispProto.__dirty = REDRAW_BIT | STYLE_CHANGED_BIT
})()
return Displayable2
})(Element$2)
var tmpRect = new BoundingRect$1(0, 0, 0, 0)
var viewRect = new BoundingRect$1(0, 0, 0, 0)
function isDisplayableCulled(el2, width, height) {
tmpRect.copy(el2.getBoundingRect())
if (el2.transform) {
tmpRect.applyTransform(el2.transform)
}
viewRect.width = width
viewRect.height = height
return !tmpRect.intersect(viewRect)
}
var Displayable$1 = Displayable
var mathMin$9 = Math.min
var mathMax$9 = Math.max
var mathSin$4 = Math.sin
var mathCos$4 = Math.cos
var PI2$8 = Math.PI * 2
var start = create$2()
var end = create$2()
var extremity = create$2()
function fromPoints(points2, min3, max3) {
if (points2.length === 0) {
return
}
var p2 = points2[0]
var left2 = p2[0]
var right2 = p2[0]
var top2 = p2[1]
var bottom2 = p2[1]
for (var i2 = 1; i2 < points2.length; i2++) {
p2 = points2[i2]
left2 = mathMin$9(left2, p2[0])
right2 = mathMax$9(right2, p2[0])
top2 = mathMin$9(top2, p2[1])
bottom2 = mathMax$9(bottom2, p2[1])
}
min3[0] = left2
min3[1] = top2
max3[0] = right2
max3[1] = bottom2
}
function fromLine(x0, y0, x1, y1, min3, max3) {
min3[0] = mathMin$9(x0, x1)
min3[1] = mathMin$9(y0, y1)
max3[0] = mathMax$9(x0, x1)
max3[1] = mathMax$9(y0, y1)
}
var xDim = []
var yDim = []
function fromCubic(x0, y0, x1, y1, x2, y2, x3, y3, min3, max3) {
var cubicExtrema$1 = cubicExtrema
var cubicAt$1 = cubicAt
var n2 = cubicExtrema$1(x0, x1, x2, x3, xDim)
min3[0] = Infinity
min3[1] = Infinity
max3[0] = -Infinity
max3[1] = -Infinity
for (var i2 = 0; i2 < n2; i2++) {
var x4 = cubicAt$1(x0, x1, x2, x3, xDim[i2])
min3[0] = mathMin$9(x4, min3[0])
max3[0] = mathMax$9(x4, max3[0])
}
n2 = cubicExtrema$1(y0, y1, y2, y3, yDim)
for (var i2 = 0; i2 < n2; i2++) {
var y4 = cubicAt$1(y0, y1, y2, y3, yDim[i2])
min3[1] = mathMin$9(y4, min3[1])
max3[1] = mathMax$9(y4, max3[1])
}
min3[0] = mathMin$9(x0, min3[0])
max3[0] = mathMax$9(x0, max3[0])
min3[0] = mathMin$9(x3, min3[0])
max3[0] = mathMax$9(x3, max3[0])
min3[1] = mathMin$9(y0, min3[1])
max3[1] = mathMax$9(y0, max3[1])
min3[1] = mathMin$9(y3, min3[1])
max3[1] = mathMax$9(y3, max3[1])
}
function fromQuadratic(x0, y0, x1, y1, x2, y2, min3, max3) {
var quadraticExtremum$1 = quadraticExtremum
var quadraticAt2 = quadraticAt$1
var tx = mathMax$9(mathMin$9(quadraticExtremum$1(x0, x1, x2), 1), 0)
var ty = mathMax$9(mathMin$9(quadraticExtremum$1(y0, y1, y2), 1), 0)
var x3 = quadraticAt2(x0, x1, x2, tx)
var y3 = quadraticAt2(y0, y1, y2, ty)
min3[0] = mathMin$9(x0, x2, x3)
min3[1] = mathMin$9(y0, y2, y3)
max3[0] = mathMax$9(x0, x2, x3)
max3[1] = mathMax$9(y0, y2, y3)
}
function fromArc(
x2,
y2,
rx,
ry,
startAngle,
endAngle,
anticlockwise,
min3,
max3
) {
var vec2Min = min$1
var vec2Max = max$2
var diff = Math.abs(startAngle - endAngle)
if (diff % PI2$8 < 1e-4 && diff > 1e-4) {
min3[0] = x2 - rx
min3[1] = y2 - ry
max3[0] = x2 + rx
max3[1] = y2 + ry
return
}
start[0] = mathCos$4(startAngle) * rx + x2
start[1] = mathSin$4(startAngle) * ry + y2
end[0] = mathCos$4(endAngle) * rx + x2
end[1] = mathSin$4(endAngle) * ry + y2
vec2Min(min3, start, end)
vec2Max(max3, start, end)
startAngle = startAngle % PI2$8
if (startAngle < 0) {
startAngle = startAngle + PI2$8
}
endAngle = endAngle % PI2$8
if (endAngle < 0) {
endAngle = endAngle + PI2$8
}
if (startAngle > endAngle && !anticlockwise) {
endAngle += PI2$8
} else if (startAngle < endAngle && anticlockwise) {
startAngle += PI2$8
}
if (anticlockwise) {
var tmp = endAngle
endAngle = startAngle
startAngle = tmp
}
for (var angle2 = 0; angle2 < endAngle; angle2 += Math.PI / 2) {
if (angle2 > startAngle) {
extremity[0] = mathCos$4(angle2) * rx + x2
extremity[1] = mathSin$4(angle2) * ry + y2
vec2Min(min3, extremity, min3)
vec2Max(max3, extremity, max3)
}
}
}
var CMD$4 = {
M: 1,
L: 2,
C: 3,
Q: 4,
A: 5,
Z: 6,
R: 7,
}
var tmpOutX = []
var tmpOutY = []
var min = []
var max$1 = []
var min2 = []
var max2 = []
var mathMin$8 = Math.min
var mathMax$8 = Math.max
var mathCos$3 = Math.cos
var mathSin$3 = Math.sin
var mathAbs$2 = Math.abs
var PI$8 = Math.PI
var PI2$7 = PI$8 * 2
var hasTypedArray = typeof Float32Array !== 'undefined'
var tmpAngles = []
function modPI2(radian) {
var n2 = Math.round((radian / PI$8) * 1e8) / 1e8
return (n2 % 2) * PI$8
}
function normalizeArcAngles(angles, anticlockwise) {
var newStartAngle = modPI2(angles[0])
if (newStartAngle < 0) {
newStartAngle += PI2$7
}
var delta = newStartAngle - angles[0]
var newEndAngle = angles[1]
newEndAngle += delta
if (!anticlockwise && newEndAngle - newStartAngle >= PI2$7) {
newEndAngle = newStartAngle + PI2$7
} else if (anticlockwise && newStartAngle - newEndAngle >= PI2$7) {
newEndAngle = newStartAngle - PI2$7
} else if (!anticlockwise && newStartAngle > newEndAngle) {
newEndAngle = newStartAngle + (PI2$7 - modPI2(newStartAngle - newEndAngle))
} else if (anticlockwise && newStartAngle < newEndAngle) {
newEndAngle = newStartAngle - (PI2$7 - modPI2(newEndAngle - newStartAngle))
}
angles[0] = newStartAngle
angles[1] = newEndAngle
}
var PathProxy = (function () {
function PathProxy2(notSaveData) {
this.dpr = 1
this._xi = 0
this._yi = 0
this._x0 = 0
this._y0 = 0
this._len = 0
if (notSaveData) {
this._saveData = false
}
if (this._saveData) {
this.data = []
}
}
PathProxy2.prototype.increaseVersion = function () {
this._version++
}
PathProxy2.prototype.getVersion = function () {
return this._version
}
PathProxy2.prototype.setScale = function (sx, sy, segmentIgnoreThreshold) {
segmentIgnoreThreshold = segmentIgnoreThreshold || 0
if (segmentIgnoreThreshold > 0) {
this._ux = mathAbs$2(segmentIgnoreThreshold / devicePixelRatio / sx) || 0
this._uy = mathAbs$2(segmentIgnoreThreshold / devicePixelRatio / sy) || 0
}
}
PathProxy2.prototype.setDPR = function (dpr2) {
this.dpr = dpr2
}
PathProxy2.prototype.setContext = function (ctx) {
this._ctx = ctx
}
PathProxy2.prototype.getContext = function () {
return this._ctx
}
PathProxy2.prototype.beginPath = function () {
this._ctx && this._ctx.beginPath()
this.reset()
return this
}
PathProxy2.prototype.reset = function () {
if (this._saveData) {
this._len = 0
}
if (this._pathSegLen) {
this._pathSegLen = null
this._pathLen = 0
}
this._version++
}
PathProxy2.prototype.moveTo = function (x2, y2) {
this._drawPendingPt()
this.addData(CMD$4.M, x2, y2)
this._ctx && this._ctx.moveTo(x2, y2)
this._x0 = x2
this._y0 = y2
this._xi = x2
this._yi = y2
return this
}
PathProxy2.prototype.lineTo = function (x2, y2) {
var dx = mathAbs$2(x2 - this._xi)
var dy = mathAbs$2(y2 - this._yi)
var exceedUnit = dx > this._ux || dy > this._uy
this.addData(CMD$4.L, x2, y2)
if (this._ctx && exceedUnit) {
this._ctx.lineTo(x2, y2)
}
if (exceedUnit) {
this._xi = x2
this._yi = y2
this._pendingPtDist = 0
} else {
var d22 = dx * dx + dy * dy
if (d22 > this._pendingPtDist) {
this._pendingPtX = x2
this._pendingPtY = y2
this._pendingPtDist = d22
}
}
return this
}
PathProxy2.prototype.bezierCurveTo = function (x1, y1, x2, y2, x3, y3) {
this._drawPendingPt()
this.addData(CMD$4.C, x1, y1, x2, y2, x3, y3)
if (this._ctx) {
this._ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3)
}
this._xi = x3
this._yi = y3
return this
}
PathProxy2.prototype.quadraticCurveTo = function (x1, y1, x2, y2) {
this._drawPendingPt()
this.addData(CMD$4.Q, x1, y1, x2, y2)
if (this._ctx) {
this._ctx.quadraticCurveTo(x1, y1, x2, y2)
}
this._xi = x2
this._yi = y2
return this
}
PathProxy2.prototype.arc = function (
cx,
cy,
r2,
startAngle,
endAngle,
anticlockwise
) {
this._drawPendingPt()
tmpAngles[0] = startAngle
tmpAngles[1] = endAngle
normalizeArcAngles(tmpAngles, anticlockwise)
startAngle = tmpAngles[0]
endAngle = tmpAngles[1]
var delta = endAngle - startAngle
this.addData(
CMD$4.A,
cx,
cy,
r2,
r2,
startAngle,
delta,
0,
anticlockwise ? 0 : 1
)
this._ctx && this._ctx.arc(cx, cy, r2, startAngle, endAngle, anticlockwise)
this._xi = mathCos$3(endAngle) * r2 + cx
this._yi = mathSin$3(endAngle) * r2 + cy
return this
}
PathProxy2.prototype.arcTo = function (x1, y1, x2, y2, radius) {
this._drawPendingPt()
if (this._ctx) {
this._ctx.arcTo(x1, y1, x2, y2, radius)
}
return this
}
PathProxy2.prototype.rect = function (x2, y2, w2, h2) {
this._drawPendingPt()
this._ctx && this._ctx.rect(x2, y2, w2, h2)
this.addData(CMD$4.R, x2, y2, w2, h2)
return this
}
PathProxy2.prototype.closePath = function () {
this._drawPendingPt()
this.addData(CMD$4.Z)
var ctx = this._ctx
var x0 = this._x0
var y0 = this._y0
if (ctx) {
ctx.closePath()
}
this._xi = x0
this._yi = y0
return this
}
PathProxy2.prototype.fill = function (ctx) {
ctx && ctx.fill()
this.toStatic()
}
PathProxy2.prototype.stroke = function (ctx) {
ctx && ctx.stroke()
this.toStatic()
}
PathProxy2.prototype.len = function () {
return this._len
}
PathProxy2.prototype.setData = function (data2) {
var len2 = data2.length
if (!(this.data && this.data.length === len2) && hasTypedArray) {
this.data = new Float32Array(len2)
}
for (var i2 = 0; i2 < len2; i2++) {
this.data[i2] = data2[i2]
}
this._len = len2
}
PathProxy2.prototype.appendPath = function (path) {
if (!(path instanceof Array)) {
path = [path]
}
var len2 = path.length
var appendSize = 0
var offset2 = this._len
for (var i2 = 0; i2 < len2; i2++) {
appendSize += path[i2].len()
}
if (hasTypedArray && this.data instanceof Float32Array) {
this.data = new Float32Array(offset2 + appendSize)
}
for (var i2 = 0; i2 < len2; i2++) {
var appendPathData = path[i2].data
for (var k2 = 0; k2 < appendPathData.length; k2++) {
this.data[offset2++] = appendPathData[k2]
}
}
this._len = offset2
}
PathProxy2.prototype.addData = function (
cmd,
a2,
b2,
c2,
d3,
e2,
f2,
g2,
h2
) {
if (!this._saveData) {
return
}
var data2 = this.data
if (this._len + arguments.length > data2.length) {
this._expandData()
data2 = this.data
}
for (var i2 = 0; i2 < arguments.length; i2++) {
data2[this._len++] = arguments[i2]
}
}
PathProxy2.prototype._drawPendingPt = function () {
if (this._pendingPtDist > 0) {
this._ctx && this._ctx.lineTo(this._pendingPtX, this._pendingPtY)
this._pendingPtDist = 0
}
}
PathProxy2.prototype._expandData = function () {
if (!(this.data instanceof Array)) {
var newData = []
for (var i2 = 0; i2 < this._len; i2++) {
newData[i2] = this.data[i2]
}
this.data = newData
}
}
PathProxy2.prototype.toStatic = function () {
if (!this._saveData) {
return
}
this._drawPendingPt()
var data2 = this.data
if (data2 instanceof Array) {
data2.length = this._len
if (hasTypedArray && this._len > 11) {
this.data = new Float32Array(data2)
}
}
}
PathProxy2.prototype.getBoundingRect = function () {
min[0] = min[1] = min2[0] = min2[1] = Number.MAX_VALUE
max$1[0] = max$1[1] = max2[0] = max2[1] = -Number.MAX_VALUE
var data2 = this.data
var xi = 0
var yi = 0
var x0 = 0
var y0 = 0
var i2
for (i2 = 0; i2 < this._len; ) {
var cmd = data2[i2++]
var isFirst = i2 === 1
if (isFirst) {
xi = data2[i2]
yi = data2[i2 + 1]
x0 = xi
y0 = yi
}
switch (cmd) {
case CMD$4.M:
xi = x0 = data2[i2++]
yi = y0 = data2[i2++]
min2[0] = x0
min2[1] = y0
max2[0] = x0
max2[1] = y0
break
case CMD$4.L:
fromLine(xi, yi, data2[i2], data2[i2 + 1], min2, max2)
xi = data2[i2++]
yi = data2[i2++]
break
case CMD$4.C:
fromCubic(
xi,
yi,
data2[i2++],
data2[i2++],
data2[i2++],
data2[i2++],
data2[i2],
data2[i2 + 1],
min2,
max2
)
xi = data2[i2++]
yi = data2[i2++]
break
case CMD$4.Q:
fromQuadratic(
xi,
yi,
data2[i2++],
data2[i2++],
data2[i2],
data2[i2 + 1],
min2,
max2
)
xi = data2[i2++]
yi = data2[i2++]
break
case CMD$4.A:
var cx = data2[i2++]
var cy = data2[i2++]
var rx = data2[i2++]
var ry = data2[i2++]
var startAngle = data2[i2++]
var endAngle = data2[i2++] + startAngle
i2 += 1
var anticlockwise = !data2[i2++]
if (isFirst) {
x0 = mathCos$3(startAngle) * rx + cx
y0 = mathSin$3(startAngle) * ry + cy
}
fromArc(
cx,
cy,
rx,
ry,
startAngle,
endAngle,
anticlockwise,
min2,
max2
)
xi = mathCos$3(endAngle) * rx + cx
yi = mathSin$3(endAngle) * ry + cy
break
case CMD$4.R:
x0 = xi = data2[i2++]
y0 = yi = data2[i2++]
var width = data2[i2++]
var height = data2[i2++]
fromLine(x0, y0, x0 + width, y0 + height, min2, max2)
break
case CMD$4.Z:
xi = x0
yi = y0
break
}
min$1(min, min, min2)
max$2(max$1, max$1, max2)
}
if (i2 === 0) {
min[0] = min[1] = max$1[0] = max$1[1] = 0
}
return new BoundingRect$1(
min[0],
min[1],
max$1[0] - min[0],
max$1[1] - min[1]
)
}
PathProxy2.prototype._calculateLength = function () {
var data2 = this.data
var len2 = this._len
var ux = this._ux
var uy = this._uy
var xi = 0
var yi = 0
var x0 = 0
var y0 = 0
if (!this._pathSegLen) {
this._pathSegLen = []
}
var pathSegLen = this._pathSegLen
var pathTotalLen = 0
var segCount = 0
for (var i2 = 0; i2 < len2; ) {
var cmd = data2[i2++]
var isFirst = i2 === 1
if (isFirst) {
xi = data2[i2]
yi = data2[i2 + 1]
x0 = xi
y0 = yi
}
var l2 = -1
switch (cmd) {
case CMD$4.M:
xi = x0 = data2[i2++]
yi = y0 = data2[i2++]
break
case CMD$4.L: {
var x2 = data2[i2++]
var y2 = data2[i2++]
var dx = x2 - xi
var dy = y2 - yi
if (mathAbs$2(dx) > ux || mathAbs$2(dy) > uy || i2 === len2 - 1) {
l2 = Math.sqrt(dx * dx + dy * dy)
xi = x2
yi = y2
}
break
}
case CMD$4.C: {
var x1 = data2[i2++]
var y1 = data2[i2++]
var x2 = data2[i2++]
var y2 = data2[i2++]
var x3 = data2[i2++]
var y3 = data2[i2++]
l2 = cubicLength(xi, yi, x1, y1, x2, y2, x3, y3, 10)
xi = x3
yi = y3
break
}
case CMD$4.Q: {
var x1 = data2[i2++]
var y1 = data2[i2++]
var x2 = data2[i2++]
var y2 = data2[i2++]
l2 = quadraticLength(xi, yi, x1, y1, x2, y2, 10)
xi = x2
yi = y2
break
}
case CMD$4.A:
var cx = data2[i2++]
var cy = data2[i2++]
var rx = data2[i2++]
var ry = data2[i2++]
var startAngle = data2[i2++]
var delta = data2[i2++]
var endAngle = delta + startAngle
i2 += 1
!data2[i2++]
if (isFirst) {
x0 = mathCos$3(startAngle) * rx + cx
y0 = mathSin$3(startAngle) * ry + cy
}
l2 = mathMax$8(rx, ry) * mathMin$8(PI2$7, Math.abs(delta))
xi = mathCos$3(endAngle) * rx + cx
yi = mathSin$3(endAngle) * ry + cy
break
case CMD$4.R: {
x0 = xi = data2[i2++]
y0 = yi = data2[i2++]
var width = data2[i2++]
var height = data2[i2++]
l2 = width * 2 + height * 2
break
}
case CMD$4.Z: {
var dx = x0 - xi
var dy = y0 - yi
l2 = Math.sqrt(dx * dx + dy * dy)
xi = x0
yi = y0
break
}
}
if (l2 >= 0) {
pathSegLen[segCount++] = l2
pathTotalLen += l2
}
}
this._pathLen = pathTotalLen
return pathTotalLen
}
PathProxy2.prototype.rebuildPath = function (ctx, percent) {
var d3 = this.data
var ux = this._ux
var uy = this._uy
var len2 = this._len
var x0
var y0
var xi
var yi
var x2
var y2
var drawPart = percent < 1
var pathSegLen
var pathTotalLen
var accumLength = 0
var segCount = 0
var displayedLength
var pendingPtDist = 0
var pendingPtX
var pendingPtY
if (drawPart) {
if (!this._pathSegLen) {
this._calculateLength()
}
pathSegLen = this._pathSegLen
pathTotalLen = this._pathLen
displayedLength = percent * pathTotalLen
if (!displayedLength) {
return
}
}
lo: for (var i2 = 0; i2 < len2; ) {
var cmd = d3[i2++]
var isFirst = i2 === 1
if (isFirst) {
xi = d3[i2]
yi = d3[i2 + 1]
x0 = xi
y0 = yi
}
if (cmd !== CMD$4.L && pendingPtDist > 0) {
ctx.lineTo(pendingPtX, pendingPtY)
pendingPtDist = 0
}
switch (cmd) {
case CMD$4.M:
x0 = xi = d3[i2++]
y0 = yi = d3[i2++]
ctx.moveTo(xi, yi)
break
case CMD$4.L: {
x2 = d3[i2++]
y2 = d3[i2++]
var dx = mathAbs$2(x2 - xi)
var dy = mathAbs$2(y2 - yi)
if (dx > ux || dy > uy) {
if (drawPart) {
var l2 = pathSegLen[segCount++]
if (accumLength + l2 > displayedLength) {
var t3 = (displayedLength - accumLength) / l2
ctx.lineTo(xi * (1 - t3) + x2 * t3, yi * (1 - t3) + y2 * t3)
break lo
}
accumLength += l2
}
ctx.lineTo(x2, y2)
xi = x2
yi = y2
pendingPtDist = 0
} else {
var d22 = dx * dx + dy * dy
if (d22 > pendingPtDist) {
pendingPtX = x2
pendingPtY = y2
pendingPtDist = d22
}
}
break
}
case CMD$4.C: {
var x1 = d3[i2++]
var y1 = d3[i2++]
var x22 = d3[i2++]
var y22 = d3[i2++]
var x3 = d3[i2++]
var y3 = d3[i2++]
if (drawPart) {
var l2 = pathSegLen[segCount++]
if (accumLength + l2 > displayedLength) {
var t3 = (displayedLength - accumLength) / l2
cubicSubdivide(xi, x1, x22, x3, t3, tmpOutX)
cubicSubdivide(yi, y1, y22, y3, t3, tmpOutY)
ctx.bezierCurveTo(
tmpOutX[1],
tmpOutY[1],
tmpOutX[2],
tmpOutY[2],
tmpOutX[3],
tmpOutY[3]
)
break lo
}
accumLength += l2
}
ctx.bezierCurveTo(x1, y1, x22, y22, x3, y3)
xi = x3
yi = y3
break
}
case CMD$4.Q: {
var x1 = d3[i2++]
var y1 = d3[i2++]
var x22 = d3[i2++]
var y22 = d3[i2++]
if (drawPart) {
var l2 = pathSegLen[segCount++]
if (accumLength + l2 > displayedLength) {
var t3 = (displayedLength - accumLength) / l2
quadraticSubdivide(xi, x1, x22, t3, tmpOutX)
quadraticSubdivide(yi, y1, y22, t3, tmpOutY)
ctx.quadraticCurveTo(
tmpOutX[1],
tmpOutY[1],
tmpOutX[2],
tmpOutY[2]
)
break lo
}
accumLength += l2
}
ctx.quadraticCurveTo(x1, y1, x22, y22)
xi = x22
yi = y22
break
}
case CMD$4.A:
var cx = d3[i2++]
var cy = d3[i2++]
var rx = d3[i2++]
var ry = d3[i2++]
var startAngle = d3[i2++]
var delta = d3[i2++]
var psi = d3[i2++]
var anticlockwise = !d3[i2++]
var r2 = rx > ry ? rx : ry
var isEllipse = mathAbs$2(rx - ry) > 1e-3
var endAngle = startAngle + delta
var breakBuild = false
if (drawPart) {
var l2 = pathSegLen[segCount++]
if (accumLength + l2 > displayedLength) {
endAngle =
startAngle + (delta * (displayedLength - accumLength)) / l2
breakBuild = true
}
accumLength += l2
}
if (isEllipse && ctx.ellipse) {
ctx.ellipse(
cx,
cy,
rx,
ry,
psi,
startAngle,
endAngle,
anticlockwise
)
} else {
ctx.arc(cx, cy, r2, startAngle, endAngle, anticlockwise)
}
if (breakBuild) {
break lo
}
if (isFirst) {
x0 = mathCos$3(startAngle) * rx + cx
y0 = mathSin$3(startAngle) * ry + cy
}
xi = mathCos$3(endAngle) * rx + cx
yi = mathSin$3(endAngle) * ry + cy
break
case CMD$4.R:
x0 = xi = d3[i2]
y0 = yi = d3[i2 + 1]
x2 = d3[i2++]
y2 = d3[i2++]
var width = d3[i2++]
var height = d3[i2++]
if (drawPart) {
var l2 = pathSegLen[segCount++]
if (accumLength + l2 > displayedLength) {
var d_1 = displayedLength - accumLength
ctx.moveTo(x2, y2)
ctx.lineTo(x2 + mathMin$8(d_1, width), y2)
d_1 -= width
if (d_1 > 0) {
ctx.lineTo(x2 + width, y2 + mathMin$8(d_1, height))
}
d_1 -= height
if (d_1 > 0) {
ctx.lineTo(x2 + mathMax$8(width - d_1, 0), y2 + height)
}
d_1 -= width
if (d_1 > 0) {
ctx.lineTo(x2, y2 + mathMax$8(height - d_1, 0))
}
break lo
}
accumLength += l2
}
ctx.rect(x2, y2, width, height)
break
case CMD$4.Z:
if (drawPart) {
var l2 = pathSegLen[segCount++]
if (accumLength + l2 > displayedLength) {
var t3 = (displayedLength - accumLength) / l2
ctx.lineTo(xi * (1 - t3) + x0 * t3, yi * (1 - t3) + y0 * t3)
break lo
}
accumLength += l2
}
ctx.closePath()
xi = x0
yi = y0
}
}
}
PathProxy2.prototype.clone = function () {
var newProxy = new PathProxy2()
var data2 = this.data
newProxy.data = data2.slice
? data2.slice()
: Array.prototype.slice.call(data2)
newProxy._len = this._len
return newProxy
}
PathProxy2.CMD = CMD$4
PathProxy2.initDefaultProps = (function () {
var proto2 = PathProxy2.prototype
proto2._saveData = true
proto2._ux = 0
proto2._uy = 0
proto2._pendingPtDist = 0
proto2._version = 0
})()
return PathProxy2
})()
var PathProxy$1 = PathProxy
function containStroke$4(x0, y0, x1, y1, lineWidth, x2, y2) {
if (lineWidth === 0) {
return false
}
var _l = lineWidth
var _a2 = 0
var _b2 = x0
if (
(y2 > y0 + _l && y2 > y1 + _l) ||
(y2 < y0 - _l && y2 < y1 - _l) ||
(x2 > x0 + _l && x2 > x1 + _l) ||
(x2 < x0 - _l && x2 < x1 - _l)
) {
return false
}
if (x0 !== x1) {
_a2 = (y0 - y1) / (x0 - x1)
_b2 = (x0 * y1 - x1 * y0) / (x0 - x1)
} else {
return Math.abs(x2 - x0) <= _l / 2
}
var tmp = _a2 * x2 - y2 + _b2
var _s = (tmp * tmp) / (_a2 * _a2 + 1)
return _s <= ((_l / 2) * _l) / 2
}
function containStroke$3(x0, y0, x1, y1, x2, y2, x3, y3, lineWidth, x4, y4) {
if (lineWidth === 0) {
return false
}
var _l = lineWidth
if (
(y4 > y0 + _l && y4 > y1 + _l && y4 > y2 + _l && y4 > y3 + _l) ||
(y4 < y0 - _l && y4 < y1 - _l && y4 < y2 - _l && y4 < y3 - _l) ||
(x4 > x0 + _l && x4 > x1 + _l && x4 > x2 + _l && x4 > x3 + _l) ||
(x4 < x0 - _l && x4 < x1 - _l && x4 < x2 - _l && x4 < x3 - _l)
) {
return false
}
var d3 = cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x4, y4, null)
return d3 <= _l / 2
}
function containStroke$2(x0, y0, x1, y1, x2, y2, lineWidth, x3, y3) {
if (lineWidth === 0) {
return false
}
var _l = lineWidth
if (
(y3 > y0 + _l && y3 > y1 + _l && y3 > y2 + _l) ||
(y3 < y0 - _l && y3 < y1 - _l && y3 < y2 - _l) ||
(x3 > x0 + _l && x3 > x1 + _l && x3 > x2 + _l) ||
(x3 < x0 - _l && x3 < x1 - _l && x3 < x2 - _l)
) {
return false
}
var d3 = quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, null)
return d3 <= _l / 2
}
var PI2$6 = Math.PI * 2
function normalizeRadian(angle2) {
angle2 %= PI2$6
if (angle2 < 0) {
angle2 += PI2$6
}
return angle2
}
var PI2$5 = Math.PI * 2
function containStroke$1(
cx,
cy,
r2,
startAngle,
endAngle,
anticlockwise,
lineWidth,
x2,
y2
) {
if (lineWidth === 0) {
return false
}
var _l = lineWidth
x2 -= cx
y2 -= cy
var d3 = Math.sqrt(x2 * x2 + y2 * y2)
if (d3 - _l > r2 || d3 + _l < r2) {
return false
}
if (Math.abs(startAngle - endAngle) % PI2$5 < 1e-4) {
return true
}
if (anticlockwise) {
var tmp = startAngle
startAngle = normalizeRadian(endAngle)
endAngle = normalizeRadian(tmp)
} else {
startAngle = normalizeRadian(startAngle)
endAngle = normalizeRadian(endAngle)
}
if (startAngle > endAngle) {
endAngle += PI2$5
}
var angle2 = Math.atan2(y2, x2)
if (angle2 < 0) {
angle2 += PI2$5
}
return (
(angle2 >= startAngle && angle2 <= endAngle) ||
(angle2 + PI2$5 >= startAngle && angle2 + PI2$5 <= endAngle)
)
}
function windingLine(x0, y0, x1, y1, x2, y2) {
if ((y2 > y0 && y2 > y1) || (y2 < y0 && y2 < y1)) {
return 0
}
if (y1 === y0) {
return 0
}
var t3 = (y2 - y0) / (y1 - y0)
var dir3 = y1 < y0 ? 1 : -1
if (t3 === 1 || t3 === 0) {
dir3 = y1 < y0 ? 0.5 : -0.5
}
var x_ = t3 * (x1 - x0) + x0
return x_ === x2 ? Infinity : x_ > x2 ? dir3 : 0
}
var CMD$3 = PathProxy$1.CMD
var PI2$4 = Math.PI * 2
var EPSILON$1 = 1e-4
function isAroundEqual$1(a2, b2) {
return Math.abs(a2 - b2) < EPSILON$1
}
var roots = [-1, -1, -1]
var extrema = [-1, -1]
function swapExtrema() {
var tmp = extrema[0]
extrema[0] = extrema[1]
extrema[1] = tmp
}
function windingCubic(x0, y0, x1, y1, x2, y2, x3, y3, x4, y4) {
if (
(y4 > y0 && y4 > y1 && y4 > y2 && y4 > y3) ||
(y4 < y0 && y4 < y1 && y4 < y2 && y4 < y3)
) {
return 0
}
var nRoots = cubicRootAt(y0, y1, y2, y3, y4, roots)
if (nRoots === 0) {
return 0
} else {
var w2 = 0
var nExtrema = -1
var y0_ = void 0
var y1_ = void 0
for (var i2 = 0; i2 < nRoots; i2++) {
var t3 = roots[i2]
var unit = t3 === 0 || t3 === 1 ? 0.5 : 1
var x_ = cubicAt(x0, x1, x2, x3, t3)
if (x_ < x4) {
continue
}
if (nExtrema < 0) {
nExtrema = cubicExtrema(y0, y1, y2, y3, extrema)
if (extrema[1] < extrema[0] && nExtrema > 1) {
swapExtrema()
}
y0_ = cubicAt(y0, y1, y2, y3, extrema[0])
if (nExtrema > 1) {
y1_ = cubicAt(y0, y1, y2, y3, extrema[1])
}
}
if (nExtrema === 2) {
if (t3 < extrema[0]) {
w2 += y0_ < y0 ? unit : -unit
} else if (t3 < extrema[1]) {
w2 += y1_ < y0_ ? unit : -unit
} else {
w2 += y3 < y1_ ? unit : -unit
}
} else {
if (t3 < extrema[0]) {
w2 += y0_ < y0 ? unit : -unit
} else {
w2 += y3 < y0_ ? unit : -unit
}
}
}
return w2
}
}
function windingQuadratic(x0, y0, x1, y1, x2, y2, x3, y3) {
if ((y3 > y0 && y3 > y1 && y3 > y2) || (y3 < y0 && y3 < y1 && y3 < y2)) {
return 0
}
var nRoots = quadraticRootAt(y0, y1, y2, y3, roots)
if (nRoots === 0) {
return 0
} else {
var t3 = quadraticExtremum(y0, y1, y2)
if (t3 >= 0 && t3 <= 1) {
var w2 = 0
var y_ = quadraticAt$1(y0, y1, y2, t3)
for (var i2 = 0; i2 < nRoots; i2++) {
var unit = roots[i2] === 0 || roots[i2] === 1 ? 0.5 : 1
var x_ = quadraticAt$1(x0, x1, x2, roots[i2])
if (x_ < x3) {
continue
}
if (roots[i2] < t3) {
w2 += y_ < y0 ? unit : -unit
} else {
w2 += y2 < y_ ? unit : -unit
}
}
return w2
} else {
var unit = roots[0] === 0 || roots[0] === 1 ? 0.5 : 1
var x_ = quadraticAt$1(x0, x1, x2, roots[0])
if (x_ < x3) {
return 0
}
return y2 < y0 ? unit : -unit
}
}
}
function windingArc(cx, cy, r2, startAngle, endAngle, anticlockwise, x2, y2) {
y2 -= cy
if (y2 > r2 || y2 < -r2) {
return 0
}
var tmp = Math.sqrt(r2 * r2 - y2 * y2)
roots[0] = -tmp
roots[1] = tmp
var dTheta = Math.abs(startAngle - endAngle)
if (dTheta < 1e-4) {
return 0
}
if (dTheta >= PI2$4 - 1e-4) {
startAngle = 0
endAngle = PI2$4
var dir3 = anticlockwise ? 1 : -1
if (x2 >= roots[0] + cx && x2 <= roots[1] + cx) {
return dir3
} else {
return 0
}
}
if (startAngle > endAngle) {
var tmp_1 = startAngle
startAngle = endAngle
endAngle = tmp_1
}
if (startAngle < 0) {
startAngle += PI2$4
endAngle += PI2$4
}
var w2 = 0
for (var i2 = 0; i2 < 2; i2++) {
var x_ = roots[i2]
if (x_ + cx > x2) {
var angle2 = Math.atan2(y2, x_)
var dir3 = anticlockwise ? 1 : -1
if (angle2 < 0) {
angle2 = PI2$4 + angle2
}
if (
(angle2 >= startAngle && angle2 <= endAngle) ||
(angle2 + PI2$4 >= startAngle && angle2 + PI2$4 <= endAngle)
) {
if (angle2 > Math.PI / 2 && angle2 < Math.PI * 1.5) {
dir3 = -dir3
}
w2 += dir3
}
}
}
return w2
}
function containPath(path, lineWidth, isStroke, x2, y2) {
var data2 = path.data
var len2 = path.len()
var w2 = 0
var xi = 0
var yi = 0
var x0 = 0
var y0 = 0
var x1
var y1
for (var i2 = 0; i2 < len2; ) {
var cmd = data2[i2++]
var isFirst = i2 === 1
if (cmd === CMD$3.M && i2 > 1) {
if (!isStroke) {
w2 += windingLine(xi, yi, x0, y0, x2, y2)
}
}
if (isFirst) {
xi = data2[i2]
yi = data2[i2 + 1]
x0 = xi
y0 = yi
}
switch (cmd) {
case CMD$3.M:
x0 = data2[i2++]
y0 = data2[i2++]
xi = x0
yi = y0
break
case CMD$3.L:
if (isStroke) {
if (
containStroke$4(xi, yi, data2[i2], data2[i2 + 1], lineWidth, x2, y2)
) {
return true
}
} else {
w2 += windingLine(xi, yi, data2[i2], data2[i2 + 1], x2, y2) || 0
}
xi = data2[i2++]
yi = data2[i2++]
break
case CMD$3.C:
if (isStroke) {
if (
containStroke$3(
xi,
yi,
data2[i2++],
data2[i2++],
data2[i2++],
data2[i2++],
data2[i2],
data2[i2 + 1],
lineWidth,
x2,
y2
)
) {
return true
}
} else {
w2 +=
windingCubic(
xi,
yi,
data2[i2++],
data2[i2++],
data2[i2++],
data2[i2++],
data2[i2],
data2[i2 + 1],
x2,
y2
) || 0
}
xi = data2[i2++]
yi = data2[i2++]
break
case CMD$3.Q:
if (isStroke) {
if (
containStroke$2(
xi,
yi,
data2[i2++],
data2[i2++],
data2[i2],
data2[i2 + 1],
lineWidth,
x2,
y2
)
) {
return true
}
} else {
w2 +=
windingQuadratic(
xi,
yi,
data2[i2++],
data2[i2++],
data2[i2],
data2[i2 + 1],
x2,
y2
) || 0
}
xi = data2[i2++]
yi = data2[i2++]
break
case CMD$3.A:
var cx = data2[i2++]
var cy = data2[i2++]
var rx = data2[i2++]
var ry = data2[i2++]
var theta = data2[i2++]
var dTheta = data2[i2++]
i2 += 1
var anticlockwise = !!(1 - data2[i2++])
x1 = Math.cos(theta) * rx + cx
y1 = Math.sin(theta) * ry + cy
if (!isFirst) {
w2 += windingLine(xi, yi, x1, y1, x2, y2)
} else {
x0 = x1
y0 = y1
}
var _x = ((x2 - cx) * ry) / rx + cx
if (isStroke) {
if (
containStroke$1(
cx,
cy,
ry,
theta,
theta + dTheta,
anticlockwise,
lineWidth,
_x,
y2
)
) {
return true
}
} else {
w2 += windingArc(
cx,
cy,
ry,
theta,
theta + dTheta,
anticlockwise,
_x,
y2
)
}
xi = Math.cos(theta + dTheta) * rx + cx
yi = Math.sin(theta + dTheta) * ry + cy
break
case CMD$3.R:
x0 = xi = data2[i2++]
y0 = yi = data2[i2++]
var width = data2[i2++]
var height = data2[i2++]
x1 = x0 + width
y1 = y0 + height
if (isStroke) {
if (
containStroke$4(x0, y0, x1, y0, lineWidth, x2, y2) ||
containStroke$4(x1, y0, x1, y1, lineWidth, x2, y2) ||
containStroke$4(x1, y1, x0, y1, lineWidth, x2, y2) ||
containStroke$4(x0, y1, x0, y0, lineWidth, x2, y2)
) {
return true
}
} else {
w2 += windingLine(x1, y0, x1, y1, x2, y2)
w2 += windingLine(x0, y1, x0, y0, x2, y2)
}
break
case CMD$3.Z:
if (isStroke) {
if (containStroke$4(xi, yi, x0, y0, lineWidth, x2, y2)) {
return true
}
} else {
w2 += windingLine(xi, yi, x0, y0, x2, y2)
}
xi = x0
yi = y0
break
}
}
if (!isStroke && !isAroundEqual$1(yi, y0)) {
w2 += windingLine(xi, yi, x0, y0, x2, y2) || 0
}
return w2 !== 0
}
function contain$2(pathProxy, x2, y2) {
return containPath(pathProxy, 0, false, x2, y2)
}
function containStroke(pathProxy, lineWidth, x2, y2) {
return containPath(pathProxy, lineWidth, true, x2, y2)
}
var DEFAULT_PATH_STYLE = defaults(
{
fill: '#000',
stroke: null,
strokePercent: 1,
fillOpacity: 1,
strokeOpacity: 1,
lineDashOffset: 0,
lineWidth: 1,
lineCap: 'butt',
miterLimit: 10,
strokeNoScale: false,
strokeFirst: false,
},
DEFAULT_COMMON_STYLE
)
var DEFAULT_PATH_ANIMATION_PROPS = {
style: defaults(
{
fill: true,
stroke: true,
strokePercent: true,
fillOpacity: true,
strokeOpacity: true,
lineDashOffset: true,
lineWidth: true,
miterLimit: true,
},
DEFAULT_COMMON_ANIMATION_PROPS.style
),
}
var pathCopyParams = TRANSFORMABLE_PROPS.concat([
'invisible',
'culling',
'z',
'z2',
'zlevel',
'parent',
])
var Path = (function (_super) {
__extends$1(Path2, _super)
function Path2(opts) {
return _super.call(this, opts) || this
}
Path2.prototype.update = function () {
var _this = this
_super.prototype.update.call(this)
var style2 = this.style
if (style2.decal) {
var decalEl = (this._decalEl = this._decalEl || new Path2())
if (decalEl.buildPath === Path2.prototype.buildPath) {
decalEl.buildPath = function (ctx) {
_this.buildPath(ctx, _this.shape)
}
}
decalEl.silent = true
var decalElStyle = decalEl.style
for (var key2 in style2) {
if (decalElStyle[key2] !== style2[key2]) {
decalElStyle[key2] = style2[key2]
}
}
decalElStyle.fill = style2.fill ? style2.decal : null
decalElStyle.decal = null
decalElStyle.shadowColor = null
style2.strokeFirst && (decalElStyle.stroke = null)
for (var i2 = 0; i2 < pathCopyParams.length; ++i2) {
decalEl[pathCopyParams[i2]] = this[pathCopyParams[i2]]
}
decalEl.__dirty |= REDRAW_BIT
} else if (this._decalEl) {
this._decalEl = null
}
}
Path2.prototype.getDecalElement = function () {
return this._decalEl
}
Path2.prototype._init = function (props2) {
var keysArr = keys$4(props2)
this.shape = this.getDefaultShape()
var defaultStyle2 = this.getDefaultStyle()
if (defaultStyle2) {
this.useStyle(defaultStyle2)
}
for (var i2 = 0; i2 < keysArr.length; i2++) {
var key2 = keysArr[i2]
var value2 = props2[key2]
if (key2 === 'style') {
if (!this.style) {
this.useStyle(value2)
} else {
extend(this.style, value2)
}
} else if (key2 === 'shape') {
extend(this.shape, value2)
} else {
_super.prototype.attrKV.call(this, key2, value2)
}
}
if (!this.style) {
this.useStyle({})
}
}
Path2.prototype.getDefaultStyle = function () {
return null
}
Path2.prototype.getDefaultShape = function () {
return {}
}
Path2.prototype.canBeInsideText = function () {
return this.hasFill()
}
Path2.prototype.getInsideTextFill = function () {
var pathFill = this.style.fill
if (pathFill !== 'none') {
if (isString$2(pathFill)) {
var fillLum = lum(pathFill, 0)
if (fillLum > 0.5) {
return DARK_LABEL_COLOR
} else if (fillLum > 0.2) {
return LIGHTER_LABEL_COLOR
}
return LIGHT_LABEL_COLOR
} else if (pathFill) {
return LIGHT_LABEL_COLOR
}
}
return DARK_LABEL_COLOR
}
Path2.prototype.getInsideTextStroke = function (textFill) {
var pathFill = this.style.fill
if (isString$2(pathFill)) {
var zr = this.__zr
var isDarkMode2 = !!(zr && zr.isDarkMode())
var isDarkLabel = lum(textFill, 0) < DARK_MODE_THRESHOLD
if (isDarkMode2 === isDarkLabel) {
return pathFill
}
}
}
Path2.prototype.buildPath = function (ctx, shapeCfg, inBatch) {}
Path2.prototype.pathUpdated = function () {
this.__dirty &= ~SHAPE_CHANGED_BIT
}
Path2.prototype.getUpdatedPathProxy = function (inBatch) {
!this.path && this.createPathProxy()
this.path.beginPath()
this.buildPath(this.path, this.shape, inBatch)
return this.path
}
Path2.prototype.createPathProxy = function () {
this.path = new PathProxy$1(false)
}
Path2.prototype.hasStroke = function () {
var style2 = this.style
var stroke = style2.stroke
return !(stroke == null || stroke === 'none' || !(style2.lineWidth > 0))
}
Path2.prototype.hasFill = function () {
var style2 = this.style
var fill = style2.fill
return fill != null && fill !== 'none'
}
Path2.prototype.getBoundingRect = function () {
var rect = this._rect
var style2 = this.style
var needsUpdateRect = !rect
if (needsUpdateRect) {
var firstInvoke = false
if (!this.path) {
firstInvoke = true
this.createPathProxy()
}
var path = this.path
if (firstInvoke || this.__dirty & SHAPE_CHANGED_BIT) {
path.beginPath()
this.buildPath(path, this.shape, false)
this.pathUpdated()
}
rect = path.getBoundingRect()
}
this._rect = rect
if (this.hasStroke() && this.path && this.path.len() > 0) {
var rectStroke = this._rectStroke || (this._rectStroke = rect.clone())
if (this.__dirty || needsUpdateRect) {
rectStroke.copy(rect)
var lineScale = style2.strokeNoScale ? this.getLineScale() : 1
var w2 = style2.lineWidth
if (!this.hasFill()) {
var strokeContainThreshold = this.strokeContainThreshold
w2 = Math.max(
w2,
strokeContainThreshold == null ? 4 : strokeContainThreshold
)
}
if (lineScale > 1e-10) {
rectStroke.width += w2 / lineScale
rectStroke.height += w2 / lineScale
rectStroke.x -= w2 / lineScale / 2
rectStroke.y -= w2 / lineScale / 2
}
}
return rectStroke
}
return rect
}
Path2.prototype.contain = function (x2, y2) {
var localPos = this.transformCoordToLocal(x2, y2)
var rect = this.getBoundingRect()
var style2 = this.style
x2 = localPos[0]
y2 = localPos[1]
if (rect.contain(x2, y2)) {
var pathProxy = this.path
if (this.hasStroke()) {
var lineWidth = style2.lineWidth
var lineScale = style2.strokeNoScale ? this.getLineScale() : 1
if (lineScale > 1e-10) {
if (!this.hasFill()) {
lineWidth = Math.max(lineWidth, this.strokeContainThreshold)
}
if (containStroke(pathProxy, lineWidth / lineScale, x2, y2)) {
return true
}
}
}
if (this.hasFill()) {
return contain$2(pathProxy, x2, y2)
}
}
return false
}
Path2.prototype.dirtyShape = function () {
this.__dirty |= SHAPE_CHANGED_BIT
if (this._rect) {
this._rect = null
}
if (this._decalEl) {
this._decalEl.dirtyShape()
}
this.markRedraw()
}
Path2.prototype.dirty = function () {
this.dirtyStyle()
this.dirtyShape()
}
Path2.prototype.animateShape = function (loop) {
return this.animate('shape', loop)
}
Path2.prototype.updateDuringAnimation = function (targetKey) {
if (targetKey === 'style') {
this.dirtyStyle()
} else if (targetKey === 'shape') {
this.dirtyShape()
} else {
this.markRedraw()
}
}
Path2.prototype.attrKV = function (key2, value2) {
if (key2 === 'shape') {
this.setShape(value2)
} else {
_super.prototype.attrKV.call(this, key2, value2)
}
}
Path2.prototype.setShape = function (keyOrObj, value2) {
var shape = this.shape
if (!shape) {
shape = this.shape = {}
}
if (typeof keyOrObj === 'string') {
shape[keyOrObj] = value2
} else {
extend(shape, keyOrObj)
}
this.dirtyShape()
return this
}
Path2.prototype.shapeChanged = function () {
return !!(this.__dirty & SHAPE_CHANGED_BIT)
}
Path2.prototype.createStyle = function (obj) {
return createObject(DEFAULT_PATH_STYLE, obj)
}
Path2.prototype._innerSaveToNormal = function (toState) {
_super.prototype._innerSaveToNormal.call(this, toState)
var normalState = this._normalState
if (toState.shape && !normalState.shape) {
normalState.shape = extend({}, this.shape)
}
}
Path2.prototype._applyStateObj = function (
stateName,
state2,
normalState,
keepCurrentStates,
transition,
animationCfg
) {
_super.prototype._applyStateObj.call(
this,
stateName,
state2,
normalState,
keepCurrentStates,
transition,
animationCfg
)
var needsRestoreToNormal = !(state2 && keepCurrentStates)
var targetShape
if (state2 && state2.shape) {
if (transition) {
if (keepCurrentStates) {
targetShape = state2.shape
} else {
targetShape = extend({}, normalState.shape)
extend(targetShape, state2.shape)
}
} else {
targetShape = extend(
{},
keepCurrentStates ? this.shape : normalState.shape
)
extend(targetShape, state2.shape)
}
} else if (needsRestoreToNormal) {
targetShape = normalState.shape
}
if (targetShape) {
if (transition) {
this.shape = extend({}, this.shape)
var targetShapePrimaryProps = {}
var shapeKeys = keys$4(targetShape)
for (var i2 = 0; i2 < shapeKeys.length; i2++) {
var key2 = shapeKeys[i2]
if (typeof targetShape[key2] === 'object') {
this.shape[key2] = targetShape[key2]
} else {
targetShapePrimaryProps[key2] = targetShape[key2]
}
}
this._transitionState(
stateName,
{
shape: targetShapePrimaryProps,
},
animationCfg
)
} else {
this.shape = targetShape
this.dirtyShape()
}
}
}
Path2.prototype._mergeStates = function (states) {
var mergedState = _super.prototype._mergeStates.call(this, states)
var mergedShape
for (var i2 = 0; i2 < states.length; i2++) {
var state2 = states[i2]
if (state2.shape) {
mergedShape = mergedShape || {}
this._mergeStyle(mergedShape, state2.shape)
}
}
if (mergedShape) {
mergedState.shape = mergedShape
}
return mergedState
}
Path2.prototype.getAnimationStyleProps = function () {
return DEFAULT_PATH_ANIMATION_PROPS
}
Path2.prototype.isZeroArea = function () {
return false
}
Path2.extend = function (defaultProps2) {
var Sub = (function (_super2) {
__extends$1(Sub2, _super2)
function Sub2(opts) {
var _this = _super2.call(this, opts) || this
defaultProps2.init && defaultProps2.init.call(_this, opts)
return _this
}
Sub2.prototype.getDefaultStyle = function () {
return clone$4(defaultProps2.style)
}
Sub2.prototype.getDefaultShape = function () {
return clone$4(defaultProps2.shape)
}
return Sub2
})(Path2)
for (var key2 in defaultProps2) {
if (typeof defaultProps2[key2] === 'function') {
Sub.prototype[key2] = defaultProps2[key2]
}
}
return Sub
}
Path2.initDefaultProps = (function () {
var pathProto = Path2.prototype
pathProto.type = 'path'
pathProto.strokeContainThreshold = 5
pathProto.segmentIgnoreThreshold = 0
pathProto.subPixelOptimize = false
pathProto.autoBatch = false
pathProto.__dirty = REDRAW_BIT | STYLE_CHANGED_BIT | SHAPE_CHANGED_BIT
})()
return Path2
})(Displayable$1)
var Path$1 = Path
var DEFAULT_TSPAN_STYLE = defaults(
{
strokeFirst: true,
font: DEFAULT_FONT,
x: 0,
y: 0,
textAlign: 'left',
textBaseline: 'top',
miterLimit: 2,
},
DEFAULT_PATH_STYLE
)
var TSpan = (function (_super) {
__extends$1(TSpan2, _super)
function TSpan2() {
return (_super !== null && _super.apply(this, arguments)) || this
}
TSpan2.prototype.hasStroke = function () {
var style2 = this.style
var stroke = style2.stroke
return stroke != null && stroke !== 'none' && style2.lineWidth > 0
}
TSpan2.prototype.hasFill = function () {
var style2 = this.style
var fill = style2.fill
return fill != null && fill !== 'none'
}
TSpan2.prototype.createStyle = function (obj) {
return createObject(DEFAULT_TSPAN_STYLE, obj)
}
TSpan2.prototype.setBoundingRect = function (rect) {
this._rect = rect
}
TSpan2.prototype.getBoundingRect = function () {
var style2 = this.style
if (!this._rect) {
var text2 = style2.text
text2 != null ? (text2 += '') : (text2 = '')
var rect = getBoundingRect(
text2,
style2.font,
style2.textAlign,
style2.textBaseline
)
rect.x += style2.x || 0
rect.y += style2.y || 0
if (this.hasStroke()) {
var w2 = style2.lineWidth
rect.x -= w2 / 2
rect.y -= w2 / 2
rect.width += w2
rect.height += w2
}
this._rect = rect
}
return this._rect
}
TSpan2.initDefaultProps = (function () {
var tspanProto = TSpan2.prototype
tspanProto.dirtyRectTolerance = 10
})()
return TSpan2
})(Displayable$1)
TSpan.prototype.type = 'tspan'
var TSpan$1 = TSpan
var DEFAULT_IMAGE_STYLE = defaults(
{
x: 0,
y: 0,
},
DEFAULT_COMMON_STYLE
)
var DEFAULT_IMAGE_ANIMATION_PROPS = {
style: defaults(
{
x: true,
y: true,
width: true,
height: true,
sx: true,
sy: true,
sWidth: true,
sHeight: true,
},
DEFAULT_COMMON_ANIMATION_PROPS.style
),
}
function isImageLike$1(source2) {
return !!(
source2 &&
typeof source2 !== 'string' &&
source2.width &&
source2.height
)
}
var ZRImage = (function (_super) {
__extends$1(ZRImage2, _super)
function ZRImage2() {
return (_super !== null && _super.apply(this, arguments)) || this
}
ZRImage2.prototype.createStyle = function (obj) {
return createObject(DEFAULT_IMAGE_STYLE, obj)
}
ZRImage2.prototype._getSize = function (dim) {
var style2 = this.style
var size = style2[dim]
if (size != null) {
return size
}
var imageSource = isImageLike$1(style2.image) ? style2.image : this.__image
if (!imageSource) {
return 0
}
var otherDim = dim === 'width' ? 'height' : 'width'
var otherDimSize = style2[otherDim]
if (otherDimSize == null) {
return imageSource[dim]
} else {
return (imageSource[dim] / imageSource[otherDim]) * otherDimSize
}
}
ZRImage2.prototype.getWidth = function () {
return this._getSize('width')
}
ZRImage2.prototype.getHeight = function () {
return this._getSize('height')
}
ZRImage2.prototype.getAnimationStyleProps = function () {
return DEFAULT_IMAGE_ANIMATION_PROPS
}
ZRImage2.prototype.getBoundingRect = function () {
var style2 = this.style
if (!this._rect) {
this._rect = new BoundingRect$1(
style2.x || 0,
style2.y || 0,
this.getWidth(),
this.getHeight()
)
}
return this._rect
}
return ZRImage2
})(Displayable$1)
ZRImage.prototype.type = 'image'
var ZRImage$1 = ZRImage
function buildPath$2(ctx, shape) {
var x2 = shape.x
var y2 = shape.y
var width = shape.width
var height = shape.height
var r2 = shape.r
var r1
var r22
var r3
var r4
if (width < 0) {
x2 = x2 + width
width = -width
}
if (height < 0) {
y2 = y2 + height
height = -height
}
if (typeof r2 === 'number') {
r1 = r22 = r3 = r4 = r2
} else if (r2 instanceof Array) {
if (r2.length === 1) {
r1 = r22 = r3 = r4 = r2[0]
} else if (r2.length === 2) {
r1 = r3 = r2[0]
r22 = r4 = r2[1]
} else if (r2.length === 3) {
r1 = r2[0]
r22 = r4 = r2[1]
r3 = r2[2]
} else {
r1 = r2[0]
r22 = r2[1]
r3 = r2[2]
r4 = r2[3]
}
} else {
r1 = r22 = r3 = r4 = 0
}
var total2
if (r1 + r22 > width) {
total2 = r1 + r22
r1 *= width / total2
r22 *= width / total2
}
if (r3 + r4 > width) {
total2 = r3 + r4
r3 *= width / total2
r4 *= width / total2
}
if (r22 + r3 > height) {
total2 = r22 + r3
r22 *= height / total2
r3 *= height / total2
}
if (r1 + r4 > height) {
total2 = r1 + r4
r1 *= height / total2
r4 *= height / total2
}
ctx.moveTo(x2 + r1, y2)
ctx.lineTo(x2 + width - r22, y2)
r22 !== 0 && ctx.arc(x2 + width - r22, y2 + r22, r22, -Math.PI / 2, 0)
ctx.lineTo(x2 + width, y2 + height - r3)
r3 !== 0 && ctx.arc(x2 + width - r3, y2 + height - r3, r3, 0, Math.PI / 2)
ctx.lineTo(x2 + r4, y2 + height)
r4 !== 0 && ctx.arc(x2 + r4, y2 + height - r4, r4, Math.PI / 2, Math.PI)
ctx.lineTo(x2, y2 + r1)
r1 !== 0 && ctx.arc(x2 + r1, y2 + r1, r1, Math.PI, Math.PI * 1.5)
}
var round$2 = Math.round
function subPixelOptimizeLine$1(outputShape, inputShape, style2) {
if (!inputShape) {
return
}
var x1 = inputShape.x1
var x2 = inputShape.x2
var y1 = inputShape.y1
var y2 = inputShape.y2
outputShape.x1 = x1
outputShape.x2 = x2
outputShape.y1 = y1
outputShape.y2 = y2
var lineWidth = style2 && style2.lineWidth
if (!lineWidth) {
return outputShape
}
if (round$2(x1 * 2) === round$2(x2 * 2)) {
outputShape.x1 = outputShape.x2 = subPixelOptimize$1(x1, lineWidth, true)
}
if (round$2(y1 * 2) === round$2(y2 * 2)) {
outputShape.y1 = outputShape.y2 = subPixelOptimize$1(y1, lineWidth, true)
}
return outputShape
}
function subPixelOptimizeRect$1(outputShape, inputShape, style2) {
if (!inputShape) {
return
}
var originX = inputShape.x
var originY = inputShape.y
var originWidth = inputShape.width
var originHeight = inputShape.height
outputShape.x = originX
outputShape.y = originY
outputShape.width = originWidth
outputShape.height = originHeight
var lineWidth = style2 && style2.lineWidth
if (!lineWidth) {
return outputShape
}
outputShape.x = subPixelOptimize$1(originX, lineWidth, true)
outputShape.y = subPixelOptimize$1(originY, lineWidth, true)
outputShape.width = Math.max(
subPixelOptimize$1(originX + originWidth, lineWidth, false) - outputShape.x,
originWidth === 0 ? 0 : 1
)
outputShape.height = Math.max(
subPixelOptimize$1(originY + originHeight, lineWidth, false) -
outputShape.y,
originHeight === 0 ? 0 : 1
)
return outputShape
}
function subPixelOptimize$1(position2, lineWidth, positiveOrNegative) {
if (!lineWidth) {
return position2
}
var doubledPosition = round$2(position2 * 2)
return (doubledPosition + round$2(lineWidth)) % 2 === 0
? doubledPosition / 2
: (doubledPosition + (positiveOrNegative ? 1 : -1)) / 2
}
var RectShape = (function () {
function RectShape2() {
this.x = 0
this.y = 0
this.width = 0
this.height = 0
}
return RectShape2
})()
var subPixelOptimizeOutputShape$1 = {}
var Rect$3 = (function (_super) {
__extends$1(Rect2, _super)
function Rect2(opts) {
return _super.call(this, opts) || this
}
Rect2.prototype.getDefaultShape = function () {
return new RectShape()
}
Rect2.prototype.buildPath = function (ctx, shape) {
var x2
var y2
var width
var height
if (this.subPixelOptimize) {
var optimizedShape = subPixelOptimizeRect$1(
subPixelOptimizeOutputShape$1,
shape,
this.style
)
x2 = optimizedShape.x
y2 = optimizedShape.y
width = optimizedShape.width
height = optimizedShape.height
optimizedShape.r = shape.r
shape = optimizedShape
} else {
x2 = shape.x
y2 = shape.y
width = shape.width
height = shape.height
}
if (!shape.r) {
ctx.rect(x2, y2, width, height)
} else {
buildPath$2(ctx, shape)
}
}
Rect2.prototype.isZeroArea = function () {
return !this.shape.width || !this.shape.height
}
return Rect2
})(Path$1)
Rect$3.prototype.type = 'rect'
var Rect$4 = Rect$3
var DEFAULT_RICH_TEXT_COLOR = {
fill: '#000',
}
var DEFAULT_STROKE_LINE_WIDTH = 2
var DEFAULT_TEXT_ANIMATION_PROPS = {
style: defaults(
{
fill: true,
stroke: true,
fillOpacity: true,
strokeOpacity: true,
lineWidth: true,
fontSize: true,
lineHeight: true,
width: true,
height: true,
textShadowColor: true,
textShadowBlur: true,
textShadowOffsetX: true,
textShadowOffsetY: true,
backgroundColor: true,
padding: true,
borderColor: true,
borderWidth: true,
borderRadius: true,
},
DEFAULT_COMMON_ANIMATION_PROPS.style
),
}
var ZRText = (function (_super) {
__extends$1(ZRText2, _super)
function ZRText2(opts) {
var _this = _super.call(this) || this
_this.type = 'text'
_this._children = []
_this._defaultStyle = DEFAULT_RICH_TEXT_COLOR
_this.attr(opts)
return _this
}
ZRText2.prototype.childrenRef = function () {
return this._children
}
ZRText2.prototype.update = function () {
_super.prototype.update.call(this)
if (this.styleChanged()) {
this._updateSubTexts()
}
for (var i2 = 0; i2 < this._children.length; i2++) {
var child = this._children[i2]
child.zlevel = this.zlevel
child.z = this.z
child.z2 = this.z2
child.culling = this.culling
child.cursor = this.cursor
child.invisible = this.invisible
}
}
ZRText2.prototype.updateTransform = function () {
var innerTransformable = this.innerTransformable
if (innerTransformable) {
innerTransformable.updateTransform()
if (innerTransformable.transform) {
this.transform = innerTransformable.transform
}
} else {
_super.prototype.updateTransform.call(this)
}
}
ZRText2.prototype.getLocalTransform = function (m2) {
var innerTransformable = this.innerTransformable
return innerTransformable
? innerTransformable.getLocalTransform(m2)
: _super.prototype.getLocalTransform.call(this, m2)
}
ZRText2.prototype.getComputedTransform = function () {
if (this.__hostTarget) {
this.__hostTarget.getComputedTransform()
this.__hostTarget.updateInnerText(true)
}
return _super.prototype.getComputedTransform.call(this)
}
ZRText2.prototype._updateSubTexts = function () {
this._childCursor = 0
normalizeTextStyle(this.style)
this.style.rich ? this._updateRichTexts() : this._updatePlainTexts()
this._children.length = this._childCursor
this.styleUpdated()
}
ZRText2.prototype.addSelfToZr = function (zr) {
_super.prototype.addSelfToZr.call(this, zr)
for (var i2 = 0; i2 < this._children.length; i2++) {
this._children[i2].__zr = zr
}
}
ZRText2.prototype.removeSelfFromZr = function (zr) {
_super.prototype.removeSelfFromZr.call(this, zr)
for (var i2 = 0; i2 < this._children.length; i2++) {
this._children[i2].__zr = null
}
}
ZRText2.prototype.getBoundingRect = function () {
if (this.styleChanged()) {
this._updateSubTexts()
}
if (!this._rect) {
var tmpRect2 = new BoundingRect$1(0, 0, 0, 0)
var children = this._children
var tmpMat = []
var rect = null
for (var i2 = 0; i2 < children.length; i2++) {
var child = children[i2]
var childRect = child.getBoundingRect()
var transform3 = child.getLocalTransform(tmpMat)
if (transform3) {
tmpRect2.copy(childRect)
tmpRect2.applyTransform(transform3)
rect = rect || tmpRect2.clone()
rect.union(tmpRect2)
} else {
rect = rect || childRect.clone()
rect.union(childRect)
}
}
this._rect = rect || tmpRect2
}
return this._rect
}
ZRText2.prototype.setDefaultTextStyle = function (defaultTextStyle) {
this._defaultStyle = defaultTextStyle || DEFAULT_RICH_TEXT_COLOR
}
ZRText2.prototype.setTextContent = function (textContent) {}
ZRText2.prototype._mergeStyle = function (targetStyle, sourceStyle) {
if (!sourceStyle) {
return targetStyle
}
var sourceRich = sourceStyle.rich
var targetRich = targetStyle.rich || (sourceRich && {})
extend(targetStyle, sourceStyle)
if (sourceRich && targetRich) {
this._mergeRich(targetRich, sourceRich)
targetStyle.rich = targetRich
} else if (targetRich) {
targetStyle.rich = targetRich
}
return targetStyle
}
ZRText2.prototype._mergeRich = function (targetRich, sourceRich) {
var richNames = keys$4(sourceRich)
for (var i2 = 0; i2 < richNames.length; i2++) {
var richName = richNames[i2]
targetRich[richName] = targetRich[richName] || {}
extend(targetRich[richName], sourceRich[richName])
}
}
ZRText2.prototype.getAnimationStyleProps = function () {
return DEFAULT_TEXT_ANIMATION_PROPS
}
ZRText2.prototype._getOrCreateChild = function (Ctor) {
var child = this._children[this._childCursor]
if (!child || !(child instanceof Ctor)) {
child = new Ctor()
}
this._children[this._childCursor++] = child
child.__zr = this.__zr
child.parent = this
return child
}
ZRText2.prototype._updatePlainTexts = function () {
var style2 = this.style
var textFont = style2.font || DEFAULT_FONT
var textPadding = style2.padding
var text2 = getStyleText(style2)
var contentBlock = parsePlainText(text2, style2)
var needDrawBg = needDrawBackground(style2)
var bgColorDrawn = !!style2.backgroundColor
var outerHeight = contentBlock.outerHeight
var outerWidth = contentBlock.outerWidth
var contentWidth = contentBlock.contentWidth
var textLines = contentBlock.lines
var lineHeight2 = contentBlock.lineHeight
var defaultStyle2 = this._defaultStyle
var baseX = style2.x || 0
var baseY = style2.y || 0
var textAlign2 = style2.align || defaultStyle2.align || 'left'
var verticalAlign =
style2.verticalAlign || defaultStyle2.verticalAlign || 'top'
var textX = baseX
var textY = adjustTextY(baseY, contentBlock.contentHeight, verticalAlign)
if (needDrawBg || textPadding) {
var boxX = adjustTextX(baseX, outerWidth, textAlign2)
var boxY = adjustTextY(baseY, outerHeight, verticalAlign)
needDrawBg &&
this._renderBackground(
style2,
style2,
boxX,
boxY,
outerWidth,
outerHeight
)
}
textY += lineHeight2 / 2
if (textPadding) {
textX = getTextXForPadding(baseX, textAlign2, textPadding)
if (verticalAlign === 'top') {
textY += textPadding[0]
} else if (verticalAlign === 'bottom') {
textY -= textPadding[2]
}
}
var defaultLineWidth = 0
var useDefaultFill = false
var textFill = getFill(
'fill' in style2
? style2.fill
: ((useDefaultFill = true), defaultStyle2.fill)
)
var textStroke = getStroke(
'stroke' in style2
? style2.stroke
: !bgColorDrawn && (!defaultStyle2.autoStroke || useDefaultFill)
? ((defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH), defaultStyle2.stroke)
: null
)
var hasShadow2 = style2.textShadowBlur > 0
var fixedBoundingRect =
style2.width != null &&
(style2.overflow === 'truncate' ||
style2.overflow === 'break' ||
style2.overflow === 'breakAll')
var calculatedLineHeight = contentBlock.calculatedLineHeight
for (var i2 = 0; i2 < textLines.length; i2++) {
var el2 = this._getOrCreateChild(TSpan$1)
var subElStyle = el2.createStyle()
el2.useStyle(subElStyle)
subElStyle.text = textLines[i2]
subElStyle.x = textX
subElStyle.y = textY
if (textAlign2) {
subElStyle.textAlign = textAlign2
}
subElStyle.textBaseline = 'middle'
subElStyle.opacity = style2.opacity
subElStyle.strokeFirst = true
if (hasShadow2) {
subElStyle.shadowBlur = style2.textShadowBlur || 0
subElStyle.shadowColor = style2.textShadowColor || 'transparent'
subElStyle.shadowOffsetX = style2.textShadowOffsetX || 0
subElStyle.shadowOffsetY = style2.textShadowOffsetY || 0
}
subElStyle.stroke = textStroke
subElStyle.fill = textFill
if (textStroke) {
subElStyle.lineWidth = style2.lineWidth || defaultLineWidth
subElStyle.lineDash = style2.lineDash
subElStyle.lineDashOffset = style2.lineDashOffset || 0
}
subElStyle.font = textFont
setSeparateFont(subElStyle, style2)
textY += lineHeight2
if (fixedBoundingRect) {
el2.setBoundingRect(
new BoundingRect$1(
adjustTextX(subElStyle.x, style2.width, subElStyle.textAlign),
adjustTextY(
subElStyle.y,
calculatedLineHeight,
subElStyle.textBaseline
),
contentWidth,
calculatedLineHeight
)
)
}
}
}
ZRText2.prototype._updateRichTexts = function () {
var style2 = this.style
var text2 = getStyleText(style2)
var contentBlock = parseRichText(text2, style2)
var contentWidth = contentBlock.width
var outerWidth = contentBlock.outerWidth
var outerHeight = contentBlock.outerHeight
var textPadding = style2.padding
var baseX = style2.x || 0
var baseY = style2.y || 0
var defaultStyle2 = this._defaultStyle
var textAlign2 = style2.align || defaultStyle2.align
var verticalAlign = style2.verticalAlign || defaultStyle2.verticalAlign
var boxX = adjustTextX(baseX, outerWidth, textAlign2)
var boxY = adjustTextY(baseY, outerHeight, verticalAlign)
var xLeft = boxX
var lineTop = boxY
if (textPadding) {
xLeft += textPadding[3]
lineTop += textPadding[0]
}
var xRight = xLeft + contentWidth
if (needDrawBackground(style2)) {
this._renderBackground(
style2,
style2,
boxX,
boxY,
outerWidth,
outerHeight
)
}
var bgColorDrawn = !!style2.backgroundColor
for (var i2 = 0; i2 < contentBlock.lines.length; i2++) {
var line = contentBlock.lines[i2]
var tokens = line.tokens
var tokenCount = tokens.length
var lineHeight2 = line.lineHeight
var remainedWidth = line.width
var leftIndex = 0
var lineXLeft = xLeft
var lineXRight = xRight
var rightIndex = tokenCount - 1
var token = void 0
while (
leftIndex < tokenCount &&
((token = tokens[leftIndex]), !token.align || token.align === 'left')
) {
this._placeToken(
token,
style2,
lineHeight2,
lineTop,
lineXLeft,
'left',
bgColorDrawn
)
remainedWidth -= token.width
lineXLeft += token.width
leftIndex++
}
while (
rightIndex >= 0 &&
((token = tokens[rightIndex]), token.align === 'right')
) {
this._placeToken(
token,
style2,
lineHeight2,
lineTop,
lineXRight,
'right',
bgColorDrawn
)
remainedWidth -= token.width
lineXRight -= token.width
rightIndex--
}
lineXLeft +=
(contentWidth -
(lineXLeft - xLeft) -
(xRight - lineXRight) -
remainedWidth) /
2
while (leftIndex <= rightIndex) {
token = tokens[leftIndex]
this._placeToken(
token,
style2,
lineHeight2,
lineTop,
lineXLeft + token.width / 2,
'center',
bgColorDrawn
)
lineXLeft += token.width
leftIndex++
}
lineTop += lineHeight2
}
}
ZRText2.prototype._placeToken = function (
token,
style2,
lineHeight2,
lineTop,
x2,
textAlign2,
parentBgColorDrawn
) {
var tokenStyle = style2.rich[token.styleName] || {}
tokenStyle.text = token.text
var verticalAlign = token.verticalAlign
var y2 = lineTop + lineHeight2 / 2
if (verticalAlign === 'top') {
y2 = lineTop + token.height / 2
} else if (verticalAlign === 'bottom') {
y2 = lineTop + lineHeight2 - token.height / 2
}
var needDrawBg = !token.isLineHolder && needDrawBackground(tokenStyle)
needDrawBg &&
this._renderBackground(
tokenStyle,
style2,
textAlign2 === 'right'
? x2 - token.width
: textAlign2 === 'center'
? x2 - token.width / 2
: x2,
y2 - token.height / 2,
token.width,
token.height
)
var bgColorDrawn = !!tokenStyle.backgroundColor
var textPadding = token.textPadding
if (textPadding) {
x2 = getTextXForPadding(x2, textAlign2, textPadding)
y2 -= token.height / 2 - textPadding[0] - token.innerHeight / 2
}
var el2 = this._getOrCreateChild(TSpan$1)
var subElStyle = el2.createStyle()
el2.useStyle(subElStyle)
var defaultStyle2 = this._defaultStyle
var useDefaultFill = false
var defaultLineWidth = 0
var textFill = getFill(
'fill' in tokenStyle
? tokenStyle.fill
: 'fill' in style2
? style2.fill
: ((useDefaultFill = true), defaultStyle2.fill)
)
var textStroke = getStroke(
'stroke' in tokenStyle
? tokenStyle.stroke
: 'stroke' in style2
? style2.stroke
: !bgColorDrawn &&
!parentBgColorDrawn &&
(!defaultStyle2.autoStroke || useDefaultFill)
? ((defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH), defaultStyle2.stroke)
: null
)
var hasShadow2 = tokenStyle.textShadowBlur > 0 || style2.textShadowBlur > 0
subElStyle.text = token.text
subElStyle.x = x2
subElStyle.y = y2
if (hasShadow2) {
subElStyle.shadowBlur =
tokenStyle.textShadowBlur || style2.textShadowBlur || 0
subElStyle.shadowColor =
tokenStyle.textShadowColor || style2.textShadowColor || 'transparent'
subElStyle.shadowOffsetX =
tokenStyle.textShadowOffsetX || style2.textShadowOffsetX || 0
subElStyle.shadowOffsetY =
tokenStyle.textShadowOffsetY || style2.textShadowOffsetY || 0
}
subElStyle.textAlign = textAlign2
subElStyle.textBaseline = 'middle'
subElStyle.font = token.font || DEFAULT_FONT
subElStyle.opacity = retrieve3(tokenStyle.opacity, style2.opacity, 1)
setSeparateFont(subElStyle, tokenStyle)
if (textStroke) {
subElStyle.lineWidth = retrieve3(
tokenStyle.lineWidth,
style2.lineWidth,
defaultLineWidth
)
subElStyle.lineDash = retrieve2(tokenStyle.lineDash, style2.lineDash)
subElStyle.lineDashOffset = style2.lineDashOffset || 0
subElStyle.stroke = textStroke
}
if (textFill) {
subElStyle.fill = textFill
}
var textWidth = token.contentWidth
var textHeight = token.contentHeight
el2.setBoundingRect(
new BoundingRect$1(
adjustTextX(subElStyle.x, textWidth, subElStyle.textAlign),
adjustTextY(subElStyle.y, textHeight, subElStyle.textBaseline),
textWidth,
textHeight
)
)
}
ZRText2.prototype._renderBackground = function (
style2,
topStyle,
x2,
y2,
width,
height
) {
var textBackgroundColor = style2.backgroundColor
var textBorderWidth = style2.borderWidth
var textBorderColor = style2.borderColor
var isImageBg = textBackgroundColor && textBackgroundColor.image
var isPlainOrGradientBg = textBackgroundColor && !isImageBg
var textBorderRadius = style2.borderRadius
var self2 = this
var rectEl
var imgEl
if (
isPlainOrGradientBg ||
style2.lineHeight ||
(textBorderWidth && textBorderColor)
) {
rectEl = this._getOrCreateChild(Rect$4)
rectEl.useStyle(rectEl.createStyle())
rectEl.style.fill = null
var rectShape = rectEl.shape
rectShape.x = x2
rectShape.y = y2
rectShape.width = width
rectShape.height = height
rectShape.r = textBorderRadius
rectEl.dirtyShape()
}
if (isPlainOrGradientBg) {
var rectStyle = rectEl.style
rectStyle.fill = textBackgroundColor || null
rectStyle.fillOpacity = retrieve2(style2.fillOpacity, 1)
} else if (isImageBg) {
imgEl = this._getOrCreateChild(ZRImage$1)
imgEl.onload = function () {
self2.dirtyStyle()
}
var imgStyle = imgEl.style
imgStyle.image = textBackgroundColor.image
imgStyle.x = x2
imgStyle.y = y2
imgStyle.width = width
imgStyle.height = height
}
if (textBorderWidth && textBorderColor) {
var rectStyle = rectEl.style
rectStyle.lineWidth = textBorderWidth
rectStyle.stroke = textBorderColor
rectStyle.strokeOpacity = retrieve2(style2.strokeOpacity, 1)
rectStyle.lineDash = style2.borderDash
rectStyle.lineDashOffset = style2.borderDashOffset || 0
rectEl.strokeContainThreshold = 0
if (rectEl.hasFill() && rectEl.hasStroke()) {
rectStyle.strokeFirst = true
rectStyle.lineWidth *= 2
}
}
var commonStyle = (rectEl || imgEl).style
commonStyle.shadowBlur = style2.shadowBlur || 0
commonStyle.shadowColor = style2.shadowColor || 'transparent'
commonStyle.shadowOffsetX = style2.shadowOffsetX || 0
commonStyle.shadowOffsetY = style2.shadowOffsetY || 0
commonStyle.opacity = retrieve3(style2.opacity, topStyle.opacity, 1)
}
ZRText2.makeFont = function (style2) {
var font2 = ''
if (hasSeparateFont(style2)) {
font2 = [
style2.fontStyle,
style2.fontWeight,
parseFontSize(style2.fontSize),
style2.fontFamily || 'sans-serif',
].join(' ')
}
return (font2 && trim$1(font2)) || style2.textFont || style2.font
}
return ZRText2
})(Displayable$1)
var VALID_TEXT_ALIGN = { left: true, right: 1, center: 1 }
var VALID_TEXT_VERTICAL_ALIGN = { top: 1, bottom: 1, middle: 1 }
var FONT_PARTS = ['fontStyle', 'fontWeight', 'fontSize', 'fontFamily']
function parseFontSize(fontSize2) {
if (
typeof fontSize2 === 'string' &&
(fontSize2.indexOf('px') !== -1 ||
fontSize2.indexOf('rem') !== -1 ||
fontSize2.indexOf('em') !== -1)
) {
return fontSize2
} else if (!isNaN(+fontSize2)) {
return fontSize2 + 'px'
} else {
return DEFAULT_FONT_SIZE + 'px'
}
}
function setSeparateFont(targetStyle, sourceStyle) {
for (var i2 = 0; i2 < FONT_PARTS.length; i2++) {
var fontProp = FONT_PARTS[i2]
var val2 = sourceStyle[fontProp]
if (val2 != null) {
targetStyle[fontProp] = val2
}
}
}
function hasSeparateFont(style2) {
return style2.fontSize != null || style2.fontFamily || style2.fontWeight
}
function normalizeTextStyle(style2) {
normalizeStyle(style2)
each$f(style2.rich, normalizeStyle)
return style2
}
function normalizeStyle(style2) {
if (style2) {
style2.font = ZRText.makeFont(style2)
var textAlign2 = style2.align
textAlign2 === 'middle' && (textAlign2 = 'center')
style2.align =
textAlign2 == null || VALID_TEXT_ALIGN[textAlign2] ? textAlign2 : 'left'
var verticalAlign = style2.verticalAlign
verticalAlign === 'center' && (verticalAlign = 'middle')
style2.verticalAlign =
verticalAlign == null || VALID_TEXT_VERTICAL_ALIGN[verticalAlign]
? verticalAlign
: 'top'
var textPadding = style2.padding
if (textPadding) {
style2.padding = normalizeCssArray$1(style2.padding)
}
}
}
function getStroke(stroke, lineWidth) {
return stroke == null ||
lineWidth <= 0 ||
stroke === 'transparent' ||
stroke === 'none'
? null
: stroke.image || stroke.colorStops
? '#000'
: stroke
}
function getFill(fill) {
return fill == null || fill === 'none'
? null
: fill.image || fill.colorStops
? '#000'
: fill
}
function getTextXForPadding(x2, textAlign2, textPadding) {
return textAlign2 === 'right'
? x2 - textPadding[1]
: textAlign2 === 'center'
? x2 + textPadding[3] / 2 - textPadding[1] / 2
: x2 + textPadding[3]
}
function getStyleText(style2) {
var text2 = style2.text
text2 != null && (text2 += '')
return text2
}
function needDrawBackground(style2) {
return !!(
style2.backgroundColor ||
style2.lineHeight ||
(style2.borderWidth && style2.borderColor)
)
}
var ZRText$1 = ZRText
var getECData = makeInner()
var setCommonECData = function (seriesIndex, dataType2, dataIdx, el2) {
if (el2) {
var ecData = getECData(el2)
ecData.dataIndex = dataIdx
ecData.dataType = dataType2
ecData.seriesIndex = seriesIndex
if (el2.type === 'group') {
el2.traverse(function (child) {
var childECData = getECData(child)
childECData.seriesIndex = seriesIndex
childECData.dataIndex = dataIdx
childECData.dataType = dataType2
})
}
}
}
var _highlightNextDigit = 1
var _highlightKeyMap = {}
var getSavedStates = makeInner()
var getComponentStates = makeInner()
var HOVER_STATE_NORMAL = 0
var HOVER_STATE_BLUR = 1
var HOVER_STATE_EMPHASIS = 2
var SPECIAL_STATES = ['emphasis', 'blur', 'select']
var DISPLAY_STATES = ['normal', 'emphasis', 'blur', 'select']
var Z2_EMPHASIS_LIFT = 10
var Z2_SELECT_LIFT = 9
var HIGHLIGHT_ACTION_TYPE = 'highlight'
var DOWNPLAY_ACTION_TYPE = 'downplay'
var SELECT_ACTION_TYPE = 'select'
var UNSELECT_ACTION_TYPE = 'unselect'
var TOGGLE_SELECT_ACTION_TYPE = 'toggleSelect'
function hasFillOrStroke(fillOrStroke) {
return fillOrStroke != null && fillOrStroke !== 'none'
}
var liftedColorCache = new LRU$1(100)
function liftColor(color2) {
if (isString$2(color2)) {
var liftedColor = liftedColorCache.get(color2)
if (!liftedColor) {
liftedColor = lift(color2, -0.1)
liftedColorCache.put(color2, liftedColor)
}
return liftedColor
} else if (isGradientObject(color2)) {
var ret = extend({}, color2)
ret.colorStops = map$1(color2.colorStops, function (stop2) {
return {
offset: stop2.offset,
color: lift(stop2.color, -0.1),
}
})
return ret
}
return color2
}
function doChangeHoverState(el2, stateName, hoverStateEnum) {
if (el2.onHoverStateChange && (el2.hoverState || 0) !== hoverStateEnum) {
el2.onHoverStateChange(stateName)
}
el2.hoverState = hoverStateEnum
}
function singleEnterEmphasis(el2) {
doChangeHoverState(el2, 'emphasis', HOVER_STATE_EMPHASIS)
}
function singleLeaveEmphasis(el2) {
if (el2.hoverState === HOVER_STATE_EMPHASIS) {
doChangeHoverState(el2, 'normal', HOVER_STATE_NORMAL)
}
}
function singleEnterBlur(el2) {
doChangeHoverState(el2, 'blur', HOVER_STATE_BLUR)
}
function singleLeaveBlur(el2) {
if (el2.hoverState === HOVER_STATE_BLUR) {
doChangeHoverState(el2, 'normal', HOVER_STATE_NORMAL)
}
}
function singleEnterSelect(el2) {
el2.selected = true
}
function singleLeaveSelect(el2) {
el2.selected = false
}
function updateElementState(el2, updater, commonParam) {
updater(el2, commonParam)
}
function traverseUpdateState(el2, updater, commonParam) {
updateElementState(el2, updater, commonParam)
el2.isGroup &&
el2.traverse(function (child) {
updateElementState(child, updater, commonParam)
})
}
function setStatesFlag(el2, stateName) {
switch (stateName) {
case 'emphasis':
el2.hoverState = HOVER_STATE_EMPHASIS
break
case 'normal':
el2.hoverState = HOVER_STATE_NORMAL
break
case 'blur':
el2.hoverState = HOVER_STATE_BLUR
break
case 'select':
el2.selected = true
}
}
function getFromStateStyle(el2, props2, toStateName, defaultValue) {
var style2 = el2.style
var fromState = {}
for (var i2 = 0; i2 < props2.length; i2++) {
var propName = props2[i2]
var val2 = style2[propName]
fromState[propName] =
val2 == null ? defaultValue && defaultValue[propName] : val2
}
for (var i2 = 0; i2 < el2.animators.length; i2++) {
var animator = el2.animators[i2]
if (
animator.__fromStateTransition &&
animator.__fromStateTransition.indexOf(toStateName) < 0 &&
animator.targetName === 'style'
) {
animator.saveTo(fromState, props2)
}
}
return fromState
}
function createEmphasisDefaultState(el2, stateName, targetStates, state2) {
var hasSelect = targetStates && indexOf(targetStates, 'select') >= 0
var cloned = false
if (el2 instanceof Path$1) {
var store2 = getSavedStates(el2)
var fromFill = hasSelect
? store2.selectFill || store2.normalFill
: store2.normalFill
var fromStroke = hasSelect
? store2.selectStroke || store2.normalStroke
: store2.normalStroke
if (hasFillOrStroke(fromFill) || hasFillOrStroke(fromStroke)) {
state2 = state2 || {}
var emphasisStyle = state2.style || {}
if (emphasisStyle.fill === 'inherit') {
cloned = true
state2 = extend({}, state2)
emphasisStyle = extend({}, emphasisStyle)
emphasisStyle.fill = fromFill
} else if (
!hasFillOrStroke(emphasisStyle.fill) &&
hasFillOrStroke(fromFill)
) {
cloned = true
state2 = extend({}, state2)
emphasisStyle = extend({}, emphasisStyle)
emphasisStyle.fill = liftColor(fromFill)
} else if (
!hasFillOrStroke(emphasisStyle.stroke) &&
hasFillOrStroke(fromStroke)
) {
if (!cloned) {
state2 = extend({}, state2)
emphasisStyle = extend({}, emphasisStyle)
}
emphasisStyle.stroke = liftColor(fromStroke)
}
state2.style = emphasisStyle
}
}
if (state2) {
if (state2.z2 == null) {
if (!cloned) {
state2 = extend({}, state2)
}
var z2EmphasisLift = el2.z2EmphasisLift
state2.z2 =
el2.z2 + (z2EmphasisLift != null ? z2EmphasisLift : Z2_EMPHASIS_LIFT)
}
}
return state2
}
function createSelectDefaultState(el2, stateName, state2) {
if (state2) {
if (state2.z2 == null) {
state2 = extend({}, state2)
var z2SelectLift = el2.z2SelectLift
state2.z2 =
el2.z2 + (z2SelectLift != null ? z2SelectLift : Z2_SELECT_LIFT)
}
}
return state2
}
function createBlurDefaultState(el2, stateName, state2) {
var hasBlur = indexOf(el2.currentStates, stateName) >= 0
var currentOpacity = el2.style.opacity
var fromState = !hasBlur
? getFromStateStyle(el2, ['opacity'], stateName, {
opacity: 1,
})
: null
state2 = state2 || {}
var blurStyle = state2.style || {}
if (blurStyle.opacity == null) {
state2 = extend({}, state2)
blurStyle = extend(
{
opacity: hasBlur ? currentOpacity : fromState.opacity * 0.1,
},
blurStyle
)
state2.style = blurStyle
}
return state2
}
function elementStateProxy(stateName, targetStates) {
var state2 = this.states[stateName]
if (this.style) {
if (stateName === 'emphasis') {
return createEmphasisDefaultState(this, stateName, targetStates, state2)
} else if (stateName === 'blur') {
return createBlurDefaultState(this, stateName, state2)
} else if (stateName === 'select') {
return createSelectDefaultState(this, stateName, state2)
}
}
return state2
}
function setDefaultStateProxy(el2) {
el2.stateProxy = elementStateProxy
var textContent = el2.getTextContent()
var textGuide = el2.getTextGuideLine()
if (textContent) {
textContent.stateProxy = elementStateProxy
}
if (textGuide) {
textGuide.stateProxy = elementStateProxy
}
}
function enterEmphasisWhenMouseOver(el2, e2) {
!shouldSilent(el2, e2) &&
!el2.__highByOuter &&
traverseUpdateState(el2, singleEnterEmphasis)
}
function leaveEmphasisWhenMouseOut(el2, e2) {
!shouldSilent(el2, e2) &&
!el2.__highByOuter &&
traverseUpdateState(el2, singleLeaveEmphasis)
}
function enterEmphasis(el2, highlightDigit) {
el2.__highByOuter |= 1 << (highlightDigit || 0)
traverseUpdateState(el2, singleEnterEmphasis)
}
function leaveEmphasis(el2, highlightDigit) {
!(el2.__highByOuter &= ~(1 << (highlightDigit || 0))) &&
traverseUpdateState(el2, singleLeaveEmphasis)
}
function enterBlur(el2) {
traverseUpdateState(el2, singleEnterBlur)
}
function leaveBlur(el2) {
traverseUpdateState(el2, singleLeaveBlur)
}
function enterSelect(el2) {
traverseUpdateState(el2, singleEnterSelect)
}
function leaveSelect(el2) {
traverseUpdateState(el2, singleLeaveSelect)
}
function shouldSilent(el2, e2) {
return el2.__highDownSilentOnTouch && e2.zrByTouch
}
function allLeaveBlur(api) {
var model = api.getModel()
var leaveBlurredSeries = []
var allComponentViews = []
model.eachComponent(function (componentType, componentModel) {
var componentStates = getComponentStates(componentModel)
var isSeries2 = componentType === 'series'
var view2 = isSeries2
? api.getViewOfSeriesModel(componentModel)
: api.getViewOfComponentModel(componentModel)
!isSeries2 && allComponentViews.push(view2)
if (componentStates.isBlured) {
view2.group.traverse(function (child) {
singleLeaveBlur(child)
})
isSeries2 && leaveBlurredSeries.push(componentModel)
}
componentStates.isBlured = false
})
each$f(allComponentViews, function (view2) {
if (view2 && view2.toggleBlurSeries) {
view2.toggleBlurSeries(leaveBlurredSeries, false, model)
}
})
}
function blurSeries(targetSeriesIndex, focus2, blurScope, api) {
var ecModel = api.getModel()
blurScope = blurScope || 'coordinateSystem'
function leaveBlurOfIndices(data2, dataIndices) {
for (var i2 = 0; i2 < dataIndices.length; i2++) {
var itemEl = data2.getItemGraphicEl(dataIndices[i2])
itemEl && leaveBlur(itemEl)
}
}
if (targetSeriesIndex == null) {
return
}
if (!focus2 || focus2 === 'none') {
return
}
var targetSeriesModel = ecModel.getSeriesByIndex(targetSeriesIndex)
var targetCoordSys = targetSeriesModel.coordinateSystem
if (targetCoordSys && targetCoordSys.master) {
targetCoordSys = targetCoordSys.master
}
var blurredSeries = []
ecModel.eachSeries(function (seriesModel) {
var sameSeries = targetSeriesModel === seriesModel
var coordSys = seriesModel.coordinateSystem
if (coordSys && coordSys.master) {
coordSys = coordSys.master
}
var sameCoordSys =
coordSys && targetCoordSys ? coordSys === targetCoordSys : sameSeries
if (
!(
(blurScope === 'series' && !sameSeries) ||
(blurScope === 'coordinateSystem' && !sameCoordSys) ||
(focus2 === 'series' && sameSeries)
)
) {
var view2 = api.getViewOfSeriesModel(seriesModel)
view2.group.traverse(function (child) {
if (child.__highByOuter && sameSeries && focus2 === 'self') {
return
}
singleEnterBlur(child)
})
if (isArrayLike$3(focus2)) {
leaveBlurOfIndices(seriesModel.getData(), focus2)
} else if (isObject$b(focus2)) {
var dataTypes = keys$4(focus2)
for (var d3 = 0; d3 < dataTypes.length; d3++) {
leaveBlurOfIndices(
seriesModel.getData(dataTypes[d3]),
focus2[dataTypes[d3]]
)
}
}
blurredSeries.push(seriesModel)
getComponentStates(seriesModel).isBlured = true
}
})
ecModel.eachComponent(function (componentType, componentModel) {
if (componentType === 'series') {
return
}
var view2 = api.getViewOfComponentModel(componentModel)
if (view2 && view2.toggleBlurSeries) {
view2.toggleBlurSeries(blurredSeries, true, ecModel)
}
})
}
function blurComponent(componentMainType, componentIndex, api) {
if (componentMainType == null || componentIndex == null) {
return
}
var componentModel = api
.getModel()
.getComponent(componentMainType, componentIndex)
if (!componentModel) {
return
}
getComponentStates(componentModel).isBlured = true
var view2 = api.getViewOfComponentModel(componentModel)
if (!view2 || !view2.focusBlurEnabled) {
return
}
view2.group.traverse(function (child) {
singleEnterBlur(child)
})
}
function blurSeriesFromHighlightPayload(seriesModel, payload, api) {
var seriesIndex = seriesModel.seriesIndex
var data2 = seriesModel.getData(payload.dataType)
if (!data2) {
return
}
var dataIndex = queryDataIndex(data2, payload)
dataIndex = (isArray$6(dataIndex) ? dataIndex[0] : dataIndex) || 0
var el2 = data2.getItemGraphicEl(dataIndex)
if (!el2) {
var count2 = data2.count()
var current2 = 0
while (!el2 && current2 < count2) {
el2 = data2.getItemGraphicEl(current2++)
}
}
if (el2) {
var ecData = getECData(el2)
blurSeries(seriesIndex, ecData.focus, ecData.blurScope, api)
} else {
var focus_1 = seriesModel.get(['emphasis', 'focus'])
var blurScope = seriesModel.get(['emphasis', 'blurScope'])
if (focus_1 != null) {
blurSeries(seriesIndex, focus_1, blurScope, api)
}
}
}
function findComponentHighDownDispatchers(
componentMainType,
componentIndex,
name2,
api
) {
var ret = {
focusSelf: false,
dispatchers: null,
}
if (
componentMainType == null ||
componentMainType === 'series' ||
componentIndex == null ||
name2 == null
) {
return ret
}
var componentModel = api
.getModel()
.getComponent(componentMainType, componentIndex)
if (!componentModel) {
return ret
}
var view2 = api.getViewOfComponentModel(componentModel)
if (!view2 || !view2.findHighDownDispatchers) {
return ret
}
var dispatchers = view2.findHighDownDispatchers(name2)
var focusSelf
for (var i2 = 0; i2 < dispatchers.length; i2++) {
if (getECData(dispatchers[i2]).focus === 'self') {
focusSelf = true
break
}
}
return {
focusSelf,
dispatchers,
}
}
function handleGlobalMouseOverForHighDown(dispatcher, e2, api) {
var ecData = getECData(dispatcher)
var _a2 = findComponentHighDownDispatchers(
ecData.componentMainType,
ecData.componentIndex,
ecData.componentHighDownName,
api
),
dispatchers = _a2.dispatchers,
focusSelf = _a2.focusSelf
if (dispatchers) {
if (focusSelf) {
blurComponent(ecData.componentMainType, ecData.componentIndex, api)
}
each$f(dispatchers, function (dispatcher2) {
return enterEmphasisWhenMouseOver(dispatcher2, e2)
})
} else {
blurSeries(ecData.seriesIndex, ecData.focus, ecData.blurScope, api)
if (ecData.focus === 'self') {
blurComponent(ecData.componentMainType, ecData.componentIndex, api)
}
enterEmphasisWhenMouseOver(dispatcher, e2)
}
}
function handleGlobalMouseOutForHighDown(dispatcher, e2, api) {
allLeaveBlur(api)
var ecData = getECData(dispatcher)
var dispatchers = findComponentHighDownDispatchers(
ecData.componentMainType,
ecData.componentIndex,
ecData.componentHighDownName,
api
).dispatchers
if (dispatchers) {
each$f(dispatchers, function (dispatcher2) {
return leaveEmphasisWhenMouseOut(dispatcher2, e2)
})
} else {
leaveEmphasisWhenMouseOut(dispatcher, e2)
}
}
function toggleSelectionFromPayload(seriesModel, payload, api) {
if (!isSelectChangePayload(payload)) {
return
}
var dataType2 = payload.dataType
var data2 = seriesModel.getData(dataType2)
var dataIndex = queryDataIndex(data2, payload)
if (!isArray$6(dataIndex)) {
dataIndex = [dataIndex]
}
seriesModel[
payload.type === TOGGLE_SELECT_ACTION_TYPE
? 'toggleSelect'
: payload.type === SELECT_ACTION_TYPE
? 'select'
: 'unselect'
](dataIndex, dataType2)
}
function updateSeriesElementSelection(seriesModel) {
var allData = seriesModel.getAllData()
each$f(allData, function (_a2) {
var data2 = _a2.data,
type4 = _a2.type
data2.eachItemGraphicEl(function (el2, idx) {
seriesModel.isSelected(idx, type4) ? enterSelect(el2) : leaveSelect(el2)
})
})
}
function getAllSelectedIndices(ecModel) {
var ret = []
ecModel.eachSeries(function (seriesModel) {
var allData = seriesModel.getAllData()
each$f(allData, function (_a2) {
_a2.data
var type4 = _a2.type
var dataIndices = seriesModel.getSelectedDataIndices()
if (dataIndices.length > 0) {
var item2 = {
dataIndex: dataIndices,
seriesIndex: seriesModel.seriesIndex,
}
if (type4 != null) {
item2.dataType = type4
}
ret.push(item2)
}
})
})
return ret
}
function enableHoverEmphasis(el2, focus2, blurScope) {
setAsHighDownDispatcher(el2, true)
traverseUpdateState(el2, setDefaultStateProxy)
enableHoverFocus(el2, focus2, blurScope)
}
function disableHoverEmphasis(el2) {
setAsHighDownDispatcher(el2, false)
}
function toggleHoverEmphasis(el2, focus2, blurScope, isDisabled) {
isDisabled
? disableHoverEmphasis(el2)
: enableHoverEmphasis(el2, focus2, blurScope)
}
function enableHoverFocus(el2, focus2, blurScope) {
var ecData = getECData(el2)
if (focus2 != null) {
ecData.focus = focus2
ecData.blurScope = blurScope
} else if (ecData.focus) {
ecData.focus = null
}
}
var OTHER_STATES = ['emphasis', 'blur', 'select']
var defaultStyleGetterMap = {
itemStyle: 'getItemStyle',
lineStyle: 'getLineStyle',
areaStyle: 'getAreaStyle',
}
function setStatesStylesFromModel(el2, itemModel, styleType, getter) {
styleType = styleType || 'itemStyle'
for (var i2 = 0; i2 < OTHER_STATES.length; i2++) {
var stateName = OTHER_STATES[i2]
var model = itemModel.getModel([stateName, styleType])
var state2 = el2.ensureState(stateName)
state2.style = getter
? getter(model)
: model[defaultStyleGetterMap[styleType]]()
}
}
function setAsHighDownDispatcher(el2, asDispatcher) {
var disable = asDispatcher === false
var extendedEl = el2
if (el2.highDownSilentOnTouch) {
extendedEl.__highDownSilentOnTouch = el2.highDownSilentOnTouch
}
if (!disable || extendedEl.__highDownDispatcher) {
extendedEl.__highByOuter = extendedEl.__highByOuter || 0
extendedEl.__highDownDispatcher = !disable
}
}
function isHighDownDispatcher(el2) {
return !!(el2 && el2.__highDownDispatcher)
}
function enableComponentHighDownFeatures(
el2,
componentModel,
componentHighDownName
) {
var ecData = getECData(el2)
ecData.componentMainType = componentModel.mainType
ecData.componentIndex = componentModel.componentIndex
ecData.componentHighDownName = componentHighDownName
}
function getHighlightDigit(highlightKey) {
var highlightDigit = _highlightKeyMap[highlightKey]
if (highlightDigit == null && _highlightNextDigit <= 32) {
highlightDigit = _highlightKeyMap[highlightKey] = _highlightNextDigit++
}
return highlightDigit
}
function isSelectChangePayload(payload) {
var payloadType = payload.type
return (
payloadType === SELECT_ACTION_TYPE ||
payloadType === UNSELECT_ACTION_TYPE ||
payloadType === TOGGLE_SELECT_ACTION_TYPE
)
}
function isHighDownPayload(payload) {
var payloadType = payload.type
return (
payloadType === HIGHLIGHT_ACTION_TYPE ||
payloadType === DOWNPLAY_ACTION_TYPE
)
}
function savePathStates(el2) {
var store2 = getSavedStates(el2)
store2.normalFill = el2.style.fill
store2.normalStroke = el2.style.stroke
var selectState = el2.states.select || {}
store2.selectFill = (selectState.style && selectState.style.fill) || null
store2.selectStroke = (selectState.style && selectState.style.stroke) || null
}
var CMD$2 = PathProxy$1.CMD
var points$2 = [[], [], []]
var mathSqrt$2 = Math.sqrt
var mathAtan2 = Math.atan2
function transformPath(path, m2) {
if (!m2) {
return
}
var data2 = path.data
var len2 = path.len()
var cmd
var nPoint
var i2
var j2
var k2
var p2
var M2 = CMD$2.M
var C2 = CMD$2.C
var L2 = CMD$2.L
var R2 = CMD$2.R
var A2 = CMD$2.A
var Q2 = CMD$2.Q
for (i2 = 0, j2 = 0; i2 < len2; ) {
cmd = data2[i2++]
j2 = i2
nPoint = 0
switch (cmd) {
case M2:
nPoint = 1
break
case L2:
nPoint = 1
break
case C2:
nPoint = 3
break
case Q2:
nPoint = 2
break
case A2:
var x2 = m2[4]
var y2 = m2[5]
var sx = mathSqrt$2(m2[0] * m2[0] + m2[1] * m2[1])
var sy = mathSqrt$2(m2[2] * m2[2] + m2[3] * m2[3])
var angle2 = mathAtan2(-m2[1] / sy, m2[0] / sx)
data2[i2] *= sx
data2[i2++] += x2
data2[i2] *= sy
data2[i2++] += y2
data2[i2++] *= sx
data2[i2++] *= sy
data2[i2++] += angle2
data2[i2++] += angle2
i2 += 2
j2 = i2
break
case R2:
p2[0] = data2[i2++]
p2[1] = data2[i2++]
applyTransform$1(p2, p2, m2)
data2[j2++] = p2[0]
data2[j2++] = p2[1]
p2[0] += data2[i2++]
p2[1] += data2[i2++]
applyTransform$1(p2, p2, m2)
data2[j2++] = p2[0]
data2[j2++] = p2[1]
}
for (k2 = 0; k2 < nPoint; k2++) {
var p_1 = points$2[k2]
p_1[0] = data2[i2++]
p_1[1] = data2[i2++]
applyTransform$1(p_1, p_1, m2)
data2[j2++] = p_1[0]
data2[j2++] = p_1[1]
}
}
path.increaseVersion()
}
var mathSqrt$1 = Math.sqrt
var mathSin$2 = Math.sin
var mathCos$2 = Math.cos
var PI$7 = Math.PI
function vMag(v4) {
return Math.sqrt(v4[0] * v4[0] + v4[1] * v4[1])
}
function vRatio(u2, v4) {
return (u2[0] * v4[0] + u2[1] * v4[1]) / (vMag(u2) * vMag(v4))
}
function vAngle(u2, v4) {
return (u2[0] * v4[1] < u2[1] * v4[0] ? -1 : 1) * Math.acos(vRatio(u2, v4))
}
function processArc(x1, y1, x2, y2, fa2, fs, rx, ry, psiDeg, cmd, path) {
var psi = psiDeg * (PI$7 / 180)
var xp = (mathCos$2(psi) * (x1 - x2)) / 2 + (mathSin$2(psi) * (y1 - y2)) / 2
var yp =
(-1 * mathSin$2(psi) * (x1 - x2)) / 2 + (mathCos$2(psi) * (y1 - y2)) / 2
var lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry)
if (lambda > 1) {
rx *= mathSqrt$1(lambda)
ry *= mathSqrt$1(lambda)
}
var f2 =
(fa2 === fs ? -1 : 1) *
mathSqrt$1(
(rx * rx * (ry * ry) - rx * rx * (yp * yp) - ry * ry * (xp * xp)) /
(rx * rx * (yp * yp) + ry * ry * (xp * xp))
) || 0
var cxp = (f2 * rx * yp) / ry
var cyp = (f2 * -ry * xp) / rx
var cx = (x1 + x2) / 2 + mathCos$2(psi) * cxp - mathSin$2(psi) * cyp
var cy = (y1 + y2) / 2 + mathSin$2(psi) * cxp + mathCos$2(psi) * cyp
var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry])
var u2 = [(xp - cxp) / rx, (yp - cyp) / ry]
var v4 = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry]
var dTheta = vAngle(u2, v4)
if (vRatio(u2, v4) <= -1) {
dTheta = PI$7
}
if (vRatio(u2, v4) >= 1) {
dTheta = 0
}
if (dTheta < 0) {
var n2 = Math.round((dTheta / PI$7) * 1e6) / 1e6
dTheta = PI$7 * 2 + (n2 % 2) * PI$7
}
path.addData(cmd, cx, cy, rx, ry, theta, dTheta, psi, fs)
}
var commandReg = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/gi
var numberReg$1 = /-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g
function createPathProxyFromString(data2) {
var path = new PathProxy$1()
if (!data2) {
return path
}
var cpx = 0
var cpy = 0
var subpathX = cpx
var subpathY = cpy
var prevCmd
var CMD2 = PathProxy$1.CMD
var cmdList = data2.match(commandReg)
if (!cmdList) {
return path
}
for (var l2 = 0; l2 < cmdList.length; l2++) {
var cmdText = cmdList[l2]
var cmdStr = cmdText.charAt(0)
var cmd = void 0
var p2 = cmdText.match(numberReg$1) || []
var pLen = p2.length
for (var i2 = 0; i2 < pLen; i2++) {
p2[i2] = parseFloat(p2[i2])
}
var off2 = 0
while (off2 < pLen) {
var ctlPtx = void 0
var ctlPty = void 0
var rx = void 0
var ry = void 0
var psi = void 0
var fa2 = void 0
var fs = void 0
var x1 = cpx
var y1 = cpy
var len2 = void 0
var pathData = void 0
switch (cmdStr) {
case 'l':
cpx += p2[off2++]
cpy += p2[off2++]
cmd = CMD2.L
path.addData(cmd, cpx, cpy)
break
case 'L':
cpx = p2[off2++]
cpy = p2[off2++]
cmd = CMD2.L
path.addData(cmd, cpx, cpy)
break
case 'm':
cpx += p2[off2++]
cpy += p2[off2++]
cmd = CMD2.M
path.addData(cmd, cpx, cpy)
subpathX = cpx
subpathY = cpy
cmdStr = 'l'
break
case 'M':
cpx = p2[off2++]
cpy = p2[off2++]
cmd = CMD2.M
path.addData(cmd, cpx, cpy)
subpathX = cpx
subpathY = cpy
cmdStr = 'L'
break
case 'h':
cpx += p2[off2++]
cmd = CMD2.L
path.addData(cmd, cpx, cpy)
break
case 'H':
cpx = p2[off2++]
cmd = CMD2.L
path.addData(cmd, cpx, cpy)
break
case 'v':
cpy += p2[off2++]
cmd = CMD2.L
path.addData(cmd, cpx, cpy)
break
case 'V':
cpy = p2[off2++]
cmd = CMD2.L
path.addData(cmd, cpx, cpy)
break
case 'C':
cmd = CMD2.C
path.addData(
cmd,
p2[off2++],
p2[off2++],
p2[off2++],
p2[off2++],
p2[off2++],
p2[off2++]
)
cpx = p2[off2 - 2]
cpy = p2[off2 - 1]
break
case 'c':
cmd = CMD2.C
path.addData(
cmd,
p2[off2++] + cpx,
p2[off2++] + cpy,
p2[off2++] + cpx,
p2[off2++] + cpy,
p2[off2++] + cpx,
p2[off2++] + cpy
)
cpx += p2[off2 - 2]
cpy += p2[off2 - 1]
break
case 'S':
ctlPtx = cpx
ctlPty = cpy
len2 = path.len()
pathData = path.data
if (prevCmd === CMD2.C) {
ctlPtx += cpx - pathData[len2 - 4]
ctlPty += cpy - pathData[len2 - 3]
}
cmd = CMD2.C
x1 = p2[off2++]
y1 = p2[off2++]
cpx = p2[off2++]
cpy = p2[off2++]
path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy)
break
case 's':
ctlPtx = cpx
ctlPty = cpy
len2 = path.len()
pathData = path.data
if (prevCmd === CMD2.C) {
ctlPtx += cpx - pathData[len2 - 4]
ctlPty += cpy - pathData[len2 - 3]
}
cmd = CMD2.C
x1 = cpx + p2[off2++]
y1 = cpy + p2[off2++]
cpx += p2[off2++]
cpy += p2[off2++]
path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy)
break
case 'Q':
x1 = p2[off2++]
y1 = p2[off2++]
cpx = p2[off2++]
cpy = p2[off2++]
cmd = CMD2.Q
path.addData(cmd, x1, y1, cpx, cpy)
break
case 'q':
x1 = p2[off2++] + cpx
y1 = p2[off2++] + cpy
cpx += p2[off2++]
cpy += p2[off2++]
cmd = CMD2.Q
path.addData(cmd, x1, y1, cpx, cpy)
break
case 'T':
ctlPtx = cpx
ctlPty = cpy
len2 = path.len()
pathData = path.data
if (prevCmd === CMD2.Q) {
ctlPtx += cpx - pathData[len2 - 4]
ctlPty += cpy - pathData[len2 - 3]
}
cpx = p2[off2++]
cpy = p2[off2++]
cmd = CMD2.Q
path.addData(cmd, ctlPtx, ctlPty, cpx, cpy)
break
case 't':
ctlPtx = cpx
ctlPty = cpy
len2 = path.len()
pathData = path.data
if (prevCmd === CMD2.Q) {
ctlPtx += cpx - pathData[len2 - 4]
ctlPty += cpy - pathData[len2 - 3]
}
cpx += p2[off2++]
cpy += p2[off2++]
cmd = CMD2.Q
path.addData(cmd, ctlPtx, ctlPty, cpx, cpy)
break
case 'A':
rx = p2[off2++]
ry = p2[off2++]
psi = p2[off2++]
fa2 = p2[off2++]
fs = p2[off2++]
;(x1 = cpx), (y1 = cpy)
cpx = p2[off2++]
cpy = p2[off2++]
cmd = CMD2.A
processArc(x1, y1, cpx, cpy, fa2, fs, rx, ry, psi, cmd, path)
break
case 'a':
rx = p2[off2++]
ry = p2[off2++]
psi = p2[off2++]
fa2 = p2[off2++]
fs = p2[off2++]
;(x1 = cpx), (y1 = cpy)
cpx += p2[off2++]
cpy += p2[off2++]
cmd = CMD2.A
processArc(x1, y1, cpx, cpy, fa2, fs, rx, ry, psi, cmd, path)
break
}
}
if (cmdStr === 'z' || cmdStr === 'Z') {
cmd = CMD2.Z
path.addData(cmd)
cpx = subpathX
cpy = subpathY
}
prevCmd = cmd
}
path.toStatic()
return path
}
var SVGPath = (function (_super) {
__extends$1(SVGPath2, _super)
function SVGPath2() {
return (_super !== null && _super.apply(this, arguments)) || this
}
SVGPath2.prototype.applyTransform = function (m2) {}
return SVGPath2
})(Path$1)
function isPathProxy(path) {
return path.setData != null
}
function createPathOptions(str, opts) {
var pathProxy = createPathProxyFromString(str)
var innerOpts = extend({}, opts)
innerOpts.buildPath = function (path) {
if (isPathProxy(path)) {
path.setData(pathProxy.data)
var ctx = path.getContext()
if (ctx) {
path.rebuildPath(ctx, 1)
}
} else {
var ctx = path
pathProxy.rebuildPath(ctx, 1)
}
}
innerOpts.applyTransform = function (m2) {
transformPath(pathProxy, m2)
this.dirtyShape()
}
return innerOpts
}
function createFromString(str, opts) {
return new SVGPath(createPathOptions(str, opts))
}
function extendFromString(str, defaultOpts) {
var innerOpts = createPathOptions(str, defaultOpts)
var Sub = (function (_super) {
__extends$1(Sub2, _super)
function Sub2(opts) {
var _this = _super.call(this, opts) || this
_this.applyTransform = innerOpts.applyTransform
_this.buildPath = innerOpts.buildPath
return _this
}
return Sub2
})(SVGPath)
return Sub
}
function mergePath$1(pathEls, opts) {
var pathList = []
var len2 = pathEls.length
for (var i2 = 0; i2 < len2; i2++) {
var pathEl = pathEls[i2]
pathList.push(pathEl.getUpdatedPathProxy(true))
}
var pathBundle = new Path$1(opts)
pathBundle.createPathProxy()
pathBundle.buildPath = function (path) {
if (isPathProxy(path)) {
path.appendPath(pathList)
var ctx = path.getContext()
if (ctx) {
path.rebuildPath(ctx, 1)
}
}
}
return pathBundle
}
function clonePath(sourcePath, opts) {
opts = opts || {}
var path = new Path$1()
if (sourcePath.shape) {
path.setShape(sourcePath.shape)
}
path.setStyle(sourcePath.style)
if (opts.bakeTransform) {
transformPath(path.path, sourcePath.getComputedTransform())
} else {
if (opts.toLocal) {
path.setLocalTransform(sourcePath.getComputedTransform())
} else {
path.copyTransform(sourcePath)
}
}
path.buildPath = sourcePath.buildPath
path.applyTransform = path.applyTransform
path.z = sourcePath.z
path.z2 = sourcePath.z2
path.zlevel = sourcePath.zlevel
return path
}
var CircleShape = (function () {
function CircleShape2() {
this.cx = 0
this.cy = 0
this.r = 0
}
return CircleShape2
})()
var Circle$1 = (function (_super) {
__extends$1(Circle2, _super)
function Circle2(opts) {
return _super.call(this, opts) || this
}
Circle2.prototype.getDefaultShape = function () {
return new CircleShape()
}
Circle2.prototype.buildPath = function (ctx, shape) {
ctx.moveTo(shape.cx + shape.r, shape.cy)
ctx.arc(shape.cx, shape.cy, shape.r, 0, Math.PI * 2)
}
return Circle2
})(Path$1)
Circle$1.prototype.type = 'circle'
var Circle$2 = Circle$1
var EllipseShape = (function () {
function EllipseShape2() {
this.cx = 0
this.cy = 0
this.rx = 0
this.ry = 0
}
return EllipseShape2
})()
var Ellipse = (function (_super) {
__extends$1(Ellipse2, _super)
function Ellipse2(opts) {
return _super.call(this, opts) || this
}
Ellipse2.prototype.getDefaultShape = function () {
return new EllipseShape()
}
Ellipse2.prototype.buildPath = function (ctx, shape) {
var k2 = 0.5522848
var x2 = shape.cx
var y2 = shape.cy
var a2 = shape.rx
var b2 = shape.ry
var ox = a2 * k2
var oy = b2 * k2
ctx.moveTo(x2 - a2, y2)
ctx.bezierCurveTo(x2 - a2, y2 - oy, x2 - ox, y2 - b2, x2, y2 - b2)
ctx.bezierCurveTo(x2 + ox, y2 - b2, x2 + a2, y2 - oy, x2 + a2, y2)
ctx.bezierCurveTo(x2 + a2, y2 + oy, x2 + ox, y2 + b2, x2, y2 + b2)
ctx.bezierCurveTo(x2 - ox, y2 + b2, x2 - a2, y2 + oy, x2 - a2, y2)
ctx.closePath()
}
return Ellipse2
})(Path$1)
Ellipse.prototype.type = 'ellipse'
var Ellipse$1 = Ellipse
var PI$6 = Math.PI
var PI2$3 = PI$6 * 2
var mathSin$1 = Math.sin
var mathCos$1 = Math.cos
var mathACos = Math.acos
var mathATan2 = Math.atan2
var mathAbs$1 = Math.abs
var mathSqrt = Math.sqrt
var mathMax$7 = Math.max
var mathMin$7 = Math.min
var e = 1e-4
function intersect(x0, y0, x1, y1, x2, y2, x3, y3) {
var dx10 = x1 - x0
var dy10 = y1 - y0
var dx32 = x3 - x2
var dy32 = y3 - y2
var t3 = dy32 * dx10 - dx32 * dy10
if (t3 * t3 < e) {
return
}
t3 = (dx32 * (y0 - y2) - dy32 * (x0 - x2)) / t3
return [x0 + t3 * dx10, y0 + t3 * dy10]
}
function computeCornerTangents(x0, y0, x1, y1, radius, cr, clockwise) {
var x01 = x0 - x1
var y01 = y0 - y1
var lo = (clockwise ? cr : -cr) / mathSqrt(x01 * x01 + y01 * y01)
var ox = lo * y01
var oy = -lo * x01
var x11 = x0 + ox
var y11 = y0 + oy
var x10 = x1 + ox
var y10 = y1 + oy
var x00 = (x11 + x10) / 2
var y00 = (y11 + y10) / 2
var dx = x10 - x11
var dy = y10 - y11
var d22 = dx * dx + dy * dy
var r2 = radius - cr
var s2 = x11 * y10 - x10 * y11
var d3 = (dy < 0 ? -1 : 1) * mathSqrt(mathMax$7(0, r2 * r2 * d22 - s2 * s2))
var cx0 = (s2 * dy - dx * d3) / d22
var cy0 = (-s2 * dx - dy * d3) / d22
var cx1 = (s2 * dy + dx * d3) / d22
var cy1 = (-s2 * dx + dy * d3) / d22
var dx0 = cx0 - x00
var dy0 = cy0 - y00
var dx1 = cx1 - x00
var dy1 = cy1 - y00
if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) {
cx0 = cx1
cy0 = cy1
}
return {
cx: cx0,
cy: cy0,
x0: -ox,
y0: -oy,
x1: cx0 * (radius / r2 - 1),
y1: cy0 * (radius / r2 - 1),
}
}
function normalizeCornerRadius(cr) {
var arr
if (isArray$6(cr)) {
var len2 = cr.length
if (!len2) {
return cr
}
if (len2 === 1) {
arr = [cr[0], cr[0], 0, 0]
} else if (len2 === 2) {
arr = [cr[0], cr[0], cr[1], cr[1]]
} else if (len2 === 3) {
arr = cr.concat(cr[2])
} else {
arr = cr
}
} else {
arr = [cr, cr, cr, cr]
}
return arr
}
function buildPath$1(ctx, shape) {
var _a2
var radius = mathMax$7(shape.r, 0)
var innerRadius = mathMax$7(shape.r0 || 0, 0)
var hasRadius = radius > 0
var hasInnerRadius = innerRadius > 0
if (!hasRadius && !hasInnerRadius) {
return
}
if (!hasRadius) {
radius = innerRadius
innerRadius = 0
}
if (innerRadius > radius) {
var tmp = radius
radius = innerRadius
innerRadius = tmp
}
var startAngle = shape.startAngle,
endAngle = shape.endAngle
if (isNaN(startAngle) || isNaN(endAngle)) {
return
}
var cx = shape.cx,
cy = shape.cy
var clockwise = !!shape.clockwise
var arc = mathAbs$1(endAngle - startAngle)
var mod = arc > PI2$3 && arc % PI2$3
mod > e && (arc = mod)
if (!(radius > e)) {
ctx.moveTo(cx, cy)
} else if (arc > PI2$3 - e) {
ctx.moveTo(
cx + radius * mathCos$1(startAngle),
cy + radius * mathSin$1(startAngle)
)
ctx.arc(cx, cy, radius, startAngle, endAngle, !clockwise)
if (innerRadius > e) {
ctx.moveTo(
cx + innerRadius * mathCos$1(endAngle),
cy + innerRadius * mathSin$1(endAngle)
)
ctx.arc(cx, cy, innerRadius, endAngle, startAngle, clockwise)
}
} else {
var icrStart = void 0
var icrEnd = void 0
var ocrStart = void 0
var ocrEnd = void 0
var ocrs = void 0
var ocre = void 0
var icrs = void 0
var icre = void 0
var ocrMax = void 0
var icrMax = void 0
var limitedOcrMax = void 0
var limitedIcrMax = void 0
var xre = void 0
var yre = void 0
var xirs = void 0
var yirs = void 0
var xrs = radius * mathCos$1(startAngle)
var yrs = radius * mathSin$1(startAngle)
var xire = innerRadius * mathCos$1(endAngle)
var yire = innerRadius * mathSin$1(endAngle)
var hasArc = arc > e
if (hasArc) {
var cornerRadius = shape.cornerRadius
if (cornerRadius) {
;(_a2 = normalizeCornerRadius(cornerRadius)),
(icrStart = _a2[0]),
(icrEnd = _a2[1]),
(ocrStart = _a2[2]),
(ocrEnd = _a2[3])
}
var halfRd = mathAbs$1(radius - innerRadius) / 2
ocrs = mathMin$7(halfRd, ocrStart)
ocre = mathMin$7(halfRd, ocrEnd)
icrs = mathMin$7(halfRd, icrStart)
icre = mathMin$7(halfRd, icrEnd)
limitedOcrMax = ocrMax = mathMax$7(ocrs, ocre)
limitedIcrMax = icrMax = mathMax$7(icrs, icre)
if (ocrMax > e || icrMax > e) {
xre = radius * mathCos$1(endAngle)
yre = radius * mathSin$1(endAngle)
xirs = innerRadius * mathCos$1(startAngle)
yirs = innerRadius * mathSin$1(startAngle)
if (arc < PI$6) {
var it_1 = intersect(xrs, yrs, xirs, yirs, xre, yre, xire, yire)
if (it_1) {
var x0 = xrs - it_1[0]
var y0 = yrs - it_1[1]
var x1 = xre - it_1[0]
var y1 = yre - it_1[1]
var a2 =
1 /
mathSin$1(
mathACos(
(x0 * x1 + y0 * y1) /
(mathSqrt(x0 * x0 + y0 * y0) * mathSqrt(x1 * x1 + y1 * y1))
) / 2
)
var b2 = mathSqrt(it_1[0] * it_1[0] + it_1[1] * it_1[1])
limitedOcrMax = mathMin$7(ocrMax, (radius - b2) / (a2 + 1))
limitedIcrMax = mathMin$7(icrMax, (innerRadius - b2) / (a2 - 1))
}
}
}
}
if (!hasArc) {
ctx.moveTo(cx + xrs, cy + yrs)
} else if (limitedOcrMax > e) {
var crStart = mathMin$7(ocrStart, limitedOcrMax)
var crEnd = mathMin$7(ocrEnd, limitedOcrMax)
var ct0 = computeCornerTangents(
xirs,
yirs,
xrs,
yrs,
radius,
crStart,
clockwise
)
var ct1 = computeCornerTangents(
xre,
yre,
xire,
yire,
radius,
crEnd,
clockwise
)
ctx.moveTo(cx + ct0.cx + ct0.x0, cy + ct0.cy + ct0.y0)
if (limitedOcrMax < ocrMax && crStart === crEnd) {
ctx.arc(
cx + ct0.cx,
cy + ct0.cy,
limitedOcrMax,
mathATan2(ct0.y0, ct0.x0),
mathATan2(ct1.y0, ct1.x0),
!clockwise
)
} else {
crStart > 0 &&
ctx.arc(
cx + ct0.cx,
cy + ct0.cy,
crStart,
mathATan2(ct0.y0, ct0.x0),
mathATan2(ct0.y1, ct0.x1),
!clockwise
)
ctx.arc(
cx,
cy,
radius,
mathATan2(ct0.cy + ct0.y1, ct0.cx + ct0.x1),
mathATan2(ct1.cy + ct1.y1, ct1.cx + ct1.x1),
!clockwise
)
crEnd > 0 &&
ctx.arc(
cx + ct1.cx,
cy + ct1.cy,
crEnd,
mathATan2(ct1.y1, ct1.x1),
mathATan2(ct1.y0, ct1.x0),
!clockwise
)
}
} else {
ctx.moveTo(cx + xrs, cy + yrs)
ctx.arc(cx, cy, radius, startAngle, endAngle, !clockwise)
}
if (!(innerRadius > e) || !hasArc) {
ctx.lineTo(cx + xire, cy + yire)
} else if (limitedIcrMax > e) {
var crStart = mathMin$7(icrStart, limitedIcrMax)
var crEnd = mathMin$7(icrEnd, limitedIcrMax)
var ct0 = computeCornerTangents(
xire,
yire,
xre,
yre,
innerRadius,
-crEnd,
clockwise
)
var ct1 = computeCornerTangents(
xrs,
yrs,
xirs,
yirs,
innerRadius,
-crStart,
clockwise
)
ctx.lineTo(cx + ct0.cx + ct0.x0, cy + ct0.cy + ct0.y0)
if (limitedIcrMax < icrMax && crStart === crEnd) {
ctx.arc(
cx + ct0.cx,
cy + ct0.cy,
limitedIcrMax,
mathATan2(ct0.y0, ct0.x0),
mathATan2(ct1.y0, ct1.x0),
!clockwise
)
} else {
crEnd > 0 &&
ctx.arc(
cx + ct0.cx,
cy + ct0.cy,
crEnd,
mathATan2(ct0.y0, ct0.x0),
mathATan2(ct0.y1, ct0.x1),
!clockwise
)
ctx.arc(
cx,
cy,
innerRadius,
mathATan2(ct0.cy + ct0.y1, ct0.cx + ct0.x1),
mathATan2(ct1.cy + ct1.y1, ct1.cx + ct1.x1),
clockwise
)
crStart > 0 &&
ctx.arc(
cx + ct1.cx,
cy + ct1.cy,
crStart,
mathATan2(ct1.y1, ct1.x1),
mathATan2(ct1.y0, ct1.x0),
!clockwise
)
}
} else {
ctx.lineTo(cx + xire, cy + yire)
ctx.arc(cx, cy, innerRadius, endAngle, startAngle, clockwise)
}
}
ctx.closePath()
}
var SectorShape = (function () {
function SectorShape2() {
this.cx = 0
this.cy = 0
this.r0 = 0
this.r = 0
this.startAngle = 0
this.endAngle = Math.PI * 2
this.clockwise = true
this.cornerRadius = 0
}
return SectorShape2
})()
var Sector = (function (_super) {
__extends$1(Sector2, _super)
function Sector2(opts) {
return _super.call(this, opts) || this
}
Sector2.prototype.getDefaultShape = function () {
return new SectorShape()
}
Sector2.prototype.buildPath = function (ctx, shape) {
buildPath$1(ctx, shape)
}
Sector2.prototype.isZeroArea = function () {
return (
this.shape.startAngle === this.shape.endAngle ||
this.shape.r === this.shape.r0
)
}
return Sector2
})(Path$1)
Sector.prototype.type = 'sector'
var Sector$1 = Sector
var RingShape = (function () {
function RingShape2() {
this.cx = 0
this.cy = 0
this.r = 0
this.r0 = 0
}
return RingShape2
})()
var Ring = (function (_super) {
__extends$1(Ring2, _super)
function Ring2(opts) {
return _super.call(this, opts) || this
}
Ring2.prototype.getDefaultShape = function () {
return new RingShape()
}
Ring2.prototype.buildPath = function (ctx, shape) {
var x2 = shape.cx
var y2 = shape.cy
var PI22 = Math.PI * 2
ctx.moveTo(x2 + shape.r, y2)
ctx.arc(x2, y2, shape.r, 0, PI22, false)
ctx.moveTo(x2 + shape.r0, y2)
ctx.arc(x2, y2, shape.r0, 0, PI22, true)
}
return Ring2
})(Path$1)
Ring.prototype.type = 'ring'
var Ring$1 = Ring
function smoothBezier(points2, smooth, isLoop, constraint) {
var cps = []
var v4 = []
var v12 = []
var v22 = []
var prevPoint
var nextPoint
var min3
var max3
if (constraint) {
min3 = [Infinity, Infinity]
max3 = [-Infinity, -Infinity]
for (var i2 = 0, len2 = points2.length; i2 < len2; i2++) {
min$1(min3, min3, points2[i2])
max$2(max3, max3, points2[i2])
}
min$1(min3, min3, constraint[0])
max$2(max3, max3, constraint[1])
}
for (var i2 = 0, len2 = points2.length; i2 < len2; i2++) {
var point = points2[i2]
if (isLoop) {
prevPoint = points2[i2 ? i2 - 1 : len2 - 1]
nextPoint = points2[(i2 + 1) % len2]
} else {
if (i2 === 0 || i2 === len2 - 1) {
cps.push(clone$3(points2[i2]))
continue
} else {
prevPoint = points2[i2 - 1]
nextPoint = points2[i2 + 1]
}
}
sub(v4, nextPoint, prevPoint)
scale$2(v4, v4, smooth)
var d0 = distance(point, prevPoint)
var d1 = distance(point, nextPoint)
var sum2 = d0 + d1
if (sum2 !== 0) {
d0 /= sum2
d1 /= sum2
}
scale$2(v12, v4, -d0)
scale$2(v22, v4, d1)
var cp0 = add([], point, v12)
var cp1 = add([], point, v22)
if (constraint) {
max$2(cp0, cp0, min3)
min$1(cp0, cp0, max3)
max$2(cp1, cp1, min3)
min$1(cp1, cp1, max3)
}
cps.push(cp0)
cps.push(cp1)
}
if (isLoop) {
cps.push(cps.shift())
}
return cps
}
function buildPath(ctx, shape, closePath) {
var smooth = shape.smooth
var points2 = shape.points
if (points2 && points2.length >= 2) {
if (smooth) {
var controlPoints = smoothBezier(
points2,
smooth,
closePath,
shape.smoothConstraint
)
ctx.moveTo(points2[0][0], points2[0][1])
var len2 = points2.length
for (var i2 = 0; i2 < (closePath ? len2 : len2 - 1); i2++) {
var cp1 = controlPoints[i2 * 2]
var cp2 = controlPoints[i2 * 2 + 1]
var p2 = points2[(i2 + 1) % len2]
ctx.bezierCurveTo(cp1[0], cp1[1], cp2[0], cp2[1], p2[0], p2[1])
}
} else {
ctx.moveTo(points2[0][0], points2[0][1])
for (var i2 = 1, l2 = points2.length; i2 < l2; i2++) {
ctx.lineTo(points2[i2][0], points2[i2][1])
}
}
closePath && ctx.closePath()
}
}
var PolygonShape = (function () {
function PolygonShape2() {
this.points = null
this.smooth = 0
this.smoothConstraint = null
}
return PolygonShape2
})()
var Polygon = (function (_super) {
__extends$1(Polygon2, _super)
function Polygon2(opts) {
return _super.call(this, opts) || this
}
Polygon2.prototype.getDefaultShape = function () {
return new PolygonShape()
}
Polygon2.prototype.buildPath = function (ctx, shape) {
buildPath(ctx, shape, true)
}
return Polygon2
})(Path$1)
Polygon.prototype.type = 'polygon'
var Polygon$1 = Polygon
var PolylineShape = (function () {
function PolylineShape2() {
this.points = null
this.percent = 1
this.smooth = 0
this.smoothConstraint = null
}
return PolylineShape2
})()
var Polyline$2 = (function (_super) {
__extends$1(Polyline2, _super)
function Polyline2(opts) {
return _super.call(this, opts) || this
}
Polyline2.prototype.getDefaultStyle = function () {
return {
stroke: '#000',
fill: null,
}
}
Polyline2.prototype.getDefaultShape = function () {
return new PolylineShape()
}
Polyline2.prototype.buildPath = function (ctx, shape) {
buildPath(ctx, shape, false)
}
return Polyline2
})(Path$1)
Polyline$2.prototype.type = 'polyline'
var Polyline$3 = Polyline$2
var subPixelOptimizeOutputShape = {}
var LineShape = (function () {
function LineShape2() {
this.x1 = 0
this.y1 = 0
this.x2 = 0
this.y2 = 0
this.percent = 1
}
return LineShape2
})()
var Line$3 = (function (_super) {
__extends$1(Line2, _super)
function Line2(opts) {
return _super.call(this, opts) || this
}
Line2.prototype.getDefaultStyle = function () {
return {
stroke: '#000',
fill: null,
}
}
Line2.prototype.getDefaultShape = function () {
return new LineShape()
}
Line2.prototype.buildPath = function (ctx, shape) {
var x1
var y1
var x2
var y2
if (this.subPixelOptimize) {
var optimizedShape = subPixelOptimizeLine$1(
subPixelOptimizeOutputShape,
shape,
this.style
)
x1 = optimizedShape.x1
y1 = optimizedShape.y1
x2 = optimizedShape.x2
y2 = optimizedShape.y2
} else {
x1 = shape.x1
y1 = shape.y1
x2 = shape.x2
y2 = shape.y2
}
var percent = shape.percent
if (percent === 0) {
return
}
ctx.moveTo(x1, y1)
if (percent < 1) {
x2 = x1 * (1 - percent) + x2 * percent
y2 = y1 * (1 - percent) + y2 * percent
}
ctx.lineTo(x2, y2)
}
Line2.prototype.pointAt = function (p2) {
var shape = this.shape
return [
shape.x1 * (1 - p2) + shape.x2 * p2,
shape.y1 * (1 - p2) + shape.y2 * p2,
]
}
return Line2
})(Path$1)
Line$3.prototype.type = 'line'
var Line$4 = Line$3
var out = []
var BezierCurveShape = (function () {
function BezierCurveShape2() {
this.x1 = 0
this.y1 = 0
this.x2 = 0
this.y2 = 0
this.cpx1 = 0
this.cpy1 = 0
this.percent = 1
}
return BezierCurveShape2
})()
function someVectorAt(shape, t3, isTangent) {
var cpx2 = shape.cpx2
var cpy2 = shape.cpy2
if (cpx2 != null || cpy2 != null) {
return [
(isTangent ? cubicDerivativeAt : cubicAt)(
shape.x1,
shape.cpx1,
shape.cpx2,
shape.x2,
t3
),
(isTangent ? cubicDerivativeAt : cubicAt)(
shape.y1,
shape.cpy1,
shape.cpy2,
shape.y2,
t3
),
]
} else {
return [
(isTangent ? quadraticDerivativeAt : quadraticAt$1)(
shape.x1,
shape.cpx1,
shape.x2,
t3
),
(isTangent ? quadraticDerivativeAt : quadraticAt$1)(
shape.y1,
shape.cpy1,
shape.y2,
t3
),
]
}
}
var BezierCurve = (function (_super) {
__extends$1(BezierCurve2, _super)
function BezierCurve2(opts) {
return _super.call(this, opts) || this
}
BezierCurve2.prototype.getDefaultStyle = function () {
return {
stroke: '#000',
fill: null,
}
}
BezierCurve2.prototype.getDefaultShape = function () {
return new BezierCurveShape()
}
BezierCurve2.prototype.buildPath = function (ctx, shape) {
var x1 = shape.x1
var y1 = shape.y1
var x2 = shape.x2
var y2 = shape.y2
var cpx1 = shape.cpx1
var cpy1 = shape.cpy1
var cpx2 = shape.cpx2
var cpy2 = shape.cpy2
var percent = shape.percent
if (percent === 0) {
return
}
ctx.moveTo(x1, y1)
if (cpx2 == null || cpy2 == null) {
if (percent < 1) {
quadraticSubdivide(x1, cpx1, x2, percent, out)
cpx1 = out[1]
x2 = out[2]
quadraticSubdivide(y1, cpy1, y2, percent, out)
cpy1 = out[1]
y2 = out[2]
}
ctx.quadraticCurveTo(cpx1, cpy1, x2, y2)
} else {
if (percent < 1) {
cubicSubdivide(x1, cpx1, cpx2, x2, percent, out)
cpx1 = out[1]
cpx2 = out[2]
x2 = out[3]
cubicSubdivide(y1, cpy1, cpy2, y2, percent, out)
cpy1 = out[1]
cpy2 = out[2]
y2 = out[3]
}
ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2)
}
}
BezierCurve2.prototype.pointAt = function (t3) {
return someVectorAt(this.shape, t3, false)
}
BezierCurve2.prototype.tangentAt = function (t3) {
var p2 = someVectorAt(this.shape, t3, true)
return normalize$3(p2, p2)
}
return BezierCurve2
})(Path$1)
BezierCurve.prototype.type = 'bezier-curve'
var BezierCurve$1 = BezierCurve
var ArcShape = (function () {
function ArcShape2() {
this.cx = 0
this.cy = 0
this.r = 0
this.startAngle = 0
this.endAngle = Math.PI * 2
this.clockwise = true
}
return ArcShape2
})()
var Arc = (function (_super) {
__extends$1(Arc2, _super)
function Arc2(opts) {
return _super.call(this, opts) || this
}
Arc2.prototype.getDefaultStyle = function () {
return {
stroke: '#000',
fill: null,
}
}
Arc2.prototype.getDefaultShape = function () {
return new ArcShape()
}
Arc2.prototype.buildPath = function (ctx, shape) {
var x2 = shape.cx
var y2 = shape.cy
var r2 = Math.max(shape.r, 0)
var startAngle = shape.startAngle
var endAngle = shape.endAngle
var clockwise = shape.clockwise
var unitX = Math.cos(startAngle)
var unitY = Math.sin(startAngle)
ctx.moveTo(unitX * r2 + x2, unitY * r2 + y2)
ctx.arc(x2, y2, r2, startAngle, endAngle, !clockwise)
}
return Arc2
})(Path$1)
Arc.prototype.type = 'arc'
var Arc$1 = Arc
var CompoundPath = (function (_super) {
__extends$1(CompoundPath2, _super)
function CompoundPath2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = 'compound'
return _this
}
CompoundPath2.prototype._updatePathDirty = function () {
var paths = this.shape.paths
var dirtyPath = this.shapeChanged()
for (var i2 = 0; i2 < paths.length; i2++) {
dirtyPath = dirtyPath || paths[i2].shapeChanged()
}
if (dirtyPath) {
this.dirtyShape()
}
}
CompoundPath2.prototype.beforeBrush = function () {
this._updatePathDirty()
var paths = this.shape.paths || []
var scale2 = this.getGlobalScale()
for (var i2 = 0; i2 < paths.length; i2++) {
if (!paths[i2].path) {
paths[i2].createPathProxy()
}
paths[i2].path.setScale(
scale2[0],
scale2[1],
paths[i2].segmentIgnoreThreshold
)
}
}
CompoundPath2.prototype.buildPath = function (ctx, shape) {
var paths = shape.paths || []
for (var i2 = 0; i2 < paths.length; i2++) {
paths[i2].buildPath(ctx, paths[i2].shape, true)
}
}
CompoundPath2.prototype.afterBrush = function () {
var paths = this.shape.paths || []
for (var i2 = 0; i2 < paths.length; i2++) {
paths[i2].pathUpdated()
}
}
CompoundPath2.prototype.getBoundingRect = function () {
this._updatePathDirty.call(this)
return Path$1.prototype.getBoundingRect.call(this)
}
return CompoundPath2
})(Path$1)
var CompoundPath$1 = CompoundPath
var Gradient = (function () {
function Gradient2(colorStops) {
this.colorStops = colorStops || []
}
Gradient2.prototype.addColorStop = function (offset2, color2) {
this.colorStops.push({
offset: offset2,
color: color2,
})
}
return Gradient2
})()
var Gradient$1 = Gradient
var LinearGradient = (function (_super) {
__extends$1(LinearGradient2, _super)
function LinearGradient2(x2, y2, x22, y22, colorStops, globalCoord) {
var _this = _super.call(this, colorStops) || this
_this.x = x2 == null ? 0 : x2
_this.y = y2 == null ? 0 : y2
_this.x2 = x22 == null ? 1 : x22
_this.y2 = y22 == null ? 0 : y22
_this.type = 'linear'
_this.global = globalCoord || false
return _this
}
return LinearGradient2
})(Gradient$1)
var LinearGradient$1 = LinearGradient
var RadialGradient = (function (_super) {
__extends$1(RadialGradient2, _super)
function RadialGradient2(x2, y2, r2, colorStops, globalCoord) {
var _this = _super.call(this, colorStops) || this
_this.x = x2 == null ? 0.5 : x2
_this.y = y2 == null ? 0.5 : y2
_this.r = r2 == null ? 0.5 : r2
_this.type = 'radial'
_this.global = globalCoord || false
return _this
}
return RadialGradient2
})(Gradient$1)
var RadialGradient$1 = RadialGradient
var extent = [0, 0]
var extent2 = [0, 0]
var minTv = new Point$1()
var maxTv = new Point$1()
var OrientedBoundingRect = (function () {
function OrientedBoundingRect2(rect, transform3) {
this._corners = []
this._axes = []
this._origin = [0, 0]
for (var i2 = 0; i2 < 4; i2++) {
this._corners[i2] = new Point$1()
}
for (var i2 = 0; i2 < 2; i2++) {
this._axes[i2] = new Point$1()
}
if (rect) {
this.fromBoundingRect(rect, transform3)
}
}
OrientedBoundingRect2.prototype.fromBoundingRect = function (
rect,
transform3
) {
var corners = this._corners
var axes = this._axes
var x2 = rect.x
var y2 = rect.y
var x22 = x2 + rect.width
var y22 = y2 + rect.height
corners[0].set(x2, y2)
corners[1].set(x22, y2)
corners[2].set(x22, y22)
corners[3].set(x2, y22)
if (transform3) {
for (var i2 = 0; i2 < 4; i2++) {
corners[i2].transform(transform3)
}
}
Point$1.sub(axes[0], corners[1], corners[0])
Point$1.sub(axes[1], corners[3], corners[0])
axes[0].normalize()
axes[1].normalize()
for (var i2 = 0; i2 < 2; i2++) {
this._origin[i2] = axes[i2].dot(corners[0])
}
}
OrientedBoundingRect2.prototype.intersect = function (other, mtv) {
var overlapped = true
var noMtv = !mtv
minTv.set(Infinity, Infinity)
maxTv.set(0, 0)
if (!this._intersectCheckOneSide(this, other, minTv, maxTv, noMtv, 1)) {
overlapped = false
if (noMtv) {
return overlapped
}
}
if (!this._intersectCheckOneSide(other, this, minTv, maxTv, noMtv, -1)) {
overlapped = false
if (noMtv) {
return overlapped
}
}
if (!noMtv) {
Point$1.copy(mtv, overlapped ? minTv : maxTv)
}
return overlapped
}
OrientedBoundingRect2.prototype._intersectCheckOneSide = function (
self2,
other,
minTv2,
maxTv2,
noMtv,
inverse
) {
var overlapped = true
for (var i2 = 0; i2 < 2; i2++) {
var axis = this._axes[i2]
this._getProjMinMaxOnAxis(i2, self2._corners, extent)
this._getProjMinMaxOnAxis(i2, other._corners, extent2)
if (extent[1] < extent2[0] || extent[0] > extent2[1]) {
overlapped = false
if (noMtv) {
return overlapped
}
var dist0 = Math.abs(extent2[0] - extent[1])
var dist1 = Math.abs(extent[0] - extent2[1])
if (Math.min(dist0, dist1) > maxTv2.len()) {
if (dist0 < dist1) {
Point$1.scale(maxTv2, axis, -dist0 * inverse)
} else {
Point$1.scale(maxTv2, axis, dist1 * inverse)
}
}
} else if (minTv2) {
var dist0 = Math.abs(extent2[0] - extent[1])
var dist1 = Math.abs(extent[0] - extent2[1])
if (Math.min(dist0, dist1) < minTv2.len()) {
if (dist0 < dist1) {
Point$1.scale(minTv2, axis, dist0 * inverse)
} else {
Point$1.scale(minTv2, axis, -dist1 * inverse)
}
}
}
}
return overlapped
}
OrientedBoundingRect2.prototype._getProjMinMaxOnAxis = function (
dim,
corners,
out2
) {
var axis = this._axes[dim]
var origin = this._origin
var proj = corners[0].dot(axis) + origin[dim]
var min3 = proj
var max3 = proj
for (var i2 = 1; i2 < corners.length; i2++) {
var proj_1 = corners[i2].dot(axis) + origin[dim]
min3 = Math.min(proj_1, min3)
max3 = Math.max(proj_1, max3)
}
out2[0] = min3
out2[1] = max3
}
return OrientedBoundingRect2
})()
var OrientedBoundingRect$1 = OrientedBoundingRect
var m = []
var IncrementalDisplayable = (function (_super) {
__extends$1(IncrementalDisplayable2, _super)
function IncrementalDisplayable2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.notClear = true
_this.incremental = true
_this._displayables = []
_this._temporaryDisplayables = []
_this._cursor = 0
return _this
}
IncrementalDisplayable2.prototype.traverse = function (cb, context2) {
cb.call(context2, this)
}
IncrementalDisplayable2.prototype.useStyle = function () {
this.style = {}
}
IncrementalDisplayable2.prototype.getCursor = function () {
return this._cursor
}
IncrementalDisplayable2.prototype.innerAfterBrush = function () {
this._cursor = this._displayables.length
}
IncrementalDisplayable2.prototype.clearDisplaybles = function () {
this._displayables = []
this._temporaryDisplayables = []
this._cursor = 0
this.markRedraw()
this.notClear = false
}
IncrementalDisplayable2.prototype.clearTemporalDisplayables = function () {
this._temporaryDisplayables = []
}
IncrementalDisplayable2.prototype.addDisplayable = function (
displayable,
notPersistent
) {
if (notPersistent) {
this._temporaryDisplayables.push(displayable)
} else {
this._displayables.push(displayable)
}
this.markRedraw()
}
IncrementalDisplayable2.prototype.addDisplayables = function (
displayables,
notPersistent
) {
notPersistent = notPersistent || false
for (var i2 = 0; i2 < displayables.length; i2++) {
this.addDisplayable(displayables[i2], notPersistent)
}
}
IncrementalDisplayable2.prototype.getDisplayables = function () {
return this._displayables
}
IncrementalDisplayable2.prototype.getTemporalDisplayables = function () {
return this._temporaryDisplayables
}
IncrementalDisplayable2.prototype.eachPendingDisplayable = function (cb) {
for (var i2 = this._cursor; i2 < this._displayables.length; i2++) {
cb && cb(this._displayables[i2])
}
for (var i2 = 0; i2 < this._temporaryDisplayables.length; i2++) {
cb && cb(this._temporaryDisplayables[i2])
}
}
IncrementalDisplayable2.prototype.update = function () {
this.updateTransform()
for (var i2 = this._cursor; i2 < this._displayables.length; i2++) {
var displayable = this._displayables[i2]
displayable.parent = this
displayable.update()
displayable.parent = null
}
for (var i2 = 0; i2 < this._temporaryDisplayables.length; i2++) {
var displayable = this._temporaryDisplayables[i2]
displayable.parent = this
displayable.update()
displayable.parent = null
}
}
IncrementalDisplayable2.prototype.getBoundingRect = function () {
if (!this._rect) {
var rect = new BoundingRect$1(Infinity, Infinity, -Infinity, -Infinity)
for (var i2 = 0; i2 < this._displayables.length; i2++) {
var displayable = this._displayables[i2]
var childRect = displayable.getBoundingRect().clone()
if (displayable.needLocalTransform()) {
childRect.applyTransform(displayable.getLocalTransform(m))
}
rect.union(childRect)
}
this._rect = rect
}
return this._rect
}
IncrementalDisplayable2.prototype.contain = function (x2, y2) {
var localPos = this.transformCoordToLocal(x2, y2)
var rect = this.getBoundingRect()
if (rect.contain(localPos[0], localPos[1])) {
for (var i2 = 0; i2 < this._displayables.length; i2++) {
var displayable = this._displayables[i2]
if (displayable.contain(x2, y2)) {
return true
}
}
}
return false
}
return IncrementalDisplayable2
})(Displayable$1)
var IncrementalDisplayable$1 = IncrementalDisplayable
var transitionStore = makeInner()
function getAnimationConfig(
animationType,
animatableModel,
dataIndex,
extraOpts,
extraDelayParams
) {
var animationPayload
if (animatableModel && animatableModel.ecModel) {
var updatePayload = animatableModel.ecModel.getUpdatePayload()
animationPayload = updatePayload && updatePayload.animation
}
var animationEnabled = animatableModel && animatableModel.isAnimationEnabled()
var isUpdate = animationType === 'update'
if (animationEnabled) {
var duration2 = void 0
var easing = void 0
var delay2 = void 0
if (extraOpts) {
duration2 = retrieve2(extraOpts.duration, 200)
easing = retrieve2(extraOpts.easing, 'cubicOut')
delay2 = 0
} else {
duration2 = animatableModel.getShallow(
isUpdate ? 'animationDurationUpdate' : 'animationDuration'
)
easing = animatableModel.getShallow(
isUpdate ? 'animationEasingUpdate' : 'animationEasing'
)
delay2 = animatableModel.getShallow(
isUpdate ? 'animationDelayUpdate' : 'animationDelay'
)
}
if (animationPayload) {
animationPayload.duration != null &&
(duration2 = animationPayload.duration)
animationPayload.easing != null && (easing = animationPayload.easing)
animationPayload.delay != null && (delay2 = animationPayload.delay)
}
if (isFunction$4(delay2)) {
delay2 = delay2(dataIndex, extraDelayParams)
}
if (isFunction$4(duration2)) {
duration2 = duration2(dataIndex)
}
var config2 = {
duration: duration2 || 0,
delay: delay2,
easing,
}
return config2
} else {
return null
}
}
function animateOrSetProps(
animationType,
el2,
props2,
animatableModel,
dataIndex,
cb,
during
) {
var isFrom = false
var removeOpt
if (isFunction$4(dataIndex)) {
during = cb
cb = dataIndex
dataIndex = null
} else if (isObject$b(dataIndex)) {
cb = dataIndex.cb
during = dataIndex.during
isFrom = dataIndex.isFrom
removeOpt = dataIndex.removeOpt
dataIndex = dataIndex.dataIndex
}
var isRemove = animationType === 'leave'
if (!isRemove) {
el2.stopAnimation('leave')
}
var animationConfig = getAnimationConfig(
animationType,
animatableModel,
dataIndex,
isRemove ? removeOpt || {} : null,
animatableModel && animatableModel.getAnimationDelayParams
? animatableModel.getAnimationDelayParams(el2, dataIndex)
: null
)
if (animationConfig && animationConfig.duration > 0) {
var duration2 = animationConfig.duration
var animationDelay = animationConfig.delay
var animationEasing = animationConfig.easing
var animateConfig = {
duration: duration2,
delay: animationDelay || 0,
easing: animationEasing,
done: cb,
force: !!cb || !!during,
setToFinal: !isRemove,
scope: animationType,
during,
}
isFrom
? el2.animateFrom(props2, animateConfig)
: el2.animateTo(props2, animateConfig)
} else {
el2.stopAnimation()
!isFrom && el2.attr(props2)
during && during(1)
cb && cb()
}
}
function updateProps$1(el2, props2, animatableModel, dataIndex, cb, during) {
animateOrSetProps(
'update',
el2,
props2,
animatableModel,
dataIndex,
cb,
during
)
}
function initProps(el2, props2, animatableModel, dataIndex, cb, during) {
animateOrSetProps(
'enter',
el2,
props2,
animatableModel,
dataIndex,
cb,
during
)
}
function isElementRemoved(el2) {
if (!el2.__zr) {
return true
}
for (var i2 = 0; i2 < el2.animators.length; i2++) {
var animator = el2.animators[i2]
if (animator.scope === 'leave') {
return true
}
}
return false
}
function removeElement(el2, props2, animatableModel, dataIndex, cb, during) {
if (isElementRemoved(el2)) {
return
}
animateOrSetProps(
'leave',
el2,
props2,
animatableModel,
dataIndex,
cb,
during
)
}
function fadeOutDisplayable(el2, animatableModel, dataIndex, done) {
el2.removeTextContent()
el2.removeTextGuideLine()
removeElement(
el2,
{
style: {
opacity: 0,
},
},
animatableModel,
dataIndex,
done
)
}
function removeElementWithFadeOut(el2, animatableModel, dataIndex) {
function doRemove() {
el2.parent && el2.parent.remove(el2)
}
if (!el2.isGroup) {
fadeOutDisplayable(el2, animatableModel, dataIndex, doRemove)
} else {
el2.traverse(function (disp) {
if (!disp.isGroup) {
fadeOutDisplayable(disp, animatableModel, dataIndex, doRemove)
}
})
}
}
function saveOldStyle(el2) {
transitionStore(el2).oldStyle = el2.style
}
function getOldStyle(el2) {
return transitionStore(el2).oldStyle
}
var mathMax$6 = Math.max
var mathMin$6 = Math.min
var _customShapeMap = {}
function extendShape(opts) {
return Path$1.extend(opts)
}
var extendPathFromString = extendFromString
function extendPath(pathData, opts) {
return extendPathFromString(pathData, opts)
}
function registerShape(name2, ShapeClass) {
_customShapeMap[name2] = ShapeClass
}
function getShapeClass(name2) {
if (_customShapeMap.hasOwnProperty(name2)) {
return _customShapeMap[name2]
}
}
function makePath(pathData, opts, rect, layout2) {
var path = createFromString(pathData, opts)
if (rect) {
if (layout2 === 'center') {
rect = centerGraphic(rect, path.getBoundingRect())
}
resizePath(path, rect)
}
return path
}
function makeImage(imageUrl, rect, layout2) {
var zrImg = new ZRImage$1({
style: {
image: imageUrl,
x: rect.x,
y: rect.y,
width: rect.width,
height: rect.height,
},
onload: function (img) {
if (layout2 === 'center') {
var boundingRect = {
width: img.width,
height: img.height,
}
zrImg.setStyle(centerGraphic(rect, boundingRect))
}
},
})
return zrImg
}
function centerGraphic(rect, boundingRect) {
var aspect = boundingRect.width / boundingRect.height
var width = rect.height * aspect
var height
if (width <= rect.width) {
height = rect.height
} else {
width = rect.width
height = width / aspect
}
var cx = rect.x + rect.width / 2
var cy = rect.y + rect.height / 2
return {
x: cx - width / 2,
y: cy - height / 2,
width,
height,
}
}
var mergePath = mergePath$1
function resizePath(path, rect) {
if (!path.applyTransform) {
return
}
var pathRect = path.getBoundingRect()
var m2 = pathRect.calculateTransform(rect)
path.applyTransform(m2)
}
function subPixelOptimizeLine(shape, lineWidth) {
subPixelOptimizeLine$1(shape, shape, {
lineWidth,
})
return shape
}
function subPixelOptimizeRect(param) {
subPixelOptimizeRect$1(param.shape, param.shape, param.style)
return param
}
var subPixelOptimize = subPixelOptimize$1
function getTransform$1(target2, ancestor) {
var mat = identity([])
while (target2 && target2 !== ancestor) {
mul(mat, target2.getLocalTransform(), mat)
target2 = target2.parent
}
return mat
}
function applyTransform(target2, transform3, invert$1) {
if (transform3 && !isArrayLike$3(transform3)) {
transform3 = Transformable$1.getLocalTransform(transform3)
}
if (invert$1) {
transform3 = invert([], transform3)
}
return applyTransform$1([], target2, transform3)
}
function transformDirection(direction2, transform3, invert2) {
var hBase =
transform3[4] === 0 || transform3[5] === 0 || transform3[0] === 0
? 1
: Math.abs((2 * transform3[4]) / transform3[0])
var vBase =
transform3[4] === 0 || transform3[5] === 0 || transform3[2] === 0
? 1
: Math.abs((2 * transform3[4]) / transform3[2])
var vertex = [
direction2 === 'left' ? -hBase : direction2 === 'right' ? hBase : 0,
direction2 === 'top' ? -vBase : direction2 === 'bottom' ? vBase : 0,
]
vertex = applyTransform(vertex, transform3, invert2)
return Math.abs(vertex[0]) > Math.abs(vertex[1])
? vertex[0] > 0
? 'right'
: 'left'
: vertex[1] > 0
? 'bottom'
: 'top'
}
function isNotGroup(el2) {
return !el2.isGroup
}
function isPath$1(el2) {
return el2.shape != null
}
function groupTransition(g1, g2, animatableModel) {
if (!g1 || !g2) {
return
}
function getElMap(g3) {
var elMap = {}
g3.traverse(function (el2) {
if (isNotGroup(el2) && el2.anid) {
elMap[el2.anid] = el2
}
})
return elMap
}
function getAnimatableProps(el2) {
var obj = {
x: el2.x,
y: el2.y,
rotation: el2.rotation,
}
if (isPath$1(el2)) {
obj.shape = extend({}, el2.shape)
}
return obj
}
var elMap1 = getElMap(g1)
g2.traverse(function (el2) {
if (isNotGroup(el2) && el2.anid) {
var oldEl = elMap1[el2.anid]
if (oldEl) {
var newProp = getAnimatableProps(el2)
el2.attr(getAnimatableProps(oldEl))
updateProps$1(el2, newProp, animatableModel, getECData(el2).dataIndex)
}
}
})
}
function clipPointsByRect(points2, rect) {
return map$1(points2, function (point) {
var x2 = point[0]
x2 = mathMax$6(x2, rect.x)
x2 = mathMin$6(x2, rect.x + rect.width)
var y2 = point[1]
y2 = mathMax$6(y2, rect.y)
y2 = mathMin$6(y2, rect.y + rect.height)
return [x2, y2]
})
}
function clipRectByRect(targetRect, rect) {
var x2 = mathMax$6(targetRect.x, rect.x)
var x22 = mathMin$6(targetRect.x + targetRect.width, rect.x + rect.width)
var y2 = mathMax$6(targetRect.y, rect.y)
var y22 = mathMin$6(targetRect.y + targetRect.height, rect.y + rect.height)
if (x22 >= x2 && y22 >= y2) {
return {
x: x2,
y: y2,
width: x22 - x2,
height: y22 - y2,
}
}
}
function createIcon(iconStr, opt, rect) {
var innerOpts = extend(
{
rectHover: true,
},
opt
)
var style2 = (innerOpts.style = {
strokeNoScale: true,
})
rect = rect || {
x: -1,
y: -1,
width: 2,
height: 2,
}
if (iconStr) {
return iconStr.indexOf('image://') === 0
? ((style2.image = iconStr.slice(8)),
defaults(style2, rect),
new ZRImage$1(innerOpts))
: makePath(iconStr.replace('path://', ''), innerOpts, rect, 'center')
}
}
function linePolygonIntersect(a1x, a1y, a2x, a2y, points2) {
for (
var i2 = 0, p2 = points2[points2.length - 1];
i2 < points2.length;
i2++
) {
var p3 = points2[i2]
if (lineLineIntersect$1(a1x, a1y, a2x, a2y, p3[0], p3[1], p2[0], p2[1])) {
return true
}
p2 = p3
}
}
function lineLineIntersect$1(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) {
var mx = a2x - a1x
var my = a2y - a1y
var nx = b2x - b1x
var ny = b2y - b1y
var nmCrossProduct = crossProduct2d$1(nx, ny, mx, my)
if (nearZero(nmCrossProduct)) {
return false
}
var b1a1x = a1x - b1x
var b1a1y = a1y - b1y
var q2 = crossProduct2d$1(b1a1x, b1a1y, mx, my) / nmCrossProduct
if (q2 < 0 || q2 > 1) {
return false
}
var p2 = crossProduct2d$1(b1a1x, b1a1y, nx, ny) / nmCrossProduct
if (p2 < 0 || p2 > 1) {
return false
}
return true
}
function crossProduct2d$1(x1, y1, x2, y2) {
return x1 * y2 - x2 * y1
}
function nearZero(val2) {
return val2 <= 1e-6 && val2 >= -1e-6
}
function setTooltipConfig(opt) {
var itemTooltipOption = opt.itemTooltipOption
var componentModel = opt.componentModel
var itemName = opt.itemName
var itemTooltipOptionObj = isString$2(itemTooltipOption)
? {
formatter: itemTooltipOption,
}
: itemTooltipOption
var mainType = componentModel.mainType
var componentIndex = componentModel.componentIndex
var formatterParams = {
componentType: mainType,
name: itemName,
$vars: ['name'],
}
formatterParams[mainType + 'Index'] = componentIndex
var formatterParamsExtra = opt.formatterParamsExtra
if (formatterParamsExtra) {
each$f(keys$4(formatterParamsExtra), function (key2) {
if (!hasOwn$1(formatterParams, key2)) {
formatterParams[key2] = formatterParamsExtra[key2]
formatterParams.$vars.push(key2)
}
})
}
var ecData = getECData(opt.el)
ecData.componentMainType = mainType
ecData.componentIndex = componentIndex
ecData.tooltipConfig = {
name: itemName,
option: defaults(
{
content: itemName,
formatterParams,
},
itemTooltipOptionObj
),
}
}
function traverseElement(el2, cb) {
var stopped
if (el2.isGroup) {
stopped = cb(el2)
}
if (!stopped) {
el2.traverse(cb)
}
}
function traverseElements(els, cb) {
if (els) {
if (isArray$6(els)) {
for (var i2 = 0; i2 < els.length; i2++) {
traverseElement(els[i2], cb)
}
} else {
traverseElement(els, cb)
}
}
}
registerShape('circle', Circle$2)
registerShape('ellipse', Ellipse$1)
registerShape('sector', Sector$1)
registerShape('ring', Ring$1)
registerShape('polygon', Polygon$1)
registerShape('polyline', Polyline$3)
registerShape('rect', Rect$4)
registerShape('line', Line$4)
registerShape('bezierCurve', BezierCurve$1)
registerShape('arc', Arc$1)
var graphic$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
updateProps: updateProps$1,
initProps,
removeElement,
removeElementWithFadeOut,
isElementRemoved,
extendShape,
extendPath,
registerShape,
getShapeClass,
makePath,
makeImage,
mergePath,
resizePath,
subPixelOptimizeLine,
subPixelOptimizeRect,
subPixelOptimize,
getTransform: getTransform$1,
applyTransform,
transformDirection,
groupTransition,
clipPointsByRect,
clipRectByRect,
createIcon,
linePolygonIntersect,
lineLineIntersect: lineLineIntersect$1,
setTooltipConfig,
traverseElements,
Group: Group$5,
Image: ZRImage$1,
Text: ZRText$1,
Circle: Circle$2,
Ellipse: Ellipse$1,
Sector: Sector$1,
Ring: Ring$1,
Polygon: Polygon$1,
Polyline: Polyline$3,
Rect: Rect$4,
Line: Line$4,
BezierCurve: BezierCurve$1,
Arc: Arc$1,
IncrementalDisplayable: IncrementalDisplayable$1,
CompoundPath: CompoundPath$1,
LinearGradient: LinearGradient$1,
RadialGradient: RadialGradient$1,
BoundingRect: BoundingRect$1,
OrientedBoundingRect: OrientedBoundingRect$1,
Point: Point$1,
Path: Path$1,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var EMPTY_OBJ = {}
function setLabelText(label, labelTexts) {
for (var i2 = 0; i2 < SPECIAL_STATES.length; i2++) {
var stateName = SPECIAL_STATES[i2]
var text2 = labelTexts[stateName]
var state2 = label.ensureState(stateName)
state2.style = state2.style || {}
state2.style.text = text2
}
var oldStates = label.currentStates.slice()
label.clearStates(true)
label.setStyle({
text: labelTexts.normal,
})
label.useStates(oldStates, true)
}
function getLabelText(opt, stateModels, interpolatedValue) {
var labelFetcher = opt.labelFetcher
var labelDataIndex = opt.labelDataIndex
var labelDimIndex = opt.labelDimIndex
var normalModel = stateModels.normal
var baseText
if (labelFetcher) {
baseText = labelFetcher.getFormattedLabel(
labelDataIndex,
'normal',
null,
labelDimIndex,
normalModel && normalModel.get('formatter'),
interpolatedValue != null
? {
interpolatedValue,
}
: null
)
}
if (baseText == null) {
baseText = isFunction$4(opt.defaultText)
? opt.defaultText(labelDataIndex, opt, interpolatedValue)
: opt.defaultText
}
var statesText = {
normal: baseText,
}
for (var i2 = 0; i2 < SPECIAL_STATES.length; i2++) {
var stateName = SPECIAL_STATES[i2]
var stateModel = stateModels[stateName]
statesText[stateName] = retrieve2(
labelFetcher
? labelFetcher.getFormattedLabel(
labelDataIndex,
stateName,
null,
labelDimIndex,
stateModel && stateModel.get('formatter')
)
: null,
baseText
)
}
return statesText
}
function setLabelStyle(targetEl, labelStatesModels, opt, stateSpecified) {
opt = opt || EMPTY_OBJ
var isSetOnText = targetEl instanceof ZRText$1
var needsCreateText = false
for (var i2 = 0; i2 < DISPLAY_STATES.length; i2++) {
var stateModel = labelStatesModels[DISPLAY_STATES[i2]]
if (stateModel && stateModel.getShallow('show')) {
needsCreateText = true
break
}
}
var textContent = isSetOnText ? targetEl : targetEl.getTextContent()
if (needsCreateText) {
if (!isSetOnText) {
if (!textContent) {
textContent = new ZRText$1()
targetEl.setTextContent(textContent)
}
if (targetEl.stateProxy) {
textContent.stateProxy = targetEl.stateProxy
}
}
var labelStatesTexts = getLabelText(opt, labelStatesModels)
var normalModel = labelStatesModels.normal
var showNormal = !!normalModel.getShallow('show')
var normalStyle = createTextStyle$1(
normalModel,
stateSpecified && stateSpecified.normal,
opt,
false,
!isSetOnText
)
normalStyle.text = labelStatesTexts.normal
if (!isSetOnText) {
targetEl.setTextConfig(createTextConfig(normalModel, opt, false))
}
for (var i2 = 0; i2 < SPECIAL_STATES.length; i2++) {
var stateName = SPECIAL_STATES[i2]
var stateModel = labelStatesModels[stateName]
if (stateModel) {
var stateObj = textContent.ensureState(stateName)
var stateShow = !!retrieve2(stateModel.getShallow('show'), showNormal)
if (stateShow !== showNormal) {
stateObj.ignore = !stateShow
}
stateObj.style = createTextStyle$1(
stateModel,
stateSpecified && stateSpecified[stateName],
opt,
true,
!isSetOnText
)
stateObj.style.text = labelStatesTexts[stateName]
if (!isSetOnText) {
var targetElEmphasisState = targetEl.ensureState(stateName)
targetElEmphasisState.textConfig = createTextConfig(
stateModel,
opt,
true
)
}
}
}
textContent.silent = !!normalModel.getShallow('silent')
if (textContent.style.x != null) {
normalStyle.x = textContent.style.x
}
if (textContent.style.y != null) {
normalStyle.y = textContent.style.y
}
textContent.ignore = !showNormal
textContent.useStyle(normalStyle)
textContent.dirty()
if (opt.enableTextSetter) {
labelInner(textContent).setLabelText = function (interpolatedValue) {
var labelStatesTexts2 = getLabelText(
opt,
labelStatesModels,
interpolatedValue
)
setLabelText(textContent, labelStatesTexts2)
}
}
} else if (textContent) {
textContent.ignore = true
}
targetEl.dirty()
}
function getLabelStatesModels(itemModel, labelName) {
labelName = labelName || 'label'
var statesModels = {
normal: itemModel.getModel(labelName),
}
for (var i2 = 0; i2 < SPECIAL_STATES.length; i2++) {
var stateName = SPECIAL_STATES[i2]
statesModels[stateName] = itemModel.getModel([stateName, labelName])
}
return statesModels
}
function createTextStyle$1(
textStyleModel,
specifiedTextStyle,
opt,
isNotNormal,
isAttached
) {
var textStyle = {}
setTextStyleCommon(textStyle, textStyleModel, opt, isNotNormal, isAttached)
specifiedTextStyle && extend(textStyle, specifiedTextStyle)
return textStyle
}
function createTextConfig(textStyleModel, opt, isNotNormal) {
opt = opt || {}
var textConfig = {}
var labelPosition
var labelRotate = textStyleModel.getShallow('rotate')
var labelDistance = retrieve2(
textStyleModel.getShallow('distance'),
isNotNormal ? null : 5
)
var labelOffset = textStyleModel.getShallow('offset')
labelPosition =
textStyleModel.getShallow('position') || (isNotNormal ? null : 'inside')
labelPosition === 'outside' &&
(labelPosition = opt.defaultOutsidePosition || 'top')
if (labelPosition != null) {
textConfig.position = labelPosition
}
if (labelOffset != null) {
textConfig.offset = labelOffset
}
if (labelRotate != null) {
labelRotate *= Math.PI / 180
textConfig.rotation = labelRotate
}
if (labelDistance != null) {
textConfig.distance = labelDistance
}
textConfig.outsideFill =
textStyleModel.get('color') === 'inherit'
? opt.inheritColor || null
: 'auto'
return textConfig
}
function setTextStyleCommon(
textStyle,
textStyleModel,
opt,
isNotNormal,
isAttached
) {
opt = opt || EMPTY_OBJ
var ecModel = textStyleModel.ecModel
var globalTextStyle = ecModel && ecModel.option.textStyle
var richItemNames = getRichItemNames(textStyleModel)
var richResult
if (richItemNames) {
richResult = {}
for (var name_1 in richItemNames) {
if (richItemNames.hasOwnProperty(name_1)) {
var richTextStyle = textStyleModel.getModel(['rich', name_1])
setTokenTextStyle(
(richResult[name_1] = {}),
richTextStyle,
globalTextStyle,
opt,
isNotNormal,
isAttached,
false,
true
)
}
}
}
if (richResult) {
textStyle.rich = richResult
}
var overflow2 = textStyleModel.get('overflow')
if (overflow2) {
textStyle.overflow = overflow2
}
var margin = textStyleModel.get('minMargin')
if (margin != null) {
textStyle.margin = margin
}
setTokenTextStyle(
textStyle,
textStyleModel,
globalTextStyle,
opt,
isNotNormal,
isAttached,
true,
false
)
}
function getRichItemNames(textStyleModel) {
var richItemNameMap
while (textStyleModel && textStyleModel !== textStyleModel.ecModel) {
var rich = (textStyleModel.option || EMPTY_OBJ).rich
if (rich) {
richItemNameMap = richItemNameMap || {}
var richKeys = keys$4(rich)
for (var i2 = 0; i2 < richKeys.length; i2++) {
var richKey = richKeys[i2]
richItemNameMap[richKey] = 1
}
}
textStyleModel = textStyleModel.parentModel
}
return richItemNameMap
}
var TEXT_PROPS_WITH_GLOBAL = [
'fontStyle',
'fontWeight',
'fontSize',
'fontFamily',
'textShadowColor',
'textShadowBlur',
'textShadowOffsetX',
'textShadowOffsetY',
]
var TEXT_PROPS_SELF = [
'align',
'lineHeight',
'width',
'height',
'tag',
'verticalAlign',
'ellipsis',
]
var TEXT_PROPS_BOX = [
'padding',
'borderWidth',
'borderRadius',
'borderDashOffset',
'backgroundColor',
'borderColor',
'shadowColor',
'shadowBlur',
'shadowOffsetX',
'shadowOffsetY',
]
function setTokenTextStyle(
textStyle,
textStyleModel,
globalTextStyle,
opt,
isNotNormal,
isAttached,
isBlock,
inRich
) {
globalTextStyle = (!isNotNormal && globalTextStyle) || EMPTY_OBJ
var inheritColor = opt && opt.inheritColor
var fillColor = textStyleModel.getShallow('color')
var strokeColor = textStyleModel.getShallow('textBorderColor')
var opacity2 = retrieve2(
textStyleModel.getShallow('opacity'),
globalTextStyle.opacity
)
if (fillColor === 'inherit' || fillColor === 'auto') {
if (inheritColor) {
fillColor = inheritColor
} else {
fillColor = null
}
}
if (strokeColor === 'inherit' || strokeColor === 'auto') {
if (inheritColor) {
strokeColor = inheritColor
} else {
strokeColor = null
}
}
if (!isAttached) {
fillColor = fillColor || globalTextStyle.color
strokeColor = strokeColor || globalTextStyle.textBorderColor
}
if (fillColor != null) {
textStyle.fill = fillColor
}
if (strokeColor != null) {
textStyle.stroke = strokeColor
}
var textBorderWidth = retrieve2(
textStyleModel.getShallow('textBorderWidth'),
globalTextStyle.textBorderWidth
)
if (textBorderWidth != null) {
textStyle.lineWidth = textBorderWidth
}
var textBorderType = retrieve2(
textStyleModel.getShallow('textBorderType'),
globalTextStyle.textBorderType
)
if (textBorderType != null) {
textStyle.lineDash = textBorderType
}
var textBorderDashOffset = retrieve2(
textStyleModel.getShallow('textBorderDashOffset'),
globalTextStyle.textBorderDashOffset
)
if (textBorderDashOffset != null) {
textStyle.lineDashOffset = textBorderDashOffset
}
if (!isNotNormal && opacity2 == null && !inRich) {
opacity2 = opt && opt.defaultOpacity
}
if (opacity2 != null) {
textStyle.opacity = opacity2
}
if (!isNotNormal && !isAttached) {
if (textStyle.fill == null && opt.inheritColor) {
textStyle.fill = opt.inheritColor
}
}
for (var i2 = 0; i2 < TEXT_PROPS_WITH_GLOBAL.length; i2++) {
var key2 = TEXT_PROPS_WITH_GLOBAL[i2]
var val2 = retrieve2(textStyleModel.getShallow(key2), globalTextStyle[key2])
if (val2 != null) {
textStyle[key2] = val2
}
}
for (var i2 = 0; i2 < TEXT_PROPS_SELF.length; i2++) {
var key2 = TEXT_PROPS_SELF[i2]
var val2 = textStyleModel.getShallow(key2)
if (val2 != null) {
textStyle[key2] = val2
}
}
if (textStyle.verticalAlign == null) {
var baseline = textStyleModel.getShallow('baseline')
if (baseline != null) {
textStyle.verticalAlign = baseline
}
}
if (!isBlock || !opt.disableBox) {
for (var i2 = 0; i2 < TEXT_PROPS_BOX.length; i2++) {
var key2 = TEXT_PROPS_BOX[i2]
var val2 = textStyleModel.getShallow(key2)
if (val2 != null) {
textStyle[key2] = val2
}
}
var borderType = textStyleModel.getShallow('borderType')
if (borderType != null) {
textStyle.borderDash = borderType
}
if (
(textStyle.backgroundColor === 'auto' ||
textStyle.backgroundColor === 'inherit') &&
inheritColor
) {
textStyle.backgroundColor = inheritColor
}
if (
(textStyle.borderColor === 'auto' ||
textStyle.borderColor === 'inherit') &&
inheritColor
) {
textStyle.borderColor = inheritColor
}
}
}
function getFont(opt, ecModel) {
var gTextStyleModel = ecModel && ecModel.getModel('textStyle')
return trim$1(
[
opt.fontStyle ||
(gTextStyleModel && gTextStyleModel.getShallow('fontStyle')) ||
'',
opt.fontWeight ||
(gTextStyleModel && gTextStyleModel.getShallow('fontWeight')) ||
'',
(opt.fontSize ||
(gTextStyleModel && gTextStyleModel.getShallow('fontSize')) ||
12) + 'px',
opt.fontFamily ||
(gTextStyleModel && gTextStyleModel.getShallow('fontFamily')) ||
'sans-serif',
].join(' ')
)
}
var labelInner = makeInner()
function setLabelValueAnimation(
label,
labelStatesModels,
value2,
getDefaultText
) {
if (!label) {
return
}
var obj = labelInner(label)
obj.prevValue = obj.value
obj.value = value2
var normalLabelModel = labelStatesModels.normal
obj.valueAnimation = normalLabelModel.get('valueAnimation')
if (obj.valueAnimation) {
obj.precision = normalLabelModel.get('precision')
obj.defaultInterpolatedText = getDefaultText
obj.statesModels = labelStatesModels
}
}
function animateLabelValue(
textEl,
dataIndex,
data2,
animatableModel,
labelFetcher
) {
var labelInnerStore = labelInner(textEl)
if (
!labelInnerStore.valueAnimation ||
labelInnerStore.prevValue === labelInnerStore.value
) {
return
}
var defaultInterpolatedText = labelInnerStore.defaultInterpolatedText
var currValue = retrieve2(
labelInnerStore.interpolatedValue,
labelInnerStore.prevValue
)
var targetValue = labelInnerStore.value
function during(percent) {
var interpolated = interpolateRawValues(
data2,
labelInnerStore.precision,
currValue,
targetValue,
percent
)
labelInnerStore.interpolatedValue = percent === 1 ? null : interpolated
var labelText = getLabelText(
{
labelDataIndex: dataIndex,
labelFetcher,
defaultText: defaultInterpolatedText
? defaultInterpolatedText(interpolated)
: interpolated + '',
},
labelInnerStore.statesModels,
interpolated
)
setLabelText(textEl, labelText)
}
textEl.percent = 0
;(labelInnerStore.prevValue == null ? initProps : updateProps$1)(
textEl,
{
percent: 1,
},
animatableModel,
dataIndex,
null,
during
)
}
var PATH_COLOR = ['textStyle', 'color']
var textStyleParams = [
'fontStyle',
'fontWeight',
'fontSize',
'fontFamily',
'padding',
'lineHeight',
'rich',
'width',
'height',
'overflow',
]
var tmpText = new ZRText$1()
var TextStyleMixin = (function () {
function TextStyleMixin2() {}
TextStyleMixin2.prototype.getTextColor = function (isEmphasis) {
var ecModel = this.ecModel
return (
this.getShallow('color') ||
(!isEmphasis && ecModel ? ecModel.get(PATH_COLOR) : null)
)
}
TextStyleMixin2.prototype.getFont = function () {
return getFont(
{
fontStyle: this.getShallow('fontStyle'),
fontWeight: this.getShallow('fontWeight'),
fontSize: this.getShallow('fontSize'),
fontFamily: this.getShallow('fontFamily'),
},
this.ecModel
)
}
TextStyleMixin2.prototype.getTextRect = function (text2) {
var style2 = {
text: text2,
verticalAlign:
this.getShallow('verticalAlign') || this.getShallow('baseline'),
}
for (var i2 = 0; i2 < textStyleParams.length; i2++) {
style2[textStyleParams[i2]] = this.getShallow(textStyleParams[i2])
}
tmpText.useStyle(style2)
tmpText.update()
return tmpText.getBoundingRect()
}
return TextStyleMixin2
})()
var TextStyleMixin$1 = TextStyleMixin
var LINE_STYLE_KEY_MAP = [
['lineWidth', 'width'],
['stroke', 'color'],
['opacity'],
['shadowBlur'],
['shadowOffsetX'],
['shadowOffsetY'],
['shadowColor'],
['lineDash', 'type'],
['lineDashOffset', 'dashOffset'],
['lineCap', 'cap'],
['lineJoin', 'join'],
['miterLimit'],
]
var getLineStyle = makeStyleMapper(LINE_STYLE_KEY_MAP)
var LineStyleMixin = (function () {
function LineStyleMixin2() {}
LineStyleMixin2.prototype.getLineStyle = function (excludes) {
return getLineStyle(this, excludes)
}
return LineStyleMixin2
})()
var ITEM_STYLE_KEY_MAP = [
['fill', 'color'],
['stroke', 'borderColor'],
['lineWidth', 'borderWidth'],
['opacity'],
['shadowBlur'],
['shadowOffsetX'],
['shadowOffsetY'],
['shadowColor'],
['lineDash', 'borderType'],
['lineDashOffset', 'borderDashOffset'],
['lineCap', 'borderCap'],
['lineJoin', 'borderJoin'],
['miterLimit', 'borderMiterLimit'],
]
var getItemStyle = makeStyleMapper(ITEM_STYLE_KEY_MAP)
var ItemStyleMixin = (function () {
function ItemStyleMixin2() {}
ItemStyleMixin2.prototype.getItemStyle = function (excludes, includes3) {
return getItemStyle(this, excludes, includes3)
}
return ItemStyleMixin2
})()
var Model = (function () {
function Model2(option2, parentModel, ecModel) {
this.parentModel = parentModel
this.ecModel = ecModel
this.option = option2
}
Model2.prototype.init = function (option2, parentModel, ecModel) {}
Model2.prototype.mergeOption = function (option2, ecModel) {
merge(this.option, option2, true)
}
Model2.prototype.get = function (path, ignoreParent) {
if (path == null) {
return this.option
}
return this._doGet(this.parsePath(path), !ignoreParent && this.parentModel)
}
Model2.prototype.getShallow = function (key2, ignoreParent) {
var option2 = this.option
var val2 = option2 == null ? option2 : option2[key2]
if (val2 == null && !ignoreParent) {
var parentModel = this.parentModel
if (parentModel) {
val2 = parentModel.getShallow(key2)
}
}
return val2
}
Model2.prototype.getModel = function (path, parentModel) {
var hasPath2 = path != null
var pathFinal = hasPath2 ? this.parsePath(path) : null
var obj = hasPath2 ? this._doGet(pathFinal) : this.option
parentModel =
parentModel ||
(this.parentModel &&
this.parentModel.getModel(this.resolveParentPath(pathFinal)))
return new Model2(obj, parentModel, this.ecModel)
}
Model2.prototype.isEmpty = function () {
return this.option == null
}
Model2.prototype.restoreData = function () {}
Model2.prototype.clone = function () {
var Ctor = this.constructor
return new Ctor(clone$4(this.option))
}
Model2.prototype.parsePath = function (path) {
if (typeof path === 'string') {
return path.split('.')
}
return path
}
Model2.prototype.resolveParentPath = function (path) {
return path
}
Model2.prototype.isAnimationEnabled = function () {
if (!env$1.node && this.option) {
if (this.option.animation != null) {
return !!this.option.animation
} else if (this.parentModel) {
return this.parentModel.isAnimationEnabled()
}
}
}
Model2.prototype._doGet = function (pathArr, parentModel) {
var obj = this.option
if (!pathArr) {
return obj
}
for (var i2 = 0; i2 < pathArr.length; i2++) {
if (!pathArr[i2]) {
continue
}
obj = obj && typeof obj === 'object' ? obj[pathArr[i2]] : null
if (obj == null) {
break
}
}
if (obj == null && parentModel) {
obj = parentModel._doGet(
this.resolveParentPath(pathArr),
parentModel.parentModel
)
}
return obj
}
return Model2
})()
enableClassExtend(Model)
enableClassCheck(Model)
mixin(Model, LineStyleMixin)
mixin(Model, ItemStyleMixin)
mixin(Model, AreaStyleMixin)
mixin(Model, TextStyleMixin$1)
var Model$1 = Model
var base = Math.round(Math.random() * 10)
function getUID(type4) {
return [type4 || '', base++].join('_')
}
function enableSubTypeDefaulter(target2) {
var subTypeDefaulters = {}
target2.registerSubTypeDefaulter = function (componentType, defaulter) {
var componentTypeInfo = parseClassType(componentType)
subTypeDefaulters[componentTypeInfo.main] = defaulter
}
target2.determineSubType = function (componentType, option2) {
var type4 = option2.type
if (!type4) {
var componentTypeMain = parseClassType(componentType).main
if (
target2.hasSubTypes(componentType) &&
subTypeDefaulters[componentTypeMain]
) {
type4 = subTypeDefaulters[componentTypeMain](option2)
}
}
return type4
}
}
function enableTopologicalTravel(entity, dependencyGetter) {
entity.topologicalTravel = function (
targetNameList,
fullNameList,
callback,
context2
) {
if (!targetNameList.length) {
return
}
var result = makeDepndencyGraph(fullNameList)
var graph = result.graph
var noEntryList = result.noEntryList
var targetNameSet = {}
each$f(targetNameList, function (name2) {
targetNameSet[name2] = true
})
while (noEntryList.length) {
var currComponentType = noEntryList.pop()
var currVertex = graph[currComponentType]
var isInTargetNameSet = !!targetNameSet[currComponentType]
if (isInTargetNameSet) {
callback.call(
context2,
currComponentType,
currVertex.originalDeps.slice()
)
delete targetNameSet[currComponentType]
}
each$f(
currVertex.successor,
isInTargetNameSet ? removeEdgeAndAdd : removeEdge
)
}
each$f(targetNameSet, function () {
var errMsg = ''
throw new Error(errMsg)
})
function removeEdge(succComponentType) {
graph[succComponentType].entryCount--
if (graph[succComponentType].entryCount === 0) {
noEntryList.push(succComponentType)
}
}
function removeEdgeAndAdd(succComponentType) {
targetNameSet[succComponentType] = true
removeEdge(succComponentType)
}
}
function makeDepndencyGraph(fullNameList) {
var graph = {}
var noEntryList = []
each$f(fullNameList, function (name2) {
var thisItem = createDependencyGraphItem(graph, name2)
var originalDeps = (thisItem.originalDeps = dependencyGetter(name2))
var availableDeps = getAvailableDependencies(originalDeps, fullNameList)
thisItem.entryCount = availableDeps.length
if (thisItem.entryCount === 0) {
noEntryList.push(name2)
}
each$f(availableDeps, function (dependentName) {
if (indexOf(thisItem.predecessor, dependentName) < 0) {
thisItem.predecessor.push(dependentName)
}
var thatItem = createDependencyGraphItem(graph, dependentName)
if (indexOf(thatItem.successor, dependentName) < 0) {
thatItem.successor.push(name2)
}
})
})
return {
graph,
noEntryList,
}
}
function createDependencyGraphItem(graph, name2) {
if (!graph[name2]) {
graph[name2] = {
predecessor: [],
successor: [],
}
}
return graph[name2]
}
function getAvailableDependencies(originalDeps, fullNameList) {
var availableDeps = []
each$f(originalDeps, function (dep) {
indexOf(fullNameList, dep) >= 0 && availableDeps.push(dep)
})
return availableDeps
}
}
function inheritDefaultOption(superOption, subOption) {
return merge(merge({}, superOption, true), subOption, true)
}
var langEN = {
time: {
month: [
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December',
],
monthAbbr: [
'Jan',
'Feb',
'Mar',
'Apr',
'May',
'Jun',
'Jul',
'Aug',
'Sep',
'Oct',
'Nov',
'Dec',
],
dayOfWeek: [
'Sunday',
'Monday',
'Tuesday',
'Wednesday',
'Thursday',
'Friday',
'Saturday',
],
dayOfWeekAbbr: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
},
legend: {
selector: {
all: 'All',
inverse: 'Inv',
},
},
toolbox: {
brush: {
title: {
rect: 'Box Select',
polygon: 'Lasso Select',
lineX: 'Horizontally Select',
lineY: 'Vertically Select',
keep: 'Keep Selections',
clear: 'Clear Selections',
},
},
dataView: {
title: 'Data View',
lang: ['Data View', 'Close', 'Refresh'],
},
dataZoom: {
title: {
zoom: 'Zoom',
back: 'Zoom Reset',
},
},
magicType: {
title: {
line: 'Switch to Line Chart',
bar: 'Switch to Bar Chart',
stack: 'Stack',
tiled: 'Tile',
},
},
restore: {
title: 'Restore',
},
saveAsImage: {
title: 'Save as Image',
lang: ['Right Click to Save Image'],
},
},
series: {
typeNames: {
pie: 'Pie chart',
bar: 'Bar chart',
line: 'Line chart',
scatter: 'Scatter plot',
effectScatter: 'Ripple scatter plot',
radar: 'Radar chart',
tree: 'Tree',
treemap: 'Treemap',
boxplot: 'Boxplot',
candlestick: 'Candlestick',
k: 'K line chart',
heatmap: 'Heat map',
map: 'Map',
parallel: 'Parallel coordinate map',
lines: 'Line graph',
graph: 'Relationship graph',
sankey: 'Sankey diagram',
funnel: 'Funnel chart',
gauge: 'Gauge',
pictorialBar: 'Pictorial bar',
themeRiver: 'Theme River Map',
sunburst: 'Sunburst',
},
},
aria: {
general: {
withTitle: 'This is a chart about "{title}"',
withoutTitle: 'This is a chart',
},
series: {
single: {
prefix: '',
withName: ' with type {seriesType} named {seriesName}.',
withoutName: ' with type {seriesType}.',
},
multiple: {
prefix: '. It consists of {seriesCount} series count.',
withName:
' The {seriesId} series is a {seriesType} representing {seriesName}.',
withoutName: ' The {seriesId} series is a {seriesType}.',
separator: {
middle: '',
end: '',
},
},
},
data: {
allData: 'The data is as follows: ',
partialData: 'The first {displayCnt} items are: ',
withName: 'the data for {name} is {value}',
withoutName: '{value}',
separator: {
middle: ', ',
end: '. ',
},
},
},
}
var langZH = {
time: {
month: [
'\u4E00\u6708',
'\u4E8C\u6708',
'\u4E09\u6708',
'\u56DB\u6708',
'\u4E94\u6708',
'\u516D\u6708',
'\u4E03\u6708',
'\u516B\u6708',
'\u4E5D\u6708',
'\u5341\u6708',
'\u5341\u4E00\u6708',
'\u5341\u4E8C\u6708',
],
monthAbbr: [
'1\u6708',
'2\u6708',
'3\u6708',
'4\u6708',
'5\u6708',
'6\u6708',
'7\u6708',
'8\u6708',
'9\u6708',
'10\u6708',
'11\u6708',
'12\u6708',
],
dayOfWeek: [
'\u661F\u671F\u65E5',
'\u661F\u671F\u4E00',
'\u661F\u671F\u4E8C',
'\u661F\u671F\u4E09',
'\u661F\u671F\u56DB',
'\u661F\u671F\u4E94',
'\u661F\u671F\u516D',
],
dayOfWeekAbbr: [
'\u65E5',
'\u4E00',
'\u4E8C',
'\u4E09',
'\u56DB',
'\u4E94',
'\u516D',
],
},
legend: {
selector: {
all: '\u5168\u9009',
inverse: '\u53CD\u9009',
},
},
toolbox: {
brush: {
title: {
rect: '\u77E9\u5F62\u9009\u62E9',
polygon: '\u5708\u9009',
lineX: '\u6A2A\u5411\u9009\u62E9',
lineY: '\u7EB5\u5411\u9009\u62E9',
keep: '\u4FDD\u6301\u9009\u62E9',
clear: '\u6E05\u9664\u9009\u62E9',
},
},
dataView: {
title: '\u6570\u636E\u89C6\u56FE',
lang: ['\u6570\u636E\u89C6\u56FE', '\u5173\u95ED', '\u5237\u65B0'],
},
dataZoom: {
title: {
zoom: '\u533A\u57DF\u7F29\u653E',
back: '\u533A\u57DF\u7F29\u653E\u8FD8\u539F',
},
},
magicType: {
title: {
line: '\u5207\u6362\u4E3A\u6298\u7EBF\u56FE',
bar: '\u5207\u6362\u4E3A\u67F1\u72B6\u56FE',
stack: '\u5207\u6362\u4E3A\u5806\u53E0',
tiled: '\u5207\u6362\u4E3A\u5E73\u94FA',
},
},
restore: {
title: '\u8FD8\u539F',
},
saveAsImage: {
title: '\u4FDD\u5B58\u4E3A\u56FE\u7247',
lang: ['\u53F3\u952E\u53E6\u5B58\u4E3A\u56FE\u7247'],
},
},
series: {
typeNames: {
pie: '\u997C\u56FE',
bar: '\u67F1\u72B6\u56FE',
line: '\u6298\u7EBF\u56FE',
scatter: '\u6563\u70B9\u56FE',
effectScatter: '\u6D9F\u6F2A\u6563\u70B9\u56FE',
radar: '\u96F7\u8FBE\u56FE',
tree: '\u6811\u56FE',
treemap: '\u77E9\u5F62\u6811\u56FE',
boxplot: '\u7BB1\u578B\u56FE',
candlestick: 'K\u7EBF\u56FE',
k: 'K\u7EBF\u56FE',
heatmap: '\u70ED\u529B\u56FE',
map: '\u5730\u56FE',
parallel: '\u5E73\u884C\u5750\u6807\u56FE',
lines: '\u7EBF\u56FE',
graph: '\u5173\u7CFB\u56FE',
sankey: '\u6851\u57FA\u56FE',
funnel: '\u6F0F\u6597\u56FE',
gauge: '\u4EEA\u8868\u76D8\u56FE',
pictorialBar: '\u8C61\u5F62\u67F1\u56FE',
themeRiver: '\u4E3B\u9898\u6CB3\u6D41\u56FE',
sunburst: '\u65ED\u65E5\u56FE',
},
},
aria: {
general: {
withTitle:
'\u8FD9\u662F\u4E00\u4E2A\u5173\u4E8E\u201C{title}\u201D\u7684\u56FE\u8868\u3002',
withoutTitle: '\u8FD9\u662F\u4E00\u4E2A\u56FE\u8868\uFF0C',
},
series: {
single: {
prefix: '',
withName:
'\u56FE\u8868\u7C7B\u578B\u662F{seriesType}\uFF0C\u8868\u793A{seriesName}\u3002',
withoutName: '\u56FE\u8868\u7C7B\u578B\u662F{seriesType}\u3002',
},
multiple: {
prefix:
'\u5B83\u7531{seriesCount}\u4E2A\u56FE\u8868\u7CFB\u5217\u7EC4\u6210\u3002',
withName:
'\u7B2C{seriesId}\u4E2A\u7CFB\u5217\u662F\u4E00\u4E2A\u8868\u793A{seriesName}\u7684{seriesType}\uFF0C',
withoutName:
'\u7B2C{seriesId}\u4E2A\u7CFB\u5217\u662F\u4E00\u4E2A{seriesType}\uFF0C',
separator: {
middle: '\uFF1B',
end: '\u3002',
},
},
},
data: {
allData: '\u5176\u6570\u636E\u662F\u2014\u2014',
partialData:
'\u5176\u4E2D\uFF0C\u524D{displayCnt}\u9879\u662F\u2014\u2014',
withName: '{name}\u7684\u6570\u636E\u662F{value}',
withoutName: '{value}',
separator: {
middle: '\uFF0C',
end: '',
},
},
},
}
var LOCALE_ZH = 'ZH'
var LOCALE_EN = 'EN'
var DEFAULT_LOCALE$1 = LOCALE_EN
var localeStorage = {}
var localeModels = {}
var SYSTEM_LANG = !env$1.domSupported
? DEFAULT_LOCALE$1
: (function () {
var langStr = (
document.documentElement.lang ||
navigator.language ||
navigator.browserLanguage
).toUpperCase()
return langStr.indexOf(LOCALE_ZH) > -1 ? LOCALE_ZH : DEFAULT_LOCALE$1
})()
function registerLocale(locale, localeObj) {
locale = locale.toUpperCase()
localeModels[locale] = new Model$1(localeObj)
localeStorage[locale] = localeObj
}
function createLocaleObject(locale) {
if (isString$2(locale)) {
var localeObj = localeStorage[locale.toUpperCase()] || {}
if (locale === LOCALE_ZH || locale === LOCALE_EN) {
return clone$4(localeObj)
} else {
return merge(
clone$4(localeObj),
clone$4(localeStorage[DEFAULT_LOCALE$1]),
false
)
}
} else {
return merge(
clone$4(locale),
clone$4(localeStorage[DEFAULT_LOCALE$1]),
false
)
}
}
function getLocaleModel(lang) {
return localeModels[lang]
}
function getDefaultLocaleModel() {
return localeModels[DEFAULT_LOCALE$1]
}
registerLocale(LOCALE_EN, langEN)
registerLocale(LOCALE_ZH, langZH)
var ONE_SECOND = 1e3
var ONE_MINUTE = ONE_SECOND * 60
var ONE_HOUR = ONE_MINUTE * 60
var ONE_DAY = ONE_HOUR * 24
var ONE_YEAR = ONE_DAY * 365
var defaultLeveledFormatter = {
year: '{yyyy}',
month: '{MMM}',
day: '{d}',
hour: '{HH}:{mm}',
minute: '{HH}:{mm}',
second: '{HH}:{mm}:{ss}',
millisecond: '{HH}:{mm}:{ss} {SSS}',
none: '{yyyy}-{MM}-{dd} {HH}:{mm}:{ss} {SSS}',
}
var fullDayFormatter = '{yyyy}-{MM}-{dd}'
var fullLeveledFormatter = {
year: '{yyyy}',
month: '{yyyy}-{MM}',
day: fullDayFormatter,
hour: fullDayFormatter + ' ' + defaultLeveledFormatter.hour,
minute: fullDayFormatter + ' ' + defaultLeveledFormatter.minute,
second: fullDayFormatter + ' ' + defaultLeveledFormatter.second,
millisecond: defaultLeveledFormatter.none,
}
var primaryTimeUnits = [
'year',
'month',
'day',
'hour',
'minute',
'second',
'millisecond',
]
var timeUnits$1 = [
'year',
'half-year',
'quarter',
'month',
'week',
'half-week',
'day',
'half-day',
'quarter-day',
'hour',
'minute',
'second',
'millisecond',
]
function pad(str, len2) {
str += ''
return '0000'.substr(0, len2 - str.length) + str
}
function getPrimaryTimeUnit(timeUnit) {
switch (timeUnit) {
case 'half-year':
case 'quarter':
return 'month'
case 'week':
case 'half-week':
return 'day'
case 'half-day':
case 'quarter-day':
return 'hour'
default:
return timeUnit
}
}
function isPrimaryTimeUnit(timeUnit) {
return timeUnit === getPrimaryTimeUnit(timeUnit)
}
function getDefaultFormatPrecisionOfInterval(timeUnit) {
switch (timeUnit) {
case 'year':
case 'month':
return 'day'
case 'millisecond':
return 'millisecond'
default:
return 'second'
}
}
function format$3(time2, template2, isUTC, lang) {
var date4 = parseDate(time2)
var y2 = date4[fullYearGetterName(isUTC)]()
var M2 = date4[monthGetterName(isUTC)]() + 1
var q2 = Math.floor((M2 - 1) / 3) + 1
var d3 = date4[dateGetterName(isUTC)]()
var e2 = date4['get' + (isUTC ? 'UTC' : '') + 'Day']()
var H4 = date4[hoursGetterName(isUTC)]()
var h2 = ((H4 - 1) % 12) + 1
var m2 = date4[minutesGetterName(isUTC)]()
var s2 = date4[secondsGetterName(isUTC)]()
var S2 = date4[millisecondsGetterName(isUTC)]()
var localeModel =
lang instanceof Model$1
? lang
: getLocaleModel(lang || SYSTEM_LANG) || getDefaultLocaleModel()
var timeModel = localeModel.getModel('time')
var month = timeModel.get('month')
var monthAbbr = timeModel.get('monthAbbr')
var dayOfWeek = timeModel.get('dayOfWeek')
var dayOfWeekAbbr = timeModel.get('dayOfWeekAbbr')
return (template2 || '')
.replace(/{yyyy}/g, y2 + '')
.replace(/{yy}/g, pad((y2 % 100) + '', 2))
.replace(/{Q}/g, q2 + '')
.replace(/{MMMM}/g, month[M2 - 1])
.replace(/{MMM}/g, monthAbbr[M2 - 1])
.replace(/{MM}/g, pad(M2, 2))
.replace(/{M}/g, M2 + '')
.replace(/{dd}/g, pad(d3, 2))
.replace(/{d}/g, d3 + '')
.replace(/{eeee}/g, dayOfWeek[e2])
.replace(/{ee}/g, dayOfWeekAbbr[e2])
.replace(/{e}/g, e2 + '')
.replace(/{HH}/g, pad(H4, 2))
.replace(/{H}/g, H4 + '')
.replace(/{hh}/g, pad(h2 + '', 2))
.replace(/{h}/g, h2 + '')
.replace(/{mm}/g, pad(m2, 2))
.replace(/{m}/g, m2 + '')
.replace(/{ss}/g, pad(s2, 2))
.replace(/{s}/g, s2 + '')
.replace(/{SSS}/g, pad(S2, 3))
.replace(/{S}/g, S2 + '')
}
function leveledFormat(tick, idx, formatter2, lang, isUTC) {
var template2 = null
if (isString$2(formatter2)) {
template2 = formatter2
} else if (isFunction$4(formatter2)) {
template2 = formatter2(tick.value, idx, {
level: tick.level,
})
} else {
var defaults$12 = extend({}, defaultLeveledFormatter)
if (tick.level > 0) {
for (var i2 = 0; i2 < primaryTimeUnits.length; ++i2) {
defaults$12[primaryTimeUnits[i2]] =
'{primary|' + defaults$12[primaryTimeUnits[i2]] + '}'
}
}
var mergedFormatter = formatter2
? formatter2.inherit === false
? formatter2
: defaults(formatter2, defaults$12)
: defaults$12
var unit = getUnitFromValue(tick.value, isUTC)
if (mergedFormatter[unit]) {
template2 = mergedFormatter[unit]
} else if (mergedFormatter.inherit) {
var targetId = timeUnits$1.indexOf(unit)
for (var i2 = targetId - 1; i2 >= 0; --i2) {
if (mergedFormatter[unit]) {
template2 = mergedFormatter[unit]
break
}
}
template2 = template2 || defaults$12.none
}
if (isArray$6(template2)) {
var levelId =
tick.level == null
? 0
: tick.level >= 0
? tick.level
: template2.length + tick.level
levelId = Math.min(levelId, template2.length - 1)
template2 = template2[levelId]
}
}
return format$3(new Date(tick.value), template2, isUTC, lang)
}
function getUnitFromValue(value2, isUTC) {
var date4 = parseDate(value2)
var M2 = date4[monthGetterName(isUTC)]() + 1
var d3 = date4[dateGetterName(isUTC)]()
var h2 = date4[hoursGetterName(isUTC)]()
var m2 = date4[minutesGetterName(isUTC)]()
var s2 = date4[secondsGetterName(isUTC)]()
var S2 = date4[millisecondsGetterName(isUTC)]()
var isSecond = S2 === 0
var isMinute = isSecond && s2 === 0
var isHour = isMinute && m2 === 0
var isDay = isHour && h2 === 0
var isMonth = isDay && d3 === 1
var isYear = isMonth && M2 === 1
if (isYear) {
return 'year'
} else if (isMonth) {
return 'month'
} else if (isDay) {
return 'day'
} else if (isHour) {
return 'hour'
} else if (isMinute) {
return 'minute'
} else if (isSecond) {
return 'second'
} else {
return 'millisecond'
}
}
function getUnitValue(value2, unit, isUTC) {
var date4 = isNumber$2(value2) ? parseDate(value2) : value2
unit = unit || getUnitFromValue(value2, isUTC)
switch (unit) {
case 'year':
return date4[fullYearGetterName(isUTC)]()
case 'half-year':
return date4[monthGetterName(isUTC)]() >= 6 ? 1 : 0
case 'quarter':
return Math.floor((date4[monthGetterName(isUTC)]() + 1) / 4)
case 'month':
return date4[monthGetterName(isUTC)]()
case 'day':
return date4[dateGetterName(isUTC)]()
case 'half-day':
return date4[hoursGetterName(isUTC)]() / 24
case 'hour':
return date4[hoursGetterName(isUTC)]()
case 'minute':
return date4[minutesGetterName(isUTC)]()
case 'second':
return date4[secondsGetterName(isUTC)]()
case 'millisecond':
return date4[millisecondsGetterName(isUTC)]()
}
}
function fullYearGetterName(isUTC) {
return isUTC ? 'getUTCFullYear' : 'getFullYear'
}
function monthGetterName(isUTC) {
return isUTC ? 'getUTCMonth' : 'getMonth'
}
function dateGetterName(isUTC) {
return isUTC ? 'getUTCDate' : 'getDate'
}
function hoursGetterName(isUTC) {
return isUTC ? 'getUTCHours' : 'getHours'
}
function minutesGetterName(isUTC) {
return isUTC ? 'getUTCMinutes' : 'getMinutes'
}
function secondsGetterName(isUTC) {
return isUTC ? 'getUTCSeconds' : 'getSeconds'
}
function millisecondsGetterName(isUTC) {
return isUTC ? 'getUTCMilliseconds' : 'getMilliseconds'
}
function fullYearSetterName(isUTC) {
return isUTC ? 'setUTCFullYear' : 'setFullYear'
}
function monthSetterName(isUTC) {
return isUTC ? 'setUTCMonth' : 'setMonth'
}
function dateSetterName(isUTC) {
return isUTC ? 'setUTCDate' : 'setDate'
}
function hoursSetterName(isUTC) {
return isUTC ? 'setUTCHours' : 'setHours'
}
function minutesSetterName(isUTC) {
return isUTC ? 'setUTCMinutes' : 'setMinutes'
}
function secondsSetterName(isUTC) {
return isUTC ? 'setUTCSeconds' : 'setSeconds'
}
function millisecondsSetterName(isUTC) {
return isUTC ? 'setUTCMilliseconds' : 'setMilliseconds'
}
function getTextRect(
text2,
font2,
align,
verticalAlign,
padding,
rich,
truncate,
lineHeight2
) {
var textEl = new ZRText$1({
style: {
text: text2,
font: font2,
align,
verticalAlign,
padding,
rich,
overflow: truncate ? 'truncate' : null,
lineHeight: lineHeight2,
},
})
return textEl.getBoundingRect()
}
function addCommas(x2) {
if (!isNumeric(x2)) {
return isString$2(x2) ? x2 : '-'
}
var parts = (x2 + '').split('.')
return (
parts[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, '$1,') +
(parts.length > 1 ? '.' + parts[1] : '')
)
}
function toCamelCase(str, upperCaseFirst) {
str = (str || '').toLowerCase().replace(/-(.)/g, function (match2, group1) {
return group1.toUpperCase()
})
if (upperCaseFirst && str) {
str = str.charAt(0).toUpperCase() + str.slice(1)
}
return str
}
var normalizeCssArray = normalizeCssArray$1
function makeValueReadable(value2, valueType, useUTC) {
var USER_READABLE_DEFUALT_TIME_PATTERN = '{yyyy}-{MM}-{dd} {HH}:{mm}:{ss}'
function stringToUserReadable(str) {
return str && trim$1(str) ? str : '-'
}
function isNumberUserReadable(num2) {
return !!(num2 != null && !isNaN(num2) && isFinite(num2))
}
var isTypeTime = valueType === 'time'
var isValueDate = value2 instanceof Date
if (isTypeTime || isValueDate) {
var date4 = isTypeTime ? parseDate(value2) : value2
if (!isNaN(+date4)) {
return format$3(date4, USER_READABLE_DEFUALT_TIME_PATTERN, useUTC)
} else if (isValueDate) {
return '-'
}
}
if (valueType === 'ordinal') {
return isStringSafe(value2)
? stringToUserReadable(value2)
: isNumber$2(value2)
? isNumberUserReadable(value2)
? value2 + ''
: '-'
: '-'
}
var numericResult = numericToNumber(value2)
return isNumberUserReadable(numericResult)
? addCommas(numericResult)
: isStringSafe(value2)
? stringToUserReadable(value2)
: typeof value2 === 'boolean'
? value2 + ''
: '-'
}
var TPL_VAR_ALIAS = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
var wrapVar = function (varName, seriesIdx) {
return '{' + varName + (seriesIdx == null ? '' : seriesIdx) + '}'
}
function formatTpl(tpl, paramsList, encode2) {
if (!isArray$6(paramsList)) {
paramsList = [paramsList]
}
var seriesLen = paramsList.length
if (!seriesLen) {
return ''
}
var $vars = paramsList[0].$vars || []
for (var i2 = 0; i2 < $vars.length; i2++) {
var alias = TPL_VAR_ALIAS[i2]
tpl = tpl.replace(wrapVar(alias), wrapVar(alias, 0))
}
for (var seriesIdx = 0; seriesIdx < seriesLen; seriesIdx++) {
for (var k2 = 0; k2 < $vars.length; k2++) {
var val2 = paramsList[seriesIdx][$vars[k2]]
tpl = tpl.replace(
wrapVar(TPL_VAR_ALIAS[k2], seriesIdx),
encode2 ? encodeHTML(val2) : val2
)
}
}
return tpl
}
function formatTplSimple(tpl, param, encode2) {
each$f(param, function (value2, key2) {
tpl = tpl.replace('{' + key2 + '}', encode2 ? encodeHTML(value2) : value2)
})
return tpl
}
function getTooltipMarker(inOpt, extraCssText) {
var opt = isString$2(inOpt)
? {
color: inOpt,
extraCssText,
}
: inOpt || {}
var color2 = opt.color
var type4 = opt.type
extraCssText = opt.extraCssText
var renderMode = opt.renderMode || 'html'
if (!color2) {
return ''
}
if (renderMode === 'html') {
return type4 === 'subItem'
? ''
: ''
} else {
var markerId = opt.markerId || 'markerX'
return {
renderMode,
content: '{' + markerId + '|} ',
style:
type4 === 'subItem'
? {
width: 4,
height: 4,
borderRadius: 2,
backgroundColor: color2,
}
: {
width: 10,
height: 10,
borderRadius: 5,
backgroundColor: color2,
},
}
}
}
function formatTime(tpl, value2, isUTC) {
if (
tpl === 'week' ||
tpl === 'month' ||
tpl === 'quarter' ||
tpl === 'half-year' ||
tpl === 'year'
) {
tpl = 'MM-dd\nyyyy'
}
var date4 = parseDate(value2)
var getUTC = isUTC ? 'getUTC' : 'get'
var y2 = date4[getUTC + 'FullYear']()
var M2 = date4[getUTC + 'Month']() + 1
var d3 = date4[getUTC + 'Date']()
var h2 = date4[getUTC + 'Hours']()
var m2 = date4[getUTC + 'Minutes']()
var s2 = date4[getUTC + 'Seconds']()
var S2 = date4[getUTC + 'Milliseconds']()
tpl = tpl
.replace('MM', pad(M2, 2))
.replace('M', M2)
.replace('yyyy', y2)
.replace('yy', pad((y2 % 100) + '', 2))
.replace('dd', pad(d3, 2))
.replace('d', d3)
.replace('hh', pad(h2, 2))
.replace('h', h2)
.replace('mm', pad(m2, 2))
.replace('m', m2)
.replace('ss', pad(s2, 2))
.replace('s', s2)
.replace('SSS', pad(S2, 3))
return tpl
}
function capitalFirst(str) {
return str ? str.charAt(0).toUpperCase() + str.substr(1) : str
}
function convertToColorString(color2, defaultColor) {
defaultColor = defaultColor || 'transparent'
return isString$2(color2)
? color2
: isObject$b(color2)
? (color2.colorStops && (color2.colorStops[0] || {}).color) || defaultColor
: defaultColor
}
function windowOpen(link2, target2) {
if (target2 === '_blank' || target2 === 'blank') {
var blank = window.open()
blank.opener = null
blank.location.href = link2
} else {
window.open(link2, target2)
}
}
var each$e = each$f
var LOCATION_PARAMS = ['left', 'right', 'top', 'bottom', 'width', 'height']
var HV_NAMES = [
['width', 'left', 'right'],
['height', 'top', 'bottom'],
]
function boxLayout(orient, group, gap, maxWidth, maxHeight) {
var x2 = 0
var y2 = 0
if (maxWidth == null) {
maxWidth = Infinity
}
if (maxHeight == null) {
maxHeight = Infinity
}
var currentLineMaxSize = 0
group.eachChild(function (child, idx) {
var rect = child.getBoundingRect()
var nextChild = group.childAt(idx + 1)
var nextChildRect = nextChild && nextChild.getBoundingRect()
var nextX
var nextY
if (orient === 'horizontal') {
var moveX = rect.width + (nextChildRect ? -nextChildRect.x + rect.x : 0)
nextX = x2 + moveX
if (nextX > maxWidth || child.newline) {
x2 = 0
nextX = moveX
y2 += currentLineMaxSize + gap
currentLineMaxSize = rect.height
} else {
currentLineMaxSize = Math.max(currentLineMaxSize, rect.height)
}
} else {
var moveY = rect.height + (nextChildRect ? -nextChildRect.y + rect.y : 0)
nextY = y2 + moveY
if (nextY > maxHeight || child.newline) {
x2 += currentLineMaxSize + gap
y2 = 0
nextY = moveY
currentLineMaxSize = rect.width
} else {
currentLineMaxSize = Math.max(currentLineMaxSize, rect.width)
}
}
if (child.newline) {
return
}
child.x = x2
child.y = y2
child.markRedraw()
orient === 'horizontal' ? (x2 = nextX + gap) : (y2 = nextY + gap)
})
}
var box = boxLayout
curry$1(boxLayout, 'vertical')
curry$1(boxLayout, 'horizontal')
function getAvailableSize(positionInfo, containerRect, margin) {
var containerWidth = containerRect.width
var containerHeight = containerRect.height
var x2 = parsePercent(positionInfo.left, containerWidth)
var y2 = parsePercent(positionInfo.top, containerHeight)
var x22 = parsePercent(positionInfo.right, containerWidth)
var y22 = parsePercent(positionInfo.bottom, containerHeight)
;(isNaN(x2) || isNaN(parseFloat(positionInfo.left))) && (x2 = 0)
;(isNaN(x22) || isNaN(parseFloat(positionInfo.right))) &&
(x22 = containerWidth)
;(isNaN(y2) || isNaN(parseFloat(positionInfo.top))) && (y2 = 0)
;(isNaN(y22) || isNaN(parseFloat(positionInfo.bottom))) &&
(y22 = containerHeight)
margin = normalizeCssArray(margin || 0)
return {
width: Math.max(x22 - x2 - margin[1] - margin[3], 0),
height: Math.max(y22 - y2 - margin[0] - margin[2], 0),
}
}
function getLayoutRect(positionInfo, containerRect, margin) {
margin = normalizeCssArray(margin || 0)
var containerWidth = containerRect.width
var containerHeight = containerRect.height
var left2 = parsePercent(positionInfo.left, containerWidth)
var top2 = parsePercent(positionInfo.top, containerHeight)
var right2 = parsePercent(positionInfo.right, containerWidth)
var bottom2 = parsePercent(positionInfo.bottom, containerHeight)
var width = parsePercent(positionInfo.width, containerWidth)
var height = parsePercent(positionInfo.height, containerHeight)
var verticalMargin = margin[2] + margin[0]
var horizontalMargin = margin[1] + margin[3]
var aspect = positionInfo.aspect
if (isNaN(width)) {
width = containerWidth - right2 - horizontalMargin - left2
}
if (isNaN(height)) {
height = containerHeight - bottom2 - verticalMargin - top2
}
if (aspect != null) {
if (isNaN(width) && isNaN(height)) {
if (aspect > containerWidth / containerHeight) {
width = containerWidth * 0.8
} else {
height = containerHeight * 0.8
}
}
if (isNaN(width)) {
width = aspect * height
}
if (isNaN(height)) {
height = width / aspect
}
}
if (isNaN(left2)) {
left2 = containerWidth - right2 - width - horizontalMargin
}
if (isNaN(top2)) {
top2 = containerHeight - bottom2 - height - verticalMargin
}
switch (positionInfo.left || positionInfo.right) {
case 'center':
left2 = containerWidth / 2 - width / 2 - margin[3]
break
case 'right':
left2 = containerWidth - width - horizontalMargin
break
}
switch (positionInfo.top || positionInfo.bottom) {
case 'middle':
case 'center':
top2 = containerHeight / 2 - height / 2 - margin[0]
break
case 'bottom':
top2 = containerHeight - height - verticalMargin
break
}
left2 = left2 || 0
top2 = top2 || 0
if (isNaN(width)) {
width = containerWidth - horizontalMargin - left2 - (right2 || 0)
}
if (isNaN(height)) {
height = containerHeight - verticalMargin - top2 - (bottom2 || 0)
}
var rect = new BoundingRect$1(
left2 + margin[3],
top2 + margin[0],
width,
height
)
rect.margin = margin
return rect
}
function positionElement(el2, positionInfo, containerRect, margin, opt, out2) {
var h2 = !opt || !opt.hv || opt.hv[0]
var v4 = !opt || !opt.hv || opt.hv[1]
var boundingMode = (opt && opt.boundingMode) || 'all'
out2 = out2 || el2
out2.x = el2.x
out2.y = el2.y
if (!h2 && !v4) {
return false
}
var rect
if (boundingMode === 'raw') {
rect =
el2.type === 'group'
? new BoundingRect$1(
0,
0,
+positionInfo.width || 0,
+positionInfo.height || 0
)
: el2.getBoundingRect()
} else {
rect = el2.getBoundingRect()
if (el2.needLocalTransform()) {
var transform3 = el2.getLocalTransform()
rect = rect.clone()
rect.applyTransform(transform3)
}
}
var layoutRect = getLayoutRect(
defaults(
{
width: rect.width,
height: rect.height,
},
positionInfo
),
containerRect,
margin
)
var dx = h2 ? layoutRect.x - rect.x : 0
var dy = v4 ? layoutRect.y - rect.y : 0
if (boundingMode === 'raw') {
out2.x = dx
out2.y = dy
} else {
out2.x += dx
out2.y += dy
}
if (out2 === el2) {
el2.markRedraw()
}
return true
}
function sizeCalculable(option2, hvIdx) {
return (
option2[HV_NAMES[hvIdx][0]] != null ||
(option2[HV_NAMES[hvIdx][1]] != null && option2[HV_NAMES[hvIdx][2]] != null)
)
}
function fetchLayoutMode(ins) {
var layoutMode = ins.layoutMode || ins.constructor.layoutMode
return isObject$b(layoutMode)
? layoutMode
: layoutMode
? {
type: layoutMode,
}
: null
}
function mergeLayoutParam(targetOption, newOption, opt) {
var ignoreSize = opt && opt.ignoreSize
!isArray$6(ignoreSize) && (ignoreSize = [ignoreSize, ignoreSize])
var hResult = merge2(HV_NAMES[0], 0)
var vResult = merge2(HV_NAMES[1], 1)
copy2(HV_NAMES[0], targetOption, hResult)
copy2(HV_NAMES[1], targetOption, vResult)
function merge2(names2, hvIdx) {
var newParams = {}
var newValueCount = 0
var merged = {}
var mergedValueCount = 0
var enoughParamNumber = 2
each$e(names2, function (name2) {
merged[name2] = targetOption[name2]
})
each$e(names2, function (name2) {
hasProp(newOption, name2) &&
(newParams[name2] = merged[name2] = newOption[name2])
hasValue(newParams, name2) && newValueCount++
hasValue(merged, name2) && mergedValueCount++
})
if (ignoreSize[hvIdx]) {
if (hasValue(newOption, names2[1])) {
merged[names2[2]] = null
} else if (hasValue(newOption, names2[2])) {
merged[names2[1]] = null
}
return merged
}
if (mergedValueCount === enoughParamNumber || !newValueCount) {
return merged
} else if (newValueCount >= enoughParamNumber) {
return newParams
} else {
for (var i2 = 0; i2 < names2.length; i2++) {
var name_1 = names2[i2]
if (!hasProp(newParams, name_1) && hasProp(targetOption, name_1)) {
newParams[name_1] = targetOption[name_1]
break
}
}
return newParams
}
}
function hasProp(obj, name2) {
return obj.hasOwnProperty(name2)
}
function hasValue(obj, name2) {
return obj[name2] != null && obj[name2] !== 'auto'
}
function copy2(names2, target2, source2) {
each$e(names2, function (name2) {
target2[name2] = source2[name2]
})
}
}
function getLayoutParams(source2) {
return copyLayoutParams({}, source2)
}
function copyLayoutParams(target2, source2) {
source2 &&
target2 &&
each$e(LOCATION_PARAMS, function (name2) {
source2.hasOwnProperty(name2) && (target2[name2] = source2[name2])
})
return target2
}
var inner$l = makeInner()
var ComponentModel = (function (_super) {
__extends$2(ComponentModel2, _super)
function ComponentModel2(option2, parentModel, ecModel) {
var _this = _super.call(this, option2, parentModel, ecModel) || this
_this.uid = getUID('ec_cpt_model')
return _this
}
ComponentModel2.prototype.init = function (option2, parentModel, ecModel) {
this.mergeDefaultAndTheme(option2, ecModel)
}
ComponentModel2.prototype.mergeDefaultAndTheme = function (option2, ecModel) {
var layoutMode = fetchLayoutMode(this)
var inputPositionParams = layoutMode ? getLayoutParams(option2) : {}
var themeModel = ecModel.getTheme()
merge(option2, themeModel.get(this.mainType))
merge(option2, this.getDefaultOption())
if (layoutMode) {
mergeLayoutParam(option2, inputPositionParams, layoutMode)
}
}
ComponentModel2.prototype.mergeOption = function (option2, ecModel) {
merge(this.option, option2, true)
var layoutMode = fetchLayoutMode(this)
if (layoutMode) {
mergeLayoutParam(this.option, option2, layoutMode)
}
}
ComponentModel2.prototype.optionUpdated = function (newCptOption, isInit) {}
ComponentModel2.prototype.getDefaultOption = function () {
var ctor2 = this.constructor
if (!isExtendedClass(ctor2)) {
return ctor2.defaultOption
}
var fields = inner$l(this)
if (!fields.defaultOption) {
var optList = []
var clz = ctor2
while (clz) {
var opt = clz.prototype.defaultOption
opt && optList.push(opt)
clz = clz.superClass
}
var defaultOption2 = {}
for (var i2 = optList.length - 1; i2 >= 0; i2--) {
defaultOption2 = merge(defaultOption2, optList[i2], true)
}
fields.defaultOption = defaultOption2
}
return fields.defaultOption
}
ComponentModel2.prototype.getReferringComponents = function (mainType, opt) {
var indexKey = mainType + 'Index'
var idKey = mainType + 'Id'
return queryReferringComponents(
this.ecModel,
mainType,
{
index: this.get(indexKey, true),
id: this.get(idKey, true),
},
opt
)
}
ComponentModel2.prototype.getBoxLayoutParams = function () {
var boxLayoutModel = this
return {
left: boxLayoutModel.get('left'),
top: boxLayoutModel.get('top'),
right: boxLayoutModel.get('right'),
bottom: boxLayoutModel.get('bottom'),
width: boxLayoutModel.get('width'),
height: boxLayoutModel.get('height'),
}
}
ComponentModel2.prototype.getZLevelKey = function () {
return ''
}
ComponentModel2.prototype.setZLevel = function (zlevel) {
this.option.zlevel = zlevel
}
ComponentModel2.protoInitialize = (function () {
var proto2 = ComponentModel2.prototype
proto2.type = 'component'
proto2.id = ''
proto2.name = ''
proto2.mainType = ''
proto2.subType = ''
proto2.componentIndex = 0
})()
return ComponentModel2
})(Model$1)
mountExtend(ComponentModel, Model$1)
enableClassManagement(ComponentModel)
enableSubTypeDefaulter(ComponentModel)
enableTopologicalTravel(ComponentModel, getDependencies)
function getDependencies(componentType) {
var deps = []
each$f(ComponentModel.getClassesByMainType(componentType), function (clz) {
deps = deps.concat(clz.dependencies || clz.prototype.dependencies || [])
})
deps = map$1(deps, function (type4) {
return parseClassType(type4).main
})
if (componentType !== 'dataset' && indexOf(deps, 'dataset') <= 0) {
deps.unshift('dataset')
}
return deps
}
var ComponentModel$1 = ComponentModel
var platform = ''
if (typeof navigator !== 'undefined') {
platform = navigator.platform || ''
}
var decalColor = 'rgba(0, 0, 0, 0.2)'
var globalDefault = {
darkMode: 'auto',
colorBy: 'series',
color: [
'#5470c6',
'#91cc75',
'#fac858',
'#ee6666',
'#73c0de',
'#3ba272',
'#fc8452',
'#9a60b4',
'#ea7ccc',
],
gradientColor: ['#f6efa6', '#d88273', '#bf444c'],
aria: {
decal: {
decals: [
{
color: decalColor,
dashArrayX: [1, 0],
dashArrayY: [2, 5],
symbolSize: 1,
rotation: Math.PI / 6,
},
{
color: decalColor,
symbol: 'circle',
dashArrayX: [
[8, 8],
[0, 8, 8, 0],
],
dashArrayY: [6, 0],
symbolSize: 0.8,
},
{
color: decalColor,
dashArrayX: [1, 0],
dashArrayY: [4, 3],
rotation: -Math.PI / 4,
},
{
color: decalColor,
dashArrayX: [
[6, 6],
[0, 6, 6, 0],
],
dashArrayY: [6, 0],
},
{
color: decalColor,
dashArrayX: [
[1, 0],
[1, 6],
],
dashArrayY: [1, 0, 6, 0],
rotation: Math.PI / 4,
},
{
color: decalColor,
symbol: 'triangle',
dashArrayX: [
[9, 9],
[0, 9, 9, 0],
],
dashArrayY: [7, 2],
symbolSize: 0.75,
},
],
},
},
textStyle: {
fontFamily: platform.match(/^Win/) ? 'Microsoft YaHei' : 'sans-serif',
fontSize: 12,
fontStyle: 'normal',
fontWeight: 'normal',
},
blendMode: null,
stateAnimation: {
duration: 300,
easing: 'cubicOut',
},
animation: 'auto',
animationDuration: 1e3,
animationDurationUpdate: 500,
animationEasing: 'cubicInOut',
animationEasingUpdate: 'cubicInOut',
animationThreshold: 2e3,
progressiveThreshold: 3e3,
progressive: 400,
hoverLayerThreshold: 3e3,
useUTC: false,
}
var VISUAL_DIMENSIONS = createHashMap([
'tooltip',
'label',
'itemName',
'itemId',
'itemGroupId',
'seriesName',
])
var SOURCE_FORMAT_ORIGINAL = 'original'
var SOURCE_FORMAT_ARRAY_ROWS = 'arrayRows'
var SOURCE_FORMAT_OBJECT_ROWS = 'objectRows'
var SOURCE_FORMAT_KEYED_COLUMNS = 'keyedColumns'
var SOURCE_FORMAT_TYPED_ARRAY = 'typedArray'
var SOURCE_FORMAT_UNKNOWN = 'unknown'
var SERIES_LAYOUT_BY_COLUMN = 'column'
var SERIES_LAYOUT_BY_ROW = 'row'
var BE_ORDINAL = {
Must: 1,
Might: 2,
Not: 3,
}
var innerGlobalModel = makeInner()
function resetSourceDefaulter(ecModel) {
innerGlobalModel(ecModel).datasetMap = createHashMap()
}
function makeSeriesEncodeForAxisCoordSys(
coordDimensions,
seriesModel,
source2
) {
var encode2 = {}
var datasetModel = querySeriesUpstreamDatasetModel(seriesModel)
if (!datasetModel || !coordDimensions) {
return encode2
}
var encodeItemName = []
var encodeSeriesName = []
var ecModel = seriesModel.ecModel
var datasetMap = innerGlobalModel(ecModel).datasetMap
var key2 = datasetModel.uid + '_' + source2.seriesLayoutBy
var baseCategoryDimIndex
var categoryWayValueDimStart
coordDimensions = coordDimensions.slice()
each$f(coordDimensions, function (coordDimInfoLoose, coordDimIdx) {
var coordDimInfo = isObject$b(coordDimInfoLoose)
? coordDimInfoLoose
: (coordDimensions[coordDimIdx] = {
name: coordDimInfoLoose,
})
if (coordDimInfo.type === 'ordinal' && baseCategoryDimIndex == null) {
baseCategoryDimIndex = coordDimIdx
categoryWayValueDimStart = getDataDimCountOnCoordDim(coordDimInfo)
}
encode2[coordDimInfo.name] = []
})
var datasetRecord =
datasetMap.get(key2) ||
datasetMap.set(key2, {
categoryWayDim: categoryWayValueDimStart,
valueWayDim: 0,
})
each$f(coordDimensions, function (coordDimInfo, coordDimIdx) {
var coordDimName = coordDimInfo.name
var count2 = getDataDimCountOnCoordDim(coordDimInfo)
if (baseCategoryDimIndex == null) {
var start2 = datasetRecord.valueWayDim
pushDim(encode2[coordDimName], start2, count2)
pushDim(encodeSeriesName, start2, count2)
datasetRecord.valueWayDim += count2
} else if (baseCategoryDimIndex === coordDimIdx) {
pushDim(encode2[coordDimName], 0, count2)
pushDim(encodeItemName, 0, count2)
} else {
var start2 = datasetRecord.categoryWayDim
pushDim(encode2[coordDimName], start2, count2)
pushDim(encodeSeriesName, start2, count2)
datasetRecord.categoryWayDim += count2
}
})
function pushDim(dimIdxArr, idxFrom, idxCount) {
for (var i2 = 0; i2 < idxCount; i2++) {
dimIdxArr.push(idxFrom + i2)
}
}
function getDataDimCountOnCoordDim(coordDimInfo) {
var dimsDef = coordDimInfo.dimsDef
return dimsDef ? dimsDef.length : 1
}
encodeItemName.length && (encode2.itemName = encodeItemName)
encodeSeriesName.length && (encode2.seriesName = encodeSeriesName)
return encode2
}
function makeSeriesEncodeForNameBased(seriesModel, source2, dimCount) {
var encode2 = {}
var datasetModel = querySeriesUpstreamDatasetModel(seriesModel)
if (!datasetModel) {
return encode2
}
var sourceFormat = source2.sourceFormat
var dimensionsDefine = source2.dimensionsDefine
var potentialNameDimIndex
if (
sourceFormat === SOURCE_FORMAT_OBJECT_ROWS ||
sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS
) {
each$f(dimensionsDefine, function (dim, idx) {
if ((isObject$b(dim) ? dim.name : dim) === 'name') {
potentialNameDimIndex = idx
}
})
}
var idxResult = (function () {
var idxRes0 = {}
var idxRes1 = {}
var guessRecords = []
for (var i2 = 0, len2 = Math.min(5, dimCount); i2 < len2; i2++) {
var guessResult = doGuessOrdinal(
source2.data,
sourceFormat,
source2.seriesLayoutBy,
dimensionsDefine,
source2.startIndex,
i2
)
guessRecords.push(guessResult)
var isPureNumber = guessResult === BE_ORDINAL.Not
if (isPureNumber && idxRes0.v == null && i2 !== potentialNameDimIndex) {
idxRes0.v = i2
}
if (
idxRes0.n == null ||
idxRes0.n === idxRes0.v ||
(!isPureNumber && guessRecords[idxRes0.n] === BE_ORDINAL.Not)
) {
idxRes0.n = i2
}
if (fulfilled(idxRes0) && guessRecords[idxRes0.n] !== BE_ORDINAL.Not) {
return idxRes0
}
if (!isPureNumber) {
if (
guessResult === BE_ORDINAL.Might &&
idxRes1.v == null &&
i2 !== potentialNameDimIndex
) {
idxRes1.v = i2
}
if (idxRes1.n == null || idxRes1.n === idxRes1.v) {
idxRes1.n = i2
}
}
}
function fulfilled(idxResult2) {
return idxResult2.v != null && idxResult2.n != null
}
return fulfilled(idxRes0) ? idxRes0 : fulfilled(idxRes1) ? idxRes1 : null
})()
if (idxResult) {
encode2.value = [idxResult.v]
var nameDimIndex =
potentialNameDimIndex != null ? potentialNameDimIndex : idxResult.n
encode2.itemName = [nameDimIndex]
encode2.seriesName = [nameDimIndex]
}
return encode2
}
function querySeriesUpstreamDatasetModel(seriesModel) {
var thisData = seriesModel.get('data', true)
if (!thisData) {
return queryReferringComponents(
seriesModel.ecModel,
'dataset',
{
index: seriesModel.get('datasetIndex', true),
id: seriesModel.get('datasetId', true),
},
SINGLE_REFERRING
).models[0]
}
}
function queryDatasetUpstreamDatasetModels(datasetModel) {
if (
!datasetModel.get('transform', true) &&
!datasetModel.get('fromTransformResult', true)
) {
return []
}
return queryReferringComponents(
datasetModel.ecModel,
'dataset',
{
index: datasetModel.get('fromDatasetIndex', true),
id: datasetModel.get('fromDatasetId', true),
},
SINGLE_REFERRING
).models
}
function guessOrdinal(source2, dimIndex) {
return doGuessOrdinal(
source2.data,
source2.sourceFormat,
source2.seriesLayoutBy,
source2.dimensionsDefine,
source2.startIndex,
dimIndex
)
}
function doGuessOrdinal(
data2,
sourceFormat,
seriesLayoutBy,
dimensionsDefine,
startIndex,
dimIndex
) {
var result
var maxLoop = 5
if (isTypedArray$2(data2)) {
return BE_ORDINAL.Not
}
var dimName
var dimType
if (dimensionsDefine) {
var dimDefItem = dimensionsDefine[dimIndex]
if (isObject$b(dimDefItem)) {
dimName = dimDefItem.name
dimType = dimDefItem.type
} else if (isString$2(dimDefItem)) {
dimName = dimDefItem
}
}
if (dimType != null) {
return dimType === 'ordinal' ? BE_ORDINAL.Must : BE_ORDINAL.Not
}
if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {
var dataArrayRows = data2
if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {
var sample2 = dataArrayRows[dimIndex]
for (var i2 = 0; i2 < (sample2 || []).length && i2 < maxLoop; i2++) {
if ((result = detectValue(sample2[startIndex + i2])) != null) {
return result
}
}
} else {
for (var i2 = 0; i2 < dataArrayRows.length && i2 < maxLoop; i2++) {
var row = dataArrayRows[startIndex + i2]
if (row && (result = detectValue(row[dimIndex])) != null) {
return result
}
}
}
} else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {
var dataObjectRows = data2
if (!dimName) {
return BE_ORDINAL.Not
}
for (var i2 = 0; i2 < dataObjectRows.length && i2 < maxLoop; i2++) {
var item2 = dataObjectRows[i2]
if (item2 && (result = detectValue(item2[dimName])) != null) {
return result
}
}
} else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {
var dataKeyedColumns = data2
if (!dimName) {
return BE_ORDINAL.Not
}
var sample2 = dataKeyedColumns[dimName]
if (!sample2 || isTypedArray$2(sample2)) {
return BE_ORDINAL.Not
}
for (var i2 = 0; i2 < sample2.length && i2 < maxLoop; i2++) {
if ((result = detectValue(sample2[i2])) != null) {
return result
}
}
} else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {
var dataOriginal = data2
for (var i2 = 0; i2 < dataOriginal.length && i2 < maxLoop; i2++) {
var item2 = dataOriginal[i2]
var val2 = getDataItemValue(item2)
if (!isArray$6(val2)) {
return BE_ORDINAL.Not
}
if ((result = detectValue(val2[dimIndex])) != null) {
return result
}
}
}
function detectValue(val3) {
var beStr = isString$2(val3)
if (val3 != null && isFinite(val3) && val3 !== '') {
return beStr ? BE_ORDINAL.Might : BE_ORDINAL.Not
} else if (beStr && val3 !== '-') {
return BE_ORDINAL.Must
}
}
return BE_ORDINAL.Not
}
var internalOptionCreatorMap = createHashMap()
function registerInternalOptionCreator(mainType, creator) {
assert(internalOptionCreatorMap.get(mainType) == null && creator)
internalOptionCreatorMap.set(mainType, creator)
}
function concatInternalOptions(ecModel, mainType, newCmptOptionList) {
var internalOptionCreator = internalOptionCreatorMap.get(mainType)
if (!internalOptionCreator) {
return newCmptOptionList
}
var internalOptions = internalOptionCreator(ecModel)
if (!internalOptions) {
return newCmptOptionList
}
return newCmptOptionList.concat(internalOptions)
}
var innerColor = makeInner()
var innerDecal = makeInner()
var PaletteMixin = (function () {
function PaletteMixin2() {}
PaletteMixin2.prototype.getColorFromPalette = function (
name2,
scope,
requestNum
) {
var defaultPalette = normalizeToArray(this.get('color', true))
var layeredPalette = this.get('colorLayer', true)
return getFromPalette(
this,
innerColor,
defaultPalette,
layeredPalette,
name2,
scope,
requestNum
)
}
PaletteMixin2.prototype.clearColorPalette = function () {
clearPalette(this, innerColor)
}
return PaletteMixin2
})()
function getDecalFromPalette(ecModel, name2, scope, requestNum) {
var defaultDecals = normalizeToArray(ecModel.get(['aria', 'decal', 'decals']))
return getFromPalette(
ecModel,
innerDecal,
defaultDecals,
null,
name2,
scope,
requestNum
)
}
function getNearestPalette(palettes, requestColorNum) {
var paletteNum = palettes.length
for (var i2 = 0; i2 < paletteNum; i2++) {
if (palettes[i2].length > requestColorNum) {
return palettes[i2]
}
}
return palettes[paletteNum - 1]
}
function getFromPalette(
that,
inner2,
defaultPalette,
layeredPalette,
name2,
scope,
requestNum
) {
scope = scope || that
var scopeFields = inner2(scope)
var paletteIdx = scopeFields.paletteIdx || 0
var paletteNameMap = (scopeFields.paletteNameMap =
scopeFields.paletteNameMap || {})
if (paletteNameMap.hasOwnProperty(name2)) {
return paletteNameMap[name2]
}
var palette =
requestNum == null || !layeredPalette
? defaultPalette
: getNearestPalette(layeredPalette, requestNum)
palette = palette || defaultPalette
if (!palette || !palette.length) {
return
}
var pickedPaletteItem = palette[paletteIdx]
if (name2) {
paletteNameMap[name2] = pickedPaletteItem
}
scopeFields.paletteIdx = (paletteIdx + 1) % palette.length
return pickedPaletteItem
}
function clearPalette(that, inner2) {
inner2(that).paletteIdx = 0
inner2(that).paletteNameMap = {}
}
var reCreateSeriesIndices
var assertSeriesInitialized
var initBase
var OPTION_INNER_KEY = '\0_ec_inner'
var OPTION_INNER_VALUE = 1
var GlobalModel = (function (_super) {
__extends$2(GlobalModel2, _super)
function GlobalModel2() {
return (_super !== null && _super.apply(this, arguments)) || this
}
GlobalModel2.prototype.init = function (
option2,
parentModel,
ecModel,
theme2,
locale,
optionManager
) {
theme2 = theme2 || {}
this.option = null
this._theme = new Model$1(theme2)
this._locale = new Model$1(locale)
this._optionManager = optionManager
}
GlobalModel2.prototype.setOption = function (
option2,
opts,
optionPreprocessorFuncs2
) {
var innerOpt = normalizeSetOptionInput(opts)
this._optionManager.setOption(option2, optionPreprocessorFuncs2, innerOpt)
this._resetOption(null, innerOpt)
}
GlobalModel2.prototype.resetOption = function (type4, opt) {
return this._resetOption(type4, normalizeSetOptionInput(opt))
}
GlobalModel2.prototype._resetOption = function (type4, opt) {
var optionChanged = false
var optionManager = this._optionManager
if (!type4 || type4 === 'recreate') {
var baseOption = optionManager.mountOption(type4 === 'recreate')
if (!this.option || type4 === 'recreate') {
initBase(this, baseOption)
} else {
this.restoreData()
this._mergeOption(baseOption, opt)
}
optionChanged = true
}
if (type4 === 'timeline' || type4 === 'media') {
this.restoreData()
}
if (!type4 || type4 === 'recreate' || type4 === 'timeline') {
var timelineOption = optionManager.getTimelineOption(this)
if (timelineOption) {
optionChanged = true
this._mergeOption(timelineOption, opt)
}
}
if (!type4 || type4 === 'recreate' || type4 === 'media') {
var mediaOptions = optionManager.getMediaOption(this)
if (mediaOptions.length) {
each$f(
mediaOptions,
function (mediaOption) {
optionChanged = true
this._mergeOption(mediaOption, opt)
},
this
)
}
}
return optionChanged
}
GlobalModel2.prototype.mergeOption = function (option2) {
this._mergeOption(option2, null)
}
GlobalModel2.prototype._mergeOption = function (newOption, opt) {
var option2 = this.option
var componentsMap = this._componentsMap
var componentsCount = this._componentsCount
var newCmptTypes = []
var newCmptTypeMap = createHashMap()
var replaceMergeMainTypeMap = opt && opt.replaceMergeMainTypeMap
resetSourceDefaulter(this)
each$f(newOption, function (componentOption, mainType) {
if (componentOption == null) {
return
}
if (!ComponentModel$1.hasClass(mainType)) {
option2[mainType] =
option2[mainType] == null
? clone$4(componentOption)
: merge(option2[mainType], componentOption, true)
} else if (mainType) {
newCmptTypes.push(mainType)
newCmptTypeMap.set(mainType, true)
}
})
if (replaceMergeMainTypeMap) {
replaceMergeMainTypeMap.each(function (val2, mainTypeInReplaceMerge) {
if (
ComponentModel$1.hasClass(mainTypeInReplaceMerge) &&
!newCmptTypeMap.get(mainTypeInReplaceMerge)
) {
newCmptTypes.push(mainTypeInReplaceMerge)
newCmptTypeMap.set(mainTypeInReplaceMerge, true)
}
})
}
ComponentModel$1.topologicalTravel(
newCmptTypes,
ComponentModel$1.getAllClassMainTypes(),
visitComponent,
this
)
function visitComponent(mainType) {
var newCmptOptionList = concatInternalOptions(
this,
mainType,
normalizeToArray(newOption[mainType])
)
var oldCmptList = componentsMap.get(mainType)
var mergeMode = !oldCmptList
? 'replaceAll'
: replaceMergeMainTypeMap && replaceMergeMainTypeMap.get(mainType)
? 'replaceMerge'
: 'normalMerge'
var mappingResult = mappingToExists(
oldCmptList,
newCmptOptionList,
mergeMode
)
setComponentTypeToKeyInfo(mappingResult, mainType, ComponentModel$1)
option2[mainType] = null
componentsMap.set(mainType, null)
componentsCount.set(mainType, 0)
var optionsByMainType = []
var cmptsByMainType = []
var cmptsCountByMainType = 0
var tooltipExists
each$f(
mappingResult,
function (resultItem, index2) {
var componentModel = resultItem.existing
var newCmptOption = resultItem.newOption
if (!newCmptOption) {
if (componentModel) {
componentModel.mergeOption({}, this)
componentModel.optionUpdated({}, false)
}
} else {
var isSeriesType = mainType === 'series'
var ComponentModelClass = ComponentModel$1.getClass(
mainType,
resultItem.keyInfo.subType,
!isSeriesType
)
if (!ComponentModelClass) {
return
}
if (mainType === 'tooltip') {
if (tooltipExists) {
return
}
tooltipExists = true
}
if (
componentModel &&
componentModel.constructor === ComponentModelClass
) {
componentModel.name = resultItem.keyInfo.name
componentModel.mergeOption(newCmptOption, this)
componentModel.optionUpdated(newCmptOption, false)
} else {
var extraOpt = extend(
{
componentIndex: index2,
},
resultItem.keyInfo
)
componentModel = new ComponentModelClass(
newCmptOption,
this,
this,
extraOpt
)
extend(componentModel, extraOpt)
if (resultItem.brandNew) {
componentModel.__requireNewView = true
}
componentModel.init(newCmptOption, this, this)
componentModel.optionUpdated(null, true)
}
}
if (componentModel) {
optionsByMainType.push(componentModel.option)
cmptsByMainType.push(componentModel)
cmptsCountByMainType++
} else {
optionsByMainType.push(void 0)
cmptsByMainType.push(void 0)
}
},
this
)
option2[mainType] = optionsByMainType
componentsMap.set(mainType, cmptsByMainType)
componentsCount.set(mainType, cmptsCountByMainType)
if (mainType === 'series') {
reCreateSeriesIndices(this)
}
}
if (!this._seriesIndices) {
reCreateSeriesIndices(this)
}
}
GlobalModel2.prototype.getOption = function () {
var option2 = clone$4(this.option)
each$f(option2, function (optInMainType, mainType) {
if (ComponentModel$1.hasClass(mainType)) {
var opts = normalizeToArray(optInMainType)
var realLen = opts.length
var metNonInner = false
for (var i2 = realLen - 1; i2 >= 0; i2--) {
if (opts[i2] && !isComponentIdInternal(opts[i2])) {
metNonInner = true
} else {
opts[i2] = null
!metNonInner && realLen--
}
}
opts.length = realLen
option2[mainType] = opts
}
})
delete option2[OPTION_INNER_KEY]
return option2
}
GlobalModel2.prototype.getTheme = function () {
return this._theme
}
GlobalModel2.prototype.getLocaleModel = function () {
return this._locale
}
GlobalModel2.prototype.setUpdatePayload = function (payload) {
this._payload = payload
}
GlobalModel2.prototype.getUpdatePayload = function () {
return this._payload
}
GlobalModel2.prototype.getComponent = function (mainType, idx) {
var list2 = this._componentsMap.get(mainType)
if (list2) {
var cmpt = list2[idx || 0]
if (cmpt) {
return cmpt
} else if (idx == null) {
for (var i2 = 0; i2 < list2.length; i2++) {
if (list2[i2]) {
return list2[i2]
}
}
}
}
}
GlobalModel2.prototype.queryComponents = function (condition2) {
var mainType = condition2.mainType
if (!mainType) {
return []
}
var index2 = condition2.index
var id2 = condition2.id
var name2 = condition2.name
var cmpts = this._componentsMap.get(mainType)
if (!cmpts || !cmpts.length) {
return []
}
var result
if (index2 != null) {
result = []
each$f(normalizeToArray(index2), function (idx) {
cmpts[idx] && result.push(cmpts[idx])
})
} else if (id2 != null) {
result = queryByIdOrName('id', id2, cmpts)
} else if (name2 != null) {
result = queryByIdOrName('name', name2, cmpts)
} else {
result = filter(cmpts, function (cmpt) {
return !!cmpt
})
}
return filterBySubType(result, condition2)
}
GlobalModel2.prototype.findComponents = function (condition2) {
var query = condition2.query
var mainType = condition2.mainType
var queryCond = getQueryCond(query)
var result = queryCond
? this.queryComponents(queryCond)
: filter(this._componentsMap.get(mainType), function (cmpt) {
return !!cmpt
})
return doFilter(filterBySubType(result, condition2))
function getQueryCond(q2) {
var indexAttr = mainType + 'Index'
var idAttr = mainType + 'Id'
var nameAttr = mainType + 'Name'
return q2 &&
(q2[indexAttr] != null || q2[idAttr] != null || q2[nameAttr] != null)
? {
mainType,
index: q2[indexAttr],
id: q2[idAttr],
name: q2[nameAttr],
}
: null
}
function doFilter(res) {
return condition2.filter ? filter(res, condition2.filter) : res
}
}
GlobalModel2.prototype.eachComponent = function (mainType, cb, context2) {
var componentsMap = this._componentsMap
if (isFunction$4(mainType)) {
var ctxForAll_1 = cb
var cbForAll_1 = mainType
componentsMap.each(function (cmpts2, componentType) {
for (var i3 = 0; cmpts2 && i3 < cmpts2.length; i3++) {
var cmpt2 = cmpts2[i3]
cmpt2 &&
cbForAll_1.call(
ctxForAll_1,
componentType,
cmpt2,
cmpt2.componentIndex
)
}
})
} else {
var cmpts = isString$2(mainType)
? componentsMap.get(mainType)
: isObject$b(mainType)
? this.findComponents(mainType)
: null
for (var i2 = 0; cmpts && i2 < cmpts.length; i2++) {
var cmpt = cmpts[i2]
cmpt && cb.call(context2, cmpt, cmpt.componentIndex)
}
}
}
GlobalModel2.prototype.getSeriesByName = function (name2) {
var nameStr = convertOptionIdName(name2, null)
return filter(this._componentsMap.get('series'), function (oneSeries) {
return !!oneSeries && nameStr != null && oneSeries.name === nameStr
})
}
GlobalModel2.prototype.getSeriesByIndex = function (seriesIndex) {
return this._componentsMap.get('series')[seriesIndex]
}
GlobalModel2.prototype.getSeriesByType = function (subType) {
return filter(this._componentsMap.get('series'), function (oneSeries) {
return !!oneSeries && oneSeries.subType === subType
})
}
GlobalModel2.prototype.getSeries = function () {
return filter(this._componentsMap.get('series'), function (oneSeries) {
return !!oneSeries
})
}
GlobalModel2.prototype.getSeriesCount = function () {
return this._componentsCount.get('series')
}
GlobalModel2.prototype.eachSeries = function (cb, context2) {
assertSeriesInitialized(this)
each$f(
this._seriesIndices,
function (rawSeriesIndex) {
var series = this._componentsMap.get('series')[rawSeriesIndex]
cb.call(context2, series, rawSeriesIndex)
},
this
)
}
GlobalModel2.prototype.eachRawSeries = function (cb, context2) {
each$f(this._componentsMap.get('series'), function (series) {
series && cb.call(context2, series, series.componentIndex)
})
}
GlobalModel2.prototype.eachSeriesByType = function (subType, cb, context2) {
assertSeriesInitialized(this)
each$f(
this._seriesIndices,
function (rawSeriesIndex) {
var series = this._componentsMap.get('series')[rawSeriesIndex]
if (series.subType === subType) {
cb.call(context2, series, rawSeriesIndex)
}
},
this
)
}
GlobalModel2.prototype.eachRawSeriesByType = function (
subType,
cb,
context2
) {
return each$f(this.getSeriesByType(subType), cb, context2)
}
GlobalModel2.prototype.isSeriesFiltered = function (seriesModel) {
assertSeriesInitialized(this)
return this._seriesIndicesMap.get(seriesModel.componentIndex) == null
}
GlobalModel2.prototype.getCurrentSeriesIndices = function () {
return (this._seriesIndices || []).slice()
}
GlobalModel2.prototype.filterSeries = function (cb, context2) {
assertSeriesInitialized(this)
var newSeriesIndices = []
each$f(
this._seriesIndices,
function (seriesRawIdx) {
var series = this._componentsMap.get('series')[seriesRawIdx]
cb.call(context2, series, seriesRawIdx) &&
newSeriesIndices.push(seriesRawIdx)
},
this
)
this._seriesIndices = newSeriesIndices
this._seriesIndicesMap = createHashMap(newSeriesIndices)
}
GlobalModel2.prototype.restoreData = function (payload) {
reCreateSeriesIndices(this)
var componentsMap = this._componentsMap
var componentTypes = []
componentsMap.each(function (components, componentType) {
if (ComponentModel$1.hasClass(componentType)) {
componentTypes.push(componentType)
}
})
ComponentModel$1.topologicalTravel(
componentTypes,
ComponentModel$1.getAllClassMainTypes(),
function (componentType) {
each$f(componentsMap.get(componentType), function (component2) {
if (
component2 &&
(componentType !== 'series' ||
!isNotTargetSeries(component2, payload))
) {
component2.restoreData()
}
})
}
)
}
GlobalModel2.internalField = (function () {
reCreateSeriesIndices = function (ecModel) {
var seriesIndices = (ecModel._seriesIndices = [])
each$f(ecModel._componentsMap.get('series'), function (series) {
series && seriesIndices.push(series.componentIndex)
})
ecModel._seriesIndicesMap = createHashMap(seriesIndices)
}
assertSeriesInitialized = function (ecModel) {}
initBase = function (ecModel, baseOption) {
ecModel.option = {}
ecModel.option[OPTION_INNER_KEY] = OPTION_INNER_VALUE
ecModel._componentsMap = createHashMap({
series: [],
})
ecModel._componentsCount = createHashMap()
var airaOption = baseOption.aria
if (isObject$b(airaOption) && airaOption.enabled == null) {
airaOption.enabled = true
}
mergeTheme(baseOption, ecModel._theme.option)
merge(baseOption, globalDefault, false)
ecModel._mergeOption(baseOption, null)
}
})()
return GlobalModel2
})(Model$1)
function isNotTargetSeries(seriesModel, payload) {
if (payload) {
var index2 = payload.seriesIndex
var id2 = payload.seriesId
var name_1 = payload.seriesName
return (
(index2 != null && seriesModel.componentIndex !== index2) ||
(id2 != null && seriesModel.id !== id2) ||
(name_1 != null && seriesModel.name !== name_1)
)
}
}
function mergeTheme(option2, theme2) {
var notMergeColorLayer = option2.color && !option2.colorLayer
each$f(theme2, function (themeItem, name2) {
if (name2 === 'colorLayer' && notMergeColorLayer) {
return
}
if (!ComponentModel$1.hasClass(name2)) {
if (typeof themeItem === 'object') {
option2[name2] = !option2[name2]
? clone$4(themeItem)
: merge(option2[name2], themeItem, false)
} else {
if (option2[name2] == null) {
option2[name2] = themeItem
}
}
}
})
}
function queryByIdOrName(attr, idOrName, cmpts) {
if (isArray$6(idOrName)) {
var keyMap_1 = createHashMap()
each$f(idOrName, function (idOrNameItem) {
if (idOrNameItem != null) {
var idName = convertOptionIdName(idOrNameItem, null)
idName != null && keyMap_1.set(idOrNameItem, true)
}
})
return filter(cmpts, function (cmpt) {
return cmpt && keyMap_1.get(cmpt[attr])
})
} else {
var idName_1 = convertOptionIdName(idOrName, null)
return filter(cmpts, function (cmpt) {
return cmpt && idName_1 != null && cmpt[attr] === idName_1
})
}
}
function filterBySubType(components, condition2) {
return condition2.hasOwnProperty('subType')
? filter(components, function (cmpt) {
return cmpt && cmpt.subType === condition2.subType
})
: components
}
function normalizeSetOptionInput(opts) {
var replaceMergeMainTypeMap = createHashMap()
opts &&
each$f(normalizeToArray(opts.replaceMerge), function (mainType) {
replaceMergeMainTypeMap.set(mainType, true)
})
return {
replaceMergeMainTypeMap,
}
}
mixin(GlobalModel, PaletteMixin)
var GlobalModel$1 = GlobalModel
var availableMethods = [
'getDom',
'getZr',
'getWidth',
'getHeight',
'getDevicePixelRatio',
'dispatchAction',
'isSSR',
'isDisposed',
'on',
'off',
'getDataURL',
'getConnectedDataURL',
'getOption',
'getId',
'updateLabelLayout',
]
var ExtensionAPI = (function () {
function ExtensionAPI2(ecInstance) {
each$f(
availableMethods,
function (methodName) {
this[methodName] = bind$1(ecInstance[methodName], ecInstance)
},
this
)
}
return ExtensionAPI2
})()
var ExtensionAPI$1 = ExtensionAPI
var coordinateSystemCreators = {}
var CoordinateSystemManager = (function () {
function CoordinateSystemManager2() {
this._coordinateSystems = []
}
CoordinateSystemManager2.prototype.create = function (ecModel, api) {
var coordinateSystems = []
each$f(coordinateSystemCreators, function (creator, type4) {
var list2 = creator.create(ecModel, api)
coordinateSystems = coordinateSystems.concat(list2 || [])
})
this._coordinateSystems = coordinateSystems
}
CoordinateSystemManager2.prototype.update = function (ecModel, api) {
each$f(this._coordinateSystems, function (coordSys) {
coordSys.update && coordSys.update(ecModel, api)
})
}
CoordinateSystemManager2.prototype.getCoordinateSystems = function () {
return this._coordinateSystems.slice()
}
CoordinateSystemManager2.register = function (type4, creator) {
coordinateSystemCreators[type4] = creator
}
CoordinateSystemManager2.get = function (type4) {
return coordinateSystemCreators[type4]
}
return CoordinateSystemManager2
})()
var CoordinateSystem = CoordinateSystemManager
var QUERY_REG = /^(min|max)?(.+)$/
var OptionManager = (function () {
function OptionManager2(api) {
this._timelineOptions = []
this._mediaList = []
this._currentMediaIndices = []
this._api = api
}
OptionManager2.prototype.setOption = function (
rawOption,
optionPreprocessorFuncs2,
opt
) {
if (rawOption) {
each$f(normalizeToArray(rawOption.series), function (series) {
series &&
series.data &&
isTypedArray$2(series.data) &&
setAsPrimitive(series.data)
})
each$f(normalizeToArray(rawOption.dataset), function (dataset) {
dataset &&
dataset.source &&
isTypedArray$2(dataset.source) &&
setAsPrimitive(dataset.source)
})
}
rawOption = clone$4(rawOption)
var optionBackup = this._optionBackup
var newParsedOption = parseRawOption(
rawOption,
optionPreprocessorFuncs2,
!optionBackup
)
this._newBaseOption = newParsedOption.baseOption
if (optionBackup) {
if (newParsedOption.timelineOptions.length) {
optionBackup.timelineOptions = newParsedOption.timelineOptions
}
if (newParsedOption.mediaList.length) {
optionBackup.mediaList = newParsedOption.mediaList
}
if (newParsedOption.mediaDefault) {
optionBackup.mediaDefault = newParsedOption.mediaDefault
}
} else {
this._optionBackup = newParsedOption
}
}
OptionManager2.prototype.mountOption = function (isRecreate) {
var optionBackup = this._optionBackup
this._timelineOptions = optionBackup.timelineOptions
this._mediaList = optionBackup.mediaList
this._mediaDefault = optionBackup.mediaDefault
this._currentMediaIndices = []
return clone$4(isRecreate ? optionBackup.baseOption : this._newBaseOption)
}
OptionManager2.prototype.getTimelineOption = function (ecModel) {
var option2
var timelineOptions = this._timelineOptions
if (timelineOptions.length) {
var timelineModel = ecModel.getComponent('timeline')
if (timelineModel) {
option2 = clone$4(timelineOptions[timelineModel.getCurrentIndex()])
}
}
return option2
}
OptionManager2.prototype.getMediaOption = function (ecModel) {
var ecWidth = this._api.getWidth()
var ecHeight = this._api.getHeight()
var mediaList = this._mediaList
var mediaDefault = this._mediaDefault
var indices = []
var result = []
if (!mediaList.length && !mediaDefault) {
return result
}
for (var i2 = 0, len2 = mediaList.length; i2 < len2; i2++) {
if (applyMediaQuery(mediaList[i2].query, ecWidth, ecHeight)) {
indices.push(i2)
}
}
if (!indices.length && mediaDefault) {
indices = [-1]
}
if (indices.length && !indicesEquals(indices, this._currentMediaIndices)) {
result = map$1(indices, function (index2) {
return clone$4(
index2 === -1 ? mediaDefault.option : mediaList[index2].option
)
})
}
this._currentMediaIndices = indices
return result
}
return OptionManager2
})()
function parseRawOption(rawOption, optionPreprocessorFuncs2, isNew) {
var mediaList = []
var mediaDefault
var baseOption
var declaredBaseOption = rawOption.baseOption
var timelineOnRoot = rawOption.timeline
var timelineOptionsOnRoot = rawOption.options
var mediaOnRoot = rawOption.media
var hasMedia = !!rawOption.media
var hasTimeline = !!(
timelineOptionsOnRoot ||
timelineOnRoot ||
(declaredBaseOption && declaredBaseOption.timeline)
)
if (declaredBaseOption) {
baseOption = declaredBaseOption
if (!baseOption.timeline) {
baseOption.timeline = timelineOnRoot
}
} else {
if (hasTimeline || hasMedia) {
rawOption.options = rawOption.media = null
}
baseOption = rawOption
}
if (hasMedia) {
if (isArray$6(mediaOnRoot)) {
each$f(mediaOnRoot, function (singleMedia) {
if (singleMedia && singleMedia.option) {
if (singleMedia.query) {
mediaList.push(singleMedia)
} else if (!mediaDefault) {
mediaDefault = singleMedia
}
}
})
}
}
doPreprocess(baseOption)
each$f(timelineOptionsOnRoot, function (option2) {
return doPreprocess(option2)
})
each$f(mediaList, function (media) {
return doPreprocess(media.option)
})
function doPreprocess(option2) {
each$f(optionPreprocessorFuncs2, function (preProcess) {
preProcess(option2, isNew)
})
}
return {
baseOption,
timelineOptions: timelineOptionsOnRoot || [],
mediaDefault,
mediaList,
}
}
function applyMediaQuery(query, ecWidth, ecHeight) {
var realMap = {
width: ecWidth,
height: ecHeight,
aspectratio: ecWidth / ecHeight,
}
var applicable = true
each$f(query, function (value2, attr) {
var matched = attr.match(QUERY_REG)
if (!matched || !matched[1] || !matched[2]) {
return
}
var operator = matched[1]
var realAttr = matched[2].toLowerCase()
if (!compare(realMap[realAttr], value2, operator)) {
applicable = false
}
})
return applicable
}
function compare(real, expect, operator) {
if (operator === 'min') {
return real >= expect
} else if (operator === 'max') {
return real <= expect
} else {
return real === expect
}
}
function indicesEquals(indices1, indices2) {
return indices1.join(',') === indices2.join(',')
}
var OptionManager$1 = OptionManager
var each$d = each$f
var isObject$a = isObject$b
var POSSIBLE_STYLES = [
'areaStyle',
'lineStyle',
'nodeStyle',
'linkStyle',
'chordStyle',
'label',
'labelLine',
]
function compatEC2ItemStyle(opt) {
var itemStyleOpt = opt && opt.itemStyle
if (!itemStyleOpt) {
return
}
for (var i2 = 0, len2 = POSSIBLE_STYLES.length; i2 < len2; i2++) {
var styleName = POSSIBLE_STYLES[i2]
var normalItemStyleOpt = itemStyleOpt.normal
var emphasisItemStyleOpt = itemStyleOpt.emphasis
if (normalItemStyleOpt && normalItemStyleOpt[styleName]) {
opt[styleName] = opt[styleName] || {}
if (!opt[styleName].normal) {
opt[styleName].normal = normalItemStyleOpt[styleName]
} else {
merge(opt[styleName].normal, normalItemStyleOpt[styleName])
}
normalItemStyleOpt[styleName] = null
}
if (emphasisItemStyleOpt && emphasisItemStyleOpt[styleName]) {
opt[styleName] = opt[styleName] || {}
if (!opt[styleName].emphasis) {
opt[styleName].emphasis = emphasisItemStyleOpt[styleName]
} else {
merge(opt[styleName].emphasis, emphasisItemStyleOpt[styleName])
}
emphasisItemStyleOpt[styleName] = null
}
}
}
function convertNormalEmphasis(opt, optType, useExtend) {
if (opt && opt[optType] && (opt[optType].normal || opt[optType].emphasis)) {
var normalOpt = opt[optType].normal
var emphasisOpt = opt[optType].emphasis
if (normalOpt) {
if (useExtend) {
opt[optType].normal = opt[optType].emphasis = null
defaults(opt[optType], normalOpt)
} else {
opt[optType] = normalOpt
}
}
if (emphasisOpt) {
opt.emphasis = opt.emphasis || {}
opt.emphasis[optType] = emphasisOpt
if (emphasisOpt.focus) {
opt.emphasis.focus = emphasisOpt.focus
}
if (emphasisOpt.blurScope) {
opt.emphasis.blurScope = emphasisOpt.blurScope
}
}
}
}
function removeEC3NormalStatus(opt) {
convertNormalEmphasis(opt, 'itemStyle')
convertNormalEmphasis(opt, 'lineStyle')
convertNormalEmphasis(opt, 'areaStyle')
convertNormalEmphasis(opt, 'label')
convertNormalEmphasis(opt, 'labelLine')
convertNormalEmphasis(opt, 'upperLabel')
convertNormalEmphasis(opt, 'edgeLabel')
}
function compatTextStyle(opt, propName) {
var labelOptSingle = isObject$a(opt) && opt[propName]
var textStyle = isObject$a(labelOptSingle) && labelOptSingle.textStyle
if (textStyle) {
for (var i2 = 0, len2 = TEXT_STYLE_OPTIONS.length; i2 < len2; i2++) {
var textPropName = TEXT_STYLE_OPTIONS[i2]
if (textStyle.hasOwnProperty(textPropName)) {
labelOptSingle[textPropName] = textStyle[textPropName]
}
}
}
}
function compatEC3CommonStyles(opt) {
if (opt) {
removeEC3NormalStatus(opt)
compatTextStyle(opt, 'label')
opt.emphasis && compatTextStyle(opt.emphasis, 'label')
}
}
function processSeries(seriesOpt) {
if (!isObject$a(seriesOpt)) {
return
}
compatEC2ItemStyle(seriesOpt)
removeEC3NormalStatus(seriesOpt)
compatTextStyle(seriesOpt, 'label')
compatTextStyle(seriesOpt, 'upperLabel')
compatTextStyle(seriesOpt, 'edgeLabel')
if (seriesOpt.emphasis) {
compatTextStyle(seriesOpt.emphasis, 'label')
compatTextStyle(seriesOpt.emphasis, 'upperLabel')
compatTextStyle(seriesOpt.emphasis, 'edgeLabel')
}
var markPoint = seriesOpt.markPoint
if (markPoint) {
compatEC2ItemStyle(markPoint)
compatEC3CommonStyles(markPoint)
}
var markLine = seriesOpt.markLine
if (markLine) {
compatEC2ItemStyle(markLine)
compatEC3CommonStyles(markLine)
}
var markArea = seriesOpt.markArea
if (markArea) {
compatEC3CommonStyles(markArea)
}
var data2 = seriesOpt.data
if (seriesOpt.type === 'graph') {
data2 = data2 || seriesOpt.nodes
var edgeData = seriesOpt.links || seriesOpt.edges
if (edgeData && !isTypedArray$2(edgeData)) {
for (var i2 = 0; i2 < edgeData.length; i2++) {
compatEC3CommonStyles(edgeData[i2])
}
}
each$f(seriesOpt.categories, function (opt) {
removeEC3NormalStatus(opt)
})
}
if (data2 && !isTypedArray$2(data2)) {
for (var i2 = 0; i2 < data2.length; i2++) {
compatEC3CommonStyles(data2[i2])
}
}
markPoint = seriesOpt.markPoint
if (markPoint && markPoint.data) {
var mpData = markPoint.data
for (var i2 = 0; i2 < mpData.length; i2++) {
compatEC3CommonStyles(mpData[i2])
}
}
markLine = seriesOpt.markLine
if (markLine && markLine.data) {
var mlData = markLine.data
for (var i2 = 0; i2 < mlData.length; i2++) {
if (isArray$6(mlData[i2])) {
compatEC3CommonStyles(mlData[i2][0])
compatEC3CommonStyles(mlData[i2][1])
} else {
compatEC3CommonStyles(mlData[i2])
}
}
}
if (seriesOpt.type === 'gauge') {
compatTextStyle(seriesOpt, 'axisLabel')
compatTextStyle(seriesOpt, 'title')
compatTextStyle(seriesOpt, 'detail')
} else if (seriesOpt.type === 'treemap') {
convertNormalEmphasis(seriesOpt.breadcrumb, 'itemStyle')
each$f(seriesOpt.levels, function (opt) {
removeEC3NormalStatus(opt)
})
} else if (seriesOpt.type === 'tree') {
removeEC3NormalStatus(seriesOpt.leaves)
}
}
function toArr(o2) {
return isArray$6(o2) ? o2 : o2 ? [o2] : []
}
function toObj(o2) {
return (isArray$6(o2) ? o2[0] : o2) || {}
}
function globalCompatStyle(option2, isTheme) {
each$d(toArr(option2.series), function (seriesOpt) {
isObject$a(seriesOpt) && processSeries(seriesOpt)
})
var axes = [
'xAxis',
'yAxis',
'radiusAxis',
'angleAxis',
'singleAxis',
'parallelAxis',
'radar',
]
isTheme && axes.push('valueAxis', 'categoryAxis', 'logAxis', 'timeAxis')
each$d(axes, function (axisName) {
each$d(toArr(option2[axisName]), function (axisOpt) {
if (axisOpt) {
compatTextStyle(axisOpt, 'axisLabel')
compatTextStyle(axisOpt.axisPointer, 'label')
}
})
})
each$d(toArr(option2.parallel), function (parallelOpt) {
var parallelAxisDefault = parallelOpt && parallelOpt.parallelAxisDefault
compatTextStyle(parallelAxisDefault, 'axisLabel')
compatTextStyle(
parallelAxisDefault && parallelAxisDefault.axisPointer,
'label'
)
})
each$d(toArr(option2.calendar), function (calendarOpt) {
convertNormalEmphasis(calendarOpt, 'itemStyle')
compatTextStyle(calendarOpt, 'dayLabel')
compatTextStyle(calendarOpt, 'monthLabel')
compatTextStyle(calendarOpt, 'yearLabel')
})
each$d(toArr(option2.radar), function (radarOpt) {
compatTextStyle(radarOpt, 'name')
if (radarOpt.name && radarOpt.axisName == null) {
radarOpt.axisName = radarOpt.name
delete radarOpt.name
}
if (radarOpt.nameGap != null && radarOpt.axisNameGap == null) {
radarOpt.axisNameGap = radarOpt.nameGap
delete radarOpt.nameGap
}
})
each$d(toArr(option2.geo), function (geoOpt) {
if (isObject$a(geoOpt)) {
compatEC3CommonStyles(geoOpt)
each$d(toArr(geoOpt.regions), function (regionObj) {
compatEC3CommonStyles(regionObj)
})
}
})
each$d(toArr(option2.timeline), function (timelineOpt) {
compatEC3CommonStyles(timelineOpt)
convertNormalEmphasis(timelineOpt, 'label')
convertNormalEmphasis(timelineOpt, 'itemStyle')
convertNormalEmphasis(timelineOpt, 'controlStyle', true)
var data2 = timelineOpt.data
isArray$6(data2) &&
each$f(data2, function (item2) {
if (isObject$b(item2)) {
convertNormalEmphasis(item2, 'label')
convertNormalEmphasis(item2, 'itemStyle')
}
})
})
each$d(toArr(option2.toolbox), function (toolboxOpt) {
convertNormalEmphasis(toolboxOpt, 'iconStyle')
each$d(toolboxOpt.feature, function (featureOpt) {
convertNormalEmphasis(featureOpt, 'iconStyle')
})
})
compatTextStyle(toObj(option2.axisPointer), 'label')
compatTextStyle(toObj(option2.tooltip).axisPointer, 'label')
}
function get(opt, path) {
var pathArr = path.split(',')
var obj = opt
for (var i2 = 0; i2 < pathArr.length; i2++) {
obj = obj && obj[pathArr[i2]]
if (obj == null) {
break
}
}
return obj
}
function set(opt, path, val2, overwrite) {
var pathArr = path.split(',')
var obj = opt
var key2
var i2 = 0
for (; i2 < pathArr.length - 1; i2++) {
key2 = pathArr[i2]
if (obj[key2] == null) {
obj[key2] = {}
}
obj = obj[key2]
}
if (overwrite || obj[pathArr[i2]] == null) {
obj[pathArr[i2]] = val2
}
}
function compatLayoutProperties(option2) {
option2 &&
each$f(LAYOUT_PROPERTIES, function (prop) {
if (prop[0] in option2 && !(prop[1] in option2)) {
option2[prop[1]] = option2[prop[0]]
}
})
}
var LAYOUT_PROPERTIES = [
['x', 'left'],
['y', 'top'],
['x2', 'right'],
['y2', 'bottom'],
]
var COMPATITABLE_COMPONENTS = [
'grid',
'geo',
'parallel',
'legend',
'toolbox',
'title',
'visualMap',
'dataZoom',
'timeline',
]
var BAR_ITEM_STYLE_MAP = [
['borderRadius', 'barBorderRadius'],
['borderColor', 'barBorderColor'],
['borderWidth', 'barBorderWidth'],
]
function compatBarItemStyle(option2) {
var itemStyle = option2 && option2.itemStyle
if (itemStyle) {
for (var i2 = 0; i2 < BAR_ITEM_STYLE_MAP.length; i2++) {
var oldName = BAR_ITEM_STYLE_MAP[i2][1]
var newName = BAR_ITEM_STYLE_MAP[i2][0]
if (itemStyle[oldName] != null) {
itemStyle[newName] = itemStyle[oldName]
}
}
}
}
function compatPieLabel(option2) {
if (!option2) {
return
}
if (
option2.alignTo === 'edge' &&
option2.margin != null &&
option2.edgeDistance == null
) {
option2.edgeDistance = option2.margin
}
}
function compatSunburstState(option2) {
if (!option2) {
return
}
if (option2.downplay && !option2.blur) {
option2.blur = option2.downplay
}
}
function compatGraphFocus(option2) {
if (!option2) {
return
}
if (option2.focusNodeAdjacency != null) {
option2.emphasis = option2.emphasis || {}
if (option2.emphasis.focus == null) {
option2.emphasis.focus = 'adjacency'
}
}
}
function traverseTree(data2, cb) {
if (data2) {
for (var i2 = 0; i2 < data2.length; i2++) {
cb(data2[i2])
data2[i2] && traverseTree(data2[i2].children, cb)
}
}
}
function globalBackwardCompat(option2, isTheme) {
globalCompatStyle(option2, isTheme)
option2.series = normalizeToArray(option2.series)
each$f(option2.series, function (seriesOpt) {
if (!isObject$b(seriesOpt)) {
return
}
var seriesType2 = seriesOpt.type
if (seriesType2 === 'line') {
if (seriesOpt.clipOverflow != null) {
seriesOpt.clip = seriesOpt.clipOverflow
}
} else if (seriesType2 === 'pie' || seriesType2 === 'gauge') {
if (seriesOpt.clockWise != null) {
seriesOpt.clockwise = seriesOpt.clockWise
}
compatPieLabel(seriesOpt.label)
var data2 = seriesOpt.data
if (data2 && !isTypedArray$2(data2)) {
for (var i2 = 0; i2 < data2.length; i2++) {
compatPieLabel(data2[i2])
}
}
if (seriesOpt.hoverOffset != null) {
seriesOpt.emphasis = seriesOpt.emphasis || {}
if ((seriesOpt.emphasis.scaleSize = null)) {
seriesOpt.emphasis.scaleSize = seriesOpt.hoverOffset
}
}
} else if (seriesType2 === 'gauge') {
var pointerColor = get(seriesOpt, 'pointer.color')
pointerColor != null && set(seriesOpt, 'itemStyle.color', pointerColor)
} else if (seriesType2 === 'bar') {
compatBarItemStyle(seriesOpt)
compatBarItemStyle(seriesOpt.backgroundStyle)
compatBarItemStyle(seriesOpt.emphasis)
var data2 = seriesOpt.data
if (data2 && !isTypedArray$2(data2)) {
for (var i2 = 0; i2 < data2.length; i2++) {
if (typeof data2[i2] === 'object') {
compatBarItemStyle(data2[i2])
compatBarItemStyle(data2[i2] && data2[i2].emphasis)
}
}
}
} else if (seriesType2 === 'sunburst') {
var highlightPolicy = seriesOpt.highlightPolicy
if (highlightPolicy) {
seriesOpt.emphasis = seriesOpt.emphasis || {}
if (!seriesOpt.emphasis.focus) {
seriesOpt.emphasis.focus = highlightPolicy
}
}
compatSunburstState(seriesOpt)
traverseTree(seriesOpt.data, compatSunburstState)
} else if (seriesType2 === 'graph' || seriesType2 === 'sankey') {
compatGraphFocus(seriesOpt)
} else if (seriesType2 === 'map') {
if (seriesOpt.mapType && !seriesOpt.map) {
seriesOpt.map = seriesOpt.mapType
}
if (seriesOpt.mapLocation) {
defaults(seriesOpt, seriesOpt.mapLocation)
}
}
if (seriesOpt.hoverAnimation != null) {
seriesOpt.emphasis = seriesOpt.emphasis || {}
if (seriesOpt.emphasis && seriesOpt.emphasis.scale == null) {
seriesOpt.emphasis.scale = seriesOpt.hoverAnimation
}
}
compatLayoutProperties(seriesOpt)
})
if (option2.dataRange) {
option2.visualMap = option2.dataRange
}
each$f(COMPATITABLE_COMPONENTS, function (componentName2) {
var options2 = option2[componentName2]
if (options2) {
if (!isArray$6(options2)) {
options2 = [options2]
}
each$f(options2, function (option3) {
compatLayoutProperties(option3)
})
}
})
}
function dataStack$1(ecModel) {
var stackInfoMap = createHashMap()
ecModel.eachSeries(function (seriesModel) {
var stack = seriesModel.get('stack')
if (stack) {
var stackInfoList = stackInfoMap.get(stack) || stackInfoMap.set(stack, [])
var data2 = seriesModel.getData()
var stackInfo = {
stackResultDimension: data2.getCalculationInfo('stackResultDimension'),
stackedOverDimension: data2.getCalculationInfo('stackedOverDimension'),
stackedDimension: data2.getCalculationInfo('stackedDimension'),
stackedByDimension: data2.getCalculationInfo('stackedByDimension'),
isStackedByIndex: data2.getCalculationInfo('isStackedByIndex'),
data: data2,
seriesModel,
}
if (
!stackInfo.stackedDimension ||
!(stackInfo.isStackedByIndex || stackInfo.stackedByDimension)
) {
return
}
stackInfoList.length &&
data2.setCalculationInfo(
'stackedOnSeries',
stackInfoList[stackInfoList.length - 1].seriesModel
)
stackInfoList.push(stackInfo)
}
})
stackInfoMap.each(calculateStack)
}
function calculateStack(stackInfoList) {
each$f(stackInfoList, function (targetStackInfo, idxInStack) {
var resultVal = []
var resultNaN = [NaN, NaN]
var dims = [
targetStackInfo.stackResultDimension,
targetStackInfo.stackedOverDimension,
]
var targetData = targetStackInfo.data
var isStackedByIndex = targetStackInfo.isStackedByIndex
var stackStrategy =
targetStackInfo.seriesModel.get('stackStrategy') || 'samesign'
targetData.modify(dims, function (v0, v12, dataIndex) {
var sum2 = targetData.get(targetStackInfo.stackedDimension, dataIndex)
if (isNaN(sum2)) {
return resultNaN
}
var byValue
var stackedDataRawIndex
if (isStackedByIndex) {
stackedDataRawIndex = targetData.getRawIndex(dataIndex)
} else {
byValue = targetData.get(targetStackInfo.stackedByDimension, dataIndex)
}
var stackedOver = NaN
for (var j2 = idxInStack - 1; j2 >= 0; j2--) {
var stackInfo = stackInfoList[j2]
if (!isStackedByIndex) {
stackedDataRawIndex = stackInfo.data.rawIndexOf(
stackInfo.stackedByDimension,
byValue
)
}
if (stackedDataRawIndex >= 0) {
var val2 = stackInfo.data.getByRawIndex(
stackInfo.stackResultDimension,
stackedDataRawIndex
)
if (
stackStrategy === 'all' ||
(stackStrategy === 'positive' && val2 > 0) ||
(stackStrategy === 'negative' && val2 < 0) ||
(stackStrategy === 'samesign' && sum2 >= 0 && val2 > 0) ||
(stackStrategy === 'samesign' && sum2 <= 0 && val2 < 0)
) {
sum2 = addSafe(sum2, val2)
stackedOver = val2
break
}
}
}
resultVal[0] = sum2
resultVal[1] = stackedOver
return resultVal
})
})
}
var SourceImpl = (function () {
function SourceImpl2(fields) {
this.data =
fields.data ||
(fields.sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS ? {} : [])
this.sourceFormat = fields.sourceFormat || SOURCE_FORMAT_UNKNOWN
this.seriesLayoutBy = fields.seriesLayoutBy || SERIES_LAYOUT_BY_COLUMN
this.startIndex = fields.startIndex || 0
this.dimensionsDetectedCount = fields.dimensionsDetectedCount
this.metaRawOption = fields.metaRawOption
var dimensionsDefine = (this.dimensionsDefine = fields.dimensionsDefine)
if (dimensionsDefine) {
for (var i2 = 0; i2 < dimensionsDefine.length; i2++) {
var dim = dimensionsDefine[i2]
if (dim.type == null) {
if (guessOrdinal(this, i2) === BE_ORDINAL.Must) {
dim.type = 'ordinal'
}
}
}
}
}
return SourceImpl2
})()
function isSourceInstance(val2) {
return val2 instanceof SourceImpl
}
function createSource(sourceData, thisMetaRawOption, sourceFormat) {
sourceFormat = sourceFormat || detectSourceFormat(sourceData)
var seriesLayoutBy = thisMetaRawOption.seriesLayoutBy
var determined = determineSourceDimensions(
sourceData,
sourceFormat,
seriesLayoutBy,
thisMetaRawOption.sourceHeader,
thisMetaRawOption.dimensions
)
var source2 = new SourceImpl({
data: sourceData,
sourceFormat,
seriesLayoutBy,
dimensionsDefine: determined.dimensionsDefine,
startIndex: determined.startIndex,
dimensionsDetectedCount: determined.dimensionsDetectedCount,
metaRawOption: clone$4(thisMetaRawOption),
})
return source2
}
function createSourceFromSeriesDataOption(data2) {
return new SourceImpl({
data: data2,
sourceFormat: isTypedArray$2(data2)
? SOURCE_FORMAT_TYPED_ARRAY
: SOURCE_FORMAT_ORIGINAL,
})
}
function cloneSourceShallow(source2) {
return new SourceImpl({
data: source2.data,
sourceFormat: source2.sourceFormat,
seriesLayoutBy: source2.seriesLayoutBy,
dimensionsDefine: clone$4(source2.dimensionsDefine),
startIndex: source2.startIndex,
dimensionsDetectedCount: source2.dimensionsDetectedCount,
})
}
function detectSourceFormat(data2) {
var sourceFormat = SOURCE_FORMAT_UNKNOWN
if (isTypedArray$2(data2)) {
sourceFormat = SOURCE_FORMAT_TYPED_ARRAY
} else if (isArray$6(data2)) {
if (data2.length === 0) {
sourceFormat = SOURCE_FORMAT_ARRAY_ROWS
}
for (var i2 = 0, len2 = data2.length; i2 < len2; i2++) {
var item2 = data2[i2]
if (item2 == null) {
continue
} else if (isArray$6(item2)) {
sourceFormat = SOURCE_FORMAT_ARRAY_ROWS
break
} else if (isObject$b(item2)) {
sourceFormat = SOURCE_FORMAT_OBJECT_ROWS
break
}
}
} else if (isObject$b(data2)) {
for (var key2 in data2) {
if (hasOwn$1(data2, key2) && isArrayLike$3(data2[key2])) {
sourceFormat = SOURCE_FORMAT_KEYED_COLUMNS
break
}
}
}
return sourceFormat
}
function determineSourceDimensions(
data2,
sourceFormat,
seriesLayoutBy,
sourceHeader,
dimensionsDefine
) {
var dimensionsDetectedCount
var startIndex
if (!data2) {
return {
dimensionsDefine: normalizeDimensionsOption(dimensionsDefine),
startIndex,
dimensionsDetectedCount,
}
}
if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {
var dataArrayRows = data2
if (sourceHeader === 'auto' || sourceHeader == null) {
arrayRowsTravelFirst(
function (val2) {
if (val2 != null && val2 !== '-') {
if (isString$2(val2)) {
startIndex == null && (startIndex = 1)
} else {
startIndex = 0
}
}
},
seriesLayoutBy,
dataArrayRows,
10
)
} else {
startIndex = isNumber$2(sourceHeader)
? sourceHeader
: sourceHeader
? 1
: 0
}
if (!dimensionsDefine && startIndex === 1) {
dimensionsDefine = []
arrayRowsTravelFirst(
function (val2, index2) {
dimensionsDefine[index2] = val2 != null ? val2 + '' : ''
},
seriesLayoutBy,
dataArrayRows,
Infinity
)
}
dimensionsDetectedCount = dimensionsDefine
? dimensionsDefine.length
: seriesLayoutBy === SERIES_LAYOUT_BY_ROW
? dataArrayRows.length
: dataArrayRows[0]
? dataArrayRows[0].length
: null
} else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {
if (!dimensionsDefine) {
dimensionsDefine = objectRowsCollectDimensions(data2)
}
} else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {
if (!dimensionsDefine) {
dimensionsDefine = []
each$f(data2, function (colArr, key2) {
dimensionsDefine.push(key2)
})
}
} else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {
var value0 = getDataItemValue(data2[0])
dimensionsDetectedCount = (isArray$6(value0) && value0.length) || 1
} else;
return {
startIndex,
dimensionsDefine: normalizeDimensionsOption(dimensionsDefine),
dimensionsDetectedCount,
}
}
function objectRowsCollectDimensions(data2) {
var firstIndex = 0
var obj
while (firstIndex < data2.length && !(obj = data2[firstIndex++])) {}
if (obj) {
return keys$4(obj)
}
}
function normalizeDimensionsOption(dimensionsDefine) {
if (!dimensionsDefine) {
return
}
var nameMap = createHashMap()
return map$1(dimensionsDefine, function (rawItem, index2) {
rawItem = isObject$b(rawItem)
? rawItem
: {
name: rawItem,
}
var item2 = {
name: rawItem.name,
displayName: rawItem.displayName,
type: rawItem.type,
}
if (item2.name == null) {
return item2
}
item2.name += ''
if (item2.displayName == null) {
item2.displayName = item2.name
}
var exist = nameMap.get(item2.name)
if (!exist) {
nameMap.set(item2.name, {
count: 1,
})
} else {
item2.name += '-' + exist.count++
}
return item2
})
}
function arrayRowsTravelFirst(cb, seriesLayoutBy, data2, maxLoop) {
if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {
for (var i2 = 0; i2 < data2.length && i2 < maxLoop; i2++) {
cb(data2[i2] ? data2[i2][0] : null, i2)
}
} else {
var value0 = data2[0] || []
for (var i2 = 0; i2 < value0.length && i2 < maxLoop; i2++) {
cb(value0[i2], i2)
}
}
}
function shouldRetrieveDataByName(source2) {
var sourceFormat = source2.sourceFormat
return (
sourceFormat === SOURCE_FORMAT_OBJECT_ROWS ||
sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS
)
}
var _a$1, _b, _c
var providerMethods
var mountMethods
var DefaultDataProvider = (function () {
function DefaultDataProvider2(sourceParam, dimSize) {
var source2 = !isSourceInstance(sourceParam)
? createSourceFromSeriesDataOption(sourceParam)
: sourceParam
this._source = source2
var data2 = (this._data = source2.data)
if (source2.sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {
this._offset = 0
this._dimSize = dimSize
this._data = data2
}
mountMethods(this, data2, source2)
}
DefaultDataProvider2.prototype.getSource = function () {
return this._source
}
DefaultDataProvider2.prototype.count = function () {
return 0
}
DefaultDataProvider2.prototype.getItem = function (idx, out2) {
return
}
DefaultDataProvider2.prototype.appendData = function (newData) {}
DefaultDataProvider2.prototype.clean = function () {}
DefaultDataProvider2.protoInitialize = (function () {
var proto2 = DefaultDataProvider2.prototype
proto2.pure = false
proto2.persistent = true
})()
DefaultDataProvider2.internalField = (function () {
var _a2
mountMethods = function (provider, data2, source2) {
var sourceFormat = source2.sourceFormat
var seriesLayoutBy = source2.seriesLayoutBy
var startIndex = source2.startIndex
var dimsDef = source2.dimensionsDefine
var methods =
providerMethods[getMethodMapKey(sourceFormat, seriesLayoutBy)]
extend(provider, methods)
if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {
provider.getItem = getItemForTypedArray
provider.count = countForTypedArray
provider.fillStorage = fillStorageForTypedArray
} else {
var rawItemGetter = getRawSourceItemGetter(sourceFormat, seriesLayoutBy)
provider.getItem = bind$1(
rawItemGetter,
null,
data2,
startIndex,
dimsDef
)
var rawCounter = getRawSourceDataCounter(sourceFormat, seriesLayoutBy)
provider.count = bind$1(rawCounter, null, data2, startIndex, dimsDef)
}
}
var getItemForTypedArray = function (idx, out2) {
idx = idx - this._offset
out2 = out2 || []
var data2 = this._data
var dimSize = this._dimSize
var offset2 = dimSize * idx
for (var i2 = 0; i2 < dimSize; i2++) {
out2[i2] = data2[offset2 + i2]
}
return out2
}
var fillStorageForTypedArray = function (start2, end2, storage2, extent3) {
var data2 = this._data
var dimSize = this._dimSize
for (var dim = 0; dim < dimSize; dim++) {
var dimExtent = extent3[dim]
var min3 = dimExtent[0] == null ? Infinity : dimExtent[0]
var max3 = dimExtent[1] == null ? -Infinity : dimExtent[1]
var count2 = end2 - start2
var arr = storage2[dim]
for (var i2 = 0; i2 < count2; i2++) {
var val2 = data2[i2 * dimSize + dim]
arr[start2 + i2] = val2
val2 < min3 && (min3 = val2)
val2 > max3 && (max3 = val2)
}
dimExtent[0] = min3
dimExtent[1] = max3
}
}
var countForTypedArray = function () {
return this._data ? this._data.length / this._dimSize : 0
}
providerMethods =
((_a2 = {}),
(_a2[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_COLUMN] = {
pure: true,
appendData: appendDataSimply,
}),
(_a2[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_ROW] = {
pure: true,
appendData: function () {
throw new Error(
'Do not support appendData when set seriesLayoutBy: "row".'
)
},
}),
(_a2[SOURCE_FORMAT_OBJECT_ROWS] = {
pure: true,
appendData: appendDataSimply,
}),
(_a2[SOURCE_FORMAT_KEYED_COLUMNS] = {
pure: true,
appendData: function (newData) {
var data2 = this._data
each$f(newData, function (newCol, key2) {
var oldCol = data2[key2] || (data2[key2] = [])
for (var i2 = 0; i2 < (newCol || []).length; i2++) {
oldCol.push(newCol[i2])
}
})
},
}),
(_a2[SOURCE_FORMAT_ORIGINAL] = {
appendData: appendDataSimply,
}),
(_a2[SOURCE_FORMAT_TYPED_ARRAY] = {
persistent: false,
pure: true,
appendData: function (newData) {
this._data = newData
},
clean: function () {
this._offset += this.count()
this._data = null
},
}),
_a2)
function appendDataSimply(newData) {
for (var i2 = 0; i2 < newData.length; i2++) {
this._data.push(newData[i2])
}
}
})()
return DefaultDataProvider2
})()
var getItemSimply = function (rawData, startIndex, dimsDef, idx) {
return rawData[idx]
}
var rawSourceItemGetterMap =
((_a$1 = {}),
(_a$1[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_COLUMN] = function (
rawData,
startIndex,
dimsDef,
idx
) {
return rawData[idx + startIndex]
}),
(_a$1[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_ROW] = function (
rawData,
startIndex,
dimsDef,
idx,
out2
) {
idx += startIndex
var item2 = out2 || []
var data2 = rawData
for (var i2 = 0; i2 < data2.length; i2++) {
var row = data2[i2]
item2[i2] = row ? row[idx] : null
}
return item2
}),
(_a$1[SOURCE_FORMAT_OBJECT_ROWS] = getItemSimply),
(_a$1[SOURCE_FORMAT_KEYED_COLUMNS] = function (
rawData,
startIndex,
dimsDef,
idx,
out2
) {
var item2 = out2 || []
for (var i2 = 0; i2 < dimsDef.length; i2++) {
var dimName = dimsDef[i2].name
var col = rawData[dimName]
item2[i2] = col ? col[idx] : null
}
return item2
}),
(_a$1[SOURCE_FORMAT_ORIGINAL] = getItemSimply),
_a$1)
function getRawSourceItemGetter(sourceFormat, seriesLayoutBy) {
var method4 =
rawSourceItemGetterMap[getMethodMapKey(sourceFormat, seriesLayoutBy)]
return method4
}
var countSimply = function (rawData, startIndex, dimsDef) {
return rawData.length
}
var rawSourceDataCounterMap =
((_b = {}),
(_b[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_COLUMN] = function (
rawData,
startIndex,
dimsDef
) {
return Math.max(0, rawData.length - startIndex)
}),
(_b[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_ROW] = function (
rawData,
startIndex,
dimsDef
) {
var row = rawData[0]
return row ? Math.max(0, row.length - startIndex) : 0
}),
(_b[SOURCE_FORMAT_OBJECT_ROWS] = countSimply),
(_b[SOURCE_FORMAT_KEYED_COLUMNS] = function (rawData, startIndex, dimsDef) {
var dimName = dimsDef[0].name
var col = rawData[dimName]
return col ? col.length : 0
}),
(_b[SOURCE_FORMAT_ORIGINAL] = countSimply),
_b)
function getRawSourceDataCounter(sourceFormat, seriesLayoutBy) {
var method4 =
rawSourceDataCounterMap[getMethodMapKey(sourceFormat, seriesLayoutBy)]
return method4
}
var getRawValueSimply = function (dataItem, dimIndex, property2) {
return dataItem[dimIndex]
}
var rawSourceValueGetterMap =
((_c = {}),
(_c[SOURCE_FORMAT_ARRAY_ROWS] = getRawValueSimply),
(_c[SOURCE_FORMAT_OBJECT_ROWS] = function (dataItem, dimIndex, property2) {
return dataItem[property2]
}),
(_c[SOURCE_FORMAT_KEYED_COLUMNS] = getRawValueSimply),
(_c[SOURCE_FORMAT_ORIGINAL] = function (dataItem, dimIndex, property2) {
var value2 = getDataItemValue(dataItem)
return !(value2 instanceof Array) ? value2 : value2[dimIndex]
}),
(_c[SOURCE_FORMAT_TYPED_ARRAY] = getRawValueSimply),
_c)
function getRawSourceValueGetter(sourceFormat) {
var method4 = rawSourceValueGetterMap[sourceFormat]
return method4
}
function getMethodMapKey(sourceFormat, seriesLayoutBy) {
return sourceFormat === SOURCE_FORMAT_ARRAY_ROWS
? sourceFormat + '_' + seriesLayoutBy
: sourceFormat
}
function retrieveRawValue(data2, dataIndex, dim) {
if (!data2) {
return
}
var dataItem = data2.getRawDataItem(dataIndex)
if (dataItem == null) {
return
}
var store2 = data2.getStore()
var sourceFormat = store2.getSource().sourceFormat
if (dim != null) {
var dimIndex = data2.getDimensionIndex(dim)
var property2 = store2.getDimensionProperty(dimIndex)
return getRawSourceValueGetter(sourceFormat)(dataItem, dimIndex, property2)
} else {
var result = dataItem
if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {
result = getDataItemValue(dataItem)
}
return result
}
}
var DIMENSION_LABEL_REG = /\{@(.+?)\}/g
var DataFormatMixin = (function () {
function DataFormatMixin2() {}
DataFormatMixin2.prototype.getDataParams = function (dataIndex, dataType2) {
var data2 = this.getData(dataType2)
var rawValue = this.getRawValue(dataIndex, dataType2)
var rawDataIndex = data2.getRawIndex(dataIndex)
var name2 = data2.getName(dataIndex)
var itemOpt = data2.getRawDataItem(dataIndex)
var style2 = data2.getItemVisual(dataIndex, 'style')
var color2 =
style2 && style2[data2.getItemVisual(dataIndex, 'drawType') || 'fill']
var borderColor = style2 && style2.stroke
var mainType = this.mainType
var isSeries2 = mainType === 'series'
var userOutput = data2.userOutput && data2.userOutput.get()
return {
componentType: mainType,
componentSubType: this.subType,
componentIndex: this.componentIndex,
seriesType: isSeries2 ? this.subType : null,
seriesIndex: this.seriesIndex,
seriesId: isSeries2 ? this.id : null,
seriesName: isSeries2 ? this.name : null,
name: name2,
dataIndex: rawDataIndex,
data: itemOpt,
dataType: dataType2,
value: rawValue,
color: color2,
borderColor,
dimensionNames: userOutput ? userOutput.fullDimensions : null,
encode: userOutput ? userOutput.encode : null,
$vars: ['seriesName', 'name', 'value'],
}
}
DataFormatMixin2.prototype.getFormattedLabel = function (
dataIndex,
status,
dataType2,
labelDimIndex,
formatter2,
extendParams
) {
status = status || 'normal'
var data2 = this.getData(dataType2)
var params2 = this.getDataParams(dataIndex, dataType2)
if (extendParams) {
params2.value = extendParams.interpolatedValue
}
if (labelDimIndex != null && isArray$6(params2.value)) {
params2.value = params2.value[labelDimIndex]
}
if (!formatter2) {
var itemModel = data2.getItemModel(dataIndex)
formatter2 = itemModel.get(
status === 'normal'
? ['label', 'formatter']
: [status, 'label', 'formatter']
)
}
if (isFunction$4(formatter2)) {
params2.status = status
params2.dimensionIndex = labelDimIndex
return formatter2(params2)
} else if (isString$2(formatter2)) {
var str = formatTpl(formatter2, params2)
return str.replace(DIMENSION_LABEL_REG, function (origin, dimStr) {
var len2 = dimStr.length
var dimLoose = dimStr
if (dimLoose.charAt(0) === '[' && dimLoose.charAt(len2 - 1) === ']') {
dimLoose = +dimLoose.slice(1, len2 - 1)
}
var val2 = retrieveRawValue(data2, dataIndex, dimLoose)
if (extendParams && isArray$6(extendParams.interpolatedValue)) {
var dimIndex = data2.getDimensionIndex(dimLoose)
if (dimIndex >= 0) {
val2 = extendParams.interpolatedValue[dimIndex]
}
}
return val2 != null ? val2 + '' : ''
})
}
}
DataFormatMixin2.prototype.getRawValue = function (idx, dataType2) {
return retrieveRawValue(this.getData(dataType2), idx)
}
DataFormatMixin2.prototype.formatTooltip = function (
dataIndex,
multipleSeries,
dataType2
) {
return
}
return DataFormatMixin2
})()
function normalizeTooltipFormatResult(result) {
var markupText
var markupFragment
if (isObject$b(result)) {
if (result.type) {
markupFragment = result
}
} else {
markupText = result
}
return {
text: markupText,
frag: markupFragment,
}
}
function createTask(define) {
return new Task(define)
}
var Task = (function () {
function Task2(define) {
define = define || {}
this._reset = define.reset
this._plan = define.plan
this._count = define.count
this._onDirty = define.onDirty
this._dirty = true
}
Task2.prototype.perform = function (performArgs) {
var upTask = this._upstream
var skip = performArgs && performArgs.skip
if (this._dirty && upTask) {
var context2 = this.context
context2.data = context2.outputData = upTask.context.outputData
}
if (this.__pipeline) {
this.__pipeline.currentTask = this
}
var planResult
if (this._plan && !skip) {
planResult = this._plan(this.context)
}
var lastModBy = normalizeModBy(this._modBy)
var lastModDataCount = this._modDataCount || 0
var modBy = normalizeModBy(performArgs && performArgs.modBy)
var modDataCount = (performArgs && performArgs.modDataCount) || 0
if (lastModBy !== modBy || lastModDataCount !== modDataCount) {
planResult = 'reset'
}
function normalizeModBy(val2) {
!(val2 >= 1) && (val2 = 1)
return val2
}
var forceFirstProgress
if (this._dirty || planResult === 'reset') {
this._dirty = false
forceFirstProgress = this._doReset(skip)
}
this._modBy = modBy
this._modDataCount = modDataCount
var step = performArgs && performArgs.step
if (upTask) {
this._dueEnd = upTask._outputDueEnd
} else {
this._dueEnd = this._count ? this._count(this.context) : Infinity
}
if (this._progress) {
var start2 = this._dueIndex
var end2 = Math.min(
step != null ? this._dueIndex + step : Infinity,
this._dueEnd
)
if (!skip && (forceFirstProgress || start2 < end2)) {
var progress = this._progress
if (isArray$6(progress)) {
for (var i2 = 0; i2 < progress.length; i2++) {
this._doProgress(progress[i2], start2, end2, modBy, modDataCount)
}
} else {
this._doProgress(progress, start2, end2, modBy, modDataCount)
}
}
this._dueIndex = end2
var outputDueEnd =
this._settedOutputEnd != null ? this._settedOutputEnd : end2
this._outputDueEnd = outputDueEnd
} else {
this._dueIndex = this._outputDueEnd =
this._settedOutputEnd != null ? this._settedOutputEnd : this._dueEnd
}
return this.unfinished()
}
Task2.prototype.dirty = function () {
this._dirty = true
this._onDirty && this._onDirty(this.context)
}
Task2.prototype._doProgress = function (
progress,
start2,
end2,
modBy,
modDataCount
) {
iterator.reset(start2, end2, modBy, modDataCount)
this._callingProgress = progress
this._callingProgress(
{
start: start2,
end: end2,
count: end2 - start2,
next: iterator.next,
},
this.context
)
}
Task2.prototype._doReset = function (skip) {
this._dueIndex = this._outputDueEnd = this._dueEnd = 0
this._settedOutputEnd = null
var progress
var forceFirstProgress
if (!skip && this._reset) {
progress = this._reset(this.context)
if (progress && progress.progress) {
forceFirstProgress = progress.forceFirstProgress
progress = progress.progress
}
if (isArray$6(progress) && !progress.length) {
progress = null
}
}
this._progress = progress
this._modBy = this._modDataCount = null
var downstream = this._downstream
downstream && downstream.dirty()
return forceFirstProgress
}
Task2.prototype.unfinished = function () {
return this._progress && this._dueIndex < this._dueEnd
}
Task2.prototype.pipe = function (downTask) {
if (this._downstream !== downTask || this._dirty) {
this._downstream = downTask
downTask._upstream = this
downTask.dirty()
}
}
Task2.prototype.dispose = function () {
if (this._disposed) {
return
}
this._upstream && (this._upstream._downstream = null)
this._downstream && (this._downstream._upstream = null)
this._dirty = false
this._disposed = true
}
Task2.prototype.getUpstream = function () {
return this._upstream
}
Task2.prototype.getDownstream = function () {
return this._downstream
}
Task2.prototype.setOutputEnd = function (end2) {
this._outputDueEnd = this._settedOutputEnd = end2
}
return Task2
})()
var iterator = (function () {
var end2
var current2
var modBy
var modDataCount
var winCount
var it2 = {
reset: function (s2, e2, sStep, sCount) {
current2 = s2
end2 = e2
modBy = sStep
modDataCount = sCount
winCount = Math.ceil(modDataCount / modBy)
it2.next = modBy > 1 && modDataCount > 0 ? modNext : sequentialNext
},
}
return it2
function sequentialNext() {
return current2 < end2 ? current2++ : null
}
function modNext() {
var dataIndex =
(current2 % winCount) * modBy + Math.ceil(current2 / winCount)
var result =
current2 >= end2 ? null : dataIndex < modDataCount ? dataIndex : current2
current2++
return result
}
})()
function parseDataValue(value2, opt) {
var dimType = opt && opt.type
if (dimType === 'ordinal') {
return value2
}
if (
dimType === 'time' &&
!isNumber$2(value2) &&
value2 != null &&
value2 !== '-'
) {
value2 = +parseDate(value2)
}
return value2 == null || value2 === '' ? NaN : +value2
}
var valueParserMap = createHashMap({
number: function (val2) {
return parseFloat(val2)
},
time: function (val2) {
return +parseDate(val2)
},
trim: function (val2) {
return isString$2(val2) ? trim$1(val2) : val2
},
})
function getRawValueParser(type4) {
return valueParserMap.get(type4)
}
var ORDER_COMPARISON_OP_MAP = {
lt: function (lval, rval) {
return lval < rval
},
lte: function (lval, rval) {
return lval <= rval
},
gt: function (lval, rval) {
return lval > rval
},
gte: function (lval, rval) {
return lval >= rval
},
}
var FilterOrderComparator = (function () {
function FilterOrderComparator2(op, rval) {
if (!isNumber$2(rval)) {
var errMsg = ''
throwError(errMsg)
}
this._opFn = ORDER_COMPARISON_OP_MAP[op]
this._rvalFloat = numericToNumber(rval)
}
FilterOrderComparator2.prototype.evaluate = function (lval) {
return isNumber$2(lval)
? this._opFn(lval, this._rvalFloat)
: this._opFn(numericToNumber(lval), this._rvalFloat)
}
return FilterOrderComparator2
})()
var SortOrderComparator = (function () {
function SortOrderComparator2(order2, incomparable) {
var isDesc = order2 === 'desc'
this._resultLT = isDesc ? 1 : -1
if (incomparable == null) {
incomparable = isDesc ? 'min' : 'max'
}
this._incomparable = incomparable === 'min' ? -Infinity : Infinity
}
SortOrderComparator2.prototype.evaluate = function (lval, rval) {
var lvalFloat = isNumber$2(lval) ? lval : numericToNumber(lval)
var rvalFloat = isNumber$2(rval) ? rval : numericToNumber(rval)
var lvalNotNumeric = isNaN(lvalFloat)
var rvalNotNumeric = isNaN(rvalFloat)
if (lvalNotNumeric) {
lvalFloat = this._incomparable
}
if (rvalNotNumeric) {
rvalFloat = this._incomparable
}
if (lvalNotNumeric && rvalNotNumeric) {
var lvalIsStr = isString$2(lval)
var rvalIsStr = isString$2(rval)
if (lvalIsStr) {
lvalFloat = rvalIsStr ? lval : 0
}
if (rvalIsStr) {
rvalFloat = lvalIsStr ? rval : 0
}
}
return lvalFloat < rvalFloat
? this._resultLT
: lvalFloat > rvalFloat
? -this._resultLT
: 0
}
return SortOrderComparator2
})()
var FilterEqualityComparator = (function () {
function FilterEqualityComparator2(isEq, rval) {
this._rval = rval
this._isEQ = isEq
this._rvalTypeof = typeof rval
this._rvalFloat = numericToNumber(rval)
}
FilterEqualityComparator2.prototype.evaluate = function (lval) {
var eqResult = lval === this._rval
if (!eqResult) {
var lvalTypeof = typeof lval
if (
lvalTypeof !== this._rvalTypeof &&
(lvalTypeof === 'number' || this._rvalTypeof === 'number')
) {
eqResult = numericToNumber(lval) === this._rvalFloat
}
}
return this._isEQ ? eqResult : !eqResult
}
return FilterEqualityComparator2
})()
function createFilterComparator(op, rval) {
return op === 'eq' || op === 'ne'
? new FilterEqualityComparator(op === 'eq', rval)
: hasOwn$1(ORDER_COMPARISON_OP_MAP, op)
? new FilterOrderComparator(op, rval)
: null
}
var ExternalSource = (function () {
function ExternalSource2() {}
ExternalSource2.prototype.getRawData = function () {
throw new Error('not supported')
}
ExternalSource2.prototype.getRawDataItem = function (dataIndex) {
throw new Error('not supported')
}
ExternalSource2.prototype.cloneRawData = function () {
return
}
ExternalSource2.prototype.getDimensionInfo = function (dim) {
return
}
ExternalSource2.prototype.cloneAllDimensionInfo = function () {
return
}
ExternalSource2.prototype.count = function () {
return
}
ExternalSource2.prototype.retrieveValue = function (dataIndex, dimIndex) {
return
}
ExternalSource2.prototype.retrieveValueFromItem = function (
dataItem,
dimIndex
) {
return
}
ExternalSource2.prototype.convertValue = function (rawVal, dimInfo) {
return parseDataValue(rawVal, dimInfo)
}
return ExternalSource2
})()
function createExternalSource(internalSource, externalTransform) {
var extSource = new ExternalSource()
var data2 = internalSource.data
var sourceFormat = (extSource.sourceFormat = internalSource.sourceFormat)
var sourceHeaderCount = internalSource.startIndex
var errMsg = ''
if (internalSource.seriesLayoutBy !== SERIES_LAYOUT_BY_COLUMN) {
throwError(errMsg)
}
var dimensions = []
var dimsByName = {}
var dimsDef = internalSource.dimensionsDefine
if (dimsDef) {
each$f(dimsDef, function (dimDef, idx) {
var name2 = dimDef.name
var dimDefExt = {
index: idx,
name: name2,
displayName: dimDef.displayName,
}
dimensions.push(dimDefExt)
if (name2 != null) {
var errMsg_1 = ''
if (hasOwn$1(dimsByName, name2)) {
throwError(errMsg_1)
}
dimsByName[name2] = dimDefExt
}
})
} else {
for (var i2 = 0; i2 < internalSource.dimensionsDetectedCount || 0; i2++) {
dimensions.push({
index: i2,
})
}
}
var rawItemGetter = getRawSourceItemGetter(
sourceFormat,
SERIES_LAYOUT_BY_COLUMN
)
if (externalTransform.__isBuiltIn) {
extSource.getRawDataItem = function (dataIndex) {
return rawItemGetter(data2, sourceHeaderCount, dimensions, dataIndex)
}
extSource.getRawData = bind$1(getRawData, null, internalSource)
}
extSource.cloneRawData = bind$1(cloneRawData, null, internalSource)
var rawCounter = getRawSourceDataCounter(
sourceFormat,
SERIES_LAYOUT_BY_COLUMN
)
extSource.count = bind$1(
rawCounter,
null,
data2,
sourceHeaderCount,
dimensions
)
var rawValueGetter = getRawSourceValueGetter(sourceFormat)
extSource.retrieveValue = function (dataIndex, dimIndex) {
var rawItem = rawItemGetter(data2, sourceHeaderCount, dimensions, dataIndex)
return retrieveValueFromItem(rawItem, dimIndex)
}
var retrieveValueFromItem = (extSource.retrieveValueFromItem = function (
dataItem,
dimIndex
) {
if (dataItem == null) {
return
}
var dimDef = dimensions[dimIndex]
if (dimDef) {
return rawValueGetter(dataItem, dimIndex, dimDef.name)
}
})
extSource.getDimensionInfo = bind$1(
getDimensionInfo,
null,
dimensions,
dimsByName
)
extSource.cloneAllDimensionInfo = bind$1(
cloneAllDimensionInfo,
null,
dimensions
)
return extSource
}
function getRawData(upstream) {
var sourceFormat = upstream.sourceFormat
if (!isSupportedSourceFormat(sourceFormat)) {
var errMsg = ''
throwError(errMsg)
}
return upstream.data
}
function cloneRawData(upstream) {
var sourceFormat = upstream.sourceFormat
var data2 = upstream.data
if (!isSupportedSourceFormat(sourceFormat)) {
var errMsg = ''
throwError(errMsg)
}
if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {
var result = []
for (var i2 = 0, len2 = data2.length; i2 < len2; i2++) {
result.push(data2[i2].slice())
}
return result
} else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {
var result = []
for (var i2 = 0, len2 = data2.length; i2 < len2; i2++) {
result.push(extend({}, data2[i2]))
}
return result
}
}
function getDimensionInfo(dimensions, dimsByName, dim) {
if (dim == null) {
return
}
if (isNumber$2(dim) || (!isNaN(dim) && !hasOwn$1(dimsByName, dim))) {
return dimensions[dim]
} else if (hasOwn$1(dimsByName, dim)) {
return dimsByName[dim]
}
}
function cloneAllDimensionInfo(dimensions) {
return clone$4(dimensions)
}
var externalTransformMap = createHashMap()
function registerExternalTransform(externalTransform) {
externalTransform = clone$4(externalTransform)
var type4 = externalTransform.type
var errMsg = ''
if (!type4) {
throwError(errMsg)
}
var typeParsed = type4.split(':')
if (typeParsed.length !== 2) {
throwError(errMsg)
}
var isBuiltIn = false
if (typeParsed[0] === 'echarts') {
type4 = typeParsed[1]
isBuiltIn = true
}
externalTransform.__isBuiltIn = isBuiltIn
externalTransformMap.set(type4, externalTransform)
}
function applyDataTransform(rawTransOption, sourceList, infoForPrint) {
var pipedTransOption = normalizeToArray(rawTransOption)
var pipeLen = pipedTransOption.length
var errMsg = ''
if (!pipeLen) {
throwError(errMsg)
}
for (var i2 = 0, len2 = pipeLen; i2 < len2; i2++) {
var transOption = pipedTransOption[i2]
sourceList = applySingleDataTransform(transOption, sourceList)
if (i2 !== len2 - 1) {
sourceList.length = Math.max(sourceList.length, 1)
}
}
return sourceList
}
function applySingleDataTransform(
transOption,
upSourceList,
infoForPrint,
pipeIndex
) {
var errMsg = ''
if (!upSourceList.length) {
throwError(errMsg)
}
if (!isObject$b(transOption)) {
throwError(errMsg)
}
var transType = transOption.type
var externalTransform = externalTransformMap.get(transType)
if (!externalTransform) {
throwError(errMsg)
}
var extUpSourceList = map$1(upSourceList, function (upSource) {
return createExternalSource(upSource, externalTransform)
})
var resultList = normalizeToArray(
externalTransform.transform({
upstream: extUpSourceList[0],
upstreamList: extUpSourceList,
config: clone$4(transOption.config),
})
)
return map$1(resultList, function (result, resultIndex) {
var errMsg2 = ''
if (!isObject$b(result)) {
throwError(errMsg2)
}
if (!result.data) {
throwError(errMsg2)
}
var sourceFormat = detectSourceFormat(result.data)
if (!isSupportedSourceFormat(sourceFormat)) {
throwError(errMsg2)
}
var resultMetaRawOption
var firstUpSource = upSourceList[0]
if (firstUpSource && resultIndex === 0 && !result.dimensions) {
var startIndex = firstUpSource.startIndex
if (startIndex) {
result.data = firstUpSource.data
.slice(0, startIndex)
.concat(result.data)
}
resultMetaRawOption = {
seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN,
sourceHeader: startIndex,
dimensions: firstUpSource.metaRawOption.dimensions,
}
} else {
resultMetaRawOption = {
seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN,
sourceHeader: 0,
dimensions: result.dimensions,
}
}
return createSource(result.data, resultMetaRawOption, null)
})
}
function isSupportedSourceFormat(sourceFormat) {
return (
sourceFormat === SOURCE_FORMAT_ARRAY_ROWS ||
sourceFormat === SOURCE_FORMAT_OBJECT_ROWS
)
}
var UNDEFINED = 'undefined'
var CtorUint32Array = typeof Uint32Array === UNDEFINED ? Array : Uint32Array
var CtorUint16Array = typeof Uint16Array === UNDEFINED ? Array : Uint16Array
var CtorInt32Array$1 = typeof Int32Array === UNDEFINED ? Array : Int32Array
var CtorFloat64Array = typeof Float64Array === UNDEFINED ? Array : Float64Array
var dataCtors = {
float: CtorFloat64Array,
int: CtorInt32Array$1,
ordinal: Array,
number: Array,
time: CtorFloat64Array,
}
var defaultDimValueGetters
function getIndicesCtor(rawCount) {
return rawCount > 65535 ? CtorUint32Array : CtorUint16Array
}
function getInitialExtent() {
return [Infinity, -Infinity]
}
function cloneChunk(originalChunk) {
var Ctor = originalChunk.constructor
return Ctor === Array ? originalChunk.slice() : new Ctor(originalChunk)
}
function prepareStore(store2, dimIdx, dimType, end2, append) {
var DataCtor = dataCtors[dimType || 'float']
if (append) {
var oldStore = store2[dimIdx]
var oldLen = oldStore && oldStore.length
if (!(oldLen === end2)) {
var newStore = new DataCtor(end2)
for (var j2 = 0; j2 < oldLen; j2++) {
newStore[j2] = oldStore[j2]
}
store2[dimIdx] = newStore
}
} else {
store2[dimIdx] = new DataCtor(end2)
}
}
var DataStore = (function () {
function DataStore2() {
this._chunks = []
this._rawExtent = []
this._extent = []
this._count = 0
this._rawCount = 0
this._calcDimNameToIdx = createHashMap()
}
DataStore2.prototype.initData = function (
provider,
inputDimensions,
dimValueGetter
) {
this._provider = provider
this._chunks = []
this._indices = null
this.getRawIndex = this._getRawIdxIdentity
var source2 = provider.getSource()
var defaultGetter = (this.defaultDimValueGetter =
defaultDimValueGetters[source2.sourceFormat])
this._dimValueGetter = dimValueGetter || defaultGetter
this._rawExtent = []
shouldRetrieveDataByName(source2)
this._dimensions = map$1(inputDimensions, function (dim) {
return {
type: dim.type,
property: dim.property,
}
})
this._initDataFromProvider(0, provider.count())
}
DataStore2.prototype.getProvider = function () {
return this._provider
}
DataStore2.prototype.getSource = function () {
return this._provider.getSource()
}
DataStore2.prototype.ensureCalculationDimension = function (dimName, type4) {
var calcDimNameToIdx = this._calcDimNameToIdx
var dimensions = this._dimensions
var calcDimIdx = calcDimNameToIdx.get(dimName)
if (calcDimIdx != null) {
if (dimensions[calcDimIdx].type === type4) {
return calcDimIdx
}
} else {
calcDimIdx = dimensions.length
}
dimensions[calcDimIdx] = {
type: type4,
}
calcDimNameToIdx.set(dimName, calcDimIdx)
this._chunks[calcDimIdx] = new dataCtors[type4 || 'float'](this._rawCount)
this._rawExtent[calcDimIdx] = getInitialExtent()
return calcDimIdx
}
DataStore2.prototype.collectOrdinalMeta = function (dimIdx, ordinalMeta) {
var chunk2 = this._chunks[dimIdx]
var dim = this._dimensions[dimIdx]
var rawExtents = this._rawExtent
var offset2 = dim.ordinalOffset || 0
var len2 = chunk2.length
if (offset2 === 0) {
rawExtents[dimIdx] = getInitialExtent()
}
var dimRawExtent = rawExtents[dimIdx]
for (var i2 = offset2; i2 < len2; i2++) {
var val2 = (chunk2[i2] = ordinalMeta.parseAndCollect(chunk2[i2]))
if (!isNaN(val2)) {
dimRawExtent[0] = Math.min(val2, dimRawExtent[0])
dimRawExtent[1] = Math.max(val2, dimRawExtent[1])
}
}
dim.ordinalMeta = ordinalMeta
dim.ordinalOffset = len2
dim.type = 'ordinal'
}
DataStore2.prototype.getOrdinalMeta = function (dimIdx) {
var dimInfo = this._dimensions[dimIdx]
var ordinalMeta = dimInfo.ordinalMeta
return ordinalMeta
}
DataStore2.prototype.getDimensionProperty = function (dimIndex) {
var item2 = this._dimensions[dimIndex]
return item2 && item2.property
}
DataStore2.prototype.appendData = function (data2) {
var provider = this._provider
var start2 = this.count()
provider.appendData(data2)
var end2 = provider.count()
if (!provider.persistent) {
end2 += start2
}
if (start2 < end2) {
this._initDataFromProvider(start2, end2, true)
}
return [start2, end2]
}
DataStore2.prototype.appendValues = function (values2, minFillLen) {
var chunks = this._chunks
var dimensions = this._dimensions
var dimLen = dimensions.length
var rawExtent = this._rawExtent
var start2 = this.count()
var end2 = start2 + Math.max(values2.length, minFillLen || 0)
for (var i2 = 0; i2 < dimLen; i2++) {
var dim = dimensions[i2]
prepareStore(chunks, i2, dim.type, end2, true)
}
var emptyDataItem = []
for (var idx = start2; idx < end2; idx++) {
var sourceIdx = idx - start2
for (var dimIdx = 0; dimIdx < dimLen; dimIdx++) {
var dim = dimensions[dimIdx]
var val2 = defaultDimValueGetters.arrayRows.call(
this,
values2[sourceIdx] || emptyDataItem,
dim.property,
sourceIdx,
dimIdx
)
chunks[dimIdx][idx] = val2
var dimRawExtent = rawExtent[dimIdx]
val2 < dimRawExtent[0] && (dimRawExtent[0] = val2)
val2 > dimRawExtent[1] && (dimRawExtent[1] = val2)
}
}
this._rawCount = this._count = end2
return {
start: start2,
end: end2,
}
}
DataStore2.prototype._initDataFromProvider = function (start2, end2, append) {
var provider = this._provider
var chunks = this._chunks
var dimensions = this._dimensions
var dimLen = dimensions.length
var rawExtent = this._rawExtent
var dimNames = map$1(dimensions, function (dim2) {
return dim2.property
})
for (var i2 = 0; i2 < dimLen; i2++) {
var dim = dimensions[i2]
if (!rawExtent[i2]) {
rawExtent[i2] = getInitialExtent()
}
prepareStore(chunks, i2, dim.type, end2, append)
}
if (provider.fillStorage) {
provider.fillStorage(start2, end2, chunks, rawExtent)
} else {
var dataItem = []
for (var idx = start2; idx < end2; idx++) {
dataItem = provider.getItem(idx, dataItem)
for (var dimIdx = 0; dimIdx < dimLen; dimIdx++) {
var dimStorage = chunks[dimIdx]
var val2 = this._dimValueGetter(
dataItem,
dimNames[dimIdx],
idx,
dimIdx
)
dimStorage[idx] = val2
var dimRawExtent = rawExtent[dimIdx]
val2 < dimRawExtent[0] && (dimRawExtent[0] = val2)
val2 > dimRawExtent[1] && (dimRawExtent[1] = val2)
}
}
}
if (!provider.persistent && provider.clean) {
provider.clean()
}
this._rawCount = this._count = end2
this._extent = []
}
DataStore2.prototype.count = function () {
return this._count
}
DataStore2.prototype.get = function (dim, idx) {
if (!(idx >= 0 && idx < this._count)) {
return NaN
}
var dimStore = this._chunks[dim]
return dimStore ? dimStore[this.getRawIndex(idx)] : NaN
}
DataStore2.prototype.getValues = function (dimensions, idx) {
var values2 = []
var dimArr = []
if (idx == null) {
idx = dimensions
dimensions = []
for (var i2 = 0; i2 < this._dimensions.length; i2++) {
dimArr.push(i2)
}
} else {
dimArr = dimensions
}
for (var i2 = 0, len2 = dimArr.length; i2 < len2; i2++) {
values2.push(this.get(dimArr[i2], idx))
}
return values2
}
DataStore2.prototype.getByRawIndex = function (dim, rawIdx) {
if (!(rawIdx >= 0 && rawIdx < this._rawCount)) {
return NaN
}
var dimStore = this._chunks[dim]
return dimStore ? dimStore[rawIdx] : NaN
}
DataStore2.prototype.getSum = function (dim) {
var dimData = this._chunks[dim]
var sum2 = 0
if (dimData) {
for (var i2 = 0, len2 = this.count(); i2 < len2; i2++) {
var value2 = this.get(dim, i2)
if (!isNaN(value2)) {
sum2 += value2
}
}
}
return sum2
}
DataStore2.prototype.getMedian = function (dim) {
var dimDataArray = []
this.each([dim], function (val2) {
if (!isNaN(val2)) {
dimDataArray.push(val2)
}
})
var sortedDimDataArray = dimDataArray.sort(function (a2, b2) {
return a2 - b2
})
var len2 = this.count()
return len2 === 0
? 0
: len2 % 2 === 1
? sortedDimDataArray[(len2 - 1) / 2]
: (sortedDimDataArray[len2 / 2] + sortedDimDataArray[len2 / 2 - 1]) / 2
}
DataStore2.prototype.indexOfRawIndex = function (rawIndex) {
if (rawIndex >= this._rawCount || rawIndex < 0) {
return -1
}
if (!this._indices) {
return rawIndex
}
var indices = this._indices
var rawDataIndex = indices[rawIndex]
if (
rawDataIndex != null &&
rawDataIndex < this._count &&
rawDataIndex === rawIndex
) {
return rawIndex
}
var left2 = 0
var right2 = this._count - 1
while (left2 <= right2) {
var mid = ((left2 + right2) / 2) | 0
if (indices[mid] < rawIndex) {
left2 = mid + 1
} else if (indices[mid] > rawIndex) {
right2 = mid - 1
} else {
return mid
}
}
return -1
}
DataStore2.prototype.indicesOfNearest = function (dim, value2, maxDistance) {
var chunks = this._chunks
var dimData = chunks[dim]
var nearestIndices = []
if (!dimData) {
return nearestIndices
}
if (maxDistance == null) {
maxDistance = Infinity
}
var minDist = Infinity
var minDiff = -1
var nearestIndicesLen = 0
for (var i2 = 0, len2 = this.count(); i2 < len2; i2++) {
var dataIndex = this.getRawIndex(i2)
var diff = value2 - dimData[dataIndex]
var dist2 = Math.abs(diff)
if (dist2 <= maxDistance) {
if (
dist2 < minDist ||
(dist2 === minDist && diff >= 0 && minDiff < 0)
) {
minDist = dist2
minDiff = diff
nearestIndicesLen = 0
}
if (diff === minDiff) {
nearestIndices[nearestIndicesLen++] = i2
}
}
}
nearestIndices.length = nearestIndicesLen
return nearestIndices
}
DataStore2.prototype.getIndices = function () {
var newIndices
var indices = this._indices
if (indices) {
var Ctor = indices.constructor
var thisCount = this._count
if (Ctor === Array) {
newIndices = new Ctor(thisCount)
for (var i2 = 0; i2 < thisCount; i2++) {
newIndices[i2] = indices[i2]
}
} else {
newIndices = new Ctor(indices.buffer, 0, thisCount)
}
} else {
var Ctor = getIndicesCtor(this._rawCount)
newIndices = new Ctor(this.count())
for (var i2 = 0; i2 < newIndices.length; i2++) {
newIndices[i2] = i2
}
}
return newIndices
}
DataStore2.prototype.filter = function (dims, cb) {
if (!this._count) {
return this
}
var newStore = this.clone()
var count2 = newStore.count()
var Ctor = getIndicesCtor(newStore._rawCount)
var newIndices = new Ctor(count2)
var value2 = []
var dimSize = dims.length
var offset2 = 0
var dim0 = dims[0]
var chunks = newStore._chunks
for (var i2 = 0; i2 < count2; i2++) {
var keep = void 0
var rawIdx = newStore.getRawIndex(i2)
if (dimSize === 0) {
keep = cb(i2)
} else if (dimSize === 1) {
var val2 = chunks[dim0][rawIdx]
keep = cb(val2, i2)
} else {
var k2 = 0
for (; k2 < dimSize; k2++) {
value2[k2] = chunks[dims[k2]][rawIdx]
}
value2[k2] = i2
keep = cb.apply(null, value2)
}
if (keep) {
newIndices[offset2++] = rawIdx
}
}
if (offset2 < count2) {
newStore._indices = newIndices
}
newStore._count = offset2
newStore._extent = []
newStore._updateGetRawIdx()
return newStore
}
DataStore2.prototype.selectRange = function (range3) {
var newStore = this.clone()
var len2 = newStore._count
if (!len2) {
return this
}
var dims = keys$4(range3)
var dimSize = dims.length
if (!dimSize) {
return this
}
var originalCount = newStore.count()
var Ctor = getIndicesCtor(newStore._rawCount)
var newIndices = new Ctor(originalCount)
var offset2 = 0
var dim0 = dims[0]
var min3 = range3[dim0][0]
var max3 = range3[dim0][1]
var storeArr = newStore._chunks
var quickFinished = false
if (!newStore._indices) {
var idx = 0
if (dimSize === 1) {
var dimStorage = storeArr[dims[0]]
for (var i2 = 0; i2 < len2; i2++) {
var val2 = dimStorage[i2]
if ((val2 >= min3 && val2 <= max3) || isNaN(val2)) {
newIndices[offset2++] = idx
}
idx++
}
quickFinished = true
} else if (dimSize === 2) {
var dimStorage = storeArr[dims[0]]
var dimStorage2 = storeArr[dims[1]]
var min22 = range3[dims[1]][0]
var max22 = range3[dims[1]][1]
for (var i2 = 0; i2 < len2; i2++) {
var val2 = dimStorage[i2]
var val22 = dimStorage2[i2]
if (
((val2 >= min3 && val2 <= max3) || isNaN(val2)) &&
((val22 >= min22 && val22 <= max22) || isNaN(val22))
) {
newIndices[offset2++] = idx
}
idx++
}
quickFinished = true
}
}
if (!quickFinished) {
if (dimSize === 1) {
for (var i2 = 0; i2 < originalCount; i2++) {
var rawIndex = newStore.getRawIndex(i2)
var val2 = storeArr[dims[0]][rawIndex]
if ((val2 >= min3 && val2 <= max3) || isNaN(val2)) {
newIndices[offset2++] = rawIndex
}
}
} else {
for (var i2 = 0; i2 < originalCount; i2++) {
var keep = true
var rawIndex = newStore.getRawIndex(i2)
for (var k2 = 0; k2 < dimSize; k2++) {
var dimk = dims[k2]
var val2 = storeArr[dimk][rawIndex]
if (val2 < range3[dimk][0] || val2 > range3[dimk][1]) {
keep = false
}
}
if (keep) {
newIndices[offset2++] = newStore.getRawIndex(i2)
}
}
}
}
if (offset2 < originalCount) {
newStore._indices = newIndices
}
newStore._count = offset2
newStore._extent = []
newStore._updateGetRawIdx()
return newStore
}
DataStore2.prototype.map = function (dims, cb) {
var target2 = this.clone(dims)
this._updateDims(target2, dims, cb)
return target2
}
DataStore2.prototype.modify = function (dims, cb) {
this._updateDims(this, dims, cb)
}
DataStore2.prototype._updateDims = function (target2, dims, cb) {
var targetChunks = target2._chunks
var tmpRetValue = []
var dimSize = dims.length
var dataCount = target2.count()
var values2 = []
var rawExtent = target2._rawExtent
for (var i2 = 0; i2 < dims.length; i2++) {
rawExtent[dims[i2]] = getInitialExtent()
}
for (var dataIndex = 0; dataIndex < dataCount; dataIndex++) {
var rawIndex = target2.getRawIndex(dataIndex)
for (var k2 = 0; k2 < dimSize; k2++) {
values2[k2] = targetChunks[dims[k2]][rawIndex]
}
values2[dimSize] = dataIndex
var retValue = cb && cb.apply(null, values2)
if (retValue != null) {
if (typeof retValue !== 'object') {
tmpRetValue[0] = retValue
retValue = tmpRetValue
}
for (var i2 = 0; i2 < retValue.length; i2++) {
var dim = dims[i2]
var val2 = retValue[i2]
var rawExtentOnDim = rawExtent[dim]
var dimStore = targetChunks[dim]
if (dimStore) {
dimStore[rawIndex] = val2
}
if (val2 < rawExtentOnDim[0]) {
rawExtentOnDim[0] = val2
}
if (val2 > rawExtentOnDim[1]) {
rawExtentOnDim[1] = val2
}
}
}
}
}
DataStore2.prototype.lttbDownSample = function (valueDimension, rate) {
var target2 = this.clone([valueDimension], true)
var targetStorage = target2._chunks
var dimStore = targetStorage[valueDimension]
var len2 = this.count()
var sampledIndex = 0
var frameSize = Math.floor(1 / rate)
var currentRawIndex = this.getRawIndex(0)
var maxArea
var area
var nextRawIndex
var newIndices = new (getIndicesCtor(this._rawCount))(
Math.min((Math.ceil(len2 / frameSize) + 2) * 2, len2)
)
newIndices[sampledIndex++] = currentRawIndex
for (var i2 = 1; i2 < len2 - 1; i2 += frameSize) {
var nextFrameStart = Math.min(i2 + frameSize, len2 - 1)
var nextFrameEnd = Math.min(i2 + frameSize * 2, len2)
var avgX = (nextFrameEnd + nextFrameStart) / 2
var avgY = 0
for (var idx = nextFrameStart; idx < nextFrameEnd; idx++) {
var rawIndex = this.getRawIndex(idx)
var y2 = dimStore[rawIndex]
if (isNaN(y2)) {
continue
}
avgY += y2
}
avgY /= nextFrameEnd - nextFrameStart
var frameStart = i2
var frameEnd = Math.min(i2 + frameSize, len2)
var pointAX = i2 - 1
var pointAY = dimStore[currentRawIndex]
maxArea = -1
nextRawIndex = frameStart
var firstNaNIndex = -1
var countNaN = 0
for (var idx = frameStart; idx < frameEnd; idx++) {
var rawIndex = this.getRawIndex(idx)
var y2 = dimStore[rawIndex]
if (isNaN(y2)) {
countNaN++
if (firstNaNIndex < 0) {
firstNaNIndex = rawIndex
}
continue
}
area = Math.abs(
(pointAX - avgX) * (y2 - pointAY) - (pointAX - idx) * (avgY - pointAY)
)
if (area > maxArea) {
maxArea = area
nextRawIndex = rawIndex
}
}
if (countNaN > 0 && countNaN < frameEnd - frameStart) {
newIndices[sampledIndex++] = Math.min(firstNaNIndex, nextRawIndex)
nextRawIndex = Math.max(firstNaNIndex, nextRawIndex)
}
newIndices[sampledIndex++] = nextRawIndex
currentRawIndex = nextRawIndex
}
newIndices[sampledIndex++] = this.getRawIndex(len2 - 1)
target2._count = sampledIndex
target2._indices = newIndices
target2.getRawIndex = this._getRawIdx
return target2
}
DataStore2.prototype.downSample = function (
dimension,
rate,
sampleValue,
sampleIndex
) {
var target2 = this.clone([dimension], true)
var targetStorage = target2._chunks
var frameValues = []
var frameSize = Math.floor(1 / rate)
var dimStore = targetStorage[dimension]
var len2 = this.count()
var rawExtentOnDim = (target2._rawExtent[dimension] = getInitialExtent())
var newIndices = new (getIndicesCtor(this._rawCount))(
Math.ceil(len2 / frameSize)
)
var offset2 = 0
for (var i2 = 0; i2 < len2; i2 += frameSize) {
if (frameSize > len2 - i2) {
frameSize = len2 - i2
frameValues.length = frameSize
}
for (var k2 = 0; k2 < frameSize; k2++) {
var dataIdx = this.getRawIndex(i2 + k2)
frameValues[k2] = dimStore[dataIdx]
}
var value2 = sampleValue(frameValues)
var sampleFrameIdx = this.getRawIndex(
Math.min(i2 + sampleIndex(frameValues, value2) || 0, len2 - 1)
)
dimStore[sampleFrameIdx] = value2
if (value2 < rawExtentOnDim[0]) {
rawExtentOnDim[0] = value2
}
if (value2 > rawExtentOnDim[1]) {
rawExtentOnDim[1] = value2
}
newIndices[offset2++] = sampleFrameIdx
}
target2._count = offset2
target2._indices = newIndices
target2._updateGetRawIdx()
return target2
}
DataStore2.prototype.each = function (dims, cb) {
if (!this._count) {
return
}
var dimSize = dims.length
var chunks = this._chunks
for (var i2 = 0, len2 = this.count(); i2 < len2; i2++) {
var rawIdx = this.getRawIndex(i2)
switch (dimSize) {
case 0:
cb(i2)
break
case 1:
cb(chunks[dims[0]][rawIdx], i2)
break
case 2:
cb(chunks[dims[0]][rawIdx], chunks[dims[1]][rawIdx], i2)
break
default:
var k2 = 0
var value2 = []
for (; k2 < dimSize; k2++) {
value2[k2] = chunks[dims[k2]][rawIdx]
}
value2[k2] = i2
cb.apply(null, value2)
}
}
}
DataStore2.prototype.getDataExtent = function (dim) {
var dimData = this._chunks[dim]
var initialExtent = getInitialExtent()
if (!dimData) {
return initialExtent
}
var currEnd = this.count()
var useRaw = !this._indices
var dimExtent
if (useRaw) {
return this._rawExtent[dim].slice()
}
dimExtent = this._extent[dim]
if (dimExtent) {
return dimExtent.slice()
}
dimExtent = initialExtent
var min3 = dimExtent[0]
var max3 = dimExtent[1]
for (var i2 = 0; i2 < currEnd; i2++) {
var rawIdx = this.getRawIndex(i2)
var value2 = dimData[rawIdx]
value2 < min3 && (min3 = value2)
value2 > max3 && (max3 = value2)
}
dimExtent = [min3, max3]
this._extent[dim] = dimExtent
return dimExtent
}
DataStore2.prototype.getRawDataItem = function (idx) {
var rawIdx = this.getRawIndex(idx)
if (!this._provider.persistent) {
var val2 = []
var chunks = this._chunks
for (var i2 = 0; i2 < chunks.length; i2++) {
val2.push(chunks[i2][rawIdx])
}
return val2
} else {
return this._provider.getItem(rawIdx)
}
}
DataStore2.prototype.clone = function (clonedDims, ignoreIndices) {
var target2 = new DataStore2()
var chunks = this._chunks
var clonedDimsMap =
clonedDims &&
reduce(
clonedDims,
function (obj, dimIdx) {
obj[dimIdx] = true
return obj
},
{}
)
if (clonedDimsMap) {
for (var i2 = 0; i2 < chunks.length; i2++) {
target2._chunks[i2] = !clonedDimsMap[i2]
? chunks[i2]
: cloneChunk(chunks[i2])
}
} else {
target2._chunks = chunks
}
this._copyCommonProps(target2)
if (!ignoreIndices) {
target2._indices = this._cloneIndices()
}
target2._updateGetRawIdx()
return target2
}
DataStore2.prototype._copyCommonProps = function (target2) {
target2._count = this._count
target2._rawCount = this._rawCount
target2._provider = this._provider
target2._dimensions = this._dimensions
target2._extent = clone$4(this._extent)
target2._rawExtent = clone$4(this._rawExtent)
}
DataStore2.prototype._cloneIndices = function () {
if (this._indices) {
var Ctor = this._indices.constructor
var indices = void 0
if (Ctor === Array) {
var thisCount = this._indices.length
indices = new Ctor(thisCount)
for (var i2 = 0; i2 < thisCount; i2++) {
indices[i2] = this._indices[i2]
}
} else {
indices = new Ctor(this._indices)
}
return indices
}
return null
}
DataStore2.prototype._getRawIdxIdentity = function (idx) {
return idx
}
DataStore2.prototype._getRawIdx = function (idx) {
if (idx < this._count && idx >= 0) {
return this._indices[idx]
}
return -1
}
DataStore2.prototype._updateGetRawIdx = function () {
this.getRawIndex = this._indices ? this._getRawIdx : this._getRawIdxIdentity
}
DataStore2.internalField = (function () {
function getDimValueSimply(dataItem, property2, dataIndex, dimIndex) {
return parseDataValue(dataItem[dimIndex], this._dimensions[dimIndex])
}
defaultDimValueGetters = {
arrayRows: getDimValueSimply,
objectRows: function (dataItem, property2, dataIndex, dimIndex) {
return parseDataValue(dataItem[property2], this._dimensions[dimIndex])
},
keyedColumns: getDimValueSimply,
original: function (dataItem, property2, dataIndex, dimIndex) {
var value2 =
dataItem && (dataItem.value == null ? dataItem : dataItem.value)
return parseDataValue(
value2 instanceof Array ? value2[dimIndex] : value2,
this._dimensions[dimIndex]
)
},
typedArray: function (dataItem, property2, dataIndex, dimIndex) {
return dataItem[dimIndex]
},
}
})()
return DataStore2
})()
var DataStore$1 = DataStore
var SourceManager = (function () {
function SourceManager2(sourceHost) {
this._sourceList = []
this._storeList = []
this._upstreamSignList = []
this._versionSignBase = 0
this._dirty = true
this._sourceHost = sourceHost
}
SourceManager2.prototype.dirty = function () {
this._setLocalSource([], [])
this._storeList = []
this._dirty = true
}
SourceManager2.prototype._setLocalSource = function (
sourceList,
upstreamSignList
) {
this._sourceList = sourceList
this._upstreamSignList = upstreamSignList
this._versionSignBase++
if (this._versionSignBase > 9e10) {
this._versionSignBase = 0
}
}
SourceManager2.prototype._getVersionSign = function () {
return this._sourceHost.uid + '_' + this._versionSignBase
}
SourceManager2.prototype.prepareSource = function () {
if (this._isDirty()) {
this._createSource()
this._dirty = false
}
}
SourceManager2.prototype._createSource = function () {
this._setLocalSource([], [])
var sourceHost = this._sourceHost
var upSourceMgrList = this._getUpstreamSourceManagers()
var hasUpstream = !!upSourceMgrList.length
var resultSourceList
var upstreamSignList
if (isSeries(sourceHost)) {
var seriesModel = sourceHost
var data2 = void 0
var sourceFormat = void 0
var upSource = void 0
if (hasUpstream) {
var upSourceMgr = upSourceMgrList[0]
upSourceMgr.prepareSource()
upSource = upSourceMgr.getSource()
data2 = upSource.data
sourceFormat = upSource.sourceFormat
upstreamSignList = [upSourceMgr._getVersionSign()]
} else {
data2 = seriesModel.get('data', true)
sourceFormat = isTypedArray$2(data2)
? SOURCE_FORMAT_TYPED_ARRAY
: SOURCE_FORMAT_ORIGINAL
upstreamSignList = []
}
var newMetaRawOption = this._getSourceMetaRawOption() || {}
var upMetaRawOption = (upSource && upSource.metaRawOption) || {}
var seriesLayoutBy =
retrieve2(
newMetaRawOption.seriesLayoutBy,
upMetaRawOption.seriesLayoutBy
) || null
var sourceHeader = retrieve2(
newMetaRawOption.sourceHeader,
upMetaRawOption.sourceHeader
)
var dimensions = retrieve2(
newMetaRawOption.dimensions,
upMetaRawOption.dimensions
)
var needsCreateSource =
seriesLayoutBy !== upMetaRawOption.seriesLayoutBy ||
!!sourceHeader !== !!upMetaRawOption.sourceHeader ||
dimensions
resultSourceList = needsCreateSource
? [
createSource(
data2,
{
seriesLayoutBy,
sourceHeader,
dimensions,
},
sourceFormat
),
]
: []
} else {
var datasetModel = sourceHost
if (hasUpstream) {
var result = this._applyTransform(upSourceMgrList)
resultSourceList = result.sourceList
upstreamSignList = result.upstreamSignList
} else {
var sourceData = datasetModel.get('source', true)
resultSourceList = [
createSource(sourceData, this._getSourceMetaRawOption(), null),
]
upstreamSignList = []
}
}
this._setLocalSource(resultSourceList, upstreamSignList)
}
SourceManager2.prototype._applyTransform = function (upMgrList) {
var datasetModel = this._sourceHost
var transformOption = datasetModel.get('transform', true)
var fromTransformResult = datasetModel.get('fromTransformResult', true)
if (fromTransformResult != null) {
var errMsg = ''
if (upMgrList.length !== 1) {
doThrow(errMsg)
}
}
var sourceList
var upSourceList = []
var upstreamSignList = []
each$f(upMgrList, function (upMgr) {
upMgr.prepareSource()
var upSource = upMgr.getSource(fromTransformResult || 0)
var errMsg2 = ''
if (fromTransformResult != null && !upSource) {
doThrow(errMsg2)
}
upSourceList.push(upSource)
upstreamSignList.push(upMgr._getVersionSign())
})
if (transformOption) {
sourceList = applyDataTransform(transformOption, upSourceList, {
datasetIndex: datasetModel.componentIndex,
})
} else if (fromTransformResult != null) {
sourceList = [cloneSourceShallow(upSourceList[0])]
}
return {
sourceList,
upstreamSignList,
}
}
SourceManager2.prototype._isDirty = function () {
if (this._dirty) {
return true
}
var upSourceMgrList = this._getUpstreamSourceManagers()
for (var i2 = 0; i2 < upSourceMgrList.length; i2++) {
var upSrcMgr = upSourceMgrList[i2]
if (
upSrcMgr._isDirty() ||
this._upstreamSignList[i2] !== upSrcMgr._getVersionSign()
) {
return true
}
}
}
SourceManager2.prototype.getSource = function (sourceIndex) {
sourceIndex = sourceIndex || 0
var source2 = this._sourceList[sourceIndex]
if (!source2) {
var upSourceMgrList = this._getUpstreamSourceManagers()
return upSourceMgrList[0] && upSourceMgrList[0].getSource(sourceIndex)
}
return source2
}
SourceManager2.prototype.getSharedDataStore = function (seriesDimRequest) {
var schema = seriesDimRequest.makeStoreSchema()
return this._innerGetDataStore(
schema.dimensions,
seriesDimRequest.source,
schema.hash
)
}
SourceManager2.prototype._innerGetDataStore = function (
storeDims,
seriesSource,
sourceReadKey
) {
var sourceIndex = 0
var storeList = this._storeList
var cachedStoreMap = storeList[sourceIndex]
if (!cachedStoreMap) {
cachedStoreMap = storeList[sourceIndex] = {}
}
var cachedStore = cachedStoreMap[sourceReadKey]
if (!cachedStore) {
var upSourceMgr = this._getUpstreamSourceManagers()[0]
if (isSeries(this._sourceHost) && upSourceMgr) {
cachedStore = upSourceMgr._innerGetDataStore(
storeDims,
seriesSource,
sourceReadKey
)
} else {
cachedStore = new DataStore$1()
cachedStore.initData(
new DefaultDataProvider(seriesSource, storeDims.length),
storeDims
)
}
cachedStoreMap[sourceReadKey] = cachedStore
}
return cachedStore
}
SourceManager2.prototype._getUpstreamSourceManagers = function () {
var sourceHost = this._sourceHost
if (isSeries(sourceHost)) {
var datasetModel = querySeriesUpstreamDatasetModel(sourceHost)
return !datasetModel ? [] : [datasetModel.getSourceManager()]
} else {
return map$1(
queryDatasetUpstreamDatasetModels(sourceHost),
function (datasetModel2) {
return datasetModel2.getSourceManager()
}
)
}
}
SourceManager2.prototype._getSourceMetaRawOption = function () {
var sourceHost = this._sourceHost
var seriesLayoutBy
var sourceHeader
var dimensions
if (isSeries(sourceHost)) {
seriesLayoutBy = sourceHost.get('seriesLayoutBy', true)
sourceHeader = sourceHost.get('sourceHeader', true)
dimensions = sourceHost.get('dimensions', true)
} else if (!this._getUpstreamSourceManagers().length) {
var model = sourceHost
seriesLayoutBy = model.get('seriesLayoutBy', true)
sourceHeader = model.get('sourceHeader', true)
dimensions = model.get('dimensions', true)
}
return {
seriesLayoutBy,
sourceHeader,
dimensions,
}
}
return SourceManager2
})()
function disableTransformOptionMerge(datasetModel) {
var transformOption = datasetModel.option.transform
transformOption && setAsPrimitive(datasetModel.option.transform)
}
function isSeries(sourceHost) {
return sourceHost.mainType === 'series'
}
function doThrow(errMsg) {
throw new Error(errMsg)
}
var TOOLTIP_LINE_HEIGHT_CSS = 'line-height:1'
function getTooltipTextStyle(textStyle, renderMode) {
var nameFontColor = textStyle.color || '#6e7079'
var nameFontSize = textStyle.fontSize || 12
var nameFontWeight = textStyle.fontWeight || '400'
var valueFontColor = textStyle.color || '#464646'
var valueFontSize = textStyle.fontSize || 14
var valueFontWeight = textStyle.fontWeight || '900'
if (renderMode === 'html') {
return {
nameStyle:
'font-size:' +
encodeHTML(nameFontSize + '') +
'px;color:' +
encodeHTML(nameFontColor) +
';font-weight:' +
encodeHTML(nameFontWeight + ''),
valueStyle:
'font-size:' +
encodeHTML(valueFontSize + '') +
'px;color:' +
encodeHTML(valueFontColor) +
';font-weight:' +
encodeHTML(valueFontWeight + ''),
}
} else {
return {
nameStyle: {
fontSize: nameFontSize,
fill: nameFontColor,
fontWeight: nameFontWeight,
},
valueStyle: {
fontSize: valueFontSize,
fill: valueFontColor,
fontWeight: valueFontWeight,
},
}
}
}
var HTML_GAPS = [0, 10, 20, 30]
var RICH_TEXT_GAPS = ['', '\n', '\n\n', '\n\n\n']
function createTooltipMarkup(type4, option2) {
option2.type = type4
return option2
}
function isSectionFragment(frag) {
return frag.type === 'section'
}
function getBuilder(frag) {
return isSectionFragment(frag) ? buildSection : buildNameValue
}
function getBlockGapLevel(frag) {
if (isSectionFragment(frag)) {
var gapLevel_1 = 0
var subBlockLen = frag.blocks.length
var hasInnerGap_1 = subBlockLen > 1 || (subBlockLen > 0 && !frag.noHeader)
each$f(frag.blocks, function (subBlock) {
var subGapLevel = getBlockGapLevel(subBlock)
if (subGapLevel >= gapLevel_1) {
gapLevel_1 =
subGapLevel +
+(
hasInnerGap_1 &&
(!subGapLevel ||
(isSectionFragment(subBlock) && !subBlock.noHeader))
)
}
})
return gapLevel_1
}
return 0
}
function buildSection(ctx, fragment, topMarginForOuterGap, toolTipTextStyle) {
var noHeader = fragment.noHeader
var gaps = getGap(getBlockGapLevel(fragment))
var subMarkupTextList = []
var subBlocks = fragment.blocks || []
assert(!subBlocks || isArray$6(subBlocks))
subBlocks = subBlocks || []
var orderMode = ctx.orderMode
if (fragment.sortBlocks && orderMode) {
subBlocks = subBlocks.slice()
var orderMap = {
valueAsc: 'asc',
valueDesc: 'desc',
}
if (hasOwn$1(orderMap, orderMode)) {
var comparator_1 = new SortOrderComparator(orderMap[orderMode], null)
subBlocks.sort(function (a2, b2) {
return comparator_1.evaluate(a2.sortParam, b2.sortParam)
})
} else if (orderMode === 'seriesDesc') {
subBlocks.reverse()
}
}
each$f(subBlocks, function (subBlock, idx) {
var valueFormatter = fragment.valueFormatter
var subMarkupText2 = getBuilder(subBlock)(
valueFormatter
? extend(extend({}, ctx), {
valueFormatter,
})
: ctx,
subBlock,
idx > 0 ? gaps.html : 0,
toolTipTextStyle
)
subMarkupText2 != null && subMarkupTextList.push(subMarkupText2)
})
var subMarkupText =
ctx.renderMode === 'richText'
? subMarkupTextList.join(gaps.richText)
: wrapBlockHTML(
subMarkupTextList.join(''),
noHeader ? topMarginForOuterGap : gaps.html
)
if (noHeader) {
return subMarkupText
}
var displayableHeader = makeValueReadable(
fragment.header,
'ordinal',
ctx.useUTC
)
var nameStyle = getTooltipTextStyle(
toolTipTextStyle,
ctx.renderMode
).nameStyle
if (ctx.renderMode === 'richText') {
return (
wrapInlineNameRichText(ctx, displayableHeader, nameStyle) +
gaps.richText +
subMarkupText
)
} else {
return wrapBlockHTML(
'' +
encodeHTML(displayableHeader) +
'
' +
subMarkupText,
topMarginForOuterGap
)
}
}
function buildNameValue(ctx, fragment, topMarginForOuterGap, toolTipTextStyle) {
var renderMode = ctx.renderMode
var noName = fragment.noName
var noValue = fragment.noValue
var noMarker = !fragment.markerType
var name2 = fragment.name
var useUTC = ctx.useUTC
var valueFormatter =
fragment.valueFormatter ||
ctx.valueFormatter ||
function (value2) {
value2 = isArray$6(value2) ? value2 : [value2]
return map$1(value2, function (val2, idx) {
return makeValueReadable(
val2,
isArray$6(valueTypeOption) ? valueTypeOption[idx] : valueTypeOption,
useUTC
)
})
}
if (noName && noValue) {
return
}
var markerStr = noMarker
? ''
: ctx.markupStyleCreator.makeTooltipMarker(
fragment.markerType,
fragment.markerColor || '#333',
renderMode
)
var readableName = noName ? '' : makeValueReadable(name2, 'ordinal', useUTC)
var valueTypeOption = fragment.valueType
var readableValueList = noValue ? [] : valueFormatter(fragment.value)
var valueAlignRight = !noMarker || !noName
var valueCloseToMarker = !noMarker && noName
var _a2 = getTooltipTextStyle(toolTipTextStyle, renderMode),
nameStyle = _a2.nameStyle,
valueStyle = _a2.valueStyle
return renderMode === 'richText'
? (noMarker ? '' : markerStr) +
(noName ? '' : wrapInlineNameRichText(ctx, readableName, nameStyle)) +
(noValue
? ''
: wrapInlineValueRichText(
ctx,
readableValueList,
valueAlignRight,
valueCloseToMarker,
valueStyle
))
: wrapBlockHTML(
(noMarker ? '' : markerStr) +
(noName
? ''
: wrapInlineNameHTML(readableName, !noMarker, nameStyle)) +
(noValue
? ''
: wrapInlineValueHTML(
readableValueList,
valueAlignRight,
valueCloseToMarker,
valueStyle
)),
topMarginForOuterGap
)
}
function buildTooltipMarkup(
fragment,
markupStyleCreator,
renderMode,
orderMode,
useUTC,
toolTipTextStyle
) {
if (!fragment) {
return
}
var builder = getBuilder(fragment)
var ctx = {
useUTC,
renderMode,
orderMode,
markupStyleCreator,
valueFormatter: fragment.valueFormatter,
}
return builder(ctx, fragment, 0, toolTipTextStyle)
}
function getGap(gapLevel) {
return {
html: HTML_GAPS[gapLevel],
richText: RICH_TEXT_GAPS[gapLevel],
}
}
function wrapBlockHTML(encodedContent, topGap) {
var clearfix = ''
var marginCSS = 'margin: ' + topGap + 'px 0 0'
return (
'' +
encodedContent +
clearfix +
'
'
)
}
function wrapInlineNameHTML(name2, leftHasMarker, style2) {
var marginCss = leftHasMarker ? 'margin-left:2px' : ''
return (
'' +
encodeHTML(name2) +
''
)
}
function wrapInlineValueHTML(
valueList,
alignRight,
valueCloseToMarker,
style2
) {
var paddingStr = valueCloseToMarker ? '10px' : '20px'
var alignCSS = alignRight ? 'float:right;margin-left:' + paddingStr : ''
valueList = isArray$6(valueList) ? valueList : [valueList]
return (
'' +
map$1(valueList, function (value2) {
return encodeHTML(value2)
}).join(' ') +
''
)
}
function wrapInlineNameRichText(ctx, name2, style2) {
return ctx.markupStyleCreator.wrapRichTextStyle(name2, style2)
}
function wrapInlineValueRichText(
ctx,
values2,
alignRight,
valueCloseToMarker,
style2
) {
var styles = [style2]
var paddingLeft2 = valueCloseToMarker ? 10 : 20
alignRight &&
styles.push({
padding: [0, 0, 0, paddingLeft2],
align: 'right',
})
return ctx.markupStyleCreator.wrapRichTextStyle(
isArray$6(values2) ? values2.join(' ') : values2,
styles
)
}
function retrieveVisualColorForTooltipMarker(series, dataIndex) {
var style2 = series.getData().getItemVisual(dataIndex, 'style')
var color2 = style2[series.visualDrawType]
return convertToColorString(color2)
}
function getPaddingFromTooltipModel(model, renderMode) {
var padding = model.get('padding')
return padding != null ? padding : renderMode === 'richText' ? [8, 10] : 10
}
var TooltipMarkupStyleCreator = (function () {
function TooltipMarkupStyleCreator2() {
this.richTextStyles = {}
this._nextStyleNameId = getRandomIdBase()
}
TooltipMarkupStyleCreator2.prototype._generateStyleName = function () {
return '__EC_aUTo_' + this._nextStyleNameId++
}
TooltipMarkupStyleCreator2.prototype.makeTooltipMarker = function (
markerType,
colorStr,
renderMode
) {
var markerId = renderMode === 'richText' ? this._generateStyleName() : null
var marker = getTooltipMarker({
color: colorStr,
type: markerType,
renderMode,
markerId,
})
if (isString$2(marker)) {
return marker
} else {
this.richTextStyles[markerId] = marker.style
return marker.content
}
}
TooltipMarkupStyleCreator2.prototype.wrapRichTextStyle = function (
text2,
styles
) {
var finalStl = {}
if (isArray$6(styles)) {
each$f(styles, function (stl) {
return extend(finalStl, stl)
})
} else {
extend(finalStl, styles)
}
var styleName = this._generateStyleName()
this.richTextStyles[styleName] = finalStl
return '{' + styleName + '|' + text2 + '}'
}
return TooltipMarkupStyleCreator2
})()
function defaultSeriesFormatTooltip(opt) {
var series = opt.series
var dataIndex = opt.dataIndex
var multipleSeries = opt.multipleSeries
var data2 = series.getData()
var tooltipDims = data2.mapDimensionsAll('defaultedTooltip')
var tooltipDimLen = tooltipDims.length
var value2 = series.getRawValue(dataIndex)
var isValueArr = isArray$6(value2)
var markerColor = retrieveVisualColorForTooltipMarker(series, dataIndex)
var inlineValue
var inlineValueType
var subBlocks
var sortParam
if (tooltipDimLen > 1 || (isValueArr && !tooltipDimLen)) {
var formatArrResult = formatTooltipArrayValue(
value2,
series,
dataIndex,
tooltipDims,
markerColor
)
inlineValue = formatArrResult.inlineValues
inlineValueType = formatArrResult.inlineValueTypes
subBlocks = formatArrResult.blocks
sortParam = formatArrResult.inlineValues[0]
} else if (tooltipDimLen) {
var dimInfo = data2.getDimensionInfo(tooltipDims[0])
sortParam = inlineValue = retrieveRawValue(data2, dataIndex, tooltipDims[0])
inlineValueType = dimInfo.type
} else {
sortParam = inlineValue = isValueArr ? value2[0] : value2
}
var seriesNameSpecified = isNameSpecified(series)
var seriesName = (seriesNameSpecified && series.name) || ''
var itemName = data2.getName(dataIndex)
var inlineName = multipleSeries ? seriesName : itemName
return createTooltipMarkup('section', {
header: seriesName,
noHeader: multipleSeries || !seriesNameSpecified,
sortParam,
blocks: [
createTooltipMarkup('nameValue', {
markerType: 'item',
markerColor,
name: inlineName,
noName: !trim$1(inlineName),
value: inlineValue,
valueType: inlineValueType,
}),
].concat(subBlocks || []),
})
}
function formatTooltipArrayValue(
value2,
series,
dataIndex,
tooltipDims,
colorStr
) {
var data2 = series.getData()
var isValueMultipleLine = reduce(
value2,
function (isValueMultipleLine2, val2, idx) {
var dimItem = data2.getDimensionInfo(idx)
return (isValueMultipleLine2 =
isValueMultipleLine2 ||
(dimItem && dimItem.tooltip !== false && dimItem.displayName != null))
},
false
)
var inlineValues = []
var inlineValueTypes = []
var blocks2 = []
tooltipDims.length
? each$f(tooltipDims, function (dim) {
setEachItem(retrieveRawValue(data2, dataIndex, dim), dim)
})
: each$f(value2, setEachItem)
function setEachItem(val2, dim) {
var dimInfo = data2.getDimensionInfo(dim)
if (!dimInfo || dimInfo.otherDims.tooltip === false) {
return
}
if (isValueMultipleLine) {
blocks2.push(
createTooltipMarkup('nameValue', {
markerType: 'subItem',
markerColor: colorStr,
name: dimInfo.displayName,
value: val2,
valueType: dimInfo.type,
})
)
} else {
inlineValues.push(val2)
inlineValueTypes.push(dimInfo.type)
}
}
return {
inlineValues,
inlineValueTypes,
blocks: blocks2,
}
}
var inner$k = makeInner()
function getSelectionKey(data2, dataIndex) {
return data2.getName(dataIndex) || data2.getId(dataIndex)
}
var SERIES_UNIVERSAL_TRANSITION_PROP = '__universalTransitionEnabled'
var SeriesModel = (function (_super) {
__extends$2(SeriesModel2, _super)
function SeriesModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this._selectedDataIndicesMap = {}
return _this
}
SeriesModel2.prototype.init = function (option2, parentModel, ecModel) {
this.seriesIndex = this.componentIndex
this.dataTask = createTask({
count: dataTaskCount,
reset: dataTaskReset,
})
this.dataTask.context = {
model: this,
}
this.mergeDefaultAndTheme(option2, ecModel)
var sourceManager = (inner$k(this).sourceManager = new SourceManager(this))
sourceManager.prepareSource()
var data2 = this.getInitialData(option2, ecModel)
wrapData(data2, this)
this.dataTask.context.data = data2
inner$k(this).dataBeforeProcessed = data2
autoSeriesName(this)
this._initSelectedMapFromData(data2)
}
SeriesModel2.prototype.mergeDefaultAndTheme = function (option2, ecModel) {
var layoutMode = fetchLayoutMode(this)
var inputPositionParams = layoutMode ? getLayoutParams(option2) : {}
var themeSubType = this.subType
if (ComponentModel$1.hasClass(themeSubType)) {
themeSubType += 'Series'
}
merge(option2, ecModel.getTheme().get(this.subType))
merge(option2, this.getDefaultOption())
defaultEmphasis(option2, 'label', ['show'])
this.fillDataTextStyle(option2.data)
if (layoutMode) {
mergeLayoutParam(option2, inputPositionParams, layoutMode)
}
}
SeriesModel2.prototype.mergeOption = function (newSeriesOption, ecModel) {
newSeriesOption = merge(this.option, newSeriesOption, true)
this.fillDataTextStyle(newSeriesOption.data)
var layoutMode = fetchLayoutMode(this)
if (layoutMode) {
mergeLayoutParam(this.option, newSeriesOption, layoutMode)
}
var sourceManager = inner$k(this).sourceManager
sourceManager.dirty()
sourceManager.prepareSource()
var data2 = this.getInitialData(newSeriesOption, ecModel)
wrapData(data2, this)
this.dataTask.dirty()
this.dataTask.context.data = data2
inner$k(this).dataBeforeProcessed = data2
autoSeriesName(this)
this._initSelectedMapFromData(data2)
}
SeriesModel2.prototype.fillDataTextStyle = function (data2) {
if (data2 && !isTypedArray$2(data2)) {
var props2 = ['show']
for (var i2 = 0; i2 < data2.length; i2++) {
if (data2[i2] && data2[i2].label) {
defaultEmphasis(data2[i2], 'label', props2)
}
}
}
}
SeriesModel2.prototype.getInitialData = function (option2, ecModel) {
return
}
SeriesModel2.prototype.appendData = function (params2) {
var data2 = this.getRawData()
data2.appendData(params2.data)
}
SeriesModel2.prototype.getData = function (dataType2) {
var task2 = getCurrentTask(this)
if (task2) {
var data2 = task2.context.data
return dataType2 == null ? data2 : data2.getLinkedData(dataType2)
} else {
return inner$k(this).data
}
}
SeriesModel2.prototype.getAllData = function () {
var mainData = this.getData()
return mainData && mainData.getLinkedDataAll
? mainData.getLinkedDataAll()
: [
{
data: mainData,
},
]
}
SeriesModel2.prototype.setData = function (data2) {
var task2 = getCurrentTask(this)
if (task2) {
var context2 = task2.context
context2.outputData = data2
if (task2 !== this.dataTask) {
context2.data = data2
}
}
inner$k(this).data = data2
}
SeriesModel2.prototype.getEncode = function () {
var encode2 = this.get('encode', true)
if (encode2) {
return createHashMap(encode2)
}
}
SeriesModel2.prototype.getSourceManager = function () {
return inner$k(this).sourceManager
}
SeriesModel2.prototype.getSource = function () {
return this.getSourceManager().getSource()
}
SeriesModel2.prototype.getRawData = function () {
return inner$k(this).dataBeforeProcessed
}
SeriesModel2.prototype.getColorBy = function () {
var colorBy = this.get('colorBy')
return colorBy || 'series'
}
SeriesModel2.prototype.isColorBySeries = function () {
return this.getColorBy() === 'series'
}
SeriesModel2.prototype.getBaseAxis = function () {
var coordSys = this.coordinateSystem
return coordSys && coordSys.getBaseAxis && coordSys.getBaseAxis()
}
SeriesModel2.prototype.formatTooltip = function (
dataIndex,
multipleSeries,
dataType2
) {
return defaultSeriesFormatTooltip({
series: this,
dataIndex,
multipleSeries,
})
}
SeriesModel2.prototype.isAnimationEnabled = function () {
var ecModel = this.ecModel
if (env$1.node && !(ecModel && ecModel.ssr)) {
return false
}
var animationEnabled = this.getShallow('animation')
if (animationEnabled) {
if (this.getData().count() > this.getShallow('animationThreshold')) {
animationEnabled = false
}
}
return !!animationEnabled
}
SeriesModel2.prototype.restoreData = function () {
this.dataTask.dirty()
}
SeriesModel2.prototype.getColorFromPalette = function (
name2,
scope,
requestColorNum
) {
var ecModel = this.ecModel
var color2 = PaletteMixin.prototype.getColorFromPalette.call(
this,
name2,
scope,
requestColorNum
)
if (!color2) {
color2 = ecModel.getColorFromPalette(name2, scope, requestColorNum)
}
return color2
}
SeriesModel2.prototype.coordDimToDataDim = function (coordDim) {
return this.getRawData().mapDimensionsAll(coordDim)
}
SeriesModel2.prototype.getProgressive = function () {
return this.get('progressive')
}
SeriesModel2.prototype.getProgressiveThreshold = function () {
return this.get('progressiveThreshold')
}
SeriesModel2.prototype.select = function (innerDataIndices, dataType2) {
this._innerSelect(this.getData(dataType2), innerDataIndices)
}
SeriesModel2.prototype.unselect = function (innerDataIndices, dataType2) {
var selectedMap = this.option.selectedMap
if (!selectedMap) {
return
}
var selectedMode = this.option.selectedMode
var data2 = this.getData(dataType2)
if (selectedMode === 'series' || selectedMap === 'all') {
this.option.selectedMap = {}
this._selectedDataIndicesMap = {}
return
}
for (var i2 = 0; i2 < innerDataIndices.length; i2++) {
var dataIndex = innerDataIndices[i2]
var nameOrId = getSelectionKey(data2, dataIndex)
selectedMap[nameOrId] = false
this._selectedDataIndicesMap[nameOrId] = -1
}
}
SeriesModel2.prototype.toggleSelect = function (innerDataIndices, dataType2) {
var tmpArr2 = []
for (var i2 = 0; i2 < innerDataIndices.length; i2++) {
tmpArr2[0] = innerDataIndices[i2]
this.isSelected(innerDataIndices[i2], dataType2)
? this.unselect(tmpArr2, dataType2)
: this.select(tmpArr2, dataType2)
}
}
SeriesModel2.prototype.getSelectedDataIndices = function () {
if (this.option.selectedMap === 'all') {
return [].slice.call(this.getData().getIndices())
}
var selectedDataIndicesMap = this._selectedDataIndicesMap
var nameOrIds = keys$4(selectedDataIndicesMap)
var dataIndices = []
for (var i2 = 0; i2 < nameOrIds.length; i2++) {
var dataIndex = selectedDataIndicesMap[nameOrIds[i2]]
if (dataIndex >= 0) {
dataIndices.push(dataIndex)
}
}
return dataIndices
}
SeriesModel2.prototype.isSelected = function (dataIndex, dataType2) {
var selectedMap = this.option.selectedMap
if (!selectedMap) {
return false
}
var data2 = this.getData(dataType2)
return (
(selectedMap === 'all' ||
selectedMap[getSelectionKey(data2, dataIndex)]) &&
!data2.getItemModel(dataIndex).get(['select', 'disabled'])
)
}
SeriesModel2.prototype.isUniversalTransitionEnabled = function () {
if (this[SERIES_UNIVERSAL_TRANSITION_PROP]) {
return true
}
var universalTransitionOpt = this.option.universalTransition
if (!universalTransitionOpt) {
return false
}
if (universalTransitionOpt === true) {
return true
}
return universalTransitionOpt && universalTransitionOpt.enabled
}
SeriesModel2.prototype._innerSelect = function (data2, innerDataIndices) {
var _a2, _b2
var option2 = this.option
var selectedMode = option2.selectedMode
var len2 = innerDataIndices.length
if (!selectedMode || !len2) {
return
}
if (selectedMode === 'series') {
option2.selectedMap = 'all'
} else if (selectedMode === 'multiple') {
if (!isObject$b(option2.selectedMap)) {
option2.selectedMap = {}
}
var selectedMap = option2.selectedMap
for (var i2 = 0; i2 < len2; i2++) {
var dataIndex = innerDataIndices[i2]
var nameOrId = getSelectionKey(data2, dataIndex)
selectedMap[nameOrId] = true
this._selectedDataIndicesMap[nameOrId] = data2.getRawIndex(dataIndex)
}
} else if (selectedMode === 'single' || selectedMode === true) {
var lastDataIndex = innerDataIndices[len2 - 1]
var nameOrId = getSelectionKey(data2, lastDataIndex)
option2.selectedMap = ((_a2 = {}), (_a2[nameOrId] = true), _a2)
this._selectedDataIndicesMap =
((_b2 = {}), (_b2[nameOrId] = data2.getRawIndex(lastDataIndex)), _b2)
}
}
SeriesModel2.prototype._initSelectedMapFromData = function (data2) {
if (this.option.selectedMap) {
return
}
var dataIndices = []
if (data2.hasItemOption) {
data2.each(function (idx) {
var rawItem = data2.getRawDataItem(idx)
if (rawItem && rawItem.selected) {
dataIndices.push(idx)
}
})
}
if (dataIndices.length > 0) {
this._innerSelect(data2, dataIndices)
}
}
SeriesModel2.registerClass = function (clz) {
return ComponentModel$1.registerClass(clz)
}
SeriesModel2.protoInitialize = (function () {
var proto2 = SeriesModel2.prototype
proto2.type = 'series.__base__'
proto2.seriesIndex = 0
proto2.ignoreStyleOnData = false
proto2.hasSymbolVisual = false
proto2.defaultSymbol = 'circle'
proto2.visualStyleAccessPath = 'itemStyle'
proto2.visualDrawType = 'fill'
})()
return SeriesModel2
})(ComponentModel$1)
mixin(SeriesModel, DataFormatMixin)
mixin(SeriesModel, PaletteMixin)
mountExtend(SeriesModel, ComponentModel$1)
function autoSeriesName(seriesModel) {
var name2 = seriesModel.name
if (!isNameSpecified(seriesModel)) {
seriesModel.name = getSeriesAutoName(seriesModel) || name2
}
}
function getSeriesAutoName(seriesModel) {
var data2 = seriesModel.getRawData()
var dataDims = data2.mapDimensionsAll('seriesName')
var nameArr = []
each$f(dataDims, function (dataDim) {
var dimInfo = data2.getDimensionInfo(dataDim)
dimInfo.displayName && nameArr.push(dimInfo.displayName)
})
return nameArr.join(' ')
}
function dataTaskCount(context2) {
return context2.model.getRawData().count()
}
function dataTaskReset(context2) {
var seriesModel = context2.model
seriesModel.setData(seriesModel.getRawData().cloneShallow())
return dataTaskProgress
}
function dataTaskProgress(param, context2) {
if (context2.outputData && param.end > context2.outputData.count()) {
context2.model.getRawData().cloneShallow(context2.outputData)
}
}
function wrapData(data2, seriesModel) {
each$f(
concatArray(data2.CHANGABLE_METHODS, data2.DOWNSAMPLE_METHODS),
function (methodName) {
data2.wrapMethod(methodName, curry$1(onDataChange, seriesModel))
}
)
}
function onDataChange(seriesModel, newList) {
var task2 = getCurrentTask(seriesModel)
if (task2) {
task2.setOutputEnd((newList || this).count())
}
return newList
}
function getCurrentTask(seriesModel) {
var scheduler = (seriesModel.ecModel || {}).scheduler
var pipeline = scheduler && scheduler.getPipeline(seriesModel.uid)
if (pipeline) {
var task2 = pipeline.currentTask
if (task2) {
var agentStubMap = task2.agentStubMap
if (agentStubMap) {
task2 = agentStubMap.get(seriesModel.uid)
}
}
return task2
}
}
var SeriesModel$1 = SeriesModel
var ComponentView = (function () {
function ComponentView2() {
this.group = new Group$5()
this.uid = getUID('viewComponent')
}
ComponentView2.prototype.init = function (ecModel, api) {}
ComponentView2.prototype.render = function (model, ecModel, api, payload) {}
ComponentView2.prototype.dispose = function (ecModel, api) {}
ComponentView2.prototype.updateView = function (
model,
ecModel,
api,
payload
) {}
ComponentView2.prototype.updateLayout = function (
model,
ecModel,
api,
payload
) {}
ComponentView2.prototype.updateVisual = function (
model,
ecModel,
api,
payload
) {}
ComponentView2.prototype.toggleBlurSeries = function (
seriesModels,
isBlur,
ecModel
) {}
ComponentView2.prototype.eachRendered = function (cb) {
var group = this.group
if (group) {
group.traverse(cb)
}
}
return ComponentView2
})()
enableClassExtend(ComponentView)
enableClassManagement(ComponentView)
var ComponentView$1 = ComponentView
function createRenderPlanner() {
var inner2 = makeInner()
return function (seriesModel) {
var fields = inner2(seriesModel)
var pipelineContext = seriesModel.pipelineContext
var originalLarge = !!fields.large
var originalProgressive = !!fields.progressiveRender
var large = (fields.large = !!(pipelineContext && pipelineContext.large))
var progressive = (fields.progressiveRender = !!(
pipelineContext && pipelineContext.progressiveRender
))
return (
!!(originalLarge !== large || originalProgressive !== progressive) &&
'reset'
)
}
}
var inner$j = makeInner()
var renderPlanner = createRenderPlanner()
var ChartView = (function () {
function ChartView2() {
this.group = new Group$5()
this.uid = getUID('viewChart')
this.renderTask = createTask({
plan: renderTaskPlan,
reset: renderTaskReset,
})
this.renderTask.context = {
view: this,
}
}
ChartView2.prototype.init = function (ecModel, api) {}
ChartView2.prototype.render = function (seriesModel, ecModel, api, payload) {}
ChartView2.prototype.highlight = function (
seriesModel,
ecModel,
api,
payload
) {
var data2 = seriesModel.getData(payload && payload.dataType)
if (!data2) {
return
}
toggleHighlight(data2, payload, 'emphasis')
}
ChartView2.prototype.downplay = function (
seriesModel,
ecModel,
api,
payload
) {
var data2 = seriesModel.getData(payload && payload.dataType)
if (!data2) {
return
}
toggleHighlight(data2, payload, 'normal')
}
ChartView2.prototype.remove = function (ecModel, api) {
this.group.removeAll()
}
ChartView2.prototype.dispose = function (ecModel, api) {}
ChartView2.prototype.updateView = function (
seriesModel,
ecModel,
api,
payload
) {
this.render(seriesModel, ecModel, api, payload)
}
ChartView2.prototype.updateLayout = function (
seriesModel,
ecModel,
api,
payload
) {
this.render(seriesModel, ecModel, api, payload)
}
ChartView2.prototype.updateVisual = function (
seriesModel,
ecModel,
api,
payload
) {
this.render(seriesModel, ecModel, api, payload)
}
ChartView2.prototype.eachRendered = function (cb) {
traverseElements(this.group, cb)
}
ChartView2.markUpdateMethod = function (payload, methodName) {
inner$j(payload).updateMethod = methodName
}
ChartView2.protoInitialize = (function () {
var proto2 = ChartView2.prototype
proto2.type = 'chart'
})()
return ChartView2
})()
function elSetState(el2, state2, highlightDigit) {
if (el2 && isHighDownDispatcher(el2)) {
;(state2 === 'emphasis' ? enterEmphasis : leaveEmphasis)(
el2,
highlightDigit
)
}
}
function toggleHighlight(data2, payload, state2) {
var dataIndex = queryDataIndex(data2, payload)
var highlightDigit =
payload && payload.highlightKey != null
? getHighlightDigit(payload.highlightKey)
: null
if (dataIndex != null) {
each$f(normalizeToArray(dataIndex), function (dataIdx) {
elSetState(data2.getItemGraphicEl(dataIdx), state2, highlightDigit)
})
} else {
data2.eachItemGraphicEl(function (el2) {
elSetState(el2, state2, highlightDigit)
})
}
}
enableClassExtend(ChartView)
enableClassManagement(ChartView)
function renderTaskPlan(context2) {
return renderPlanner(context2.model)
}
function renderTaskReset(context2) {
var seriesModel = context2.model
var ecModel = context2.ecModel
var api = context2.api
var payload = context2.payload
var progressiveRender = seriesModel.pipelineContext.progressiveRender
var view2 = context2.view
var updateMethod = payload && inner$j(payload).updateMethod
var methodName = progressiveRender
? 'incrementalPrepareRender'
: updateMethod && view2[updateMethod]
? updateMethod
: 'render'
if (methodName !== 'render') {
view2[methodName](seriesModel, ecModel, api, payload)
}
return progressMethodMap[methodName]
}
var progressMethodMap = {
incrementalPrepareRender: {
progress: function (params2, context2) {
context2.view.incrementalRender(
params2,
context2.model,
context2.ecModel,
context2.api,
context2.payload
)
},
},
render: {
forceFirstProgress: true,
progress: function (params2, context2) {
context2.view.render(
context2.model,
context2.ecModel,
context2.api,
context2.payload
)
},
},
}
var ChartView$1 = ChartView
var ORIGIN_METHOD = '\0__throttleOriginMethod'
var RATE = '\0__throttleRate'
var THROTTLE_TYPE = '\0__throttleType'
function throttle(fn2, delay2, debounce2) {
var currCall
var lastCall = 0
var lastExec = 0
var timer2 = null
var diff
var scope
var args
var debounceNextCall
delay2 = delay2 || 0
function exec2() {
lastExec = new Date().getTime()
timer2 = null
fn2.apply(scope, args || [])
}
var cb = function () {
var cbArgs = []
for (var _i = 0; _i < arguments.length; _i++) {
cbArgs[_i] = arguments[_i]
}
currCall = new Date().getTime()
scope = this
args = cbArgs
var thisDelay = debounceNextCall || delay2
var thisDebounce = debounceNextCall || debounce2
debounceNextCall = null
diff = currCall - (thisDebounce ? lastCall : lastExec) - thisDelay
clearTimeout(timer2)
if (thisDebounce) {
timer2 = setTimeout(exec2, thisDelay)
} else {
if (diff >= 0) {
exec2()
} else {
timer2 = setTimeout(exec2, -diff)
}
}
lastCall = currCall
}
cb.clear = function () {
if (timer2) {
clearTimeout(timer2)
timer2 = null
}
}
cb.debounceNextCall = function (debounceDelay) {
debounceNextCall = debounceDelay
}
return cb
}
function createOrUpdate(obj, fnAttr, rate, throttleType) {
var fn2 = obj[fnAttr]
if (!fn2) {
return
}
var originFn = fn2[ORIGIN_METHOD] || fn2
var lastThrottleType = fn2[THROTTLE_TYPE]
var lastRate = fn2[RATE]
if (lastRate !== rate || lastThrottleType !== throttleType) {
if (rate == null || !throttleType) {
return (obj[fnAttr] = originFn)
}
fn2 = obj[fnAttr] = throttle(originFn, rate, throttleType === 'debounce')
fn2[ORIGIN_METHOD] = originFn
fn2[THROTTLE_TYPE] = throttleType
fn2[RATE] = rate
}
return fn2
}
function clear$1(obj, fnAttr) {
var fn2 = obj[fnAttr]
if (fn2 && fn2[ORIGIN_METHOD]) {
fn2.clear && fn2.clear()
obj[fnAttr] = fn2[ORIGIN_METHOD]
}
}
var inner$i = makeInner()
var defaultStyleMappers = {
itemStyle: makeStyleMapper(ITEM_STYLE_KEY_MAP, true),
lineStyle: makeStyleMapper(LINE_STYLE_KEY_MAP, true),
}
var defaultColorKey = {
lineStyle: 'stroke',
itemStyle: 'fill',
}
function getStyleMapper(seriesModel, stylePath) {
var styleMapper =
seriesModel.visualStyleMapper || defaultStyleMappers[stylePath]
if (!styleMapper) {
console.warn("Unknown style type '" + stylePath + "'.")
return defaultStyleMappers.itemStyle
}
return styleMapper
}
function getDefaultColorKey(seriesModel, stylePath) {
var colorKey = seriesModel.visualDrawType || defaultColorKey[stylePath]
if (!colorKey) {
console.warn("Unknown style type '" + stylePath + "'.")
return 'fill'
}
return colorKey
}
var seriesStyleTask = {
createOnAllSeries: true,
performRawSeries: true,
reset: function (seriesModel, ecModel) {
var data2 = seriesModel.getData()
var stylePath = seriesModel.visualStyleAccessPath || 'itemStyle'
var styleModel = seriesModel.getModel(stylePath)
var getStyle2 = getStyleMapper(seriesModel, stylePath)
var globalStyle = getStyle2(styleModel)
var decalOption = styleModel.getShallow('decal')
if (decalOption) {
data2.setVisual('decal', decalOption)
decalOption.dirty = true
}
var colorKey = getDefaultColorKey(seriesModel, stylePath)
var color2 = globalStyle[colorKey]
var colorCallback = isFunction$4(color2) ? color2 : null
var hasAutoColor =
globalStyle.fill === 'auto' || globalStyle.stroke === 'auto'
if (!globalStyle[colorKey] || colorCallback || hasAutoColor) {
var colorPalette2 = seriesModel.getColorFromPalette(
seriesModel.name,
null,
ecModel.getSeriesCount()
)
if (!globalStyle[colorKey]) {
globalStyle[colorKey] = colorPalette2
data2.setVisual('colorFromPalette', true)
}
globalStyle.fill =
globalStyle.fill === 'auto' || isFunction$4(globalStyle.fill)
? colorPalette2
: globalStyle.fill
globalStyle.stroke =
globalStyle.stroke === 'auto' || isFunction$4(globalStyle.stroke)
? colorPalette2
: globalStyle.stroke
}
data2.setVisual('style', globalStyle)
data2.setVisual('drawType', colorKey)
if (!ecModel.isSeriesFiltered(seriesModel) && colorCallback) {
data2.setVisual('colorFromPalette', false)
return {
dataEach: function (data3, idx) {
var dataParams = seriesModel.getDataParams(idx)
var itemStyle = extend({}, globalStyle)
itemStyle[colorKey] = colorCallback(dataParams)
data3.setItemVisual(idx, 'style', itemStyle)
},
}
}
},
}
var sharedModel = new Model$1()
var dataStyleTask = {
createOnAllSeries: true,
performRawSeries: true,
reset: function (seriesModel, ecModel) {
if (
seriesModel.ignoreStyleOnData ||
ecModel.isSeriesFiltered(seriesModel)
) {
return
}
var data2 = seriesModel.getData()
var stylePath = seriesModel.visualStyleAccessPath || 'itemStyle'
var getStyle2 = getStyleMapper(seriesModel, stylePath)
var colorKey = data2.getVisual('drawType')
return {
dataEach: data2.hasItemOption
? function (data3, idx) {
var rawItem = data3.getRawDataItem(idx)
if (rawItem && rawItem[stylePath]) {
sharedModel.option = rawItem[stylePath]
var style2 = getStyle2(sharedModel)
var existsStyle = data3.ensureUniqueItemVisual(idx, 'style')
extend(existsStyle, style2)
if (sharedModel.option.decal) {
data3.setItemVisual(idx, 'decal', sharedModel.option.decal)
sharedModel.option.decal.dirty = true
}
if (colorKey in style2) {
data3.setItemVisual(idx, 'colorFromPalette', false)
}
}
}
: null,
}
},
}
var dataColorPaletteTask = {
performRawSeries: true,
overallReset: function (ecModel) {
var paletteScopeGroupByType = createHashMap()
ecModel.eachSeries(function (seriesModel) {
var colorBy = seriesModel.getColorBy()
if (seriesModel.isColorBySeries()) {
return
}
var key2 = seriesModel.type + '-' + colorBy
var colorScope = paletteScopeGroupByType.get(key2)
if (!colorScope) {
colorScope = {}
paletteScopeGroupByType.set(key2, colorScope)
}
inner$i(seriesModel).scope = colorScope
})
ecModel.eachSeries(function (seriesModel) {
if (
seriesModel.isColorBySeries() ||
ecModel.isSeriesFiltered(seriesModel)
) {
return
}
var dataAll = seriesModel.getRawData()
var idxMap = {}
var data2 = seriesModel.getData()
var colorScope = inner$i(seriesModel).scope
var stylePath = seriesModel.visualStyleAccessPath || 'itemStyle'
var colorKey = getDefaultColorKey(seriesModel, stylePath)
data2.each(function (idx) {
var rawIdx = data2.getRawIndex(idx)
idxMap[rawIdx] = idx
})
dataAll.each(function (rawIdx) {
var idx = idxMap[rawIdx]
var fromPalette = data2.getItemVisual(idx, 'colorFromPalette')
if (fromPalette) {
var itemStyle = data2.ensureUniqueItemVisual(idx, 'style')
var name_1 = dataAll.getName(rawIdx) || rawIdx + ''
var dataCount = dataAll.count()
itemStyle[colorKey] = seriesModel.getColorFromPalette(
name_1,
colorScope,
dataCount
)
}
})
})
},
}
var PI$5 = Math.PI
function defaultLoading(api, opts) {
opts = opts || {}
defaults(opts, {
text: 'loading',
textColor: '#000',
fontSize: 12,
fontWeight: 'normal',
fontStyle: 'normal',
fontFamily: 'sans-serif',
maskColor: 'rgba(255, 255, 255, 0.8)',
showSpinner: true,
color: '#5470c6',
spinnerRadius: 10,
lineWidth: 5,
zlevel: 0,
})
var group = new Group$5()
var mask = new Rect$4({
style: {
fill: opts.maskColor,
},
zlevel: opts.zlevel,
z: 1e4,
})
group.add(mask)
var textContent = new ZRText$1({
style: {
text: opts.text,
fill: opts.textColor,
fontSize: opts.fontSize,
fontWeight: opts.fontWeight,
fontStyle: opts.fontStyle,
fontFamily: opts.fontFamily,
},
zlevel: opts.zlevel,
z: 10001,
})
var labelRect = new Rect$4({
style: {
fill: 'none',
},
textContent,
textConfig: {
position: 'right',
distance: 10,
},
zlevel: opts.zlevel,
z: 10001,
})
group.add(labelRect)
var arc
if (opts.showSpinner) {
arc = new Arc$1({
shape: {
startAngle: -PI$5 / 2,
endAngle: -PI$5 / 2 + 0.1,
r: opts.spinnerRadius,
},
style: {
stroke: opts.color,
lineCap: 'round',
lineWidth: opts.lineWidth,
},
zlevel: opts.zlevel,
z: 10001,
})
arc
.animateShape(true)
.when(1e3, {
endAngle: (PI$5 * 3) / 2,
})
.start('circularInOut')
arc
.animateShape(true)
.when(1e3, {
startAngle: (PI$5 * 3) / 2,
})
.delay(300)
.start('circularInOut')
group.add(arc)
}
group.resize = function () {
var textWidth = textContent.getBoundingRect().width
var r2 = opts.showSpinner ? opts.spinnerRadius : 0
var cx =
(api.getWidth() -
r2 * 2 -
(opts.showSpinner && textWidth ? 10 : 0) -
textWidth) /
2 -
(opts.showSpinner && textWidth ? 0 : 5 + textWidth / 2) +
(opts.showSpinner ? 0 : textWidth / 2) +
(textWidth ? 0 : r2)
var cy = api.getHeight() / 2
opts.showSpinner &&
arc.setShape({
cx,
cy,
})
labelRect.setShape({
x: cx - r2,
y: cy - r2,
width: r2 * 2,
height: r2 * 2,
})
mask.setShape({
x: 0,
y: 0,
width: api.getWidth(),
height: api.getHeight(),
})
}
group.resize()
return group
}
var Scheduler = (function () {
function Scheduler2(ecInstance, api, dataProcessorHandlers, visualHandlers) {
this._stageTaskMap = createHashMap()
this.ecInstance = ecInstance
this.api = api
dataProcessorHandlers = this._dataProcessorHandlers =
dataProcessorHandlers.slice()
visualHandlers = this._visualHandlers = visualHandlers.slice()
this._allHandlers = dataProcessorHandlers.concat(visualHandlers)
}
Scheduler2.prototype.restoreData = function (ecModel, payload) {
ecModel.restoreData(payload)
this._stageTaskMap.each(function (taskRecord) {
var overallTask = taskRecord.overallTask
overallTask && overallTask.dirty()
})
}
Scheduler2.prototype.getPerformArgs = function (task2, isBlock) {
if (!task2.__pipeline) {
return
}
var pipeline = this._pipelineMap.get(task2.__pipeline.id)
var pCtx = pipeline.context
var incremental =
!isBlock &&
pipeline.progressiveEnabled &&
(!pCtx || pCtx.progressiveRender) &&
task2.__idxInPipeline > pipeline.blockIndex
var step = incremental ? pipeline.step : null
var modDataCount = pCtx && pCtx.modDataCount
var modBy = modDataCount != null ? Math.ceil(modDataCount / step) : null
return {
step,
modBy,
modDataCount,
}
}
Scheduler2.prototype.getPipeline = function (pipelineId) {
return this._pipelineMap.get(pipelineId)
}
Scheduler2.prototype.updateStreamModes = function (seriesModel, view2) {
var pipeline = this._pipelineMap.get(seriesModel.uid)
var data2 = seriesModel.getData()
var dataLen = data2.count()
var progressiveRender =
pipeline.progressiveEnabled &&
view2.incrementalPrepareRender &&
dataLen >= pipeline.threshold
var large =
seriesModel.get('large') && dataLen >= seriesModel.get('largeThreshold')
var modDataCount =
seriesModel.get('progressiveChunkMode') === 'mod' ? dataLen : null
seriesModel.pipelineContext = pipeline.context = {
progressiveRender,
modDataCount,
large,
}
}
Scheduler2.prototype.restorePipelines = function (ecModel) {
var scheduler = this
var pipelineMap = (scheduler._pipelineMap = createHashMap())
ecModel.eachSeries(function (seriesModel) {
var progressive = seriesModel.getProgressive()
var pipelineId = seriesModel.uid
pipelineMap.set(pipelineId, {
id: pipelineId,
head: null,
tail: null,
threshold: seriesModel.getProgressiveThreshold(),
progressiveEnabled:
progressive &&
!(seriesModel.preventIncremental && seriesModel.preventIncremental()),
blockIndex: -1,
step: Math.round(progressive || 700),
count: 0,
})
scheduler._pipe(seriesModel, seriesModel.dataTask)
})
}
Scheduler2.prototype.prepareStageTasks = function () {
var stageTaskMap = this._stageTaskMap
var ecModel = this.api.getModel()
var api = this.api
each$f(
this._allHandlers,
function (handler) {
var record =
stageTaskMap.get(handler.uid) || stageTaskMap.set(handler.uid, {})
var errMsg = ''
assert(!(handler.reset && handler.overallReset), errMsg)
handler.reset &&
this._createSeriesStageTask(handler, record, ecModel, api)
handler.overallReset &&
this._createOverallStageTask(handler, record, ecModel, api)
},
this
)
}
Scheduler2.prototype.prepareView = function (view2, model, ecModel, api) {
var renderTask = view2.renderTask
var context2 = renderTask.context
context2.model = model
context2.ecModel = ecModel
context2.api = api
renderTask.__block = !view2.incrementalPrepareRender
this._pipe(model, renderTask)
}
Scheduler2.prototype.performDataProcessorTasks = function (ecModel, payload) {
this._performStageTasks(this._dataProcessorHandlers, ecModel, payload, {
block: true,
})
}
Scheduler2.prototype.performVisualTasks = function (ecModel, payload, opt) {
this._performStageTasks(this._visualHandlers, ecModel, payload, opt)
}
Scheduler2.prototype._performStageTasks = function (
stageHandlers,
ecModel,
payload,
opt
) {
opt = opt || {}
var unfinished = false
var scheduler = this
each$f(stageHandlers, function (stageHandler, idx) {
if (opt.visualType && opt.visualType !== stageHandler.visualType) {
return
}
var stageHandlerRecord = scheduler._stageTaskMap.get(stageHandler.uid)
var seriesTaskMap = stageHandlerRecord.seriesTaskMap
var overallTask = stageHandlerRecord.overallTask
if (overallTask) {
var overallNeedDirty_1
var agentStubMap = overallTask.agentStubMap
agentStubMap.each(function (stub) {
if (needSetDirty(opt, stub)) {
stub.dirty()
overallNeedDirty_1 = true
}
})
overallNeedDirty_1 && overallTask.dirty()
scheduler.updatePayload(overallTask, payload)
var performArgs_1 = scheduler.getPerformArgs(overallTask, opt.block)
agentStubMap.each(function (stub) {
stub.perform(performArgs_1)
})
if (overallTask.perform(performArgs_1)) {
unfinished = true
}
} else if (seriesTaskMap) {
seriesTaskMap.each(function (task2, pipelineId) {
if (needSetDirty(opt, task2)) {
task2.dirty()
}
var performArgs = scheduler.getPerformArgs(task2, opt.block)
performArgs.skip =
!stageHandler.performRawSeries &&
ecModel.isSeriesFiltered(task2.context.model)
scheduler.updatePayload(task2, payload)
if (task2.perform(performArgs)) {
unfinished = true
}
})
}
})
function needSetDirty(opt2, task2) {
return (
opt2.setDirty &&
(!opt2.dirtyMap || opt2.dirtyMap.get(task2.__pipeline.id))
)
}
this.unfinished = unfinished || this.unfinished
}
Scheduler2.prototype.performSeriesTasks = function (ecModel) {
var unfinished
ecModel.eachSeries(function (seriesModel) {
unfinished = seriesModel.dataTask.perform() || unfinished
})
this.unfinished = unfinished || this.unfinished
}
Scheduler2.prototype.plan = function () {
this._pipelineMap.each(function (pipeline) {
var task2 = pipeline.tail
do {
if (task2.__block) {
pipeline.blockIndex = task2.__idxInPipeline
break
}
task2 = task2.getUpstream()
} while (task2)
})
}
Scheduler2.prototype.updatePayload = function (task2, payload) {
payload !== 'remain' && (task2.context.payload = payload)
}
Scheduler2.prototype._createSeriesStageTask = function (
stageHandler,
stageHandlerRecord,
ecModel,
api
) {
var scheduler = this
var oldSeriesTaskMap = stageHandlerRecord.seriesTaskMap
var newSeriesTaskMap = (stageHandlerRecord.seriesTaskMap = createHashMap())
var seriesType2 = stageHandler.seriesType
var getTargetSeries = stageHandler.getTargetSeries
if (stageHandler.createOnAllSeries) {
ecModel.eachRawSeries(create3)
} else if (seriesType2) {
ecModel.eachRawSeriesByType(seriesType2, create3)
} else if (getTargetSeries) {
getTargetSeries(ecModel, api).each(create3)
}
function create3(seriesModel) {
var pipelineId = seriesModel.uid
var task2 = newSeriesTaskMap.set(
pipelineId,
(oldSeriesTaskMap && oldSeriesTaskMap.get(pipelineId)) ||
createTask({
plan: seriesTaskPlan,
reset: seriesTaskReset,
count: seriesTaskCount,
})
)
task2.context = {
model: seriesModel,
ecModel,
api,
useClearVisual: stageHandler.isVisual && !stageHandler.isLayout,
plan: stageHandler.plan,
reset: stageHandler.reset,
scheduler,
}
scheduler._pipe(seriesModel, task2)
}
}
Scheduler2.prototype._createOverallStageTask = function (
stageHandler,
stageHandlerRecord,
ecModel,
api
) {
var scheduler = this
var overallTask = (stageHandlerRecord.overallTask =
stageHandlerRecord.overallTask ||
createTask({
reset: overallTaskReset,
}))
overallTask.context = {
ecModel,
api,
overallReset: stageHandler.overallReset,
scheduler,
}
var oldAgentStubMap = overallTask.agentStubMap
var newAgentStubMap = (overallTask.agentStubMap = createHashMap())
var seriesType2 = stageHandler.seriesType
var getTargetSeries = stageHandler.getTargetSeries
var overallProgress = true
var shouldOverallTaskDirty = false
var errMsg = ''
assert(!stageHandler.createOnAllSeries, errMsg)
if (seriesType2) {
ecModel.eachRawSeriesByType(seriesType2, createStub)
} else if (getTargetSeries) {
getTargetSeries(ecModel, api).each(createStub)
} else {
overallProgress = false
each$f(ecModel.getSeries(), createStub)
}
function createStub(seriesModel) {
var pipelineId = seriesModel.uid
var stub = newAgentStubMap.set(
pipelineId,
(oldAgentStubMap && oldAgentStubMap.get(pipelineId)) ||
((shouldOverallTaskDirty = true),
createTask({
reset: stubReset,
onDirty: stubOnDirty,
}))
)
stub.context = {
model: seriesModel,
overallProgress,
}
stub.agent = overallTask
stub.__block = overallProgress
scheduler._pipe(seriesModel, stub)
}
if (shouldOverallTaskDirty) {
overallTask.dirty()
}
}
Scheduler2.prototype._pipe = function (seriesModel, task2) {
var pipelineId = seriesModel.uid
var pipeline = this._pipelineMap.get(pipelineId)
!pipeline.head && (pipeline.head = task2)
pipeline.tail && pipeline.tail.pipe(task2)
pipeline.tail = task2
task2.__idxInPipeline = pipeline.count++
task2.__pipeline = pipeline
}
Scheduler2.wrapStageHandler = function (stageHandler, visualType) {
if (isFunction$4(stageHandler)) {
stageHandler = {
overallReset: stageHandler,
seriesType: detectSeriseType(stageHandler),
}
}
stageHandler.uid = getUID('stageHandler')
visualType && (stageHandler.visualType = visualType)
return stageHandler
}
return Scheduler2
})()
function overallTaskReset(context2) {
context2.overallReset(context2.ecModel, context2.api, context2.payload)
}
function stubReset(context2) {
return context2.overallProgress && stubProgress
}
function stubProgress() {
this.agent.dirty()
this.getDownstream().dirty()
}
function stubOnDirty() {
this.agent && this.agent.dirty()
}
function seriesTaskPlan(context2) {
return context2.plan
? context2.plan(
context2.model,
context2.ecModel,
context2.api,
context2.payload
)
: null
}
function seriesTaskReset(context2) {
if (context2.useClearVisual) {
context2.data.clearAllVisual()
}
var resetDefines = (context2.resetDefines = normalizeToArray(
context2.reset(
context2.model,
context2.ecModel,
context2.api,
context2.payload
)
))
return resetDefines.length > 1
? map$1(resetDefines, function (v4, idx) {
return makeSeriesTaskProgress(idx)
})
: singleSeriesTaskProgress
}
var singleSeriesTaskProgress = makeSeriesTaskProgress(0)
function makeSeriesTaskProgress(resetDefineIdx) {
return function (params2, context2) {
var data2 = context2.data
var resetDefine = context2.resetDefines[resetDefineIdx]
if (resetDefine && resetDefine.dataEach) {
for (var i2 = params2.start; i2 < params2.end; i2++) {
resetDefine.dataEach(data2, i2)
}
} else if (resetDefine && resetDefine.progress) {
resetDefine.progress(params2, data2)
}
}
}
function seriesTaskCount(context2) {
return context2.data.count()
}
function detectSeriseType(legacyFunc) {
seriesType = null
try {
legacyFunc(ecModelMock, apiMock)
} catch (e2) {}
return seriesType
}
var ecModelMock = {}
var apiMock = {}
var seriesType
mockMethods(ecModelMock, GlobalModel$1)
mockMethods(apiMock, ExtensionAPI$1)
ecModelMock.eachSeriesByType = ecModelMock.eachRawSeriesByType = function (
type4
) {
seriesType = type4
}
ecModelMock.eachComponent = function (cond) {
if (cond.mainType === 'series' && cond.subType) {
seriesType = cond.subType
}
}
function mockMethods(target2, Clz) {
for (var name_1 in Clz.prototype) {
target2[name_1] = noop
}
}
var Scheduler$1 = Scheduler
var colorAll = [
'#37A2DA',
'#32C5E9',
'#67E0E3',
'#9FE6B8',
'#FFDB5C',
'#ff9f7f',
'#fb7293',
'#E062AE',
'#E690D1',
'#e7bcf3',
'#9d96f5',
'#8378EA',
'#96BFFF',
]
var lightTheme = {
color: colorAll,
colorLayer: [
['#37A2DA', '#ffd85c', '#fd7b5f'],
['#37A2DA', '#67E0E3', '#FFDB5C', '#ff9f7f', '#E062AE', '#9d96f5'],
[
'#37A2DA',
'#32C5E9',
'#9FE6B8',
'#FFDB5C',
'#ff9f7f',
'#fb7293',
'#e7bcf3',
'#8378EA',
'#96BFFF',
],
colorAll,
],
}
var contrastColor = '#B9B8CE'
var backgroundColor = '#100C2A'
var axisCommon = function () {
return {
axisLine: {
lineStyle: {
color: contrastColor,
},
},
splitLine: {
lineStyle: {
color: '#484753',
},
},
splitArea: {
areaStyle: {
color: ['rgba(255,255,255,0.02)', 'rgba(255,255,255,0.05)'],
},
},
minorSplitLine: {
lineStyle: {
color: '#20203B',
},
},
}
}
var colorPalette = [
'#4992ff',
'#7cffb2',
'#fddd60',
'#ff6e76',
'#58d9f9',
'#05c091',
'#ff8a45',
'#8d48e3',
'#dd79ff',
]
var theme = {
darkMode: true,
color: colorPalette,
backgroundColor,
axisPointer: {
lineStyle: {
color: '#817f91',
},
crossStyle: {
color: '#817f91',
},
label: {
color: '#fff',
},
},
legend: {
textStyle: {
color: contrastColor,
},
},
textStyle: {
color: contrastColor,
},
title: {
textStyle: {
color: '#EEF1FA',
},
subtextStyle: {
color: '#B9B8CE',
},
},
toolbox: {
iconStyle: {
borderColor: contrastColor,
},
},
dataZoom: {
borderColor: '#71708A',
textStyle: {
color: contrastColor,
},
brushStyle: {
color: 'rgba(135,163,206,0.3)',
},
handleStyle: {
color: '#353450',
borderColor: '#C5CBE3',
},
moveHandleStyle: {
color: '#B0B6C3',
opacity: 0.3,
},
fillerColor: 'rgba(135,163,206,0.2)',
emphasis: {
handleStyle: {
borderColor: '#91B7F2',
color: '#4D587D',
},
moveHandleStyle: {
color: '#636D9A',
opacity: 0.7,
},
},
dataBackground: {
lineStyle: {
color: '#71708A',
width: 1,
},
areaStyle: {
color: '#71708A',
},
},
selectedDataBackground: {
lineStyle: {
color: '#87A3CE',
},
areaStyle: {
color: '#87A3CE',
},
},
},
visualMap: {
textStyle: {
color: contrastColor,
},
},
timeline: {
lineStyle: {
color: contrastColor,
},
label: {
color: contrastColor,
},
controlStyle: {
color: contrastColor,
borderColor: contrastColor,
},
},
calendar: {
itemStyle: {
color: backgroundColor,
},
dayLabel: {
color: contrastColor,
},
monthLabel: {
color: contrastColor,
},
yearLabel: {
color: contrastColor,
},
},
timeAxis: axisCommon(),
logAxis: axisCommon(),
valueAxis: axisCommon(),
categoryAxis: axisCommon(),
line: {
symbol: 'circle',
},
graph: {
color: colorPalette,
},
gauge: {
title: {
color: contrastColor,
},
axisLine: {
lineStyle: {
color: [[1, 'rgba(207,212,219,0.2)']],
},
},
axisLabel: {
color: contrastColor,
},
detail: {
color: '#EEF1FA',
},
},
candlestick: {
itemStyle: {
color: '#f64e56',
color0: '#54ea92',
borderColor: '#f64e56',
borderColor0: '#54ea92',
},
},
}
theme.categoryAxis.splitLine.show = false
var darkTheme = theme
var ECEventProcessor = (function () {
function ECEventProcessor2() {}
ECEventProcessor2.prototype.normalizeQuery = function (query) {
var cptQuery = {}
var dataQuery = {}
var otherQuery = {}
if (isString$2(query)) {
var condCptType = parseClassType(query)
cptQuery.mainType = condCptType.main || null
cptQuery.subType = condCptType.sub || null
} else {
var suffixes_1 = ['Index', 'Name', 'Id']
var dataKeys_1 = {
name: 1,
dataIndex: 1,
dataType: 1,
}
each$f(query, function (val2, key2) {
var reserved = false
for (var i2 = 0; i2 < suffixes_1.length; i2++) {
var propSuffix = suffixes_1[i2]
var suffixPos = key2.lastIndexOf(propSuffix)
if (suffixPos > 0 && suffixPos === key2.length - propSuffix.length) {
var mainType = key2.slice(0, suffixPos)
if (mainType !== 'data') {
cptQuery.mainType = mainType
cptQuery[propSuffix.toLowerCase()] = val2
reserved = true
}
}
}
if (dataKeys_1.hasOwnProperty(key2)) {
dataQuery[key2] = val2
reserved = true
}
if (!reserved) {
otherQuery[key2] = val2
}
})
}
return {
cptQuery,
dataQuery,
otherQuery,
}
}
ECEventProcessor2.prototype.filter = function (eventType, query) {
var eventInfo = this.eventInfo
if (!eventInfo) {
return true
}
var targetEl = eventInfo.targetEl
var packedEvent = eventInfo.packedEvent
var model = eventInfo.model
var view2 = eventInfo.view
if (!model || !view2) {
return true
}
var cptQuery = query.cptQuery
var dataQuery = query.dataQuery
return (
check2(cptQuery, model, 'mainType') &&
check2(cptQuery, model, 'subType') &&
check2(cptQuery, model, 'index', 'componentIndex') &&
check2(cptQuery, model, 'name') &&
check2(cptQuery, model, 'id') &&
check2(dataQuery, packedEvent, 'name') &&
check2(dataQuery, packedEvent, 'dataIndex') &&
check2(dataQuery, packedEvent, 'dataType') &&
(!view2.filterForExposedEvent ||
view2.filterForExposedEvent(
eventType,
query.otherQuery,
targetEl,
packedEvent
))
)
function check2(query2, host, prop, propOnHost) {
return query2[prop] == null || host[propOnHost || prop] === query2[prop]
}
}
ECEventProcessor2.prototype.afterTrigger = function () {
this.eventInfo = null
}
return ECEventProcessor2
})()
var SYMBOL_PROPS_WITH_CB = [
'symbol',
'symbolSize',
'symbolRotate',
'symbolOffset',
]
var SYMBOL_PROPS = SYMBOL_PROPS_WITH_CB.concat(['symbolKeepAspect'])
var seriesSymbolTask = {
createOnAllSeries: true,
performRawSeries: true,
reset: function (seriesModel, ecModel) {
var data2 = seriesModel.getData()
if (seriesModel.legendIcon) {
data2.setVisual('legendIcon', seriesModel.legendIcon)
}
if (!seriesModel.hasSymbolVisual) {
return
}
var symbolOptions = {}
var symbolOptionsCb = {}
var hasCallback = false
for (var i2 = 0; i2 < SYMBOL_PROPS_WITH_CB.length; i2++) {
var symbolPropName = SYMBOL_PROPS_WITH_CB[i2]
var val2 = seriesModel.get(symbolPropName)
if (isFunction$4(val2)) {
hasCallback = true
symbolOptionsCb[symbolPropName] = val2
} else {
symbolOptions[symbolPropName] = val2
}
}
symbolOptions.symbol = symbolOptions.symbol || seriesModel.defaultSymbol
data2.setVisual(
extend(
{
legendIcon: seriesModel.legendIcon || symbolOptions.symbol,
symbolKeepAspect: seriesModel.get('symbolKeepAspect'),
},
symbolOptions
)
)
if (ecModel.isSeriesFiltered(seriesModel)) {
return
}
var symbolPropsCb = keys$4(symbolOptionsCb)
function dataEach(data3, idx) {
var rawValue = seriesModel.getRawValue(idx)
var params2 = seriesModel.getDataParams(idx)
for (var i3 = 0; i3 < symbolPropsCb.length; i3++) {
var symbolPropName2 = symbolPropsCb[i3]
data3.setItemVisual(
idx,
symbolPropName2,
symbolOptionsCb[symbolPropName2](rawValue, params2)
)
}
}
return {
dataEach: hasCallback ? dataEach : null,
}
},
}
var dataSymbolTask = {
createOnAllSeries: true,
performRawSeries: true,
reset: function (seriesModel, ecModel) {
if (!seriesModel.hasSymbolVisual) {
return
}
if (ecModel.isSeriesFiltered(seriesModel)) {
return
}
var data2 = seriesModel.getData()
function dataEach(data3, idx) {
var itemModel = data3.getItemModel(idx)
for (var i2 = 0; i2 < SYMBOL_PROPS.length; i2++) {
var symbolPropName = SYMBOL_PROPS[i2]
var val2 = itemModel.getShallow(symbolPropName, true)
if (val2 != null) {
data3.setItemVisual(idx, symbolPropName, val2)
}
}
}
return {
dataEach: data2.hasItemOption ? dataEach : null,
}
},
}
function getItemVisualFromData(data2, dataIndex, key2) {
switch (key2) {
case 'color':
var style2 = data2.getItemVisual(dataIndex, 'style')
return style2[data2.getVisual('drawType')]
case 'opacity':
return data2.getItemVisual(dataIndex, 'style').opacity
case 'symbol':
case 'symbolSize':
case 'liftZ':
return data2.getItemVisual(dataIndex, key2)
}
}
function getVisualFromData(data2, key2) {
switch (key2) {
case 'color':
var style2 = data2.getVisual('style')
return style2[data2.getVisual('drawType')]
case 'opacity':
return data2.getVisual('style').opacity
case 'symbol':
case 'symbolSize':
case 'liftZ':
return data2.getVisual(key2)
}
}
function setItemVisualFromData(data2, dataIndex, key2, value2) {
switch (key2) {
case 'color':
var style2 = data2.ensureUniqueItemVisual(dataIndex, 'style')
style2[data2.getVisual('drawType')] = value2
data2.setItemVisual(dataIndex, 'colorFromPalette', false)
break
case 'opacity':
data2.ensureUniqueItemVisual(dataIndex, 'style').opacity = value2
break
case 'symbol':
case 'symbolSize':
case 'liftZ':
data2.setItemVisual(dataIndex, key2, value2)
break
}
}
function createLegacyDataSelectAction(seriesType2, ecRegisterAction) {
function getSeriesIndices(ecModel, payload) {
var seriesIndices = []
ecModel.eachComponent(
{
mainType: 'series',
subType: seriesType2,
query: payload,
},
function (seriesModel) {
seriesIndices.push(seriesModel.seriesIndex)
}
)
return seriesIndices
}
each$f(
[
[seriesType2 + 'ToggleSelect', 'toggleSelect'],
[seriesType2 + 'Select', 'select'],
[seriesType2 + 'UnSelect', 'unselect'],
],
function (eventsMap) {
ecRegisterAction(eventsMap[0], function (payload, ecModel, api) {
payload = extend({}, payload)
api.dispatchAction(
extend(payload, {
type: eventsMap[1],
seriesIndex: getSeriesIndices(ecModel, payload),
})
)
})
}
)
}
function handleSeriesLegacySelectEvents(
type4,
eventPostfix,
ecIns,
ecModel,
payload
) {
var legacyEventName = type4 + eventPostfix
if (!ecIns.isSilent(legacyEventName)) {
ecModel.eachComponent(
{
mainType: 'series',
subType: 'pie',
},
function (seriesModel) {
var seriesIndex = seriesModel.seriesIndex
var selectedMap = seriesModel.option.selectedMap
var selected = payload.selected
for (var i2 = 0; i2 < selected.length; i2++) {
if (selected[i2].seriesIndex === seriesIndex) {
var data2 = seriesModel.getData()
var dataIndex = queryDataIndex(data2, payload.fromActionPayload)
ecIns.trigger(legacyEventName, {
type: legacyEventName,
seriesId: seriesModel.id,
name: isArray$6(dataIndex)
? data2.getName(dataIndex[0])
: data2.getName(dataIndex),
selected: isString$2(selectedMap)
? selectedMap
: extend({}, selectedMap),
})
}
}
}
)
}
}
function handleLegacySelectEvents(messageCenter, ecIns, api) {
messageCenter.on('selectchanged', function (params2) {
var ecModel = api.getModel()
if (params2.isFromClick) {
handleSeriesLegacySelectEvents(
'map',
'selectchanged',
ecIns,
ecModel,
params2
)
handleSeriesLegacySelectEvents(
'pie',
'selectchanged',
ecIns,
ecModel,
params2
)
} else if (params2.fromAction === 'select') {
handleSeriesLegacySelectEvents('map', 'selected', ecIns, ecModel, params2)
handleSeriesLegacySelectEvents('pie', 'selected', ecIns, ecModel, params2)
} else if (params2.fromAction === 'unselect') {
handleSeriesLegacySelectEvents(
'map',
'unselected',
ecIns,
ecModel,
params2
)
handleSeriesLegacySelectEvents(
'pie',
'unselected',
ecIns,
ecModel,
params2
)
}
})
}
function findEventDispatcher(target2, det, returnFirstMatch) {
var found
while (target2) {
if (det(target2)) {
found = target2
if (returnFirstMatch) {
break
}
}
target2 = target2.__hostTarget || target2.parent
}
return found
}
var wmUniqueIndex = Math.round(Math.random() * 9)
var supportDefineProperty = typeof Object.defineProperty === 'function'
var WeakMap$3 = (function () {
function WeakMap2() {
this._id = '__ec_inner_' + wmUniqueIndex++
}
WeakMap2.prototype.get = function (key2) {
return this._guard(key2)[this._id]
}
WeakMap2.prototype.set = function (key2, value2) {
var target2 = this._guard(key2)
if (supportDefineProperty) {
Object.defineProperty(target2, this._id, {
value: value2,
enumerable: false,
configurable: true,
})
} else {
target2[this._id] = value2
}
return this
}
WeakMap2.prototype['delete'] = function (key2) {
if (this.has(key2)) {
delete this._guard(key2)[this._id]
return true
}
return false
}
WeakMap2.prototype.has = function (key2) {
return !!this._guard(key2)[this._id]
}
WeakMap2.prototype._guard = function (key2) {
if (key2 !== Object(key2)) {
throw TypeError('Value of WeakMap is not a non-null object.')
}
return key2
}
return WeakMap2
})()
var WeakMap$4 = WeakMap$3
var Triangle = Path$1.extend({
type: 'triangle',
shape: {
cx: 0,
cy: 0,
width: 0,
height: 0,
},
buildPath: function (path, shape) {
var cx = shape.cx
var cy = shape.cy
var width = shape.width / 2
var height = shape.height / 2
path.moveTo(cx, cy - height)
path.lineTo(cx + width, cy + height)
path.lineTo(cx - width, cy + height)
path.closePath()
},
})
var Diamond = Path$1.extend({
type: 'diamond',
shape: {
cx: 0,
cy: 0,
width: 0,
height: 0,
},
buildPath: function (path, shape) {
var cx = shape.cx
var cy = shape.cy
var width = shape.width / 2
var height = shape.height / 2
path.moveTo(cx, cy - height)
path.lineTo(cx + width, cy)
path.lineTo(cx, cy + height)
path.lineTo(cx - width, cy)
path.closePath()
},
})
var Pin = Path$1.extend({
type: 'pin',
shape: {
x: 0,
y: 0,
width: 0,
height: 0,
},
buildPath: function (path, shape) {
var x2 = shape.x
var y2 = shape.y
var w2 = (shape.width / 5) * 3
var h2 = Math.max(w2, shape.height)
var r2 = w2 / 2
var dy = (r2 * r2) / (h2 - r2)
var cy = y2 - h2 + r2 + dy
var angle2 = Math.asin(dy / r2)
var dx = Math.cos(angle2) * r2
var tanX = Math.sin(angle2)
var tanY = Math.cos(angle2)
var cpLen = r2 * 0.6
var cpLen2 = r2 * 0.7
path.moveTo(x2 - dx, cy + dy)
path.arc(x2, cy, r2, Math.PI - angle2, Math.PI * 2 + angle2)
path.bezierCurveTo(
x2 + dx - tanX * cpLen,
cy + dy + tanY * cpLen,
x2,
y2 - cpLen2,
x2,
y2
)
path.bezierCurveTo(
x2,
y2 - cpLen2,
x2 - dx + tanX * cpLen,
cy + dy + tanY * cpLen,
x2 - dx,
cy + dy
)
path.closePath()
},
})
var Arrow = Path$1.extend({
type: 'arrow',
shape: {
x: 0,
y: 0,
width: 0,
height: 0,
},
buildPath: function (ctx, shape) {
var height = shape.height
var width = shape.width
var x2 = shape.x
var y2 = shape.y
var dx = (width / 3) * 2
ctx.moveTo(x2, y2)
ctx.lineTo(x2 + dx, y2 + height)
ctx.lineTo(x2, y2 + (height / 4) * 3)
ctx.lineTo(x2 - dx, y2 + height)
ctx.lineTo(x2, y2)
ctx.closePath()
},
})
var symbolCtors = {
line: Line$4,
rect: Rect$4,
roundRect: Rect$4,
square: Rect$4,
circle: Circle$2,
diamond: Diamond,
pin: Pin,
arrow: Arrow,
triangle: Triangle,
}
var symbolShapeMakers = {
line: function (x2, y2, w2, h2, shape) {
shape.x1 = x2
shape.y1 = y2 + h2 / 2
shape.x2 = x2 + w2
shape.y2 = y2 + h2 / 2
},
rect: function (x2, y2, w2, h2, shape) {
shape.x = x2
shape.y = y2
shape.width = w2
shape.height = h2
},
roundRect: function (x2, y2, w2, h2, shape) {
shape.x = x2
shape.y = y2
shape.width = w2
shape.height = h2
shape.r = Math.min(w2, h2) / 4
},
square: function (x2, y2, w2, h2, shape) {
var size = Math.min(w2, h2)
shape.x = x2
shape.y = y2
shape.width = size
shape.height = size
},
circle: function (x2, y2, w2, h2, shape) {
shape.cx = x2 + w2 / 2
shape.cy = y2 + h2 / 2
shape.r = Math.min(w2, h2) / 2
},
diamond: function (x2, y2, w2, h2, shape) {
shape.cx = x2 + w2 / 2
shape.cy = y2 + h2 / 2
shape.width = w2
shape.height = h2
},
pin: function (x2, y2, w2, h2, shape) {
shape.x = x2 + w2 / 2
shape.y = y2 + h2 / 2
shape.width = w2
shape.height = h2
},
arrow: function (x2, y2, w2, h2, shape) {
shape.x = x2 + w2 / 2
shape.y = y2 + h2 / 2
shape.width = w2
shape.height = h2
},
triangle: function (x2, y2, w2, h2, shape) {
shape.cx = x2 + w2 / 2
shape.cy = y2 + h2 / 2
shape.width = w2
shape.height = h2
},
}
var symbolBuildProxies = {}
each$f(symbolCtors, function (Ctor, name2) {
symbolBuildProxies[name2] = new Ctor()
})
var SymbolClz$1 = Path$1.extend({
type: 'symbol',
shape: {
symbolType: '',
x: 0,
y: 0,
width: 0,
height: 0,
},
calculateTextPosition: function (out2, config2, rect) {
var res = calculateTextPosition(out2, config2, rect)
var shape = this.shape
if (shape && shape.symbolType === 'pin' && config2.position === 'inside') {
res.y = rect.y + rect.height * 0.4
}
return res
},
buildPath: function (ctx, shape, inBundle) {
var symbolType = shape.symbolType
if (symbolType !== 'none') {
var proxySymbol = symbolBuildProxies[symbolType]
if (!proxySymbol) {
symbolType = 'rect'
proxySymbol = symbolBuildProxies[symbolType]
}
symbolShapeMakers[symbolType](
shape.x,
shape.y,
shape.width,
shape.height,
proxySymbol.shape
)
proxySymbol.buildPath(ctx, proxySymbol.shape, inBundle)
}
},
})
function symbolPathSetColor(color2, innerColor2) {
if (this.type !== 'image') {
var symbolStyle = this.style
if (this.__isEmptyBrush) {
symbolStyle.stroke = color2
symbolStyle.fill = innerColor2 || '#fff'
symbolStyle.lineWidth = 2
} else if (this.shape.symbolType === 'line') {
symbolStyle.stroke = color2
} else {
symbolStyle.fill = color2
}
this.markRedraw()
}
}
function createSymbol$1(symbolType, x2, y2, w2, h2, color2, keepAspect) {
var isEmpty2 = symbolType.indexOf('empty') === 0
if (isEmpty2) {
symbolType = symbolType.substr(5, 1).toLowerCase() + symbolType.substr(6)
}
var symbolPath
if (symbolType.indexOf('image://') === 0) {
symbolPath = makeImage(
symbolType.slice(8),
new BoundingRect$1(x2, y2, w2, h2),
keepAspect ? 'center' : 'cover'
)
} else if (symbolType.indexOf('path://') === 0) {
symbolPath = makePath(
symbolType.slice(7),
{},
new BoundingRect$1(x2, y2, w2, h2),
keepAspect ? 'center' : 'cover'
)
} else {
symbolPath = new SymbolClz$1({
shape: {
symbolType,
x: x2,
y: y2,
width: w2,
height: h2,
},
})
}
symbolPath.__isEmptyBrush = isEmpty2
symbolPath.setColor = symbolPathSetColor
if (color2) {
symbolPath.setColor(color2)
}
return symbolPath
}
function normalizeSymbolSize(symbolSize) {
if (!isArray$6(symbolSize)) {
symbolSize = [+symbolSize, +symbolSize]
}
return [symbolSize[0] || 0, symbolSize[1] || 0]
}
function normalizeSymbolOffset(symbolOffset, symbolSize) {
if (symbolOffset == null) {
return
}
if (!isArray$6(symbolOffset)) {
symbolOffset = [symbolOffset, symbolOffset]
}
return [
parsePercent(symbolOffset[0], symbolSize[0]) || 0,
parsePercent(retrieve2(symbolOffset[1], symbolOffset[0]), symbolSize[1]) ||
0,
]
}
function isSafeNum(num2) {
return isFinite(num2)
}
function createLinearGradient(ctx, obj, rect) {
var x2 = obj.x == null ? 0 : obj.x
var x22 = obj.x2 == null ? 1 : obj.x2
var y2 = obj.y == null ? 0 : obj.y
var y22 = obj.y2 == null ? 0 : obj.y2
if (!obj.global) {
x2 = x2 * rect.width + rect.x
x22 = x22 * rect.width + rect.x
y2 = y2 * rect.height + rect.y
y22 = y22 * rect.height + rect.y
}
x2 = isSafeNum(x2) ? x2 : 0
x22 = isSafeNum(x22) ? x22 : 1
y2 = isSafeNum(y2) ? y2 : 0
y22 = isSafeNum(y22) ? y22 : 0
var canvasGradient = ctx.createLinearGradient(x2, y2, x22, y22)
return canvasGradient
}
function createRadialGradient(ctx, obj, rect) {
var width = rect.width
var height = rect.height
var min3 = Math.min(width, height)
var x2 = obj.x == null ? 0.5 : obj.x
var y2 = obj.y == null ? 0.5 : obj.y
var r2 = obj.r == null ? 0.5 : obj.r
if (!obj.global) {
x2 = x2 * width + rect.x
y2 = y2 * height + rect.y
r2 = r2 * min3
}
x2 = isSafeNum(x2) ? x2 : 0.5
y2 = isSafeNum(y2) ? y2 : 0.5
r2 = r2 >= 0 && isSafeNum(r2) ? r2 : 0.5
var canvasGradient = ctx.createRadialGradient(x2, y2, 0, x2, y2, r2)
return canvasGradient
}
function getCanvasGradient(ctx, obj, rect) {
var canvasGradient =
obj.type === 'radial'
? createRadialGradient(ctx, obj, rect)
: createLinearGradient(ctx, obj, rect)
var colorStops = obj.colorStops
for (var i2 = 0; i2 < colorStops.length; i2++) {
canvasGradient.addColorStop(colorStops[i2].offset, colorStops[i2].color)
}
return canvasGradient
}
function isClipPathChanged(clipPaths, prevClipPaths) {
if (clipPaths === prevClipPaths || (!clipPaths && !prevClipPaths)) {
return false
}
if (
!clipPaths ||
!prevClipPaths ||
clipPaths.length !== prevClipPaths.length
) {
return true
}
for (var i2 = 0; i2 < clipPaths.length; i2++) {
if (clipPaths[i2] !== prevClipPaths[i2]) {
return true
}
}
return false
}
function parseInt10(val2) {
return parseInt(val2, 10)
}
function getSize$1(root2, whIdx, opts) {
var wh = ['width', 'height'][whIdx]
var cwh = ['clientWidth', 'clientHeight'][whIdx]
var plt = ['paddingLeft', 'paddingTop'][whIdx]
var prb = ['paddingRight', 'paddingBottom'][whIdx]
if (opts[wh] != null && opts[wh] !== 'auto') {
return parseFloat(opts[wh])
}
var stl = document.defaultView.getComputedStyle(root2)
return (
((root2[cwh] || parseInt10(stl[wh]) || parseInt10(root2.style[wh])) -
(parseInt10(stl[plt]) || 0) -
(parseInt10(stl[prb]) || 0)) |
0
)
}
function normalizeLineDash(lineType, lineWidth) {
if (!lineType || lineType === 'solid' || !(lineWidth > 0)) {
return null
}
return lineType === 'dashed'
? [4 * lineWidth, 2 * lineWidth]
: lineType === 'dotted'
? [lineWidth]
: isNumber$2(lineType)
? [lineType]
: isArray$6(lineType)
? lineType
: null
}
function getLineDash(el2) {
var style2 = el2.style
var lineDash =
style2.lineDash &&
style2.lineWidth > 0 &&
normalizeLineDash(style2.lineDash, style2.lineWidth)
var lineDashOffset = style2.lineDashOffset
if (lineDash) {
var lineScale_1 =
style2.strokeNoScale && el2.getLineScale ? el2.getLineScale() : 1
if (lineScale_1 && lineScale_1 !== 1) {
lineDash = map$1(lineDash, function (rawVal) {
return rawVal / lineScale_1
})
lineDashOffset /= lineScale_1
}
}
return [lineDash, lineDashOffset]
}
var pathProxyForDraw = new PathProxy$1(true)
function styleHasStroke(style2) {
var stroke = style2.stroke
return !(stroke == null || stroke === 'none' || !(style2.lineWidth > 0))
}
function isValidStrokeFillStyle(strokeOrFill) {
return typeof strokeOrFill === 'string' && strokeOrFill !== 'none'
}
function styleHasFill(style2) {
var fill = style2.fill
return fill != null && fill !== 'none'
}
function doFillPath(ctx, style2) {
if (style2.fillOpacity != null && style2.fillOpacity !== 1) {
var originalGlobalAlpha = ctx.globalAlpha
ctx.globalAlpha = style2.fillOpacity * style2.opacity
ctx.fill()
ctx.globalAlpha = originalGlobalAlpha
} else {
ctx.fill()
}
}
function doStrokePath(ctx, style2) {
if (style2.strokeOpacity != null && style2.strokeOpacity !== 1) {
var originalGlobalAlpha = ctx.globalAlpha
ctx.globalAlpha = style2.strokeOpacity * style2.opacity
ctx.stroke()
ctx.globalAlpha = originalGlobalAlpha
} else {
ctx.stroke()
}
}
function createCanvasPattern(ctx, pattern4, el2) {
var image2 = createOrUpdateImage(pattern4.image, pattern4.__image, el2)
if (isImageReady(image2)) {
var canvasPattern = ctx.createPattern(image2, pattern4.repeat || 'repeat')
if (
typeof DOMMatrix === 'function' &&
canvasPattern &&
canvasPattern.setTransform
) {
var matrix2 = new DOMMatrix()
matrix2.translateSelf(pattern4.x || 0, pattern4.y || 0)
matrix2.rotateSelf(0, 0, (pattern4.rotation || 0) * RADIAN_TO_DEGREE)
matrix2.scaleSelf(pattern4.scaleX || 1, pattern4.scaleY || 1)
canvasPattern.setTransform(matrix2)
}
return canvasPattern
}
}
function brushPath(ctx, el2, style2, inBatch) {
var _a2
var hasStroke = styleHasStroke(style2)
var hasFill = styleHasFill(style2)
var strokePercent = style2.strokePercent
var strokePart = strokePercent < 1
var firstDraw = !el2.path
if ((!el2.silent || strokePart) && firstDraw) {
el2.createPathProxy()
}
var path = el2.path || pathProxyForDraw
var dirtyFlag = el2.__dirty
if (!inBatch) {
var fill = style2.fill
var stroke = style2.stroke
var hasFillGradient = hasFill && !!fill.colorStops
var hasStrokeGradient = hasStroke && !!stroke.colorStops
var hasFillPattern = hasFill && !!fill.image
var hasStrokePattern = hasStroke && !!stroke.image
var fillGradient = void 0
var strokeGradient = void 0
var fillPattern = void 0
var strokePattern = void 0
var rect = void 0
if (hasFillGradient || hasStrokeGradient) {
rect = el2.getBoundingRect()
}
if (hasFillGradient) {
fillGradient = dirtyFlag
? getCanvasGradient(ctx, fill, rect)
: el2.__canvasFillGradient
el2.__canvasFillGradient = fillGradient
}
if (hasStrokeGradient) {
strokeGradient = dirtyFlag
? getCanvasGradient(ctx, stroke, rect)
: el2.__canvasStrokeGradient
el2.__canvasStrokeGradient = strokeGradient
}
if (hasFillPattern) {
fillPattern =
dirtyFlag || !el2.__canvasFillPattern
? createCanvasPattern(ctx, fill, el2)
: el2.__canvasFillPattern
el2.__canvasFillPattern = fillPattern
}
if (hasStrokePattern) {
strokePattern =
dirtyFlag || !el2.__canvasStrokePattern
? createCanvasPattern(ctx, stroke, el2)
: el2.__canvasStrokePattern
el2.__canvasStrokePattern = fillPattern
}
if (hasFillGradient) {
ctx.fillStyle = fillGradient
} else if (hasFillPattern) {
if (fillPattern) {
ctx.fillStyle = fillPattern
} else {
hasFill = false
}
}
if (hasStrokeGradient) {
ctx.strokeStyle = strokeGradient
} else if (hasStrokePattern) {
if (strokePattern) {
ctx.strokeStyle = strokePattern
} else {
hasStroke = false
}
}
}
var scale2 = el2.getGlobalScale()
path.setScale(scale2[0], scale2[1], el2.segmentIgnoreThreshold)
var lineDash
var lineDashOffset
if (ctx.setLineDash && style2.lineDash) {
;(_a2 = getLineDash(el2)), (lineDash = _a2[0]), (lineDashOffset = _a2[1])
}
var needsRebuild = true
if (firstDraw || dirtyFlag & SHAPE_CHANGED_BIT) {
path.setDPR(ctx.dpr)
if (strokePart) {
path.setContext(null)
} else {
path.setContext(ctx)
needsRebuild = false
}
path.reset()
el2.buildPath(path, el2.shape, inBatch)
path.toStatic()
el2.pathUpdated()
}
if (needsRebuild) {
path.rebuildPath(ctx, strokePart ? strokePercent : 1)
}
if (lineDash) {
ctx.setLineDash(lineDash)
ctx.lineDashOffset = lineDashOffset
}
if (!inBatch) {
if (style2.strokeFirst) {
if (hasStroke) {
doStrokePath(ctx, style2)
}
if (hasFill) {
doFillPath(ctx, style2)
}
} else {
if (hasFill) {
doFillPath(ctx, style2)
}
if (hasStroke) {
doStrokePath(ctx, style2)
}
}
}
if (lineDash) {
ctx.setLineDash([])
}
}
function brushImage(ctx, el2, style2) {
var image2 = (el2.__image = createOrUpdateImage(
style2.image,
el2.__image,
el2,
el2.onload
))
if (!image2 || !isImageReady(image2)) {
return
}
var x2 = style2.x || 0
var y2 = style2.y || 0
var width = el2.getWidth()
var height = el2.getHeight()
var aspect = image2.width / image2.height
if (width == null && height != null) {
width = height * aspect
} else if (height == null && width != null) {
height = width / aspect
} else if (width == null && height == null) {
width = image2.width
height = image2.height
}
if (style2.sWidth && style2.sHeight) {
var sx = style2.sx || 0
var sy = style2.sy || 0
ctx.drawImage(
image2,
sx,
sy,
style2.sWidth,
style2.sHeight,
x2,
y2,
width,
height
)
} else if (style2.sx && style2.sy) {
var sx = style2.sx
var sy = style2.sy
var sWidth = width - sx
var sHeight = height - sy
ctx.drawImage(image2, sx, sy, sWidth, sHeight, x2, y2, width, height)
} else {
ctx.drawImage(image2, x2, y2, width, height)
}
}
function brushText(ctx, el2, style2) {
var _a2
var text2 = style2.text
text2 != null && (text2 += '')
if (text2) {
ctx.font = style2.font || DEFAULT_FONT
ctx.textAlign = style2.textAlign
ctx.textBaseline = style2.textBaseline
var lineDash = void 0
var lineDashOffset = void 0
if (ctx.setLineDash && style2.lineDash) {
;(_a2 = getLineDash(el2)), (lineDash = _a2[0]), (lineDashOffset = _a2[1])
}
if (lineDash) {
ctx.setLineDash(lineDash)
ctx.lineDashOffset = lineDashOffset
}
if (style2.strokeFirst) {
if (styleHasStroke(style2)) {
ctx.strokeText(text2, style2.x, style2.y)
}
if (styleHasFill(style2)) {
ctx.fillText(text2, style2.x, style2.y)
}
} else {
if (styleHasFill(style2)) {
ctx.fillText(text2, style2.x, style2.y)
}
if (styleHasStroke(style2)) {
ctx.strokeText(text2, style2.x, style2.y)
}
}
if (lineDash) {
ctx.setLineDash([])
}
}
}
var SHADOW_NUMBER_PROPS = ['shadowBlur', 'shadowOffsetX', 'shadowOffsetY']
var STROKE_PROPS = [
['lineCap', 'butt'],
['lineJoin', 'miter'],
['miterLimit', 10],
]
function bindCommonProps(ctx, style2, prevStyle, forceSetAll, scope) {
var styleChanged = false
if (!forceSetAll) {
prevStyle = prevStyle || {}
if (style2 === prevStyle) {
return false
}
}
if (forceSetAll || style2.opacity !== prevStyle.opacity) {
flushPathDrawn(ctx, scope)
styleChanged = true
var opacity2 = Math.max(Math.min(style2.opacity, 1), 0)
ctx.globalAlpha = isNaN(opacity2) ? DEFAULT_COMMON_STYLE.opacity : opacity2
}
if (forceSetAll || style2.blend !== prevStyle.blend) {
if (!styleChanged) {
flushPathDrawn(ctx, scope)
styleChanged = true
}
ctx.globalCompositeOperation = style2.blend || DEFAULT_COMMON_STYLE.blend
}
for (var i2 = 0; i2 < SHADOW_NUMBER_PROPS.length; i2++) {
var propName = SHADOW_NUMBER_PROPS[i2]
if (forceSetAll || style2[propName] !== prevStyle[propName]) {
if (!styleChanged) {
flushPathDrawn(ctx, scope)
styleChanged = true
}
ctx[propName] = ctx.dpr * (style2[propName] || 0)
}
}
if (forceSetAll || style2.shadowColor !== prevStyle.shadowColor) {
if (!styleChanged) {
flushPathDrawn(ctx, scope)
styleChanged = true
}
ctx.shadowColor = style2.shadowColor || DEFAULT_COMMON_STYLE.shadowColor
}
return styleChanged
}
function bindPathAndTextCommonStyle(ctx, el2, prevEl, forceSetAll, scope) {
var style2 = getStyle(el2, scope.inHover)
var prevStyle = forceSetAll
? null
: (prevEl && getStyle(prevEl, scope.inHover)) || {}
if (style2 === prevStyle) {
return false
}
var styleChanged = bindCommonProps(ctx, style2, prevStyle, forceSetAll, scope)
if (forceSetAll || style2.fill !== prevStyle.fill) {
if (!styleChanged) {
flushPathDrawn(ctx, scope)
styleChanged = true
}
isValidStrokeFillStyle(style2.fill) && (ctx.fillStyle = style2.fill)
}
if (forceSetAll || style2.stroke !== prevStyle.stroke) {
if (!styleChanged) {
flushPathDrawn(ctx, scope)
styleChanged = true
}
isValidStrokeFillStyle(style2.stroke) && (ctx.strokeStyle = style2.stroke)
}
if (forceSetAll || style2.opacity !== prevStyle.opacity) {
if (!styleChanged) {
flushPathDrawn(ctx, scope)
styleChanged = true
}
ctx.globalAlpha = style2.opacity == null ? 1 : style2.opacity
}
if (el2.hasStroke()) {
var lineWidth = style2.lineWidth
var newLineWidth =
lineWidth /
(style2.strokeNoScale && el2.getLineScale ? el2.getLineScale() : 1)
if (ctx.lineWidth !== newLineWidth) {
if (!styleChanged) {
flushPathDrawn(ctx, scope)
styleChanged = true
}
ctx.lineWidth = newLineWidth
}
}
for (var i2 = 0; i2 < STROKE_PROPS.length; i2++) {
var prop = STROKE_PROPS[i2]
var propName = prop[0]
if (forceSetAll || style2[propName] !== prevStyle[propName]) {
if (!styleChanged) {
flushPathDrawn(ctx, scope)
styleChanged = true
}
ctx[propName] = style2[propName] || prop[1]
}
}
return styleChanged
}
function bindImageStyle(ctx, el2, prevEl, forceSetAll, scope) {
return bindCommonProps(
ctx,
getStyle(el2, scope.inHover),
prevEl && getStyle(prevEl, scope.inHover),
forceSetAll,
scope
)
}
function setContextTransform(ctx, el2) {
var m2 = el2.transform
var dpr2 = ctx.dpr || 1
if (m2) {
ctx.setTransform(
dpr2 * m2[0],
dpr2 * m2[1],
dpr2 * m2[2],
dpr2 * m2[3],
dpr2 * m2[4],
dpr2 * m2[5]
)
} else {
ctx.setTransform(dpr2, 0, 0, dpr2, 0, 0)
}
}
function updateClipStatus(clipPaths, ctx, scope) {
var allClipped = false
for (var i2 = 0; i2 < clipPaths.length; i2++) {
var clipPath = clipPaths[i2]
allClipped = allClipped || clipPath.isZeroArea()
setContextTransform(ctx, clipPath)
ctx.beginPath()
clipPath.buildPath(ctx, clipPath.shape)
ctx.clip()
}
scope.allClipped = allClipped
}
function isTransformChanged(m0, m1) {
if (m0 && m1) {
return (
m0[0] !== m1[0] ||
m0[1] !== m1[1] ||
m0[2] !== m1[2] ||
m0[3] !== m1[3] ||
m0[4] !== m1[4] ||
m0[5] !== m1[5]
)
} else if (!m0 && !m1) {
return false
}
return true
}
var DRAW_TYPE_PATH = 1
var DRAW_TYPE_IMAGE = 2
var DRAW_TYPE_TEXT = 3
var DRAW_TYPE_INCREMENTAL = 4
function canPathBatch(style2) {
var hasFill = styleHasFill(style2)
var hasStroke = styleHasStroke(style2)
return !(
style2.lineDash ||
!(+hasFill ^ +hasStroke) ||
(hasFill && typeof style2.fill !== 'string') ||
(hasStroke && typeof style2.stroke !== 'string') ||
style2.strokePercent < 1 ||
style2.strokeOpacity < 1 ||
style2.fillOpacity < 1
)
}
function flushPathDrawn(ctx, scope) {
scope.batchFill && ctx.fill()
scope.batchStroke && ctx.stroke()
scope.batchFill = ''
scope.batchStroke = ''
}
function getStyle(el2, inHover) {
return inHover ? el2.__hoverStyle || el2.style : el2.style
}
function brushSingle(ctx, el2) {
brush$1(ctx, el2, { inHover: false, viewWidth: 0, viewHeight: 0 }, true)
}
function brush$1(ctx, el2, scope, isLast) {
var m2 = el2.transform
if (!el2.shouldBePainted(scope.viewWidth, scope.viewHeight, false, false)) {
el2.__dirty &= ~REDRAW_BIT
el2.__isRendered = false
return
}
var clipPaths = el2.__clipPaths
var prevElClipPaths = scope.prevElClipPaths
var forceSetTransform = false
var forceSetStyle = false
if (!prevElClipPaths || isClipPathChanged(clipPaths, prevElClipPaths)) {
if (prevElClipPaths && prevElClipPaths.length) {
flushPathDrawn(ctx, scope)
ctx.restore()
forceSetStyle = forceSetTransform = true
scope.prevElClipPaths = null
scope.allClipped = false
scope.prevEl = null
}
if (clipPaths && clipPaths.length) {
flushPathDrawn(ctx, scope)
ctx.save()
updateClipStatus(clipPaths, ctx, scope)
forceSetTransform = true
}
scope.prevElClipPaths = clipPaths
}
if (scope.allClipped) {
el2.__isRendered = false
return
}
el2.beforeBrush && el2.beforeBrush()
el2.innerBeforeBrush()
var prevEl = scope.prevEl
if (!prevEl) {
forceSetStyle = forceSetTransform = true
}
var canBatchPath =
el2 instanceof Path$1 && el2.autoBatch && canPathBatch(el2.style)
if (forceSetTransform || isTransformChanged(m2, prevEl.transform)) {
flushPathDrawn(ctx, scope)
setContextTransform(ctx, el2)
} else if (!canBatchPath) {
flushPathDrawn(ctx, scope)
}
var style2 = getStyle(el2, scope.inHover)
if (el2 instanceof Path$1) {
if (scope.lastDrawType !== DRAW_TYPE_PATH) {
forceSetStyle = true
scope.lastDrawType = DRAW_TYPE_PATH
}
bindPathAndTextCommonStyle(ctx, el2, prevEl, forceSetStyle, scope)
if (!canBatchPath || (!scope.batchFill && !scope.batchStroke)) {
ctx.beginPath()
}
brushPath(ctx, el2, style2, canBatchPath)
if (canBatchPath) {
scope.batchFill = style2.fill || ''
scope.batchStroke = style2.stroke || ''
}
} else {
if (el2 instanceof TSpan$1) {
if (scope.lastDrawType !== DRAW_TYPE_TEXT) {
forceSetStyle = true
scope.lastDrawType = DRAW_TYPE_TEXT
}
bindPathAndTextCommonStyle(ctx, el2, prevEl, forceSetStyle, scope)
brushText(ctx, el2, style2)
} else if (el2 instanceof ZRImage$1) {
if (scope.lastDrawType !== DRAW_TYPE_IMAGE) {
forceSetStyle = true
scope.lastDrawType = DRAW_TYPE_IMAGE
}
bindImageStyle(ctx, el2, prevEl, forceSetStyle, scope)
brushImage(ctx, el2, style2)
} else if (el2.getTemporalDisplayables) {
if (scope.lastDrawType !== DRAW_TYPE_INCREMENTAL) {
forceSetStyle = true
scope.lastDrawType = DRAW_TYPE_INCREMENTAL
}
brushIncremental(ctx, el2, scope)
}
}
if (canBatchPath && isLast) {
flushPathDrawn(ctx, scope)
}
el2.innerAfterBrush()
el2.afterBrush && el2.afterBrush()
scope.prevEl = el2
el2.__dirty = 0
el2.__isRendered = true
}
function brushIncremental(ctx, el2, scope) {
var displayables = el2.getDisplayables()
var temporalDisplayables = el2.getTemporalDisplayables()
ctx.save()
var innerScope = {
prevElClipPaths: null,
prevEl: null,
allClipped: false,
viewWidth: scope.viewWidth,
viewHeight: scope.viewHeight,
inHover: scope.inHover,
}
var i2
var len2
for (i2 = el2.getCursor(), len2 = displayables.length; i2 < len2; i2++) {
var displayable = displayables[i2]
displayable.beforeBrush && displayable.beforeBrush()
displayable.innerBeforeBrush()
brush$1(ctx, displayable, innerScope, i2 === len2 - 1)
displayable.innerAfterBrush()
displayable.afterBrush && displayable.afterBrush()
innerScope.prevEl = displayable
}
for (var i_1 = 0, len_1 = temporalDisplayables.length; i_1 < len_1; i_1++) {
var displayable = temporalDisplayables[i_1]
displayable.beforeBrush && displayable.beforeBrush()
displayable.innerBeforeBrush()
brush$1(ctx, displayable, innerScope, i_1 === len_1 - 1)
displayable.innerAfterBrush()
displayable.afterBrush && displayable.afterBrush()
innerScope.prevEl = displayable
}
el2.clearTemporalDisplayables()
el2.notClear = true
ctx.restore()
}
var decalMap = new WeakMap$4()
var decalCache = new LRU$1(100)
var decalKeys = [
'symbol',
'symbolSize',
'symbolKeepAspect',
'color',
'backgroundColor',
'dashArrayX',
'dashArrayY',
'maxTileWidth',
'maxTileHeight',
]
function createOrUpdatePatternFromDecal(decalObject, api) {
if (decalObject === 'none') {
return null
}
var dpr2 = api.getDevicePixelRatio()
var zr = api.getZr()
var isSVG2 = zr.painter.type === 'svg'
if (decalObject.dirty) {
decalMap['delete'](decalObject)
}
var oldPattern = decalMap.get(decalObject)
if (oldPattern) {
return oldPattern
}
var decalOpt = defaults(decalObject, {
symbol: 'rect',
symbolSize: 1,
symbolKeepAspect: true,
color: 'rgba(0, 0, 0, 0.2)',
backgroundColor: null,
dashArrayX: 5,
dashArrayY: 5,
rotation: 0,
maxTileWidth: 512,
maxTileHeight: 512,
})
if (decalOpt.backgroundColor === 'none') {
decalOpt.backgroundColor = null
}
var pattern4 = {
repeat: 'repeat',
}
setPatternnSource(pattern4)
pattern4.rotation = decalOpt.rotation
pattern4.scaleX = pattern4.scaleY = isSVG2 ? 1 : 1 / dpr2
decalMap.set(decalObject, pattern4)
decalObject.dirty = false
return pattern4
function setPatternnSource(pattern5) {
var keys3 = [dpr2]
var isValidKey = true
for (var i2 = 0; i2 < decalKeys.length; ++i2) {
var value2 = decalOpt[decalKeys[i2]]
if (
value2 != null &&
!isArray$6(value2) &&
!isString$2(value2) &&
!isNumber$2(value2) &&
typeof value2 !== 'boolean'
) {
isValidKey = false
break
}
keys3.push(value2)
}
var cacheKey
if (isValidKey) {
cacheKey = keys3.join(',') + (isSVG2 ? '-svg' : '')
var cache2 = decalCache.get(cacheKey)
if (cache2) {
isSVG2 ? (pattern5.svgElement = cache2) : (pattern5.image = cache2)
}
}
var dashArrayX = normalizeDashArrayX(decalOpt.dashArrayX)
var dashArrayY = normalizeDashArrayY(decalOpt.dashArrayY)
var symbolArray = normalizeSymbolArray(decalOpt.symbol)
var lineBlockLengthsX = getLineBlockLengthX(dashArrayX)
var lineBlockLengthY = getLineBlockLengthY(dashArrayY)
var canvas = !isSVG2 && platformApi.createCanvas()
var svgRoot = isSVG2 && {
tag: 'g',
attrs: {},
key: 'dcl',
children: [],
}
var pSize = getPatternSize()
var ctx
if (canvas) {
canvas.width = pSize.width * dpr2
canvas.height = pSize.height * dpr2
ctx = canvas.getContext('2d')
}
brushDecal()
if (isValidKey) {
decalCache.put(cacheKey, canvas || svgRoot)
}
pattern5.image = canvas
pattern5.svgElement = svgRoot
pattern5.svgWidth = pSize.width
pattern5.svgHeight = pSize.height
function getPatternSize() {
var width = 1
for (var i3 = 0, xlen = lineBlockLengthsX.length; i3 < xlen; ++i3) {
width = getLeastCommonMultiple(width, lineBlockLengthsX[i3])
}
var symbolRepeats = 1
for (var i3 = 0, xlen = symbolArray.length; i3 < xlen; ++i3) {
symbolRepeats = getLeastCommonMultiple(
symbolRepeats,
symbolArray[i3].length
)
}
width *= symbolRepeats
var height =
lineBlockLengthY * lineBlockLengthsX.length * symbolArray.length
return {
width: Math.max(1, Math.min(width, decalOpt.maxTileWidth)),
height: Math.max(1, Math.min(height, decalOpt.maxTileHeight)),
}
}
function brushDecal() {
if (ctx) {
ctx.clearRect(0, 0, canvas.width, canvas.height)
if (decalOpt.backgroundColor) {
ctx.fillStyle = decalOpt.backgroundColor
ctx.fillRect(0, 0, canvas.width, canvas.height)
}
}
var ySum = 0
for (var i3 = 0; i3 < dashArrayY.length; ++i3) {
ySum += dashArrayY[i3]
}
if (ySum <= 0) {
return
}
var y2 = -lineBlockLengthY
var yId = 0
var yIdTotal = 0
var xId0 = 0
while (y2 < pSize.height) {
if (yId % 2 === 0) {
var symbolYId = (yIdTotal / 2) % symbolArray.length
var x2 = 0
var xId1 = 0
var xId1Total = 0
while (x2 < pSize.width * 2) {
var xSum = 0
for (var i3 = 0; i3 < dashArrayX[xId0].length; ++i3) {
xSum += dashArrayX[xId0][i3]
}
if (xSum <= 0) {
break
}
if (xId1 % 2 === 0) {
var size = (1 - decalOpt.symbolSize) * 0.5
var left2 = x2 + dashArrayX[xId0][xId1] * size
var top_1 = y2 + dashArrayY[yId] * size
var width = dashArrayX[xId0][xId1] * decalOpt.symbolSize
var height = dashArrayY[yId] * decalOpt.symbolSize
var symbolXId = (xId1Total / 2) % symbolArray[symbolYId].length
brushSymbol(
left2,
top_1,
width,
height,
symbolArray[symbolYId][symbolXId]
)
}
x2 += dashArrayX[xId0][xId1]
++xId1Total
++xId1
if (xId1 === dashArrayX[xId0].length) {
xId1 = 0
}
}
++xId0
if (xId0 === dashArrayX.length) {
xId0 = 0
}
}
y2 += dashArrayY[yId]
++yIdTotal
++yId
if (yId === dashArrayY.length) {
yId = 0
}
}
function brushSymbol(x3, y3, width2, height2, symbolType) {
var scale2 = isSVG2 ? 1 : dpr2
var symbol = createSymbol$1(
symbolType,
x3 * scale2,
y3 * scale2,
width2 * scale2,
height2 * scale2,
decalOpt.color,
decalOpt.symbolKeepAspect
)
if (isSVG2) {
var symbolVNode = zr.painter.renderOneToVNode(symbol)
if (symbolVNode) {
svgRoot.children.push(symbolVNode)
}
} else {
brushSingle(ctx, symbol)
}
}
}
}
}
function normalizeSymbolArray(symbol) {
if (!symbol || symbol.length === 0) {
return [['rect']]
}
if (isString$2(symbol)) {
return [[symbol]]
}
var isAllString = true
for (var i2 = 0; i2 < symbol.length; ++i2) {
if (!isString$2(symbol[i2])) {
isAllString = false
break
}
}
if (isAllString) {
return normalizeSymbolArray([symbol])
}
var result = []
for (var i2 = 0; i2 < symbol.length; ++i2) {
if (isString$2(symbol[i2])) {
result.push([symbol[i2]])
} else {
result.push(symbol[i2])
}
}
return result
}
function normalizeDashArrayX(dash) {
if (!dash || dash.length === 0) {
return [[0, 0]]
}
if (isNumber$2(dash)) {
var dashValue = Math.ceil(dash)
return [[dashValue, dashValue]]
}
var isAllNumber = true
for (var i2 = 0; i2 < dash.length; ++i2) {
if (!isNumber$2(dash[i2])) {
isAllNumber = false
break
}
}
if (isAllNumber) {
return normalizeDashArrayX([dash])
}
var result = []
for (var i2 = 0; i2 < dash.length; ++i2) {
if (isNumber$2(dash[i2])) {
var dashValue = Math.ceil(dash[i2])
result.push([dashValue, dashValue])
} else {
var dashValue = map$1(dash[i2], function (n2) {
return Math.ceil(n2)
})
if (dashValue.length % 2 === 1) {
result.push(dashValue.concat(dashValue))
} else {
result.push(dashValue)
}
}
}
return result
}
function normalizeDashArrayY(dash) {
if (!dash || (typeof dash === 'object' && dash.length === 0)) {
return [0, 0]
}
if (isNumber$2(dash)) {
var dashValue_1 = Math.ceil(dash)
return [dashValue_1, dashValue_1]
}
var dashValue = map$1(dash, function (n2) {
return Math.ceil(n2)
})
return dash.length % 2 ? dashValue.concat(dashValue) : dashValue
}
function getLineBlockLengthX(dash) {
return map$1(dash, function (line) {
return getLineBlockLengthY(line)
})
}
function getLineBlockLengthY(dash) {
var blockLength = 0
for (var i2 = 0; i2 < dash.length; ++i2) {
blockLength += dash[i2]
}
if (dash.length % 2 === 1) {
return blockLength * 2
}
return blockLength
}
function decalVisual(ecModel, api) {
ecModel.eachRawSeries(function (seriesModel) {
if (ecModel.isSeriesFiltered(seriesModel)) {
return
}
var data2 = seriesModel.getData()
if (data2.hasItemVisual()) {
data2.each(function (idx) {
var decal2 = data2.getItemVisual(idx, 'decal')
if (decal2) {
var itemStyle = data2.ensureUniqueItemVisual(idx, 'style')
itemStyle.decal = createOrUpdatePatternFromDecal(decal2, api)
}
})
}
var decal = data2.getVisual('decal')
if (decal) {
var style2 = data2.getVisual('style')
style2.decal = createOrUpdatePatternFromDecal(decal, api)
}
})
}
var lifecycle = new Eventful$1()
var lifecycle$1 = lifecycle
var implsStore = {}
function registerImpl(name2, impl) {
implsStore[name2] = impl
}
function getImpl(name2) {
return implsStore[name2]
}
var version$1 = '5.4.3'
var dependencies = {
zrender: '5.4.4',
}
var TEST_FRAME_REMAIN_TIME = 1
var PRIORITY_PROCESSOR_SERIES_FILTER = 800
var PRIORITY_PROCESSOR_DATASTACK = 900
var PRIORITY_PROCESSOR_FILTER = 1e3
var PRIORITY_PROCESSOR_DEFAULT = 2e3
var PRIORITY_PROCESSOR_STATISTIC = 5e3
var PRIORITY_VISUAL_LAYOUT = 1e3
var PRIORITY_VISUAL_PROGRESSIVE_LAYOUT = 1100
var PRIORITY_VISUAL_GLOBAL = 2e3
var PRIORITY_VISUAL_CHART = 3e3
var PRIORITY_VISUAL_COMPONENT = 4e3
var PRIORITY_VISUAL_CHART_DATA_CUSTOM = 4500
var PRIORITY_VISUAL_POST_CHART_LAYOUT = 4600
var PRIORITY_VISUAL_BRUSH = 5e3
var PRIORITY_VISUAL_ARIA = 6e3
var PRIORITY_VISUAL_DECAL = 7e3
var PRIORITY = {
PROCESSOR: {
FILTER: PRIORITY_PROCESSOR_FILTER,
SERIES_FILTER: PRIORITY_PROCESSOR_SERIES_FILTER,
STATISTIC: PRIORITY_PROCESSOR_STATISTIC,
},
VISUAL: {
LAYOUT: PRIORITY_VISUAL_LAYOUT,
PROGRESSIVE_LAYOUT: PRIORITY_VISUAL_PROGRESSIVE_LAYOUT,
GLOBAL: PRIORITY_VISUAL_GLOBAL,
CHART: PRIORITY_VISUAL_CHART,
POST_CHART_LAYOUT: PRIORITY_VISUAL_POST_CHART_LAYOUT,
COMPONENT: PRIORITY_VISUAL_COMPONENT,
BRUSH: PRIORITY_VISUAL_BRUSH,
CHART_ITEM: PRIORITY_VISUAL_CHART_DATA_CUSTOM,
ARIA: PRIORITY_VISUAL_ARIA,
DECAL: PRIORITY_VISUAL_DECAL,
},
}
var IN_MAIN_PROCESS_KEY = '__flagInMainProcess'
var PENDING_UPDATE = '__pendingUpdate'
var STATUS_NEEDS_UPDATE_KEY = '__needsUpdateStatus'
var ACTION_REG = /^[a-zA-Z0-9_]+$/
var CONNECT_STATUS_KEY = '__connectUpdateStatus'
var CONNECT_STATUS_PENDING = 0
var CONNECT_STATUS_UPDATING = 1
var CONNECT_STATUS_UPDATED = 2
function createRegisterEventWithLowercaseECharts(method4) {
return function () {
var args = []
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i]
}
if (this.isDisposed()) {
disposedWarning(this.id)
return
}
return toLowercaseNameAndCallEventful(this, method4, args)
}
}
function createRegisterEventWithLowercaseMessageCenter(method4) {
return function () {
var args = []
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i]
}
return toLowercaseNameAndCallEventful(this, method4, args)
}
}
function toLowercaseNameAndCallEventful(host, method4, args) {
args[0] = args[0] && args[0].toLowerCase()
return Eventful$1.prototype[method4].apply(host, args)
}
var MessageCenter = (function (_super) {
__extends$2(MessageCenter2, _super)
function MessageCenter2() {
return (_super !== null && _super.apply(this, arguments)) || this
}
return MessageCenter2
})(Eventful$1)
var messageCenterProto = MessageCenter.prototype
messageCenterProto.on = createRegisterEventWithLowercaseMessageCenter('on')
messageCenterProto.off = createRegisterEventWithLowercaseMessageCenter('off')
var prepare
var prepareView
var updateDirectly
var updateMethods
var doConvertPixel
var updateStreamModes
var doDispatchAction
var flushPendingActions
var triggerUpdatedEvent
var bindRenderedEvent
var bindMouseEvent
var render
var renderComponents
var renderSeries
var createExtensionAPI
var enableConnect
var markStatusToUpdate
var applyChangedStates
var ECharts = (function (_super) {
__extends$2(ECharts2, _super)
function ECharts2(dom, theme2, opts) {
var _this = _super.call(this, new ECEventProcessor()) || this
_this._chartsViews = []
_this._chartsMap = {}
_this._componentsViews = []
_this._componentsMap = {}
_this._pendingActions = []
opts = opts || {}
if (isString$2(theme2)) {
theme2 = themeStorage[theme2]
}
_this._dom = dom
var defaultRenderer = 'canvas'
var defaultCoarsePointer = 'auto'
var defaultUseDirtyRect = false
var zr = (_this._zr = init$3(dom, {
renderer: opts.renderer || defaultRenderer,
devicePixelRatio: opts.devicePixelRatio,
width: opts.width,
height: opts.height,
ssr: opts.ssr,
useDirtyRect: retrieve2(opts.useDirtyRect, defaultUseDirtyRect),
useCoarsePointer: retrieve2(opts.useCoarsePointer, defaultCoarsePointer),
pointerSize: opts.pointerSize,
}))
_this._ssr = opts.ssr
_this._throttledZrFlush = throttle(bind$1(zr.flush, zr), 17)
theme2 = clone$4(theme2)
theme2 && globalBackwardCompat(theme2, true)
_this._theme = theme2
_this._locale = createLocaleObject(opts.locale || SYSTEM_LANG)
_this._coordSysMgr = new CoordinateSystem()
var api = (_this._api = createExtensionAPI(_this))
function prioritySortFunc(a2, b2) {
return a2.__prio - b2.__prio
}
sort$2(visualFuncs, prioritySortFunc)
sort$2(dataProcessorFuncs, prioritySortFunc)
_this._scheduler = new Scheduler$1(
_this,
api,
dataProcessorFuncs,
visualFuncs
)
_this._messageCenter = new MessageCenter()
_this._initEvents()
_this.resize = bind$1(_this.resize, _this)
zr.animation.on('frame', _this._onframe, _this)
bindRenderedEvent(zr, _this)
bindMouseEvent(zr, _this)
setAsPrimitive(_this)
return _this
}
ECharts2.prototype._onframe = function () {
if (this._disposed) {
return
}
applyChangedStates(this)
var scheduler = this._scheduler
if (this[PENDING_UPDATE]) {
var silent = this[PENDING_UPDATE].silent
this[IN_MAIN_PROCESS_KEY] = true
try {
prepare(this)
updateMethods.update.call(this, null, this[PENDING_UPDATE].updateParams)
} catch (e2) {
this[IN_MAIN_PROCESS_KEY] = false
this[PENDING_UPDATE] = null
throw e2
}
this._zr.flush()
this[IN_MAIN_PROCESS_KEY] = false
this[PENDING_UPDATE] = null
flushPendingActions.call(this, silent)
triggerUpdatedEvent.call(this, silent)
} else if (scheduler.unfinished) {
var remainTime = TEST_FRAME_REMAIN_TIME
var ecModel = this._model
var api = this._api
scheduler.unfinished = false
do {
var startTime = +new Date()
scheduler.performSeriesTasks(ecModel)
scheduler.performDataProcessorTasks(ecModel)
updateStreamModes(this, ecModel)
scheduler.performVisualTasks(ecModel)
renderSeries(this, this._model, api, 'remain', {})
remainTime -= +new Date() - startTime
} while (remainTime > 0 && scheduler.unfinished)
if (!scheduler.unfinished) {
this._zr.flush()
}
}
}
ECharts2.prototype.getDom = function () {
return this._dom
}
ECharts2.prototype.getId = function () {
return this.id
}
ECharts2.prototype.getZr = function () {
return this._zr
}
ECharts2.prototype.isSSR = function () {
return this._ssr
}
ECharts2.prototype.setOption = function (option2, notMerge, lazyUpdate) {
if (this[IN_MAIN_PROCESS_KEY]) {
return
}
if (this._disposed) {
disposedWarning(this.id)
return
}
var silent
var replaceMerge
var transitionOpt
if (isObject$b(notMerge)) {
lazyUpdate = notMerge.lazyUpdate
silent = notMerge.silent
replaceMerge = notMerge.replaceMerge
transitionOpt = notMerge.transition
notMerge = notMerge.notMerge
}
this[IN_MAIN_PROCESS_KEY] = true
if (!this._model || notMerge) {
var optionManager = new OptionManager$1(this._api)
var theme2 = this._theme
var ecModel = (this._model = new GlobalModel$1())
ecModel.scheduler = this._scheduler
ecModel.ssr = this._ssr
ecModel.init(null, null, null, theme2, this._locale, optionManager)
}
this._model.setOption(
option2,
{
replaceMerge,
},
optionPreprocessorFuncs
)
var updateParams = {
seriesTransition: transitionOpt,
optionChanged: true,
}
if (lazyUpdate) {
this[PENDING_UPDATE] = {
silent,
updateParams,
}
this[IN_MAIN_PROCESS_KEY] = false
this.getZr().wakeUp()
} else {
try {
prepare(this)
updateMethods.update.call(this, null, updateParams)
} catch (e2) {
this[PENDING_UPDATE] = null
this[IN_MAIN_PROCESS_KEY] = false
throw e2
}
if (!this._ssr) {
this._zr.flush()
}
this[PENDING_UPDATE] = null
this[IN_MAIN_PROCESS_KEY] = false
flushPendingActions.call(this, silent)
triggerUpdatedEvent.call(this, silent)
}
}
ECharts2.prototype.setTheme = function () {}
ECharts2.prototype.getModel = function () {
return this._model
}
ECharts2.prototype.getOption = function () {
return this._model && this._model.getOption()
}
ECharts2.prototype.getWidth = function () {
return this._zr.getWidth()
}
ECharts2.prototype.getHeight = function () {
return this._zr.getHeight()
}
ECharts2.prototype.getDevicePixelRatio = function () {
return (
this._zr.painter.dpr ||
(env$1.hasGlobalWindow && window.devicePixelRatio) ||
1
)
}
ECharts2.prototype.getRenderedCanvas = function (opts) {
return this.renderToCanvas(opts)
}
ECharts2.prototype.renderToCanvas = function (opts) {
opts = opts || {}
var painter = this._zr.painter
return painter.getRenderedCanvas({
backgroundColor:
opts.backgroundColor || this._model.get('backgroundColor'),
pixelRatio: opts.pixelRatio || this.getDevicePixelRatio(),
})
}
ECharts2.prototype.renderToSVGString = function (opts) {
opts = opts || {}
var painter = this._zr.painter
return painter.renderToString({
useViewBox: opts.useViewBox,
})
}
ECharts2.prototype.getSvgDataURL = function () {
if (!env$1.svgSupported) {
return
}
var zr = this._zr
var list2 = zr.storage.getDisplayList()
each$f(list2, function (el2) {
el2.stopAnimation(null, true)
})
return zr.painter.toDataURL()
}
ECharts2.prototype.getDataURL = function (opts) {
if (this._disposed) {
disposedWarning(this.id)
return
}
opts = opts || {}
var excludeComponents = opts.excludeComponents
var ecModel = this._model
var excludesComponentViews = []
var self2 = this
each$f(excludeComponents, function (componentType) {
ecModel.eachComponent(
{
mainType: componentType,
},
function (component2) {
var view2 = self2._componentsMap[component2.__viewId]
if (!view2.group.ignore) {
excludesComponentViews.push(view2)
view2.group.ignore = true
}
}
)
})
var url2 =
this._zr.painter.getType() === 'svg'
? this.getSvgDataURL()
: this.renderToCanvas(opts).toDataURL(
'image/' + ((opts && opts.type) || 'png')
)
each$f(excludesComponentViews, function (view2) {
view2.group.ignore = false
})
return url2
}
ECharts2.prototype.getConnectedDataURL = function (opts) {
if (this._disposed) {
disposedWarning(this.id)
return
}
var isSvg = opts.type === 'svg'
var groupId = this.group
var mathMin2 = Math.min
var mathMax2 = Math.max
var MAX_NUMBER = Infinity
if (connectedGroups[groupId]) {
var left_1 = MAX_NUMBER
var top_1 = MAX_NUMBER
var right_1 = -MAX_NUMBER
var bottom_1 = -MAX_NUMBER
var canvasList_1 = []
var dpr_1 = (opts && opts.pixelRatio) || this.getDevicePixelRatio()
each$f(instances, function (chart2, id2) {
if (chart2.group === groupId) {
var canvas = isSvg
? chart2.getZr().painter.getSvgDom().innerHTML
: chart2.renderToCanvas(clone$4(opts))
var boundingRect = chart2.getDom().getBoundingClientRect()
left_1 = mathMin2(boundingRect.left, left_1)
top_1 = mathMin2(boundingRect.top, top_1)
right_1 = mathMax2(boundingRect.right, right_1)
bottom_1 = mathMax2(boundingRect.bottom, bottom_1)
canvasList_1.push({
dom: canvas,
left: boundingRect.left,
top: boundingRect.top,
})
}
})
left_1 *= dpr_1
top_1 *= dpr_1
right_1 *= dpr_1
bottom_1 *= dpr_1
var width = right_1 - left_1
var height = bottom_1 - top_1
var targetCanvas = platformApi.createCanvas()
var zr_1 = init$3(targetCanvas, {
renderer: isSvg ? 'svg' : 'canvas',
})
zr_1.resize({
width,
height,
})
if (isSvg) {
var content_1 = ''
each$f(canvasList_1, function (item2) {
var x2 = item2.left - left_1
var y2 = item2.top - top_1
content_1 +=
'' +
item2.dom +
''
})
zr_1.painter.getSvgRoot().innerHTML = content_1
if (opts.connectedBackgroundColor) {
zr_1.painter.setBackgroundColor(opts.connectedBackgroundColor)
}
zr_1.refreshImmediately()
return zr_1.painter.toDataURL()
} else {
if (opts.connectedBackgroundColor) {
zr_1.add(
new Rect$4({
shape: {
x: 0,
y: 0,
width,
height,
},
style: {
fill: opts.connectedBackgroundColor,
},
})
)
}
each$f(canvasList_1, function (item2) {
var img = new ZRImage$1({
style: {
x: item2.left * dpr_1 - left_1,
y: item2.top * dpr_1 - top_1,
image: item2.dom,
},
})
zr_1.add(img)
})
zr_1.refreshImmediately()
return targetCanvas.toDataURL('image/' + ((opts && opts.type) || 'png'))
}
} else {
return this.getDataURL(opts)
}
}
ECharts2.prototype.convertToPixel = function (finder, value2) {
return doConvertPixel(this, 'convertToPixel', finder, value2)
}
ECharts2.prototype.convertFromPixel = function (finder, value2) {
return doConvertPixel(this, 'convertFromPixel', finder, value2)
}
ECharts2.prototype.containPixel = function (finder, value2) {
if (this._disposed) {
disposedWarning(this.id)
return
}
var ecModel = this._model
var result
var findResult = parseFinder$1(ecModel, finder)
each$f(
findResult,
function (models2, key2) {
key2.indexOf('Models') >= 0 &&
each$f(
models2,
function (model) {
var coordSys = model.coordinateSystem
if (coordSys && coordSys.containPoint) {
result = result || !!coordSys.containPoint(value2)
} else if (key2 === 'seriesModels') {
var view2 = this._chartsMap[model.__viewId]
if (view2 && view2.containPoint) {
result = result || view2.containPoint(value2, model)
}
} else;
},
this
)
},
this
)
return !!result
}
ECharts2.prototype.getVisual = function (finder, visualType) {
var ecModel = this._model
var parsedFinder = parseFinder$1(ecModel, finder, {
defaultMainType: 'series',
})
var seriesModel = parsedFinder.seriesModel
var data2 = seriesModel.getData()
var dataIndexInside = parsedFinder.hasOwnProperty('dataIndexInside')
? parsedFinder.dataIndexInside
: parsedFinder.hasOwnProperty('dataIndex')
? data2.indexOfRawIndex(parsedFinder.dataIndex)
: null
return dataIndexInside != null
? getItemVisualFromData(data2, dataIndexInside, visualType)
: getVisualFromData(data2, visualType)
}
ECharts2.prototype.getViewOfComponentModel = function (componentModel) {
return this._componentsMap[componentModel.__viewId]
}
ECharts2.prototype.getViewOfSeriesModel = function (seriesModel) {
return this._chartsMap[seriesModel.__viewId]
}
ECharts2.prototype._initEvents = function () {
var _this = this
each$f(MOUSE_EVENT_NAMES, function (eveName) {
var handler = function (e2) {
var ecModel = _this.getModel()
var el2 = e2.target
var params2
var isGlobalOut = eveName === 'globalout'
if (isGlobalOut) {
params2 = {}
} else {
el2 &&
findEventDispatcher(
el2,
function (parent2) {
var ecData = getECData(parent2)
if (ecData && ecData.dataIndex != null) {
var dataModel =
ecData.dataModel ||
ecModel.getSeriesByIndex(ecData.seriesIndex)
params2 =
(dataModel &&
dataModel.getDataParams(
ecData.dataIndex,
ecData.dataType,
el2
)) ||
{}
return true
} else if (ecData.eventData) {
params2 = extend({}, ecData.eventData)
return true
}
},
true
)
}
if (params2) {
var componentType = params2.componentType
var componentIndex = params2.componentIndex
if (
componentType === 'markLine' ||
componentType === 'markPoint' ||
componentType === 'markArea'
) {
componentType = 'series'
componentIndex = params2.seriesIndex
}
var model =
componentType &&
componentIndex != null &&
ecModel.getComponent(componentType, componentIndex)
var view2 =
model &&
_this[
model.mainType === 'series' ? '_chartsMap' : '_componentsMap'
][model.__viewId]
params2.event = e2
params2.type = eveName
_this._$eventProcessor.eventInfo = {
targetEl: el2,
packedEvent: params2,
model,
view: view2,
}
_this.trigger(eveName, params2)
}
}
handler.zrEventfulCallAtLast = true
_this._zr.on(eveName, handler, _this)
})
each$f(eventActionMap, function (actionType, eventType) {
_this._messageCenter.on(
eventType,
function (event) {
this.trigger(eventType, event)
},
_this
)
})
each$f(['selectchanged'], function (eventType) {
_this._messageCenter.on(
eventType,
function (event) {
this.trigger(eventType, event)
},
_this
)
})
handleLegacySelectEvents(this._messageCenter, this, this._api)
}
ECharts2.prototype.isDisposed = function () {
return this._disposed
}
ECharts2.prototype.clear = function () {
if (this._disposed) {
disposedWarning(this.id)
return
}
this.setOption(
{
series: [],
},
true
)
}
ECharts2.prototype.dispose = function () {
if (this._disposed) {
disposedWarning(this.id)
return
}
this._disposed = true
var dom = this.getDom()
if (dom) {
setAttribute(this.getDom(), DOM_ATTRIBUTE_KEY, '')
}
var chart2 = this
var api = chart2._api
var ecModel = chart2._model
each$f(chart2._componentsViews, function (component2) {
component2.dispose(ecModel, api)
})
each$f(chart2._chartsViews, function (chart3) {
chart3.dispose(ecModel, api)
})
chart2._zr.dispose()
chart2._dom =
chart2._model =
chart2._chartsMap =
chart2._componentsMap =
chart2._chartsViews =
chart2._componentsViews =
chart2._scheduler =
chart2._api =
chart2._zr =
chart2._throttledZrFlush =
chart2._theme =
chart2._coordSysMgr =
chart2._messageCenter =
null
delete instances[chart2.id]
}
ECharts2.prototype.resize = function (opts) {
if (this[IN_MAIN_PROCESS_KEY]) {
return
}
if (this._disposed) {
disposedWarning(this.id)
return
}
this._zr.resize(opts)
var ecModel = this._model
this._loadingFX && this._loadingFX.resize()
if (!ecModel) {
return
}
var needPrepare = ecModel.resetOption('media')
var silent = opts && opts.silent
if (this[PENDING_UPDATE]) {
if (silent == null) {
silent = this[PENDING_UPDATE].silent
}
needPrepare = true
this[PENDING_UPDATE] = null
}
this[IN_MAIN_PROCESS_KEY] = true
try {
needPrepare && prepare(this)
updateMethods.update.call(this, {
type: 'resize',
animation: extend(
{
duration: 0,
},
opts && opts.animation
),
})
} catch (e2) {
this[IN_MAIN_PROCESS_KEY] = false
throw e2
}
this[IN_MAIN_PROCESS_KEY] = false
flushPendingActions.call(this, silent)
triggerUpdatedEvent.call(this, silent)
}
ECharts2.prototype.showLoading = function (name2, cfg) {
if (this._disposed) {
disposedWarning(this.id)
return
}
if (isObject$b(name2)) {
cfg = name2
name2 = ''
}
name2 = name2 || 'default'
this.hideLoading()
if (!loadingEffects[name2]) {
return
}
var el2 = loadingEffects[name2](this._api, cfg)
var zr = this._zr
this._loadingFX = el2
zr.add(el2)
}
ECharts2.prototype.hideLoading = function () {
if (this._disposed) {
disposedWarning(this.id)
return
}
this._loadingFX && this._zr.remove(this._loadingFX)
this._loadingFX = null
}
ECharts2.prototype.makeActionFromEvent = function (eventObj) {
var payload = extend({}, eventObj)
payload.type = eventActionMap[eventObj.type]
return payload
}
ECharts2.prototype.dispatchAction = function (payload, opt) {
if (this._disposed) {
disposedWarning(this.id)
return
}
if (!isObject$b(opt)) {
opt = {
silent: !!opt,
}
}
if (!actions[payload.type]) {
return
}
if (!this._model) {
return
}
if (this[IN_MAIN_PROCESS_KEY]) {
this._pendingActions.push(payload)
return
}
var silent = opt.silent
doDispatchAction.call(this, payload, silent)
var flush2 = opt.flush
if (flush2) {
this._zr.flush()
} else if (flush2 !== false && env$1.browser.weChat) {
this._throttledZrFlush()
}
flushPendingActions.call(this, silent)
triggerUpdatedEvent.call(this, silent)
}
ECharts2.prototype.updateLabelLayout = function () {
lifecycle$1.trigger('series:layoutlabels', this._model, this._api, {
updatedSeries: [],
})
}
ECharts2.prototype.appendData = function (params2) {
if (this._disposed) {
disposedWarning(this.id)
return
}
var seriesIndex = params2.seriesIndex
var ecModel = this.getModel()
var seriesModel = ecModel.getSeriesByIndex(seriesIndex)
seriesModel.appendData(params2)
this._scheduler.unfinished = true
this.getZr().wakeUp()
}
ECharts2.internalField = (function () {
prepare = function (ecIns) {
var scheduler = ecIns._scheduler
scheduler.restorePipelines(ecIns._model)
scheduler.prepareStageTasks()
prepareView(ecIns, true)
prepareView(ecIns, false)
scheduler.plan()
}
prepareView = function (ecIns, isComponent) {
var ecModel = ecIns._model
var scheduler = ecIns._scheduler
var viewList = isComponent ? ecIns._componentsViews : ecIns._chartsViews
var viewMap = isComponent ? ecIns._componentsMap : ecIns._chartsMap
var zr = ecIns._zr
var api = ecIns._api
for (var i2 = 0; i2 < viewList.length; i2++) {
viewList[i2].__alive = false
}
isComponent
? ecModel.eachComponent(function (componentType, model) {
componentType !== 'series' && doPrepare(model)
})
: ecModel.eachSeries(doPrepare)
function doPrepare(model) {
var requireNewView = model.__requireNewView
model.__requireNewView = false
var viewId = '_ec_' + model.id + '_' + model.type
var view3 = !requireNewView && viewMap[viewId]
if (!view3) {
var classType = parseClassType(model.type)
var Clazz = isComponent
? ComponentView$1.getClass(classType.main, classType.sub)
: ChartView$1.getClass(classType.sub)
view3 = new Clazz()
view3.init(ecModel, api)
viewMap[viewId] = view3
viewList.push(view3)
zr.add(view3.group)
}
model.__viewId = view3.__id = viewId
view3.__alive = true
view3.__model = model
view3.group.__ecComponentInfo = {
mainType: model.mainType,
index: model.componentIndex,
}
!isComponent && scheduler.prepareView(view3, model, ecModel, api)
}
for (var i2 = 0; i2 < viewList.length; ) {
var view2 = viewList[i2]
if (!view2.__alive) {
!isComponent && view2.renderTask.dispose()
zr.remove(view2.group)
view2.dispose(ecModel, api)
viewList.splice(i2, 1)
if (viewMap[view2.__id] === view2) {
delete viewMap[view2.__id]
}
view2.__id = view2.group.__ecComponentInfo = null
} else {
i2++
}
}
}
updateDirectly = function (ecIns, method4, payload, mainType, subType) {
var ecModel = ecIns._model
ecModel.setUpdatePayload(payload)
if (!mainType) {
each$f(
[].concat(ecIns._componentsViews).concat(ecIns._chartsViews),
callView
)
return
}
var query = {}
query[mainType + 'Id'] = payload[mainType + 'Id']
query[mainType + 'Index'] = payload[mainType + 'Index']
query[mainType + 'Name'] = payload[mainType + 'Name']
var condition2 = {
mainType,
query,
}
subType && (condition2.subType = subType)
var excludeSeriesId = payload.excludeSeriesId
var excludeSeriesIdMap
if (excludeSeriesId != null) {
excludeSeriesIdMap = createHashMap()
each$f(normalizeToArray(excludeSeriesId), function (id2) {
var modelId = convertOptionIdName(id2, null)
if (modelId != null) {
excludeSeriesIdMap.set(modelId, true)
}
})
}
ecModel &&
ecModel.eachComponent(
condition2,
function (model) {
var isExcluded =
excludeSeriesIdMap && excludeSeriesIdMap.get(model.id) != null
if (isExcluded) {
return
}
if (isHighDownPayload(payload)) {
if (model instanceof SeriesModel$1) {
if (
payload.type === HIGHLIGHT_ACTION_TYPE &&
!payload.notBlur &&
!model.get(['emphasis', 'disabled'])
) {
blurSeriesFromHighlightPayload(model, payload, ecIns._api)
}
} else {
var _a2 = findComponentHighDownDispatchers(
model.mainType,
model.componentIndex,
payload.name,
ecIns._api
),
focusSelf = _a2.focusSelf,
dispatchers = _a2.dispatchers
if (
payload.type === HIGHLIGHT_ACTION_TYPE &&
focusSelf &&
!payload.notBlur
) {
blurComponent(
model.mainType,
model.componentIndex,
ecIns._api
)
}
if (dispatchers) {
each$f(dispatchers, function (dispatcher) {
payload.type === HIGHLIGHT_ACTION_TYPE
? enterEmphasis(dispatcher)
: leaveEmphasis(dispatcher)
})
}
}
} else if (isSelectChangePayload(payload)) {
if (model instanceof SeriesModel$1) {
toggleSelectionFromPayload(model, payload, ecIns._api)
updateSeriesElementSelection(model)
markStatusToUpdate(ecIns)
}
}
},
ecIns
)
ecModel &&
ecModel.eachComponent(
condition2,
function (model) {
var isExcluded =
excludeSeriesIdMap && excludeSeriesIdMap.get(model.id) != null
if (isExcluded) {
return
}
callView(
ecIns[mainType === 'series' ? '_chartsMap' : '_componentsMap'][
model.__viewId
]
)
},
ecIns
)
function callView(view2) {
view2 &&
view2.__alive &&
view2[method4] &&
view2[method4](view2.__model, ecModel, ecIns._api, payload)
}
}
updateMethods = {
prepareAndUpdate: function (payload) {
prepare(this)
updateMethods.update.call(this, payload, {
optionChanged: payload.newOption != null,
})
},
update: function (payload, updateParams) {
var ecModel = this._model
var api = this._api
var zr = this._zr
var coordSysMgr = this._coordSysMgr
var scheduler = this._scheduler
if (!ecModel) {
return
}
ecModel.setUpdatePayload(payload)
scheduler.restoreData(ecModel, payload)
scheduler.performSeriesTasks(ecModel)
coordSysMgr.create(ecModel, api)
scheduler.performDataProcessorTasks(ecModel, payload)
updateStreamModes(this, ecModel)
coordSysMgr.update(ecModel, api)
clearColorPalette(ecModel)
scheduler.performVisualTasks(ecModel, payload)
render(this, ecModel, api, payload, updateParams)
var backgroundColor2 = ecModel.get('backgroundColor') || 'transparent'
var darkMode = ecModel.get('darkMode')
zr.setBackgroundColor(backgroundColor2)
if (darkMode != null && darkMode !== 'auto') {
zr.setDarkMode(darkMode)
}
lifecycle$1.trigger('afterupdate', ecModel, api)
},
updateTransform: function (payload) {
var _this = this
var ecModel = this._model
var api = this._api
if (!ecModel) {
return
}
ecModel.setUpdatePayload(payload)
var componentDirtyList = []
ecModel.eachComponent(function (componentType, componentModel) {
if (componentType === 'series') {
return
}
var componentView = _this.getViewOfComponentModel(componentModel)
if (componentView && componentView.__alive) {
if (componentView.updateTransform) {
var result = componentView.updateTransform(
componentModel,
ecModel,
api,
payload
)
result && result.update && componentDirtyList.push(componentView)
} else {
componentDirtyList.push(componentView)
}
}
})
var seriesDirtyMap = createHashMap()
ecModel.eachSeries(function (seriesModel) {
var chartView = _this._chartsMap[seriesModel.__viewId]
if (chartView.updateTransform) {
var result = chartView.updateTransform(
seriesModel,
ecModel,
api,
payload
)
result && result.update && seriesDirtyMap.set(seriesModel.uid, 1)
} else {
seriesDirtyMap.set(seriesModel.uid, 1)
}
})
clearColorPalette(ecModel)
this._scheduler.performVisualTasks(ecModel, payload, {
setDirty: true,
dirtyMap: seriesDirtyMap,
})
renderSeries(this, ecModel, api, payload, {}, seriesDirtyMap)
lifecycle$1.trigger('afterupdate', ecModel, api)
},
updateView: function (payload) {
var ecModel = this._model
if (!ecModel) {
return
}
ecModel.setUpdatePayload(payload)
ChartView$1.markUpdateMethod(payload, 'updateView')
clearColorPalette(ecModel)
this._scheduler.performVisualTasks(ecModel, payload, {
setDirty: true,
})
render(this, ecModel, this._api, payload, {})
lifecycle$1.trigger('afterupdate', ecModel, this._api)
},
updateVisual: function (payload) {
var _this = this
var ecModel = this._model
if (!ecModel) {
return
}
ecModel.setUpdatePayload(payload)
ecModel.eachSeries(function (seriesModel) {
seriesModel.getData().clearAllVisual()
})
ChartView$1.markUpdateMethod(payload, 'updateVisual')
clearColorPalette(ecModel)
this._scheduler.performVisualTasks(ecModel, payload, {
visualType: 'visual',
setDirty: true,
})
ecModel.eachComponent(function (componentType, componentModel) {
if (componentType !== 'series') {
var componentView = _this.getViewOfComponentModel(componentModel)
componentView &&
componentView.__alive &&
componentView.updateVisual(
componentModel,
ecModel,
_this._api,
payload
)
}
})
ecModel.eachSeries(function (seriesModel) {
var chartView = _this._chartsMap[seriesModel.__viewId]
chartView.updateVisual(seriesModel, ecModel, _this._api, payload)
})
lifecycle$1.trigger('afterupdate', ecModel, this._api)
},
updateLayout: function (payload) {
updateMethods.update.call(this, payload)
},
}
doConvertPixel = function (ecIns, methodName, finder, value2) {
if (ecIns._disposed) {
disposedWarning(ecIns.id)
return
}
var ecModel = ecIns._model
var coordSysList = ecIns._coordSysMgr.getCoordinateSystems()
var result
var parsedFinder = parseFinder$1(ecModel, finder)
for (var i2 = 0; i2 < coordSysList.length; i2++) {
var coordSys = coordSysList[i2]
if (
coordSys[methodName] &&
(result = coordSys[methodName](ecModel, parsedFinder, value2)) != null
) {
return result
}
}
}
updateStreamModes = function (ecIns, ecModel) {
var chartsMap = ecIns._chartsMap
var scheduler = ecIns._scheduler
ecModel.eachSeries(function (seriesModel) {
scheduler.updateStreamModes(
seriesModel,
chartsMap[seriesModel.__viewId]
)
})
}
doDispatchAction = function (payload, silent) {
var _this = this
var ecModel = this.getModel()
var payloadType = payload.type
var escapeConnect = payload.escapeConnect
var actionWrap = actions[payloadType]
var actionInfo2 = actionWrap.actionInfo
var cptTypeTmp = (actionInfo2.update || 'update').split(':')
var updateMethod = cptTypeTmp.pop()
var cptType = cptTypeTmp[0] != null && parseClassType(cptTypeTmp[0])
this[IN_MAIN_PROCESS_KEY] = true
var payloads = [payload]
var batched = false
if (payload.batch) {
batched = true
payloads = map$1(payload.batch, function (item2) {
item2 = defaults(extend({}, item2), payload)
item2.batch = null
return item2
})
}
var eventObjBatch = []
var eventObj
var isSelectChange = isSelectChangePayload(payload)
var isHighDown = isHighDownPayload(payload)
if (isHighDown) {
allLeaveBlur(this._api)
}
each$f(payloads, function (batchItem) {
eventObj = actionWrap.action(batchItem, _this._model, _this._api)
eventObj = eventObj || extend({}, batchItem)
eventObj.type = actionInfo2.event || eventObj.type
eventObjBatch.push(eventObj)
if (isHighDown) {
var _a2 = preParseFinder(payload),
queryOptionMap = _a2.queryOptionMap,
mainTypeSpecified = _a2.mainTypeSpecified
var componentMainType = mainTypeSpecified
? queryOptionMap.keys()[0]
: 'series'
updateDirectly(_this, updateMethod, batchItem, componentMainType)
markStatusToUpdate(_this)
} else if (isSelectChange) {
updateDirectly(_this, updateMethod, batchItem, 'series')
markStatusToUpdate(_this)
} else if (cptType) {
updateDirectly(
_this,
updateMethod,
batchItem,
cptType.main,
cptType.sub
)
}
})
if (
updateMethod !== 'none' &&
!isHighDown &&
!isSelectChange &&
!cptType
) {
try {
if (this[PENDING_UPDATE]) {
prepare(this)
updateMethods.update.call(this, payload)
this[PENDING_UPDATE] = null
} else {
updateMethods[updateMethod].call(this, payload)
}
} catch (e2) {
this[IN_MAIN_PROCESS_KEY] = false
throw e2
}
}
if (batched) {
eventObj = {
type: actionInfo2.event || payloadType,
escapeConnect,
batch: eventObjBatch,
}
} else {
eventObj = eventObjBatch[0]
}
this[IN_MAIN_PROCESS_KEY] = false
if (!silent) {
var messageCenter = this._messageCenter
messageCenter.trigger(eventObj.type, eventObj)
if (isSelectChange) {
var newObj = {
type: 'selectchanged',
escapeConnect,
selected: getAllSelectedIndices(ecModel),
isFromClick: payload.isFromClick || false,
fromAction: payload.type,
fromActionPayload: payload,
}
messageCenter.trigger(newObj.type, newObj)
}
}
}
flushPendingActions = function (silent) {
var pendingActions = this._pendingActions
while (pendingActions.length) {
var payload = pendingActions.shift()
doDispatchAction.call(this, payload, silent)
}
}
triggerUpdatedEvent = function (silent) {
!silent && this.trigger('updated')
}
bindRenderedEvent = function (zr, ecIns) {
zr.on('rendered', function (params2) {
ecIns.trigger('rendered', params2)
if (
zr.animation.isFinished() &&
!ecIns[PENDING_UPDATE] &&
!ecIns._scheduler.unfinished &&
!ecIns._pendingActions.length
) {
ecIns.trigger('finished')
}
})
}
bindMouseEvent = function (zr, ecIns) {
zr.on('mouseover', function (e2) {
var el2 = e2.target
var dispatcher = findEventDispatcher(el2, isHighDownDispatcher)
if (dispatcher) {
handleGlobalMouseOverForHighDown(dispatcher, e2, ecIns._api)
markStatusToUpdate(ecIns)
}
})
.on('mouseout', function (e2) {
var el2 = e2.target
var dispatcher = findEventDispatcher(el2, isHighDownDispatcher)
if (dispatcher) {
handleGlobalMouseOutForHighDown(dispatcher, e2, ecIns._api)
markStatusToUpdate(ecIns)
}
})
.on('click', function (e2) {
var el2 = e2.target
var dispatcher = findEventDispatcher(
el2,
function (target2) {
return getECData(target2).dataIndex != null
},
true
)
if (dispatcher) {
var actionType = dispatcher.selected ? 'unselect' : 'select'
var ecData = getECData(dispatcher)
ecIns._api.dispatchAction({
type: actionType,
dataType: ecData.dataType,
dataIndexInside: ecData.dataIndex,
seriesIndex: ecData.seriesIndex,
isFromClick: true,
})
}
})
}
function clearColorPalette(ecModel) {
ecModel.clearColorPalette()
ecModel.eachSeries(function (seriesModel) {
seriesModel.clearColorPalette()
})
}
function allocateZlevels(ecModel) {
var componentZLevels = []
var seriesZLevels = []
var hasSeperateZLevel = false
ecModel.eachComponent(function (componentType, componentModel) {
var zlevel = componentModel.get('zlevel') || 0
var z2 = componentModel.get('z') || 0
var zlevelKey = componentModel.getZLevelKey()
hasSeperateZLevel = hasSeperateZLevel || !!zlevelKey
;(componentType === 'series' ? seriesZLevels : componentZLevels).push({
zlevel,
z: z2,
idx: componentModel.componentIndex,
type: componentType,
key: zlevelKey,
})
})
if (hasSeperateZLevel) {
var zLevels = componentZLevels.concat(seriesZLevels)
var lastSeriesZLevel_1
var lastSeriesKey_1
sort$2(zLevels, function (a2, b2) {
if (a2.zlevel === b2.zlevel) {
return a2.z - b2.z
}
return a2.zlevel - b2.zlevel
})
each$f(zLevels, function (item2) {
var componentModel = ecModel.getComponent(item2.type, item2.idx)
var zlevel = item2.zlevel
var key2 = item2.key
if (lastSeriesZLevel_1 != null) {
zlevel = Math.max(lastSeriesZLevel_1, zlevel)
}
if (key2) {
if (zlevel === lastSeriesZLevel_1 && key2 !== lastSeriesKey_1) {
zlevel++
}
lastSeriesKey_1 = key2
} else if (lastSeriesKey_1) {
if (zlevel === lastSeriesZLevel_1) {
zlevel++
}
lastSeriesKey_1 = ''
}
lastSeriesZLevel_1 = zlevel
componentModel.setZLevel(zlevel)
})
}
}
render = function (ecIns, ecModel, api, payload, updateParams) {
allocateZlevels(ecModel)
renderComponents(ecIns, ecModel, api, payload, updateParams)
each$f(ecIns._chartsViews, function (chart2) {
chart2.__alive = false
})
renderSeries(ecIns, ecModel, api, payload, updateParams)
each$f(ecIns._chartsViews, function (chart2) {
if (!chart2.__alive) {
chart2.remove(ecModel, api)
}
})
}
renderComponents = function (
ecIns,
ecModel,
api,
payload,
updateParams,
dirtyList
) {
each$f(dirtyList || ecIns._componentsViews, function (componentView) {
var componentModel = componentView.__model
clearStates(componentModel, componentView)
componentView.render(componentModel, ecModel, api, payload)
updateZ2(componentModel, componentView)
updateStates(componentModel, componentView)
})
}
renderSeries = function (
ecIns,
ecModel,
api,
payload,
updateParams,
dirtyMap
) {
var scheduler = ecIns._scheduler
updateParams = extend(updateParams || {}, {
updatedSeries: ecModel.getSeries(),
})
lifecycle$1.trigger('series:beforeupdate', ecModel, api, updateParams)
var unfinished = false
ecModel.eachSeries(function (seriesModel) {
var chartView = ecIns._chartsMap[seriesModel.__viewId]
chartView.__alive = true
var renderTask = chartView.renderTask
scheduler.updatePayload(renderTask, payload)
clearStates(seriesModel, chartView)
if (dirtyMap && dirtyMap.get(seriesModel.uid)) {
renderTask.dirty()
}
if (renderTask.perform(scheduler.getPerformArgs(renderTask))) {
unfinished = true
}
chartView.group.silent = !!seriesModel.get('silent')
updateBlend(seriesModel, chartView)
updateSeriesElementSelection(seriesModel)
})
scheduler.unfinished = unfinished || scheduler.unfinished
lifecycle$1.trigger('series:layoutlabels', ecModel, api, updateParams)
lifecycle$1.trigger('series:transition', ecModel, api, updateParams)
ecModel.eachSeries(function (seriesModel) {
var chartView = ecIns._chartsMap[seriesModel.__viewId]
updateZ2(seriesModel, chartView)
updateStates(seriesModel, chartView)
})
updateHoverLayerStatus(ecIns, ecModel)
lifecycle$1.trigger('series:afterupdate', ecModel, api, updateParams)
}
markStatusToUpdate = function (ecIns) {
ecIns[STATUS_NEEDS_UPDATE_KEY] = true
ecIns.getZr().wakeUp()
}
applyChangedStates = function (ecIns) {
if (!ecIns[STATUS_NEEDS_UPDATE_KEY]) {
return
}
ecIns.getZr().storage.traverse(function (el2) {
if (isElementRemoved(el2)) {
return
}
applyElementStates(el2)
})
ecIns[STATUS_NEEDS_UPDATE_KEY] = false
}
function applyElementStates(el2) {
var newStates = []
var oldStates = el2.currentStates
for (var i2 = 0; i2 < oldStates.length; i2++) {
var stateName = oldStates[i2]
if (
!(
stateName === 'emphasis' ||
stateName === 'blur' ||
stateName === 'select'
)
) {
newStates.push(stateName)
}
}
if (el2.selected && el2.states.select) {
newStates.push('select')
}
if (el2.hoverState === HOVER_STATE_EMPHASIS && el2.states.emphasis) {
newStates.push('emphasis')
} else if (el2.hoverState === HOVER_STATE_BLUR && el2.states.blur) {
newStates.push('blur')
}
el2.useStates(newStates)
}
function updateHoverLayerStatus(ecIns, ecModel) {
var zr = ecIns._zr
var storage2 = zr.storage
var elCount = 0
storage2.traverse(function (el2) {
if (!el2.isGroup) {
elCount++
}
})
if (
elCount > ecModel.get('hoverLayerThreshold') &&
!env$1.node &&
!env$1.worker
) {
ecModel.eachSeries(function (seriesModel) {
if (seriesModel.preventUsingHoverLayer) {
return
}
var chartView = ecIns._chartsMap[seriesModel.__viewId]
if (chartView.__alive) {
chartView.eachRendered(function (el2) {
if (el2.states.emphasis) {
el2.states.emphasis.hoverLayer = true
}
})
}
})
}
}
function updateBlend(seriesModel, chartView) {
var blendMode = seriesModel.get('blendMode') || null
chartView.eachRendered(function (el2) {
if (!el2.isGroup) {
el2.style.blend = blendMode
}
})
}
function updateZ2(model, view2) {
if (model.preventAutoZ) {
return
}
var z2 = model.get('z') || 0
var zlevel = model.get('zlevel') || 0
view2.eachRendered(function (el2) {
doUpdateZ(el2, z2, zlevel, -Infinity)
return true
})
}
function doUpdateZ(el2, z2, zlevel, maxZ2) {
var label = el2.getTextContent()
var labelLine = el2.getTextGuideLine()
var isGroup2 = el2.isGroup
if (isGroup2) {
var children = el2.childrenRef()
for (var i2 = 0; i2 < children.length; i2++) {
maxZ2 = Math.max(doUpdateZ(children[i2], z2, zlevel, maxZ2), maxZ2)
}
} else {
el2.z = z2
el2.zlevel = zlevel
maxZ2 = Math.max(el2.z2, maxZ2)
}
if (label) {
label.z = z2
label.zlevel = zlevel
isFinite(maxZ2) && (label.z2 = maxZ2 + 2)
}
if (labelLine) {
var textGuideLineConfig = el2.textGuideLineConfig
labelLine.z = z2
labelLine.zlevel = zlevel
isFinite(maxZ2) &&
(labelLine.z2 =
maxZ2 +
(textGuideLineConfig && textGuideLineConfig.showAbove ? 1 : -1))
}
return maxZ2
}
function clearStates(model, view2) {
view2.eachRendered(function (el2) {
if (isElementRemoved(el2)) {
return
}
var textContent = el2.getTextContent()
var textGuide = el2.getTextGuideLine()
if (el2.stateTransition) {
el2.stateTransition = null
}
if (textContent && textContent.stateTransition) {
textContent.stateTransition = null
}
if (textGuide && textGuide.stateTransition) {
textGuide.stateTransition = null
}
if (el2.hasState()) {
el2.prevStates = el2.currentStates
el2.clearStates()
} else if (el2.prevStates) {
el2.prevStates = null
}
})
}
function updateStates(model, view2) {
var stateAnimationModel = model.getModel('stateAnimation')
var enableAnimation = model.isAnimationEnabled()
var duration2 = stateAnimationModel.get('duration')
var stateTransition =
duration2 > 0
? {
duration: duration2,
delay: stateAnimationModel.get('delay'),
easing: stateAnimationModel.get('easing'),
}
: null
view2.eachRendered(function (el2) {
if (el2.states && el2.states.emphasis) {
if (isElementRemoved(el2)) {
return
}
if (el2 instanceof Path$1) {
savePathStates(el2)
}
if (el2.__dirty) {
var prevStates = el2.prevStates
if (prevStates) {
el2.useStates(prevStates)
}
}
if (enableAnimation) {
el2.stateTransition = stateTransition
var textContent = el2.getTextContent()
var textGuide = el2.getTextGuideLine()
if (textContent) {
textContent.stateTransition = stateTransition
}
if (textGuide) {
textGuide.stateTransition = stateTransition
}
}
if (el2.__dirty) {
applyElementStates(el2)
}
}
})
}
createExtensionAPI = function (ecIns) {
return new ((function (_super2) {
__extends$2(class_1, _super2)
function class_1() {
return (_super2 !== null && _super2.apply(this, arguments)) || this
}
class_1.prototype.getCoordinateSystems = function () {
return ecIns._coordSysMgr.getCoordinateSystems()
}
class_1.prototype.getComponentByElement = function (el2) {
while (el2) {
var modelInfo = el2.__ecComponentInfo
if (modelInfo != null) {
return ecIns._model.getComponent(
modelInfo.mainType,
modelInfo.index
)
}
el2 = el2.parent
}
}
class_1.prototype.enterEmphasis = function (el2, highlightDigit) {
enterEmphasis(el2, highlightDigit)
markStatusToUpdate(ecIns)
}
class_1.prototype.leaveEmphasis = function (el2, highlightDigit) {
leaveEmphasis(el2, highlightDigit)
markStatusToUpdate(ecIns)
}
class_1.prototype.enterBlur = function (el2) {
enterBlur(el2)
markStatusToUpdate(ecIns)
}
class_1.prototype.leaveBlur = function (el2) {
leaveBlur(el2)
markStatusToUpdate(ecIns)
}
class_1.prototype.enterSelect = function (el2) {
enterSelect(el2)
markStatusToUpdate(ecIns)
}
class_1.prototype.leaveSelect = function (el2) {
leaveSelect(el2)
markStatusToUpdate(ecIns)
}
class_1.prototype.getModel = function () {
return ecIns.getModel()
}
class_1.prototype.getViewOfComponentModel = function (componentModel) {
return ecIns.getViewOfComponentModel(componentModel)
}
class_1.prototype.getViewOfSeriesModel = function (seriesModel) {
return ecIns.getViewOfSeriesModel(seriesModel)
}
return class_1
})(ExtensionAPI$1))(ecIns)
}
enableConnect = function (chart2) {
function updateConnectedChartsStatus(charts2, status) {
for (var i2 = 0; i2 < charts2.length; i2++) {
var otherChart = charts2[i2]
otherChart[CONNECT_STATUS_KEY] = status
}
}
each$f(eventActionMap, function (actionType, eventType) {
chart2._messageCenter.on(eventType, function (event) {
if (
connectedGroups[chart2.group] &&
chart2[CONNECT_STATUS_KEY] !== CONNECT_STATUS_PENDING
) {
if (event && event.escapeConnect) {
return
}
var action_1 = chart2.makeActionFromEvent(event)
var otherCharts_1 = []
each$f(instances, function (otherChart) {
if (otherChart !== chart2 && otherChart.group === chart2.group) {
otherCharts_1.push(otherChart)
}
})
updateConnectedChartsStatus(otherCharts_1, CONNECT_STATUS_PENDING)
each$f(otherCharts_1, function (otherChart) {
if (otherChart[CONNECT_STATUS_KEY] !== CONNECT_STATUS_UPDATING) {
otherChart.dispatchAction(action_1)
}
})
updateConnectedChartsStatus(otherCharts_1, CONNECT_STATUS_UPDATED)
}
})
})
}
})()
return ECharts2
})(Eventful$1)
var echartsProto = ECharts.prototype
echartsProto.on = createRegisterEventWithLowercaseECharts('on')
echartsProto.off = createRegisterEventWithLowercaseECharts('off')
echartsProto.one = function (eventName, cb, ctx) {
var self2 = this
function wrapped() {
var args2 = []
for (var _i = 0; _i < arguments.length; _i++) {
args2[_i] = arguments[_i]
}
cb && cb.apply && cb.apply(this, args2)
self2.off(eventName, wrapped)
}
this.on.call(this, eventName, wrapped, ctx)
}
var MOUSE_EVENT_NAMES = [
'click',
'dblclick',
'mouseover',
'mouseout',
'mousemove',
'mousedown',
'mouseup',
'globalout',
'contextmenu',
]
function disposedWarning(id2) {}
var actions = {}
var eventActionMap = {}
var dataProcessorFuncs = []
var optionPreprocessorFuncs = []
var visualFuncs = []
var themeStorage = {}
var loadingEffects = {}
var instances = {}
var connectedGroups = {}
var idBase = +new Date() - 0
var groupIdBase = +new Date() - 0
var DOM_ATTRIBUTE_KEY = '_echarts_instance_'
function init$2(dom, theme2, opts) {
var isClient2 = !(opts && opts.ssr)
if (isClient2) {
var existInstance = getInstanceByDom(dom)
if (existInstance) {
return existInstance
}
}
var chart2 = new ECharts(dom, theme2, opts)
chart2.id = 'ec_' + idBase++
instances[chart2.id] = chart2
isClient2 && setAttribute(dom, DOM_ATTRIBUTE_KEY, chart2.id)
enableConnect(chart2)
lifecycle$1.trigger('afterinit', chart2)
return chart2
}
function connect(groupId) {
if (isArray$6(groupId)) {
var charts2 = groupId
groupId = null
each$f(charts2, function (chart2) {
if (chart2.group != null) {
groupId = chart2.group
}
})
groupId = groupId || 'g_' + groupIdBase++
each$f(charts2, function (chart2) {
chart2.group = groupId
})
}
connectedGroups[groupId] = true
return groupId
}
function disconnect(groupId) {
connectedGroups[groupId] = false
}
var disConnect = disconnect
function dispose(chart2) {
if (isString$2(chart2)) {
chart2 = instances[chart2]
} else if (!(chart2 instanceof ECharts)) {
chart2 = getInstanceByDom(chart2)
}
if (chart2 instanceof ECharts && !chart2.isDisposed()) {
chart2.dispose()
}
}
function getInstanceByDom(dom) {
return instances[getAttribute(dom, DOM_ATTRIBUTE_KEY)]
}
function getInstanceById(key2) {
return instances[key2]
}
function registerTheme(name2, theme2) {
themeStorage[name2] = theme2
}
function registerPreprocessor(preprocessorFunc) {
if (indexOf(optionPreprocessorFuncs, preprocessorFunc) < 0) {
optionPreprocessorFuncs.push(preprocessorFunc)
}
}
function registerProcessor(priority, processor) {
normalizeRegister(
dataProcessorFuncs,
priority,
processor,
PRIORITY_PROCESSOR_DEFAULT
)
}
function registerPostInit(postInitFunc) {
registerUpdateLifecycle('afterinit', postInitFunc)
}
function registerPostUpdate(postUpdateFunc) {
registerUpdateLifecycle('afterupdate', postUpdateFunc)
}
function registerUpdateLifecycle(name2, cb) {
lifecycle$1.on(name2, cb)
}
function registerAction(actionInfo2, eventName, action) {
if (isFunction$4(eventName)) {
action = eventName
eventName = ''
}
var actionType = isObject$b(actionInfo2)
? actionInfo2.type
: [
actionInfo2,
(actionInfo2 = {
event: eventName,
}),
][0]
actionInfo2.event = (actionInfo2.event || actionType).toLowerCase()
eventName = actionInfo2.event
if (eventActionMap[eventName]) {
return
}
assert(ACTION_REG.test(actionType) && ACTION_REG.test(eventName))
if (!actions[actionType]) {
actions[actionType] = {
action,
actionInfo: actionInfo2,
}
}
eventActionMap[eventName] = actionType
}
function registerCoordinateSystem(type4, coordSysCreator) {
CoordinateSystem.register(type4, coordSysCreator)
}
function getCoordinateSystemDimensions(type4) {
var coordSysCreator = CoordinateSystem.get(type4)
if (coordSysCreator) {
return coordSysCreator.getDimensionsInfo
? coordSysCreator.getDimensionsInfo()
: coordSysCreator.dimensions.slice()
}
}
function registerLayout(priority, layoutTask) {
normalizeRegister(
visualFuncs,
priority,
layoutTask,
PRIORITY_VISUAL_LAYOUT,
'layout'
)
}
function registerVisual(priority, visualTask) {
normalizeRegister(
visualFuncs,
priority,
visualTask,
PRIORITY_VISUAL_CHART,
'visual'
)
}
var registeredTasks = []
function normalizeRegister(
targetList,
priority,
fn2,
defaultPriority,
visualType
) {
if (isFunction$4(priority) || isObject$b(priority)) {
fn2 = priority
priority = defaultPriority
}
if (indexOf(registeredTasks, fn2) >= 0) {
return
}
registeredTasks.push(fn2)
var stageHandler = Scheduler$1.wrapStageHandler(fn2, visualType)
stageHandler.__prio = priority
stageHandler.__raw = fn2
targetList.push(stageHandler)
}
function registerLoading(name2, loadingFx) {
loadingEffects[name2] = loadingFx
}
function setCanvasCreator(creator) {
setPlatformAPI({
createCanvas: creator,
})
}
function registerMap$1(mapName, geoJson, specialAreas) {
var registerMap2 = getImpl('registerMap')
registerMap2 && registerMap2(mapName, geoJson, specialAreas)
}
function getMap(mapName) {
var getMap2 = getImpl('getMap')
return getMap2 && getMap2(mapName)
}
var registerTransform = registerExternalTransform
registerVisual(PRIORITY_VISUAL_GLOBAL, seriesStyleTask)
registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataStyleTask)
registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataColorPaletteTask)
registerVisual(PRIORITY_VISUAL_GLOBAL, seriesSymbolTask)
registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataSymbolTask)
registerVisual(PRIORITY_VISUAL_DECAL, decalVisual)
registerPreprocessor(globalBackwardCompat)
registerProcessor(PRIORITY_PROCESSOR_DATASTACK, dataStack$1)
registerLoading('default', defaultLoading)
registerAction(
{
type: HIGHLIGHT_ACTION_TYPE,
event: HIGHLIGHT_ACTION_TYPE,
update: HIGHLIGHT_ACTION_TYPE,
},
noop
)
registerAction(
{
type: DOWNPLAY_ACTION_TYPE,
event: DOWNPLAY_ACTION_TYPE,
update: DOWNPLAY_ACTION_TYPE,
},
noop
)
registerAction(
{
type: SELECT_ACTION_TYPE,
event: SELECT_ACTION_TYPE,
update: SELECT_ACTION_TYPE,
},
noop
)
registerAction(
{
type: UNSELECT_ACTION_TYPE,
event: UNSELECT_ACTION_TYPE,
update: UNSELECT_ACTION_TYPE,
},
noop
)
registerAction(
{
type: TOGGLE_SELECT_ACTION_TYPE,
event: TOGGLE_SELECT_ACTION_TYPE,
update: TOGGLE_SELECT_ACTION_TYPE,
},
noop
)
registerTheme('light', lightTheme)
registerTheme('dark', darkTheme)
var dataTool = {}
function dataIndexMapValueLength(valNumOrArrLengthMoreThan2) {
return valNumOrArrLengthMoreThan2 == null
? 0
: valNumOrArrLengthMoreThan2.length || 1
}
function defaultKeyGetter(item2) {
return item2
}
var DataDiffer = (function () {
function DataDiffer2(
oldArr,
newArr,
oldKeyGetter,
newKeyGetter,
context2,
diffMode
) {
this._old = oldArr
this._new = newArr
this._oldKeyGetter = oldKeyGetter || defaultKeyGetter
this._newKeyGetter = newKeyGetter || defaultKeyGetter
this.context = context2
this._diffModeMultiple = diffMode === 'multiple'
}
DataDiffer2.prototype.add = function (func) {
this._add = func
return this
}
DataDiffer2.prototype.update = function (func) {
this._update = func
return this
}
DataDiffer2.prototype.updateManyToOne = function (func) {
this._updateManyToOne = func
return this
}
DataDiffer2.prototype.updateOneToMany = function (func) {
this._updateOneToMany = func
return this
}
DataDiffer2.prototype.updateManyToMany = function (func) {
this._updateManyToMany = func
return this
}
DataDiffer2.prototype.remove = function (func) {
this._remove = func
return this
}
DataDiffer2.prototype.execute = function () {
this[this._diffModeMultiple ? '_executeMultiple' : '_executeOneToOne']()
}
DataDiffer2.prototype._executeOneToOne = function () {
var oldArr = this._old
var newArr = this._new
var newDataIndexMap = {}
var oldDataKeyArr = new Array(oldArr.length)
var newDataKeyArr = new Array(newArr.length)
this._initIndexMap(oldArr, null, oldDataKeyArr, '_oldKeyGetter')
this._initIndexMap(newArr, newDataIndexMap, newDataKeyArr, '_newKeyGetter')
for (var i2 = 0; i2 < oldArr.length; i2++) {
var oldKey = oldDataKeyArr[i2]
var newIdxMapVal = newDataIndexMap[oldKey]
var newIdxMapValLen = dataIndexMapValueLength(newIdxMapVal)
if (newIdxMapValLen > 1) {
var newIdx = newIdxMapVal.shift()
if (newIdxMapVal.length === 1) {
newDataIndexMap[oldKey] = newIdxMapVal[0]
}
this._update && this._update(newIdx, i2)
} else if (newIdxMapValLen === 1) {
newDataIndexMap[oldKey] = null
this._update && this._update(newIdxMapVal, i2)
} else {
this._remove && this._remove(i2)
}
}
this._performRestAdd(newDataKeyArr, newDataIndexMap)
}
DataDiffer2.prototype._executeMultiple = function () {
var oldArr = this._old
var newArr = this._new
var oldDataIndexMap = {}
var newDataIndexMap = {}
var oldDataKeyArr = []
var newDataKeyArr = []
this._initIndexMap(oldArr, oldDataIndexMap, oldDataKeyArr, '_oldKeyGetter')
this._initIndexMap(newArr, newDataIndexMap, newDataKeyArr, '_newKeyGetter')
for (var i2 = 0; i2 < oldDataKeyArr.length; i2++) {
var oldKey = oldDataKeyArr[i2]
var oldIdxMapVal = oldDataIndexMap[oldKey]
var newIdxMapVal = newDataIndexMap[oldKey]
var oldIdxMapValLen = dataIndexMapValueLength(oldIdxMapVal)
var newIdxMapValLen = dataIndexMapValueLength(newIdxMapVal)
if (oldIdxMapValLen > 1 && newIdxMapValLen === 1) {
this._updateManyToOne &&
this._updateManyToOne(newIdxMapVal, oldIdxMapVal)
newDataIndexMap[oldKey] = null
} else if (oldIdxMapValLen === 1 && newIdxMapValLen > 1) {
this._updateOneToMany &&
this._updateOneToMany(newIdxMapVal, oldIdxMapVal)
newDataIndexMap[oldKey] = null
} else if (oldIdxMapValLen === 1 && newIdxMapValLen === 1) {
this._update && this._update(newIdxMapVal, oldIdxMapVal)
newDataIndexMap[oldKey] = null
} else if (oldIdxMapValLen > 1 && newIdxMapValLen > 1) {
this._updateManyToMany &&
this._updateManyToMany(newIdxMapVal, oldIdxMapVal)
newDataIndexMap[oldKey] = null
} else if (oldIdxMapValLen > 1) {
for (var i_1 = 0; i_1 < oldIdxMapValLen; i_1++) {
this._remove && this._remove(oldIdxMapVal[i_1])
}
} else {
this._remove && this._remove(oldIdxMapVal)
}
}
this._performRestAdd(newDataKeyArr, newDataIndexMap)
}
DataDiffer2.prototype._performRestAdd = function (
newDataKeyArr,
newDataIndexMap
) {
for (var i2 = 0; i2 < newDataKeyArr.length; i2++) {
var newKey = newDataKeyArr[i2]
var newIdxMapVal = newDataIndexMap[newKey]
var idxMapValLen = dataIndexMapValueLength(newIdxMapVal)
if (idxMapValLen > 1) {
for (var j2 = 0; j2 < idxMapValLen; j2++) {
this._add && this._add(newIdxMapVal[j2])
}
} else if (idxMapValLen === 1) {
this._add && this._add(newIdxMapVal)
}
newDataIndexMap[newKey] = null
}
}
DataDiffer2.prototype._initIndexMap = function (
arr,
map2,
keyArr,
keyGetterName
) {
var cbModeMultiple = this._diffModeMultiple
for (var i2 = 0; i2 < arr.length; i2++) {
var key2 = '_ec_' + this[keyGetterName](arr[i2], i2)
if (!cbModeMultiple) {
keyArr[i2] = key2
}
if (!map2) {
continue
}
var idxMapVal = map2[key2]
var idxMapValLen = dataIndexMapValueLength(idxMapVal)
if (idxMapValLen === 0) {
map2[key2] = i2
if (cbModeMultiple) {
keyArr.push(key2)
}
} else if (idxMapValLen === 1) {
map2[key2] = [idxMapVal, i2]
} else {
idxMapVal.push(i2)
}
}
}
return DataDiffer2
})()
var DataDiffer$1 = DataDiffer
var DimensionUserOuput = (function () {
function DimensionUserOuput2(encode2, dimRequest) {
this._encode = encode2
this._schema = dimRequest
}
DimensionUserOuput2.prototype.get = function () {
return {
fullDimensions: this._getFullDimensionNames(),
encode: this._encode,
}
}
DimensionUserOuput2.prototype._getFullDimensionNames = function () {
if (!this._cachedDimNames) {
this._cachedDimNames = this._schema
? this._schema.makeOutputDimensionNames()
: []
}
return this._cachedDimNames
}
return DimensionUserOuput2
})()
function summarizeDimensions(data2, schema) {
var summary = {}
var encode2 = (summary.encode = {})
var notExtraCoordDimMap = createHashMap()
var defaultedLabel = []
var defaultedTooltip = []
var userOutputEncode = {}
each$f(data2.dimensions, function (dimName) {
var dimItem = data2.getDimensionInfo(dimName)
var coordDim = dimItem.coordDim
if (coordDim) {
var coordDimIndex = dimItem.coordDimIndex
getOrCreateEncodeArr(encode2, coordDim)[coordDimIndex] = dimName
if (!dimItem.isExtraCoord) {
notExtraCoordDimMap.set(coordDim, 1)
if (mayLabelDimType(dimItem.type)) {
defaultedLabel[0] = dimName
}
getOrCreateEncodeArr(userOutputEncode, coordDim)[coordDimIndex] =
data2.getDimensionIndex(dimItem.name)
}
if (dimItem.defaultTooltip) {
defaultedTooltip.push(dimName)
}
}
VISUAL_DIMENSIONS.each(function (v4, otherDim) {
var encodeArr = getOrCreateEncodeArr(encode2, otherDim)
var dimIndex = dimItem.otherDims[otherDim]
if (dimIndex != null && dimIndex !== false) {
encodeArr[dimIndex] = dimItem.name
}
})
})
var dataDimsOnCoord = []
var encodeFirstDimNotExtra = {}
notExtraCoordDimMap.each(function (v4, coordDim) {
var dimArr = encode2[coordDim]
encodeFirstDimNotExtra[coordDim] = dimArr[0]
dataDimsOnCoord = dataDimsOnCoord.concat(dimArr)
})
summary.dataDimsOnCoord = dataDimsOnCoord
summary.dataDimIndicesOnCoord = map$1(dataDimsOnCoord, function (dimName) {
return data2.getDimensionInfo(dimName).storeDimIndex
})
summary.encodeFirstDimNotExtra = encodeFirstDimNotExtra
var encodeLabel = encode2.label
if (encodeLabel && encodeLabel.length) {
defaultedLabel = encodeLabel.slice()
}
var encodeTooltip = encode2.tooltip
if (encodeTooltip && encodeTooltip.length) {
defaultedTooltip = encodeTooltip.slice()
} else if (!defaultedTooltip.length) {
defaultedTooltip = defaultedLabel.slice()
}
encode2.defaultedLabel = defaultedLabel
encode2.defaultedTooltip = defaultedTooltip
summary.userOutput = new DimensionUserOuput(userOutputEncode, schema)
return summary
}
function getOrCreateEncodeArr(encode2, dim) {
if (!encode2.hasOwnProperty(dim)) {
encode2[dim] = []
}
return encode2[dim]
}
function getDimensionTypeByAxis(axisType) {
return axisType === 'category'
? 'ordinal'
: axisType === 'time'
? 'time'
: 'float'
}
function mayLabelDimType(dimType) {
return !(dimType === 'ordinal' || dimType === 'time')
}
var SeriesDimensionDefine = (function () {
function SeriesDimensionDefine2(opt) {
this.otherDims = {}
if (opt != null) {
extend(this, opt)
}
}
return SeriesDimensionDefine2
})()
var SeriesDimensionDefine$1 = SeriesDimensionDefine
var inner$h = makeInner()
var dimTypeShort = {
float: 'f',
int: 'i',
ordinal: 'o',
number: 'n',
time: 't',
}
var SeriesDataSchema = (function () {
function SeriesDataSchema2(opt) {
this.dimensions = opt.dimensions
this._dimOmitted = opt.dimensionOmitted
this.source = opt.source
this._fullDimCount = opt.fullDimensionCount
this._updateDimOmitted(opt.dimensionOmitted)
}
SeriesDataSchema2.prototype.isDimensionOmitted = function () {
return this._dimOmitted
}
SeriesDataSchema2.prototype._updateDimOmitted = function (dimensionOmitted) {
this._dimOmitted = dimensionOmitted
if (!dimensionOmitted) {
return
}
if (!this._dimNameMap) {
this._dimNameMap = ensureSourceDimNameMap(this.source)
}
}
SeriesDataSchema2.prototype.getSourceDimensionIndex = function (dimName) {
return retrieve2(this._dimNameMap.get(dimName), -1)
}
SeriesDataSchema2.prototype.getSourceDimension = function (dimIndex) {
var dimensionsDefine = this.source.dimensionsDefine
if (dimensionsDefine) {
return dimensionsDefine[dimIndex]
}
}
SeriesDataSchema2.prototype.makeStoreSchema = function () {
var dimCount = this._fullDimCount
var willRetrieveDataByName = shouldRetrieveDataByName(this.source)
var makeHashStrict = !shouldOmitUnusedDimensions(dimCount)
var dimHash = ''
var dims = []
for (
var fullDimIdx = 0, seriesDimIdx = 0;
fullDimIdx < dimCount;
fullDimIdx++
) {
var property2 = void 0
var type4 = void 0
var ordinalMeta = void 0
var seriesDimDef = this.dimensions[seriesDimIdx]
if (seriesDimDef && seriesDimDef.storeDimIndex === fullDimIdx) {
property2 = willRetrieveDataByName ? seriesDimDef.name : null
type4 = seriesDimDef.type
ordinalMeta = seriesDimDef.ordinalMeta
seriesDimIdx++
} else {
var sourceDimDef = this.getSourceDimension(fullDimIdx)
if (sourceDimDef) {
property2 = willRetrieveDataByName ? sourceDimDef.name : null
type4 = sourceDimDef.type
}
}
dims.push({
property: property2,
type: type4,
ordinalMeta,
})
if (
willRetrieveDataByName &&
property2 != null &&
(!seriesDimDef || !seriesDimDef.isCalculationCoord)
) {
dimHash += makeHashStrict
? property2.replace(/\`/g, '`1').replace(/\$/g, '`2')
: property2
}
dimHash += '$'
dimHash += dimTypeShort[type4] || 'f'
if (ordinalMeta) {
dimHash += ordinalMeta.uid
}
dimHash += '$'
}
var source2 = this.source
var hash2 = [source2.seriesLayoutBy, source2.startIndex, dimHash].join('$$')
return {
dimensions: dims,
hash: hash2,
}
}
SeriesDataSchema2.prototype.makeOutputDimensionNames = function () {
var result = []
for (
var fullDimIdx = 0, seriesDimIdx = 0;
fullDimIdx < this._fullDimCount;
fullDimIdx++
) {
var name_1 = void 0
var seriesDimDef = this.dimensions[seriesDimIdx]
if (seriesDimDef && seriesDimDef.storeDimIndex === fullDimIdx) {
if (!seriesDimDef.isCalculationCoord) {
name_1 = seriesDimDef.name
}
seriesDimIdx++
} else {
var sourceDimDef = this.getSourceDimension(fullDimIdx)
if (sourceDimDef) {
name_1 = sourceDimDef.name
}
}
result.push(name_1)
}
return result
}
SeriesDataSchema2.prototype.appendCalculationDimension = function (dimDef) {
this.dimensions.push(dimDef)
dimDef.isCalculationCoord = true
this._fullDimCount++
this._updateDimOmitted(true)
}
return SeriesDataSchema2
})()
function isSeriesDataSchema(schema) {
return schema instanceof SeriesDataSchema
}
function createDimNameMap(dimsDef) {
var dataDimNameMap = createHashMap()
for (var i2 = 0; i2 < (dimsDef || []).length; i2++) {
var dimDefItemRaw = dimsDef[i2]
var userDimName = isObject$b(dimDefItemRaw)
? dimDefItemRaw.name
: dimDefItemRaw
if (userDimName != null && dataDimNameMap.get(userDimName) == null) {
dataDimNameMap.set(userDimName, i2)
}
}
return dataDimNameMap
}
function ensureSourceDimNameMap(source2) {
var innerSource = inner$h(source2)
return (
innerSource.dimNameMap ||
(innerSource.dimNameMap = createDimNameMap(source2.dimensionsDefine))
)
}
function shouldOmitUnusedDimensions(dimCount) {
return dimCount > 30
}
var isObject$9 = isObject$b
var map = map$1
var CtorInt32Array = typeof Int32Array === 'undefined' ? Array : Int32Array
var ID_PREFIX = 'e\0\0'
var INDEX_NOT_FOUND = -1
var TRANSFERABLE_PROPERTIES = [
'hasItemOption',
'_nameList',
'_idList',
'_invertedIndicesMap',
'_dimSummary',
'userOutput',
'_rawData',
'_dimValueGetter',
'_nameDimIdx',
'_idDimIdx',
'_nameRepeatCount',
]
var CLONE_PROPERTIES = ['_approximateExtent']
var prepareInvertedIndex
var getId
var getIdNameFromStore
var normalizeDimensions
var transferProperties
var cloneListForMapAndSample
var makeIdFromName
var SeriesData = (function () {
function SeriesData2(dimensionsInput, hostModel) {
this.type = 'list'
this._dimOmitted = false
this._nameList = []
this._idList = []
this._visual = {}
this._layout = {}
this._itemVisuals = []
this._itemLayouts = []
this._graphicEls = []
this._approximateExtent = {}
this._calculationInfo = {}
this.hasItemOption = false
this.TRANSFERABLE_METHODS = [
'cloneShallow',
'downSample',
'lttbDownSample',
'map',
]
this.CHANGABLE_METHODS = ['filterSelf', 'selectRange']
this.DOWNSAMPLE_METHODS = ['downSample', 'lttbDownSample']
var dimensions
var assignStoreDimIdx = false
if (isSeriesDataSchema(dimensionsInput)) {
dimensions = dimensionsInput.dimensions
this._dimOmitted = dimensionsInput.isDimensionOmitted()
this._schema = dimensionsInput
} else {
assignStoreDimIdx = true
dimensions = dimensionsInput
}
dimensions = dimensions || ['x', 'y']
var dimensionInfos = {}
var dimensionNames = []
var invertedIndicesMap = {}
var needsHasOwn = false
var emptyObj = {}
for (var i2 = 0; i2 < dimensions.length; i2++) {
var dimInfoInput = dimensions[i2]
var dimensionInfo = isString$2(dimInfoInput)
? new SeriesDimensionDefine$1({
name: dimInfoInput,
})
: !(dimInfoInput instanceof SeriesDimensionDefine$1)
? new SeriesDimensionDefine$1(dimInfoInput)
: dimInfoInput
var dimensionName = dimensionInfo.name
dimensionInfo.type = dimensionInfo.type || 'float'
if (!dimensionInfo.coordDim) {
dimensionInfo.coordDim = dimensionName
dimensionInfo.coordDimIndex = 0
}
var otherDims = (dimensionInfo.otherDims = dimensionInfo.otherDims || {})
dimensionNames.push(dimensionName)
dimensionInfos[dimensionName] = dimensionInfo
if (emptyObj[dimensionName] != null) {
needsHasOwn = true
}
if (dimensionInfo.createInvertedIndices) {
invertedIndicesMap[dimensionName] = []
}
if (otherDims.itemName === 0) {
this._nameDimIdx = i2
}
if (otherDims.itemId === 0) {
this._idDimIdx = i2
}
if (assignStoreDimIdx) {
dimensionInfo.storeDimIndex = i2
}
}
this.dimensions = dimensionNames
this._dimInfos = dimensionInfos
this._initGetDimensionInfo(needsHasOwn)
this.hostModel = hostModel
this._invertedIndicesMap = invertedIndicesMap
if (this._dimOmitted) {
var dimIdxToName_1 = (this._dimIdxToName = createHashMap())
each$f(dimensionNames, function (dimName) {
dimIdxToName_1.set(dimensionInfos[dimName].storeDimIndex, dimName)
})
}
}
SeriesData2.prototype.getDimension = function (dim) {
var dimIdx = this._recognizeDimIndex(dim)
if (dimIdx == null) {
return dim
}
dimIdx = dim
if (!this._dimOmitted) {
return this.dimensions[dimIdx]
}
var dimName = this._dimIdxToName.get(dimIdx)
if (dimName != null) {
return dimName
}
var sourceDimDef = this._schema.getSourceDimension(dimIdx)
if (sourceDimDef) {
return sourceDimDef.name
}
}
SeriesData2.prototype.getDimensionIndex = function (dim) {
var dimIdx = this._recognizeDimIndex(dim)
if (dimIdx != null) {
return dimIdx
}
if (dim == null) {
return -1
}
var dimInfo = this._getDimInfo(dim)
return dimInfo
? dimInfo.storeDimIndex
: this._dimOmitted
? this._schema.getSourceDimensionIndex(dim)
: -1
}
SeriesData2.prototype._recognizeDimIndex = function (dim) {
if (
isNumber$2(dim) ||
(dim != null &&
!isNaN(dim) &&
!this._getDimInfo(dim) &&
(!this._dimOmitted || this._schema.getSourceDimensionIndex(dim) < 0))
) {
return +dim
}
}
SeriesData2.prototype._getStoreDimIndex = function (dim) {
var dimIdx = this.getDimensionIndex(dim)
return dimIdx
}
SeriesData2.prototype.getDimensionInfo = function (dim) {
return this._getDimInfo(this.getDimension(dim))
}
SeriesData2.prototype._initGetDimensionInfo = function (needsHasOwn) {
var dimensionInfos = this._dimInfos
this._getDimInfo = needsHasOwn
? function (dimName) {
return dimensionInfos.hasOwnProperty(dimName)
? dimensionInfos[dimName]
: void 0
}
: function (dimName) {
return dimensionInfos[dimName]
}
}
SeriesData2.prototype.getDimensionsOnCoord = function () {
return this._dimSummary.dataDimsOnCoord.slice()
}
SeriesData2.prototype.mapDimension = function (coordDim, idx) {
var dimensionsSummary = this._dimSummary
if (idx == null) {
return dimensionsSummary.encodeFirstDimNotExtra[coordDim]
}
var dims = dimensionsSummary.encode[coordDim]
return dims ? dims[idx] : null
}
SeriesData2.prototype.mapDimensionsAll = function (coordDim) {
var dimensionsSummary = this._dimSummary
var dims = dimensionsSummary.encode[coordDim]
return (dims || []).slice()
}
SeriesData2.prototype.getStore = function () {
return this._store
}
SeriesData2.prototype.initData = function (data2, nameList, dimValueGetter) {
var _this = this
var store2
if (data2 instanceof DataStore$1) {
store2 = data2
}
if (!store2) {
var dimensions = this.dimensions
var provider =
isSourceInstance(data2) || isArrayLike$3(data2)
? new DefaultDataProvider(data2, dimensions.length)
: data2
store2 = new DataStore$1()
var dimensionInfos = map(dimensions, function (dimName) {
return {
type: _this._dimInfos[dimName].type,
property: dimName,
}
})
store2.initData(provider, dimensionInfos, dimValueGetter)
}
this._store = store2
this._nameList = (nameList || []).slice()
this._idList = []
this._nameRepeatCount = {}
this._doInit(0, store2.count())
this._dimSummary = summarizeDimensions(this, this._schema)
this.userOutput = this._dimSummary.userOutput
}
SeriesData2.prototype.appendData = function (data2) {
var range3 = this._store.appendData(data2)
this._doInit(range3[0], range3[1])
}
SeriesData2.prototype.appendValues = function (values2, names2) {
var _a2 = this._store.appendValues(values2, names2.length),
start2 = _a2.start,
end2 = _a2.end
var shouldMakeIdFromName = this._shouldMakeIdFromName()
this._updateOrdinalMeta()
if (names2) {
for (var idx = start2; idx < end2; idx++) {
var sourceIdx = idx - start2
this._nameList[idx] = names2[sourceIdx]
if (shouldMakeIdFromName) {
makeIdFromName(this, idx)
}
}
}
}
SeriesData2.prototype._updateOrdinalMeta = function () {
var store2 = this._store
var dimensions = this.dimensions
for (var i2 = 0; i2 < dimensions.length; i2++) {
var dimInfo = this._dimInfos[dimensions[i2]]
if (dimInfo.ordinalMeta) {
store2.collectOrdinalMeta(dimInfo.storeDimIndex, dimInfo.ordinalMeta)
}
}
}
SeriesData2.prototype._shouldMakeIdFromName = function () {
var provider = this._store.getProvider()
return (
this._idDimIdx == null &&
provider.getSource().sourceFormat !== SOURCE_FORMAT_TYPED_ARRAY &&
!provider.fillStorage
)
}
SeriesData2.prototype._doInit = function (start2, end2) {
if (start2 >= end2) {
return
}
var store2 = this._store
var provider = store2.getProvider()
this._updateOrdinalMeta()
var nameList = this._nameList
var idList = this._idList
var sourceFormat = provider.getSource().sourceFormat
var isFormatOriginal = sourceFormat === SOURCE_FORMAT_ORIGINAL
if (isFormatOriginal && !provider.pure) {
var sharedDataItem = []
for (var idx = start2; idx < end2; idx++) {
var dataItem = provider.getItem(idx, sharedDataItem)
if (!this.hasItemOption && isDataItemOption(dataItem)) {
this.hasItemOption = true
}
if (dataItem) {
var itemName = dataItem.name
if (nameList[idx] == null && itemName != null) {
nameList[idx] = convertOptionIdName(itemName, null)
}
var itemId = dataItem.id
if (idList[idx] == null && itemId != null) {
idList[idx] = convertOptionIdName(itemId, null)
}
}
}
}
if (this._shouldMakeIdFromName()) {
for (var idx = start2; idx < end2; idx++) {
makeIdFromName(this, idx)
}
}
prepareInvertedIndex(this)
}
SeriesData2.prototype.getApproximateExtent = function (dim) {
return (
this._approximateExtent[dim] ||
this._store.getDataExtent(this._getStoreDimIndex(dim))
)
}
SeriesData2.prototype.setApproximateExtent = function (extent3, dim) {
dim = this.getDimension(dim)
this._approximateExtent[dim] = extent3.slice()
}
SeriesData2.prototype.getCalculationInfo = function (key2) {
return this._calculationInfo[key2]
}
SeriesData2.prototype.setCalculationInfo = function (key2, value2) {
isObject$9(key2)
? extend(this._calculationInfo, key2)
: (this._calculationInfo[key2] = value2)
}
SeriesData2.prototype.getName = function (idx) {
var rawIndex = this.getRawIndex(idx)
var name2 = this._nameList[rawIndex]
if (name2 == null && this._nameDimIdx != null) {
name2 = getIdNameFromStore(this, this._nameDimIdx, rawIndex)
}
if (name2 == null) {
name2 = ''
}
return name2
}
SeriesData2.prototype._getCategory = function (dimIdx, idx) {
var ordinal = this._store.get(dimIdx, idx)
var ordinalMeta = this._store.getOrdinalMeta(dimIdx)
if (ordinalMeta) {
return ordinalMeta.categories[ordinal]
}
return ordinal
}
SeriesData2.prototype.getId = function (idx) {
return getId(this, this.getRawIndex(idx))
}
SeriesData2.prototype.count = function () {
return this._store.count()
}
SeriesData2.prototype.get = function (dim, idx) {
var store2 = this._store
var dimInfo = this._dimInfos[dim]
if (dimInfo) {
return store2.get(dimInfo.storeDimIndex, idx)
}
}
SeriesData2.prototype.getByRawIndex = function (dim, rawIdx) {
var store2 = this._store
var dimInfo = this._dimInfos[dim]
if (dimInfo) {
return store2.getByRawIndex(dimInfo.storeDimIndex, rawIdx)
}
}
SeriesData2.prototype.getIndices = function () {
return this._store.getIndices()
}
SeriesData2.prototype.getDataExtent = function (dim) {
return this._store.getDataExtent(this._getStoreDimIndex(dim))
}
SeriesData2.prototype.getSum = function (dim) {
return this._store.getSum(this._getStoreDimIndex(dim))
}
SeriesData2.prototype.getMedian = function (dim) {
return this._store.getMedian(this._getStoreDimIndex(dim))
}
SeriesData2.prototype.getValues = function (dimensions, idx) {
var _this = this
var store2 = this._store
return isArray$6(dimensions)
? store2.getValues(
map(dimensions, function (dim) {
return _this._getStoreDimIndex(dim)
}),
idx
)
: store2.getValues(dimensions)
}
SeriesData2.prototype.hasValue = function (idx) {
var dataDimIndicesOnCoord = this._dimSummary.dataDimIndicesOnCoord
for (var i2 = 0, len2 = dataDimIndicesOnCoord.length; i2 < len2; i2++) {
if (isNaN(this._store.get(dataDimIndicesOnCoord[i2], idx))) {
return false
}
}
return true
}
SeriesData2.prototype.indexOfName = function (name2) {
for (var i2 = 0, len2 = this._store.count(); i2 < len2; i2++) {
if (this.getName(i2) === name2) {
return i2
}
}
return -1
}
SeriesData2.prototype.getRawIndex = function (idx) {
return this._store.getRawIndex(idx)
}
SeriesData2.prototype.indexOfRawIndex = function (rawIndex) {
return this._store.indexOfRawIndex(rawIndex)
}
SeriesData2.prototype.rawIndexOf = function (dim, value2) {
var invertedIndices = dim && this._invertedIndicesMap[dim]
var rawIndex = invertedIndices[value2]
if (rawIndex == null || isNaN(rawIndex)) {
return INDEX_NOT_FOUND
}
return rawIndex
}
SeriesData2.prototype.indicesOfNearest = function (dim, value2, maxDistance) {
return this._store.indicesOfNearest(
this._getStoreDimIndex(dim),
value2,
maxDistance
)
}
SeriesData2.prototype.each = function (dims, cb, ctx) {
if (isFunction$4(dims)) {
ctx = cb
cb = dims
dims = []
}
var fCtx = ctx || this
var dimIndices = map(
normalizeDimensions(dims),
this._getStoreDimIndex,
this
)
this._store.each(dimIndices, fCtx ? bind$1(cb, fCtx) : cb)
}
SeriesData2.prototype.filterSelf = function (dims, cb, ctx) {
if (isFunction$4(dims)) {
ctx = cb
cb = dims
dims = []
}
var fCtx = ctx || this
var dimIndices = map(
normalizeDimensions(dims),
this._getStoreDimIndex,
this
)
this._store = this._store.filter(dimIndices, fCtx ? bind$1(cb, fCtx) : cb)
return this
}
SeriesData2.prototype.selectRange = function (range3) {
var _this = this
var innerRange = {}
var dims = keys$4(range3)
each$f(dims, function (dim) {
var dimIdx = _this._getStoreDimIndex(dim)
innerRange[dimIdx] = range3[dim]
})
this._store = this._store.selectRange(innerRange)
return this
}
SeriesData2.prototype.mapArray = function (dims, cb, ctx) {
if (isFunction$4(dims)) {
ctx = cb
cb = dims
dims = []
}
ctx = ctx || this
var result = []
this.each(
dims,
function () {
result.push(cb && cb.apply(this, arguments))
},
ctx
)
return result
}
SeriesData2.prototype.map = function (dims, cb, ctx, ctxCompat) {
var fCtx = ctx || ctxCompat || this
var dimIndices = map(
normalizeDimensions(dims),
this._getStoreDimIndex,
this
)
var list2 = cloneListForMapAndSample(this)
list2._store = this._store.map(dimIndices, fCtx ? bind$1(cb, fCtx) : cb)
return list2
}
SeriesData2.prototype.modify = function (dims, cb, ctx, ctxCompat) {
var fCtx = ctx || ctxCompat || this
var dimIndices = map(
normalizeDimensions(dims),
this._getStoreDimIndex,
this
)
this._store.modify(dimIndices, fCtx ? bind$1(cb, fCtx) : cb)
}
SeriesData2.prototype.downSample = function (
dimension,
rate,
sampleValue,
sampleIndex
) {
var list2 = cloneListForMapAndSample(this)
list2._store = this._store.downSample(
this._getStoreDimIndex(dimension),
rate,
sampleValue,
sampleIndex
)
return list2
}
SeriesData2.prototype.lttbDownSample = function (valueDimension, rate) {
var list2 = cloneListForMapAndSample(this)
list2._store = this._store.lttbDownSample(
this._getStoreDimIndex(valueDimension),
rate
)
return list2
}
SeriesData2.prototype.getRawDataItem = function (idx) {
return this._store.getRawDataItem(idx)
}
SeriesData2.prototype.getItemModel = function (idx) {
var hostModel = this.hostModel
var dataItem = this.getRawDataItem(idx)
return new Model$1(dataItem, hostModel, hostModel && hostModel.ecModel)
}
SeriesData2.prototype.diff = function (otherList) {
var thisList = this
return new DataDiffer$1(
otherList ? otherList.getStore().getIndices() : [],
this.getStore().getIndices(),
function (idx) {
return getId(otherList, idx)
},
function (idx) {
return getId(thisList, idx)
}
)
}
SeriesData2.prototype.getVisual = function (key2) {
var visual = this._visual
return visual && visual[key2]
}
SeriesData2.prototype.setVisual = function (kvObj, val2) {
this._visual = this._visual || {}
if (isObject$9(kvObj)) {
extend(this._visual, kvObj)
} else {
this._visual[kvObj] = val2
}
}
SeriesData2.prototype.getItemVisual = function (idx, key2) {
var itemVisual = this._itemVisuals[idx]
var val2 = itemVisual && itemVisual[key2]
if (val2 == null) {
return this.getVisual(key2)
}
return val2
}
SeriesData2.prototype.hasItemVisual = function () {
return this._itemVisuals.length > 0
}
SeriesData2.prototype.ensureUniqueItemVisual = function (idx, key2) {
var itemVisuals = this._itemVisuals
var itemVisual = itemVisuals[idx]
if (!itemVisual) {
itemVisual = itemVisuals[idx] = {}
}
var val2 = itemVisual[key2]
if (val2 == null) {
val2 = this.getVisual(key2)
if (isArray$6(val2)) {
val2 = val2.slice()
} else if (isObject$9(val2)) {
val2 = extend({}, val2)
}
itemVisual[key2] = val2
}
return val2
}
SeriesData2.prototype.setItemVisual = function (idx, key2, value2) {
var itemVisual = this._itemVisuals[idx] || {}
this._itemVisuals[idx] = itemVisual
if (isObject$9(key2)) {
extend(itemVisual, key2)
} else {
itemVisual[key2] = value2
}
}
SeriesData2.prototype.clearAllVisual = function () {
this._visual = {}
this._itemVisuals = []
}
SeriesData2.prototype.setLayout = function (key2, val2) {
isObject$9(key2) ? extend(this._layout, key2) : (this._layout[key2] = val2)
}
SeriesData2.prototype.getLayout = function (key2) {
return this._layout[key2]
}
SeriesData2.prototype.getItemLayout = function (idx) {
return this._itemLayouts[idx]
}
SeriesData2.prototype.setItemLayout = function (idx, layout2, merge2) {
this._itemLayouts[idx] = merge2
? extend(this._itemLayouts[idx] || {}, layout2)
: layout2
}
SeriesData2.prototype.clearItemLayouts = function () {
this._itemLayouts.length = 0
}
SeriesData2.prototype.setItemGraphicEl = function (idx, el2) {
var seriesIndex = this.hostModel && this.hostModel.seriesIndex
setCommonECData(seriesIndex, this.dataType, idx, el2)
this._graphicEls[idx] = el2
}
SeriesData2.prototype.getItemGraphicEl = function (idx) {
return this._graphicEls[idx]
}
SeriesData2.prototype.eachItemGraphicEl = function (cb, context2) {
each$f(this._graphicEls, function (el2, idx) {
if (el2) {
cb && cb.call(context2, el2, idx)
}
})
}
SeriesData2.prototype.cloneShallow = function (list2) {
if (!list2) {
list2 = new SeriesData2(
this._schema
? this._schema
: map(this.dimensions, this._getDimInfo, this),
this.hostModel
)
}
transferProperties(list2, this)
list2._store = this._store
return list2
}
SeriesData2.prototype.wrapMethod = function (methodName, injectFunction) {
var originalMethod = this[methodName]
if (!isFunction$4(originalMethod)) {
return
}
this.__wrappedMethods = this.__wrappedMethods || []
this.__wrappedMethods.push(methodName)
this[methodName] = function () {
var res = originalMethod.apply(this, arguments)
return injectFunction.apply(this, [res].concat(slice(arguments)))
}
}
SeriesData2.internalField = (function () {
prepareInvertedIndex = function (data2) {
var invertedIndicesMap = data2._invertedIndicesMap
each$f(invertedIndicesMap, function (invertedIndices, dim) {
var dimInfo = data2._dimInfos[dim]
var ordinalMeta = dimInfo.ordinalMeta
var store2 = data2._store
if (ordinalMeta) {
invertedIndices = invertedIndicesMap[dim] = new CtorInt32Array(
ordinalMeta.categories.length
)
for (var i2 = 0; i2 < invertedIndices.length; i2++) {
invertedIndices[i2] = INDEX_NOT_FOUND
}
for (var i2 = 0; i2 < store2.count(); i2++) {
invertedIndices[store2.get(dimInfo.storeDimIndex, i2)] = i2
}
}
})
}
getIdNameFromStore = function (data2, dimIdx, idx) {
return convertOptionIdName(data2._getCategory(dimIdx, idx), null)
}
getId = function (data2, rawIndex) {
var id2 = data2._idList[rawIndex]
if (id2 == null && data2._idDimIdx != null) {
id2 = getIdNameFromStore(data2, data2._idDimIdx, rawIndex)
}
if (id2 == null) {
id2 = ID_PREFIX + rawIndex
}
return id2
}
normalizeDimensions = function (dimensions) {
if (!isArray$6(dimensions)) {
dimensions = dimensions != null ? [dimensions] : []
}
return dimensions
}
cloneListForMapAndSample = function (original) {
var list2 = new SeriesData2(
original._schema
? original._schema
: map(original.dimensions, original._getDimInfo, original),
original.hostModel
)
transferProperties(list2, original)
return list2
}
transferProperties = function (target2, source2) {
each$f(
TRANSFERABLE_PROPERTIES.concat(source2.__wrappedMethods || []),
function (propName) {
if (source2.hasOwnProperty(propName)) {
target2[propName] = source2[propName]
}
}
)
target2.__wrappedMethods = source2.__wrappedMethods
each$f(CLONE_PROPERTIES, function (propName) {
target2[propName] = clone$4(source2[propName])
})
target2._calculationInfo = extend({}, source2._calculationInfo)
}
makeIdFromName = function (data2, idx) {
var nameList = data2._nameList
var idList = data2._idList
var nameDimIdx = data2._nameDimIdx
var idDimIdx = data2._idDimIdx
var name2 = nameList[idx]
var id2 = idList[idx]
if (name2 == null && nameDimIdx != null) {
nameList[idx] = name2 = getIdNameFromStore(data2, nameDimIdx, idx)
}
if (id2 == null && idDimIdx != null) {
idList[idx] = id2 = getIdNameFromStore(data2, idDimIdx, idx)
}
if (id2 == null && name2 != null) {
var nameRepeatCount = data2._nameRepeatCount
var nmCnt = (nameRepeatCount[name2] = (nameRepeatCount[name2] || 0) + 1)
id2 = name2
if (nmCnt > 1) {
id2 += '__ec__' + nmCnt
}
idList[idx] = id2
}
}
})()
return SeriesData2
})()
var SeriesData$1 = SeriesData
function createDimensions(source2, opt) {
return prepareSeriesDataSchema(source2, opt).dimensions
}
function prepareSeriesDataSchema(source2, opt) {
if (!isSourceInstance(source2)) {
source2 = createSourceFromSeriesDataOption(source2)
}
opt = opt || {}
var sysDims = opt.coordDimensions || []
var dimsDef = opt.dimensionsDefine || source2.dimensionsDefine || []
var coordDimNameMap = createHashMap()
var resultList = []
var dimCount = getDimCount(source2, sysDims, dimsDef, opt.dimensionsCount)
var omitUnusedDimensions =
opt.canOmitUnusedDimensions && shouldOmitUnusedDimensions(dimCount)
var isUsingSourceDimensionsDef = dimsDef === source2.dimensionsDefine
var dataDimNameMap = isUsingSourceDimensionsDef
? ensureSourceDimNameMap(source2)
: createDimNameMap(dimsDef)
var encodeDef = opt.encodeDefine
if (!encodeDef && opt.encodeDefaulter) {
encodeDef = opt.encodeDefaulter(source2, dimCount)
}
var encodeDefMap = createHashMap(encodeDef)
var indicesMap = new CtorInt32Array$1(dimCount)
for (var i2 = 0; i2 < indicesMap.length; i2++) {
indicesMap[i2] = -1
}
function getResultItem(dimIdx) {
var idx = indicesMap[dimIdx]
if (idx < 0) {
var dimDefItemRaw = dimsDef[dimIdx]
var dimDefItem = isObject$b(dimDefItemRaw)
? dimDefItemRaw
: {
name: dimDefItemRaw,
}
var resultItem2 = new SeriesDimensionDefine$1()
var userDimName = dimDefItem.name
if (userDimName != null && dataDimNameMap.get(userDimName) != null) {
resultItem2.name = resultItem2.displayName = userDimName
}
dimDefItem.type != null && (resultItem2.type = dimDefItem.type)
dimDefItem.displayName != null &&
(resultItem2.displayName = dimDefItem.displayName)
var newIdx = resultList.length
indicesMap[dimIdx] = newIdx
resultItem2.storeDimIndex = dimIdx
resultList.push(resultItem2)
return resultItem2
}
return resultList[idx]
}
if (!omitUnusedDimensions) {
for (var i2 = 0; i2 < dimCount; i2++) {
getResultItem(i2)
}
}
encodeDefMap.each(function (dataDimsRaw, coordDim2) {
var dataDims = normalizeToArray(dataDimsRaw).slice()
if (dataDims.length === 1 && !isString$2(dataDims[0]) && dataDims[0] < 0) {
encodeDefMap.set(coordDim2, false)
return
}
var validDataDims = encodeDefMap.set(coordDim2, [])
each$f(dataDims, function (resultDimIdxOrName, idx) {
var resultDimIdx2 = isString$2(resultDimIdxOrName)
? dataDimNameMap.get(resultDimIdxOrName)
: resultDimIdxOrName
if (resultDimIdx2 != null && resultDimIdx2 < dimCount) {
validDataDims[idx] = resultDimIdx2
applyDim(getResultItem(resultDimIdx2), coordDim2, idx)
}
})
})
var availDimIdx = 0
each$f(sysDims, function (sysDimItemRaw) {
var coordDim2
var sysDimItemDimsDef
var sysDimItemOtherDims
var sysDimItem
if (isString$2(sysDimItemRaw)) {
coordDim2 = sysDimItemRaw
sysDimItem = {}
} else {
sysDimItem = sysDimItemRaw
coordDim2 = sysDimItem.name
var ordinalMeta = sysDimItem.ordinalMeta
sysDimItem.ordinalMeta = null
sysDimItem = extend({}, sysDimItem)
sysDimItem.ordinalMeta = ordinalMeta
sysDimItemDimsDef = sysDimItem.dimsDef
sysDimItemOtherDims = sysDimItem.otherDims
sysDimItem.name =
sysDimItem.coordDim =
sysDimItem.coordDimIndex =
sysDimItem.dimsDef =
sysDimItem.otherDims =
null
}
var dataDims = encodeDefMap.get(coordDim2)
if (dataDims === false) {
return
}
dataDims = normalizeToArray(dataDims)
if (!dataDims.length) {
for (
var i3 = 0;
i3 < ((sysDimItemDimsDef && sysDimItemDimsDef.length) || 1);
i3++
) {
while (
availDimIdx < dimCount &&
getResultItem(availDimIdx).coordDim != null
) {
availDimIdx++
}
availDimIdx < dimCount && dataDims.push(availDimIdx++)
}
}
each$f(dataDims, function (resultDimIdx2, coordDimIndex) {
var resultItem2 = getResultItem(resultDimIdx2)
if (isUsingSourceDimensionsDef && sysDimItem.type != null) {
resultItem2.type = sysDimItem.type
}
applyDim(defaults(resultItem2, sysDimItem), coordDim2, coordDimIndex)
if (resultItem2.name == null && sysDimItemDimsDef) {
var sysDimItemDimsDefItem = sysDimItemDimsDef[coordDimIndex]
!isObject$b(sysDimItemDimsDefItem) &&
(sysDimItemDimsDefItem = {
name: sysDimItemDimsDefItem,
})
resultItem2.name = resultItem2.displayName = sysDimItemDimsDefItem.name
resultItem2.defaultTooltip = sysDimItemDimsDefItem.defaultTooltip
}
sysDimItemOtherDims &&
defaults(resultItem2.otherDims, sysDimItemOtherDims)
})
})
function applyDim(resultItem2, coordDim2, coordDimIndex) {
if (VISUAL_DIMENSIONS.get(coordDim2) != null) {
resultItem2.otherDims[coordDim2] = coordDimIndex
} else {
resultItem2.coordDim = coordDim2
resultItem2.coordDimIndex = coordDimIndex
coordDimNameMap.set(coordDim2, true)
}
}
var generateCoord = opt.generateCoord
var generateCoordCount = opt.generateCoordCount
var fromZero = generateCoordCount != null
generateCoordCount = generateCoord ? generateCoordCount || 1 : 0
var extra = generateCoord || 'value'
function ifNoNameFillWithCoordName(resultItem2) {
if (resultItem2.name == null) {
resultItem2.name = resultItem2.coordDim
}
}
if (!omitUnusedDimensions) {
for (var resultDimIdx = 0; resultDimIdx < dimCount; resultDimIdx++) {
var resultItem = getResultItem(resultDimIdx)
var coordDim = resultItem.coordDim
if (coordDim == null) {
resultItem.coordDim = genCoordDimName(extra, coordDimNameMap, fromZero)
resultItem.coordDimIndex = 0
if (!generateCoord || generateCoordCount <= 0) {
resultItem.isExtraCoord = true
}
generateCoordCount--
}
ifNoNameFillWithCoordName(resultItem)
if (
resultItem.type == null &&
(guessOrdinal(source2, resultDimIdx) === BE_ORDINAL.Must ||
(resultItem.isExtraCoord &&
(resultItem.otherDims.itemName != null ||
resultItem.otherDims.seriesName != null)))
) {
resultItem.type = 'ordinal'
}
}
} else {
each$f(resultList, function (resultItem2) {
ifNoNameFillWithCoordName(resultItem2)
})
resultList.sort(function (item0, item1) {
return item0.storeDimIndex - item1.storeDimIndex
})
}
removeDuplication(resultList)
return new SeriesDataSchema({
source: source2,
dimensions: resultList,
fullDimensionCount: dimCount,
dimensionOmitted: omitUnusedDimensions,
})
}
function removeDuplication(result) {
var duplicationMap = createHashMap()
for (var i2 = 0; i2 < result.length; i2++) {
var dim = result[i2]
var dimOriginalName = dim.name
var count2 = duplicationMap.get(dimOriginalName) || 0
if (count2 > 0) {
dim.name = dimOriginalName + (count2 - 1)
}
count2++
duplicationMap.set(dimOriginalName, count2)
}
}
function getDimCount(source2, sysDims, dimsDef, optDimCount) {
var dimCount = Math.max(
source2.dimensionsDetectedCount || 1,
sysDims.length,
dimsDef.length,
optDimCount || 0
)
each$f(sysDims, function (sysDimItem) {
var sysDimItemDimsDef
if (isObject$b(sysDimItem) && (sysDimItemDimsDef = sysDimItem.dimsDef)) {
dimCount = Math.max(dimCount, sysDimItemDimsDef.length)
}
})
return dimCount
}
function genCoordDimName(name2, map2, fromZero) {
if (fromZero || map2.hasKey(name2)) {
var i2 = 0
while (map2.hasKey(name2 + i2)) {
i2++
}
name2 += i2
}
map2.set(name2, true)
return name2
}
var CoordSysInfo = (function () {
function CoordSysInfo2(coordSysName) {
this.coordSysDims = []
this.axisMap = createHashMap()
this.categoryAxisMap = createHashMap()
this.coordSysName = coordSysName
}
return CoordSysInfo2
})()
function getCoordSysInfoBySeries(seriesModel) {
var coordSysName = seriesModel.get('coordinateSystem')
var result = new CoordSysInfo(coordSysName)
var fetch2 = fetchers[coordSysName]
if (fetch2) {
fetch2(seriesModel, result, result.axisMap, result.categoryAxisMap)
return result
}
}
var fetchers = {
cartesian2d: function (seriesModel, result, axisMap, categoryAxisMap) {
var xAxisModel = seriesModel.getReferringComponents(
'xAxis',
SINGLE_REFERRING
).models[0]
var yAxisModel = seriesModel.getReferringComponents(
'yAxis',
SINGLE_REFERRING
).models[0]
result.coordSysDims = ['x', 'y']
axisMap.set('x', xAxisModel)
axisMap.set('y', yAxisModel)
if (isCategory(xAxisModel)) {
categoryAxisMap.set('x', xAxisModel)
result.firstCategoryDimIndex = 0
}
if (isCategory(yAxisModel)) {
categoryAxisMap.set('y', yAxisModel)
result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1)
}
},
singleAxis: function (seriesModel, result, axisMap, categoryAxisMap) {
var singleAxisModel = seriesModel.getReferringComponents(
'singleAxis',
SINGLE_REFERRING
).models[0]
result.coordSysDims = ['single']
axisMap.set('single', singleAxisModel)
if (isCategory(singleAxisModel)) {
categoryAxisMap.set('single', singleAxisModel)
result.firstCategoryDimIndex = 0
}
},
polar: function (seriesModel, result, axisMap, categoryAxisMap) {
var polarModel = seriesModel.getReferringComponents(
'polar',
SINGLE_REFERRING
).models[0]
var radiusAxisModel = polarModel.findAxisModel('radiusAxis')
var angleAxisModel = polarModel.findAxisModel('angleAxis')
result.coordSysDims = ['radius', 'angle']
axisMap.set('radius', radiusAxisModel)
axisMap.set('angle', angleAxisModel)
if (isCategory(radiusAxisModel)) {
categoryAxisMap.set('radius', radiusAxisModel)
result.firstCategoryDimIndex = 0
}
if (isCategory(angleAxisModel)) {
categoryAxisMap.set('angle', angleAxisModel)
result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1)
}
},
geo: function (seriesModel, result, axisMap, categoryAxisMap) {
result.coordSysDims = ['lng', 'lat']
},
parallel: function (seriesModel, result, axisMap, categoryAxisMap) {
var ecModel = seriesModel.ecModel
var parallelModel = ecModel.getComponent(
'parallel',
seriesModel.get('parallelIndex')
)
var coordSysDims = (result.coordSysDims = parallelModel.dimensions.slice())
each$f(parallelModel.parallelAxisIndex, function (axisIndex, index2) {
var axisModel = ecModel.getComponent('parallelAxis', axisIndex)
var axisDim = coordSysDims[index2]
axisMap.set(axisDim, axisModel)
if (isCategory(axisModel)) {
categoryAxisMap.set(axisDim, axisModel)
if (result.firstCategoryDimIndex == null) {
result.firstCategoryDimIndex = index2
}
}
})
},
}
function isCategory(axisModel) {
return axisModel.get('type') === 'category'
}
function enableDataStack(seriesModel, dimensionsInput, opt) {
opt = opt || {}
var byIndex = opt.byIndex
var stackedCoordDimension = opt.stackedCoordDimension
var dimensionDefineList
var schema
var store2
if (isLegacyDimensionsInput(dimensionsInput)) {
dimensionDefineList = dimensionsInput
} else {
schema = dimensionsInput.schema
dimensionDefineList = schema.dimensions
store2 = dimensionsInput.store
}
var mayStack = !!(seriesModel && seriesModel.get('stack'))
var stackedByDimInfo
var stackedDimInfo
var stackResultDimension
var stackedOverDimension
each$f(dimensionDefineList, function (dimensionInfo, index2) {
if (isString$2(dimensionInfo)) {
dimensionDefineList[index2] = dimensionInfo = {
name: dimensionInfo,
}
}
if (mayStack && !dimensionInfo.isExtraCoord) {
if (!byIndex && !stackedByDimInfo && dimensionInfo.ordinalMeta) {
stackedByDimInfo = dimensionInfo
}
if (
!stackedDimInfo &&
dimensionInfo.type !== 'ordinal' &&
dimensionInfo.type !== 'time' &&
(!stackedCoordDimension ||
stackedCoordDimension === dimensionInfo.coordDim)
) {
stackedDimInfo = dimensionInfo
}
}
})
if (stackedDimInfo && !byIndex && !stackedByDimInfo) {
byIndex = true
}
if (stackedDimInfo) {
stackResultDimension = '__\0ecstackresult_' + seriesModel.id
stackedOverDimension = '__\0ecstackedover_' + seriesModel.id
if (stackedByDimInfo) {
stackedByDimInfo.createInvertedIndices = true
}
var stackedDimCoordDim_1 = stackedDimInfo.coordDim
var stackedDimType = stackedDimInfo.type
var stackedDimCoordIndex_1 = 0
each$f(dimensionDefineList, function (dimensionInfo) {
if (dimensionInfo.coordDim === stackedDimCoordDim_1) {
stackedDimCoordIndex_1++
}
})
var stackedOverDimensionDefine = {
name: stackResultDimension,
coordDim: stackedDimCoordDim_1,
coordDimIndex: stackedDimCoordIndex_1,
type: stackedDimType,
isExtraCoord: true,
isCalculationCoord: true,
storeDimIndex: dimensionDefineList.length,
}
var stackResultDimensionDefine = {
name: stackedOverDimension,
coordDim: stackedOverDimension,
coordDimIndex: stackedDimCoordIndex_1 + 1,
type: stackedDimType,
isExtraCoord: true,
isCalculationCoord: true,
storeDimIndex: dimensionDefineList.length + 1,
}
if (schema) {
if (store2) {
stackedOverDimensionDefine.storeDimIndex =
store2.ensureCalculationDimension(
stackedOverDimension,
stackedDimType
)
stackResultDimensionDefine.storeDimIndex =
store2.ensureCalculationDimension(
stackResultDimension,
stackedDimType
)
}
schema.appendCalculationDimension(stackedOverDimensionDefine)
schema.appendCalculationDimension(stackResultDimensionDefine)
} else {
dimensionDefineList.push(stackedOverDimensionDefine)
dimensionDefineList.push(stackResultDimensionDefine)
}
}
return {
stackedDimension: stackedDimInfo && stackedDimInfo.name,
stackedByDimension: stackedByDimInfo && stackedByDimInfo.name,
isStackedByIndex: byIndex,
stackedOverDimension,
stackResultDimension,
}
}
function isLegacyDimensionsInput(dimensionsInput) {
return !isSeriesDataSchema(dimensionsInput.schema)
}
function isDimensionStacked(data2, stackedDim) {
return (
!!stackedDim && stackedDim === data2.getCalculationInfo('stackedDimension')
)
}
function getStackedDimension(data2, targetDim) {
return isDimensionStacked(data2, targetDim)
? data2.getCalculationInfo('stackResultDimension')
: targetDim
}
function getCoordSysDimDefs(seriesModel, coordSysInfo) {
var coordSysName = seriesModel.get('coordinateSystem')
var registeredCoordSys = CoordinateSystem.get(coordSysName)
var coordSysDimDefs
if (coordSysInfo && coordSysInfo.coordSysDims) {
coordSysDimDefs = map$1(coordSysInfo.coordSysDims, function (dim) {
var dimInfo = {
name: dim,
}
var axisModel = coordSysInfo.axisMap.get(dim)
if (axisModel) {
var axisType = axisModel.get('type')
dimInfo.type = getDimensionTypeByAxis(axisType)
}
return dimInfo
})
}
if (!coordSysDimDefs) {
coordSysDimDefs = (registeredCoordSys &&
(registeredCoordSys.getDimensionsInfo
? registeredCoordSys.getDimensionsInfo()
: registeredCoordSys.dimensions.slice())) || ['x', 'y']
}
return coordSysDimDefs
}
function injectOrdinalMeta(dimInfoList, createInvertedIndices, coordSysInfo) {
var firstCategoryDimIndex
var hasNameEncode
coordSysInfo &&
each$f(dimInfoList, function (dimInfo, dimIndex) {
var coordDim = dimInfo.coordDim
var categoryAxisModel = coordSysInfo.categoryAxisMap.get(coordDim)
if (categoryAxisModel) {
if (firstCategoryDimIndex == null) {
firstCategoryDimIndex = dimIndex
}
dimInfo.ordinalMeta = categoryAxisModel.getOrdinalMeta()
if (createInvertedIndices) {
dimInfo.createInvertedIndices = true
}
}
if (dimInfo.otherDims.itemName != null) {
hasNameEncode = true
}
})
if (!hasNameEncode && firstCategoryDimIndex != null) {
dimInfoList[firstCategoryDimIndex].otherDims.itemName = 0
}
return firstCategoryDimIndex
}
function createSeriesData(sourceRaw, seriesModel, opt) {
opt = opt || {}
var sourceManager = seriesModel.getSourceManager()
var source2
var isOriginalSource = false
if (sourceRaw) {
isOriginalSource = true
source2 = createSourceFromSeriesDataOption(sourceRaw)
} else {
source2 = sourceManager.getSource()
isOriginalSource = source2.sourceFormat === SOURCE_FORMAT_ORIGINAL
}
var coordSysInfo = getCoordSysInfoBySeries(seriesModel)
var coordSysDimDefs = getCoordSysDimDefs(seriesModel, coordSysInfo)
var useEncodeDefaulter = opt.useEncodeDefaulter
var encodeDefaulter = isFunction$4(useEncodeDefaulter)
? useEncodeDefaulter
: useEncodeDefaulter
? curry$1(makeSeriesEncodeForAxisCoordSys, coordSysDimDefs, seriesModel)
: null
var createDimensionOptions = {
coordDimensions: coordSysDimDefs,
generateCoord: opt.generateCoord,
encodeDefine: seriesModel.getEncode(),
encodeDefaulter,
canOmitUnusedDimensions: !isOriginalSource,
}
var schema = prepareSeriesDataSchema(source2, createDimensionOptions)
var firstCategoryDimIndex = injectOrdinalMeta(
schema.dimensions,
opt.createInvertedIndices,
coordSysInfo
)
var store2 = !isOriginalSource
? sourceManager.getSharedDataStore(schema)
: null
var stackCalculationInfo = enableDataStack(seriesModel, {
schema,
store: store2,
})
var data2 = new SeriesData$1(schema, seriesModel)
data2.setCalculationInfo(stackCalculationInfo)
var dimValueGetter =
firstCategoryDimIndex != null && isNeedCompleteOrdinalData(source2)
? function (itemOpt, dimName, dataIndex, dimIndex) {
return dimIndex === firstCategoryDimIndex
? dataIndex
: this.defaultDimValueGetter(itemOpt, dimName, dataIndex, dimIndex)
}
: null
data2.hasItemOption = false
data2.initData(isOriginalSource ? source2 : store2, null, dimValueGetter)
return data2
}
function isNeedCompleteOrdinalData(source2) {
if (source2.sourceFormat === SOURCE_FORMAT_ORIGINAL) {
var sampleItem = firstDataNotNull(source2.data || [])
return !isArray$6(getDataItemValue(sampleItem))
}
}
function firstDataNotNull(arr) {
var i2 = 0
while (i2 < arr.length && arr[i2] == null) {
i2++
}
return arr[i2]
}
var Scale = (function () {
function Scale2(setting2) {
this._setting = setting2 || {}
this._extent = [Infinity, -Infinity]
}
Scale2.prototype.getSetting = function (name2) {
return this._setting[name2]
}
Scale2.prototype.unionExtent = function (other) {
var extent3 = this._extent
other[0] < extent3[0] && (extent3[0] = other[0])
other[1] > extent3[1] && (extent3[1] = other[1])
}
Scale2.prototype.unionExtentFromData = function (data2, dim) {
this.unionExtent(data2.getApproximateExtent(dim))
}
Scale2.prototype.getExtent = function () {
return this._extent.slice()
}
Scale2.prototype.setExtent = function (start2, end2) {
var thisExtent = this._extent
if (!isNaN(start2)) {
thisExtent[0] = start2
}
if (!isNaN(end2)) {
thisExtent[1] = end2
}
}
Scale2.prototype.isInExtentRange = function (value2) {
return this._extent[0] <= value2 && this._extent[1] >= value2
}
Scale2.prototype.isBlank = function () {
return this._isBlank
}
Scale2.prototype.setBlank = function (isBlank) {
this._isBlank = isBlank
}
return Scale2
})()
enableClassManagement(Scale)
var Scale$1 = Scale
var uidBase = 0
var OrdinalMeta = (function () {
function OrdinalMeta2(opt) {
this.categories = opt.categories || []
this._needCollect = opt.needCollect
this._deduplication = opt.deduplication
this.uid = ++uidBase
}
OrdinalMeta2.createByAxisModel = function (axisModel) {
var option2 = axisModel.option
var data2 = option2.data
var categories = data2 && map$1(data2, getName)
return new OrdinalMeta2({
categories,
needCollect: !categories,
deduplication: option2.dedplication !== false,
})
}
OrdinalMeta2.prototype.getOrdinal = function (category) {
return this._getOrCreateMap().get(category)
}
OrdinalMeta2.prototype.parseAndCollect = function (category) {
var index2
var needCollect = this._needCollect
if (!isString$2(category) && !needCollect) {
return category
}
if (needCollect && !this._deduplication) {
index2 = this.categories.length
this.categories[index2] = category
return index2
}
var map2 = this._getOrCreateMap()
index2 = map2.get(category)
if (index2 == null) {
if (needCollect) {
index2 = this.categories.length
this.categories[index2] = category
map2.set(category, index2)
} else {
index2 = NaN
}
}
return index2
}
OrdinalMeta2.prototype._getOrCreateMap = function () {
return this._map || (this._map = createHashMap(this.categories))
}
return OrdinalMeta2
})()
function getName(obj) {
if (isObject$b(obj) && obj.value != null) {
return obj.value
} else {
return obj + ''
}
}
var OrdinalMeta$1 = OrdinalMeta
function isIntervalOrLogScale(scale2) {
return scale2.type === 'interval' || scale2.type === 'log'
}
function intervalScaleNiceTicks(
extent3,
splitNumber,
minInterval,
maxInterval
) {
var result = {}
var span = extent3[1] - extent3[0]
var interval = (result.interval = nice(span / splitNumber, true))
if (minInterval != null && interval < minInterval) {
interval = result.interval = minInterval
}
if (maxInterval != null && interval > maxInterval) {
interval = result.interval = maxInterval
}
var precision = (result.intervalPrecision = getIntervalPrecision(interval))
var niceTickExtent = (result.niceTickExtent = [
round$3(Math.ceil(extent3[0] / interval) * interval, precision),
round$3(Math.floor(extent3[1] / interval) * interval, precision),
])
fixExtent(niceTickExtent, extent3)
return result
}
function increaseInterval(interval) {
var exp10 = Math.pow(10, quantityExponent(interval))
var f2 = interval / exp10
if (!f2) {
f2 = 1
} else if (f2 === 2) {
f2 = 3
} else if (f2 === 3) {
f2 = 5
} else {
f2 *= 2
}
return round$3(f2 * exp10)
}
function getIntervalPrecision(interval) {
return getPrecision(interval) + 2
}
function clamp(niceTickExtent, idx, extent3) {
niceTickExtent[idx] = Math.max(
Math.min(niceTickExtent[idx], extent3[1]),
extent3[0]
)
}
function fixExtent(niceTickExtent, extent3) {
!isFinite(niceTickExtent[0]) && (niceTickExtent[0] = extent3[0])
!isFinite(niceTickExtent[1]) && (niceTickExtent[1] = extent3[1])
clamp(niceTickExtent, 0, extent3)
clamp(niceTickExtent, 1, extent3)
if (niceTickExtent[0] > niceTickExtent[1]) {
niceTickExtent[0] = niceTickExtent[1]
}
}
function contain$1(val2, extent3) {
return val2 >= extent3[0] && val2 <= extent3[1]
}
function normalize$2(val2, extent3) {
if (extent3[1] === extent3[0]) {
return 0.5
}
return (val2 - extent3[0]) / (extent3[1] - extent3[0])
}
function scale(val2, extent3) {
return val2 * (extent3[1] - extent3[0]) + extent3[0]
}
var OrdinalScale = (function (_super) {
__extends$2(OrdinalScale2, _super)
function OrdinalScale2(setting2) {
var _this = _super.call(this, setting2) || this
_this.type = 'ordinal'
var ordinalMeta = _this.getSetting('ordinalMeta')
if (!ordinalMeta) {
ordinalMeta = new OrdinalMeta$1({})
}
if (isArray$6(ordinalMeta)) {
ordinalMeta = new OrdinalMeta$1({
categories: map$1(ordinalMeta, function (item2) {
return isObject$b(item2) ? item2.value : item2
}),
})
}
_this._ordinalMeta = ordinalMeta
_this._extent = _this.getSetting('extent') || [
0,
ordinalMeta.categories.length - 1,
]
return _this
}
OrdinalScale2.prototype.parse = function (val2) {
if (val2 == null) {
return NaN
}
return isString$2(val2)
? this._ordinalMeta.getOrdinal(val2)
: Math.round(val2)
}
OrdinalScale2.prototype.contain = function (rank2) {
rank2 = this.parse(rank2)
return (
contain$1(rank2, this._extent) &&
this._ordinalMeta.categories[rank2] != null
)
}
OrdinalScale2.prototype.normalize = function (val2) {
val2 = this._getTickNumber(this.parse(val2))
return normalize$2(val2, this._extent)
}
OrdinalScale2.prototype.scale = function (val2) {
val2 = Math.round(scale(val2, this._extent))
return this.getRawOrdinalNumber(val2)
}
OrdinalScale2.prototype.getTicks = function () {
var ticks = []
var extent3 = this._extent
var rank2 = extent3[0]
while (rank2 <= extent3[1]) {
ticks.push({
value: rank2,
})
rank2++
}
return ticks
}
OrdinalScale2.prototype.getMinorTicks = function (splitNumber) {
return
}
OrdinalScale2.prototype.setSortInfo = function (info) {
if (info == null) {
this._ordinalNumbersByTick = this._ticksByOrdinalNumber = null
return
}
var infoOrdinalNumbers = info.ordinalNumbers
var ordinalsByTick = (this._ordinalNumbersByTick = [])
var ticksByOrdinal = (this._ticksByOrdinalNumber = [])
var tickNum = 0
var allCategoryLen = this._ordinalMeta.categories.length
for (
var len2 = Math.min(allCategoryLen, infoOrdinalNumbers.length);
tickNum < len2;
++tickNum
) {
var ordinalNumber = infoOrdinalNumbers[tickNum]
ordinalsByTick[tickNum] = ordinalNumber
ticksByOrdinal[ordinalNumber] = tickNum
}
var unusedOrdinal = 0
for (; tickNum < allCategoryLen; ++tickNum) {
while (ticksByOrdinal[unusedOrdinal] != null) {
unusedOrdinal++
}
ordinalsByTick.push(unusedOrdinal)
ticksByOrdinal[unusedOrdinal] = tickNum
}
}
OrdinalScale2.prototype._getTickNumber = function (ordinal) {
var ticksByOrdinalNumber = this._ticksByOrdinalNumber
return ticksByOrdinalNumber &&
ordinal >= 0 &&
ordinal < ticksByOrdinalNumber.length
? ticksByOrdinalNumber[ordinal]
: ordinal
}
OrdinalScale2.prototype.getRawOrdinalNumber = function (tickNumber) {
var ordinalNumbersByTick = this._ordinalNumbersByTick
return ordinalNumbersByTick &&
tickNumber >= 0 &&
tickNumber < ordinalNumbersByTick.length
? ordinalNumbersByTick[tickNumber]
: tickNumber
}
OrdinalScale2.prototype.getLabel = function (tick) {
if (!this.isBlank()) {
var ordinalNumber = this.getRawOrdinalNumber(tick.value)
var cateogry = this._ordinalMeta.categories[ordinalNumber]
return cateogry == null ? '' : cateogry + ''
}
}
OrdinalScale2.prototype.count = function () {
return this._extent[1] - this._extent[0] + 1
}
OrdinalScale2.prototype.unionExtentFromData = function (data2, dim) {
this.unionExtent(data2.getApproximateExtent(dim))
}
OrdinalScale2.prototype.isInExtentRange = function (value2) {
value2 = this._getTickNumber(value2)
return this._extent[0] <= value2 && this._extent[1] >= value2
}
OrdinalScale2.prototype.getOrdinalMeta = function () {
return this._ordinalMeta
}
OrdinalScale2.prototype.calcNiceTicks = function () {}
OrdinalScale2.prototype.calcNiceExtent = function () {}
OrdinalScale2.type = 'ordinal'
return OrdinalScale2
})(Scale$1)
Scale$1.registerClass(OrdinalScale)
var OrdinalScale$1 = OrdinalScale
var roundNumber = round$3
var IntervalScale = (function (_super) {
__extends$2(IntervalScale2, _super)
function IntervalScale2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = 'interval'
_this._interval = 0
_this._intervalPrecision = 2
return _this
}
IntervalScale2.prototype.parse = function (val2) {
return val2
}
IntervalScale2.prototype.contain = function (val2) {
return contain$1(val2, this._extent)
}
IntervalScale2.prototype.normalize = function (val2) {
return normalize$2(val2, this._extent)
}
IntervalScale2.prototype.scale = function (val2) {
return scale(val2, this._extent)
}
IntervalScale2.prototype.setExtent = function (start2, end2) {
var thisExtent = this._extent
if (!isNaN(start2)) {
thisExtent[0] = parseFloat(start2)
}
if (!isNaN(end2)) {
thisExtent[1] = parseFloat(end2)
}
}
IntervalScale2.prototype.unionExtent = function (other) {
var extent3 = this._extent
other[0] < extent3[0] && (extent3[0] = other[0])
other[1] > extent3[1] && (extent3[1] = other[1])
this.setExtent(extent3[0], extent3[1])
}
IntervalScale2.prototype.getInterval = function () {
return this._interval
}
IntervalScale2.prototype.setInterval = function (interval) {
this._interval = interval
this._niceExtent = this._extent.slice()
this._intervalPrecision = getIntervalPrecision(interval)
}
IntervalScale2.prototype.getTicks = function (expandToNicedExtent) {
var interval = this._interval
var extent3 = this._extent
var niceTickExtent = this._niceExtent
var intervalPrecision = this._intervalPrecision
var ticks = []
if (!interval) {
return ticks
}
var safeLimit = 1e4
if (extent3[0] < niceTickExtent[0]) {
if (expandToNicedExtent) {
ticks.push({
value: roundNumber(niceTickExtent[0] - interval, intervalPrecision),
})
} else {
ticks.push({
value: extent3[0],
})
}
}
var tick = niceTickExtent[0]
while (tick <= niceTickExtent[1]) {
ticks.push({
value: tick,
})
tick = roundNumber(tick + interval, intervalPrecision)
if (tick === ticks[ticks.length - 1].value) {
break
}
if (ticks.length > safeLimit) {
return []
}
}
var lastNiceTick = ticks.length
? ticks[ticks.length - 1].value
: niceTickExtent[1]
if (extent3[1] > lastNiceTick) {
if (expandToNicedExtent) {
ticks.push({
value: roundNumber(lastNiceTick + interval, intervalPrecision),
})
} else {
ticks.push({
value: extent3[1],
})
}
}
return ticks
}
IntervalScale2.prototype.getMinorTicks = function (splitNumber) {
var ticks = this.getTicks(true)
var minorTicks = []
var extent3 = this.getExtent()
for (var i2 = 1; i2 < ticks.length; i2++) {
var nextTick2 = ticks[i2]
var prevTick = ticks[i2 - 1]
var count2 = 0
var minorTicksGroup = []
var interval = nextTick2.value - prevTick.value
var minorInterval = interval / splitNumber
while (count2 < splitNumber - 1) {
var minorTick = roundNumber(
prevTick.value + (count2 + 1) * minorInterval
)
if (minorTick > extent3[0] && minorTick < extent3[1]) {
minorTicksGroup.push(minorTick)
}
count2++
}
minorTicks.push(minorTicksGroup)
}
return minorTicks
}
IntervalScale2.prototype.getLabel = function (data2, opt) {
if (data2 == null) {
return ''
}
var precision = opt && opt.precision
if (precision == null) {
precision = getPrecision(data2.value) || 0
} else if (precision === 'auto') {
precision = this._intervalPrecision
}
var dataNum = roundNumber(data2.value, precision, true)
return addCommas(dataNum)
}
IntervalScale2.prototype.calcNiceTicks = function (
splitNumber,
minInterval,
maxInterval
) {
splitNumber = splitNumber || 5
var extent3 = this._extent
var span = extent3[1] - extent3[0]
if (!isFinite(span)) {
return
}
if (span < 0) {
span = -span
extent3.reverse()
}
var result = intervalScaleNiceTicks(
extent3,
splitNumber,
minInterval,
maxInterval
)
this._intervalPrecision = result.intervalPrecision
this._interval = result.interval
this._niceExtent = result.niceTickExtent
}
IntervalScale2.prototype.calcNiceExtent = function (opt) {
var extent3 = this._extent
if (extent3[0] === extent3[1]) {
if (extent3[0] !== 0) {
var expandSize = Math.abs(extent3[0])
if (!opt.fixMax) {
extent3[1] += expandSize / 2
extent3[0] -= expandSize / 2
} else {
extent3[0] -= expandSize / 2
}
} else {
extent3[1] = 1
}
}
var span = extent3[1] - extent3[0]
if (!isFinite(span)) {
extent3[0] = 0
extent3[1] = 1
}
this.calcNiceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval)
var interval = this._interval
if (!opt.fixMin) {
extent3[0] = roundNumber(Math.floor(extent3[0] / interval) * interval)
}
if (!opt.fixMax) {
extent3[1] = roundNumber(Math.ceil(extent3[1] / interval) * interval)
}
}
IntervalScale2.prototype.setNiceExtent = function (min3, max3) {
this._niceExtent = [min3, max3]
}
IntervalScale2.type = 'interval'
return IntervalScale2
})(Scale$1)
Scale$1.registerClass(IntervalScale)
var IntervalScale$1 = IntervalScale
var supportFloat32Array = typeof Float32Array !== 'undefined'
var Float32ArrayCtor = !supportFloat32Array ? Array : Float32Array
function createFloat32Array(arg) {
if (isArray$6(arg)) {
return supportFloat32Array ? new Float32Array(arg) : arg
}
return new Float32ArrayCtor(arg)
}
var STACK_PREFIX = '__ec_stack_'
function getSeriesStackId$1(seriesModel) {
return seriesModel.get('stack') || STACK_PREFIX + seriesModel.seriesIndex
}
function getAxisKey$1(axis) {
return axis.dim + axis.index
}
function getLayoutOnAxis(opt) {
var params2 = []
var baseAxis = opt.axis
var axisKey = 'axis0'
if (baseAxis.type !== 'category') {
return
}
var bandWidth = baseAxis.getBandWidth()
for (var i2 = 0; i2 < opt.count || 0; i2++) {
params2.push(
defaults(
{
bandWidth,
axisKey,
stackId: STACK_PREFIX + i2,
},
opt
)
)
}
var widthAndOffsets = doCalBarWidthAndOffset(params2)
var result = []
for (var i2 = 0; i2 < opt.count; i2++) {
var item2 = widthAndOffsets[axisKey][STACK_PREFIX + i2]
item2.offsetCenter = item2.offset + item2.width / 2
result.push(item2)
}
return result
}
function prepareLayoutBarSeries(seriesType2, ecModel) {
var seriesModels = []
ecModel.eachSeriesByType(seriesType2, function (seriesModel) {
if (isOnCartesian(seriesModel)) {
seriesModels.push(seriesModel)
}
})
return seriesModels
}
function getValueAxesMinGaps(barSeries) {
var axisValues = {}
each$f(barSeries, function (seriesModel) {
var cartesian = seriesModel.coordinateSystem
var baseAxis = cartesian.getBaseAxis()
if (baseAxis.type !== 'time' && baseAxis.type !== 'value') {
return
}
var data2 = seriesModel.getData()
var key3 = baseAxis.dim + '_' + baseAxis.index
var dimIdx = data2.getDimensionIndex(data2.mapDimension(baseAxis.dim))
var store2 = data2.getStore()
for (var i2 = 0, cnt = store2.count(); i2 < cnt; ++i2) {
var value2 = store2.get(dimIdx, i2)
if (!axisValues[key3]) {
axisValues[key3] = [value2]
} else {
axisValues[key3].push(value2)
}
}
})
var axisMinGaps = {}
for (var key2 in axisValues) {
if (axisValues.hasOwnProperty(key2)) {
var valuesInAxis = axisValues[key2]
if (valuesInAxis) {
valuesInAxis.sort(function (a2, b2) {
return a2 - b2
})
var min3 = null
for (var j2 = 1; j2 < valuesInAxis.length; ++j2) {
var delta = valuesInAxis[j2] - valuesInAxis[j2 - 1]
if (delta > 0) {
min3 = min3 === null ? delta : Math.min(min3, delta)
}
}
axisMinGaps[key2] = min3
}
}
}
return axisMinGaps
}
function makeColumnLayout(barSeries) {
var axisMinGaps = getValueAxesMinGaps(barSeries)
var seriesInfoList = []
each$f(barSeries, function (seriesModel) {
var cartesian = seriesModel.coordinateSystem
var baseAxis = cartesian.getBaseAxis()
var axisExtent = baseAxis.getExtent()
var bandWidth
if (baseAxis.type === 'category') {
bandWidth = baseAxis.getBandWidth()
} else if (baseAxis.type === 'value' || baseAxis.type === 'time') {
var key2 = baseAxis.dim + '_' + baseAxis.index
var minGap = axisMinGaps[key2]
var extentSpan = Math.abs(axisExtent[1] - axisExtent[0])
var scale2 = baseAxis.scale.getExtent()
var scaleSpan = Math.abs(scale2[1] - scale2[0])
bandWidth = minGap ? (extentSpan / scaleSpan) * minGap : extentSpan
} else {
var data2 = seriesModel.getData()
bandWidth = Math.abs(axisExtent[1] - axisExtent[0]) / data2.count()
}
var barWidth = parsePercent(seriesModel.get('barWidth'), bandWidth)
var barMaxWidth = parsePercent(seriesModel.get('barMaxWidth'), bandWidth)
var barMinWidth = parsePercent(
seriesModel.get('barMinWidth') || (isInLargeMode(seriesModel) ? 0.5 : 1),
bandWidth
)
var barGap = seriesModel.get('barGap')
var barCategoryGap = seriesModel.get('barCategoryGap')
seriesInfoList.push({
bandWidth,
barWidth,
barMaxWidth,
barMinWidth,
barGap,
barCategoryGap,
axisKey: getAxisKey$1(baseAxis),
stackId: getSeriesStackId$1(seriesModel),
})
})
return doCalBarWidthAndOffset(seriesInfoList)
}
function doCalBarWidthAndOffset(seriesInfoList) {
var columnsMap = {}
each$f(seriesInfoList, function (seriesInfo, idx) {
var axisKey = seriesInfo.axisKey
var bandWidth = seriesInfo.bandWidth
var columnsOnAxis = columnsMap[axisKey] || {
bandWidth,
remainedWidth: bandWidth,
autoWidthCount: 0,
categoryGap: null,
gap: '20%',
stacks: {},
}
var stacks = columnsOnAxis.stacks
columnsMap[axisKey] = columnsOnAxis
var stackId = seriesInfo.stackId
if (!stacks[stackId]) {
columnsOnAxis.autoWidthCount++
}
stacks[stackId] = stacks[stackId] || {
width: 0,
maxWidth: 0,
}
var barWidth = seriesInfo.barWidth
if (barWidth && !stacks[stackId].width) {
stacks[stackId].width = barWidth
barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth)
columnsOnAxis.remainedWidth -= barWidth
}
var barMaxWidth = seriesInfo.barMaxWidth
barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth)
var barMinWidth = seriesInfo.barMinWidth
barMinWidth && (stacks[stackId].minWidth = barMinWidth)
var barGap = seriesInfo.barGap
barGap != null && (columnsOnAxis.gap = barGap)
var barCategoryGap = seriesInfo.barCategoryGap
barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap)
})
var result = {}
each$f(columnsMap, function (columnsOnAxis, coordSysName) {
result[coordSysName] = {}
var stacks = columnsOnAxis.stacks
var bandWidth = columnsOnAxis.bandWidth
var categoryGapPercent = columnsOnAxis.categoryGap
if (categoryGapPercent == null) {
var columnCount = keys$4(stacks).length
categoryGapPercent = Math.max(35 - columnCount * 4, 15) + '%'
}
var categoryGap = parsePercent(categoryGapPercent, bandWidth)
var barGapPercent = parsePercent(columnsOnAxis.gap, 1)
var remainedWidth = columnsOnAxis.remainedWidth
var autoWidthCount = columnsOnAxis.autoWidthCount
var autoWidth =
(remainedWidth - categoryGap) /
(autoWidthCount + (autoWidthCount - 1) * barGapPercent)
autoWidth = Math.max(autoWidth, 0)
each$f(stacks, function (column) {
var maxWidth = column.maxWidth
var minWidth = column.minWidth
if (!column.width) {
var finalWidth = autoWidth
if (maxWidth && maxWidth < finalWidth) {
finalWidth = Math.min(maxWidth, remainedWidth)
}
if (minWidth && minWidth > finalWidth) {
finalWidth = minWidth
}
if (finalWidth !== autoWidth) {
column.width = finalWidth
remainedWidth -= finalWidth + barGapPercent * finalWidth
autoWidthCount--
}
} else {
var finalWidth = column.width
if (maxWidth) {
finalWidth = Math.min(finalWidth, maxWidth)
}
if (minWidth) {
finalWidth = Math.max(finalWidth, minWidth)
}
column.width = finalWidth
remainedWidth -= finalWidth + barGapPercent * finalWidth
autoWidthCount--
}
})
autoWidth =
(remainedWidth - categoryGap) /
(autoWidthCount + (autoWidthCount - 1) * barGapPercent)
autoWidth = Math.max(autoWidth, 0)
var widthSum = 0
var lastColumn
each$f(stacks, function (column, idx) {
if (!column.width) {
column.width = autoWidth
}
lastColumn = column
widthSum += column.width * (1 + barGapPercent)
})
if (lastColumn) {
widthSum -= lastColumn.width * barGapPercent
}
var offset2 = -widthSum / 2
each$f(stacks, function (column, stackId) {
result[coordSysName][stackId] = result[coordSysName][stackId] || {
bandWidth,
offset: offset2,
width: column.width,
}
offset2 += column.width * (1 + barGapPercent)
})
})
return result
}
function retrieveColumnLayout(barWidthAndOffset, axis, seriesModel) {
if (barWidthAndOffset && axis) {
var result = barWidthAndOffset[getAxisKey$1(axis)]
if (result != null && seriesModel != null) {
return result[getSeriesStackId$1(seriesModel)]
}
return result
}
}
function layout$3(seriesType2, ecModel) {
var seriesModels = prepareLayoutBarSeries(seriesType2, ecModel)
var barWidthAndOffset = makeColumnLayout(seriesModels)
each$f(seriesModels, function (seriesModel) {
var data2 = seriesModel.getData()
var cartesian = seriesModel.coordinateSystem
var baseAxis = cartesian.getBaseAxis()
var stackId = getSeriesStackId$1(seriesModel)
var columnLayoutInfo = barWidthAndOffset[getAxisKey$1(baseAxis)][stackId]
var columnOffset = columnLayoutInfo.offset
var columnWidth = columnLayoutInfo.width
data2.setLayout({
bandWidth: columnLayoutInfo.bandWidth,
offset: columnOffset,
size: columnWidth,
})
})
}
function createProgressiveLayout(seriesType2) {
return {
seriesType: seriesType2,
plan: createRenderPlanner(),
reset: function (seriesModel) {
if (!isOnCartesian(seriesModel)) {
return
}
var data2 = seriesModel.getData()
var cartesian = seriesModel.coordinateSystem
var baseAxis = cartesian.getBaseAxis()
var valueAxis2 = cartesian.getOtherAxis(baseAxis)
var valueDimIdx = data2.getDimensionIndex(
data2.mapDimension(valueAxis2.dim)
)
var baseDimIdx = data2.getDimensionIndex(data2.mapDimension(baseAxis.dim))
var drawBackground = seriesModel.get('showBackground', true)
var valueDim = data2.mapDimension(valueAxis2.dim)
var stackResultDim = data2.getCalculationInfo('stackResultDimension')
var stacked =
isDimensionStacked(data2, valueDim) &&
!!data2.getCalculationInfo('stackedOnSeries')
var isValueAxisH = valueAxis2.isHorizontal()
var valueAxisStart = getValueAxisStart(baseAxis, valueAxis2)
var isLarge = isInLargeMode(seriesModel)
var barMinHeight = seriesModel.get('barMinHeight') || 0
var stackedDimIdx =
stackResultDim && data2.getDimensionIndex(stackResultDim)
var columnWidth = data2.getLayout('size')
var columnOffset = data2.getLayout('offset')
return {
progress: function (params2, data3) {
var count2 = params2.count
var largePoints = isLarge && createFloat32Array(count2 * 3)
var largeBackgroundPoints =
isLarge && drawBackground && createFloat32Array(count2 * 3)
var largeDataIndices = isLarge && createFloat32Array(count2)
var coordLayout = cartesian.master.getRect()
var bgSize = isValueAxisH ? coordLayout.width : coordLayout.height
var dataIndex
var store2 = data3.getStore()
var idxOffset = 0
while ((dataIndex = params2.next()) != null) {
var value2 = store2.get(
stacked ? stackedDimIdx : valueDimIdx,
dataIndex
)
var baseValue = store2.get(baseDimIdx, dataIndex)
var baseCoord = valueAxisStart
var startValue = void 0
if (stacked) {
startValue = +value2 - store2.get(valueDimIdx, dataIndex)
}
var x2 = void 0
var y2 = void 0
var width = void 0
var height = void 0
if (isValueAxisH) {
var coord = cartesian.dataToPoint([value2, baseValue])
if (stacked) {
var startCoord = cartesian.dataToPoint([startValue, baseValue])
baseCoord = startCoord[0]
}
x2 = baseCoord
y2 = coord[1] + columnOffset
width = coord[0] - baseCoord
height = columnWidth
if (Math.abs(width) < barMinHeight) {
width = (width < 0 ? -1 : 1) * barMinHeight
}
} else {
var coord = cartesian.dataToPoint([baseValue, value2])
if (stacked) {
var startCoord = cartesian.dataToPoint([baseValue, startValue])
baseCoord = startCoord[1]
}
x2 = coord[0] + columnOffset
y2 = baseCoord
width = columnWidth
height = coord[1] - baseCoord
if (Math.abs(height) < barMinHeight) {
height = (height <= 0 ? -1 : 1) * barMinHeight
}
}
if (!isLarge) {
data3.setItemLayout(dataIndex, {
x: x2,
y: y2,
width,
height,
})
} else {
largePoints[idxOffset] = x2
largePoints[idxOffset + 1] = y2
largePoints[idxOffset + 2] = isValueAxisH ? width : height
if (largeBackgroundPoints) {
largeBackgroundPoints[idxOffset] = isValueAxisH
? coordLayout.x
: x2
largeBackgroundPoints[idxOffset + 1] = isValueAxisH
? y2
: coordLayout.y
largeBackgroundPoints[idxOffset + 2] = bgSize
}
largeDataIndices[dataIndex] = dataIndex
}
idxOffset += 3
}
if (isLarge) {
data3.setLayout({
largePoints,
largeDataIndices,
largeBackgroundPoints,
valueAxisHorizontal: isValueAxisH,
})
}
},
}
},
}
}
function isOnCartesian(seriesModel) {
return (
seriesModel.coordinateSystem &&
seriesModel.coordinateSystem.type === 'cartesian2d'
)
}
function isInLargeMode(seriesModel) {
return seriesModel.pipelineContext && seriesModel.pipelineContext.large
}
function getValueAxisStart(baseAxis, valueAxis2) {
return valueAxis2.toGlobalCoord(
valueAxis2.dataToCoord(valueAxis2.type === 'log' ? 1 : 0)
)
}
var bisect = function (a2, x2, lo, hi) {
while (lo < hi) {
var mid = (lo + hi) >>> 1
if (a2[mid][1] < x2) {
lo = mid + 1
} else {
hi = mid
}
}
return lo
}
var TimeScale = (function (_super) {
__extends$2(TimeScale2, _super)
function TimeScale2(settings) {
var _this = _super.call(this, settings) || this
_this.type = 'time'
return _this
}
TimeScale2.prototype.getLabel = function (tick) {
var useUTC = this.getSetting('useUTC')
return format$3(
tick.value,
fullLeveledFormatter[
getDefaultFormatPrecisionOfInterval(
getPrimaryTimeUnit(this._minLevelUnit)
)
] || fullLeveledFormatter.second,
useUTC,
this.getSetting('locale')
)
}
TimeScale2.prototype.getFormattedLabel = function (
tick,
idx,
labelFormatter
) {
var isUTC = this.getSetting('useUTC')
var lang = this.getSetting('locale')
return leveledFormat(tick, idx, labelFormatter, lang, isUTC)
}
TimeScale2.prototype.getTicks = function () {
var interval = this._interval
var extent3 = this._extent
var ticks = []
if (!interval) {
return ticks
}
ticks.push({
value: extent3[0],
level: 0,
})
var useUTC = this.getSetting('useUTC')
var innerTicks = getIntervalTicks(
this._minLevelUnit,
this._approxInterval,
useUTC,
extent3
)
ticks = ticks.concat(innerTicks)
ticks.push({
value: extent3[1],
level: 0,
})
return ticks
}
TimeScale2.prototype.calcNiceExtent = function (opt) {
var extent3 = this._extent
if (extent3[0] === extent3[1]) {
extent3[0] -= ONE_DAY
extent3[1] += ONE_DAY
}
if (extent3[1] === -Infinity && extent3[0] === Infinity) {
var d3 = new Date()
extent3[1] = +new Date(d3.getFullYear(), d3.getMonth(), d3.getDate())
extent3[0] = extent3[1] - ONE_DAY
}
this.calcNiceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval)
}
TimeScale2.prototype.calcNiceTicks = function (
approxTickNum,
minInterval,
maxInterval
) {
approxTickNum = approxTickNum || 10
var extent3 = this._extent
var span = extent3[1] - extent3[0]
this._approxInterval = span / approxTickNum
if (minInterval != null && this._approxInterval < minInterval) {
this._approxInterval = minInterval
}
if (maxInterval != null && this._approxInterval > maxInterval) {
this._approxInterval = maxInterval
}
var scaleIntervalsLen = scaleIntervals.length
var idx = Math.min(
bisect(scaleIntervals, this._approxInterval, 0, scaleIntervalsLen),
scaleIntervalsLen - 1
)
this._interval = scaleIntervals[idx][1]
this._minLevelUnit = scaleIntervals[Math.max(idx - 1, 0)][0]
}
TimeScale2.prototype.parse = function (val2) {
return isNumber$2(val2) ? val2 : +parseDate(val2)
}
TimeScale2.prototype.contain = function (val2) {
return contain$1(this.parse(val2), this._extent)
}
TimeScale2.prototype.normalize = function (val2) {
return normalize$2(this.parse(val2), this._extent)
}
TimeScale2.prototype.scale = function (val2) {
return scale(val2, this._extent)
}
TimeScale2.type = 'time'
return TimeScale2
})(IntervalScale$1)
var scaleIntervals = [
['second', ONE_SECOND],
['minute', ONE_MINUTE],
['hour', ONE_HOUR],
['quarter-day', ONE_HOUR * 6],
['half-day', ONE_HOUR * 12],
['day', ONE_DAY * 1.2],
['half-week', ONE_DAY * 3.5],
['week', ONE_DAY * 7],
['month', ONE_DAY * 31],
['quarter', ONE_DAY * 95],
['half-year', ONE_YEAR / 2],
['year', ONE_YEAR],
]
function isUnitValueSame(unit, valueA, valueB, isUTC) {
var dateA = parseDate(valueA)
var dateB = parseDate(valueB)
var isSame = function (unit2) {
return (
getUnitValue(dateA, unit2, isUTC) === getUnitValue(dateB, unit2, isUTC)
)
}
var isSameYear = function () {
return isSame('year')
}
var isSameMonth = function () {
return isSameYear() && isSame('month')
}
var isSameDay = function () {
return isSameMonth() && isSame('day')
}
var isSameHour = function () {
return isSameDay() && isSame('hour')
}
var isSameMinute = function () {
return isSameHour() && isSame('minute')
}
var isSameSecond = function () {
return isSameMinute() && isSame('second')
}
var isSameMilliSecond = function () {
return isSameSecond() && isSame('millisecond')
}
switch (unit) {
case 'year':
return isSameYear()
case 'month':
return isSameMonth()
case 'day':
return isSameDay()
case 'hour':
return isSameHour()
case 'minute':
return isSameMinute()
case 'second':
return isSameSecond()
case 'millisecond':
return isSameMilliSecond()
}
}
function getDateInterval(approxInterval, daysInMonth) {
approxInterval /= ONE_DAY
return approxInterval > 16
? 16
: approxInterval > 7.5
? 7
: approxInterval > 3.5
? 4
: approxInterval > 1.5
? 2
: 1
}
function getMonthInterval(approxInterval) {
var APPROX_ONE_MONTH = 30 * ONE_DAY
approxInterval /= APPROX_ONE_MONTH
return approxInterval > 6
? 6
: approxInterval > 3
? 3
: approxInterval > 2
? 2
: 1
}
function getHourInterval(approxInterval) {
approxInterval /= ONE_HOUR
return approxInterval > 12
? 12
: approxInterval > 6
? 6
: approxInterval > 3.5
? 4
: approxInterval > 2
? 2
: 1
}
function getMinutesAndSecondsInterval(approxInterval, isMinutes) {
approxInterval /= isMinutes ? ONE_MINUTE : ONE_SECOND
return approxInterval > 30
? 30
: approxInterval > 20
? 20
: approxInterval > 15
? 15
: approxInterval > 10
? 10
: approxInterval > 5
? 5
: approxInterval > 2
? 2
: 1
}
function getMillisecondsInterval(approxInterval) {
return nice(approxInterval, true)
}
function getFirstTimestampOfUnit(date4, unitName, isUTC) {
var outDate = new Date(date4)
switch (getPrimaryTimeUnit(unitName)) {
case 'year':
case 'month':
outDate[monthSetterName(isUTC)](0)
case 'day':
outDate[dateSetterName(isUTC)](1)
case 'hour':
outDate[hoursSetterName(isUTC)](0)
case 'minute':
outDate[minutesSetterName(isUTC)](0)
case 'second':
outDate[secondsSetterName(isUTC)](0)
outDate[millisecondsSetterName(isUTC)](0)
}
return outDate.getTime()
}
function getIntervalTicks(bottomUnitName, approxInterval, isUTC, extent3) {
var safeLimit = 1e4
var unitNames = timeUnits$1
var iter = 0
function addTicksInSpan(
interval,
minTimestamp,
maxTimestamp,
getMethodName,
setMethodName,
isDate2,
out2
) {
var date4 = new Date(minTimestamp)
var dateTime = minTimestamp
var d3 = date4[getMethodName]()
while (dateTime < maxTimestamp && dateTime <= extent3[1]) {
out2.push({
value: dateTime,
})
d3 += interval
date4[setMethodName](d3)
dateTime = date4.getTime()
}
out2.push({
value: dateTime,
notAdd: true,
})
}
function addLevelTicks(unitName, lastLevelTicks, levelTicks2) {
var newAddedTicks = []
var isFirstLevel = !lastLevelTicks.length
if (
isUnitValueSame(
getPrimaryTimeUnit(unitName),
extent3[0],
extent3[1],
isUTC
)
) {
return
}
if (isFirstLevel) {
lastLevelTicks = [
{
value: getFirstTimestampOfUnit(new Date(extent3[0]), unitName, isUTC),
},
{
value: extent3[1],
},
]
}
for (var i3 = 0; i3 < lastLevelTicks.length - 1; i3++) {
var startTick = lastLevelTicks[i3].value
var endTick = lastLevelTicks[i3 + 1].value
if (startTick === endTick) {
continue
}
var interval = void 0
var getterName = void 0
var setterName = void 0
var isDate2 = false
switch (unitName) {
case 'year':
interval = Math.max(1, Math.round(approxInterval / ONE_DAY / 365))
getterName = fullYearGetterName(isUTC)
setterName = fullYearSetterName(isUTC)
break
case 'half-year':
case 'quarter':
case 'month':
interval = getMonthInterval(approxInterval)
getterName = monthGetterName(isUTC)
setterName = monthSetterName(isUTC)
break
case 'week':
case 'half-week':
case 'day':
interval = getDateInterval(approxInterval)
getterName = dateGetterName(isUTC)
setterName = dateSetterName(isUTC)
isDate2 = true
break
case 'half-day':
case 'quarter-day':
case 'hour':
interval = getHourInterval(approxInterval)
getterName = hoursGetterName(isUTC)
setterName = hoursSetterName(isUTC)
break
case 'minute':
interval = getMinutesAndSecondsInterval(approxInterval, true)
getterName = minutesGetterName(isUTC)
setterName = minutesSetterName(isUTC)
break
case 'second':
interval = getMinutesAndSecondsInterval(approxInterval, false)
getterName = secondsGetterName(isUTC)
setterName = secondsSetterName(isUTC)
break
case 'millisecond':
interval = getMillisecondsInterval(approxInterval)
getterName = millisecondsGetterName(isUTC)
setterName = millisecondsSetterName(isUTC)
break
}
addTicksInSpan(
interval,
startTick,
endTick,
getterName,
setterName,
isDate2,
newAddedTicks
)
if (unitName === 'year' && levelTicks2.length > 1 && i3 === 0) {
levelTicks2.unshift({
value: levelTicks2[0].value - interval,
})
}
}
for (var i3 = 0; i3 < newAddedTicks.length; i3++) {
levelTicks2.push(newAddedTicks[i3])
}
return newAddedTicks
}
var levelsTicks = []
var currentLevelTicks = []
var tickCount = 0
var lastLevelTickCount = 0
for (var i2 = 0; i2 < unitNames.length && iter++ < safeLimit; ++i2) {
var primaryTimeUnit = getPrimaryTimeUnit(unitNames[i2])
if (!isPrimaryTimeUnit(unitNames[i2])) {
continue
}
addLevelTicks(
unitNames[i2],
levelsTicks[levelsTicks.length - 1] || [],
currentLevelTicks
)
var nextPrimaryTimeUnit = unitNames[i2 + 1]
? getPrimaryTimeUnit(unitNames[i2 + 1])
: null
if (primaryTimeUnit !== nextPrimaryTimeUnit) {
if (currentLevelTicks.length) {
lastLevelTickCount = tickCount
currentLevelTicks.sort(function (a2, b2) {
return a2.value - b2.value
})
var levelTicksRemoveDuplicated = []
for (var i_1 = 0; i_1 < currentLevelTicks.length; ++i_1) {
var tickValue = currentLevelTicks[i_1].value
if (i_1 === 0 || currentLevelTicks[i_1 - 1].value !== tickValue) {
levelTicksRemoveDuplicated.push(currentLevelTicks[i_1])
if (tickValue >= extent3[0] && tickValue <= extent3[1]) {
tickCount++
}
}
}
var targetTickNum = (extent3[1] - extent3[0]) / approxInterval
if (
tickCount > targetTickNum * 1.5 &&
lastLevelTickCount > targetTickNum / 1.5
) {
break
}
levelsTicks.push(levelTicksRemoveDuplicated)
if (tickCount > targetTickNum || bottomUnitName === unitNames[i2]) {
break
}
}
currentLevelTicks = []
}
}
var levelsTicksInExtent = filter(
map$1(levelsTicks, function (levelTicks2) {
return filter(levelTicks2, function (tick) {
return (
tick.value >= extent3[0] && tick.value <= extent3[1] && !tick.notAdd
)
})
}),
function (levelTicks2) {
return levelTicks2.length > 0
}
)
var ticks = []
var maxLevel = levelsTicksInExtent.length - 1
for (var i2 = 0; i2 < levelsTicksInExtent.length; ++i2) {
var levelTicks = levelsTicksInExtent[i2]
for (var k2 = 0; k2 < levelTicks.length; ++k2) {
ticks.push({
value: levelTicks[k2].value,
level: maxLevel - i2,
})
}
}
ticks.sort(function (a2, b2) {
return a2.value - b2.value
})
var result = []
for (var i2 = 0; i2 < ticks.length; ++i2) {
if (i2 === 0 || ticks[i2].value !== ticks[i2 - 1].value) {
result.push(ticks[i2])
}
}
return result
}
Scale$1.registerClass(TimeScale)
var TimeScale$1 = TimeScale
var scaleProto = Scale$1.prototype
var intervalScaleProto = IntervalScale$1.prototype
var roundingErrorFix = round$3
var mathFloor$1 = Math.floor
var mathCeil$1 = Math.ceil
var mathPow$1 = Math.pow
var mathLog$1 = Math.log
var LogScale = (function (_super) {
__extends$2(LogScale2, _super)
function LogScale2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = 'log'
_this.base = 10
_this._originalScale = new IntervalScale$1()
_this._interval = 0
return _this
}
LogScale2.prototype.getTicks = function (expandToNicedExtent) {
var originalScale = this._originalScale
var extent3 = this._extent
var originalExtent = originalScale.getExtent()
var ticks = intervalScaleProto.getTicks.call(this, expandToNicedExtent)
return map$1(
ticks,
function (tick) {
var val2 = tick.value
var powVal = round$3(mathPow$1(this.base, val2))
powVal =
val2 === extent3[0] && this._fixMin
? fixRoundingError(powVal, originalExtent[0])
: powVal
powVal =
val2 === extent3[1] && this._fixMax
? fixRoundingError(powVal, originalExtent[1])
: powVal
return {
value: powVal,
}
},
this
)
}
LogScale2.prototype.setExtent = function (start2, end2) {
var base2 = mathLog$1(this.base)
start2 = mathLog$1(Math.max(0, start2)) / base2
end2 = mathLog$1(Math.max(0, end2)) / base2
intervalScaleProto.setExtent.call(this, start2, end2)
}
LogScale2.prototype.getExtent = function () {
var base2 = this.base
var extent3 = scaleProto.getExtent.call(this)
extent3[0] = mathPow$1(base2, extent3[0])
extent3[1] = mathPow$1(base2, extent3[1])
var originalScale = this._originalScale
var originalExtent = originalScale.getExtent()
this._fixMin &&
(extent3[0] = fixRoundingError(extent3[0], originalExtent[0]))
this._fixMax &&
(extent3[1] = fixRoundingError(extent3[1], originalExtent[1]))
return extent3
}
LogScale2.prototype.unionExtent = function (extent3) {
this._originalScale.unionExtent(extent3)
var base2 = this.base
extent3[0] = mathLog$1(extent3[0]) / mathLog$1(base2)
extent3[1] = mathLog$1(extent3[1]) / mathLog$1(base2)
scaleProto.unionExtent.call(this, extent3)
}
LogScale2.prototype.unionExtentFromData = function (data2, dim) {
this.unionExtent(data2.getApproximateExtent(dim))
}
LogScale2.prototype.calcNiceTicks = function (approxTickNum) {
approxTickNum = approxTickNum || 10
var extent3 = this._extent
var span = extent3[1] - extent3[0]
if (span === Infinity || span <= 0) {
return
}
var interval = quantity(span)
var err = (approxTickNum / span) * interval
if (err <= 0.5) {
interval *= 10
}
while (
!isNaN(interval) &&
Math.abs(interval) < 1 &&
Math.abs(interval) > 0
) {
interval *= 10
}
var niceExtent = [
round$3(mathCeil$1(extent3[0] / interval) * interval),
round$3(mathFloor$1(extent3[1] / interval) * interval),
]
this._interval = interval
this._niceExtent = niceExtent
}
LogScale2.prototype.calcNiceExtent = function (opt) {
intervalScaleProto.calcNiceExtent.call(this, opt)
this._fixMin = opt.fixMin
this._fixMax = opt.fixMax
}
LogScale2.prototype.parse = function (val2) {
return val2
}
LogScale2.prototype.contain = function (val2) {
val2 = mathLog$1(val2) / mathLog$1(this.base)
return contain$1(val2, this._extent)
}
LogScale2.prototype.normalize = function (val2) {
val2 = mathLog$1(val2) / mathLog$1(this.base)
return normalize$2(val2, this._extent)
}
LogScale2.prototype.scale = function (val2) {
val2 = scale(val2, this._extent)
return mathPow$1(this.base, val2)
}
LogScale2.type = 'log'
return LogScale2
})(Scale$1)
var proto = LogScale.prototype
proto.getMinorTicks = intervalScaleProto.getMinorTicks
proto.getLabel = intervalScaleProto.getLabel
function fixRoundingError(val2, originalVal) {
return roundingErrorFix(val2, getPrecision(originalVal))
}
Scale$1.registerClass(LogScale)
var LogScale$1 = LogScale
var ScaleRawExtentInfo = (function () {
function ScaleRawExtentInfo2(scale2, model, originalExtent) {
this._prepareParams(scale2, model, originalExtent)
}
ScaleRawExtentInfo2.prototype._prepareParams = function (
scale2,
model,
dataExtent
) {
if (dataExtent[1] < dataExtent[0]) {
dataExtent = [NaN, NaN]
}
this._dataMin = dataExtent[0]
this._dataMax = dataExtent[1]
var isOrdinal = (this._isOrdinal = scale2.type === 'ordinal')
this._needCrossZero =
scale2.type === 'interval' &&
model.getNeedCrossZero &&
model.getNeedCrossZero()
var modelMinRaw = (this._modelMinRaw = model.get('min', true))
if (isFunction$4(modelMinRaw)) {
this._modelMinNum = parseAxisModelMinMax(
scale2,
modelMinRaw({
min: dataExtent[0],
max: dataExtent[1],
})
)
} else if (modelMinRaw !== 'dataMin') {
this._modelMinNum = parseAxisModelMinMax(scale2, modelMinRaw)
}
var modelMaxRaw = (this._modelMaxRaw = model.get('max', true))
if (isFunction$4(modelMaxRaw)) {
this._modelMaxNum = parseAxisModelMinMax(
scale2,
modelMaxRaw({
min: dataExtent[0],
max: dataExtent[1],
})
)
} else if (modelMaxRaw !== 'dataMax') {
this._modelMaxNum = parseAxisModelMinMax(scale2, modelMaxRaw)
}
if (isOrdinal) {
this._axisDataLen = model.getCategories().length
} else {
var boundaryGap = model.get('boundaryGap')
var boundaryGapArr = isArray$6(boundaryGap)
? boundaryGap
: [boundaryGap || 0, boundaryGap || 0]
if (
typeof boundaryGapArr[0] === 'boolean' ||
typeof boundaryGapArr[1] === 'boolean'
) {
this._boundaryGapInner = [0, 0]
} else {
this._boundaryGapInner = [
parsePercent$1(boundaryGapArr[0], 1),
parsePercent$1(boundaryGapArr[1], 1),
]
}
}
}
ScaleRawExtentInfo2.prototype.calculate = function () {
var isOrdinal = this._isOrdinal
var dataMin = this._dataMin
var dataMax = this._dataMax
var axisDataLen = this._axisDataLen
var boundaryGapInner = this._boundaryGapInner
var span = !isOrdinal ? dataMax - dataMin || Math.abs(dataMin) : null
var min3 = this._modelMinRaw === 'dataMin' ? dataMin : this._modelMinNum
var max3 = this._modelMaxRaw === 'dataMax' ? dataMax : this._modelMaxNum
var minFixed = min3 != null
var maxFixed = max3 != null
if (min3 == null) {
min3 = isOrdinal
? axisDataLen
? 0
: NaN
: dataMin - boundaryGapInner[0] * span
}
if (max3 == null) {
max3 = isOrdinal
? axisDataLen
? axisDataLen - 1
: NaN
: dataMax + boundaryGapInner[1] * span
}
;(min3 == null || !isFinite(min3)) && (min3 = NaN)
;(max3 == null || !isFinite(max3)) && (max3 = NaN)
var isBlank = eqNaN(min3) || eqNaN(max3) || (isOrdinal && !axisDataLen)
if (this._needCrossZero) {
if (min3 > 0 && max3 > 0 && !minFixed) {
min3 = 0
}
if (min3 < 0 && max3 < 0 && !maxFixed) {
max3 = 0
}
}
var determinedMin = this._determinedMin
var determinedMax = this._determinedMax
if (determinedMin != null) {
min3 = determinedMin
minFixed = true
}
if (determinedMax != null) {
max3 = determinedMax
maxFixed = true
}
return {
min: min3,
max: max3,
minFixed,
maxFixed,
isBlank,
}
}
ScaleRawExtentInfo2.prototype.modifyDataMinMax = function (minMaxName, val2) {
this[DATA_MIN_MAX_ATTR[minMaxName]] = val2
}
ScaleRawExtentInfo2.prototype.setDeterminedMinMax = function (
minMaxName,
val2
) {
var attr = DETERMINED_MIN_MAX_ATTR[minMaxName]
this[attr] = val2
}
ScaleRawExtentInfo2.prototype.freeze = function () {
this.frozen = true
}
return ScaleRawExtentInfo2
})()
var DETERMINED_MIN_MAX_ATTR = {
min: '_determinedMin',
max: '_determinedMax',
}
var DATA_MIN_MAX_ATTR = {
min: '_dataMin',
max: '_dataMax',
}
function ensureScaleRawExtentInfo(scale2, model, originalExtent) {
var rawExtentInfo = scale2.rawExtentInfo
if (rawExtentInfo) {
return rawExtentInfo
}
rawExtentInfo = new ScaleRawExtentInfo(scale2, model, originalExtent)
scale2.rawExtentInfo = rawExtentInfo
return rawExtentInfo
}
function parseAxisModelMinMax(scale2, minMax) {
return minMax == null ? null : eqNaN(minMax) ? NaN : scale2.parse(minMax)
}
function getScaleExtent(scale2, model) {
var scaleType = scale2.type
var rawExtentResult = ensureScaleRawExtentInfo(
scale2,
model,
scale2.getExtent()
).calculate()
scale2.setBlank(rawExtentResult.isBlank)
var min3 = rawExtentResult.min
var max3 = rawExtentResult.max
var ecModel = model.ecModel
if (ecModel && scaleType === 'time') {
var barSeriesModels = prepareLayoutBarSeries('bar', ecModel)
var isBaseAxisAndHasBarSeries_1 = false
each$f(barSeriesModels, function (seriesModel) {
isBaseAxisAndHasBarSeries_1 =
isBaseAxisAndHasBarSeries_1 || seriesModel.getBaseAxis() === model.axis
})
if (isBaseAxisAndHasBarSeries_1) {
var barWidthAndOffset = makeColumnLayout(barSeriesModels)
var adjustedScale = adjustScaleForOverflow(
min3,
max3,
model,
barWidthAndOffset
)
min3 = adjustedScale.min
max3 = adjustedScale.max
}
}
return {
extent: [min3, max3],
fixMin: rawExtentResult.minFixed,
fixMax: rawExtentResult.maxFixed,
}
}
function adjustScaleForOverflow(min3, max3, model, barWidthAndOffset) {
var axisExtent = model.axis.getExtent()
var axisLength = axisExtent[1] - axisExtent[0]
var barsOnCurrentAxis = retrieveColumnLayout(barWidthAndOffset, model.axis)
if (barsOnCurrentAxis === void 0) {
return {
min: min3,
max: max3,
}
}
var minOverflow = Infinity
each$f(barsOnCurrentAxis, function (item2) {
minOverflow = Math.min(item2.offset, minOverflow)
})
var maxOverflow = -Infinity
each$f(barsOnCurrentAxis, function (item2) {
maxOverflow = Math.max(item2.offset + item2.width, maxOverflow)
})
minOverflow = Math.abs(minOverflow)
maxOverflow = Math.abs(maxOverflow)
var totalOverFlow = minOverflow + maxOverflow
var oldRange = max3 - min3
var oldRangePercentOfNew = 1 - (minOverflow + maxOverflow) / axisLength
var overflowBuffer = oldRange / oldRangePercentOfNew - oldRange
max3 += overflowBuffer * (maxOverflow / totalOverFlow)
min3 -= overflowBuffer * (minOverflow / totalOverFlow)
return {
min: min3,
max: max3,
}
}
function niceScaleExtent(scale2, inModel) {
var model = inModel
var extentInfo = getScaleExtent(scale2, model)
var extent3 = extentInfo.extent
var splitNumber = model.get('splitNumber')
if (scale2 instanceof LogScale$1) {
scale2.base = model.get('logBase')
}
var scaleType = scale2.type
var interval = model.get('interval')
var isIntervalOrTime = scaleType === 'interval' || scaleType === 'time'
scale2.setExtent(extent3[0], extent3[1])
scale2.calcNiceExtent({
splitNumber,
fixMin: extentInfo.fixMin,
fixMax: extentInfo.fixMax,
minInterval: isIntervalOrTime ? model.get('minInterval') : null,
maxInterval: isIntervalOrTime ? model.get('maxInterval') : null,
})
if (interval != null) {
scale2.setInterval && scale2.setInterval(interval)
}
}
function createScaleByModel$1(model, axisType) {
axisType = axisType || model.get('type')
if (axisType) {
switch (axisType) {
case 'category':
return new OrdinalScale$1({
ordinalMeta: model.getOrdinalMeta
? model.getOrdinalMeta()
: model.getCategories(),
extent: [Infinity, -Infinity],
})
case 'time':
return new TimeScale$1({
locale: model.ecModel.getLocaleModel(),
useUTC: model.ecModel.get('useUTC'),
})
default:
return new (Scale$1.getClass(axisType) || IntervalScale$1)()
}
}
}
function ifAxisCrossZero(axis) {
var dataExtent = axis.scale.getExtent()
var min3 = dataExtent[0]
var max3 = dataExtent[1]
return !((min3 > 0 && max3 > 0) || (min3 < 0 && max3 < 0))
}
function makeLabelFormatter(axis) {
var labelFormatter = axis.getLabelModel().get('formatter')
var categoryTickStart =
axis.type === 'category' ? axis.scale.getExtent()[0] : null
if (axis.scale.type === 'time') {
return (function (tpl) {
return function (tick, idx) {
return axis.scale.getFormattedLabel(tick, idx, tpl)
}
})(labelFormatter)
} else if (isString$2(labelFormatter)) {
return (function (tpl) {
return function (tick) {
var label = axis.scale.getLabel(tick)
var text2 = tpl.replace('{value}', label != null ? label : '')
return text2
}
})(labelFormatter)
} else if (isFunction$4(labelFormatter)) {
return (function (cb) {
return function (tick, idx) {
if (categoryTickStart != null) {
idx = tick.value - categoryTickStart
}
return cb(
getAxisRawValue(axis, tick),
idx,
tick.level != null
? {
level: tick.level,
}
: null
)
}
})(labelFormatter)
} else {
return function (tick) {
return axis.scale.getLabel(tick)
}
}
}
function getAxisRawValue(axis, tick) {
return axis.type === 'category' ? axis.scale.getLabel(tick) : tick.value
}
function estimateLabelUnionRect(axis) {
var axisModel = axis.model
var scale2 = axis.scale
if (!axisModel.get(['axisLabel', 'show']) || scale2.isBlank()) {
return
}
var realNumberScaleTicks
var tickCount
var categoryScaleExtent = scale2.getExtent()
if (scale2 instanceof OrdinalScale$1) {
tickCount = scale2.count()
} else {
realNumberScaleTicks = scale2.getTicks()
tickCount = realNumberScaleTicks.length
}
var axisLabelModel = axis.getLabelModel()
var labelFormatter = makeLabelFormatter(axis)
var rect
var step = 1
if (tickCount > 40) {
step = Math.ceil(tickCount / 40)
}
for (var i2 = 0; i2 < tickCount; i2 += step) {
var tick = realNumberScaleTicks
? realNumberScaleTicks[i2]
: {
value: categoryScaleExtent[0] + i2,
}
var label = labelFormatter(tick, i2)
var unrotatedSingleRect = axisLabelModel.getTextRect(label)
var singleRect = rotateTextRect(
unrotatedSingleRect,
axisLabelModel.get('rotate') || 0
)
rect ? rect.union(singleRect) : (rect = singleRect)
}
return rect
}
function rotateTextRect(textRect, rotate2) {
var rotateRadians = (rotate2 * Math.PI) / 180
var beforeWidth = textRect.width
var beforeHeight = textRect.height
var afterWidth =
beforeWidth * Math.abs(Math.cos(rotateRadians)) +
Math.abs(beforeHeight * Math.sin(rotateRadians))
var afterHeight =
beforeWidth * Math.abs(Math.sin(rotateRadians)) +
Math.abs(beforeHeight * Math.cos(rotateRadians))
var rotatedRect = new BoundingRect$1(
textRect.x,
textRect.y,
afterWidth,
afterHeight
)
return rotatedRect
}
function getOptionCategoryInterval(model) {
var interval = model.get('interval')
return interval == null ? 'auto' : interval
}
function shouldShowAllLabels(axis) {
return (
axis.type === 'category' &&
getOptionCategoryInterval(axis.getLabelModel()) === 0
)
}
function getDataDimensionsOnAxis(data2, axisDim) {
var dataDimMap = {}
each$f(data2.mapDimensionsAll(axisDim), function (dataDim) {
dataDimMap[getStackedDimension(data2, dataDim)] = true
})
return keys$4(dataDimMap)
}
function unionAxisExtentFromData(dataExtent, data2, axisDim) {
if (data2) {
each$f(getDataDimensionsOnAxis(data2, axisDim), function (dim) {
var seriesExtent = data2.getApproximateExtent(dim)
seriesExtent[0] < dataExtent[0] && (dataExtent[0] = seriesExtent[0])
seriesExtent[1] > dataExtent[1] && (dataExtent[1] = seriesExtent[1])
})
}
}
var AxisModelCommonMixin = (function () {
function AxisModelCommonMixin2() {}
AxisModelCommonMixin2.prototype.getNeedCrossZero = function () {
var option2 = this.option
return !option2.scale
}
AxisModelCommonMixin2.prototype.getCoordSysModel = function () {
return
}
return AxisModelCommonMixin2
})()
function createList$2(seriesModel) {
return createSeriesData(null, seriesModel)
}
var dataStack = {
isDimensionStacked,
enableDataStack,
getStackedDimension,
}
function createScale(dataExtent, option2) {
var axisModel = option2
if (!(option2 instanceof Model$1)) {
axisModel = new Model$1(option2)
}
var scale2 = createScaleByModel$1(axisModel)
scale2.setExtent(dataExtent[0], dataExtent[1])
niceScaleExtent(scale2, axisModel)
return scale2
}
function mixinAxisModelCommonMethods(Model2) {
mixin(Model2, AxisModelCommonMixin)
}
function createTextStyle(textStyleModel, opts) {
opts = opts || {}
return createTextStyle$1(textStyleModel, null, null, opts.state !== 'normal')
}
var helper = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
createList: createList$2,
getLayoutRect,
dataStack,
createScale,
mixinAxisModelCommonMethods,
getECData,
createTextStyle,
createDimensions,
createSymbol: createSymbol$1,
enableHoverEmphasis,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var extensions = []
var extensionRegisters = {
registerPreprocessor,
registerProcessor,
registerPostInit,
registerPostUpdate,
registerUpdateLifecycle,
registerAction,
registerCoordinateSystem,
registerLayout,
registerVisual,
registerTransform,
registerLoading,
registerMap: registerMap$1,
registerImpl,
PRIORITY,
ComponentModel: ComponentModel$1,
ComponentView: ComponentView$1,
SeriesModel: SeriesModel$1,
ChartView: ChartView$1,
registerComponentModel: function (ComponentModelClass) {
ComponentModel$1.registerClass(ComponentModelClass)
},
registerComponentView: function (ComponentViewClass) {
ComponentView$1.registerClass(ComponentViewClass)
},
registerSeriesModel: function (SeriesModelClass) {
SeriesModel$1.registerClass(SeriesModelClass)
},
registerChartView: function (ChartViewClass) {
ChartView$1.registerClass(ChartViewClass)
},
registerSubTypeDefaulter: function (componentType, defaulter) {
ComponentModel$1.registerSubTypeDefaulter(componentType, defaulter)
},
registerPainter: function (painterType, PainterCtor) {
registerPainter(painterType, PainterCtor)
},
}
function use(ext) {
if (isArray$6(ext)) {
each$f(ext, function (singleExt) {
use(singleExt)
})
return
}
if (indexOf(extensions, ext) >= 0) {
return
}
extensions.push(ext)
if (isFunction$4(ext)) {
ext = {
install: ext,
}
}
ext.install(extensionRegisters)
}
var EPSILON = 1e-8
function isAroundEqual(a2, b2) {
return Math.abs(a2 - b2) < EPSILON
}
function contain(points2, x2, y2) {
var w2 = 0
var p2 = points2[0]
if (!p2) {
return false
}
for (var i2 = 1; i2 < points2.length; i2++) {
var p22 = points2[i2]
w2 += windingLine(p2[0], p2[1], p22[0], p22[1], x2, y2)
p2 = p22
}
var p0 = points2[0]
if (!isAroundEqual(p2[0], p0[0]) || !isAroundEqual(p2[1], p0[1])) {
w2 += windingLine(p2[0], p2[1], p0[0], p0[1], x2, y2)
}
return w2 !== 0
}
var TMP_TRANSFORM = []
function transformPoints(points2, transform3) {
for (var p2 = 0; p2 < points2.length; p2++) {
applyTransform$1(points2[p2], points2[p2], transform3)
}
}
function updateBBoxFromPoints(points2, min3, max3, projection) {
for (var i2 = 0; i2 < points2.length; i2++) {
var p2 = points2[i2]
if (projection) {
p2 = projection.project(p2)
}
if (p2 && isFinite(p2[0]) && isFinite(p2[1])) {
min$1(min3, min3, p2)
max$2(max3, max3, p2)
}
}
}
function centroid$1(points2) {
var signedArea = 0
var cx = 0
var cy = 0
var len2 = points2.length
var x0 = points2[len2 - 1][0]
var y0 = points2[len2 - 1][1]
for (var i2 = 0; i2 < len2; i2++) {
var x1 = points2[i2][0]
var y1 = points2[i2][1]
var a2 = x0 * y1 - x1 * y0
signedArea += a2
cx += (x0 + x1) * a2
cy += (y0 + y1) * a2
x0 = x1
y0 = y1
}
return signedArea
? [cx / signedArea / 3, cy / signedArea / 3, signedArea]
: [points2[0][0] || 0, points2[0][1] || 0]
}
var Region = (function () {
function Region2(name2) {
this.name = name2
}
Region2.prototype.setCenter = function (center2) {
this._center = center2
}
Region2.prototype.getCenter = function () {
var center2 = this._center
if (!center2) {
center2 = this._center = this.calcCenter()
}
return center2
}
return Region2
})()
var GeoJSONPolygonGeometry = (function () {
function GeoJSONPolygonGeometry2(exterior, interiors) {
this.type = 'polygon'
this.exterior = exterior
this.interiors = interiors
}
return GeoJSONPolygonGeometry2
})()
var GeoJSONLineStringGeometry = (function () {
function GeoJSONLineStringGeometry2(points2) {
this.type = 'linestring'
this.points = points2
}
return GeoJSONLineStringGeometry2
})()
var GeoJSONRegion = (function (_super) {
__extends$2(GeoJSONRegion2, _super)
function GeoJSONRegion2(name2, geometries, cp) {
var _this = _super.call(this, name2) || this
_this.type = 'geoJSON'
_this.geometries = geometries
_this._center = cp && [cp[0], cp[1]]
return _this
}
GeoJSONRegion2.prototype.calcCenter = function () {
var geometries = this.geometries
var largestGeo
var largestGeoSize = 0
for (var i2 = 0; i2 < geometries.length; i2++) {
var geo = geometries[i2]
var exterior = geo.exterior
var size = exterior && exterior.length
if (size > largestGeoSize) {
largestGeo = geo
largestGeoSize = size
}
}
if (largestGeo) {
return centroid$1(largestGeo.exterior)
}
var rect = this.getBoundingRect()
return [rect.x + rect.width / 2, rect.y + rect.height / 2]
}
GeoJSONRegion2.prototype.getBoundingRect = function (projection) {
var rect = this._rect
if (rect && !projection) {
return rect
}
var min3 = [Infinity, Infinity]
var max3 = [-Infinity, -Infinity]
var geometries = this.geometries
each$f(geometries, function (geo) {
if (geo.type === 'polygon') {
updateBBoxFromPoints(geo.exterior, min3, max3, projection)
} else {
each$f(geo.points, function (points2) {
updateBBoxFromPoints(points2, min3, max3, projection)
})
}
})
if (
!(
isFinite(min3[0]) &&
isFinite(min3[1]) &&
isFinite(max3[0]) &&
isFinite(max3[1])
)
) {
min3[0] = min3[1] = max3[0] = max3[1] = 0
}
rect = new BoundingRect$1(
min3[0],
min3[1],
max3[0] - min3[0],
max3[1] - min3[1]
)
if (!projection) {
this._rect = rect
}
return rect
}
GeoJSONRegion2.prototype.contain = function (coord) {
var rect = this.getBoundingRect()
var geometries = this.geometries
if (!rect.contain(coord[0], coord[1])) {
return false
}
loopGeo: for (var i2 = 0, len2 = geometries.length; i2 < len2; i2++) {
var geo = geometries[i2]
if (geo.type !== 'polygon') {
continue
}
var exterior = geo.exterior
var interiors = geo.interiors
if (contain(exterior, coord[0], coord[1])) {
for (var k2 = 0; k2 < (interiors ? interiors.length : 0); k2++) {
if (contain(interiors[k2], coord[0], coord[1])) {
continue loopGeo
}
}
return true
}
}
return false
}
GeoJSONRegion2.prototype.transformTo = function (x2, y2, width, height) {
var rect = this.getBoundingRect()
var aspect = rect.width / rect.height
if (!width) {
width = aspect * height
} else if (!height) {
height = width / aspect
}
var target2 = new BoundingRect$1(x2, y2, width, height)
var transform3 = rect.calculateTransform(target2)
var geometries = this.geometries
for (var i2 = 0; i2 < geometries.length; i2++) {
var geo = geometries[i2]
if (geo.type === 'polygon') {
transformPoints(geo.exterior, transform3)
each$f(geo.interiors, function (interior) {
transformPoints(interior, transform3)
})
} else {
each$f(geo.points, function (points2) {
transformPoints(points2, transform3)
})
}
}
rect = this._rect
rect.copy(target2)
this._center = [rect.x + rect.width / 2, rect.y + rect.height / 2]
}
GeoJSONRegion2.prototype.cloneShallow = function (name2) {
name2 == null && (name2 = this.name)
var newRegion = new GeoJSONRegion2(name2, this.geometries, this._center)
newRegion._rect = this._rect
newRegion.transformTo = null
return newRegion
}
return GeoJSONRegion2
})(Region)
var GeoSVGRegion = (function (_super) {
__extends$2(GeoSVGRegion2, _super)
function GeoSVGRegion2(name2, elOnlyForCalculate) {
var _this = _super.call(this, name2) || this
_this.type = 'geoSVG'
_this._elOnlyForCalculate = elOnlyForCalculate
return _this
}
GeoSVGRegion2.prototype.calcCenter = function () {
var el2 = this._elOnlyForCalculate
var rect = el2.getBoundingRect()
var center2 = [rect.x + rect.width / 2, rect.y + rect.height / 2]
var mat = identity(TMP_TRANSFORM)
var target2 = el2
while (target2 && !target2.isGeoSVGGraphicRoot) {
mul(mat, target2.getLocalTransform(), mat)
target2 = target2.parent
}
invert(mat, mat)
applyTransform$1(center2, center2, mat)
return center2
}
return GeoSVGRegion2
})(Region)
function decode(json) {
if (!json.UTF8Encoding) {
return json
}
var jsonCompressed = json
var encodeScale = jsonCompressed.UTF8Scale
if (encodeScale == null) {
encodeScale = 1024
}
var features2 = jsonCompressed.features
each$f(features2, function (feature) {
var geometry = feature.geometry
var encodeOffsets = geometry.encodeOffsets
var coordinates = geometry.coordinates
if (!encodeOffsets) {
return
}
switch (geometry.type) {
case 'LineString':
geometry.coordinates = decodeRing(
coordinates,
encodeOffsets,
encodeScale
)
break
case 'Polygon':
decodeRings(coordinates, encodeOffsets, encodeScale)
break
case 'MultiLineString':
decodeRings(coordinates, encodeOffsets, encodeScale)
break
case 'MultiPolygon':
each$f(coordinates, function (rings, idx) {
return decodeRings(rings, encodeOffsets[idx], encodeScale)
})
}
})
jsonCompressed.UTF8Encoding = false
return jsonCompressed
}
function decodeRings(rings, encodeOffsets, encodeScale) {
for (var c2 = 0; c2 < rings.length; c2++) {
rings[c2] = decodeRing(rings[c2], encodeOffsets[c2], encodeScale)
}
}
function decodeRing(coordinate2, encodeOffsets, encodeScale) {
var result = []
var prevX = encodeOffsets[0]
var prevY = encodeOffsets[1]
for (var i2 = 0; i2 < coordinate2.length; i2 += 2) {
var x2 = coordinate2.charCodeAt(i2) - 64
var y2 = coordinate2.charCodeAt(i2 + 1) - 64
x2 = (x2 >> 1) ^ -(x2 & 1)
y2 = (y2 >> 1) ^ -(y2 & 1)
x2 += prevX
y2 += prevY
prevX = x2
prevY = y2
result.push([x2 / encodeScale, y2 / encodeScale])
}
return result
}
function parseGeoJSON(geoJson, nameProperty) {
geoJson = decode(geoJson)
return map$1(
filter(geoJson.features, function (featureObj) {
return (
featureObj.geometry &&
featureObj.properties &&
featureObj.geometry.coordinates.length > 0
)
}),
function (featureObj) {
var properties = featureObj.properties
var geo = featureObj.geometry
var geometries = []
switch (geo.type) {
case 'Polygon':
var coordinates = geo.coordinates
geometries.push(
new GeoJSONPolygonGeometry(coordinates[0], coordinates.slice(1))
)
break
case 'MultiPolygon':
each$f(geo.coordinates, function (item2) {
if (item2[0]) {
geometries.push(
new GeoJSONPolygonGeometry(item2[0], item2.slice(1))
)
}
})
break
case 'LineString':
geometries.push(new GeoJSONLineStringGeometry([geo.coordinates]))
break
case 'MultiLineString':
geometries.push(new GeoJSONLineStringGeometry(geo.coordinates))
}
var region = new GeoJSONRegion(
properties[nameProperty || 'name'],
geometries,
properties.cp
)
region.properties = properties
return region
}
)
}
var number$2 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
linearMap: linearMap$2,
round: round$3,
asc: asc$2,
getPrecision,
getPrecisionSafe,
getPixelPrecision,
getPercentWithPrecision,
MAX_SAFE_INTEGER: MAX_SAFE_INTEGER$2,
remRadian,
isRadianAroundZero,
parseDate,
quantity,
quantityExponent,
nice,
quantile,
reformIntervals,
isNumeric,
numericToNumber,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var time = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
parse: parseDate,
format: format$3,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var graphic = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
extendShape,
extendPath,
makePath,
makeImage,
mergePath,
resizePath,
createIcon,
updateProps: updateProps$1,
initProps,
getTransform: getTransform$1,
clipPointsByRect,
clipRectByRect,
registerShape,
getShapeClass,
Group: Group$5,
Image: ZRImage$1,
Text: ZRText$1,
Circle: Circle$2,
Ellipse: Ellipse$1,
Sector: Sector$1,
Ring: Ring$1,
Polygon: Polygon$1,
Polyline: Polyline$3,
Rect: Rect$4,
Line: Line$4,
BezierCurve: BezierCurve$1,
Arc: Arc$1,
IncrementalDisplayable: IncrementalDisplayable$1,
CompoundPath: CompoundPath$1,
LinearGradient: LinearGradient$1,
RadialGradient: RadialGradient$1,
BoundingRect: BoundingRect$1,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var format$2 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
addCommas,
toCamelCase,
normalizeCssArray,
encodeHTML,
formatTpl,
getTooltipMarker,
formatTime,
capitalFirst,
truncateText,
getTextRect,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var util = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
map: map$1,
each: each$f,
indexOf,
inherits,
reduce,
filter,
bind: bind$1,
curry: curry$1,
isArray: isArray$6,
isString: isString$2,
isObject: isObject$b,
isFunction: isFunction$4,
extend,
defaults,
clone: clone$4,
merge,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var inner$g = makeInner()
function createAxisLabels(axis) {
return axis.type === 'category'
? makeCategoryLabels(axis)
: makeRealNumberLabels(axis)
}
function createAxisTicks(axis, tickModel) {
return axis.type === 'category'
? makeCategoryTicks(axis, tickModel)
: {
ticks: map$1(axis.scale.getTicks(), function (tick) {
return tick.value
}),
}
}
function makeCategoryLabels(axis) {
var labelModel = axis.getLabelModel()
var result = makeCategoryLabelsActually(axis, labelModel)
return !labelModel.get('show') || axis.scale.isBlank()
? {
labels: [],
labelCategoryInterval: result.labelCategoryInterval,
}
: result
}
function makeCategoryLabelsActually(axis, labelModel) {
var labelsCache = getListCache(axis, 'labels')
var optionLabelInterval = getOptionCategoryInterval(labelModel)
var result = listCacheGet$2(labelsCache, optionLabelInterval)
if (result) {
return result
}
var labels
var numericLabelInterval
if (isFunction$4(optionLabelInterval)) {
labels = makeLabelsByCustomizedCategoryInterval(axis, optionLabelInterval)
} else {
numericLabelInterval =
optionLabelInterval === 'auto'
? makeAutoCategoryInterval(axis)
: optionLabelInterval
labels = makeLabelsByNumericCategoryInterval(axis, numericLabelInterval)
}
return listCacheSet$2(labelsCache, optionLabelInterval, {
labels,
labelCategoryInterval: numericLabelInterval,
})
}
function makeCategoryTicks(axis, tickModel) {
var ticksCache = getListCache(axis, 'ticks')
var optionTickInterval = getOptionCategoryInterval(tickModel)
var result = listCacheGet$2(ticksCache, optionTickInterval)
if (result) {
return result
}
var ticks
var tickCategoryInterval
if (!tickModel.get('show') || axis.scale.isBlank()) {
ticks = []
}
if (isFunction$4(optionTickInterval)) {
ticks = makeLabelsByCustomizedCategoryInterval(
axis,
optionTickInterval,
true
)
} else if (optionTickInterval === 'auto') {
var labelsResult = makeCategoryLabelsActually(axis, axis.getLabelModel())
tickCategoryInterval = labelsResult.labelCategoryInterval
ticks = map$1(labelsResult.labels, function (labelItem) {
return labelItem.tickValue
})
} else {
tickCategoryInterval = optionTickInterval
ticks = makeLabelsByNumericCategoryInterval(
axis,
tickCategoryInterval,
true
)
}
return listCacheSet$2(ticksCache, optionTickInterval, {
ticks,
tickCategoryInterval,
})
}
function makeRealNumberLabels(axis) {
var ticks = axis.scale.getTicks()
var labelFormatter = makeLabelFormatter(axis)
return {
labels: map$1(ticks, function (tick, idx) {
return {
level: tick.level,
formattedLabel: labelFormatter(tick, idx),
rawLabel: axis.scale.getLabel(tick),
tickValue: tick.value,
}
}),
}
}
function getListCache(axis, prop) {
return inner$g(axis)[prop] || (inner$g(axis)[prop] = [])
}
function listCacheGet$2(cache2, key2) {
for (var i2 = 0; i2 < cache2.length; i2++) {
if (cache2[i2].key === key2) {
return cache2[i2].value
}
}
}
function listCacheSet$2(cache2, key2, value2) {
cache2.push({
key: key2,
value: value2,
})
return value2
}
function makeAutoCategoryInterval(axis) {
var result = inner$g(axis).autoInterval
return result != null
? result
: (inner$g(axis).autoInterval = axis.calculateCategoryInterval())
}
function calculateCategoryInterval(axis) {
var params2 = fetchAutoCategoryIntervalCalculationParams(axis)
var labelFormatter = makeLabelFormatter(axis)
var rotation = ((params2.axisRotate - params2.labelRotate) / 180) * Math.PI
var ordinalScale = axis.scale
var ordinalExtent = ordinalScale.getExtent()
var tickCount = ordinalScale.count()
if (ordinalExtent[1] - ordinalExtent[0] < 1) {
return 0
}
var step = 1
if (tickCount > 40) {
step = Math.max(1, Math.floor(tickCount / 40))
}
var tickValue = ordinalExtent[0]
var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue)
var unitW = Math.abs(unitSpan * Math.cos(rotation))
var unitH = Math.abs(unitSpan * Math.sin(rotation))
var maxW = 0
var maxH = 0
for (; tickValue <= ordinalExtent[1]; tickValue += step) {
var width = 0
var height = 0
var rect = getBoundingRect(
labelFormatter({
value: tickValue,
}),
params2.font,
'center',
'top'
)
width = rect.width * 1.3
height = rect.height * 1.3
maxW = Math.max(maxW, width, 7)
maxH = Math.max(maxH, height, 7)
}
var dw = maxW / unitW
var dh = maxH / unitH
isNaN(dw) && (dw = Infinity)
isNaN(dh) && (dh = Infinity)
var interval = Math.max(0, Math.floor(Math.min(dw, dh)))
var cache2 = inner$g(axis.model)
var axisExtent = axis.getExtent()
var lastAutoInterval = cache2.lastAutoInterval
var lastTickCount = cache2.lastTickCount
if (
lastAutoInterval != null &&
lastTickCount != null &&
Math.abs(lastAutoInterval - interval) <= 1 &&
Math.abs(lastTickCount - tickCount) <= 1 &&
lastAutoInterval > interval &&
cache2.axisExtent0 === axisExtent[0] &&
cache2.axisExtent1 === axisExtent[1]
) {
interval = lastAutoInterval
} else {
cache2.lastTickCount = tickCount
cache2.lastAutoInterval = interval
cache2.axisExtent0 = axisExtent[0]
cache2.axisExtent1 = axisExtent[1]
}
return interval
}
function fetchAutoCategoryIntervalCalculationParams(axis) {
var labelModel = axis.getLabelModel()
return {
axisRotate: axis.getRotate
? axis.getRotate()
: axis.isHorizontal && !axis.isHorizontal()
? 90
: 0,
labelRotate: labelModel.get('rotate') || 0,
font: labelModel.getFont(),
}
}
function makeLabelsByNumericCategoryInterval(axis, categoryInterval, onlyTick) {
var labelFormatter = makeLabelFormatter(axis)
var ordinalScale = axis.scale
var ordinalExtent = ordinalScale.getExtent()
var labelModel = axis.getLabelModel()
var result = []
var step = Math.max((categoryInterval || 0) + 1, 1)
var startTick = ordinalExtent[0]
var tickCount = ordinalScale.count()
if (startTick !== 0 && step > 1 && tickCount / step > 2) {
startTick = Math.round(Math.ceil(startTick / step) * step)
}
var showAllLabel = shouldShowAllLabels(axis)
var includeMinLabel = labelModel.get('showMinLabel') || showAllLabel
var includeMaxLabel = labelModel.get('showMaxLabel') || showAllLabel
if (includeMinLabel && startTick !== ordinalExtent[0]) {
addItem(ordinalExtent[0])
}
var tickValue = startTick
for (; tickValue <= ordinalExtent[1]; tickValue += step) {
addItem(tickValue)
}
if (includeMaxLabel && tickValue - step !== ordinalExtent[1]) {
addItem(ordinalExtent[1])
}
function addItem(tickValue2) {
var tickObj = {
value: tickValue2,
}
result.push(
onlyTick
? tickValue2
: {
formattedLabel: labelFormatter(tickObj),
rawLabel: ordinalScale.getLabel(tickObj),
tickValue: tickValue2,
}
)
}
return result
}
function makeLabelsByCustomizedCategoryInterval(
axis,
categoryInterval,
onlyTick
) {
var ordinalScale = axis.scale
var labelFormatter = makeLabelFormatter(axis)
var result = []
each$f(ordinalScale.getTicks(), function (tick) {
var rawLabel = ordinalScale.getLabel(tick)
var tickValue = tick.value
if (categoryInterval(tick.value, rawLabel)) {
result.push(
onlyTick
? tickValue
: {
formattedLabel: labelFormatter(tick),
rawLabel,
tickValue,
}
)
}
})
return result
}
var NORMALIZED_EXTENT = [0, 1]
var Axis = (function () {
function Axis2(dim, scale2, extent3) {
this.onBand = false
this.inverse = false
this.dim = dim
this.scale = scale2
this._extent = extent3 || [0, 0]
}
Axis2.prototype.contain = function (coord) {
var extent3 = this._extent
var min3 = Math.min(extent3[0], extent3[1])
var max3 = Math.max(extent3[0], extent3[1])
return coord >= min3 && coord <= max3
}
Axis2.prototype.containData = function (data2) {
return this.scale.contain(data2)
}
Axis2.prototype.getExtent = function () {
return this._extent.slice()
}
Axis2.prototype.getPixelPrecision = function (dataExtent) {
return getPixelPrecision(dataExtent || this.scale.getExtent(), this._extent)
}
Axis2.prototype.setExtent = function (start2, end2) {
var extent3 = this._extent
extent3[0] = start2
extent3[1] = end2
}
Axis2.prototype.dataToCoord = function (data2, clamp2) {
var extent3 = this._extent
var scale2 = this.scale
data2 = scale2.normalize(data2)
if (this.onBand && scale2.type === 'ordinal') {
extent3 = extent3.slice()
fixExtentWithBands(extent3, scale2.count())
}
return linearMap$2(data2, NORMALIZED_EXTENT, extent3, clamp2)
}
Axis2.prototype.coordToData = function (coord, clamp2) {
var extent3 = this._extent
var scale2 = this.scale
if (this.onBand && scale2.type === 'ordinal') {
extent3 = extent3.slice()
fixExtentWithBands(extent3, scale2.count())
}
var t3 = linearMap$2(coord, extent3, NORMALIZED_EXTENT, clamp2)
return this.scale.scale(t3)
}
Axis2.prototype.pointToData = function (point, clamp2) {
return
}
Axis2.prototype.getTicksCoords = function (opt) {
opt = opt || {}
var tickModel = opt.tickModel || this.getTickModel()
var result = createAxisTicks(this, tickModel)
var ticks = result.ticks
var ticksCoords = map$1(
ticks,
function (tickVal) {
return {
coord: this.dataToCoord(
this.scale.type === 'ordinal'
? this.scale.getRawOrdinalNumber(tickVal)
: tickVal
),
tickValue: tickVal,
}
},
this
)
var alignWithLabel = tickModel.get('alignWithLabel')
fixOnBandTicksCoords(this, ticksCoords, alignWithLabel, opt.clamp)
return ticksCoords
}
Axis2.prototype.getMinorTicksCoords = function () {
if (this.scale.type === 'ordinal') {
return []
}
var minorTickModel = this.model.getModel('minorTick')
var splitNumber = minorTickModel.get('splitNumber')
if (!(splitNumber > 0 && splitNumber < 100)) {
splitNumber = 5
}
var minorTicks = this.scale.getMinorTicks(splitNumber)
var minorTicksCoords = map$1(
minorTicks,
function (minorTicksGroup) {
return map$1(
minorTicksGroup,
function (minorTick) {
return {
coord: this.dataToCoord(minorTick),
tickValue: minorTick,
}
},
this
)
},
this
)
return minorTicksCoords
}
Axis2.prototype.getViewLabels = function () {
return createAxisLabels(this).labels
}
Axis2.prototype.getLabelModel = function () {
return this.model.getModel('axisLabel')
}
Axis2.prototype.getTickModel = function () {
return this.model.getModel('axisTick')
}
Axis2.prototype.getBandWidth = function () {
var axisExtent = this._extent
var dataExtent = this.scale.getExtent()
var len2 = dataExtent[1] - dataExtent[0] + (this.onBand ? 1 : 0)
len2 === 0 && (len2 = 1)
var size = Math.abs(axisExtent[1] - axisExtent[0])
return Math.abs(size) / len2
}
Axis2.prototype.calculateCategoryInterval = function () {
return calculateCategoryInterval(this)
}
return Axis2
})()
function fixExtentWithBands(extent3, nTick) {
var size = extent3[1] - extent3[0]
var len2 = nTick
var margin = size / len2 / 2
extent3[0] += margin
extent3[1] -= margin
}
function fixOnBandTicksCoords(axis, ticksCoords, alignWithLabel, clamp2) {
var ticksLen = ticksCoords.length
if (!axis.onBand || alignWithLabel || !ticksLen) {
return
}
var axisExtent = axis.getExtent()
var last2
var diffSize
if (ticksLen === 1) {
ticksCoords[0].coord = axisExtent[0]
last2 = ticksCoords[1] = {
coord: axisExtent[1],
}
} else {
var crossLen =
ticksCoords[ticksLen - 1].tickValue - ticksCoords[0].tickValue
var shift_1 =
(ticksCoords[ticksLen - 1].coord - ticksCoords[0].coord) / crossLen
each$f(ticksCoords, function (ticksItem) {
ticksItem.coord -= shift_1 / 2
})
var dataExtent = axis.scale.getExtent()
diffSize = 1 + dataExtent[1] - ticksCoords[ticksLen - 1].tickValue
last2 = {
coord: ticksCoords[ticksLen - 1].coord + shift_1 * diffSize,
}
ticksCoords.push(last2)
}
var inverse = axisExtent[0] > axisExtent[1]
if (littleThan2(ticksCoords[0].coord, axisExtent[0])) {
clamp2 ? (ticksCoords[0].coord = axisExtent[0]) : ticksCoords.shift()
}
if (clamp2 && littleThan2(axisExtent[0], ticksCoords[0].coord)) {
ticksCoords.unshift({
coord: axisExtent[0],
})
}
if (littleThan2(axisExtent[1], last2.coord)) {
clamp2 ? (last2.coord = axisExtent[1]) : ticksCoords.pop()
}
if (clamp2 && littleThan2(last2.coord, axisExtent[1])) {
ticksCoords.push({
coord: axisExtent[1],
})
}
function littleThan2(a2, b2) {
a2 = round$3(a2)
b2 = round$3(b2)
return inverse ? a2 > b2 : a2 < b2
}
}
var Axis$1 = Axis
function extendComponentModel(proto2) {
var Model2 = ComponentModel$1.extend(proto2)
ComponentModel$1.registerClass(Model2)
return Model2
}
function extendComponentView(proto2) {
var View2 = ComponentView$1.extend(proto2)
ComponentView$1.registerClass(View2)
return View2
}
function extendSeriesModel(proto2) {
var Model2 = SeriesModel$1.extend(proto2)
SeriesModel$1.registerClass(Model2)
return Model2
}
function extendChartView(proto2) {
var View2 = ChartView$1.extend(proto2)
ChartView$1.registerClass(View2)
return View2
}
var PI2$2 = Math.PI * 2
var CMD$1 = PathProxy$1.CMD
var DEFAULT_SEARCH_SPACE = ['top', 'right', 'bottom', 'left']
function getCandidateAnchor(pos, distance2, rect, outPt, outDir) {
var width = rect.width
var height = rect.height
switch (pos) {
case 'top':
outPt.set(rect.x + width / 2, rect.y - distance2)
outDir.set(0, -1)
break
case 'bottom':
outPt.set(rect.x + width / 2, rect.y + height + distance2)
outDir.set(0, 1)
break
case 'left':
outPt.set(rect.x - distance2, rect.y + height / 2)
outDir.set(-1, 0)
break
case 'right':
outPt.set(rect.x + width + distance2, rect.y + height / 2)
outDir.set(1, 0)
break
}
}
function projectPointToArc(
cx,
cy,
r2,
startAngle,
endAngle,
anticlockwise,
x2,
y2,
out2
) {
x2 -= cx
y2 -= cy
var d3 = Math.sqrt(x2 * x2 + y2 * y2)
x2 /= d3
y2 /= d3
var ox = x2 * r2 + cx
var oy = y2 * r2 + cy
if (Math.abs(startAngle - endAngle) % PI2$2 < 1e-4) {
out2[0] = ox
out2[1] = oy
return d3 - r2
}
if (anticlockwise) {
var tmp = startAngle
startAngle = normalizeRadian(endAngle)
endAngle = normalizeRadian(tmp)
} else {
startAngle = normalizeRadian(startAngle)
endAngle = normalizeRadian(endAngle)
}
if (startAngle > endAngle) {
endAngle += PI2$2
}
var angle2 = Math.atan2(y2, x2)
if (angle2 < 0) {
angle2 += PI2$2
}
if (
(angle2 >= startAngle && angle2 <= endAngle) ||
(angle2 + PI2$2 >= startAngle && angle2 + PI2$2 <= endAngle)
) {
out2[0] = ox
out2[1] = oy
return d3 - r2
}
var x1 = r2 * Math.cos(startAngle) + cx
var y1 = r2 * Math.sin(startAngle) + cy
var x22 = r2 * Math.cos(endAngle) + cx
var y22 = r2 * Math.sin(endAngle) + cy
var d1 = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)
var d22 = (x22 - x2) * (x22 - x2) + (y22 - y2) * (y22 - y2)
if (d1 < d22) {
out2[0] = x1
out2[1] = y1
return Math.sqrt(d1)
} else {
out2[0] = x22
out2[1] = y22
return Math.sqrt(d22)
}
}
function projectPointToLine(x1, y1, x2, y2, x3, y3, out2, limitToEnds) {
var dx = x3 - x1
var dy = y3 - y1
var dx1 = x2 - x1
var dy1 = y2 - y1
var lineLen = Math.sqrt(dx1 * dx1 + dy1 * dy1)
dx1 /= lineLen
dy1 /= lineLen
var projectedLen = dx * dx1 + dy * dy1
var t3 = projectedLen / lineLen
if (limitToEnds) {
t3 = Math.min(Math.max(t3, 0), 1)
}
t3 *= lineLen
var ox = (out2[0] = x1 + t3 * dx1)
var oy = (out2[1] = y1 + t3 * dy1)
return Math.sqrt((ox - x3) * (ox - x3) + (oy - y3) * (oy - y3))
}
function projectPointToRect(x1, y1, width, height, x2, y2, out2) {
if (width < 0) {
x1 = x1 + width
width = -width
}
if (height < 0) {
y1 = y1 + height
height = -height
}
var x22 = x1 + width
var y22 = y1 + height
var ox = (out2[0] = Math.min(Math.max(x2, x1), x22))
var oy = (out2[1] = Math.min(Math.max(y2, y1), y22))
return Math.sqrt((ox - x2) * (ox - x2) + (oy - y2) * (oy - y2))
}
var tmpPt = []
function nearestPointOnRect(pt3, rect, out2) {
var dist2 = projectPointToRect(
rect.x,
rect.y,
rect.width,
rect.height,
pt3.x,
pt3.y,
tmpPt
)
out2.set(tmpPt[0], tmpPt[1])
return dist2
}
function nearestPointOnPath(pt3, path, out2) {
var xi = 0
var yi = 0
var x0 = 0
var y0 = 0
var x1
var y1
var minDist = Infinity
var data2 = path.data
var x2 = pt3.x
var y2 = pt3.y
for (var i2 = 0; i2 < data2.length; ) {
var cmd = data2[i2++]
if (i2 === 1) {
xi = data2[i2]
yi = data2[i2 + 1]
x0 = xi
y0 = yi
}
var d3 = minDist
switch (cmd) {
case CMD$1.M:
x0 = data2[i2++]
y0 = data2[i2++]
xi = x0
yi = y0
break
case CMD$1.L:
d3 = projectPointToLine(
xi,
yi,
data2[i2],
data2[i2 + 1],
x2,
y2,
tmpPt,
true
)
xi = data2[i2++]
yi = data2[i2++]
break
case CMD$1.C:
d3 = cubicProjectPoint(
xi,
yi,
data2[i2++],
data2[i2++],
data2[i2++],
data2[i2++],
data2[i2],
data2[i2 + 1],
x2,
y2,
tmpPt
)
xi = data2[i2++]
yi = data2[i2++]
break
case CMD$1.Q:
d3 = quadraticProjectPoint(
xi,
yi,
data2[i2++],
data2[i2++],
data2[i2],
data2[i2 + 1],
x2,
y2,
tmpPt
)
xi = data2[i2++]
yi = data2[i2++]
break
case CMD$1.A:
var cx = data2[i2++]
var cy = data2[i2++]
var rx = data2[i2++]
var ry = data2[i2++]
var theta = data2[i2++]
var dTheta = data2[i2++]
i2 += 1
var anticlockwise = !!(1 - data2[i2++])
x1 = Math.cos(theta) * rx + cx
y1 = Math.sin(theta) * ry + cy
if (i2 <= 1) {
x0 = x1
y0 = y1
}
var _x = ((x2 - cx) * ry) / rx + cx
d3 = projectPointToArc(
cx,
cy,
ry,
theta,
theta + dTheta,
anticlockwise,
_x,
y2,
tmpPt
)
xi = Math.cos(theta + dTheta) * rx + cx
yi = Math.sin(theta + dTheta) * ry + cy
break
case CMD$1.R:
x0 = xi = data2[i2++]
y0 = yi = data2[i2++]
var width = data2[i2++]
var height = data2[i2++]
d3 = projectPointToRect(x0, y0, width, height, x2, y2, tmpPt)
break
case CMD$1.Z:
d3 = projectPointToLine(xi, yi, x0, y0, x2, y2, tmpPt, true)
xi = x0
yi = y0
break
}
if (d3 < minDist) {
minDist = d3
out2.set(tmpPt[0], tmpPt[1])
}
}
return minDist
}
var pt0 = new Point$1()
var pt1 = new Point$1()
var pt2 = new Point$1()
var dir = new Point$1()
var dir2 = new Point$1()
function updateLabelLinePoints(target2, labelLineModel) {
if (!target2) {
return
}
var labelLine = target2.getTextGuideLine()
var label = target2.getTextContent()
if (!(label && labelLine)) {
return
}
var labelGuideConfig = target2.textGuideLineConfig || {}
var points2 = [
[0, 0],
[0, 0],
[0, 0],
]
var searchSpace = labelGuideConfig.candidates || DEFAULT_SEARCH_SPACE
var labelRect = label.getBoundingRect().clone()
labelRect.applyTransform(label.getComputedTransform())
var minDist = Infinity
var anchorPoint = labelGuideConfig.anchor
var targetTransform = target2.getComputedTransform()
var targetInversedTransform = targetTransform && invert([], targetTransform)
var len2 = labelLineModel.get('length2') || 0
if (anchorPoint) {
pt2.copy(anchorPoint)
}
for (var i2 = 0; i2 < searchSpace.length; i2++) {
var candidate = searchSpace[i2]
getCandidateAnchor(candidate, 0, labelRect, pt0, dir)
Point$1.scaleAndAdd(pt1, pt0, dir, len2)
pt1.transform(targetInversedTransform)
var boundingRect = target2.getBoundingRect()
var dist2 = anchorPoint
? anchorPoint.distance(pt1)
: target2 instanceof Path$1
? nearestPointOnPath(pt1, target2.path, pt2)
: nearestPointOnRect(pt1, boundingRect, pt2)
if (dist2 < minDist) {
minDist = dist2
pt1.transform(targetTransform)
pt2.transform(targetTransform)
pt2.toArray(points2[0])
pt1.toArray(points2[1])
pt0.toArray(points2[2])
}
}
limitTurnAngle(points2, labelLineModel.get('minTurnAngle'))
labelLine.setShape({
points: points2,
})
}
var tmpArr = []
var tmpProjPoint = new Point$1()
function limitTurnAngle(linePoints, minTurnAngle) {
if (!(minTurnAngle <= 180 && minTurnAngle > 0)) {
return
}
minTurnAngle = (minTurnAngle / 180) * Math.PI
pt0.fromArray(linePoints[0])
pt1.fromArray(linePoints[1])
pt2.fromArray(linePoints[2])
Point$1.sub(dir, pt0, pt1)
Point$1.sub(dir2, pt2, pt1)
var len1 = dir.len()
var len2 = dir2.len()
if (len1 < 1e-3 || len2 < 1e-3) {
return
}
dir.scale(1 / len1)
dir2.scale(1 / len2)
var angleCos = dir.dot(dir2)
var minTurnAngleCos = Math.cos(minTurnAngle)
if (minTurnAngleCos < angleCos) {
var d3 = projectPointToLine(
pt1.x,
pt1.y,
pt2.x,
pt2.y,
pt0.x,
pt0.y,
tmpArr,
false
)
tmpProjPoint.fromArray(tmpArr)
tmpProjPoint.scaleAndAdd(dir2, d3 / Math.tan(Math.PI - minTurnAngle))
var t3 =
pt2.x !== pt1.x
? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x)
: (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y)
if (isNaN(t3)) {
return
}
if (t3 < 0) {
Point$1.copy(tmpProjPoint, pt1)
} else if (t3 > 1) {
Point$1.copy(tmpProjPoint, pt2)
}
tmpProjPoint.toArray(linePoints[1])
}
}
function limitSurfaceAngle(linePoints, surfaceNormal, maxSurfaceAngle) {
if (!(maxSurfaceAngle <= 180 && maxSurfaceAngle > 0)) {
return
}
maxSurfaceAngle = (maxSurfaceAngle / 180) * Math.PI
pt0.fromArray(linePoints[0])
pt1.fromArray(linePoints[1])
pt2.fromArray(linePoints[2])
Point$1.sub(dir, pt1, pt0)
Point$1.sub(dir2, pt2, pt1)
var len1 = dir.len()
var len2 = dir2.len()
if (len1 < 1e-3 || len2 < 1e-3) {
return
}
dir.scale(1 / len1)
dir2.scale(1 / len2)
var angleCos = dir.dot(surfaceNormal)
var maxSurfaceAngleCos = Math.cos(maxSurfaceAngle)
if (angleCos < maxSurfaceAngleCos) {
var d3 = projectPointToLine(
pt1.x,
pt1.y,
pt2.x,
pt2.y,
pt0.x,
pt0.y,
tmpArr,
false
)
tmpProjPoint.fromArray(tmpArr)
var HALF_PI = Math.PI / 2
var angle2 = Math.acos(dir2.dot(surfaceNormal))
var newAngle = HALF_PI + angle2 - maxSurfaceAngle
if (newAngle >= HALF_PI) {
Point$1.copy(tmpProjPoint, pt2)
} else {
tmpProjPoint.scaleAndAdd(dir2, d3 / Math.tan(Math.PI / 2 - newAngle))
var t3 =
pt2.x !== pt1.x
? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x)
: (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y)
if (isNaN(t3)) {
return
}
if (t3 < 0) {
Point$1.copy(tmpProjPoint, pt1)
} else if (t3 > 1) {
Point$1.copy(tmpProjPoint, pt2)
}
}
tmpProjPoint.toArray(linePoints[1])
}
}
function setLabelLineState(labelLine, ignore, stateName, stateModel) {
var isNormal = stateName === 'normal'
var stateObj = isNormal ? labelLine : labelLine.ensureState(stateName)
stateObj.ignore = ignore
var smooth = stateModel.get('smooth')
if (smooth && smooth === true) {
smooth = 0.3
}
stateObj.shape = stateObj.shape || {}
if (smooth > 0) {
stateObj.shape.smooth = smooth
}
var styleObj = stateModel.getModel('lineStyle').getLineStyle()
isNormal ? labelLine.useStyle(styleObj) : (stateObj.style = styleObj)
}
function buildLabelLinePath(path, shape) {
var smooth = shape.smooth
var points2 = shape.points
if (!points2) {
return
}
path.moveTo(points2[0][0], points2[0][1])
if (smooth > 0 && points2.length >= 3) {
var len1 = dist$1(points2[0], points2[1])
var len2 = dist$1(points2[1], points2[2])
if (!len1 || !len2) {
path.lineTo(points2[1][0], points2[1][1])
path.lineTo(points2[2][0], points2[2][1])
return
}
var moveLen = Math.min(len1, len2) * smooth
var midPoint0 = lerp$1([], points2[1], points2[0], moveLen / len1)
var midPoint2 = lerp$1([], points2[1], points2[2], moveLen / len2)
var midPoint1 = lerp$1([], midPoint0, midPoint2, 0.5)
path.bezierCurveTo(
midPoint0[0],
midPoint0[1],
midPoint0[0],
midPoint0[1],
midPoint1[0],
midPoint1[1]
)
path.bezierCurveTo(
midPoint2[0],
midPoint2[1],
midPoint2[0],
midPoint2[1],
points2[2][0],
points2[2][1]
)
} else {
for (var i2 = 1; i2 < points2.length; i2++) {
path.lineTo(points2[i2][0], points2[i2][1])
}
}
}
function setLabelLineStyle(targetEl, statesModels, defaultStyle2) {
var labelLine = targetEl.getTextGuideLine()
var label = targetEl.getTextContent()
if (!label) {
if (labelLine) {
targetEl.removeTextGuideLine()
}
return
}
var normalModel = statesModels.normal
var showNormal = normalModel.get('show')
var labelIgnoreNormal = label.ignore
for (var i2 = 0; i2 < DISPLAY_STATES.length; i2++) {
var stateName = DISPLAY_STATES[i2]
var stateModel = statesModels[stateName]
var isNormal = stateName === 'normal'
if (stateModel) {
var stateShow = stateModel.get('show')
var isLabelIgnored = isNormal
? labelIgnoreNormal
: retrieve2(
label.states[stateName] && label.states[stateName].ignore,
labelIgnoreNormal
)
if (isLabelIgnored || !retrieve2(stateShow, showNormal)) {
var stateObj = isNormal
? labelLine
: labelLine && labelLine.states[stateName]
if (stateObj) {
stateObj.ignore = true
}
continue
}
if (!labelLine) {
labelLine = new Polyline$3()
targetEl.setTextGuideLine(labelLine)
if (!isNormal && (labelIgnoreNormal || !showNormal)) {
setLabelLineState(labelLine, true, 'normal', statesModels.normal)
}
if (targetEl.stateProxy) {
labelLine.stateProxy = targetEl.stateProxy
}
}
setLabelLineState(labelLine, false, stateName, stateModel)
}
}
if (labelLine) {
defaults(labelLine.style, defaultStyle2)
labelLine.style.fill = null
var showAbove = normalModel.get('showAbove')
var labelLineConfig = (targetEl.textGuideLineConfig =
targetEl.textGuideLineConfig || {})
labelLineConfig.showAbove = showAbove || false
labelLine.buildPath = buildLabelLinePath
}
}
function getLabelLineStatesModels(itemModel, labelLineName) {
labelLineName = labelLineName || 'labelLine'
var statesModels = {
normal: itemModel.getModel(labelLineName),
}
for (var i2 = 0; i2 < SPECIAL_STATES.length; i2++) {
var stateName = SPECIAL_STATES[i2]
statesModels[stateName] = itemModel.getModel([stateName, labelLineName])
}
return statesModels
}
function prepareLayoutList(input) {
var list2 = []
for (var i2 = 0; i2 < input.length; i2++) {
var rawItem = input[i2]
if (rawItem.defaultAttr.ignore) {
continue
}
var label = rawItem.label
var transform3 = label.getComputedTransform()
var localRect = label.getBoundingRect()
var isAxisAligned =
!transform3 || (transform3[1] < 1e-5 && transform3[2] < 1e-5)
var minMargin = label.style.margin || 0
var globalRect = localRect.clone()
globalRect.applyTransform(transform3)
globalRect.x -= minMargin / 2
globalRect.y -= minMargin / 2
globalRect.width += minMargin
globalRect.height += minMargin
var obb = isAxisAligned
? new OrientedBoundingRect$1(localRect, transform3)
: null
list2.push({
label,
labelLine: rawItem.labelLine,
rect: globalRect,
localRect,
obb,
priority: rawItem.priority,
defaultAttr: rawItem.defaultAttr,
layoutOption: rawItem.computedLayoutOption,
axisAligned: isAxisAligned,
transform: transform3,
})
}
return list2
}
function shiftLayout(list2, xyDim, sizeDim, minBound, maxBound, balanceShift) {
var len2 = list2.length
if (len2 < 2) {
return
}
list2.sort(function (a2, b2) {
return a2.rect[xyDim] - b2.rect[xyDim]
})
var lastPos = 0
var delta
var adjusted = false
var totalShifts = 0
for (var i2 = 0; i2 < len2; i2++) {
var item2 = list2[i2]
var rect = item2.rect
delta = rect[xyDim] - lastPos
if (delta < 0) {
rect[xyDim] -= delta
item2.label[xyDim] -= delta
adjusted = true
}
var shift = Math.max(-delta, 0)
totalShifts += shift
lastPos = rect[xyDim] + rect[sizeDim]
}
if (totalShifts > 0 && balanceShift) {
shiftList(-totalShifts / len2, 0, len2)
}
var first2 = list2[0]
var last2 = list2[len2 - 1]
var minGap
var maxGap
updateMinMaxGap()
minGap < 0 && squeezeGaps(-minGap, 0.8)
maxGap < 0 && squeezeGaps(maxGap, 0.8)
updateMinMaxGap()
takeBoundsGap(minGap, maxGap, 1)
takeBoundsGap(maxGap, minGap, -1)
updateMinMaxGap()
if (minGap < 0) {
squeezeWhenBailout(-minGap)
}
if (maxGap < 0) {
squeezeWhenBailout(maxGap)
}
function updateMinMaxGap() {
minGap = first2.rect[xyDim] - minBound
maxGap = maxBound - last2.rect[xyDim] - last2.rect[sizeDim]
}
function takeBoundsGap(gapThisBound, gapOtherBound, moveDir) {
if (gapThisBound < 0) {
var moveFromMaxGap = Math.min(gapOtherBound, -gapThisBound)
if (moveFromMaxGap > 0) {
shiftList(moveFromMaxGap * moveDir, 0, len2)
var remained = moveFromMaxGap + gapThisBound
if (remained < 0) {
squeezeGaps(-remained * moveDir, 1)
}
} else {
squeezeGaps(-gapThisBound * moveDir, 1)
}
}
}
function shiftList(delta2, start2, end2) {
if (delta2 !== 0) {
adjusted = true
}
for (var i3 = start2; i3 < end2; i3++) {
var item3 = list2[i3]
var rect2 = item3.rect
rect2[xyDim] += delta2
item3.label[xyDim] += delta2
}
}
function squeezeGaps(delta2, maxSqeezePercent) {
var gaps = []
var totalGaps = 0
for (var i3 = 1; i3 < len2; i3++) {
var prevItemRect = list2[i3 - 1].rect
var gap = Math.max(
list2[i3].rect[xyDim] - prevItemRect[xyDim] - prevItemRect[sizeDim],
0
)
gaps.push(gap)
totalGaps += gap
}
if (!totalGaps) {
return
}
var squeezePercent = Math.min(
Math.abs(delta2) / totalGaps,
maxSqeezePercent
)
if (delta2 > 0) {
for (var i3 = 0; i3 < len2 - 1; i3++) {
var movement = gaps[i3] * squeezePercent
shiftList(movement, 0, i3 + 1)
}
} else {
for (var i3 = len2 - 1; i3 > 0; i3--) {
var movement = gaps[i3 - 1] * squeezePercent
shiftList(-movement, i3, len2)
}
}
}
function squeezeWhenBailout(delta2) {
var dir3 = delta2 < 0 ? -1 : 1
delta2 = Math.abs(delta2)
var moveForEachLabel = Math.ceil(delta2 / (len2 - 1))
for (var i3 = 0; i3 < len2 - 1; i3++) {
if (dir3 > 0) {
shiftList(moveForEachLabel, 0, i3 + 1)
} else {
shiftList(-moveForEachLabel, len2 - i3 - 1, len2)
}
delta2 -= moveForEachLabel
if (delta2 <= 0) {
return
}
}
}
return adjusted
}
function shiftLayoutOnX(list2, leftBound, rightBound, balanceShift) {
return shiftLayout(list2, 'x', 'width', leftBound, rightBound, balanceShift)
}
function shiftLayoutOnY(list2, topBound, bottomBound, balanceShift) {
return shiftLayout(list2, 'y', 'height', topBound, bottomBound, balanceShift)
}
function hideOverlap(labelList) {
var displayedLabels = []
labelList.sort(function (a2, b2) {
return b2.priority - a2.priority
})
var globalRect = new BoundingRect$1(0, 0, 0, 0)
function hideEl(el2) {
if (!el2.ignore) {
var emphasisState = el2.ensureState('emphasis')
if (emphasisState.ignore == null) {
emphasisState.ignore = false
}
}
el2.ignore = true
}
for (var i2 = 0; i2 < labelList.length; i2++) {
var labelItem = labelList[i2]
var isAxisAligned = labelItem.axisAligned
var localRect = labelItem.localRect
var transform3 = labelItem.transform
var label = labelItem.label
var labelLine = labelItem.labelLine
globalRect.copy(labelItem.rect)
globalRect.width -= 0.1
globalRect.height -= 0.1
globalRect.x += 0.05
globalRect.y += 0.05
var obb = labelItem.obb
var overlapped = false
for (var j2 = 0; j2 < displayedLabels.length; j2++) {
var existsTextCfg = displayedLabels[j2]
if (!globalRect.intersect(existsTextCfg.rect)) {
continue
}
if (isAxisAligned && existsTextCfg.axisAligned) {
overlapped = true
break
}
if (!existsTextCfg.obb) {
existsTextCfg.obb = new OrientedBoundingRect$1(
existsTextCfg.localRect,
existsTextCfg.transform
)
}
if (!obb) {
obb = new OrientedBoundingRect$1(localRect, transform3)
}
if (obb.intersect(existsTextCfg.obb)) {
overlapped = true
break
}
}
if (overlapped) {
hideEl(label)
labelLine && hideEl(labelLine)
} else {
label.attr('ignore', labelItem.defaultAttr.ignore)
labelLine &&
labelLine.attr('ignore', labelItem.defaultAttr.labelGuideIgnore)
displayedLabels.push(labelItem)
}
}
}
function cloneArr(points2) {
if (points2) {
var newPoints = []
for (var i2 = 0; i2 < points2.length; i2++) {
newPoints.push(points2[i2].slice())
}
return newPoints
}
}
function prepareLayoutCallbackParams(labelItem, hostEl) {
var label = labelItem.label
var labelLine = hostEl && hostEl.getTextGuideLine()
return {
dataIndex: labelItem.dataIndex,
dataType: labelItem.dataType,
seriesIndex: labelItem.seriesModel.seriesIndex,
text: labelItem.label.style.text,
rect: labelItem.hostRect,
labelRect: labelItem.rect,
align: label.style.align,
verticalAlign: label.style.verticalAlign,
labelLinePoints: cloneArr(labelLine && labelLine.shape.points),
}
}
var LABEL_OPTION_TO_STYLE_KEYS = [
'align',
'verticalAlign',
'width',
'height',
'fontSize',
]
var dummyTransformable = new Transformable$1()
var labelLayoutInnerStore = makeInner()
var labelLineAnimationStore = makeInner()
function extendWithKeys(target2, source2, keys3) {
for (var i2 = 0; i2 < keys3.length; i2++) {
var key2 = keys3[i2]
if (source2[key2] != null) {
target2[key2] = source2[key2]
}
}
}
var LABEL_LAYOUT_PROPS = ['x', 'y', 'rotation']
var LabelManager = (function () {
function LabelManager2() {
this._labelList = []
this._chartViewList = []
}
LabelManager2.prototype.clearLabels = function () {
this._labelList = []
this._chartViewList = []
}
LabelManager2.prototype._addLabel = function (
dataIndex,
dataType2,
seriesModel,
label,
layoutOption
) {
var labelStyle = label.style
var hostEl = label.__hostTarget
var textConfig = hostEl.textConfig || {}
var labelTransform = label.getComputedTransform()
var labelRect = label.getBoundingRect().plain()
BoundingRect$1.applyTransform(labelRect, labelRect, labelTransform)
if (labelTransform) {
dummyTransformable.setLocalTransform(labelTransform)
} else {
dummyTransformable.x =
dummyTransformable.y =
dummyTransformable.rotation =
dummyTransformable.originX =
dummyTransformable.originY =
0
dummyTransformable.scaleX = dummyTransformable.scaleY = 1
}
dummyTransformable.rotation = normalizeRadian(dummyTransformable.rotation)
var host = label.__hostTarget
var hostRect
if (host) {
hostRect = host.getBoundingRect().plain()
var transform3 = host.getComputedTransform()
BoundingRect$1.applyTransform(hostRect, hostRect, transform3)
}
var labelGuide = hostRect && host.getTextGuideLine()
this._labelList.push({
label,
labelLine: labelGuide,
seriesModel,
dataIndex,
dataType: dataType2,
layoutOption,
computedLayoutOption: null,
rect: labelRect,
hostRect,
priority: hostRect ? hostRect.width * hostRect.height : 0,
defaultAttr: {
ignore: label.ignore,
labelGuideIgnore: labelGuide && labelGuide.ignore,
x: dummyTransformable.x,
y: dummyTransformable.y,
scaleX: dummyTransformable.scaleX,
scaleY: dummyTransformable.scaleY,
rotation: dummyTransformable.rotation,
style: {
x: labelStyle.x,
y: labelStyle.y,
align: labelStyle.align,
verticalAlign: labelStyle.verticalAlign,
width: labelStyle.width,
height: labelStyle.height,
fontSize: labelStyle.fontSize,
},
cursor: label.cursor,
attachedPos: textConfig.position,
attachedRot: textConfig.rotation,
},
})
}
LabelManager2.prototype.addLabelsOfSeries = function (chartView) {
var _this = this
this._chartViewList.push(chartView)
var seriesModel = chartView.__model
var layoutOption = seriesModel.get('labelLayout')
if (!(isFunction$4(layoutOption) || keys$4(layoutOption).length)) {
return
}
chartView.group.traverse(function (child) {
if (child.ignore) {
return true
}
var textEl = child.getTextContent()
var ecData = getECData(child)
if (textEl && !textEl.disableLabelLayout) {
_this._addLabel(
ecData.dataIndex,
ecData.dataType,
seriesModel,
textEl,
layoutOption
)
}
})
}
LabelManager2.prototype.updateLayoutConfig = function (api) {
var width = api.getWidth()
var height = api.getHeight()
function createDragHandler(el2, labelLineModel) {
return function () {
updateLabelLinePoints(el2, labelLineModel)
}
}
for (var i2 = 0; i2 < this._labelList.length; i2++) {
var labelItem = this._labelList[i2]
var label = labelItem.label
var hostEl = label.__hostTarget
var defaultLabelAttr = labelItem.defaultAttr
var layoutOption = void 0
if (isFunction$4(labelItem.layoutOption)) {
layoutOption = labelItem.layoutOption(
prepareLayoutCallbackParams(labelItem, hostEl)
)
} else {
layoutOption = labelItem.layoutOption
}
layoutOption = layoutOption || {}
labelItem.computedLayoutOption = layoutOption
var degreeToRadian = Math.PI / 180
if (hostEl) {
hostEl.setTextConfig({
local: false,
position:
layoutOption.x != null || layoutOption.y != null
? null
: defaultLabelAttr.attachedPos,
rotation:
layoutOption.rotate != null
? layoutOption.rotate * degreeToRadian
: defaultLabelAttr.attachedRot,
offset: [layoutOption.dx || 0, layoutOption.dy || 0],
})
}
var needsUpdateLabelLine = false
if (layoutOption.x != null) {
label.x = parsePercent(layoutOption.x, width)
label.setStyle('x', 0)
needsUpdateLabelLine = true
} else {
label.x = defaultLabelAttr.x
label.setStyle('x', defaultLabelAttr.style.x)
}
if (layoutOption.y != null) {
label.y = parsePercent(layoutOption.y, height)
label.setStyle('y', 0)
needsUpdateLabelLine = true
} else {
label.y = defaultLabelAttr.y
label.setStyle('y', defaultLabelAttr.style.y)
}
if (layoutOption.labelLinePoints) {
var guideLine = hostEl.getTextGuideLine()
if (guideLine) {
guideLine.setShape({
points: layoutOption.labelLinePoints,
})
needsUpdateLabelLine = false
}
}
var labelLayoutStore = labelLayoutInnerStore(label)
labelLayoutStore.needsUpdateLabelLine = needsUpdateLabelLine
label.rotation =
layoutOption.rotate != null
? layoutOption.rotate * degreeToRadian
: defaultLabelAttr.rotation
label.scaleX = defaultLabelAttr.scaleX
label.scaleY = defaultLabelAttr.scaleY
for (var k2 = 0; k2 < LABEL_OPTION_TO_STYLE_KEYS.length; k2++) {
var key2 = LABEL_OPTION_TO_STYLE_KEYS[k2]
label.setStyle(
key2,
layoutOption[key2] != null
? layoutOption[key2]
: defaultLabelAttr.style[key2]
)
}
if (layoutOption.draggable) {
label.draggable = true
label.cursor = 'move'
if (hostEl) {
var hostModel = labelItem.seriesModel
if (labelItem.dataIndex != null) {
var data2 = labelItem.seriesModel.getData(labelItem.dataType)
hostModel = data2.getItemModel(labelItem.dataIndex)
}
label.on(
'drag',
createDragHandler(hostEl, hostModel.getModel('labelLine'))
)
}
} else {
label.off('drag')
label.cursor = defaultLabelAttr.cursor
}
}
}
LabelManager2.prototype.layout = function (api) {
var width = api.getWidth()
var height = api.getHeight()
var labelList = prepareLayoutList(this._labelList)
var labelsNeedsAdjustOnX = filter(labelList, function (item2) {
return item2.layoutOption.moveOverlap === 'shiftX'
})
var labelsNeedsAdjustOnY = filter(labelList, function (item2) {
return item2.layoutOption.moveOverlap === 'shiftY'
})
shiftLayoutOnX(labelsNeedsAdjustOnX, 0, width)
shiftLayoutOnY(labelsNeedsAdjustOnY, 0, height)
var labelsNeedsHideOverlap = filter(labelList, function (item2) {
return item2.layoutOption.hideOverlap
})
hideOverlap(labelsNeedsHideOverlap)
}
LabelManager2.prototype.processLabelsOverall = function () {
var _this = this
each$f(this._chartViewList, function (chartView) {
var seriesModel = chartView.__model
var ignoreLabelLineUpdate = chartView.ignoreLabelLineUpdate
var animationEnabled = seriesModel.isAnimationEnabled()
chartView.group.traverse(function (child) {
if (child.ignore && !child.forceLabelAnimation) {
return true
}
var needsUpdateLabelLine = !ignoreLabelLineUpdate
var label = child.getTextContent()
if (!needsUpdateLabelLine && label) {
needsUpdateLabelLine =
labelLayoutInnerStore(label).needsUpdateLabelLine
}
if (needsUpdateLabelLine) {
_this._updateLabelLine(child, seriesModel)
}
if (animationEnabled) {
_this._animateLabels(child, seriesModel)
}
})
})
}
LabelManager2.prototype._updateLabelLine = function (el2, seriesModel) {
var textEl = el2.getTextContent()
var ecData = getECData(el2)
var dataIndex = ecData.dataIndex
if (textEl && dataIndex != null) {
var data2 = seriesModel.getData(ecData.dataType)
var itemModel = data2.getItemModel(dataIndex)
var defaultStyle2 = {}
var visualStyle = data2.getItemVisual(dataIndex, 'style')
if (visualStyle) {
var visualType = data2.getVisual('drawType')
defaultStyle2.stroke = visualStyle[visualType]
}
var labelLineModel = itemModel.getModel('labelLine')
setLabelLineStyle(el2, getLabelLineStatesModels(itemModel), defaultStyle2)
updateLabelLinePoints(el2, labelLineModel)
}
}
LabelManager2.prototype._animateLabels = function (el2, seriesModel) {
var textEl = el2.getTextContent()
var guideLine = el2.getTextGuideLine()
if (
textEl &&
(el2.forceLabelAnimation ||
(!textEl.ignore &&
!textEl.invisible &&
!el2.disableLabelAnimation &&
!isElementRemoved(el2)))
) {
var layoutStore = labelLayoutInnerStore(textEl)
var oldLayout = layoutStore.oldLayout
var ecData = getECData(el2)
var dataIndex = ecData.dataIndex
var newProps = {
x: textEl.x,
y: textEl.y,
rotation: textEl.rotation,
}
var data2 = seriesModel.getData(ecData.dataType)
if (!oldLayout) {
textEl.attr(newProps)
if (!labelInner(textEl).valueAnimation) {
var oldOpacity = retrieve2(textEl.style.opacity, 1)
textEl.style.opacity = 0
initProps(
textEl,
{
style: {
opacity: oldOpacity,
},
},
seriesModel,
dataIndex
)
}
} else {
textEl.attr(oldLayout)
var prevStates = el2.prevStates
if (prevStates) {
if (indexOf(prevStates, 'select') >= 0) {
textEl.attr(layoutStore.oldLayoutSelect)
}
if (indexOf(prevStates, 'emphasis') >= 0) {
textEl.attr(layoutStore.oldLayoutEmphasis)
}
}
updateProps$1(textEl, newProps, seriesModel, dataIndex)
}
layoutStore.oldLayout = newProps
if (textEl.states.select) {
var layoutSelect = (layoutStore.oldLayoutSelect = {})
extendWithKeys(layoutSelect, newProps, LABEL_LAYOUT_PROPS)
extendWithKeys(layoutSelect, textEl.states.select, LABEL_LAYOUT_PROPS)
}
if (textEl.states.emphasis) {
var layoutEmphasis = (layoutStore.oldLayoutEmphasis = {})
extendWithKeys(layoutEmphasis, newProps, LABEL_LAYOUT_PROPS)
extendWithKeys(
layoutEmphasis,
textEl.states.emphasis,
LABEL_LAYOUT_PROPS
)
}
animateLabelValue(textEl, dataIndex, data2, seriesModel, seriesModel)
}
if (guideLine && !guideLine.ignore && !guideLine.invisible) {
var layoutStore = labelLineAnimationStore(guideLine)
var oldLayout = layoutStore.oldLayout
var newLayout = {
points: guideLine.shape.points,
}
if (!oldLayout) {
guideLine.setShape(newLayout)
guideLine.style.strokePercent = 0
initProps(
guideLine,
{
style: {
strokePercent: 1,
},
},
seriesModel
)
} else {
guideLine.attr({
shape: oldLayout,
})
updateProps$1(
guideLine,
{
shape: newLayout,
},
seriesModel
)
}
layoutStore.oldLayout = newLayout
}
}
return LabelManager2
})()
var LabelManager$1 = LabelManager
var getLabelManager = makeInner()
function installLabelLayout(registers) {
registers.registerUpdateLifecycle(
'series:beforeupdate',
function (ecModel, api, params2) {
var labelManager = getLabelManager(api).labelManager
if (!labelManager) {
labelManager = getLabelManager(api).labelManager = new LabelManager$1()
}
labelManager.clearLabels()
}
)
registers.registerUpdateLifecycle(
'series:layoutlabels',
function (ecModel, api, params2) {
var labelManager = getLabelManager(api).labelManager
params2.updatedSeries.forEach(function (series) {
labelManager.addLabelsOfSeries(api.getViewOfSeriesModel(series))
})
labelManager.updateLayoutConfig(api)
labelManager.layout(api)
labelManager.processLabelsOverall()
}
)
}
var LineSeriesModel = (function (_super) {
__extends$2(LineSeriesModel2, _super)
function LineSeriesModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = LineSeriesModel2.type
_this.hasSymbolVisual = true
return _this
}
LineSeriesModel2.prototype.getInitialData = function (option2) {
return createSeriesData(null, this, {
useEncodeDefaulter: true,
})
}
LineSeriesModel2.prototype.getLegendIcon = function (opt) {
var group = new Group$5()
var line = createSymbol$1(
'line',
0,
opt.itemHeight / 2,
opt.itemWidth,
0,
opt.lineStyle.stroke,
false
)
group.add(line)
line.setStyle(opt.lineStyle)
var visualType = this.getData().getVisual('symbol')
var visualRotate = this.getData().getVisual('symbolRotate')
var symbolType = visualType === 'none' ? 'circle' : visualType
var size = opt.itemHeight * 0.8
var symbol = createSymbol$1(
symbolType,
(opt.itemWidth - size) / 2,
(opt.itemHeight - size) / 2,
size,
size,
opt.itemStyle.fill
)
group.add(symbol)
symbol.setStyle(opt.itemStyle)
var symbolRotate =
opt.iconRotate === 'inherit' ? visualRotate : opt.iconRotate || 0
symbol.rotation = (symbolRotate * Math.PI) / 180
symbol.setOrigin([opt.itemWidth / 2, opt.itemHeight / 2])
if (symbolType.indexOf('empty') > -1) {
symbol.style.stroke = symbol.style.fill
symbol.style.fill = '#fff'
symbol.style.lineWidth = 2
}
return group
}
LineSeriesModel2.type = 'series.line'
LineSeriesModel2.dependencies = ['grid', 'polar']
LineSeriesModel2.defaultOption = {
z: 3,
coordinateSystem: 'cartesian2d',
legendHoverLink: true,
clip: true,
label: {
position: 'top',
},
endLabel: {
show: false,
valueAnimation: true,
distance: 8,
},
lineStyle: {
width: 2,
type: 'solid',
},
emphasis: {
scale: true,
},
step: false,
smooth: false,
smoothMonotone: null,
symbol: 'emptyCircle',
symbolSize: 4,
symbolRotate: null,
showSymbol: true,
showAllSymbol: 'auto',
connectNulls: false,
sampling: 'none',
animationEasing: 'linear',
progressive: 0,
hoverLayerThreshold: Infinity,
universalTransition: {
divideShape: 'clone',
},
triggerLineEvent: false,
}
return LineSeriesModel2
})(SeriesModel$1)
var LineSeries = LineSeriesModel
function getDefaultLabel(data2, dataIndex) {
var labelDims = data2.mapDimensionsAll('defaultedLabel')
var len2 = labelDims.length
if (len2 === 1) {
var rawVal = retrieveRawValue(data2, dataIndex, labelDims[0])
return rawVal != null ? rawVal + '' : null
} else if (len2) {
var vals = []
for (var i2 = 0; i2 < labelDims.length; i2++) {
vals.push(retrieveRawValue(data2, dataIndex, labelDims[i2]))
}
return vals.join(' ')
}
}
function getDefaultInterpolatedLabel(data2, interpolatedValue) {
var labelDims = data2.mapDimensionsAll('defaultedLabel')
if (!isArray$6(interpolatedValue)) {
return interpolatedValue + ''
}
var vals = []
for (var i2 = 0; i2 < labelDims.length; i2++) {
var dimIndex = data2.getDimensionIndex(labelDims[i2])
if (dimIndex >= 0) {
vals.push(interpolatedValue[dimIndex])
}
}
return vals.join(' ')
}
var Symbol$5 = (function (_super) {
__extends$2(Symbol2, _super)
function Symbol2(data2, idx, seriesScope, opts) {
var _this = _super.call(this) || this
_this.updateData(data2, idx, seriesScope, opts)
return _this
}
Symbol2.prototype._createSymbol = function (
symbolType,
data2,
idx,
symbolSize,
keepAspect
) {
this.removeAll()
var symbolPath = createSymbol$1(symbolType, -1, -1, 2, 2, null, keepAspect)
symbolPath.attr({
z2: 100,
culling: true,
scaleX: symbolSize[0] / 2,
scaleY: symbolSize[1] / 2,
})
symbolPath.drift = driftSymbol
this._symbolType = symbolType
this.add(symbolPath)
}
Symbol2.prototype.stopSymbolAnimation = function (toLastFrame) {
this.childAt(0).stopAnimation(null, toLastFrame)
}
Symbol2.prototype.getSymbolType = function () {
return this._symbolType
}
Symbol2.prototype.getSymbolPath = function () {
return this.childAt(0)
}
Symbol2.prototype.highlight = function () {
enterEmphasis(this.childAt(0))
}
Symbol2.prototype.downplay = function () {
leaveEmphasis(this.childAt(0))
}
Symbol2.prototype.setZ = function (zlevel, z2) {
var symbolPath = this.childAt(0)
symbolPath.zlevel = zlevel
symbolPath.z = z2
}
Symbol2.prototype.setDraggable = function (draggable2, hasCursorOption) {
var symbolPath = this.childAt(0)
symbolPath.draggable = draggable2
symbolPath.cursor =
!hasCursorOption && draggable2 ? 'move' : symbolPath.cursor
}
Symbol2.prototype.updateData = function (data2, idx, seriesScope, opts) {
this.silent = false
var symbolType = data2.getItemVisual(idx, 'symbol') || 'circle'
var seriesModel = data2.hostModel
var symbolSize = Symbol2.getSymbolSize(data2, idx)
var isInit = symbolType !== this._symbolType
var disableAnimation = opts && opts.disableAnimation
if (isInit) {
var keepAspect = data2.getItemVisual(idx, 'symbolKeepAspect')
this._createSymbol(symbolType, data2, idx, symbolSize, keepAspect)
} else {
var symbolPath = this.childAt(0)
symbolPath.silent = false
var target2 = {
scaleX: symbolSize[0] / 2,
scaleY: symbolSize[1] / 2,
}
disableAnimation
? symbolPath.attr(target2)
: updateProps$1(symbolPath, target2, seriesModel, idx)
saveOldStyle(symbolPath)
}
this._updateCommon(data2, idx, symbolSize, seriesScope, opts)
if (isInit) {
var symbolPath = this.childAt(0)
if (!disableAnimation) {
var target2 = {
scaleX: this._sizeX,
scaleY: this._sizeY,
style: {
opacity: symbolPath.style.opacity,
},
}
symbolPath.scaleX = symbolPath.scaleY = 0
symbolPath.style.opacity = 0
initProps(symbolPath, target2, seriesModel, idx)
}
}
if (disableAnimation) {
this.childAt(0).stopAnimation('leave')
}
}
Symbol2.prototype._updateCommon = function (
data2,
idx,
symbolSize,
seriesScope,
opts
) {
var symbolPath = this.childAt(0)
var seriesModel = data2.hostModel
var emphasisItemStyle
var blurItemStyle
var selectItemStyle
var focus2
var blurScope
var emphasisDisabled
var labelStatesModels
var hoverScale
var cursorStyle
if (seriesScope) {
emphasisItemStyle = seriesScope.emphasisItemStyle
blurItemStyle = seriesScope.blurItemStyle
selectItemStyle = seriesScope.selectItemStyle
focus2 = seriesScope.focus
blurScope = seriesScope.blurScope
labelStatesModels = seriesScope.labelStatesModels
hoverScale = seriesScope.hoverScale
cursorStyle = seriesScope.cursorStyle
emphasisDisabled = seriesScope.emphasisDisabled
}
if (!seriesScope || data2.hasItemOption) {
var itemModel =
seriesScope && seriesScope.itemModel
? seriesScope.itemModel
: data2.getItemModel(idx)
var emphasisModel = itemModel.getModel('emphasis')
emphasisItemStyle = emphasisModel.getModel('itemStyle').getItemStyle()
selectItemStyle = itemModel
.getModel(['select', 'itemStyle'])
.getItemStyle()
blurItemStyle = itemModel.getModel(['blur', 'itemStyle']).getItemStyle()
focus2 = emphasisModel.get('focus')
blurScope = emphasisModel.get('blurScope')
emphasisDisabled = emphasisModel.get('disabled')
labelStatesModels = getLabelStatesModels(itemModel)
hoverScale = emphasisModel.getShallow('scale')
cursorStyle = itemModel.getShallow('cursor')
}
var symbolRotate = data2.getItemVisual(idx, 'symbolRotate')
symbolPath.attr('rotation', ((symbolRotate || 0) * Math.PI) / 180 || 0)
var symbolOffset = normalizeSymbolOffset(
data2.getItemVisual(idx, 'symbolOffset'),
symbolSize
)
if (symbolOffset) {
symbolPath.x = symbolOffset[0]
symbolPath.y = symbolOffset[1]
}
cursorStyle && symbolPath.attr('cursor', cursorStyle)
var symbolStyle = data2.getItemVisual(idx, 'style')
var visualColor = symbolStyle.fill
if (symbolPath instanceof ZRImage$1) {
var pathStyle = symbolPath.style
symbolPath.useStyle(
extend(
{
image: pathStyle.image,
x: pathStyle.x,
y: pathStyle.y,
width: pathStyle.width,
height: pathStyle.height,
},
symbolStyle
)
)
} else {
if (symbolPath.__isEmptyBrush) {
symbolPath.useStyle(extend({}, symbolStyle))
} else {
symbolPath.useStyle(symbolStyle)
}
symbolPath.style.decal = null
symbolPath.setColor(visualColor, opts && opts.symbolInnerColor)
symbolPath.style.strokeNoScale = true
}
var liftZ = data2.getItemVisual(idx, 'liftZ')
var z2Origin = this._z2
if (liftZ != null) {
if (z2Origin == null) {
this._z2 = symbolPath.z2
symbolPath.z2 += liftZ
}
} else if (z2Origin != null) {
symbolPath.z2 = z2Origin
this._z2 = null
}
var useNameLabel = opts && opts.useNameLabel
setLabelStyle(symbolPath, labelStatesModels, {
labelFetcher: seriesModel,
labelDataIndex: idx,
defaultText: getLabelDefaultText,
inheritColor: visualColor,
defaultOpacity: symbolStyle.opacity,
})
function getLabelDefaultText(idx2) {
return useNameLabel ? data2.getName(idx2) : getDefaultLabel(data2, idx2)
}
this._sizeX = symbolSize[0] / 2
this._sizeY = symbolSize[1] / 2
var emphasisState = symbolPath.ensureState('emphasis')
emphasisState.style = emphasisItemStyle
symbolPath.ensureState('select').style = selectItemStyle
symbolPath.ensureState('blur').style = blurItemStyle
var scaleRatio =
hoverScale == null || hoverScale === true
? Math.max(1.1, 3 / this._sizeY)
: isFinite(hoverScale) && hoverScale > 0
? +hoverScale
: 1
emphasisState.scaleX = this._sizeX * scaleRatio
emphasisState.scaleY = this._sizeY * scaleRatio
this.setSymbolScale(1)
toggleHoverEmphasis(this, focus2, blurScope, emphasisDisabled)
}
Symbol2.prototype.setSymbolScale = function (scale2) {
this.scaleX = this.scaleY = scale2
}
Symbol2.prototype.fadeOut = function (cb, seriesModel, opt) {
var symbolPath = this.childAt(0)
var dataIndex = getECData(this).dataIndex
var animationOpt = opt && opt.animation
this.silent = symbolPath.silent = true
if (opt && opt.fadeLabel) {
var textContent = symbolPath.getTextContent()
if (textContent) {
removeElement(
textContent,
{
style: {
opacity: 0,
},
},
seriesModel,
{
dataIndex,
removeOpt: animationOpt,
cb: function () {
symbolPath.removeTextContent()
},
}
)
}
} else {
symbolPath.removeTextContent()
}
removeElement(
symbolPath,
{
style: {
opacity: 0,
},
scaleX: 0,
scaleY: 0,
},
seriesModel,
{
dataIndex,
cb,
removeOpt: animationOpt,
}
)
}
Symbol2.getSymbolSize = function (data2, idx) {
return normalizeSymbolSize(data2.getItemVisual(idx, 'symbolSize'))
}
return Symbol2
})(Group$5)
function driftSymbol(dx, dy) {
this.parent.drift(dx, dy)
}
var SymbolClz = Symbol$5
function symbolNeedsDraw$1(data2, point, idx, opt) {
return (
point &&
!isNaN(point[0]) &&
!isNaN(point[1]) &&
!(opt.isIgnore && opt.isIgnore(idx)) &&
!(opt.clipShape && !opt.clipShape.contain(point[0], point[1])) &&
data2.getItemVisual(idx, 'symbol') !== 'none'
)
}
function normalizeUpdateOpt(opt) {
if (opt != null && !isObject$b(opt)) {
opt = {
isIgnore: opt,
}
}
return opt || {}
}
function makeSeriesScope$2(data2) {
var seriesModel = data2.hostModel
var emphasisModel = seriesModel.getModel('emphasis')
return {
emphasisItemStyle: emphasisModel.getModel('itemStyle').getItemStyle(),
blurItemStyle: seriesModel.getModel(['blur', 'itemStyle']).getItemStyle(),
selectItemStyle: seriesModel
.getModel(['select', 'itemStyle'])
.getItemStyle(),
focus: emphasisModel.get('focus'),
blurScope: emphasisModel.get('blurScope'),
emphasisDisabled: emphasisModel.get('disabled'),
hoverScale: emphasisModel.get('scale'),
labelStatesModels: getLabelStatesModels(seriesModel),
cursorStyle: seriesModel.get('cursor'),
}
}
var SymbolDraw = (function () {
function SymbolDraw2(SymbolCtor) {
this.group = new Group$5()
this._SymbolCtor = SymbolCtor || SymbolClz
}
SymbolDraw2.prototype.updateData = function (data2, opt) {
this._progressiveEls = null
opt = normalizeUpdateOpt(opt)
var group = this.group
var seriesModel = data2.hostModel
var oldData = this._data
var SymbolCtor = this._SymbolCtor
var disableAnimation = opt.disableAnimation
var seriesScope = makeSeriesScope$2(data2)
var symbolUpdateOpt = {
disableAnimation,
}
var getSymbolPoint =
opt.getSymbolPoint ||
function (idx) {
return data2.getItemLayout(idx)
}
if (!oldData) {
group.removeAll()
}
data2
.diff(oldData)
.add(function (newIdx) {
var point = getSymbolPoint(newIdx)
if (symbolNeedsDraw$1(data2, point, newIdx, opt)) {
var symbolEl = new SymbolCtor(
data2,
newIdx,
seriesScope,
symbolUpdateOpt
)
symbolEl.setPosition(point)
data2.setItemGraphicEl(newIdx, symbolEl)
group.add(symbolEl)
}
})
.update(function (newIdx, oldIdx) {
var symbolEl = oldData.getItemGraphicEl(oldIdx)
var point = getSymbolPoint(newIdx)
if (!symbolNeedsDraw$1(data2, point, newIdx, opt)) {
group.remove(symbolEl)
return
}
var newSymbolType = data2.getItemVisual(newIdx, 'symbol') || 'circle'
var oldSymbolType =
symbolEl && symbolEl.getSymbolType && symbolEl.getSymbolType()
if (!symbolEl || (oldSymbolType && oldSymbolType !== newSymbolType)) {
group.remove(symbolEl)
symbolEl = new SymbolCtor(data2, newIdx, seriesScope, symbolUpdateOpt)
symbolEl.setPosition(point)
} else {
symbolEl.updateData(data2, newIdx, seriesScope, symbolUpdateOpt)
var target2 = {
x: point[0],
y: point[1],
}
disableAnimation
? symbolEl.attr(target2)
: updateProps$1(symbolEl, target2, seriesModel)
}
group.add(symbolEl)
data2.setItemGraphicEl(newIdx, symbolEl)
})
.remove(function (oldIdx) {
var el2 = oldData.getItemGraphicEl(oldIdx)
el2 &&
el2.fadeOut(function () {
group.remove(el2)
}, seriesModel)
})
.execute()
this._getSymbolPoint = getSymbolPoint
this._data = data2
}
SymbolDraw2.prototype.updateLayout = function () {
var _this = this
var data2 = this._data
if (data2) {
data2.eachItemGraphicEl(function (el2, idx) {
var point = _this._getSymbolPoint(idx)
el2.setPosition(point)
el2.markRedraw()
})
}
}
SymbolDraw2.prototype.incrementalPrepareUpdate = function (data2) {
this._seriesScope = makeSeriesScope$2(data2)
this._data = null
this.group.removeAll()
}
SymbolDraw2.prototype.incrementalUpdate = function (taskParams, data2, opt) {
this._progressiveEls = []
opt = normalizeUpdateOpt(opt)
function updateIncrementalAndHover(el3) {
if (!el3.isGroup) {
el3.incremental = true
el3.ensureState('emphasis').hoverLayer = true
}
}
for (var idx = taskParams.start; idx < taskParams.end; idx++) {
var point = data2.getItemLayout(idx)
if (symbolNeedsDraw$1(data2, point, idx, opt)) {
var el2 = new this._SymbolCtor(data2, idx, this._seriesScope)
el2.traverse(updateIncrementalAndHover)
el2.setPosition(point)
this.group.add(el2)
data2.setItemGraphicEl(idx, el2)
this._progressiveEls.push(el2)
}
}
}
SymbolDraw2.prototype.eachRendered = function (cb) {
traverseElements(this._progressiveEls || this.group, cb)
}
SymbolDraw2.prototype.remove = function (enableAnimation) {
var group = this.group
var data2 = this._data
if (data2 && enableAnimation) {
data2.eachItemGraphicEl(function (el2) {
el2.fadeOut(function () {
group.remove(el2)
}, data2.hostModel)
})
} else {
group.removeAll()
}
}
return SymbolDraw2
})()
var SymbolDraw$1 = SymbolDraw
function prepareDataCoordInfo(coordSys, data2, valueOrigin) {
var baseAxis = coordSys.getBaseAxis()
var valueAxis2 = coordSys.getOtherAxis(baseAxis)
var valueStart = getValueStart(valueAxis2, valueOrigin)
var baseAxisDim = baseAxis.dim
var valueAxisDim = valueAxis2.dim
var valueDim = data2.mapDimension(valueAxisDim)
var baseDim = data2.mapDimension(baseAxisDim)
var baseDataOffset = valueAxisDim === 'x' || valueAxisDim === 'radius' ? 1 : 0
var dims = map$1(coordSys.dimensions, function (coordDim) {
return data2.mapDimension(coordDim)
})
var stacked = false
var stackResultDim = data2.getCalculationInfo('stackResultDimension')
if (isDimensionStacked(data2, dims[0])) {
stacked = true
dims[0] = stackResultDim
}
if (isDimensionStacked(data2, dims[1])) {
stacked = true
dims[1] = stackResultDim
}
return {
dataDimsForPoint: dims,
valueStart,
valueAxisDim,
baseAxisDim,
stacked: !!stacked,
valueDim,
baseDim,
baseDataOffset,
stackedOverDimension: data2.getCalculationInfo('stackedOverDimension'),
}
}
function getValueStart(valueAxis2, valueOrigin) {
var valueStart = 0
var extent3 = valueAxis2.scale.getExtent()
if (valueOrigin === 'start') {
valueStart = extent3[0]
} else if (valueOrigin === 'end') {
valueStart = extent3[1]
} else if (isNumber$2(valueOrigin) && !isNaN(valueOrigin)) {
valueStart = valueOrigin
} else {
if (extent3[0] > 0) {
valueStart = extent3[0]
} else if (extent3[1] < 0) {
valueStart = extent3[1]
}
}
return valueStart
}
function getStackedOnPoint(dataCoordInfo, coordSys, data2, idx) {
var value2 = NaN
if (dataCoordInfo.stacked) {
value2 = data2.get(data2.getCalculationInfo('stackedOverDimension'), idx)
}
if (isNaN(value2)) {
value2 = dataCoordInfo.valueStart
}
var baseDataOffset = dataCoordInfo.baseDataOffset
var stackedData = []
stackedData[baseDataOffset] = data2.get(dataCoordInfo.baseDim, idx)
stackedData[1 - baseDataOffset] = value2
return coordSys.dataToPoint(stackedData)
}
function diffData(oldData, newData) {
var diffResult = []
newData
.diff(oldData)
.add(function (idx) {
diffResult.push({
cmd: '+',
idx,
})
})
.update(function (newIdx, oldIdx) {
diffResult.push({
cmd: '=',
idx: oldIdx,
idx1: newIdx,
})
})
.remove(function (idx) {
diffResult.push({
cmd: '-',
idx,
})
})
.execute()
return diffResult
}
function lineAnimationDiff(
oldData,
newData,
oldStackedOnPoints,
newStackedOnPoints,
oldCoordSys,
newCoordSys,
oldValueOrigin,
newValueOrigin
) {
var diff = diffData(oldData, newData)
var currPoints = []
var nextPoints = []
var currStackedPoints = []
var nextStackedPoints = []
var status = []
var sortedIndices = []
var rawIndices = []
var newDataOldCoordInfo = prepareDataCoordInfo(
oldCoordSys,
newData,
oldValueOrigin
)
var oldPoints = oldData.getLayout('points') || []
var newPoints = newData.getLayout('points') || []
for (var i2 = 0; i2 < diff.length; i2++) {
var diffItem = diff[i2]
var pointAdded = true
var oldIdx2 = void 0
var newIdx2 = void 0
switch (diffItem.cmd) {
case '=':
oldIdx2 = diffItem.idx * 2
newIdx2 = diffItem.idx1 * 2
var currentX = oldPoints[oldIdx2]
var currentY = oldPoints[oldIdx2 + 1]
var nextX = newPoints[newIdx2]
var nextY = newPoints[newIdx2 + 1]
if (isNaN(currentX) || isNaN(currentY)) {
currentX = nextX
currentY = nextY
}
currPoints.push(currentX, currentY)
nextPoints.push(nextX, nextY)
currStackedPoints.push(
oldStackedOnPoints[oldIdx2],
oldStackedOnPoints[oldIdx2 + 1]
)
nextStackedPoints.push(
newStackedOnPoints[newIdx2],
newStackedOnPoints[newIdx2 + 1]
)
rawIndices.push(newData.getRawIndex(diffItem.idx1))
break
case '+':
var newIdx = diffItem.idx
var newDataDimsForPoint = newDataOldCoordInfo.dataDimsForPoint
var oldPt = oldCoordSys.dataToPoint([
newData.get(newDataDimsForPoint[0], newIdx),
newData.get(newDataDimsForPoint[1], newIdx),
])
newIdx2 = newIdx * 2
currPoints.push(oldPt[0], oldPt[1])
nextPoints.push(newPoints[newIdx2], newPoints[newIdx2 + 1])
var stackedOnPoint = getStackedOnPoint(
newDataOldCoordInfo,
oldCoordSys,
newData,
newIdx
)
currStackedPoints.push(stackedOnPoint[0], stackedOnPoint[1])
nextStackedPoints.push(
newStackedOnPoints[newIdx2],
newStackedOnPoints[newIdx2 + 1]
)
rawIndices.push(newData.getRawIndex(newIdx))
break
case '-':
pointAdded = false
}
if (pointAdded) {
status.push(diffItem)
sortedIndices.push(sortedIndices.length)
}
}
sortedIndices.sort(function (a2, b2) {
return rawIndices[a2] - rawIndices[b2]
})
var len2 = currPoints.length
var sortedCurrPoints = createFloat32Array(len2)
var sortedNextPoints = createFloat32Array(len2)
var sortedCurrStackedPoints = createFloat32Array(len2)
var sortedNextStackedPoints = createFloat32Array(len2)
var sortedStatus = []
for (var i2 = 0; i2 < sortedIndices.length; i2++) {
var idx = sortedIndices[i2]
var i22 = i2 * 2
var idx2 = idx * 2
sortedCurrPoints[i22] = currPoints[idx2]
sortedCurrPoints[i22 + 1] = currPoints[idx2 + 1]
sortedNextPoints[i22] = nextPoints[idx2]
sortedNextPoints[i22 + 1] = nextPoints[idx2 + 1]
sortedCurrStackedPoints[i22] = currStackedPoints[idx2]
sortedCurrStackedPoints[i22 + 1] = currStackedPoints[idx2 + 1]
sortedNextStackedPoints[i22] = nextStackedPoints[idx2]
sortedNextStackedPoints[i22 + 1] = nextStackedPoints[idx2 + 1]
sortedStatus[i2] = status[idx]
}
return {
current: sortedCurrPoints,
next: sortedNextPoints,
stackedOnCurrent: sortedCurrStackedPoints,
stackedOnNext: sortedNextStackedPoints,
status: sortedStatus,
}
}
var mathMin$5 = Math.min
var mathMax$5 = Math.max
function isPointNull$1(x2, y2) {
return isNaN(x2) || isNaN(y2)
}
function drawSegment(
ctx,
points2,
start2,
segLen,
allLen,
dir3,
smooth,
smoothMonotone,
connectNulls
) {
var prevX
var prevY
var cpx0
var cpy0
var cpx1
var cpy1
var idx = start2
var k2 = 0
for (; k2 < segLen; k2++) {
var x2 = points2[idx * 2]
var y2 = points2[idx * 2 + 1]
if (idx >= allLen || idx < 0) {
break
}
if (isPointNull$1(x2, y2)) {
if (connectNulls) {
idx += dir3
continue
}
break
}
if (idx === start2) {
ctx[dir3 > 0 ? 'moveTo' : 'lineTo'](x2, y2)
cpx0 = x2
cpy0 = y2
} else {
var dx = x2 - prevX
var dy = y2 - prevY
if (dx * dx + dy * dy < 0.5) {
idx += dir3
continue
}
if (smooth > 0) {
var nextIdx = idx + dir3
var nextX = points2[nextIdx * 2]
var nextY = points2[nextIdx * 2 + 1]
while (nextX === x2 && nextY === y2 && k2 < segLen) {
k2++
nextIdx += dir3
idx += dir3
nextX = points2[nextIdx * 2]
nextY = points2[nextIdx * 2 + 1]
x2 = points2[idx * 2]
y2 = points2[idx * 2 + 1]
dx = x2 - prevX
dy = y2 - prevY
}
var tmpK = k2 + 1
if (connectNulls) {
while (isPointNull$1(nextX, nextY) && tmpK < segLen) {
tmpK++
nextIdx += dir3
nextX = points2[nextIdx * 2]
nextY = points2[nextIdx * 2 + 1]
}
}
var ratioNextSeg = 0.5
var vx = 0
var vy = 0
var nextCpx0 = void 0
var nextCpy0 = void 0
if (tmpK >= segLen || isPointNull$1(nextX, nextY)) {
cpx1 = x2
cpy1 = y2
} else {
vx = nextX - prevX
vy = nextY - prevY
var dx0 = x2 - prevX
var dx1 = nextX - x2
var dy0 = y2 - prevY
var dy1 = nextY - y2
var lenPrevSeg = void 0
var lenNextSeg = void 0
if (smoothMonotone === 'x') {
lenPrevSeg = Math.abs(dx0)
lenNextSeg = Math.abs(dx1)
var dir_1 = vx > 0 ? 1 : -1
cpx1 = x2 - dir_1 * lenPrevSeg * smooth
cpy1 = y2
nextCpx0 = x2 + dir_1 * lenNextSeg * smooth
nextCpy0 = y2
} else if (smoothMonotone === 'y') {
lenPrevSeg = Math.abs(dy0)
lenNextSeg = Math.abs(dy1)
var dir_2 = vy > 0 ? 1 : -1
cpx1 = x2
cpy1 = y2 - dir_2 * lenPrevSeg * smooth
nextCpx0 = x2
nextCpy0 = y2 + dir_2 * lenNextSeg * smooth
} else {
lenPrevSeg = Math.sqrt(dx0 * dx0 + dy0 * dy0)
lenNextSeg = Math.sqrt(dx1 * dx1 + dy1 * dy1)
ratioNextSeg = lenNextSeg / (lenNextSeg + lenPrevSeg)
cpx1 = x2 - vx * smooth * (1 - ratioNextSeg)
cpy1 = y2 - vy * smooth * (1 - ratioNextSeg)
nextCpx0 = x2 + vx * smooth * ratioNextSeg
nextCpy0 = y2 + vy * smooth * ratioNextSeg
nextCpx0 = mathMin$5(nextCpx0, mathMax$5(nextX, x2))
nextCpy0 = mathMin$5(nextCpy0, mathMax$5(nextY, y2))
nextCpx0 = mathMax$5(nextCpx0, mathMin$5(nextX, x2))
nextCpy0 = mathMax$5(nextCpy0, mathMin$5(nextY, y2))
vx = nextCpx0 - x2
vy = nextCpy0 - y2
cpx1 = x2 - (vx * lenPrevSeg) / lenNextSeg
cpy1 = y2 - (vy * lenPrevSeg) / lenNextSeg
cpx1 = mathMin$5(cpx1, mathMax$5(prevX, x2))
cpy1 = mathMin$5(cpy1, mathMax$5(prevY, y2))
cpx1 = mathMax$5(cpx1, mathMin$5(prevX, x2))
cpy1 = mathMax$5(cpy1, mathMin$5(prevY, y2))
vx = x2 - cpx1
vy = y2 - cpy1
nextCpx0 = x2 + (vx * lenNextSeg) / lenPrevSeg
nextCpy0 = y2 + (vy * lenNextSeg) / lenPrevSeg
}
}
ctx.bezierCurveTo(cpx0, cpy0, cpx1, cpy1, x2, y2)
cpx0 = nextCpx0
cpy0 = nextCpy0
} else {
ctx.lineTo(x2, y2)
}
}
prevX = x2
prevY = y2
idx += dir3
}
return k2
}
var ECPolylineShape = (function () {
function ECPolylineShape2() {
this.smooth = 0
this.smoothConstraint = true
}
return ECPolylineShape2
})()
var ECPolyline = (function (_super) {
__extends$2(ECPolyline2, _super)
function ECPolyline2(opts) {
var _this = _super.call(this, opts) || this
_this.type = 'ec-polyline'
return _this
}
ECPolyline2.prototype.getDefaultStyle = function () {
return {
stroke: '#000',
fill: null,
}
}
ECPolyline2.prototype.getDefaultShape = function () {
return new ECPolylineShape()
}
ECPolyline2.prototype.buildPath = function (ctx, shape) {
var points2 = shape.points
var i2 = 0
var len2 = points2.length / 2
if (shape.connectNulls) {
for (; len2 > 0; len2--) {
if (!isPointNull$1(points2[len2 * 2 - 2], points2[len2 * 2 - 1])) {
break
}
}
for (; i2 < len2; i2++) {
if (!isPointNull$1(points2[i2 * 2], points2[i2 * 2 + 1])) {
break
}
}
}
while (i2 < len2) {
i2 +=
drawSegment(
ctx,
points2,
i2,
len2,
len2,
1,
shape.smooth,
shape.smoothMonotone,
shape.connectNulls
) + 1
}
}
ECPolyline2.prototype.getPointOn = function (xOrY, dim) {
if (!this.path) {
this.createPathProxy()
this.buildPath(this.path, this.shape)
}
var path = this.path
var data2 = path.data
var CMD2 = PathProxy$1.CMD
var x0
var y0
var isDimX = dim === 'x'
var roots2 = []
for (var i2 = 0; i2 < data2.length; ) {
var cmd = data2[i2++]
var x2 = void 0
var y2 = void 0
var x22 = void 0
var y22 = void 0
var x3 = void 0
var y3 = void 0
var t3 = void 0
switch (cmd) {
case CMD2.M:
x0 = data2[i2++]
y0 = data2[i2++]
break
case CMD2.L:
x2 = data2[i2++]
y2 = data2[i2++]
t3 = isDimX ? (xOrY - x0) / (x2 - x0) : (xOrY - y0) / (y2 - y0)
if (t3 <= 1 && t3 >= 0) {
var val2 = isDimX ? (y2 - y0) * t3 + y0 : (x2 - x0) * t3 + x0
return isDimX ? [xOrY, val2] : [val2, xOrY]
}
x0 = x2
y0 = y2
break
case CMD2.C:
x2 = data2[i2++]
y2 = data2[i2++]
x22 = data2[i2++]
y22 = data2[i2++]
x3 = data2[i2++]
y3 = data2[i2++]
var nRoot = isDimX
? cubicRootAt(x0, x2, x22, x3, xOrY, roots2)
: cubicRootAt(y0, y2, y22, y3, xOrY, roots2)
if (nRoot > 0) {
for (var i_1 = 0; i_1 < nRoot; i_1++) {
var t_1 = roots2[i_1]
if (t_1 <= 1 && t_1 >= 0) {
var val2 = isDimX
? cubicAt(y0, y2, y22, y3, t_1)
: cubicAt(x0, x2, x22, x3, t_1)
return isDimX ? [xOrY, val2] : [val2, xOrY]
}
}
}
x0 = x3
y0 = y3
break
}
}
}
return ECPolyline2
})(Path$1)
var ECPolygonShape = (function (_super) {
__extends$2(ECPolygonShape2, _super)
function ECPolygonShape2() {
return (_super !== null && _super.apply(this, arguments)) || this
}
return ECPolygonShape2
})(ECPolylineShape)
var ECPolygon = (function (_super) {
__extends$2(ECPolygon2, _super)
function ECPolygon2(opts) {
var _this = _super.call(this, opts) || this
_this.type = 'ec-polygon'
return _this
}
ECPolygon2.prototype.getDefaultShape = function () {
return new ECPolygonShape()
}
ECPolygon2.prototype.buildPath = function (ctx, shape) {
var points2 = shape.points
var stackedOnPoints = shape.stackedOnPoints
var i2 = 0
var len2 = points2.length / 2
var smoothMonotone = shape.smoothMonotone
if (shape.connectNulls) {
for (; len2 > 0; len2--) {
if (!isPointNull$1(points2[len2 * 2 - 2], points2[len2 * 2 - 1])) {
break
}
}
for (; i2 < len2; i2++) {
if (!isPointNull$1(points2[i2 * 2], points2[i2 * 2 + 1])) {
break
}
}
}
while (i2 < len2) {
var k2 = drawSegment(
ctx,
points2,
i2,
len2,
len2,
1,
shape.smooth,
smoothMonotone,
shape.connectNulls
)
drawSegment(
ctx,
stackedOnPoints,
i2 + k2 - 1,
k2,
len2,
-1,
shape.stackedOnSmooth,
smoothMonotone,
shape.connectNulls
)
i2 += k2 + 1
ctx.closePath()
}
}
return ECPolygon2
})(Path$1)
function createGridClipPath(
cartesian,
hasAnimation,
seriesModel,
done,
during
) {
var rect = cartesian.getArea()
var x2 = rect.x
var y2 = rect.y
var width = rect.width
var height = rect.height
var lineWidth = seriesModel.get(['lineStyle', 'width']) || 2
x2 -= lineWidth / 2
y2 -= lineWidth / 2
width += lineWidth
height += lineWidth
x2 = Math.floor(x2)
width = Math.round(width)
var clipPath = new Rect$4({
shape: {
x: x2,
y: y2,
width,
height,
},
})
if (hasAnimation) {
var baseAxis = cartesian.getBaseAxis()
var isHorizontal2 = baseAxis.isHorizontal()
var isAxisInversed = baseAxis.inverse
if (isHorizontal2) {
if (isAxisInversed) {
clipPath.shape.x += width
}
clipPath.shape.width = 0
} else {
if (!isAxisInversed) {
clipPath.shape.y += height
}
clipPath.shape.height = 0
}
var duringCb = isFunction$4(during)
? function (percent) {
during(percent, clipPath)
}
: null
initProps(
clipPath,
{
shape: {
width,
height,
x: x2,
y: y2,
},
},
seriesModel,
null,
done,
duringCb
)
}
return clipPath
}
function createPolarClipPath(polar, hasAnimation, seriesModel) {
var sectorArea = polar.getArea()
var r0 = round$3(sectorArea.r0, 1)
var r2 = round$3(sectorArea.r, 1)
var clipPath = new Sector$1({
shape: {
cx: round$3(polar.cx, 1),
cy: round$3(polar.cy, 1),
r0,
r: r2,
startAngle: sectorArea.startAngle,
endAngle: sectorArea.endAngle,
clockwise: sectorArea.clockwise,
},
})
if (hasAnimation) {
var isRadial = polar.getBaseAxis().dim === 'angle'
if (isRadial) {
clipPath.shape.endAngle = sectorArea.startAngle
} else {
clipPath.shape.r = r0
}
initProps(
clipPath,
{
shape: {
endAngle: sectorArea.endAngle,
r: r2,
},
},
seriesModel
)
}
return clipPath
}
function createClipPath(coordSys, hasAnimation, seriesModel, done, during) {
if (!coordSys) {
return null
} else if (coordSys.type === 'polar') {
return createPolarClipPath(coordSys, hasAnimation, seriesModel)
} else if (coordSys.type === 'cartesian2d') {
return createGridClipPath(coordSys, hasAnimation, seriesModel, done, during)
}
return null
}
function isCoordinateSystemType(coordSys, type4) {
return coordSys.type === type4
}
function isPointsSame(points1, points2) {
if (points1.length !== points2.length) {
return
}
for (var i2 = 0; i2 < points1.length; i2++) {
if (points1[i2] !== points2[i2]) {
return
}
}
return true
}
function bboxFromPoints(points2) {
var minX = Infinity
var minY = Infinity
var maxX = -Infinity
var maxY = -Infinity
for (var i2 = 0; i2 < points2.length; ) {
var x2 = points2[i2++]
var y2 = points2[i2++]
if (!isNaN(x2)) {
minX = Math.min(x2, minX)
maxX = Math.max(x2, maxX)
}
if (!isNaN(y2)) {
minY = Math.min(y2, minY)
maxY = Math.max(y2, maxY)
}
}
return [
[minX, minY],
[maxX, maxY],
]
}
function getBoundingDiff(points1, points2) {
var _a2 = bboxFromPoints(points1),
min1 = _a2[0],
max1 = _a2[1]
var _b2 = bboxFromPoints(points2),
min22 = _b2[0],
max22 = _b2[1]
return Math.max(
Math.abs(min1[0] - min22[0]),
Math.abs(min1[1] - min22[1]),
Math.abs(max1[0] - max22[0]),
Math.abs(max1[1] - max22[1])
)
}
function getSmooth(smooth) {
return isNumber$2(smooth) ? smooth : smooth ? 0.5 : 0
}
function getStackedOnPoints(coordSys, data2, dataCoordInfo) {
if (!dataCoordInfo.valueDim) {
return []
}
var len2 = data2.count()
var points2 = createFloat32Array(len2 * 2)
for (var idx = 0; idx < len2; idx++) {
var pt3 = getStackedOnPoint(dataCoordInfo, coordSys, data2, idx)
points2[idx * 2] = pt3[0]
points2[idx * 2 + 1] = pt3[1]
}
return points2
}
function turnPointsIntoStep(points2, coordSys, stepTurnAt, connectNulls) {
var baseAxis = coordSys.getBaseAxis()
var baseIndex = baseAxis.dim === 'x' || baseAxis.dim === 'radius' ? 0 : 1
var stepPoints = []
var i2 = 0
var stepPt = []
var pt3 = []
var nextPt = []
var filteredPoints = []
if (connectNulls) {
for (i2 = 0; i2 < points2.length; i2 += 2) {
if (!isNaN(points2[i2]) && !isNaN(points2[i2 + 1])) {
filteredPoints.push(points2[i2], points2[i2 + 1])
}
}
points2 = filteredPoints
}
for (i2 = 0; i2 < points2.length - 2; i2 += 2) {
nextPt[0] = points2[i2 + 2]
nextPt[1] = points2[i2 + 3]
pt3[0] = points2[i2]
pt3[1] = points2[i2 + 1]
stepPoints.push(pt3[0], pt3[1])
switch (stepTurnAt) {
case 'end':
stepPt[baseIndex] = nextPt[baseIndex]
stepPt[1 - baseIndex] = pt3[1 - baseIndex]
stepPoints.push(stepPt[0], stepPt[1])
break
case 'middle':
var middle = (pt3[baseIndex] + nextPt[baseIndex]) / 2
var stepPt2 = []
stepPt[baseIndex] = stepPt2[baseIndex] = middle
stepPt[1 - baseIndex] = pt3[1 - baseIndex]
stepPt2[1 - baseIndex] = nextPt[1 - baseIndex]
stepPoints.push(stepPt[0], stepPt[1])
stepPoints.push(stepPt2[0], stepPt2[1])
break
default:
stepPt[baseIndex] = pt3[baseIndex]
stepPt[1 - baseIndex] = nextPt[1 - baseIndex]
stepPoints.push(stepPt[0], stepPt[1])
}
}
stepPoints.push(points2[i2++], points2[i2++])
return stepPoints
}
function clipColorStops(colorStops, maxSize) {
var newColorStops = []
var len2 = colorStops.length
var prevOutOfRangeColorStop
var prevInRangeColorStop
function lerpStop(stop0, stop1, clippedCoord) {
var coord0 = stop0.coord
var p2 = (clippedCoord - coord0) / (stop1.coord - coord0)
var color2 = lerp(p2, [stop0.color, stop1.color])
return {
coord: clippedCoord,
color: color2,
}
}
for (var i2 = 0; i2 < len2; i2++) {
var stop_1 = colorStops[i2]
var coord = stop_1.coord
if (coord < 0) {
prevOutOfRangeColorStop = stop_1
} else if (coord > maxSize) {
if (prevInRangeColorStop) {
newColorStops.push(lerpStop(prevInRangeColorStop, stop_1, maxSize))
} else if (prevOutOfRangeColorStop) {
newColorStops.push(
lerpStop(prevOutOfRangeColorStop, stop_1, 0),
lerpStop(prevOutOfRangeColorStop, stop_1, maxSize)
)
}
break
} else {
if (prevOutOfRangeColorStop) {
newColorStops.push(lerpStop(prevOutOfRangeColorStop, stop_1, 0))
prevOutOfRangeColorStop = null
}
newColorStops.push(stop_1)
prevInRangeColorStop = stop_1
}
}
return newColorStops
}
function getVisualGradient(data2, coordSys, api) {
var visualMetaList = data2.getVisual('visualMeta')
if (!visualMetaList || !visualMetaList.length || !data2.count()) {
return
}
if (coordSys.type !== 'cartesian2d') {
return
}
var coordDim
var visualMeta
for (var i2 = visualMetaList.length - 1; i2 >= 0; i2--) {
var dimInfo = data2.getDimensionInfo(visualMetaList[i2].dimension)
coordDim = dimInfo && dimInfo.coordDim
if (coordDim === 'x' || coordDim === 'y') {
visualMeta = visualMetaList[i2]
break
}
}
if (!visualMeta) {
return
}
var axis = coordSys.getAxis(coordDim)
var colorStops = map$1(visualMeta.stops, function (stop2) {
return {
coord: axis.toGlobalCoord(axis.dataToCoord(stop2.value)),
color: stop2.color,
}
})
var stopLen = colorStops.length
var outerColors = visualMeta.outerColors.slice()
if (stopLen && colorStops[0].coord > colorStops[stopLen - 1].coord) {
colorStops.reverse()
outerColors.reverse()
}
var colorStopsInRange = clipColorStops(
colorStops,
coordDim === 'x' ? api.getWidth() : api.getHeight()
)
var inRangeStopLen = colorStopsInRange.length
if (!inRangeStopLen && stopLen) {
return colorStops[0].coord < 0
? outerColors[1]
? outerColors[1]
: colorStops[stopLen - 1].color
: outerColors[0]
? outerColors[0]
: colorStops[0].color
}
var tinyExtent = 10
var minCoord = colorStopsInRange[0].coord - tinyExtent
var maxCoord = colorStopsInRange[inRangeStopLen - 1].coord + tinyExtent
var coordSpan = maxCoord - minCoord
if (coordSpan < 1e-3) {
return 'transparent'
}
each$f(colorStopsInRange, function (stop2) {
stop2.offset = (stop2.coord - minCoord) / coordSpan
})
colorStopsInRange.push({
offset: inRangeStopLen ? colorStopsInRange[inRangeStopLen - 1].offset : 0.5,
color: outerColors[1] || 'transparent',
})
colorStopsInRange.unshift({
offset: inRangeStopLen ? colorStopsInRange[0].offset : 0.5,
color: outerColors[0] || 'transparent',
})
var gradient = new LinearGradient$1(0, 0, 0, 0, colorStopsInRange, true)
gradient[coordDim] = minCoord
gradient[coordDim + '2'] = maxCoord
return gradient
}
function getIsIgnoreFunc(seriesModel, data2, coordSys) {
var showAllSymbol = seriesModel.get('showAllSymbol')
var isAuto2 = showAllSymbol === 'auto'
if (showAllSymbol && !isAuto2) {
return
}
var categoryAxis2 = coordSys.getAxesByScale('ordinal')[0]
if (!categoryAxis2) {
return
}
if (isAuto2 && canShowAllSymbolForCategory(categoryAxis2, data2)) {
return
}
var categoryDataDim = data2.mapDimension(categoryAxis2.dim)
var labelMap = {}
each$f(categoryAxis2.getViewLabels(), function (labelItem) {
var ordinalNumber = categoryAxis2.scale.getRawOrdinalNumber(
labelItem.tickValue
)
labelMap[ordinalNumber] = 1
})
return function (dataIndex) {
return !labelMap.hasOwnProperty(data2.get(categoryDataDim, dataIndex))
}
}
function canShowAllSymbolForCategory(categoryAxis2, data2) {
var axisExtent = categoryAxis2.getExtent()
var availSize =
Math.abs(axisExtent[1] - axisExtent[0]) / categoryAxis2.scale.count()
isNaN(availSize) && (availSize = 0)
var dataLen = data2.count()
var step = Math.max(1, Math.round(dataLen / 5))
for (var dataIndex = 0; dataIndex < dataLen; dataIndex += step) {
if (
SymbolClz.getSymbolSize(data2, dataIndex)[
categoryAxis2.isHorizontal() ? 1 : 0
] *
1.5 >
availSize
) {
return false
}
}
return true
}
function isPointNull(x2, y2) {
return isNaN(x2) || isNaN(y2)
}
function getLastIndexNotNull(points2) {
var len2 = points2.length / 2
for (; len2 > 0; len2--) {
if (!isPointNull(points2[len2 * 2 - 2], points2[len2 * 2 - 1])) {
break
}
}
return len2 - 1
}
function getPointAtIndex(points2, idx) {
return [points2[idx * 2], points2[idx * 2 + 1]]
}
function getIndexRange(points2, xOrY, dim) {
var len2 = points2.length / 2
var dimIdx = dim === 'x' ? 0 : 1
var a2
var b2
var prevIndex = 0
var nextIndex = -1
for (var i2 = 0; i2 < len2; i2++) {
b2 = points2[i2 * 2 + dimIdx]
if (isNaN(b2) || isNaN(points2[i2 * 2 + 1 - dimIdx])) {
continue
}
if (i2 === 0) {
a2 = b2
continue
}
if ((a2 <= xOrY && b2 >= xOrY) || (a2 >= xOrY && b2 <= xOrY)) {
nextIndex = i2
break
}
prevIndex = i2
a2 = b2
}
return {
range: [prevIndex, nextIndex],
t: (xOrY - a2) / (b2 - a2),
}
}
function anyStateShowEndLabel(seriesModel) {
if (seriesModel.get(['endLabel', 'show'])) {
return true
}
for (var i2 = 0; i2 < SPECIAL_STATES.length; i2++) {
if (seriesModel.get([SPECIAL_STATES[i2], 'endLabel', 'show'])) {
return true
}
}
return false
}
function createLineClipPath(lineView, coordSys, hasAnimation, seriesModel) {
if (isCoordinateSystemType(coordSys, 'cartesian2d')) {
var endLabelModel_1 = seriesModel.getModel('endLabel')
var valueAnimation_1 = endLabelModel_1.get('valueAnimation')
var data_1 = seriesModel.getData()
var labelAnimationRecord_1 = {
lastFrameIndex: 0,
}
var during = anyStateShowEndLabel(seriesModel)
? function (percent, clipRect) {
lineView._endLabelOnDuring(
percent,
clipRect,
data_1,
labelAnimationRecord_1,
valueAnimation_1,
endLabelModel_1,
coordSys
)
}
: null
var isHorizontal2 = coordSys.getBaseAxis().isHorizontal()
var clipPath = createGridClipPath(
coordSys,
hasAnimation,
seriesModel,
function () {
var endLabel = lineView._endLabel
if (endLabel && hasAnimation) {
if (labelAnimationRecord_1.originalX != null) {
endLabel.attr({
x: labelAnimationRecord_1.originalX,
y: labelAnimationRecord_1.originalY,
})
}
}
},
during
)
if (!seriesModel.get('clip', true)) {
var rectShape = clipPath.shape
var expandSize = Math.max(rectShape.width, rectShape.height)
if (isHorizontal2) {
rectShape.y -= expandSize
rectShape.height += expandSize * 2
} else {
rectShape.x -= expandSize
rectShape.width += expandSize * 2
}
}
if (during) {
during(1, clipPath)
}
return clipPath
} else {
return createPolarClipPath(coordSys, hasAnimation, seriesModel)
}
}
function getEndLabelStateSpecified(endLabelModel, coordSys) {
var baseAxis = coordSys.getBaseAxis()
var isHorizontal2 = baseAxis.isHorizontal()
var isBaseInversed = baseAxis.inverse
var align = isHorizontal2 ? (isBaseInversed ? 'right' : 'left') : 'center'
var verticalAlign = isHorizontal2
? 'middle'
: isBaseInversed
? 'top'
: 'bottom'
return {
normal: {
align: endLabelModel.get('align') || align,
verticalAlign: endLabelModel.get('verticalAlign') || verticalAlign,
},
}
}
var LineView = (function (_super) {
__extends$2(LineView2, _super)
function LineView2() {
return (_super !== null && _super.apply(this, arguments)) || this
}
LineView2.prototype.init = function () {
var lineGroup = new Group$5()
var symbolDraw = new SymbolDraw$1()
this.group.add(symbolDraw.group)
this._symbolDraw = symbolDraw
this._lineGroup = lineGroup
}
LineView2.prototype.render = function (seriesModel, ecModel, api) {
var _this = this
var coordSys = seriesModel.coordinateSystem
var group = this.group
var data2 = seriesModel.getData()
var lineStyleModel = seriesModel.getModel('lineStyle')
var areaStyleModel = seriesModel.getModel('areaStyle')
var points2 = data2.getLayout('points') || []
var isCoordSysPolar = coordSys.type === 'polar'
var prevCoordSys = this._coordSys
var symbolDraw = this._symbolDraw
var polyline = this._polyline
var polygon = this._polygon
var lineGroup = this._lineGroup
var hasAnimation = !ecModel.ssr && seriesModel.isAnimationEnabled()
var isAreaChart = !areaStyleModel.isEmpty()
var valueOrigin = areaStyleModel.get('origin')
var dataCoordInfo = prepareDataCoordInfo(coordSys, data2, valueOrigin)
var stackedOnPoints =
isAreaChart && getStackedOnPoints(coordSys, data2, dataCoordInfo)
var showSymbol = seriesModel.get('showSymbol')
var connectNulls = seriesModel.get('connectNulls')
var isIgnoreFunc =
showSymbol &&
!isCoordSysPolar &&
getIsIgnoreFunc(seriesModel, data2, coordSys)
var oldData = this._data
oldData &&
oldData.eachItemGraphicEl(function (el2, idx) {
if (el2.__temp) {
group.remove(el2)
oldData.setItemGraphicEl(idx, null)
}
})
if (!showSymbol) {
symbolDraw.remove()
}
group.add(lineGroup)
var step = !isCoordSysPolar ? seriesModel.get('step') : false
var clipShapeForSymbol
if (coordSys && coordSys.getArea && seriesModel.get('clip', true)) {
clipShapeForSymbol = coordSys.getArea()
if (clipShapeForSymbol.width != null) {
clipShapeForSymbol.x -= 0.1
clipShapeForSymbol.y -= 0.1
clipShapeForSymbol.width += 0.2
clipShapeForSymbol.height += 0.2
} else if (clipShapeForSymbol.r0) {
clipShapeForSymbol.r0 -= 0.5
clipShapeForSymbol.r += 0.5
}
}
this._clipShapeForSymbol = clipShapeForSymbol
var visualColor =
getVisualGradient(data2, coordSys, api) ||
data2.getVisual('style')[data2.getVisual('drawType')]
if (
!(polyline && prevCoordSys.type === coordSys.type && step === this._step)
) {
showSymbol &&
symbolDraw.updateData(data2, {
isIgnore: isIgnoreFunc,
clipShape: clipShapeForSymbol,
disableAnimation: true,
getSymbolPoint: function (idx) {
return [points2[idx * 2], points2[idx * 2 + 1]]
},
})
hasAnimation &&
this._initSymbolLabelAnimation(data2, coordSys, clipShapeForSymbol)
if (step) {
points2 = turnPointsIntoStep(points2, coordSys, step, connectNulls)
if (stackedOnPoints) {
stackedOnPoints = turnPointsIntoStep(
stackedOnPoints,
coordSys,
step,
connectNulls
)
}
}
polyline = this._newPolyline(points2)
if (isAreaChart) {
polygon = this._newPolygon(points2, stackedOnPoints)
} else if (polygon) {
lineGroup.remove(polygon)
polygon = this._polygon = null
}
if (!isCoordSysPolar) {
this._initOrUpdateEndLabel(
seriesModel,
coordSys,
convertToColorString(visualColor)
)
}
lineGroup.setClipPath(
createLineClipPath(this, coordSys, true, seriesModel)
)
} else {
if (isAreaChart && !polygon) {
polygon = this._newPolygon(points2, stackedOnPoints)
} else if (polygon && !isAreaChart) {
lineGroup.remove(polygon)
polygon = this._polygon = null
}
if (!isCoordSysPolar) {
this._initOrUpdateEndLabel(
seriesModel,
coordSys,
convertToColorString(visualColor)
)
}
var oldClipPath = lineGroup.getClipPath()
if (oldClipPath) {
var newClipPath = createLineClipPath(this, coordSys, false, seriesModel)
initProps(
oldClipPath,
{
shape: newClipPath.shape,
},
seriesModel
)
} else {
lineGroup.setClipPath(
createLineClipPath(this, coordSys, true, seriesModel)
)
}
showSymbol &&
symbolDraw.updateData(data2, {
isIgnore: isIgnoreFunc,
clipShape: clipShapeForSymbol,
disableAnimation: true,
getSymbolPoint: function (idx) {
return [points2[idx * 2], points2[idx * 2 + 1]]
},
})
if (
!isPointsSame(this._stackedOnPoints, stackedOnPoints) ||
!isPointsSame(this._points, points2)
) {
if (hasAnimation) {
this._doUpdateAnimation(
data2,
stackedOnPoints,
coordSys,
api,
step,
valueOrigin,
connectNulls
)
} else {
if (step) {
points2 = turnPointsIntoStep(points2, coordSys, step, connectNulls)
if (stackedOnPoints) {
stackedOnPoints = turnPointsIntoStep(
stackedOnPoints,
coordSys,
step,
connectNulls
)
}
}
polyline.setShape({
points: points2,
})
polygon &&
polygon.setShape({
points: points2,
stackedOnPoints,
})
}
}
}
var emphasisModel = seriesModel.getModel('emphasis')
var focus2 = emphasisModel.get('focus')
var blurScope = emphasisModel.get('blurScope')
var emphasisDisabled = emphasisModel.get('disabled')
polyline.useStyle(
defaults(lineStyleModel.getLineStyle(), {
fill: 'none',
stroke: visualColor,
lineJoin: 'bevel',
})
)
setStatesStylesFromModel(polyline, seriesModel, 'lineStyle')
if (
polyline.style.lineWidth > 0 &&
seriesModel.get(['emphasis', 'lineStyle', 'width']) === 'bolder'
) {
var emphasisLineStyle = polyline.getState('emphasis').style
emphasisLineStyle.lineWidth = +polyline.style.lineWidth + 1
}
getECData(polyline).seriesIndex = seriesModel.seriesIndex
toggleHoverEmphasis(polyline, focus2, blurScope, emphasisDisabled)
var smooth = getSmooth(seriesModel.get('smooth'))
var smoothMonotone = seriesModel.get('smoothMonotone')
polyline.setShape({
smooth,
smoothMonotone,
connectNulls,
})
if (polygon) {
var stackedOnSeries = data2.getCalculationInfo('stackedOnSeries')
var stackedOnSmooth = 0
polygon.useStyle(
defaults(areaStyleModel.getAreaStyle(), {
fill: visualColor,
opacity: 0.7,
lineJoin: 'bevel',
decal: data2.getVisual('style').decal,
})
)
if (stackedOnSeries) {
stackedOnSmooth = getSmooth(stackedOnSeries.get('smooth'))
}
polygon.setShape({
smooth,
stackedOnSmooth,
smoothMonotone,
connectNulls,
})
setStatesStylesFromModel(polygon, seriesModel, 'areaStyle')
getECData(polygon).seriesIndex = seriesModel.seriesIndex
toggleHoverEmphasis(polygon, focus2, blurScope, emphasisDisabled)
}
var changePolyState = function (toState) {
_this._changePolyState(toState)
}
data2.eachItemGraphicEl(function (el2) {
el2 && (el2.onHoverStateChange = changePolyState)
})
this._polyline.onHoverStateChange = changePolyState
this._data = data2
this._coordSys = coordSys
this._stackedOnPoints = stackedOnPoints
this._points = points2
this._step = step
this._valueOrigin = valueOrigin
if (seriesModel.get('triggerLineEvent')) {
this.packEventData(seriesModel, polyline)
polygon && this.packEventData(seriesModel, polygon)
}
}
LineView2.prototype.packEventData = function (seriesModel, el2) {
getECData(el2).eventData = {
componentType: 'series',
componentSubType: 'line',
componentIndex: seriesModel.componentIndex,
seriesIndex: seriesModel.seriesIndex,
seriesName: seriesModel.name,
seriesType: 'line',
}
}
LineView2.prototype.highlight = function (
seriesModel,
ecModel,
api,
payload
) {
var data2 = seriesModel.getData()
var dataIndex = queryDataIndex(data2, payload)
this._changePolyState('emphasis')
if (!(dataIndex instanceof Array) && dataIndex != null && dataIndex >= 0) {
var points2 = data2.getLayout('points')
var symbol = data2.getItemGraphicEl(dataIndex)
if (!symbol) {
var x2 = points2[dataIndex * 2]
var y2 = points2[dataIndex * 2 + 1]
if (isNaN(x2) || isNaN(y2)) {
return
}
if (
this._clipShapeForSymbol &&
!this._clipShapeForSymbol.contain(x2, y2)
) {
return
}
var zlevel = seriesModel.get('zlevel') || 0
var z2 = seriesModel.get('z') || 0
symbol = new SymbolClz(data2, dataIndex)
symbol.x = x2
symbol.y = y2
symbol.setZ(zlevel, z2)
var symbolLabel = symbol.getSymbolPath().getTextContent()
if (symbolLabel) {
symbolLabel.zlevel = zlevel
symbolLabel.z = z2
symbolLabel.z2 = this._polyline.z2 + 1
}
symbol.__temp = true
data2.setItemGraphicEl(dataIndex, symbol)
symbol.stopSymbolAnimation(true)
this.group.add(symbol)
}
symbol.highlight()
} else {
ChartView$1.prototype.highlight.call(
this,
seriesModel,
ecModel,
api,
payload
)
}
}
LineView2.prototype.downplay = function (seriesModel, ecModel, api, payload) {
var data2 = seriesModel.getData()
var dataIndex = queryDataIndex(data2, payload)
this._changePolyState('normal')
if (dataIndex != null && dataIndex >= 0) {
var symbol = data2.getItemGraphicEl(dataIndex)
if (symbol) {
if (symbol.__temp) {
data2.setItemGraphicEl(dataIndex, null)
this.group.remove(symbol)
} else {
symbol.downplay()
}
}
} else {
ChartView$1.prototype.downplay.call(
this,
seriesModel,
ecModel,
api,
payload
)
}
}
LineView2.prototype._changePolyState = function (toState) {
var polygon = this._polygon
setStatesFlag(this._polyline, toState)
polygon && setStatesFlag(polygon, toState)
}
LineView2.prototype._newPolyline = function (points2) {
var polyline = this._polyline
if (polyline) {
this._lineGroup.remove(polyline)
}
polyline = new ECPolyline({
shape: {
points: points2,
},
segmentIgnoreThreshold: 2,
z2: 10,
})
this._lineGroup.add(polyline)
this._polyline = polyline
return polyline
}
LineView2.prototype._newPolygon = function (points2, stackedOnPoints) {
var polygon = this._polygon
if (polygon) {
this._lineGroup.remove(polygon)
}
polygon = new ECPolygon({
shape: {
points: points2,
stackedOnPoints,
},
segmentIgnoreThreshold: 2,
})
this._lineGroup.add(polygon)
this._polygon = polygon
return polygon
}
LineView2.prototype._initSymbolLabelAnimation = function (
data2,
coordSys,
clipShape
) {
var isHorizontalOrRadial
var isCoordSysPolar
var baseAxis = coordSys.getBaseAxis()
var isAxisInverse = baseAxis.inverse
if (coordSys.type === 'cartesian2d') {
isHorizontalOrRadial = baseAxis.isHorizontal()
isCoordSysPolar = false
} else if (coordSys.type === 'polar') {
isHorizontalOrRadial = baseAxis.dim === 'angle'
isCoordSysPolar = true
}
var seriesModel = data2.hostModel
var seriesDuration = seriesModel.get('animationDuration')
if (isFunction$4(seriesDuration)) {
seriesDuration = seriesDuration(null)
}
var seriesDelay = seriesModel.get('animationDelay') || 0
var seriesDelayValue = isFunction$4(seriesDelay)
? seriesDelay(null)
: seriesDelay
data2.eachItemGraphicEl(function (symbol, idx) {
var el2 = symbol
if (el2) {
var point = [symbol.x, symbol.y]
var start2 = void 0
var end2 = void 0
var current2 = void 0
if (clipShape) {
if (isCoordSysPolar) {
var polarClip = clipShape
var coord = coordSys.pointToCoord(point)
if (isHorizontalOrRadial) {
start2 = polarClip.startAngle
end2 = polarClip.endAngle
current2 = (-coord[1] / 180) * Math.PI
} else {
start2 = polarClip.r0
end2 = polarClip.r
current2 = coord[0]
}
} else {
var gridClip = clipShape
if (isHorizontalOrRadial) {
start2 = gridClip.x
end2 = gridClip.x + gridClip.width
current2 = symbol.x
} else {
start2 = gridClip.y + gridClip.height
end2 = gridClip.y
current2 = symbol.y
}
}
}
var ratio = end2 === start2 ? 0 : (current2 - start2) / (end2 - start2)
if (isAxisInverse) {
ratio = 1 - ratio
}
var delay2 = isFunction$4(seriesDelay)
? seriesDelay(idx)
: seriesDuration * ratio + seriesDelayValue
var symbolPath = el2.getSymbolPath()
var text2 = symbolPath.getTextContent()
el2.attr({
scaleX: 0,
scaleY: 0,
})
el2.animateTo(
{
scaleX: 1,
scaleY: 1,
},
{
duration: 200,
setToFinal: true,
delay: delay2,
}
)
if (text2) {
text2.animateFrom(
{
style: {
opacity: 0,
},
},
{
duration: 300,
delay: delay2,
}
)
}
symbolPath.disableLabelAnimation = true
}
})
}
LineView2.prototype._initOrUpdateEndLabel = function (
seriesModel,
coordSys,
inheritColor
) {
var endLabelModel = seriesModel.getModel('endLabel')
if (anyStateShowEndLabel(seriesModel)) {
var data_2 = seriesModel.getData()
var polyline = this._polyline
var points2 = data_2.getLayout('points')
if (!points2) {
polyline.removeTextContent()
this._endLabel = null
return
}
var endLabel = this._endLabel
if (!endLabel) {
endLabel = this._endLabel = new ZRText$1({
z2: 200,
})
endLabel.ignoreClip = true
polyline.setTextContent(this._endLabel)
polyline.disableLabelAnimation = true
}
var dataIndex = getLastIndexNotNull(points2)
if (dataIndex >= 0) {
setLabelStyle(
polyline,
getLabelStatesModels(seriesModel, 'endLabel'),
{
inheritColor,
labelFetcher: seriesModel,
labelDataIndex: dataIndex,
defaultText: function (dataIndex2, opt, interpolatedValue) {
return interpolatedValue != null
? getDefaultInterpolatedLabel(data_2, interpolatedValue)
: getDefaultLabel(data_2, dataIndex2)
},
enableTextSetter: true,
},
getEndLabelStateSpecified(endLabelModel, coordSys)
)
polyline.textConfig.position = null
}
} else if (this._endLabel) {
this._polyline.removeTextContent()
this._endLabel = null
}
}
LineView2.prototype._endLabelOnDuring = function (
percent,
clipRect,
data2,
animationRecord,
valueAnimation,
endLabelModel,
coordSys
) {
var endLabel = this._endLabel
var polyline = this._polyline
if (endLabel) {
if (percent < 1 && animationRecord.originalX == null) {
animationRecord.originalX = endLabel.x
animationRecord.originalY = endLabel.y
}
var points2 = data2.getLayout('points')
var seriesModel = data2.hostModel
var connectNulls = seriesModel.get('connectNulls')
var precision = endLabelModel.get('precision')
var distance2 = endLabelModel.get('distance') || 0
var baseAxis = coordSys.getBaseAxis()
var isHorizontal2 = baseAxis.isHorizontal()
var isBaseInversed = baseAxis.inverse
var clipShape = clipRect.shape
var xOrY = isBaseInversed
? isHorizontal2
? clipShape.x
: clipShape.y + clipShape.height
: isHorizontal2
? clipShape.x + clipShape.width
: clipShape.y
var distanceX =
(isHorizontal2 ? distance2 : 0) * (isBaseInversed ? -1 : 1)
var distanceY =
(isHorizontal2 ? 0 : -distance2) * (isBaseInversed ? -1 : 1)
var dim = isHorizontal2 ? 'x' : 'y'
var dataIndexRange = getIndexRange(points2, xOrY, dim)
var indices = dataIndexRange.range
var diff = indices[1] - indices[0]
var value2 = void 0
if (diff >= 1) {
if (diff > 1 && !connectNulls) {
var pt3 = getPointAtIndex(points2, indices[0])
endLabel.attr({
x: pt3[0] + distanceX,
y: pt3[1] + distanceY,
})
valueAnimation && (value2 = seriesModel.getRawValue(indices[0]))
} else {
var pt3 = polyline.getPointOn(xOrY, dim)
pt3 &&
endLabel.attr({
x: pt3[0] + distanceX,
y: pt3[1] + distanceY,
})
var startValue = seriesModel.getRawValue(indices[0])
var endValue = seriesModel.getRawValue(indices[1])
valueAnimation &&
(value2 = interpolateRawValues(
data2,
precision,
startValue,
endValue,
dataIndexRange.t
))
}
animationRecord.lastFrameIndex = indices[0]
} else {
var idx =
percent === 1 || animationRecord.lastFrameIndex > 0 ? indices[0] : 0
var pt3 = getPointAtIndex(points2, idx)
valueAnimation && (value2 = seriesModel.getRawValue(idx))
endLabel.attr({
x: pt3[0] + distanceX,
y: pt3[1] + distanceY,
})
}
if (valueAnimation) {
var inner2 = labelInner(endLabel)
if (typeof inner2.setLabelText === 'function') {
inner2.setLabelText(value2)
}
}
}
}
LineView2.prototype._doUpdateAnimation = function (
data2,
stackedOnPoints,
coordSys,
api,
step,
valueOrigin,
connectNulls
) {
var polyline = this._polyline
var polygon = this._polygon
var seriesModel = data2.hostModel
var diff = lineAnimationDiff(
this._data,
data2,
this._stackedOnPoints,
stackedOnPoints,
this._coordSys,
coordSys,
this._valueOrigin
)
var current2 = diff.current
var stackedOnCurrent = diff.stackedOnCurrent
var next = diff.next
var stackedOnNext = diff.stackedOnNext
if (step) {
current2 = turnPointsIntoStep(diff.current, coordSys, step, connectNulls)
stackedOnCurrent = turnPointsIntoStep(
diff.stackedOnCurrent,
coordSys,
step,
connectNulls
)
next = turnPointsIntoStep(diff.next, coordSys, step, connectNulls)
stackedOnNext = turnPointsIntoStep(
diff.stackedOnNext,
coordSys,
step,
connectNulls
)
}
if (
getBoundingDiff(current2, next) > 3e3 ||
(polygon && getBoundingDiff(stackedOnCurrent, stackedOnNext) > 3e3)
) {
polyline.stopAnimation()
polyline.setShape({
points: next,
})
if (polygon) {
polygon.stopAnimation()
polygon.setShape({
points: next,
stackedOnPoints: stackedOnNext,
})
}
return
}
polyline.shape.__points = diff.current
polyline.shape.points = current2
var target2 = {
shape: {
points: next,
},
}
if (diff.current !== current2) {
target2.shape.__points = diff.next
}
polyline.stopAnimation()
updateProps$1(polyline, target2, seriesModel)
if (polygon) {
polygon.setShape({
points: current2,
stackedOnPoints: stackedOnCurrent,
})
polygon.stopAnimation()
updateProps$1(
polygon,
{
shape: {
stackedOnPoints: stackedOnNext,
},
},
seriesModel
)
if (polyline.shape.points !== polygon.shape.points) {
polygon.shape.points = polyline.shape.points
}
}
var updatedDataInfo = []
var diffStatus = diff.status
for (var i2 = 0; i2 < diffStatus.length; i2++) {
var cmd = diffStatus[i2].cmd
if (cmd === '=') {
var el2 = data2.getItemGraphicEl(diffStatus[i2].idx1)
if (el2) {
updatedDataInfo.push({
el: el2,
ptIdx: i2,
})
}
}
}
if (polyline.animators && polyline.animators.length) {
polyline.animators[0].during(function () {
polygon && polygon.dirtyShape()
var points2 = polyline.shape.__points
for (var i3 = 0; i3 < updatedDataInfo.length; i3++) {
var el3 = updatedDataInfo[i3].el
var offset2 = updatedDataInfo[i3].ptIdx * 2
el3.x = points2[offset2]
el3.y = points2[offset2 + 1]
el3.markRedraw()
}
})
}
}
LineView2.prototype.remove = function (ecModel) {
var group = this.group
var oldData = this._data
this._lineGroup.removeAll()
this._symbolDraw.remove(true)
oldData &&
oldData.eachItemGraphicEl(function (el2, idx) {
if (el2.__temp) {
group.remove(el2)
oldData.setItemGraphicEl(idx, null)
}
})
this._polyline =
this._polygon =
this._coordSys =
this._points =
this._stackedOnPoints =
this._endLabel =
this._data =
null
}
LineView2.type = 'line'
return LineView2
})(ChartView$1)
var LineView$1 = LineView
function pointsLayout(seriesType2, forceStoreInTypedArray) {
return {
seriesType: seriesType2,
plan: createRenderPlanner(),
reset: function (seriesModel) {
var data2 = seriesModel.getData()
var coordSys = seriesModel.coordinateSystem
var pipelineContext = seriesModel.pipelineContext
var useTypedArray = forceStoreInTypedArray || pipelineContext.large
if (!coordSys) {
return
}
var dims = map$1(coordSys.dimensions, function (dim) {
return data2.mapDimension(dim)
}).slice(0, 2)
var dimLen = dims.length
var stackResultDim = data2.getCalculationInfo('stackResultDimension')
if (isDimensionStacked(data2, dims[0])) {
dims[0] = stackResultDim
}
if (isDimensionStacked(data2, dims[1])) {
dims[1] = stackResultDim
}
var store2 = data2.getStore()
var dimIdx0 = data2.getDimensionIndex(dims[0])
var dimIdx1 = data2.getDimensionIndex(dims[1])
return (
dimLen && {
progress: function (params2, data3) {
var segCount = params2.end - params2.start
var points2 = useTypedArray && createFloat32Array(segCount * dimLen)
var tmpIn = []
var tmpOut = []
for (var i2 = params2.start, offset2 = 0; i2 < params2.end; i2++) {
var point = void 0
if (dimLen === 1) {
var x2 = store2.get(dimIdx0, i2)
point = coordSys.dataToPoint(x2, null, tmpOut)
} else {
tmpIn[0] = store2.get(dimIdx0, i2)
tmpIn[1] = store2.get(dimIdx1, i2)
point = coordSys.dataToPoint(tmpIn, null, tmpOut)
}
if (useTypedArray) {
points2[offset2++] = point[0]
points2[offset2++] = point[1]
} else {
data3.setItemLayout(i2, point.slice())
}
}
useTypedArray && data3.setLayout('points', points2)
},
}
)
},
}
}
var samplers = {
average: function (frame) {
var sum2 = 0
var count2 = 0
for (var i2 = 0; i2 < frame.length; i2++) {
if (!isNaN(frame[i2])) {
sum2 += frame[i2]
count2++
}
}
return count2 === 0 ? NaN : sum2 / count2
},
sum: function (frame) {
var sum2 = 0
for (var i2 = 0; i2 < frame.length; i2++) {
sum2 += frame[i2] || 0
}
return sum2
},
max: function (frame) {
var max3 = -Infinity
for (var i2 = 0; i2 < frame.length; i2++) {
frame[i2] > max3 && (max3 = frame[i2])
}
return isFinite(max3) ? max3 : NaN
},
min: function (frame) {
var min3 = Infinity
for (var i2 = 0; i2 < frame.length; i2++) {
frame[i2] < min3 && (min3 = frame[i2])
}
return isFinite(min3) ? min3 : NaN
},
nearest: function (frame) {
return frame[0]
},
}
var indexSampler = function (frame) {
return Math.round(frame.length / 2)
}
function dataSample(seriesType2) {
return {
seriesType: seriesType2,
reset: function (seriesModel, ecModel, api) {
var data2 = seriesModel.getData()
var sampling = seriesModel.get('sampling')
var coordSys = seriesModel.coordinateSystem
var count2 = data2.count()
if (count2 > 10 && coordSys.type === 'cartesian2d' && sampling) {
var baseAxis = coordSys.getBaseAxis()
var valueAxis2 = coordSys.getOtherAxis(baseAxis)
var extent3 = baseAxis.getExtent()
var dpr2 = api.getDevicePixelRatio()
var size = Math.abs(extent3[1] - extent3[0]) * (dpr2 || 1)
var rate = Math.round(count2 / size)
if (isFinite(rate) && rate > 1) {
if (sampling === 'lttb') {
seriesModel.setData(
data2.lttbDownSample(data2.mapDimension(valueAxis2.dim), 1 / rate)
)
}
var sampler = void 0
if (isString$2(sampling)) {
sampler = samplers[sampling]
} else if (isFunction$4(sampling)) {
sampler = sampling
}
if (sampler) {
seriesModel.setData(
data2.downSample(
data2.mapDimension(valueAxis2.dim),
1 / rate,
sampler,
indexSampler
)
)
}
}
}
},
}
}
function install$S(registers) {
registers.registerChartView(LineView$1)
registers.registerSeriesModel(LineSeries)
registers.registerLayout(pointsLayout('line', true))
registers.registerVisual({
seriesType: 'line',
reset: function (seriesModel) {
var data2 = seriesModel.getData()
var lineStyle = seriesModel.getModel('lineStyle').getLineStyle()
if (lineStyle && !lineStyle.stroke) {
lineStyle.stroke = data2.getVisual('style').fill
}
data2.setVisual('legendLineStyle', lineStyle)
},
})
registers.registerProcessor(
registers.PRIORITY.PROCESSOR.STATISTIC,
dataSample('line')
)
}
var BaseBarSeriesModel = (function (_super) {
__extends$2(BaseBarSeriesModel2, _super)
function BaseBarSeriesModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = BaseBarSeriesModel2.type
return _this
}
BaseBarSeriesModel2.prototype.getInitialData = function (option2, ecModel) {
return createSeriesData(null, this, {
useEncodeDefaulter: true,
})
}
BaseBarSeriesModel2.prototype.getMarkerPosition = function (
value2,
dims,
startingAtTick
) {
var coordSys = this.coordinateSystem
if (coordSys && coordSys.clampData) {
var clampData_1 = coordSys.clampData(value2)
var pt_1 = coordSys.dataToPoint(clampData_1)
if (startingAtTick) {
each$f(coordSys.getAxes(), function (axis, idx) {
if (axis.type === 'category' && dims != null) {
var tickCoords = axis.getTicksCoords()
var targetTickId = clampData_1[idx]
var isEnd = dims[idx] === 'x1' || dims[idx] === 'y1'
if (isEnd) {
targetTickId += 1
}
if (tickCoords.length < 2) {
return
} else if (tickCoords.length === 2) {
pt_1[idx] = axis.toGlobalCoord(axis.getExtent()[isEnd ? 1 : 0])
return
}
var leftCoord = void 0
var coord = void 0
var stepTickValue = 1
for (var i2 = 0; i2 < tickCoords.length; i2++) {
var tickCoord = tickCoords[i2].coord
var tickValue =
i2 === tickCoords.length - 1
? tickCoords[i2 - 1].tickValue + stepTickValue
: tickCoords[i2].tickValue
if (tickValue === targetTickId) {
coord = tickCoord
break
} else if (tickValue < targetTickId) {
leftCoord = tickCoord
} else if (leftCoord != null && tickValue > targetTickId) {
coord = (tickCoord + leftCoord) / 2
break
}
if (i2 === 1) {
stepTickValue = tickValue - tickCoords[0].tickValue
}
}
if (coord == null) {
if (!leftCoord) {
coord = tickCoords[0].coord
} else if (leftCoord) {
coord = tickCoords[tickCoords.length - 1].coord
}
}
pt_1[idx] = axis.toGlobalCoord(coord)
}
})
} else {
var data2 = this.getData()
var offset2 = data2.getLayout('offset')
var size = data2.getLayout('size')
var offsetIndex = coordSys.getBaseAxis().isHorizontal() ? 0 : 1
pt_1[offsetIndex] += offset2 + size / 2
}
return pt_1
}
return [NaN, NaN]
}
BaseBarSeriesModel2.type = 'series.__base_bar__'
BaseBarSeriesModel2.defaultOption = {
z: 2,
coordinateSystem: 'cartesian2d',
legendHoverLink: true,
barMinHeight: 0,
barMinAngle: 0,
large: false,
largeThreshold: 400,
progressive: 3e3,
progressiveChunkMode: 'mod',
}
return BaseBarSeriesModel2
})(SeriesModel$1)
SeriesModel$1.registerClass(BaseBarSeriesModel)
var BaseBarSeriesModel$1 = BaseBarSeriesModel
var BarSeriesModel = (function (_super) {
__extends$2(BarSeriesModel2, _super)
function BarSeriesModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = BarSeriesModel2.type
return _this
}
BarSeriesModel2.prototype.getInitialData = function () {
return createSeriesData(null, this, {
useEncodeDefaulter: true,
createInvertedIndices: !!this.get('realtimeSort', true) || null,
})
}
BarSeriesModel2.prototype.getProgressive = function () {
return this.get('large') ? this.get('progressive') : false
}
BarSeriesModel2.prototype.getProgressiveThreshold = function () {
var progressiveThreshold = this.get('progressiveThreshold')
var largeThreshold = this.get('largeThreshold')
if (largeThreshold > progressiveThreshold) {
progressiveThreshold = largeThreshold
}
return progressiveThreshold
}
BarSeriesModel2.prototype.brushSelector = function (
dataIndex,
data2,
selectors
) {
return selectors.rect(data2.getItemLayout(dataIndex))
}
BarSeriesModel2.type = 'series.bar'
BarSeriesModel2.dependencies = ['grid', 'polar']
BarSeriesModel2.defaultOption = inheritDefaultOption(
BaseBarSeriesModel$1.defaultOption,
{
clip: true,
roundCap: false,
showBackground: false,
backgroundStyle: {
color: 'rgba(180, 180, 180, 0.2)',
borderColor: null,
borderWidth: 0,
borderType: 'solid',
borderRadius: 0,
shadowBlur: 0,
shadowColor: null,
shadowOffsetX: 0,
shadowOffsetY: 0,
opacity: 1,
},
select: {
itemStyle: {
borderColor: '#212121',
},
},
realtimeSort: false,
}
)
return BarSeriesModel2
})(BaseBarSeriesModel$1)
var BarSeries = BarSeriesModel
var SausageShape = (function () {
function SausageShape2() {
this.cx = 0
this.cy = 0
this.r0 = 0
this.r = 0
this.startAngle = 0
this.endAngle = Math.PI * 2
this.clockwise = true
}
return SausageShape2
})()
var SausagePath = (function (_super) {
__extends$2(SausagePath2, _super)
function SausagePath2(opts) {
var _this = _super.call(this, opts) || this
_this.type = 'sausage'
return _this
}
SausagePath2.prototype.getDefaultShape = function () {
return new SausageShape()
}
SausagePath2.prototype.buildPath = function (ctx, shape) {
var cx = shape.cx
var cy = shape.cy
var r0 = Math.max(shape.r0 || 0, 0)
var r2 = Math.max(shape.r, 0)
var dr = (r2 - r0) * 0.5
var rCenter = r0 + dr
var startAngle = shape.startAngle
var endAngle = shape.endAngle
var clockwise = shape.clockwise
var PI22 = Math.PI * 2
var lessThanCircle = clockwise
? endAngle - startAngle < PI22
: startAngle - endAngle < PI22
if (!lessThanCircle) {
startAngle = endAngle - (clockwise ? PI22 : -PI22)
}
var unitStartX = Math.cos(startAngle)
var unitStartY = Math.sin(startAngle)
var unitEndX = Math.cos(endAngle)
var unitEndY = Math.sin(endAngle)
if (lessThanCircle) {
ctx.moveTo(unitStartX * r0 + cx, unitStartY * r0 + cy)
ctx.arc(
unitStartX * rCenter + cx,
unitStartY * rCenter + cy,
dr,
-Math.PI + startAngle,
startAngle,
!clockwise
)
} else {
ctx.moveTo(unitStartX * r2 + cx, unitStartY * r2 + cy)
}
ctx.arc(cx, cy, r2, startAngle, endAngle, !clockwise)
ctx.arc(
unitEndX * rCenter + cx,
unitEndY * rCenter + cy,
dr,
endAngle - Math.PI * 2,
endAngle - Math.PI,
!clockwise
)
if (r0 !== 0) {
ctx.arc(cx, cy, r0, endAngle, startAngle, clockwise)
}
}
return SausagePath2
})(Path$1)
var Sausage = SausagePath
function createSectorCalculateTextPosition(positionMapping, opts) {
opts = opts || {}
var isRoundCap = opts.isRoundCap
return function (out2, opts2, boundingRect) {
var textPosition = opts2.position
if (!textPosition || textPosition instanceof Array) {
return calculateTextPosition(out2, opts2, boundingRect)
}
var mappedSectorPosition = positionMapping(textPosition)
var distance2 = opts2.distance != null ? opts2.distance : 5
var sector = this.shape
var cx = sector.cx
var cy = sector.cy
var r2 = sector.r
var r0 = sector.r0
var middleR = (r2 + r0) / 2
var startAngle = sector.startAngle
var endAngle = sector.endAngle
var middleAngle = (startAngle + endAngle) / 2
var extraDist = isRoundCap ? Math.abs(r2 - r0) / 2 : 0
var mathCos2 = Math.cos
var mathSin2 = Math.sin
var x2 = cx + r2 * mathCos2(startAngle)
var y2 = cy + r2 * mathSin2(startAngle)
var textAlign2 = 'left'
var textVerticalAlign = 'top'
switch (mappedSectorPosition) {
case 'startArc':
x2 = cx + (r0 - distance2) * mathCos2(middleAngle)
y2 = cy + (r0 - distance2) * mathSin2(middleAngle)
textAlign2 = 'center'
textVerticalAlign = 'top'
break
case 'insideStartArc':
x2 = cx + (r0 + distance2) * mathCos2(middleAngle)
y2 = cy + (r0 + distance2) * mathSin2(middleAngle)
textAlign2 = 'center'
textVerticalAlign = 'bottom'
break
case 'startAngle':
x2 =
cx +
middleR * mathCos2(startAngle) +
adjustAngleDistanceX(startAngle, distance2 + extraDist, false)
y2 =
cy +
middleR * mathSin2(startAngle) +
adjustAngleDistanceY(startAngle, distance2 + extraDist, false)
textAlign2 = 'right'
textVerticalAlign = 'middle'
break
case 'insideStartAngle':
x2 =
cx +
middleR * mathCos2(startAngle) +
adjustAngleDistanceX(startAngle, -distance2 + extraDist, false)
y2 =
cy +
middleR * mathSin2(startAngle) +
adjustAngleDistanceY(startAngle, -distance2 + extraDist, false)
textAlign2 = 'left'
textVerticalAlign = 'middle'
break
case 'middle':
x2 = cx + middleR * mathCos2(middleAngle)
y2 = cy + middleR * mathSin2(middleAngle)
textAlign2 = 'center'
textVerticalAlign = 'middle'
break
case 'endArc':
x2 = cx + (r2 + distance2) * mathCos2(middleAngle)
y2 = cy + (r2 + distance2) * mathSin2(middleAngle)
textAlign2 = 'center'
textVerticalAlign = 'bottom'
break
case 'insideEndArc':
x2 = cx + (r2 - distance2) * mathCos2(middleAngle)
y2 = cy + (r2 - distance2) * mathSin2(middleAngle)
textAlign2 = 'center'
textVerticalAlign = 'top'
break
case 'endAngle':
x2 =
cx +
middleR * mathCos2(endAngle) +
adjustAngleDistanceX(endAngle, distance2 + extraDist, true)
y2 =
cy +
middleR * mathSin2(endAngle) +
adjustAngleDistanceY(endAngle, distance2 + extraDist, true)
textAlign2 = 'left'
textVerticalAlign = 'middle'
break
case 'insideEndAngle':
x2 =
cx +
middleR * mathCos2(endAngle) +
adjustAngleDistanceX(endAngle, -distance2 + extraDist, true)
y2 =
cy +
middleR * mathSin2(endAngle) +
adjustAngleDistanceY(endAngle, -distance2 + extraDist, true)
textAlign2 = 'right'
textVerticalAlign = 'middle'
break
default:
return calculateTextPosition(out2, opts2, boundingRect)
}
out2 = out2 || {}
out2.x = x2
out2.y = y2
out2.align = textAlign2
out2.verticalAlign = textVerticalAlign
return out2
}
}
function setSectorTextRotation(
sector,
textPosition,
positionMapping,
rotateType
) {
if (isNumber$2(rotateType)) {
sector.setTextConfig({
rotation: rotateType,
})
return
} else if (isArray$6(textPosition)) {
sector.setTextConfig({
rotation: 0,
})
return
}
var shape = sector.shape
var startAngle = shape.clockwise ? shape.startAngle : shape.endAngle
var endAngle = shape.clockwise ? shape.endAngle : shape.startAngle
var middleAngle = (startAngle + endAngle) / 2
var anchorAngle
var mappedSectorPosition = positionMapping(textPosition)
switch (mappedSectorPosition) {
case 'startArc':
case 'insideStartArc':
case 'middle':
case 'insideEndArc':
case 'endArc':
anchorAngle = middleAngle
break
case 'startAngle':
case 'insideStartAngle':
anchorAngle = startAngle
break
case 'endAngle':
case 'insideEndAngle':
anchorAngle = endAngle
break
default:
sector.setTextConfig({
rotation: 0,
})
return
}
var rotate2 = Math.PI * 1.5 - anchorAngle
if (
mappedSectorPosition === 'middle' &&
rotate2 > Math.PI / 2 &&
rotate2 < Math.PI * 1.5
) {
rotate2 -= Math.PI
}
sector.setTextConfig({
rotation: rotate2,
})
}
function adjustAngleDistanceX(angle2, distance2, isEnd) {
return distance2 * Math.sin(angle2) * (isEnd ? -1 : 1)
}
function adjustAngleDistanceY(angle2, distance2, isEnd) {
return distance2 * Math.cos(angle2) * (isEnd ? 1 : -1)
}
function getSectorCornerRadius(model, shape, zeroIfNull) {
var cornerRadius = model.get('borderRadius')
if (cornerRadius == null) {
return zeroIfNull
? {
cornerRadius: 0,
}
: null
}
if (!isArray$6(cornerRadius)) {
cornerRadius = [cornerRadius, cornerRadius, cornerRadius, cornerRadius]
}
var dr = Math.abs(shape.r || 0 - shape.r0 || 0)
return {
cornerRadius: map$1(cornerRadius, function (cr) {
return parsePercent$1(cr, dr)
}),
}
}
var mathMax$4 = Math.max
var mathMin$4 = Math.min
function getClipArea(coord, data2) {
var coordSysClipArea = coord.getArea && coord.getArea()
if (isCoordinateSystemType(coord, 'cartesian2d')) {
var baseAxis = coord.getBaseAxis()
if (baseAxis.type !== 'category' || !baseAxis.onBand) {
var expandWidth = data2.getLayout('bandWidth')
if (baseAxis.isHorizontal()) {
coordSysClipArea.x -= expandWidth
coordSysClipArea.width += expandWidth * 2
} else {
coordSysClipArea.y -= expandWidth
coordSysClipArea.height += expandWidth * 2
}
}
}
return coordSysClipArea
}
var BarView = (function (_super) {
__extends$2(BarView2, _super)
function BarView2() {
var _this = _super.call(this) || this
_this.type = BarView2.type
_this._isFirstFrame = true
return _this
}
BarView2.prototype.render = function (seriesModel, ecModel, api, payload) {
this._model = seriesModel
this._removeOnRenderedListener(api)
this._updateDrawMode(seriesModel)
var coordinateSystemType = seriesModel.get('coordinateSystem')
if (
coordinateSystemType === 'cartesian2d' ||
coordinateSystemType === 'polar'
) {
this._progressiveEls = null
this._isLargeDraw
? this._renderLarge(seriesModel, ecModel, api)
: this._renderNormal(seriesModel, ecModel, api, payload)
}
}
BarView2.prototype.incrementalPrepareRender = function (seriesModel) {
this._clear()
this._updateDrawMode(seriesModel)
this._updateLargeClip(seriesModel)
}
BarView2.prototype.incrementalRender = function (params2, seriesModel) {
this._progressiveEls = []
this._incrementalRenderLarge(params2, seriesModel)
}
BarView2.prototype.eachRendered = function (cb) {
traverseElements(this._progressiveEls || this.group, cb)
}
BarView2.prototype._updateDrawMode = function (seriesModel) {
var isLargeDraw = seriesModel.pipelineContext.large
if (this._isLargeDraw == null || isLargeDraw !== this._isLargeDraw) {
this._isLargeDraw = isLargeDraw
this._clear()
}
}
BarView2.prototype._renderNormal = function (
seriesModel,
ecModel,
api,
payload
) {
var group = this.group
var data2 = seriesModel.getData()
var oldData = this._data
var coord = seriesModel.coordinateSystem
var baseAxis = coord.getBaseAxis()
var isHorizontalOrRadial
if (coord.type === 'cartesian2d') {
isHorizontalOrRadial = baseAxis.isHorizontal()
} else if (coord.type === 'polar') {
isHorizontalOrRadial = baseAxis.dim === 'angle'
}
var animationModel = seriesModel.isAnimationEnabled() ? seriesModel : null
var realtimeSortCfg = shouldRealtimeSort(seriesModel, coord)
if (realtimeSortCfg) {
this._enableRealtimeSort(realtimeSortCfg, data2, api)
}
var needsClip = seriesModel.get('clip', true) || realtimeSortCfg
var coordSysClipArea = getClipArea(coord, data2)
group.removeClipPath()
var roundCap = seriesModel.get('roundCap', true)
var drawBackground = seriesModel.get('showBackground', true)
var backgroundModel = seriesModel.getModel('backgroundStyle')
var barBorderRadius = backgroundModel.get('borderRadius') || 0
var bgEls = []
var oldBgEls = this._backgroundEls
var isInitSort = payload && payload.isInitSort
var isChangeOrder = payload && payload.type === 'changeAxisOrder'
function createBackground(dataIndex) {
var bgLayout = getLayout[coord.type](data2, dataIndex)
var bgEl = createBackgroundEl(coord, isHorizontalOrRadial, bgLayout)
bgEl.useStyle(backgroundModel.getItemStyle())
if (coord.type === 'cartesian2d') {
bgEl.setShape('r', barBorderRadius)
} else {
bgEl.setShape('cornerRadius', barBorderRadius)
}
bgEls[dataIndex] = bgEl
return bgEl
}
data2
.diff(oldData)
.add(function (dataIndex) {
var itemModel = data2.getItemModel(dataIndex)
var layout2 = getLayout[coord.type](data2, dataIndex, itemModel)
if (drawBackground) {
createBackground(dataIndex)
}
if (!data2.hasValue(dataIndex) || !isValidLayout[coord.type](layout2)) {
return
}
var isClipped = false
if (needsClip) {
isClipped = clip[coord.type](coordSysClipArea, layout2)
}
var el2 = elementCreator[coord.type](
seriesModel,
data2,
dataIndex,
layout2,
isHorizontalOrRadial,
animationModel,
baseAxis.model,
false,
roundCap
)
if (realtimeSortCfg) {
el2.forceLabelAnimation = true
}
updateStyle(
el2,
data2,
dataIndex,
itemModel,
layout2,
seriesModel,
isHorizontalOrRadial,
coord.type === 'polar'
)
if (isInitSort) {
el2.attr({
shape: layout2,
})
} else if (realtimeSortCfg) {
updateRealtimeAnimation(
realtimeSortCfg,
animationModel,
el2,
layout2,
dataIndex,
isHorizontalOrRadial,
false,
false
)
} else {
initProps(
el2,
{
shape: layout2,
},
seriesModel,
dataIndex
)
}
data2.setItemGraphicEl(dataIndex, el2)
group.add(el2)
el2.ignore = isClipped
})
.update(function (newIndex2, oldIndex2) {
var itemModel = data2.getItemModel(newIndex2)
var layout2 = getLayout[coord.type](data2, newIndex2, itemModel)
if (drawBackground) {
var bgEl = void 0
if (oldBgEls.length === 0) {
bgEl = createBackground(oldIndex2)
} else {
bgEl = oldBgEls[oldIndex2]
bgEl.useStyle(backgroundModel.getItemStyle())
if (coord.type === 'cartesian2d') {
bgEl.setShape('r', barBorderRadius)
} else {
bgEl.setShape('cornerRadius', barBorderRadius)
}
bgEls[newIndex2] = bgEl
}
var bgLayout = getLayout[coord.type](data2, newIndex2)
var shape = createBackgroundShape(
isHorizontalOrRadial,
bgLayout,
coord
)
updateProps$1(
bgEl,
{
shape,
},
animationModel,
newIndex2
)
}
var el2 = oldData.getItemGraphicEl(oldIndex2)
if (!data2.hasValue(newIndex2) || !isValidLayout[coord.type](layout2)) {
group.remove(el2)
return
}
var isClipped = false
if (needsClip) {
isClipped = clip[coord.type](coordSysClipArea, layout2)
if (isClipped) {
group.remove(el2)
}
}
if (!el2) {
el2 = elementCreator[coord.type](
seriesModel,
data2,
newIndex2,
layout2,
isHorizontalOrRadial,
animationModel,
baseAxis.model,
!!el2,
roundCap
)
} else {
saveOldStyle(el2)
}
if (realtimeSortCfg) {
el2.forceLabelAnimation = true
}
if (isChangeOrder) {
var textEl = el2.getTextContent()
if (textEl) {
var labelInnerStore = labelInner(textEl)
if (labelInnerStore.prevValue != null) {
labelInnerStore.prevValue = labelInnerStore.value
}
}
} else {
updateStyle(
el2,
data2,
newIndex2,
itemModel,
layout2,
seriesModel,
isHorizontalOrRadial,
coord.type === 'polar'
)
}
if (isInitSort) {
el2.attr({
shape: layout2,
})
} else if (realtimeSortCfg) {
updateRealtimeAnimation(
realtimeSortCfg,
animationModel,
el2,
layout2,
newIndex2,
isHorizontalOrRadial,
true,
isChangeOrder
)
} else {
updateProps$1(
el2,
{
shape: layout2,
},
seriesModel,
newIndex2,
null
)
}
data2.setItemGraphicEl(newIndex2, el2)
el2.ignore = isClipped
group.add(el2)
})
.remove(function (dataIndex) {
var el2 = oldData.getItemGraphicEl(dataIndex)
el2 && removeElementWithFadeOut(el2, seriesModel, dataIndex)
})
.execute()
var bgGroup =
this._backgroundGroup || (this._backgroundGroup = new Group$5())
bgGroup.removeAll()
for (var i2 = 0; i2 < bgEls.length; ++i2) {
bgGroup.add(bgEls[i2])
}
group.add(bgGroup)
this._backgroundEls = bgEls
this._data = data2
}
BarView2.prototype._renderLarge = function (seriesModel, ecModel, api) {
this._clear()
createLarge$1(seriesModel, this.group)
this._updateLargeClip(seriesModel)
}
BarView2.prototype._incrementalRenderLarge = function (params2, seriesModel) {
this._removeBackground()
createLarge$1(seriesModel, this.group, this._progressiveEls, true)
}
BarView2.prototype._updateLargeClip = function (seriesModel) {
var clipPath =
seriesModel.get('clip', true) &&
createClipPath(seriesModel.coordinateSystem, false, seriesModel)
var group = this.group
if (clipPath) {
group.setClipPath(clipPath)
} else {
group.removeClipPath()
}
}
BarView2.prototype._enableRealtimeSort = function (
realtimeSortCfg,
data2,
api
) {
var _this = this
if (!data2.count()) {
return
}
var baseAxis = realtimeSortCfg.baseAxis
if (this._isFirstFrame) {
this._dispatchInitSort(data2, realtimeSortCfg, api)
this._isFirstFrame = false
} else {
var orderMapping_1 = function (idx) {
var el2 = data2.getItemGraphicEl(idx)
var shape = el2 && el2.shape
return (
(shape &&
Math.abs(baseAxis.isHorizontal() ? shape.height : shape.width)) ||
0
)
}
this._onRendered = function () {
_this._updateSortWithinSameData(data2, orderMapping_1, baseAxis, api)
}
api.getZr().on('rendered', this._onRendered)
}
}
BarView2.prototype._dataSort = function (data2, baseAxis, orderMapping) {
var info = []
data2.each(
data2.mapDimension(baseAxis.dim),
function (ordinalNumber, dataIdx) {
var mappedValue = orderMapping(dataIdx)
mappedValue = mappedValue == null ? NaN : mappedValue
info.push({
dataIndex: dataIdx,
mappedValue,
ordinalNumber,
})
}
)
info.sort(function (a2, b2) {
return b2.mappedValue - a2.mappedValue
})
return {
ordinalNumbers: map$1(info, function (item2) {
return item2.ordinalNumber
}),
}
}
BarView2.prototype._isOrderChangedWithinSameData = function (
data2,
orderMapping,
baseAxis
) {
var scale2 = baseAxis.scale
var ordinalDataDim = data2.mapDimension(baseAxis.dim)
var lastValue = Number.MAX_VALUE
for (
var tickNum = 0, len2 = scale2.getOrdinalMeta().categories.length;
tickNum < len2;
++tickNum
) {
var rawIdx = data2.rawIndexOf(
ordinalDataDim,
scale2.getRawOrdinalNumber(tickNum)
)
var value2 =
rawIdx < 0
? Number.MIN_VALUE
: orderMapping(data2.indexOfRawIndex(rawIdx))
if (value2 > lastValue) {
return true
}
lastValue = value2
}
return false
}
BarView2.prototype._isOrderDifferentInView = function (orderInfo, baseAxis) {
var scale2 = baseAxis.scale
var extent3 = scale2.getExtent()
var tickNum = Math.max(0, extent3[0])
var tickMax = Math.min(
extent3[1],
scale2.getOrdinalMeta().categories.length - 1
)
for (; tickNum <= tickMax; ++tickNum) {
if (
orderInfo.ordinalNumbers[tickNum] !==
scale2.getRawOrdinalNumber(tickNum)
) {
return true
}
}
}
BarView2.prototype._updateSortWithinSameData = function (
data2,
orderMapping,
baseAxis,
api
) {
if (!this._isOrderChangedWithinSameData(data2, orderMapping, baseAxis)) {
return
}
var sortInfo = this._dataSort(data2, baseAxis, orderMapping)
if (this._isOrderDifferentInView(sortInfo, baseAxis)) {
this._removeOnRenderedListener(api)
api.dispatchAction({
type: 'changeAxisOrder',
componentType: baseAxis.dim + 'Axis',
axisId: baseAxis.index,
sortInfo,
})
}
}
BarView2.prototype._dispatchInitSort = function (
data2,
realtimeSortCfg,
api
) {
var baseAxis = realtimeSortCfg.baseAxis
var sortResult = this._dataSort(data2, baseAxis, function (dataIdx) {
return data2.get(
data2.mapDimension(realtimeSortCfg.otherAxis.dim),
dataIdx
)
})
api.dispatchAction({
type: 'changeAxisOrder',
componentType: baseAxis.dim + 'Axis',
isInitSort: true,
axisId: baseAxis.index,
sortInfo: sortResult,
})
}
BarView2.prototype.remove = function (ecModel, api) {
this._clear(this._model)
this._removeOnRenderedListener(api)
}
BarView2.prototype.dispose = function (ecModel, api) {
this._removeOnRenderedListener(api)
}
BarView2.prototype._removeOnRenderedListener = function (api) {
if (this._onRendered) {
api.getZr().off('rendered', this._onRendered)
this._onRendered = null
}
}
BarView2.prototype._clear = function (model) {
var group = this.group
var data2 = this._data
if (model && model.isAnimationEnabled() && data2 && !this._isLargeDraw) {
this._removeBackground()
this._backgroundEls = []
data2.eachItemGraphicEl(function (el2) {
removeElementWithFadeOut(el2, model, getECData(el2).dataIndex)
})
} else {
group.removeAll()
}
this._data = null
this._isFirstFrame = true
}
BarView2.prototype._removeBackground = function () {
this.group.remove(this._backgroundGroup)
this._backgroundGroup = null
}
BarView2.type = 'bar'
return BarView2
})(ChartView$1)
var clip = {
cartesian2d: function (coordSysBoundingRect, layout2) {
var signWidth = layout2.width < 0 ? -1 : 1
var signHeight = layout2.height < 0 ? -1 : 1
if (signWidth < 0) {
layout2.x += layout2.width
layout2.width = -layout2.width
}
if (signHeight < 0) {
layout2.y += layout2.height
layout2.height = -layout2.height
}
var coordSysX2 = coordSysBoundingRect.x + coordSysBoundingRect.width
var coordSysY2 = coordSysBoundingRect.y + coordSysBoundingRect.height
var x2 = mathMax$4(layout2.x, coordSysBoundingRect.x)
var x22 = mathMin$4(layout2.x + layout2.width, coordSysX2)
var y2 = mathMax$4(layout2.y, coordSysBoundingRect.y)
var y22 = mathMin$4(layout2.y + layout2.height, coordSysY2)
var xClipped = x22 < x2
var yClipped = y22 < y2
layout2.x = xClipped && x2 > coordSysX2 ? x22 : x2
layout2.y = yClipped && y2 > coordSysY2 ? y22 : y2
layout2.width = xClipped ? 0 : x22 - x2
layout2.height = yClipped ? 0 : y22 - y2
if (signWidth < 0) {
layout2.x += layout2.width
layout2.width = -layout2.width
}
if (signHeight < 0) {
layout2.y += layout2.height
layout2.height = -layout2.height
}
return xClipped || yClipped
},
polar: function (coordSysClipArea, layout2) {
var signR = layout2.r0 <= layout2.r ? 1 : -1
if (signR < 0) {
var tmp = layout2.r
layout2.r = layout2.r0
layout2.r0 = tmp
}
var r2 = mathMin$4(layout2.r, coordSysClipArea.r)
var r0 = mathMax$4(layout2.r0, coordSysClipArea.r0)
layout2.r = r2
layout2.r0 = r0
var clipped = r2 - r0 < 0
if (signR < 0) {
var tmp = layout2.r
layout2.r = layout2.r0
layout2.r0 = tmp
}
return clipped
},
}
var elementCreator = {
cartesian2d: function (
seriesModel,
data2,
newIndex2,
layout2,
isHorizontal2,
animationModel,
axisModel,
isUpdate,
roundCap
) {
var rect = new Rect$4({
shape: extend({}, layout2),
z2: 1,
})
rect.__dataIndex = newIndex2
rect.name = 'item'
if (animationModel) {
var rectShape = rect.shape
var animateProperty = isHorizontal2 ? 'height' : 'width'
rectShape[animateProperty] = 0
}
return rect
},
polar: function (
seriesModel,
data2,
newIndex2,
layout2,
isRadial,
animationModel,
axisModel,
isUpdate,
roundCap
) {
var ShapeClass = !isRadial && roundCap ? Sausage : Sector$1
var sector = new ShapeClass({
shape: layout2,
z2: 1,
})
sector.name = 'item'
var positionMap = createPolarPositionMapping(isRadial)
sector.calculateTextPosition = createSectorCalculateTextPosition(
positionMap,
{
isRoundCap: ShapeClass === Sausage,
}
)
if (animationModel) {
var sectorShape = sector.shape
var animateProperty = isRadial ? 'r' : 'endAngle'
var animateTarget = {}
sectorShape[animateProperty] = isRadial ? layout2.r0 : layout2.startAngle
animateTarget[animateProperty] = layout2[animateProperty]
;(isUpdate ? updateProps$1 : initProps)(
sector,
{
shape: animateTarget,
},
animationModel
)
}
return sector
},
}
function shouldRealtimeSort(seriesModel, coordSys) {
var realtimeSortOption = seriesModel.get('realtimeSort', true)
var baseAxis = coordSys.getBaseAxis()
if (
realtimeSortOption &&
baseAxis.type === 'category' &&
coordSys.type === 'cartesian2d'
) {
return {
baseAxis,
otherAxis: coordSys.getOtherAxis(baseAxis),
}
}
}
function updateRealtimeAnimation(
realtimeSortCfg,
seriesAnimationModel,
el2,
layout2,
newIndex2,
isHorizontal2,
isUpdate,
isChangeOrder
) {
var seriesTarget
var axisTarget
if (isHorizontal2) {
axisTarget = {
x: layout2.x,
width: layout2.width,
}
seriesTarget = {
y: layout2.y,
height: layout2.height,
}
} else {
axisTarget = {
y: layout2.y,
height: layout2.height,
}
seriesTarget = {
x: layout2.x,
width: layout2.width,
}
}
if (!isChangeOrder) {
;(isUpdate ? updateProps$1 : initProps)(
el2,
{
shape: seriesTarget,
},
seriesAnimationModel,
newIndex2,
null
)
}
var axisAnimationModel = seriesAnimationModel
? realtimeSortCfg.baseAxis.model
: null
;(isUpdate ? updateProps$1 : initProps)(
el2,
{
shape: axisTarget,
},
axisAnimationModel,
newIndex2
)
}
function checkPropertiesNotValid(obj, props2) {
for (var i2 = 0; i2 < props2.length; i2++) {
if (!isFinite(obj[props2[i2]])) {
return true
}
}
return false
}
var rectPropties = ['x', 'y', 'width', 'height']
var polarPropties = ['cx', 'cy', 'r', 'startAngle', 'endAngle']
var isValidLayout = {
cartesian2d: function (layout2) {
return !checkPropertiesNotValid(layout2, rectPropties)
},
polar: function (layout2) {
return !checkPropertiesNotValid(layout2, polarPropties)
},
}
var getLayout = {
cartesian2d: function (data2, dataIndex, itemModel) {
var layout2 = data2.getItemLayout(dataIndex)
var fixedLineWidth = itemModel ? getLineWidth(itemModel, layout2) : 0
var signX = layout2.width > 0 ? 1 : -1
var signY = layout2.height > 0 ? 1 : -1
return {
x: layout2.x + (signX * fixedLineWidth) / 2,
y: layout2.y + (signY * fixedLineWidth) / 2,
width: layout2.width - signX * fixedLineWidth,
height: layout2.height - signY * fixedLineWidth,
}
},
polar: function (data2, dataIndex, itemModel) {
var layout2 = data2.getItemLayout(dataIndex)
return {
cx: layout2.cx,
cy: layout2.cy,
r0: layout2.r0,
r: layout2.r,
startAngle: layout2.startAngle,
endAngle: layout2.endAngle,
clockwise: layout2.clockwise,
}
},
}
function isZeroOnPolar(layout2) {
return (
layout2.startAngle != null &&
layout2.endAngle != null &&
layout2.startAngle === layout2.endAngle
)
}
function createPolarPositionMapping(isRadial) {
return (function (isRadial2) {
var arcOrAngle = isRadial2 ? 'Arc' : 'Angle'
return function (position2) {
switch (position2) {
case 'start':
case 'insideStart':
case 'end':
case 'insideEnd':
return position2 + arcOrAngle
default:
return position2
}
}
})(isRadial)
}
function updateStyle(
el2,
data2,
dataIndex,
itemModel,
layout2,
seriesModel,
isHorizontalOrRadial,
isPolar
) {
var style2 = data2.getItemVisual(dataIndex, 'style')
if (!isPolar) {
var borderRadius = itemModel.get(['itemStyle', 'borderRadius']) || 0
el2.setShape('r', borderRadius)
} else if (!seriesModel.get('roundCap')) {
var sectorShape = el2.shape
var cornerRadius = getSectorCornerRadius(
itemModel.getModel('itemStyle'),
sectorShape,
true
)
extend(sectorShape, cornerRadius)
el2.setShape(sectorShape)
}
el2.useStyle(style2)
var cursorStyle = itemModel.getShallow('cursor')
cursorStyle && el2.attr('cursor', cursorStyle)
var labelPositionOutside = isPolar
? isHorizontalOrRadial
? layout2.r >= layout2.r0
? 'endArc'
: 'startArc'
: layout2.endAngle >= layout2.startAngle
? 'endAngle'
: 'startAngle'
: isHorizontalOrRadial
? layout2.height >= 0
? 'bottom'
: 'top'
: layout2.width >= 0
? 'right'
: 'left'
var labelStatesModels = getLabelStatesModels(itemModel)
setLabelStyle(el2, labelStatesModels, {
labelFetcher: seriesModel,
labelDataIndex: dataIndex,
defaultText: getDefaultLabel(seriesModel.getData(), dataIndex),
inheritColor: style2.fill,
defaultOpacity: style2.opacity,
defaultOutsidePosition: labelPositionOutside,
})
var label = el2.getTextContent()
if (isPolar && label) {
var position2 = itemModel.get(['label', 'position'])
el2.textConfig.inside = position2 === 'middle' ? true : null
setSectorTextRotation(
el2,
position2 === 'outside' ? labelPositionOutside : position2,
createPolarPositionMapping(isHorizontalOrRadial),
itemModel.get(['label', 'rotate'])
)
}
setLabelValueAnimation(
label,
labelStatesModels,
seriesModel.getRawValue(dataIndex),
function (value2) {
return getDefaultInterpolatedLabel(data2, value2)
}
)
var emphasisModel = itemModel.getModel(['emphasis'])
toggleHoverEmphasis(
el2,
emphasisModel.get('focus'),
emphasisModel.get('blurScope'),
emphasisModel.get('disabled')
)
setStatesStylesFromModel(el2, itemModel)
if (isZeroOnPolar(layout2)) {
el2.style.fill = 'none'
el2.style.stroke = 'none'
each$f(el2.states, function (state2) {
if (state2.style) {
state2.style.fill = state2.style.stroke = 'none'
}
})
}
}
function getLineWidth(itemModel, rawLayout) {
var borderColor = itemModel.get(['itemStyle', 'borderColor'])
if (!borderColor || borderColor === 'none') {
return 0
}
var lineWidth = itemModel.get(['itemStyle', 'borderWidth']) || 0
var width = isNaN(rawLayout.width)
? Number.MAX_VALUE
: Math.abs(rawLayout.width)
var height = isNaN(rawLayout.height)
? Number.MAX_VALUE
: Math.abs(rawLayout.height)
return Math.min(lineWidth, width, height)
}
var LagePathShape = (function () {
function LagePathShape2() {}
return LagePathShape2
})()
var LargePath = (function (_super) {
__extends$2(LargePath2, _super)
function LargePath2(opts) {
var _this = _super.call(this, opts) || this
_this.type = 'largeBar'
return _this
}
LargePath2.prototype.getDefaultShape = function () {
return new LagePathShape()
}
LargePath2.prototype.buildPath = function (ctx, shape) {
var points2 = shape.points
var baseDimIdx = this.baseDimIdx
var valueDimIdx = 1 - this.baseDimIdx
var startPoint = []
var size = []
var barWidth = this.barWidth
for (var i2 = 0; i2 < points2.length; i2 += 3) {
size[baseDimIdx] = barWidth
size[valueDimIdx] = points2[i2 + 2]
startPoint[baseDimIdx] = points2[i2 + baseDimIdx]
startPoint[valueDimIdx] = points2[i2 + valueDimIdx]
ctx.rect(startPoint[0], startPoint[1], size[0], size[1])
}
}
return LargePath2
})(Path$1)
function createLarge$1(seriesModel, group, progressiveEls, incremental) {
var data2 = seriesModel.getData()
var baseDimIdx = data2.getLayout('valueAxisHorizontal') ? 1 : 0
var largeDataIndices = data2.getLayout('largeDataIndices')
var barWidth = data2.getLayout('size')
var backgroundModel = seriesModel.getModel('backgroundStyle')
var bgPoints = data2.getLayout('largeBackgroundPoints')
if (bgPoints) {
var bgEl = new LargePath({
shape: {
points: bgPoints,
},
incremental: !!incremental,
silent: true,
z2: 0,
})
bgEl.baseDimIdx = baseDimIdx
bgEl.largeDataIndices = largeDataIndices
bgEl.barWidth = barWidth
bgEl.useStyle(backgroundModel.getItemStyle())
group.add(bgEl)
progressiveEls && progressiveEls.push(bgEl)
}
var el2 = new LargePath({
shape: {
points: data2.getLayout('largePoints'),
},
incremental: !!incremental,
ignoreCoarsePointer: true,
z2: 1,
})
el2.baseDimIdx = baseDimIdx
el2.largeDataIndices = largeDataIndices
el2.barWidth = barWidth
group.add(el2)
el2.useStyle(data2.getVisual('style'))
getECData(el2).seriesIndex = seriesModel.seriesIndex
if (!seriesModel.get('silent')) {
el2.on('mousedown', largePathUpdateDataIndex)
el2.on('mousemove', largePathUpdateDataIndex)
}
progressiveEls && progressiveEls.push(el2)
}
var largePathUpdateDataIndex = throttle(
function (event) {
var largePath = this
var dataIndex = largePathFindDataIndex(
largePath,
event.offsetX,
event.offsetY
)
getECData(largePath).dataIndex = dataIndex >= 0 ? dataIndex : null
},
30,
false
)
function largePathFindDataIndex(largePath, x2, y2) {
var baseDimIdx = largePath.baseDimIdx
var valueDimIdx = 1 - baseDimIdx
var points2 = largePath.shape.points
var largeDataIndices = largePath.largeDataIndices
var startPoint = []
var size = []
var barWidth = largePath.barWidth
for (var i2 = 0, len2 = points2.length / 3; i2 < len2; i2++) {
var ii = i2 * 3
size[baseDimIdx] = barWidth
size[valueDimIdx] = points2[ii + 2]
startPoint[baseDimIdx] = points2[ii + baseDimIdx]
startPoint[valueDimIdx] = points2[ii + valueDimIdx]
if (size[valueDimIdx] < 0) {
startPoint[valueDimIdx] += size[valueDimIdx]
size[valueDimIdx] = -size[valueDimIdx]
}
if (
x2 >= startPoint[0] &&
x2 <= startPoint[0] + size[0] &&
y2 >= startPoint[1] &&
y2 <= startPoint[1] + size[1]
) {
return largeDataIndices[i2]
}
}
return -1
}
function createBackgroundShape(isHorizontalOrRadial, layout2, coord) {
if (isCoordinateSystemType(coord, 'cartesian2d')) {
var rectShape = layout2
var coordLayout = coord.getArea()
return {
x: isHorizontalOrRadial ? rectShape.x : coordLayout.x,
y: isHorizontalOrRadial ? coordLayout.y : rectShape.y,
width: isHorizontalOrRadial ? rectShape.width : coordLayout.width,
height: isHorizontalOrRadial ? coordLayout.height : rectShape.height,
}
} else {
var coordLayout = coord.getArea()
var sectorShape = layout2
return {
cx: coordLayout.cx,
cy: coordLayout.cy,
r0: isHorizontalOrRadial ? coordLayout.r0 : sectorShape.r0,
r: isHorizontalOrRadial ? coordLayout.r : sectorShape.r,
startAngle: isHorizontalOrRadial ? sectorShape.startAngle : 0,
endAngle: isHorizontalOrRadial ? sectorShape.endAngle : Math.PI * 2,
}
}
}
function createBackgroundEl(coord, isHorizontalOrRadial, layout2) {
var ElementClz = coord.type === 'polar' ? Sector$1 : Rect$4
return new ElementClz({
shape: createBackgroundShape(isHorizontalOrRadial, layout2, coord),
silent: true,
z2: 0,
})
}
var BarView$1 = BarView
function install$R(registers) {
registers.registerChartView(BarView$1)
registers.registerSeriesModel(BarSeries)
registers.registerLayout(
registers.PRIORITY.VISUAL.LAYOUT,
curry$1(layout$3, 'bar')
)
registers.registerLayout(
registers.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT,
createProgressiveLayout('bar')
)
registers.registerProcessor(
registers.PRIORITY.PROCESSOR.STATISTIC,
dataSample('bar')
)
registers.registerAction(
{
type: 'changeAxisOrder',
event: 'changeAxisOrder',
update: 'update',
},
function (payload, ecModel) {
var componentType = payload.componentType || 'series'
ecModel.eachComponent(
{
mainType: componentType,
query: payload,
},
function (componentModel) {
if (payload.sortInfo) {
componentModel.axis.setCategorySortInfo(payload.sortInfo)
}
}
)
}
)
}
var PI2$1 = Math.PI * 2
var RADIAN$2 = Math.PI / 180
function getViewRect$5(seriesModel, api) {
return getLayoutRect(seriesModel.getBoxLayoutParams(), {
width: api.getWidth(),
height: api.getHeight(),
})
}
function getBasicPieLayout(seriesModel, api) {
var viewRect2 = getViewRect$5(seriesModel, api)
var center2 = seriesModel.get('center')
var radius = seriesModel.get('radius')
if (!isArray$6(radius)) {
radius = [0, radius]
}
var width = parsePercent(viewRect2.width, api.getWidth())
var height = parsePercent(viewRect2.height, api.getHeight())
var size = Math.min(width, height)
var r0 = parsePercent(radius[0], size / 2)
var r2 = parsePercent(radius[1], size / 2)
var cx
var cy
var coordSys = seriesModel.coordinateSystem
if (coordSys) {
var point = coordSys.dataToPoint(center2)
cx = point[0] || 0
cy = point[1] || 0
} else {
if (!isArray$6(center2)) {
center2 = [center2, center2]
}
cx = parsePercent(center2[0], width) + viewRect2.x
cy = parsePercent(center2[1], height) + viewRect2.y
}
return {
cx,
cy,
r0,
r: r2,
}
}
function pieLayout(seriesType2, ecModel, api) {
ecModel.eachSeriesByType(seriesType2, function (seriesModel) {
var data2 = seriesModel.getData()
var valueDim = data2.mapDimension('value')
var viewRect2 = getViewRect$5(seriesModel, api)
var _a2 = getBasicPieLayout(seriesModel, api),
cx = _a2.cx,
cy = _a2.cy,
r2 = _a2.r,
r0 = _a2.r0
var startAngle = -seriesModel.get('startAngle') * RADIAN$2
var minAngle = seriesModel.get('minAngle') * RADIAN$2
var validDataCount = 0
data2.each(valueDim, function (value2) {
!isNaN(value2) && validDataCount++
})
var sum2 = data2.getSum(valueDim)
var unitRadian = (Math.PI / (sum2 || validDataCount)) * 2
var clockwise = seriesModel.get('clockwise')
var roseType = seriesModel.get('roseType')
var stillShowZeroSum = seriesModel.get('stillShowZeroSum')
var extent3 = data2.getDataExtent(valueDim)
extent3[0] = 0
var restAngle = PI2$1
var valueSumLargerThanMinAngle = 0
var currentAngle = startAngle
var dir3 = clockwise ? 1 : -1
data2.setLayout({
viewRect: viewRect2,
r: r2,
})
data2.each(valueDim, function (value2, idx) {
var angle2
if (isNaN(value2)) {
data2.setItemLayout(idx, {
angle: NaN,
startAngle: NaN,
endAngle: NaN,
clockwise,
cx,
cy,
r0,
r: roseType ? NaN : r2,
})
return
}
if (roseType !== 'area') {
angle2 =
sum2 === 0 && stillShowZeroSum ? unitRadian : value2 * unitRadian
} else {
angle2 = PI2$1 / validDataCount
}
if (angle2 < minAngle) {
angle2 = minAngle
restAngle -= minAngle
} else {
valueSumLargerThanMinAngle += value2
}
var endAngle = currentAngle + dir3 * angle2
data2.setItemLayout(idx, {
angle: angle2,
startAngle: currentAngle,
endAngle,
clockwise,
cx,
cy,
r0,
r: roseType ? linearMap$2(value2, extent3, [r0, r2]) : r2,
})
currentAngle = endAngle
})
if (restAngle < PI2$1 && validDataCount) {
if (restAngle <= 1e-3) {
var angle_1 = PI2$1 / validDataCount
data2.each(valueDim, function (value2, idx) {
if (!isNaN(value2)) {
var layout_1 = data2.getItemLayout(idx)
layout_1.angle = angle_1
layout_1.startAngle = startAngle + dir3 * idx * angle_1
layout_1.endAngle = startAngle + dir3 * (idx + 1) * angle_1
}
})
} else {
unitRadian = restAngle / valueSumLargerThanMinAngle
currentAngle = startAngle
data2.each(valueDim, function (value2, idx) {
if (!isNaN(value2)) {
var layout_2 = data2.getItemLayout(idx)
var angle2 =
layout_2.angle === minAngle ? minAngle : value2 * unitRadian
layout_2.startAngle = currentAngle
layout_2.endAngle = currentAngle + dir3 * angle2
currentAngle += dir3 * angle2
}
})
}
}
})
}
function dataFilter$1(seriesType2) {
return {
seriesType: seriesType2,
reset: function (seriesModel, ecModel) {
var legendModels = ecModel.findComponents({
mainType: 'legend',
})
if (!legendModels || !legendModels.length) {
return
}
var data2 = seriesModel.getData()
data2.filterSelf(function (idx) {
var name2 = data2.getName(idx)
for (var i2 = 0; i2 < legendModels.length; i2++) {
if (!legendModels[i2].isSelected(name2)) {
return false
}
}
return true
})
},
}
}
var RADIAN$1 = Math.PI / 180
function adjustSingleSide(
list2,
cx,
cy,
r2,
dir3,
viewWidth,
viewHeight,
viewLeft,
viewTop,
farthestX
) {
if (list2.length < 2) {
return
}
function recalculateXOnSemiToAlignOnEllipseCurve(semi) {
var rB = semi.rB
var rB2 = rB * rB
for (var i3 = 0; i3 < semi.list.length; i3++) {
var item2 = semi.list[i3]
var dy = Math.abs(item2.label.y - cy)
var rA = r2 + item2.len
var rA2 = rA * rA
var dx2 = Math.sqrt((1 - Math.abs((dy * dy) / rB2)) * rA2)
var newX = cx + (dx2 + item2.len2) * dir3
var deltaX = newX - item2.label.x
var newTargetWidth = item2.targetTextWidth - deltaX * dir3
constrainTextWidth(item2, newTargetWidth, true)
item2.label.x = newX
}
}
function recalculateX(items) {
var topSemi = {
list: [],
maxY: 0,
}
var bottomSemi = {
list: [],
maxY: 0,
}
for (var i3 = 0; i3 < items.length; i3++) {
if (items[i3].labelAlignTo !== 'none') {
continue
}
var item2 = items[i3]
var semi = item2.label.y > cy ? bottomSemi : topSemi
var dy = Math.abs(item2.label.y - cy)
if (dy >= semi.maxY) {
var dx2 = item2.label.x - cx - item2.len2 * dir3
var rA = r2 + item2.len
var rB =
Math.abs(dx2) < rA
? Math.sqrt((dy * dy) / (1 - (dx2 * dx2) / rA / rA))
: rA
semi.rB = rB
semi.maxY = dy
}
semi.list.push(item2)
}
recalculateXOnSemiToAlignOnEllipseCurve(topSemi)
recalculateXOnSemiToAlignOnEllipseCurve(bottomSemi)
}
var len2 = list2.length
for (var i2 = 0; i2 < len2; i2++) {
if (
list2[i2].position === 'outer' &&
list2[i2].labelAlignTo === 'labelLine'
) {
var dx = list2[i2].label.x - farthestX
list2[i2].linePoints[1][0] += dx
list2[i2].label.x = farthestX
}
}
if (shiftLayoutOnY(list2, viewTop, viewTop + viewHeight)) {
recalculateX(list2)
}
}
function avoidOverlap(
labelLayoutList,
cx,
cy,
r2,
viewWidth,
viewHeight,
viewLeft,
viewTop
) {
var leftList = []
var rightList = []
var leftmostX = Number.MAX_VALUE
var rightmostX = -Number.MAX_VALUE
for (var i2 = 0; i2 < labelLayoutList.length; i2++) {
var label = labelLayoutList[i2].label
if (isPositionCenter(labelLayoutList[i2])) {
continue
}
if (label.x < cx) {
leftmostX = Math.min(leftmostX, label.x)
leftList.push(labelLayoutList[i2])
} else {
rightmostX = Math.max(rightmostX, label.x)
rightList.push(labelLayoutList[i2])
}
}
for (var i2 = 0; i2 < labelLayoutList.length; i2++) {
var layout2 = labelLayoutList[i2]
if (!isPositionCenter(layout2) && layout2.linePoints) {
if (layout2.labelStyleWidth != null) {
continue
}
var label = layout2.label
var linePoints = layout2.linePoints
var targetTextWidth = void 0
if (layout2.labelAlignTo === 'edge') {
if (label.x < cx) {
targetTextWidth =
linePoints[2][0] -
layout2.labelDistance -
viewLeft -
layout2.edgeDistance
} else {
targetTextWidth =
viewLeft +
viewWidth -
layout2.edgeDistance -
linePoints[2][0] -
layout2.labelDistance
}
} else if (layout2.labelAlignTo === 'labelLine') {
if (label.x < cx) {
targetTextWidth = leftmostX - viewLeft - layout2.bleedMargin
} else {
targetTextWidth =
viewLeft + viewWidth - rightmostX - layout2.bleedMargin
}
} else {
if (label.x < cx) {
targetTextWidth = label.x - viewLeft - layout2.bleedMargin
} else {
targetTextWidth = viewLeft + viewWidth - label.x - layout2.bleedMargin
}
}
layout2.targetTextWidth = targetTextWidth
constrainTextWidth(layout2, targetTextWidth)
}
}
adjustSingleSide(
rightList,
cx,
cy,
r2,
1,
viewWidth,
viewHeight,
viewLeft,
viewTop,
rightmostX
)
adjustSingleSide(
leftList,
cx,
cy,
r2,
-1,
viewWidth,
viewHeight,
viewLeft,
viewTop,
leftmostX
)
for (var i2 = 0; i2 < labelLayoutList.length; i2++) {
var layout2 = labelLayoutList[i2]
if (!isPositionCenter(layout2) && layout2.linePoints) {
var label = layout2.label
var linePoints = layout2.linePoints
var isAlignToEdge = layout2.labelAlignTo === 'edge'
var padding = label.style.padding
var paddingH = padding ? padding[1] + padding[3] : 0
var extraPaddingH = label.style.backgroundColor ? 0 : paddingH
var realTextWidth = layout2.rect.width + extraPaddingH
var dist2 = linePoints[1][0] - linePoints[2][0]
if (isAlignToEdge) {
if (label.x < cx) {
linePoints[2][0] =
viewLeft +
layout2.edgeDistance +
realTextWidth +
layout2.labelDistance
} else {
linePoints[2][0] =
viewLeft +
viewWidth -
layout2.edgeDistance -
realTextWidth -
layout2.labelDistance
}
} else {
if (label.x < cx) {
linePoints[2][0] = label.x + layout2.labelDistance
} else {
linePoints[2][0] = label.x - layout2.labelDistance
}
linePoints[1][0] = linePoints[2][0] + dist2
}
linePoints[1][1] = linePoints[2][1] = label.y
}
}
}
function constrainTextWidth(layout2, availableWidth, forceRecalculate) {
if (forceRecalculate === void 0) {
forceRecalculate = false
}
if (layout2.labelStyleWidth != null) {
return
}
var label = layout2.label
var style2 = label.style
var textRect = layout2.rect
var bgColor = style2.backgroundColor
var padding = style2.padding
var paddingH = padding ? padding[1] + padding[3] : 0
var overflow2 = style2.overflow
var oldOuterWidth = textRect.width + (bgColor ? 0 : paddingH)
if (availableWidth < oldOuterWidth || forceRecalculate) {
var oldHeight = textRect.height
if (overflow2 && overflow2.match('break')) {
label.setStyle('backgroundColor', null)
label.setStyle('width', availableWidth - paddingH)
var innerRect = label.getBoundingRect()
label.setStyle('width', Math.ceil(innerRect.width))
label.setStyle('backgroundColor', bgColor)
} else {
var availableInnerWidth = availableWidth - paddingH
var newWidth =
availableWidth < oldOuterWidth
? availableInnerWidth
: forceRecalculate
? availableInnerWidth > layout2.unconstrainedWidth
? null
: availableInnerWidth
: null
label.setStyle('width', newWidth)
}
var newRect = label.getBoundingRect()
textRect.width = newRect.width
var margin = (label.style.margin || 0) + 2.1
textRect.height = newRect.height + margin
textRect.y -= (textRect.height - oldHeight) / 2
}
}
function isPositionCenter(sectorShape) {
return sectorShape.position === 'center'
}
function pieLabelLayout(seriesModel) {
var data2 = seriesModel.getData()
var labelLayoutList = []
var cx
var cy
var hasLabelRotate = false
var minShowLabelRadian =
(seriesModel.get('minShowLabelAngle') || 0) * RADIAN$1
var viewRect2 = data2.getLayout('viewRect')
var r2 = data2.getLayout('r')
var viewWidth = viewRect2.width
var viewLeft = viewRect2.x
var viewTop = viewRect2.y
var viewHeight = viewRect2.height
function setNotShow(el2) {
el2.ignore = true
}
function isLabelShown(label2) {
if (!label2.ignore) {
return true
}
for (var key2 in label2.states) {
if (label2.states[key2].ignore === false) {
return true
}
}
return false
}
data2.each(function (idx) {
var sector = data2.getItemGraphicEl(idx)
var sectorShape = sector.shape
var label2 = sector.getTextContent()
var labelLine2 = sector.getTextGuideLine()
var itemModel = data2.getItemModel(idx)
var labelModel = itemModel.getModel('label')
var labelPosition =
labelModel.get('position') ||
itemModel.get(['emphasis', 'label', 'position'])
var labelDistance = labelModel.get('distanceToLabelLine')
var labelAlignTo = labelModel.get('alignTo')
var edgeDistance = parsePercent(labelModel.get('edgeDistance'), viewWidth)
var bleedMargin = labelModel.get('bleedMargin')
var labelLineModel = itemModel.getModel('labelLine')
var labelLineLen = labelLineModel.get('length')
labelLineLen = parsePercent(labelLineLen, viewWidth)
var labelLineLen2 = labelLineModel.get('length2')
labelLineLen2 = parsePercent(labelLineLen2, viewWidth)
if (
Math.abs(sectorShape.endAngle - sectorShape.startAngle) <
minShowLabelRadian
) {
each$f(label2.states, setNotShow)
label2.ignore = true
if (labelLine2) {
each$f(labelLine2.states, setNotShow)
labelLine2.ignore = true
}
return
}
if (!isLabelShown(label2)) {
return
}
var midAngle = (sectorShape.startAngle + sectorShape.endAngle) / 2
var nx = Math.cos(midAngle)
var ny = Math.sin(midAngle)
var textX
var textY
var linePoints2
var textAlign2
cx = sectorShape.cx
cy = sectorShape.cy
var isLabelInside = labelPosition === 'inside' || labelPosition === 'inner'
if (labelPosition === 'center') {
textX = sectorShape.cx
textY = sectorShape.cy
textAlign2 = 'center'
} else {
var x1 =
(isLabelInside
? ((sectorShape.r + sectorShape.r0) / 2) * nx
: sectorShape.r * nx) + cx
var y1 =
(isLabelInside
? ((sectorShape.r + sectorShape.r0) / 2) * ny
: sectorShape.r * ny) + cy
textX = x1 + nx * 3
textY = y1 + ny * 3
if (!isLabelInside) {
var x2 = x1 + nx * (labelLineLen + r2 - sectorShape.r)
var y2 = y1 + ny * (labelLineLen + r2 - sectorShape.r)
var x3 = x2 + (nx < 0 ? -1 : 1) * labelLineLen2
var y3 = y2
if (labelAlignTo === 'edge') {
textX =
nx < 0
? viewLeft + edgeDistance
: viewLeft + viewWidth - edgeDistance
} else {
textX = x3 + (nx < 0 ? -labelDistance : labelDistance)
}
textY = y3
linePoints2 = [
[x1, y1],
[x2, y2],
[x3, y3],
]
}
textAlign2 = isLabelInside
? 'center'
: labelAlignTo === 'edge'
? nx > 0
? 'right'
: 'left'
: nx > 0
? 'left'
: 'right'
}
var PI3 = Math.PI
var labelRotate = 0
var rotate2 = labelModel.get('rotate')
if (isNumber$2(rotate2)) {
labelRotate = rotate2 * (PI3 / 180)
} else if (labelPosition === 'center') {
labelRotate = 0
} else if (rotate2 === 'radial' || rotate2 === true) {
var radialAngle = nx < 0 ? -midAngle + PI3 : -midAngle
labelRotate = radialAngle
} else if (
rotate2 === 'tangential' &&
labelPosition !== 'outside' &&
labelPosition !== 'outer'
) {
var rad = Math.atan2(nx, ny)
if (rad < 0) {
rad = PI3 * 2 + rad
}
var isDown2 = ny > 0
if (isDown2) {
rad = PI3 + rad
}
labelRotate = rad - PI3
}
hasLabelRotate = !!labelRotate
label2.x = textX
label2.y = textY
label2.rotation = labelRotate
label2.setStyle({
verticalAlign: 'middle',
})
if (!isLabelInside) {
var textRect = label2.getBoundingRect().clone()
textRect.applyTransform(label2.getComputedTransform())
var margin = (label2.style.margin || 0) + 2.1
textRect.y -= margin / 2
textRect.height += margin
labelLayoutList.push({
label: label2,
labelLine: labelLine2,
position: labelPosition,
len: labelLineLen,
len2: labelLineLen2,
minTurnAngle: labelLineModel.get('minTurnAngle'),
maxSurfaceAngle: labelLineModel.get('maxSurfaceAngle'),
surfaceNormal: new Point$1(nx, ny),
linePoints: linePoints2,
textAlign: textAlign2,
labelDistance,
labelAlignTo,
edgeDistance,
bleedMargin,
rect: textRect,
unconstrainedWidth: textRect.width,
labelStyleWidth: label2.style.width,
})
} else {
label2.setStyle({
align: textAlign2,
})
var selectState2 = label2.states.select
if (selectState2) {
selectState2.x += label2.x
selectState2.y += label2.y
}
}
sector.setTextConfig({
inside: isLabelInside,
})
})
if (!hasLabelRotate && seriesModel.get('avoidLabelOverlap')) {
avoidOverlap(
labelLayoutList,
cx,
cy,
r2,
viewWidth,
viewHeight,
viewLeft,
viewTop
)
}
for (var i2 = 0; i2 < labelLayoutList.length; i2++) {
var layout2 = labelLayoutList[i2]
var label = layout2.label
var labelLine = layout2.labelLine
var notShowLabel = isNaN(label.x) || isNaN(label.y)
if (label) {
label.setStyle({
align: layout2.textAlign,
})
if (notShowLabel) {
each$f(label.states, setNotShow)
label.ignore = true
}
var selectState = label.states.select
if (selectState) {
selectState.x += label.x
selectState.y += label.y
}
}
if (labelLine) {
var linePoints = layout2.linePoints
if (notShowLabel || !linePoints) {
each$f(labelLine.states, setNotShow)
labelLine.ignore = true
} else {
limitTurnAngle(linePoints, layout2.minTurnAngle)
limitSurfaceAngle(
linePoints,
layout2.surfaceNormal,
layout2.maxSurfaceAngle
)
labelLine.setShape({
points: linePoints,
})
label.__hostTarget.textGuideLineConfig = {
anchor: new Point$1(linePoints[0][0], linePoints[0][1]),
}
}
}
}
}
var PiePiece = (function (_super) {
__extends$2(PiePiece2, _super)
function PiePiece2(data2, idx, startAngle) {
var _this = _super.call(this) || this
_this.z2 = 2
var text2 = new ZRText$1()
_this.setTextContent(text2)
_this.updateData(data2, idx, startAngle, true)
return _this
}
PiePiece2.prototype.updateData = function (
data2,
idx,
startAngle,
firstCreate
) {
var sector = this
var seriesModel = data2.hostModel
var itemModel = data2.getItemModel(idx)
var emphasisModel = itemModel.getModel('emphasis')
var layout2 = data2.getItemLayout(idx)
var sectorShape = extend(
getSectorCornerRadius(itemModel.getModel('itemStyle'), layout2, true),
layout2
)
if (isNaN(sectorShape.startAngle)) {
sector.setShape(sectorShape)
return
}
if (firstCreate) {
sector.setShape(sectorShape)
var animationType = seriesModel.getShallow('animationType')
if (seriesModel.ecModel.ssr) {
initProps(
sector,
{
scaleX: 0,
scaleY: 0,
},
seriesModel,
{
dataIndex: idx,
isFrom: true,
}
)
sector.originX = sectorShape.cx
sector.originY = sectorShape.cy
} else if (animationType === 'scale') {
sector.shape.r = layout2.r0
initProps(
sector,
{
shape: {
r: layout2.r,
},
},
seriesModel,
idx
)
} else {
if (startAngle != null) {
sector.setShape({
startAngle,
endAngle: startAngle,
})
initProps(
sector,
{
shape: {
startAngle: layout2.startAngle,
endAngle: layout2.endAngle,
},
},
seriesModel,
idx
)
} else {
sector.shape.endAngle = layout2.startAngle
updateProps$1(
sector,
{
shape: {
endAngle: layout2.endAngle,
},
},
seriesModel,
idx
)
}
}
} else {
saveOldStyle(sector)
updateProps$1(
sector,
{
shape: sectorShape,
},
seriesModel,
idx
)
}
sector.useStyle(data2.getItemVisual(idx, 'style'))
setStatesStylesFromModel(sector, itemModel)
var midAngle = (layout2.startAngle + layout2.endAngle) / 2
var offset2 = seriesModel.get('selectedOffset')
var dx = Math.cos(midAngle) * offset2
var dy = Math.sin(midAngle) * offset2
var cursorStyle = itemModel.getShallow('cursor')
cursorStyle && sector.attr('cursor', cursorStyle)
this._updateLabel(seriesModel, data2, idx)
sector.ensureState('emphasis').shape = extend(
{
r:
layout2.r +
(emphasisModel.get('scale')
? emphasisModel.get('scaleSize') || 0
: 0),
},
getSectorCornerRadius(emphasisModel.getModel('itemStyle'), layout2)
)
extend(sector.ensureState('select'), {
x: dx,
y: dy,
shape: getSectorCornerRadius(
itemModel.getModel(['select', 'itemStyle']),
layout2
),
})
extend(sector.ensureState('blur'), {
shape: getSectorCornerRadius(
itemModel.getModel(['blur', 'itemStyle']),
layout2
),
})
var labelLine = sector.getTextGuideLine()
var labelText = sector.getTextContent()
labelLine &&
extend(labelLine.ensureState('select'), {
x: dx,
y: dy,
})
extend(labelText.ensureState('select'), {
x: dx,
y: dy,
})
toggleHoverEmphasis(
this,
emphasisModel.get('focus'),
emphasisModel.get('blurScope'),
emphasisModel.get('disabled')
)
}
PiePiece2.prototype._updateLabel = function (seriesModel, data2, idx) {
var sector = this
var itemModel = data2.getItemModel(idx)
var labelLineModel = itemModel.getModel('labelLine')
var style2 = data2.getItemVisual(idx, 'style')
var visualColor = style2 && style2.fill
var visualOpacity = style2 && style2.opacity
setLabelStyle(sector, getLabelStatesModels(itemModel), {
labelFetcher: data2.hostModel,
labelDataIndex: idx,
inheritColor: visualColor,
defaultOpacity: visualOpacity,
defaultText:
seriesModel.getFormattedLabel(idx, 'normal') || data2.getName(idx),
})
var labelText = sector.getTextContent()
sector.setTextConfig({
position: null,
rotation: null,
})
labelText.attr({
z2: 10,
})
var labelPosition = seriesModel.get(['label', 'position'])
if (labelPosition !== 'outside' && labelPosition !== 'outer') {
sector.removeTextGuideLine()
} else {
var polyline = this.getTextGuideLine()
if (!polyline) {
polyline = new Polyline$3()
this.setTextGuideLine(polyline)
}
setLabelLineStyle(this, getLabelLineStatesModels(itemModel), {
stroke: visualColor,
opacity: retrieve3(
labelLineModel.get(['lineStyle', 'opacity']),
visualOpacity,
1
),
})
}
}
return PiePiece2
})(Sector$1)
var PieView = (function (_super) {
__extends$2(PieView2, _super)
function PieView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.ignoreLabelLineUpdate = true
return _this
}
PieView2.prototype.render = function (seriesModel, ecModel, api, payload) {
var data2 = seriesModel.getData()
var oldData = this._data
var group = this.group
var startAngle
if (!oldData && data2.count() > 0) {
var shape = data2.getItemLayout(0)
for (
var s2 = 1;
isNaN(shape && shape.startAngle) && s2 < data2.count();
++s2
) {
shape = data2.getItemLayout(s2)
}
if (shape) {
startAngle = shape.startAngle
}
}
if (this._emptyCircleSector) {
group.remove(this._emptyCircleSector)
}
if (data2.count() === 0 && seriesModel.get('showEmptyCircle')) {
var sector = new Sector$1({
shape: getBasicPieLayout(seriesModel, api),
})
sector.useStyle(seriesModel.getModel('emptyCircleStyle').getItemStyle())
this._emptyCircleSector = sector
group.add(sector)
}
data2
.diff(oldData)
.add(function (idx) {
var piePiece = new PiePiece(data2, idx, startAngle)
data2.setItemGraphicEl(idx, piePiece)
group.add(piePiece)
})
.update(function (newIdx, oldIdx) {
var piePiece = oldData.getItemGraphicEl(oldIdx)
piePiece.updateData(data2, newIdx, startAngle)
piePiece.off('click')
group.add(piePiece)
data2.setItemGraphicEl(newIdx, piePiece)
})
.remove(function (idx) {
var piePiece = oldData.getItemGraphicEl(idx)
removeElementWithFadeOut(piePiece, seriesModel, idx)
})
.execute()
pieLabelLayout(seriesModel)
if (seriesModel.get('animationTypeUpdate') !== 'expansion') {
this._data = data2
}
}
PieView2.prototype.dispose = function () {}
PieView2.prototype.containPoint = function (point, seriesModel) {
var data2 = seriesModel.getData()
var itemLayout = data2.getItemLayout(0)
if (itemLayout) {
var dx = point[0] - itemLayout.cx
var dy = point[1] - itemLayout.cy
var radius = Math.sqrt(dx * dx + dy * dy)
return radius <= itemLayout.r && radius >= itemLayout.r0
}
}
PieView2.type = 'pie'
return PieView2
})(ChartView$1)
var PieView$1 = PieView
function createSeriesDataSimply(seriesModel, opt, nameList) {
opt =
(isArray$6(opt) && {
coordDimensions: opt,
}) ||
extend(
{
encodeDefine: seriesModel.getEncode(),
},
opt
)
var source2 = seriesModel.getSource()
var dimensions = prepareSeriesDataSchema(source2, opt).dimensions
var list2 = new SeriesData$1(dimensions, seriesModel)
list2.initData(source2, nameList)
return list2
}
var LegendVisualProvider = (function () {
function LegendVisualProvider2(getDataWithEncodedVisual, getRawData2) {
this._getDataWithEncodedVisual = getDataWithEncodedVisual
this._getRawData = getRawData2
}
LegendVisualProvider2.prototype.getAllNames = function () {
var rawData = this._getRawData()
return rawData.mapArray(rawData.getName)
}
LegendVisualProvider2.prototype.containName = function (name2) {
var rawData = this._getRawData()
return rawData.indexOfName(name2) >= 0
}
LegendVisualProvider2.prototype.indexOfName = function (name2) {
var dataWithEncodedVisual = this._getDataWithEncodedVisual()
return dataWithEncodedVisual.indexOfName(name2)
}
LegendVisualProvider2.prototype.getItemVisual = function (dataIndex, key2) {
var dataWithEncodedVisual = this._getDataWithEncodedVisual()
return dataWithEncodedVisual.getItemVisual(dataIndex, key2)
}
return LegendVisualProvider2
})()
var LegendVisualProvider$1 = LegendVisualProvider
var innerData = makeInner()
var PieSeriesModel = (function (_super) {
__extends$2(PieSeriesModel2, _super)
function PieSeriesModel2() {
return (_super !== null && _super.apply(this, arguments)) || this
}
PieSeriesModel2.prototype.init = function (option2) {
_super.prototype.init.apply(this, arguments)
this.legendVisualProvider = new LegendVisualProvider$1(
bind$1(this.getData, this),
bind$1(this.getRawData, this)
)
this._defaultLabelLine(option2)
}
PieSeriesModel2.prototype.mergeOption = function () {
_super.prototype.mergeOption.apply(this, arguments)
}
PieSeriesModel2.prototype.getInitialData = function () {
return createSeriesDataSimply(this, {
coordDimensions: ['value'],
encodeDefaulter: curry$1(makeSeriesEncodeForNameBased, this),
})
}
PieSeriesModel2.prototype.getDataParams = function (dataIndex) {
var data2 = this.getData()
var dataInner = innerData(data2)
var seats = dataInner.seats
if (!seats) {
var valueList_1 = []
data2.each(data2.mapDimension('value'), function (value2) {
valueList_1.push(value2)
})
seats = dataInner.seats = getPercentSeats(
valueList_1,
data2.hostModel.get('percentPrecision')
)
}
var params2 = _super.prototype.getDataParams.call(this, dataIndex)
params2.percent = seats[dataIndex] || 0
params2.$vars.push('percent')
return params2
}
PieSeriesModel2.prototype._defaultLabelLine = function (option2) {
defaultEmphasis(option2, 'labelLine', ['show'])
var labelLineNormalOpt = option2.labelLine
var labelLineEmphasisOpt = option2.emphasis.labelLine
labelLineNormalOpt.show = labelLineNormalOpt.show && option2.label.show
labelLineEmphasisOpt.show =
labelLineEmphasisOpt.show && option2.emphasis.label.show
}
PieSeriesModel2.type = 'series.pie'
PieSeriesModel2.defaultOption = {
z: 2,
legendHoverLink: true,
colorBy: 'data',
center: ['50%', '50%'],
radius: [0, '75%'],
clockwise: true,
startAngle: 90,
minAngle: 0,
minShowLabelAngle: 0,
selectedOffset: 10,
percentPrecision: 2,
stillShowZeroSum: true,
left: 0,
top: 0,
right: 0,
bottom: 0,
width: null,
height: null,
label: {
rotate: 0,
show: true,
overflow: 'truncate',
position: 'outer',
alignTo: 'none',
edgeDistance: '25%',
bleedMargin: 10,
distanceToLabelLine: 5,
},
labelLine: {
show: true,
length: 15,
length2: 15,
smooth: false,
minTurnAngle: 90,
maxSurfaceAngle: 90,
lineStyle: {
width: 1,
type: 'solid',
},
},
itemStyle: {
borderWidth: 1,
borderJoin: 'round',
},
showEmptyCircle: true,
emptyCircleStyle: {
color: 'lightgray',
opacity: 1,
},
labelLayout: {
hideOverlap: true,
},
emphasis: {
scale: true,
scaleSize: 5,
},
avoidLabelOverlap: true,
animationType: 'expansion',
animationDuration: 1e3,
animationTypeUpdate: 'transition',
animationEasingUpdate: 'cubicInOut',
animationDurationUpdate: 500,
animationEasing: 'cubicInOut',
}
return PieSeriesModel2
})(SeriesModel$1)
var PieSeriesModel$1 = PieSeriesModel
function negativeDataFilter(seriesType2) {
return {
seriesType: seriesType2,
reset: function (seriesModel, ecModel) {
var data2 = seriesModel.getData()
data2.filterSelf(function (idx) {
var valueDim = data2.mapDimension('value')
var curValue = data2.get(valueDim, idx)
if (isNumber$2(curValue) && !isNaN(curValue) && curValue < 0) {
return false
}
return true
})
},
}
}
function install$Q(registers) {
registers.registerChartView(PieView$1)
registers.registerSeriesModel(PieSeriesModel$1)
createLegacyDataSelectAction('pie', registers.registerAction)
registers.registerLayout(curry$1(pieLayout, 'pie'))
registers.registerProcessor(dataFilter$1('pie'))
registers.registerProcessor(negativeDataFilter('pie'))
}
var ScatterSeriesModel = (function (_super) {
__extends$2(ScatterSeriesModel2, _super)
function ScatterSeriesModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = ScatterSeriesModel2.type
_this.hasSymbolVisual = true
return _this
}
ScatterSeriesModel2.prototype.getInitialData = function (option2, ecModel) {
return createSeriesData(null, this, {
useEncodeDefaulter: true,
})
}
ScatterSeriesModel2.prototype.getProgressive = function () {
var progressive = this.option.progressive
if (progressive == null) {
return this.option.large ? 5e3 : this.get('progressive')
}
return progressive
}
ScatterSeriesModel2.prototype.getProgressiveThreshold = function () {
var progressiveThreshold = this.option.progressiveThreshold
if (progressiveThreshold == null) {
return this.option.large ? 1e4 : this.get('progressiveThreshold')
}
return progressiveThreshold
}
ScatterSeriesModel2.prototype.brushSelector = function (
dataIndex,
data2,
selectors
) {
return selectors.point(data2.getItemLayout(dataIndex))
}
ScatterSeriesModel2.prototype.getZLevelKey = function () {
return this.getData().count() > this.getProgressiveThreshold()
? this.id
: ''
}
ScatterSeriesModel2.type = 'series.scatter'
ScatterSeriesModel2.dependencies = [
'grid',
'polar',
'geo',
'singleAxis',
'calendar',
]
ScatterSeriesModel2.defaultOption = {
coordinateSystem: 'cartesian2d',
z: 2,
legendHoverLink: true,
symbolSize: 10,
large: false,
largeThreshold: 2e3,
itemStyle: {
opacity: 0.8,
},
emphasis: {
scale: true,
},
clip: true,
select: {
itemStyle: {
borderColor: '#212121',
},
},
universalTransition: {
divideShape: 'clone',
},
}
return ScatterSeriesModel2
})(SeriesModel$1)
var ScatterSeriesModel$1 = ScatterSeriesModel
var BOOST_SIZE_THRESHOLD = 4
var LargeSymbolPathShape = (function () {
function LargeSymbolPathShape2() {}
return LargeSymbolPathShape2
})()
var LargeSymbolPath = (function (_super) {
__extends$2(LargeSymbolPath2, _super)
function LargeSymbolPath2(opts) {
var _this = _super.call(this, opts) || this
_this._off = 0
_this.hoverDataIdx = -1
return _this
}
LargeSymbolPath2.prototype.getDefaultShape = function () {
return new LargeSymbolPathShape()
}
LargeSymbolPath2.prototype.reset = function () {
this.notClear = false
this._off = 0
}
LargeSymbolPath2.prototype.buildPath = function (path, shape) {
var points2 = shape.points
var size = shape.size
var symbolProxy = this.symbolProxy
var symbolProxyShape = symbolProxy.shape
var ctx = path.getContext ? path.getContext() : path
var canBoost = ctx && size[0] < BOOST_SIZE_THRESHOLD
var softClipShape = this.softClipShape
var i2
if (canBoost) {
this._ctx = ctx
return
}
this._ctx = null
for (i2 = this._off; i2 < points2.length; ) {
var x2 = points2[i2++]
var y2 = points2[i2++]
if (isNaN(x2) || isNaN(y2)) {
continue
}
if (softClipShape && !softClipShape.contain(x2, y2)) {
continue
}
symbolProxyShape.x = x2 - size[0] / 2
symbolProxyShape.y = y2 - size[1] / 2
symbolProxyShape.width = size[0]
symbolProxyShape.height = size[1]
symbolProxy.buildPath(path, symbolProxyShape, true)
}
if (this.incremental) {
this._off = i2
this.notClear = true
}
}
LargeSymbolPath2.prototype.afterBrush = function () {
var shape = this.shape
var points2 = shape.points
var size = shape.size
var ctx = this._ctx
var softClipShape = this.softClipShape
var i2
if (!ctx) {
return
}
for (i2 = this._off; i2 < points2.length; ) {
var x2 = points2[i2++]
var y2 = points2[i2++]
if (isNaN(x2) || isNaN(y2)) {
continue
}
if (softClipShape && !softClipShape.contain(x2, y2)) {
continue
}
ctx.fillRect(x2 - size[0] / 2, y2 - size[1] / 2, size[0], size[1])
}
if (this.incremental) {
this._off = i2
this.notClear = true
}
}
LargeSymbolPath2.prototype.findDataIndex = function (x2, y2) {
var shape = this.shape
var points2 = shape.points
var size = shape.size
var w2 = Math.max(size[0], 4)
var h2 = Math.max(size[1], 4)
for (var idx = points2.length / 2 - 1; idx >= 0; idx--) {
var i2 = idx * 2
var x0 = points2[i2] - w2 / 2
var y0 = points2[i2 + 1] - h2 / 2
if (x2 >= x0 && y2 >= y0 && x2 <= x0 + w2 && y2 <= y0 + h2) {
return idx
}
}
return -1
}
LargeSymbolPath2.prototype.contain = function (x2, y2) {
var localPos = this.transformCoordToLocal(x2, y2)
var rect = this.getBoundingRect()
x2 = localPos[0]
y2 = localPos[1]
if (rect.contain(x2, y2)) {
var dataIdx = (this.hoverDataIdx = this.findDataIndex(x2, y2))
return dataIdx >= 0
}
this.hoverDataIdx = -1
return false
}
LargeSymbolPath2.prototype.getBoundingRect = function () {
var rect = this._rect
if (!rect) {
var shape = this.shape
var points2 = shape.points
var size = shape.size
var w2 = size[0]
var h2 = size[1]
var minX = Infinity
var minY = Infinity
var maxX = -Infinity
var maxY = -Infinity
for (var i2 = 0; i2 < points2.length; ) {
var x2 = points2[i2++]
var y2 = points2[i2++]
minX = Math.min(x2, minX)
maxX = Math.max(x2, maxX)
minY = Math.min(y2, minY)
maxY = Math.max(y2, maxY)
}
rect = this._rect = new BoundingRect$1(
minX - w2 / 2,
minY - h2 / 2,
maxX - minX + w2,
maxY - minY + h2
)
}
return rect
}
return LargeSymbolPath2
})(Path$1)
var LargeSymbolDraw = (function () {
function LargeSymbolDraw2() {
this.group = new Group$5()
}
LargeSymbolDraw2.prototype.updateData = function (data2, opt) {
this._clear()
var symbolEl = this._create()
symbolEl.setShape({
points: data2.getLayout('points'),
})
this._setCommon(symbolEl, data2, opt)
}
LargeSymbolDraw2.prototype.updateLayout = function (data2) {
var points2 = data2.getLayout('points')
this.group.eachChild(function (child) {
if (child.startIndex != null) {
var len2 = (child.endIndex - child.startIndex) * 2
var byteOffset = child.startIndex * 4 * 2
points2 = new Float32Array(points2.buffer, byteOffset, len2)
}
child.setShape('points', points2)
child.reset()
})
}
LargeSymbolDraw2.prototype.incrementalPrepareUpdate = function (data2) {
this._clear()
}
LargeSymbolDraw2.prototype.incrementalUpdate = function (
taskParams,
data2,
opt
) {
var lastAdded = this._newAdded[0]
var points2 = data2.getLayout('points')
var oldPoints = lastAdded && lastAdded.shape.points
if (oldPoints && oldPoints.length < 2e4) {
var oldLen = oldPoints.length
var newPoints = new Float32Array(oldLen + points2.length)
newPoints.set(oldPoints)
newPoints.set(points2, oldLen)
lastAdded.endIndex = taskParams.end
lastAdded.setShape({
points: newPoints,
})
} else {
this._newAdded = []
var symbolEl = this._create()
symbolEl.startIndex = taskParams.start
symbolEl.endIndex = taskParams.end
symbolEl.incremental = true
symbolEl.setShape({
points: points2,
})
this._setCommon(symbolEl, data2, opt)
}
}
LargeSymbolDraw2.prototype.eachRendered = function (cb) {
this._newAdded[0] && cb(this._newAdded[0])
}
LargeSymbolDraw2.prototype._create = function () {
var symbolEl = new LargeSymbolPath({
cursor: 'default',
})
symbolEl.ignoreCoarsePointer = true
this.group.add(symbolEl)
this._newAdded.push(symbolEl)
return symbolEl
}
LargeSymbolDraw2.prototype._setCommon = function (symbolEl, data2, opt) {
var hostModel = data2.hostModel
opt = opt || {}
var size = data2.getVisual('symbolSize')
symbolEl.setShape('size', size instanceof Array ? size : [size, size])
symbolEl.softClipShape = opt.clipShape || null
symbolEl.symbolProxy = createSymbol$1(data2.getVisual('symbol'), 0, 0, 0, 0)
symbolEl.setColor = symbolEl.symbolProxy.setColor
var extrudeShadow = symbolEl.shape.size[0] < BOOST_SIZE_THRESHOLD
symbolEl.useStyle(
hostModel
.getModel('itemStyle')
.getItemStyle(
extrudeShadow ? ['color', 'shadowBlur', 'shadowColor'] : ['color']
)
)
var globalStyle = data2.getVisual('style')
var visualColor = globalStyle && globalStyle.fill
if (visualColor) {
symbolEl.setColor(visualColor)
}
var ecData = getECData(symbolEl)
ecData.seriesIndex = hostModel.seriesIndex
symbolEl.on('mousemove', function (e2) {
ecData.dataIndex = null
var dataIndex = symbolEl.hoverDataIdx
if (dataIndex >= 0) {
ecData.dataIndex = dataIndex + (symbolEl.startIndex || 0)
}
})
}
LargeSymbolDraw2.prototype.remove = function () {
this._clear()
}
LargeSymbolDraw2.prototype._clear = function () {
this._newAdded = []
this.group.removeAll()
}
return LargeSymbolDraw2
})()
var LargeSymbolDraw$1 = LargeSymbolDraw
var ScatterView = (function (_super) {
__extends$2(ScatterView2, _super)
function ScatterView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = ScatterView2.type
return _this
}
ScatterView2.prototype.render = function (seriesModel, ecModel, api) {
var data2 = seriesModel.getData()
var symbolDraw = this._updateSymbolDraw(data2, seriesModel)
symbolDraw.updateData(data2, {
clipShape: this._getClipShape(seriesModel),
})
this._finished = true
}
ScatterView2.prototype.incrementalPrepareRender = function (
seriesModel,
ecModel,
api
) {
var data2 = seriesModel.getData()
var symbolDraw = this._updateSymbolDraw(data2, seriesModel)
symbolDraw.incrementalPrepareUpdate(data2)
this._finished = false
}
ScatterView2.prototype.incrementalRender = function (
taskParams,
seriesModel,
ecModel
) {
this._symbolDraw.incrementalUpdate(taskParams, seriesModel.getData(), {
clipShape: this._getClipShape(seriesModel),
})
this._finished = taskParams.end === seriesModel.getData().count()
}
ScatterView2.prototype.updateTransform = function (
seriesModel,
ecModel,
api
) {
var data2 = seriesModel.getData()
this.group.dirty()
if (!this._finished || data2.count() > 1e4) {
return {
update: true,
}
} else {
var res = pointsLayout('').reset(seriesModel, ecModel, api)
if (res.progress) {
res.progress(
{
start: 0,
end: data2.count(),
count: data2.count(),
},
data2
)
}
this._symbolDraw.updateLayout(data2)
}
}
ScatterView2.prototype.eachRendered = function (cb) {
this._symbolDraw && this._symbolDraw.eachRendered(cb)
}
ScatterView2.prototype._getClipShape = function (seriesModel) {
var coordSys = seriesModel.coordinateSystem
var clipArea = coordSys && coordSys.getArea && coordSys.getArea()
return seriesModel.get('clip', true) ? clipArea : null
}
ScatterView2.prototype._updateSymbolDraw = function (data2, seriesModel) {
var symbolDraw = this._symbolDraw
var pipelineContext = seriesModel.pipelineContext
var isLargeDraw = pipelineContext.large
if (!symbolDraw || isLargeDraw !== this._isLargeDraw) {
symbolDraw && symbolDraw.remove()
symbolDraw = this._symbolDraw = isLargeDraw
? new LargeSymbolDraw$1()
: new SymbolDraw$1()
this._isLargeDraw = isLargeDraw
this.group.removeAll()
}
this.group.add(symbolDraw.group)
return symbolDraw
}
ScatterView2.prototype.remove = function (ecModel, api) {
this._symbolDraw && this._symbolDraw.remove(true)
this._symbolDraw = null
}
ScatterView2.prototype.dispose = function () {}
ScatterView2.type = 'scatter'
return ScatterView2
})(ChartView$1)
var ScatterView$1 = ScatterView
var GridModel = (function (_super) {
__extends$2(GridModel2, _super)
function GridModel2() {
return (_super !== null && _super.apply(this, arguments)) || this
}
GridModel2.type = 'grid'
GridModel2.dependencies = ['xAxis', 'yAxis']
GridModel2.layoutMode = 'box'
GridModel2.defaultOption = {
show: false,
z: 0,
left: '10%',
top: 60,
right: '10%',
bottom: 70,
containLabel: false,
backgroundColor: 'rgba(0,0,0,0)',
borderWidth: 1,
borderColor: '#ccc',
}
return GridModel2
})(ComponentModel$1)
var GridModel$1 = GridModel
var CartesianAxisModel = (function (_super) {
__extends$2(CartesianAxisModel2, _super)
function CartesianAxisModel2() {
return (_super !== null && _super.apply(this, arguments)) || this
}
CartesianAxisModel2.prototype.getCoordSysModel = function () {
return this.getReferringComponents('grid', SINGLE_REFERRING).models[0]
}
CartesianAxisModel2.type = 'cartesian2dAxis'
return CartesianAxisModel2
})(ComponentModel$1)
mixin(CartesianAxisModel, AxisModelCommonMixin)
var defaultOption$1 = {
show: true,
z: 0,
inverse: false,
name: '',
nameLocation: 'end',
nameRotate: null,
nameTruncate: {
maxWidth: null,
ellipsis: '...',
placeholder: '.',
},
nameTextStyle: {},
nameGap: 15,
silent: false,
triggerEvent: false,
tooltip: {
show: false,
},
axisPointer: {},
axisLine: {
show: true,
onZero: true,
onZeroAxisIndex: null,
lineStyle: {
color: '#6E7079',
width: 1,
type: 'solid',
},
symbol: ['none', 'none'],
symbolSize: [10, 15],
},
axisTick: {
show: true,
inside: false,
length: 5,
lineStyle: {
width: 1,
},
},
axisLabel: {
show: true,
inside: false,
rotate: 0,
showMinLabel: null,
showMaxLabel: null,
margin: 8,
fontSize: 12,
},
splitLine: {
show: true,
lineStyle: {
color: ['#E0E6F1'],
width: 1,
type: 'solid',
},
},
splitArea: {
show: false,
areaStyle: {
color: ['rgba(250,250,250,0.2)', 'rgba(210,219,238,0.2)'],
},
},
}
var categoryAxis = merge(
{
boundaryGap: true,
deduplication: null,
splitLine: {
show: false,
},
axisTick: {
alignWithLabel: false,
interval: 'auto',
},
axisLabel: {
interval: 'auto',
},
},
defaultOption$1
)
var valueAxis = merge(
{
boundaryGap: [0, 0],
axisLine: {
show: 'auto',
},
axisTick: {
show: 'auto',
},
splitNumber: 5,
minorTick: {
show: false,
splitNumber: 5,
length: 3,
lineStyle: {},
},
minorSplitLine: {
show: false,
lineStyle: {
color: '#F4F7FD',
width: 1,
},
},
},
defaultOption$1
)
var timeAxis = merge(
{
splitNumber: 6,
axisLabel: {
showMinLabel: false,
showMaxLabel: false,
rich: {
primary: {
fontWeight: 'bold',
},
},
},
splitLine: {
show: false,
},
},
valueAxis
)
var logAxis = defaults(
{
logBase: 10,
},
valueAxis
)
var axisDefault = {
category: categoryAxis,
value: valueAxis,
time: timeAxis,
log: logAxis,
}
var AXIS_TYPES = {
value: 1,
category: 1,
time: 1,
log: 1,
}
function axisModelCreator(
registers,
axisName,
BaseAxisModelClass,
extraDefaultOption
) {
each$f(AXIS_TYPES, function (v4, axisType) {
var defaultOption2 = merge(
merge({}, axisDefault[axisType], true),
extraDefaultOption,
true
)
var AxisModel = (function (_super) {
__extends$2(AxisModel2, _super)
function AxisModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = axisName + 'Axis.' + axisType
return _this
}
AxisModel2.prototype.mergeDefaultAndTheme = function (option2, ecModel) {
var layoutMode = fetchLayoutMode(this)
var inputPositionParams = layoutMode ? getLayoutParams(option2) : {}
var themeModel = ecModel.getTheme()
merge(option2, themeModel.get(axisType + 'Axis'))
merge(option2, this.getDefaultOption())
option2.type = getAxisType(option2)
if (layoutMode) {
mergeLayoutParam(option2, inputPositionParams, layoutMode)
}
}
AxisModel2.prototype.optionUpdated = function () {
var thisOption = this.option
if (thisOption.type === 'category') {
this.__ordinalMeta = OrdinalMeta$1.createByAxisModel(this)
}
}
AxisModel2.prototype.getCategories = function (rawData) {
var option2 = this.option
if (option2.type === 'category') {
if (rawData) {
return option2.data
}
return this.__ordinalMeta.categories
}
}
AxisModel2.prototype.getOrdinalMeta = function () {
return this.__ordinalMeta
}
AxisModel2.type = axisName + 'Axis.' + axisType
AxisModel2.defaultOption = defaultOption2
return AxisModel2
})(BaseAxisModelClass)
registers.registerComponentModel(AxisModel)
})
registers.registerSubTypeDefaulter(axisName + 'Axis', getAxisType)
}
function getAxisType(option2) {
return option2.type || (option2.data ? 'category' : 'value')
}
var Cartesian = (function () {
function Cartesian2(name2) {
this.type = 'cartesian'
this._dimList = []
this._axes = {}
this.name = name2 || ''
}
Cartesian2.prototype.getAxis = function (dim) {
return this._axes[dim]
}
Cartesian2.prototype.getAxes = function () {
return map$1(
this._dimList,
function (dim) {
return this._axes[dim]
},
this
)
}
Cartesian2.prototype.getAxesByScale = function (scaleType) {
scaleType = scaleType.toLowerCase()
return filter(this.getAxes(), function (axis) {
return axis.scale.type === scaleType
})
}
Cartesian2.prototype.addAxis = function (axis) {
var dim = axis.dim
this._axes[dim] = axis
this._dimList.push(dim)
}
return Cartesian2
})()
var Cartesian$1 = Cartesian
var cartesian2DDimensions = ['x', 'y']
function canCalculateAffineTransform(scale2) {
return scale2.type === 'interval' || scale2.type === 'time'
}
var Cartesian2D = (function (_super) {
__extends$2(Cartesian2D2, _super)
function Cartesian2D2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = 'cartesian2d'
_this.dimensions = cartesian2DDimensions
return _this
}
Cartesian2D2.prototype.calcAffineTransform = function () {
this._transform = this._invTransform = null
var xAxisScale = this.getAxis('x').scale
var yAxisScale = this.getAxis('y').scale
if (
!canCalculateAffineTransform(xAxisScale) ||
!canCalculateAffineTransform(yAxisScale)
) {
return
}
var xScaleExtent = xAxisScale.getExtent()
var yScaleExtent = yAxisScale.getExtent()
var start2 = this.dataToPoint([xScaleExtent[0], yScaleExtent[0]])
var end2 = this.dataToPoint([xScaleExtent[1], yScaleExtent[1]])
var xScaleSpan = xScaleExtent[1] - xScaleExtent[0]
var yScaleSpan = yScaleExtent[1] - yScaleExtent[0]
if (!xScaleSpan || !yScaleSpan) {
return
}
var scaleX = (end2[0] - start2[0]) / xScaleSpan
var scaleY = (end2[1] - start2[1]) / yScaleSpan
var translateX = start2[0] - xScaleExtent[0] * scaleX
var translateY = start2[1] - yScaleExtent[0] * scaleY
var m2 = (this._transform = [scaleX, 0, 0, scaleY, translateX, translateY])
this._invTransform = invert([], m2)
}
Cartesian2D2.prototype.getBaseAxis = function () {
return (
this.getAxesByScale('ordinal')[0] ||
this.getAxesByScale('time')[0] ||
this.getAxis('x')
)
}
Cartesian2D2.prototype.containPoint = function (point) {
var axisX = this.getAxis('x')
var axisY = this.getAxis('y')
return (
axisX.contain(axisX.toLocalCoord(point[0])) &&
axisY.contain(axisY.toLocalCoord(point[1]))
)
}
Cartesian2D2.prototype.containData = function (data2) {
return (
this.getAxis('x').containData(data2[0]) &&
this.getAxis('y').containData(data2[1])
)
}
Cartesian2D2.prototype.containZone = function (data1, data2) {
var zoneDiag1 = this.dataToPoint(data1)
var zoneDiag2 = this.dataToPoint(data2)
var area = this.getArea()
var zone = new BoundingRect$1(
zoneDiag1[0],
zoneDiag1[1],
zoneDiag2[0] - zoneDiag1[0],
zoneDiag2[1] - zoneDiag1[1]
)
return area.intersect(zone)
}
Cartesian2D2.prototype.dataToPoint = function (data2, clamp2, out2) {
out2 = out2 || []
var xVal = data2[0]
var yVal = data2[1]
if (
this._transform &&
xVal != null &&
isFinite(xVal) &&
yVal != null &&
isFinite(yVal)
) {
return applyTransform$1(out2, data2, this._transform)
}
var xAxis = this.getAxis('x')
var yAxis = this.getAxis('y')
out2[0] = xAxis.toGlobalCoord(xAxis.dataToCoord(xVal, clamp2))
out2[1] = yAxis.toGlobalCoord(yAxis.dataToCoord(yVal, clamp2))
return out2
}
Cartesian2D2.prototype.clampData = function (data2, out2) {
var xScale = this.getAxis('x').scale
var yScale = this.getAxis('y').scale
var xAxisExtent = xScale.getExtent()
var yAxisExtent = yScale.getExtent()
var x2 = xScale.parse(data2[0])
var y2 = yScale.parse(data2[1])
out2 = out2 || []
out2[0] = Math.min(
Math.max(Math.min(xAxisExtent[0], xAxisExtent[1]), x2),
Math.max(xAxisExtent[0], xAxisExtent[1])
)
out2[1] = Math.min(
Math.max(Math.min(yAxisExtent[0], yAxisExtent[1]), y2),
Math.max(yAxisExtent[0], yAxisExtent[1])
)
return out2
}
Cartesian2D2.prototype.pointToData = function (point, clamp2) {
var out2 = []
if (this._invTransform) {
return applyTransform$1(out2, point, this._invTransform)
}
var xAxis = this.getAxis('x')
var yAxis = this.getAxis('y')
out2[0] = xAxis.coordToData(xAxis.toLocalCoord(point[0]), clamp2)
out2[1] = yAxis.coordToData(yAxis.toLocalCoord(point[1]), clamp2)
return out2
}
Cartesian2D2.prototype.getOtherAxis = function (axis) {
return this.getAxis(axis.dim === 'x' ? 'y' : 'x')
}
Cartesian2D2.prototype.getArea = function () {
var xExtent = this.getAxis('x').getGlobalExtent()
var yExtent = this.getAxis('y').getGlobalExtent()
var x2 = Math.min(xExtent[0], xExtent[1])
var y2 = Math.min(yExtent[0], yExtent[1])
var width = Math.max(xExtent[0], xExtent[1]) - x2
var height = Math.max(yExtent[0], yExtent[1]) - y2
return new BoundingRect$1(x2, y2, width, height)
}
return Cartesian2D2
})(Cartesian$1)
var Axis2D = (function (_super) {
__extends$2(Axis2D2, _super)
function Axis2D2(dim, scale2, coordExtent, axisType, position2) {
var _this = _super.call(this, dim, scale2, coordExtent) || this
_this.index = 0
_this.type = axisType || 'value'
_this.position = position2 || 'bottom'
return _this
}
Axis2D2.prototype.isHorizontal = function () {
var position2 = this.position
return position2 === 'top' || position2 === 'bottom'
}
Axis2D2.prototype.getGlobalExtent = function (asc2) {
var ret = this.getExtent()
ret[0] = this.toGlobalCoord(ret[0])
ret[1] = this.toGlobalCoord(ret[1])
asc2 && ret[0] > ret[1] && ret.reverse()
return ret
}
Axis2D2.prototype.pointToData = function (point, clamp2) {
return this.coordToData(
this.toLocalCoord(point[this.dim === 'x' ? 0 : 1]),
clamp2
)
}
Axis2D2.prototype.setCategorySortInfo = function (info) {
if (this.type !== 'category') {
return false
}
this.model.option.categorySortInfo = info
this.scale.setSortInfo(info)
}
return Axis2D2
})(Axis$1)
var Axis2D$1 = Axis2D
function layout$2(gridModel, axisModel, opt) {
opt = opt || {}
var grid2 = gridModel.coordinateSystem
var axis = axisModel.axis
var layout2 = {}
var otherAxisOnZeroOf = axis.getAxesOnZeroOf()[0]
var rawAxisPosition = axis.position
var axisPosition = otherAxisOnZeroOf ? 'onZero' : rawAxisPosition
var axisDim = axis.dim
var rect = grid2.getRect()
var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height]
var idx = {
left: 0,
right: 1,
top: 0,
bottom: 1,
onZero: 2,
}
var axisOffset = axisModel.get('offset') || 0
var posBound =
axisDim === 'x'
? [rectBound[2] - axisOffset, rectBound[3] + axisOffset]
: [rectBound[0] - axisOffset, rectBound[1] + axisOffset]
if (otherAxisOnZeroOf) {
var onZeroCoord = otherAxisOnZeroOf.toGlobalCoord(
otherAxisOnZeroOf.dataToCoord(0)
)
posBound[idx.onZero] = Math.max(
Math.min(onZeroCoord, posBound[1]),
posBound[0]
)
}
layout2.position = [
axisDim === 'y' ? posBound[idx[axisPosition]] : rectBound[0],
axisDim === 'x' ? posBound[idx[axisPosition]] : rectBound[3],
]
layout2.rotation = (Math.PI / 2) * (axisDim === 'x' ? 0 : 1)
var dirMap = {
top: -1,
bottom: 1,
left: -1,
right: 1,
}
layout2.labelDirection =
layout2.tickDirection =
layout2.nameDirection =
dirMap[rawAxisPosition]
layout2.labelOffset = otherAxisOnZeroOf
? posBound[idx[rawAxisPosition]] - posBound[idx.onZero]
: 0
if (axisModel.get(['axisTick', 'inside'])) {
layout2.tickDirection = -layout2.tickDirection
}
if (retrieve(opt.labelInside, axisModel.get(['axisLabel', 'inside']))) {
layout2.labelDirection = -layout2.labelDirection
}
var labelRotate = axisModel.get(['axisLabel', 'rotate'])
layout2.labelRotate = axisPosition === 'top' ? -labelRotate : labelRotate
layout2.z2 = 1
return layout2
}
function isCartesian2DSeries(seriesModel) {
return seriesModel.get('coordinateSystem') === 'cartesian2d'
}
function findAxisModels(seriesModel) {
var axisModelMap = {
xAxisModel: null,
yAxisModel: null,
}
each$f(axisModelMap, function (v4, key2) {
var axisType = key2.replace(/Model$/, '')
var axisModel = seriesModel.getReferringComponents(
axisType,
SINGLE_REFERRING
).models[0]
axisModelMap[key2] = axisModel
})
return axisModelMap
}
var mathLog = Math.log
function alignScaleTicks(scale2, axisModel, alignToScale) {
var intervalScaleProto2 = IntervalScale$1.prototype
var alignToTicks = intervalScaleProto2.getTicks.call(alignToScale)
var alignToNicedTicks = intervalScaleProto2.getTicks.call(alignToScale, true)
var alignToSplitNumber = alignToTicks.length - 1
var alignToInterval = intervalScaleProto2.getInterval.call(alignToScale)
var scaleExtent = getScaleExtent(scale2, axisModel)
var rawExtent = scaleExtent.extent
var isMinFixed = scaleExtent.fixMin
var isMaxFixed = scaleExtent.fixMax
if (scale2.type === 'log') {
var logBase = mathLog(scale2.base)
rawExtent = [
mathLog(rawExtent[0]) / logBase,
mathLog(rawExtent[1]) / logBase,
]
}
scale2.setExtent(rawExtent[0], rawExtent[1])
scale2.calcNiceExtent({
splitNumber: alignToSplitNumber,
fixMin: isMinFixed,
fixMax: isMaxFixed,
})
var extent3 = intervalScaleProto2.getExtent.call(scale2)
if (isMinFixed) {
rawExtent[0] = extent3[0]
}
if (isMaxFixed) {
rawExtent[1] = extent3[1]
}
var interval = intervalScaleProto2.getInterval.call(scale2)
var min3 = rawExtent[0]
var max3 = rawExtent[1]
if (isMinFixed && isMaxFixed) {
interval = (max3 - min3) / alignToSplitNumber
} else if (isMinFixed) {
max3 = rawExtent[0] + interval * alignToSplitNumber
while (max3 < rawExtent[1] && isFinite(max3) && isFinite(rawExtent[1])) {
interval = increaseInterval(interval)
max3 = rawExtent[0] + interval * alignToSplitNumber
}
} else if (isMaxFixed) {
min3 = rawExtent[1] - interval * alignToSplitNumber
while (min3 > rawExtent[0] && isFinite(min3) && isFinite(rawExtent[0])) {
interval = increaseInterval(interval)
min3 = rawExtent[1] - interval * alignToSplitNumber
}
} else {
var nicedSplitNumber = scale2.getTicks().length - 1
if (nicedSplitNumber > alignToSplitNumber) {
interval = increaseInterval(interval)
}
var range3 = interval * alignToSplitNumber
max3 = Math.ceil(rawExtent[1] / interval) * interval
min3 = round$3(max3 - range3)
if (min3 < 0 && rawExtent[0] >= 0) {
min3 = 0
max3 = round$3(range3)
} else if (max3 > 0 && rawExtent[1] <= 0) {
max3 = 0
min3 = -round$3(range3)
}
}
var t0 =
(alignToTicks[0].value - alignToNicedTicks[0].value) / alignToInterval
var t1 =
(alignToTicks[alignToSplitNumber].value -
alignToNicedTicks[alignToSplitNumber].value) /
alignToInterval
intervalScaleProto2.setExtent.call(
scale2,
min3 + interval * t0,
max3 + interval * t1
)
intervalScaleProto2.setInterval.call(scale2, interval)
if (t0 || t1) {
intervalScaleProto2.setNiceExtent.call(
scale2,
min3 + interval,
max3 - interval
)
}
}
var Grid$2 = (function () {
function Grid2(gridModel, ecModel, api) {
this.type = 'grid'
this._coordsMap = {}
this._coordsList = []
this._axesMap = {}
this._axesList = []
this.axisPointerEnabled = true
this.dimensions = cartesian2DDimensions
this._initCartesian(gridModel, ecModel, api)
this.model = gridModel
}
Grid2.prototype.getRect = function () {
return this._rect
}
Grid2.prototype.update = function (ecModel, api) {
var axesMap = this._axesMap
this._updateScale(ecModel, this.model)
function updateAxisTicks(axes) {
var alignTo
var axesIndices = keys$4(axes)
var len2 = axesIndices.length
if (!len2) {
return
}
var axisNeedsAlign = []
for (var i2 = len2 - 1; i2 >= 0; i2--) {
var idx = +axesIndices[i2]
var axis = axes[idx]
var model = axis.model
var scale2 = axis.scale
if (
isIntervalOrLogScale(scale2) &&
model.get('alignTicks') &&
model.get('interval') == null
) {
axisNeedsAlign.push(axis)
} else {
niceScaleExtent(scale2, model)
if (isIntervalOrLogScale(scale2)) {
alignTo = axis
}
}
}
if (axisNeedsAlign.length) {
if (!alignTo) {
alignTo = axisNeedsAlign.pop()
niceScaleExtent(alignTo.scale, alignTo.model)
}
each$f(axisNeedsAlign, function (axis2) {
alignScaleTicks(axis2.scale, axis2.model, alignTo.scale)
})
}
}
updateAxisTicks(axesMap.x)
updateAxisTicks(axesMap.y)
var onZeroRecords = {}
each$f(axesMap.x, function (xAxis) {
fixAxisOnZero(axesMap, 'y', xAxis, onZeroRecords)
})
each$f(axesMap.y, function (yAxis) {
fixAxisOnZero(axesMap, 'x', yAxis, onZeroRecords)
})
this.resize(this.model, api)
}
Grid2.prototype.resize = function (gridModel, api, ignoreContainLabel) {
var boxLayoutParams = gridModel.getBoxLayoutParams()
var isContainLabel = !ignoreContainLabel && gridModel.get('containLabel')
var gridRect = getLayoutRect(boxLayoutParams, {
width: api.getWidth(),
height: api.getHeight(),
})
this._rect = gridRect
var axesList = this._axesList
adjustAxes()
if (isContainLabel) {
each$f(axesList, function (axis) {
if (!axis.model.get(['axisLabel', 'inside'])) {
var labelUnionRect = estimateLabelUnionRect(axis)
if (labelUnionRect) {
var dim = axis.isHorizontal() ? 'height' : 'width'
var margin = axis.model.get(['axisLabel', 'margin'])
gridRect[dim] -= labelUnionRect[dim] + margin
if (axis.position === 'top') {
gridRect.y += labelUnionRect.height + margin
} else if (axis.position === 'left') {
gridRect.x += labelUnionRect.width + margin
}
}
}
})
adjustAxes()
}
each$f(this._coordsList, function (coord) {
coord.calcAffineTransform()
})
function adjustAxes() {
each$f(axesList, function (axis) {
var isHorizontal2 = axis.isHorizontal()
var extent3 = isHorizontal2 ? [0, gridRect.width] : [0, gridRect.height]
var idx = axis.inverse ? 1 : 0
axis.setExtent(extent3[idx], extent3[1 - idx])
updateAxisTransform(axis, isHorizontal2 ? gridRect.x : gridRect.y)
})
}
}
Grid2.prototype.getAxis = function (dim, axisIndex) {
var axesMapOnDim = this._axesMap[dim]
if (axesMapOnDim != null) {
return axesMapOnDim[axisIndex || 0]
}
}
Grid2.prototype.getAxes = function () {
return this._axesList.slice()
}
Grid2.prototype.getCartesian = function (xAxisIndex, yAxisIndex) {
if (xAxisIndex != null && yAxisIndex != null) {
var key2 = 'x' + xAxisIndex + 'y' + yAxisIndex
return this._coordsMap[key2]
}
if (isObject$b(xAxisIndex)) {
yAxisIndex = xAxisIndex.yAxisIndex
xAxisIndex = xAxisIndex.xAxisIndex
}
for (
var i2 = 0, coordList = this._coordsList;
i2 < coordList.length;
i2++
) {
if (
coordList[i2].getAxis('x').index === xAxisIndex ||
coordList[i2].getAxis('y').index === yAxisIndex
) {
return coordList[i2]
}
}
}
Grid2.prototype.getCartesians = function () {
return this._coordsList.slice()
}
Grid2.prototype.convertToPixel = function (ecModel, finder, value2) {
var target2 = this._findConvertTarget(finder)
return target2.cartesian
? target2.cartesian.dataToPoint(value2)
: target2.axis
? target2.axis.toGlobalCoord(target2.axis.dataToCoord(value2))
: null
}
Grid2.prototype.convertFromPixel = function (ecModel, finder, value2) {
var target2 = this._findConvertTarget(finder)
return target2.cartesian
? target2.cartesian.pointToData(value2)
: target2.axis
? target2.axis.coordToData(target2.axis.toLocalCoord(value2))
: null
}
Grid2.prototype._findConvertTarget = function (finder) {
var seriesModel = finder.seriesModel
var xAxisModel =
finder.xAxisModel ||
(seriesModel &&
seriesModel.getReferringComponents('xAxis', SINGLE_REFERRING).models[0])
var yAxisModel =
finder.yAxisModel ||
(seriesModel &&
seriesModel.getReferringComponents('yAxis', SINGLE_REFERRING).models[0])
var gridModel = finder.gridModel
var coordsList = this._coordsList
var cartesian
var axis
if (seriesModel) {
cartesian = seriesModel.coordinateSystem
indexOf(coordsList, cartesian) < 0 && (cartesian = null)
} else if (xAxisModel && yAxisModel) {
cartesian = this.getCartesian(
xAxisModel.componentIndex,
yAxisModel.componentIndex
)
} else if (xAxisModel) {
axis = this.getAxis('x', xAxisModel.componentIndex)
} else if (yAxisModel) {
axis = this.getAxis('y', yAxisModel.componentIndex)
} else if (gridModel) {
var grid2 = gridModel.coordinateSystem
if (grid2 === this) {
cartesian = this._coordsList[0]
}
}
return {
cartesian,
axis,
}
}
Grid2.prototype.containPoint = function (point) {
var coord = this._coordsList[0]
if (coord) {
return coord.containPoint(point)
}
}
Grid2.prototype._initCartesian = function (gridModel, ecModel, api) {
var _this = this
var grid2 = this
var axisPositionUsed = {
left: false,
right: false,
top: false,
bottom: false,
}
var axesMap = {
x: {},
y: {},
}
var axesCount = {
x: 0,
y: 0,
}
ecModel.eachComponent('xAxis', createAxisCreator('x'), this)
ecModel.eachComponent('yAxis', createAxisCreator('y'), this)
if (!axesCount.x || !axesCount.y) {
this._axesMap = {}
this._axesList = []
return
}
this._axesMap = axesMap
each$f(axesMap.x, function (xAxis, xAxisIndex) {
each$f(axesMap.y, function (yAxis, yAxisIndex) {
var key2 = 'x' + xAxisIndex + 'y' + yAxisIndex
var cartesian = new Cartesian2D(key2)
cartesian.master = _this
cartesian.model = gridModel
_this._coordsMap[key2] = cartesian
_this._coordsList.push(cartesian)
cartesian.addAxis(xAxis)
cartesian.addAxis(yAxis)
})
})
function createAxisCreator(dimName) {
return function (axisModel, idx) {
if (!isAxisUsedInTheGrid(axisModel, gridModel)) {
return
}
var axisPosition = axisModel.get('position')
if (dimName === 'x') {
if (axisPosition !== 'top' && axisPosition !== 'bottom') {
axisPosition = axisPositionUsed.bottom ? 'top' : 'bottom'
}
} else {
if (axisPosition !== 'left' && axisPosition !== 'right') {
axisPosition = axisPositionUsed.left ? 'right' : 'left'
}
}
axisPositionUsed[axisPosition] = true
var axis = new Axis2D$1(
dimName,
createScaleByModel$1(axisModel),
[0, 0],
axisModel.get('type'),
axisPosition
)
var isCategory2 = axis.type === 'category'
axis.onBand = isCategory2 && axisModel.get('boundaryGap')
axis.inverse = axisModel.get('inverse')
axisModel.axis = axis
axis.model = axisModel
axis.grid = grid2
axis.index = idx
grid2._axesList.push(axis)
axesMap[dimName][idx] = axis
axesCount[dimName]++
}
}
}
Grid2.prototype._updateScale = function (ecModel, gridModel) {
each$f(this._axesList, function (axis) {
axis.scale.setExtent(Infinity, -Infinity)
if (axis.type === 'category') {
var categorySortInfo = axis.model.get('categorySortInfo')
axis.scale.setSortInfo(categorySortInfo)
}
})
ecModel.eachSeries(function (seriesModel) {
if (isCartesian2DSeries(seriesModel)) {
var axesModelMap = findAxisModels(seriesModel)
var xAxisModel = axesModelMap.xAxisModel
var yAxisModel = axesModelMap.yAxisModel
if (
!isAxisUsedInTheGrid(xAxisModel, gridModel) ||
!isAxisUsedInTheGrid(yAxisModel, gridModel)
) {
return
}
var cartesian = this.getCartesian(
xAxisModel.componentIndex,
yAxisModel.componentIndex
)
var data2 = seriesModel.getData()
var xAxis = cartesian.getAxis('x')
var yAxis = cartesian.getAxis('y')
unionExtent(data2, xAxis)
unionExtent(data2, yAxis)
}
}, this)
function unionExtent(data2, axis) {
each$f(getDataDimensionsOnAxis(data2, axis.dim), function (dim) {
axis.scale.unionExtentFromData(data2, dim)
})
}
}
Grid2.prototype.getTooltipAxes = function (dim) {
var baseAxes = []
var otherAxes = []
each$f(this.getCartesians(), function (cartesian) {
var baseAxis =
dim != null && dim !== 'auto'
? cartesian.getAxis(dim)
: cartesian.getBaseAxis()
var otherAxis = cartesian.getOtherAxis(baseAxis)
indexOf(baseAxes, baseAxis) < 0 && baseAxes.push(baseAxis)
indexOf(otherAxes, otherAxis) < 0 && otherAxes.push(otherAxis)
})
return {
baseAxes,
otherAxes,
}
}
Grid2.create = function (ecModel, api) {
var grids = []
ecModel.eachComponent('grid', function (gridModel, idx) {
var grid2 = new Grid2(gridModel, ecModel, api)
grid2.name = 'grid_' + idx
grid2.resize(gridModel, api, true)
gridModel.coordinateSystem = grid2
grids.push(grid2)
})
ecModel.eachSeries(function (seriesModel) {
if (!isCartesian2DSeries(seriesModel)) {
return
}
var axesModelMap = findAxisModels(seriesModel)
var xAxisModel = axesModelMap.xAxisModel
var yAxisModel = axesModelMap.yAxisModel
var gridModel = xAxisModel.getCoordSysModel()
var grid2 = gridModel.coordinateSystem
seriesModel.coordinateSystem = grid2.getCartesian(
xAxisModel.componentIndex,
yAxisModel.componentIndex
)
})
return grids
}
Grid2.dimensions = cartesian2DDimensions
return Grid2
})()
function isAxisUsedInTheGrid(axisModel, gridModel) {
return axisModel.getCoordSysModel() === gridModel
}
function fixAxisOnZero(axesMap, otherAxisDim, axis, onZeroRecords) {
axis.getAxesOnZeroOf = function () {
return otherAxisOnZeroOf ? [otherAxisOnZeroOf] : []
}
var otherAxes = axesMap[otherAxisDim]
var otherAxisOnZeroOf
var axisModel = axis.model
var onZero = axisModel.get(['axisLine', 'onZero'])
var onZeroAxisIndex = axisModel.get(['axisLine', 'onZeroAxisIndex'])
if (!onZero) {
return
}
if (onZeroAxisIndex != null) {
if (canOnZeroToAxis(otherAxes[onZeroAxisIndex])) {
otherAxisOnZeroOf = otherAxes[onZeroAxisIndex]
}
} else {
for (var idx in otherAxes) {
if (
otherAxes.hasOwnProperty(idx) &&
canOnZeroToAxis(otherAxes[idx]) &&
!onZeroRecords[getOnZeroRecordKey(otherAxes[idx])]
) {
otherAxisOnZeroOf = otherAxes[idx]
break
}
}
}
if (otherAxisOnZeroOf) {
onZeroRecords[getOnZeroRecordKey(otherAxisOnZeroOf)] = true
}
function getOnZeroRecordKey(axis2) {
return axis2.dim + '_' + axis2.index
}
}
function canOnZeroToAxis(axis) {
return (
axis &&
axis.type !== 'category' &&
axis.type !== 'time' &&
ifAxisCrossZero(axis)
)
}
function updateAxisTransform(axis, coordBase) {
var axisExtent = axis.getExtent()
var axisExtentSum = axisExtent[0] + axisExtent[1]
axis.toGlobalCoord =
axis.dim === 'x'
? function (coord) {
return coord + coordBase
}
: function (coord) {
return axisExtentSum - coord + coordBase
}
axis.toLocalCoord =
axis.dim === 'x'
? function (coord) {
return coord - coordBase
}
: function (coord) {
return axisExtentSum - coord + coordBase
}
}
var Grid$3 = Grid$2
var PI$4 = Math.PI
var AxisBuilder = (function () {
function AxisBuilder2(axisModel, opt) {
this.group = new Group$5()
this.opt = opt
this.axisModel = axisModel
defaults(opt, {
labelOffset: 0,
nameDirection: 1,
tickDirection: 1,
labelDirection: 1,
silent: true,
handleAutoShown: function () {
return true
},
})
var transformGroup = new Group$5({
x: opt.position[0],
y: opt.position[1],
rotation: opt.rotation,
})
transformGroup.updateTransform()
this._transformGroup = transformGroup
}
AxisBuilder2.prototype.hasBuilder = function (name2) {
return !!builders[name2]
}
AxisBuilder2.prototype.add = function (name2) {
builders[name2](this.opt, this.axisModel, this.group, this._transformGroup)
}
AxisBuilder2.prototype.getGroup = function () {
return this.group
}
AxisBuilder2.innerTextLayout = function (
axisRotation,
textRotation,
direction2
) {
var rotationDiff = remRadian(textRotation - axisRotation)
var textAlign2
var textVerticalAlign
if (isRadianAroundZero(rotationDiff)) {
textVerticalAlign = direction2 > 0 ? 'top' : 'bottom'
textAlign2 = 'center'
} else if (isRadianAroundZero(rotationDiff - PI$4)) {
textVerticalAlign = direction2 > 0 ? 'bottom' : 'top'
textAlign2 = 'center'
} else {
textVerticalAlign = 'middle'
if (rotationDiff > 0 && rotationDiff < PI$4) {
textAlign2 = direction2 > 0 ? 'right' : 'left'
} else {
textAlign2 = direction2 > 0 ? 'left' : 'right'
}
}
return {
rotation: rotationDiff,
textAlign: textAlign2,
textVerticalAlign,
}
}
AxisBuilder2.makeAxisEventDataBase = function (axisModel) {
var eventData = {
componentType: axisModel.mainType,
componentIndex: axisModel.componentIndex,
}
eventData[axisModel.mainType + 'Index'] = axisModel.componentIndex
return eventData
}
AxisBuilder2.isLabelSilent = function (axisModel) {
var tooltipOpt = axisModel.get('tooltip')
return (
axisModel.get('silent') ||
!(axisModel.get('triggerEvent') || (tooltipOpt && tooltipOpt.show))
)
}
return AxisBuilder2
})()
var builders = {
axisLine: function (opt, axisModel, group, transformGroup) {
var shown = axisModel.get(['axisLine', 'show'])
if (shown === 'auto' && opt.handleAutoShown) {
shown = opt.handleAutoShown('axisLine')
}
if (!shown) {
return
}
var extent3 = axisModel.axis.getExtent()
var matrix2 = transformGroup.transform
var pt12 = [extent3[0], 0]
var pt22 = [extent3[1], 0]
var inverse = pt12[0] > pt22[0]
if (matrix2) {
applyTransform$1(pt12, pt12, matrix2)
applyTransform$1(pt22, pt22, matrix2)
}
var lineStyle = extend(
{
lineCap: 'round',
},
axisModel.getModel(['axisLine', 'lineStyle']).getLineStyle()
)
var line = new Line$4({
shape: {
x1: pt12[0],
y1: pt12[1],
x2: pt22[0],
y2: pt22[1],
},
style: lineStyle,
strokeContainThreshold: opt.strokeContainThreshold || 5,
silent: true,
z2: 1,
})
subPixelOptimizeLine(line.shape, line.style.lineWidth)
line.anid = 'line'
group.add(line)
var arrows = axisModel.get(['axisLine', 'symbol'])
if (arrows != null) {
var arrowSize = axisModel.get(['axisLine', 'symbolSize'])
if (isString$2(arrows)) {
arrows = [arrows, arrows]
}
if (isString$2(arrowSize) || isNumber$2(arrowSize)) {
arrowSize = [arrowSize, arrowSize]
}
var arrowOffset = normalizeSymbolOffset(
axisModel.get(['axisLine', 'symbolOffset']) || 0,
arrowSize
)
var symbolWidth_1 = arrowSize[0]
var symbolHeight_1 = arrowSize[1]
each$f(
[
{
rotate: opt.rotation + Math.PI / 2,
offset: arrowOffset[0],
r: 0,
},
{
rotate: opt.rotation - Math.PI / 2,
offset: arrowOffset[1],
r: Math.sqrt(
(pt12[0] - pt22[0]) * (pt12[0] - pt22[0]) +
(pt12[1] - pt22[1]) * (pt12[1] - pt22[1])
),
},
],
function (point, index2) {
if (arrows[index2] !== 'none' && arrows[index2] != null) {
var symbol = createSymbol$1(
arrows[index2],
-symbolWidth_1 / 2,
-symbolHeight_1 / 2,
symbolWidth_1,
symbolHeight_1,
lineStyle.stroke,
true
)
var r2 = point.r + point.offset
var pt3 = inverse ? pt22 : pt12
symbol.attr({
rotation: point.rotate,
x: pt3[0] + r2 * Math.cos(opt.rotation),
y: pt3[1] - r2 * Math.sin(opt.rotation),
silent: true,
z2: 11,
})
group.add(symbol)
}
}
)
}
},
axisTickLabel: function (opt, axisModel, group, transformGroup) {
var ticksEls = buildAxisMajorTicks(group, transformGroup, axisModel, opt)
var labelEls = buildAxisLabel(group, transformGroup, axisModel, opt)
fixMinMaxLabelShow(axisModel, labelEls, ticksEls)
buildAxisMinorTicks(group, transformGroup, axisModel, opt.tickDirection)
if (axisModel.get(['axisLabel', 'hideOverlap'])) {
var labelList = prepareLayoutList(
map$1(labelEls, function (label) {
return {
label,
priority: label.z2,
defaultAttr: {
ignore: label.ignore,
},
}
})
)
hideOverlap(labelList)
}
},
axisName: function (opt, axisModel, group, transformGroup) {
var name2 = retrieve(opt.axisName, axisModel.get('name'))
if (!name2) {
return
}
var nameLocation = axisModel.get('nameLocation')
var nameDirection = opt.nameDirection
var textStyleModel = axisModel.getModel('nameTextStyle')
var gap = axisModel.get('nameGap') || 0
var extent3 = axisModel.axis.getExtent()
var gapSignal = extent3[0] > extent3[1] ? -1 : 1
var pos = [
nameLocation === 'start'
? extent3[0] - gapSignal * gap
: nameLocation === 'end'
? extent3[1] + gapSignal * gap
: (extent3[0] + extent3[1]) / 2,
isNameLocationCenter(nameLocation)
? opt.labelOffset + nameDirection * gap
: 0,
]
var labelLayout2
var nameRotation = axisModel.get('nameRotate')
if (nameRotation != null) {
nameRotation = (nameRotation * PI$4) / 180
}
var axisNameAvailableWidth
if (isNameLocationCenter(nameLocation)) {
labelLayout2 = AxisBuilder.innerTextLayout(
opt.rotation,
nameRotation != null ? nameRotation : opt.rotation,
nameDirection
)
} else {
labelLayout2 = endTextLayout(
opt.rotation,
nameLocation,
nameRotation || 0,
extent3
)
axisNameAvailableWidth = opt.axisNameAvailableWidth
if (axisNameAvailableWidth != null) {
axisNameAvailableWidth = Math.abs(
axisNameAvailableWidth / Math.sin(labelLayout2.rotation)
)
!isFinite(axisNameAvailableWidth) && (axisNameAvailableWidth = null)
}
}
var textFont = textStyleModel.getFont()
var truncateOpt = axisModel.get('nameTruncate', true) || {}
var ellipsis2 = truncateOpt.ellipsis
var maxWidth = retrieve(
opt.nameTruncateMaxWidth,
truncateOpt.maxWidth,
axisNameAvailableWidth
)
var textEl = new ZRText$1({
x: pos[0],
y: pos[1],
rotation: labelLayout2.rotation,
silent: AxisBuilder.isLabelSilent(axisModel),
style: createTextStyle$1(textStyleModel, {
text: name2,
font: textFont,
overflow: 'truncate',
width: maxWidth,
ellipsis: ellipsis2,
fill:
textStyleModel.getTextColor() ||
axisModel.get(['axisLine', 'lineStyle', 'color']),
align: textStyleModel.get('align') || labelLayout2.textAlign,
verticalAlign:
textStyleModel.get('verticalAlign') || labelLayout2.textVerticalAlign,
}),
z2: 1,
})
setTooltipConfig({
el: textEl,
componentModel: axisModel,
itemName: name2,
})
textEl.__fullText = name2
textEl.anid = 'name'
if (axisModel.get('triggerEvent')) {
var eventData = AxisBuilder.makeAxisEventDataBase(axisModel)
eventData.targetType = 'axisName'
eventData.name = name2
getECData(textEl).eventData = eventData
}
transformGroup.add(textEl)
textEl.updateTransform()
group.add(textEl)
textEl.decomposeTransform()
},
}
function endTextLayout(rotation, textPosition, textRotate, extent3) {
var rotationDiff = remRadian(textRotate - rotation)
var textAlign2
var textVerticalAlign
var inverse = extent3[0] > extent3[1]
var onLeft =
(textPosition === 'start' && !inverse) ||
(textPosition !== 'start' && inverse)
if (isRadianAroundZero(rotationDiff - PI$4 / 2)) {
textVerticalAlign = onLeft ? 'bottom' : 'top'
textAlign2 = 'center'
} else if (isRadianAroundZero(rotationDiff - PI$4 * 1.5)) {
textVerticalAlign = onLeft ? 'top' : 'bottom'
textAlign2 = 'center'
} else {
textVerticalAlign = 'middle'
if (rotationDiff < PI$4 * 1.5 && rotationDiff > PI$4 / 2) {
textAlign2 = onLeft ? 'left' : 'right'
} else {
textAlign2 = onLeft ? 'right' : 'left'
}
}
return {
rotation: rotationDiff,
textAlign: textAlign2,
textVerticalAlign,
}
}
function fixMinMaxLabelShow(axisModel, labelEls, tickEls) {
if (shouldShowAllLabels(axisModel.axis)) {
return
}
var showMinLabel = axisModel.get(['axisLabel', 'showMinLabel'])
var showMaxLabel = axisModel.get(['axisLabel', 'showMaxLabel'])
labelEls = labelEls || []
tickEls = tickEls || []
var firstLabel = labelEls[0]
var nextLabel = labelEls[1]
var lastLabel = labelEls[labelEls.length - 1]
var prevLabel = labelEls[labelEls.length - 2]
var firstTick = tickEls[0]
var nextTick2 = tickEls[1]
var lastTick = tickEls[tickEls.length - 1]
var prevTick = tickEls[tickEls.length - 2]
if (showMinLabel === false) {
ignoreEl(firstLabel)
ignoreEl(firstTick)
} else if (isTwoLabelOverlapped(firstLabel, nextLabel)) {
if (showMinLabel) {
ignoreEl(nextLabel)
ignoreEl(nextTick2)
} else {
ignoreEl(firstLabel)
ignoreEl(firstTick)
}
}
if (showMaxLabel === false) {
ignoreEl(lastLabel)
ignoreEl(lastTick)
} else if (isTwoLabelOverlapped(prevLabel, lastLabel)) {
if (showMaxLabel) {
ignoreEl(prevLabel)
ignoreEl(prevTick)
} else {
ignoreEl(lastLabel)
ignoreEl(lastTick)
}
}
}
function ignoreEl(el2) {
el2 && (el2.ignore = true)
}
function isTwoLabelOverlapped(current2, next) {
var firstRect = current2 && current2.getBoundingRect().clone()
var nextRect = next && next.getBoundingRect().clone()
if (!firstRect || !nextRect) {
return
}
var mRotationBack = identity([])
rotate(mRotationBack, mRotationBack, -current2.rotation)
firstRect.applyTransform(mul([], mRotationBack, current2.getLocalTransform()))
nextRect.applyTransform(mul([], mRotationBack, next.getLocalTransform()))
return firstRect.intersect(nextRect)
}
function isNameLocationCenter(nameLocation) {
return nameLocation === 'middle' || nameLocation === 'center'
}
function createTicks(
ticksCoords,
tickTransform,
tickEndCoord,
tickLineStyle,
anidPrefix
) {
var tickEls = []
var pt12 = []
var pt22 = []
for (var i2 = 0; i2 < ticksCoords.length; i2++) {
var tickCoord = ticksCoords[i2].coord
pt12[0] = tickCoord
pt12[1] = 0
pt22[0] = tickCoord
pt22[1] = tickEndCoord
if (tickTransform) {
applyTransform$1(pt12, pt12, tickTransform)
applyTransform$1(pt22, pt22, tickTransform)
}
var tickEl = new Line$4({
shape: {
x1: pt12[0],
y1: pt12[1],
x2: pt22[0],
y2: pt22[1],
},
style: tickLineStyle,
z2: 2,
autoBatch: true,
silent: true,
})
subPixelOptimizeLine(tickEl.shape, tickEl.style.lineWidth)
tickEl.anid = anidPrefix + '_' + ticksCoords[i2].tickValue
tickEls.push(tickEl)
}
return tickEls
}
function buildAxisMajorTicks(group, transformGroup, axisModel, opt) {
var axis = axisModel.axis
var tickModel = axisModel.getModel('axisTick')
var shown = tickModel.get('show')
if (shown === 'auto' && opt.handleAutoShown) {
shown = opt.handleAutoShown('axisTick')
}
if (!shown || axis.scale.isBlank()) {
return
}
var lineStyleModel = tickModel.getModel('lineStyle')
var tickEndCoord = opt.tickDirection * tickModel.get('length')
var ticksCoords = axis.getTicksCoords()
var ticksEls = createTicks(
ticksCoords,
transformGroup.transform,
tickEndCoord,
defaults(lineStyleModel.getLineStyle(), {
stroke: axisModel.get(['axisLine', 'lineStyle', 'color']),
}),
'ticks'
)
for (var i2 = 0; i2 < ticksEls.length; i2++) {
group.add(ticksEls[i2])
}
return ticksEls
}
function buildAxisMinorTicks(group, transformGroup, axisModel, tickDirection) {
var axis = axisModel.axis
var minorTickModel = axisModel.getModel('minorTick')
if (!minorTickModel.get('show') || axis.scale.isBlank()) {
return
}
var minorTicksCoords = axis.getMinorTicksCoords()
if (!minorTicksCoords.length) {
return
}
var lineStyleModel = minorTickModel.getModel('lineStyle')
var tickEndCoord = tickDirection * minorTickModel.get('length')
var minorTickLineStyle = defaults(
lineStyleModel.getLineStyle(),
defaults(axisModel.getModel('axisTick').getLineStyle(), {
stroke: axisModel.get(['axisLine', 'lineStyle', 'color']),
})
)
for (var i2 = 0; i2 < minorTicksCoords.length; i2++) {
var minorTicksEls = createTicks(
minorTicksCoords[i2],
transformGroup.transform,
tickEndCoord,
minorTickLineStyle,
'minorticks_' + i2
)
for (var k2 = 0; k2 < minorTicksEls.length; k2++) {
group.add(minorTicksEls[k2])
}
}
}
function buildAxisLabel(group, transformGroup, axisModel, opt) {
var axis = axisModel.axis
var show = retrieve(opt.axisLabelShow, axisModel.get(['axisLabel', 'show']))
if (!show || axis.scale.isBlank()) {
return
}
var labelModel = axisModel.getModel('axisLabel')
var labelMargin = labelModel.get('margin')
var labels = axis.getViewLabels()
var labelRotation =
((retrieve(opt.labelRotate, labelModel.get('rotate')) || 0) * PI$4) / 180
var labelLayout2 = AxisBuilder.innerTextLayout(
opt.rotation,
labelRotation,
opt.labelDirection
)
var rawCategoryData = axisModel.getCategories && axisModel.getCategories(true)
var labelEls = []
var silent = AxisBuilder.isLabelSilent(axisModel)
var triggerEvent2 = axisModel.get('triggerEvent')
each$f(labels, function (labelItem, index2) {
var tickValue =
axis.scale.type === 'ordinal'
? axis.scale.getRawOrdinalNumber(labelItem.tickValue)
: labelItem.tickValue
var formattedLabel = labelItem.formattedLabel
var rawLabel = labelItem.rawLabel
var itemLabelModel = labelModel
if (rawCategoryData && rawCategoryData[tickValue]) {
var rawCategoryItem = rawCategoryData[tickValue]
if (isObject$b(rawCategoryItem) && rawCategoryItem.textStyle) {
itemLabelModel = new Model$1(
rawCategoryItem.textStyle,
labelModel,
axisModel.ecModel
)
}
}
var textColor =
itemLabelModel.getTextColor() ||
axisModel.get(['axisLine', 'lineStyle', 'color'])
var tickCoord = axis.dataToCoord(tickValue)
var textEl = new ZRText$1({
x: tickCoord,
y: opt.labelOffset + opt.labelDirection * labelMargin,
rotation: labelLayout2.rotation,
silent,
z2: 10 + (labelItem.level || 0),
style: createTextStyle$1(itemLabelModel, {
text: formattedLabel,
align:
itemLabelModel.getShallow('align', true) || labelLayout2.textAlign,
verticalAlign:
itemLabelModel.getShallow('verticalAlign', true) ||
itemLabelModel.getShallow('baseline', true) ||
labelLayout2.textVerticalAlign,
fill: isFunction$4(textColor)
? textColor(
axis.type === 'category'
? rawLabel
: axis.type === 'value'
? tickValue + ''
: tickValue,
index2
)
: textColor,
}),
})
textEl.anid = 'label_' + tickValue
if (triggerEvent2) {
var eventData = AxisBuilder.makeAxisEventDataBase(axisModel)
eventData.targetType = 'axisLabel'
eventData.value = rawLabel
eventData.tickIndex = index2
if (axis.type === 'category') {
eventData.dataIndex = tickValue
}
getECData(textEl).eventData = eventData
}
transformGroup.add(textEl)
textEl.updateTransform()
labelEls.push(textEl)
group.add(textEl)
textEl.decomposeTransform()
})
return labelEls
}
var AxisBuilder$1 = AxisBuilder
function collect(ecModel, api) {
var result = {
axesInfo: {},
seriesInvolved: false,
coordSysAxesInfo: {},
coordSysMap: {},
}
collectAxesInfo(result, ecModel, api)
result.seriesInvolved && collectSeriesInfo(result, ecModel)
return result
}
function collectAxesInfo(result, ecModel, api) {
var globalTooltipModel = ecModel.getComponent('tooltip')
var globalAxisPointerModel = ecModel.getComponent('axisPointer')
var linksOption = globalAxisPointerModel.get('link', true) || []
var linkGroups = []
each$f(api.getCoordinateSystems(), function (coordSys) {
if (!coordSys.axisPointerEnabled) {
return
}
var coordSysKey = makeKey(coordSys.model)
var axesInfoInCoordSys = (result.coordSysAxesInfo[coordSysKey] = {})
result.coordSysMap[coordSysKey] = coordSys
var coordSysModel = coordSys.model
var baseTooltipModel = coordSysModel.getModel('tooltip', globalTooltipModel)
each$f(coordSys.getAxes(), curry$1(saveTooltipAxisInfo, false, null))
if (
coordSys.getTooltipAxes &&
globalTooltipModel &&
baseTooltipModel.get('show')
) {
var triggerAxis = baseTooltipModel.get('trigger') === 'axis'
var cross = baseTooltipModel.get(['axisPointer', 'type']) === 'cross'
var tooltipAxes = coordSys.getTooltipAxes(
baseTooltipModel.get(['axisPointer', 'axis'])
)
if (triggerAxis || cross) {
each$f(
tooltipAxes.baseAxes,
curry$1(saveTooltipAxisInfo, cross ? 'cross' : true, triggerAxis)
)
}
if (cross) {
each$f(
tooltipAxes.otherAxes,
curry$1(saveTooltipAxisInfo, 'cross', false)
)
}
}
function saveTooltipAxisInfo(fromTooltip, triggerTooltip, axis) {
var axisPointerModel = axis.model.getModel(
'axisPointer',
globalAxisPointerModel
)
var axisPointerShow = axisPointerModel.get('show')
if (
!axisPointerShow ||
(axisPointerShow === 'auto' &&
!fromTooltip &&
!isHandleTrigger(axisPointerModel))
) {
return
}
if (triggerTooltip == null) {
triggerTooltip = axisPointerModel.get('triggerTooltip')
}
axisPointerModel = fromTooltip
? makeAxisPointerModel(
axis,
baseTooltipModel,
globalAxisPointerModel,
ecModel,
fromTooltip,
triggerTooltip
)
: axisPointerModel
var snap = axisPointerModel.get('snap')
var triggerEmphasis = axisPointerModel.get('triggerEmphasis')
var axisKey = makeKey(axis.model)
var involveSeries = triggerTooltip || snap || axis.type === 'category'
var axisInfo = (result.axesInfo[axisKey] = {
key: axisKey,
axis,
coordSys,
axisPointerModel,
triggerTooltip,
triggerEmphasis,
involveSeries,
snap,
useHandle: isHandleTrigger(axisPointerModel),
seriesModels: [],
linkGroup: null,
})
axesInfoInCoordSys[axisKey] = axisInfo
result.seriesInvolved = result.seriesInvolved || involveSeries
var groupIndex = getLinkGroupIndex(linksOption, axis)
if (groupIndex != null) {
var linkGroup =
linkGroups[groupIndex] ||
(linkGroups[groupIndex] = {
axesInfo: {},
})
linkGroup.axesInfo[axisKey] = axisInfo
linkGroup.mapper = linksOption[groupIndex].mapper
axisInfo.linkGroup = linkGroup
}
}
})
}
function makeAxisPointerModel(
axis,
baseTooltipModel,
globalAxisPointerModel,
ecModel,
fromTooltip,
triggerTooltip
) {
var tooltipAxisPointerModel = baseTooltipModel.getModel('axisPointer')
var fields = [
'type',
'snap',
'lineStyle',
'shadowStyle',
'label',
'animation',
'animationDurationUpdate',
'animationEasingUpdate',
'z',
]
var volatileOption = {}
each$f(fields, function (field2) {
volatileOption[field2] = clone$4(tooltipAxisPointerModel.get(field2))
})
volatileOption.snap = axis.type !== 'category' && !!triggerTooltip
if (tooltipAxisPointerModel.get('type') === 'cross') {
volatileOption.type = 'line'
}
var labelOption = volatileOption.label || (volatileOption.label = {})
labelOption.show == null && (labelOption.show = false)
if (fromTooltip === 'cross') {
var tooltipAxisPointerLabelShow = tooltipAxisPointerModel.get([
'label',
'show',
])
labelOption.show =
tooltipAxisPointerLabelShow != null ? tooltipAxisPointerLabelShow : true
if (!triggerTooltip) {
var crossStyle = (volatileOption.lineStyle =
tooltipAxisPointerModel.get('crossStyle'))
crossStyle && defaults(labelOption, crossStyle.textStyle)
}
}
return axis.model.getModel(
'axisPointer',
new Model$1(volatileOption, globalAxisPointerModel, ecModel)
)
}
function collectSeriesInfo(result, ecModel) {
ecModel.eachSeries(function (seriesModel) {
var coordSys = seriesModel.coordinateSystem
var seriesTooltipTrigger = seriesModel.get(['tooltip', 'trigger'], true)
var seriesTooltipShow = seriesModel.get(['tooltip', 'show'], true)
if (
!coordSys ||
seriesTooltipTrigger === 'none' ||
seriesTooltipTrigger === false ||
seriesTooltipTrigger === 'item' ||
seriesTooltipShow === false ||
seriesModel.get(['axisPointer', 'show'], true) === false
) {
return
}
each$f(
result.coordSysAxesInfo[makeKey(coordSys.model)],
function (axisInfo) {
var axis = axisInfo.axis
if (coordSys.getAxis(axis.dim) === axis) {
axisInfo.seriesModels.push(seriesModel)
axisInfo.seriesDataCount == null && (axisInfo.seriesDataCount = 0)
axisInfo.seriesDataCount += seriesModel.getData().count()
}
}
)
})
}
function getLinkGroupIndex(linksOption, axis) {
var axisModel = axis.model
var dim = axis.dim
for (var i2 = 0; i2 < linksOption.length; i2++) {
var linkOption = linksOption[i2] || {}
if (
checkPropInLink(linkOption[dim + 'AxisId'], axisModel.id) ||
checkPropInLink(
linkOption[dim + 'AxisIndex'],
axisModel.componentIndex
) ||
checkPropInLink(linkOption[dim + 'AxisName'], axisModel.name)
) {
return i2
}
}
}
function checkPropInLink(linkPropValue, axisPropValue) {
return (
linkPropValue === 'all' ||
(isArray$6(linkPropValue) && indexOf(linkPropValue, axisPropValue) >= 0) ||
linkPropValue === axisPropValue
)
}
function fixValue(axisModel) {
var axisInfo = getAxisInfo$1(axisModel)
if (!axisInfo) {
return
}
var axisPointerModel = axisInfo.axisPointerModel
var scale2 = axisInfo.axis.scale
var option2 = axisPointerModel.option
var status = axisPointerModel.get('status')
var value2 = axisPointerModel.get('value')
if (value2 != null) {
value2 = scale2.parse(value2)
}
var useHandle = isHandleTrigger(axisPointerModel)
if (status == null) {
option2.status = useHandle ? 'show' : 'hide'
}
var extent3 = scale2.getExtent().slice()
extent3[0] > extent3[1] && extent3.reverse()
if (value2 == null || value2 > extent3[1]) {
value2 = extent3[1]
}
if (value2 < extent3[0]) {
value2 = extent3[0]
}
option2.value = value2
if (useHandle) {
option2.status = axisInfo.axis.scale.isBlank() ? 'hide' : 'show'
}
}
function getAxisInfo$1(axisModel) {
var coordSysAxesInfo = (axisModel.ecModel.getComponent('axisPointer') || {})
.coordSysAxesInfo
return coordSysAxesInfo && coordSysAxesInfo.axesInfo[makeKey(axisModel)]
}
function getAxisPointerModel(axisModel) {
var axisInfo = getAxisInfo$1(axisModel)
return axisInfo && axisInfo.axisPointerModel
}
function isHandleTrigger(axisPointerModel) {
return !!axisPointerModel.get(['handle', 'show'])
}
function makeKey(model) {
return model.type + '||' + model.id
}
var axisPointerClazz = {}
var AxisView = (function (_super) {
__extends$2(AxisView2, _super)
function AxisView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = AxisView2.type
return _this
}
AxisView2.prototype.render = function (axisModel, ecModel, api, payload) {
this.axisPointerClass && fixValue(axisModel)
_super.prototype.render.apply(this, arguments)
this._doUpdateAxisPointerClass(axisModel, api, true)
}
AxisView2.prototype.updateAxisPointer = function (
axisModel,
ecModel,
api,
payload
) {
this._doUpdateAxisPointerClass(axisModel, api, false)
}
AxisView2.prototype.remove = function (ecModel, api) {
var axisPointer = this._axisPointer
axisPointer && axisPointer.remove(api)
}
AxisView2.prototype.dispose = function (ecModel, api) {
this._disposeAxisPointer(api)
_super.prototype.dispose.apply(this, arguments)
}
AxisView2.prototype._doUpdateAxisPointerClass = function (
axisModel,
api,
forceRender
) {
var Clazz = AxisView2.getAxisPointerClass(this.axisPointerClass)
if (!Clazz) {
return
}
var axisPointerModel = getAxisPointerModel(axisModel)
axisPointerModel
? (this._axisPointer || (this._axisPointer = new Clazz())).render(
axisModel,
axisPointerModel,
api,
forceRender
)
: this._disposeAxisPointer(api)
}
AxisView2.prototype._disposeAxisPointer = function (api) {
this._axisPointer && this._axisPointer.dispose(api)
this._axisPointer = null
}
AxisView2.registerAxisPointerClass = function (type4, clazz) {
axisPointerClazz[type4] = clazz
}
AxisView2.getAxisPointerClass = function (type4) {
return type4 && axisPointerClazz[type4]
}
AxisView2.type = 'axis'
return AxisView2
})(ComponentView$1)
var AxisView$1 = AxisView
var inner$f = makeInner()
function rectCoordAxisBuildSplitArea(
axisView,
axisGroup,
axisModel,
gridModel
) {
var axis = axisModel.axis
if (axis.scale.isBlank()) {
return
}
var splitAreaModel = axisModel.getModel('splitArea')
var areaStyleModel = splitAreaModel.getModel('areaStyle')
var areaColors = areaStyleModel.get('color')
var gridRect = gridModel.coordinateSystem.getRect()
var ticksCoords = axis.getTicksCoords({
tickModel: splitAreaModel,
clamp: true,
})
if (!ticksCoords.length) {
return
}
var areaColorsLen = areaColors.length
var lastSplitAreaColors = inner$f(axisView).splitAreaColors
var newSplitAreaColors = createHashMap()
var colorIndex = 0
if (lastSplitAreaColors) {
for (var i2 = 0; i2 < ticksCoords.length; i2++) {
var cIndex = lastSplitAreaColors.get(ticksCoords[i2].tickValue)
if (cIndex != null) {
colorIndex = (cIndex + (areaColorsLen - 1) * i2) % areaColorsLen
break
}
}
}
var prev = axis.toGlobalCoord(ticksCoords[0].coord)
var areaStyle = areaStyleModel.getAreaStyle()
areaColors = isArray$6(areaColors) ? areaColors : [areaColors]
for (var i2 = 1; i2 < ticksCoords.length; i2++) {
var tickCoord = axis.toGlobalCoord(ticksCoords[i2].coord)
var x2 = void 0
var y2 = void 0
var width = void 0
var height = void 0
if (axis.isHorizontal()) {
x2 = prev
y2 = gridRect.y
width = tickCoord - x2
height = gridRect.height
prev = x2 + width
} else {
x2 = gridRect.x
y2 = prev
width = gridRect.width
height = tickCoord - y2
prev = y2 + height
}
var tickValue = ticksCoords[i2 - 1].tickValue
tickValue != null && newSplitAreaColors.set(tickValue, colorIndex)
axisGroup.add(
new Rect$4({
anid: tickValue != null ? 'area_' + tickValue : null,
shape: {
x: x2,
y: y2,
width,
height,
},
style: defaults(
{
fill: areaColors[colorIndex],
},
areaStyle
),
autoBatch: true,
silent: true,
})
)
colorIndex = (colorIndex + 1) % areaColorsLen
}
inner$f(axisView).splitAreaColors = newSplitAreaColors
}
function rectCoordAxisHandleRemove(axisView) {
inner$f(axisView).splitAreaColors = null
}
var axisBuilderAttrs$3 = ['axisLine', 'axisTickLabel', 'axisName']
var selfBuilderAttrs$2 = ['splitArea', 'splitLine', 'minorSplitLine']
var CartesianAxisView = (function (_super) {
__extends$2(CartesianAxisView2, _super)
function CartesianAxisView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = CartesianAxisView2.type
_this.axisPointerClass = 'CartesianAxisPointer'
return _this
}
CartesianAxisView2.prototype.render = function (
axisModel,
ecModel,
api,
payload
) {
this.group.removeAll()
var oldAxisGroup = this._axisGroup
this._axisGroup = new Group$5()
this.group.add(this._axisGroup)
if (!axisModel.get('show')) {
return
}
var gridModel = axisModel.getCoordSysModel()
var layout2 = layout$2(gridModel, axisModel)
var axisBuilder = new AxisBuilder$1(
axisModel,
extend(
{
handleAutoShown: function (elementType) {
var cartesians = gridModel.coordinateSystem.getCartesians()
for (var i2 = 0; i2 < cartesians.length; i2++) {
if (
isIntervalOrLogScale(
cartesians[i2].getOtherAxis(axisModel.axis).scale
)
) {
return true
}
}
return false
},
},
layout2
)
)
each$f(axisBuilderAttrs$3, axisBuilder.add, axisBuilder)
this._axisGroup.add(axisBuilder.getGroup())
each$f(
selfBuilderAttrs$2,
function (name2) {
if (axisModel.get([name2, 'show'])) {
axisElementBuilders$2[name2](
this,
this._axisGroup,
axisModel,
gridModel
)
}
},
this
)
var isInitialSortFromBarRacing =
payload && payload.type === 'changeAxisOrder' && payload.isInitSort
if (!isInitialSortFromBarRacing) {
groupTransition(oldAxisGroup, this._axisGroup, axisModel)
}
_super.prototype.render.call(this, axisModel, ecModel, api, payload)
}
CartesianAxisView2.prototype.remove = function () {
rectCoordAxisHandleRemove(this)
}
CartesianAxisView2.type = 'cartesianAxis'
return CartesianAxisView2
})(AxisView$1)
var axisElementBuilders$2 = {
splitLine: function (axisView, axisGroup, axisModel, gridModel) {
var axis = axisModel.axis
if (axis.scale.isBlank()) {
return
}
var splitLineModel = axisModel.getModel('splitLine')
var lineStyleModel = splitLineModel.getModel('lineStyle')
var lineColors = lineStyleModel.get('color')
lineColors = isArray$6(lineColors) ? lineColors : [lineColors]
var gridRect = gridModel.coordinateSystem.getRect()
var isHorizontal2 = axis.isHorizontal()
var lineCount = 0
var ticksCoords = axis.getTicksCoords({
tickModel: splitLineModel,
})
var p1 = []
var p2 = []
var lineStyle = lineStyleModel.getLineStyle()
for (var i2 = 0; i2 < ticksCoords.length; i2++) {
var tickCoord = axis.toGlobalCoord(ticksCoords[i2].coord)
if (isHorizontal2) {
p1[0] = tickCoord
p1[1] = gridRect.y
p2[0] = tickCoord
p2[1] = gridRect.y + gridRect.height
} else {
p1[0] = gridRect.x
p1[1] = tickCoord
p2[0] = gridRect.x + gridRect.width
p2[1] = tickCoord
}
var colorIndex = lineCount++ % lineColors.length
var tickValue = ticksCoords[i2].tickValue
var line = new Line$4({
anid: tickValue != null ? 'line_' + ticksCoords[i2].tickValue : null,
autoBatch: true,
shape: {
x1: p1[0],
y1: p1[1],
x2: p2[0],
y2: p2[1],
},
style: defaults(
{
stroke: lineColors[colorIndex],
},
lineStyle
),
silent: true,
})
subPixelOptimizeLine(line.shape, lineStyle.lineWidth)
axisGroup.add(line)
}
},
minorSplitLine: function (axisView, axisGroup, axisModel, gridModel) {
var axis = axisModel.axis
var minorSplitLineModel = axisModel.getModel('minorSplitLine')
var lineStyleModel = minorSplitLineModel.getModel('lineStyle')
var gridRect = gridModel.coordinateSystem.getRect()
var isHorizontal2 = axis.isHorizontal()
var minorTicksCoords = axis.getMinorTicksCoords()
if (!minorTicksCoords.length) {
return
}
var p1 = []
var p2 = []
var lineStyle = lineStyleModel.getLineStyle()
for (var i2 = 0; i2 < minorTicksCoords.length; i2++) {
for (var k2 = 0; k2 < minorTicksCoords[i2].length; k2++) {
var tickCoord = axis.toGlobalCoord(minorTicksCoords[i2][k2].coord)
if (isHorizontal2) {
p1[0] = tickCoord
p1[1] = gridRect.y
p2[0] = tickCoord
p2[1] = gridRect.y + gridRect.height
} else {
p1[0] = gridRect.x
p1[1] = tickCoord
p2[0] = gridRect.x + gridRect.width
p2[1] = tickCoord
}
var line = new Line$4({
anid: 'minor_line_' + minorTicksCoords[i2][k2].tickValue,
autoBatch: true,
shape: {
x1: p1[0],
y1: p1[1],
x2: p2[0],
y2: p2[1],
},
style: lineStyle,
silent: true,
})
subPixelOptimizeLine(line.shape, lineStyle.lineWidth)
axisGroup.add(line)
}
}
},
splitArea: function (axisView, axisGroup, axisModel, gridModel) {
rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, gridModel)
},
}
var CartesianXAxisView = (function (_super) {
__extends$2(CartesianXAxisView2, _super)
function CartesianXAxisView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = CartesianXAxisView2.type
return _this
}
CartesianXAxisView2.type = 'xAxis'
return CartesianXAxisView2
})(CartesianAxisView)
var CartesianYAxisView = (function (_super) {
__extends$2(CartesianYAxisView2, _super)
function CartesianYAxisView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = CartesianXAxisView.type
return _this
}
CartesianYAxisView2.type = 'yAxis'
return CartesianYAxisView2
})(CartesianAxisView)
var GridView = (function (_super) {
__extends$2(GridView2, _super)
function GridView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = 'grid'
return _this
}
GridView2.prototype.render = function (gridModel, ecModel) {
this.group.removeAll()
if (gridModel.get('show')) {
this.group.add(
new Rect$4({
shape: gridModel.coordinateSystem.getRect(),
style: defaults(
{
fill: gridModel.get('backgroundColor'),
},
gridModel.getItemStyle()
),
silent: true,
z2: -1,
})
)
}
}
GridView2.type = 'grid'
return GridView2
})(ComponentView$1)
var extraOption = {
offset: 0,
}
function install$P(registers) {
registers.registerComponentView(GridView)
registers.registerComponentModel(GridModel$1)
registers.registerCoordinateSystem('cartesian2d', Grid$3)
axisModelCreator(registers, 'x', CartesianAxisModel, extraOption)
axisModelCreator(registers, 'y', CartesianAxisModel, extraOption)
registers.registerComponentView(CartesianXAxisView)
registers.registerComponentView(CartesianYAxisView)
registers.registerPreprocessor(function (option2) {
if (option2.xAxis && option2.yAxis && !option2.grid) {
option2.grid = {}
}
})
}
function install$O(registers) {
use(install$P)
registers.registerSeriesModel(ScatterSeriesModel$1)
registers.registerChartView(ScatterView$1)
registers.registerLayout(pointsLayout('scatter'))
}
function radarLayout(ecModel) {
ecModel.eachSeriesByType('radar', function (seriesModel) {
var data2 = seriesModel.getData()
var points2 = []
var coordSys = seriesModel.coordinateSystem
if (!coordSys) {
return
}
var axes = coordSys.getIndicatorAxes()
each$f(axes, function (axis, axisIndex) {
data2.each(
data2.mapDimension(axes[axisIndex].dim),
function (val2, dataIndex) {
points2[dataIndex] = points2[dataIndex] || []
var point = coordSys.dataToPoint(val2, axisIndex)
points2[dataIndex][axisIndex] = isValidPoint(point)
? point
: getValueMissingPoint(coordSys)
}
)
})
data2.each(function (idx) {
var firstPoint =
find(points2[idx], function (point) {
return isValidPoint(point)
}) || getValueMissingPoint(coordSys)
points2[idx].push(firstPoint.slice())
data2.setItemLayout(idx, points2[idx])
})
})
}
function isValidPoint(point) {
return !isNaN(point[0]) && !isNaN(point[1])
}
function getValueMissingPoint(coordSys) {
return [coordSys.cx, coordSys.cy]
}
function radarBackwardCompat(option2) {
var polarOptArr = option2.polar
if (polarOptArr) {
if (!isArray$6(polarOptArr)) {
polarOptArr = [polarOptArr]
}
var polarNotRadar_1 = []
each$f(polarOptArr, function (polarOpt, idx) {
if (polarOpt.indicator) {
if (polarOpt.type && !polarOpt.shape) {
polarOpt.shape = polarOpt.type
}
option2.radar = option2.radar || []
if (!isArray$6(option2.radar)) {
option2.radar = [option2.radar]
}
option2.radar.push(polarOpt)
} else {
polarNotRadar_1.push(polarOpt)
}
})
option2.polar = polarNotRadar_1
}
each$f(option2.series, function (seriesOpt) {
if (seriesOpt && seriesOpt.type === 'radar' && seriesOpt.polarIndex) {
seriesOpt.radarIndex = seriesOpt.polarIndex
}
})
}
var RadarView$2 = (function (_super) {
__extends$2(RadarView2, _super)
function RadarView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = RadarView2.type
return _this
}
RadarView2.prototype.render = function (seriesModel, ecModel, api) {
var polar = seriesModel.coordinateSystem
var group = this.group
var data2 = seriesModel.getData()
var oldData = this._data
function createSymbol2(data3, idx) {
var symbolType = data3.getItemVisual(idx, 'symbol') || 'circle'
if (symbolType === 'none') {
return
}
var symbolSize = normalizeSymbolSize(
data3.getItemVisual(idx, 'symbolSize')
)
var symbolPath = createSymbol$1(symbolType, -1, -1, 2, 2)
var symbolRotate = data3.getItemVisual(idx, 'symbolRotate') || 0
symbolPath.attr({
style: {
strokeNoScale: true,
},
z2: 100,
scaleX: symbolSize[0] / 2,
scaleY: symbolSize[1] / 2,
rotation: (symbolRotate * Math.PI) / 180 || 0,
})
return symbolPath
}
function updateSymbols(
oldPoints,
newPoints,
symbolGroup,
data3,
idx,
isInit
) {
symbolGroup.removeAll()
for (var i2 = 0; i2 < newPoints.length - 1; i2++) {
var symbolPath = createSymbol2(data3, idx)
if (symbolPath) {
symbolPath.__dimIdx = i2
if (oldPoints[i2]) {
symbolPath.setPosition(oldPoints[i2])
graphic$1[isInit ? 'initProps' : 'updateProps'](
symbolPath,
{
x: newPoints[i2][0],
y: newPoints[i2][1],
},
seriesModel,
idx
)
} else {
symbolPath.setPosition(newPoints[i2])
}
symbolGroup.add(symbolPath)
}
}
}
function getInitialPoints(points2) {
return map$1(points2, function (pt3) {
return [polar.cx, polar.cy]
})
}
data2
.diff(oldData)
.add(function (idx) {
var points2 = data2.getItemLayout(idx)
if (!points2) {
return
}
var polygon = new Polygon$1()
var polyline = new Polyline$3()
var target2 = {
shape: {
points: points2,
},
}
polygon.shape.points = getInitialPoints(points2)
polyline.shape.points = getInitialPoints(points2)
initProps(polygon, target2, seriesModel, idx)
initProps(polyline, target2, seriesModel, idx)
var itemGroup = new Group$5()
var symbolGroup = new Group$5()
itemGroup.add(polyline)
itemGroup.add(polygon)
itemGroup.add(symbolGroup)
updateSymbols(
polyline.shape.points,
points2,
symbolGroup,
data2,
idx,
true
)
data2.setItemGraphicEl(idx, itemGroup)
})
.update(function (newIdx, oldIdx) {
var itemGroup = oldData.getItemGraphicEl(oldIdx)
var polyline = itemGroup.childAt(0)
var polygon = itemGroup.childAt(1)
var symbolGroup = itemGroup.childAt(2)
var target2 = {
shape: {
points: data2.getItemLayout(newIdx),
},
}
if (!target2.shape.points) {
return
}
updateSymbols(
polyline.shape.points,
target2.shape.points,
symbolGroup,
data2,
newIdx,
false
)
saveOldStyle(polygon)
saveOldStyle(polyline)
updateProps$1(polyline, target2, seriesModel)
updateProps$1(polygon, target2, seriesModel)
data2.setItemGraphicEl(newIdx, itemGroup)
})
.remove(function (idx) {
group.remove(oldData.getItemGraphicEl(idx))
})
.execute()
data2.eachItemGraphicEl(function (itemGroup, idx) {
var itemModel = data2.getItemModel(idx)
var polyline = itemGroup.childAt(0)
var polygon = itemGroup.childAt(1)
var symbolGroup = itemGroup.childAt(2)
var itemStyle = data2.getItemVisual(idx, 'style')
var color2 = itemStyle.fill
group.add(itemGroup)
polyline.useStyle(
defaults(itemModel.getModel('lineStyle').getLineStyle(), {
fill: 'none',
stroke: color2,
})
)
setStatesStylesFromModel(polyline, itemModel, 'lineStyle')
setStatesStylesFromModel(polygon, itemModel, 'areaStyle')
var areaStyleModel = itemModel.getModel('areaStyle')
var polygonIgnore =
areaStyleModel.isEmpty() && areaStyleModel.parentModel.isEmpty()
polygon.ignore = polygonIgnore
each$f(['emphasis', 'select', 'blur'], function (stateName) {
var stateModel = itemModel.getModel([stateName, 'areaStyle'])
var stateIgnore =
stateModel.isEmpty() && stateModel.parentModel.isEmpty()
polygon.ensureState(stateName).ignore = stateIgnore && polygonIgnore
})
polygon.useStyle(
defaults(areaStyleModel.getAreaStyle(), {
fill: color2,
opacity: 0.7,
decal: itemStyle.decal,
})
)
var emphasisModel = itemModel.getModel('emphasis')
var itemHoverStyle = emphasisModel.getModel('itemStyle').getItemStyle()
symbolGroup.eachChild(function (symbolPath) {
if (symbolPath instanceof ZRImage$1) {
var pathStyle = symbolPath.style
symbolPath.useStyle(
extend(
{
image: pathStyle.image,
x: pathStyle.x,
y: pathStyle.y,
width: pathStyle.width,
height: pathStyle.height,
},
itemStyle
)
)
} else {
symbolPath.useStyle(itemStyle)
symbolPath.setColor(color2)
symbolPath.style.strokeNoScale = true
}
var pathEmphasisState = symbolPath.ensureState('emphasis')
pathEmphasisState.style = clone$4(itemHoverStyle)
var defaultText = data2
.getStore()
.get(data2.getDimensionIndex(symbolPath.__dimIdx), idx)
;(defaultText == null || isNaN(defaultText)) && (defaultText = '')
setLabelStyle(symbolPath, getLabelStatesModels(itemModel), {
labelFetcher: data2.hostModel,
labelDataIndex: idx,
labelDimIndex: symbolPath.__dimIdx,
defaultText,
inheritColor: color2,
defaultOpacity: itemStyle.opacity,
})
})
toggleHoverEmphasis(
itemGroup,
emphasisModel.get('focus'),
emphasisModel.get('blurScope'),
emphasisModel.get('disabled')
)
})
this._data = data2
}
RadarView2.prototype.remove = function () {
this.group.removeAll()
this._data = null
}
RadarView2.type = 'radar'
return RadarView2
})(ChartView$1)
var RadarView$3 = RadarView$2
var RadarSeriesModel = (function (_super) {
__extends$2(RadarSeriesModel2, _super)
function RadarSeriesModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = RadarSeriesModel2.type
_this.hasSymbolVisual = true
return _this
}
RadarSeriesModel2.prototype.init = function (option2) {
_super.prototype.init.apply(this, arguments)
this.legendVisualProvider = new LegendVisualProvider$1(
bind$1(this.getData, this),
bind$1(this.getRawData, this)
)
}
RadarSeriesModel2.prototype.getInitialData = function (option2, ecModel) {
return createSeriesDataSimply(this, {
generateCoord: 'indicator_',
generateCoordCount: Infinity,
})
}
RadarSeriesModel2.prototype.formatTooltip = function (
dataIndex,
multipleSeries,
dataType2
) {
var data2 = this.getData()
var coordSys = this.coordinateSystem
var indicatorAxes = coordSys.getIndicatorAxes()
var name2 = this.getData().getName(dataIndex)
var nameToDisplay = name2 === '' ? this.name : name2
var markerColor = retrieveVisualColorForTooltipMarker(this, dataIndex)
return createTooltipMarkup('section', {
header: nameToDisplay,
sortBlocks: true,
blocks: map$1(indicatorAxes, function (axis) {
var val2 = data2.get(data2.mapDimension(axis.dim), dataIndex)
return createTooltipMarkup('nameValue', {
markerType: 'subItem',
markerColor,
name: axis.name,
value: val2,
sortParam: val2,
})
}),
})
}
RadarSeriesModel2.prototype.getTooltipPosition = function (dataIndex) {
if (dataIndex != null) {
var data_1 = this.getData()
var coordSys = this.coordinateSystem
var values2 = data_1.getValues(
map$1(coordSys.dimensions, function (dim) {
return data_1.mapDimension(dim)
}),
dataIndex
)
for (var i2 = 0, len2 = values2.length; i2 < len2; i2++) {
if (!isNaN(values2[i2])) {
var indicatorAxes = coordSys.getIndicatorAxes()
return coordSys.coordToPoint(
indicatorAxes[i2].dataToCoord(values2[i2]),
i2
)
}
}
}
}
RadarSeriesModel2.type = 'series.radar'
RadarSeriesModel2.dependencies = ['radar']
RadarSeriesModel2.defaultOption = {
z: 2,
colorBy: 'data',
coordinateSystem: 'radar',
legendHoverLink: true,
radarIndex: 0,
lineStyle: {
width: 2,
type: 'solid',
join: 'round',
},
label: {
position: 'top',
},
symbolSize: 8,
}
return RadarSeriesModel2
})(SeriesModel$1)
var RadarSeriesModel$1 = RadarSeriesModel
var valueAxisDefault = axisDefault.value
function defaultsShow(opt, show) {
return defaults(
{
show,
},
opt
)
}
var RadarModel = (function (_super) {
__extends$2(RadarModel2, _super)
function RadarModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = RadarModel2.type
return _this
}
RadarModel2.prototype.optionUpdated = function () {
var boundaryGap = this.get('boundaryGap')
var splitNumber = this.get('splitNumber')
var scale2 = this.get('scale')
var axisLine = this.get('axisLine')
var axisTick = this.get('axisTick')
var axisLabel = this.get('axisLabel')
var nameTextStyle = this.get('axisName')
var showName = this.get(['axisName', 'show'])
var nameFormatter = this.get(['axisName', 'formatter'])
var nameGap = this.get('axisNameGap')
var triggerEvent2 = this.get('triggerEvent')
var indicatorModels = map$1(
this.get('indicator') || [],
function (indicatorOpt) {
if (
indicatorOpt.max != null &&
indicatorOpt.max > 0 &&
!indicatorOpt.min
) {
indicatorOpt.min = 0
} else if (
indicatorOpt.min != null &&
indicatorOpt.min < 0 &&
!indicatorOpt.max
) {
indicatorOpt.max = 0
}
var iNameTextStyle = nameTextStyle
if (indicatorOpt.color != null) {
iNameTextStyle = defaults(
{
color: indicatorOpt.color,
},
nameTextStyle
)
}
var innerIndicatorOpt = merge(
clone$4(indicatorOpt),
{
boundaryGap,
splitNumber,
scale: scale2,
axisLine,
axisTick,
axisLabel,
name: indicatorOpt.text,
showName,
nameLocation: 'end',
nameGap,
nameTextStyle: iNameTextStyle,
triggerEvent: triggerEvent2,
},
false
)
if (isString$2(nameFormatter)) {
var indName = innerIndicatorOpt.name
innerIndicatorOpt.name = nameFormatter.replace(
'{value}',
indName != null ? indName : ''
)
} else if (isFunction$4(nameFormatter)) {
innerIndicatorOpt.name = nameFormatter(
innerIndicatorOpt.name,
innerIndicatorOpt
)
}
var model = new Model$1(innerIndicatorOpt, null, this.ecModel)
mixin(model, AxisModelCommonMixin.prototype)
model.mainType = 'radar'
model.componentIndex = this.componentIndex
return model
},
this
)
this._indicatorModels = indicatorModels
}
RadarModel2.prototype.getIndicatorModels = function () {
return this._indicatorModels
}
RadarModel2.type = 'radar'
RadarModel2.defaultOption = {
z: 0,
center: ['50%', '50%'],
radius: '75%',
startAngle: 90,
axisName: {
show: true,
},
boundaryGap: [0, 0],
splitNumber: 5,
axisNameGap: 15,
scale: false,
shape: 'polygon',
axisLine: merge(
{
lineStyle: {
color: '#bbb',
},
},
valueAxisDefault.axisLine
),
axisLabel: defaultsShow(valueAxisDefault.axisLabel, false),
axisTick: defaultsShow(valueAxisDefault.axisTick, false),
splitLine: defaultsShow(valueAxisDefault.splitLine, true),
splitArea: defaultsShow(valueAxisDefault.splitArea, true),
indicator: [],
}
return RadarModel2
})(ComponentModel$1)
var RadarModel$1 = RadarModel
var axisBuilderAttrs$2 = ['axisLine', 'axisTickLabel', 'axisName']
var RadarView = (function (_super) {
__extends$2(RadarView2, _super)
function RadarView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = RadarView2.type
return _this
}
RadarView2.prototype.render = function (radarModel, ecModel, api) {
var group = this.group
group.removeAll()
this._buildAxes(radarModel)
this._buildSplitLineAndArea(radarModel)
}
RadarView2.prototype._buildAxes = function (radarModel) {
var radar = radarModel.coordinateSystem
var indicatorAxes = radar.getIndicatorAxes()
var axisBuilders = map$1(indicatorAxes, function (indicatorAxis) {
var axisName = indicatorAxis.model.get('showName')
? indicatorAxis.name
: ''
var axisBuilder = new AxisBuilder$1(indicatorAxis.model, {
axisName,
position: [radar.cx, radar.cy],
rotation: indicatorAxis.angle,
labelDirection: -1,
tickDirection: -1,
nameDirection: 1,
})
return axisBuilder
})
each$f(
axisBuilders,
function (axisBuilder) {
each$f(axisBuilderAttrs$2, axisBuilder.add, axisBuilder)
this.group.add(axisBuilder.getGroup())
},
this
)
}
RadarView2.prototype._buildSplitLineAndArea = function (radarModel) {
var radar = radarModel.coordinateSystem
var indicatorAxes = radar.getIndicatorAxes()
if (!indicatorAxes.length) {
return
}
var shape = radarModel.get('shape')
var splitLineModel = radarModel.getModel('splitLine')
var splitAreaModel = radarModel.getModel('splitArea')
var lineStyleModel = splitLineModel.getModel('lineStyle')
var areaStyleModel = splitAreaModel.getModel('areaStyle')
var showSplitLine = splitLineModel.get('show')
var showSplitArea = splitAreaModel.get('show')
var splitLineColors = lineStyleModel.get('color')
var splitAreaColors = areaStyleModel.get('color')
var splitLineColorsArr = isArray$6(splitLineColors)
? splitLineColors
: [splitLineColors]
var splitAreaColorsArr = isArray$6(splitAreaColors)
? splitAreaColors
: [splitAreaColors]
var splitLines = []
var splitAreas = []
function getColorIndex(areaOrLine, areaOrLineColorList, idx) {
var colorIndex2 = idx % areaOrLineColorList.length
areaOrLine[colorIndex2] = areaOrLine[colorIndex2] || []
return colorIndex2
}
if (shape === 'circle') {
var ticksRadius = indicatorAxes[0].getTicksCoords()
var cx = radar.cx
var cy = radar.cy
for (var i2 = 0; i2 < ticksRadius.length; i2++) {
if (showSplitLine) {
var colorIndex = getColorIndex(splitLines, splitLineColorsArr, i2)
splitLines[colorIndex].push(
new Circle$2({
shape: {
cx,
cy,
r: ticksRadius[i2].coord,
},
})
)
}
if (showSplitArea && i2 < ticksRadius.length - 1) {
var colorIndex = getColorIndex(splitAreas, splitAreaColorsArr, i2)
splitAreas[colorIndex].push(
new Ring$1({
shape: {
cx,
cy,
r0: ticksRadius[i2].coord,
r: ticksRadius[i2 + 1].coord,
},
})
)
}
}
} else {
var realSplitNumber_1
var axesTicksPoints = map$1(indicatorAxes, function (indicatorAxis, idx) {
var ticksCoords = indicatorAxis.getTicksCoords()
realSplitNumber_1 =
realSplitNumber_1 == null
? ticksCoords.length - 1
: Math.min(ticksCoords.length - 1, realSplitNumber_1)
return map$1(ticksCoords, function (tickCoord) {
return radar.coordToPoint(tickCoord.coord, idx)
})
})
var prevPoints = []
for (var i2 = 0; i2 <= realSplitNumber_1; i2++) {
var points2 = []
for (var j2 = 0; j2 < indicatorAxes.length; j2++) {
points2.push(axesTicksPoints[j2][i2])
}
if (points2[0]) {
points2.push(points2[0].slice())
}
if (showSplitLine) {
var colorIndex = getColorIndex(splitLines, splitLineColorsArr, i2)
splitLines[colorIndex].push(
new Polyline$3({
shape: {
points: points2,
},
})
)
}
if (showSplitArea && prevPoints) {
var colorIndex = getColorIndex(splitAreas, splitAreaColorsArr, i2 - 1)
splitAreas[colorIndex].push(
new Polygon$1({
shape: {
points: points2.concat(prevPoints),
},
})
)
}
prevPoints = points2.slice().reverse()
}
}
var lineStyle = lineStyleModel.getLineStyle()
var areaStyle = areaStyleModel.getAreaStyle()
each$f(
splitAreas,
function (splitAreas2, idx) {
this.group.add(
mergePath(splitAreas2, {
style: defaults(
{
stroke: 'none',
fill: splitAreaColorsArr[idx % splitAreaColorsArr.length],
},
areaStyle
),
silent: true,
})
)
},
this
)
each$f(
splitLines,
function (splitLines2, idx) {
this.group.add(
mergePath(splitLines2, {
style: defaults(
{
fill: 'none',
stroke: splitLineColorsArr[idx % splitLineColorsArr.length],
},
lineStyle
),
silent: true,
})
)
},
this
)
}
RadarView2.type = 'radar'
return RadarView2
})(ComponentView$1)
var RadarView$1 = RadarView
var IndicatorAxis = (function (_super) {
__extends$2(IndicatorAxis2, _super)
function IndicatorAxis2(dim, scale2, radiusExtent) {
var _this = _super.call(this, dim, scale2, radiusExtent) || this
_this.type = 'value'
_this.angle = 0
_this.name = ''
return _this
}
return IndicatorAxis2
})(Axis$1)
var IndicatorAxis$1 = IndicatorAxis
var Radar = (function () {
function Radar2(radarModel, ecModel, api) {
this.dimensions = []
this._model = radarModel
this._indicatorAxes = map$1(
radarModel.getIndicatorModels(),
function (indicatorModel, idx) {
var dim = 'indicator_' + idx
var indicatorAxis = new IndicatorAxis$1(dim, new IntervalScale$1())
indicatorAxis.name = indicatorModel.get('name')
indicatorAxis.model = indicatorModel
indicatorModel.axis = indicatorAxis
this.dimensions.push(dim)
return indicatorAxis
},
this
)
this.resize(radarModel, api)
}
Radar2.prototype.getIndicatorAxes = function () {
return this._indicatorAxes
}
Radar2.prototype.dataToPoint = function (value2, indicatorIndex) {
var indicatorAxis = this._indicatorAxes[indicatorIndex]
return this.coordToPoint(indicatorAxis.dataToCoord(value2), indicatorIndex)
}
Radar2.prototype.coordToPoint = function (coord, indicatorIndex) {
var indicatorAxis = this._indicatorAxes[indicatorIndex]
var angle2 = indicatorAxis.angle
var x2 = this.cx + coord * Math.cos(angle2)
var y2 = this.cy - coord * Math.sin(angle2)
return [x2, y2]
}
Radar2.prototype.pointToData = function (pt3) {
var dx = pt3[0] - this.cx
var dy = pt3[1] - this.cy
var radius = Math.sqrt(dx * dx + dy * dy)
dx /= radius
dy /= radius
var radian = Math.atan2(-dy, dx)
var minRadianDiff = Infinity
var closestAxis
var closestAxisIdx = -1
for (var i2 = 0; i2 < this._indicatorAxes.length; i2++) {
var indicatorAxis = this._indicatorAxes[i2]
var diff = Math.abs(radian - indicatorAxis.angle)
if (diff < minRadianDiff) {
closestAxis = indicatorAxis
closestAxisIdx = i2
minRadianDiff = diff
}
}
return [closestAxisIdx, +(closestAxis && closestAxis.coordToData(radius))]
}
Radar2.prototype.resize = function (radarModel, api) {
var center2 = radarModel.get('center')
var viewWidth = api.getWidth()
var viewHeight = api.getHeight()
var viewSize = Math.min(viewWidth, viewHeight) / 2
this.cx = parsePercent(center2[0], viewWidth)
this.cy = parsePercent(center2[1], viewHeight)
this.startAngle = (radarModel.get('startAngle') * Math.PI) / 180
var radius = radarModel.get('radius')
if (isString$2(radius) || isNumber$2(radius)) {
radius = [0, radius]
}
this.r0 = parsePercent(radius[0], viewSize)
this.r = parsePercent(radius[1], viewSize)
each$f(
this._indicatorAxes,
function (indicatorAxis, idx) {
indicatorAxis.setExtent(this.r0, this.r)
var angle2 =
this.startAngle + (idx * Math.PI * 2) / this._indicatorAxes.length
angle2 = Math.atan2(Math.sin(angle2), Math.cos(angle2))
indicatorAxis.angle = angle2
},
this
)
}
Radar2.prototype.update = function (ecModel, api) {
var indicatorAxes = this._indicatorAxes
var radarModel = this._model
each$f(indicatorAxes, function (indicatorAxis) {
indicatorAxis.scale.setExtent(Infinity, -Infinity)
})
ecModel.eachSeriesByType(
'radar',
function (radarSeries, idx) {
if (
radarSeries.get('coordinateSystem') !== 'radar' ||
ecModel.getComponent('radar', radarSeries.get('radarIndex')) !==
radarModel
) {
return
}
var data2 = radarSeries.getData()
each$f(indicatorAxes, function (indicatorAxis) {
indicatorAxis.scale.unionExtentFromData(
data2,
data2.mapDimension(indicatorAxis.dim)
)
})
},
this
)
var splitNumber = radarModel.get('splitNumber')
var dummyScale = new IntervalScale$1()
dummyScale.setExtent(0, splitNumber)
dummyScale.setInterval(1)
each$f(indicatorAxes, function (indicatorAxis, idx) {
alignScaleTicks(indicatorAxis.scale, indicatorAxis.model, dummyScale)
})
}
Radar2.prototype.convertToPixel = function (ecModel, finder, value2) {
console.warn('Not implemented.')
return null
}
Radar2.prototype.convertFromPixel = function (ecModel, finder, pixel) {
console.warn('Not implemented.')
return null
}
Radar2.prototype.containPoint = function (point) {
console.warn('Not implemented.')
return false
}
Radar2.create = function (ecModel, api) {
var radarList = []
ecModel.eachComponent('radar', function (radarModel) {
var radar = new Radar2(radarModel, ecModel, api)
radarList.push(radar)
radarModel.coordinateSystem = radar
})
ecModel.eachSeriesByType('radar', function (radarSeries) {
if (radarSeries.get('coordinateSystem') === 'radar') {
radarSeries.coordinateSystem =
radarList[radarSeries.get('radarIndex') || 0]
}
})
return radarList
}
Radar2.dimensions = []
return Radar2
})()
var Radar$1 = Radar
function install$N(registers) {
registers.registerCoordinateSystem('radar', Radar$1)
registers.registerComponentModel(RadarModel$1)
registers.registerComponentView(RadarView$1)
registers.registerVisual({
seriesType: 'radar',
reset: function (seriesModel) {
var data2 = seriesModel.getData()
data2.each(function (idx) {
data2.setItemVisual(idx, 'legendIcon', 'roundRect')
})
data2.setVisual('legendIcon', 'roundRect')
},
})
}
function install$M(registers) {
use(install$N)
registers.registerChartView(RadarView$3)
registers.registerSeriesModel(RadarSeriesModel$1)
registers.registerLayout(radarLayout)
registers.registerProcessor(dataFilter$1('radar'))
registers.registerPreprocessor(radarBackwardCompat)
}
var ATTR = '\0_ec_interaction_mutex'
function take(zr, resourceKey, userKey) {
var store2 = getStore(zr)
store2[resourceKey] = userKey
}
function release(zr, resourceKey, userKey) {
var store2 = getStore(zr)
var uKey = store2[resourceKey]
if (uKey === userKey) {
store2[resourceKey] = null
}
}
function isTaken(zr, resourceKey) {
return !!getStore(zr)[resourceKey]
}
function getStore(zr) {
return zr[ATTR] || (zr[ATTR] = {})
}
registerAction(
{
type: 'takeGlobalCursor',
event: 'globalCursorTaken',
update: 'update',
},
noop
)
var RoamController = (function (_super) {
__extends$2(RoamController2, _super)
function RoamController2(zr) {
var _this = _super.call(this) || this
_this._zr = zr
var mousedownHandler2 = bind$1(_this._mousedownHandler, _this)
var mousemoveHandler2 = bind$1(_this._mousemoveHandler, _this)
var mouseupHandler2 = bind$1(_this._mouseupHandler, _this)
var mousewheelHandler = bind$1(_this._mousewheelHandler, _this)
var pinchHandler = bind$1(_this._pinchHandler, _this)
_this.enable = function (controlType, opt) {
this.disable()
this._opt = defaults(clone$4(opt) || {}, {
zoomOnMouseWheel: true,
moveOnMouseMove: true,
moveOnMouseWheel: false,
preventDefaultMouseMove: true,
})
if (controlType == null) {
controlType = true
}
if (
controlType === true ||
controlType === 'move' ||
controlType === 'pan'
) {
zr.on('mousedown', mousedownHandler2)
zr.on('mousemove', mousemoveHandler2)
zr.on('mouseup', mouseupHandler2)
}
if (
controlType === true ||
controlType === 'scale' ||
controlType === 'zoom'
) {
zr.on('mousewheel', mousewheelHandler)
zr.on('pinch', pinchHandler)
}
}
_this.disable = function () {
zr.off('mousedown', mousedownHandler2)
zr.off('mousemove', mousemoveHandler2)
zr.off('mouseup', mouseupHandler2)
zr.off('mousewheel', mousewheelHandler)
zr.off('pinch', pinchHandler)
}
return _this
}
RoamController2.prototype.isDragging = function () {
return this._dragging
}
RoamController2.prototype.isPinching = function () {
return this._pinching
}
RoamController2.prototype.setPointerChecker = function (pointerChecker) {
this.pointerChecker = pointerChecker
}
RoamController2.prototype.dispose = function () {
this.disable()
}
RoamController2.prototype._mousedownHandler = function (e2) {
if (isMiddleOrRightButtonOnMouseUpDown(e2)) {
return
}
var el2 = e2.target
while (el2) {
if (el2.draggable) {
return
}
el2 = el2.__hostTarget || el2.parent
}
var x2 = e2.offsetX
var y2 = e2.offsetY
if (this.pointerChecker && this.pointerChecker(e2, x2, y2)) {
this._x = x2
this._y = y2
this._dragging = true
}
}
RoamController2.prototype._mousemoveHandler = function (e2) {
if (
!this._dragging ||
!isAvailableBehavior('moveOnMouseMove', e2, this._opt) ||
e2.gestureEvent === 'pinch' ||
isTaken(this._zr, 'globalPan')
) {
return
}
var x2 = e2.offsetX
var y2 = e2.offsetY
var oldX = this._x
var oldY = this._y
var dx = x2 - oldX
var dy = y2 - oldY
this._x = x2
this._y = y2
this._opt.preventDefaultMouseMove && stop$1(e2.event)
trigger$1(this, 'pan', 'moveOnMouseMove', e2, {
dx,
dy,
oldX,
oldY,
newX: x2,
newY: y2,
isAvailableBehavior: null,
})
}
RoamController2.prototype._mouseupHandler = function (e2) {
if (!isMiddleOrRightButtonOnMouseUpDown(e2)) {
this._dragging = false
}
}
RoamController2.prototype._mousewheelHandler = function (e2) {
var shouldZoom = isAvailableBehavior('zoomOnMouseWheel', e2, this._opt)
var shouldMove = isAvailableBehavior('moveOnMouseWheel', e2, this._opt)
var wheelDelta = e2.wheelDelta
var absWheelDeltaDelta = Math.abs(wheelDelta)
var originX = e2.offsetX
var originY = e2.offsetY
if (wheelDelta === 0 || (!shouldZoom && !shouldMove)) {
return
}
if (shouldZoom) {
var factor =
absWheelDeltaDelta > 3 ? 1.4 : absWheelDeltaDelta > 1 ? 1.2 : 1.1
var scale2 = wheelDelta > 0 ? factor : 1 / factor
checkPointerAndTrigger(this, 'zoom', 'zoomOnMouseWheel', e2, {
scale: scale2,
originX,
originY,
isAvailableBehavior: null,
})
}
if (shouldMove) {
var absDelta = Math.abs(wheelDelta)
var scrollDelta =
(wheelDelta > 0 ? 1 : -1) *
(absDelta > 3 ? 0.4 : absDelta > 1 ? 0.15 : 0.05)
checkPointerAndTrigger(this, 'scrollMove', 'moveOnMouseWheel', e2, {
scrollDelta,
originX,
originY,
isAvailableBehavior: null,
})
}
}
RoamController2.prototype._pinchHandler = function (e2) {
if (isTaken(this._zr, 'globalPan')) {
return
}
var scale2 = e2.pinchScale > 1 ? 1.1 : 1 / 1.1
checkPointerAndTrigger(this, 'zoom', null, e2, {
scale: scale2,
originX: e2.pinchX,
originY: e2.pinchY,
isAvailableBehavior: null,
})
}
return RoamController2
})(Eventful$1)
function checkPointerAndTrigger(
controller,
eventName,
behaviorToCheck,
e2,
contollerEvent
) {
if (
controller.pointerChecker &&
controller.pointerChecker(
e2,
contollerEvent.originX,
contollerEvent.originY
)
) {
stop$1(e2.event)
trigger$1(controller, eventName, behaviorToCheck, e2, contollerEvent)
}
}
function trigger$1(controller, eventName, behaviorToCheck, e2, contollerEvent) {
contollerEvent.isAvailableBehavior = bind$1(
isAvailableBehavior,
null,
behaviorToCheck,
e2
)
controller.trigger(eventName, contollerEvent)
}
function isAvailableBehavior(behaviorToCheck, e2, settings) {
var setting2 = settings[behaviorToCheck]
return (
!behaviorToCheck ||
(setting2 && (!isString$2(setting2) || e2.event[setting2 + 'Key']))
)
}
var RoamController$1 = RoamController
function updateViewOnPan(controllerHost, dx, dy) {
var target2 = controllerHost.target
target2.x += dx
target2.y += dy
target2.dirty()
}
function updateViewOnZoom(controllerHost, zoomDelta, zoomX, zoomY) {
var target2 = controllerHost.target
var zoomLimit = controllerHost.zoomLimit
var newZoom = (controllerHost.zoom = controllerHost.zoom || 1)
newZoom *= zoomDelta
if (zoomLimit) {
var zoomMin = zoomLimit.min || 0
var zoomMax = zoomLimit.max || Infinity
newZoom = Math.max(Math.min(zoomMax, newZoom), zoomMin)
}
var zoomScale = newZoom / controllerHost.zoom
controllerHost.zoom = newZoom
target2.x -= (zoomX - target2.x) * (zoomScale - 1)
target2.y -= (zoomY - target2.y) * (zoomScale - 1)
target2.scaleX *= zoomScale
target2.scaleY *= zoomScale
target2.dirty()
}
var IRRELEVANT_EXCLUDES = {
axisPointer: 1,
tooltip: 1,
brush: 1,
}
function onIrrelevantElement(e2, api, targetCoordSysModel) {
var model = api.getComponentByElement(e2.topTarget)
var coordSys = model && model.coordinateSystem
return (
model &&
model !== targetCoordSysModel &&
!IRRELEVANT_EXCLUDES.hasOwnProperty(model.mainType) &&
coordSys &&
coordSys.model !== targetCoordSysModel
)
}
function parseXML(svg2) {
if (isString$2(svg2)) {
var parser2 = new DOMParser()
svg2 = parser2.parseFromString(svg2, 'text/xml')
}
var svgNode = svg2
if (svgNode.nodeType === 9) {
svgNode = svgNode.firstChild
}
while (svgNode.nodeName.toLowerCase() !== 'svg' || svgNode.nodeType !== 1) {
svgNode = svgNode.nextSibling
}
return svgNode
}
var nodeParsers
var INHERITABLE_STYLE_ATTRIBUTES_MAP = {
fill: 'fill',
stroke: 'stroke',
'stroke-width': 'lineWidth',
opacity: 'opacity',
'fill-opacity': 'fillOpacity',
'stroke-opacity': 'strokeOpacity',
'stroke-dasharray': 'lineDash',
'stroke-dashoffset': 'lineDashOffset',
'stroke-linecap': 'lineCap',
'stroke-linejoin': 'lineJoin',
'stroke-miterlimit': 'miterLimit',
'font-family': 'fontFamily',
'font-size': 'fontSize',
'font-style': 'fontStyle',
'font-weight': 'fontWeight',
'text-anchor': 'textAlign',
visibility: 'visibility',
display: 'display',
}
var INHERITABLE_STYLE_ATTRIBUTES_MAP_KEYS = keys$4(
INHERITABLE_STYLE_ATTRIBUTES_MAP
)
var SELF_STYLE_ATTRIBUTES_MAP = {
'alignment-baseline': 'textBaseline',
'stop-color': 'stopColor',
}
var SELF_STYLE_ATTRIBUTES_MAP_KEYS = keys$4(SELF_STYLE_ATTRIBUTES_MAP)
var SVGParser = (function () {
function SVGParser2() {
this._defs = {}
this._root = null
}
SVGParser2.prototype.parse = function (xml2, opt) {
opt = opt || {}
var svg2 = parseXML(xml2)
this._defsUsePending = []
var root2 = new Group$5()
this._root = root2
var named = []
var viewBox = svg2.getAttribute('viewBox') || ''
var width = parseFloat(svg2.getAttribute('width') || opt.width)
var height = parseFloat(svg2.getAttribute('height') || opt.height)
isNaN(width) && (width = null)
isNaN(height) && (height = null)
parseAttributes(svg2, root2, null, true, false)
var child = svg2.firstChild
while (child) {
this._parseNode(child, root2, named, null, false, false)
child = child.nextSibling
}
applyDefs(this._defs, this._defsUsePending)
this._defsUsePending = []
var viewBoxRect
var viewBoxTransform
if (viewBox) {
var viewBoxArr = splitNumberSequence(viewBox)
if (viewBoxArr.length >= 4) {
viewBoxRect = {
x: parseFloat(viewBoxArr[0] || 0),
y: parseFloat(viewBoxArr[1] || 0),
width: parseFloat(viewBoxArr[2]),
height: parseFloat(viewBoxArr[3]),
}
}
}
if (viewBoxRect && width != null && height != null) {
viewBoxTransform = makeViewBoxTransform(viewBoxRect, {
x: 0,
y: 0,
width,
height,
})
if (!opt.ignoreViewBox) {
var elRoot = root2
root2 = new Group$5()
root2.add(elRoot)
elRoot.scaleX = elRoot.scaleY = viewBoxTransform.scale
elRoot.x = viewBoxTransform.x
elRoot.y = viewBoxTransform.y
}
}
if (!opt.ignoreRootClip && width != null && height != null) {
root2.setClipPath(
new Rect$4({
shape: { x: 0, y: 0, width, height },
})
)
}
return {
root: root2,
width,
height,
viewBoxRect,
viewBoxTransform,
named,
}
}
SVGParser2.prototype._parseNode = function (
xmlNode,
parentGroup,
named,
namedFrom,
isInDefs,
isInText
) {
var nodeName = xmlNode.nodeName.toLowerCase()
var el2
var namedFromForSub = namedFrom
if (nodeName === 'defs') {
isInDefs = true
}
if (nodeName === 'text') {
isInText = true
}
if (nodeName === 'defs' || nodeName === 'switch') {
el2 = parentGroup
} else {
if (!isInDefs) {
var parser_1 = nodeParsers[nodeName]
if (parser_1 && hasOwn$1(nodeParsers, nodeName)) {
el2 = parser_1.call(this, xmlNode, parentGroup)
var nameAttr = xmlNode.getAttribute('name')
if (nameAttr) {
var newNamed = {
name: nameAttr,
namedFrom: null,
svgNodeTagLower: nodeName,
el: el2,
}
named.push(newNamed)
if (nodeName === 'g') {
namedFromForSub = newNamed
}
} else if (namedFrom) {
named.push({
name: namedFrom.name,
namedFrom,
svgNodeTagLower: nodeName,
el: el2,
})
}
parentGroup.add(el2)
}
}
var parser2 = paintServerParsers[nodeName]
if (parser2 && hasOwn$1(paintServerParsers, nodeName)) {
var def = parser2.call(this, xmlNode)
var id2 = xmlNode.getAttribute('id')
if (id2) {
this._defs[id2] = def
}
}
}
if (el2 && el2.isGroup) {
var child = xmlNode.firstChild
while (child) {
if (child.nodeType === 1) {
this._parseNode(
child,
el2,
named,
namedFromForSub,
isInDefs,
isInText
)
} else if (child.nodeType === 3 && isInText) {
this._parseText(child, el2)
}
child = child.nextSibling
}
}
}
SVGParser2.prototype._parseText = function (xmlNode, parentGroup) {
var text2 = new TSpan$1({
style: {
text: xmlNode.textContent,
},
silent: true,
x: this._textX || 0,
y: this._textY || 0,
})
inheritStyle(parentGroup, text2)
parseAttributes(xmlNode, text2, this._defsUsePending, false, false)
applyTextAlignment(text2, parentGroup)
var textStyle = text2.style
var fontSize2 = textStyle.fontSize
if (fontSize2 && fontSize2 < 9) {
textStyle.fontSize = 9
text2.scaleX *= fontSize2 / 9
text2.scaleY *= fontSize2 / 9
}
var font2 =
(textStyle.fontSize || textStyle.fontFamily) &&
[
textStyle.fontStyle,
textStyle.fontWeight,
(textStyle.fontSize || 12) + 'px',
textStyle.fontFamily || 'sans-serif',
].join(' ')
textStyle.font = font2
var rect = text2.getBoundingRect()
this._textX += rect.width
parentGroup.add(text2)
return text2
}
SVGParser2.internalField = (function () {
nodeParsers = {
g: function (xmlNode, parentGroup) {
var g2 = new Group$5()
inheritStyle(parentGroup, g2)
parseAttributes(xmlNode, g2, this._defsUsePending, false, false)
return g2
},
rect: function (xmlNode, parentGroup) {
var rect = new Rect$4()
inheritStyle(parentGroup, rect)
parseAttributes(xmlNode, rect, this._defsUsePending, false, false)
rect.setShape({
x: parseFloat(xmlNode.getAttribute('x') || '0'),
y: parseFloat(xmlNode.getAttribute('y') || '0'),
width: parseFloat(xmlNode.getAttribute('width') || '0'),
height: parseFloat(xmlNode.getAttribute('height') || '0'),
})
rect.silent = true
return rect
},
circle: function (xmlNode, parentGroup) {
var circle = new Circle$2()
inheritStyle(parentGroup, circle)
parseAttributes(xmlNode, circle, this._defsUsePending, false, false)
circle.setShape({
cx: parseFloat(xmlNode.getAttribute('cx') || '0'),
cy: parseFloat(xmlNode.getAttribute('cy') || '0'),
r: parseFloat(xmlNode.getAttribute('r') || '0'),
})
circle.silent = true
return circle
},
line: function (xmlNode, parentGroup) {
var line = new Line$4()
inheritStyle(parentGroup, line)
parseAttributes(xmlNode, line, this._defsUsePending, false, false)
line.setShape({
x1: parseFloat(xmlNode.getAttribute('x1') || '0'),
y1: parseFloat(xmlNode.getAttribute('y1') || '0'),
x2: parseFloat(xmlNode.getAttribute('x2') || '0'),
y2: parseFloat(xmlNode.getAttribute('y2') || '0'),
})
line.silent = true
return line
},
ellipse: function (xmlNode, parentGroup) {
var ellipse = new Ellipse$1()
inheritStyle(parentGroup, ellipse)
parseAttributes(xmlNode, ellipse, this._defsUsePending, false, false)
ellipse.setShape({
cx: parseFloat(xmlNode.getAttribute('cx') || '0'),
cy: parseFloat(xmlNode.getAttribute('cy') || '0'),
rx: parseFloat(xmlNode.getAttribute('rx') || '0'),
ry: parseFloat(xmlNode.getAttribute('ry') || '0'),
})
ellipse.silent = true
return ellipse
},
polygon: function (xmlNode, parentGroup) {
var pointsStr = xmlNode.getAttribute('points')
var pointsArr
if (pointsStr) {
pointsArr = parsePoints(pointsStr)
}
var polygon = new Polygon$1({
shape: {
points: pointsArr || [],
},
silent: true,
})
inheritStyle(parentGroup, polygon)
parseAttributes(xmlNode, polygon, this._defsUsePending, false, false)
return polygon
},
polyline: function (xmlNode, parentGroup) {
var pointsStr = xmlNode.getAttribute('points')
var pointsArr
if (pointsStr) {
pointsArr = parsePoints(pointsStr)
}
var polyline = new Polyline$3({
shape: {
points: pointsArr || [],
},
silent: true,
})
inheritStyle(parentGroup, polyline)
parseAttributes(xmlNode, polyline, this._defsUsePending, false, false)
return polyline
},
image: function (xmlNode, parentGroup) {
var img = new ZRImage$1()
inheritStyle(parentGroup, img)
parseAttributes(xmlNode, img, this._defsUsePending, false, false)
img.setStyle({
image:
xmlNode.getAttribute('xlink:href') || xmlNode.getAttribute('href'),
x: +xmlNode.getAttribute('x'),
y: +xmlNode.getAttribute('y'),
width: +xmlNode.getAttribute('width'),
height: +xmlNode.getAttribute('height'),
})
img.silent = true
return img
},
text: function (xmlNode, parentGroup) {
var x2 = xmlNode.getAttribute('x') || '0'
var y2 = xmlNode.getAttribute('y') || '0'
var dx = xmlNode.getAttribute('dx') || '0'
var dy = xmlNode.getAttribute('dy') || '0'
this._textX = parseFloat(x2) + parseFloat(dx)
this._textY = parseFloat(y2) + parseFloat(dy)
var g2 = new Group$5()
inheritStyle(parentGroup, g2)
parseAttributes(xmlNode, g2, this._defsUsePending, false, true)
return g2
},
tspan: function (xmlNode, parentGroup) {
var x2 = xmlNode.getAttribute('x')
var y2 = xmlNode.getAttribute('y')
if (x2 != null) {
this._textX = parseFloat(x2)
}
if (y2 != null) {
this._textY = parseFloat(y2)
}
var dx = xmlNode.getAttribute('dx') || '0'
var dy = xmlNode.getAttribute('dy') || '0'
var g2 = new Group$5()
inheritStyle(parentGroup, g2)
parseAttributes(xmlNode, g2, this._defsUsePending, false, true)
this._textX += parseFloat(dx)
this._textY += parseFloat(dy)
return g2
},
path: function (xmlNode, parentGroup) {
var d3 = xmlNode.getAttribute('d') || ''
var path = createFromString(d3)
inheritStyle(parentGroup, path)
parseAttributes(xmlNode, path, this._defsUsePending, false, false)
path.silent = true
return path
},
}
})()
return SVGParser2
})()
var paintServerParsers = {
lineargradient: function (xmlNode) {
var x1 = parseInt(xmlNode.getAttribute('x1') || '0', 10)
var y1 = parseInt(xmlNode.getAttribute('y1') || '0', 10)
var x2 = parseInt(xmlNode.getAttribute('x2') || '10', 10)
var y2 = parseInt(xmlNode.getAttribute('y2') || '0', 10)
var gradient = new LinearGradient$1(x1, y1, x2, y2)
parsePaintServerUnit(xmlNode, gradient)
parseGradientColorStops(xmlNode, gradient)
return gradient
},
radialgradient: function (xmlNode) {
var cx = parseInt(xmlNode.getAttribute('cx') || '0', 10)
var cy = parseInt(xmlNode.getAttribute('cy') || '0', 10)
var r2 = parseInt(xmlNode.getAttribute('r') || '0', 10)
var gradient = new RadialGradient$1(cx, cy, r2)
parsePaintServerUnit(xmlNode, gradient)
parseGradientColorStops(xmlNode, gradient)
return gradient
},
}
function parsePaintServerUnit(xmlNode, gradient) {
var gradientUnits = xmlNode.getAttribute('gradientUnits')
if (gradientUnits === 'userSpaceOnUse') {
gradient.global = true
}
}
function parseGradientColorStops(xmlNode, gradient) {
var stop2 = xmlNode.firstChild
while (stop2) {
if (stop2.nodeType === 1 && stop2.nodeName.toLocaleLowerCase() === 'stop') {
var offsetStr = stop2.getAttribute('offset')
var offset2 = void 0
if (offsetStr && offsetStr.indexOf('%') > 0) {
offset2 = parseInt(offsetStr, 10) / 100
} else if (offsetStr) {
offset2 = parseFloat(offsetStr)
} else {
offset2 = 0
}
var styleVals = {}
parseInlineStyle(stop2, styleVals, styleVals)
var stopColor =
styleVals.stopColor || stop2.getAttribute('stop-color') || '#000000'
gradient.colorStops.push({
offset: offset2,
color: stopColor,
})
}
stop2 = stop2.nextSibling
}
}
function inheritStyle(parent2, child) {
if (parent2 && parent2.__inheritedStyle) {
if (!child.__inheritedStyle) {
child.__inheritedStyle = {}
}
defaults(child.__inheritedStyle, parent2.__inheritedStyle)
}
}
function parsePoints(pointsString) {
var list2 = splitNumberSequence(pointsString)
var points2 = []
for (var i2 = 0; i2 < list2.length; i2 += 2) {
var x2 = parseFloat(list2[i2])
var y2 = parseFloat(list2[i2 + 1])
points2.push([x2, y2])
}
return points2
}
function parseAttributes(
xmlNode,
el2,
defsUsePending,
onlyInlineStyle,
isTextGroup
) {
var disp = el2
var inheritedStyle = (disp.__inheritedStyle = disp.__inheritedStyle || {})
var selfStyle = {}
if (xmlNode.nodeType === 1) {
parseTransformAttribute(xmlNode, el2)
parseInlineStyle(xmlNode, inheritedStyle, selfStyle)
if (!onlyInlineStyle) {
parseAttributeStyle(xmlNode, inheritedStyle, selfStyle)
}
}
disp.style = disp.style || {}
if (inheritedStyle.fill != null) {
disp.style.fill = getFillStrokeStyle(
disp,
'fill',
inheritedStyle.fill,
defsUsePending
)
}
if (inheritedStyle.stroke != null) {
disp.style.stroke = getFillStrokeStyle(
disp,
'stroke',
inheritedStyle.stroke,
defsUsePending
)
}
each$f(
[
'lineWidth',
'opacity',
'fillOpacity',
'strokeOpacity',
'miterLimit',
'fontSize',
],
function (propName) {
if (inheritedStyle[propName] != null) {
disp.style[propName] = parseFloat(inheritedStyle[propName])
}
}
)
each$f(
[
'lineDashOffset',
'lineCap',
'lineJoin',
'fontWeight',
'fontFamily',
'fontStyle',
'textAlign',
],
function (propName) {
if (inheritedStyle[propName] != null) {
disp.style[propName] = inheritedStyle[propName]
}
}
)
if (isTextGroup) {
disp.__selfStyle = selfStyle
}
if (inheritedStyle.lineDash) {
disp.style.lineDash = map$1(
splitNumberSequence(inheritedStyle.lineDash),
function (str) {
return parseFloat(str)
}
)
}
if (
inheritedStyle.visibility === 'hidden' ||
inheritedStyle.visibility === 'collapse'
) {
disp.invisible = true
}
if (inheritedStyle.display === 'none') {
disp.ignore = true
}
}
function applyTextAlignment(text2, parentGroup) {
var parentSelfStyle = parentGroup.__selfStyle
if (parentSelfStyle) {
var textBaseline = parentSelfStyle.textBaseline
var zrTextBaseline = textBaseline
if (!textBaseline || textBaseline === 'auto') {
zrTextBaseline = 'alphabetic'
} else if (textBaseline === 'baseline') {
zrTextBaseline = 'alphabetic'
} else if (
textBaseline === 'before-edge' ||
textBaseline === 'text-before-edge'
) {
zrTextBaseline = 'top'
} else if (
textBaseline === 'after-edge' ||
textBaseline === 'text-after-edge'
) {
zrTextBaseline = 'bottom'
} else if (textBaseline === 'central' || textBaseline === 'mathematical') {
zrTextBaseline = 'middle'
}
text2.style.textBaseline = zrTextBaseline
}
var parentInheritedStyle = parentGroup.__inheritedStyle
if (parentInheritedStyle) {
var textAlign2 = parentInheritedStyle.textAlign
var zrTextAlign = textAlign2
if (textAlign2) {
if (textAlign2 === 'middle') {
zrTextAlign = 'center'
}
text2.style.textAlign = zrTextAlign
}
}
}
var urlRegex = /^url\(\s*#(.*?)\)/
function getFillStrokeStyle(el2, method4, str, defsUsePending) {
var urlMatch = str && str.match(urlRegex)
if (urlMatch) {
var url2 = trim$1(urlMatch[1])
defsUsePending.push([el2, method4, url2])
return
}
if (str === 'none') {
str = null
}
return str
}
function applyDefs(defs, defsUsePending) {
for (var i2 = 0; i2 < defsUsePending.length; i2++) {
var item2 = defsUsePending[i2]
item2[0].style[item2[1]] = defs[item2[2]]
}
}
var numberReg = /-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g
function splitNumberSequence(rawStr) {
return rawStr.match(numberReg) || []
}
var transformRegex =
/(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.eE,]*)\)/g
var DEGREE_TO_ANGLE = Math.PI / 180
function parseTransformAttribute(xmlNode, node2) {
var transform3 = xmlNode.getAttribute('transform')
if (transform3) {
transform3 = transform3.replace(/,/g, ' ')
var transformOps_1 = []
var mt2 = null
transform3.replace(transformRegex, function (str, type5, value3) {
transformOps_1.push(type5, value3)
return ''
})
for (var i2 = transformOps_1.length - 1; i2 > 0; i2 -= 2) {
var value2 = transformOps_1[i2]
var type4 = transformOps_1[i2 - 1]
var valueArr = splitNumberSequence(value2)
mt2 = mt2 || create$1()
switch (type4) {
case 'translate':
translate$1(mt2, mt2, [
parseFloat(valueArr[0]),
parseFloat(valueArr[1] || '0'),
])
break
case 'scale':
scale$1(mt2, mt2, [
parseFloat(valueArr[0]),
parseFloat(valueArr[1] || valueArr[0]),
])
break
case 'rotate':
rotate(mt2, mt2, -parseFloat(valueArr[0]) * DEGREE_TO_ANGLE)
break
case 'skewX':
var sx = Math.tan(parseFloat(valueArr[0]) * DEGREE_TO_ANGLE)
mul(mt2, [1, 0, sx, 1, 0, 0], mt2)
break
case 'skewY':
var sy = Math.tan(parseFloat(valueArr[0]) * DEGREE_TO_ANGLE)
mul(mt2, [1, sy, 0, 1, 0, 0], mt2)
break
case 'matrix':
mt2[0] = parseFloat(valueArr[0])
mt2[1] = parseFloat(valueArr[1])
mt2[2] = parseFloat(valueArr[2])
mt2[3] = parseFloat(valueArr[3])
mt2[4] = parseFloat(valueArr[4])
mt2[5] = parseFloat(valueArr[5])
break
}
}
node2.setLocalTransform(mt2)
}
}
var styleRegex = /([^\s:;]+)\s*:\s*([^:;]+)/g
function parseInlineStyle(xmlNode, inheritableStyleResult, selfStyleResult) {
var style2 = xmlNode.getAttribute('style')
if (!style2) {
return
}
styleRegex.lastIndex = 0
var styleRegResult
while ((styleRegResult = styleRegex.exec(style2)) != null) {
var svgStlAttr = styleRegResult[1]
var zrInheritableStlAttr = hasOwn$1(
INHERITABLE_STYLE_ATTRIBUTES_MAP,
svgStlAttr
)
? INHERITABLE_STYLE_ATTRIBUTES_MAP[svgStlAttr]
: null
if (zrInheritableStlAttr) {
inheritableStyleResult[zrInheritableStlAttr] = styleRegResult[2]
}
var zrSelfStlAttr = hasOwn$1(SELF_STYLE_ATTRIBUTES_MAP, svgStlAttr)
? SELF_STYLE_ATTRIBUTES_MAP[svgStlAttr]
: null
if (zrSelfStlAttr) {
selfStyleResult[zrSelfStlAttr] = styleRegResult[2]
}
}
}
function parseAttributeStyle(xmlNode, inheritableStyleResult, selfStyleResult) {
for (var i2 = 0; i2 < INHERITABLE_STYLE_ATTRIBUTES_MAP_KEYS.length; i2++) {
var svgAttrName = INHERITABLE_STYLE_ATTRIBUTES_MAP_KEYS[i2]
var attrValue = xmlNode.getAttribute(svgAttrName)
if (attrValue != null) {
inheritableStyleResult[INHERITABLE_STYLE_ATTRIBUTES_MAP[svgAttrName]] =
attrValue
}
}
for (var i2 = 0; i2 < SELF_STYLE_ATTRIBUTES_MAP_KEYS.length; i2++) {
var svgAttrName = SELF_STYLE_ATTRIBUTES_MAP_KEYS[i2]
var attrValue = xmlNode.getAttribute(svgAttrName)
if (attrValue != null) {
selfStyleResult[SELF_STYLE_ATTRIBUTES_MAP[svgAttrName]] = attrValue
}
}
}
function makeViewBoxTransform(viewBoxRect, boundingRect) {
var scaleX = boundingRect.width / viewBoxRect.width
var scaleY = boundingRect.height / viewBoxRect.height
var scale2 = Math.min(scaleX, scaleY)
return {
scale: scale2,
x:
-(viewBoxRect.x + viewBoxRect.width / 2) * scale2 +
(boundingRect.x + boundingRect.width / 2),
y:
-(viewBoxRect.y + viewBoxRect.height / 2) * scale2 +
(boundingRect.y + boundingRect.height / 2),
}
}
function parseSVG(xml2, opt) {
var parser2 = new SVGParser()
return parser2.parse(xml2, opt)
}
var REGION_AVAILABLE_SVG_TAG_MAP = createHashMap([
'rect',
'circle',
'line',
'ellipse',
'polygon',
'polyline',
'path',
'text',
'tspan',
'g',
])
var GeoSVGResource = (function () {
function GeoSVGResource2(mapName, svg2) {
this.type = 'geoSVG'
this._usedGraphicMap = createHashMap()
this._freedGraphics = []
this._mapName = mapName
this._parsedXML = parseXML(svg2)
}
GeoSVGResource2.prototype.load = function () {
var firstGraphic = this._firstGraphic
if (!firstGraphic) {
firstGraphic = this._firstGraphic = this._buildGraphic(this._parsedXML)
this._freedGraphics.push(firstGraphic)
this._boundingRect = this._firstGraphic.boundingRect.clone()
var _a2 = createRegions(firstGraphic.named),
regions = _a2.regions,
regionsMap = _a2.regionsMap
this._regions = regions
this._regionsMap = regionsMap
}
return {
boundingRect: this._boundingRect,
regions: this._regions,
regionsMap: this._regionsMap,
}
}
GeoSVGResource2.prototype._buildGraphic = function (svgXML) {
var result
var rootFromParse
try {
result =
(svgXML &&
parseSVG(svgXML, {
ignoreViewBox: true,
ignoreRootClip: true,
})) ||
{}
rootFromParse = result.root
assert(rootFromParse != null)
} catch (e2) {
throw new Error('Invalid svg format\n' + e2.message)
}
var root2 = new Group$5()
root2.add(rootFromParse)
root2.isGeoSVGGraphicRoot = true
var svgWidth = result.width
var svgHeight = result.height
var viewBoxRect = result.viewBoxRect
var boundingRect = this._boundingRect
if (!boundingRect) {
var bRectX = void 0
var bRectY = void 0
var bRectWidth = void 0
var bRectHeight = void 0
if (svgWidth != null) {
bRectX = 0
bRectWidth = svgWidth
} else if (viewBoxRect) {
bRectX = viewBoxRect.x
bRectWidth = viewBoxRect.width
}
if (svgHeight != null) {
bRectY = 0
bRectHeight = svgHeight
} else if (viewBoxRect) {
bRectY = viewBoxRect.y
bRectHeight = viewBoxRect.height
}
if (bRectX == null || bRectY == null) {
var calculatedBoundingRect = rootFromParse.getBoundingRect()
if (bRectX == null) {
bRectX = calculatedBoundingRect.x
bRectWidth = calculatedBoundingRect.width
}
if (bRectY == null) {
bRectY = calculatedBoundingRect.y
bRectHeight = calculatedBoundingRect.height
}
}
boundingRect = this._boundingRect = new BoundingRect$1(
bRectX,
bRectY,
bRectWidth,
bRectHeight
)
}
if (viewBoxRect) {
var viewBoxTransform = makeViewBoxTransform(viewBoxRect, boundingRect)
rootFromParse.scaleX = rootFromParse.scaleY = viewBoxTransform.scale
rootFromParse.x = viewBoxTransform.x
rootFromParse.y = viewBoxTransform.y
}
root2.setClipPath(
new Rect$4({
shape: boundingRect.plain(),
})
)
var named = []
each$f(result.named, function (namedItem) {
if (REGION_AVAILABLE_SVG_TAG_MAP.get(namedItem.svgNodeTagLower) != null) {
named.push(namedItem)
setSilent(namedItem.el)
}
})
return {
root: root2,
boundingRect,
named,
}
}
GeoSVGResource2.prototype.useGraphic = function (hostKey) {
var usedRootMap = this._usedGraphicMap
var svgGraphic = usedRootMap.get(hostKey)
if (svgGraphic) {
return svgGraphic
}
svgGraphic =
this._freedGraphics.pop() || this._buildGraphic(this._parsedXML)
usedRootMap.set(hostKey, svgGraphic)
return svgGraphic
}
GeoSVGResource2.prototype.freeGraphic = function (hostKey) {
var usedRootMap = this._usedGraphicMap
var svgGraphic = usedRootMap.get(hostKey)
if (svgGraphic) {
usedRootMap.removeKey(hostKey)
this._freedGraphics.push(svgGraphic)
}
}
return GeoSVGResource2
})()
function setSilent(el2) {
el2.silent = false
if (el2.isGroup) {
el2.traverse(function (child) {
child.silent = false
})
}
}
function createRegions(named) {
var regions = []
var regionsMap = createHashMap()
each$f(named, function (namedItem) {
if (namedItem.namedFrom != null) {
return
}
var region = new GeoSVGRegion(namedItem.name, namedItem.el)
regions.push(region)
regionsMap.set(namedItem.name, region)
})
return {
regions,
regionsMap,
}
}
var geoCoord = [126, 25]
var nanhaiName = '\u5357\u6D77\u8BF8\u5C9B'
var points$1 = [
[
[0, 3.5],
[7, 11.2],
[15, 11.9],
[30, 7],
[42, 0.7],
[52, 0.7],
[56, 7.7],
[59, 0.7],
[64, 0.7],
[64, 0],
[5, 0],
[0, 3.5],
],
[
[13, 16.1],
[19, 14.7],
[16, 21.7],
[11, 23.1],
[13, 16.1],
],
[
[12, 32.2],
[14, 38.5],
[15, 38.5],
[13, 32.2],
[12, 32.2],
],
[
[16, 47.6],
[12, 53.2],
[13, 53.2],
[18, 47.6],
[16, 47.6],
],
[
[6, 64.4],
[8, 70],
[9, 70],
[8, 64.4],
[6, 64.4],
],
[
[23, 82.6],
[29, 79.8],
[30, 79.8],
[25, 82.6],
[23, 82.6],
],
[
[37, 70.7],
[43, 62.3],
[44, 62.3],
[39, 70.7],
[37, 70.7],
],
[
[48, 51.1],
[51, 45.5],
[53, 45.5],
[50, 51.1],
[48, 51.1],
],
[
[51, 35],
[51, 28.7],
[53, 28.7],
[53, 35],
[51, 35],
],
[
[52, 22.4],
[55, 17.5],
[56, 17.5],
[53, 22.4],
[52, 22.4],
],
[
[58, 12.6],
[62, 7],
[63, 7],
[60, 12.6],
[58, 12.6],
],
[
[0, 3.5],
[0, 93.1],
[64, 93.1],
[64, 0],
[63, 0],
[63, 92.4],
[1, 92.4],
[1, 3.5],
[0, 3.5],
],
]
for (var i = 0; i < points$1.length; i++) {
for (var k = 0; k < points$1[i].length; k++) {
points$1[i][k][0] /= 10.5
points$1[i][k][1] /= -10.5 / 0.75
points$1[i][k][0] += geoCoord[0]
points$1[i][k][1] += geoCoord[1]
}
}
function fixNanhai(mapType, regions) {
if (mapType === 'china') {
for (var i2 = 0; i2 < regions.length; i2++) {
if (regions[i2].name === nanhaiName) {
return
}
}
regions.push(
new GeoJSONRegion(
nanhaiName,
map$1(points$1, function (exterior) {
return {
type: 'polygon',
exterior,
}
}),
geoCoord
)
)
}
}
var coordsOffsetMap = {
'\u5357\u6D77\u8BF8\u5C9B': [32, 80],
'\u5E7F\u4E1C': [0, -10],
'\u9999\u6E2F': [10, 5],
'\u6FB3\u95E8': [-10, 10],
'\u5929\u6D25': [5, 5],
}
function fixTextCoords(mapType, region) {
if (mapType === 'china') {
var coordFix = coordsOffsetMap[region.name]
if (coordFix) {
var cp = region.getCenter()
cp[0] += coordFix[0] / 10.5
cp[1] += -coordFix[1] / (10.5 / 0.75)
region.setCenter(cp)
}
}
}
var points = [
[
[123.45165252685547, 25.73527164402261],
[123.49731445312499, 25.73527164402261],
[123.49731445312499, 25.750734064600884],
[123.45165252685547, 25.750734064600884],
[123.45165252685547, 25.73527164402261],
],
]
function fixDiaoyuIsland(mapType, region) {
if (mapType === 'china' && region.name === '\u53F0\u6E7E') {
region.geometries.push({
type: 'polygon',
exterior: points[0],
})
}
}
var DEFAULT_NAME_PROPERTY = 'name'
var GeoJSONResource = (function () {
function GeoJSONResource2(mapName, geoJSON, specialAreas) {
this.type = 'geoJSON'
this._parsedMap = createHashMap()
this._mapName = mapName
this._specialAreas = specialAreas
this._geoJSON = parseInput(geoJSON)
}
GeoJSONResource2.prototype.load = function (nameMap, nameProperty) {
nameProperty = nameProperty || DEFAULT_NAME_PROPERTY
var parsed = this._parsedMap.get(nameProperty)
if (!parsed) {
var rawRegions = this._parseToRegions(nameProperty)
parsed = this._parsedMap.set(nameProperty, {
regions: rawRegions,
boundingRect: calculateBoundingRect(rawRegions),
})
}
var regionsMap = createHashMap()
var finalRegions = []
each$f(parsed.regions, function (region) {
var regionName = region.name
if (nameMap && hasOwn$1(nameMap, regionName)) {
region = region.cloneShallow((regionName = nameMap[regionName]))
}
finalRegions.push(region)
regionsMap.set(regionName, region)
})
return {
regions: finalRegions,
boundingRect: parsed.boundingRect || new BoundingRect$1(0, 0, 0, 0),
regionsMap,
}
}
GeoJSONResource2.prototype._parseToRegions = function (nameProperty) {
var mapName = this._mapName
var geoJSON = this._geoJSON
var rawRegions
try {
rawRegions = geoJSON ? parseGeoJSON(geoJSON, nameProperty) : []
} catch (e2) {
throw new Error('Invalid geoJson format\n' + e2.message)
}
fixNanhai(mapName, rawRegions)
each$f(
rawRegions,
function (region) {
var regionName = region.name
fixTextCoords(mapName, region)
fixDiaoyuIsland(mapName, region)
var specialArea = this._specialAreas && this._specialAreas[regionName]
if (specialArea) {
region.transformTo(
specialArea.left,
specialArea.top,
specialArea.width,
specialArea.height
)
}
},
this
)
return rawRegions
}
GeoJSONResource2.prototype.getMapForUser = function () {
return {
geoJson: this._geoJSON,
geoJSON: this._geoJSON,
specialAreas: this._specialAreas,
}
}
return GeoJSONResource2
})()
function calculateBoundingRect(regions) {
var rect
for (var i2 = 0; i2 < regions.length; i2++) {
var regionRect = regions[i2].getBoundingRect()
rect = rect || regionRect.clone()
rect.union(regionRect)
}
return rect
}
function parseInput(source2) {
return !isString$2(source2)
? source2
: typeof JSON !== 'undefined' && JSON.parse
? JSON.parse(source2)
: new Function('return (' + source2 + ');')()
}
var storage = createHashMap()
var geoSourceManager = {
registerMap: function (mapName, rawDef, rawSpecialAreas) {
if (rawDef.svg) {
var resource = new GeoSVGResource(mapName, rawDef.svg)
storage.set(mapName, resource)
} else {
var geoJSON = rawDef.geoJson || rawDef.geoJSON
if (geoJSON && !rawDef.features) {
rawSpecialAreas = rawDef.specialAreas
} else {
geoJSON = rawDef
}
var resource = new GeoJSONResource(mapName, geoJSON, rawSpecialAreas)
storage.set(mapName, resource)
}
},
getGeoResource: function (mapName) {
return storage.get(mapName)
},
getMapForUser: function (mapName) {
var resource = storage.get(mapName)
return resource && resource.type === 'geoJSON' && resource.getMapForUser()
},
load: function (mapName, nameMap, nameProperty) {
var resource = storage.get(mapName)
if (!resource) {
return
}
return resource.load(nameMap, nameProperty)
},
}
var OPTION_STYLE_ENABLED_TAGS = [
'rect',
'circle',
'line',
'ellipse',
'polygon',
'polyline',
'path',
]
var OPTION_STYLE_ENABLED_TAG_MAP = createHashMap(OPTION_STYLE_ENABLED_TAGS)
var STATE_TRIGGER_TAG_MAP = createHashMap(
OPTION_STYLE_ENABLED_TAGS.concat(['g'])
)
var LABEL_HOST_MAP = createHashMap(OPTION_STYLE_ENABLED_TAGS.concat(['g']))
var mapLabelRaw = makeInner()
function getFixedItemStyle(model) {
var itemStyle = model.getItemStyle()
var areaColor = model.get('areaColor')
if (areaColor != null) {
itemStyle.fill = areaColor
}
return itemStyle
}
function fixLineStyle(styleHost) {
var style2 = styleHost.style
if (style2) {
style2.stroke = style2.stroke || style2.fill
style2.fill = null
}
}
var MapDraw = (function () {
function MapDraw2(api) {
var group = new Group$5()
this.uid = getUID('ec_map_draw')
this._controller = new RoamController$1(api.getZr())
this._controllerHost = {
target: group,
}
this.group = group
group.add((this._regionsGroup = new Group$5()))
group.add((this._svgGroup = new Group$5()))
}
MapDraw2.prototype.draw = function (
mapOrGeoModel,
ecModel,
api,
fromView,
payload
) {
var isGeo = mapOrGeoModel.mainType === 'geo'
var data2 = mapOrGeoModel.getData && mapOrGeoModel.getData()
isGeo &&
ecModel.eachComponent(
{
mainType: 'series',
subType: 'map',
},
function (mapSeries) {
if (!data2 && mapSeries.getHostGeoModel() === mapOrGeoModel) {
data2 = mapSeries.getData()
}
}
)
var geo = mapOrGeoModel.coordinateSystem
var regionsGroup = this._regionsGroup
var group = this.group
var transformInfo = geo.getTransformInfo()
var transformInfoRaw = transformInfo.raw
var transformInfoRoam = transformInfo.roam
var isFirstDraw = !regionsGroup.childAt(0) || payload
if (isFirstDraw) {
group.x = transformInfoRoam.x
group.y = transformInfoRoam.y
group.scaleX = transformInfoRoam.scaleX
group.scaleY = transformInfoRoam.scaleY
group.dirty()
} else {
updateProps$1(group, transformInfoRoam, mapOrGeoModel)
}
var isVisualEncodedByVisualMap =
data2 &&
data2.getVisual('visualMeta') &&
data2.getVisual('visualMeta').length > 0
var viewBuildCtx = {
api,
geo,
mapOrGeoModel,
data: data2,
isVisualEncodedByVisualMap,
isGeo,
transformInfoRaw,
}
if (geo.resourceType === 'geoJSON') {
this._buildGeoJSON(viewBuildCtx)
} else if (geo.resourceType === 'geoSVG') {
this._buildSVG(viewBuildCtx)
}
this._updateController(mapOrGeoModel, ecModel, api)
this._updateMapSelectHandler(mapOrGeoModel, regionsGroup, api, fromView)
}
MapDraw2.prototype._buildGeoJSON = function (viewBuildCtx) {
var regionsGroupByName = (this._regionsGroupByName = createHashMap())
var regionsInfoByName = createHashMap()
var regionsGroup = this._regionsGroup
var transformInfoRaw = viewBuildCtx.transformInfoRaw
var mapOrGeoModel = viewBuildCtx.mapOrGeoModel
var data2 = viewBuildCtx.data
var projection = viewBuildCtx.geo.projection
var projectionStream = projection && projection.stream
function transformPoint(point, project) {
if (project) {
point = project(point)
}
return (
point && [
point[0] * transformInfoRaw.scaleX + transformInfoRaw.x,
point[1] * transformInfoRaw.scaleY + transformInfoRaw.y,
]
)
}
function transformPolygonPoints(inPoints) {
var outPoints = []
var project = !projectionStream && projection && projection.project
for (var i2 = 0; i2 < inPoints.length; ++i2) {
var newPt = transformPoint(inPoints[i2], project)
newPt && outPoints.push(newPt)
}
return outPoints
}
function getPolyShape(points2) {
return {
shape: {
points: transformPolygonPoints(points2),
},
}
}
regionsGroup.removeAll()
each$f(viewBuildCtx.geo.regions, function (region) {
var regionName = region.name
var regionGroup = regionsGroupByName.get(regionName)
var _a2 = regionsInfoByName.get(regionName) || {},
dataIdx = _a2.dataIdx,
regionModel = _a2.regionModel
if (!regionGroup) {
regionGroup = regionsGroupByName.set(regionName, new Group$5())
regionsGroup.add(regionGroup)
dataIdx = data2 ? data2.indexOfName(regionName) : null
regionModel = viewBuildCtx.isGeo
? mapOrGeoModel.getRegionModel(regionName)
: data2
? data2.getItemModel(dataIdx)
: null
regionsInfoByName.set(regionName, {
dataIdx,
regionModel,
})
}
var polygonSubpaths = []
var polylineSubpaths = []
each$f(region.geometries, function (geometry) {
if (geometry.type === 'polygon') {
var polys = [geometry.exterior].concat(geometry.interiors || [])
if (projectionStream) {
polys = projectPolys(polys, projectionStream)
}
each$f(polys, function (poly) {
polygonSubpaths.push(new Polygon$1(getPolyShape(poly)))
})
} else {
var points2 = geometry.points
if (projectionStream) {
points2 = projectPolys(points2, projectionStream, true)
}
each$f(points2, function (points3) {
polylineSubpaths.push(new Polyline$3(getPolyShape(points3)))
})
}
})
var centerPt = transformPoint(
region.getCenter(),
projection && projection.project
)
function createCompoundPath(subpaths, isLine) {
if (!subpaths.length) {
return
}
var compoundPath = new CompoundPath$1({
culling: true,
segmentIgnoreThreshold: 1,
shape: {
paths: subpaths,
},
})
regionGroup.add(compoundPath)
applyOptionStyleForRegion(
viewBuildCtx,
compoundPath,
dataIdx,
regionModel
)
resetLabelForRegion(
viewBuildCtx,
compoundPath,
regionName,
regionModel,
mapOrGeoModel,
dataIdx,
centerPt
)
if (isLine) {
fixLineStyle(compoundPath)
each$f(compoundPath.states, fixLineStyle)
}
}
createCompoundPath(polygonSubpaths)
createCompoundPath(polylineSubpaths, true)
})
regionsGroupByName.each(function (regionGroup, regionName) {
var _a2 = regionsInfoByName.get(regionName),
dataIdx = _a2.dataIdx,
regionModel = _a2.regionModel
resetEventTriggerForRegion(
viewBuildCtx,
regionGroup,
regionName,
regionModel,
mapOrGeoModel,
dataIdx
)
resetTooltipForRegion(
viewBuildCtx,
regionGroup,
regionName,
regionModel,
mapOrGeoModel
)
resetStateTriggerForRegion(
viewBuildCtx,
regionGroup,
regionName,
regionModel,
mapOrGeoModel
)
}, this)
}
MapDraw2.prototype._buildSVG = function (viewBuildCtx) {
var mapName = viewBuildCtx.geo.map
var transformInfoRaw = viewBuildCtx.transformInfoRaw
this._svgGroup.x = transformInfoRaw.x
this._svgGroup.y = transformInfoRaw.y
this._svgGroup.scaleX = transformInfoRaw.scaleX
this._svgGroup.scaleY = transformInfoRaw.scaleY
if (this._svgResourceChanged(mapName)) {
this._freeSVG()
this._useSVG(mapName)
}
var svgDispatcherMap = (this._svgDispatcherMap = createHashMap())
var focusSelf = false
each$f(
this._svgGraphicRecord.named,
function (namedItem) {
var regionName = namedItem.name
var mapOrGeoModel = viewBuildCtx.mapOrGeoModel
var data2 = viewBuildCtx.data
var svgNodeTagLower = namedItem.svgNodeTagLower
var el2 = namedItem.el
var dataIdx = data2 ? data2.indexOfName(regionName) : null
var regionModel = mapOrGeoModel.getRegionModel(regionName)
if (
OPTION_STYLE_ENABLED_TAG_MAP.get(svgNodeTagLower) != null &&
el2 instanceof Displayable$1
) {
applyOptionStyleForRegion(viewBuildCtx, el2, dataIdx, regionModel)
}
if (el2 instanceof Displayable$1) {
el2.culling = true
}
el2.z2EmphasisLift = 0
if (!namedItem.namedFrom) {
if (LABEL_HOST_MAP.get(svgNodeTagLower) != null) {
resetLabelForRegion(
viewBuildCtx,
el2,
regionName,
regionModel,
mapOrGeoModel,
dataIdx,
null
)
}
resetEventTriggerForRegion(
viewBuildCtx,
el2,
regionName,
regionModel,
mapOrGeoModel,
dataIdx
)
resetTooltipForRegion(
viewBuildCtx,
el2,
regionName,
regionModel,
mapOrGeoModel
)
if (STATE_TRIGGER_TAG_MAP.get(svgNodeTagLower) != null) {
var focus_1 = resetStateTriggerForRegion(
viewBuildCtx,
el2,
regionName,
regionModel,
mapOrGeoModel
)
if (focus_1 === 'self') {
focusSelf = true
}
var els =
svgDispatcherMap.get(regionName) ||
svgDispatcherMap.set(regionName, [])
els.push(el2)
}
}
},
this
)
this._enableBlurEntireSVG(focusSelf, viewBuildCtx)
}
MapDraw2.prototype._enableBlurEntireSVG = function (focusSelf, viewBuildCtx) {
if (focusSelf && viewBuildCtx.isGeo) {
var blurStyle = viewBuildCtx.mapOrGeoModel
.getModel(['blur', 'itemStyle'])
.getItemStyle()
var opacity_1 = blurStyle.opacity
this._svgGraphicRecord.root.traverse(function (el2) {
if (!el2.isGroup) {
setDefaultStateProxy(el2)
var style2 = el2.ensureState('blur').style || {}
if (style2.opacity == null && opacity_1 != null) {
style2.opacity = opacity_1
}
el2.ensureState('emphasis')
}
})
}
}
MapDraw2.prototype.remove = function () {
this._regionsGroup.removeAll()
this._regionsGroupByName = null
this._svgGroup.removeAll()
this._freeSVG()
this._controller.dispose()
this._controllerHost = null
}
MapDraw2.prototype.findHighDownDispatchers = function (name2, geoModel) {
if (name2 == null) {
return []
}
var geo = geoModel.coordinateSystem
if (geo.resourceType === 'geoJSON') {
var regionsGroupByName = this._regionsGroupByName
if (regionsGroupByName) {
var regionGroup = regionsGroupByName.get(name2)
return regionGroup ? [regionGroup] : []
}
} else if (geo.resourceType === 'geoSVG') {
return (this._svgDispatcherMap && this._svgDispatcherMap.get(name2)) || []
}
}
MapDraw2.prototype._svgResourceChanged = function (mapName) {
return this._svgMapName !== mapName
}
MapDraw2.prototype._useSVG = function (mapName) {
var resource = geoSourceManager.getGeoResource(mapName)
if (resource && resource.type === 'geoSVG') {
var svgGraphic = resource.useGraphic(this.uid)
this._svgGroup.add(svgGraphic.root)
this._svgGraphicRecord = svgGraphic
this._svgMapName = mapName
}
}
MapDraw2.prototype._freeSVG = function () {
var mapName = this._svgMapName
if (mapName == null) {
return
}
var resource = geoSourceManager.getGeoResource(mapName)
if (resource && resource.type === 'geoSVG') {
resource.freeGraphic(this.uid)
}
this._svgGraphicRecord = null
this._svgDispatcherMap = null
this._svgGroup.removeAll()
this._svgMapName = null
}
MapDraw2.prototype._updateController = function (
mapOrGeoModel,
ecModel,
api
) {
var geo = mapOrGeoModel.coordinateSystem
var controller = this._controller
var controllerHost = this._controllerHost
controllerHost.zoomLimit = mapOrGeoModel.get('scaleLimit')
controllerHost.zoom = geo.getZoom()
controller.enable(mapOrGeoModel.get('roam') || false)
var mainType = mapOrGeoModel.mainType
function makeActionBase() {
var action = {
type: 'geoRoam',
componentType: mainType,
}
action[mainType + 'Id'] = mapOrGeoModel.id
return action
}
controller.off('pan').on(
'pan',
function (e2) {
this._mouseDownFlag = false
updateViewOnPan(controllerHost, e2.dx, e2.dy)
api.dispatchAction(
extend(makeActionBase(), {
dx: e2.dx,
dy: e2.dy,
animation: {
duration: 0,
},
})
)
},
this
)
controller.off('zoom').on(
'zoom',
function (e2) {
this._mouseDownFlag = false
updateViewOnZoom(controllerHost, e2.scale, e2.originX, e2.originY)
api.dispatchAction(
extend(makeActionBase(), {
zoom: e2.scale,
originX: e2.originX,
originY: e2.originY,
animation: {
duration: 0,
},
})
)
},
this
)
controller.setPointerChecker(function (e2, x2, y2) {
return (
geo.containPoint([x2, y2]) &&
!onIrrelevantElement(e2, api, mapOrGeoModel)
)
})
}
MapDraw2.prototype.resetForLabelLayout = function () {
this.group.traverse(function (el2) {
var label = el2.getTextContent()
if (label) {
label.ignore = mapLabelRaw(label).ignore
}
})
}
MapDraw2.prototype._updateMapSelectHandler = function (
mapOrGeoModel,
regionsGroup,
api,
fromView
) {
var mapDraw = this
regionsGroup.off('mousedown')
regionsGroup.off('click')
if (mapOrGeoModel.get('selectedMode')) {
regionsGroup.on('mousedown', function () {
mapDraw._mouseDownFlag = true
})
regionsGroup.on('click', function (e2) {
if (!mapDraw._mouseDownFlag) {
return
}
mapDraw._mouseDownFlag = false
})
}
}
return MapDraw2
})()
function applyOptionStyleForRegion(viewBuildCtx, el2, dataIndex, regionModel) {
var normalStyleModel = regionModel.getModel('itemStyle')
var emphasisStyleModel = regionModel.getModel(['emphasis', 'itemStyle'])
var blurStyleModel = regionModel.getModel(['blur', 'itemStyle'])
var selectStyleModel = regionModel.getModel(['select', 'itemStyle'])
var normalStyle = getFixedItemStyle(normalStyleModel)
var emphasisStyle = getFixedItemStyle(emphasisStyleModel)
var selectStyle = getFixedItemStyle(selectStyleModel)
var blurStyle = getFixedItemStyle(blurStyleModel)
var data2 = viewBuildCtx.data
if (data2) {
var style2 = data2.getItemVisual(dataIndex, 'style')
var decal = data2.getItemVisual(dataIndex, 'decal')
if (viewBuildCtx.isVisualEncodedByVisualMap && style2.fill) {
normalStyle.fill = style2.fill
}
if (decal) {
normalStyle.decal = createOrUpdatePatternFromDecal(
decal,
viewBuildCtx.api
)
}
}
el2.setStyle(normalStyle)
el2.style.strokeNoScale = true
el2.ensureState('emphasis').style = emphasisStyle
el2.ensureState('select').style = selectStyle
el2.ensureState('blur').style = blurStyle
setDefaultStateProxy(el2)
}
function resetLabelForRegion(
viewBuildCtx,
el2,
regionName,
regionModel,
mapOrGeoModel,
dataIdx,
labelXY
) {
var data2 = viewBuildCtx.data
var isGeo = viewBuildCtx.isGeo
var isDataNaN =
data2 && isNaN(data2.get(data2.mapDimension('value'), dataIdx))
var itemLayout = data2 && data2.getItemLayout(dataIdx)
if (isGeo || isDataNaN || (itemLayout && itemLayout.showLabel)) {
var query = !isGeo ? dataIdx : regionName
var labelFetcher = void 0
if (!data2 || dataIdx >= 0) {
labelFetcher = mapOrGeoModel
}
var specifiedTextOpt = labelXY
? {
normal: {
align: 'center',
verticalAlign: 'middle',
},
}
: null
setLabelStyle(
el2,
getLabelStatesModels(regionModel),
{
labelFetcher,
labelDataIndex: query,
defaultText: regionName,
},
specifiedTextOpt
)
var textEl = el2.getTextContent()
if (textEl) {
mapLabelRaw(textEl).ignore = textEl.ignore
if (el2.textConfig && labelXY) {
var rect = el2.getBoundingRect().clone()
el2.textConfig.layoutRect = rect
el2.textConfig.position = [
((labelXY[0] - rect.x) / rect.width) * 100 + '%',
((labelXY[1] - rect.y) / rect.height) * 100 + '%',
]
}
}
el2.disableLabelAnimation = true
} else {
el2.removeTextContent()
el2.removeTextConfig()
el2.disableLabelAnimation = null
}
}
function resetEventTriggerForRegion(
viewBuildCtx,
eventTrigger,
regionName,
regionModel,
mapOrGeoModel,
dataIdx
) {
if (viewBuildCtx.data) {
viewBuildCtx.data.setItemGraphicEl(dataIdx, eventTrigger)
} else {
getECData(eventTrigger).eventData = {
componentType: 'geo',
componentIndex: mapOrGeoModel.componentIndex,
geoIndex: mapOrGeoModel.componentIndex,
name: regionName,
region: (regionModel && regionModel.option) || {},
}
}
}
function resetTooltipForRegion(
viewBuildCtx,
el2,
regionName,
regionModel,
mapOrGeoModel
) {
if (!viewBuildCtx.data) {
setTooltipConfig({
el: el2,
componentModel: mapOrGeoModel,
itemName: regionName,
itemTooltipOption: regionModel.get('tooltip'),
})
}
}
function resetStateTriggerForRegion(
viewBuildCtx,
el2,
regionName,
regionModel,
mapOrGeoModel
) {
el2.highDownSilentOnTouch = !!mapOrGeoModel.get('selectedMode')
var emphasisModel = regionModel.getModel('emphasis')
var focus2 = emphasisModel.get('focus')
toggleHoverEmphasis(
el2,
focus2,
emphasisModel.get('blurScope'),
emphasisModel.get('disabled')
)
if (viewBuildCtx.isGeo) {
enableComponentHighDownFeatures(el2, mapOrGeoModel, regionName)
}
return focus2
}
function projectPolys(rings, createStream, isLine) {
var polygons = []
var curPoly
function startPolygon() {
curPoly = []
}
function endPolygon() {
if (curPoly.length) {
polygons.push(curPoly)
curPoly = []
}
}
var stream = createStream({
polygonStart: startPolygon,
polygonEnd: endPolygon,
lineStart: startPolygon,
lineEnd: endPolygon,
point: function (x2, y2) {
if (isFinite(x2) && isFinite(y2)) {
curPoly.push([x2, y2])
}
},
sphere: function () {},
})
!isLine && stream.polygonStart()
each$f(rings, function (ring) {
stream.lineStart()
for (var i2 = 0; i2 < ring.length; i2++) {
stream.point(ring[i2][0], ring[i2][1])
}
stream.lineEnd()
})
!isLine && stream.polygonEnd()
return polygons
}
var MapDraw$1 = MapDraw
var MapView = (function (_super) {
__extends$2(MapView2, _super)
function MapView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = MapView2.type
return _this
}
MapView2.prototype.render = function (mapModel, ecModel, api, payload) {
if (
payload &&
payload.type === 'mapToggleSelect' &&
payload.from === this.uid
) {
return
}
var group = this.group
group.removeAll()
if (mapModel.getHostGeoModel()) {
return
}
if (this._mapDraw && payload && payload.type === 'geoRoam') {
this._mapDraw.resetForLabelLayout()
}
if (
!(
payload &&
payload.type === 'geoRoam' &&
payload.componentType === 'series' &&
payload.seriesId === mapModel.id
)
) {
if (mapModel.needsDrawMap) {
var mapDraw = this._mapDraw || new MapDraw$1(api)
group.add(mapDraw.group)
mapDraw.draw(mapModel, ecModel, api, this, payload)
this._mapDraw = mapDraw
} else {
this._mapDraw && this._mapDraw.remove()
this._mapDraw = null
}
} else {
var mapDraw = this._mapDraw
mapDraw && group.add(mapDraw.group)
}
mapModel.get('showLegendSymbol') &&
ecModel.getComponent('legend') &&
this._renderSymbols(mapModel, ecModel, api)
}
MapView2.prototype.remove = function () {
this._mapDraw && this._mapDraw.remove()
this._mapDraw = null
this.group.removeAll()
}
MapView2.prototype.dispose = function () {
this._mapDraw && this._mapDraw.remove()
this._mapDraw = null
}
MapView2.prototype._renderSymbols = function (mapModel, ecModel, api) {
var originalData = mapModel.originalData
var group = this.group
originalData.each(
originalData.mapDimension('value'),
function (value2, originalDataIndex) {
if (isNaN(value2)) {
return
}
var layout2 = originalData.getItemLayout(originalDataIndex)
if (!layout2 || !layout2.point) {
return
}
var point = layout2.point
var offset2 = layout2.offset
var circle = new Circle$2({
style: {
fill: mapModel.getData().getVisual('style').fill,
},
shape: {
cx: point[0] + offset2 * 9,
cy: point[1],
r: 3,
},
silent: true,
z2: 8 + (!offset2 ? Z2_EMPHASIS_LIFT + 1 : 0),
})
if (!offset2) {
var fullData = mapModel.mainSeries.getData()
var name_1 = originalData.getName(originalDataIndex)
var fullIndex_1 = fullData.indexOfName(name_1)
var itemModel = originalData.getItemModel(originalDataIndex)
var labelModel = itemModel.getModel('label')
var regionGroup = fullData.getItemGraphicEl(fullIndex_1)
setLabelStyle(circle, getLabelStatesModels(itemModel), {
labelFetcher: {
getFormattedLabel: function (idx, state2) {
return mapModel.getFormattedLabel(fullIndex_1, state2)
},
},
defaultText: name_1,
})
circle.disableLabelAnimation = true
if (!labelModel.get('position')) {
circle.setTextConfig({
position: 'bottom',
})
}
regionGroup.onHoverStateChange = function (toState) {
setStatesFlag(circle, toState)
}
}
group.add(circle)
}
)
}
MapView2.type = 'map'
return MapView2
})(ChartView$1)
var MapView$1 = MapView
var MapSeries = (function (_super) {
__extends$2(MapSeries2, _super)
function MapSeries2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = MapSeries2.type
_this.needsDrawMap = false
_this.seriesGroup = []
_this.getTooltipPosition = function (dataIndex) {
if (dataIndex != null) {
var name_1 = this.getData().getName(dataIndex)
var geo = this.coordinateSystem
var region = geo.getRegion(name_1)
return region && geo.dataToPoint(region.getCenter())
}
}
return _this
}
MapSeries2.prototype.getInitialData = function (option2) {
var data2 = createSeriesDataSimply(this, {
coordDimensions: ['value'],
encodeDefaulter: curry$1(makeSeriesEncodeForNameBased, this),
})
var dataNameMap = createHashMap()
var toAppendNames = []
for (var i2 = 0, len2 = data2.count(); i2 < len2; i2++) {
var name_2 = data2.getName(i2)
dataNameMap.set(name_2, true)
}
var geoSource = geoSourceManager.load(
this.getMapType(),
this.option.nameMap,
this.option.nameProperty
)
each$f(geoSource.regions, function (region) {
var name2 = region.name
if (!dataNameMap.get(name2)) {
toAppendNames.push(name2)
}
})
data2.appendValues([], toAppendNames)
return data2
}
MapSeries2.prototype.getHostGeoModel = function () {
var geoIndex = this.option.geoIndex
return geoIndex != null ? this.ecModel.getComponent('geo', geoIndex) : null
}
MapSeries2.prototype.getMapType = function () {
return (this.getHostGeoModel() || this).option.map
}
MapSeries2.prototype.getRawValue = function (dataIndex) {
var data2 = this.getData()
return data2.get(data2.mapDimension('value'), dataIndex)
}
MapSeries2.prototype.getRegionModel = function (regionName) {
var data2 = this.getData()
return data2.getItemModel(data2.indexOfName(regionName))
}
MapSeries2.prototype.formatTooltip = function (
dataIndex,
multipleSeries,
dataType2
) {
var data2 = this.getData()
var value2 = this.getRawValue(dataIndex)
var name2 = data2.getName(dataIndex)
var seriesGroup = this.seriesGroup
var seriesNames = []
for (var i2 = 0; i2 < seriesGroup.length; i2++) {
var otherIndex = seriesGroup[i2].originalData.indexOfName(name2)
var valueDim = data2.mapDimension('value')
if (!isNaN(seriesGroup[i2].originalData.get(valueDim, otherIndex))) {
seriesNames.push(seriesGroup[i2].name)
}
}
return createTooltipMarkup('section', {
header: seriesNames.join(', '),
noHeader: !seriesNames.length,
blocks: [
createTooltipMarkup('nameValue', {
name: name2,
value: value2,
}),
],
})
}
MapSeries2.prototype.setZoom = function (zoom) {
this.option.zoom = zoom
}
MapSeries2.prototype.setCenter = function (center2) {
this.option.center = center2
}
MapSeries2.prototype.getLegendIcon = function (opt) {
var iconType = opt.icon || 'roundRect'
var icon = createSymbol$1(
iconType,
0,
0,
opt.itemWidth,
opt.itemHeight,
opt.itemStyle.fill
)
icon.setStyle(opt.itemStyle)
icon.style.stroke = 'none'
if (iconType.indexOf('empty') > -1) {
icon.style.stroke = icon.style.fill
icon.style.fill = '#fff'
icon.style.lineWidth = 2
}
return icon
}
MapSeries2.type = 'series.map'
MapSeries2.dependencies = ['geo']
MapSeries2.layoutMode = 'box'
MapSeries2.defaultOption = {
z: 2,
coordinateSystem: 'geo',
map: '',
left: 'center',
top: 'center',
aspectScale: null,
showLegendSymbol: true,
boundingCoords: null,
center: null,
zoom: 1,
scaleLimit: null,
selectedMode: true,
label: {
show: false,
color: '#000',
},
itemStyle: {
borderWidth: 0.5,
borderColor: '#444',
areaColor: '#eee',
},
emphasis: {
label: {
show: true,
color: 'rgb(100,0,0)',
},
itemStyle: {
areaColor: 'rgba(255,215,0,0.8)',
},
},
select: {
label: {
show: true,
color: 'rgb(100,0,0)',
},
itemStyle: {
color: 'rgba(255,215,0,0.8)',
},
},
nameProperty: 'name',
}
return MapSeries2
})(SeriesModel$1)
var MapSeries$1 = MapSeries
function dataStatistics(datas, statisticType) {
var dataNameMap = {}
each$f(datas, function (data2) {
data2.each(data2.mapDimension('value'), function (value2, idx) {
var mapKey = 'ec-' + data2.getName(idx)
dataNameMap[mapKey] = dataNameMap[mapKey] || []
if (!isNaN(value2)) {
dataNameMap[mapKey].push(value2)
}
})
})
return datas[0].map(datas[0].mapDimension('value'), function (value2, idx) {
var mapKey = 'ec-' + datas[0].getName(idx)
var sum2 = 0
var min3 = Infinity
var max3 = -Infinity
var len2 = dataNameMap[mapKey].length
for (var i2 = 0; i2 < len2; i2++) {
min3 = Math.min(min3, dataNameMap[mapKey][i2])
max3 = Math.max(max3, dataNameMap[mapKey][i2])
sum2 += dataNameMap[mapKey][i2]
}
var result
if (statisticType === 'min') {
result = min3
} else if (statisticType === 'max') {
result = max3
} else if (statisticType === 'average') {
result = sum2 / len2
} else {
result = sum2
}
return len2 === 0 ? NaN : result
})
}
function mapDataStatistic(ecModel) {
var seriesGroups = {}
ecModel.eachSeriesByType('map', function (seriesModel) {
var hostGeoModel = seriesModel.getHostGeoModel()
var key2 = hostGeoModel
? 'o' + hostGeoModel.id
: 'i' + seriesModel.getMapType()
;(seriesGroups[key2] = seriesGroups[key2] || []).push(seriesModel)
})
each$f(seriesGroups, function (seriesList, key2) {
var data2 = dataStatistics(
map$1(seriesList, function (seriesModel) {
return seriesModel.getData()
}),
seriesList[0].get('mapValueCalculation')
)
for (var i2 = 0; i2 < seriesList.length; i2++) {
seriesList[i2].originalData = seriesList[i2].getData()
}
for (var i2 = 0; i2 < seriesList.length; i2++) {
seriesList[i2].seriesGroup = seriesList
seriesList[i2].needsDrawMap =
i2 === 0 && !seriesList[i2].getHostGeoModel()
seriesList[i2].setData(data2.cloneShallow())
seriesList[i2].mainSeries = seriesList[0]
}
})
}
function mapSymbolLayout(ecModel) {
var processedMapType = {}
ecModel.eachSeriesByType('map', function (mapSeries) {
var mapType = mapSeries.getMapType()
if (mapSeries.getHostGeoModel() || processedMapType[mapType]) {
return
}
var mapSymbolOffsets = {}
each$f(mapSeries.seriesGroup, function (subMapSeries) {
var geo = subMapSeries.coordinateSystem
var data3 = subMapSeries.originalData
if (
subMapSeries.get('showLegendSymbol') &&
ecModel.getComponent('legend')
) {
data3.each(data3.mapDimension('value'), function (value2, idx) {
var name2 = data3.getName(idx)
var region = geo.getRegion(name2)
if (!region || isNaN(value2)) {
return
}
var offset2 = mapSymbolOffsets[name2] || 0
var point = geo.dataToPoint(region.getCenter())
mapSymbolOffsets[name2] = offset2 + 1
data3.setItemLayout(idx, {
point,
offset: offset2,
})
})
}
})
var data2 = mapSeries.getData()
data2.each(function (idx) {
var name2 = data2.getName(idx)
var layout2 = data2.getItemLayout(idx) || {}
layout2.showLabel = !mapSymbolOffsets[name2]
data2.setItemLayout(idx, layout2)
})
processedMapType[mapType] = true
})
}
var v2ApplyTransform = applyTransform$1
var View = (function (_super) {
__extends$2(View2, _super)
function View2(name2) {
var _this = _super.call(this) || this
_this.type = 'view'
_this.dimensions = ['x', 'y']
_this._roamTransformable = new Transformable$1()
_this._rawTransformable = new Transformable$1()
_this.name = name2
return _this
}
View2.prototype.setBoundingRect = function (x2, y2, width, height) {
this._rect = new BoundingRect$1(x2, y2, width, height)
return this._rect
}
View2.prototype.getBoundingRect = function () {
return this._rect
}
View2.prototype.setViewRect = function (x2, y2, width, height) {
this._transformTo(x2, y2, width, height)
this._viewRect = new BoundingRect$1(x2, y2, width, height)
}
View2.prototype._transformTo = function (x2, y2, width, height) {
var rect = this.getBoundingRect()
var rawTransform = this._rawTransformable
rawTransform.transform = rect.calculateTransform(
new BoundingRect$1(x2, y2, width, height)
)
var rawParent = rawTransform.parent
rawTransform.parent = null
rawTransform.decomposeTransform()
rawTransform.parent = rawParent
this._updateTransform()
}
View2.prototype.setCenter = function (centerCoord, api) {
if (!centerCoord) {
return
}
this._center = [
parsePercent(centerCoord[0], api.getWidth()),
parsePercent(centerCoord[1], api.getHeight()),
]
this._updateCenterAndZoom()
}
View2.prototype.setZoom = function (zoom) {
zoom = zoom || 1
var zoomLimit = this.zoomLimit
if (zoomLimit) {
if (zoomLimit.max != null) {
zoom = Math.min(zoomLimit.max, zoom)
}
if (zoomLimit.min != null) {
zoom = Math.max(zoomLimit.min, zoom)
}
}
this._zoom = zoom
this._updateCenterAndZoom()
}
View2.prototype.getDefaultCenter = function () {
var rawRect = this.getBoundingRect()
var cx = rawRect.x + rawRect.width / 2
var cy = rawRect.y + rawRect.height / 2
return [cx, cy]
}
View2.prototype.getCenter = function () {
return this._center || this.getDefaultCenter()
}
View2.prototype.getZoom = function () {
return this._zoom || 1
}
View2.prototype.getRoamTransform = function () {
return this._roamTransformable.getLocalTransform()
}
View2.prototype._updateCenterAndZoom = function () {
var rawTransformMatrix = this._rawTransformable.getLocalTransform()
var roamTransform = this._roamTransformable
var defaultCenter = this.getDefaultCenter()
var center2 = this.getCenter()
var zoom = this.getZoom()
center2 = applyTransform$1([], center2, rawTransformMatrix)
defaultCenter = applyTransform$1([], defaultCenter, rawTransformMatrix)
roamTransform.originX = center2[0]
roamTransform.originY = center2[1]
roamTransform.x = defaultCenter[0] - center2[0]
roamTransform.y = defaultCenter[1] - center2[1]
roamTransform.scaleX = roamTransform.scaleY = zoom
this._updateTransform()
}
View2.prototype._updateTransform = function () {
var roamTransformable = this._roamTransformable
var rawTransformable = this._rawTransformable
rawTransformable.parent = roamTransformable
roamTransformable.updateTransform()
rawTransformable.updateTransform()
copy(
this.transform || (this.transform = []),
rawTransformable.transform || create$1()
)
this._rawTransform = rawTransformable.getLocalTransform()
this.invTransform = this.invTransform || []
invert(this.invTransform, this.transform)
this.decomposeTransform()
}
View2.prototype.getTransformInfo = function () {
var rawTransformable = this._rawTransformable
var roamTransformable = this._roamTransformable
var dummyTransformable2 = new Transformable$1()
dummyTransformable2.transform = roamTransformable.transform
dummyTransformable2.decomposeTransform()
return {
roam: {
x: dummyTransformable2.x,
y: dummyTransformable2.y,
scaleX: dummyTransformable2.scaleX,
scaleY: dummyTransformable2.scaleY,
},
raw: {
x: rawTransformable.x,
y: rawTransformable.y,
scaleX: rawTransformable.scaleX,
scaleY: rawTransformable.scaleY,
},
}
}
View2.prototype.getViewRect = function () {
return this._viewRect
}
View2.prototype.getViewRectAfterRoam = function () {
var rect = this.getBoundingRect().clone()
rect.applyTransform(this.transform)
return rect
}
View2.prototype.dataToPoint = function (data2, noRoam, out2) {
var transform3 = noRoam ? this._rawTransform : this.transform
out2 = out2 || []
return transform3
? v2ApplyTransform(out2, data2, transform3)
: copy$1(out2, data2)
}
View2.prototype.pointToData = function (point) {
var invTransform = this.invTransform
return invTransform
? v2ApplyTransform([], point, invTransform)
: [point[0], point[1]]
}
View2.prototype.convertToPixel = function (ecModel, finder, value2) {
var coordSys = getCoordSys$4(finder)
return coordSys === this ? coordSys.dataToPoint(value2) : null
}
View2.prototype.convertFromPixel = function (ecModel, finder, pixel) {
var coordSys = getCoordSys$4(finder)
return coordSys === this ? coordSys.pointToData(pixel) : null
}
View2.prototype.containPoint = function (point) {
return this.getViewRectAfterRoam().contain(point[0], point[1])
}
View2.dimensions = ['x', 'y']
return View2
})(Transformable$1)
function getCoordSys$4(finder) {
var seriesModel = finder.seriesModel
return seriesModel ? seriesModel.coordinateSystem : null
}
var View$1 = View
var GEO_DEFAULT_PARAMS = {
geoJSON: {
aspectScale: 0.75,
invertLongitute: true,
},
geoSVG: {
aspectScale: 1,
invertLongitute: false,
},
}
var geo2DDimensions = ['lng', 'lat']
var Geo = (function (_super) {
__extends$2(Geo2, _super)
function Geo2(name2, map2, opt) {
var _this = _super.call(this, name2) || this
_this.dimensions = geo2DDimensions
_this.type = 'geo'
_this._nameCoordMap = createHashMap()
_this.map = map2
var projection = opt.projection
var source2 = geoSourceManager.load(map2, opt.nameMap, opt.nameProperty)
var resource = geoSourceManager.getGeoResource(map2)
_this.resourceType = resource ? resource.type : null
var regions = (_this.regions = source2.regions)
var defaultParams = GEO_DEFAULT_PARAMS[resource.type]
_this._regionsMap = source2.regionsMap
_this.regions = source2.regions
_this.projection = projection
var boundingRect
if (projection) {
for (var i2 = 0; i2 < regions.length; i2++) {
var regionRect = regions[i2].getBoundingRect(projection)
boundingRect = boundingRect || regionRect.clone()
boundingRect.union(regionRect)
}
} else {
boundingRect = source2.boundingRect
}
_this.setBoundingRect(
boundingRect.x,
boundingRect.y,
boundingRect.width,
boundingRect.height
)
_this.aspectScale = projection
? 1
: retrieve2(opt.aspectScale, defaultParams.aspectScale)
_this._invertLongitute = projection ? false : defaultParams.invertLongitute
return _this
}
Geo2.prototype._transformTo = function (x2, y2, width, height) {
var rect = this.getBoundingRect()
var invertLongitute = this._invertLongitute
rect = rect.clone()
if (invertLongitute) {
rect.y = -rect.y - rect.height
}
var rawTransformable = this._rawTransformable
rawTransformable.transform = rect.calculateTransform(
new BoundingRect$1(x2, y2, width, height)
)
var rawParent = rawTransformable.parent
rawTransformable.parent = null
rawTransformable.decomposeTransform()
rawTransformable.parent = rawParent
if (invertLongitute) {
rawTransformable.scaleY = -rawTransformable.scaleY
}
this._updateTransform()
}
Geo2.prototype.getRegion = function (name2) {
return this._regionsMap.get(name2)
}
Geo2.prototype.getRegionByCoord = function (coord) {
var regions = this.regions
for (var i2 = 0; i2 < regions.length; i2++) {
var region = regions[i2]
if (region.type === 'geoJSON' && region.contain(coord)) {
return regions[i2]
}
}
}
Geo2.prototype.addGeoCoord = function (name2, geoCoord2) {
this._nameCoordMap.set(name2, geoCoord2)
}
Geo2.prototype.getGeoCoord = function (name2) {
var region = this._regionsMap.get(name2)
return this._nameCoordMap.get(name2) || (region && region.getCenter())
}
Geo2.prototype.dataToPoint = function (data2, noRoam, out2) {
if (isString$2(data2)) {
data2 = this.getGeoCoord(data2)
}
if (data2) {
var projection = this.projection
if (projection) {
data2 = projection.project(data2)
}
return data2 && this.projectedToPoint(data2, noRoam, out2)
}
}
Geo2.prototype.pointToData = function (point) {
var projection = this.projection
if (projection) {
point = projection.unproject(point)
}
return point && this.pointToProjected(point)
}
Geo2.prototype.pointToProjected = function (point) {
return _super.prototype.pointToData.call(this, point)
}
Geo2.prototype.projectedToPoint = function (projected, noRoam, out2) {
return _super.prototype.dataToPoint.call(this, projected, noRoam, out2)
}
Geo2.prototype.convertToPixel = function (ecModel, finder, value2) {
var coordSys = getCoordSys$3(finder)
return coordSys === this ? coordSys.dataToPoint(value2) : null
}
Geo2.prototype.convertFromPixel = function (ecModel, finder, pixel) {
var coordSys = getCoordSys$3(finder)
return coordSys === this ? coordSys.pointToData(pixel) : null
}
return Geo2
})(View$1)
mixin(Geo, View$1)
function getCoordSys$3(finder) {
var geoModel = finder.geoModel
var seriesModel = finder.seriesModel
return geoModel
? geoModel.coordinateSystem
: seriesModel
? seriesModel.coordinateSystem ||
(
seriesModel.getReferringComponents('geo', SINGLE_REFERRING).models[0] ||
{}
).coordinateSystem
: null
}
var Geo$1 = Geo
function resizeGeo(geoModel, api) {
var boundingCoords = geoModel.get('boundingCoords')
if (boundingCoords != null) {
var leftTop_1 = boundingCoords[0]
var rightBottom_1 = boundingCoords[1]
if (
!(
isFinite(leftTop_1[0]) &&
isFinite(leftTop_1[1]) &&
isFinite(rightBottom_1[0]) &&
isFinite(rightBottom_1[1])
)
);
else {
var projection_1 = this.projection
if (projection_1) {
var xMin = leftTop_1[0]
var yMin = leftTop_1[1]
var xMax = rightBottom_1[0]
var yMax = rightBottom_1[1]
leftTop_1 = [Infinity, Infinity]
rightBottom_1 = [-Infinity, -Infinity]
var sampleLine = function (x0, y0, x1, y1) {
var dx = x1 - x0
var dy = y1 - y0
for (var i2 = 0; i2 <= 100; i2++) {
var p2 = i2 / 100
var pt3 = projection_1.project([x0 + dx * p2, y0 + dy * p2])
min$1(leftTop_1, leftTop_1, pt3)
max$2(rightBottom_1, rightBottom_1, pt3)
}
}
sampleLine(xMin, yMin, xMax, yMin)
sampleLine(xMax, yMin, xMax, yMax)
sampleLine(xMax, yMax, xMin, yMax)
sampleLine(xMin, yMax, xMax, yMin)
}
this.setBoundingRect(
leftTop_1[0],
leftTop_1[1],
rightBottom_1[0] - leftTop_1[0],
rightBottom_1[1] - leftTop_1[1]
)
}
}
var rect = this.getBoundingRect()
var centerOption = geoModel.get('layoutCenter')
var sizeOption = geoModel.get('layoutSize')
var viewWidth = api.getWidth()
var viewHeight = api.getHeight()
var aspect = (rect.width / rect.height) * this.aspectScale
var useCenterAndSize = false
var center2
var size
if (centerOption && sizeOption) {
center2 = [
parsePercent(centerOption[0], viewWidth),
parsePercent(centerOption[1], viewHeight),
]
size = parsePercent(sizeOption, Math.min(viewWidth, viewHeight))
if (!isNaN(center2[0]) && !isNaN(center2[1]) && !isNaN(size)) {
useCenterAndSize = true
}
}
var viewRect2
if (useCenterAndSize) {
viewRect2 = {}
if (aspect > 1) {
viewRect2.width = size
viewRect2.height = size / aspect
} else {
viewRect2.height = size
viewRect2.width = size * aspect
}
viewRect2.y = center2[1] - viewRect2.height / 2
viewRect2.x = center2[0] - viewRect2.width / 2
} else {
var boxLayoutOption = geoModel.getBoxLayoutParams()
boxLayoutOption.aspect = aspect
viewRect2 = getLayoutRect(boxLayoutOption, {
width: viewWidth,
height: viewHeight,
})
}
this.setViewRect(viewRect2.x, viewRect2.y, viewRect2.width, viewRect2.height)
this.setCenter(geoModel.get('center'), api)
this.setZoom(geoModel.get('zoom'))
}
function setGeoCoords(geo, model) {
each$f(model.get('geoCoord'), function (geoCoord2, name2) {
geo.addGeoCoord(name2, geoCoord2)
})
}
var GeoCreator = (function () {
function GeoCreator2() {
this.dimensions = geo2DDimensions
}
GeoCreator2.prototype.create = function (ecModel, api) {
var geoList = []
function getCommonGeoProperties(model) {
return {
nameProperty: model.get('nameProperty'),
aspectScale: model.get('aspectScale'),
projection: model.get('projection'),
}
}
ecModel.eachComponent('geo', function (geoModel, idx) {
var mapName = geoModel.get('map')
var geo = new Geo$1(
mapName + idx,
mapName,
extend(
{
nameMap: geoModel.get('nameMap'),
},
getCommonGeoProperties(geoModel)
)
)
geo.zoomLimit = geoModel.get('scaleLimit')
geoList.push(geo)
geoModel.coordinateSystem = geo
geo.model = geoModel
geo.resize = resizeGeo
geo.resize(geoModel, api)
})
ecModel.eachSeries(function (seriesModel) {
var coordSys = seriesModel.get('coordinateSystem')
if (coordSys === 'geo') {
var geoIndex = seriesModel.get('geoIndex') || 0
seriesModel.coordinateSystem = geoList[geoIndex]
}
})
var mapModelGroupBySeries = {}
ecModel.eachSeriesByType('map', function (seriesModel) {
if (!seriesModel.getHostGeoModel()) {
var mapType = seriesModel.getMapType()
mapModelGroupBySeries[mapType] = mapModelGroupBySeries[mapType] || []
mapModelGroupBySeries[mapType].push(seriesModel)
}
})
each$f(mapModelGroupBySeries, function (mapSeries, mapType) {
var nameMapList = map$1(mapSeries, function (singleMapSeries) {
return singleMapSeries.get('nameMap')
})
var geo = new Geo$1(
mapType,
mapType,
extend(
{
nameMap: mergeAll(nameMapList),
},
getCommonGeoProperties(mapSeries[0])
)
)
geo.zoomLimit = retrieve.apply(
null,
map$1(mapSeries, function (singleMapSeries) {
return singleMapSeries.get('scaleLimit')
})
)
geoList.push(geo)
geo.resize = resizeGeo
geo.resize(mapSeries[0], api)
each$f(mapSeries, function (singleMapSeries) {
singleMapSeries.coordinateSystem = geo
setGeoCoords(geo, singleMapSeries)
})
})
return geoList
}
GeoCreator2.prototype.getFilledRegions = function (
originRegionArr,
mapName,
nameMap,
nameProperty
) {
var regionsArr = (originRegionArr || []).slice()
var dataNameMap = createHashMap()
for (var i2 = 0; i2 < regionsArr.length; i2++) {
dataNameMap.set(regionsArr[i2].name, regionsArr[i2])
}
var source2 = geoSourceManager.load(mapName, nameMap, nameProperty)
each$f(source2.regions, function (region) {
var name2 = region.name
!dataNameMap.get(name2) &&
regionsArr.push({
name: name2,
})
})
return regionsArr
}
return GeoCreator2
})()
var geoCreator = new GeoCreator()
var geoCreator$1 = geoCreator
var GeoModel = (function (_super) {
__extends$2(GeoModel2, _super)
function GeoModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = GeoModel2.type
return _this
}
GeoModel2.prototype.init = function (option2, parentModel, ecModel) {
var source2 = geoSourceManager.getGeoResource(option2.map)
if (source2 && source2.type === 'geoJSON') {
var itemStyle = (option2.itemStyle = option2.itemStyle || {})
if (!('color' in itemStyle)) {
itemStyle.color = '#eee'
}
}
this.mergeDefaultAndTheme(option2, ecModel)
defaultEmphasis(option2, 'label', ['show'])
}
GeoModel2.prototype.optionUpdated = function () {
var _this = this
var option2 = this.option
option2.regions = geoCreator$1.getFilledRegions(
option2.regions,
option2.map,
option2.nameMap,
option2.nameProperty
)
var selectedMap = {}
this._optionModelMap = reduce(
option2.regions || [],
function (optionModelMap, regionOpt) {
var regionName = regionOpt.name
if (regionName) {
optionModelMap.set(
regionName,
new Model$1(regionOpt, _this, _this.ecModel)
)
if (regionOpt.selected) {
selectedMap[regionName] = true
}
}
return optionModelMap
},
createHashMap()
)
if (!option2.selectedMap) {
option2.selectedMap = selectedMap
}
}
GeoModel2.prototype.getRegionModel = function (name2) {
return (
this._optionModelMap.get(name2) || new Model$1(null, this, this.ecModel)
)
}
GeoModel2.prototype.getFormattedLabel = function (name2, status) {
var regionModel = this.getRegionModel(name2)
var formatter2 =
status === 'normal'
? regionModel.get(['label', 'formatter'])
: regionModel.get(['emphasis', 'label', 'formatter'])
var params2 = {
name: name2,
}
if (isFunction$4(formatter2)) {
params2.status = status
return formatter2(params2)
} else if (isString$2(formatter2)) {
return formatter2.replace('{a}', name2 != null ? name2 : '')
}
}
GeoModel2.prototype.setZoom = function (zoom) {
this.option.zoom = zoom
}
GeoModel2.prototype.setCenter = function (center2) {
this.option.center = center2
}
GeoModel2.prototype.select = function (name2) {
var option2 = this.option
var selectedMode = option2.selectedMode
if (!selectedMode) {
return
}
if (selectedMode !== 'multiple') {
option2.selectedMap = null
}
var selectedMap = option2.selectedMap || (option2.selectedMap = {})
selectedMap[name2] = true
}
GeoModel2.prototype.unSelect = function (name2) {
var selectedMap = this.option.selectedMap
if (selectedMap) {
selectedMap[name2] = false
}
}
GeoModel2.prototype.toggleSelected = function (name2) {
this[this.isSelected(name2) ? 'unSelect' : 'select'](name2)
}
GeoModel2.prototype.isSelected = function (name2) {
var selectedMap = this.option.selectedMap
return !!(selectedMap && selectedMap[name2])
}
GeoModel2.type = 'geo'
GeoModel2.layoutMode = 'box'
GeoModel2.defaultOption = {
z: 0,
show: true,
left: 'center',
top: 'center',
aspectScale: null,
silent: false,
map: '',
boundingCoords: null,
center: null,
zoom: 1,
scaleLimit: null,
label: {
show: false,
color: '#000',
},
itemStyle: {
borderWidth: 0.5,
borderColor: '#444',
},
emphasis: {
label: {
show: true,
color: 'rgb(100,0,0)',
},
itemStyle: {
color: 'rgba(255,215,0,0.8)',
},
},
select: {
label: {
show: true,
color: 'rgb(100,0,0)',
},
itemStyle: {
color: 'rgba(255,215,0,0.8)',
},
},
regions: [],
}
return GeoModel2
})(ComponentModel$1)
var GeoModel$1 = GeoModel
function getCenterCoord(view2, point) {
return view2.pointToProjected
? view2.pointToProjected(point)
: view2.pointToData(point)
}
function updateCenterAndZoom(view2, payload, zoomLimit, api) {
var previousZoom = view2.getZoom()
var center2 = view2.getCenter()
var zoom = payload.zoom
var point = view2.projectedToPoint
? view2.projectedToPoint(center2)
: view2.dataToPoint(center2)
if (payload.dx != null && payload.dy != null) {
point[0] -= payload.dx
point[1] -= payload.dy
view2.setCenter(getCenterCoord(view2, point), api)
}
if (zoom != null) {
if (zoomLimit) {
var zoomMin = zoomLimit.min || 0
var zoomMax = zoomLimit.max || Infinity
zoom =
Math.max(Math.min(previousZoom * zoom, zoomMax), zoomMin) / previousZoom
}
view2.scaleX *= zoom
view2.scaleY *= zoom
var fixX = (payload.originX - view2.x) * (zoom - 1)
var fixY = (payload.originY - view2.y) * (zoom - 1)
view2.x -= fixX
view2.y -= fixY
view2.updateTransform()
view2.setCenter(getCenterCoord(view2, point), api)
view2.setZoom(zoom * previousZoom)
}
return {
center: view2.getCenter(),
zoom: view2.getZoom(),
}
}
var GeoView = (function (_super) {
__extends$2(GeoView2, _super)
function GeoView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = GeoView2.type
_this.focusBlurEnabled = true
return _this
}
GeoView2.prototype.init = function (ecModel, api) {
this._api = api
}
GeoView2.prototype.render = function (geoModel, ecModel, api, payload) {
this._model = geoModel
if (!geoModel.get('show')) {
this._mapDraw && this._mapDraw.remove()
this._mapDraw = null
return
}
if (!this._mapDraw) {
this._mapDraw = new MapDraw$1(api)
}
var mapDraw = this._mapDraw
mapDraw.draw(geoModel, ecModel, api, this, payload)
mapDraw.group.on('click', this._handleRegionClick, this)
mapDraw.group.silent = geoModel.get('silent')
this.group.add(mapDraw.group)
this.updateSelectStatus(geoModel, ecModel, api)
}
GeoView2.prototype._handleRegionClick = function (e2) {
var eventData
findEventDispatcher(
e2.target,
function (current2) {
return (eventData = getECData(current2).eventData) != null
},
true
)
if (eventData) {
this._api.dispatchAction({
type: 'geoToggleSelect',
geoId: this._model.id,
name: eventData.name,
})
}
}
GeoView2.prototype.updateSelectStatus = function (model, ecModel, api) {
var _this = this
this._mapDraw.group.traverse(function (node2) {
var eventData = getECData(node2).eventData
if (eventData) {
_this._model.isSelected(eventData.name)
? api.enterSelect(node2)
: api.leaveSelect(node2)
return true
}
})
}
GeoView2.prototype.findHighDownDispatchers = function (name2) {
return (
this._mapDraw && this._mapDraw.findHighDownDispatchers(name2, this._model)
)
}
GeoView2.prototype.dispose = function () {
this._mapDraw && this._mapDraw.remove()
}
GeoView2.type = 'geo'
return GeoView2
})(ComponentView$1)
var GeoView$1 = GeoView
function registerMap(mapName, geoJson, specialAreas) {
geoSourceManager.registerMap(mapName, geoJson, specialAreas)
}
function install$L(registers) {
registers.registerCoordinateSystem('geo', geoCreator$1)
registers.registerComponentModel(GeoModel$1)
registers.registerComponentView(GeoView$1)
registers.registerImpl('registerMap', registerMap)
registers.registerImpl('getMap', function (mapName) {
return geoSourceManager.getMapForUser(mapName)
})
function makeAction(method4, actionInfo2) {
actionInfo2.update = 'geo:updateSelectStatus'
registers.registerAction(actionInfo2, function (payload, ecModel) {
var selected = {}
var allSelected = []
ecModel.eachComponent(
{
mainType: 'geo',
query: payload,
},
function (geoModel) {
geoModel[method4](payload.name)
var geo = geoModel.coordinateSystem
each$f(geo.regions, function (region) {
selected[region.name] = geoModel.isSelected(region.name) || false
})
var names2 = []
each$f(selected, function (v4, name2) {
selected[name2] && names2.push(name2)
})
allSelected.push({
geoIndex: geoModel.componentIndex,
name: names2,
})
}
)
return {
selected,
allSelected,
name: payload.name,
}
})
}
makeAction('toggleSelected', {
type: 'geoToggleSelect',
event: 'geoselectchanged',
})
makeAction('select', {
type: 'geoSelect',
event: 'geoselected',
})
makeAction('unSelect', {
type: 'geoUnSelect',
event: 'geounselected',
})
registers.registerAction(
{
type: 'geoRoam',
event: 'geoRoam',
update: 'updateTransform',
},
function (payload, ecModel, api) {
var componentType = payload.componentType || 'series'
ecModel.eachComponent(
{
mainType: componentType,
query: payload,
},
function (componentModel) {
var geo = componentModel.coordinateSystem
if (geo.type !== 'geo') {
return
}
var res = updateCenterAndZoom(
geo,
payload,
componentModel.get('scaleLimit'),
api
)
componentModel.setCenter && componentModel.setCenter(res.center)
componentModel.setZoom && componentModel.setZoom(res.zoom)
if (componentType === 'series') {
each$f(componentModel.seriesGroup, function (seriesModel) {
seriesModel.setCenter(res.center)
seriesModel.setZoom(res.zoom)
})
}
}
)
}
)
}
function install$K(registers) {
use(install$L)
registers.registerChartView(MapView$1)
registers.registerSeriesModel(MapSeries$1)
registers.registerLayout(mapSymbolLayout)
registers.registerProcessor(
registers.PRIORITY.PROCESSOR.STATISTIC,
mapDataStatistic
)
createLegacyDataSelectAction('map', registers.registerAction)
}
function init$1(inRoot) {
var root2 = inRoot
root2.hierNode = {
defaultAncestor: null,
ancestor: root2,
prelim: 0,
modifier: 0,
change: 0,
shift: 0,
i: 0,
thread: null,
}
var nodes = [root2]
var node2
var children
while ((node2 = nodes.pop())) {
children = node2.children
if (node2.isExpand && children.length) {
var n2 = children.length
for (var i2 = n2 - 1; i2 >= 0; i2--) {
var child = children[i2]
child.hierNode = {
defaultAncestor: null,
ancestor: child,
prelim: 0,
modifier: 0,
change: 0,
shift: 0,
i: i2,
thread: null,
}
nodes.push(child)
}
}
}
}
function firstWalk(node2, separation2) {
var children = node2.isExpand ? node2.children : []
var siblings = node2.parentNode.children
var subtreeW = node2.hierNode.i ? siblings[node2.hierNode.i - 1] : null
if (children.length) {
executeShifts(node2)
var midPoint =
(children[0].hierNode.prelim +
children[children.length - 1].hierNode.prelim) /
2
if (subtreeW) {
node2.hierNode.prelim =
subtreeW.hierNode.prelim + separation2(node2, subtreeW)
node2.hierNode.modifier = node2.hierNode.prelim - midPoint
} else {
node2.hierNode.prelim = midPoint
}
} else if (subtreeW) {
node2.hierNode.prelim =
subtreeW.hierNode.prelim + separation2(node2, subtreeW)
}
node2.parentNode.hierNode.defaultAncestor = apportion(
node2,
subtreeW,
node2.parentNode.hierNode.defaultAncestor || siblings[0],
separation2
)
}
function secondWalk(node2) {
var nodeX = node2.hierNode.prelim + node2.parentNode.hierNode.modifier
node2.setLayout(
{
x: nodeX,
},
true
)
node2.hierNode.modifier += node2.parentNode.hierNode.modifier
}
function separation(cb) {
return arguments.length ? cb : defaultSeparation
}
function radialCoordinate(rad, r2) {
rad -= Math.PI / 2
return {
x: r2 * Math.cos(rad),
y: r2 * Math.sin(rad),
}
}
function getViewRect$4(seriesModel, api) {
return getLayoutRect(seriesModel.getBoxLayoutParams(), {
width: api.getWidth(),
height: api.getHeight(),
})
}
function executeShifts(node2) {
var children = node2.children
var n2 = children.length
var shift = 0
var change2 = 0
while (--n2 >= 0) {
var child = children[n2]
child.hierNode.prelim += shift
child.hierNode.modifier += shift
change2 += child.hierNode.change
shift += child.hierNode.shift + change2
}
}
function apportion(subtreeV, subtreeW, ancestor, separation2) {
if (subtreeW) {
var nodeOutRight = subtreeV
var nodeInRight = subtreeV
var nodeOutLeft = nodeInRight.parentNode.children[0]
var nodeInLeft = subtreeW
var sumOutRight = nodeOutRight.hierNode.modifier
var sumInRight = nodeInRight.hierNode.modifier
var sumOutLeft = nodeOutLeft.hierNode.modifier
var sumInLeft = nodeInLeft.hierNode.modifier
while (
((nodeInLeft = nextRight(nodeInLeft)),
(nodeInRight = nextLeft(nodeInRight)),
nodeInLeft && nodeInRight)
) {
nodeOutRight = nextRight(nodeOutRight)
nodeOutLeft = nextLeft(nodeOutLeft)
nodeOutRight.hierNode.ancestor = subtreeV
var shift =
nodeInLeft.hierNode.prelim +
sumInLeft -
nodeInRight.hierNode.prelim -
sumInRight +
separation2(nodeInLeft, nodeInRight)
if (shift > 0) {
moveSubtree(
nextAncestor(nodeInLeft, subtreeV, ancestor),
subtreeV,
shift
)
sumInRight += shift
sumOutRight += shift
}
sumInLeft += nodeInLeft.hierNode.modifier
sumInRight += nodeInRight.hierNode.modifier
sumOutRight += nodeOutRight.hierNode.modifier
sumOutLeft += nodeOutLeft.hierNode.modifier
}
if (nodeInLeft && !nextRight(nodeOutRight)) {
nodeOutRight.hierNode.thread = nodeInLeft
nodeOutRight.hierNode.modifier += sumInLeft - sumOutRight
}
if (nodeInRight && !nextLeft(nodeOutLeft)) {
nodeOutLeft.hierNode.thread = nodeInRight
nodeOutLeft.hierNode.modifier += sumInRight - sumOutLeft
ancestor = subtreeV
}
}
return ancestor
}
function nextRight(node2) {
var children = node2.children
return children.length && node2.isExpand
? children[children.length - 1]
: node2.hierNode.thread
}
function nextLeft(node2) {
var children = node2.children
return children.length && node2.isExpand ? children[0] : node2.hierNode.thread
}
function nextAncestor(nodeInLeft, node2, ancestor) {
return nodeInLeft.hierNode.ancestor.parentNode === node2.parentNode
? nodeInLeft.hierNode.ancestor
: ancestor
}
function moveSubtree(wl, wr, shift) {
var change2 = shift / (wr.hierNode.i - wl.hierNode.i)
wr.hierNode.change -= change2
wr.hierNode.shift += shift
wr.hierNode.modifier += shift
wr.hierNode.prelim += shift
wl.hierNode.change += change2
}
function defaultSeparation(node1, node2) {
return node1.parentNode === node2.parentNode ? 1 : 2
}
var TreeEdgeShape = (function () {
function TreeEdgeShape2() {
this.parentPoint = []
this.childPoints = []
}
return TreeEdgeShape2
})()
var TreePath = (function (_super) {
__extends$2(TreePath2, _super)
function TreePath2(opts) {
return _super.call(this, opts) || this
}
TreePath2.prototype.getDefaultStyle = function () {
return {
stroke: '#000',
fill: null,
}
}
TreePath2.prototype.getDefaultShape = function () {
return new TreeEdgeShape()
}
TreePath2.prototype.buildPath = function (ctx, shape) {
var childPoints = shape.childPoints
var childLen = childPoints.length
var parentPoint = shape.parentPoint
var firstChildPos = childPoints[0]
var lastChildPos = childPoints[childLen - 1]
if (childLen === 1) {
ctx.moveTo(parentPoint[0], parentPoint[1])
ctx.lineTo(firstChildPos[0], firstChildPos[1])
return
}
var orient = shape.orient
var forkDim = orient === 'TB' || orient === 'BT' ? 0 : 1
var otherDim = 1 - forkDim
var forkPosition = parsePercent(shape.forkPosition, 1)
var tmpPoint = []
tmpPoint[forkDim] = parentPoint[forkDim]
tmpPoint[otherDim] =
parentPoint[otherDim] +
(lastChildPos[otherDim] - parentPoint[otherDim]) * forkPosition
ctx.moveTo(parentPoint[0], parentPoint[1])
ctx.lineTo(tmpPoint[0], tmpPoint[1])
ctx.moveTo(firstChildPos[0], firstChildPos[1])
tmpPoint[forkDim] = firstChildPos[forkDim]
ctx.lineTo(tmpPoint[0], tmpPoint[1])
tmpPoint[forkDim] = lastChildPos[forkDim]
ctx.lineTo(tmpPoint[0], tmpPoint[1])
ctx.lineTo(lastChildPos[0], lastChildPos[1])
for (var i2 = 1; i2 < childLen - 1; i2++) {
var point = childPoints[i2]
ctx.moveTo(point[0], point[1])
tmpPoint[forkDim] = point[forkDim]
ctx.lineTo(tmpPoint[0], tmpPoint[1])
}
}
return TreePath2
})(Path$1)
var TreeView = (function (_super) {
__extends$2(TreeView2, _super)
function TreeView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = TreeView2.type
_this._mainGroup = new Group$5()
return _this
}
TreeView2.prototype.init = function (ecModel, api) {
this._controller = new RoamController$1(api.getZr())
this._controllerHost = {
target: this.group,
}
this.group.add(this._mainGroup)
}
TreeView2.prototype.render = function (seriesModel, ecModel, api) {
var data2 = seriesModel.getData()
var layoutInfo = seriesModel.layoutInfo
var group = this._mainGroup
var layout2 = seriesModel.get('layout')
if (layout2 === 'radial') {
group.x = layoutInfo.x + layoutInfo.width / 2
group.y = layoutInfo.y + layoutInfo.height / 2
} else {
group.x = layoutInfo.x
group.y = layoutInfo.y
}
this._updateViewCoordSys(seriesModel, api)
this._updateController(seriesModel, ecModel, api)
var oldData = this._data
data2
.diff(oldData)
.add(function (newIdx) {
if (symbolNeedsDraw(data2, newIdx)) {
updateNode(data2, newIdx, null, group, seriesModel)
}
})
.update(function (newIdx, oldIdx) {
var symbolEl = oldData.getItemGraphicEl(oldIdx)
if (!symbolNeedsDraw(data2, newIdx)) {
symbolEl && removeNode(oldData, oldIdx, symbolEl, group, seriesModel)
return
}
updateNode(data2, newIdx, symbolEl, group, seriesModel)
})
.remove(function (oldIdx) {
var symbolEl = oldData.getItemGraphicEl(oldIdx)
if (symbolEl) {
removeNode(oldData, oldIdx, symbolEl, group, seriesModel)
}
})
.execute()
this._nodeScaleRatio = seriesModel.get('nodeScaleRatio')
this._updateNodeAndLinkScale(seriesModel)
if (seriesModel.get('expandAndCollapse') === true) {
data2.eachItemGraphicEl(function (el2, dataIndex) {
el2.off('click').on('click', function () {
api.dispatchAction({
type: 'treeExpandAndCollapse',
seriesId: seriesModel.id,
dataIndex,
})
})
})
}
this._data = data2
}
TreeView2.prototype._updateViewCoordSys = function (seriesModel, api) {
var data2 = seriesModel.getData()
var points2 = []
data2.each(function (idx) {
var layout2 = data2.getItemLayout(idx)
if (layout2 && !isNaN(layout2.x) && !isNaN(layout2.y)) {
points2.push([+layout2.x, +layout2.y])
}
})
var min3 = []
var max3 = []
fromPoints(points2, min3, max3)
var oldMin = this._min
var oldMax = this._max
if (max3[0] - min3[0] === 0) {
min3[0] = oldMin ? oldMin[0] : min3[0] - 1
max3[0] = oldMax ? oldMax[0] : max3[0] + 1
}
if (max3[1] - min3[1] === 0) {
min3[1] = oldMin ? oldMin[1] : min3[1] - 1
max3[1] = oldMax ? oldMax[1] : max3[1] + 1
}
var viewCoordSys = (seriesModel.coordinateSystem = new View$1())
viewCoordSys.zoomLimit = seriesModel.get('scaleLimit')
viewCoordSys.setBoundingRect(
min3[0],
min3[1],
max3[0] - min3[0],
max3[1] - min3[1]
)
viewCoordSys.setCenter(seriesModel.get('center'), api)
viewCoordSys.setZoom(seriesModel.get('zoom'))
this.group.attr({
x: viewCoordSys.x,
y: viewCoordSys.y,
scaleX: viewCoordSys.scaleX,
scaleY: viewCoordSys.scaleY,
})
this._min = min3
this._max = max3
}
TreeView2.prototype._updateController = function (seriesModel, ecModel, api) {
var _this = this
var controller = this._controller
var controllerHost = this._controllerHost
var group = this.group
controller.setPointerChecker(function (e2, x2, y2) {
var rect = group.getBoundingRect()
rect.applyTransform(group.transform)
return rect.contain(x2, y2) && !onIrrelevantElement(e2, api, seriesModel)
})
controller.enable(seriesModel.get('roam'))
controllerHost.zoomLimit = seriesModel.get('scaleLimit')
controllerHost.zoom = seriesModel.coordinateSystem.getZoom()
controller
.off('pan')
.off('zoom')
.on('pan', function (e2) {
updateViewOnPan(controllerHost, e2.dx, e2.dy)
api.dispatchAction({
seriesId: seriesModel.id,
type: 'treeRoam',
dx: e2.dx,
dy: e2.dy,
})
})
.on('zoom', function (e2) {
updateViewOnZoom(controllerHost, e2.scale, e2.originX, e2.originY)
api.dispatchAction({
seriesId: seriesModel.id,
type: 'treeRoam',
zoom: e2.scale,
originX: e2.originX,
originY: e2.originY,
})
_this._updateNodeAndLinkScale(seriesModel)
api.updateLabelLayout()
})
}
TreeView2.prototype._updateNodeAndLinkScale = function (seriesModel) {
var data2 = seriesModel.getData()
var nodeScale = this._getNodeGlobalScale(seriesModel)
data2.eachItemGraphicEl(function (el2, idx) {
el2.setSymbolScale(nodeScale)
})
}
TreeView2.prototype._getNodeGlobalScale = function (seriesModel) {
var coordSys = seriesModel.coordinateSystem
if (coordSys.type !== 'view') {
return 1
}
var nodeScaleRatio = this._nodeScaleRatio
var groupZoom = coordSys.scaleX || 1
var roamZoom = coordSys.getZoom()
var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1
return nodeScale / groupZoom
}
TreeView2.prototype.dispose = function () {
this._controller && this._controller.dispose()
this._controllerHost = null
}
TreeView2.prototype.remove = function () {
this._mainGroup.removeAll()
this._data = null
}
TreeView2.type = 'tree'
return TreeView2
})(ChartView$1)
function symbolNeedsDraw(data2, dataIndex) {
var layout2 = data2.getItemLayout(dataIndex)
return layout2 && !isNaN(layout2.x) && !isNaN(layout2.y)
}
function updateNode(data2, dataIndex, symbolEl, group, seriesModel) {
var isInit = !symbolEl
var node2 = data2.tree.getNodeByDataIndex(dataIndex)
var itemModel = node2.getModel()
var visualColor = node2.getVisual('style').fill
var symbolInnerColor =
node2.isExpand === false && node2.children.length !== 0
? visualColor
: '#fff'
var virtualRoot = data2.tree.root
var source2 =
node2.parentNode === virtualRoot ? node2 : node2.parentNode || node2
var sourceSymbolEl = data2.getItemGraphicEl(source2.dataIndex)
var sourceLayout = source2.getLayout()
var sourceOldLayout = sourceSymbolEl
? {
x: sourceSymbolEl.__oldX,
y: sourceSymbolEl.__oldY,
rawX: sourceSymbolEl.__radialOldRawX,
rawY: sourceSymbolEl.__radialOldRawY,
}
: sourceLayout
var targetLayout = node2.getLayout()
if (isInit) {
symbolEl = new SymbolClz(data2, dataIndex, null, {
symbolInnerColor,
useNameLabel: true,
})
symbolEl.x = sourceOldLayout.x
symbolEl.y = sourceOldLayout.y
} else {
symbolEl.updateData(data2, dataIndex, null, {
symbolInnerColor,
useNameLabel: true,
})
}
symbolEl.__radialOldRawX = symbolEl.__radialRawX
symbolEl.__radialOldRawY = symbolEl.__radialRawY
symbolEl.__radialRawX = targetLayout.rawX
symbolEl.__radialRawY = targetLayout.rawY
group.add(symbolEl)
data2.setItemGraphicEl(dataIndex, symbolEl)
symbolEl.__oldX = symbolEl.x
symbolEl.__oldY = symbolEl.y
updateProps$1(
symbolEl,
{
x: targetLayout.x,
y: targetLayout.y,
},
seriesModel
)
var symbolPath = symbolEl.getSymbolPath()
if (seriesModel.get('layout') === 'radial') {
var realRoot = virtualRoot.children[0]
var rootLayout = realRoot.getLayout()
var length_1 = realRoot.children.length
var rad = void 0
var isLeft = void 0
if (
targetLayout.x === rootLayout.x &&
node2.isExpand === true &&
realRoot.children.length
) {
var center2 = {
x:
(realRoot.children[0].getLayout().x +
realRoot.children[length_1 - 1].getLayout().x) /
2,
y:
(realRoot.children[0].getLayout().y +
realRoot.children[length_1 - 1].getLayout().y) /
2,
}
rad = Math.atan2(center2.y - rootLayout.y, center2.x - rootLayout.x)
if (rad < 0) {
rad = Math.PI * 2 + rad
}
isLeft = center2.x < rootLayout.x
if (isLeft) {
rad = rad - Math.PI
}
} else {
rad = Math.atan2(
targetLayout.y - rootLayout.y,
targetLayout.x - rootLayout.x
)
if (rad < 0) {
rad = Math.PI * 2 + rad
}
if (
node2.children.length === 0 ||
(node2.children.length !== 0 && node2.isExpand === false)
) {
isLeft = targetLayout.x < rootLayout.x
if (isLeft) {
rad = rad - Math.PI
}
} else {
isLeft = targetLayout.x > rootLayout.x
if (!isLeft) {
rad = rad - Math.PI
}
}
}
var textPosition = isLeft ? 'left' : 'right'
var normalLabelModel = itemModel.getModel('label')
var rotate2 = normalLabelModel.get('rotate')
var labelRotateRadian = rotate2 * (Math.PI / 180)
var textContent = symbolPath.getTextContent()
if (textContent) {
symbolPath.setTextConfig({
position: normalLabelModel.get('position') || textPosition,
rotation: rotate2 == null ? -rad : labelRotateRadian,
origin: 'center',
})
textContent.setStyle('verticalAlign', 'middle')
}
}
var focus2 = itemModel.get(['emphasis', 'focus'])
var focusDataIndices =
focus2 === 'relative'
? concatArray(node2.getAncestorsIndices(), node2.getDescendantIndices())
: focus2 === 'ancestor'
? node2.getAncestorsIndices()
: focus2 === 'descendant'
? node2.getDescendantIndices()
: null
if (focusDataIndices) {
getECData(symbolEl).focus = focusDataIndices
}
drawEdge(
seriesModel,
node2,
virtualRoot,
symbolEl,
sourceOldLayout,
sourceLayout,
targetLayout,
group
)
if (symbolEl.__edge) {
symbolEl.onHoverStateChange = function (toState) {
if (toState !== 'blur') {
var parentEl2 =
node2.parentNode && data2.getItemGraphicEl(node2.parentNode.dataIndex)
if (!(parentEl2 && parentEl2.hoverState === HOVER_STATE_BLUR)) {
setStatesFlag(symbolEl.__edge, toState)
}
}
}
}
}
function drawEdge(
seriesModel,
node2,
virtualRoot,
symbolEl,
sourceOldLayout,
sourceLayout,
targetLayout,
group
) {
var itemModel = node2.getModel()
var edgeShape = seriesModel.get('edgeShape')
var layout2 = seriesModel.get('layout')
var orient = seriesModel.getOrient()
var curvature = seriesModel.get(['lineStyle', 'curveness'])
var edgeForkPosition = seriesModel.get('edgeForkPosition')
var lineStyle = itemModel.getModel('lineStyle').getLineStyle()
var edge = symbolEl.__edge
if (edgeShape === 'curve') {
if (node2.parentNode && node2.parentNode !== virtualRoot) {
if (!edge) {
edge = symbolEl.__edge = new BezierCurve$1({
shape: getEdgeShape(
layout2,
orient,
curvature,
sourceOldLayout,
sourceOldLayout
),
})
}
updateProps$1(
edge,
{
shape: getEdgeShape(
layout2,
orient,
curvature,
sourceLayout,
targetLayout
),
},
seriesModel
)
}
} else if (edgeShape === 'polyline') {
if (layout2 === 'orthogonal') {
if (
node2 !== virtualRoot &&
node2.children &&
node2.children.length !== 0 &&
node2.isExpand === true
) {
var children = node2.children
var childPoints = []
for (var i2 = 0; i2 < children.length; i2++) {
var childLayout = children[i2].getLayout()
childPoints.push([childLayout.x, childLayout.y])
}
if (!edge) {
edge = symbolEl.__edge = new TreePath({
shape: {
parentPoint: [targetLayout.x, targetLayout.y],
childPoints: [[targetLayout.x, targetLayout.y]],
orient,
forkPosition: edgeForkPosition,
},
})
}
updateProps$1(
edge,
{
shape: {
parentPoint: [targetLayout.x, targetLayout.y],
childPoints,
},
},
seriesModel
)
}
}
}
if (edge && !(edgeShape === 'polyline' && !node2.isExpand)) {
edge.useStyle(
defaults(
{
strokeNoScale: true,
fill: null,
},
lineStyle
)
)
setStatesStylesFromModel(edge, itemModel, 'lineStyle')
setDefaultStateProxy(edge)
group.add(edge)
}
}
function removeNodeEdge(node2, data2, group, seriesModel, removeAnimationOpt) {
var virtualRoot = data2.tree.root
var _a2 = getSourceNode(virtualRoot, node2),
source2 = _a2.source,
sourceLayout = _a2.sourceLayout
var symbolEl = data2.getItemGraphicEl(node2.dataIndex)
if (!symbolEl) {
return
}
var sourceSymbolEl = data2.getItemGraphicEl(source2.dataIndex)
var sourceEdge = sourceSymbolEl.__edge
var edge =
symbolEl.__edge ||
(source2.isExpand === false || source2.children.length === 1
? sourceEdge
: void 0)
var edgeShape = seriesModel.get('edgeShape')
var layoutOpt = seriesModel.get('layout')
var orient = seriesModel.get('orient')
var curvature = seriesModel.get(['lineStyle', 'curveness'])
if (edge) {
if (edgeShape === 'curve') {
removeElement(
edge,
{
shape: getEdgeShape(
layoutOpt,
orient,
curvature,
sourceLayout,
sourceLayout
),
style: {
opacity: 0,
},
},
seriesModel,
{
cb: function () {
group.remove(edge)
},
removeOpt: removeAnimationOpt,
}
)
} else if (
edgeShape === 'polyline' &&
seriesModel.get('layout') === 'orthogonal'
) {
removeElement(
edge,
{
shape: {
parentPoint: [sourceLayout.x, sourceLayout.y],
childPoints: [[sourceLayout.x, sourceLayout.y]],
},
style: {
opacity: 0,
},
},
seriesModel,
{
cb: function () {
group.remove(edge)
},
removeOpt: removeAnimationOpt,
}
)
}
}
}
function getSourceNode(virtualRoot, node2) {
var source2 =
node2.parentNode === virtualRoot ? node2 : node2.parentNode || node2
var sourceLayout
while (((sourceLayout = source2.getLayout()), sourceLayout == null)) {
source2 =
source2.parentNode === virtualRoot
? source2
: source2.parentNode || source2
}
return {
source: source2,
sourceLayout,
}
}
function removeNode(data2, dataIndex, symbolEl, group, seriesModel) {
var node2 = data2.tree.getNodeByDataIndex(dataIndex)
var virtualRoot = data2.tree.root
var sourceLayout = getSourceNode(virtualRoot, node2).sourceLayout
var removeAnimationOpt = {
duration: seriesModel.get('animationDurationUpdate'),
easing: seriesModel.get('animationEasingUpdate'),
}
removeElement(
symbolEl,
{
x: sourceLayout.x + 1,
y: sourceLayout.y + 1,
},
seriesModel,
{
cb: function () {
group.remove(symbolEl)
data2.setItemGraphicEl(dataIndex, null)
},
removeOpt: removeAnimationOpt,
}
)
symbolEl.fadeOut(null, data2.hostModel, {
fadeLabel: true,
animation: removeAnimationOpt,
})
node2.children.forEach(function (childNode) {
removeNodeEdge(childNode, data2, group, seriesModel, removeAnimationOpt)
})
removeNodeEdge(node2, data2, group, seriesModel, removeAnimationOpt)
}
function getEdgeShape(
layoutOpt,
orient,
curvature,
sourceLayout,
targetLayout
) {
var cpx1
var cpy1
var cpx2
var cpy2
var x1
var x2
var y1
var y2
if (layoutOpt === 'radial') {
x1 = sourceLayout.rawX
y1 = sourceLayout.rawY
x2 = targetLayout.rawX
y2 = targetLayout.rawY
var radialCoor1 = radialCoordinate(x1, y1)
var radialCoor2 = radialCoordinate(x1, y1 + (y2 - y1) * curvature)
var radialCoor3 = radialCoordinate(x2, y2 + (y1 - y2) * curvature)
var radialCoor4 = radialCoordinate(x2, y2)
return {
x1: radialCoor1.x || 0,
y1: radialCoor1.y || 0,
x2: radialCoor4.x || 0,
y2: radialCoor4.y || 0,
cpx1: radialCoor2.x || 0,
cpy1: radialCoor2.y || 0,
cpx2: radialCoor3.x || 0,
cpy2: radialCoor3.y || 0,
}
} else {
x1 = sourceLayout.x
y1 = sourceLayout.y
x2 = targetLayout.x
y2 = targetLayout.y
if (orient === 'LR' || orient === 'RL') {
cpx1 = x1 + (x2 - x1) * curvature
cpy1 = y1
cpx2 = x2 + (x1 - x2) * curvature
cpy2 = y2
}
if (orient === 'TB' || orient === 'BT') {
cpx1 = x1
cpy1 = y1 + (y2 - y1) * curvature
cpx2 = x2
cpy2 = y2 + (y1 - y2) * curvature
}
}
return {
x1,
y1,
x2,
y2,
cpx1,
cpy1,
cpx2,
cpy2,
}
}
var TreeView$1 = TreeView
var inner$e = makeInner()
function linkSeriesData(opt) {
var mainData = opt.mainData
var datas = opt.datas
if (!datas) {
datas = {
main: mainData,
}
opt.datasAttr = {
main: 'data',
}
}
opt.datas = opt.mainData = null
linkAll(mainData, datas, opt)
each$f(datas, function (data2) {
each$f(mainData.TRANSFERABLE_METHODS, function (methodName) {
data2.wrapMethod(methodName, curry$1(transferInjection, opt))
})
})
mainData.wrapMethod('cloneShallow', curry$1(cloneShallowInjection, opt))
each$f(mainData.CHANGABLE_METHODS, function (methodName) {
mainData.wrapMethod(methodName, curry$1(changeInjection, opt))
})
assert(datas[mainData.dataType] === mainData)
}
function transferInjection(opt, res) {
if (isMainData(this)) {
var datas = extend({}, inner$e(this).datas)
datas[this.dataType] = res
linkAll(res, datas, opt)
} else {
linkSingle(res, this.dataType, inner$e(this).mainData, opt)
}
return res
}
function changeInjection(opt, res) {
opt.struct && opt.struct.update()
return res
}
function cloneShallowInjection(opt, res) {
each$f(inner$e(res).datas, function (data2, dataType2) {
data2 !== res && linkSingle(data2.cloneShallow(), dataType2, res, opt)
})
return res
}
function getLinkedData(dataType2) {
var mainData = inner$e(this).mainData
return dataType2 == null || mainData == null
? mainData
: inner$e(mainData).datas[dataType2]
}
function getLinkedDataAll() {
var mainData = inner$e(this).mainData
return mainData == null
? [
{
data: mainData,
},
]
: map$1(keys$4(inner$e(mainData).datas), function (type4) {
return {
type: type4,
data: inner$e(mainData).datas[type4],
}
})
}
function isMainData(data2) {
return inner$e(data2).mainData === data2
}
function linkAll(mainData, datas, opt) {
inner$e(mainData).datas = {}
each$f(datas, function (data2, dataType2) {
linkSingle(data2, dataType2, mainData, opt)
})
}
function linkSingle(data2, dataType2, mainData, opt) {
inner$e(mainData).datas[dataType2] = data2
inner$e(data2).mainData = mainData
data2.dataType = dataType2
if (opt.struct) {
data2[opt.structAttr] = opt.struct
opt.struct[opt.datasAttr[dataType2]] = data2
}
data2.getLinkedData = getLinkedData
data2.getLinkedDataAll = getLinkedDataAll
}
var TreeNode = (function () {
function TreeNode2(name2, hostTree) {
this.depth = 0
this.height = 0
this.dataIndex = -1
this.children = []
this.viewChildren = []
this.isExpand = false
this.name = name2 || ''
this.hostTree = hostTree
}
TreeNode2.prototype.isRemoved = function () {
return this.dataIndex < 0
}
TreeNode2.prototype.eachNode = function (options2, cb, context2) {
if (isFunction$4(options2)) {
context2 = cb
cb = options2
options2 = null
}
options2 = options2 || {}
if (isString$2(options2)) {
options2 = {
order: options2,
}
}
var order2 = options2.order || 'preorder'
var children = this[options2.attr || 'children']
var suppressVisitSub
order2 === 'preorder' && (suppressVisitSub = cb.call(context2, this))
for (var i2 = 0; !suppressVisitSub && i2 < children.length; i2++) {
children[i2].eachNode(options2, cb, context2)
}
order2 === 'postorder' && cb.call(context2, this)
}
TreeNode2.prototype.updateDepthAndHeight = function (depth) {
var height = 0
this.depth = depth
for (var i2 = 0; i2 < this.children.length; i2++) {
var child = this.children[i2]
child.updateDepthAndHeight(depth + 1)
if (child.height > height) {
height = child.height
}
}
this.height = height + 1
}
TreeNode2.prototype.getNodeById = function (id2) {
if (this.getId() === id2) {
return this
}
for (
var i2 = 0, children = this.children, len2 = children.length;
i2 < len2;
i2++
) {
var res = children[i2].getNodeById(id2)
if (res) {
return res
}
}
}
TreeNode2.prototype.contains = function (node2) {
if (node2 === this) {
return true
}
for (
var i2 = 0, children = this.children, len2 = children.length;
i2 < len2;
i2++
) {
var res = children[i2].contains(node2)
if (res) {
return res
}
}
}
TreeNode2.prototype.getAncestors = function (includeSelf) {
var ancestors = []
var node2 = includeSelf ? this : this.parentNode
while (node2) {
ancestors.push(node2)
node2 = node2.parentNode
}
ancestors.reverse()
return ancestors
}
TreeNode2.prototype.getAncestorsIndices = function () {
var indices = []
var currNode = this
while (currNode) {
indices.push(currNode.dataIndex)
currNode = currNode.parentNode
}
indices.reverse()
return indices
}
TreeNode2.prototype.getDescendantIndices = function () {
var indices = []
this.eachNode(function (childNode) {
indices.push(childNode.dataIndex)
})
return indices
}
TreeNode2.prototype.getValue = function (dimension) {
var data2 = this.hostTree.data
return data2
.getStore()
.get(data2.getDimensionIndex(dimension || 'value'), this.dataIndex)
}
TreeNode2.prototype.setLayout = function (layout2, merge2) {
this.dataIndex >= 0 &&
this.hostTree.data.setItemLayout(this.dataIndex, layout2, merge2)
}
TreeNode2.prototype.getLayout = function () {
return this.hostTree.data.getItemLayout(this.dataIndex)
}
TreeNode2.prototype.getModel = function (path) {
if (this.dataIndex < 0) {
return
}
var hostTree = this.hostTree
var itemModel = hostTree.data.getItemModel(this.dataIndex)
return itemModel.getModel(path)
}
TreeNode2.prototype.getLevelModel = function () {
return (this.hostTree.levelModels || [])[this.depth]
}
TreeNode2.prototype.setVisual = function (key2, value2) {
this.dataIndex >= 0 &&
this.hostTree.data.setItemVisual(this.dataIndex, key2, value2)
}
TreeNode2.prototype.getVisual = function (key2) {
return this.hostTree.data.getItemVisual(this.dataIndex, key2)
}
TreeNode2.prototype.getRawIndex = function () {
return this.hostTree.data.getRawIndex(this.dataIndex)
}
TreeNode2.prototype.getId = function () {
return this.hostTree.data.getId(this.dataIndex)
}
TreeNode2.prototype.getChildIndex = function () {
if (this.parentNode) {
var children = this.parentNode.children
for (var i2 = 0; i2 < children.length; ++i2) {
if (children[i2] === this) {
return i2
}
}
return -1
}
return -1
}
TreeNode2.prototype.isAncestorOf = function (node2) {
var parent2 = node2.parentNode
while (parent2) {
if (parent2 === this) {
return true
}
parent2 = parent2.parentNode
}
return false
}
TreeNode2.prototype.isDescendantOf = function (node2) {
return node2 !== this && node2.isAncestorOf(this)
}
return TreeNode2
})()
var Tree = (function () {
function Tree2(hostModel) {
this.type = 'tree'
this._nodes = []
this.hostModel = hostModel
}
Tree2.prototype.eachNode = function (options2, cb, context2) {
this.root.eachNode(options2, cb, context2)
}
Tree2.prototype.getNodeByDataIndex = function (dataIndex) {
var rawIndex = this.data.getRawIndex(dataIndex)
return this._nodes[rawIndex]
}
Tree2.prototype.getNodeById = function (name2) {
return this.root.getNodeById(name2)
}
Tree2.prototype.update = function () {
var data2 = this.data
var nodes = this._nodes
for (var i2 = 0, len2 = nodes.length; i2 < len2; i2++) {
nodes[i2].dataIndex = -1
}
for (var i2 = 0, len2 = data2.count(); i2 < len2; i2++) {
nodes[data2.getRawIndex(i2)].dataIndex = i2
}
}
Tree2.prototype.clearLayouts = function () {
this.data.clearItemLayouts()
}
Tree2.createTree = function (dataRoot, hostModel, beforeLink) {
var tree = new Tree2(hostModel)
var listData = []
var dimMax = 1
buildHierarchy(dataRoot)
function buildHierarchy(dataNode, parentNode2) {
var value2 = dataNode.value
dimMax = Math.max(dimMax, isArray$6(value2) ? value2.length : 1)
listData.push(dataNode)
var node2 = new TreeNode(convertOptionIdName(dataNode.name, ''), tree)
parentNode2 ? addChild(node2, parentNode2) : (tree.root = node2)
tree._nodes.push(node2)
var children = dataNode.children
if (children) {
for (var i2 = 0; i2 < children.length; i2++) {
buildHierarchy(children[i2], node2)
}
}
}
tree.root.updateDepthAndHeight(0)
var dimensions = prepareSeriesDataSchema(listData, {
coordDimensions: ['value'],
dimensionsCount: dimMax,
}).dimensions
var list2 = new SeriesData$1(dimensions, hostModel)
list2.initData(listData)
beforeLink && beforeLink(list2)
linkSeriesData({
mainData: list2,
struct: tree,
structAttr: 'tree',
})
tree.update()
return tree
}
return Tree2
})()
function addChild(child, node2) {
var children = node2.children
if (child.parentNode === node2) {
return
}
children.push(child)
child.parentNode = node2
}
var Tree$1 = Tree
function retrieveTargetInfo(payload, validPayloadTypes, seriesModel) {
if (payload && indexOf(validPayloadTypes, payload.type) >= 0) {
var root2 = seriesModel.getData().tree.root
var targetNode = payload.targetNode
if (isString$2(targetNode)) {
targetNode = root2.getNodeById(targetNode)
}
if (targetNode && root2.contains(targetNode)) {
return {
node: targetNode,
}
}
var targetNodeId = payload.targetNodeId
if (
targetNodeId != null &&
(targetNode = root2.getNodeById(targetNodeId))
) {
return {
node: targetNode,
}
}
}
}
function getPathToRoot(node2) {
var path = []
while (node2) {
node2 = node2.parentNode
node2 && path.push(node2)
}
return path.reverse()
}
function aboveViewRoot(viewRoot, node2) {
var viewPath = getPathToRoot(viewRoot)
return indexOf(viewPath, node2) >= 0
}
function wrapTreePathInfo(node2, seriesModel) {
var treePathInfo = []
while (node2) {
var nodeDataIndex = node2.dataIndex
treePathInfo.push({
name: node2.name,
dataIndex: nodeDataIndex,
value: seriesModel.getRawValue(nodeDataIndex),
})
node2 = node2.parentNode
}
treePathInfo.reverse()
return treePathInfo
}
var TreeSeriesModel = (function (_super) {
__extends$2(TreeSeriesModel2, _super)
function TreeSeriesModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.hasSymbolVisual = true
_this.ignoreStyleOnData = true
return _this
}
TreeSeriesModel2.prototype.getInitialData = function (option2) {
var root2 = {
name: option2.name,
children: option2.data,
}
var leaves = option2.leaves || {}
var leavesModel = new Model$1(leaves, this, this.ecModel)
var tree = Tree$1.createTree(root2, this, beforeLink)
function beforeLink(nodeData) {
nodeData.wrapMethod('getItemModel', function (model, idx) {
var node2 = tree.getNodeByDataIndex(idx)
if (!(node2 && node2.children.length && node2.isExpand)) {
model.parentModel = leavesModel
}
return model
})
}
var treeDepth = 0
tree.eachNode('preorder', function (node2) {
if (node2.depth > treeDepth) {
treeDepth = node2.depth
}
})
var expandAndCollapse = option2.expandAndCollapse
var expandTreeDepth =
expandAndCollapse && option2.initialTreeDepth >= 0
? option2.initialTreeDepth
: treeDepth
tree.root.eachNode('preorder', function (node2) {
var item2 = node2.hostTree.data.getRawDataItem(node2.dataIndex)
node2.isExpand =
item2 && item2.collapsed != null
? !item2.collapsed
: node2.depth <= expandTreeDepth
})
return tree.data
}
TreeSeriesModel2.prototype.getOrient = function () {
var orient = this.get('orient')
if (orient === 'horizontal') {
orient = 'LR'
} else if (orient === 'vertical') {
orient = 'TB'
}
return orient
}
TreeSeriesModel2.prototype.setZoom = function (zoom) {
this.option.zoom = zoom
}
TreeSeriesModel2.prototype.setCenter = function (center2) {
this.option.center = center2
}
TreeSeriesModel2.prototype.formatTooltip = function (
dataIndex,
multipleSeries,
dataType2
) {
var tree = this.getData().tree
var realRoot = tree.root.children[0]
var node2 = tree.getNodeByDataIndex(dataIndex)
var value2 = node2.getValue()
var name2 = node2.name
while (node2 && node2 !== realRoot) {
name2 = node2.parentNode.name + '.' + name2
node2 = node2.parentNode
}
return createTooltipMarkup('nameValue', {
name: name2,
value: value2,
noValue: isNaN(value2) || value2 == null,
})
}
TreeSeriesModel2.prototype.getDataParams = function (dataIndex) {
var params2 = _super.prototype.getDataParams.apply(this, arguments)
var node2 = this.getData().tree.getNodeByDataIndex(dataIndex)
params2.treeAncestors = wrapTreePathInfo(node2, this)
params2.collapsed = !node2.isExpand
return params2
}
TreeSeriesModel2.type = 'series.tree'
TreeSeriesModel2.layoutMode = 'box'
TreeSeriesModel2.defaultOption = {
z: 2,
coordinateSystem: 'view',
left: '12%',
top: '12%',
right: '12%',
bottom: '12%',
layout: 'orthogonal',
edgeShape: 'curve',
edgeForkPosition: '50%',
roam: false,
nodeScaleRatio: 0.4,
center: null,
zoom: 1,
orient: 'LR',
symbol: 'emptyCircle',
symbolSize: 7,
expandAndCollapse: true,
initialTreeDepth: 2,
lineStyle: {
color: '#ccc',
width: 1.5,
curveness: 0.5,
},
itemStyle: {
color: 'lightsteelblue',
borderWidth: 1.5,
},
label: {
show: true,
},
animationEasing: 'linear',
animationDuration: 700,
animationDurationUpdate: 500,
}
return TreeSeriesModel2
})(SeriesModel$1)
var TreeSeriesModel$1 = TreeSeriesModel
function eachAfter(root2, callback, separation2) {
var nodes = [root2]
var next = []
var node2
while ((node2 = nodes.pop())) {
next.push(node2)
if (node2.isExpand) {
var children = node2.children
if (children.length) {
for (var i2 = 0; i2 < children.length; i2++) {
nodes.push(children[i2])
}
}
}
}
while ((node2 = next.pop())) {
callback(node2, separation2)
}
}
function eachBefore(root2, callback) {
var nodes = [root2]
var node2
while ((node2 = nodes.pop())) {
callback(node2)
if (node2.isExpand) {
var children = node2.children
if (children.length) {
for (var i2 = children.length - 1; i2 >= 0; i2--) {
nodes.push(children[i2])
}
}
}
}
}
function treeLayout(ecModel, api) {
ecModel.eachSeriesByType('tree', function (seriesModel) {
commonLayout(seriesModel, api)
})
}
function commonLayout(seriesModel, api) {
var layoutInfo = getViewRect$4(seriesModel, api)
seriesModel.layoutInfo = layoutInfo
var layout2 = seriesModel.get('layout')
var width = 0
var height = 0
var separation$1 = null
if (layout2 === 'radial') {
width = 2 * Math.PI
height = Math.min(layoutInfo.height, layoutInfo.width) / 2
separation$1 = separation(function (node1, node2) {
return (node1.parentNode === node2.parentNode ? 1 : 2) / node1.depth
})
} else {
width = layoutInfo.width
height = layoutInfo.height
separation$1 = separation()
}
var virtualRoot = seriesModel.getData().tree.root
var realRoot = virtualRoot.children[0]
if (realRoot) {
init$1(virtualRoot)
eachAfter(realRoot, firstWalk, separation$1)
virtualRoot.hierNode.modifier = -realRoot.hierNode.prelim
eachBefore(realRoot, secondWalk)
var left_1 = realRoot
var right_1 = realRoot
var bottom_1 = realRoot
eachBefore(realRoot, function (node2) {
var x2 = node2.getLayout().x
if (x2 < left_1.getLayout().x) {
left_1 = node2
}
if (x2 > right_1.getLayout().x) {
right_1 = node2
}
if (node2.depth > bottom_1.depth) {
bottom_1 = node2
}
})
var delta = left_1 === right_1 ? 1 : separation$1(left_1, right_1) / 2
var tx_1 = delta - left_1.getLayout().x
var kx_1 = 0
var ky_1 = 0
var coorX_1 = 0
var coorY_1 = 0
if (layout2 === 'radial') {
kx_1 = width / (right_1.getLayout().x + delta + tx_1)
ky_1 = height / (bottom_1.depth - 1 || 1)
eachBefore(realRoot, function (node2) {
coorX_1 = (node2.getLayout().x + tx_1) * kx_1
coorY_1 = (node2.depth - 1) * ky_1
var finalCoor = radialCoordinate(coorX_1, coorY_1)
node2.setLayout(
{
x: finalCoor.x,
y: finalCoor.y,
rawX: coorX_1,
rawY: coorY_1,
},
true
)
})
} else {
var orient_1 = seriesModel.getOrient()
if (orient_1 === 'RL' || orient_1 === 'LR') {
ky_1 = height / (right_1.getLayout().x + delta + tx_1)
kx_1 = width / (bottom_1.depth - 1 || 1)
eachBefore(realRoot, function (node2) {
coorY_1 = (node2.getLayout().x + tx_1) * ky_1
coorX_1 =
orient_1 === 'LR'
? (node2.depth - 1) * kx_1
: width - (node2.depth - 1) * kx_1
node2.setLayout(
{
x: coorX_1,
y: coorY_1,
},
true
)
})
} else if (orient_1 === 'TB' || orient_1 === 'BT') {
kx_1 = width / (right_1.getLayout().x + delta + tx_1)
ky_1 = height / (bottom_1.depth - 1 || 1)
eachBefore(realRoot, function (node2) {
coorX_1 = (node2.getLayout().x + tx_1) * kx_1
coorY_1 =
orient_1 === 'TB'
? (node2.depth - 1) * ky_1
: height - (node2.depth - 1) * ky_1
node2.setLayout(
{
x: coorX_1,
y: coorY_1,
},
true
)
})
}
}
}
}
function treeVisual(ecModel) {
ecModel.eachSeriesByType('tree', function (seriesModel) {
var data2 = seriesModel.getData()
var tree = data2.tree
tree.eachNode(function (node2) {
var model = node2.getModel()
var style2 = model.getModel('itemStyle').getItemStyle()
var existsStyle = data2.ensureUniqueItemVisual(node2.dataIndex, 'style')
extend(existsStyle, style2)
})
})
}
function installTreeAction(registers) {
registers.registerAction(
{
type: 'treeExpandAndCollapse',
event: 'treeExpandAndCollapse',
update: 'update',
},
function (payload, ecModel) {
ecModel.eachComponent(
{
mainType: 'series',
subType: 'tree',
query: payload,
},
function (seriesModel) {
var dataIndex = payload.dataIndex
var tree = seriesModel.getData().tree
var node2 = tree.getNodeByDataIndex(dataIndex)
node2.isExpand = !node2.isExpand
}
)
}
)
registers.registerAction(
{
type: 'treeRoam',
event: 'treeRoam',
update: 'none',
},
function (payload, ecModel, api) {
ecModel.eachComponent(
{
mainType: 'series',
subType: 'tree',
query: payload,
},
function (seriesModel) {
var coordSys = seriesModel.coordinateSystem
var res = updateCenterAndZoom(coordSys, payload, void 0, api)
seriesModel.setCenter && seriesModel.setCenter(res.center)
seriesModel.setZoom && seriesModel.setZoom(res.zoom)
}
)
}
)
}
function install$J(registers) {
registers.registerChartView(TreeView$1)
registers.registerSeriesModel(TreeSeriesModel$1)
registers.registerLayout(treeLayout)
registers.registerVisual(treeVisual)
installTreeAction(registers)
}
var actionTypes = ['treemapZoomToNode', 'treemapRender', 'treemapMove']
function installTreemapAction(registers) {
for (var i2 = 0; i2 < actionTypes.length; i2++) {
registers.registerAction(
{
type: actionTypes[i2],
update: 'updateView',
},
noop
)
}
registers.registerAction(
{
type: 'treemapRootToNode',
update: 'updateView',
},
function (payload, ecModel) {
ecModel.eachComponent(
{
mainType: 'series',
subType: 'treemap',
query: payload,
},
handleRootToNode
)
function handleRootToNode(model, index2) {
var types2 = ['treemapZoomToNode', 'treemapRootToNode']
var targetInfo = retrieveTargetInfo(payload, types2, model)
if (targetInfo) {
var originViewRoot = model.getViewRoot()
if (originViewRoot) {
payload.direction = aboveViewRoot(originViewRoot, targetInfo.node)
? 'rollUp'
: 'drillDown'
}
model.resetViewRoot(targetInfo.node)
}
}
}
)
}
function enableAriaDecalForTree(seriesModel) {
var data2 = seriesModel.getData()
var tree = data2.tree
var decalPaletteScope2 = {}
tree.eachNode(function (node2) {
var current2 = node2
while (current2 && current2.depth > 1) {
current2 = current2.parentNode
}
var decal = getDecalFromPalette(
seriesModel.ecModel,
current2.name || current2.dataIndex + '',
decalPaletteScope2
)
node2.setVisual('decal', decal)
})
}
var TreemapSeriesModel = (function (_super) {
__extends$2(TreemapSeriesModel2, _super)
function TreemapSeriesModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = TreemapSeriesModel2.type
_this.preventUsingHoverLayer = true
return _this
}
TreemapSeriesModel2.prototype.getInitialData = function (option2, ecModel) {
var root2 = {
name: option2.name,
children: option2.data,
}
completeTreeValue$1(root2)
var levels = option2.levels || []
var designatedVisualItemStyle = (this.designatedVisualItemStyle = {})
var designatedVisualModel = new Model$1(
{
itemStyle: designatedVisualItemStyle,
},
this,
ecModel
)
levels = option2.levels = setDefault(levels, ecModel)
var levelModels = map$1(
levels || [],
function (levelDefine) {
return new Model$1(levelDefine, designatedVisualModel, ecModel)
},
this
)
var tree = Tree$1.createTree(root2, this, beforeLink)
function beforeLink(nodeData) {
nodeData.wrapMethod('getItemModel', function (model, idx) {
var node2 = tree.getNodeByDataIndex(idx)
var levelModel = node2 ? levelModels[node2.depth] : null
model.parentModel = levelModel || designatedVisualModel
return model
})
}
return tree.data
}
TreemapSeriesModel2.prototype.optionUpdated = function () {
this.resetViewRoot()
}
TreemapSeriesModel2.prototype.formatTooltip = function (
dataIndex,
multipleSeries,
dataType2
) {
var data2 = this.getData()
var value2 = this.getRawValue(dataIndex)
var name2 = data2.getName(dataIndex)
return createTooltipMarkup('nameValue', {
name: name2,
value: value2,
})
}
TreemapSeriesModel2.prototype.getDataParams = function (dataIndex) {
var params2 = _super.prototype.getDataParams.apply(this, arguments)
var node2 = this.getData().tree.getNodeByDataIndex(dataIndex)
params2.treeAncestors = wrapTreePathInfo(node2, this)
params2.treePathInfo = params2.treeAncestors
return params2
}
TreemapSeriesModel2.prototype.setLayoutInfo = function (layoutInfo) {
this.layoutInfo = this.layoutInfo || {}
extend(this.layoutInfo, layoutInfo)
}
TreemapSeriesModel2.prototype.mapIdToIndex = function (id2) {
var idIndexMap = this._idIndexMap
if (!idIndexMap) {
idIndexMap = this._idIndexMap = createHashMap()
this._idIndexMapCount = 0
}
var index2 = idIndexMap.get(id2)
if (index2 == null) {
idIndexMap.set(id2, (index2 = this._idIndexMapCount++))
}
return index2
}
TreemapSeriesModel2.prototype.getViewRoot = function () {
return this._viewRoot
}
TreemapSeriesModel2.prototype.resetViewRoot = function (viewRoot) {
viewRoot ? (this._viewRoot = viewRoot) : (viewRoot = this._viewRoot)
var root2 = this.getRawData().tree.root
if (!viewRoot || (viewRoot !== root2 && !root2.contains(viewRoot))) {
this._viewRoot = root2
}
}
TreemapSeriesModel2.prototype.enableAriaDecal = function () {
enableAriaDecalForTree(this)
}
TreemapSeriesModel2.type = 'series.treemap'
TreemapSeriesModel2.layoutMode = 'box'
TreemapSeriesModel2.defaultOption = {
progressive: 0,
left: 'center',
top: 'middle',
width: '80%',
height: '80%',
sort: true,
clipWindow: 'origin',
squareRatio: 0.5 * (1 + Math.sqrt(5)),
leafDepth: null,
drillDownIcon: '\u25B6',
zoomToNodeRatio: 0.32 * 0.32,
roam: true,
nodeClick: 'zoomToNode',
animation: true,
animationDurationUpdate: 900,
animationEasing: 'quinticInOut',
breadcrumb: {
show: true,
height: 22,
left: 'center',
top: 'bottom',
emptyItemWidth: 25,
itemStyle: {
color: 'rgba(0,0,0,0.7)',
textStyle: {
color: '#fff',
},
},
emphasis: {
itemStyle: {
color: 'rgba(0,0,0,0.9)',
},
},
},
label: {
show: true,
distance: 0,
padding: 5,
position: 'inside',
color: '#fff',
overflow: 'truncate',
},
upperLabel: {
show: false,
position: [0, '50%'],
height: 20,
overflow: 'truncate',
verticalAlign: 'middle',
},
itemStyle: {
color: null,
colorAlpha: null,
colorSaturation: null,
borderWidth: 0,
gapWidth: 0,
borderColor: '#fff',
borderColorSaturation: null,
},
emphasis: {
upperLabel: {
show: true,
position: [0, '50%'],
overflow: 'truncate',
verticalAlign: 'middle',
},
},
visualDimension: 0,
visualMin: null,
visualMax: null,
color: [],
colorAlpha: null,
colorSaturation: null,
colorMappingBy: 'index',
visibleMin: 10,
childrenVisibleMin: null,
levels: [],
}
return TreemapSeriesModel2
})(SeriesModel$1)
function completeTreeValue$1(dataNode) {
var sum2 = 0
each$f(dataNode.children, function (child) {
completeTreeValue$1(child)
var childValue = child.value
isArray$6(childValue) && (childValue = childValue[0])
sum2 += childValue
})
var thisValue = dataNode.value
if (isArray$6(thisValue)) {
thisValue = thisValue[0]
}
if (thisValue == null || isNaN(thisValue)) {
thisValue = sum2
}
if (thisValue < 0) {
thisValue = 0
}
isArray$6(dataNode.value)
? (dataNode.value[0] = thisValue)
: (dataNode.value = thisValue)
}
function setDefault(levels, ecModel) {
var globalColorList = normalizeToArray(ecModel.get('color'))
var globalDecalList = normalizeToArray(
ecModel.get(['aria', 'decal', 'decals'])
)
if (!globalColorList) {
return
}
levels = levels || []
var hasColorDefine
var hasDecalDefine
each$f(levels, function (levelDefine) {
var model = new Model$1(levelDefine)
var modelColor = model.get('color')
var modelDecal = model.get('decal')
if (
model.get(['itemStyle', 'color']) ||
(modelColor && modelColor !== 'none')
) {
hasColorDefine = true
}
if (
model.get(['itemStyle', 'decal']) ||
(modelDecal && modelDecal !== 'none')
) {
hasDecalDefine = true
}
})
var level0 = levels[0] || (levels[0] = {})
if (!hasColorDefine) {
level0.color = globalColorList.slice()
}
if (!hasDecalDefine && globalDecalList) {
level0.decal = globalDecalList.slice()
}
return levels
}
var TreemapSeriesModel$1 = TreemapSeriesModel
var TEXT_PADDING = 8
var ITEM_GAP = 8
var ARRAY_LENGTH = 5
var Breadcrumb = (function () {
function Breadcrumb2(containerGroup) {
this.group = new Group$5()
containerGroup.add(this.group)
}
Breadcrumb2.prototype.render = function (
seriesModel,
api,
targetNode,
onSelect
) {
var model = seriesModel.getModel('breadcrumb')
var thisGroup = this.group
thisGroup.removeAll()
if (!model.get('show') || !targetNode) {
return
}
var normalStyleModel = model.getModel('itemStyle')
var emphasisModel = model.getModel('emphasis')
var textStyleModel = normalStyleModel.getModel('textStyle')
var emphasisTextStyleModel = emphasisModel.getModel([
'itemStyle',
'textStyle',
])
var layoutParam = {
pos: {
left: model.get('left'),
right: model.get('right'),
top: model.get('top'),
bottom: model.get('bottom'),
},
box: {
width: api.getWidth(),
height: api.getHeight(),
},
emptyItemWidth: model.get('emptyItemWidth'),
totalWidth: 0,
renderList: [],
}
this._prepare(targetNode, layoutParam, textStyleModel)
this._renderContent(
seriesModel,
layoutParam,
normalStyleModel,
emphasisModel,
textStyleModel,
emphasisTextStyleModel,
onSelect
)
positionElement(thisGroup, layoutParam.pos, layoutParam.box)
}
Breadcrumb2.prototype._prepare = function (
targetNode,
layoutParam,
textStyleModel
) {
for (var node2 = targetNode; node2; node2 = node2.parentNode) {
var text2 = convertOptionIdName(node2.getModel().get('name'), '')
var textRect = textStyleModel.getTextRect(text2)
var itemWidth = Math.max(
textRect.width + TEXT_PADDING * 2,
layoutParam.emptyItemWidth
)
layoutParam.totalWidth += itemWidth + ITEM_GAP
layoutParam.renderList.push({
node: node2,
text: text2,
width: itemWidth,
})
}
}
Breadcrumb2.prototype._renderContent = function (
seriesModel,
layoutParam,
normalStyleModel,
emphasisModel,
textStyleModel,
emphasisTextStyleModel,
onSelect
) {
var lastX = 0
var emptyItemWidth = layoutParam.emptyItemWidth
var height = seriesModel.get(['breadcrumb', 'height'])
var availableSize = getAvailableSize(layoutParam.pos, layoutParam.box)
var totalWidth = layoutParam.totalWidth
var renderList2 = layoutParam.renderList
var emphasisItemStyle = emphasisModel.getModel('itemStyle').getItemStyle()
for (var i2 = renderList2.length - 1; i2 >= 0; i2--) {
var item2 = renderList2[i2]
var itemNode = item2.node
var itemWidth = item2.width
var text2 = item2.text
if (totalWidth > availableSize.width) {
totalWidth -= itemWidth - emptyItemWidth
itemWidth = emptyItemWidth
text2 = null
}
var el2 = new Polygon$1({
shape: {
points: makeItemPoints(
lastX,
0,
itemWidth,
height,
i2 === renderList2.length - 1,
i2 === 0
),
},
style: defaults(normalStyleModel.getItemStyle(), {
lineJoin: 'bevel',
}),
textContent: new ZRText$1({
style: createTextStyle$1(textStyleModel, {
text: text2,
}),
}),
textConfig: {
position: 'inside',
},
z2: Z2_EMPHASIS_LIFT * 1e4,
onclick: curry$1(onSelect, itemNode),
})
el2.disableLabelAnimation = true
el2.getTextContent().ensureState('emphasis').style = createTextStyle$1(
emphasisTextStyleModel,
{
text: text2,
}
)
el2.ensureState('emphasis').style = emphasisItemStyle
toggleHoverEmphasis(
el2,
emphasisModel.get('focus'),
emphasisModel.get('blurScope'),
emphasisModel.get('disabled')
)
this.group.add(el2)
packEventData(el2, seriesModel, itemNode)
lastX += itemWidth + ITEM_GAP
}
}
Breadcrumb2.prototype.remove = function () {
this.group.removeAll()
}
return Breadcrumb2
})()
function makeItemPoints(x2, y2, itemWidth, itemHeight, head, tail) {
var points2 = [
[head ? x2 : x2 - ARRAY_LENGTH, y2],
[x2 + itemWidth, y2],
[x2 + itemWidth, y2 + itemHeight],
[head ? x2 : x2 - ARRAY_LENGTH, y2 + itemHeight],
]
!tail &&
points2.splice(2, 0, [x2 + itemWidth + ARRAY_LENGTH, y2 + itemHeight / 2])
!head && points2.push([x2, y2 + itemHeight / 2])
return points2
}
function packEventData(el2, seriesModel, itemNode) {
getECData(el2).eventData = {
componentType: 'series',
componentSubType: 'treemap',
componentIndex: seriesModel.componentIndex,
seriesIndex: seriesModel.seriesIndex,
seriesName: seriesModel.name,
seriesType: 'treemap',
selfType: 'breadcrumb',
nodeData: {
dataIndex: itemNode && itemNode.dataIndex,
name: itemNode && itemNode.name,
},
treePathInfo: itemNode && wrapTreePathInfo(itemNode, seriesModel),
}
}
var Breadcrumb$1 = Breadcrumb
var AnimationWrap = (function () {
function AnimationWrap2() {
this._storage = []
this._elExistsMap = {}
}
AnimationWrap2.prototype.add = function (
el2,
target2,
duration2,
delay2,
easing
) {
if (this._elExistsMap[el2.id]) {
return false
}
this._elExistsMap[el2.id] = true
this._storage.push({
el: el2,
target: target2,
duration: duration2,
delay: delay2,
easing,
})
return true
}
AnimationWrap2.prototype.finished = function (callback) {
this._finishedCallback = callback
return this
}
AnimationWrap2.prototype.start = function () {
var _this = this
var count2 = this._storage.length
var checkTerminate = function () {
count2--
if (count2 <= 0) {
_this._storage.length = 0
_this._elExistsMap = {}
_this._finishedCallback && _this._finishedCallback()
}
}
for (var i2 = 0, len2 = this._storage.length; i2 < len2; i2++) {
var item2 = this._storage[i2]
item2.el.animateTo(item2.target, {
duration: item2.duration,
delay: item2.delay,
easing: item2.easing,
setToFinal: true,
done: checkTerminate,
aborted: checkTerminate,
})
}
return this
}
return AnimationWrap2
})()
function createWrap() {
return new AnimationWrap()
}
var Group$3 = Group$5
var Rect$2 = Rect$4
var DRAG_THRESHOLD = 3
var PATH_LABEL_NOAMAL = 'label'
var PATH_UPPERLABEL_NORMAL = 'upperLabel'
var Z2_BASE = Z2_EMPHASIS_LIFT * 10
var Z2_BG = Z2_EMPHASIS_LIFT * 2
var Z2_CONTENT = Z2_EMPHASIS_LIFT * 3
var getStateItemStyle = makeStyleMapper([
['fill', 'color'],
['stroke', 'strokeColor'],
['lineWidth', 'strokeWidth'],
['shadowBlur'],
['shadowOffsetX'],
['shadowOffsetY'],
['shadowColor'],
])
var getItemStyleNormal = function (model) {
var itemStyle = getStateItemStyle(model)
itemStyle.stroke = itemStyle.fill = itemStyle.lineWidth = null
return itemStyle
}
var inner$d = makeInner()
var TreemapView = (function (_super) {
__extends$2(TreemapView2, _super)
function TreemapView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = TreemapView2.type
_this._state = 'ready'
_this._storage = createStorage()
return _this
}
TreemapView2.prototype.render = function (
seriesModel,
ecModel,
api,
payload
) {
var models2 = ecModel.findComponents({
mainType: 'series',
subType: 'treemap',
query: payload,
})
if (indexOf(models2, seriesModel) < 0) {
return
}
this.seriesModel = seriesModel
this.api = api
this.ecModel = ecModel
var types2 = ['treemapZoomToNode', 'treemapRootToNode']
var targetInfo = retrieveTargetInfo(payload, types2, seriesModel)
var payloadType = payload && payload.type
var layoutInfo = seriesModel.layoutInfo
var isInit = !this._oldTree
var thisStorage = this._storage
var reRoot =
payloadType === 'treemapRootToNode' && targetInfo && thisStorage
? {
rootNodeGroup: thisStorage.nodeGroup[targetInfo.node.getRawIndex()],
direction: payload.direction,
}
: null
var containerGroup = this._giveContainerGroup(layoutInfo)
var hasAnimation = seriesModel.get('animation')
var renderResult = this._doRender(containerGroup, seriesModel, reRoot)
hasAnimation &&
!isInit &&
(!payloadType ||
payloadType === 'treemapZoomToNode' ||
payloadType === 'treemapRootToNode')
? this._doAnimation(containerGroup, renderResult, seriesModel, reRoot)
: renderResult.renderFinally()
this._resetController(api)
this._renderBreadcrumb(seriesModel, api, targetInfo)
}
TreemapView2.prototype._giveContainerGroup = function (layoutInfo) {
var containerGroup = this._containerGroup
if (!containerGroup) {
containerGroup = this._containerGroup = new Group$3()
this._initEvents(containerGroup)
this.group.add(containerGroup)
}
containerGroup.x = layoutInfo.x
containerGroup.y = layoutInfo.y
return containerGroup
}
TreemapView2.prototype._doRender = function (
containerGroup,
seriesModel,
reRoot
) {
var thisTree = seriesModel.getData().tree
var oldTree = this._oldTree
var lastsForAnimation = createStorage()
var thisStorage = createStorage()
var oldStorage = this._storage
var willInvisibleEls = []
function doRenderNode(thisNode, oldNode, parentGroup, depth) {
return renderNode(
seriesModel,
thisStorage,
oldStorage,
reRoot,
lastsForAnimation,
willInvisibleEls,
thisNode,
oldNode,
parentGroup,
depth
)
}
dualTravel(
thisTree.root ? [thisTree.root] : [],
oldTree && oldTree.root ? [oldTree.root] : [],
containerGroup,
thisTree === oldTree || !oldTree,
0
)
var willDeleteEls = clearStorage(oldStorage)
this._oldTree = thisTree
this._storage = thisStorage
return {
lastsForAnimation,
willDeleteEls,
renderFinally,
}
function dualTravel(
thisViewChildren,
oldViewChildren,
parentGroup,
sameTree,
depth
) {
if (sameTree) {
oldViewChildren = thisViewChildren
each$f(thisViewChildren, function (child, index2) {
!child.isRemoved() && processNode(index2, index2)
})
} else {
new DataDiffer$1(oldViewChildren, thisViewChildren, getKey2, getKey2)
.add(processNode)
.update(processNode)
.remove(curry$1(processNode, null))
.execute()
}
function getKey2(node2) {
return node2.getId()
}
function processNode(newIndex2, oldIndex2) {
var thisNode = newIndex2 != null ? thisViewChildren[newIndex2] : null
var oldNode = oldIndex2 != null ? oldViewChildren[oldIndex2] : null
var group = doRenderNode(thisNode, oldNode, parentGroup, depth)
group &&
dualTravel(
(thisNode && thisNode.viewChildren) || [],
(oldNode && oldNode.viewChildren) || [],
group,
sameTree,
depth + 1
)
}
}
function clearStorage(storage2) {
var willDeleteEls2 = createStorage()
storage2 &&
each$f(storage2, function (store2, storageName) {
var delEls = willDeleteEls2[storageName]
each$f(store2, function (el2) {
el2 && (delEls.push(el2), (inner$d(el2).willDelete = true))
})
})
return willDeleteEls2
}
function renderFinally() {
each$f(willDeleteEls, function (els) {
each$f(els, function (el2) {
el2.parent && el2.parent.remove(el2)
})
})
each$f(willInvisibleEls, function (el2) {
el2.invisible = true
el2.dirty()
})
}
}
TreemapView2.prototype._doAnimation = function (
containerGroup,
renderResult,
seriesModel,
reRoot
) {
var durationOption = seriesModel.get('animationDurationUpdate')
var easingOption = seriesModel.get('animationEasing')
var duration2 = (isFunction$4(durationOption) ? 0 : durationOption) || 0
var easing =
(isFunction$4(easingOption) ? null : easingOption) || 'cubicOut'
var animationWrap = createWrap()
each$f(renderResult.willDeleteEls, function (store2, storageName) {
each$f(store2, function (el2, rawIndex) {
if (el2.invisible) {
return
}
var parent2 = el2.parent
var target2
var innerStore = inner$d(parent2)
if (reRoot && reRoot.direction === 'drillDown') {
target2 =
parent2 === reRoot.rootNodeGroup
? {
shape: {
x: 0,
y: 0,
width: innerStore.nodeWidth,
height: innerStore.nodeHeight,
},
style: {
opacity: 0,
},
}
: {
style: {
opacity: 0,
},
}
} else {
var targetX = 0
var targetY = 0
if (!innerStore.willDelete) {
targetX = innerStore.nodeWidth / 2
targetY = innerStore.nodeHeight / 2
}
target2 =
storageName === 'nodeGroup'
? {
x: targetX,
y: targetY,
style: {
opacity: 0,
},
}
: {
shape: {
x: targetX,
y: targetY,
width: 0,
height: 0,
},
style: {
opacity: 0,
},
}
}
target2 && animationWrap.add(el2, target2, duration2, 0, easing)
})
})
each$f(
this._storage,
function (store2, storageName) {
each$f(store2, function (el2, rawIndex) {
var last2 = renderResult.lastsForAnimation[storageName][rawIndex]
var target2 = {}
if (!last2) {
return
}
if (el2 instanceof Group$5) {
if (last2.oldX != null) {
target2.x = el2.x
target2.y = el2.y
el2.x = last2.oldX
el2.y = last2.oldY
}
} else {
if (last2.oldShape) {
target2.shape = extend({}, el2.shape)
el2.setShape(last2.oldShape)
}
if (last2.fadein) {
el2.setStyle('opacity', 0)
target2.style = {
opacity: 1,
}
} else if (el2.style.opacity !== 1) {
target2.style = {
opacity: 1,
}
}
}
animationWrap.add(el2, target2, duration2, 0, easing)
})
},
this
)
this._state = 'animating'
animationWrap
.finished(
bind$1(function () {
this._state = 'ready'
renderResult.renderFinally()
}, this)
)
.start()
}
TreemapView2.prototype._resetController = function (api) {
var controller = this._controller
if (!controller) {
controller = this._controller = new RoamController$1(api.getZr())
controller.enable(this.seriesModel.get('roam'))
controller.on('pan', bind$1(this._onPan, this))
controller.on('zoom', bind$1(this._onZoom, this))
}
var rect = new BoundingRect$1(0, 0, api.getWidth(), api.getHeight())
controller.setPointerChecker(function (e2, x2, y2) {
return rect.contain(x2, y2)
})
}
TreemapView2.prototype._clearController = function () {
var controller = this._controller
if (controller) {
controller.dispose()
controller = null
}
}
TreemapView2.prototype._onPan = function (e2) {
if (
this._state !== 'animating' &&
(Math.abs(e2.dx) > DRAG_THRESHOLD || Math.abs(e2.dy) > DRAG_THRESHOLD)
) {
var root2 = this.seriesModel.getData().tree.root
if (!root2) {
return
}
var rootLayout = root2.getLayout()
if (!rootLayout) {
return
}
this.api.dispatchAction({
type: 'treemapMove',
from: this.uid,
seriesId: this.seriesModel.id,
rootRect: {
x: rootLayout.x + e2.dx,
y: rootLayout.y + e2.dy,
width: rootLayout.width,
height: rootLayout.height,
},
})
}
}
TreemapView2.prototype._onZoom = function (e2) {
var mouseX = e2.originX
var mouseY = e2.originY
if (this._state !== 'animating') {
var root2 = this.seriesModel.getData().tree.root
if (!root2) {
return
}
var rootLayout = root2.getLayout()
if (!rootLayout) {
return
}
var rect = new BoundingRect$1(
rootLayout.x,
rootLayout.y,
rootLayout.width,
rootLayout.height
)
var layoutInfo = this.seriesModel.layoutInfo
mouseX -= layoutInfo.x
mouseY -= layoutInfo.y
var m2 = create$1()
translate$1(m2, m2, [-mouseX, -mouseY])
scale$1(m2, m2, [e2.scale, e2.scale])
translate$1(m2, m2, [mouseX, mouseY])
rect.applyTransform(m2)
this.api.dispatchAction({
type: 'treemapRender',
from: this.uid,
seriesId: this.seriesModel.id,
rootRect: {
x: rect.x,
y: rect.y,
width: rect.width,
height: rect.height,
},
})
}
}
TreemapView2.prototype._initEvents = function (containerGroup) {
var _this = this
containerGroup.on(
'click',
function (e2) {
if (_this._state !== 'ready') {
return
}
var nodeClick = _this.seriesModel.get('nodeClick', true)
if (!nodeClick) {
return
}
var targetInfo = _this.findTarget(e2.offsetX, e2.offsetY)
if (!targetInfo) {
return
}
var node2 = targetInfo.node
if (node2.getLayout().isLeafRoot) {
_this._rootToNode(targetInfo)
} else {
if (nodeClick === 'zoomToNode') {
_this._zoomToNode(targetInfo)
} else if (nodeClick === 'link') {
var itemModel = node2.hostTree.data.getItemModel(node2.dataIndex)
var link2 = itemModel.get('link', true)
var linkTarget = itemModel.get('target', true) || 'blank'
link2 && windowOpen(link2, linkTarget)
}
}
},
this
)
}
TreemapView2.prototype._renderBreadcrumb = function (
seriesModel,
api,
targetInfo
) {
var _this = this
if (!targetInfo) {
targetInfo =
seriesModel.get('leafDepth', true) != null
? {
node: seriesModel.getViewRoot(),
}
: this.findTarget(api.getWidth() / 2, api.getHeight() / 2)
if (!targetInfo) {
targetInfo = {
node: seriesModel.getData().tree.root,
}
}
}
;(
this._breadcrumb || (this._breadcrumb = new Breadcrumb$1(this.group))
).render(seriesModel, api, targetInfo.node, function (node2) {
if (_this._state !== 'animating') {
aboveViewRoot(seriesModel.getViewRoot(), node2)
? _this._rootToNode({
node: node2,
})
: _this._zoomToNode({
node: node2,
})
}
})
}
TreemapView2.prototype.remove = function () {
this._clearController()
this._containerGroup && this._containerGroup.removeAll()
this._storage = createStorage()
this._state = 'ready'
this._breadcrumb && this._breadcrumb.remove()
}
TreemapView2.prototype.dispose = function () {
this._clearController()
}
TreemapView2.prototype._zoomToNode = function (targetInfo) {
this.api.dispatchAction({
type: 'treemapZoomToNode',
from: this.uid,
seriesId: this.seriesModel.id,
targetNode: targetInfo.node,
})
}
TreemapView2.prototype._rootToNode = function (targetInfo) {
this.api.dispatchAction({
type: 'treemapRootToNode',
from: this.uid,
seriesId: this.seriesModel.id,
targetNode: targetInfo.node,
})
}
TreemapView2.prototype.findTarget = function (x2, y2) {
var targetInfo
var viewRoot = this.seriesModel.getViewRoot()
viewRoot.eachNode(
{
attr: 'viewChildren',
order: 'preorder',
},
function (node2) {
var bgEl = this._storage.background[node2.getRawIndex()]
if (bgEl) {
var point = bgEl.transformCoordToLocal(x2, y2)
var shape = bgEl.shape
if (
shape.x <= point[0] &&
point[0] <= shape.x + shape.width &&
shape.y <= point[1] &&
point[1] <= shape.y + shape.height
) {
targetInfo = {
node: node2,
offsetX: point[0],
offsetY: point[1],
}
} else {
return false
}
}
},
this
)
return targetInfo
}
TreemapView2.type = 'treemap'
return TreemapView2
})(ChartView$1)
function createStorage() {
return {
nodeGroup: [],
background: [],
content: [],
}
}
function renderNode(
seriesModel,
thisStorage,
oldStorage,
reRoot,
lastsForAnimation,
willInvisibleEls,
thisNode,
oldNode,
parentGroup,
depth
) {
if (!thisNode) {
return
}
var thisLayout = thisNode.getLayout()
var data2 = seriesModel.getData()
var nodeModel = thisNode.getModel()
data2.setItemGraphicEl(thisNode.dataIndex, null)
if (!thisLayout || !thisLayout.isInView) {
return
}
var thisWidth = thisLayout.width
var thisHeight = thisLayout.height
var borderWidth = thisLayout.borderWidth
var thisInvisible = thisLayout.invisible
var thisRawIndex = thisNode.getRawIndex()
var oldRawIndex = oldNode && oldNode.getRawIndex()
var thisViewChildren = thisNode.viewChildren
var upperHeight = thisLayout.upperHeight
var isParent = thisViewChildren && thisViewChildren.length
var itemStyleNormalModel = nodeModel.getModel('itemStyle')
var itemStyleEmphasisModel = nodeModel.getModel(['emphasis', 'itemStyle'])
var itemStyleBlurModel = nodeModel.getModel(['blur', 'itemStyle'])
var itemStyleSelectModel = nodeModel.getModel(['select', 'itemStyle'])
var borderRadius = itemStyleNormalModel.get('borderRadius') || 0
var group = giveGraphic('nodeGroup', Group$3)
if (!group) {
return
}
parentGroup.add(group)
group.x = thisLayout.x || 0
group.y = thisLayout.y || 0
group.markRedraw()
inner$d(group).nodeWidth = thisWidth
inner$d(group).nodeHeight = thisHeight
if (thisLayout.isAboveViewRoot) {
return group
}
var bg2 = giveGraphic('background', Rect$2, depth, Z2_BG)
bg2 && renderBackground(group, bg2, isParent && thisLayout.upperLabelHeight)
var emphasisModel = nodeModel.getModel('emphasis')
var focus2 = emphasisModel.get('focus')
var blurScope = emphasisModel.get('blurScope')
var isDisabled = emphasisModel.get('disabled')
var focusOrIndices =
focus2 === 'ancestor'
? thisNode.getAncestorsIndices()
: focus2 === 'descendant'
? thisNode.getDescendantIndices()
: focus2
if (isParent) {
if (isHighDownDispatcher(group)) {
setAsHighDownDispatcher(group, false)
}
if (bg2) {
setAsHighDownDispatcher(bg2, !isDisabled)
data2.setItemGraphicEl(thisNode.dataIndex, bg2)
enableHoverFocus(bg2, focusOrIndices, blurScope)
}
} else {
var content2 = giveGraphic('content', Rect$2, depth, Z2_CONTENT)
content2 && renderContent(group, content2)
bg2.disableMorphing = true
if (bg2 && isHighDownDispatcher(bg2)) {
setAsHighDownDispatcher(bg2, false)
}
setAsHighDownDispatcher(group, !isDisabled)
data2.setItemGraphicEl(thisNode.dataIndex, group)
enableHoverFocus(group, focusOrIndices, blurScope)
}
return group
function renderBackground(group2, bg3, useUpperLabel) {
var ecData = getECData(bg3)
ecData.dataIndex = thisNode.dataIndex
ecData.seriesIndex = seriesModel.seriesIndex
bg3.setShape({
x: 0,
y: 0,
width: thisWidth,
height: thisHeight,
r: borderRadius,
})
if (thisInvisible) {
processInvisible(bg3)
} else {
bg3.invisible = false
var style2 = thisNode.getVisual('style')
var visualBorderColor = style2.stroke
var normalStyle = getItemStyleNormal(itemStyleNormalModel)
normalStyle.fill = visualBorderColor
var emphasisStyle = getStateItemStyle(itemStyleEmphasisModel)
emphasisStyle.fill = itemStyleEmphasisModel.get('borderColor')
var blurStyle = getStateItemStyle(itemStyleBlurModel)
blurStyle.fill = itemStyleBlurModel.get('borderColor')
var selectStyle = getStateItemStyle(itemStyleSelectModel)
selectStyle.fill = itemStyleSelectModel.get('borderColor')
if (useUpperLabel) {
var upperLabelWidth = thisWidth - 2 * borderWidth
prepareText(bg3, visualBorderColor, style2.opacity, {
x: borderWidth,
y: 0,
width: upperLabelWidth,
height: upperHeight,
})
} else {
bg3.removeTextContent()
}
bg3.setStyle(normalStyle)
bg3.ensureState('emphasis').style = emphasisStyle
bg3.ensureState('blur').style = blurStyle
bg3.ensureState('select').style = selectStyle
setDefaultStateProxy(bg3)
}
group2.add(bg3)
}
function renderContent(group2, content3) {
var ecData = getECData(content3)
ecData.dataIndex = thisNode.dataIndex
ecData.seriesIndex = seriesModel.seriesIndex
var contentWidth = Math.max(thisWidth - 2 * borderWidth, 0)
var contentHeight = Math.max(thisHeight - 2 * borderWidth, 0)
content3.culling = true
content3.setShape({
x: borderWidth,
y: borderWidth,
width: contentWidth,
height: contentHeight,
r: borderRadius,
})
if (thisInvisible) {
processInvisible(content3)
} else {
content3.invisible = false
var nodeStyle = thisNode.getVisual('style')
var visualColor = nodeStyle.fill
var normalStyle = getItemStyleNormal(itemStyleNormalModel)
normalStyle.fill = visualColor
normalStyle.decal = nodeStyle.decal
var emphasisStyle = getStateItemStyle(itemStyleEmphasisModel)
var blurStyle = getStateItemStyle(itemStyleBlurModel)
var selectStyle = getStateItemStyle(itemStyleSelectModel)
prepareText(content3, visualColor, nodeStyle.opacity, null)
content3.setStyle(normalStyle)
content3.ensureState('emphasis').style = emphasisStyle
content3.ensureState('blur').style = blurStyle
content3.ensureState('select').style = selectStyle
setDefaultStateProxy(content3)
}
group2.add(content3)
}
function processInvisible(element) {
!element.invisible && willInvisibleEls.push(element)
}
function prepareText(rectEl, visualColor, visualOpacity, upperLabelRect) {
var normalLabelModel = nodeModel.getModel(
upperLabelRect ? PATH_UPPERLABEL_NORMAL : PATH_LABEL_NOAMAL
)
var defaultText = convertOptionIdName(nodeModel.get('name'), null)
var isShow = normalLabelModel.getShallow('show')
setLabelStyle(
rectEl,
getLabelStatesModels(
nodeModel,
upperLabelRect ? PATH_UPPERLABEL_NORMAL : PATH_LABEL_NOAMAL
),
{
defaultText: isShow ? defaultText : null,
inheritColor: visualColor,
defaultOpacity: visualOpacity,
labelFetcher: seriesModel,
labelDataIndex: thisNode.dataIndex,
}
)
var textEl = rectEl.getTextContent()
if (!textEl) {
return
}
var textStyle = textEl.style
var textPadding = normalizeCssArray$1(textStyle.padding || 0)
if (upperLabelRect) {
rectEl.setTextConfig({
layoutRect: upperLabelRect,
})
textEl.disableLabelLayout = true
}
textEl.beforeUpdate = function () {
var width = Math.max(
(upperLabelRect ? upperLabelRect.width : rectEl.shape.width) -
textPadding[1] -
textPadding[3],
0
)
var height = Math.max(
(upperLabelRect ? upperLabelRect.height : rectEl.shape.height) -
textPadding[0] -
textPadding[2],
0
)
if (textStyle.width !== width || textStyle.height !== height) {
textEl.setStyle({
width,
height,
})
}
}
textStyle.truncateMinChar = 2
textStyle.lineOverflow = 'truncate'
addDrillDownIcon(textStyle, upperLabelRect, thisLayout)
var textEmphasisState = textEl.getState('emphasis')
addDrillDownIcon(
textEmphasisState ? textEmphasisState.style : null,
upperLabelRect,
thisLayout
)
}
function addDrillDownIcon(style2, upperLabelRect, thisLayout2) {
var text2 = style2 ? style2.text : null
if (!upperLabelRect && thisLayout2.isLeafRoot && text2 != null) {
var iconChar = seriesModel.get('drillDownIcon', true)
style2.text = iconChar ? iconChar + ' ' + text2 : text2
}
}
function giveGraphic(storageName, Ctor, depth2, z2) {
var element = oldRawIndex != null && oldStorage[storageName][oldRawIndex]
var lasts = lastsForAnimation[storageName]
if (element) {
oldStorage[storageName][oldRawIndex] = null
prepareAnimationWhenHasOld(lasts, element)
} else if (!thisInvisible) {
element = new Ctor()
if (element instanceof Displayable$1) {
element.z2 = calculateZ2(depth2, z2)
}
prepareAnimationWhenNoOld(lasts, element)
}
return (thisStorage[storageName][thisRawIndex] = element)
}
function prepareAnimationWhenHasOld(lasts, element) {
var lastCfg = (lasts[thisRawIndex] = {})
if (element instanceof Group$3) {
lastCfg.oldX = element.x
lastCfg.oldY = element.y
} else {
lastCfg.oldShape = extend({}, element.shape)
}
}
function prepareAnimationWhenNoOld(lasts, element) {
var lastCfg = (lasts[thisRawIndex] = {})
var parentNode2 = thisNode.parentNode
var isGroup2 = element instanceof Group$5
if (parentNode2 && (!reRoot || reRoot.direction === 'drillDown')) {
var parentOldX = 0
var parentOldY = 0
var parentOldBg = lastsForAnimation.background[parentNode2.getRawIndex()]
if (!reRoot && parentOldBg && parentOldBg.oldShape) {
parentOldX = parentOldBg.oldShape.width
parentOldY = parentOldBg.oldShape.height
}
if (isGroup2) {
lastCfg.oldX = 0
lastCfg.oldY = parentOldY
} else {
lastCfg.oldShape = {
x: parentOldX,
y: parentOldY,
width: 0,
height: 0,
}
}
}
lastCfg.fadein = !isGroup2
}
}
function calculateZ2(depth, z2InLevel) {
return depth * Z2_BASE + z2InLevel
}
var TreemapView$1 = TreemapView
var each$c = each$f
var isObject$8 = isObject$b
var CATEGORY_DEFAULT_VISUAL_INDEX = -1
var VisualMapping = (function () {
function VisualMapping2(option2) {
var mappingMethod = option2.mappingMethod
var visualType = option2.type
var thisOption = (this.option = clone$4(option2))
this.type = visualType
this.mappingMethod = mappingMethod
this._normalizeData = normalizers[mappingMethod]
var visualHandler = VisualMapping2.visualHandlers[visualType]
this.applyVisual = visualHandler.applyVisual
this.getColorMapper = visualHandler.getColorMapper
this._normalizedToVisual = visualHandler._normalizedToVisual[mappingMethod]
if (mappingMethod === 'piecewise') {
normalizeVisualRange(thisOption)
preprocessForPiecewise(thisOption)
} else if (mappingMethod === 'category') {
thisOption.categories
? preprocessForSpecifiedCategory(thisOption)
: normalizeVisualRange(thisOption, true)
} else {
assert(mappingMethod !== 'linear' || thisOption.dataExtent)
normalizeVisualRange(thisOption)
}
}
VisualMapping2.prototype.mapValueToVisual = function (value2) {
var normalized = this._normalizeData(value2)
return this._normalizedToVisual(normalized, value2)
}
VisualMapping2.prototype.getNormalizer = function () {
return bind$1(this._normalizeData, this)
}
VisualMapping2.listVisualTypes = function () {
return keys$4(VisualMapping2.visualHandlers)
}
VisualMapping2.isValidType = function (visualType) {
return VisualMapping2.visualHandlers.hasOwnProperty(visualType)
}
VisualMapping2.eachVisual = function (visual, callback, context2) {
if (isObject$b(visual)) {
each$f(visual, callback, context2)
} else {
callback.call(context2, visual)
}
}
VisualMapping2.mapVisual = function (visual, callback, context2) {
var isPrimary
var newVisual = isArray$6(visual)
? []
: isObject$b(visual)
? {}
: ((isPrimary = true), null)
VisualMapping2.eachVisual(visual, function (v4, key2) {
var newVal = callback.call(context2, v4, key2)
isPrimary ? (newVisual = newVal) : (newVisual[key2] = newVal)
})
return newVisual
}
VisualMapping2.retrieveVisuals = function (obj) {
var ret = {}
var hasVisual
obj &&
each$c(VisualMapping2.visualHandlers, function (h2, visualType) {
if (obj.hasOwnProperty(visualType)) {
ret[visualType] = obj[visualType]
hasVisual = true
}
})
return hasVisual ? ret : null
}
VisualMapping2.prepareVisualTypes = function (visualTypes) {
if (isArray$6(visualTypes)) {
visualTypes = visualTypes.slice()
} else if (isObject$8(visualTypes)) {
var types_1 = []
each$c(visualTypes, function (item2, type4) {
types_1.push(type4)
})
visualTypes = types_1
} else {
return []
}
visualTypes.sort(function (type1, type22) {
return type22 === 'color' &&
type1 !== 'color' &&
type1.indexOf('color') === 0
? 1
: -1
})
return visualTypes
}
VisualMapping2.dependsOn = function (visualType1, visualType2) {
return visualType2 === 'color'
? !!(visualType1 && visualType1.indexOf(visualType2) === 0)
: visualType1 === visualType2
}
VisualMapping2.findPieceIndex = function (
value2,
pieceList,
findClosestWhenOutside
) {
var possibleI
var abs2 = Infinity
for (var i2 = 0, len2 = pieceList.length; i2 < len2; i2++) {
var pieceValue = pieceList[i2].value
if (pieceValue != null) {
if (
pieceValue === value2 ||
(isString$2(pieceValue) && pieceValue === value2 + '')
) {
return i2
}
findClosestWhenOutside && updatePossible(pieceValue, i2)
}
}
for (var i2 = 0, len2 = pieceList.length; i2 < len2; i2++) {
var piece = pieceList[i2]
var interval = piece.interval
var close_1 = piece.close
if (interval) {
if (interval[0] === -Infinity) {
if (littleThan(close_1[1], value2, interval[1])) {
return i2
}
} else if (interval[1] === Infinity) {
if (littleThan(close_1[0], interval[0], value2)) {
return i2
}
} else if (
littleThan(close_1[0], interval[0], value2) &&
littleThan(close_1[1], value2, interval[1])
) {
return i2
}
findClosestWhenOutside && updatePossible(interval[0], i2)
findClosestWhenOutside && updatePossible(interval[1], i2)
}
}
if (findClosestWhenOutside) {
return value2 === Infinity
? pieceList.length - 1
: value2 === -Infinity
? 0
: possibleI
}
function updatePossible(val2, index2) {
var newAbs = Math.abs(val2 - value2)
if (newAbs < abs2) {
abs2 = newAbs
possibleI = index2
}
}
}
VisualMapping2.visualHandlers = {
color: {
applyVisual: makeApplyVisual('color'),
getColorMapper: function () {
var thisOption = this.option
return bind$1(
thisOption.mappingMethod === 'category'
? function (value2, isNormalized) {
!isNormalized && (value2 = this._normalizeData(value2))
return doMapCategory.call(this, value2)
}
: function (value2, isNormalized, out2) {
var returnRGBArray = !!out2
!isNormalized && (value2 = this._normalizeData(value2))
out2 = fastLerp(value2, thisOption.parsedVisual, out2)
return returnRGBArray ? out2 : stringify(out2, 'rgba')
},
this
)
},
_normalizedToVisual: {
linear: function (normalized) {
return stringify(
fastLerp(normalized, this.option.parsedVisual),
'rgba'
)
},
category: doMapCategory,
piecewise: function (normalized, value2) {
var result = getSpecifiedVisual.call(this, value2)
if (result == null) {
result = stringify(
fastLerp(normalized, this.option.parsedVisual),
'rgba'
)
}
return result
},
fixed: doMapFixed,
},
},
colorHue: makePartialColorVisualHandler(function (color2, value2) {
return modifyHSL(color2, value2)
}),
colorSaturation: makePartialColorVisualHandler(function (color2, value2) {
return modifyHSL(color2, null, value2)
}),
colorLightness: makePartialColorVisualHandler(function (color2, value2) {
return modifyHSL(color2, null, null, value2)
}),
colorAlpha: makePartialColorVisualHandler(function (color2, value2) {
return modifyAlpha(color2, value2)
}),
decal: {
applyVisual: makeApplyVisual('decal'),
_normalizedToVisual: {
linear: null,
category: doMapCategory,
piecewise: null,
fixed: null,
},
},
opacity: {
applyVisual: makeApplyVisual('opacity'),
_normalizedToVisual: createNormalizedToNumericVisual([0, 1]),
},
liftZ: {
applyVisual: makeApplyVisual('liftZ'),
_normalizedToVisual: {
linear: doMapFixed,
category: doMapFixed,
piecewise: doMapFixed,
fixed: doMapFixed,
},
},
symbol: {
applyVisual: function (value2, getter, setter) {
var symbolCfg = this.mapValueToVisual(value2)
setter('symbol', symbolCfg)
},
_normalizedToVisual: {
linear: doMapToArray,
category: doMapCategory,
piecewise: function (normalized, value2) {
var result = getSpecifiedVisual.call(this, value2)
if (result == null) {
result = doMapToArray.call(this, normalized)
}
return result
},
fixed: doMapFixed,
},
},
symbolSize: {
applyVisual: makeApplyVisual('symbolSize'),
_normalizedToVisual: createNormalizedToNumericVisual([0, 1]),
},
}
return VisualMapping2
})()
function preprocessForPiecewise(thisOption) {
var pieceList = thisOption.pieceList
thisOption.hasSpecialVisual = false
each$f(pieceList, function (piece, index2) {
piece.originIndex = index2
if (piece.visual != null) {
thisOption.hasSpecialVisual = true
}
})
}
function preprocessForSpecifiedCategory(thisOption) {
var categories = thisOption.categories
var categoryMap = (thisOption.categoryMap = {})
var visual = thisOption.visual
each$c(categories, function (cate, index2) {
categoryMap[cate] = index2
})
if (!isArray$6(visual)) {
var visualArr_1 = []
if (isObject$b(visual)) {
each$c(visual, function (v4, cate) {
var index2 = categoryMap[cate]
visualArr_1[index2 != null ? index2 : CATEGORY_DEFAULT_VISUAL_INDEX] =
v4
})
} else {
visualArr_1[CATEGORY_DEFAULT_VISUAL_INDEX] = visual
}
visual = setVisualToOption(thisOption, visualArr_1)
}
for (var i2 = categories.length - 1; i2 >= 0; i2--) {
if (visual[i2] == null) {
delete categoryMap[categories[i2]]
categories.pop()
}
}
}
function normalizeVisualRange(thisOption, isCategory2) {
var visual = thisOption.visual
var visualArr = []
if (isObject$b(visual)) {
each$c(visual, function (v4) {
visualArr.push(v4)
})
} else if (visual != null) {
visualArr.push(visual)
}
var doNotNeedPair = {
color: 1,
symbol: 1,
}
if (
!isCategory2 &&
visualArr.length === 1 &&
!doNotNeedPair.hasOwnProperty(thisOption.type)
) {
visualArr[1] = visualArr[0]
}
setVisualToOption(thisOption, visualArr)
}
function makePartialColorVisualHandler(applyValue) {
return {
applyVisual: function (value2, getter, setter) {
var colorChannel = this.mapValueToVisual(value2)
setter('color', applyValue(getter('color'), colorChannel))
},
_normalizedToVisual: createNormalizedToNumericVisual([0, 1]),
}
}
function doMapToArray(normalized) {
var visual = this.option.visual
return (
visual[
Math.round(linearMap$2(normalized, [0, 1], [0, visual.length - 1], true))
] || {}
)
}
function makeApplyVisual(visualType) {
return function (value2, getter, setter) {
setter(visualType, this.mapValueToVisual(value2))
}
}
function doMapCategory(normalized) {
var visual = this.option.visual
return visual[
this.option.loop && normalized !== CATEGORY_DEFAULT_VISUAL_INDEX
? normalized % visual.length
: normalized
]
}
function doMapFixed() {
return this.option.visual[0]
}
function createNormalizedToNumericVisual(sourceExtent) {
return {
linear: function (normalized) {
return linearMap$2(normalized, sourceExtent, this.option.visual, true)
},
category: doMapCategory,
piecewise: function (normalized, value2) {
var result = getSpecifiedVisual.call(this, value2)
if (result == null) {
result = linearMap$2(normalized, sourceExtent, this.option.visual, true)
}
return result
},
fixed: doMapFixed,
}
}
function getSpecifiedVisual(value2) {
var thisOption = this.option
var pieceList = thisOption.pieceList
if (thisOption.hasSpecialVisual) {
var pieceIndex = VisualMapping.findPieceIndex(value2, pieceList)
var piece = pieceList[pieceIndex]
if (piece && piece.visual) {
return piece.visual[this.type]
}
}
}
function setVisualToOption(thisOption, visualArr) {
thisOption.visual = visualArr
if (thisOption.type === 'color') {
thisOption.parsedVisual = map$1(visualArr, function (item2) {
var color2 = parse$1(item2)
if (!color2 && false) {
warn$1(
"'" + item2 + "' is an illegal color, fallback to '#000000'",
true
)
}
return color2 || [0, 0, 0, 1]
})
}
return visualArr
}
var normalizers = {
linear: function (value2) {
return linearMap$2(value2, this.option.dataExtent, [0, 1], true)
},
piecewise: function (value2) {
var pieceList = this.option.pieceList
var pieceIndex = VisualMapping.findPieceIndex(value2, pieceList, true)
if (pieceIndex != null) {
return linearMap$2(pieceIndex, [0, pieceList.length - 1], [0, 1], true)
}
},
category: function (value2) {
var index2 = this.option.categories
? this.option.categoryMap[value2]
: value2
return index2 == null ? CATEGORY_DEFAULT_VISUAL_INDEX : index2
},
fixed: noop,
}
function littleThan(close2, a2, b2) {
return close2 ? a2 <= b2 : a2 < b2
}
var VisualMapping$1 = VisualMapping
var ITEM_STYLE_NORMAL = 'itemStyle'
var inner$c = makeInner()
var treemapVisual = {
seriesType: 'treemap',
reset: function (seriesModel) {
var tree = seriesModel.getData().tree
var root2 = tree.root
if (root2.isRemoved()) {
return
}
travelTree(root2, {}, seriesModel.getViewRoot().getAncestors(), seriesModel)
},
}
function travelTree(node2, designatedVisual, viewRootAncestors, seriesModel) {
var nodeModel = node2.getModel()
var nodeLayout = node2.getLayout()
var data2 = node2.hostTree.data
if (!nodeLayout || nodeLayout.invisible || !nodeLayout.isInView) {
return
}
var nodeItemStyleModel = nodeModel.getModel(ITEM_STYLE_NORMAL)
var visuals = buildVisuals(nodeItemStyleModel, designatedVisual, seriesModel)
var existsStyle = data2.ensureUniqueItemVisual(node2.dataIndex, 'style')
var borderColor = nodeItemStyleModel.get('borderColor')
var borderColorSaturation = nodeItemStyleModel.get('borderColorSaturation')
var thisNodeColor
if (borderColorSaturation != null) {
thisNodeColor = calculateColor(visuals)
borderColor = calculateBorderColor(borderColorSaturation, thisNodeColor)
}
existsStyle.stroke = borderColor
var viewChildren = node2.viewChildren
if (!viewChildren || !viewChildren.length) {
thisNodeColor = calculateColor(visuals)
existsStyle.fill = thisNodeColor
} else {
var mapping_1 = buildVisualMapping(
node2,
nodeModel,
nodeLayout,
nodeItemStyleModel,
visuals,
viewChildren
)
each$f(viewChildren, function (child, index2) {
if (
child.depth >= viewRootAncestors.length ||
child === viewRootAncestors[child.depth]
) {
var childVisual = mapVisual$1(
nodeModel,
visuals,
child,
index2,
mapping_1,
seriesModel
)
travelTree(child, childVisual, viewRootAncestors, seriesModel)
}
})
}
}
function buildVisuals(nodeItemStyleModel, designatedVisual, seriesModel) {
var visuals = extend({}, designatedVisual)
var designatedVisualItemStyle = seriesModel.designatedVisualItemStyle
each$f(['color', 'colorAlpha', 'colorSaturation'], function (visualName) {
designatedVisualItemStyle[visualName] = designatedVisual[visualName]
var val2 = nodeItemStyleModel.get(visualName)
designatedVisualItemStyle[visualName] = null
val2 != null && (visuals[visualName] = val2)
})
return visuals
}
function calculateColor(visuals) {
var color2 = getValueVisualDefine(visuals, 'color')
if (color2) {
var colorAlpha = getValueVisualDefine(visuals, 'colorAlpha')
var colorSaturation = getValueVisualDefine(visuals, 'colorSaturation')
if (colorSaturation) {
color2 = modifyHSL(color2, null, null, colorSaturation)
}
if (colorAlpha) {
color2 = modifyAlpha(color2, colorAlpha)
}
return color2
}
}
function calculateBorderColor(borderColorSaturation, thisNodeColor) {
return thisNodeColor != null
? modifyHSL(thisNodeColor, null, null, borderColorSaturation)
: null
}
function getValueVisualDefine(visuals, name2) {
var value2 = visuals[name2]
if (value2 != null && value2 !== 'none') {
return value2
}
}
function buildVisualMapping(
node2,
nodeModel,
nodeLayout,
nodeItemStyleModel,
visuals,
viewChildren
) {
if (!viewChildren || !viewChildren.length) {
return
}
var rangeVisual =
getRangeVisual(nodeModel, 'color') ||
(visuals.color != null &&
visuals.color !== 'none' &&
(getRangeVisual(nodeModel, 'colorAlpha') ||
getRangeVisual(nodeModel, 'colorSaturation')))
if (!rangeVisual) {
return
}
var visualMin = nodeModel.get('visualMin')
var visualMax = nodeModel.get('visualMax')
var dataExtent = nodeLayout.dataExtent.slice()
visualMin != null && visualMin < dataExtent[0] && (dataExtent[0] = visualMin)
visualMax != null && visualMax > dataExtent[1] && (dataExtent[1] = visualMax)
var colorMappingBy = nodeModel.get('colorMappingBy')
var opt = {
type: rangeVisual.name,
dataExtent,
visual: rangeVisual.range,
}
if (
opt.type === 'color' &&
(colorMappingBy === 'index' || colorMappingBy === 'id')
) {
opt.mappingMethod = 'category'
opt.loop = true
} else {
opt.mappingMethod = 'linear'
}
var mapping = new VisualMapping$1(opt)
inner$c(mapping).drColorMappingBy = colorMappingBy
return mapping
}
function getRangeVisual(nodeModel, name2) {
var range3 = nodeModel.get(name2)
return isArray$6(range3) && range3.length
? {
name: name2,
range: range3,
}
: null
}
function mapVisual$1(nodeModel, visuals, child, index2, mapping, seriesModel) {
var childVisuals = extend({}, visuals)
if (mapping) {
var mappingType = mapping.type
var colorMappingBy =
mappingType === 'color' && inner$c(mapping).drColorMappingBy
var value2 =
colorMappingBy === 'index'
? index2
: colorMappingBy === 'id'
? seriesModel.mapIdToIndex(child.getId())
: child.getValue(nodeModel.get('visualDimension'))
childVisuals[mappingType] = mapping.mapValueToVisual(value2)
}
return childVisuals
}
var mathMax$3 = Math.max
var mathMin$3 = Math.min
var retrieveValue = retrieve
var each$b = each$f
var PATH_BORDER_WIDTH = ['itemStyle', 'borderWidth']
var PATH_GAP_WIDTH = ['itemStyle', 'gapWidth']
var PATH_UPPER_LABEL_SHOW = ['upperLabel', 'show']
var PATH_UPPER_LABEL_HEIGHT = ['upperLabel', 'height']
var treemapLayout = {
seriesType: 'treemap',
reset: function (seriesModel, ecModel, api, payload) {
var ecWidth = api.getWidth()
var ecHeight = api.getHeight()
var seriesOption = seriesModel.option
var layoutInfo = getLayoutRect(seriesModel.getBoxLayoutParams(), {
width: api.getWidth(),
height: api.getHeight(),
})
var size = seriesOption.size || []
var containerWidth = parsePercent(
retrieveValue(layoutInfo.width, size[0]),
ecWidth
)
var containerHeight = parsePercent(
retrieveValue(layoutInfo.height, size[1]),
ecHeight
)
var payloadType = payload && payload.type
var types2 = ['treemapZoomToNode', 'treemapRootToNode']
var targetInfo = retrieveTargetInfo(payload, types2, seriesModel)
var rootRect =
payloadType === 'treemapRender' || payloadType === 'treemapMove'
? payload.rootRect
: null
var viewRoot = seriesModel.getViewRoot()
var viewAbovePath = getPathToRoot(viewRoot)
if (payloadType !== 'treemapMove') {
var rootSize =
payloadType === 'treemapZoomToNode'
? estimateRootSize(
seriesModel,
targetInfo,
viewRoot,
containerWidth,
containerHeight
)
: rootRect
? [rootRect.width, rootRect.height]
: [containerWidth, containerHeight]
var sort_1 = seriesOption.sort
if (sort_1 && sort_1 !== 'asc' && sort_1 !== 'desc') {
sort_1 = 'desc'
}
var options2 = {
squareRatio: seriesOption.squareRatio,
sort: sort_1,
leafDepth: seriesOption.leafDepth,
}
viewRoot.hostTree.clearLayouts()
var viewRootLayout_1 = {
x: 0,
y: 0,
width: rootSize[0],
height: rootSize[1],
area: rootSize[0] * rootSize[1],
}
viewRoot.setLayout(viewRootLayout_1)
squarify(viewRoot, options2, false, 0)
viewRootLayout_1 = viewRoot.getLayout()
each$b(viewAbovePath, function (node2, index2) {
var childValue = (viewAbovePath[index2 + 1] || viewRoot).getValue()
node2.setLayout(
extend(
{
dataExtent: [childValue, childValue],
borderWidth: 0,
upperHeight: 0,
},
viewRootLayout_1
)
)
})
}
var treeRoot = seriesModel.getData().tree.root
treeRoot.setLayout(
calculateRootPosition(layoutInfo, rootRect, targetInfo),
true
)
seriesModel.setLayoutInfo(layoutInfo)
prunning(
treeRoot,
new BoundingRect$1(-layoutInfo.x, -layoutInfo.y, ecWidth, ecHeight),
viewAbovePath,
viewRoot,
0
)
},
}
function squarify(node2, options2, hideChildren, depth) {
var width
var height
if (node2.isRemoved()) {
return
}
var thisLayout = node2.getLayout()
width = thisLayout.width
height = thisLayout.height
var nodeModel = node2.getModel()
var borderWidth = nodeModel.get(PATH_BORDER_WIDTH)
var halfGapWidth = nodeModel.get(PATH_GAP_WIDTH) / 2
var upperLabelHeight = getUpperLabelHeight(nodeModel)
var upperHeight = Math.max(borderWidth, upperLabelHeight)
var layoutOffset = borderWidth - halfGapWidth
var layoutOffsetUpper = upperHeight - halfGapWidth
node2.setLayout(
{
borderWidth,
upperHeight,
upperLabelHeight,
},
true
)
width = mathMax$3(width - 2 * layoutOffset, 0)
height = mathMax$3(height - layoutOffset - layoutOffsetUpper, 0)
var totalArea = width * height
var viewChildren = initChildren$1(
node2,
nodeModel,
totalArea,
options2,
hideChildren,
depth
)
if (!viewChildren.length) {
return
}
var rect = {
x: layoutOffset,
y: layoutOffsetUpper,
width,
height,
}
var rowFixedLength = mathMin$3(width, height)
var best = Infinity
var row = []
row.area = 0
for (var i2 = 0, len2 = viewChildren.length; i2 < len2; ) {
var child = viewChildren[i2]
row.push(child)
row.area += child.getLayout().area
var score = worst(row, rowFixedLength, options2.squareRatio)
if (score <= best) {
i2++
best = score
} else {
row.area -= row.pop().getLayout().area
position(row, rowFixedLength, rect, halfGapWidth, false)
rowFixedLength = mathMin$3(rect.width, rect.height)
row.length = row.area = 0
best = Infinity
}
}
if (row.length) {
position(row, rowFixedLength, rect, halfGapWidth, true)
}
if (!hideChildren) {
var childrenVisibleMin = nodeModel.get('childrenVisibleMin')
if (childrenVisibleMin != null && totalArea < childrenVisibleMin) {
hideChildren = true
}
}
for (var i2 = 0, len2 = viewChildren.length; i2 < len2; i2++) {
squarify(viewChildren[i2], options2, hideChildren, depth + 1)
}
}
function initChildren$1(
node2,
nodeModel,
totalArea,
options2,
hideChildren,
depth
) {
var viewChildren = node2.children || []
var orderBy2 = options2.sort
orderBy2 !== 'asc' && orderBy2 !== 'desc' && (orderBy2 = null)
var overLeafDepth = options2.leafDepth != null && options2.leafDepth <= depth
if (hideChildren && !overLeafDepth) {
return (node2.viewChildren = [])
}
viewChildren = filter(viewChildren, function (child) {
return !child.isRemoved()
})
sort$1(viewChildren, orderBy2)
var info = statistic(nodeModel, viewChildren, orderBy2)
if (info.sum === 0) {
return (node2.viewChildren = [])
}
info.sum = filterByThreshold(
nodeModel,
totalArea,
info.sum,
orderBy2,
viewChildren
)
if (info.sum === 0) {
return (node2.viewChildren = [])
}
for (var i2 = 0, len2 = viewChildren.length; i2 < len2; i2++) {
var area = (viewChildren[i2].getValue() / info.sum) * totalArea
viewChildren[i2].setLayout({
area,
})
}
if (overLeafDepth) {
viewChildren.length &&
node2.setLayout(
{
isLeafRoot: true,
},
true
)
viewChildren.length = 0
}
node2.viewChildren = viewChildren
node2.setLayout(
{
dataExtent: info.dataExtent,
},
true
)
return viewChildren
}
function filterByThreshold(
nodeModel,
totalArea,
sum2,
orderBy2,
orderedChildren
) {
if (!orderBy2) {
return sum2
}
var visibleMin = nodeModel.get('visibleMin')
var len2 = orderedChildren.length
var deletePoint = len2
for (var i2 = len2 - 1; i2 >= 0; i2--) {
var value2 =
orderedChildren[orderBy2 === 'asc' ? len2 - i2 - 1 : i2].getValue()
if ((value2 / sum2) * totalArea < visibleMin) {
deletePoint = i2
sum2 -= value2
}
}
orderBy2 === 'asc'
? orderedChildren.splice(0, len2 - deletePoint)
: orderedChildren.splice(deletePoint, len2 - deletePoint)
return sum2
}
function sort$1(viewChildren, orderBy2) {
if (orderBy2) {
viewChildren.sort(function (a2, b2) {
var diff =
orderBy2 === 'asc'
? a2.getValue() - b2.getValue()
: b2.getValue() - a2.getValue()
return diff === 0
? orderBy2 === 'asc'
? a2.dataIndex - b2.dataIndex
: b2.dataIndex - a2.dataIndex
: diff
})
}
return viewChildren
}
function statistic(nodeModel, children, orderBy2) {
var sum2 = 0
for (var i2 = 0, len2 = children.length; i2 < len2; i2++) {
sum2 += children[i2].getValue()
}
var dimension = nodeModel.get('visualDimension')
var dataExtent
if (!children || !children.length) {
dataExtent = [NaN, NaN]
} else if (dimension === 'value' && orderBy2) {
dataExtent = [
children[children.length - 1].getValue(),
children[0].getValue(),
]
orderBy2 === 'asc' && dataExtent.reverse()
} else {
dataExtent = [Infinity, -Infinity]
each$b(children, function (child) {
var value2 = child.getValue(dimension)
value2 < dataExtent[0] && (dataExtent[0] = value2)
value2 > dataExtent[1] && (dataExtent[1] = value2)
})
}
return {
sum: sum2,
dataExtent,
}
}
function worst(row, rowFixedLength, ratio) {
var areaMax = 0
var areaMin = Infinity
for (var i2 = 0, area = void 0, len2 = row.length; i2 < len2; i2++) {
area = row[i2].getLayout().area
if (area) {
area < areaMin && (areaMin = area)
area > areaMax && (areaMax = area)
}
}
var squareArea = row.area * row.area
var f2 = rowFixedLength * rowFixedLength * ratio
return squareArea
? mathMax$3((f2 * areaMax) / squareArea, squareArea / (f2 * areaMin))
: Infinity
}
function position(row, rowFixedLength, rect, halfGapWidth, flush2) {
var idx0WhenH = rowFixedLength === rect.width ? 0 : 1
var idx1WhenH = 1 - idx0WhenH
var xy = ['x', 'y']
var wh = ['width', 'height']
var last2 = rect[xy[idx0WhenH]]
var rowOtherLength = rowFixedLength ? row.area / rowFixedLength : 0
if (flush2 || rowOtherLength > rect[wh[idx1WhenH]]) {
rowOtherLength = rect[wh[idx1WhenH]]
}
for (var i2 = 0, rowLen = row.length; i2 < rowLen; i2++) {
var node2 = row[i2]
var nodeLayout = {}
var step = rowOtherLength ? node2.getLayout().area / rowOtherLength : 0
var wh1 = (nodeLayout[wh[idx1WhenH]] = mathMax$3(
rowOtherLength - 2 * halfGapWidth,
0
))
var remain = rect[xy[idx0WhenH]] + rect[wh[idx0WhenH]] - last2
var modWH = i2 === rowLen - 1 || remain < step ? remain : step
var wh0 = (nodeLayout[wh[idx0WhenH]] = mathMax$3(
modWH - 2 * halfGapWidth,
0
))
nodeLayout[xy[idx1WhenH]] =
rect[xy[idx1WhenH]] + mathMin$3(halfGapWidth, wh1 / 2)
nodeLayout[xy[idx0WhenH]] = last2 + mathMin$3(halfGapWidth, wh0 / 2)
last2 += modWH
node2.setLayout(nodeLayout, true)
}
rect[xy[idx1WhenH]] += rowOtherLength
rect[wh[idx1WhenH]] -= rowOtherLength
}
function estimateRootSize(
seriesModel,
targetInfo,
viewRoot,
containerWidth,
containerHeight
) {
var currNode = (targetInfo || {}).node
var defaultSize = [containerWidth, containerHeight]
if (!currNode || currNode === viewRoot) {
return defaultSize
}
var parent2
var viewArea = containerWidth * containerHeight
var area = viewArea * seriesModel.option.zoomToNodeRatio
while ((parent2 = currNode.parentNode)) {
var sum2 = 0
var siblings = parent2.children
for (var i2 = 0, len2 = siblings.length; i2 < len2; i2++) {
sum2 += siblings[i2].getValue()
}
var currNodeValue = currNode.getValue()
if (currNodeValue === 0) {
return defaultSize
}
area *= sum2 / currNodeValue
var parentModel = parent2.getModel()
var borderWidth = parentModel.get(PATH_BORDER_WIDTH)
var upperHeight = Math.max(borderWidth, getUpperLabelHeight(parentModel))
area +=
4 * borderWidth * borderWidth +
(3 * borderWidth + upperHeight) * Math.pow(area, 0.5)
area > MAX_SAFE_INTEGER$2 && (area = MAX_SAFE_INTEGER$2)
currNode = parent2
}
area < viewArea && (area = viewArea)
var scale2 = Math.pow(area / viewArea, 0.5)
return [containerWidth * scale2, containerHeight * scale2]
}
function calculateRootPosition(layoutInfo, rootRect, targetInfo) {
if (rootRect) {
return {
x: rootRect.x,
y: rootRect.y,
}
}
var defaultPosition = {
x: 0,
y: 0,
}
if (!targetInfo) {
return defaultPosition
}
var targetNode = targetInfo.node
var layout2 = targetNode.getLayout()
if (!layout2) {
return defaultPosition
}
var targetCenter = [layout2.width / 2, layout2.height / 2]
var node2 = targetNode
while (node2) {
var nodeLayout = node2.getLayout()
targetCenter[0] += nodeLayout.x
targetCenter[1] += nodeLayout.y
node2 = node2.parentNode
}
return {
x: layoutInfo.width / 2 - targetCenter[0],
y: layoutInfo.height / 2 - targetCenter[1],
}
}
function prunning(node2, clipRect, viewAbovePath, viewRoot, depth) {
var nodeLayout = node2.getLayout()
var nodeInViewAbovePath = viewAbovePath[depth]
var isAboveViewRoot = nodeInViewAbovePath && nodeInViewAbovePath === node2
if (
(nodeInViewAbovePath && !isAboveViewRoot) ||
(depth === viewAbovePath.length && node2 !== viewRoot)
) {
return
}
node2.setLayout(
{
isInView: true,
invisible: !isAboveViewRoot && !clipRect.intersect(nodeLayout),
isAboveViewRoot,
},
true
)
var childClipRect = new BoundingRect$1(
clipRect.x - nodeLayout.x,
clipRect.y - nodeLayout.y,
clipRect.width,
clipRect.height
)
each$b(node2.viewChildren || [], function (child) {
prunning(child, childClipRect, viewAbovePath, viewRoot, depth + 1)
})
}
function getUpperLabelHeight(model) {
return model.get(PATH_UPPER_LABEL_SHOW)
? model.get(PATH_UPPER_LABEL_HEIGHT)
: 0
}
function install$I(registers) {
registers.registerSeriesModel(TreemapSeriesModel$1)
registers.registerChartView(TreemapView$1)
registers.registerVisual(treemapVisual)
registers.registerLayout(treemapLayout)
installTreemapAction(registers)
}
function categoryFilter(ecModel) {
var legendModels = ecModel.findComponents({
mainType: 'legend',
})
if (!legendModels || !legendModels.length) {
return
}
ecModel.eachSeriesByType('graph', function (graphSeries) {
var categoriesData = graphSeries.getCategoriesData()
var graph = graphSeries.getGraph()
var data2 = graph.data
var categoryNames = categoriesData.mapArray(categoriesData.getName)
data2.filterSelf(function (idx) {
var model = data2.getItemModel(idx)
var category = model.getShallow('category')
if (category != null) {
if (isNumber$2(category)) {
category = categoryNames[category]
}
for (var i2 = 0; i2 < legendModels.length; i2++) {
if (!legendModels[i2].isSelected(category)) {
return false
}
}
}
return true
})
})
}
function categoryVisual(ecModel) {
var paletteScope = {}
ecModel.eachSeriesByType('graph', function (seriesModel) {
var categoriesData = seriesModel.getCategoriesData()
var data2 = seriesModel.getData()
var categoryNameIdxMap = {}
categoriesData.each(function (idx) {
var name2 = categoriesData.getName(idx)
categoryNameIdxMap['ec-' + name2] = idx
var itemModel = categoriesData.getItemModel(idx)
var style2 = itemModel.getModel('itemStyle').getItemStyle()
if (!style2.fill) {
style2.fill = seriesModel.getColorFromPalette(name2, paletteScope)
}
categoriesData.setItemVisual(idx, 'style', style2)
var symbolVisualList = ['symbol', 'symbolSize', 'symbolKeepAspect']
for (var i2 = 0; i2 < symbolVisualList.length; i2++) {
var symbolVisual = itemModel.getShallow(symbolVisualList[i2], true)
if (symbolVisual != null) {
categoriesData.setItemVisual(idx, symbolVisualList[i2], symbolVisual)
}
}
})
if (categoriesData.count()) {
data2.each(function (idx) {
var model = data2.getItemModel(idx)
var categoryIdx = model.getShallow('category')
if (categoryIdx != null) {
if (isString$2(categoryIdx)) {
categoryIdx = categoryNameIdxMap['ec-' + categoryIdx]
}
var categoryStyle = categoriesData.getItemVisual(categoryIdx, 'style')
var style2 = data2.ensureUniqueItemVisual(idx, 'style')
extend(style2, categoryStyle)
var visualList = ['symbol', 'symbolSize', 'symbolKeepAspect']
for (var i2 = 0; i2 < visualList.length; i2++) {
data2.setItemVisual(
idx,
visualList[i2],
categoriesData.getItemVisual(categoryIdx, visualList[i2])
)
}
}
})
}
})
}
function normalize$1(a2) {
if (!(a2 instanceof Array)) {
a2 = [a2, a2]
}
return a2
}
function graphEdgeVisual(ecModel) {
ecModel.eachSeriesByType('graph', function (seriesModel) {
var graph = seriesModel.getGraph()
var edgeData = seriesModel.getEdgeData()
var symbolType = normalize$1(seriesModel.get('edgeSymbol'))
var symbolSize = normalize$1(seriesModel.get('edgeSymbolSize'))
edgeData.setVisual('fromSymbol', symbolType && symbolType[0])
edgeData.setVisual('toSymbol', symbolType && symbolType[1])
edgeData.setVisual('fromSymbolSize', symbolSize && symbolSize[0])
edgeData.setVisual('toSymbolSize', symbolSize && symbolSize[1])
edgeData.setVisual(
'style',
seriesModel.getModel('lineStyle').getLineStyle()
)
edgeData.each(function (idx) {
var itemModel = edgeData.getItemModel(idx)
var edge = graph.getEdgeByIndex(idx)
var symbolType2 = normalize$1(itemModel.getShallow('symbol', true))
var symbolSize2 = normalize$1(itemModel.getShallow('symbolSize', true))
var style2 = itemModel.getModel('lineStyle').getLineStyle()
var existsStyle = edgeData.ensureUniqueItemVisual(idx, 'style')
extend(existsStyle, style2)
switch (existsStyle.stroke) {
case 'source': {
var nodeStyle = edge.node1.getVisual('style')
existsStyle.stroke = nodeStyle && nodeStyle.fill
break
}
case 'target': {
var nodeStyle = edge.node2.getVisual('style')
existsStyle.stroke = nodeStyle && nodeStyle.fill
break
}
}
symbolType2[0] && edge.setVisual('fromSymbol', symbolType2[0])
symbolType2[1] && edge.setVisual('toSymbol', symbolType2[1])
symbolSize2[0] && edge.setVisual('fromSymbolSize', symbolSize2[0])
symbolSize2[1] && edge.setVisual('toSymbolSize', symbolSize2[1])
})
})
}
var KEY_DELIMITER = '-->'
var getAutoCurvenessParams = function (seriesModel) {
return seriesModel.get('autoCurveness') || null
}
var createCurveness = function (seriesModel, appendLength) {
var autoCurvenessParmas = getAutoCurvenessParams(seriesModel)
var length2 = 20
var curvenessList = []
if (isNumber$2(autoCurvenessParmas)) {
length2 = autoCurvenessParmas
} else if (isArray$6(autoCurvenessParmas)) {
seriesModel.__curvenessList = autoCurvenessParmas
return
}
if (appendLength > length2) {
length2 = appendLength
}
var len2 = length2 % 2 ? length2 + 2 : length2 + 3
curvenessList = []
for (var i2 = 0; i2 < len2; i2++) {
curvenessList.push(((i2 % 2 ? i2 + 1 : i2) / 10) * (i2 % 2 ? -1 : 1))
}
seriesModel.__curvenessList = curvenessList
}
var getKeyOfEdges = function (n1, n2, seriesModel) {
var source2 = [n1.id, n1.dataIndex].join('.')
var target2 = [n2.id, n2.dataIndex].join('.')
return [seriesModel.uid, source2, target2].join(KEY_DELIMITER)
}
var getOppositeKey = function (key2) {
var keys3 = key2.split(KEY_DELIMITER)
return [keys3[0], keys3[2], keys3[1]].join(KEY_DELIMITER)
}
var getEdgeFromMap = function (edge, seriesModel) {
var key2 = getKeyOfEdges(edge.node1, edge.node2, seriesModel)
return seriesModel.__edgeMap[key2]
}
var getTotalLengthBetweenNodes = function (edge, seriesModel) {
var len2 = getEdgeMapLengthWithKey(
getKeyOfEdges(edge.node1, edge.node2, seriesModel),
seriesModel
)
var lenV = getEdgeMapLengthWithKey(
getKeyOfEdges(edge.node2, edge.node1, seriesModel),
seriesModel
)
return len2 + lenV
}
var getEdgeMapLengthWithKey = function (key2, seriesModel) {
var edgeMap = seriesModel.__edgeMap
return edgeMap[key2] ? edgeMap[key2].length : 0
}
function initCurvenessList(seriesModel) {
if (!getAutoCurvenessParams(seriesModel)) {
return
}
seriesModel.__curvenessList = []
seriesModel.__edgeMap = {}
createCurveness(seriesModel)
}
function createEdgeMapForCurveness(n1, n2, seriesModel, index2) {
if (!getAutoCurvenessParams(seriesModel)) {
return
}
var key2 = getKeyOfEdges(n1, n2, seriesModel)
var edgeMap = seriesModel.__edgeMap
var oppositeEdges = edgeMap[getOppositeKey(key2)]
if (edgeMap[key2] && !oppositeEdges) {
edgeMap[key2].isForward = true
} else if (oppositeEdges && edgeMap[key2]) {
oppositeEdges.isForward = true
edgeMap[key2].isForward = false
}
edgeMap[key2] = edgeMap[key2] || []
edgeMap[key2].push(index2)
}
function getCurvenessForEdge(edge, seriesModel, index2, needReverse) {
var autoCurvenessParams = getAutoCurvenessParams(seriesModel)
var isArrayParam = isArray$6(autoCurvenessParams)
if (!autoCurvenessParams) {
return null
}
var edgeArray = getEdgeFromMap(edge, seriesModel)
if (!edgeArray) {
return null
}
var edgeIndex = -1
for (var i2 = 0; i2 < edgeArray.length; i2++) {
if (edgeArray[i2] === index2) {
edgeIndex = i2
break
}
}
var totalLen = getTotalLengthBetweenNodes(edge, seriesModel)
createCurveness(seriesModel, totalLen)
edge.lineStyle = edge.lineStyle || {}
var curKey = getKeyOfEdges(edge.node1, edge.node2, seriesModel)
var curvenessList = seriesModel.__curvenessList
var parityCorrection = isArrayParam ? 0 : totalLen % 2 ? 0 : 1
if (!edgeArray.isForward) {
var oppositeKey = getOppositeKey(curKey)
var len2 = getEdgeMapLengthWithKey(oppositeKey, seriesModel)
var resValue = curvenessList[edgeIndex + len2 + parityCorrection]
if (needReverse) {
if (isArrayParam) {
if (autoCurvenessParams && autoCurvenessParams[0] === 0) {
return (len2 + parityCorrection) % 2 ? resValue : -resValue
} else {
return ((len2 % 2 ? 0 : 1) + parityCorrection) % 2
? resValue
: -resValue
}
} else {
return (len2 + parityCorrection) % 2 ? resValue : -resValue
}
} else {
return curvenessList[edgeIndex + len2 + parityCorrection]
}
} else {
return curvenessList[parityCorrection + edgeIndex]
}
}
function simpleLayout(seriesModel) {
var coordSys = seriesModel.coordinateSystem
if (coordSys && coordSys.type !== 'view') {
return
}
var graph = seriesModel.getGraph()
graph.eachNode(function (node2) {
var model = node2.getModel()
node2.setLayout([+model.get('x'), +model.get('y')])
})
simpleLayoutEdge(graph, seriesModel)
}
function simpleLayoutEdge(graph, seriesModel) {
graph.eachEdge(function (edge, index2) {
var curveness = retrieve3(
edge.getModel().get(['lineStyle', 'curveness']),
-getCurvenessForEdge(edge, seriesModel, index2, true),
0
)
var p1 = clone$3(edge.node1.getLayout())
var p2 = clone$3(edge.node2.getLayout())
var points2 = [p1, p2]
if (+curveness) {
points2.push([
(p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * curveness,
(p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * curveness,
])
}
edge.setLayout(points2)
})
}
function graphSimpleLayout(ecModel, api) {
ecModel.eachSeriesByType('graph', function (seriesModel) {
var layout2 = seriesModel.get('layout')
var coordSys = seriesModel.coordinateSystem
if (coordSys && coordSys.type !== 'view') {
var data_1 = seriesModel.getData()
var dimensions_1 = []
each$f(coordSys.dimensions, function (coordDim) {
dimensions_1 = dimensions_1.concat(data_1.mapDimensionsAll(coordDim))
})
for (var dataIndex = 0; dataIndex < data_1.count(); dataIndex++) {
var value2 = []
var hasValue = false
for (var i2 = 0; i2 < dimensions_1.length; i2++) {
var val2 = data_1.get(dimensions_1[i2], dataIndex)
if (!isNaN(val2)) {
hasValue = true
}
value2.push(val2)
}
if (hasValue) {
data_1.setItemLayout(dataIndex, coordSys.dataToPoint(value2))
} else {
data_1.setItemLayout(dataIndex, [NaN, NaN])
}
}
simpleLayoutEdge(data_1.graph, seriesModel)
} else if (!layout2 || layout2 === 'none') {
simpleLayout(seriesModel)
}
})
}
function getNodeGlobalScale(seriesModel) {
var coordSys = seriesModel.coordinateSystem
if (coordSys.type !== 'view') {
return 1
}
var nodeScaleRatio = seriesModel.option.nodeScaleRatio
var groupZoom = coordSys.scaleX
var roamZoom = coordSys.getZoom()
var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1
return nodeScale / groupZoom
}
function getSymbolSize(node2) {
var symbolSize = node2.getVisual('symbolSize')
if (symbolSize instanceof Array) {
symbolSize = (symbolSize[0] + symbolSize[1]) / 2
}
return +symbolSize
}
var PI$3 = Math.PI
var _symbolRadiansHalf = []
function circularLayout(seriesModel, basedOn, draggingNode, pointer2) {
var coordSys = seriesModel.coordinateSystem
if (coordSys && coordSys.type !== 'view') {
return
}
var rect = coordSys.getBoundingRect()
var nodeData = seriesModel.getData()
var graph = nodeData.graph
var cx = rect.width / 2 + rect.x
var cy = rect.height / 2 + rect.y
var r2 = Math.min(rect.width, rect.height) / 2
var count2 = nodeData.count()
nodeData.setLayout({
cx,
cy,
})
if (!count2) {
return
}
if (draggingNode) {
var _a2 = coordSys.pointToData(pointer2),
tempX = _a2[0],
tempY = _a2[1]
var v4 = [tempX - cx, tempY - cy]
normalize$3(v4, v4)
scale$2(v4, v4, r2)
draggingNode.setLayout([cx + v4[0], cy + v4[1]], true)
var circularRotateLabel = seriesModel.get(['circular', 'rotateLabel'])
rotateNodeLabel(draggingNode, circularRotateLabel, cx, cy)
}
_layoutNodesBasedOn[basedOn](seriesModel, graph, nodeData, r2, cx, cy, count2)
graph.eachEdge(function (edge, index2) {
var curveness = retrieve3(
edge.getModel().get(['lineStyle', 'curveness']),
getCurvenessForEdge(edge, seriesModel, index2),
0
)
var p1 = clone$3(edge.node1.getLayout())
var p2 = clone$3(edge.node2.getLayout())
var cp1
var x12 = (p1[0] + p2[0]) / 2
var y12 = (p1[1] + p2[1]) / 2
if (+curveness) {
curveness *= 3
cp1 = [
cx * curveness + x12 * (1 - curveness),
cy * curveness + y12 * (1 - curveness),
]
}
edge.setLayout([p1, p2, cp1])
})
}
var _layoutNodesBasedOn = {
value: function (seriesModel, graph, nodeData, r2, cx, cy, count2) {
var angle2 = 0
var sum2 = nodeData.getSum('value')
var unitAngle = (Math.PI * 2) / (sum2 || count2)
graph.eachNode(function (node2) {
var value2 = node2.getValue('value')
var radianHalf = (unitAngle * (sum2 ? value2 : 1)) / 2
angle2 += radianHalf
node2.setLayout([r2 * Math.cos(angle2) + cx, r2 * Math.sin(angle2) + cy])
angle2 += radianHalf
})
},
symbolSize: function (seriesModel, graph, nodeData, r2, cx, cy, count2) {
var sumRadian = 0
_symbolRadiansHalf.length = count2
var nodeScale = getNodeGlobalScale(seriesModel)
graph.eachNode(function (node2) {
var symbolSize = getSymbolSize(node2)
isNaN(symbolSize) && (symbolSize = 2)
symbolSize < 0 && (symbolSize = 0)
symbolSize *= nodeScale
var symbolRadianHalf = Math.asin(symbolSize / 2 / r2)
isNaN(symbolRadianHalf) && (symbolRadianHalf = PI$3 / 2)
_symbolRadiansHalf[node2.dataIndex] = symbolRadianHalf
sumRadian += symbolRadianHalf * 2
})
var halfRemainRadian = (2 * PI$3 - sumRadian) / count2 / 2
var angle2 = 0
graph.eachNode(function (node2) {
var radianHalf = halfRemainRadian + _symbolRadiansHalf[node2.dataIndex]
angle2 += radianHalf
;(!node2.getLayout() || !node2.getLayout().fixed) &&
node2.setLayout([
r2 * Math.cos(angle2) + cx,
r2 * Math.sin(angle2) + cy,
])
angle2 += radianHalf
})
},
}
function rotateNodeLabel(node2, circularRotateLabel, cx, cy) {
var el2 = node2.getGraphicEl()
if (!el2) {
return
}
var nodeModel = node2.getModel()
var labelRotate = nodeModel.get(['label', 'rotate']) || 0
var symbolPath = el2.getSymbolPath()
if (circularRotateLabel) {
var pos = node2.getLayout()
var rad = Math.atan2(pos[1] - cy, pos[0] - cx)
if (rad < 0) {
rad = Math.PI * 2 + rad
}
var isLeft = pos[0] < cx
if (isLeft) {
rad = rad - Math.PI
}
var textPosition = isLeft ? 'left' : 'right'
symbolPath.setTextConfig({
rotation: -rad,
position: textPosition,
origin: 'center',
})
var emphasisState = symbolPath.ensureState('emphasis')
extend(emphasisState.textConfig || (emphasisState.textConfig = {}), {
position: textPosition,
})
} else {
symbolPath.setTextConfig({
rotation: (labelRotate *= Math.PI / 180),
})
}
}
function graphCircularLayout(ecModel) {
ecModel.eachSeriesByType('graph', function (seriesModel) {
if (seriesModel.get('layout') === 'circular') {
circularLayout(seriesModel, 'symbolSize')
}
})
}
var scaleAndAdd = scaleAndAdd$1
function forceLayout(inNodes, inEdges, opts) {
var nodes = inNodes
var edges = inEdges
var rect = opts.rect
var width = rect.width
var height = rect.height
var center2 = [rect.x + width / 2, rect.y + height / 2]
var gravity = opts.gravity == null ? 0.1 : opts.gravity
for (var i2 = 0; i2 < nodes.length; i2++) {
var n2 = nodes[i2]
if (!n2.p) {
n2.p = create$2(
width * (Math.random() - 0.5) + center2[0],
height * (Math.random() - 0.5) + center2[1]
)
}
n2.pp = clone$3(n2.p)
n2.edges = null
}
var initialFriction = opts.friction == null ? 0.6 : opts.friction
var friction = initialFriction
var beforeStepCallback
var afterStepCallback
return {
warmUp: function () {
friction = initialFriction * 0.8
},
setFixed: function (idx) {
nodes[idx].fixed = true
},
setUnfixed: function (idx) {
nodes[idx].fixed = false
},
beforeStep: function (cb) {
beforeStepCallback = cb
},
afterStep: function (cb) {
afterStepCallback = cb
},
step: function (cb) {
beforeStepCallback && beforeStepCallback(nodes, edges)
var v12 = []
var nLen = nodes.length
for (var i3 = 0; i3 < edges.length; i3++) {
var e2 = edges[i3]
if (e2.ignoreForceLayout) {
continue
}
var n1 = e2.n1
var n22 = e2.n2
sub(v12, n22.p, n1.p)
var d3 = len(v12) - e2.d
var w2 = n22.w / (n1.w + n22.w)
if (isNaN(w2)) {
w2 = 0
}
normalize$3(v12, v12)
!n1.fixed && scaleAndAdd(n1.p, n1.p, v12, w2 * d3 * friction)
!n22.fixed && scaleAndAdd(n22.p, n22.p, v12, -(1 - w2) * d3 * friction)
}
for (var i3 = 0; i3 < nLen; i3++) {
var n3 = nodes[i3]
if (!n3.fixed) {
sub(v12, center2, n3.p)
scaleAndAdd(n3.p, n3.p, v12, gravity * friction)
}
}
for (var i3 = 0; i3 < nLen; i3++) {
var n1 = nodes[i3]
for (var j2 = i3 + 1; j2 < nLen; j2++) {
var n22 = nodes[j2]
sub(v12, n22.p, n1.p)
var d3 = len(v12)
if (d3 === 0) {
set$1(v12, Math.random() - 0.5, Math.random() - 0.5)
d3 = 1
}
var repFact = (n1.rep + n22.rep) / d3 / d3
!n1.fixed && scaleAndAdd(n1.pp, n1.pp, v12, repFact)
!n22.fixed && scaleAndAdd(n22.pp, n22.pp, v12, -repFact)
}
}
var v4 = []
for (var i3 = 0; i3 < nLen; i3++) {
var n3 = nodes[i3]
if (!n3.fixed) {
sub(v4, n3.p, n3.pp)
scaleAndAdd(n3.p, n3.p, v4, friction)
copy$1(n3.pp, n3.p)
}
}
friction = friction * 0.992
var finished2 = friction < 0.01
afterStepCallback && afterStepCallback(nodes, edges, finished2)
cb && cb(finished2)
},
}
}
function graphForceLayout(ecModel) {
ecModel.eachSeriesByType('graph', function (graphSeries) {
var coordSys = graphSeries.coordinateSystem
if (coordSys && coordSys.type !== 'view') {
return
}
if (graphSeries.get('layout') === 'force') {
var preservedPoints_1 = graphSeries.preservedPoints || {}
var graph_1 = graphSeries.getGraph()
var nodeData_1 = graph_1.data
var edgeData = graph_1.edgeData
var forceModel = graphSeries.getModel('force')
var initLayout = forceModel.get('initLayout')
if (graphSeries.preservedPoints) {
nodeData_1.each(function (idx) {
var id2 = nodeData_1.getId(idx)
nodeData_1.setItemLayout(idx, preservedPoints_1[id2] || [NaN, NaN])
})
} else if (!initLayout || initLayout === 'none') {
simpleLayout(graphSeries)
} else if (initLayout === 'circular') {
circularLayout(graphSeries, 'value')
}
var nodeDataExtent_1 = nodeData_1.getDataExtent('value')
var edgeDataExtent_1 = edgeData.getDataExtent('value')
var repulsion = forceModel.get('repulsion')
var edgeLength = forceModel.get('edgeLength')
var repulsionArr_1 = isArray$6(repulsion)
? repulsion
: [repulsion, repulsion]
var edgeLengthArr_1 = isArray$6(edgeLength)
? edgeLength
: [edgeLength, edgeLength]
edgeLengthArr_1 = [edgeLengthArr_1[1], edgeLengthArr_1[0]]
var nodes_1 = nodeData_1.mapArray('value', function (value2, idx) {
var point = nodeData_1.getItemLayout(idx)
var rep = linearMap$2(value2, nodeDataExtent_1, repulsionArr_1)
if (isNaN(rep)) {
rep = (repulsionArr_1[0] + repulsionArr_1[1]) / 2
}
return {
w: rep,
rep,
fixed: nodeData_1.getItemModel(idx).get('fixed'),
p: !point || isNaN(point[0]) || isNaN(point[1]) ? null : point,
}
})
var edges = edgeData.mapArray('value', function (value2, idx) {
var edge = graph_1.getEdgeByIndex(idx)
var d3 = linearMap$2(value2, edgeDataExtent_1, edgeLengthArr_1)
if (isNaN(d3)) {
d3 = (edgeLengthArr_1[0] + edgeLengthArr_1[1]) / 2
}
var edgeModel = edge.getModel()
var curveness = retrieve3(
edge.getModel().get(['lineStyle', 'curveness']),
-getCurvenessForEdge(edge, graphSeries, idx, true),
0
)
return {
n1: nodes_1[edge.node1.dataIndex],
n2: nodes_1[edge.node2.dataIndex],
d: d3,
curveness,
ignoreForceLayout: edgeModel.get('ignoreForceLayout'),
}
})
var rect = coordSys.getBoundingRect()
var forceInstance = forceLayout(nodes_1, edges, {
rect,
gravity: forceModel.get('gravity'),
friction: forceModel.get('friction'),
})
forceInstance.beforeStep(function (nodes, edges2) {
for (var i2 = 0, l2 = nodes.length; i2 < l2; i2++) {
if (nodes[i2].fixed) {
copy$1(nodes[i2].p, graph_1.getNodeByIndex(i2).getLayout())
}
}
})
forceInstance.afterStep(function (nodes, edges2, stopped) {
for (var i2 = 0, l2 = nodes.length; i2 < l2; i2++) {
if (!nodes[i2].fixed) {
graph_1.getNodeByIndex(i2).setLayout(nodes[i2].p)
}
preservedPoints_1[nodeData_1.getId(i2)] = nodes[i2].p
}
for (var i2 = 0, l2 = edges2.length; i2 < l2; i2++) {
var e2 = edges2[i2]
var edge = graph_1.getEdgeByIndex(i2)
var p1 = e2.n1.p
var p2 = e2.n2.p
var points2 = edge.getLayout()
points2 = points2 ? points2.slice() : []
points2[0] = points2[0] || []
points2[1] = points2[1] || []
copy$1(points2[0], p1)
copy$1(points2[1], p2)
if (+e2.curveness) {
points2[2] = [
(p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * e2.curveness,
(p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * e2.curveness,
]
}
edge.setLayout(points2)
}
})
graphSeries.forceLayout = forceInstance
graphSeries.preservedPoints = preservedPoints_1
forceInstance.step()
} else {
graphSeries.forceLayout = null
}
})
}
function getViewRect$3(seriesModel, api, aspect) {
var option2 = extend(seriesModel.getBoxLayoutParams(), {
aspect,
})
return getLayoutRect(option2, {
width: api.getWidth(),
height: api.getHeight(),
})
}
function createViewCoordSys(ecModel, api) {
var viewList = []
ecModel.eachSeriesByType('graph', function (seriesModel) {
var coordSysType = seriesModel.get('coordinateSystem')
if (!coordSysType || coordSysType === 'view') {
var data_1 = seriesModel.getData()
var positions = data_1.mapArray(function (idx) {
var itemModel = data_1.getItemModel(idx)
return [+itemModel.get('x'), +itemModel.get('y')]
})
var min3 = []
var max3 = []
fromPoints(positions, min3, max3)
if (max3[0] - min3[0] === 0) {
max3[0] += 1
min3[0] -= 1
}
if (max3[1] - min3[1] === 0) {
max3[1] += 1
min3[1] -= 1
}
var aspect = (max3[0] - min3[0]) / (max3[1] - min3[1])
var viewRect2 = getViewRect$3(seriesModel, api, aspect)
if (isNaN(aspect)) {
min3 = [viewRect2.x, viewRect2.y]
max3 = [viewRect2.x + viewRect2.width, viewRect2.y + viewRect2.height]
}
var bbWidth = max3[0] - min3[0]
var bbHeight = max3[1] - min3[1]
var viewWidth = viewRect2.width
var viewHeight = viewRect2.height
var viewCoordSys = (seriesModel.coordinateSystem = new View$1())
viewCoordSys.zoomLimit = seriesModel.get('scaleLimit')
viewCoordSys.setBoundingRect(min3[0], min3[1], bbWidth, bbHeight)
viewCoordSys.setViewRect(viewRect2.x, viewRect2.y, viewWidth, viewHeight)
viewCoordSys.setCenter(seriesModel.get('center'), api)
viewCoordSys.setZoom(seriesModel.get('zoom'))
viewList.push(viewCoordSys)
}
})
return viewList
}
var straightLineProto = Line$4.prototype
var bezierCurveProto = BezierCurve$1.prototype
var StraightLineShape = (function () {
function StraightLineShape2() {
this.x1 = 0
this.y1 = 0
this.x2 = 0
this.y2 = 0
this.percent = 1
}
return StraightLineShape2
})()
;(function (_super) {
__extends$2(CurveShape, _super)
function CurveShape() {
return (_super !== null && _super.apply(this, arguments)) || this
}
return CurveShape
})(StraightLineShape)
function isStraightLine(shape) {
return isNaN(+shape.cpx1) || isNaN(+shape.cpy1)
}
var ECLinePath = (function (_super) {
__extends$2(ECLinePath2, _super)
function ECLinePath2(opts) {
var _this = _super.call(this, opts) || this
_this.type = 'ec-line'
return _this
}
ECLinePath2.prototype.getDefaultStyle = function () {
return {
stroke: '#000',
fill: null,
}
}
ECLinePath2.prototype.getDefaultShape = function () {
return new StraightLineShape()
}
ECLinePath2.prototype.buildPath = function (ctx, shape) {
if (isStraightLine(shape)) {
straightLineProto.buildPath.call(this, ctx, shape)
} else {
bezierCurveProto.buildPath.call(this, ctx, shape)
}
}
ECLinePath2.prototype.pointAt = function (t3) {
if (isStraightLine(this.shape)) {
return straightLineProto.pointAt.call(this, t3)
} else {
return bezierCurveProto.pointAt.call(this, t3)
}
}
ECLinePath2.prototype.tangentAt = function (t3) {
var shape = this.shape
var p2 = isStraightLine(shape)
? [shape.x2 - shape.x1, shape.y2 - shape.y1]
: bezierCurveProto.tangentAt.call(this, t3)
return normalize$3(p2, p2)
}
return ECLinePath2
})(Path$1)
var ECLinePath$1 = ECLinePath
var SYMBOL_CATEGORIES = ['fromSymbol', 'toSymbol']
function makeSymbolTypeKey(symbolCategory) {
return '_' + symbolCategory + 'Type'
}
function makeSymbolTypeValue(name2, lineData, idx) {
var symbolType = lineData.getItemVisual(idx, name2)
if (!symbolType || symbolType === 'none') {
return symbolType
}
var symbolSize = lineData.getItemVisual(idx, name2 + 'Size')
var symbolRotate = lineData.getItemVisual(idx, name2 + 'Rotate')
var symbolOffset = lineData.getItemVisual(idx, name2 + 'Offset')
var symbolKeepAspect = lineData.getItemVisual(idx, name2 + 'KeepAspect')
var symbolSizeArr = normalizeSymbolSize(symbolSize)
var symbolOffsetArr = normalizeSymbolOffset(symbolOffset || 0, symbolSizeArr)
return (
symbolType +
symbolSizeArr +
symbolOffsetArr +
(symbolRotate || '') +
(symbolKeepAspect || '')
)
}
function createSymbol(name2, lineData, idx) {
var symbolType = lineData.getItemVisual(idx, name2)
if (!symbolType || symbolType === 'none') {
return
}
var symbolSize = lineData.getItemVisual(idx, name2 + 'Size')
var symbolRotate = lineData.getItemVisual(idx, name2 + 'Rotate')
var symbolOffset = lineData.getItemVisual(idx, name2 + 'Offset')
var symbolKeepAspect = lineData.getItemVisual(idx, name2 + 'KeepAspect')
var symbolSizeArr = normalizeSymbolSize(symbolSize)
var symbolOffsetArr = normalizeSymbolOffset(symbolOffset || 0, symbolSizeArr)
var symbolPath = createSymbol$1(
symbolType,
-symbolSizeArr[0] / 2 + symbolOffsetArr[0],
-symbolSizeArr[1] / 2 + symbolOffsetArr[1],
symbolSizeArr[0],
symbolSizeArr[1],
null,
symbolKeepAspect
)
symbolPath.__specifiedRotation =
symbolRotate == null || isNaN(symbolRotate)
? void 0
: (+symbolRotate * Math.PI) / 180 || 0
symbolPath.name = name2
return symbolPath
}
function createLine(points2) {
var line = new ECLinePath$1({
name: 'line',
subPixelOptimize: true,
})
setLinePoints(line.shape, points2)
return line
}
function setLinePoints(targetShape, points2) {
targetShape.x1 = points2[0][0]
targetShape.y1 = points2[0][1]
targetShape.x2 = points2[1][0]
targetShape.y2 = points2[1][1]
targetShape.percent = 1
var cp1 = points2[2]
if (cp1) {
targetShape.cpx1 = cp1[0]
targetShape.cpy1 = cp1[1]
} else {
targetShape.cpx1 = NaN
targetShape.cpy1 = NaN
}
}
var Line$1 = (function (_super) {
__extends$2(Line2, _super)
function Line2(lineData, idx, seriesScope) {
var _this = _super.call(this) || this
_this._createLine(lineData, idx, seriesScope)
return _this
}
Line2.prototype._createLine = function (lineData, idx, seriesScope) {
var seriesModel = lineData.hostModel
var linePoints = lineData.getItemLayout(idx)
var line = createLine(linePoints)
line.shape.percent = 0
initProps(
line,
{
shape: {
percent: 1,
},
},
seriesModel,
idx
)
this.add(line)
each$f(
SYMBOL_CATEGORIES,
function (symbolCategory) {
var symbol = createSymbol(symbolCategory, lineData, idx)
this.add(symbol)
this[makeSymbolTypeKey(symbolCategory)] = makeSymbolTypeValue(
symbolCategory,
lineData,
idx
)
},
this
)
this._updateCommonStl(lineData, idx, seriesScope)
}
Line2.prototype.updateData = function (lineData, idx, seriesScope) {
var seriesModel = lineData.hostModel
var line = this.childOfName('line')
var linePoints = lineData.getItemLayout(idx)
var target2 = {
shape: {},
}
setLinePoints(target2.shape, linePoints)
updateProps$1(line, target2, seriesModel, idx)
each$f(
SYMBOL_CATEGORIES,
function (symbolCategory) {
var symbolType = makeSymbolTypeValue(symbolCategory, lineData, idx)
var key2 = makeSymbolTypeKey(symbolCategory)
if (this[key2] !== symbolType) {
this.remove(this.childOfName(symbolCategory))
var symbol = createSymbol(symbolCategory, lineData, idx)
this.add(symbol)
}
this[key2] = symbolType
},
this
)
this._updateCommonStl(lineData, idx, seriesScope)
}
Line2.prototype.getLinePath = function () {
return this.childAt(0)
}
Line2.prototype._updateCommonStl = function (lineData, idx, seriesScope) {
var seriesModel = lineData.hostModel
var line = this.childOfName('line')
var emphasisLineStyle = seriesScope && seriesScope.emphasisLineStyle
var blurLineStyle = seriesScope && seriesScope.blurLineStyle
var selectLineStyle = seriesScope && seriesScope.selectLineStyle
var labelStatesModels = seriesScope && seriesScope.labelStatesModels
var emphasisDisabled = seriesScope && seriesScope.emphasisDisabled
var focus2 = seriesScope && seriesScope.focus
var blurScope = seriesScope && seriesScope.blurScope
if (!seriesScope || lineData.hasItemOption) {
var itemModel = lineData.getItemModel(idx)
var emphasisModel = itemModel.getModel('emphasis')
emphasisLineStyle = emphasisModel.getModel('lineStyle').getLineStyle()
blurLineStyle = itemModel.getModel(['blur', 'lineStyle']).getLineStyle()
selectLineStyle = itemModel
.getModel(['select', 'lineStyle'])
.getLineStyle()
emphasisDisabled = emphasisModel.get('disabled')
focus2 = emphasisModel.get('focus')
blurScope = emphasisModel.get('blurScope')
labelStatesModels = getLabelStatesModels(itemModel)
}
var lineStyle = lineData.getItemVisual(idx, 'style')
var visualColor = lineStyle.stroke
line.useStyle(lineStyle)
line.style.fill = null
line.style.strokeNoScale = true
line.ensureState('emphasis').style = emphasisLineStyle
line.ensureState('blur').style = blurLineStyle
line.ensureState('select').style = selectLineStyle
each$f(
SYMBOL_CATEGORIES,
function (symbolCategory) {
var symbol = this.childOfName(symbolCategory)
if (symbol) {
symbol.setColor(visualColor)
symbol.style.opacity = lineStyle.opacity
for (var i2 = 0; i2 < SPECIAL_STATES.length; i2++) {
var stateName = SPECIAL_STATES[i2]
var lineState = line.getState(stateName)
if (lineState) {
var lineStateStyle = lineState.style || {}
var state2 = symbol.ensureState(stateName)
var stateStyle = state2.style || (state2.style = {})
if (lineStateStyle.stroke != null) {
stateStyle[symbol.__isEmptyBrush ? 'stroke' : 'fill'] =
lineStateStyle.stroke
}
if (lineStateStyle.opacity != null) {
stateStyle.opacity = lineStateStyle.opacity
}
}
}
symbol.markRedraw()
}
},
this
)
var rawVal = seriesModel.getRawValue(idx)
setLabelStyle(this, labelStatesModels, {
labelDataIndex: idx,
labelFetcher: {
getFormattedLabel: function (dataIndex, stateName) {
return seriesModel.getFormattedLabel(
dataIndex,
stateName,
lineData.dataType
)
},
},
inheritColor: visualColor || '#000',
defaultOpacity: lineStyle.opacity,
defaultText:
(rawVal == null
? lineData.getName(idx)
: isFinite(rawVal)
? round$3(rawVal)
: rawVal) + '',
})
var label = this.getTextContent()
if (label) {
var labelNormalModel = labelStatesModels.normal
label.__align = label.style.align
label.__verticalAlign = label.style.verticalAlign
label.__position = labelNormalModel.get('position') || 'middle'
var distance2 = labelNormalModel.get('distance')
if (!isArray$6(distance2)) {
distance2 = [distance2, distance2]
}
label.__labelDistance = distance2
}
this.setTextConfig({
position: null,
local: true,
inside: false,
})
toggleHoverEmphasis(this, focus2, blurScope, emphasisDisabled)
}
Line2.prototype.highlight = function () {
enterEmphasis(this)
}
Line2.prototype.downplay = function () {
leaveEmphasis(this)
}
Line2.prototype.updateLayout = function (lineData, idx) {
this.setLinePoints(lineData.getItemLayout(idx))
}
Line2.prototype.setLinePoints = function (points2) {
var linePath = this.childOfName('line')
setLinePoints(linePath.shape, points2)
linePath.dirty()
}
Line2.prototype.beforeUpdate = function () {
var lineGroup = this
var symbolFrom = lineGroup.childOfName('fromSymbol')
var symbolTo = lineGroup.childOfName('toSymbol')
var label = lineGroup.getTextContent()
if (!symbolFrom && !symbolTo && (!label || label.ignore)) {
return
}
var invScale = 1
var parentNode2 = this.parent
while (parentNode2) {
if (parentNode2.scaleX) {
invScale /= parentNode2.scaleX
}
parentNode2 = parentNode2.parent
}
var line = lineGroup.childOfName('line')
if (!this.__dirty && !line.__dirty) {
return
}
var percent = line.shape.percent
var fromPos = line.pointAt(0)
var toPos = line.pointAt(percent)
var d3 = sub([], toPos, fromPos)
normalize$3(d3, d3)
function setSymbolRotation(symbol, percent2) {
var specifiedRotation = symbol.__specifiedRotation
if (specifiedRotation == null) {
var tangent2 = line.tangentAt(percent2)
symbol.attr(
'rotation',
((percent2 === 1 ? -1 : 1) * Math.PI) / 2 -
Math.atan2(tangent2[1], tangent2[0])
)
} else {
symbol.attr('rotation', specifiedRotation)
}
}
if (symbolFrom) {
symbolFrom.setPosition(fromPos)
setSymbolRotation(symbolFrom, 0)
symbolFrom.scaleX = symbolFrom.scaleY = invScale * percent
symbolFrom.markRedraw()
}
if (symbolTo) {
symbolTo.setPosition(toPos)
setSymbolRotation(symbolTo, 1)
symbolTo.scaleX = symbolTo.scaleY = invScale * percent
symbolTo.markRedraw()
}
if (label && !label.ignore) {
label.x = label.y = 0
label.originX = label.originY = 0
var textAlign2 = void 0
var textVerticalAlign = void 0
var distance2 = label.__labelDistance
var distanceX = distance2[0] * invScale
var distanceY = distance2[1] * invScale
var halfPercent = percent / 2
var tangent = line.tangentAt(halfPercent)
var n2 = [tangent[1], -tangent[0]]
var cp = line.pointAt(halfPercent)
if (n2[1] > 0) {
n2[0] = -n2[0]
n2[1] = -n2[1]
}
var dir3 = tangent[0] < 0 ? -1 : 1
if (label.__position !== 'start' && label.__position !== 'end') {
var rotation = -Math.atan2(tangent[1], tangent[0])
if (toPos[0] < fromPos[0]) {
rotation = Math.PI + rotation
}
label.rotation = rotation
}
var dy = void 0
switch (label.__position) {
case 'insideStartTop':
case 'insideMiddleTop':
case 'insideEndTop':
case 'middle':
dy = -distanceY
textVerticalAlign = 'bottom'
break
case 'insideStartBottom':
case 'insideMiddleBottom':
case 'insideEndBottom':
dy = distanceY
textVerticalAlign = 'top'
break
default:
dy = 0
textVerticalAlign = 'middle'
}
switch (label.__position) {
case 'end':
label.x = d3[0] * distanceX + toPos[0]
label.y = d3[1] * distanceY + toPos[1]
textAlign2 = d3[0] > 0.8 ? 'left' : d3[0] < -0.8 ? 'right' : 'center'
textVerticalAlign =
d3[1] > 0.8 ? 'top' : d3[1] < -0.8 ? 'bottom' : 'middle'
break
case 'start':
label.x = -d3[0] * distanceX + fromPos[0]
label.y = -d3[1] * distanceY + fromPos[1]
textAlign2 = d3[0] > 0.8 ? 'right' : d3[0] < -0.8 ? 'left' : 'center'
textVerticalAlign =
d3[1] > 0.8 ? 'bottom' : d3[1] < -0.8 ? 'top' : 'middle'
break
case 'insideStartTop':
case 'insideStart':
case 'insideStartBottom':
label.x = distanceX * dir3 + fromPos[0]
label.y = fromPos[1] + dy
textAlign2 = tangent[0] < 0 ? 'right' : 'left'
label.originX = -distanceX * dir3
label.originY = -dy
break
case 'insideMiddleTop':
case 'insideMiddle':
case 'insideMiddleBottom':
case 'middle':
label.x = cp[0]
label.y = cp[1] + dy
textAlign2 = 'center'
label.originY = -dy
break
case 'insideEndTop':
case 'insideEnd':
case 'insideEndBottom':
label.x = -distanceX * dir3 + toPos[0]
label.y = toPos[1] + dy
textAlign2 = tangent[0] >= 0 ? 'right' : 'left'
label.originX = distanceX * dir3
label.originY = -dy
break
}
label.scaleX = label.scaleY = invScale
label.setStyle({
verticalAlign: label.__verticalAlign || textVerticalAlign,
align: label.__align || textAlign2,
})
}
}
return Line2
})(Group$5)
var Line$2 = Line$1
var LineDraw = (function () {
function LineDraw2(LineCtor) {
this.group = new Group$5()
this._LineCtor = LineCtor || Line$2
}
LineDraw2.prototype.updateData = function (lineData) {
var _this = this
this._progressiveEls = null
var lineDraw = this
var group = lineDraw.group
var oldLineData = lineDraw._lineData
lineDraw._lineData = lineData
if (!oldLineData) {
group.removeAll()
}
var seriesScope = makeSeriesScope$1(lineData)
lineData
.diff(oldLineData)
.add(function (idx) {
_this._doAdd(lineData, idx, seriesScope)
})
.update(function (newIdx, oldIdx) {
_this._doUpdate(oldLineData, lineData, oldIdx, newIdx, seriesScope)
})
.remove(function (idx) {
group.remove(oldLineData.getItemGraphicEl(idx))
})
.execute()
}
LineDraw2.prototype.updateLayout = function () {
var lineData = this._lineData
if (!lineData) {
return
}
lineData.eachItemGraphicEl(function (el2, idx) {
el2.updateLayout(lineData, idx)
}, this)
}
LineDraw2.prototype.incrementalPrepareUpdate = function (lineData) {
this._seriesScope = makeSeriesScope$1(lineData)
this._lineData = null
this.group.removeAll()
}
LineDraw2.prototype.incrementalUpdate = function (taskParams, lineData) {
this._progressiveEls = []
function updateIncrementalAndHover(el3) {
if (!el3.isGroup && !isEffectObject(el3)) {
el3.incremental = true
el3.ensureState('emphasis').hoverLayer = true
}
}
for (var idx = taskParams.start; idx < taskParams.end; idx++) {
var itemLayout = lineData.getItemLayout(idx)
if (lineNeedsDraw(itemLayout)) {
var el2 = new this._LineCtor(lineData, idx, this._seriesScope)
el2.traverse(updateIncrementalAndHover)
this.group.add(el2)
lineData.setItemGraphicEl(idx, el2)
this._progressiveEls.push(el2)
}
}
}
LineDraw2.prototype.remove = function () {
this.group.removeAll()
}
LineDraw2.prototype.eachRendered = function (cb) {
traverseElements(this._progressiveEls || this.group, cb)
}
LineDraw2.prototype._doAdd = function (lineData, idx, seriesScope) {
var itemLayout = lineData.getItemLayout(idx)
if (!lineNeedsDraw(itemLayout)) {
return
}
var el2 = new this._LineCtor(lineData, idx, seriesScope)
lineData.setItemGraphicEl(idx, el2)
this.group.add(el2)
}
LineDraw2.prototype._doUpdate = function (
oldLineData,
newLineData,
oldIdx,
newIdx,
seriesScope
) {
var itemEl = oldLineData.getItemGraphicEl(oldIdx)
if (!lineNeedsDraw(newLineData.getItemLayout(newIdx))) {
this.group.remove(itemEl)
return
}
if (!itemEl) {
itemEl = new this._LineCtor(newLineData, newIdx, seriesScope)
} else {
itemEl.updateData(newLineData, newIdx, seriesScope)
}
newLineData.setItemGraphicEl(newIdx, itemEl)
this.group.add(itemEl)
}
return LineDraw2
})()
function isEffectObject(el2) {
return el2.animators && el2.animators.length > 0
}
function makeSeriesScope$1(lineData) {
var hostModel = lineData.hostModel
var emphasisModel = hostModel.getModel('emphasis')
return {
lineStyle: hostModel.getModel('lineStyle').getLineStyle(),
emphasisLineStyle: emphasisModel.getModel(['lineStyle']).getLineStyle(),
blurLineStyle: hostModel.getModel(['blur', 'lineStyle']).getLineStyle(),
selectLineStyle: hostModel.getModel(['select', 'lineStyle']).getLineStyle(),
emphasisDisabled: emphasisModel.get('disabled'),
blurScope: emphasisModel.get('blurScope'),
focus: emphasisModel.get('focus'),
labelStatesModels: getLabelStatesModels(hostModel),
}
}
function isPointNaN(pt3) {
return isNaN(pt3[0]) || isNaN(pt3[1])
}
function lineNeedsDraw(pts) {
return pts && !isPointNaN(pts[0]) && !isPointNaN(pts[1])
}
var LineDraw$1 = LineDraw
var v1 = []
var v2 = []
var v3 = []
var quadraticAt = quadraticAt$1
var v2DistSquare = distSquare
var mathAbs = Math.abs
function intersectCurveCircle(curvePoints, center2, radius) {
var p0 = curvePoints[0]
var p1 = curvePoints[1]
var p2 = curvePoints[2]
var d3 = Infinity
var t3
var radiusSquare = radius * radius
var interval = 0.1
for (var _t2 = 0.1; _t2 <= 0.9; _t2 += 0.1) {
v1[0] = quadraticAt(p0[0], p1[0], p2[0], _t2)
v1[1] = quadraticAt(p0[1], p1[1], p2[1], _t2)
var diff = mathAbs(v2DistSquare(v1, center2) - radiusSquare)
if (diff < d3) {
d3 = diff
t3 = _t2
}
}
for (var i2 = 0; i2 < 32; i2++) {
var next = t3 + interval
v2[0] = quadraticAt(p0[0], p1[0], p2[0], t3)
v2[1] = quadraticAt(p0[1], p1[1], p2[1], t3)
v3[0] = quadraticAt(p0[0], p1[0], p2[0], next)
v3[1] = quadraticAt(p0[1], p1[1], p2[1], next)
var diff = v2DistSquare(v2, center2) - radiusSquare
if (mathAbs(diff) < 0.01) {
break
}
var nextDiff = v2DistSquare(v3, center2) - radiusSquare
interval /= 2
if (diff < 0) {
if (nextDiff >= 0) {
t3 = t3 + interval
} else {
t3 = t3 - interval
}
} else {
if (nextDiff >= 0) {
t3 = t3 - interval
} else {
t3 = t3 + interval
}
}
}
return t3
}
function adjustEdge(graph, scale2) {
var tmp0 = []
var quadraticSubdivide$1 = quadraticSubdivide
var pts = [[], [], []]
var pts2 = [[], []]
var v4 = []
scale2 /= 2
graph.eachEdge(function (edge, idx) {
var linePoints = edge.getLayout()
var fromSymbol = edge.getVisual('fromSymbol')
var toSymbol = edge.getVisual('toSymbol')
if (!linePoints.__original) {
linePoints.__original = [clone$3(linePoints[0]), clone$3(linePoints[1])]
if (linePoints[2]) {
linePoints.__original.push(clone$3(linePoints[2]))
}
}
var originalPoints = linePoints.__original
if (linePoints[2] != null) {
copy$1(pts[0], originalPoints[0])
copy$1(pts[1], originalPoints[2])
copy$1(pts[2], originalPoints[1])
if (fromSymbol && fromSymbol !== 'none') {
var symbolSize = getSymbolSize(edge.node1)
var t3 = intersectCurveCircle(
pts,
originalPoints[0],
symbolSize * scale2
)
quadraticSubdivide$1(pts[0][0], pts[1][0], pts[2][0], t3, tmp0)
pts[0][0] = tmp0[3]
pts[1][0] = tmp0[4]
quadraticSubdivide$1(pts[0][1], pts[1][1], pts[2][1], t3, tmp0)
pts[0][1] = tmp0[3]
pts[1][1] = tmp0[4]
}
if (toSymbol && toSymbol !== 'none') {
var symbolSize = getSymbolSize(edge.node2)
var t3 = intersectCurveCircle(
pts,
originalPoints[1],
symbolSize * scale2
)
quadraticSubdivide$1(pts[0][0], pts[1][0], pts[2][0], t3, tmp0)
pts[1][0] = tmp0[1]
pts[2][0] = tmp0[2]
quadraticSubdivide$1(pts[0][1], pts[1][1], pts[2][1], t3, tmp0)
pts[1][1] = tmp0[1]
pts[2][1] = tmp0[2]
}
copy$1(linePoints[0], pts[0])
copy$1(linePoints[1], pts[2])
copy$1(linePoints[2], pts[1])
} else {
copy$1(pts2[0], originalPoints[0])
copy$1(pts2[1], originalPoints[1])
sub(v4, pts2[1], pts2[0])
normalize$3(v4, v4)
if (fromSymbol && fromSymbol !== 'none') {
var symbolSize = getSymbolSize(edge.node1)
scaleAndAdd$1(pts2[0], pts2[0], v4, symbolSize * scale2)
}
if (toSymbol && toSymbol !== 'none') {
var symbolSize = getSymbolSize(edge.node2)
scaleAndAdd$1(pts2[1], pts2[1], v4, -symbolSize * scale2)
}
copy$1(linePoints[0], pts2[0])
copy$1(linePoints[1], pts2[1])
}
})
}
function isViewCoordSys(coordSys) {
return coordSys.type === 'view'
}
var GraphView = (function (_super) {
__extends$2(GraphView2, _super)
function GraphView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = GraphView2.type
return _this
}
GraphView2.prototype.init = function (ecModel, api) {
var symbolDraw = new SymbolDraw$1()
var lineDraw = new LineDraw$1()
var group = this.group
this._controller = new RoamController$1(api.getZr())
this._controllerHost = {
target: group,
}
group.add(symbolDraw.group)
group.add(lineDraw.group)
this._symbolDraw = symbolDraw
this._lineDraw = lineDraw
this._firstRender = true
}
GraphView2.prototype.render = function (seriesModel, ecModel, api) {
var _this = this
var coordSys = seriesModel.coordinateSystem
this._model = seriesModel
var symbolDraw = this._symbolDraw
var lineDraw = this._lineDraw
var group = this.group
if (isViewCoordSys(coordSys)) {
var groupNewProp = {
x: coordSys.x,
y: coordSys.y,
scaleX: coordSys.scaleX,
scaleY: coordSys.scaleY,
}
if (this._firstRender) {
group.attr(groupNewProp)
} else {
updateProps$1(group, groupNewProp, seriesModel)
}
}
adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel))
var data2 = seriesModel.getData()
symbolDraw.updateData(data2)
var edgeData = seriesModel.getEdgeData()
lineDraw.updateData(edgeData)
this._updateNodeAndLinkScale()
this._updateController(seriesModel, ecModel, api)
clearTimeout(this._layoutTimeout)
var forceLayout2 = seriesModel.forceLayout
var layoutAnimation = seriesModel.get(['force', 'layoutAnimation'])
if (forceLayout2) {
this._startForceLayoutIteration(forceLayout2, layoutAnimation)
}
var layout2 = seriesModel.get('layout')
data2.graph.eachNode(function (node2) {
var idx = node2.dataIndex
var el2 = node2.getGraphicEl()
var itemModel = node2.getModel()
if (!el2) {
return
}
el2.off('drag').off('dragend')
var draggable2 = itemModel.get('draggable')
if (draggable2) {
el2
.on('drag', function (e2) {
switch (layout2) {
case 'force':
forceLayout2.warmUp()
!_this._layouting &&
_this._startForceLayoutIteration(
forceLayout2,
layoutAnimation
)
forceLayout2.setFixed(idx)
data2.setItemLayout(idx, [el2.x, el2.y])
break
case 'circular':
data2.setItemLayout(idx, [el2.x, el2.y])
node2.setLayout(
{
fixed: true,
},
true
)
circularLayout(seriesModel, 'symbolSize', node2, [
e2.offsetX,
e2.offsetY,
])
_this.updateLayout(seriesModel)
break
case 'none':
default:
data2.setItemLayout(idx, [el2.x, el2.y])
simpleLayoutEdge(seriesModel.getGraph(), seriesModel)
_this.updateLayout(seriesModel)
break
}
})
.on('dragend', function () {
if (forceLayout2) {
forceLayout2.setUnfixed(idx)
}
})
}
el2.setDraggable(draggable2, !!itemModel.get('cursor'))
var focus2 = itemModel.get(['emphasis', 'focus'])
if (focus2 === 'adjacency') {
getECData(el2).focus = node2.getAdjacentDataIndices()
}
})
data2.graph.eachEdge(function (edge) {
var el2 = edge.getGraphicEl()
var focus2 = edge.getModel().get(['emphasis', 'focus'])
if (!el2) {
return
}
if (focus2 === 'adjacency') {
getECData(el2).focus = {
edge: [edge.dataIndex],
node: [edge.node1.dataIndex, edge.node2.dataIndex],
}
}
})
var circularRotateLabel =
seriesModel.get('layout') === 'circular' &&
seriesModel.get(['circular', 'rotateLabel'])
var cx = data2.getLayout('cx')
var cy = data2.getLayout('cy')
data2.graph.eachNode(function (node2) {
rotateNodeLabel(node2, circularRotateLabel, cx, cy)
})
this._firstRender = false
}
GraphView2.prototype.dispose = function () {
this._controller && this._controller.dispose()
this._controllerHost = null
}
GraphView2.prototype._startForceLayoutIteration = function (
forceLayout2,
layoutAnimation
) {
var self2 = this
;(function step() {
forceLayout2.step(function (stopped) {
self2.updateLayout(self2._model)
;(self2._layouting = !stopped) &&
(layoutAnimation
? (self2._layoutTimeout = setTimeout(step, 16))
: step())
})
})()
}
GraphView2.prototype._updateController = function (
seriesModel,
ecModel,
api
) {
var _this = this
var controller = this._controller
var controllerHost = this._controllerHost
var group = this.group
controller.setPointerChecker(function (e2, x2, y2) {
var rect = group.getBoundingRect()
rect.applyTransform(group.transform)
return rect.contain(x2, y2) && !onIrrelevantElement(e2, api, seriesModel)
})
if (!isViewCoordSys(seriesModel.coordinateSystem)) {
controller.disable()
return
}
controller.enable(seriesModel.get('roam'))
controllerHost.zoomLimit = seriesModel.get('scaleLimit')
controllerHost.zoom = seriesModel.coordinateSystem.getZoom()
controller
.off('pan')
.off('zoom')
.on('pan', function (e2) {
updateViewOnPan(controllerHost, e2.dx, e2.dy)
api.dispatchAction({
seriesId: seriesModel.id,
type: 'graphRoam',
dx: e2.dx,
dy: e2.dy,
})
})
.on('zoom', function (e2) {
updateViewOnZoom(controllerHost, e2.scale, e2.originX, e2.originY)
api.dispatchAction({
seriesId: seriesModel.id,
type: 'graphRoam',
zoom: e2.scale,
originX: e2.originX,
originY: e2.originY,
})
_this._updateNodeAndLinkScale()
adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel))
_this._lineDraw.updateLayout()
api.updateLabelLayout()
})
}
GraphView2.prototype._updateNodeAndLinkScale = function () {
var seriesModel = this._model
var data2 = seriesModel.getData()
var nodeScale = getNodeGlobalScale(seriesModel)
data2.eachItemGraphicEl(function (el2, idx) {
el2 && el2.setSymbolScale(nodeScale)
})
}
GraphView2.prototype.updateLayout = function (seriesModel) {
adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel))
this._symbolDraw.updateLayout()
this._lineDraw.updateLayout()
}
GraphView2.prototype.remove = function (ecModel, api) {
this._symbolDraw && this._symbolDraw.remove()
this._lineDraw && this._lineDraw.remove()
}
GraphView2.type = 'graph'
return GraphView2
})(ChartView$1)
var GraphView$1 = GraphView
function generateNodeKey(id2) {
return '_EC_' + id2
}
var Graph = (function () {
function Graph2(directed) {
this.type = 'graph'
this.nodes = []
this.edges = []
this._nodesMap = {}
this._edgesMap = {}
this._directed = directed || false
}
Graph2.prototype.isDirected = function () {
return this._directed
}
Graph2.prototype.addNode = function (id2, dataIndex) {
id2 = id2 == null ? '' + dataIndex : '' + id2
var nodesMap = this._nodesMap
if (nodesMap[generateNodeKey(id2)]) {
return
}
var node2 = new GraphNode(id2, dataIndex)
node2.hostGraph = this
this.nodes.push(node2)
nodesMap[generateNodeKey(id2)] = node2
return node2
}
Graph2.prototype.getNodeByIndex = function (dataIndex) {
var rawIdx = this.data.getRawIndex(dataIndex)
return this.nodes[rawIdx]
}
Graph2.prototype.getNodeById = function (id2) {
return this._nodesMap[generateNodeKey(id2)]
}
Graph2.prototype.addEdge = function (n1, n2, dataIndex) {
var nodesMap = this._nodesMap
var edgesMap = this._edgesMap
if (isNumber$2(n1)) {
n1 = this.nodes[n1]
}
if (isNumber$2(n2)) {
n2 = this.nodes[n2]
}
if (!(n1 instanceof GraphNode)) {
n1 = nodesMap[generateNodeKey(n1)]
}
if (!(n2 instanceof GraphNode)) {
n2 = nodesMap[generateNodeKey(n2)]
}
if (!n1 || !n2) {
return
}
var key2 = n1.id + '-' + n2.id
var edge = new GraphEdge(n1, n2, dataIndex)
edge.hostGraph = this
if (this._directed) {
n1.outEdges.push(edge)
n2.inEdges.push(edge)
}
n1.edges.push(edge)
if (n1 !== n2) {
n2.edges.push(edge)
}
this.edges.push(edge)
edgesMap[key2] = edge
return edge
}
Graph2.prototype.getEdgeByIndex = function (dataIndex) {
var rawIdx = this.edgeData.getRawIndex(dataIndex)
return this.edges[rawIdx]
}
Graph2.prototype.getEdge = function (n1, n2) {
if (n1 instanceof GraphNode) {
n1 = n1.id
}
if (n2 instanceof GraphNode) {
n2 = n2.id
}
var edgesMap = this._edgesMap
if (this._directed) {
return edgesMap[n1 + '-' + n2]
} else {
return edgesMap[n1 + '-' + n2] || edgesMap[n2 + '-' + n1]
}
}
Graph2.prototype.eachNode = function (cb, context2) {
var nodes = this.nodes
var len2 = nodes.length
for (var i2 = 0; i2 < len2; i2++) {
if (nodes[i2].dataIndex >= 0) {
cb.call(context2, nodes[i2], i2)
}
}
}
Graph2.prototype.eachEdge = function (cb, context2) {
var edges = this.edges
var len2 = edges.length
for (var i2 = 0; i2 < len2; i2++) {
if (
edges[i2].dataIndex >= 0 &&
edges[i2].node1.dataIndex >= 0 &&
edges[i2].node2.dataIndex >= 0
) {
cb.call(context2, edges[i2], i2)
}
}
}
Graph2.prototype.breadthFirstTraverse = function (
cb,
startNode,
direction2,
context2
) {
if (!(startNode instanceof GraphNode)) {
startNode = this._nodesMap[generateNodeKey(startNode)]
}
if (!startNode) {
return
}
var edgeType =
direction2 === 'out'
? 'outEdges'
: direction2 === 'in'
? 'inEdges'
: 'edges'
for (var i2 = 0; i2 < this.nodes.length; i2++) {
this.nodes[i2].__visited = false
}
if (cb.call(context2, startNode, null)) {
return
}
var queue2 = [startNode]
while (queue2.length) {
var currentNode = queue2.shift()
var edges = currentNode[edgeType]
for (var i2 = 0; i2 < edges.length; i2++) {
var e2 = edges[i2]
var otherNode = e2.node1 === currentNode ? e2.node2 : e2.node1
if (!otherNode.__visited) {
if (cb.call(context2, otherNode, currentNode)) {
return
}
queue2.push(otherNode)
otherNode.__visited = true
}
}
}
}
Graph2.prototype.update = function () {
var data2 = this.data
var edgeData = this.edgeData
var nodes = this.nodes
var edges = this.edges
for (var i2 = 0, len2 = nodes.length; i2 < len2; i2++) {
nodes[i2].dataIndex = -1
}
for (var i2 = 0, len2 = data2.count(); i2 < len2; i2++) {
nodes[data2.getRawIndex(i2)].dataIndex = i2
}
edgeData.filterSelf(function (idx) {
var edge = edges[edgeData.getRawIndex(idx)]
return edge.node1.dataIndex >= 0 && edge.node2.dataIndex >= 0
})
for (var i2 = 0, len2 = edges.length; i2 < len2; i2++) {
edges[i2].dataIndex = -1
}
for (var i2 = 0, len2 = edgeData.count(); i2 < len2; i2++) {
edges[edgeData.getRawIndex(i2)].dataIndex = i2
}
}
Graph2.prototype.clone = function () {
var graph = new Graph2(this._directed)
var nodes = this.nodes
var edges = this.edges
for (var i2 = 0; i2 < nodes.length; i2++) {
graph.addNode(nodes[i2].id, nodes[i2].dataIndex)
}
for (var i2 = 0; i2 < edges.length; i2++) {
var e2 = edges[i2]
graph.addEdge(e2.node1.id, e2.node2.id, e2.dataIndex)
}
return graph
}
return Graph2
})()
var GraphNode = (function () {
function GraphNode2(id2, dataIndex) {
this.inEdges = []
this.outEdges = []
this.edges = []
this.dataIndex = -1
this.id = id2 == null ? '' : id2
this.dataIndex = dataIndex == null ? -1 : dataIndex
}
GraphNode2.prototype.degree = function () {
return this.edges.length
}
GraphNode2.prototype.inDegree = function () {
return this.inEdges.length
}
GraphNode2.prototype.outDegree = function () {
return this.outEdges.length
}
GraphNode2.prototype.getModel = function (path) {
if (this.dataIndex < 0) {
return
}
var graph = this.hostGraph
var itemModel = graph.data.getItemModel(this.dataIndex)
return itemModel.getModel(path)
}
GraphNode2.prototype.getAdjacentDataIndices = function () {
var dataIndices = {
edge: [],
node: [],
}
for (var i2 = 0; i2 < this.edges.length; i2++) {
var adjacentEdge = this.edges[i2]
if (adjacentEdge.dataIndex < 0) {
continue
}
dataIndices.edge.push(adjacentEdge.dataIndex)
dataIndices.node.push(
adjacentEdge.node1.dataIndex,
adjacentEdge.node2.dataIndex
)
}
return dataIndices
}
GraphNode2.prototype.getTrajectoryDataIndices = function () {
var connectedEdgesMap = createHashMap()
var connectedNodesMap = createHashMap()
for (var i2 = 0; i2 < this.edges.length; i2++) {
var adjacentEdge = this.edges[i2]
if (adjacentEdge.dataIndex < 0) {
continue
}
connectedEdgesMap.set(adjacentEdge.dataIndex, true)
var sourceNodesQueue = [adjacentEdge.node1]
var targetNodesQueue = [adjacentEdge.node2]
var nodeIteratorIndex = 0
while (nodeIteratorIndex < sourceNodesQueue.length) {
var sourceNode = sourceNodesQueue[nodeIteratorIndex]
nodeIteratorIndex++
connectedNodesMap.set(sourceNode.dataIndex, true)
for (var j2 = 0; j2 < sourceNode.inEdges.length; j2++) {
connectedEdgesMap.set(sourceNode.inEdges[j2].dataIndex, true)
sourceNodesQueue.push(sourceNode.inEdges[j2].node1)
}
}
nodeIteratorIndex = 0
while (nodeIteratorIndex < targetNodesQueue.length) {
var targetNode = targetNodesQueue[nodeIteratorIndex]
nodeIteratorIndex++
connectedNodesMap.set(targetNode.dataIndex, true)
for (var j2 = 0; j2 < targetNode.outEdges.length; j2++) {
connectedEdgesMap.set(targetNode.outEdges[j2].dataIndex, true)
targetNodesQueue.push(targetNode.outEdges[j2].node2)
}
}
}
return {
edge: connectedEdgesMap.keys(),
node: connectedNodesMap.keys(),
}
}
return GraphNode2
})()
var GraphEdge = (function () {
function GraphEdge2(n1, n2, dataIndex) {
this.dataIndex = -1
this.node1 = n1
this.node2 = n2
this.dataIndex = dataIndex == null ? -1 : dataIndex
}
GraphEdge2.prototype.getModel = function (path) {
if (this.dataIndex < 0) {
return
}
var graph = this.hostGraph
var itemModel = graph.edgeData.getItemModel(this.dataIndex)
return itemModel.getModel(path)
}
GraphEdge2.prototype.getAdjacentDataIndices = function () {
return {
edge: [this.dataIndex],
node: [this.node1.dataIndex, this.node2.dataIndex],
}
}
GraphEdge2.prototype.getTrajectoryDataIndices = function () {
var connectedEdgesMap = createHashMap()
var connectedNodesMap = createHashMap()
connectedEdgesMap.set(this.dataIndex, true)
var sourceNodes = [this.node1]
var targetNodes = [this.node2]
var nodeIteratorIndex = 0
while (nodeIteratorIndex < sourceNodes.length) {
var sourceNode = sourceNodes[nodeIteratorIndex]
nodeIteratorIndex++
connectedNodesMap.set(sourceNode.dataIndex, true)
for (var j2 = 0; j2 < sourceNode.inEdges.length; j2++) {
connectedEdgesMap.set(sourceNode.inEdges[j2].dataIndex, true)
sourceNodes.push(sourceNode.inEdges[j2].node1)
}
}
nodeIteratorIndex = 0
while (nodeIteratorIndex < targetNodes.length) {
var targetNode = targetNodes[nodeIteratorIndex]
nodeIteratorIndex++
connectedNodesMap.set(targetNode.dataIndex, true)
for (var j2 = 0; j2 < targetNode.outEdges.length; j2++) {
connectedEdgesMap.set(targetNode.outEdges[j2].dataIndex, true)
targetNodes.push(targetNode.outEdges[j2].node2)
}
}
return {
edge: connectedEdgesMap.keys(),
node: connectedNodesMap.keys(),
}
}
return GraphEdge2
})()
function createGraphDataProxyMixin(hostName, dataName) {
return {
getValue: function (dimension) {
var data2 = this[hostName][dataName]
return data2
.getStore()
.get(data2.getDimensionIndex(dimension || 'value'), this.dataIndex)
},
setVisual: function (key2, value2) {
this.dataIndex >= 0 &&
this[hostName][dataName].setItemVisual(this.dataIndex, key2, value2)
},
getVisual: function (key2) {
return this[hostName][dataName].getItemVisual(this.dataIndex, key2)
},
setLayout: function (layout2, merge2) {
this.dataIndex >= 0 &&
this[hostName][dataName].setItemLayout(this.dataIndex, layout2, merge2)
},
getLayout: function () {
return this[hostName][dataName].getItemLayout(this.dataIndex)
},
getGraphicEl: function () {
return this[hostName][dataName].getItemGraphicEl(this.dataIndex)
},
getRawIndex: function () {
return this[hostName][dataName].getRawIndex(this.dataIndex)
},
}
}
mixin(GraphNode, createGraphDataProxyMixin('hostGraph', 'data'))
mixin(GraphEdge, createGraphDataProxyMixin('hostGraph', 'edgeData'))
var Graph$1 = Graph
function createGraphFromNodeEdge(
nodes,
edges,
seriesModel,
directed,
beforeLink
) {
var graph = new Graph$1(directed)
for (var i2 = 0; i2 < nodes.length; i2++) {
graph.addNode(retrieve(nodes[i2].id, nodes[i2].name, i2), i2)
}
var linkNameList = []
var validEdges = []
var linkCount = 0
for (var i2 = 0; i2 < edges.length; i2++) {
var link2 = edges[i2]
var source2 = link2.source
var target2 = link2.target
if (graph.addEdge(source2, target2, linkCount)) {
validEdges.push(link2)
linkNameList.push(
retrieve(convertOptionIdName(link2.id, null), source2 + ' > ' + target2)
)
linkCount++
}
}
var coordSys = seriesModel.get('coordinateSystem')
var nodeData
if (coordSys === 'cartesian2d' || coordSys === 'polar') {
nodeData = createSeriesData(nodes, seriesModel)
} else {
var coordSysCtor = CoordinateSystem.get(coordSys)
var coordDimensions = coordSysCtor ? coordSysCtor.dimensions || [] : []
if (indexOf(coordDimensions, 'value') < 0) {
coordDimensions.concat(['value'])
}
var dimensions = prepareSeriesDataSchema(nodes, {
coordDimensions,
encodeDefine: seriesModel.getEncode(),
}).dimensions
nodeData = new SeriesData$1(dimensions, seriesModel)
nodeData.initData(nodes)
}
var edgeData = new SeriesData$1(['value'], seriesModel)
edgeData.initData(validEdges, linkNameList)
beforeLink && beforeLink(nodeData, edgeData)
linkSeriesData({
mainData: nodeData,
struct: graph,
structAttr: 'graph',
datas: {
node: nodeData,
edge: edgeData,
},
datasAttr: {
node: 'data',
edge: 'edgeData',
},
})
graph.update()
return graph
}
var GraphSeriesModel = (function (_super) {
__extends$2(GraphSeriesModel2, _super)
function GraphSeriesModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = GraphSeriesModel2.type
_this.hasSymbolVisual = true
return _this
}
GraphSeriesModel2.prototype.init = function (option2) {
_super.prototype.init.apply(this, arguments)
var self2 = this
function getCategoriesData() {
return self2._categoriesData
}
this.legendVisualProvider = new LegendVisualProvider$1(
getCategoriesData,
getCategoriesData
)
this.fillDataTextStyle(option2.edges || option2.links)
this._updateCategoriesData()
}
GraphSeriesModel2.prototype.mergeOption = function (option2) {
_super.prototype.mergeOption.apply(this, arguments)
this.fillDataTextStyle(option2.edges || option2.links)
this._updateCategoriesData()
}
GraphSeriesModel2.prototype.mergeDefaultAndTheme = function (option2) {
_super.prototype.mergeDefaultAndTheme.apply(this, arguments)
defaultEmphasis(option2, 'edgeLabel', ['show'])
}
GraphSeriesModel2.prototype.getInitialData = function (option2, ecModel) {
var edges = option2.edges || option2.links || []
var nodes = option2.data || option2.nodes || []
var self2 = this
if (nodes && edges) {
initCurvenessList(this)
var graph = createGraphFromNodeEdge(nodes, edges, this, true, beforeLink)
each$f(
graph.edges,
function (edge) {
createEdgeMapForCurveness(
edge.node1,
edge.node2,
this,
edge.dataIndex
)
},
this
)
return graph.data
}
function beforeLink(nodeData, edgeData) {
nodeData.wrapMethod('getItemModel', function (model) {
var categoriesModels = self2._categoriesModels
var categoryIdx = model.getShallow('category')
var categoryModel = categoriesModels[categoryIdx]
if (categoryModel) {
categoryModel.parentModel = model.parentModel
model.parentModel = categoryModel
}
return model
})
var oldGetModel = Model$1.prototype.getModel
function newGetModel(path, parentModel) {
var model = oldGetModel.call(this, path, parentModel)
model.resolveParentPath = resolveParentPath
return model
}
edgeData.wrapMethod('getItemModel', function (model) {
model.resolveParentPath = resolveParentPath
model.getModel = newGetModel
return model
})
function resolveParentPath(pathArr) {
if (pathArr && (pathArr[0] === 'label' || pathArr[1] === 'label')) {
var newPathArr = pathArr.slice()
if (pathArr[0] === 'label') {
newPathArr[0] = 'edgeLabel'
} else if (pathArr[1] === 'label') {
newPathArr[1] = 'edgeLabel'
}
return newPathArr
}
return pathArr
}
}
}
GraphSeriesModel2.prototype.getGraph = function () {
return this.getData().graph
}
GraphSeriesModel2.prototype.getEdgeData = function () {
return this.getGraph().edgeData
}
GraphSeriesModel2.prototype.getCategoriesData = function () {
return this._categoriesData
}
GraphSeriesModel2.prototype.formatTooltip = function (
dataIndex,
multipleSeries,
dataType2
) {
if (dataType2 === 'edge') {
var nodeData = this.getData()
var params2 = this.getDataParams(dataIndex, dataType2)
var edge = nodeData.graph.getEdgeByIndex(dataIndex)
var sourceName = nodeData.getName(edge.node1.dataIndex)
var targetName = nodeData.getName(edge.node2.dataIndex)
var nameArr = []
sourceName != null && nameArr.push(sourceName)
targetName != null && nameArr.push(targetName)
return createTooltipMarkup('nameValue', {
name: nameArr.join(' > '),
value: params2.value,
noValue: params2.value == null,
})
}
var nodeMarkup = defaultSeriesFormatTooltip({
series: this,
dataIndex,
multipleSeries,
})
return nodeMarkup
}
GraphSeriesModel2.prototype._updateCategoriesData = function () {
var categories = map$1(this.option.categories || [], function (category) {
return category.value != null
? category
: extend(
{
value: 0,
},
category
)
})
var categoriesData = new SeriesData$1(['value'], this)
categoriesData.initData(categories)
this._categoriesData = categoriesData
this._categoriesModels = categoriesData.mapArray(function (idx) {
return categoriesData.getItemModel(idx)
})
}
GraphSeriesModel2.prototype.setZoom = function (zoom) {
this.option.zoom = zoom
}
GraphSeriesModel2.prototype.setCenter = function (center2) {
this.option.center = center2
}
GraphSeriesModel2.prototype.isAnimationEnabled = function () {
return (
_super.prototype.isAnimationEnabled.call(this) &&
!(
this.get('layout') === 'force' && this.get(['force', 'layoutAnimation'])
)
)
}
GraphSeriesModel2.type = 'series.graph'
GraphSeriesModel2.dependencies = [
'grid',
'polar',
'geo',
'singleAxis',
'calendar',
]
GraphSeriesModel2.defaultOption = {
z: 2,
coordinateSystem: 'view',
legendHoverLink: true,
layout: null,
circular: {
rotateLabel: false,
},
force: {
initLayout: null,
repulsion: [0, 50],
gravity: 0.1,
friction: 0.6,
edgeLength: 30,
layoutAnimation: true,
},
left: 'center',
top: 'center',
symbol: 'circle',
symbolSize: 10,
edgeSymbol: ['none', 'none'],
edgeSymbolSize: 10,
edgeLabel: {
position: 'middle',
distance: 5,
},
draggable: false,
roam: false,
center: null,
zoom: 1,
nodeScaleRatio: 0.6,
label: {
show: false,
formatter: '{b}',
},
itemStyle: {},
lineStyle: {
color: '#aaa',
width: 1,
opacity: 0.5,
},
emphasis: {
scale: true,
label: {
show: true,
},
},
select: {
itemStyle: {
borderColor: '#212121',
},
},
}
return GraphSeriesModel2
})(SeriesModel$1)
var GraphSeriesModel$1 = GraphSeriesModel
var actionInfo$1 = {
type: 'graphRoam',
event: 'graphRoam',
update: 'none',
}
function install$H(registers) {
registers.registerChartView(GraphView$1)
registers.registerSeriesModel(GraphSeriesModel$1)
registers.registerProcessor(categoryFilter)
registers.registerVisual(categoryVisual)
registers.registerVisual(graphEdgeVisual)
registers.registerLayout(graphSimpleLayout)
registers.registerLayout(
registers.PRIORITY.VISUAL.POST_CHART_LAYOUT,
graphCircularLayout
)
registers.registerLayout(graphForceLayout)
registers.registerCoordinateSystem('graphView', {
dimensions: View$1.dimensions,
create: createViewCoordSys,
})
registers.registerAction(
{
type: 'focusNodeAdjacency',
event: 'focusNodeAdjacency',
update: 'series:focusNodeAdjacency',
},
noop
)
registers.registerAction(
{
type: 'unfocusNodeAdjacency',
event: 'unfocusNodeAdjacency',
update: 'series:unfocusNodeAdjacency',
},
noop
)
registers.registerAction(actionInfo$1, function (payload, ecModel, api) {
ecModel.eachComponent(
{
mainType: 'series',
query: payload,
},
function (seriesModel) {
var coordSys = seriesModel.coordinateSystem
var res = updateCenterAndZoom(coordSys, payload, void 0, api)
seriesModel.setCenter && seriesModel.setCenter(res.center)
seriesModel.setZoom && seriesModel.setZoom(res.zoom)
}
)
})
}
var PointerShape = (function () {
function PointerShape2() {
this.angle = 0
this.width = 10
this.r = 10
this.x = 0
this.y = 0
}
return PointerShape2
})()
var PointerPath = (function (_super) {
__extends$2(PointerPath2, _super)
function PointerPath2(opts) {
var _this = _super.call(this, opts) || this
_this.type = 'pointer'
return _this
}
PointerPath2.prototype.getDefaultShape = function () {
return new PointerShape()
}
PointerPath2.prototype.buildPath = function (ctx, shape) {
var mathCos2 = Math.cos
var mathSin2 = Math.sin
var r2 = shape.r
var width = shape.width
var angle2 = shape.angle
var x2 = shape.x - mathCos2(angle2) * width * (width >= r2 / 3 ? 1 : 2)
var y2 = shape.y - mathSin2(angle2) * width * (width >= r2 / 3 ? 1 : 2)
angle2 = shape.angle - Math.PI / 2
ctx.moveTo(x2, y2)
ctx.lineTo(
shape.x + mathCos2(angle2) * width,
shape.y + mathSin2(angle2) * width
)
ctx.lineTo(
shape.x + mathCos2(shape.angle) * r2,
shape.y + mathSin2(shape.angle) * r2
)
ctx.lineTo(
shape.x - mathCos2(angle2) * width,
shape.y - mathSin2(angle2) * width
)
ctx.lineTo(x2, y2)
}
return PointerPath2
})(Path$1)
var PointerPath$1 = PointerPath
function parsePosition(seriesModel, api) {
var center2 = seriesModel.get('center')
var width = api.getWidth()
var height = api.getHeight()
var size = Math.min(width, height)
var cx = parsePercent(center2[0], api.getWidth())
var cy = parsePercent(center2[1], api.getHeight())
var r2 = parsePercent(seriesModel.get('radius'), size / 2)
return {
cx,
cy,
r: r2,
}
}
function formatLabel(value2, labelFormatter) {
var label = value2 == null ? '' : value2 + ''
if (labelFormatter) {
if (isString$2(labelFormatter)) {
label = labelFormatter.replace('{value}', label)
} else if (isFunction$4(labelFormatter)) {
label = labelFormatter(value2)
}
}
return label
}
var GaugeView = (function (_super) {
__extends$2(GaugeView2, _super)
function GaugeView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = GaugeView2.type
return _this
}
GaugeView2.prototype.render = function (seriesModel, ecModel, api) {
this.group.removeAll()
var colorList2 = seriesModel.get(['axisLine', 'lineStyle', 'color'])
var posInfo = parsePosition(seriesModel, api)
this._renderMain(seriesModel, ecModel, api, colorList2, posInfo)
this._data = seriesModel.getData()
}
GaugeView2.prototype.dispose = function () {}
GaugeView2.prototype._renderMain = function (
seriesModel,
ecModel,
api,
colorList2,
posInfo
) {
var group = this.group
var clockwise = seriesModel.get('clockwise')
var startAngle = (-seriesModel.get('startAngle') / 180) * Math.PI
var endAngle = (-seriesModel.get('endAngle') / 180) * Math.PI
var axisLineModel = seriesModel.getModel('axisLine')
var roundCap = axisLineModel.get('roundCap')
var MainPath = roundCap ? Sausage : Sector$1
var showAxis = axisLineModel.get('show')
var lineStyleModel = axisLineModel.getModel('lineStyle')
var axisLineWidth = lineStyleModel.get('width')
var angles = [startAngle, endAngle]
normalizeArcAngles(angles, !clockwise)
startAngle = angles[0]
endAngle = angles[1]
var angleRangeSpan = endAngle - startAngle
var prevEndAngle = startAngle
var sectors = []
for (var i2 = 0; showAxis && i2 < colorList2.length; i2++) {
var percent = Math.min(Math.max(colorList2[i2][0], 0), 1)
endAngle = startAngle + angleRangeSpan * percent
var sector = new MainPath({
shape: {
startAngle: prevEndAngle,
endAngle,
cx: posInfo.cx,
cy: posInfo.cy,
clockwise,
r0: posInfo.r - axisLineWidth,
r: posInfo.r,
},
silent: true,
})
sector.setStyle({
fill: colorList2[i2][1],
})
sector.setStyle(lineStyleModel.getLineStyle(['color', 'width']))
sectors.push(sector)
prevEndAngle = endAngle
}
sectors.reverse()
each$f(sectors, function (sector2) {
return group.add(sector2)
})
var getColor = function (percent2) {
if (percent2 <= 0) {
return colorList2[0][1]
}
var i3
for (i3 = 0; i3 < colorList2.length; i3++) {
if (
colorList2[i3][0] >= percent2 &&
(i3 === 0 ? 0 : colorList2[i3 - 1][0]) < percent2
) {
return colorList2[i3][1]
}
}
return colorList2[i3 - 1][1]
}
this._renderTicks(
seriesModel,
ecModel,
api,
getColor,
posInfo,
startAngle,
endAngle,
clockwise,
axisLineWidth
)
this._renderTitleAndDetail(seriesModel, ecModel, api, getColor, posInfo)
this._renderAnchor(seriesModel, posInfo)
this._renderPointer(
seriesModel,
ecModel,
api,
getColor,
posInfo,
startAngle,
endAngle,
clockwise,
axisLineWidth
)
}
GaugeView2.prototype._renderTicks = function (
seriesModel,
ecModel,
api,
getColor,
posInfo,
startAngle,
endAngle,
clockwise,
axisLineWidth
) {
var group = this.group
var cx = posInfo.cx
var cy = posInfo.cy
var r2 = posInfo.r
var minVal = +seriesModel.get('min')
var maxVal = +seriesModel.get('max')
var splitLineModel = seriesModel.getModel('splitLine')
var tickModel = seriesModel.getModel('axisTick')
var labelModel = seriesModel.getModel('axisLabel')
var splitNumber = seriesModel.get('splitNumber')
var subSplitNumber = tickModel.get('splitNumber')
var splitLineLen = parsePercent(splitLineModel.get('length'), r2)
var tickLen = parsePercent(tickModel.get('length'), r2)
var angle2 = startAngle
var step = (endAngle - startAngle) / splitNumber
var subStep = step / subSplitNumber
var splitLineStyle = splitLineModel.getModel('lineStyle').getLineStyle()
var tickLineStyle = tickModel.getModel('lineStyle').getLineStyle()
var splitLineDistance = splitLineModel.get('distance')
var unitX
var unitY
for (var i2 = 0; i2 <= splitNumber; i2++) {
unitX = Math.cos(angle2)
unitY = Math.sin(angle2)
if (splitLineModel.get('show')) {
var distance2 = splitLineDistance
? splitLineDistance + axisLineWidth
: axisLineWidth
var splitLine = new Line$4({
shape: {
x1: unitX * (r2 - distance2) + cx,
y1: unitY * (r2 - distance2) + cy,
x2: unitX * (r2 - splitLineLen - distance2) + cx,
y2: unitY * (r2 - splitLineLen - distance2) + cy,
},
style: splitLineStyle,
silent: true,
})
if (splitLineStyle.stroke === 'auto') {
splitLine.setStyle({
stroke: getColor(i2 / splitNumber),
})
}
group.add(splitLine)
}
if (labelModel.get('show')) {
var distance2 = labelModel.get('distance') + splitLineDistance
var label = formatLabel(
round$3((i2 / splitNumber) * (maxVal - minVal) + minVal),
labelModel.get('formatter')
)
var autoColor = getColor(i2 / splitNumber)
var textStyleX = unitX * (r2 - splitLineLen - distance2) + cx
var textStyleY = unitY * (r2 - splitLineLen - distance2) + cy
var rotateType = labelModel.get('rotate')
var rotate2 = 0
if (rotateType === 'radial') {
rotate2 = -angle2 + 2 * Math.PI
if (rotate2 > Math.PI / 2) {
rotate2 += Math.PI
}
} else if (rotateType === 'tangential') {
rotate2 = -angle2 - Math.PI / 2
} else if (isNumber$2(rotateType)) {
rotate2 = (rotateType * Math.PI) / 180
}
if (rotate2 === 0) {
group.add(
new ZRText$1({
style: createTextStyle$1(
labelModel,
{
text: label,
x: textStyleX,
y: textStyleY,
verticalAlign:
unitY < -0.8 ? 'top' : unitY > 0.8 ? 'bottom' : 'middle',
align:
unitX < -0.4 ? 'left' : unitX > 0.4 ? 'right' : 'center',
},
{
inheritColor: autoColor,
}
),
silent: true,
})
)
} else {
group.add(
new ZRText$1({
style: createTextStyle$1(
labelModel,
{
text: label,
x: textStyleX,
y: textStyleY,
verticalAlign: 'middle',
align: 'center',
},
{
inheritColor: autoColor,
}
),
silent: true,
originX: textStyleX,
originY: textStyleY,
rotation: rotate2,
})
)
}
}
if (tickModel.get('show') && i2 !== splitNumber) {
var distance2 = tickModel.get('distance')
distance2 = distance2 ? distance2 + axisLineWidth : axisLineWidth
for (var j2 = 0; j2 <= subSplitNumber; j2++) {
unitX = Math.cos(angle2)
unitY = Math.sin(angle2)
var tickLine = new Line$4({
shape: {
x1: unitX * (r2 - distance2) + cx,
y1: unitY * (r2 - distance2) + cy,
x2: unitX * (r2 - tickLen - distance2) + cx,
y2: unitY * (r2 - tickLen - distance2) + cy,
},
silent: true,
style: tickLineStyle,
})
if (tickLineStyle.stroke === 'auto') {
tickLine.setStyle({
stroke: getColor((i2 + j2 / subSplitNumber) / splitNumber),
})
}
group.add(tickLine)
angle2 += subStep
}
angle2 -= subStep
} else {
angle2 += step
}
}
}
GaugeView2.prototype._renderPointer = function (
seriesModel,
ecModel,
api,
getColor,
posInfo,
startAngle,
endAngle,
clockwise,
axisLineWidth
) {
var group = this.group
var oldData = this._data
var oldProgressData = this._progressEls
var progressList = []
var showPointer2 = seriesModel.get(['pointer', 'show'])
var progressModel = seriesModel.getModel('progress')
var showProgress = progressModel.get('show')
var data2 = seriesModel.getData()
var valueDim = data2.mapDimension('value')
var minVal = +seriesModel.get('min')
var maxVal = +seriesModel.get('max')
var valueExtent = [minVal, maxVal]
var angleExtent = [startAngle, endAngle]
function createPointer(idx, angle2) {
var itemModel = data2.getItemModel(idx)
var pointerModel = itemModel.getModel('pointer')
var pointerWidth = parsePercent(pointerModel.get('width'), posInfo.r)
var pointerLength = parsePercent(pointerModel.get('length'), posInfo.r)
var pointerStr = seriesModel.get(['pointer', 'icon'])
var pointerOffset = pointerModel.get('offsetCenter')
var pointerOffsetX = parsePercent(pointerOffset[0], posInfo.r)
var pointerOffsetY = parsePercent(pointerOffset[1], posInfo.r)
var pointerKeepAspect = pointerModel.get('keepAspect')
var pointer2
if (pointerStr) {
pointer2 = createSymbol$1(
pointerStr,
pointerOffsetX - pointerWidth / 2,
pointerOffsetY - pointerLength,
pointerWidth,
pointerLength,
null,
pointerKeepAspect
)
} else {
pointer2 = new PointerPath$1({
shape: {
angle: -Math.PI / 2,
width: pointerWidth,
r: pointerLength,
x: pointerOffsetX,
y: pointerOffsetY,
},
})
}
pointer2.rotation = -(angle2 + Math.PI / 2)
pointer2.x = posInfo.cx
pointer2.y = posInfo.cy
return pointer2
}
function createProgress(idx, endAngle2) {
var roundCap = progressModel.get('roundCap')
var ProgressPath = roundCap ? Sausage : Sector$1
var isOverlap = progressModel.get('overlap')
var progressWidth = isOverlap
? progressModel.get('width')
: axisLineWidth / data2.count()
var r0 = isOverlap
? posInfo.r - progressWidth
: posInfo.r - (idx + 1) * progressWidth
var r2 = isOverlap ? posInfo.r : posInfo.r - idx * progressWidth
var progress = new ProgressPath({
shape: {
startAngle,
endAngle: endAngle2,
cx: posInfo.cx,
cy: posInfo.cy,
clockwise,
r0,
r: r2,
},
})
isOverlap && (progress.z2 = maxVal - (data2.get(valueDim, idx) % maxVal))
return progress
}
if (showProgress || showPointer2) {
data2
.diff(oldData)
.add(function (idx) {
var val2 = data2.get(valueDim, idx)
if (showPointer2) {
var pointer2 = createPointer(idx, startAngle)
initProps(
pointer2,
{
rotation: -(
(isNaN(+val2)
? angleExtent[0]
: linearMap$2(val2, valueExtent, angleExtent, true)) +
Math.PI / 2
),
},
seriesModel
)
group.add(pointer2)
data2.setItemGraphicEl(idx, pointer2)
}
if (showProgress) {
var progress = createProgress(idx, startAngle)
var isClip = progressModel.get('clip')
initProps(
progress,
{
shape: {
endAngle: linearMap$2(val2, valueExtent, angleExtent, isClip),
},
},
seriesModel
)
group.add(progress)
setCommonECData(
seriesModel.seriesIndex,
data2.dataType,
idx,
progress
)
progressList[idx] = progress
}
})
.update(function (newIdx, oldIdx) {
var val2 = data2.get(valueDim, newIdx)
if (showPointer2) {
var previousPointer = oldData.getItemGraphicEl(oldIdx)
var previousRotate = previousPointer
? previousPointer.rotation
: startAngle
var pointer2 = createPointer(newIdx, previousRotate)
pointer2.rotation = previousRotate
updateProps$1(
pointer2,
{
rotation: -(
(isNaN(+val2)
? angleExtent[0]
: linearMap$2(val2, valueExtent, angleExtent, true)) +
Math.PI / 2
),
},
seriesModel
)
group.add(pointer2)
data2.setItemGraphicEl(newIdx, pointer2)
}
if (showProgress) {
var previousProgress = oldProgressData[oldIdx]
var previousEndAngle = previousProgress
? previousProgress.shape.endAngle
: startAngle
var progress = createProgress(newIdx, previousEndAngle)
var isClip = progressModel.get('clip')
updateProps$1(
progress,
{
shape: {
endAngle: linearMap$2(val2, valueExtent, angleExtent, isClip),
},
},
seriesModel
)
group.add(progress)
setCommonECData(
seriesModel.seriesIndex,
data2.dataType,
newIdx,
progress
)
progressList[newIdx] = progress
}
})
.execute()
data2.each(function (idx) {
var itemModel = data2.getItemModel(idx)
var emphasisModel = itemModel.getModel('emphasis')
var focus2 = emphasisModel.get('focus')
var blurScope = emphasisModel.get('blurScope')
var emphasisDisabled = emphasisModel.get('disabled')
if (showPointer2) {
var pointer2 = data2.getItemGraphicEl(idx)
var symbolStyle = data2.getItemVisual(idx, 'style')
var visualColor = symbolStyle.fill
if (pointer2 instanceof ZRImage$1) {
var pathStyle = pointer2.style
pointer2.useStyle(
extend(
{
image: pathStyle.image,
x: pathStyle.x,
y: pathStyle.y,
width: pathStyle.width,
height: pathStyle.height,
},
symbolStyle
)
)
} else {
pointer2.useStyle(symbolStyle)
pointer2.type !== 'pointer' && pointer2.setColor(visualColor)
}
pointer2.setStyle(
itemModel.getModel(['pointer', 'itemStyle']).getItemStyle()
)
if (pointer2.style.fill === 'auto') {
pointer2.setStyle(
'fill',
getColor(
linearMap$2(data2.get(valueDim, idx), valueExtent, [0, 1], true)
)
)
}
pointer2.z2EmphasisLift = 0
setStatesStylesFromModel(pointer2, itemModel)
toggleHoverEmphasis(pointer2, focus2, blurScope, emphasisDisabled)
}
if (showProgress) {
var progress = progressList[idx]
progress.useStyle(data2.getItemVisual(idx, 'style'))
progress.setStyle(
itemModel.getModel(['progress', 'itemStyle']).getItemStyle()
)
progress.z2EmphasisLift = 0
setStatesStylesFromModel(progress, itemModel)
toggleHoverEmphasis(progress, focus2, blurScope, emphasisDisabled)
}
})
this._progressEls = progressList
}
}
GaugeView2.prototype._renderAnchor = function (seriesModel, posInfo) {
var anchorModel = seriesModel.getModel('anchor')
var showAnchor = anchorModel.get('show')
if (showAnchor) {
var anchorSize = anchorModel.get('size')
var anchorType = anchorModel.get('icon')
var offsetCenter = anchorModel.get('offsetCenter')
var anchorKeepAspect = anchorModel.get('keepAspect')
var anchor = createSymbol$1(
anchorType,
posInfo.cx - anchorSize / 2 + parsePercent(offsetCenter[0], posInfo.r),
posInfo.cy - anchorSize / 2 + parsePercent(offsetCenter[1], posInfo.r),
anchorSize,
anchorSize,
null,
anchorKeepAspect
)
anchor.z2 = anchorModel.get('showAbove') ? 1 : 0
anchor.setStyle(anchorModel.getModel('itemStyle').getItemStyle())
this.group.add(anchor)
}
}
GaugeView2.prototype._renderTitleAndDetail = function (
seriesModel,
ecModel,
api,
getColor,
posInfo
) {
var _this = this
var data2 = seriesModel.getData()
var valueDim = data2.mapDimension('value')
var minVal = +seriesModel.get('min')
var maxVal = +seriesModel.get('max')
var contentGroup = new Group$5()
var newTitleEls = []
var newDetailEls = []
var hasAnimation = seriesModel.isAnimationEnabled()
var showPointerAbove = seriesModel.get(['pointer', 'showAbove'])
data2
.diff(this._data)
.add(function (idx) {
newTitleEls[idx] = new ZRText$1({
silent: true,
})
newDetailEls[idx] = new ZRText$1({
silent: true,
})
})
.update(function (idx, oldIdx) {
newTitleEls[idx] = _this._titleEls[oldIdx]
newDetailEls[idx] = _this._detailEls[oldIdx]
})
.execute()
data2.each(function (idx) {
var itemModel = data2.getItemModel(idx)
var value2 = data2.get(valueDim, idx)
var itemGroup = new Group$5()
var autoColor = getColor(
linearMap$2(value2, [minVal, maxVal], [0, 1], true)
)
var itemTitleModel = itemModel.getModel('title')
if (itemTitleModel.get('show')) {
var titleOffsetCenter = itemTitleModel.get('offsetCenter')
var titleX = posInfo.cx + parsePercent(titleOffsetCenter[0], posInfo.r)
var titleY = posInfo.cy + parsePercent(titleOffsetCenter[1], posInfo.r)
var labelEl = newTitleEls[idx]
labelEl.attr({
z2: showPointerAbove ? 0 : 2,
style: createTextStyle$1(
itemTitleModel,
{
x: titleX,
y: titleY,
text: data2.getName(idx),
align: 'center',
verticalAlign: 'middle',
},
{
inheritColor: autoColor,
}
),
})
itemGroup.add(labelEl)
}
var itemDetailModel = itemModel.getModel('detail')
if (itemDetailModel.get('show')) {
var detailOffsetCenter = itemDetailModel.get('offsetCenter')
var detailX =
posInfo.cx + parsePercent(detailOffsetCenter[0], posInfo.r)
var detailY =
posInfo.cy + parsePercent(detailOffsetCenter[1], posInfo.r)
var width = parsePercent(itemDetailModel.get('width'), posInfo.r)
var height = parsePercent(itemDetailModel.get('height'), posInfo.r)
var detailColor = seriesModel.get(['progress', 'show'])
? data2.getItemVisual(idx, 'style').fill
: autoColor
var labelEl = newDetailEls[idx]
var formatter_1 = itemDetailModel.get('formatter')
labelEl.attr({
z2: showPointerAbove ? 0 : 2,
style: createTextStyle$1(
itemDetailModel,
{
x: detailX,
y: detailY,
text: formatLabel(value2, formatter_1),
width: isNaN(width) ? null : width,
height: isNaN(height) ? null : height,
align: 'center',
verticalAlign: 'middle',
},
{
inheritColor: detailColor,
}
),
})
setLabelValueAnimation(
labelEl,
{
normal: itemDetailModel,
},
value2,
function (value3) {
return formatLabel(value3, formatter_1)
}
)
hasAnimation &&
animateLabelValue(labelEl, idx, data2, seriesModel, {
getFormattedLabel: function (
labelDataIndex,
status,
dataType2,
labelDimIndex,
fmt,
extendParams
) {
return formatLabel(
extendParams ? extendParams.interpolatedValue : value2,
formatter_1
)
},
})
itemGroup.add(labelEl)
}
contentGroup.add(itemGroup)
})
this.group.add(contentGroup)
this._titleEls = newTitleEls
this._detailEls = newDetailEls
}
GaugeView2.type = 'gauge'
return GaugeView2
})(ChartView$1)
var GaugeView$1 = GaugeView
var GaugeSeriesModel = (function (_super) {
__extends$2(GaugeSeriesModel2, _super)
function GaugeSeriesModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = GaugeSeriesModel2.type
_this.visualStyleAccessPath = 'itemStyle'
return _this
}
GaugeSeriesModel2.prototype.getInitialData = function (option2, ecModel) {
return createSeriesDataSimply(this, ['value'])
}
GaugeSeriesModel2.type = 'series.gauge'
GaugeSeriesModel2.defaultOption = {
z: 2,
colorBy: 'data',
center: ['50%', '50%'],
legendHoverLink: true,
radius: '75%',
startAngle: 225,
endAngle: -45,
clockwise: true,
min: 0,
max: 100,
splitNumber: 10,
axisLine: {
show: true,
roundCap: false,
lineStyle: {
color: [[1, '#E6EBF8']],
width: 10,
},
},
progress: {
show: false,
overlap: true,
width: 10,
roundCap: false,
clip: true,
},
splitLine: {
show: true,
length: 10,
distance: 10,
lineStyle: {
color: '#63677A',
width: 3,
type: 'solid',
},
},
axisTick: {
show: true,
splitNumber: 5,
length: 6,
distance: 10,
lineStyle: {
color: '#63677A',
width: 1,
type: 'solid',
},
},
axisLabel: {
show: true,
distance: 15,
color: '#464646',
fontSize: 12,
rotate: 0,
},
pointer: {
icon: null,
offsetCenter: [0, 0],
show: true,
showAbove: true,
length: '60%',
width: 6,
keepAspect: false,
},
anchor: {
show: false,
showAbove: false,
size: 6,
icon: 'circle',
offsetCenter: [0, 0],
keepAspect: false,
itemStyle: {
color: '#fff',
borderWidth: 0,
borderColor: '#5470c6',
},
},
title: {
show: true,
offsetCenter: [0, '20%'],
color: '#464646',
fontSize: 16,
valueAnimation: false,
},
detail: {
show: true,
backgroundColor: 'rgba(0,0,0,0)',
borderWidth: 0,
borderColor: '#ccc',
width: 100,
height: null,
padding: [5, 10],
offsetCenter: [0, '40%'],
color: '#464646',
fontSize: 30,
fontWeight: 'bold',
lineHeight: 30,
valueAnimation: false,
},
}
return GaugeSeriesModel2
})(SeriesModel$1)
var GaugeSeriesModel$1 = GaugeSeriesModel
function install$G(registers) {
registers.registerChartView(GaugeView$1)
registers.registerSeriesModel(GaugeSeriesModel$1)
}
var opacityAccessPath$1 = ['itemStyle', 'opacity']
var FunnelPiece = (function (_super) {
__extends$2(FunnelPiece2, _super)
function FunnelPiece2(data2, idx) {
var _this = _super.call(this) || this
var polygon = _this
var labelLine = new Polyline$3()
var text2 = new ZRText$1()
polygon.setTextContent(text2)
_this.setTextGuideLine(labelLine)
_this.updateData(data2, idx, true)
return _this
}
FunnelPiece2.prototype.updateData = function (data2, idx, firstCreate) {
var polygon = this
var seriesModel = data2.hostModel
var itemModel = data2.getItemModel(idx)
var layout2 = data2.getItemLayout(idx)
var emphasisModel = itemModel.getModel('emphasis')
var opacity2 = itemModel.get(opacityAccessPath$1)
opacity2 = opacity2 == null ? 1 : opacity2
if (!firstCreate) {
saveOldStyle(polygon)
}
polygon.useStyle(data2.getItemVisual(idx, 'style'))
polygon.style.lineJoin = 'round'
if (firstCreate) {
polygon.setShape({
points: layout2.points,
})
polygon.style.opacity = 0
initProps(
polygon,
{
style: {
opacity: opacity2,
},
},
seriesModel,
idx
)
} else {
updateProps$1(
polygon,
{
style: {
opacity: opacity2,
},
shape: {
points: layout2.points,
},
},
seriesModel,
idx
)
}
setStatesStylesFromModel(polygon, itemModel)
this._updateLabel(data2, idx)
toggleHoverEmphasis(
this,
emphasisModel.get('focus'),
emphasisModel.get('blurScope'),
emphasisModel.get('disabled')
)
}
FunnelPiece2.prototype._updateLabel = function (data2, idx) {
var polygon = this
var labelLine = this.getTextGuideLine()
var labelText = polygon.getTextContent()
var seriesModel = data2.hostModel
var itemModel = data2.getItemModel(idx)
var layout2 = data2.getItemLayout(idx)
var labelLayout2 = layout2.label
var style2 = data2.getItemVisual(idx, 'style')
var visualColor = style2.fill
setLabelStyle(
labelText,
getLabelStatesModels(itemModel),
{
labelFetcher: data2.hostModel,
labelDataIndex: idx,
defaultOpacity: style2.opacity,
defaultText: data2.getName(idx),
},
{
normal: {
align: labelLayout2.textAlign,
verticalAlign: labelLayout2.verticalAlign,
},
}
)
polygon.setTextConfig({
local: true,
inside: !!labelLayout2.inside,
insideStroke: visualColor,
outsideFill: visualColor,
})
var linePoints = labelLayout2.linePoints
labelLine.setShape({
points: linePoints,
})
polygon.textGuideLineConfig = {
anchor: linePoints
? new Point$1(linePoints[0][0], linePoints[0][1])
: null,
}
updateProps$1(
labelText,
{
style: {
x: labelLayout2.x,
y: labelLayout2.y,
},
},
seriesModel,
idx
)
labelText.attr({
rotation: labelLayout2.rotation,
originX: labelLayout2.x,
originY: labelLayout2.y,
z2: 10,
})
setLabelLineStyle(polygon, getLabelLineStatesModels(itemModel), {
stroke: visualColor,
})
}
return FunnelPiece2
})(Polygon$1)
var FunnelView = (function (_super) {
__extends$2(FunnelView2, _super)
function FunnelView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = FunnelView2.type
_this.ignoreLabelLineUpdate = true
return _this
}
FunnelView2.prototype.render = function (seriesModel, ecModel, api) {
var data2 = seriesModel.getData()
var oldData = this._data
var group = this.group
data2
.diff(oldData)
.add(function (idx) {
var funnelPiece = new FunnelPiece(data2, idx)
data2.setItemGraphicEl(idx, funnelPiece)
group.add(funnelPiece)
})
.update(function (newIdx, oldIdx) {
var piece = oldData.getItemGraphicEl(oldIdx)
piece.updateData(data2, newIdx)
group.add(piece)
data2.setItemGraphicEl(newIdx, piece)
})
.remove(function (idx) {
var piece = oldData.getItemGraphicEl(idx)
removeElementWithFadeOut(piece, seriesModel, idx)
})
.execute()
this._data = data2
}
FunnelView2.prototype.remove = function () {
this.group.removeAll()
this._data = null
}
FunnelView2.prototype.dispose = function () {}
FunnelView2.type = 'funnel'
return FunnelView2
})(ChartView$1)
var FunnelView$1 = FunnelView
var FunnelSeriesModel = (function (_super) {
__extends$2(FunnelSeriesModel2, _super)
function FunnelSeriesModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = FunnelSeriesModel2.type
return _this
}
FunnelSeriesModel2.prototype.init = function (option2) {
_super.prototype.init.apply(this, arguments)
this.legendVisualProvider = new LegendVisualProvider$1(
bind$1(this.getData, this),
bind$1(this.getRawData, this)
)
this._defaultLabelLine(option2)
}
FunnelSeriesModel2.prototype.getInitialData = function (option2, ecModel) {
return createSeriesDataSimply(this, {
coordDimensions: ['value'],
encodeDefaulter: curry$1(makeSeriesEncodeForNameBased, this),
})
}
FunnelSeriesModel2.prototype._defaultLabelLine = function (option2) {
defaultEmphasis(option2, 'labelLine', ['show'])
var labelLineNormalOpt = option2.labelLine
var labelLineEmphasisOpt = option2.emphasis.labelLine
labelLineNormalOpt.show = labelLineNormalOpt.show && option2.label.show
labelLineEmphasisOpt.show =
labelLineEmphasisOpt.show && option2.emphasis.label.show
}
FunnelSeriesModel2.prototype.getDataParams = function (dataIndex) {
var data2 = this.getData()
var params2 = _super.prototype.getDataParams.call(this, dataIndex)
var valueDim = data2.mapDimension('value')
var sum2 = data2.getSum(valueDim)
params2.percent = !sum2
? 0
: +((data2.get(valueDim, dataIndex) / sum2) * 100).toFixed(2)
params2.$vars.push('percent')
return params2
}
FunnelSeriesModel2.type = 'series.funnel'
FunnelSeriesModel2.defaultOption = {
z: 2,
legendHoverLink: true,
colorBy: 'data',
left: 80,
top: 60,
right: 80,
bottom: 60,
minSize: '0%',
maxSize: '100%',
sort: 'descending',
orient: 'vertical',
gap: 0,
funnelAlign: 'center',
label: {
show: true,
position: 'outer',
},
labelLine: {
show: true,
length: 20,
lineStyle: {
width: 1,
},
},
itemStyle: {
borderColor: '#fff',
borderWidth: 1,
},
emphasis: {
label: {
show: true,
},
},
select: {
itemStyle: {
borderColor: '#212121',
},
},
}
return FunnelSeriesModel2
})(SeriesModel$1)
var FunnelSeriesModel$1 = FunnelSeriesModel
function getViewRect$2(seriesModel, api) {
return getLayoutRect(seriesModel.getBoxLayoutParams(), {
width: api.getWidth(),
height: api.getHeight(),
})
}
function getSortedIndices(data2, sort3) {
var valueDim = data2.mapDimension('value')
var valueArr = data2.mapArray(valueDim, function (val2) {
return val2
})
var indices = []
var isAscending = sort3 === 'ascending'
for (var i2 = 0, len2 = data2.count(); i2 < len2; i2++) {
indices[i2] = i2
}
if (isFunction$4(sort3)) {
indices.sort(sort3)
} else if (sort3 !== 'none') {
indices.sort(function (a2, b2) {
return isAscending
? valueArr[a2] - valueArr[b2]
: valueArr[b2] - valueArr[a2]
})
}
return indices
}
function labelLayout(data2) {
var seriesModel = data2.hostModel
var orient = seriesModel.get('orient')
data2.each(function (idx) {
var itemModel = data2.getItemModel(idx)
var labelModel = itemModel.getModel('label')
var labelPosition = labelModel.get('position')
var labelLineModel = itemModel.getModel('labelLine')
var layout2 = data2.getItemLayout(idx)
var points2 = layout2.points
var isLabelInside =
labelPosition === 'inner' ||
labelPosition === 'inside' ||
labelPosition === 'center' ||
labelPosition === 'insideLeft' ||
labelPosition === 'insideRight'
var textAlign2
var textX
var textY
var linePoints
if (isLabelInside) {
if (labelPosition === 'insideLeft') {
textX = (points2[0][0] + points2[3][0]) / 2 + 5
textY = (points2[0][1] + points2[3][1]) / 2
textAlign2 = 'left'
} else if (labelPosition === 'insideRight') {
textX = (points2[1][0] + points2[2][0]) / 2 - 5
textY = (points2[1][1] + points2[2][1]) / 2
textAlign2 = 'right'
} else {
textX =
(points2[0][0] + points2[1][0] + points2[2][0] + points2[3][0]) / 4
textY =
(points2[0][1] + points2[1][1] + points2[2][1] + points2[3][1]) / 4
textAlign2 = 'center'
}
linePoints = [
[textX, textY],
[textX, textY],
]
} else {
var x1 = void 0
var y1 = void 0
var x2 = void 0
var y2 = void 0
var labelLineLen = labelLineModel.get('length')
if (labelPosition === 'left') {
x1 = (points2[3][0] + points2[0][0]) / 2
y1 = (points2[3][1] + points2[0][1]) / 2
x2 = x1 - labelLineLen
textX = x2 - 5
textAlign2 = 'right'
} else if (labelPosition === 'right') {
x1 = (points2[1][0] + points2[2][0]) / 2
y1 = (points2[1][1] + points2[2][1]) / 2
x2 = x1 + labelLineLen
textX = x2 + 5
textAlign2 = 'left'
} else if (labelPosition === 'top') {
x1 = (points2[3][0] + points2[0][0]) / 2
y1 = (points2[3][1] + points2[0][1]) / 2
y2 = y1 - labelLineLen
textY = y2 - 5
textAlign2 = 'center'
} else if (labelPosition === 'bottom') {
x1 = (points2[1][0] + points2[2][0]) / 2
y1 = (points2[1][1] + points2[2][1]) / 2
y2 = y1 + labelLineLen
textY = y2 + 5
textAlign2 = 'center'
} else if (labelPosition === 'rightTop') {
x1 = orient === 'horizontal' ? points2[3][0] : points2[1][0]
y1 = orient === 'horizontal' ? points2[3][1] : points2[1][1]
if (orient === 'horizontal') {
y2 = y1 - labelLineLen
textY = y2 - 5
textAlign2 = 'center'
} else {
x2 = x1 + labelLineLen
textX = x2 + 5
textAlign2 = 'top'
}
} else if (labelPosition === 'rightBottom') {
x1 = points2[2][0]
y1 = points2[2][1]
if (orient === 'horizontal') {
y2 = y1 + labelLineLen
textY = y2 + 5
textAlign2 = 'center'
} else {
x2 = x1 + labelLineLen
textX = x2 + 5
textAlign2 = 'bottom'
}
} else if (labelPosition === 'leftTop') {
x1 = points2[0][0]
y1 = orient === 'horizontal' ? points2[0][1] : points2[1][1]
if (orient === 'horizontal') {
y2 = y1 - labelLineLen
textY = y2 - 5
textAlign2 = 'center'
} else {
x2 = x1 - labelLineLen
textX = x2 - 5
textAlign2 = 'right'
}
} else if (labelPosition === 'leftBottom') {
x1 = orient === 'horizontal' ? points2[1][0] : points2[3][0]
y1 = orient === 'horizontal' ? points2[1][1] : points2[2][1]
if (orient === 'horizontal') {
y2 = y1 + labelLineLen
textY = y2 + 5
textAlign2 = 'center'
} else {
x2 = x1 - labelLineLen
textX = x2 - 5
textAlign2 = 'right'
}
} else {
x1 = (points2[1][0] + points2[2][0]) / 2
y1 = (points2[1][1] + points2[2][1]) / 2
if (orient === 'horizontal') {
y2 = y1 + labelLineLen
textY = y2 + 5
textAlign2 = 'center'
} else {
x2 = x1 + labelLineLen
textX = x2 + 5
textAlign2 = 'left'
}
}
if (orient === 'horizontal') {
x2 = x1
textX = x2
} else {
y2 = y1
textY = y2
}
linePoints = [
[x1, y1],
[x2, y2],
]
}
layout2.label = {
linePoints,
x: textX,
y: textY,
verticalAlign: 'middle',
textAlign: textAlign2,
inside: isLabelInside,
}
})
}
function funnelLayout(ecModel, api) {
ecModel.eachSeriesByType('funnel', function (seriesModel) {
var data2 = seriesModel.getData()
var valueDim = data2.mapDimension('value')
var sort3 = seriesModel.get('sort')
var viewRect2 = getViewRect$2(seriesModel, api)
var orient = seriesModel.get('orient')
var viewWidth = viewRect2.width
var viewHeight = viewRect2.height
var indices = getSortedIndices(data2, sort3)
var x2 = viewRect2.x
var y2 = viewRect2.y
var sizeExtent =
orient === 'horizontal'
? [
parsePercent(seriesModel.get('minSize'), viewHeight),
parsePercent(seriesModel.get('maxSize'), viewHeight),
]
: [
parsePercent(seriesModel.get('minSize'), viewWidth),
parsePercent(seriesModel.get('maxSize'), viewWidth),
]
var dataExtent = data2.getDataExtent(valueDim)
var min3 = seriesModel.get('min')
var max3 = seriesModel.get('max')
if (min3 == null) {
min3 = Math.min(dataExtent[0], 0)
}
if (max3 == null) {
max3 = dataExtent[1]
}
var funnelAlign = seriesModel.get('funnelAlign')
var gap = seriesModel.get('gap')
var viewSize = orient === 'horizontal' ? viewWidth : viewHeight
var itemSize2 = (viewSize - gap * (data2.count() - 1)) / data2.count()
var getLinePoints = function (idx2, offset2) {
if (orient === 'horizontal') {
var val_1 = data2.get(valueDim, idx2) || 0
var itemHeight = linearMap$2(val_1, [min3, max3], sizeExtent, true)
var y0 = void 0
switch (funnelAlign) {
case 'top':
y0 = y2
break
case 'center':
y0 = y2 + (viewHeight - itemHeight) / 2
break
case 'bottom':
y0 = y2 + (viewHeight - itemHeight)
break
}
return [
[offset2, y0],
[offset2, y0 + itemHeight],
]
}
var val2 = data2.get(valueDim, idx2) || 0
var itemWidth = linearMap$2(val2, [min3, max3], sizeExtent, true)
var x0
switch (funnelAlign) {
case 'left':
x0 = x2
break
case 'center':
x0 = x2 + (viewWidth - itemWidth) / 2
break
case 'right':
x0 = x2 + viewWidth - itemWidth
break
}
return [
[x0, offset2],
[x0 + itemWidth, offset2],
]
}
if (sort3 === 'ascending') {
itemSize2 = -itemSize2
gap = -gap
if (orient === 'horizontal') {
x2 += viewWidth
} else {
y2 += viewHeight
}
indices = indices.reverse()
}
for (var i2 = 0; i2 < indices.length; i2++) {
var idx = indices[i2]
var nextIdx = indices[i2 + 1]
var itemModel = data2.getItemModel(idx)
if (orient === 'horizontal') {
var width = itemModel.get(['itemStyle', 'width'])
if (width == null) {
width = itemSize2
} else {
width = parsePercent(width, viewWidth)
if (sort3 === 'ascending') {
width = -width
}
}
var start2 = getLinePoints(idx, x2)
var end2 = getLinePoints(nextIdx, x2 + width)
x2 += width + gap
data2.setItemLayout(idx, {
points: start2.concat(end2.slice().reverse()),
})
} else {
var height = itemModel.get(['itemStyle', 'height'])
if (height == null) {
height = itemSize2
} else {
height = parsePercent(height, viewHeight)
if (sort3 === 'ascending') {
height = -height
}
}
var start2 = getLinePoints(idx, y2)
var end2 = getLinePoints(nextIdx, y2 + height)
y2 += height + gap
data2.setItemLayout(idx, {
points: start2.concat(end2.slice().reverse()),
})
}
}
labelLayout(data2)
})
}
function install$F(registers) {
registers.registerChartView(FunnelView$1)
registers.registerSeriesModel(FunnelSeriesModel$1)
registers.registerLayout(funnelLayout)
registers.registerProcessor(dataFilter$1('funnel'))
}
var DEFAULT_SMOOTH = 0.3
var ParallelView$2 = (function (_super) {
__extends$2(ParallelView2, _super)
function ParallelView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = ParallelView2.type
_this._dataGroup = new Group$5()
_this._initialized = false
return _this
}
ParallelView2.prototype.init = function () {
this.group.add(this._dataGroup)
}
ParallelView2.prototype.render = function (
seriesModel,
ecModel,
api,
payload
) {
this._progressiveEls = null
var dataGroup = this._dataGroup
var data2 = seriesModel.getData()
var oldData = this._data
var coordSys = seriesModel.coordinateSystem
var dimensions = coordSys.dimensions
var seriesScope = makeSeriesScope(seriesModel)
data2.diff(oldData).add(add2).update(update3).remove(remove2).execute()
function add2(newDataIndex) {
var line = addEl(data2, dataGroup, newDataIndex, dimensions, coordSys)
updateElCommon(line, data2, newDataIndex, seriesScope)
}
function update3(newDataIndex, oldDataIndex) {
var line = oldData.getItemGraphicEl(oldDataIndex)
var points2 = createLinePoints(data2, newDataIndex, dimensions, coordSys)
data2.setItemGraphicEl(newDataIndex, line)
updateProps$1(
line,
{
shape: {
points: points2,
},
},
seriesModel,
newDataIndex
)
saveOldStyle(line)
updateElCommon(line, data2, newDataIndex, seriesScope)
}
function remove2(oldDataIndex) {
var line = oldData.getItemGraphicEl(oldDataIndex)
dataGroup.remove(line)
}
if (!this._initialized) {
this._initialized = true
var clipPath = createGridClipShape$2(coordSys, seriesModel, function () {
setTimeout(function () {
dataGroup.removeClipPath()
})
})
dataGroup.setClipPath(clipPath)
}
this._data = data2
}
ParallelView2.prototype.incrementalPrepareRender = function (
seriesModel,
ecModel,
api
) {
this._initialized = true
this._data = null
this._dataGroup.removeAll()
}
ParallelView2.prototype.incrementalRender = function (
taskParams,
seriesModel,
ecModel
) {
var data2 = seriesModel.getData()
var coordSys = seriesModel.coordinateSystem
var dimensions = coordSys.dimensions
var seriesScope = makeSeriesScope(seriesModel)
var progressiveEls = (this._progressiveEls = [])
for (
var dataIndex = taskParams.start;
dataIndex < taskParams.end;
dataIndex++
) {
var line = addEl(data2, this._dataGroup, dataIndex, dimensions, coordSys)
line.incremental = true
updateElCommon(line, data2, dataIndex, seriesScope)
progressiveEls.push(line)
}
}
ParallelView2.prototype.remove = function () {
this._dataGroup && this._dataGroup.removeAll()
this._data = null
}
ParallelView2.type = 'parallel'
return ParallelView2
})(ChartView$1)
function createGridClipShape$2(coordSys, seriesModel, cb) {
var parallelModel = coordSys.model
var rect = coordSys.getRect()
var rectEl = new Rect$4({
shape: {
x: rect.x,
y: rect.y,
width: rect.width,
height: rect.height,
},
})
var dim = parallelModel.get('layout') === 'horizontal' ? 'width' : 'height'
rectEl.setShape(dim, 0)
initProps(
rectEl,
{
shape: {
width: rect.width,
height: rect.height,
},
},
seriesModel,
cb
)
return rectEl
}
function createLinePoints(data2, dataIndex, dimensions, coordSys) {
var points2 = []
for (var i2 = 0; i2 < dimensions.length; i2++) {
var dimName = dimensions[i2]
var value2 = data2.get(data2.mapDimension(dimName), dataIndex)
if (!isEmptyValue(value2, coordSys.getAxis(dimName).type)) {
points2.push(coordSys.dataToPoint(value2, dimName))
}
}
return points2
}
function addEl(data2, dataGroup, dataIndex, dimensions, coordSys) {
var points2 = createLinePoints(data2, dataIndex, dimensions, coordSys)
var line = new Polyline$3({
shape: {
points: points2,
},
z2: 10,
})
dataGroup.add(line)
data2.setItemGraphicEl(dataIndex, line)
return line
}
function makeSeriesScope(seriesModel) {
var smooth = seriesModel.get('smooth', true)
smooth === true && (smooth = DEFAULT_SMOOTH)
smooth = numericToNumber(smooth)
eqNaN(smooth) && (smooth = 0)
return {
smooth,
}
}
function updateElCommon(el2, data2, dataIndex, seriesScope) {
el2.useStyle(data2.getItemVisual(dataIndex, 'style'))
el2.style.fill = null
el2.setShape('smooth', seriesScope.smooth)
var itemModel = data2.getItemModel(dataIndex)
var emphasisModel = itemModel.getModel('emphasis')
setStatesStylesFromModel(el2, itemModel, 'lineStyle')
toggleHoverEmphasis(
el2,
emphasisModel.get('focus'),
emphasisModel.get('blurScope'),
emphasisModel.get('disabled')
)
}
function isEmptyValue(val2, axisType) {
return axisType === 'category' ? val2 == null : val2 == null || isNaN(val2)
}
var ParallelView$3 = ParallelView$2
var ParallelSeriesModel = (function (_super) {
__extends$2(ParallelSeriesModel2, _super)
function ParallelSeriesModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = ParallelSeriesModel2.type
_this.visualStyleAccessPath = 'lineStyle'
_this.visualDrawType = 'stroke'
return _this
}
ParallelSeriesModel2.prototype.getInitialData = function (option2, ecModel) {
return createSeriesData(null, this, {
useEncodeDefaulter: bind$1(makeDefaultEncode, null, this),
})
}
ParallelSeriesModel2.prototype.getRawIndicesByActiveState = function (
activeState
) {
var coordSys = this.coordinateSystem
var data2 = this.getData()
var indices = []
coordSys.eachActiveState(data2, function (theActiveState, dataIndex) {
if (activeState === theActiveState) {
indices.push(data2.getRawIndex(dataIndex))
}
})
return indices
}
ParallelSeriesModel2.type = 'series.parallel'
ParallelSeriesModel2.dependencies = ['parallel']
ParallelSeriesModel2.defaultOption = {
z: 2,
coordinateSystem: 'parallel',
parallelIndex: 0,
label: {
show: false,
},
inactiveOpacity: 0.05,
activeOpacity: 1,
lineStyle: {
width: 1,
opacity: 0.45,
type: 'solid',
},
emphasis: {
label: {
show: false,
},
},
progressive: 500,
smooth: false,
animationEasing: 'linear',
}
return ParallelSeriesModel2
})(SeriesModel$1)
function makeDefaultEncode(seriesModel) {
var parallelModel = seriesModel.ecModel.getComponent(
'parallel',
seriesModel.get('parallelIndex')
)
if (!parallelModel) {
return
}
var encodeDefine = {}
each$f(parallelModel.dimensions, function (axisDim) {
var dataDimIndex = convertDimNameToNumber(axisDim)
encodeDefine[axisDim] = dataDimIndex
})
return encodeDefine
}
function convertDimNameToNumber(dimName) {
return +dimName.replace('dim', '')
}
var ParallelSeriesModel$1 = ParallelSeriesModel
var opacityAccessPath = ['lineStyle', 'opacity']
var parallelVisual = {
seriesType: 'parallel',
reset: function (seriesModel, ecModel) {
var coordSys = seriesModel.coordinateSystem
var opacityMap = {
normal: seriesModel.get(['lineStyle', 'opacity']),
active: seriesModel.get('activeOpacity'),
inactive: seriesModel.get('inactiveOpacity'),
}
return {
progress: function (params2, data2) {
coordSys.eachActiveState(
data2,
function (activeState, dataIndex) {
var opacity2 = opacityMap[activeState]
if (activeState === 'normal' && data2.hasItemOption) {
var itemOpacity = data2
.getItemModel(dataIndex)
.get(opacityAccessPath, true)
itemOpacity != null && (opacity2 = itemOpacity)
}
var existsStyle = data2.ensureUniqueItemVisual(dataIndex, 'style')
existsStyle.opacity = opacity2
},
params2.start,
params2.end
)
},
}
},
}
var parallelVisual$1 = parallelVisual
function parallelPreprocessor(option2) {
createParallelIfNeeded(option2)
mergeAxisOptionFromParallel(option2)
}
function createParallelIfNeeded(option2) {
if (option2.parallel) {
return
}
var hasParallelSeries = false
each$f(option2.series, function (seriesOpt) {
if (seriesOpt && seriesOpt.type === 'parallel') {
hasParallelSeries = true
}
})
if (hasParallelSeries) {
option2.parallel = [{}]
}
}
function mergeAxisOptionFromParallel(option2) {
var axes = normalizeToArray(option2.parallelAxis)
each$f(axes, function (axisOption) {
if (!isObject$b(axisOption)) {
return
}
var parallelIndex = axisOption.parallelIndex || 0
var parallelOption = normalizeToArray(option2.parallel)[parallelIndex]
if (parallelOption && parallelOption.parallelAxisDefault) {
merge(axisOption, parallelOption.parallelAxisDefault, false)
}
})
}
var CLICK_THRESHOLD = 5
var ParallelView = (function (_super) {
__extends$2(ParallelView2, _super)
function ParallelView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = ParallelView2.type
return _this
}
ParallelView2.prototype.render = function (parallelModel, ecModel, api) {
this._model = parallelModel
this._api = api
if (!this._handlers) {
this._handlers = {}
each$f(
handlers$1,
function (handler, eventName) {
api
.getZr()
.on(eventName, (this._handlers[eventName] = bind$1(handler, this)))
},
this
)
}
createOrUpdate(
this,
'_throttledDispatchExpand',
parallelModel.get('axisExpandRate'),
'fixRate'
)
}
ParallelView2.prototype.dispose = function (ecModel, api) {
clear$1(this, '_throttledDispatchExpand')
each$f(this._handlers, function (handler, eventName) {
api.getZr().off(eventName, handler)
})
this._handlers = null
}
ParallelView2.prototype._throttledDispatchExpand = function (opt) {
this._dispatchExpand(opt)
}
ParallelView2.prototype._dispatchExpand = function (opt) {
opt &&
this._api.dispatchAction(
extend(
{
type: 'parallelAxisExpand',
},
opt
)
)
}
ParallelView2.type = 'parallel'
return ParallelView2
})(ComponentView$1)
var handlers$1 = {
mousedown: function (e2) {
if (checkTrigger(this, 'click')) {
this._mouseDownPoint = [e2.offsetX, e2.offsetY]
}
},
mouseup: function (e2) {
var mouseDownPoint = this._mouseDownPoint
if (checkTrigger(this, 'click') && mouseDownPoint) {
var point = [e2.offsetX, e2.offsetY]
var dist2 =
Math.pow(mouseDownPoint[0] - point[0], 2) +
Math.pow(mouseDownPoint[1] - point[1], 2)
if (dist2 > CLICK_THRESHOLD) {
return
}
var result = this._model.coordinateSystem.getSlidedAxisExpandWindow([
e2.offsetX,
e2.offsetY,
])
result.behavior !== 'none' &&
this._dispatchExpand({
axisExpandWindow: result.axisExpandWindow,
})
}
this._mouseDownPoint = null
},
mousemove: function (e2) {
if (this._mouseDownPoint || !checkTrigger(this, 'mousemove')) {
return
}
var model = this._model
var result = model.coordinateSystem.getSlidedAxisExpandWindow([
e2.offsetX,
e2.offsetY,
])
var behavior = result.behavior
behavior === 'jump' &&
this._throttledDispatchExpand.debounceNextCall(
model.get('axisExpandDebounce')
)
this._throttledDispatchExpand(
behavior === 'none'
? null
: {
axisExpandWindow: result.axisExpandWindow,
animation:
behavior === 'jump'
? null
: {
duration: 0,
},
}
)
},
}
function checkTrigger(view2, triggerOn) {
var model = view2._model
return (
model.get('axisExpandable') &&
model.get('axisExpandTriggerOn') === triggerOn
)
}
var ParallelView$1 = ParallelView
var ParallelModel = (function (_super) {
__extends$2(ParallelModel2, _super)
function ParallelModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = ParallelModel2.type
return _this
}
ParallelModel2.prototype.init = function () {
_super.prototype.init.apply(this, arguments)
this.mergeOption({})
}
ParallelModel2.prototype.mergeOption = function (newOption) {
var thisOption = this.option
newOption && merge(thisOption, newOption, true)
this._initDimensions()
}
ParallelModel2.prototype.contains = function (model, ecModel) {
var parallelIndex = model.get('parallelIndex')
return (
parallelIndex != null &&
ecModel.getComponent('parallel', parallelIndex) === this
)
}
ParallelModel2.prototype.setAxisExpand = function (opt) {
each$f(
[
'axisExpandable',
'axisExpandCenter',
'axisExpandCount',
'axisExpandWidth',
'axisExpandWindow',
],
function (name2) {
if (opt.hasOwnProperty(name2)) {
this.option[name2] = opt[name2]
}
},
this
)
}
ParallelModel2.prototype._initDimensions = function () {
var dimensions = (this.dimensions = [])
var parallelAxisIndex = (this.parallelAxisIndex = [])
var axisModels = filter(
this.ecModel.queryComponents({
mainType: 'parallelAxis',
}),
function (axisModel) {
return (axisModel.get('parallelIndex') || 0) === this.componentIndex
},
this
)
each$f(axisModels, function (axisModel) {
dimensions.push('dim' + axisModel.get('dim'))
parallelAxisIndex.push(axisModel.componentIndex)
})
}
ParallelModel2.type = 'parallel'
ParallelModel2.dependencies = ['parallelAxis']
ParallelModel2.layoutMode = 'box'
ParallelModel2.defaultOption = {
z: 0,
left: 80,
top: 60,
right: 80,
bottom: 60,
layout: 'horizontal',
axisExpandable: false,
axisExpandCenter: null,
axisExpandCount: 0,
axisExpandWidth: 50,
axisExpandRate: 17,
axisExpandDebounce: 50,
axisExpandSlideTriggerArea: [-0.15, 0.05, 0.4],
axisExpandTriggerOn: 'click',
parallelAxisDefault: null,
}
return ParallelModel2
})(ComponentModel$1)
var ParallelModel$1 = ParallelModel
var ParallelAxis = (function (_super) {
__extends$2(ParallelAxis2, _super)
function ParallelAxis2(dim, scale2, coordExtent, axisType, axisIndex) {
var _this = _super.call(this, dim, scale2, coordExtent) || this
_this.type = axisType || 'value'
_this.axisIndex = axisIndex
return _this
}
ParallelAxis2.prototype.isHorizontal = function () {
return this.coordinateSystem.getModel().get('layout') !== 'horizontal'
}
return ParallelAxis2
})(Axis$1)
var ParallelAxis$1 = ParallelAxis
function sliderMove(delta, handleEnds, extent3, handleIndex, minSpan, maxSpan) {
delta = delta || 0
var extentSpan = extent3[1] - extent3[0]
if (minSpan != null) {
minSpan = restrict$1(minSpan, [0, extentSpan])
}
if (maxSpan != null) {
maxSpan = Math.max(maxSpan, minSpan != null ? minSpan : 0)
}
if (handleIndex === 'all') {
var handleSpan = Math.abs(handleEnds[1] - handleEnds[0])
handleSpan = restrict$1(handleSpan, [0, extentSpan])
minSpan = maxSpan = restrict$1(handleSpan, [minSpan, maxSpan])
handleIndex = 0
}
handleEnds[0] = restrict$1(handleEnds[0], extent3)
handleEnds[1] = restrict$1(handleEnds[1], extent3)
var originalDistSign = getSpanSign(handleEnds, handleIndex)
handleEnds[handleIndex] += delta
var extentMinSpan = minSpan || 0
var realExtent = extent3.slice()
originalDistSign.sign < 0
? (realExtent[0] += extentMinSpan)
: (realExtent[1] -= extentMinSpan)
handleEnds[handleIndex] = restrict$1(handleEnds[handleIndex], realExtent)
var currDistSign
currDistSign = getSpanSign(handleEnds, handleIndex)
if (
minSpan != null &&
(currDistSign.sign !== originalDistSign.sign || currDistSign.span < minSpan)
) {
handleEnds[1 - handleIndex] =
handleEnds[handleIndex] + originalDistSign.sign * minSpan
}
currDistSign = getSpanSign(handleEnds, handleIndex)
if (maxSpan != null && currDistSign.span > maxSpan) {
handleEnds[1 - handleIndex] =
handleEnds[handleIndex] + currDistSign.sign * maxSpan
}
return handleEnds
}
function getSpanSign(handleEnds, handleIndex) {
var dist2 = handleEnds[handleIndex] - handleEnds[1 - handleIndex]
return {
span: Math.abs(dist2),
sign: dist2 > 0 ? -1 : dist2 < 0 ? 1 : handleIndex ? -1 : 1,
}
}
function restrict$1(value2, extend2) {
return Math.min(
extend2[1] != null ? extend2[1] : Infinity,
Math.max(extend2[0] != null ? extend2[0] : -Infinity, value2)
)
}
var each$a = each$f
var mathMin$2 = Math.min
var mathMax$2 = Math.max
var mathFloor = Math.floor
var mathCeil = Math.ceil
var round$1 = round$3
var PI$2 = Math.PI
var Parallel = (function () {
function Parallel2(parallelModel, ecModel, api) {
this.type = 'parallel'
this._axesMap = createHashMap()
this._axesLayout = {}
this.dimensions = parallelModel.dimensions
this._model = parallelModel
this._init(parallelModel, ecModel, api)
}
Parallel2.prototype._init = function (parallelModel, ecModel, api) {
var dimensions = parallelModel.dimensions
var parallelAxisIndex = parallelModel.parallelAxisIndex
each$a(
dimensions,
function (dim, idx) {
var axisIndex = parallelAxisIndex[idx]
var axisModel = ecModel.getComponent('parallelAxis', axisIndex)
var axis = this._axesMap.set(
dim,
new ParallelAxis$1(
dim,
createScaleByModel$1(axisModel),
[0, 0],
axisModel.get('type'),
axisIndex
)
)
var isCategory2 = axis.type === 'category'
axis.onBand = isCategory2 && axisModel.get('boundaryGap')
axis.inverse = axisModel.get('inverse')
axisModel.axis = axis
axis.model = axisModel
axis.coordinateSystem = axisModel.coordinateSystem = this
},
this
)
}
Parallel2.prototype.update = function (ecModel, api) {
this._updateAxesFromSeries(this._model, ecModel)
}
Parallel2.prototype.containPoint = function (point) {
var layoutInfo = this._makeLayoutInfo()
var axisBase = layoutInfo.axisBase
var layoutBase = layoutInfo.layoutBase
var pixelDimIndex = layoutInfo.pixelDimIndex
var pAxis = point[1 - pixelDimIndex]
var pLayout = point[pixelDimIndex]
return (
pAxis >= axisBase &&
pAxis <= axisBase + layoutInfo.axisLength &&
pLayout >= layoutBase &&
pLayout <= layoutBase + layoutInfo.layoutLength
)
}
Parallel2.prototype.getModel = function () {
return this._model
}
Parallel2.prototype._updateAxesFromSeries = function (
parallelModel,
ecModel
) {
ecModel.eachSeries(function (seriesModel) {
if (!parallelModel.contains(seriesModel, ecModel)) {
return
}
var data2 = seriesModel.getData()
each$a(
this.dimensions,
function (dim) {
var axis = this._axesMap.get(dim)
axis.scale.unionExtentFromData(data2, data2.mapDimension(dim))
niceScaleExtent(axis.scale, axis.model)
},
this
)
}, this)
}
Parallel2.prototype.resize = function (parallelModel, api) {
this._rect = getLayoutRect(parallelModel.getBoxLayoutParams(), {
width: api.getWidth(),
height: api.getHeight(),
})
this._layoutAxes()
}
Parallel2.prototype.getRect = function () {
return this._rect
}
Parallel2.prototype._makeLayoutInfo = function () {
var parallelModel = this._model
var rect = this._rect
var xy = ['x', 'y']
var wh = ['width', 'height']
var layout2 = parallelModel.get('layout')
var pixelDimIndex = layout2 === 'horizontal' ? 0 : 1
var layoutLength = rect[wh[pixelDimIndex]]
var layoutExtent = [0, layoutLength]
var axisCount = this.dimensions.length
var axisExpandWidth = restrict(
parallelModel.get('axisExpandWidth'),
layoutExtent
)
var axisExpandCount = restrict(parallelModel.get('axisExpandCount') || 0, [
0,
axisCount,
])
var axisExpandable =
parallelModel.get('axisExpandable') &&
axisCount > 3 &&
axisCount > axisExpandCount &&
axisExpandCount > 1 &&
axisExpandWidth > 0 &&
layoutLength > 0
var axisExpandWindow = parallelModel.get('axisExpandWindow')
var winSize
if (!axisExpandWindow) {
winSize = restrict(axisExpandWidth * (axisExpandCount - 1), layoutExtent)
var axisExpandCenter =
parallelModel.get('axisExpandCenter') || mathFloor(axisCount / 2)
axisExpandWindow = [axisExpandWidth * axisExpandCenter - winSize / 2]
axisExpandWindow[1] = axisExpandWindow[0] + winSize
} else {
winSize = restrict(
axisExpandWindow[1] - axisExpandWindow[0],
layoutExtent
)
axisExpandWindow[1] = axisExpandWindow[0] + winSize
}
var axisCollapseWidth =
(layoutLength - winSize) / (axisCount - axisExpandCount)
axisCollapseWidth < 3 && (axisCollapseWidth = 0)
var winInnerIndices = [
mathFloor(round$1(axisExpandWindow[0] / axisExpandWidth, 1)) + 1,
mathCeil(round$1(axisExpandWindow[1] / axisExpandWidth, 1)) - 1,
]
var axisExpandWindow0Pos =
(axisCollapseWidth / axisExpandWidth) * axisExpandWindow[0]
return {
layout: layout2,
pixelDimIndex,
layoutBase: rect[xy[pixelDimIndex]],
layoutLength,
axisBase: rect[xy[1 - pixelDimIndex]],
axisLength: rect[wh[1 - pixelDimIndex]],
axisExpandable,
axisExpandWidth,
axisCollapseWidth,
axisExpandWindow,
axisCount,
winInnerIndices,
axisExpandWindow0Pos,
}
}
Parallel2.prototype._layoutAxes = function () {
var rect = this._rect
var axes = this._axesMap
var dimensions = this.dimensions
var layoutInfo = this._makeLayoutInfo()
var layout2 = layoutInfo.layout
axes.each(function (axis) {
var axisExtent = [0, layoutInfo.axisLength]
var idx = axis.inverse ? 1 : 0
axis.setExtent(axisExtent[idx], axisExtent[1 - idx])
})
each$a(
dimensions,
function (dim, idx) {
var posInfo = (
layoutInfo.axisExpandable
? layoutAxisWithExpand
: layoutAxisWithoutExpand
)(idx, layoutInfo)
var positionTable = {
horizontal: {
x: posInfo.position,
y: layoutInfo.axisLength,
},
vertical: {
x: 0,
y: posInfo.position,
},
}
var rotationTable = {
horizontal: PI$2 / 2,
vertical: 0,
}
var position2 = [
positionTable[layout2].x + rect.x,
positionTable[layout2].y + rect.y,
]
var rotation = rotationTable[layout2]
var transform3 = create$1()
rotate(transform3, transform3, rotation)
translate$1(transform3, transform3, position2)
this._axesLayout[dim] = {
position: position2,
rotation,
transform: transform3,
axisNameAvailableWidth: posInfo.axisNameAvailableWidth,
axisLabelShow: posInfo.axisLabelShow,
nameTruncateMaxWidth: posInfo.nameTruncateMaxWidth,
tickDirection: 1,
labelDirection: 1,
}
},
this
)
}
Parallel2.prototype.getAxis = function (dim) {
return this._axesMap.get(dim)
}
Parallel2.prototype.dataToPoint = function (value2, dim) {
return this.axisCoordToPoint(
this._axesMap.get(dim).dataToCoord(value2),
dim
)
}
Parallel2.prototype.eachActiveState = function (
data2,
callback,
start2,
end2
) {
start2 == null && (start2 = 0)
end2 == null && (end2 = data2.count())
var axesMap = this._axesMap
var dimensions = this.dimensions
var dataDimensions = []
var axisModels = []
each$f(dimensions, function (axisDim) {
dataDimensions.push(data2.mapDimension(axisDim))
axisModels.push(axesMap.get(axisDim).model)
})
var hasActiveSet = this.hasAxisBrushed()
for (var dataIndex = start2; dataIndex < end2; dataIndex++) {
var activeState = void 0
if (!hasActiveSet) {
activeState = 'normal'
} else {
activeState = 'active'
var values2 = data2.getValues(dataDimensions, dataIndex)
for (var j2 = 0, lenj = dimensions.length; j2 < lenj; j2++) {
var state2 = axisModels[j2].getActiveState(values2[j2])
if (state2 === 'inactive') {
activeState = 'inactive'
break
}
}
}
callback(activeState, dataIndex)
}
}
Parallel2.prototype.hasAxisBrushed = function () {
var dimensions = this.dimensions
var axesMap = this._axesMap
var hasActiveSet = false
for (var j2 = 0, lenj = dimensions.length; j2 < lenj; j2++) {
if (axesMap.get(dimensions[j2]).model.getActiveState() !== 'normal') {
hasActiveSet = true
}
}
return hasActiveSet
}
Parallel2.prototype.axisCoordToPoint = function (coord, dim) {
var axisLayout = this._axesLayout[dim]
return applyTransform([coord, 0], axisLayout.transform)
}
Parallel2.prototype.getAxisLayout = function (dim) {
return clone$4(this._axesLayout[dim])
}
Parallel2.prototype.getSlidedAxisExpandWindow = function (point) {
var layoutInfo = this._makeLayoutInfo()
var pixelDimIndex = layoutInfo.pixelDimIndex
var axisExpandWindow = layoutInfo.axisExpandWindow.slice()
var winSize = axisExpandWindow[1] - axisExpandWindow[0]
var extent3 = [0, layoutInfo.axisExpandWidth * (layoutInfo.axisCount - 1)]
if (!this.containPoint(point)) {
return {
behavior: 'none',
axisExpandWindow,
}
}
var pointCoord =
point[pixelDimIndex] -
layoutInfo.layoutBase -
layoutInfo.axisExpandWindow0Pos
var delta
var behavior = 'slide'
var axisCollapseWidth = layoutInfo.axisCollapseWidth
var triggerArea = this._model.get('axisExpandSlideTriggerArea')
var useJump = triggerArea[0] != null
if (axisCollapseWidth) {
if (
useJump &&
axisCollapseWidth &&
pointCoord < winSize * triggerArea[0]
) {
behavior = 'jump'
delta = pointCoord - winSize * triggerArea[2]
} else if (
useJump &&
axisCollapseWidth &&
pointCoord > winSize * (1 - triggerArea[0])
) {
behavior = 'jump'
delta = pointCoord - winSize * (1 - triggerArea[2])
} else {
;(delta = pointCoord - winSize * triggerArea[1]) >= 0 &&
(delta = pointCoord - winSize * (1 - triggerArea[1])) <= 0 &&
(delta = 0)
}
delta *= layoutInfo.axisExpandWidth / axisCollapseWidth
delta
? sliderMove(delta, axisExpandWindow, extent3, 'all')
: (behavior = 'none')
} else {
var winSize2 = axisExpandWindow[1] - axisExpandWindow[0]
var pos = (extent3[1] * pointCoord) / winSize2
axisExpandWindow = [mathMax$2(0, pos - winSize2 / 2)]
axisExpandWindow[1] = mathMin$2(
extent3[1],
axisExpandWindow[0] + winSize2
)
axisExpandWindow[0] = axisExpandWindow[1] - winSize2
}
return {
axisExpandWindow,
behavior,
}
}
return Parallel2
})()
function restrict(len2, extent3) {
return mathMin$2(mathMax$2(len2, extent3[0]), extent3[1])
}
function layoutAxisWithoutExpand(axisIndex, layoutInfo) {
var step = layoutInfo.layoutLength / (layoutInfo.axisCount - 1)
return {
position: step * axisIndex,
axisNameAvailableWidth: step,
axisLabelShow: true,
}
}
function layoutAxisWithExpand(axisIndex, layoutInfo) {
var layoutLength = layoutInfo.layoutLength
var axisExpandWidth = layoutInfo.axisExpandWidth
var axisCount = layoutInfo.axisCount
var axisCollapseWidth = layoutInfo.axisCollapseWidth
var winInnerIndices = layoutInfo.winInnerIndices
var position2
var axisNameAvailableWidth = axisCollapseWidth
var axisLabelShow = false
var nameTruncateMaxWidth
if (axisIndex < winInnerIndices[0]) {
position2 = axisIndex * axisCollapseWidth
nameTruncateMaxWidth = axisCollapseWidth
} else if (axisIndex <= winInnerIndices[1]) {
position2 =
layoutInfo.axisExpandWindow0Pos +
axisIndex * axisExpandWidth -
layoutInfo.axisExpandWindow[0]
axisNameAvailableWidth = axisExpandWidth
axisLabelShow = true
} else {
position2 = layoutLength - (axisCount - 1 - axisIndex) * axisCollapseWidth
nameTruncateMaxWidth = axisCollapseWidth
}
return {
position: position2,
axisNameAvailableWidth,
axisLabelShow,
nameTruncateMaxWidth,
}
}
var Parallel$1 = Parallel
function createParallelCoordSys(ecModel, api) {
var coordSysList = []
ecModel.eachComponent('parallel', function (parallelModel, idx) {
var coordSys = new Parallel$1(parallelModel, ecModel, api)
coordSys.name = 'parallel_' + idx
coordSys.resize(parallelModel, api)
parallelModel.coordinateSystem = coordSys
coordSys.model = parallelModel
coordSysList.push(coordSys)
})
ecModel.eachSeries(function (seriesModel) {
if (seriesModel.get('coordinateSystem') === 'parallel') {
var parallelModel = seriesModel.getReferringComponents(
'parallel',
SINGLE_REFERRING
).models[0]
seriesModel.coordinateSystem = parallelModel.coordinateSystem
}
})
return coordSysList
}
var parallelCoordSysCreator = {
create: createParallelCoordSys,
}
var parallelCoordSysCreator$1 = parallelCoordSysCreator
var ParallelAxisModel = (function (_super) {
__extends$2(ParallelAxisModel2, _super)
function ParallelAxisModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = ParallelAxisModel2.type
_this.activeIntervals = []
return _this
}
ParallelAxisModel2.prototype.getAreaSelectStyle = function () {
return makeStyleMapper([
['fill', 'color'],
['lineWidth', 'borderWidth'],
['stroke', 'borderColor'],
['width', 'width'],
['opacity', 'opacity'],
])(this.getModel('areaSelectStyle'))
}
ParallelAxisModel2.prototype.setActiveIntervals = function (intervals) {
var activeIntervals = (this.activeIntervals = clone$4(intervals))
if (activeIntervals) {
for (var i2 = activeIntervals.length - 1; i2 >= 0; i2--) {
asc$2(activeIntervals[i2])
}
}
}
ParallelAxisModel2.prototype.getActiveState = function (value2) {
var activeIntervals = this.activeIntervals
if (!activeIntervals.length) {
return 'normal'
}
if (value2 == null || isNaN(+value2)) {
return 'inactive'
}
if (activeIntervals.length === 1) {
var interval = activeIntervals[0]
if (interval[0] <= value2 && value2 <= interval[1]) {
return 'active'
}
} else {
for (var i2 = 0, len2 = activeIntervals.length; i2 < len2; i2++) {
if (
activeIntervals[i2][0] <= value2 &&
value2 <= activeIntervals[i2][1]
) {
return 'active'
}
}
}
return 'inactive'
}
return ParallelAxisModel2
})(ComponentModel$1)
mixin(ParallelAxisModel, AxisModelCommonMixin)
var ParallelAxisModel$1 = ParallelAxisModel
var BRUSH_PANEL_GLOBAL = true
var mathMin$1 = Math.min
var mathMax$1 = Math.max
var mathPow = Math.pow
var COVER_Z = 1e4
var UNSELECT_THRESHOLD = 6
var MIN_RESIZE_LINE_WIDTH = 6
var MUTEX_RESOURCE_KEY = 'globalPan'
var DIRECTION_MAP = {
w: [0, 0],
e: [0, 1],
n: [1, 0],
s: [1, 1],
}
var CURSOR_MAP = {
w: 'ew',
e: 'ew',
n: 'ns',
s: 'ns',
ne: 'nesw',
sw: 'nesw',
nw: 'nwse',
se: 'nwse',
}
var DEFAULT_BRUSH_OPT = {
brushStyle: {
lineWidth: 2,
stroke: 'rgba(210,219,238,0.3)',
fill: '#D2DBEE',
},
transformable: true,
brushMode: 'single',
removeOnClick: false,
}
var baseUID = 0
var BrushController = (function (_super) {
__extends$2(BrushController2, _super)
function BrushController2(zr) {
var _this = _super.call(this) || this
_this._track = []
_this._covers = []
_this._handlers = {}
_this._zr = zr
_this.group = new Group$5()
_this._uid = 'brushController_' + baseUID++
each$f(
pointerHandlers,
function (handler, eventName) {
this._handlers[eventName] = bind$1(handler, this)
},
_this
)
return _this
}
BrushController2.prototype.enableBrush = function (brushOption) {
this._brushType && this._doDisableBrush()
brushOption.brushType && this._doEnableBrush(brushOption)
return this
}
BrushController2.prototype._doEnableBrush = function (brushOption) {
var zr = this._zr
if (!this._enableGlobalPan) {
take(zr, MUTEX_RESOURCE_KEY, this._uid)
}
each$f(this._handlers, function (handler, eventName) {
zr.on(eventName, handler)
})
this._brushType = brushOption.brushType
this._brushOption = merge(clone$4(DEFAULT_BRUSH_OPT), brushOption, true)
}
BrushController2.prototype._doDisableBrush = function () {
var zr = this._zr
release(zr, MUTEX_RESOURCE_KEY, this._uid)
each$f(this._handlers, function (handler, eventName) {
zr.off(eventName, handler)
})
this._brushType = this._brushOption = null
}
BrushController2.prototype.setPanels = function (panelOpts) {
if (panelOpts && panelOpts.length) {
var panels_1 = (this._panels = {})
each$f(panelOpts, function (panelOpts2) {
panels_1[panelOpts2.panelId] = clone$4(panelOpts2)
})
} else {
this._panels = null
}
return this
}
BrushController2.prototype.mount = function (opt) {
opt = opt || {}
this._enableGlobalPan = opt.enableGlobalPan
var thisGroup = this.group
this._zr.add(thisGroup)
thisGroup.attr({
x: opt.x || 0,
y: opt.y || 0,
rotation: opt.rotation || 0,
scaleX: opt.scaleX || 1,
scaleY: opt.scaleY || 1,
})
this._transform = thisGroup.getLocalTransform()
return this
}
BrushController2.prototype.updateCovers = function (coverConfigList) {
coverConfigList = map$1(coverConfigList, function (coverConfig) {
return merge(clone$4(DEFAULT_BRUSH_OPT), coverConfig, true)
})
var tmpIdPrefix = '\0-brush-index-'
var oldCovers = this._covers
var newCovers = (this._covers = [])
var controller = this
var creatingCover = this._creatingCover
new DataDiffer$1(oldCovers, coverConfigList, oldGetKey, getKey2)
.add(addOrUpdate)
.update(addOrUpdate)
.remove(remove2)
.execute()
return this
function getKey2(brushOption, index2) {
return (
(brushOption.id != null ? brushOption.id : tmpIdPrefix + index2) +
'-' +
brushOption.brushType
)
}
function oldGetKey(cover, index2) {
return getKey2(cover.__brushOption, index2)
}
function addOrUpdate(newIndex2, oldIndex2) {
var newBrushInternal = coverConfigList[newIndex2]
if (oldIndex2 != null && oldCovers[oldIndex2] === creatingCover) {
newCovers[newIndex2] = oldCovers[oldIndex2]
} else {
var cover = (newCovers[newIndex2] =
oldIndex2 != null
? ((oldCovers[oldIndex2].__brushOption = newBrushInternal),
oldCovers[oldIndex2])
: endCreating(
controller,
createCover(controller, newBrushInternal)
))
updateCoverAfterCreation(controller, cover)
}
}
function remove2(oldIndex2) {
if (oldCovers[oldIndex2] !== creatingCover) {
controller.group.remove(oldCovers[oldIndex2])
}
}
}
BrushController2.prototype.unmount = function () {
this.enableBrush(false)
clearCovers(this)
this._zr.remove(this.group)
return this
}
BrushController2.prototype.dispose = function () {
this.unmount()
this.off()
}
return BrushController2
})(Eventful$1)
function createCover(controller, brushOption) {
var cover = coverRenderers[brushOption.brushType].createCover(
controller,
brushOption
)
cover.__brushOption = brushOption
updateZ$1(cover, brushOption)
controller.group.add(cover)
return cover
}
function endCreating(controller, creatingCover) {
var coverRenderer = getCoverRenderer(creatingCover)
if (coverRenderer.endCreating) {
coverRenderer.endCreating(controller, creatingCover)
updateZ$1(creatingCover, creatingCover.__brushOption)
}
return creatingCover
}
function updateCoverShape(controller, cover) {
var brushOption = cover.__brushOption
getCoverRenderer(cover).updateCoverShape(
controller,
cover,
brushOption.range,
brushOption
)
}
function updateZ$1(cover, brushOption) {
var z2 = brushOption.z
z2 == null && (z2 = COVER_Z)
cover.traverse(function (el2) {
el2.z = z2
el2.z2 = z2
})
}
function updateCoverAfterCreation(controller, cover) {
getCoverRenderer(cover).updateCommon(controller, cover)
updateCoverShape(controller, cover)
}
function getCoverRenderer(cover) {
return coverRenderers[cover.__brushOption.brushType]
}
function getPanelByPoint(controller, e2, localCursorPoint) {
var panels = controller._panels
if (!panels) {
return BRUSH_PANEL_GLOBAL
}
var panel
var transform3 = controller._transform
each$f(panels, function (pn) {
pn.isTargetByCursor(e2, localCursorPoint, transform3) && (panel = pn)
})
return panel
}
function getPanelByCover(controller, cover) {
var panels = controller._panels
if (!panels) {
return BRUSH_PANEL_GLOBAL
}
var panelId = cover.__brushOption.panelId
return panelId != null ? panels[panelId] : BRUSH_PANEL_GLOBAL
}
function clearCovers(controller) {
var covers = controller._covers
var originalLength = covers.length
each$f(
covers,
function (cover) {
controller.group.remove(cover)
},
controller
)
covers.length = 0
return !!originalLength
}
function trigger(controller, opt) {
var areas = map$1(controller._covers, function (cover) {
var brushOption = cover.__brushOption
var range3 = clone$4(brushOption.range)
return {
brushType: brushOption.brushType,
panelId: brushOption.panelId,
range: range3,
}
})
controller.trigger('brush', {
areas,
isEnd: !!opt.isEnd,
removeOnClick: !!opt.removeOnClick,
})
}
function shouldShowCover(controller) {
var track2 = controller._track
if (!track2.length) {
return false
}
var p2 = track2[track2.length - 1]
var p1 = track2[0]
var dx = p2[0] - p1[0]
var dy = p2[1] - p1[1]
var dist2 = mathPow(dx * dx + dy * dy, 0.5)
return dist2 > UNSELECT_THRESHOLD
}
function getTrackEnds(track2) {
var tail = track2.length - 1
tail < 0 && (tail = 0)
return [track2[0], track2[tail]]
}
function createBaseRectCover(
rectRangeConverter,
controller,
brushOption,
edgeNameSequences
) {
var cover = new Group$5()
cover.add(
new Rect$4({
name: 'main',
style: makeStyle(brushOption),
silent: true,
draggable: true,
cursor: 'move',
drift: curry$1(driftRect, rectRangeConverter, controller, cover, [
'n',
's',
'w',
'e',
]),
ondragend: curry$1(trigger, controller, {
isEnd: true,
}),
})
)
each$f(edgeNameSequences, function (nameSequence) {
cover.add(
new Rect$4({
name: nameSequence.join(''),
style: {
opacity: 0,
},
draggable: true,
silent: true,
invisible: true,
drift: curry$1(
driftRect,
rectRangeConverter,
controller,
cover,
nameSequence
),
ondragend: curry$1(trigger, controller, {
isEnd: true,
}),
})
)
})
return cover
}
function updateBaseRect(controller, cover, localRange, brushOption) {
var lineWidth = brushOption.brushStyle.lineWidth || 0
var handleSize = mathMax$1(lineWidth, MIN_RESIZE_LINE_WIDTH)
var x2 = localRange[0][0]
var y2 = localRange[1][0]
var xa = x2 - lineWidth / 2
var ya = y2 - lineWidth / 2
var x22 = localRange[0][1]
var y22 = localRange[1][1]
var x2a = x22 - handleSize + lineWidth / 2
var y2a = y22 - handleSize + lineWidth / 2
var width = x22 - x2
var height = y22 - y2
var widtha = width + lineWidth
var heighta = height + lineWidth
updateRectShape(controller, cover, 'main', x2, y2, width, height)
if (brushOption.transformable) {
updateRectShape(controller, cover, 'w', xa, ya, handleSize, heighta)
updateRectShape(controller, cover, 'e', x2a, ya, handleSize, heighta)
updateRectShape(controller, cover, 'n', xa, ya, widtha, handleSize)
updateRectShape(controller, cover, 's', xa, y2a, widtha, handleSize)
updateRectShape(controller, cover, 'nw', xa, ya, handleSize, handleSize)
updateRectShape(controller, cover, 'ne', x2a, ya, handleSize, handleSize)
updateRectShape(controller, cover, 'sw', xa, y2a, handleSize, handleSize)
updateRectShape(controller, cover, 'se', x2a, y2a, handleSize, handleSize)
}
}
function updateCommon$1(controller, cover) {
var brushOption = cover.__brushOption
var transformable = brushOption.transformable
var mainEl = cover.childAt(0)
mainEl.useStyle(makeStyle(brushOption))
mainEl.attr({
silent: !transformable,
cursor: transformable ? 'move' : 'default',
})
each$f(
[
['w'],
['e'],
['n'],
['s'],
['s', 'e'],
['s', 'w'],
['n', 'e'],
['n', 'w'],
],
function (nameSequence) {
var el2 = cover.childOfName(nameSequence.join(''))
var globalDir =
nameSequence.length === 1
? getGlobalDirection1(controller, nameSequence[0])
: getGlobalDirection2(controller, nameSequence)
el2 &&
el2.attr({
silent: !transformable,
invisible: !transformable,
cursor: transformable ? CURSOR_MAP[globalDir] + '-resize' : null,
})
}
)
}
function updateRectShape(controller, cover, name2, x2, y2, w2, h2) {
var el2 = cover.childOfName(name2)
el2 &&
el2.setShape(
pointsToRect(
clipByPanel(controller, cover, [
[x2, y2],
[x2 + w2, y2 + h2],
])
)
)
}
function makeStyle(brushOption) {
return defaults(
{
strokeNoScale: true,
},
brushOption.brushStyle
)
}
function formatRectRange(x2, y2, x22, y22) {
var min3 = [mathMin$1(x2, x22), mathMin$1(y2, y22)]
var max3 = [mathMax$1(x2, x22), mathMax$1(y2, y22)]
return [
[min3[0], max3[0]],
[min3[1], max3[1]],
]
}
function getTransform(controller) {
return getTransform$1(controller.group)
}
function getGlobalDirection1(controller, localDirName) {
var map2 = {
w: 'left',
e: 'right',
n: 'top',
s: 'bottom',
}
var inverseMap = {
left: 'w',
right: 'e',
top: 'n',
bottom: 's',
}
var dir3 = transformDirection(map2[localDirName], getTransform(controller))
return inverseMap[dir3]
}
function getGlobalDirection2(controller, localDirNameSeq) {
var globalDir = [
getGlobalDirection1(controller, localDirNameSeq[0]),
getGlobalDirection1(controller, localDirNameSeq[1]),
]
;(globalDir[0] === 'e' || globalDir[0] === 'w') && globalDir.reverse()
return globalDir.join('')
}
function driftRect(
rectRangeConverter,
controller,
cover,
dirNameSequence,
dx,
dy
) {
var brushOption = cover.__brushOption
var rectRange = rectRangeConverter.toRectRange(brushOption.range)
var localDelta = toLocalDelta(controller, dx, dy)
each$f(dirNameSequence, function (dirName) {
var ind = DIRECTION_MAP[dirName]
rectRange[ind[0]][ind[1]] += localDelta[ind[0]]
})
brushOption.range = rectRangeConverter.fromRectRange(
formatRectRange(
rectRange[0][0],
rectRange[1][0],
rectRange[0][1],
rectRange[1][1]
)
)
updateCoverAfterCreation(controller, cover)
trigger(controller, {
isEnd: false,
})
}
function driftPolygon(controller, cover, dx, dy) {
var range3 = cover.__brushOption.range
var localDelta = toLocalDelta(controller, dx, dy)
each$f(range3, function (point) {
point[0] += localDelta[0]
point[1] += localDelta[1]
})
updateCoverAfterCreation(controller, cover)
trigger(controller, {
isEnd: false,
})
}
function toLocalDelta(controller, dx, dy) {
var thisGroup = controller.group
var localD = thisGroup.transformCoordToLocal(dx, dy)
var localZero = thisGroup.transformCoordToLocal(0, 0)
return [localD[0] - localZero[0], localD[1] - localZero[1]]
}
function clipByPanel(controller, cover, data2) {
var panel = getPanelByCover(controller, cover)
return panel && panel !== BRUSH_PANEL_GLOBAL
? panel.clipPath(data2, controller._transform)
: clone$4(data2)
}
function pointsToRect(points2) {
var xmin = mathMin$1(points2[0][0], points2[1][0])
var ymin = mathMin$1(points2[0][1], points2[1][1])
var xmax = mathMax$1(points2[0][0], points2[1][0])
var ymax = mathMax$1(points2[0][1], points2[1][1])
return {
x: xmin,
y: ymin,
width: xmax - xmin,
height: ymax - ymin,
}
}
function resetCursor(controller, e2, localCursorPoint) {
if (
!controller._brushType ||
isOutsideZrArea(controller, e2.offsetX, e2.offsetY)
) {
return
}
var zr = controller._zr
var covers = controller._covers
var currPanel = getPanelByPoint(controller, e2, localCursorPoint)
if (!controller._dragging) {
for (var i2 = 0; i2 < covers.length; i2++) {
var brushOption = covers[i2].__brushOption
if (
currPanel &&
(currPanel === BRUSH_PANEL_GLOBAL ||
brushOption.panelId === currPanel.panelId) &&
coverRenderers[brushOption.brushType].contain(
covers[i2],
localCursorPoint[0],
localCursorPoint[1]
)
) {
return
}
}
}
currPanel && zr.setCursorStyle('crosshair')
}
function preventDefault(e2) {
var rawE = e2.event
rawE.preventDefault && rawE.preventDefault()
}
function mainShapeContain(cover, x2, y2) {
return cover.childOfName('main').contain(x2, y2)
}
function updateCoverByMouse(controller, e2, localCursorPoint, isEnd) {
var creatingCover = controller._creatingCover
var panel = controller._creatingPanel
var thisBrushOption = controller._brushOption
var eventParams
controller._track.push(localCursorPoint.slice())
if (shouldShowCover(controller) || creatingCover) {
if (panel && !creatingCover) {
thisBrushOption.brushMode === 'single' && clearCovers(controller)
var brushOption = clone$4(thisBrushOption)
brushOption.brushType = determineBrushType(brushOption.brushType, panel)
brushOption.panelId = panel === BRUSH_PANEL_GLOBAL ? null : panel.panelId
creatingCover = controller._creatingCover = createCover(
controller,
brushOption
)
controller._covers.push(creatingCover)
}
if (creatingCover) {
var coverRenderer =
coverRenderers[determineBrushType(controller._brushType, panel)]
var coverBrushOption = creatingCover.__brushOption
coverBrushOption.range = coverRenderer.getCreatingRange(
clipByPanel(controller, creatingCover, controller._track)
)
if (isEnd) {
endCreating(controller, creatingCover)
coverRenderer.updateCommon(controller, creatingCover)
}
updateCoverShape(controller, creatingCover)
eventParams = {
isEnd,
}
}
} else if (
isEnd &&
thisBrushOption.brushMode === 'single' &&
thisBrushOption.removeOnClick
) {
if (
getPanelByPoint(controller, e2, localCursorPoint) &&
clearCovers(controller)
) {
eventParams = {
isEnd,
removeOnClick: true,
}
}
}
return eventParams
}
function determineBrushType(brushType, panel) {
if (brushType === 'auto') {
return panel.defaultBrushType
}
return brushType
}
var pointerHandlers = {
mousedown: function (e2) {
if (this._dragging) {
handleDragEnd(this, e2)
} else if (!e2.target || !e2.target.draggable) {
preventDefault(e2)
var localCursorPoint = this.group.transformCoordToLocal(
e2.offsetX,
e2.offsetY
)
this._creatingCover = null
var panel = (this._creatingPanel = getPanelByPoint(
this,
e2,
localCursorPoint
))
if (panel) {
this._dragging = true
this._track = [localCursorPoint.slice()]
}
}
},
mousemove: function (e2) {
var x2 = e2.offsetX
var y2 = e2.offsetY
var localCursorPoint = this.group.transformCoordToLocal(x2, y2)
resetCursor(this, e2, localCursorPoint)
if (this._dragging) {
preventDefault(e2)
var eventParams = updateCoverByMouse(this, e2, localCursorPoint, false)
eventParams && trigger(this, eventParams)
}
},
mouseup: function (e2) {
handleDragEnd(this, e2)
},
}
function handleDragEnd(controller, e2) {
if (controller._dragging) {
preventDefault(e2)
var x2 = e2.offsetX
var y2 = e2.offsetY
var localCursorPoint = controller.group.transformCoordToLocal(x2, y2)
var eventParams = updateCoverByMouse(controller, e2, localCursorPoint, true)
controller._dragging = false
controller._track = []
controller._creatingCover = null
eventParams && trigger(controller, eventParams)
}
}
function isOutsideZrArea(controller, x2, y2) {
var zr = controller._zr
return x2 < 0 || x2 > zr.getWidth() || y2 < 0 || y2 > zr.getHeight()
}
var coverRenderers = {
lineX: getLineRenderer(0),
lineY: getLineRenderer(1),
rect: {
createCover: function (controller, brushOption) {
function returnInput(range3) {
return range3
}
return createBaseRectCover(
{
toRectRange: returnInput,
fromRectRange: returnInput,
},
controller,
brushOption,
[
['w'],
['e'],
['n'],
['s'],
['s', 'e'],
['s', 'w'],
['n', 'e'],
['n', 'w'],
]
)
},
getCreatingRange: function (localTrack) {
var ends = getTrackEnds(localTrack)
return formatRectRange(ends[1][0], ends[1][1], ends[0][0], ends[0][1])
},
updateCoverShape: function (controller, cover, localRange, brushOption) {
updateBaseRect(controller, cover, localRange, brushOption)
},
updateCommon: updateCommon$1,
contain: mainShapeContain,
},
polygon: {
createCover: function (controller, brushOption) {
var cover = new Group$5()
cover.add(
new Polyline$3({
name: 'main',
style: makeStyle(brushOption),
silent: true,
})
)
return cover
},
getCreatingRange: function (localTrack) {
return localTrack
},
endCreating: function (controller, cover) {
cover.remove(cover.childAt(0))
cover.add(
new Polygon$1({
name: 'main',
draggable: true,
drift: curry$1(driftPolygon, controller, cover),
ondragend: curry$1(trigger, controller, {
isEnd: true,
}),
})
)
},
updateCoverShape: function (controller, cover, localRange, brushOption) {
cover.childAt(0).setShape({
points: clipByPanel(controller, cover, localRange),
})
},
updateCommon: updateCommon$1,
contain: mainShapeContain,
},
}
function getLineRenderer(xyIndex) {
return {
createCover: function (controller, brushOption) {
return createBaseRectCover(
{
toRectRange: function (range3) {
var rectRange = [range3, [0, 100]]
xyIndex && rectRange.reverse()
return rectRange
},
fromRectRange: function (rectRange) {
return rectRange[xyIndex]
},
},
controller,
brushOption,
[
[['w'], ['e']],
[['n'], ['s']],
][xyIndex]
)
},
getCreatingRange: function (localTrack) {
var ends = getTrackEnds(localTrack)
var min3 = mathMin$1(ends[0][xyIndex], ends[1][xyIndex])
var max3 = mathMax$1(ends[0][xyIndex], ends[1][xyIndex])
return [min3, max3]
},
updateCoverShape: function (controller, cover, localRange, brushOption) {
var otherExtent
var panel = getPanelByCover(controller, cover)
if (panel !== BRUSH_PANEL_GLOBAL && panel.getLinearBrushOtherExtent) {
otherExtent = panel.getLinearBrushOtherExtent(xyIndex)
} else {
var zr = controller._zr
otherExtent = [0, [zr.getWidth(), zr.getHeight()][1 - xyIndex]]
}
var rectRange = [localRange, otherExtent]
xyIndex && rectRange.reverse()
updateBaseRect(controller, cover, rectRange, brushOption)
},
updateCommon: updateCommon$1,
contain: mainShapeContain,
}
}
var BrushController$1 = BrushController
function makeRectPanelClipPath(rect) {
rect = normalizeRect(rect)
return function (localPoints) {
return clipPointsByRect(localPoints, rect)
}
}
function makeLinearBrushOtherExtent(rect, specifiedXYIndex) {
rect = normalizeRect(rect)
return function (xyIndex) {
var idx = specifiedXYIndex != null ? specifiedXYIndex : xyIndex
var brushWidth = idx ? rect.width : rect.height
var base2 = idx ? rect.x : rect.y
return [base2, base2 + (brushWidth || 0)]
}
}
function makeRectIsTargetByCursor(rect, api, targetModel) {
var boundingRect = normalizeRect(rect)
return function (e2, localCursorPoint) {
return (
boundingRect.contain(localCursorPoint[0], localCursorPoint[1]) &&
!onIrrelevantElement(e2, api, targetModel)
)
}
}
function normalizeRect(rect) {
return BoundingRect$1.create(rect)
}
var elementList$1 = ['axisLine', 'axisTickLabel', 'axisName']
var ParallelAxisView = (function (_super) {
__extends$2(ParallelAxisView2, _super)
function ParallelAxisView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = ParallelAxisView2.type
return _this
}
ParallelAxisView2.prototype.init = function (ecModel, api) {
_super.prototype.init.apply(this, arguments)
;(this._brushController = new BrushController$1(api.getZr())).on(
'brush',
bind$1(this._onBrush, this)
)
}
ParallelAxisView2.prototype.render = function (
axisModel,
ecModel,
api,
payload
) {
if (fromAxisAreaSelect(axisModel, ecModel, payload)) {
return
}
this.axisModel = axisModel
this.api = api
this.group.removeAll()
var oldAxisGroup = this._axisGroup
this._axisGroup = new Group$5()
this.group.add(this._axisGroup)
if (!axisModel.get('show')) {
return
}
var coordSysModel = getCoordSysModel(axisModel, ecModel)
var coordSys = coordSysModel.coordinateSystem
var areaSelectStyle = axisModel.getAreaSelectStyle()
var areaWidth = areaSelectStyle.width
var dim = axisModel.axis.dim
var axisLayout = coordSys.getAxisLayout(dim)
var builderOpt = extend(
{
strokeContainThreshold: areaWidth,
},
axisLayout
)
var axisBuilder = new AxisBuilder$1(axisModel, builderOpt)
each$f(elementList$1, axisBuilder.add, axisBuilder)
this._axisGroup.add(axisBuilder.getGroup())
this._refreshBrushController(
builderOpt,
areaSelectStyle,
axisModel,
coordSysModel,
areaWidth,
api
)
groupTransition(oldAxisGroup, this._axisGroup, axisModel)
}
ParallelAxisView2.prototype._refreshBrushController = function (
builderOpt,
areaSelectStyle,
axisModel,
coordSysModel,
areaWidth,
api
) {
var extent3 = axisModel.axis.getExtent()
var extentLen = extent3[1] - extent3[0]
var extra = Math.min(30, Math.abs(extentLen) * 0.1)
var rect = BoundingRect$1.create({
x: extent3[0],
y: -areaWidth / 2,
width: extentLen,
height: areaWidth,
})
rect.x -= extra
rect.width += 2 * extra
this._brushController
.mount({
enableGlobalPan: true,
rotation: builderOpt.rotation,
x: builderOpt.position[0],
y: builderOpt.position[1],
})
.setPanels([
{
panelId: 'pl',
clipPath: makeRectPanelClipPath(rect),
isTargetByCursor: makeRectIsTargetByCursor(rect, api, coordSysModel),
getLinearBrushOtherExtent: makeLinearBrushOtherExtent(rect, 0),
},
])
.enableBrush({
brushType: 'lineX',
brushStyle: areaSelectStyle,
removeOnClick: true,
})
.updateCovers(getCoverInfoList(axisModel))
}
ParallelAxisView2.prototype._onBrush = function (eventParam) {
var coverInfoList = eventParam.areas
var axisModel = this.axisModel
var axis = axisModel.axis
var intervals = map$1(coverInfoList, function (coverInfo) {
return [
axis.coordToData(coverInfo.range[0], true),
axis.coordToData(coverInfo.range[1], true),
]
})
if (
!axisModel.option.realtime === eventParam.isEnd ||
eventParam.removeOnClick
) {
this.api.dispatchAction({
type: 'axisAreaSelect',
parallelAxisId: axisModel.id,
intervals,
})
}
}
ParallelAxisView2.prototype.dispose = function () {
this._brushController.dispose()
}
ParallelAxisView2.type = 'parallelAxis'
return ParallelAxisView2
})(ComponentView$1)
function fromAxisAreaSelect(axisModel, ecModel, payload) {
return (
payload &&
payload.type === 'axisAreaSelect' &&
ecModel.findComponents({
mainType: 'parallelAxis',
query: payload,
})[0] === axisModel
)
}
function getCoverInfoList(axisModel) {
var axis = axisModel.axis
return map$1(axisModel.activeIntervals, function (interval) {
return {
brushType: 'lineX',
panelId: 'pl',
range: [
axis.dataToCoord(interval[0], true),
axis.dataToCoord(interval[1], true),
],
}
})
}
function getCoordSysModel(axisModel, ecModel) {
return ecModel.getComponent('parallel', axisModel.get('parallelIndex'))
}
var ParallelAxisView$1 = ParallelAxisView
var actionInfo = {
type: 'axisAreaSelect',
event: 'axisAreaSelected',
}
function installParallelActions(registers) {
registers.registerAction(actionInfo, function (payload, ecModel) {
ecModel.eachComponent(
{
mainType: 'parallelAxis',
query: payload,
},
function (parallelAxisModel) {
parallelAxisModel.axis.model.setActiveIntervals(payload.intervals)
}
)
})
registers.registerAction('parallelAxisExpand', function (payload, ecModel) {
ecModel.eachComponent(
{
mainType: 'parallel',
query: payload,
},
function (parallelModel) {
parallelModel.setAxisExpand(payload)
}
)
})
}
var defaultAxisOption = {
type: 'value',
areaSelectStyle: {
width: 20,
borderWidth: 1,
borderColor: 'rgba(160,197,232)',
color: 'rgba(160,197,232)',
opacity: 0.3,
},
realtime: true,
z: 10,
}
function install$E(registers) {
registers.registerComponentView(ParallelView$1)
registers.registerComponentModel(ParallelModel$1)
registers.registerCoordinateSystem('parallel', parallelCoordSysCreator$1)
registers.registerPreprocessor(parallelPreprocessor)
registers.registerComponentModel(ParallelAxisModel$1)
registers.registerComponentView(ParallelAxisView$1)
axisModelCreator(
registers,
'parallel',
ParallelAxisModel$1,
defaultAxisOption
)
installParallelActions(registers)
}
function install$D(registers) {
use(install$E)
registers.registerChartView(ParallelView$3)
registers.registerSeriesModel(ParallelSeriesModel$1)
registers.registerVisual(registers.PRIORITY.VISUAL.BRUSH, parallelVisual$1)
}
var SankeyPathShape = (function () {
function SankeyPathShape2() {
this.x1 = 0
this.y1 = 0
this.x2 = 0
this.y2 = 0
this.cpx1 = 0
this.cpy1 = 0
this.cpx2 = 0
this.cpy2 = 0
this.extent = 0
}
return SankeyPathShape2
})()
var SankeyPath = (function (_super) {
__extends$2(SankeyPath2, _super)
function SankeyPath2(opts) {
return _super.call(this, opts) || this
}
SankeyPath2.prototype.getDefaultShape = function () {
return new SankeyPathShape()
}
SankeyPath2.prototype.buildPath = function (ctx, shape) {
var extent3 = shape.extent
ctx.moveTo(shape.x1, shape.y1)
ctx.bezierCurveTo(
shape.cpx1,
shape.cpy1,
shape.cpx2,
shape.cpy2,
shape.x2,
shape.y2
)
if (shape.orient === 'vertical') {
ctx.lineTo(shape.x2 + extent3, shape.y2)
ctx.bezierCurveTo(
shape.cpx2 + extent3,
shape.cpy2,
shape.cpx1 + extent3,
shape.cpy1,
shape.x1 + extent3,
shape.y1
)
} else {
ctx.lineTo(shape.x2, shape.y2 + extent3)
ctx.bezierCurveTo(
shape.cpx2,
shape.cpy2 + extent3,
shape.cpx1,
shape.cpy1 + extent3,
shape.x1,
shape.y1 + extent3
)
}
ctx.closePath()
}
SankeyPath2.prototype.highlight = function () {
enterEmphasis(this)
}
SankeyPath2.prototype.downplay = function () {
leaveEmphasis(this)
}
return SankeyPath2
})(Path$1)
var SankeyView = (function (_super) {
__extends$2(SankeyView2, _super)
function SankeyView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = SankeyView2.type
_this._focusAdjacencyDisabled = false
return _this
}
SankeyView2.prototype.render = function (seriesModel, ecModel, api) {
var sankeyView = this
var graph = seriesModel.getGraph()
var group = this.group
var layoutInfo = seriesModel.layoutInfo
var width = layoutInfo.width
var height = layoutInfo.height
var nodeData = seriesModel.getData()
var edgeData = seriesModel.getData('edge')
var orient = seriesModel.get('orient')
this._model = seriesModel
group.removeAll()
group.x = layoutInfo.x
group.y = layoutInfo.y
graph.eachEdge(function (edge) {
var curve = new SankeyPath()
var ecData = getECData(curve)
ecData.dataIndex = edge.dataIndex
ecData.seriesIndex = seriesModel.seriesIndex
ecData.dataType = 'edge'
var edgeModel = edge.getModel()
var lineStyleModel = edgeModel.getModel('lineStyle')
var curvature = lineStyleModel.get('curveness')
var n1Layout = edge.node1.getLayout()
var node1Model = edge.node1.getModel()
var dragX1 = node1Model.get('localX')
var dragY1 = node1Model.get('localY')
var n2Layout = edge.node2.getLayout()
var node2Model = edge.node2.getModel()
var dragX2 = node2Model.get('localX')
var dragY2 = node2Model.get('localY')
var edgeLayout = edge.getLayout()
var x1
var y1
var x2
var y2
var cpx1
var cpy1
var cpx2
var cpy2
curve.shape.extent = Math.max(1, edgeLayout.dy)
curve.shape.orient = orient
if (orient === 'vertical') {
x1 = (dragX1 != null ? dragX1 * width : n1Layout.x) + edgeLayout.sy
y1 = (dragY1 != null ? dragY1 * height : n1Layout.y) + n1Layout.dy
x2 = (dragX2 != null ? dragX2 * width : n2Layout.x) + edgeLayout.ty
y2 = dragY2 != null ? dragY2 * height : n2Layout.y
cpx1 = x1
cpy1 = y1 * (1 - curvature) + y2 * curvature
cpx2 = x2
cpy2 = y1 * curvature + y2 * (1 - curvature)
} else {
x1 = (dragX1 != null ? dragX1 * width : n1Layout.x) + n1Layout.dx
y1 = (dragY1 != null ? dragY1 * height : n1Layout.y) + edgeLayout.sy
x2 = dragX2 != null ? dragX2 * width : n2Layout.x
y2 = (dragY2 != null ? dragY2 * height : n2Layout.y) + edgeLayout.ty
cpx1 = x1 * (1 - curvature) + x2 * curvature
cpy1 = y1
cpx2 = x1 * curvature + x2 * (1 - curvature)
cpy2 = y2
}
curve.setShape({
x1,
y1,
x2,
y2,
cpx1,
cpy1,
cpx2,
cpy2,
})
curve.useStyle(lineStyleModel.getItemStyle())
applyCurveStyle(curve.style, orient, edge)
var defaultEdgeLabelText = '' + edgeModel.get('value')
var edgeLabelStateModels = getLabelStatesModels(edgeModel, 'edgeLabel')
setLabelStyle(curve, edgeLabelStateModels, {
labelFetcher: {
getFormattedLabel: function (
dataIndex,
stateName,
dataType2,
labelDimIndex,
formatter2,
extendParams
) {
return seriesModel.getFormattedLabel(
dataIndex,
stateName,
'edge',
labelDimIndex,
retrieve3(
formatter2,
edgeLabelStateModels.normal &&
edgeLabelStateModels.normal.get('formatter'),
defaultEdgeLabelText
),
extendParams
)
},
},
labelDataIndex: edge.dataIndex,
defaultText: defaultEdgeLabelText,
})
curve.setTextConfig({
position: 'inside',
})
var emphasisModel = edgeModel.getModel('emphasis')
setStatesStylesFromModel(curve, edgeModel, 'lineStyle', function (model) {
var style2 = model.getItemStyle()
applyCurveStyle(style2, orient, edge)
return style2
})
group.add(curve)
edgeData.setItemGraphicEl(edge.dataIndex, curve)
var focus2 = emphasisModel.get('focus')
toggleHoverEmphasis(
curve,
focus2 === 'adjacency'
? edge.getAdjacentDataIndices()
: focus2 === 'trajectory'
? edge.getTrajectoryDataIndices()
: focus2,
emphasisModel.get('blurScope'),
emphasisModel.get('disabled')
)
})
graph.eachNode(function (node2) {
var layout2 = node2.getLayout()
var itemModel = node2.getModel()
var dragX = itemModel.get('localX')
var dragY = itemModel.get('localY')
var emphasisModel = itemModel.getModel('emphasis')
var rect = new Rect$4({
shape: {
x: dragX != null ? dragX * width : layout2.x,
y: dragY != null ? dragY * height : layout2.y,
width: layout2.dx,
height: layout2.dy,
},
style: itemModel.getModel('itemStyle').getItemStyle(),
z2: 10,
})
setLabelStyle(rect, getLabelStatesModels(itemModel), {
labelFetcher: {
getFormattedLabel: function (dataIndex, stateName) {
return seriesModel.getFormattedLabel(dataIndex, stateName, 'node')
},
},
labelDataIndex: node2.dataIndex,
defaultText: node2.id,
})
rect.disableLabelAnimation = true
rect.setStyle('fill', node2.getVisual('color'))
rect.setStyle('decal', node2.getVisual('style').decal)
setStatesStylesFromModel(rect, itemModel)
group.add(rect)
nodeData.setItemGraphicEl(node2.dataIndex, rect)
getECData(rect).dataType = 'node'
var focus2 = emphasisModel.get('focus')
toggleHoverEmphasis(
rect,
focus2 === 'adjacency'
? node2.getAdjacentDataIndices()
: focus2 === 'trajectory'
? node2.getTrajectoryDataIndices()
: focus2,
emphasisModel.get('blurScope'),
emphasisModel.get('disabled')
)
})
nodeData.eachItemGraphicEl(function (el2, dataIndex) {
var itemModel = nodeData.getItemModel(dataIndex)
if (itemModel.get('draggable')) {
el2.drift = function (dx, dy) {
sankeyView._focusAdjacencyDisabled = true
this.shape.x += dx
this.shape.y += dy
this.dirty()
api.dispatchAction({
type: 'dragNode',
seriesId: seriesModel.id,
dataIndex: nodeData.getRawIndex(dataIndex),
localX: this.shape.x / width,
localY: this.shape.y / height,
})
}
el2.ondragend = function () {
sankeyView._focusAdjacencyDisabled = false
}
el2.draggable = true
el2.cursor = 'move'
}
})
if (!this._data && seriesModel.isAnimationEnabled()) {
group.setClipPath(
createGridClipShape$1(
group.getBoundingRect(),
seriesModel,
function () {
group.removeClipPath()
}
)
)
}
this._data = seriesModel.getData()
}
SankeyView2.prototype.dispose = function () {}
SankeyView2.type = 'sankey'
return SankeyView2
})(ChartView$1)
function applyCurveStyle(curveProps, orient, edge) {
switch (curveProps.fill) {
case 'source':
curveProps.fill = edge.node1.getVisual('color')
curveProps.decal = edge.node1.getVisual('style').decal
break
case 'target':
curveProps.fill = edge.node2.getVisual('color')
curveProps.decal = edge.node2.getVisual('style').decal
break
case 'gradient':
var sourceColor = edge.node1.getVisual('color')
var targetColor = edge.node2.getVisual('color')
if (isString$2(sourceColor) && isString$2(targetColor)) {
curveProps.fill = new LinearGradient$1(
0,
0,
+(orient === 'horizontal'),
+(orient === 'vertical'),
[
{
color: sourceColor,
offset: 0,
},
{
color: targetColor,
offset: 1,
},
]
)
}
}
}
function createGridClipShape$1(rect, seriesModel, cb) {
var rectEl = new Rect$4({
shape: {
x: rect.x - 10,
y: rect.y - 10,
width: 0,
height: rect.height + 20,
},
})
initProps(
rectEl,
{
shape: {
width: rect.width + 20,
},
},
seriesModel,
cb
)
return rectEl
}
var SankeyView$1 = SankeyView
var SankeySeriesModel = (function (_super) {
__extends$2(SankeySeriesModel2, _super)
function SankeySeriesModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = SankeySeriesModel2.type
return _this
}
SankeySeriesModel2.prototype.getInitialData = function (option2, ecModel) {
var links = option2.edges || option2.links
var nodes = option2.data || option2.nodes
var levels = option2.levels
this.levelModels = []
var levelModels = this.levelModels
for (var i2 = 0; i2 < levels.length; i2++) {
if (levels[i2].depth != null && levels[i2].depth >= 0) {
levelModels[levels[i2].depth] = new Model$1(levels[i2], this, ecModel)
}
}
if (nodes && links) {
var graph = createGraphFromNodeEdge(nodes, links, this, true, beforeLink)
return graph.data
}
function beforeLink(nodeData, edgeData) {
nodeData.wrapMethod('getItemModel', function (model, idx) {
var seriesModel = model.parentModel
var layout2 = seriesModel.getData().getItemLayout(idx)
if (layout2) {
var nodeDepth = layout2.depth
var levelModel = seriesModel.levelModels[nodeDepth]
if (levelModel) {
model.parentModel = levelModel
}
}
return model
})
edgeData.wrapMethod('getItemModel', function (model, idx) {
var seriesModel = model.parentModel
var edge = seriesModel.getGraph().getEdgeByIndex(idx)
var layout2 = edge.node1.getLayout()
if (layout2) {
var depth = layout2.depth
var levelModel = seriesModel.levelModels[depth]
if (levelModel) {
model.parentModel = levelModel
}
}
return model
})
}
}
SankeySeriesModel2.prototype.setNodePosition = function (
dataIndex,
localPosition
) {
var nodes = this.option.data || this.option.nodes
var dataItem = nodes[dataIndex]
dataItem.localX = localPosition[0]
dataItem.localY = localPosition[1]
}
SankeySeriesModel2.prototype.getGraph = function () {
return this.getData().graph
}
SankeySeriesModel2.prototype.getEdgeData = function () {
return this.getGraph().edgeData
}
SankeySeriesModel2.prototype.formatTooltip = function (
dataIndex,
multipleSeries,
dataType2
) {
function noValue(val2) {
return isNaN(val2) || val2 == null
}
if (dataType2 === 'edge') {
var params2 = this.getDataParams(dataIndex, dataType2)
var rawDataOpt = params2.data
var edgeValue = params2.value
var edgeName = rawDataOpt.source + ' -- ' + rawDataOpt.target
return createTooltipMarkup('nameValue', {
name: edgeName,
value: edgeValue,
noValue: noValue(edgeValue),
})
} else {
var node2 = this.getGraph().getNodeByIndex(dataIndex)
var value2 = node2.getLayout().value
var name_1 = this.getDataParams(dataIndex, dataType2).data.name
return createTooltipMarkup('nameValue', {
name: name_1 != null ? name_1 + '' : null,
value: value2,
noValue: noValue(value2),
})
}
}
SankeySeriesModel2.prototype.optionUpdated = function () {}
SankeySeriesModel2.prototype.getDataParams = function (dataIndex, dataType2) {
var params2 = _super.prototype.getDataParams.call(
this,
dataIndex,
dataType2
)
if (params2.value == null && dataType2 === 'node') {
var node2 = this.getGraph().getNodeByIndex(dataIndex)
var nodeValue = node2.getLayout().value
params2.value = nodeValue
}
return params2
}
SankeySeriesModel2.type = 'series.sankey'
SankeySeriesModel2.defaultOption = {
z: 2,
coordinateSystem: 'view',
left: '5%',
top: '5%',
right: '20%',
bottom: '5%',
orient: 'horizontal',
nodeWidth: 20,
nodeGap: 8,
draggable: true,
layoutIterations: 32,
label: {
show: true,
position: 'right',
fontSize: 12,
},
edgeLabel: {
show: false,
fontSize: 12,
},
levels: [],
nodeAlign: 'justify',
lineStyle: {
color: '#314656',
opacity: 0.2,
curveness: 0.5,
},
emphasis: {
label: {
show: true,
},
lineStyle: {
opacity: 0.5,
},
},
select: {
itemStyle: {
borderColor: '#212121',
},
},
animationEasing: 'linear',
animationDuration: 1e3,
}
return SankeySeriesModel2
})(SeriesModel$1)
var SankeySeriesModel$1 = SankeySeriesModel
function sankeyLayout(ecModel, api) {
ecModel.eachSeriesByType('sankey', function (seriesModel) {
var nodeWidth = seriesModel.get('nodeWidth')
var nodeGap = seriesModel.get('nodeGap')
var layoutInfo = getViewRect$1(seriesModel, api)
seriesModel.layoutInfo = layoutInfo
var width = layoutInfo.width
var height = layoutInfo.height
var graph = seriesModel.getGraph()
var nodes = graph.nodes
var edges = graph.edges
computeNodeValues(nodes)
var filteredNodes = filter(nodes, function (node2) {
return node2.getLayout().value === 0
})
var iterations =
filteredNodes.length !== 0 ? 0 : seriesModel.get('layoutIterations')
var orient = seriesModel.get('orient')
var nodeAlign = seriesModel.get('nodeAlign')
layoutSankey(
nodes,
edges,
nodeWidth,
nodeGap,
width,
height,
iterations,
orient,
nodeAlign
)
})
}
function getViewRect$1(seriesModel, api) {
return getLayoutRect(seriesModel.getBoxLayoutParams(), {
width: api.getWidth(),
height: api.getHeight(),
})
}
function layoutSankey(
nodes,
edges,
nodeWidth,
nodeGap,
width,
height,
iterations,
orient,
nodeAlign
) {
computeNodeBreadths(nodes, edges, nodeWidth, width, height, orient, nodeAlign)
computeNodeDepths(nodes, edges, height, width, nodeGap, iterations, orient)
computeEdgeDepths(nodes, orient)
}
function computeNodeValues(nodes) {
each$f(nodes, function (node2) {
var value1 = sum(node2.outEdges, getEdgeValue)
var value2 = sum(node2.inEdges, getEdgeValue)
var nodeRawValue = node2.getValue() || 0
var value3 = Math.max(value1, value2, nodeRawValue)
node2.setLayout(
{
value: value3,
},
true
)
})
}
function computeNodeBreadths(
nodes,
edges,
nodeWidth,
width,
height,
orient,
nodeAlign
) {
var remainEdges = []
var indegreeArr = []
var zeroIndegrees = []
var nextTargetNode = []
var x2 = 0
for (var i2 = 0; i2 < edges.length; i2++) {
remainEdges[i2] = 1
}
for (var i2 = 0; i2 < nodes.length; i2++) {
indegreeArr[i2] = nodes[i2].inEdges.length
if (indegreeArr[i2] === 0) {
zeroIndegrees.push(nodes[i2])
}
}
var maxNodeDepth = -1
while (zeroIndegrees.length) {
for (var idx = 0; idx < zeroIndegrees.length; idx++) {
var node2 = zeroIndegrees[idx]
var item2 = node2.hostGraph.data.getRawDataItem(node2.dataIndex)
var isItemDepth = item2.depth != null && item2.depth >= 0
if (isItemDepth && item2.depth > maxNodeDepth) {
maxNodeDepth = item2.depth
}
node2.setLayout(
{
depth: isItemDepth ? item2.depth : x2,
},
true
)
orient === 'vertical'
? node2.setLayout(
{
dy: nodeWidth,
},
true
)
: node2.setLayout(
{
dx: nodeWidth,
},
true
)
for (var edgeIdx = 0; edgeIdx < node2.outEdges.length; edgeIdx++) {
var edge = node2.outEdges[edgeIdx]
var indexEdge = edges.indexOf(edge)
remainEdges[indexEdge] = 0
var targetNode = edge.node2
var nodeIndex = nodes.indexOf(targetNode)
if (
--indegreeArr[nodeIndex] === 0 &&
nextTargetNode.indexOf(targetNode) < 0
) {
nextTargetNode.push(targetNode)
}
}
}
++x2
zeroIndegrees = nextTargetNode
nextTargetNode = []
}
for (var i2 = 0; i2 < remainEdges.length; i2++) {
if (remainEdges[i2] === 1) {
throw new Error('Sankey is a DAG, the original data has cycle!')
}
}
var maxDepth = maxNodeDepth > x2 - 1 ? maxNodeDepth : x2 - 1
if (nodeAlign && nodeAlign !== 'left') {
adjustNodeWithNodeAlign(nodes, nodeAlign, orient, maxDepth)
}
var kx =
orient === 'vertical'
? (height - nodeWidth) / maxDepth
: (width - nodeWidth) / maxDepth
scaleNodeBreadths(nodes, kx, orient)
}
function isNodeDepth(node2) {
var item2 = node2.hostGraph.data.getRawDataItem(node2.dataIndex)
return item2.depth != null && item2.depth >= 0
}
function adjustNodeWithNodeAlign(nodes, nodeAlign, orient, maxDepth) {
if (nodeAlign === 'right') {
var nextSourceNode = []
var remainNodes = nodes
var nodeHeight = 0
while (remainNodes.length) {
for (var i2 = 0; i2 < remainNodes.length; i2++) {
var node2 = remainNodes[i2]
node2.setLayout(
{
skNodeHeight: nodeHeight,
},
true
)
for (var j2 = 0; j2 < node2.inEdges.length; j2++) {
var edge = node2.inEdges[j2]
if (nextSourceNode.indexOf(edge.node1) < 0) {
nextSourceNode.push(edge.node1)
}
}
}
remainNodes = nextSourceNode
nextSourceNode = []
++nodeHeight
}
each$f(nodes, function (node3) {
if (!isNodeDepth(node3)) {
node3.setLayout(
{
depth: Math.max(0, maxDepth - node3.getLayout().skNodeHeight),
},
true
)
}
})
} else if (nodeAlign === 'justify') {
moveSinksRight(nodes, maxDepth)
}
}
function moveSinksRight(nodes, maxDepth) {
each$f(nodes, function (node2) {
if (!isNodeDepth(node2) && !node2.outEdges.length) {
node2.setLayout(
{
depth: maxDepth,
},
true
)
}
})
}
function scaleNodeBreadths(nodes, kx, orient) {
each$f(nodes, function (node2) {
var nodeDepth = node2.getLayout().depth * kx
orient === 'vertical'
? node2.setLayout(
{
y: nodeDepth,
},
true
)
: node2.setLayout(
{
x: nodeDepth,
},
true
)
})
}
function computeNodeDepths(
nodes,
edges,
height,
width,
nodeGap,
iterations,
orient
) {
var nodesByBreadth = prepareNodesByBreadth(nodes, orient)
initializeNodeDepth(nodesByBreadth, edges, height, width, nodeGap, orient)
resolveCollisions(nodesByBreadth, nodeGap, height, width, orient)
for (var alpha = 1; iterations > 0; iterations--) {
alpha *= 0.99
relaxRightToLeft(nodesByBreadth, alpha, orient)
resolveCollisions(nodesByBreadth, nodeGap, height, width, orient)
relaxLeftToRight(nodesByBreadth, alpha, orient)
resolveCollisions(nodesByBreadth, nodeGap, height, width, orient)
}
}
function prepareNodesByBreadth(nodes, orient) {
var nodesByBreadth = []
var keyAttr = orient === 'vertical' ? 'y' : 'x'
var groupResult = groupData(nodes, function (node2) {
return node2.getLayout()[keyAttr]
})
groupResult.keys.sort(function (a2, b2) {
return a2 - b2
})
each$f(groupResult.keys, function (key2) {
nodesByBreadth.push(groupResult.buckets.get(key2))
})
return nodesByBreadth
}
function initializeNodeDepth(
nodesByBreadth,
edges,
height,
width,
nodeGap,
orient
) {
var minKy = Infinity
each$f(nodesByBreadth, function (nodes) {
var n2 = nodes.length
var sum2 = 0
each$f(nodes, function (node2) {
sum2 += node2.getLayout().value
})
var ky2 =
orient === 'vertical'
? (width - (n2 - 1) * nodeGap) / sum2
: (height - (n2 - 1) * nodeGap) / sum2
if (ky2 < minKy) {
minKy = ky2
}
})
each$f(nodesByBreadth, function (nodes) {
each$f(nodes, function (node2, i2) {
var nodeDy = node2.getLayout().value * minKy
if (orient === 'vertical') {
node2.setLayout(
{
x: i2,
},
true
)
node2.setLayout(
{
dx: nodeDy,
},
true
)
} else {
node2.setLayout(
{
y: i2,
},
true
)
node2.setLayout(
{
dy: nodeDy,
},
true
)
}
})
})
each$f(edges, function (edge) {
var edgeDy = +edge.getValue() * minKy
edge.setLayout(
{
dy: edgeDy,
},
true
)
})
}
function resolveCollisions(nodesByBreadth, nodeGap, height, width, orient) {
var keyAttr = orient === 'vertical' ? 'x' : 'y'
each$f(nodesByBreadth, function (nodes) {
nodes.sort(function (a2, b2) {
return a2.getLayout()[keyAttr] - b2.getLayout()[keyAttr]
})
var nodeX
var node2
var dy
var y0 = 0
var n2 = nodes.length
var nodeDyAttr = orient === 'vertical' ? 'dx' : 'dy'
for (var i2 = 0; i2 < n2; i2++) {
node2 = nodes[i2]
dy = y0 - node2.getLayout()[keyAttr]
if (dy > 0) {
nodeX = node2.getLayout()[keyAttr] + dy
orient === 'vertical'
? node2.setLayout(
{
x: nodeX,
},
true
)
: node2.setLayout(
{
y: nodeX,
},
true
)
}
y0 = node2.getLayout()[keyAttr] + node2.getLayout()[nodeDyAttr] + nodeGap
}
var viewWidth = orient === 'vertical' ? width : height
dy = y0 - nodeGap - viewWidth
if (dy > 0) {
nodeX = node2.getLayout()[keyAttr] - dy
orient === 'vertical'
? node2.setLayout(
{
x: nodeX,
},
true
)
: node2.setLayout(
{
y: nodeX,
},
true
)
y0 = nodeX
for (var i2 = n2 - 2; i2 >= 0; --i2) {
node2 = nodes[i2]
dy =
node2.getLayout()[keyAttr] +
node2.getLayout()[nodeDyAttr] +
nodeGap -
y0
if (dy > 0) {
nodeX = node2.getLayout()[keyAttr] - dy
orient === 'vertical'
? node2.setLayout(
{
x: nodeX,
},
true
)
: node2.setLayout(
{
y: nodeX,
},
true
)
}
y0 = node2.getLayout()[keyAttr]
}
}
})
}
function relaxRightToLeft(nodesByBreadth, alpha, orient) {
each$f(nodesByBreadth.slice().reverse(), function (nodes) {
each$f(nodes, function (node2) {
if (node2.outEdges.length) {
var y2 =
sum(node2.outEdges, weightedTarget, orient) /
sum(node2.outEdges, getEdgeValue)
if (isNaN(y2)) {
var len2 = node2.outEdges.length
y2 = len2 ? sum(node2.outEdges, centerTarget, orient) / len2 : 0
}
if (orient === 'vertical') {
var nodeX = node2.getLayout().x + (y2 - center(node2, orient)) * alpha
node2.setLayout(
{
x: nodeX,
},
true
)
} else {
var nodeY = node2.getLayout().y + (y2 - center(node2, orient)) * alpha
node2.setLayout(
{
y: nodeY,
},
true
)
}
}
})
})
}
function weightedTarget(edge, orient) {
return center(edge.node2, orient) * edge.getValue()
}
function centerTarget(edge, orient) {
return center(edge.node2, orient)
}
function weightedSource(edge, orient) {
return center(edge.node1, orient) * edge.getValue()
}
function centerSource(edge, orient) {
return center(edge.node1, orient)
}
function center(node2, orient) {
return orient === 'vertical'
? node2.getLayout().x + node2.getLayout().dx / 2
: node2.getLayout().y + node2.getLayout().dy / 2
}
function getEdgeValue(edge) {
return edge.getValue()
}
function sum(array4, cb, orient) {
var sum2 = 0
var len2 = array4.length
var i2 = -1
while (++i2 < len2) {
var value2 = +cb(array4[i2], orient)
if (!isNaN(value2)) {
sum2 += value2
}
}
return sum2
}
function relaxLeftToRight(nodesByBreadth, alpha, orient) {
each$f(nodesByBreadth, function (nodes) {
each$f(nodes, function (node2) {
if (node2.inEdges.length) {
var y2 =
sum(node2.inEdges, weightedSource, orient) /
sum(node2.inEdges, getEdgeValue)
if (isNaN(y2)) {
var len2 = node2.inEdges.length
y2 = len2 ? sum(node2.inEdges, centerSource, orient) / len2 : 0
}
if (orient === 'vertical') {
var nodeX = node2.getLayout().x + (y2 - center(node2, orient)) * alpha
node2.setLayout(
{
x: nodeX,
},
true
)
} else {
var nodeY = node2.getLayout().y + (y2 - center(node2, orient)) * alpha
node2.setLayout(
{
y: nodeY,
},
true
)
}
}
})
})
}
function computeEdgeDepths(nodes, orient) {
var keyAttr = orient === 'vertical' ? 'x' : 'y'
each$f(nodes, function (node2) {
node2.outEdges.sort(function (a2, b2) {
return a2.node2.getLayout()[keyAttr] - b2.node2.getLayout()[keyAttr]
})
node2.inEdges.sort(function (a2, b2) {
return a2.node1.getLayout()[keyAttr] - b2.node1.getLayout()[keyAttr]
})
})
each$f(nodes, function (node2) {
var sy = 0
var ty = 0
each$f(node2.outEdges, function (edge) {
edge.setLayout(
{
sy,
},
true
)
sy += edge.getLayout().dy
})
each$f(node2.inEdges, function (edge) {
edge.setLayout(
{
ty,
},
true
)
ty += edge.getLayout().dy
})
})
}
function sankeyVisual(ecModel) {
ecModel.eachSeriesByType('sankey', function (seriesModel) {
var graph = seriesModel.getGraph()
var nodes = graph.nodes
var edges = graph.edges
if (nodes.length) {
var minValue_1 = Infinity
var maxValue_1 = -Infinity
each$f(nodes, function (node2) {
var nodeValue = node2.getLayout().value
if (nodeValue < minValue_1) {
minValue_1 = nodeValue
}
if (nodeValue > maxValue_1) {
maxValue_1 = nodeValue
}
})
each$f(nodes, function (node2) {
var mapping = new VisualMapping$1({
type: 'color',
mappingMethod: 'linear',
dataExtent: [minValue_1, maxValue_1],
visual: seriesModel.get('color'),
})
var mapValueToColor = mapping.mapValueToVisual(node2.getLayout().value)
var customColor = node2.getModel().get(['itemStyle', 'color'])
if (customColor != null) {
node2.setVisual('color', customColor)
node2.setVisual('style', {
fill: customColor,
})
} else {
node2.setVisual('color', mapValueToColor)
node2.setVisual('style', {
fill: mapValueToColor,
})
}
})
}
if (edges.length) {
each$f(edges, function (edge) {
var edgeStyle = edge.getModel().get('lineStyle')
edge.setVisual('style', edgeStyle)
})
}
})
}
function install$C(registers) {
registers.registerChartView(SankeyView$1)
registers.registerSeriesModel(SankeySeriesModel$1)
registers.registerLayout(sankeyLayout)
registers.registerVisual(sankeyVisual)
registers.registerAction(
{
type: 'dragNode',
event: 'dragnode',
update: 'update',
},
function (payload, ecModel) {
ecModel.eachComponent(
{
mainType: 'series',
subType: 'sankey',
query: payload,
},
function (seriesModel) {
seriesModel.setNodePosition(payload.dataIndex, [
payload.localX,
payload.localY,
])
}
)
}
)
}
var WhiskerBoxCommonMixin = (function () {
function WhiskerBoxCommonMixin2() {}
WhiskerBoxCommonMixin2.prototype.getInitialData = function (
option2,
ecModel
) {
var ordinalMeta
var xAxisModel = ecModel.getComponent('xAxis', this.get('xAxisIndex'))
var yAxisModel = ecModel.getComponent('yAxis', this.get('yAxisIndex'))
var xAxisType = xAxisModel.get('type')
var yAxisType = yAxisModel.get('type')
var addOrdinal
if (xAxisType === 'category') {
option2.layout = 'horizontal'
ordinalMeta = xAxisModel.getOrdinalMeta()
addOrdinal = true
} else if (yAxisType === 'category') {
option2.layout = 'vertical'
ordinalMeta = yAxisModel.getOrdinalMeta()
addOrdinal = true
} else {
option2.layout = option2.layout || 'horizontal'
}
var coordDims = ['x', 'y']
var baseAxisDimIndex = option2.layout === 'horizontal' ? 0 : 1
var baseAxisDim = (this._baseAxisDim = coordDims[baseAxisDimIndex])
var otherAxisDim = coordDims[1 - baseAxisDimIndex]
var axisModels = [xAxisModel, yAxisModel]
var baseAxisType = axisModels[baseAxisDimIndex].get('type')
var otherAxisType = axisModels[1 - baseAxisDimIndex].get('type')
var data2 = option2.data
if (data2 && addOrdinal) {
var newOptionData_1 = []
each$f(data2, function (item2, index2) {
var newItem
if (isArray$6(item2)) {
newItem = item2.slice()
item2.unshift(index2)
} else if (isArray$6(item2.value)) {
newItem = extend({}, item2)
newItem.value = newItem.value.slice()
item2.value.unshift(index2)
} else {
newItem = item2
}
newOptionData_1.push(newItem)
})
option2.data = newOptionData_1
}
var defaultValueDimensions = this.defaultValueDimensions
var coordDimensions = [
{
name: baseAxisDim,
type: getDimensionTypeByAxis(baseAxisType),
ordinalMeta,
otherDims: {
tooltip: false,
itemName: 0,
},
dimsDef: ['base'],
},
{
name: otherAxisDim,
type: getDimensionTypeByAxis(otherAxisType),
dimsDef: defaultValueDimensions.slice(),
},
]
return createSeriesDataSimply(this, {
coordDimensions,
dimensionsCount: defaultValueDimensions.length + 1,
encodeDefaulter: curry$1(
makeSeriesEncodeForAxisCoordSys,
coordDimensions,
this
),
})
}
WhiskerBoxCommonMixin2.prototype.getBaseAxis = function () {
var dim = this._baseAxisDim
return this.ecModel.getComponent(dim + 'Axis', this.get(dim + 'AxisIndex'))
.axis
}
return WhiskerBoxCommonMixin2
})()
var BoxplotSeriesModel = (function (_super) {
__extends$2(BoxplotSeriesModel2, _super)
function BoxplotSeriesModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = BoxplotSeriesModel2.type
_this.defaultValueDimensions = [
{
name: 'min',
defaultTooltip: true,
},
{
name: 'Q1',
defaultTooltip: true,
},
{
name: 'median',
defaultTooltip: true,
},
{
name: 'Q3',
defaultTooltip: true,
},
{
name: 'max',
defaultTooltip: true,
},
]
_this.visualDrawType = 'stroke'
return _this
}
BoxplotSeriesModel2.type = 'series.boxplot'
BoxplotSeriesModel2.dependencies = ['xAxis', 'yAxis', 'grid']
BoxplotSeriesModel2.defaultOption = {
z: 2,
coordinateSystem: 'cartesian2d',
legendHoverLink: true,
layout: null,
boxWidth: [7, 50],
itemStyle: {
color: '#fff',
borderWidth: 1,
},
emphasis: {
scale: true,
itemStyle: {
borderWidth: 2,
shadowBlur: 5,
shadowOffsetX: 1,
shadowOffsetY: 1,
shadowColor: 'rgba(0,0,0,0.2)',
},
},
animationDuration: 800,
}
return BoxplotSeriesModel2
})(SeriesModel$1)
mixin(BoxplotSeriesModel, WhiskerBoxCommonMixin, true)
var BoxplotSeriesModel$1 = BoxplotSeriesModel
var BoxplotView = (function (_super) {
__extends$2(BoxplotView2, _super)
function BoxplotView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = BoxplotView2.type
return _this
}
BoxplotView2.prototype.render = function (seriesModel, ecModel, api) {
var data2 = seriesModel.getData()
var group = this.group
var oldData = this._data
if (!this._data) {
group.removeAll()
}
var constDim = seriesModel.get('layout') === 'horizontal' ? 1 : 0
data2
.diff(oldData)
.add(function (newIdx) {
if (data2.hasValue(newIdx)) {
var itemLayout = data2.getItemLayout(newIdx)
var symbolEl = createNormalBox$1(
itemLayout,
data2,
newIdx,
constDim,
true
)
data2.setItemGraphicEl(newIdx, symbolEl)
group.add(symbolEl)
}
})
.update(function (newIdx, oldIdx) {
var symbolEl = oldData.getItemGraphicEl(oldIdx)
if (!data2.hasValue(newIdx)) {
group.remove(symbolEl)
return
}
var itemLayout = data2.getItemLayout(newIdx)
if (!symbolEl) {
symbolEl = createNormalBox$1(itemLayout, data2, newIdx, constDim)
} else {
saveOldStyle(symbolEl)
updateNormalBoxData(itemLayout, symbolEl, data2, newIdx)
}
group.add(symbolEl)
data2.setItemGraphicEl(newIdx, symbolEl)
})
.remove(function (oldIdx) {
var el2 = oldData.getItemGraphicEl(oldIdx)
el2 && group.remove(el2)
})
.execute()
this._data = data2
}
BoxplotView2.prototype.remove = function (ecModel) {
var group = this.group
var data2 = this._data
this._data = null
data2 &&
data2.eachItemGraphicEl(function (el2) {
el2 && group.remove(el2)
})
}
BoxplotView2.type = 'boxplot'
return BoxplotView2
})(ChartView$1)
var BoxPathShape = (function () {
function BoxPathShape2() {}
return BoxPathShape2
})()
var BoxPath = (function (_super) {
__extends$2(BoxPath2, _super)
function BoxPath2(opts) {
var _this = _super.call(this, opts) || this
_this.type = 'boxplotBoxPath'
return _this
}
BoxPath2.prototype.getDefaultShape = function () {
return new BoxPathShape()
}
BoxPath2.prototype.buildPath = function (ctx, shape) {
var ends = shape.points
var i2 = 0
ctx.moveTo(ends[i2][0], ends[i2][1])
i2++
for (; i2 < 4; i2++) {
ctx.lineTo(ends[i2][0], ends[i2][1])
}
ctx.closePath()
for (; i2 < ends.length; i2++) {
ctx.moveTo(ends[i2][0], ends[i2][1])
i2++
ctx.lineTo(ends[i2][0], ends[i2][1])
}
}
return BoxPath2
})(Path$1)
function createNormalBox$1(itemLayout, data2, dataIndex, constDim, isInit) {
var ends = itemLayout.ends
var el2 = new BoxPath({
shape: {
points: isInit ? transInit$1(ends, constDim, itemLayout) : ends,
},
})
updateNormalBoxData(itemLayout, el2, data2, dataIndex, isInit)
return el2
}
function updateNormalBoxData(itemLayout, el2, data2, dataIndex, isInit) {
var seriesModel = data2.hostModel
var updateMethod = graphic$1[isInit ? 'initProps' : 'updateProps']
updateMethod(
el2,
{
shape: {
points: itemLayout.ends,
},
},
seriesModel,
dataIndex
)
el2.useStyle(data2.getItemVisual(dataIndex, 'style'))
el2.style.strokeNoScale = true
el2.z2 = 100
var itemModel = data2.getItemModel(dataIndex)
var emphasisModel = itemModel.getModel('emphasis')
setStatesStylesFromModel(el2, itemModel)
toggleHoverEmphasis(
el2,
emphasisModel.get('focus'),
emphasisModel.get('blurScope'),
emphasisModel.get('disabled')
)
}
function transInit$1(points2, dim, itemLayout) {
return map$1(points2, function (point) {
point = point.slice()
point[dim] = itemLayout.initBaseline
return point
})
}
var BoxplotView$1 = BoxplotView
var each$9 = each$f
function boxplotLayout(ecModel) {
var groupResult = groupSeriesByAxis(ecModel)
each$9(groupResult, function (groupItem) {
var seriesModels = groupItem.seriesModels
if (!seriesModels.length) {
return
}
calculateBase(groupItem)
each$9(seriesModels, function (seriesModel, idx) {
layoutSingleSeries(
seriesModel,
groupItem.boxOffsetList[idx],
groupItem.boxWidthList[idx]
)
})
})
}
function groupSeriesByAxis(ecModel) {
var result = []
var axisList = []
ecModel.eachSeriesByType('boxplot', function (seriesModel) {
var baseAxis = seriesModel.getBaseAxis()
var idx = indexOf(axisList, baseAxis)
if (idx < 0) {
idx = axisList.length
axisList[idx] = baseAxis
result[idx] = {
axis: baseAxis,
seriesModels: [],
}
}
result[idx].seriesModels.push(seriesModel)
})
return result
}
function calculateBase(groupItem) {
var baseAxis = groupItem.axis
var seriesModels = groupItem.seriesModels
var seriesCount = seriesModels.length
var boxWidthList = (groupItem.boxWidthList = [])
var boxOffsetList = (groupItem.boxOffsetList = [])
var boundList = []
var bandWidth
if (baseAxis.type === 'category') {
bandWidth = baseAxis.getBandWidth()
} else {
var maxDataCount_1 = 0
each$9(seriesModels, function (seriesModel) {
maxDataCount_1 = Math.max(maxDataCount_1, seriesModel.getData().count())
})
var extent3 = baseAxis.getExtent()
bandWidth = Math.abs(extent3[1] - extent3[0]) / maxDataCount_1
}
each$9(seriesModels, function (seriesModel) {
var boxWidthBound = seriesModel.get('boxWidth')
if (!isArray$6(boxWidthBound)) {
boxWidthBound = [boxWidthBound, boxWidthBound]
}
boundList.push([
parsePercent(boxWidthBound[0], bandWidth) || 0,
parsePercent(boxWidthBound[1], bandWidth) || 0,
])
})
var availableWidth = bandWidth * 0.8 - 2
var boxGap = (availableWidth / seriesCount) * 0.3
var boxWidth = (availableWidth - boxGap * (seriesCount - 1)) / seriesCount
var base2 = boxWidth / 2 - availableWidth / 2
each$9(seriesModels, function (seriesModel, idx) {
boxOffsetList.push(base2)
base2 += boxGap + boxWidth
boxWidthList.push(
Math.min(Math.max(boxWidth, boundList[idx][0]), boundList[idx][1])
)
})
}
function layoutSingleSeries(seriesModel, offset2, boxWidth) {
var coordSys = seriesModel.coordinateSystem
var data2 = seriesModel.getData()
var halfWidth = boxWidth / 2
var cDimIdx = seriesModel.get('layout') === 'horizontal' ? 0 : 1
var vDimIdx = 1 - cDimIdx
var coordDims = ['x', 'y']
var cDim = data2.mapDimension(coordDims[cDimIdx])
var vDims = data2.mapDimensionsAll(coordDims[vDimIdx])
if (cDim == null || vDims.length < 5) {
return
}
for (var dataIndex = 0; dataIndex < data2.count(); dataIndex++) {
var axisDimVal = data2.get(cDim, dataIndex)
var median = getPoint(axisDimVal, vDims[2], dataIndex)
var end1 = getPoint(axisDimVal, vDims[0], dataIndex)
var end2 = getPoint(axisDimVal, vDims[1], dataIndex)
var end4 = getPoint(axisDimVal, vDims[3], dataIndex)
var end5 = getPoint(axisDimVal, vDims[4], dataIndex)
var ends = []
addBodyEnd(ends, end2, false)
addBodyEnd(ends, end4, true)
ends.push(end1, end2, end5, end4)
layEndLine(ends, end1)
layEndLine(ends, end5)
layEndLine(ends, median)
data2.setItemLayout(dataIndex, {
initBaseline: median[vDimIdx],
ends,
})
}
function getPoint(axisDimVal2, dim, dataIndex2) {
var val2 = data2.get(dim, dataIndex2)
var p2 = []
p2[cDimIdx] = axisDimVal2
p2[vDimIdx] = val2
var point
if (isNaN(axisDimVal2) || isNaN(val2)) {
point = [NaN, NaN]
} else {
point = coordSys.dataToPoint(p2)
point[cDimIdx] += offset2
}
return point
}
function addBodyEnd(ends2, point, start2) {
var point1 = point.slice()
var point2 = point.slice()
point1[cDimIdx] += halfWidth
point2[cDimIdx] -= halfWidth
start2 ? ends2.push(point1, point2) : ends2.push(point2, point1)
}
function layEndLine(ends2, endCenter) {
var from = endCenter.slice()
var to = endCenter.slice()
from[cDimIdx] -= halfWidth
to[cDimIdx] += halfWidth
ends2.push(from, to)
}
}
function prepareBoxplotData(rawData, opt) {
opt = opt || {}
var boxData = []
var outliers = []
var boundIQR = opt.boundIQR
var useExtreme = boundIQR === 'none' || boundIQR === 0
for (var i2 = 0; i2 < rawData.length; i2++) {
var ascList = asc$2(rawData[i2].slice())
var Q1 = quantile(ascList, 0.25)
var Q2 = quantile(ascList, 0.5)
var Q3 = quantile(ascList, 0.75)
var min3 = ascList[0]
var max3 = ascList[ascList.length - 1]
var bound = (boundIQR == null ? 1.5 : boundIQR) * (Q3 - Q1)
var low = useExtreme ? min3 : Math.max(min3, Q1 - bound)
var high = useExtreme ? max3 : Math.min(max3, Q3 + bound)
var itemNameFormatter = opt.itemNameFormatter
var itemName = isFunction$4(itemNameFormatter)
? itemNameFormatter({
value: i2,
})
: isString$2(itemNameFormatter)
? itemNameFormatter.replace('{value}', i2 + '')
: i2 + ''
boxData.push([itemName, low, Q1, Q2, Q3, high])
for (var j2 = 0; j2 < ascList.length; j2++) {
var dataItem = ascList[j2]
if (dataItem < low || dataItem > high) {
var outlier = [itemName, dataItem]
outliers.push(outlier)
}
}
}
return {
boxData,
outliers,
}
}
var boxplotTransform = {
type: 'echarts:boxplot',
transform: function transform2(params2) {
var upstream = params2.upstream
if (upstream.sourceFormat !== SOURCE_FORMAT_ARRAY_ROWS) {
var errMsg = ''
throwError(errMsg)
}
var result = prepareBoxplotData(upstream.getRawData(), params2.config)
return [
{
dimensions: ['ItemName', 'Low', 'Q1', 'Q2', 'Q3', 'High'],
data: result.boxData,
},
{
data: result.outliers,
},
]
},
}
function install$B(registers) {
registers.registerSeriesModel(BoxplotSeriesModel$1)
registers.registerChartView(BoxplotView$1)
registers.registerLayout(boxplotLayout)
registers.registerTransform(boxplotTransform)
}
var SKIP_PROPS = ['color', 'borderColor']
var CandlestickView = (function (_super) {
__extends$2(CandlestickView2, _super)
function CandlestickView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = CandlestickView2.type
return _this
}
CandlestickView2.prototype.render = function (seriesModel, ecModel, api) {
this.group.removeClipPath()
this._progressiveEls = null
this._updateDrawMode(seriesModel)
this._isLargeDraw
? this._renderLarge(seriesModel)
: this._renderNormal(seriesModel)
}
CandlestickView2.prototype.incrementalPrepareRender = function (
seriesModel,
ecModel,
api
) {
this._clear()
this._updateDrawMode(seriesModel)
}
CandlestickView2.prototype.incrementalRender = function (
params2,
seriesModel,
ecModel,
api
) {
this._progressiveEls = []
this._isLargeDraw
? this._incrementalRenderLarge(params2, seriesModel)
: this._incrementalRenderNormal(params2, seriesModel)
}
CandlestickView2.prototype.eachRendered = function (cb) {
traverseElements(this._progressiveEls || this.group, cb)
}
CandlestickView2.prototype._updateDrawMode = function (seriesModel) {
var isLargeDraw = seriesModel.pipelineContext.large
if (this._isLargeDraw == null || isLargeDraw !== this._isLargeDraw) {
this._isLargeDraw = isLargeDraw
this._clear()
}
}
CandlestickView2.prototype._renderNormal = function (seriesModel) {
var data2 = seriesModel.getData()
var oldData = this._data
var group = this.group
var isSimpleBox = data2.getLayout('isSimpleBox')
var needsClip = seriesModel.get('clip', true)
var coord = seriesModel.coordinateSystem
var clipArea = coord.getArea && coord.getArea()
if (!this._data) {
group.removeAll()
}
data2
.diff(oldData)
.add(function (newIdx) {
if (data2.hasValue(newIdx)) {
var itemLayout = data2.getItemLayout(newIdx)
if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) {
return
}
var el2 = createNormalBox(itemLayout, newIdx, true)
initProps(
el2,
{
shape: {
points: itemLayout.ends,
},
},
seriesModel,
newIdx
)
setBoxCommon(el2, data2, newIdx, isSimpleBox)
group.add(el2)
data2.setItemGraphicEl(newIdx, el2)
}
})
.update(function (newIdx, oldIdx) {
var el2 = oldData.getItemGraphicEl(oldIdx)
if (!data2.hasValue(newIdx)) {
group.remove(el2)
return
}
var itemLayout = data2.getItemLayout(newIdx)
if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) {
group.remove(el2)
return
}
if (!el2) {
el2 = createNormalBox(itemLayout)
} else {
updateProps$1(
el2,
{
shape: {
points: itemLayout.ends,
},
},
seriesModel,
newIdx
)
saveOldStyle(el2)
}
setBoxCommon(el2, data2, newIdx, isSimpleBox)
group.add(el2)
data2.setItemGraphicEl(newIdx, el2)
})
.remove(function (oldIdx) {
var el2 = oldData.getItemGraphicEl(oldIdx)
el2 && group.remove(el2)
})
.execute()
this._data = data2
}
CandlestickView2.prototype._renderLarge = function (seriesModel) {
this._clear()
createLarge(seriesModel, this.group)
var clipPath = seriesModel.get('clip', true)
? createClipPath(seriesModel.coordinateSystem, false, seriesModel)
: null
if (clipPath) {
this.group.setClipPath(clipPath)
} else {
this.group.removeClipPath()
}
}
CandlestickView2.prototype._incrementalRenderNormal = function (
params2,
seriesModel
) {
var data2 = seriesModel.getData()
var isSimpleBox = data2.getLayout('isSimpleBox')
var dataIndex
while ((dataIndex = params2.next()) != null) {
var itemLayout = data2.getItemLayout(dataIndex)
var el2 = createNormalBox(itemLayout)
setBoxCommon(el2, data2, dataIndex, isSimpleBox)
el2.incremental = true
this.group.add(el2)
this._progressiveEls.push(el2)
}
}
CandlestickView2.prototype._incrementalRenderLarge = function (
params2,
seriesModel
) {
createLarge(seriesModel, this.group, this._progressiveEls, true)
}
CandlestickView2.prototype.remove = function (ecModel) {
this._clear()
}
CandlestickView2.prototype._clear = function () {
this.group.removeAll()
this._data = null
}
CandlestickView2.type = 'candlestick'
return CandlestickView2
})(ChartView$1)
var NormalBoxPathShape = (function () {
function NormalBoxPathShape2() {}
return NormalBoxPathShape2
})()
var NormalBoxPath = (function (_super) {
__extends$2(NormalBoxPath2, _super)
function NormalBoxPath2(opts) {
var _this = _super.call(this, opts) || this
_this.type = 'normalCandlestickBox'
return _this
}
NormalBoxPath2.prototype.getDefaultShape = function () {
return new NormalBoxPathShape()
}
NormalBoxPath2.prototype.buildPath = function (ctx, shape) {
var ends = shape.points
if (this.__simpleBox) {
ctx.moveTo(ends[4][0], ends[4][1])
ctx.lineTo(ends[6][0], ends[6][1])
} else {
ctx.moveTo(ends[0][0], ends[0][1])
ctx.lineTo(ends[1][0], ends[1][1])
ctx.lineTo(ends[2][0], ends[2][1])
ctx.lineTo(ends[3][0], ends[3][1])
ctx.closePath()
ctx.moveTo(ends[4][0], ends[4][1])
ctx.lineTo(ends[5][0], ends[5][1])
ctx.moveTo(ends[6][0], ends[6][1])
ctx.lineTo(ends[7][0], ends[7][1])
}
}
return NormalBoxPath2
})(Path$1)
function createNormalBox(itemLayout, dataIndex, isInit) {
var ends = itemLayout.ends
return new NormalBoxPath({
shape: {
points: isInit ? transInit(ends, itemLayout) : ends,
},
z2: 100,
})
}
function isNormalBoxClipped(clipArea, itemLayout) {
var clipped = true
for (var i2 = 0; i2 < itemLayout.ends.length; i2++) {
if (clipArea.contain(itemLayout.ends[i2][0], itemLayout.ends[i2][1])) {
clipped = false
break
}
}
return clipped
}
function setBoxCommon(el2, data2, dataIndex, isSimpleBox) {
var itemModel = data2.getItemModel(dataIndex)
el2.useStyle(data2.getItemVisual(dataIndex, 'style'))
el2.style.strokeNoScale = true
el2.__simpleBox = isSimpleBox
setStatesStylesFromModel(el2, itemModel)
}
function transInit(points2, itemLayout) {
return map$1(points2, function (point) {
point = point.slice()
point[1] = itemLayout.initBaseline
return point
})
}
var LargeBoxPathShape = (function () {
function LargeBoxPathShape2() {}
return LargeBoxPathShape2
})()
var LargeBoxPath = (function (_super) {
__extends$2(LargeBoxPath2, _super)
function LargeBoxPath2(opts) {
var _this = _super.call(this, opts) || this
_this.type = 'largeCandlestickBox'
return _this
}
LargeBoxPath2.prototype.getDefaultShape = function () {
return new LargeBoxPathShape()
}
LargeBoxPath2.prototype.buildPath = function (ctx, shape) {
var points2 = shape.points
for (var i2 = 0; i2 < points2.length; ) {
if (this.__sign === points2[i2++]) {
var x2 = points2[i2++]
ctx.moveTo(x2, points2[i2++])
ctx.lineTo(x2, points2[i2++])
} else {
i2 += 3
}
}
}
return LargeBoxPath2
})(Path$1)
function createLarge(seriesModel, group, progressiveEls, incremental) {
var data2 = seriesModel.getData()
var largePoints = data2.getLayout('largePoints')
var elP = new LargeBoxPath({
shape: {
points: largePoints,
},
__sign: 1,
ignoreCoarsePointer: true,
})
group.add(elP)
var elN = new LargeBoxPath({
shape: {
points: largePoints,
},
__sign: -1,
ignoreCoarsePointer: true,
})
group.add(elN)
var elDoji = new LargeBoxPath({
shape: {
points: largePoints,
},
__sign: 0,
ignoreCoarsePointer: true,
})
group.add(elDoji)
setLargeStyle(1, elP, seriesModel)
setLargeStyle(-1, elN, seriesModel)
setLargeStyle(0, elDoji, seriesModel)
if (incremental) {
elP.incremental = true
elN.incremental = true
}
if (progressiveEls) {
progressiveEls.push(elP, elN)
}
}
function setLargeStyle(sign, el2, seriesModel, data2) {
var borderColor =
seriesModel.get(['itemStyle', sign > 0 ? 'borderColor' : 'borderColor0']) ||
seriesModel.get(['itemStyle', sign > 0 ? 'color' : 'color0'])
if (sign === 0) {
borderColor = seriesModel.get(['itemStyle', 'borderColorDoji'])
}
var itemStyle = seriesModel.getModel('itemStyle').getItemStyle(SKIP_PROPS)
el2.useStyle(itemStyle)
el2.style.fill = null
el2.style.stroke = borderColor
}
var CandlestickView$1 = CandlestickView
var CandlestickSeriesModel = (function (_super) {
__extends$2(CandlestickSeriesModel2, _super)
function CandlestickSeriesModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = CandlestickSeriesModel2.type
_this.defaultValueDimensions = [
{
name: 'open',
defaultTooltip: true,
},
{
name: 'close',
defaultTooltip: true,
},
{
name: 'lowest',
defaultTooltip: true,
},
{
name: 'highest',
defaultTooltip: true,
},
]
return _this
}
CandlestickSeriesModel2.prototype.getShadowDim = function () {
return 'open'
}
CandlestickSeriesModel2.prototype.brushSelector = function (
dataIndex,
data2,
selectors
) {
var itemLayout = data2.getItemLayout(dataIndex)
return itemLayout && selectors.rect(itemLayout.brushRect)
}
CandlestickSeriesModel2.type = 'series.candlestick'
CandlestickSeriesModel2.dependencies = ['xAxis', 'yAxis', 'grid']
CandlestickSeriesModel2.defaultOption = {
z: 2,
coordinateSystem: 'cartesian2d',
legendHoverLink: true,
layout: null,
clip: true,
itemStyle: {
color: '#eb5454',
color0: '#47b262',
borderColor: '#eb5454',
borderColor0: '#47b262',
borderColorDoji: null,
borderWidth: 1,
},
emphasis: {
scale: true,
itemStyle: {
borderWidth: 2,
},
},
barMaxWidth: null,
barMinWidth: null,
barWidth: null,
large: true,
largeThreshold: 600,
progressive: 3e3,
progressiveThreshold: 1e4,
progressiveChunkMode: 'mod',
animationEasing: 'linear',
animationDuration: 300,
}
return CandlestickSeriesModel2
})(SeriesModel$1)
mixin(CandlestickSeriesModel, WhiskerBoxCommonMixin, true)
var CandlestickSeriesModel$1 = CandlestickSeriesModel
function candlestickPreprocessor(option2) {
if (!option2 || !isArray$6(option2.series)) {
return
}
each$f(option2.series, function (seriesItem) {
if (isObject$b(seriesItem) && seriesItem.type === 'k') {
seriesItem.type = 'candlestick'
}
})
}
var positiveBorderColorQuery = ['itemStyle', 'borderColor']
var negativeBorderColorQuery = ['itemStyle', 'borderColor0']
var dojiBorderColorQuery = ['itemStyle', 'borderColorDoji']
var positiveColorQuery = ['itemStyle', 'color']
var negativeColorQuery = ['itemStyle', 'color0']
var candlestickVisual = {
seriesType: 'candlestick',
plan: createRenderPlanner(),
performRawSeries: true,
reset: function (seriesModel, ecModel) {
function getColor(sign, model) {
return model.get(sign > 0 ? positiveColorQuery : negativeColorQuery)
}
function getBorderColor(sign, model) {
return model.get(
sign === 0
? dojiBorderColorQuery
: sign > 0
? positiveBorderColorQuery
: negativeBorderColorQuery
)
}
if (ecModel.isSeriesFiltered(seriesModel)) {
return
}
var isLargeRender = seriesModel.pipelineContext.large
return (
!isLargeRender && {
progress: function (params2, data2) {
var dataIndex
while ((dataIndex = params2.next()) != null) {
var itemModel = data2.getItemModel(dataIndex)
var sign = data2.getItemLayout(dataIndex).sign
var style2 = itemModel.getItemStyle()
style2.fill = getColor(sign, itemModel)
style2.stroke = getBorderColor(sign, itemModel) || style2.fill
var existsStyle = data2.ensureUniqueItemVisual(dataIndex, 'style')
extend(existsStyle, style2)
}
},
}
)
},
}
var candlestickVisual$1 = candlestickVisual
var candlestickLayout = {
seriesType: 'candlestick',
plan: createRenderPlanner(),
reset: function (seriesModel) {
var coordSys = seriesModel.coordinateSystem
var data2 = seriesModel.getData()
var candleWidth = calculateCandleWidth(seriesModel, data2)
var cDimIdx = 0
var vDimIdx = 1
var coordDims = ['x', 'y']
var cDimI = data2.getDimensionIndex(data2.mapDimension(coordDims[cDimIdx]))
var vDimsI = map$1(
data2.mapDimensionsAll(coordDims[vDimIdx]),
data2.getDimensionIndex,
data2
)
var openDimI = vDimsI[0]
var closeDimI = vDimsI[1]
var lowestDimI = vDimsI[2]
var highestDimI = vDimsI[3]
data2.setLayout({
candleWidth,
isSimpleBox: candleWidth <= 1.3,
})
if (cDimI < 0 || vDimsI.length < 4) {
return
}
return {
progress: seriesModel.pipelineContext.large
? largeProgress
: normalProgress,
}
function normalProgress(params2, data3) {
var dataIndex
var store2 = data3.getStore()
while ((dataIndex = params2.next()) != null) {
var axisDimVal = store2.get(cDimI, dataIndex)
var openVal = store2.get(openDimI, dataIndex)
var closeVal = store2.get(closeDimI, dataIndex)
var lowestVal = store2.get(lowestDimI, dataIndex)
var highestVal = store2.get(highestDimI, dataIndex)
var ocLow = Math.min(openVal, closeVal)
var ocHigh = Math.max(openVal, closeVal)
var ocLowPoint = getPoint(ocLow, axisDimVal)
var ocHighPoint = getPoint(ocHigh, axisDimVal)
var lowestPoint = getPoint(lowestVal, axisDimVal)
var highestPoint = getPoint(highestVal, axisDimVal)
var ends = []
addBodyEnd(ends, ocHighPoint, 0)
addBodyEnd(ends, ocLowPoint, 1)
ends.push(
subPixelOptimizePoint(highestPoint),
subPixelOptimizePoint(ocHighPoint),
subPixelOptimizePoint(lowestPoint),
subPixelOptimizePoint(ocLowPoint)
)
var itemModel = data3.getItemModel(dataIndex)
var hasDojiColor = !!itemModel.get(['itemStyle', 'borderColorDoji'])
data3.setItemLayout(dataIndex, {
sign: getSign(
store2,
dataIndex,
openVal,
closeVal,
closeDimI,
hasDojiColor
),
initBaseline:
openVal > closeVal ? ocHighPoint[vDimIdx] : ocLowPoint[vDimIdx],
ends,
brushRect: makeBrushRect(lowestVal, highestVal, axisDimVal),
})
}
function getPoint(val2, axisDimVal2) {
var p2 = []
p2[cDimIdx] = axisDimVal2
p2[vDimIdx] = val2
return isNaN(axisDimVal2) || isNaN(val2)
? [NaN, NaN]
: coordSys.dataToPoint(p2)
}
function addBodyEnd(ends2, point, start2) {
var point1 = point.slice()
var point2 = point.slice()
point1[cDimIdx] = subPixelOptimize(
point1[cDimIdx] + candleWidth / 2,
1,
false
)
point2[cDimIdx] = subPixelOptimize(
point2[cDimIdx] - candleWidth / 2,
1,
true
)
start2 ? ends2.push(point1, point2) : ends2.push(point2, point1)
}
function makeBrushRect(lowestVal2, highestVal2, axisDimVal2) {
var pmin = getPoint(lowestVal2, axisDimVal2)
var pmax = getPoint(highestVal2, axisDimVal2)
pmin[cDimIdx] -= candleWidth / 2
pmax[cDimIdx] -= candleWidth / 2
return {
x: pmin[0],
y: pmin[1],
width: candleWidth,
height: pmax[1] - pmin[1],
}
}
function subPixelOptimizePoint(point) {
point[cDimIdx] = subPixelOptimize(point[cDimIdx], 1)
return point
}
}
function largeProgress(params2, data3) {
var points2 = createFloat32Array(params2.count * 4)
var offset2 = 0
var point
var tmpIn = []
var tmpOut = []
var dataIndex
var store2 = data3.getStore()
var hasDojiColor = !!seriesModel.get(['itemStyle', 'borderColorDoji'])
while ((dataIndex = params2.next()) != null) {
var axisDimVal = store2.get(cDimI, dataIndex)
var openVal = store2.get(openDimI, dataIndex)
var closeVal = store2.get(closeDimI, dataIndex)
var lowestVal = store2.get(lowestDimI, dataIndex)
var highestVal = store2.get(highestDimI, dataIndex)
if (isNaN(axisDimVal) || isNaN(lowestVal) || isNaN(highestVal)) {
points2[offset2++] = NaN
offset2 += 3
continue
}
points2[offset2++] = getSign(
store2,
dataIndex,
openVal,
closeVal,
closeDimI,
hasDojiColor
)
tmpIn[cDimIdx] = axisDimVal
tmpIn[vDimIdx] = lowestVal
point = coordSys.dataToPoint(tmpIn, null, tmpOut)
points2[offset2++] = point ? point[0] : NaN
points2[offset2++] = point ? point[1] : NaN
tmpIn[vDimIdx] = highestVal
point = coordSys.dataToPoint(tmpIn, null, tmpOut)
points2[offset2++] = point ? point[1] : NaN
}
data3.setLayout('largePoints', points2)
}
},
}
function getSign(
store2,
dataIndex,
openVal,
closeVal,
closeDimI,
hasDojiColor
) {
var sign
if (openVal > closeVal) {
sign = -1
} else if (openVal < closeVal) {
sign = 1
} else {
sign = hasDojiColor
? 0
: dataIndex > 0
? store2.get(closeDimI, dataIndex - 1) <= closeVal
? 1
: -1
: 1
}
return sign
}
function calculateCandleWidth(seriesModel, data2) {
var baseAxis = seriesModel.getBaseAxis()
var extent3
var bandWidth =
baseAxis.type === 'category'
? baseAxis.getBandWidth()
: ((extent3 = baseAxis.getExtent()),
Math.abs(extent3[1] - extent3[0]) / data2.count())
var barMaxWidth = parsePercent(
retrieve2(seriesModel.get('barMaxWidth'), bandWidth),
bandWidth
)
var barMinWidth = parsePercent(
retrieve2(seriesModel.get('barMinWidth'), 1),
bandWidth
)
var barWidth = seriesModel.get('barWidth')
return barWidth != null
? parsePercent(barWidth, bandWidth)
: Math.max(Math.min(bandWidth / 2, barMaxWidth), barMinWidth)
}
var candlestickLayout$1 = candlestickLayout
function install$A(registers) {
registers.registerChartView(CandlestickView$1)
registers.registerSeriesModel(CandlestickSeriesModel$1)
registers.registerPreprocessor(candlestickPreprocessor)
registers.registerVisual(candlestickVisual$1)
registers.registerLayout(candlestickLayout$1)
}
function updateRipplePath(rippleGroup, effectCfg) {
var color2 = effectCfg.rippleEffectColor || effectCfg.color
rippleGroup.eachChild(function (ripplePath) {
ripplePath.attr({
z: effectCfg.z,
zlevel: effectCfg.zlevel,
style: {
stroke: effectCfg.brushType === 'stroke' ? color2 : null,
fill: effectCfg.brushType === 'fill' ? color2 : null,
},
})
})
}
var EffectSymbol = (function (_super) {
__extends$2(EffectSymbol2, _super)
function EffectSymbol2(data2, idx) {
var _this = _super.call(this) || this
var symbol = new SymbolClz(data2, idx)
var rippleGroup = new Group$5()
_this.add(symbol)
_this.add(rippleGroup)
_this.updateData(data2, idx)
return _this
}
EffectSymbol2.prototype.stopEffectAnimation = function () {
this.childAt(1).removeAll()
}
EffectSymbol2.prototype.startEffectAnimation = function (effectCfg) {
var symbolType = effectCfg.symbolType
var color2 = effectCfg.color
var rippleNumber = effectCfg.rippleNumber
var rippleGroup = this.childAt(1)
for (var i2 = 0; i2 < rippleNumber; i2++) {
var ripplePath = createSymbol$1(symbolType, -1, -1, 2, 2, color2)
ripplePath.attr({
style: {
strokeNoScale: true,
},
z2: 99,
silent: true,
scaleX: 0.5,
scaleY: 0.5,
})
var delay2 =
(-i2 / rippleNumber) * effectCfg.period + effectCfg.effectOffset
ripplePath
.animate('', true)
.when(effectCfg.period, {
scaleX: effectCfg.rippleScale / 2,
scaleY: effectCfg.rippleScale / 2,
})
.delay(delay2)
.start()
ripplePath
.animateStyle(true)
.when(effectCfg.period, {
opacity: 0,
})
.delay(delay2)
.start()
rippleGroup.add(ripplePath)
}
updateRipplePath(rippleGroup, effectCfg)
}
EffectSymbol2.prototype.updateEffectAnimation = function (effectCfg) {
var oldEffectCfg = this._effectCfg
var rippleGroup = this.childAt(1)
var DIFFICULT_PROPS = [
'symbolType',
'period',
'rippleScale',
'rippleNumber',
]
for (var i2 = 0; i2 < DIFFICULT_PROPS.length; i2++) {
var propName = DIFFICULT_PROPS[i2]
if (oldEffectCfg[propName] !== effectCfg[propName]) {
this.stopEffectAnimation()
this.startEffectAnimation(effectCfg)
return
}
}
updateRipplePath(rippleGroup, effectCfg)
}
EffectSymbol2.prototype.highlight = function () {
enterEmphasis(this)
}
EffectSymbol2.prototype.downplay = function () {
leaveEmphasis(this)
}
EffectSymbol2.prototype.getSymbolType = function () {
var symbol = this.childAt(0)
return symbol && symbol.getSymbolType()
}
EffectSymbol2.prototype.updateData = function (data2, idx) {
var _this = this
var seriesModel = data2.hostModel
this.childAt(0).updateData(data2, idx)
var rippleGroup = this.childAt(1)
var itemModel = data2.getItemModel(idx)
var symbolType = data2.getItemVisual(idx, 'symbol')
var symbolSize = normalizeSymbolSize(data2.getItemVisual(idx, 'symbolSize'))
var symbolStyle = data2.getItemVisual(idx, 'style')
var color2 = symbolStyle && symbolStyle.fill
var emphasisModel = itemModel.getModel('emphasis')
rippleGroup.setScale(symbolSize)
rippleGroup.traverse(function (ripplePath) {
ripplePath.setStyle('fill', color2)
})
var symbolOffset = normalizeSymbolOffset(
data2.getItemVisual(idx, 'symbolOffset'),
symbolSize
)
if (symbolOffset) {
rippleGroup.x = symbolOffset[0]
rippleGroup.y = symbolOffset[1]
}
var symbolRotate = data2.getItemVisual(idx, 'symbolRotate')
rippleGroup.rotation = ((symbolRotate || 0) * Math.PI) / 180 || 0
var effectCfg = {}
effectCfg.showEffectOn = seriesModel.get('showEffectOn')
effectCfg.rippleScale = itemModel.get(['rippleEffect', 'scale'])
effectCfg.brushType = itemModel.get(['rippleEffect', 'brushType'])
effectCfg.period = itemModel.get(['rippleEffect', 'period']) * 1e3
effectCfg.effectOffset = idx / data2.count()
effectCfg.z = seriesModel.getShallow('z') || 0
effectCfg.zlevel = seriesModel.getShallow('zlevel') || 0
effectCfg.symbolType = symbolType
effectCfg.color = color2
effectCfg.rippleEffectColor = itemModel.get(['rippleEffect', 'color'])
effectCfg.rippleNumber = itemModel.get(['rippleEffect', 'number'])
if (effectCfg.showEffectOn === 'render') {
this._effectCfg
? this.updateEffectAnimation(effectCfg)
: this.startEffectAnimation(effectCfg)
this._effectCfg = effectCfg
} else {
this._effectCfg = null
this.stopEffectAnimation()
this.onHoverStateChange = function (toState) {
if (toState === 'emphasis') {
if (effectCfg.showEffectOn !== 'render') {
_this.startEffectAnimation(effectCfg)
}
} else if (toState === 'normal') {
if (effectCfg.showEffectOn !== 'render') {
_this.stopEffectAnimation()
}
}
}
}
this._effectCfg = effectCfg
toggleHoverEmphasis(
this,
emphasisModel.get('focus'),
emphasisModel.get('blurScope'),
emphasisModel.get('disabled')
)
}
EffectSymbol2.prototype.fadeOut = function (cb) {
cb && cb()
}
return EffectSymbol2
})(Group$5)
var EffectSymbol$1 = EffectSymbol
var EffectScatterView = (function (_super) {
__extends$2(EffectScatterView2, _super)
function EffectScatterView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = EffectScatterView2.type
return _this
}
EffectScatterView2.prototype.init = function () {
this._symbolDraw = new SymbolDraw$1(EffectSymbol$1)
}
EffectScatterView2.prototype.render = function (seriesModel, ecModel, api) {
var data2 = seriesModel.getData()
var effectSymbolDraw = this._symbolDraw
effectSymbolDraw.updateData(data2, {
clipShape: this._getClipShape(seriesModel),
})
this.group.add(effectSymbolDraw.group)
}
EffectScatterView2.prototype._getClipShape = function (seriesModel) {
var coordSys = seriesModel.coordinateSystem
var clipArea = coordSys && coordSys.getArea && coordSys.getArea()
return seriesModel.get('clip', true) ? clipArea : null
}
EffectScatterView2.prototype.updateTransform = function (
seriesModel,
ecModel,
api
) {
var data2 = seriesModel.getData()
this.group.dirty()
var res = pointsLayout('').reset(seriesModel, ecModel, api)
if (res.progress) {
res.progress(
{
start: 0,
end: data2.count(),
count: data2.count(),
},
data2
)
}
this._symbolDraw.updateLayout()
}
EffectScatterView2.prototype._updateGroupTransform = function (seriesModel) {
var coordSys = seriesModel.coordinateSystem
if (coordSys && coordSys.getRoamTransform) {
this.group.transform = clone$2(coordSys.getRoamTransform())
this.group.decomposeTransform()
}
}
EffectScatterView2.prototype.remove = function (ecModel, api) {
this._symbolDraw && this._symbolDraw.remove(true)
}
EffectScatterView2.type = 'effectScatter'
return EffectScatterView2
})(ChartView$1)
var EffectScatterView$1 = EffectScatterView
var EffectScatterSeriesModel = (function (_super) {
__extends$2(EffectScatterSeriesModel2, _super)
function EffectScatterSeriesModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = EffectScatterSeriesModel2.type
_this.hasSymbolVisual = true
return _this
}
EffectScatterSeriesModel2.prototype.getInitialData = function (
option2,
ecModel
) {
return createSeriesData(null, this, {
useEncodeDefaulter: true,
})
}
EffectScatterSeriesModel2.prototype.brushSelector = function (
dataIndex,
data2,
selectors
) {
return selectors.point(data2.getItemLayout(dataIndex))
}
EffectScatterSeriesModel2.type = 'series.effectScatter'
EffectScatterSeriesModel2.dependencies = ['grid', 'polar']
EffectScatterSeriesModel2.defaultOption = {
coordinateSystem: 'cartesian2d',
z: 2,
legendHoverLink: true,
effectType: 'ripple',
progressive: 0,
showEffectOn: 'render',
clip: true,
rippleEffect: {
period: 4,
scale: 2.5,
brushType: 'fill',
number: 3,
},
universalTransition: {
divideShape: 'clone',
},
symbolSize: 10,
}
return EffectScatterSeriesModel2
})(SeriesModel$1)
var EffectScatterSeriesModel$1 = EffectScatterSeriesModel
function install$z(registers) {
registers.registerChartView(EffectScatterView$1)
registers.registerSeriesModel(EffectScatterSeriesModel$1)
registers.registerLayout(pointsLayout('effectScatter'))
}
var EffectLine = (function (_super) {
__extends$2(EffectLine2, _super)
function EffectLine2(lineData, idx, seriesScope) {
var _this = _super.call(this) || this
_this.add(_this.createLine(lineData, idx, seriesScope))
_this._updateEffectSymbol(lineData, idx)
return _this
}
EffectLine2.prototype.createLine = function (lineData, idx, seriesScope) {
return new Line$2(lineData, idx, seriesScope)
}
EffectLine2.prototype._updateEffectSymbol = function (lineData, idx) {
var itemModel = lineData.getItemModel(idx)
var effectModel = itemModel.getModel('effect')
var size = effectModel.get('symbolSize')
var symbolType = effectModel.get('symbol')
if (!isArray$6(size)) {
size = [size, size]
}
var lineStyle = lineData.getItemVisual(idx, 'style')
var color2 = effectModel.get('color') || (lineStyle && lineStyle.stroke)
var symbol = this.childAt(1)
if (this._symbolType !== symbolType) {
this.remove(symbol)
symbol = createSymbol$1(symbolType, -0.5, -0.5, 1, 1, color2)
symbol.z2 = 100
symbol.culling = true
this.add(symbol)
}
if (!symbol) {
return
}
symbol.setStyle('shadowColor', color2)
symbol.setStyle(effectModel.getItemStyle(['color']))
symbol.scaleX = size[0]
symbol.scaleY = size[1]
symbol.setColor(color2)
this._symbolType = symbolType
this._symbolScale = size
this._updateEffectAnimation(lineData, effectModel, idx)
}
EffectLine2.prototype._updateEffectAnimation = function (
lineData,
effectModel,
idx
) {
var symbol = this.childAt(1)
if (!symbol) {
return
}
var points2 = lineData.getItemLayout(idx)
var period = effectModel.get('period') * 1e3
var loop = effectModel.get('loop')
var roundTrip = effectModel.get('roundTrip')
var constantSpeed = effectModel.get('constantSpeed')
var delayExpr = retrieve(effectModel.get('delay'), function (idx2) {
return ((idx2 / lineData.count()) * period) / 3
})
symbol.ignore = true
this._updateAnimationPoints(symbol, points2)
if (constantSpeed > 0) {
period = (this._getLineLength(symbol) / constantSpeed) * 1e3
}
if (
period !== this._period ||
loop !== this._loop ||
roundTrip !== this._roundTrip
) {
symbol.stopAnimation()
var delayNum = void 0
if (isFunction$4(delayExpr)) {
delayNum = delayExpr(idx)
} else {
delayNum = delayExpr
}
if (symbol.__t > 0) {
delayNum = -period * symbol.__t
}
this._animateSymbol(symbol, period, delayNum, loop, roundTrip)
}
this._period = period
this._loop = loop
this._roundTrip = roundTrip
}
EffectLine2.prototype._animateSymbol = function (
symbol,
period,
delayNum,
loop,
roundTrip
) {
if (period > 0) {
symbol.__t = 0
var self_1 = this
var animator = symbol
.animate('', loop)
.when(roundTrip ? period * 2 : period, {
__t: roundTrip ? 2 : 1,
})
.delay(delayNum)
.during(function () {
self_1._updateSymbolPosition(symbol)
})
if (!loop) {
animator.done(function () {
self_1.remove(symbol)
})
}
animator.start()
}
}
EffectLine2.prototype._getLineLength = function (symbol) {
return dist$1(symbol.__p1, symbol.__cp1) + dist$1(symbol.__cp1, symbol.__p2)
}
EffectLine2.prototype._updateAnimationPoints = function (symbol, points2) {
symbol.__p1 = points2[0]
symbol.__p2 = points2[1]
symbol.__cp1 = points2[2] || [
(points2[0][0] + points2[1][0]) / 2,
(points2[0][1] + points2[1][1]) / 2,
]
}
EffectLine2.prototype.updateData = function (lineData, idx, seriesScope) {
this.childAt(0).updateData(lineData, idx, seriesScope)
this._updateEffectSymbol(lineData, idx)
}
EffectLine2.prototype._updateSymbolPosition = function (symbol) {
var p1 = symbol.__p1
var p2 = symbol.__p2
var cp1 = symbol.__cp1
var t3 = symbol.__t < 1 ? symbol.__t : 2 - symbol.__t
var pos = [symbol.x, symbol.y]
var lastPos = pos.slice()
var quadraticAt2 = quadraticAt$1
var quadraticDerivativeAt$1 = quadraticDerivativeAt
pos[0] = quadraticAt2(p1[0], cp1[0], p2[0], t3)
pos[1] = quadraticAt2(p1[1], cp1[1], p2[1], t3)
var tx =
symbol.__t < 1
? quadraticDerivativeAt$1(p1[0], cp1[0], p2[0], t3)
: quadraticDerivativeAt$1(p2[0], cp1[0], p1[0], 1 - t3)
var ty =
symbol.__t < 1
? quadraticDerivativeAt$1(p1[1], cp1[1], p2[1], t3)
: quadraticDerivativeAt$1(p2[1], cp1[1], p1[1], 1 - t3)
symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2
if (
this._symbolType === 'line' ||
this._symbolType === 'rect' ||
this._symbolType === 'roundRect'
) {
if (symbol.__lastT !== void 0 && symbol.__lastT < symbol.__t) {
symbol.scaleY = dist$1(lastPos, pos) * 1.05
if (t3 === 1) {
pos[0] = lastPos[0] + (pos[0] - lastPos[0]) / 2
pos[1] = lastPos[1] + (pos[1] - lastPos[1]) / 2
}
} else if (symbol.__lastT === 1) {
symbol.scaleY = 2 * dist$1(p1, pos)
} else {
symbol.scaleY = this._symbolScale[1]
}
}
symbol.__lastT = symbol.__t
symbol.ignore = false
symbol.x = pos[0]
symbol.y = pos[1]
}
EffectLine2.prototype.updateLayout = function (lineData, idx) {
this.childAt(0).updateLayout(lineData, idx)
var effectModel = lineData.getItemModel(idx).getModel('effect')
this._updateEffectAnimation(lineData, effectModel, idx)
}
return EffectLine2
})(Group$5)
var EffectLine$1 = EffectLine
var Polyline = (function (_super) {
__extends$2(Polyline2, _super)
function Polyline2(lineData, idx, seriesScope) {
var _this = _super.call(this) || this
_this._createPolyline(lineData, idx, seriesScope)
return _this
}
Polyline2.prototype._createPolyline = function (lineData, idx, seriesScope) {
var points2 = lineData.getItemLayout(idx)
var line = new Polyline$3({
shape: {
points: points2,
},
})
this.add(line)
this._updateCommonStl(lineData, idx, seriesScope)
}
Polyline2.prototype.updateData = function (lineData, idx, seriesScope) {
var seriesModel = lineData.hostModel
var line = this.childAt(0)
var target2 = {
shape: {
points: lineData.getItemLayout(idx),
},
}
updateProps$1(line, target2, seriesModel, idx)
this._updateCommonStl(lineData, idx, seriesScope)
}
Polyline2.prototype._updateCommonStl = function (lineData, idx, seriesScope) {
var line = this.childAt(0)
var itemModel = lineData.getItemModel(idx)
var emphasisLineStyle = seriesScope && seriesScope.emphasisLineStyle
var focus2 = seriesScope && seriesScope.focus
var blurScope = seriesScope && seriesScope.blurScope
var emphasisDisabled = seriesScope && seriesScope.emphasisDisabled
if (!seriesScope || lineData.hasItemOption) {
var emphasisModel = itemModel.getModel('emphasis')
emphasisLineStyle = emphasisModel.getModel('lineStyle').getLineStyle()
emphasisDisabled = emphasisModel.get('disabled')
focus2 = emphasisModel.get('focus')
blurScope = emphasisModel.get('blurScope')
}
line.useStyle(lineData.getItemVisual(idx, 'style'))
line.style.fill = null
line.style.strokeNoScale = true
var lineEmphasisState = line.ensureState('emphasis')
lineEmphasisState.style = emphasisLineStyle
toggleHoverEmphasis(this, focus2, blurScope, emphasisDisabled)
}
Polyline2.prototype.updateLayout = function (lineData, idx) {
var polyline = this.childAt(0)
polyline.setShape('points', lineData.getItemLayout(idx))
}
return Polyline2
})(Group$5)
var Polyline$1 = Polyline
var EffectPolyline = (function (_super) {
__extends$2(EffectPolyline2, _super)
function EffectPolyline2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this._lastFrame = 0
_this._lastFramePercent = 0
return _this
}
EffectPolyline2.prototype.createLine = function (lineData, idx, seriesScope) {
return new Polyline$1(lineData, idx, seriesScope)
}
EffectPolyline2.prototype._updateAnimationPoints = function (
symbol,
points2
) {
this._points = points2
var accLenArr = [0]
var len2 = 0
for (var i2 = 1; i2 < points2.length; i2++) {
var p1 = points2[i2 - 1]
var p2 = points2[i2]
len2 += dist$1(p1, p2)
accLenArr.push(len2)
}
if (len2 === 0) {
this._length = 0
return
}
for (var i2 = 0; i2 < accLenArr.length; i2++) {
accLenArr[i2] /= len2
}
this._offsets = accLenArr
this._length = len2
}
EffectPolyline2.prototype._getLineLength = function () {
return this._length
}
EffectPolyline2.prototype._updateSymbolPosition = function (symbol) {
var t3 = symbol.__t < 1 ? symbol.__t : 2 - symbol.__t
var points2 = this._points
var offsets = this._offsets
var len2 = points2.length
if (!offsets) {
return
}
var lastFrame = this._lastFrame
var frame
if (t3 < this._lastFramePercent) {
var start2 = Math.min(lastFrame + 1, len2 - 1)
for (frame = start2; frame >= 0; frame--) {
if (offsets[frame] <= t3) {
break
}
}
frame = Math.min(frame, len2 - 2)
} else {
for (frame = lastFrame; frame < len2; frame++) {
if (offsets[frame] > t3) {
break
}
}
frame = Math.min(frame - 1, len2 - 2)
}
var p2 = (t3 - offsets[frame]) / (offsets[frame + 1] - offsets[frame])
var p0 = points2[frame]
var p1 = points2[frame + 1]
symbol.x = p0[0] * (1 - p2) + p2 * p1[0]
symbol.y = p0[1] * (1 - p2) + p2 * p1[1]
var tx = symbol.__t < 1 ? p1[0] - p0[0] : p0[0] - p1[0]
var ty = symbol.__t < 1 ? p1[1] - p0[1] : p0[1] - p1[1]
symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2
this._lastFrame = frame
this._lastFramePercent = t3
symbol.ignore = false
}
return EffectPolyline2
})(EffectLine$1)
var EffectPolyline$1 = EffectPolyline
var LargeLinesPathShape = (function () {
function LargeLinesPathShape2() {
this.polyline = false
this.curveness = 0
this.segs = []
}
return LargeLinesPathShape2
})()
var LargeLinesPath = (function (_super) {
__extends$2(LargeLinesPath2, _super)
function LargeLinesPath2(opts) {
var _this = _super.call(this, opts) || this
_this._off = 0
_this.hoverDataIdx = -1
return _this
}
LargeLinesPath2.prototype.reset = function () {
this.notClear = false
this._off = 0
}
LargeLinesPath2.prototype.getDefaultStyle = function () {
return {
stroke: '#000',
fill: null,
}
}
LargeLinesPath2.prototype.getDefaultShape = function () {
return new LargeLinesPathShape()
}
LargeLinesPath2.prototype.buildPath = function (ctx, shape) {
var segs = shape.segs
var curveness = shape.curveness
var i2
if (shape.polyline) {
for (i2 = this._off; i2 < segs.length; ) {
var count2 = segs[i2++]
if (count2 > 0) {
ctx.moveTo(segs[i2++], segs[i2++])
for (var k2 = 1; k2 < count2; k2++) {
ctx.lineTo(segs[i2++], segs[i2++])
}
}
}
} else {
for (i2 = this._off; i2 < segs.length; ) {
var x0 = segs[i2++]
var y0 = segs[i2++]
var x1 = segs[i2++]
var y1 = segs[i2++]
ctx.moveTo(x0, y0)
if (curveness > 0) {
var x2 = (x0 + x1) / 2 - (y0 - y1) * curveness
var y2 = (y0 + y1) / 2 - (x1 - x0) * curveness
ctx.quadraticCurveTo(x2, y2, x1, y1)
} else {
ctx.lineTo(x1, y1)
}
}
}
if (this.incremental) {
this._off = i2
this.notClear = true
}
}
LargeLinesPath2.prototype.findDataIndex = function (x2, y2) {
var shape = this.shape
var segs = shape.segs
var curveness = shape.curveness
var lineWidth = this.style.lineWidth
if (shape.polyline) {
var dataIndex = 0
for (var i2 = 0; i2 < segs.length; ) {
var count2 = segs[i2++]
if (count2 > 0) {
var x0 = segs[i2++]
var y0 = segs[i2++]
for (var k2 = 1; k2 < count2; k2++) {
var x1 = segs[i2++]
var y1 = segs[i2++]
if (containStroke$4(x0, y0, x1, y1, lineWidth, x2, y2)) {
return dataIndex
}
}
}
dataIndex++
}
} else {
var dataIndex = 0
for (var i2 = 0; i2 < segs.length; ) {
var x0 = segs[i2++]
var y0 = segs[i2++]
var x1 = segs[i2++]
var y1 = segs[i2++]
if (curveness > 0) {
var x22 = (x0 + x1) / 2 - (y0 - y1) * curveness
var y22 = (y0 + y1) / 2 - (x1 - x0) * curveness
if (containStroke$2(x0, y0, x22, y22, x1, y1, lineWidth, x2, y2)) {
return dataIndex
}
} else {
if (containStroke$4(x0, y0, x1, y1, lineWidth, x2, y2)) {
return dataIndex
}
}
dataIndex++
}
}
return -1
}
LargeLinesPath2.prototype.contain = function (x2, y2) {
var localPos = this.transformCoordToLocal(x2, y2)
var rect = this.getBoundingRect()
x2 = localPos[0]
y2 = localPos[1]
if (rect.contain(x2, y2)) {
var dataIdx = (this.hoverDataIdx = this.findDataIndex(x2, y2))
return dataIdx >= 0
}
this.hoverDataIdx = -1
return false
}
LargeLinesPath2.prototype.getBoundingRect = function () {
var rect = this._rect
if (!rect) {
var shape = this.shape
var points2 = shape.segs
var minX = Infinity
var minY = Infinity
var maxX = -Infinity
var maxY = -Infinity
for (var i2 = 0; i2 < points2.length; ) {
var x2 = points2[i2++]
var y2 = points2[i2++]
minX = Math.min(x2, minX)
maxX = Math.max(x2, maxX)
minY = Math.min(y2, minY)
maxY = Math.max(y2, maxY)
}
rect = this._rect = new BoundingRect$1(minX, minY, maxX, maxY)
}
return rect
}
return LargeLinesPath2
})(Path$1)
var LargeLineDraw = (function () {
function LargeLineDraw2() {
this.group = new Group$5()
}
LargeLineDraw2.prototype.updateData = function (data2) {
this._clear()
var lineEl = this._create()
lineEl.setShape({
segs: data2.getLayout('linesPoints'),
})
this._setCommon(lineEl, data2)
}
LargeLineDraw2.prototype.incrementalPrepareUpdate = function (data2) {
this.group.removeAll()
this._clear()
}
LargeLineDraw2.prototype.incrementalUpdate = function (taskParams, data2) {
var lastAdded = this._newAdded[0]
var linePoints = data2.getLayout('linesPoints')
var oldSegs = lastAdded && lastAdded.shape.segs
if (oldSegs && oldSegs.length < 2e4) {
var oldLen = oldSegs.length
var newSegs = new Float32Array(oldLen + linePoints.length)
newSegs.set(oldSegs)
newSegs.set(linePoints, oldLen)
lastAdded.setShape({
segs: newSegs,
})
} else {
this._newAdded = []
var lineEl = this._create()
lineEl.incremental = true
lineEl.setShape({
segs: linePoints,
})
this._setCommon(lineEl, data2)
lineEl.__startIndex = taskParams.start
}
}
LargeLineDraw2.prototype.remove = function () {
this._clear()
}
LargeLineDraw2.prototype.eachRendered = function (cb) {
this._newAdded[0] && cb(this._newAdded[0])
}
LargeLineDraw2.prototype._create = function () {
var lineEl = new LargeLinesPath({
cursor: 'default',
ignoreCoarsePointer: true,
})
this._newAdded.push(lineEl)
this.group.add(lineEl)
return lineEl
}
LargeLineDraw2.prototype._setCommon = function (
lineEl,
data2,
isIncremental
) {
var hostModel = data2.hostModel
lineEl.setShape({
polyline: hostModel.get('polyline'),
curveness: hostModel.get(['lineStyle', 'curveness']),
})
lineEl.useStyle(hostModel.getModel('lineStyle').getLineStyle())
lineEl.style.strokeNoScale = true
var style2 = data2.getVisual('style')
if (style2 && style2.stroke) {
lineEl.setStyle('stroke', style2.stroke)
}
lineEl.setStyle('fill', null)
var ecData = getECData(lineEl)
ecData.seriesIndex = hostModel.seriesIndex
lineEl.on('mousemove', function (e2) {
ecData.dataIndex = null
var dataIndex = lineEl.hoverDataIdx
if (dataIndex > 0) {
ecData.dataIndex = dataIndex + lineEl.__startIndex
}
})
}
LargeLineDraw2.prototype._clear = function () {
this._newAdded = []
this.group.removeAll()
}
return LargeLineDraw2
})()
var LargeLineDraw$1 = LargeLineDraw
var linesLayout = {
seriesType: 'lines',
plan: createRenderPlanner(),
reset: function (seriesModel) {
var coordSys = seriesModel.coordinateSystem
if (!coordSys) {
return
}
var isPolyline = seriesModel.get('polyline')
var isLarge = seriesModel.pipelineContext.large
return {
progress: function (params2, lineData) {
var lineCoords = []
if (isLarge) {
var points2 = void 0
var segCount = params2.end - params2.start
if (isPolyline) {
var totalCoordsCount = 0
for (var i2 = params2.start; i2 < params2.end; i2++) {
totalCoordsCount += seriesModel.getLineCoordsCount(i2)
}
points2 = new Float32Array(segCount + totalCoordsCount * 2)
} else {
points2 = new Float32Array(segCount * 4)
}
var offset2 = 0
var pt3 = []
for (var i2 = params2.start; i2 < params2.end; i2++) {
var len2 = seriesModel.getLineCoords(i2, lineCoords)
if (isPolyline) {
points2[offset2++] = len2
}
for (var k2 = 0; k2 < len2; k2++) {
pt3 = coordSys.dataToPoint(lineCoords[k2], false, pt3)
points2[offset2++] = pt3[0]
points2[offset2++] = pt3[1]
}
}
lineData.setLayout('linesPoints', points2)
} else {
for (var i2 = params2.start; i2 < params2.end; i2++) {
var itemModel = lineData.getItemModel(i2)
var len2 = seriesModel.getLineCoords(i2, lineCoords)
var pts = []
if (isPolyline) {
for (var j2 = 0; j2 < len2; j2++) {
pts.push(coordSys.dataToPoint(lineCoords[j2]))
}
} else {
pts[0] = coordSys.dataToPoint(lineCoords[0])
pts[1] = coordSys.dataToPoint(lineCoords[1])
var curveness = itemModel.get(['lineStyle', 'curveness'])
if (+curveness) {
pts[2] = [
(pts[0][0] + pts[1][0]) / 2 -
(pts[0][1] - pts[1][1]) * curveness,
(pts[0][1] + pts[1][1]) / 2 -
(pts[1][0] - pts[0][0]) * curveness,
]
}
}
lineData.setItemLayout(i2, pts)
}
}
},
}
},
}
var linesLayout$1 = linesLayout
var LinesView = (function (_super) {
__extends$2(LinesView2, _super)
function LinesView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = LinesView2.type
return _this
}
LinesView2.prototype.render = function (seriesModel, ecModel, api) {
var data2 = seriesModel.getData()
var lineDraw = this._updateLineDraw(data2, seriesModel)
var zlevel = seriesModel.get('zlevel')
var trailLength = seriesModel.get(['effect', 'trailLength'])
var zr = api.getZr()
var isSvg = zr.painter.getType() === 'svg'
if (!isSvg) {
zr.painter.getLayer(zlevel).clear(true)
}
if (this._lastZlevel != null && !isSvg) {
zr.configLayer(this._lastZlevel, {
motionBlur: false,
})
}
if (this._showEffect(seriesModel) && trailLength > 0) {
if (!isSvg) {
zr.configLayer(zlevel, {
motionBlur: true,
lastFrameAlpha: Math.max(Math.min(trailLength / 10 + 0.9, 1), 0),
})
}
}
lineDraw.updateData(data2)
var clipPath =
seriesModel.get('clip', true) &&
createClipPath(seriesModel.coordinateSystem, false, seriesModel)
if (clipPath) {
this.group.setClipPath(clipPath)
} else {
this.group.removeClipPath()
}
this._lastZlevel = zlevel
this._finished = true
}
LinesView2.prototype.incrementalPrepareRender = function (
seriesModel,
ecModel,
api
) {
var data2 = seriesModel.getData()
var lineDraw = this._updateLineDraw(data2, seriesModel)
lineDraw.incrementalPrepareUpdate(data2)
this._clearLayer(api)
this._finished = false
}
LinesView2.prototype.incrementalRender = function (
taskParams,
seriesModel,
ecModel
) {
this._lineDraw.incrementalUpdate(taskParams, seriesModel.getData())
this._finished = taskParams.end === seriesModel.getData().count()
}
LinesView2.prototype.eachRendered = function (cb) {
this._lineDraw && this._lineDraw.eachRendered(cb)
}
LinesView2.prototype.updateTransform = function (seriesModel, ecModel, api) {
var data2 = seriesModel.getData()
var pipelineContext = seriesModel.pipelineContext
if (
!this._finished ||
pipelineContext.large ||
pipelineContext.progressiveRender
) {
return {
update: true,
}
} else {
var res = linesLayout$1.reset(seriesModel, ecModel, api)
if (res.progress) {
res.progress(
{
start: 0,
end: data2.count(),
count: data2.count(),
},
data2
)
}
this._lineDraw.updateLayout()
this._clearLayer(api)
}
}
LinesView2.prototype._updateLineDraw = function (data2, seriesModel) {
var lineDraw = this._lineDraw
var hasEffect = this._showEffect(seriesModel)
var isPolyline = !!seriesModel.get('polyline')
var pipelineContext = seriesModel.pipelineContext
var isLargeDraw = pipelineContext.large
if (
!lineDraw ||
hasEffect !== this._hasEffet ||
isPolyline !== this._isPolyline ||
isLargeDraw !== this._isLargeDraw
) {
if (lineDraw) {
lineDraw.remove()
}
lineDraw = this._lineDraw = isLargeDraw
? new LargeLineDraw$1()
: new LineDraw$1(
isPolyline
? hasEffect
? EffectPolyline$1
: Polyline$1
: hasEffect
? EffectLine$1
: Line$2
)
this._hasEffet = hasEffect
this._isPolyline = isPolyline
this._isLargeDraw = isLargeDraw
}
this.group.add(lineDraw.group)
return lineDraw
}
LinesView2.prototype._showEffect = function (seriesModel) {
return !!seriesModel.get(['effect', 'show'])
}
LinesView2.prototype._clearLayer = function (api) {
var zr = api.getZr()
var isSvg = zr.painter.getType() === 'svg'
if (!isSvg && this._lastZlevel != null) {
zr.painter.getLayer(this._lastZlevel).clear(true)
}
}
LinesView2.prototype.remove = function (ecModel, api) {
this._lineDraw && this._lineDraw.remove()
this._lineDraw = null
this._clearLayer(api)
}
LinesView2.prototype.dispose = function (ecModel, api) {
this.remove(ecModel, api)
}
LinesView2.type = 'lines'
return LinesView2
})(ChartView$1)
var LinesView$1 = LinesView
var Uint32Arr = typeof Uint32Array === 'undefined' ? Array : Uint32Array
var Float64Arr = typeof Float64Array === 'undefined' ? Array : Float64Array
function compatEc2(seriesOpt) {
var data2 = seriesOpt.data
if (data2 && data2[0] && data2[0][0] && data2[0][0].coord) {
seriesOpt.data = map$1(data2, function (itemOpt) {
var coords = [itemOpt[0].coord, itemOpt[1].coord]
var target2 = {
coords,
}
if (itemOpt[0].name) {
target2.fromName = itemOpt[0].name
}
if (itemOpt[1].name) {
target2.toName = itemOpt[1].name
}
return mergeAll([target2, itemOpt[0], itemOpt[1]])
})
}
}
var LinesSeriesModel = (function (_super) {
__extends$2(LinesSeriesModel2, _super)
function LinesSeriesModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = LinesSeriesModel2.type
_this.visualStyleAccessPath = 'lineStyle'
_this.visualDrawType = 'stroke'
return _this
}
LinesSeriesModel2.prototype.init = function (option2) {
option2.data = option2.data || []
compatEc2(option2)
var result = this._processFlatCoordsArray(option2.data)
this._flatCoords = result.flatCoords
this._flatCoordsOffset = result.flatCoordsOffset
if (result.flatCoords) {
option2.data = new Float32Array(result.count)
}
_super.prototype.init.apply(this, arguments)
}
LinesSeriesModel2.prototype.mergeOption = function (option2) {
compatEc2(option2)
if (option2.data) {
var result = this._processFlatCoordsArray(option2.data)
this._flatCoords = result.flatCoords
this._flatCoordsOffset = result.flatCoordsOffset
if (result.flatCoords) {
option2.data = new Float32Array(result.count)
}
}
_super.prototype.mergeOption.apply(this, arguments)
}
LinesSeriesModel2.prototype.appendData = function (params2) {
var result = this._processFlatCoordsArray(params2.data)
if (result.flatCoords) {
if (!this._flatCoords) {
this._flatCoords = result.flatCoords
this._flatCoordsOffset = result.flatCoordsOffset
} else {
this._flatCoords = concatArray(this._flatCoords, result.flatCoords)
this._flatCoordsOffset = concatArray(
this._flatCoordsOffset,
result.flatCoordsOffset
)
}
params2.data = new Float32Array(result.count)
}
this.getRawData().appendData(params2.data)
}
LinesSeriesModel2.prototype._getCoordsFromItemModel = function (idx) {
var itemModel = this.getData().getItemModel(idx)
var coords =
itemModel.option instanceof Array
? itemModel.option
: itemModel.getShallow('coords')
return coords
}
LinesSeriesModel2.prototype.getLineCoordsCount = function (idx) {
if (this._flatCoordsOffset) {
return this._flatCoordsOffset[idx * 2 + 1]
} else {
return this._getCoordsFromItemModel(idx).length
}
}
LinesSeriesModel2.prototype.getLineCoords = function (idx, out2) {
if (this._flatCoordsOffset) {
var offset2 = this._flatCoordsOffset[idx * 2]
var len2 = this._flatCoordsOffset[idx * 2 + 1]
for (var i2 = 0; i2 < len2; i2++) {
out2[i2] = out2[i2] || []
out2[i2][0] = this._flatCoords[offset2 + i2 * 2]
out2[i2][1] = this._flatCoords[offset2 + i2 * 2 + 1]
}
return len2
} else {
var coords = this._getCoordsFromItemModel(idx)
for (var i2 = 0; i2 < coords.length; i2++) {
out2[i2] = out2[i2] || []
out2[i2][0] = coords[i2][0]
out2[i2][1] = coords[i2][1]
}
return coords.length
}
}
LinesSeriesModel2.prototype._processFlatCoordsArray = function (data2) {
var startOffset = 0
if (this._flatCoords) {
startOffset = this._flatCoords.length
}
if (isNumber$2(data2[0])) {
var len2 = data2.length
var coordsOffsetAndLenStorage = new Uint32Arr(len2)
var coordsStorage = new Float64Arr(len2)
var coordsCursor = 0
var offsetCursor = 0
var dataCount = 0
for (var i2 = 0; i2 < len2; ) {
dataCount++
var count2 = data2[i2++]
coordsOffsetAndLenStorage[offsetCursor++] = coordsCursor + startOffset
coordsOffsetAndLenStorage[offsetCursor++] = count2
for (var k2 = 0; k2 < count2; k2++) {
var x2 = data2[i2++]
var y2 = data2[i2++]
coordsStorage[coordsCursor++] = x2
coordsStorage[coordsCursor++] = y2
}
}
return {
flatCoordsOffset: new Uint32Array(
coordsOffsetAndLenStorage.buffer,
0,
offsetCursor
),
flatCoords: coordsStorage,
count: dataCount,
}
}
return {
flatCoordsOffset: null,
flatCoords: null,
count: data2.length,
}
}
LinesSeriesModel2.prototype.getInitialData = function (option2, ecModel) {
var lineData = new SeriesData$1(['value'], this)
lineData.hasItemOption = false
lineData.initData(
option2.data,
[],
function (dataItem, dimName, dataIndex, dimIndex) {
if (dataItem instanceof Array) {
return NaN
} else {
lineData.hasItemOption = true
var value2 = dataItem.value
if (value2 != null) {
return value2 instanceof Array ? value2[dimIndex] : value2
}
}
}
)
return lineData
}
LinesSeriesModel2.prototype.formatTooltip = function (
dataIndex,
multipleSeries,
dataType2
) {
var data2 = this.getData()
var itemModel = data2.getItemModel(dataIndex)
var name2 = itemModel.get('name')
if (name2) {
return name2
}
var fromName = itemModel.get('fromName')
var toName = itemModel.get('toName')
var nameArr = []
fromName != null && nameArr.push(fromName)
toName != null && nameArr.push(toName)
return createTooltipMarkup('nameValue', {
name: nameArr.join(' > '),
})
}
LinesSeriesModel2.prototype.preventIncremental = function () {
return !!this.get(['effect', 'show'])
}
LinesSeriesModel2.prototype.getProgressive = function () {
var progressive = this.option.progressive
if (progressive == null) {
return this.option.large ? 1e4 : this.get('progressive')
}
return progressive
}
LinesSeriesModel2.prototype.getProgressiveThreshold = function () {
var progressiveThreshold = this.option.progressiveThreshold
if (progressiveThreshold == null) {
return this.option.large ? 2e4 : this.get('progressiveThreshold')
}
return progressiveThreshold
}
LinesSeriesModel2.prototype.getZLevelKey = function () {
var effectModel = this.getModel('effect')
var trailLength = effectModel.get('trailLength')
return this.getData().count() > this.getProgressiveThreshold()
? this.id
: effectModel.get('show') && trailLength > 0
? trailLength + ''
: ''
}
LinesSeriesModel2.type = 'series.lines'
LinesSeriesModel2.dependencies = ['grid', 'polar', 'geo', 'calendar']
LinesSeriesModel2.defaultOption = {
coordinateSystem: 'geo',
z: 2,
legendHoverLink: true,
xAxisIndex: 0,
yAxisIndex: 0,
symbol: ['none', 'none'],
symbolSize: [10, 10],
geoIndex: 0,
effect: {
show: false,
period: 4,
constantSpeed: 0,
symbol: 'circle',
symbolSize: 3,
loop: true,
trailLength: 0.2,
},
large: false,
largeThreshold: 2e3,
polyline: false,
clip: true,
label: {
show: false,
position: 'end',
},
lineStyle: {
opacity: 0.5,
},
}
return LinesSeriesModel2
})(SeriesModel$1)
var LinesSeriesModel$1 = LinesSeriesModel
function normalize(a2) {
if (!(a2 instanceof Array)) {
a2 = [a2, a2]
}
return a2
}
var linesVisual = {
seriesType: 'lines',
reset: function (seriesModel) {
var symbolType = normalize(seriesModel.get('symbol'))
var symbolSize = normalize(seriesModel.get('symbolSize'))
var data2 = seriesModel.getData()
data2.setVisual('fromSymbol', symbolType && symbolType[0])
data2.setVisual('toSymbol', symbolType && symbolType[1])
data2.setVisual('fromSymbolSize', symbolSize && symbolSize[0])
data2.setVisual('toSymbolSize', symbolSize && symbolSize[1])
function dataEach(data3, idx) {
var itemModel = data3.getItemModel(idx)
var symbolType2 = normalize(itemModel.getShallow('symbol', true))
var symbolSize2 = normalize(itemModel.getShallow('symbolSize', true))
symbolType2[0] && data3.setItemVisual(idx, 'fromSymbol', symbolType2[0])
symbolType2[1] && data3.setItemVisual(idx, 'toSymbol', symbolType2[1])
symbolSize2[0] &&
data3.setItemVisual(idx, 'fromSymbolSize', symbolSize2[0])
symbolSize2[1] && data3.setItemVisual(idx, 'toSymbolSize', symbolSize2[1])
}
return {
dataEach: data2.hasItemOption ? dataEach : null,
}
},
}
var linesVisual$1 = linesVisual
function install$y(registers) {
registers.registerChartView(LinesView$1)
registers.registerSeriesModel(LinesSeriesModel$1)
registers.registerLayout(linesLayout$1)
registers.registerVisual(linesVisual$1)
}
var GRADIENT_LEVELS = 256
var HeatmapLayer = (function () {
function HeatmapLayer2() {
this.blurSize = 30
this.pointSize = 20
this.maxOpacity = 1
this.minOpacity = 0
this._gradientPixels = {
inRange: null,
outOfRange: null,
}
var canvas = platformApi.createCanvas()
this.canvas = canvas
}
HeatmapLayer2.prototype.update = function (
data2,
width,
height,
normalize2,
colorFunc,
isInRange
) {
var brush2 = this._getBrush()
var gradientInRange = this._getGradient(colorFunc, 'inRange')
var gradientOutOfRange = this._getGradient(colorFunc, 'outOfRange')
var r2 = this.pointSize + this.blurSize
var canvas = this.canvas
var ctx = canvas.getContext('2d')
var len2 = data2.length
canvas.width = width
canvas.height = height
for (var i2 = 0; i2 < len2; ++i2) {
var p2 = data2[i2]
var x2 = p2[0]
var y2 = p2[1]
var value2 = p2[2]
var alpha = normalize2(value2)
ctx.globalAlpha = alpha
ctx.drawImage(brush2, x2 - r2, y2 - r2)
}
if (!canvas.width || !canvas.height) {
return canvas
}
var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height)
var pixels = imageData.data
var offset2 = 0
var pixelLen = pixels.length
var minOpacity = this.minOpacity
var maxOpacity = this.maxOpacity
var diffOpacity = maxOpacity - minOpacity
while (offset2 < pixelLen) {
var alpha = pixels[offset2 + 3] / 256
var gradientOffset = Math.floor(alpha * (GRADIENT_LEVELS - 1)) * 4
if (alpha > 0) {
var gradient = isInRange(alpha) ? gradientInRange : gradientOutOfRange
alpha > 0 && (alpha = alpha * diffOpacity + minOpacity)
pixels[offset2++] = gradient[gradientOffset]
pixels[offset2++] = gradient[gradientOffset + 1]
pixels[offset2++] = gradient[gradientOffset + 2]
pixels[offset2++] = gradient[gradientOffset + 3] * alpha * 256
} else {
offset2 += 4
}
}
ctx.putImageData(imageData, 0, 0)
return canvas
}
HeatmapLayer2.prototype._getBrush = function () {
var brushCanvas =
this._brushCanvas || (this._brushCanvas = platformApi.createCanvas())
var r2 = this.pointSize + this.blurSize
var d3 = r2 * 2
brushCanvas.width = d3
brushCanvas.height = d3
var ctx = brushCanvas.getContext('2d')
ctx.clearRect(0, 0, d3, d3)
ctx.shadowOffsetX = d3
ctx.shadowBlur = this.blurSize
ctx.shadowColor = '#000'
ctx.beginPath()
ctx.arc(-r2, r2, this.pointSize, 0, Math.PI * 2, true)
ctx.closePath()
ctx.fill()
return brushCanvas
}
HeatmapLayer2.prototype._getGradient = function (colorFunc, state2) {
var gradientPixels = this._gradientPixels
var pixelsSingleState =
gradientPixels[state2] ||
(gradientPixels[state2] = new Uint8ClampedArray(256 * 4))
var color2 = [0, 0, 0, 0]
var off2 = 0
for (var i2 = 0; i2 < 256; i2++) {
colorFunc[state2](i2 / 255, true, color2)
pixelsSingleState[off2++] = color2[0]
pixelsSingleState[off2++] = color2[1]
pixelsSingleState[off2++] = color2[2]
pixelsSingleState[off2++] = color2[3]
}
return pixelsSingleState
}
return HeatmapLayer2
})()
var HeatmapLayer$1 = HeatmapLayer
function getIsInPiecewiseRange(dataExtent, pieceList, selected) {
var dataSpan = dataExtent[1] - dataExtent[0]
pieceList = map$1(pieceList, function (piece) {
return {
interval: [
(piece.interval[0] - dataExtent[0]) / dataSpan,
(piece.interval[1] - dataExtent[0]) / dataSpan,
],
}
})
var len2 = pieceList.length
var lastIndex = 0
return function (val2) {
var i2
for (i2 = lastIndex; i2 < len2; i2++) {
var interval = pieceList[i2].interval
if (interval[0] <= val2 && val2 <= interval[1]) {
lastIndex = i2
break
}
}
if (i2 === len2) {
for (i2 = lastIndex - 1; i2 >= 0; i2--) {
var interval = pieceList[i2].interval
if (interval[0] <= val2 && val2 <= interval[1]) {
lastIndex = i2
break
}
}
}
return i2 >= 0 && i2 < len2 && selected[i2]
}
}
function getIsInContinuousRange(dataExtent, range3) {
var dataSpan = dataExtent[1] - dataExtent[0]
range3 = [
(range3[0] - dataExtent[0]) / dataSpan,
(range3[1] - dataExtent[0]) / dataSpan,
]
return function (val2) {
return val2 >= range3[0] && val2 <= range3[1]
}
}
function isGeoCoordSys(coordSys) {
var dimensions = coordSys.dimensions
return dimensions[0] === 'lng' && dimensions[1] === 'lat'
}
var HeatmapView = (function (_super) {
__extends$2(HeatmapView2, _super)
function HeatmapView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = HeatmapView2.type
return _this
}
HeatmapView2.prototype.render = function (seriesModel, ecModel, api) {
var visualMapOfThisSeries
ecModel.eachComponent('visualMap', function (visualMap) {
visualMap.eachTargetSeries(function (targetSeries) {
if (targetSeries === seriesModel) {
visualMapOfThisSeries = visualMap
}
})
})
this._progressiveEls = null
this.group.removeAll()
var coordSys = seriesModel.coordinateSystem
if (coordSys.type === 'cartesian2d' || coordSys.type === 'calendar') {
this._renderOnCartesianAndCalendar(
seriesModel,
api,
0,
seriesModel.getData().count()
)
} else if (isGeoCoordSys(coordSys)) {
this._renderOnGeo(coordSys, seriesModel, visualMapOfThisSeries, api)
}
}
HeatmapView2.prototype.incrementalPrepareRender = function (
seriesModel,
ecModel,
api
) {
this.group.removeAll()
}
HeatmapView2.prototype.incrementalRender = function (
params2,
seriesModel,
ecModel,
api
) {
var coordSys = seriesModel.coordinateSystem
if (coordSys) {
if (isGeoCoordSys(coordSys)) {
this.render(seriesModel, ecModel, api)
} else {
this._progressiveEls = []
this._renderOnCartesianAndCalendar(
seriesModel,
api,
params2.start,
params2.end,
true
)
}
}
}
HeatmapView2.prototype.eachRendered = function (cb) {
traverseElements(this._progressiveEls || this.group, cb)
}
HeatmapView2.prototype._renderOnCartesianAndCalendar = function (
seriesModel,
api,
start2,
end2,
incremental
) {
var coordSys = seriesModel.coordinateSystem
var isCartesian2d = isCoordinateSystemType(coordSys, 'cartesian2d')
var width
var height
var xAxisExtent
var yAxisExtent
if (isCartesian2d) {
var xAxis = coordSys.getAxis('x')
var yAxis = coordSys.getAxis('y')
width = xAxis.getBandWidth() + 0.5
height = yAxis.getBandWidth() + 0.5
xAxisExtent = xAxis.scale.getExtent()
yAxisExtent = yAxis.scale.getExtent()
}
var group = this.group
var data2 = seriesModel.getData()
var emphasisStyle = seriesModel
.getModel(['emphasis', 'itemStyle'])
.getItemStyle()
var blurStyle = seriesModel.getModel(['blur', 'itemStyle']).getItemStyle()
var selectStyle = seriesModel
.getModel(['select', 'itemStyle'])
.getItemStyle()
var borderRadius = seriesModel.get(['itemStyle', 'borderRadius'])
var labelStatesModels = getLabelStatesModels(seriesModel)
var emphasisModel = seriesModel.getModel('emphasis')
var focus2 = emphasisModel.get('focus')
var blurScope = emphasisModel.get('blurScope')
var emphasisDisabled = emphasisModel.get('disabled')
var dataDims = isCartesian2d
? [
data2.mapDimension('x'),
data2.mapDimension('y'),
data2.mapDimension('value'),
]
: [data2.mapDimension('time'), data2.mapDimension('value')]
for (var idx = start2; idx < end2; idx++) {
var rect = void 0
var style2 = data2.getItemVisual(idx, 'style')
if (isCartesian2d) {
var dataDimX = data2.get(dataDims[0], idx)
var dataDimY = data2.get(dataDims[1], idx)
if (
isNaN(data2.get(dataDims[2], idx)) ||
isNaN(dataDimX) ||
isNaN(dataDimY) ||
dataDimX < xAxisExtent[0] ||
dataDimX > xAxisExtent[1] ||
dataDimY < yAxisExtent[0] ||
dataDimY > yAxisExtent[1]
) {
continue
}
var point = coordSys.dataToPoint([dataDimX, dataDimY])
rect = new Rect$4({
shape: {
x: point[0] - width / 2,
y: point[1] - height / 2,
width,
height,
},
style: style2,
})
} else {
if (isNaN(data2.get(dataDims[1], idx))) {
continue
}
rect = new Rect$4({
z2: 1,
shape: coordSys.dataToRect([data2.get(dataDims[0], idx)])
.contentShape,
style: style2,
})
}
if (data2.hasItemOption) {
var itemModel = data2.getItemModel(idx)
var emphasisModel_1 = itemModel.getModel('emphasis')
emphasisStyle = emphasisModel_1.getModel('itemStyle').getItemStyle()
blurStyle = itemModel.getModel(['blur', 'itemStyle']).getItemStyle()
selectStyle = itemModel.getModel(['select', 'itemStyle']).getItemStyle()
borderRadius = itemModel.get(['itemStyle', 'borderRadius'])
focus2 = emphasisModel_1.get('focus')
blurScope = emphasisModel_1.get('blurScope')
emphasisDisabled = emphasisModel_1.get('disabled')
labelStatesModels = getLabelStatesModels(itemModel)
}
rect.shape.r = borderRadius
var rawValue = seriesModel.getRawValue(idx)
var defaultText = '-'
if (rawValue && rawValue[2] != null) {
defaultText = rawValue[2] + ''
}
setLabelStyle(rect, labelStatesModels, {
labelFetcher: seriesModel,
labelDataIndex: idx,
defaultOpacity: style2.opacity,
defaultText,
})
rect.ensureState('emphasis').style = emphasisStyle
rect.ensureState('blur').style = blurStyle
rect.ensureState('select').style = selectStyle
toggleHoverEmphasis(rect, focus2, blurScope, emphasisDisabled)
rect.incremental = incremental
if (incremental) {
rect.states.emphasis.hoverLayer = true
}
group.add(rect)
data2.setItemGraphicEl(idx, rect)
if (this._progressiveEls) {
this._progressiveEls.push(rect)
}
}
}
HeatmapView2.prototype._renderOnGeo = function (
geo,
seriesModel,
visualMapModel,
api
) {
var inRangeVisuals = visualMapModel.targetVisuals.inRange
var outOfRangeVisuals = visualMapModel.targetVisuals.outOfRange
var data2 = seriesModel.getData()
var hmLayer = this._hmLayer || this._hmLayer || new HeatmapLayer$1()
hmLayer.blurSize = seriesModel.get('blurSize')
hmLayer.pointSize = seriesModel.get('pointSize')
hmLayer.minOpacity = seriesModel.get('minOpacity')
hmLayer.maxOpacity = seriesModel.get('maxOpacity')
var rect = geo.getViewRect().clone()
var roamTransform = geo.getRoamTransform()
rect.applyTransform(roamTransform)
var x2 = Math.max(rect.x, 0)
var y2 = Math.max(rect.y, 0)
var x22 = Math.min(rect.width + rect.x, api.getWidth())
var y22 = Math.min(rect.height + rect.y, api.getHeight())
var width = x22 - x2
var height = y22 - y2
var dims = [
data2.mapDimension('lng'),
data2.mapDimension('lat'),
data2.mapDimension('value'),
]
var points2 = data2.mapArray(dims, function (lng, lat, value2) {
var pt3 = geo.dataToPoint([lng, lat])
pt3[0] -= x2
pt3[1] -= y2
pt3.push(value2)
return pt3
})
var dataExtent = visualMapModel.getExtent()
var isInRange =
visualMapModel.type === 'visualMap.continuous'
? getIsInContinuousRange(dataExtent, visualMapModel.option.range)
: getIsInPiecewiseRange(
dataExtent,
visualMapModel.getPieceList(),
visualMapModel.option.selected
)
hmLayer.update(
points2,
width,
height,
inRangeVisuals.color.getNormalizer(),
{
inRange: inRangeVisuals.color.getColorMapper(),
outOfRange: outOfRangeVisuals.color.getColorMapper(),
},
isInRange
)
var img = new ZRImage$1({
style: {
width,
height,
x: x2,
y: y2,
image: hmLayer.canvas,
},
silent: true,
})
this.group.add(img)
}
HeatmapView2.type = 'heatmap'
return HeatmapView2
})(ChartView$1)
var HeatmapView$1 = HeatmapView
var HeatmapSeriesModel = (function (_super) {
__extends$2(HeatmapSeriesModel2, _super)
function HeatmapSeriesModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = HeatmapSeriesModel2.type
return _this
}
HeatmapSeriesModel2.prototype.getInitialData = function (option2, ecModel) {
return createSeriesData(null, this, {
generateCoord: 'value',
})
}
HeatmapSeriesModel2.prototype.preventIncremental = function () {
var coordSysCreator = CoordinateSystem.get(this.get('coordinateSystem'))
if (coordSysCreator && coordSysCreator.dimensions) {
return (
coordSysCreator.dimensions[0] === 'lng' &&
coordSysCreator.dimensions[1] === 'lat'
)
}
}
HeatmapSeriesModel2.type = 'series.heatmap'
HeatmapSeriesModel2.dependencies = ['grid', 'geo', 'calendar']
HeatmapSeriesModel2.defaultOption = {
coordinateSystem: 'cartesian2d',
z: 2,
geoIndex: 0,
blurSize: 30,
pointSize: 20,
maxOpacity: 1,
minOpacity: 0,
select: {
itemStyle: {
borderColor: '#212121',
},
},
}
return HeatmapSeriesModel2
})(SeriesModel$1)
var HeatmapSeriesModel$1 = HeatmapSeriesModel
function install$x(registers) {
registers.registerChartView(HeatmapView$1)
registers.registerSeriesModel(HeatmapSeriesModel$1)
}
var BAR_BORDER_WIDTH_QUERY = ['itemStyle', 'borderWidth']
var LAYOUT_ATTRS = [
{
xy: 'x',
wh: 'width',
index: 0,
posDesc: ['left', 'right'],
},
{
xy: 'y',
wh: 'height',
index: 1,
posDesc: ['top', 'bottom'],
},
]
var pathForLineWidth = new Circle$2()
var PictorialBarView = (function (_super) {
__extends$2(PictorialBarView2, _super)
function PictorialBarView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = PictorialBarView2.type
return _this
}
PictorialBarView2.prototype.render = function (seriesModel, ecModel, api) {
var group = this.group
var data2 = seriesModel.getData()
var oldData = this._data
var cartesian = seriesModel.coordinateSystem
var baseAxis = cartesian.getBaseAxis()
var isHorizontal2 = baseAxis.isHorizontal()
var coordSysRect = cartesian.master.getRect()
var opt = {
ecSize: {
width: api.getWidth(),
height: api.getHeight(),
},
seriesModel,
coordSys: cartesian,
coordSysExtent: [
[coordSysRect.x, coordSysRect.x + coordSysRect.width],
[coordSysRect.y, coordSysRect.y + coordSysRect.height],
],
isHorizontal: isHorizontal2,
valueDim: LAYOUT_ATTRS[+isHorizontal2],
categoryDim: LAYOUT_ATTRS[1 - +isHorizontal2],
}
data2
.diff(oldData)
.add(function (dataIndex) {
if (!data2.hasValue(dataIndex)) {
return
}
var itemModel = getItemModel(data2, dataIndex)
var symbolMeta = getSymbolMeta(data2, dataIndex, itemModel, opt)
var bar = createBar(data2, opt, symbolMeta)
data2.setItemGraphicEl(dataIndex, bar)
group.add(bar)
updateCommon(bar, opt, symbolMeta)
})
.update(function (newIndex2, oldIndex2) {
var bar = oldData.getItemGraphicEl(oldIndex2)
if (!data2.hasValue(newIndex2)) {
group.remove(bar)
return
}
var itemModel = getItemModel(data2, newIndex2)
var symbolMeta = getSymbolMeta(data2, newIndex2, itemModel, opt)
var pictorialShapeStr = getShapeStr(data2, symbolMeta)
if (bar && pictorialShapeStr !== bar.__pictorialShapeStr) {
group.remove(bar)
data2.setItemGraphicEl(newIndex2, null)
bar = null
}
if (bar) {
updateBar(bar, opt, symbolMeta)
} else {
bar = createBar(data2, opt, symbolMeta, true)
}
data2.setItemGraphicEl(newIndex2, bar)
bar.__pictorialSymbolMeta = symbolMeta
group.add(bar)
updateCommon(bar, opt, symbolMeta)
})
.remove(function (dataIndex) {
var bar = oldData.getItemGraphicEl(dataIndex)
bar &&
removeBar(
oldData,
dataIndex,
bar.__pictorialSymbolMeta.animationModel,
bar
)
})
.execute()
this._data = data2
return this.group
}
PictorialBarView2.prototype.remove = function (ecModel, api) {
var group = this.group
var data2 = this._data
if (ecModel.get('animation')) {
if (data2) {
data2.eachItemGraphicEl(function (bar) {
removeBar(data2, getECData(bar).dataIndex, ecModel, bar)
})
}
} else {
group.removeAll()
}
}
PictorialBarView2.type = 'pictorialBar'
return PictorialBarView2
})(ChartView$1)
function getSymbolMeta(data2, dataIndex, itemModel, opt) {
var layout2 = data2.getItemLayout(dataIndex)
var symbolRepeat = itemModel.get('symbolRepeat')
var symbolClip = itemModel.get('symbolClip')
var symbolPosition = itemModel.get('symbolPosition') || 'start'
var symbolRotate = itemModel.get('symbolRotate')
var rotation = ((symbolRotate || 0) * Math.PI) / 180 || 0
var symbolPatternSize = itemModel.get('symbolPatternSize') || 2
var isAnimationEnabled2 = itemModel.isAnimationEnabled()
var symbolMeta = {
dataIndex,
layout: layout2,
itemModel,
symbolType: data2.getItemVisual(dataIndex, 'symbol') || 'circle',
style: data2.getItemVisual(dataIndex, 'style'),
symbolClip,
symbolRepeat,
symbolRepeatDirection: itemModel.get('symbolRepeatDirection'),
symbolPatternSize,
rotation,
animationModel: isAnimationEnabled2 ? itemModel : null,
hoverScale: isAnimationEnabled2 && itemModel.get(['emphasis', 'scale']),
z2: itemModel.getShallow('z', true) || 0,
}
prepareBarLength(itemModel, symbolRepeat, layout2, opt, symbolMeta)
prepareSymbolSize(
data2,
dataIndex,
layout2,
symbolRepeat,
symbolClip,
symbolMeta.boundingLength,
symbolMeta.pxSign,
symbolPatternSize,
opt,
symbolMeta
)
prepareLineWidth(itemModel, symbolMeta.symbolScale, rotation, opt, symbolMeta)
var symbolSize = symbolMeta.symbolSize
var symbolOffset = normalizeSymbolOffset(
itemModel.get('symbolOffset'),
symbolSize
)
prepareLayoutInfo(
itemModel,
symbolSize,
layout2,
symbolRepeat,
symbolClip,
symbolOffset,
symbolPosition,
symbolMeta.valueLineWidth,
symbolMeta.boundingLength,
symbolMeta.repeatCutLength,
opt,
symbolMeta
)
return symbolMeta
}
function prepareBarLength(
itemModel,
symbolRepeat,
layout2,
opt,
outputSymbolMeta
) {
var valueDim = opt.valueDim
var symbolBoundingData = itemModel.get('symbolBoundingData')
var valueAxis2 = opt.coordSys.getOtherAxis(opt.coordSys.getBaseAxis())
var zeroPx = valueAxis2.toGlobalCoord(valueAxis2.dataToCoord(0))
var pxSignIdx = 1 - +(layout2[valueDim.wh] <= 0)
var boundingLength
if (isArray$6(symbolBoundingData)) {
var symbolBoundingExtent = [
convertToCoordOnAxis(valueAxis2, symbolBoundingData[0]) - zeroPx,
convertToCoordOnAxis(valueAxis2, symbolBoundingData[1]) - zeroPx,
]
symbolBoundingExtent[1] < symbolBoundingExtent[0] &&
symbolBoundingExtent.reverse()
boundingLength = symbolBoundingExtent[pxSignIdx]
} else if (symbolBoundingData != null) {
boundingLength =
convertToCoordOnAxis(valueAxis2, symbolBoundingData) - zeroPx
} else if (symbolRepeat) {
boundingLength = opt.coordSysExtent[valueDim.index][pxSignIdx] - zeroPx
} else {
boundingLength = layout2[valueDim.wh]
}
outputSymbolMeta.boundingLength = boundingLength
if (symbolRepeat) {
outputSymbolMeta.repeatCutLength = layout2[valueDim.wh]
}
outputSymbolMeta.pxSign = boundingLength > 0 ? 1 : -1
}
function convertToCoordOnAxis(axis, value2) {
return axis.toGlobalCoord(axis.dataToCoord(axis.scale.parse(value2)))
}
function prepareSymbolSize(
data2,
dataIndex,
layout2,
symbolRepeat,
symbolClip,
boundingLength,
pxSign,
symbolPatternSize,
opt,
outputSymbolMeta
) {
var valueDim = opt.valueDim
var categoryDim = opt.categoryDim
var categorySize = Math.abs(layout2[categoryDim.wh])
var symbolSize = data2.getItemVisual(dataIndex, 'symbolSize')
var parsedSymbolSize
if (isArray$6(symbolSize)) {
parsedSymbolSize = symbolSize.slice()
} else {
if (symbolSize == null) {
parsedSymbolSize = ['100%', '100%']
} else {
parsedSymbolSize = [symbolSize, symbolSize]
}
}
parsedSymbolSize[categoryDim.index] = parsePercent(
parsedSymbolSize[categoryDim.index],
categorySize
)
parsedSymbolSize[valueDim.index] = parsePercent(
parsedSymbolSize[valueDim.index],
symbolRepeat ? categorySize : Math.abs(boundingLength)
)
outputSymbolMeta.symbolSize = parsedSymbolSize
var symbolScale = (outputSymbolMeta.symbolScale = [
parsedSymbolSize[0] / symbolPatternSize,
parsedSymbolSize[1] / symbolPatternSize,
])
symbolScale[valueDim.index] *= (opt.isHorizontal ? -1 : 1) * pxSign
}
function prepareLineWidth(
itemModel,
symbolScale,
rotation,
opt,
outputSymbolMeta
) {
var valueLineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY) || 0
if (valueLineWidth) {
pathForLineWidth.attr({
scaleX: symbolScale[0],
scaleY: symbolScale[1],
rotation,
})
pathForLineWidth.updateTransform()
valueLineWidth /= pathForLineWidth.getLineScale()
valueLineWidth *= symbolScale[opt.valueDim.index]
}
outputSymbolMeta.valueLineWidth = valueLineWidth || 0
}
function prepareLayoutInfo(
itemModel,
symbolSize,
layout2,
symbolRepeat,
symbolClip,
symbolOffset,
symbolPosition,
valueLineWidth,
boundingLength,
repeatCutLength,
opt,
outputSymbolMeta
) {
var categoryDim = opt.categoryDim
var valueDim = opt.valueDim
var pxSign = outputSymbolMeta.pxSign
var unitLength = Math.max(symbolSize[valueDim.index] + valueLineWidth, 0)
var pathLen = unitLength
if (symbolRepeat) {
var absBoundingLength = Math.abs(boundingLength)
var symbolMargin = retrieve(itemModel.get('symbolMargin'), '15%') + ''
var hasEndGap = false
if (symbolMargin.lastIndexOf('!') === symbolMargin.length - 1) {
hasEndGap = true
symbolMargin = symbolMargin.slice(0, symbolMargin.length - 1)
}
var symbolMarginNumeric = parsePercent(
symbolMargin,
symbolSize[valueDim.index]
)
var uLenWithMargin = Math.max(unitLength + symbolMarginNumeric * 2, 0)
var endFix = hasEndGap ? 0 : symbolMarginNumeric * 2
var repeatSpecified = isNumeric(symbolRepeat)
var repeatTimes = repeatSpecified
? symbolRepeat
: toIntTimes((absBoundingLength + endFix) / uLenWithMargin)
var mDiff = absBoundingLength - repeatTimes * unitLength
symbolMarginNumeric =
mDiff / 2 / (hasEndGap ? repeatTimes : Math.max(repeatTimes - 1, 1))
uLenWithMargin = unitLength + symbolMarginNumeric * 2
endFix = hasEndGap ? 0 : symbolMarginNumeric * 2
if (!repeatSpecified && symbolRepeat !== 'fixed') {
repeatTimes = repeatCutLength
? toIntTimes((Math.abs(repeatCutLength) + endFix) / uLenWithMargin)
: 0
}
pathLen = repeatTimes * uLenWithMargin - endFix
outputSymbolMeta.repeatTimes = repeatTimes
outputSymbolMeta.symbolMargin = symbolMarginNumeric
}
var sizeFix = pxSign * (pathLen / 2)
var pathPosition = (outputSymbolMeta.pathPosition = [])
pathPosition[categoryDim.index] = layout2[categoryDim.wh] / 2
pathPosition[valueDim.index] =
symbolPosition === 'start'
? sizeFix
: symbolPosition === 'end'
? boundingLength - sizeFix
: boundingLength / 2
if (symbolOffset) {
pathPosition[0] += symbolOffset[0]
pathPosition[1] += symbolOffset[1]
}
var bundlePosition = (outputSymbolMeta.bundlePosition = [])
bundlePosition[categoryDim.index] = layout2[categoryDim.xy]
bundlePosition[valueDim.index] = layout2[valueDim.xy]
var barRectShape = (outputSymbolMeta.barRectShape = extend({}, layout2))
barRectShape[valueDim.wh] =
pxSign *
Math.max(
Math.abs(layout2[valueDim.wh]),
Math.abs(pathPosition[valueDim.index] + sizeFix)
)
barRectShape[categoryDim.wh] = layout2[categoryDim.wh]
var clipShape = (outputSymbolMeta.clipShape = {})
clipShape[categoryDim.xy] = -layout2[categoryDim.xy]
clipShape[categoryDim.wh] = opt.ecSize[categoryDim.wh]
clipShape[valueDim.xy] = 0
clipShape[valueDim.wh] = layout2[valueDim.wh]
}
function createPath(symbolMeta) {
var symbolPatternSize = symbolMeta.symbolPatternSize
var path = createSymbol$1(
symbolMeta.symbolType,
-symbolPatternSize / 2,
-symbolPatternSize / 2,
symbolPatternSize,
symbolPatternSize
)
path.attr({
culling: true,
})
path.type !== 'image' &&
path.setStyle({
strokeNoScale: true,
})
return path
}
function createOrUpdateRepeatSymbols(bar, opt, symbolMeta, isUpdate) {
var bundle = bar.__pictorialBundle
var symbolSize = symbolMeta.symbolSize
var valueLineWidth = symbolMeta.valueLineWidth
var pathPosition = symbolMeta.pathPosition
var valueDim = opt.valueDim
var repeatTimes = symbolMeta.repeatTimes || 0
var index2 = 0
var unit =
symbolSize[opt.valueDim.index] +
valueLineWidth +
symbolMeta.symbolMargin * 2
eachPath(bar, function (path2) {
path2.__pictorialAnimationIndex = index2
path2.__pictorialRepeatTimes = repeatTimes
if (index2 < repeatTimes) {
updateAttr(path2, null, makeTarget(index2), symbolMeta, isUpdate)
} else {
updateAttr(
path2,
null,
{
scaleX: 0,
scaleY: 0,
},
symbolMeta,
isUpdate,
function () {
bundle.remove(path2)
}
)
}
index2++
})
for (; index2 < repeatTimes; index2++) {
var path = createPath(symbolMeta)
path.__pictorialAnimationIndex = index2
path.__pictorialRepeatTimes = repeatTimes
bundle.add(path)
var target2 = makeTarget(index2)
updateAttr(
path,
{
x: target2.x,
y: target2.y,
scaleX: 0,
scaleY: 0,
},
{
scaleX: target2.scaleX,
scaleY: target2.scaleY,
rotation: target2.rotation,
},
symbolMeta,
isUpdate
)
}
function makeTarget(index3) {
var position2 = pathPosition.slice()
var pxSign = symbolMeta.pxSign
var i2 = index3
if (
symbolMeta.symbolRepeatDirection === 'start' ? pxSign > 0 : pxSign < 0
) {
i2 = repeatTimes - 1 - index3
}
position2[valueDim.index] =
unit * (i2 - repeatTimes / 2 + 0.5) + pathPosition[valueDim.index]
return {
x: position2[0],
y: position2[1],
scaleX: symbolMeta.symbolScale[0],
scaleY: symbolMeta.symbolScale[1],
rotation: symbolMeta.rotation,
}
}
}
function createOrUpdateSingleSymbol(bar, opt, symbolMeta, isUpdate) {
var bundle = bar.__pictorialBundle
var mainPath = bar.__pictorialMainPath
if (!mainPath) {
mainPath = bar.__pictorialMainPath = createPath(symbolMeta)
bundle.add(mainPath)
updateAttr(
mainPath,
{
x: symbolMeta.pathPosition[0],
y: symbolMeta.pathPosition[1],
scaleX: 0,
scaleY: 0,
rotation: symbolMeta.rotation,
},
{
scaleX: symbolMeta.symbolScale[0],
scaleY: symbolMeta.symbolScale[1],
},
symbolMeta,
isUpdate
)
} else {
updateAttr(
mainPath,
null,
{
x: symbolMeta.pathPosition[0],
y: symbolMeta.pathPosition[1],
scaleX: symbolMeta.symbolScale[0],
scaleY: symbolMeta.symbolScale[1],
rotation: symbolMeta.rotation,
},
symbolMeta,
isUpdate
)
}
}
function createOrUpdateBarRect(bar, symbolMeta, isUpdate) {
var rectShape = extend({}, symbolMeta.barRectShape)
var barRect = bar.__pictorialBarRect
if (!barRect) {
barRect = bar.__pictorialBarRect = new Rect$4({
z2: 2,
shape: rectShape,
silent: true,
style: {
stroke: 'transparent',
fill: 'transparent',
lineWidth: 0,
},
})
barRect.disableMorphing = true
bar.add(barRect)
} else {
updateAttr(
barRect,
null,
{
shape: rectShape,
},
symbolMeta,
isUpdate
)
}
}
function createOrUpdateClip(bar, opt, symbolMeta, isUpdate) {
if (symbolMeta.symbolClip) {
var clipPath = bar.__pictorialClipPath
var clipShape = extend({}, symbolMeta.clipShape)
var valueDim = opt.valueDim
var animationModel = symbolMeta.animationModel
var dataIndex = symbolMeta.dataIndex
if (clipPath) {
updateProps$1(
clipPath,
{
shape: clipShape,
},
animationModel,
dataIndex
)
} else {
clipShape[valueDim.wh] = 0
clipPath = new Rect$4({
shape: clipShape,
})
bar.__pictorialBundle.setClipPath(clipPath)
bar.__pictorialClipPath = clipPath
var target2 = {}
target2[valueDim.wh] = symbolMeta.clipShape[valueDim.wh]
graphic$1[isUpdate ? 'updateProps' : 'initProps'](
clipPath,
{
shape: target2,
},
animationModel,
dataIndex
)
}
}
}
function getItemModel(data2, dataIndex) {
var itemModel = data2.getItemModel(dataIndex)
itemModel.getAnimationDelayParams = getAnimationDelayParams
itemModel.isAnimationEnabled = isAnimationEnabled
return itemModel
}
function getAnimationDelayParams(path) {
return {
index: path.__pictorialAnimationIndex,
count: path.__pictorialRepeatTimes,
}
}
function isAnimationEnabled() {
return this.parentModel.isAnimationEnabled() && !!this.getShallow('animation')
}
function createBar(data2, opt, symbolMeta, isUpdate) {
var bar = new Group$5()
var bundle = new Group$5()
bar.add(bundle)
bar.__pictorialBundle = bundle
bundle.x = symbolMeta.bundlePosition[0]
bundle.y = symbolMeta.bundlePosition[1]
if (symbolMeta.symbolRepeat) {
createOrUpdateRepeatSymbols(bar, opt, symbolMeta)
} else {
createOrUpdateSingleSymbol(bar, opt, symbolMeta)
}
createOrUpdateBarRect(bar, symbolMeta, isUpdate)
createOrUpdateClip(bar, opt, symbolMeta, isUpdate)
bar.__pictorialShapeStr = getShapeStr(data2, symbolMeta)
bar.__pictorialSymbolMeta = symbolMeta
return bar
}
function updateBar(bar, opt, symbolMeta) {
var animationModel = symbolMeta.animationModel
var dataIndex = symbolMeta.dataIndex
var bundle = bar.__pictorialBundle
updateProps$1(
bundle,
{
x: symbolMeta.bundlePosition[0],
y: symbolMeta.bundlePosition[1],
},
animationModel,
dataIndex
)
if (symbolMeta.symbolRepeat) {
createOrUpdateRepeatSymbols(bar, opt, symbolMeta, true)
} else {
createOrUpdateSingleSymbol(bar, opt, symbolMeta, true)
}
createOrUpdateBarRect(bar, symbolMeta, true)
createOrUpdateClip(bar, opt, symbolMeta, true)
}
function removeBar(data2, dataIndex, animationModel, bar) {
var labelRect = bar.__pictorialBarRect
labelRect && labelRect.removeTextContent()
var paths = []
eachPath(bar, function (path) {
paths.push(path)
})
bar.__pictorialMainPath && paths.push(bar.__pictorialMainPath)
bar.__pictorialClipPath && (animationModel = null)
each$f(paths, function (path) {
removeElement(
path,
{
scaleX: 0,
scaleY: 0,
},
animationModel,
dataIndex,
function () {
bar.parent && bar.parent.remove(bar)
}
)
})
data2.setItemGraphicEl(dataIndex, null)
}
function getShapeStr(data2, symbolMeta) {
return [
data2.getItemVisual(symbolMeta.dataIndex, 'symbol') || 'none',
!!symbolMeta.symbolRepeat,
!!symbolMeta.symbolClip,
].join(':')
}
function eachPath(bar, cb, context2) {
each$f(bar.__pictorialBundle.children(), function (el2) {
el2 !== bar.__pictorialBarRect && cb.call(context2, el2)
})
}
function updateAttr(
el2,
immediateAttrs,
animationAttrs,
symbolMeta,
isUpdate,
cb
) {
immediateAttrs && el2.attr(immediateAttrs)
if (symbolMeta.symbolClip && !isUpdate) {
animationAttrs && el2.attr(animationAttrs)
} else {
animationAttrs &&
graphic$1[isUpdate ? 'updateProps' : 'initProps'](
el2,
animationAttrs,
symbolMeta.animationModel,
symbolMeta.dataIndex,
cb
)
}
}
function updateCommon(bar, opt, symbolMeta) {
var dataIndex = symbolMeta.dataIndex
var itemModel = symbolMeta.itemModel
var emphasisModel = itemModel.getModel('emphasis')
var emphasisStyle = emphasisModel.getModel('itemStyle').getItemStyle()
var blurStyle = itemModel.getModel(['blur', 'itemStyle']).getItemStyle()
var selectStyle = itemModel.getModel(['select', 'itemStyle']).getItemStyle()
var cursorStyle = itemModel.getShallow('cursor')
var focus2 = emphasisModel.get('focus')
var blurScope = emphasisModel.get('blurScope')
var hoverScale = emphasisModel.get('scale')
eachPath(bar, function (path) {
if (path instanceof ZRImage$1) {
var pathStyle = path.style
path.useStyle(
extend(
{
image: pathStyle.image,
x: pathStyle.x,
y: pathStyle.y,
width: pathStyle.width,
height: pathStyle.height,
},
symbolMeta.style
)
)
} else {
path.useStyle(symbolMeta.style)
}
var emphasisState = path.ensureState('emphasis')
emphasisState.style = emphasisStyle
if (hoverScale) {
emphasisState.scaleX = path.scaleX * 1.1
emphasisState.scaleY = path.scaleY * 1.1
}
path.ensureState('blur').style = blurStyle
path.ensureState('select').style = selectStyle
cursorStyle && (path.cursor = cursorStyle)
path.z2 = symbolMeta.z2
})
var barPositionOutside =
opt.valueDim.posDesc[+(symbolMeta.boundingLength > 0)]
var barRect = bar.__pictorialBarRect
setLabelStyle(barRect, getLabelStatesModels(itemModel), {
labelFetcher: opt.seriesModel,
labelDataIndex: dataIndex,
defaultText: getDefaultLabel(opt.seriesModel.getData(), dataIndex),
inheritColor: symbolMeta.style.fill,
defaultOpacity: symbolMeta.style.opacity,
defaultOutsidePosition: barPositionOutside,
})
toggleHoverEmphasis(bar, focus2, blurScope, emphasisModel.get('disabled'))
}
function toIntTimes(times) {
var roundedTimes = Math.round(times)
return Math.abs(times - roundedTimes) < 1e-4 ? roundedTimes : Math.ceil(times)
}
var PictorialBarView$1 = PictorialBarView
var PictorialBarSeriesModel = (function (_super) {
__extends$2(PictorialBarSeriesModel2, _super)
function PictorialBarSeriesModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = PictorialBarSeriesModel2.type
_this.hasSymbolVisual = true
_this.defaultSymbol = 'roundRect'
return _this
}
PictorialBarSeriesModel2.prototype.getInitialData = function (option2) {
option2.stack = null
return _super.prototype.getInitialData.apply(this, arguments)
}
PictorialBarSeriesModel2.type = 'series.pictorialBar'
PictorialBarSeriesModel2.dependencies = ['grid']
PictorialBarSeriesModel2.defaultOption = inheritDefaultOption(
BaseBarSeriesModel$1.defaultOption,
{
symbol: 'circle',
symbolSize: null,
symbolRotate: null,
symbolPosition: null,
symbolOffset: null,
symbolMargin: null,
symbolRepeat: false,
symbolRepeatDirection: 'end',
symbolClip: false,
symbolBoundingData: null,
symbolPatternSize: 400,
barGap: '-100%',
progressive: 0,
emphasis: {
scale: false,
},
select: {
itemStyle: {
borderColor: '#212121',
},
},
}
)
return PictorialBarSeriesModel2
})(BaseBarSeriesModel$1)
var PictorialBarSeriesModel$1 = PictorialBarSeriesModel
function install$w(registers) {
registers.registerChartView(PictorialBarView$1)
registers.registerSeriesModel(PictorialBarSeriesModel$1)
registers.registerLayout(
registers.PRIORITY.VISUAL.LAYOUT,
curry$1(layout$3, 'pictorialBar')
)
registers.registerLayout(
registers.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT,
createProgressiveLayout('pictorialBar')
)
}
var ThemeRiverView = (function (_super) {
__extends$2(ThemeRiverView2, _super)
function ThemeRiverView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = ThemeRiverView2.type
_this._layers = []
return _this
}
ThemeRiverView2.prototype.render = function (seriesModel, ecModel, api) {
var data2 = seriesModel.getData()
var self2 = this
var group = this.group
var layersSeries = seriesModel.getLayerSeries()
var layoutInfo = data2.getLayout('layoutInfo')
var rect = layoutInfo.rect
var boundaryGap = layoutInfo.boundaryGap
group.x = 0
group.y = rect.y + boundaryGap[0]
function keyGetter(item2) {
return item2.name
}
var dataDiffer = new DataDiffer$1(
this._layersSeries || [],
layersSeries,
keyGetter,
keyGetter
)
var newLayersGroups = []
dataDiffer
.add(bind$1(process2, this, 'add'))
.update(bind$1(process2, this, 'update'))
.remove(bind$1(process2, this, 'remove'))
.execute()
function process2(status, idx, oldIdx) {
var oldLayersGroups = self2._layers
if (status === 'remove') {
group.remove(oldLayersGroups[idx])
return
}
var points0 = []
var points1 = []
var style2
var indices = layersSeries[idx].indices
var j2 = 0
for (; j2 < indices.length; j2++) {
var layout2 = data2.getItemLayout(indices[j2])
var x2 = layout2.x
var y0 = layout2.y0
var y2 = layout2.y
points0.push(x2, y0)
points1.push(x2, y0 + y2)
style2 = data2.getItemVisual(indices[j2], 'style')
}
var polygon
var textLayout = data2.getItemLayout(indices[0])
var labelModel = seriesModel.getModel('label')
var margin = labelModel.get('margin')
var emphasisModel = seriesModel.getModel('emphasis')
if (status === 'add') {
var layerGroup = (newLayersGroups[idx] = new Group$5())
polygon = new ECPolygon({
shape: {
points: points0,
stackedOnPoints: points1,
smooth: 0.4,
stackedOnSmooth: 0.4,
smoothConstraint: false,
},
z2: 0,
})
layerGroup.add(polygon)
group.add(layerGroup)
if (seriesModel.isAnimationEnabled()) {
polygon.setClipPath(
createGridClipShape(
polygon.getBoundingRect(),
seriesModel,
function () {
polygon.removeClipPath()
}
)
)
}
} else {
var layerGroup = oldLayersGroups[oldIdx]
polygon = layerGroup.childAt(0)
group.add(layerGroup)
newLayersGroups[idx] = layerGroup
updateProps$1(
polygon,
{
shape: {
points: points0,
stackedOnPoints: points1,
},
},
seriesModel
)
saveOldStyle(polygon)
}
setLabelStyle(
polygon,
getLabelStatesModels(seriesModel),
{
labelDataIndex: indices[j2 - 1],
defaultText: data2.getName(indices[j2 - 1]),
inheritColor: style2.fill,
},
{
normal: {
verticalAlign: 'middle',
},
}
)
polygon.setTextConfig({
position: null,
local: true,
})
var labelEl = polygon.getTextContent()
if (labelEl) {
labelEl.x = textLayout.x - margin
labelEl.y = textLayout.y0 + textLayout.y / 2
}
polygon.useStyle(style2)
data2.setItemGraphicEl(idx, polygon)
setStatesStylesFromModel(polygon, seriesModel)
toggleHoverEmphasis(
polygon,
emphasisModel.get('focus'),
emphasisModel.get('blurScope'),
emphasisModel.get('disabled')
)
}
this._layersSeries = layersSeries
this._layers = newLayersGroups
}
ThemeRiverView2.type = 'themeRiver'
return ThemeRiverView2
})(ChartView$1)
function createGridClipShape(rect, seriesModel, cb) {
var rectEl = new Rect$4({
shape: {
x: rect.x - 10,
y: rect.y - 10,
width: 0,
height: rect.height + 20,
},
})
initProps(
rectEl,
{
shape: {
x: rect.x - 50,
width: rect.width + 100,
height: rect.height + 20,
},
},
seriesModel,
cb
)
return rectEl
}
var ThemeRiverView$1 = ThemeRiverView
var DATA_NAME_INDEX = 2
var ThemeRiverSeriesModel = (function (_super) {
__extends$2(ThemeRiverSeriesModel2, _super)
function ThemeRiverSeriesModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = ThemeRiverSeriesModel2.type
return _this
}
ThemeRiverSeriesModel2.prototype.init = function (option2) {
_super.prototype.init.apply(this, arguments)
this.legendVisualProvider = new LegendVisualProvider$1(
bind$1(this.getData, this),
bind$1(this.getRawData, this)
)
}
ThemeRiverSeriesModel2.prototype.fixData = function (data2) {
var rawDataLength = data2.length
var timeValueKeys = {}
var groupResult = groupData(data2, function (item2) {
if (!timeValueKeys.hasOwnProperty(item2[0] + '')) {
timeValueKeys[item2[0] + ''] = -1
}
return item2[2]
})
var layerData = []
groupResult.buckets.each(function (items, key2) {
layerData.push({
name: key2,
dataList: items,
})
})
var layerNum = layerData.length
for (var k2 = 0; k2 < layerNum; ++k2) {
var name_1 = layerData[k2].name
for (var j2 = 0; j2 < layerData[k2].dataList.length; ++j2) {
var timeValue = layerData[k2].dataList[j2][0] + ''
timeValueKeys[timeValue] = k2
}
for (var timeValue in timeValueKeys) {
if (
timeValueKeys.hasOwnProperty(timeValue) &&
timeValueKeys[timeValue] !== k2
) {
timeValueKeys[timeValue] = k2
data2[rawDataLength] = [timeValue, 0, name_1]
rawDataLength++
}
}
}
return data2
}
ThemeRiverSeriesModel2.prototype.getInitialData = function (
option2,
ecModel
) {
var singleAxisModel = this.getReferringComponents(
'singleAxis',
SINGLE_REFERRING
).models[0]
var axisType = singleAxisModel.get('type')
var filterData = filter(option2.data, function (dataItem) {
return dataItem[2] !== void 0
})
var data2 = this.fixData(filterData || [])
var nameList = []
var nameMap = (this.nameMap = createHashMap())
var count2 = 0
for (var i2 = 0; i2 < data2.length; ++i2) {
nameList.push(data2[i2][DATA_NAME_INDEX])
if (!nameMap.get(data2[i2][DATA_NAME_INDEX])) {
nameMap.set(data2[i2][DATA_NAME_INDEX], count2)
count2++
}
}
var dimensions = prepareSeriesDataSchema(data2, {
coordDimensions: ['single'],
dimensionsDefine: [
{
name: 'time',
type: getDimensionTypeByAxis(axisType),
},
{
name: 'value',
type: 'float',
},
{
name: 'name',
type: 'ordinal',
},
],
encodeDefine: {
single: 0,
value: 1,
itemName: 2,
},
}).dimensions
var list2 = new SeriesData$1(dimensions, this)
list2.initData(data2)
return list2
}
ThemeRiverSeriesModel2.prototype.getLayerSeries = function () {
var data2 = this.getData()
var lenCount = data2.count()
var indexArr = []
for (var i2 = 0; i2 < lenCount; ++i2) {
indexArr[i2] = i2
}
var timeDim = data2.mapDimension('single')
var groupResult = groupData(indexArr, function (index2) {
return data2.get('name', index2)
})
var layerSeries = []
groupResult.buckets.each(function (items, key2) {
items.sort(function (index1, index2) {
return data2.get(timeDim, index1) - data2.get(timeDim, index2)
})
layerSeries.push({
name: key2,
indices: items,
})
})
return layerSeries
}
ThemeRiverSeriesModel2.prototype.getAxisTooltipData = function (
dim,
value2,
baseAxis
) {
if (!isArray$6(dim)) {
dim = dim ? [dim] : []
}
var data2 = this.getData()
var layerSeries = this.getLayerSeries()
var indices = []
var layerNum = layerSeries.length
var nestestValue
for (var i2 = 0; i2 < layerNum; ++i2) {
var minDist = Number.MAX_VALUE
var nearestIdx = -1
var pointNum = layerSeries[i2].indices.length
for (var j2 = 0; j2 < pointNum; ++j2) {
var theValue = data2.get(dim[0], layerSeries[i2].indices[j2])
var dist2 = Math.abs(theValue - value2)
if (dist2 <= minDist) {
nestestValue = theValue
minDist = dist2
nearestIdx = layerSeries[i2].indices[j2]
}
}
indices.push(nearestIdx)
}
return {
dataIndices: indices,
nestestValue,
}
}
ThemeRiverSeriesModel2.prototype.formatTooltip = function (
dataIndex,
multipleSeries,
dataType2
) {
var data2 = this.getData()
var name2 = data2.getName(dataIndex)
var value2 = data2.get(data2.mapDimension('value'), dataIndex)
return createTooltipMarkup('nameValue', {
name: name2,
value: value2,
})
}
ThemeRiverSeriesModel2.type = 'series.themeRiver'
ThemeRiverSeriesModel2.dependencies = ['singleAxis']
ThemeRiverSeriesModel2.defaultOption = {
z: 2,
colorBy: 'data',
coordinateSystem: 'singleAxis',
boundaryGap: ['10%', '10%'],
singleAxisIndex: 0,
animationEasing: 'linear',
label: {
margin: 4,
show: true,
position: 'left',
fontSize: 11,
},
emphasis: {
label: {
show: true,
},
},
}
return ThemeRiverSeriesModel2
})(SeriesModel$1)
var ThemeRiverSeriesModel$1 = ThemeRiverSeriesModel
function themeRiverLayout(ecModel, api) {
ecModel.eachSeriesByType('themeRiver', function (seriesModel) {
var data2 = seriesModel.getData()
var single = seriesModel.coordinateSystem
var layoutInfo = {}
var rect = single.getRect()
layoutInfo.rect = rect
var boundaryGap = seriesModel.get('boundaryGap')
var axis = single.getAxis()
layoutInfo.boundaryGap = boundaryGap
if (axis.orient === 'horizontal') {
boundaryGap[0] = parsePercent(boundaryGap[0], rect.height)
boundaryGap[1] = parsePercent(boundaryGap[1], rect.height)
var height = rect.height - boundaryGap[0] - boundaryGap[1]
doThemeRiverLayout(data2, seriesModel, height)
} else {
boundaryGap[0] = parsePercent(boundaryGap[0], rect.width)
boundaryGap[1] = parsePercent(boundaryGap[1], rect.width)
var width = rect.width - boundaryGap[0] - boundaryGap[1]
doThemeRiverLayout(data2, seriesModel, width)
}
data2.setLayout('layoutInfo', layoutInfo)
})
}
function doThemeRiverLayout(data2, seriesModel, height) {
if (!data2.count()) {
return
}
var coordSys = seriesModel.coordinateSystem
var layerSeries = seriesModel.getLayerSeries()
var timeDim = data2.mapDimension('single')
var valueDim = data2.mapDimension('value')
var layerPoints = map$1(layerSeries, function (singleLayer) {
return map$1(singleLayer.indices, function (idx) {
var pt3 = coordSys.dataToPoint(data2.get(timeDim, idx))
pt3[1] = data2.get(valueDim, idx)
return pt3
})
})
var base2 = computeBaseline(layerPoints)
var baseLine = base2.y0
var ky2 = height / base2.max
var n2 = layerSeries.length
var m2 = layerSeries[0].indices.length
var baseY0
for (var j2 = 0; j2 < m2; ++j2) {
baseY0 = baseLine[j2] * ky2
data2.setItemLayout(layerSeries[0].indices[j2], {
layerIndex: 0,
x: layerPoints[0][j2][0],
y0: baseY0,
y: layerPoints[0][j2][1] * ky2,
})
for (var i2 = 1; i2 < n2; ++i2) {
baseY0 += layerPoints[i2 - 1][j2][1] * ky2
data2.setItemLayout(layerSeries[i2].indices[j2], {
layerIndex: i2,
x: layerPoints[i2][j2][0],
y0: baseY0,
y: layerPoints[i2][j2][1] * ky2,
})
}
}
}
function computeBaseline(data2) {
var layerNum = data2.length
var pointNum = data2[0].length
var sums = []
var y0 = []
var max3 = 0
for (var i2 = 0; i2 < pointNum; ++i2) {
var temp = 0
for (var j2 = 0; j2 < layerNum; ++j2) {
temp += data2[j2][i2][1]
}
if (temp > max3) {
max3 = temp
}
sums.push(temp)
}
for (var k2 = 0; k2 < pointNum; ++k2) {
y0[k2] = (max3 - sums[k2]) / 2
}
max3 = 0
for (var l2 = 0; l2 < pointNum; ++l2) {
var sum2 = sums[l2] + y0[l2]
if (sum2 > max3) {
max3 = sum2
}
}
return {
y0,
max: max3,
}
}
function install$v(registers) {
registers.registerChartView(ThemeRiverView$1)
registers.registerSeriesModel(ThemeRiverSeriesModel$1)
registers.registerLayout(themeRiverLayout)
registers.registerProcessor(dataFilter$1('themeRiver'))
}
var DEFAULT_SECTOR_Z = 2
var DEFAULT_TEXT_Z = 4
var SunburstPiece = (function (_super) {
__extends$2(SunburstPiece2, _super)
function SunburstPiece2(node2, seriesModel, ecModel, api) {
var _this = _super.call(this) || this
_this.z2 = DEFAULT_SECTOR_Z
_this.textConfig = {
inside: true,
}
getECData(_this).seriesIndex = seriesModel.seriesIndex
var text2 = new ZRText$1({
z2: DEFAULT_TEXT_Z,
silent: node2.getModel().get(['label', 'silent']),
})
_this.setTextContent(text2)
_this.updateData(true, node2, seriesModel, ecModel, api)
return _this
}
SunburstPiece2.prototype.updateData = function (
firstCreate,
node2,
seriesModel,
ecModel,
api
) {
this.node = node2
node2.piece = this
seriesModel = seriesModel || this._seriesModel
ecModel = ecModel || this._ecModel
var sector = this
getECData(sector).dataIndex = node2.dataIndex
var itemModel = node2.getModel()
var emphasisModel = itemModel.getModel('emphasis')
var layout2 = node2.getLayout()
var sectorShape = extend({}, layout2)
sectorShape.label = null
var normalStyle = node2.getVisual('style')
normalStyle.lineJoin = 'bevel'
var decal = node2.getVisual('decal')
if (decal) {
normalStyle.decal = createOrUpdatePatternFromDecal(decal, api)
}
var cornerRadius = getSectorCornerRadius(
itemModel.getModel('itemStyle'),
sectorShape,
true
)
extend(sectorShape, cornerRadius)
each$f(SPECIAL_STATES, function (stateName) {
var state2 = sector.ensureState(stateName)
var itemStyleModel = itemModel.getModel([stateName, 'itemStyle'])
state2.style = itemStyleModel.getItemStyle()
var cornerRadius2 = getSectorCornerRadius(itemStyleModel, sectorShape)
if (cornerRadius2) {
state2.shape = cornerRadius2
}
})
if (firstCreate) {
sector.setShape(sectorShape)
sector.shape.r = layout2.r0
initProps(
sector,
{
shape: {
r: layout2.r,
},
},
seriesModel,
node2.dataIndex
)
} else {
updateProps$1(
sector,
{
shape: sectorShape,
},
seriesModel
)
saveOldStyle(sector)
}
sector.useStyle(normalStyle)
this._updateLabel(seriesModel)
var cursorStyle = itemModel.getShallow('cursor')
cursorStyle && sector.attr('cursor', cursorStyle)
this._seriesModel = seriesModel || this._seriesModel
this._ecModel = ecModel || this._ecModel
var focus2 = emphasisModel.get('focus')
var focusOrIndices =
focus2 === 'ancestor'
? node2.getAncestorsIndices()
: focus2 === 'descendant'
? node2.getDescendantIndices()
: focus2
toggleHoverEmphasis(
this,
focusOrIndices,
emphasisModel.get('blurScope'),
emphasisModel.get('disabled')
)
}
SunburstPiece2.prototype._updateLabel = function (seriesModel) {
var _this = this
var itemModel = this.node.getModel()
var normalLabelModel = itemModel.getModel('label')
var layout2 = this.node.getLayout()
var angle2 = layout2.endAngle - layout2.startAngle
var midAngle = (layout2.startAngle + layout2.endAngle) / 2
var dx = Math.cos(midAngle)
var dy = Math.sin(midAngle)
var sector = this
var label = sector.getTextContent()
var dataIndex = this.node.dataIndex
var labelMinAngle = (normalLabelModel.get('minAngle') / 180) * Math.PI
var isNormalShown =
normalLabelModel.get('show') &&
!(labelMinAngle != null && Math.abs(angle2) < labelMinAngle)
label.ignore = !isNormalShown
each$f(DISPLAY_STATES, function (stateName) {
var labelStateModel =
stateName === 'normal'
? itemModel.getModel('label')
: itemModel.getModel([stateName, 'label'])
var isNormal = stateName === 'normal'
var state2 = isNormal ? label : label.ensureState(stateName)
var text2 = seriesModel.getFormattedLabel(dataIndex, stateName)
if (isNormal) {
text2 = text2 || _this.node.name
}
state2.style = createTextStyle$1(
labelStateModel,
{},
null,
stateName !== 'normal',
true
)
if (text2) {
state2.style.text = text2
}
var isShown = labelStateModel.get('show')
if (isShown != null && !isNormal) {
state2.ignore = !isShown
}
var labelPosition = getLabelAttr(labelStateModel, 'position')
var sectorState = isNormal ? sector : sector.states[stateName]
var labelColor = sectorState.style.fill
sectorState.textConfig = {
outsideFill:
labelStateModel.get('color') === 'inherit' ? labelColor : null,
inside: labelPosition !== 'outside',
}
var r2
var labelPadding = getLabelAttr(labelStateModel, 'distance') || 0
var textAlign2 = getLabelAttr(labelStateModel, 'align')
if (labelPosition === 'outside') {
r2 = layout2.r + labelPadding
textAlign2 = midAngle > Math.PI / 2 ? 'right' : 'left'
} else {
if (!textAlign2 || textAlign2 === 'center') {
if (angle2 === 2 * Math.PI && layout2.r0 === 0) {
r2 = 0
} else {
r2 = (layout2.r + layout2.r0) / 2
}
textAlign2 = 'center'
} else if (textAlign2 === 'left') {
r2 = layout2.r0 + labelPadding
if (midAngle > Math.PI / 2) {
textAlign2 = 'right'
}
} else if (textAlign2 === 'right') {
r2 = layout2.r - labelPadding
if (midAngle > Math.PI / 2) {
textAlign2 = 'left'
}
}
}
state2.style.align = textAlign2
state2.style.verticalAlign =
getLabelAttr(labelStateModel, 'verticalAlign') || 'middle'
state2.x = r2 * dx + layout2.cx
state2.y = r2 * dy + layout2.cy
var rotateType = getLabelAttr(labelStateModel, 'rotate')
var rotate2 = 0
if (rotateType === 'radial') {
rotate2 = normalizeRadian(-midAngle)
if (rotate2 > Math.PI / 2 && rotate2 < Math.PI * 1.5) {
rotate2 += Math.PI
}
} else if (rotateType === 'tangential') {
rotate2 = Math.PI / 2 - midAngle
if (rotate2 > Math.PI / 2) {
rotate2 -= Math.PI
} else if (rotate2 < -Math.PI / 2) {
rotate2 += Math.PI
}
} else if (isNumber$2(rotateType)) {
rotate2 = (rotateType * Math.PI) / 180
}
state2.rotation = normalizeRadian(rotate2)
})
function getLabelAttr(model, name2) {
var stateAttr = model.get(name2)
if (stateAttr == null) {
return normalLabelModel.get(name2)
}
return stateAttr
}
label.dirtyStyle()
}
return SunburstPiece2
})(Sector$1)
var SunburstPiece$1 = SunburstPiece
var ROOT_TO_NODE_ACTION = 'sunburstRootToNode'
var HIGHLIGHT_ACTION = 'sunburstHighlight'
var UNHIGHLIGHT_ACTION = 'sunburstUnhighlight'
function installSunburstAction(registers) {
registers.registerAction(
{
type: ROOT_TO_NODE_ACTION,
update: 'updateView',
},
function (payload, ecModel) {
ecModel.eachComponent(
{
mainType: 'series',
subType: 'sunburst',
query: payload,
},
handleRootToNode
)
function handleRootToNode(model, index2) {
var targetInfo = retrieveTargetInfo(
payload,
[ROOT_TO_NODE_ACTION],
model
)
if (targetInfo) {
var originViewRoot = model.getViewRoot()
if (originViewRoot) {
payload.direction = aboveViewRoot(originViewRoot, targetInfo.node)
? 'rollUp'
: 'drillDown'
}
model.resetViewRoot(targetInfo.node)
}
}
}
)
registers.registerAction(
{
type: HIGHLIGHT_ACTION,
update: 'none',
},
function (payload, ecModel, api) {
payload = extend({}, payload)
ecModel.eachComponent(
{
mainType: 'series',
subType: 'sunburst',
query: payload,
},
handleHighlight
)
function handleHighlight(model) {
var targetInfo = retrieveTargetInfo(payload, [HIGHLIGHT_ACTION], model)
if (targetInfo) {
payload.dataIndex = targetInfo.node.dataIndex
}
}
api.dispatchAction(
extend(payload, {
type: 'highlight',
})
)
}
)
registers.registerAction(
{
type: UNHIGHLIGHT_ACTION,
update: 'updateView',
},
function (payload, ecModel, api) {
payload = extend({}, payload)
api.dispatchAction(
extend(payload, {
type: 'downplay',
})
)
}
)
}
var SunburstView = (function (_super) {
__extends$2(SunburstView2, _super)
function SunburstView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = SunburstView2.type
return _this
}
SunburstView2.prototype.render = function (
seriesModel,
ecModel,
api,
payload
) {
var self2 = this
this.seriesModel = seriesModel
this.api = api
this.ecModel = ecModel
var data2 = seriesModel.getData()
var virtualRoot = data2.tree.root
var newRoot = seriesModel.getViewRoot()
var group = this.group
var renderLabelForZeroData = seriesModel.get('renderLabelForZeroData')
var newChildren = []
newRoot.eachNode(function (node2) {
newChildren.push(node2)
})
var oldChildren = this._oldChildren || []
dualTravel(newChildren, oldChildren)
renderRollUp(virtualRoot, newRoot)
this._initEvents()
this._oldChildren = newChildren
function dualTravel(newChildren2, oldChildren2) {
if (newChildren2.length === 0 && oldChildren2.length === 0) {
return
}
new DataDiffer$1(oldChildren2, newChildren2, getKey2, getKey2)
.add(processNode)
.update(processNode)
.remove(curry$1(processNode, null))
.execute()
function getKey2(node2) {
return node2.getId()
}
function processNode(newIdx, oldIdx) {
var newNode = newIdx == null ? null : newChildren2[newIdx]
var oldNode = oldIdx == null ? null : oldChildren2[oldIdx]
doRenderNode(newNode, oldNode)
}
}
function doRenderNode(newNode, oldNode) {
if (!renderLabelForZeroData && newNode && !newNode.getValue()) {
newNode = null
}
if (newNode !== virtualRoot && oldNode !== virtualRoot) {
if (oldNode && oldNode.piece) {
if (newNode) {
oldNode.piece.updateData(false, newNode, seriesModel, ecModel, api)
data2.setItemGraphicEl(newNode.dataIndex, oldNode.piece)
} else {
removeNode2(oldNode)
}
} else if (newNode) {
var piece = new SunburstPiece$1(newNode, seriesModel, ecModel, api)
group.add(piece)
data2.setItemGraphicEl(newNode.dataIndex, piece)
}
}
}
function removeNode2(node2) {
if (!node2) {
return
}
if (node2.piece) {
group.remove(node2.piece)
node2.piece = null
}
}
function renderRollUp(virtualRoot2, viewRoot) {
if (viewRoot.depth > 0) {
if (self2.virtualPiece) {
self2.virtualPiece.updateData(
false,
virtualRoot2,
seriesModel,
ecModel,
api
)
} else {
self2.virtualPiece = new SunburstPiece$1(
virtualRoot2,
seriesModel,
ecModel,
api
)
group.add(self2.virtualPiece)
}
viewRoot.piece.off('click')
self2.virtualPiece.on('click', function (e2) {
self2._rootToNode(viewRoot.parentNode)
})
} else if (self2.virtualPiece) {
group.remove(self2.virtualPiece)
self2.virtualPiece = null
}
}
}
SunburstView2.prototype._initEvents = function () {
var _this = this
this.group.off('click')
this.group.on('click', function (e2) {
var targetFound = false
var viewRoot = _this.seriesModel.getViewRoot()
viewRoot.eachNode(function (node2) {
if (!targetFound && node2.piece && node2.piece === e2.target) {
var nodeClick = node2.getModel().get('nodeClick')
if (nodeClick === 'rootToNode') {
_this._rootToNode(node2)
} else if (nodeClick === 'link') {
var itemModel = node2.getModel()
var link2 = itemModel.get('link')
if (link2) {
var linkTarget = itemModel.get('target', true) || '_blank'
windowOpen(link2, linkTarget)
}
}
targetFound = true
}
})
})
}
SunburstView2.prototype._rootToNode = function (node2) {
if (node2 !== this.seriesModel.getViewRoot()) {
this.api.dispatchAction({
type: ROOT_TO_NODE_ACTION,
from: this.uid,
seriesId: this.seriesModel.id,
targetNode: node2,
})
}
}
SunburstView2.prototype.containPoint = function (point, seriesModel) {
var treeRoot = seriesModel.getData()
var itemLayout = treeRoot.getItemLayout(0)
if (itemLayout) {
var dx = point[0] - itemLayout.cx
var dy = point[1] - itemLayout.cy
var radius = Math.sqrt(dx * dx + dy * dy)
return radius <= itemLayout.r && radius >= itemLayout.r0
}
}
SunburstView2.type = 'sunburst'
return SunburstView2
})(ChartView$1)
var SunburstView$1 = SunburstView
var SunburstSeriesModel = (function (_super) {
__extends$2(SunburstSeriesModel2, _super)
function SunburstSeriesModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = SunburstSeriesModel2.type
_this.ignoreStyleOnData = true
return _this
}
SunburstSeriesModel2.prototype.getInitialData = function (option2, ecModel) {
var root2 = {
name: option2.name,
children: option2.data,
}
completeTreeValue(root2)
var levelModels = (this._levelModels = map$1(
option2.levels || [],
function (levelDefine) {
return new Model$1(levelDefine, this, ecModel)
},
this
))
var tree = Tree$1.createTree(root2, this, beforeLink)
function beforeLink(nodeData) {
nodeData.wrapMethod('getItemModel', function (model, idx) {
var node2 = tree.getNodeByDataIndex(idx)
var levelModel = levelModels[node2.depth]
levelModel && (model.parentModel = levelModel)
return model
})
}
return tree.data
}
SunburstSeriesModel2.prototype.optionUpdated = function () {
this.resetViewRoot()
}
SunburstSeriesModel2.prototype.getDataParams = function (dataIndex) {
var params2 = _super.prototype.getDataParams.apply(this, arguments)
var node2 = this.getData().tree.getNodeByDataIndex(dataIndex)
params2.treePathInfo = wrapTreePathInfo(node2, this)
return params2
}
SunburstSeriesModel2.prototype.getLevelModel = function (node2) {
return this._levelModels && this._levelModels[node2.depth]
}
SunburstSeriesModel2.prototype.getViewRoot = function () {
return this._viewRoot
}
SunburstSeriesModel2.prototype.resetViewRoot = function (viewRoot) {
viewRoot ? (this._viewRoot = viewRoot) : (viewRoot = this._viewRoot)
var root2 = this.getRawData().tree.root
if (!viewRoot || (viewRoot !== root2 && !root2.contains(viewRoot))) {
this._viewRoot = root2
}
}
SunburstSeriesModel2.prototype.enableAriaDecal = function () {
enableAriaDecalForTree(this)
}
SunburstSeriesModel2.type = 'series.sunburst'
SunburstSeriesModel2.defaultOption = {
z: 2,
center: ['50%', '50%'],
radius: [0, '75%'],
clockwise: true,
startAngle: 90,
minAngle: 0,
stillShowZeroSum: true,
nodeClick: 'rootToNode',
renderLabelForZeroData: false,
label: {
rotate: 'radial',
show: true,
opacity: 1,
align: 'center',
position: 'inside',
distance: 5,
silent: true,
},
itemStyle: {
borderWidth: 1,
borderColor: 'white',
borderType: 'solid',
shadowBlur: 0,
shadowColor: 'rgba(0, 0, 0, 0.2)',
shadowOffsetX: 0,
shadowOffsetY: 0,
opacity: 1,
},
emphasis: {
focus: 'descendant',
},
blur: {
itemStyle: {
opacity: 0.2,
},
label: {
opacity: 0.1,
},
},
animationType: 'expansion',
animationDuration: 1e3,
animationDurationUpdate: 500,
data: [],
sort: 'desc',
}
return SunburstSeriesModel2
})(SeriesModel$1)
function completeTreeValue(dataNode) {
var sum2 = 0
each$f(dataNode.children, function (child) {
completeTreeValue(child)
var childValue = child.value
isArray$6(childValue) && (childValue = childValue[0])
sum2 += childValue
})
var thisValue = dataNode.value
if (isArray$6(thisValue)) {
thisValue = thisValue[0]
}
if (thisValue == null || isNaN(thisValue)) {
thisValue = sum2
}
if (thisValue < 0) {
thisValue = 0
}
isArray$6(dataNode.value)
? (dataNode.value[0] = thisValue)
: (dataNode.value = thisValue)
}
var SunburstSeriesModel$1 = SunburstSeriesModel
var RADIAN = Math.PI / 180
function sunburstLayout(seriesType2, ecModel, api) {
ecModel.eachSeriesByType(seriesType2, function (seriesModel) {
var center2 = seriesModel.get('center')
var radius = seriesModel.get('radius')
if (!isArray$6(radius)) {
radius = [0, radius]
}
if (!isArray$6(center2)) {
center2 = [center2, center2]
}
var width = api.getWidth()
var height = api.getHeight()
var size = Math.min(width, height)
var cx = parsePercent(center2[0], width)
var cy = parsePercent(center2[1], height)
var r0 = parsePercent(radius[0], size / 2)
var r2 = parsePercent(radius[1], size / 2)
var startAngle = -seriesModel.get('startAngle') * RADIAN
var minAngle = seriesModel.get('minAngle') * RADIAN
var virtualRoot = seriesModel.getData().tree.root
var treeRoot = seriesModel.getViewRoot()
var rootDepth = treeRoot.depth
var sort3 = seriesModel.get('sort')
if (sort3 != null) {
initChildren(treeRoot, sort3)
}
var validDataCount = 0
each$f(treeRoot.children, function (child) {
!isNaN(child.getValue()) && validDataCount++
})
var sum2 = treeRoot.getValue()
var unitRadian = (Math.PI / (sum2 || validDataCount)) * 2
var renderRollupNode = treeRoot.depth > 0
var levels = treeRoot.height - (renderRollupNode ? -1 : 1)
var rPerLevel = (r2 - r0) / (levels || 1)
var clockwise = seriesModel.get('clockwise')
var stillShowZeroSum = seriesModel.get('stillShowZeroSum')
var dir3 = clockwise ? 1 : -1
var renderNode2 = function (node2, startAngle2) {
if (!node2) {
return
}
var endAngle = startAngle2
if (node2 !== virtualRoot) {
var value2 = node2.getValue()
var angle3 =
sum2 === 0 && stillShowZeroSum ? unitRadian : value2 * unitRadian
if (angle3 < minAngle) {
angle3 = minAngle
}
endAngle = startAngle2 + dir3 * angle3
var depth = node2.depth - rootDepth - (renderRollupNode ? -1 : 1)
var rStart2 = r0 + rPerLevel * depth
var rEnd2 = r0 + rPerLevel * (depth + 1)
var levelModel = seriesModel.getLevelModel(node2)
if (levelModel) {
var r0_1 = levelModel.get('r0', true)
var r_1 = levelModel.get('r', true)
var radius_1 = levelModel.get('radius', true)
if (radius_1 != null) {
r0_1 = radius_1[0]
r_1 = radius_1[1]
}
r0_1 != null && (rStart2 = parsePercent(r0_1, size / 2))
r_1 != null && (rEnd2 = parsePercent(r_1, size / 2))
}
node2.setLayout({
angle: angle3,
startAngle: startAngle2,
endAngle,
clockwise,
cx,
cy,
r0: rStart2,
r: rEnd2,
})
}
if (node2.children && node2.children.length) {
var siblingAngle_1 = 0
each$f(node2.children, function (node3) {
siblingAngle_1 += renderNode2(node3, startAngle2 + siblingAngle_1)
})
}
return endAngle - startAngle2
}
if (renderRollupNode) {
var rStart = r0
var rEnd = r0 + rPerLevel
var angle2 = Math.PI * 2
virtualRoot.setLayout({
angle: angle2,
startAngle,
endAngle: startAngle + angle2,
clockwise,
cx,
cy,
r0: rStart,
r: rEnd,
})
}
renderNode2(treeRoot, startAngle)
})
}
function initChildren(node2, sortOrder) {
var children = node2.children || []
node2.children = sort(children, sortOrder)
if (children.length) {
each$f(node2.children, function (child) {
initChildren(child, sortOrder)
})
}
}
function sort(children, sortOrder) {
if (isFunction$4(sortOrder)) {
var sortTargets = map$1(children, function (child, idx) {
var value2 = child.getValue()
return {
params: {
depth: child.depth,
height: child.height,
dataIndex: child.dataIndex,
getValue: function () {
return value2
},
},
index: idx,
}
})
sortTargets.sort(function (a2, b2) {
return sortOrder(a2.params, b2.params)
})
return map$1(sortTargets, function (target2) {
return children[target2.index]
})
} else {
var isAsc_1 = sortOrder === 'asc'
return children.sort(function (a2, b2) {
var diff = (a2.getValue() - b2.getValue()) * (isAsc_1 ? 1 : -1)
return diff === 0
? (a2.dataIndex - b2.dataIndex) * (isAsc_1 ? -1 : 1)
: diff
})
}
}
function sunburstVisual(ecModel) {
var paletteScope = {}
function pickColor(node2, seriesModel, treeHeight) {
var current2 = node2
while (current2 && current2.depth > 1) {
current2 = current2.parentNode
}
var color2 = seriesModel.getColorFromPalette(
current2.name || current2.dataIndex + '',
paletteScope
)
if (node2.depth > 1 && isString$2(color2)) {
color2 = lift(color2, ((node2.depth - 1) / (treeHeight - 1)) * 0.5)
}
return color2
}
ecModel.eachSeriesByType('sunburst', function (seriesModel) {
var data2 = seriesModel.getData()
var tree = data2.tree
tree.eachNode(function (node2) {
var model = node2.getModel()
var style2 = model.getModel('itemStyle').getItemStyle()
if (!style2.fill) {
style2.fill = pickColor(node2, seriesModel, tree.root.height)
}
var existsStyle = data2.ensureUniqueItemVisual(node2.dataIndex, 'style')
extend(existsStyle, style2)
})
})
}
function install$u(registers) {
registers.registerChartView(SunburstView$1)
registers.registerSeriesModel(SunburstSeriesModel$1)
registers.registerLayout(curry$1(sunburstLayout, 'sunburst'))
registers.registerProcessor(curry$1(dataFilter$1, 'sunburst'))
registers.registerVisual(sunburstVisual)
installSunburstAction(registers)
}
var STYLE_VISUAL_TYPE = {
color: 'fill',
borderColor: 'stroke',
}
var NON_STYLE_VISUAL_PROPS = {
symbol: 1,
symbolSize: 1,
symbolKeepAspect: 1,
legendIcon: 1,
visualMeta: 1,
liftZ: 1,
decal: 1,
}
var customInnerStore = makeInner()
var CustomSeriesModel = (function (_super) {
__extends$2(CustomSeriesModel2, _super)
function CustomSeriesModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = CustomSeriesModel2.type
return _this
}
CustomSeriesModel2.prototype.optionUpdated = function () {
this.currentZLevel = this.get('zlevel', true)
this.currentZ = this.get('z', true)
}
CustomSeriesModel2.prototype.getInitialData = function (option2, ecModel) {
return createSeriesData(null, this)
}
CustomSeriesModel2.prototype.getDataParams = function (
dataIndex,
dataType2,
el2
) {
var params2 = _super.prototype.getDataParams.call(
this,
dataIndex,
dataType2
)
el2 && (params2.info = customInnerStore(el2).info)
return params2
}
CustomSeriesModel2.type = 'series.custom'
CustomSeriesModel2.dependencies = [
'grid',
'polar',
'geo',
'singleAxis',
'calendar',
]
CustomSeriesModel2.defaultOption = {
coordinateSystem: 'cartesian2d',
z: 2,
legendHoverLink: true,
clip: false,
}
return CustomSeriesModel2
})(SeriesModel$1)
var CustomSeriesModel$1 = CustomSeriesModel
function dataToCoordSize$3(dataSize, dataItem) {
dataItem = dataItem || [0, 0]
return map$1(
['x', 'y'],
function (dim, dimIdx) {
var axis = this.getAxis(dim)
var val2 = dataItem[dimIdx]
var halfSize = dataSize[dimIdx] / 2
return axis.type === 'category'
? axis.getBandWidth()
: Math.abs(
axis.dataToCoord(val2 - halfSize) -
axis.dataToCoord(val2 + halfSize)
)
},
this
)
}
function cartesianPrepareCustom(coordSys) {
var rect = coordSys.master.getRect()
return {
coordSys: {
type: 'cartesian2d',
x: rect.x,
y: rect.y,
width: rect.width,
height: rect.height,
},
api: {
coord: function (data2) {
return coordSys.dataToPoint(data2)
},
size: bind$1(dataToCoordSize$3, coordSys),
},
}
}
function dataToCoordSize$2(dataSize, dataItem) {
dataItem = dataItem || [0, 0]
return map$1(
[0, 1],
function (dimIdx) {
var val2 = dataItem[dimIdx]
var halfSize = dataSize[dimIdx] / 2
var p1 = []
var p2 = []
p1[dimIdx] = val2 - halfSize
p2[dimIdx] = val2 + halfSize
p1[1 - dimIdx] = p2[1 - dimIdx] = dataItem[1 - dimIdx]
return Math.abs(
this.dataToPoint(p1)[dimIdx] - this.dataToPoint(p2)[dimIdx]
)
},
this
)
}
function geoPrepareCustom(coordSys) {
var rect = coordSys.getBoundingRect()
return {
coordSys: {
type: 'geo',
x: rect.x,
y: rect.y,
width: rect.width,
height: rect.height,
zoom: coordSys.getZoom(),
},
api: {
coord: function (data2) {
return coordSys.dataToPoint(data2)
},
size: bind$1(dataToCoordSize$2, coordSys),
},
}
}
function dataToCoordSize$1(dataSize, dataItem) {
var axis = this.getAxis()
var val2 = dataItem instanceof Array ? dataItem[0] : dataItem
var halfSize = (dataSize instanceof Array ? dataSize[0] : dataSize) / 2
return axis.type === 'category'
? axis.getBandWidth()
: Math.abs(
axis.dataToCoord(val2 - halfSize) - axis.dataToCoord(val2 + halfSize)
)
}
function singlePrepareCustom(coordSys) {
var rect = coordSys.getRect()
return {
coordSys: {
type: 'singleAxis',
x: rect.x,
y: rect.y,
width: rect.width,
height: rect.height,
},
api: {
coord: function (val2) {
return coordSys.dataToPoint(val2)
},
size: bind$1(dataToCoordSize$1, coordSys),
},
}
}
function dataToCoordSize(dataSize, dataItem) {
dataItem = dataItem || [0, 0]
return map$1(
['Radius', 'Angle'],
function (dim, dimIdx) {
var getterName = 'get' + dim + 'Axis'
var axis = this[getterName]()
var val2 = dataItem[dimIdx]
var halfSize = dataSize[dimIdx] / 2
var result =
axis.type === 'category'
? axis.getBandWidth()
: Math.abs(
axis.dataToCoord(val2 - halfSize) -
axis.dataToCoord(val2 + halfSize)
)
if (dim === 'Angle') {
result = (result * Math.PI) / 180
}
return result
},
this
)
}
function polarPrepareCustom(coordSys) {
var radiusAxis = coordSys.getRadiusAxis()
var angleAxis = coordSys.getAngleAxis()
var radius = radiusAxis.getExtent()
radius[0] > radius[1] && radius.reverse()
return {
coordSys: {
type: 'polar',
cx: coordSys.cx,
cy: coordSys.cy,
r: radius[1],
r0: radius[0],
},
api: {
coord: function (data2) {
var radius2 = radiusAxis.dataToRadius(data2[0])
var angle2 = angleAxis.dataToAngle(data2[1])
var coord = coordSys.coordToPoint([radius2, angle2])
coord.push(radius2, (angle2 * Math.PI) / 180)
return coord
},
size: bind$1(dataToCoordSize, coordSys),
},
}
}
function calendarPrepareCustom(coordSys) {
var rect = coordSys.getRect()
var rangeInfo = coordSys.getRangeInfo()
return {
coordSys: {
type: 'calendar',
x: rect.x,
y: rect.y,
width: rect.width,
height: rect.height,
cellWidth: coordSys.getCellWidth(),
cellHeight: coordSys.getCellHeight(),
rangeInfo: {
start: rangeInfo.start,
end: rangeInfo.end,
weeks: rangeInfo.weeks,
dayCount: rangeInfo.allDay,
},
},
api: {
coord: function (data2, clamp2) {
return coordSys.dataToPoint(data2, clamp2)
},
},
}
}
function isEC4CompatibleStyle(
style2,
elType,
hasOwnTextContentOption,
hasOwnTextConfig
) {
return (
style2 &&
(style2.legacy ||
(style2.legacy !== false &&
!hasOwnTextContentOption &&
!hasOwnTextConfig &&
elType !== 'tspan' &&
(elType === 'text' || hasOwn$1(style2, 'text'))))
)
}
function convertFromEC4CompatibleStyle(hostStyle, elType, isNormal) {
var srcStyle = hostStyle
var textConfig
var textContent
var textContentStyle
if (elType === 'text') {
textContentStyle = srcStyle
} else {
textContentStyle = {}
hasOwn$1(srcStyle, 'text') && (textContentStyle.text = srcStyle.text)
hasOwn$1(srcStyle, 'rich') && (textContentStyle.rich = srcStyle.rich)
hasOwn$1(srcStyle, 'textFill') &&
(textContentStyle.fill = srcStyle.textFill)
hasOwn$1(srcStyle, 'textStroke') &&
(textContentStyle.stroke = srcStyle.textStroke)
hasOwn$1(srcStyle, 'fontFamily') &&
(textContentStyle.fontFamily = srcStyle.fontFamily)
hasOwn$1(srcStyle, 'fontSize') &&
(textContentStyle.fontSize = srcStyle.fontSize)
hasOwn$1(srcStyle, 'fontStyle') &&
(textContentStyle.fontStyle = srcStyle.fontStyle)
hasOwn$1(srcStyle, 'fontWeight') &&
(textContentStyle.fontWeight = srcStyle.fontWeight)
textContent = {
type: 'text',
style: textContentStyle,
silent: true,
}
textConfig = {}
var hasOwnPos = hasOwn$1(srcStyle, 'textPosition')
if (isNormal) {
textConfig.position = hasOwnPos ? srcStyle.textPosition : 'inside'
} else {
hasOwnPos && (textConfig.position = srcStyle.textPosition)
}
hasOwn$1(srcStyle, 'textPosition') &&
(textConfig.position = srcStyle.textPosition)
hasOwn$1(srcStyle, 'textOffset') &&
(textConfig.offset = srcStyle.textOffset)
hasOwn$1(srcStyle, 'textRotation') &&
(textConfig.rotation = srcStyle.textRotation)
hasOwn$1(srcStyle, 'textDistance') &&
(textConfig.distance = srcStyle.textDistance)
}
convertEC4CompatibleRichItem(textContentStyle, hostStyle)
each$f(textContentStyle.rich, function (richItem) {
convertEC4CompatibleRichItem(richItem, richItem)
})
return {
textConfig,
textContent,
}
}
function convertEC4CompatibleRichItem(out2, richItem) {
if (!richItem) {
return
}
richItem.font = richItem.textFont || richItem.font
hasOwn$1(richItem, 'textStrokeWidth') &&
(out2.lineWidth = richItem.textStrokeWidth)
hasOwn$1(richItem, 'textAlign') && (out2.align = richItem.textAlign)
hasOwn$1(richItem, 'textVerticalAlign') &&
(out2.verticalAlign = richItem.textVerticalAlign)
hasOwn$1(richItem, 'textLineHeight') &&
(out2.lineHeight = richItem.textLineHeight)
hasOwn$1(richItem, 'textWidth') && (out2.width = richItem.textWidth)
hasOwn$1(richItem, 'textHeight') && (out2.height = richItem.textHeight)
hasOwn$1(richItem, 'textBackgroundColor') &&
(out2.backgroundColor = richItem.textBackgroundColor)
hasOwn$1(richItem, 'textPadding') && (out2.padding = richItem.textPadding)
hasOwn$1(richItem, 'textBorderColor') &&
(out2.borderColor = richItem.textBorderColor)
hasOwn$1(richItem, 'textBorderWidth') &&
(out2.borderWidth = richItem.textBorderWidth)
hasOwn$1(richItem, 'textBorderRadius') &&
(out2.borderRadius = richItem.textBorderRadius)
hasOwn$1(richItem, 'textBoxShadowColor') &&
(out2.shadowColor = richItem.textBoxShadowColor)
hasOwn$1(richItem, 'textBoxShadowBlur') &&
(out2.shadowBlur = richItem.textBoxShadowBlur)
hasOwn$1(richItem, 'textBoxShadowOffsetX') &&
(out2.shadowOffsetX = richItem.textBoxShadowOffsetX)
hasOwn$1(richItem, 'textBoxShadowOffsetY') &&
(out2.shadowOffsetY = richItem.textBoxShadowOffsetY)
}
function convertToEC4StyleForCustomSerise(itemStl, txStl, txCfg) {
var out2 = itemStl
out2.textPosition = out2.textPosition || txCfg.position || 'inside'
txCfg.offset != null && (out2.textOffset = txCfg.offset)
txCfg.rotation != null && (out2.textRotation = txCfg.rotation)
txCfg.distance != null && (out2.textDistance = txCfg.distance)
var isInside = out2.textPosition.indexOf('inside') >= 0
var hostFill = itemStl.fill || '#000'
convertToEC4RichItem(out2, txStl)
var textFillNotSet = out2.textFill == null
if (isInside) {
if (textFillNotSet) {
out2.textFill = txCfg.insideFill || '#fff'
!out2.textStroke &&
txCfg.insideStroke &&
(out2.textStroke = txCfg.insideStroke)
!out2.textStroke && (out2.textStroke = hostFill)
out2.textStrokeWidth == null && (out2.textStrokeWidth = 2)
}
} else {
if (textFillNotSet) {
out2.textFill = itemStl.fill || txCfg.outsideFill || '#000'
}
!out2.textStroke &&
txCfg.outsideStroke &&
(out2.textStroke = txCfg.outsideStroke)
}
out2.text = txStl.text
out2.rich = txStl.rich
each$f(txStl.rich, function (richItem) {
convertToEC4RichItem(richItem, richItem)
})
return out2
}
function convertToEC4RichItem(out2, richItem) {
if (!richItem) {
return
}
hasOwn$1(richItem, 'fill') && (out2.textFill = richItem.fill)
hasOwn$1(richItem, 'stroke') && (out2.textStroke = richItem.fill)
hasOwn$1(richItem, 'lineWidth') && (out2.textStrokeWidth = richItem.lineWidth)
hasOwn$1(richItem, 'font') && (out2.font = richItem.font)
hasOwn$1(richItem, 'fontStyle') && (out2.fontStyle = richItem.fontStyle)
hasOwn$1(richItem, 'fontWeight') && (out2.fontWeight = richItem.fontWeight)
hasOwn$1(richItem, 'fontSize') && (out2.fontSize = richItem.fontSize)
hasOwn$1(richItem, 'fontFamily') && (out2.fontFamily = richItem.fontFamily)
hasOwn$1(richItem, 'align') && (out2.textAlign = richItem.align)
hasOwn$1(richItem, 'verticalAlign') &&
(out2.textVerticalAlign = richItem.verticalAlign)
hasOwn$1(richItem, 'lineHeight') &&
(out2.textLineHeight = richItem.lineHeight)
hasOwn$1(richItem, 'width') && (out2.textWidth = richItem.width)
hasOwn$1(richItem, 'height') && (out2.textHeight = richItem.height)
hasOwn$1(richItem, 'backgroundColor') &&
(out2.textBackgroundColor = richItem.backgroundColor)
hasOwn$1(richItem, 'padding') && (out2.textPadding = richItem.padding)
hasOwn$1(richItem, 'borderColor') &&
(out2.textBorderColor = richItem.borderColor)
hasOwn$1(richItem, 'borderWidth') &&
(out2.textBorderWidth = richItem.borderWidth)
hasOwn$1(richItem, 'borderRadius') &&
(out2.textBorderRadius = richItem.borderRadius)
hasOwn$1(richItem, 'shadowColor') &&
(out2.textBoxShadowColor = richItem.shadowColor)
hasOwn$1(richItem, 'shadowBlur') &&
(out2.textBoxShadowBlur = richItem.shadowBlur)
hasOwn$1(richItem, 'shadowOffsetX') &&
(out2.textBoxShadowOffsetX = richItem.shadowOffsetX)
hasOwn$1(richItem, 'shadowOffsetY') &&
(out2.textBoxShadowOffsetY = richItem.shadowOffsetY)
hasOwn$1(richItem, 'textShadowColor') &&
(out2.textShadowColor = richItem.textShadowColor)
hasOwn$1(richItem, 'textShadowBlur') &&
(out2.textShadowBlur = richItem.textShadowBlur)
hasOwn$1(richItem, 'textShadowOffsetX') &&
(out2.textShadowOffsetX = richItem.textShadowOffsetX)
hasOwn$1(richItem, 'textShadowOffsetY') &&
(out2.textShadowOffsetY = richItem.textShadowOffsetY)
}
var LEGACY_TRANSFORM_PROPS_MAP = {
position: ['x', 'y'],
scale: ['scaleX', 'scaleY'],
origin: ['originX', 'originY'],
}
var LEGACY_TRANSFORM_PROPS = keys$4(LEGACY_TRANSFORM_PROPS_MAP)
reduce(
TRANSFORMABLE_PROPS,
function (obj, key2) {
obj[key2] = 1
return obj
},
{}
)
TRANSFORMABLE_PROPS.join(', ')
var ELEMENT_ANIMATABLE_PROPS = ['', 'style', 'shape', 'extra']
var transitionInnerStore = makeInner()
function getElementAnimationConfig(
animationType,
el2,
elOption,
parentModel,
dataIndex
) {
var animationProp = animationType + 'Animation'
var config2 = getAnimationConfig(animationType, parentModel, dataIndex) || {}
var userDuring = transitionInnerStore(el2).userDuring
if (config2.duration > 0) {
config2.during = userDuring
? bind$1(duringCall, {
el: el2,
userDuring,
})
: null
config2.setToFinal = true
config2.scope = animationType
}
extend(config2, elOption[animationProp])
return config2
}
function applyUpdateTransition(el2, elOption, animatableModel, opts) {
opts = opts || {}
var dataIndex = opts.dataIndex,
isInit = opts.isInit,
clearStyle = opts.clearStyle
var hasAnimation = animatableModel.isAnimationEnabled()
var store2 = transitionInnerStore(el2)
var styleOpt = elOption.style
store2.userDuring = elOption.during
var transFromProps = {}
var propsToSet = {}
prepareTransformAllPropsFinal(el2, elOption, propsToSet)
prepareShapeOrExtraAllPropsFinal('shape', elOption, propsToSet)
prepareShapeOrExtraAllPropsFinal('extra', elOption, propsToSet)
if (!isInit && hasAnimation) {
prepareTransformTransitionFrom(el2, elOption, transFromProps)
prepareShapeOrExtraTransitionFrom('shape', el2, elOption, transFromProps)
prepareShapeOrExtraTransitionFrom('extra', el2, elOption, transFromProps)
prepareStyleTransitionFrom(el2, elOption, styleOpt, transFromProps)
}
propsToSet.style = styleOpt
applyPropsDirectly(el2, propsToSet, clearStyle)
applyMiscProps(el2, elOption)
if (hasAnimation) {
if (isInit) {
var enterFromProps_1 = {}
each$f(ELEMENT_ANIMATABLE_PROPS, function (propName) {
var prop = propName ? elOption[propName] : elOption
if (prop && prop.enterFrom) {
if (propName) {
enterFromProps_1[propName] = enterFromProps_1[propName] || {}
}
extend(
propName ? enterFromProps_1[propName] : enterFromProps_1,
prop.enterFrom
)
}
})
var config2 = getElementAnimationConfig(
'enter',
el2,
elOption,
animatableModel,
dataIndex
)
if (config2.duration > 0) {
el2.animateFrom(enterFromProps_1, config2)
}
} else {
applyPropsTransition(
el2,
elOption,
dataIndex || 0,
animatableModel,
transFromProps
)
}
}
updateLeaveTo(el2, elOption)
styleOpt ? el2.dirty() : el2.markRedraw()
}
function updateLeaveTo(el2, elOption) {
var leaveToProps = transitionInnerStore(el2).leaveToProps
for (var i2 = 0; i2 < ELEMENT_ANIMATABLE_PROPS.length; i2++) {
var propName = ELEMENT_ANIMATABLE_PROPS[i2]
var prop = propName ? elOption[propName] : elOption
if (prop && prop.leaveTo) {
if (!leaveToProps) {
leaveToProps = transitionInnerStore(el2).leaveToProps = {}
}
if (propName) {
leaveToProps[propName] = leaveToProps[propName] || {}
}
extend(propName ? leaveToProps[propName] : leaveToProps, prop.leaveTo)
}
}
}
function applyLeaveTransition(el2, elOption, animatableModel, onRemove) {
if (el2) {
var parent_1 = el2.parent
var leaveToProps = transitionInnerStore(el2).leaveToProps
if (leaveToProps) {
var config2 = getElementAnimationConfig(
'update',
el2,
elOption,
animatableModel,
0
)
config2.done = function () {
parent_1.remove(el2)
onRemove && onRemove()
}
el2.animateTo(leaveToProps, config2)
} else {
parent_1.remove(el2)
onRemove && onRemove()
}
}
}
function isTransitionAll(transition) {
return transition === 'all'
}
function applyPropsDirectly(el2, allPropsFinal, clearStyle) {
var styleOpt = allPropsFinal.style
if (!el2.isGroup && styleOpt) {
if (clearStyle) {
el2.useStyle({})
var animators = el2.animators
for (var i2 = 0; i2 < animators.length; i2++) {
var animator = animators[i2]
if (animator.targetName === 'style') {
animator.changeTarget(el2.style)
}
}
}
el2.setStyle(styleOpt)
}
if (allPropsFinal) {
allPropsFinal.style = null
allPropsFinal && el2.attr(allPropsFinal)
allPropsFinal.style = styleOpt
}
}
function applyPropsTransition(el2, elOption, dataIndex, model, transFromProps) {
if (transFromProps) {
var config2 = getElementAnimationConfig(
'update',
el2,
elOption,
model,
dataIndex
)
if (config2.duration > 0) {
el2.animateFrom(transFromProps, config2)
}
}
}
function applyMiscProps(el2, elOption) {
hasOwn$1(elOption, 'silent') && (el2.silent = elOption.silent)
hasOwn$1(elOption, 'ignore') && (el2.ignore = elOption.ignore)
if (el2 instanceof Displayable$1) {
hasOwn$1(elOption, 'invisible') && (el2.invisible = elOption.invisible)
}
if (el2 instanceof Path$1) {
hasOwn$1(elOption, 'autoBatch') && (el2.autoBatch = elOption.autoBatch)
}
}
var tmpDuringScope = {}
var transitionDuringAPI = {
setTransform: function (key2, val2) {
tmpDuringScope.el[key2] = val2
return this
},
getTransform: function (key2) {
return tmpDuringScope.el[key2]
},
setShape: function (key2, val2) {
var el2 = tmpDuringScope.el
var shape = el2.shape || (el2.shape = {})
shape[key2] = val2
el2.dirtyShape && el2.dirtyShape()
return this
},
getShape: function (key2) {
var shape = tmpDuringScope.el.shape
if (shape) {
return shape[key2]
}
},
setStyle: function (key2, val2) {
var el2 = tmpDuringScope.el
var style2 = el2.style
if (style2) {
style2[key2] = val2
el2.dirtyStyle && el2.dirtyStyle()
}
return this
},
getStyle: function (key2) {
var style2 = tmpDuringScope.el.style
if (style2) {
return style2[key2]
}
},
setExtra: function (key2, val2) {
var extra = tmpDuringScope.el.extra || (tmpDuringScope.el.extra = {})
extra[key2] = val2
return this
},
getExtra: function (key2) {
var extra = tmpDuringScope.el.extra
if (extra) {
return extra[key2]
}
},
}
function duringCall() {
var scope = this
var el2 = scope.el
if (!el2) {
return
}
var latestUserDuring = transitionInnerStore(el2).userDuring
var scopeUserDuring = scope.userDuring
if (latestUserDuring !== scopeUserDuring) {
scope.el = scope.userDuring = null
return
}
tmpDuringScope.el = el2
scopeUserDuring(transitionDuringAPI)
}
function prepareShapeOrExtraTransitionFrom(
mainAttr,
fromEl,
elOption,
transFromProps
) {
var attrOpt = elOption[mainAttr]
if (!attrOpt) {
return
}
var elPropsInAttr = fromEl[mainAttr]
var transFromPropsInAttr
if (elPropsInAttr) {
var transition = elOption.transition
var attrTransition = attrOpt.transition
if (attrTransition) {
!transFromPropsInAttr &&
(transFromPropsInAttr = transFromProps[mainAttr] = {})
if (isTransitionAll(attrTransition)) {
extend(transFromPropsInAttr, elPropsInAttr)
} else {
var transitionKeys = normalizeToArray(attrTransition)
for (var i2 = 0; i2 < transitionKeys.length; i2++) {
var key2 = transitionKeys[i2]
var elVal = elPropsInAttr[key2]
transFromPropsInAttr[key2] = elVal
}
}
} else if (
isTransitionAll(transition) ||
indexOf(transition, mainAttr) >= 0
) {
!transFromPropsInAttr &&
(transFromPropsInAttr = transFromProps[mainAttr] = {})
var elPropsInAttrKeys = keys$4(elPropsInAttr)
for (var i2 = 0; i2 < elPropsInAttrKeys.length; i2++) {
var key2 = elPropsInAttrKeys[i2]
var elVal = elPropsInAttr[key2]
if (isNonStyleTransitionEnabled(attrOpt[key2], elVal)) {
transFromPropsInAttr[key2] = elVal
}
}
}
}
}
function prepareShapeOrExtraAllPropsFinal(mainAttr, elOption, allProps) {
var attrOpt = elOption[mainAttr]
if (!attrOpt) {
return
}
var allPropsInAttr = (allProps[mainAttr] = {})
var keysInAttr = keys$4(attrOpt)
for (var i2 = 0; i2 < keysInAttr.length; i2++) {
var key2 = keysInAttr[i2]
allPropsInAttr[key2] = cloneValue(attrOpt[key2])
}
}
function prepareTransformTransitionFrom(el2, elOption, transFromProps) {
var transition = elOption.transition
var transitionKeys = isTransitionAll(transition)
? TRANSFORMABLE_PROPS
: normalizeToArray(transition || [])
for (var i2 = 0; i2 < transitionKeys.length; i2++) {
var key2 = transitionKeys[i2]
if (key2 === 'style' || key2 === 'shape' || key2 === 'extra') {
continue
}
var elVal = el2[key2]
transFromProps[key2] = elVal
}
}
function prepareTransformAllPropsFinal(el2, elOption, allProps) {
for (var i2 = 0; i2 < LEGACY_TRANSFORM_PROPS.length; i2++) {
var legacyName = LEGACY_TRANSFORM_PROPS[i2]
var xyName = LEGACY_TRANSFORM_PROPS_MAP[legacyName]
var legacyArr = elOption[legacyName]
if (legacyArr) {
allProps[xyName[0]] = legacyArr[0]
allProps[xyName[1]] = legacyArr[1]
}
}
for (var i2 = 0; i2 < TRANSFORMABLE_PROPS.length; i2++) {
var key2 = TRANSFORMABLE_PROPS[i2]
if (elOption[key2] != null) {
allProps[key2] = elOption[key2]
}
}
}
function prepareStyleTransitionFrom(
fromEl,
elOption,
styleOpt,
transFromProps
) {
if (!styleOpt) {
return
}
var fromElStyle = fromEl.style
var transFromStyleProps
if (fromElStyle) {
var styleTransition = styleOpt.transition
var elTransition = elOption.transition
if (styleTransition && !isTransitionAll(styleTransition)) {
var transitionKeys = normalizeToArray(styleTransition)
!transFromStyleProps && (transFromStyleProps = transFromProps.style = {})
for (var i2 = 0; i2 < transitionKeys.length; i2++) {
var key2 = transitionKeys[i2]
var elVal = fromElStyle[key2]
transFromStyleProps[key2] = elVal
}
} else if (
fromEl.getAnimationStyleProps &&
(isTransitionAll(elTransition) ||
isTransitionAll(styleTransition) ||
indexOf(elTransition, 'style') >= 0)
) {
var animationProps = fromEl.getAnimationStyleProps()
var animationStyleProps = animationProps ? animationProps.style : null
if (animationStyleProps) {
!transFromStyleProps &&
(transFromStyleProps = transFromProps.style = {})
var styleKeys = keys$4(styleOpt)
for (var i2 = 0; i2 < styleKeys.length; i2++) {
var key2 = styleKeys[i2]
if (animationStyleProps[key2]) {
var elVal = fromElStyle[key2]
transFromStyleProps[key2] = elVal
}
}
}
}
}
}
function isNonStyleTransitionEnabled(optVal, elVal) {
return !isArrayLike$3(optVal)
? optVal != null && isFinite(optVal)
: optVal !== elVal
}
var getStateToRestore = makeInner()
var KEYFRAME_EXCLUDE_KEYS = ['percent', 'easing', 'shape', 'style', 'extra']
function stopPreviousKeyframeAnimationAndRestore(el2) {
el2.stopAnimation('keyframe')
el2.attr(getStateToRestore(el2))
}
function applyKeyframeAnimation(el2, animationOpts, animatableModel) {
if (!animatableModel.isAnimationEnabled() || !animationOpts) {
return
}
if (isArray$6(animationOpts)) {
each$f(animationOpts, function (singleAnimationOpts) {
applyKeyframeAnimation(el2, singleAnimationOpts, animatableModel)
})
return
}
var keyframes = animationOpts.keyframes
var duration2 = animationOpts.duration
if (animatableModel && duration2 == null) {
var config2 = getAnimationConfig('enter', animatableModel, 0)
duration2 = config2 && config2.duration
}
if (!keyframes || !duration2) {
return
}
var stateToRestore = getStateToRestore(el2)
each$f(ELEMENT_ANIMATABLE_PROPS, function (targetPropName) {
if (targetPropName && !el2[targetPropName]) {
return
}
var animator
keyframes.sort(function (a2, b2) {
return a2.percent - b2.percent
})
each$f(keyframes, function (kf) {
var animators = el2.animators
var kfValues = targetPropName ? kf[targetPropName] : kf
if (!kfValues) {
return
}
var propKeys = keys$4(kfValues)
if (!targetPropName) {
propKeys = filter(propKeys, function (key2) {
return indexOf(KEYFRAME_EXCLUDE_KEYS, key2) < 0
})
}
if (!propKeys.length) {
return
}
if (!animator) {
animator = el2.animate(targetPropName, animationOpts.loop, true)
animator.scope = 'keyframe'
}
for (var i2 = 0; i2 < animators.length; i2++) {
if (
animators[i2] !== animator &&
animators[i2].targetName === animator.targetName
) {
animators[i2].stopTracks(propKeys)
}
}
targetPropName &&
(stateToRestore[targetPropName] = stateToRestore[targetPropName] || {})
var savedTarget = targetPropName
? stateToRestore[targetPropName]
: stateToRestore
each$f(propKeys, function (key2) {
savedTarget[key2] = ((targetPropName ? el2[targetPropName] : el2) ||
{})[key2]
})
animator.whenWithKeys(
duration2 * kf.percent,
kfValues,
propKeys,
kf.easing
)
})
if (!animator) {
return
}
animator
.delay(animationOpts.delay || 0)
.duration(duration2)
.start(animationOpts.easing)
})
}
var EMPHASIS = 'emphasis'
var NORMAL = 'normal'
var BLUR = 'blur'
var SELECT = 'select'
var STATES = [NORMAL, EMPHASIS, BLUR, SELECT]
var PATH_ITEM_STYLE = {
normal: ['itemStyle'],
emphasis: [EMPHASIS, 'itemStyle'],
blur: [BLUR, 'itemStyle'],
select: [SELECT, 'itemStyle'],
}
var PATH_LABEL = {
normal: ['label'],
emphasis: [EMPHASIS, 'label'],
blur: [BLUR, 'label'],
select: [SELECT, 'label'],
}
var DEFAULT_TRANSITION = ['x', 'y']
var GROUP_DIFF_PREFIX = 'e\0\0'
var attachedTxInfoTmp = {
normal: {},
emphasis: {},
blur: {},
select: {},
}
var prepareCustoms = {
cartesian2d: cartesianPrepareCustom,
geo: geoPrepareCustom,
single: singlePrepareCustom,
polar: polarPrepareCustom,
calendar: calendarPrepareCustom,
}
function isPath(el2) {
return el2 instanceof Path$1
}
function isDisplayable(el2) {
return el2 instanceof Displayable$1
}
function copyElement(sourceEl, targetEl) {
targetEl.copyTransform(sourceEl)
if (isDisplayable(targetEl) && isDisplayable(sourceEl)) {
targetEl.setStyle(sourceEl.style)
targetEl.z = sourceEl.z
targetEl.z2 = sourceEl.z2
targetEl.zlevel = sourceEl.zlevel
targetEl.invisible = sourceEl.invisible
targetEl.ignore = sourceEl.ignore
if (isPath(targetEl) && isPath(sourceEl)) {
targetEl.setShape(sourceEl.shape)
}
}
}
var CustomChartView = (function (_super) {
__extends$2(CustomChartView2, _super)
function CustomChartView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = CustomChartView2.type
return _this
}
CustomChartView2.prototype.render = function (
customSeries,
ecModel,
api,
payload
) {
this._progressiveEls = null
var oldData = this._data
var data2 = customSeries.getData()
var group = this.group
var renderItem = makeRenderItem(customSeries, data2, ecModel, api)
if (!oldData) {
group.removeAll()
}
data2
.diff(oldData)
.add(function (newIdx) {
createOrUpdateItem(
api,
null,
newIdx,
renderItem(newIdx, payload),
customSeries,
group,
data2
)
})
.remove(function (oldIdx) {
var el2 = oldData.getItemGraphicEl(oldIdx)
el2 &&
applyLeaveTransition(el2, customInnerStore(el2).option, customSeries)
})
.update(function (newIdx, oldIdx) {
var oldEl = oldData.getItemGraphicEl(oldIdx)
createOrUpdateItem(
api,
oldEl,
newIdx,
renderItem(newIdx, payload),
customSeries,
group,
data2
)
})
.execute()
var clipPath = customSeries.get('clip', true)
? createClipPath(customSeries.coordinateSystem, false, customSeries)
: null
if (clipPath) {
group.setClipPath(clipPath)
} else {
group.removeClipPath()
}
this._data = data2
}
CustomChartView2.prototype.incrementalPrepareRender = function (
customSeries,
ecModel,
api
) {
this.group.removeAll()
this._data = null
}
CustomChartView2.prototype.incrementalRender = function (
params2,
customSeries,
ecModel,
api,
payload
) {
var data2 = customSeries.getData()
var renderItem = makeRenderItem(customSeries, data2, ecModel, api)
var progressiveEls = (this._progressiveEls = [])
function setIncrementalAndHoverLayer(el3) {
if (!el3.isGroup) {
el3.incremental = true
el3.ensureState('emphasis').hoverLayer = true
}
}
for (var idx = params2.start; idx < params2.end; idx++) {
var el2 = createOrUpdateItem(
null,
null,
idx,
renderItem(idx, payload),
customSeries,
this.group,
data2
)
if (el2) {
el2.traverse(setIncrementalAndHoverLayer)
progressiveEls.push(el2)
}
}
}
CustomChartView2.prototype.eachRendered = function (cb) {
traverseElements(this._progressiveEls || this.group, cb)
}
CustomChartView2.prototype.filterForExposedEvent = function (
eventType,
query,
targetEl,
packedEvent
) {
var elementName = query.element
if (elementName == null || targetEl.name === elementName) {
return true
}
while (
(targetEl = targetEl.__hostTarget || targetEl.parent) &&
targetEl !== this.group
) {
if (targetEl.name === elementName) {
return true
}
}
return false
}
CustomChartView2.type = 'custom'
return CustomChartView2
})(ChartView$1)
var CustomChartView$1 = CustomChartView
function createEl$1(elOption) {
var graphicType = elOption.type
var el2
if (graphicType === 'path') {
var shape = elOption.shape
var pathRect =
shape.width != null && shape.height != null
? {
x: shape.x || 0,
y: shape.y || 0,
width: shape.width,
height: shape.height,
}
: null
var pathData = getPathData(shape)
el2 = makePath(pathData, null, pathRect, shape.layout || 'center')
customInnerStore(el2).customPathData = pathData
} else if (graphicType === 'image') {
el2 = new ZRImage$1({})
customInnerStore(el2).customImagePath = elOption.style.image
} else if (graphicType === 'text') {
el2 = new ZRText$1({})
} else if (graphicType === 'group') {
el2 = new Group$5()
} else if (graphicType === 'compoundPath') {
throw new Error('"compoundPath" is not supported yet.')
} else {
var Clz = getShapeClass(graphicType)
if (!Clz) {
var errMsg = ''
throwError(errMsg)
}
el2 = new Clz()
}
customInnerStore(el2).customGraphicType = graphicType
el2.name = elOption.name
el2.z2EmphasisLift = 1
el2.z2SelectLift = 1
return el2
}
function updateElNormal(
api,
el2,
dataIndex,
elOption,
attachedTxInfo,
seriesModel,
isInit
) {
stopPreviousKeyframeAnimationAndRestore(el2)
var txCfgOpt = attachedTxInfo && attachedTxInfo.normal.cfg
if (txCfgOpt) {
el2.setTextConfig(txCfgOpt)
}
if (elOption && elOption.transition == null) {
elOption.transition = DEFAULT_TRANSITION
}
var styleOpt = elOption && elOption.style
if (styleOpt) {
if (el2.type === 'text') {
var textOptionStyle = styleOpt
hasOwn$1(textOptionStyle, 'textFill') &&
(textOptionStyle.fill = textOptionStyle.textFill)
hasOwn$1(textOptionStyle, 'textStroke') &&
(textOptionStyle.stroke = textOptionStyle.textStroke)
}
var decalPattern = void 0
var decalObj = isPath(el2) ? styleOpt.decal : null
if (api && decalObj) {
decalObj.dirty = true
decalPattern = createOrUpdatePatternFromDecal(decalObj, api)
}
styleOpt.__decalPattern = decalPattern
}
if (isDisplayable(el2)) {
if (styleOpt) {
var decalPattern = styleOpt.__decalPattern
if (decalPattern) {
styleOpt.decal = decalPattern
}
}
}
applyUpdateTransition(el2, elOption, seriesModel, {
dataIndex,
isInit,
clearStyle: true,
})
applyKeyframeAnimation(el2, elOption.keyframeAnimation, seriesModel)
}
function updateElOnState(state2, el2, elStateOpt, styleOpt, attachedTxInfo) {
var elDisplayable = el2.isGroup ? null : el2
var txCfgOpt = attachedTxInfo && attachedTxInfo[state2].cfg
if (elDisplayable) {
var stateObj = elDisplayable.ensureState(state2)
if (styleOpt === false) {
var existingEmphasisState = elDisplayable.getState(state2)
if (existingEmphasisState) {
existingEmphasisState.style = null
}
} else {
stateObj.style = styleOpt || null
}
if (txCfgOpt) {
stateObj.textConfig = txCfgOpt
}
setDefaultStateProxy(elDisplayable)
}
}
function updateZ(el2, elOption, seriesModel) {
if (el2.isGroup) {
return
}
var elDisplayable = el2
var currentZ = seriesModel.currentZ
var currentZLevel = seriesModel.currentZLevel
elDisplayable.z = currentZ
elDisplayable.zlevel = currentZLevel
var optZ2 = elOption.z2
optZ2 != null && (elDisplayable.z2 = optZ2 || 0)
for (var i2 = 0; i2 < STATES.length; i2++) {
updateZForEachState(elDisplayable, elOption, STATES[i2])
}
}
function updateZForEachState(elDisplayable, elOption, state2) {
var isNormal = state2 === NORMAL
var elStateOpt = isNormal ? elOption : retrieveStateOption(elOption, state2)
var optZ2 = elStateOpt ? elStateOpt.z2 : null
var stateObj
if (optZ2 != null) {
stateObj = isNormal ? elDisplayable : elDisplayable.ensureState(state2)
stateObj.z2 = optZ2 || 0
}
}
function makeRenderItem(customSeries, data2, ecModel, api) {
var renderItem = customSeries.get('renderItem')
var coordSys = customSeries.coordinateSystem
var prepareResult2 = {}
if (coordSys) {
prepareResult2 = coordSys.prepareCustoms
? coordSys.prepareCustoms(coordSys)
: prepareCustoms[coordSys.type](coordSys)
}
var userAPI = defaults(
{
getWidth: api.getWidth,
getHeight: api.getHeight,
getZr: api.getZr,
getDevicePixelRatio: api.getDevicePixelRatio,
value: value2,
style: style2,
ordinalRawValue,
styleEmphasis,
visual,
barLayout,
currentSeriesIndices,
font: font2,
},
prepareResult2.api || {}
)
var userParams = {
context: {},
seriesId: customSeries.id,
seriesName: customSeries.name,
seriesIndex: customSeries.seriesIndex,
coordSys: prepareResult2.coordSys,
dataInsideLength: data2.count(),
encode: wrapEncodeDef(customSeries.getData()),
}
var currDataIndexInside
var currItemModel
var currItemStyleModels = {}
var currLabelModels = {}
var seriesItemStyleModels = {}
var seriesLabelModels = {}
for (var i2 = 0; i2 < STATES.length; i2++) {
var stateName = STATES[i2]
seriesItemStyleModels[stateName] = customSeries.getModel(
PATH_ITEM_STYLE[stateName]
)
seriesLabelModels[stateName] = customSeries.getModel(PATH_LABEL[stateName])
}
function getItemModel2(dataIndexInside) {
return dataIndexInside === currDataIndexInside
? currItemModel || (currItemModel = data2.getItemModel(dataIndexInside))
: data2.getItemModel(dataIndexInside)
}
function getItemStyleModel(dataIndexInside, state2) {
return !data2.hasItemOption
? seriesItemStyleModels[state2]
: dataIndexInside === currDataIndexInside
? currItemStyleModels[state2] ||
(currItemStyleModels[state2] = getItemModel2(dataIndexInside).getModel(
PATH_ITEM_STYLE[state2]
))
: getItemModel2(dataIndexInside).getModel(PATH_ITEM_STYLE[state2])
}
function getLabelModel(dataIndexInside, state2) {
return !data2.hasItemOption
? seriesLabelModels[state2]
: dataIndexInside === currDataIndexInside
? currLabelModels[state2] ||
(currLabelModels[state2] = getItemModel2(dataIndexInside).getModel(
PATH_LABEL[state2]
))
: getItemModel2(dataIndexInside).getModel(PATH_LABEL[state2])
}
return function (dataIndexInside, payload) {
currDataIndexInside = dataIndexInside
currItemModel = null
currItemStyleModels = {}
currLabelModels = {}
return (
renderItem &&
renderItem(
defaults(
{
dataIndexInside,
dataIndex: data2.getRawIndex(dataIndexInside),
actionType: payload ? payload.type : null,
},
userParams
),
userAPI
)
)
}
function value2(dim, dataIndexInside) {
dataIndexInside == null && (dataIndexInside = currDataIndexInside)
return data2
.getStore()
.get(data2.getDimensionIndex(dim || 0), dataIndexInside)
}
function ordinalRawValue(dim, dataIndexInside) {
dataIndexInside == null && (dataIndexInside = currDataIndexInside)
dim = dim || 0
var dimInfo = data2.getDimensionInfo(dim)
if (!dimInfo) {
var dimIndex = data2.getDimensionIndex(dim)
return dimIndex >= 0
? data2.getStore().get(dimIndex, dataIndexInside)
: void 0
}
var val2 = data2.get(dimInfo.name, dataIndexInside)
var ordinalMeta = dimInfo && dimInfo.ordinalMeta
return ordinalMeta ? ordinalMeta.categories[val2] : val2
}
function style2(userProps, dataIndexInside) {
dataIndexInside == null && (dataIndexInside = currDataIndexInside)
var style3 = data2.getItemVisual(dataIndexInside, 'style')
var visualColor = style3 && style3.fill
var opacity2 = style3 && style3.opacity
var itemStyle = getItemStyleModel(dataIndexInside, NORMAL).getItemStyle()
visualColor != null && (itemStyle.fill = visualColor)
opacity2 != null && (itemStyle.opacity = opacity2)
var opt = {
inheritColor: isString$2(visualColor) ? visualColor : '#000',
}
var labelModel = getLabelModel(dataIndexInside, NORMAL)
var textStyle = createTextStyle$1(labelModel, null, opt, false, true)
textStyle.text = labelModel.getShallow('show')
? retrieve2(
customSeries.getFormattedLabel(dataIndexInside, NORMAL),
getDefaultLabel(data2, dataIndexInside)
)
: null
var textConfig = createTextConfig(labelModel, opt, false)
preFetchFromExtra(userProps, itemStyle)
itemStyle = convertToEC4StyleForCustomSerise(
itemStyle,
textStyle,
textConfig
)
userProps && applyUserPropsAfter(itemStyle, userProps)
itemStyle.legacy = true
return itemStyle
}
function styleEmphasis(userProps, dataIndexInside) {
dataIndexInside == null && (dataIndexInside = currDataIndexInside)
var itemStyle = getItemStyleModel(dataIndexInside, EMPHASIS).getItemStyle()
var labelModel = getLabelModel(dataIndexInside, EMPHASIS)
var textStyle = createTextStyle$1(labelModel, null, null, true, true)
textStyle.text = labelModel.getShallow('show')
? retrieve3(
customSeries.getFormattedLabel(dataIndexInside, EMPHASIS),
customSeries.getFormattedLabel(dataIndexInside, NORMAL),
getDefaultLabel(data2, dataIndexInside)
)
: null
var textConfig = createTextConfig(labelModel, null, true)
preFetchFromExtra(userProps, itemStyle)
itemStyle = convertToEC4StyleForCustomSerise(
itemStyle,
textStyle,
textConfig
)
userProps && applyUserPropsAfter(itemStyle, userProps)
itemStyle.legacy = true
return itemStyle
}
function applyUserPropsAfter(itemStyle, extra) {
for (var key2 in extra) {
if (hasOwn$1(extra, key2)) {
itemStyle[key2] = extra[key2]
}
}
}
function preFetchFromExtra(extra, itemStyle) {
if (extra) {
extra.textFill && (itemStyle.textFill = extra.textFill)
extra.textPosition && (itemStyle.textPosition = extra.textPosition)
}
}
function visual(visualType, dataIndexInside) {
dataIndexInside == null && (dataIndexInside = currDataIndexInside)
if (hasOwn$1(STYLE_VISUAL_TYPE, visualType)) {
var style_1 = data2.getItemVisual(dataIndexInside, 'style')
return style_1 ? style_1[STYLE_VISUAL_TYPE[visualType]] : null
}
if (hasOwn$1(NON_STYLE_VISUAL_PROPS, visualType)) {
return data2.getItemVisual(dataIndexInside, visualType)
}
}
function barLayout(opt) {
if (coordSys.type === 'cartesian2d') {
var baseAxis = coordSys.getBaseAxis()
return getLayoutOnAxis(
defaults(
{
axis: baseAxis,
},
opt
)
)
}
}
function currentSeriesIndices() {
return ecModel.getCurrentSeriesIndices()
}
function font2(opt) {
return getFont(opt, ecModel)
}
}
function wrapEncodeDef(data2) {
var encodeDef = {}
each$f(data2.dimensions, function (dimName) {
var dimInfo = data2.getDimensionInfo(dimName)
if (!dimInfo.isExtraCoord) {
var coordDim = dimInfo.coordDim
var dataDims = (encodeDef[coordDim] = encodeDef[coordDim] || [])
dataDims[dimInfo.coordDimIndex] = data2.getDimensionIndex(dimName)
}
})
return encodeDef
}
function createOrUpdateItem(
api,
existsEl,
dataIndex,
elOption,
seriesModel,
group,
data2
) {
if (!elOption) {
group.remove(existsEl)
return
}
var el2 = doCreateOrUpdateEl(
api,
existsEl,
dataIndex,
elOption,
seriesModel,
group
)
el2 && data2.setItemGraphicEl(dataIndex, el2)
el2 &&
toggleHoverEmphasis(
el2,
elOption.focus,
elOption.blurScope,
elOption.emphasisDisabled
)
return el2
}
function doCreateOrUpdateEl(
api,
existsEl,
dataIndex,
elOption,
seriesModel,
group
) {
var toBeReplacedIdx = -1
var oldEl = existsEl
if (existsEl && doesElNeedRecreate(existsEl, elOption, seriesModel)) {
toBeReplacedIdx = indexOf(group.childrenRef(), existsEl)
existsEl = null
}
var isInit = !existsEl
var el2 = existsEl
if (!el2) {
el2 = createEl$1(elOption)
if (oldEl) {
copyElement(oldEl, el2)
}
} else {
el2.clearStates()
}
if (elOption.morph === false) {
el2.disableMorphing = true
} else if (el2.disableMorphing) {
el2.disableMorphing = false
}
attachedTxInfoTmp.normal.cfg =
attachedTxInfoTmp.normal.conOpt =
attachedTxInfoTmp.emphasis.cfg =
attachedTxInfoTmp.emphasis.conOpt =
attachedTxInfoTmp.blur.cfg =
attachedTxInfoTmp.blur.conOpt =
attachedTxInfoTmp.select.cfg =
attachedTxInfoTmp.select.conOpt =
null
attachedTxInfoTmp.isLegacy = false
doCreateOrUpdateAttachedTx(
el2,
dataIndex,
elOption,
seriesModel,
isInit,
attachedTxInfoTmp
)
doCreateOrUpdateClipPath(el2, dataIndex, elOption, seriesModel, isInit)
updateElNormal(
api,
el2,
dataIndex,
elOption,
attachedTxInfoTmp,
seriesModel,
isInit
)
hasOwn$1(elOption, 'info') && (customInnerStore(el2).info = elOption.info)
for (var i2 = 0; i2 < STATES.length; i2++) {
var stateName = STATES[i2]
if (stateName !== NORMAL) {
var otherStateOpt = retrieveStateOption(elOption, stateName)
var otherStyleOpt = retrieveStyleOptionOnState(
elOption,
otherStateOpt,
stateName
)
updateElOnState(
stateName,
el2,
otherStateOpt,
otherStyleOpt,
attachedTxInfoTmp
)
}
}
updateZ(el2, elOption, seriesModel)
if (elOption.type === 'group') {
mergeChildren(api, el2, dataIndex, elOption, seriesModel)
}
if (toBeReplacedIdx >= 0) {
group.replaceAt(el2, toBeReplacedIdx)
} else {
group.add(el2)
}
return el2
}
function doesElNeedRecreate(el2, elOption, seriesModel) {
var elInner = customInnerStore(el2)
var elOptionType = elOption.type
var elOptionShape = elOption.shape
var elOptionStyle = elOption.style
return (
seriesModel.isUniversalTransitionEnabled() ||
(elOptionType != null && elOptionType !== elInner.customGraphicType) ||
(elOptionType === 'path' &&
hasOwnPathData(elOptionShape) &&
getPathData(elOptionShape) !== elInner.customPathData) ||
(elOptionType === 'image' &&
hasOwn$1(elOptionStyle, 'image') &&
elOptionStyle.image !== elInner.customImagePath)
)
}
function doCreateOrUpdateClipPath(
el2,
dataIndex,
elOption,
seriesModel,
isInit
) {
var clipPathOpt = elOption.clipPath
if (clipPathOpt === false) {
if (el2 && el2.getClipPath()) {
el2.removeClipPath()
}
} else if (clipPathOpt) {
var clipPath = el2.getClipPath()
if (clipPath && doesElNeedRecreate(clipPath, clipPathOpt, seriesModel)) {
clipPath = null
}
if (!clipPath) {
clipPath = createEl$1(clipPathOpt)
el2.setClipPath(clipPath)
}
updateElNormal(
null,
clipPath,
dataIndex,
clipPathOpt,
null,
seriesModel,
isInit
)
}
}
function doCreateOrUpdateAttachedTx(
el2,
dataIndex,
elOption,
seriesModel,
isInit,
attachedTxInfo
) {
if (el2.isGroup) {
return
}
processTxInfo(elOption, null, attachedTxInfo)
processTxInfo(elOption, EMPHASIS, attachedTxInfo)
var txConOptNormal = attachedTxInfo.normal.conOpt
var txConOptEmphasis = attachedTxInfo.emphasis.conOpt
var txConOptBlur = attachedTxInfo.blur.conOpt
var txConOptSelect = attachedTxInfo.select.conOpt
if (
txConOptNormal != null ||
txConOptEmphasis != null ||
txConOptSelect != null ||
txConOptBlur != null
) {
var textContent = el2.getTextContent()
if (txConOptNormal === false) {
textContent && el2.removeTextContent()
} else {
txConOptNormal = attachedTxInfo.normal.conOpt = txConOptNormal || {
type: 'text',
}
if (!textContent) {
textContent = createEl$1(txConOptNormal)
el2.setTextContent(textContent)
} else {
textContent.clearStates()
}
updateElNormal(
null,
textContent,
dataIndex,
txConOptNormal,
null,
seriesModel,
isInit
)
var txConStlOptNormal = txConOptNormal && txConOptNormal.style
for (var i2 = 0; i2 < STATES.length; i2++) {
var stateName = STATES[i2]
if (stateName !== NORMAL) {
var txConOptOtherState = attachedTxInfo[stateName].conOpt
updateElOnState(
stateName,
textContent,
txConOptOtherState,
retrieveStyleOptionOnState(
txConOptNormal,
txConOptOtherState,
stateName
),
null
)
}
}
txConStlOptNormal ? textContent.dirty() : textContent.markRedraw()
}
}
}
function processTxInfo(elOption, state2, attachedTxInfo) {
var stateOpt = !state2 ? elOption : retrieveStateOption(elOption, state2)
var styleOpt = !state2
? elOption.style
: retrieveStyleOptionOnState(elOption, stateOpt, EMPHASIS)
var elType = elOption.type
var txCfg = stateOpt ? stateOpt.textConfig : null
var txConOptNormal = elOption.textContent
var txConOpt = !txConOptNormal
? null
: !state2
? txConOptNormal
: retrieveStateOption(txConOptNormal, state2)
if (
styleOpt &&
(attachedTxInfo.isLegacy ||
isEC4CompatibleStyle(styleOpt, elType, !!txCfg, !!txConOpt))
) {
attachedTxInfo.isLegacy = true
var convertResult = convertFromEC4CompatibleStyle(styleOpt, elType, !state2)
if (!txCfg && convertResult.textConfig) {
txCfg = convertResult.textConfig
}
if (!txConOpt && convertResult.textContent) {
txConOpt = convertResult.textContent
}
}
if (!state2 && txConOpt) {
var txConOptNormal_1 = txConOpt
!txConOptNormal_1.type && (txConOptNormal_1.type = 'text')
}
var info = !state2 ? attachedTxInfo.normal : attachedTxInfo[state2]
info.cfg = txCfg
info.conOpt = txConOpt
}
function retrieveStateOption(elOption, state2) {
return !state2 ? elOption : elOption ? elOption[state2] : null
}
function retrieveStyleOptionOnState(stateOptionNormal, stateOption, state2) {
var style2 = stateOption && stateOption.style
if (style2 == null && state2 === EMPHASIS && stateOptionNormal) {
style2 = stateOptionNormal.styleEmphasis
}
return style2
}
function mergeChildren(api, el2, dataIndex, elOption, seriesModel) {
var newChildren = elOption.children
var newLen = newChildren ? newChildren.length : 0
var mergeChildren2 = elOption.$mergeChildren
var byName = mergeChildren2 === 'byName' || elOption.diffChildrenByName
var notMerge = mergeChildren2 === false
if (!newLen && !byName && !notMerge) {
return
}
if (byName) {
diffGroupChildren({
api,
oldChildren: el2.children() || [],
newChildren: newChildren || [],
dataIndex,
seriesModel,
group: el2,
})
return
}
notMerge && el2.removeAll()
var index2 = 0
for (; index2 < newLen; index2++) {
var newChild = newChildren[index2]
var oldChild = el2.childAt(index2)
if (newChild) {
if (newChild.ignore == null) {
newChild.ignore = false
}
doCreateOrUpdateEl(api, oldChild, dataIndex, newChild, seriesModel, el2)
} else {
oldChild.ignore = true
}
}
for (var i2 = el2.childCount() - 1; i2 >= index2; i2--) {
var child = el2.childAt(i2)
removeChildFromGroup(el2, child, seriesModel)
}
}
function removeChildFromGroup(group, child, seriesModel) {
child &&
applyLeaveTransition(child, customInnerStore(group).option, seriesModel)
}
function diffGroupChildren(context2) {
new DataDiffer$1(
context2.oldChildren,
context2.newChildren,
getKey,
getKey,
context2
)
.add(processAddUpdate)
.update(processAddUpdate)
.remove(processRemove)
.execute()
}
function getKey(item2, idx) {
var name2 = item2 && item2.name
return name2 != null ? name2 : GROUP_DIFF_PREFIX + idx
}
function processAddUpdate(newIndex2, oldIndex2) {
var context2 = this.context
var childOption = newIndex2 != null ? context2.newChildren[newIndex2] : null
var child = oldIndex2 != null ? context2.oldChildren[oldIndex2] : null
doCreateOrUpdateEl(
context2.api,
child,
context2.dataIndex,
childOption,
context2.seriesModel,
context2.group
)
}
function processRemove(oldIndex2) {
var context2 = this.context
var child = context2.oldChildren[oldIndex2]
child &&
applyLeaveTransition(
child,
customInnerStore(child).option,
context2.seriesModel
)
}
function getPathData(shape) {
return shape && (shape.pathData || shape.d)
}
function hasOwnPathData(shape) {
return shape && (hasOwn$1(shape, 'pathData') || hasOwn$1(shape, 'd'))
}
function install$t(registers) {
registers.registerChartView(CustomChartView$1)
registers.registerSeriesModel(CustomSeriesModel$1)
}
var inner$b = makeInner()
var clone$1 = clone$4
var bind = bind$1
var BaseAxisPointer = (function () {
function BaseAxisPointer2() {
this._dragging = false
this.animationThreshold = 15
}
BaseAxisPointer2.prototype.render = function (
axisModel,
axisPointerModel,
api,
forceRender
) {
var value2 = axisPointerModel.get('value')
var status = axisPointerModel.get('status')
this._axisModel = axisModel
this._axisPointerModel = axisPointerModel
this._api = api
if (
!forceRender &&
this._lastValue === value2 &&
this._lastStatus === status
) {
return
}
this._lastValue = value2
this._lastStatus = status
var group = this._group
var handle = this._handle
if (!status || status === 'hide') {
group && group.hide()
handle && handle.hide()
return
}
group && group.show()
handle && handle.show()
var elOption = {}
this.makeElOption(elOption, value2, axisModel, axisPointerModel, api)
var graphicKey = elOption.graphicKey
if (graphicKey !== this._lastGraphicKey) {
this.clear(api)
}
this._lastGraphicKey = graphicKey
var moveAnimation = (this._moveAnimation = this.determineAnimation(
axisModel,
axisPointerModel
))
if (!group) {
group = this._group = new Group$5()
this.createPointerEl(group, elOption, axisModel, axisPointerModel)
this.createLabelEl(group, elOption, axisModel, axisPointerModel)
api.getZr().add(group)
} else {
var doUpdateProps = curry$1(updateProps, axisPointerModel, moveAnimation)
this.updatePointerEl(group, elOption, doUpdateProps)
this.updateLabelEl(group, elOption, doUpdateProps, axisPointerModel)
}
updateMandatoryProps(group, axisPointerModel, true)
this._renderHandle(value2)
}
BaseAxisPointer2.prototype.remove = function (api) {
this.clear(api)
}
BaseAxisPointer2.prototype.dispose = function (api) {
this.clear(api)
}
BaseAxisPointer2.prototype.determineAnimation = function (
axisModel,
axisPointerModel
) {
var animation = axisPointerModel.get('animation')
var axis = axisModel.axis
var isCategoryAxis = axis.type === 'category'
var useSnap = axisPointerModel.get('snap')
if (!useSnap && !isCategoryAxis) {
return false
}
if (animation === 'auto' || animation == null) {
var animationThreshold = this.animationThreshold
if (isCategoryAxis && axis.getBandWidth() > animationThreshold) {
return true
}
if (useSnap) {
var seriesDataCount = getAxisInfo$1(axisModel).seriesDataCount
var axisExtent = axis.getExtent()
return (
Math.abs(axisExtent[0] - axisExtent[1]) / seriesDataCount >
animationThreshold
)
}
return false
}
return animation === true
}
BaseAxisPointer2.prototype.makeElOption = function (
elOption,
value2,
axisModel,
axisPointerModel,
api
) {}
BaseAxisPointer2.prototype.createPointerEl = function (
group,
elOption,
axisModel,
axisPointerModel
) {
var pointerOption = elOption.pointer
if (pointerOption) {
var pointerEl = (inner$b(group).pointerEl = new graphic$1[
pointerOption.type
](clone$1(elOption.pointer)))
group.add(pointerEl)
}
}
BaseAxisPointer2.prototype.createLabelEl = function (
group,
elOption,
axisModel,
axisPointerModel
) {
if (elOption.label) {
var labelEl = (inner$b(group).labelEl = new ZRText$1(
clone$1(elOption.label)
))
group.add(labelEl)
updateLabelShowHide(labelEl, axisPointerModel)
}
}
BaseAxisPointer2.prototype.updatePointerEl = function (
group,
elOption,
updateProps2
) {
var pointerEl = inner$b(group).pointerEl
if (pointerEl && elOption.pointer) {
pointerEl.setStyle(elOption.pointer.style)
updateProps2(pointerEl, {
shape: elOption.pointer.shape,
})
}
}
BaseAxisPointer2.prototype.updateLabelEl = function (
group,
elOption,
updateProps2,
axisPointerModel
) {
var labelEl = inner$b(group).labelEl
if (labelEl) {
labelEl.setStyle(elOption.label.style)
updateProps2(labelEl, {
x: elOption.label.x,
y: elOption.label.y,
})
updateLabelShowHide(labelEl, axisPointerModel)
}
}
BaseAxisPointer2.prototype._renderHandle = function (value2) {
if (this._dragging || !this.updateHandleTransform) {
return
}
var axisPointerModel = this._axisPointerModel
var zr = this._api.getZr()
var handle = this._handle
var handleModel = axisPointerModel.getModel('handle')
var status = axisPointerModel.get('status')
if (!handleModel.get('show') || !status || status === 'hide') {
handle && zr.remove(handle)
this._handle = null
return
}
var isInit
if (!this._handle) {
isInit = true
handle = this._handle = createIcon(handleModel.get('icon'), {
cursor: 'move',
draggable: true,
onmousemove: function (e2) {
stop$1(e2.event)
},
onmousedown: bind(this._onHandleDragMove, this, 0, 0),
drift: bind(this._onHandleDragMove, this),
ondragend: bind(this._onHandleDragEnd, this),
})
zr.add(handle)
}
updateMandatoryProps(handle, axisPointerModel, false)
handle.setStyle(
handleModel.getItemStyle(null, [
'color',
'borderColor',
'borderWidth',
'opacity',
'shadowColor',
'shadowBlur',
'shadowOffsetX',
'shadowOffsetY',
])
)
var handleSize = handleModel.get('size')
if (!isArray$6(handleSize)) {
handleSize = [handleSize, handleSize]
}
handle.scaleX = handleSize[0] / 2
handle.scaleY = handleSize[1] / 2
createOrUpdate(
this,
'_doDispatchAxisPointer',
handleModel.get('throttle') || 0,
'fixRate'
)
this._moveHandleToValue(value2, isInit)
}
BaseAxisPointer2.prototype._moveHandleToValue = function (value2, isInit) {
updateProps(
this._axisPointerModel,
!isInit && this._moveAnimation,
this._handle,
getHandleTransProps(
this.getHandleTransform(value2, this._axisModel, this._axisPointerModel)
)
)
}
BaseAxisPointer2.prototype._onHandleDragMove = function (dx, dy) {
var handle = this._handle
if (!handle) {
return
}
this._dragging = true
var trans = this.updateHandleTransform(
getHandleTransProps(handle),
[dx, dy],
this._axisModel,
this._axisPointerModel
)
this._payloadInfo = trans
handle.stopAnimation()
handle.attr(getHandleTransProps(trans))
inner$b(handle).lastProp = null
this._doDispatchAxisPointer()
}
BaseAxisPointer2.prototype._doDispatchAxisPointer = function () {
var handle = this._handle
if (!handle) {
return
}
var payloadInfo = this._payloadInfo
var axisModel = this._axisModel
this._api.dispatchAction({
type: 'updateAxisPointer',
x: payloadInfo.cursorPoint[0],
y: payloadInfo.cursorPoint[1],
tooltipOption: payloadInfo.tooltipOption,
axesInfo: [
{
axisDim: axisModel.axis.dim,
axisIndex: axisModel.componentIndex,
},
],
})
}
BaseAxisPointer2.prototype._onHandleDragEnd = function () {
this._dragging = false
var handle = this._handle
if (!handle) {
return
}
var value2 = this._axisPointerModel.get('value')
this._moveHandleToValue(value2)
this._api.dispatchAction({
type: 'hideTip',
})
}
BaseAxisPointer2.prototype.clear = function (api) {
this._lastValue = null
this._lastStatus = null
var zr = api.getZr()
var group = this._group
var handle = this._handle
if (zr && group) {
this._lastGraphicKey = null
group && zr.remove(group)
handle && zr.remove(handle)
this._group = null
this._handle = null
this._payloadInfo = null
}
clear$1(this, '_doDispatchAxisPointer')
}
BaseAxisPointer2.prototype.doClear = function () {}
BaseAxisPointer2.prototype.buildLabel = function (xy, wh, xDimIndex) {
xDimIndex = xDimIndex || 0
return {
x: xy[xDimIndex],
y: xy[1 - xDimIndex],
width: wh[xDimIndex],
height: wh[1 - xDimIndex],
}
}
return BaseAxisPointer2
})()
function updateProps(animationModel, moveAnimation, el2, props2) {
if (!propsEqual(inner$b(el2).lastProp, props2)) {
inner$b(el2).lastProp = props2
moveAnimation
? updateProps$1(el2, props2, animationModel)
: (el2.stopAnimation(), el2.attr(props2))
}
}
function propsEqual(lastProps, newProps) {
if (isObject$b(lastProps) && isObject$b(newProps)) {
var equals_1 = true
each$f(newProps, function (item2, key2) {
equals_1 = equals_1 && propsEqual(lastProps[key2], item2)
})
return !!equals_1
} else {
return lastProps === newProps
}
}
function updateLabelShowHide(labelEl, axisPointerModel) {
labelEl[axisPointerModel.get(['label', 'show']) ? 'show' : 'hide']()
}
function getHandleTransProps(trans) {
return {
x: trans.x || 0,
y: trans.y || 0,
rotation: trans.rotation || 0,
}
}
function updateMandatoryProps(group, axisPointerModel, silent) {
var z2 = axisPointerModel.get('z')
var zlevel = axisPointerModel.get('zlevel')
group &&
group.traverse(function (el2) {
if (el2.type !== 'group') {
z2 != null && (el2.z = z2)
zlevel != null && (el2.zlevel = zlevel)
el2.silent = silent
}
})
}
var BaseAxisPointer$1 = BaseAxisPointer
function buildElStyle(axisPointerModel) {
var axisPointerType = axisPointerModel.get('type')
var styleModel = axisPointerModel.getModel(axisPointerType + 'Style')
var style2
if (axisPointerType === 'line') {
style2 = styleModel.getLineStyle()
style2.fill = null
} else if (axisPointerType === 'shadow') {
style2 = styleModel.getAreaStyle()
style2.stroke = null
}
return style2
}
function buildLabelElOption(
elOption,
axisModel,
axisPointerModel,
api,
labelPos
) {
var value2 = axisPointerModel.get('value')
var text2 = getValueLabel(
value2,
axisModel.axis,
axisModel.ecModel,
axisPointerModel.get('seriesDataIndices'),
{
precision: axisPointerModel.get(['label', 'precision']),
formatter: axisPointerModel.get(['label', 'formatter']),
}
)
var labelModel = axisPointerModel.getModel('label')
var paddings = normalizeCssArray(labelModel.get('padding') || 0)
var font2 = labelModel.getFont()
var textRect = getBoundingRect(text2, font2)
var position2 = labelPos.position
var width = textRect.width + paddings[1] + paddings[3]
var height = textRect.height + paddings[0] + paddings[2]
var align = labelPos.align
align === 'right' && (position2[0] -= width)
align === 'center' && (position2[0] -= width / 2)
var verticalAlign = labelPos.verticalAlign
verticalAlign === 'bottom' && (position2[1] -= height)
verticalAlign === 'middle' && (position2[1] -= height / 2)
confineInContainer(position2, width, height, api)
var bgColor = labelModel.get('backgroundColor')
if (!bgColor || bgColor === 'auto') {
bgColor = axisModel.get(['axisLine', 'lineStyle', 'color'])
}
elOption.label = {
x: position2[0],
y: position2[1],
style: createTextStyle$1(labelModel, {
text: text2,
font: font2,
fill: labelModel.getTextColor(),
padding: paddings,
backgroundColor: bgColor,
}),
z2: 10,
}
}
function confineInContainer(position2, width, height, api) {
var viewWidth = api.getWidth()
var viewHeight = api.getHeight()
position2[0] = Math.min(position2[0] + width, viewWidth) - width
position2[1] = Math.min(position2[1] + height, viewHeight) - height
position2[0] = Math.max(position2[0], 0)
position2[1] = Math.max(position2[1], 0)
}
function getValueLabel(value2, axis, ecModel, seriesDataIndices, opt) {
value2 = axis.scale.parse(value2)
var text2 = axis.scale.getLabel(
{
value: value2,
},
{
precision: opt.precision,
}
)
var formatter2 = opt.formatter
if (formatter2) {
var params_1 = {
value: getAxisRawValue(axis, {
value: value2,
}),
axisDimension: axis.dim,
axisIndex: axis.index,
seriesData: [],
}
each$f(seriesDataIndices, function (idxItem) {
var series = ecModel.getSeriesByIndex(idxItem.seriesIndex)
var dataIndex = idxItem.dataIndexInside
var dataParams = series && series.getDataParams(dataIndex)
dataParams && params_1.seriesData.push(dataParams)
})
if (isString$2(formatter2)) {
text2 = formatter2.replace('{value}', text2)
} else if (isFunction$4(formatter2)) {
text2 = formatter2(params_1)
}
}
return text2
}
function getTransformedPosition(axis, value2, layoutInfo) {
var transform3 = create$1()
rotate(transform3, transform3, layoutInfo.rotation)
translate$1(transform3, transform3, layoutInfo.position)
return applyTransform(
[
axis.dataToCoord(value2),
(layoutInfo.labelOffset || 0) +
(layoutInfo.labelDirection || 1) * (layoutInfo.labelMargin || 0),
],
transform3
)
}
function buildCartesianSingleLabelElOption(
value2,
elOption,
layoutInfo,
axisModel,
axisPointerModel,
api
) {
var textLayout = AxisBuilder$1.innerTextLayout(
layoutInfo.rotation,
0,
layoutInfo.labelDirection
)
layoutInfo.labelMargin = axisPointerModel.get(['label', 'margin'])
buildLabelElOption(elOption, axisModel, axisPointerModel, api, {
position: getTransformedPosition(axisModel.axis, value2, layoutInfo),
align: textLayout.textAlign,
verticalAlign: textLayout.textVerticalAlign,
})
}
function makeLineShape(p1, p2, xDimIndex) {
xDimIndex = xDimIndex || 0
return {
x1: p1[xDimIndex],
y1: p1[1 - xDimIndex],
x2: p2[xDimIndex],
y2: p2[1 - xDimIndex],
}
}
function makeRectShape(xy, wh, xDimIndex) {
xDimIndex = xDimIndex || 0
return {
x: xy[xDimIndex],
y: xy[1 - xDimIndex],
width: wh[xDimIndex],
height: wh[1 - xDimIndex],
}
}
function makeSectorShape(cx, cy, r0, r2, startAngle, endAngle) {
return {
cx,
cy,
r0,
r: r2,
startAngle,
endAngle,
clockwise: true,
}
}
var CartesianAxisPointer = (function (_super) {
__extends$2(CartesianAxisPointer2, _super)
function CartesianAxisPointer2() {
return (_super !== null && _super.apply(this, arguments)) || this
}
CartesianAxisPointer2.prototype.makeElOption = function (
elOption,
value2,
axisModel,
axisPointerModel,
api
) {
var axis = axisModel.axis
var grid2 = axis.grid
var axisPointerType = axisPointerModel.get('type')
var otherExtent = getCartesian(grid2, axis)
.getOtherAxis(axis)
.getGlobalExtent()
var pixelValue = axis.toGlobalCoord(axis.dataToCoord(value2, true))
if (axisPointerType && axisPointerType !== 'none') {
var elStyle = buildElStyle(axisPointerModel)
var pointerOption = pointerShapeBuilder$2[axisPointerType](
axis,
pixelValue,
otherExtent
)
pointerOption.style = elStyle
elOption.graphicKey = pointerOption.type
elOption.pointer = pointerOption
}
var layoutInfo = layout$2(grid2.model, axisModel)
buildCartesianSingleLabelElOption(
value2,
elOption,
layoutInfo,
axisModel,
axisPointerModel,
api
)
}
CartesianAxisPointer2.prototype.getHandleTransform = function (
value2,
axisModel,
axisPointerModel
) {
var layoutInfo = layout$2(axisModel.axis.grid.model, axisModel, {
labelInside: false,
})
layoutInfo.labelMargin = axisPointerModel.get(['handle', 'margin'])
var pos = getTransformedPosition(axisModel.axis, value2, layoutInfo)
return {
x: pos[0],
y: pos[1],
rotation:
layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0),
}
}
CartesianAxisPointer2.prototype.updateHandleTransform = function (
transform3,
delta,
axisModel,
axisPointerModel
) {
var axis = axisModel.axis
var grid2 = axis.grid
var axisExtent = axis.getGlobalExtent(true)
var otherExtent = getCartesian(grid2, axis)
.getOtherAxis(axis)
.getGlobalExtent()
var dimIndex = axis.dim === 'x' ? 0 : 1
var currPosition = [transform3.x, transform3.y]
currPosition[dimIndex] += delta[dimIndex]
currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex])
currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex])
var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2
var cursorPoint = [cursorOtherValue, cursorOtherValue]
cursorPoint[dimIndex] = currPosition[dimIndex]
var tooltipOptions = [
{
verticalAlign: 'middle',
},
{
align: 'center',
},
]
return {
x: currPosition[0],
y: currPosition[1],
rotation: transform3.rotation,
cursorPoint,
tooltipOption: tooltipOptions[dimIndex],
}
}
return CartesianAxisPointer2
})(BaseAxisPointer$1)
function getCartesian(grid2, axis) {
var opt = {}
opt[axis.dim + 'AxisIndex'] = axis.index
return grid2.getCartesian(opt)
}
var pointerShapeBuilder$2 = {
line: function (axis, pixelValue, otherExtent) {
var targetShape = makeLineShape(
[pixelValue, otherExtent[0]],
[pixelValue, otherExtent[1]],
getAxisDimIndex(axis)
)
return {
type: 'Line',
subPixelOptimize: true,
shape: targetShape,
}
},
shadow: function (axis, pixelValue, otherExtent) {
var bandWidth = Math.max(1, axis.getBandWidth())
var span = otherExtent[1] - otherExtent[0]
return {
type: 'Rect',
shape: makeRectShape(
[pixelValue - bandWidth / 2, otherExtent[0]],
[bandWidth, span],
getAxisDimIndex(axis)
),
}
},
}
function getAxisDimIndex(axis) {
return axis.dim === 'x' ? 0 : 1
}
var CartesianAxisPointer$1 = CartesianAxisPointer
var AxisPointerModel = (function (_super) {
__extends$2(AxisPointerModel2, _super)
function AxisPointerModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = AxisPointerModel2.type
return _this
}
AxisPointerModel2.type = 'axisPointer'
AxisPointerModel2.defaultOption = {
show: 'auto',
z: 50,
type: 'line',
snap: false,
triggerTooltip: true,
triggerEmphasis: true,
value: null,
status: null,
link: [],
animation: null,
animationDurationUpdate: 200,
lineStyle: {
color: '#B9BEC9',
width: 1,
type: 'dashed',
},
shadowStyle: {
color: 'rgba(210,219,238,0.2)',
},
label: {
show: true,
formatter: null,
precision: 'auto',
margin: 3,
color: '#fff',
padding: [5, 7, 5, 7],
backgroundColor: 'auto',
borderColor: null,
borderWidth: 0,
borderRadius: 3,
},
handle: {
show: false,
icon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z',
size: 45,
margin: 50,
color: '#333',
shadowBlur: 3,
shadowColor: '#aaa',
shadowOffsetX: 0,
shadowOffsetY: 2,
throttle: 40,
},
}
return AxisPointerModel2
})(ComponentModel$1)
var AxisPointerModel$1 = AxisPointerModel
var inner$a = makeInner()
var each$8 = each$f
function register(key2, api, handler) {
if (env$1.node) {
return
}
var zr = api.getZr()
inner$a(zr).records || (inner$a(zr).records = {})
initGlobalListeners(zr, api)
var record = inner$a(zr).records[key2] || (inner$a(zr).records[key2] = {})
record.handler = handler
}
function initGlobalListeners(zr, api) {
if (inner$a(zr).initialized) {
return
}
inner$a(zr).initialized = true
useHandler('click', curry$1(doEnter, 'click'))
useHandler('mousemove', curry$1(doEnter, 'mousemove'))
useHandler('globalout', onLeave)
function useHandler(eventType, cb) {
zr.on(eventType, function (e2) {
var dis = makeDispatchAction$1(api)
each$8(inner$a(zr).records, function (record) {
record && cb(record, e2, dis.dispatchAction)
})
dispatchTooltipFinally(dis.pendings, api)
})
}
}
function dispatchTooltipFinally(pendings, api) {
var showLen = pendings.showTip.length
var hideLen = pendings.hideTip.length
var actuallyPayload
if (showLen) {
actuallyPayload = pendings.showTip[showLen - 1]
} else if (hideLen) {
actuallyPayload = pendings.hideTip[hideLen - 1]
}
if (actuallyPayload) {
actuallyPayload.dispatchAction = null
api.dispatchAction(actuallyPayload)
}
}
function onLeave(record, e2, dispatchAction2) {
record.handler('leave', null, dispatchAction2)
}
function doEnter(currTrigger, record, e2, dispatchAction2) {
record.handler(currTrigger, e2, dispatchAction2)
}
function makeDispatchAction$1(api) {
var pendings = {
showTip: [],
hideTip: [],
}
var dispatchAction2 = function (payload) {
var pendingList = pendings[payload.type]
if (pendingList) {
pendingList.push(payload)
} else {
payload.dispatchAction = dispatchAction2
api.dispatchAction(payload)
}
}
return {
dispatchAction: dispatchAction2,
pendings,
}
}
function unregister(key2, api) {
if (env$1.node) {
return
}
var zr = api.getZr()
var record = (inner$a(zr).records || {})[key2]
if (record) {
inner$a(zr).records[key2] = null
}
}
var AxisPointerView = (function (_super) {
__extends$2(AxisPointerView2, _super)
function AxisPointerView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = AxisPointerView2.type
return _this
}
AxisPointerView2.prototype.render = function (
globalAxisPointerModel,
ecModel,
api
) {
var globalTooltipModel = ecModel.getComponent('tooltip')
var triggerOn =
globalAxisPointerModel.get('triggerOn') ||
(globalTooltipModel && globalTooltipModel.get('triggerOn')) ||
'mousemove|click'
register('axisPointer', api, function (currTrigger, e2, dispatchAction2) {
if (
triggerOn !== 'none' &&
(currTrigger === 'leave' || triggerOn.indexOf(currTrigger) >= 0)
) {
dispatchAction2({
type: 'updateAxisPointer',
currTrigger,
x: e2 && e2.offsetX,
y: e2 && e2.offsetY,
})
}
})
}
AxisPointerView2.prototype.remove = function (ecModel, api) {
unregister('axisPointer', api)
}
AxisPointerView2.prototype.dispose = function (ecModel, api) {
unregister('axisPointer', api)
}
AxisPointerView2.type = 'axisPointer'
return AxisPointerView2
})(ComponentView$1)
var AxisPointerView$1 = AxisPointerView
function findPointFromSeries(finder, ecModel) {
var point = []
var seriesIndex = finder.seriesIndex
var seriesModel
if (
seriesIndex == null ||
!(seriesModel = ecModel.getSeriesByIndex(seriesIndex))
) {
return {
point: [],
}
}
var data2 = seriesModel.getData()
var dataIndex = queryDataIndex(data2, finder)
if (dataIndex == null || dataIndex < 0 || isArray$6(dataIndex)) {
return {
point: [],
}
}
var el2 = data2.getItemGraphicEl(dataIndex)
var coordSys = seriesModel.coordinateSystem
if (seriesModel.getTooltipPosition) {
point = seriesModel.getTooltipPosition(dataIndex) || []
} else if (coordSys && coordSys.dataToPoint) {
if (finder.isStacked) {
var baseAxis = coordSys.getBaseAxis()
var valueAxis2 = coordSys.getOtherAxis(baseAxis)
var valueAxisDim = valueAxis2.dim
var baseAxisDim = baseAxis.dim
var baseDataOffset =
valueAxisDim === 'x' || valueAxisDim === 'radius' ? 1 : 0
var baseDim = data2.mapDimension(baseAxisDim)
var stackedData = []
stackedData[baseDataOffset] = data2.get(baseDim, dataIndex)
stackedData[1 - baseDataOffset] = data2.get(
data2.getCalculationInfo('stackResultDimension'),
dataIndex
)
point = coordSys.dataToPoint(stackedData) || []
} else {
point =
coordSys.dataToPoint(
data2.getValues(
map$1(coordSys.dimensions, function (dim) {
return data2.mapDimension(dim)
}),
dataIndex
)
) || []
}
} else if (el2) {
var rect = el2.getBoundingRect().clone()
rect.applyTransform(el2.transform)
point = [rect.x + rect.width / 2, rect.y + rect.height / 2]
}
return {
point,
el: el2,
}
}
var inner$9 = makeInner()
function axisTrigger(payload, ecModel, api) {
var currTrigger = payload.currTrigger
var point = [payload.x, payload.y]
var finder = payload
var dispatchAction2 =
payload.dispatchAction || bind$1(api.dispatchAction, api)
var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo
if (!coordSysAxesInfo) {
return
}
if (illegalPoint(point)) {
point = findPointFromSeries(
{
seriesIndex: finder.seriesIndex,
dataIndex: finder.dataIndex,
},
ecModel
).point
}
var isIllegalPoint = illegalPoint(point)
var inputAxesInfo = finder.axesInfo
var axesInfo = coordSysAxesInfo.axesInfo
var shouldHide = currTrigger === 'leave' || illegalPoint(point)
var outputPayload = {}
var showValueMap = {}
var dataByCoordSys = {
list: [],
map: {},
}
var updaters = {
showPointer: curry$1(showPointer, showValueMap),
showTooltip: curry$1(showTooltip, dataByCoordSys),
}
each$f(coordSysAxesInfo.coordSysMap, function (coordSys, coordSysKey) {
var coordSysContainsPoint = isIllegalPoint || coordSys.containPoint(point)
each$f(
coordSysAxesInfo.coordSysAxesInfo[coordSysKey],
function (axisInfo, key2) {
var axis = axisInfo.axis
var inputAxisInfo = findInputAxisInfo(inputAxesInfo, axisInfo)
if (
!shouldHide &&
coordSysContainsPoint &&
(!inputAxesInfo || inputAxisInfo)
) {
var val2 = inputAxisInfo && inputAxisInfo.value
if (val2 == null && !isIllegalPoint) {
val2 = axis.pointToData(point)
}
val2 != null &&
processOnAxis(axisInfo, val2, updaters, false, outputPayload)
}
}
)
})
var linkTriggers = {}
each$f(axesInfo, function (tarAxisInfo, tarKey) {
var linkGroup = tarAxisInfo.linkGroup
if (linkGroup && !showValueMap[tarKey]) {
each$f(linkGroup.axesInfo, function (srcAxisInfo, srcKey) {
var srcValItem = showValueMap[srcKey]
if (srcAxisInfo !== tarAxisInfo && srcValItem) {
var val2 = srcValItem.value
linkGroup.mapper &&
(val2 = tarAxisInfo.axis.scale.parse(
linkGroup.mapper(
val2,
makeMapperParam(srcAxisInfo),
makeMapperParam(tarAxisInfo)
)
))
linkTriggers[tarAxisInfo.key] = val2
}
})
}
})
each$f(linkTriggers, function (val2, tarKey) {
processOnAxis(axesInfo[tarKey], val2, updaters, true, outputPayload)
})
updateModelActually(showValueMap, axesInfo, outputPayload)
dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction2)
dispatchHighDownActually(axesInfo, dispatchAction2, api)
return outputPayload
}
function processOnAxis(axisInfo, newValue, updaters, noSnap, outputFinder) {
var axis = axisInfo.axis
if (axis.scale.isBlank() || !axis.containData(newValue)) {
return
}
if (!axisInfo.involveSeries) {
updaters.showPointer(axisInfo, newValue)
return
}
var payloadInfo = buildPayloadsBySeries(newValue, axisInfo)
var payloadBatch = payloadInfo.payloadBatch
var snapToValue = payloadInfo.snapToValue
if (payloadBatch[0] && outputFinder.seriesIndex == null) {
extend(outputFinder, payloadBatch[0])
}
if (!noSnap && axisInfo.snap) {
if (axis.containData(snapToValue) && snapToValue != null) {
newValue = snapToValue
}
}
updaters.showPointer(axisInfo, newValue, payloadBatch)
updaters.showTooltip(axisInfo, payloadInfo, snapToValue)
}
function buildPayloadsBySeries(value2, axisInfo) {
var axis = axisInfo.axis
var dim = axis.dim
var snapToValue = value2
var payloadBatch = []
var minDist = Number.MAX_VALUE
var minDiff = -1
each$f(axisInfo.seriesModels, function (series, idx) {
var dataDim = series.getData().mapDimensionsAll(dim)
var seriesNestestValue
var dataIndices
if (series.getAxisTooltipData) {
var result = series.getAxisTooltipData(dataDim, value2, axis)
dataIndices = result.dataIndices
seriesNestestValue = result.nestestValue
} else {
dataIndices = series
.getData()
.indicesOfNearest(
dataDim[0],
value2,
axis.type === 'category' ? 0.5 : null
)
if (!dataIndices.length) {
return
}
seriesNestestValue = series.getData().get(dataDim[0], dataIndices[0])
}
if (seriesNestestValue == null || !isFinite(seriesNestestValue)) {
return
}
var diff = value2 - seriesNestestValue
var dist2 = Math.abs(diff)
if (dist2 <= minDist) {
if (dist2 < minDist || (diff >= 0 && minDiff < 0)) {
minDist = dist2
minDiff = diff
snapToValue = seriesNestestValue
payloadBatch.length = 0
}
each$f(dataIndices, function (dataIndex) {
payloadBatch.push({
seriesIndex: series.seriesIndex,
dataIndexInside: dataIndex,
dataIndex: series.getData().getRawIndex(dataIndex),
})
})
}
})
return {
payloadBatch,
snapToValue,
}
}
function showPointer(showValueMap, axisInfo, value2, payloadBatch) {
showValueMap[axisInfo.key] = {
value: value2,
payloadBatch,
}
}
function showTooltip(dataByCoordSys, axisInfo, payloadInfo, value2) {
var payloadBatch = payloadInfo.payloadBatch
var axis = axisInfo.axis
var axisModel = axis.model
var axisPointerModel = axisInfo.axisPointerModel
if (!axisInfo.triggerTooltip || !payloadBatch.length) {
return
}
var coordSysModel = axisInfo.coordSys.model
var coordSysKey = makeKey(coordSysModel)
var coordSysItem = dataByCoordSys.map[coordSysKey]
if (!coordSysItem) {
coordSysItem = dataByCoordSys.map[coordSysKey] = {
coordSysId: coordSysModel.id,
coordSysIndex: coordSysModel.componentIndex,
coordSysType: coordSysModel.type,
coordSysMainType: coordSysModel.mainType,
dataByAxis: [],
}
dataByCoordSys.list.push(coordSysItem)
}
coordSysItem.dataByAxis.push({
axisDim: axis.dim,
axisIndex: axisModel.componentIndex,
axisType: axisModel.type,
axisId: axisModel.id,
value: value2,
valueLabelOpt: {
precision: axisPointerModel.get(['label', 'precision']),
formatter: axisPointerModel.get(['label', 'formatter']),
},
seriesDataIndices: payloadBatch.slice(),
})
}
function updateModelActually(showValueMap, axesInfo, outputPayload) {
var outputAxesInfo = (outputPayload.axesInfo = [])
each$f(axesInfo, function (axisInfo, key2) {
var option2 = axisInfo.axisPointerModel.option
var valItem = showValueMap[key2]
if (valItem) {
!axisInfo.useHandle && (option2.status = 'show')
option2.value = valItem.value
option2.seriesDataIndices = (valItem.payloadBatch || []).slice()
} else {
!axisInfo.useHandle && (option2.status = 'hide')
}
option2.status === 'show' &&
outputAxesInfo.push({
axisDim: axisInfo.axis.dim,
axisIndex: axisInfo.axis.model.componentIndex,
value: option2.value,
})
})
}
function dispatchTooltipActually(
dataByCoordSys,
point,
payload,
dispatchAction2
) {
if (illegalPoint(point) || !dataByCoordSys.list.length) {
dispatchAction2({
type: 'hideTip',
})
return
}
var sampleItem =
((dataByCoordSys.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] ||
{}
dispatchAction2({
type: 'showTip',
escapeConnect: true,
x: point[0],
y: point[1],
tooltipOption: payload.tooltipOption,
position: payload.position,
dataIndexInside: sampleItem.dataIndexInside,
dataIndex: sampleItem.dataIndex,
seriesIndex: sampleItem.seriesIndex,
dataByCoordSys: dataByCoordSys.list,
})
}
function dispatchHighDownActually(axesInfo, dispatchAction2, api) {
var zr = api.getZr()
var highDownKey = 'axisPointerLastHighlights'
var lastHighlights = inner$9(zr)[highDownKey] || {}
var newHighlights = (inner$9(zr)[highDownKey] = {})
each$f(axesInfo, function (axisInfo, key2) {
var option2 = axisInfo.axisPointerModel.option
option2.status === 'show' &&
axisInfo.triggerEmphasis &&
each$f(option2.seriesDataIndices, function (batchItem) {
var key3 = batchItem.seriesIndex + ' | ' + batchItem.dataIndex
newHighlights[key3] = batchItem
})
})
var toHighlight = []
var toDownplay = []
each$f(lastHighlights, function (batchItem, key2) {
!newHighlights[key2] && toDownplay.push(batchItem)
})
each$f(newHighlights, function (batchItem, key2) {
!lastHighlights[key2] && toHighlight.push(batchItem)
})
toDownplay.length &&
api.dispatchAction({
type: 'downplay',
escapeConnect: true,
notBlur: true,
batch: toDownplay,
})
toHighlight.length &&
api.dispatchAction({
type: 'highlight',
escapeConnect: true,
notBlur: true,
batch: toHighlight,
})
}
function findInputAxisInfo(inputAxesInfo, axisInfo) {
for (var i2 = 0; i2 < (inputAxesInfo || []).length; i2++) {
var inputAxisInfo = inputAxesInfo[i2]
if (
axisInfo.axis.dim === inputAxisInfo.axisDim &&
axisInfo.axis.model.componentIndex === inputAxisInfo.axisIndex
) {
return inputAxisInfo
}
}
}
function makeMapperParam(axisInfo) {
var axisModel = axisInfo.axis.model
var item2 = {}
var dim = (item2.axisDim = axisInfo.axis.dim)
item2.axisIndex = item2[dim + 'AxisIndex'] = axisModel.componentIndex
item2.axisName = item2[dim + 'AxisName'] = axisModel.name
item2.axisId = item2[dim + 'AxisId'] = axisModel.id
return item2
}
function illegalPoint(point) {
return (
!point ||
point[0] == null ||
isNaN(point[0]) ||
point[1] == null ||
isNaN(point[1])
)
}
function install$s(registers) {
AxisView$1.registerAxisPointerClass(
'CartesianAxisPointer',
CartesianAxisPointer$1
)
registers.registerComponentModel(AxisPointerModel$1)
registers.registerComponentView(AxisPointerView$1)
registers.registerPreprocessor(function (option2) {
if (option2) {
;(!option2.axisPointer || option2.axisPointer.length === 0) &&
(option2.axisPointer = {})
var link2 = option2.axisPointer.link
if (link2 && !isArray$6(link2)) {
option2.axisPointer.link = [link2]
}
}
})
registers.registerProcessor(
registers.PRIORITY.PROCESSOR.STATISTIC,
function (ecModel, api) {
ecModel.getComponent('axisPointer').coordSysAxesInfo = collect(
ecModel,
api
)
}
)
registers.registerAction(
{
type: 'updateAxisPointer',
event: 'updateAxisPointer',
update: ':updateAxisPointer',
},
axisTrigger
)
}
function install$r(registers) {
use(install$P)
use(install$s)
}
var PolarAxisPointer = (function (_super) {
__extends$2(PolarAxisPointer2, _super)
function PolarAxisPointer2() {
return (_super !== null && _super.apply(this, arguments)) || this
}
PolarAxisPointer2.prototype.makeElOption = function (
elOption,
value2,
axisModel,
axisPointerModel,
api
) {
var axis = axisModel.axis
if (axis.dim === 'angle') {
this.animationThreshold = Math.PI / 18
}
var polar = axis.polar
var otherAxis = polar.getOtherAxis(axis)
var otherExtent = otherAxis.getExtent()
var coordValue = axis.dataToCoord(value2)
var axisPointerType = axisPointerModel.get('type')
if (axisPointerType && axisPointerType !== 'none') {
var elStyle = buildElStyle(axisPointerModel)
var pointerOption = pointerShapeBuilder$1[axisPointerType](
axis,
polar,
coordValue,
otherExtent
)
pointerOption.style = elStyle
elOption.graphicKey = pointerOption.type
elOption.pointer = pointerOption
}
var labelMargin = axisPointerModel.get(['label', 'margin'])
var labelPos = getLabelPosition(
value2,
axisModel,
axisPointerModel,
polar,
labelMargin
)
buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos)
}
return PolarAxisPointer2
})(BaseAxisPointer$1)
function getLabelPosition(
value2,
axisModel,
axisPointerModel,
polar,
labelMargin
) {
var axis = axisModel.axis
var coord = axis.dataToCoord(value2)
var axisAngle = polar.getAngleAxis().getExtent()[0]
axisAngle = (axisAngle / 180) * Math.PI
var radiusExtent = polar.getRadiusAxis().getExtent()
var position2
var align
var verticalAlign
if (axis.dim === 'radius') {
var transform3 = create$1()
rotate(transform3, transform3, axisAngle)
translate$1(transform3, transform3, [polar.cx, polar.cy])
position2 = applyTransform([coord, -labelMargin], transform3)
var labelRotation = axisModel.getModel('axisLabel').get('rotate') || 0
var labelLayout2 = AxisBuilder$1.innerTextLayout(
axisAngle,
(labelRotation * Math.PI) / 180,
-1
)
align = labelLayout2.textAlign
verticalAlign = labelLayout2.textVerticalAlign
} else {
var r2 = radiusExtent[1]
position2 = polar.coordToPoint([r2 + labelMargin, coord])
var cx = polar.cx
var cy = polar.cy
align =
Math.abs(position2[0] - cx) / r2 < 0.3
? 'center'
: position2[0] > cx
? 'left'
: 'right'
verticalAlign =
Math.abs(position2[1] - cy) / r2 < 0.3
? 'middle'
: position2[1] > cy
? 'top'
: 'bottom'
}
return {
position: position2,
align,
verticalAlign,
}
}
var pointerShapeBuilder$1 = {
line: function (axis, polar, coordValue, otherExtent) {
return axis.dim === 'angle'
? {
type: 'Line',
shape: makeLineShape(
polar.coordToPoint([otherExtent[0], coordValue]),
polar.coordToPoint([otherExtent[1], coordValue])
),
}
: {
type: 'Circle',
shape: {
cx: polar.cx,
cy: polar.cy,
r: coordValue,
},
}
},
shadow: function (axis, polar, coordValue, otherExtent) {
var bandWidth = Math.max(1, axis.getBandWidth())
var radian = Math.PI / 180
return axis.dim === 'angle'
? {
type: 'Sector',
shape: makeSectorShape(
polar.cx,
polar.cy,
otherExtent[0],
otherExtent[1],
(-coordValue - bandWidth / 2) * radian,
(-coordValue + bandWidth / 2) * radian
),
}
: {
type: 'Sector',
shape: makeSectorShape(
polar.cx,
polar.cy,
coordValue - bandWidth / 2,
coordValue + bandWidth / 2,
0,
Math.PI * 2
),
}
},
}
var PolarAxisPointer$1 = PolarAxisPointer
var PolarModel = (function (_super) {
__extends$2(PolarModel2, _super)
function PolarModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = PolarModel2.type
return _this
}
PolarModel2.prototype.findAxisModel = function (axisType) {
var foundAxisModel
var ecModel = this.ecModel
ecModel.eachComponent(
axisType,
function (axisModel) {
if (axisModel.getCoordSysModel() === this) {
foundAxisModel = axisModel
}
},
this
)
return foundAxisModel
}
PolarModel2.type = 'polar'
PolarModel2.dependencies = ['radiusAxis', 'angleAxis']
PolarModel2.defaultOption = {
z: 0,
center: ['50%', '50%'],
radius: '80%',
}
return PolarModel2
})(ComponentModel$1)
var PolarModel$1 = PolarModel
var PolarAxisModel = (function (_super) {
__extends$2(PolarAxisModel2, _super)
function PolarAxisModel2() {
return (_super !== null && _super.apply(this, arguments)) || this
}
PolarAxisModel2.prototype.getCoordSysModel = function () {
return this.getReferringComponents('polar', SINGLE_REFERRING).models[0]
}
PolarAxisModel2.type = 'polarAxis'
return PolarAxisModel2
})(ComponentModel$1)
mixin(PolarAxisModel, AxisModelCommonMixin)
var AngleAxisModel = (function (_super) {
__extends$2(AngleAxisModel2, _super)
function AngleAxisModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = AngleAxisModel2.type
return _this
}
AngleAxisModel2.type = 'angleAxis'
return AngleAxisModel2
})(PolarAxisModel)
var RadiusAxisModel = (function (_super) {
__extends$2(RadiusAxisModel2, _super)
function RadiusAxisModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = RadiusAxisModel2.type
return _this
}
RadiusAxisModel2.type = 'radiusAxis'
return RadiusAxisModel2
})(PolarAxisModel)
var RadiusAxis = (function (_super) {
__extends$2(RadiusAxis2, _super)
function RadiusAxis2(scale2, radiusExtent) {
return _super.call(this, 'radius', scale2, radiusExtent) || this
}
RadiusAxis2.prototype.pointToData = function (point, clamp2) {
return this.polar.pointToData(point, clamp2)[this.dim === 'radius' ? 0 : 1]
}
return RadiusAxis2
})(Axis$1)
RadiusAxis.prototype.dataToRadius = Axis$1.prototype.dataToCoord
RadiusAxis.prototype.radiusToData = Axis$1.prototype.coordToData
var RadiusAxis$1 = RadiusAxis
var inner$8 = makeInner()
var AngleAxis = (function (_super) {
__extends$2(AngleAxis2, _super)
function AngleAxis2(scale2, angleExtent) {
return _super.call(this, 'angle', scale2, angleExtent || [0, 360]) || this
}
AngleAxis2.prototype.pointToData = function (point, clamp2) {
return this.polar.pointToData(point, clamp2)[this.dim === 'radius' ? 0 : 1]
}
AngleAxis2.prototype.calculateCategoryInterval = function () {
var axis = this
var labelModel = axis.getLabelModel()
var ordinalScale = axis.scale
var ordinalExtent = ordinalScale.getExtent()
var tickCount = ordinalScale.count()
if (ordinalExtent[1] - ordinalExtent[0] < 1) {
return 0
}
var tickValue = ordinalExtent[0]
var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue)
var unitH = Math.abs(unitSpan)
var rect = getBoundingRect(
tickValue == null ? '' : tickValue + '',
labelModel.getFont(),
'center',
'top'
)
var maxH = Math.max(rect.height, 7)
var dh = maxH / unitH
isNaN(dh) && (dh = Infinity)
var interval = Math.max(0, Math.floor(dh))
var cache2 = inner$8(axis.model)
var lastAutoInterval = cache2.lastAutoInterval
var lastTickCount = cache2.lastTickCount
if (
lastAutoInterval != null &&
lastTickCount != null &&
Math.abs(lastAutoInterval - interval) <= 1 &&
Math.abs(lastTickCount - tickCount) <= 1 &&
lastAutoInterval > interval
) {
interval = lastAutoInterval
} else {
cache2.lastTickCount = tickCount
cache2.lastAutoInterval = interval
}
return interval
}
return AngleAxis2
})(Axis$1)
AngleAxis.prototype.dataToAngle = Axis$1.prototype.dataToCoord
AngleAxis.prototype.angleToData = Axis$1.prototype.coordToData
var AngleAxis$1 = AngleAxis
var polarDimensions = ['radius', 'angle']
var Polar = (function () {
function Polar2(name2) {
this.dimensions = polarDimensions
this.type = 'polar'
this.cx = 0
this.cy = 0
this._radiusAxis = new RadiusAxis$1()
this._angleAxis = new AngleAxis$1()
this.axisPointerEnabled = true
this.name = name2 || ''
this._radiusAxis.polar = this._angleAxis.polar = this
}
Polar2.prototype.containPoint = function (point) {
var coord = this.pointToCoord(point)
return (
this._radiusAxis.contain(coord[0]) && this._angleAxis.contain(coord[1])
)
}
Polar2.prototype.containData = function (data2) {
return (
this._radiusAxis.containData(data2[0]) &&
this._angleAxis.containData(data2[1])
)
}
Polar2.prototype.getAxis = function (dim) {
var key2 = '_' + dim + 'Axis'
return this[key2]
}
Polar2.prototype.getAxes = function () {
return [this._radiusAxis, this._angleAxis]
}
Polar2.prototype.getAxesByScale = function (scaleType) {
var axes = []
var angleAxis = this._angleAxis
var radiusAxis = this._radiusAxis
angleAxis.scale.type === scaleType && axes.push(angleAxis)
radiusAxis.scale.type === scaleType && axes.push(radiusAxis)
return axes
}
Polar2.prototype.getAngleAxis = function () {
return this._angleAxis
}
Polar2.prototype.getRadiusAxis = function () {
return this._radiusAxis
}
Polar2.prototype.getOtherAxis = function (axis) {
var angleAxis = this._angleAxis
return axis === angleAxis ? this._radiusAxis : angleAxis
}
Polar2.prototype.getBaseAxis = function () {
return (
this.getAxesByScale('ordinal')[0] ||
this.getAxesByScale('time')[0] ||
this.getAngleAxis()
)
}
Polar2.prototype.getTooltipAxes = function (dim) {
var baseAxis =
dim != null && dim !== 'auto' ? this.getAxis(dim) : this.getBaseAxis()
return {
baseAxes: [baseAxis],
otherAxes: [this.getOtherAxis(baseAxis)],
}
}
Polar2.prototype.dataToPoint = function (data2, clamp2) {
return this.coordToPoint([
this._radiusAxis.dataToRadius(data2[0], clamp2),
this._angleAxis.dataToAngle(data2[1], clamp2),
])
}
Polar2.prototype.pointToData = function (point, clamp2) {
var coord = this.pointToCoord(point)
return [
this._radiusAxis.radiusToData(coord[0], clamp2),
this._angleAxis.angleToData(coord[1], clamp2),
]
}
Polar2.prototype.pointToCoord = function (point) {
var dx = point[0] - this.cx
var dy = point[1] - this.cy
var angleAxis = this.getAngleAxis()
var extent3 = angleAxis.getExtent()
var minAngle = Math.min(extent3[0], extent3[1])
var maxAngle = Math.max(extent3[0], extent3[1])
angleAxis.inverse
? (minAngle = maxAngle - 360)
: (maxAngle = minAngle + 360)
var radius = Math.sqrt(dx * dx + dy * dy)
dx /= radius
dy /= radius
var radian = (Math.atan2(-dy, dx) / Math.PI) * 180
var dir3 = radian < minAngle ? 1 : -1
while (radian < minAngle || radian > maxAngle) {
radian += dir3 * 360
}
return [radius, radian]
}
Polar2.prototype.coordToPoint = function (coord) {
var radius = coord[0]
var radian = (coord[1] / 180) * Math.PI
var x2 = Math.cos(radian) * radius + this.cx
var y2 = -Math.sin(radian) * radius + this.cy
return [x2, y2]
}
Polar2.prototype.getArea = function () {
var angleAxis = this.getAngleAxis()
var radiusAxis = this.getRadiusAxis()
var radiusExtent = radiusAxis.getExtent().slice()
radiusExtent[0] > radiusExtent[1] && radiusExtent.reverse()
var angleExtent = angleAxis.getExtent()
var RADIAN2 = Math.PI / 180
return {
cx: this.cx,
cy: this.cy,
r0: radiusExtent[0],
r: radiusExtent[1],
startAngle: -angleExtent[0] * RADIAN2,
endAngle: -angleExtent[1] * RADIAN2,
clockwise: angleAxis.inverse,
contain: function (x2, y2) {
var dx = x2 - this.cx
var dy = y2 - this.cy
var d22 = dx * dx + dy * dy - 1e-4
var r2 = this.r
var r0 = this.r0
return d22 <= r2 * r2 && d22 >= r0 * r0
},
}
}
Polar2.prototype.convertToPixel = function (ecModel, finder, value2) {
var coordSys = getCoordSys$2(finder)
return coordSys === this ? this.dataToPoint(value2) : null
}
Polar2.prototype.convertFromPixel = function (ecModel, finder, pixel) {
var coordSys = getCoordSys$2(finder)
return coordSys === this ? this.pointToData(pixel) : null
}
return Polar2
})()
function getCoordSys$2(finder) {
var seriesModel = finder.seriesModel
var polarModel = finder.polarModel
return (
(polarModel && polarModel.coordinateSystem) ||
(seriesModel && seriesModel.coordinateSystem)
)
}
var Polar$1 = Polar
function resizePolar(polar, polarModel, api) {
var center2 = polarModel.get('center')
var width = api.getWidth()
var height = api.getHeight()
polar.cx = parsePercent(center2[0], width)
polar.cy = parsePercent(center2[1], height)
var radiusAxis = polar.getRadiusAxis()
var size = Math.min(width, height) / 2
var radius = polarModel.get('radius')
if (radius == null) {
radius = [0, '100%']
} else if (!isArray$6(radius)) {
radius = [0, radius]
}
var parsedRadius = [
parsePercent(radius[0], size),
parsePercent(radius[1], size),
]
radiusAxis.inverse
? radiusAxis.setExtent(parsedRadius[1], parsedRadius[0])
: radiusAxis.setExtent(parsedRadius[0], parsedRadius[1])
}
function updatePolarScale(ecModel, api) {
var polar = this
var angleAxis = polar.getAngleAxis()
var radiusAxis = polar.getRadiusAxis()
angleAxis.scale.setExtent(Infinity, -Infinity)
radiusAxis.scale.setExtent(Infinity, -Infinity)
ecModel.eachSeries(function (seriesModel) {
if (seriesModel.coordinateSystem === polar) {
var data_1 = seriesModel.getData()
each$f(getDataDimensionsOnAxis(data_1, 'radius'), function (dim) {
radiusAxis.scale.unionExtentFromData(data_1, dim)
})
each$f(getDataDimensionsOnAxis(data_1, 'angle'), function (dim) {
angleAxis.scale.unionExtentFromData(data_1, dim)
})
}
})
niceScaleExtent(angleAxis.scale, angleAxis.model)
niceScaleExtent(radiusAxis.scale, radiusAxis.model)
if (angleAxis.type === 'category' && !angleAxis.onBand) {
var extent3 = angleAxis.getExtent()
var diff = 360 / angleAxis.scale.count()
angleAxis.inverse ? (extent3[1] += diff) : (extent3[1] -= diff)
angleAxis.setExtent(extent3[0], extent3[1])
}
}
function isAngleAxisModel(axisModel) {
return axisModel.mainType === 'angleAxis'
}
function setAxis(axis, axisModel) {
axis.type = axisModel.get('type')
axis.scale = createScaleByModel$1(axisModel)
axis.onBand = axisModel.get('boundaryGap') && axis.type === 'category'
axis.inverse = axisModel.get('inverse')
if (isAngleAxisModel(axisModel)) {
axis.inverse = axis.inverse !== axisModel.get('clockwise')
var startAngle = axisModel.get('startAngle')
axis.setExtent(startAngle, startAngle + (axis.inverse ? -360 : 360))
}
axisModel.axis = axis
axis.model = axisModel
}
var polarCreator = {
dimensions: polarDimensions,
create: function (ecModel, api) {
var polarList = []
ecModel.eachComponent('polar', function (polarModel, idx) {
var polar = new Polar$1(idx + '')
polar.update = updatePolarScale
var radiusAxis = polar.getRadiusAxis()
var angleAxis = polar.getAngleAxis()
var radiusAxisModel = polarModel.findAxisModel('radiusAxis')
var angleAxisModel = polarModel.findAxisModel('angleAxis')
setAxis(radiusAxis, radiusAxisModel)
setAxis(angleAxis, angleAxisModel)
resizePolar(polar, polarModel, api)
polarList.push(polar)
polarModel.coordinateSystem = polar
polar.model = polarModel
})
ecModel.eachSeries(function (seriesModel) {
if (seriesModel.get('coordinateSystem') === 'polar') {
var polarModel = seriesModel.getReferringComponents(
'polar',
SINGLE_REFERRING
).models[0]
seriesModel.coordinateSystem = polarModel.coordinateSystem
}
})
return polarList
},
}
var polarCreator$1 = polarCreator
var elementList = [
'axisLine',
'axisLabel',
'axisTick',
'minorTick',
'splitLine',
'minorSplitLine',
'splitArea',
]
function getAxisLineShape(polar, rExtent, angle2) {
rExtent[1] > rExtent[0] && (rExtent = rExtent.slice().reverse())
var start2 = polar.coordToPoint([rExtent[0], angle2])
var end2 = polar.coordToPoint([rExtent[1], angle2])
return {
x1: start2[0],
y1: start2[1],
x2: end2[0],
y2: end2[1],
}
}
function getRadiusIdx(polar) {
var radiusAxis = polar.getRadiusAxis()
return radiusAxis.inverse ? 0 : 1
}
function fixAngleOverlap(list2) {
var firstItem = list2[0]
var lastItem = list2[list2.length - 1]
if (
firstItem &&
lastItem &&
Math.abs(Math.abs(firstItem.coord - lastItem.coord) - 360) < 1e-4
) {
list2.pop()
}
}
var AngleAxisView = (function (_super) {
__extends$2(AngleAxisView2, _super)
function AngleAxisView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = AngleAxisView2.type
_this.axisPointerClass = 'PolarAxisPointer'
return _this
}
AngleAxisView2.prototype.render = function (angleAxisModel, ecModel) {
this.group.removeAll()
if (!angleAxisModel.get('show')) {
return
}
var angleAxis = angleAxisModel.axis
var polar = angleAxis.polar
var radiusExtent = polar.getRadiusAxis().getExtent()
var ticksAngles = angleAxis.getTicksCoords()
var minorTickAngles = angleAxis.getMinorTicksCoords()
var labels = map$1(angleAxis.getViewLabels(), function (labelItem) {
labelItem = clone$4(labelItem)
var scale2 = angleAxis.scale
var tickValue =
scale2.type === 'ordinal'
? scale2.getRawOrdinalNumber(labelItem.tickValue)
: labelItem.tickValue
labelItem.coord = angleAxis.dataToCoord(tickValue)
return labelItem
})
fixAngleOverlap(labels)
fixAngleOverlap(ticksAngles)
each$f(
elementList,
function (name2) {
if (
angleAxisModel.get([name2, 'show']) &&
(!angleAxis.scale.isBlank() || name2 === 'axisLine')
) {
angelAxisElementsBuilders[name2](
this.group,
angleAxisModel,
polar,
ticksAngles,
minorTickAngles,
radiusExtent,
labels
)
}
},
this
)
}
AngleAxisView2.type = 'angleAxis'
return AngleAxisView2
})(AxisView$1)
var angelAxisElementsBuilders = {
axisLine: function (
group,
angleAxisModel,
polar,
ticksAngles,
minorTickAngles,
radiusExtent
) {
var lineStyleModel = angleAxisModel.getModel(['axisLine', 'lineStyle'])
var rId = getRadiusIdx(polar)
var r0Id = rId ? 0 : 1
var shape
if (radiusExtent[r0Id] === 0) {
shape = new Circle$2({
shape: {
cx: polar.cx,
cy: polar.cy,
r: radiusExtent[rId],
},
style: lineStyleModel.getLineStyle(),
z2: 1,
silent: true,
})
} else {
shape = new Ring$1({
shape: {
cx: polar.cx,
cy: polar.cy,
r: radiusExtent[rId],
r0: radiusExtent[r0Id],
},
style: lineStyleModel.getLineStyle(),
z2: 1,
silent: true,
})
}
shape.style.fill = null
group.add(shape)
},
axisTick: function (
group,
angleAxisModel,
polar,
ticksAngles,
minorTickAngles,
radiusExtent
) {
var tickModel = angleAxisModel.getModel('axisTick')
var tickLen = (tickModel.get('inside') ? -1 : 1) * tickModel.get('length')
var radius = radiusExtent[getRadiusIdx(polar)]
var lines = map$1(ticksAngles, function (tickAngleItem) {
return new Line$4({
shape: getAxisLineShape(
polar,
[radius, radius + tickLen],
tickAngleItem.coord
),
})
})
group.add(
mergePath(lines, {
style: defaults(tickModel.getModel('lineStyle').getLineStyle(), {
stroke: angleAxisModel.get(['axisLine', 'lineStyle', 'color']),
}),
})
)
},
minorTick: function (
group,
angleAxisModel,
polar,
tickAngles,
minorTickAngles,
radiusExtent
) {
if (!minorTickAngles.length) {
return
}
var tickModel = angleAxisModel.getModel('axisTick')
var minorTickModel = angleAxisModel.getModel('minorTick')
var tickLen =
(tickModel.get('inside') ? -1 : 1) * minorTickModel.get('length')
var radius = radiusExtent[getRadiusIdx(polar)]
var lines = []
for (var i2 = 0; i2 < minorTickAngles.length; i2++) {
for (var k2 = 0; k2 < minorTickAngles[i2].length; k2++) {
lines.push(
new Line$4({
shape: getAxisLineShape(
polar,
[radius, radius + tickLen],
minorTickAngles[i2][k2].coord
),
})
)
}
}
group.add(
mergePath(lines, {
style: defaults(
minorTickModel.getModel('lineStyle').getLineStyle(),
defaults(tickModel.getLineStyle(), {
stroke: angleAxisModel.get(['axisLine', 'lineStyle', 'color']),
})
),
})
)
},
axisLabel: function (
group,
angleAxisModel,
polar,
ticksAngles,
minorTickAngles,
radiusExtent,
labels
) {
var rawCategoryData = angleAxisModel.getCategories(true)
var commonLabelModel = angleAxisModel.getModel('axisLabel')
var labelMargin = commonLabelModel.get('margin')
var triggerEvent2 = angleAxisModel.get('triggerEvent')
each$f(
labels,
function (labelItem, idx) {
var labelModel = commonLabelModel
var tickValue = labelItem.tickValue
var r2 = radiusExtent[getRadiusIdx(polar)]
var p2 = polar.coordToPoint([r2 + labelMargin, labelItem.coord])
var cx = polar.cx
var cy = polar.cy
var labelTextAlign =
Math.abs(p2[0] - cx) / r2 < 0.3
? 'center'
: p2[0] > cx
? 'left'
: 'right'
var labelTextVerticalAlign =
Math.abs(p2[1] - cy) / r2 < 0.3
? 'middle'
: p2[1] > cy
? 'top'
: 'bottom'
if (rawCategoryData && rawCategoryData[tickValue]) {
var rawCategoryItem = rawCategoryData[tickValue]
if (isObject$b(rawCategoryItem) && rawCategoryItem.textStyle) {
labelModel = new Model$1(
rawCategoryItem.textStyle,
commonLabelModel,
commonLabelModel.ecModel
)
}
}
var textEl = new ZRText$1({
silent: AxisBuilder$1.isLabelSilent(angleAxisModel),
style: createTextStyle$1(labelModel, {
x: p2[0],
y: p2[1],
fill:
labelModel.getTextColor() ||
angleAxisModel.get(['axisLine', 'lineStyle', 'color']),
text: labelItem.formattedLabel,
align: labelTextAlign,
verticalAlign: labelTextVerticalAlign,
}),
})
group.add(textEl)
if (triggerEvent2) {
var eventData = AxisBuilder$1.makeAxisEventDataBase(angleAxisModel)
eventData.targetType = 'axisLabel'
eventData.value = labelItem.rawLabel
getECData(textEl).eventData = eventData
}
},
this
)
},
splitLine: function (
group,
angleAxisModel,
polar,
ticksAngles,
minorTickAngles,
radiusExtent
) {
var splitLineModel = angleAxisModel.getModel('splitLine')
var lineStyleModel = splitLineModel.getModel('lineStyle')
var lineColors = lineStyleModel.get('color')
var lineCount = 0
lineColors = lineColors instanceof Array ? lineColors : [lineColors]
var splitLines = []
for (var i2 = 0; i2 < ticksAngles.length; i2++) {
var colorIndex = lineCount++ % lineColors.length
splitLines[colorIndex] = splitLines[colorIndex] || []
splitLines[colorIndex].push(
new Line$4({
shape: getAxisLineShape(polar, radiusExtent, ticksAngles[i2].coord),
})
)
}
for (var i2 = 0; i2 < splitLines.length; i2++) {
group.add(
mergePath(splitLines[i2], {
style: defaults(
{
stroke: lineColors[i2 % lineColors.length],
},
lineStyleModel.getLineStyle()
),
silent: true,
z: angleAxisModel.get('z'),
})
)
}
},
minorSplitLine: function (
group,
angleAxisModel,
polar,
ticksAngles,
minorTickAngles,
radiusExtent
) {
if (!minorTickAngles.length) {
return
}
var minorSplitLineModel = angleAxisModel.getModel('minorSplitLine')
var lineStyleModel = minorSplitLineModel.getModel('lineStyle')
var lines = []
for (var i2 = 0; i2 < minorTickAngles.length; i2++) {
for (var k2 = 0; k2 < minorTickAngles[i2].length; k2++) {
lines.push(
new Line$4({
shape: getAxisLineShape(
polar,
radiusExtent,
minorTickAngles[i2][k2].coord
),
})
)
}
}
group.add(
mergePath(lines, {
style: lineStyleModel.getLineStyle(),
silent: true,
z: angleAxisModel.get('z'),
})
)
},
splitArea: function (
group,
angleAxisModel,
polar,
ticksAngles,
minorTickAngles,
radiusExtent
) {
if (!ticksAngles.length) {
return
}
var splitAreaModel = angleAxisModel.getModel('splitArea')
var areaStyleModel = splitAreaModel.getModel('areaStyle')
var areaColors = areaStyleModel.get('color')
var lineCount = 0
areaColors = areaColors instanceof Array ? areaColors : [areaColors]
var splitAreas = []
var RADIAN2 = Math.PI / 180
var prevAngle = -ticksAngles[0].coord * RADIAN2
var r0 = Math.min(radiusExtent[0], radiusExtent[1])
var r1 = Math.max(radiusExtent[0], radiusExtent[1])
var clockwise = angleAxisModel.get('clockwise')
for (var i2 = 1, len2 = ticksAngles.length; i2 <= len2; i2++) {
var coord = i2 === len2 ? ticksAngles[0].coord : ticksAngles[i2].coord
var colorIndex = lineCount++ % areaColors.length
splitAreas[colorIndex] = splitAreas[colorIndex] || []
splitAreas[colorIndex].push(
new Sector$1({
shape: {
cx: polar.cx,
cy: polar.cy,
r0,
r: r1,
startAngle: prevAngle,
endAngle: -coord * RADIAN2,
clockwise,
},
silent: true,
})
)
prevAngle = -coord * RADIAN2
}
for (var i2 = 0; i2 < splitAreas.length; i2++) {
group.add(
mergePath(splitAreas[i2], {
style: defaults(
{
fill: areaColors[i2 % areaColors.length],
},
areaStyleModel.getAreaStyle()
),
silent: true,
})
)
}
},
}
var AngleAxisView$1 = AngleAxisView
var axisBuilderAttrs$1 = ['axisLine', 'axisTickLabel', 'axisName']
var selfBuilderAttrs$1 = ['splitLine', 'splitArea', 'minorSplitLine']
var RadiusAxisView = (function (_super) {
__extends$2(RadiusAxisView2, _super)
function RadiusAxisView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = RadiusAxisView2.type
_this.axisPointerClass = 'PolarAxisPointer'
return _this
}
RadiusAxisView2.prototype.render = function (radiusAxisModel, ecModel) {
this.group.removeAll()
if (!radiusAxisModel.get('show')) {
return
}
var oldAxisGroup = this._axisGroup
var newAxisGroup = (this._axisGroup = new Group$5())
this.group.add(newAxisGroup)
var radiusAxis = radiusAxisModel.axis
var polar = radiusAxis.polar
var angleAxis = polar.getAngleAxis()
var ticksCoords = radiusAxis.getTicksCoords()
var minorTicksCoords = radiusAxis.getMinorTicksCoords()
var axisAngle = angleAxis.getExtent()[0]
var radiusExtent = radiusAxis.getExtent()
var layout2 = layoutAxis(polar, radiusAxisModel, axisAngle)
var axisBuilder = new AxisBuilder$1(radiusAxisModel, layout2)
each$f(axisBuilderAttrs$1, axisBuilder.add, axisBuilder)
newAxisGroup.add(axisBuilder.getGroup())
groupTransition(oldAxisGroup, newAxisGroup, radiusAxisModel)
each$f(
selfBuilderAttrs$1,
function (name2) {
if (
radiusAxisModel.get([name2, 'show']) &&
!radiusAxis.scale.isBlank()
) {
axisElementBuilders$1[name2](
this.group,
radiusAxisModel,
polar,
axisAngle,
radiusExtent,
ticksCoords,
minorTicksCoords
)
}
},
this
)
}
RadiusAxisView2.type = 'radiusAxis'
return RadiusAxisView2
})(AxisView$1)
var axisElementBuilders$1 = {
splitLine: function (
group,
radiusAxisModel,
polar,
axisAngle,
radiusExtent,
ticksCoords
) {
var splitLineModel = radiusAxisModel.getModel('splitLine')
var lineStyleModel = splitLineModel.getModel('lineStyle')
var lineColors = lineStyleModel.get('color')
var lineCount = 0
lineColors = lineColors instanceof Array ? lineColors : [lineColors]
var splitLines = []
for (var i2 = 0; i2 < ticksCoords.length; i2++) {
var colorIndex = lineCount++ % lineColors.length
splitLines[colorIndex] = splitLines[colorIndex] || []
splitLines[colorIndex].push(
new Circle$2({
shape: {
cx: polar.cx,
cy: polar.cy,
r: Math.max(ticksCoords[i2].coord, 0),
},
})
)
}
for (var i2 = 0; i2 < splitLines.length; i2++) {
group.add(
mergePath(splitLines[i2], {
style: defaults(
{
stroke: lineColors[i2 % lineColors.length],
fill: null,
},
lineStyleModel.getLineStyle()
),
silent: true,
})
)
}
},
minorSplitLine: function (
group,
radiusAxisModel,
polar,
axisAngle,
radiusExtent,
ticksCoords,
minorTicksCoords
) {
if (!minorTicksCoords.length) {
return
}
var minorSplitLineModel = radiusAxisModel.getModel('minorSplitLine')
var lineStyleModel = minorSplitLineModel.getModel('lineStyle')
var lines = []
for (var i2 = 0; i2 < minorTicksCoords.length; i2++) {
for (var k2 = 0; k2 < minorTicksCoords[i2].length; k2++) {
lines.push(
new Circle$2({
shape: {
cx: polar.cx,
cy: polar.cy,
r: minorTicksCoords[i2][k2].coord,
},
})
)
}
}
group.add(
mergePath(lines, {
style: defaults(
{
fill: null,
},
lineStyleModel.getLineStyle()
),
silent: true,
})
)
},
splitArea: function (
group,
radiusAxisModel,
polar,
axisAngle,
radiusExtent,
ticksCoords
) {
if (!ticksCoords.length) {
return
}
var splitAreaModel = radiusAxisModel.getModel('splitArea')
var areaStyleModel = splitAreaModel.getModel('areaStyle')
var areaColors = areaStyleModel.get('color')
var lineCount = 0
areaColors = areaColors instanceof Array ? areaColors : [areaColors]
var splitAreas = []
var prevRadius = ticksCoords[0].coord
for (var i2 = 1; i2 < ticksCoords.length; i2++) {
var colorIndex = lineCount++ % areaColors.length
splitAreas[colorIndex] = splitAreas[colorIndex] || []
splitAreas[colorIndex].push(
new Sector$1({
shape: {
cx: polar.cx,
cy: polar.cy,
r0: prevRadius,
r: ticksCoords[i2].coord,
startAngle: 0,
endAngle: Math.PI * 2,
},
silent: true,
})
)
prevRadius = ticksCoords[i2].coord
}
for (var i2 = 0; i2 < splitAreas.length; i2++) {
group.add(
mergePath(splitAreas[i2], {
style: defaults(
{
fill: areaColors[i2 % areaColors.length],
},
areaStyleModel.getAreaStyle()
),
silent: true,
})
)
}
},
}
function layoutAxis(polar, radiusAxisModel, axisAngle) {
return {
position: [polar.cx, polar.cy],
rotation: (axisAngle / 180) * Math.PI,
labelDirection: -1,
tickDirection: -1,
nameDirection: 1,
labelRotate: radiusAxisModel.getModel('axisLabel').get('rotate'),
z2: 1,
}
}
var RadiusAxisView$1 = RadiusAxisView
function getSeriesStackId(seriesModel) {
return seriesModel.get('stack') || '__ec_stack_' + seriesModel.seriesIndex
}
function getAxisKey(polar, axis) {
return axis.dim + polar.model.componentIndex
}
function barLayoutPolar(seriesType2, ecModel, api) {
var lastStackCoords = {}
var barWidthAndOffset = calRadialBar(
filter(ecModel.getSeriesByType(seriesType2), function (seriesModel) {
return (
!ecModel.isSeriesFiltered(seriesModel) &&
seriesModel.coordinateSystem &&
seriesModel.coordinateSystem.type === 'polar'
)
})
)
ecModel.eachSeriesByType(seriesType2, function (seriesModel) {
if (seriesModel.coordinateSystem.type !== 'polar') {
return
}
var data2 = seriesModel.getData()
var polar = seriesModel.coordinateSystem
var baseAxis = polar.getBaseAxis()
var axisKey = getAxisKey(polar, baseAxis)
var stackId = getSeriesStackId(seriesModel)
var columnLayoutInfo = barWidthAndOffset[axisKey][stackId]
var columnOffset = columnLayoutInfo.offset
var columnWidth = columnLayoutInfo.width
var valueAxis2 = polar.getOtherAxis(baseAxis)
var cx = seriesModel.coordinateSystem.cx
var cy = seriesModel.coordinateSystem.cy
var barMinHeight = seriesModel.get('barMinHeight') || 0
var barMinAngle = seriesModel.get('barMinAngle') || 0
lastStackCoords[stackId] = lastStackCoords[stackId] || []
var valueDim = data2.mapDimension(valueAxis2.dim)
var baseDim = data2.mapDimension(baseAxis.dim)
var stacked = isDimensionStacked(data2, valueDim)
var clampLayout =
baseAxis.dim !== 'radius' || !seriesModel.get('roundCap', true)
var valueAxisStart = valueAxis2.dataToCoord(0)
for (var idx = 0, len2 = data2.count(); idx < len2; idx++) {
var value2 = data2.get(valueDim, idx)
var baseValue = data2.get(baseDim, idx)
var sign = value2 >= 0 ? 'p' : 'n'
var baseCoord = valueAxisStart
if (stacked) {
if (!lastStackCoords[stackId][baseValue]) {
lastStackCoords[stackId][baseValue] = {
p: valueAxisStart,
n: valueAxisStart,
}
}
baseCoord = lastStackCoords[stackId][baseValue][sign]
}
var r0 = void 0
var r2 = void 0
var startAngle = void 0
var endAngle = void 0
if (valueAxis2.dim === 'radius') {
var radiusSpan = valueAxis2.dataToCoord(value2) - valueAxisStart
var angle2 = baseAxis.dataToCoord(baseValue)
if (Math.abs(radiusSpan) < barMinHeight) {
radiusSpan = (radiusSpan < 0 ? -1 : 1) * barMinHeight
}
r0 = baseCoord
r2 = baseCoord + radiusSpan
startAngle = angle2 - columnOffset
endAngle = startAngle - columnWidth
stacked && (lastStackCoords[stackId][baseValue][sign] = r2)
} else {
var angleSpan =
valueAxis2.dataToCoord(value2, clampLayout) - valueAxisStart
var radius = baseAxis.dataToCoord(baseValue)
if (Math.abs(angleSpan) < barMinAngle) {
angleSpan = (angleSpan < 0 ? -1 : 1) * barMinAngle
}
r0 = radius + columnOffset
r2 = r0 + columnWidth
startAngle = baseCoord
endAngle = baseCoord + angleSpan
stacked && (lastStackCoords[stackId][baseValue][sign] = endAngle)
}
data2.setItemLayout(idx, {
cx,
cy,
r0,
r: r2,
startAngle: (-startAngle * Math.PI) / 180,
endAngle: (-endAngle * Math.PI) / 180,
clockwise: startAngle >= endAngle,
})
}
})
}
function calRadialBar(barSeries) {
var columnsMap = {}
each$f(barSeries, function (seriesModel, idx) {
var data2 = seriesModel.getData()
var polar = seriesModel.coordinateSystem
var baseAxis = polar.getBaseAxis()
var axisKey = getAxisKey(polar, baseAxis)
var axisExtent = baseAxis.getExtent()
var bandWidth =
baseAxis.type === 'category'
? baseAxis.getBandWidth()
: Math.abs(axisExtent[1] - axisExtent[0]) / data2.count()
var columnsOnAxis = columnsMap[axisKey] || {
bandWidth,
remainedWidth: bandWidth,
autoWidthCount: 0,
categoryGap: '20%',
gap: '30%',
stacks: {},
}
var stacks = columnsOnAxis.stacks
columnsMap[axisKey] = columnsOnAxis
var stackId = getSeriesStackId(seriesModel)
if (!stacks[stackId]) {
columnsOnAxis.autoWidthCount++
}
stacks[stackId] = stacks[stackId] || {
width: 0,
maxWidth: 0,
}
var barWidth = parsePercent(seriesModel.get('barWidth'), bandWidth)
var barMaxWidth = parsePercent(seriesModel.get('barMaxWidth'), bandWidth)
var barGap = seriesModel.get('barGap')
var barCategoryGap = seriesModel.get('barCategoryGap')
if (barWidth && !stacks[stackId].width) {
barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth)
stacks[stackId].width = barWidth
columnsOnAxis.remainedWidth -= barWidth
}
barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth)
barGap != null && (columnsOnAxis.gap = barGap)
barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap)
})
var result = {}
each$f(columnsMap, function (columnsOnAxis, coordSysName) {
result[coordSysName] = {}
var stacks = columnsOnAxis.stacks
var bandWidth = columnsOnAxis.bandWidth
var categoryGap = parsePercent(columnsOnAxis.categoryGap, bandWidth)
var barGapPercent = parsePercent(columnsOnAxis.gap, 1)
var remainedWidth = columnsOnAxis.remainedWidth
var autoWidthCount = columnsOnAxis.autoWidthCount
var autoWidth =
(remainedWidth - categoryGap) /
(autoWidthCount + (autoWidthCount - 1) * barGapPercent)
autoWidth = Math.max(autoWidth, 0)
each$f(stacks, function (column, stack) {
var maxWidth = column.maxWidth
if (maxWidth && maxWidth < autoWidth) {
maxWidth = Math.min(maxWidth, remainedWidth)
if (column.width) {
maxWidth = Math.min(maxWidth, column.width)
}
remainedWidth -= maxWidth
column.width = maxWidth
autoWidthCount--
}
})
autoWidth =
(remainedWidth - categoryGap) /
(autoWidthCount + (autoWidthCount - 1) * barGapPercent)
autoWidth = Math.max(autoWidth, 0)
var widthSum = 0
var lastColumn
each$f(stacks, function (column, idx) {
if (!column.width) {
column.width = autoWidth
}
lastColumn = column
widthSum += column.width * (1 + barGapPercent)
})
if (lastColumn) {
widthSum -= lastColumn.width * barGapPercent
}
var offset2 = -widthSum / 2
each$f(stacks, function (column, stackId) {
result[coordSysName][stackId] = result[coordSysName][stackId] || {
offset: offset2,
width: column.width,
}
offset2 += column.width * (1 + barGapPercent)
})
})
return result
}
var angleAxisExtraOption = {
startAngle: 90,
clockwise: true,
splitNumber: 12,
axisLabel: {
rotate: 0,
},
}
var radiusAxisExtraOption = {
splitNumber: 5,
}
var PolarView = (function (_super) {
__extends$2(PolarView2, _super)
function PolarView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = PolarView2.type
return _this
}
PolarView2.type = 'polar'
return PolarView2
})(ComponentView$1)
function install$q(registers) {
use(install$s)
AxisView$1.registerAxisPointerClass('PolarAxisPointer', PolarAxisPointer$1)
registers.registerCoordinateSystem('polar', polarCreator$1)
registers.registerComponentModel(PolarModel$1)
registers.registerComponentView(PolarView)
axisModelCreator(registers, 'angle', AngleAxisModel, angleAxisExtraOption)
axisModelCreator(registers, 'radius', RadiusAxisModel, radiusAxisExtraOption)
registers.registerComponentView(AngleAxisView$1)
registers.registerComponentView(RadiusAxisView$1)
registers.registerLayout(curry$1(barLayoutPolar, 'bar'))
}
function layout$1(axisModel, opt) {
opt = opt || {}
var single = axisModel.coordinateSystem
var axis = axisModel.axis
var layout2 = {}
var axisPosition = axis.position
var orient = axis.orient
var rect = single.getRect()
var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height]
var positionMap = {
horizontal: {
top: rectBound[2],
bottom: rectBound[3],
},
vertical: {
left: rectBound[0],
right: rectBound[1],
},
}
layout2.position = [
orient === 'vertical' ? positionMap.vertical[axisPosition] : rectBound[0],
orient === 'horizontal'
? positionMap.horizontal[axisPosition]
: rectBound[3],
]
var r2 = {
horizontal: 0,
vertical: 1,
}
layout2.rotation = (Math.PI / 2) * r2[orient]
var directionMap = {
top: -1,
bottom: 1,
right: 1,
left: -1,
}
layout2.labelDirection =
layout2.tickDirection =
layout2.nameDirection =
directionMap[axisPosition]
if (axisModel.get(['axisTick', 'inside'])) {
layout2.tickDirection = -layout2.tickDirection
}
if (retrieve(opt.labelInside, axisModel.get(['axisLabel', 'inside']))) {
layout2.labelDirection = -layout2.labelDirection
}
var labelRotation = opt.rotate
labelRotation == null &&
(labelRotation = axisModel.get(['axisLabel', 'rotate']))
layout2.labelRotation =
axisPosition === 'top' ? -labelRotation : labelRotation
layout2.z2 = 1
return layout2
}
var axisBuilderAttrs = ['axisLine', 'axisTickLabel', 'axisName']
var selfBuilderAttrs = ['splitArea', 'splitLine']
var SingleAxisView = (function (_super) {
__extends$2(SingleAxisView2, _super)
function SingleAxisView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = SingleAxisView2.type
_this.axisPointerClass = 'SingleAxisPointer'
return _this
}
SingleAxisView2.prototype.render = function (
axisModel,
ecModel,
api,
payload
) {
var group = this.group
group.removeAll()
var oldAxisGroup = this._axisGroup
this._axisGroup = new Group$5()
var layout2 = layout$1(axisModel)
var axisBuilder = new AxisBuilder$1(axisModel, layout2)
each$f(axisBuilderAttrs, axisBuilder.add, axisBuilder)
group.add(this._axisGroup)
group.add(axisBuilder.getGroup())
each$f(
selfBuilderAttrs,
function (name2) {
if (axisModel.get([name2, 'show'])) {
axisElementBuilders[name2](
this,
this.group,
this._axisGroup,
axisModel
)
}
},
this
)
groupTransition(oldAxisGroup, this._axisGroup, axisModel)
_super.prototype.render.call(this, axisModel, ecModel, api, payload)
}
SingleAxisView2.prototype.remove = function () {
rectCoordAxisHandleRemove(this)
}
SingleAxisView2.type = 'singleAxis'
return SingleAxisView2
})(AxisView$1)
var axisElementBuilders = {
splitLine: function (axisView, group, axisGroup, axisModel) {
var axis = axisModel.axis
if (axis.scale.isBlank()) {
return
}
var splitLineModel = axisModel.getModel('splitLine')
var lineStyleModel = splitLineModel.getModel('lineStyle')
var lineColors = lineStyleModel.get('color')
lineColors = lineColors instanceof Array ? lineColors : [lineColors]
var lineWidth = lineStyleModel.get('width')
var gridRect = axisModel.coordinateSystem.getRect()
var isHorizontal2 = axis.isHorizontal()
var splitLines = []
var lineCount = 0
var ticksCoords = axis.getTicksCoords({
tickModel: splitLineModel,
})
var p1 = []
var p2 = []
for (var i2 = 0; i2 < ticksCoords.length; ++i2) {
var tickCoord = axis.toGlobalCoord(ticksCoords[i2].coord)
if (isHorizontal2) {
p1[0] = tickCoord
p1[1] = gridRect.y
p2[0] = tickCoord
p2[1] = gridRect.y + gridRect.height
} else {
p1[0] = gridRect.x
p1[1] = tickCoord
p2[0] = gridRect.x + gridRect.width
p2[1] = tickCoord
}
var line = new Line$4({
shape: {
x1: p1[0],
y1: p1[1],
x2: p2[0],
y2: p2[1],
},
silent: true,
})
subPixelOptimizeLine(line.shape, lineWidth)
var colorIndex = lineCount++ % lineColors.length
splitLines[colorIndex] = splitLines[colorIndex] || []
splitLines[colorIndex].push(line)
}
var lineStyle = lineStyleModel.getLineStyle(['color'])
for (var i2 = 0; i2 < splitLines.length; ++i2) {
group.add(
mergePath(splitLines[i2], {
style: defaults(
{
stroke: lineColors[i2 % lineColors.length],
},
lineStyle
),
silent: true,
})
)
}
},
splitArea: function (axisView, group, axisGroup, axisModel) {
rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, axisModel)
},
}
var SingleAxisView$1 = SingleAxisView
var SingleAxisModel = (function (_super) {
__extends$2(SingleAxisModel2, _super)
function SingleAxisModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = SingleAxisModel2.type
return _this
}
SingleAxisModel2.prototype.getCoordSysModel = function () {
return this
}
SingleAxisModel2.type = 'singleAxis'
SingleAxisModel2.layoutMode = 'box'
SingleAxisModel2.defaultOption = {
left: '5%',
top: '5%',
right: '5%',
bottom: '5%',
type: 'value',
position: 'bottom',
orient: 'horizontal',
axisLine: {
show: true,
lineStyle: {
width: 1,
type: 'solid',
},
},
tooltip: {
show: true,
},
axisTick: {
show: true,
length: 6,
lineStyle: {
width: 1,
},
},
axisLabel: {
show: true,
interval: 'auto',
},
splitLine: {
show: true,
lineStyle: {
type: 'dashed',
opacity: 0.2,
},
},
}
return SingleAxisModel2
})(ComponentModel$1)
mixin(SingleAxisModel, AxisModelCommonMixin.prototype)
var SingleAxisModel$1 = SingleAxisModel
var SingleAxis = (function (_super) {
__extends$2(SingleAxis2, _super)
function SingleAxis2(dim, scale2, coordExtent, axisType, position2) {
var _this = _super.call(this, dim, scale2, coordExtent) || this
_this.type = axisType || 'value'
_this.position = position2 || 'bottom'
return _this
}
SingleAxis2.prototype.isHorizontal = function () {
var position2 = this.position
return position2 === 'top' || position2 === 'bottom'
}
SingleAxis2.prototype.pointToData = function (point, clamp2) {
return this.coordinateSystem.pointToData(point)[0]
}
return SingleAxis2
})(Axis$1)
var SingleAxis$1 = SingleAxis
var singleDimensions = ['single']
var Single = (function () {
function Single2(axisModel, ecModel, api) {
this.type = 'single'
this.dimension = 'single'
this.dimensions = singleDimensions
this.axisPointerEnabled = true
this.model = axisModel
this._init(axisModel, ecModel, api)
}
Single2.prototype._init = function (axisModel, ecModel, api) {
var dim = this.dimension
var axis = new SingleAxis$1(
dim,
createScaleByModel$1(axisModel),
[0, 0],
axisModel.get('type'),
axisModel.get('position')
)
var isCategory2 = axis.type === 'category'
axis.onBand = isCategory2 && axisModel.get('boundaryGap')
axis.inverse = axisModel.get('inverse')
axis.orient = axisModel.get('orient')
axisModel.axis = axis
axis.model = axisModel
axis.coordinateSystem = this
this._axis = axis
}
Single2.prototype.update = function (ecModel, api) {
ecModel.eachSeries(function (seriesModel) {
if (seriesModel.coordinateSystem === this) {
var data_1 = seriesModel.getData()
each$f(
data_1.mapDimensionsAll(this.dimension),
function (dim) {
this._axis.scale.unionExtentFromData(data_1, dim)
},
this
)
niceScaleExtent(this._axis.scale, this._axis.model)
}
}, this)
}
Single2.prototype.resize = function (axisModel, api) {
this._rect = getLayoutRect(
{
left: axisModel.get('left'),
top: axisModel.get('top'),
right: axisModel.get('right'),
bottom: axisModel.get('bottom'),
width: axisModel.get('width'),
height: axisModel.get('height'),
},
{
width: api.getWidth(),
height: api.getHeight(),
}
)
this._adjustAxis()
}
Single2.prototype.getRect = function () {
return this._rect
}
Single2.prototype._adjustAxis = function () {
var rect = this._rect
var axis = this._axis
var isHorizontal2 = axis.isHorizontal()
var extent3 = isHorizontal2 ? [0, rect.width] : [0, rect.height]
var idx = axis.inverse ? 1 : 0
axis.setExtent(extent3[idx], extent3[1 - idx])
this._updateAxisTransform(axis, isHorizontal2 ? rect.x : rect.y)
}
Single2.prototype._updateAxisTransform = function (axis, coordBase) {
var axisExtent = axis.getExtent()
var extentSum = axisExtent[0] + axisExtent[1]
var isHorizontal2 = axis.isHorizontal()
axis.toGlobalCoord = isHorizontal2
? function (coord) {
return coord + coordBase
}
: function (coord) {
return extentSum - coord + coordBase
}
axis.toLocalCoord = isHorizontal2
? function (coord) {
return coord - coordBase
}
: function (coord) {
return extentSum - coord + coordBase
}
}
Single2.prototype.getAxis = function () {
return this._axis
}
Single2.prototype.getBaseAxis = function () {
return this._axis
}
Single2.prototype.getAxes = function () {
return [this._axis]
}
Single2.prototype.getTooltipAxes = function () {
return {
baseAxes: [this.getAxis()],
otherAxes: [],
}
}
Single2.prototype.containPoint = function (point) {
var rect = this.getRect()
var axis = this.getAxis()
var orient = axis.orient
if (orient === 'horizontal') {
return (
axis.contain(axis.toLocalCoord(point[0])) &&
point[1] >= rect.y &&
point[1] <= rect.y + rect.height
)
} else {
return (
axis.contain(axis.toLocalCoord(point[1])) &&
point[0] >= rect.y &&
point[0] <= rect.y + rect.height
)
}
}
Single2.prototype.pointToData = function (point) {
var axis = this.getAxis()
return [
axis.coordToData(
axis.toLocalCoord(point[axis.orient === 'horizontal' ? 0 : 1])
),
]
}
Single2.prototype.dataToPoint = function (val2) {
var axis = this.getAxis()
var rect = this.getRect()
var pt3 = []
var idx = axis.orient === 'horizontal' ? 0 : 1
if (val2 instanceof Array) {
val2 = val2[0]
}
pt3[idx] = axis.toGlobalCoord(axis.dataToCoord(+val2))
pt3[1 - idx] =
idx === 0 ? rect.y + rect.height / 2 : rect.x + rect.width / 2
return pt3
}
Single2.prototype.convertToPixel = function (ecModel, finder, value2) {
var coordSys = getCoordSys$1(finder)
return coordSys === this ? this.dataToPoint(value2) : null
}
Single2.prototype.convertFromPixel = function (ecModel, finder, pixel) {
var coordSys = getCoordSys$1(finder)
return coordSys === this ? this.pointToData(pixel) : null
}
return Single2
})()
function getCoordSys$1(finder) {
var seriesModel = finder.seriesModel
var singleModel = finder.singleAxisModel
return (
(singleModel && singleModel.coordinateSystem) ||
(seriesModel && seriesModel.coordinateSystem)
)
}
function create(ecModel, api) {
var singles = []
ecModel.eachComponent('singleAxis', function (axisModel, idx) {
var single = new Single(axisModel, ecModel, api)
single.name = 'single_' + idx
single.resize(axisModel, api)
axisModel.coordinateSystem = single
singles.push(single)
})
ecModel.eachSeries(function (seriesModel) {
if (seriesModel.get('coordinateSystem') === 'singleAxis') {
var singleAxisModel = seriesModel.getReferringComponents(
'singleAxis',
SINGLE_REFERRING
).models[0]
seriesModel.coordinateSystem =
singleAxisModel && singleAxisModel.coordinateSystem
}
})
return singles
}
var singleCreator = {
create,
dimensions: singleDimensions,
}
var singleCreator$1 = singleCreator
var XY$1 = ['x', 'y']
var WH$1 = ['width', 'height']
var SingleAxisPointer = (function (_super) {
__extends$2(SingleAxisPointer2, _super)
function SingleAxisPointer2() {
return (_super !== null && _super.apply(this, arguments)) || this
}
SingleAxisPointer2.prototype.makeElOption = function (
elOption,
value2,
axisModel,
axisPointerModel,
api
) {
var axis = axisModel.axis
var coordSys = axis.coordinateSystem
var otherExtent = getGlobalExtent(coordSys, 1 - getPointDimIndex(axis))
var pixelValue = coordSys.dataToPoint(value2)[0]
var axisPointerType = axisPointerModel.get('type')
if (axisPointerType && axisPointerType !== 'none') {
var elStyle = buildElStyle(axisPointerModel)
var pointerOption = pointerShapeBuilder[axisPointerType](
axis,
pixelValue,
otherExtent
)
pointerOption.style = elStyle
elOption.graphicKey = pointerOption.type
elOption.pointer = pointerOption
}
var layoutInfo = layout$1(axisModel)
buildCartesianSingleLabelElOption(
value2,
elOption,
layoutInfo,
axisModel,
axisPointerModel,
api
)
}
SingleAxisPointer2.prototype.getHandleTransform = function (
value2,
axisModel,
axisPointerModel
) {
var layoutInfo = layout$1(axisModel, {
labelInside: false,
})
layoutInfo.labelMargin = axisPointerModel.get(['handle', 'margin'])
var position2 = getTransformedPosition(axisModel.axis, value2, layoutInfo)
return {
x: position2[0],
y: position2[1],
rotation:
layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0),
}
}
SingleAxisPointer2.prototype.updateHandleTransform = function (
transform3,
delta,
axisModel,
axisPointerModel
) {
var axis = axisModel.axis
var coordSys = axis.coordinateSystem
var dimIndex = getPointDimIndex(axis)
var axisExtent = getGlobalExtent(coordSys, dimIndex)
var currPosition = [transform3.x, transform3.y]
currPosition[dimIndex] += delta[dimIndex]
currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex])
currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex])
var otherExtent = getGlobalExtent(coordSys, 1 - dimIndex)
var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2
var cursorPoint = [cursorOtherValue, cursorOtherValue]
cursorPoint[dimIndex] = currPosition[dimIndex]
return {
x: currPosition[0],
y: currPosition[1],
rotation: transform3.rotation,
cursorPoint,
tooltipOption: {
verticalAlign: 'middle',
},
}
}
return SingleAxisPointer2
})(BaseAxisPointer$1)
var pointerShapeBuilder = {
line: function (axis, pixelValue, otherExtent) {
var targetShape = makeLineShape(
[pixelValue, otherExtent[0]],
[pixelValue, otherExtent[1]],
getPointDimIndex(axis)
)
return {
type: 'Line',
subPixelOptimize: true,
shape: targetShape,
}
},
shadow: function (axis, pixelValue, otherExtent) {
var bandWidth = axis.getBandWidth()
var span = otherExtent[1] - otherExtent[0]
return {
type: 'Rect',
shape: makeRectShape(
[pixelValue - bandWidth / 2, otherExtent[0]],
[bandWidth, span],
getPointDimIndex(axis)
),
}
},
}
function getPointDimIndex(axis) {
return axis.isHorizontal() ? 0 : 1
}
function getGlobalExtent(coordSys, dimIndex) {
var rect = coordSys.getRect()
return [rect[XY$1[dimIndex]], rect[XY$1[dimIndex]] + rect[WH$1[dimIndex]]]
}
var SingleAxisPointer$1 = SingleAxisPointer
var SingleView = (function (_super) {
__extends$2(SingleView2, _super)
function SingleView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = SingleView2.type
return _this
}
SingleView2.type = 'single'
return SingleView2
})(ComponentView$1)
function install$p(registers) {
use(install$s)
AxisView$1.registerAxisPointerClass('SingleAxisPointer', SingleAxisPointer$1)
registers.registerComponentView(SingleView)
registers.registerComponentView(SingleAxisView$1)
registers.registerComponentModel(SingleAxisModel$1)
axisModelCreator(
registers,
'single',
SingleAxisModel$1,
SingleAxisModel$1.defaultOption
)
registers.registerCoordinateSystem('single', singleCreator$1)
}
var CalendarModel = (function (_super) {
__extends$2(CalendarModel2, _super)
function CalendarModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = CalendarModel2.type
return _this
}
CalendarModel2.prototype.init = function (option2, parentModel, ecModel) {
var inputPositionParams = getLayoutParams(option2)
_super.prototype.init.apply(this, arguments)
mergeAndNormalizeLayoutParams$1(option2, inputPositionParams)
}
CalendarModel2.prototype.mergeOption = function (option2) {
_super.prototype.mergeOption.apply(this, arguments)
mergeAndNormalizeLayoutParams$1(this.option, option2)
}
CalendarModel2.prototype.getCellSize = function () {
return this.option.cellSize
}
CalendarModel2.type = 'calendar'
CalendarModel2.defaultOption = {
z: 2,
left: 80,
top: 60,
cellSize: 20,
orient: 'horizontal',
splitLine: {
show: true,
lineStyle: {
color: '#000',
width: 1,
type: 'solid',
},
},
itemStyle: {
color: '#fff',
borderWidth: 1,
borderColor: '#ccc',
},
dayLabel: {
show: true,
firstDay: 0,
position: 'start',
margin: '50%',
color: '#000',
},
monthLabel: {
show: true,
position: 'start',
margin: 5,
align: 'center',
formatter: null,
color: '#000',
},
yearLabel: {
show: true,
position: null,
margin: 30,
formatter: null,
color: '#ccc',
fontFamily: 'sans-serif',
fontWeight: 'bolder',
fontSize: 20,
},
}
return CalendarModel2
})(ComponentModel$1)
function mergeAndNormalizeLayoutParams$1(target2, raw) {
var cellSize = target2.cellSize
var cellSizeArr
if (!isArray$6(cellSize)) {
cellSizeArr = target2.cellSize = [cellSize, cellSize]
} else {
cellSizeArr = cellSize
}
if (cellSizeArr.length === 1) {
cellSizeArr[1] = cellSizeArr[0]
}
var ignoreSize = map$1([0, 1], function (hvIdx) {
if (sizeCalculable(raw, hvIdx)) {
cellSizeArr[hvIdx] = 'auto'
}
return cellSizeArr[hvIdx] != null && cellSizeArr[hvIdx] !== 'auto'
})
mergeLayoutParam(target2, raw, {
type: 'box',
ignoreSize,
})
}
var CalendarModel$1 = CalendarModel
var CalendarView = (function (_super) {
__extends$2(CalendarView2, _super)
function CalendarView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = CalendarView2.type
return _this
}
CalendarView2.prototype.render = function (calendarModel, ecModel, api) {
var group = this.group
group.removeAll()
var coordSys = calendarModel.coordinateSystem
var rangeData = coordSys.getRangeInfo()
var orient = coordSys.getOrient()
var localeModel = ecModel.getLocaleModel()
this._renderDayRect(calendarModel, rangeData, group)
this._renderLines(calendarModel, rangeData, orient, group)
this._renderYearText(calendarModel, rangeData, orient, group)
this._renderMonthText(calendarModel, localeModel, orient, group)
this._renderWeekText(calendarModel, localeModel, rangeData, orient, group)
}
CalendarView2.prototype._renderDayRect = function (
calendarModel,
rangeData,
group
) {
var coordSys = calendarModel.coordinateSystem
var itemRectStyleModel = calendarModel.getModel('itemStyle').getItemStyle()
var sw = coordSys.getCellWidth()
var sh = coordSys.getCellHeight()
for (
var i2 = rangeData.start.time;
i2 <= rangeData.end.time;
i2 = coordSys.getNextNDay(i2, 1).time
) {
var point = coordSys.dataToRect([i2], false).tl
var rect = new Rect$4({
shape: {
x: point[0],
y: point[1],
width: sw,
height: sh,
},
cursor: 'default',
style: itemRectStyleModel,
})
group.add(rect)
}
}
CalendarView2.prototype._renderLines = function (
calendarModel,
rangeData,
orient,
group
) {
var self2 = this
var coordSys = calendarModel.coordinateSystem
var lineStyleModel = calendarModel
.getModel(['splitLine', 'lineStyle'])
.getLineStyle()
var show = calendarModel.get(['splitLine', 'show'])
var lineWidth = lineStyleModel.lineWidth
this._tlpoints = []
this._blpoints = []
this._firstDayOfMonth = []
this._firstDayPoints = []
var firstDay = rangeData.start
for (var i2 = 0; firstDay.time <= rangeData.end.time; i2++) {
addPoints(firstDay.formatedDate)
if (i2 === 0) {
firstDay = coordSys.getDateInfo(
rangeData.start.y + '-' + rangeData.start.m
)
}
var date4 = firstDay.date
date4.setMonth(date4.getMonth() + 1)
firstDay = coordSys.getDateInfo(date4)
}
addPoints(coordSys.getNextNDay(rangeData.end.time, 1).formatedDate)
function addPoints(date5) {
self2._firstDayOfMonth.push(coordSys.getDateInfo(date5))
self2._firstDayPoints.push(coordSys.dataToRect([date5], false).tl)
var points2 = self2._getLinePointsOfOneWeek(calendarModel, date5, orient)
self2._tlpoints.push(points2[0])
self2._blpoints.push(points2[points2.length - 1])
show && self2._drawSplitline(points2, lineStyleModel, group)
}
show &&
this._drawSplitline(
self2._getEdgesPoints(self2._tlpoints, lineWidth, orient),
lineStyleModel,
group
)
show &&
this._drawSplitline(
self2._getEdgesPoints(self2._blpoints, lineWidth, orient),
lineStyleModel,
group
)
}
CalendarView2.prototype._getEdgesPoints = function (
points2,
lineWidth,
orient
) {
var rs2 = [points2[0].slice(), points2[points2.length - 1].slice()]
var idx = orient === 'horizontal' ? 0 : 1
rs2[0][idx] = rs2[0][idx] - lineWidth / 2
rs2[1][idx] = rs2[1][idx] + lineWidth / 2
return rs2
}
CalendarView2.prototype._drawSplitline = function (
points2,
lineStyle,
group
) {
var poyline = new Polyline$3({
z2: 20,
shape: {
points: points2,
},
style: lineStyle,
})
group.add(poyline)
}
CalendarView2.prototype._getLinePointsOfOneWeek = function (
calendarModel,
date4,
orient
) {
var coordSys = calendarModel.coordinateSystem
var parsedDate = coordSys.getDateInfo(date4)
var points2 = []
for (var i2 = 0; i2 < 7; i2++) {
var tmpD = coordSys.getNextNDay(parsedDate.time, i2)
var point = coordSys.dataToRect([tmpD.time], false)
points2[2 * tmpD.day] = point.tl
points2[2 * tmpD.day + 1] = point[orient === 'horizontal' ? 'bl' : 'tr']
}
return points2
}
CalendarView2.prototype._formatterLabel = function (formatter2, params2) {
if (isString$2(formatter2) && formatter2) {
return formatTplSimple(formatter2, params2)
}
if (isFunction$4(formatter2)) {
return formatter2(params2)
}
return params2.nameMap
}
CalendarView2.prototype._yearTextPositionControl = function (
textEl,
point,
orient,
position2,
margin
) {
var x2 = point[0]
var y2 = point[1]
var aligns = ['center', 'bottom']
if (position2 === 'bottom') {
y2 += margin
aligns = ['center', 'top']
} else if (position2 === 'left') {
x2 -= margin
} else if (position2 === 'right') {
x2 += margin
aligns = ['center', 'top']
} else {
y2 -= margin
}
var rotate2 = 0
if (position2 === 'left' || position2 === 'right') {
rotate2 = Math.PI / 2
}
return {
rotation: rotate2,
x: x2,
y: y2,
style: {
align: aligns[0],
verticalAlign: aligns[1],
},
}
}
CalendarView2.prototype._renderYearText = function (
calendarModel,
rangeData,
orient,
group
) {
var yearLabel = calendarModel.getModel('yearLabel')
if (!yearLabel.get('show')) {
return
}
var margin = yearLabel.get('margin')
var pos = yearLabel.get('position')
if (!pos) {
pos = orient !== 'horizontal' ? 'top' : 'left'
}
var points2 = [this._tlpoints[this._tlpoints.length - 1], this._blpoints[0]]
var xc = (points2[0][0] + points2[1][0]) / 2
var yc = (points2[0][1] + points2[1][1]) / 2
var idx = orient === 'horizontal' ? 0 : 1
var posPoints = {
top: [xc, points2[idx][1]],
bottom: [xc, points2[1 - idx][1]],
left: [points2[1 - idx][0], yc],
right: [points2[idx][0], yc],
}
var name2 = rangeData.start.y
if (+rangeData.end.y > +rangeData.start.y) {
name2 = name2 + '-' + rangeData.end.y
}
var formatter2 = yearLabel.get('formatter')
var params2 = {
start: rangeData.start.y,
end: rangeData.end.y,
nameMap: name2,
}
var content2 = this._formatterLabel(formatter2, params2)
var yearText = new ZRText$1({
z2: 30,
style: createTextStyle$1(yearLabel, {
text: content2,
}),
})
yearText.attr(
this._yearTextPositionControl(
yearText,
posPoints[pos],
orient,
pos,
margin
)
)
group.add(yearText)
}
CalendarView2.prototype._monthTextPositionControl = function (
point,
isCenter,
orient,
position2,
margin
) {
var align = 'left'
var vAlign = 'top'
var x2 = point[0]
var y2 = point[1]
if (orient === 'horizontal') {
y2 = y2 + margin
if (isCenter) {
align = 'center'
}
if (position2 === 'start') {
vAlign = 'bottom'
}
} else {
x2 = x2 + margin
if (isCenter) {
vAlign = 'middle'
}
if (position2 === 'start') {
align = 'right'
}
}
return {
x: x2,
y: y2,
align,
verticalAlign: vAlign,
}
}
CalendarView2.prototype._renderMonthText = function (
calendarModel,
localeModel,
orient,
group
) {
var monthLabel = calendarModel.getModel('monthLabel')
if (!monthLabel.get('show')) {
return
}
var nameMap = monthLabel.get('nameMap')
var margin = monthLabel.get('margin')
var pos = monthLabel.get('position')
var align = monthLabel.get('align')
var termPoints = [this._tlpoints, this._blpoints]
if (!nameMap || isString$2(nameMap)) {
if (nameMap) {
localeModel = getLocaleModel(nameMap) || localeModel
}
nameMap = localeModel.get(['time', 'monthAbbr']) || []
}
var idx = pos === 'start' ? 0 : 1
var axis = orient === 'horizontal' ? 0 : 1
margin = pos === 'start' ? -margin : margin
var isCenter = align === 'center'
for (var i2 = 0; i2 < termPoints[idx].length - 1; i2++) {
var tmp = termPoints[idx][i2].slice()
var firstDay = this._firstDayOfMonth[i2]
if (isCenter) {
var firstDayPoints = this._firstDayPoints[i2]
tmp[axis] = (firstDayPoints[axis] + termPoints[0][i2 + 1][axis]) / 2
}
var formatter2 = monthLabel.get('formatter')
var name_1 = nameMap[+firstDay.m - 1]
var params2 = {
yyyy: firstDay.y,
yy: (firstDay.y + '').slice(2),
MM: firstDay.m,
M: +firstDay.m,
nameMap: name_1,
}
var content2 = this._formatterLabel(formatter2, params2)
var monthText = new ZRText$1({
z2: 30,
style: extend(
createTextStyle$1(monthLabel, {
text: content2,
}),
this._monthTextPositionControl(tmp, isCenter, orient, pos, margin)
),
})
group.add(monthText)
}
}
CalendarView2.prototype._weekTextPositionControl = function (
point,
orient,
position2,
margin,
cellSize
) {
var align = 'center'
var vAlign = 'middle'
var x2 = point[0]
var y2 = point[1]
var isStart = position2 === 'start'
if (orient === 'horizontal') {
x2 = x2 + margin + ((isStart ? 1 : -1) * cellSize[0]) / 2
align = isStart ? 'right' : 'left'
} else {
y2 = y2 + margin + ((isStart ? 1 : -1) * cellSize[1]) / 2
vAlign = isStart ? 'bottom' : 'top'
}
return {
x: x2,
y: y2,
align,
verticalAlign: vAlign,
}
}
CalendarView2.prototype._renderWeekText = function (
calendarModel,
localeModel,
rangeData,
orient,
group
) {
var dayLabel = calendarModel.getModel('dayLabel')
if (!dayLabel.get('show')) {
return
}
var coordSys = calendarModel.coordinateSystem
var pos = dayLabel.get('position')
var nameMap = dayLabel.get('nameMap')
var margin = dayLabel.get('margin')
var firstDayOfWeek = coordSys.getFirstDayOfWeek()
if (!nameMap || isString$2(nameMap)) {
if (nameMap) {
localeModel = getLocaleModel(nameMap) || localeModel
}
var dayOfWeekShort = localeModel.get(['time', 'dayOfWeekShort'])
nameMap =
dayOfWeekShort ||
map$1(localeModel.get(['time', 'dayOfWeekAbbr']), function (val2) {
return val2[0]
})
}
var start2 = coordSys.getNextNDay(
rangeData.end.time,
7 - rangeData.lweek
).time
var cellSize = [coordSys.getCellWidth(), coordSys.getCellHeight()]
margin = parsePercent(margin, Math.min(cellSize[1], cellSize[0]))
if (pos === 'start') {
start2 = coordSys.getNextNDay(
rangeData.start.time,
-(7 + rangeData.fweek)
).time
margin = -margin
}
for (var i2 = 0; i2 < 7; i2++) {
var tmpD = coordSys.getNextNDay(start2, i2)
var point = coordSys.dataToRect([tmpD.time], false).center
var day = i2
day = Math.abs((i2 + firstDayOfWeek) % 7)
var weekText = new ZRText$1({
z2: 30,
style: extend(
createTextStyle$1(dayLabel, {
text: nameMap[day],
}),
this._weekTextPositionControl(point, orient, pos, margin, cellSize)
),
})
group.add(weekText)
}
}
CalendarView2.type = 'calendar'
return CalendarView2
})(ComponentView$1)
var CalendarView$1 = CalendarView
var PROXIMATE_ONE_DAY = 864e5
var Calendar = (function () {
function Calendar2(calendarModel, ecModel, api) {
this.type = 'calendar'
this.dimensions = Calendar2.dimensions
this.getDimensionsInfo = Calendar2.getDimensionsInfo
this._model = calendarModel
}
Calendar2.getDimensionsInfo = function () {
return [
{
name: 'time',
type: 'time',
},
'value',
]
}
Calendar2.prototype.getRangeInfo = function () {
return this._rangeInfo
}
Calendar2.prototype.getModel = function () {
return this._model
}
Calendar2.prototype.getRect = function () {
return this._rect
}
Calendar2.prototype.getCellWidth = function () {
return this._sw
}
Calendar2.prototype.getCellHeight = function () {
return this._sh
}
Calendar2.prototype.getOrient = function () {
return this._orient
}
Calendar2.prototype.getFirstDayOfWeek = function () {
return this._firstDayOfWeek
}
Calendar2.prototype.getDateInfo = function (date4) {
date4 = parseDate(date4)
var y2 = date4.getFullYear()
var m2 = date4.getMonth() + 1
var mStr = m2 < 10 ? '0' + m2 : '' + m2
var d3 = date4.getDate()
var dStr = d3 < 10 ? '0' + d3 : '' + d3
var day = date4.getDay()
day = Math.abs((day + 7 - this.getFirstDayOfWeek()) % 7)
return {
y: y2 + '',
m: mStr,
d: dStr,
day,
time: date4.getTime(),
formatedDate: y2 + '-' + mStr + '-' + dStr,
date: date4,
}
}
Calendar2.prototype.getNextNDay = function (date4, n2) {
n2 = n2 || 0
if (n2 === 0) {
return this.getDateInfo(date4)
}
date4 = new Date(this.getDateInfo(date4).time)
date4.setDate(date4.getDate() + n2)
return this.getDateInfo(date4)
}
Calendar2.prototype.update = function (ecModel, api) {
this._firstDayOfWeek = +this._model.getModel('dayLabel').get('firstDay')
this._orient = this._model.get('orient')
this._lineWidth =
this._model.getModel('itemStyle').getItemStyle().lineWidth || 0
this._rangeInfo = this._getRangeInfo(this._initRangeOption())
var weeks = this._rangeInfo.weeks || 1
var whNames = ['width', 'height']
var cellSize = this._model.getCellSize().slice()
var layoutParams = this._model.getBoxLayoutParams()
var cellNumbers = this._orient === 'horizontal' ? [weeks, 7] : [7, weeks]
each$f([0, 1], function (idx) {
if (cellSizeSpecified(cellSize, idx)) {
layoutParams[whNames[idx]] = cellSize[idx] * cellNumbers[idx]
}
})
var whGlobal = {
width: api.getWidth(),
height: api.getHeight(),
}
var calendarRect = (this._rect = getLayoutRect(layoutParams, whGlobal))
each$f([0, 1], function (idx) {
if (!cellSizeSpecified(cellSize, idx)) {
cellSize[idx] = calendarRect[whNames[idx]] / cellNumbers[idx]
}
})
function cellSizeSpecified(cellSize2, idx) {
return cellSize2[idx] != null && cellSize2[idx] !== 'auto'
}
this._sw = cellSize[0]
this._sh = cellSize[1]
}
Calendar2.prototype.dataToPoint = function (data2, clamp2) {
isArray$6(data2) && (data2 = data2[0])
clamp2 == null && (clamp2 = true)
var dayInfo = this.getDateInfo(data2)
var range3 = this._rangeInfo
var date4 = dayInfo.formatedDate
if (
clamp2 &&
!(
dayInfo.time >= range3.start.time &&
dayInfo.time < range3.end.time + PROXIMATE_ONE_DAY
)
) {
return [NaN, NaN]
}
var week = dayInfo.day
var nthWeek = this._getRangeInfo([range3.start.time, date4]).nthWeek
if (this._orient === 'vertical') {
return [
this._rect.x + week * this._sw + this._sw / 2,
this._rect.y + nthWeek * this._sh + this._sh / 2,
]
}
return [
this._rect.x + nthWeek * this._sw + this._sw / 2,
this._rect.y + week * this._sh + this._sh / 2,
]
}
Calendar2.prototype.pointToData = function (point) {
var date4 = this.pointToDate(point)
return date4 && date4.time
}
Calendar2.prototype.dataToRect = function (data2, clamp2) {
var point = this.dataToPoint(data2, clamp2)
return {
contentShape: {
x: point[0] - (this._sw - this._lineWidth) / 2,
y: point[1] - (this._sh - this._lineWidth) / 2,
width: this._sw - this._lineWidth,
height: this._sh - this._lineWidth,
},
center: point,
tl: [point[0] - this._sw / 2, point[1] - this._sh / 2],
tr: [point[0] + this._sw / 2, point[1] - this._sh / 2],
br: [point[0] + this._sw / 2, point[1] + this._sh / 2],
bl: [point[0] - this._sw / 2, point[1] + this._sh / 2],
}
}
Calendar2.prototype.pointToDate = function (point) {
var nthX = Math.floor((point[0] - this._rect.x) / this._sw) + 1
var nthY = Math.floor((point[1] - this._rect.y) / this._sh) + 1
var range3 = this._rangeInfo.range
if (this._orient === 'vertical') {
return this._getDateByWeeksAndDay(nthY, nthX - 1, range3)
}
return this._getDateByWeeksAndDay(nthX, nthY - 1, range3)
}
Calendar2.prototype.convertToPixel = function (ecModel, finder, value2) {
var coordSys = getCoordSys(finder)
return coordSys === this ? coordSys.dataToPoint(value2) : null
}
Calendar2.prototype.convertFromPixel = function (ecModel, finder, pixel) {
var coordSys = getCoordSys(finder)
return coordSys === this ? coordSys.pointToData(pixel) : null
}
Calendar2.prototype.containPoint = function (point) {
console.warn('Not implemented.')
return false
}
Calendar2.prototype._initRangeOption = function () {
var range3 = this._model.get('range')
var normalizedRange
if (isArray$6(range3) && range3.length === 1) {
range3 = range3[0]
}
if (!isArray$6(range3)) {
var rangeStr = range3.toString()
if (/^\d{4}$/.test(rangeStr)) {
normalizedRange = [rangeStr + '-01-01', rangeStr + '-12-31']
}
if (/^\d{4}[\/|-]\d{1,2}$/.test(rangeStr)) {
var start2 = this.getDateInfo(rangeStr)
var firstDay = start2.date
firstDay.setMonth(firstDay.getMonth() + 1)
var end2 = this.getNextNDay(firstDay, -1)
normalizedRange = [start2.formatedDate, end2.formatedDate]
}
if (/^\d{4}[\/|-]\d{1,2}[\/|-]\d{1,2}$/.test(rangeStr)) {
normalizedRange = [rangeStr, rangeStr]
}
} else {
normalizedRange = range3
}
if (!normalizedRange) {
return range3
}
var tmp = this._getRangeInfo(normalizedRange)
if (tmp.start.time > tmp.end.time) {
normalizedRange.reverse()
}
return normalizedRange
}
Calendar2.prototype._getRangeInfo = function (range3) {
var parsedRange = [this.getDateInfo(range3[0]), this.getDateInfo(range3[1])]
var reversed
if (parsedRange[0].time > parsedRange[1].time) {
reversed = true
parsedRange.reverse()
}
var allDay =
Math.floor(parsedRange[1].time / PROXIMATE_ONE_DAY) -
Math.floor(parsedRange[0].time / PROXIMATE_ONE_DAY) +
1
var date4 = new Date(parsedRange[0].time)
var startDateNum = date4.getDate()
var endDateNum = parsedRange[1].date.getDate()
date4.setDate(startDateNum + allDay - 1)
var dateNum = date4.getDate()
if (dateNum !== endDateNum) {
var sign = date4.getTime() - parsedRange[1].time > 0 ? 1 : -1
while (
(dateNum = date4.getDate()) !== endDateNum &&
(date4.getTime() - parsedRange[1].time) * sign > 0
) {
allDay -= sign
date4.setDate(dateNum - sign)
}
}
var weeks = Math.floor((allDay + parsedRange[0].day + 6) / 7)
var nthWeek = reversed ? -weeks + 1 : weeks - 1
reversed && parsedRange.reverse()
return {
range: [parsedRange[0].formatedDate, parsedRange[1].formatedDate],
start: parsedRange[0],
end: parsedRange[1],
allDay,
weeks,
nthWeek,
fweek: parsedRange[0].day,
lweek: parsedRange[1].day,
}
}
Calendar2.prototype._getDateByWeeksAndDay = function (nthWeek, day, range3) {
var rangeInfo = this._getRangeInfo(range3)
if (
nthWeek > rangeInfo.weeks ||
(nthWeek === 0 && day < rangeInfo.fweek) ||
(nthWeek === rangeInfo.weeks && day > rangeInfo.lweek)
) {
return null
}
var nthDay = (nthWeek - 1) * 7 - rangeInfo.fweek + day
var date4 = new Date(rangeInfo.start.time)
date4.setDate(+rangeInfo.start.d + nthDay)
return this.getDateInfo(date4)
}
Calendar2.create = function (ecModel, api) {
var calendarList = []
ecModel.eachComponent('calendar', function (calendarModel) {
var calendar2 = new Calendar2(calendarModel)
calendarList.push(calendar2)
calendarModel.coordinateSystem = calendar2
})
ecModel.eachSeries(function (calendarSeries) {
if (calendarSeries.get('coordinateSystem') === 'calendar') {
calendarSeries.coordinateSystem =
calendarList[calendarSeries.get('calendarIndex') || 0]
}
})
return calendarList
}
Calendar2.dimensions = ['time', 'value']
return Calendar2
})()
function getCoordSys(finder) {
var calendarModel = finder.calendarModel
var seriesModel = finder.seriesModel
var coordSys = calendarModel
? calendarModel.coordinateSystem
: seriesModel
? seriesModel.coordinateSystem
: null
return coordSys
}
var Calendar$1 = Calendar
function install$o(registers) {
registers.registerComponentModel(CalendarModel$1)
registers.registerComponentView(CalendarView$1)
registers.registerCoordinateSystem('calendar', Calendar$1)
}
function setKeyInfoToNewElOption(resultItem, newElOption) {
var existElOption = resultItem.existing
newElOption.id = resultItem.keyInfo.id
!newElOption.type && existElOption && (newElOption.type = existElOption.type)
if (newElOption.parentId == null) {
var newElParentOption = newElOption.parentOption
if (newElParentOption) {
newElOption.parentId = newElParentOption.id
} else if (existElOption) {
newElOption.parentId = existElOption.parentId
}
}
newElOption.parentOption = null
}
function isSetLoc(obj, props2) {
var isSet2
each$f(props2, function (prop) {
obj[prop] != null && obj[prop] !== 'auto' && (isSet2 = true)
})
return isSet2
}
function mergeNewElOptionToExist(existList, index2, newElOption) {
var newElOptCopy = extend({}, newElOption)
var existElOption = existList[index2]
var $action = newElOption.$action || 'merge'
if ($action === 'merge') {
if (existElOption) {
merge(existElOption, newElOptCopy, true)
mergeLayoutParam(existElOption, newElOptCopy, {
ignoreSize: true,
})
copyLayoutParams(newElOption, existElOption)
copyTransitionInfo(newElOption, existElOption)
copyTransitionInfo(newElOption, existElOption, 'shape')
copyTransitionInfo(newElOption, existElOption, 'style')
copyTransitionInfo(newElOption, existElOption, 'extra')
newElOption.clipPath = existElOption.clipPath
} else {
existList[index2] = newElOptCopy
}
} else if ($action === 'replace') {
existList[index2] = newElOptCopy
} else if ($action === 'remove') {
existElOption && (existList[index2] = null)
}
}
var TRANSITION_PROPS_TO_COPY = ['transition', 'enterFrom', 'leaveTo']
var ROOT_TRANSITION_PROPS_TO_COPY = TRANSITION_PROPS_TO_COPY.concat([
'enterAnimation',
'updateAnimation',
'leaveAnimation',
])
function copyTransitionInfo(target2, source2, targetProp) {
if (targetProp) {
if (!target2[targetProp] && source2[targetProp]) {
target2[targetProp] = {}
}
target2 = target2[targetProp]
source2 = source2[targetProp]
}
if (!target2 || !source2) {
return
}
var props2 = targetProp
? TRANSITION_PROPS_TO_COPY
: ROOT_TRANSITION_PROPS_TO_COPY
for (var i2 = 0; i2 < props2.length; i2++) {
var prop = props2[i2]
if (target2[prop] == null && source2[prop] != null) {
target2[prop] = source2[prop]
}
}
}
function setLayoutInfoToExist(existItem, newElOption) {
if (!existItem) {
return
}
existItem.hv = newElOption.hv = [
isSetLoc(newElOption, ['left', 'right']),
isSetLoc(newElOption, ['top', 'bottom']),
]
if (existItem.type === 'group') {
var existingGroupOpt = existItem
var newGroupOpt = newElOption
existingGroupOpt.width == null &&
(existingGroupOpt.width = newGroupOpt.width = 0)
existingGroupOpt.height == null &&
(existingGroupOpt.height = newGroupOpt.height = 0)
}
}
var GraphicComponentModel = (function (_super) {
__extends$2(GraphicComponentModel2, _super)
function GraphicComponentModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = GraphicComponentModel2.type
_this.preventAutoZ = true
return _this
}
GraphicComponentModel2.prototype.mergeOption = function (option2, ecModel) {
var elements2 = this.option.elements
this.option.elements = null
_super.prototype.mergeOption.call(this, option2, ecModel)
this.option.elements = elements2
}
GraphicComponentModel2.prototype.optionUpdated = function (
newOption,
isInit
) {
var thisOption = this.option
var newList = (isInit ? thisOption : newOption).elements
var existList = (thisOption.elements = isInit ? [] : thisOption.elements)
var flattenedList = []
this._flatten(newList, flattenedList, null)
var mappingResult = mappingToExists(existList, flattenedList, 'normalMerge')
var elOptionsToUpdate = (this._elOptionsToUpdate = [])
each$f(
mappingResult,
function (resultItem, index2) {
var newElOption = resultItem.newOption
if (!newElOption) {
return
}
elOptionsToUpdate.push(newElOption)
setKeyInfoToNewElOption(resultItem, newElOption)
mergeNewElOptionToExist(existList, index2, newElOption)
setLayoutInfoToExist(existList[index2], newElOption)
},
this
)
thisOption.elements = filter(existList, function (item2) {
item2 && delete item2.$action
return item2 != null
})
}
GraphicComponentModel2.prototype._flatten = function (
optionList,
result,
parentOption
) {
each$f(
optionList,
function (option2) {
if (!option2) {
return
}
if (parentOption) {
option2.parentOption = parentOption
}
result.push(option2)
var children = option2.children
if (children && children.length) {
this._flatten(children, result, option2)
}
delete option2.children
},
this
)
}
GraphicComponentModel2.prototype.useElOptionsToUpdate = function () {
var els = this._elOptionsToUpdate
this._elOptionsToUpdate = null
return els
}
GraphicComponentModel2.type = 'graphic'
GraphicComponentModel2.defaultOption = {
elements: [],
}
return GraphicComponentModel2
})(ComponentModel$1)
var nonShapeGraphicElements = {
path: null,
compoundPath: null,
group: Group$5,
image: ZRImage$1,
text: ZRText$1,
}
var inner$7 = makeInner()
var GraphicComponentView = (function (_super) {
__extends$2(GraphicComponentView2, _super)
function GraphicComponentView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = GraphicComponentView2.type
return _this
}
GraphicComponentView2.prototype.init = function () {
this._elMap = createHashMap()
}
GraphicComponentView2.prototype.render = function (
graphicModel,
ecModel,
api
) {
if (graphicModel !== this._lastGraphicModel) {
this._clear()
}
this._lastGraphicModel = graphicModel
this._updateElements(graphicModel)
this._relocate(graphicModel, api)
}
GraphicComponentView2.prototype._updateElements = function (graphicModel) {
var elOptionsToUpdate = graphicModel.useElOptionsToUpdate()
if (!elOptionsToUpdate) {
return
}
var elMap = this._elMap
var rootGroup = this.group
var globalZ = graphicModel.get('z')
var globalZLevel = graphicModel.get('zlevel')
each$f(elOptionsToUpdate, function (elOption) {
var id2 = convertOptionIdName(elOption.id, null)
var elExisting = id2 != null ? elMap.get(id2) : null
var parentId = convertOptionIdName(elOption.parentId, null)
var targetElParent = parentId != null ? elMap.get(parentId) : rootGroup
var elType = elOption.type
var elOptionStyle = elOption.style
if (elType === 'text' && elOptionStyle) {
if (elOption.hv && elOption.hv[1]) {
elOptionStyle.textVerticalAlign =
elOptionStyle.textBaseline =
elOptionStyle.verticalAlign =
elOptionStyle.align =
null
}
}
var textContentOption = elOption.textContent
var textConfig = elOption.textConfig
if (
elOptionStyle &&
isEC4CompatibleStyle(
elOptionStyle,
elType,
!!textConfig,
!!textContentOption
)
) {
var convertResult = convertFromEC4CompatibleStyle(
elOptionStyle,
elType,
true
)
if (!textConfig && convertResult.textConfig) {
textConfig = elOption.textConfig = convertResult.textConfig
}
if (!textContentOption && convertResult.textContent) {
textContentOption = convertResult.textContent
}
}
var elOptionCleaned = getCleanedElOption(elOption)
var $action = elOption.$action || 'merge'
var isMerge = $action === 'merge'
var isReplace = $action === 'replace'
if (isMerge) {
var isInit = !elExisting
var el_1 = elExisting
if (isInit) {
el_1 = createEl(id2, targetElParent, elOption.type, elMap)
} else {
el_1 && (inner$7(el_1).isNew = false)
stopPreviousKeyframeAnimationAndRestore(el_1)
}
if (el_1) {
applyUpdateTransition(el_1, elOptionCleaned, graphicModel, {
isInit,
})
updateCommonAttrs(el_1, elOption, globalZ, globalZLevel)
}
} else if (isReplace) {
removeEl$1(elExisting, elOption, elMap, graphicModel)
var el_2 = createEl(id2, targetElParent, elOption.type, elMap)
if (el_2) {
applyUpdateTransition(el_2, elOptionCleaned, graphicModel, {
isInit: true,
})
updateCommonAttrs(el_2, elOption, globalZ, globalZLevel)
}
} else if ($action === 'remove') {
updateLeaveTo(elExisting, elOption)
removeEl$1(elExisting, elOption, elMap, graphicModel)
}
var el2 = elMap.get(id2)
if (el2 && textContentOption) {
if (isMerge) {
var textContentExisting = el2.getTextContent()
textContentExisting
? textContentExisting.attr(textContentOption)
: el2.setTextContent(new ZRText$1(textContentOption))
} else if (isReplace) {
el2.setTextContent(new ZRText$1(textContentOption))
}
}
if (el2) {
var clipPathOption = elOption.clipPath
if (clipPathOption) {
var clipPathType = clipPathOption.type
var clipPath = void 0
var isInit = false
if (isMerge) {
var oldClipPath = el2.getClipPath()
isInit = !oldClipPath || inner$7(oldClipPath).type !== clipPathType
clipPath = isInit ? newEl(clipPathType) : oldClipPath
} else if (isReplace) {
isInit = true
clipPath = newEl(clipPathType)
}
el2.setClipPath(clipPath)
applyUpdateTransition(clipPath, clipPathOption, graphicModel, {
isInit,
})
applyKeyframeAnimation(
clipPath,
clipPathOption.keyframeAnimation,
graphicModel
)
}
var elInner = inner$7(el2)
el2.setTextConfig(textConfig)
elInner.option = elOption
setEventData(el2, graphicModel, elOption)
setTooltipConfig({
el: el2,
componentModel: graphicModel,
itemName: el2.name,
itemTooltipOption: elOption.tooltip,
})
applyKeyframeAnimation(el2, elOption.keyframeAnimation, graphicModel)
}
})
}
GraphicComponentView2.prototype._relocate = function (graphicModel, api) {
var elOptions = graphicModel.option.elements
var rootGroup = this.group
var elMap = this._elMap
var apiWidth = api.getWidth()
var apiHeight = api.getHeight()
var xy = ['x', 'y']
for (var i2 = 0; i2 < elOptions.length; i2++) {
var elOption = elOptions[i2]
var id2 = convertOptionIdName(elOption.id, null)
var el2 = id2 != null ? elMap.get(id2) : null
if (!el2 || !el2.isGroup) {
continue
}
var parentEl2 = el2.parent
var isParentRoot = parentEl2 === rootGroup
var elInner = inner$7(el2)
var parentElInner = inner$7(parentEl2)
elInner.width =
parsePercent(
elInner.option.width,
isParentRoot ? apiWidth : parentElInner.width
) || 0
elInner.height =
parsePercent(
elInner.option.height,
isParentRoot ? apiHeight : parentElInner.height
) || 0
}
for (var i2 = elOptions.length - 1; i2 >= 0; i2--) {
var elOption = elOptions[i2]
var id2 = convertOptionIdName(elOption.id, null)
var el2 = id2 != null ? elMap.get(id2) : null
if (!el2) {
continue
}
var parentEl2 = el2.parent
var parentElInner = inner$7(parentEl2)
var containerInfo =
parentEl2 === rootGroup
? {
width: apiWidth,
height: apiHeight,
}
: {
width: parentElInner.width,
height: parentElInner.height,
}
var layoutPos = {}
var layouted = positionElement(
el2,
elOption,
containerInfo,
null,
{
hv: elOption.hv,
boundingMode: elOption.bounding,
},
layoutPos
)
if (!inner$7(el2).isNew && layouted) {
var transition = elOption.transition
var animatePos = {}
for (var k2 = 0; k2 < xy.length; k2++) {
var key2 = xy[k2]
var val2 = layoutPos[key2]
if (
transition &&
(isTransitionAll(transition) || indexOf(transition, key2) >= 0)
) {
animatePos[key2] = val2
} else {
el2[key2] = val2
}
}
updateProps$1(el2, animatePos, graphicModel, 0)
} else {
el2.attr(layoutPos)
}
}
}
GraphicComponentView2.prototype._clear = function () {
var _this = this
var elMap = this._elMap
elMap.each(function (el2) {
removeEl$1(el2, inner$7(el2).option, elMap, _this._lastGraphicModel)
})
this._elMap = createHashMap()
}
GraphicComponentView2.prototype.dispose = function () {
this._clear()
}
GraphicComponentView2.type = 'graphic'
return GraphicComponentView2
})(ComponentView$1)
function newEl(graphicType) {
var Clz = hasOwn$1(nonShapeGraphicElements, graphicType)
? nonShapeGraphicElements[graphicType]
: getShapeClass(graphicType)
var el2 = new Clz({})
inner$7(el2).type = graphicType
return el2
}
function createEl(id2, targetElParent, graphicType, elMap) {
var el2 = newEl(graphicType)
targetElParent.add(el2)
elMap.set(id2, el2)
inner$7(el2).id = id2
inner$7(el2).isNew = true
return el2
}
function removeEl$1(elExisting, elOption, elMap, graphicModel) {
var existElParent = elExisting && elExisting.parent
if (existElParent) {
elExisting.type === 'group' &&
elExisting.traverse(function (el2) {
removeEl$1(el2, elOption, elMap, graphicModel)
})
applyLeaveTransition(elExisting, elOption, graphicModel)
elMap.removeKey(inner$7(elExisting).id)
}
}
function updateCommonAttrs(el2, elOption, defaultZ, defaultZlevel) {
if (!el2.isGroup) {
each$f(
[
['cursor', Displayable$1.prototype.cursor],
['zlevel', defaultZlevel || 0],
['z', defaultZ || 0],
['z2', 0],
],
function (item2) {
var prop = item2[0]
if (hasOwn$1(elOption, prop)) {
el2[prop] = retrieve2(elOption[prop], item2[1])
} else if (el2[prop] == null) {
el2[prop] = item2[1]
}
}
)
}
each$f(keys$4(elOption), function (key2) {
if (key2.indexOf('on') === 0) {
var val2 = elOption[key2]
el2[key2] = isFunction$4(val2) ? val2 : null
}
})
if (hasOwn$1(elOption, 'draggable')) {
el2.draggable = elOption.draggable
}
elOption.name != null && (el2.name = elOption.name)
elOption.id != null && (el2.id = elOption.id)
}
function getCleanedElOption(elOption) {
elOption = extend({}, elOption)
each$f(
[
'id',
'parentId',
'$action',
'hv',
'bounding',
'textContent',
'clipPath',
].concat(LOCATION_PARAMS),
function (name2) {
delete elOption[name2]
}
)
return elOption
}
function setEventData(el2, graphicModel, elOption) {
var eventData = getECData(el2).eventData
if (!el2.silent && !el2.ignore && !eventData) {
eventData = getECData(el2).eventData = {
componentType: 'graphic',
componentIndex: graphicModel.componentIndex,
name: el2.name,
}
}
if (eventData) {
eventData.info = elOption.info
}
}
function install$n(registers) {
registers.registerComponentModel(GraphicComponentModel)
registers.registerComponentView(GraphicComponentView)
registers.registerPreprocessor(function (option2) {
var graphicOption = option2.graphic
if (isArray$6(graphicOption)) {
if (!graphicOption[0] || !graphicOption[0].elements) {
option2.graphic = [
{
elements: graphicOption,
},
]
} else {
option2.graphic = [option2.graphic[0]]
}
} else if (graphicOption && !graphicOption.elements) {
option2.graphic = [
{
elements: [graphicOption],
},
]
}
})
}
var DATA_ZOOM_AXIS_DIMENSIONS = ['x', 'y', 'radius', 'angle', 'single']
var SERIES_COORDS = ['cartesian2d', 'polar', 'singleAxis']
function isCoordSupported(seriesModel) {
var coordType = seriesModel.get('coordinateSystem')
return indexOf(SERIES_COORDS, coordType) >= 0
}
function getAxisMainType(axisDim) {
return axisDim + 'Axis'
}
function findEffectedDataZooms(ecModel, payload) {
var axisRecords = createHashMap()
var effectedModels = []
var effectedModelMap = createHashMap()
ecModel.eachComponent(
{
mainType: 'dataZoom',
query: payload,
},
function (dataZoomModel) {
if (!effectedModelMap.get(dataZoomModel.uid)) {
addToEffected(dataZoomModel)
}
}
)
var foundNewLink
do {
foundNewLink = false
ecModel.eachComponent('dataZoom', processSingle)
} while (foundNewLink)
function processSingle(dataZoomModel) {
if (!effectedModelMap.get(dataZoomModel.uid) && isLinked(dataZoomModel)) {
addToEffected(dataZoomModel)
foundNewLink = true
}
}
function addToEffected(dataZoom2) {
effectedModelMap.set(dataZoom2.uid, true)
effectedModels.push(dataZoom2)
markAxisControlled(dataZoom2)
}
function isLinked(dataZoomModel) {
var isLink = false
dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {
var axisIdxArr = axisRecords.get(axisDim)
if (axisIdxArr && axisIdxArr[axisIndex]) {
isLink = true
}
})
return isLink
}
function markAxisControlled(dataZoomModel) {
dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {
;(axisRecords.get(axisDim) || axisRecords.set(axisDim, []))[
axisIndex
] = true
})
}
return effectedModels
}
function collectReferCoordSysModelInfo(dataZoomModel) {
var ecModel = dataZoomModel.ecModel
var coordSysInfoWrap = {
infoList: [],
infoMap: createHashMap(),
}
dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {
var axisModel = ecModel.getComponent(getAxisMainType(axisDim), axisIndex)
if (!axisModel) {
return
}
var coordSysModel = axisModel.getCoordSysModel()
if (!coordSysModel) {
return
}
var coordSysUid = coordSysModel.uid
var coordSysInfo = coordSysInfoWrap.infoMap.get(coordSysUid)
if (!coordSysInfo) {
coordSysInfo = {
model: coordSysModel,
axisModels: [],
}
coordSysInfoWrap.infoList.push(coordSysInfo)
coordSysInfoWrap.infoMap.set(coordSysUid, coordSysInfo)
}
coordSysInfo.axisModels.push(axisModel)
})
return coordSysInfoWrap
}
var DataZoomAxisInfo = (function () {
function DataZoomAxisInfo2() {
this.indexList = []
this.indexMap = []
}
DataZoomAxisInfo2.prototype.add = function (axisCmptIdx) {
if (!this.indexMap[axisCmptIdx]) {
this.indexList.push(axisCmptIdx)
this.indexMap[axisCmptIdx] = true
}
}
return DataZoomAxisInfo2
})()
var DataZoomModel = (function (_super) {
__extends$2(DataZoomModel2, _super)
function DataZoomModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = DataZoomModel2.type
_this._autoThrottle = true
_this._noTarget = true
_this._rangePropMode = ['percent', 'percent']
return _this
}
DataZoomModel2.prototype.init = function (option2, parentModel, ecModel) {
var inputRawOption = retrieveRawOption(option2)
this.settledOption = inputRawOption
this.mergeDefaultAndTheme(option2, ecModel)
this._doInit(inputRawOption)
}
DataZoomModel2.prototype.mergeOption = function (newOption) {
var inputRawOption = retrieveRawOption(newOption)
merge(this.option, newOption, true)
merge(this.settledOption, inputRawOption, true)
this._doInit(inputRawOption)
}
DataZoomModel2.prototype._doInit = function (inputRawOption) {
var thisOption = this.option
this._setDefaultThrottle(inputRawOption)
this._updateRangeUse(inputRawOption)
var settledOption = this.settledOption
each$f(
[
['start', 'startValue'],
['end', 'endValue'],
],
function (names2, index2) {
if (this._rangePropMode[index2] === 'value') {
thisOption[names2[0]] = settledOption[names2[0]] = null
}
},
this
)
this._resetTarget()
}
DataZoomModel2.prototype._resetTarget = function () {
var optionOrient = this.get('orient', true)
var targetAxisIndexMap = (this._targetAxisInfoMap = createHashMap())
var hasAxisSpecified = this._fillSpecifiedTargetAxis(targetAxisIndexMap)
if (hasAxisSpecified) {
this._orient = optionOrient || this._makeAutoOrientByTargetAxis()
} else {
this._orient = optionOrient || 'horizontal'
this._fillAutoTargetAxisByOrient(targetAxisIndexMap, this._orient)
}
this._noTarget = true
targetAxisIndexMap.each(function (axisInfo) {
if (axisInfo.indexList.length) {
this._noTarget = false
}
}, this)
}
DataZoomModel2.prototype._fillSpecifiedTargetAxis = function (
targetAxisIndexMap
) {
var hasAxisSpecified = false
each$f(
DATA_ZOOM_AXIS_DIMENSIONS,
function (axisDim) {
var refering = this.getReferringComponents(
getAxisMainType(axisDim),
MULTIPLE_REFERRING
)
if (!refering.specified) {
return
}
hasAxisSpecified = true
var axisInfo = new DataZoomAxisInfo()
each$f(refering.models, function (axisModel) {
axisInfo.add(axisModel.componentIndex)
})
targetAxisIndexMap.set(axisDim, axisInfo)
},
this
)
return hasAxisSpecified
}
DataZoomModel2.prototype._fillAutoTargetAxisByOrient = function (
targetAxisIndexMap,
orient
) {
var ecModel = this.ecModel
var needAuto = true
if (needAuto) {
var axisDim = orient === 'vertical' ? 'y' : 'x'
var axisModels = ecModel.findComponents({
mainType: axisDim + 'Axis',
})
setParallelAxis(axisModels, axisDim)
}
if (needAuto) {
var axisModels = ecModel.findComponents({
mainType: 'singleAxis',
filter: function (axisModel) {
return axisModel.get('orient', true) === orient
},
})
setParallelAxis(axisModels, 'single')
}
function setParallelAxis(axisModels2, axisDim2) {
var axisModel = axisModels2[0]
if (!axisModel) {
return
}
var axisInfo = new DataZoomAxisInfo()
axisInfo.add(axisModel.componentIndex)
targetAxisIndexMap.set(axisDim2, axisInfo)
needAuto = false
if (axisDim2 === 'x' || axisDim2 === 'y') {
var gridModel_1 = axisModel.getReferringComponents(
'grid',
SINGLE_REFERRING
).models[0]
gridModel_1 &&
each$f(axisModels2, function (axModel) {
if (
axisModel.componentIndex !== axModel.componentIndex &&
gridModel_1 ===
axModel.getReferringComponents('grid', SINGLE_REFERRING)
.models[0]
) {
axisInfo.add(axModel.componentIndex)
}
})
}
}
if (needAuto) {
each$f(
DATA_ZOOM_AXIS_DIMENSIONS,
function (axisDim2) {
if (!needAuto) {
return
}
var axisModels2 = ecModel.findComponents({
mainType: getAxisMainType(axisDim2),
filter: function (axisModel) {
return axisModel.get('type', true) === 'category'
},
})
if (axisModels2[0]) {
var axisInfo = new DataZoomAxisInfo()
axisInfo.add(axisModels2[0].componentIndex)
targetAxisIndexMap.set(axisDim2, axisInfo)
needAuto = false
}
},
this
)
}
}
DataZoomModel2.prototype._makeAutoOrientByTargetAxis = function () {
var dim
this.eachTargetAxis(function (axisDim) {
!dim && (dim = axisDim)
}, this)
return dim === 'y' ? 'vertical' : 'horizontal'
}
DataZoomModel2.prototype._setDefaultThrottle = function (inputRawOption) {
if (inputRawOption.hasOwnProperty('throttle')) {
this._autoThrottle = false
}
if (this._autoThrottle) {
var globalOption = this.ecModel.option
this.option.throttle =
globalOption.animation && globalOption.animationDurationUpdate > 0
? 100
: 20
}
}
DataZoomModel2.prototype._updateRangeUse = function (inputRawOption) {
var rangePropMode = this._rangePropMode
var rangeModeInOption = this.get('rangeMode')
each$f(
[
['start', 'startValue'],
['end', 'endValue'],
],
function (names2, index2) {
var percentSpecified = inputRawOption[names2[0]] != null
var valueSpecified = inputRawOption[names2[1]] != null
if (percentSpecified && !valueSpecified) {
rangePropMode[index2] = 'percent'
} else if (!percentSpecified && valueSpecified) {
rangePropMode[index2] = 'value'
} else if (rangeModeInOption) {
rangePropMode[index2] = rangeModeInOption[index2]
} else if (percentSpecified) {
rangePropMode[index2] = 'percent'
}
}
)
}
DataZoomModel2.prototype.noTarget = function () {
return this._noTarget
}
DataZoomModel2.prototype.getFirstTargetAxisModel = function () {
var firstAxisModel
this.eachTargetAxis(function (axisDim, axisIndex) {
if (firstAxisModel == null) {
firstAxisModel = this.ecModel.getComponent(
getAxisMainType(axisDim),
axisIndex
)
}
}, this)
return firstAxisModel
}
DataZoomModel2.prototype.eachTargetAxis = function (callback, context2) {
this._targetAxisInfoMap.each(function (axisInfo, axisDim) {
each$f(axisInfo.indexList, function (axisIndex) {
callback.call(context2, axisDim, axisIndex)
})
})
}
DataZoomModel2.prototype.getAxisProxy = function (axisDim, axisIndex) {
var axisModel = this.getAxisModel(axisDim, axisIndex)
if (axisModel) {
return axisModel.__dzAxisProxy
}
}
DataZoomModel2.prototype.getAxisModel = function (axisDim, axisIndex) {
var axisInfo = this._targetAxisInfoMap.get(axisDim)
if (axisInfo && axisInfo.indexMap[axisIndex]) {
return this.ecModel.getComponent(getAxisMainType(axisDim), axisIndex)
}
}
DataZoomModel2.prototype.setRawRange = function (opt) {
var thisOption = this.option
var settledOption = this.settledOption
each$f(
[
['start', 'startValue'],
['end', 'endValue'],
],
function (names2) {
if (opt[names2[0]] != null || opt[names2[1]] != null) {
thisOption[names2[0]] = settledOption[names2[0]] = opt[names2[0]]
thisOption[names2[1]] = settledOption[names2[1]] = opt[names2[1]]
}
},
this
)
this._updateRangeUse(opt)
}
DataZoomModel2.prototype.setCalculatedRange = function (opt) {
var option2 = this.option
each$f(['start', 'startValue', 'end', 'endValue'], function (name2) {
option2[name2] = opt[name2]
})
}
DataZoomModel2.prototype.getPercentRange = function () {
var axisProxy = this.findRepresentativeAxisProxy()
if (axisProxy) {
return axisProxy.getDataPercentWindow()
}
}
DataZoomModel2.prototype.getValueRange = function (axisDim, axisIndex) {
if (axisDim == null && axisIndex == null) {
var axisProxy = this.findRepresentativeAxisProxy()
if (axisProxy) {
return axisProxy.getDataValueWindow()
}
} else {
return this.getAxisProxy(axisDim, axisIndex).getDataValueWindow()
}
}
DataZoomModel2.prototype.findRepresentativeAxisProxy = function (axisModel) {
if (axisModel) {
return axisModel.__dzAxisProxy
}
var firstProxy
var axisDimList = this._targetAxisInfoMap.keys()
for (var i2 = 0; i2 < axisDimList.length; i2++) {
var axisDim = axisDimList[i2]
var axisInfo = this._targetAxisInfoMap.get(axisDim)
for (var j2 = 0; j2 < axisInfo.indexList.length; j2++) {
var proxy = this.getAxisProxy(axisDim, axisInfo.indexList[j2])
if (proxy.hostedBy(this)) {
return proxy
}
if (!firstProxy) {
firstProxy = proxy
}
}
}
return firstProxy
}
DataZoomModel2.prototype.getRangePropMode = function () {
return this._rangePropMode.slice()
}
DataZoomModel2.prototype.getOrient = function () {
return this._orient
}
DataZoomModel2.type = 'dataZoom'
DataZoomModel2.dependencies = [
'xAxis',
'yAxis',
'radiusAxis',
'angleAxis',
'singleAxis',
'series',
'toolbox',
]
DataZoomModel2.defaultOption = {
z: 4,
filterMode: 'filter',
start: 0,
end: 100,
}
return DataZoomModel2
})(ComponentModel$1)
function retrieveRawOption(option2) {
var ret = {}
each$f(
['start', 'end', 'startValue', 'endValue', 'throttle'],
function (name2) {
option2.hasOwnProperty(name2) && (ret[name2] = option2[name2])
}
)
return ret
}
var DataZoomModel$1 = DataZoomModel
var SelectDataZoomModel = (function (_super) {
__extends$2(SelectDataZoomModel2, _super)
function SelectDataZoomModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = SelectDataZoomModel2.type
return _this
}
SelectDataZoomModel2.type = 'dataZoom.select'
return SelectDataZoomModel2
})(DataZoomModel$1)
var SelectZoomModel = SelectDataZoomModel
var DataZoomView = (function (_super) {
__extends$2(DataZoomView2, _super)
function DataZoomView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = DataZoomView2.type
return _this
}
DataZoomView2.prototype.render = function (
dataZoomModel,
ecModel,
api,
payload
) {
this.dataZoomModel = dataZoomModel
this.ecModel = ecModel
this.api = api
}
DataZoomView2.type = 'dataZoom'
return DataZoomView2
})(ComponentView$1)
var DataZoomView$1 = DataZoomView
var SelectDataZoomView = (function (_super) {
__extends$2(SelectDataZoomView2, _super)
function SelectDataZoomView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = SelectDataZoomView2.type
return _this
}
SelectDataZoomView2.type = 'dataZoom.select'
return SelectDataZoomView2
})(DataZoomView$1)
var SelectZoomView = SelectDataZoomView
var each$7 = each$f
var asc$1 = asc$2
var AxisProxy = (function () {
function AxisProxy2(dimName, axisIndex, dataZoomModel, ecModel) {
this._dimName = dimName
this._axisIndex = axisIndex
this.ecModel = ecModel
this._dataZoomModel = dataZoomModel
}
AxisProxy2.prototype.hostedBy = function (dataZoomModel) {
return this._dataZoomModel === dataZoomModel
}
AxisProxy2.prototype.getDataValueWindow = function () {
return this._valueWindow.slice()
}
AxisProxy2.prototype.getDataPercentWindow = function () {
return this._percentWindow.slice()
}
AxisProxy2.prototype.getTargetSeriesModels = function () {
var seriesModels = []
this.ecModel.eachSeries(function (seriesModel) {
if (isCoordSupported(seriesModel)) {
var axisMainType = getAxisMainType(this._dimName)
var axisModel = seriesModel.getReferringComponents(
axisMainType,
SINGLE_REFERRING
).models[0]
if (axisModel && this._axisIndex === axisModel.componentIndex) {
seriesModels.push(seriesModel)
}
}
}, this)
return seriesModels
}
AxisProxy2.prototype.getAxisModel = function () {
return this.ecModel.getComponent(this._dimName + 'Axis', this._axisIndex)
}
AxisProxy2.prototype.getMinMaxSpan = function () {
return clone$4(this._minMaxSpan)
}
AxisProxy2.prototype.calculateDataWindow = function (opt) {
var dataExtent = this._dataExtent
var axisModel = this.getAxisModel()
var scale2 = axisModel.axis.scale
var rangePropMode = this._dataZoomModel.getRangePropMode()
var percentExtent = [0, 100]
var percentWindow = []
var valueWindow = []
var hasPropModeValue
each$7(['start', 'end'], function (prop, idx) {
var boundPercent = opt[prop]
var boundValue = opt[prop + 'Value']
if (rangePropMode[idx] === 'percent') {
boundPercent == null && (boundPercent = percentExtent[idx])
boundValue = scale2.parse(
linearMap$2(boundPercent, percentExtent, dataExtent)
)
} else {
hasPropModeValue = true
boundValue =
boundValue == null ? dataExtent[idx] : scale2.parse(boundValue)
boundPercent = linearMap$2(boundValue, dataExtent, percentExtent)
}
valueWindow[idx] =
boundValue == null || isNaN(boundValue) ? dataExtent[idx] : boundValue
percentWindow[idx] =
boundPercent == null || isNaN(boundPercent)
? percentExtent[idx]
: boundPercent
})
asc$1(valueWindow)
asc$1(percentWindow)
var spans = this._minMaxSpan
hasPropModeValue
? restrictSet(
valueWindow,
percentWindow,
dataExtent,
percentExtent,
false
)
: restrictSet(percentWindow, valueWindow, percentExtent, dataExtent, true)
function restrictSet(fromWindow, toWindow, fromExtent, toExtent, toValue) {
var suffix2 = toValue ? 'Span' : 'ValueSpan'
sliderMove(
0,
fromWindow,
fromExtent,
'all',
spans['min' + suffix2],
spans['max' + suffix2]
)
for (var i2 = 0; i2 < 2; i2++) {
toWindow[i2] = linearMap$2(fromWindow[i2], fromExtent, toExtent, true)
toValue && (toWindow[i2] = scale2.parse(toWindow[i2]))
}
}
return {
valueWindow,
percentWindow,
}
}
AxisProxy2.prototype.reset = function (dataZoomModel) {
if (dataZoomModel !== this._dataZoomModel) {
return
}
var targetSeries = this.getTargetSeriesModels()
this._dataExtent = calculateDataExtent(this, this._dimName, targetSeries)
this._updateMinMaxSpan()
var dataWindow = this.calculateDataWindow(dataZoomModel.settledOption)
this._valueWindow = dataWindow.valueWindow
this._percentWindow = dataWindow.percentWindow
this._setAxisModel()
}
AxisProxy2.prototype.filterData = function (dataZoomModel, api) {
if (dataZoomModel !== this._dataZoomModel) {
return
}
var axisDim = this._dimName
var seriesModels = this.getTargetSeriesModels()
var filterMode = dataZoomModel.get('filterMode')
var valueWindow = this._valueWindow
if (filterMode === 'none') {
return
}
each$7(seriesModels, function (seriesModel) {
var seriesData = seriesModel.getData()
var dataDims = seriesData.mapDimensionsAll(axisDim)
if (!dataDims.length) {
return
}
if (filterMode === 'weakFilter') {
var store_1 = seriesData.getStore()
var dataDimIndices_1 = map$1(
dataDims,
function (dim) {
return seriesData.getDimensionIndex(dim)
},
seriesData
)
seriesData.filterSelf(function (dataIndex) {
var leftOut
var rightOut
var hasValue
for (var i2 = 0; i2 < dataDims.length; i2++) {
var value2 = store_1.get(dataDimIndices_1[i2], dataIndex)
var thisHasValue = !isNaN(value2)
var thisLeftOut = value2 < valueWindow[0]
var thisRightOut = value2 > valueWindow[1]
if (thisHasValue && !thisLeftOut && !thisRightOut) {
return true
}
thisHasValue && (hasValue = true)
thisLeftOut && (leftOut = true)
thisRightOut && (rightOut = true)
}
return hasValue && leftOut && rightOut
})
} else {
each$7(dataDims, function (dim) {
if (filterMode === 'empty') {
seriesModel.setData(
(seriesData = seriesData.map(dim, function (value2) {
return !isInWindow(value2) ? NaN : value2
}))
)
} else {
var range3 = {}
range3[dim] = valueWindow
seriesData.selectRange(range3)
}
})
}
each$7(dataDims, function (dim) {
seriesData.setApproximateExtent(valueWindow, dim)
})
})
function isInWindow(value2) {
return value2 >= valueWindow[0] && value2 <= valueWindow[1]
}
}
AxisProxy2.prototype._updateMinMaxSpan = function () {
var minMaxSpan = (this._minMaxSpan = {})
var dataZoomModel = this._dataZoomModel
var dataExtent = this._dataExtent
each$7(
['min', 'max'],
function (minMax) {
var percentSpan = dataZoomModel.get(minMax + 'Span')
var valueSpan = dataZoomModel.get(minMax + 'ValueSpan')
valueSpan != null &&
(valueSpan = this.getAxisModel().axis.scale.parse(valueSpan))
if (valueSpan != null) {
percentSpan = linearMap$2(
dataExtent[0] + valueSpan,
dataExtent,
[0, 100],
true
)
} else if (percentSpan != null) {
valueSpan =
linearMap$2(percentSpan, [0, 100], dataExtent, true) - dataExtent[0]
}
minMaxSpan[minMax + 'Span'] = percentSpan
minMaxSpan[minMax + 'ValueSpan'] = valueSpan
},
this
)
}
AxisProxy2.prototype._setAxisModel = function () {
var axisModel = this.getAxisModel()
var percentWindow = this._percentWindow
var valueWindow = this._valueWindow
if (!percentWindow) {
return
}
var precision = getPixelPrecision(valueWindow, [0, 500])
precision = Math.min(precision, 20)
var rawExtentInfo = axisModel.axis.scale.rawExtentInfo
if (percentWindow[0] !== 0) {
rawExtentInfo.setDeterminedMinMax(
'min',
+valueWindow[0].toFixed(precision)
)
}
if (percentWindow[1] !== 100) {
rawExtentInfo.setDeterminedMinMax(
'max',
+valueWindow[1].toFixed(precision)
)
}
rawExtentInfo.freeze()
}
return AxisProxy2
})()
function calculateDataExtent(axisProxy, axisDim, seriesModels) {
var dataExtent = [Infinity, -Infinity]
each$7(seriesModels, function (seriesModel) {
unionAxisExtentFromData(dataExtent, seriesModel.getData(), axisDim)
})
var axisModel = axisProxy.getAxisModel()
var rawExtentResult = ensureScaleRawExtentInfo(
axisModel.axis.scale,
axisModel,
dataExtent
).calculate()
return [rawExtentResult.min, rawExtentResult.max]
}
var AxisProxy$1 = AxisProxy
var dataZoomProcessor = {
getTargetSeries: function (ecModel) {
function eachAxisModel(cb) {
ecModel.eachComponent('dataZoom', function (dataZoomModel) {
dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {
var axisModel = ecModel.getComponent(
getAxisMainType(axisDim),
axisIndex
)
cb(axisDim, axisIndex, axisModel, dataZoomModel)
})
})
}
eachAxisModel(function (axisDim, axisIndex, axisModel, dataZoomModel) {
axisModel.__dzAxisProxy = null
})
var proxyList = []
eachAxisModel(function (axisDim, axisIndex, axisModel, dataZoomModel) {
if (!axisModel.__dzAxisProxy) {
axisModel.__dzAxisProxy = new AxisProxy$1(
axisDim,
axisIndex,
dataZoomModel,
ecModel
)
proxyList.push(axisModel.__dzAxisProxy)
}
})
var seriesModelMap = createHashMap()
each$f(proxyList, function (axisProxy) {
each$f(axisProxy.getTargetSeriesModels(), function (seriesModel) {
seriesModelMap.set(seriesModel.uid, seriesModel)
})
})
return seriesModelMap
},
overallReset: function (ecModel, api) {
ecModel.eachComponent('dataZoom', function (dataZoomModel) {
dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {
dataZoomModel.getAxisProxy(axisDim, axisIndex).reset(dataZoomModel)
})
dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {
dataZoomModel
.getAxisProxy(axisDim, axisIndex)
.filterData(dataZoomModel, api)
})
})
ecModel.eachComponent('dataZoom', function (dataZoomModel) {
var axisProxy = dataZoomModel.findRepresentativeAxisProxy()
if (axisProxy) {
var percentRange = axisProxy.getDataPercentWindow()
var valueRange = axisProxy.getDataValueWindow()
dataZoomModel.setCalculatedRange({
start: percentRange[0],
end: percentRange[1],
startValue: valueRange[0],
endValue: valueRange[1],
})
}
})
},
}
var dataZoomProcessor$1 = dataZoomProcessor
function installDataZoomAction(registers) {
registers.registerAction('dataZoom', function (payload, ecModel) {
var effectedModels = findEffectedDataZooms(ecModel, payload)
each$f(effectedModels, function (dataZoomModel) {
dataZoomModel.setRawRange({
start: payload.start,
end: payload.end,
startValue: payload.startValue,
endValue: payload.endValue,
})
})
})
}
var installed$1 = false
function installCommon$1(registers) {
if (installed$1) {
return
}
installed$1 = true
registers.registerProcessor(
registers.PRIORITY.PROCESSOR.FILTER,
dataZoomProcessor$1
)
installDataZoomAction(registers)
registers.registerSubTypeDefaulter('dataZoom', function () {
return 'slider'
})
}
function install$m(registers) {
registers.registerComponentModel(SelectZoomModel)
registers.registerComponentView(SelectZoomView)
installCommon$1(registers)
}
var ToolboxFeature = (function () {
function ToolboxFeature2() {}
return ToolboxFeature2
})()
var features = {}
function registerFeature(name2, ctor2) {
features[name2] = ctor2
}
function getFeature(name2) {
return features[name2]
}
var ToolboxModel = (function (_super) {
__extends$2(ToolboxModel2, _super)
function ToolboxModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = ToolboxModel2.type
return _this
}
ToolboxModel2.prototype.optionUpdated = function () {
_super.prototype.optionUpdated.apply(this, arguments)
var ecModel = this.ecModel
each$f(this.option.feature, function (featureOpt, featureName) {
var Feature = getFeature(featureName)
if (Feature) {
if (Feature.getDefaultOption) {
Feature.defaultOption = Feature.getDefaultOption(ecModel)
}
merge(featureOpt, Feature.defaultOption)
}
})
}
ToolboxModel2.type = 'toolbox'
ToolboxModel2.layoutMode = {
type: 'box',
ignoreSize: true,
}
ToolboxModel2.defaultOption = {
show: true,
z: 6,
orient: 'horizontal',
left: 'right',
top: 'top',
backgroundColor: 'transparent',
borderColor: '#ccc',
borderRadius: 0,
borderWidth: 0,
padding: 5,
itemSize: 15,
itemGap: 8,
showTitle: true,
iconStyle: {
borderColor: '#666',
color: 'none',
},
emphasis: {
iconStyle: {
borderColor: '#3E98C5',
},
},
tooltip: {
show: false,
position: 'bottom',
},
}
return ToolboxModel2
})(ComponentModel$1)
var ToolboxModel$1 = ToolboxModel
function layout(group, componentModel, api) {
var boxLayoutParams = componentModel.getBoxLayoutParams()
var padding = componentModel.get('padding')
var viewportSize = {
width: api.getWidth(),
height: api.getHeight(),
}
var rect = getLayoutRect(boxLayoutParams, viewportSize, padding)
box(
componentModel.get('orient'),
group,
componentModel.get('itemGap'),
rect.width,
rect.height
)
positionElement(group, boxLayoutParams, viewportSize, padding)
}
function makeBackground(rect, componentModel) {
var padding = normalizeCssArray(componentModel.get('padding'))
var style2 = componentModel.getItemStyle(['color', 'opacity'])
style2.fill = componentModel.get('backgroundColor')
rect = new Rect$4({
shape: {
x: rect.x - padding[3],
y: rect.y - padding[0],
width: rect.width + padding[1] + padding[3],
height: rect.height + padding[0] + padding[2],
r: componentModel.get('borderRadius'),
},
style: style2,
silent: true,
z2: -1,
})
return rect
}
var ToolboxView = (function (_super) {
__extends$2(ToolboxView2, _super)
function ToolboxView2() {
return (_super !== null && _super.apply(this, arguments)) || this
}
ToolboxView2.prototype.render = function (
toolboxModel,
ecModel,
api,
payload
) {
var group = this.group
group.removeAll()
if (!toolboxModel.get('show')) {
return
}
var itemSize2 = +toolboxModel.get('itemSize')
var isVertical = toolboxModel.get('orient') === 'vertical'
var featureOpts = toolboxModel.get('feature') || {}
var features2 = this._features || (this._features = {})
var featureNames = []
each$f(featureOpts, function (opt, name2) {
featureNames.push(name2)
})
new DataDiffer$1(this._featureNames || [], featureNames)
.add(processFeature)
.update(processFeature)
.remove(curry$1(processFeature, null))
.execute()
this._featureNames = featureNames
function processFeature(newIndex2, oldIndex2) {
var featureName = featureNames[newIndex2]
var oldName = featureNames[oldIndex2]
var featureOpt = featureOpts[featureName]
var featureModel = new Model$1(
featureOpt,
toolboxModel,
toolboxModel.ecModel
)
var feature
if (
payload &&
payload.newTitle != null &&
payload.featureName === featureName
) {
featureOpt.title = payload.newTitle
}
if (featureName && !oldName) {
if (isUserFeatureName(featureName)) {
feature = {
onclick: featureModel.option.onclick,
featureName,
}
} else {
var Feature = getFeature(featureName)
if (!Feature) {
return
}
feature = new Feature()
}
features2[featureName] = feature
} else {
feature = features2[oldName]
if (!feature) {
return
}
}
feature.uid = getUID('toolbox-feature')
feature.model = featureModel
feature.ecModel = ecModel
feature.api = api
var isToolboxFeature = feature instanceof ToolboxFeature
if (!featureName && oldName) {
isToolboxFeature && feature.dispose && feature.dispose(ecModel, api)
return
}
if (!featureModel.get('show') || (isToolboxFeature && feature.unusable)) {
isToolboxFeature && feature.remove && feature.remove(ecModel, api)
return
}
createIconPaths(featureModel, feature, featureName)
featureModel.setIconStatus = function (iconName, status) {
var option2 = this.option
var iconPaths = this.iconPaths
option2.iconStatus = option2.iconStatus || {}
option2.iconStatus[iconName] = status
if (iconPaths[iconName]) {
;(status === 'emphasis' ? enterEmphasis : leaveEmphasis)(
iconPaths[iconName]
)
}
}
if (feature instanceof ToolboxFeature) {
if (feature.render) {
feature.render(featureModel, ecModel, api, payload)
}
}
}
function createIconPaths(featureModel, feature, featureName) {
var iconStyleModel = featureModel.getModel('iconStyle')
var iconStyleEmphasisModel = featureModel.getModel([
'emphasis',
'iconStyle',
])
var icons =
feature instanceof ToolboxFeature && feature.getIcons
? feature.getIcons()
: featureModel.get('icon')
var titles = featureModel.get('title') || {}
var iconsMap
var titlesMap
if (isString$2(icons)) {
iconsMap = {}
iconsMap[featureName] = icons
} else {
iconsMap = icons
}
if (isString$2(titles)) {
titlesMap = {}
titlesMap[featureName] = titles
} else {
titlesMap = titles
}
var iconPaths = (featureModel.iconPaths = {})
each$f(iconsMap, function (iconStr, iconName) {
var path = createIcon(
iconStr,
{},
{
x: -itemSize2 / 2,
y: -itemSize2 / 2,
width: itemSize2,
height: itemSize2,
}
)
path.setStyle(iconStyleModel.getItemStyle())
var pathEmphasisState = path.ensureState('emphasis')
pathEmphasisState.style = iconStyleEmphasisModel.getItemStyle()
var textContent = new ZRText$1({
style: {
text: titlesMap[iconName],
align: iconStyleEmphasisModel.get('textAlign'),
borderRadius: iconStyleEmphasisModel.get('textBorderRadius'),
padding: iconStyleEmphasisModel.get('textPadding'),
fill: null,
},
ignore: true,
})
path.setTextContent(textContent)
setTooltipConfig({
el: path,
componentModel: toolboxModel,
itemName: iconName,
formatterParamsExtra: {
title: titlesMap[iconName],
},
})
path.__title = titlesMap[iconName]
path
.on('mouseover', function () {
var hoverStyle = iconStyleEmphasisModel.getItemStyle()
var defaultTextPosition = isVertical
? toolboxModel.get('right') == null &&
toolboxModel.get('left') !== 'right'
? 'right'
: 'left'
: toolboxModel.get('bottom') == null &&
toolboxModel.get('top') !== 'bottom'
? 'bottom'
: 'top'
textContent.setStyle({
fill:
iconStyleEmphasisModel.get('textFill') ||
hoverStyle.fill ||
hoverStyle.stroke ||
'#000',
backgroundColor: iconStyleEmphasisModel.get(
'textBackgroundColor'
),
})
path.setTextConfig({
position:
iconStyleEmphasisModel.get('textPosition') ||
defaultTextPosition,
})
textContent.ignore = !toolboxModel.get('showTitle')
api.enterEmphasis(this)
})
.on('mouseout', function () {
if (featureModel.get(['iconStatus', iconName]) !== 'emphasis') {
api.leaveEmphasis(this)
}
textContent.hide()
})
;(featureModel.get(['iconStatus', iconName]) === 'emphasis'
? enterEmphasis
: leaveEmphasis)(path)
group.add(path)
path.on(
'click',
bind$1(feature.onclick, feature, ecModel, api, iconName)
)
iconPaths[iconName] = path
})
}
layout(group, toolboxModel, api)
group.add(makeBackground(group.getBoundingRect(), toolboxModel))
isVertical ||
group.eachChild(function (icon) {
var titleText = icon.__title
var emphasisState = icon.ensureState('emphasis')
var emphasisTextConfig =
emphasisState.textConfig || (emphasisState.textConfig = {})
var textContent = icon.getTextContent()
var emphasisTextState =
textContent && textContent.ensureState('emphasis')
if (
emphasisTextState &&
!isFunction$4(emphasisTextState) &&
titleText
) {
var emphasisTextStyle =
emphasisTextState.style || (emphasisTextState.style = {})
var rect = getBoundingRect(
titleText,
ZRText$1.makeFont(emphasisTextStyle)
)
var offsetX = icon.x + group.x
var offsetY = icon.y + group.y + itemSize2
var needPutOnTop = false
if (offsetY + rect.height > api.getHeight()) {
emphasisTextConfig.position = 'top'
needPutOnTop = true
}
var topOffset = needPutOnTop ? -5 - rect.height : itemSize2 + 10
if (offsetX + rect.width / 2 > api.getWidth()) {
emphasisTextConfig.position = ['100%', topOffset]
emphasisTextStyle.align = 'right'
} else if (offsetX - rect.width / 2 < 0) {
emphasisTextConfig.position = [0, topOffset]
emphasisTextStyle.align = 'left'
}
}
})
}
ToolboxView2.prototype.updateView = function (
toolboxModel,
ecModel,
api,
payload
) {
each$f(this._features, function (feature) {
feature instanceof ToolboxFeature &&
feature.updateView &&
feature.updateView(feature.model, ecModel, api, payload)
})
}
ToolboxView2.prototype.remove = function (ecModel, api) {
each$f(this._features, function (feature) {
feature instanceof ToolboxFeature &&
feature.remove &&
feature.remove(ecModel, api)
})
this.group.removeAll()
}
ToolboxView2.prototype.dispose = function (ecModel, api) {
each$f(this._features, function (feature) {
feature instanceof ToolboxFeature &&
feature.dispose &&
feature.dispose(ecModel, api)
})
}
ToolboxView2.type = 'toolbox'
return ToolboxView2
})(ComponentView$1)
function isUserFeatureName(featureName) {
return featureName.indexOf('my') === 0
}
var ToolboxView$1 = ToolboxView
var SaveAsImage = (function (_super) {
__extends$2(SaveAsImage2, _super)
function SaveAsImage2() {
return (_super !== null && _super.apply(this, arguments)) || this
}
SaveAsImage2.prototype.onclick = function (ecModel, api) {
var model = this.model
var title = model.get('name') || ecModel.get('title.0.text') || 'echarts'
var isSvg = api.getZr().painter.getType() === 'svg'
var type4 = isSvg ? 'svg' : model.get('type', true) || 'png'
var url2 = api.getConnectedDataURL({
type: type4,
backgroundColor:
model.get('backgroundColor', true) ||
ecModel.get('backgroundColor') ||
'#fff',
connectedBackgroundColor: model.get('connectedBackgroundColor'),
excludeComponents: model.get('excludeComponents'),
pixelRatio: model.get('pixelRatio'),
})
var browser = env$1.browser
if (
isFunction$4(MouseEvent) &&
(browser.newEdge || (!browser.ie && !browser.edge))
) {
var $a = document.createElement('a')
$a.download = title + '.' + type4
$a.target = '_blank'
$a.href = url2
var evt = new MouseEvent('click', {
view: document.defaultView,
bubbles: true,
cancelable: false,
})
$a.dispatchEvent(evt)
} else {
if (window.navigator.msSaveOrOpenBlob || isSvg) {
var parts = url2.split(',')
var base64Encoded = parts[0].indexOf('base64') > -1
var bstr = isSvg ? decodeURIComponent(parts[1]) : parts[1]
base64Encoded && (bstr = window.atob(bstr))
var filename = title + '.' + type4
if (window.navigator.msSaveOrOpenBlob) {
var n2 = bstr.length
var u8arr = new Uint8Array(n2)
while (n2--) {
u8arr[n2] = bstr.charCodeAt(n2)
}
var blob = new Blob([u8arr])
window.navigator.msSaveOrOpenBlob(blob, filename)
} else {
var frame = document.createElement('iframe')
document.body.appendChild(frame)
var cw = frame.contentWindow
var doc = cw.document
doc.open('image/svg+xml', 'replace')
doc.write(bstr)
doc.close()
cw.focus()
doc.execCommand('SaveAs', true, filename)
document.body.removeChild(frame)
}
} else {
var lang = model.get('lang')
var html2 =
'
'
var tab = window.open()
tab.document.write(html2)
tab.document.title = title
}
}
}
SaveAsImage2.getDefaultOption = function (ecModel) {
var defaultOption2 = {
show: true,
icon: 'M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0',
title: ecModel.getLocaleModel().get(['toolbox', 'saveAsImage', 'title']),
type: 'png',
connectedBackgroundColor: '#fff',
name: '',
excludeComponents: ['toolbox'],
lang: ecModel.getLocaleModel().get(['toolbox', 'saveAsImage', 'lang']),
}
return defaultOption2
}
return SaveAsImage2
})(ToolboxFeature)
var SaveAsImage$1 = SaveAsImage
var INNER_STACK_KEYWORD = '__ec_magicType_stack__'
var radioTypes = [['line', 'bar'], ['stack']]
var MagicType = (function (_super) {
__extends$2(MagicType2, _super)
function MagicType2() {
return (_super !== null && _super.apply(this, arguments)) || this
}
MagicType2.prototype.getIcons = function () {
var model = this.model
var availableIcons = model.get('icon')
var icons = {}
each$f(model.get('type'), function (type4) {
if (availableIcons[type4]) {
icons[type4] = availableIcons[type4]
}
})
return icons
}
MagicType2.getDefaultOption = function (ecModel) {
var defaultOption2 = {
show: true,
type: [],
icon: {
line: 'M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4',
bar: 'M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7',
stack:
'M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z',
},
title: ecModel.getLocaleModel().get(['toolbox', 'magicType', 'title']),
option: {},
seriesIndex: {},
}
return defaultOption2
}
MagicType2.prototype.onclick = function (ecModel, api, type4) {
var model = this.model
var seriesIndex = model.get(['seriesIndex', type4])
if (!seriesOptGenreator[type4]) {
return
}
var newOption = {
series: [],
}
var generateNewSeriesTypes = function (seriesModel) {
var seriesType2 = seriesModel.subType
var seriesId = seriesModel.id
var newSeriesOpt = seriesOptGenreator[type4](
seriesType2,
seriesId,
seriesModel,
model
)
if (newSeriesOpt) {
defaults(newSeriesOpt, seriesModel.option)
newOption.series.push(newSeriesOpt)
}
var coordSys = seriesModel.coordinateSystem
if (
coordSys &&
coordSys.type === 'cartesian2d' &&
(type4 === 'line' || type4 === 'bar')
) {
var categoryAxis2 = coordSys.getAxesByScale('ordinal')[0]
if (categoryAxis2) {
var axisDim = categoryAxis2.dim
var axisType = axisDim + 'Axis'
var axisModel = seriesModel.getReferringComponents(
axisType,
SINGLE_REFERRING
).models[0]
var axisIndex = axisModel.componentIndex
newOption[axisType] = newOption[axisType] || []
for (var i2 = 0; i2 <= axisIndex; i2++) {
newOption[axisType][axisIndex] =
newOption[axisType][axisIndex] || {}
}
newOption[axisType][axisIndex].boundaryGap = type4 === 'bar'
}
}
}
each$f(radioTypes, function (radio2) {
if (indexOf(radio2, type4) >= 0) {
each$f(radio2, function (item2) {
model.setIconStatus(item2, 'normal')
})
}
})
model.setIconStatus(type4, 'emphasis')
ecModel.eachComponent(
{
mainType: 'series',
query:
seriesIndex == null
? null
: {
seriesIndex,
},
},
generateNewSeriesTypes
)
var newTitle
var currentType = type4
if (type4 === 'stack') {
newTitle = merge(
{
stack: model.option.title.tiled,
tiled: model.option.title.stack,
},
model.option.title
)
if (model.get(['iconStatus', type4]) !== 'emphasis') {
currentType = 'tiled'
}
}
api.dispatchAction({
type: 'changeMagicType',
currentType,
newOption,
newTitle,
featureName: 'magicType',
})
}
return MagicType2
})(ToolboxFeature)
var seriesOptGenreator = {
line: function (seriesType2, seriesId, seriesModel, model) {
if (seriesType2 === 'bar') {
return merge(
{
id: seriesId,
type: 'line',
data: seriesModel.get('data'),
stack: seriesModel.get('stack'),
markPoint: seriesModel.get('markPoint'),
markLine: seriesModel.get('markLine'),
},
model.get(['option', 'line']) || {},
true
)
}
},
bar: function (seriesType2, seriesId, seriesModel, model) {
if (seriesType2 === 'line') {
return merge(
{
id: seriesId,
type: 'bar',
data: seriesModel.get('data'),
stack: seriesModel.get('stack'),
markPoint: seriesModel.get('markPoint'),
markLine: seriesModel.get('markLine'),
},
model.get(['option', 'bar']) || {},
true
)
}
},
stack: function (seriesType2, seriesId, seriesModel, model) {
var isStack = seriesModel.get('stack') === INNER_STACK_KEYWORD
if (seriesType2 === 'line' || seriesType2 === 'bar') {
model.setIconStatus('stack', isStack ? 'normal' : 'emphasis')
return merge(
{
id: seriesId,
stack: isStack ? '' : INNER_STACK_KEYWORD,
},
model.get(['option', 'stack']) || {},
true
)
}
},
}
registerAction(
{
type: 'changeMagicType',
event: 'magicTypeChanged',
update: 'prepareAndUpdate',
},
function (payload, ecModel) {
ecModel.mergeOption(payload.newOption)
}
)
var MagicType$1 = MagicType
var BLOCK_SPLITER = new Array(60).join('-')
var ITEM_SPLITER = ' '
function groupSeries(ecModel) {
var seriesGroupByCategoryAxis = {}
var otherSeries = []
var meta = []
ecModel.eachRawSeries(function (seriesModel) {
var coordSys = seriesModel.coordinateSystem
if (
coordSys &&
(coordSys.type === 'cartesian2d' || coordSys.type === 'polar')
) {
var baseAxis = coordSys.getBaseAxis()
if (baseAxis.type === 'category') {
var key2 = baseAxis.dim + '_' + baseAxis.index
if (!seriesGroupByCategoryAxis[key2]) {
seriesGroupByCategoryAxis[key2] = {
categoryAxis: baseAxis,
valueAxis: coordSys.getOtherAxis(baseAxis),
series: [],
}
meta.push({
axisDim: baseAxis.dim,
axisIndex: baseAxis.index,
})
}
seriesGroupByCategoryAxis[key2].series.push(seriesModel)
} else {
otherSeries.push(seriesModel)
}
} else {
otherSeries.push(seriesModel)
}
})
return {
seriesGroupByCategoryAxis,
other: otherSeries,
meta,
}
}
function assembleSeriesWithCategoryAxis(groups) {
var tables = []
each$f(groups, function (group, key2) {
var categoryAxis2 = group.categoryAxis
var valueAxis2 = group.valueAxis
var valueAxisDim = valueAxis2.dim
var headers = [' '].concat(
map$1(group.series, function (series) {
return series.name
})
)
var columns = [categoryAxis2.model.getCategories()]
each$f(group.series, function (series) {
var rawData = series.getRawData()
columns.push(
series
.getRawData()
.mapArray(rawData.mapDimension(valueAxisDim), function (val2) {
return val2
})
)
})
var lines = [headers.join(ITEM_SPLITER)]
for (var i2 = 0; i2 < columns[0].length; i2++) {
var items = []
for (var j2 = 0; j2 < columns.length; j2++) {
items.push(columns[j2][i2])
}
lines.push(items.join(ITEM_SPLITER))
}
tables.push(lines.join('\n'))
})
return tables.join('\n\n' + BLOCK_SPLITER + '\n\n')
}
function assembleOtherSeries(series) {
return map$1(series, function (series2) {
var data2 = series2.getRawData()
var lines = [series2.name]
var vals = []
data2.each(data2.dimensions, function () {
var argLen = arguments.length
var dataIndex = arguments[argLen - 1]
var name2 = data2.getName(dataIndex)
for (var i2 = 0; i2 < argLen - 1; i2++) {
vals[i2] = arguments[i2]
}
lines.push((name2 ? name2 + ITEM_SPLITER : '') + vals.join(ITEM_SPLITER))
})
return lines.join('\n')
}).join('\n\n' + BLOCK_SPLITER + '\n\n')
}
function getContentFromModel(ecModel) {
var result = groupSeries(ecModel)
return {
value: filter(
[
assembleSeriesWithCategoryAxis(result.seriesGroupByCategoryAxis),
assembleOtherSeries(result.other),
],
function (str) {
return !!str.replace(/[\n\t\s]/g, '')
}
).join('\n\n' + BLOCK_SPLITER + '\n\n'),
meta: result.meta,
}
}
function trim(str) {
return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '')
}
function isTSVFormat(block) {
var firstLine = block.slice(0, block.indexOf('\n'))
if (firstLine.indexOf(ITEM_SPLITER) >= 0) {
return true
}
}
var itemSplitRegex = new RegExp('[' + ITEM_SPLITER + ']+', 'g')
function parseTSVContents(tsv) {
var tsvLines = tsv.split(/\n+/g)
var headers = trim(tsvLines.shift()).split(itemSplitRegex)
var categories = []
var series = map$1(headers, function (header) {
return {
name: header,
data: [],
}
})
for (var i2 = 0; i2 < tsvLines.length; i2++) {
var items = trim(tsvLines[i2]).split(itemSplitRegex)
categories.push(items.shift())
for (var j2 = 0; j2 < items.length; j2++) {
series[j2] && (series[j2].data[i2] = items[j2])
}
}
return {
series,
categories,
}
}
function parseListContents(str) {
var lines = str.split(/\n+/g)
var seriesName = trim(lines.shift())
var data2 = []
for (var i2 = 0; i2 < lines.length; i2++) {
var line = trim(lines[i2])
if (!line) {
continue
}
var items = line.split(itemSplitRegex)
var name_1 = ''
var value2 = void 0
var hasName = false
if (isNaN(items[0])) {
hasName = true
name_1 = items[0]
items = items.slice(1)
data2[i2] = {
name: name_1,
value: [],
}
value2 = data2[i2].value
} else {
value2 = data2[i2] = []
}
for (var j2 = 0; j2 < items.length; j2++) {
value2.push(+items[j2])
}
if (value2.length === 1) {
hasName ? (data2[i2].value = value2[0]) : (data2[i2] = value2[0])
}
}
return {
name: seriesName,
data: data2,
}
}
function parseContents(str, blockMetaList) {
var blocks2 = str.split(new RegExp('\n*' + BLOCK_SPLITER + '\n*', 'g'))
var newOption = {
series: [],
}
each$f(blocks2, function (block, idx) {
if (isTSVFormat(block)) {
var result = parseTSVContents(block)
var blockMeta = blockMetaList[idx]
var axisKey = blockMeta.axisDim + 'Axis'
if (blockMeta) {
newOption[axisKey] = newOption[axisKey] || []
newOption[axisKey][blockMeta.axisIndex] = {
data: result.categories,
}
newOption.series = newOption.series.concat(result.series)
}
} else {
var result = parseListContents(block)
newOption.series.push(result)
}
})
return newOption
}
var DataView$3 = (function (_super) {
__extends$2(DataView2, _super)
function DataView2() {
return (_super !== null && _super.apply(this, arguments)) || this
}
DataView2.prototype.onclick = function (ecModel, api) {
setTimeout(function () {
api.dispatchAction({
type: 'hideTip',
})
})
var container = api.getDom()
var model = this.model
if (this._dom) {
container.removeChild(this._dom)
}
var root2 = document.createElement('div')
root2.style.cssText =
'position:absolute;top:0;bottom:0;left:0;right:0;padding:5px'
root2.style.backgroundColor = model.get('backgroundColor') || '#fff'
var header = document.createElement('h4')
var lang = model.get('lang') || []
header.innerHTML = lang[0] || model.get('title')
header.style.cssText = 'margin:10px 20px'
header.style.color = model.get('textColor')
var viewMain = document.createElement('div')
var textarea = document.createElement('textarea')
viewMain.style.cssText = 'overflow:auto'
var optionToContent = model.get('optionToContent')
var contentToOption = model.get('contentToOption')
var result = getContentFromModel(ecModel)
if (isFunction$4(optionToContent)) {
var htmlOrDom = optionToContent(api.getOption())
if (isString$2(htmlOrDom)) {
viewMain.innerHTML = htmlOrDom
} else if (isDom(htmlOrDom)) {
viewMain.appendChild(htmlOrDom)
}
} else {
textarea.readOnly = model.get('readOnly')
var style2 = textarea.style
style2.cssText =
'display:block;width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;resize:none;box-sizing:border-box;outline:none'
style2.color = model.get('textColor')
style2.borderColor = model.get('textareaBorderColor')
style2.backgroundColor = model.get('textareaColor')
textarea.value = result.value
viewMain.appendChild(textarea)
}
var blockMetaList = result.meta
var buttonContainer = document.createElement('div')
buttonContainer.style.cssText =
'position:absolute;bottom:5px;left:0;right:0'
var buttonStyle =
'float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px'
var closeButton = document.createElement('div')
var refreshButton = document.createElement('div')
buttonStyle += ';background-color:' + model.get('buttonColor')
buttonStyle += ';color:' + model.get('buttonTextColor')
var self2 = this
function close2() {
container.removeChild(root2)
self2._dom = null
}
addEventListener$1(closeButton, 'click', close2)
addEventListener$1(refreshButton, 'click', function () {
if (
(contentToOption == null && optionToContent != null) ||
(contentToOption != null && optionToContent == null)
) {
close2()
return
}
var newOption
try {
if (isFunction$4(contentToOption)) {
newOption = contentToOption(viewMain, api.getOption())
} else {
newOption = parseContents(textarea.value, blockMetaList)
}
} catch (e2) {
close2()
throw new Error('Data view format error ' + e2)
}
if (newOption) {
api.dispatchAction({
type: 'changeDataView',
newOption,
})
}
close2()
})
closeButton.innerHTML = lang[1]
refreshButton.innerHTML = lang[2]
refreshButton.style.cssText = closeButton.style.cssText = buttonStyle
!model.get('readOnly') && buttonContainer.appendChild(refreshButton)
buttonContainer.appendChild(closeButton)
root2.appendChild(header)
root2.appendChild(viewMain)
root2.appendChild(buttonContainer)
viewMain.style.height = container.clientHeight - 80 + 'px'
container.appendChild(root2)
this._dom = root2
}
DataView2.prototype.remove = function (ecModel, api) {
this._dom && api.getDom().removeChild(this._dom)
}
DataView2.prototype.dispose = function (ecModel, api) {
this.remove(ecModel, api)
}
DataView2.getDefaultOption = function (ecModel) {
var defaultOption2 = {
show: true,
readOnly: false,
optionToContent: null,
contentToOption: null,
icon: 'M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28',
title: ecModel.getLocaleModel().get(['toolbox', 'dataView', 'title']),
lang: ecModel.getLocaleModel().get(['toolbox', 'dataView', 'lang']),
backgroundColor: '#fff',
textColor: '#000',
textareaColor: '#fff',
textareaBorderColor: '#333',
buttonColor: '#c23531',
buttonTextColor: '#fff',
}
return defaultOption2
}
return DataView2
})(ToolboxFeature)
function tryMergeDataOption(newData, originalData) {
return map$1(newData, function (newVal, idx) {
var original = originalData && originalData[idx]
if (isObject$b(original) && !isArray$6(original)) {
var newValIsObject = isObject$b(newVal) && !isArray$6(newVal)
if (!newValIsObject) {
newVal = {
value: newVal,
}
}
var shouldDeleteName = original.name != null && newVal.name == null
newVal = defaults(newVal, original)
shouldDeleteName && delete newVal.name
return newVal
} else {
return newVal
}
})
}
registerAction(
{
type: 'changeDataView',
event: 'dataViewChanged',
update: 'prepareAndUpdate',
},
function (payload, ecModel) {
var newSeriesOptList = []
each$f(payload.newOption.series, function (seriesOpt) {
var seriesModel = ecModel.getSeriesByName(seriesOpt.name)[0]
if (!seriesModel) {
newSeriesOptList.push(
extend(
{
type: 'scatter',
},
seriesOpt
)
)
} else {
var originalData = seriesModel.get('data')
newSeriesOptList.push({
name: seriesOpt.name,
data: tryMergeDataOption(seriesOpt.data, originalData),
})
}
})
ecModel.mergeOption(
defaults(
{
series: newSeriesOptList,
},
payload.newOption
)
)
}
)
var DataView$4 = DataView$3
var each$6 = each$f
var inner$6 = makeInner()
function push(ecModel, newSnapshot) {
var storedSnapshots = getStoreSnapshots(ecModel)
each$6(newSnapshot, function (batchItem, dataZoomId) {
var i2 = storedSnapshots.length - 1
for (; i2 >= 0; i2--) {
var snapshot = storedSnapshots[i2]
if (snapshot[dataZoomId]) {
break
}
}
if (i2 < 0) {
var dataZoomModel = ecModel.queryComponents({
mainType: 'dataZoom',
subType: 'select',
id: dataZoomId,
})[0]
if (dataZoomModel) {
var percentRange = dataZoomModel.getPercentRange()
storedSnapshots[0][dataZoomId] = {
dataZoomId,
start: percentRange[0],
end: percentRange[1],
}
}
}
})
storedSnapshots.push(newSnapshot)
}
function pop(ecModel) {
var storedSnapshots = getStoreSnapshots(ecModel)
var head = storedSnapshots[storedSnapshots.length - 1]
storedSnapshots.length > 1 && storedSnapshots.pop()
var snapshot = {}
each$6(head, function (batchItem, dataZoomId) {
for (var i2 = storedSnapshots.length - 1; i2 >= 0; i2--) {
batchItem = storedSnapshots[i2][dataZoomId]
if (batchItem) {
snapshot[dataZoomId] = batchItem
break
}
}
})
return snapshot
}
function clear(ecModel) {
inner$6(ecModel).snapshots = null
}
function count$1(ecModel) {
return getStoreSnapshots(ecModel).length
}
function getStoreSnapshots(ecModel) {
var store2 = inner$6(ecModel)
if (!store2.snapshots) {
store2.snapshots = [{}]
}
return store2.snapshots
}
var RestoreOption = (function (_super) {
__extends$2(RestoreOption2, _super)
function RestoreOption2() {
return (_super !== null && _super.apply(this, arguments)) || this
}
RestoreOption2.prototype.onclick = function (ecModel, api) {
clear(ecModel)
api.dispatchAction({
type: 'restore',
from: this.uid,
})
}
RestoreOption2.getDefaultOption = function (ecModel) {
var defaultOption2 = {
show: true,
icon: 'M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5',
title: ecModel.getLocaleModel().get(['toolbox', 'restore', 'title']),
}
return defaultOption2
}
return RestoreOption2
})(ToolboxFeature)
registerAction(
{
type: 'restore',
event: 'restore',
update: 'prepareAndUpdate',
},
function (payload, ecModel) {
ecModel.resetOption('recreate')
}
)
var Restore = RestoreOption
var INCLUDE_FINDER_MAIN_TYPES = [
'grid',
'xAxis',
'yAxis',
'geo',
'graph',
'polar',
'radiusAxis',
'angleAxis',
'bmap',
]
var BrushTargetManager = (function () {
function BrushTargetManager2(finder, ecModel, opt) {
var _this = this
this._targetInfoList = []
var foundCpts = parseFinder(ecModel, finder)
each$f(targetInfoBuilders, function (builder, type4) {
if (!opt || !opt.include || indexOf(opt.include, type4) >= 0) {
builder(foundCpts, _this._targetInfoList)
}
})
}
BrushTargetManager2.prototype.setOutputRanges = function (areas, ecModel) {
this.matchOutputRanges(
areas,
ecModel,
function (area, coordRange, coordSys) {
;(area.coordRanges || (area.coordRanges = [])).push(coordRange)
if (!area.coordRange) {
area.coordRange = coordRange
var result = coordConvert[area.brushType](0, coordSys, coordRange)
area.__rangeOffset = {
offset: diffProcessor[area.brushType](
result.values,
area.range,
[1, 1]
),
xyMinMax: result.xyMinMax,
}
}
}
)
return areas
}
BrushTargetManager2.prototype.matchOutputRanges = function (
areas,
ecModel,
cb
) {
each$f(
areas,
function (area) {
var targetInfo = this.findTargetInfo(area, ecModel)
if (targetInfo && targetInfo !== true) {
each$f(targetInfo.coordSyses, function (coordSys) {
var result = coordConvert[area.brushType](
1,
coordSys,
area.range,
true
)
cb(area, result.values, coordSys, ecModel)
})
}
},
this
)
}
BrushTargetManager2.prototype.setInputRanges = function (areas, ecModel) {
each$f(
areas,
function (area) {
var targetInfo = this.findTargetInfo(area, ecModel)
area.range = area.range || []
if (targetInfo && targetInfo !== true) {
area.panelId = targetInfo.panelId
var result = coordConvert[area.brushType](
0,
targetInfo.coordSys,
area.coordRange
)
var rangeOffset = area.__rangeOffset
area.range = rangeOffset
? diffProcessor[area.brushType](
result.values,
rangeOffset.offset,
getScales(result.xyMinMax, rangeOffset.xyMinMax)
)
: result.values
}
},
this
)
}
BrushTargetManager2.prototype.makePanelOpts = function (
api,
getDefaultBrushType
) {
return map$1(this._targetInfoList, function (targetInfo) {
var rect = targetInfo.getPanelRect()
return {
panelId: targetInfo.panelId,
defaultBrushType: getDefaultBrushType
? getDefaultBrushType(targetInfo)
: null,
clipPath: makeRectPanelClipPath(rect),
isTargetByCursor: makeRectIsTargetByCursor(
rect,
api,
targetInfo.coordSysModel
),
getLinearBrushOtherExtent: makeLinearBrushOtherExtent(rect),
}
})
}
BrushTargetManager2.prototype.controlSeries = function (
area,
seriesModel,
ecModel
) {
var targetInfo = this.findTargetInfo(area, ecModel)
return (
targetInfo === true ||
(targetInfo &&
indexOf(targetInfo.coordSyses, seriesModel.coordinateSystem) >= 0)
)
}
BrushTargetManager2.prototype.findTargetInfo = function (area, ecModel) {
var targetInfoList = this._targetInfoList
var foundCpts = parseFinder(ecModel, area)
for (var i2 = 0; i2 < targetInfoList.length; i2++) {
var targetInfo = targetInfoList[i2]
var areaPanelId = area.panelId
if (areaPanelId) {
if (targetInfo.panelId === areaPanelId) {
return targetInfo
}
} else {
for (var j2 = 0; j2 < targetInfoMatchers.length; j2++) {
if (targetInfoMatchers[j2](foundCpts, targetInfo)) {
return targetInfo
}
}
}
}
return true
}
return BrushTargetManager2
})()
function formatMinMax(minMax) {
minMax[0] > minMax[1] && minMax.reverse()
return minMax
}
function parseFinder(ecModel, finder) {
return parseFinder$1(ecModel, finder, {
includeMainTypes: INCLUDE_FINDER_MAIN_TYPES,
})
}
var targetInfoBuilders = {
grid: function (foundCpts, targetInfoList) {
var xAxisModels = foundCpts.xAxisModels
var yAxisModels = foundCpts.yAxisModels
var gridModels = foundCpts.gridModels
var gridModelMap = createHashMap()
var xAxesHas = {}
var yAxesHas = {}
if (!xAxisModels && !yAxisModels && !gridModels) {
return
}
each$f(xAxisModels, function (axisModel) {
var gridModel = axisModel.axis.grid.model
gridModelMap.set(gridModel.id, gridModel)
xAxesHas[gridModel.id] = true
})
each$f(yAxisModels, function (axisModel) {
var gridModel = axisModel.axis.grid.model
gridModelMap.set(gridModel.id, gridModel)
yAxesHas[gridModel.id] = true
})
each$f(gridModels, function (gridModel) {
gridModelMap.set(gridModel.id, gridModel)
xAxesHas[gridModel.id] = true
yAxesHas[gridModel.id] = true
})
gridModelMap.each(function (gridModel) {
var grid2 = gridModel.coordinateSystem
var cartesians = []
each$f(grid2.getCartesians(), function (cartesian, index2) {
if (
indexOf(xAxisModels, cartesian.getAxis('x').model) >= 0 ||
indexOf(yAxisModels, cartesian.getAxis('y').model) >= 0
) {
cartesians.push(cartesian)
}
})
targetInfoList.push({
panelId: 'grid--' + gridModel.id,
gridModel,
coordSysModel: gridModel,
coordSys: cartesians[0],
coordSyses: cartesians,
getPanelRect: panelRectBuilders.grid,
xAxisDeclared: xAxesHas[gridModel.id],
yAxisDeclared: yAxesHas[gridModel.id],
})
})
},
geo: function (foundCpts, targetInfoList) {
each$f(foundCpts.geoModels, function (geoModel) {
var coordSys = geoModel.coordinateSystem
targetInfoList.push({
panelId: 'geo--' + geoModel.id,
geoModel,
coordSysModel: geoModel,
coordSys,
coordSyses: [coordSys],
getPanelRect: panelRectBuilders.geo,
})
})
},
}
var targetInfoMatchers = [
function (foundCpts, targetInfo) {
var xAxisModel = foundCpts.xAxisModel
var yAxisModel = foundCpts.yAxisModel
var gridModel = foundCpts.gridModel
!gridModel && xAxisModel && (gridModel = xAxisModel.axis.grid.model)
!gridModel && yAxisModel && (gridModel = yAxisModel.axis.grid.model)
return gridModel && gridModel === targetInfo.gridModel
},
function (foundCpts, targetInfo) {
var geoModel = foundCpts.geoModel
return geoModel && geoModel === targetInfo.geoModel
},
]
var panelRectBuilders = {
grid: function () {
return this.coordSys.master.getRect().clone()
},
geo: function () {
var coordSys = this.coordSys
var rect = coordSys.getBoundingRect().clone()
rect.applyTransform(getTransform$1(coordSys))
return rect
},
}
var coordConvert = {
lineX: curry$1(axisConvert, 0),
lineY: curry$1(axisConvert, 1),
rect: function (to, coordSys, rangeOrCoordRange, clamp2) {
var xminymin = to
? coordSys.pointToData(
[rangeOrCoordRange[0][0], rangeOrCoordRange[1][0]],
clamp2
)
: coordSys.dataToPoint(
[rangeOrCoordRange[0][0], rangeOrCoordRange[1][0]],
clamp2
)
var xmaxymax = to
? coordSys.pointToData(
[rangeOrCoordRange[0][1], rangeOrCoordRange[1][1]],
clamp2
)
: coordSys.dataToPoint(
[rangeOrCoordRange[0][1], rangeOrCoordRange[1][1]],
clamp2
)
var values2 = [
formatMinMax([xminymin[0], xmaxymax[0]]),
formatMinMax([xminymin[1], xmaxymax[1]]),
]
return {
values: values2,
xyMinMax: values2,
}
},
polygon: function (to, coordSys, rangeOrCoordRange, clamp2) {
var xyMinMax = [
[Infinity, -Infinity],
[Infinity, -Infinity],
]
var values2 = map$1(rangeOrCoordRange, function (item2) {
var p2 = to
? coordSys.pointToData(item2, clamp2)
: coordSys.dataToPoint(item2, clamp2)
xyMinMax[0][0] = Math.min(xyMinMax[0][0], p2[0])
xyMinMax[1][0] = Math.min(xyMinMax[1][0], p2[1])
xyMinMax[0][1] = Math.max(xyMinMax[0][1], p2[0])
xyMinMax[1][1] = Math.max(xyMinMax[1][1], p2[1])
return p2
})
return {
values: values2,
xyMinMax,
}
},
}
function axisConvert(axisNameIndex, to, coordSys, rangeOrCoordRange) {
var axis = coordSys.getAxis(['x', 'y'][axisNameIndex])
var values2 = formatMinMax(
map$1([0, 1], function (i2) {
return to
? axis.coordToData(axis.toLocalCoord(rangeOrCoordRange[i2]), true)
: axis.toGlobalCoord(axis.dataToCoord(rangeOrCoordRange[i2]))
})
)
var xyMinMax = []
xyMinMax[axisNameIndex] = values2
xyMinMax[1 - axisNameIndex] = [NaN, NaN]
return {
values: values2,
xyMinMax,
}
}
var diffProcessor = {
lineX: curry$1(axisDiffProcessor, 0),
lineY: curry$1(axisDiffProcessor, 1),
rect: function (values2, refer, scales) {
return [
[
values2[0][0] - scales[0] * refer[0][0],
values2[0][1] - scales[0] * refer[0][1],
],
[
values2[1][0] - scales[1] * refer[1][0],
values2[1][1] - scales[1] * refer[1][1],
],
]
},
polygon: function (values2, refer, scales) {
return map$1(values2, function (item2, idx) {
return [
item2[0] - scales[0] * refer[idx][0],
item2[1] - scales[1] * refer[idx][1],
]
})
},
}
function axisDiffProcessor(axisNameIndex, values2, refer, scales) {
return [
values2[0] - scales[axisNameIndex] * refer[0],
values2[1] - scales[axisNameIndex] * refer[1],
]
}
function getScales(xyMinMaxCurr, xyMinMaxOrigin) {
var sizeCurr = getSize(xyMinMaxCurr)
var sizeOrigin = getSize(xyMinMaxOrigin)
var scales = [sizeCurr[0] / sizeOrigin[0], sizeCurr[1] / sizeOrigin[1]]
isNaN(scales[0]) && (scales[0] = 1)
isNaN(scales[1]) && (scales[1] = 1)
return scales
}
function getSize(xyMinMax) {
return xyMinMax
? [xyMinMax[0][1] - xyMinMax[0][0], xyMinMax[1][1] - xyMinMax[1][0]]
: [NaN, NaN]
}
var BrushTargetManager$1 = BrushTargetManager
var each$5 = each$f
var DATA_ZOOM_ID_BASE = makeInternalComponentId('toolbox-dataZoom_')
var DataZoomFeature = (function (_super) {
__extends$2(DataZoomFeature2, _super)
function DataZoomFeature2() {
return (_super !== null && _super.apply(this, arguments)) || this
}
DataZoomFeature2.prototype.render = function (
featureModel,
ecModel,
api,
payload
) {
if (!this._brushController) {
this._brushController = new BrushController$1(api.getZr())
this._brushController.on('brush', bind$1(this._onBrush, this)).mount()
}
updateZoomBtnStatus(featureModel, ecModel, this, payload, api)
updateBackBtnStatus(featureModel, ecModel)
}
DataZoomFeature2.prototype.onclick = function (ecModel, api, type4) {
handlers[type4].call(this)
}
DataZoomFeature2.prototype.remove = function (ecModel, api) {
this._brushController && this._brushController.unmount()
}
DataZoomFeature2.prototype.dispose = function (ecModel, api) {
this._brushController && this._brushController.dispose()
}
DataZoomFeature2.prototype._onBrush = function (eventParam) {
var areas = eventParam.areas
if (!eventParam.isEnd || !areas.length) {
return
}
var snapshot = {}
var ecModel = this.ecModel
this._brushController.updateCovers([])
var brushTargetManager = new BrushTargetManager$1(
makeAxisFinder(this.model),
ecModel,
{
include: ['grid'],
}
)
brushTargetManager.matchOutputRanges(
areas,
ecModel,
function (area, coordRange, coordSys) {
if (coordSys.type !== 'cartesian2d') {
return
}
var brushType = area.brushType
if (brushType === 'rect') {
setBatch('x', coordSys, coordRange[0])
setBatch('y', coordSys, coordRange[1])
} else {
setBatch(
{
lineX: 'x',
lineY: 'y',
}[brushType],
coordSys,
coordRange
)
}
}
)
push(ecModel, snapshot)
this._dispatchZoomAction(snapshot)
function setBatch(dimName, coordSys, minMax) {
var axis = coordSys.getAxis(dimName)
var axisModel = axis.model
var dataZoomModel = findDataZoom(dimName, axisModel, ecModel)
var minMaxSpan = dataZoomModel
.findRepresentativeAxisProxy(axisModel)
.getMinMaxSpan()
if (minMaxSpan.minValueSpan != null || minMaxSpan.maxValueSpan != null) {
minMax = sliderMove(
0,
minMax.slice(),
axis.scale.getExtent(),
0,
minMaxSpan.minValueSpan,
minMaxSpan.maxValueSpan
)
}
dataZoomModel &&
(snapshot[dataZoomModel.id] = {
dataZoomId: dataZoomModel.id,
startValue: minMax[0],
endValue: minMax[1],
})
}
function findDataZoom(dimName, axisModel, ecModel2) {
var found
ecModel2.eachComponent(
{
mainType: 'dataZoom',
subType: 'select',
},
function (dzModel) {
var has2 = dzModel.getAxisModel(dimName, axisModel.componentIndex)
has2 && (found = dzModel)
}
)
return found
}
}
DataZoomFeature2.prototype._dispatchZoomAction = function (snapshot) {
var batch = []
each$5(snapshot, function (batchItem, dataZoomId) {
batch.push(clone$4(batchItem))
})
batch.length &&
this.api.dispatchAction({
type: 'dataZoom',
from: this.uid,
batch,
})
}
DataZoomFeature2.getDefaultOption = function (ecModel) {
var defaultOption2 = {
show: true,
filterMode: 'filter',
icon: {
zoom: 'M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1',
back: 'M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26',
},
title: ecModel.getLocaleModel().get(['toolbox', 'dataZoom', 'title']),
brushStyle: {
borderWidth: 0,
color: 'rgba(210,219,238,0.2)',
},
}
return defaultOption2
}
return DataZoomFeature2
})(ToolboxFeature)
var handlers = {
zoom: function () {
var nextActive = !this._isZoomActive
this.api.dispatchAction({
type: 'takeGlobalCursor',
key: 'dataZoomSelect',
dataZoomSelectActive: nextActive,
})
},
back: function () {
this._dispatchZoomAction(pop(this.ecModel))
},
}
function makeAxisFinder(dzFeatureModel) {
var setting2 = {
xAxisIndex: dzFeatureModel.get('xAxisIndex', true),
yAxisIndex: dzFeatureModel.get('yAxisIndex', true),
xAxisId: dzFeatureModel.get('xAxisId', true),
yAxisId: dzFeatureModel.get('yAxisId', true),
}
if (setting2.xAxisIndex == null && setting2.xAxisId == null) {
setting2.xAxisIndex = 'all'
}
if (setting2.yAxisIndex == null && setting2.yAxisId == null) {
setting2.yAxisIndex = 'all'
}
return setting2
}
function updateBackBtnStatus(featureModel, ecModel) {
featureModel.setIconStatus(
'back',
count$1(ecModel) > 1 ? 'emphasis' : 'normal'
)
}
function updateZoomBtnStatus(featureModel, ecModel, view2, payload, api) {
var zoomActive = view2._isZoomActive
if (payload && payload.type === 'takeGlobalCursor') {
zoomActive =
payload.key === 'dataZoomSelect' ? payload.dataZoomSelectActive : false
}
view2._isZoomActive = zoomActive
featureModel.setIconStatus('zoom', zoomActive ? 'emphasis' : 'normal')
var brushTargetManager = new BrushTargetManager$1(
makeAxisFinder(featureModel),
ecModel,
{
include: ['grid'],
}
)
var panels = brushTargetManager.makePanelOpts(api, function (targetInfo) {
return targetInfo.xAxisDeclared && !targetInfo.yAxisDeclared
? 'lineX'
: !targetInfo.xAxisDeclared && targetInfo.yAxisDeclared
? 'lineY'
: 'rect'
})
view2._brushController.setPanels(panels).enableBrush(
zoomActive && panels.length
? {
brushType: 'auto',
brushStyle: featureModel.getModel('brushStyle').getItemStyle(),
}
: false
)
}
registerInternalOptionCreator('dataZoom', function (ecModel) {
var toolboxModel = ecModel.getComponent('toolbox', 0)
var featureDataZoomPath = ['feature', 'dataZoom']
if (!toolboxModel || toolboxModel.get(featureDataZoomPath) == null) {
return
}
var dzFeatureModel = toolboxModel.getModel(featureDataZoomPath)
var dzOptions = []
var finder = makeAxisFinder(dzFeatureModel)
var finderResult = parseFinder$1(ecModel, finder)
each$5(finderResult.xAxisModels, function (axisModel) {
return buildInternalOptions(axisModel, 'xAxis', 'xAxisIndex')
})
each$5(finderResult.yAxisModels, function (axisModel) {
return buildInternalOptions(axisModel, 'yAxis', 'yAxisIndex')
})
function buildInternalOptions(axisModel, axisMainType, axisIndexPropName) {
var axisIndex = axisModel.componentIndex
var newOpt = {
type: 'select',
$fromToolbox: true,
filterMode: dzFeatureModel.get('filterMode', true) || 'filter',
id: DATA_ZOOM_ID_BASE + axisMainType + axisIndex,
}
newOpt[axisIndexPropName] = axisIndex
dzOptions.push(newOpt)
}
return dzOptions
})
var DataZoom$2 = DataZoomFeature
function install$l(registers) {
registers.registerComponentModel(ToolboxModel$1)
registers.registerComponentView(ToolboxView$1)
registerFeature('saveAsImage', SaveAsImage$1)
registerFeature('magicType', MagicType$1)
registerFeature('dataView', DataView$4)
registerFeature('dataZoom', DataZoom$2)
registerFeature('restore', Restore)
use(install$m)
}
var TooltipModel = (function (_super) {
__extends$2(TooltipModel2, _super)
function TooltipModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = TooltipModel2.type
return _this
}
TooltipModel2.type = 'tooltip'
TooltipModel2.dependencies = ['axisPointer']
TooltipModel2.defaultOption = {
z: 60,
show: true,
showContent: true,
trigger: 'item',
triggerOn: 'mousemove|click',
alwaysShowContent: false,
displayMode: 'single',
renderMode: 'auto',
confine: null,
showDelay: 0,
hideDelay: 100,
transitionDuration: 0.4,
enterable: false,
backgroundColor: '#fff',
shadowBlur: 10,
shadowColor: 'rgba(0, 0, 0, .2)',
shadowOffsetX: 1,
shadowOffsetY: 2,
borderRadius: 4,
borderWidth: 1,
padding: null,
extraCssText: '',
axisPointer: {
type: 'line',
axis: 'auto',
animation: 'auto',
animationDurationUpdate: 200,
animationEasingUpdate: 'exponentialOut',
crossStyle: {
color: '#999',
width: 1,
type: 'dashed',
textStyle: {},
},
},
textStyle: {
color: '#666',
fontSize: 14,
},
}
return TooltipModel2
})(ComponentModel$1)
var TooltipModel$1 = TooltipModel
function shouldTooltipConfine(tooltipModel) {
var confineOption = tooltipModel.get('confine')
return confineOption != null
? !!confineOption
: tooltipModel.get('renderMode') === 'richText'
}
function testStyle(styleProps) {
if (!env$1.domSupported) {
return
}
var style2 = document.documentElement.style
for (var i2 = 0, len2 = styleProps.length; i2 < len2; i2++) {
if (styleProps[i2] in style2) {
return styleProps[i2]
}
}
}
var TRANSFORM_VENDOR = testStyle([
'transform',
'webkitTransform',
'OTransform',
'MozTransform',
'msTransform',
])
var TRANSITION_VENDOR = testStyle([
'webkitTransition',
'transition',
'OTransition',
'MozTransition',
'msTransition',
])
function toCSSVendorPrefix(styleVendor, styleProp) {
if (!styleVendor) {
return styleProp
}
styleProp = toCamelCase(styleProp, true)
var idx = styleVendor.indexOf(styleProp)
styleVendor =
idx === -1 ? styleProp : '-' + styleVendor.slice(0, idx) + '-' + styleProp
return styleVendor.toLowerCase()
}
function getComputedStyle$1(el2, style2) {
var stl =
el2.currentStyle ||
(document.defaultView && document.defaultView.getComputedStyle(el2))
return stl ? (style2 ? stl[style2] : stl) : null
}
var CSS_TRANSITION_VENDOR = toCSSVendorPrefix(TRANSITION_VENDOR, 'transition')
var CSS_TRANSFORM_VENDOR = toCSSVendorPrefix(TRANSFORM_VENDOR, 'transform')
var gCssText =
'position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;' +
(env$1.transform3dSupported ? 'will-change:transform;' : '')
function mirrorPos(pos) {
pos =
pos === 'left'
? 'right'
: pos === 'right'
? 'left'
: pos === 'top'
? 'bottom'
: 'top'
return pos
}
function assembleArrow(tooltipModel, borderColor, arrowPosition) {
if (!isString$2(arrowPosition) || arrowPosition === 'inside') {
return ''
}
var backgroundColor2 = tooltipModel.get('backgroundColor')
var borderWidth = tooltipModel.get('borderWidth')
borderColor = convertToColorString(borderColor)
var arrowPos = mirrorPos(arrowPosition)
var arrowSize = Math.max(Math.round(borderWidth) * 1.5, 6)
var positionStyle = ''
var transformStyle = CSS_TRANSFORM_VENDOR + ':'
var rotateDeg
if (indexOf(['left', 'right'], arrowPos) > -1) {
positionStyle += 'top:50%'
transformStyle +=
'translateY(-50%) rotate(' +
(rotateDeg = arrowPos === 'left' ? -225 : -45) +
'deg)'
} else {
positionStyle += 'left:50%'
transformStyle +=
'translateX(-50%) rotate(' +
(rotateDeg = arrowPos === 'top' ? 225 : 45) +
'deg)'
}
var rotateRadian = (rotateDeg * Math.PI) / 180
var arrowWH = arrowSize + borderWidth
var rotatedWH =
arrowWH * Math.abs(Math.cos(rotateRadian)) +
arrowWH * Math.abs(Math.sin(rotateRadian))
var arrowOffset =
Math.round(
((rotatedWH - Math.SQRT2 * borderWidth) / 2 +
Math.SQRT2 * borderWidth -
(rotatedWH - arrowWH) / 2) *
100
) / 100
positionStyle += ';' + arrowPos + ':-' + arrowOffset + 'px'
var borderStyle = borderColor + ' solid ' + borderWidth + 'px;'
var styleCss = [
'position:absolute;width:' +
arrowSize +
'px;height:' +
arrowSize +
'px;z-index:-1;',
positionStyle + ';' + transformStyle + ';',
'border-bottom:' + borderStyle,
'border-right:' + borderStyle,
'background-color:' + backgroundColor2 + ';',
]
return ''
}
function assembleTransition(duration2, onlyFade) {
var transitionCurve = 'cubic-bezier(0.23,1,0.32,1)'
var transitionOption = ' ' + duration2 / 2 + 's ' + transitionCurve
var transitionText =
'opacity' + transitionOption + ',visibility' + transitionOption
if (!onlyFade) {
transitionOption = ' ' + duration2 + 's ' + transitionCurve
transitionText += env$1.transformSupported
? ',' + CSS_TRANSFORM_VENDOR + transitionOption
: ',left' + transitionOption + ',top' + transitionOption
}
return CSS_TRANSITION_VENDOR + ':' + transitionText
}
function assembleTransform(x2, y2, toString4) {
var x0 = x2.toFixed(0) + 'px'
var y0 = y2.toFixed(0) + 'px'
if (!env$1.transformSupported) {
return toString4
? 'top:' + y0 + ';left:' + x0 + ';'
: [
['top', y0],
['left', x0],
]
}
var is3d = env$1.transform3dSupported
var translate2 =
'translate' +
(is3d ? '3d' : '') +
'(' +
x0 +
',' +
y0 +
(is3d ? ',0' : '') +
')'
return toString4
? 'top:0;left:0;' + CSS_TRANSFORM_VENDOR + ':' + translate2 + ';'
: [
['top', 0],
['left', 0],
[TRANSFORM_VENDOR, translate2],
]
}
function assembleFont(textStyleModel) {
var cssText = []
var fontSize2 = textStyleModel.get('fontSize')
var color2 = textStyleModel.getTextColor()
color2 && cssText.push('color:' + color2)
cssText.push('font:' + textStyleModel.getFont())
fontSize2 &&
cssText.push('line-height:' + Math.round((fontSize2 * 3) / 2) + 'px')
var shadowColor = textStyleModel.get('textShadowColor')
var shadowBlur = textStyleModel.get('textShadowBlur') || 0
var shadowOffsetX = textStyleModel.get('textShadowOffsetX') || 0
var shadowOffsetY = textStyleModel.get('textShadowOffsetY') || 0
shadowColor &&
shadowBlur &&
cssText.push(
'text-shadow:' +
shadowOffsetX +
'px ' +
shadowOffsetY +
'px ' +
shadowBlur +
'px ' +
shadowColor
)
each$f(['decoration', 'align'], function (name2) {
var val2 = textStyleModel.get(name2)
val2 && cssText.push('text-' + name2 + ':' + val2)
})
return cssText.join(';')
}
function assembleCssText(tooltipModel, enableTransition, onlyFade) {
var cssText = []
var transitionDuration = tooltipModel.get('transitionDuration')
var backgroundColor2 = tooltipModel.get('backgroundColor')
var shadowBlur = tooltipModel.get('shadowBlur')
var shadowColor = tooltipModel.get('shadowColor')
var shadowOffsetX = tooltipModel.get('shadowOffsetX')
var shadowOffsetY = tooltipModel.get('shadowOffsetY')
var textStyleModel = tooltipModel.getModel('textStyle')
var padding = getPaddingFromTooltipModel(tooltipModel, 'html')
var boxShadow2 =
shadowOffsetX +
'px ' +
shadowOffsetY +
'px ' +
shadowBlur +
'px ' +
shadowColor
cssText.push('box-shadow:' + boxShadow2)
enableTransition &&
transitionDuration &&
cssText.push(assembleTransition(transitionDuration, onlyFade))
if (backgroundColor2) {
cssText.push('background-color:' + backgroundColor2)
}
each$f(['width', 'color', 'radius'], function (name2) {
var borderName = 'border-' + name2
var camelCase2 = toCamelCase(borderName)
var val2 = tooltipModel.get(camelCase2)
val2 != null &&
cssText.push(borderName + ':' + val2 + (name2 === 'color' ? '' : 'px'))
})
cssText.push(assembleFont(textStyleModel))
if (padding != null) {
cssText.push('padding:' + normalizeCssArray(padding).join('px ') + 'px')
}
return cssText.join(';') + ';'
}
function makeStyleCoord$1(out2, zr, appendToBody, zrX, zrY) {
var zrPainter = zr && zr.painter
if (appendToBody) {
var zrViewportRoot = zrPainter && zrPainter.getViewportRoot()
if (zrViewportRoot) {
transformLocalCoord(out2, zrViewportRoot, document.body, zrX, zrY)
}
} else {
out2[0] = zrX
out2[1] = zrY
var viewportRootOffset = zrPainter && zrPainter.getViewportRootOffset()
if (viewportRootOffset) {
out2[0] += viewportRootOffset.offsetLeft
out2[1] += viewportRootOffset.offsetTop
}
}
out2[2] = out2[0] / zr.getWidth()
out2[3] = out2[1] / zr.getHeight()
}
var TooltipHTMLContent = (function () {
function TooltipHTMLContent2(container, api, opt) {
this._show = false
this._styleCoord = [0, 0, 0, 0]
this._enterable = true
this._alwaysShowContent = false
this._firstShow = true
this._longHide = true
if (env$1.wxa) {
return null
}
var el2 = document.createElement('div')
el2.domBelongToZr = true
this.el = el2
var zr = (this._zr = api.getZr())
var appendToBody = (this._appendToBody = opt && opt.appendToBody)
makeStyleCoord$1(
this._styleCoord,
zr,
appendToBody,
api.getWidth() / 2,
api.getHeight() / 2
)
if (appendToBody) {
document.body.appendChild(el2)
} else {
container.appendChild(el2)
}
this._container = container
var self2 = this
el2.onmouseenter = function () {
if (self2._enterable) {
clearTimeout(self2._hideTimeout)
self2._show = true
}
self2._inContent = true
}
el2.onmousemove = function (e2) {
e2 = e2 || window.event
if (!self2._enterable) {
var handler = zr.handler
var zrViewportRoot = zr.painter.getViewportRoot()
normalizeEvent(zrViewportRoot, e2, true)
handler.dispatch('mousemove', e2)
}
}
el2.onmouseleave = function () {
self2._inContent = false
if (self2._enterable) {
if (self2._show) {
self2.hideLater(self2._hideDelay)
}
}
}
}
TooltipHTMLContent2.prototype.update = function (tooltipModel) {
var container = this._container
var position2 = getComputedStyle$1(container, 'position')
var domStyle = container.style
if (domStyle.position !== 'absolute' && position2 !== 'absolute') {
domStyle.position = 'relative'
}
var alwaysShowContent = tooltipModel.get('alwaysShowContent')
alwaysShowContent && this._moveIfResized()
this._alwaysShowContent = alwaysShowContent
this.el.className = tooltipModel.get('className') || ''
}
TooltipHTMLContent2.prototype.show = function (tooltipModel, nearPointColor) {
clearTimeout(this._hideTimeout)
clearTimeout(this._longHideTimeout)
var el2 = this.el
var style2 = el2.style
var styleCoord = this._styleCoord
if (!el2.innerHTML) {
style2.display = 'none'
} else {
style2.cssText =
gCssText +
assembleCssText(tooltipModel, !this._firstShow, this._longHide) +
assembleTransform(styleCoord[0], styleCoord[1], true) +
('border-color:' + convertToColorString(nearPointColor) + ';') +
(tooltipModel.get('extraCssText') || '') +
(';pointer-events:' + (this._enterable ? 'auto' : 'none'))
}
this._show = true
this._firstShow = false
this._longHide = false
}
TooltipHTMLContent2.prototype.setContent = function (
content2,
markers,
tooltipModel,
borderColor,
arrowPosition
) {
var el2 = this.el
if (content2 == null) {
el2.innerHTML = ''
return
}
var arrow2 = ''
if (
isString$2(arrowPosition) &&
tooltipModel.get('trigger') === 'item' &&
!shouldTooltipConfine(tooltipModel)
) {
arrow2 = assembleArrow(tooltipModel, borderColor, arrowPosition)
}
if (isString$2(content2)) {
el2.innerHTML = content2 + arrow2
} else if (content2) {
el2.innerHTML = ''
if (!isArray$6(content2)) {
content2 = [content2]
}
for (var i2 = 0; i2 < content2.length; i2++) {
if (isDom(content2[i2]) && content2[i2].parentNode !== el2) {
el2.appendChild(content2[i2])
}
}
if (arrow2 && el2.childNodes.length) {
var arrowEl = document.createElement('div')
arrowEl.innerHTML = arrow2
el2.appendChild(arrowEl)
}
}
}
TooltipHTMLContent2.prototype.setEnterable = function (enterable) {
this._enterable = enterable
}
TooltipHTMLContent2.prototype.getSize = function () {
var el2 = this.el
return [el2.offsetWidth, el2.offsetHeight]
}
TooltipHTMLContent2.prototype.moveTo = function (zrX, zrY) {
var styleCoord = this._styleCoord
makeStyleCoord$1(styleCoord, this._zr, this._appendToBody, zrX, zrY)
if (styleCoord[0] != null && styleCoord[1] != null) {
var style_1 = this.el.style
var transforms = assembleTransform(styleCoord[0], styleCoord[1])
each$f(transforms, function (transform3) {
style_1[transform3[0]] = transform3[1]
})
}
}
TooltipHTMLContent2.prototype._moveIfResized = function () {
var ratioX = this._styleCoord[2]
var ratioY = this._styleCoord[3]
this.moveTo(ratioX * this._zr.getWidth(), ratioY * this._zr.getHeight())
}
TooltipHTMLContent2.prototype.hide = function () {
var _this = this
var style2 = this.el.style
style2.visibility = 'hidden'
style2.opacity = '0'
env$1.transform3dSupported && (style2.willChange = '')
this._show = false
this._longHideTimeout = setTimeout(function () {
return (_this._longHide = true)
}, 500)
}
TooltipHTMLContent2.prototype.hideLater = function (time2) {
if (
this._show &&
!(this._inContent && this._enterable) &&
!this._alwaysShowContent
) {
if (time2) {
this._hideDelay = time2
this._show = false
this._hideTimeout = setTimeout(bind$1(this.hide, this), time2)
} else {
this.hide()
}
}
}
TooltipHTMLContent2.prototype.isShow = function () {
return this._show
}
TooltipHTMLContent2.prototype.dispose = function () {
this.el.parentNode.removeChild(this.el)
}
return TooltipHTMLContent2
})()
var TooltipHTMLContent$1 = TooltipHTMLContent
var TooltipRichContent = (function () {
function TooltipRichContent2(api) {
this._show = false
this._styleCoord = [0, 0, 0, 0]
this._alwaysShowContent = false
this._enterable = true
this._zr = api.getZr()
makeStyleCoord(
this._styleCoord,
this._zr,
api.getWidth() / 2,
api.getHeight() / 2
)
}
TooltipRichContent2.prototype.update = function (tooltipModel) {
var alwaysShowContent = tooltipModel.get('alwaysShowContent')
alwaysShowContent && this._moveIfResized()
this._alwaysShowContent = alwaysShowContent
}
TooltipRichContent2.prototype.show = function () {
if (this._hideTimeout) {
clearTimeout(this._hideTimeout)
}
this.el.show()
this._show = true
}
TooltipRichContent2.prototype.setContent = function (
content2,
markupStyleCreator,
tooltipModel,
borderColor,
arrowPosition
) {
var _this = this
if (isObject$b(content2)) {
throwError('')
}
if (this.el) {
this._zr.remove(this.el)
}
var textStyleModel = tooltipModel.getModel('textStyle')
this.el = new ZRText$1({
style: {
rich: markupStyleCreator.richTextStyles,
text: content2,
lineHeight: 22,
borderWidth: 1,
borderColor,
textShadowColor: textStyleModel.get('textShadowColor'),
fill: tooltipModel.get(['textStyle', 'color']),
padding: getPaddingFromTooltipModel(tooltipModel, 'richText'),
verticalAlign: 'top',
align: 'left',
},
z: tooltipModel.get('z'),
})
each$f(
[
'backgroundColor',
'borderRadius',
'shadowColor',
'shadowBlur',
'shadowOffsetX',
'shadowOffsetY',
],
function (propName) {
_this.el.style[propName] = tooltipModel.get(propName)
}
)
each$f(
['textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY'],
function (propName) {
_this.el.style[propName] = textStyleModel.get(propName) || 0
}
)
this._zr.add(this.el)
var self2 = this
this.el.on('mouseover', function () {
if (self2._enterable) {
clearTimeout(self2._hideTimeout)
self2._show = true
}
self2._inContent = true
})
this.el.on('mouseout', function () {
if (self2._enterable) {
if (self2._show) {
self2.hideLater(self2._hideDelay)
}
}
self2._inContent = false
})
}
TooltipRichContent2.prototype.setEnterable = function (enterable) {
this._enterable = enterable
}
TooltipRichContent2.prototype.getSize = function () {
var el2 = this.el
var bounding = this.el.getBoundingRect()
var shadowOuterSize = calcShadowOuterSize(el2.style)
return [
bounding.width + shadowOuterSize.left + shadowOuterSize.right,
bounding.height + shadowOuterSize.top + shadowOuterSize.bottom,
]
}
TooltipRichContent2.prototype.moveTo = function (x2, y2) {
var el2 = this.el
if (el2) {
var styleCoord = this._styleCoord
makeStyleCoord(styleCoord, this._zr, x2, y2)
x2 = styleCoord[0]
y2 = styleCoord[1]
var style2 = el2.style
var borderWidth = mathMaxWith0(style2.borderWidth || 0)
var shadowOuterSize = calcShadowOuterSize(style2)
el2.x = x2 + borderWidth + shadowOuterSize.left
el2.y = y2 + borderWidth + shadowOuterSize.top
el2.markRedraw()
}
}
TooltipRichContent2.prototype._moveIfResized = function () {
var ratioX = this._styleCoord[2]
var ratioY = this._styleCoord[3]
this.moveTo(ratioX * this._zr.getWidth(), ratioY * this._zr.getHeight())
}
TooltipRichContent2.prototype.hide = function () {
if (this.el) {
this.el.hide()
}
this._show = false
}
TooltipRichContent2.prototype.hideLater = function (time2) {
if (
this._show &&
!(this._inContent && this._enterable) &&
!this._alwaysShowContent
) {
if (time2) {
this._hideDelay = time2
this._show = false
this._hideTimeout = setTimeout(bind$1(this.hide, this), time2)
} else {
this.hide()
}
}
}
TooltipRichContent2.prototype.isShow = function () {
return this._show
}
TooltipRichContent2.prototype.dispose = function () {
this._zr.remove(this.el)
}
return TooltipRichContent2
})()
function mathMaxWith0(val2) {
return Math.max(0, val2)
}
function calcShadowOuterSize(style2) {
var shadowBlur = mathMaxWith0(style2.shadowBlur || 0)
var shadowOffsetX = mathMaxWith0(style2.shadowOffsetX || 0)
var shadowOffsetY = mathMaxWith0(style2.shadowOffsetY || 0)
return {
left: mathMaxWith0(shadowBlur - shadowOffsetX),
right: mathMaxWith0(shadowBlur + shadowOffsetX),
top: mathMaxWith0(shadowBlur - shadowOffsetY),
bottom: mathMaxWith0(shadowBlur + shadowOffsetY),
}
}
function makeStyleCoord(out2, zr, zrX, zrY) {
out2[0] = zrX
out2[1] = zrY
out2[2] = out2[0] / zr.getWidth()
out2[3] = out2[1] / zr.getHeight()
}
var TooltipRichContent$1 = TooltipRichContent
var proxyRect = new Rect$4({
shape: {
x: -1,
y: -1,
width: 2,
height: 2,
},
})
var TooltipView = (function (_super) {
__extends$2(TooltipView2, _super)
function TooltipView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = TooltipView2.type
return _this
}
TooltipView2.prototype.init = function (ecModel, api) {
if (env$1.node || !api.getDom()) {
return
}
var tooltipModel = ecModel.getComponent('tooltip')
var renderMode = (this._renderMode = getTooltipRenderMode(
tooltipModel.get('renderMode')
))
this._tooltipContent =
renderMode === 'richText'
? new TooltipRichContent$1(api)
: new TooltipHTMLContent$1(api.getDom(), api, {
appendToBody: tooltipModel.get('appendToBody', true),
})
}
TooltipView2.prototype.render = function (tooltipModel, ecModel, api) {
if (env$1.node || !api.getDom()) {
return
}
this.group.removeAll()
this._tooltipModel = tooltipModel
this._ecModel = ecModel
this._api = api
var tooltipContent = this._tooltipContent
tooltipContent.update(tooltipModel)
tooltipContent.setEnterable(tooltipModel.get('enterable'))
this._initGlobalListener()
this._keepShow()
if (
this._renderMode !== 'richText' &&
tooltipModel.get('transitionDuration')
) {
createOrUpdate(this, '_updatePosition', 50, 'fixRate')
} else {
clear$1(this, '_updatePosition')
}
}
TooltipView2.prototype._initGlobalListener = function () {
var tooltipModel = this._tooltipModel
var triggerOn = tooltipModel.get('triggerOn')
register(
'itemTooltip',
this._api,
bind$1(function (currTrigger, e2, dispatchAction2) {
if (triggerOn !== 'none') {
if (triggerOn.indexOf(currTrigger) >= 0) {
this._tryShow(e2, dispatchAction2)
} else if (currTrigger === 'leave') {
this._hide(dispatchAction2)
}
}
}, this)
)
}
TooltipView2.prototype._keepShow = function () {
var tooltipModel = this._tooltipModel
var ecModel = this._ecModel
var api = this._api
var triggerOn = tooltipModel.get('triggerOn')
if (
this._lastX != null &&
this._lastY != null &&
triggerOn !== 'none' &&
triggerOn !== 'click'
) {
var self_1 = this
clearTimeout(this._refreshUpdateTimeout)
this._refreshUpdateTimeout = setTimeout(function () {
!api.isDisposed() &&
self_1.manuallyShowTip(tooltipModel, ecModel, api, {
x: self_1._lastX,
y: self_1._lastY,
dataByCoordSys: self_1._lastDataByCoordSys,
})
})
}
}
TooltipView2.prototype.manuallyShowTip = function (
tooltipModel,
ecModel,
api,
payload
) {
if (payload.from === this.uid || env$1.node || !api.getDom()) {
return
}
var dispatchAction2 = makeDispatchAction(payload, api)
this._ticket = ''
var dataByCoordSys = payload.dataByCoordSys
var cmptRef = findComponentReference(payload, ecModel, api)
if (cmptRef) {
var rect = cmptRef.el.getBoundingRect().clone()
rect.applyTransform(cmptRef.el.transform)
this._tryShow(
{
offsetX: rect.x + rect.width / 2,
offsetY: rect.y + rect.height / 2,
target: cmptRef.el,
position: payload.position,
positionDefault: 'bottom',
},
dispatchAction2
)
} else if (payload.tooltip && payload.x != null && payload.y != null) {
var el2 = proxyRect
el2.x = payload.x
el2.y = payload.y
el2.update()
getECData(el2).tooltipConfig = {
name: null,
option: payload.tooltip,
}
this._tryShow(
{
offsetX: payload.x,
offsetY: payload.y,
target: el2,
},
dispatchAction2
)
} else if (dataByCoordSys) {
this._tryShow(
{
offsetX: payload.x,
offsetY: payload.y,
position: payload.position,
dataByCoordSys,
tooltipOption: payload.tooltipOption,
},
dispatchAction2
)
} else if (payload.seriesIndex != null) {
if (this._manuallyAxisShowTip(tooltipModel, ecModel, api, payload)) {
return
}
var pointInfo = findPointFromSeries(payload, ecModel)
var cx = pointInfo.point[0]
var cy = pointInfo.point[1]
if (cx != null && cy != null) {
this._tryShow(
{
offsetX: cx,
offsetY: cy,
target: pointInfo.el,
position: payload.position,
positionDefault: 'bottom',
},
dispatchAction2
)
}
} else if (payload.x != null && payload.y != null) {
api.dispatchAction({
type: 'updateAxisPointer',
x: payload.x,
y: payload.y,
})
this._tryShow(
{
offsetX: payload.x,
offsetY: payload.y,
position: payload.position,
target: api.getZr().findHover(payload.x, payload.y).target,
},
dispatchAction2
)
}
}
TooltipView2.prototype.manuallyHideTip = function (
tooltipModel,
ecModel,
api,
payload
) {
var tooltipContent = this._tooltipContent
if (this._tooltipModel) {
tooltipContent.hideLater(this._tooltipModel.get('hideDelay'))
}
this._lastX = this._lastY = this._lastDataByCoordSys = null
if (payload.from !== this.uid) {
this._hide(makeDispatchAction(payload, api))
}
}
TooltipView2.prototype._manuallyAxisShowTip = function (
tooltipModel,
ecModel,
api,
payload
) {
var seriesIndex = payload.seriesIndex
var dataIndex = payload.dataIndex
var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo
if (seriesIndex == null || dataIndex == null || coordSysAxesInfo == null) {
return
}
var seriesModel = ecModel.getSeriesByIndex(seriesIndex)
if (!seriesModel) {
return
}
var data2 = seriesModel.getData()
var tooltipCascadedModel = buildTooltipModel(
[
data2.getItemModel(dataIndex),
seriesModel,
(seriesModel.coordinateSystem || {}).model,
],
this._tooltipModel
)
if (tooltipCascadedModel.get('trigger') !== 'axis') {
return
}
api.dispatchAction({
type: 'updateAxisPointer',
seriesIndex,
dataIndex,
position: payload.position,
})
return true
}
TooltipView2.prototype._tryShow = function (e2, dispatchAction2) {
var el2 = e2.target
var tooltipModel = this._tooltipModel
if (!tooltipModel) {
return
}
this._lastX = e2.offsetX
this._lastY = e2.offsetY
var dataByCoordSys = e2.dataByCoordSys
if (dataByCoordSys && dataByCoordSys.length) {
this._showAxisTooltip(dataByCoordSys, e2)
} else if (el2) {
this._lastDataByCoordSys = null
var seriesDispatcher_1
var cmptDispatcher_1
findEventDispatcher(
el2,
function (target2) {
if (getECData(target2).dataIndex != null) {
seriesDispatcher_1 = target2
return true
}
if (getECData(target2).tooltipConfig != null) {
cmptDispatcher_1 = target2
return true
}
},
true
)
if (seriesDispatcher_1) {
this._showSeriesItemTooltip(e2, seriesDispatcher_1, dispatchAction2)
} else if (cmptDispatcher_1) {
this._showComponentItemTooltip(e2, cmptDispatcher_1, dispatchAction2)
} else {
this._hide(dispatchAction2)
}
} else {
this._lastDataByCoordSys = null
this._hide(dispatchAction2)
}
}
TooltipView2.prototype._showOrMove = function (tooltipModel, cb) {
var delay2 = tooltipModel.get('showDelay')
cb = bind$1(cb, this)
clearTimeout(this._showTimout)
delay2 > 0 ? (this._showTimout = setTimeout(cb, delay2)) : cb()
}
TooltipView2.prototype._showAxisTooltip = function (dataByCoordSys, e2) {
var ecModel = this._ecModel
var globalTooltipModel = this._tooltipModel
var point = [e2.offsetX, e2.offsetY]
var singleTooltipModel = buildTooltipModel(
[e2.tooltipOption],
globalTooltipModel
)
var renderMode = this._renderMode
var cbParamsList = []
var articleMarkup = createTooltipMarkup('section', {
blocks: [],
noHeader: true,
})
var markupTextArrLegacy = []
var markupStyleCreator = new TooltipMarkupStyleCreator()
each$f(dataByCoordSys, function (itemCoordSys) {
each$f(itemCoordSys.dataByAxis, function (axisItem) {
var axisModel = ecModel.getComponent(
axisItem.axisDim + 'Axis',
axisItem.axisIndex
)
var axisValue = axisItem.value
if (!axisModel || axisValue == null) {
return
}
var axisValueLabel = getValueLabel(
axisValue,
axisModel.axis,
ecModel,
axisItem.seriesDataIndices,
axisItem.valueLabelOpt
)
var axisSectionMarkup = createTooltipMarkup('section', {
header: axisValueLabel,
noHeader: !trim$1(axisValueLabel),
sortBlocks: true,
blocks: [],
})
articleMarkup.blocks.push(axisSectionMarkup)
each$f(axisItem.seriesDataIndices, function (idxItem) {
var series = ecModel.getSeriesByIndex(idxItem.seriesIndex)
var dataIndex = idxItem.dataIndexInside
var cbParams = series.getDataParams(dataIndex)
if (cbParams.dataIndex < 0) {
return
}
cbParams.axisDim = axisItem.axisDim
cbParams.axisIndex = axisItem.axisIndex
cbParams.axisType = axisItem.axisType
cbParams.axisId = axisItem.axisId
cbParams.axisValue = getAxisRawValue(axisModel.axis, {
value: axisValue,
})
cbParams.axisValueLabel = axisValueLabel
cbParams.marker = markupStyleCreator.makeTooltipMarker(
'item',
convertToColorString(cbParams.color),
renderMode
)
var seriesTooltipResult = normalizeTooltipFormatResult(
series.formatTooltip(dataIndex, true, null)
)
var frag = seriesTooltipResult.frag
if (frag) {
var valueFormatter = buildTooltipModel(
[series],
globalTooltipModel
).get('valueFormatter')
axisSectionMarkup.blocks.push(
valueFormatter
? extend(
{
valueFormatter,
},
frag
)
: frag
)
}
if (seriesTooltipResult.text) {
markupTextArrLegacy.push(seriesTooltipResult.text)
}
cbParamsList.push(cbParams)
})
})
})
articleMarkup.blocks.reverse()
markupTextArrLegacy.reverse()
var positionExpr = e2.position
var orderMode = singleTooltipModel.get('order')
var builtMarkupText = buildTooltipMarkup(
articleMarkup,
markupStyleCreator,
renderMode,
orderMode,
ecModel.get('useUTC'),
singleTooltipModel.get('textStyle')
)
builtMarkupText && markupTextArrLegacy.unshift(builtMarkupText)
var blockBreak = renderMode === 'richText' ? '\n\n' : '
'
var allMarkupText = markupTextArrLegacy.join(blockBreak)
this._showOrMove(singleTooltipModel, function () {
if (this._updateContentNotChangedOnAxis(dataByCoordSys, cbParamsList)) {
this._updatePosition(
singleTooltipModel,
positionExpr,
point[0],
point[1],
this._tooltipContent,
cbParamsList
)
} else {
this._showTooltipContent(
singleTooltipModel,
allMarkupText,
cbParamsList,
Math.random() + '',
point[0],
point[1],
positionExpr,
null,
markupStyleCreator
)
}
})
}
TooltipView2.prototype._showSeriesItemTooltip = function (
e2,
dispatcher,
dispatchAction2
) {
var ecModel = this._ecModel
var ecData = getECData(dispatcher)
var seriesIndex = ecData.seriesIndex
var seriesModel = ecModel.getSeriesByIndex(seriesIndex)
var dataModel = ecData.dataModel || seriesModel
var dataIndex = ecData.dataIndex
var dataType2 = ecData.dataType
var data2 = dataModel.getData(dataType2)
var renderMode = this._renderMode
var positionDefault = e2.positionDefault
var tooltipModel = buildTooltipModel(
[
data2.getItemModel(dataIndex),
dataModel,
seriesModel && (seriesModel.coordinateSystem || {}).model,
],
this._tooltipModel,
positionDefault
? {
position: positionDefault,
}
: null
)
var tooltipTrigger = tooltipModel.get('trigger')
if (tooltipTrigger != null && tooltipTrigger !== 'item') {
return
}
var params2 = dataModel.getDataParams(dataIndex, dataType2)
var markupStyleCreator = new TooltipMarkupStyleCreator()
params2.marker = markupStyleCreator.makeTooltipMarker(
'item',
convertToColorString(params2.color),
renderMode
)
var seriesTooltipResult = normalizeTooltipFormatResult(
dataModel.formatTooltip(dataIndex, false, dataType2)
)
var orderMode = tooltipModel.get('order')
var valueFormatter = tooltipModel.get('valueFormatter')
var frag = seriesTooltipResult.frag
var markupText = frag
? buildTooltipMarkup(
valueFormatter
? extend(
{
valueFormatter,
},
frag
)
: frag,
markupStyleCreator,
renderMode,
orderMode,
ecModel.get('useUTC'),
tooltipModel.get('textStyle')
)
: seriesTooltipResult.text
var asyncTicket = 'item_' + dataModel.name + '_' + dataIndex
this._showOrMove(tooltipModel, function () {
this._showTooltipContent(
tooltipModel,
markupText,
params2,
asyncTicket,
e2.offsetX,
e2.offsetY,
e2.position,
e2.target,
markupStyleCreator
)
})
dispatchAction2({
type: 'showTip',
dataIndexInside: dataIndex,
dataIndex: data2.getRawIndex(dataIndex),
seriesIndex,
from: this.uid,
})
}
TooltipView2.prototype._showComponentItemTooltip = function (
e2,
el2,
dispatchAction2
) {
var ecData = getECData(el2)
var tooltipConfig = ecData.tooltipConfig
var tooltipOpt = tooltipConfig.option || {}
if (isString$2(tooltipOpt)) {
var content2 = tooltipOpt
tooltipOpt = {
content: content2,
formatter: content2,
}
}
var tooltipModelCascade = [tooltipOpt]
var cmpt = this._ecModel.getComponent(
ecData.componentMainType,
ecData.componentIndex
)
if (cmpt) {
tooltipModelCascade.push(cmpt)
}
tooltipModelCascade.push({
formatter: tooltipOpt.content,
})
var positionDefault = e2.positionDefault
var subTooltipModel = buildTooltipModel(
tooltipModelCascade,
this._tooltipModel,
positionDefault
? {
position: positionDefault,
}
: null
)
var defaultHtml = subTooltipModel.get('content')
var asyncTicket = Math.random() + ''
var markupStyleCreator = new TooltipMarkupStyleCreator()
this._showOrMove(subTooltipModel, function () {
var formatterParams = clone$4(
subTooltipModel.get('formatterParams') || {}
)
this._showTooltipContent(
subTooltipModel,
defaultHtml,
formatterParams,
asyncTicket,
e2.offsetX,
e2.offsetY,
e2.position,
el2,
markupStyleCreator
)
})
dispatchAction2({
type: 'showTip',
from: this.uid,
})
}
TooltipView2.prototype._showTooltipContent = function (
tooltipModel,
defaultHtml,
params2,
asyncTicket,
x2,
y2,
positionExpr,
el2,
markupStyleCreator
) {
this._ticket = ''
if (!tooltipModel.get('showContent') || !tooltipModel.get('show')) {
return
}
var tooltipContent = this._tooltipContent
tooltipContent.setEnterable(tooltipModel.get('enterable'))
var formatter2 = tooltipModel.get('formatter')
positionExpr = positionExpr || tooltipModel.get('position')
var html2 = defaultHtml
var nearPoint = this._getNearestPoint(
[x2, y2],
params2,
tooltipModel.get('trigger'),
tooltipModel.get('borderColor')
)
var nearPointColor = nearPoint.color
if (formatter2) {
if (isString$2(formatter2)) {
var useUTC = tooltipModel.ecModel.get('useUTC')
var params0 = isArray$6(params2) ? params2[0] : params2
var isTimeAxis =
params0 && params0.axisType && params0.axisType.indexOf('time') >= 0
html2 = formatter2
if (isTimeAxis) {
html2 = format$3(params0.axisValue, html2, useUTC)
}
html2 = formatTpl(html2, params2, true)
} else if (isFunction$4(formatter2)) {
var callback = bind$1(function (cbTicket, html3) {
if (cbTicket === this._ticket) {
tooltipContent.setContent(
html3,
markupStyleCreator,
tooltipModel,
nearPointColor,
positionExpr
)
this._updatePosition(
tooltipModel,
positionExpr,
x2,
y2,
tooltipContent,
params2,
el2
)
}
}, this)
this._ticket = asyncTicket
html2 = formatter2(params2, asyncTicket, callback)
} else {
html2 = formatter2
}
}
tooltipContent.setContent(
html2,
markupStyleCreator,
tooltipModel,
nearPointColor,
positionExpr
)
tooltipContent.show(tooltipModel, nearPointColor)
this._updatePosition(
tooltipModel,
positionExpr,
x2,
y2,
tooltipContent,
params2,
el2
)
}
TooltipView2.prototype._getNearestPoint = function (
point,
tooltipDataParams,
trigger2,
borderColor
) {
if (trigger2 === 'axis' || isArray$6(tooltipDataParams)) {
return {
color: borderColor || (this._renderMode === 'html' ? '#fff' : 'none'),
}
}
if (!isArray$6(tooltipDataParams)) {
return {
color:
borderColor ||
tooltipDataParams.color ||
tooltipDataParams.borderColor,
}
}
}
TooltipView2.prototype._updatePosition = function (
tooltipModel,
positionExpr,
x2,
y2,
content2,
params2,
el2
) {
var viewWidth = this._api.getWidth()
var viewHeight = this._api.getHeight()
positionExpr = positionExpr || tooltipModel.get('position')
var contentSize = content2.getSize()
var align = tooltipModel.get('align')
var vAlign = tooltipModel.get('verticalAlign')
var rect = el2 && el2.getBoundingRect().clone()
el2 && rect.applyTransform(el2.transform)
if (isFunction$4(positionExpr)) {
positionExpr = positionExpr([x2, y2], params2, content2.el, rect, {
viewSize: [viewWidth, viewHeight],
contentSize: contentSize.slice(),
})
}
if (isArray$6(positionExpr)) {
x2 = parsePercent(positionExpr[0], viewWidth)
y2 = parsePercent(positionExpr[1], viewHeight)
} else if (isObject$b(positionExpr)) {
var boxLayoutPosition = positionExpr
boxLayoutPosition.width = contentSize[0]
boxLayoutPosition.height = contentSize[1]
var layoutRect = getLayoutRect(boxLayoutPosition, {
width: viewWidth,
height: viewHeight,
})
x2 = layoutRect.x
y2 = layoutRect.y
align = null
vAlign = null
} else if (isString$2(positionExpr) && el2) {
var pos = calcTooltipPosition(
positionExpr,
rect,
contentSize,
tooltipModel.get('borderWidth')
)
x2 = pos[0]
y2 = pos[1]
} else {
var pos = refixTooltipPosition(
x2,
y2,
content2,
viewWidth,
viewHeight,
align ? null : 20,
vAlign ? null : 20
)
x2 = pos[0]
y2 = pos[1]
}
align &&
(x2 -= isCenterAlign(align)
? contentSize[0] / 2
: align === 'right'
? contentSize[0]
: 0)
vAlign &&
(y2 -= isCenterAlign(vAlign)
? contentSize[1] / 2
: vAlign === 'bottom'
? contentSize[1]
: 0)
if (shouldTooltipConfine(tooltipModel)) {
var pos = confineTooltipPosition(x2, y2, content2, viewWidth, viewHeight)
x2 = pos[0]
y2 = pos[1]
}
content2.moveTo(x2, y2)
}
TooltipView2.prototype._updateContentNotChangedOnAxis = function (
dataByCoordSys,
cbParamsList
) {
var lastCoordSys = this._lastDataByCoordSys
var lastCbParamsList = this._cbParamsList
var contentNotChanged =
!!lastCoordSys && lastCoordSys.length === dataByCoordSys.length
contentNotChanged &&
each$f(lastCoordSys, function (lastItemCoordSys, indexCoordSys) {
var lastDataByAxis = lastItemCoordSys.dataByAxis || []
var thisItemCoordSys = dataByCoordSys[indexCoordSys] || {}
var thisDataByAxis = thisItemCoordSys.dataByAxis || []
contentNotChanged =
contentNotChanged && lastDataByAxis.length === thisDataByAxis.length
contentNotChanged &&
each$f(lastDataByAxis, function (lastItem, indexAxis) {
var thisItem = thisDataByAxis[indexAxis] || {}
var lastIndices = lastItem.seriesDataIndices || []
var newIndices = thisItem.seriesDataIndices || []
contentNotChanged =
contentNotChanged &&
lastItem.value === thisItem.value &&
lastItem.axisType === thisItem.axisType &&
lastItem.axisId === thisItem.axisId &&
lastIndices.length === newIndices.length
contentNotChanged &&
each$f(lastIndices, function (lastIdxItem, j2) {
var newIdxItem = newIndices[j2]
contentNotChanged =
contentNotChanged &&
lastIdxItem.seriesIndex === newIdxItem.seriesIndex &&
lastIdxItem.dataIndex === newIdxItem.dataIndex
})
lastCbParamsList &&
each$f(lastItem.seriesDataIndices, function (idxItem) {
var seriesIdx = idxItem.seriesIndex
var cbParams = cbParamsList[seriesIdx]
var lastCbParams = lastCbParamsList[seriesIdx]
if (
cbParams &&
lastCbParams &&
lastCbParams.data !== cbParams.data
) {
contentNotChanged = false
}
})
})
})
this._lastDataByCoordSys = dataByCoordSys
this._cbParamsList = cbParamsList
return !!contentNotChanged
}
TooltipView2.prototype._hide = function (dispatchAction2) {
this._lastDataByCoordSys = null
dispatchAction2({
type: 'hideTip',
from: this.uid,
})
}
TooltipView2.prototype.dispose = function (ecModel, api) {
if (env$1.node || !api.getDom()) {
return
}
clear$1(this, '_updatePosition')
this._tooltipContent.dispose()
unregister('itemTooltip', api)
}
TooltipView2.type = 'tooltip'
return TooltipView2
})(ComponentView$1)
function buildTooltipModel(
modelCascade,
globalTooltipModel,
defaultTooltipOption
) {
var ecModel = globalTooltipModel.ecModel
var resultModel
if (defaultTooltipOption) {
resultModel = new Model$1(defaultTooltipOption, ecModel, ecModel)
resultModel = new Model$1(globalTooltipModel.option, resultModel, ecModel)
} else {
resultModel = globalTooltipModel
}
for (var i2 = modelCascade.length - 1; i2 >= 0; i2--) {
var tooltipOpt = modelCascade[i2]
if (tooltipOpt) {
if (tooltipOpt instanceof Model$1) {
tooltipOpt = tooltipOpt.get('tooltip', true)
}
if (isString$2(tooltipOpt)) {
tooltipOpt = {
formatter: tooltipOpt,
}
}
if (tooltipOpt) {
resultModel = new Model$1(tooltipOpt, resultModel, ecModel)
}
}
}
return resultModel
}
function makeDispatchAction(payload, api) {
return payload.dispatchAction || bind$1(api.dispatchAction, api)
}
function refixTooltipPosition(
x2,
y2,
content2,
viewWidth,
viewHeight,
gapH,
gapV
) {
var size = content2.getSize()
var width = size[0]
var height = size[1]
if (gapH != null) {
if (x2 + width + gapH + 2 > viewWidth) {
x2 -= width + gapH
} else {
x2 += gapH
}
}
if (gapV != null) {
if (y2 + height + gapV > viewHeight) {
y2 -= height + gapV
} else {
y2 += gapV
}
}
return [x2, y2]
}
function confineTooltipPosition(x2, y2, content2, viewWidth, viewHeight) {
var size = content2.getSize()
var width = size[0]
var height = size[1]
x2 = Math.min(x2 + width, viewWidth) - width
y2 = Math.min(y2 + height, viewHeight) - height
x2 = Math.max(x2, 0)
y2 = Math.max(y2, 0)
return [x2, y2]
}
function calcTooltipPosition(position2, rect, contentSize, borderWidth) {
var domWidth = contentSize[0]
var domHeight = contentSize[1]
var offset2 = Math.ceil(Math.SQRT2 * borderWidth) + 8
var x2 = 0
var y2 = 0
var rectWidth = rect.width
var rectHeight = rect.height
switch (position2) {
case 'inside':
x2 = rect.x + rectWidth / 2 - domWidth / 2
y2 = rect.y + rectHeight / 2 - domHeight / 2
break
case 'top':
x2 = rect.x + rectWidth / 2 - domWidth / 2
y2 = rect.y - domHeight - offset2
break
case 'bottom':
x2 = rect.x + rectWidth / 2 - domWidth / 2
y2 = rect.y + rectHeight + offset2
break
case 'left':
x2 = rect.x - domWidth - offset2
y2 = rect.y + rectHeight / 2 - domHeight / 2
break
case 'right':
x2 = rect.x + rectWidth + offset2
y2 = rect.y + rectHeight / 2 - domHeight / 2
}
return [x2, y2]
}
function isCenterAlign(align) {
return align === 'center' || align === 'middle'
}
function findComponentReference(payload, ecModel, api) {
var queryOptionMap = preParseFinder(payload).queryOptionMap
var componentMainType = queryOptionMap.keys()[0]
if (!componentMainType || componentMainType === 'series') {
return
}
var queryResult = queryReferringComponents(
ecModel,
componentMainType,
queryOptionMap.get(componentMainType),
{
useDefault: false,
enableAll: false,
enableNone: false,
}
)
var model = queryResult.models[0]
if (!model) {
return
}
var view2 = api.getViewOfComponentModel(model)
var el2
view2.group.traverse(function (subEl) {
var tooltipConfig = getECData(subEl).tooltipConfig
if (tooltipConfig && tooltipConfig.name === payload.name) {
el2 = subEl
return true
}
})
if (el2) {
return {
componentMainType,
componentIndex: model.componentIndex,
el: el2,
}
}
}
var TooltipView$1 = TooltipView
function install$k(registers) {
use(install$s)
registers.registerComponentModel(TooltipModel$1)
registers.registerComponentView(TooltipView$1)
registers.registerAction(
{
type: 'showTip',
event: 'showTip',
update: 'tooltip:manuallyShowTip',
},
noop
)
registers.registerAction(
{
type: 'hideTip',
event: 'hideTip',
update: 'tooltip:manuallyHideTip',
},
noop
)
}
var DEFAULT_TOOLBOX_BTNS = ['rect', 'polygon', 'keep', 'clear']
function brushPreprocessor(option2, isNew) {
var brushComponents = normalizeToArray(option2 ? option2.brush : [])
if (!brushComponents.length) {
return
}
var brushComponentSpecifiedBtns = []
each$f(brushComponents, function (brushOpt) {
var tbs = brushOpt.hasOwnProperty('toolbox') ? brushOpt.toolbox : []
if (tbs instanceof Array) {
brushComponentSpecifiedBtns = brushComponentSpecifiedBtns.concat(tbs)
}
})
var toolbox2 = option2 && option2.toolbox
if (isArray$6(toolbox2)) {
toolbox2 = toolbox2[0]
}
if (!toolbox2) {
toolbox2 = {
feature: {},
}
option2.toolbox = [toolbox2]
}
var toolboxFeature = toolbox2.feature || (toolbox2.feature = {})
var toolboxBrush = toolboxFeature.brush || (toolboxFeature.brush = {})
var brushTypes = toolboxBrush.type || (toolboxBrush.type = [])
brushTypes.push.apply(brushTypes, brushComponentSpecifiedBtns)
removeDuplicate(brushTypes)
if (isNew && !brushTypes.length) {
brushTypes.push.apply(brushTypes, DEFAULT_TOOLBOX_BTNS)
}
}
function removeDuplicate(arr) {
var map2 = {}
each$f(arr, function (val2) {
map2[val2] = 1
})
arr.length = 0
each$f(map2, function (flag2, val2) {
arr.push(val2)
})
}
var each$4 = each$f
function hasKeys(obj) {
if (obj) {
for (var name_1 in obj) {
if (obj.hasOwnProperty(name_1)) {
return true
}
}
}
}
function createVisualMappings(option2, stateList, supplementVisualOption) {
var visualMappings = {}
each$4(stateList, function (state2) {
var mappings = (visualMappings[state2] = createMappings())
each$4(option2[state2], function (visualData, visualType) {
if (!VisualMapping$1.isValidType(visualType)) {
return
}
var mappingOption = {
type: visualType,
visual: visualData,
}
supplementVisualOption && supplementVisualOption(mappingOption, state2)
mappings[visualType] = new VisualMapping$1(mappingOption)
if (visualType === 'opacity') {
mappingOption = clone$4(mappingOption)
mappingOption.type = 'colorAlpha'
mappings.__hidden.__alphaForOpacity = new VisualMapping$1(mappingOption)
}
})
})
return visualMappings
function createMappings() {
var Creater = function () {}
Creater.prototype.__hidden = Creater.prototype
var obj = new Creater()
return obj
}
}
function replaceVisualOption(thisOption, newOption, keys3) {
var has2
each$f(keys3, function (key2) {
if (newOption.hasOwnProperty(key2) && hasKeys(newOption[key2])) {
has2 = true
}
})
has2 &&
each$f(keys3, function (key2) {
if (newOption.hasOwnProperty(key2) && hasKeys(newOption[key2])) {
thisOption[key2] = clone$4(newOption[key2])
} else {
delete thisOption[key2]
}
})
}
function applyVisual(
stateList,
visualMappings,
data2,
getValueState,
scope,
dimension
) {
var visualTypesMap = {}
each$f(stateList, function (state2) {
var visualTypes = VisualMapping$1.prepareVisualTypes(visualMappings[state2])
visualTypesMap[state2] = visualTypes
})
var dataIndex
function getVisual(key2) {
return getItemVisualFromData(data2, dataIndex, key2)
}
function setVisual(key2, value2) {
setItemVisualFromData(data2, dataIndex, key2, value2)
}
if (dimension == null) {
data2.each(eachItem)
} else {
data2.each([dimension], eachItem)
}
function eachItem(valueOrIndex, index2) {
dataIndex = dimension == null ? valueOrIndex : index2
var rawDataItem = data2.getRawDataItem(dataIndex)
if (rawDataItem && rawDataItem.visualMap === false) {
return
}
var valueState = getValueState.call(scope, valueOrIndex)
var mappings = visualMappings[valueState]
var visualTypes = visualTypesMap[valueState]
for (var i2 = 0, len2 = visualTypes.length; i2 < len2; i2++) {
var type4 = visualTypes[i2]
mappings[type4] &&
mappings[type4].applyVisual(valueOrIndex, getVisual, setVisual)
}
}
}
function incrementalApplyVisual(stateList, visualMappings, getValueState, dim) {
var visualTypesMap = {}
each$f(stateList, function (state2) {
var visualTypes = VisualMapping$1.prepareVisualTypes(visualMappings[state2])
visualTypesMap[state2] = visualTypes
})
return {
progress: function progress(params2, data2) {
var dimIndex
if (dim != null) {
dimIndex = data2.getDimensionIndex(dim)
}
function getVisual(key2) {
return getItemVisualFromData(data2, dataIndex, key2)
}
function setVisual(key2, value3) {
setItemVisualFromData(data2, dataIndex, key2, value3)
}
var dataIndex
var store2 = data2.getStore()
while ((dataIndex = params2.next()) != null) {
var rawDataItem = data2.getRawDataItem(dataIndex)
if (rawDataItem && rawDataItem.visualMap === false) {
continue
}
var value2 = dim != null ? store2.get(dimIndex, dataIndex) : dataIndex
var valueState = getValueState(value2)
var mappings = visualMappings[valueState]
var visualTypes = visualTypesMap[valueState]
for (var i2 = 0, len2 = visualTypes.length; i2 < len2; i2++) {
var type4 = visualTypes[i2]
mappings[type4] &&
mappings[type4].applyVisual(value2, getVisual, setVisual)
}
}
},
}
}
function makeBrushCommonSelectorForSeries(area) {
var brushType = area.brushType
var selectors = {
point: function (itemLayout) {
return selector[brushType].point(itemLayout, selectors, area)
},
rect: function (itemLayout) {
return selector[brushType].rect(itemLayout, selectors, area)
},
}
return selectors
}
var selector = {
lineX: getLineSelectors(0),
lineY: getLineSelectors(1),
rect: {
point: function (itemLayout, selectors, area) {
return (
itemLayout && area.boundingRect.contain(itemLayout[0], itemLayout[1])
)
},
rect: function (itemLayout, selectors, area) {
return itemLayout && area.boundingRect.intersect(itemLayout)
},
},
polygon: {
point: function (itemLayout, selectors, area) {
return (
itemLayout &&
area.boundingRect.contain(itemLayout[0], itemLayout[1]) &&
contain(area.range, itemLayout[0], itemLayout[1])
)
},
rect: function (itemLayout, selectors, area) {
var points2 = area.range
if (!itemLayout || points2.length <= 1) {
return false
}
var x2 = itemLayout.x
var y2 = itemLayout.y
var width = itemLayout.width
var height = itemLayout.height
var p2 = points2[0]
if (
contain(points2, x2, y2) ||
contain(points2, x2 + width, y2) ||
contain(points2, x2, y2 + height) ||
contain(points2, x2 + width, y2 + height) ||
BoundingRect$1.create(itemLayout).contain(p2[0], p2[1]) ||
linePolygonIntersect(x2, y2, x2 + width, y2, points2) ||
linePolygonIntersect(x2, y2, x2, y2 + height, points2) ||
linePolygonIntersect(
x2 + width,
y2,
x2 + width,
y2 + height,
points2
) ||
linePolygonIntersect(x2, y2 + height, x2 + width, y2 + height, points2)
) {
return true
}
},
},
}
function getLineSelectors(xyIndex) {
var xy = ['x', 'y']
var wh = ['width', 'height']
return {
point: function (itemLayout, selectors, area) {
if (itemLayout) {
var range3 = area.range
var p2 = itemLayout[xyIndex]
return inLineRange(p2, range3)
}
},
rect: function (itemLayout, selectors, area) {
if (itemLayout) {
var range3 = area.range
var layoutRange = [
itemLayout[xy[xyIndex]],
itemLayout[xy[xyIndex]] + itemLayout[wh[xyIndex]],
]
layoutRange[1] < layoutRange[0] && layoutRange.reverse()
return (
inLineRange(layoutRange[0], range3) ||
inLineRange(layoutRange[1], range3) ||
inLineRange(range3[0], layoutRange) ||
inLineRange(range3[1], layoutRange)
)
}
},
}
}
function inLineRange(p2, range3) {
return range3[0] <= p2 && p2 <= range3[1]
}
var STATE_LIST = ['inBrush', 'outOfBrush']
var DISPATCH_METHOD = '__ecBrushSelect'
var DISPATCH_FLAG = '__ecInBrushSelectEvent'
function layoutCovers(ecModel) {
ecModel.eachComponent(
{
mainType: 'brush',
},
function (brushModel) {
var brushTargetManager = (brushModel.brushTargetManager =
new BrushTargetManager$1(brushModel.option, ecModel))
brushTargetManager.setInputRanges(brushModel.areas, ecModel)
}
)
}
function brushVisual(ecModel, api, payload) {
var brushSelected = []
var throttleType
var throttleDelay
ecModel.eachComponent(
{
mainType: 'brush',
},
function (brushModel) {
payload &&
payload.type === 'takeGlobalCursor' &&
brushModel.setBrushOption(
payload.key === 'brush'
? payload.brushOption
: {
brushType: false,
}
)
}
)
layoutCovers(ecModel)
ecModel.eachComponent(
{
mainType: 'brush',
},
function (brushModel, brushIndex) {
var thisBrushSelected = {
brushId: brushModel.id,
brushIndex,
brushName: brushModel.name,
areas: clone$4(brushModel.areas),
selected: [],
}
brushSelected.push(thisBrushSelected)
var brushOption = brushModel.option
var brushLink = brushOption.brushLink
var linkedSeriesMap = []
var selectedDataIndexForLink = []
var rangeInfoBySeries = []
var hasBrushExists = false
if (!brushIndex) {
throttleType = brushOption.throttleType
throttleDelay = brushOption.throttleDelay
}
var areas = map$1(brushModel.areas, function (area) {
var builder = boundingRectBuilders[area.brushType]
var selectableArea = defaults(
{
boundingRect: builder ? builder(area) : void 0,
},
area
)
selectableArea.selectors =
makeBrushCommonSelectorForSeries(selectableArea)
return selectableArea
})
var visualMappings = createVisualMappings(
brushModel.option,
STATE_LIST,
function (mappingOption) {
mappingOption.mappingMethod = 'fixed'
}
)
isArray$6(brushLink) &&
each$f(brushLink, function (seriesIndex) {
linkedSeriesMap[seriesIndex] = 1
})
function linkOthers(seriesIndex) {
return brushLink === 'all' || !!linkedSeriesMap[seriesIndex]
}
function brushed(rangeInfoList) {
return !!rangeInfoList.length
}
ecModel.eachSeries(function (seriesModel, seriesIndex) {
var rangeInfoList = (rangeInfoBySeries[seriesIndex] = [])
seriesModel.subType === 'parallel'
? stepAParallel(seriesModel, seriesIndex)
: stepAOthers(seriesModel, seriesIndex, rangeInfoList)
})
function stepAParallel(seriesModel, seriesIndex) {
var coordSys = seriesModel.coordinateSystem
hasBrushExists = hasBrushExists || coordSys.hasAxisBrushed()
linkOthers(seriesIndex) &&
coordSys.eachActiveState(
seriesModel.getData(),
function (activeState, dataIndex) {
activeState === 'active' &&
(selectedDataIndexForLink[dataIndex] = 1)
}
)
}
function stepAOthers(seriesModel, seriesIndex, rangeInfoList) {
if (
!seriesModel.brushSelector ||
brushModelNotControll(brushModel, seriesIndex)
) {
return
}
each$f(areas, function (area) {
if (
brushModel.brushTargetManager.controlSeries(
area,
seriesModel,
ecModel
)
) {
rangeInfoList.push(area)
}
hasBrushExists = hasBrushExists || brushed(rangeInfoList)
})
if (linkOthers(seriesIndex) && brushed(rangeInfoList)) {
var data_1 = seriesModel.getData()
data_1.each(function (dataIndex) {
if (checkInRange(seriesModel, rangeInfoList, data_1, dataIndex)) {
selectedDataIndexForLink[dataIndex] = 1
}
})
}
}
ecModel.eachSeries(function (seriesModel, seriesIndex) {
var seriesBrushSelected = {
seriesId: seriesModel.id,
seriesIndex,
seriesName: seriesModel.name,
dataIndex: [],
}
thisBrushSelected.selected.push(seriesBrushSelected)
var rangeInfoList = rangeInfoBySeries[seriesIndex]
var data2 = seriesModel.getData()
var getValueState = linkOthers(seriesIndex)
? function (dataIndex) {
return selectedDataIndexForLink[dataIndex]
? (seriesBrushSelected.dataIndex.push(
data2.getRawIndex(dataIndex)
),
'inBrush')
: 'outOfBrush'
}
: function (dataIndex) {
return checkInRange(seriesModel, rangeInfoList, data2, dataIndex)
? (seriesBrushSelected.dataIndex.push(
data2.getRawIndex(dataIndex)
),
'inBrush')
: 'outOfBrush'
}
;(linkOthers(seriesIndex) ? hasBrushExists : brushed(rangeInfoList)) &&
applyVisual(STATE_LIST, visualMappings, data2, getValueState)
})
}
)
dispatchAction$1(api, throttleType, throttleDelay, brushSelected, payload)
}
function dispatchAction$1(
api,
throttleType,
throttleDelay,
brushSelected,
payload
) {
if (!payload) {
return
}
var zr = api.getZr()
if (zr[DISPATCH_FLAG]) {
return
}
if (!zr[DISPATCH_METHOD]) {
zr[DISPATCH_METHOD] = doDispatch
}
var fn2 = createOrUpdate(zr, DISPATCH_METHOD, throttleDelay, throttleType)
fn2(api, brushSelected)
}
function doDispatch(api, brushSelected) {
if (!api.isDisposed()) {
var zr = api.getZr()
zr[DISPATCH_FLAG] = true
api.dispatchAction({
type: 'brushSelect',
batch: brushSelected,
})
zr[DISPATCH_FLAG] = false
}
}
function checkInRange(seriesModel, rangeInfoList, data2, dataIndex) {
for (var i2 = 0, len2 = rangeInfoList.length; i2 < len2; i2++) {
var area = rangeInfoList[i2]
if (seriesModel.brushSelector(dataIndex, data2, area.selectors, area)) {
return true
}
}
}
function brushModelNotControll(brushModel, seriesIndex) {
var seriesIndices = brushModel.option.seriesIndex
return (
seriesIndices != null &&
seriesIndices !== 'all' &&
(isArray$6(seriesIndices)
? indexOf(seriesIndices, seriesIndex) < 0
: seriesIndex !== seriesIndices)
)
}
var boundingRectBuilders = {
rect: function (area) {
return getBoundingRectFromMinMax(area.range)
},
polygon: function (area) {
var minMax
var range3 = area.range
for (var i2 = 0, len2 = range3.length; i2 < len2; i2++) {
minMax = minMax || [
[Infinity, -Infinity],
[Infinity, -Infinity],
]
var rg = range3[i2]
rg[0] < minMax[0][0] && (minMax[0][0] = rg[0])
rg[0] > minMax[0][1] && (minMax[0][1] = rg[0])
rg[1] < minMax[1][0] && (minMax[1][0] = rg[1])
rg[1] > minMax[1][1] && (minMax[1][1] = rg[1])
}
return minMax && getBoundingRectFromMinMax(minMax)
},
}
function getBoundingRectFromMinMax(minMax) {
return new BoundingRect$1(
minMax[0][0],
minMax[1][0],
minMax[0][1] - minMax[0][0],
minMax[1][1] - minMax[1][0]
)
}
var BrushView = (function (_super) {
__extends$2(BrushView2, _super)
function BrushView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = BrushView2.type
return _this
}
BrushView2.prototype.init = function (ecModel, api) {
this.ecModel = ecModel
this.api = api
this.model
;(this._brushController = new BrushController$1(api.getZr()))
.on('brush', bind$1(this._onBrush, this))
.mount()
}
BrushView2.prototype.render = function (brushModel, ecModel, api, payload) {
this.model = brushModel
this._updateController(brushModel, ecModel, api, payload)
}
BrushView2.prototype.updateTransform = function (
brushModel,
ecModel,
api,
payload
) {
layoutCovers(ecModel)
this._updateController(brushModel, ecModel, api, payload)
}
BrushView2.prototype.updateVisual = function (
brushModel,
ecModel,
api,
payload
) {
this.updateTransform(brushModel, ecModel, api, payload)
}
BrushView2.prototype.updateView = function (
brushModel,
ecModel,
api,
payload
) {
this._updateController(brushModel, ecModel, api, payload)
}
BrushView2.prototype._updateController = function (
brushModel,
ecModel,
api,
payload
) {
;(!payload || payload.$from !== brushModel.id) &&
this._brushController
.setPanels(brushModel.brushTargetManager.makePanelOpts(api))
.enableBrush(brushModel.brushOption)
.updateCovers(brushModel.areas.slice())
}
BrushView2.prototype.dispose = function () {
this._brushController.dispose()
}
BrushView2.prototype._onBrush = function (eventParam) {
var modelId = this.model.id
var areas = this.model.brushTargetManager.setOutputRanges(
eventParam.areas,
this.ecModel
)
;(!eventParam.isEnd || eventParam.removeOnClick) &&
this.api.dispatchAction({
type: 'brush',
brushId: modelId,
areas: clone$4(areas),
$from: modelId,
})
eventParam.isEnd &&
this.api.dispatchAction({
type: 'brushEnd',
brushId: modelId,
areas: clone$4(areas),
$from: modelId,
})
}
BrushView2.type = 'brush'
return BrushView2
})(ComponentView$1)
var BrushView$1 = BrushView
var DEFAULT_OUT_OF_BRUSH_COLOR = '#ddd'
var BrushModel = (function (_super) {
__extends$2(BrushModel2, _super)
function BrushModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = BrushModel2.type
_this.areas = []
_this.brushOption = {}
return _this
}
BrushModel2.prototype.optionUpdated = function (newOption, isInit) {
var thisOption = this.option
!isInit &&
replaceVisualOption(thisOption, newOption, ['inBrush', 'outOfBrush'])
var inBrush = (thisOption.inBrush = thisOption.inBrush || {})
thisOption.outOfBrush = thisOption.outOfBrush || {
color: DEFAULT_OUT_OF_BRUSH_COLOR,
}
if (!inBrush.hasOwnProperty('liftZ')) {
inBrush.liftZ = 5
}
}
BrushModel2.prototype.setAreas = function (areas) {
if (!areas) {
return
}
this.areas = map$1(
areas,
function (area) {
return generateBrushOption(this.option, area)
},
this
)
}
BrushModel2.prototype.setBrushOption = function (brushOption) {
this.brushOption = generateBrushOption(this.option, brushOption)
this.brushType = this.brushOption.brushType
}
BrushModel2.type = 'brush'
BrushModel2.dependencies = [
'geo',
'grid',
'xAxis',
'yAxis',
'parallel',
'series',
]
BrushModel2.defaultOption = {
seriesIndex: 'all',
brushType: 'rect',
brushMode: 'single',
transformable: true,
brushStyle: {
borderWidth: 1,
color: 'rgba(210,219,238,0.3)',
borderColor: '#D2DBEE',
},
throttleType: 'fixRate',
throttleDelay: 0,
removeOnClick: true,
z: 1e4,
}
return BrushModel2
})(ComponentModel$1)
function generateBrushOption(option2, brushOption) {
return merge(
{
brushType: option2.brushType,
brushMode: option2.brushMode,
transformable: option2.transformable,
brushStyle: new Model$1(option2.brushStyle).getItemStyle(),
removeOnClick: option2.removeOnClick,
z: option2.z,
},
brushOption,
true
)
}
var BrushModel$1 = BrushModel
var ICON_TYPES = ['rect', 'polygon', 'lineX', 'lineY', 'keep', 'clear']
var BrushFeature = (function (_super) {
__extends$2(BrushFeature2, _super)
function BrushFeature2() {
return (_super !== null && _super.apply(this, arguments)) || this
}
BrushFeature2.prototype.render = function (featureModel, ecModel, api) {
var brushType
var brushMode
var isBrushed
ecModel.eachComponent(
{
mainType: 'brush',
},
function (brushModel) {
brushType = brushModel.brushType
brushMode = brushModel.brushOption.brushMode || 'single'
isBrushed = isBrushed || !!brushModel.areas.length
}
)
this._brushType = brushType
this._brushMode = brushMode
each$f(featureModel.get('type', true), function (type4) {
featureModel.setIconStatus(
type4,
(
type4 === 'keep'
? brushMode === 'multiple'
: type4 === 'clear'
? isBrushed
: type4 === brushType
)
? 'emphasis'
: 'normal'
)
})
}
BrushFeature2.prototype.updateView = function (featureModel, ecModel, api) {
this.render(featureModel, ecModel, api)
}
BrushFeature2.prototype.getIcons = function () {
var model = this.model
var availableIcons = model.get('icon', true)
var icons = {}
each$f(model.get('type', true), function (type4) {
if (availableIcons[type4]) {
icons[type4] = availableIcons[type4]
}
})
return icons
}
BrushFeature2.prototype.onclick = function (ecModel, api, type4) {
var brushType = this._brushType
var brushMode = this._brushMode
if (type4 === 'clear') {
api.dispatchAction({
type: 'axisAreaSelect',
intervals: [],
})
api.dispatchAction({
type: 'brush',
command: 'clear',
areas: [],
})
} else {
api.dispatchAction({
type: 'takeGlobalCursor',
key: 'brush',
brushOption: {
brushType:
type4 === 'keep' ? brushType : brushType === type4 ? false : type4,
brushMode:
type4 === 'keep'
? brushMode === 'multiple'
? 'single'
: 'multiple'
: brushMode,
},
})
}
}
BrushFeature2.getDefaultOption = function (ecModel) {
var defaultOption2 = {
show: true,
type: ICON_TYPES.slice(),
icon: {
rect: 'M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13',
polygon:
'M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2',
lineX:
'M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4',
lineY:
'M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4',
keep: 'M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z',
clear:
'M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2',
},
title: ecModel.getLocaleModel().get(['toolbox', 'brush', 'title']),
}
return defaultOption2
}
return BrushFeature2
})(ToolboxFeature)
var BrushFeature$1 = BrushFeature
function install$j(registers) {
registers.registerComponentView(BrushView$1)
registers.registerComponentModel(BrushModel$1)
registers.registerPreprocessor(brushPreprocessor)
registers.registerVisual(registers.PRIORITY.VISUAL.BRUSH, brushVisual)
registers.registerAction(
{
type: 'brush',
event: 'brush',
update: 'updateVisual',
},
function (payload, ecModel) {
ecModel.eachComponent(
{
mainType: 'brush',
query: payload,
},
function (brushModel) {
brushModel.setAreas(payload.areas)
}
)
}
)
registers.registerAction(
{
type: 'brushSelect',
event: 'brushSelected',
update: 'none',
},
noop
)
registers.registerAction(
{
type: 'brushEnd',
event: 'brushEnd',
update: 'none',
},
noop
)
registerFeature('brush', BrushFeature$1)
}
var TitleModel = (function (_super) {
__extends$2(TitleModel2, _super)
function TitleModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = TitleModel2.type
_this.layoutMode = {
type: 'box',
ignoreSize: true,
}
return _this
}
TitleModel2.type = 'title'
TitleModel2.defaultOption = {
z: 6,
show: true,
text: '',
target: 'blank',
subtext: '',
subtarget: 'blank',
left: 0,
top: 0,
backgroundColor: 'rgba(0,0,0,0)',
borderColor: '#ccc',
borderWidth: 0,
padding: 5,
itemGap: 10,
textStyle: {
fontSize: 18,
fontWeight: 'bold',
color: '#464646',
},
subtextStyle: {
fontSize: 12,
color: '#6E7079',
},
}
return TitleModel2
})(ComponentModel$1)
var TitleView = (function (_super) {
__extends$2(TitleView2, _super)
function TitleView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = TitleView2.type
return _this
}
TitleView2.prototype.render = function (titleModel, ecModel, api) {
this.group.removeAll()
if (!titleModel.get('show')) {
return
}
var group = this.group
var textStyleModel = titleModel.getModel('textStyle')
var subtextStyleModel = titleModel.getModel('subtextStyle')
var textAlign2 = titleModel.get('textAlign')
var textVerticalAlign = retrieve2(
titleModel.get('textBaseline'),
titleModel.get('textVerticalAlign')
)
var textEl = new ZRText$1({
style: createTextStyle$1(
textStyleModel,
{
text: titleModel.get('text'),
fill: textStyleModel.getTextColor(),
},
{
disableBox: true,
}
),
z2: 10,
})
var textRect = textEl.getBoundingRect()
var subText = titleModel.get('subtext')
var subTextEl = new ZRText$1({
style: createTextStyle$1(
subtextStyleModel,
{
text: subText,
fill: subtextStyleModel.getTextColor(),
y: textRect.height + titleModel.get('itemGap'),
verticalAlign: 'top',
},
{
disableBox: true,
}
),
z2: 10,
})
var link2 = titleModel.get('link')
var sublink = titleModel.get('sublink')
var triggerEvent2 = titleModel.get('triggerEvent', true)
textEl.silent = !link2 && !triggerEvent2
subTextEl.silent = !sublink && !triggerEvent2
if (link2) {
textEl.on('click', function () {
windowOpen(link2, '_' + titleModel.get('target'))
})
}
if (sublink) {
subTextEl.on('click', function () {
windowOpen(sublink, '_' + titleModel.get('subtarget'))
})
}
getECData(textEl).eventData = getECData(subTextEl).eventData = triggerEvent2
? {
componentType: 'title',
componentIndex: titleModel.componentIndex,
}
: null
group.add(textEl)
subText && group.add(subTextEl)
var groupRect = group.getBoundingRect()
var layoutOption = titleModel.getBoxLayoutParams()
layoutOption.width = groupRect.width
layoutOption.height = groupRect.height
var layoutRect = getLayoutRect(
layoutOption,
{
width: api.getWidth(),
height: api.getHeight(),
},
titleModel.get('padding')
)
if (!textAlign2) {
textAlign2 = titleModel.get('left') || titleModel.get('right')
if (textAlign2 === 'middle') {
textAlign2 = 'center'
}
if (textAlign2 === 'right') {
layoutRect.x += layoutRect.width
} else if (textAlign2 === 'center') {
layoutRect.x += layoutRect.width / 2
}
}
if (!textVerticalAlign) {
textVerticalAlign = titleModel.get('top') || titleModel.get('bottom')
if (textVerticalAlign === 'center') {
textVerticalAlign = 'middle'
}
if (textVerticalAlign === 'bottom') {
layoutRect.y += layoutRect.height
} else if (textVerticalAlign === 'middle') {
layoutRect.y += layoutRect.height / 2
}
textVerticalAlign = textVerticalAlign || 'top'
}
group.x = layoutRect.x
group.y = layoutRect.y
group.markRedraw()
var alignStyle = {
align: textAlign2,
verticalAlign: textVerticalAlign,
}
textEl.setStyle(alignStyle)
subTextEl.setStyle(alignStyle)
groupRect = group.getBoundingRect()
var padding = layoutRect.margin
var style2 = titleModel.getItemStyle(['color', 'opacity'])
style2.fill = titleModel.get('backgroundColor')
var rect = new Rect$4({
shape: {
x: groupRect.x - padding[3],
y: groupRect.y - padding[0],
width: groupRect.width + padding[1] + padding[3],
height: groupRect.height + padding[0] + padding[2],
r: titleModel.get('borderRadius'),
},
style: style2,
subPixelOptimize: true,
silent: true,
})
group.add(rect)
}
TitleView2.type = 'title'
return TitleView2
})(ComponentView$1)
function install$i(registers) {
registers.registerComponentModel(TitleModel)
registers.registerComponentView(TitleView)
}
var TimelineModel = (function (_super) {
__extends$2(TimelineModel2, _super)
function TimelineModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = TimelineModel2.type
_this.layoutMode = 'box'
return _this
}
TimelineModel2.prototype.init = function (option2, parentModel, ecModel) {
this.mergeDefaultAndTheme(option2, ecModel)
this._initData()
}
TimelineModel2.prototype.mergeOption = function (option2) {
_super.prototype.mergeOption.apply(this, arguments)
this._initData()
}
TimelineModel2.prototype.setCurrentIndex = function (currentIndex) {
if (currentIndex == null) {
currentIndex = this.option.currentIndex
}
var count2 = this._data.count()
if (this.option.loop) {
currentIndex = ((currentIndex % count2) + count2) % count2
} else {
currentIndex >= count2 && (currentIndex = count2 - 1)
currentIndex < 0 && (currentIndex = 0)
}
this.option.currentIndex = currentIndex
}
TimelineModel2.prototype.getCurrentIndex = function () {
return this.option.currentIndex
}
TimelineModel2.prototype.isIndexMax = function () {
return this.getCurrentIndex() >= this._data.count() - 1
}
TimelineModel2.prototype.setPlayState = function (state2) {
this.option.autoPlay = !!state2
}
TimelineModel2.prototype.getPlayState = function () {
return !!this.option.autoPlay
}
TimelineModel2.prototype._initData = function () {
var thisOption = this.option
var dataArr = thisOption.data || []
var axisType = thisOption.axisType
var names2 = (this._names = [])
var processedDataArr
if (axisType === 'category') {
processedDataArr = []
each$f(dataArr, function (item2, index2) {
var value2 = convertOptionIdName(getDataItemValue(item2), '')
var newItem
if (isObject$b(item2)) {
newItem = clone$4(item2)
newItem.value = index2
} else {
newItem = index2
}
processedDataArr.push(newItem)
names2.push(value2)
})
} else {
processedDataArr = dataArr
}
var dimType =
{
category: 'ordinal',
time: 'time',
value: 'number',
}[axisType] || 'number'
var data2 = (this._data = new SeriesData$1(
[
{
name: 'value',
type: dimType,
},
],
this
))
data2.initData(processedDataArr, names2)
}
TimelineModel2.prototype.getData = function () {
return this._data
}
TimelineModel2.prototype.getCategories = function () {
if (this.get('axisType') === 'category') {
return this._names.slice()
}
}
TimelineModel2.type = 'timeline'
TimelineModel2.defaultOption = {
z: 4,
show: true,
axisType: 'time',
realtime: true,
left: '20%',
top: null,
right: '20%',
bottom: 0,
width: null,
height: 40,
padding: 5,
controlPosition: 'left',
autoPlay: false,
rewind: false,
loop: true,
playInterval: 2e3,
currentIndex: 0,
itemStyle: {},
label: {
color: '#000',
},
data: [],
}
return TimelineModel2
})(ComponentModel$1)
var TimelineModel$1 = TimelineModel
var SliderTimelineModel = (function (_super) {
__extends$2(SliderTimelineModel2, _super)
function SliderTimelineModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = SliderTimelineModel2.type
return _this
}
SliderTimelineModel2.type = 'timeline.slider'
SliderTimelineModel2.defaultOption = inheritDefaultOption(
TimelineModel$1.defaultOption,
{
backgroundColor: 'rgba(0,0,0,0)',
borderColor: '#ccc',
borderWidth: 0,
orient: 'horizontal',
inverse: false,
tooltip: {
trigger: 'item',
},
symbol: 'circle',
symbolSize: 12,
lineStyle: {
show: true,
width: 2,
color: '#DAE1F5',
},
label: {
position: 'auto',
show: true,
interval: 'auto',
rotate: 0,
color: '#A4B1D7',
},
itemStyle: {
color: '#A4B1D7',
borderWidth: 1,
},
checkpointStyle: {
symbol: 'circle',
symbolSize: 15,
color: '#316bf3',
borderColor: '#fff',
borderWidth: 2,
shadowBlur: 2,
shadowOffsetX: 1,
shadowOffsetY: 1,
shadowColor: 'rgba(0, 0, 0, 0.3)',
animation: true,
animationDuration: 300,
animationEasing: 'quinticInOut',
},
controlStyle: {
show: true,
showPlayBtn: true,
showPrevBtn: true,
showNextBtn: true,
itemSize: 24,
itemGap: 12,
position: 'left',
playIcon:
'path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z',
stopIcon:
'path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z',
nextIcon:
'M2,18.5A1.52,1.52,0,0,1,.92,18a1.49,1.49,0,0,1,0-2.12L7.81,9.36,1,3.11A1.5,1.5,0,1,1,3,.89l8,7.34a1.48,1.48,0,0,1,.49,1.09,1.51,1.51,0,0,1-.46,1.1L3,18.08A1.5,1.5,0,0,1,2,18.5Z',
prevIcon:
'M10,.5A1.52,1.52,0,0,1,11.08,1a1.49,1.49,0,0,1,0,2.12L4.19,9.64,11,15.89a1.5,1.5,0,1,1-2,2.22L1,10.77A1.48,1.48,0,0,1,.5,9.68,1.51,1.51,0,0,1,1,8.58L9,.92A1.5,1.5,0,0,1,10,.5Z',
prevBtnSize: 18,
nextBtnSize: 18,
color: '#A4B1D7',
borderColor: '#A4B1D7',
borderWidth: 1,
},
emphasis: {
label: {
show: true,
color: '#6f778d',
},
itemStyle: {
color: '#316BF3',
},
controlStyle: {
color: '#316BF3',
borderColor: '#316BF3',
borderWidth: 2,
},
},
progress: {
lineStyle: {
color: '#316BF3',
},
itemStyle: {
color: '#316BF3',
},
label: {
color: '#6f778d',
},
},
data: [],
}
)
return SliderTimelineModel2
})(TimelineModel$1)
mixin(SliderTimelineModel, DataFormatMixin.prototype)
var SliderTimelineModel$1 = SliderTimelineModel
var TimelineView = (function (_super) {
__extends$2(TimelineView2, _super)
function TimelineView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = TimelineView2.type
return _this
}
TimelineView2.type = 'timeline'
return TimelineView2
})(ComponentView$1)
var TimelineView$1 = TimelineView
var TimelineAxis = (function (_super) {
__extends$2(TimelineAxis2, _super)
function TimelineAxis2(dim, scale2, coordExtent, axisType) {
var _this = _super.call(this, dim, scale2, coordExtent) || this
_this.type = axisType || 'value'
return _this
}
TimelineAxis2.prototype.getLabelModel = function () {
return this.model.getModel('label')
}
TimelineAxis2.prototype.isHorizontal = function () {
return this.model.get('orient') === 'horizontal'
}
return TimelineAxis2
})(Axis$1)
var TimelineAxis$1 = TimelineAxis
var PI$1 = Math.PI
var labelDataIndexStore = makeInner()
var SliderTimelineView = (function (_super) {
__extends$2(SliderTimelineView2, _super)
function SliderTimelineView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = SliderTimelineView2.type
return _this
}
SliderTimelineView2.prototype.init = function (ecModel, api) {
this.api = api
}
SliderTimelineView2.prototype.render = function (
timelineModel,
ecModel,
api
) {
this.model = timelineModel
this.api = api
this.ecModel = ecModel
this.group.removeAll()
if (timelineModel.get('show', true)) {
var layoutInfo_1 = this._layout(timelineModel, api)
var mainGroup_1 = this._createGroup('_mainGroup')
var labelGroup = this._createGroup('_labelGroup')
var axis_1 = (this._axis = this._createAxis(layoutInfo_1, timelineModel))
timelineModel.formatTooltip = function (dataIndex) {
var name2 = axis_1.scale.getLabel({
value: dataIndex,
})
return createTooltipMarkup('nameValue', {
noName: true,
value: name2,
})
}
each$f(
['AxisLine', 'AxisTick', 'Control', 'CurrentPointer'],
function (name2) {
this['_render' + name2](
layoutInfo_1,
mainGroup_1,
axis_1,
timelineModel
)
},
this
)
this._renderAxisLabel(layoutInfo_1, labelGroup, axis_1, timelineModel)
this._position(layoutInfo_1, timelineModel)
}
this._doPlayStop()
this._updateTicksStatus()
}
SliderTimelineView2.prototype.remove = function () {
this._clearTimer()
this.group.removeAll()
}
SliderTimelineView2.prototype.dispose = function () {
this._clearTimer()
}
SliderTimelineView2.prototype._layout = function (timelineModel, api) {
var labelPosOpt = timelineModel.get(['label', 'position'])
var orient = timelineModel.get('orient')
var viewRect2 = getViewRect(timelineModel, api)
var parsedLabelPos
if (labelPosOpt == null || labelPosOpt === 'auto') {
parsedLabelPos =
orient === 'horizontal'
? viewRect2.y + viewRect2.height / 2 < api.getHeight() / 2
? '-'
: '+'
: viewRect2.x + viewRect2.width / 2 < api.getWidth() / 2
? '+'
: '-'
} else if (isString$2(labelPosOpt)) {
parsedLabelPos = {
horizontal: {
top: '-',
bottom: '+',
},
vertical: {
left: '-',
right: '+',
},
}[orient][labelPosOpt]
} else {
parsedLabelPos = labelPosOpt
}
var labelAlignMap = {
horizontal: 'center',
vertical:
parsedLabelPos >= 0 || parsedLabelPos === '+' ? 'left' : 'right',
}
var labelBaselineMap = {
horizontal:
parsedLabelPos >= 0 || parsedLabelPos === '+' ? 'top' : 'bottom',
vertical: 'middle',
}
var rotationMap = {
horizontal: 0,
vertical: PI$1 / 2,
}
var mainLength = orient === 'vertical' ? viewRect2.height : viewRect2.width
var controlModel = timelineModel.getModel('controlStyle')
var showControl = controlModel.get('show', true)
var controlSize = showControl ? controlModel.get('itemSize') : 0
var controlGap = showControl ? controlModel.get('itemGap') : 0
var sizePlusGap = controlSize + controlGap
var labelRotation = timelineModel.get(['label', 'rotate']) || 0
labelRotation = (labelRotation * PI$1) / 180
var playPosition
var prevBtnPosition
var nextBtnPosition
var controlPosition = controlModel.get('position', true)
var showPlayBtn = showControl && controlModel.get('showPlayBtn', true)
var showPrevBtn = showControl && controlModel.get('showPrevBtn', true)
var showNextBtn = showControl && controlModel.get('showNextBtn', true)
var xLeft = 0
var xRight = mainLength
if (controlPosition === 'left' || controlPosition === 'bottom') {
showPlayBtn && ((playPosition = [0, 0]), (xLeft += sizePlusGap))
showPrevBtn && ((prevBtnPosition = [xLeft, 0]), (xLeft += sizePlusGap))
showNextBtn &&
((nextBtnPosition = [xRight - controlSize, 0]), (xRight -= sizePlusGap))
} else {
showPlayBtn &&
((playPosition = [xRight - controlSize, 0]), (xRight -= sizePlusGap))
showPrevBtn && ((prevBtnPosition = [0, 0]), (xLeft += sizePlusGap))
showNextBtn &&
((nextBtnPosition = [xRight - controlSize, 0]), (xRight -= sizePlusGap))
}
var axisExtent = [xLeft, xRight]
if (timelineModel.get('inverse')) {
axisExtent.reverse()
}
return {
viewRect: viewRect2,
mainLength,
orient,
rotation: rotationMap[orient],
labelRotation,
labelPosOpt: parsedLabelPos,
labelAlign:
timelineModel.get(['label', 'align']) || labelAlignMap[orient],
labelBaseline:
timelineModel.get(['label', 'verticalAlign']) ||
timelineModel.get(['label', 'baseline']) ||
labelBaselineMap[orient],
playPosition,
prevBtnPosition,
nextBtnPosition,
axisExtent,
controlSize,
controlGap,
}
}
SliderTimelineView2.prototype._position = function (
layoutInfo,
timelineModel
) {
var mainGroup = this._mainGroup
var labelGroup = this._labelGroup
var viewRect2 = layoutInfo.viewRect
if (layoutInfo.orient === 'vertical') {
var m2 = create$1()
var rotateOriginX = viewRect2.x
var rotateOriginY = viewRect2.y + viewRect2.height
translate$1(m2, m2, [-rotateOriginX, -rotateOriginY])
rotate(m2, m2, -PI$1 / 2)
translate$1(m2, m2, [rotateOriginX, rotateOriginY])
viewRect2 = viewRect2.clone()
viewRect2.applyTransform(m2)
}
var viewBound = getBound(viewRect2)
var mainBound = getBound(mainGroup.getBoundingRect())
var labelBound = getBound(labelGroup.getBoundingRect())
var mainPosition = [mainGroup.x, mainGroup.y]
var labelsPosition = [labelGroup.x, labelGroup.y]
labelsPosition[0] = mainPosition[0] = viewBound[0][0]
var labelPosOpt = layoutInfo.labelPosOpt
if (labelPosOpt == null || isString$2(labelPosOpt)) {
var mainBoundIdx = labelPosOpt === '+' ? 0 : 1
toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx)
toBound(labelsPosition, labelBound, viewBound, 1, 1 - mainBoundIdx)
} else {
var mainBoundIdx = labelPosOpt >= 0 ? 0 : 1
toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx)
labelsPosition[1] = mainPosition[1] + labelPosOpt
}
mainGroup.setPosition(mainPosition)
labelGroup.setPosition(labelsPosition)
mainGroup.rotation = labelGroup.rotation = layoutInfo.rotation
setOrigin(mainGroup)
setOrigin(labelGroup)
function setOrigin(targetGroup) {
targetGroup.originX = viewBound[0][0] - targetGroup.x
targetGroup.originY = viewBound[1][0] - targetGroup.y
}
function getBound(rect) {
return [
[rect.x, rect.x + rect.width],
[rect.y, rect.y + rect.height],
]
}
function toBound(fromPos, from, to, dimIdx, boundIdx) {
fromPos[dimIdx] += to[dimIdx][boundIdx] - from[dimIdx][boundIdx]
}
}
SliderTimelineView2.prototype._createAxis = function (
layoutInfo,
timelineModel
) {
var data2 = timelineModel.getData()
var axisType = timelineModel.get('axisType')
var scale2 = createScaleByModel(timelineModel, axisType)
scale2.getTicks = function () {
return data2.mapArray(['value'], function (value2) {
return {
value: value2,
}
})
}
var dataExtent = data2.getDataExtent('value')
scale2.setExtent(dataExtent[0], dataExtent[1])
scale2.calcNiceTicks()
var axis = new TimelineAxis$1(
'value',
scale2,
layoutInfo.axisExtent,
axisType
)
axis.model = timelineModel
return axis
}
SliderTimelineView2.prototype._createGroup = function (key2) {
var newGroup = (this[key2] = new Group$5())
this.group.add(newGroup)
return newGroup
}
SliderTimelineView2.prototype._renderAxisLine = function (
layoutInfo,
group,
axis,
timelineModel
) {
var axisExtent = axis.getExtent()
if (!timelineModel.get(['lineStyle', 'show'])) {
return
}
var line = new Line$4({
shape: {
x1: axisExtent[0],
y1: 0,
x2: axisExtent[1],
y2: 0,
},
style: extend(
{
lineCap: 'round',
},
timelineModel.getModel('lineStyle').getLineStyle()
),
silent: true,
z2: 1,
})
group.add(line)
var progressLine = (this._progressLine = new Line$4({
shape: {
x1: axisExtent[0],
x2: this._currentPointer ? this._currentPointer.x : axisExtent[0],
y1: 0,
y2: 0,
},
style: defaults(
{
lineCap: 'round',
lineWidth: line.style.lineWidth,
},
timelineModel.getModel(['progress', 'lineStyle']).getLineStyle()
),
silent: true,
z2: 1,
}))
group.add(progressLine)
}
SliderTimelineView2.prototype._renderAxisTick = function (
layoutInfo,
group,
axis,
timelineModel
) {
var _this = this
var data2 = timelineModel.getData()
var ticks = axis.scale.getTicks()
this._tickSymbols = []
each$f(ticks, function (tick) {
var tickCoord = axis.dataToCoord(tick.value)
var itemModel = data2.getItemModel(tick.value)
var itemStyleModel = itemModel.getModel('itemStyle')
var hoverStyleModel = itemModel.getModel(['emphasis', 'itemStyle'])
var progressStyleModel = itemModel.getModel(['progress', 'itemStyle'])
var symbolOpt = {
x: tickCoord,
y: 0,
onclick: bind$1(_this._changeTimeline, _this, tick.value),
}
var el2 = giveSymbol(itemModel, itemStyleModel, group, symbolOpt)
el2.ensureState('emphasis').style = hoverStyleModel.getItemStyle()
el2.ensureState('progress').style = progressStyleModel.getItemStyle()
enableHoverEmphasis(el2)
var ecData = getECData(el2)
if (itemModel.get('tooltip')) {
ecData.dataIndex = tick.value
ecData.dataModel = timelineModel
} else {
ecData.dataIndex = ecData.dataModel = null
}
_this._tickSymbols.push(el2)
})
}
SliderTimelineView2.prototype._renderAxisLabel = function (
layoutInfo,
group,
axis,
timelineModel
) {
var _this = this
var labelModel = axis.getLabelModel()
if (!labelModel.get('show')) {
return
}
var data2 = timelineModel.getData()
var labels = axis.getViewLabels()
this._tickLabels = []
each$f(labels, function (labelItem) {
var dataIndex = labelItem.tickValue
var itemModel = data2.getItemModel(dataIndex)
var normalLabelModel = itemModel.getModel('label')
var hoverLabelModel = itemModel.getModel(['emphasis', 'label'])
var progressLabelModel = itemModel.getModel(['progress', 'label'])
var tickCoord = axis.dataToCoord(labelItem.tickValue)
var textEl = new ZRText$1({
x: tickCoord,
y: 0,
rotation: layoutInfo.labelRotation - layoutInfo.rotation,
onclick: bind$1(_this._changeTimeline, _this, dataIndex),
silent: false,
style: createTextStyle$1(normalLabelModel, {
text: labelItem.formattedLabel,
align: layoutInfo.labelAlign,
verticalAlign: layoutInfo.labelBaseline,
}),
})
textEl.ensureState('emphasis').style = createTextStyle$1(hoverLabelModel)
textEl.ensureState('progress').style =
createTextStyle$1(progressLabelModel)
group.add(textEl)
enableHoverEmphasis(textEl)
labelDataIndexStore(textEl).dataIndex = dataIndex
_this._tickLabels.push(textEl)
})
}
SliderTimelineView2.prototype._renderControl = function (
layoutInfo,
group,
axis,
timelineModel
) {
var controlSize = layoutInfo.controlSize
var rotation = layoutInfo.rotation
var itemStyle = timelineModel.getModel('controlStyle').getItemStyle()
var hoverStyle = timelineModel
.getModel(['emphasis', 'controlStyle'])
.getItemStyle()
var playState = timelineModel.getPlayState()
var inverse = timelineModel.get('inverse', true)
makeBtn(
layoutInfo.nextBtnPosition,
'next',
bind$1(this._changeTimeline, this, inverse ? '-' : '+')
)
makeBtn(
layoutInfo.prevBtnPosition,
'prev',
bind$1(this._changeTimeline, this, inverse ? '+' : '-')
)
makeBtn(
layoutInfo.playPosition,
playState ? 'stop' : 'play',
bind$1(this._handlePlayClick, this, !playState),
true
)
function makeBtn(position2, iconName, onclick, willRotate) {
if (!position2) {
return
}
var iconSize = parsePercent$1(
retrieve2(
timelineModel.get(['controlStyle', iconName + 'BtnSize']),
controlSize
),
controlSize
)
var rect = [0, -iconSize / 2, iconSize, iconSize]
var btn = makeControlIcon(timelineModel, iconName + 'Icon', rect, {
x: position2[0],
y: position2[1],
originX: controlSize / 2,
originY: 0,
rotation: willRotate ? -rotation : 0,
rectHover: true,
style: itemStyle,
onclick,
})
btn.ensureState('emphasis').style = hoverStyle
group.add(btn)
enableHoverEmphasis(btn)
}
}
SliderTimelineView2.prototype._renderCurrentPointer = function (
layoutInfo,
group,
axis,
timelineModel
) {
var data2 = timelineModel.getData()
var currentIndex = timelineModel.getCurrentIndex()
var pointerModel = data2
.getItemModel(currentIndex)
.getModel('checkpointStyle')
var me2 = this
var callback = {
onCreate: function (pointer2) {
pointer2.draggable = true
pointer2.drift = bind$1(me2._handlePointerDrag, me2)
pointer2.ondragend = bind$1(me2._handlePointerDragend, me2)
pointerMoveTo(
pointer2,
me2._progressLine,
currentIndex,
axis,
timelineModel,
true
)
},
onUpdate: function (pointer2) {
pointerMoveTo(
pointer2,
me2._progressLine,
currentIndex,
axis,
timelineModel
)
},
}
this._currentPointer = giveSymbol(
pointerModel,
pointerModel,
this._mainGroup,
{},
this._currentPointer,
callback
)
}
SliderTimelineView2.prototype._handlePlayClick = function (nextState) {
this._clearTimer()
this.api.dispatchAction({
type: 'timelinePlayChange',
playState: nextState,
from: this.uid,
})
}
SliderTimelineView2.prototype._handlePointerDrag = function (dx, dy, e2) {
this._clearTimer()
this._pointerChangeTimeline([e2.offsetX, e2.offsetY])
}
SliderTimelineView2.prototype._handlePointerDragend = function (e2) {
this._pointerChangeTimeline([e2.offsetX, e2.offsetY], true)
}
SliderTimelineView2.prototype._pointerChangeTimeline = function (
mousePos,
trigger2
) {
var toCoord = this._toAxisCoord(mousePos)[0]
var axis = this._axis
var axisExtent = asc$2(axis.getExtent().slice())
toCoord > axisExtent[1] && (toCoord = axisExtent[1])
toCoord < axisExtent[0] && (toCoord = axisExtent[0])
this._currentPointer.x = toCoord
this._currentPointer.markRedraw()
var progressLine = this._progressLine
if (progressLine) {
progressLine.shape.x2 = toCoord
progressLine.dirty()
}
var targetDataIndex = this._findNearestTick(toCoord)
var timelineModel = this.model
if (
trigger2 ||
(targetDataIndex !== timelineModel.getCurrentIndex() &&
timelineModel.get('realtime'))
) {
this._changeTimeline(targetDataIndex)
}
}
SliderTimelineView2.prototype._doPlayStop = function () {
var _this = this
this._clearTimer()
if (this.model.getPlayState()) {
this._timer = setTimeout(function () {
var timelineModel = _this.model
_this._changeTimeline(
timelineModel.getCurrentIndex() +
(timelineModel.get('rewind', true) ? -1 : 1)
)
}, this.model.get('playInterval'))
}
}
SliderTimelineView2.prototype._toAxisCoord = function (vertex) {
var trans = this._mainGroup.getLocalTransform()
return applyTransform(vertex, trans, true)
}
SliderTimelineView2.prototype._findNearestTick = function (axisCoord) {
var data2 = this.model.getData()
var dist2 = Infinity
var targetDataIndex
var axis = this._axis
data2.each(['value'], function (value2, dataIndex) {
var coord = axis.dataToCoord(value2)
var d3 = Math.abs(coord - axisCoord)
if (d3 < dist2) {
dist2 = d3
targetDataIndex = dataIndex
}
})
return targetDataIndex
}
SliderTimelineView2.prototype._clearTimer = function () {
if (this._timer) {
clearTimeout(this._timer)
this._timer = null
}
}
SliderTimelineView2.prototype._changeTimeline = function (nextIndex) {
var currentIndex = this.model.getCurrentIndex()
if (nextIndex === '+') {
nextIndex = currentIndex + 1
} else if (nextIndex === '-') {
nextIndex = currentIndex - 1
}
this.api.dispatchAction({
type: 'timelineChange',
currentIndex: nextIndex,
from: this.uid,
})
}
SliderTimelineView2.prototype._updateTicksStatus = function () {
var currentIndex = this.model.getCurrentIndex()
var tickSymbols = this._tickSymbols
var tickLabels = this._tickLabels
if (tickSymbols) {
for (var i2 = 0; i2 < tickSymbols.length; i2++) {
tickSymbols &&
tickSymbols[i2] &&
tickSymbols[i2].toggleState('progress', i2 < currentIndex)
}
}
if (tickLabels) {
for (var i2 = 0; i2 < tickLabels.length; i2++) {
tickLabels &&
tickLabels[i2] &&
tickLabels[i2].toggleState(
'progress',
labelDataIndexStore(tickLabels[i2]).dataIndex <= currentIndex
)
}
}
}
SliderTimelineView2.type = 'timeline.slider'
return SliderTimelineView2
})(TimelineView$1)
function createScaleByModel(model, axisType) {
axisType = axisType || model.get('type')
if (axisType) {
switch (axisType) {
case 'category':
return new OrdinalScale$1({
ordinalMeta: model.getCategories(),
extent: [Infinity, -Infinity],
})
case 'time':
return new TimeScale$1({
locale: model.ecModel.getLocaleModel(),
useUTC: model.ecModel.get('useUTC'),
})
default:
return new IntervalScale$1()
}
}
}
function getViewRect(model, api) {
return getLayoutRect(
model.getBoxLayoutParams(),
{
width: api.getWidth(),
height: api.getHeight(),
},
model.get('padding')
)
}
function makeControlIcon(timelineModel, objPath, rect, opts) {
var style2 = opts.style
var icon = createIcon(
timelineModel.get(['controlStyle', objPath]),
opts || {},
new BoundingRect$1(rect[0], rect[1], rect[2], rect[3])
)
if (style2) {
icon.setStyle(style2)
}
return icon
}
function giveSymbol(hostModel, itemStyleModel, group, opt, symbol, callback) {
var color2 = itemStyleModel.get('color')
if (!symbol) {
var symbolType = hostModel.get('symbol')
symbol = createSymbol$1(symbolType, -1, -1, 2, 2, color2)
symbol.setStyle('strokeNoScale', true)
group.add(symbol)
callback && callback.onCreate(symbol)
} else {
symbol.setColor(color2)
group.add(symbol)
callback && callback.onUpdate(symbol)
}
var itemStyle = itemStyleModel.getItemStyle(['color'])
symbol.setStyle(itemStyle)
opt = merge(
{
rectHover: true,
z2: 100,
},
opt,
true
)
var symbolSize = normalizeSymbolSize(hostModel.get('symbolSize'))
opt.scaleX = symbolSize[0] / 2
opt.scaleY = symbolSize[1] / 2
var symbolOffset = normalizeSymbolOffset(
hostModel.get('symbolOffset'),
symbolSize
)
if (symbolOffset) {
opt.x = (opt.x || 0) + symbolOffset[0]
opt.y = (opt.y || 0) + symbolOffset[1]
}
var symbolRotate = hostModel.get('symbolRotate')
opt.rotation = ((symbolRotate || 0) * Math.PI) / 180 || 0
symbol.attr(opt)
symbol.updateTransform()
return symbol
}
function pointerMoveTo(
pointer2,
progressLine,
dataIndex,
axis,
timelineModel,
noAnimation
) {
if (pointer2.dragging) {
return
}
var pointerModel = timelineModel.getModel('checkpointStyle')
var toCoord = axis.dataToCoord(
timelineModel.getData().get('value', dataIndex)
)
if (noAnimation || !pointerModel.get('animation', true)) {
pointer2.attr({
x: toCoord,
y: 0,
})
progressLine &&
progressLine.attr({
shape: {
x2: toCoord,
},
})
} else {
var animationCfg = {
duration: pointerModel.get('animationDuration', true),
easing: pointerModel.get('animationEasing', true),
}
pointer2.stopAnimation(null, true)
pointer2.animateTo(
{
x: toCoord,
y: 0,
},
animationCfg
)
progressLine &&
progressLine.animateTo(
{
shape: {
x2: toCoord,
},
},
animationCfg
)
}
}
var SliderTimelineView$1 = SliderTimelineView
function installTimelineAction(registers) {
registers.registerAction(
{
type: 'timelineChange',
event: 'timelineChanged',
update: 'prepareAndUpdate',
},
function (payload, ecModel, api) {
var timelineModel = ecModel.getComponent('timeline')
if (timelineModel && payload.currentIndex != null) {
timelineModel.setCurrentIndex(payload.currentIndex)
if (
!timelineModel.get('loop', true) &&
timelineModel.isIndexMax() &&
timelineModel.getPlayState()
) {
timelineModel.setPlayState(false)
api.dispatchAction({
type: 'timelinePlayChange',
playState: false,
from: payload.from,
})
}
}
ecModel.resetOption('timeline', {
replaceMerge: timelineModel.get('replaceMerge', true),
})
return defaults(
{
currentIndex: timelineModel.option.currentIndex,
},
payload
)
}
)
registers.registerAction(
{
type: 'timelinePlayChange',
event: 'timelinePlayChanged',
update: 'update',
},
function (payload, ecModel) {
var timelineModel = ecModel.getComponent('timeline')
if (timelineModel && payload.playState != null) {
timelineModel.setPlayState(payload.playState)
}
}
)
}
function timelinePreprocessor(option2) {
var timelineOpt = option2 && option2.timeline
if (!isArray$6(timelineOpt)) {
timelineOpt = timelineOpt ? [timelineOpt] : []
}
each$f(timelineOpt, function (opt) {
if (!opt) {
return
}
compatibleEC2(opt)
})
}
function compatibleEC2(opt) {
var type4 = opt.type
var ec2Types = {
number: 'value',
time: 'time',
}
if (ec2Types[type4]) {
opt.axisType = ec2Types[type4]
delete opt.type
}
transferItem(opt)
if (has$1(opt, 'controlPosition')) {
var controlStyle = opt.controlStyle || (opt.controlStyle = {})
if (!has$1(controlStyle, 'position')) {
controlStyle.position = opt.controlPosition
}
if (controlStyle.position === 'none' && !has$1(controlStyle, 'show')) {
controlStyle.show = false
delete controlStyle.position
}
delete opt.controlPosition
}
each$f(opt.data || [], function (dataItem) {
if (isObject$b(dataItem) && !isArray$6(dataItem)) {
if (!has$1(dataItem, 'value') && has$1(dataItem, 'name')) {
dataItem.value = dataItem.name
}
transferItem(dataItem)
}
})
}
function transferItem(opt) {
var itemStyle = opt.itemStyle || (opt.itemStyle = {})
var itemStyleEmphasis = itemStyle.emphasis || (itemStyle.emphasis = {})
var label = opt.label || opt.label || {}
var labelNormal = label.normal || (label.normal = {})
var excludeLabelAttr = {
normal: 1,
emphasis: 1,
}
each$f(label, function (value2, name2) {
if (!excludeLabelAttr[name2] && !has$1(labelNormal, name2)) {
labelNormal[name2] = value2
}
})
if (itemStyleEmphasis.label && !has$1(label, 'emphasis')) {
label.emphasis = itemStyleEmphasis.label
delete itemStyleEmphasis.label
}
}
function has$1(obj, attr) {
return obj.hasOwnProperty(attr)
}
function install$h(registers) {
registers.registerComponentModel(SliderTimelineModel$1)
registers.registerComponentView(SliderTimelineView$1)
registers.registerSubTypeDefaulter('timeline', function () {
return 'slider'
})
installTimelineAction(registers)
registers.registerPreprocessor(timelinePreprocessor)
}
function checkMarkerInSeries(seriesOpts, markerType) {
if (!seriesOpts) {
return false
}
var seriesOptArr = isArray$6(seriesOpts) ? seriesOpts : [seriesOpts]
for (var idx = 0; idx < seriesOptArr.length; idx++) {
if (seriesOptArr[idx] && seriesOptArr[idx][markerType]) {
return true
}
}
return false
}
function fillLabel(opt) {
defaultEmphasis(opt, 'label', ['show'])
}
var inner$5 = makeInner()
var MarkerModel = (function (_super) {
__extends$2(MarkerModel2, _super)
function MarkerModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = MarkerModel2.type
_this.createdBySelf = false
return _this
}
MarkerModel2.prototype.init = function (option2, parentModel, ecModel) {
this.mergeDefaultAndTheme(option2, ecModel)
this._mergeOption(option2, ecModel, false, true)
}
MarkerModel2.prototype.isAnimationEnabled = function () {
if (env$1.node) {
return false
}
var hostSeries = this.__hostSeries
return (
this.getShallow('animation') &&
hostSeries &&
hostSeries.isAnimationEnabled()
)
}
MarkerModel2.prototype.mergeOption = function (newOpt, ecModel) {
this._mergeOption(newOpt, ecModel, false, false)
}
MarkerModel2.prototype._mergeOption = function (
newOpt,
ecModel,
createdBySelf,
isInit
) {
var componentType = this.mainType
if (!createdBySelf) {
ecModel.eachSeries(function (seriesModel) {
var markerOpt = seriesModel.get(this.mainType, true)
var markerModel = inner$5(seriesModel)[componentType]
if (!markerOpt || !markerOpt.data) {
inner$5(seriesModel)[componentType] = null
return
}
if (!markerModel) {
if (isInit) {
fillLabel(markerOpt)
}
each$f(markerOpt.data, function (item2) {
if (item2 instanceof Array) {
fillLabel(item2[0])
fillLabel(item2[1])
} else {
fillLabel(item2)
}
})
markerModel = this.createMarkerModelFromSeries(
markerOpt,
this,
ecModel
)
extend(markerModel, {
mainType: this.mainType,
seriesIndex: seriesModel.seriesIndex,
name: seriesModel.name,
createdBySelf: true,
})
markerModel.__hostSeries = seriesModel
} else {
markerModel._mergeOption(markerOpt, ecModel, true)
}
inner$5(seriesModel)[componentType] = markerModel
}, this)
}
}
MarkerModel2.prototype.formatTooltip = function (
dataIndex,
multipleSeries,
dataType2
) {
var data2 = this.getData()
var value2 = this.getRawValue(dataIndex)
var itemName = data2.getName(dataIndex)
return createTooltipMarkup('section', {
header: this.name,
blocks: [
createTooltipMarkup('nameValue', {
name: itemName,
value: value2,
noName: !itemName,
noValue: value2 == null,
}),
],
})
}
MarkerModel2.prototype.getData = function () {
return this._data
}
MarkerModel2.prototype.setData = function (data2) {
this._data = data2
}
MarkerModel2.getMarkerModelFromSeries = function (
seriesModel,
componentType
) {
return inner$5(seriesModel)[componentType]
}
MarkerModel2.type = 'marker'
MarkerModel2.dependencies = ['series', 'grid', 'polar', 'geo']
return MarkerModel2
})(ComponentModel$1)
mixin(MarkerModel, DataFormatMixin.prototype)
var MarkerModel$1 = MarkerModel
var MarkPointModel = (function (_super) {
__extends$2(MarkPointModel2, _super)
function MarkPointModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = MarkPointModel2.type
return _this
}
MarkPointModel2.prototype.createMarkerModelFromSeries = function (
markerOpt,
masterMarkerModel,
ecModel
) {
return new MarkPointModel2(markerOpt, masterMarkerModel, ecModel)
}
MarkPointModel2.type = 'markPoint'
MarkPointModel2.defaultOption = {
z: 5,
symbol: 'pin',
symbolSize: 50,
tooltip: {
trigger: 'item',
},
label: {
show: true,
position: 'inside',
},
itemStyle: {
borderWidth: 2,
},
emphasis: {
label: {
show: true,
},
},
}
return MarkPointModel2
})(MarkerModel$1)
var MarkPointModel$1 = MarkPointModel
function hasXOrY(item2) {
return !(isNaN(parseFloat(item2.x)) && isNaN(parseFloat(item2.y)))
}
function hasXAndY(item2) {
return !isNaN(parseFloat(item2.x)) && !isNaN(parseFloat(item2.y))
}
function markerTypeCalculatorWithExtent(
markerType,
data2,
otherDataDim,
targetDataDim,
otherCoordIndex,
targetCoordIndex
) {
var coordArr = []
var stacked = isDimensionStacked(data2, targetDataDim)
var calcDataDim = stacked
? data2.getCalculationInfo('stackResultDimension')
: targetDataDim
var value2 = numCalculate(data2, calcDataDim, markerType)
var dataIndex = data2.indicesOfNearest(calcDataDim, value2)[0]
coordArr[otherCoordIndex] = data2.get(otherDataDim, dataIndex)
coordArr[targetCoordIndex] = data2.get(calcDataDim, dataIndex)
var coordArrValue = data2.get(targetDataDim, dataIndex)
var precision = getPrecision(data2.get(targetDataDim, dataIndex))
precision = Math.min(precision, 20)
if (precision >= 0) {
coordArr[targetCoordIndex] = +coordArr[targetCoordIndex].toFixed(precision)
}
return [coordArr, coordArrValue]
}
var markerTypeCalculator = {
min: curry$1(markerTypeCalculatorWithExtent, 'min'),
max: curry$1(markerTypeCalculatorWithExtent, 'max'),
average: curry$1(markerTypeCalculatorWithExtent, 'average'),
median: curry$1(markerTypeCalculatorWithExtent, 'median'),
}
function dataTransform(seriesModel, item2) {
if (!item2) {
return
}
var data2 = seriesModel.getData()
var coordSys = seriesModel.coordinateSystem
var dims = coordSys && coordSys.dimensions
if (!hasXAndY(item2) && !isArray$6(item2.coord) && isArray$6(dims)) {
var axisInfo = getAxisInfo(item2, data2, coordSys, seriesModel)
item2 = clone$4(item2)
if (
item2.type &&
markerTypeCalculator[item2.type] &&
axisInfo.baseAxis &&
axisInfo.valueAxis
) {
var otherCoordIndex = indexOf(dims, axisInfo.baseAxis.dim)
var targetCoordIndex = indexOf(dims, axisInfo.valueAxis.dim)
var coordInfo = markerTypeCalculator[item2.type](
data2,
axisInfo.baseDataDim,
axisInfo.valueDataDim,
otherCoordIndex,
targetCoordIndex
)
item2.coord = coordInfo[0]
item2.value = coordInfo[1]
} else {
item2.coord = [
item2.xAxis != null ? item2.xAxis : item2.radiusAxis,
item2.yAxis != null ? item2.yAxis : item2.angleAxis,
]
}
}
if (item2.coord == null || !isArray$6(dims)) {
item2.coord = []
} else {
var coord = item2.coord
for (var i2 = 0; i2 < 2; i2++) {
if (markerTypeCalculator[coord[i2]]) {
coord[i2] = numCalculate(data2, data2.mapDimension(dims[i2]), coord[i2])
}
}
}
return item2
}
function getAxisInfo(item2, data2, coordSys, seriesModel) {
var ret = {}
if (item2.valueIndex != null || item2.valueDim != null) {
ret.valueDataDim =
item2.valueIndex != null
? data2.getDimension(item2.valueIndex)
: item2.valueDim
ret.valueAxis = coordSys.getAxis(
dataDimToCoordDim(seriesModel, ret.valueDataDim)
)
ret.baseAxis = coordSys.getOtherAxis(ret.valueAxis)
ret.baseDataDim = data2.mapDimension(ret.baseAxis.dim)
} else {
ret.baseAxis = seriesModel.getBaseAxis()
ret.valueAxis = coordSys.getOtherAxis(ret.baseAxis)
ret.baseDataDim = data2.mapDimension(ret.baseAxis.dim)
ret.valueDataDim = data2.mapDimension(ret.valueAxis.dim)
}
return ret
}
function dataDimToCoordDim(seriesModel, dataDim) {
var dimItem = seriesModel.getData().getDimensionInfo(dataDim)
return dimItem && dimItem.coordDim
}
function dataFilter(coordSys, item2) {
return coordSys && coordSys.containData && item2.coord && !hasXOrY(item2)
? coordSys.containData(item2.coord)
: true
}
function zoneFilter(coordSys, item1, item2) {
return coordSys &&
coordSys.containZone &&
item1.coord &&
item2.coord &&
!hasXOrY(item1) &&
!hasXOrY(item2)
? coordSys.containZone(item1.coord, item2.coord)
: true
}
function createMarkerDimValueGetter(inCoordSys, dims) {
return inCoordSys
? function (item2, dimName, dataIndex, dimIndex) {
var rawVal =
dimIndex < 2 ? item2.coord && item2.coord[dimIndex] : item2.value
return parseDataValue(rawVal, dims[dimIndex])
}
: function (item2, dimName, dataIndex, dimIndex) {
return parseDataValue(item2.value, dims[dimIndex])
}
}
function numCalculate(data2, valueDataDim, type4) {
if (type4 === 'average') {
var sum_12 = 0
var count_1 = 0
data2.each(valueDataDim, function (val2, idx) {
if (!isNaN(val2)) {
sum_12 += val2
count_1++
}
})
return sum_12 / count_1
} else if (type4 === 'median') {
return data2.getMedian(valueDataDim)
} else {
return data2.getDataExtent(valueDataDim)[type4 === 'max' ? 1 : 0]
}
}
var inner$4 = makeInner()
var MarkerView = (function (_super) {
__extends$2(MarkerView2, _super)
function MarkerView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = MarkerView2.type
return _this
}
MarkerView2.prototype.init = function () {
this.markerGroupMap = createHashMap()
}
MarkerView2.prototype.render = function (markerModel, ecModel, api) {
var _this = this
var markerGroupMap = this.markerGroupMap
markerGroupMap.each(function (item2) {
inner$4(item2).keep = false
})
ecModel.eachSeries(function (seriesModel) {
var markerModel2 = MarkerModel$1.getMarkerModelFromSeries(
seriesModel,
_this.type
)
markerModel2 &&
_this.renderSeries(seriesModel, markerModel2, ecModel, api)
})
markerGroupMap.each(function (item2) {
!inner$4(item2).keep && _this.group.remove(item2.group)
})
}
MarkerView2.prototype.markKeep = function (drawGroup) {
inner$4(drawGroup).keep = true
}
MarkerView2.prototype.toggleBlurSeries = function (seriesModelList, isBlur) {
var _this = this
each$f(seriesModelList, function (seriesModel) {
var markerModel = MarkerModel$1.getMarkerModelFromSeries(
seriesModel,
_this.type
)
if (markerModel) {
var data2 = markerModel.getData()
data2.eachItemGraphicEl(function (el2) {
if (el2) {
isBlur ? enterBlur(el2) : leaveBlur(el2)
}
})
}
})
}
MarkerView2.type = 'marker'
return MarkerView2
})(ComponentView$1)
var MarkerView$1 = MarkerView
function updateMarkerLayout(mpData, seriesModel, api) {
var coordSys = seriesModel.coordinateSystem
mpData.each(function (idx) {
var itemModel = mpData.getItemModel(idx)
var point
var xPx = parsePercent(itemModel.get('x'), api.getWidth())
var yPx = parsePercent(itemModel.get('y'), api.getHeight())
if (!isNaN(xPx) && !isNaN(yPx)) {
point = [xPx, yPx]
} else if (seriesModel.getMarkerPosition) {
point = seriesModel.getMarkerPosition(
mpData.getValues(mpData.dimensions, idx)
)
} else if (coordSys) {
var x2 = mpData.get(coordSys.dimensions[0], idx)
var y2 = mpData.get(coordSys.dimensions[1], idx)
point = coordSys.dataToPoint([x2, y2])
}
if (!isNaN(xPx)) {
point[0] = xPx
}
if (!isNaN(yPx)) {
point[1] = yPx
}
mpData.setItemLayout(idx, point)
})
}
var MarkPointView = (function (_super) {
__extends$2(MarkPointView2, _super)
function MarkPointView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = MarkPointView2.type
return _this
}
MarkPointView2.prototype.updateTransform = function (
markPointModel,
ecModel,
api
) {
ecModel.eachSeries(function (seriesModel) {
var mpModel = MarkerModel$1.getMarkerModelFromSeries(
seriesModel,
'markPoint'
)
if (mpModel) {
updateMarkerLayout(mpModel.getData(), seriesModel, api)
this.markerGroupMap.get(seriesModel.id).updateLayout()
}
}, this)
}
MarkPointView2.prototype.renderSeries = function (
seriesModel,
mpModel,
ecModel,
api
) {
var coordSys = seriesModel.coordinateSystem
var seriesId = seriesModel.id
var seriesData = seriesModel.getData()
var symbolDrawMap = this.markerGroupMap
var symbolDraw =
symbolDrawMap.get(seriesId) ||
symbolDrawMap.set(seriesId, new SymbolDraw$1())
var mpData = createData$1(coordSys, seriesModel, mpModel)
mpModel.setData(mpData)
updateMarkerLayout(mpModel.getData(), seriesModel, api)
mpData.each(function (idx) {
var itemModel = mpData.getItemModel(idx)
var symbol = itemModel.getShallow('symbol')
var symbolSize = itemModel.getShallow('symbolSize')
var symbolRotate = itemModel.getShallow('symbolRotate')
var symbolOffset = itemModel.getShallow('symbolOffset')
var symbolKeepAspect = itemModel.getShallow('symbolKeepAspect')
if (
isFunction$4(symbol) ||
isFunction$4(symbolSize) ||
isFunction$4(symbolRotate) ||
isFunction$4(symbolOffset)
) {
var rawIdx = mpModel.getRawValue(idx)
var dataParams = mpModel.getDataParams(idx)
if (isFunction$4(symbol)) {
symbol = symbol(rawIdx, dataParams)
}
if (isFunction$4(symbolSize)) {
symbolSize = symbolSize(rawIdx, dataParams)
}
if (isFunction$4(symbolRotate)) {
symbolRotate = symbolRotate(rawIdx, dataParams)
}
if (isFunction$4(symbolOffset)) {
symbolOffset = symbolOffset(rawIdx, dataParams)
}
}
var style2 = itemModel.getModel('itemStyle').getItemStyle()
var color2 = getVisualFromData(seriesData, 'color')
if (!style2.fill) {
style2.fill = color2
}
mpData.setItemVisual(idx, {
symbol,
symbolSize,
symbolRotate,
symbolOffset,
symbolKeepAspect,
style: style2,
})
})
symbolDraw.updateData(mpData)
this.group.add(symbolDraw.group)
mpData.eachItemGraphicEl(function (el2) {
el2.traverse(function (child) {
getECData(child).dataModel = mpModel
})
})
this.markKeep(symbolDraw)
symbolDraw.group.silent = mpModel.get('silent') || seriesModel.get('silent')
}
MarkPointView2.type = 'markPoint'
return MarkPointView2
})(MarkerView$1)
function createData$1(coordSys, seriesModel, mpModel) {
var coordDimsInfos
if (coordSys) {
coordDimsInfos = map$1(
coordSys && coordSys.dimensions,
function (coordDim) {
var info =
seriesModel
.getData()
.getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) ||
{}
return extend(extend({}, info), {
name: coordDim,
ordinalMeta: null,
})
}
)
} else {
coordDimsInfos = [
{
name: 'value',
type: 'float',
},
]
}
var mpData = new SeriesData$1(coordDimsInfos, mpModel)
var dataOpt = map$1(mpModel.get('data'), curry$1(dataTransform, seriesModel))
if (coordSys) {
dataOpt = filter(dataOpt, curry$1(dataFilter, coordSys))
}
var dimValueGetter = createMarkerDimValueGetter(!!coordSys, coordDimsInfos)
mpData.initData(dataOpt, null, dimValueGetter)
return mpData
}
var MarkPointView$1 = MarkPointView
function install$g(registers) {
registers.registerComponentModel(MarkPointModel$1)
registers.registerComponentView(MarkPointView$1)
registers.registerPreprocessor(function (opt) {
if (checkMarkerInSeries(opt.series, 'markPoint')) {
opt.markPoint = opt.markPoint || {}
}
})
}
var MarkLineModel = (function (_super) {
__extends$2(MarkLineModel2, _super)
function MarkLineModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = MarkLineModel2.type
return _this
}
MarkLineModel2.prototype.createMarkerModelFromSeries = function (
markerOpt,
masterMarkerModel,
ecModel
) {
return new MarkLineModel2(markerOpt, masterMarkerModel, ecModel)
}
MarkLineModel2.type = 'markLine'
MarkLineModel2.defaultOption = {
z: 5,
symbol: ['circle', 'arrow'],
symbolSize: [8, 16],
symbolOffset: 0,
precision: 2,
tooltip: {
trigger: 'item',
},
label: {
show: true,
position: 'end',
distance: 5,
},
lineStyle: {
type: 'dashed',
},
emphasis: {
label: {
show: true,
},
lineStyle: {
width: 3,
},
},
animationEasing: 'linear',
}
return MarkLineModel2
})(MarkerModel$1)
var MarkLineModel$1 = MarkLineModel
var inner$3 = makeInner()
var markLineTransform = function (seriesModel, coordSys, mlModel, item2) {
var data2 = seriesModel.getData()
var itemArray
if (!isArray$6(item2)) {
var mlType = item2.type
if (
mlType === 'min' ||
mlType === 'max' ||
mlType === 'average' ||
mlType === 'median' ||
item2.xAxis != null ||
item2.yAxis != null
) {
var valueAxis2 = void 0
var value2 = void 0
if (item2.yAxis != null || item2.xAxis != null) {
valueAxis2 = coordSys.getAxis(item2.yAxis != null ? 'y' : 'x')
value2 = retrieve(item2.yAxis, item2.xAxis)
} else {
var axisInfo = getAxisInfo(item2, data2, coordSys, seriesModel)
valueAxis2 = axisInfo.valueAxis
var valueDataDim = getStackedDimension(data2, axisInfo.valueDataDim)
value2 = numCalculate(data2, valueDataDim, mlType)
}
var valueIndex = valueAxis2.dim === 'x' ? 0 : 1
var baseIndex = 1 - valueIndex
var mlFrom = clone$4(item2)
var mlTo = {
coord: [],
}
mlFrom.type = null
mlFrom.coord = []
mlFrom.coord[baseIndex] = -Infinity
mlTo.coord[baseIndex] = Infinity
var precision = mlModel.get('precision')
if (precision >= 0 && isNumber$2(value2)) {
value2 = +value2.toFixed(Math.min(precision, 20))
}
mlFrom.coord[valueIndex] = mlTo.coord[valueIndex] = value2
itemArray = [
mlFrom,
mlTo,
{
type: mlType,
valueIndex: item2.valueIndex,
value: value2,
},
]
} else {
itemArray = []
}
} else {
itemArray = item2
}
var normalizedItem = [
dataTransform(seriesModel, itemArray[0]),
dataTransform(seriesModel, itemArray[1]),
extend({}, itemArray[2]),
]
normalizedItem[2].type = normalizedItem[2].type || null
merge(normalizedItem[2], normalizedItem[0])
merge(normalizedItem[2], normalizedItem[1])
return normalizedItem
}
function isInfinity$1(val2) {
return !isNaN(val2) && !isFinite(val2)
}
function ifMarkLineHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) {
var otherDimIndex = 1 - dimIndex
var dimName = coordSys.dimensions[dimIndex]
return (
isInfinity$1(fromCoord[otherDimIndex]) &&
isInfinity$1(toCoord[otherDimIndex]) &&
fromCoord[dimIndex] === toCoord[dimIndex] &&
coordSys.getAxis(dimName).containData(fromCoord[dimIndex])
)
}
function markLineFilter(coordSys, item2) {
if (coordSys.type === 'cartesian2d') {
var fromCoord = item2[0].coord
var toCoord = item2[1].coord
if (
fromCoord &&
toCoord &&
(ifMarkLineHasOnlyDim(1, fromCoord, toCoord, coordSys) ||
ifMarkLineHasOnlyDim(0, fromCoord, toCoord, coordSys))
) {
return true
}
}
return dataFilter(coordSys, item2[0]) && dataFilter(coordSys, item2[1])
}
function updateSingleMarkerEndLayout(data2, idx, isFrom, seriesModel, api) {
var coordSys = seriesModel.coordinateSystem
var itemModel = data2.getItemModel(idx)
var point
var xPx = parsePercent(itemModel.get('x'), api.getWidth())
var yPx = parsePercent(itemModel.get('y'), api.getHeight())
if (!isNaN(xPx) && !isNaN(yPx)) {
point = [xPx, yPx]
} else {
if (seriesModel.getMarkerPosition) {
point = seriesModel.getMarkerPosition(
data2.getValues(data2.dimensions, idx)
)
} else {
var dims = coordSys.dimensions
var x2 = data2.get(dims[0], idx)
var y2 = data2.get(dims[1], idx)
point = coordSys.dataToPoint([x2, y2])
}
if (isCoordinateSystemType(coordSys, 'cartesian2d')) {
var xAxis = coordSys.getAxis('x')
var yAxis = coordSys.getAxis('y')
var dims = coordSys.dimensions
if (isInfinity$1(data2.get(dims[0], idx))) {
point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[isFrom ? 0 : 1])
} else if (isInfinity$1(data2.get(dims[1], idx))) {
point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[isFrom ? 0 : 1])
}
}
if (!isNaN(xPx)) {
point[0] = xPx
}
if (!isNaN(yPx)) {
point[1] = yPx
}
}
data2.setItemLayout(idx, point)
}
var MarkLineView = (function (_super) {
__extends$2(MarkLineView2, _super)
function MarkLineView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = MarkLineView2.type
return _this
}
MarkLineView2.prototype.updateTransform = function (
markLineModel,
ecModel,
api
) {
ecModel.eachSeries(function (seriesModel) {
var mlModel = MarkerModel$1.getMarkerModelFromSeries(
seriesModel,
'markLine'
)
if (mlModel) {
var mlData_1 = mlModel.getData()
var fromData_1 = inner$3(mlModel).from
var toData_1 = inner$3(mlModel).to
fromData_1.each(function (idx) {
updateSingleMarkerEndLayout(fromData_1, idx, true, seriesModel, api)
updateSingleMarkerEndLayout(toData_1, idx, false, seriesModel, api)
})
mlData_1.each(function (idx) {
mlData_1.setItemLayout(idx, [
fromData_1.getItemLayout(idx),
toData_1.getItemLayout(idx),
])
})
this.markerGroupMap.get(seriesModel.id).updateLayout()
}
}, this)
}
MarkLineView2.prototype.renderSeries = function (
seriesModel,
mlModel,
ecModel,
api
) {
var coordSys = seriesModel.coordinateSystem
var seriesId = seriesModel.id
var seriesData = seriesModel.getData()
var lineDrawMap = this.markerGroupMap
var lineDraw =
lineDrawMap.get(seriesId) || lineDrawMap.set(seriesId, new LineDraw$1())
this.group.add(lineDraw.group)
var mlData = createList$1(coordSys, seriesModel, mlModel)
var fromData = mlData.from
var toData = mlData.to
var lineData = mlData.line
inner$3(mlModel).from = fromData
inner$3(mlModel).to = toData
mlModel.setData(lineData)
var symbolType = mlModel.get('symbol')
var symbolSize = mlModel.get('symbolSize')
var symbolRotate = mlModel.get('symbolRotate')
var symbolOffset = mlModel.get('symbolOffset')
if (!isArray$6(symbolType)) {
symbolType = [symbolType, symbolType]
}
if (!isArray$6(symbolSize)) {
symbolSize = [symbolSize, symbolSize]
}
if (!isArray$6(symbolRotate)) {
symbolRotate = [symbolRotate, symbolRotate]
}
if (!isArray$6(symbolOffset)) {
symbolOffset = [symbolOffset, symbolOffset]
}
mlData.from.each(function (idx) {
updateDataVisualAndLayout(fromData, idx, true)
updateDataVisualAndLayout(toData, idx, false)
})
lineData.each(function (idx) {
var lineStyle = lineData
.getItemModel(idx)
.getModel('lineStyle')
.getLineStyle()
lineData.setItemLayout(idx, [
fromData.getItemLayout(idx),
toData.getItemLayout(idx),
])
if (lineStyle.stroke == null) {
lineStyle.stroke = fromData.getItemVisual(idx, 'style').fill
}
lineData.setItemVisual(idx, {
fromSymbolKeepAspect: fromData.getItemVisual(idx, 'symbolKeepAspect'),
fromSymbolOffset: fromData.getItemVisual(idx, 'symbolOffset'),
fromSymbolRotate: fromData.getItemVisual(idx, 'symbolRotate'),
fromSymbolSize: fromData.getItemVisual(idx, 'symbolSize'),
fromSymbol: fromData.getItemVisual(idx, 'symbol'),
toSymbolKeepAspect: toData.getItemVisual(idx, 'symbolKeepAspect'),
toSymbolOffset: toData.getItemVisual(idx, 'symbolOffset'),
toSymbolRotate: toData.getItemVisual(idx, 'symbolRotate'),
toSymbolSize: toData.getItemVisual(idx, 'symbolSize'),
toSymbol: toData.getItemVisual(idx, 'symbol'),
style: lineStyle,
})
})
lineDraw.updateData(lineData)
mlData.line.eachItemGraphicEl(function (el2) {
getECData(el2).dataModel = mlModel
el2.traverse(function (child) {
getECData(child).dataModel = mlModel
})
})
function updateDataVisualAndLayout(data2, idx, isFrom) {
var itemModel = data2.getItemModel(idx)
updateSingleMarkerEndLayout(data2, idx, isFrom, seriesModel, api)
var style2 = itemModel.getModel('itemStyle').getItemStyle()
if (style2.fill == null) {
style2.fill = getVisualFromData(seriesData, 'color')
}
data2.setItemVisual(idx, {
symbolKeepAspect: itemModel.get('symbolKeepAspect'),
symbolOffset: retrieve2(
itemModel.get('symbolOffset', true),
symbolOffset[isFrom ? 0 : 1]
),
symbolRotate: retrieve2(
itemModel.get('symbolRotate', true),
symbolRotate[isFrom ? 0 : 1]
),
symbolSize: retrieve2(
itemModel.get('symbolSize'),
symbolSize[isFrom ? 0 : 1]
),
symbol: retrieve2(
itemModel.get('symbol', true),
symbolType[isFrom ? 0 : 1]
),
style: style2,
})
}
this.markKeep(lineDraw)
lineDraw.group.silent = mlModel.get('silent') || seriesModel.get('silent')
}
MarkLineView2.type = 'markLine'
return MarkLineView2
})(MarkerView$1)
function createList$1(coordSys, seriesModel, mlModel) {
var coordDimsInfos
if (coordSys) {
coordDimsInfos = map$1(
coordSys && coordSys.dimensions,
function (coordDim) {
var info =
seriesModel
.getData()
.getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) ||
{}
return extend(extend({}, info), {
name: coordDim,
ordinalMeta: null,
})
}
)
} else {
coordDimsInfos = [
{
name: 'value',
type: 'float',
},
]
}
var fromData = new SeriesData$1(coordDimsInfos, mlModel)
var toData = new SeriesData$1(coordDimsInfos, mlModel)
var lineData = new SeriesData$1([], mlModel)
var optData = map$1(
mlModel.get('data'),
curry$1(markLineTransform, seriesModel, coordSys, mlModel)
)
if (coordSys) {
optData = filter(optData, curry$1(markLineFilter, coordSys))
}
var dimValueGetter = createMarkerDimValueGetter(!!coordSys, coordDimsInfos)
fromData.initData(
map$1(optData, function (item2) {
return item2[0]
}),
null,
dimValueGetter
)
toData.initData(
map$1(optData, function (item2) {
return item2[1]
}),
null,
dimValueGetter
)
lineData.initData(
map$1(optData, function (item2) {
return item2[2]
})
)
lineData.hasItemOption = true
return {
from: fromData,
to: toData,
line: lineData,
}
}
var MarkLineView$1 = MarkLineView
function install$f(registers) {
registers.registerComponentModel(MarkLineModel$1)
registers.registerComponentView(MarkLineView$1)
registers.registerPreprocessor(function (opt) {
if (checkMarkerInSeries(opt.series, 'markLine')) {
opt.markLine = opt.markLine || {}
}
})
}
var MarkAreaModel = (function (_super) {
__extends$2(MarkAreaModel2, _super)
function MarkAreaModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = MarkAreaModel2.type
return _this
}
MarkAreaModel2.prototype.createMarkerModelFromSeries = function (
markerOpt,
masterMarkerModel,
ecModel
) {
return new MarkAreaModel2(markerOpt, masterMarkerModel, ecModel)
}
MarkAreaModel2.type = 'markArea'
MarkAreaModel2.defaultOption = {
z: 1,
tooltip: {
trigger: 'item',
},
animation: false,
label: {
show: true,
position: 'top',
},
itemStyle: {
borderWidth: 0,
},
emphasis: {
label: {
show: true,
position: 'top',
},
},
}
return MarkAreaModel2
})(MarkerModel$1)
var MarkAreaModel$1 = MarkAreaModel
var inner$2 = makeInner()
var markAreaTransform = function (seriesModel, coordSys, maModel, item2) {
var item0 = item2[0]
var item1 = item2[1]
if (!item0 || !item1) {
return
}
var lt2 = dataTransform(seriesModel, item0)
var rb2 = dataTransform(seriesModel, item1)
var ltCoord = lt2.coord
var rbCoord = rb2.coord
ltCoord[0] = retrieve(ltCoord[0], -Infinity)
ltCoord[1] = retrieve(ltCoord[1], -Infinity)
rbCoord[0] = retrieve(rbCoord[0], Infinity)
rbCoord[1] = retrieve(rbCoord[1], Infinity)
var result = mergeAll([{}, lt2, rb2])
result.coord = [lt2.coord, rb2.coord]
result.x0 = lt2.x
result.y0 = lt2.y
result.x1 = rb2.x
result.y1 = rb2.y
return result
}
function isInfinity(val2) {
return !isNaN(val2) && !isFinite(val2)
}
function ifMarkAreaHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) {
var otherDimIndex = 1 - dimIndex
return (
isInfinity(fromCoord[otherDimIndex]) && isInfinity(toCoord[otherDimIndex])
)
}
function markAreaFilter(coordSys, item2) {
var fromCoord = item2.coord[0]
var toCoord = item2.coord[1]
var item0 = {
coord: fromCoord,
x: item2.x0,
y: item2.y0,
}
var item1 = {
coord: toCoord,
x: item2.x1,
y: item2.y1,
}
if (isCoordinateSystemType(coordSys, 'cartesian2d')) {
if (
fromCoord &&
toCoord &&
(ifMarkAreaHasOnlyDim(1, fromCoord, toCoord) ||
ifMarkAreaHasOnlyDim(0, fromCoord, toCoord))
) {
return true
}
return zoneFilter(coordSys, item0, item1)
}
return dataFilter(coordSys, item0) || dataFilter(coordSys, item1)
}
function getSingleMarkerEndPoint(data2, idx, dims, seriesModel, api) {
var coordSys = seriesModel.coordinateSystem
var itemModel = data2.getItemModel(idx)
var point
var xPx = parsePercent(itemModel.get(dims[0]), api.getWidth())
var yPx = parsePercent(itemModel.get(dims[1]), api.getHeight())
if (!isNaN(xPx) && !isNaN(yPx)) {
point = [xPx, yPx]
} else {
if (seriesModel.getMarkerPosition) {
var pointValue0 = data2.getValues(['x0', 'y0'], idx)
var pointValue1 = data2.getValues(['x1', 'y1'], idx)
var clampPointValue0 = coordSys.clampData(pointValue0)
var clampPointValue1 = coordSys.clampData(pointValue1)
var pointValue = []
if (dims[0] === 'x0') {
pointValue[0] =
clampPointValue0[0] > clampPointValue1[0]
? pointValue1[0]
: pointValue0[0]
} else {
pointValue[0] =
clampPointValue0[0] > clampPointValue1[0]
? pointValue0[0]
: pointValue1[0]
}
if (dims[1] === 'y0') {
pointValue[1] =
clampPointValue0[1] > clampPointValue1[1]
? pointValue1[1]
: pointValue0[1]
} else {
pointValue[1] =
clampPointValue0[1] > clampPointValue1[1]
? pointValue0[1]
: pointValue1[1]
}
point = seriesModel.getMarkerPosition(pointValue, dims, true)
} else {
var x2 = data2.get(dims[0], idx)
var y2 = data2.get(dims[1], idx)
var pt3 = [x2, y2]
coordSys.clampData && coordSys.clampData(pt3, pt3)
point = coordSys.dataToPoint(pt3, true)
}
if (isCoordinateSystemType(coordSys, 'cartesian2d')) {
var xAxis = coordSys.getAxis('x')
var yAxis = coordSys.getAxis('y')
var x2 = data2.get(dims[0], idx)
var y2 = data2.get(dims[1], idx)
if (isInfinity(x2)) {
point[0] = xAxis.toGlobalCoord(
xAxis.getExtent()[dims[0] === 'x0' ? 0 : 1]
)
} else if (isInfinity(y2)) {
point[1] = yAxis.toGlobalCoord(
yAxis.getExtent()[dims[1] === 'y0' ? 0 : 1]
)
}
}
if (!isNaN(xPx)) {
point[0] = xPx
}
if (!isNaN(yPx)) {
point[1] = yPx
}
}
return point
}
var dimPermutations = [
['x0', 'y0'],
['x1', 'y0'],
['x1', 'y1'],
['x0', 'y1'],
]
var MarkAreaView = (function (_super) {
__extends$2(MarkAreaView2, _super)
function MarkAreaView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = MarkAreaView2.type
return _this
}
MarkAreaView2.prototype.updateTransform = function (
markAreaModel,
ecModel,
api
) {
ecModel.eachSeries(function (seriesModel) {
var maModel = MarkerModel$1.getMarkerModelFromSeries(
seriesModel,
'markArea'
)
if (maModel) {
var areaData_1 = maModel.getData()
areaData_1.each(function (idx) {
var points2 = map$1(dimPermutations, function (dim) {
return getSingleMarkerEndPoint(
areaData_1,
idx,
dim,
seriesModel,
api
)
})
areaData_1.setItemLayout(idx, points2)
var el2 = areaData_1.getItemGraphicEl(idx)
el2.setShape('points', points2)
})
}
}, this)
}
MarkAreaView2.prototype.renderSeries = function (
seriesModel,
maModel,
ecModel,
api
) {
var coordSys = seriesModel.coordinateSystem
var seriesId = seriesModel.id
var seriesData = seriesModel.getData()
var areaGroupMap = this.markerGroupMap
var polygonGroup =
areaGroupMap.get(seriesId) ||
areaGroupMap.set(seriesId, {
group: new Group$5(),
})
this.group.add(polygonGroup.group)
this.markKeep(polygonGroup)
var areaData = createList(coordSys, seriesModel, maModel)
maModel.setData(areaData)
areaData.each(function (idx) {
var points2 = map$1(dimPermutations, function (dim) {
return getSingleMarkerEndPoint(areaData, idx, dim, seriesModel, api)
})
var xAxisScale = coordSys.getAxis('x').scale
var yAxisScale = coordSys.getAxis('y').scale
var xAxisExtent = xAxisScale.getExtent()
var yAxisExtent = yAxisScale.getExtent()
var xPointExtent = [
xAxisScale.parse(areaData.get('x0', idx)),
xAxisScale.parse(areaData.get('x1', idx)),
]
var yPointExtent = [
yAxisScale.parse(areaData.get('y0', idx)),
yAxisScale.parse(areaData.get('y1', idx)),
]
asc$2(xPointExtent)
asc$2(yPointExtent)
var overlapped = !(
xAxisExtent[0] > xPointExtent[1] ||
xAxisExtent[1] < xPointExtent[0] ||
yAxisExtent[0] > yPointExtent[1] ||
yAxisExtent[1] < yPointExtent[0]
)
var allClipped = !overlapped
areaData.setItemLayout(idx, {
points: points2,
allClipped,
})
var style2 = areaData
.getItemModel(idx)
.getModel('itemStyle')
.getItemStyle()
var color2 = getVisualFromData(seriesData, 'color')
if (!style2.fill) {
style2.fill = color2
if (isString$2(style2.fill)) {
style2.fill = modifyAlpha(style2.fill, 0.4)
}
}
if (!style2.stroke) {
style2.stroke = color2
}
areaData.setItemVisual(idx, 'style', style2)
})
areaData
.diff(inner$2(polygonGroup).data)
.add(function (idx) {
var layout2 = areaData.getItemLayout(idx)
if (!layout2.allClipped) {
var polygon = new Polygon$1({
shape: {
points: layout2.points,
},
})
areaData.setItemGraphicEl(idx, polygon)
polygonGroup.group.add(polygon)
}
})
.update(function (newIdx, oldIdx) {
var polygon = inner$2(polygonGroup).data.getItemGraphicEl(oldIdx)
var layout2 = areaData.getItemLayout(newIdx)
if (!layout2.allClipped) {
if (polygon) {
updateProps$1(
polygon,
{
shape: {
points: layout2.points,
},
},
maModel,
newIdx
)
} else {
polygon = new Polygon$1({
shape: {
points: layout2.points,
},
})
}
areaData.setItemGraphicEl(newIdx, polygon)
polygonGroup.group.add(polygon)
} else if (polygon) {
polygonGroup.group.remove(polygon)
}
})
.remove(function (idx) {
var polygon = inner$2(polygonGroup).data.getItemGraphicEl(idx)
polygonGroup.group.remove(polygon)
})
.execute()
areaData.eachItemGraphicEl(function (polygon, idx) {
var itemModel = areaData.getItemModel(idx)
var style2 = areaData.getItemVisual(idx, 'style')
polygon.useStyle(areaData.getItemVisual(idx, 'style'))
setLabelStyle(polygon, getLabelStatesModels(itemModel), {
labelFetcher: maModel,
labelDataIndex: idx,
defaultText: areaData.getName(idx) || '',
inheritColor: isString$2(style2.fill)
? modifyAlpha(style2.fill, 1)
: '#000',
})
setStatesStylesFromModel(polygon, itemModel)
toggleHoverEmphasis(
polygon,
null,
null,
itemModel.get(['emphasis', 'disabled'])
)
getECData(polygon).dataModel = maModel
})
inner$2(polygonGroup).data = areaData
polygonGroup.group.silent =
maModel.get('silent') || seriesModel.get('silent')
}
MarkAreaView2.type = 'markArea'
return MarkAreaView2
})(MarkerView$1)
function createList(coordSys, seriesModel, maModel) {
var areaData
var dataDims
var dims = ['x0', 'y0', 'x1', 'y1']
if (coordSys) {
var coordDimsInfos_1 = map$1(
coordSys && coordSys.dimensions,
function (coordDim) {
var data2 = seriesModel.getData()
var info = data2.getDimensionInfo(data2.mapDimension(coordDim)) || {}
return extend(extend({}, info), {
name: coordDim,
ordinalMeta: null,
})
}
)
dataDims = map$1(dims, function (dim, idx) {
return {
name: dim,
type: coordDimsInfos_1[idx % 2].type,
}
})
areaData = new SeriesData$1(dataDims, maModel)
} else {
dataDims = [
{
name: 'value',
type: 'float',
},
]
areaData = new SeriesData$1(dataDims, maModel)
}
var optData = map$1(
maModel.get('data'),
curry$1(markAreaTransform, seriesModel, coordSys, maModel)
)
if (coordSys) {
optData = filter(optData, curry$1(markAreaFilter, coordSys))
}
var dimValueGetter = coordSys
? function (item2, dimName, dataIndex, dimIndex) {
var rawVal = item2.coord[Math.floor(dimIndex / 2)][dimIndex % 2]
return parseDataValue(rawVal, dataDims[dimIndex])
}
: function (item2, dimName, dataIndex, dimIndex) {
return parseDataValue(item2.value, dataDims[dimIndex])
}
areaData.initData(optData, null, dimValueGetter)
areaData.hasItemOption = true
return areaData
}
var MarkAreaView$1 = MarkAreaView
function install$e(registers) {
registers.registerComponentModel(MarkAreaModel$1)
registers.registerComponentView(MarkAreaView$1)
registers.registerPreprocessor(function (opt) {
if (checkMarkerInSeries(opt.series, 'markArea')) {
opt.markArea = opt.markArea || {}
}
})
}
var getDefaultSelectorOptions = function (ecModel, type4) {
if (type4 === 'all') {
return {
type: 'all',
title: ecModel.getLocaleModel().get(['legend', 'selector', 'all']),
}
} else if (type4 === 'inverse') {
return {
type: 'inverse',
title: ecModel.getLocaleModel().get(['legend', 'selector', 'inverse']),
}
}
}
var LegendModel = (function (_super) {
__extends$2(LegendModel2, _super)
function LegendModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = LegendModel2.type
_this.layoutMode = {
type: 'box',
ignoreSize: true,
}
return _this
}
LegendModel2.prototype.init = function (option2, parentModel, ecModel) {
this.mergeDefaultAndTheme(option2, ecModel)
option2.selected = option2.selected || {}
this._updateSelector(option2)
}
LegendModel2.prototype.mergeOption = function (option2, ecModel) {
_super.prototype.mergeOption.call(this, option2, ecModel)
this._updateSelector(option2)
}
LegendModel2.prototype._updateSelector = function (option2) {
var selector2 = option2.selector
var ecModel = this.ecModel
if (selector2 === true) {
selector2 = option2.selector = ['all', 'inverse']
}
if (isArray$6(selector2)) {
each$f(selector2, function (item2, index2) {
isString$2(item2) &&
(item2 = {
type: item2,
})
selector2[index2] = merge(
item2,
getDefaultSelectorOptions(ecModel, item2.type)
)
})
}
}
LegendModel2.prototype.optionUpdated = function () {
this._updateData(this.ecModel)
var legendData = this._data
if (legendData[0] && this.get('selectedMode') === 'single') {
var hasSelected = false
for (var i2 = 0; i2 < legendData.length; i2++) {
var name_1 = legendData[i2].get('name')
if (this.isSelected(name_1)) {
this.select(name_1)
hasSelected = true
break
}
}
!hasSelected && this.select(legendData[0].get('name'))
}
}
LegendModel2.prototype._updateData = function (ecModel) {
var potentialData = []
var availableNames = []
ecModel.eachRawSeries(function (seriesModel) {
var seriesName = seriesModel.name
availableNames.push(seriesName)
var isPotential
if (seriesModel.legendVisualProvider) {
var provider = seriesModel.legendVisualProvider
var names2 = provider.getAllNames()
if (!ecModel.isSeriesFiltered(seriesModel)) {
availableNames = availableNames.concat(names2)
}
if (names2.length) {
potentialData = potentialData.concat(names2)
} else {
isPotential = true
}
} else {
isPotential = true
}
if (isPotential && isNameSpecified(seriesModel)) {
potentialData.push(seriesModel.name)
}
})
this._availableNames = availableNames
var rawData = this.get('data') || potentialData
var legendNameMap = createHashMap()
var legendData = map$1(
rawData,
function (dataItem) {
if (isString$2(dataItem) || isNumber$2(dataItem)) {
dataItem = {
name: dataItem,
}
}
if (legendNameMap.get(dataItem.name)) {
return null
}
legendNameMap.set(dataItem.name, true)
return new Model$1(dataItem, this, this.ecModel)
},
this
)
this._data = filter(legendData, function (item2) {
return !!item2
})
}
LegendModel2.prototype.getData = function () {
return this._data
}
LegendModel2.prototype.select = function (name2) {
var selected = this.option.selected
var selectedMode = this.get('selectedMode')
if (selectedMode === 'single') {
var data2 = this._data
each$f(data2, function (dataItem) {
selected[dataItem.get('name')] = false
})
}
selected[name2] = true
}
LegendModel2.prototype.unSelect = function (name2) {
if (this.get('selectedMode') !== 'single') {
this.option.selected[name2] = false
}
}
LegendModel2.prototype.toggleSelected = function (name2) {
var selected = this.option.selected
if (!selected.hasOwnProperty(name2)) {
selected[name2] = true
}
this[selected[name2] ? 'unSelect' : 'select'](name2)
}
LegendModel2.prototype.allSelect = function () {
var data2 = this._data
var selected = this.option.selected
each$f(data2, function (dataItem) {
selected[dataItem.get('name', true)] = true
})
}
LegendModel2.prototype.inverseSelect = function () {
var data2 = this._data
var selected = this.option.selected
each$f(data2, function (dataItem) {
var name2 = dataItem.get('name', true)
if (!selected.hasOwnProperty(name2)) {
selected[name2] = true
}
selected[name2] = !selected[name2]
})
}
LegendModel2.prototype.isSelected = function (name2) {
var selected = this.option.selected
return (
!(selected.hasOwnProperty(name2) && !selected[name2]) &&
indexOf(this._availableNames, name2) >= 0
)
}
LegendModel2.prototype.getOrient = function () {
return this.get('orient') === 'vertical'
? {
index: 1,
name: 'vertical',
}
: {
index: 0,
name: 'horizontal',
}
}
LegendModel2.type = 'legend.plain'
LegendModel2.dependencies = ['series']
LegendModel2.defaultOption = {
z: 4,
show: true,
orient: 'horizontal',
left: 'center',
top: 0,
align: 'auto',
backgroundColor: 'rgba(0,0,0,0)',
borderColor: '#ccc',
borderRadius: 0,
borderWidth: 0,
padding: 5,
itemGap: 10,
itemWidth: 25,
itemHeight: 14,
symbolRotate: 'inherit',
symbolKeepAspect: true,
inactiveColor: '#ccc',
inactiveBorderColor: '#ccc',
inactiveBorderWidth: 'auto',
itemStyle: {
color: 'inherit',
opacity: 'inherit',
borderColor: 'inherit',
borderWidth: 'auto',
borderCap: 'inherit',
borderJoin: 'inherit',
borderDashOffset: 'inherit',
borderMiterLimit: 'inherit',
},
lineStyle: {
width: 'auto',
color: 'inherit',
inactiveColor: '#ccc',
inactiveWidth: 2,
opacity: 'inherit',
type: 'inherit',
cap: 'inherit',
join: 'inherit',
dashOffset: 'inherit',
miterLimit: 'inherit',
},
textStyle: {
color: '#333',
},
selectedMode: true,
selector: false,
selectorLabel: {
show: true,
borderRadius: 10,
padding: [3, 5, 3, 5],
fontSize: 12,
fontFamily: 'sans-serif',
color: '#666',
borderWidth: 1,
borderColor: '#666',
},
emphasis: {
selectorLabel: {
show: true,
color: '#eee',
backgroundColor: '#666',
},
},
selectorPosition: 'auto',
selectorItemGap: 7,
selectorButtonGap: 10,
tooltip: {
show: false,
},
}
return LegendModel2
})(ComponentModel$1)
var LegendModel$1 = LegendModel
var curry = curry$1
var each$3 = each$f
var Group$2 = Group$5
var LegendView = (function (_super) {
__extends$2(LegendView2, _super)
function LegendView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = LegendView2.type
_this.newlineDisabled = false
return _this
}
LegendView2.prototype.init = function () {
this.group.add((this._contentGroup = new Group$2()))
this.group.add((this._selectorGroup = new Group$2()))
this._isFirstRender = true
}
LegendView2.prototype.getContentGroup = function () {
return this._contentGroup
}
LegendView2.prototype.getSelectorGroup = function () {
return this._selectorGroup
}
LegendView2.prototype.render = function (legendModel, ecModel, api) {
var isFirstRender = this._isFirstRender
this._isFirstRender = false
this.resetInner()
if (!legendModel.get('show', true)) {
return
}
var itemAlign = legendModel.get('align')
var orient = legendModel.get('orient')
if (!itemAlign || itemAlign === 'auto') {
itemAlign =
legendModel.get('left') === 'right' && orient === 'vertical'
? 'right'
: 'left'
}
var selector2 = legendModel.get('selector', true)
var selectorPosition = legendModel.get('selectorPosition', true)
if (selector2 && (!selectorPosition || selectorPosition === 'auto')) {
selectorPosition = orient === 'horizontal' ? 'end' : 'start'
}
this.renderInner(
itemAlign,
legendModel,
ecModel,
api,
selector2,
orient,
selectorPosition
)
var positionInfo = legendModel.getBoxLayoutParams()
var viewportSize = {
width: api.getWidth(),
height: api.getHeight(),
}
var padding = legendModel.get('padding')
var maxSize = getLayoutRect(positionInfo, viewportSize, padding)
var mainRect = this.layoutInner(
legendModel,
itemAlign,
maxSize,
isFirstRender,
selector2,
selectorPosition
)
var layoutRect = getLayoutRect(
defaults(
{
width: mainRect.width,
height: mainRect.height,
},
positionInfo
),
viewportSize,
padding
)
this.group.x = layoutRect.x - mainRect.x
this.group.y = layoutRect.y - mainRect.y
this.group.markRedraw()
this.group.add((this._backgroundEl = makeBackground(mainRect, legendModel)))
}
LegendView2.prototype.resetInner = function () {
this.getContentGroup().removeAll()
this._backgroundEl && this.group.remove(this._backgroundEl)
this.getSelectorGroup().removeAll()
}
LegendView2.prototype.renderInner = function (
itemAlign,
legendModel,
ecModel,
api,
selector2,
orient,
selectorPosition
) {
var contentGroup = this.getContentGroup()
var legendDrawnMap = createHashMap()
var selectMode = legendModel.get('selectedMode')
var excludeSeriesId = []
ecModel.eachRawSeries(function (seriesModel) {
!seriesModel.get('legendHoverLink') &&
excludeSeriesId.push(seriesModel.id)
})
each$3(
legendModel.getData(),
function (legendItemModel, dataIndex) {
var name2 = legendItemModel.get('name')
if (!this.newlineDisabled && (name2 === '' || name2 === '\n')) {
var g2 = new Group$2()
g2.newline = true
contentGroup.add(g2)
return
}
var seriesModel = ecModel.getSeriesByName(name2)[0]
if (legendDrawnMap.get(name2)) {
return
}
if (seriesModel) {
var data2 = seriesModel.getData()
var lineVisualStyle = data2.getVisual('legendLineStyle') || {}
var legendIcon = data2.getVisual('legendIcon')
var style2 = data2.getVisual('style')
var itemGroup = this._createItem(
seriesModel,
name2,
dataIndex,
legendItemModel,
legendModel,
itemAlign,
lineVisualStyle,
style2,
legendIcon,
selectMode,
api
)
itemGroup
.on(
'click',
curry(dispatchSelectAction, name2, null, api, excludeSeriesId)
)
.on(
'mouseover',
curry(
dispatchHighlightAction,
seriesModel.name,
null,
api,
excludeSeriesId
)
)
.on(
'mouseout',
curry(
dispatchDownplayAction,
seriesModel.name,
null,
api,
excludeSeriesId
)
)
legendDrawnMap.set(name2, true)
} else {
ecModel.eachRawSeries(function (seriesModel2) {
if (legendDrawnMap.get(name2)) {
return
}
if (seriesModel2.legendVisualProvider) {
var provider = seriesModel2.legendVisualProvider
if (!provider.containName(name2)) {
return
}
var idx = provider.indexOfName(name2)
var style3 = provider.getItemVisual(idx, 'style')
var legendIcon2 = provider.getItemVisual(idx, 'legendIcon')
var colorArr = parse$1(style3.fill)
if (colorArr && colorArr[3] === 0) {
colorArr[3] = 0.2
style3 = extend(extend({}, style3), {
fill: stringify(colorArr, 'rgba'),
})
}
var itemGroup2 = this._createItem(
seriesModel2,
name2,
dataIndex,
legendItemModel,
legendModel,
itemAlign,
{},
style3,
legendIcon2,
selectMode,
api
)
itemGroup2
.on(
'click',
curry(dispatchSelectAction, null, name2, api, excludeSeriesId)
)
.on(
'mouseover',
curry(
dispatchHighlightAction,
null,
name2,
api,
excludeSeriesId
)
)
.on(
'mouseout',
curry(
dispatchDownplayAction,
null,
name2,
api,
excludeSeriesId
)
)
legendDrawnMap.set(name2, true)
}
}, this)
}
},
this
)
if (selector2) {
this._createSelector(
selector2,
legendModel,
api,
orient,
selectorPosition
)
}
}
LegendView2.prototype._createSelector = function (
selector2,
legendModel,
api,
orient,
selectorPosition
) {
var selectorGroup = this.getSelectorGroup()
each$3(selector2, function createSelectorButton(selectorItem) {
var type4 = selectorItem.type
var labelText = new ZRText$1({
style: {
x: 0,
y: 0,
align: 'center',
verticalAlign: 'middle',
},
onclick: function () {
api.dispatchAction({
type: type4 === 'all' ? 'legendAllSelect' : 'legendInverseSelect',
})
},
})
selectorGroup.add(labelText)
var labelModel = legendModel.getModel('selectorLabel')
var emphasisLabelModel = legendModel.getModel([
'emphasis',
'selectorLabel',
])
setLabelStyle(
labelText,
{
normal: labelModel,
emphasis: emphasisLabelModel,
},
{
defaultText: selectorItem.title,
}
)
enableHoverEmphasis(labelText)
})
}
LegendView2.prototype._createItem = function (
seriesModel,
name2,
dataIndex,
legendItemModel,
legendModel,
itemAlign,
lineVisualStyle,
itemVisualStyle,
legendIcon,
selectMode,
api
) {
var drawType = seriesModel.visualDrawType
var itemWidth = legendModel.get('itemWidth')
var itemHeight = legendModel.get('itemHeight')
var isSelected = legendModel.isSelected(name2)
var iconRotate = legendItemModel.get('symbolRotate')
var symbolKeepAspect = legendItemModel.get('symbolKeepAspect')
var legendIconType = legendItemModel.get('icon')
legendIcon = legendIconType || legendIcon || 'roundRect'
var style2 = getLegendStyle(
legendIcon,
legendItemModel,
lineVisualStyle,
itemVisualStyle,
drawType,
isSelected,
api
)
var itemGroup = new Group$2()
var textStyleModel = legendItemModel.getModel('textStyle')
if (
isFunction$4(seriesModel.getLegendIcon) &&
(!legendIconType || legendIconType === 'inherit')
) {
itemGroup.add(
seriesModel.getLegendIcon({
itemWidth,
itemHeight,
icon: legendIcon,
iconRotate,
itemStyle: style2.itemStyle,
lineStyle: style2.lineStyle,
symbolKeepAspect,
})
)
} else {
var rotate2 =
legendIconType === 'inherit' &&
seriesModel.getData().getVisual('symbol')
? iconRotate === 'inherit'
? seriesModel.getData().getVisual('symbolRotate')
: iconRotate
: 0
itemGroup.add(
getDefaultLegendIcon({
itemWidth,
itemHeight,
icon: legendIcon,
iconRotate: rotate2,
itemStyle: style2.itemStyle,
lineStyle: style2.lineStyle,
symbolKeepAspect,
})
)
}
var textX = itemAlign === 'left' ? itemWidth + 5 : -5
var textAlign2 = itemAlign
var formatter2 = legendModel.get('formatter')
var content2 = name2
if (isString$2(formatter2) && formatter2) {
content2 = formatter2.replace('{name}', name2 != null ? name2 : '')
} else if (isFunction$4(formatter2)) {
content2 = formatter2(name2)
}
var textColor = isSelected
? textStyleModel.getTextColor()
: legendItemModel.get('inactiveColor')
itemGroup.add(
new ZRText$1({
style: createTextStyle$1(
textStyleModel,
{
text: content2,
x: textX,
y: itemHeight / 2,
fill: textColor,
align: textAlign2,
verticalAlign: 'middle',
},
{
inheritColor: textColor,
}
),
})
)
var hitRect = new Rect$4({
shape: itemGroup.getBoundingRect(),
invisible: true,
})
var tooltipModel = legendItemModel.getModel('tooltip')
if (tooltipModel.get('show')) {
setTooltipConfig({
el: hitRect,
componentModel: legendModel,
itemName: name2,
itemTooltipOption: tooltipModel.option,
})
}
itemGroup.add(hitRect)
itemGroup.eachChild(function (child) {
child.silent = true
})
hitRect.silent = !selectMode
this.getContentGroup().add(itemGroup)
enableHoverEmphasis(itemGroup)
itemGroup.__legendDataIndex = dataIndex
return itemGroup
}
LegendView2.prototype.layoutInner = function (
legendModel,
itemAlign,
maxSize,
isFirstRender,
selector2,
selectorPosition
) {
var contentGroup = this.getContentGroup()
var selectorGroup = this.getSelectorGroup()
box(
legendModel.get('orient'),
contentGroup,
legendModel.get('itemGap'),
maxSize.width,
maxSize.height
)
var contentRect = contentGroup.getBoundingRect()
var contentPos = [-contentRect.x, -contentRect.y]
selectorGroup.markRedraw()
contentGroup.markRedraw()
if (selector2) {
box('horizontal', selectorGroup, legendModel.get('selectorItemGap', true))
var selectorRect = selectorGroup.getBoundingRect()
var selectorPos = [-selectorRect.x, -selectorRect.y]
var selectorButtonGap = legendModel.get('selectorButtonGap', true)
var orientIdx = legendModel.getOrient().index
var wh = orientIdx === 0 ? 'width' : 'height'
var hw = orientIdx === 0 ? 'height' : 'width'
var yx = orientIdx === 0 ? 'y' : 'x'
if (selectorPosition === 'end') {
selectorPos[orientIdx] += contentRect[wh] + selectorButtonGap
} else {
contentPos[orientIdx] += selectorRect[wh] + selectorButtonGap
}
selectorPos[1 - orientIdx] += contentRect[hw] / 2 - selectorRect[hw] / 2
selectorGroup.x = selectorPos[0]
selectorGroup.y = selectorPos[1]
contentGroup.x = contentPos[0]
contentGroup.y = contentPos[1]
var mainRect = {
x: 0,
y: 0,
}
mainRect[wh] = contentRect[wh] + selectorButtonGap + selectorRect[wh]
mainRect[hw] = Math.max(contentRect[hw], selectorRect[hw])
mainRect[yx] = Math.min(0, selectorRect[yx] + selectorPos[1 - orientIdx])
return mainRect
} else {
contentGroup.x = contentPos[0]
contentGroup.y = contentPos[1]
return this.group.getBoundingRect()
}
}
LegendView2.prototype.remove = function () {
this.getContentGroup().removeAll()
this._isFirstRender = true
}
LegendView2.type = 'legend.plain'
return LegendView2
})(ComponentView$1)
function getLegendStyle(
iconType,
legendItemModel,
lineVisualStyle,
itemVisualStyle,
drawType,
isSelected,
api
) {
function handleCommonProps(style2, visualStyle) {
if (style2.lineWidth === 'auto') {
style2.lineWidth = visualStyle.lineWidth > 0 ? 2 : 0
}
each$3(style2, function (propVal, propName) {
style2[propName] === 'inherit' &&
(style2[propName] = visualStyle[propName])
})
}
var itemStyleModel = legendItemModel.getModel('itemStyle')
var itemStyle = itemStyleModel.getItemStyle()
var iconBrushType = iconType.lastIndexOf('empty', 0) === 0 ? 'fill' : 'stroke'
var decalStyle = itemStyleModel.getShallow('decal')
itemStyle.decal =
!decalStyle || decalStyle === 'inherit'
? itemVisualStyle.decal
: createOrUpdatePatternFromDecal(decalStyle, api)
if (itemStyle.fill === 'inherit') {
itemStyle.fill = itemVisualStyle[drawType]
}
if (itemStyle.stroke === 'inherit') {
itemStyle.stroke = itemVisualStyle[iconBrushType]
}
if (itemStyle.opacity === 'inherit') {
itemStyle.opacity = (
drawType === 'fill' ? itemVisualStyle : lineVisualStyle
).opacity
}
handleCommonProps(itemStyle, itemVisualStyle)
var legendLineModel = legendItemModel.getModel('lineStyle')
var lineStyle = legendLineModel.getLineStyle()
handleCommonProps(lineStyle, lineVisualStyle)
itemStyle.fill === 'auto' && (itemStyle.fill = itemVisualStyle.fill)
itemStyle.stroke === 'auto' && (itemStyle.stroke = itemVisualStyle.fill)
lineStyle.stroke === 'auto' && (lineStyle.stroke = itemVisualStyle.fill)
if (!isSelected) {
var borderWidth = legendItemModel.get('inactiveBorderWidth')
var visualHasBorder = itemStyle[iconBrushType]
itemStyle.lineWidth =
borderWidth === 'auto'
? itemVisualStyle.lineWidth > 0 && visualHasBorder
? 2
: 0
: itemStyle.lineWidth
itemStyle.fill = legendItemModel.get('inactiveColor')
itemStyle.stroke = legendItemModel.get('inactiveBorderColor')
lineStyle.stroke = legendLineModel.get('inactiveColor')
lineStyle.lineWidth = legendLineModel.get('inactiveWidth')
}
return {
itemStyle,
lineStyle,
}
}
function getDefaultLegendIcon(opt) {
var symboType = opt.icon || 'roundRect'
var icon = createSymbol$1(
symboType,
0,
0,
opt.itemWidth,
opt.itemHeight,
opt.itemStyle.fill,
opt.symbolKeepAspect
)
icon.setStyle(opt.itemStyle)
icon.rotation = ((opt.iconRotate || 0) * Math.PI) / 180
icon.setOrigin([opt.itemWidth / 2, opt.itemHeight / 2])
if (symboType.indexOf('empty') > -1) {
icon.style.stroke = icon.style.fill
icon.style.fill = '#fff'
icon.style.lineWidth = 2
}
return icon
}
function dispatchSelectAction(seriesName, dataName, api, excludeSeriesId) {
dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId)
api.dispatchAction({
type: 'legendToggleSelect',
name: seriesName != null ? seriesName : dataName,
})
dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId)
}
function isUseHoverLayer(api) {
var list2 = api.getZr().storage.getDisplayList()
var emphasisState
var i2 = 0
var len2 = list2.length
while (i2 < len2 && !(emphasisState = list2[i2].states.emphasis)) {
i2++
}
return emphasisState && emphasisState.hoverLayer
}
function dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId) {
if (!isUseHoverLayer(api)) {
api.dispatchAction({
type: 'highlight',
seriesName,
name: dataName,
excludeSeriesId,
})
}
}
function dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId) {
if (!isUseHoverLayer(api)) {
api.dispatchAction({
type: 'downplay',
seriesName,
name: dataName,
excludeSeriesId,
})
}
}
var LegendView$1 = LegendView
function legendFilter(ecModel) {
var legendModels = ecModel.findComponents({
mainType: 'legend',
})
if (legendModels && legendModels.length) {
ecModel.filterSeries(function (series) {
for (var i2 = 0; i2 < legendModels.length; i2++) {
if (!legendModels[i2].isSelected(series.name)) {
return false
}
}
return true
})
}
}
function legendSelectActionHandler(methodName, payload, ecModel) {
var selectedMap = {}
var isToggleSelect = methodName === 'toggleSelected'
var isSelected
ecModel.eachComponent('legend', function (legendModel) {
if (isToggleSelect && isSelected != null) {
legendModel[isSelected ? 'select' : 'unSelect'](payload.name)
} else if (methodName === 'allSelect' || methodName === 'inverseSelect') {
legendModel[methodName]()
} else {
legendModel[methodName](payload.name)
isSelected = legendModel.isSelected(payload.name)
}
var legendData = legendModel.getData()
each$f(legendData, function (model) {
var name2 = model.get('name')
if (name2 === '\n' || name2 === '') {
return
}
var isItemSelected = legendModel.isSelected(name2)
if (selectedMap.hasOwnProperty(name2)) {
selectedMap[name2] = selectedMap[name2] && isItemSelected
} else {
selectedMap[name2] = isItemSelected
}
})
})
return methodName === 'allSelect' || methodName === 'inverseSelect'
? {
selected: selectedMap,
}
: {
name: payload.name,
selected: selectedMap,
}
}
function installLegendAction(registers) {
registers.registerAction(
'legendToggleSelect',
'legendselectchanged',
curry$1(legendSelectActionHandler, 'toggleSelected')
)
registers.registerAction(
'legendAllSelect',
'legendselectall',
curry$1(legendSelectActionHandler, 'allSelect')
)
registers.registerAction(
'legendInverseSelect',
'legendinverseselect',
curry$1(legendSelectActionHandler, 'inverseSelect')
)
registers.registerAction(
'legendSelect',
'legendselected',
curry$1(legendSelectActionHandler, 'select')
)
registers.registerAction(
'legendUnSelect',
'legendunselected',
curry$1(legendSelectActionHandler, 'unSelect')
)
}
function install$d(registers) {
registers.registerComponentModel(LegendModel$1)
registers.registerComponentView(LegendView$1)
registers.registerProcessor(
registers.PRIORITY.PROCESSOR.SERIES_FILTER,
legendFilter
)
registers.registerSubTypeDefaulter('legend', function () {
return 'plain'
})
installLegendAction(registers)
}
var ScrollableLegendModel = (function (_super) {
__extends$2(ScrollableLegendModel2, _super)
function ScrollableLegendModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = ScrollableLegendModel2.type
return _this
}
ScrollableLegendModel2.prototype.setScrollDataIndex = function (
scrollDataIndex
) {
this.option.scrollDataIndex = scrollDataIndex
}
ScrollableLegendModel2.prototype.init = function (
option2,
parentModel,
ecModel
) {
var inputPositionParams = getLayoutParams(option2)
_super.prototype.init.call(this, option2, parentModel, ecModel)
mergeAndNormalizeLayoutParams(this, option2, inputPositionParams)
}
ScrollableLegendModel2.prototype.mergeOption = function (option2, ecModel) {
_super.prototype.mergeOption.call(this, option2, ecModel)
mergeAndNormalizeLayoutParams(this, this.option, option2)
}
ScrollableLegendModel2.type = 'legend.scroll'
ScrollableLegendModel2.defaultOption = inheritDefaultOption(
LegendModel$1.defaultOption,
{
scrollDataIndex: 0,
pageButtonItemGap: 5,
pageButtonGap: null,
pageButtonPosition: 'end',
pageFormatter: '{current}/{total}',
pageIcons: {
horizontal: ['M0,0L12,-10L12,10z', 'M0,0L-12,-10L-12,10z'],
vertical: ['M0,0L20,0L10,-20z', 'M0,0L20,0L10,20z'],
},
pageIconColor: '#2f4554',
pageIconInactiveColor: '#aaa',
pageIconSize: 15,
pageTextStyle: {
color: '#333',
},
animationDurationUpdate: 800,
}
)
return ScrollableLegendModel2
})(LegendModel$1)
function mergeAndNormalizeLayoutParams(legendModel, target2, raw) {
var orient = legendModel.getOrient()
var ignoreSize = [1, 1]
ignoreSize[orient.index] = 0
mergeLayoutParam(target2, raw, {
type: 'box',
ignoreSize: !!ignoreSize,
})
}
var ScrollableLegendModel$1 = ScrollableLegendModel
var Group$1 = Group$5
var WH = ['width', 'height']
var XY = ['x', 'y']
var ScrollableLegendView = (function (_super) {
__extends$2(ScrollableLegendView2, _super)
function ScrollableLegendView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = ScrollableLegendView2.type
_this.newlineDisabled = true
_this._currentIndex = 0
return _this
}
ScrollableLegendView2.prototype.init = function () {
_super.prototype.init.call(this)
this.group.add((this._containerGroup = new Group$1()))
this._containerGroup.add(this.getContentGroup())
this.group.add((this._controllerGroup = new Group$1()))
}
ScrollableLegendView2.prototype.resetInner = function () {
_super.prototype.resetInner.call(this)
this._controllerGroup.removeAll()
this._containerGroup.removeClipPath()
this._containerGroup.__rectSize = null
}
ScrollableLegendView2.prototype.renderInner = function (
itemAlign,
legendModel,
ecModel,
api,
selector2,
orient,
selectorPosition
) {
var self2 = this
_super.prototype.renderInner.call(
this,
itemAlign,
legendModel,
ecModel,
api,
selector2,
orient,
selectorPosition
)
var controllerGroup = this._controllerGroup
var pageIconSize = legendModel.get('pageIconSize', true)
var pageIconSizeArr = isArray$6(pageIconSize)
? pageIconSize
: [pageIconSize, pageIconSize]
createPageButton('pagePrev', 0)
var pageTextStyleModel = legendModel.getModel('pageTextStyle')
controllerGroup.add(
new ZRText$1({
name: 'pageText',
style: {
text: 'xx/xx',
fill: pageTextStyleModel.getTextColor(),
font: pageTextStyleModel.getFont(),
verticalAlign: 'middle',
align: 'center',
},
silent: true,
})
)
createPageButton('pageNext', 1)
function createPageButton(name2, iconIdx) {
var pageDataIndexName = name2 + 'DataIndex'
var icon = createIcon(
legendModel.get('pageIcons', true)[legendModel.getOrient().name][
iconIdx
],
{
onclick: bind$1(
self2._pageGo,
self2,
pageDataIndexName,
legendModel,
api
),
},
{
x: -pageIconSizeArr[0] / 2,
y: -pageIconSizeArr[1] / 2,
width: pageIconSizeArr[0],
height: pageIconSizeArr[1],
}
)
icon.name = name2
controllerGroup.add(icon)
}
}
ScrollableLegendView2.prototype.layoutInner = function (
legendModel,
itemAlign,
maxSize,
isFirstRender,
selector2,
selectorPosition
) {
var selectorGroup = this.getSelectorGroup()
var orientIdx = legendModel.getOrient().index
var wh = WH[orientIdx]
var xy = XY[orientIdx]
var hw = WH[1 - orientIdx]
var yx = XY[1 - orientIdx]
selector2 &&
box('horizontal', selectorGroup, legendModel.get('selectorItemGap', true))
var selectorButtonGap = legendModel.get('selectorButtonGap', true)
var selectorRect = selectorGroup.getBoundingRect()
var selectorPos = [-selectorRect.x, -selectorRect.y]
var processMaxSize = clone$4(maxSize)
selector2 &&
(processMaxSize[wh] = maxSize[wh] - selectorRect[wh] - selectorButtonGap)
var mainRect = this._layoutContentAndController(
legendModel,
isFirstRender,
processMaxSize,
orientIdx,
wh,
hw,
yx,
xy
)
if (selector2) {
if (selectorPosition === 'end') {
selectorPos[orientIdx] += mainRect[wh] + selectorButtonGap
} else {
var offset2 = selectorRect[wh] + selectorButtonGap
selectorPos[orientIdx] -= offset2
mainRect[xy] -= offset2
}
mainRect[wh] += selectorRect[wh] + selectorButtonGap
selectorPos[1 - orientIdx] +=
mainRect[yx] + mainRect[hw] / 2 - selectorRect[hw] / 2
mainRect[hw] = Math.max(mainRect[hw], selectorRect[hw])
mainRect[yx] = Math.min(
mainRect[yx],
selectorRect[yx] + selectorPos[1 - orientIdx]
)
selectorGroup.x = selectorPos[0]
selectorGroup.y = selectorPos[1]
selectorGroup.markRedraw()
}
return mainRect
}
ScrollableLegendView2.prototype._layoutContentAndController = function (
legendModel,
isFirstRender,
maxSize,
orientIdx,
wh,
hw,
yx,
xy
) {
var contentGroup = this.getContentGroup()
var containerGroup = this._containerGroup
var controllerGroup = this._controllerGroup
box(
legendModel.get('orient'),
contentGroup,
legendModel.get('itemGap'),
!orientIdx ? null : maxSize.width,
orientIdx ? null : maxSize.height
)
box(
'horizontal',
controllerGroup,
legendModel.get('pageButtonItemGap', true)
)
var contentRect = contentGroup.getBoundingRect()
var controllerRect = controllerGroup.getBoundingRect()
var showController = (this._showController = contentRect[wh] > maxSize[wh])
var contentPos = [-contentRect.x, -contentRect.y]
if (!isFirstRender) {
contentPos[orientIdx] = contentGroup[xy]
}
var containerPos = [0, 0]
var controllerPos = [-controllerRect.x, -controllerRect.y]
var pageButtonGap = retrieve2(
legendModel.get('pageButtonGap', true),
legendModel.get('itemGap', true)
)
if (showController) {
var pageButtonPosition = legendModel.get('pageButtonPosition', true)
if (pageButtonPosition === 'end') {
controllerPos[orientIdx] += maxSize[wh] - controllerRect[wh]
} else {
containerPos[orientIdx] += controllerRect[wh] + pageButtonGap
}
}
controllerPos[1 - orientIdx] += contentRect[hw] / 2 - controllerRect[hw] / 2
contentGroup.setPosition(contentPos)
containerGroup.setPosition(containerPos)
controllerGroup.setPosition(controllerPos)
var mainRect = {
x: 0,
y: 0,
}
mainRect[wh] = showController ? maxSize[wh] : contentRect[wh]
mainRect[hw] = Math.max(contentRect[hw], controllerRect[hw])
mainRect[yx] = Math.min(
0,
controllerRect[yx] + controllerPos[1 - orientIdx]
)
containerGroup.__rectSize = maxSize[wh]
if (showController) {
var clipShape = {
x: 0,
y: 0,
}
clipShape[wh] = Math.max(
maxSize[wh] - controllerRect[wh] - pageButtonGap,
0
)
clipShape[hw] = mainRect[hw]
containerGroup.setClipPath(
new Rect$4({
shape: clipShape,
})
)
containerGroup.__rectSize = clipShape[wh]
} else {
controllerGroup.eachChild(function (child) {
child.attr({
invisible: true,
silent: true,
})
})
}
var pageInfo = this._getPageInfo(legendModel)
pageInfo.pageIndex != null &&
updateProps$1(
contentGroup,
{
x: pageInfo.contentPosition[0],
y: pageInfo.contentPosition[1],
},
showController ? legendModel : null
)
this._updatePageInfoView(legendModel, pageInfo)
return mainRect
}
ScrollableLegendView2.prototype._pageGo = function (to, legendModel, api) {
var scrollDataIndex = this._getPageInfo(legendModel)[to]
scrollDataIndex != null &&
api.dispatchAction({
type: 'legendScroll',
scrollDataIndex,
legendId: legendModel.id,
})
}
ScrollableLegendView2.prototype._updatePageInfoView = function (
legendModel,
pageInfo
) {
var controllerGroup = this._controllerGroup
each$f(['pagePrev', 'pageNext'], function (name2) {
var key2 = name2 + 'DataIndex'
var canJump = pageInfo[key2] != null
var icon = controllerGroup.childOfName(name2)
if (icon) {
icon.setStyle(
'fill',
canJump
? legendModel.get('pageIconColor', true)
: legendModel.get('pageIconInactiveColor', true)
)
icon.cursor = canJump ? 'pointer' : 'default'
}
})
var pageText = controllerGroup.childOfName('pageText')
var pageFormatter = legendModel.get('pageFormatter')
var pageIndex2 = pageInfo.pageIndex
var current2 = pageIndex2 != null ? pageIndex2 + 1 : 0
var total2 = pageInfo.pageCount
pageText &&
pageFormatter &&
pageText.setStyle(
'text',
isString$2(pageFormatter)
? pageFormatter
.replace('{current}', current2 == null ? '' : current2 + '')
.replace('{total}', total2 == null ? '' : total2 + '')
: pageFormatter({
current: current2,
total: total2,
})
)
}
ScrollableLegendView2.prototype._getPageInfo = function (legendModel) {
var scrollDataIndex = legendModel.get('scrollDataIndex', true)
var contentGroup = this.getContentGroup()
var containerRectSize = this._containerGroup.__rectSize
var orientIdx = legendModel.getOrient().index
var wh = WH[orientIdx]
var xy = XY[orientIdx]
var targetItemIndex = this._findTargetItemIndex(scrollDataIndex)
var children = contentGroup.children()
var targetItem = children[targetItemIndex]
var itemCount = children.length
var pCount = !itemCount ? 0 : 1
var result = {
contentPosition: [contentGroup.x, contentGroup.y],
pageCount: pCount,
pageIndex: pCount - 1,
pagePrevDataIndex: null,
pageNextDataIndex: null,
}
if (!targetItem) {
return result
}
var targetItemInfo = getItemInfo(targetItem)
result.contentPosition[orientIdx] = -targetItemInfo.s
for (
var i2 = targetItemIndex + 1,
winStartItemInfo = targetItemInfo,
winEndItemInfo = targetItemInfo,
currItemInfo = null;
i2 <= itemCount;
++i2
) {
currItemInfo = getItemInfo(children[i2])
if (
(!currItemInfo &&
winEndItemInfo.e > winStartItemInfo.s + containerRectSize) ||
(currItemInfo && !intersect2(currItemInfo, winStartItemInfo.s))
) {
if (winEndItemInfo.i > winStartItemInfo.i) {
winStartItemInfo = winEndItemInfo
} else {
winStartItemInfo = currItemInfo
}
if (winStartItemInfo) {
if (result.pageNextDataIndex == null) {
result.pageNextDataIndex = winStartItemInfo.i
}
++result.pageCount
}
}
winEndItemInfo = currItemInfo
}
for (
var i2 = targetItemIndex - 1,
winStartItemInfo = targetItemInfo,
winEndItemInfo = targetItemInfo,
currItemInfo = null;
i2 >= -1;
--i2
) {
currItemInfo = getItemInfo(children[i2])
if (
(!currItemInfo || !intersect2(winEndItemInfo, currItemInfo.s)) &&
winStartItemInfo.i < winEndItemInfo.i
) {
winEndItemInfo = winStartItemInfo
if (result.pagePrevDataIndex == null) {
result.pagePrevDataIndex = winStartItemInfo.i
}
++result.pageCount
++result.pageIndex
}
winStartItemInfo = currItemInfo
}
return result
function getItemInfo(el2) {
if (el2) {
var itemRect = el2.getBoundingRect()
var start2 = itemRect[xy] + el2[xy]
return {
s: start2,
e: start2 + itemRect[wh],
i: el2.__legendDataIndex,
}
}
}
function intersect2(itemInfo, winStart) {
return (
itemInfo.e >= winStart && itemInfo.s <= winStart + containerRectSize
)
}
}
ScrollableLegendView2.prototype._findTargetItemIndex = function (
targetDataIndex
) {
if (!this._showController) {
return 0
}
var index2
var contentGroup = this.getContentGroup()
var defaultIndex
contentGroup.eachChild(function (child, idx) {
var legendDataIdx = child.__legendDataIndex
if (defaultIndex == null && legendDataIdx != null) {
defaultIndex = idx
}
if (legendDataIdx === targetDataIndex) {
index2 = idx
}
})
return index2 != null ? index2 : defaultIndex
}
ScrollableLegendView2.type = 'legend.scroll'
return ScrollableLegendView2
})(LegendView$1)
var ScrollableLegendView$1 = ScrollableLegendView
function installScrollableLegendAction(registers) {
registers.registerAction(
'legendScroll',
'legendscroll',
function (payload, ecModel) {
var scrollDataIndex = payload.scrollDataIndex
scrollDataIndex != null &&
ecModel.eachComponent(
{
mainType: 'legend',
subType: 'scroll',
query: payload,
},
function (legendModel) {
legendModel.setScrollDataIndex(scrollDataIndex)
}
)
}
)
}
function install$c(registers) {
use(install$d)
registers.registerComponentModel(ScrollableLegendModel$1)
registers.registerComponentView(ScrollableLegendView$1)
installScrollableLegendAction(registers)
}
function install$b(registers) {
use(install$d)
use(install$c)
}
var InsideZoomModel = (function (_super) {
__extends$2(InsideZoomModel2, _super)
function InsideZoomModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = InsideZoomModel2.type
return _this
}
InsideZoomModel2.type = 'dataZoom.inside'
InsideZoomModel2.defaultOption = inheritDefaultOption(
DataZoomModel$1.defaultOption,
{
disabled: false,
zoomLock: false,
zoomOnMouseWheel: true,
moveOnMouseMove: true,
moveOnMouseWheel: false,
preventDefaultMouseMove: true,
}
)
return InsideZoomModel2
})(DataZoomModel$1)
var InsideZoomModel$1 = InsideZoomModel
var inner$1 = makeInner()
function setViewInfoToCoordSysRecord(api, dataZoomModel, getRange) {
inner$1(api).coordSysRecordMap.each(function (coordSysRecord) {
var dzInfo = coordSysRecord.dataZoomInfoMap.get(dataZoomModel.uid)
if (dzInfo) {
dzInfo.getRange = getRange
}
})
}
function disposeCoordSysRecordIfNeeded(api, dataZoomModel) {
var coordSysRecordMap = inner$1(api).coordSysRecordMap
var coordSysKeyArr = coordSysRecordMap.keys()
for (var i2 = 0; i2 < coordSysKeyArr.length; i2++) {
var coordSysKey = coordSysKeyArr[i2]
var coordSysRecord = coordSysRecordMap.get(coordSysKey)
var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap
if (dataZoomInfoMap) {
var dzUid = dataZoomModel.uid
var dzInfo = dataZoomInfoMap.get(dzUid)
if (dzInfo) {
dataZoomInfoMap.removeKey(dzUid)
if (!dataZoomInfoMap.keys().length) {
disposeCoordSysRecord(coordSysRecordMap, coordSysRecord)
}
}
}
}
}
function disposeCoordSysRecord(coordSysRecordMap, coordSysRecord) {
if (coordSysRecord) {
coordSysRecordMap.removeKey(coordSysRecord.model.uid)
var controller = coordSysRecord.controller
controller && controller.dispose()
}
}
function createCoordSysRecord(api, coordSysModel) {
var coordSysRecord = {
model: coordSysModel,
containsPoint: curry$1(containsPoint, coordSysModel),
dispatchAction: curry$1(dispatchAction, api),
dataZoomInfoMap: null,
controller: null,
}
var controller = (coordSysRecord.controller = new RoamController$1(
api.getZr()
))
each$f(['pan', 'zoom', 'scrollMove'], function (eventName) {
controller.on(eventName, function (event) {
var batch = []
coordSysRecord.dataZoomInfoMap.each(function (dzInfo) {
if (!event.isAvailableBehavior(dzInfo.model.option)) {
return
}
var method4 = (dzInfo.getRange || {})[eventName]
var range3 =
method4 &&
method4(
dzInfo.dzReferCoordSysInfo,
coordSysRecord.model.mainType,
coordSysRecord.controller,
event
)
!dzInfo.model.get('disabled', true) &&
range3 &&
batch.push({
dataZoomId: dzInfo.model.id,
start: range3[0],
end: range3[1],
})
})
batch.length && coordSysRecord.dispatchAction(batch)
})
})
return coordSysRecord
}
function dispatchAction(api, batch) {
if (!api.isDisposed()) {
api.dispatchAction({
type: 'dataZoom',
animation: {
easing: 'cubicOut',
duration: 100,
},
batch,
})
}
}
function containsPoint(coordSysModel, e2, x2, y2) {
return coordSysModel.coordinateSystem.containPoint([x2, y2])
}
function mergeControllerParams(dataZoomInfoMap) {
var controlType
var prefix = 'type_'
var typePriority = {
type_true: 2,
type_move: 1,
type_false: 0,
type_undefined: -1,
}
var preventDefaultMouseMove = true
dataZoomInfoMap.each(function (dataZoomInfo) {
var dataZoomModel = dataZoomInfo.model
var oneType = dataZoomModel.get('disabled', true)
? false
: dataZoomModel.get('zoomLock', true)
? 'move'
: true
if (typePriority[prefix + oneType] > typePriority[prefix + controlType]) {
controlType = oneType
}
preventDefaultMouseMove =
preventDefaultMouseMove &&
dataZoomModel.get('preventDefaultMouseMove', true)
})
return {
controlType,
opt: {
zoomOnMouseWheel: true,
moveOnMouseMove: true,
moveOnMouseWheel: true,
preventDefaultMouseMove: !!preventDefaultMouseMove,
},
}
}
function installDataZoomRoamProcessor(registers) {
registers.registerProcessor(
registers.PRIORITY.PROCESSOR.FILTER,
function (ecModel, api) {
var apiInner = inner$1(api)
var coordSysRecordMap =
apiInner.coordSysRecordMap ||
(apiInner.coordSysRecordMap = createHashMap())
coordSysRecordMap.each(function (coordSysRecord) {
coordSysRecord.dataZoomInfoMap = null
})
ecModel.eachComponent(
{
mainType: 'dataZoom',
subType: 'inside',
},
function (dataZoomModel) {
var dzReferCoordSysWrap = collectReferCoordSysModelInfo(dataZoomModel)
each$f(dzReferCoordSysWrap.infoList, function (dzCoordSysInfo) {
var coordSysUid = dzCoordSysInfo.model.uid
var coordSysRecord =
coordSysRecordMap.get(coordSysUid) ||
coordSysRecordMap.set(
coordSysUid,
createCoordSysRecord(api, dzCoordSysInfo.model)
)
var dataZoomInfoMap =
coordSysRecord.dataZoomInfoMap ||
(coordSysRecord.dataZoomInfoMap = createHashMap())
dataZoomInfoMap.set(dataZoomModel.uid, {
dzReferCoordSysInfo: dzCoordSysInfo,
model: dataZoomModel,
getRange: null,
})
})
}
)
coordSysRecordMap.each(function (coordSysRecord) {
var controller = coordSysRecord.controller
var firstDzInfo
var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap
if (dataZoomInfoMap) {
var firstDzKey = dataZoomInfoMap.keys()[0]
if (firstDzKey != null) {
firstDzInfo = dataZoomInfoMap.get(firstDzKey)
}
}
if (!firstDzInfo) {
disposeCoordSysRecord(coordSysRecordMap, coordSysRecord)
return
}
var controllerParams = mergeControllerParams(dataZoomInfoMap)
controller.enable(controllerParams.controlType, controllerParams.opt)
controller.setPointerChecker(coordSysRecord.containsPoint)
createOrUpdate(
coordSysRecord,
'dispatchAction',
firstDzInfo.model.get('throttle', true),
'fixRate'
)
})
}
)
}
var InsideZoomView = (function (_super) {
__extends$2(InsideZoomView2, _super)
function InsideZoomView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = 'dataZoom.inside'
return _this
}
InsideZoomView2.prototype.render = function (dataZoomModel, ecModel, api) {
_super.prototype.render.apply(this, arguments)
if (dataZoomModel.noTarget()) {
this._clear()
return
}
this.range = dataZoomModel.getPercentRange()
setViewInfoToCoordSysRecord(api, dataZoomModel, {
pan: bind$1(getRangeHandlers.pan, this),
zoom: bind$1(getRangeHandlers.zoom, this),
scrollMove: bind$1(getRangeHandlers.scrollMove, this),
})
}
InsideZoomView2.prototype.dispose = function () {
this._clear()
_super.prototype.dispose.apply(this, arguments)
}
InsideZoomView2.prototype._clear = function () {
disposeCoordSysRecordIfNeeded(this.api, this.dataZoomModel)
this.range = null
}
InsideZoomView2.type = 'dataZoom.inside'
return InsideZoomView2
})(DataZoomView$1)
var getRangeHandlers = {
zoom: function (coordSysInfo, coordSysMainType, controller, e2) {
var lastRange = this.range
var range3 = lastRange.slice()
var axisModel = coordSysInfo.axisModels[0]
if (!axisModel) {
return
}
var directionInfo = getDirectionInfo[coordSysMainType](
null,
[e2.originX, e2.originY],
axisModel,
controller,
coordSysInfo
)
var percentPoint =
((directionInfo.signal > 0
? directionInfo.pixelStart +
directionInfo.pixelLength -
directionInfo.pixel
: directionInfo.pixel - directionInfo.pixelStart) /
directionInfo.pixelLength) *
(range3[1] - range3[0]) +
range3[0]
var scale2 = Math.max(1 / e2.scale, 0)
range3[0] = (range3[0] - percentPoint) * scale2 + percentPoint
range3[1] = (range3[1] - percentPoint) * scale2 + percentPoint
var minMaxSpan = this.dataZoomModel
.findRepresentativeAxisProxy()
.getMinMaxSpan()
sliderMove(0, range3, [0, 100], 0, minMaxSpan.minSpan, minMaxSpan.maxSpan)
this.range = range3
if (lastRange[0] !== range3[0] || lastRange[1] !== range3[1]) {
return range3
}
},
pan: makeMover(function (
range3,
axisModel,
coordSysInfo,
coordSysMainType,
controller,
e2
) {
var directionInfo = getDirectionInfo[coordSysMainType](
[e2.oldX, e2.oldY],
[e2.newX, e2.newY],
axisModel,
controller,
coordSysInfo
)
return (
(directionInfo.signal * (range3[1] - range3[0]) * directionInfo.pixel) /
directionInfo.pixelLength
)
}),
scrollMove: makeMover(function (
range3,
axisModel,
coordSysInfo,
coordSysMainType,
controller,
e2
) {
var directionInfo = getDirectionInfo[coordSysMainType](
[0, 0],
[e2.scrollDelta, e2.scrollDelta],
axisModel,
controller,
coordSysInfo
)
return directionInfo.signal * (range3[1] - range3[0]) * e2.scrollDelta
}),
}
function makeMover(getPercentDelta) {
return function (coordSysInfo, coordSysMainType, controller, e2) {
var lastRange = this.range
var range3 = lastRange.slice()
var axisModel = coordSysInfo.axisModels[0]
if (!axisModel) {
return
}
var percentDelta = getPercentDelta(
range3,
axisModel,
coordSysInfo,
coordSysMainType,
controller,
e2
)
sliderMove(percentDelta, range3, [0, 100], 'all')
this.range = range3
if (lastRange[0] !== range3[0] || lastRange[1] !== range3[1]) {
return range3
}
}
}
var getDirectionInfo = {
grid: function (oldPoint, newPoint, axisModel, controller, coordSysInfo) {
var axis = axisModel.axis
var ret = {}
var rect = coordSysInfo.model.coordinateSystem.getRect()
oldPoint = oldPoint || [0, 0]
if (axis.dim === 'x') {
ret.pixel = newPoint[0] - oldPoint[0]
ret.pixelLength = rect.width
ret.pixelStart = rect.x
ret.signal = axis.inverse ? 1 : -1
} else {
ret.pixel = newPoint[1] - oldPoint[1]
ret.pixelLength = rect.height
ret.pixelStart = rect.y
ret.signal = axis.inverse ? -1 : 1
}
return ret
},
polar: function (oldPoint, newPoint, axisModel, controller, coordSysInfo) {
var axis = axisModel.axis
var ret = {}
var polar = coordSysInfo.model.coordinateSystem
var radiusExtent = polar.getRadiusAxis().getExtent()
var angleExtent = polar.getAngleAxis().getExtent()
oldPoint = oldPoint ? polar.pointToCoord(oldPoint) : [0, 0]
newPoint = polar.pointToCoord(newPoint)
if (axisModel.mainType === 'radiusAxis') {
ret.pixel = newPoint[0] - oldPoint[0]
ret.pixelLength = radiusExtent[1] - radiusExtent[0]
ret.pixelStart = radiusExtent[0]
ret.signal = axis.inverse ? 1 : -1
} else {
ret.pixel = newPoint[1] - oldPoint[1]
ret.pixelLength = angleExtent[1] - angleExtent[0]
ret.pixelStart = angleExtent[0]
ret.signal = axis.inverse ? -1 : 1
}
return ret
},
singleAxis: function (
oldPoint,
newPoint,
axisModel,
controller,
coordSysInfo
) {
var axis = axisModel.axis
var rect = coordSysInfo.model.coordinateSystem.getRect()
var ret = {}
oldPoint = oldPoint || [0, 0]
if (axis.orient === 'horizontal') {
ret.pixel = newPoint[0] - oldPoint[0]
ret.pixelLength = rect.width
ret.pixelStart = rect.x
ret.signal = axis.inverse ? 1 : -1
} else {
ret.pixel = newPoint[1] - oldPoint[1]
ret.pixelLength = rect.height
ret.pixelStart = rect.y
ret.signal = axis.inverse ? -1 : 1
}
return ret
},
}
var InsideZoomView$1 = InsideZoomView
function install$a(registers) {
installCommon$1(registers)
registers.registerComponentModel(InsideZoomModel$1)
registers.registerComponentView(InsideZoomView$1)
installDataZoomRoamProcessor(registers)
}
var SliderZoomModel = (function (_super) {
__extends$2(SliderZoomModel2, _super)
function SliderZoomModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = SliderZoomModel2.type
return _this
}
SliderZoomModel2.type = 'dataZoom.slider'
SliderZoomModel2.layoutMode = 'box'
SliderZoomModel2.defaultOption = inheritDefaultOption(
DataZoomModel$1.defaultOption,
{
show: true,
right: 'ph',
top: 'ph',
width: 'ph',
height: 'ph',
left: null,
bottom: null,
borderColor: '#d2dbee',
borderRadius: 3,
backgroundColor: 'rgba(47,69,84,0)',
dataBackground: {
lineStyle: {
color: '#d2dbee',
width: 0.5,
},
areaStyle: {
color: '#d2dbee',
opacity: 0.2,
},
},
selectedDataBackground: {
lineStyle: {
color: '#8fb0f7',
width: 0.5,
},
areaStyle: {
color: '#8fb0f7',
opacity: 0.2,
},
},
fillerColor: 'rgba(135,175,274,0.2)',
handleIcon:
'path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z',
handleSize: '100%',
handleStyle: {
color: '#fff',
borderColor: '#ACB8D1',
},
moveHandleSize: 7,
moveHandleIcon:
'path://M-320.9-50L-320.9-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-348-41-339-50-320.9-50z M-212.3-50L-212.3-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-239.4-41-230.4-50-212.3-50z M-103.7-50L-103.7-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-130.9-41-121.8-50-103.7-50z',
moveHandleStyle: {
color: '#D2DBEE',
opacity: 0.7,
},
showDetail: true,
showDataShadow: 'auto',
realtime: true,
zoomLock: false,
textStyle: {
color: '#6E7079',
},
brushSelect: true,
brushStyle: {
color: 'rgba(135,175,274,0.15)',
},
emphasis: {
handleStyle: {
borderColor: '#8FB0F7',
},
moveHandleStyle: {
color: '#8FB0F7',
},
},
}
)
return SliderZoomModel2
})(DataZoomModel$1)
var SliderZoomModel$1 = SliderZoomModel
var Rect$1 = Rect$4
var DEFAULT_LOCATION_EDGE_GAP = 7
var DEFAULT_FRAME_BORDER_WIDTH = 1
var DEFAULT_FILLER_SIZE = 30
var DEFAULT_MOVE_HANDLE_SIZE = 7
var HORIZONTAL = 'horizontal'
var VERTICAL = 'vertical'
var LABEL_GAP = 5
var SHOW_DATA_SHADOW_SERIES_TYPE = ['line', 'bar', 'candlestick', 'scatter']
var REALTIME_ANIMATION_CONFIG = {
easing: 'cubicOut',
duration: 100,
delay: 0,
}
var SliderZoomView = (function (_super) {
__extends$2(SliderZoomView2, _super)
function SliderZoomView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = SliderZoomView2.type
_this._displayables = {}
return _this
}
SliderZoomView2.prototype.init = function (ecModel, api) {
this.api = api
this._onBrush = bind$1(this._onBrush, this)
this._onBrushEnd = bind$1(this._onBrushEnd, this)
}
SliderZoomView2.prototype.render = function (
dataZoomModel,
ecModel,
api,
payload
) {
_super.prototype.render.apply(this, arguments)
createOrUpdate(
this,
'_dispatchZoomAction',
dataZoomModel.get('throttle'),
'fixRate'
)
this._orient = dataZoomModel.getOrient()
if (dataZoomModel.get('show') === false) {
this.group.removeAll()
return
}
if (dataZoomModel.noTarget()) {
this._clear()
this.group.removeAll()
return
}
if (!payload || payload.type !== 'dataZoom' || payload.from !== this.uid) {
this._buildView()
}
this._updateView()
}
SliderZoomView2.prototype.dispose = function () {
this._clear()
_super.prototype.dispose.apply(this, arguments)
}
SliderZoomView2.prototype._clear = function () {
clear$1(this, '_dispatchZoomAction')
var zr = this.api.getZr()
zr.off('mousemove', this._onBrush)
zr.off('mouseup', this._onBrushEnd)
}
SliderZoomView2.prototype._buildView = function () {
var thisGroup = this.group
thisGroup.removeAll()
this._brushing = false
this._displayables.brushRect = null
this._resetLocation()
this._resetInterval()
var barGroup = (this._displayables.sliderGroup = new Group$5())
this._renderBackground()
this._renderHandle()
this._renderDataShadow()
thisGroup.add(barGroup)
this._positionGroup()
}
SliderZoomView2.prototype._resetLocation = function () {
var dataZoomModel = this.dataZoomModel
var api = this.api
var showMoveHandle = dataZoomModel.get('brushSelect')
var moveHandleSize = showMoveHandle ? DEFAULT_MOVE_HANDLE_SIZE : 0
var coordRect = this._findCoordRect()
var ecSize = {
width: api.getWidth(),
height: api.getHeight(),
}
var positionInfo =
this._orient === HORIZONTAL
? {
right: ecSize.width - coordRect.x - coordRect.width,
top:
ecSize.height -
DEFAULT_FILLER_SIZE -
DEFAULT_LOCATION_EDGE_GAP -
moveHandleSize,
width: coordRect.width,
height: DEFAULT_FILLER_SIZE,
}
: {
right: DEFAULT_LOCATION_EDGE_GAP,
top: coordRect.y,
width: DEFAULT_FILLER_SIZE,
height: coordRect.height,
}
var layoutParams = getLayoutParams(dataZoomModel.option)
each$f(['right', 'top', 'width', 'height'], function (name2) {
if (layoutParams[name2] === 'ph') {
layoutParams[name2] = positionInfo[name2]
}
})
var layoutRect = getLayoutRect(layoutParams, ecSize)
this._location = {
x: layoutRect.x,
y: layoutRect.y,
}
this._size = [layoutRect.width, layoutRect.height]
this._orient === VERTICAL && this._size.reverse()
}
SliderZoomView2.prototype._positionGroup = function () {
var thisGroup = this.group
var location2 = this._location
var orient = this._orient
var targetAxisModel = this.dataZoomModel.getFirstTargetAxisModel()
var inverse = targetAxisModel && targetAxisModel.get('inverse')
var sliderGroup = this._displayables.sliderGroup
var otherAxisInverse = (this._dataShadowInfo || {}).otherAxisInverse
sliderGroup.attr(
orient === HORIZONTAL && !inverse
? {
scaleY: otherAxisInverse ? 1 : -1,
scaleX: 1,
}
: orient === HORIZONTAL && inverse
? {
scaleY: otherAxisInverse ? 1 : -1,
scaleX: -1,
}
: orient === VERTICAL && !inverse
? {
scaleY: otherAxisInverse ? -1 : 1,
scaleX: 1,
rotation: Math.PI / 2,
}
: {
scaleY: otherAxisInverse ? -1 : 1,
scaleX: -1,
rotation: Math.PI / 2,
}
)
var rect = thisGroup.getBoundingRect([sliderGroup])
thisGroup.x = location2.x - rect.x
thisGroup.y = location2.y - rect.y
thisGroup.markRedraw()
}
SliderZoomView2.prototype._getViewExtent = function () {
return [0, this._size[0]]
}
SliderZoomView2.prototype._renderBackground = function () {
var dataZoomModel = this.dataZoomModel
var size = this._size
var barGroup = this._displayables.sliderGroup
var brushSelect = dataZoomModel.get('brushSelect')
barGroup.add(
new Rect$1({
silent: true,
shape: {
x: 0,
y: 0,
width: size[0],
height: size[1],
},
style: {
fill: dataZoomModel.get('backgroundColor'),
},
z2: -40,
})
)
var clickPanel = new Rect$1({
shape: {
x: 0,
y: 0,
width: size[0],
height: size[1],
},
style: {
fill: 'transparent',
},
z2: 0,
onclick: bind$1(this._onClickPanel, this),
})
var zr = this.api.getZr()
if (brushSelect) {
clickPanel.on('mousedown', this._onBrushStart, this)
clickPanel.cursor = 'crosshair'
zr.on('mousemove', this._onBrush)
zr.on('mouseup', this._onBrushEnd)
} else {
zr.off('mousemove', this._onBrush)
zr.off('mouseup', this._onBrushEnd)
}
barGroup.add(clickPanel)
}
SliderZoomView2.prototype._renderDataShadow = function () {
var info = (this._dataShadowInfo = this._prepareDataShadowInfo())
this._displayables.dataShadowSegs = []
if (!info) {
return
}
var size = this._size
var oldSize = this._shadowSize || []
var seriesModel = info.series
var data2 = seriesModel.getRawData()
var candlestickDim = seriesModel.getShadowDim && seriesModel.getShadowDim()
var otherDim =
candlestickDim && data2.getDimensionInfo(candlestickDim)
? seriesModel.getShadowDim()
: info.otherDim
if (otherDim == null) {
return
}
var polygonPts = this._shadowPolygonPts
var polylinePts = this._shadowPolylinePts
if (
data2 !== this._shadowData ||
otherDim !== this._shadowDim ||
size[0] !== oldSize[0] ||
size[1] !== oldSize[1]
) {
var otherDataExtent_1 = data2.getDataExtent(otherDim)
var otherOffset = (otherDataExtent_1[1] - otherDataExtent_1[0]) * 0.3
otherDataExtent_1 = [
otherDataExtent_1[0] - otherOffset,
otherDataExtent_1[1] + otherOffset,
]
var otherShadowExtent_1 = [0, size[1]]
var thisShadowExtent = [0, size[0]]
var areaPoints_1 = [
[size[0], 0],
[0, 0],
]
var linePoints_1 = []
var step_1 = thisShadowExtent[1] / (data2.count() - 1)
var thisCoord_1 = 0
var stride_1 = Math.round(data2.count() / size[0])
var lastIsEmpty_1
data2.each([otherDim], function (value2, index2) {
if (stride_1 > 0 && index2 % stride_1) {
thisCoord_1 += step_1
return
}
var isEmpty2 = value2 == null || isNaN(value2) || value2 === ''
var otherCoord = isEmpty2
? 0
: linearMap$2(value2, otherDataExtent_1, otherShadowExtent_1, true)
if (isEmpty2 && !lastIsEmpty_1 && index2) {
areaPoints_1.push([areaPoints_1[areaPoints_1.length - 1][0], 0])
linePoints_1.push([linePoints_1[linePoints_1.length - 1][0], 0])
} else if (!isEmpty2 && lastIsEmpty_1) {
areaPoints_1.push([thisCoord_1, 0])
linePoints_1.push([thisCoord_1, 0])
}
areaPoints_1.push([thisCoord_1, otherCoord])
linePoints_1.push([thisCoord_1, otherCoord])
thisCoord_1 += step_1
lastIsEmpty_1 = isEmpty2
})
polygonPts = this._shadowPolygonPts = areaPoints_1
polylinePts = this._shadowPolylinePts = linePoints_1
}
this._shadowData = data2
this._shadowDim = otherDim
this._shadowSize = [size[0], size[1]]
var dataZoomModel = this.dataZoomModel
function createDataShadowGroup(isSelectedArea) {
var model = dataZoomModel.getModel(
isSelectedArea ? 'selectedDataBackground' : 'dataBackground'
)
var group2 = new Group$5()
var polygon = new Polygon$1({
shape: {
points: polygonPts,
},
segmentIgnoreThreshold: 1,
style: model.getModel('areaStyle').getAreaStyle(),
silent: true,
z2: -20,
})
var polyline = new Polyline$3({
shape: {
points: polylinePts,
},
segmentIgnoreThreshold: 1,
style: model.getModel('lineStyle').getLineStyle(),
silent: true,
z2: -19,
})
group2.add(polygon)
group2.add(polyline)
return group2
}
for (var i2 = 0; i2 < 3; i2++) {
var group = createDataShadowGroup(i2 === 1)
this._displayables.sliderGroup.add(group)
this._displayables.dataShadowSegs.push(group)
}
}
SliderZoomView2.prototype._prepareDataShadowInfo = function () {
var dataZoomModel = this.dataZoomModel
var showDataShadow = dataZoomModel.get('showDataShadow')
if (showDataShadow === false) {
return
}
var result
var ecModel = this.ecModel
dataZoomModel.eachTargetAxis(function (axisDim, axisIndex) {
var seriesModels = dataZoomModel
.getAxisProxy(axisDim, axisIndex)
.getTargetSeriesModels()
each$f(
seriesModels,
function (seriesModel) {
if (result) {
return
}
if (
showDataShadow !== true &&
indexOf(SHOW_DATA_SHADOW_SERIES_TYPE, seriesModel.get('type')) < 0
) {
return
}
var thisAxis = ecModel.getComponent(
getAxisMainType(axisDim),
axisIndex
).axis
var otherDim = getOtherDim(axisDim)
var otherAxisInverse
var coordSys = seriesModel.coordinateSystem
if (otherDim != null && coordSys.getOtherAxis) {
otherAxisInverse = coordSys.getOtherAxis(thisAxis).inverse
}
otherDim = seriesModel.getData().mapDimension(otherDim)
result = {
thisAxis,
series: seriesModel,
thisDim: axisDim,
otherDim,
otherAxisInverse,
}
},
this
)
}, this)
return result
}
SliderZoomView2.prototype._renderHandle = function () {
var thisGroup = this.group
var displayables = this._displayables
var handles = (displayables.handles = [null, null])
var handleLabels = (displayables.handleLabels = [null, null])
var sliderGroup = this._displayables.sliderGroup
var size = this._size
var dataZoomModel = this.dataZoomModel
var api = this.api
var borderRadius = dataZoomModel.get('borderRadius') || 0
var brushSelect = dataZoomModel.get('brushSelect')
var filler = (displayables.filler = new Rect$1({
silent: brushSelect,
style: {
fill: dataZoomModel.get('fillerColor'),
},
textConfig: {
position: 'inside',
},
}))
sliderGroup.add(filler)
sliderGroup.add(
new Rect$1({
silent: true,
subPixelOptimize: true,
shape: {
x: 0,
y: 0,
width: size[0],
height: size[1],
r: borderRadius,
},
style: {
stroke:
dataZoomModel.get('dataBackgroundColor') ||
dataZoomModel.get('borderColor'),
lineWidth: DEFAULT_FRAME_BORDER_WIDTH,
fill: 'rgba(0,0,0,0)',
},
})
)
each$f(
[0, 1],
function (handleIndex) {
var iconStr = dataZoomModel.get('handleIcon')
if (
!symbolBuildProxies[iconStr] &&
iconStr.indexOf('path://') < 0 &&
iconStr.indexOf('image://') < 0
) {
iconStr = 'path://' + iconStr
}
var path = createSymbol$1(iconStr, -1, 0, 2, 2, null, true)
path.attr({
cursor: getCursor$1(this._orient),
draggable: true,
drift: bind$1(this._onDragMove, this, handleIndex),
ondragend: bind$1(this._onDragEnd, this),
onmouseover: bind$1(this._showDataInfo, this, true),
onmouseout: bind$1(this._showDataInfo, this, false),
z2: 5,
})
var bRect = path.getBoundingRect()
var handleSize = dataZoomModel.get('handleSize')
this._handleHeight = parsePercent(handleSize, this._size[1])
this._handleWidth = (bRect.width / bRect.height) * this._handleHeight
path.setStyle(dataZoomModel.getModel('handleStyle').getItemStyle())
path.style.strokeNoScale = true
path.rectHover = true
path.ensureState('emphasis').style = dataZoomModel
.getModel(['emphasis', 'handleStyle'])
.getItemStyle()
enableHoverEmphasis(path)
var handleColor = dataZoomModel.get('handleColor')
if (handleColor != null) {
path.style.fill = handleColor
}
sliderGroup.add((handles[handleIndex] = path))
var textStyleModel = dataZoomModel.getModel('textStyle')
thisGroup.add(
(handleLabels[handleIndex] = new ZRText$1({
silent: true,
invisible: true,
style: createTextStyle$1(textStyleModel, {
x: 0,
y: 0,
text: '',
verticalAlign: 'middle',
align: 'center',
fill: textStyleModel.getTextColor(),
font: textStyleModel.getFont(),
}),
z2: 10,
}))
)
},
this
)
var actualMoveZone = filler
if (brushSelect) {
var moveHandleHeight = parsePercent(
dataZoomModel.get('moveHandleSize'),
size[1]
)
var moveHandle_1 = (displayables.moveHandle = new Rect$4({
style: dataZoomModel.getModel('moveHandleStyle').getItemStyle(),
silent: true,
shape: {
r: [0, 0, 2, 2],
y: size[1] - 0.5,
height: moveHandleHeight,
},
}))
var iconSize = moveHandleHeight * 0.8
var moveHandleIcon = (displayables.moveHandleIcon = createSymbol$1(
dataZoomModel.get('moveHandleIcon'),
-iconSize / 2,
-iconSize / 2,
iconSize,
iconSize,
'#fff',
true
))
moveHandleIcon.silent = true
moveHandleIcon.y = size[1] + moveHandleHeight / 2 - 0.5
moveHandle_1.ensureState('emphasis').style = dataZoomModel
.getModel(['emphasis', 'moveHandleStyle'])
.getItemStyle()
var moveZoneExpandSize = Math.min(
size[1] / 2,
Math.max(moveHandleHeight, 10)
)
actualMoveZone = displayables.moveZone = new Rect$4({
invisible: true,
shape: {
y: size[1] - moveZoneExpandSize,
height: moveHandleHeight + moveZoneExpandSize,
},
})
actualMoveZone
.on('mouseover', function () {
api.enterEmphasis(moveHandle_1)
})
.on('mouseout', function () {
api.leaveEmphasis(moveHandle_1)
})
sliderGroup.add(moveHandle_1)
sliderGroup.add(moveHandleIcon)
sliderGroup.add(actualMoveZone)
}
actualMoveZone.attr({
draggable: true,
cursor: getCursor$1(this._orient),
drift: bind$1(this._onDragMove, this, 'all'),
ondragstart: bind$1(this._showDataInfo, this, true),
ondragend: bind$1(this._onDragEnd, this),
onmouseover: bind$1(this._showDataInfo, this, true),
onmouseout: bind$1(this._showDataInfo, this, false),
})
}
SliderZoomView2.prototype._resetInterval = function () {
var range3 = (this._range = this.dataZoomModel.getPercentRange())
var viewExtent = this._getViewExtent()
this._handleEnds = [
linearMap$2(range3[0], [0, 100], viewExtent, true),
linearMap$2(range3[1], [0, 100], viewExtent, true),
]
}
SliderZoomView2.prototype._updateInterval = function (handleIndex, delta) {
var dataZoomModel = this.dataZoomModel
var handleEnds = this._handleEnds
var viewExtend = this._getViewExtent()
var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan()
var percentExtent = [0, 100]
sliderMove(
delta,
handleEnds,
viewExtend,
dataZoomModel.get('zoomLock') ? 'all' : handleIndex,
minMaxSpan.minSpan != null
? linearMap$2(minMaxSpan.minSpan, percentExtent, viewExtend, true)
: null,
minMaxSpan.maxSpan != null
? linearMap$2(minMaxSpan.maxSpan, percentExtent, viewExtend, true)
: null
)
var lastRange = this._range
var range3 = (this._range = asc$2([
linearMap$2(handleEnds[0], viewExtend, percentExtent, true),
linearMap$2(handleEnds[1], viewExtend, percentExtent, true),
]))
return (
!lastRange || lastRange[0] !== range3[0] || lastRange[1] !== range3[1]
)
}
SliderZoomView2.prototype._updateView = function (nonRealtime) {
var displaybles = this._displayables
var handleEnds = this._handleEnds
var handleInterval = asc$2(handleEnds.slice())
var size = this._size
each$f(
[0, 1],
function (handleIndex) {
var handle = displaybles.handles[handleIndex]
var handleHeight = this._handleHeight
handle.attr({
scaleX: handleHeight / 2,
scaleY: handleHeight / 2,
x: handleEnds[handleIndex] + (handleIndex ? -1 : 1),
y: size[1] / 2 - handleHeight / 2,
})
},
this
)
displaybles.filler.setShape({
x: handleInterval[0],
y: 0,
width: handleInterval[1] - handleInterval[0],
height: size[1],
})
var viewExtent = {
x: handleInterval[0],
width: handleInterval[1] - handleInterval[0],
}
if (displaybles.moveHandle) {
displaybles.moveHandle.setShape(viewExtent)
displaybles.moveZone.setShape(viewExtent)
displaybles.moveZone.getBoundingRect()
displaybles.moveHandleIcon &&
displaybles.moveHandleIcon.attr(
'x',
viewExtent.x + viewExtent.width / 2
)
}
var dataShadowSegs = displaybles.dataShadowSegs
var segIntervals = [0, handleInterval[0], handleInterval[1], size[0]]
for (var i2 = 0; i2 < dataShadowSegs.length; i2++) {
var segGroup = dataShadowSegs[i2]
var clipPath = segGroup.getClipPath()
if (!clipPath) {
clipPath = new Rect$4()
segGroup.setClipPath(clipPath)
}
clipPath.setShape({
x: segIntervals[i2],
y: 0,
width: segIntervals[i2 + 1] - segIntervals[i2],
height: size[1],
})
}
this._updateDataInfo(nonRealtime)
}
SliderZoomView2.prototype._updateDataInfo = function (nonRealtime) {
var dataZoomModel = this.dataZoomModel
var displaybles = this._displayables
var handleLabels = displaybles.handleLabels
var orient = this._orient
var labelTexts = ['', '']
if (dataZoomModel.get('showDetail')) {
var axisProxy = dataZoomModel.findRepresentativeAxisProxy()
if (axisProxy) {
var axis = axisProxy.getAxisModel().axis
var range3 = this._range
var dataInterval = nonRealtime
? axisProxy.calculateDataWindow({
start: range3[0],
end: range3[1],
}).valueWindow
: axisProxy.getDataValueWindow()
labelTexts = [
this._formatLabel(dataInterval[0], axis),
this._formatLabel(dataInterval[1], axis),
]
}
}
var orderedHandleEnds = asc$2(this._handleEnds.slice())
setLabel.call(this, 0)
setLabel.call(this, 1)
function setLabel(handleIndex) {
var barTransform = getTransform$1(
displaybles.handles[handleIndex].parent,
this.group
)
var direction2 = transformDirection(
handleIndex === 0 ? 'right' : 'left',
barTransform
)
var offset2 = this._handleWidth / 2 + LABEL_GAP
var textPoint = applyTransform(
[
orderedHandleEnds[handleIndex] +
(handleIndex === 0 ? -offset2 : offset2),
this._size[1] / 2,
],
barTransform
)
handleLabels[handleIndex].setStyle({
x: textPoint[0],
y: textPoint[1],
verticalAlign: orient === HORIZONTAL ? 'middle' : direction2,
align: orient === HORIZONTAL ? direction2 : 'center',
text: labelTexts[handleIndex],
})
}
}
SliderZoomView2.prototype._formatLabel = function (value2, axis) {
var dataZoomModel = this.dataZoomModel
var labelFormatter = dataZoomModel.get('labelFormatter')
var labelPrecision = dataZoomModel.get('labelPrecision')
if (labelPrecision == null || labelPrecision === 'auto') {
labelPrecision = axis.getPixelPrecision()
}
var valueStr =
value2 == null || isNaN(value2)
? ''
: axis.type === 'category' || axis.type === 'time'
? axis.scale.getLabel({
value: Math.round(value2),
})
: value2.toFixed(Math.min(labelPrecision, 20))
return isFunction$4(labelFormatter)
? labelFormatter(value2, valueStr)
: isString$2(labelFormatter)
? labelFormatter.replace('{value}', valueStr)
: valueStr
}
SliderZoomView2.prototype._showDataInfo = function (showOrHide) {
showOrHide = this._dragging || showOrHide
var displayables = this._displayables
var handleLabels = displayables.handleLabels
handleLabels[0].attr('invisible', !showOrHide)
handleLabels[1].attr('invisible', !showOrHide)
displayables.moveHandle &&
this.api[showOrHide ? 'enterEmphasis' : 'leaveEmphasis'](
displayables.moveHandle,
1
)
}
SliderZoomView2.prototype._onDragMove = function (
handleIndex,
dx,
dy,
event
) {
this._dragging = true
stop$1(event.event)
var barTransform = this._displayables.sliderGroup.getLocalTransform()
var vertex = applyTransform([dx, dy], barTransform, true)
var changed = this._updateInterval(handleIndex, vertex[0])
var realtime = this.dataZoomModel.get('realtime')
this._updateView(!realtime)
changed && realtime && this._dispatchZoomAction(true)
}
SliderZoomView2.prototype._onDragEnd = function () {
this._dragging = false
this._showDataInfo(false)
var realtime = this.dataZoomModel.get('realtime')
!realtime && this._dispatchZoomAction(false)
}
SliderZoomView2.prototype._onClickPanel = function (e2) {
var size = this._size
var localPoint = this._displayables.sliderGroup.transformCoordToLocal(
e2.offsetX,
e2.offsetY
)
if (
localPoint[0] < 0 ||
localPoint[0] > size[0] ||
localPoint[1] < 0 ||
localPoint[1] > size[1]
) {
return
}
var handleEnds = this._handleEnds
var center2 = (handleEnds[0] + handleEnds[1]) / 2
var changed = this._updateInterval('all', localPoint[0] - center2)
this._updateView()
changed && this._dispatchZoomAction(false)
}
SliderZoomView2.prototype._onBrushStart = function (e2) {
var x2 = e2.offsetX
var y2 = e2.offsetY
this._brushStart = new Point$1(x2, y2)
this._brushing = true
this._brushStartTime = +new Date()
}
SliderZoomView2.prototype._onBrushEnd = function (e2) {
if (!this._brushing) {
return
}
var brushRect = this._displayables.brushRect
this._brushing = false
if (!brushRect) {
return
}
brushRect.attr('ignore', true)
var brushShape = brushRect.shape
var brushEndTime = +new Date()
if (
brushEndTime - this._brushStartTime < 200 &&
Math.abs(brushShape.width) < 5
) {
return
}
var viewExtend = this._getViewExtent()
var percentExtent = [0, 100]
this._range = asc$2([
linearMap$2(brushShape.x, viewExtend, percentExtent, true),
linearMap$2(
brushShape.x + brushShape.width,
viewExtend,
percentExtent,
true
),
])
this._handleEnds = [brushShape.x, brushShape.x + brushShape.width]
this._updateView()
this._dispatchZoomAction(false)
}
SliderZoomView2.prototype._onBrush = function (e2) {
if (this._brushing) {
stop$1(e2.event)
this._updateBrushRect(e2.offsetX, e2.offsetY)
}
}
SliderZoomView2.prototype._updateBrushRect = function (mouseX, mouseY) {
var displayables = this._displayables
var dataZoomModel = this.dataZoomModel
var brushRect = displayables.brushRect
if (!brushRect) {
brushRect = displayables.brushRect = new Rect$1({
silent: true,
style: dataZoomModel.getModel('brushStyle').getItemStyle(),
})
displayables.sliderGroup.add(brushRect)
}
brushRect.attr('ignore', false)
var brushStart = this._brushStart
var sliderGroup = this._displayables.sliderGroup
var endPoint = sliderGroup.transformCoordToLocal(mouseX, mouseY)
var startPoint = sliderGroup.transformCoordToLocal(
brushStart.x,
brushStart.y
)
var size = this._size
endPoint[0] = Math.max(Math.min(size[0], endPoint[0]), 0)
brushRect.setShape({
x: startPoint[0],
y: 0,
width: endPoint[0] - startPoint[0],
height: size[1],
})
}
SliderZoomView2.prototype._dispatchZoomAction = function (realtime) {
var range3 = this._range
this.api.dispatchAction({
type: 'dataZoom',
from: this.uid,
dataZoomId: this.dataZoomModel.id,
animation: realtime ? REALTIME_ANIMATION_CONFIG : null,
start: range3[0],
end: range3[1],
})
}
SliderZoomView2.prototype._findCoordRect = function () {
var rect
var coordSysInfoList = collectReferCoordSysModelInfo(
this.dataZoomModel
).infoList
if (!rect && coordSysInfoList.length) {
var coordSys = coordSysInfoList[0].model.coordinateSystem
rect = coordSys.getRect && coordSys.getRect()
}
if (!rect) {
var width = this.api.getWidth()
var height = this.api.getHeight()
rect = {
x: width * 0.2,
y: height * 0.2,
width: width * 0.6,
height: height * 0.6,
}
}
return rect
}
SliderZoomView2.type = 'dataZoom.slider'
return SliderZoomView2
})(DataZoomView$1)
function getOtherDim(thisDim) {
var map2 = {
x: 'y',
y: 'x',
radius: 'angle',
angle: 'radius',
}
return map2[thisDim]
}
function getCursor$1(orient) {
return orient === 'vertical' ? 'ns-resize' : 'ew-resize'
}
var SliderZoomView$1 = SliderZoomView
function install$9(registers) {
registers.registerComponentModel(SliderZoomModel$1)
registers.registerComponentView(SliderZoomView$1)
installCommon$1(registers)
}
function install$8(registers) {
use(install$a)
use(install$9)
}
var visualDefault = {
get: function (visualType, key2, isCategory2) {
var value2 = clone$4((defaultOption[visualType] || {})[key2])
return isCategory2
? isArray$6(value2)
? value2[value2.length - 1]
: value2
: value2
},
}
var defaultOption = {
color: {
active: ['#006edd', '#e0ffff'],
inactive: ['rgba(0,0,0,0)'],
},
colorHue: {
active: [0, 360],
inactive: [0, 0],
},
colorSaturation: {
active: [0.3, 1],
inactive: [0, 0],
},
colorLightness: {
active: [0.9, 0.5],
inactive: [0, 0],
},
colorAlpha: {
active: [0.3, 1],
inactive: [0, 0],
},
opacity: {
active: [0.3, 1],
inactive: [0, 0],
},
symbol: {
active: ['circle', 'roundRect', 'diamond'],
inactive: ['none'],
},
symbolSize: {
active: [10, 50],
inactive: [0, 0],
},
}
var visualDefault$1 = visualDefault
var mapVisual = VisualMapping$1.mapVisual
var eachVisual = VisualMapping$1.eachVisual
var isArray$5 = isArray$6
var each$2 = each$f
var asc = asc$2
var linearMap$1 = linearMap$2
var VisualMapModel = (function (_super) {
__extends$2(VisualMapModel2, _super)
function VisualMapModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = VisualMapModel2.type
_this.stateList = ['inRange', 'outOfRange']
_this.replacableOptionKeys = [
'inRange',
'outOfRange',
'target',
'controller',
'color',
]
_this.layoutMode = {
type: 'box',
ignoreSize: true,
}
_this.dataBound = [-Infinity, Infinity]
_this.targetVisuals = {}
_this.controllerVisuals = {}
return _this
}
VisualMapModel2.prototype.init = function (option2, parentModel, ecModel) {
this.mergeDefaultAndTheme(option2, ecModel)
}
VisualMapModel2.prototype.optionUpdated = function (newOption, isInit) {
var thisOption = this.option
!isInit &&
replaceVisualOption(thisOption, newOption, this.replacableOptionKeys)
this.textStyleModel = this.getModel('textStyle')
this.resetItemSize()
this.completeVisualOption()
}
VisualMapModel2.prototype.resetVisual = function (supplementVisualOption) {
var stateList = this.stateList
supplementVisualOption = bind$1(supplementVisualOption, this)
this.controllerVisuals = createVisualMappings(
this.option.controller,
stateList,
supplementVisualOption
)
this.targetVisuals = createVisualMappings(
this.option.target,
stateList,
supplementVisualOption
)
}
VisualMapModel2.prototype.getItemSymbol = function () {
return null
}
VisualMapModel2.prototype.getTargetSeriesIndices = function () {
var optionSeriesIndex = this.option.seriesIndex
var seriesIndices = []
if (optionSeriesIndex == null || optionSeriesIndex === 'all') {
this.ecModel.eachSeries(function (seriesModel, index2) {
seriesIndices.push(index2)
})
} else {
seriesIndices = normalizeToArray(optionSeriesIndex)
}
return seriesIndices
}
VisualMapModel2.prototype.eachTargetSeries = function (callback, context2) {
each$f(
this.getTargetSeriesIndices(),
function (seriesIndex) {
var seriesModel = this.ecModel.getSeriesByIndex(seriesIndex)
if (seriesModel) {
callback.call(context2, seriesModel)
}
},
this
)
}
VisualMapModel2.prototype.isTargetSeries = function (seriesModel) {
var is2 = false
this.eachTargetSeries(function (model) {
model === seriesModel && (is2 = true)
})
return is2
}
VisualMapModel2.prototype.formatValueText = function (
value2,
isCategory2,
edgeSymbols
) {
var option2 = this.option
var precision = option2.precision
var dataBound = this.dataBound
var formatter2 = option2.formatter
var isMinMax
edgeSymbols = edgeSymbols || ['<', '>']
if (isArray$6(value2)) {
value2 = value2.slice()
isMinMax = true
}
var textValue = isCategory2
? value2
: isMinMax
? [toFixed2(value2[0]), toFixed2(value2[1])]
: toFixed2(value2)
if (isString$2(formatter2)) {
return formatter2
.replace('{value}', isMinMax ? textValue[0] : textValue)
.replace('{value2}', isMinMax ? textValue[1] : textValue)
} else if (isFunction$4(formatter2)) {
return isMinMax ? formatter2(value2[0], value2[1]) : formatter2(value2)
}
if (isMinMax) {
if (value2[0] === dataBound[0]) {
return edgeSymbols[0] + ' ' + textValue[1]
} else if (value2[1] === dataBound[1]) {
return edgeSymbols[1] + ' ' + textValue[0]
} else {
return textValue[0] + ' - ' + textValue[1]
}
} else {
return textValue
}
function toFixed2(val2) {
return val2 === dataBound[0]
? 'min'
: val2 === dataBound[1]
? 'max'
: (+val2).toFixed(Math.min(precision, 20))
}
}
VisualMapModel2.prototype.resetExtent = function () {
var thisOption = this.option
var extent3 = asc([thisOption.min, thisOption.max])
this._dataExtent = extent3
}
VisualMapModel2.prototype.getDataDimensionIndex = function (data2) {
var optDim = this.option.dimension
if (optDim != null) {
return data2.getDimensionIndex(optDim)
}
var dimNames = data2.dimensions
for (var i2 = dimNames.length - 1; i2 >= 0; i2--) {
var dimName = dimNames[i2]
var dimInfo = data2.getDimensionInfo(dimName)
if (!dimInfo.isCalculationCoord) {
return dimInfo.storeDimIndex
}
}
}
VisualMapModel2.prototype.getExtent = function () {
return this._dataExtent.slice()
}
VisualMapModel2.prototype.completeVisualOption = function () {
var ecModel = this.ecModel
var thisOption = this.option
var base2 = {
inRange: thisOption.inRange,
outOfRange: thisOption.outOfRange,
}
var target2 = thisOption.target || (thisOption.target = {})
var controller = thisOption.controller || (thisOption.controller = {})
merge(target2, base2)
merge(controller, base2)
var isCategory2 = this.isCategory()
completeSingle.call(this, target2)
completeSingle.call(this, controller)
completeInactive.call(this, target2, 'inRange', 'outOfRange')
completeController.call(this, controller)
function completeSingle(base3) {
if (isArray$5(thisOption.color) && !base3.inRange) {
base3.inRange = {
color: thisOption.color.slice().reverse(),
}
}
base3.inRange = base3.inRange || {
color: ecModel.get('gradientColor'),
}
}
function completeInactive(base3, stateExist, stateAbsent) {
var optExist = base3[stateExist]
var optAbsent = base3[stateAbsent]
if (optExist && !optAbsent) {
optAbsent = base3[stateAbsent] = {}
each$2(optExist, function (visualData, visualType) {
if (!VisualMapping$1.isValidType(visualType)) {
return
}
var defa = visualDefault$1.get(visualType, 'inactive', isCategory2)
if (defa != null) {
optAbsent[visualType] = defa
if (
visualType === 'color' &&
!optAbsent.hasOwnProperty('opacity') &&
!optAbsent.hasOwnProperty('colorAlpha')
) {
optAbsent.opacity = [0, 0]
}
}
})
}
}
function completeController(controller2) {
var symbolExists =
(controller2.inRange || {}).symbol ||
(controller2.outOfRange || {}).symbol
var symbolSizeExists =
(controller2.inRange || {}).symbolSize ||
(controller2.outOfRange || {}).symbolSize
var inactiveColor = this.get('inactiveColor')
var itemSymbol = this.getItemSymbol()
var defaultSymbol = itemSymbol || 'roundRect'
each$2(
this.stateList,
function (state2) {
var itemSize2 = this.itemSize
var visuals = controller2[state2]
if (!visuals) {
visuals = controller2[state2] = {
color: isCategory2 ? inactiveColor : [inactiveColor],
}
}
if (visuals.symbol == null) {
visuals.symbol =
(symbolExists && clone$4(symbolExists)) ||
(isCategory2 ? defaultSymbol : [defaultSymbol])
}
if (visuals.symbolSize == null) {
visuals.symbolSize =
(symbolSizeExists && clone$4(symbolSizeExists)) ||
(isCategory2 ? itemSize2[0] : [itemSize2[0], itemSize2[0]])
}
visuals.symbol = mapVisual(visuals.symbol, function (symbol) {
return symbol === 'none' ? defaultSymbol : symbol
})
var symbolSize = visuals.symbolSize
if (symbolSize != null) {
var max_12 = -Infinity
eachVisual(symbolSize, function (value2) {
value2 > max_12 && (max_12 = value2)
})
visuals.symbolSize = mapVisual(symbolSize, function (value2) {
return linearMap$1(value2, [0, max_12], [0, itemSize2[0]], true)
})
}
},
this
)
}
}
VisualMapModel2.prototype.resetItemSize = function () {
this.itemSize = [
parseFloat(this.get('itemWidth')),
parseFloat(this.get('itemHeight')),
]
}
VisualMapModel2.prototype.isCategory = function () {
return !!this.option.categories
}
VisualMapModel2.prototype.setSelected = function (selected) {}
VisualMapModel2.prototype.getSelected = function () {
return null
}
VisualMapModel2.prototype.getValueState = function (value2) {
return null
}
VisualMapModel2.prototype.getVisualMeta = function (getColorVisual2) {
return null
}
VisualMapModel2.type = 'visualMap'
VisualMapModel2.dependencies = ['series']
VisualMapModel2.defaultOption = {
show: true,
z: 4,
seriesIndex: 'all',
min: 0,
max: 200,
left: 0,
right: null,
top: null,
bottom: 0,
itemWidth: null,
itemHeight: null,
inverse: false,
orient: 'vertical',
backgroundColor: 'rgba(0,0,0,0)',
borderColor: '#ccc',
contentColor: '#5793f3',
inactiveColor: '#aaa',
borderWidth: 0,
padding: 5,
textGap: 10,
precision: 0,
textStyle: {
color: '#333',
},
}
return VisualMapModel2
})(ComponentModel$1)
var VisualMapModel$1 = VisualMapModel
var DEFAULT_BAR_BOUND = [20, 140]
var ContinuousModel = (function (_super) {
__extends$2(ContinuousModel2, _super)
function ContinuousModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = ContinuousModel2.type
return _this
}
ContinuousModel2.prototype.optionUpdated = function (newOption, isInit) {
_super.prototype.optionUpdated.apply(this, arguments)
this.resetExtent()
this.resetVisual(function (mappingOption) {
mappingOption.mappingMethod = 'linear'
mappingOption.dataExtent = this.getExtent()
})
this._resetRange()
}
ContinuousModel2.prototype.resetItemSize = function () {
_super.prototype.resetItemSize.apply(this, arguments)
var itemSize2 = this.itemSize
;(itemSize2[0] == null || isNaN(itemSize2[0])) &&
(itemSize2[0] = DEFAULT_BAR_BOUND[0])
;(itemSize2[1] == null || isNaN(itemSize2[1])) &&
(itemSize2[1] = DEFAULT_BAR_BOUND[1])
}
ContinuousModel2.prototype._resetRange = function () {
var dataExtent = this.getExtent()
var range3 = this.option.range
if (!range3 || range3.auto) {
dataExtent.auto = 1
this.option.range = dataExtent
} else if (isArray$6(range3)) {
if (range3[0] > range3[1]) {
range3.reverse()
}
range3[0] = Math.max(range3[0], dataExtent[0])
range3[1] = Math.min(range3[1], dataExtent[1])
}
}
ContinuousModel2.prototype.completeVisualOption = function () {
_super.prototype.completeVisualOption.apply(this, arguments)
each$f(
this.stateList,
function (state2) {
var symbolSize = this.option.controller[state2].symbolSize
if (symbolSize && symbolSize[0] !== symbolSize[1]) {
symbolSize[0] = symbolSize[1] / 3
}
},
this
)
}
ContinuousModel2.prototype.setSelected = function (selected) {
this.option.range = selected.slice()
this._resetRange()
}
ContinuousModel2.prototype.getSelected = function () {
var dataExtent = this.getExtent()
var dataInterval = asc$2((this.get('range') || []).slice())
dataInterval[0] > dataExtent[1] && (dataInterval[0] = dataExtent[1])
dataInterval[1] > dataExtent[1] && (dataInterval[1] = dataExtent[1])
dataInterval[0] < dataExtent[0] && (dataInterval[0] = dataExtent[0])
dataInterval[1] < dataExtent[0] && (dataInterval[1] = dataExtent[0])
return dataInterval
}
ContinuousModel2.prototype.getValueState = function (value2) {
var range3 = this.option.range
var dataExtent = this.getExtent()
return (range3[0] <= dataExtent[0] || range3[0] <= value2) &&
(range3[1] >= dataExtent[1] || value2 <= range3[1])
? 'inRange'
: 'outOfRange'
}
ContinuousModel2.prototype.findTargetDataIndices = function (range3) {
var result = []
this.eachTargetSeries(function (seriesModel) {
var dataIndices = []
var data2 = seriesModel.getData()
data2.each(
this.getDataDimensionIndex(data2),
function (value2, dataIndex) {
range3[0] <= value2 &&
value2 <= range3[1] &&
dataIndices.push(dataIndex)
},
this
)
result.push({
seriesId: seriesModel.id,
dataIndex: dataIndices,
})
}, this)
return result
}
ContinuousModel2.prototype.getVisualMeta = function (getColorVisual2) {
var oVals = getColorStopValues(this, 'outOfRange', this.getExtent())
var iVals = getColorStopValues(this, 'inRange', this.option.range.slice())
var stops = []
function setStop(value2, valueState) {
stops.push({
value: value2,
color: getColorVisual2(value2, valueState),
})
}
var iIdx = 0
var oIdx = 0
var iLen = iVals.length
var oLen = oVals.length
for (; oIdx < oLen && (!iVals.length || oVals[oIdx] <= iVals[0]); oIdx++) {
if (oVals[oIdx] < iVals[iIdx]) {
setStop(oVals[oIdx], 'outOfRange')
}
}
for (var first2 = 1; iIdx < iLen; iIdx++, first2 = 0) {
first2 && stops.length && setStop(iVals[iIdx], 'outOfRange')
setStop(iVals[iIdx], 'inRange')
}
for (var first2 = 1; oIdx < oLen; oIdx++) {
if (!iVals.length || iVals[iVals.length - 1] < oVals[oIdx]) {
if (first2) {
stops.length && setStop(stops[stops.length - 1].value, 'outOfRange')
first2 = 0
}
setStop(oVals[oIdx], 'outOfRange')
}
}
var stopsLen = stops.length
return {
stops,
outerColors: [
stopsLen ? stops[0].color : 'transparent',
stopsLen ? stops[stopsLen - 1].color : 'transparent',
],
}
}
ContinuousModel2.type = 'visualMap.continuous'
ContinuousModel2.defaultOption = inheritDefaultOption(
VisualMapModel$1.defaultOption,
{
align: 'auto',
calculable: false,
hoverLink: true,
realtime: true,
handleIcon:
'path://M-11.39,9.77h0a3.5,3.5,0,0,1-3.5,3.5h-22a3.5,3.5,0,0,1-3.5-3.5h0a3.5,3.5,0,0,1,3.5-3.5h22A3.5,3.5,0,0,1-11.39,9.77Z',
handleSize: '120%',
handleStyle: {
borderColor: '#fff',
borderWidth: 1,
},
indicatorIcon: 'circle',
indicatorSize: '50%',
indicatorStyle: {
borderColor: '#fff',
borderWidth: 2,
shadowBlur: 2,
shadowOffsetX: 1,
shadowOffsetY: 1,
shadowColor: 'rgba(0,0,0,0.2)',
},
}
)
return ContinuousModel2
})(VisualMapModel$1)
function getColorStopValues(visualMapModel, valueState, dataExtent) {
if (dataExtent[0] === dataExtent[1]) {
return dataExtent.slice()
}
var count2 = 200
var step = (dataExtent[1] - dataExtent[0]) / count2
var value2 = dataExtent[0]
var stopValues = []
for (var i2 = 0; i2 <= count2 && value2 < dataExtent[1]; i2++) {
stopValues.push(value2)
value2 += step
}
stopValues.push(dataExtent[1])
return stopValues
}
var ContinuousModel$1 = ContinuousModel
var VisualMapView = (function (_super) {
__extends$2(VisualMapView2, _super)
function VisualMapView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = VisualMapView2.type
_this.autoPositionValues = {
left: 1,
right: 1,
top: 1,
bottom: 1,
}
return _this
}
VisualMapView2.prototype.init = function (ecModel, api) {
this.ecModel = ecModel
this.api = api
}
VisualMapView2.prototype.render = function (
visualMapModel,
ecModel,
api,
payload
) {
this.visualMapModel = visualMapModel
if (visualMapModel.get('show') === false) {
this.group.removeAll()
return
}
this.doRender(visualMapModel, ecModel, api, payload)
}
VisualMapView2.prototype.renderBackground = function (group) {
var visualMapModel = this.visualMapModel
var padding = normalizeCssArray(visualMapModel.get('padding') || 0)
var rect = group.getBoundingRect()
group.add(
new Rect$4({
z2: -1,
silent: true,
shape: {
x: rect.x - padding[3],
y: rect.y - padding[0],
width: rect.width + padding[3] + padding[1],
height: rect.height + padding[0] + padding[2],
},
style: {
fill: visualMapModel.get('backgroundColor'),
stroke: visualMapModel.get('borderColor'),
lineWidth: visualMapModel.get('borderWidth'),
},
})
)
}
VisualMapView2.prototype.getControllerVisual = function (
targetValue,
visualCluster,
opts
) {
opts = opts || {}
var forceState = opts.forceState
var visualMapModel = this.visualMapModel
var visualObj = {}
if (visualCluster === 'color') {
var defaultColor = visualMapModel.get('contentColor')
visualObj.color = defaultColor
}
function getter(key2) {
return visualObj[key2]
}
function setter(key2, value2) {
visualObj[key2] = value2
}
var mappings =
visualMapModel.controllerVisuals[
forceState || visualMapModel.getValueState(targetValue)
]
var visualTypes = VisualMapping$1.prepareVisualTypes(mappings)
each$f(visualTypes, function (type4) {
var visualMapping = mappings[type4]
if (opts.convertOpacityToAlpha && type4 === 'opacity') {
type4 = 'colorAlpha'
visualMapping = mappings.__alphaForOpacity
}
if (VisualMapping$1.dependsOn(type4, visualCluster)) {
visualMapping && visualMapping.applyVisual(targetValue, getter, setter)
}
})
return visualObj[visualCluster]
}
VisualMapView2.prototype.positionGroup = function (group) {
var model = this.visualMapModel
var api = this.api
positionElement(group, model.getBoxLayoutParams(), {
width: api.getWidth(),
height: api.getHeight(),
})
}
VisualMapView2.prototype.doRender = function (
visualMapModel,
ecModel,
api,
payload
) {}
VisualMapView2.type = 'visualMap'
return VisualMapView2
})(ComponentView$1)
var VisualMapView$1 = VisualMapView
var paramsSet = [
['left', 'right', 'width'],
['top', 'bottom', 'height'],
]
function getItemAlign(visualMapModel, api, itemSize2) {
var modelOption = visualMapModel.option
var itemAlign = modelOption.align
if (itemAlign != null && itemAlign !== 'auto') {
return itemAlign
}
var ecSize = {
width: api.getWidth(),
height: api.getHeight(),
}
var realIndex = modelOption.orient === 'horizontal' ? 1 : 0
var reals = paramsSet[realIndex]
var fakeValue = [0, null, 10]
var layoutInput = {}
for (var i2 = 0; i2 < 3; i2++) {
layoutInput[paramsSet[1 - realIndex][i2]] = fakeValue[i2]
layoutInput[reals[i2]] = i2 === 2 ? itemSize2[0] : modelOption[reals[i2]]
}
var rParam = [
['x', 'width', 3],
['y', 'height', 0],
][realIndex]
var rect = getLayoutRect(layoutInput, ecSize, modelOption.padding)
return reals[
(rect.margin[rParam[2]] || 0) + rect[rParam[0]] + rect[rParam[1]] * 0.5 <
ecSize[rParam[1]] * 0.5
? 0
: 1
]
}
function makeHighDownBatch(batch, visualMapModel) {
each$f(batch || [], function (batchItem) {
if (batchItem.dataIndex != null) {
batchItem.dataIndexInside = batchItem.dataIndex
batchItem.dataIndex = null
}
batchItem.highlightKey =
'visualMap' + (visualMapModel ? visualMapModel.componentIndex : '')
})
return batch
}
var linearMap = linearMap$2
var each$1 = each$f
var mathMin = Math.min
var mathMax = Math.max
var HOVER_LINK_SIZE = 12
var HOVER_LINK_OUT = 6
var ContinuousView = (function (_super) {
__extends$2(ContinuousView2, _super)
function ContinuousView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = ContinuousView2.type
_this._shapes = {}
_this._dataInterval = []
_this._handleEnds = []
_this._hoverLinkDataIndices = []
return _this
}
ContinuousView2.prototype.doRender = function (
visualMapModel,
ecModel,
api,
payload
) {
this._api = api
if (
!payload ||
payload.type !== 'selectDataRange' ||
payload.from !== this.uid
) {
this._buildView()
}
}
ContinuousView2.prototype._buildView = function () {
this.group.removeAll()
var visualMapModel = this.visualMapModel
var thisGroup = this.group
this._orient = visualMapModel.get('orient')
this._useHandle = visualMapModel.get('calculable')
this._resetInterval()
this._renderBar(thisGroup)
var dataRangeText = visualMapModel.get('text')
this._renderEndsText(thisGroup, dataRangeText, 0)
this._renderEndsText(thisGroup, dataRangeText, 1)
this._updateView(true)
this.renderBackground(thisGroup)
this._updateView()
this._enableHoverLinkToSeries()
this._enableHoverLinkFromSeries()
this.positionGroup(thisGroup)
}
ContinuousView2.prototype._renderEndsText = function (
group,
dataRangeText,
endsIndex
) {
if (!dataRangeText) {
return
}
var text2 = dataRangeText[1 - endsIndex]
text2 = text2 != null ? text2 + '' : ''
var visualMapModel = this.visualMapModel
var textGap = visualMapModel.get('textGap')
var itemSize2 = visualMapModel.itemSize
var barGroup = this._shapes.mainGroup
var position2 = this._applyTransform(
[itemSize2[0] / 2, endsIndex === 0 ? -textGap : itemSize2[1] + textGap],
barGroup
)
var align = this._applyTransform(
endsIndex === 0 ? 'bottom' : 'top',
barGroup
)
var orient = this._orient
var textStyleModel = this.visualMapModel.textStyleModel
this.group.add(
new ZRText$1({
style: createTextStyle$1(textStyleModel, {
x: position2[0],
y: position2[1],
verticalAlign: orient === 'horizontal' ? 'middle' : align,
align: orient === 'horizontal' ? align : 'center',
text: text2,
}),
})
)
}
ContinuousView2.prototype._renderBar = function (targetGroup) {
var visualMapModel = this.visualMapModel
var shapes = this._shapes
var itemSize2 = visualMapModel.itemSize
var orient = this._orient
var useHandle = this._useHandle
var itemAlign = getItemAlign(visualMapModel, this.api, itemSize2)
var mainGroup = (shapes.mainGroup = this._createBarGroup(itemAlign))
var gradientBarGroup = new Group$5()
mainGroup.add(gradientBarGroup)
gradientBarGroup.add((shapes.outOfRange = createPolygon()))
gradientBarGroup.add(
(shapes.inRange = createPolygon(
null,
useHandle ? getCursor(this._orient) : null,
bind$1(this._dragHandle, this, 'all', false),
bind$1(this._dragHandle, this, 'all', true)
))
)
gradientBarGroup.setClipPath(
new Rect$4({
shape: {
x: 0,
y: 0,
width: itemSize2[0],
height: itemSize2[1],
r: 3,
},
})
)
var textRect = visualMapModel.textStyleModel.getTextRect('\u56FD')
var textSize = mathMax(textRect.width, textRect.height)
if (useHandle) {
shapes.handleThumbs = []
shapes.handleLabels = []
shapes.handleLabelPoints = []
this._createHandle(
visualMapModel,
mainGroup,
0,
itemSize2,
textSize,
orient
)
this._createHandle(
visualMapModel,
mainGroup,
1,
itemSize2,
textSize,
orient
)
}
this._createIndicator(
visualMapModel,
mainGroup,
itemSize2,
textSize,
orient
)
targetGroup.add(mainGroup)
}
ContinuousView2.prototype._createHandle = function (
visualMapModel,
mainGroup,
handleIndex,
itemSize2,
textSize,
orient
) {
var onDrift = bind$1(this._dragHandle, this, handleIndex, false)
var onDragEnd = bind$1(this._dragHandle, this, handleIndex, true)
var handleSize = parsePercent$1(
visualMapModel.get('handleSize'),
itemSize2[0]
)
var handleThumb = createSymbol$1(
visualMapModel.get('handleIcon'),
-handleSize / 2,
-handleSize / 2,
handleSize,
handleSize,
null,
true
)
var cursor = getCursor(this._orient)
handleThumb.attr({
cursor,
draggable: true,
drift: onDrift,
ondragend: onDragEnd,
onmousemove: function (e2) {
stop$1(e2.event)
},
})
handleThumb.x = itemSize2[0] / 2
handleThumb.useStyle(visualMapModel.getModel('handleStyle').getItemStyle())
handleThumb.setStyle({
strokeNoScale: true,
strokeFirst: true,
})
handleThumb.style.lineWidth *= 2
handleThumb.ensureState('emphasis').style = visualMapModel
.getModel(['emphasis', 'handleStyle'])
.getItemStyle()
setAsHighDownDispatcher(handleThumb, true)
mainGroup.add(handleThumb)
var textStyleModel = this.visualMapModel.textStyleModel
var handleLabel = new ZRText$1({
cursor,
draggable: true,
drift: onDrift,
onmousemove: function (e2) {
stop$1(e2.event)
},
ondragend: onDragEnd,
style: createTextStyle$1(textStyleModel, {
x: 0,
y: 0,
text: '',
}),
})
handleLabel.ensureState('blur').style = {
opacity: 0.1,
}
handleLabel.stateTransition = {
duration: 200,
}
this.group.add(handleLabel)
var handleLabelPoint = [handleSize, 0]
var shapes = this._shapes
shapes.handleThumbs[handleIndex] = handleThumb
shapes.handleLabelPoints[handleIndex] = handleLabelPoint
shapes.handleLabels[handleIndex] = handleLabel
}
ContinuousView2.prototype._createIndicator = function (
visualMapModel,
mainGroup,
itemSize2,
textSize,
orient
) {
var scale2 = parsePercent$1(
visualMapModel.get('indicatorSize'),
itemSize2[0]
)
var indicator = createSymbol$1(
visualMapModel.get('indicatorIcon'),
-scale2 / 2,
-scale2 / 2,
scale2,
scale2,
null,
true
)
indicator.attr({
cursor: 'move',
invisible: true,
silent: true,
x: itemSize2[0] / 2,
})
var indicatorStyle = visualMapModel
.getModel('indicatorStyle')
.getItemStyle()
if (indicator instanceof ZRImage$1) {
var pathStyle = indicator.style
indicator.useStyle(
extend(
{
image: pathStyle.image,
x: pathStyle.x,
y: pathStyle.y,
width: pathStyle.width,
height: pathStyle.height,
},
indicatorStyle
)
)
} else {
indicator.useStyle(indicatorStyle)
}
mainGroup.add(indicator)
var textStyleModel = this.visualMapModel.textStyleModel
var indicatorLabel = new ZRText$1({
silent: true,
invisible: true,
style: createTextStyle$1(textStyleModel, {
x: 0,
y: 0,
text: '',
}),
})
this.group.add(indicatorLabel)
var indicatorLabelPoint = [
(orient === 'horizontal' ? textSize / 2 : HOVER_LINK_OUT) +
itemSize2[0] / 2,
0,
]
var shapes = this._shapes
shapes.indicator = indicator
shapes.indicatorLabel = indicatorLabel
shapes.indicatorLabelPoint = indicatorLabelPoint
this._firstShowIndicator = true
}
ContinuousView2.prototype._dragHandle = function (
handleIndex,
isEnd,
dx,
dy
) {
if (!this._useHandle) {
return
}
this._dragging = !isEnd
if (!isEnd) {
var vertex = this._applyTransform([dx, dy], this._shapes.mainGroup, true)
this._updateInterval(handleIndex, vertex[1])
this._hideIndicator()
this._updateView()
}
if (isEnd === !this.visualMapModel.get('realtime')) {
this.api.dispatchAction({
type: 'selectDataRange',
from: this.uid,
visualMapId: this.visualMapModel.id,
selected: this._dataInterval.slice(),
})
}
if (isEnd) {
!this._hovering && this._clearHoverLinkToSeries()
} else if (useHoverLinkOnHandle(this.visualMapModel)) {
this._doHoverLinkToSeries(this._handleEnds[handleIndex], false)
}
}
ContinuousView2.prototype._resetInterval = function () {
var visualMapModel = this.visualMapModel
var dataInterval = (this._dataInterval = visualMapModel.getSelected())
var dataExtent = visualMapModel.getExtent()
var sizeExtent = [0, visualMapModel.itemSize[1]]
this._handleEnds = [
linearMap(dataInterval[0], dataExtent, sizeExtent, true),
linearMap(dataInterval[1], dataExtent, sizeExtent, true),
]
}
ContinuousView2.prototype._updateInterval = function (handleIndex, delta) {
delta = delta || 0
var visualMapModel = this.visualMapModel
var handleEnds = this._handleEnds
var sizeExtent = [0, visualMapModel.itemSize[1]]
sliderMove(delta, handleEnds, sizeExtent, handleIndex, 0)
var dataExtent = visualMapModel.getExtent()
this._dataInterval = [
linearMap(handleEnds[0], sizeExtent, dataExtent, true),
linearMap(handleEnds[1], sizeExtent, dataExtent, true),
]
}
ContinuousView2.prototype._updateView = function (forSketch) {
var visualMapModel = this.visualMapModel
var dataExtent = visualMapModel.getExtent()
var shapes = this._shapes
var outOfRangeHandleEnds = [0, visualMapModel.itemSize[1]]
var inRangeHandleEnds = forSketch ? outOfRangeHandleEnds : this._handleEnds
var visualInRange = this._createBarVisual(
this._dataInterval,
dataExtent,
inRangeHandleEnds,
'inRange'
)
var visualOutOfRange = this._createBarVisual(
dataExtent,
dataExtent,
outOfRangeHandleEnds,
'outOfRange'
)
shapes.inRange
.setStyle({
fill: visualInRange.barColor,
})
.setShape('points', visualInRange.barPoints)
shapes.outOfRange
.setStyle({
fill: visualOutOfRange.barColor,
})
.setShape('points', visualOutOfRange.barPoints)
this._updateHandle(inRangeHandleEnds, visualInRange)
}
ContinuousView2.prototype._createBarVisual = function (
dataInterval,
dataExtent,
handleEnds,
forceState
) {
var opts = {
forceState,
convertOpacityToAlpha: true,
}
var colorStops = this._makeColorGradient(dataInterval, opts)
var symbolSizes = [
this.getControllerVisual(dataInterval[0], 'symbolSize', opts),
this.getControllerVisual(dataInterval[1], 'symbolSize', opts),
]
var barPoints = this._createBarPoints(handleEnds, symbolSizes)
return {
barColor: new LinearGradient$1(0, 0, 0, 1, colorStops),
barPoints,
handlesColor: [
colorStops[0].color,
colorStops[colorStops.length - 1].color,
],
}
}
ContinuousView2.prototype._makeColorGradient = function (dataInterval, opts) {
var sampleNumber = 100
var colorStops = []
var step = (dataInterval[1] - dataInterval[0]) / sampleNumber
colorStops.push({
color: this.getControllerVisual(dataInterval[0], 'color', opts),
offset: 0,
})
for (var i2 = 1; i2 < sampleNumber; i2++) {
var currValue = dataInterval[0] + step * i2
if (currValue > dataInterval[1]) {
break
}
colorStops.push({
color: this.getControllerVisual(currValue, 'color', opts),
offset: i2 / sampleNumber,
})
}
colorStops.push({
color: this.getControllerVisual(dataInterval[1], 'color', opts),
offset: 1,
})
return colorStops
}
ContinuousView2.prototype._createBarPoints = function (
handleEnds,
symbolSizes
) {
var itemSize2 = this.visualMapModel.itemSize
return [
[itemSize2[0] - symbolSizes[0], handleEnds[0]],
[itemSize2[0], handleEnds[0]],
[itemSize2[0], handleEnds[1]],
[itemSize2[0] - symbolSizes[1], handleEnds[1]],
]
}
ContinuousView2.prototype._createBarGroup = function (itemAlign) {
var orient = this._orient
var inverse = this.visualMapModel.get('inverse')
return new Group$5(
orient === 'horizontal' && !inverse
? {
scaleX: itemAlign === 'bottom' ? 1 : -1,
rotation: Math.PI / 2,
}
: orient === 'horizontal' && inverse
? {
scaleX: itemAlign === 'bottom' ? -1 : 1,
rotation: -Math.PI / 2,
}
: orient === 'vertical' && !inverse
? {
scaleX: itemAlign === 'left' ? 1 : -1,
scaleY: -1,
}
: {
scaleX: itemAlign === 'left' ? 1 : -1,
}
)
}
ContinuousView2.prototype._updateHandle = function (
handleEnds,
visualInRange
) {
if (!this._useHandle) {
return
}
var shapes = this._shapes
var visualMapModel = this.visualMapModel
var handleThumbs = shapes.handleThumbs
var handleLabels = shapes.handleLabels
var itemSize2 = visualMapModel.itemSize
var dataExtent = visualMapModel.getExtent()
each$1(
[0, 1],
function (handleIndex) {
var handleThumb = handleThumbs[handleIndex]
handleThumb.setStyle('fill', visualInRange.handlesColor[handleIndex])
handleThumb.y = handleEnds[handleIndex]
var val2 = linearMap(
handleEnds[handleIndex],
[0, itemSize2[1]],
dataExtent,
true
)
var symbolSize = this.getControllerVisual(val2, 'symbolSize')
handleThumb.scaleX = handleThumb.scaleY = symbolSize / itemSize2[0]
handleThumb.x = itemSize2[0] - symbolSize / 2
var textPoint = applyTransform(
shapes.handleLabelPoints[handleIndex],
getTransform$1(handleThumb, this.group)
)
handleLabels[handleIndex].setStyle({
x: textPoint[0],
y: textPoint[1],
text: visualMapModel.formatValueText(this._dataInterval[handleIndex]),
verticalAlign: 'middle',
align:
this._orient === 'vertical'
? this._applyTransform('left', shapes.mainGroup)
: 'center',
})
},
this
)
}
ContinuousView2.prototype._showIndicator = function (
cursorValue,
textValue,
rangeSymbol,
halfHoverLinkSize
) {
var visualMapModel = this.visualMapModel
var dataExtent = visualMapModel.getExtent()
var itemSize2 = visualMapModel.itemSize
var sizeExtent = [0, itemSize2[1]]
var shapes = this._shapes
var indicator = shapes.indicator
if (!indicator) {
return
}
indicator.attr('invisible', false)
var opts = {
convertOpacityToAlpha: true,
}
var color2 = this.getControllerVisual(cursorValue, 'color', opts)
var symbolSize = this.getControllerVisual(cursorValue, 'symbolSize')
var y2 = linearMap(cursorValue, dataExtent, sizeExtent, true)
var x2 = itemSize2[0] - symbolSize / 2
var oldIndicatorPos = {
x: indicator.x,
y: indicator.y,
}
indicator.y = y2
indicator.x = x2
var textPoint = applyTransform(
shapes.indicatorLabelPoint,
getTransform$1(indicator, this.group)
)
var indicatorLabel = shapes.indicatorLabel
indicatorLabel.attr('invisible', false)
var align = this._applyTransform('left', shapes.mainGroup)
var orient = this._orient
var isHorizontal2 = orient === 'horizontal'
indicatorLabel.setStyle({
text:
(rangeSymbol ? rangeSymbol : '') +
visualMapModel.formatValueText(textValue),
verticalAlign: isHorizontal2 ? align : 'middle',
align: isHorizontal2 ? 'center' : align,
})
var indicatorNewProps = {
x: x2,
y: y2,
style: {
fill: color2,
},
}
var labelNewProps = {
style: {
x: textPoint[0],
y: textPoint[1],
},
}
if (
visualMapModel.ecModel.isAnimationEnabled() &&
!this._firstShowIndicator
) {
var animationCfg = {
duration: 100,
easing: 'cubicInOut',
additive: true,
}
indicator.x = oldIndicatorPos.x
indicator.y = oldIndicatorPos.y
indicator.animateTo(indicatorNewProps, animationCfg)
indicatorLabel.animateTo(labelNewProps, animationCfg)
} else {
indicator.attr(indicatorNewProps)
indicatorLabel.attr(labelNewProps)
}
this._firstShowIndicator = false
var handleLabels = this._shapes.handleLabels
if (handleLabels) {
for (var i2 = 0; i2 < handleLabels.length; i2++) {
this._api.enterBlur(handleLabels[i2])
}
}
}
ContinuousView2.prototype._enableHoverLinkToSeries = function () {
var self2 = this
this._shapes.mainGroup
.on('mousemove', function (e2) {
self2._hovering = true
if (!self2._dragging) {
var itemSize2 = self2.visualMapModel.itemSize
var pos = self2._applyTransform(
[e2.offsetX, e2.offsetY],
self2._shapes.mainGroup,
true,
true
)
pos[1] = mathMin(mathMax(0, pos[1]), itemSize2[1])
self2._doHoverLinkToSeries(
pos[1],
0 <= pos[0] && pos[0] <= itemSize2[0]
)
}
})
.on('mouseout', function () {
self2._hovering = false
!self2._dragging && self2._clearHoverLinkToSeries()
})
}
ContinuousView2.prototype._enableHoverLinkFromSeries = function () {
var zr = this.api.getZr()
if (this.visualMapModel.option.hoverLink) {
zr.on('mouseover', this._hoverLinkFromSeriesMouseOver, this)
zr.on('mouseout', this._hideIndicator, this)
} else {
this._clearHoverLinkFromSeries()
}
}
ContinuousView2.prototype._doHoverLinkToSeries = function (
cursorPos,
hoverOnBar
) {
var visualMapModel = this.visualMapModel
var itemSize2 = visualMapModel.itemSize
if (!visualMapModel.option.hoverLink) {
return
}
var sizeExtent = [0, itemSize2[1]]
var dataExtent = visualMapModel.getExtent()
cursorPos = mathMin(mathMax(sizeExtent[0], cursorPos), sizeExtent[1])
var halfHoverLinkSize = getHalfHoverLinkSize(
visualMapModel,
dataExtent,
sizeExtent
)
var hoverRange = [
cursorPos - halfHoverLinkSize,
cursorPos + halfHoverLinkSize,
]
var cursorValue = linearMap(cursorPos, sizeExtent, dataExtent, true)
var valueRange = [
linearMap(hoverRange[0], sizeExtent, dataExtent, true),
linearMap(hoverRange[1], sizeExtent, dataExtent, true),
]
hoverRange[0] < sizeExtent[0] && (valueRange[0] = -Infinity)
hoverRange[1] > sizeExtent[1] && (valueRange[1] = Infinity)
if (hoverOnBar) {
if (valueRange[0] === -Infinity) {
this._showIndicator(cursorValue, valueRange[1], '< ', halfHoverLinkSize)
} else if (valueRange[1] === Infinity) {
this._showIndicator(cursorValue, valueRange[0], '> ', halfHoverLinkSize)
} else {
this._showIndicator(
cursorValue,
cursorValue,
'\u2248 ',
halfHoverLinkSize
)
}
}
var oldBatch = this._hoverLinkDataIndices
var newBatch = []
if (hoverOnBar || useHoverLinkOnHandle(visualMapModel)) {
newBatch = this._hoverLinkDataIndices =
visualMapModel.findTargetDataIndices(valueRange)
}
var resultBatches = compressBatches(oldBatch, newBatch)
this._dispatchHighDown(
'downplay',
makeHighDownBatch(resultBatches[0], visualMapModel)
)
this._dispatchHighDown(
'highlight',
makeHighDownBatch(resultBatches[1], visualMapModel)
)
}
ContinuousView2.prototype._hoverLinkFromSeriesMouseOver = function (e2) {
var ecData
findEventDispatcher(
e2.target,
function (target2) {
var currECData = getECData(target2)
if (currECData.dataIndex != null) {
ecData = currECData
return true
}
},
true
)
if (!ecData) {
return
}
var dataModel = this.ecModel.getSeriesByIndex(ecData.seriesIndex)
var visualMapModel = this.visualMapModel
if (!visualMapModel.isTargetSeries(dataModel)) {
return
}
var data2 = dataModel.getData(ecData.dataType)
var value2 = data2
.getStore()
.get(visualMapModel.getDataDimensionIndex(data2), ecData.dataIndex)
if (!isNaN(value2)) {
this._showIndicator(value2, value2)
}
}
ContinuousView2.prototype._hideIndicator = function () {
var shapes = this._shapes
shapes.indicator && shapes.indicator.attr('invisible', true)
shapes.indicatorLabel && shapes.indicatorLabel.attr('invisible', true)
var handleLabels = this._shapes.handleLabels
if (handleLabels) {
for (var i2 = 0; i2 < handleLabels.length; i2++) {
this._api.leaveBlur(handleLabels[i2])
}
}
}
ContinuousView2.prototype._clearHoverLinkToSeries = function () {
this._hideIndicator()
var indices = this._hoverLinkDataIndices
this._dispatchHighDown(
'downplay',
makeHighDownBatch(indices, this.visualMapModel)
)
indices.length = 0
}
ContinuousView2.prototype._clearHoverLinkFromSeries = function () {
this._hideIndicator()
var zr = this.api.getZr()
zr.off('mouseover', this._hoverLinkFromSeriesMouseOver)
zr.off('mouseout', this._hideIndicator)
}
ContinuousView2.prototype._applyTransform = function (
vertex,
element,
inverse,
global2
) {
var transform3 = getTransform$1(element, global2 ? null : this.group)
return isArray$6(vertex)
? applyTransform(vertex, transform3, inverse)
: transformDirection(vertex, transform3, inverse)
}
ContinuousView2.prototype._dispatchHighDown = function (type4, batch) {
batch &&
batch.length &&
this.api.dispatchAction({
type: type4,
batch,
})
}
ContinuousView2.prototype.dispose = function () {
this._clearHoverLinkFromSeries()
this._clearHoverLinkToSeries()
}
ContinuousView2.prototype.remove = function () {
this._clearHoverLinkFromSeries()
this._clearHoverLinkToSeries()
}
ContinuousView2.type = 'visualMap.continuous'
return ContinuousView2
})(VisualMapView$1)
function createPolygon(points2, cursor, onDrift, onDragEnd) {
return new Polygon$1({
shape: {
points: points2,
},
draggable: !!onDrift,
cursor,
drift: onDrift,
onmousemove: function (e2) {
stop$1(e2.event)
},
ondragend: onDragEnd,
})
}
function getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent) {
var halfHoverLinkSize = HOVER_LINK_SIZE / 2
var hoverLinkDataSize = visualMapModel.get('hoverLinkDataSize')
if (hoverLinkDataSize) {
halfHoverLinkSize =
linearMap(hoverLinkDataSize, dataExtent, sizeExtent, true) / 2
}
return halfHoverLinkSize
}
function useHoverLinkOnHandle(visualMapModel) {
var hoverLinkOnHandle = visualMapModel.get('hoverLinkOnHandle')
return !!(hoverLinkOnHandle == null
? visualMapModel.get('realtime')
: hoverLinkOnHandle)
}
function getCursor(orient) {
return orient === 'vertical' ? 'ns-resize' : 'ew-resize'
}
var ContinuousView$1 = ContinuousView
var visualMapActionInfo = {
type: 'selectDataRange',
event: 'dataRangeSelected',
update: 'update',
}
var visualMapActionHander = function (payload, ecModel) {
ecModel.eachComponent(
{
mainType: 'visualMap',
query: payload,
},
function (model) {
model.setSelected(payload.selected)
}
)
}
var visualMapEncodingHandlers = [
{
createOnAllSeries: true,
reset: function (seriesModel, ecModel) {
var resetDefines = []
ecModel.eachComponent('visualMap', function (visualMapModel) {
var pipelineContext = seriesModel.pipelineContext
if (
!visualMapModel.isTargetSeries(seriesModel) ||
(pipelineContext && pipelineContext.large)
) {
return
}
resetDefines.push(
incrementalApplyVisual(
visualMapModel.stateList,
visualMapModel.targetVisuals,
bind$1(visualMapModel.getValueState, visualMapModel),
visualMapModel.getDataDimensionIndex(seriesModel.getData())
)
)
})
return resetDefines
},
},
{
createOnAllSeries: true,
reset: function (seriesModel, ecModel) {
var data2 = seriesModel.getData()
var visualMetaList = []
ecModel.eachComponent('visualMap', function (visualMapModel) {
if (visualMapModel.isTargetSeries(seriesModel)) {
var visualMeta = visualMapModel.getVisualMeta(
bind$1(getColorVisual, null, seriesModel, visualMapModel)
) || {
stops: [],
outerColors: [],
}
var dimIdx = visualMapModel.getDataDimensionIndex(data2)
if (dimIdx >= 0) {
visualMeta.dimension = dimIdx
visualMetaList.push(visualMeta)
}
}
})
seriesModel.getData().setVisual('visualMeta', visualMetaList)
},
},
]
function getColorVisual(seriesModel, visualMapModel, value2, valueState) {
var mappings = visualMapModel.targetVisuals[valueState]
var visualTypes = VisualMapping$1.prepareVisualTypes(mappings)
var resultVisual = {
color: getVisualFromData(seriesModel.getData(), 'color'),
}
for (var i2 = 0, len2 = visualTypes.length; i2 < len2; i2++) {
var type4 = visualTypes[i2]
var mapping = mappings[type4 === 'opacity' ? '__alphaForOpacity' : type4]
mapping && mapping.applyVisual(value2, getVisual, setVisual)
}
return resultVisual.color
function getVisual(key2) {
return resultVisual[key2]
}
function setVisual(key2, value3) {
resultVisual[key2] = value3
}
}
var each = each$f
function visualMapPreprocessor(option2) {
var visualMap = option2 && option2.visualMap
if (!isArray$6(visualMap)) {
visualMap = visualMap ? [visualMap] : []
}
each(visualMap, function (opt) {
if (!opt) {
return
}
if (has(opt, 'splitList') && !has(opt, 'pieces')) {
opt.pieces = opt.splitList
delete opt.splitList
}
var pieces = opt.pieces
if (pieces && isArray$6(pieces)) {
each(pieces, function (piece) {
if (isObject$b(piece)) {
if (has(piece, 'start') && !has(piece, 'min')) {
piece.min = piece.start
}
if (has(piece, 'end') && !has(piece, 'max')) {
piece.max = piece.end
}
}
})
}
})
}
function has(obj, name2) {
return obj && obj.hasOwnProperty && obj.hasOwnProperty(name2)
}
var installed = false
function installCommon(registers) {
if (installed) {
return
}
installed = true
registers.registerSubTypeDefaulter('visualMap', function (option2) {
return !option2.categories &&
(!(option2.pieces
? option2.pieces.length > 0
: option2.splitNumber > 0) ||
option2.calculable)
? 'continuous'
: 'piecewise'
})
registers.registerAction(visualMapActionInfo, visualMapActionHander)
each$f(visualMapEncodingHandlers, function (handler) {
registers.registerVisual(registers.PRIORITY.VISUAL.COMPONENT, handler)
})
registers.registerPreprocessor(visualMapPreprocessor)
}
function install$7(registers) {
registers.registerComponentModel(ContinuousModel$1)
registers.registerComponentView(ContinuousView$1)
installCommon(registers)
}
var PiecewiseModel = (function (_super) {
__extends$2(PiecewiseModel2, _super)
function PiecewiseModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = PiecewiseModel2.type
_this._pieceList = []
return _this
}
PiecewiseModel2.prototype.optionUpdated = function (newOption, isInit) {
_super.prototype.optionUpdated.apply(this, arguments)
this.resetExtent()
var mode2 = (this._mode = this._determineMode())
this._pieceList = []
resetMethods[this._mode].call(this, this._pieceList)
this._resetSelected(newOption, isInit)
var categories = this.option.categories
this.resetVisual(function (mappingOption, state2) {
if (mode2 === 'categories') {
mappingOption.mappingMethod = 'category'
mappingOption.categories = clone$4(categories)
} else {
mappingOption.dataExtent = this.getExtent()
mappingOption.mappingMethod = 'piecewise'
mappingOption.pieceList = map$1(this._pieceList, function (piece) {
piece = clone$4(piece)
if (state2 !== 'inRange') {
piece.visual = null
}
return piece
})
}
})
}
PiecewiseModel2.prototype.completeVisualOption = function () {
var option2 = this.option
var visualTypesInPieces = {}
var visualTypes = VisualMapping$1.listVisualTypes()
var isCategory2 = this.isCategory()
each$f(option2.pieces, function (piece) {
each$f(visualTypes, function (visualType) {
if (piece.hasOwnProperty(visualType)) {
visualTypesInPieces[visualType] = 1
}
})
})
each$f(
visualTypesInPieces,
function (v4, visualType) {
var exists = false
each$f(
this.stateList,
function (state2) {
exists =
exists ||
has2(option2, state2, visualType) ||
has2(option2.target, state2, visualType)
},
this
)
!exists &&
each$f(this.stateList, function (state2) {
;(option2[state2] || (option2[state2] = {}))[visualType] =
visualDefault$1.get(
visualType,
state2 === 'inRange' ? 'active' : 'inactive',
isCategory2
)
})
},
this
)
function has2(obj, state2, visualType) {
return obj && obj[state2] && obj[state2].hasOwnProperty(visualType)
}
_super.prototype.completeVisualOption.apply(this, arguments)
}
PiecewiseModel2.prototype._resetSelected = function (newOption, isInit) {
var thisOption = this.option
var pieceList = this._pieceList
var selected = (isInit ? thisOption : newOption).selected || {}
thisOption.selected = selected
each$f(
pieceList,
function (piece, index2) {
var key2 = this.getSelectedMapKey(piece)
if (!selected.hasOwnProperty(key2)) {
selected[key2] = true
}
},
this
)
if (thisOption.selectedMode === 'single') {
var hasSel_1 = false
each$f(
pieceList,
function (piece, index2) {
var key2 = this.getSelectedMapKey(piece)
if (selected[key2]) {
hasSel_1 ? (selected[key2] = false) : (hasSel_1 = true)
}
},
this
)
}
}
PiecewiseModel2.prototype.getItemSymbol = function () {
return this.get('itemSymbol')
}
PiecewiseModel2.prototype.getSelectedMapKey = function (piece) {
return this._mode === 'categories' ? piece.value + '' : piece.index + ''
}
PiecewiseModel2.prototype.getPieceList = function () {
return this._pieceList
}
PiecewiseModel2.prototype._determineMode = function () {
var option2 = this.option
return option2.pieces && option2.pieces.length > 0
? 'pieces'
: this.option.categories
? 'categories'
: 'splitNumber'
}
PiecewiseModel2.prototype.setSelected = function (selected) {
this.option.selected = clone$4(selected)
}
PiecewiseModel2.prototype.getValueState = function (value2) {
var index2 = VisualMapping$1.findPieceIndex(value2, this._pieceList)
return index2 != null
? this.option.selected[this.getSelectedMapKey(this._pieceList[index2])]
? 'inRange'
: 'outOfRange'
: 'outOfRange'
}
PiecewiseModel2.prototype.findTargetDataIndices = function (pieceIndex) {
var result = []
var pieceList = this._pieceList
this.eachTargetSeries(function (seriesModel) {
var dataIndices = []
var data2 = seriesModel.getData()
data2.each(
this.getDataDimensionIndex(data2),
function (value2, dataIndex) {
var pIdx = VisualMapping$1.findPieceIndex(value2, pieceList)
pIdx === pieceIndex && dataIndices.push(dataIndex)
},
this
)
result.push({
seriesId: seriesModel.id,
dataIndex: dataIndices,
})
}, this)
return result
}
PiecewiseModel2.prototype.getRepresentValue = function (piece) {
var representValue
if (this.isCategory()) {
representValue = piece.value
} else {
if (piece.value != null) {
representValue = piece.value
} else {
var pieceInterval = piece.interval || []
representValue =
pieceInterval[0] === -Infinity && pieceInterval[1] === Infinity
? 0
: (pieceInterval[0] + pieceInterval[1]) / 2
}
}
return representValue
}
PiecewiseModel2.prototype.getVisualMeta = function (getColorVisual2) {
if (this.isCategory()) {
return
}
var stops = []
var outerColors = ['', '']
var visualMapModel = this
function setStop(interval, valueState) {
var representValue = visualMapModel.getRepresentValue({
interval,
})
if (!valueState) {
valueState = visualMapModel.getValueState(representValue)
}
var color2 = getColorVisual2(representValue, valueState)
if (interval[0] === -Infinity) {
outerColors[0] = color2
} else if (interval[1] === Infinity) {
outerColors[1] = color2
} else {
stops.push(
{
value: interval[0],
color: color2,
},
{
value: interval[1],
color: color2,
}
)
}
}
var pieceList = this._pieceList.slice()
if (!pieceList.length) {
pieceList.push({
interval: [-Infinity, Infinity],
})
} else {
var edge = pieceList[0].interval[0]
edge !== -Infinity &&
pieceList.unshift({
interval: [-Infinity, edge],
})
edge = pieceList[pieceList.length - 1].interval[1]
edge !== Infinity &&
pieceList.push({
interval: [edge, Infinity],
})
}
var curr = -Infinity
each$f(
pieceList,
function (piece) {
var interval = piece.interval
if (interval) {
interval[0] > curr && setStop([curr, interval[0]], 'outOfRange')
setStop(interval.slice())
curr = interval[1]
}
},
this
)
return {
stops,
outerColors,
}
}
PiecewiseModel2.type = 'visualMap.piecewise'
PiecewiseModel2.defaultOption = inheritDefaultOption(
VisualMapModel$1.defaultOption,
{
selected: null,
minOpen: false,
maxOpen: false,
align: 'auto',
itemWidth: 20,
itemHeight: 14,
itemSymbol: 'roundRect',
pieces: null,
categories: null,
splitNumber: 5,
selectedMode: 'multiple',
itemGap: 10,
hoverLink: true,
}
)
return PiecewiseModel2
})(VisualMapModel$1)
var resetMethods = {
splitNumber: function (outPieceList) {
var thisOption = this.option
var precision = Math.min(thisOption.precision, 20)
var dataExtent = this.getExtent()
var splitNumber = thisOption.splitNumber
splitNumber = Math.max(parseInt(splitNumber, 10), 1)
thisOption.splitNumber = splitNumber
var splitStep = (dataExtent[1] - dataExtent[0]) / splitNumber
while (+splitStep.toFixed(precision) !== splitStep && precision < 5) {
precision++
}
thisOption.precision = precision
splitStep = +splitStep.toFixed(precision)
if (thisOption.minOpen) {
outPieceList.push({
interval: [-Infinity, dataExtent[0]],
close: [0, 0],
})
}
for (
var index2 = 0, curr = dataExtent[0];
index2 < splitNumber;
curr += splitStep, index2++
) {
var max3 = index2 === splitNumber - 1 ? dataExtent[1] : curr + splitStep
outPieceList.push({
interval: [curr, max3],
close: [1, 1],
})
}
if (thisOption.maxOpen) {
outPieceList.push({
interval: [dataExtent[1], Infinity],
close: [0, 0],
})
}
reformIntervals(outPieceList)
each$f(
outPieceList,
function (piece, index3) {
piece.index = index3
piece.text = this.formatValueText(piece.interval)
},
this
)
},
categories: function (outPieceList) {
var thisOption = this.option
each$f(
thisOption.categories,
function (cate) {
outPieceList.push({
text: this.formatValueText(cate, true),
value: cate,
})
},
this
)
normalizeReverse(thisOption, outPieceList)
},
pieces: function (outPieceList) {
var thisOption = this.option
each$f(
thisOption.pieces,
function (pieceListItem, index2) {
if (!isObject$b(pieceListItem)) {
pieceListItem = {
value: pieceListItem,
}
}
var item2 = {
text: '',
index: index2,
}
if (pieceListItem.label != null) {
item2.text = pieceListItem.label
}
if (pieceListItem.hasOwnProperty('value')) {
var value2 = (item2.value = pieceListItem.value)
item2.interval = [value2, value2]
item2.close = [1, 1]
} else {
var interval = (item2.interval = [])
var close_1 = (item2.close = [0, 0])
var closeList = [1, 0, 1]
var infinityList = [-Infinity, Infinity]
var useMinMax = []
for (var lg = 0; lg < 2; lg++) {
var names2 = [
['gte', 'gt', 'min'],
['lte', 'lt', 'max'],
][lg]
for (var i2 = 0; i2 < 3 && interval[lg] == null; i2++) {
interval[lg] = pieceListItem[names2[i2]]
close_1[lg] = closeList[i2]
useMinMax[lg] = i2 === 2
}
interval[lg] == null && (interval[lg] = infinityList[lg])
}
useMinMax[0] && interval[1] === Infinity && (close_1[0] = 0)
useMinMax[1] && interval[0] === -Infinity && (close_1[1] = 0)
if (interval[0] === interval[1] && close_1[0] && close_1[1]) {
item2.value = interval[0]
}
}
item2.visual = VisualMapping$1.retrieveVisuals(pieceListItem)
outPieceList.push(item2)
},
this
)
normalizeReverse(thisOption, outPieceList)
reformIntervals(outPieceList)
each$f(
outPieceList,
function (piece) {
var close2 = piece.close
var edgeSymbols = [
['<', '\u2264'][close2[1]],
['>', '\u2265'][close2[0]],
]
piece.text =
piece.text ||
this.formatValueText(
piece.value != null ? piece.value : piece.interval,
false,
edgeSymbols
)
},
this
)
},
}
function normalizeReverse(thisOption, pieceList) {
var inverse = thisOption.inverse
if (thisOption.orient === 'vertical' ? !inverse : inverse) {
pieceList.reverse()
}
}
var PiecewiseModel$1 = PiecewiseModel
var PiecewiseVisualMapView = (function (_super) {
__extends$2(PiecewiseVisualMapView2, _super)
function PiecewiseVisualMapView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = PiecewiseVisualMapView2.type
return _this
}
PiecewiseVisualMapView2.prototype.doRender = function () {
var thisGroup = this.group
thisGroup.removeAll()
var visualMapModel = this.visualMapModel
var textGap = visualMapModel.get('textGap')
var textStyleModel = visualMapModel.textStyleModel
var textFont = textStyleModel.getFont()
var textFill = textStyleModel.getTextColor()
var itemAlign = this._getItemAlign()
var itemSize2 = visualMapModel.itemSize
var viewData = this._getViewData()
var endsText = viewData.endsText
var showLabel = retrieve(visualMapModel.get('showLabel', true), !endsText)
endsText &&
this._renderEndsText(
thisGroup,
endsText[0],
itemSize2,
showLabel,
itemAlign
)
each$f(
viewData.viewPieceList,
function (item2) {
var piece = item2.piece
var itemGroup = new Group$5()
itemGroup.onclick = bind$1(this._onItemClick, this, piece)
this._enableHoverLink(itemGroup, item2.indexInModelPieceList)
var representValue = visualMapModel.getRepresentValue(piece)
this._createItemSymbol(itemGroup, representValue, [
0,
0,
itemSize2[0],
itemSize2[1],
])
if (showLabel) {
var visualState = this.visualMapModel.getValueState(representValue)
itemGroup.add(
new ZRText$1({
style: {
x: itemAlign === 'right' ? -textGap : itemSize2[0] + textGap,
y: itemSize2[1] / 2,
text: piece.text,
verticalAlign: 'middle',
align: itemAlign,
font: textFont,
fill: textFill,
opacity: visualState === 'outOfRange' ? 0.5 : 1,
},
})
)
}
thisGroup.add(itemGroup)
},
this
)
endsText &&
this._renderEndsText(
thisGroup,
endsText[1],
itemSize2,
showLabel,
itemAlign
)
box(visualMapModel.get('orient'), thisGroup, visualMapModel.get('itemGap'))
this.renderBackground(thisGroup)
this.positionGroup(thisGroup)
}
PiecewiseVisualMapView2.prototype._enableHoverLink = function (
itemGroup,
pieceIndex
) {
var _this = this
itemGroup
.on('mouseover', function () {
return onHoverLink('highlight')
})
.on('mouseout', function () {
return onHoverLink('downplay')
})
var onHoverLink = function (method4) {
var visualMapModel = _this.visualMapModel
visualMapModel.option.hoverLink &&
_this.api.dispatchAction({
type: method4,
batch: makeHighDownBatch(
visualMapModel.findTargetDataIndices(pieceIndex),
visualMapModel
),
})
}
}
PiecewiseVisualMapView2.prototype._getItemAlign = function () {
var visualMapModel = this.visualMapModel
var modelOption = visualMapModel.option
if (modelOption.orient === 'vertical') {
return getItemAlign(visualMapModel, this.api, visualMapModel.itemSize)
} else {
var align = modelOption.align
if (!align || align === 'auto') {
align = 'left'
}
return align
}
}
PiecewiseVisualMapView2.prototype._renderEndsText = function (
group,
text2,
itemSize2,
showLabel,
itemAlign
) {
if (!text2) {
return
}
var itemGroup = new Group$5()
var textStyleModel = this.visualMapModel.textStyleModel
itemGroup.add(
new ZRText$1({
style: createTextStyle$1(textStyleModel, {
x: showLabel
? itemAlign === 'right'
? itemSize2[0]
: 0
: itemSize2[0] / 2,
y: itemSize2[1] / 2,
verticalAlign: 'middle',
align: showLabel ? itemAlign : 'center',
text: text2,
}),
})
)
group.add(itemGroup)
}
PiecewiseVisualMapView2.prototype._getViewData = function () {
var visualMapModel = this.visualMapModel
var viewPieceList = map$1(
visualMapModel.getPieceList(),
function (piece, index2) {
return {
piece,
indexInModelPieceList: index2,
}
}
)
var endsText = visualMapModel.get('text')
var orient = visualMapModel.get('orient')
var inverse = visualMapModel.get('inverse')
if (orient === 'horizontal' ? inverse : !inverse) {
viewPieceList.reverse()
} else if (endsText) {
endsText = endsText.slice().reverse()
}
return {
viewPieceList,
endsText,
}
}
PiecewiseVisualMapView2.prototype._createItemSymbol = function (
group,
representValue,
shapeParam
) {
group.add(
createSymbol$1(
this.getControllerVisual(representValue, 'symbol'),
shapeParam[0],
shapeParam[1],
shapeParam[2],
shapeParam[3],
this.getControllerVisual(representValue, 'color')
)
)
}
PiecewiseVisualMapView2.prototype._onItemClick = function (piece) {
var visualMapModel = this.visualMapModel
var option2 = visualMapModel.option
var selectedMode = option2.selectedMode
if (!selectedMode) {
return
}
var selected = clone$4(option2.selected)
var newKey = visualMapModel.getSelectedMapKey(piece)
if (selectedMode === 'single' || selectedMode === true) {
selected[newKey] = true
each$f(selected, function (o2, key2) {
selected[key2] = key2 === newKey
})
} else {
selected[newKey] = !selected[newKey]
}
this.api.dispatchAction({
type: 'selectDataRange',
from: this.uid,
visualMapId: this.visualMapModel.id,
selected,
})
}
PiecewiseVisualMapView2.type = 'visualMap.piecewise'
return PiecewiseVisualMapView2
})(VisualMapView$1)
var PiecewiseView = PiecewiseVisualMapView
function install$6(registers) {
registers.registerComponentModel(PiecewiseModel$1)
registers.registerComponentView(PiecewiseView)
installCommon(registers)
}
function install$5(registers) {
use(install$7)
use(install$6)
}
var DEFAULT_OPTION = {
label: {
enabled: true,
},
decal: {
show: false,
},
}
var inner = makeInner()
var decalPaletteScope = {}
function ariaVisual(ecModel, api) {
var ariaModel = ecModel.getModel('aria')
if (!ariaModel.get('enabled')) {
return
}
var defaultOption2 = clone$4(DEFAULT_OPTION)
merge(defaultOption2.label, ecModel.getLocaleModel().get('aria'), false)
merge(ariaModel.option, defaultOption2, false)
setDecal()
setLabel()
function setDecal() {
var decalModel = ariaModel.getModel('decal')
var useDecal = decalModel.get('show')
if (useDecal) {
var paletteScopeGroupByType_1 = createHashMap()
ecModel.eachSeries(function (seriesModel) {
if (seriesModel.isColorBySeries()) {
return
}
var decalScope = paletteScopeGroupByType_1.get(seriesModel.type)
if (!decalScope) {
decalScope = {}
paletteScopeGroupByType_1.set(seriesModel.type, decalScope)
}
inner(seriesModel).scope = decalScope
})
ecModel.eachRawSeries(function (seriesModel) {
if (ecModel.isSeriesFiltered(seriesModel)) {
return
}
if (isFunction$4(seriesModel.enableAriaDecal)) {
seriesModel.enableAriaDecal()
return
}
var data2 = seriesModel.getData()
if (!seriesModel.isColorBySeries()) {
var dataAll_1 = seriesModel.getRawData()
var idxMap_1 = {}
var decalScope_1 = inner(seriesModel).scope
data2.each(function (idx) {
var rawIdx = data2.getRawIndex(idx)
idxMap_1[rawIdx] = idx
})
var dataCount_1 = dataAll_1.count()
dataAll_1.each(function (rawIdx) {
var idx = idxMap_1[rawIdx]
var name2 = dataAll_1.getName(rawIdx) || rawIdx + ''
var paletteDecal2 = getDecalFromPalette(
seriesModel.ecModel,
name2,
decalScope_1,
dataCount_1
)
var specifiedDecal2 = data2.getItemVisual(idx, 'decal')
data2.setItemVisual(
idx,
'decal',
mergeDecal(specifiedDecal2, paletteDecal2)
)
})
} else {
var paletteDecal = getDecalFromPalette(
seriesModel.ecModel,
seriesModel.name,
decalPaletteScope,
ecModel.getSeriesCount()
)
var specifiedDecal = data2.getVisual('decal')
data2.setVisual('decal', mergeDecal(specifiedDecal, paletteDecal))
}
function mergeDecal(specifiedDecal2, paletteDecal2) {
var resultDecal = specifiedDecal2
? extend(extend({}, paletteDecal2), specifiedDecal2)
: paletteDecal2
resultDecal.dirty = true
return resultDecal
}
})
}
}
function setLabel() {
var labelLocale = ecModel.getLocaleModel().get('aria')
var labelModel = ariaModel.getModel('label')
labelModel.option = defaults(labelModel.option, labelLocale)
if (!labelModel.get('enabled')) {
return
}
var dom = api.getZr().dom
if (labelModel.get('description')) {
dom.setAttribute('aria-label', labelModel.get('description'))
return
}
var seriesCnt = ecModel.getSeriesCount()
var maxDataCnt = labelModel.get(['data', 'maxCount']) || 10
var maxSeriesCnt = labelModel.get(['series', 'maxCount']) || 10
var displaySeriesCnt = Math.min(seriesCnt, maxSeriesCnt)
var ariaLabel
if (seriesCnt < 1) {
return
} else {
var title = getTitle2()
if (title) {
var withTitle = labelModel.get(['general', 'withTitle'])
ariaLabel = replace2(withTitle, {
title,
})
} else {
ariaLabel = labelModel.get(['general', 'withoutTitle'])
}
var seriesLabels_1 = []
var prefix =
seriesCnt > 1
? labelModel.get(['series', 'multiple', 'prefix'])
: labelModel.get(['series', 'single', 'prefix'])
ariaLabel += replace2(prefix, {
seriesCount: seriesCnt,
})
ecModel.eachSeries(function (seriesModel, idx) {
if (idx < displaySeriesCnt) {
var seriesLabel = void 0
var seriesName = seriesModel.get('name')
var withName = seriesName ? 'withName' : 'withoutName'
seriesLabel =
seriesCnt > 1
? labelModel.get(['series', 'multiple', withName])
: labelModel.get(['series', 'single', withName])
seriesLabel = replace2(seriesLabel, {
seriesId: seriesModel.seriesIndex,
seriesName: seriesModel.get('name'),
seriesType: getSeriesTypeName(seriesModel.subType),
})
var data2 = seriesModel.getData()
if (data2.count() > maxDataCnt) {
var partialLabel = labelModel.get(['data', 'partialData'])
seriesLabel += replace2(partialLabel, {
displayCnt: maxDataCnt,
})
} else {
seriesLabel += labelModel.get(['data', 'allData'])
}
var middleSeparator_1 = labelModel.get([
'data',
'separator',
'middle',
])
var endSeparator_1 = labelModel.get(['data', 'separator', 'end'])
var dataLabels = []
for (var i2 = 0; i2 < data2.count(); i2++) {
if (i2 < maxDataCnt) {
var name_1 = data2.getName(i2)
var value2 = data2.getValues(i2)
var dataLabel = labelModel.get([
'data',
name_1 ? 'withName' : 'withoutName',
])
dataLabels.push(
replace2(dataLabel, {
name: name_1,
value: value2.join(middleSeparator_1),
})
)
}
}
seriesLabel += dataLabels.join(middleSeparator_1) + endSeparator_1
seriesLabels_1.push(seriesLabel)
}
})
var separatorModel = labelModel.getModel([
'series',
'multiple',
'separator',
])
var middleSeparator = separatorModel.get('middle')
var endSeparator = separatorModel.get('end')
ariaLabel += seriesLabels_1.join(middleSeparator) + endSeparator
dom.setAttribute('aria-label', ariaLabel)
}
}
function replace2(str, keyValues) {
if (!isString$2(str)) {
return str
}
var result = str
each$f(keyValues, function (value2, key2) {
result = result.replace(
new RegExp('\\{\\s*' + key2 + '\\s*\\}', 'g'),
value2
)
})
return result
}
function getTitle2() {
var title = ecModel.get('title')
if (title && title.length) {
title = title[0]
}
return title && title.text
}
function getSeriesTypeName(type4) {
return (
ecModel.getLocaleModel().get(['series', 'typeNames'])[type4] ||
'\u81EA\u5B9A\u4E49\u56FE'
)
}
}
function ariaPreprocessor(option2) {
if (!option2 || !option2.aria) {
return
}
var aria = option2.aria
if (aria.show != null) {
aria.enabled = aria.show
}
aria.label = aria.label || {}
each$f(['description', 'general', 'series', 'data'], function (name2) {
if (aria[name2] != null) {
aria.label[name2] = aria[name2]
}
})
}
function install$4(registers) {
registers.registerPreprocessor(ariaPreprocessor)
registers.registerVisual(registers.PRIORITY.VISUAL.ARIA, ariaVisual)
}
var RELATIONAL_EXPRESSION_OP_ALIAS_MAP = {
value: 'eq',
'<': 'lt',
'<=': 'lte',
'>': 'gt',
'>=': 'gte',
'=': 'eq',
'!=': 'ne',
'<>': 'ne',
}
var RegExpEvaluator = (function () {
function RegExpEvaluator2(rVal) {
var condValue = (this._condVal = isString$2(rVal)
? new RegExp(rVal)
: isRegExp$1(rVal)
? rVal
: null)
if (condValue == null) {
var errMsg = ''
throwError(errMsg)
}
}
RegExpEvaluator2.prototype.evaluate = function (lVal) {
var type4 = typeof lVal
return isString$2(type4)
? this._condVal.test(lVal)
: isNumber$2(type4)
? this._condVal.test(lVal + '')
: false
}
return RegExpEvaluator2
})()
var ConstConditionInternal = (function () {
function ConstConditionInternal2() {}
ConstConditionInternal2.prototype.evaluate = function () {
return this.value
}
return ConstConditionInternal2
})()
var AndConditionInternal = (function () {
function AndConditionInternal2() {}
AndConditionInternal2.prototype.evaluate = function () {
var children = this.children
for (var i2 = 0; i2 < children.length; i2++) {
if (!children[i2].evaluate()) {
return false
}
}
return true
}
return AndConditionInternal2
})()
var OrConditionInternal = (function () {
function OrConditionInternal2() {}
OrConditionInternal2.prototype.evaluate = function () {
var children = this.children
for (var i2 = 0; i2 < children.length; i2++) {
if (children[i2].evaluate()) {
return true
}
}
return false
}
return OrConditionInternal2
})()
var NotConditionInternal = (function () {
function NotConditionInternal2() {}
NotConditionInternal2.prototype.evaluate = function () {
return !this.child.evaluate()
}
return NotConditionInternal2
})()
var RelationalConditionInternal = (function () {
function RelationalConditionInternal2() {}
RelationalConditionInternal2.prototype.evaluate = function () {
var needParse = !!this.valueParser
var getValue2 = this.getValue
var tarValRaw = getValue2(this.valueGetterParam)
var tarValParsed = needParse ? this.valueParser(tarValRaw) : null
for (var i2 = 0; i2 < this.subCondList.length; i2++) {
if (
!this.subCondList[i2].evaluate(needParse ? tarValParsed : tarValRaw)
) {
return false
}
}
return true
}
return RelationalConditionInternal2
})()
function parseOption(exprOption, getters2) {
if (exprOption === true || exprOption === false) {
var cond = new ConstConditionInternal()
cond.value = exprOption
return cond
}
var errMsg = ''
if (!isObjectNotArray(exprOption)) {
throwError(errMsg)
}
if (exprOption.and) {
return parseAndOrOption('and', exprOption, getters2)
} else if (exprOption.or) {
return parseAndOrOption('or', exprOption, getters2)
} else if (exprOption.not) {
return parseNotOption(exprOption, getters2)
}
return parseRelationalOption(exprOption, getters2)
}
function parseAndOrOption(op, exprOption, getters2) {
var subOptionArr = exprOption[op]
var errMsg = ''
if (!isArray$6(subOptionArr)) {
throwError(errMsg)
}
if (!subOptionArr.length) {
throwError(errMsg)
}
var cond =
op === 'and' ? new AndConditionInternal() : new OrConditionInternal()
cond.children = map$1(subOptionArr, function (subOption) {
return parseOption(subOption, getters2)
})
if (!cond.children.length) {
throwError(errMsg)
}
return cond
}
function parseNotOption(exprOption, getters2) {
var subOption = exprOption.not
var errMsg = ''
if (!isObjectNotArray(subOption)) {
throwError(errMsg)
}
var cond = new NotConditionInternal()
cond.child = parseOption(subOption, getters2)
if (!cond.child) {
throwError(errMsg)
}
return cond
}
function parseRelationalOption(exprOption, getters2) {
var errMsg = ''
var valueGetterParam = getters2.prepareGetValue(exprOption)
var subCondList = []
var exprKeys = keys$4(exprOption)
var parserName = exprOption.parser
var valueParser = parserName ? getRawValueParser(parserName) : null
for (var i2 = 0; i2 < exprKeys.length; i2++) {
var keyRaw = exprKeys[i2]
if (keyRaw === 'parser' || getters2.valueGetterAttrMap.get(keyRaw)) {
continue
}
var op = hasOwn$1(RELATIONAL_EXPRESSION_OP_ALIAS_MAP, keyRaw)
? RELATIONAL_EXPRESSION_OP_ALIAS_MAP[keyRaw]
: keyRaw
var condValueRaw = exprOption[keyRaw]
var condValueParsed = valueParser ? valueParser(condValueRaw) : condValueRaw
var evaluator =
createFilterComparator(op, condValueParsed) ||
(op === 'reg' && new RegExpEvaluator(condValueParsed))
if (!evaluator) {
throwError(errMsg)
}
subCondList.push(evaluator)
}
if (!subCondList.length) {
throwError(errMsg)
}
var cond = new RelationalConditionInternal()
cond.valueGetterParam = valueGetterParam
cond.valueParser = valueParser
cond.getValue = getters2.getValue
cond.subCondList = subCondList
return cond
}
function isObjectNotArray(val2) {
return isObject$b(val2) && !isArrayLike$3(val2)
}
var ConditionalExpressionParsed = (function () {
function ConditionalExpressionParsed2(exprOption, getters2) {
this._cond = parseOption(exprOption, getters2)
}
ConditionalExpressionParsed2.prototype.evaluate = function () {
return this._cond.evaluate()
}
return ConditionalExpressionParsed2
})()
function parseConditionalExpression(exprOption, getters2) {
return new ConditionalExpressionParsed(exprOption, getters2)
}
var filterTransform = {
type: 'echarts:filter',
transform: function (params2) {
var upstream = params2.upstream
var rawItem
var condition2 = parseConditionalExpression(params2.config, {
valueGetterAttrMap: createHashMap({
dimension: true,
}),
prepareGetValue: function (exprOption) {
var errMsg = ''
var dimLoose = exprOption.dimension
if (!hasOwn$1(exprOption, 'dimension')) {
throwError(errMsg)
}
var dimInfo = upstream.getDimensionInfo(dimLoose)
if (!dimInfo) {
throwError(errMsg)
}
return {
dimIdx: dimInfo.index,
}
},
getValue: function (param) {
return upstream.retrieveValueFromItem(rawItem, param.dimIdx)
},
})
var resultData = []
for (var i2 = 0, len2 = upstream.count(); i2 < len2; i2++) {
rawItem = upstream.getRawDataItem(i2)
if (condition2.evaluate()) {
resultData.push(rawItem)
}
}
return {
data: resultData,
}
},
}
var sortTransform = {
type: 'echarts:sort',
transform: function (params2) {
var upstream = params2.upstream
var config2 = params2.config
var errMsg = ''
var orderExprList = normalizeToArray(config2)
if (!orderExprList.length) {
throwError(errMsg)
}
var orderDefList = []
each$f(orderExprList, function (orderExpr) {
var dimLoose = orderExpr.dimension
var order2 = orderExpr.order
var parserName = orderExpr.parser
var incomparable = orderExpr.incomparable
if (dimLoose == null) {
throwError(errMsg)
}
if (order2 !== 'asc' && order2 !== 'desc') {
throwError(errMsg)
}
if (incomparable && incomparable !== 'min' && incomparable !== 'max') {
var errMsg_1 = ''
throwError(errMsg_1)
}
if (order2 !== 'asc' && order2 !== 'desc') {
var errMsg_2 = ''
throwError(errMsg_2)
}
var dimInfo = upstream.getDimensionInfo(dimLoose)
if (!dimInfo) {
throwError(errMsg)
}
var parser2 = parserName ? getRawValueParser(parserName) : null
if (parserName && !parser2) {
throwError(errMsg)
}
orderDefList.push({
dimIdx: dimInfo.index,
parser: parser2,
comparator: new SortOrderComparator(order2, incomparable),
})
})
var sourceFormat = upstream.sourceFormat
if (
sourceFormat !== SOURCE_FORMAT_ARRAY_ROWS &&
sourceFormat !== SOURCE_FORMAT_OBJECT_ROWS
) {
throwError(errMsg)
}
var resultData = []
for (var i2 = 0, len2 = upstream.count(); i2 < len2; i2++) {
resultData.push(upstream.getRawDataItem(i2))
}
resultData.sort(function (item0, item1) {
for (var i3 = 0; i3 < orderDefList.length; i3++) {
var orderDef = orderDefList[i3]
var val0 = upstream.retrieveValueFromItem(item0, orderDef.dimIdx)
var val1 = upstream.retrieveValueFromItem(item1, orderDef.dimIdx)
if (orderDef.parser) {
val0 = orderDef.parser(val0)
val1 = orderDef.parser(val1)
}
var result = orderDef.comparator.evaluate(val0, val1)
if (result !== 0) {
return result
}
}
return 0
})
return {
data: resultData,
}
},
}
function install$3(registers) {
registers.registerTransform(filterTransform)
registers.registerTransform(sortTransform)
}
var DatasetModel = (function (_super) {
__extends$2(DatasetModel2, _super)
function DatasetModel2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = 'dataset'
return _this
}
DatasetModel2.prototype.init = function (option2, parentModel, ecModel) {
_super.prototype.init.call(this, option2, parentModel, ecModel)
this._sourceManager = new SourceManager(this)
disableTransformOptionMerge(this)
}
DatasetModel2.prototype.mergeOption = function (newOption, ecModel) {
_super.prototype.mergeOption.call(this, newOption, ecModel)
disableTransformOptionMerge(this)
}
DatasetModel2.prototype.optionUpdated = function () {
this._sourceManager.dirty()
}
DatasetModel2.prototype.getSourceManager = function () {
return this._sourceManager
}
DatasetModel2.type = 'dataset'
DatasetModel2.defaultOption = {
seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN,
}
return DatasetModel2
})(ComponentModel$1)
var DatasetView = (function (_super) {
__extends$2(DatasetView2, _super)
function DatasetView2() {
var _this = (_super !== null && _super.apply(this, arguments)) || this
_this.type = 'dataset'
return _this
}
DatasetView2.type = 'dataset'
return DatasetView2
})(ComponentView$1)
function install$2(registers) {
registers.registerComponentModel(DatasetModel)
registers.registerComponentView(DatasetView)
}
var mathSin = Math.sin
var mathCos = Math.cos
var PI = Math.PI
var PI2 = Math.PI * 2
var degree = 180 / PI
var SVGPathRebuilder = (function () {
function SVGPathRebuilder2() {}
SVGPathRebuilder2.prototype.reset = function (precision) {
this._start = true
this._d = []
this._str = ''
this._p = Math.pow(10, precision || 4)
}
SVGPathRebuilder2.prototype.moveTo = function (x2, y2) {
this._add('M', x2, y2)
}
SVGPathRebuilder2.prototype.lineTo = function (x2, y2) {
this._add('L', x2, y2)
}
SVGPathRebuilder2.prototype.bezierCurveTo = function (
x2,
y2,
x22,
y22,
x3,
y3
) {
this._add('C', x2, y2, x22, y22, x3, y3)
}
SVGPathRebuilder2.prototype.quadraticCurveTo = function (x2, y2, x22, y22) {
this._add('Q', x2, y2, x22, y22)
}
SVGPathRebuilder2.prototype.arc = function (
cx,
cy,
r2,
startAngle,
endAngle,
anticlockwise
) {
this.ellipse(cx, cy, r2, r2, 0, startAngle, endAngle, anticlockwise)
}
SVGPathRebuilder2.prototype.ellipse = function (
cx,
cy,
rx,
ry,
psi,
startAngle,
endAngle,
anticlockwise
) {
var dTheta = endAngle - startAngle
var clockwise = !anticlockwise
var dThetaPositive = Math.abs(dTheta)
var isCircle =
isAroundZero(dThetaPositive - PI2) ||
(clockwise ? dTheta >= PI2 : -dTheta >= PI2)
var unifiedTheta = dTheta > 0 ? dTheta % PI2 : (dTheta % PI2) + PI2
var large = false
if (isCircle) {
large = true
} else if (isAroundZero(dThetaPositive)) {
large = false
} else {
large = unifiedTheta >= PI === !!clockwise
}
var x0 = cx + rx * mathCos(startAngle)
var y0 = cy + ry * mathSin(startAngle)
if (this._start) {
this._add('M', x0, y0)
}
var xRot = Math.round(psi * degree)
if (isCircle) {
var p2 = 1 / this._p
var dTheta_1 = (clockwise ? 1 : -1) * (PI2 - p2)
this._add(
'A',
rx,
ry,
xRot,
1,
+clockwise,
cx + rx * mathCos(startAngle + dTheta_1),
cy + ry * mathSin(startAngle + dTheta_1)
)
if (p2 > 0.01) {
this._add('A', rx, ry, xRot, 0, +clockwise, x0, y0)
}
} else {
var x2 = cx + rx * mathCos(endAngle)
var y2 = cy + ry * mathSin(endAngle)
this._add('A', rx, ry, xRot, +large, +clockwise, x2, y2)
}
}
SVGPathRebuilder2.prototype.rect = function (x2, y2, w2, h2) {
this._add('M', x2, y2)
this._add('l', w2, 0)
this._add('l', 0, h2)
this._add('l', -w2, 0)
this._add('Z')
}
SVGPathRebuilder2.prototype.closePath = function () {
if (this._d.length > 0) {
this._add('Z')
}
}
SVGPathRebuilder2.prototype._add = function (
cmd,
a2,
b2,
c2,
d3,
e2,
f2,
g2,
h2
) {
var vals = []
var p2 = this._p
for (var i2 = 1; i2 < arguments.length; i2++) {
var val2 = arguments[i2]
if (isNaN(val2)) {
this._invalid = true
return
}
vals.push(Math.round(val2 * p2) / p2)
}
this._d.push(cmd + vals.join(' '))
this._start = cmd === 'Z'
}
SVGPathRebuilder2.prototype.generateStr = function () {
this._str = this._invalid ? '' : this._d.join('')
this._d = []
}
SVGPathRebuilder2.prototype.getStr = function () {
return this._str
}
return SVGPathRebuilder2
})()
var SVGPathRebuilder$1 = SVGPathRebuilder
var NONE = 'none'
var mathRound = Math.round
function pathHasFill(style2) {
var fill = style2.fill
return fill != null && fill !== NONE
}
function pathHasStroke(style2) {
var stroke = style2.stroke
return stroke != null && stroke !== NONE
}
var strokeProps = ['lineCap', 'miterLimit', 'lineJoin']
var svgStrokeProps = map$1(strokeProps, function (prop) {
return 'stroke-' + prop.toLowerCase()
})
function mapStyleToAttrs(updateAttr2, style2, el2, forceUpdate) {
var opacity2 = style2.opacity == null ? 1 : style2.opacity
if (el2 instanceof ZRImage$1) {
updateAttr2('opacity', opacity2)
return
}
if (pathHasFill(style2)) {
var fill = normalizeColor(style2.fill)
updateAttr2('fill', fill.color)
var fillOpacity =
style2.fillOpacity != null
? style2.fillOpacity * fill.opacity * opacity2
: fill.opacity * opacity2
if (forceUpdate || fillOpacity < 1) {
updateAttr2('fill-opacity', fillOpacity)
}
} else {
updateAttr2('fill', NONE)
}
if (pathHasStroke(style2)) {
var stroke = normalizeColor(style2.stroke)
updateAttr2('stroke', stroke.color)
var strokeScale = style2.strokeNoScale ? el2.getLineScale() : 1
var strokeWidth = strokeScale ? (style2.lineWidth || 0) / strokeScale : 0
var strokeOpacity =
style2.strokeOpacity != null
? style2.strokeOpacity * stroke.opacity * opacity2
: stroke.opacity * opacity2
var strokeFirst = style2.strokeFirst
if (forceUpdate || strokeWidth !== 1) {
updateAttr2('stroke-width', strokeWidth)
}
if (forceUpdate || strokeFirst) {
updateAttr2('paint-order', strokeFirst ? 'stroke' : 'fill')
}
if (forceUpdate || strokeOpacity < 1) {
updateAttr2('stroke-opacity', strokeOpacity)
}
if (style2.lineDash) {
var _a2 = getLineDash(el2),
lineDash = _a2[0],
lineDashOffset = _a2[1]
if (lineDash) {
lineDashOffset = mathRound(lineDashOffset || 0)
updateAttr2('stroke-dasharray', lineDash.join(','))
if (lineDashOffset || forceUpdate) {
updateAttr2('stroke-dashoffset', lineDashOffset)
}
}
} else if (forceUpdate) {
updateAttr2('stroke-dasharray', NONE)
}
for (var i2 = 0; i2 < strokeProps.length; i2++) {
var propName = strokeProps[i2]
if (forceUpdate || style2[propName] !== DEFAULT_PATH_STYLE[propName]) {
var val2 = style2[propName] || DEFAULT_PATH_STYLE[propName]
val2 && updateAttr2(svgStrokeProps[i2], val2)
}
}
} else if (forceUpdate) {
updateAttr2('stroke', NONE)
}
}
var SVGNS = 'http://www.w3.org/2000/svg'
var XLINKNS = 'http://www.w3.org/1999/xlink'
var XMLNS = 'http://www.w3.org/2000/xmlns/'
var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace'
function createElement(name2) {
return document.createElementNS(SVGNS, name2)
}
function createVNode(tag, key2, attrs, children, text2) {
return {
tag,
attrs: attrs || {},
children,
text: text2,
key: key2,
}
}
function createElementOpen(name2, attrs) {
var attrsStr = []
if (attrs) {
for (var key2 in attrs) {
var val2 = attrs[key2]
var part = key2
if (val2 === false) {
continue
} else if (val2 !== true && val2 != null) {
part += '="' + val2 + '"'
}
attrsStr.push(part)
}
}
return '<' + name2 + ' ' + attrsStr.join(' ') + '>'
}
function createElementClose(name2) {
return '' + name2 + '>'
}
function vNodeToString(el2, opts) {
opts = opts || {}
var S2 = opts.newline ? '\n' : ''
function convertElToString(el3) {
var children = el3.children,
tag = el3.tag,
attrs = el3.attrs,
text2 = el3.text
return (
createElementOpen(tag, attrs) +
(tag !== 'style' ? encodeHTML(text2) : text2 || '') +
(children
? '' +
S2 +
map$1(children, function (child) {
return convertElToString(child)
}).join(S2) +
S2
: '') +
createElementClose(tag)
)
}
return convertElToString(el2)
}
function getCssString(selectorNodes, animationNodes, opts) {
opts = opts || {}
var S2 = opts.newline ? '\n' : ''
var bracketBegin = ' {' + S2
var bracketEnd = S2 + '}'
var selectors = map$1(keys$4(selectorNodes), function (className) {
return (
className +
bracketBegin +
map$1(keys$4(selectorNodes[className]), function (attrName) {
return attrName + ':' + selectorNodes[className][attrName] + ';'
}).join(S2) +
bracketEnd
)
}).join(S2)
var animations = map$1(keys$4(animationNodes), function (animationName) {
return (
'@keyframes ' +
animationName +
bracketBegin +
map$1(keys$4(animationNodes[animationName]), function (percent) {
return (
percent +
bracketBegin +
map$1(
keys$4(animationNodes[animationName][percent]),
function (attrName) {
var val2 = animationNodes[animationName][percent][attrName]
if (attrName === 'd') {
val2 = 'path("' + val2 + '")'
}
return attrName + ':' + val2 + ';'
}
).join(S2) +
bracketEnd
)
}).join(S2) +
bracketEnd
)
}).join(S2)
if (!selectors && !animations) {
return ''
}
return [''].join(S2)
}
function createBrushScope(zrId) {
return {
zrId,
shadowCache: {},
patternCache: {},
gradientCache: {},
clipPathCache: {},
defs: {},
cssNodes: {},
cssAnims: {},
cssClassIdx: 0,
cssAnimIdx: 0,
shadowIdx: 0,
gradientIdx: 0,
patternIdx: 0,
clipPathIdx: 0,
}
}
function createSVGVNode(width, height, children, useViewBox) {
return createVNode(
'svg',
'root',
{
width: width,
height: height,
xmlns: SVGNS,
'xmlns:xlink': XLINKNS,
version: '1.1',
baseProfile: 'full',
viewBox: useViewBox ? '0 0 ' + width + ' ' + height : false,
},
children
)
}
var EASING_MAP = {
cubicIn: '0.32,0,0.67,0',
cubicOut: '0.33,1,0.68,1',
cubicInOut: '0.65,0,0.35,1',
quadraticIn: '0.11,0,0.5,0',
quadraticOut: '0.5,1,0.89,1',
quadraticInOut: '0.45,0,0.55,1',
quarticIn: '0.5,0,0.75,0',
quarticOut: '0.25,1,0.5,1',
quarticInOut: '0.76,0,0.24,1',
quinticIn: '0.64,0,0.78,0',
quinticOut: '0.22,1,0.36,1',
quinticInOut: '0.83,0,0.17,1',
sinusoidalIn: '0.12,0,0.39,0',
sinusoidalOut: '0.61,1,0.88,1',
sinusoidalInOut: '0.37,0,0.63,1',
exponentialIn: '0.7,0,0.84,0',
exponentialOut: '0.16,1,0.3,1',
exponentialInOut: '0.87,0,0.13,1',
circularIn: '0.55,0,1,0.45',
circularOut: '0,0.55,0.45,1',
circularInOut: '0.85,0,0.15,1',
}
var transformOriginKey = 'transform-origin'
function buildPathString(el2, kfShape, path) {
var shape = extend({}, el2.shape)
extend(shape, kfShape)
el2.buildPath(path, shape)
var svgPathBuilder = new SVGPathRebuilder$1()
svgPathBuilder.reset(getPathPrecision(el2))
path.rebuildPath(svgPathBuilder, 1)
svgPathBuilder.generateStr()
return svgPathBuilder.getStr()
}
function setTransformOrigin(target2, transform3) {
var originX = transform3.originX,
originY = transform3.originY
if (originX || originY) {
target2[transformOriginKey] = originX + 'px ' + originY + 'px'
}
}
var ANIMATE_STYLE_MAP = {
fill: 'fill',
opacity: 'opacity',
lineWidth: 'stroke-width',
lineDashOffset: 'stroke-dashoffset',
}
function addAnimation(cssAnim, scope) {
var animationName = scope.zrId + '-ani-' + scope.cssAnimIdx++
scope.cssAnims[animationName] = cssAnim
return animationName
}
function createCompoundPathCSSAnimation(el2, attrs, scope) {
var paths = el2.shape.paths
var composedAnim = {}
var cssAnimationCfg
var cssAnimationName
each$f(paths, function (path) {
var subScope = createBrushScope(scope.zrId)
subScope.animation = true
createCSSAnimation(path, {}, subScope, true)
var cssAnims = subScope.cssAnims
var cssNodes = subScope.cssNodes
var animNames = keys$4(cssAnims)
var len2 = animNames.length
if (!len2) {
return
}
cssAnimationName = animNames[len2 - 1]
var lastAnim = cssAnims[cssAnimationName]
for (var percent in lastAnim) {
var kf = lastAnim[percent]
composedAnim[percent] = composedAnim[percent] || { d: '' }
composedAnim[percent].d += kf.d || ''
}
for (var className in cssNodes) {
var val2 = cssNodes[className].animation
if (val2.indexOf(cssAnimationName) >= 0) {
cssAnimationCfg = val2
}
}
})
if (!cssAnimationCfg) {
return
}
attrs.d = false
var animationName = addAnimation(composedAnim, scope)
return cssAnimationCfg.replace(cssAnimationName, animationName)
}
function getEasingFunc(easing) {
return isString$2(easing)
? EASING_MAP[easing]
? 'cubic-bezier(' + EASING_MAP[easing] + ')'
: createCubicEasingFunc(easing)
? easing
: ''
: ''
}
function createCSSAnimation(el2, attrs, scope, onlyShape) {
var animators = el2.animators
var len2 = animators.length
var cssAnimations = []
if (el2 instanceof CompoundPath$1) {
var animationCfg = createCompoundPathCSSAnimation(el2, attrs, scope)
if (animationCfg) {
cssAnimations.push(animationCfg)
} else if (!len2) {
return
}
} else if (!len2) {
return
}
var groupAnimators = {}
for (var i2 = 0; i2 < len2; i2++) {
var animator = animators[i2]
var cfgArr = [animator.getMaxTime() / 1e3 + 's']
var easing = getEasingFunc(animator.getClip().easing)
var delay2 = animator.getDelay()
if (easing) {
cfgArr.push(easing)
} else {
cfgArr.push('linear')
}
if (delay2) {
cfgArr.push(delay2 / 1e3 + 's')
}
if (animator.getLoop()) {
cfgArr.push('infinite')
}
var cfg = cfgArr.join(' ')
groupAnimators[cfg] = groupAnimators[cfg] || [cfg, []]
groupAnimators[cfg][1].push(animator)
}
function createSingleCSSAnimation(groupAnimator) {
var animators2 = groupAnimator[1]
var len3 = animators2.length
var transformKfs = {}
var shapeKfs = {}
var finalKfs = {}
var animationTimingFunctionAttrName = 'animation-timing-function'
function saveAnimatorTrackToCssKfs(animator3, cssKfs, toCssAttrName) {
var tracks = animator3.getTracks()
var maxTime = animator3.getMaxTime()
for (var k2 = 0; k2 < tracks.length; k2++) {
var track2 = tracks[k2]
if (track2.needsAnimate()) {
var kfs = track2.keyframes
var attrName = track2.propName
toCssAttrName && (attrName = toCssAttrName(attrName))
if (attrName) {
for (var i4 = 0; i4 < kfs.length; i4++) {
var kf = kfs[i4]
var percent2 = Math.round((kf.time / maxTime) * 100) + '%'
var kfEasing = getEasingFunc(kf.easing)
var rawValue = kf.rawValue
if (isString$2(rawValue) || isNumber$2(rawValue)) {
cssKfs[percent2] = cssKfs[percent2] || {}
cssKfs[percent2][attrName] = kf.rawValue
if (kfEasing) {
cssKfs[percent2][animationTimingFunctionAttrName] = kfEasing
}
}
}
}
}
}
}
for (var i3 = 0; i3 < len3; i3++) {
var animator2 = animators2[i3]
var targetProp = animator2.targetName
if (!targetProp) {
!onlyShape && saveAnimatorTrackToCssKfs(animator2, transformKfs)
} else if (targetProp === 'shape') {
saveAnimatorTrackToCssKfs(animator2, shapeKfs)
}
}
for (var percent in transformKfs) {
var transform3 = {}
copyTransform(transform3, el2)
extend(transform3, transformKfs[percent])
var str = getSRTTransformString(transform3)
var timingFunction =
transformKfs[percent][animationTimingFunctionAttrName]
finalKfs[percent] = str
? {
transform: str,
}
: {}
setTransformOrigin(finalKfs[percent], transform3)
if (timingFunction) {
finalKfs[percent][animationTimingFunctionAttrName] = timingFunction
}
}
var path
var canAnimateShape = true
for (var percent in shapeKfs) {
finalKfs[percent] = finalKfs[percent] || {}
var isFirst = !path
var timingFunction = shapeKfs[percent][animationTimingFunctionAttrName]
if (isFirst) {
path = new PathProxy$1()
}
var len_1 = path.len()
path.reset()
finalKfs[percent].d = buildPathString(el2, shapeKfs[percent], path)
var newLen = path.len()
if (!isFirst && len_1 !== newLen) {
canAnimateShape = false
break
}
if (timingFunction) {
finalKfs[percent][animationTimingFunctionAttrName] = timingFunction
}
}
if (!canAnimateShape) {
for (var percent in finalKfs) {
delete finalKfs[percent].d
}
}
if (!onlyShape) {
for (var i3 = 0; i3 < len3; i3++) {
var animator2 = animators2[i3]
var targetProp = animator2.targetName
if (targetProp === 'style') {
saveAnimatorTrackToCssKfs(animator2, finalKfs, function (propName) {
return ANIMATE_STYLE_MAP[propName]
})
}
}
}
var percents = keys$4(finalKfs)
var allTransformOriginSame = true
var transformOrigin2
for (var i3 = 1; i3 < percents.length; i3++) {
var p0 = percents[i3 - 1]
var p1 = percents[i3]
if (
finalKfs[p0][transformOriginKey] !== finalKfs[p1][transformOriginKey]
) {
allTransformOriginSame = false
break
}
transformOrigin2 = finalKfs[p0][transformOriginKey]
}
if (allTransformOriginSame && transformOrigin2) {
for (var percent in finalKfs) {
if (finalKfs[percent][transformOriginKey]) {
delete finalKfs[percent][transformOriginKey]
}
}
attrs[transformOriginKey] = transformOrigin2
}
if (
filter(percents, function (percent2) {
return keys$4(finalKfs[percent2]).length > 0
}).length
) {
var animationName = addAnimation(finalKfs, scope)
return animationName + ' ' + groupAnimator[0] + ' both'
}
}
for (var key2 in groupAnimators) {
var animationCfg = createSingleCSSAnimation(groupAnimators[key2])
if (animationCfg) {
cssAnimations.push(animationCfg)
}
}
if (cssAnimations.length) {
var className = scope.zrId + '-cls-' + scope.cssClassIdx++
scope.cssNodes['.' + className] = {
animation: cssAnimations.join(','),
}
attrs['class'] = className
}
}
var round = Math.round
function isImageLike(val2) {
return val2 && isString$2(val2.src)
}
function isCanvasLike(val2) {
return val2 && isFunction$4(val2.toDataURL)
}
function setStyleAttrs(attrs, style2, el2, scope) {
mapStyleToAttrs(
function (key2, val2) {
var isFillStroke = key2 === 'fill' || key2 === 'stroke'
if (isFillStroke && isGradient(val2)) {
setGradient(style2, attrs, key2, scope)
} else if (isFillStroke && isPattern(val2)) {
setPattern(el2, attrs, key2, scope)
} else {
attrs[key2] = val2
}
},
style2,
el2,
false
)
setShadow(el2, attrs, scope)
}
function noRotateScale(m2) {
return (
isAroundZero(m2[0] - 1) &&
isAroundZero(m2[1]) &&
isAroundZero(m2[2]) &&
isAroundZero(m2[3] - 1)
)
}
function noTranslate(m2) {
return isAroundZero(m2[4]) && isAroundZero(m2[5])
}
function setTransform(attrs, m2, compress) {
if (m2 && !(noTranslate(m2) && noRotateScale(m2))) {
var mul2 = compress ? 10 : 1e4
attrs.transform = noRotateScale(m2)
? 'translate(' +
round(m2[4] * mul2) / mul2 +
' ' +
round(m2[5] * mul2) / mul2 +
')'
: getMatrixStr(m2)
}
}
function convertPolyShape(shape, attrs, mul2) {
var points2 = shape.points
var strArr = []
for (var i2 = 0; i2 < points2.length; i2++) {
strArr.push(round(points2[i2][0] * mul2) / mul2)
strArr.push(round(points2[i2][1] * mul2) / mul2)
}
attrs.points = strArr.join(' ')
}
function validatePolyShape(shape) {
return !shape.smooth
}
function createAttrsConvert(desc) {
var normalizedDesc = map$1(desc, function (item2) {
return typeof item2 === 'string' ? [item2, item2] : item2
})
return function (shape, attrs, mul2) {
for (var i2 = 0; i2 < normalizedDesc.length; i2++) {
var item2 = normalizedDesc[i2]
var val2 = shape[item2[0]]
if (val2 != null) {
attrs[item2[1]] = round(val2 * mul2) / mul2
}
}
}
}
var builtinShapesDef = {
circle: [createAttrsConvert(['cx', 'cy', 'r'])],
polyline: [convertPolyShape, validatePolyShape],
polygon: [convertPolyShape, validatePolyShape],
}
function hasShapeAnimation(el2) {
var animators = el2.animators
for (var i2 = 0; i2 < animators.length; i2++) {
if (animators[i2].targetName === 'shape') {
return true
}
}
return false
}
function brushSVGPath(el2, scope) {
var style2 = el2.style
var shape = el2.shape
var builtinShpDef = builtinShapesDef[el2.type]
var attrs = {}
var needsAnimate = scope.animation
var svgElType = 'path'
var strokePercent = el2.style.strokePercent
var precision = (scope.compress && getPathPrecision(el2)) || 4
if (
builtinShpDef &&
!scope.willUpdate &&
!(builtinShpDef[1] && !builtinShpDef[1](shape)) &&
!(needsAnimate && hasShapeAnimation(el2)) &&
!(strokePercent < 1)
) {
svgElType = el2.type
var mul2 = Math.pow(10, precision)
builtinShpDef[0](shape, attrs, mul2)
} else {
var needBuildPath = !el2.path || el2.shapeChanged()
if (!el2.path) {
el2.createPathProxy()
}
var path = el2.path
if (needBuildPath) {
path.beginPath()
el2.buildPath(path, el2.shape)
el2.pathUpdated()
}
var pathVersion = path.getVersion()
var elExt = el2
var svgPathBuilder = elExt.__svgPathBuilder
if (
elExt.__svgPathVersion !== pathVersion ||
!svgPathBuilder ||
strokePercent !== elExt.__svgPathStrokePercent
) {
if (!svgPathBuilder) {
svgPathBuilder = elExt.__svgPathBuilder = new SVGPathRebuilder$1()
}
svgPathBuilder.reset(precision)
path.rebuildPath(svgPathBuilder, strokePercent)
svgPathBuilder.generateStr()
elExt.__svgPathVersion = pathVersion
elExt.__svgPathStrokePercent = strokePercent
}
attrs.d = svgPathBuilder.getStr()
}
setTransform(attrs, el2.transform)
setStyleAttrs(attrs, style2, el2, scope)
scope.animation && createCSSAnimation(el2, attrs, scope)
return createVNode(svgElType, el2.id + '', attrs)
}
function brushSVGImage(el2, scope) {
var style2 = el2.style
var image2 = style2.image
if (image2 && !isString$2(image2)) {
if (isImageLike(image2)) {
image2 = image2.src
} else if (isCanvasLike(image2)) {
image2 = image2.toDataURL()
}
}
if (!image2) {
return
}
var x2 = style2.x || 0
var y2 = style2.y || 0
var dw = style2.width
var dh = style2.height
var attrs = {
href: image2,
width: dw,
height: dh,
}
if (x2) {
attrs.x = x2
}
if (y2) {
attrs.y = y2
}
setTransform(attrs, el2.transform)
setStyleAttrs(attrs, style2, el2, scope)
scope.animation && createCSSAnimation(el2, attrs, scope)
return createVNode('image', el2.id + '', attrs)
}
function brushSVGTSpan(el2, scope) {
var style2 = el2.style
var text2 = style2.text
text2 != null && (text2 += '')
if (!text2 || isNaN(style2.x) || isNaN(style2.y)) {
return
}
var font2 = style2.font || DEFAULT_FONT
var x2 = style2.x || 0
var y2 = adjustTextY$1(
style2.y || 0,
getLineHeight(font2),
style2.textBaseline
)
var textAlign2 = TEXT_ALIGN_TO_ANCHOR[style2.textAlign] || style2.textAlign
var attrs = {
'dominant-baseline': 'central',
'text-anchor': textAlign2,
}
if (hasSeparateFont(style2)) {
var separatedFontStr = ''
var fontStyle2 = style2.fontStyle
var fontSize2 = parseFontSize(style2.fontSize)
if (!parseFloat(fontSize2)) {
return
}
var fontFamily2 = style2.fontFamily || DEFAULT_FONT_FAMILY
var fontWeight2 = style2.fontWeight
separatedFontStr +=
'font-size:' + fontSize2 + ';font-family:' + fontFamily2 + ';'
if (fontStyle2 && fontStyle2 !== 'normal') {
separatedFontStr += 'font-style:' + fontStyle2 + ';'
}
if (fontWeight2 && fontWeight2 !== 'normal') {
separatedFontStr += 'font-weight:' + fontWeight2 + ';'
}
attrs.style = separatedFontStr
} else {
attrs.style = 'font: ' + font2
}
if (text2.match(/\s/)) {
attrs['xml:space'] = 'preserve'
}
if (x2) {
attrs.x = x2
}
if (y2) {
attrs.y = y2
}
setTransform(attrs, el2.transform)
setStyleAttrs(attrs, style2, el2, scope)
scope.animation && createCSSAnimation(el2, attrs, scope)
return createVNode('text', el2.id + '', attrs, void 0, text2)
}
function brush(el2, scope) {
if (el2 instanceof Path$1) {
return brushSVGPath(el2, scope)
} else if (el2 instanceof ZRImage$1) {
return brushSVGImage(el2, scope)
} else if (el2 instanceof TSpan$1) {
return brushSVGTSpan(el2, scope)
}
}
function setShadow(el2, attrs, scope) {
var style2 = el2.style
if (hasShadow(style2)) {
var shadowKey = getShadowKey(el2)
var shadowCache = scope.shadowCache
var shadowId = shadowCache[shadowKey]
if (!shadowId) {
var globalScale = el2.getGlobalScale()
var scaleX = globalScale[0]
var scaleY = globalScale[1]
if (!scaleX || !scaleY) {
return
}
var offsetX = style2.shadowOffsetX || 0
var offsetY = style2.shadowOffsetY || 0
var blur_1 = style2.shadowBlur
var _a2 = normalizeColor(style2.shadowColor),
opacity2 = _a2.opacity,
color2 = _a2.color
var stdDx = blur_1 / 2 / scaleX
var stdDy = blur_1 / 2 / scaleY
var stdDeviation2 = stdDx + ' ' + stdDy
shadowId = scope.zrId + '-s' + scope.shadowIdx++
scope.defs[shadowId] = createVNode(
'filter',
shadowId,
{
id: shadowId,
x: '-100%',
y: '-100%',
width: '300%',
height: '300%',
},
[
createVNode('feDropShadow', '', {
dx: offsetX / scaleX,
dy: offsetY / scaleY,
stdDeviation: stdDeviation2,
'flood-color': color2,
'flood-opacity': opacity2,
}),
]
)
shadowCache[shadowKey] = shadowId
}
attrs.filter = getIdURL(shadowId)
}
}
function setGradient(style2, attrs, target2, scope) {
var val2 = style2[target2]
var gradientTag
var gradientAttrs = {
gradientUnits: val2.global ? 'userSpaceOnUse' : 'objectBoundingBox',
}
if (isLinearGradient(val2)) {
gradientTag = 'linearGradient'
gradientAttrs.x1 = val2.x
gradientAttrs.y1 = val2.y
gradientAttrs.x2 = val2.x2
gradientAttrs.y2 = val2.y2
} else if (isRadialGradient(val2)) {
gradientTag = 'radialGradient'
gradientAttrs.cx = retrieve2(val2.x, 0.5)
gradientAttrs.cy = retrieve2(val2.y, 0.5)
gradientAttrs.r = retrieve2(val2.r, 0.5)
} else {
return
}
var colors = val2.colorStops
var colorStops = []
for (var i2 = 0, len2 = colors.length; i2 < len2; ++i2) {
var offset2 = round4(colors[i2].offset) * 100 + '%'
var stopColor = colors[i2].color
var _a2 = normalizeColor(stopColor),
color2 = _a2.color,
opacity2 = _a2.opacity
var stopsAttrs = {
offset: offset2,
}
stopsAttrs['stop-color'] = color2
if (opacity2 < 1) {
stopsAttrs['stop-opacity'] = opacity2
}
colorStops.push(createVNode('stop', i2 + '', stopsAttrs))
}
var gradientVNode = createVNode(gradientTag, '', gradientAttrs, colorStops)
var gradientKey = vNodeToString(gradientVNode)
var gradientCache = scope.gradientCache
var gradientId = gradientCache[gradientKey]
if (!gradientId) {
gradientId = scope.zrId + '-g' + scope.gradientIdx++
gradientCache[gradientKey] = gradientId
gradientAttrs.id = gradientId
scope.defs[gradientId] = createVNode(
gradientTag,
gradientId,
gradientAttrs,
colorStops
)
}
attrs[target2] = getIdURL(gradientId)
}
function setPattern(el2, attrs, target2, scope) {
var val2 = el2.style[target2]
var boundingRect = el2.getBoundingRect()
var patternAttrs = {}
var repeat2 = val2.repeat
var noRepeat = repeat2 === 'no-repeat'
var repeatX = repeat2 === 'repeat-x'
var repeatY = repeat2 === 'repeat-y'
var child
if (isImagePattern(val2)) {
var imageWidth_1 = val2.imageWidth
var imageHeight_1 = val2.imageHeight
var imageSrc = void 0
var patternImage = val2.image
if (isString$2(patternImage)) {
imageSrc = patternImage
} else if (isImageLike(patternImage)) {
imageSrc = patternImage.src
} else if (isCanvasLike(patternImage)) {
imageSrc = patternImage.toDataURL()
}
if (typeof Image === 'undefined') {
var errMsg =
'Image width/height must been given explictly in svg-ssr renderer.'
assert(imageWidth_1, errMsg)
assert(imageHeight_1, errMsg)
} else if (imageWidth_1 == null || imageHeight_1 == null) {
var setSizeToVNode_1 = function (vNode, img) {
if (vNode) {
var svgEl = vNode.elm
var width = imageWidth_1 || img.width
var height = imageHeight_1 || img.height
if (vNode.tag === 'pattern') {
if (repeatX) {
height = 1
width /= boundingRect.width
} else if (repeatY) {
width = 1
height /= boundingRect.height
}
}
vNode.attrs.width = width
vNode.attrs.height = height
if (svgEl) {
svgEl.setAttribute('width', width)
svgEl.setAttribute('height', height)
}
}
}
var createdImage = createOrUpdateImage(
imageSrc,
null,
el2,
function (img) {
noRepeat || setSizeToVNode_1(patternVNode, img)
setSizeToVNode_1(child, img)
}
)
if (createdImage && createdImage.width && createdImage.height) {
imageWidth_1 = imageWidth_1 || createdImage.width
imageHeight_1 = imageHeight_1 || createdImage.height
}
}
child = createVNode('image', 'img', {
href: imageSrc,
width: imageWidth_1,
height: imageHeight_1,
})
patternAttrs.width = imageWidth_1
patternAttrs.height = imageHeight_1
} else if (val2.svgElement) {
child = clone$4(val2.svgElement)
patternAttrs.width = val2.svgWidth
patternAttrs.height = val2.svgHeight
}
if (!child) {
return
}
var patternWidth
var patternHeight
if (noRepeat) {
patternWidth = patternHeight = 1
} else if (repeatX) {
patternHeight = 1
patternWidth = patternAttrs.width / boundingRect.width
} else if (repeatY) {
patternWidth = 1
patternHeight = patternAttrs.height / boundingRect.height
} else {
patternAttrs.patternUnits = 'userSpaceOnUse'
}
if (patternWidth != null && !isNaN(patternWidth)) {
patternAttrs.width = patternWidth
}
if (patternHeight != null && !isNaN(patternHeight)) {
patternAttrs.height = patternHeight
}
var patternTransform = getSRTTransformString(val2)
patternTransform && (patternAttrs.patternTransform = patternTransform)
var patternVNode = createVNode('pattern', '', patternAttrs, [child])
var patternKey = vNodeToString(patternVNode)
var patternCache = scope.patternCache
var patternId = patternCache[patternKey]
if (!patternId) {
patternId = scope.zrId + '-p' + scope.patternIdx++
patternCache[patternKey] = patternId
patternAttrs.id = patternId
patternVNode = scope.defs[patternId] = createVNode(
'pattern',
patternId,
patternAttrs,
[child]
)
}
attrs[target2] = getIdURL(patternId)
}
function setClipPath(clipPath, attrs, scope) {
var clipPathCache = scope.clipPathCache,
defs = scope.defs
var clipPathId = clipPathCache[clipPath.id]
if (!clipPathId) {
clipPathId = scope.zrId + '-c' + scope.clipPathIdx++
var clipPathAttrs = {
id: clipPathId,
}
clipPathCache[clipPath.id] = clipPathId
defs[clipPathId] = createVNode('clipPath', clipPathId, clipPathAttrs, [
brushSVGPath(clipPath, scope),
])
}
attrs['clip-path'] = getIdURL(clipPathId)
}
function createTextNode$1(text2) {
return document.createTextNode(text2)
}
function insertBefore(parentNode2, newNode, referenceNode) {
parentNode2.insertBefore(newNode, referenceNode)
}
function removeChild(node2, child) {
node2.removeChild(child)
}
function appendChild(node2, child) {
node2.appendChild(child)
}
function parentNode(node2) {
return node2.parentNode
}
function nextSibling(node2) {
return node2.nextSibling
}
function setTextContent(node2, text2) {
node2.textContent = text2
}
var colonChar = 58
var xChar = 120
var emptyNode = createVNode('', '')
function isUndef(s2) {
return s2 === void 0
}
function isDef(s2) {
return s2 !== void 0
}
function createKeyToOldIdx(children, beginIdx, endIdx) {
var map2 = {}
for (var i2 = beginIdx; i2 <= endIdx; ++i2) {
var key2 = children[i2].key
if (key2 !== void 0) {
map2[key2] = i2
}
}
return map2
}
function sameVnode(vnode1, vnode2) {
var isSameKey = vnode1.key === vnode2.key
var isSameTag = vnode1.tag === vnode2.tag
return isSameTag && isSameKey
}
function createElm(vnode) {
var i2
var children = vnode.children
var tag = vnode.tag
if (isDef(tag)) {
var elm = (vnode.elm = createElement(tag))
updateAttrs(emptyNode, vnode)
if (isArray$6(children)) {
for (i2 = 0; i2 < children.length; ++i2) {
var ch = children[i2]
if (ch != null) {
appendChild(elm, createElm(ch))
}
}
} else if (isDef(vnode.text) && !isObject$b(vnode.text)) {
appendChild(elm, createTextNode$1(vnode.text))
}
} else {
vnode.elm = createTextNode$1(vnode.text)
}
return vnode.elm
}
function addVnodes(parentElm, before2, vnodes, startIdx, endIdx) {
for (; startIdx <= endIdx; ++startIdx) {
var ch = vnodes[startIdx]
if (ch != null) {
insertBefore(parentElm, createElm(ch), before2)
}
}
}
function removeVnodes(parentElm, vnodes, startIdx, endIdx) {
for (; startIdx <= endIdx; ++startIdx) {
var ch = vnodes[startIdx]
if (ch != null) {
if (isDef(ch.tag)) {
var parent_1 = parentNode(ch.elm)
removeChild(parent_1, ch.elm)
} else {
removeChild(parentElm, ch.elm)
}
}
}
}
function updateAttrs(oldVnode, vnode) {
var key2
var elm = vnode.elm
var oldAttrs = (oldVnode && oldVnode.attrs) || {}
var attrs = vnode.attrs || {}
if (oldAttrs === attrs) {
return
}
for (key2 in attrs) {
var cur = attrs[key2]
var old = oldAttrs[key2]
if (old !== cur) {
if (cur === true) {
elm.setAttribute(key2, '')
} else if (cur === false) {
elm.removeAttribute(key2)
} else {
if (key2.charCodeAt(0) !== xChar) {
elm.setAttribute(key2, cur)
} else if (key2 === 'xmlns:xlink' || key2 === 'xmlns') {
elm.setAttributeNS(XMLNS, key2, cur)
} else if (key2.charCodeAt(3) === colonChar) {
elm.setAttributeNS(XML_NAMESPACE, key2, cur)
} else if (key2.charCodeAt(5) === colonChar) {
elm.setAttributeNS(XLINKNS, key2, cur)
} else {
elm.setAttribute(key2, cur)
}
}
}
}
for (key2 in oldAttrs) {
if (!(key2 in attrs)) {
elm.removeAttribute(key2)
}
}
}
function updateChildren(parentElm, oldCh, newCh) {
var oldStartIdx = 0
var newStartIdx = 0
var oldEndIdx = oldCh.length - 1
var oldStartVnode = oldCh[0]
var oldEndVnode = oldCh[oldEndIdx]
var newEndIdx = newCh.length - 1
var newStartVnode = newCh[0]
var newEndVnode = newCh[newEndIdx]
var oldKeyToIdx
var idxInOld
var elmToMove
var before2
while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {
if (oldStartVnode == null) {
oldStartVnode = oldCh[++oldStartIdx]
} else if (oldEndVnode == null) {
oldEndVnode = oldCh[--oldEndIdx]
} else if (newStartVnode == null) {
newStartVnode = newCh[++newStartIdx]
} else if (newEndVnode == null) {
newEndVnode = newCh[--newEndIdx]
} else if (sameVnode(oldStartVnode, newStartVnode)) {
patchVnode(oldStartVnode, newStartVnode)
oldStartVnode = oldCh[++oldStartIdx]
newStartVnode = newCh[++newStartIdx]
} else if (sameVnode(oldEndVnode, newEndVnode)) {
patchVnode(oldEndVnode, newEndVnode)
oldEndVnode = oldCh[--oldEndIdx]
newEndVnode = newCh[--newEndIdx]
} else if (sameVnode(oldStartVnode, newEndVnode)) {
patchVnode(oldStartVnode, newEndVnode)
insertBefore(parentElm, oldStartVnode.elm, nextSibling(oldEndVnode.elm))
oldStartVnode = oldCh[++oldStartIdx]
newEndVnode = newCh[--newEndIdx]
} else if (sameVnode(oldEndVnode, newStartVnode)) {
patchVnode(oldEndVnode, newStartVnode)
insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm)
oldEndVnode = oldCh[--oldEndIdx]
newStartVnode = newCh[++newStartIdx]
} else {
if (isUndef(oldKeyToIdx)) {
oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx)
}
idxInOld = oldKeyToIdx[newStartVnode.key]
if (isUndef(idxInOld)) {
insertBefore(parentElm, createElm(newStartVnode), oldStartVnode.elm)
} else {
elmToMove = oldCh[idxInOld]
if (elmToMove.tag !== newStartVnode.tag) {
insertBefore(parentElm, createElm(newStartVnode), oldStartVnode.elm)
} else {
patchVnode(elmToMove, newStartVnode)
oldCh[idxInOld] = void 0
insertBefore(parentElm, elmToMove.elm, oldStartVnode.elm)
}
}
newStartVnode = newCh[++newStartIdx]
}
}
if (oldStartIdx <= oldEndIdx || newStartIdx <= newEndIdx) {
if (oldStartIdx > oldEndIdx) {
before2 = newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].elm
addVnodes(parentElm, before2, newCh, newStartIdx, newEndIdx)
} else {
removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx)
}
}
}
function patchVnode(oldVnode, vnode) {
var elm = (vnode.elm = oldVnode.elm)
var oldCh = oldVnode.children
var ch = vnode.children
if (oldVnode === vnode) {
return
}
updateAttrs(oldVnode, vnode)
if (isUndef(vnode.text)) {
if (isDef(oldCh) && isDef(ch)) {
if (oldCh !== ch) {
updateChildren(elm, oldCh, ch)
}
} else if (isDef(ch)) {
if (isDef(oldVnode.text)) {
setTextContent(elm, '')
}
addVnodes(elm, null, ch, 0, ch.length - 1)
} else if (isDef(oldCh)) {
removeVnodes(elm, oldCh, 0, oldCh.length - 1)
} else if (isDef(oldVnode.text)) {
setTextContent(elm, '')
}
} else if (oldVnode.text !== vnode.text) {
if (isDef(oldCh)) {
removeVnodes(elm, oldCh, 0, oldCh.length - 1)
}
setTextContent(elm, vnode.text)
}
}
function patch(oldVnode, vnode) {
if (sameVnode(oldVnode, vnode)) {
patchVnode(oldVnode, vnode)
} else {
var elm = oldVnode.elm
var parent_2 = parentNode(elm)
createElm(vnode)
if (parent_2 !== null) {
insertBefore(parent_2, vnode.elm, nextSibling(elm))
removeVnodes(parent_2, [oldVnode], 0, 0)
}
}
return vnode
}
var svgId = 0
var SVGPainter = (function () {
function SVGPainter2(root2, storage2, opts) {
this.type = 'svg'
this.refreshHover = createMethodNotSupport()
this.configLayer = createMethodNotSupport()
this.storage = storage2
this._opts = opts = extend({}, opts)
this.root = root2
this._id = 'zr' + svgId++
this._oldVNode = createSVGVNode(opts.width, opts.height)
if (root2 && !opts.ssr) {
var viewport2 = (this._viewport = document.createElement('div'))
viewport2.style.cssText = 'position:relative;overflow:hidden'
var svgDom = (this._svgDom = this._oldVNode.elm = createElement('svg'))
updateAttrs(null, this._oldVNode)
viewport2.appendChild(svgDom)
root2.appendChild(viewport2)
}
this.resize(opts.width, opts.height)
}
SVGPainter2.prototype.getType = function () {
return this.type
}
SVGPainter2.prototype.getViewportRoot = function () {
return this._viewport
}
SVGPainter2.prototype.getViewportRootOffset = function () {
var viewportRoot = this.getViewportRoot()
if (viewportRoot) {
return {
offsetLeft: viewportRoot.offsetLeft || 0,
offsetTop: viewportRoot.offsetTop || 0,
}
}
}
SVGPainter2.prototype.getSvgDom = function () {
return this._svgDom
}
SVGPainter2.prototype.refresh = function () {
if (this.root) {
var vnode = this.renderToVNode({
willUpdate: true,
})
vnode.attrs.style = 'position:absolute;left:0;top:0;user-select:none'
patch(this._oldVNode, vnode)
this._oldVNode = vnode
}
}
SVGPainter2.prototype.renderOneToVNode = function (el2) {
return brush(el2, createBrushScope(this._id))
}
SVGPainter2.prototype.renderToVNode = function (opts) {
opts = opts || {}
var list2 = this.storage.getDisplayList(true)
var width = this._width
var height = this._height
var scope = createBrushScope(this._id)
scope.animation = opts.animation
scope.willUpdate = opts.willUpdate
scope.compress = opts.compress
var children = []
var bgVNode = (this._bgVNode = createBackgroundVNode(
width,
height,
this._backgroundColor,
scope
))
bgVNode && children.push(bgVNode)
var mainVNode = !opts.compress
? (this._mainVNode = createVNode('g', 'main', {}, []))
: null
this._paintList(list2, scope, mainVNode ? mainVNode.children : children)
mainVNode && children.push(mainVNode)
var defs = map$1(keys$4(scope.defs), function (id2) {
return scope.defs[id2]
})
if (defs.length) {
children.push(createVNode('defs', 'defs', {}, defs))
}
if (opts.animation) {
var animationCssStr = getCssString(scope.cssNodes, scope.cssAnims, {
newline: true,
})
if (animationCssStr) {
var styleNode = createVNode('style', 'stl', {}, [], animationCssStr)
children.push(styleNode)
}
}
return createSVGVNode(width, height, children, opts.useViewBox)
}
SVGPainter2.prototype.renderToString = function (opts) {
opts = opts || {}
return vNodeToString(
this.renderToVNode({
animation: retrieve2(opts.cssAnimation, true),
willUpdate: false,
compress: true,
useViewBox: retrieve2(opts.useViewBox, true),
}),
{ newline: true }
)
}
SVGPainter2.prototype.setBackgroundColor = function (backgroundColor2) {
this._backgroundColor = backgroundColor2
}
SVGPainter2.prototype.getSvgRoot = function () {
return this._mainVNode && this._mainVNode.elm
}
SVGPainter2.prototype._paintList = function (list2, scope, out2) {
var listLen = list2.length
var clipPathsGroupsStack = []
var clipPathsGroupsStackDepth = 0
var currentClipPathGroup
var prevClipPaths
var clipGroupNodeIdx = 0
for (var i2 = 0; i2 < listLen; i2++) {
var displayable = list2[i2]
if (!displayable.invisible) {
var clipPaths = displayable.__clipPaths
var len2 = (clipPaths && clipPaths.length) || 0
var prevLen = (prevClipPaths && prevClipPaths.length) || 0
var lca = void 0
for (lca = Math.max(len2 - 1, prevLen - 1); lca >= 0; lca--) {
if (
clipPaths &&
prevClipPaths &&
clipPaths[lca] === prevClipPaths[lca]
) {
break
}
}
for (var i_1 = prevLen - 1; i_1 > lca; i_1--) {
clipPathsGroupsStackDepth--
currentClipPathGroup =
clipPathsGroupsStack[clipPathsGroupsStackDepth - 1]
}
for (var i_2 = lca + 1; i_2 < len2; i_2++) {
var groupAttrs = {}
setClipPath(clipPaths[i_2], groupAttrs, scope)
var g2 = createVNode(
'g',
'clip-g-' + clipGroupNodeIdx++,
groupAttrs,
[]
)
;(currentClipPathGroup ? currentClipPathGroup.children : out2).push(
g2
)
clipPathsGroupsStack[clipPathsGroupsStackDepth++] = g2
currentClipPathGroup = g2
}
prevClipPaths = clipPaths
var ret = brush(displayable, scope)
if (ret) {
;(currentClipPathGroup ? currentClipPathGroup.children : out2).push(
ret
)
}
}
}
}
SVGPainter2.prototype.resize = function (width, height) {
var opts = this._opts
var root2 = this.root
var viewport2 = this._viewport
width != null && (opts.width = width)
height != null && (opts.height = height)
if (root2 && viewport2) {
viewport2.style.display = 'none'
width = getSize$1(root2, 0, opts)
height = getSize$1(root2, 1, opts)
viewport2.style.display = ''
}
if (this._width !== width || this._height !== height) {
this._width = width
this._height = height
if (viewport2) {
var viewportStyle = viewport2.style
viewportStyle.width = width + 'px'
viewportStyle.height = height + 'px'
}
if (!isPattern(this._backgroundColor)) {
var svgDom = this._svgDom
if (svgDom) {
svgDom.setAttribute('width', width)
svgDom.setAttribute('height', height)
}
var bgEl = this._bgVNode && this._bgVNode.elm
if (bgEl) {
bgEl.setAttribute('width', width)
bgEl.setAttribute('height', height)
}
} else {
this.refresh()
}
}
}
SVGPainter2.prototype.getWidth = function () {
return this._width
}
SVGPainter2.prototype.getHeight = function () {
return this._height
}
SVGPainter2.prototype.dispose = function () {
if (this.root) {
this.root.innerHTML = ''
}
this._svgDom =
this._viewport =
this.storage =
this._oldVNode =
this._bgVNode =
this._mainVNode =
null
}
SVGPainter2.prototype.clear = function () {
if (this._svgDom) {
this._svgDom.innerHTML = null
}
this._oldVNode = null
}
SVGPainter2.prototype.toDataURL = function (base642) {
var str = this.renderToString()
var prefix = 'data:image/svg+xml;'
if (base642) {
str = encodeBase64(str)
return str && prefix + 'base64,' + str
}
return prefix + 'charset=UTF-8,' + encodeURIComponent(str)
}
return SVGPainter2
})()
function createMethodNotSupport(method4) {
return function () {}
}
function createBackgroundVNode(width, height, backgroundColor2, scope) {
var bgVNode
if (backgroundColor2 && backgroundColor2 !== 'none') {
bgVNode = createVNode('rect', 'bg', {
width,
height,
x: '0',
y: '0',
id: '0',
})
if (isGradient(backgroundColor2)) {
setGradient({ fill: backgroundColor2 }, bgVNode.attrs, 'fill', scope)
} else if (isPattern(backgroundColor2)) {
setPattern(
{
style: {
fill: backgroundColor2,
},
dirty: noop,
getBoundingRect: function () {
return { width, height }
},
},
bgVNode.attrs,
'fill',
scope
)
} else {
var _a2 = normalizeColor(backgroundColor2),
color2 = _a2.color,
opacity2 = _a2.opacity
bgVNode.attrs.fill = color2
opacity2 < 1 && (bgVNode.attrs['fill-opacity'] = opacity2)
}
}
return bgVNode
}
var SVGPainter$1 = SVGPainter
function install$1(registers) {
registers.registerPainter('svg', SVGPainter$1)
}
function createDom(id2, painter, dpr2) {
var newDom = platformApi.createCanvas()
var width = painter.getWidth()
var height = painter.getHeight()
var newDomStyle = newDom.style
if (newDomStyle) {
newDomStyle.position = 'absolute'
newDomStyle.left = '0'
newDomStyle.top = '0'
newDomStyle.width = width + 'px'
newDomStyle.height = height + 'px'
newDom.setAttribute('data-zr-dom-id', id2)
}
newDom.width = width * dpr2
newDom.height = height * dpr2
return newDom
}
var Layer = (function (_super) {
__extends$1(Layer2, _super)
function Layer2(id2, painter, dpr2) {
var _this = _super.call(this) || this
_this.motionBlur = false
_this.lastFrameAlpha = 0.7
_this.dpr = 1
_this.virtual = false
_this.config = {}
_this.incremental = false
_this.zlevel = 0
_this.maxRepaintRectCount = 5
_this.__dirty = true
_this.__firstTimePaint = true
_this.__used = false
_this.__drawIndex = 0
_this.__startIndex = 0
_this.__endIndex = 0
_this.__prevStartIndex = null
_this.__prevEndIndex = null
var dom
dpr2 = dpr2 || devicePixelRatio
if (typeof id2 === 'string') {
dom = createDom(id2, painter, dpr2)
} else if (isObject$b(id2)) {
dom = id2
id2 = dom.id
}
_this.id = id2
_this.dom = dom
var domStyle = dom.style
if (domStyle) {
disableUserSelect(dom)
dom.onselectstart = function () {
return false
}
domStyle.padding = '0'
domStyle.margin = '0'
domStyle.borderWidth = '0'
}
_this.painter = painter
_this.dpr = dpr2
return _this
}
Layer2.prototype.getElementCount = function () {
return this.__endIndex - this.__startIndex
}
Layer2.prototype.afterBrush = function () {
this.__prevStartIndex = this.__startIndex
this.__prevEndIndex = this.__endIndex
}
Layer2.prototype.initContext = function () {
this.ctx = this.dom.getContext('2d')
this.ctx.dpr = this.dpr
}
Layer2.prototype.setUnpainted = function () {
this.__firstTimePaint = true
}
Layer2.prototype.createBackBuffer = function () {
var dpr2 = this.dpr
this.domBack = createDom('back-' + this.id, this.painter, dpr2)
this.ctxBack = this.domBack.getContext('2d')
if (dpr2 !== 1) {
this.ctxBack.scale(dpr2, dpr2)
}
}
Layer2.prototype.createRepaintRects = function (
displayList,
prevList,
viewWidth,
viewHeight
) {
if (this.__firstTimePaint) {
this.__firstTimePaint = false
return null
}
var mergedRepaintRects = []
var maxRepaintRectCount = this.maxRepaintRectCount
var full = false
var pendingRect = new BoundingRect$1(0, 0, 0, 0)
function addRectToMergePool(rect) {
if (!rect.isFinite() || rect.isZero()) {
return
}
if (mergedRepaintRects.length === 0) {
var boundingRect = new BoundingRect$1(0, 0, 0, 0)
boundingRect.copy(rect)
mergedRepaintRects.push(boundingRect)
} else {
var isMerged = false
var minDeltaArea = Infinity
var bestRectToMergeIdx = 0
for (var i3 = 0; i3 < mergedRepaintRects.length; ++i3) {
var mergedRect = mergedRepaintRects[i3]
if (mergedRect.intersect(rect)) {
var pendingRect_1 = new BoundingRect$1(0, 0, 0, 0)
pendingRect_1.copy(mergedRect)
pendingRect_1.union(rect)
mergedRepaintRects[i3] = pendingRect_1
isMerged = true
break
} else if (full) {
pendingRect.copy(rect)
pendingRect.union(mergedRect)
var aArea = rect.width * rect.height
var bArea = mergedRect.width * mergedRect.height
var pendingArea = pendingRect.width * pendingRect.height
var deltaArea = pendingArea - aArea - bArea
if (deltaArea < minDeltaArea) {
minDeltaArea = deltaArea
bestRectToMergeIdx = i3
}
}
}
if (full) {
mergedRepaintRects[bestRectToMergeIdx].union(rect)
isMerged = true
}
if (!isMerged) {
var boundingRect = new BoundingRect$1(0, 0, 0, 0)
boundingRect.copy(rect)
mergedRepaintRects.push(boundingRect)
}
if (!full) {
full = mergedRepaintRects.length >= maxRepaintRectCount
}
}
}
for (var i2 = this.__startIndex; i2 < this.__endIndex; ++i2) {
var el2 = displayList[i2]
if (el2) {
var shouldPaint = el2.shouldBePainted(viewWidth, viewHeight, true, true)
var prevRect =
el2.__isRendered && (el2.__dirty & REDRAW_BIT || !shouldPaint)
? el2.getPrevPaintRect()
: null
if (prevRect) {
addRectToMergePool(prevRect)
}
var curRect =
shouldPaint && (el2.__dirty & REDRAW_BIT || !el2.__isRendered)
? el2.getPaintRect()
: null
if (curRect) {
addRectToMergePool(curRect)
}
}
}
for (var i2 = this.__prevStartIndex; i2 < this.__prevEndIndex; ++i2) {
var el2 = prevList[i2]
var shouldPaint = el2.shouldBePainted(viewWidth, viewHeight, true, true)
if (el2 && (!shouldPaint || !el2.__zr) && el2.__isRendered) {
var prevRect = el2.getPrevPaintRect()
if (prevRect) {
addRectToMergePool(prevRect)
}
}
}
var hasIntersections
do {
hasIntersections = false
for (var i2 = 0; i2 < mergedRepaintRects.length; ) {
if (mergedRepaintRects[i2].isZero()) {
mergedRepaintRects.splice(i2, 1)
continue
}
for (var j2 = i2 + 1; j2 < mergedRepaintRects.length; ) {
if (mergedRepaintRects[i2].intersect(mergedRepaintRects[j2])) {
hasIntersections = true
mergedRepaintRects[i2].union(mergedRepaintRects[j2])
mergedRepaintRects.splice(j2, 1)
} else {
j2++
}
}
i2++
}
} while (hasIntersections)
this._paintRects = mergedRepaintRects
return mergedRepaintRects
}
Layer2.prototype.debugGetPaintRects = function () {
return (this._paintRects || []).slice()
}
Layer2.prototype.resize = function (width, height) {
var dpr2 = this.dpr
var dom = this.dom
var domStyle = dom.style
var domBack = this.domBack
if (domStyle) {
domStyle.width = width + 'px'
domStyle.height = height + 'px'
}
dom.width = width * dpr2
dom.height = height * dpr2
if (domBack) {
domBack.width = width * dpr2
domBack.height = height * dpr2
if (dpr2 !== 1) {
this.ctxBack.scale(dpr2, dpr2)
}
}
}
Layer2.prototype.clear = function (clearAll, clearColor, repaintRects) {
var dom = this.dom
var ctx = this.ctx
var width = dom.width
var height = dom.height
clearColor = clearColor || this.clearColor
var haveMotionBLur = this.motionBlur && !clearAll
var lastFrameAlpha = this.lastFrameAlpha
var dpr2 = this.dpr
var self2 = this
if (haveMotionBLur) {
if (!this.domBack) {
this.createBackBuffer()
}
this.ctxBack.globalCompositeOperation = 'copy'
this.ctxBack.drawImage(dom, 0, 0, width / dpr2, height / dpr2)
}
var domBack = this.domBack
function doClear(x2, y2, width2, height2) {
ctx.clearRect(x2, y2, width2, height2)
if (clearColor && clearColor !== 'transparent') {
var clearColorGradientOrPattern = void 0
if (isGradientObject(clearColor)) {
var shouldCache =
clearColor.global ||
(clearColor.__width === width2 && clearColor.__height === height2)
clearColorGradientOrPattern =
(shouldCache && clearColor.__canvasGradient) ||
getCanvasGradient(ctx, clearColor, {
x: 0,
y: 0,
width: width2,
height: height2,
})
clearColor.__canvasGradient = clearColorGradientOrPattern
clearColor.__width = width2
clearColor.__height = height2
} else if (isImagePatternObject(clearColor)) {
clearColor.scaleX = clearColor.scaleX || dpr2
clearColor.scaleY = clearColor.scaleY || dpr2
clearColorGradientOrPattern = createCanvasPattern(ctx, clearColor, {
dirty: function () {
self2.setUnpainted()
self2.__painter.refresh()
},
})
}
ctx.save()
ctx.fillStyle = clearColorGradientOrPattern || clearColor
ctx.fillRect(x2, y2, width2, height2)
ctx.restore()
}
if (haveMotionBLur) {
ctx.save()
ctx.globalAlpha = lastFrameAlpha
ctx.drawImage(domBack, x2, y2, width2, height2)
ctx.restore()
}
}
if (!repaintRects || haveMotionBLur) {
doClear(0, 0, width, height)
} else if (repaintRects.length) {
each$f(repaintRects, function (rect) {
doClear(
rect.x * dpr2,
rect.y * dpr2,
rect.width * dpr2,
rect.height * dpr2
)
})
}
}
return Layer2
})(Eventful$1)
var Layer$1 = Layer
var HOVER_LAYER_ZLEVEL = 1e5
var CANVAS_ZLEVEL = 314159
var EL_AFTER_INCREMENTAL_INC = 0.01
var INCREMENTAL_INC = 1e-3
function isLayerValid(layer) {
if (!layer) {
return false
}
if (layer.__builtin__) {
return true
}
if (
typeof layer.resize !== 'function' ||
typeof layer.refresh !== 'function'
) {
return false
}
return true
}
function createRoot(width, height) {
var domRoot = document.createElement('div')
domRoot.style.cssText =
[
'position:relative',
'width:' + width + 'px',
'height:' + height + 'px',
'padding:0',
'margin:0',
'border-width:0',
].join(';') + ';'
return domRoot
}
var CanvasPainter = (function () {
function CanvasPainter2(root2, storage2, opts, id2) {
this.type = 'canvas'
this._zlevelList = []
this._prevDisplayList = []
this._layers = {}
this._layerConfig = {}
this._needsManuallyCompositing = false
this.type = 'canvas'
var singleCanvas =
!root2.nodeName || root2.nodeName.toUpperCase() === 'CANVAS'
this._opts = opts = extend({}, opts || {})
this.dpr = opts.devicePixelRatio || devicePixelRatio
this._singleCanvas = singleCanvas
this.root = root2
var rootStyle = root2.style
if (rootStyle) {
disableUserSelect(root2)
root2.innerHTML = ''
}
this.storage = storage2
var zlevelList = this._zlevelList
this._prevDisplayList = []
var layers = this._layers
if (!singleCanvas) {
this._width = getSize$1(root2, 0, opts)
this._height = getSize$1(root2, 1, opts)
var domRoot = (this._domRoot = createRoot(this._width, this._height))
root2.appendChild(domRoot)
} else {
var rootCanvas = root2
var width = rootCanvas.width
var height = rootCanvas.height
if (opts.width != null) {
width = opts.width
}
if (opts.height != null) {
height = opts.height
}
this.dpr = opts.devicePixelRatio || 1
rootCanvas.width = width * this.dpr
rootCanvas.height = height * this.dpr
this._width = width
this._height = height
var mainLayer = new Layer$1(rootCanvas, this, this.dpr)
mainLayer.__builtin__ = true
mainLayer.initContext()
layers[CANVAS_ZLEVEL] = mainLayer
mainLayer.zlevel = CANVAS_ZLEVEL
zlevelList.push(CANVAS_ZLEVEL)
this._domRoot = root2
}
}
CanvasPainter2.prototype.getType = function () {
return 'canvas'
}
CanvasPainter2.prototype.isSingleCanvas = function () {
return this._singleCanvas
}
CanvasPainter2.prototype.getViewportRoot = function () {
return this._domRoot
}
CanvasPainter2.prototype.getViewportRootOffset = function () {
var viewportRoot = this.getViewportRoot()
if (viewportRoot) {
return {
offsetLeft: viewportRoot.offsetLeft || 0,
offsetTop: viewportRoot.offsetTop || 0,
}
}
}
CanvasPainter2.prototype.refresh = function (paintAll) {
var list2 = this.storage.getDisplayList(true)
var prevList = this._prevDisplayList
var zlevelList = this._zlevelList
this._redrawId = Math.random()
this._paintList(list2, prevList, paintAll, this._redrawId)
for (var i2 = 0; i2 < zlevelList.length; i2++) {
var z2 = zlevelList[i2]
var layer = this._layers[z2]
if (!layer.__builtin__ && layer.refresh) {
var clearColor = i2 === 0 ? this._backgroundColor : null
layer.refresh(clearColor)
}
}
if (this._opts.useDirtyRect) {
this._prevDisplayList = list2.slice()
}
return this
}
CanvasPainter2.prototype.refreshHover = function () {
this._paintHoverList(this.storage.getDisplayList(false))
}
CanvasPainter2.prototype._paintHoverList = function (list2) {
var len2 = list2.length
var hoverLayer = this._hoverlayer
hoverLayer && hoverLayer.clear()
if (!len2) {
return
}
var scope = {
inHover: true,
viewWidth: this._width,
viewHeight: this._height,
}
var ctx
for (var i2 = 0; i2 < len2; i2++) {
var el2 = list2[i2]
if (el2.__inHover) {
if (!hoverLayer) {
hoverLayer = this._hoverlayer = this.getLayer(HOVER_LAYER_ZLEVEL)
}
if (!ctx) {
ctx = hoverLayer.ctx
ctx.save()
}
brush$1(ctx, el2, scope, i2 === len2 - 1)
}
}
if (ctx) {
ctx.restore()
}
}
CanvasPainter2.prototype.getHoverLayer = function () {
return this.getLayer(HOVER_LAYER_ZLEVEL)
}
CanvasPainter2.prototype.paintOne = function (ctx, el2) {
brushSingle(ctx, el2)
}
CanvasPainter2.prototype._paintList = function (
list2,
prevList,
paintAll,
redrawId
) {
if (this._redrawId !== redrawId) {
return
}
paintAll = paintAll || false
this._updateLayerStatus(list2)
var _a2 = this._doPaintList(list2, prevList, paintAll),
finished2 = _a2.finished,
needsRefreshHover = _a2.needsRefreshHover
if (this._needsManuallyCompositing) {
this._compositeManually()
}
if (needsRefreshHover) {
this._paintHoverList(list2)
}
if (!finished2) {
var self_1 = this
requestAnimationFrame$2(function () {
self_1._paintList(list2, prevList, paintAll, redrawId)
})
} else {
this.eachLayer(function (layer) {
layer.afterBrush && layer.afterBrush()
})
}
}
CanvasPainter2.prototype._compositeManually = function () {
var ctx = this.getLayer(CANVAS_ZLEVEL).ctx
var width = this._domRoot.width
var height = this._domRoot.height
ctx.clearRect(0, 0, width, height)
this.eachBuiltinLayer(function (layer) {
if (layer.virtual) {
ctx.drawImage(layer.dom, 0, 0, width, height)
}
})
}
CanvasPainter2.prototype._doPaintList = function (list2, prevList, paintAll) {
var _this = this
var layerList = []
var useDirtyRect = this._opts.useDirtyRect
for (var zi = 0; zi < this._zlevelList.length; zi++) {
var zlevel = this._zlevelList[zi]
var layer = this._layers[zlevel]
if (
layer.__builtin__ &&
layer !== this._hoverlayer &&
(layer.__dirty || paintAll)
) {
layerList.push(layer)
}
}
var finished2 = true
var needsRefreshHover = false
var _loop_1 = function (k3) {
var layer2 = layerList[k3]
var ctx = layer2.ctx
var repaintRects =
useDirtyRect &&
layer2.createRepaintRects(
list2,
prevList,
this_1._width,
this_1._height
)
var start2 = paintAll ? layer2.__startIndex : layer2.__drawIndex
var useTimer = !paintAll && layer2.incremental && Date.now
var startTime = useTimer && Date.now()
var clearColor =
layer2.zlevel === this_1._zlevelList[0] ? this_1._backgroundColor : null
if (layer2.__startIndex === layer2.__endIndex) {
layer2.clear(false, clearColor, repaintRects)
} else if (start2 === layer2.__startIndex) {
var firstEl = list2[start2]
if (!firstEl.incremental || !firstEl.notClear || paintAll) {
layer2.clear(false, clearColor, repaintRects)
}
}
if (start2 === -1) {
console.error('For some unknown reason. drawIndex is -1')
start2 = layer2.__startIndex
}
var i2
var repaint2 = function (repaintRect) {
var scope = {
inHover: false,
allClipped: false,
prevEl: null,
viewWidth: _this._width,
viewHeight: _this._height,
}
for (i2 = start2; i2 < layer2.__endIndex; i2++) {
var el2 = list2[i2]
if (el2.__inHover) {
needsRefreshHover = true
}
_this._doPaintEl(
el2,
layer2,
useDirtyRect,
repaintRect,
scope,
i2 === layer2.__endIndex - 1
)
if (useTimer) {
var dTime = Date.now() - startTime
if (dTime > 15) {
break
}
}
}
if (scope.prevElClipPaths) {
ctx.restore()
}
}
if (repaintRects) {
if (repaintRects.length === 0) {
i2 = layer2.__endIndex
} else {
var dpr2 = this_1.dpr
for (var r2 = 0; r2 < repaintRects.length; ++r2) {
var rect = repaintRects[r2]
ctx.save()
ctx.beginPath()
ctx.rect(
rect.x * dpr2,
rect.y * dpr2,
rect.width * dpr2,
rect.height * dpr2
)
ctx.clip()
repaint2(rect)
ctx.restore()
}
}
} else {
ctx.save()
repaint2()
ctx.restore()
}
layer2.__drawIndex = i2
if (layer2.__drawIndex < layer2.__endIndex) {
finished2 = false
}
}
var this_1 = this
for (var k2 = 0; k2 < layerList.length; k2++) {
_loop_1(k2)
}
if (env$1.wxa) {
each$f(this._layers, function (layer2) {
if (layer2 && layer2.ctx && layer2.ctx.draw) {
layer2.ctx.draw()
}
})
}
return {
finished: finished2,
needsRefreshHover,
}
}
CanvasPainter2.prototype._doPaintEl = function (
el2,
currentLayer,
useDirtyRect,
repaintRect,
scope,
isLast
) {
var ctx = currentLayer.ctx
if (useDirtyRect) {
var paintRect = el2.getPaintRect()
if (!repaintRect || (paintRect && paintRect.intersect(repaintRect))) {
brush$1(ctx, el2, scope, isLast)
el2.setPrevPaintRect(paintRect)
}
} else {
brush$1(ctx, el2, scope, isLast)
}
}
CanvasPainter2.prototype.getLayer = function (zlevel, virtual) {
if (this._singleCanvas && !this._needsManuallyCompositing) {
zlevel = CANVAS_ZLEVEL
}
var layer = this._layers[zlevel]
if (!layer) {
layer = new Layer$1('zr_' + zlevel, this, this.dpr)
layer.zlevel = zlevel
layer.__builtin__ = true
if (this._layerConfig[zlevel]) {
merge(layer, this._layerConfig[zlevel], true)
} else if (this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC]) {
merge(layer, this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC], true)
}
if (virtual) {
layer.virtual = virtual
}
this.insertLayer(zlevel, layer)
layer.initContext()
}
return layer
}
CanvasPainter2.prototype.insertLayer = function (zlevel, layer) {
var layersMap = this._layers
var zlevelList = this._zlevelList
var len2 = zlevelList.length
var domRoot = this._domRoot
var prevLayer = null
var i2 = -1
if (layersMap[zlevel]) {
return
}
if (!isLayerValid(layer)) {
return
}
if (len2 > 0 && zlevel > zlevelList[0]) {
for (i2 = 0; i2 < len2 - 1; i2++) {
if (zlevelList[i2] < zlevel && zlevelList[i2 + 1] > zlevel) {
break
}
}
prevLayer = layersMap[zlevelList[i2]]
}
zlevelList.splice(i2 + 1, 0, zlevel)
layersMap[zlevel] = layer
if (!layer.virtual) {
if (prevLayer) {
var prevDom = prevLayer.dom
if (prevDom.nextSibling) {
domRoot.insertBefore(layer.dom, prevDom.nextSibling)
} else {
domRoot.appendChild(layer.dom)
}
} else {
if (domRoot.firstChild) {
domRoot.insertBefore(layer.dom, domRoot.firstChild)
} else {
domRoot.appendChild(layer.dom)
}
}
}
layer.__painter = this
}
CanvasPainter2.prototype.eachLayer = function (cb, context2) {
var zlevelList = this._zlevelList
for (var i2 = 0; i2 < zlevelList.length; i2++) {
var z2 = zlevelList[i2]
cb.call(context2, this._layers[z2], z2)
}
}
CanvasPainter2.prototype.eachBuiltinLayer = function (cb, context2) {
var zlevelList = this._zlevelList
for (var i2 = 0; i2 < zlevelList.length; i2++) {
var z2 = zlevelList[i2]
var layer = this._layers[z2]
if (layer.__builtin__) {
cb.call(context2, layer, z2)
}
}
}
CanvasPainter2.prototype.eachOtherLayer = function (cb, context2) {
var zlevelList = this._zlevelList
for (var i2 = 0; i2 < zlevelList.length; i2++) {
var z2 = zlevelList[i2]
var layer = this._layers[z2]
if (!layer.__builtin__) {
cb.call(context2, layer, z2)
}
}
}
CanvasPainter2.prototype.getLayers = function () {
return this._layers
}
CanvasPainter2.prototype._updateLayerStatus = function (list2) {
this.eachBuiltinLayer(function (layer2, z2) {
layer2.__dirty = layer2.__used = false
})
function updatePrevLayer(idx) {
if (prevLayer) {
if (prevLayer.__endIndex !== idx) {
prevLayer.__dirty = true
}
prevLayer.__endIndex = idx
}
}
if (this._singleCanvas) {
for (var i_1 = 1; i_1 < list2.length; i_1++) {
var el2 = list2[i_1]
if (el2.zlevel !== list2[i_1 - 1].zlevel || el2.incremental) {
this._needsManuallyCompositing = true
break
}
}
}
var prevLayer = null
var incrementalLayerCount = 0
var prevZlevel
var i2
for (i2 = 0; i2 < list2.length; i2++) {
var el2 = list2[i2]
var zlevel = el2.zlevel
var layer = void 0
if (prevZlevel !== zlevel) {
prevZlevel = zlevel
incrementalLayerCount = 0
}
if (el2.incremental) {
layer = this.getLayer(
zlevel + INCREMENTAL_INC,
this._needsManuallyCompositing
)
layer.incremental = true
incrementalLayerCount = 1
} else {
layer = this.getLayer(
zlevel + (incrementalLayerCount > 0 ? EL_AFTER_INCREMENTAL_INC : 0),
this._needsManuallyCompositing
)
}
if (!layer.__builtin__) {
logError(
'ZLevel ' + zlevel + ' has been used by unkown layer ' + layer.id
)
}
if (layer !== prevLayer) {
layer.__used = true
if (layer.__startIndex !== i2) {
layer.__dirty = true
}
layer.__startIndex = i2
if (!layer.incremental) {
layer.__drawIndex = i2
} else {
layer.__drawIndex = -1
}
updatePrevLayer(i2)
prevLayer = layer
}
if (el2.__dirty & REDRAW_BIT && !el2.__inHover) {
layer.__dirty = true
if (layer.incremental && layer.__drawIndex < 0) {
layer.__drawIndex = i2
}
}
}
updatePrevLayer(i2)
this.eachBuiltinLayer(function (layer2, z2) {
if (!layer2.__used && layer2.getElementCount() > 0) {
layer2.__dirty = true
layer2.__startIndex = layer2.__endIndex = layer2.__drawIndex = 0
}
if (layer2.__dirty && layer2.__drawIndex < 0) {
layer2.__drawIndex = layer2.__startIndex
}
})
}
CanvasPainter2.prototype.clear = function () {
this.eachBuiltinLayer(this._clearLayer)
return this
}
CanvasPainter2.prototype._clearLayer = function (layer) {
layer.clear()
}
CanvasPainter2.prototype.setBackgroundColor = function (backgroundColor2) {
this._backgroundColor = backgroundColor2
each$f(this._layers, function (layer) {
layer.setUnpainted()
})
}
CanvasPainter2.prototype.configLayer = function (zlevel, config2) {
if (config2) {
var layerConfig = this._layerConfig
if (!layerConfig[zlevel]) {
layerConfig[zlevel] = config2
} else {
merge(layerConfig[zlevel], config2, true)
}
for (var i2 = 0; i2 < this._zlevelList.length; i2++) {
var _zlevel = this._zlevelList[i2]
if (
_zlevel === zlevel ||
_zlevel === zlevel + EL_AFTER_INCREMENTAL_INC
) {
var layer = this._layers[_zlevel]
merge(layer, layerConfig[zlevel], true)
}
}
}
}
CanvasPainter2.prototype.delLayer = function (zlevel) {
var layers = this._layers
var zlevelList = this._zlevelList
var layer = layers[zlevel]
if (!layer) {
return
}
layer.dom.parentNode.removeChild(layer.dom)
delete layers[zlevel]
zlevelList.splice(indexOf(zlevelList, zlevel), 1)
}
CanvasPainter2.prototype.resize = function (width, height) {
if (!this._domRoot.style) {
if (width == null || height == null) {
return
}
this._width = width
this._height = height
this.getLayer(CANVAS_ZLEVEL).resize(width, height)
} else {
var domRoot = this._domRoot
domRoot.style.display = 'none'
var opts = this._opts
var root2 = this.root
width != null && (opts.width = width)
height != null && (opts.height = height)
width = getSize$1(root2, 0, opts)
height = getSize$1(root2, 1, opts)
domRoot.style.display = ''
if (this._width !== width || height !== this._height) {
domRoot.style.width = width + 'px'
domRoot.style.height = height + 'px'
for (var id2 in this._layers) {
if (this._layers.hasOwnProperty(id2)) {
this._layers[id2].resize(width, height)
}
}
this.refresh(true)
}
this._width = width
this._height = height
}
return this
}
CanvasPainter2.prototype.clearLayer = function (zlevel) {
var layer = this._layers[zlevel]
if (layer) {
layer.clear()
}
}
CanvasPainter2.prototype.dispose = function () {
this.root.innerHTML = ''
this.root = this.storage = this._domRoot = this._layers = null
}
CanvasPainter2.prototype.getRenderedCanvas = function (opts) {
opts = opts || {}
if (this._singleCanvas && !this._compositeManually) {
return this._layers[CANVAS_ZLEVEL].dom
}
var imageLayer = new Layer$1('image', this, opts.pixelRatio || this.dpr)
imageLayer.initContext()
imageLayer.clear(false, opts.backgroundColor || this._backgroundColor)
var ctx = imageLayer.ctx
if (opts.pixelRatio <= this.dpr) {
this.refresh()
var width_1 = imageLayer.dom.width
var height_1 = imageLayer.dom.height
this.eachLayer(function (layer) {
if (layer.__builtin__) {
ctx.drawImage(layer.dom, 0, 0, width_1, height_1)
} else if (layer.renderToCanvas) {
ctx.save()
layer.renderToCanvas(ctx)
ctx.restore()
}
})
} else {
var scope = {
inHover: false,
viewWidth: this._width,
viewHeight: this._height,
}
var displayList = this.storage.getDisplayList(true)
for (var i2 = 0, len2 = displayList.length; i2 < len2; i2++) {
var el2 = displayList[i2]
brush$1(ctx, el2, scope, i2 === len2 - 1)
}
}
return imageLayer.dom
}
CanvasPainter2.prototype.getWidth = function () {
return this._width
}
CanvasPainter2.prototype.getHeight = function () {
return this._height
}
return CanvasPainter2
})()
var CanvasPainter$1 = CanvasPainter
function install(registers) {
registers.registerPainter('canvas', CanvasPainter$1)
}
use([
install$R,
install$S,
install$Q,
install$i,
install$k,
install$r,
install$b,
install$n,
install,
install$1,
install$8,
install$f,
install$l,
])
const defaultData = [
{ i: 1, dim: 'A', ind1: 100, ind2: 100 * 2 },
{ i: 2, dim: 'B', ind1: 200, ind2: 200 * 2 },
{ i: 3, dim: 'C', ind1: 300, ind2: 300 * 2 },
{ i: 4, dim: 'D', ind1: 400, ind2: 400 * 2 },
{ i: 5, dim: 'E', ind1: 500, ind2: 500 * 2 },
]
function debouncePromise(fn2, wait = 16, { maxWait } = { maxWait: Infinity }) {
let t3
let lastTime
return function (...args) {
if (Number(new Date()) - Number(lastTime) < maxWait) {
clearTimeout(t3)
} else {
lastTime = new Date()
}
return new Promise((r2) => {
t3 = setTimeout(() => {
r2(fn2(...args))
}, wait)
})
}
}
const LogicSymbol = {
and: ['\u4E14', '\u5E76\u4E14', 'and', '&&'],
}
const ComparisonOperators = {
'=': ['=', '==', '\u7B49\u4E8E'],
'!=': ['!=', '<>', '\u4E0D\u7B49\u4E8E'],
'>': ['>', '\u5927\u4E8E'],
'<': ['<', '\u5C0F\u4E8E'],
'>=': ['>=', '\u5927\u4E8E\u7B49\u4E8E'],
'<=': ['<=', '\u5C0F\u4E8E\u7B49\u4E8E'],
contain: ['\u5305\u542B'],
notContain: ['\u4E0D\u5305\u542B'],
isEmpty: ['\u4E3A\u7A7A'],
isNotEmpty: ['\u4E0D\u4E3A\u7A7A'],
}
const ComparisonOperatorsEnum = {
'=': '=',
'!=': '!=',
'>': '>',
'<': '<',
'>=': '>=',
'<=': '<=',
contain: '\u5305\u542B',
notContain: '\u4E0D\u5305\u542B',
isEmpty: '\u4E3A\u7A7A',
isNotEmpty: '\u4E0D\u4E3A\u7A7A',
}
const InputTypeEnum = {
text: 'text',
select: 'select',
date: 'date',
}
;[
{ label: '\u8F93\u5165', value: InputTypeEnum.text },
{ label: '\u4E0B\u62C9', value: InputTypeEnum.select },
{ label: '\u65E5\u671F', value: InputTypeEnum.date },
]
const DateTypeEnum = {
date: 'yyyy-MM-dd',
datetime: 'yyyy-MM-dd HH:mm:ss',
month: 'yyyy-MM',
year: 'yyyy',
relative: 'relative',
today: 'today',
yesterday: 'yesterday',
thisWeek: 'thisWeek',
lastWeek: 'lastWeek',
thisMonth: 'thisMonth',
lastMonth: 'lastMonth',
thisQuarter: 'thisQuarter',
lastQuarter: 'lastQuarter',
thisYear: 'thisYear',
lastYear: 'lastYear',
}
const DateType = [
{
label: '\u65E5\u671F',
value: DateTypeEnum.date,
},
{
label: '\u65E5\u671F\u65F6\u95F4',
value: DateTypeEnum.datetime,
},
{
label: '\u5E74\u6708',
value: DateTypeEnum.month,
},
{
label: '\u5E74',
value: DateTypeEnum.year,
},
{
label: '\u76F8\u5BF9',
value: DateTypeEnum.relative,
},
{
label: '\u4ECA\u5929',
value: DateTypeEnum.today,
},
{
label: '\u6628\u5929',
value: DateTypeEnum.yesterday,
},
{
label: '\u672C\u5468',
value: DateTypeEnum.thisWeek,
},
{
label: '\u4E0A\u5468',
value: DateTypeEnum.lastWeek,
},
{
label: '\u672C\u6708',
value: DateTypeEnum.thisMonth,
},
{
label: '\u4E0A\u6708',
value: DateTypeEnum.lastMonth,
},
{
label: '\u672C\u5B63\u5EA6',
value: DateTypeEnum.thisQuarter,
},
{
label: '\u4E0A\u5B63\u5EA6',
value: DateTypeEnum.lastQuarter,
},
{
label: '\u672C\u5E74\u5EA6',
value: DateTypeEnum.thisYear,
},
{
label: '\u4E0A\u5E74\u5EA6',
value: DateTypeEnum.lastYear,
},
]
const RelativeDirectionEnum = { before: '\u8FD1', after: '\u540E' }
const DateTimeUnitEnum = {
day: 'day',
hour: 'hour',
minute: 'minute',
second: 'second',
}
const DateTimeUnit = [
{ label: '\u5929', value: DateTimeUnitEnum.day },
{ label: '\u65F6', value: DateTimeUnitEnum.hour },
{ label: '\u5206', value: DateTimeUnitEnum.minute },
{ label: '\u79D2', value: DateTimeUnitEnum.second },
]
const CONDITION_LIST_WHERE_JSON = 'CONDITION_LIST_WHERE_JSON'
const useHook = (node2, emit$1, running2) => {
const props2 = reactive(node2.props)
let active = ref(false)
if (!props2.allChartDatas) props2.allChartDatas = {}
const allChartDatas = computed(() => props2.allChartDatas)
const fieldOptions = computed(() => {
const options2 = /* @__PURE__ */ new Map()
const result = Object.keys(allChartDatas.value).reduce((t3, chartId) => {
const keys3 = Object.keys(allChartDatas.value[chartId])
keys3.length &&
keys3.forEach((key2) => {
const e2 = allChartDatas.value[chartId][key2]
t3[e2.fieldName] = t3[e2.fieldName] ? t3[e2.fieldName] + 1 : 1
if (options2.has(e2.fieldName)) {
const item2 = options2.get(e2.fieldName)
if (
!(Array.isArray(e2.dataSetId)
? e2.dataSetId.includes(item2.dataSetId)
: item2.dataSetId === e2.dataSetId)
)
options2.set(e2.fieldName, {
...e2,
dataSetId: [e2.dataSetId, item2.dataSetId].flat(),
})
} else {
options2.set(e2.fieldName, e2)
}
})
return t3
}, {})
const fields = Array.from(options2.values()).filter((e2) => {
return result[e2.fieldName] === Object.keys(allChartDatas.value).length
})
console.info('fields', fields, allChartDatas.value)
return fields
})
const state2 = reactive({ dataSetFieldMap: {} })
let conditionList2 = ref([])
onMounted(() => {
setTimeout(() => {
let ids = Object.keys(props2.allChartDatas)
ids.forEach((id2) => {
if (!document.getElementById(id2)) {
delete props2.allChartDatas[id2]
props2.conditionList = ''
let conditionListWhereJSON =
Local.get(CONDITION_LIST_WHERE_JSON) || {}
delete conditionListWhereJSON[id2]
Local.set(
CONDITION_LIST_WHERE_JSON,
JSON.stringify(conditionListWhereJSON)
)
}
})
init2()
}, 0)
})
const init2 = (query = true) => {
const json = Local.get(CONDITION_LIST_WHERE_JSON)
let conditionObj = json || {}
try {
if (running2 && conditionObj[node2.id]) {
conditionList2.value = JSON.parse(
conditionObj[node2.id] || props2.conditionList || '[]'
)
} else {
conditionList2.value = JSON.parse(props2.conditionList || '[]')
}
} catch (error2) {
console.error('\u7B5B\u9009\u5668\u63D0\u53D6\u7F13\u5B58\u62A5\u9519')
}
conditionList2.value.forEach((e2) => {
if (e2[2].type === InputTypeEnum.select) {
getOptions(e2[0])
}
})
query && emitQuery()
}
const confirm2 = () => {
const str = conditionToJSON()
if (!str && conditionList2.value.length) {
return
}
if (running2) {
let whereJson2 = Local.get(CONDITION_LIST_WHERE_JSON) || {}
whereJson2[node2.id] = JSON.stringify(conditionList2.value)
Local.set(CONDITION_LIST_WHERE_JSON, whereJson2)
} else {
props2.conditionList = JSON.stringify(conditionList2.value)
}
emit$1('change', { target: { value: str } })
emitQuery()
filterClick()
}
const cancel2 = () => {
init2(false)
filterClick()
}
const filterClick = () => {
active.value = !active.value
}
const getFieldValue = (optionValue) => {
if (optionValue) {
return state2.dataSetFieldMap[optionValue]?.filter(
(item2) => item2 !== ''
)
}
return []
}
const getOptions = (field2) => {
const fieldObj = fieldOptions.value.find((e2) => e2.optionValue === field2)
if (!fieldObj) return
const dataSetIds = fieldObj.dataSetId
const curveGroupId = fieldObj.curveGroupId
let limit2 = props2.maxCount || 100
if (!state2.dataSetFieldMap[field2]) state2.dataSetFieldMap[field2] = []
return new Promise((resolve2, reject2) => {
;[dataSetIds].flat().forEach((dataSetId) => {
if (dataSetId) {
request({
url: `/api/v1/data/columndatas?dataSetId=${dataSetId}&fieldName=${fieldObj.fieldName}&limit=${limit2}`,
method: 'get',
})
.then((res) => {
let values2 = res?.values
if (values2) {
if (fieldObj.fieldType === 1) {
values2 = values2.map((e2) => (e2 ? Number(e2) : e2))
}
const result = Array.from(
/* @__PURE__ */ new Set([
...values2,
...state2.dataSetFieldMap[field2],
])
)
state2.dataSetFieldMap[field2].length = 0
result.forEach((item2) => {
state2.dataSetFieldMap[field2].push(item2)
})
}
resolve2(res)
})
.catch((err) => {
reject2(err)
})
} else {
request({
url: `/api/v1/trend/curvegroup/columndatas?curveGroupId=${curveGroupId}&fieldName=${fieldObj.fieldName}&limit=${limit2}`,
method: 'get',
})
.then((res) => {
let values2 = res.values
if (values2) {
if (fieldObj.fieldType === 1) {
values2 = values2.map((e2) => (e2 ? Number(e2) : e2))
}
const result = Array.from(
/* @__PURE__ */ new Set([
...values2,
...state2.dataSetFieldMap[field2],
])
)
state2.dataSetFieldMap[field2].length = 0
result.forEach((item2) => {
state2.dataSetFieldMap[field2].push(item2)
})
}
resolve2(res)
})
.catch((err) => {
reject2(err)
})
}
})
})
}
const changeField2 = (item2, val2) => {
clear2(item2)
const field2 = fieldOptions.value.find((e2) => e2.optionValue === val2)
if (!field2) return
item2[1] = '='
item2[2].type = fieldTypeMap(field2.fieldType)
if (item2[2].type === InputTypeEnum.date) {
item2[2].content = [DateTypeEnum.date, '']
}
}
const changeComparison = (item2, val2) => {
if (item2[2].type === InputTypeEnum.date) {
if (['isEmpty', 'isNotEmpty'].includes(val2)) clear2(item2)
else {
if (lodash$2.exports.isNil(item2[2].content?.[1]))
item2[2].content = [DateTypeEnum.date, '']
}
}
}
const addCondition = () => {
const field2 = fieldOptions.value[0]?.optionValue ?? ''
const inputType = field2
? fieldTypeMap(fieldOptions.value[0].fieldType)
: InputTypeEnum.text
let value2 = {}
if (inputType === InputTypeEnum.date) {
value2 = {
type: inputType,
content: [DateTypeEnum.date, ''],
}
}
conditionList2.value.push([field2, '=', value2])
}
const deleteCondition = (i2) => {
conditionList2.value.splice(i2, 1)
}
const conditionToJSON = () => {
const result = conditionList2.value
.map((e2) => {
const fieldName =
fieldOptions.value.find((ie2) => ie2.optionValue === e2[0])
?.fieldName ?? e2[0]
const compareKey =
Object.keys(ComparisonOperators).find((key2) => {
const arr = ComparisonOperators[key2]
return e2[1] === key2 || arr.includes(e2[1])
}) || ''
const chunk2 = [fieldName, ComparisonOperatorsEnum[compareKey]]
if (['isEmpty', 'isNotEmpty'].includes(compareKey)) {
return chunk2.join(' ')
}
if (!e2[0] || !e2[1]) {
ElMessage.warning(
_t(
'\u7B5B\u9009\u6761\u4EF6\u89E3\u6790\u975E\u6CD5\uFF0C\u8BF7\u68C0\u67E5\uFF01'
)
)
return
}
const { type: type4, content: content2 } = e2[2]
if (!type4 || lodash$2.exports.isUndefined(content2)) {
ElMessage.warning(
_t(
'\u7B5B\u9009\u6761\u4EF6\u89E3\u6790\u975E\u6CD5\uFF0C\u8BF7\u68C0\u67E5\uFF01'
)
)
return
}
if (type4 !== InputTypeEnum.date) {
if (!lodash$2.exports.isUndefined(content2)) {
chunk2.push(content2)
}
} else {
if (
lodash$2.exports.isUndefined(content2) ||
lodash$2.exports.isUndefined(content2[0])
) {
ElMessage.warning(
_t(
'\u7B5B\u9009\u6761\u4EF6\u89E3\u6790\u975E\u6CD5\uFF0C\u8BF7\u68C0\u67E5\uFF01'
)
)
return
}
const dateTypeOption = DateType.find(
(ie2) => ie2.value === content2[0] || ie2.label === content2[0]
)
let [, dateString, count2, unit] = e2[2].content
switch (dateTypeOption?.value) {
case DateTypeEnum.date:
case DateTypeEnum.datetime:
case DateTypeEnum.year:
case DateTypeEnum.month:
if (!dateString) {
ElMessage.warning(
_t(
'\u7B5B\u9009\u6761\u4EF6\u89E3\u6790\u975E\u6CD5\uFF0C\u8BF7\u68C0\u67E5\uFF01'
)
)
return
} else {
chunk2.push(dateTypeOption.label + ' ' + dateString)
}
break
case DateTypeEnum.relative:
if (!dateString || !count2 || !unit) {
ElMessage.warning(
_t(
'\u7B5B\u9009\u6761\u4EF6\u89E3\u6790\u975E\u6CD5\uFF0C\u8BF7\u68C0\u67E5\uFF01'
)
)
return
} else {
const direction2 =
Object.keys(RelativeDirectionEnum).find(
(key2) =>
key2 === dateString ||
RelativeDirectionEnum[key2] === dateString
) || ''
unit =
DateTimeUnit.find(
(e22) => e22.label === unit || e22.value === unit
)?.label || ''
chunk2.push(
`${RelativeDirectionEnum[direction2]} ${count2} ${unit}`
)
}
break
default:
chunk2.push(dateTypeOption?.label)
}
}
return chunk2.join(' ')
})
.filter((e2) => e2)
return result.join(' \u4E14 ')
}
const transformDate = (date4, format2) => {
return dayjs(date4).format(
format2.replace('yyyy', 'YYYY').replace('dd', 'DD')
)
}
const JSONToCondition = (json = '') => {
if ([json[0], json[json.length - 1]].every((e2) => e2 === '"')) {
json = json.substring(1, json.length - 1)
}
const jsonChunk = json.split(
new RegExp(`[ ]+${LogicSymbol.and.join('|')}[ ]+`)
)
if (jsonChunk && jsonChunk.length) {
conditionList2.value.length = 0
jsonChunk.forEach((chunk2) => {
if (chunk2) {
const [fieldName, compareStr, ...parts] = chunk2
.trim()
.split(/(? e2.fieldName === fieldName
)
const field2 = fieldObj?.optionValue ?? fieldName
const compareKey =
Object.keys(ComparisonOperators).find((key2) => {
const arr = ComparisonOperators[key2]
return compareStr === key2 || arr.includes(compareStr)
}) || ''
let type4 = InputTypeEnum.text
let dateType = void 0
let content2 = void 0
if (
parts.length === 0 &&
!['isEmpty', 'isNotEmpty'].includes(compareKey)
) {
ElMessage.warning(
_t(
'\u7B5B\u9009\u6761\u4EF6\u89E3\u6790\u975E\u6CD5\uFF0C\u8BF7\u68C0\u67E5\uFF01'
)
)
return
}
if (parts.length === 1) {
if (fieldObj?.fieldType === 3) {
dateType = DateType.find((e2) => e2.label === parts[0])?.value
content2 = [dateType]
} else {
content2 = parts[0]
}
}
if (parts.length === 2) {
dateType = DateType.find((e2) => e2.label === parts[0])?.value
content2 = [dateType, transformDate(parts[1], dateType)]
}
if (parts.length === 3) {
dateType = DateTypeEnum.relative
parts[0] =
Object.keys(RelativeDirectionEnum).find(
(key2) =>
key2 === parts[0] || RelativeDirectionEnum[key2] === parts[0]
) || ''
parts[2] =
DateTimeUnit.find(
(e2) => e2.label === parts[2] || e2.value === parts[2]
)?.value || ''
content2 = [dateType, ...parts]
}
if (dateType && Array.isArray(content2)) {
type4 = InputTypeEnum.date
} else if (
['contain', 'notContain'].includes(compareKey) &&
content2.includes(',')
) {
type4 = InputTypeEnum.select
} else {
type4 = InputTypeEnum.text
}
const condition2 = [field2, compareKey, {}]
if (content2)
condition2[2] = {
type: type4,
content: content2,
}
conditionList2.value.push(condition2)
}
})
}
}
const checkInputType = (item2) => {
clear2(item2)
if (!item2[2]) item2[2] = {}
item2[2].type =
item2[2].type === InputTypeEnum.select
? InputTypeEnum.text
: InputTypeEnum.select
if (item2[2].type === InputTypeEnum.select) {
getOptions(item2[0])
}
}
const clear2 = (item2) => {
if (item2[2].content) item2[2].content = void 0
}
const changeDateType = (item2, val2) => {
clear2(item2)
switch (val2) {
case DateTypeEnum.date:
case DateTypeEnum.datetime:
case DateTypeEnum.month:
case DateTypeEnum.year:
item2[2].content = [val2, '']
break
case DateTypeEnum.relative:
item2[2].content = [val2, 'before', 1, DateTimeUnitEnum.day]
break
default:
item2[2].content = [val2]
break
}
}
on$1(ControllerEventType.CONTROLLER_STATE_CHANGED, (detail) => {
if (detail[node2.id]) {
const { chartIds, relativeList } = detail[node2.id]
props2.allChartDatas = {}
chartIds.forEach((chartId) => {
if (!Object.keys(allChartDatas.value).includes(chartId)) {
allChartDatas.value[chartId] = {}
}
})
relativeList.forEach((item2) => {
allChartDatas.value[item2.chartId][item2.fieldName] = item2
})
}
})
const emitQuery = () => {
const clone2 = lodash$2.exports.cloneDeep(conditionList2.value)
let value2 = clone2.map((e2) => {
if (e2[2].type === InputTypeEnum.select) {
if (!Array.isArray(e2[2].content)) e2[2].content = [e2[2].content]
}
return e2
})
let detail = {
controllerId: node2.id,
relativeList: Object.keys(allChartDatas.value).map((chartId) => ({
chartId,
})),
value: value2,
conditionStr: conditionToJSON(),
}
emit(ControllerEventType.FILTER_DATA, detail)
}
function getValueToVariable(variableName2) {
Variable.store[variableName2] = conditionToJSON()
}
const setValue = (val2) => {
setTimeout(() => {
JSONToCondition(val2)
confirm2()
filterClick()
})
}
onBeforeUnmount(() => {
emit(ControllerEventType.DESTROY_CONTROLLER, {
controllerId: node2.id,
})
})
return {
active,
conditionList: conditionList2,
fieldOptions,
confirm: confirm2,
cancel: cancel2,
filterClick,
changeField: changeField2,
changeComparison,
getFieldValue,
addCondition,
deleteCondition,
checkInputType,
changeDateType,
getValueToVariable,
setValue,
}
}
const fieldTypeMap = (fieldType2) => {
if (!fieldType2) return ''
const types2 = {
0: InputTypeEnum.text,
1: InputTypeEnum.text,
2: InputTypeEnum.text,
3: InputTypeEnum.date,
}
return types2[fieldType2]
}
const useFilterController = (node2, loadData_2, isUseCache2) => {
let whereJson2 = ref('')
let localStorageWhereJson = localStorage.getItem(CONDITION_LIST_WHERE_JSON)
if (localStorageWhereJson) {
let whereJsonObj = JSON.parse(localStorageWhereJson)
let queryControllerId = node2.props.dataConfig.queryControllerId
if (whereJsonObj[queryControllerId]) {
whereJson2.value = whereJsonObj[queryControllerId]
}
}
const props2 = node2.props
const dataConfig = node2.props.dataConfig
const createRelativeList = () => {
return new Promise((resolve2) => {
let dataType2 =
node2.props.dataConfig.dataType === DATA_TYPE.HISTORY
? 'history'
: 'table'
let fieldsAliasMap = {}
let dimissions = props2.dataConfig.dimissions.filter((item2) => item2.id)
if (props2.dataConfig.isVariableName) {
dimissions = DIMENSION_LIST.slice(0, 1)
}
let indexes = props2.dataConfig.indexes.filter((item2) => item2.id)
if (node2.props.dataConfig.dataType !== 0) {
indexes = []
}
let fields = [].concat(dimissions, indexes)
if (dataConfig.dataSetId) {
fields.forEach((item2) => {
fieldsAliasMap[item2.id] = item2.aliasName
})
fetchDataSetFieldList(
dataConfig.dataSetId,
dataConfig.dataSetType
).then((res) => {
resolve2([
...res.map((item2) => {
return {
id: item2.id,
fieldName: item2.fieldName,
fieldType: item2.fieldType,
optionValue: item2.fieldName,
chartId: node2.id,
dataSetId: dataConfig.dataSetId,
field: item2.fieldName,
aliasName: fieldsAliasMap[item2.id] || '',
dataType: dataType2,
}
}),
])
})
} else {
resolve2(
fields.map((item2) => {
return {
id: item2.id,
fieldName: item2.fieldName,
fieldType: item2.fieldType,
optionValue: item2.fieldName,
chartId: node2.id,
dataSetId: dataConfig.dataSetId,
field: item2.fieldName,
aliasName: item2.aliasName,
dataType: dataType2,
}
})
)
}
})
}
const cancelUnionFilter = () => {
emit(ControllerEventType.UN_UNION_FILTER, {
removeChartId: node2.id,
prevControllerId: props2.dataConfig.queryControllerId,
})
}
const unionFilter = async () => {
emit(ControllerEventType.UNION_FILTER, {
controllerId: node2.props.dataConfig.queryControllerId,
relativeList: await createRelativeList(),
chartId: node2.id,
})
}
const unionController = async () => {
cancelUnionFilter()
unionFilter()
}
on$1(ControllerEventType.CHART_DATA, (detail) => {
const chartIds = detail?.relativeList.map((relative) => relative.chartId)
if (chartIds.includes(node2.id)) {
if (!isUseCache2(node2)) loadData_2()
}
})
on$1(ControllerEventType.FILTER_DATA, (detail) => {
if (
detail.value &&
detail.controllerId === props2.dataConfig.queryControllerId
) {
whereJsonMap[node2.id] = {
value: JSON.stringify(detail.value),
label: detail.conditionStr,
}
if (detail?.relativeList) {
const chartIds = detail?.relativeList.map(
(relative) => relative.chartId
)
if (chartIds.includes(node2.id)) {
whereJson2.value = whereJsonMap[node2.id]?.value
if (!isUseCache2(node2)) loadData_2()
}
}
} else {
whereJsonMap[node2.id] = { value: '', label: '' }
}
})
let clearQueryControllerIdTimer
on$1(ControllerEventType.DESTROY_CONTROLLER, function (detail) {
if (props2.dataConfig.queryControllerId == detail.controllerId) {
clearQueryControllerIdTimer = setTimeout(() => {
props2.dataConfig.queryControllerId = ''
delete whereJsonMap[node2.id]
Local.set(CONDITION_LIST_WHERE_JSON, JSON.stringify(whereJsonMap))
}, 1e3)
}
})
onMounted(() => {
let queryControllerId = props2.dataConfig.queryControllerId
if (queryControllerId) {
setTimeout(() => {
let filter2 = document.getElementById(queryControllerId)
if (!filter2) {
props2.dataConfig.queryControllerId = ''
unionController()
} else {
unionFilter()
}
})
}
})
onBeforeUnmount(() => {
clearQueryControllerIdTimer && clearTimeout(clearQueryControllerIdTimer)
cancelUnionFilter()
})
watch$1(
[
() => props2.dataConfig.dimissions.filter((item2) => item2.id),
() => props2.dataConfig.indexes.filter((item2) => item2.id),
],
() => {
unionController()
},
{
deep: true,
}
)
watch$1(
() => props2.dataConfig.queryControllerId,
(val2) => {
if (val2 === '') {
cancelUnionFilter()
}
}
)
return {
whereJson: whereJson2,
createRelativeList,
}
}
var Chart_vue_vue_type_style_index_0_scoped_true_lang$1 = ''
const _withScopeId$38 = (n2) => (
pushScopeId('data-v-4410da82'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$5w = {
key: 0,
class: 'chart-infos',
}
const _hoisted_2$4B = ['title']
const _hoisted_3$49 = /* @__PURE__ */ _withScopeId$38(() =>
/* @__PURE__ */ createElementVNode(
'svg',
{
class: 'icon',
'aria-hidden': 'true',
},
[
/* @__PURE__ */ createElementVNode('use', {
'xlink:href': '#icon-shujuhuoqushibai',
}),
],
-1
)
)
const _hoisted_4$3E = [_hoisted_3$49]
const _hoisted_5$3i = ['t']
const _sfc_main$6y = /* @__PURE__ */ defineComponent({
props: {
node: null,
updateChart: null,
setOption: null,
editing: { type: Boolean },
running: { type: Boolean },
},
setup(__props) {
const $props = __props
useCssVars((_ctx) => ({
'60a2b49e': unref(state$6).current.zoom,
}))
const t = Language$1.t
const collectText = () => {
const linster = [
props.chartConfig.title.text,
props.axisConfig.xAxis.title,
...props.axisConfig.yAxis.map((ele) => ele.title),
]
indexesComputed.value.forEach((item2) => {
linster.push(
item2.aliasName,
item2.fieldName,
`${item2.fieldName}(${methodList[item2.mode]})`
)
})
props.dataConfig?.dimissions?.forEach((item2) => {
linster.push(item2.aliasName, item2.fieldName)
})
linster.map((ele) => {
t(ele)
})
}
Language$1.useChange(() => {
updateChartConfigAndData()
})
const node = reactive($props.node)
const isVariableName = computed(() => {
return node.props.dataConfig.isVariableName
})
const defaultPropsCopy = lodash$2.exports.cloneDeep(defaultProps$8)
const props = lodash$2.exports.defaults(
reactive(node.props),
defaultPropsCopy
)
const pieConfig = reactive(props.pieConfig)
const chartConfig = reactive(props.chartConfig)
let aggregateErrorMsg = ref('')
const style = node.style
let data = []
window._chartData = data
let mappingkey = {}
let mappingName = {}
let differences = {}
const el = ref()
let chart
let cancelIdleId = 0
const dataType = computed(() => {
return {
isAggregation: !props.dataConfig.dataType,
isHistory: props.dataConfig.dataType === DATA_TYPE.HISTORY,
isVariable: props.dataConfig.dataType === DATA_TYPE.VARIABLE,
}
})
onMounted(() => {
chart = init$2(el.value, void 0, {
useDirtyRect: true,
})
chart.on('rendered', () => {
const t22 = setTimeout(() => {
isRendered = true
clearTimeout(t22)
}, 0)
})
})
onBeforeUnmount(() => {
chart?.dispose()
clearTimer()
clearTimeout(updateCacheChartDataTimer)
cacheSocketStop()
cancelIdleCallback(cancelIdleId)
})
function click() {
window.chart = chart
window.updateChart = updateChart
}
const getKey = (mapping = []) => {
props.dataConfig.indexes
?.filter((i2) => i2.id)
.forEach((item2) => {
let modeText =
(dataType.value.isHistory && !isVariableName.value) ||
item2.mode === null
? ''
: `(${methodList[item2.mode]})`
mappingkey[item2.id + '-' + item2.mode] = item2.fieldName
mappingkey[item2.id] = item2.fieldName
mappingName[item2.id + '-' + item2.mode] =
item2.aliasName || item2.fieldName + modeText
mappingName[item2.id] = item2.aliasName || item2.fieldName
for (let m2 = 0; m2 < mapping.length; m2++) {
if (
mapping[m2].id == item2.id &&
mapping[m2].method == item2.mode
) {
mappingkey[item2.id + '-' + item2.mode] = mapping[m2].name
mappingName[item2.id + '-' + item2.mode] =
item2.aliasName || mapping[m2].fieldName + modeText
mappingkey[item2.id] = mapping[m2].name
mappingName[item2.id] = item2.aliasName || mapping[m2].fieldName
break
}
}
})
props.dataConfig.dimissions
?.filter((i2) => i2.id)
.forEach((item2) => {
mappingkey[item2.id] = item2.fieldName
for (let m2 = 0; m2 < mapping.length; m2++) {
if (mapping[m2].id == item2.id) {
mappingkey[item2.id] = mapping[m2].name
break
}
}
})
}
const limit = computed(() => {
if (isChartPie(node)) {
if ($props.editing) {
return pieConfig.dataConfig.editingLimit
} else {
return pieConfig.dataConfig.runningLimit
}
} else {
if ($props.editing) {
return props.dataConfig.editingLimit
} else {
return props.dataConfig.runningLimit
}
}
})
const indexesComputed = computed(() => {
let indexes = props.dataConfig.indexes.filter((i2) => i2.id) || []
if (isUseCache(node)) return uniqueFun(indexes, 'id')
return indexes
})
let isStartTimer = false
async function loadData(isUpdateChart = true) {
if (!data.length)
chart?.showLoading({ text: '', lineWidth: 1, spinnerRadius: 8 })
let dataSetId = props.dataConfig.dataSetId
if (dataType.value.isHistory) {
dataSetId = 'history'
} else if (dataType.value.isVariable) {
dataSetId = 'realTime'
}
if (
dataSetId &&
props.dataConfig.indexes?.filter((i2) => i2.id).length &&
(dataType.value.isAggregation || dataType.value.isHistory)
) {
let fetchData1 = await fetchData(
node,
node.id,
dataSetId,
props.dataConfig.dimissions || [],
indexesComputed.value || [],
whereJson.value,
limit.value
).catch((err) => {
return {
errorMsg:
err.response?.data?.msg ||
Language$1._t('\u8BF7\u6C42\u51FA\u9519'),
}
})
if (fetchData1.errorMsg) {
aggregateErrorMsg.value = fetchData1.errorMsg
setTimeout(() => {
chart?.resize()
}, 0)
} else {
aggregateErrorMsg.value = ''
if (!fetchData1 || fetchData1 == void 0) {
freshTimer && clearTimeout(freshTimer)
}
if (dataSetId === 'history') {
let { list: list2, mapping } = transformHistoryData(
fetchData1,
props
)
fetchData1.list = list2
fetchData1.mapping = mapping
}
data.length = 0
data = [...fetchData1.list]
window._chartData = data
getKey(fetchData1.mapping)
}
} else {
data.length = 0
if (dataType.value.isAggregation) {
data.push(...defaultData)
} else {
createVariableData()
}
getKey()
}
chart?.hideLoading()
if (isUpdateChart) {
updateChartConfigAndData()
}
if (isUseCache(node) && $props.running) {
cacheSocketStart()
} else if (props.dataConfig.audoRefresh && !isStartTimer) {
isStartTimer = true
startTimer()
}
}
const loadData_ = debouncePromise(loadData, 300, { maxWait: 3e3 })
let { whereJson } = useFilterController(node, loadData_, isUseCache)
watch$1(
[
() => props.dataConfig.dataSetId,
() => props.dataConfig.editingLimit,
() => pieConfig.dataConfig.editingLimit,
() => props.dataConfig.useCache,
],
loadData_,
{
immediate: true,
deep: true,
}
)
let dimissionsIndexesStrings = ''
watch$1(
[
() => props.dataConfig.dimissions.filter((item2) => item2.id),
() => props.dataConfig.indexes.filter((item2) => item2.id),
],
(n2) => {
let str = JSON.stringify(n2)
if (dimissionsIndexesStrings === str) return
dimissionsIndexesStrings = str
loadData_()
},
{
deep: true,
}
)
watch$1(
() => props.dataConfig.useCache,
() => {
if (isUseCache(node)) {
props.dataConfig.audoRefresh = false
}
},
{
immediate: true,
deep: true,
}
)
let isRendered = true
function cacheSocketCallback(cacheUpdateData) {
const cacheInstanceID = cacheUpdateData.cacheInstanceID
const cacheData = cacheUpdateData[node.id]
const notifyType = cacheUpdateData.notifyType
if (
cacheInstanceID != props.dataConfig.dataSetId ||
!isUseCache(node) ||
!cacheData
)
return
const KEY = '_id'
if (notifyType == 0) {
cacheData.data.forEach((item2) => {
let newData = {}
for (let i2 in mappingkey) {
newData[mappingkey[i2]] = item2[mappingkey[i2]]
}
newData[KEY] = item2[KEY]
data.push(newData)
})
}
if (notifyType == 2) {
let lastDelTime = cacheData.data[0][KEY]
cacheData.data.forEach((item2) => {
if (Number(item2[KEY]) > Number(item2[KEY])) {
lastDelTime = item2[KEY]
}
})
let delIndex = lodash$2.exports.findIndex(data, (d3) => {
return d3[KEY] == lastDelTime
})
if (delIndex > -1) {
data.splice(0, delIndex + 1)
}
}
if (notifyType == 5) {
data.splice(0)
}
if (data.length > limit.value) {
data.splice(0, data.length - limit.value)
}
updateChartData()
}
function cacheSocketStart() {
cacheSocketStop()
if (
isUseCache(node) &&
props.dataConfig.indexes?.filter((i2) => i2.id).length
) {
let catchData = {
dataSetId: props.dataConfig.dataSetId,
id: node.id,
dimensions: props.dataConfig.dimissions
.filter((d3) => d3.id)
.map((item2) => {
return {
fieldName: item2.id,
timeFormat: item2.timeFormat,
}
}),
measures: indexesComputed.value.map((item2) => {
return {
fieldName: item2.id,
dataFormat: item2.dataFormat || 0,
}
}),
}
CacheSocket.useOn('join', cacheSocketCallback, catchData)
}
}
function cacheSocketStop() {
CacheSocket.off('join', cacheSocketCallback)
}
watch$1(
() => {
return props.dataConfig.dataType
},
(val2) => {
if (val2 === 2) {
startUpdateChartDataInterval()
}
},
{
immediate: true,
}
)
const createVariableData = () => {
let fieldNames = node.props.dataConfig.indexes.map(
(item2) => item2.fieldName
)
node.props.dataConfig.indexes.forEach((item2, i2) => {
let variable = {}
fieldNames.forEach((fieldName, n2) => {
variable[fieldName] =
i2 === n2 ? Variable.getByName(fieldName)?.value : null
})
data.push(variable)
})
}
let updateCacheChartDataTimer
async function startUpdateChartDataInterval() {
if (
$props.editing &&
(dataType.value.isAggregation || dataType.value.isHistory)
)
return
if (
!isUseCache(node) &&
(dataType.value.isAggregation || dataType.value.isHistory)
)
return
let cloneData = lodash$2.exports.cloneDeep(data)
if (dataType.value.isVariable) {
let serviceState = await request.get(`/api/v1/project/service/var`, {
silent: true,
})
if (!serviceState?.state) {
clearTimeout(updateCacheChartDataTimer)
updateCacheChartDataTimer = setTimeout(() => {
startUpdateChartDataInterval()
}, 1e3)
return
}
data.length = 0
createVariableData()
}
if (!lodash$2.exports.isEqual(cloneData, data)) {
updateChartData()
}
clearTimeout(updateCacheChartDataTimer)
updateCacheChartDataTimer = setTimeout(() => {
startUpdateChartDataInterval()
}, 1e3)
}
let freshTimer
async function setTimer() {
clearTimer()
await loadData(false)
updateChartData()
freshTimer = setTimeout(setTimer, props.dataConfig.audoRefreshTime * 1e3)
}
const startTimer = () => {
clearTimer()
if (props.dataConfig.useCache && useCacheCharts(node)) return
if (!props.dataConfig.audoRefresh) return
if (!$props.running) return
setTimer()
}
watch$1(
[
() => props.dataConfig.audoRefresh,
() => props.dataConfig.audoRefreshTime,
],
() => {
startTimer()
}
)
function clearTimer() {
freshTimer && clearTimeout(freshTimer)
}
function setMarkLine(indexesItem) {
const markLine = chartConfig.markLine
let field2 = indexesItem.id + `-${indexesItem.mode}`
let lines = []
for (let m2 = 0; m2 < markLine.length; m2++) {
let mark = markLine[m2]
let newLine = {
name: mark.name,
lineStyle: {
type: mark.lineStyle,
color: mark.color,
},
}
if (
mark.calculation == 'absolute' &&
mark.yAxisIndex == indexesItem.yAxisIndex
) {
lines.push({
...newLine,
yAxis: mark.value,
})
}
if (mark.calculation == 'calculate' && mark.field == field2) {
lines.push({
...newLine,
type: mark.value,
})
}
}
return {
symbol: 'none',
data: lines,
label: {
position: 'insideEndTop',
color: 'inherit',
},
}
}
function handlePieLabelFormatter(params2, node2, dataFormat) {
const label = node2.props.chartConfig.label
let text2 = ''
if (label.list.includes('dimissions')) {
text2 += params2.name
if (label.list.length >= 2) text2 += '\n'
}
if (label.list.includes('measure')) {
if (dataFormat == 4 || dataFormat == 5) {
text2 += params2.value + '%'
} else {
text2 += params2.value
}
if (label.list.includes('percentage')) text2 += '\n'
}
if (label.list.includes('percentage')) text2 += params2.percent + '%'
text2 += node2.props.pieConfig.unit
return text2
}
function handlePieTotal() {
if (!props.pieConfig.total) return ''
let num2 = 0
for (let i2 = 0, iLen = data.length; i2 < iLen; i2++) {
const item2 = data[i2]
for (const i3 in item2) {
const element = item2[i3]
if (!isNaN(Number(element))) num2 += Number(element)
}
}
return '\u603B\u8BA1\uFF1A' + num2
}
function handleXAxisAxisLabelInterval(displayType, interval) {
switch (displayType) {
case 'auto':
return 'auto'
case 'all':
return 0
case 'custom':
return interval
default:
return 'auto'
}
}
function isPie() {
if (node.is && node.is.indexOf('Pie') >= 0) return true
return false
}
function isChartHorizontal() {
if (node.is && node.is.indexOf('ChartBarHorizontal') > -1) return true
return false
}
function exportChartExcel() {
if ($props.editing) return
if (
(props.dataConfig.dataSetId || props.dataConfig.dataType === 1) &&
props.dataConfig.indexes?.filter((i2) => i2.id).length
) {
exportChartsExcel(node.name, [node], true, true, false)
}
}
const chartContainer = ref()
async function exportChartImage() {
if (!chart || $props.editing) return
chart.setOption({
toolbox: {
show: false,
},
})
let name2 = props.chartConfig.title.text
let timer2 = setTimeout(async () => {
clearTimeout(timer2)
if (!chart) return
let dom = chartContainer.value
let boxShadow2 = dom.style.boxShadow
dom.style.boxShadow = ''
let { imageUrl } = await getImg1(dom)
dom.style.boxShadow = boxShadow2
download(imageUrl, name2, 'png')
chart.setOption({
toolbox: {
show: true,
},
})
}, 150)
}
const getDataStyle = (value, conditionList, dataList) => {
const dataSymbol = props.lineConfig.dataSymbol
for (let i = 0; i < conditionList.length; i++) {
let c = conditionList[i]
let condition = c.condition
let cVal = parseFloat(c.value)
let val = parseFloat(value)
if (condition == 'nMax') {
let maxList = dataList.slice(dataList.length - cVal)
if (maxList.includes(val)) {
return {
itemStyle: {
color: c.color,
},
symbol: dataSymbol.type,
symbolSize: dataSymbol.show ? dataSymbol.size : 0,
}
}
} else if (condition == 'nMin') {
let minList = dataList.slice(0, cVal)
if (minList.includes(val)) {
return {
itemStyle: {
color: c.color,
},
symbol: dataSymbol.type,
symbolSize: dataSymbol.show ? dataSymbol.size : 0,
}
}
} else {
let bool = eval(val + condition + cVal)
if (bool) {
return {
itemStyle: {
color: c.color,
},
symbol: dataSymbol.type,
symbolSize: dataSymbol.show ? dataSymbol.size : 0,
}
}
}
}
return null
}
const initXAxisData = () => {
if (isVariableName.value) {
return node.props.dataConfig.indexes.map((d3) => {
return d3.aliasName || d3.fieldName
})
} else {
return data.map((item2) => {
return node.props.dataConfig.dimissions
.map((d3) => {
if (dataType.value.isHistory)
return item2['\u8BB0\u5F55\u65F6\u95F4']
return item2[mappingkey[d3.id]]
})
.join('-')
})
}
}
const toolbox = props.chartConfig.toolbox
const dataZoom = chartConfig.dataZoom
function fixLegendPosition() {
let maxLegend = ''
for (let key2 in mappingName) {
let len2 = mappingName[key2].length
if (maxLegend.length < len2) maxLegend = mappingName[key2]
}
const legend = chartConfig.legend
let select2 = dataZoom.select
const config2 = {
orient: 'vertical',
top: 0,
right: 0,
bottom: 0,
grid: {
top: (styleConverter(style).fontSize || 14) * 1.5 + 10,
right: 0,
bottom: 0,
left: 0,
},
pie: {
top: 0,
right: 0,
bottom: 0,
center: ['50%', '50%'],
},
}
switch (legend.position) {
case 'top':
config2.orient = 'horizontal'
config2.top = 0
config2.right = 0
config2.bottom = 'auto'
config2.grid.top = (styleConverter(style).fontSize || 14) * 1.5 + 10
config2.grid.right = 2
config2.grid.bottom = 0
config2.pie.top = legend.fontSize * 1.5 + 20
config2.pie.right = 10
config2.pie.bottom = 10
if (
toolbox.exportExcel.show ||
toolbox.exportImage.show ||
select2.x ||
select2.y
) {
config2.top += 20
config2.grid.top += 20
if (legend.show) {
config2.pie.top = legend.fontSize * 1.5 + 40
}
}
break
case 'right':
config2.orient = 'vertical'
config2.top = 'middle'
config2.right = 0
config2.bottom = 'auto'
config2.grid.right =
getTextStyle(
maxLegend.substring(
0,
maxLegend.length - 1 - (differences[maxLegend] || 0)
) + '...',
legend.fontSize,
legend.fontFamily
) + 20
config2.grid.bottom = 0
config2.pie.top = 10
config2.pie.right = legend.fontSize * 1.5 + 30
config2.pie.bottom = 10
config2.pie.center = ['35%', '50%']
if (
isPie() &&
(toolbox.exportExcel.show ||
toolbox.exportImage.show ||
select2.x ||
select2.y)
) {
config2.top = 20
}
break
case 'bottom':
config2.orient = 'horizontal'
config2.top = 'auto'
config2.bottom = 0
config2.grid.right = 0
config2.grid.bottom = 20
config2.pie.top = 10
config2.pie.right = 10
config2.pie.bottom = legend.fontSize * 1.5 + 20
break
}
return config2
}
const createDataZoom = () => {
const yAxisIndexList = props.axisConfig.yAxis.map((y2, i2) => i2)
const xAxisIndexList = [0]
const legendPosition = fixLegendPosition()
return !isChartPie($props.node)
? [
{
disabled: isChartHorizontal()
? !dataZoom.inside.y
: !dataZoom.inside.x,
id: 'insideX',
type: 'inside',
xAxisIndex: isChartHorizontal() ? yAxisIndexList : xAxisIndexList,
filterMode: 'none',
startValue:
dataZoom.show &&
dataZoom.slider.x &&
dataZoom.slider.xInit === 2 &&
dataZoom.slider.startValue
? data.length - dataZoom.slider.startValue
: null,
},
{
disabled: isChartHorizontal()
? !dataZoom.inside.x
: !dataZoom.inside.y,
id: 'insideY',
type: 'inside',
yAxisIndex: isChartHorizontal() ? xAxisIndexList : yAxisIndexList,
filterMode: 'none',
startValue:
dataZoom.show &&
dataZoom.slider.x &&
dataZoom.slider.xInit === 2 &&
dataZoom.slider.startValue
? data.length - dataZoom.slider.startValue
: null,
},
{
show:
dataZoom.show &&
(isChartHorizontal() ? dataZoom.slider.y : dataZoom.slider.x),
id: 'sliderX',
type: 'slider',
xAxisIndex: isChartHorizontal() ? yAxisIndexList : xAxisIndexList,
filterMode: 'none',
bottom: legendPosition.bottom,
brushSelect: false,
showDetail: false,
},
{
show:
dataZoom.show &&
(isChartHorizontal() ? dataZoom.slider.x : dataZoom.slider.y),
id: 'sliderY',
type: 'slider',
yAxisIndex: isChartHorizontal() ? xAxisIndexList : yAxisIndexList,
filterMode: 'none',
right: legendPosition.right,
brushSelect: false,
showDetail: false,
},
]
: []
}
const createVariableSeriesData = (i2) => {
let seriesData = data
if (isVariableName.value && !isChartPie(node)) {
seriesData = [data[i2]]
}
let res = []
if (seriesData.length === 0 && isChartPie(node) && isVariableName.value) {
props.dataConfig.indexes.forEach((item2) => {
res.push({
name: item2.fieldName + '(' + item2.mode + ')',
value: null,
})
})
return res
}
for (let m2 = 0; m2 < seriesData.length; m2++) {
let item2 = seriesData[m2]
let value2 = ''
let name2 = ''
delete item2?.['\u8BB0\u5F55\u65F6\u95F4']
if (isChartPie(node) && item2) {
Object.entries(item2).forEach(([k2, v4], n2) => {
if (m2 === n2) {
value2 = v4
name2 = k2
}
})
res.push({
name: name2,
value: value2,
})
} else {
item2 &&
Object.entries(item2).forEach(([k2, v4]) => {
res.push({
name: k2,
value: v4,
})
})
}
}
return res
}
const getAliasName = (variableName2) => {
let key2 = ''
for (const k2 in mappingkey) {
if (Object.prototype.hasOwnProperty.call(mappingkey, k2)) {
if (mappingkey[k2] == variableName2) {
key2 = k2
break
}
}
}
let index2 = lodash$2.exports.find(
props.dataConfig.indexes,
(item2) => item2.id == key2
)
let _key = index2?.id + '-' + index2?.mode
let name2 = index2?.aliasName || mappingName[_key]
return name2
}
const forceClearChart = () => {
if (chart) {
let dom = chart.getDom()
if (dom) {
let canvas = dom.querySelector('canvas')
canvas && (canvas.width = chart.getWidth())
}
}
}
function updateChart(onlyStyle = false) {
if (!isRendered) return
if (!chart || chart.isDisposed()) return
const dataZoom2 = chartConfig.dataZoom
const xAxis = props.axisConfig.xAxis
const yAxis = props.axisConfig.yAxis
const legend = chartConfig.legend
const barConfig = props.barConfig
const lineConfig = props.lineConfig
const toolbox2 = props.chartConfig.toolbox
const indexesConditions = chartConfig.indexesConditions
let dimissions = [...(props.dataConfig.dimissions || [])]
const yAxisIndexList = yAxis.map((y2, i2) => i2)
const xAxisIndexList = [0]
const legendPosition = fixLegendPosition()
const setToolbox = () => {
return {
show: true,
top: -5,
feature: {
dataZoom: {
show: dataZoom2.select.x || dataZoom2.select.y,
xAxisIndex: dataZoom2.select.x ? xAxisIndexList : false,
yAxisIndex: dataZoom2.select.y ? yAxisIndexList : false,
title: false,
},
myExportExcel: {
show: toolbox2.exportExcel.show,
title: false,
icon: exportExcelIcon,
onclick: exportChartExcel,
},
mySaveImage: {
show: toolbox2.exportImage.show,
title: false,
icon: exportImageIcon,
onclick: exportChartImage,
},
},
iconStyle: {
borderColor: '#A5A5A5',
},
emphasis: {
iconStyle: {
borderColor: '#3D6EFF',
},
},
tooltip: {
show: true,
formatter: function (param) {
let title = ''
let name2 = param.name
switch (name2) {
case 'mySaveImage':
title = Language$1._t('\u5BFC\u51FA\u4E3A\u56FE\u7247')
break
case 'myExportExcel':
title = Language$1._t('\u5BFC\u51FA\u4E3AExcel')
break
case 'zoom':
title = Language$1._t('\u533A\u57DF\u7F29\u653E')
break
case 'back':
title = Language$1._t('\u533A\u57DF\u7F29\u653E\u8FD8\u539F')
break
}
return '' + title + '
'
},
textStyle: {
fontSize: 12,
},
hideDelay: 0,
},
}
}
const setyAxis = () => {
const yAxisList = props.axisConfig.yAxis
let newyAxisList = yAxisList.map((yAxis2) => {
const axisLine = yAxis2.axisLine
const axisLabel = yAxis2.axisLabel
const splitLine = yAxis2.splitLine
const axisTick = yAxis2.axisTick
let axisTickInterval = axisTick.interval == 'auto' ? 'auto' : 0
let yAxisMin = yAxis2.customLable ? yAxis2.min : null
let yAxisMax = yAxis2.customLable ? yAxis2.max : null
if (axisTick.interval == 'custom' && axisTick.internalNum) {
let allData = []
indexesComputed.value.forEach((index2) => {
data.forEach((item2) => {
let num2 = parseFloat(
item2[mappingkey[index2.id + '-' + index2.mode]]
)
allData.push(num2)
})
})
if (
!yAxis2.customLable ||
yAxis2.min == void 0 ||
yAxis2.max == void 0
) {
let min3 = Math.min.apply(null, allData)
yAxisMin = getarea(min3, 'min', min3 >= 0 ? 1 : -1)
let max3 = Math.max.apply(null, allData)
yAxisMax = getarea(max3, 'max', max3 >= 0 ? 1 : -1)
}
}
let nameGap = 2
if (yAxis2.nameLocation == 'middle') {
nameGap =
getTextStyle(
yAxis2.title,
yAxis2.fontSize || 12,
yAxis2.fontFamily,
'offsetHeight'
) *
0.2 +
15
}
if (yAxis2.nameLocation == 'start') {
nameGap = (xAxis.fontSize || 12) + xAxis.axisLabel.rotate
}
return {
show: true,
type: 'value',
offset: yAxis2.offset,
position: yAxis2.position,
name: yAxis2.showTitle ? t(yAxis2.title) : '',
nameGap,
nameLocation: yAxis2.nameLocation,
min: yAxisMin,
max: yAxisMax,
inverse: yAxis2.inverse,
interval:
axisTick.interval == 'custom' && axisTick.internalNum
? end$1(yAxisMax, yAxisMin, axisTick.internalNum)
: null,
nameTextStyle: {
fontFamily: yAxis2.fontFamily || '',
color: yAxis2.color || '#999999',
fontSize: yAxis2.fontSize || void 0,
padding: isChartHorizontal() ? null : nameGap,
fontWeight: node.style.fontWeight || 'normal',
fontStyle: node.style.fontStyle,
lineHeight:
yAxis2.fontSize || parseInt(node.style.lineHeight || '0') || 12,
},
axisLine: {
show: axisLine.show,
lineStyle: {
color: axisLine.lineStyle.color,
width: axisLine.lineStyle.width,
type: axisLine.lineStyle.type,
},
},
axisLabel: {
show: axisLabel.show,
fontFamily: axisLabel.fontFamily || '',
fontSize: axisLabel.fontSize || void 0,
color: axisLabel.color || '#999999',
fontWeight: node.style.fontWeight || 'normal',
fontStyle: node.style.fontStyle,
lineHeight:
axisLabel.fontSize ||
parseInt(node.style.lineHeight || '0') ||
12,
},
splitLine: {
show: splitLine.show,
lineStyle: {
color: splitLine.lineStyle.color,
width: splitLine.lineStyle.width,
type: splitLine.lineStyle.type,
},
},
axisTick: {
show: axisTick.show,
interval: axisTickInterval,
lineStyle: {
color: axisTick.lineStyle.color,
width: axisTick.lineStyle.width,
type: axisTick.lineStyle.type,
},
},
}
})
return newyAxisList
}
const setxAxis = () => {
const padding = () => {
if (isChartHorizontal() && xAxis.position == 'middle') return 20
if (xAxis.position == 'middle')
return xAxis.axisLabel.fontSize || 14 + xAxis.axisLabel.rotate + 5
if (xAxis.position == 'end') return 0
return 20 * 1.5
}
return {
show: true,
type: 'category',
name: t(xAxis.title),
nameLocation: xAxis.position,
nameGap: xAxis.position === 'middle' ? 10 : 5,
nameTextStyle: {
fontFamily: xAxis.fontFamily || '',
color: xAxis.color || '#999999',
fontSize: xAxis.fontSize || void 0,
padding: padding(),
fontWeight: node.style.fontWeight || 'normal',
fontStyle: node.style.fontStyle,
lineHeight:
xAxis.fontSize || parseInt(node.style.lineHeight || '0') || 12,
},
axisLine: {
show: xAxis.axisLine.show,
lineStyle: {
color: xAxis.axisLine.lineStyle.color,
type: xAxis.axisLine.lineStyle.type,
width: xAxis.axisLine.lineStyle.width,
},
},
axisLabel: {
show: xAxis.axisLabel.show,
fontFamily: xAxis.axisLabel.fontFamily || '',
fontSize: xAxis.axisLabel.fontSize || void 0,
lineHeight:
xAxis.axisLabel.fontSize ||
parseInt(node.style.lineHeight || '0') ||
12,
color: xAxis.axisLabel.color || '#999999',
rotate: xAxis.axisLabel.rotate,
interval: handleXAxisAxisLabelInterval(
xAxis.axisLabel.displayType,
xAxis.axisLabel.interval
),
fontWeight: node.style.fontWeight || 'normal',
fontStyle: node.style.fontStyle,
formatter: function (value2) {
if (isVariableName.value) {
let key2 = lodash$2.exports.findKey(
mappingkey,
(item2) => item2 === value2
)
let name2 = key2 ? mappingName[key2] : value2
return name2
} else {
return value2
}
},
},
axisTick: {
show: xAxis.axisTick.show,
lineStyle: {
color: xAxis.axisTick.lineStyle.color,
type: xAxis.axisTick.lineStyle.type,
width: xAxis.axisTick.lineStyle.width,
},
},
data: initXAxisData(),
}
}
function setGrid() {
let baseGrid = {
containLabel: true,
top: legendPosition.grid.top,
right: legendPosition.grid.right,
bottom: legendPosition.grid.bottom,
left: legendPosition.grid.left,
}
const defaultFontSize = 14
let xAxisTitleLen = getTextStyle(
xAxis.title,
xAxis.fontSize || defaultFontSize,
xAxis.fontFamily
)
let maxFontSize = 0
if (isChartHorizontal()) {
yAxis.forEach((item2) => {
if (maxFontSize < item2.fontSize) {
maxFontSize = item2.fontSize
}
if (
item2.nameLocation == 'middle' &&
item2.showTitle &&
item2.title
) {
baseGrid.bottom =
legendPosition.grid.bottom + (maxFontSize || defaultFontSize)
}
if (
item2.nameLocation == 'start' &&
item2.showTitle &&
item2.title
) {
baseGrid.left =
legendPosition.grid.left +
getTextStyle(
item2.title,
maxFontSize || defaultFontSize,
item2.fontFamily
)
}
if (item2.nameLocation == 'end' && item2.showTitle && item2.title) {
baseGrid.right =
legendPosition.grid.right +
getTextStyle(
item2.title,
maxFontSize || defaultFontSize,
item2.fontFamily
)
}
})
if (xAxis.position === 'middle' && xAxis.title) {
baseGrid.left += xAxisTitleLen
}
if (xAxis.position === 'start' && xAxis.title) {
baseGrid.bottom += xAxis.fontSize || defaultFontSize
}
if (xAxis.position === 'end' && xAxis.title) {
baseGrid.top += xAxis.fontSize || defaultFontSize
}
} else {
yAxis.forEach((item2) => {
if (maxFontSize < item2.fontSize) {
maxFontSize = item2.fontSize
}
if (item2.nameLocation == 'end' && item2.showTitle && item2.title) {
baseGrid.top =
legendPosition.grid.top + (maxFontSize || defaultFontSize)
}
if (
xAxis.position !== 'start' &&
item2.nameLocation == 'middle' &&
item2.showTitle &&
item2.title
) {
baseGrid[item2.position] =
legendPosition.grid[item2.position] +
(maxFontSize || defaultFontSize)
}
if (item2.nameLocation == 'start' && item2.showTitle) {
baseGrid.bottom =
legendPosition.grid.bottom + (maxFontSize || defaultFontSize)
}
})
if (xAxis.position === 'middle' && xAxis.title) {
baseGrid.bottom += xAxis.fontSize || defaultFontSize
}
if (xAxis.position === 'start' && xAxis.title) {
baseGrid.left += xAxisTitleLen
}
if (xAxis.position === 'end' && xAxis.title) {
baseGrid.right += xAxisTitleLen
}
}
baseGrid.top += 5
baseGrid.right += 10
baseGrid.bottom += 10
baseGrid.left += 20
if (dataZoom2.slider.x) baseGrid.bottom += 40
if (dataZoom2.slider.y) baseGrid.right += 30
const grid2 = props.chartConfig.grid
return {
...baseGrid,
left: grid2 && grid2.left != void 0 ? grid2.left : baseGrid.left,
right: grid2 && grid2.right != void 0 ? grid2.right : baseGrid.right,
top: grid2 && grid2.top != void 0 ? grid2.top : baseGrid.top,
bottom:
grid2 && grid2.bottom != void 0 ? grid2.bottom : baseGrid.bottom,
}
}
let _indexesComputed = indexesComputed.value
if (isVariableName.value && isChartPie(node)) {
_indexesComputed = lodash$2.exports.take(indexesComputed.value, 1)
}
let option2 = {
title: {
show: props.chartConfig.title.show,
text: t(props.chartConfig.title.text),
top: 0,
left: style.textAlign,
padding: 5,
textStyle: {
fontSize: node.style.fontSize || 14,
lineHeight: parseInt(node.style.lineHeight || '0') || 14,
fontWeight: node.style.fontWeight || 'normal',
fontFamily: node.style.fontFamily,
fontStyle: node.style.fontStyle,
color: node.style.color || '#999999',
},
},
graphic: {
type: 'text',
left: 'center',
top: '52%',
style: {
text: pieConfig.total ? handlePieTotal() : '',
fill: '#333',
fontSize: 20,
fontWeight: 700,
},
},
toolbox: setToolbox(),
dataZoom: createDataZoom(),
grid: setGrid(),
xAxis: setxAxis(),
yAxis: setyAxis(),
tooltip: {
trigger: 'axis',
formatter: function (params2) {
const setTips = (marker, seriesName, value2) => {
return `
${marker + seriesName}
${value2 ?? '-'}
`
}
const setTitle = (title) => {
return `${title}
`
}
const getValue2 = (value2, dataFormat) => {
if (dataFormat == 4 || dataFormat == 5) {
value2 += '%'
}
return value2
}
if (isChartPie(node) && !lodash$2.exports.isArray(params2)) {
let title = setTitle(params2.name)
let value2 = getValue2(
params2.value,
indexesComputed.value[params2.seriesIndex].dataFormat
)
let tips = setTips(params2.marker, params2.seriesName, value2)
if (isVariableName.value) {
title = ''
let name2 = getAliasName(params2.name) || params2.name
tips = setTips(params2.marker, name2, value2)
}
return title + tips
} else {
let title = setTitle(params2[0].axisValueLabel)
let tips = ''
if (isVariableName.value) {
title = ''
let dataIndex = lodash$2.exports.take(params2, 1)[0]?.dataIndex
let item2 = params2[dataIndex]
let value2 = getValue2(
item2.value,
indexesComputed.value[item2.seriesIndex].dataFormat
)
tips = setTips(item2.marker, item2.seriesName, value2)
} else {
params2.forEach((item2) => {
let value2 = getValue2(
item2.value,
indexesComputed.value[item2.seriesIndex].dataFormat
)
tips += setTips(item2.marker, item2.seriesName, value2)
})
}
return title + tips
}
},
},
legend: {
show: legend.show,
icon: 'roundRect',
type: 'scroll',
orient: legendPosition.orient,
top: legendPosition.top,
right: (() => {
if (
lodash$2.exports.isNumber(legendPosition.right) &&
dataZoom2.slider.y
) {
return legendPosition.right + 34
}
return legendPosition.right
})(),
bottom: (() => {
if (
lodash$2.exports.isNumber(legendPosition.bottom) &&
dataZoom2.slider.x
) {
return legendPosition.bottom + 40
}
return legendPosition.bottom
})(),
width: '40%',
itemWidth: 14,
itemHeight: 12,
itemGap: 6,
padding: 5,
textStyle: {
fontFamily: legend.fontFamily,
fontSize: legend.fontSize,
color: legend.color,
fontWeight: node.style.fontWeight || 'normal',
fontStyle: node.style.fontStyle,
lineHeight:
legend.fontSize || parseInt(node.style.lineHeight || '0') || 12,
},
formatter(a2) {
if (isVariableName.value && isChartPie(node)) {
a2 = getAliasName(a2) || a2
}
if (legend.position === 'right') {
let width =
getTextStyle(a2, legend.fontSize, legend.fontFamily) + 20
const nodeWidth = Number(node.style.width?.replace('px', ''))
if (nodeWidth * 0.3 < width) {
const diff = width - nodeWidth * 0.3
const diffCount = diff / (legend.fontSize || 12)
differences[a2] = diffCount
return a2.substring(0, a2.length - 1 - diffCount) + '...'
} else {
differences[a2] = 0
}
}
return a2
},
tooltip: {
show: true,
formatter: (params2) => {
let name2 = params2.name
if (isVariableName.value && isChartPie(node)) {
name2 = getAliasName(params2.name) || params2.name
}
return name2
},
},
},
animation: false,
animationDuration: 0,
color: legend.itemColorList,
series: onlyStyle
? void 0
: _indexesComputed.map((index2, i2) => {
let indexesCondition2 = indexesConditions.filter((c2) => {
return c2.fieldId == index2.id + `-${index2.mode}`
})[0]
let { id: id2, mode: mode2 } = index2
if (isVariableName.value && isChartPie(node)) {
mode2 = 0
}
const indexMode = id2 + '-' + mode2
const indexKey = isUseCache(node) ? index2.id : indexMode
const isVariableNameAndNotChartPie =
isVariableName.value && !isChartPie(node)
const isPieChart = [
'ChartPie',
'ChartPieRing',
'ChartPieRose',
].includes(node.is)
const conditionList2 = indexesCondition2?.conditionList || []
let conditionDataList = conditionList2.length
? [
...new Set(data.map((d3) => d3[mappingkey[indexMode]])),
].sort((a2, b2) => a2 - b2)
: []
let name2 =
index2.aliasName ||
mappingName[indexKey] ||
index2.fieldName +
(isUseCache(node) ? `(${methodList[mode2]})` : '')
if (dataType.value.isVariable) {
name2 = index2.aliasName || index2.fieldName
}
const type4 = isPieChart ? 'pie' : 'bar'
const { width, height } = node?.dom?.getBoundingClientRect() || {
width: 0,
height: 0,
}
let ratio =
(width -
dimissions.reduce((t22, c2) => {
let name22 = data?.[0]?.[mappingkey?.[c2.id]]
return Math.max(t22, name22?.length || 0)
}, 0) *
10 -
50) /
height
ratio = Math.min(Math.max(ratio, 0.6), 1)
let stack = isVariableNameAndNotChartPie ? 'total' : null
return {
indexKey,
indexMode,
type: type4,
name: t(name2),
sampling: 'lttb',
large: true,
largeThreshold: 1e3,
progressive: 400,
progressiveThreshold: 3e3,
animationThreshold: 1e3,
yAxisIndex: index2.yAxisIndex,
xAxisIndex: 0,
center: isPie() ? legendPosition.pie.center : void 0,
data: isVariableName.value
? createVariableSeriesData(i2)
: data.map((item2) => {
const nameArr = []
for (const d3 of dimissions) {
let name3 = item2[mappingkey[d3.id]]
if (!name3 && name3 !== 0) {
name3 = ' '
}
nameArr.push(name3)
}
const name22 = nameArr.join(' ')
const value2 = item2[mappingkey[indexMode]]
const dataStyle = isChartPie(node)
? {}
: getDataStyle(
value2,
conditionList2,
conditionDataList
)
return {
name: name22,
value: value2,
...dataStyle,
}
}),
barWidth: barConfig.barCategoryGap
? void 0
: barConfig.borderWidth,
barGap: barConfig.barGap,
barCategoryGap: barConfig.barCategoryGap,
showBackground: barConfig.showBackground,
itemStyle: {
shadowColor: '#fff',
shadowBlur: 0,
borderRadius: barConfig.borderRadius,
width: 20,
},
symbolSize: lineConfig.symbol.show ? lineConfig.symbol.size : 0,
showAllSymbol: true,
smooth: lineConfig.line === 'line' ? false : true,
step: lineConfig.line === 'step' ? 'end' : '',
symbol: lineConfig.symbol.type,
lineStyle: {
width: lineConfig.width,
type: lineConfig.type,
shadowColor: '#bbb',
shadowOffsetX: 0,
shadowOffsetY: 1,
shadowBlur: 0,
},
top: legendPosition.pie.top,
left: 10,
bottom: legendPosition.pie.bottom,
right: legendPosition.pie.right,
avoidLabelOverlap: true,
radius: (function () {
if (node.is === 'ChartPie') {
return [
props.pieConfig.radius[0] * 0.75 ** i2 * ratio + '%',
props.pieConfig.radius[1] * 0.75 ** i2 * ratio + '%',
]
}
if (node.is === 'ChartPieRing') {
return [
props.ringConfig.radius[0] * 0.75 ** i2 * ratio + '%',
props.ringConfig.radius[1] * 0.75 ** i2 * ratio + '%',
]
}
if (node.is === 'ChartPieRose') {
return [
props.roseConfig.radius[0] * 0.75 ** i2 * ratio + '%',
props.roseConfig.radius[1] * 0.75 ** i2 * ratio + '%',
]
}
})(),
label: {
show: chartConfig.label.show,
fontFamily: chartConfig.label.fontFamily,
fontSize: chartConfig.label.fontSize,
position: chartConfig.label.position || 'outside',
color: chartConfig.label.color,
lineHeight: chartConfig.label.fontSize,
minMargin: 5,
formatter: (params2) => {
if (isPie())
return handlePieLabelFormatter(
params2,
node,
index2.dataFormat
)
if (index2.dataFormat == 4 || index2.dataFormat == 5)
return params2.value + '%'
return params2.value
},
},
labelLine: {
show: isPie() ? pieConfig.labelLine.show : false,
lineStyle: {
shadowColor: '#fff',
shadowBlur: 0,
shadowOffsetX: 1,
shadowOffsetY: 1,
},
showAbove: true,
smooth: true,
length: pieConfig.labelLine.length,
length2: pieConfig.labelLine.length2,
maxSurfaceAngle: 30,
},
markLine: setMarkLine(index2),
showEmptyCircle: false,
connectNulls: !lineConfig.unConnectEmpty,
stack,
}
}),
}
let replaceMerge = shouldReplaceMerge ? [shouldReplaceMerge] : void 0
shouldReplaceMerge = ''
const setOption = () => {
chart?.clear()
if ($props.updateChart) {
chart?.setOption(option2, {
replaceMerge,
lazyUpdate: true,
})
$props.updateChart?.(chart)
chart?.setOption({}, {})
}
if ($props.setOption) {
const option_ = $props.setOption(option2) || option2
chart?.setOption(option_, { replaceMerge })
}
if (!$props.updateChart && !$props.setOption) {
chart?.setOption(option2, { replaceMerge })
}
isRendered = false
}
cancelIdleCallback(cancelIdleId)
cancelIdleId = requestIdleCallback(setOption, {
timeout: 2e3,
})
}
let shouldReplaceMerge = ''
watch$1([() => indexesComputed.value.length], () => {
shouldReplaceMerge = 'series'
})
watch$1(
[() => props.axisConfig.yAxis.length],
() => {
shouldReplaceMerge = 'yAxis'
},
{
deep: true,
}
)
watch$1(
[
() => props.chartConfig.toolbox,
() => props.chartConfig.dataZoom.select,
],
() => {
shouldReplaceMerge = 'toolbox'
},
{
deep: true,
}
)
function updateChartData() {
if (!isRendered) return
console.log('process data')
const dimissions = [...(props.dataConfig.dimissions || [])]
const option2 = chart?.getOption()
let series = option2?.series
const indexesConditions = chartConfig.indexesConditions
if (!chart || !option2 || !series) return
if (isChartHorizontal()) {
let yAxisData = data.map((item2) =>
dimissions
.map((d3) => {
return item2[mappingkey[d3.id]]
})
.join('-')
)
option2.yAxis.data = yAxisData
} else {
if (!isChartPie(node)) {
const { axisLine, axisTick } = props.axisConfig.xAxis
option2.xAxis = {
data: initXAxisData(),
axisLine: {
show: axisLine.show,
lineStyle: {
color: axisLine.lineStyle.color,
type: axisLine.lineStyle.type,
width: axisLine.lineStyle.width,
},
},
axisTick: {
show: axisTick.show,
lineStyle: {
color: axisTick.lineStyle.color,
type: axisTick.lineStyle.type,
width: axisTick.lineStyle.width,
},
},
axisLabel: {
formatter: function (value2) {
if (isVariableName.value) {
let key2 = lodash$2.exports.findKey(
mappingkey,
(item2) => item2 === value2
)
let name2 = key2 ? mappingName[key2] : value2
return name2
} else {
return value2
}
},
},
}
} else {
if (isVariableName.value) {
series = lodash$2.exports.take(series, 1)
}
}
}
option2.dataZoom = createDataZoom()
option2.series = series.map((s2, i2) => {
let indexesCondition2 = indexesConditions.filter((c2) => {
return c2.fieldId == s2.indexMode
})[0]
const conditionList2 = indexesCondition2?.conditionList || []
const condistionDataList = conditionList2.length
? [...new Set(data.map((d3) => d3[mappingkey[s2.indexKey]]))].sort(
(a2, b2) => a2 - b2
)
: []
const createData2 = () => {
let seriesData = data
if (isVariableName.value && !isChartPie(node)) {
seriesData = [data[i2]]
}
let res = []
for (let i3 = 0; i3 < seriesData.length; i3++) {
const item2 = seriesData[i3]
let value2 = item2[mappingkey[s2.indexKey]]
let name2 = dimissions
.map((d3) => {
let name22 = item2[mappingkey[d3.id]]
if (!name22 && name22 !== 0) {
name22 = ' '
}
return name22
})
.join(' ')
if (isVariableName.value) {
if (isChartPie(node)) {
Object.entries(item2).forEach(([k2, v4]) => {
if (v4 !== null) {
value2 = v4
name2 = getAliasName(k2) || k2
}
})
res.push({
name: name2,
value: value2,
})
} else {
Object.entries(item2).forEach(([k2, v4]) => {
res.push({
name: k2,
value: v4,
})
})
}
} else {
if (dataType.value.isVariable) {
name2 = item2.aliasName || item2.fieldName
}
let dataStyle = isChartPie(node)
? {}
: getDataStyle(value2, conditionList2, condistionDataList)
res.push({
name: name2,
value: value2,
...dataStyle,
})
}
}
return res
}
let stack = s2.stack || null
if (isVariableName.value && !isChartPie(node)) {
stack = 'total'
}
return {
...s2,
stack,
name: t(mappingName[s2.indexKey]),
data: createData2(),
}
})
cancelIdleCallback(cancelIdleId)
cancelIdleId = requestIdleCallback(
() => {
chart?.clear()
forceClearChart()
chart?.setOption(option2, true, true)
isRendered = false
},
{
timeout: 2e3,
}
)
series = null
}
const updateChartConfig = lodash$2.exports.debounce(
() => updateChart(),
200,
{ maxWait: 2e3 }
)
const updateChartConfigAndData = lodash$2.exports.debounce(
() => updateChart(),
100,
{ maxWait: 2e3 }
)
watch$1([props], updateChartConfigAndData)
const resize_ = lodash$2.exports.debounce(() => chart?.resize(), 1e3 / 12, {
maxWait: 1e3 / 12,
})
watch$1(
[
() => {
const style_ = { ...style }
delete style_.left
delete style_.top
return Object.values(style_).join()
},
],
() => {
resize_()
updateChartConfig()
}
)
const getTextStyle = lodash$2.exports.memoize(
(text2, fontSize2, fontFamily2, style2 = 'offsetWidth') => {
const span = document.createElement('span')
span.innerText = text2
span.style.fontSize = `${fontSize2 || 12}px`
span.style.fontFamily = fontFamily2
document.body.appendChild(span)
const result = span[style2]
document.body.removeChild(span)
return result
}
)
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'chart-container flex flex-col',
ref_key: 'chartContainer',
ref: chartContainer,
},
[
aggregateErrorMsg.value
? (openBlock(),
createElementBlock('div', _hoisted_1$5w, [
createElementVNode(
'span',
{
title: _ctx._t(aggregateErrorMsg.value),
},
_hoisted_4$3E,
8,
_hoisted_2$4B
),
]))
: createCommentVNode('', true),
createElementVNode(
'div',
{
ref_key: 'el',
ref: el,
class: 'chart flex-1',
onClick: click,
t: collectText(),
},
null,
8,
_hoisted_5$3i
),
],
512
)
)
}
},
})
var Chart$1 = /* @__PURE__ */ _export_sfc(_sfc_main$6y, [
['__scopeId', 'data-v-4410da82'],
])
var __glob_2_5$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Chart$1,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var MarkLineConfig_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$5v = { class: 'mark-line-config-content' }
const _hoisted_2$4A = { class: 'table' }
const _hoisted_3$48 = { class: 'cell' }
const _hoisted_4$3D = { class: 'cell' }
const _hoisted_5$3h = { class: 'cell' }
const _hoisted_6$2X = { class: 'cell' }
const _hoisted_7$2A = { class: 'cell' }
const _hoisted_8$2i = { class: 'cell' }
const _hoisted_9$27 = { class: 'cell color cms-el-color-picker-x' }
const _hoisted_10$1W = { class: 'cell del cms-el-color-picker-x' }
const _hoisted_11$1N = ['onClick']
const _hoisted_12$1H = { class: 'el-dialog__footer' }
const _sfc_main$6x = /* @__PURE__ */ defineComponent({
props: {
node: null,
visible: { type: Boolean },
},
emits: ['callback'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const node2 = reactive($props2.node)
const props2 = reactive(node2.props)
const indexes = props2.dataConfig.indexes
let markLine = reactive(
lodash$2.exports.cloneDeep(props2.chartConfig.markLine) || []
)
const changeField2 = (item2) => {
for (let i2 = 0; i2 < indexes.length; i2++) {
let index2 = indexes[i2]
if (index2.id + `-${index2.mode}` == item2.field) {
item2.yAxisIndex = index2.yAxisIndex
break
}
}
}
const calculationList2 = computed(() => {
const mode2 = [
'\u6C42\u548C',
'\u5E73\u5747\u503C',
'\u6700\u5C0F\u503C',
'\u6700\u5927\u503C',
'\u8BA1\u6570',
'\u53BB\u91CD\u8BA1\u6570',
]
const list2 = indexes.map((item2) => {
return {
label: item2.fieldName + `(${mode2[item2.mode]})`,
value: item2.id + `-${item2.mode}`,
}
})
return list2
})
const changeCalculation = (val2, item2) => {
item2.value = void 0
}
const changeValue = (value2, item2) => {
if (isNaN(Number(value2))) item2.value = ''
}
const addData = () => {
markLine.push({
name: '\u53C2\u8003\u7EBF' + Math.random().toString().slice(-4),
calculation: 'absolute',
field: '',
value: '220',
lineStyle: 'solid',
color: '#00AB86',
yAxisIndex: 0,
})
}
const validatorData = () => {
for (let i2 = 0, iLen = markLine.length; i2 < iLen; i2++) {
const item2 = markLine[i2]
if (!item2.name) {
ElMessage.warning('\u8BF7\u8F93\u5165\u540D\u79F0')
return false
}
if (item2.calculation == 'calculate' && !item2.field) {
ElMessage.warning('\u8BF7\u9009\u62E9\u5B57\u6BB5')
return false
}
if (!item2.value) {
ElMessage.warning('\u8BF7\u8F93\u5165\u503C')
return false
}
}
return true
}
const submit = (state2) => {
if (state2 === 'confirm') {
if (!validatorData()) return
props2.chartConfig.markLine = markLine
}
emit2('callback', state2)
}
onMounted(() => {})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_color_picker = resolveComponent('el-color-picker')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
'model-value': __props2.visible,
width: '800px',
title: '\u53C2\u8003\u7EBF',
'close-on-click-modal': false,
'close-on-press-escape': false,
'custom-class': 'cms-el-dialog mark-line-config',
onClose: _cache[2] || (_cache[2] = ($event) => submit('close')),
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$5v, [
createElementVNode('div', { class: 'head flex' }, [
createElementVNode(
'div',
{
class: 'btn',
onClick: addData,
},
'\u6DFB\u52A0'
),
]),
createElementVNode('div', _hoisted_2$4A, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(markLine), (item2, i2) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'row flex',
key: i2,
},
[
createElementVNode('div', _hoisted_3$48, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
modelValue: item2.name,
'onUpdate:modelValue': ($event) =>
(item2.name = $event),
placeholder: '\u8F93\u5165\u540D\u79F0',
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
]),
createElementVNode('div', _hoisted_4$3D, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
modelValue: item2.calculation,
'onUpdate:modelValue': ($event) =>
(item2.calculation = $event),
'allow-create': '',
filterable: '',
onChange: (val2) => {
changeCalculation(val2, item2)
},
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
label: '\u56FA\u5B9A\u503C',
value: 'absolute',
}),
createVNode$1(_component_el_option, {
label: '\u8BA1\u7B97\u503C',
value: 'calculate',
}),
]),
_: 2,
},
1032,
[
'modelValue',
'onUpdate:modelValue',
'onChange',
]
),
]),
createElementVNode('div', _hoisted_5$3h, [
createVNode$1(
_component_el_select,
{
disabled: item2.calculation === 'absolute',
class: 'cms-el-select-x',
placeholder: '\u9009\u62E9\u5B57\u6BB5',
'popper-class': 'cms-el-select_check',
modelValue: item2.field,
'onUpdate:modelValue': ($event) =>
(item2.field = $event),
onChange: ($event) => changeField2(item2),
'allow-create': '',
filterable: '',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(calculationList2),
(item22, i22) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: i22,
label: item22.label,
value: item22.value,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
[
'disabled',
'modelValue',
'onUpdate:modelValue',
'onChange',
]
),
]),
createElementVNode('div', _hoisted_6$2X, [
withDirectives(
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
modelValue: item2.value,
'onUpdate:modelValue': ($event) =>
(item2.value = $event),
placeholder: '\u586B\u5199\u6570\u503C',
oninput:
"value=value.replace(/^\\.+|[^\\d.]/g,'')",
onChange: (value2) => {
changeValue(value2, item2)
},
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
'onChange',
]
),
[[vShow, item2.calculation === 'absolute']]
),
withDirectives(
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
placeholder: '\u9009\u62E9\u503C',
'popper-class': 'cms-el-select_check',
modelValue: item2.value,
'onUpdate:modelValue': ($event) =>
(item2.value = $event),
'allow-create': '',
filterable: '',
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
label: '\u5E73\u5747\u503C',
value: 'average',
}),
createVNode$1(_component_el_option, {
label: '\u6700\u5C0F\u503C',
value: 'min',
}),
createVNode$1(_component_el_option, {
label: '\u6700\u5927\u503C',
value: 'max',
}),
createVNode$1(_component_el_option, {
label: '\u4E2D\u4F4D\u6570',
value: 'median',
}),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue']
),
[[vShow, item2.calculation === 'calculate']]
),
]),
createElementVNode('div', _hoisted_7$2A, [
createVNode$1(
_component_el_select,
{
disabled: item2.calculation === 'calculate',
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
modelValue: item2.yAxisIndex,
'onUpdate:modelValue': ($event) =>
(item2.yAxisIndex = $event),
'allow-create': '',
filterable: '',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(props2).axisConfig.yAxis,
(item22, i22) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: i22,
label: item22.yAxisName,
value: i22,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
[
'disabled',
'modelValue',
'onUpdate:modelValue',
]
),
]),
createElementVNode('div', _hoisted_8$2i, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
modelValue: item2.lineStyle,
'onUpdate:modelValue': ($event) =>
(item2.lineStyle = $event),
'allow-create': '',
filterable: '',
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
label: '\u5B9E\u7EBF',
value: 'solid',
}),
createVNode$1(_component_el_option, {
label: '\u865A\u7EBF',
value: 'dashed',
}),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue']
),
]),
createElementVNode('div', _hoisted_9$27, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
modelValue: item2.color,
'onUpdate:modelValue': ($event) =>
(item2.color = $event),
},
null,
8,
[
'predefine',
'modelValue',
'onUpdate:modelValue',
]
),
]),
createElementVNode('div', _hoisted_10$1W, [
createElementVNode(
'i',
{
class: 'iconfont icon-qingchu',
onClick: () => {
unref(markLine).splice(i2, 1)
},
},
null,
8,
_hoisted_11$1N
),
]),
]
)
)
}),
128
)),
]),
]),
createElementVNode('div', _hoisted_12$1H, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick:
_cache[0] || (_cache[0] = ($event) => submit('close')),
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick:
_cache[1] || (_cache[1] = ($event) => submit('confirm')),
},
'\u786E\u8BA4'
),
]),
]),
_: 1,
},
8,
['model-value']
)
)
}
},
})
var MarkLineConfig = /* @__PURE__ */ _export_sfc(_sfc_main$6x, [
['__scopeId', 'data-v-da583b72'],
])
var MarkLineConfig$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: MarkLineConfig,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Toolbox_vue_vue_type_style_index_0_lang = ''
const _hoisted_1$5u = { class: 'charts-toolbox' }
const _hoisted_2$4z = /* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u5BFC\u51FA\u8BBE\u7F6E\uFF1A',
-1
)
const _hoisted_3$47 = {
class: 'flex justify-start',
style: { 'column-gap': '12px' },
}
const _hoisted_4$3C = { class: 'item' }
const _hoisted_5$3g = { class: 'item' }
const _sfc_main$6w = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
const props2 = reactive(node2.props)
const toolbox2 = reactive(props2.chartConfig.toolbox)
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
return (
openBlock(),
createElementBlock('div', _hoisted_1$5u, [
_hoisted_2$4z,
createElementVNode('div', _hoisted_3$47, [
createElementVNode('div', _hoisted_4$3C, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(toolbox2).exportExcel.show,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(toolbox2).exportExcel.show = $event)),
label: '\u652F\u6301\u6570\u636E\u8868\u5BFC\u51FA',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_5$3g, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(toolbox2).exportImage.show,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(toolbox2).exportImage.show = $event)),
label: '\u652F\u6301\u56FE\u8868\u5BFC\u51FA',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
]),
]),
])
)
}
},
})
var Toolbox = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$6w,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var DataZoomConfig_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$37 = (n2) => (
pushScopeId('data-v-58c15a7e'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$5t = { class: 'data-zoom-config-content' }
const _hoisted_2$4y = /* @__PURE__ */ _withScopeId$37(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'header' },
[
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u6ED1\u52A8\u6761\u7F29\u653E\uFF1A'
),
],
-1
)
)
const _hoisted_3$46 = { class: 'content' }
const _hoisted_4$3B = { class: 'content-item' }
const _hoisted_5$3f = /* @__PURE__ */ _withScopeId$37(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u7EF4\u5EA6-\u521D\u59CB\u663E\u793A\uFF1A',
-1
)
)
const _hoisted_6$2W = /* @__PURE__ */ createTextVNode('\u5168\u90E8')
const _hoisted_7$2z = /* @__PURE__ */ _withScopeId$37(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u81EA\u5B9A\u4E49\u6570\u636E\u91CF',
-1
)
)
const _hoisted_8$2h = { class: 'el-dialog__footer' }
const _sfc_main$6v = /* @__PURE__ */ defineComponent({
props: {
node: null,
visible: { type: Boolean },
},
emits: ['callback'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const node2 = reactive($props2.node)
const props2 = reactive(node2.props)
const visible = ref(false)
const dataZoom2 = reactive(props2.chartConfig.dataZoom)
const submit = (state2) => {
if (state2 === 'close') {
emit2('callback', state2)
return
}
{
emit2('callback', state2)
}
}
watch$1(
() => $props2.visible,
(newVal) => {
visible.value = newVal
}
)
return (_ctx, _cache) => {
const _component_el_radio = resolveComponent('el-radio')
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_radio_group = resolveComponent('el-radio-group')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
modelValue: visible.value,
'onUpdate:modelValue':
_cache[4] || (_cache[4] = ($event) => (visible.value = $event)),
width: '475px',
title: '\u533A\u57DF\u7F29\u653E\u8BBE\u7F6E',
'close-on-click-modal': false,
'close-on-press-escape': false,
'custom-class': 'cms-el-dialog data-zoom-config',
onClose: _cache[5] || (_cache[5] = ($event) => submit('close')),
'append-to-body': '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$5t, [
_hoisted_2$4y,
createElementVNode('div', _hoisted_3$46, [
createElementVNode('div', _hoisted_4$3B, [
_hoisted_5$3f,
createVNode$1(
_component_el_radio_group,
{
modelValue: unref(dataZoom2).slider.xInit,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(dataZoom2).slider.xInit = $event)),
class: 'radio-group',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_radio,
{ label: 1 },
{
default: withCtx(() => [_hoisted_6$2W]),
_: 1,
}
),
createVNode$1(
_component_el_radio,
{ label: 2 },
{
default: withCtx(() => [
_hoisted_7$2z,
createVNode$1(
_component_el_input_number,
{
disabled:
unref(dataZoom2).slider.xInit !== 2,
min: 1,
precision: 0,
class:
'cms-el-input-number-x is-controls-right',
modelValue:
unref(dataZoom2).slider.startValue,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(dataZoom2).slider.startValue =
$event)),
},
null,
8,
['disabled', 'modelValue']
),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['modelValue']
),
]),
]),
]),
createElementVNode('div', _hoisted_8$2h, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick:
_cache[2] || (_cache[2] = ($event) => submit('close')),
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick:
_cache[3] || (_cache[3] = ($event) => submit('confirm')),
},
'\u786E\u8BA4'
),
]),
]),
_: 1,
},
8,
['modelValue']
)
)
}
},
})
var DataZoomConfig = /* @__PURE__ */ _export_sfc(_sfc_main$6v, [
['__scopeId', 'data-v-58c15a7e'],
])
var DataZoomConfig$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: DataZoomConfig,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var DataZoom_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$36 = (n2) => (
pushScopeId('data-v-0d20843c'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$5s = { class: 'charts-data-zoom' }
const _hoisted_2$4x = { class: 'set-chart-item' }
const _hoisted_3$45 = { class: 'centent' }
const _hoisted_4$3A = { class: 'centent-item' }
const _hoisted_5$3e = /* @__PURE__ */ _withScopeId$36(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u5185\u7F6E\u7F29\u653E',
-1
)
)
const _hoisted_6$2V = { class: 'centent-item' }
const _hoisted_7$2y = /* @__PURE__ */ _withScopeId$36(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u6ED1\u52A8\u6761\u7F29\u653E',
-1
)
)
const _hoisted_8$2g = { class: 'centent-item' }
const _hoisted_9$26 = /* @__PURE__ */ _withScopeId$36(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u6846\u9009\u7F29\u653E',
-1
)
)
const _sfc_main$6u = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
const props2 = reactive(node2.props)
const dataZoom2 = reactive(props2.chartConfig.dataZoom)
const DataZoomConfigVisible = ref(false)
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
return (
openBlock(),
createElementBlock('div', _hoisted_1$5s, [
createElementVNode('div', _hoisted_2$4x, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(dataZoom2).show,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (unref(dataZoom2).show = $event)),
label: '\u533A\u57DF\u7F29\u653E',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
createElementVNode('i', {
class: 'editorbtn iconfont icon-shezhi',
onClick:
_cache[1] ||
(_cache[1] = () => (DataZoomConfigVisible.value = true)),
}),
]),
withDirectives(
createElementVNode(
'div',
_hoisted_3$45,
[
createElementVNode('div', _hoisted_4$3A, [
_hoisted_5$3e,
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(dataZoom2).inside.y,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(dataZoom2).inside.y = $event)),
label: 'Y\u8F74',
class: 'cms-el-checkbox-font-size-12 checkbox',
},
null,
8,
['modelValue']
),
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(dataZoom2).inside.x,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(dataZoom2).inside.x = $event)),
label: 'X\u8F74',
class: 'cms-el-checkbox-font-size-12 checkbox',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_6$2V, [
_hoisted_7$2y,
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(dataZoom2).slider.y,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(dataZoom2).slider.y = $event)),
label: 'Y\u8F74',
class: 'cms-el-checkbox-font-size-12 checkbox',
},
null,
8,
['modelValue']
),
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(dataZoom2).slider.x,
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) =>
(unref(dataZoom2).slider.x = $event)),
label: 'X\u8F74',
class: 'cms-el-checkbox-font-size-12 checkbox',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_8$2g, [
_hoisted_9$26,
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(dataZoom2).select.y,
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) =>
(unref(dataZoom2).select.y = $event)),
label: 'Y\u8F74',
class: 'cms-el-checkbox-font-size-12 checkbox',
},
null,
8,
['modelValue']
),
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(dataZoom2).select.x,
'onUpdate:modelValue':
_cache[7] ||
(_cache[7] = ($event) =>
(unref(dataZoom2).select.x = $event)),
label: 'X\u8F74',
class: 'cms-el-checkbox-font-size-12 checkbox',
},
null,
8,
['modelValue']
),
]),
],
512
),
[[vShow, unref(dataZoom2).show]]
),
createVNode$1(
DataZoomConfig,
{
node: unref(node2),
visible: DataZoomConfigVisible.value,
onCallback:
_cache[8] ||
(_cache[8] = () => (DataZoomConfigVisible.value = false)),
},
null,
8,
['node', 'visible']
),
])
)
}
},
})
var DataZoom = /* @__PURE__ */ _export_sfc(_sfc_main$6u, [
['__scopeId', 'data-v-0d20843c'],
])
var DataZoom$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: DataZoom,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Grid_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$35 = (n2) => (
pushScopeId('data-v-164acb4a'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$5r = { class: 'grid' }
const _hoisted_2$4w = /* @__PURE__ */ _withScopeId$35(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u5750\u6807\u7CFB\u8BBE\u7F6E:',
-1
)
)
const _hoisted_3$44 = { class: 'padding' }
const _hoisted_4$3z = { class: 'content' }
const _hoisted_5$3d = { class: 'item' }
const _hoisted_6$2U = /* @__PURE__ */ _withScopeId$35(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u4E0A\u8FB9\u8DDD',
-1
)
)
const _hoisted_7$2x = { class: 'item' }
const _hoisted_8$2f = /* @__PURE__ */ _withScopeId$35(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u4E0B\u8FB9\u8DDD',
-1
)
)
const _hoisted_9$25 = { class: 'content' }
const _hoisted_10$1V = { class: 'item' }
const _hoisted_11$1M = /* @__PURE__ */ _withScopeId$35(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u5DE6\u8FB9\u8DDD',
-1
)
)
const _hoisted_12$1G = { class: 'item' }
const _hoisted_13$1w = /* @__PURE__ */ _withScopeId$35(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u53F3\u8FB9\u8DDD',
-1
)
)
const _sfc_main$6t = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const props2 = reactive($props2.node.props)
const grid2 = reactive(props2.chartConfig.grid)
grid2.top = grid2.top ?? 0
grid2.bottom = grid2.bottom ?? 0
grid2.left = grid2.left ?? 0
grid2.right = grid2.right ?? 0
return (_ctx, _cache) => {
const _component_el_input_number = resolveComponent('el-input-number')
return (
openBlock(),
createElementBlock('div', _hoisted_1$5r, [
_hoisted_2$4w,
createElementVNode('div', _hoisted_3$44, [
createElementVNode('div', _hoisted_4$3z, [
createElementVNode('div', _hoisted_5$3d, [
_hoisted_6$2U,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
modelValue: unref(grid2).top,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (unref(grid2).top = $event)),
'controls-position': 'right',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_7$2x, [
_hoisted_8$2f,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
modelValue: unref(grid2).bottom,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) => (unref(grid2).bottom = $event)),
'controls-position': 'right',
},
null,
8,
['modelValue']
),
]),
]),
createElementVNode('div', _hoisted_9$25, [
createElementVNode('div', _hoisted_10$1V, [
_hoisted_11$1M,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
modelValue: unref(grid2).left,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) => (unref(grid2).left = $event)),
'controls-position': 'right',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_12$1G, [
_hoisted_13$1w,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
modelValue: unref(grid2).right,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) => (unref(grid2).right = $event)),
'controls-position': 'right',
},
null,
8,
['modelValue']
),
]),
]),
]),
])
)
}
},
})
var Grid = /* @__PURE__ */ _export_sfc(_sfc_main$6t, [
['__scopeId', 'data-v-164acb4a'],
])
var Grid$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Grid,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var SetChart_vue_vue_type_style_index_0_scoped_true_lang$4 = ''
const _withScopeId$34 = (n2) => (
pushScopeId('data-v-53ec22d4'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$5q = { class: 'set-chart' }
const _hoisted_2$4v = { class: 'set-chart-item' }
const _hoisted_3$43 = /* @__PURE__ */ _withScopeId$34(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'header' },
'\u67F1\u72B6\u8BBE\u7F6E\uFF1A',
-1
)
)
const _hoisted_4$3y = { class: 'flex justify-start' }
const _hoisted_5$3c = /* @__PURE__ */ _withScopeId$34(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u5BBD\u5EA6',
-1
)
)
const _hoisted_6$2T = { class: 'content' }
const _hoisted_7$2w = /* @__PURE__ */ _withScopeId$34(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u5706\u89D2',
-1
)
)
const _hoisted_8$2e = { class: 'set-chart-item' }
const _hoisted_9$24 = /* @__PURE__ */ _withScopeId$34(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'header' },
'\u67F1\u72B6\u95F4\u8DDD\uFF1A',
-1
)
)
const _hoisted_10$1U = { class: 'flex justify-start' }
const _hoisted_11$1L = /* @__PURE__ */ _withScopeId$34(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u7EF4\u5EA6',
-1
)
)
const _hoisted_12$1F = {
key: 0,
class: 'content',
}
const _hoisted_13$1v = /* @__PURE__ */ _withScopeId$34(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u6307\u6807',
-1
)
)
const _hoisted_14$1l = { class: 'set-chart-item' }
const _hoisted_15$1g = { class: 'set-chart-item flex justify-start' }
const _hoisted_16$1e = /* @__PURE__ */ _withScopeId$34(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u53C2\u8003\u7EBF',
-1
)
)
const _sfc_main$6s = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
const props2 = reactive($props2.node.props)
let markLineVisible = ref(false)
const markLineCallback = () => {
markLineVisible.value = false
}
return (_ctx, _cache) => {
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_checkbox = resolveComponent('el-checkbox')
return (
openBlock(),
createBlock(
_sfc_main$72,
{
title: '\u56FE\u8868\u8BBE\u7F6E',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$5q, [
createElementVNode('div', _hoisted_2$4v, [
_hoisted_3$43,
createElementVNode('div', _hoisted_4$3y, [
createElementVNode('div', null, [
_hoisted_5$3c,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
modelValue: unref(props2).barConfig.borderWidth,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(props2).barConfig.borderWidth = $event)),
min: 0,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_6$2T, [
_hoisted_7$2w,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
modelValue: unref(props2).barConfig.borderRadius,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(props2).barConfig.borderRadius = $event)),
min: 0,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
]),
]),
]),
createElementVNode('div', _hoisted_8$2e, [
_hoisted_9$24,
createElementVNode('div', _hoisted_10$1U, [
createElementVNode('div', null, [
_hoisted_11$1L,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
modelValue: unref(props2).barConfig.barCategoryGap,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(props2).barConfig.barCategoryGap =
$event)),
min: 0,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
]),
unref(node2).is &&
!['ChartBarHorizontalStacked', 'ChartBarStacked'].includes(
unref(node2).is
)
? (openBlock(),
createElementBlock('div', _hoisted_12$1F, [
_hoisted_13$1v,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
modelValue: unref(props2).barConfig.barGap,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(props2).barConfig.barGap = $event)),
min: 0,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
]))
: createCommentVNode('', true),
]),
]),
createElementVNode('div', _hoisted_14$1l, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(props2).barConfig.showBackground,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(props2).barConfig.showBackground = $event)),
label: '\u663E\u793A\u67F1\u5F62\u80CC\u666F',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_15$1g, [
createElementVNode('i', {
class: 'markLineBtn iconfont icon-bianjigongcheng',
onClick:
_cache[5] ||
(_cache[5] = () => {
markLineVisible.value = true
}),
}),
_hoisted_16$1e,
]),
markLineVisible.value
? (openBlock(),
createBlock(
MarkLineConfig,
{
key: 0,
node: unref(node2),
visible: markLineVisible.value,
onCallback: markLineCallback,
},
null,
8,
['node', 'visible']
))
: createCommentVNode('', true),
createVNode$1(DataZoom, { node: unref(node2) }, null, 8, [
'node',
]),
createVNode$1(Grid, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(_sfc_main$6w, { node: unref(node2) }, null, 8, [
'node',
]),
]),
]),
_: 1,
}
)
)
}
},
})
var SetChart$5 = /* @__PURE__ */ _export_sfc(_sfc_main$6s, [
['__scopeId', 'data-v-53ec22d4'],
])
var __glob_2_8$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: SetChart$5,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var StyleConditionsDialog_vue_vue_type_style_index_0_scoped_true_lang$1 = ''
const _withScopeId$33 = (n2) => (
pushScopeId('data-v-7e73db3c'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$5p = { class: 'content' }
const _hoisted_2$4u = /* @__PURE__ */ _withScopeId$33(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'item-cell handle-paixu' },
[/* @__PURE__ */ createElementVNode('i', { class: 'iconfont icon-paixu' })],
-1
)
)
const _hoisted_3$42 = { class: 'item-cell' }
const _hoisted_4$3x = { class: 'cms-el-color-picker-x color-picker' }
const _hoisted_5$3b = { class: 'item-cell' }
const _hoisted_6$2S = { class: 'field' }
const _hoisted_7$2v = { class: 'item-cell' }
const _hoisted_8$2d = { class: 'item-cell' }
const _hoisted_9$23 = ['onClick']
const _sfc_main$6r = /* @__PURE__ */ defineComponent({
props: {
getData: null,
visible: { type: Boolean },
title: null,
conditionTypeList: null,
mappingName: null,
},
emits: ['confirm', 'close'],
setup(__props2, { emit: $emit }) {
const props2 = __props2
const dialogUlList = ref()
const mappingName2 = reactive(props2.mappingName)
let conditionList2 = ref(
props2.getData.conditionList.length > 0
? JSON.parse(JSON.stringify(props2.getData.conditionList))
: [
{
iconType: '',
condition: '',
value: '',
color: '#80A8D5',
},
{
iconType: '',
condition: '',
value: '',
color: '#80A8D5',
},
{
iconType: '',
condition: '',
value: '',
color: '#80A8D5',
},
]
)
const cancel2 = () => {
$emit('close')
}
const confirm2 = () => {
for (let i2 = 0; i2 < conditionList2.value.length; i2++) {
let item2 = conditionList2.value[i2]
if (item2.condition == '') {
ElMessage({
message: '\u6761\u4EF6\u9009\u9879\u4E0D\u80FD\u4E3A\u7A7A',
type: 'warning',
customClass: 'cms-el-message el-message--error',
})
return
}
if (item2.value == '') {
ElMessage({
message: '\u6761\u4EF6\u4E0D\u80FD\u4E3A\u7A7A',
type: 'warning',
customClass: 'cms-el-message el-message--error',
})
return
}
}
$emit('confirm', conditionList2.value)
cancel2()
}
const addCondition = () => {
let setData = {
iconType: '',
fieldName: props2.getData.fieldName,
condition: '',
value: '',
color: '#80A8D5',
}
conditionList2.value.push(setData)
}
const delItem = (item2, index2) => {
conditionList2.value.splice(index2, 1)
}
const initSortable = () => {
nextTick(() => {
if (!dialogUlList.value) return
Sortable.create(dialogUlList.value, {
sort: true,
animation: 150,
handle: '.handle-paixu',
preventOnFilter: true,
ghostClass: 'blue-background-class',
onStart: () => {},
onEnd: (val2) => {
let oldIndex2 = val2.oldIndex
let newIndex2 = val2.newIndex
if (oldIndex2 > newIndex2) {
conditionList2.value.splice(
newIndex2,
0,
conditionList2.value[oldIndex2]
)
conditionList2.value.splice(oldIndex2 + 1, 1)
} else {
conditionList2.value.splice(
newIndex2,
0,
conditionList2.value[oldIndex2]
)
conditionList2.value.splice(oldIndex2, 1)
}
},
})
})
}
onMounted(() => {
initSortable()
})
return (_ctx, _cache) => {
const _component_el_color_picker = resolveComponent('el-color-picker')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input = resolveComponent('el-input')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
'model-value': __props2.visible,
width: '570px',
top: '26vh',
title: __props2.title,
'custom-class': 'cms-el-dialog',
onClose: cancel2,
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$5p, [
createElementVNode('div', { class: 'header' }, [
createElementVNode(
'button',
{
class: 'cms-btn btn-screen-btn',
onClick: addCondition,
},
'\u6DFB\u52A0'
),
]),
createElementVNode(
'ul',
{
ref_key: 'dialogUlList',
ref: dialogUlList,
id: 'dialogUlList',
class: 'list',
onUpdate:
_cache[0] ||
(_cache[0] = withModifiers(() => {}, ['stop'])),
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(conditionList2.value, (item2, index2) => {
return (
openBlock(),
createElementBlock(
'li',
{
class: 'list-item',
key: index2,
},
[
_hoisted_2$4u,
createElementVNode('div', _hoisted_3$42, [
createElementVNode('div', _hoisted_4$3x, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
modelValue: item2.color,
'onUpdate:modelValue': ($event) =>
(item2.color = $event),
},
null,
8,
[
'predefine',
'modelValue',
'onUpdate:modelValue',
]
),
]),
]),
createElementVNode('div', _hoisted_5$3b, [
createElementVNode(
'div',
_hoisted_6$2S,
toDisplayString$1(
unref(mappingName2)[
__props2.getData.fieldId
]
),
1
),
]),
createElementVNode('div', _hoisted_7$2v, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select add-select',
'popper-class': 'cms-el-select_check',
modelValue: item2.condition,
'onUpdate:modelValue': ($event) =>
(item2.condition = $event),
'allow-create': '',
filterable: '',
placeholder: '\u6761\u4EF6',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
props2.conditionTypeList,
(item1) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item1.value,
label: item1.label,
value: item1.value,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue']
),
]),
createElementVNode('div', _hoisted_8$2d, [
createVNode$1(
_component_el_input,
{
modelValue: item2.value,
'onUpdate:modelValue': ($event) =>
(item2.value = $event),
class:
'cms-el-input-min cms-el-input-number add-select1',
placeholder:
'\u8BF7\u8F93\u5165\u6761\u4EF6',
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
]),
createElementVNode(
'i',
{
class: 'iconfont icon-tupianshanchu',
onClick: ($event) => delItem(item2, index2),
},
null,
8,
_hoisted_9$23
),
]
)
)
}),
128
)),
],
544
),
]),
createElementVNode(
'div',
{ class: 'el-dialog__footer el-dialog__footer1' },
[
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: cancel2,
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: confirm2,
},
'\u786E\u8BA4'
),
]
),
]),
_: 1,
},
8,
['model-value', 'title']
)
)
}
},
})
var Dialog$4 = /* @__PURE__ */ _export_sfc(_sfc_main$6r, [
['__scopeId', 'data-v-7e73db3c'],
])
var StyleConditionsDialog$2 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Dialog$4,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var StyleConditions_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$5o = { class: 'add-style' }
const _hoisted_2$4t = {
key: 0,
class: 'add-button',
}
const _hoisted_3$41 = { class: 'table' }
const _hoisted_4$3w = { class: 'table-icon' }
const _sfc_main$6q = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const settingsTable = ref({})
const node2 = reactive($props2.node)
const props2 = reactive(node2.props)
const dataConfig = reactive(props2.dataConfig)
const indexesConditions = reactive(props2.chartConfig.indexesConditions)
const conditionTypeList2 = [
{
label: '>',
value: '>',
},
{
label: '==',
value: '==',
},
{
label: '<',
value: '<',
},
{
label: '>=',
value: '>=',
},
{
label: '!=',
value: '!=',
},
{
label: '<=',
value: '<=',
},
{
label: '\u6700\u5927\u7684N\u4E2A\u503C',
value: 'nMax',
},
{
label: '\u6700\u5C0F\u7684N\u4E2A\u503C',
value: 'nMin',
},
]
let currentData = ref('')
let visible = ref(false)
let mappingName2 = ref({})
const indexesList = computed(() => {
let list2 = []
list2 = props2.dataConfig.indexes
.filter((i2) => i2.id)
.map((item2) => {
const mode2 = lodash$2.exports.isNumber(item2.mode)
? '-' + item2.mode
: ''
return { ...item2, id: item2.id + mode2 }
})
return list2
})
const addStyle2 = () => {
let data2 = {
fieldId: '',
conditionList: [],
}
indexesConditions.push(data2)
settingsTable.value.loadData(indexesConditions)
}
const delStyleCondition = (row, rowIndex) => {
settingsTable.value.clearCurrentRow()
currentData.value = ''
indexesConditions.splice(rowIndex, 1)
settingsTable.value.loadData(indexesConditions)
}
const currentChangeEvent = ({ $rowIndex }) => {
currentData.value = {
row: settingsTable.value.getCurrentRecord(),
rowIndex: $rowIndex,
}
}
const setDisabled = (fieldId) => {
let bool2 = false
indexesConditions.forEach((item2) => {
if (item2.fieldId == fieldId) {
bool2 = true
}
})
return bool2
}
const editorStyleCondition = (row) => {
if (!row.fieldId) return
visible.value = true
}
async function getFieldName() {
let dataSetId = dataConfig.dataSetId
let dataSetType = dataConfig.dataSetType
let fieldList = dataConfig.indexes
if (dataSetId) {
fieldList = await fetchDataSetFieldList(dataSetId, dataSetType)
}
dataConfig.indexes
.filter((i2) => i2.id)
.forEach((i2) => {
let field2 = fieldList.filter((f2) => i2.id == f2.id)[0]
if (lodash$2.exports.isNumber(i2.mode)) {
mappingName2.value[`${i2.id}-${i2.mode}`] =
field2.fieldName + `(${methodList[i2.mode]})`
} else {
mappingName2.value[`${i2.id}`] = field2.fieldName
}
})
}
let indexesStrings = ''
watch$1(
[() => dataConfig.indexes.filter((i2) => i2.id)],
(n2) => {
let str = JSON.stringify(n2)
if (indexesStrings === str) return
indexesStrings = str
getFieldName()
},
{
immediate: true,
deep: true,
}
)
const confirm2 = (list2) => {
indexesConditions[currentData.value.rowIndex].conditionList = list2
}
onMounted(() => {})
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_vxe_column = resolveComponent('vxe-column')
const _component_vxe_table = resolveComponent('vxe-table')
return (
openBlock(),
createBlock(
_sfc_main$72,
{
title: '\u6761\u4EF6\u6837\u5F0F',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$5o, [
unref(indexesConditions).length
? (openBlock(),
createElementBlock('div', _hoisted_2$4t, [
createElementVNode('i', {
class: 'iconfont icon-tianjiahuamian',
onClick: addStyle2,
}),
]))
: (openBlock(),
createElementBlock(
'button',
{
key: 1,
class: 'cms-btn btn-screen-btn add-btn',
onClick: addStyle2,
},
'+\u6DFB\u52A0\u6837\u5F0F'
)),
withDirectives(
createElementVNode(
'div',
_hoisted_3$41,
[
createVNode$1(
_component_vxe_table,
{
border: '',
size: 'small',
class: 'cms-vxe-table settings-table',
ref_key: 'settingsTable',
ref: settingsTable,
height: '200',
'show-overflow': 'tooltip',
'row-config': {
isHover: true,
isCurrent: true,
keyField: 'id',
},
data: unref(indexesConditions),
onCurrentChange: currentChangeEvent,
},
{
default: withCtx(() => [
createVNode$1(
_component_vxe_column,
{
field: 'id',
title: '\u5B57\u6BB5',
width: '90',
},
{
default: withCtx(({ row }) => [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
modelValue: row.fieldId,
'onUpdate:modelValue': ($event) =>
(row.fieldId = $event),
'allow-create': '',
filterable: '',
placeholder: '\u9009\u62E9\u5B57\u6BB5',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
indexesList.value,
(item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
disabled: setDisabled(
item2.id
),
key: item2.id,
label:
mappingName2.value[
item2.id
],
value: item2.id,
},
null,
8,
['disabled', 'label', 'value']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue']
),
]),
_: 1,
}
),
createVNode$1(
_component_vxe_column,
{
field: 'condition',
title: '\u6761\u4EF6\u6837\u5F0F',
},
{
default: withCtx(({ row }) => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
row.conditionList,
(item1, index2) => {
return (
openBlock(),
createElementBlock(
'span',
{ key: index2 },
[
createElementVNode(
'span',
{
class: normalizeClass([
'iconfont',
item1.iconType,
]),
style: normalizeStyle$1({
color: item1.color,
fontSize: '20px',
}),
},
'\u25A0',
6
),
createTextVNode(
' ' +
toDisplayString$1(
item1.condition +
`(${item1.value})`
),
1
),
withDirectives(
createElementVNode(
'span',
null,
',',
512
),
[
[
vShow,
index2 !=
row.conditionList.length -
1,
],
]
),
]
)
)
}
),
128
)),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['data']
),
withDirectives(
createElementVNode(
'div',
_hoisted_4$3w,
[
withDirectives(
createElementVNode(
'i',
{
class: 'iconfont icon-bianjigongcheng',
onClick:
_cache[0] ||
(_cache[0] = ($event) =>
editorStyleCondition(
currentData.value.row
)),
},
null,
512
),
[[vShow, currentData.value.row?.fieldId]]
),
createElementVNode('i', {
class: 'iconfont icon-qingchu',
onClick:
_cache[1] ||
(_cache[1] = ($event) =>
delStyleCondition(
currentData.value.row,
currentData.value.rowIndex
)),
}),
],
512
),
[[vShow, currentData.value && currentData.value.row]]
),
],
512
),
[[vShow, unref(indexesConditions).length]]
),
visible.value
? (openBlock(),
createBlock(
Dialog$4,
{
key: 2,
title: '\u6761\u4EF6\u6837\u5F0F',
visible: visible.value,
onClose:
_cache[2] ||
(_cache[2] = ($event) => (visible.value = false)),
onConfirm: confirm2,
getData: currentData.value.row,
mappingName: mappingName2.value,
conditionTypeList: conditionTypeList2,
},
null,
8,
['visible', 'getData', 'mappingName']
))
: createCommentVNode('', true),
]),
]),
_: 1,
}
)
)
}
},
})
var StyleConditions = /* @__PURE__ */ _export_sfc(_sfc_main$6q, [
['__scopeId', 'data-v-7da960b6'],
])
var StyleConditions$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: StyleConditions,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Padding_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$32 = (n2) => (
pushScopeId('data-v-64b9f751'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$5n = { class: 'Padding' }
const _hoisted_2$4s = { class: 'content' }
const _hoisted_3$40 = { class: 'item' }
const _hoisted_4$3v = /* @__PURE__ */ _withScopeId$32(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u4E0A\u8FB9\u8DDD',
-1
)
)
const _hoisted_5$3a = { class: 'item' }
const _hoisted_6$2R = /* @__PURE__ */ _withScopeId$32(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u4E0B\u8FB9\u8DDD',
-1
)
)
const _hoisted_7$2u = { class: 'content' }
const _hoisted_8$2c = { class: 'item' }
const _hoisted_9$22 = /* @__PURE__ */ _withScopeId$32(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u5DE6\u8FB9\u8DDD',
-1
)
)
const _hoisted_10$1T = { class: 'item' }
const _hoisted_11$1K = /* @__PURE__ */ _withScopeId$32(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u53F3\u8FB9\u8DDD',
-1
)
)
const _sfc_main$6p = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const style2 = reactive($props2.node.style)
const styleConv = styleConverter(style2)
const DEFAULTPADDING = 10
const paddingX = computed(() => {
return {
paddingLeft: styleConv.paddingLeft,
paddingRight: styleConv.paddingRight,
paddingTop: styleConv.paddingTop,
paddingBottom: styleConv.paddingBottom,
}
})
function init2() {
styleConv.paddingLeft =
styleConv.paddingLeft === void 0
? DEFAULTPADDING
: styleConv.paddingLeft
styleConv.paddingRight =
styleConv.paddingRight === void 0
? DEFAULTPADDING
: styleConv.paddingRight
styleConv.paddingTop =
styleConv.paddingTop === void 0 ? DEFAULTPADDING : styleConv.paddingTop
styleConv.paddingBottom =
styleConv.paddingBottom === void 0
? DEFAULTPADDING
: styleConv.paddingBottom
}
onMounted(() => {
init2()
})
return (_ctx, _cache) => {
const _component_el_input_number = resolveComponent('el-input-number')
return (
openBlock(),
createBlock(
SettingItem$1,
{
title: '\u8FB9\u8DDD',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$5n, [
createElementVNode('div', _hoisted_2$4s, [
createElementVNode('div', _hoisted_3$40, [
_hoisted_4$3v,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
modelValue: unref(paddingX).paddingTop,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(paddingX).paddingTop = $event)),
min: 0,
'controls-position': 'right',
onInput:
_cache[1] ||
(_cache[1] = (val2) =>
(unref(styleConv).paddingTop = val2)),
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_5$3a, [
_hoisted_6$2R,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
modelValue: unref(paddingX).paddingBottom,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(paddingX).paddingBottom = $event)),
min: 0,
'controls-position': 'right',
onInput:
_cache[3] ||
(_cache[3] = (val2) =>
(unref(styleConv).paddingBottom = val2)),
},
null,
8,
['modelValue']
),
]),
]),
createElementVNode('div', _hoisted_7$2u, [
createElementVNode('div', _hoisted_8$2c, [
_hoisted_9$22,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
modelValue: unref(paddingX).paddingLeft,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(paddingX).paddingLeft = $event)),
min: 0,
'controls-position': 'right',
onInput:
_cache[5] ||
(_cache[5] = (val2) =>
(unref(styleConv).paddingLeft = val2)),
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_10$1T, [
_hoisted_11$1K,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
modelValue: unref(paddingX).paddingRight,
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) =>
(unref(paddingX).paddingRight = $event)),
min: 0,
'controls-position': 'right',
onInput:
_cache[7] ||
(_cache[7] = (val2) =>
(unref(styleConv).paddingRight = val2)),
},
null,
8,
['modelValue']
),
]),
]),
]),
]),
_: 1,
}
)
)
}
},
})
var Padding = /* @__PURE__ */ _export_sfc(_sfc_main$6p, [
['__scopeId', 'data-v-64b9f751'],
])
var Padding$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Padding,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var QueryConditions_vue_vue_type_style_index_0_scoped_true_lang$2 = ''
const _withScopeId$31 = (n2) => (
pushScopeId('data-v-cadeb6c2'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$5m = { class: 'data' }
const _hoisted_2$4r = { class: 'auto-update limit' }
const _hoisted_3$3$ = { class: 'flex' }
const _hoisted_4$3u = /* @__PURE__ */ _withScopeId$31(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-tianjia1' },
null,
-1
)
)
const _hoisted_5$39 = /* @__PURE__ */ createTextVNode('\u65B0\u5EFA')
const _sfc_main$6o = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
const props2 = reactive(node2.props)
const dataConfig = reactive(props2.dataConfig)
let queryList = ref([])
const createRelativeList = () => {
return new Promise((resolve2) => {
let fieldsAliasMap = {}
let dimissions = dataConfig.dimissions.filter((item2) => item2.id)
if (props2.dataConfig.isVariableName) {
dimissions = DIMENSION_LIST.slice(0, 1)
}
let indexes = dataConfig.indexes.filter((item2) => item2.id)
if (node2.props.dataConfig.dataType !== 0) {
indexes = []
}
let fields = [].concat(dimissions, indexes)
if (dataConfig.dataSetId) {
fields.forEach((item2) => {
fieldsAliasMap[item2.id] = item2.aliasName
})
fetchDataSetFieldList(
dataConfig.dataSetId,
dataConfig.dataSetType
).then((res) => {
resolve2([
...res.map((item2) => {
return {
id: item2.id,
fieldName: item2.fieldName,
fieldType: item2.fieldType,
optionValue: item2.fieldName,
chartId: node2.id,
dataSetId: dataConfig.dataSetId,
field: item2.fieldName,
aliasName: fieldsAliasMap[item2.id] || '',
dataType:
item2.fieldName === '\u8BB0\u5F55\u65F6\u95F4'
? 'history'
: '',
}
}),
])
})
} else {
resolve2(
fields.map((item2) => {
return {
id: item2.id,
fieldName: item2.fieldName,
fieldType: item2.fieldType,
optionValue: item2.fieldName,
chartId: node2.id,
dataSetId: dataConfig.dataSetId,
field: item2.fieldName,
aliasName: fieldsAliasMap[item2.id] || '',
dataType:
item2.fieldName === '\u8BB0\u5F55\u65F6\u95F4'
? 'history'
: '',
}
})
)
}
})
}
const handleCreateQuery = () => {
let canvasNode = new CanvasNode$1({
is: 'Filter',
name: '\u7B5B\u9009\u5668',
props: {},
})
const pos = getNodePos(node2)
canvasNode.style.position = 'absolute'
canvasNode.style.left = pos.x + 'px'
canvasNode.style.top = pos.y - 50 + 'px'
setTimeout(() => {
if (!canvasNode) return
CanvasNode$1.getBody().appendChild(canvasNode)
nextTick(async () => {
unUnionController()
emit(ControllerEventType.UNION_FILTER, {
controllerId: canvasNode.id,
relativeList: await createRelativeList(),
chartId: node2.id,
})
dataConfig.queryControllerId = canvasNode.id
queryList.value = getPageControllers(
app.current.project.current.page.document.body
)
})
})
}
const setQueryControllerId = async (id2) => {
unUnionController()
dataConfig.queryControllerId = id2
emit(ControllerEventType.UNION_FILTER, {
controllerId: id2,
relativeList: await createRelativeList(),
chartId: node2.id,
})
}
const unUnionController = () => {
const prevControllerId = dataConfig.queryControllerId
if (prevControllerId) {
emit(ControllerEventType.UN_UNION_FILTER, {
removeChartId: node2.id,
prevControllerId,
})
}
}
const getPageControllers = (node22) => {
let controllers = []
if (node22.childNodes.length) {
node22.childNodes.forEach((item2) => {
controllers.push(...getPageControllers(item2))
})
} else if (node22.is === 'Filter') {
controllers.push({
id: node22.id,
name: node22.name,
})
}
return controllers
}
queryList.value = getPageControllers(
app.current.project.current.page.document.body
)
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_button = resolveComponent('el-button')
return unref(dataConfig).dataType !== 2
? (openBlock(),
createBlock(
_sfc_main$72,
{
key: 0,
title: '\u67E5\u8BE2\u6761\u4EF6',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$5m, [
createElementVNode('div', _hoisted_2$4r, [
createElementVNode('div', _hoisted_3$3$, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
clearable: '',
onClear:
_cache[0] ||
(_cache[0] = ($event) =>
(unref(dataConfig).queryControllerId = '')),
'popper-class': 'cms-el-select_check',
'model-value': unref(dataConfig).queryControllerId,
placeholder: '\u8BF7\u5173\u8054\u7B5B\u9009\u5668',
onChange: setQueryControllerId,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(queryList.value, (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.id,
label: item2.name,
value: item2.id,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['model-value']
),
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: handleCreateQuery,
},
{
default: withCtx(() => [
_hoisted_4$3u,
_hoisted_5$39,
]),
_: 1,
}
),
]),
]),
]),
]),
_: 1,
}
))
: createCommentVNode('', true)
}
},
})
var QueryConditions$4 = /* @__PURE__ */ _export_sfc(_sfc_main$6o, [
['__scopeId', 'data-v-cadeb6c2'],
])
var QueryConditions$5 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: QueryConditions$4,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ChartBar_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$5l = { class: 'chartSettings' }
const config$T = {
category: 'chart',
name: '\u67F1\u72B6\u56FE',
icon: 'icon-zhuzhuangtu',
permission: false,
styleConfig: {
textDecoration: false,
},
}
const _sfc_main$6n = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$5l, [
createVNode$1(Type$3, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Data$4, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(QueryConditions$4, { node: unref(node2) }, null, 8, [
'node',
]),
createVNode$1(Title$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(SetChart$5, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Label$1, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Legend$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(XAxis$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(YAxis, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(StyleConditions, { node: unref(node2) }, null, 8, [
'node',
]),
createVNode$1(Padding, { node: unref(node2) }, null, 8, ['node']),
])
)
}
},
})
var ChartBar_settings = /* @__PURE__ */ _export_sfc(_sfc_main$6n, [
['__scopeId', 'data-v-6ed03d31'],
])
var __glob_2_6$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$T,
default: ChartBar_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _sfc_main$6m = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
Chart$1,
mergeProps(
{
node: $props2.node,
},
$props2.node.props
),
null,
16,
['node']
)
)
}
},
})
var __glob_2_7$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$6m,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ChartBarHorizontal_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$5k = { class: 'chartSettings' }
const config$S = {
category: 'chart',
name: '\u6761\u5F62\u56FE',
icon: 'icon-tiaoxingtu',
permission: false,
styleConfig: {
textDecoration: false,
},
}
const _sfc_main$6l = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$5k, [
createVNode$1(Type$3, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Data$4, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(QueryConditions$4, { node: unref(node2) }, null, 8, [
'node',
]),
createVNode$1(Title$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(SetChart$5, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Label$1, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Legend$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(XAxis$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(YAxis, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(StyleConditions, { node: unref(node2) }, null, 8, [
'node',
]),
createVNode$1(Padding, { node: unref(node2) }, null, 8, ['node']),
])
)
}
},
})
var ChartBarHorizontal_settings = /* @__PURE__ */ _export_sfc(_sfc_main$6l, [
['__scopeId', 'data-v-2ce4d8d8'],
])
var __glob_2_9$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$S,
default: ChartBarHorizontal_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _sfc_main$6k = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
function updateChart2(chart2) {
const option2 = chart2.getOption()
const yAxis = option2.yAxis
option2.yAxis = option2.xAxis
option2.xAxis = yAxis
if (option2.series) {
for (const series of option2.series) {
const yAxisIndex = series.yAxisIndex
const markLine = series.markLine
markLine.data.forEach((item2) => {
if (item2.yAxis) {
item2.xAxis = item2.yAxis
item2.yAxis = null
}
})
Object.assign(series, {
type: 'bar',
yAxisIndex: series.xAxisIndex,
xAxisIndex: yAxisIndex,
})
}
}
chart2.setOption(
{
yAxis: option2.yAxis,
xAxis: option2.xAxis,
series: option2.series,
},
{ lazyUpdate: true }
)
}
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
Chart$1,
mergeProps(
{
node: $props2.node,
},
$props2.node.props,
{ updateChart: updateChart2 }
),
null,
16,
['node']
)
)
}
},
})
var __glob_2_10 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$6k,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ChartBarHorizontalStacked_settings_vue_vue_type_style_index_0_scoped_true_lang =
''
const _hoisted_1$5j = { class: 'chartSettings' }
const config$R = {
category: 'chart',
name: '\u5806\u79EF\u6761\u5F62\u56FE',
icon: 'icon-duijitiaoxingtu',
permission: false,
styleConfig: {
textDecoration: false,
},
}
const _sfc_main$6j = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$5j, [
createVNode$1(Type$3, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Data$4, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(QueryConditions$4, { node: unref(node2) }, null, 8, [
'node',
]),
createVNode$1(Title$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(SetChart$5, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Label$1, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Legend$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(XAxis$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(YAxis, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(StyleConditions, { node: unref(node2) }, null, 8, [
'node',
]),
createVNode$1(Padding, { node: unref(node2) }, null, 8, ['node']),
])
)
}
},
})
var ChartBarHorizontalStacked_settings = /* @__PURE__ */ _export_sfc(
_sfc_main$6j,
[['__scopeId', 'data-v-4f1e40ea']]
)
var __glob_2_11 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$R,
default: ChartBarHorizontalStacked_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _sfc_main$6i = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
function updateChart2(chart2) {
const option2 = chart2.getOption()
const yAxis = option2.yAxis
option2.yAxis = option2.xAxis
option2.xAxis = yAxis
if (option2.series) {
for (const series of option2.series) {
const yAxisIndex = series.yAxisIndex
const markLine = series.markLine
markLine.data.forEach((item2) => {
if (item2.yAxis) {
item2.xAxis = item2.yAxis
item2.yAxis = null
}
})
Object.assign(series, {
type: 'bar',
stack: 'stack',
yAxisIndex: series.xAxisIndex,
xAxisIndex: yAxisIndex,
})
}
}
chart2.setOption(
{
yAxis: option2.yAxis,
xAxis: option2.xAxis,
series: option2.series,
},
{ lazyUpdate: true }
)
}
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
Chart$1,
mergeProps(
{
node: $props2.node,
},
$props2.node.props,
{ updateChart: updateChart2 }
),
null,
16,
['node']
)
)
}
},
})
var __glob_2_12 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$6i,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ChartBarStacked_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$5i = { class: 'chartSettings' }
const config$Q = {
category: 'chart',
name: '\u5806\u79EF\u67F1\u72B6\u56FE',
icon: 'icon-duijizhuzhuangtu',
permission: false,
styleConfig: {
textDecoration: false,
},
}
const _sfc_main$6h = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$5i, [
createVNode$1(Type$3, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Data$4, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(QueryConditions$4, { node: unref(node2) }, null, 8, [
'node',
]),
createVNode$1(Title$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(SetChart$5, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Label$1, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Legend$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(XAxis$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(YAxis, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(StyleConditions, { node: unref(node2) }, null, 8, [
'node',
]),
createVNode$1(Padding, { node: unref(node2) }, null, 8, ['node']),
])
)
}
},
})
var ChartBarStacked_settings = /* @__PURE__ */ _export_sfc(_sfc_main$6h, [
['__scopeId', 'data-v-cf50736e'],
])
var __glob_2_13 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$Q,
default: ChartBarStacked_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _sfc_main$6g = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
function updateChart2(chart2) {
const option2 = chart2.getOption()
if (option2.series) {
for (const series of option2.series) {
Object.assign(series, {
type: 'bar',
stack: 'stack',
})
}
}
chart2.setOption(
{
series: option2.series,
},
{ lazyUpdate: true }
)
}
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
Chart$1,
mergeProps(
{
node: $props2.node,
},
$props2.node.props,
{ updateChart: updateChart2 }
),
null,
16,
['node']
)
)
}
},
})
var __glob_2_14 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$6g,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const locationList = [
{
label: '\u540D\u79F0\u4E0A\u65B9',
value: 'top',
},
{
label: '\u540D\u79F0\u4E0B\u65B9',
value: 'bottom',
},
{
label: '\u540D\u79F0\u53F3\u65B9',
value: 'right',
},
]
const alignList = [
{
label: '\u5DE6\u5BF9\u9F50',
value: 'left',
},
{
label: '\u5C45\u4E2D',
value: 'center',
},
]
const distributionList = [
{
label: '\u4E0A\u4E0B\u5206\u5E03',
value: 'column',
},
{
label: '\u5DE6\u53F3\u5206\u5E03',
value: 'row',
},
]
const conditionTypeList = [
{
label: '>',
value: '>',
},
{
label: '==',
value: '==',
},
{
label: '<',
value: '<',
},
{
label: '>=',
value: '>=',
},
{
label: '!=',
value: '!=',
},
{
label: '<=',
value: '<=',
},
]
const iconList = [
{
label: '\u2191',
value: '\u2191',
},
{
label: '\u2192',
value: '\u2192',
},
{
label: '\u2193',
value: '\u2193',
},
]
var LabelSettings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$30 = (n2) => (
pushScopeId('data-v-0609b898'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$5h = { class: 'set-centent1' }
const _hoisted_2$4q = { class: 'centent-item main-label-style' }
const _hoisted_3$3_ = {
key: 0,
class: 'centent-item main-data-style',
}
const _hoisted_4$3t = /* @__PURE__ */ _withScopeId$30(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'label' },
'\u6570\u503C\u4F4D\u7F6E',
-1
)
)
const config$P = {
category: 'chart',
name: '\u6307\u6807\u5361',
icon: 'icon-kongzhianniu',
permission: false,
}
const _sfc_main$6f = /* @__PURE__ */ defineComponent({
props: {
labelStyle: null,
isLocation: { type: Boolean },
label: null,
},
setup(__props2) {
const $props2 = __props2
const labelStyle = reactive($props2.labelStyle)
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_color_picker = resolveComponent('el-color-picker')
return (
openBlock(),
createElementBlock('div', _hoisted_1$5h, [
createElementVNode('div', _hoisted_2$4q, [
withDirectives(
createElementVNode(
'div',
{ class: 'label' },
toDisplayString$1(__props2.label),
513
),
[[vShow, __props2.label]]
),
createVNode$1(
_component_el_select,
{
class: normalizeClass([
'cms-el-select-x',
{ 'label-select': __props2.label },
]),
'popper-class': 'cms-el-select_check',
modelValue: unref(labelStyle).fontFamily,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(labelStyle).fontFamily = $event)),
'allow-create': '',
filterable: '',
placeholder: '\u5B57\u4F53',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(fontFamilyList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
hidden: item2.hidden,
},
null,
8,
['label', 'value', 'hidden']
)
)
}),
128
)),
]),
_: 1,
},
8,
['class', 'modelValue']
),
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x font-select',
'popper-class': 'cms-el-select_check',
modelValue: unref(labelStyle).fontSize,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(labelStyle).fontSize = $event)),
'allow-create': '',
filterable: '',
placeholder: ' ',
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(
[12, 13, 14, 15, 16, 17, 18, 19, 20, 24, 28, 32, 36],
(size) => {
return createVNode$1(
_component_el_option,
{
key: size,
label: size,
value: size,
},
null,
8,
['label', 'value']
)
}
),
64
)),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
modelValue: unref(labelStyle).color,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) => (unref(labelStyle).color = $event)),
},
null,
8,
['predefine', 'modelValue']
),
]),
__props2.isLocation
? (openBlock(),
createElementBlock('div', _hoisted_3$3_, [
_hoisted_4$3t,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
modelValue: unref(labelStyle).location,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(labelStyle).location = $event)),
'allow-create': '',
filterable: '',
placeholder: '\u6570\u503C\u4F4D\u7F6E',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(locationList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]))
: createCommentVNode('', true),
])
)
}
},
})
var LabelSettings = /* @__PURE__ */ _export_sfc(_sfc_main$6f, [
['__scopeId', 'data-v-0609b898'],
])
var LabelSettings$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$P,
default: LabelSettings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Dialog_vue_vue_type_style_index_0_scoped_true_lang$1 = ''
const _withScopeId$2$ = (n2) => (
pushScopeId('data-v-3dcce58e'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$5g = { class: 'content' }
const _hoisted_2$4p = /* @__PURE__ */ _withScopeId$2$(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'item-cell handle-paixu' },
[/* @__PURE__ */ createElementVNode('i', { class: 'iconfont icon-paixu' })],
-1
)
)
const _hoisted_3$3Z = { class: 'item-cell' }
const _hoisted_4$3s = { class: 'color-cell' }
const _hoisted_5$38 = { class: 'cms-el-color-picker-x color-picker' }
const _hoisted_6$2Q = { class: 'item-cell' }
const _hoisted_7$2t = { class: 'item-cell' }
const _hoisted_8$2b = { class: 'field' }
const _hoisted_9$21 = { class: 'item-cell' }
const _hoisted_10$1S = { class: 'item-cell' }
const _hoisted_11$1J = ['onClick']
const _sfc_main$6e = /* @__PURE__ */ defineComponent({
props: {
getData: null,
visible: { type: Boolean },
title: null,
conditionTypeList: null,
iconList: null,
mappingName: null,
},
emits: ['confirm', 'close'],
setup(__props2, { emit: $emit }) {
const props2 = __props2
const dialogUlList = ref()
const mappingName2 = reactive(props2.mappingName)
let conditionList2 = ref(
props2.getData.conditionList.length > 0
? JSON.parse(JSON.stringify(props2.getData.conditionList))
: [
{
iconType: props2.iconList[0].value || '',
condition: '',
value: '',
color: '#80A8D5',
},
{
iconType: props2.iconList[0].value || '',
condition: '',
value: '',
color: '#80A8D5',
},
{
iconType: props2.iconList[0].value || '',
condition: '',
value: '',
color: '#80A8D5',
},
]
)
const cancel2 = () => {
$emit('close')
}
const confirm2 = () => {
for (let i2 = 0; i2 < conditionList2.value.length; i2++) {
let item2 = conditionList2.value[i2]
if (item2.condition == '') {
ElMessage({
message: '\u6761\u4EF6\u9009\u9879\u4E0D\u80FD\u4E3A\u7A7A',
type: 'warning',
customClass: 'cms-el-message el-message--error',
})
return
}
if (item2.value == '') {
ElMessage({
message: '\u6761\u4EF6\u4E0D\u80FD\u4E3A\u7A7A',
type: 'warning',
customClass: 'cms-el-message el-message--error',
})
return
}
}
$emit('confirm', conditionList2.value)
cancel2()
}
const addCondition = () => {
let setData = {
iconType: props2.iconList[0].value || '',
fieldName: props2.getData.fieldName,
condition: '',
value: '',
color: '#80A8D5',
}
conditionList2.value.push(setData)
}
const delItem = (item2, index2) => {
conditionList2.value.splice(index2, 1)
}
const initSortable = () => {
nextTick(() => {
if (!dialogUlList.value) return
Sortable.create(dialogUlList.value, {
sort: true,
animation: 150,
handle: '.handle-paixu',
preventOnFilter: true,
ghostClass: 'blue-background-class',
onStart: () => {},
onEnd: (val2) => {
let oldIndex2 = val2.oldIndex
let newIndex2 = val2.newIndex
if (oldIndex2 > newIndex2) {
conditionList2.value.splice(
newIndex2,
0,
conditionList2.value[oldIndex2]
)
conditionList2.value.splice(oldIndex2 + 1, 1)
} else {
conditionList2.value.splice(
newIndex2,
0,
conditionList2.value[oldIndex2]
)
conditionList2.value.splice(oldIndex2, 1)
}
},
})
})
}
onMounted(() => {
initSortable()
})
return (_ctx, _cache) => {
const _component_el_color_picker = resolveComponent('el-color-picker')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input = resolveComponent('el-input')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
'model-value': __props2.visible,
width: '570px',
top: '26vh',
title: __props2.title,
'custom-class': 'cms-el-dialog',
onClose: cancel2,
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$5g, [
createElementVNode('div', { class: 'header' }, [
createElementVNode(
'button',
{
class: 'cms-btn btn-screen-btn',
onClick: addCondition,
},
'\u6DFB\u52A0'
),
]),
createElementVNode(
'ul',
{
ref_key: 'dialogUlList',
ref: dialogUlList,
id: 'dialogUlList',
class: 'list',
onUpdate:
_cache[0] ||
(_cache[0] = withModifiers(() => {}, ['stop'])),
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(conditionList2.value, (item2, index2) => {
return (
openBlock(),
createElementBlock(
'li',
{
class: 'list-item',
key: index2,
},
[
_hoisted_2$4p,
createElementVNode('div', _hoisted_3$3Z, [
createElementVNode('div', _hoisted_4$3s, [
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont',
item2.iconType,
]),
style: normalizeStyle$1({
color: item2.color,
}),
},
null,
6
),
createElementVNode('div', _hoisted_5$38, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
modelValue: item2.color,
'onUpdate:modelValue': ($event) =>
(item2.color = $event),
},
null,
8,
[
'predefine',
'modelValue',
'onUpdate:modelValue',
]
),
]),
]),
]),
createElementVNode('div', _hoisted_6$2Q, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select add-select select',
'popper-class': 'cms-el-select_check',
modelValue: item2.iconType,
'onUpdate:modelValue': ($event) =>
(item2.iconType = $event),
'allow-create': '',
filterable: '',
placeholder: '\u7C7B\u578B',
style: normalizeStyle$1({
color: item2.color,
}),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(props2.iconList, (item1) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item1.value,
label: item1.label,
value: item1.value,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(
item1.label
) + ' ',
1
),
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont',
item1.value,
]),
style: normalizeStyle$1({
color: item2.color,
font: 'inherit',
}),
},
null,
6
),
]),
_: 2,
},
1032,
['label', 'value']
)
)
}),
128
)),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue', 'style']
),
]),
createElementVNode('div', _hoisted_7$2t, [
createElementVNode(
'div',
_hoisted_8$2b,
toDisplayString$1(
unref(mappingName2)[
__props2.getData.fieldId
]
),
1
),
]),
createElementVNode('div', _hoisted_9$21, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select add-select',
'popper-class': 'cms-el-select_check',
modelValue: item2.condition,
'onUpdate:modelValue': ($event) =>
(item2.condition = $event),
'allow-create': '',
filterable: '',
placeholder: '\u6761\u4EF6',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
props2.conditionTypeList,
(item1) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item1.value,
label: item1.label,
value: item1.value,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue']
),
]),
createElementVNode('div', _hoisted_10$1S, [
createVNode$1(
_component_el_input,
{
modelValue: item2.value,
'onUpdate:modelValue': ($event) =>
(item2.value = $event),
class:
'cms-el-input-min cms-el-input-number add-select1',
placeholder:
'\u8BF7\u8F93\u5165\u6761\u4EF6',
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
]),
createElementVNode(
'i',
{
class: 'iconfont icon-tupianshanchu',
onClick: ($event) => delItem(item2, index2),
},
null,
8,
_hoisted_11$1J
),
]
)
)
}),
128
)),
],
544
),
]),
createElementVNode(
'div',
{ class: 'el-dialog__footer el-dialog__footer1' },
[
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: cancel2,
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: confirm2,
},
'\u786E\u8BA4'
),
]
),
]),
_: 1,
},
8,
['model-value', 'title']
)
)
}
},
})
var Dialog$2 = /* @__PURE__ */ _export_sfc(_sfc_main$6e, [
['__scopeId', 'data-v-3dcce58e'],
])
var Dialog$3 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Dialog$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const indexesConditionTypeList = [
{
label: '>',
value: '>',
},
{
label: '==',
value: '==',
},
{
label: '<',
value: '<',
},
{
label: '>=',
value: '>=',
},
{
label: '!=',
value: '!=',
},
{
label: '<=',
value: '<=',
},
]
const indexesIconList = [
{
label: '\u4E09\u89D2\u5411\u4E0B',
value: 'icon-xia1',
},
{
label: '\u4E09\u89D2\u5411\u53F3',
value: 'icon-you1',
},
{
label: '\u4E09\u89D2\u5411\u4E0A',
value: 'icon-shang1',
},
{
label: '\u4E09\u89D2\u5411\u5DE6',
value: 'icon-zuo1',
},
{
label: '\u7BAD\u5934\u5411\u4E0B',
value: 'icon-xia2',
},
{
label: '\u7BAD\u5934\u5411\u53F3',
value: 'icon-you2',
},
{
label: '\u7BAD\u5934\u5411\u4E0A',
value: 'icon-shang2',
},
{
label: '\u7BAD\u5934\u5411\u5DE6',
value: 'icon-zuo2',
},
]
const dimissionsConditionTypeList = [
{
label: '\u5305\u542B',
value: '==',
},
{
label: '\u4E0D\u5305\u542B',
value: '!=',
},
]
const dimissionsIconList = [
{
label: '\u56FE\u5F621',
value: 'icon-yuan1',
},
{
label: '\u56FE\u5F622',
value: 'icon-weibiaoti-1',
},
]
var ChartCard_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2_ = (n2) => (
pushScopeId('data-v-e824317e'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$5f = { class: 'chartSettings' }
const _hoisted_2$4o = { class: 'set-title' }
const _hoisted_3$3Y = /* @__PURE__ */ _withScopeId$2_(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u4E3B\u6307\u6807\u8BBE\u7F6E:',
-1
)
)
const _hoisted_4$3r = { class: 'title-right' }
const _hoisted_5$37 = /* @__PURE__ */ _withScopeId$2_(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'date-type-text' },
'\u663E\u793A\u4E3B\u6307\u6807\u540D\u79F0',
-1
)
)
const _hoisted_6$2P = { class: 'set-title' }
const _hoisted_7$2s = /* @__PURE__ */ _withScopeId$2_(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u526F\u6307\u6807\u8BBE\u7F6E:',
-1
)
)
const _hoisted_8$2a = { class: 'title-right' }
const _hoisted_9$20 = /* @__PURE__ */ _withScopeId$2_(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'date-type-text' },
'\u663E\u793A\u526F\u6307\u6807\u540D\u79F0',
-1
)
)
const _hoisted_10$1R = { class: 'centent' }
const _hoisted_11$1I = /* @__PURE__ */ _withScopeId$2_(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'label' },
'\u5BF9\u9F50\u65B9\u5F0F:',
-1
)
)
const _hoisted_12$1E = { class: 'centent' }
const _hoisted_13$1u = /* @__PURE__ */ _withScopeId$2_(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'label' },
'\u5206\u5E03\u65B9\u5F0F:',
-1
)
)
const _hoisted_14$1k = { class: 'add-style' }
const _hoisted_15$1f = {
key: 0,
class: 'add-button',
}
const _hoisted_16$1d = { class: 'table' }
const _hoisted_17$17 = { class: 'table-icon' }
const config$O = {
category: 'chart',
name: '\u6307\u6807\u5361',
icon: 'icon-zhibiaoka',
permission: false,
maxDimissionCount: 0,
}
const _sfc_main$6d = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const settingsTable = ref({})
const node2 = reactive($props2.node)
const defaultCardPropsCopy2 = lodash$2.exports.cloneDeep(defaultProps$8)
const props2 = lodash$2.exports.defaults(
reactive(node2.props),
defaultCardPropsCopy2
)
const tableConfig2 = reactive(props2.tableConfig)
let visible = ref(false)
let mappingName2 = ref({})
let currentData = ref('')
const indexesList = computed(() => {
let list2 = []
list2 = props2.dataConfig.indexes
.filter((i2) => i2.id)
.map((item2, index2) => {
const mode2 =
item2.mode !== '' && item2.mode !== null ? '-' + item2.mode : ''
return { ...item2, id: item2.id + mode2, prop: item2.id + mode2 }
})
return list2
})
const addStyle2 = () => {
let data2 = {
fieldId: '',
conditionList: [],
}
tableConfig2.indexesConditions.push(data2)
settingsTable.value.loadData(tableConfig2.indexesConditions)
}
const setDisabled = (fieldId) => {
let bool2 = false
tableConfig2.indexesConditions.forEach((item2) => {
if (item2.fieldId == fieldId) {
bool2 = true
}
})
return bool2
}
const currentChangeEvent = ({ rowIndex }) => {
currentData.value = {
row: settingsTable.value.getCurrentRecord(),
rowIndex,
}
}
const delStyleCondition = (row, rowIndex) => {
settingsTable.value.clearCurrentRow()
currentData.value = ''
tableConfig2.indexesConditions.splice(rowIndex, 1)
settingsTable.value.loadData(tableConfig2.indexesConditions)
}
const editorStyleCondition = (row, rowIndex) => {
if (!row.fieldId) return
visible.value = true
}
const confirm2 = (list2) => {
tableConfig2.indexesConditions[currentData.value.rowIndex].conditionList =
list2
}
async function getMapping() {
const dataConfig = props2.dataConfig
let defaultMapping = getdefaultMappingData(
props2.dataConfig.dimissions,
props2.dataConfig.indexes
)
let dataSetId = dataConfig.dataSetId
let dataSetType = dataConfig.dataSetType
let fieldList = await fetchDataSetFieldList(dataSetId, dataSetType)
dataConfig.indexes
.filter((i2) => i2.id)
.forEach((i2) => {
let field2 = fieldList.filter((f2) => i2.id == f2.id)[0]
if (i2.mode !== '' && i2.mode !== null) {
mappingName2.value[`${i2.id}-${i2.mode}`] =
field2.fieldName + `(${methodList[i2.mode]})`
} else {
mappingName2.value[`${i2.id}`] = field2.fieldName
}
})
if (!fieldList.length) mappingName2.value = defaultMapping.mapName
}
let dimissionsIndexesStrings2 = ''
watch$1(
[() => props2.dataConfig.indexes.filter((item2) => item2.id)],
(n2) => {
let str = JSON.stringify(n2)
if (dimissionsIndexesStrings2 === str) return
dimissionsIndexesStrings2 = str
getMapping()
},
{
deep: true,
}
)
onMounted(() => {
getMapping()
})
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_vxe_column = resolveComponent('vxe-column')
const _component_vxe_table = resolveComponent('vxe-table')
return (
openBlock(),
createElementBlock('div', _hoisted_1$5f, [
createVNode$1(Type$3, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Data$4, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(QueryConditions$4, { node: unref(node2) }, null, 8, [
'node',
]),
createVNode$1(
SettingItem$1,
{
title: '\u56FE\u8868\u8BBE\u7F6E',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$4o, [
_hoisted_3$3Y,
createElementVNode('div', _hoisted_4$3r, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(props2).cardConfig.showMainLabel,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(props2).cardConfig.showMainLabel = $event)),
class: 'cms-el-checkbox-font-size-12',
},
{
default: withCtx(() => [_hoisted_5$37]),
_: 1,
},
8,
['modelValue']
),
]),
]),
createVNode$1(
LabelSettings,
{
labelStyle: unref(styleConverter)(
unref(props2).cardConfig.mainLabelStyle
),
},
null,
8,
['labelStyle']
),
createVNode$1(
LabelSettings,
{
label: '\u4E3B\u6307\u6807\u6570\u503C',
labelStyle: unref(styleConverter)(
unref(props2).cardConfig.mainDataStyle
),
isLocation: '',
},
null,
8,
['labelStyle']
),
createElementVNode('div', _hoisted_6$2P, [
_hoisted_7$2s,
createElementVNode('div', _hoisted_8$2a, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(props2).cardConfig.showDevLabel,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(props2).cardConfig.showDevLabel = $event)),
class: 'cms-el-checkbox-font-size-12',
},
{
default: withCtx(() => [_hoisted_9$20]),
_: 1,
},
8,
['modelValue']
),
]),
]),
createVNode$1(
LabelSettings,
{
labelStyle: unref(styleConverter)(
unref(props2).cardConfig.devLabelStyle
),
},
null,
8,
['labelStyle']
),
createVNode$1(
LabelSettings,
{
label: '\u526F\u6307\u6807\u6570\u503C',
labelStyle: unref(styleConverter)(
unref(props2).cardConfig.devDataStyle
),
},
null,
8,
['labelStyle']
),
createElementVNode('div', _hoisted_10$1R, [
_hoisted_11$1I,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
modelValue: unref(props2).cardConfig.textAlign,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(props2).cardConfig.textAlign = $event)),
'allow-create': '',
filterable: '',
placeholder: '\u8BF7\u9009\u62E9\u5BF9\u9F50\u65B9\u5F0F',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(alignList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_12$1E, [
_hoisted_13$1u,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
modelValue: unref(props2).cardConfig.flexDirection,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(props2).cardConfig.flexDirection = $event)),
'allow-create': '',
filterable: '',
placeholder: '\u8BF7\u9009\u62E9\u5206\u5E03\u65B9\u5F0F',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(distributionList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
]),
_: 1,
}
),
createVNode$1(
SettingItem$1,
{
title: '\u6761\u4EF6\u6837\u5F0F',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_14$1k, [
unref(tableConfig2).indexesConditions.length
? (openBlock(),
createElementBlock('div', _hoisted_15$1f, [
createElementVNode('i', {
class: 'iconfont icon-tianjiahuamian',
onClick: addStyle2,
}),
]))
: (openBlock(),
createElementBlock(
'button',
{
key: 1,
class: 'cms-btn btn-screen-btn add-btn',
onClick: addStyle2,
},
'+\u6DFB\u52A0\u6837\u5F0F'
)),
createElementVNode('div', _hoisted_16$1d, [
createVNode$1(
_component_vxe_table,
{
border: '',
size: 'small',
class: 'cms-vxe-table settings-table',
ref_key: 'settingsTable',
ref: settingsTable,
height: '200',
'show-overflow': 'tooltip',
'row-config': {
isCurrent: true,
isHover: true,
keyField: 'id',
},
data: unref(tableConfig2).indexesConditions,
onCurrentChange: currentChangeEvent,
},
{
default: withCtx(() => [
createVNode$1(
_component_vxe_column,
{
field: 'id',
title: '\u5B57\u6BB5',
width: '90',
},
{
default: withCtx(({ row }) => [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
modelValue: row.fieldId,
'onUpdate:modelValue': ($event) =>
(row.fieldId = $event),
'allow-create': '',
filterable: '',
placeholder: '\u9009\u62E9\u5B57\u6BB5',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
indexesList.value,
(item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
disabled: setDisabled(
item2.id
),
key: item2.id,
label:
mappingName2.value[
item2.prop
],
value: item2.id,
},
null,
8,
['disabled', 'label', 'value']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue']
),
]),
_: 1,
}
),
createVNode$1(
_component_vxe_column,
{
field: 'condition',
title: '\u6761\u4EF6\u6837\u5F0F',
},
{
default: withCtx(({ row }) => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
row.conditionList,
(item1, index2) => {
return (
openBlock(),
createElementBlock(
'span',
{ key: index2 },
[
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont',
item1.iconType,
]),
style: normalizeStyle$1({
color: item1.color,
font: 'inherit',
}),
},
null,
6
),
createTextVNode(
' ' +
toDisplayString$1(
item1.condition + item1.value
),
1
),
withDirectives(
createElementVNode(
'span',
null,
',',
512
),
[
[
vShow,
index2 !=
row.conditionList.length -
1,
],
]
),
]
)
)
}
),
128
)),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['data']
),
withDirectives(
createElementVNode(
'div',
_hoisted_17$17,
[
withDirectives(
createElementVNode(
'i',
{
class: 'iconfont icon-bianjigongcheng',
onClick:
_cache[4] ||
(_cache[4] = ($event) =>
editorStyleCondition(
currentData.value.row,
currentData.value.rowIndex
)),
},
null,
512
),
[[vShow, currentData.value.row?.fieldId]]
),
createElementVNode('i', {
class: 'iconfont icon-qingchu',
onClick:
_cache[5] ||
(_cache[5] = ($event) =>
delStyleCondition(
currentData.value.row,
currentData.value.rowIndex
)),
}),
],
512
),
[[vShow, currentData.value && currentData.value.row]]
),
]),
visible.value
? (openBlock(),
createBlock(
Dialog$2,
{
key: 2,
title: '\u6761\u4EF6\u6837\u5F0F',
visible: visible.value,
onClose:
_cache[6] ||
(_cache[6] = ($event) => (visible.value = false)),
onConfirm: confirm2,
getData: currentData.value.row,
conditionTypeList: unref(indexesConditionTypeList),
iconList: unref(indexesIconList),
mappingName: mappingName2.value,
},
null,
8,
[
'visible',
'getData',
'conditionTypeList',
'iconList',
'mappingName',
]
))
: createCommentVNode('', true),
]),
]),
_: 1,
}
),
createVNode$1(Padding, { node: unref(node2) }, null, 8, ['node']),
])
)
}
},
})
var ChartCard_settings = /* @__PURE__ */ _export_sfc(_sfc_main$6d, [
['__scopeId', 'data-v-e824317e'],
])
var __glob_2_15 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$O,
default: ChartCard_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ChartCard_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2Z = (n2) => (
pushScopeId('data-v-a1c4e1f2'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$5e = ['loading', 't']
const _hoisted_2$4n = { class: 'main' }
const _hoisted_3$3X = {
key: 0,
class: 'main-title',
}
const _hoisted_4$3q = { class: 'line' }
const _hoisted_5$36 = /* @__PURE__ */ _withScopeId$2Z(() =>
/* @__PURE__ */ createElementVNode('div', { class: 'line-item' }, null, -1)
)
const _hoisted_6$2O = [_hoisted_5$36]
const _sfc_main$6c = /* @__PURE__ */ defineComponent({
props: {
node: null,
editing: { type: Boolean },
},
setup(__props) {
const $props = __props
const node = reactive($props.node)
const defaultCardPropsCopy = lodash$2.exports.cloneDeep(defaultProps$8)
const props = lodash$2.exports.defaults(
reactive(node.props),
defaultCardPropsCopy
)
const setStyle = computed(() => {
return {
textAlign: props.cardConfig.textAlign || '',
flexDirection: props.cardConfig.flexDirection || '',
}
})
let cardData = ref([])
let loading = ref(false)
const cardDataList = computed(() => {
let list2 = []
let indexes = props.dataConfig.indexes.filter((i2) => i2.id)
if (!indexes.length) return list2
let mode2 = '-' + indexes[0].mode
if (props.dataConfig.dataType === DATA_TYPE.VARIABLE) mode2 = ''
let mainIndexes = indexes[0].id + mode2
let devIndexes = []
if (!indexes.length) return list2
for (let i2 = 1; i2 < indexes.length; i2++) {
let mode22 = '-' + indexes[i2].mode
if (props.dataConfig.dataType === DATA_TYPE.VARIABLE) mode22 = ''
let key2 = indexes[i2].id + mode22
devIndexes.push({
key: key2,
dataFormat: indexes[i2].dataFormat,
name: mappingName.value[key2],
value: '',
})
}
let data2 = {
name: mappingName.value[mainIndexes],
value: '',
dataFormat: indexes[0].dataFormat,
devIndexes,
}
const setUnit = (dataFormat) => {
if (dataFormat == 4 || dataFormat == 5) {
return '%'
}
return ''
}
cardData.value.forEach((item2) => {
data2.devIndexes.forEach((d3) => {
Object.assign(d3, {
value: item2[mappingKey.value[d3.key]] + setUnit(d3.dataFormat),
...getIcon(d3.key, item2[mappingKey.value[d3.key]]),
})
})
Object.assign(data2, {
value:
item2[mappingKey.value[mainIndexes]] + setUnit(data2.dataFormat),
...getIcon(mainIndexes, item2[mappingKey.value[mainIndexes]]),
})
})
list2.push(data2)
return list2
})
const getIcon = (key, value) => {
let condition = props.tableConfig.indexesConditions.filter((item2) => {
return item2.fieldId == key
})[0]
let num = parseFloat(value)
let data = {}
if (condition) {
let conditionList = condition.conditionList
for (let i = 0; i < conditionList.length; i++) {
let item = conditionList[i]
let condition = item.condition
let conditionVal = parseFloat(item.value)
let bool = eval(num + condition + conditionVal)
if (bool) {
data = {
color: item.color,
iconType: item.iconType,
}
break
}
}
}
return data
}
let mappingKey = ref({})
let mappingName = ref({})
const createRealtimeTableData = () => {
let list2 = []
let variables = {}
let mapData = []
props.dataConfig.indexes.forEach((item2) => {
variables[item2.fieldName + '(0)'] =
Variable.getByName(item2.fieldName)?.value ?? ''
mapData.push({
id: item2.id,
name: item2.fieldName + '(0)',
aliasName: item2.aliasName,
fieldName: item2.fieldName,
method: null,
})
})
list2.push(variables)
let { mapKey, mapName } = getMappingData(mapData)
mappingKey.value = mapKey
mappingName.value = mapName
cardData.value = list2
}
let updateTableDataTimer
const startUpdateTableData = () => {
clearTimeout(updateTableDataTimer)
updateTableDataTimer = setTimeout(() => {
createRealtimeTableData()
startUpdateTableData()
}, 1e3)
}
async function loadData() {
let defaultMapping = getdefaultMappingData(
props.dataConfig.dimissions,
props.dataConfig.indexes
)
let dataSetId = props.dataConfig.dataSetId
clearTimeout(updateTableDataTimer)
if (props.dataConfig.dataType === DATA_TYPE.VARIABLE) {
createRealtimeTableData()
startUpdateTableData()
} else {
if (props.dataConfig.dataType === DATA_TYPE.HISTORY) {
dataSetId = 'history'
}
if (
dataSetId &&
props.dataConfig.indexes?.filter((i2) => i2.id).length
) {
let limit2 = $props.editing
? props.dataConfig.editingLimit
: props.dataConfig.runningLimit
try {
let data2 = await fetchData(
node,
node.id,
dataSetId,
[],
props.dataConfig.indexes || [],
whereJson.value,
limit2
)
if (!data2 || data2 == void 0) clearTimer()
cardData.value = data2.list
let { mapKey, mapName } = getMappingData(data2.mapping)
mappingKey.value = mapKey
mappingName.value = mapName
} catch (error2) {
mappingKey.value = defaultMapping.mapKey
mappingName.value = defaultMapping.mapName
console.warn('\u83B7\u53D6\u6570\u636E\u51FA\u9519\u62C9' + error2)
}
} else {
mappingKey.value = defaultMapping.mapKey
mappingName.value = defaultMapping.mapName
let data2 = {}
props.dataConfig.indexes.forEach((item2) => {
let sum2 = 0
defaultData.forEach((item1) => {
if (item1[item2.id]) {
sum2 += parseFloat(item1[item2.id])
}
})
data2[item2.id] = sum2
})
cardData.value = [data2]
}
}
}
const loadData_ = debouncePromise(loadData, 300, { maxWait: 3e3 })
watch$1(
[() => props.dataConfig.dataSetId, () => props.dataConfig.editingLimit],
loadData_,
{
deep: true,
}
)
let { whereJson } = useFilterController(node, loadData_, isUseCache)
let dimissionsIndexesStrings = ''
watch$1(
[() => props.dataConfig.indexes.filter((item2) => item2.id)],
(n2) => {
let str = JSON.stringify(n2)
if (dimissionsIndexesStrings === str) return
dimissionsIndexesStrings = str
loadData_()
},
{
deep: true,
}
)
let freshTimer
function setTimer() {
loadData()
.then(() => {
freshTimer = setTimeout(
setTimer,
props.dataConfig.audoRefreshTime * 1e3
)
})
.catch(() => {
clearTimer()
})
}
function clearTimer() {
clearTimeout(freshTimer)
}
const t = Language$1.t
const collectText = () => {
props.dataConfig.indexes.forEach((item2) => {
t(item2.aliasName)
t(item2.fieldName)
methodList[item2.mode] &&
t(`${item2.fieldName}(${methodList[item2.mode]})`)
})
}
async function init() {
if (props.dataConfig.dataType === DATA_TYPE.HISTORY) {
props.dataConfig.isVariableName = true
}
loading.value = true
if (props.dataConfig.audoRefresh && !$props.editing) {
await setTimer()
} else {
await loadData_()
}
loading.value = false
}
onMounted(() => {
init()
})
onBeforeUnmount(() => {
clearTimer()
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
ref: 'el',
class: 'chart chart-card',
loading: loading.value,
t: collectText(),
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(cardDataList.value, (item2, index2) => {
return (
openBlock(),
createElementBlock(
'div',
{
key: 'main' + index2,
class: 'chart-card',
style: normalizeStyle$1(setStyle.value),
},
[
createElementVNode('div', _hoisted_2$4n, [
withDirectives(
createElementVNode(
'p',
{
class: 'num',
style: normalizeStyle$1(
unref(props).cardConfig.mainDataStyle
),
},
[
createTextVNode(
toDisplayString$1(item2.value) + ' ',
1
),
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont',
item2.iconType,
]),
style: normalizeStyle$1({
color: item2.color,
font: 'inherit',
}),
},
null,
6
),
],
4
),
[
[
vShow,
unref(props).cardConfig.mainDataStyle.location ==
'top',
],
]
),
unref(props).cardConfig.mainDataStyle.location !=
'right'
? withDirectives(
(openBlock(),
createElementBlock(
'p',
_hoisted_3$3X,
[
createElementVNode(
'span',
{
style: normalizeStyle$1(
unref(props).cardConfig.mainLabelStyle
),
},
toDisplayString$1(unref(t)(item2.name)),
5
),
],
512
)),
[[vShow, unref(props).cardConfig.showMainLabel]]
)
: createCommentVNode('', true),
unref(props).cardConfig.mainDataStyle.location ==
'right'
? withDirectives(
(openBlock(),
createElementBlock(
'p',
{
key: 1,
class: 'main-title main-title1',
style: normalizeStyle$1({
'justify-content':
unref(props).cardConfig.textAlign,
}),
},
[
createElementVNode(
'span',
{
style: normalizeStyle$1(
unref(props).cardConfig.mainLabelStyle
),
},
toDisplayString$1(unref(t)(item2.name)) +
'\uFF1A',
5
),
createElementVNode(
'span',
{
style: normalizeStyle$1(
unref(props).cardConfig.mainLabelStyle
),
},
[
createElementVNode(
'span',
{
style: normalizeStyle$1(
unref(props).cardConfig
.mainDataStyle
),
},
toDisplayString$1(item2.value),
5
),
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont',
item2.iconType,
]),
style: normalizeStyle$1({
color: item2.color,
font: 'inherit',
}),
},
null,
6
),
],
4
),
],
4
)),
[[vShow, unref(props).cardConfig.showMainLabel]]
)
: createCommentVNode('', true),
withDirectives(
createElementVNode(
'p',
{
class: 'num',
style: normalizeStyle$1(
unref(props).cardConfig.mainDataStyle
),
},
[
createTextVNode(
toDisplayString$1(item2.value) + ' ',
1
),
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont',
item2.iconType,
]),
style: normalizeStyle$1({
color: item2.color,
font: 'inherit',
}),
},
null,
6
),
],
4
),
[
[
vShow,
unref(props).cardConfig.mainDataStyle.location ==
'bottom' ||
!unref(props).cardConfig.mainDataStyle.location,
],
]
),
]),
withDirectives(
createElementVNode(
'div',
_hoisted_4$3q,
_hoisted_6$2O,
512
),
[
[
vShow,
unref(props).cardConfig.flexDirection == 'row',
],
]
),
withDirectives(
createElementVNode(
'div',
{
class: normalizeClass([
'dev',
{
dev1:
unref(props).cardConfig.flexDirection ==
'row',
},
]),
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(item2.devIndexes, (item1, index1) => {
return (
openBlock(),
createElementBlock(
'p',
{
class: 'dev-title',
key: 'dev' + index1,
},
[
withDirectives(
createElementVNode(
'span',
{
style: normalizeStyle$1(
unref(props).cardConfig
.devLabelStyle
),
},
toDisplayString$1(
unref(t)(item1.name)
) + '\uFF1A',
5
),
[
[
vShow,
unref(props).cardConfig
.showDevLabel,
],
]
),
createElementVNode(
'span',
{
style: normalizeStyle$1(
unref(props).cardConfig.devDataStyle
),
},
[
createTextVNode(
toDisplayString$1(item1.value) +
' ',
1
),
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont',
item1.iconType,
]),
style: normalizeStyle$1({
color: item1.color,
font: 'inherit',
}),
},
null,
6
),
],
4
),
]
)
)
}),
128
)),
],
2
),
[[vShow, item2.devIndexes.length]]
),
],
4
)
)
}),
128
)),
],
8,
_hoisted_1$5e
)
)
}
},
})
var ChartCard = /* @__PURE__ */ _export_sfc(_sfc_main$6c, [
['__scopeId', 'data-v-a1c4e1f2'],
])
var __glob_2_16 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ChartCard,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var SetChart_vue_vue_type_style_index_0_scoped_true_lang$3 = ''
const _withScopeId$2Y = (n2) => (
pushScopeId('data-v-7039760c'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$5d = { class: 'set-chart' }
const _hoisted_2$4m = { class: 'set-chart-item' }
const _hoisted_3$3W = /* @__PURE__ */ _withScopeId$2Y(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'header' },
'\u7EBF\u6761\u8BBE\u7F6E\uFF1A',
-1
)
)
const _hoisted_4$3p = { class: 'content' }
const _hoisted_5$35 = /* @__PURE__ */ _withScopeId$2Y(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u7EBF\u6761\u7C97\u7EC6',
-1
)
)
const _hoisted_6$2N = { class: 'content' }
const _hoisted_7$2r = { class: 'set-chart-item' }
const _hoisted_8$29 = { class: 'header' }
const _hoisted_9$1$ = { class: 'content' }
const _hoisted_10$1Q = /* @__PURE__ */ _withScopeId$2Y(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u6807\u8BB0\u5927\u5C0F',
-1
)
)
const _hoisted_11$1H = { class: 'set-chart-item' }
const _hoisted_12$1D = { class: 'header' }
const _hoisted_13$1t = { class: 'content' }
const _hoisted_14$1j = /* @__PURE__ */ _withScopeId$2Y(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u6807\u8BB0\u5927\u5C0F',
-1
)
)
const _hoisted_15$1e = { class: 'set-chart-item' }
const _hoisted_16$1c = /* @__PURE__ */ _withScopeId$2Y(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'header' },
'\u7EBF\u6761\u6837\u5F0F\uFF1A',
-1
)
)
const _hoisted_17$16 = { class: 'content' }
const _hoisted_18$$ = /* @__PURE__ */ createTextVNode('\u76F4\u7EBF')
const _hoisted_19$X = /* @__PURE__ */ createTextVNode('\u66F2\u7EBF')
const _hoisted_20$R = /* @__PURE__ */ createTextVNode('\u9636\u68AF')
const _hoisted_21$H = { class: 'markLine' }
const _hoisted_22$F = /* @__PURE__ */ _withScopeId$2Y(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u53C2\u8003\u7EBF',
-1
)
)
const _sfc_main$6b = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const props2 = reactive($props2.node.props)
let markLineVisible = ref(false)
const symbolTypeList = [
{
label: '\u25CB',
value: 'circle',
},
{
label: '\u25C7',
value: 'diamond',
},
{
label: '\u25A1',
value: 'rect',
},
]
const markLineCallback = () => {
markLineVisible.value = false
}
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_radio = resolveComponent('el-radio')
const _component_el_radio_group = resolveComponent('el-radio-group')
return (
openBlock(),
createBlock(
_sfc_main$72,
{
title: '\u56FE\u8868\u8BBE\u7F6E',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$5d, [
createElementVNode('div', _hoisted_2$4m, [
_hoisted_3$3W,
createElementVNode('div', _hoisted_4$3p, [
_hoisted_5$35,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x lineStyle',
'popper-class': 'cms-el-select_check',
modelValue: unref(props2).lineConfig.type,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(props2).lineConfig.type = $event)),
'allow-create': '',
filterable: '',
placeholder: '\u7EBF\u6761',
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
label: '\u5B9E\u7EBF',
value: 'solid',
}),
createVNode$1(_component_el_option, {
label: '\u865A\u7EBF',
value: 'dashed',
}),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x size',
modelValue: unref(props2).lineConfig.width,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(props2).lineConfig.width = $event)),
min: 0,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_6$2N, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(props2).lineConfig.unConnectEmpty,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(props2).lineConfig.unConnectEmpty = $event)),
label: '\u4E0D\u8FDE\u63A5\u7A7A\u6570\u636E',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
]),
]),
createElementVNode('div', _hoisted_7$2r, [
createElementVNode('div', _hoisted_8$29, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(props2).lineConfig.symbol.show,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(props2).lineConfig.symbol.show = $event)),
label: '\u663E\u793A\u6570\u636E\u70B9',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_9$1$, [
_hoisted_10$1Q,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x lineStyle',
'popper-class': 'cms-el-select_check',
modelValue: unref(props2).lineConfig.symbol.type,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(props2).lineConfig.symbol.type = $event)),
'allow-create': '',
filterable: '',
placeholder: '\u6807\u8BB0\u70B9\u7C7B\u578B',
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(symbolTypeList, (item2) => {
return createVNode$1(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
}),
64
)),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x size',
modelValue: unref(props2).lineConfig.symbol.size,
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) =>
(unref(props2).lineConfig.symbol.size = $event)),
min: 0,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
]),
]),
createElementVNode('div', _hoisted_11$1H, [
createElementVNode('div', _hoisted_12$1D, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(props2).lineConfig.dataSymbol.show,
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) =>
(unref(props2).lineConfig.dataSymbol.show =
$event)),
label: '\u663E\u793A\u6807\u8BB0\u70B9',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_13$1t, [
_hoisted_14$1j,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x lineStyle',
'popper-class': 'cms-el-select_check',
modelValue: unref(props2).lineConfig.dataSymbol.type,
'onUpdate:modelValue':
_cache[7] ||
(_cache[7] = ($event) =>
(unref(props2).lineConfig.dataSymbol.type =
$event)),
'allow-create': '',
filterable: '',
placeholder: '\u6807\u8BB0\u70B9\u7C7B\u578B',
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(symbolTypeList, (item2) => {
return createVNode$1(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
}),
64
)),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x size',
modelValue: unref(props2).lineConfig.dataSymbol.size,
'onUpdate:modelValue':
_cache[8] ||
(_cache[8] = ($event) =>
(unref(props2).lineConfig.dataSymbol.size =
$event)),
min: 0,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
]),
]),
createElementVNode('div', _hoisted_15$1e, [
_hoisted_16$1c,
createElementVNode('div', _hoisted_17$16, [
createVNode$1(
_component_el_radio_group,
{
modelValue: unref(props2).lineConfig.line,
'onUpdate:modelValue':
_cache[9] ||
(_cache[9] = ($event) =>
(unref(props2).lineConfig.line = $event)),
},
{
default: withCtx(() => [
createVNode$1(
_component_el_radio,
{
label: 'line',
size: 'large',
},
{
default: withCtx(() => [_hoisted_18$$]),
_: 1,
}
),
createVNode$1(
_component_el_radio,
{
label: 'smooth',
size: 'large',
},
{
default: withCtx(() => [_hoisted_19$X]),
_: 1,
}
),
createVNode$1(
_component_el_radio,
{
label: 'step',
size: 'large',
},
{
default: withCtx(() => [_hoisted_20$R]),
_: 1,
}
),
]),
_: 1,
},
8,
['modelValue']
),
]),
]),
createVNode$1(_sfc_main$6w, { node: __props2.node }, null, 8, [
'node',
]),
createElementVNode('div', _hoisted_21$H, [
_hoisted_22$F,
createElementVNode('i', {
class: 'markLineBtn iconfont icon-bianjigongcheng',
onClick:
_cache[10] ||
(_cache[10] = () => {
markLineVisible.value = true
}),
}),
]),
markLineVisible.value
? (openBlock(),
createBlock(
MarkLineConfig,
{
key: 0,
node: __props2.node,
visible: markLineVisible.value,
onCallback: markLineCallback,
},
null,
8,
['node', 'visible']
))
: createCommentVNode('', true),
createVNode$1(DataZoom, { node: __props2.node }, null, 8, [
'node',
]),
createVNode$1(Grid, { node: __props2.node }, null, 8, ['node']),
]),
]),
_: 1,
}
)
)
}
},
})
var SetChart$4 = /* @__PURE__ */ _export_sfc(_sfc_main$6b, [
['__scopeId', 'data-v-7039760c'],
])
var __glob_2_19 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: SetChart$4,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ChartLine_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$5c = { class: 'chartSettings' }
const config$N = {
category: 'chart',
name: '\u6298\u7EBF\u56FE',
icon: 'icon-zhexiantu',
permission: false,
styleConfig: {
textDecoration: false,
},
}
const _sfc_main$6a = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$5c, [
createVNode$1(Type$3, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Data$4, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(QueryConditions$4, { node: unref(node2) }, null, 8, [
'node',
]),
createVNode$1(Title$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(SetChart$4, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Label$1, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Legend$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(XAxis$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(YAxis, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(StyleConditions, { node: unref(node2) }, null, 8, [
'node',
]),
createVNode$1(Padding, { node: unref(node2) }, null, 8, ['node']),
])
)
}
},
})
var ChartLine_settings = /* @__PURE__ */ _export_sfc(_sfc_main$6a, [
['__scopeId', 'data-v-2fbaafdc'],
])
var __glob_2_17 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$N,
default: ChartLine_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _sfc_main$69 = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
function setOption(option2) {
if (option2.series)
for (const serie of option2.series) {
Object.assign(serie, {
type: 'line',
})
}
}
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
Chart$1,
mergeProps(
{
node: $props2.node,
},
$props2.node.props,
{ setOption }
),
null,
16,
['node']
)
)
}
},
})
var __glob_2_18 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$69,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ChartLineArea_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$5b = { class: 'chartSettings' }
const config$M = {
category: 'chart',
name: '\u9762\u79EF\u56FE',
icon: 'icon-mianjitu',
permission: false,
styleConfig: {
textDecoration: false,
},
}
const _sfc_main$68 = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$5b, [
createVNode$1(Type$3, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Data$4, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(QueryConditions$4, { node: unref(node2) }, null, 8, [
'node',
]),
createVNode$1(Title$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(SetChart$4, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Label$1, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Legend$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(XAxis$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(YAxis, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(StyleConditions, { node: unref(node2) }, null, 8, [
'node',
]),
createVNode$1(Padding, { node: unref(node2) }, null, 8, ['node']),
])
)
}
},
})
var ChartLineArea_settings = /* @__PURE__ */ _export_sfc(_sfc_main$68, [
['__scopeId', 'data-v-257b5882'],
])
var __glob_2_20 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$M,
default: ChartLineArea_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _sfc_main$67 = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
function updateChart2(chart2) {
const option2 = chart2.getOption()
if (option2.series) {
for (const serie of option2.series) {
Object.assign(serie, {
type: 'line',
areaStyle: {},
})
}
}
chart2.setOption(
{
series: option2.series,
},
{ lazyUpdate: true }
)
}
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
Chart$1,
mergeProps(
{
node: $props2.node,
},
$props2.node.props,
{ updateChart: updateChart2 }
),
null,
16,
['node']
)
)
}
},
})
var __glob_2_21 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$67,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ChartLineAreaStacked_settings_vue_vue_type_style_index_0_scoped_true_lang =
''
const _hoisted_1$5a = { class: 'chartSettings' }
const config$L = {
category: 'chart',
name: '\u5806\u79EF\u9762\u79EF\u56FE',
icon: 'icon-duijimianjitu',
permission: false,
styleConfig: {
textDecoration: false,
},
}
const _sfc_main$66 = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$5a, [
createVNode$1(Type$3, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Data$4, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(QueryConditions$4, { node: unref(node2) }, null, 8, [
'node',
]),
createVNode$1(Title$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(SetChart$4, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Label$1, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Legend$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(XAxis$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(YAxis, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(StyleConditions, { node: unref(node2) }, null, 8, [
'node',
]),
createVNode$1(Padding, { node: unref(node2) }, null, 8, ['node']),
])
)
}
},
})
var ChartLineAreaStacked_settings = /* @__PURE__ */ _export_sfc(_sfc_main$66, [
['__scopeId', 'data-v-1fb205f4'],
])
var __glob_2_22 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$L,
default: ChartLineAreaStacked_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _sfc_main$65 = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
function updateChart2(chart2) {
const option2 = chart2.getOption()
if (option2.series) {
for (const serie of option2.series) {
Object.assign(serie, {
type: 'line',
areaStyle: {},
stack: 'stack',
})
}
}
chart2.setOption(
{
series: option2.series,
},
{ lazyUpdate: true }
)
}
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
Chart$1,
mergeProps(
{
node: $props2.node,
},
$props2.node.props,
{ updateChart: updateChart2 }
),
null,
16,
['node']
)
)
}
},
})
var __glob_2_23 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$65,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const getCurveGroup = (keyword = '') => {
return request.get(`/api/v1/trend/curvegroup?keyword=${keyword}`)
}
const addCurveGroup = (data2) => {
return request.post(`/api/v1/trend/curvegroup`, data2)
}
const deleteCurveGroup = (id2) => {
return request.delete(`/api/v1/trend/curvegroup`, { params: { id: id2 } })
}
const copyCurveGroup = (id2) => {
return request.post(`/api/v1/trend/curvegroup/${id2}/copy`)
}
const getBusinessLabelByGroupId = (id2) => {
return request.get(`/api/v1/trend/curvebusinesslabel/${id2}`)
}
const getCurveByGroupId = (id2, keyword = '') => {
return request.get(`/api/v1/trend/curve/${id2}?keyword=${keyword}`)
}
const addCurve = (data2) => {
return request.post(`/api/v1/trend/curve`, data2)
}
const updateCurve = (data2) => {
return request.put(`/api/v1/trend/curve`, data2)
}
const deleteCurve = (ids) => {
return request({
url: `/api/v1/trend/curve`,
method: 'delete',
data: ids,
})
}
const moveCurve = (data2) => {
return request.post(`/api/v1/trend/curve/move`, data2)
}
const syncBusinessLabel = (data2) => {
return request.post(`/api/v1/trend/curvegroup/sync`, data2)
}
const sortCurveGroup = (data2) => {
return request.post(`/api/v1/trend/curvegroup/sort`, data2)
}
const queryCurveGroupLive = (data2) => {
return request.post(`/api/v1/trend/curvegroup/live`, data2)
}
const queryCurveGroupHistory = (data2) => {
return request.post(`/api/v1/trend/curvegroup/history`, data2)
}
const timeUnits = [
{
label: '\u5929',
value: 'd',
},
{
label: '\u65F6',
value: 'h',
},
{
label: '\u5206',
value: 'min',
},
{
label: '\u79D2',
value: 's',
},
]
const getLatestTimeRange = (value2, unit) => {
const now2 = dayjs()
const from = now2.subtract(value2, unit === 'min' ? 'm' : unit).format()
const to = now2.format()
return [from, to]
}
var ToolbarShow = /* @__PURE__ */ ((ToolbarShow2) => {
ToolbarShow2[(ToolbarShow2['Hidden'] = 0)] = 'Hidden'
ToolbarShow2[(ToolbarShow2['CollapseShow'] = 1)] = 'CollapseShow'
ToolbarShow2[(ToolbarShow2['FixedShow'] = 2)] = 'FixedShow'
return ToolbarShow2
})(ToolbarShow || {})
var Chart_vue_vue_type_style_index_0_scoped_true_lang = ''
var Chart_vue_vue_type_style_index_1_lang = ''
const _withScopeId$2X = (n2) => (
pushScopeId('data-v-63544dc0'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$59 = { class: 'chart-line-trend' }
const _hoisted_2$4l = { class: 'chart-header flex justify-between full-width' }
const _hoisted_3$3V = { class: 'filter-item' }
const _hoisted_4$3o = { class: 'padding-x-10' }
const _hoisted_5$34 = { class: 'filter-item' }
const _hoisted_6$2M = { class: 'filter-item' }
const _hoisted_7$2q = { class: 'chart-wrapper flex-1 full-width' }
const _hoisted_8$28 = ['t']
const _hoisted_9$1_ = /* @__PURE__ */ _withScopeId$2X(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-neizhisuofang1' },
null,
-1
)
)
const _hoisted_10$1P = /* @__PURE__ */ _withScopeId$2X(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-shijianzhouhuadong' },
null,
-1
)
)
const _hoisted_11$1G = /* @__PURE__ */ _withScopeId$2X(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-kuangxuansuofang' },
null,
-1
)
)
const _hoisted_12$1C = /* @__PURE__ */ _withScopeId$2X(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-huanyuan' },
null,
-1
)
)
const _hoisted_13$1s = /* @__PURE__ */ _withScopeId$2X(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-zhongfuzhoufanwei' },
null,
-1
)
)
const _hoisted_14$1i = /* @__PURE__ */ _withScopeId$2X(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-ziranshijian' },
null,
-1
)
)
const _hoisted_15$1d = /* @__PURE__ */ _withScopeId$2X(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-ziranshijian' },
null,
-1
)
)
const _hoisted_16$1b = /* @__PURE__ */ _withScopeId$2X(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-xianshibiaozhu' },
null,
-1
)
)
const _hoisted_17$15 = /* @__PURE__ */ _withScopeId$2X(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-xia' },
null,
-1
)
)
const _hoisted_18$_ = /* @__PURE__ */ _withScopeId$2X(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-shang' },
null,
-1
)
)
const _hoisted_19$W = { class: 'groups-container markLine-container' }
const _hoisted_20$Q = { class: 'groups-checkbox' }
const _hoisted_21$G = { class: 'header flex' }
const _hoisted_22$E = { class: 'flex-1' }
const _hoisted_23$B = { class: 'checkbox' }
const _hoisted_24$z = { class: 'flex' }
const _hoisted_25$u = { class: 'flex-1' }
const _hoisted_26$r = { class: 'checkbox' }
const _hoisted_27$q = { class: 'buttons flex mt-20 justify-end' }
const _sfc_main$64 = /* @__PURE__ */ defineComponent({
props: {
node: null,
updateChart: null,
setOption: null,
editing: { type: Boolean },
running: { type: Boolean },
},
setup(__props2) {
const $props2 = __props2
useCssVars((_ctx) => ({
'594e2c57': canvasStyle.value.zoom,
'5a63d530': canvasStyle.value.transform,
'240dfaa4': canvasStyle.value.transformOrigin,
}))
const LOCAL_CONFIG_ID = 'chartLineTrendConfig_' + $props2.node.id
const localConfig = Local.get(LOCAL_CONFIG_ID) || {}
let dataZoomRange = ref(localConfig.dataZoomRange)
let dataZoomRangeHistory = ref([])
let legendSelected = ref(localConfig.legendSelected || {})
let isRequested = false
window.dataZoomRangeHistory = dataZoomRangeHistory.value
const t3 = Language$1.t
const collectText2 = () => {
const lister = [
props2.chartConfig.title.text,
props2.axisConfig.xAxis.title,
...props2.axisConfig.yAxis.map((ele) => ele.title),
]
indexesComputed2.value.forEach((item2) => {
lister.push(
item2.aliasName,
item2.fieldName,
`${item2.fieldName}(${methodList[item2.mode]})`
)
})
props2.dataConfig?.dimissions?.forEach((item2) => {
lister.push(item2.aliasName, item2.fieldName)
})
lister.map((ele) => {
t3(ele)
})
}
Language$1.useChange(() => {
updateChartConfigAndData2()
})
const node2 = reactive($props2.node)
if (localConfig.spanValue) {
node2.props.spanValue = localConfig.spanValue
}
if (localConfig.spanUnit) {
node2.props.spanUnit = localConfig.spanUnit
}
const setRealTimeControlString = () => {
if (isFixedSpan.value) {
let unit = timeUnits.filter(
(item2) => item2.value === node2.props.spanUnit
)[0]?.label
if (unit) {
node2.props.realTimeControlString = [
`\u8BB0\u5F55\u65F6\u95F4 = \u8FD1 ${node2.props.spanValue} ${unit}`,
]
}
} else if (realTimeLabel.value) {
node2.props.realTimeControlString = [
`${realTimeLabel.value.name} = ${Expression.getValue(
realTimeLabel.value.tagName
)}`,
]
}
}
let fixedSpanTimer
watch$1(
[
() => {
return node2.props.spanValue
},
() => {
return node2.props.spanUnit
},
],
() => {
clearTimeout(fixedSpanTimer)
fixedSpanTimer = setTimeout(() => {
if (isFixedSpan.value) {
const dateRange = getLatestTimeRange(
node2.props.spanValue,
node2.props.spanUnit
)
setRealTimeControlString()
startDrawing(currentGroupId.value, dateRange)
}
}, 300)
}
)
const defaultPropsCopy2 = lodash$2.exports.cloneDeep(defaultProps$8)
defaultPropsCopy2.dataConfig.dataType = 1
defaultPropsCopy2.chartConfig.grid = {
top: 0,
bottom: 0,
left: 0,
right: 0,
}
const props2 = lodash$2.exports.defaults(
reactive(node2.props),
defaultPropsCopy2
)
props2.dataConfig.dimissions = [
{
id: '\u8BB0\u5F55\u65F6\u95F4',
fieldName: '\u8BB0\u5F55\u65F6\u95F4',
},
]
const pieConfig2 = reactive(props2.pieConfig)
const chartConfig2 = reactive(props2.chartConfig)
const style2 = reactive(node2.style)
let data2 = []
let mappingkey2 = {}
const el2 = ref()
let chart2
let currentGroupId = ref(localConfig.groupId ?? '')
let currentGroup = ref()
let groups = ref([])
if (!node2.props.excelData) {
node2.props.excelData = {
headers: [],
rows: [],
}
}
let isRealtime = ref(localConfig.isRealtime ?? true)
let isNaturalTime = ref(localConfig.isNaturalTime ?? true)
const handleModeChange = (val2) => {
if (val2) {
isFixedSpan.value = false
getCurrentGroupData(currentGroupId.value)
isDataZoomSelectActive.value = false
} else {
stopDrawTrendCurve()
unWatchBusinessLabel && unWatchBusinessLabel()
unWatchRealTimeRender && unWatchRealTimeRender()
unWatchRealTimeClear && unWatchRealTimeClear()
}
}
let groupCurves = ref([])
let dimensionNames = []
const queryCurveGroups = async () => {
const res = await getCurveGroup()
groups.value = res
if (groups.value.length && currentGroupId.value) {
currentGroup.value = groups.value.filter(
(item2) => item2.id === currentGroupId.value
)[0]
if (!currentGroup.value) {
currentGroup.value = groups.value[0]
currentGroupId.value = currentGroup.value.id
}
getCurrentGroupData(currentGroupId.value)
}
}
let businessLabels = ref([])
let variables = []
watch$1(
businessLabels.value,
(val2) => {
if (variables.length) {
emitUnionController(val2)
} else {
request.get('/api/v1/variable/query').then((data22) => {
variables = data22.result
initIndexes()
emitUnionController(val2)
})
}
},
{
immediate: true,
}
)
const initIndexes = () => {
if (groupCurves.value && variables) {
props2.dataConfig.indexes = groupCurves.value?.map((e2) => {
let variable = lodash$2.exports.find(
variables,
(ele) => ele.name === e2.tagName
)
return {
...e2,
id: variable?.id || e2.id,
mode: 4,
aliasName: e2.name,
}
})
}
}
const cancelUnionFilter = () => {
emit(ControllerEventType.UN_UNION_FILTER, {
removeChartId: node2.id,
prevControllerId: node2.props.dataConfig.queryControllerId,
})
}
const emitUnionController = (val2) => {
let relativeList = val2
.filter((item2) => item2.isHistory)
.map((item2) => {
let variable = lodash$2.exports.find(
variables,
(ele) => ele.name === item2.tagName
)
let type4 = 2
if (item2?.type === 3) {
type4 = 3
}
return {
id: variable?.id,
fieldName: item2.name,
fieldType: type4,
chartId: node2.id,
optionValue: item2.name,
curveGroupId: currentGroupId.value,
field: variable?.name,
dataType: '',
}
})
relativeList.unshift({
id: '0',
optionValue: '\u8BB0\u5F55\u65F6\u95F4',
fieldName: '\u8BB0\u5F55\u65F6\u95F4',
fieldType: 3,
chartId: node2.id,
curveGroupId: currentGroupId.value,
field: '\u8BB0\u5F55\u65F6\u95F4',
dataType: 'history',
})
if (node2.props.dataConfig.queryControllerId) {
cancelUnionFilter()
emit(ControllerEventType.UNION_FILTER, {
controllerId: node2.props.dataConfig.queryControllerId,
relativeList,
chartId: node2.id,
})
}
node2.props.dataConfig.relativeList = [...relativeList]
}
emitUnionController([])
const forceClearChart2 = () => {
if (chart2) {
chart2.clear()
let dom = chart2.getDom()
if (dom) {
let canvas = dom.querySelectorAll('canvas')
canvas.forEach((item2) => {
item2.width = Number(item2.getAttribute('width'))
})
}
}
}
let sortedPartitions = []
let partitionsYAxis = {}
let unWatchRealTimeRender = null
let unWatchRealTimeClear = null
let unWatchBusinessLabel = null
let isFixedSpan = ref(false)
let realTimeLabel = ref()
let oldRealTimeRenderSignal = null
let oldRealTimeClearSignal = null
const getCurrentGroupData = (currentGroupId2) => {
getCurveByGroupId(currentGroupId2).then(async (res) => {
selectedMarkLine.value.length = 0
groupCurves.value = res
initIndexes()
dimensionNames = res.map((item2) => item2.name)
sortedPartitions = lodash$2.exports
.uniq(groupCurves.value.map((item2) => item2.partition))
.sort((a2, b2) => b2 - a2)
sortedPartitions.map((item2, index2) => {
gridPartitions[item2] = index2
})
groupCurves.value.forEach((item2) => {
partitionsYAxis[item2.partition] = Math.max(
partitionsYAxis[item2.partition] ?? 0,
item2.yAxis
)
})
data2.length = 0
let labels = await getBusinessLabelByGroupId(currentGroupId2)
businessLabels.value.length = 0
businessLabels.value.push(...labels)
if (!businessLabels.value.length) {
emitUnionController([])
}
if (!isRealtime.value) {
if (filterJson.value) {
queryHistoryData(filterJson.value)
} else {
isRequested = false
}
return
}
realTimeLabel.value = lodash$2.exports.find(
businessLabels.value,
(item2) => item2.isRealTime
)
isFixedSpan.value = false
node2.props.realTimeControlString = []
const debounceStartDrawing = lodash$2.exports.debounce(
(val2) => {
switch (currentGroup.value.realTimeRenderSignalRule) {
case 1:
if (!oldRealTimeRenderSignal && val2) {
startDrawing(currentGroupId2)
}
break
case 2:
if (oldRealTimeRenderSignal && !val2) {
startDrawing(currentGroupId2)
}
break
case 3:
if (
(!oldRealTimeRenderSignal && val2) ||
(oldRealTimeRenderSignal && !val2)
) {
startDrawing(currentGroupId2)
}
break
case 4:
startDrawing(currentGroupId2)
break
}
oldRealTimeRenderSignal = val2
},
1e3,
{ maxWait: 3e3 }
)
if (realTimeLabel.value) {
startDrawing(currentGroupId2)
setRealTimeControlString()
unWatchBusinessLabel = new Expression(
realTimeLabel.value.tagName
).watch(() => {
data2.length = 0
setRealTimeControlString()
})
} else {
if (currentGroup.value.realTimeSignalEnabled) {
startDrawing(currentGroupId2)
oldRealTimeRenderSignal = Expression.getValue(
currentGroup.value.realTimeRenderSignal
)
unWatchRealTimeRender = new Expression(
currentGroup.value.realTimeRenderSignal
).watch((val2) => {
debounceStartDrawing(val2)
})
const debounceClearDrawing = lodash$2.exports.debounce(
(val2) => {
switch (currentGroup.value.realTimeClearSignalRule) {
case 1:
if (!oldRealTimeClearSignal && val2) {
clearDrawing()
}
break
case 2:
if (oldRealTimeClearSignal && !val2) {
clearDrawing()
}
break
case 3:
if (
(oldRealTimeClearSignal && !val2) ||
(!oldRealTimeClearSignal && val2)
) {
clearDrawing()
}
break
case 4:
clearDrawing()
break
}
oldRealTimeClearSignal = val2
},
1e3,
{ maxWait: 3e3 }
)
oldRealTimeClearSignal = Expression.getValue(
currentGroup.value.realTimeClearSignal
)
unWatchRealTimeClear = new Expression(
currentGroup.value.realTimeClearSignal
).watch((val2) => {
debounceClearDrawing(val2)
})
} else {
isFixedSpan.value = true
const dateRange = getLatestTimeRange(
node2.props.spanValue,
node2.props.spanUnit
)
setRealTimeControlString()
startDrawing(currentGroupId2, dateRange)
}
}
})
}
let startTime = new Date().getTime()
const transformRequestData = (res) => {
businessMarkLine = res.additionals ?? {}
const transformedMarkLineData = lodash$2.exports.flatten(
Object.values(businessMarkLine).map((arr) => {
return arr.map((item2) => {
return {
记录时间: item2.DateTime,
}
})
})
)
markLines.value.length = 0
markLines.value.push(...Object.keys(businessMarkLine))
if (res.values) {
data2 = [...res.values]
window._chartData = data2
} else {
data2 = []
startTime = new Date().getTime()
}
let allData = [...data2, ...transformedMarkLineData].sort(
(a2, b2) =>
a2['\u8BB0\u5F55\u65F6\u95F4'] - b2['\u8BB0\u5F55\u65F6\u95F4']
)
data2.length = 0
allData.forEach((item2) => {
if (item2) {
let lastDataItem = data2[data2.length - 1]
if (
data2.length &&
item2['\u8BB0\u5F55\u65F6\u95F4'] ===
lastDataItem['\u8BB0\u5F55\u65F6\u95F4']
) {
data2[data2.length - 1] = { ...lastDataItem, ...item2 }
} else {
data2.push(item2)
}
}
})
}
let businessMarkLine = {}
let markLines = ref([])
const startDrawing = (currentGroupId2, dateRange) => {
stopDrawTrendCurve()
data2.length = 0
node2.props.archivingDataTimeRange = []
queryCurveGroupLive({
curveGroupId: currentGroupId2,
archivingDataLimit: $props2.running
? Math.min(props2.dataConfig.runningLimit, 36e3)
: Math.min(props2.dataConfig.editingLimit, 36e3),
from: dateRange ? dateRange[0] : void 0,
to: dateRange ? dateRange[1] : void 0,
})
.then((res) => {
transformRequestData(res)
pushData()
updateChartConfigAndData2()
loadData_2()
})
.finally(() => {
isRequested = false
})
}
const clearDrawing = () => {
data2.length = 0
updateChartData2()
stopDrawTrendCurve()
}
if (!isRequested) {
isRequested = true
queryCurveGroups()
}
let serviceState = true
const pushData = async () => {
const pointData = {}
let date4 = dayjs().valueOf()
groupCurves.value.forEach(async (item2) => {
pointData[item2['name']] = serviceState
? Variable.getByName(item2['tagName'])?.value
: null
pointData['\u8BB0\u5F55\u65F6\u95F4'] = date4
})
for (const name2 of Object.keys(businessMarkLine)) {
let tagName = lodash$2.exports.find(
businessLabels.value,
(item2) => item2.name === name2
)?.tagName
if (tagName) {
let lastItem = lodash$2.exports.last(businessMarkLine[name2])
let makerLineVariable = serviceState
? Variable.getByName(tagName)?.value
: ''
if (serviceState && lastItem?.Value !== makerLineVariable) {
businessMarkLine[name2].push({
DateTime: date4,
Value: makerLineVariable,
})
}
}
}
if (node2.props.customRange && isFixedSpan.value) {
const startTime2 =
new Date().getTime() -
node2.props.spanValue *
realTimeRenderFreqUnitMap[node2.props.spanUnit]
data2 = data2.filter((item2) => {
return dayjs(item2['\u8BB0\u5F55\u65F6\u95F4']).isAfter(
dayjs(startTime2)
)
})
}
let dataLength = $props2.running
? props2.dataConfig.runningLimit
: props2.dataConfig.editingLimit
dataLength = Math.ceil(dataLength / groupCurves.value.length)
const dataClone = data2.slice(1 - dataLength)
dataClone.push(pointData)
data2 = [...dataClone]
window._chartData = data2
excelData.rows = data2
}
const realTimeRenderFreqUnitMap = {
ms: 1,
s: 1e3,
min: 1e3 * 60,
h: 1e3 * 60 * 60,
d: 1e3 * 60 * 60 * 24,
}
let updateChartTimer = null
const startUpdateChartTimer = async () => {
clearTimeout(updateChartTimer)
let service2 = await request.get(`/api/v1/project/service/var`, {
silent: true,
})
serviceState = service2?.state === 1
let timeout = Math.max(
realTimeRenderFreqUnitMap[currentGroup.value.realTimeRenderFreqUnit] *
currentGroup.value.realTimeRenderFreq,
1e3
)
updateChartTimer = setTimeout(() => {
updateChartData2()
startUpdateChartTimer()
}, timeout)
}
let collectVariablesTimer = null
const startCollectVariablesTimer = () => {
clearTimeout(collectVariablesTimer)
collectVariablesTimer = setTimeout(() => {
pushData()
startCollectVariablesTimer()
}, realTimeRenderFreqUnitMap[currentGroup.value.realTimeRenderFreqUnit] * currentGroup.value.realTimeRenderFreq)
}
const startDrawTrendCurve = () => {
startUpdateChartTimer()
startCollectVariablesTimer()
}
const stopDrawTrendCurve = () => {
clearTimeout(updateChartTimer)
clearTimeout(collectVariablesTimer)
}
const handleGroupChange = (val2) => {
cancelUnionFilter()
currentGroupId.value = val2
currentGroup.value = groups.value.filter((item2) => item2.id === val2)[0]
confirmedMarkLine.value = []
legendSelected.value = {}
unWatchBusinessLabel && unWatchBusinessLabel()
unWatchRealTimeRender && unWatchRealTimeRender()
unWatchRealTimeClear && unWatchRealTimeClear()
getCurrentGroupData(val2)
}
let dataZoomInside = ref(localConfig.dataZoomInside ?? false)
const toggleDataZoomInside = () => {
dataZoomInside.value = !dataZoomInside.value
let option2 = chart2?.getOption()
if (option2) {
option2.dataZoom = option2.dataZoom.map((item2) => {
if (item2.type === 'inside') {
item2.disabled = !dataZoomInside.value
}
return item2
})
forceClearChart2()
chart2?.setOption(option2, true, true)
keepCurrentView()
}
}
let dataZoomSlider = ref(localConfig.dataZoomSlider ?? false)
const toggleDataZoomTime = () => {
dataZoomSlider.value = !dataZoomSlider.value
let option2 = chart2?.getOption()
if (option2) {
option2.dataZoom = option2.dataZoom.map((item2) => {
if (item2.type === 'slider') {
item2.show = dataZoomSlider.value
}
return item2
})
let heightItem = 40 / option2.grid.length
option2.grid = option2.grid.map((item2, index2) => {
if (dataZoomSlider.value) {
item2.height = item2.height - heightItem
item2.top = index2 === 0 ? item2.top : item2.top - heightItem
} else {
item2.height = item2.height + heightItem
item2.top = index2 === 0 ? item2.top : item2.top + heightItem
}
return item2
})
forceClearChart2()
chart2?.setOption(option2, true, true)
keepCurrentView()
}
}
const keepCurrentView = () => {
let backState = lodash$2.exports.last(dataZoomRangeHistory.value)
if (backState) {
dataZoomFromHistory = true
chart2?.dispatchAction({ ...backState, type: 'dataZoom' })
}
if (isDataZoomSelectActive.value) {
isDataZoomSelectActive.value = false
handleCustomZoom()
}
}
const toggleTimelineType = () => {
isNaturalTime.value = !isNaturalTime.value
updateChartData2()
keepCurrentView()
}
const handleResetRange = () => {
let option2 = chart2?.getOption()
if (option2) {
option2.dataZoom = option2.dataZoom.map((item2) => {
item2.start = 0
item2.end = 100
return item2
})
forceClearChart2()
chart2?.setOption(option2, true, true)
}
if (isDataZoomSelectActive.value) {
dispatchDataZoomSelectActive(true)
}
dataZoomRangeHistory.value.length = 0
dataZoomRange.value = ''
}
let dataZoomFromHistory = false
const handleGoBack = () => {
dataZoomRangeHistory.value.pop()
let backState = lodash$2.exports.last(dataZoomRangeHistory.value)
dataZoomFromHistory = true
if (backState) {
chart2?.dispatchAction({ ...backState, type: 'dataZoom' })
} else {
dataZoomFromHistory = false
handleResetRange()
}
}
let isDataZoomSelectActive = ref(
localConfig.isDataZoomSelectActive ?? false
)
const handleCustomZoom = () => {
isDataZoomSelectActive.value = !isDataZoomSelectActive.value
dispatchDataZoomSelectActive(isDataZoomSelectActive.value)
if (isRealtime.value) {
isRealtime.value = false
stopDrawTrendCurve()
}
}
const dispatchDataZoomSelectActive = (dataZoomSelectActive) => {
chart2?.dispatchAction({
type: 'takeGlobalCursor',
key: 'dataZoomSelect',
dataZoomSelectActive,
})
}
let showMarkLineDialog = ref(false)
let selectedMarkLine = ref([])
let confirmedMarkLine = ref(localConfig.confirmedMarkLine ?? [])
const handleMarkLine = () => {
showMarkLineDialog.value = !showMarkLineDialog.value
confirmedMarkLine.value = selectedMarkLine.value
updateChartConfigAndData2()
keepCurrentView()
}
const handleOpenMarkLineDialog = () => {
selectedMarkLine.value = confirmedMarkLine.value
showMarkLineDialog.value = true
}
let filterJson = ref(localConfig.filterJson ?? '')
watch$1(
() => {
return {
isRealtime: isRealtime.value,
isFixedSpan: isFixedSpan.value,
groupId: currentGroupId.value,
currentGroup: currentGroup.value,
spanValue: node2.props.spanValue,
spanUnit: node2.props.spanUnit,
dataZoomInside: dataZoomInside.value,
dataZoomSlider: dataZoomSlider.value,
isNaturalTime: isNaturalTime.value,
dataZoomRange: dataZoomRange.value,
isDataZoomSelectActive: isDataZoomSelectActive.value,
confirmedMarkLine: confirmedMarkLine.value,
filterJson: filterJson.value,
legendSelected: legendSelected.value,
realTimeLabel: realTimeLabel.value,
}
},
(val2) => {
Local.set(LOCAL_CONFIG_ID, val2)
}
)
const colorVar = computed(() => {
return style2['color']
})
const backgroundColorVar = computed(() => {
return node2.props.queryConditionStyle?.backgroundColor || '#f1f1f1'
})
const borderColorVar = computed(() => {
return node2.props.queryConditionStyle?.borderColor || 'transparent'
})
let toolbarPosition = computed(() => {
const show = ['none', 'hidden', 'fixed']
return `toolbar-position_${node2.props.toolbarPosition} toolbar-display_${
show[node2.props.toolbarShow]
}`
})
const positionMap = {
top: 'top',
right: 'right',
bottom: 'bottom',
left: 'left',
}
let toolbarTipsPosition = computed(() => {
return positionMap[node2.props.toolbarPosition]
})
const toolbarColorVar = computed(() => {
return style2['color']
})
const toolbarBorderColorVar = computed(() => {
return node2.props.toolbarStyle?.borderColor || '#cdd7de'
})
const toolbarBackgroundColorVar = computed(() => {
return node2.props.toolbarStyle?.backgroundColor || '#ffffff'
})
let toolbarExpand = ref(false)
watch$1(
() => {
return node2.props.toolbarShow
},
(val2) => {
if (val2 === ToolbarShow.FixedShow) {
toolbarExpand.value = true
} else {
toolbarExpand.value = false
}
},
{
immediate: true,
}
)
let toolbarContainerHeight = ref('0px')
let toolbarContainerWidth = ref('0px')
const toggleToolbar = () => {
toolbarExpand.value = !toolbarExpand.value
if (
node2.props.toolbarPosition === 'top' ||
node2.props.toolbarPosition === 'bottom'
) {
toolbarExpand.value
? (toolbarContainerWidth.value = 'auto')
: (toolbarContainerWidth.value = '0px')
toolbarContainerHeight.value = 'auto'
} else {
toolbarExpand.value
? (toolbarContainerHeight.value = 'auto')
: (toolbarContainerHeight.value = '0px')
toolbarContainerWidth.value = 'auto'
}
}
onMounted(() => {
chart2 = init$2(el2.value, void 0, {
useDirtyRect: true,
})
chart2.on(
'dataZoom',
lodash$2.exports.debounce((data22) => {
isRealtime.value = false
dataZoomRange.value = data22
stopDrawTrendCurve()
if (!dataZoomFromHistory) {
dataZoomRangeHistory.value.push(data22)
}
dataZoomFromHistory = false
}, 300)
)
chart2.on('rendered', function () {
isRendered2.value = true
})
chart2.on('legendselectchanged', function (params2) {
legendSelected.value = params2.selected
})
let queryControllerId = props2.dataConfig.queryControllerId
if (queryControllerId) {
let filterId = getNodeById(queryControllerId).id
if (queryControllerId !== filterId) {
props2.dataConfig.queryControllerId = ''
}
}
})
onUnmounted(() => {
chart2?.dispose()
stopDrawTrendCurve()
unWatchBusinessLabel && unWatchBusinessLabel()
unWatchRealTimeRender && unWatchRealTimeRender()
unWatchRealTimeClear && unWatchRealTimeClear()
})
function click2() {
window.chart = chart2
window.updateChart = updateChart2
}
let indexesComputed2 = computed(() => {
let indexes = props2.dataConfig.indexes.filter((i2) => i2.id) || []
if (isUseCache(node2)) return uniqueFun(indexes, 'id')
return indexes
})
async function loadData2() {
if (!data2.length)
chart2?.showLoading({ text: '', lineWidth: 1, spinnerRadius: 8 })
chart2?.hideLoading()
if (isRealtime.value) {
startDrawTrendCurve()
} else if (chart2) {
updateChartData2()
} else {
updateChartConfigAndData2()
}
}
const loadData_2 = debouncePromise(loadData2, 300, { maxWait: 3e3 })
watch$1(
[
() => props2.dataConfig.editingLimit,
() => pieConfig2.dataConfig.editingLimit,
],
loadData_2,
{
deep: true,
}
)
let isOnMounted = true
on$1(ControllerEventType.FILTER_DATA, (detail) => {
if (detail.controllerId !== props2.dataConfig.queryControllerId) {
return
}
if (detail.value) {
whereJsonMap[node2.id] = {
value: JSON.stringify(detail.value),
label: detail.conditionStr,
}
}
if (!isOnMounted) isRealtime.value = false
isOnMounted = false
if (!isRequested) {
isRequested = true
handleModeChange(isRealtime.value)
if (detail.value.length) {
filterJson.value = JSON.stringify(detail.value)
} else {
filterJson.value = ''
}
queryHistoryData(filterJson.value)
}
})
on$1(ControllerEventType.CHART_DATA, (detail) => {
const chartIds = detail?.relativeList.map((relative) => relative.chartId)
if (chartIds.includes(node2.id)) {
if (!isRequested) {
isRequested = true
isRealtime.value = false
handleModeChange(isRealtime.value)
queryHistoryData(filterJson.value)
}
}
})
const queryHistoryData = (filterJson2) => {
if (!currentGroupId.value) return
let filterControllerList = getControllerDetailListByChartId(node2.id)
let filters = []
filterControllerList.forEach((item2) => {
let relativeList = item2.relativeList.filter((item1) => {
return item1.chartId == node2.id && item1.field
})
if (relativeList[0] && relativeList[0].field && item2.type)
filters.push({
control: controlList[item2.type],
combine: 0,
values:
item2.value?.constructor === Array ? item2.value : [item2.value],
fieldName: relativeList[0].field,
innerFilters: [],
})
})
queryCurveGroupHistory({
curveGroupId: currentGroupId.value,
archivingDataLimit: $props2.editing
? props2.dataConfig.editingLimit
: props2.dataConfig.runningLimit,
businessLabelDataLimit: node2.props.businessSegment,
filterJson: filterJson2 || '[]',
filters,
})
.then((res) => {
data2.length = 0
transformRequestData(res)
updateChartConfigAndData2()
node2.props.archivingDataTimeRange =
res.Traces?.ArchivingDataTimeRange ?? []
})
.finally(() => {
isRequested = false
})
}
let clearQueryControllerIdTimer
on$1(ControllerEventType.DESTROY_CONTROLLER, (detail) => {
if (detail.controllerId === props2.dataConfig.queryControllerId) {
clearQueryControllerIdTimer = setTimeout(() => {
props2.dataConfig.queryControllerId = ''
filterJson.value = ''
}, 1e3)
}
})
onBeforeUnmount(() => {
cancelIdleCallback(cancelIdleId2)
clearQueryControllerIdTimer && clearTimeout(clearQueryControllerIdTimer)
cancelUnionFilter()
})
function setMarkLine2() {
let markLines2 = []
confirmedMarkLine.value.forEach((name2) => {
let tagName = lodash$2.exports.find(
businessLabels.value,
(item2) => item2.name === name2
)?.tagName
if (!tagName) return
let names2 = Object.keys(businessMarkLine)
let index2 = lodash$2.exports.findIndex(
names2,
(item2) => item2 === name2
)
businessMarkLine[name2]?.forEach((item2) => {
markLines2.push({
name: t3(name2),
xAxis: '' + item2.DateTime,
label: {
show: true,
formatter: `{b}: ${item2.Value || ''}`,
distance: [-100, -index2 * 20 - 20],
},
})
})
})
return {
symbol: 'none',
data: markLines2,
}
}
function handlePieTotal2() {
if (!props2.pieConfig.total) return ''
let num2 = 0
for (let i2 = 0, iLen = data2.length; i2 < iLen; i2++) {
const item2 = data2[i2]
for (const i22 in item2) {
const element = item2[i22]
if (!isNaN(Number(element))) num2 += Number(element)
}
}
return '\u603B\u8BA1\uFF1A' + num2
}
function handleXAxisAxisLabelInterval2(displayType, interval) {
switch (displayType) {
case 'auto':
return 'auto'
case 'all':
return 0
case 'custom':
return interval
default:
return 'auto'
}
}
function isPie2() {
if (node2.is && node2.is.indexOf('Pie') >= 0) return true
return false
}
function isChartHorizontal2() {
if (node2.is && node2.is.indexOf('ChartBarHorizontal') > -1) return true
return false
}
function exportChartExcel2() {
if ($props2.editing) return
if (
props2.dataConfig.dataSetId &&
props2.dataConfig.indexes?.filter((i2) => i2.id).length
) {
exportChartsExcel(node2.name, [node2], true, true, false)
}
}
async function exportChartImage2() {
if (!chart2 || $props2.editing) return
forceClearChart2()
chart2.setOption({
toolbox: {
show: false,
},
})
let name2 = props2.chartConfig.title.text
let timer2 = setTimeout(async () => {
clearTimeout(timer2)
if (!chart2) return
let dom = chart2.getDom()
let boxShadow2 = dom.style.boxShadow
dom.style.boxShadow = ''
let { imageUrl } = await getImg1(dom)
dom.style.boxShadow = boxShadow2
download(imageUrl, name2, 'png')
forceClearChart2()
chart2.setOption({
toolbox: {
show: true,
},
})
}, 150)
}
const transformTimeLabel = (value2) => {
return isNaturalTime.value
? dayjs(+value2).format(node2.props.naturalTime)
: getRelativeTime(
value2,
data2[0]?.['\u8BB0\u5F55\u65F6\u95F4'] || startTime,
node2.props.relativeTime
)
}
let excelData = {
headers: [],
rows: [],
}
const setXAxis = () => {
const xAxis = props2.axisConfig.xAxis
const padding = () => {
if (isChartHorizontal2() && xAxis.position == 'middle') return 20
if (xAxis.position == 'middle')
return xAxis.axisLabel.fontSize || 14 + xAxis.axisLabel.rotate + 5
if (xAxis.position == 'end') return 0
return 20 * 1.5
}
excelData.headers = ['\u8BB0\u5F55\u65F6\u95F4']
let result = sortedPartitions.map((partition, index2) => {
return {
id: index2,
show: sortedPartitions.length - 1 === index2,
type: 'category',
name: t3(xAxis.title),
nameLocation: xAxis.position,
nameGap: xAxis.position === 'middle' ? 15 : 5,
gridIndex: gridPartitions[partition],
boundaryGap: false,
position: 'bottom',
nameTextStyle: {
fontFamily: xAxis.fontFamily || '',
color: xAxis.color || '#999999',
fontSize: xAxis.fontSize || void 0,
padding: padding(),
fontWeight: node2.style.fontWeight || 'normal',
fontStyle: node2.style.fontStyle,
lineHeight:
xAxis.fontSize || parseInt(node2.style.lineHeight || '0') || 12,
},
axisLine: {
show: xAxis.axisLine.show,
onZero: true,
lineStyle: {
color: xAxis.axisLine.lineStyle.color,
type: xAxis.axisLine.lineStyle.type,
width: xAxis.axisLine.lineStyle.width,
},
},
axisLabel: {
show: xAxis.axisLabel.show,
fontFamily: xAxis.axisLabel.fontFamily || '',
fontSize: xAxis.axisLabel.fontSize || void 0,
lineHeight:
xAxis.axisLabel.fontSize ||
parseInt(node2.style.lineHeight || '0') ||
12,
color: xAxis.axisLabel.color || '#999999',
rotate: xAxis.axisLabel.rotate,
interval: handleXAxisAxisLabelInterval2(
xAxis.axisLabel.displayType,
xAxis.axisLabel.interval
),
fontWeight: node2.style.fontWeight || 'normal',
fontStyle: node2.style.fontStyle,
align: xAxis.axisLabel.rotate > 0 ? 'right' : 'left',
formatter: (value2) => {
return transformTimeLabel(value2)
},
},
axisTick: {
show: xAxis.axisTick.show,
lineStyle: {
color: xAxis.axisTick.lineStyle.color,
type: xAxis.axisTick.lineStyle.type,
width: xAxis.axisTick.lineStyle.width,
},
},
}
})
return result
}
let cancelIdleId2 = 0
const gridPartitions = {}
function updateChart2(onlyStyle = false) {
if (!chart2 || chart2.isDisposed()) return
const dataZoom2 = chartConfig2.dataZoom
const xAxis = props2.axisConfig.xAxis
const yAxis = props2.axisConfig.yAxis
const legend = chartConfig2.legend
const barConfig = props2.barConfig
const lineConfig = props2.lineConfig
const toolbox2 = props2.chartConfig.toolbox
const legendPosition = (() => {
let legendLen = 0
for (let key2 in dimensionNames) {
let len2 = dimensionNames[key2].length
if (legendLen < len2) legendLen = len2
}
const legend2 = chartConfig2.legend
let select2 = dataZoom2.select
const config2 = {
orient: 'vertical',
top: 0,
right: 0,
bottom: 0,
grid: {
top: (styleConverter(style2).fontSize || 14) * 1.5 + 10,
right: 0,
bottom: 0,
left: 0,
},
pie: {
top: 0,
right: 0,
bottom: 0,
center: ['50%', '50%'],
},
}
switch (legend2.position) {
case 'top':
config2.orient = 'horizontal'
config2.top = 0
config2.right = 0
config2.bottom = 'auto'
config2.grid.top =
(styleConverter(style2).fontSize || 14) * 1.5 + 10
config2.grid.right = 2
config2.grid.bottom = 0
config2.pie.top = legend2.fontSize * 1.5 + 20
config2.pie.right = 10
config2.pie.bottom = 10
if (
toolbox2.exportExcel.show ||
toolbox2.exportImage.show ||
select2.x ||
select2.y
) {
config2.top += 20
config2.grid.top += 20
if (legend2.show) {
config2.pie.top = legend2.fontSize * 1.5 + 40
}
}
break
case 'right':
config2.orient = 'vertical'
config2.top = 'middle'
config2.right = 0
config2.bottom = 'auto'
config2.grid.right = (legend2.fontSize || 12) * legendLen
config2.grid.bottom = 0
config2.pie.top = 10
config2.pie.right = legend2.fontSize * 1.5 + 30
config2.pie.bottom = 10
config2.pie.center = ['35%', '50%']
break
case 'bottom':
config2.orient = 'horizontal'
config2.top = 'auto'
config2.right = 0
config2.bottom = 0
config2.grid.top = 0
config2.grid.right = 2
config2.grid.bottom = 10
config2.pie.top = 10
config2.pie.right = 10
config2.pie.bottom = legend2.fontSize * 1.5 + 20
break
}
return config2
})()
const setToolbox = () => {
return {
show: true,
top: -500,
feature: {
dataZoom: {
yAxisIndex: false,
},
myExportExcel: {
show: toolbox2.exportExcel.show,
title: false,
icon: exportExcelIcon,
onclick: exportChartExcel2,
},
mySaveImage: {
show: toolbox2.exportImage.show,
title: false,
icon: exportImageIcon,
onclick: exportChartImage2,
},
},
iconStyle: {
borderColor: '#A5A5A5',
},
emphasis: {
iconStyle: {
borderColor: '#3D6EFF',
},
},
tooltip: {
show: true,
formatter: function (param) {
let title = ''
let name2 = param.name
switch (name2) {
case 'mySaveImage':
title = Language$1._t('\u5BFC\u51FA\u4E3A\u56FE\u7247')
break
case 'myExportExcel':
title = Language$1._t('\u5BFC\u51FA\u4E3AExcel')
break
case 'zoom':
title = Language$1._t('\u533A\u57DF\u7F29\u653E')
break
case 'back':
title = Language$1._t('\u533A\u57DF\u7F29\u653E\u8FD8\u539F')
break
}
return '' + title + '
'
},
textStyle: {
fontSize: 12,
},
hideDelay: 0,
},
}
}
let yAxisCursor = {}
const setYAxis = () => {
const yAxisList = props2.axisConfig.yAxis
let index2 = 0
const res = lodash$2.exports.flatten(
sortedPartitions.map((partition, partitionIndex) => {
return yAxisList.map((yAxis2, i2) => {
yAxisCursor[`${partition}-${i2 + 1}`] = index2
index2++
const axisLine = yAxis2.axisLine
const axisLabel = yAxis2.axisLabel
const splitLine = yAxis2.splitLine
const axisTick = yAxis2.axisTick
let axisTickInterval = axisTick.interval == 'auto' ? 'auto' : 0
let yAxisMin = yAxis2.customLable ? yAxis2.min : null
let yAxisMax = yAxis2.customLable ? yAxis2.max : null
if (axisTick.interval == 'custom' && axisTick.internalNum) {
let allData = []
indexesComputed2.value.forEach((index22) => {
data2.forEach((item2) => {
let num2 = parseFloat(
item2[mappingkey2[index22.id + '-' + index22.mode]]
)
allData.push(num2)
})
})
if (
!yAxis2.customLable ||
yAxis2.min == void 0 ||
yAxis2.max == void 0
) {
let min3 = Math.min.apply(null, allData)
yAxisMin = getarea(min3, 'min', min3 >= 0 ? 1 : -1)
let max3 = Math.max.apply(null, allData)
yAxisMax = getarea(max3, 'max', max3 >= 0 ? 1 : -1)
}
}
let nameGap = 2
if (yAxis2.nameLocation == 'middle') {
nameGap = yAxis2.fontSize || 12
}
if (yAxis2.nameLocation == 'start') {
nameGap = (xAxis.fontSize || 12) + xAxis.axisLabel.rotate
if (partitionIndex !== sortedPartitions.length - 1) {
nameGap = 1
}
}
return {
show: true,
type: 'value',
offset: yAxis2.offset,
position: yAxis2.position,
name: yAxis2.showTitle && yAxis2.title ? t3(yAxis2.title) : '',
nameGap,
nameLocation: yAxis2.nameLocation,
min: yAxisMin || 0,
max: yAxisMax,
inverse: yAxis2.inverse,
gridIndex: gridPartitions[partition],
alignTicks: false,
interval:
axisTick.interval == 'custom' && axisTick.internalNum
? end$1(yAxisMax, yAxisMin, axisTick.internalNum)
: null,
nameTextStyle: {
fontFamily: yAxis2.fontFamily || '',
color: yAxis2.color || '#999999',
fontSize: yAxis2.fontSize || void 0,
padding: isChartHorizontal2() ? null : nameGap,
fontWeight: node2.style.fontWeight || 'normal',
fontStyle: node2.style.fontStyle,
lineHeight:
yAxis2.fontSize ||
parseInt(node2.style.lineHeight || '0') ||
12,
},
axisLine: {
show: axisLine.show,
lineStyle: {
color: axisLine.lineStyle.color,
width: axisLine.lineStyle.width,
type: axisLine.lineStyle.type,
},
},
axisLabel: {
show: axisLabel.show,
fontFamily: axisLabel.fontFamily || '',
fontSize: axisLabel.fontSize || void 0,
color: axisLabel.color || '#999999',
fontWeight: node2.style.fontWeight || 'normal',
fontStyle: node2.style.fontStyle,
lineHeight:
axisLabel.fontSize ||
parseInt(node2.style.lineHeight || '0') ||
12,
},
splitLine: {
show: splitLine.show,
lineStyle: {
color: splitLine.lineStyle.color,
width: splitLine.lineStyle.width,
type: splitLine.lineStyle.type,
},
},
axisTick: {
show: axisTick.show,
interval: axisTickInterval,
lineStyle: {
color: axisTick.lineStyle.color,
width: axisTick.lineStyle.width,
type: axisTick.lineStyle.type,
},
},
}
})
})
)
return res
}
function setGrid() {
let baseGrid = {
containLabel: false,
top: legendPosition.grid.top,
right: legendPosition.grid.right,
bottom: legendPosition.grid.bottom,
left: legendPosition.grid.left,
}
const defaultFontSize = 14
let xAxisTitleLen =
xAxis.title.length * (xAxis.fontSize || defaultFontSize)
let YAxisFontSize = props2.axisConfig.yAxis[0]?.fontSize || 12
let maxFontSize = 0
let height = el2.value.offsetHeight - 50
if (isChartHorizontal2()) {
yAxis.forEach((item2) => {
if (maxFontSize < item2.fontSize) {
maxFontSize = item2.fontSize
}
if (item2.nameLocation == 'middle' && item2.showTitle) {
baseGrid.bottom =
legendPosition.grid.bottom + (maxFontSize || defaultFontSize)
}
if (item2.nameLocation == 'start' && item2.showTitle) {
baseGrid.left =
legendPosition.grid.left +
(maxFontSize || defaultFontSize) * item2.title.length
}
if (item2.nameLocation == 'end' && item2.showTitle) {
baseGrid.right =
legendPosition.grid.right +
(maxFontSize || defaultFontSize) * item2.title.length
}
})
if (xAxis.position === 'middle' && xAxis.title) {
baseGrid.left += xAxisTitleLen
}
if (xAxis.position === 'start' && xAxis.title) {
baseGrid.bottom += xAxis.fontSize || defaultFontSize
}
if (xAxis.position === 'end' && xAxis.title) {
baseGrid.top += xAxis.fontSize || defaultFontSize
}
} else {
yAxis.forEach((item2) => {
if (maxFontSize < item2.fontSize) {
maxFontSize = item2.fontSize
}
if (item2.nameLocation == 'end' && item2.showTitle) {
baseGrid.top =
legendPosition.grid.top + (maxFontSize || defaultFontSize)
}
if (item2.nameLocation == 'middle' && item2.showTitle) {
baseGrid[item2.position] =
legendPosition.grid[item2.position] +
(maxFontSize || defaultFontSize) * 2
}
if (item2.nameLocation == 'start' && item2.showTitle) {
height -= 20
baseGrid.bottom =
legendPosition.grid.top + (maxFontSize || defaultFontSize)
}
})
if (xAxis.position === 'middle' && xAxis.title) {
baseGrid.bottom += xAxis.fontSize || defaultFontSize
}
if (xAxis.position === 'start' && xAxis.title) {
baseGrid.left += xAxisTitleLen
}
if (xAxis.position === 'end' && xAxis.title) {
baseGrid.right += xAxisTitleLen
}
}
baseGrid.top += 5
baseGrid.right += 10
baseGrid.bottom += 10
baseGrid.left += 30
if (dataZoom2.slider.x) baseGrid.bottom += 40
if (dataZoom2.slider.y) baseGrid.right += 30
if (dataZoomSlider.value) {
height -= 40
}
if (!props2.axisConfig.yAxis[0]?.showTitle) {
YAxisFontSize = 0
}
if (xAxis.position === 'middle' && xAxis.title) {
const titleHeight = (xAxis.fontSize || defaultFontSize) + 30
height -= titleHeight
}
if (xAxis.axisLabel.displayType == 'custom' && xAxis.axisLabel.rotate) {
let rotate2 = Math.abs(xAxis.axisLabel.rotate)
let fontHeight = xAxis.axisLabel.fontSize || defaultFontSize
let naturalTime = node2.props.naturalTime
let relativeTime = node2.props.relativeTime
let time2 = isNaturalTime.value ? relativeTime : naturalTime
let timeLen = time2.split('').length * fontHeight * 1.2
let timeHeight = timeLen * Math.sin((Math.PI / 180) * rotate2)
height -= timeHeight
}
let gridHeight = height / sortedPartitions.length
const grid2 = props2.chartConfig.grid
if (grid2 && grid2.top != void 0) {
baseGrid.top += grid2.top
}
if (grid2 && grid2.bottom != void 0) {
gridHeight -= grid2.bottom
}
if (grid2 && grid2.left != void 0) {
baseGrid.left += grid2.left
}
if (grid2 && grid2.right != void 0) {
baseGrid.right += grid2.right
}
return sortedPartitions.map((item2, index2) => {
return {
containLabel: false,
height: gridHeight - YAxisFontSize - 10,
left: baseGrid.left,
right: baseGrid.right,
top: baseGrid.top + gridHeight * index2,
}
})
}
let dataZoomSliderLabelWidth = 0
node2.props.naturalTime.split('').map((item2) => {
if (item2 === ':') {
dataZoomSliderLabelWidth += 2
} else if (item2 === '-') {
dataZoomSliderLabelWidth += 3
} else {
dataZoomSliderLabelWidth += 10
}
})
let option2 = {
title: {
show: props2.chartConfig.title.show,
text: t3(props2.chartConfig.title.text),
top: 0,
left: style2.textAlign,
padding: 5,
textStyle: {
fontSize: node2.style.fontSize || 14,
lineHeight: parseInt(node2.style.lineHeight || '0') || 14,
fontWeight: node2.style.fontWeight || 'normal',
fontFamily: node2.style.fontFamily,
fontStyle: node2.style.fontStyle,
color: node2.style.color || '#999999',
},
},
graphic: {
type: 'text',
left: 'center',
top: '52%',
style: {
text: pieConfig2.total ? handlePieTotal2() : '',
fill: '#333',
fontSize: 20,
fontWeight: 700,
},
},
toolbox: setToolbox(),
dataZoom: [
{
type: 'slider',
show: dataZoomSlider.value,
realtime: true,
left: dataZoomSliderLabelWidth,
right: dataZoomSliderLabelWidth,
xAxisIndex: sortedPartitions.map((item2) => item2 - 1),
bottom: chartConfig2.legend.position === 'bottom' ? 40 : 10,
labelFormatter: function (value2) {
if (!isNaN(value2)) {
let currentData = data2[value2]?.['\u8BB0\u5F55\u65F6\u95F4']
return transformTimeLabel(currentData)
}
return '' + value2
},
},
{
type: 'inside',
realtime: true,
disabled: !dataZoomInside.value,
xAxisIndex: sortedPartitions.map((item2) => item2 - 1),
},
],
grid: setGrid(),
xAxis: setXAxis(),
yAxis: setYAxis(),
tooltip: {
trigger: 'axis',
formatter: function (params2) {
const setTips = (marker, seriesName, value2) => {
return `
${marker + seriesName}
${value2}
`
}
const setTitle = (title2) => {
return `${title2}
`
}
let title = setTitle(transformTimeLabel(params2[0].axisValueLabel))
let tips = ''
params2.forEach((item2) => {
tips += setTips(
item2.marker,
item2.seriesName,
isNaN(item2.value[1]) ? '-' : item2.value[1]
)
})
return title + tips
},
},
axisPointer: {
link: [{ xAxisIndex: 'all' }],
},
legend: {
show: legend.show,
icon: 'roundRect',
type: 'scroll',
orient: legendPosition.orient,
top: legendPosition.top,
right: legendPosition.right,
bottom: legendPosition.bottom,
width: '80%',
itemWidth: 14,
itemHeight: 12,
itemGap: 6,
padding: 5,
textStyle: {
fontFamily: legend.fontFamily,
fontSize: legend.fontSize,
color: legend.color,
fontWeight: node2.style.fontWeight || 'normal',
fontStyle: node2.style.fontStyle,
lineHeight:
legend.fontSize || parseInt(node2.style.lineHeight || '0') || 12,
},
formatter(a2) {
return a2
},
tooltip: {
show: true,
},
selected: legendSelected.value,
},
animationDuration: 0,
animation: false,
color: groupCurves.value.map((curve) => curve.color),
series: onlyStyle
? void 0
: groupCurves.value.map((curve) => {
let name2 = curve.name
excelData.headers.push(name2)
const type4 =
node2.is &&
['ChartPie', 'ChartPieRing', 'ChartPieRose'].includes(node2.is)
? 'pie'
: 'bar'
const xAxisIndex = gridPartitions[curve.partition]
const yAxisIndex =
yAxisCursor[`${curve.partition}-${curve.yAxis}`] ||
yAxisCursor[`${curve.partition}-1`]
let dataLength = data2.length
let floatData = new Float64Array(dataLength * 2)
var off2 = 0
for (var j2 = 0; j2 < dataLength; j2++) {
let value2 =
data2[j2][name2] !== void 0 && data2[j2][name2] !== null
? data2[j2][name2]
: '-'
let time2 = data2[j2]['\u8BB0\u5F55\u65F6\u95F4']
floatData[off2++] = time2
floatData[off2++] = value2
}
return {
indexKey: curve.id,
type: type4,
name: t3(name2),
tagName: curve.tagName,
sampling: 'lttb',
large: true,
largeThreshold: 1e3,
progressive: 400,
progressiveThreshold: 3e3,
animationThreshold: 1e3,
xAxisIndex,
yAxisIndex,
center: void 0,
data: floatData,
dimensions: ['time', 'value'],
barWidth: barConfig.barCategoryGap
? void 0
: barConfig.borderWidth,
barGap: barConfig.barGap,
barCategoryGap: barConfig.barCategoryGap,
showBackground: barConfig.showBackground,
itemStyle: {
shadowColor: '#fff',
shadowBlur: 0,
borderRadius: barConfig.borderRadius,
width: 20,
},
symbolSize: lineConfig.symbol.show ? lineConfig.symbol.size : 0,
showAllSymbol: true,
smooth: lineConfig.line === 'line' ? false : true,
step: lineConfig.line === 'step' ? 'start' : '',
symbol: lineConfig.symbol.type,
lineStyle: {
width: lineConfig.width,
type: lineConfig.type,
shadowColor: '#bbb',
shadowOffsetX: 0,
shadowOffsetY: 1,
shadowBlur: 0,
},
top: legendPosition.pie.top,
left: 10,
bottom: legendPosition.pie.bottom,
right: legendPosition.pie.right,
avoidLabelOverlap: true,
label: {
show: chartConfig2.label.show,
fontFamily: chartConfig2.label.fontFamily,
fontSize: chartConfig2.label.fontSize,
position: chartConfig2.label.position || 'outside',
color: chartConfig2.label.color,
lineHeight: chartConfig2.label.fontSize,
minMargin: 5,
formatter: (params2) => {
return params2.value
},
},
labelLine: {
show: isPie2() ? pieConfig2.labelLine.show : false,
lineStyle: {
shadowColor: '#fff',
shadowBlur: 0,
shadowOffsetX: 1,
shadowOffsetY: 1,
},
showAbove: true,
smooth: true,
length: pieConfig2.labelLine.length,
length2: pieConfig2.labelLine.length2,
maxSurfaceAngle: 30,
},
markLine: confirmedMarkLine.value.length
? setMarkLine2()
: void 0,
connectNulls: !lineConfig.unConnectEmpty,
}
}),
}
let replaceMerge = shouldReplaceMerge2 ? [shouldReplaceMerge2] : void 0
shouldReplaceMerge2 = ''
node2.props.excelData = excelData
const setOption = () => {
forceClearChart2()
if ($props2.updateChart) {
chart2?.setOption(option2, {
replaceMerge,
lazyUpdate: true,
})
$props2.updateChart?.(chart2)
chart2?.setOption({}, {})
}
if ($props2.setOption) {
const option_ = $props2.setOption(option2) || option2
chart2?.setOption(option_, { replaceMerge })
}
if (!$props2.updateChart && !$props2.setOption) {
chart2?.setOption(option2, { replaceMerge })
}
if (isDataZoomSelectActive.value) {
dispatchDataZoomSelectActive(true)
}
if (isRealtime.value) {
dataZoomRange.value = ''
} else {
dataZoomRange.value &&
chart2?.dispatchAction({ ...dataZoomRange.value, type: 'dataZoom' })
}
}
cancelIdleCallback(cancelIdleId2)
cancelIdleId2 = requestIdleCallback(setOption, {
timeout: 2e3,
})
}
let shouldReplaceMerge2 = ''
watch$1([() => indexesComputed2.value.length], () => {
shouldReplaceMerge2 = 'series'
})
watch$1(
[() => props2.axisConfig.yAxis.length],
() => {
shouldReplaceMerge2 = 'yAxis'
},
{
deep: true,
}
)
watch$1(
[
() => props2.chartConfig.toolbox,
() => props2.chartConfig.dataZoom.select,
],
() => {
shouldReplaceMerge2 = 'toolbox'
},
{
deep: true,
}
)
const getRelativeTime = (to, from, type4) => {
let millisecond = to - from
const units = type4.split(':')
const times = []
units.forEach((unit) => {
switch (unit) {
case 'hh':
times.push(
Math.floor(millisecond / (1e3 * 60 * 60))
.toString()
.padStart(2, '0')
)
millisecond =
millisecond -
Math.floor(millisecond / (1e3 * 60 * 60)) * 1e3 * 60 * 60
break
case 'mm':
times.push(
Math.floor(millisecond / (1e3 * 60))
.toString()
.padStart(2, '0')
)
millisecond =
millisecond - Math.floor(millisecond / (1e3 * 60)) * 1e3 * 60
break
case 'ss':
times.push(
Math.floor(millisecond / 1e3)
.toString()
.padStart(2, '0')
)
millisecond = millisecond - Math.floor(millisecond / 1e3) * 1e3
break
}
})
return times.join(':')
}
let isRendered2 = ref(true)
function updateChartData2() {
if (!isRendered2.value) return
isRendered2.value = false
let option2 = chart2?.getOption()
let series = option2?.series
if (!chart2 || !option2 || !series) return
option2.series = series.map((s2, index2) => {
let dataLength = data2.length
let floatData = new Float64Array(dataLength * 2)
var off2 = 0
for (var j2 = 0; j2 < dataLength; j2++) {
let value2 =
data2[j2][s2.name] !== void 0 && data2[j2][s2.name] !== null
? data2[j2][s2.name]
: '-'
let time2 = data2[j2]['\u8BB0\u5F55\u65F6\u95F4']
floatData[off2++] = time2
floatData[off2++] = value2
}
return {
...s2,
name: t3(dimensionNames[index2]),
data: floatData,
dimensions: ['category', 'value'],
encode: {
x: 'category',
y: 'value',
},
markLine: confirmedMarkLine.value.length ? setMarkLine2() : void 0,
connectNulls: !node2.props.lineConfig.unConnectEmpty,
}
})
cancelIdleCallback(cancelIdleId2)
cancelIdleId2 = requestIdleCallback(
() => {
forceClearChart2()
if (option2) {
chart2?.setOption(option2, true, true)
series = null
option2.series = null
}
},
{
timeout: 2e3,
}
)
}
lodash$2.exports.debounce(() => updateChart2(true), 200, { maxWait: 2e3 })
const updateChartConfigAndData2 = lodash$2.exports.debounce(
() => updateChart2(),
100,
{ maxWait: 2e3 }
)
watch$1([props2], updateChartConfigAndData2)
const resize_2 = lodash$2.exports.debounce(
() => chart2?.resize(),
1e3 / 12,
{ maxWait: 1e3 / 12 }
)
watch$1(
[
() => node2.name,
() => {
const style_ = { ...style2 }
delete style_.left
delete style_.top
return Object.values(style_).join()
},
],
() => {
resize_2()
updateChartConfigAndData2()
}
)
watch$1(
[() => node2.props.toolbarPosition, () => node2.props.toolbarShow],
() => {
resize_2()
updateChartConfigAndData2()
}
)
const chartStyle = computed(() => {
return lodash$2.exports.pick(style2, [
'paddingLeft',
'paddingRight',
'paddingTop',
'paddingBottom',
])
})
let canvasStyle = computed(() => {
let strScale = `scale(${state$6.current.zoom})`
var obj = {
zoom: 1 / state$6.current.zoom,
transform: strScale,
transformOrigin: '0 0',
}
return obj
})
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_switch = resolveComponent('el-switch')
const _component_el_button = resolveComponent('el-button')
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_checkbox_group = resolveComponent('el-checkbox-group')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', _hoisted_1$59, [
createElementVNode(
'div',
{
class: normalizeClass(['container flex', toolbarPosition.value]),
},
[
createElementVNode(
'div',
{
class: 'chart-container flex flex-col flex-1',
style: normalizeStyle$1(chartStyle.value),
},
[
createElementVNode('div', _hoisted_2$4l, [
createElementVNode('div', null, [
createElementVNode(
'div',
{
class: 'realtime-filter flex',
style: normalizeStyle$1({
'--query-background-color':
backgroundColorVar.value,
'--query-color': colorVar.value,
'--query-border-color': borderColorVar.value,
}),
},
[
createElementVNode('div', _hoisted_3$3V, [
createVNode$1(
_component_el_select,
{
class: '--scms-select width-160',
'popper-class': '--scms-select_poper',
modelValue: currentGroupId.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(currentGroupId.value = $event)),
'allow-create': '',
filterable: '',
placeholder: _ctx._t('\u8BF7\u9009\u62E9'),
teleported: false,
onChange: handleGroupChange,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(groups.value, (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.id,
label: unref(t3)(item2.name),
value: item2.id,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue', 'placeholder']
),
]),
unref(node2).props.spanSelector &&
isRealtime.value &&
isFixedSpan.value
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
createElementVNode(
'span',
_hoisted_4$3o,
toDisplayString$1(_ctx._t('\u8FD1')),
1
),
createElementVNode('div', _hoisted_5$34, [
createVNode$1(
_component_el_input_number,
{
class:
'--scms-input --scms-input-bottom width-100 mr-10',
modelValue:
unref(node2).props.spanValue,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(node2).props.spanValue =
$event)),
min: 0,
step: 1,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_6$2M, [
createVNode$1(
_component_el_select,
{
class: '--scms-select width-100',
'popper-class': '--scms-select_poper',
modelValue: unref(node2).props.spanUnit,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(node2).props.spanUnit =
$event)),
'allow-create': '',
filterable: '',
placeholder:
_ctx._t('\u8BF7\u9009\u62E9'),
teleported: false,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(timeUnits),
(item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: _ctx._t(
item2.label
),
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 1,
},
8,
['modelValue', 'placeholder']
),
]),
],
64
))
: createCommentVNode('', true),
],
4
),
]),
createVNode$1(
_component_el_switch,
{
modelValue: isRealtime.value,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) => (isRealtime.value = $event)),
style: {
'--el-switch-on-color': '#326cf3',
'--el-switch-off-color': '#febf72',
},
'active-text': _ctx._t('\u5B9E\u65F6'),
'inactive-text': _ctx._t('\u5386\u53F2'),
onChange: handleModeChange,
},
null,
8,
['modelValue', 'active-text', 'inactive-text']
),
]),
createElementVNode('div', _hoisted_7$2q, [
createElementVNode(
'div',
{
ref_key: 'el',
ref: el2,
class: 'chart',
onClick: click2,
t: collectText2(),
},
null,
8,
_hoisted_8$28
),
]),
],
4
),
createElementVNode(
'div',
{
class: 'toolbar',
style: normalizeStyle$1({
'--toolbar-background-color':
toolbarBackgroundColorVar.value,
'--toolbar-border-color': toolbarBorderColorVar.value,
'--toolbar-color': toolbarColorVar.value,
}),
},
[
createElementVNode(
'div',
{
class: normalizeClass([
'toolbar-button-container',
toolbarExpand.value ? '' : 'collapse',
]),
style: normalizeStyle$1(
unref(node2).props.toolbarShow == 1
? {
width: toolbarContainerWidth.value,
height: toolbarContainerHeight.value,
}
: ''
),
},
[
createVNode$1(
_component_el_button,
{
onClick: toggleDataZoomInside,
class: normalizeClass([
dataZoomInside.value ? 'active' : '',
'cms-el-button-x',
]),
},
{
default: withCtx(() => [
_hoisted_9$1_,
createElementVNode(
'span',
{
class: normalizeClass([
'toolbar-button-tip',
toolbarTipsPosition.value,
]),
},
toDisplayString$1(
_ctx._t('\u5185\u7F6E\u7F29\u653E')
),
3
),
]),
_: 1,
},
8,
['class']
),
createVNode$1(
_component_el_button,
{
onClick: toggleDataZoomTime,
class: normalizeClass([
dataZoomSlider.value ? 'active' : '',
'cms-el-button-x',
]),
},
{
default: withCtx(() => [
_hoisted_10$1P,
createElementVNode(
'span',
{
class: normalizeClass([
'toolbar-button-tip',
toolbarTipsPosition.value,
]),
},
toDisplayString$1(
_ctx._t('\u65F6\u95F4\u8F74\u6ED1\u52A8')
),
3
),
]),
_: 1,
},
8,
['class']
),
createVNode$1(
_component_el_button,
{
onClick: handleCustomZoom,
class: normalizeClass([
'cms-el-button-x',
isDataZoomSelectActive.value ? 'active' : '',
]),
},
{
default: withCtx(() => [
_hoisted_11$1G,
createElementVNode(
'span',
{
class: normalizeClass([
'toolbar-button-tip',
toolbarTipsPosition.value,
]),
},
toDisplayString$1(
_ctx._t('\u6846\u9009\u7F29\u653E')
),
3
),
]),
_: 1,
},
8,
['class']
),
createVNode$1(
_component_el_button,
{
onClick: handleGoBack,
class: 'cms-el-button-x',
},
{
default: withCtx(() => [
_hoisted_12$1C,
createElementVNode(
'span',
{
class: normalizeClass([
'toolbar-button-tip',
toolbarTipsPosition.value,
]),
},
toDisplayString$1(_ctx._t('\u8FD8\u539F')),
3
),
]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
onClick: handleResetRange,
class: 'cms-el-button-x',
},
{
default: withCtx(() => [
_hoisted_13$1s,
createElementVNode(
'span',
{
class: normalizeClass([
'toolbar-button-tip',
toolbarTipsPosition.value,
]),
},
toDisplayString$1(
_ctx._t('\u91CD\u7F6E\u8F74\u8303\u56F4')
),
3
),
]),
_: 1,
}
),
isNaturalTime.value
? (openBlock(),
createBlock(
_component_el_button,
{
key: 0,
onClick: toggleTimelineType,
class: 'cms-el-button-x',
},
{
default: withCtx(() => [
_hoisted_14$1i,
createElementVNode(
'span',
{
class: normalizeClass([
'toolbar-button-tip',
toolbarTipsPosition.value,
]),
},
toDisplayString$1(
_ctx._t('\u81EA\u7136\u65F6\u95F4')
),
3
),
]),
_: 1,
}
))
: (openBlock(),
createBlock(
_component_el_button,
{
key: 1,
onClick: toggleTimelineType,
class: 'cms-el-button-x',
},
{
default: withCtx(() => [
_hoisted_15$1d,
createElementVNode(
'span',
{
class: normalizeClass([
'toolbar-button-tip',
toolbarTipsPosition.value,
]),
},
toDisplayString$1(
_ctx._t(
'\u76F8\u5BF9\u8D77\u70B9\u65F6\u95F4'
)
),
3
),
]),
_: 1,
}
)),
createVNode$1(
_component_el_button,
{
onClick: handleOpenMarkLineDialog,
class: normalizeClass([
'cms-el-button-x',
confirmedMarkLine.value.length ? 'active' : '',
]),
},
{
default: withCtx(() => [
_hoisted_16$1b,
createElementVNode(
'span',
{
class: normalizeClass([
'toolbar-button-tip',
toolbarTipsPosition.value,
]),
},
toDisplayString$1(
_ctx._t('\u663E\u793A\u6807\u6CE8')
),
3
),
]),
_: 1,
},
8,
['class']
),
],
6
),
unref(node2).props.toolbarShow === 1
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
!toolbarExpand.value
? (openBlock(),
createBlock(
_component_el_button,
{
key: 0,
onClick: toggleToolbar,
class: 'cms-el-button-x',
},
{
default: withCtx(() => [
_hoisted_17$15,
createElementVNode(
'span',
{
class: normalizeClass([
'toolbar-button-tip',
toolbarTipsPosition.value,
]),
},
toDisplayString$1(
_ctx._t('\u5C55\u5F00')
),
3
),
]),
_: 1,
}
))
: (openBlock(),
createBlock(
_component_el_button,
{
key: 1,
onClick: toggleToolbar,
class: 'cms-el-button-x',
},
{
default: withCtx(() => [
_hoisted_18$_,
createElementVNode(
'span',
{
class: normalizeClass([
'toolbar-button-tip',
toolbarTipsPosition.value,
]),
},
toDisplayString$1(
_ctx._t('\u6536\u8D77')
),
3
),
]),
_: 1,
}
)),
],
64
))
: createCommentVNode('', true),
],
4
),
createVNode$1(
_component_el_dialog,
{
'show-close': false,
'custom-class': '--user-dialog markLine-dialog',
modelValue: showMarkLineDialog.value,
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) =>
(showMarkLineDialog.value = $event)),
'append-to-body': true,
width: '320px',
},
{
title: withCtx(() => [
createElementVNode(
'span',
null,
toDisplayString$1(_ctx._t('\u9644\u52A0\u6807\u6CE8')),
1
),
]),
default: withCtx(() => [
createElementVNode('div', _hoisted_19$W, [
createTextVNode(
toDisplayString$1(_ctx._t('\u9644\u52A0\u6807\u6CE8')) +
' ',
1
),
createElementVNode('div', _hoisted_20$Q, [
createElementVNode('ul', null, [
createElementVNode('li', _hoisted_21$G, [
createElementVNode(
'div',
_hoisted_22$E,
toDisplayString$1(_ctx._t('\u6807\u7B7E')),
1
),
createElementVNode(
'div',
_hoisted_23$B,
toDisplayString$1(_ctx._t('\u663E\u793A')),
1
),
]),
createElementVNode('li', _hoisted_24$z, [
createElementVNode('div', _hoisted_25$u, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(markLines.value, (item2, index2) => {
return (
openBlock(),
createElementBlock(
'div',
{
key: index2,
class: 'title',
},
toDisplayString$1(_ctx._t(item2)),
1
)
)
}),
128
)),
]),
createElementVNode('div', _hoisted_26$r, [
createVNode$1(
_component_el_checkbox_group,
{
modelValue: selectedMarkLine.value,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(selectedMarkLine.value = $event)),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
markLines.value,
(item2, index2) => {
return (
openBlock(),
createElementBlock(
'div',
{
key: index2,
class: 'title',
},
[
createVNode$1(
_component_el_checkbox,
{ label: item2 },
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(
item2
),
1
),
]),
_: 2,
},
1032,
['label']
),
]
)
)
}
),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
]),
]),
]),
]),
createElementVNode('div', _hoisted_27$q, [
createVNode$1(
_component_el_button,
{
onClick:
_cache[5] ||
(_cache[5] = ($event) =>
(showMarkLineDialog.value = false)),
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx._t('\u53D6\u6D88')),
1
),
]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
type: 'primary',
onClick: handleMarkLine,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx._t('\u786E\u8BA4')),
1
),
]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
),
],
2
),
])
)
}
},
})
var Chart = /* @__PURE__ */ _export_sfc(_sfc_main$64, [
['__scopeId', 'data-v-63544dc0'],
])
var __glob_2_24 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Chart,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
let mouseOnElPopper = false
function isOnPopper(el2) {
if (el2.classList.contains('el-popper')) return true
if (el2.parentElement) return isOnPopper(el2.parentElement)
return false
}
function mouseHandler(e2) {
mouseOnElPopper = isOnPopper(e2.target)
}
addEventListener('mousedown', mouseHandler, true)
function isMouseOnElPopper() {
return mouseOnElPopper
}
var QueryConditions_vue_vue_type_style_index_0_scoped_true_lang$1 = ''
const _withScopeId$2W = (n2) => (
pushScopeId('data-v-bdbad428'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$58 = { class: 'data' }
const _hoisted_2$4k = { class: 'auto-update limit' }
const _hoisted_3$3U = { class: 'flex justify-start' }
const _hoisted_4$3n = /* @__PURE__ */ _withScopeId$2W(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u5B9E\u65F6\uFF1A', -1)
)
const _hoisted_5$33 = { class: 'flex justify-start' }
const _hoisted_6$2L = /* @__PURE__ */ _withScopeId$2W(() =>
/* @__PURE__ */ createElementVNode(
'strong',
{ class: 'key' },
'\u80CC\u666F\uFF1A',
-1
)
)
const _hoisted_7$2p = { class: 'flex justify-start' }
const _hoisted_8$27 = /* @__PURE__ */ _withScopeId$2W(() =>
/* @__PURE__ */ createElementVNode(
'strong',
{ class: 'key' },
'\u8FB9\u6846\uFF1A',
-1
)
)
const _hoisted_9$1Z = { class: 'flex' }
const _hoisted_10$1O = /* @__PURE__ */ _withScopeId$2W(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ style: { 'white-space': 'nowrap' } },
'\u5386\u53F2\uFF1A',
-1
)
)
const _hoisted_11$1F = /* @__PURE__ */ _withScopeId$2W(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-tianjia1' },
null,
-1
)
)
const _hoisted_12$1B = /* @__PURE__ */ createTextVNode('\u65B0\u5EFA')
const _hoisted_13$1r = { class: 'auto-update limit' }
const _hoisted_14$1h = /* @__PURE__ */ _withScopeId$2W(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
[
/* @__PURE__ */ createTextVNode('\u6700\u5927\u6570\u636E\u91CF: '),
/* @__PURE__ */ createElementVNode('i', {
class: 'padding-head-icon iconfont icon-tishi1',
'data-tooltip-raw-content': '',
title:
'\u5B9E\u65F6\u6A21\u5F0F\u4E0B\u56FE\u8868\u4E2D\u6700\u5927\u53EF\u652F\u630118000\u70B9\uFF0C
\u5386\u53F2\u6A21\u5F0F\u4E0B\u56FE\u8868\u4E2D\u6700\u5927\u53EF\u652F\u6301\u70B9\u6570\u4E0D\u505A\u9650\u5236',
}),
],
-1
)
)
const _hoisted_15$1c = /* @__PURE__ */ _withScopeId$2W(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u7F16\u8F91\u6A21\u5F0F',
-1
)
)
const _hoisted_16$1a = /* @__PURE__ */ _withScopeId$2W(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u8FD0\u884C\u6A21\u5F0F',
-1
)
)
const _hoisted_17$14 = /* @__PURE__ */ _withScopeId$2W(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u4E1A\u52A1\u6BB5\u6570',
-1
)
)
const _sfc_main$63 = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
const props2 = reactive(node2.props)
const dataConfig = reactive(props2.dataConfig)
let queryList = ref([])
const handleCreateQuery = () => {
let canvasNode = new CanvasNode$1({
is: 'Filter',
name: '\u7B5B\u9009\u5668',
props: {},
})
const pos = getNodePos(node2)
canvasNode.style.position = 'absolute'
canvasNode.style.left = pos.x + 'px'
canvasNode.style.top = pos.y - 50 + 'px'
setTimeout(() => {
if (!canvasNode) return
CanvasNode$1.getBody().appendChild(canvasNode)
nextTick(() => {
unUnionController()
emit(ControllerEventType.UNION_FILTER, {
controllerId: canvasNode.id,
relativeList: dataConfig.relativeList,
chartId: node2.id,
})
dataConfig.queryControllerId = canvasNode.id
queryList.value = getPageControllers(
app.current.project.current.page.document.body
)
})
})
}
const unUnionController = () => {
const prevControllerId = dataConfig.queryControllerId
if (prevControllerId) {
emit(ControllerEventType.UN_UNION_FILTER, {
removeChartId: node2.id,
prevControllerId,
})
}
}
const setQueryControllerId = (id2) => {
unUnionController()
dataConfig.queryControllerId = id2
emit(ControllerEventType.UNION_FILTER, {
controllerId: id2,
relativeList: dataConfig.relativeList,
chartId: node2.id,
})
}
const getPageControllers = (node22) => {
let controllers = []
if (node22.childNodes.length) {
node22.childNodes.forEach((item2) => {
controllers.push(...getPageControllers(item2))
})
} else if (node22.is === 'Filter') {
controllers.push({
id: node22.id,
name: node22.name,
})
}
return controllers
}
queryList.value = getPageControllers(
app.current.project.current.page.document.body
)
watch$1(
() => props2.customRange,
(val2) => {
if (!val2) {
props2.spanSelector = false
} else {
props2.spanSelector = true
}
}
)
let editingLimit = ref(dataConfig.editingLimit)
let runningLimit = ref(dataConfig.runningLimit)
const changeLimit = (val2, type4) => {
dataConfig[type4] = val2
}
const backgroundColor2 = computed({
get: () => {
return props2.queryConditionStyle?.backgroundColor || '#fff'
},
set: (val2) => {
props2.queryConditionStyle.backgroundColor = val2
},
})
const borderColor = computed({
get: () => {
return props2.queryConditionStyle?.borderColor || 'transparent'
},
set: (val2) => {
props2.queryConditionStyle.borderColor = val2
},
})
const change2 = (attribute, e2) => {
if (props2.queryConditionStyle) {
props2.queryConditionStyle[attribute] = e2
} else {
props2.queryConditionStyle = {
[attribute]: e2,
}
}
}
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_color_picker = resolveComponent('el-color-picker')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_button = resolveComponent('el-button')
const _component_el_input_number = resolveComponent('el-input-number')
return (
openBlock(),
createBlock(
_sfc_main$72,
{
title: '\u67E5\u8BE2\u6761\u4EF6',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$58, [
createElementVNode('div', _hoisted_2$4k, [
createElementVNode('div', _hoisted_3$3U, [
_hoisted_4$3n,
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(props2).customRange,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(props2).customRange = $event)),
label: '\u81EA\u5B9A\u4E49\u8303\u56F4',
class: 'cms-el-checkbox-font-size-12 mr-0',
},
null,
8,
['modelValue']
),
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(props2).spanSelector,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(props2).spanSelector = $event)),
label: '\u663E\u793A\u9009\u62E9\u5668',
class: 'cms-el-checkbox-font-size-12',
disabled: !unref(props2).customRange,
},
null,
8,
['modelValue', 'disabled']
),
]),
createElementVNode('div', _hoisted_5$33, [
_hoisted_6$2L,
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
'model-value': backgroundColor2.value,
onActiveChange:
_cache[2] ||
(_cache[2] = (e2) =>
unref(isMouseOnElPopper)() &&
change2('backgroundColor', e2)),
},
null,
8,
['predefine', 'model-value']
),
]),
createElementVNode('div', _hoisted_7$2p, [
_hoisted_8$27,
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
'model-value': borderColor.value,
onActiveChange:
_cache[3] ||
(_cache[3] = (e2) =>
unref(isMouseOnElPopper)() &&
change2('borderColor', e2)),
},
null,
8,
['predefine', 'model-value']
),
]),
createElementVNode('div', _hoisted_9$1Z, [
_hoisted_10$1O,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
clearable: '',
onClear:
_cache[4] ||
(_cache[4] = ($event) =>
(unref(dataConfig).queryControllerId = '')),
'popper-class': 'cms-el-select_check',
'model-value': unref(dataConfig).queryControllerId,
placeholder: '\u8BF7\u5173\u8054\u7B5B\u9009\u5668',
onChange: setQueryControllerId,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(queryList.value, (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.id,
label: item2.name,
value: item2.id,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['model-value']
),
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: handleCreateQuery,
},
{
default: withCtx(() => [
_hoisted_11$1F,
_hoisted_12$1B,
]),
_: 1,
}
),
]),
]),
createElementVNode('div', _hoisted_13$1r, [
_hoisted_14$1h,
createElementVNode('div', null, [
_hoisted_15$1c,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
'controls-position': 'right',
modelValue: editingLimit.value,
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) =>
(editingLimit.value = $event)),
min: 0,
onInput:
_cache[6] ||
(_cache[6] = ($event) =>
changeLimit($event, 'editingLimit')),
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', null, [
_hoisted_16$1a,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
'controls-position': 'right',
modelValue: runningLimit.value,
'onUpdate:modelValue':
_cache[7] ||
(_cache[7] = ($event) =>
(runningLimit.value = $event)),
min: 0,
onInput:
_cache[8] ||
(_cache[8] = ($event) =>
changeLimit($event, 'runningLimit')),
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', null, [
_hoisted_17$14,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
'controls-position': 'right',
modelValue: unref(props2).businessSegment,
'onUpdate:modelValue':
_cache[9] ||
(_cache[9] = ($event) =>
(unref(props2).businessSegment = $event)),
min: 0,
max: 100,
},
null,
8,
['modelValue']
),
]),
]),
]),
]),
_: 1,
}
)
)
}
},
})
var QueryConditions$2 = /* @__PURE__ */ _export_sfc(_sfc_main$63, [
['__scopeId', 'data-v-bdbad428'],
])
var QueryConditions$3 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: QueryConditions$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var SetChart_vue_vue_type_style_index_0_scoped_true_lang$2 = ''
const _withScopeId$2V = (n2) => (
pushScopeId('data-v-6a0cd426'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$57 = { class: 'set-chart' }
const _hoisted_2$4j = { class: 'set-chart-item' }
const _hoisted_3$3T = /* @__PURE__ */ _withScopeId$2V(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'header' },
'\u7EBF\u6761\u8BBE\u7F6E\uFF1A',
-1
)
)
const _hoisted_4$3m = { class: 'content' }
const _hoisted_5$32 = /* @__PURE__ */ _withScopeId$2V(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u7EBF\u6761\u7C97\u7EC6',
-1
)
)
const _hoisted_6$2K = { class: 'content' }
const _hoisted_7$2o = { class: 'set-chart-item' }
const _hoisted_8$26 = { class: 'header' }
const _hoisted_9$1Y = { class: 'content' }
const _hoisted_10$1N = /* @__PURE__ */ _withScopeId$2V(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u6807\u8BB0\u5927\u5C0F',
-1
)
)
const _hoisted_11$1E = { class: 'set-chart-item' }
const _hoisted_12$1A = { class: 'header' }
const _hoisted_13$1q = { class: 'content' }
const _hoisted_14$1g = /* @__PURE__ */ _withScopeId$2V(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u6807\u8BB0\u5927\u5C0F',
-1
)
)
const _hoisted_15$1b = { class: 'set-chart-item' }
const _hoisted_16$19 = /* @__PURE__ */ _withScopeId$2V(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'header' },
'\u7EBF\u6761\u6837\u5F0F\uFF1A',
-1
)
)
const _hoisted_17$13 = { class: 'content' }
const _hoisted_18$Z = /* @__PURE__ */ createTextVNode('\u76F4\u7EBF')
const _hoisted_19$V = /* @__PURE__ */ createTextVNode('\u66F2\u7EBF')
const _hoisted_20$P = /* @__PURE__ */ createTextVNode('\u9636\u68AF')
const _sfc_main$62 = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const props2 = reactive($props2.node.props)
const symbolTypeList = [
{
label: '\u25CB',
value: 'circle',
},
{
label: '\u25C7',
value: 'diamond',
},
{
label: '\u25A1',
value: 'rect',
},
]
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_radio = resolveComponent('el-radio')
const _component_el_radio_group = resolveComponent('el-radio-group')
return (
openBlock(),
createBlock(
_sfc_main$72,
{
title: '\u56FE\u8868\u8BBE\u7F6E',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$57, [
createElementVNode('div', _hoisted_2$4j, [
_hoisted_3$3T,
createElementVNode('div', _hoisted_4$3m, [
_hoisted_5$32,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x lineStyle',
'popper-class': 'cms-el-select_check',
modelValue: unref(props2).lineConfig.type,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(props2).lineConfig.type = $event)),
'allow-create': '',
filterable: '',
placeholder: '\u7EBF\u6761',
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
label: '\u5B9E\u7EBF',
value: 'solid',
}),
createVNode$1(_component_el_option, {
label: '\u865A\u7EBF',
value: 'dashed',
}),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x size',
modelValue: unref(props2).lineConfig.width,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(props2).lineConfig.width = $event)),
min: 0,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_6$2K, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(props2).lineConfig.unConnectEmpty,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(props2).lineConfig.unConnectEmpty = $event)),
label: '\u4E0D\u8FDE\u63A5\u7A7A\u6570\u636E',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
]),
]),
createElementVNode('div', _hoisted_7$2o, [
createElementVNode('div', _hoisted_8$26, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(props2).lineConfig.symbol.show,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(props2).lineConfig.symbol.show = $event)),
label: '\u663E\u793A\u6570\u636E\u70B9',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_9$1Y, [
_hoisted_10$1N,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x lineStyle',
'popper-class': 'cms-el-select_check',
modelValue: unref(props2).lineConfig.symbol.type,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(props2).lineConfig.symbol.type = $event)),
'allow-create': '',
filterable: '',
placeholder: '\u6807\u8BB0\u70B9\u7C7B\u578B',
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(symbolTypeList, (item2) => {
return createVNode$1(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
}),
64
)),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x size',
modelValue: unref(props2).lineConfig.symbol.size,
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) =>
(unref(props2).lineConfig.symbol.size = $event)),
min: 0,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
]),
]),
createElementVNode('div', _hoisted_11$1E, [
createElementVNode('div', _hoisted_12$1A, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(props2).lineConfig.dataSymbol.show,
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) =>
(unref(props2).lineConfig.dataSymbol.show =
$event)),
label: '\u663E\u793A\u6807\u8BB0\u70B9',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_13$1q, [
_hoisted_14$1g,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x lineStyle',
'popper-class': 'cms-el-select_check',
modelValue: unref(props2).lineConfig.dataSymbol.type,
'onUpdate:modelValue':
_cache[7] ||
(_cache[7] = ($event) =>
(unref(props2).lineConfig.dataSymbol.type =
$event)),
'allow-create': '',
filterable: '',
placeholder: '\u6807\u8BB0\u70B9\u7C7B\u578B',
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(symbolTypeList, (item2) => {
return createVNode$1(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
}),
64
)),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x size',
modelValue: unref(props2).lineConfig.dataSymbol.size,
'onUpdate:modelValue':
_cache[8] ||
(_cache[8] = ($event) =>
(unref(props2).lineConfig.dataSymbol.size =
$event)),
min: 0,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
]),
]),
createElementVNode('div', _hoisted_15$1b, [
_hoisted_16$19,
createElementVNode('div', _hoisted_17$13, [
createVNode$1(
_component_el_radio_group,
{
modelValue: unref(props2).lineConfig.line,
'onUpdate:modelValue':
_cache[9] ||
(_cache[9] = ($event) =>
(unref(props2).lineConfig.line = $event)),
},
{
default: withCtx(() => [
createVNode$1(
_component_el_radio,
{
label: 'line',
size: 'large',
},
{
default: withCtx(() => [_hoisted_18$Z]),
_: 1,
}
),
createVNode$1(
_component_el_radio,
{
label: 'smooth',
size: 'large',
},
{
default: withCtx(() => [_hoisted_19$V]),
_: 1,
}
),
createVNode$1(
_component_el_radio,
{
label: 'step',
size: 'large',
},
{
default: withCtx(() => [_hoisted_20$P]),
_: 1,
}
),
]),
_: 1,
},
8,
['modelValue']
),
]),
]),
createVNode$1(Grid, { node: __props2.node }, null, 8, ['node']),
]),
]),
_: 1,
}
)
)
}
},
})
var SetChart$2 = /* @__PURE__ */ _export_sfc(_sfc_main$62, [
['__scopeId', 'data-v-6a0cd426'],
])
var SetChart$3 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: SetChart$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Toolbar_vue_vue_type_style_index_0_scoped_true_lang$2 = ''
const _withScopeId$2U = (n2) => (
pushScopeId('data-v-5dc524b0'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$56 = { class: 'XAxis' }
const _hoisted_2$4i = { class: 'XAxis-item' }
const _hoisted_3$3S = { class: 'header flex justify-start' }
const _hoisted_4$3l = /* @__PURE__ */ _withScopeId$2U(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'width-60' },
'\u4F4D\u7F6E\uFF1A',
-1
)
)
const _hoisted_5$31 = { class: 'header flex justify-start' }
const _hoisted_6$2J = /* @__PURE__ */ _withScopeId$2U(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'width-60' },
'\u663E\u793A\uFF1A',
-1
)
)
const _hoisted_7$2n = { class: 'header flex justify-start' }
const _hoisted_8$25 = /* @__PURE__ */ _withScopeId$2U(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'width-60' },
'\u80CC\u666F\uFF1A',
-1
)
)
const _hoisted_9$1X = { class: 'header flex justify-start' }
const _hoisted_10$1M = /* @__PURE__ */ _withScopeId$2U(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'width-60' },
'\u8FB9\u6846\uFF1A',
-1
)
)
const _sfc_main$61 = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const props2 = reactive($props2.node.props)
const toolbarPosition = ref([
{
label: '\u9876',
value: 'top',
},
{
label: '\u5E95',
value: 'bottom',
},
{
label: '\u5DE6',
value: 'left',
},
{
label: '\u53F3',
value: 'right',
},
])
const toolbarShow = ref([
{
label: '\u4E0D\u663E\u793A',
value: ToolbarShow.Hidden,
},
{
label: '\u6298\u53E0\u663E\u793A',
value: ToolbarShow.CollapseShow,
},
{
label: '\u56FA\u5B9A\u663E\u793A',
value: ToolbarShow.FixedShow,
},
])
const backgroundColor2 = computed(() => {
return props2.toolbarStyle?.backgroundColor || '#fff'
})
const borderColor = computed(() => {
return props2.toolbarStyle?.borderColor || '#fff'
})
const change2 = (attribute, e2) => {
if (props2.toolbarStyle) {
props2.toolbarStyle[attribute] = e2
} else {
props2.toolbarStyle = {
[attribute]: e2,
}
}
}
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_color_picker = resolveComponent('el-color-picker')
return (
openBlock(),
createBlock(
_sfc_main$72,
{
title: '\u5DE5\u5177\u6761',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$56, [
createElementVNode('div', _hoisted_2$4i, [
createElementVNode('div', _hoisted_3$3S, [
_hoisted_4$3l,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x ml-10',
'popper-class': 'cms-el-select_check',
modelValue: unref(props2).toolbarPosition,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(props2).toolbarPosition = $event)),
'allow-create': '',
filterable: '',
placeholder: '\u5B57\u4F53',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(toolbarPosition.value, (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_5$31, [
_hoisted_6$2J,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x ml-10',
'popper-class': 'cms-el-select_check',
modelValue: unref(props2).toolbarShow,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(props2).toolbarShow = $event)),
'allow-create': '',
filterable: '',
placeholder: '\u5B57\u4F53',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(toolbarShow.value, (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_7$2n, [
_hoisted_8$25,
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
'model-value': backgroundColor2.value,
onActiveChange:
_cache[2] ||
(_cache[2] = (e2) =>
unref(isMouseOnElPopper)() &&
change2('backgroundColor', e2)),
},
null,
8,
['predefine', 'model-value']
),
]),
createElementVNode('div', _hoisted_9$1X, [
_hoisted_10$1M,
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
'model-value': borderColor.value,
onActiveChange:
_cache[3] ||
(_cache[3] = (e2) =>
unref(isMouseOnElPopper)() &&
change2('borderColor', e2)),
},
null,
8,
['predefine', 'model-value']
),
]),
]),
]),
]),
_: 1,
}
)
)
}
},
})
var Toolbar$4 = /* @__PURE__ */ _export_sfc(_sfc_main$61, [
['__scopeId', 'data-v-5dc524b0'],
])
var Toolbar$5 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Toolbar$4,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Legend_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2T = (n2) => (
pushScopeId('data-v-9edad52e'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$55 = { class: 'legend' }
const _hoisted_2$4h = { class: 'header' }
const _hoisted_3$3R = { class: 'content' }
const _hoisted_4$3k = /* @__PURE__ */ _withScopeId$2T(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u5B57\u4F53',
-1
)
)
const _hoisted_5$30 = { class: 'cms-el-color-picker-x' }
const _hoisted_6$2I = { class: 'content' }
const _hoisted_7$2m = /* @__PURE__ */ _withScopeId$2T(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u56FE\u4F8B\u4F4D\u7F6E',
-1
)
)
const _sfc_main$60 = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
const props2 = reactive($props2.node.props)
const changeColor = (color2) => {
props2.chartConfig.legend.color = color2
}
let legendColorVisible = ref(false)
const legendColorCallback = () => {
legendColorVisible.value = false
}
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_color_picker = resolveComponent('el-color-picker')
return (
openBlock(),
createBlock(
_sfc_main$72,
{
title: '\u56FE\u4F8B',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$55, [
createElementVNode('div', _hoisted_2$4h, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(props2).chartConfig.legend.show,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(props2).chartConfig.legend.show = $event)),
label: '\u663E\u793A\u56FE\u4F8B',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_3$3R, [
_hoisted_4$3k,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x fontFamily',
'popper-class': 'cms-el-select_check',
modelValue: unref(props2).chartConfig.legend.fontFamily,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(props2).chartConfig.legend.fontFamily =
$event)),
'allow-create': '',
filterable: '',
placeholder: '\u5B57\u4F53',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(fontFamilyList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
hidden: item2.hidden,
},
null,
8,
['label', 'value', 'hidden']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x fontSize',
modelValue: unref(props2).chartConfig.legend.fontSize,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(props2).chartConfig.legend.fontSize = $event)),
min: 0,
max: 36,
controls: false,
},
null,
8,
['modelValue']
),
createElementVNode('div', _hoisted_5$30, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
'model-value': unref(props2).chartConfig.legend.color,
onActiveChange:
_cache[3] || (_cache[3] = (e2) => changeColor(e2)),
},
null,
8,
['predefine', 'model-value']
),
]),
]),
createElementVNode('div', _hoisted_6$2I, [
_hoisted_7$2m,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x position',
'popper-class': 'cms-el-select_check',
modelValue: unref(props2).chartConfig.legend.position,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(props2).chartConfig.legend.position = $event)),
'allow-create': '',
filterable: '',
placeholder: '\u8BF7\u9009\u62E9',
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
label: '\u4E0A',
value: 'top',
}),
createVNode$1(_component_el_option, {
label: '\u4E2D',
value: 'right',
}),
createVNode$1(_component_el_option, {
label: '\u4E0B',
value: 'bottom',
}),
]),
_: 1,
},
8,
['modelValue']
),
]),
]),
createVNode$1(
LegendColor,
{
visible: unref(legendColorVisible),
node: unref(node2),
onCallback: legendColorCallback,
},
null,
8,
['visible', 'node']
),
]),
_: 1,
}
)
)
}
},
})
var Legend = /* @__PURE__ */ _export_sfc(_sfc_main$60, [
['__scopeId', 'data-v-9edad52e'],
])
var Legend$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Legend,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var XAxis_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2S = (n2) => (
pushScopeId('data-v-737a14d6'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$54 = { class: 'XAxis' }
const _hoisted_2$4g = { class: 'XAxis-item' }
const _hoisted_3$3Q = /* @__PURE__ */ _withScopeId$2S(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'header' },
'\u8F74\u6807\u9898\uFF1A',
-1
)
)
const _hoisted_4$3j = { class: 'content' }
const _hoisted_5$2$ = /* @__PURE__ */ _withScopeId$2S(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u6807\u9898\u540D\u79F0',
-1
)
)
const _hoisted_6$2H = { class: 'content' }
const _hoisted_7$2l = /* @__PURE__ */ _withScopeId$2S(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u6807\u9898\u5B57\u4F53',
-1
)
)
const _hoisted_8$24 = { class: 'cms-el-color-picker-x' }
const _hoisted_9$1W = { class: 'content' }
const _hoisted_10$1L = /* @__PURE__ */ _withScopeId$2S(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u6807\u9898\u4F4D\u7F6E',
-1
)
)
const _hoisted_11$1D = { class: 'XAxis-item' }
const _hoisted_12$1z = /* @__PURE__ */ _withScopeId$2S(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'header' },
'\u5750\u6807\u6807\u7B7E\uFF1A',
-1
)
)
const _hoisted_13$1p = { class: 'content' }
const _hoisted_14$1f = /* @__PURE__ */ _withScopeId$2S(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u6807\u7B7E\u5B57\u4F53',
-1
)
)
const _hoisted_15$1a = { class: 'cms-el-color-picker-x' }
const _hoisted_16$18 = { class: 'XAxis-item' }
const _hoisted_17$12 = /* @__PURE__ */ _withScopeId$2S(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'header' },
'\u5C55\u793A\u65B9\u5F0F\uFF1A',
-1
)
)
const _hoisted_18$Y = { class: 'content' }
const _hoisted_19$U = /* @__PURE__ */ createTextVNode('\u81EA\u9002\u5E94')
const _hoisted_20$O = /* @__PURE__ */ createTextVNode(
'\u5168\u91CF\u663E\u793A'
)
const _hoisted_21$F = /* @__PURE__ */ createTextVNode('\u81EA\u5B9A\u4E49')
const _hoisted_22$D = {
key: 0,
class: 'content',
}
const _hoisted_23$A = { class: 'custom' }
const _hoisted_24$y = /* @__PURE__ */ _withScopeId$2S(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u65CB\u8F6C\u89D2\u5EA6',
-1
)
)
const _hoisted_25$t = { class: 'custom' }
const _hoisted_26$q = /* @__PURE__ */ _withScopeId$2S(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u95F4\u9694\u6570\u91CF',
-1
)
)
const _hoisted_27$p = { class: 'XAxis-item' }
const _hoisted_28$n = { class: 'header flex justify-start' }
const _hoisted_29$k = /* @__PURE__ */ _withScopeId$2S(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'nowrap' },
'\u81EA\u7136\u65F6\u95F4\u683C\u5F0F',
-1
)
)
const _hoisted_30$k = { class: 'header flex justify-start' }
const _hoisted_31$h = /* @__PURE__ */ _withScopeId$2S(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'nowrap' },
'\u76F8\u5BF9\u65F6\u95F4\u683C\u5F0F',
-1
)
)
const _hoisted_32$h = { class: 'XAxis-item' }
const _hoisted_33$h = { class: 'header' }
const _hoisted_34$d = { class: 'content' }
const _hoisted_35$d = /* @__PURE__ */ _withScopeId$2S(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u7EBF\u578B',
-1
)
)
const _hoisted_36$b = { class: 'cms-el-color-picker-x' }
const _hoisted_37$b = { class: 'XAxis-item' }
const _hoisted_38$a = { class: 'header' }
const _hoisted_39$9 = { class: 'content' }
const _hoisted_40$9 = /* @__PURE__ */ _withScopeId$2S(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u7EBF\u578B',
-1
)
)
const _hoisted_41$9 = { class: 'cms-el-color-picker-x' }
const _sfc_main$5$ = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const props2 = reactive($props2.node.props)
const naturalTime = [
'YYYY-MM-DD HH:mm:ss',
'YYYY-MM-DD HH:mm',
'YYYY-MM-DD HH',
'YYYY-MM-DD',
'YYYY-MM',
'YYYY',
'HH:mm:ss',
'HH:mm',
]
const relativeTime = ref(['hh:mm:ss', 'hh:mm', 'mm:ss', 'mm', 'ss'])
const changeDisplayMode = () => {
props2.axisConfig.xAxis.axisLabel.rotate = 0
props2.axisConfig.xAxis.axisLabel.interval = 0
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_color_picker = resolveComponent('el-color-picker')
const _component_el_radio = resolveComponent('el-radio')
const _component_el_radio_group = resolveComponent('el-radio-group')
const _component_el_checkbox = resolveComponent('el-checkbox')
return (
openBlock(),
createBlock(
_sfc_main$72,
{
title: '\u65F6\u95F4\u8F74',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$54, [
createElementVNode('div', _hoisted_2$4g, [
_hoisted_3$3Q,
createElementVNode('div', _hoisted_4$3j, [
_hoisted_5$2$,
createVNode$1(
_component_el_input,
{
modelValue: unref(props2).axisConfig.xAxis.title,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(props2).axisConfig.xAxis.title = $event)),
class: 'cms-el-input-x title-input',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_6$2H, [
_hoisted_7$2l,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x fontFamily',
'popper-class': 'cms-el-select_check',
modelValue: unref(props2).axisConfig.xAxis.fontFamily,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(props2).axisConfig.xAxis.fontFamily =
$event)),
'allow-create': '',
filterable: '',
placeholder: '\u5B57\u4F53',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(fontFamilyList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
hidden: item2.hidden,
},
null,
8,
['label', 'value', 'hidden']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x size',
modelValue: unref(props2).axisConfig.xAxis.fontSize,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(props2).axisConfig.xAxis.fontSize = $event)),
min: 0,
max: 36,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
createElementVNode('div', _hoisted_8$24, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
'model-value': unref(props2).axisConfig.xAxis.color,
onActiveChange:
_cache[3] ||
(_cache[3] = (color2) => {
unref(props2).axisConfig.xAxis.color = color2
}),
},
null,
8,
['predefine', 'model-value']
),
]),
]),
createElementVNode('div', _hoisted_9$1W, [
_hoisted_10$1L,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x fontFamily',
'popper-class': 'cms-el-select_check',
modelValue: unref(props2).axisConfig.xAxis.position,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(props2).axisConfig.xAxis.position = $event)),
'allow-create': '',
filterable: '',
placeholder: '\u8BF7\u9009\u62E9',
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
label: '\u5F00\u5934',
value: 'start',
}),
createVNode$1(_component_el_option, {
label: '\u4E2D\u95F4',
value: 'middle',
}),
createVNode$1(_component_el_option, {
label: '\u672B\u5C3E',
value: 'end',
}),
]),
_: 1,
},
8,
['modelValue']
),
]),
]),
createElementVNode('div', _hoisted_11$1D, [
_hoisted_12$1z,
createElementVNode('div', _hoisted_13$1p, [
_hoisted_14$1f,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x fontFamily',
'popper-class': 'cms-el-select_check',
modelValue:
unref(props2).axisConfig.xAxis.axisLabel.fontFamily,
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) =>
(unref(
props2
).axisConfig.xAxis.axisLabel.fontFamily = $event)),
'allow-create': '',
filterable: '',
placeholder: '\u5B57\u4F53',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(fontFamilyList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
hidden: item2.hidden,
},
null,
8,
['label', 'value', 'hidden']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x size',
modelValue:
unref(props2).axisConfig.xAxis.axisLabel.fontSize,
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) =>
(unref(props2).axisConfig.xAxis.axisLabel.fontSize =
$event)),
min: 0,
max: 36,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
createElementVNode('div', _hoisted_15$1a, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
'model-value':
unref(props2).axisConfig.xAxis.axisLabel.color,
onActiveChange:
_cache[7] ||
(_cache[7] = (color2) => {
unref(props2).axisConfig.xAxis.axisLabel.color =
color2
}),
},
null,
8,
['predefine', 'model-value']
),
]),
]),
]),
createElementVNode('div', _hoisted_16$18, [
_hoisted_17$12,
createElementVNode('div', _hoisted_18$Y, [
createVNode$1(
_component_el_radio_group,
{
class: 'radio-group',
modelValue:
unref(props2).axisConfig.xAxis.axisLabel.displayType,
'onUpdate:modelValue':
_cache[8] ||
(_cache[8] = ($event) =>
(unref(
props2
).axisConfig.xAxis.axisLabel.displayType = $event)),
onChange: changeDisplayMode,
},
{
default: withCtx(() => [
createVNode$1(
_component_el_radio,
{
label: 'auto',
size: 'large',
},
{
default: withCtx(() => [_hoisted_19$U]),
_: 1,
}
),
createVNode$1(
_component_el_radio,
{
label: 'all',
size: 'large',
},
{
default: withCtx(() => [_hoisted_20$O]),
_: 1,
}
),
createVNode$1(
_component_el_radio,
{
label: 'custom',
size: 'large',
},
{
default: withCtx(() => [_hoisted_21$F]),
_: 1,
}
),
]),
_: 1,
},
8,
['modelValue']
),
unref(props2).axisConfig.xAxis.axisLabel.displayType ===
'custom'
? (openBlock(),
createElementBlock('div', _hoisted_22$D, [
createElementVNode('div', _hoisted_23$A, [
_hoisted_24$y,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
modelValue:
unref(props2).axisConfig.xAxis.axisLabel
.rotate,
'onUpdate:modelValue':
_cache[9] ||
(_cache[9] = ($event) =>
(unref(
props2
).axisConfig.xAxis.axisLabel.rotate =
$event)),
min: -90,
max: 90,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_25$t, [
_hoisted_26$q,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
modelValue:
unref(props2).axisConfig.xAxis.axisLabel
.interval,
'onUpdate:modelValue':
_cache[10] ||
(_cache[10] = ($event) =>
(unref(
props2
).axisConfig.xAxis.axisLabel.interval =
$event)),
min: 0,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
]),
]))
: createCommentVNode('', true),
]),
]),
createElementVNode('div', _hoisted_27$p, [
createElementVNode('div', _hoisted_28$n, [
_hoisted_29$k,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x ml-10',
'popper-class': 'cms-el-select_check',
modelValue: unref(props2).naturalTime,
'onUpdate:modelValue':
_cache[11] ||
(_cache[11] = ($event) =>
(unref(props2).naturalTime = $event)),
'allow-create': '',
filterable: '',
placeholder: '\u5B57\u4F53',
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(naturalTime, (item2) => {
return createVNode$1(
_component_el_option,
{
key: item2,
label: item2,
value: item2,
},
null,
8,
['label', 'value']
)
}),
64
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_30$k, [
_hoisted_31$h,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x ml-10',
'popper-class': 'cms-el-select_check',
modelValue: unref(props2).relativeTime,
'onUpdate:modelValue':
_cache[12] ||
(_cache[12] = ($event) =>
(unref(props2).relativeTime = $event)),
'allow-create': '',
filterable: '',
placeholder: '\u5B57\u4F53',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(relativeTime.value, (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2,
label: item2,
value: item2,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
]),
createElementVNode('div', _hoisted_32$h, [
createElementVNode('div', _hoisted_33$h, [
createVNode$1(
_component_el_checkbox,
{
modelValue:
unref(props2).axisConfig.xAxis.axisLine.show,
'onUpdate:modelValue':
_cache[13] ||
(_cache[13] = ($event) =>
(unref(props2).axisConfig.xAxis.axisLine.show =
$event)),
label: '\u663E\u793A\u8F74\u7EBF',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_34$d, [
_hoisted_35$d,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x fontFamily',
'popper-class': 'cms-el-select_check',
modelValue:
unref(props2).axisConfig.xAxis.axisLine.lineStyle
.type,
'onUpdate:modelValue':
_cache[14] ||
(_cache[14] = ($event) =>
(unref(
props2
).axisConfig.xAxis.axisLine.lineStyle.type =
$event)),
'allow-create': '',
filterable: '',
placeholder: '\u7EBF\u578B',
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
label: '\u5B9E\u7EBF',
value: 'solid',
}),
createVNode$1(_component_el_option, {
label: '\u865A\u7EBF',
value: 'dashed',
}),
createVNode$1(_component_el_option, {
label: '\u6591\u70B9',
value: 'dotted',
}),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x size',
modelValue:
unref(props2).axisConfig.xAxis.axisLine.lineStyle
.width,
'onUpdate:modelValue':
_cache[15] ||
(_cache[15] = ($event) =>
(unref(
props2
).axisConfig.xAxis.axisLine.lineStyle.width =
$event)),
min: 0,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
createElementVNode('div', _hoisted_36$b, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
'model-value':
unref(props2).axisConfig.xAxis.axisLine.lineStyle
.color,
onActiveChange:
_cache[16] ||
(_cache[16] = (color2) => {
unref(
props2
).axisConfig.xAxis.axisLine.lineStyle.color =
color2
}),
},
null,
8,
['predefine', 'model-value']
),
]),
]),
]),
createElementVNode('div', _hoisted_37$b, [
createElementVNode('div', _hoisted_38$a, [
createVNode$1(
_component_el_checkbox,
{
modelValue:
unref(props2).axisConfig.xAxis.axisTick.show,
'onUpdate:modelValue':
_cache[17] ||
(_cache[17] = ($event) =>
(unref(props2).axisConfig.xAxis.axisTick.show =
$event)),
label: '\u663E\u793A\u523B\u5EA6',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_39$9, [
_hoisted_40$9,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x fontFamily',
'popper-class': 'cms-el-select_check',
modelValue:
unref(props2).axisConfig.xAxis.axisTick.lineStyle
.type,
'onUpdate:modelValue':
_cache[18] ||
(_cache[18] = ($event) =>
(unref(
props2
).axisConfig.xAxis.axisTick.lineStyle.type =
$event)),
'allow-create': '',
filterable: '',
placeholder: '\u7EBF\u578B',
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
label: '\u5B9E\u7EBF',
value: 'solid',
}),
createVNode$1(_component_el_option, {
label: '\u865A\u7EBF',
value: 'dashed',
}),
createVNode$1(_component_el_option, {
label: '\u6591\u70B9',
value: 'dotted',
}),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x size',
modelValue:
unref(props2).axisConfig.xAxis.axisTick.lineStyle
.width,
'onUpdate:modelValue':
_cache[19] ||
(_cache[19] = ($event) =>
(unref(
props2
).axisConfig.xAxis.axisTick.lineStyle.width =
$event)),
min: 0,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
createElementVNode('div', _hoisted_41$9, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
'model-value':
unref(props2).axisConfig.xAxis.axisTick.lineStyle
.color,
onActiveChange:
_cache[20] ||
(_cache[20] = (color2) => {
unref(
props2
).axisConfig.xAxis.axisTick.lineStyle.color =
color2
}),
},
null,
8,
['predefine', 'model-value']
),
]),
]),
]),
]),
]),
_: 1,
}
)
)
}
},
})
var XAxis = /* @__PURE__ */ _export_sfc(_sfc_main$5$, [
['__scopeId', 'data-v-737a14d6'],
])
var XAxis$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: XAxis,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _hoisted_1$53 = { class: 'chartSettings' }
const config$K = {
category: 'chart',
name: '\u8D8B\u52BF\u66F2\u7EBF',
icon: 'icon-qushijiankong',
permission: false,
styleConfig: {
textDecoration: false,
},
props: {
trendType: '\u8D8B\u52BF\u66F2\u7EBF',
dataType: '\u53D8\u91CF',
customRange: true,
spanSelector: true,
spanValue: 30,
spanUnit: 'min',
businessSegment: 20,
naturalTime: 'HH:mm:ss',
relativeTime: 'mm:ss',
toolbarPosition: 'top',
toolbarShow: 2,
relativeList: [],
queryConditionStyle: {
backgroundColor: '#f1f1f1',
borderColor: 'rgba(0,0,0,0)',
},
toolbarStyle: {
backgroundColor: '#ffffff',
borderColor: '#cdd7de',
},
excelData: {
headers: [],
rows: [],
},
archivingDataTimeRange: [],
realTimeControlString: [],
},
}
const _sfc_main$5_ = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$53, [
createVNode$1(QueryConditions$2, { node: unref(node2) }, null, 8, [
'node',
]),
createVNode$1(SetChart$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Legend, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(XAxis, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(YAxis, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Padding, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Toolbar$4, { node: unref(node2) }, null, 8, ['node']),
])
)
}
},
})
var __glob_2_25 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$K,
default: _sfc_main$5_,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ChartLineTrend_vue_vue_type_style_index_0_scope_true_lang = ''
const _sfc_main$5Z = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
function setOption(option2) {
if (option2.series)
for (const serie of option2.series) {
Object.assign(serie, {
type: 'line',
})
}
}
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
Chart,
mergeProps(
{
node: $props2.node,
},
$props2.node.props,
{ setOption }
),
null,
16,
['node']
)
)
}
},
})
var __glob_2_26 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$5Z,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const config$J = {
category: 'run',
name: '\u8D8B\u52BF\u914D\u7F6E',
icon: 'icon-qushipeizhi',
authorizationRequired: true,
styleConfig: {
color: false,
},
props: {
inputSettings: {
autoSelectAll: true,
keyboard: {
enabled: false,
enterClose: false,
},
},
groupsUpdateTime: new Date().getTime(),
},
}
const _sfc_main$5Y = {}
function _sfc_render$i(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('div')
}
var ChartLineTrendConfig_settings = /* @__PURE__ */ _export_sfc(_sfc_main$5Y, [
['render', _sfc_render$i],
])
var __glob_2_27 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$J,
default: ChartLineTrendConfig_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const TEXT_TYPE = {
text: '\u6587\u672C',
value: 1,
}
const NUMBER_TYPE = {
text: '\u6570\u503C',
value: 2,
}
const TIME_TYPE = {
text: '\u65F6\u95F4',
value: 3,
}
const BusinessLabelTypesMap = {
0: NUMBER_TYPE,
1: NUMBER_TYPE,
2: NUMBER_TYPE,
3: NUMBER_TYPE,
4: NUMBER_TYPE,
5: NUMBER_TYPE,
6: NUMBER_TYPE,
7: NUMBER_TYPE,
8: NUMBER_TYPE,
9: NUMBER_TYPE,
10: NUMBER_TYPE,
11: TIME_TYPE,
12: TIME_TYPE,
13: TIME_TYPE,
14: TEXT_TYPE,
15: TEXT_TYPE,
16: TEXT_TYPE,
17: TEXT_TYPE,
18: TIME_TYPE,
}
const BusinessLabelTypes = {
[NUMBER_TYPE.value]: NUMBER_TYPE.text,
[TIME_TYPE.value]: TIME_TYPE.text,
[TEXT_TYPE.value]: TEXT_TYPE.text,
}
var EditCurveGroup_vue_vue_type_style_index_0_scoped_true_lang = ''
var EditCurveGroup_vue_vue_type_style_index_1_lang = ''
const _withScopeId$2R = (n2) => (
pushScopeId('data-v-34d0923f'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$52 = { class: 'dialog-content' }
const _hoisted_2$4f = { class: 'dialog-item' }
const _hoisted_3$3P = { class: 'flex justify-start' }
const _hoisted_4$3i = { class: 'dialog-item-content' }
const _hoisted_5$2_ = { class: 'dialog-item mt-20 pb-20' }
const _hoisted_6$2G = { class: 'dialog-item__title flex justify-start' }
const _hoisted_7$2k = /* @__PURE__ */ _withScopeId$2R(() =>
/* @__PURE__ */ createElementVNode(
'svg',
{
class: 'icon svg-icon',
'aria-hidden': 'true',
},
[
/* @__PURE__ */ createElementVNode('use', {
'xlink:href': '#icon-peifangguanli',
}),
],
-1
)
)
const _hoisted_8$23 = { class: 'ml-10' }
const _hoisted_9$1V = { class: 'flex justify-start curve-info' }
const _hoisted_10$1K = { class: 'group-config-item flex' }
const _hoisted_11$1C = { class: 'label' }
const _hoisted_12$1y = { class: 'group-config-item flex' }
const _hoisted_13$1o = { class: 'icon-more' }
const _hoisted_14$1e = { class: 'group-config-item flex' }
const _hoisted_15$19 = { class: 'icon-more' }
const _hoisted_16$17 = ['title']
const _hoisted_17$11 = { class: 'dialog-item mt-20 pb-20' }
const _hoisted_18$X = { class: 'flex justify-between' }
const _hoisted_19$T = { class: 'dialog-item__title flex justify-start' }
const _hoisted_20$N = /* @__PURE__ */ _withScopeId$2R(() =>
/* @__PURE__ */ createElementVNode(
'svg',
{
class: 'icon svg-icon',
'aria-hidden': 'true',
},
[
/* @__PURE__ */ createElementVNode('use', {
'xlink:href': '#icon-peifangguanli',
}),
],
-1
)
)
const _hoisted_21$E = { class: 'ml-10' }
const _hoisted_22$C = ['title']
const _hoisted_23$z = { class: 'label-buttons' }
const _hoisted_24$x = /* @__PURE__ */ _withScopeId$2R(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-huamianfangdaxuanfu' },
null,
-1
)
)
const _hoisted_25$s = /* @__PURE__ */ _withScopeId$2R(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-tupianshanchu' },
null,
-1
)
)
const _hoisted_26$p = /* @__PURE__ */ _withScopeId$2R(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-paixu btn-move drag-btn' },
null,
-1
)
)
const _hoisted_27$o = ['onClick']
const _hoisted_28$m = { class: 'dialog-footer' }
const _hoisted_29$j = { class: 'flex justify-end' }
const _hoisted_30$j = { class: 'groups-container' }
const _hoisted_31$g = { class: 'groups-checkbox' }
const _hoisted_32$g = { class: 'note' }
const _hoisted_33$g = { class: 'buttons flex mt-20 justify-end' }
const _sfc_main$5X = /* @__PURE__ */ defineComponent({
props: {
curveGroup: {
type: Object,
default: () => ({
id: 0,
name: '',
type: '\u53D8\u91CF',
datasetId: '',
sortOrder: 0,
frequency: {
type: 's',
value: 1,
},
curves: [
{
id: new Date().toISOString(),
name: '\u66F2\u7EBF1',
color: '#000',
field: '',
yAxis: 'Y1',
group: {
id: new Date().toISOString(),
name: '',
},
},
],
signal: {
draw: {
variable: '',
type: 1,
enable: false,
id: '',
},
clear: {
variable: '',
type: 1,
enable: false,
id: '',
},
},
businessLabel: [],
}),
},
modelValue: {
type: Boolean,
default: false,
},
type: {
type: String,
default: 'add',
},
groups: {
type: Array,
default: () => [],
},
},
emits: ['update:modelValue', 'submitted', 'closed'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
let showDialog = useVModel(props2, 'modelValue', emit2)
let curveGroup = ref(props2.curveGroup)
const handleCloseDialog = () => {
showDialog.value = false
emit2('closed')
}
let tableData2 = ref([])
let businessLabelRaw = []
let showSyncDialog = ref(false)
let selectedGroups = ref([])
let langUpdateTime = ref(new Date().getTime())
Language$1.useChange(() => {
langUpdateTime.value = new Date().getTime()
})
const realTimeDrawingOptions = ref([
{
label: '\u53D8\u771F',
value: 1,
},
{
label: '\u53D8\u5047',
value: 2,
},
{
label: '\u771F\u5047\u53D8\u5316',
value: 3,
},
{
label: '\u503C\u53D8\u5316',
value: 4,
},
])
const handleShowSync = () => {
const selectedBusinessLabel = xTable.value.getCheckboxRecords()
if (selectedBusinessLabel.length === 0) {
toast(
Language$1._t(
'\u8BF7\u9009\u62E9\u8981\u540C\u6B65\u7684\u6807\u7B7E'
),
'warning'
)
return
}
selectedGroups.value = []
showSyncDialog.value = true
}
const handleSyncGroups = () => {
if (selectedGroups.value.length === 0) {
toast(
Language$1._t(
'\u8BF7\u9009\u62E9\u8981\u540C\u6B65\u7684\u5206\u7EC4'
),
'warning'
)
return
}
syncBusinessLabel({
curveBusinessLabels: xTable.value.getCheckboxRecords(),
curveGroupIds: selectedGroups.value,
}).then(() => {
toast(Language$1._t('\u540C\u6B65\u6210\u529F'), 'success')
showSyncDialog.value = false
})
}
const ruleFormRef = ref()
const submitForm = async (formEl) => {
if (!formEl) return
await formEl.validate(async (valid) => {
if (valid) {
const errorMap = await xTable.value.validate(true)
if (!errorMap) {
const businessLabel = tableData2.value
businessLabel.forEach((item2, index2) => {
businessLabel[index2].sortOrder = index2
})
const curveBusinessLabelToSave = businessLabel
.filter((item2) => item2._new)
.map((item2) => ({
curveGroupId: curveGroup.value.id,
name: item2.name,
tagName: item2.tagName,
type: item2.type,
isRealTime: item2.isRealTime,
isHistory: item2.isHistory,
isAttachAnnotation: item2.isAttachAnnotation,
sortOrder: item2.sortOrder,
}))
const curveBusinessLabelToUpdate = businessLabel
.filter((item2) => !item2._new)
.map((item2) => {
return {
id: item2.id,
curveGroupId: curveGroup.value.id,
name: item2.name,
tagName: item2.tagName,
type: item2.type,
isRealTime: item2.isRealTime,
isHistory: item2.isHistory,
isAttachAnnotation: item2.isAttachAnnotation,
sortOrder: item2.sortOrder,
}
})
const businessLabelIds = businessLabel.map((item2) => item2.id)
const curveBusinessLabelToDelete = businessLabelRaw
.filter((item2) => !businessLabelIds.includes(item2.id))
.map((item2) => item2.id)
const curveGroupData = {
name: curveGroup.value.name,
sortOrder: curveGroup.value.sortOrder,
realTimeRenderFreq: curveGroup.value.frequency.value,
realTimeRenderFreqUnit: curveGroup.value.frequency.type,
realTimeSignalEnabled: curveGroup.value.signal.draw.enable,
realTimeRenderSignal: curveGroup.value.signal.draw.variable,
realTimeRenderSignalRule: curveGroup.value.signal.draw.type,
realTimeClearSignal: curveGroup.value.signal.clear.variable,
realTimeClearSignalRule: curveGroup.value.signal.clear.type,
}
if (props2.type === 'add') {
addCurveGroup({
curveBusinessLabelToSave,
curveGroupToSave: curveGroupData,
}).then((res) => {
if (!res) {
toast(Language$1._t('\u4FDD\u5B58\u6210\u529F'), 'success')
emit2('submitted', curveGroup.value.id)
handleCloseDialog()
}
})
} else if (props2.type === 'edit') {
addCurveGroup({
curveBusinessLabelToSave,
curveBusinessLabelToUpdate,
curveBusinessLabelToDelete,
curveGroupToUpdate: {
...curveGroupData,
id: curveGroup.value.id,
createTime: curveGroup.value.createTime,
},
}).then((res) => {
if (!res) {
toast(Language$1._t('\u4FDD\u5B58\u6210\u529F'), 'success')
emit2('submitted', curveGroup.value.id)
handleCloseDialog()
}
})
}
} else {
toast(errorMap.name[0].rule.$options.content, 'error')
}
} else {
toast(Language$1._t('\u68C0\u9A8C\u5931\u8D25'), 'error')
}
})
}
let selectedLabelRow = ref(null)
const validVxeRules = ref({
name: [
{
required: true,
message: Language$1._t('\u6807\u7B7E\u540D\u4E0D\u80FD\u4E3A\u7A7A'),
},
{
message: Language$1._t('\u6807\u7B7E\u540D\u5DF2\u5B58\u5728'),
validator({ cellValue }) {
return new Promise((resolve2, reject2) => {
setTimeout(() => {
if (
cellValue &&
tableData2.value.filter((item2) => item2.name === cellValue)
.length > 1
) {
reject2(
new Error(
Language$1._t(
'\u5B58\u5728\u76F8\u540C\u6807\u7B7E\u540D'
)
)
)
} else {
resolve2(void 0)
}
}, 100)
})
},
},
],
})
const xTable = ref()
let showVariate = ref(false)
let isMultiple2 = ref(false)
let checkedVariateNames = ref([])
let disabledVariateNames = ref([])
const handleVariateConfirm = (data2) => {
if (currentVariateType.value === 'ADD') {
const tableDataClone = lodash$2.exports.cloneDeep(tableData2.value)
data2.forEach((item2) => {
if (
!lodash$2.exports.find(tableData2.value, { tagName: item2.name })
) {
tableDataClone.push({
name: item2.description || item2.name,
tagName: item2.name,
type: BusinessLabelTypesMap[item2.type].value,
isRealTime: false,
isHistory: false,
isAttachAnnotation: false,
curveGroupId: curveGroup.value.id,
sortOrder: 0,
_new: true,
})
tableData2.value = tableDataClone
}
})
} else if (currentVariateType.value === 'MODIFY') {
const row = lodash$2.exports.find(tableData2.value, {
tagName: selectedLabelRow.value.tagName,
})
if (row && data2.length > 0) {
let item2 = data2[0]
row.name = item2.description || item2.name
row.tagName = item2.name
row.type = BusinessLabelTypesMap[item2.type].value
}
} else if (currentVariateType.value === 'DRAW' && data2.length) {
curveGroup.value.signal.draw.variable = data2[0].name
curveGroup.value.signal.draw.id = data2[0].id
} else if (currentVariateType.value === 'CLEAR' && data2.length) {
curveGroup.value.signal.clear.variable = data2[0].name
curveGroup.value.signal.clear.id = data2[0].id
}
showVariate.value = false
}
const handleAddBusinessLabel = () => {
showVariate.value = true
isMultiple2.value = true
checkedVariateNames.value = xTable.value
.getTableData()
.tableData.map((item2) => item2.tagName)
disabledVariateNames.value = checkedVariateNames.value
}
const handleChangeVariate = (row) => {
selectedLabelRow.value = row
showVariate.value = true
isMultiple2.value = false
checkedVariateNames.value = xTable.value
.getTableData()
.tableData.map((item2) => item2.tagName)
disabledVariateNames.value = checkedVariateNames.value.filter(
(id2) => id2 != row.tagName
)
}
let currentVariateType = ref('MODIFY')
const handleShowVariate = (type4, row = null) => {
currentVariateType.value = type4
switch (type4) {
case 'MODIFY':
handleChangeVariate(row)
break
case 'ADD':
handleAddBusinessLabel()
break
case 'DRAW':
showVariate.value = true
isMultiple2.value = false
checkedVariateNames.value = [curveGroup.value.signal.draw.variable]
break
case 'CLEAR':
showVariate.value = true
isMultiple2.value = false
checkedVariateNames.value = [curveGroup.value.signal.clear.variable]
break
}
}
const sortableInit = (el2) => {
setTimeout(() => {
Sortable.create(el2, {
handle: '.drag-btn',
chosenClass: 'sortable-chosen',
swapThreshold: 1,
animation: 150,
onEnd: (sortableEvent) => {
const newIndex2 = sortableEvent.newIndex
const oldIndex2 = sortableEvent.oldIndex
const currRow = tableData2.value.splice(oldIndex2, 1)[0]
tableData2.value.splice(newIndex2, 0, currRow)
},
})
})
}
const queryBusinessLabelList = () => {
if (props2.curveGroup.id !== 0) {
getBusinessLabelByGroupId(props2.curveGroup.id).then((res) => {
tableData2.value = res
businessLabelRaw = res
nextTick(() => {
sortableInit(
xTable.value.$el.querySelector(
'.drag-table .body--wrapper>.vxe-table--body tbody'
)
)
})
})
}
}
onMounted(() => {
queryBusinessLabelList()
})
const handleFrequencyTypeChange = (val2) => {
if (val2 === 'ms') {
if (curveGroup.value.frequency.value % 50 !== 0) {
if (curveGroup.value.frequency.value < 50) {
curveGroup.value.frequency.value = 1e3
} else {
curveGroup.value.frequency.value =
50 * Math.round(curveGroup.value.frequency.value / 50)
}
}
}
}
const frequencyInput = ref()
const handleFrequencyValueChange = (val2) => {
setTimeout(() => {
if (curveGroup.value.frequency.type === 'ms') {
if (val2 % 50 !== 0) {
if (val2 < 50) {
curveGroup.value.frequency.value = 1e3
} else {
curveGroup.value.frequency.value = 50 * Math.round(val2 / 50)
}
}
}
})
}
const handleRealtimeChange = (val2, id2) => {
if (val2) {
xTable.value.getTableData().tableData.map((item2) => {
if (item2.id !== id2) {
item2.isRealTime = false
}
})
}
}
const handleRemoveRow = () => {
const selectedRows = xTable.value.getCheckboxRecords()
if (selectedRows.length === 0) {
return toast(
Language$1._t(
'\u8BF7\u9009\u62E9\u8981\u79FB\u9664\u7684\u4E1A\u52A1\u6807\u7B7E'
),
'warning'
)
}
const tableDataClone = lodash$2.exports.cloneDeep(tableData2.value)
selectedRows.forEach((row) => {
const index2 = tableDataClone.findIndex(
(item2) => item2.name === row.name
)
tableDataClone.splice(index2, 1)
})
tableData2.value = tableDataClone
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_button = resolveComponent('el-button')
const _component_vxe_column = resolveComponent('vxe-column')
const _component_vxe_input = resolveComponent('vxe-input')
const _component_vxe_table = resolveComponent('vxe-table')
const _component_el_form = resolveComponent('el-form')
const _component_el_dialog = resolveComponent('el-dialog')
const _component_el_checkbox_group = resolveComponent('el-checkbox-group')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
_component_el_dialog,
{
modelValue: unref(showDialog),
'onUpdate:modelValue':
_cache[12] ||
(_cache[12] = ($event) =>
isRef(showDialog)
? (showDialog.value = $event)
: (showDialog = $event)),
'custom-class': '--user-dialog edit-curve-config',
'show-close': false,
width: '1450px',
},
{
title: withCtx(() => [
createElementVNode(
'span',
null,
toDisplayString$1(
_ctx._t(
props2.type === 'add'
? '\u65B0\u589E\u66F2\u7EBF\u7EC4'
: '\u7F16\u8F91\u66F2\u7EBF\u7EC4'
)
),
1
),
]),
default: withCtx(() => [
createVNode$1(
_component_el_form,
{
ref_key: 'ruleFormRef',
ref: ruleFormRef,
model: curveGroup.value,
'label-width': '100px',
class: 'demo-ruleForm',
'status-icon': '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$52, [
createElementVNode('div', _hoisted_2$4f, [
createElementVNode('div', _hoisted_3$3P, [
createElementVNode('div', _hoisted_4$3i, [
createVNode$1(
_component_el_form_item,
{
label: _ctx._t(
'\u66F2\u7EBF\u7EC4\u540D\u79F0'
),
prop: 'name',
width: '140',
class: 'curve-group-name',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
class: '--scms-input',
modelValue: curveGroup.value.name,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(curveGroup.value.name = $event)),
placeholder: _ctx._t(
'\u8BF7\u8F93\u5165\u66F2\u7EBF\u7EC4\u540D\u79F0'
),
},
null,
8,
['modelValue', 'placeholder']
),
]),
_: 1,
},
8,
['label']
),
]),
]),
]),
createElementVNode('div', _hoisted_5$2_, [
createElementVNode('div', _hoisted_6$2G, [
_hoisted_7$2k,
createElementVNode(
'span',
_hoisted_8$23,
toDisplayString$1(
_ctx._t('\u5B9E\u65F6\u66F2\u7EBF')
),
1
),
]),
createElementVNode('div', _hoisted_9$1V, [
createElementVNode('div', _hoisted_10$1K, [
createElementVNode(
'div',
_hoisted_11$1C,
toDisplayString$1(
_ctx._t(
'\u5B9E\u65F6\u7ED8\u5236\u9891\u7387'
)
) + '\uFF1A',
1
),
createVNode$1(
_component_el_input_number,
{
ref_key: 'frequencyInput',
ref: frequencyInput,
modelValue: curveGroup.value.frequency.value,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(curveGroup.value.frequency.value =
$event)),
class:
'--scms-input --scms-input-bottom width-100 mr-10',
'controls-position': 'right',
onChange: handleFrequencyValueChange,
min: '1',
step:
curveGroup.value.frequency.type === 'ms'
? 50
: 1,
precision: 0,
},
null,
8,
['modelValue', 'step']
),
createVNode$1(
_component_el_select,
{
modelValue: curveGroup.value.frequency.type,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(curveGroup.value.frequency.type =
$event)),
class: '--scms-select width-80 mr-10',
'popper-class': '--scms-select_poper',
onChange: handleFrequencyTypeChange,
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
label: 'ms',
value: 'ms',
}),
createVNode$1(_component_el_option, {
label: 's',
value: 's',
}),
createVNode$1(_component_el_option, {
label: 'min',
value: 'min',
}),
createVNode$1(_component_el_option, {
label: 'h',
value: 'h',
}),
]),
_: 1,
},
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_12$1y, [
createVNode$1(
_component_el_checkbox,
{
label: _ctx._t(
'\u5B9E\u65F6\u66F2\u7EBF\u7ED8\u5236\u4FE1\u53F7'
),
class: 'mr-10',
modelValue:
curveGroup.value.signal.draw.enable,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(curveGroup.value.signal.draw.enable =
$event)),
size: 'large',
},
null,
8,
['label', 'modelValue']
),
createVNode$1(
_component_el_input,
{
modelValue:
curveGroup.value.signal.draw.variable,
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) =>
(curveGroup.value.signal.draw.variable =
$event)),
class:
'--scms-input --scms-input-bottom width-100 mr-10',
'controls-position': 'right',
readonly: '',
title: curveGroup.value.signal.draw.variable,
'data-tooltip-placement': 'top',
},
{
append: withCtx(() => [
createElementVNode('span', _hoisted_13$1o, [
createElementVNode('i', {
class: 'iconfont icon-gengduo2',
onClick:
_cache[4] ||
(_cache[4] = ($event) =>
handleShowVariate('DRAW')),
}),
]),
]),
_: 1,
},
8,
['modelValue', 'title']
),
createVNode$1(
_component_el_select,
{
modelValue: curveGroup.value.signal.draw.type,
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) =>
(curveGroup.value.signal.draw.type =
$event)),
class: '--scms-select width-100 mr-10',
'popper-class': '--scms-select_poper',
title: _ctx._t(
realTimeDrawingOptions.value[
curveGroup.value.signal.draw.type - 1
].label
),
'data-tooltip-placement': 'top',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
realTimeDrawingOptions.value,
(item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: _ctx._t(item2.label),
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 1,
},
8,
['modelValue', 'title']
),
]),
createElementVNode('div', _hoisted_14$1e, [
createElementVNode(
'span',
null,
toDisplayString$1(
_ctx._t(
'\u5B9E\u65F6\u66F2\u7EBF\u6E05\u9664\u4FE1\u53F7'
)
),
1
),
createVNode$1(
_component_el_input,
{
modelValue:
curveGroup.value.signal.clear.variable,
'onUpdate:modelValue':
_cache[8] ||
(_cache[8] = ($event) =>
(curveGroup.value.signal.clear.variable =
$event)),
class:
'--scms-input --scms-input-bottom width-100 mr-10 ml-10',
'controls-position': 'right',
readonly: '',
title: curveGroup.value.signal.clear.variable,
'data-tooltip-placement': 'top',
},
{
append: withCtx(() => [
createElementVNode('span', _hoisted_15$19, [
createElementVNode('i', {
class: 'iconfont icon-gengduo2',
onClick:
_cache[7] ||
(_cache[7] = ($event) =>
handleShowVariate('CLEAR')),
}),
]),
]),
_: 1,
},
8,
['modelValue', 'title']
),
createVNode$1(
_component_el_select,
{
modelValue:
curveGroup.value.signal.clear.type,
'onUpdate:modelValue':
_cache[9] ||
(_cache[9] = ($event) =>
(curveGroup.value.signal.clear.type =
$event)),
class: '--scms-select width-100 mr-10',
'popper-class': '--scms-select_poper',
title: _ctx._t(
realTimeDrawingOptions.value[
curveGroup.value.signal.clear.type - 1
].label
),
'data-tooltip-placement': 'top',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
realTimeDrawingOptions.value,
(item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: _ctx._t(item2.label),
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 1,
},
8,
['modelValue', 'title']
),
createElementVNode(
'i',
{
class:
'padding-head-icon iconfont icon-tishi2',
'data-tooltip-raw-content': 'true',
title: _ctx._t(
'\u5F00\u542F\u901A\u8FC7\u4FE1\u53F7\u52A8\u6001\u7ED8\u5236\u5B9E\u65F6\u66F2\u7EBF\u529F\u80FD\uFF0C\u6E05\u9664\u4FE1\u53F7\u89E6\u53D1\u65F6\uFF0C
\u5B9E\u65F6\u66F2\u7EBF\u6E05\u9664\uFF0C\u7ED8\u5236\u4FE1\u53F7\u89E6\u53D1\u65F6\uFF0C\u91CD\u65B0\u5F00\u59CB\u7ED8\u5236'
),
},
null,
8,
_hoisted_16$17
),
]),
]),
]),
createElementVNode('div', _hoisted_17$11, [
createElementVNode('div', _hoisted_18$X, [
createElementVNode('div', _hoisted_19$T, [
_hoisted_20$N,
createElementVNode('span', _hoisted_21$E, [
createTextVNode(
toDisplayString$1(
_ctx._t('\u4E1A\u52A1\u6807\u7B7E')
),
1
),
createElementVNode(
'i',
{
class:
'padding-head-icon iconfont icon-tishi2 ml-10',
'data-tooltip-raw-content': 'true',
title: _ctx._t(
'\u5BF9\u65F6\u5E8F\u6570\u636E\u8FDB\u884C\u4E1A\u52A1\u6807\u8BB0\uFF0C\u540E\u7EED\u53EF\u67E5\u8BE2\u5BF9\u5E94\u4E1A\u52A1\u65F6\u6BB5\u7684\u6570\u636E\uFF0C
\u5982\u67E5\u8BE2\u6279\u6B21\u53F7001\u5BF9\u5E94\u65F6\u6BB5\u7684\u8D8B\u52BF\u6570\u636E'
),
},
null,
8,
_hoisted_22$C
),
]),
]),
createElementVNode('div', _hoisted_23$z, [
createVNode$1(
_component_el_button,
{
onClick:
_cache[10] ||
(_cache[10] = ($event) =>
handleShowVariate('ADD')),
},
{
default: withCtx(() => [
_hoisted_24$x,
createTextVNode(
toDisplayString$1(
_ctx._t('\u6DFB\u52A0')
),
1
),
]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn-delete',
onClick: handleRemoveRow,
},
{
default: withCtx(() => [
_hoisted_25$s,
createTextVNode(
toDisplayString$1(
_ctx._t('\u5220\u9664')
),
1
),
]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{ onClick: handleShowSync },
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(
_ctx._t('\u540C\u6B65\u81F3')
),
1
),
]),
_: 1,
}
),
]),
]),
createVNode$1(
_component_vxe_table,
{
class: 'mt-20 drag-table',
ref_key: 'xTable',
ref: xTable,
border: '',
data: tableData2.value,
align: 'center',
height: '300px',
'max-height': '300px',
'row-config': { isHover: true },
'valid-config': { showMessage: false },
'edit-rules': validVxeRules.value,
'edit-config': {
trigger: 'click',
mode: 'cell',
showIcon: false,
autoClear: true,
langUpdateTime: langUpdateTime.value,
},
'empty-text': _ctx._t('\u6682\u65E0\u6570\u636E'),
},
{
default: withCtx(() => [
createVNode$1(
_component_vxe_column,
{
width: '45',
title: '',
align: 'center',
},
{
default: withCtx(() => [_hoisted_26$p]),
_: 1,
}
),
createVNode$1(_component_vxe_column, {
type: 'checkbox',
width: '35',
}),
createVNode$1(
_component_vxe_column,
{
title: _ctx._t('\u6807\u7B7E\u540D'),
width: '260',
field: 'name',
'edit-render': {
autofocus: '.vxe-input--inner',
placeholder: _ctx._t(
'\u8BF7\u8F93\u5165\u6807\u7B7E\u540D'
),
},
},
{
default: withCtx(({ row }) => [
createTextVNode(
toDisplayString$1(_ctx.t(row.name)),
1
),
]),
edit: withCtx((scope) => [
createVNode$1(
_component_vxe_input,
{
type: 'text',
modelValue: scope.row.name,
'onUpdate:modelValue': ($event) =>
(scope.row.name = $event),
placeholder: _ctx._t(
'\u8BF7\u8F93\u5165\u6807\u7B7E\u540D'
),
onChange: ($event) =>
xTable.value.updateStatus(scope),
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
'placeholder',
'onChange',
]
),
]),
_: 1,
},
8,
['title', 'edit-render']
),
createVNode$1(
_component_vxe_column,
{
title: _ctx._t('\u53D8\u91CF\u540D'),
width: '200',
},
{
default: withCtx(({ row }) => [
createVNode$1(
_component_el_input,
{
modelValue: row.tagName,
'onUpdate:modelValue': ($event) =>
(row.tagName = $event),
class:
'--scms-input --scms-input-bottom',
'controls-position': 'right',
readonly: '',
},
{
append: withCtx(() => [
createElementVNode(
'i',
{
class:
'iconfont icon-bianjigongcheng btn-edit',
onClick: ($event) =>
handleShowVariate(
'MODIFY',
row
),
},
null,
8,
_hoisted_27$o
),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue']
),
]),
_: 1,
},
8,
['title']
),
createVNode$1(
_component_vxe_column,
{
title: _ctx._t('\u7C7B\u578B'),
},
{
default: withCtx(({ row }) => [
createTextVNode(
toDisplayString$1(
_ctx._t(
unref(BusinessLabelTypes)[row.type]
)
),
1
),
]),
_: 1,
},
8,
['title']
),
createVNode$1(
_component_vxe_column,
{
title: _ctx._t(
'\u5E94\u75281\uFF1A\u5B9E\u65F6\u66F2\u7EBF\u7ED8\u5236'
),
width: '220',
},
{
default: withCtx(({ row }) => [
createVNode$1(
_component_el_checkbox,
{
modelValue: row.isRealTime,
'onUpdate:modelValue': ($event) =>
(row.isRealTime = $event),
onChange: (val2) =>
handleRealtimeChange(val2, row.id),
size: 'large',
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
'onChange',
]
),
]),
_: 1,
},
8,
['title']
),
createVNode$1(
_component_vxe_column,
{
title: _ctx._t(
'\u5E94\u75282\uFF1A\u5386\u53F2\u66F2\u7EBF\u7ED8\u5236'
),
width: '220',
},
{
default: withCtx(({ row }) => [
createVNode$1(
_component_el_checkbox,
{
modelValue: row.isHistory,
'onUpdate:modelValue': ($event) =>
(row.isHistory = $event),
size: 'large',
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
]),
_: 1,
},
8,
['title']
),
createVNode$1(
_component_vxe_column,
{
title: _ctx._t(
'\u5E94\u75283\uFF1A\u9644\u52A0\u66F2\u7EBF\u6807\u6CE8'
),
width: '220',
},
{
default: withCtx(({ row }) => [
createVNode$1(
_component_el_checkbox,
{
modelValue: row.isAttachAnnotation,
'onUpdate:modelValue': ($event) =>
(row.isAttachAnnotation = $event),
size: 'large',
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
]),
_: 1,
},
8,
['title']
),
]),
_: 1,
},
8,
['data', 'edit-rules', 'edit-config', 'empty-text']
),
]),
]),
createElementVNode('div', _hoisted_28$m, [
createElementVNode('div', _hoisted_29$j, [
createVNode$1(
_component_el_button,
{ onClick: handleCloseDialog },
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx._t('\u53D6\u6D88')),
1
),
]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
type: 'primary',
onClick:
_cache[11] ||
(_cache[11] = ($event) =>
submitForm(ruleFormRef.value)),
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx._t('\u4FDD\u5B58')),
1
),
]),
_: 1,
}
),
]),
]),
]),
_: 1,
},
8,
['model']
),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_dialog,
{
'show-close': false,
'custom-class': '--user-dialog',
modelValue: showSyncDialog.value,
'onUpdate:modelValue':
_cache[15] ||
(_cache[15] = ($event) => (showSyncDialog.value = $event)),
'append-to-body': true,
width: '300px',
},
{
title: withCtx(() => [
createElementVNode(
'span',
null,
toDisplayString$1(_ctx._t('\u540C\u6B65\u81F3')),
1
),
]),
default: withCtx(() => [
createElementVNode('div', _hoisted_30$j, [
createTextVNode(
toDisplayString$1(
_ctx._t('\u5C06\u6807\u7B7E\u540C\u6B65\u81F3')
) + ' ',
1
),
createElementVNode('div', _hoisted_31$g, [
createVNode$1(
_component_el_checkbox_group,
{
modelValue: selectedGroups.value,
'onUpdate:modelValue':
_cache[13] ||
(_cache[13] = ($event) =>
(selectedGroups.value = $event)),
},
{
default: withCtx(() => [
createElementVNode('ul', null, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(props2.groups, (group, index2) => {
return (
openBlock(),
createElementBlock('li', { key: index2 }, [
createVNode$1(
_component_el_checkbox,
{
label: group.id,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(
_ctx.t(group.name)
),
1
),
]),
_: 2,
},
1032,
['label']
),
])
)
}),
128
)),
]),
]),
_: 1,
},
8,
['modelValue']
),
]),
createElementVNode(
'span',
_hoisted_32$g,
toDisplayString$1(
_ctx._t(
'\u6CE8\uFF1A\u82E5\u540C\u6B65\u5206\u7EC4\uFF0C\u5C06\u5168\u91CF\u66FF\u6362\u5176\u6807\u7B7E\u914D\u7F6E\uFF0C\u539F\u6807\u7B7E\u6570\u636E\u5C06\u88AB\u6E05\u9664'
)
),
1
),
]),
createElementVNode('div', _hoisted_33$g, [
createVNode$1(
_component_el_button,
{
onClick:
_cache[14] ||
(_cache[14] = ($event) =>
(showSyncDialog.value = false)),
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx._t('\u53D6\u6D88')),
1
),
]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
type: 'primary',
onClick: handleSyncGroups,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx._t('\u786E\u8BA4')),
1
),
]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
),
showVariate.value
? (openBlock(),
createBlock(
_sfc_main$6Q,
{
key: 0,
data: { name: checkedVariateNames.value },
visible: showVariate.value,
'is-append-to-body': true,
'is-multiple': isMultiple2.value,
'disabled-names': disabledVariateNames.value,
onConfirm: handleVariateConfirm,
onCancel:
_cache[16] ||
(_cache[16] = ($event) => (showVariate.value = false)),
},
null,
8,
['data', 'visible', 'is-multiple', 'disabled-names']
))
: createCommentVNode('', true),
])
)
}
},
})
var EditCurveGroup = /* @__PURE__ */ _export_sfc(_sfc_main$5X, [
['__scopeId', 'data-v-34d0923f'],
])
var EditCurveGroup$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: EditCurveGroup,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var CurveDefine_vue_vue_type_style_index_0_scoped_true_lang = ''
var CurveDefine_vue_vue_type_style_index_1_lang = ''
const _withScopeId$2Q = (n2) => (
pushScopeId('data-v-22491880'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$51 = { class: 'flex content-start config-container' }
const _hoisted_2$4e = { class: 'card-header flex justify-between' }
const _hoisted_3$3O = { class: 'add-new-btn' }
const _hoisted_4$3h = { class: 'tree-container' }
const _hoisted_5$2Z = ['onClick']
const _hoisted_6$2F = /* @__PURE__ */ _withScopeId$2Q(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'icon icon-circle' },
null,
-1
)
)
const _hoisted_7$2j = { class: 'title' }
const _hoisted_8$22 = ['onMouseenter']
const _hoisted_9$1U = /* @__PURE__ */ _withScopeId$2Q(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-gengduo menu' },
null,
-1
)
)
const _hoisted_10$1J = [_hoisted_9$1U]
const _hoisted_11$1B = { class: 'popover-menus' }
const _hoisted_12$1x = { class: 'flex content-end search-group' }
const _hoisted_13$1n = { class: 'config-right flex-1 flex flex-col' }
const _hoisted_14$1d = { class: 'curve-config flex justify-between' }
const _hoisted_15$18 = { class: 'flex justify-start' }
const _hoisted_16$16 = /* @__PURE__ */ _withScopeId$2Q(() =>
/* @__PURE__ */ createElementVNode(
'svg',
{
class: 'icon svg-icon',
'aria-hidden': 'true',
},
[
/* @__PURE__ */ createElementVNode('use', {
'xlink:href': '#icon-peifangguanli',
}),
],
-1
)
)
const _hoisted_17$10 = { class: 'ml-10' }
const _hoisted_18$W = { class: 'flex' }
const _hoisted_19$S = /* @__PURE__ */ _withScopeId$2Q(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-paixu btn-move drag-btn' },
null,
-1
)
)
const _hoisted_20$M = { class: 'vxe-cell--label' }
const _hoisted_21$D = { class: 'flex' }
const _hoisted_22$B = ['onClick']
const _hoisted_23$y = { class: 'flex justify-start' }
const _hoisted_24$w = { class: 'groups-checkbox' }
const _hoisted_25$r = { class: 'buttons flex mt-20 justify-end' }
const _sfc_main$5W = /* @__PURE__ */ defineComponent({
props: {
node: {
type: CanvasNode$1,
default: '',
},
permissionBtns: {
type: Array,
default: () => [],
},
},
emits: ['languageTextChange'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const curveColorList = [
'#1A7CF9',
'#3AC53C',
'#FA922A',
'#7E7DFB',
'#60B2FF',
'#FF8DAF',
'#9E9CFF',
'#6DEAB5',
]
let keyword = ref('')
let groups = ref([])
let otherGroups = ref([])
const filterText = ref('')
const treeRef = ref()
let showVariate = ref(false)
let isMultiple2 = ref(false)
const node2 = reactive(props2.node)
const checkedVariateNames = computed(() => {
return tableData2.value.map((item2) => item2.tagName)
})
let showEditCurveGroup = ref(false)
let editCurveGroupData = ref()
watch$1(
() => filterText.value,
(val2) => {
treeRef.value?.filter(val2)
}
)
const t3 = Language$1.t
let labels = []
const collectLanguageNames = () => {
let names2 = []
groups.value.forEach(async (item2) => {
names2.push(item2.name)
if (item2.curves?.length && item2.id !== selectedCurveGroup.value?.id) {
item2.curves.forEach((curve) => {
names2.push(curve.name)
})
}
})
tableData2.value.forEach((item2) => {
names2.push(item2.name)
})
labels.forEach((name2) => {
names2.push(name2)
})
names2.forEach((name2) => t3(name2))
return names2
}
const queryAllLabels = async () => {
labels = []
let p2 = []
groups.value.forEach(async (group) => {
p2.push(getBusinessLabelByGroupId(group.id))
})
let result = await Promise.all(p2)
result.forEach((item2) => {
item2.forEach((label) => {
labels.push(label.name)
})
})
}
let langUpdateTime = computed(() => {
return node2.props.groupsUpdateTime
})
Language$1.useChange(() => {
node2.props.groupsUpdateTime = new Date().getTime()
})
const queryCurveGroups = async (groupId) => {
const res = await getCurveGroup()
groups.value = res
if (groups.value.length) {
if (groupId === 0) {
selectedCurveGroup.value = lodash$2.exports.last(groups.value)
} else if (groupId) {
selectedCurveGroup.value = lodash$2.exports.find(groups.value, {
id: groupId,
})
} else {
selectedCurveGroup.value = groups.value[0]
}
await queryAllLabels()
emit2('languageTextChange', collectLanguageNames())
currentHoverGroup.value = selectedCurveGroup.value
queryCurves(selectedCurveGroup.value.id)
}
}
const queryCurves = (groupId) => {
getCurveByGroupId(groupId, keyword.value).then((res) => {
tableData2.value = res
emit2('languageTextChange', collectLanguageNames())
nextTick(() => {
sortableInit(
xTable.value.$el.querySelector(
'.drag-table .body--wrapper>.vxe-table--body tbody'
)
)
})
})
}
let curveGroupDialogType = ref('add')
const addGroup = (type4 = 'add') => {
if (!props2.permissionBtns.includes(`curveGroup-${type4}`)) {
ElMessage.warning(
Language$1._t('\u7528\u6237\u6CA1\u6709\u8BE5\u6743\u9650\uFF01')
)
return
}
curveGroupDialogType.value = type4
if (type4 === 'add') {
const lastSortOrder =
lodash$2.exports.last(groups.value)?.sortOrder ?? 0
editCurveGroupData.value = {
id: 0,
name: '',
type: '\u53D8\u91CF',
datasetId: '',
sortOrder: lastSortOrder + 1,
frequency: {
enable: false,
type: 's',
value: 1,
},
curves: [],
signal: {
draw: {
variable: '',
type: 1,
enable: false,
id: '',
},
clear: {
variable: '',
type: 1,
enable: false,
id: '',
},
},
}
} else if (type4 === 'edit') {
editCurveGroupData.value = {
id: currentHoverGroup.value.id,
name: currentHoverGroup.value.name,
sortOrder: currentHoverGroup.value.sortOrder,
type: '\u53D8\u91CF',
datasetId: '',
frequency: {
enable: false,
type: currentHoverGroup.value.realTimeRenderFreqUnit,
value: currentHoverGroup.value.realTimeRenderFreq,
},
curves: [],
signal: {
draw: {
variable: currentHoverGroup.value.realTimeRenderSignal,
type: currentHoverGroup.value.realTimeRenderSignalRule,
enable: currentHoverGroup.value.realTimeSignalEnabled,
id: '',
},
clear: {
variable: currentHoverGroup.value.realTimeClearSignal,
type: currentHoverGroup.value.realTimeClearSignalRule,
enable: currentHoverGroup.value.realTimeSignalEnabled,
id: '',
},
},
}
}
otherGroups.value = groups.value.filter(
(item2) => item2.id !== currentHoverGroup.value.id
)
showEditCurveGroup.value = true
}
let selectedCurveGroup = ref({
id: 0,
createTime: '',
updateTime: '',
name: '',
sortOrder: 0,
realTimeRenderFreq: 0,
realTimeRenderFreqUnit: '',
realTimeSignalEnabled: true,
realTimeRenderSignal: '',
realTimeRenderSignalRule: 1,
realTimeClearSignal: '',
realTimeClearSignalRule: 1,
curves: [],
})
const selectCurveGroup = (data2) => {
selectedCurveGroup.value = data2
queryCurves(selectedCurveGroup.value.id)
}
let tableData2 = ref([])
const xTable = ref()
const validVxeRules = ref({
name: [
{
required: true,
message: _t('\u66F2\u7EBF\u540D\u4E0D\u80FD\u4E3A\u7A7A'),
trigger: 'change',
},
],
})
const handleCommand = (data2) => {
const fun = {
edit: () => {
addGroup('edit')
},
copy: async () => {
if (!props2.permissionBtns.includes('curveGroup-copy')) {
ElMessage.warning(
Language$1._t('\u7528\u6237\u6CA1\u6709\u8BE5\u6743\u9650\uFF01')
)
return
}
copyCurveGroup(currentHoverGroup.value.id).then(() => {
queryCurveGroups(currentHoverGroup.value.id)
})
},
deleteNode: () => {
if (!props2.permissionBtns.includes('curveGroup-delete')) {
ElMessage.warning(
Language$1._t('\u7528\u6237\u6CA1\u6709\u8BE5\u6743\u9650\uFF01')
)
return
}
currentHoverGroup.value = data2.data
ElMessageBox.confirm(
`${Language$1._t('\u786E\u8BA4\u5220\u9664')} ${
currentHoverGroup.value.name
} \uFF1F`,
Language$1._t('\u63D0\u793A'),
{
confirmButtonText: Language$1._t('\u786E\u8BA4'),
cancelButtonText: Language$1._t('\u53D6\u6D88'),
customClass: 'cms-el-dialog cms-el-dialog__light',
callback: (action) => {
if (action === 'confirm') {
ConfirmDeletion()
}
},
}
)
},
}
fun[data2.type]()
}
const ConfirmDeletion = async () => {
if (currentHoverGroup.value.name) {
deleteCurveGroup(currentHoverGroup.value.id).then(() => {
queryCurveGroups()
})
}
}
let currentHoverGroup = ref(groups.value[0])
let currentHoverNode = ref({})
let showOperationPopover = ref(false)
let configLeftRef = ref(null)
let operationPopoverPosition = ref({ top: '0px', left: '0px' })
const handleOverMore = (e2, data2, node22) => {
currentHoverGroup.value = data2
currentHoverNode.value = node22
clearHidePopoverTimer()
let target2 = e2.srcElement
const { top: top2 } = useElementBounding(target2)
let windowHeight = window.innerHeight
let fixTop = 0
let zoom = state$6.current.zoom
if (windowHeight - top2.value * zoom < 126 * zoom) {
fixTop = windowHeight - top2.value * zoom - 126 * zoom
}
operationPopoverPosition.value.top =
target2.offsetTop + 42 + fixTop + 'px'
operationPopoverPosition.value.left = target2.offsetLeft + 30 + 'px'
showOperationPopover.value = true
}
let hidePopoverTimer
const startHidePopoverTimer = () => {
clearTimeout(hidePopoverTimer)
hidePopoverTimer = setTimeout(() => {
showOperationPopover.value = false
}, 100)
}
const clearHidePopoverTimer = () => {
clearTimeout(hidePopoverTimer)
}
const handleAllowDrop = (draggingNode, dropNode, type4) => {
if (type4 === 'inner') {
return false
}
return true
}
const handleDrop = (draggingNode, dropNode, dropType) => {
const dragGroup = draggingNode.data
const dropGroup = dropNode.data
let underWhichCurveGroupId = 0
if (dropType === 'before') {
for (let index2 = 0; index2 < groups.value.length; index2++) {
if (groups.value[index2].id === dropGroup.id) {
break
} else {
underWhichCurveGroupId = groups.value[index2].id
}
}
} else if (dropType === 'after') {
underWhichCurveGroupId = dropGroup.id
}
sortCurveGroup({
curveGroupId: dragGroup.id,
underWhichCurveGroupId,
}).then(() => {
queryCurveGroups()
})
}
const handleChangeColor = (color2, curve) => {
if (!props2.permissionBtns.includes(`curveGroup-edit`)) {
ElMessage.warning(
Language$1._t('\u7528\u6237\u6CA1\u6709\u8BE5\u6743\u9650\uFF01')
)
return
}
curve.color = color2
handleEditCurve(curve, 'color')
}
const sortableInit = (el2) => {
setTimeout(() => {
Sortable.create(el2, {
handle: '.drag-btn',
chosenClass: 'sortable-chosen',
swapThreshold: 1,
animation: 150,
})
})
}
let currentVariateType = ref('MODIFY')
let selectedCurveRow = ref(null)
let disabledNames = ref([])
const handleShowVariate = (type4, row = null) => {
handleFocusRow(row)
const permissionType = {
MODIFY: 'curve-edit-variable',
ADD: 'curve-add',
}[type4]
if (!props2.permissionBtns.includes(permissionType)) {
ElMessage.warning(
Language$1._t('\u7528\u6237\u6CA1\u6709\u8BE5\u6743\u9650\uFF01')
)
return
}
currentVariateType.value = type4
switch (type4) {
case 'MODIFY':
showVariate.value = true
isMultiple2.value = false
disabledNames.value = checkedVariateNames.value.filter(
(name2) => name2 != row.tagName
)
selectedCurveRow.value = row
break
case 'ADD':
showVariate.value = true
disabledNames.value = checkedVariateNames.value
isMultiple2.value = true
break
}
}
const handleDeleteCurves = () => {
if (!props2.permissionBtns.includes(`curve-delete`)) {
ElMessage.warning(
Language$1._t('\u7528\u6237\u6CA1\u6709\u8BE5\u6743\u9650\uFF01')
)
return
}
const selectedRows = xTable.value.getCheckboxRecords()
if (selectedRows.length === 0) {
return toast(
Language$1._t(
'\u8BF7\u9009\u62E9\u8981\u5220\u9664\u7684\u66F2\u7EBF'
),
'warning'
)
}
ElMessageBox.confirm(
Language$1._t('\u786E\u8BA4\u5220\u9664\u9009\u4E2D\u66F2\u7EBF') + '?',
Language$1._t('\u63D0\u793A'),
{
confirmButtonText: Language$1._t('\u786E\u8BA4'),
cancelButtonText: Language$1._t('\u53D6\u6D88'),
customClass: 'cms-el-dialog cms-el-dialog__light',
callback: (action) => {
if (action === 'confirm') {
const deleteCurveIds = xTable.value
.getCheckboxRecords()
.map((item2) => item2.id)
deleteCurve(deleteCurveIds).then(() => {
toast(Language$1._t('\u5220\u9664\u6210\u529F'), 'success')
queryCurveGroups(selectedCurveGroup.value.id)
})
}
},
}
)
}
let usedColorIndex = computed(() => {
if (tableData2.value && tableData2.value.length === 0) {
return 0
}
return (
lodash$2.exports.findIndex(
curveColorList,
(item2) =>
item2 === tableData2.value[tableData2.value.length - 1].color
) + 1
)
})
const handleVariateConfirm = (data2) => {
let colorIndex = usedColorIndex.value
if (currentVariateType.value === 'ADD') {
const dataNames = data2.map((item2) => item2.name)
const tableDataClone = tableData2.value.filter((item2) =>
dataNames.includes(item2.name)
)
data2.forEach((item2) => {
let curve = lodash$2.exports.find(tableDataClone, {
name: item2.name,
})
if (!curve) {
tableDataClone.push({
curveGroupId: selectedCurveGroup.value.id,
color: curveColorList[colorIndex % curveColorList.length],
name: item2.name,
tagName: item2.name,
partition: 1,
yAxis: 1,
_new: true,
})
colorIndex++
}
})
tableData2.value = tableDataClone
const addData = tableData2.value.filter((item2) => item2._new)
addCurve(addData).then(() => {
toast('\u6DFB\u52A0\u6210\u529F', 'success')
queryCurveGroups(selectedCurveGroup.value.id)
})
} else if (currentVariateType.value === 'MODIFY') {
const row = lodash$2.exports.find(tableData2.value, {
id: selectedCurveRow.value.id,
})
if (row && data2.length > 0) {
let item2 = data2[0]
row.tagName = item2.name
handleEditCurve(row, 'tagName')
}
}
showVariate.value = false
usedColorIndex.value = 0
}
let moveTargetGroup = ref()
let showMoveDialog = ref(false)
const handleShowMoveDialog = () => {
if (!props2.permissionBtns.includes(`curve-move`)) {
ElMessage.warning(
Language$1._t('\u7528\u6237\u6CA1\u6709\u8BE5\u6743\u9650\uFF01')
)
return
}
const selectedRows = xTable.value.getCheckboxRecords()
if (selectedRows.length === 0) {
return toast(
Language$1._t(
'\u8BF7\u9009\u62E9\u8981\u79FB\u52A8\u7684\u66F2\u7EBF'
),
'warning'
)
}
otherGroups.value = groups.value.filter(
(item2) => item2.id !== selectedCurveGroup.value.id
)
moveTargetGroup.value = otherGroups.value[0].id
showMoveDialog.value = true
}
const handleMoveCurves = () => {
if (moveTargetGroup.value === void 0) {
return toast(
Language$1._t('\u8BF7\u9009\u62E9\u76EE\u6807\u66F2\u7EBF\u7EC4'),
'warning'
)
}
const moveIds = xTable.value.getCheckboxRecords().map((item2) => item2.id)
moveCurve({
curveIds: moveIds,
curveGroupId: moveTargetGroup.value,
}).then(() => {
toast(Language$1._t('\u79FB\u52A8\u6210\u529F'), 'success')
showMoveDialog.value = false
queryCurves(selectedCurveGroup.value.id)
})
}
const handleEditCurveGroupSubmitted = (groupId) => {
queryCurveGroups(groupId)
}
let timer2 = null
let sourceEditRow = null
const handleEditCurve = (row, key2) => {
if (row[key2] == sourceEditRow?.[key2]) {
return
}
if (
(!lodash$2.exports.isInteger(+row.yAxis) || row.yAxis < 1) &&
sourceEditRow
) {
row.yAxis = sourceEditRow.yAxis
return toast(
Language$1._t('Y\u8F74\u5FC5\u987B\u4E3A\u6B63\u6574\u6570'),
'warning'
)
}
if (
(!lodash$2.exports.isInteger(+row.partition) || row.partition < 1) &&
sourceEditRow
) {
row.partition = sourceEditRow.partition
return toast(
Language$1._t('\u5206\u533A\u5FC5\u987B\u4E3A\u6B63\u6574\u6570'),
'warning'
)
}
clearTimeout(timer2)
timer2 = setTimeout(() => {
if (row.name.trim() === '') {
return toast(
Language$1._t('\u8BF7\u8F93\u5165\u66F2\u7EBF\u540D\u79F0'),
'warning'
)
}
delete row.updateTime
updateCurve([row]).then(() => {
toast(Language$1._t('\u66F4\u65B0\u6210\u529F'), 'success')
emit2('languageTextChange', collectLanguageNames())
})
}, 500)
}
const handleFocusRow = (row) => {
sourceEditRow = lodash$2.exports.cloneDeep(row)
}
const handleSearch = () => {
getCurveGroup(keyword.value).then((res) => {
if (res.length === 0) {
return toast(
Language$1._t(
'\u672A\u641C\u7D22\u5230\u76F8\u5173\u66F2\u7EBF\u7EC4'
),
'warning'
)
} else {
groups.value = res
tableData2.value = groups.value[0].curves ?? []
selectedCurveGroup.value = groups.value[0]
}
})
}
onMounted(() => {
queryCurveGroups()
})
return (_ctx, _cache) => {
const _component_el_card = resolveComponent('el-card')
const _component_el_button = resolveComponent('el-button')
const _component_vxe_column = resolveComponent('vxe-column')
const _component_vxe_input = resolveComponent('vxe-input')
const _component_el_color_picker = resolveComponent('el-color-picker')
const _component_el_tag = resolveComponent('el-tag')
const _component_vxe_table = resolveComponent('vxe-table')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', _hoisted_1$51, [
createElementVNode(
'div',
{
class: 'config-left',
ref_key: 'configLeftRef',
ref: configLeftRef,
},
[
createVNode$1(
_component_el_card,
{
class: 'box-card',
shadow: 'never',
},
{
header: withCtx(() => [
createElementVNode('div', _hoisted_2$4e, [
createElementVNode(
'span',
null,
toDisplayString$1(_ctx._t('\u66F2\u7EBF\u7EC4')),
1
),
createElementVNode('div', _hoisted_3$3O, [
createElementVNode('i', {
class: 'iconfont icon-tianjia1',
onClick:
_cache[0] ||
(_cache[0] = ($event) => addGroup('add')),
}),
]),
]),
]),
default: withCtx(() => [
createElementVNode('div', _hoisted_4$3h, [
createVNode$1(
VirtualTree,
{
ref_key: 'treeRef',
ref: treeRef,
data: groups.value,
'default-expand-all': '',
props: { children: 'children' },
itemSize: 32,
filterText: filterText.value,
'allow-drop': handleAllowDrop,
onNodeDrop: handleDrop,
emptyText: _ctx._t('\u6682\u65E0\u6570\u636E'),
},
{
default: withCtx(({ node: node22, data: data2 }) => [
createElementVNode(
'div',
{
class: normalizeClass([
'node flex justify-between',
data2.id === selectedCurveGroup.value.id
? 'node-current'
: '',
]),
onClick: withModifiers(
($event) => selectCurveGroup(data2),
['stop']
),
},
[
_hoisted_6$2F,
createElementVNode('div', _hoisted_7$2j, [
createVNode$1(
EllipsisTooltip,
{
width: '100%',
content: unref(t3)(data2.name),
},
null,
8,
['content']
),
]),
createElementVNode(
'div',
{
class: 'btn',
onMouseenter: (e2) =>
handleOverMore(e2, data2, node22),
onMouseleave: startHidePopoverTimer,
},
_hoisted_10$1J,
40,
_hoisted_8$22
),
],
10,
_hoisted_5$2Z
),
]),
_: 1,
},
8,
['data', 'filterText', 'emptyText']
),
]),
]),
_: 1,
}
),
createElementVNode(
'div',
{
class: normalizeClass([
'more-operation-popover',
{ show: showOperationPopover.value },
]),
style: normalizeStyle$1(operationPopoverPosition.value),
onMouseleave: startHidePopoverTimer,
onMouseover: clearHidePopoverTimer,
},
[
createElementVNode('ul', _hoisted_11$1B, [
createElementVNode(
'li',
{
onClick:
_cache[1] ||
(_cache[1] = ($event) =>
handleCommand({
type: 'edit',
node: currentHoverNode.value,
data: currentHoverGroup.value,
})),
},
toDisplayString$1(_ctx._t('\u7F16\u8F91')),
1
),
createElementVNode(
'li',
{
onClick:
_cache[2] ||
(_cache[2] = ($event) =>
handleCommand({
type: 'copy',
node: currentHoverNode.value,
data: currentHoverGroup.value,
})),
},
toDisplayString$1(_ctx._t('\u590D\u5236')),
1
),
createElementVNode(
'li',
{
class: 'item_delete',
onClick:
_cache[3] ||
(_cache[3] = ($event) =>
handleCommand({
type: 'deleteNode',
node: currentHoverNode.value,
data: currentHoverGroup.value,
})),
},
toDisplayString$1(_ctx._t('\u5220\u9664')),
1
),
]),
],
38
),
],
512
),
createElementVNode('div', _hoisted_12$1x, [
createVNode$1(
unref(ElInput),
{
class: '--scms-input --scms-input-bottom',
modelValue: keyword.value,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) => (keyword.value = $event)),
placeholder: _ctx._t('\u8BF7\u8F93\u5165\u5173\u952E\u8BCD'),
clearable: '',
},
null,
8,
['modelValue', 'placeholder']
),
createVNode$1(
_component_el_button,
{
onClick: handleSearch,
class: 'curve-group-search',
type: 'primary',
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx._t('\u67E5\u8BE2')),
1
),
]),
_: 1,
}
),
]),
createElementVNode('div', _hoisted_13$1n, [
groups.value.length
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
createElementVNode('div', _hoisted_14$1d, [
createElementVNode('div', _hoisted_15$18, [
_hoisted_16$16,
createElementVNode(
'span',
_hoisted_17$10,
toDisplayString$1(
_ctx._t('\u66F2\u7EBF\u914D\u7F6E')
),
1
),
]),
createElementVNode('div', _hoisted_18$W, [
createVNode$1(
_component_el_button,
{
onClick:
_cache[5] ||
(_cache[5] = ($event) =>
handleShowVariate('ADD')),
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx._t('\u6DFB\u52A0')),
1
),
]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn-delete',
onClick: handleDeleteCurves,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx._t('\u5220\u9664')),
1
),
]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{ onClick: handleShowMoveDialog },
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(
_ctx._t('\u79FB\u52A8\u81F3')
),
1
),
]),
_: 1,
}
),
]),
]),
createElementVNode(
'div',
{
class: normalizeClass([
'table-wrapper flex-1',
{
'no-permission':
!props2.permissionBtns.includes(
`curveGroup-edit`
),
},
]),
},
[
createVNode$1(
_component_vxe_table,
{
class: 'drag-table',
ref_key: 'xTable',
ref: xTable,
border: '',
data: tableData2.value,
align: 'center',
height: '100%',
'edit-rules': validVxeRules.value,
'edit-config': {
trigger: 'click',
mode: 'cell',
autoClear: true,
langUpdateTime: langUpdateTime.value,
},
'row-config': { isHover: true, isCurrent: true },
'empty-text': _ctx._t('\u6682\u65E0\u6570\u636E'),
},
{
default: withCtx(() => [
createVNode$1(
_component_vxe_column,
{
width: '45',
title: '',
align: 'center',
},
{
default: withCtx(() => [_hoisted_19$S]),
_: 1,
}
),
createVNode$1(_component_vxe_column, {
type: 'checkbox',
width: '35',
}),
createVNode$1(
_component_vxe_column,
{
field: 'name',
title: _ctx._t('\u66F2\u7EBF\u540D'),
width: '200',
'edit-render': {
autofocus: '.vxe-input--inner',
},
},
{
default: withCtx(({ row }) => [
createElementVNode(
'span',
_hoisted_20$M,
toDisplayString$1(unref(t3)(row.name)),
1
),
]),
edit: withCtx((scope) => [
createVNode$1(
_component_vxe_input,
{
type: 'text',
modelValue: scope.row.name,
'onUpdate:modelValue': ($event) =>
(scope.row.name = $event),
onChange: ($event) =>
xTable.value.updateStatus(scope),
onFocus: ($event) =>
handleFocusRow(scope.row),
onBlur: ($event) =>
handleEditCurve(scope.row, 'name'),
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
'onChange',
'onFocus',
'onBlur',
]
),
]),
_: 1,
},
8,
['title', 'edit-render']
),
createVNode$1(
_component_vxe_column,
{
title: _ctx._t('\u989C\u8272'),
width: '240',
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_21$D, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
size: 'small',
'color-format': 'hex',
class: 'color-picker',
predefine: curveColorList,
'model-value': row.color,
disabled:
!props2.permissionBtns.includes(
`curve-add`
),
onChange: (e2) =>
handleChangeColor(e2, row),
},
null,
8,
['model-value', 'disabled', 'onChange']
),
]),
]),
_: 1,
},
8,
['title']
),
createVNode$1(
_component_vxe_column,
{
title: _ctx._t('\u53D8\u91CF\u540D'),
width: '240',
},
{
default: withCtx(({ row }) => [
createVNode$1(
unref(ElInput),
{
modelValue: row.tagName,
'onUpdate:modelValue': ($event) =>
(row.tagName = $event),
class:
'--scms-input --scms-input-bottom',
'controls-position': 'right',
min: 1,
readonly: '',
},
{
append: withCtx(() => [
createElementVNode(
'i',
{
class:
'iconfont icon-bianjigongcheng',
onClick: ($event) =>
handleShowVariate(
'MODIFY',
row
),
},
null,
8,
_hoisted_22$B
),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue']
),
]),
_: 1,
},
8,
['title']
),
createVNode$1(
_component_vxe_column,
{
title: _ctx._t('\u5206\u533A'),
width: '140',
'edit-render': {
autofocus: '.vxe-input--inner',
},
},
{
default: withCtx(({ row }) => [
createElementVNode(
'span',
null,
toDisplayString$1(row.partition),
1
),
]),
edit: withCtx(({ row }) => [
createVNode$1(
_component_vxe_input,
{
modelValue: row.partition,
'onUpdate:modelValue': ($event) =>
(row.partition = $event),
class: '--scms-input',
min: '1',
onBlur: ($event) =>
handleEditCurve(row, 'partition'),
onFocus: ($event) =>
handleFocusRow(row),
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
'onBlur',
'onFocus',
]
),
]),
_: 1,
},
8,
['title', 'edit-render']
),
createVNode$1(
_component_vxe_column,
{
title: _ctx._t('Y\u8F74'),
width: '140',
'edit-render': {
autofocus: '.vxe-input--inner',
},
},
{
default: withCtx(({ row }) => [
createElementVNode(
'span',
null,
toDisplayString$1(row.yAxis),
1
),
]),
edit: withCtx(({ row }) => [
createVNode$1(
_component_vxe_input,
{
modelValue: row.yAxis,
'onUpdate:modelValue': ($event) =>
(row.yAxis = $event),
class: '--scms-input',
onBlur: ($event) =>
handleEditCurve(row, 'yAxis'),
onFocus: ($event) =>
handleFocusRow(row),
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
'onBlur',
'onFocus',
]
),
]),
_: 1,
},
8,
['title', 'edit-render']
),
createVNode$1(
_component_vxe_column,
{
title: _ctx._t('\u66F2\u7EBF\u5206\u6790'),
'min-width': '200',
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_23$y, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
row.analysis,
(item2, index2) => {
return (
openBlock(),
createBlock(
_component_el_tag,
{
key: index2,
class: 'mr-10 curve-tag',
type: 'info',
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(
item2.name
),
1
),
]),
_: 2,
},
1024
)
)
}
),
128
)),
]),
]),
_: 1,
},
8,
['title']
),
]),
_: 1,
},
8,
['data', 'edit-rules', 'edit-config', 'empty-text']
),
],
2
),
],
64
))
: (openBlock(),
createBlock(
_component_el_button,
{
key: 1,
class: 'btn-add-group',
onClick:
_cache[6] || (_cache[6] = ($event) => addGroup('add')),
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(
_ctx._t('\u6DFB\u52A0\u66F2\u7EBF\u7EC4')
),
1
),
]),
_: 1,
}
)),
]),
showVariate.value
? (openBlock(),
createBlock(
_sfc_main$6Q,
{
key: 0,
data: { name: checkedVariateNames.value },
visible: showVariate.value,
'is-append-to-body': true,
'is-multiple': isMultiple2.value,
'disabled-names': disabledNames.value,
onConfirm: handleVariateConfirm,
onCancel:
_cache[7] ||
(_cache[7] = ($event) => (showVariate.value = false)),
},
null,
8,
['data', 'visible', 'is-multiple', 'disabled-names']
))
: createCommentVNode('', true),
showEditCurveGroup.value
? (openBlock(),
createBlock(
EditCurveGroup,
{
key: 1,
modelValue: showEditCurveGroup.value,
'onUpdate:modelValue':
_cache[8] ||
(_cache[8] = ($event) =>
(showEditCurveGroup.value = $event)),
type: curveGroupDialogType.value,
curveGroup: editCurveGroupData.value,
groups: otherGroups.value,
onSubmitted: handleEditCurveGroupSubmitted,
},
null,
8,
['modelValue', 'type', 'curveGroup', 'groups']
))
: createCommentVNode('', true),
createVNode$1(
_component_el_dialog,
{
'show-close': false,
'custom-class': '--user-dialog',
modelValue: showMoveDialog.value,
'onUpdate:modelValue':
_cache[11] ||
(_cache[11] = ($event) => (showMoveDialog.value = $event)),
'append-to-body': true,
width: '400px',
},
{
title: withCtx(() => [
createElementVNode(
'span',
null,
toDisplayString$1(_ctx._t('\u79FB\u52A8\u81F3')),
1
),
]),
default: withCtx(() => [
createElementVNode('div', null, [
createTextVNode(
toDisplayString$1(
_ctx._t(
'\u5C06\u6240\u9009\u66F2\u7EBF\u79FB\u52A8\u81F3'
)
) + ' ',
1
),
createElementVNode('div', _hoisted_24$w, [
createVNode$1(
_component_el_select,
{
modelValue: moveTargetGroup.value,
'onUpdate:modelValue':
_cache[9] ||
(_cache[9] = ($event) =>
(moveTargetGroup.value = $event)),
class: '--scms-select',
'popper-class': '--scms-select_poper',
placeholder: _ctx._t('\u8BF7\u9009\u62E9'),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(otherGroups.value, (group, index2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: index2,
label: _ctx._t(group.name),
value: group.id,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue', 'placeholder']
),
]),
]),
createElementVNode('div', _hoisted_25$r, [
createVNode$1(
_component_el_button,
{
onClick:
_cache[10] ||
(_cache[10] = ($event) =>
(showMoveDialog.value = false)),
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx._t('\u53D6\u6D88')),
1
),
]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
type: 'primary',
onClick: handleMoveCurves,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx._t('\u786E\u8BA4')),
1
),
]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
),
])
)
}
},
})
var curveDefine = /* @__PURE__ */ _export_sfc(_sfc_main$5W, [
['__scopeId', 'data-v-22491880'],
])
var CurveDefine = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: curveDefine,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _sfc_main$5V = {}
function _sfc_render$h(_ctx, _cache) {
return (
openBlock(), createElementBlock('div', null, '\u66F2\u7EBF\u5206\u6790')
)
}
var curveAnalysis = /* @__PURE__ */ _export_sfc(_sfc_main$5V, [
['render', _sfc_render$h],
])
var CurveAnalysis = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: curveAnalysis,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ChartLineTrendConfig_vue_vue_type_style_index_0_scoped_true_lang = ''
var ChartLineTrendConfig_vue_vue_type_style_index_1_lang = ''
const _hoisted_1$50 = ['t']
const _hoisted_2$4d = {
key: 0,
class: 'box_wrap',
}
const _hoisted_3$3N = { class: 'flex justify-between' }
const _hoisted_4$3g = { class: 'x_tab' }
const _hoisted_5$2Y = { class: 'content' }
const _hoisted_6$2E = {
key: 1,
class: 'no_permission',
}
const _sfc_main$5U = /* @__PURE__ */ defineComponent({
props: {
editing: { type: Boolean },
node: null,
},
setup(__props2) {
const props2 = __props2
const components = {
curveDefine,
curveAnalysis,
}
const permissionBtns = ref([])
let currentTab = ref('')
const node2 = reactive(props2.node)
let permissions = computed(() => state$6.permissions)
const permission = {
id: node2.id,
name: node2.name,
subs: [
{
id: 'tab-curveDefine',
name: '\u66F2\u7EBF\u5B9A\u4E49',
},
{
id: 'tab-curveAnalysis',
name: '\u66F2\u7EBF\u5206\u6790',
},
{
id: 'curveGroup-add',
name: '\u66F2\u7EBF\u7EC4-\u6DFB\u52A0',
},
{
id: 'curveGroup-edit',
name: '\u66F2\u7EBF\u7EC4-\u7F16\u8F91',
},
{
id: 'curveGroup-copy',
name: '\u66F2\u7EBF\u7EC4-\u590D\u5236',
},
{
id: 'curveGroup-delete',
name: '\u66F2\u7EBF\u7EC4-\u5220\u9664',
},
{
id: 'curve-add',
name: '\u66F2\u7EBF-\u6DFB\u52A0',
},
{
id: 'curve-delete',
name: '\u66F2\u7EBF-\u5220\u9664',
},
{
id: 'curve-edit-variable',
name: '\u66F2\u7EBF-\u53D8\u91CF\u7F16\u8F91',
},
{
id: 'curve-move',
name: '\u66F2\u7EBF-\u79FB\u52A8\u81F3',
},
],
}
let flag2 = permissions.value.some((f2) => f2.id === node2.id)
if (!flag2) {
permissions.value.push(permission)
}
if (userInfo.permissions.all) {
permissionBtns.value = permission.subs.map((item2) => item2.id)
} else {
permissionBtns.value = userInfo.permissions.widgets
}
const showTabs = ref([])
const allTabs = ['tab-curveDefine', 'tab-curveAnalysis']
permissionBtns.value.forEach((item2) => {
if (allTabs.includes(item2)) {
showTabs.value.push(item2)
}
})
if (showTabs.value.length !== 0) {
currentTab.value = showTabs.value[0].split('-')[1]
}
let names2 = ref([])
const collectText2 = () => {
names2.value.forEach((name2) => t(name2))
}
const handleLanguageTextChange = (data2) => {
Language$1.resetStore()
names2.value = data2
app.current.project.current.page.save(true)
}
onUnmounted(() => {
let index2 = permissions.value.findIndex((f2) => f2.id === node2.id)
if (index2 !== -1) {
permissions.value.splice(index2, 1)
}
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'chart-trend-config box',
t: collectText2(),
},
[
showTabs.value.length !== 0
? (openBlock(),
createElementBlock('div', _hoisted_2$4d, [
createElementVNode('div', _hoisted_3$3N, [
createElementVNode('div', _hoisted_4$3g, [
showTabs.value.includes('tab-curveDefine')
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass([
'x_tab_item',
{
current_tab_item:
unref(currentTab) === 'curveDefine',
},
]),
},
toDisplayString$1(
_ctx._t('\u66F2\u7EBF\u7BA1\u7406')
),
3
))
: createCommentVNode('', true),
showTabs.value.includes('tab-curveAnalysis')
? (openBlock(),
createElementBlock(
'div',
{
key: 1,
class: normalizeClass([
'x_tab_item',
{
current_tab_item:
unref(currentTab) === 'curveAnalysis',
},
]),
style: { cursor: 'not-allowed' },
},
toDisplayString$1(
_ctx._t('\u66F2\u7EBF\u5206\u6790')
),
3
))
: createCommentVNode('', true),
]),
]),
createElementVNode('div', _hoisted_5$2Y, [
(openBlock(),
createBlock(
resolveDynamicComponent(components[unref(currentTab)]),
{
node: props2.node,
permissionBtns: permissionBtns.value,
onLanguageTextChange: handleLanguageTextChange,
},
null,
8,
['node', 'permissionBtns']
)),
]),
]))
: (openBlock(),
createElementBlock(
'div',
_hoisted_6$2E,
toDisplayString$1(_ctx._t('\u65E0\u6743\u9650\u67E5\u770B')),
1
)),
],
8,
_hoisted_1$50
)
)
}
},
})
var ChartLineTrendConfig = /* @__PURE__ */ _export_sfc(_sfc_main$5U, [
['__scopeId', 'data-v-5af61fc2'],
])
var __glob_2_28 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ChartLineTrendConfig,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ChartMixed_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$4$ = { class: 'chartSettings' }
const config$I = {
name: '\u7EC4\u5408\u56FE',
icon: 'icon-zuhetu',
permission: false,
styleConfig: {
textDecoration: false,
},
}
const _sfc_main$5T = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$4$, [
createVNode$1(Type$3, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Data$4, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(QueryConditions$4, { node: unref(node2) }, null, 8, [
'node',
]),
createVNode$1(Title$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Title$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Label$1, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Legend$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(XAxis$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(YAxis, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(StyleConditions, { node: unref(node2) }, null, 8, [
'node',
]),
])
)
}
},
})
var ChartMixed_settings = /* @__PURE__ */ _export_sfc(_sfc_main$5T, [
['__scopeId', 'data-v-54cabc40'],
])
var __glob_2_29 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$I,
default: ChartMixed_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _sfc_main$5S = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
function updateChart2(chart2) {
const option2 = chart2.getOption()
if (option2.series) {
for (const serie of option2.series) {
Object.assign(serie, {
type: 'line',
})
}
}
chart2.setOption(
{
series: option2.series,
},
{ lazyUpdate: true }
)
}
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
Chart$1,
mergeProps(
{
node: $props2.node,
},
$props2.node.props,
{ updateChart: updateChart2 }
),
null,
16,
['node']
)
)
}
},
})
var __glob_2_30 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$5S,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var SetChart_vue_vue_type_style_index_0_scoped_true_lang$1 = ''
const _hoisted_1$4_ = { class: 'set-chart' }
const _sfc_main$5R = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
_sfc_main$72,
{
title: '\u56FE\u8868\u8BBE\u7F6E',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$4_, [
createVNode$1(_sfc_main$6w, { node: unref(node2) }, null, 8, [
'node',
]),
]),
]),
_: 1,
}
)
)
}
},
})
var SetChart$1 = /* @__PURE__ */ _export_sfc(_sfc_main$5R, [
['__scopeId', 'data-v-7c66c831'],
])
var __glob_2_34 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: SetChart$1,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Label_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2P = (n2) => (
pushScopeId('data-v-b7ee7aa0'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$4Z = { class: 'label' }
const _hoisted_2$4c = { class: 'label-item' }
const _hoisted_3$3M = { class: 'header' }
const _hoisted_4$3f = { class: 'content' }
const _hoisted_5$2X = /* @__PURE__ */ createTextVNode('\u7EF4\u5EA6')
const _hoisted_6$2D = /* @__PURE__ */ createTextVNode('\u5EA6\u91CF')
const _hoisted_7$2i = /* @__PURE__ */ createTextVNode('\u767E\u5206\u6BD4')
const _hoisted_8$21 = { class: 'content' }
const _hoisted_9$1T = /* @__PURE__ */ _withScopeId$2P(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u5B57\u4F53',
-1
)
)
const _hoisted_10$1I = { class: 'cms-el-color-picker-x' }
const _hoisted_11$1A = { class: 'content' }
const _hoisted_12$1w = /* @__PURE__ */ _withScopeId$2P(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u4F4D\u7F6E',
-1
)
)
const _hoisted_13$1m = { class: 'set-align' }
const _hoisted_14$1c = ['onClick']
const _hoisted_15$17 = { class: 'label-item' }
const _hoisted_16$15 = { class: 'header' }
const _hoisted_17$$ = { class: 'content' }
const _hoisted_18$V = /* @__PURE__ */ _withScopeId$2P(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u5F15\u5BFC\u7EBF1',
-1
)
)
const _hoisted_19$R = { class: 'content' }
const _hoisted_20$L = /* @__PURE__ */ _withScopeId$2P(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u5F15\u5BFC\u7EBF2',
-1
)
)
const _sfc_main$5Q = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const props2 = reactive($props2.node.props)
const positionList = reactive([
{
label: '\u5916\u4FA7',
value: 'outside',
},
{
label: '\u5185\u4FA7',
value: 'inside',
},
])
const changeColor = (color2) => {
props2.chartConfig.label.color = color2
}
const changeLablePosition = (val2) => {
props2.chartConfig.label.position = val2
}
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_checkbox_group = resolveComponent('el-checkbox-group')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_color_picker = resolveComponent('el-color-picker')
return (
openBlock(),
createBlock(
_sfc_main$72,
{
title: '\u6807\u7B7E',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$4Z, [
createElementVNode('div', _hoisted_2$4c, [
createElementVNode('div', _hoisted_3$3M, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(props2).chartConfig.label.show,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(props2).chartConfig.label.show = $event)),
label: '\u663E\u793A\u6807\u7B7E',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
]),
withDirectives(
createElementVNode(
'div',
null,
[
createElementVNode('div', _hoisted_4$3f, [
createVNode$1(
_component_el_checkbox_group,
{
modelValue: unref(props2).chartConfig.label.list,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(props2).chartConfig.label.list =
$event)),
},
{
default: withCtx(() => [
createVNode$1(
_component_el_checkbox,
{
label: 'dimissions',
class: 'cms-el-checkbox-font-size-12',
},
{
default: withCtx(() => [_hoisted_5$2X]),
_: 1,
}
),
createVNode$1(
_component_el_checkbox,
{
label: 'measure',
class: 'cms-el-checkbox-font-size-12',
},
{
default: withCtx(() => [_hoisted_6$2D]),
_: 1,
}
),
createVNode$1(
_component_el_checkbox,
{
label: 'percentage',
class: 'cms-el-checkbox-font-size-12',
},
{
default: withCtx(() => [_hoisted_7$2i]),
_: 1,
}
),
]),
_: 1,
},
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_8$21, [
_hoisted_9$1T,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x fontFamily',
'popper-class': 'cms-el-select_check',
modelValue:
unref(props2).chartConfig.label.fontFamily,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(props2).chartConfig.label.fontFamily =
$event)),
'allow-create': '',
filterable: '',
placeholder: '\u5B57\u4F53',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(fontFamilyList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
hidden: item2.hidden,
},
null,
8,
['label', 'value', 'hidden']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x fontSize',
modelValue:
unref(props2).chartConfig.label.fontSize,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(props2).chartConfig.label.fontSize =
$event)),
min: 0,
max: 36,
controls: false,
},
null,
8,
['modelValue']
),
createElementVNode('div', _hoisted_10$1I, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
'model-value':
unref(props2).chartConfig.label.color,
onActiveChange:
_cache[4] ||
(_cache[4] = (e2) => changeColor(e2)),
},
null,
8,
['predefine', 'model-value']
),
]),
]),
createElementVNode('div', _hoisted_11$1A, [
_hoisted_12$1w,
createElementVNode('div', _hoisted_13$1m, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(positionList), (item2) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'text-radio',
{
active:
unref(props2).chartConfig.label
.position === item2.value,
},
]),
key: item2.value,
onClick: () =>
changeLablePosition(item2.value),
},
toDisplayString$1(item2.label),
11,
_hoisted_14$1c
)
)
}),
128
)),
]),
]),
],
512
),
[[vShow, unref(props2).chartConfig.label.show]]
),
]),
createElementVNode('div', _hoisted_15$17, [
createElementVNode('div', _hoisted_16$15, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(props2).pieConfig.labelLine.show,
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) =>
(unref(props2).pieConfig.labelLine.show = $event)),
label: '\u663E\u793A\u5F15\u5BFC\u7EBF',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
]),
withDirectives(
createElementVNode(
'div',
null,
[
createElementVNode('div', _hoisted_17$$, [
_hoisted_18$V,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
modelValue:
unref(props2).pieConfig.labelLine.length,
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) =>
(unref(props2).pieConfig.labelLine.length =
$event)),
min: 0,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_19$R, [
_hoisted_20$L,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
modelValue:
unref(props2).pieConfig.labelLine.length2,
'onUpdate:modelValue':
_cache[7] ||
(_cache[7] = ($event) =>
(unref(props2).pieConfig.labelLine.length2 =
$event)),
min: 0,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
]),
],
512
),
[[vShow, unref(props2).pieConfig.labelLine.show]]
),
]),
]),
]),
_: 1,
}
)
)
}
},
})
var Label = /* @__PURE__ */ _export_sfc(_sfc_main$5Q, [
['__scopeId', 'data-v-b7ee7aa0'],
])
var __glob_2_33 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Label,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ChartPie_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$4Y = { class: 'chartSettings' }
const config$H = {
category: 'chart',
name: '\u997C\u56FE',
icon: 'icon-bingzhuangtu',
permission: false,
styleConfig: {
textDecoration: false,
},
}
const _sfc_main$5P = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$4Y, [
createVNode$1(Type$3, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Data$4, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(QueryConditions$4, { node: unref(node2) }, null, 8, [
'node',
]),
createVNode$1(Title$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(SetChart$1, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Label, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Legend$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Padding, { node: unref(node2) }, null, 8, ['node']),
])
)
}
},
})
var ChartPie_settings = /* @__PURE__ */ _export_sfc(_sfc_main$5P, [
['__scopeId', 'data-v-4a25804e'],
])
var __glob_2_31 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$H,
default: ChartPie_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _sfc_main$5O = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
function updateChart2(chart2) {
const option2 = chart2.getOption()
for (const xAxis of option2.xAxis) {
Object.assign(xAxis, {
show: false,
})
}
for (const yAxis of option2.yAxis) {
Object.assign(yAxis, {
show: false,
})
}
let i2 = 0
if (option2.series) {
for (const series of option2.series) {
Object.assign(series, {
type: 'pie',
z: i2,
label: {
...series.label,
position:
{
top: 'outside',
inside: 'inside',
}[series.label.position] || 'outside',
},
})
i2++
}
}
chart2.setOption(
{
tooltip: {
trigger: 'item',
},
yAxis: option2.yAxis,
xAxis: option2.xAxis,
series: option2.series,
},
{ lazyUpdate: true }
)
}
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
Chart$1,
mergeProps(
{
node: $props2.node,
},
$props2.node.props,
{ updateChart: updateChart2 }
),
null,
16,
['node']
)
)
}
},
})
var __glob_2_32 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$5O,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ChartPieRing_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$4X = { class: 'chartSettings' }
const config$G = {
category: 'chart',
name: '\u73AF\u5F62\u56FE',
icon: 'icon-huanxingtu',
permission: false,
styleConfig: {
textDecoration: false,
},
}
const _sfc_main$5N = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$4X, [
createVNode$1(Type$3, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Data$4, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(QueryConditions$4, { node: unref(node2) }, null, 8, [
'node',
]),
createVNode$1(Title$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(SetChart$1, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Label, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Legend$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Padding, { node: unref(node2) }, null, 8, ['node']),
])
)
}
},
})
var ChartPieRing_settings = /* @__PURE__ */ _export_sfc(_sfc_main$5N, [
['__scopeId', 'data-v-d57d9550'],
])
var __glob_2_35 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$G,
default: ChartPieRing_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _sfc_main$5M = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
function updateChart2(chart2) {
const option2 = chart2.getOption()
for (const xAxis of option2.xAxis) {
Object.assign(xAxis, {
show: false,
})
}
for (const yAxis of option2.yAxis) {
Object.assign(yAxis, {
show: false,
})
}
let i2 = 0
if (option2.series) {
for (const series of option2.series) {
Object.assign(series, {
type: 'pie',
z: i2,
label: {
...series.label,
position:
{
top: 'outside',
inside: 'inside',
}[series.label.position] || 'outside',
},
})
i2++
}
}
chart2.setOption(
{
tooltip: {
trigger: 'item',
},
yAxis: option2.yAxis,
xAxis: option2.xAxis,
series: option2.series,
},
{ lazyUpdate: true }
)
}
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
Chart$1,
mergeProps(
{
node: $props2.node,
},
$props2.node.props,
{ updateChart: updateChart2 }
),
null,
16,
['node']
)
)
}
},
})
var __glob_2_36 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$5M,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var SetChart_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2O = (n2) => (
pushScopeId('data-v-0c099238'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$4W = { class: 'set-chart' }
const _hoisted_2$4b = { class: 'set-chart-item' }
const _hoisted_3$3L = /* @__PURE__ */ _withScopeId$2O(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'header' },
'\u7EBF\u6761\u8BBE\u7F6E\uFF1A',
-1
)
)
const _hoisted_4$3e = { class: 'content' }
const _hoisted_5$2W = { class: 'row flex line' }
const _hoisted_6$2C = /* @__PURE__ */ _withScopeId$2O(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u7EBF\u6761\u7C97\u7EC6',
-1
)
)
const _hoisted_7$2h = { class: 'attribute' }
const _hoisted_8$20 = { class: 'row flex row-showSymbol' }
const _hoisted_9$1S = { class: 'attribute' }
const _hoisted_10$1H = { class: 'set-chart-item' }
const _hoisted_11$1z = /* @__PURE__ */ _withScopeId$2O(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'header' },
'\u6807\u8BB0\u70B9\u8BBE\u7F6E\uFF1A',
-1
)
)
const _hoisted_12$1v = { class: 'content' }
const _hoisted_13$1l = { class: 'row flex row-showSymbol' }
const _hoisted_14$1b = { class: 'attribute' }
const _hoisted_15$16 = { class: 'row flex symbol' }
const _hoisted_16$14 = /* @__PURE__ */ _withScopeId$2O(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u6807\u8BB0\u70B9\u5927\u5C0F',
-1
)
)
const _hoisted_17$_ = { class: 'attribute' }
const _hoisted_18$U = { class: 'set-chart-item' }
const _hoisted_19$Q = /* @__PURE__ */ _withScopeId$2O(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'header' },
'\u7EBF\u6761\u6837\u5F0F\uFF1A',
-1
)
)
const _hoisted_20$K = { class: 'content' }
const _hoisted_21$C = { class: 'row flex smooth' }
const _hoisted_22$A = { class: 'attribute' }
const _hoisted_23$x = /* @__PURE__ */ createTextVNode('\u76F4\u7EBF')
const _hoisted_24$v = /* @__PURE__ */ createTextVNode('\u66F2\u7EBF')
const _hoisted_25$q = /* @__PURE__ */ createTextVNode('\u9636\u68AF')
const _sfc_main$5L = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const props2 = reactive($props2.node.props)
return (_ctx, _cache) => {
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_radio = resolveComponent('el-radio')
const _component_el_radio_group = resolveComponent('el-radio-group')
return (
openBlock(),
createBlock(
_sfc_main$72,
{
title: '\u56FE\u8868\u8BBE\u7F6E',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$4W, [
createElementVNode('div', _hoisted_2$4b, [
_hoisted_3$3L,
createElementVNode('div', _hoisted_4$3e, [
createElementVNode('div', _hoisted_5$2W, [
_hoisted_6$2C,
createElementVNode('div', _hoisted_7$2h, [
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x lineWidth',
modelValue: unref(props2).line.width,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(props2).line.width = $event)),
min: 0,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x lineStyle',
'popper-class': 'cms-el-select_check',
modelValue: unref(props2).line.type,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(props2).line.type = $event)),
'allow-create': '',
filterable: '',
placeholder: '\u7EBF\u6761',
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
label: '\u5B9E\u7EBF',
value: 'solid',
}),
createVNode$1(_component_el_option, {
label: '\u865A\u7EBF',
value: 'dashed',
}),
]),
_: 1,
},
8,
['modelValue']
),
]),
]),
createElementVNode('div', _hoisted_8$20, [
createElementVNode('div', _hoisted_9$1S, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(props2).line.unConnectEmpty,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(props2).line.unConnectEmpty = $event)),
label: '\u4E0D\u8FDE\u63A5\u7A7A\u6570\u636E',
size: 'large',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
]),
]),
]),
]),
createElementVNode('div', _hoisted_10$1H, [
_hoisted_11$1z,
createElementVNode('div', _hoisted_12$1v, [
createElementVNode('div', _hoisted_13$1l, [
createElementVNode('div', _hoisted_14$1b, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(props2).line.symbol.show,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(props2).line.symbol.show = $event)),
label: '\u663E\u793A\u6807\u8BB0\u70B9',
size: 'large',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
]),
]),
createElementVNode('div', _hoisted_15$16, [
_hoisted_16$14,
createElementVNode('div', _hoisted_17$_, [
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x symbolSize',
modelValue: unref(props2).line.symbol.size,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(props2).line.symbol.size = $event)),
min: 0,
'controls-position': 'right',
},
null,
8,
['modelValue']
),
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x symbolStyle',
'popper-class': 'cms-el-select_check',
modelValue: unref(props2).line.symbol.type,
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) =>
(unref(props2).line.symbol.type = $event)),
'allow-create': '',
filterable: '',
placeholder: '\u6807\u8BB0\u70B9\u7C7B\u578B',
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
label: '\u25CB',
value: 'circle',
}),
createVNode$1(_component_el_option, {
label: '\u25C7',
value: 'diamond',
}),
createVNode$1(_component_el_option, {
label: '\u25A1',
value: 'rect',
}),
]),
_: 1,
},
8,
['modelValue']
),
]),
]),
]),
]),
createElementVNode('div', _hoisted_18$U, [
_hoisted_19$Q,
createElementVNode('div', _hoisted_20$K, [
createElementVNode('div', _hoisted_21$C, [
createElementVNode('div', _hoisted_22$A, [
createVNode$1(
_component_el_radio_group,
{
modelValue: unref(props2).line.line,
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) =>
(unref(props2).line.line = $event)),
},
{
default: withCtx(() => [
createVNode$1(
_component_el_radio,
{
label: 'line',
size: 'large',
},
{
default: withCtx(() => [_hoisted_23$x]),
_: 1,
}
),
createVNode$1(
_component_el_radio,
{
label: 'smooth',
size: 'large',
},
{
default: withCtx(() => [_hoisted_24$v]),
_: 1,
}
),
createVNode$1(
_component_el_radio,
{
label: 'step',
size: 'large',
},
{
default: withCtx(() => [_hoisted_25$q]),
_: 1,
}
),
]),
_: 1,
},
8,
['modelValue']
),
]),
]),
]),
]),
createVNode$1(_sfc_main$6w, { node: __props2.node }, null, 8, [
'node',
]),
]),
]),
_: 1,
}
)
)
}
},
})
var SetChart = /* @__PURE__ */ _export_sfc(_sfc_main$5L, [
['__scopeId', 'data-v-0c099238'],
])
var __glob_2_37 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: SetChart,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ChartPieRose_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$4V = { class: 'chartSettings' }
const config$F = {
category: 'chart',
name: '\u73AB\u7470\u56FE',
icon: 'icon-meiguitu',
permission: false,
}
const _sfc_main$5K = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$4V, [
createVNode$1(Type$3, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Data$4, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(QueryConditions$4, { node: unref(node2) }, null, 8, [
'node',
]),
createVNode$1(Title$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(SetChart$1, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Label, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Legend$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Padding, { node: unref(node2) }, null, 8, ['node']),
])
)
}
},
})
var ChartPieRose_settings = /* @__PURE__ */ _export_sfc(_sfc_main$5K, [
['__scopeId', 'data-v-1a92ad3d'],
])
var __glob_2_38 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$F,
default: ChartPieRose_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _sfc_main$5J = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
function updateChart2(chart2) {
const option2 = chart2.getOption()
for (const xAxis of option2.xAxis) {
Object.assign(xAxis, {
show: false,
})
}
for (const yAxis of option2.yAxis) {
Object.assign(yAxis, {
show: false,
})
}
let i2 = 0
if (option2.series) {
for (const series of option2.series) {
Object.assign(series, {
type: 'pie',
roseType: 'radius',
z: i2,
label: {
...series.label,
position:
{
top: 'outside',
inside: 'inside',
}[series.label.position] || 'outside',
},
})
i2++
}
}
chart2.setOption(
{
tooltip: {
trigger: 'item',
},
yAxis: option2.yAxis,
xAxis: option2.xAxis,
series: option2.series,
},
{ lazyUpdate: true }
)
}
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
Chart$1,
mergeProps(
{
node: $props2.node,
},
$props2.node.props,
{ updateChart: updateChart2 }
),
null,
16,
['node']
)
)
}
},
})
var __glob_2_39 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$5J,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var HeaderSettingDialog_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$4U = { class: 'header' }
const _hoisted_2$4a = { class: 'centent' }
const _hoisted_3$3K = { key: 0 }
const _hoisted_4$3d = ['onClick']
const _hoisted_5$2V = ['onClick']
const _sfc_main$5I = /* @__PURE__ */ defineComponent({
props: {
columnList: null,
visible: { type: Boolean },
title: null,
mappingName: null,
},
emits: ['confirm', 'close'],
setup(__props2, { emit: $emit }) {
const $props2 = __props2
const tableTreeRef = ref()
let selectionList = ref([])
let columnList = ref($props2.columnList || [])
const cancel2 = () => {
$emit('close')
}
const confirm2 = () => {
$emit('confirm', columnList.value)
cancel2()
}
const selectionChange = (selection) => {
selectionList.value = selection
}
const delItem = (list2, id2, childrenName) => {
for (let i2 = 0; i2 < list2.length; i2++) {
let item2 = list2[i2]
if (item2.id == id2) {
list2.splice(i2, 1, ...item2.children)
return
} else if (item2[childrenName] && item2[childrenName].length > 0) {
delItem(item2[childrenName], id2, childrenName)
}
}
}
const delColumn = (row) => {
delItem(columnList.value, row.id, 'children')
}
const editorColumn = (row) => {
row.editor = true
}
const editorLabel = (row) => {
row.editor = false
}
const mergeColumn = () => {
selectionList.value.sort((a2, b2) => {
if (a2._X_ROW_KEY < b2._X_ROW_KEY) {
return -1
} else if (a2._X_ROW_KEY > b2._X_ROW_KEY) {
return 1
} else {
return 0
}
})
let id2 = selectionList.value[0]?.id
if (!id2) return
let data2 = {
prop: initUtils.createRandomId(),
id: 'column-' + initUtils.createRandomId(),
label: '\u9ED8\u8BA4\u5206\u7EC4',
width: 100,
textAlign: '',
sortable: false,
children: selectionList.value,
}
addItem(columnList.value, id2, selectionList.value, data2)
tableTreeRef.value.clearSelection()
}
const addItem = (list2, id2, selectionList2, data2) => {
if (selectionList2.length) {
let index2 = lodash$2.exports.findIndex(list2, { id: id2 })
if (index2 >= 0) {
let num2 = 0
selectionList2.forEach((s2) => {
let index1 = lodash$2.exports.findIndex(list2, s2)
if (index1 >= 0) {
num2++
}
})
if (num2 != selectionList2.length) {
ElMessage.warning(
'\u8868\u5934\u5408\u5E76\u5931\u8D25\uFF0C\u53EA\u80FD\u9009\u62E9\u540C\u7EA7\u4E0B\u8FDB\u884C\u5408\u5E76\uFF01'
)
return
}
selectionList2.forEach((s2) => {
let index1 = lodash$2.exports.findIndex(list2, s2)
if (s2.id != id2 && index1 >= 0) {
list2.splice(index1, 1)
}
})
list2.splice(lodash$2.exports.findIndex(list2, { id: id2 }), 1, data2)
} else {
for (let i2 = 0; i2 < list2.length; i2++) {
let item2 = list2[i2]
if (item2['children'] && item2['children'].length > 0) {
addItem(item2['children'], id2, selectionList2, data2)
}
}
}
}
}
const resetColumn1 = (list2) => {
for (let i2 = 0; i2 < list2.length; i2++) {
let item2 = list2[i2]
if (item2.children) {
resetColumn1(item2.children)
list2.splice(i2, 1, ...item2.children)
}
}
}
const resetColumn = (list2) => {
resetColumn1(list2)
list2.sort((a2, b2) => {
if (a2.type > b2.type) {
return 1
} else if (a2.type < b2.type) {
return -1
} else {
return 0
}
})
}
watch$1(
() => $props2.columnList,
() => {
columnList.value.forEach((item2) => {
item2.editor = item2.editor || false
if (!item2.id) {
item2.id = 'column-' + initUtils.createRandomId()
}
})
},
{
immediate: true,
}
)
return (_ctx, _cache) => {
const _component_el_table_column = resolveComponent('el-table-column')
const _component_el_input = resolveComponent('el-input')
const _component_el_table = resolveComponent('el-table')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
'model-value': __props2.visible,
'destroy-on-close': true,
width: '510px',
top: '26vh',
title: __props2.title,
'custom-class': 'cms-el-dialog',
onClose: cancel2,
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$4U, [
createElementVNode(
'button',
{
class: 'merge-btn',
onClick: mergeColumn,
},
'\u5408\u5E76'
),
createElementVNode(
'button',
{
class: 'reset-btn',
onClick:
_cache[0] ||
(_cache[0] = ($event) => resetColumn(columnList.value)),
},
'\u91CD\u7F6E'
),
]),
createElementVNode('div', _hoisted_2$4a, [
createVNode$1(
_component_el_table,
{
class: 'cms-el-table table-dialog',
height: '250',
'highlight-current-row': '',
ref_key: 'tableTreeRef',
ref: tableTreeRef,
'tree-props': { children: 'children', hasChildren: true },
border: '',
data: columnList.value,
onSelect: selectionChange,
'row-key': 'id',
},
{
default: withCtx(() => [
createVNode$1(_component_el_table_column, {
type: 'selection',
width: '70',
align: 'center',
}),
createVNode$1(
_component_el_table_column,
{
prop: 'label',
label: '\u8868\u5934\u540D\u79F0',
},
{
default: withCtx(({ row }) => [
withDirectives(
createElementVNode(
'div',
{ class: 'column-header' },
toDisplayString$1(
__props2.mappingName[row.prop] || row.label
),
513
),
[[vShow, !row.editor]]
),
withDirectives(
createVNode$1(
_component_el_input,
{
class: 'column-input',
modelValue: row.label,
'onUpdate:modelValue': ($event) =>
(row.label = $event),
onChange: ($event) => editorLabel(row),
onBlur: ($event) => editorLabel(row),
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
'onChange',
'onBlur',
]
),
[[vShow, row.editor]]
),
]),
_: 1,
}
),
createVNode$1(
_component_el_table_column,
{
prop: 'action',
label: ' ',
width: '100',
align: 'right',
},
{
default: withCtx(({ row }) => [
row.children
? (openBlock(),
createElementBlock('div', _hoisted_3$3K, [
createElementVNode(
'i',
{
class: 'iconfont icon-bianjigongcheng',
onClick: ($event) => editorColumn(row),
},
null,
8,
_hoisted_4$3d
),
createElementVNode(
'i',
{
class: 'iconfont icon-tupianshanchu',
onClick: ($event) => delColumn(row),
},
null,
8,
_hoisted_5$2V
),
]))
: createCommentVNode('', true),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['data']
),
]),
createElementVNode(
'div',
{ class: 'el-dialog__footer el-dialog__footer1' },
[
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: cancel2,
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: confirm2,
},
'\u786E\u8BA4'
),
]
),
]),
_: 1,
},
8,
['model-value', 'title']
)
)
}
},
})
var HeaderSettingDialog = /* @__PURE__ */ _export_sfc(_sfc_main$5I, [
['__scopeId', 'data-v-40382cab'],
])
var HeaderSettingDialog$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: HeaderSettingDialog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ChartTable_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2N = (n2) => (
pushScopeId('data-v-52bb838d'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$4T = { class: 'chartSettings chart-table' }
const _hoisted_2$49 = /* @__PURE__ */ _withScopeId$2N(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u6837\u5F0F\u9009\u62E9\uFF1A',
-1
)
)
const _hoisted_3$3J = { class: 'table-type-list' }
const _hoisted_4$3c = ['onClick']
const _hoisted_5$2U = {
class: 'icon svg-icon',
'aria-hidden': 'true',
}
const _hoisted_6$2B = ['xlink:href']
const _hoisted_7$2g = { class: 'setting-item' }
const _hoisted_8$1$ = /* @__PURE__ */ _withScopeId$2N(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'date-type-text' },
'\u663E\u793A\u8868\u5934',
-1
)
)
const _hoisted_9$1R = { class: 'item' }
const _hoisted_10$1G = /* @__PURE__ */ _withScopeId$2N(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u5B57\u4F53', -1)
)
const _hoisted_11$1y = { class: 'cms-el-color-picker-x' }
const _hoisted_12$1u = { class: 'item' }
const _hoisted_13$1k = /* @__PURE__ */ _withScopeId$2N(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u80CC\u666F\u8272', -1)
)
const _hoisted_14$1a = { class: 'cms-el-color-picker-x' }
const _hoisted_15$15 = { class: 'item' }
const _hoisted_16$13 = /* @__PURE__ */ _withScopeId$2N(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u4F4D\u7F6E', -1)
)
const _hoisted_17$Z = { class: 'set-align' }
const _hoisted_18$T = ['onClick']
const _hoisted_19$P = ['title']
const _hoisted_20$J = { class: 'item' }
const _hoisted_21$B = /* @__PURE__ */ _withScopeId$2N(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u8868\u5934\u5206\u7EC4',
-1
)
)
const _hoisted_22$z = { class: 'setting-item' }
const _hoisted_23$w = { class: 'item' }
const _hoisted_24$u = /* @__PURE__ */ _withScopeId$2N(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u5B57\u4F53', -1)
)
const _hoisted_25$p = { class: 'cms-el-color-picker-x' }
const _hoisted_26$o = { class: 'item' }
const _hoisted_27$n = /* @__PURE__ */ _withScopeId$2N(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u80CC\u666F\u989C\u8272',
-1
)
)
const _hoisted_28$l = { class: 'cms-el-color-picker-x' }
const _hoisted_29$i = { class: 'item stripe' }
const _hoisted_30$i = /* @__PURE__ */ _withScopeId$2N(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u5947\u884C\u5B57\u4F53\u8272',
-1
)
)
const _hoisted_31$f = { class: 'cms-el-color-picker-x' }
const _hoisted_32$f = { class: 'right' }
const _hoisted_33$f = /* @__PURE__ */ _withScopeId$2N(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u80CC\u666F\u8272', -1)
)
const _hoisted_34$c = { class: 'cms-el-color-picker-x' }
const _hoisted_35$c = { class: 'item stripe' }
const _hoisted_36$a = /* @__PURE__ */ _withScopeId$2N(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u5076\u884C\u5B57\u4F53\u8272',
-1
)
)
const _hoisted_37$a = { class: 'cms-el-color-picker-x' }
const _hoisted_38$9 = { class: 'right' }
const _hoisted_39$8 = /* @__PURE__ */ _withScopeId$2N(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u80CC\u666F\u8272', -1)
)
const _hoisted_40$8 = { class: 'cms-el-color-picker-x' }
const _hoisted_41$8 = { class: 'item item1' }
const _hoisted_42$7 = /* @__PURE__ */ _withScopeId$2N(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u5BF9\u9F50\u65B9\u5F0F',
-1
)
)
const _hoisted_43$5 = { class: 'set-align' }
const _hoisted_44$4 = ['onClick']
const _hoisted_45$4 = ['title']
const _hoisted_46$4 = { class: 'item' }
const _hoisted_47$4 = /* @__PURE__ */ _withScopeId$2N(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u8FB9\u6846', -1)
)
const _hoisted_48$3 = { class: 'opt_img' }
const _hoisted_49$3 = ['src']
const _hoisted_50$3 = { key: 1 }
const _hoisted_51$3 = { class: 'cms-el-color-picker-x' }
const _hoisted_52$3 = { class: 'setting-item setting-item1' }
const _hoisted_53$3 = /* @__PURE__ */ _withScopeId$2N(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'date-type-text' },
'\u5217\u5BBD\u8BBE\u7F6E',
-1
)
)
const _hoisted_54$3 = /* @__PURE__ */ _withScopeId$2N(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'cms-el-color-picker-x iconfont icon-tishi1',
'data-tooltip-raw-content': '',
title:
'\u52FE\u9009\u5217\u5BBD\u8BBE\u7F6E\u540E\uFF0C\u652F\u6301\u5728\u7EC4\u4EF6\u4E0A\u62D6\u62C9\u8C03\u6574\u5217\u5BBD\uFF1B',
},
null,
-1
)
)
const _hoisted_55$3 = { class: 'table' }
const _hoisted_56$3 = { style: { 'padding-left': '10px' } }
const _hoisted_57$3 = ['title']
const _hoisted_58$3 = { style: { 'text-align': 'center' } }
const _hoisted_59$3 = { class: 'setting-item setting-item1' }
const _hoisted_60$3 = /* @__PURE__ */ _withScopeId$2N(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u7FFB\u9875\u6A21\u5F0F\uFF1A',
-1
)
)
const _hoisted_61$3 = { class: 'setting-item item' }
const _hoisted_62$3 = /* @__PURE__ */ _withScopeId$2N(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u6EDA\u52A8\u5468\u671F(\u79D2)',
-1
)
)
const _hoisted_63$3 = /* @__PURE__ */ _withScopeId$2N(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u6EDA\u52A8\u884C\u6570',
-1
)
)
const _hoisted_64$2 = { class: 'setting-item item' }
const _hoisted_65$2 = /* @__PURE__ */ _withScopeId$2N(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u6EDA\u52A8\u901F\u5EA6',
-1
)
)
const _hoisted_66$2 = /* @__PURE__ */ _withScopeId$2N(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u884C/\u79D2', -1)
)
const _hoisted_67$2 = { class: 'setting-item item' }
const _hoisted_68$2 = /* @__PURE__ */ _withScopeId$2N(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u6BCF\u9875\u6570\u91CF',
-1
)
)
const _hoisted_69$2 = { class: 'setting-item' }
const _hoisted_70$2 = { class: 'item1' }
const _hoisted_71$2 = /* @__PURE__ */ _withScopeId$2N(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'date-type-text' },
'\u663E\u793A\u5E8F\u53F7',
-1
)
)
const _hoisted_72$2 = { class: 'item1' }
const _hoisted_73 = /* @__PURE__ */ _withScopeId$2N(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'date-type-text' },
'\u5408\u5E76\u540C\u7C7B\u5355\u5143\u683C',
-1
)
)
const _hoisted_74 = { class: 'item1' }
const _hoisted_75 = /* @__PURE__ */ _withScopeId$2N(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'date-type-text' },
'\u5B57\u4F53\u6EA2\u51FA\u6362\u884C',
-1
)
)
const _hoisted_76 = { class: 'add-style' }
const _hoisted_77 = { class: 'flex justify-between' }
const _hoisted_78 = /* @__PURE__ */ createTextVNode(
' \u7EF4\u5EA6\u6837\u5F0F\uFF1A '
)
const _hoisted_79 = {
key: 0,
class: 'add-button',
}
const _hoisted_80 = { class: 'table' }
const _hoisted_81 = { class: 'table-icon' }
const _hoisted_82 = { class: 'add-style' }
const _hoisted_83 = { class: 'flex justify-between' }
const _hoisted_84 = /* @__PURE__ */ createTextVNode(
' \u6307\u6807\u6837\u5F0F\uFF1A '
)
const _hoisted_85 = {
key: 0,
class: 'add-button',
}
const _hoisted_86 = { class: 'table' }
const _hoisted_87 = { class: 'table-icon' }
const _hoisted_88 = { class: 'setting-item item' }
const _hoisted_89 = /* @__PURE__ */ _withScopeId$2N(() =>
/* @__PURE__ */ createElementVNode(
'span',
{
class: 'date-type-text',
style: { padding: '0' },
},
'\u663E\u793A\u5408\u8BA1\u884C',
-1
)
)
const _hoisted_90 = {
class: 'cms-el-color-picker-x',
style: { transform: 'translateY(2px)' },
}
const _hoisted_91 = { class: 'setting-item item' }
const _hoisted_92 = /* @__PURE__ */ _withScopeId$2N(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u5B57\u4F53', -1)
)
const _hoisted_93 = { class: 'cms-el-color-picker-x' }
const _hoisted_94 = { class: 'setting-item item' }
const _hoisted_95 = /* @__PURE__ */ _withScopeId$2N(() =>
/* @__PURE__ */ createElementVNode(
'span',
{
class: 'span',
style: { width: 'auto' },
},
'\u4F4D\u7F6E',
-1
)
)
const _hoisted_96 = { class: 'set-align' }
const _hoisted_97 = ['onClick']
const _hoisted_98 = { class: 'setting-item setting-item1' }
const _hoisted_99 = /* @__PURE__ */ _withScopeId$2N(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
[
/* @__PURE__ */ createTextVNode(' \u5408\u8BA1\u8303\u56F4\uFF1A'),
/* @__PURE__ */ createElementVNode('i', {
class: 'cms-el-color-picker-x iconfont icon-tishi1',
'data-tooltip-raw-content': '',
title:
'\u67E5\u8BE2\u5408\u8BA1\uFF1A\u5BF9\u67E5\u8BE2\u7684\u6240\u6709\u6570\u636E\u8FDB\u884C\u6C47\u603B\u5408\u8BA1
\u5206\u9875\u5408\u8BA1\uFF1A\u5BF9\u5206\u9875\u6570\u636E\u8FDB\u884C\u6C47\u603B\u5408\u8BA1',
}),
],
-1
)
)
const _hoisted_100 = /* @__PURE__ */ _withScopeId$2N(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u5408\u8BA1\u65B9\u5F0F\uFF1A',
-1
)
)
const _hoisted_101 = ['title']
const config$E = {
category: 'chart',
name: '\u8868\u683C',
icon: 'icon-biaoge',
permission: false,
}
const _sfc_main$5H = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
const defaultTablePropsCopy2 = lodash$2.exports.cloneDeep(defaultProps$8)
const props2 = lodash$2.exports.defaults(
reactive(node2.props),
defaultTablePropsCopy2
)
let headerSetting = ref(false)
let mappingName2 = ref({})
const FONT_SIZE = [12, 13, 14, 15, 16, 17, 18, 19, 20, 24, 28, 32, 36]
const tableOption = props2.tableConfig.tableOption
const tableHeaderOption = props2.tableConfig.tableHeaderOption
const tableBodyOption = props2.tableConfig.tableBodyOption
const tableHeaderStyle = props2.tableConfig.tableHeaderStyle
let tableHeaderStyleConverter = ref(styleConverter(tableHeaderStyle))
const tableBodyStyle = props2.tableConfig.tableBodyStyle
let tableBodyStyleConverter = ref(styleConverter(tableBodyStyle))
const totalRowOption = props2.tableConfig.totalRowOption
const showTotalRow = computed(() => {
return !props2.dataConfig.isVariableName
})
watch$1(
() => {
return props2.dataConfig.isVariableName
},
(val2) => {
if (val2) {
props2.tableConfig.totalRowOption.show = !val2
}
}
)
const indexesList = computed(() => {
let list2 = []
list2 = props2.dataConfig.indexes.map((item2, index2) => {
const mode2 =
item2.mode !== '' && item2.mode !== null ? '-' + item2.mode : ''
return { ...item2, id: item2.id + mode2, prop: item2.id + mode2 }
})
return list2
})
const changeTableType = (item2) => {
tableOption.tableType = item2.type
switch (item2.type) {
case 'concise':
tableHeaderStyle.backgroundColor = '#b2d8ff'
tableHeaderStyle.color = '#131313'
break
case 'stripe':
tableHeaderStyle.backgroundColor = '#6388d0'
tableHeaderStyle.color = '#fff'
break
case 'border':
tableHeaderStyle.backgroundColor = 'rgb(178, 216, 255)'
tableHeaderStyle.color = 'rgb(19, 19, 19)'
break
}
}
const changeTableHeaderAlign = (val2) => {
tableHeaderStyle.textAlign = val2
}
const changeTatolRowLocaltion = (val2) => {
totalRowOption.location = val2
}
const totalRangeChange = (val2) => {
val2 === 'total' &&
tableOption.columnOptionList.forEach((e2) => {
e2.calculation = 'sum'
})
}
const dialogConfirm = (data2) => {
tableOption.tableColumnList = data2
}
const dimissionsTable = ref({})
let dimissionsVisible = ref(false)
let dimissionsData = ref('')
const addDimissionsStyle = () => {
let data2 = {
fieldId: '',
conditionList: [],
}
props2.tableConfig.dimissionsConditions.push(data2)
dimissionsTable.value.loadData(props2.tableConfig.dimissionsConditions)
}
const setDimissionsDisabled = (fieldId) => {
let bool2 = false
props2.tableConfig.dimissionsConditions.forEach((item2) => {
if (item2.fieldId == fieldId) {
bool2 = true
}
})
return bool2
}
const currentChangeEvent1 = ({ rowIndex }) => {
dimissionsData.value = {
row: dimissionsTable.value.getCurrentRecord(),
rowIndex,
}
}
const delDimissionsCondition = (row, rowIndex) => {
dimissionsTable.value.clearCurrentRow()
dimissionsData.value = ''
props2.tableConfig.dimissionsConditions.splice(rowIndex, 1)
dimissionsTable.value.loadData(props2.tableConfig.dimissionsConditions)
}
const editorDimissionsCondition = (row, rowIndex) => {
if (!row.fieldId) return
dimissionsVisible.value = true
}
const dimissionsConfirm = (list2) => {
props2.tableConfig.dimissionsConditions[
dimissionsData.value.rowIndex
].conditionList = list2
}
const getConditionData2 = (item2) => {
let condition2 = dimissionsConditionTypeList.filter((d3) => {
return d3.value == item2.condition
})[0]?.label
return `${condition2}(${item2.value})`
}
const indexesTable = ref({})
let indexesVisible = ref(false)
let indexesData = ref('')
const addIndexesStyle = () => {
let data2 = {
fieldId: '',
conditionList: [],
}
props2.tableConfig.indexesConditions.push(data2)
indexesTable.value.loadData(props2.tableConfig.indexesConditions)
}
const setDisabled = (fieldId) => {
let bool2 = false
props2.tableConfig.indexesConditions.forEach((item2) => {
if (item2.fieldId == fieldId) {
bool2 = true
}
})
return bool2
}
const currentChangeEvent = ({ rowIndex }) => {
indexesData.value = {
row: indexesTable.value.getCurrentRecord(),
rowIndex,
}
}
const delIndexesCondition = (row, rowIndex) => {
indexesTable.value.clearCurrentRow()
indexesData.value = ''
props2.tableConfig.indexesConditions.splice(rowIndex, 1)
indexesTable.value.loadData(props2.tableConfig.indexesConditions)
}
const editorIndexesCondition = (row, rowIndex) => {
if (!row.fieldId) return
indexesVisible.value = true
}
const indexesConfirm = (list2) => {
props2.tableConfig.indexesConditions[
indexesData.value.rowIndex
].conditionList = list2
}
const settingsTable = ref({})
watch$1(
() => tableOption.columnOptionList,
() => {
settingsTable.value.loadData(tableOption.columnOptionList)
},
{
deep: true,
}
)
async function getMapping() {
const dataConfig = props2.dataConfig
let defaultMapping = getdefaultMappingData(
props2.dataConfig.dimissions,
props2.dataConfig.indexes
)
if (0 === dataConfig.dataType) {
let dataSetId = dataConfig.dataSetId
let dataSetType = dataConfig.dataSetType
let fieldList = await fetchDataSetFieldList(dataSetId, dataSetType)
dataConfig.dimissions
.filter((d3) => d3.id)
.forEach((i2) => {
let field2 = fieldList.filter((f2) => i2.id == f2.id)[0]
mappingName2.value[i2.id] = i2.aliasName || field2.fieldName
})
dataConfig.indexes
.filter((i2) => i2.id)
.forEach((i2) => {
let field2 = fieldList.filter((f2) => i2.id == f2.id)[0]
mappingName2.value[`${i2.id}-${i2.mode}`] =
i2.aliasName || field2.fieldName + `(${methodList[i2.mode]})`
})
if (!fieldList.length) mappingName2.value = defaultMapping.mapName
} else if (dataConfig.dataType === DATA_TYPE.HISTORY) {
mappingName2.value = defaultMapping.mapName
} else if (dataConfig.dataType === DATA_TYPE.VARIABLE) {
const arr = [...dataConfig.dimissions, ...dataConfig.indexes]
arr
.filter((d3) => d3.id)
.forEach((i2) => {
mappingName2.value[`${i2.id}`] = i2.fieldName
})
}
}
let dimissionsIndexesStrings2 = ''
watch$1(
[
() => props2.dataConfig.dimissions.filter((item2) => item2.id),
() => props2.dataConfig.indexes.filter((item2) => item2.id),
],
(n2) => {
let str = JSON.stringify(n2)
if (dimissionsIndexesStrings2 === str) return
dimissionsIndexesStrings2 = str
getMapping()
},
{
immediate: true,
deep: true,
}
)
onMounted(() => {})
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_color_picker = resolveComponent('el-color-picker')
const _component_el_input_number = resolveComponent('el-input-number')
const _component_vxe_column = resolveComponent('vxe-column')
const _component_vxe_table = resolveComponent('vxe-table')
const _component_el_radio = resolveComponent('el-radio')
const _component_el_radio_group = resolveComponent('el-radio-group')
const _component_el_input = resolveComponent('el-input')
return (
openBlock(),
createElementBlock('div', _hoisted_1$4T, [
createVNode$1(Type$3, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(Data$4, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(QueryConditions$4, { node: unref(node2) }, null, 8, [
'node',
]),
createVNode$1(
_sfc_main$72,
{
title: '\u56FE\u8868\u8BBE\u7F6E',
fold: '',
},
{
default: withCtx(() => [
_hoisted_2$49,
createElementVNode('div', _hoisted_3$3J, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(tableTypeList), (item2) => {
return (
openBlock(),
createElementBlock(
'div',
{
key: item2.type,
class: normalizeClass([
'type-item',
{
active:
unref(tableOption).tableType == item2.type,
},
]),
onClick: ($event) => changeTableType(item2),
},
[
(openBlock(),
createElementBlock('svg', _hoisted_5$2U, [
createElementVNode(
'use',
{
'xlink:href': '#' + item2.icon,
},
null,
8,
_hoisted_6$2B
),
])),
createElementVNode(
'span',
null,
toDisplayString$1(item2.label),
1
),
],
10,
_hoisted_4$3c
)
)
}),
128
)),
]),
]),
_: 1,
}
),
createVNode$1(
_sfc_main$72,
{
title: '\u8868\u5934\u8BBE\u7F6E',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_7$2g, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(tableHeaderOption).showTableHeader,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(tableHeaderOption).showTableHeader = $event)),
class: 'cms-el-checkbox-font-size-12',
},
{
default: withCtx(() => [_hoisted_8$1$]),
_: 1,
},
8,
['modelValue']
),
unref(tableHeaderOption).showTableHeader
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
createElementVNode('div', _hoisted_9$1R, [
_hoisted_10$1G,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
modelValue: unref(tableHeaderStyle).fontFamily,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(tableHeaderStyle).fontFamily =
$event)),
'allow-create': '',
filterable: '',
placeholder: '\u8BF7\u9009\u62E9',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(fontFamilyList),
(item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
hidden: item2.hidden,
},
null,
8,
['label', 'value', 'hidden']
)
)
}
),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x font-select',
'popper-class': 'cms-el-select_check',
modelValue:
tableHeaderStyleConverter.value.fontSize,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(tableHeaderStyleConverter.value.fontSize =
$event)),
'allow-create': '',
filterable: '',
placeholder: ' ',
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(FONT_SIZE, (size) => {
return createVNode$1(
_component_el_option,
{
key: size,
label: size,
value: size,
},
null,
8,
['label', 'value']
)
}),
64
)),
]),
_: 1,
},
8,
['modelValue']
),
createElementVNode('div', _hoisted_11$1y, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
modelValue: unref(tableHeaderStyle).color,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(tableHeaderStyle).color = $event)),
},
null,
8,
['predefine', 'modelValue']
),
]),
]),
createElementVNode('div', _hoisted_12$1u, [
_hoisted_13$1k,
createElementVNode('div', _hoisted_14$1a, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
modelValue:
unref(tableHeaderStyle).backgroundColor,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(tableHeaderStyle).backgroundColor =
$event)),
},
null,
8,
['predefine', 'modelValue']
),
]),
]),
createElementVNode('div', _hoisted_15$15, [
_hoisted_16$13,
createElementVNode('div', _hoisted_17$Z, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(textAlignList), (item2) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'icon-radio',
{
active:
unref(tableHeaderStyle)
.textAlign === item2.value,
},
]),
key: item2.value,
onClick: ($event) =>
changeTableHeaderAlign(item2.value),
},
[
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont',
`icon-${
{
left: 'biaotou-zuo',
center: 'biaotou-zhong',
right: 'biaotou-you',
}[item2.value]
}`,
]),
title: item2.label,
},
null,
10,
_hoisted_19$P
),
],
10,
_hoisted_18$T
)
)
}),
128
)),
]),
]),
createElementVNode('div', _hoisted_20$J, [
_hoisted_21$B,
createElementVNode('i', {
onClick:
_cache[5] ||
(_cache[5] = ($event) =>
(headerSetting.value = true)),
class: 'iconfont icon-bianjigongcheng',
}),
]),
],
64
))
: createCommentVNode('', true),
]),
headerSetting.value
? (openBlock(),
createBlock(
HeaderSettingDialog,
{
key: 0,
title: '\u8868\u5934\u5206\u7EC4',
visible: headerSetting.value,
mappingName: mappingName2.value,
onClose:
_cache[6] ||
(_cache[6] = ($event) =>
(headerSetting.value = false)),
columnList: unref(tableOption).tableColumnList,
onConfirm: dialogConfirm,
},
null,
8,
['visible', 'mappingName', 'columnList']
))
: createCommentVNode('', true),
]),
_: 1,
}
),
createVNode$1(
_sfc_main$72,
{
title: '\u8868\u8EAB\u8BBE\u7F6E',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_22$z, [
createElementVNode('div', _hoisted_23$w, [
_hoisted_24$u,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
modelValue: unref(tableBodyStyle).fontFamily,
'onUpdate:modelValue':
_cache[7] ||
(_cache[7] = ($event) =>
(unref(tableBodyStyle).fontFamily = $event)),
'allow-create': '',
filterable: '',
placeholder: '\u8BF7\u9009\u62E9',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(fontFamilyList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
hidden: item2.hidden,
},
null,
8,
['label', 'value', 'hidden']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x font-select',
'popper-class': 'cms-el-select_check',
modelValue: tableBodyStyleConverter.value.fontSize,
'onUpdate:modelValue':
_cache[8] ||
(_cache[8] = ($event) =>
(tableBodyStyleConverter.value.fontSize = $event)),
'allow-create': '',
filterable: '',
placeholder: ' ',
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(FONT_SIZE, (size) => {
return createVNode$1(
_component_el_option,
{
key: size,
label: size,
value: size,
},
null,
8,
['label', 'value']
)
}),
64
)),
]),
_: 1,
},
8,
['modelValue']
),
createElementVNode('div', _hoisted_25$p, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
modelValue: unref(tableBodyStyle).color,
'onUpdate:modelValue':
_cache[9] ||
(_cache[9] = ($event) =>
(unref(tableBodyStyle).color = $event)),
},
null,
8,
['predefine', 'modelValue']
),
]),
]),
withDirectives(
createElementVNode(
'div',
_hoisted_26$o,
[
_hoisted_27$n,
createElementVNode('div', _hoisted_28$l, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
modelValue: unref(tableBodyStyle).backgroundColor,
'onUpdate:modelValue':
_cache[10] ||
(_cache[10] = ($event) =>
(unref(tableBodyStyle).backgroundColor =
$event)),
},
null,
8,
['predefine', 'modelValue']
),
]),
],
512
),
[[vShow, unref(tableOption).tableType != 'stripe']]
),
withDirectives(
createElementVNode(
'div',
_hoisted_29$i,
[
_hoisted_30$i,
createElementVNode('div', _hoisted_31$f, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
modelValue:
unref(tableBodyStyle)['--oddRowColor'],
'onUpdate:modelValue':
_cache[11] ||
(_cache[11] = ($event) =>
(unref(tableBodyStyle)['--oddRowColor'] =
$event)),
},
null,
8,
['predefine', 'modelValue']
),
]),
createElementVNode('div', _hoisted_32$f, [
_hoisted_33$f,
createElementVNode('div', _hoisted_34$c, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
modelValue:
unref(tableBodyStyle)[
'--oddRowBackgroundColor'
],
'onUpdate:modelValue':
_cache[12] ||
(_cache[12] = ($event) =>
(unref(tableBodyStyle)[
'--oddRowBackgroundColor'
] = $event)),
},
null,
8,
['predefine', 'modelValue']
),
]),
]),
],
512
),
[[vShow, unref(tableOption).tableType == 'stripe']]
),
withDirectives(
createElementVNode(
'div',
_hoisted_35$c,
[
_hoisted_36$a,
createElementVNode('div', _hoisted_37$a, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
modelValue:
unref(tableBodyStyle)['--evenRowColor'],
'onUpdate:modelValue':
_cache[13] ||
(_cache[13] = ($event) =>
(unref(tableBodyStyle)['--evenRowColor'] =
$event)),
},
null,
8,
['predefine', 'modelValue']
),
]),
createElementVNode('div', _hoisted_38$9, [
_hoisted_39$8,
createElementVNode('div', _hoisted_40$8, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
modelValue:
unref(tableBodyStyle)[
'--evenRowBackgroundColor'
],
'onUpdate:modelValue':
_cache[14] ||
(_cache[14] = ($event) =>
(unref(tableBodyStyle)[
'--evenRowBackgroundColor'
] = $event)),
},
null,
8,
['predefine', 'modelValue']
),
]),
]),
],
512
),
[[vShow, unref(tableOption).tableType == 'stripe']]
),
createElementVNode('div', _hoisted_41$8, [
_hoisted_42$7,
createElementVNode('div', _hoisted_43$5, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(textAlignList), (item2) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'icon-radio',
{
active:
unref(tableBodyStyle).textAlign ===
item2.value,
},
]),
key: item2.value,
onClick: ($event) =>
(unref(tableBodyStyle).textAlign =
item2.value),
},
[
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont',
`icon-${
{
left: 'biaotou-zuo',
center: 'biaotou-zhong',
right: 'biaotou-you',
}[item2.value]
}`,
]),
title: item2.label,
},
null,
10,
_hoisted_45$4
),
],
10,
_hoisted_44$4
)
)
}),
128
)),
]),
]),
withDirectives(
createElementVNode(
'div',
_hoisted_46$4,
[
_hoisted_47$4,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
modelValue: unref(tableBodyStyle).borderStyle,
'onUpdate:modelValue':
_cache[15] ||
(_cache[15] = ($event) =>
(unref(tableBodyStyle).borderStyle = $event)),
placeholder: '\u8BF7\u9009\u62E9',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(borderStyleList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
{
default: withCtx(() => [
createElementVNode(
'div',
_hoisted_48$3,
[
item2.src !== ''
? (openBlock(),
createElementBlock(
'img',
{
key: 0,
src: item2.src,
},
null,
8,
_hoisted_49$3
))
: (openBlock(),
createElementBlock(
'span',
_hoisted_50$3,
toDisplayString$1(
item2.label
),
1
)),
]
),
]),
_: 2,
},
1032,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x font-select',
'controls-position': 'right',
min: 0,
modelValue:
tableBodyStyleConverter.value.borderWidth,
'onUpdate:modelValue':
_cache[16] ||
(_cache[16] = ($event) =>
(tableBodyStyleConverter.value.borderWidth =
$event)),
},
null,
8,
['modelValue']
),
createElementVNode('div', _hoisted_51$3, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
modelValue: unref(tableBodyStyle).borderColor,
'onUpdate:modelValue':
_cache[17] ||
(_cache[17] = ($event) =>
(unref(tableBodyStyle).borderColor = $event)),
},
null,
8,
['predefine', 'modelValue']
),
]),
],
512
),
[[vShow, unref(tableOption).tableType == 'border']]
),
]),
createElementVNode('div', _hoisted_52$3, [
createVNode$1(
_component_el_checkbox,
{
modelValue:
unref(tableHeaderOption).showColumnWidthAdjustList,
'onUpdate:modelValue':
_cache[18] ||
(_cache[18] = ($event) =>
(unref(tableHeaderOption).showColumnWidthAdjustList =
$event)),
class: 'cms-el-checkbox-font-size-12',
},
{
default: withCtx(() => [_hoisted_53$3]),
_: 1,
},
8,
['modelValue']
),
_hoisted_54$3,
withDirectives(
createElementVNode(
'div',
_hoisted_55$3,
[
createVNode$1(
_component_vxe_table,
{
border: '',
size: 'small',
class: 'cms-vxe-table settings-table',
ref_key: 'settingsTable',
ref: settingsTable,
height: '200',
'show-overflow': 'tooltip',
data: unref(tableOption).columnOptionList,
},
{
default: withCtx(() => [
createVNode$1(
_component_vxe_column,
{
field: 'label',
title: '\u5217\u540D',
width: '70',
},
{
default: withCtx(({ row }) => [
createElementVNode(
'div',
_hoisted_56$3,
toDisplayString$1(
mappingName2.value[row.prop]
),
1
),
]),
_: 1,
}
),
createVNode$1(
_component_vxe_column,
{
field: 'width',
title: '\u5217\u5BBD',
},
{
default: withCtx(({ row }) => [
createVNode$1(
_component_el_input_number,
{
min: 0,
class: 'cms-el-input-number-x',
'controls-position': 'right',
modelValue: row.width,
'onUpdate:modelValue': ($event) =>
(row.width = $event),
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
]),
_: 1,
}
),
createVNode$1(
_component_vxe_column,
{
field: 'textAlign',
title: '\u5BF9\u9F50\u65B9\u5F0F',
},
{
default: withCtx(({ row }) => [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x align-select',
'popper-class': 'cms-el-select_check',
modelValue: row.textAlign,
'onUpdate:modelValue': ($event) =>
(row.textAlign = $event),
'allow-create': '',
filterable: '',
placeholder: '\u8BF7\u9009\u62E9',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(textAlignList),
(item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
{
default: withCtx(() => [
createElementVNode(
'i',
{
class:
normalizeClass([
'iconfont',
`icon-${
{
left: 'zuo',
center:
'zhong',
right:
'you',
}[item2.value]
}`,
]),
title: item2.label,
},
null,
10,
_hoisted_57$3
),
]),
_: 2,
},
1032,
['label', 'value']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue']
),
]),
_: 1,
}
),
createVNode$1(
_component_vxe_column,
{
field: 'sortable',
title: '\u6392\u5E8F',
width: '45',
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_58$3, [
createVNode$1(
_component_el_checkbox,
{
class: 'cms-el-checkbox',
modelValue: row.sortable,
'onUpdate:modelValue': ($event) =>
(row.sortable = $event),
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
]),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['data']
),
],
512
),
[
[
vShow,
unref(tableHeaderOption).showColumnWidthAdjustList,
],
]
),
]),
createElementVNode('div', _hoisted_59$3, [
_hoisted_60$3,
createVNode$1(
_component_el_radio_group,
{
class: 'radio-group',
modelValue: unref(tableBodyOption).pageType,
'onUpdate:modelValue':
_cache[19] ||
(_cache[19] = ($event) =>
(unref(tableBodyOption).pageType = $event)),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(pageTypeList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_radio,
{
key: item2.value,
label: item2.value,
class: 'cms-el-radio',
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(item2.label),
1
),
]),
_: 2,
},
1032,
['label']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
withDirectives(
createElementVNode(
'div',
_hoisted_61$3,
[
createElementVNode('div', null, [
_hoisted_62$3,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x select',
min: 0,
modelValue: unref(tableBodyOption).srollCycle,
'onUpdate:modelValue':
_cache[20] ||
(_cache[20] = ($event) =>
(unref(tableBodyOption).srollCycle = $event)),
'controls-position': 'right',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', null, [
_hoisted_63$3,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x select',
min: 0,
modelValue: unref(tableBodyOption).srollRow,
'onUpdate:modelValue':
_cache[21] ||
(_cache[21] = ($event) =>
(unref(tableBodyOption).srollRow = $event)),
'controls-position': 'right',
},
null,
8,
['modelValue']
),
]),
],
512
),
[[vShow, unref(tableBodyOption).pageType == 'cycleScroll']]
),
withDirectives(
createElementVNode(
'div',
_hoisted_64$2,
[
_hoisted_65$2,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x select',
min: 0,
modelValue: unref(tableBodyOption).scrollSpeed,
'onUpdate:modelValue':
_cache[22] ||
(_cache[22] = ($event) =>
(unref(tableBodyOption).scrollSpeed = $event)),
'controls-position': 'right',
},
null,
8,
['modelValue']
),
_hoisted_66$2,
],
512
),
[
[
vShow,
unref(tableBodyOption).pageType == 'continuScroll',
],
]
),
withDirectives(
createElementVNode(
'div',
_hoisted_67$2,
[
_hoisted_68$2,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x select',
'popper-class': 'cms-el-select_check',
modelValue: unref(tableBodyOption).pageSize,
'onUpdate:modelValue':
_cache[23] ||
(_cache[23] = ($event) =>
(unref(tableBodyOption).pageSize = $event)),
placeholder: '\u8BF7\u9009\u62E9',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(pageSizeList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
],
512
),
[[vShow, unref(tableBodyOption).pageType == 'page']]
),
]),
createElementVNode('div', _hoisted_69$2, [
createElementVNode('div', _hoisted_70$2, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(tableBodyOption).showSerialNumber,
'onUpdate:modelValue':
_cache[24] ||
(_cache[24] = ($event) =>
(unref(tableBodyOption).showSerialNumber = $event)),
class: 'cms-el-checkbox-font-size-12',
},
{
default: withCtx(() => [_hoisted_71$2]),
_: 1,
},
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_72$2, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(tableBodyOption).mergeSimilarCell,
'onUpdate:modelValue':
_cache[25] ||
(_cache[25] = ($event) =>
(unref(tableBodyOption).mergeSimilarCell = $event)),
class: 'cms-el-checkbox-font-size-12',
},
{
default: withCtx(() => [_hoisted_73]),
_: 1,
},
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_74, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(tableBodyOption).wrap,
'onUpdate:modelValue':
_cache[26] ||
(_cache[26] = ($event) =>
(unref(tableBodyOption).wrap = $event)),
class: 'cms-el-checkbox-font-size-12',
},
{
default: withCtx(() => [_hoisted_75]),
_: 1,
},
8,
['modelValue']
),
]),
]),
]),
_: 1,
}
),
createVNode$1(
_sfc_main$72,
{
title: '\u6761\u4EF6\u6837\u5F0F',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_76, [
createElementVNode('div', _hoisted_77, [
_hoisted_78,
unref(props2).tableConfig.dimissionsConditions.length
? (openBlock(),
createElementBlock('div', _hoisted_79, [
createElementVNode('i', {
class: 'iconfont icon-tianjiahuamian',
onClick: addDimissionsStyle,
}),
]))
: (openBlock(),
createElementBlock(
'button',
{
key: 1,
class: 'cms-btn btn-screen-btn add-btn',
onClick: addDimissionsStyle,
},
' +\u6DFB\u52A0\u6837\u5F0F '
)),
]),
withDirectives(
createElementVNode(
'div',
_hoisted_80,
[
createVNode$1(
_component_vxe_table,
{
border: '',
size: 'small',
class: 'cms-vxe-table settings-table',
ref_key: 'dimissionsTable',
ref: dimissionsTable,
height:
unref(props2).tableConfig.dimissionsConditions
.length > 5
? 200
: 0,
'show-overflow': 'tooltip',
'row-config': {
isCurrent: true,
isHover: true,
keyField: 'id',
},
data: unref(props2).tableConfig
.dimissionsConditions,
onCurrentChange: currentChangeEvent1,
},
{
default: withCtx(() => [
createVNode$1(
_component_vxe_column,
{
field: 'id',
title: '\u5B57\u6BB5',
width: '90',
},
{
default: withCtx(({ row }) => [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
modelValue: row.fieldId,
'onUpdate:modelValue': ($event) =>
(row.fieldId = $event),
'allow-create': '',
filterable: '',
placeholder: '\u9009\u62E9\u5B57\u6BB5',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(props2).dataConfig
.dimissions,
(item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
disabled:
setDimissionsDisabled(
item2.id
),
key: item2.id,
label:
mappingName2.value[
item2.id
],
value: item2.id,
},
null,
8,
[
'disabled',
'label',
'value',
]
)
)
}
),
128
)),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue']
),
]),
_: 1,
}
),
createVNode$1(
_component_vxe_column,
{
field: 'condition',
title: '\u6761\u4EF6\u6837\u5F0F',
},
{
default: withCtx(({ row }) => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
row.conditionList,
(item1, index2) => {
return (
openBlock(),
createElementBlock(
'span',
{
class: 'condition-td',
key: index2,
},
[
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont',
item1.iconType,
]),
style: normalizeStyle$1({
color: item1.color,
font: 'inherit',
}),
},
null,
6
),
createTextVNode(
' ' +
toDisplayString$1(
getConditionData2(item1)
),
1
),
withDirectives(
createElementVNode(
'span',
null,
',',
512
),
[
[
vShow,
index2 !=
row.conditionList
.length -
1,
],
]
),
]
)
)
}
),
128
)),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['height', 'data']
),
withDirectives(
createElementVNode(
'div',
_hoisted_81,
[
withDirectives(
createElementVNode(
'i',
{
class: 'iconfont icon-bianjigongcheng',
onClick:
_cache[27] ||
(_cache[27] = ($event) =>
editorDimissionsCondition(
dimissionsData.value.row,
dimissionsData.value.rowIndex
)),
},
null,
512
),
[[vShow, dimissionsData.value.row?.fieldId]]
),
createElementVNode('i', {
class: 'iconfont icon-qingchu',
onClick:
_cache[28] ||
(_cache[28] = ($event) =>
delDimissionsCondition(
dimissionsData.value.row,
dimissionsData.value.rowIndex
)),
}),
],
512
),
[
[
vShow,
dimissionsData.value && dimissionsData.value.row,
],
]
),
],
512
),
[
[
vShow,
unref(props2).tableConfig.dimissionsConditions.length,
],
]
),
dimissionsVisible.value
? (openBlock(),
createBlock(
Dialog$2,
{
key: 0,
title: '\u6761\u4EF6\u6837\u5F0F',
visible: dimissionsVisible.value,
onClose:
_cache[29] ||
(_cache[29] = ($event) =>
(dimissionsVisible.value = false)),
onConfirm: dimissionsConfirm,
getData: dimissionsData.value.row,
conditionTypeList: unref(dimissionsConditionTypeList),
iconList: unref(dimissionsIconList),
mappingName: mappingName2.value,
},
null,
8,
[
'visible',
'getData',
'conditionTypeList',
'iconList',
'mappingName',
]
))
: createCommentVNode('', true),
]),
createElementVNode('div', _hoisted_82, [
createElementVNode('div', _hoisted_83, [
_hoisted_84,
unref(props2).tableConfig.indexesConditions.length
? (openBlock(),
createElementBlock('div', _hoisted_85, [
createElementVNode('i', {
class: 'iconfont icon-tianjiahuamian',
onClick: addIndexesStyle,
}),
]))
: (openBlock(),
createElementBlock(
'button',
{
key: 1,
class: 'cms-btn btn-screen-btn add-btn',
onClick: addIndexesStyle,
},
' +\u6DFB\u52A0\u6837\u5F0F '
)),
]),
withDirectives(
createElementVNode(
'div',
_hoisted_86,
[
createVNode$1(
_component_vxe_table,
{
border: '',
size: 'small',
class: 'cms-vxe-table settings-table',
ref_key: 'indexesTable',
ref: indexesTable,
height:
unref(props2).tableConfig.indexesConditions
.length > 5
? 200
: 0,
'show-overflow': 'tooltip',
'row-config': {
isCurrent: true,
isHover: true,
keyField: 'id',
},
data: unref(props2).tableConfig.indexesConditions,
onCurrentChange: currentChangeEvent,
},
{
default: withCtx(() => [
createVNode$1(
_component_vxe_column,
{
field: 'id',
title: '\u5B57\u6BB5',
width: '90',
},
{
default: withCtx(({ row }) => [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
modelValue: row.fieldId,
'onUpdate:modelValue': ($event) =>
(row.fieldId = $event),
'allow-create': '',
filterable: '',
placeholder: '\u9009\u62E9\u5B57\u6BB5',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
indexesList.value,
(item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
disabled: setDisabled(
item2.id
),
key: item2.id,
label:
mappingName2.value[
item2.id
],
value: item2.id,
},
null,
8,
[
'disabled',
'label',
'value',
]
)
)
}
),
128
)),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue']
),
]),
_: 1,
}
),
createVNode$1(
_component_vxe_column,
{
field: 'condition',
title: '\u6761\u4EF6\u6837\u5F0F',
},
{
default: withCtx(({ row }) => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
row.conditionList,
(item1, index2) => {
return (
openBlock(),
createElementBlock(
'span',
{
class: 'condition-td',
key: index2,
},
[
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont',
item1.iconType,
]),
style: normalizeStyle$1({
color: item1.color,
font: 'inherit',
}),
},
null,
6
),
createTextVNode(
' ' +
toDisplayString$1(
item1.condition +
item1.value
),
1
),
withDirectives(
createElementVNode(
'span',
null,
',',
512
),
[
[
vShow,
index2 !=
row.conditionList
.length -
1,
],
]
),
]
)
)
}
),
128
)),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['height', 'data']
),
withDirectives(
createElementVNode(
'div',
_hoisted_87,
[
withDirectives(
createElementVNode(
'i',
{
class: 'iconfont icon-bianjigongcheng',
onClick:
_cache[30] ||
(_cache[30] = ($event) =>
editorIndexesCondition(
indexesData.value.row,
indexesData.value.rowIndex
)),
},
null,
512
),
[[vShow, indexesData.value.row?.fieldId]]
),
createElementVNode('i', {
class: 'iconfont icon-qingchu',
onClick:
_cache[31] ||
(_cache[31] = ($event) =>
delIndexesCondition(
indexesData.value.row,
indexesData.value.rowIndex
)),
}),
],
512
),
[[vShow, indexesData.value && indexesData.value.row]]
),
],
512
),
[
[
vShow,
unref(props2).tableConfig.indexesConditions.length,
],
]
),
indexesVisible.value
? (openBlock(),
createBlock(
Dialog$2,
{
key: 0,
title: '\u6761\u4EF6\u6837\u5F0F',
visible: indexesVisible.value,
onClose:
_cache[32] ||
(_cache[32] = ($event) =>
(indexesVisible.value = false)),
onConfirm: indexesConfirm,
getData: indexesData.value.row,
conditionTypeList: unref(indexesConditionTypeList),
iconList: unref(indexesIconList),
mappingName: mappingName2.value,
},
null,
8,
[
'visible',
'getData',
'conditionTypeList',
'iconList',
'mappingName',
]
))
: createCommentVNode('', true),
]),
]),
_: 1,
}
),
showTotalRow.value
? (openBlock(),
createBlock(
_sfc_main$72,
{
key: 0,
title: '\u5408\u8BA1\u884C',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_88, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(totalRowOption).show,
'onUpdate:modelValue':
_cache[33] ||
(_cache[33] = ($event) =>
(unref(totalRowOption).show = $event)),
class: 'cms-el-checkbox-font-size-12',
},
{
default: withCtx(() => [_hoisted_89]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_input,
{
class: 'input cms-el-input-x select',
'aria-placeholder': '\u540D\u79F0',
modelValue: unref(totalRowOption).totalRowName,
'onUpdate:modelValue':
_cache[34] ||
(_cache[34] = ($event) =>
(unref(totalRowOption).totalRowName = $event)),
},
null,
8,
['modelValue']
),
createElementVNode('div', _hoisted_90, [
createVNode$1(
_component_el_color_picker,
{
predefine: unref(colorList),
'show-alpha': '',
modelValue:
unref(totalRowOption).totalBackgroundColor,
'onUpdate:modelValue':
_cache[35] ||
(_cache[35] = ($event) =>
(unref(totalRowOption).totalBackgroundColor =
$event)),
},
null,
8,
['predefine', 'modelValue']
),
]),
]),
createElementVNode('div', _hoisted_91, [
_hoisted_92,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
modelValue: unref(totalRowOption).fontFamily,
'onUpdate:modelValue':
_cache[36] ||
(_cache[36] = ($event) =>
(unref(totalRowOption).fontFamily = $event)),
'allow-create': '',
filterable: '',
placeholder: '\u8BF7\u9009\u62E9',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(fontFamilyList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
hidden: item2.hidden,
},
null,
8,
['label', 'value', 'hidden']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x font-select',
'popper-class': 'cms-el-select_check',
modelValue: unref(totalRowOption).fontSize,
'onUpdate:modelValue':
_cache[37] ||
(_cache[37] = ($event) =>
(unref(totalRowOption).fontSize = $event)),
'allow-create': '',
filterable: '',
placeholder: ' ',
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(FONT_SIZE, (size) => {
return createVNode$1(
_component_el_option,
{
key: size,
label: size,
value: size,
},
null,
8,
['label', 'value']
)
}),
64
)),
]),
_: 1,
},
8,
['modelValue']
),
createElementVNode('div', _hoisted_93, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
modelValue: unref(totalRowOption).color,
'onUpdate:modelValue':
_cache[38] ||
(_cache[38] = ($event) =>
(unref(totalRowOption).color = $event)),
},
null,
8,
['predefine', 'modelValue']
),
]),
]),
createElementVNode('div', _hoisted_94, [
_hoisted_95,
createElementVNode('div', _hoisted_96, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(locationList$1), (item2) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'text-radio',
{
active:
unref(totalRowOption).location ===
item2.value,
},
]),
key: item2.value,
onClick: ($event) =>
changeTatolRowLocaltion(item2.value),
},
toDisplayString$1(item2.label),
11,
_hoisted_97
)
)
}),
128
)),
]),
]),
createElementVNode('div', _hoisted_98, [
_hoisted_99,
createVNode$1(
_component_el_radio_group,
{
class: 'radio-group',
modelValue: unref(totalRowOption).totalRange,
'onUpdate:modelValue':
_cache[39] ||
(_cache[39] = ($event) =>
(unref(totalRowOption).totalRange = $event)),
onChange: totalRangeChange,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(totalRangeList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_radio,
{
key: item2.value,
label: item2.value,
class: 'cms-el-radio',
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(item2.label),
1
),
]),
_: 2,
},
1032,
['label']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
_hoisted_100,
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(tableOption).columnOptionList,
(item2, index2) => {
return withDirectives(
(openBlock(),
createElementBlock(
'div',
{
key: index2,
class: 'setting-item item item2',
},
[
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x select',
'popper-class': 'cms-el-select_check',
modelValue: item2.calculation,
'onUpdate:modelValue': ($event) =>
(item2.calculation = $event),
placeholder: '\u8BF7\u9009\u62E9',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(calculationList).filter(
(e2) =>
unref(totalRowOption)
.totalRange === 'paging' ||
[
'sum',
'average',
'max',
'min',
].includes(e2.value)
),
(item22) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item22.value,
label: item22.label,
value: item22.value,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue']
),
createElementVNode(
'span',
{
class: 'label',
title: mappingName2.value[item2.prop],
},
toDisplayString$1(
mappingName2.value[item2.prop]
),
9,
_hoisted_101
),
]
)),
[[vShow, item2.type == 'index']]
)
}
),
128
)),
]),
_: 1,
}
))
: createCommentVNode('', true),
createVNode$1(Padding, { node: unref(node2) }, null, 8, ['node']),
])
)
}
},
})
var ChartTable_settings = /* @__PURE__ */ _export_sfc(_sfc_main$5H, [
['__scopeId', 'data-v-52bb838d'],
])
var __glob_2_40 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$E,
default: ChartTable_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var TableColumn_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$4S = { class: 'icon-span' }
const __default__$1 = {
name: 'TableColumn',
}
const _sfc_main$5G = /* @__PURE__ */ defineComponent({
...__default__$1,
props: {
column: null,
align: null,
headerAlign: null,
showTooltip: { type: Boolean },
node: null,
mappingKey: null,
mappingName: null,
resizable: { type: Boolean },
defaultWidth: { type: Boolean },
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
const label = computed(() => {
if ($props2.column.fieldName === '\u53D8\u91CF\u540D') {
return $props2.column.aliasName || $props2.column.fieldName
}
return t($props2.mappingName[$props2.column.prop]) || $props2.column.label
})
return (_ctx, _cache) => {
const _component_TableColumn = resolveComponent('TableColumn', true)
const _component_el_table_column = resolveComponent('el-table-column')
return (
openBlock(),
createBlock(
_component_el_table_column,
{
key: __props2.column.id + __props2.defaultWidth,
'data-id': __props2.column.id,
prop: __props2.mappingKey[__props2.column.prop],
sortable: __props2.column.sortable ? 'custom' : false,
label: label.value,
width:
__props2.defaultWidth && __props2.column.width > 0
? __props2.column.width
: null,
align: __props2.align,
'header-align': __props2.headerAlign,
'show-overflow-tooltip': __props2.showTooltip,
resizable: __props2.resizable,
},
createSlots(
{
default: withCtx(() => [
__props2.column.children
? (openBlock(true),
createElementBlock(
Fragment,
{ key: 0 },
renderList(__props2.column.children, (item2, index2) => {
return (
openBlock(),
createBlock(
_component_TableColumn,
{
key: index2,
column: item2,
defaultWidth: $props2.defaultWidth,
align: item2.textAlign || __props2.align,
'header-align': __props2.headerAlign,
showTooltip: __props2.showTooltip,
node: unref(node2),
mappingKey: __props2.mappingKey,
mappingName: __props2.mappingName,
resizable: __props2.resizable,
},
null,
8,
[
'column',
'defaultWidth',
'align',
'header-align',
'showTooltip',
'node',
'mappingKey',
'mappingName',
'resizable',
]
)
)
}),
128
))
: createCommentVNode('', true),
]),
_: 2,
},
[
!__props2.column.children
? {
name: 'default',
fn: withCtx(({ row }) => [
createElementVNode(
'span',
null,
toDisplayString$1(
row[__props2.mappingKey[__props2.column.prop]]?.value
),
1
),
createElementVNode(
'span',
null,
toDisplayString$1(
row[__props2.mappingKey[__props2.column.prop]]?.unit
),
1
),
createElementVNode('div', _hoisted_1$4S, [
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont',
row[__props2.mappingKey[__props2.column.prop]]
?.iconType,
]),
style: normalizeStyle$1({
color:
row[__props2.mappingKey[__props2.column.prop]]
?.color,
fontSize: 'inherit',
}),
},
null,
6
),
]),
]),
}
: void 0,
]
),
1032,
[
'data-id',
'prop',
'sortable',
'label',
'width',
'align',
'header-align',
'show-overflow-tooltip',
'resizable',
]
)
)
}
},
})
var TableColumn = /* @__PURE__ */ _export_sfc(_sfc_main$5G, [
['__scopeId', 'data-v-c8216ec6'],
])
var TableColumn$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: TableColumn,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ChartTable_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2M = (n2) => (
pushScopeId('data-v-7da919ea'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$4R = ['id', 't']
const _hoisted_2$48 = { key: 0 }
const _hoisted_3$3I = { key: 1 }
const _hoisted_4$3b = { class: 'ml-10' }
const _hoisted_5$2T = { class: 'page-index' }
const _hoisted_6$2A = /* @__PURE__ */ _withScopeId$2M(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-zuo11' },
null,
-1
)
)
const _hoisted_7$2f = [_hoisted_6$2A]
const _hoisted_8$1_ = /* @__PURE__ */ _withScopeId$2M(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-you11' },
null,
-1
)
)
const _hoisted_9$1Q = [_hoisted_8$1_]
const _sfc_main$5F = /* @__PURE__ */ defineComponent({
props: {
node: null,
editing: { type: Boolean },
},
emits: [EventBlock.types.clickCell],
setup(__props, { emit }) {
const $props = __props
const t = Language$1.t
const collectText = () => {
props.dataConfig.indexes.forEach((item2) => {
t(item2.aliasName)
t(item2.fieldName)
t(`${item2.fieldName}(${methodList[item2.mode]})`)
})
props.dataConfig?.dimissions?.forEach((item2) => {
t(item2.aliasName)
t(item2.fieldName)
})
}
const chartTableRef = ref()
const node = reactive($props.node)
const tableBoxRef = ref()
const pageRef = ref()
const style = reactive($props.node.style)
const defaultTablePropsCopy = lodash$2.exports.cloneDeep(defaultProps$8)
const props = lodash$2.exports.defaults(
reactive(node.props),
defaultTablePropsCopy
)
const tableConfig = reactive(props.tableConfig)
style['--height'] = style.height || '256px'
style.textAlign = style.textAlign || 'center'
let headerRowTypeClass = ref('')
let tableRowClass = ref('')
let tableClass = ref('')
let pageIndex = ref(1)
let tableData = ref([])
let allTableData = ref([])
let total = ref(0)
let summariesResult = ref({})
let timer
const headerRowStyle = computed(() => {
if (tableConfig.tableOption.tableType == 'border') {
return {
...tableConfig.tableBodyStyle,
...tableConfig.tableHeaderStyle,
}
} else {
return { ...tableConfig.tableHeaderStyle }
}
})
const tableStyle = computed(() => {
let style2 = {}
if (tableConfig.tableOption.tableType == 'border') {
style2 = {
'--tableBorder': '0px',
'--borderStyle': tableConfig.tableBodyStyle.borderStyle,
'--borderWidth': tableConfig.tableBodyStyle.borderWidth,
'--borderColor': tableConfig.tableBodyStyle.borderColor,
}
} else {
style2 = {
'--tableBorder': '1px',
}
}
style2['--total-font-family'] =
tableConfig.totalRowOption.fontFamily ?? ''
style2['--total-color'] = tableConfig.totalRowOption.color ?? ''
style2['--total-font-size'] = tableConfig.totalRowOption.fontSize
? tableConfig.totalRowOption.fontSize + 'px'
: ''
return style2
})
let tableDataList = computed(() => {
let indexes = props.dataConfig.indexes
return tableData.value.map((item2) => {
let val2 = {}
for (let key2 in item2) {
let data2 = getConditionData(key2, item2[key2])
for (let i2 = 0, len2 = indexes.length; i2 < len2; i2++) {
let index2 = indexes[i2]
let mode2 = index2.mode ? '-' + index2.mode : ''
if (mappingKey.value[index2.id + mode2] == key2) {
if (index2.dataFormat == 4 || index2.dataFormat == 5) {
data2.unit = '%'
}
break
}
}
val2[key2] = data2
}
return val2
})
})
const getConditionData = (key, value) => {
let dimissionsCondition = tableConfig.dimissionsConditions.filter(
(item2) => {
return mappingKey.value[item2.fieldId] == key
}
)[0]
if (dimissionsCondition) {
let conditionList2 = dimissionsCondition.conditionList
for (let i2 = 0; i2 < conditionList2.length; i2++) {
let item2 = conditionList2[i2]
let condition2 = item2.condition
if (condition2 == '==' && String(value).indexOf(item2.value) > -1) {
return {
value,
iconType: item2.iconType,
color: item2.color,
}
}
if (condition2 == '!=' && value != item2.value) {
return {
value,
iconType: item2.iconType,
color: item2.color,
}
}
}
}
let indexesCondition = tableConfig.indexesConditions.filter((item2) => {
return mappingKey.value[item2.fieldId] == key
})[0]
if (indexesCondition) {
let conditionList = indexesCondition.conditionList
for (let i = 0; i < conditionList.length; i++) {
let item = conditionList[i]
let condition = item.condition
let conditionVal = parseFloat(item.value)
let bool = eval(value + condition + conditionVal)
if (bool) {
return {
value,
iconType: item.iconType,
color: item.color,
}
}
}
}
return {
value,
}
}
const setTableColumnList = () => {
let indexes = props.dataConfig.indexes.filter((i2) => i2.id)
let dimissions = props.dataConfig.dimissions.filter((d3) => d3.id)
if (props.dataConfig.isVariableName) {
dimissions = []
}
let columnOptionList = []
dimissions.forEach((d3) => {
const col =
tableConfig.tableOption.columnOptionList.find(
(e2) => e2.id === d3.id
) || {}
let label = col.label || d3.aliasName || d3.fieldName
if (
props.dataConfig.dataType === DATA_TYPE.HISTORY &&
props.dataConfig.isVariableName
) {
label = d3.aliasName || d3.fieldName
}
columnOptionList.push({
...d3,
prop: d3.id,
label,
width: col.width || 100,
sortable: col.sortable || false,
calculation: col.calculation || 'hidden',
textAlign: col.textAlign || '',
type: col.type || 'dimission',
id: d3.id,
})
})
indexes.forEach((i2, index2) => {
let mode2 = '-' + i2.mode
const col =
tableConfig.tableOption.columnOptionList.find(
(e2) => e2.prop === i2.id + mode2
) || {}
if (props.dataConfig.dataType === DATA_TYPE.VARIABLE) {
mode2 = ''
}
columnOptionList.push({
...i2,
prop: i2.id + mode2,
label: col.label || i2.aliasName || i2.fieldName,
width: col.width || 100,
sortable: col.sortable || false,
calculation: col.calculation || 'sum',
textAlign: col.textAlign || '',
type: col.type || 'index',
id: i2.id + '-' + index2,
})
})
if (columnOptionList.length <= 0) {
tableConfig.tableOption.tableColumnList = []
}
tableConfig.tableOption.columnOptionList = columnOptionList
}
watch$1(
[
() => props.dataConfig.dataSetId,
() => props.dataConfig.dimissions,
() => props.dataConfig.indexes,
],
setTableColumnList,
{
immediate: true,
deep: true,
}
)
watch$1(
() => tableConfig.tableOption.columnOptionList,
(n2) => {
setColumnList(tableConfig.tableOption.tableColumnList, n2)
},
{
deep: true,
}
)
const prevPage = () => {
if (pageIndex.value <= 1) return
pageIndex.value--
loadData_()
}
const nextPage = () => {
if (
total.value &&
pageIndex.value >=
Math.ceil(total.value / tableConfig.tableBodyOption.pageSize)
)
return
pageIndex.value++
loadData_()
}
const setTableTransform = (row) => {
nextTick(() => {
let tableRef = document
.getElementById(node.id)
?.getElementsByTagName('tbody')[0]
let scrollbarWrap = document
.getElementById(node.id)
?.getElementsByClassName('el-scrollbar__wrap')[0]
let tableTr = document
.getElementById(node.id)
?.getElementsByClassName('el-table__body-wrapper')[0]
.getElementsByTagName('tr')[0]
let trHeight =
tableTr.clientHeight + parseFloat(tableTr.style.borderWidth) * 2
if (tableRef.clientHeight > scrollbarWrap.clientHeight + 40) {
if (
scrollbarWrap.scrollTop + scrollbarWrap.clientHeight >=
tableRef.clientHeight
) {
if (
defaultPageData.value.pageIndex >=
Math.ceil(
allTableData.value.length / defaultPageData.value.pageSize
)
) {
defaultPageData.value.pageIndex = 1
} else {
defaultPageData.value.pageIndex++
}
loadData().then(() => {
scrollbarWrap.scrollTop = 0
})
} else {
scrollbarWrap.scrollTop += trHeight * row
}
} else {
defaultPageData.value.pageIndex = 1
loadData()
}
})
}
const setTableTransform1 = () => {
nextTick(() => {
let tableRef = document
.getElementById(node.id)
?.getElementsByTagName('tbody')[0]
let scrollbarWrap = document
.getElementById(node.id)
?.getElementsByClassName('el-scrollbar__wrap')[0]
if (tableRef.clientHeight > scrollbarWrap.clientHeight + 40) {
if (
scrollbarWrap.scrollTop + scrollbarWrap.clientHeight >=
tableRef.clientHeight
) {
if (
total.value &&
defaultPageData.value.pageIndex >=
Math.ceil(total.value / defaultPageData.value.pageSize)
) {
defaultPageData.value.pageIndex = 1
} else {
defaultPageData.value.pageIndex++
}
loadData().then(() => {
scrollbarWrap.scrollTop = 0
})
scrollbarWrap.scrollTop = 0
}
scrollbarWrap.scrollTop += 1
} else {
defaultPageData.value.pageIndex = 1
}
})
}
const roll = () => {
clearInterval(timer)
if (tableConfig.tableBodyOption.pageType == 'page') {
nextTick(() => {
let tableRef = document
.getElementById(node.id)
?.getElementsByClassName('el-table__body-wrapper')[0]
tableRef.style.transform = ``
})
}
if (tableConfig.tableBodyOption.pageType == 'cycleScroll') {
timer = setInterval(() => {
setTableTransform(tableConfig.tableBodyOption.srollRow)
}, tableConfig.tableBodyOption.srollCycle * 1e3)
}
if (tableConfig.tableBodyOption.pageType == 'continuScroll') {
let speedTime = tableConfig.tableBodyOption.scrollSpeed * 30
timer = setInterval(() => {
setTableTransform1()
}, 1e3 / speedTime)
}
}
watch$1(
style,
() => {
nextTick(() => {
roll()
})
},
{
immediate: true,
}
)
watch$1(
[
() => tableConfig.tableBodyOption.pageType,
() => tableConfig.tableBodyOption.srollCycle,
() => tableConfig.tableBodyOption.srollRow,
() => tableConfig.tableBodyOption.scrollSpeed,
],
roll,
{
immediate: true,
}
)
let mappingKey = ref({})
let mappingName = ref({})
const createRealtimeTableData = () => {
let list2 = []
let variables = {}
let mapData = []
props.dataConfig.indexes.forEach((item2) => {
variables[item2.fieldName + '(0)'] =
Variable.getByName(item2.fieldName)?.value ?? ''
mapData.push({
id: item2.id,
name: item2.fieldName + '(0)',
aliasName: item2.aliasName,
fieldName: item2.fieldName,
method: null,
})
})
list2.push(variables)
let { mapKey, mapName } = getMappingData(mapData)
mappingKey.value = mapKey
mappingName.value = mapName
total.value = 1
tableData.value = getSpanArr(
list2.map((item2, index2) => {
return {
...item2,
$index: index2 + 1,
}
})
)
}
let updateTableDataTimer
const startUpdateTableData = () => {
clearTimeout(updateTableDataTimer)
updateTableDataTimer = setTimeout(() => {
createRealtimeTableData()
startUpdateTableData()
}, 1e3)
}
async function loadData() {
let list2 = []
let pageType = tableConfig.tableBodyOption.pageType
let defaultMapping = getdefaultMappingData(
props.dataConfig.dimissions,
props.dataConfig.indexes
)
let dataSetId = props.dataConfig.dataSetId
clearTimeout(updateTableDataTimer)
if (props.dataConfig.dataType === DATA_TYPE.HISTORY) {
dataSetId = 'history'
} else if (props.dataConfig.dataType === DATA_TYPE.VARIABLE) {
dataSetId = 'realTime'
}
if (props.dataConfig.dataType === DATA_TYPE.VARIABLE) {
startUpdateTableData()
} else {
if (
dataSetId &&
(props.dataConfig.dimissions?.filter((i2) => i2.fieldName).length ||
props.dataConfig.indexes?.filter((i2) => i2.fieldName).length)
) {
if (
dataSetId === 'history' &&
!props.dataConfig.indexes?.filter((i2) => i2.fieldName).length
) {
return
}
let limit2 = $props.editing
? props.dataConfig.editingLimit
: props.dataConfig.runningLimit
let index2 =
pageType == 'page'
? pageIndex.value
: defaultPageData.value.pageIndex
let size =
pageType == 'page'
? tableConfig.tableBodyOption.pageSize
: defaultPageData.value.pageSize
try {
let data2 = await fetchData(
node,
node.id,
dataSetId,
props.dataConfig.dimissions || [],
props.dataConfig.indexes || [],
whereJson.value,
limit2,
size,
index2,
true
)
list2 = data2.list
if (dataSetId === 'history' && !props.dataConfig.isVariableName) {
data2.mapping.unshift({
aliasName: '\u8BB0\u5F55\u65F6\u95F4',
fieldName: '\u8BB0\u5F55\u65F6\u95F4',
id: '0',
method: null,
name: '\u8BB0\u5F55\u65F6\u95F4',
})
}
let { mapKey, mapName } = getMappingData(data2.mapping)
mappingKey.value = mapKey
if (dataSetId === 'history' && !props.dataConfig.isVariableName) {
Object.entries(mapName).forEach(([key2, value2]) => {
mappingName.value[key2] = value2.replace(/\(.*\)$/, '')
})
} else {
mappingName.value = mapName
}
total.value = data2.total
summariesResult.value = data2.mergeResults
} catch (error2) {
mappingKey.value = defaultMapping.mapKey
mappingName.value = defaultMapping.mapName
console.warn('\u83B7\u53D6\u6570\u636E\u51FA\u9519\u62C9' + error2)
}
} else {
mappingKey.value = defaultMapping.mapKey
mappingName.value = defaultMapping.mapName
pageIndex.value = 1
list2 = defaultData
total.value = defaultData.length
}
tableData.value = getSpanArr(
list2.map((item2, index2) => {
return {
...item2,
$index: index2 + 1,
}
})
)
}
setTableStyle_()
loading.value = false
}
const loadData_ = debouncePromise(loadData, 300, { maxWait: 3e3 })
let { whereJson } = useFilterController(node, loadData_, isUseCache)
watch$1(
[
() => tableConfig.tableBodyOption.pageType,
() => tableConfig.tableBodyOption.mergeSimilarCell,
() => props.dataConfig.dataSetId,
() => props.dataConfig.editingLimit,
() => tableConfig.tableBodyOption.pageSize,
() => tableConfig.totalRowOption.show,
() => tableConfig.totalRowOption.totalRange,
() => tableConfig.tableOption.columnOptionList,
],
loadData_,
{
immediate: true,
deep: true,
}
)
let dimissionsIndexesStrings = ''
watch$1(
[
() => props.dataConfig.dimissions.filter((item2) => item2.id),
() => props.dataConfig.indexes.filter((item2) => item2.id),
],
(n2) => {
let str = JSON.stringify(n2)
if (dimissionsIndexesStrings === str) return
dimissionsIndexesStrings = str
loadData_()
},
{
deep: true,
}
)
watch$1(
() => total.value,
() => {
let limit2 = $props.editing
? props.dataConfig.editingLimit
: props.dataConfig.runningLimit
if (total.value && total.value > limit2) total.value = limit2
},
{
deep: true,
}
)
let defaultPageData = ref({
pageIndex: 1,
pageSize: 100,
})
let mergeObj = {}
let mergeArr = []
const getSpanArr = (list2) => {
if (
props.dataConfig.dimissions.filter((d3) => d3.fieldName) &&
tableConfig.tableBodyOption.mergeSimilarCell
) {
mergeArr = props.dataConfig.dimissions.map((item2) => {
return mappingKey.value[item2.id]
})
list2 = lodash$2.exports.orderBy(list2, mergeArr)
mergeArr.forEach((key2) => {
let count2 = 0
mergeObj[key2] = []
list2.forEach((item2, index2) => {
if (index2 === 0) {
mergeObj[key2].push(1)
} else {
if (item2[key2] === list2[index2 - 1][key2]) {
mergeObj[key2][count2] += 1
mergeObj[key2].push(0)
} else {
count2 = index2
mergeObj[key2].push(1)
}
}
})
})
}
return list2
}
const objectSpanMethod = ({ column, rowIndex }) => {
if (mergeArr.indexOf(column.property) !== -1) {
if (mergeObj[column.property][rowIndex]) {
return [mergeObj[column.property][rowIndex], 1]
} else {
return [0, 0]
}
}
}
const sortChange = ({ prop, order: order2 }) => {
const sortFun = (n2) => {
let reg = /^[0-9,/:-\s]+$/
let timer2 = dayjs(n2[prop]).toString()
if (
!isNaN(Date.parse(timer2)) &&
isNaN(n2[prop]) &&
reg.test(n2[prop])
) {
return dayjs(n2[prop])
} else if (isNumber$e(n2[prop])) {
return parseFloat(n2[prop])
} else {
return n2[prop]
}
}
if (order2 == 'ascending') {
tableData.value = lodash$2.exports.orderBy(tableData.value, (n2) =>
sortFun(n2)
)
} else {
tableData.value = lodash$2.exports.orderBy(
tableData.value,
(n2) => sortFun(n2),
'desc'
)
}
}
const getSummaries = (param) => {
const { columns } = param
const sums = []
columns.forEach((column, index2) => {
if (index2 === 0) {
sums[index2] = tableConfig.totalRowOption.totalRowName
return
}
if (!column.property) return
if (
(tableConfig.totalRowOption.totalRange === 'total' &&
!lodash$2.exports.isEmpty(summariesResult.value)) ||
tableConfig.tableBodyOption.pageType !== 'page'
) {
sums[index2] = summariesResult.value?.[column.property] ?? ''
return
}
let calculation = tableConfig.tableOption.columnOptionList.filter(
(c2) => {
let key2 = mappingKey.value[c2.prop]
return key2 == column.property
}
)[0]?.calculation
let unit = ''
let values2 = tableData.value.map((item2, index1) => {
unit = tableDataList.value[index1][column.property].unit || ''
if (!Number.isNaN(item2[column.property])) {
return Number(item2[column.property])
} else {
return item2[column.property]
}
})
values2 = values2.filter((item2) => item2)
if (values2.every((value2) => !Number.isNaN(value2))) {
let sum2 = values2.reduce((prev, curr) => {
const value2 = Number(curr)
if (!Number.isNaN(value2)) {
return prev + curr
} else {
return prev
}
}, 0)
let num2 = 0
switch (calculation) {
case 'sum':
num2 = sum2
break
case 'average':
num2 = sum2 / values2.length
break
case 'max':
num2 = Math.max(...values2)
break
case 'min':
num2 = Math.min(...values2)
break
case 'median':
num2 = getMedian(values2)
break
case 'variance':
num2 = varianceArr(values2)
break
case 'deviation':
num2 = stdDeviation(values2)
break
case 'hidden':
num2 = ''
break
default:
num2 = sum2
}
sums[index2] =
`${isNumber$e(num2.toString()) ? Number(num2) : num2}` + unit
} else {
sums[index2] = ''
}
})
return sums
}
const getMedian = (arr) => {
arr.sort((x2, y2) => {
return x2 - y2
})
if (arr.length % 2 == 0) {
return (arr[arr.length / 2 - 1] + arr[arr.length / 2]) / 2
} else {
return arr[Math.floor(arr.length / 2)]
}
}
function varianceArr(arr) {
let s2,
ave,
sum2 = 0,
sums = 0,
len2 = arr.length
for (let i2 = 0; i2 < len2; i2++) {
sum2 += Number(arr[i2])
}
ave = sum2 / len2
for (let i2 = 0; i2 < len2; i2++) {
sums += (Number(arr[i2]) - ave) * (Number(arr[i2]) - ave)
}
s2 = sums / len2
return s2
}
function stdDeviation(arr) {
let sd,
ave,
sum2 = 0,
sums = 0,
len2 = arr.length
for (let i2 = 0; i2 < len2; i2++) {
sum2 += Number(arr[i2])
}
ave = sum2 / len2
for (let i2 = 0; i2 < len2; i2++) {
sums += (Number(arr[i2]) - ave) * (Number(arr[i2]) - ave)
}
sd = Math.sqrt(sums / len2)
return sd
}
watch$1(
() => tableConfig.tableOption.tableType,
(n2) => {
switch (n2) {
case 'concise':
headerRowTypeClass.value = 'header-row-concise'
tableRowClass.value = 'table-row-concise'
tableClass.value = 'table-concise'
tableConfig.tableBodyStyle.borderColor = '#949494'
break
case 'stripe':
headerRowTypeClass.value = 'header-row-stripe'
tableRowClass.value = 'table-row-stripe'
tableClass.value = 'table-stripe'
tableConfig.tableBodyStyle.borderColor = '#BBBBBB'
break
case 'border':
headerRowTypeClass.value = 'header-row-border'
tableRowClass.value = 'table-row-border'
tableClass.value = 'table-border'
tableConfig.tableBodyStyle.borderColor = '#5575F8'
break
default:
headerRowTypeClass.value = 'header-row-concise'
tableRowClass.value = 'table-row-concise'
tableClass.value = 'table-concise'
tableConfig.tableBodyStyle.borderColor = '#949494'
}
},
{
immediate: true,
}
)
const setTableStyle = () => {
nextTick(() => {
let tableBodyRef = document
.getElementById(node.id)
?.getElementsByClassName('el-table__inner-wrapper')[0]
if (!(tableBodyRef instanceof HTMLElement)) {
console.error('!(tableBodyRef instanceof HTMLElement)')
return
}
let titleHeight = 0
let pageHeight = pageRef.value.clientHeight || 0
tableBoxRef.value.style.height = `calc(100% - ${
titleHeight + pageHeight
}px)`
let bodyWrapper = tableBodyRef.querySelector('.el-table__body-wrapper')
if (!tableConfig.totalRowOption.show) {
if (bodyWrapper instanceof HTMLElement) {
bodyWrapper.style.marginTop = '0px'
}
return
}
let tableFooterRef = document
.getElementById(node.id)
?.getElementsByClassName('el-table__footer-wrapper')[0]
if (!(tableFooterRef instanceof HTMLElement)) {
console.error('!(tableFooterRef instanceof HTMLElement)')
return
}
let tableHeaderHeight = chartTableRef.value.$el.querySelector(
'.el-table__header-wrapper'
).offsetHeight
if (tableFooterRef && tableConfig.totalRowOption.show) {
tableFooterRef.style.setProperty(
'--table_footer_background',
tableConfig.totalRowOption.totalBackgroundColor || '#EBEBEB'
)
if (tableConfig.totalRowOption.location == 'top') {
tableFooterRef.style.top = tableHeaderHeight - 1 + 'px'
if (bodyWrapper instanceof HTMLElement) {
bodyWrapper.style.marginTop = tableFooterRef.clientHeight + 'px'
}
} else {
tableFooterRef.style.top = ''
if (bodyWrapper instanceof HTMLElement) {
bodyWrapper.style.marginTop = '0px'
}
}
} else {
tableBodyRef.style.top = ''
}
})
}
const setTableStyle_ = lodash$2.exports.debounce(setTableStyle, 100)
watch$1(
[
() => tableConfig.totalRowOption.location,
() => tableConfig.totalRowOption.show,
() => tableConfig.totalRowOption.totalBackgroundColor,
() => tableConfig.tableOption.tableColumnList,
() => node.style,
() => tableConfig.tableBodyOption.pageType,
],
setTableStyle_,
{
deep: true,
}
)
let freshTimer
async function setTimer() {
clearTimer()
await loadData()
freshTimer = setTimeout(setTimer, props.dataConfig.audoRefreshTime * 1e3)
}
function clearTimer() {
clearTimeout(freshTimer)
}
let loading = ref(false)
async function init() {
loading.value = true
if (props.dataConfig.audoRefresh && !$props.editing) {
await setTimer()
} else {
await loadData_()
}
setTableStyle_()
loading.value = false
}
onMounted(() => {
init()
})
onBeforeUnmount(() => {
clearInterval(timer)
clearTimer()
})
const clickCell = (row, column) => {
let fieldName = column.property
if (column.type !== 'default') {
fieldName = '$' + column.type
}
let fieldValue = row[fieldName]?.value
let cellsArr = []
if (tableConfig.tableBodyOption.showSerialNumber) {
cellsArr.push({
name: '$index',
value: row.$index.value,
})
}
tableConfig.tableOption.columnOptionList.map((item2) => {
let name2 = item2.aliasName || item2.label
cellsArr.push({
name: name2,
value: row[name2]?.value,
})
})
const params2 = {
fieldName,
fieldValue,
row: {
cells: cellsArr,
},
cell: {
name: fieldName,
value: fieldValue,
},
}
emit(EventBlock.types.clickCell, params2)
}
const headerDragend = (newWidth, oldWidth, column) => {
const col =
tableConfig.tableOption.columnOptionList[column.getColumnIndex()]
if (col) col.width = newWidth
}
return (_ctx, _cache) => {
const _component_el_table_column = resolveComponent('el-table-column')
const _component_el_table = resolveComponent('el-table')
const _component_el_input_number = resolveComponent('el-input-number')
const _directive_loading = resolveDirective('loading')
return (
openBlock(),
createElementBlock(
'div',
{
id: unref(node).id,
class: normalizeClass([
'chart-table',
{
'page-table':
unref(tableConfig).tableBodyOption.pageType == 'page',
},
]),
t: collectText(),
},
[
withDirectives(
(openBlock(),
createElementBlock(
'div',
{
ref_key: 'tableBoxRef',
ref: tableBoxRef,
class: 'chart-table-box',
style: normalizeStyle$1(tableStyle.value),
},
[
createVNode$1(
_component_el_table,
{
class: normalizeClass(tableClass.value),
ref_key: 'chartTableRef',
ref: chartTableRef,
'row-class-name': tableRowClass.value,
stripe:
unref(tableConfig).tableOption.tableType == 'stripe',
'header-row-class-name': headerRowTypeClass.value,
'header-cell-class-name': 'is-sortable selector-ignore',
data: tableDataList.value,
'show-header':
unref(tableConfig).tableHeaderOption.showTableHeader,
'header-row-style': headerRowStyle.value,
'row-style': unref(tableConfig).tableBodyStyle,
'show-summary': unref(tableConfig).totalRowOption.show,
'sum-text':
unref(tableConfig).totalRowOption.totalRowName,
'span-method': unref(tableConfig).tableBodyOption
.mergeSimilarCell
? objectSpanMethod
: null,
height: '100%',
'summary-method': getSummaries,
onSortChange: sortChange,
onCellClick: clickCell,
onHeaderDragend: headerDragend,
border: '',
},
{
default: withCtx(() => [
unref(tableConfig).tableBodyOption.showSerialNumber
? (openBlock(),
createBlock(
_component_el_table_column,
{
key: 0,
type: 'index',
label: _ctx._t('\u5E8F\u53F7'),
width: '70',
'header-align':
unref(tableConfig).tableHeaderStyle.textAlign,
align: unref(style).textAlign,
resizable: false,
},
{
default: withCtx(({ $index }) => [
unref(tableConfig).tableBodyOption.pageType ==
'page'
? (openBlock(),
createElementBlock(
'div',
_hoisted_2$48,
toDisplayString$1(
(pageIndex.value - 1) *
unref(tableConfig).tableBodyOption
.pageSize +
$index +
1
),
1
))
: (openBlock(),
createElementBlock(
'div',
_hoisted_3$3I,
toDisplayString$1(
(defaultPageData.value.pageIndex -
1) *
defaultPageData.value.pageSize +
$index +
1
),
1
)),
]),
_: 1,
},
8,
['label', 'header-align', 'align']
))
: createCommentVNode('', true),
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(tableConfig).tableOption.tableColumnList,
(item2, index2) => {
return (
openBlock(),
createBlock(
TableColumn,
{
key: 'column' + index2,
column: item2,
defaultWidth:
unref(tableConfig).tableHeaderOption
.showColumnWidthAdjustList,
showTooltip:
!unref(tableConfig).tableBodyOption.wrap,
align:
item2.textAlign ||
unref(tableConfig).tableBodyStyle
.textAlign ||
'center',
'header-align':
unref(tableConfig).tableHeaderStyle
.textAlign,
node: unref(node),
mappingKey: mappingKey.value,
mappingName: mappingName.value,
resizable:
unref(tableConfig).tableHeaderOption
.showColumnWidthAdjustList,
},
null,
8,
[
'column',
'defaultWidth',
'showTooltip',
'align',
'header-align',
'node',
'mappingKey',
'mappingName',
'resizable',
]
)
)
}
),
128
)),
]),
_: 1,
},
8,
[
'class',
'row-class-name',
'stripe',
'header-row-class-name',
'data',
'show-header',
'header-row-style',
'row-style',
'show-summary',
'sum-text',
'span-method',
]
),
],
4
)),
[[_directive_loading, loading.value]]
),
withDirectives(
createElementVNode(
'div',
{
ref_key: 'pageRef',
ref: pageRef,
class: 'page-pagination',
},
[
createElementVNode(
'span',
null,
toDisplayString$1(
unref(tableConfig).tableBodyOption.pageSize
) +
' ' +
toDisplayString$1(_ctx._t('\u6761/\u9875')),
1
),
createElementVNode(
'span',
_hoisted_4$3b,
toDisplayString$1(_ctx._t('\u5171')) +
' ' +
toDisplayString$1(total.value || 0) +
' ' +
toDisplayString$1(_ctx._t('\u6761\u6570\u636E')),
1
),
createElementVNode('div', _hoisted_5$2T, [
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
'controls-position': 'right',
modelValue: pageIndex.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (pageIndex.value = $event)),
min: 1,
onChange: loadData,
},
null,
8,
['modelValue']
),
createTextVNode(
'/' +
toDisplayString$1(
total.value
? Math.ceil(
total.value /
unref(tableConfig).tableBodyOption.pageSize
)
: 0
) +
' ',
1
),
createElementVNode(
'button',
{ onClick: prevPage },
_hoisted_7$2f
),
createElementVNode(
'button',
{ onClick: nextPage },
_hoisted_9$1Q
),
]),
],
512
),
[[vShow, unref(tableConfig).tableBodyOption.pageType == 'page']]
),
],
10,
_hoisted_1$4R
)
)
}
},
})
var ChartTable = /* @__PURE__ */ _export_sfc(_sfc_main$5F, [
['__scopeId', 'data-v-7da919ea'],
])
var __glob_2_41 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ChartTable,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const config$D = {
category: 'base',
name: '\u5706\u5F62',
icon: 'icon-yuanxing',
styleConfig: {
borderRadius: false,
},
}
const _sfc_main$5E = {}
function _sfc_render$g(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('div')
}
var Circle_settings = /* @__PURE__ */ _export_sfc(_sfc_main$5E, [
['render', _sfc_render$g],
])
var __glob_2_42 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$D,
default: Circle_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Rect_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$4Q = ['contenteditable', 'innerText', 'onKeydown']
const _sfc_main$5D = /* @__PURE__ */ defineComponent({
props: {
node: null,
running: { type: Boolean },
editing: { type: Boolean },
text: null,
},
emits: ['update'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const el2 = ref()
let contenteditable = ref(false)
const setText = (e2) => {
if (!Language$1.isOriginal()) return
const text2 = handleTextTrim(e2.target.innerText)
emit2('update', { text: text2 })
contenteditable.value = false
nextTick(() => {
const selection = getSelection()
selection?.removeAllRanges()
})
}
const onDblclick = () => {
if (!Language$1.isOriginal()) return
if (props2.editing) {
contenteditable.value = true
setTimeout(() => {
if (!el2.value) return
const selection = getSelection()
const range3 = new Range()
range3.selectNodeContents(el2.value)
selection?.removeAllRanges()
selection?.addRange(range3)
handleEmptyText()
}, 0)
}
}
const handleEnter = (e2) => {
if (e2.key === 'Enter') {
e2.preventDefault()
document.execCommand('insertText', false, '\n')
}
}
const handleBackspace = (e2) => {
if (e2.key === 'Backspace') {
setTimeout(() => handleEmptyText(), 0)
}
}
const handleEmptyText = () => {
if (el2.value && !el2.value.innerText) {
el2.value.innerHTML = ' '
}
}
const handleTextTrim = (text2) => {
if (el2.value && el2.value?.innerHTML === ' ') {
el2.value.innerHTML = ''
}
return text2.trim()
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'button',
{
class: 'Square',
ref_key: 'el',
ref: el2,
contenteditable: contenteditable.value,
innerText: _ctx.t(props2.text),
onBlur: setText,
onDblclick,
onKeydown: [
withKeys(handleEnter, ['enter']),
withKeys(handleBackspace, ['backspace']),
],
},
null,
40,
_hoisted_1$4Q
)
)
}
},
})
var Rect = /* @__PURE__ */ _export_sfc(_sfc_main$5D, [
['__scopeId', 'data-v-33a63713'],
])
var __glob_2_104 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Rect,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Circle_vue_vue_type_style_index_0_scoped_true_lang = ''
const _sfc_main$5C = /* @__PURE__ */ defineComponent({
props: {
editing: { type: Boolean },
text: null,
},
setup(__props2) {
const props2 = __props2
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(Rect, mergeProps({ class: 'Circle' }, props2), null, 16)
)
}
},
})
var Circle = /* @__PURE__ */ _export_sfc(_sfc_main$5C, [
['__scopeId', 'data-v-382934c2'],
])
var __glob_2_43 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Circle,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var functionDialog_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$4P = { class: 'wrap_header' }
const _hoisted_2$47 = { class: 'header_input' }
const _hoisted_3$3H = { class: 'wrap_body' }
const _hoisted_4$3a = { class: 'el-dialog__footer' }
const _sfc_main$5B = /* @__PURE__ */ defineComponent({
props: {
title: {
type: String,
default: '\u5173\u8054\u753B\u9762',
},
visible: {
type: Boolean,
default: false,
},
showConfig: {
type: Boolean,
default: false,
},
configData: {
type: Object,
default: () => {},
},
filterIds: {
type: Array,
default: () => [],
},
data: {
type: Object,
default: () => {},
},
},
emits: ['cancel', 'confirm', 'changeName', 'setParentNode'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const show = computed({
get: () => props2.visible,
set: (val2) => val2,
})
const searchVal = ref('')
const open2 = async () => {
await getData()
if (props2.data && props2.data.id) {
setChecked(props2.data.id)
}
}
const tableData2 = ref([])
const viewChecked = () => {
if (selectRow.value === null) {
tableData2.value = []
return
}
tableData2.value = tableData2.value.filter(
(f2) => f2.id === selectRow.value.id
)
}
const getData = async () => {
await getAllPicture(searchVal.value).then((res) => {
tableData2.value = JSON.parse(JSON.stringify(res))
.filter((f2) => f2.type !== 0)
.map((item2) => ({
...item2,
isCheck: false,
}))
tableData2.value = tableData2.value.filter(
(f2) => !props2.filterIds.includes(f2.id)
)
})
}
const clearData = async () => {
searchVal.value = ''
await getData()
if (selectRow.value !== null) {
setChecked(selectRow.value.id)
}
}
const selectRow = ref(null)
const searchData = async () => {
await getData()
if (selectRow.value !== null) {
const index2 = tableData2.value.findIndex(
(f2) => f2.id === selectRow.value.id
)
if (index2 === -1) {
tableData2.value.unshift(selectRow.value)
} else {
setChecked(selectRow.value.id)
}
}
}
const setChecked = (id2) => {
const index2 = tableData2.value.findIndex((f2) => f2.id == id2)
if (index2 !== -1) {
tableData2.value[index2].isCheck = true
selectRow.value = tableData2.value[index2]
}
}
const handleChange = (rowData, val2) => {
if (val2) {
tableData2.value.forEach((item2) => {
if (item2.id === rowData.id) {
item2.isCheck = true
} else {
item2.isCheck = false
}
})
selectRow.value = rowData
} else {
selectRow.value = null
}
}
const cancel2 = () => {
selectRow.value = null
emit2('cancel')
}
const confirm2 = () => {
emit2('confirm', selectRow.value)
cancel2()
if (props2.showConfig) {
emit2('setParentNode')
}
}
const config2 = async () => {
let hasCheck = tableData2.value.some((item2) => item2.isCheck === true)
if (!hasCheck) {
ElMessage.warning('\u8BF7\u5148\u52FE\u9009\u6570\u636E')
return
}
emit2('changeName', JSON.parse(JSON.stringify(selectRow.value)))
selectRow.value = null
await getData()
if (props2.data && props2.data.id) {
setChecked(props2.data.id)
}
if (props2.showConfig) {
emit2('setParentNode')
}
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_table_column = resolveComponent('el-table-column')
const _component_el_table = resolveComponent('el-table')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
modelValue: unref(show),
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
isRef(show) ? (show.value = $event) : null),
width: '480px',
top: '30vh',
title: __props2.title,
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
onOpen: open2,
onClose: cancel2,
},
{
default: withCtx(() => [
createElementVNode('div', null, [
createElementVNode('div', _hoisted_1$4P, [
createElementVNode('div', _hoisted_2$47, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input',
onBlur: searchData,
onKeyup: withKeys(searchData, ['enter']),
modelValue: searchVal.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (searchVal.value = $event)),
},
null,
8,
['onKeyup', 'modelValue']
),
]),
createElementVNode('div', { class: 'header_btns' }, [
createElementVNode(
'div',
{
onClick: viewChecked,
style: { width: '82px' },
},
'\u67E5\u770B\u9009\u4E2D'
),
createElementVNode(
'div',
{
onClick: clearData,
style: { width: '58px' },
},
'\u6E05\u9664'
),
]),
]),
createElementVNode('div', _hoisted_3$3H, [
createVNode$1(
_component_el_table,
{
class:
'cms-el-table cms-el-table-min cms-el-modify-table',
height: '300',
'highlight-current-row': '',
data: tableData2.value,
border: '',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_table_column,
{
prop: 'value',
label: '\u9009\u4E2D',
align: 'center',
width: '70',
},
{
default: withCtx((scope) => [
createVNode$1(
_component_el_checkbox,
{
class: 'cms-el-checkbox',
modelValue: scope.row.isCheck,
'onUpdate:modelValue': ($event) =>
(scope.row.isCheck = $event),
onChange: ($event) =>
handleChange(scope.row, $event),
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
'onChange',
]
),
]),
_: 1,
}
),
createVNode$1(
_component_el_table_column,
{
prop: 'value',
label: '\u753B\u9762\u540D\u79F0',
},
{
default: withCtx((scope) => [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
modelValue: scope.row.name,
'onUpdate:modelValue': ($event) =>
(scope.row.name = $event),
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['data']
),
]),
createElementVNode('div', _hoisted_4$3a, [
__props2.showConfig
? (openBlock(),
createElementBlock(
'button',
{
key: 0,
class: 'btn btn_config footer_btn',
onClick: config2,
},
' \u786E\u8BA4\u5E76\u914D\u7F6E\u4E0B\u4E00\u9879 '
))
: createCommentVNode('', true),
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: cancel2,
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: confirm2,
},
'\u786E\u8BA4'
),
]),
]),
]),
_: 1,
},
8,
['modelValue', 'title']
)
)
}
},
})
var functionDialog = /* @__PURE__ */ _export_sfc(_sfc_main$5B, [
['__scopeId', 'data-v-169defd0'],
])
var functionDialog$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: functionDialog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var functionDialogBtn_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2L = (n2) => (
pushScopeId('data-v-237ffa3b'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$4O = { class: 'wrap_body' }
const _hoisted_2$46 = /* @__PURE__ */ _withScopeId$2L(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u53D8\u91CF', -1)
)
const _sfc_main$5A = /* @__PURE__ */ defineComponent({
props: {
data: {
type: Object,
default: () => {},
},
visible: {
type: Boolean,
default: false,
},
},
emits: ['confirm', 'close'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const show = computed({
get: () => props2.visible,
set: (val2) => val2,
})
const tableData2 = ref([])
const currentRow = ref(null)
const openDialog2 = () => {
tableData2.value = props2.data
? JSON.parse(JSON.stringify(props2.data))
: []
}
const changeVariate = (value2, index2) => {
searchVariable('', '', null, value2).then((res) => {
if (res.result.length === 0) {
tableData2.value[index2].id = ''
} else {
tableData2.value[index2].id = res.result[0].id
}
})
}
const addRow = () => {
tableData2.value.push({
id: initUtils.createRandomId(),
key: `Float`,
value: '100',
})
}
const delRow = () => {
if (currentRow.value === null) {
ElMessage.warning('\u8BF7\u5148\u9009\u62E9\u4E00\u6761\u6570\u636E')
return
}
tableData2.value = tableData2.value.filter(
(f2) => f2.id !== currentRow.value.id
)
}
const changeCurrentRow = (val2) => {
currentRow.value = val2
}
const confirm2 = () => {
let list2 = []
tableData2.value.forEach((item2) => {
list2.push({
name: item2.key,
value: item2.value,
})
})
checkVariable(list2)
.then((res) => {
let resultList = res
for (let i2 = 0; i2 < resultList.length; i2++) {
if (!resultList[i2].result) {
ElMessage.error(
`\u53D8\u91CF${list2[i2].name}${resultList[i2].message}`
)
return
}
}
emit2('confirm', tableData2.value)
cancel2()
})
.catch((err) => {
ElMessage.error(err)
})
}
const cancel2 = () => {
tableData2.value = []
currentRow.value = null
emit2('close')
}
const openInner = () => {
if (currentRow.value === null) {
ElMessage.warning('\u8BF7\u5148\u9009\u62E9\u6570\u636E')
return
}
innerVisible.value = true
}
const innerVisible = ref(false)
const tableTree = ref()
const confirmInner = (row) => {
const index2 = tableData2.value.findIndex(
(d3) => d3.id === currentRow.value.id
)
if (row.length === 0) {
tableData2.value[index2].key = ''
tableData2.value[index2].id = ''
cancelInner()
return
}
tableData2.value[index2].key = row[0].name
tableData2.value[index2].id = row[0].id
cancelInner()
}
const changeName = (index2, row) => {
tableData2.value[index2].key = row[0].name
tableData2.value[index2].id = row[0].id
if (index2 === tableData2.value.length - 1) {
currentRow.value = tableData2.value[index2]
} else {
currentRow.value = tableData2.value[index2 + 1]
}
tableTree.value.setCurrentRow(currentRow.value)
}
const cancelInner = () => {
innerVisible.value = false
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_table_column = resolveComponent('el-table-column')
const _component_el_table = resolveComponent('el-table')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
modelValue: unref(show),
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
isRef(show) ? (show.value = $event) : null),
width: '480px',
top: '26vh',
title: '\u63A7\u5236\u6309\u94AE',
'custom-class': 'cms-el-dialog',
onOpen: openDialog2,
onClose: cancel2,
},
{
default: withCtx(() => [
createElementVNode('div', null, [
createElementVNode('div', { class: 'wrap_btns' }, [
createElementVNode(
'div',
{
class: 'btn_plain_normal btn_plain_add',
onClick: addRow,
},
'\u6DFB\u52A0'
),
createElementVNode(
'div',
{
class: 'btn_plain_normal btn_plain_del',
onClick: delRow,
},
'\u5220\u9664'
),
]),
createElementVNode('div', _hoisted_1$4O, [
createVNode$1(
_component_el_table,
{
class: 'cms-el-table cms-el-modify-table',
height: '250',
'highlight-current-row': '',
ref_key: 'tableTree',
ref: tableTree,
onCurrentChange: changeCurrentRow,
data: tableData2.value,
border: '',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_table_column,
{
prop: 'name',
label: '\u53D8\u91CF',
},
{
header: withCtx(() => [
createElementVNode(
'div',
{ class: 'column_header' },
[
_hoisted_2$46,
createElementVNode('i', {
class: 'iconfont icon-gengduo1',
onClick: openInner,
}),
]
),
]),
default: withCtx((scope) => [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
modelValue: scope.row.key,
'onUpdate:modelValue': ($event) =>
(scope.row.key = $event),
onBlur: ($event) =>
changeVariate(scope.row.key, scope.$index),
},
null,
8,
['modelValue', 'onUpdate:modelValue', 'onBlur']
),
]),
_: 1,
}
),
createVNode$1(
_component_el_table_column,
{
prop: 'value',
label: '\u5199\u5165\u503C',
},
{
default: withCtx((scope) => [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
modelValue: scope.row.value,
'onUpdate:modelValue': ($event) =>
(scope.row.value = $event),
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['data']
),
]),
createElementVNode('div', { class: 'el-dialog__footer' }, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: cancel2,
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: confirm2,
},
'\u786E\u8BA4'
),
]),
]),
createVNode$1(
unref(_sfc_main$6Q),
{
visible: innerVisible.value,
noLanguage: true,
isAppendToBody: true,
showConfig: true,
data: {
id: currentRow.value && currentRow.value.id,
name: currentRow.value && currentRow.value.key,
},
configData: {
data: tableData2.value,
currentRow: currentRow.value,
},
onChangeName: changeName,
onCancel: cancelInner,
onConfirm: confirmInner,
},
null,
8,
['visible', 'data', 'configData']
),
]),
_: 1,
},
8,
['modelValue']
)
)
}
},
})
var functionDialogBtn = /* @__PURE__ */ _export_sfc(_sfc_main$5A, [
['__scopeId', 'data-v-237ffa3b'],
])
var functionDialogBtn$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: functionDialogBtn,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ControlButton_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2K = (n2) => (
pushScopeId('data-v-04cb4cc8'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$4N = { class: 'function_items_btn' }
const _hoisted_2$45 = { class: 'title' }
const _hoisted_3$3G = /* @__PURE__ */ _withScopeId$2K(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u53D8\u91CF\u4E0B\u53D1',
-1
)
)
const _hoisted_4$39 = ['onClick']
const _hoisted_5$2S = /* @__PURE__ */ _withScopeId$2K(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-bianjigongcheng' },
null,
-1
)
)
const _hoisted_6$2z = [_hoisted_5$2S]
const _hoisted_7$2e = { class: 'wrap_send' }
const config$C = {
category: 'readWrite',
name: '\u63A7\u5236\u6309\u94AE',
icon: 'icon-kongzhianniu',
permission: true,
styleConfig: {
lineHeight: false,
},
}
const _sfc_main$5z = /* @__PURE__ */ defineComponent({
props: {
node: null,
variableList: null,
},
emits: ['update'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const props_2 = reactive(props2.node.props)
const visible = ref(false)
const openPop = () => {
visible.value = true
}
const close2 = () => {
visible.value = false
}
const confirm2 = (tableData2) => {
emit2('update', {
variableList: tableData2,
})
}
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
SettingItem$1,
{ title: '\u529F\u80FD' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$4N, [
createElementVNode('div', _hoisted_2$45, [
_hoisted_3$3G,
createElementVNode(
'div',
{
class: 'suffix_icon',
onClick: withModifiers(openPop, ['stop']),
},
_hoisted_6$2z,
8,
_hoisted_4$39
),
]),
createElementVNode('div', _hoisted_7$2e, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(__props2.variableList, (item2, index2) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'wrap_send_item',
key: index2,
},
[
createElementVNode(
'div',
null,
toDisplayString$1(item2.key),
1
),
createElementVNode(
'div',
null,
toDisplayString$1(item2.value),
1
),
]
)
)
}),
128
)),
]),
createVNode$1(
functionDialogBtn,
{
visible: visible.value,
data: __props2.variableList,
onClose: close2,
onConfirm: confirm2,
},
null,
8,
['visible', 'data']
),
]),
createVNode$1(
ConfirmBoxSetting,
{
confirmBoxConfig: unref(props_2).confirmBoxConfig,
},
null,
8,
['confirmBoxConfig']
),
]),
_: 1,
}
)
)
}
},
})
var ControlButton_settings = /* @__PURE__ */ _export_sfc(_sfc_main$5z, [
['__scopeId', 'data-v-04cb4cc8'],
])
var __glob_2_44 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$C,
default: ControlButton_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ControlButton_vue_vue_type_style_index_0_scoped_true_lang = ''
const _sfc_main$5y = /* @__PURE__ */ defineComponent({
props: {
node: null,
text: null,
variableList: null,
isDialog: null,
},
setup(__props2) {
const props2 = __props2
const props_2 = reactive(props2.node.props)
props_2.text = props_2?.text || '\u63A7\u5236\u6309\u94AE'
props_2.confirmBoxConfig ??= {
check: false,
message: '\u662F\u5426\u786E\u8BA4\u4E0B\u53D1\u6570\u636E?',
}
if (props_2?.isDialog) {
props_2.confirmBoxConfig.check = props_2.isDialog.isShow
props_2.confirmBoxConfig.message = props_2.isDialog.showTips
delete props_2.isDialog
}
const issuedVariableFun = () => {
if (!props2?.variableList?.length) return
for (const var_ of props2.variableList) {
Variable.store[var_.key] = var_.value
}
}
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
Button,
mergeProps(props2, { onClick: issuedVariableFun }),
null,
16
)
)
}
},
})
var ControlButton = /* @__PURE__ */ _export_sfc(_sfc_main$5y, [
['__scopeId', 'data-v-557abad4'],
])
var __glob_2_45 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ControlButton,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const getChartNodes$2 = () => {
let chartNodes = []
let chartList = []
const loop = (canvasNode) => {
let list2 = canvasNode.childNodes.filter(
(item2) =>
item2.is &&
/^Chart/.test(item2.is) &&
!isUseCache(item2) &&
item2.is !== 'ChartLineTrendConfig'
)
chartNodes.push(...list2)
for (const child of canvasNode.childNodes) {
loop(child)
}
}
loop(CanvasNode$1.getBody())
chartNodes.forEach((item2) => {
let data2 = {
...item2,
value: item2.id,
label: item2.name,
}
chartList.push(data2)
})
return chartList
}
const getNewChartsList = (list2) => {
let chartList = getChartNodes$2()
let idList = chartList.map((item2) => {
return item2.id
})
for (let i2 = 0; i2 < list2.length; i2++) {
let item2 = list2[i2]
if (!idList.includes(item2.id)) {
list2.splice(i2, 1)
} else {
let chartData = chartList.filter((c2) => {
return c2.id == item2.id
})
if (chartData) item2.name = chartData[0].name
}
}
}
const getDataSetInfo = (dataSetType, dataSetId) => {
return new Promise((resolve2, reject2) => {
request({
url: `/api/v1/dataconfig/node/${dataSetType}/${dataSetId}`,
method: 'get',
silent: true,
})
.then((res) => {
resolve2(res)
})
.catch((err) => {
reject2(err)
})
})
}
var ControllerCharts_vue_vue_type_style_index_0_scoped_true_lang$2 = ''
var ControllerCharts_vue_vue_type_style_index_1_lang = ''
const _withScopeId$2J = (n2) => (
pushScopeId('data-v-594a7284'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$4M = { class: 'controller-charts' }
const _hoisted_2$44 = { class: 'function_items_btn' }
const _hoisted_3$3F = { class: 'title' }
const _hoisted_4$38 = /* @__PURE__ */ _withScopeId$2J(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u5173\u8054\u56FE\u8868',
-1
)
)
const _hoisted_5$2R = { class: 'wrap_send' }
const _hoisted_6$2y = { class: 'centent' }
const _hoisted_7$2d = { class: 'centent-item left' }
const _hoisted_8$1Z = /* @__PURE__ */ _withScopeId$2J(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u9009\u62E9\u56FE\u8868\uFF1A',
-1
)
)
const _hoisted_9$1P = { class: 'centent-box' }
const _hoisted_10$1F = { class: 'all-checkbox' }
const _hoisted_11$1x = /* @__PURE__ */ createTextVNode('\u5168\u9009')
const _hoisted_12$1t = { class: 'centent-item right' }
const _hoisted_13$1j = /* @__PURE__ */ _withScopeId$2J(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u9009\u62E9\u5B57\u6BB5\uFF1A',
-1
)
)
const _hoisted_14$19 = { class: 'centent-box' }
const _hoisted_15$14 = { class: 'item-title' }
const _hoisted_16$12 = /* @__PURE__ */ _withScopeId$2J(() =>
/* @__PURE__ */ createElementVNode('div', { class: 'badge' }, null, -1)
)
const _hoisted_17$Y = { class: 'item-select' }
const _hoisted_18$S = { class: 'tips' }
const _hoisted_19$O = { class: 'el-dialog__footer el-dialog__footer1' }
const _sfc_main$5x = /* @__PURE__ */ defineComponent({
props: {
selectChartDataList: null,
dataSetList: null,
fieldType: null,
dialogNum: null,
dialogTitle: null,
},
emits: ['confirm'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
let selectChartDataList = ref([])
let visible = ref(false)
let checkAll = ref(false)
let isIndeterminate = ref(false)
let chartDataList = ref([])
let chartList = ref([])
let checkedEcharts = ref([])
const handleCheckAllChange = (val2) => {
checkedEcharts.value = []
if (val2) {
chartList.value.forEach((item2) => {
checkedEcharts.value.push(item2.value)
})
}
isIndeterminate.value = false
}
const handleCheckedChange = (value2) => {
const checkedCount = value2.length
checkAll.value =
checkedCount === chartList.value.length && chartList.value.length > 0
isIndeterminate.value =
checkedCount > 0 && checkedCount < chartList.value.length
}
async function getFieldList() {
for (let i2 = 0; i2 < selectChartDataList.value.length; i2++) {
let item2 = selectChartDataList.value[i2]
if (item2.dataType !== 0) {
item2.dataSetName = '\u5386\u53F2\u5F52\u6863\u6570\u636E'
item2.fieldList = [
{
associatedVariable: null,
fieldName: '\u8BB0\u5F55\u65F6\u95F4',
fieldType: 3,
filingTableId: '00000000-0000-0000-0000-000000000000',
formula: null,
id: '\u8BB0\u5F55\u65F6\u95F4',
sort: 0,
},
]
continue
}
let dataSetId = item2.dataSetId
let dataSetType = item2.dataSetType
await fetchDataSetFieldList(dataSetId, dataSetType)
.then((res) => {
let list2 = res
if ($props2.fieldType && $props2.fieldType >= 0) {
list2 = res.filter((item22) => {
return item22.fieldType == $props2.fieldType
})
}
item2.fieldList = list2
})
.catch(() => {})
await getDataSetInfo(dataSetType, dataSetId)
.then((res) => {
item2.dataSetName = res.name
})
.catch(() => {})
}
}
const getChartDataList = (list2) => {
let newChartDataList = []
chartDataList.value = []
list2.forEach((item2) => {
for (let key2 in chartList.value) {
let chartData = chartList.value[key2]
if (chartData.value == item2) {
let props2 = chartData.props
let dataSetId = props2.dataConfig.dataSetId
let dataSetType = props2.dataConfig.dataSetType
let id2 = chartData.id
let label = chartData.label
let name2 = chartData.name
let value2 = chartData.value
let is2 = chartData.is
let selectList = selectChartDataList.value.filter((item1) => {
return item1.id == item2
})
let data2 = {
id: id2,
label,
name: name2,
dataSetId,
value: value2,
dataSetType,
is: is2,
}
let data1 = {
...selectList[0],
...data2,
dataType: chartData.props.dataConfig.dataType,
}
if (props2.dataConfig.dataType === 2) {
data2.dataSetId = data1.dataSetId = 'history'
newChartDataList = [data1]
} else {
newChartDataList.push(data1)
}
chartDataList.value.push(data2)
return
}
}
})
if ($props2.dialogNum == 1 && newChartDataList.length > 0) {
selectChartDataList.value = [
newChartDataList[newChartDataList.length - 1],
]
} else {
selectChartDataList.value = newChartDataList
}
getFieldList()
}
const getDefaultField = () => {
selectChartDataList.value = $props2.selectChartDataList.map((item2) => {
return item2
})
if ($props2.dialogNum == 1) {
selectChartDataList.value = $props2.selectChartDataList.map((item2) => {
item2.field = $props2.dataSetList[0].field
return item2
})
}
}
const confirm2 = () => {
visible.value = false
let newList = selectChartDataList.value.map((item2) => {
delete item2.fieldList
return item2
})
emit2('confirm', newList, chartDataList.value)
}
const getFieldList_ = lodash$2.exports.debounce(() => getFieldList, 200, {
maxWait: 2e3,
})
watch$1(
() => checkedEcharts.value,
(n2) => {
getChartDataList(n2)
},
{
deep: true,
}
)
watch$1(
() => visible.value,
() => {
if (visible.value) {
checkedEcharts.value = []
$props2.selectChartDataList.forEach((item2) => {
checkedEcharts.value.push(item2.value.toString())
})
getFieldList_()
chartList.value = getChartNodes$2().filter((item2) => {
return (
($props2.fieldType === 3 &&
item2.props.dataConfig.dataType === 1) ||
item2.props.dataConfig.dataType === 0
)
})
handleCheckedChange(checkedEcharts.value)
getDefaultField()
}
},
{
deep: true,
}
)
onMounted(() => {})
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_checkbox_group = resolveComponent('el-checkbox-group')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', _hoisted_1$4M, [
createElementVNode('div', _hoisted_2$44, [
createElementVNode('div', _hoisted_3$3F, [
_hoisted_4$38,
createElementVNode('i', {
class: 'iconfont icon-bianjigongcheng',
onClick:
_cache[0] ||
(_cache[0] = withModifiers(
($event) => (visible.value = true),
['stop']
)),
}),
]),
createElementVNode('div', _hoisted_5$2R, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList($props2.selectChartDataList, (item2, index2) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'wrap_send_item',
key: index2,
},
[
createElementVNode(
'div',
null,
toDisplayString$1(item2.name),
1
),
]
)
)
}),
128
)),
]),
]),
createVNode$1(
_component_el_dialog,
{
'append-to-body': '',
'model-value': visible.value,
width: '630px',
top: '26vh',
title: __props2.dialogTitle,
'custom-class': 'cms-el-dialog',
'destroy-on-close': true,
onClose:
_cache[4] || (_cache[4] = ($event) => (visible.value = false)),
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_6$2y, [
createElementVNode('div', _hoisted_7$2d, [
_hoisted_8$1Z,
createElementVNode('div', _hoisted_9$1P, [
createElementVNode('div', _hoisted_10$1F, [
createVNode$1(
_component_el_checkbox,
{
class: 'cms-el-checkbox',
modelValue: checkAll.value,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(checkAll.value = $event)),
indeterminate: isIndeterminate.value,
onChange: handleCheckAllChange,
},
{
default: withCtx(() => [_hoisted_11$1x]),
_: 1,
},
8,
['modelValue', 'indeterminate']
),
]),
createVNode$1(
_component_el_checkbox_group,
{
class: 'checkbox-group',
modelValue: checkedEcharts.value,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(checkedEcharts.value = $event)),
onChange: handleCheckedChange,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(chartList.value, (item2) => {
return (
openBlock(),
createElementBlock(
'div',
{
key: item2.value,
class: 'check-item',
},
[
createVNode$1(
_component_el_checkbox,
{
class: 'cms-el-checkbox',
label: item2.value,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(item2.label),
1
),
]),
_: 2,
},
1032,
['label']
),
]
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
]),
createElementVNode('div', _hoisted_12$1t, [
_hoisted_13$1j,
createElementVNode('div', _hoisted_14$19, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
selectChartDataList.value,
(item2, index2) => {
return (
openBlock(),
createElementBlock(
'div',
{
key: index2,
class: 'list-item',
},
[
createElementVNode('div', _hoisted_15$14, [
_hoisted_16$12,
createElementVNode(
'span',
null,
toDisplayString$1(item2.dataSetName),
1
),
]),
createElementVNode('div', _hoisted_17$Y, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
placeholder: '\u8BF7\u9009\u62E9',
modelValue: item2.field,
'onUpdate:modelValue': ($event) =>
(item2.field = $event),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
item2.fieldList,
(item1) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item1.id,
label: item1.fieldName,
value: item1.id,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue']
),
]),
]
)
)
}
),
128
)),
withDirectives(
createElementVNode(
'div',
_hoisted_18$S,
'\u8BF7\u5148\u52FE\u9009\u56FE\u8868',
512
),
[[vShow, selectChartDataList.value.length <= 0]]
),
]),
]),
]),
createElementVNode('div', _hoisted_19$O, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick:
_cache[3] ||
(_cache[3] = ($event) => (visible.value = false)),
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: confirm2,
},
'\u786E\u8BA4'
),
]),
]),
_: 1,
},
8,
['model-value', 'title']
),
])
)
}
},
})
var ControllerCharts$4 = /* @__PURE__ */ _export_sfc(_sfc_main$5x, [
['__scopeId', 'data-v-594a7284'],
])
var ControllerCharts$5 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ControllerCharts$4,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const intervalTypeList = [
{
value: 'dynamic',
label: '\u52A8\u6001\u533A\u95F4',
},
{
value: 'quick',
label: '\u5FEB\u6377\u533A\u95F4',
},
]
const dateTypeList$1 = [
{
value: 'daterange',
label: 'YYYY-MM-DD',
format: 'YYYY-MM-DD',
},
{
value: 'datetimerange',
label: 'YYYY-MM-DD HH:mm:ss',
format: 'YYYY-MM-DD HH:mm:ss',
},
]
const quickTypeList = [
{
value: 'today',
label: '\u4ECA\u5929',
},
{
value: 'yesterday',
label: '\u6628\u5929',
},
{
value: '3',
label: '\u8FD13\u5929',
},
{
value: '7',
label: '\u8FD17\u5929',
},
{
value: '30',
label: '\u8FD130\u5929',
},
{
value: '90',
label: '\u8FD190\u5929',
},
{
value: '180',
label: '\u8FD1180\u5929',
},
{
value: '360',
label: '\u8FD1360\u5929',
},
{
value: 'week',
label: '\u672C\u5468',
},
{
value: 'month',
label: '\u672C\u6708',
},
{
value: 'year',
label: '\u4ECA\u5E74',
},
]
const unitTypeList = [
{
value: 'year',
label: '\u5E74',
},
{
value: 'month',
label: '\u6708',
},
{
value: 'day',
label: '\u5929',
},
{
value: 'hour',
label: '\u65F6',
},
{
value: 'minute',
label: '\u5206',
},
{
value: 'second',
label: '\u79D2',
},
]
var DateRange_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2I = (n2) => (
pushScopeId('data-v-695582a5'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$4L = { class: 'drop-down-list-settings' }
const _hoisted_2$43 = { class: 'set-date' }
const _hoisted_3$3E = /* @__PURE__ */ _withScopeId$2I(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'date-type-text' },
'\u65E5\u671F\u9897\u7C92\u5EA6:',
-1
)
)
const _hoisted_4$37 = { class: 'set-date' }
const _hoisted_5$2Q = { class: 'set-date-title' }
const _hoisted_6$2x = /* @__PURE__ */ _withScopeId$2I(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'date-type-text' },
'\u53EF\u9009\u65F6\u95F4\u533A\u95F4\u8BBE\u7F6E',
-1
)
)
const _hoisted_7$2c = { class: 'set-date-centent' }
const _hoisted_8$1Y = { class: 'centent-left' }
const _hoisted_9$1O = /* @__PURE__ */ _withScopeId$2I(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u76F8\u5BF9\u4E8E\u5F53\u524D\u65F6\u95F4\uFF1A',
-1
)
)
const _hoisted_10$1E = /* @__PURE__ */ _withScopeId$2I(() =>
/* @__PURE__ */ createElementVNode('div', { class: 'span' }, '\u5929', -1)
)
const _hoisted_11$1w = /* @__PURE__ */ _withScopeId$2I(() =>
/* @__PURE__ */ createElementVNode('div', { class: 'line' }, '-', -1)
)
const _hoisted_12$1s = { class: 'centent-left' }
const _hoisted_13$1i = /* @__PURE__ */ _withScopeId$2I(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u76F8\u5BF9\u4E8E\u5F53\u524D\u65F6\u95F4\uFF1A',
-1
)
)
const _hoisted_14$18 = /* @__PURE__ */ _withScopeId$2I(() =>
/* @__PURE__ */ createElementVNode('div', { class: 'span' }, '\u5929', -1)
)
const _hoisted_15$13 = { class: 'set-date' }
const _hoisted_16$11 = { class: 'set-date-title' }
const _hoisted_17$X = /* @__PURE__ */ _withScopeId$2I(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'date-type-text' },
'\u533A\u95F4\u9ED8\u8BA4\u8BBE\u7F6E',
-1
)
)
const _hoisted_18$R = { class: 'set-date-centent' }
const _hoisted_19$N = { class: 'centent-title' }
const _hoisted_20$I = { class: 'dynamic' }
const _hoisted_21$A = /* @__PURE__ */ _withScopeId$2I(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
[
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u76F8\u5BF9\u5F53\u524D\u65F6\u95F4\xA0-\xA0\u76F8\u5BF9\u5F53\u524D\u65F6\u95F4'
),
],
-1
)
)
const _hoisted_22$y = /* @__PURE__ */ createTextVNode(' \xA0 \xA0 ')
const _hoisted_23$v = { class: 'quick' }
const _hoisted_24$t = { class: 'quick-item' }
const _hoisted_25$o = /* @__PURE__ */ _withScopeId$2I(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'date-type-text' },
'\u5FEB\u6377\u533A\u95F4\u9009\u9879:',
-1
)
)
const _hoisted_26$n = { class: 'quick-item' }
const _hoisted_27$m = /* @__PURE__ */ _withScopeId$2I(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'date-type-text' },
'\u9ED8\u8BA4\u9009\u9879:',
-1
)
)
const config$B = {
category: 'controller',
name: '\u65F6\u95F4\u63A7\u4EF6',
icon: 'icon-shijiankongjian',
permission: true,
}
const _sfc_main$5w = /* @__PURE__ */ defineComponent({
props: {
editing: { type: Boolean },
node: null,
text: null,
selectData: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
const props2 = reactive(node2.props)
props2.selectChartDataList = props2.selectChartDataList || []
props2.setDateInterval = props2.setDateInterval || {
checked: false,
dynamicRange: {
startDay: void 0,
endDay: void 0,
},
}
props2.setDefaultInterval = props2.setDefaultInterval || {
checked: false,
intervalType: 'dynamic',
quick: {
quickList: [],
default: '',
},
dynamicRange: {
startDay: void 0,
endDay: void 0,
unit: 'day',
},
}
const disUnitList = ['hour', 'minute', 'second']
let dateType = ref(props2.dateTypeData.value || dateTypeList$1[0])
let quickList = ref(
props2.setDefaultInterval.quick?.list?.map((item2) => {
return item2.value
})
)
const dateTypeChange = (val2) => {
let dateTypeData = dateTypeList$1.filter((item2) => {
return item2.value == val2
})[0]
if (
val2 == 'daterange' &&
disUnitList.includes(props2.setDefaultInterval.dynamicRange.unit)
) {
props2.setDefaultInterval.dynamicRange.unit = 'day'
}
props2.dateTypeData = dateTypeData
}
const quickListChange = (val2) => {
let list2 = []
val2.forEach((item2) => {
let data2 = quickTypeList.filter((item1) => {
return item2 == item1.value
})
list2.push(data2[0])
})
props2.setDefaultInterval.quick.list = list2
}
const confirm2 = (selectChartDataList = []) => {
props2.selectChartDataList = selectChartDataList
}
onMounted(() => {})
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_radio = resolveComponent('el-radio')
const _component_el_radio_group = resolveComponent('el-radio-group')
return (
openBlock(),
createElementBlock('div', _hoisted_1$4L, [
createVNode$1(
SettingItem$1,
{ title: '\u529F\u80FD' },
{
default: withCtx(() => [
createVNode$1(
ControllerCharts$4,
{
dialogTitle: '\u521B\u5EFA\u65E5\u671F\u8303\u56F4',
selectChartDataList: unref(props2).selectChartDataList,
fieldType: 3,
onConfirm: confirm2,
},
null,
8,
['selectChartDataList']
),
]),
_: 1,
}
),
createVNode$1(
SettingItem$1,
{ title: '\u914D\u7F6E' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$43, [
_hoisted_3$3E,
createVNode$1(
_component_el_select,
{
modelValue: dateType.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (dateType.value = $event)),
class: 'cms-el-select-x date-type-select',
'popper-class': 'cms-el-select_check',
onChange: dateTypeChange,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(dateTypeList$1), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_4$37, [
createElementVNode('div', _hoisted_5$2Q, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(props2).setDateInterval.checked,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(props2).setDateInterval.checked = $event)),
class: 'cms-el-checkbox-font-size-12',
},
{
default: withCtx(() => [_hoisted_6$2x]),
_: 1,
},
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_7$2c, [
createElementVNode('div', _hoisted_8$1Y, [
_hoisted_9$1O,
createElementVNode('div', null, [
createVNode$1(
_component_el_input_number,
{
disabled: !unref(props2).setDateInterval.checked,
modelValue:
unref(props2).setDateInterval.dynamicRange
.startDay,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(
props2
).setDateInterval.dynamicRange.startDay =
$event)),
max:
unref(props2).setDateInterval.dynamicRange
.endDay || 0,
class: 'cms-el-input-number-x centent-input',
'controls-position': 'right',
},
null,
8,
['disabled', 'modelValue', 'max']
),
_hoisted_10$1E,
]),
]),
_hoisted_11$1w,
createElementVNode('div', _hoisted_12$1s, [
_hoisted_13$1i,
createElementVNode('div', null, [
createVNode$1(
_component_el_input_number,
{
disabled: !unref(props2).setDateInterval.checked,
modelValue:
unref(props2).setDateInterval.dynamicRange.endDay,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(
props2
).setDateInterval.dynamicRange.endDay =
$event)),
min:
unref(props2).setDateInterval.dynamicRange
.startDay || 0,
class: 'cms-el-input-number-x centent-input',
'controls-position': 'right',
},
null,
8,
['disabled', 'modelValue', 'min']
),
_hoisted_14$18,
]),
]),
]),
]),
createElementVNode('div', _hoisted_15$13, [
createElementVNode('div', _hoisted_16$11, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(props2).setDefaultInterval.checked,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(props2).setDefaultInterval.checked =
$event)),
class: 'cms-el-checkbox-font-size-12',
},
{
default: withCtx(() => [_hoisted_17$X]),
_: 1,
},
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_18$R, [
createElementVNode('div', _hoisted_19$N, [
createVNode$1(
_component_el_radio_group,
{
disabled: !unref(props2).setDefaultInterval.checked,
modelValue:
unref(props2).setDefaultInterval.intervalType,
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) =>
(unref(props2).setDefaultInterval.intervalType =
$event)),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(intervalTypeList),
(item2, index2) => {
return (
openBlock(),
createBlock(
_component_el_radio,
{
key: index2,
label: item2.value,
class: 'cms-el-radio',
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(item2.label),
1
),
]),
_: 2,
},
1032,
['label']
)
)
}
),
128
)),
]),
_: 1,
},
8,
['disabled', 'modelValue']
),
]),
withDirectives(
createElementVNode(
'div',
_hoisted_20$I,
[
_hoisted_21$A,
createElementVNode('div', null, [
createVNode$1(
_component_el_input_number,
{
disabled:
!unref(props2).setDefaultInterval.checked,
modelValue:
unref(props2).setDefaultInterval.dynamicRange
.startDay,
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) =>
(unref(
props2
).setDefaultInterval.dynamicRange.startDay =
$event)),
max:
unref(props2).setDefaultInterval.dynamicRange
.endDay || 0,
class: 'cms-el-input-number-x centent-input',
'controls-position': 'right',
},
null,
8,
['disabled', 'modelValue', 'max']
),
_hoisted_22$y,
createVNode$1(
_component_el_input_number,
{
disabled:
!unref(props2).setDefaultInterval.checked,
modelValue:
unref(props2).setDefaultInterval.dynamicRange
.endDay,
'onUpdate:modelValue':
_cache[7] ||
(_cache[7] = ($event) =>
(unref(
props2
).setDefaultInterval.dynamicRange.endDay =
$event)),
min:
unref(props2).setDefaultInterval.dynamicRange
.startDay || 0,
class: 'cms-el-input-number-x centent-input',
'controls-position': 'right',
},
null,
8,
['disabled', 'modelValue', 'min']
),
createVNode$1(
_component_el_select,
{
disabled:
!unref(props2).setDefaultInterval.checked,
modelValue:
unref(props2).setDefaultInterval.dynamicRange
.unit,
'onUpdate:modelValue':
_cache[8] ||
(_cache[8] = ($event) =>
(unref(
props2
).setDefaultInterval.dynamicRange.unit =
$event)),
class: 'cms-el-select-x select',
'popper-class': 'cms-el-select_check',
placeholder: '\u8BF7\u9009\u62E9',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(unitTypeList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
disabled:
disUnitList.includes(
item2.value
) &&
unref(props2).dateTypeData
.value == 'daterange',
label: item2.label,
value: item2.value,
},
null,
8,
['disabled', 'label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['disabled', 'modelValue']
),
]),
],
512
),
[
[
vShow,
unref(props2).setDefaultInterval.intervalType ==
'dynamic',
],
]
),
withDirectives(
createElementVNode(
'div',
_hoisted_23$v,
[
createElementVNode('div', _hoisted_24$t, [
_hoisted_25$o,
createVNode$1(
_component_el_select,
{
disabled:
!unref(props2).setDefaultInterval.checked,
modelValue: unref(quickList),
'onUpdate:modelValue':
_cache[9] ||
(_cache[9] = ($event) =>
isRef(quickList)
? (quickList.value = $event)
: (quickList = $event)),
class: 'cms-el-select-x quick-select',
'popper-class': 'cms-el-select_check',
multiple: '',
'collapse-tags': '',
'collapse-tags-tooltip': '',
onChange:
_cache[10] ||
(_cache[10] = ($event) =>
quickListChange($event)),
placeholder:
'\u8BF7\u9009\u62E9\u5FEB\u6377\u533A\u95F4\u9009\u9879',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(quickTypeList),
(item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 1,
},
8,
['disabled', 'modelValue']
),
]),
createElementVNode('div', _hoisted_26$n, [
_hoisted_27$m,
createVNode$1(
_component_el_select,
{
disabled:
!unref(props2).setDefaultInterval.checked,
modelValue:
unref(props2).setDefaultInterval.quick
.default,
'onUpdate:modelValue':
_cache[11] ||
(_cache[11] = ($event) =>
(unref(
props2
).setDefaultInterval.quick.default =
$event)),
class: 'cms-el-select-x quick-select',
'popper-class': 'cms-el-select_check',
placeholder:
'\u8BF7\u9009\u62E9\u5FEB\u6377\u9ED8\u8BA4\u9009\u9879',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(props2).setDefaultInterval.quick
.list,
(item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 1,
},
8,
['disabled', 'modelValue']
),
]),
],
512
),
[
[
vShow,
unref(props2).setDefaultInterval.intervalType ==
'quick',
],
]
),
]),
]),
]),
_: 1,
}
),
])
)
}
},
})
var DateRange_settings = /* @__PURE__ */ _export_sfc(_sfc_main$5w, [
['__scopeId', 'data-v-695582a5'],
])
var __glob_2_46 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$B,
default: DateRange_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _sfc_main$5v = {}
const _hoisted_1$4K = { class: 'iconfont icon-shijianxuanzeqi' }
function _sfc_render$f(_ctx, _cache) {
return openBlock(), createElementBlock('i', _hoisted_1$4K)
}
var DateRangeIcon = /* @__PURE__ */ _export_sfc(_sfc_main$5v, [
['render', _sfc_render$f],
])
var DateRangeIcon$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: DateRangeIcon,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const padLeftZero = (str) => {
return ('00' + str).substr(str.length)
}
const formatDate = (date4, fmt) => {
if (/(Y+)/.test(fmt)) {
fmt = fmt.replace(
RegExp.$1,
(date4.getFullYear() + '').substr(4 - RegExp.$1.length)
)
}
let o2 = {
'M+': date4.getMonth() + 1,
'D+': date4.getDate(),
'H+': date4.getHours(),
'm+': date4.getMinutes(),
's+': date4.getSeconds(),
}
for (let k2 in o2) {
if (new RegExp(`(${k2})`).test(fmt)) {
let str = o2[k2] + ''
fmt = fmt.replace(
RegExp.$1,
RegExp.$1.length === 1 ? str : padLeftZero(str)
)
}
}
return fmt
}
const timestampToTime = (timestamp2, fmt) => {
timestamp2 = timestamp2 ? timestamp2 : null
let date4 = new Date(timestamp2)
return formatDate(date4, fmt)
}
const getCurrentWeekStartTimeAndEndTime = (time2) => {
const current2 = time2 ? time2 : new Date()
let nowDayOfWeek = current2.getDay()
if (nowDayOfWeek === 0) nowDayOfWeek = 7
const dayNum = 1 * 24 * 60 * 60 * 1e3
const firstDate = new Date(current2.valueOf() - (nowDayOfWeek - 1) * dayNum)
const lastDate = new Date(new Date(firstDate).valueOf() + 6 * dayNum)
return {
startTime: firstDate,
endTime: lastDate,
}
}
const getCurrentMonthLast = (time2) => {
const date4 = time2 ? time2 : new Date()
const currentMonth = date4.getMonth()
const nextMonth = currentMonth + 1
const nextMonthFirstDay = new Date(date4.getFullYear(), nextMonth, 1)
const oneDay = 24 * 60 * 60 * 1e3
return new Date(nextMonthFirstDay - oneDay)
}
var DateRange_vue_vue_type_style_index_0_scoped_true_lang = ''
var DateRange_vue_vue_type_style_index_1_lang = ''
const _hoisted_1$4J = { class: 'date-range' }
const _hoisted_2$42 = { class: 'line' }
const _sfc_main$5u = /* @__PURE__ */ defineComponent({
props: {
editing: { type: Boolean },
running: { type: Boolean },
node: null,
},
setup(__props2) {
const $props2 = __props2
useCssVars((_ctx) => ({
e695640a: $props2.node.style.backgroundColor,
}))
const dropDownSelect = ref()
const props2 = reactive($props2.node.props)
const node2 = reactive($props2.node)
props2.selectChartDataList = props2.selectChartDataList || []
props2.dateTypeData = props2.dateTypeData || {
value: 'daterange',
format: 'YYYY-MM-DD',
}
let dateRanges = ref([
formatDate(new Date(), 'YYYY-MM-DD 00:00:00'),
formatDate(new Date(), 'YYYY-MM-DD 23:59:59'),
])
props2.selectChartDataList = props2.selectChartDataList || []
props2.setDateInterval = props2.setDateInterval || {
checked: false,
dynamicRange: {
startDay: void 0,
endDay: void 0,
},
}
props2.setDefaultInterval = props2.setDefaultInterval || {
checked: false,
intervalType: 'dynamic',
quick: {
quickList: [],
default: '',
},
dynamicRange: {
startDay: void 0,
endDay: void 0,
unit: 'day',
},
}
let selectValue = ref(props2.setDefaultInterval.quick.default)
const selectChange = () => {
setDateRanges()
emitController(dateRanges.value)
}
const pickerOptions = (time2) => {
if (props2.setDateInterval?.checked) {
let startTimer2 = new Date()
let endTimer = new Date()
endTimer.setDate(endTimer.getDate() + 1)
let dynamicRange = props2.setDateInterval.dynamicRange
let startDay = dynamicRange.startDay
let endDay = dynamicRange.endDay
startTimer2.setDate(startTimer2.getDate() + startDay)
endTimer.setDate(endTimer.getDate() + endDay)
let newTimer = time2.getTime() + 1 * 24 * 3600 * 1e3
return newTimer < startTimer2 || newTimer > endTimer
}
}
const dateChange = (val2) => {
selectValue.value = ''
emitController(val2)
}
const emitController = (val2) => {
if (props2.dateTypeData.format == 'YYYY-MM-DD') {
val2 = [
formatDate(new Date(val2[0]), 'YYYY-MM-DD 00:00:00'),
formatDate(new Date(val2[1]), 'YYYY-MM-DD 23:59:59'),
]
}
let relativeList = props2.selectChartDataList.map((item2) => {
let data2 = {
chartId: item2.id,
dataSetId: item2.dataSetId,
field: item2.field || '',
}
return data2
})
let type4 = 'Between'
let detail = {
controllerId: node2.id,
type: type4,
value: val2,
relativeList,
}
emit(ControllerEventType.UNION_CHART, detail)
emit(ControllerEventType.CHART_DATA, detail)
}
const emitController_ = lodash$2.exports.debounce(
() => emitController(dateRanges.value),
200,
{ maxWait: 1e3 }
)
const setDateRanges = () => {
if (
props2.setDefaultInterval.checked &&
props2.setDefaultInterval.intervalType == 'dynamic'
) {
let dynamicRange = props2.setDefaultInterval.dynamicRange
let unit = dynamicRange.unit
let startDay = dynamicRange.startDay || 0
let endDay = dynamicRange.endDay || 0
let startTimer2 = dayjs(new Date()).add(startDay, unit)
let endTimer = dayjs(new Date()).add(endDay, unit)
dateRanges.value = [
timestampToTime(
startTimer2,
props2.dateTypeData?.format || 'YYYY-MM-DD HH:mm:ss'
),
timestampToTime(
endTimer,
props2.dateTypeData?.format || 'YYYY-MM-DD HH:mm:ss'
),
]
} else if (
props2.setDefaultInterval.checked &&
props2.setDefaultInterval.intervalType == 'quick'
) {
let data2 = selectValue.value
let startTimer2 = new Date()
let endTimer = new Date()
let week = getCurrentWeekStartTimeAndEndTime(new Date())
if (parseFloat(data2).toString() == 'NaN') {
switch (data2) {
case 'today':
dateRanges.value = [
formatDate(new Date(), 'YYYY-MM-DD 00:00:00'),
formatDate(new Date(), 'YYYY-MM-DD 23:59:59'),
]
break
case 'yesterday':
dateRanges.value = [
timestampToTime(
startTimer2.setDate(startTimer2.getDate() - 1),
'YYYY-MM-DD 00:00:00'
),
timestampToTime(
endTimer.setDate(endTimer.getDate() - 1),
'YYYY-MM-DD 23:59:59'
),
]
break
case 'week':
dateRanges.value = [
formatDate(week.startTime, 'YYYY-MM-DD 00:00:00'),
formatDate(week.endTime, 'YYYY-MM-DD 23:59:59'),
]
break
case 'month':
startTimer2.setDate(1)
endTimer = getCurrentMonthLast(endTimer)
dateRanges.value = [
formatDate(startTimer2, 'YYYY-MM-DD 00:00:00'),
formatDate(endTimer, 'YYYY-MM-DD 23:59:59'),
]
break
case 'year':
startTimer2.setDate(1)
startTimer2.setMonth(0)
endTimer.setFullYear(endTimer.getFullYear() + 1)
endTimer.setMonth(0)
endTimer.setDate(0)
dateRanges.value = [
formatDate(startTimer2, 'YYYY-MM-DD 00:00:00'),
formatDate(endTimer, 'YYYY-MM-DD 23:59:59'),
]
break
}
} else {
let num2 = parseFloat(data2)
let startTimer22 = new Date()
startTimer22.setDate(startTimer22.getDate() - num2)
dateRanges.value = [
timestampToTime(
startTimer22,
props2.dateTypeData?.format || 'YYYY-MM-DD HH:mm:ss'
),
formatDate(
new Date(),
props2.dateTypeData?.format || 'YYYY-MM-DD HH:mm:ss'
),
]
}
} else {
dateRanges.value[0] = formatDate(new Date(), 'YYYY-MM-DD 00:00:00')
dateRanges.value[1] = formatDate(new Date(), 'YYYY-MM-DD 23:59:59')
}
}
watch$1(
() => props2.setDefaultInterval.quick.default,
(n2) => {
selectValue.value = n2
},
{
deep: true,
}
)
watch$1(
[() => props2.setDefaultInterval, () => props2.dateTypeData],
setDateRanges,
{
deep: true,
}
)
watch$1(
() => props2.selectChartDataList,
() => {
emitController_()
},
{}
)
watch$1(
() => getChartNodes$2(),
() => {
getNewChartsList(props2.selectChartDataList)
},
{
deep: true,
}
)
onBeforeMount(() => {
setDateRanges()
})
onMounted(() => {
nextTick(() => {
emitController_()
})
})
onUnmounted(() => {
let type4 = 'Between'
let detail = {
controllerId: node2.id,
type: type4,
value: { start: '', end: '' },
relativeList: [],
destroyed: true,
}
emit(ControllerEventType.UN_UNION_CHART, detail)
})
function setDateTimer(startTime, endTime) {
let start2 = new Date(startTime)
let end2 = new Date(endTime)
if (+start2 > +end2) {
start2 = end2
}
if (props2.dateType == 'daterange') {
dateRanges.value = [
formatDate(new Date(start2), 'YYYY-MM-DD 00:00:00'),
formatDate(new Date(end2), 'YYYY-MM-DD 23:59:59'),
]
} else {
dateRanges.value = [
formatDate(new Date(start2), 'YYYY-MM-DD HH:mm:ss'),
formatDate(new Date(end2), 'YYYY-MM-DD HH:mm:ss'),
]
}
dateChange(dateRanges.value)
}
node2.methods.setDateTimer = setDateTimer
const { local } = Language$1.useElementPlusI18n()
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_date_picker = resolveComponent('el-date-picker')
return (
openBlock(),
createElementBlock('div', _hoisted_1$4J, [
withDirectives(
createVNode$1(
_component_el_select,
{
modelValue: selectValue.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (selectValue.value = $event)),
class: 'drop-down-select',
'popper-class': 'drop-down-popper',
effect: '',
onChange: selectChange,
teleported: false,
'suffix-transition': false,
ref_key: 'dropDownSelect',
ref: dropDownSelect,
onVisibleChange:
_cache[1] ||
(_cache[1] = ($event) =>
unref(visibleChange)(dropDownSelect.value, $event)),
placeholder: _ctx._t('\u5FEB\u6377\u9879'),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(props2).setDefaultInterval.quick.list,
(item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: _ctx._t(item2.label),
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 1,
},
8,
['modelValue', 'placeholder']
),
[
[
vShow,
unref(props2).setDefaultInterval.checked &&
unref(props2).setDefaultInterval.intervalType == 'quick',
],
]
),
withDirectives(createElementVNode('div', _hoisted_2$42, null, 512), [
[
vShow,
unref(props2).setDefaultInterval.checked &&
unref(props2).setDefaultInterval.intervalType == 'quick',
],
]),
createElementVNode(
'div',
{
class: normalizeClass([
'date-range-box',
{
'quick-picker':
unref(props2).setDefaultInterval.checked &&
unref(props2).setDefaultInterval.intervalType == 'quick',
},
]),
},
[
createVNode$1(
unref(ElConfigProvider),
{ locale: unref(local) },
{
default: withCtx(() => [
(openBlock(),
createBlock(
_component_el_date_picker,
{
'unlink-panels': '',
class: 'date-range-select',
modelValue: dateRanges.value,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) => (dateRanges.value = $event)),
type: unref(props2).dateTypeData.value || 'daterange',
'start-placeholder':
'\u8BF7\u9009\u62E9\u5F00\u59CB\u65F6\u95F4',
'end-placeholder':
'\u8BF7\u9009\u62E9\u7ED3\u675F\u65F6\u95F4',
format:
unref(props2).dateTypeData.format || 'YYYY-MM-DD',
'value-format':
unref(props2).dateTypeData.format || 'YYYY-MM-DD',
clearable: false,
'prefix-icon': DateRangeIcon,
'clear-icon': DateRangeIcon,
key: unref(props2).dateTypeData.value,
'popper-class': 'date-range-popper',
effect: '',
disabledDate: pickerOptions,
onChange: dateChange,
teleported: false,
},
null,
8,
['modelValue', 'type', 'format', 'value-format']
)),
]),
_: 1,
},
8,
['locale']
),
],
2
),
])
)
}
},
})
var DateRange = /* @__PURE__ */ _export_sfc(_sfc_main$5u, [
['__scopeId', 'data-v-314c595a'],
])
var __glob_2_47 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: DateRange,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var DropDownList_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2H = (n2) => (
pushScopeId('data-v-af30690c'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$4I = { class: 'drop-down-list-settings' }
const _hoisted_2$41 = { class: 'opt' }
const _hoisted_3$3D = /* @__PURE__ */ _withScopeId$2H(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'radio-text' },
'\u9009\u62E9\u6A21\u5F0F:',
-1
)
)
const _hoisted_4$36 = { class: 'limit' }
const _hoisted_5$2P = /* @__PURE__ */ _withScopeId$2H(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u6700\u5927\u6570\u636E\u91CF: ',
-1
)
)
const _hoisted_6$2w = { class: 'limit-content limit-editing' }
const _hoisted_7$2b = /* @__PURE__ */ _withScopeId$2H(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u7F16\u8F91\u6A21\u5F0F',
-1
)
)
const _hoisted_8$1X = { class: 'limit-content limit-running' }
const _hoisted_9$1N = /* @__PURE__ */ _withScopeId$2H(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u8FD0\u884C\u6A21\u5F0F',
-1
)
)
const config$A = {
category: 'controller',
name: '\u4E0B\u62C9\u5217\u8868',
icon: 'icon-xialaliebiao',
permission: true,
styleConfig: {
lineHeight: false,
},
}
const _sfc_main$5t = /* @__PURE__ */ defineComponent({
props: {
editing: { type: Boolean },
node: null,
text: null,
},
setup(__props2) {
const $props2 = __props2
const props2 = reactive($props2.node.props)
props2.selectChartDataList = props2.selectChartDataList || []
props2.chartDataList = props2.chartDataList || []
props2.multipleValue = props2.multipleValue || false
props2.dataConfig = props2.dataConfig || {
editingLimit: 100,
runningLimit: 100,
}
const radioList = [
{
value: false,
label: '\u5355\u9009',
},
{
value: true,
label: '\u591A\u9009',
},
]
const confirm2 = (selectChartDataList = [], chartDataList = []) => {
props2.selectChartDataList = selectChartDataList
props2.chartDataList = chartDataList
}
onMounted(() => {})
return (_ctx, _cache) => {
const _component_el_radio = resolveComponent('el-radio')
const _component_el_radio_group = resolveComponent('el-radio-group')
const _component_el_input_number = resolveComponent('el-input-number')
return (
openBlock(),
createElementBlock('div', _hoisted_1$4I, [
createVNode$1(
SettingItem$1,
{ title: '\u529F\u80FD' },
{
default: withCtx(() => [
createVNode$1(
ControllerCharts$4,
{
dialogTitle: '\u521B\u5EFA\u4E0B\u62C9\u5217\u8868',
selectChartDataList: unref(props2).chartDataList,
dataSetList: unref(props2).selectChartDataList,
dialogNum: 1,
onConfirm: confirm2,
},
null,
8,
['selectChartDataList', 'dataSetList']
),
]),
_: 1,
}
),
createVNode$1(
SettingItem$1,
{ title: '\u914D\u7F6E' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$41, [
_hoisted_3$3D,
createVNode$1(
_component_el_radio_group,
{
modelValue: unref(props2).multipleValue,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(props2).multipleValue = $event)),
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(radioList, (item2, index2) => {
return createVNode$1(
_component_el_radio,
{
key: index2,
label: item2.value,
class: 'cms-el-radio',
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(item2.label),
1
),
]),
_: 2,
},
1032,
['label']
)
}),
64
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_4$36, [
_hoisted_5$2P,
createElementVNode('div', _hoisted_6$2w, [
_hoisted_7$2b,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
'controls-position': 'right',
modelValue: unref(props2).dataConfig.editingLimit,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(props2).dataConfig.editingLimit = $event)),
min: 0,
max: 1e6,
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_8$1X, [
_hoisted_9$1N,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
'controls-position': 'right',
modelValue: unref(props2).dataConfig.runningLimit,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(props2).dataConfig.runningLimit = $event)),
min: 0,
max: 1e6,
},
null,
8,
['modelValue']
),
]),
]),
]),
_: 1,
}
),
])
)
}
},
})
var DropDownList_settings = /* @__PURE__ */ _export_sfc(_sfc_main$5t, [
['__scopeId', 'data-v-af30690c'],
])
var __glob_2_48 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$A,
default: DropDownList_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var DropDownList_vue_vue_type_style_index_0_scoped_true_lang = ''
var DropDownList_vue_vue_type_style_index_1_lang = ''
const _hoisted_1$4H = { class: 'drop-down-list' }
const _sfc_main$5s = /* @__PURE__ */ defineComponent({
props: {
editing: { type: Boolean },
node: null,
text: null,
},
setup(__props2) {
const $props2 = __props2
const props2 = reactive($props2.node.props)
const node2 = reactive($props2.node)
props2.selectChartDataList = props2.selectChartDataList || []
props2.chartDataList = props2.chartDataList || []
props2.multipleValue = props2.multipleValue || false
props2.dataConfig = props2.dataConfig || {
editingLimit: 100,
runningLimit: 100,
}
let selectValue = ref('\u5168\u90E8')
let options2 = ref([])
let languageOptions = computed(() => {
return options2.value.map((item2) => {
if (item2.label === '\u5168\u90E8') {
return {
...item2,
label: _t(item2.label),
}
}
return item2
})
})
const change2 = (val2) => {
let value2 = val2
let type4 = props2.multipleValue ? 'In' : 'Equals'
if (val2.length <= 0 || val2 == '') {
value2 = [null]
}
if (props2.chartDataList.length && props2.selectChartDataList.length) {
let field2 = props2.selectChartDataList[0].field || ''
let dataSetId = props2.selectChartDataList[0].dataSetId || ''
let relativeList = props2.chartDataList.map((item2) => {
const _field = item2.field || field2
let data2 = {
chartId: item2.id,
dataSetId,
field: selectValue.value == '\u5168\u90E8' ? null : _field,
}
return data2
})
let detail = {
controllerId: node2.id,
type: type4,
value: value2,
relativeList,
}
emit(ControllerEventType.UNION_CHART, detail)
emit(ControllerEventType.CHART_DATA, detail)
}
}
const getOptions = () => {
if (!props2.selectChartDataList.length) return
let item2 = props2.selectChartDataList[0]
let limit2 = $props2.editing
? props2.dataConfig.editingLimit
: props2.dataConfig.runningLimit
options2.value = [
{
value: '\u5168\u90E8',
label: '\u5168\u90E8',
},
]
return new Promise((resolve2, reject2) => {
request({
url: `/api/v1/data/columndatas?dataSetId=${item2.dataSetId}&fieldName=${item2.field}&limit=${limit2}`,
method: 'get',
})
.then((res) => {
let values2 = res.values
if (values2) {
const result = Array.from(new Set(values2))
result.forEach((item22) => {
let data2 = {
value: item22 || '',
label: item22 || '',
}
options2.value.push(data2)
})
}
resolve2(res)
})
.catch((err) => {
reject2(err)
})
})
}
const openSelect = (val2) => {
visibleChange(dropDownSelect.value, val2)
if (val2 && options2.value.length <= 0) {
getOptions()
}
}
const getOptions_ = lodash$2.exports.debounce(() => getOptions(), 200, {
maxWait: 1e3,
})
watch$1(
[() => props2.selectChartDataList, () => props2.dataConfig],
getOptions_,
{
deep: true,
}
)
watch$1(
() => props2.multipleValue,
() => {
selectValue.value = ''
change2(selectValue.value)
},
{
deep: true,
}
)
watch$1(
() => getChartNodes$2(),
() => {
getNewChartsList(props2.chartDataList)
},
{
deep: true,
}
)
const dropDownSelect = ref()
watch$1(
() => state$6.current.zoom,
() => {
dropDownSelect.value.visible = false
}
)
onMounted(() => {
getOptions_()
})
onUnmounted(() => {
let type4 = 'In'
let detail = {
controllerId: node2.id,
type: type4,
value: '',
relativeList: [],
destroyed: true,
}
emit(ControllerEventType.UN_UNION_CHART, detail)
})
function setSelectValue(selectVal) {
selectValue.value = selectVal
change2(selectValue.value)
}
node2.methods.setSelectValue = setSelectValue
return (_ctx, _cache) => {
const _component_el_select_v2 = resolveComponent('el-select-v2')
return (
openBlock(),
createElementBlock('div', _hoisted_1$4H, [
(openBlock(),
createBlock(
_component_el_select_v2,
{
modelValue: selectValue.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (selectValue.value = $event)),
class: 'drop-down-select',
'popper-class': 'drop-down-list-popper',
effect: '',
multiple: unref(props2).multipleValue,
'collapse-tags': '',
'collapse-tags-tooltip': '',
placeholder: _ctx._t('\u8BF7\u9009\u62E9'),
'value-key': 'value',
ref_key: 'dropDownSelect',
ref: dropDownSelect,
'suffix-transition': false,
onChange: change2,
onVisibleChange: openSelect,
key: unref(props2).multipleValue,
teleported: false,
filterable: !unref(props2).multipleValue,
options: languageOptions.value,
},
null,
8,
['modelValue', 'multiple', 'placeholder', 'filterable', 'options']
)),
])
)
}
},
})
var DropDownList = /* @__PURE__ */ _export_sfc(_sfc_main$5s, [
['__scopeId', 'data-v-49fc28e4'],
])
var __glob_2_49 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: DropDownList,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var functionTree_vue_vue_type_style_index_0_scoped_true_lang$1 = ''
const _withScopeId$2G = (n2) => (
pushScopeId('data-v-859c2efa'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$4G = { class: 'function_items_btn' }
const _hoisted_2$40 = /* @__PURE__ */ _withScopeId$2G(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u83DC\u5355\u9879',
-1
)
)
const _hoisted_3$3C = { class: 'function_tree' }
const _hoisted_4$35 = { class: 'wrap_btns' }
const _hoisted_5$2O = { class: 'wrap_body' }
const _hoisted_6$2v = { class: 'column_header' }
const _hoisted_7$2a = /* @__PURE__ */ _withScopeId$2G(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u76EE\u6807', -1)
)
const _hoisted_8$1W = /* @__PURE__ */ _withScopeId$2G(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u76EE\u6807\u753B\u9762',
-1
)
)
const _hoisted_9$1M = { class: 'cloumn_hanlde' }
const _hoisted_10$1D = ['onClick']
const _hoisted_11$1v = /* @__PURE__ */ _withScopeId$2G(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-huamianfangda icon_add' },
null,
-1
)
)
const _hoisted_12$1r = /* @__PURE__ */ createTextVNode(
'\u6DFB\u52A0\u4E3B\u83DC\u5355'
)
const _hoisted_13$1h = /* @__PURE__ */ createTextVNode(
'\u6DFB\u52A0\u5B50\u83DC\u5355'
)
const _sfc_main$5r = /* @__PURE__ */ defineComponent({
props: ['data'],
emits: ['changefuncData'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const expandKeys = ref([])
const tableData2 = ref([])
const pageFrames = ref([])
const open2 = () => {
tableData2.value = JSON.parse(JSON.stringify(props2.data.menus))
expandKeys.value = []
tableData2.value.forEach((item2) => {
expandKeys.value.push(item2.menuId)
if (item2.menus.length) {
item2.menus.forEach((menu2) => {
menu2.parentId = item2.menuId
})
}
})
let PF = []
eachNode((childNode) => {
childNode.is === 'PageFrame' ? PF.push(childNode) : PF
pageFrames.value = [{ id: '', name: '\u5F53\u524D\u7A97\u53E3' }, ...PF]
}, CanvasNode$1.getBody())
}
const expandChange = (row) => {
let index2 = expandKeys.value.indexOf(row.menuId)
index2 >= 0
? expandKeys.value.splice(index2, 1)
: expandKeys.value.push(row.menuId)
}
const defaultProps2 = {
children: 'menus',
label: 'menuName',
}
const visible = ref(false)
const openPop = () => {
visible.value = true
}
const cancel2 = () => {
currentNode.value = null
showHighLight.value = false
tableData2.value = []
visible.value = false
}
const confirm2 = () => {
emit2('changefuncData', tableData2.value)
cancel2()
}
const currentNode = ref(null)
const showHighLight = ref(false)
const handleCurrentChange = (val2) => {
showHighLight.value = true
currentNode.value = val2
}
const addData = () => {
tableData2.value.push({
menuId: initUtils.createRandomId(),
menuName: '\u65B0\u83DC\u5355',
pageId: '',
pageName: '',
pageFrameId: '',
menus: [],
})
}
const moveData = (val2) => {
if (!currentNode.value) {
ElMessage.warning('\u8BF7\u5148\u9009\u62E9\u6570\u636E')
return
}
if (currentNode.value?.parentId) {
const index2 = tableData2.value.findIndex(
(item2) => item2.menuId === currentNode.value?.parentId
)
let childIndex = tableData2.value[index2].menus.findIndex(
(item2) => item2.menuId === currentNode.value.menuId
)
const menu2 = tableData2.value[index2].menus[childIndex]
moveTableData(val2, tableData2.value[index2].menus, menu2, childIndex)
} else {
const index2 = tableData2.value.findIndex(
(item2) => item2.menuId === currentNode.value?.menuId
)
moveTableData(val2, tableData2.value, tableData2.value[index2], index2)
}
}
const moveTableData = (val2, data2, menu2, index2) => {
if (val2 === 'up') {
if (index2 === 0) {
return
}
data2.splice(index2 - 1, 0, menu2)
data2.splice(index2 + 1, 1)
} else {
if (index2 === data2.length) {
return
}
data2.splice(index2 + 2, 0, menu2)
data2.splice(index2, 1)
}
}
const handleTarget = () => {
if (!currentNode.value) {
ElMessage.warning('\u8BF7\u5148\u9009\u62E9\u6570\u636E')
return
}
tableData2.value.forEach((e2) => {
e2.pageFrameId = currentNode.value.pageFrameId
if (e2.menus.length) {
e2.menus.forEach((item2) => {
item2.pageFrameId = currentNode.value.pageFrameId
})
}
})
}
const delData = (row) => {
let nodeArr = initUtils.getNodeParents(tableData2.value, row.menuId, {
children: 'menus',
id: 'menuId',
})
let children = []
if (nodeArr.length === 2) {
let parentIndex = tableData2.value.findIndex(
(f2) => f2.menuId === nodeArr[0]
)
let parentNode2 = tableData2.value[parentIndex]
children = parentNode2.menus
const index2 = children.findIndex((d3) => d3.menuId === row.menuId)
children.splice(index2, 1)
} else {
const index2 = tableData2.value.findIndex(
(d3) => d3.menuId === row.menuId
)
tableData2.value.splice(index2, 1)
}
}
const handleCommand = (obj) => {
if (obj.type === 'main') {
addData()
}
if (obj.type === 'child') {
let nodeArr = initUtils.getNodeParents(
tableData2.value,
obj.data.menuId,
{
children: 'menus',
id: 'menuId',
}
)
expandKeys.value.push(obj.data.menuId)
let children = []
if (nodeArr.length === 2) {
let parentIndex = tableData2.value.findIndex(
(f2) => f2.menuId === nodeArr[0]
)
let parentNode2 = tableData2.value[parentIndex]
children = parentNode2.menus
children.push({
menuId: initUtils.createRandomId(),
menuName: '\u5B50\u83DC\u5355',
pageId: '',
pageName: '',
pageFrameId: '',
menus: [],
parentId: parentNode2.menuId,
})
} else {
if (obj.data.menus.length === 0 && obj.data.pageName !== '') {
ElMessageBox.confirm(
'\u83DC\u5355\u9879\u5DF2\u7ED1\u5B9A\u753B\u9762,\u65B0\u5EFA\u5B50\u753B\u9762\u5C06\u89E3\u9664\u7ED1\u5B9A\uFF0C\u662F\u5426\u786E\u8BA4\uFF1F',
'\u63D0\u793A',
{
confirmButtonText: '\u786E\u8BA4',
cancelButtonText: '\u53D6\u6D88',
customClass: 'cms-el-dialog',
callback: (action) => {
if (action === 'confirm') {
obj.data.pageName = ''
obj.data.menus.push({
menuId: initUtils.createRandomId(),
menuName: '\u5B50\u83DC\u5355',
pageId: '',
pageName: '',
pageFrameId: '',
menus: [],
parentId: obj.data.menuId,
})
}
},
}
)
} else {
obj.data.menus.push({
menuId: initUtils.createRandomId(),
menuName: '\u5B50\u83DC\u5355',
pageId: '',
pageName: '',
pageFrameId: '',
menus: [],
parentId: obj.data.menuId,
})
}
}
}
}
const innerVisible = ref(false)
const openInner = () => {
if (currentNode.value === null) {
ElMessage.warning('\u8BF7\u5148\u9009\u62E9\u6570\u636E')
return
}
if (currentNode.value.menus.length !== 0) {
ElMessage.warning(
'\u8BE5\u4E00\u7EA7\u83DC\u5355\u4E0B\u5B58\u5728\u5B50\u83DC\u5355\uFF0C\u65E0\u6CD5\u914D\u7F6E\u753B\u9762\uFF01'
)
return
}
innerVisible.value = true
}
const cancelInner = () => {
innerVisible.value = false
}
const confirmInner = (row) => {
if (row === null) {
currentNode.value.pageName = ''
currentNode.value.pageId = ''
return
}
currentNode.value.pageName = row.name
currentNode.value.pageId = row.id
}
const tableTree = ref()
const changeName = (row) => {
let nodeArr = initUtils.getNodeParents(
tableData2.value,
currentNode.value.menuId,
{
children: 'menus',
id: 'menuId',
}
)
if (nodeArr.length === 2) {
let parentIndex = tableData2.value.findIndex(
(f2) => f2.menuId === nodeArr[0]
)
let parentNode2 = tableData2.value[parentIndex]
let nodeIndex = null
parentNode2.menus.forEach((item2, index2) => {
if (item2.menuId === nodeArr[1]) {
item2.pageName = row.name
item2.pageId = row.id
nodeIndex = index2
}
})
if (nodeIndex === parentNode2.menus.length - 1) {
currentNode.value = parentNode2.menus[nodeIndex]
ElMessage.warning(
'\u5DF2\u914D\u7F6E\u5230\u6700\u540E\u4E00\u6761\u6570\u636E'
)
} else {
currentNode.value = parentNode2.menus[nodeIndex + 1]
}
tableTree.value.setCurrentRow(currentNode.value)
} else {
let index2 = tableData2.value.findIndex(
(f2) => f2.menuId === nodeArr[0]
)
tableData2.value[index2].pageName = row.name
tableData2.value[index2].pageId = row.id
if (index2 === tableData2.value.length - 1) {
currentNode.value = tableData2.value[index2]
ElMessage.warning(
'\u5DF2\u914D\u7F6E\u5230\u6700\u540E\u4E00\u6761\u6570\u636E'
)
} else {
currentNode.value = tableData2.value[index2 + 1]
}
tableTree.value.setCurrentRow(currentNode.value)
}
}
const setParentNode = () => {
nextTick(() => {
tableTree.value.setCurrentRow(currentNode.value)
})
}
return (_ctx, _cache) => {
const _component_el_tree = resolveComponent('el-tree')
const _component_el_input = resolveComponent('el-input')
const _component_el_table_column = resolveComponent('el-table-column')
const _component_el_tooltip = resolveComponent('el-tooltip')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_dropdown_item = resolveComponent('el-dropdown-item')
const _component_el_dropdown_menu = resolveComponent('el-dropdown-menu')
const _component_el_dropdown = resolveComponent('el-dropdown')
const _component_el_table = resolveComponent('el-table')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', _hoisted_1$4G, [
createElementVNode('div', { class: 'wrap_header' }, [
_hoisted_2$40,
createElementVNode('i', {
class: 'iconfont icon-bianjigongcheng',
onClick: openPop,
}),
]),
createElementVNode('div', _hoisted_3$3C, [
createVNode$1(
_component_el_tree,
{
data: props2.data.menus,
class: 'cms_el_tree_x',
props: defaultProps2,
},
null,
8,
['data']
),
]),
createVNode$1(
_component_el_dialog,
{
'append-to-body': '',
modelValue: visible.value,
'onUpdate:modelValue':
_cache[2] || (_cache[2] = ($event) => (visible.value = $event)),
width: '680px',
top: '26vh',
title: '\u83DC\u5355\u9879\u914D\u7F6E',
onOpen: open2,
onClose: cancel2,
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
},
{
default: withCtx(() => [
createElementVNode('div', null, [
createElementVNode('div', _hoisted_4$35, [
createElementVNode(
'div',
{
class: 'btn_plain_normal btn_plain_add',
onClick:
_cache[0] || (_cache[0] = ($event) => moveData('up')),
},
'\u4E0A\u79FB'
),
createElementVNode(
'div',
{
class: 'btn_plain_normal btn_plain_add',
onClick:
_cache[1] ||
(_cache[1] = ($event) => moveData('down')),
},
'\u4E0B\u79FB'
),
createElementVNode(
'div',
{
class: 'btn_plain_normal btn_plain',
onClick: addData,
},
'\u6DFB\u52A0'
),
]),
createElementVNode('div', _hoisted_5$2O, [
createVNode$1(
_component_el_table,
{
class:
'cms-el-table cms-el-table-min cms-el-modify-table',
height: '250',
'highlight-current-row': showHighLight.value,
data: tableData2.value,
border: '',
'row-key': 'menuId',
onCurrentChange: handleCurrentChange,
ref_key: 'tableTree',
ref: tableTree,
'expand-row-keys': expandKeys.value,
onExpandChange: expandChange,
'tree-props': { children: 'menus' },
},
{
default: withCtx(() => [
createVNode$1(
_component_el_table_column,
{
prop: 'menuName',
label: '\u83DC\u5355\u9879\u540D\u79F0',
},
{
default: withCtx((scope) => [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
modelValue: scope.row.menuName,
'onUpdate:modelValue': ($event) =>
(scope.row.menuName = $event),
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
]),
_: 1,
}
),
createVNode$1(
_component_el_table_column,
{ prop: 'pageFrameId' },
{
header: withCtx(() => [
createElementVNode('div', _hoisted_6$2v, [
_hoisted_7$2a,
createVNode$1(
_component_el_tooltip,
{
class: 'box-item',
effect: 'dark',
content:
'\u76EE\u6807\u5E94\u7528\u81F3\u6240\u6709',
placement: 'top',
},
{
default: withCtx(() => [
createElementVNode('i', {
class:
'iconfont icon-mubiaotongbuzhisuoyou',
onClick: handleTarget,
}),
]),
_: 1,
}
),
]),
]),
default: withCtx((scope) => [
createVNode$1(
_component_el_select,
{
modelValue: scope.row.pageFrameId,
'onUpdate:modelValue': ($event) =>
(scope.row.pageFrameId = $event),
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
pageFrames.value,
(item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.id,
value: item2.id,
label: item2.name,
},
null,
8,
['value', 'label']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue']
),
]),
_: 1,
}
),
createVNode$1(
_component_el_table_column,
{ prop: 'pageName' },
{
header: withCtx(() => [
createElementVNode(
'div',
{ class: 'column_header' },
[
_hoisted_8$1W,
createElementVNode('i', {
class: 'iconfont icon-gengduo1',
onClick: openInner,
}),
]
),
]),
_: 1,
}
),
createVNode$1(
_component_el_table_column,
{
prop: 'value',
label: '\u64CD\u4F5C',
width: '100px',
},
{
default: withCtx((scope) => [
createElementVNode('div', _hoisted_9$1M, [
createElementVNode(
'i',
{
class: 'iconfont icon-qingchu icon_del',
onClick: ($event) => delData(scope.row),
},
null,
8,
_hoisted_10$1D
),
createVNode$1(
_component_el_dropdown,
{
trigger: 'hover',
onCommand: handleCommand,
},
{
dropdown: withCtx(() => [
createVNode$1(
_component_el_dropdown_menu,
null,
{
default: withCtx(() => [
createVNode$1(
_component_el_dropdown_item,
{
command: {
type: 'main',
data: scope.row,
},
},
{
default: withCtx(() => [
_hoisted_12$1r,
]),
_: 2,
},
1032,
['command']
),
createVNode$1(
_component_el_dropdown_item,
{
command: {
type: 'child',
data: scope.row,
},
},
{
default: withCtx(() => [
_hoisted_13$1h,
]),
_: 2,
},
1032,
['command']
),
]),
_: 2,
},
1024
),
]),
default: withCtx(() => [_hoisted_11$1v]),
_: 2,
},
1024
),
]),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['highlight-current-row', 'data', 'expand-row-keys']
),
]),
createElementVNode('div', { class: 'el-dialog__footer' }, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: cancel2,
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: confirm2,
},
'\u786E\u8BA4'
),
]),
]),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
unref(functionDialog),
{
title: '\u5173\u8054\u753B\u9762',
visible: innerVisible.value,
showConfig: '',
configData: {
data: tableData2.value,
currentRow: currentNode.value,
},
data: {
id: currentNode.value && currentNode.value.pageId,
name: currentNode.value && currentNode.value.pageName,
},
onSetParentNode: setParentNode,
onChangeName: changeName,
onCancel: cancelInner,
onConfirm: confirmInner,
},
null,
8,
['visible', 'configData', 'data']
),
])
)
}
},
})
var functionTree$2 = /* @__PURE__ */ _export_sfc(_sfc_main$5r, [
['__scopeId', 'data-v-859c2efa'],
])
var functionTree$3 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: functionTree$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var gallery_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$4F = { class: 'tabs' }
const _hoisted_2$3$ = ['onClick']
const _hoisted_3$3B = { class: 'panels' }
const _sfc_main$5q = /* @__PURE__ */ defineComponent({
props: {
draggable: { type: Boolean, default: true },
activeIndex: { default: 0 },
},
emits: ['imgDrag', 'imgTrigger'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
function imgDrag(e2, imgData) {
emit2('imgDrag', e2, imgData)
}
function imgTrigger(imageUrl) {
emit2('imgTrigger', imageUrl)
}
const tabs2 = shallowRef([
{
label: '\u5B98\u65B9',
compt: defineAsyncComponent(() =>
Promise.resolve().then(function () {
return OfficialMaterial$1
})
),
},
{
label: '\u6211\u7684',
compt: defineAsyncComponent(() =>
Promise.resolve().then(function () {
return GalleryMaterial$1
})
),
},
])
const activeTab2 = shallowRef(tabs2.value[$props2.activeIndex])
function change2(tab) {
activeTab2.value = tab
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'gallery',
{ 'un-draggable': !$props2?.draggable },
]),
},
[
createElementVNode('ul', _hoisted_1$4F, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(tabs2), (item2, i2) => {
return (
openBlock(),
createElementBlock(
'li',
{
key: i2,
onClick: ($event) => change2(item2),
class: normalizeClass({
active: item2.label == unref(activeTab2).label,
}),
},
toDisplayString$1(item2.label),
11,
_hoisted_2$3$
)
)
}),
128
)),
]),
createElementVNode('div', _hoisted_3$3B, [
(openBlock(),
createBlock(
resolveDynamicComponent(unref(activeTab2).compt),
{
galleryLabel: unref(activeTab2).label,
draggable: $props2?.draggable,
onImgDrag: imgDrag,
onImgTrigger: imgTrigger,
},
null,
8,
['galleryLabel', 'draggable']
)),
]),
],
2
)
)
}
},
})
var GalleryMaterial$2 = /* @__PURE__ */ _export_sfc(_sfc_main$5q, [
['__scopeId', 'data-v-cfdc77b6'],
])
var gallery = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: GalleryMaterial$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var BackgroundImageSetting_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2F = (n2) => (
pushScopeId('data-v-015e6b33'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$4E = { class: 'background-image-setting' }
const _hoisted_2$3_ = {
key: 0,
class: 'iconfont empty-icon',
'aria-hidden': 'true',
}
const _hoisted_3$3A = /* @__PURE__ */ _withScopeId$2F(() =>
/* @__PURE__ */ createElementVNode(
'use',
{ 'xlink:href': '#icon-morentupian' },
null,
-1
)
)
const _hoisted_4$34 = [_hoisted_3$3A]
const _hoisted_5$2N = {
class: 'preview-content',
ref: 'previewContentRef',
}
const _hoisted_6$2u = { class: 'preview-con flex-column-center' }
const _hoisted_7$29 = /* @__PURE__ */ _withScopeId$2F(() =>
/* @__PURE__ */ createElementVNode(
'use',
{ 'xlink:href': '#icon-morentupian' },
null,
-1
)
)
const _hoisted_8$1V = [_hoisted_7$29]
const _hoisted_9$1L = /* @__PURE__ */ createTextVNode(
' \u5F53\u524D\u6682\u65E0\u80CC\u666F\u56FE\u7247\u5C55\u793A\uFF0C '
)
const _hoisted_10$1C = /* @__PURE__ */ _withScopeId$2F(() =>
/* @__PURE__ */ createElementVNode('br', null, null, -1)
)
const _hoisted_11$1u = /* @__PURE__ */ createTextVNode('\u8BF7 ')
const _hoisted_12$1q = { class: 'del-icon' }
const _hoisted_13$1g = { class: 'bg-mode' }
const _hoisted_14$17 = { ref: 'galleryRef' }
const _sfc_main$5p = /* @__PURE__ */ defineComponent({
props: {
styleX: null,
disabled: { type: Boolean },
},
emits: ['change'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const styleX = reactive(props2.styleX)
let galleryRender = ref(false)
let galleryVisible = ref(false)
const galleryToggle = () => {
galleryVisible.value = !galleryVisible.value
}
const bgImageStyle = computed(() => {
const _style = {}
const _styleProxy = styleConverter(_style)
_styleProxy.backgroundRepeat = styleX.backgroundRepeat
_styleProxy.backgroundPosition = styleX.backgroundPosition
_styleProxy.backgroundSize = styleX.backgroundSize
_styleProxy.backgroundImage = styleX.backgroundImage
return _style
})
const backgroundSizeList = [
{
value: 'contain',
label: '\u81EA\u9002\u5E94',
},
{
value: '100% 100%',
label: '\u62C9\u4F38',
},
{
value: 'auto',
label: '\u5B9E\u9645\u5927\u5C0F',
},
{
value: 'cover',
label: '\u8986\u76D6',
},
]
const checkBgImageSet = (bgImage = styleX.backgroundImage) => {
return !bgImage || bgImage == 'none' || bgImage == 'unset'
}
function change2(key2, value2) {
emit2('change', key2, value2)
styleX[key2] = value2
}
const imgTrigger = (imgUrl) => {
if (imgUrl && !props2.styleX.backgroundImage) {
change2('backgroundSize', '100% 100%')
}
change2('backgroundImage', imgUrl)
if (!imgUrl) return
if (props2.styleX.backgroundRepeat != 'no-repeat') {
change2('backgroundRepeat', 'no-repeat')
}
if (props2.styleX.backgroundPosition != 'center') {
change2('backgroundPosition', 'center')
}
}
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_popover = resolveComponent('el-popover')
return (
openBlock(),
createElementBlock('div', _hoisted_1$4E, [
createVNode$1(
_component_el_popover,
{
'popper-class': 'cms-event-popover',
trigger: 'click',
width: 162,
'hide-after': 0,
'show-arrow': false,
offset: 6,
disabled: props2?.disabled,
onShow:
_cache[2] ||
(_cache[2] = ($event) => (galleryRender.value = true)),
onHide:
_cache[3] ||
(_cache[3] = ($event) => (galleryVisible.value = false)),
},
{
reference: withCtx(() => [
createElementVNode(
'div',
{
ref: 'previewPickerRef',
class: normalizeClass([
'preview-picker',
{ disabled: props2?.disabled },
]),
title: '\u6DFB\u52A0\u80CC\u666F\u56FE',
},
[
checkBgImageSet()
? (openBlock(),
createElementBlock('svg', _hoisted_2$3_, _hoisted_4$34))
: (openBlock(),
createElementBlock(
'span',
{
key: 1,
class: 'unempty-icon',
style: normalizeStyle$1(bgImageStyle.value),
},
null,
4
)),
],
2
),
]),
default: withCtx(() => [
createElementVNode(
'div',
_hoisted_5$2N,
[
createVNode$1(
_component_el_popover,
{
'popper-class': 'cms-event-popover',
placement: 'left',
trigger: 'click',
width: 388,
'show-arrow': false,
visible: galleryVisible.value,
teleported: false,
},
{
reference: withCtx(() => [
createElementVNode('div', _hoisted_6$2u, [
checkBgImageSet()
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
createElementVNode(
'svg',
{
class: 'iconfont empty-svg',
'aria-hidden': 'true',
onClick: galleryToggle,
},
_hoisted_8$1V
),
createElementVNode(
'p',
{ class: 'empty-tips' },
[
_hoisted_9$1L,
_hoisted_10$1C,
_hoisted_11$1u,
createElementVNode(
'span',
{ onClick: galleryToggle },
'\u6DFB\u52A0\u56FE\u7247'
),
]
),
],
64
))
: (openBlock(),
createElementBlock(
Fragment,
{ key: 1 },
[
createElementVNode(
'div',
{
class: 'bg-box',
style: normalizeStyle$1(
bgImageStyle.value
),
onClick: galleryToggle,
},
[
createElementVNode(
'div',
_hoisted_12$1q,
[
createElementVNode('i', {
class: 'iconfont icon-qingchu',
onClick:
_cache[0] ||
(_cache[0] = withModifiers(
($event) => imgTrigger(''),
['stop']
)),
}),
]
),
],
4
),
createElementVNode('div', _hoisted_13$1g, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
'model-value':
unref(styleX).backgroundSize,
onChange:
_cache[1] ||
(_cache[1] = (e2) =>
change2('backgroundSize', e2)),
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(
backgroundSizeList,
(item2) => {
return createVNode$1(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
}
),
64
)),
]),
_: 1,
},
8,
['model-value']
),
]),
],
64
)),
]),
]),
default: withCtx(() => [
createElementVNode(
'div',
_hoisted_14$17,
[
galleryRender.value
? (openBlock(),
createBlock(GalleryMaterial$2, {
key: 0,
activeIndex: 1,
draggable: false,
onImgTrigger: imgTrigger,
}))
: createCommentVNode('', true),
],
512
),
]),
_: 1,
},
8,
['visible']
),
],
512
),
]),
_: 1,
},
8,
['disabled']
),
])
)
}
},
})
var BackgroundImageSetting = /* @__PURE__ */ _export_sfc(_sfc_main$5p, [
['__scopeId', 'data-v-015e6b33'],
])
var BackgroundImageSetting$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: BackgroundImageSetting,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var styleSetting_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2E = (n2) => (
pushScopeId('data-v-0d88b7f8'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$4D = { class: 'text_wrap' }
const _hoisted_2$3Z = /* @__PURE__ */ _withScopeId$2E(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'text_title' },
'\u586B\u5145',
-1
)
)
const _hoisted_3$3z = { class: 'cms-el-color-picker-x appearance_picker flex' }
const _hoisted_4$33 = { class: 'text_fonts' }
const _hoisted_5$2M = { class: 'row' }
const _hoisted_6$2t = { class: 'group' }
const _sfc_main$5o = /* @__PURE__ */ defineComponent({
props: {
componentStyle: {
default: () => {
return {
fontFamily: '\u601D\u6E90\u9ED1\u4F53',
fontSize: '14px',
color: '#787878',
backgroundColor: '#fff',
}
},
},
},
emits: ['update'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const data2 = reactive({ ...props2.componentStyle })
function changeData(val2, attr) {
let newObj = {}
newObj[attr] = attr === 'fontSize' ? val2 + 'px' : val2
emit2('update', {
style: Object.assign(data2, newObj),
})
}
function bgImageSetting(key2, value2) {
data2[key2] = value2
changeData(value2, key2)
}
return (_ctx, _cache) => {
const _component_el_color_picker = resolveComponent('el-color-picker')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
return (
openBlock(),
createElementBlock('div', _hoisted_1$4D, [
createElementVNode('div', null, [
_hoisted_2$3Z,
createElementVNode('div', _hoisted_3$3z, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
'model-value': unref(data2).backgroundColor,
onActiveChange:
_cache[0] ||
(_cache[0] = (e2) =>
unref(isMouseOnElPopper)() &&
changeData(e2, 'backgroundColor')),
},
null,
8,
['predefine', 'model-value']
),
createVNode$1(
BackgroundImageSetting,
{
styleX: unref(styleConverter)(unref(data2)),
onChange: bgImageSetting,
},
null,
8,
['styleX']
),
]),
]),
createElementVNode('div', _hoisted_4$33, [
createElementVNode('div', null, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
placeholder: '\u8BF7\u9009\u62E9',
'model-value': unref(data2).fontFamily,
onChange:
_cache[1] ||
(_cache[1] = ($event) => changeData($event, 'fontFamily')),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(fontFamilyList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
hidden: item2.hidden,
},
null,
8,
['label', 'value', 'hidden']
)
)
}),
128
)),
]),
_: 1,
},
8,
['model-value']
),
]),
createElementVNode('div', _hoisted_5$2M, [
createElementVNode('div', _hoisted_6$2t, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
'model-value': unref(styleConverter)(unref(data2)).fontSize,
'allow-create': '',
filterable: '',
'default-first-option': '',
placeholder: '\u5B57\u53F7',
onChange:
_cache[2] ||
(_cache[2] = ($event) => changeData($event, 'fontSize')),
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(
[12, 13, 14, 15, 16, 17, 18, 19, 20, 24, 28, 32, 36],
(size) => {
return createVNode$1(
_component_el_option,
{
key: size,
label: size,
value: size,
},
null,
8,
['label', 'value']
)
}
),
64
)),
]),
_: 1,
},
8,
['model-value']
),
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
'model-value': unref(data2).color,
onActiveChange:
_cache[3] ||
(_cache[3] = (e2) =>
unref(isMouseOnElPopper)() && changeData(e2, 'color')),
},
null,
8,
['predefine', 'model-value']
),
]),
]),
]),
])
)
}
},
})
var StyleSetting = /* @__PURE__ */ _export_sfc(_sfc_main$5o, [
['__scopeId', 'data-v-0d88b7f8'],
])
var styleSetting = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: StyleSetting,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var type_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$4C = { class: 'type' }
const _hoisted_2$3Y = ['onClick']
const _hoisted_3$3y = {
class: 'iconfont svg-icon',
'aria-hidden': 'true',
}
const _hoisted_4$32 = ['xlink:href']
const _sfc_main$5n = /* @__PURE__ */ defineComponent({
props: {
node: CanvasNode$1,
},
emits: ['changeMenuType'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const node2 = reactive(props2.node)
const typeData = reactive([
{
name: '\u6C34\u5E73',
value: 'horizontal',
icon: 'icon-daohanglan',
is: 'DropdownMenu',
},
{
name: '\u5782\u76F4',
value: 'vertical',
icon: 'icon-chuizhicaidan',
is: 'DropdownMenuVertical2',
},
{
name: '\u5185\u5D4C',
value: 'embedded',
icon: 'icon-neiqiancaidan',
is: 'DropdownMenuVertical',
},
])
const handleClick2 = (
item2 = typeData.find((e2) => e2.is === node2.is)
) => {
node2.is = item2.is
emit2('changeMenuType', item2.value, 'type')
}
onMounted(handleClick2)
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('ul', _hoisted_1$4C, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(typeData), (item2) => {
return (
openBlock(),
createElementBlock(
'li',
{
key: item2.name,
class: normalizeClass({
hover: unref(node2).is === item2.is,
}),
onClick: ($event) => handleClick2(item2),
},
[
(openBlock(),
createElementBlock('svg', _hoisted_3$3y, [
createElementVNode(
'use',
{
'xlink:href': '#' + item2.icon,
},
null,
8,
_hoisted_4$32
),
])),
createTextVNode(' ' + toDisplayString$1(item2.name), 1),
],
10,
_hoisted_2$3Y
)
)
}),
128
)),
])
)
}
},
})
var Type$2 = /* @__PURE__ */ _export_sfc(_sfc_main$5n, [
['__scopeId', 'data-v-86a06ad2'],
])
var type = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Type$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var menuStyle_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$4B = { class: 'type' }
const _hoisted_2$3X = ['onClick']
const _sfc_main$5m = /* @__PURE__ */ defineComponent({
props: {
node: CanvasNode$1,
},
emits: ['changeMenuStyle'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const node2 = reactive(props2.node)
const typeData = reactive([
{ name: '\u7ECF\u5178', value: 'sutra' },
{ name: '\u7B80\u7EA6', value: 'simple' },
{ name: '\u5DE5\u4E1A', value: 'industrial' },
])
const handleClick2 = (
item2 = typeData.find((e2) => e2.value === node2.props.menuStyle),
type4 = null
) => {
emit2('changeMenuStyle', item2 ? item2.value : typeData[0].value, type4)
}
onMounted(handleClick2)
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('ul', _hoisted_1$4B, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(typeData), (item2) => {
return (
openBlock(),
createElementBlock(
'li',
{
key: item2.name,
class: normalizeClass({
hover: unref(node2).props.menuStyle === item2.value,
}),
onClick: ($event) => handleClick2(item2, 'click'),
},
toDisplayString$1(item2.name),
11,
_hoisted_2$3X
)
)
}),
128
)),
])
)
}
},
})
var MenuStyle = /* @__PURE__ */ _export_sfc(_sfc_main$5m, [
['__scopeId', 'data-v-2c782aac'],
])
var menuStyle = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: MenuStyle,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const options = {}
options.horizontal = {
sutra: {
menu: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#787878',
backgroundColor: '#ececee',
},
},
submenu: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#787878',
backgroundColor: '#fff',
},
},
activeMenu: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#3d6eff',
backgroundColor: 'rgba(255, 255, 255, 0)',
},
},
suspensionTerm: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#3D6EFF',
backgroundColor: '#ececee',
},
},
subSuspensionTerm: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#3D6EFF',
backgroundColor: 'rgba(61, 110, 255, .2)',
},
},
nodeBg: {
style: {
backgroundColor: '#ececee',
},
},
},
simple: {
menu: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#787878',
backgroundColor: '#ececee',
},
},
submenu: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#787878',
backgroundColor: '#fff',
},
},
activeMenu: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#fff',
backgroundColor: '#1BAF9D',
},
},
suspensionTerm: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#fff',
backgroundColor: '#1BAF9D',
},
},
subSuspensionTerm: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#fff',
backgroundColor: 'rgba(27, 175, 157, .8)',
},
},
nodeBg: {
style: {
backgroundColor: 'rgba(0, 0, 0, 0)',
},
},
},
industrial: {
menu: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#B7B7B7',
backgroundColor: '#232323',
},
},
submenu: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#D6D6D6',
backgroundColor: '#232323',
},
},
activeMenu: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#18C1AC',
backgroundColor: '#20433E',
},
},
suspensionTerm: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#18C1AC',
backgroundColor: '#20433E',
},
},
subSuspensionTerm: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#fff',
backgroundColor: '#18C1AC',
},
},
nodeBg: {
style: {
backgroundColor: 'rgba(0, 0, 0, 0)',
},
},
},
}
options.vertical = {
sutra: {
menu: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#787878',
backgroundColor: '#ececee',
},
},
submenu: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#787878',
backgroundColor: '#fff',
},
},
activeMenu: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#3d6eff',
backgroundColor: '#DEDEE2',
},
},
suspensionTerm: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#3D6EFF',
backgroundColor: '#DEDEE2',
},
},
subSuspensionTerm: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#3D6EFF',
backgroundColor: 'rgba(61, 110, 255, .2)',
},
},
nodeBg: {
style: {
backgroundColor: '#ececee',
},
},
},
simple: {
menu: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#787878',
backgroundColor: '#ececee',
},
},
submenu: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#787878',
backgroundColor: '#fff',
},
},
activeMenu: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#fff',
backgroundColor: '#1BAF9D',
},
},
suspensionTerm: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#fff',
backgroundColor: '#1BAF9D',
},
},
subSuspensionTerm: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#fff',
backgroundColor: 'rgba(27, 175, 157, .8)',
},
},
nodeBg: {
style: {
backgroundColor: 'rgba(0, 0, 0, 0)',
},
},
},
industrial: {
menu: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#B7B7B7',
backgroundColor: '#232323',
},
},
submenu: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#D6D6D6',
backgroundColor: '#232323',
},
},
activeMenu: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#18C1AC',
backgroundColor: '#20433E',
},
},
suspensionTerm: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#18C1AC',
backgroundColor: '#20433E',
},
},
subSuspensionTerm: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#fff',
backgroundColor: '#18C1AC',
},
},
nodeBg: {
style: {
backgroundColor: 'rgba(0, 0, 0, 0)',
},
},
},
}
options.embedded = {
sutra: {
menu: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#787878',
backgroundColor: '#DEDEE2',
},
},
submenu: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#787878',
backgroundColor: '#fff',
},
},
activeMenu: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#3d6eff',
backgroundColor: '#DEDEE2',
},
},
suspensionTerm: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#3D6EFF',
backgroundColor: '#DEDEE2',
},
},
subSuspensionTerm: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#3D6EFF',
backgroundColor: 'rgba(61, 110, 255, .2)',
},
},
nodeBg: {
style: {
backgroundColor: '#EAEAEC',
},
},
},
simple: {
menu: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#787878',
backgroundColor: '#DEDEE2',
},
},
submenu: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#787878',
backgroundColor: '#fff',
},
},
activeMenu: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#1BAF9D',
backgroundColor: 'rgba(27, 175, 157, 0.16)',
},
},
suspensionTerm: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#fff',
backgroundColor: '#1BAF9D',
},
},
subSuspensionTerm: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#fff',
backgroundColor: '#1BAF9D',
},
},
nodeBg: {
style: {
backgroundColor: '#EAEAEC',
},
},
},
industrial: {
menu: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#B7B7B7',
backgroundColor: '#232323',
},
},
submenu: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#D6D6D6',
backgroundColor: '#232323',
},
},
activeMenu: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#18C1AC',
backgroundColor: '#20433E',
},
},
suspensionTerm: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#fff',
backgroundColor: '#18C1AC',
},
},
subSuspensionTerm: {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#fff',
backgroundColor: '#18C1AC',
},
},
nodeBg: {
style: {
backgroundColor: '#111214',
},
},
},
}
const getInitData = (data2) => {
let initData = {
menu: {
style: {},
},
submenu: {
style: {},
},
activeMenu: {
style: {},
},
menuStyle: data2.menuStyle || 'sutra',
menuType: data2.menuType || 'horizontal',
suspensionTerm: {
style: {},
},
subSuspensionTerm: {
style: {},
},
}
for (let item2 in initData) {
initData[item2] = data2[item2]
}
if (!(data2.menus && data2.menus.length)) {
initData.menus = [
{
menuId: initUtils.createRandomId() + '1',
menuName: '\u83DC\u53551-1',
pageName: '',
pageId: '',
pageFrameId: '',
menus: [],
},
{
menuId: initUtils.createRandomId() + '2',
menuName: '\u83DC\u53551-2',
pageName: '',
pageId: '',
pageFrameId: '',
menus: [],
},
{
menuId: initUtils.createRandomId() + '3',
menuName: '\u83DC\u53551-3',
pageName: '',
pageId: '',
pageFrameId: '',
menus: [],
},
]
}
return initData
}
const t$2 = Language$1.t
const collectText = (menus2) => {
menus2?.forEach((menusItem) => {
menusItem.menus?.forEach((childItem) => {
t$2(childItem.menuName)
})
})
}
const initMenu = (node2) => {
const option2 = lodash$2.exports.cloneDeep(options)
node2.setDefaultProps(option2['horizontal']['sutra'])
node2.style.backgroundColor =
node2.style.backgroundColor ||
option2['horizontal']['sutra']['nodeBg'].style.backgroundColor
}
const _hoisted_1$4A = { class: 'function-contain' }
const config$z = {
category: 'jump',
name: '\u6C34\u5E73\u83DC\u5355',
icon: 'icon-shuipingcaidan',
styleConfig: {
lineHeight: false,
},
onCreate(node2) {
initMenu(node2)
},
}
const _sfc_main$5l = /* @__PURE__ */ defineComponent({
props: {
node: {
default: () => {
return {
name: '',
is: '',
style: {},
props: {},
}
},
},
menus: {
default: () => {
return []
},
},
menu: {
default: () => {
return {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#787878',
backgroundColor: '#ececee',
},
}
},
},
submenu: {
default: () => {
return {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#787878',
backgroundColor: '#fff',
},
}
},
},
activeMenu: {
default: () => {
return {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#3d6eff',
backgroundColor: 'rgba(255, 255, 255, 0)',
},
}
},
},
suspensionTerm: {
default: () => {
return {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#3D6EFF',
backgroundColor: '#ececee',
},
}
},
},
subSuspensionTerm: {
default: () => {
return {
style: {
fontFamily: '\u5FAE\u8F6F\u96C5\u9ED1',
fontSize: '16px',
color: '#3D6EFF',
backgroundColor: 'rgba(61, 110, 255, .2)',
},
}
},
},
menuStyle: null,
menuType: null,
},
emits: ['update'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const data2 = reactive({
...props2,
})
function changefuncData(value2) {
data2.menus = [...value2]
emit2('update', {
menus: data2.menus,
})
}
function changeMenuType(value2) {
data2.menuType = value2
emit2('update', {
menuType: data2.menuType,
})
}
function changeMenuStyle(value2, type4 = null) {
data2.menuStyle = value2
if (type4 === 'click') {
changeOption()
}
emit2('update', {
menuStyle: data2.menuStyle,
})
}
function changeOption() {
for (let item2 in options[data2.menuType][data2.menuStyle]) {
if (item2 !== 'nodeBg') {
const style2 = Object.assign(
{},
options[data2.menuType][data2.menuStyle][item2].style
)
data2[item2].style = style2
data2[item2].style.backgroundImage = ''
emit2('update', {
[item2]: data2[item2],
})
} else {
data2.node.style.backgroundColor =
options[data2.menuType][data2.menuStyle][
item2
].style.backgroundColor
}
}
}
function update3(value2, type4) {
let newValue = {}
newValue[type4] = value2
emit2('update', newValue)
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$4A, [
createVNode$1(
SettingItem$1,
{ title: '\u7C7B\u578B' },
{
default: withCtx(() => [
createVNode$1(
Type$2,
{
node: props2.node,
onChangeMenuType: changeMenuType,
},
null,
8,
['node']
),
]),
_: 1,
}
),
createVNode$1(
SettingItem$1,
{ title: '\u98CE\u683C' },
{
default: withCtx(() => [
createVNode$1(
MenuStyle,
{
node: props2.node,
onChangeMenuStyle: changeMenuStyle,
},
null,
8,
['node']
),
]),
_: 1,
}
),
createVNode$1(
SettingItem$1,
{ title: '\u529F\u80FD' },
{
default: withCtx(() => [
createVNode$1(
functionTree$2,
{
data: unref(data2),
onChangefuncData: changefuncData,
},
null,
8,
['data']
),
]),
_: 1,
}
),
(openBlock(),
createElementBlock(
'div',
{
key: unref(data2).menuStyle,
},
[
createVNode$1(
SettingItem$1,
{ title: '\u83DC\u5355\u9879' },
{
default: withCtx(() => [
createVNode$1(
StyleSetting,
{
componentStyle: unref(data2).menu.style,
onUpdate:
_cache[0] ||
(_cache[0] = ($event) => update3($event, 'menu')),
},
null,
8,
['componentStyle']
),
]),
_: 1,
}
),
createVNode$1(
SettingItem$1,
{ title: '\u5B50\u83DC\u5355\u9879' },
{
default: withCtx(() => [
createVNode$1(
StyleSetting,
{
componentStyle: unref(data2).submenu.style,
onUpdate:
_cache[1] ||
(_cache[1] = ($event) => update3($event, 'submenu')),
},
null,
8,
['componentStyle']
),
]),
_: 1,
}
),
createVNode$1(
SettingItem$1,
{ title: '\u9009\u4E2D\u9879' },
{
default: withCtx(() => [
createVNode$1(
StyleSetting,
{
componentStyle: unref(data2).activeMenu.style,
onUpdate:
_cache[2] ||
(_cache[2] = ($event) =>
update3($event, 'activeMenu')),
},
null,
8,
['componentStyle']
),
]),
_: 1,
}
),
createVNode$1(
SettingItem$1,
{ title: '\u60AC\u6D6E\u9879' },
{
default: withCtx(() => [
createVNode$1(
StyleSetting,
{
componentStyle: unref(data2).suspensionTerm.style,
onUpdate:
_cache[3] ||
(_cache[3] = ($event) =>
update3($event, 'suspensionTerm')),
},
null,
8,
['componentStyle']
),
]),
_: 1,
}
),
createVNode$1(
SettingItem$1,
{ title: '\u5B50\u60AC\u6D6E\u9879' },
{
default: withCtx(() => [
createVNode$1(
StyleSetting,
{
componentStyle: unref(data2).subSuspensionTerm.style,
onUpdate:
_cache[4] ||
(_cache[4] = ($event) =>
update3($event, 'subSuspensionTerm')),
},
null,
8,
['componentStyle']
),
]),
_: 1,
}
),
]
)),
])
)
}
},
})
var __glob_2_50 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$z,
default: _sfc_main$5l,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var DropdownMenu_vue_vue_type_style_index_0_scoped_true_lang = ''
var DropdownMenu_vue_vue_type_style_index_1_scoped_true_lang = ''
const _hoisted_1$4z = ['t']
const _hoisted_2$3W = ['onMouseenter']
const _hoisted_3$3x = ['onDblclick']
const _hoisted_4$31 = ['onClick', 'onDblclick']
const _hoisted_5$2L = {
key: 0,
class: 'no-data',
}
const _hoisted_6$2s = ['onClick', 'onMouseenter']
const _hoisted_7$28 = { class: 'dropdown-menu-label' }
const _hoisted_8$1U = ['onDblclick']
const _sfc_main$5k = /* @__PURE__ */ defineComponent({
props: {
node: {
default: () => {
return {
name: '',
is: '',
style: {},
props: {},
}
},
},
menus: {
default: () => {
return []
},
},
menu: {
default: () => {
return {
style: {},
}
},
},
submenu: {
default: () => {
return {
style: {},
}
},
},
activeMenu: {
default: () => {
return {
style: {},
}
},
},
editing: null,
suspensionTerm: {
default: () => {
return {
style: {},
}
},
},
subSuspensionTerm: {
default: () => {
return {
style: {},
}
},
},
menuStyle: { default: 'sutra' },
menuType: { default: 'horizontal' },
},
emits: ['update'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
useCssVars((_ctx) => ({
'814ab9d6': unref(data2).suspensionTerm.style.fontFamily,
'1a985ff2': unref(data2).suspensionTerm.style.fontSize,
'6e40c0be': unref(data2).suspensionTerm.style.color,
f0f09cda: unref(data2).suspensionTerm.style.backgroundColor,
f049a8ea: unref(data2).suspensionTerm.style.backgroundImage,
'07b7505e': unref(data2).suspensionTerm.style.backgroundSize,
'1c2ec335': unref(data2).subSuspensionTerm.style.fontFamily,
68360812: unref(data2).subSuspensionTerm.style.fontSize,
'71bfeb81': unref(data2).subSuspensionTerm.style.color,
'3e3ab51a': unref(data2).subSuspensionTerm.style.backgroundColor,
'3d93c12a': unref(data2).subSuspensionTerm.style.backgroundImage,
d8a9301e: unref(data2).subSuspensionTerm.style.backgroundSize,
}))
let dropdownMenu = ref()
let dropdownContain = ref()
let menuPopover = ref()
let triangle = ref()
const inputRef = ref()
const data2 = reactive(props2)
let activeItem = ref('')
let modifyInput = ref('')
let toggleMenu = ref('')
const activeMenuId = ref('')
const activeSubMenuId = ref('')
let cssVars = ref({})
watchEffect(() => {
for (let key2 in data2.node.style) {
cssVars.value['--' + key2] = data2.node.style[key2]
}
for (let key2 in data2.activeMenu.style) {
cssVars.value['--active-' + key2] = data2.activeMenu.style[key2]
}
})
let listLeft = ref(0)
let userJuris = reactive({
all: true,
left: [],
})
const noData = (menu2) => {
if (userJuris.all) {
return true
}
return (
menu2.menus &&
menu2.menus.every(
(item2) =>
item2.pageId !== '' && userJuris.left.indexOf(item2.pageId + '') < 0
)
)
}
const pageFrameSet = (node2) => {
let PF = CanvasNode$1.getById(node2.pageFrameId)
if (!PF) return
PF.methods.setTargetPage(node2.pageId)
}
onMounted(() => {
const initData = getInitData(data2)
emit2('update', initData)
if (!props2.editing) {
userJuris.all = userInfo.permissions.all
userJuris.left = [...userInfo.permissions.pages]
}
})
let activeNode = ref({
show: false,
width: 0,
height: 0,
node: null,
isTop: false,
position: {
left: 0,
},
})
function mouseEnter(event, node2) {
if (!dropdownMenu.value) return
let sourcePos = dropdownMenu.value.getClientRects()[0]
let pos = event.target.getClientRects()[0]
activeNode.value.width = pos.width
activeNode.value.height = pos.y - 10
activeNode.value.show = true
activeNode.value.node = node2
activeNode.value.position.left = pos.left - sourcePos.left
activeMenuId.value = node2.menuId
nextTick(() => {
if (dropdownContain.value) {
let height = menuPopover.value?.clientHeight || 0
let triangleHeight = 0
if (triangle.value) {
triangleHeight = triangle.value?.offsetHeight + 8
}
let parentNodePos =
dropdownContain.value.parentNode.getClientRects()[0]
activeNode.value.isTop =
pos.bottom + height + triangleHeight < parentNodePos.bottom
}
})
}
function mouseLeave() {
activeNode.value.show = false
activeMenuId.value = ''
}
function menuClick(event, node2) {
if (modifyInput.value !== node2.menuId) {
modifyInput.value = ''
}
if (toggleMenu.value !== node2.parentId) {
toggleMenu.value = ''
}
if (node2.menus && node2.menus.length > 0) {
toggleMenu.value = node2.menuId
listLeft.value = dropdownMenu.value
? dropdownMenu.value.offsetLeft +
event.target?.offsetParent.offsetLeft -
dropdownMenu.value.scrollLeft +
Number(
dropdownMenu.value.style.borderWidth.substring(
0,
dropdownMenu.value.style.borderWidth.length - 2
)
)
: 0
} else {
activeItem.value = node2.menuId
if (!props2.editing && node2.pageId !== '') {
if (node2.pageFrameId) {
pageFrameSet(node2)
} else {
push$4({
id: node2.pageId,
})
}
}
}
checkedChild.value = node2.parentId || ''
}
let checkedChild = ref('')
function dbClick(node2) {
if (!Language$1.isOriginal()) return
if (!props2.editing) return
modifyInput.value = node2.menuId
nextTick(() => {
inputRef.value?.focus()
})
}
function inputFocus(e2) {
e2.target?.select()
}
function edit2(node2, value2 = '') {
node2.menuName = value2
}
function reset2() {
toggleMenu.value = ''
modifyInput.value = ''
}
document.addEventListener('click', reset2, true)
onUnmounted(() => {
document.removeEventListener('click', reset2, true)
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'dropdown-contain',
'style-' + unref(data2).menuStyle,
]),
ref_key: 'dropdownContain',
ref: dropdownContain,
t: unref(collectText)(props2.menus),
},
[
createElementVNode(
'div',
{
class: 'dropdown-menu',
style: normalizeStyle$1(unref(cssVars)),
ref_key: 'dropdownMenu',
ref: dropdownMenu,
onClick:
_cache[4] || (_cache[4] = withModifiers(() => {}, ['stop'])),
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(data2).menus, (item2) => {
return (
openBlock(),
createElementBlock(
Fragment,
null,
[
unref(userJuris).all ||
item2.pageId == '' ||
(item2.menus && item2.menus.length > 0
? true
: unref(userJuris).left.indexOf(
item2.pageId + ''
) >= 0)
? (openBlock(),
createElementBlock(
'div',
{
class: 'dropdown-menu-item',
key: item2.menuId,
onMouseenter: ($event) =>
mouseEnter($event, item2),
onMouseleave: mouseLeave,
},
[
createElementVNode(
'div',
{
class: normalizeClass([
'dropdown-menu-label',
{
hover:
activeMenuId.value === item2.menuId,
},
]),
style: normalizeStyle$1({
...unref(data2).menu.style,
...(unref(activeItem) ===
item2.menuId ||
unref(checkedChild) === item2.menuId
? unref(data2).activeMenu.style
: ''),
}),
},
[
unref(modifyInput) !== '' &&
unref(modifyInput) === item2.menuId
? (openBlock(),
createBlock(
_component_el_input,
{
key: 0,
ref_for: true,
ref: (el2) => {
if (el2) inputRef.value = el2
},
style: { width: '100%' },
modelValue: item2.menuName,
'onUpdate:modelValue': ($event) =>
(item2.menuName = $event),
onInput: ($event) =>
edit2(item2, $event),
onFocus: inputFocus,
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
'onInput',
]
))
: createCommentVNode('', true),
item2.menus && item2.menus.length > 0
? (openBlock(),
createElementBlock(
'div',
{
key: 1,
class: 'label-name',
onDblclick: withModifiers(
($event) => dbClick(item2),
['stop']
),
},
[
createElementVNode(
'div',
null,
toDisplayString$1(
_ctx.t(item2.menuName)
),
1
),
],
40,
_hoisted_3$3x
))
: (openBlock(),
createElementBlock(
'div',
{
key: 2,
class: 'label-name',
onClick: ($event) =>
menuClick($event, {
...item2,
parentId: item2.menuId,
}),
onDblclick: withModifiers(
($event) => dbClick(item2),
['stop']
),
},
[
createElementVNode(
'div',
null,
toDisplayString$1(
_ctx.t(item2.menuName)
),
1
),
],
40,
_hoisted_4$31
)),
],
6
),
],
40,
_hoisted_2$3W
))
: createCommentVNode('', true),
],
64
)
)
}),
256
)),
withDirectives(
createElementVNode(
'div',
{
class: 'scms-dropdown-menu-popover',
style: normalizeStyle$1({
minWidth: activeNode.value.width + 'px',
left: activeNode.value.position.left + 'px',
top: activeNode.value.isTop
? 'calc(var(--height) - 4px)'
: 'unset',
bottom: !activeNode.value.isTop
? 'calc(var(--height) - 4px)'
: 'unset',
paddingTop: activeNode.value.isTop ? '12px' : 0,
paddingBottom: !activeNode.value.isTop
? unref(data2).menuStyle === 'industrial'
? '22px'
: '12px'
: 0,
}),
onMouseenter:
_cache[2] ||
(_cache[2] = ($event) =>
(activeNode.value.show = true)),
onMouseleave:
_cache[3] ||
(_cache[3] = ($event) =>
(activeNode.value.show = false)),
},
[
activeNode.value.node &&
activeNode.value.node.menus?.length !== 0
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: 'scms-dropdown-menu-list',
style: normalizeStyle$1({
backgroundColor:
unref(data2).submenu.style.backgroundColor,
maxHeight: !activeNode.value.isTop
? activeNode.value.height + 'px'
: 'unset',
}),
ref_key: 'menuPopover',
ref: menuPopover,
},
[
!unref(userJuris).all &&
noData(activeNode.value.node)
? (openBlock(),
createElementBlock(
'div',
_hoisted_5$2L,
toDisplayString$1(
_ctx._t('\u65E0\u6570\u636E')
),
1
))
: (openBlock(),
createElementBlock(
Fragment,
{ key: 1 },
[
unref(data2).menuStyle === 'industrial'
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: 'triangle',
ref_key: 'triangle',
ref: triangle,
style: normalizeStyle$1({
top: activeNode.value.isTop
? '3px'
: 'unset',
bottom: !activeNode.value.isTop
? '3px'
: 'unset',
}),
},
null,
4
))
: createCommentVNode('', true),
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
activeNode.value.node.menus,
(childdd) => {
return (
openBlock(),
createElementBlock(
Fragment,
null,
[
unref(userJuris).all ||
childdd.pageId == '' ||
unref(userJuris).left.indexOf(
childdd.pageId + ''
) >= 0
? (openBlock(),
createElementBlock(
'div',
{
key: childdd.menuId,
class: normalizeClass(
[
'el-dropdown-menu__item',
{
active:
unref(
activeItem
) ===
childdd.menuId,
hover:
activeSubMenuId.value ===
childdd.menuId,
},
]
),
onClick: ($event) =>
menuClick($event, {
...childdd,
parentId:
activeNode.value
.node?.menuId,
}),
onMouseenter: (
$event
) =>
(activeSubMenuId.value =
childdd.menuId),
onMouseleave:
_cache[1] ||
(_cache[1] = (
$event
) =>
(activeSubMenuId.value =
'')),
style:
normalizeStyle$1({
...unref(data2)
.submenu.style,
...(unref(
activeItem
) ===
childdd.menuId
? unref(data2)
.activeMenu
.style
: {}),
}),
},
[
createElementVNode(
'div',
_hoisted_7$28,
[
unref(
modifyInput
) !== '' &&
unref(
modifyInput
) ===
childdd.menuId
? (openBlock(),
createBlock(
_component_el_input,
{
key: 0,
ref_for: true,
ref: (
el2
) => {
if (el2)
inputRef.value =
el2
},
style: {
width:
'100%',
},
onClick:
_cache[0] ||
(_cache[0] =
withModifiers(() => {}, [
'stop',
])),
modelValue:
childdd.menuName,
'onUpdate:modelValue':
(
$event
) =>
(childdd.menuName =
$event),
onFocus:
inputFocus,
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
]
))
: createCommentVNode(
'',
true
),
createElementVNode(
'div',
{
onDblclick:
withModifiers(
(
$event
) =>
dbClick(
childdd
),
['stop']
),
style:
normalizeStyle$1(
{
opacity:
unref(
modifyInput
) !==
'' &&
unref(
modifyInput
) ===
childdd.menuId
? 0
: 1,
}
),
},
toDisplayString$1(
_ctx.t(
childdd.menuName
)
),
45,
_hoisted_8$1U
),
]
),
],
46,
_hoisted_6$2s
))
: createCommentVNode(
'',
true
),
],
64
)
)
}
),
256
)),
],
64
)),
],
4
))
: createCommentVNode('', true),
],
36
),
[[vShow, activeNode.value.show && activeNode.value.node]]
),
],
4
),
],
10,
_hoisted_1$4z
)
)
}
},
})
var DropdownMenu = /* @__PURE__ */ _export_sfc(_sfc_main$5k, [
['__scopeId', 'data-v-0c41ca22'],
])
var __glob_2_51 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: DropdownMenu,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const config$y = {
category: 'jump',
name: '\u5185\u5D4C\u83DC\u5355',
icon: 'icon-neiqiancaidan',
styleConfig: {
lineHeight: false,
},
onCreate(node2) {
initMenu(node2)
},
}
const _sfc_main$5j = /* @__PURE__ */ defineComponent({
setup(__props2) {
return (_ctx, _cache) => {
return openBlock(), createBlock(_sfc_main$5l)
}
},
})
var __glob_2_52 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$y,
default: _sfc_main$5j,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var DropdownMenuVertical_vue_vue_type_style_index_0_scoped_true_lang = ''
var DropdownMenuVertical_vue_vue_type_style_index_1_scoped_true_lang = ''
const _hoisted_1$4y = ['t']
const _hoisted_2$3V = ['onClick', 'onDblclick']
const _hoisted_3$3w = ['onClick']
const _sfc_main$5i = /* @__PURE__ */ defineComponent({
props: {
node: {
default: () => {
return {
name: '',
is: '',
style: {},
props: {},
}
},
},
menus: {
default: () => {
return []
},
},
menu: {
default: () => {
return {
style: {},
}
},
},
submenu: {
default: () => {
return {
style: {},
}
},
},
activeMenu: {
default: () => {
return {
style: {},
}
},
},
editing: null,
suspensionTerm: {
default: () => {
return {
style: {},
}
},
},
subSuspensionTerm: {
default: () => {
return {
style: {},
}
},
},
menuStyle: { default: 'sutra' },
menuType: { default: 'horizontal' },
},
emits: ['update'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
useCssVars((_ctx) => ({
'2f6eaff0': unref(data2).suspensionTerm.style.fontFamily,
'226fe78d': unref(data2).suspensionTerm.style.fontSize,
'6627b5e6': unref(data2).suspensionTerm.style.color,
'185f14d0': unref(data2).suspensionTerm.style.backgroundColor,
'17b820e0': unref(data2).suspensionTerm.style.backgroundImage,
'113f01a8': unref(data2).suspensionTerm.style.backgroundSize,
'6d1a770c': unref(data2).subSuspensionTerm.style.fontFamily,
'0ab8d2d2': unref(data2).subSuspensionTerm.style.fontSize,
'7997731c': unref(data2).subSuspensionTerm.style.color,
'08b5a74e': unref(data2).subSuspensionTerm.style.backgroundColor,
'09092146': unref(data2).subSuspensionTerm.style.backgroundImage,
'10d33eb6': unref(data2).subSuspensionTerm.style.backgroundSize,
}))
let dropdownMenu = ref()
let dropdownContain = ref()
const inputRef = ref()
const data2 = reactive(props2)
let activeItem = ref('')
let modifyInput = ref('')
let toggleMenu = ref('')
const activeMenuId = ref('')
const activeSubMenuId = ref('')
const menuArr = ref([])
let cssVars = ref({})
watchEffect(() => {
for (let key2 in data2.node.style) {
cssVars.value['--' + key2] = data2.node.style[key2]
}
for (let key2 in data2.activeMenu.style) {
cssVars.value['--active-' + key2] = data2.activeMenu.style[key2]
}
})
const nodeStyle = computed(() => {
const dataStyle = lodash$2.exports.cloneDeep(data2.node.style)
delete dataStyle.position
delete dataStyle.top
delete dataStyle.left
return dataStyle
})
let listLeft = ref(0)
let userJuris = reactive({
all: true,
left: [],
})
const pageFrameSet = (node2) => {
let PF = CanvasNode$1.getById(node2.pageFrameId)
if (!PF) return
PF.methods.setTargetPage(node2.pageId)
}
watch$1(
() => data2.menus,
() => {
menuArr.value = []
data2.menus.forEach((e2, i2) => {
menuArr.value.push(i2)
})
},
{ immediate: true }
)
onMounted(() => {
const initData = getInitData(data2)
emit2('update', initData)
if (!props2.editing) {
userJuris.all = userInfo.permissions.all
userJuris.left = [...userInfo.permissions.pages]
}
})
function mouseEnter(node2) {
activeMenuId.value = node2.menuId
}
function mouseLeave() {
activeMenuId.value = ''
}
function menuClick(event, node2) {
if (modifyInput.value !== node2.menuId) {
modifyInput.value = ''
}
if (toggleMenu.value !== node2.parentId) {
toggleMenu.value = ''
}
if (node2.menus && node2.menus.length > 0) {
toggleMenu.value = node2.menuId
listLeft.value = dropdownMenu.value
? dropdownMenu.value.offsetLeft +
event.target?.offsetParent.offsetLeft -
dropdownMenu.value.scrollLeft +
Number(
dropdownMenu.value.style.borderWidth.substring(
0,
dropdownMenu.value.style.borderWidth.length - 2
)
)
: 0
} else {
activeItem.value = node2.menuId
if (!props2.editing && node2.pageId !== '') {
if (node2.pageFrameId) {
pageFrameSet(node2)
} else {
push$4({
name: node2.pageName,
type: 1,
id: node2.pageId,
children: [],
})
}
}
}
checkedChild.value = node2.parentId || ''
}
let checkedChild = ref('')
function dbClick(node2) {
if (!Language$1.isOriginal()) return
if (!props2.editing) return
modifyInput.value = node2.menuId
nextTick(() => {
inputRef.value?.focus()
})
}
function inputFocus(e2) {
e2.target?.select()
}
function edit2(node2, value2 = '') {
node2.menuName = value2
}
function reset2() {
toggleMenu.value = ''
modifyInput.value = ''
}
document.addEventListener('click', reset2, true)
onUnmounted(() => {
document.removeEventListener('click', reset2, true)
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_menu_item = resolveComponent('el-menu-item')
const _component_el_sub_menu = resolveComponent('el-sub-menu')
const _component_el_menu = resolveComponent('el-menu')
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'dropdown-contain',
'style-' + unref(data2).menuStyle,
]),
ref_key: 'dropdownContain',
ref: dropdownContain,
t: unref(collectText)(props2.menus),
},
[
(openBlock(),
createBlock(
_component_el_menu,
{
'default-active': menuArr.value,
'default-openeds': menuArr.value,
key: menuArr.value.length,
class: 'el-menu-vertical-demo',
style: normalizeStyle$1({
...unref(cssVars),
...unref(nodeStyle),
rotate: 0,
}),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(data2).menus, (item2, index2) => {
return (
openBlock(),
createBlock(
_component_el_sub_menu,
{
index: index2,
key: item2.menuId,
class: 'dropdown-menu-item',
onMouseenter: ($event) => mouseEnter(item2),
onMouseleave: mouseLeave,
},
{
title: withCtx(() => [
createElementVNode(
'div',
{
class: normalizeClass([
'title',
{
active:
unref(activeItem) === item2.menuId ||
unref(checkedChild) === item2.menuId,
hover:
activeMenuId.value === item2.menuId,
},
]),
style: normalizeStyle$1({
...unref(data2).menu.style,
...(unref(activeItem) === item2.menuId ||
unref(checkedChild) === item2.menuId
? unref(data2).activeMenu.style
: ''),
}),
onClick: ($event) =>
!(item2.menus && item2.menus.length)
? menuClick($event, {
...item2,
parentId: item2.menuId,
})
: '',
onDblclick: withModifiers(
($event) => dbClick(item2),
['stop']
),
},
[
unref(modifyInput) !== '' &&
unref(modifyInput) === item2.menuId
? (openBlock(),
createBlock(
_component_el_input,
{
key: 0,
ref_for: true,
ref: (el2) => {
if (el2) inputRef.value = el2
},
style: { width: '100%' },
modelValue: item2.menuName,
'onUpdate:modelValue': ($event) =>
(item2.menuName = $event),
onInput: ($event) =>
edit2(item2, $event),
onFocus: inputFocus,
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
'onInput',
]
))
: createCommentVNode('', true),
createTextVNode(
' ' +
toDisplayString$1(_ctx.t(item2.menuName)),
1
),
],
46,
_hoisted_2$3V
),
]),
default: withCtx(() => [
item2.menus && item2.menus.length
? (openBlock(true),
createElementBlock(
Fragment,
{ key: 0 },
renderList(item2.menus, (child, inx) => {
return (
openBlock(),
createBlock(
_component_el_menu_item,
{
index: `${index2}-${inx}`,
key: child.menuId,
class: 'scms-dropdown-menu-list',
onMouseenter: ($event) =>
(activeSubMenuId.value =
child.menuId),
onMouseleave:
_cache[0] ||
(_cache[0] = ($event) =>
(activeSubMenuId.value = '')),
},
{
default: withCtx(() => [
createElementVNode(
'div',
{
class: normalizeClass([
'child',
{
active:
unref(activeItem) ===
child.menuId ||
unref(checkedChild) ===
child.menuId,
subHover:
activeSubMenuId.value ===
child.menuId,
},
]),
style: normalizeStyle$1({
...unref(data2).submenu
.style,
...(unref(activeItem) ===
child.menuId
? unref(data2).activeMenu
.style
: {}),
}),
onClick: ($event) =>
menuClick($event, {
...child,
parentId: child.parentId,
}),
},
toDisplayString$1(
_ctx.t(child.menuName)
),
15,
_hoisted_3$3w
),
]),
_: 2,
},
1032,
['index', 'onMouseenter']
)
)
}),
128
))
: createCommentVNode('', true),
]),
_: 2,
},
1032,
['index', 'onMouseenter']
)
)
}),
128
)),
]),
_: 1,
},
8,
['default-active', 'default-openeds', 'style']
)),
],
10,
_hoisted_1$4y
)
)
}
},
})
var DropdownMenuVertical = /* @__PURE__ */ _export_sfc(_sfc_main$5i, [
['__scopeId', 'data-v-2fdaf9af'],
])
var __glob_2_53 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: DropdownMenuVertical,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const config$x = {
category: 'jump',
name: '\u5782\u76F4\u83DC\u5355',
icon: 'icon-chuizhicaidan',
styleConfig: {
lineHeight: false,
},
onCreate(node2) {
initMenu(node2)
},
}
const _sfc_main$5h = /* @__PURE__ */ defineComponent({
setup(__props2) {
return (_ctx, _cache) => {
return openBlock(), createBlock(_sfc_main$5l)
}
},
})
var __glob_2_54 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$x,
default: _sfc_main$5h,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var DropdownMenuVertical2_vue_vue_type_style_index_0_scoped_true_lang = ''
var DropdownMenuVertical2_vue_vue_type_style_index_1_scoped_true_lang = ''
const _hoisted_1$4x = ['t']
const _hoisted_2$3U = ['onMouseenter']
const _hoisted_3$3v = ['onDblclick']
const _hoisted_4$30 = ['onClick', 'onDblclick']
const _hoisted_5$2K = {
key: 0,
class: 'no-data',
}
const _hoisted_6$2r = {
key: 0,
class: 'triangle',
}
const _hoisted_7$27 = ['onClick', 'onMouseenter']
const _hoisted_8$1T = { class: 'dropdown-menu-label' }
const _hoisted_9$1K = ['onDblclick']
const _sfc_main$5g = /* @__PURE__ */ defineComponent({
props: {
node: {
default: () => {
return {
name: '',
is: '',
style: {},
props: {},
}
},
},
menus: {
default: () => {
return []
},
},
menu: {
default: () => {
return {
style: {},
}
},
},
submenu: {
default: () => {
return {
style: {},
}
},
},
activeMenu: {
default: () => {
return {
style: {},
}
},
},
editing: null,
suspensionTerm: {
default: () => {
return {
style: {},
}
},
},
subSuspensionTerm: {
default: () => {
return {
style: {},
}
},
},
menuStyle: { default: 'sutra' },
menuType: { default: 'horizontal' },
},
emits: ['update'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
useCssVars((_ctx) => ({
'24604e5e': unref(data2).suspensionTerm.style.fontFamily,
'0e72497b': unref(data2).suspensionTerm.style.fontSize,
'09676a90': unref(data2).suspensionTerm.style.color,
'7232a82c': unref(data2).suspensionTerm.style.backgroundColor,
'718bb43c': unref(data2).suspensionTerm.style.backgroundImage,
'773d92cc': unref(data2).suspensionTerm.style.backgroundSize,
'2ae6674c': unref(data2).subSuspensionTerm.style.fontFamily,
b834742e: unref(data2).subSuspensionTerm.style.fontSize,
'6599d50a': unref(data2).subSuspensionTerm.style.color,
'6e90f7bc': unref(data2).subSuspensionTerm.style.backgroundColor,
'6ee471b4': unref(data2).subSuspensionTerm.style.backgroundImage,
77352888: unref(data2).subSuspensionTerm.style.backgroundSize,
}))
let dropdownMenu = ref()
let dropdownContain = ref()
let menuPopover = ref()
const inputRef = ref()
const data2 = reactive(props2)
let activeItem = ref('')
let modifyInput = ref('')
let toggleMenu = ref('')
const activeMenuId = ref('')
const activeSubMenuId = ref('')
let cssVars = ref({})
watchEffect(() => {
for (let key2 in data2.node.style) {
cssVars.value['--' + key2] = data2.node.style[key2]
}
for (let key2 in data2.activeMenu.style) {
cssVars.value['--active-' + key2] = data2.activeMenu.style[key2]
}
})
let listLeft = ref(0)
let userJuris = reactive({
all: true,
left: [],
})
const noData = (menu2) => {
if (userJuris.all) {
return true
}
return (
menu2.menus &&
menu2.menus.every(
(item2) =>
item2.pageId !== '' && userJuris.left.indexOf(item2.pageId + '') < 0
)
)
}
const pageFrameSet = (node2) => {
let PF = CanvasNode$1.getById(node2.pageFrameId)
if (!PF) return
PF.methods.setTargetPage(node2.pageId)
}
onMounted(() => {
const initData = getInitData(data2)
emit2('update', initData)
if (!props2.editing) {
userJuris.all = userInfo.permissions.all
userJuris.left = [...userInfo.permissions.pages]
}
})
let activeNode = ref({
show: false,
width: 0,
height: 0,
node: null,
isTop: false,
position: {
top: 0,
},
})
function mouseEnter(event, node2) {
if (!dropdownMenu.value) return
let sourcePos = dropdownMenu.value.getClientRects()[0]
let pos = event.target.getClientRects()[0]
activeNode.value.width = pos.width
activeNode.value.height = pos.y - 10
activeNode.value.show = true
activeNode.value.node = node2
activeNode.value.position.top = pos.top - sourcePos.top
activeMenuId.value = node2.menuId
nextTick(() => {
if (dropdownContain.value) {
let height = menuPopover.value?.clientHeight || 0
let parentNodePos =
dropdownContain.value.parentNode.getClientRects()[0]
activeNode.value.isTop = pos.bottom + height < parentNodePos.bottom
}
})
}
function mouseLeave() {
activeNode.value.show = false
activeMenuId.value = ''
}
function menuClick(event, node2) {
if (modifyInput.value !== node2.menuId) {
modifyInput.value = ''
}
if (toggleMenu.value !== node2.parentId) {
toggleMenu.value = ''
}
if (node2.menus && node2.menus.length > 0) {
toggleMenu.value = node2.menuId
listLeft.value = dropdownMenu.value
? dropdownMenu.value.offsetLeft +
event.target?.offsetParent.offsetLeft -
dropdownMenu.value.scrollLeft +
Number(
dropdownMenu.value.style.borderWidth.substring(
0,
dropdownMenu.value.style.borderWidth.length - 2
)
)
: 0
} else {
activeItem.value = node2.menuId
if (!props2.editing && node2.pageId !== '') {
if (node2.pageFrameId) {
pageFrameSet(node2)
} else {
push$4({
name: node2.pageName,
type: 1,
id: node2.pageId,
children: [],
})
}
}
}
checkedChild.value = node2.parentId || ''
}
let checkedChild = ref('')
function dbClick(node2) {
if (!Language$1.isOriginal()) return
if (!props2.editing) return
modifyInput.value = node2.menuId
nextTick(() => {
inputRef.value?.focus()
})
}
function inputFocus(e2) {
e2.target?.select()
}
function edit2(node2, value2 = '') {
node2.menuName = value2
}
function reset2() {
toggleMenu.value = ''
modifyInput.value = ''
}
document.addEventListener('click', reset2, true)
onUnmounted(() => {
document.removeEventListener('click', reset2, true)
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'dropdown-contain',
'style-' + unref(data2).menuStyle,
]),
ref_key: 'dropdownContain',
ref: dropdownContain,
t: unref(collectText)(props2.menus),
},
[
createElementVNode(
'div',
{
class: 'dropdown-menu',
style: normalizeStyle$1(unref(cssVars)),
ref_key: 'dropdownMenu',
ref: dropdownMenu,
onClick:
_cache[4] || (_cache[4] = withModifiers(() => {}, ['stop'])),
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(data2).menus, (item2) => {
return (
openBlock(),
createElementBlock(
Fragment,
null,
[
unref(userJuris).all ||
item2.pageId == '' ||
(item2.menus && item2.menus.length > 0
? true
: unref(userJuris).left.indexOf(
item2.pageId + ''
) >= 0)
? (openBlock(),
createElementBlock(
'div',
{
class: 'dropdown-menu-item',
key: item2.menuId,
onMouseenter: ($event) =>
mouseEnter($event, item2),
onMouseleave: mouseLeave,
},
[
createElementVNode(
'div',
{
class: normalizeClass([
'dropdown-menu-label',
{
hover:
activeMenuId.value === item2.menuId,
},
]),
style: normalizeStyle$1({
...unref(data2).menu.style,
...(unref(activeItem) ===
item2.menuId ||
unref(checkedChild) === item2.menuId
? unref(data2).activeMenu.style
: {}),
}),
},
[
unref(modifyInput) !== '' &&
unref(modifyInput) === item2.menuId
? (openBlock(),
createBlock(
_component_el_input,
{
key: 0,
ref_for: true,
ref: (el2) => {
if (el2) inputRef.value = el2
},
style: { width: '100%' },
modelValue: item2.menuName,
'onUpdate:modelValue': ($event) =>
(item2.menuName = $event),
onInput: ($event) =>
edit2(item2, $event),
onFocus: inputFocus,
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
'onInput',
]
))
: createCommentVNode('', true),
item2.menus && item2.menus.length > 0
? (openBlock(),
createElementBlock(
'div',
{
key: 1,
class: 'label-name',
onDblclick: withModifiers(
($event) => dbClick(item2),
['stop']
),
},
[
createElementVNode(
'div',
null,
toDisplayString$1(
_ctx.t(item2.menuName)
),
1
),
],
40,
_hoisted_3$3v
))
: (openBlock(),
createElementBlock(
'div',
{
key: 2,
class: 'label-name',
onClick: ($event) =>
menuClick($event, {
...item2,
parentId: item2.menuId,
}),
onDblclick: withModifiers(
($event) => dbClick(item2),
['stop']
),
},
[
createElementVNode(
'div',
null,
toDisplayString$1(
_ctx.t(item2.menuName)
),
1
),
],
40,
_hoisted_4$30
)),
],
6
),
],
40,
_hoisted_2$3U
))
: createCommentVNode('', true),
],
64
)
)
}),
256
)),
withDirectives(
createElementVNode(
'div',
{
class: 'scms-dropdown-menu-popover',
style: normalizeStyle$1({
minWidth: activeNode.value.width + 'px',
left: 'calc(var(--width) + 4px)',
top: activeNode.value.isTop
? activeNode.value.position.top + 'px'
: 'unset',
bottom: !activeNode.value.isTop ? '0' : 'unset',
}),
onMouseenter:
_cache[2] ||
(_cache[2] = ($event) =>
(activeNode.value.show = true)),
onMouseleave:
_cache[3] ||
(_cache[3] = ($event) =>
(activeNode.value.show = false)),
},
[
activeNode.value.node &&
activeNode.value.node.menus?.length !== 0
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: 'scms-dropdown-menu-list',
style: normalizeStyle$1({
...unref(cssVars),
...unref(data2).submenu.style,
maxHeight: !activeNode.value.isTop
? activeNode.value.height + 'px'
: 'unset',
}),
ref_key: 'menuPopover',
ref: menuPopover,
},
[
!unref(userJuris).all &&
noData(activeNode.value.node)
? (openBlock(),
createElementBlock(
'div',
_hoisted_5$2K,
toDisplayString$1(
_ctx._t('\u65E0\u6570\u636E')
),
1
))
: (openBlock(),
createElementBlock(
Fragment,
{ key: 1 },
[
unref(data2).menuStyle === 'industrial'
? (openBlock(),
createElementBlock(
'div',
_hoisted_6$2r
))
: createCommentVNode('', true),
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
activeNode.value.node.menus,
(childdd) => {
return (
openBlock(),
createElementBlock(
Fragment,
null,
[
unref(userJuris).all ||
childdd.pageId == '' ||
unref(userJuris).left.indexOf(
childdd.pageId + ''
) >= 0
? (openBlock(),
createElementBlock(
'div',
{
key: childdd.menuId,
class: normalizeClass(
[
'el-dropdown-menu__item',
{
active:
unref(
activeItem
) ===
childdd.menuId,
hover:
activeSubMenuId.value ===
childdd.menuId,
},
]
),
onClick: ($event) =>
menuClick($event, {
...childdd,
parentId:
activeNode.value
.node?.menuId,
}),
onMouseenter: (
$event
) =>
(activeSubMenuId.value =
childdd.menuId),
onMouseleave:
_cache[1] ||
(_cache[1] = (
$event
) =>
(activeSubMenuId.value =
'')),
style:
normalizeStyle$1({
...unref(data2)
.submenu.style,
...(unref(
activeItem
) ===
childdd.menuId
? unref(data2)
.activeMenu
.style
: {}),
}),
},
[
createElementVNode(
'div',
_hoisted_8$1T,
[
unref(
modifyInput
) !== '' &&
unref(
modifyInput
) ===
childdd.menuId
? (openBlock(),
createBlock(
_component_el_input,
{
key: 0,
ref_for: true,
ref: (
el2
) => {
if (el2)
inputRef.value =
el2
},
style: {
width:
'100%',
},
onClick:
_cache[0] ||
(_cache[0] =
withModifiers(() => {}, [
'stop',
])),
modelValue:
childdd.menuName,
'onUpdate:modelValue':
(
$event
) =>
(childdd.menuName =
$event),
onFocus:
inputFocus,
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
]
))
: createCommentVNode(
'',
true
),
createElementVNode(
'div',
{
onDblclick:
withModifiers(
(
$event
) =>
dbClick(
childdd
),
['stop']
),
style:
normalizeStyle$1(
{
opacity:
unref(
modifyInput
) !==
'' &&
unref(
modifyInput
) ===
childdd.menuId
? 0
: 1,
}
),
},
toDisplayString$1(
_ctx.t(
childdd.menuName
)
),
45,
_hoisted_9$1K
),
]
),
],
46,
_hoisted_7$27
))
: createCommentVNode(
'',
true
),
],
64
)
)
}
),
256
)),
],
64
)),
],
4
))
: createCommentVNode('', true),
],
36
),
[[vShow, activeNode.value.show && activeNode.value.node]]
),
],
4
),
],
10,
_hoisted_1$4x
)
)
}
},
})
var DropdownMenuVertical2 = /* @__PURE__ */ _export_sfc(_sfc_main$5g, [
['__scopeId', 'data-v-d680019e'],
])
var __glob_2_55 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: DropdownMenuVertical2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var InputCode_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$4w = { class: 'inputCode' }
const _hoisted_2$3T = ['contenteditable']
const _hoisted_3$3u = ['innerHTML']
const _sfc_main$5f = /* @__PURE__ */ defineComponent({
props: ['modelValue'],
emits: ['update:modelValue', 'update:focusWord'],
setup(__props2, { expose, emit: emit2 }) {
const props2 = __props2
let code2 = ref('')
watch$1(
() => props2.modelValue,
() => {
code2.value = props2.modelValue || ''
},
{ immediate: true }
)
let inputEl = ref()
const contentEditable = 'plaintext-only'
function updateInputInnerText() {
if (!inputEl.value) {
return
}
if (getInnerText() === code2.value) return
inputEl.value.innerText = code2.value
}
function getInnerText() {
const innerText = inputEl.value?.innerText || ''
return fixInnerTextLn(innerText)
}
function fixInnerTextLn(innerText) {
if (inputEl.value?.contentEditable === contentEditable) {
return innerText
}
return innerText.replace(/\n+/g, function ($and) {
const length2 = $and.split('').length
const lengthFixed = Math.floor((length2 + 1) / 2)
return Array(lengthFixed).fill('\n').join('')
})
}
let codeHighlighted = computed(() => {
updateInputInnerText()
return highlight(code2.value)
})
function highlight(value2) {
let html2 = value2
html2 = html2
.replace(/\b(true|false)\b/g, '\u{1F47E}b $& b\u{1F47E}')
.replace(/\b[\d.]+/gi, '\u{1F47E}n $& n\u{1F47E}')
.replace(/"(\\.|.)*?"/gi, '\u{1F47E}s $& s\u{1F47E}')
.replace(/[!%^&*\-+=|<>/]+/gi, '\u{1F47E}p $& p\u{1F47E}')
.replace(/\b(\w+)\s*(?=\()/gi, '\u{1F47E}f $& f\u{1F47E}')
.replace(/\[.*?\]/gi, '\u{1F47E}k $& k\u{1F47E}')
html2 = html2.replace(//g, '>')
html2 = html2
.replace(/👾b (.*?) b👾/g, '$1')
.replace(/👾n (.*?) n👾/g, '$1')
.replace(/👾s (.*?) s👾/g, '$1')
.replace(/👾p (.*?) p👾/g, '$1')
.replace(/👾f (.*?) f👾/g, '$1')
.replace(/👾k (.*?) k👾/g, '$1')
html2 = html2.replace(/\n/g, '
')
return html2
}
function input() {
code2.value = getInnerText()
emit2('update:modelValue', code2.value)
emit2('update:focusWord', getFocusWord())
}
function click2() {
emit2('update:focusWord', getFocusWord())
}
let range3
function saveRange() {
const selection = document.getSelection()
range3 = selection?.getRangeAt(0)
}
function insertCode2(text2) {
if (!inputEl.value) {
console.warn('!inputEl')
return
}
const selection = document.getSelection()
if (!selection) return
if (!range3) {
range3 = new Range()
range3.selectNodeContents(inputEl.value)
range3.collapse()
}
selection.removeAllRanges()
selection.addRange(range3)
document.execCommand('insertText', false, text2)
if (/\)$/.test(text2)) {
const rangeCurrent = selection.getRangeAt(0)
rangeCurrent.setEnd(
rangeCurrent.endContainer,
rangeCurrent.endOffset - 2
)
selection.removeAllRanges()
selection.addRange(rangeCurrent)
}
input()
}
function getFocusWord() {
const range22 = document.getSelection()?.getRangeAt(0)
if (!range22) return
const node2 = range22.endContainer
const text2 = node2.nodeValue || ''
const left2 = text2.slice(0, range22.endOffset)
const right2 = text2.slice(range22.endOffset)
const l2 = left2.match(/\w+$/)?.[0] || ''
const r2 = right2.match(/^\w+/)?.[0] || ''
return l2 + r2
}
expose({
insertCode: insertCode2,
getFocusWord,
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$4w, [
createElementVNode(
'div',
{
ref_key: 'inputEl',
ref: inputEl,
class: 'input',
contenteditable: contentEditable,
spellcheck: 'false',
onInput: input,
onClick: click2,
'.onblur': saveRange,
},
null,
40,
_hoisted_2$3T
),
createElementVNode(
'div',
{
class: 'highlight',
innerHTML: codeHighlighted.value,
},
null,
8,
_hoisted_3$3u
),
])
)
}
},
})
var InputCode = /* @__PURE__ */ _export_sfc(_sfc_main$5f, [
['__scopeId', 'data-v-07c7cc32'],
])
var InputCode$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: InputCode,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ExpConfigDialog_vue_vue_type_style_index_0_scoped_true_lang$2 = ''
var ExpConfigDialog_vue_vue_type_style_index_1_scoped_true_lang = ''
var ExpConfigDialog_vue_vue_type_style_index_2_lang = ''
const _withScopeId$2D = (n2) => (
pushScopeId('data-v-fdc481d0'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$4v = { class: 'dialog-body' }
const _hoisted_2$3S = { class: 'row mb' }
const _hoisted_3$3t = { class: 'col' }
const _hoisted_4$2$ = { class: 'row' }
const _hoisted_5$2J = { class: 'panel-left' }
const _hoisted_6$2q = { class: 'tabs' }
const _hoisted_7$26 = ['onClick']
const _hoisted_8$1S = { class: 'body' }
const _hoisted_9$1J = { class: 'filter' }
const _hoisted_10$1B = ['onClick']
const _hoisted_11$1t = { class: 'body' }
const _hoisted_12$1p = {
key: 0,
class: 'empty',
}
const _hoisted_13$1f = ['a', 'title', 'onClick']
const _hoisted_14$16 = { class: 'panel-right' }
const _hoisted_15$12 = /* @__PURE__ */ _withScopeId$2D(() =>
/* @__PURE__ */ createElementVNode(
'p',
{ class: 'title' },
'\u53D8\u91CF',
-1
)
)
const _hoisted_16$10 = { class: 'body' }
const _hoisted_17$W = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_18$Q = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$5e = /* @__PURE__ */ defineComponent({
props: {
code: {
type: String,
default: '',
},
confirmAutoClose: {
type: Boolean,
default: true,
},
mergeVariableList: {
type: Array,
default: () => [],
},
filterClientVariables: {
type: Boolean,
default: false,
},
},
emits: ['update:modelValue', 'update:code', 'change', 'close'],
setup(__props, { emit }) {
const props = __props
const tabs = ['\u8FD0\u7B97', '\u4E8B\u4EF6\u53C2\u6570']
let activeTab = ref(tabs[0])
const getTitle = (obj) => {
if (typeof obj !== 'object') return ''
let str = ''
for (const key2 in obj) {
str += `
- ${key2}\uFF1A
- ${obj[key2]}
`
}
str += '
'
return str
}
let code = ref('')
const reset = () => {
code.value = props.code || ''
operatorType.value = operatorCatList[0].type
activeTab.value = tabs[0]
}
watch$1(
() => props.code,
() => {
code.value = props.code || ''
},
{ immediate: true }
)
function syntaxCheck(code) {
const rs = {
pass: false,
msg: '',
}
try {
Function(`return ${code}`)
rs.pass = true
} catch (error) {
try {
eval(`"use strict"; ${code}`)
} catch (error2) {
rs.msg = `${error2}`
}
}
return rs
}
async function change() {
const rs2 = syntaxCheck(code.value)
if (!rs2.pass) {
toast(`\u8BED\u6CD5\u9519\u8BEF ${rs2.msg}`, 'error')
return
}
emit('update:code', code.value)
emit('change', code.value)
props.confirmAutoClose && close()
}
function close() {
emit('update:modelValue', false)
emit('close')
reset()
}
const operatorCatList = [
{
type: '\u6240\u6709',
list: [],
},
{
type: '\u6570\u503C\u8FD0\u7B97',
list: ['+', '-', '*', '/'],
},
{
type: '\u903B\u8F91\u8FD0\u7B97',
list: ['>', '>=', '<', '<=', '==', '!=', '&&', '||'],
},
]
operatorCatList[0].list = operatorCatList
.slice(1)
.reduce((p2, c2) => [...p2, ...c2.list], [])
let operatorType = ref(operatorCatList[0].type)
let operatorList = computed(() => {
return operatorCatList.find((e2) => e2.type === operatorType.value)?.list
})
let inputCode = ref()
function insertCode(text2) {
inputCode.value?.insertCode(text2)
}
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_vxe_list = resolveComponent('vxe-list')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': true,
'close-on-click-modal': false,
'destroy-on-close': true,
title: '\u8868\u8FBE\u5F0F\u914D\u7F6E',
'custom-class': 'cms-el-dialog',
width: '995px',
onClose: close,
},
{
footer: withCtx(() => [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: close,
},
{
default: withCtx(() => [_hoisted_17$W]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: change,
},
{
default: withCtx(() => [_hoisted_18$Q]),
_: 1,
}
),
]),
default: withCtx(() => [
createElementVNode('div', _hoisted_1$4v, [
createElementVNode('div', _hoisted_2$3S, [
createElementVNode('div', _hoisted_3$3t, [
createVNode$1(
InputCode,
{
ref_key: 'inputCode',
ref: inputCode,
modelValue: code.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (code.value = $event)),
},
null,
8,
['modelValue']
),
]),
]),
createElementVNode('div', _hoisted_4$2$, [
createElementVNode('div', _hoisted_5$2J, [
createElementVNode('div', _hoisted_6$2q, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(tabs), (item2) => {
return (
openBlock(),
createElementBlock(
'span',
{
key: item2,
class: normalizeClass({
active: item2 == activeTab.value,
}),
onClick: ($event) => (activeTab.value = item2),
},
toDisplayString$1(item2),
11,
_hoisted_7$26
)
)
}),
128
)),
]),
withDirectives(
createElementVNode(
'div',
_hoisted_8$1S,
[
createElementVNode('div', _hoisted_9$1J, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select cms-el-input-min',
'popper-class': 'cms-el-select__popper',
modelValue: operatorType.value,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(operatorType.value = $event)),
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(operatorCatList, (cat) => {
return createVNode$1(
_component_el_option,
{
key: cat.type,
value: cat.type,
},
null,
8,
['value']
)
}),
64
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
createElementVNode('ul', null, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(operatorList.value, (op) => {
return (
openBlock(),
createElementBlock(
'li',
{
key: op,
onClick: ($event) =>
insertCode(` ${op} `),
},
toDisplayString$1(op),
9,
_hoisted_10$1B
)
)
}),
128
)),
]),
],
512
),
[[vShow, activeTab.value === unref(tabs)[0]]]
),
withDirectives(
createElementVNode(
'div',
_hoisted_11$1t,
[
createVNode$1(
_component_vxe_list,
{
class: 'var-list-tree',
data: _ctx.$props.mergeVariableList,
'item-size': 32,
},
{
default: withCtx(({ items }) => [
!_ctx.$props.mergeVariableList?.length
? (openBlock(),
createElementBlock(
'div',
_hoisted_12$1p,
'\u6682\u65E0\u6570\u636E'
))
: createCommentVNode('', true),
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(items, (item2) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'var-list-tree-node',
key: item2['\u53C2\u6570'],
a: item2['\u53C2\u6570'],
title: getTitle(item2),
'data-tooltip-raw-content': '',
'data-tooltip-placement':
'right-start',
'data-tooltip-show-after': '0',
'data-tooltip-offset': '2',
onClick: ($event) =>
insertCode(item2['\u53C2\u6570']),
},
toDisplayString$1(
item2['\u53C2\u6570']
),
9,
_hoisted_13$1f
)
)
}),
128
)),
]),
_: 1,
},
8,
['data']
),
],
512
),
[[vShow, activeTab.value === unref(tabs)[1]]]
),
]),
createElementVNode('div', _hoisted_14$16, [
_hoisted_15$12,
createElementVNode('div', _hoisted_16$10, [
createVNode$1(
VarReferenceConfig,
{
ref: 'varUseRef',
size: 'small',
noLanguage: true,
filterClientVariables: props.filterClientVariables,
onCellClick:
_cache[2] ||
(_cache[2] = (row) => insertCode(row?.name)),
},
null,
8,
['filterClientVariables']
),
]),
]),
]),
]),
]),
_: 1,
}
)
)
}
},
})
var FormulaConfigDialog$2 = /* @__PURE__ */ _export_sfc(_sfc_main$5e, [
['__scopeId', 'data-v-fdc481d0'],
])
var ExpConfigDialog$4 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: FormulaConfigDialog$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const OperationKeyList = [
{ label: '==', value: '==' },
{ label: '!=', value: '!=' },
{ label: '>', value: '>' },
{ label: '<', value: '<' },
{ label: '>=', value: '>=' },
{ label: '<=', value: '<=' },
{ label: '\u533A\u95F4', value: '[]' },
{ label: '\u4E0D\u4E3A\u7A7A', value: 'true' },
{ label: '\u4E3A\u7A7A', value: 'false' },
]
var OperationEnumType = /* @__PURE__ */ ((OperationEnumType2) => {
OperationEnumType2['RANG'] = '[]'
OperationEnumType2['NOTEmpty'] = 'true'
OperationEnumType2['Empty'] = 'false'
return OperationEnumType2
})(OperationEnumType || {})
const DynamicTypeList = [
{ is: 'DynamicCircle', name: '\u5706\u5F62' },
{ is: 'DynamicRect', name: '\u77E9\u5F62' },
{ is: 'DynamicText', name: '\u6587\u672C' },
{ is: 'DynamicImg', name: '\u56FE\u7247' },
]
var DynamicEnumType = /* @__PURE__ */ ((DynamicEnumType2) => {
DynamicEnumType2['DynamicCircle'] = 'DynamicCircle'
DynamicEnumType2['DynamicRect'] = 'DynamicRect'
DynamicEnumType2['DynamicText'] = 'DynamicText'
DynamicEnumType2['DynamicImg'] = 'DynamicImg'
return DynamicEnumType2
})(DynamicEnumType || {})
const StartData = {
name: '\u542F\u52A8\u72B6\u6001',
exp: ['1'],
color: '#1CC87A',
text: '"\u542F\u52A8"',
}
const stopData = {
name: '\u505C\u6B62\u72B6\u6001',
exp: ['0'],
color: '#F84D4D',
text: '"\u505C\u6B62"',
}
const CaseItemDataDefaultByShape = () => {
let shape1 = {
name: StartData.name,
exp: StartData.exp,
configStyle: {
background: {
value: {
backgroundColor: StartData.color,
},
enabled: true,
},
},
}
let shape2 = {
name: stopData.name,
exp: stopData.exp,
configStyle: {
background: {
value: {
backgroundColor: stopData.color,
},
enabled: true,
},
},
}
return [createCaseItemData(shape1), createCaseItemData(shape2)]
}
const CaseItemDataDefaultByText = () => {
let shape1 = {
name: StartData.name,
exp: StartData.exp,
configStyle: {
color: {
value: StartData.color,
enabled: true,
},
textContent: {
value: StartData.text,
enabled: true,
},
},
}
let shape2 = {
name: stopData.name,
exp: stopData.exp,
configStyle: {
color: {
value: stopData.color,
enabled: true,
},
textContent: {
value: stopData.text,
enabled: true,
},
},
}
return [createCaseItemData(shape1), createCaseItemData(shape2)]
}
const CaseItemDataDefaultByImg = () => {
let shape1 = {
name: StartData.name,
exp: StartData.exp,
configStyle: {
image: {
enabled: true,
},
},
}
let shape2 = {
name: stopData.name,
exp: stopData.exp,
configStyle: {
image: {
enabled: true,
},
},
}
return [createCaseItemData(shape1), createCaseItemData(shape2)]
}
const createDefaultData = (node2) => {
if (!node2.is) return []
const fn2 = {
['DynamicCircle']: CaseItemDataDefaultByShape,
['DynamicRect']: CaseItemDataDefaultByShape,
['DynamicText']: CaseItemDataDefaultByText,
['DynamicImg']: CaseItemDataDefaultByImg,
}[node2.is]
return (fn2 && fn2()) || []
}
const createCaseItemData = (options2 = {}) => {
let defaultsData = {
name: '',
type: '==',
exp: [],
configStyle: {
background: {
value: {
backgroundColor: '',
},
enabled: false,
},
color: {
value: '',
enabled: false,
},
textContent: {
value: '',
enabled: false,
},
bling: {
value: '',
enabled: false,
},
image: {
value: '',
enabled: false,
},
},
}
defaultsData = lodash$2.exports.mergeWith(defaultsData, options2)
return defaultsData
}
var StatusItem_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2C = (n2) => (
pushScopeId('data-v-794c7cb6'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$4u = { class: 'status-item' }
const _hoisted_2$3R = { class: 'operation' }
const _hoisted_3$3s = ['onClick']
const _hoisted_4$2_ = { class: 'row-flex' }
const _hoisted_5$2I = { class: 'left-label mr-6' }
const _hoisted_6$2p = ['title']
const _hoisted_7$25 = { class: 'row-flex mt-4' }
const _hoisted_8$1R = /* @__PURE__ */ _withScopeId$2C(() =>
/* @__PURE__ */ createElementVNode(
'label',
{ class: 'left-label mr-6 w-54' },
'\u6761\u4EF6\u5224\u65AD',
-1
)
)
const _hoisted_9$1I = {
key: 0,
class: 'rang row-flex',
}
const _hoisted_10$1A = /* @__PURE__ */ _withScopeId$2C(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'dividing-line' },
'-',
-1
)
)
const _hoisted_11$1s = { key: 1 }
const _hoisted_12$1o = { class: 'style-list mt-4' }
const _hoisted_13$1e = { class: 'style-item row-flex' }
const _hoisted_14$15 = {
key: 0,
class: 'style-item row-flex',
}
const _hoisted_15$11 = {
key: 1,
class: 'style-item row-flex',
}
const _hoisted_16$$ = { class: 'text-argument-view' }
const _hoisted_17$V = { class: 'flex-full input-group arg-value' }
const _hoisted_18$P = ['title']
const _hoisted_19$M = /* @__PURE__ */ _withScopeId$2C(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-bianliang1 fx' },
null,
-1
)
)
const _hoisted_20$H = [_hoisted_19$M]
const _hoisted_21$z = { class: 'style-item' }
const _hoisted_22$x = {
key: 2,
class: 'image-argument-view',
}
const _hoisted_23$u = { class: 'arg-name' }
const _hoisted_24$s = { class: 'flex-full arg-value' }
const _hoisted_25$n = { class: 'img-card' }
const _hoisted_26$m = {
key: 0,
class: 'iconfont',
'aria-hidden': 'true',
}
const _hoisted_27$l = /* @__PURE__ */ _withScopeId$2C(() =>
/* @__PURE__ */ createElementVNode(
'use',
{ 'xlink:href': '#icon-morentupian' },
null,
-1
)
)
const _hoisted_28$k = [_hoisted_27$l]
const _hoisted_29$h = {
key: 1,
class: 'img-group',
}
const _hoisted_30$h = ['src']
const _hoisted_31$e = { class: 'img-icon' }
const _hoisted_32$e = /* @__PURE__ */ _withScopeId$2C(() =>
/* @__PURE__ */ createElementVNode(
'div',
{
class: 'dialog-content',
align: 'center',
},
[
/* @__PURE__ */ createElementVNode(
'div',
null,
'\u786E\u8BA4\u540E\uFF0C\u4ECE\u5217\u8868\u4E2D\u5220\u9664\u8BE5\u72B6\u6001\u3002'
),
],
-1
)
)
const _hoisted_33$e = { class: 'el-dialog__footer' }
const _hoisted_34$b = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_35$b = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$5d = /* @__PURE__ */ defineComponent({
props: {
node: null,
caseItemData: null,
idx: null,
maxIdx: null,
},
emits: ['delete', 'copy', 'move'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const IMG_BASE_URL = request.defaults.baseURL + `/api/v1/view/image/`
const node2 = $props2.node
const caseItemData = $props2.caseItemData
const isDynamicImg = computed(() => {
return node2.is === DynamicEnumType.DynamicImg
})
const changeImg = (imgUrl) => {
caseItemData.configStyle.image.value = imgUrl
}
const changeName = (val2) => {
caseItemData.name = val2
}
let expConfig = reactive({
visible: false,
})
const confirm2 = (code2) => {
caseItemData.configStyle.textContent.value = code2
}
let isEdit = ref(false)
let inputName = ref()
const switchEditor = () => {
isEdit.value = !isEdit.value
if (isEdit.value) {
nextTick(() => {
inputName.value?.focus()
})
}
}
const delNodeDialog = reactive({
isShow: false,
hideDialog() {
delNodeDialog.isShow = false
},
showDialog() {
delNodeDialog.isShow = true
},
})
const deleteEvent = () => {
delNodeDialog.hideDialog()
emit2('delete')
}
const copyEvent = () => {
emit2('copy')
}
const moveEvent = (dir3) => {
emit2('move', dir3)
}
let lastCaseItemDataName = caseItemData.name
const handleBlur = () => {
if (!caseItemData.name) {
caseItemData.name = lastCaseItemDataName
}
isEdit.value = false
lastCaseItemDataName = caseItemData.name
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_color_picker = resolveComponent('el-color-picker')
const _component_el_popover = resolveComponent('el-popover')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', _hoisted_1$4u, [
createElementVNode('div', _hoisted_2$3R, [
__props2.idx !== 0
? (openBlock(),
createElementBlock('i', {
key: 0,
class: 'iconfont icon-shangyiceng sort',
title: '\u4E0A\u79FB',
'data-tooltip-show-after': '100',
onClick:
_cache[0] ||
(_cache[0] = withModifiers(
($event) => moveEvent('up'),
['stop']
)),
}))
: createCommentVNode('', true),
__props2.idx !== __props2.maxIdx - 1
? (openBlock(),
createElementBlock('i', {
key: 1,
class: 'iconfont icon-xiayiceng sort',
title: '\u4E0B\u79FB',
'data-tooltip-show-after': '100',
onClick:
_cache[1] ||
(_cache[1] = withModifiers(
($event) => moveEvent('down'),
['stop']
)),
}))
: createCommentVNode('', true),
createElementVNode(
'i',
{
class: 'iconfont icon-fuzhi1',
title: '\u590D\u5236',
'data-tooltip-show-after': '100',
onClick: withModifiers(copyEvent, ['stop']),
},
null,
8,
_hoisted_3$3s
),
createElementVNode('i', {
class: 'iconfont icon-tupianshanchu',
title: '\u5220\u9664',
'data-tooltip-show-after': '100',
onClick:
_cache[2] ||
(_cache[2] = withModifiers(
(...args) =>
unref(delNodeDialog).showDialog &&
unref(delNodeDialog).showDialog(...args),
['stop']
)),
}),
]),
createElementVNode('div', _hoisted_4$2_, [
createElementVNode('div', _hoisted_5$2I, [
!unref(isEdit)
? (openBlock(),
createElementBlock(
'label',
{
key: 0,
title: unref(caseItemData).name,
},
toDisplayString$1(unref(caseItemData).name),
9,
_hoisted_6$2p
))
: (openBlock(),
createBlock(
_component_el_input,
{
key: 1,
class: 'cms-el-input-x',
ref_key: 'inputName',
ref: inputName,
'model-value': unref(caseItemData).name,
onInput: changeName,
onBlur: handleBlur,
},
null,
8,
['model-value']
)),
]),
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont icon-bianjigongcheng',
{ editor: unref(isEdit) },
]),
onClick: switchEditor,
},
null,
2
),
]),
createElementVNode('div', _hoisted_7$25, [
_hoisted_8$1R,
createVNode$1(
_component_el_select,
{
modelValue: unref(caseItemData).type,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) => (unref(caseItemData).type = $event)),
class: 'cms-el-select-x operation-select mr-6',
'popper-class': 'cms-el-select_check',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(OperationKeyList), (op, idx) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: op.label + idx,
label: op.label,
value: op.value,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
unref(caseItemData).type == unref(OperationEnumType).RANG
? (openBlock(),
createElementBlock('div', _hoisted_9$1I, [
createVNode$1(
_component_el_input,
{
modelValue: unref(caseItemData).exp[0],
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(caseItemData).exp[0] = $event)),
title: unref(Variable).expTitleTip,
class: 'cms-el-input-x flex-1',
},
null,
8,
['modelValue', 'title']
),
_hoisted_10$1A,
createVNode$1(
_component_el_input,
{
modelValue: unref(caseItemData).exp[1],
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) =>
(unref(caseItemData).exp[1] = $event)),
title: unref(Variable).expTitleTip,
class: 'cms-el-input-x flex-1',
},
null,
8,
['modelValue', 'title']
),
]))
: [
unref(OperationEnumType).Empty,
unref(OperationEnumType).NOTEmpty,
].includes(unref(caseItemData).type)
? (openBlock(), createElementBlock('span', _hoisted_11$1s))
: (openBlock(),
createBlock(
_component_el_input,
{
key: 2,
modelValue: unref(caseItemData).exp[0],
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) =>
(unref(caseItemData).exp[0] = $event)),
title: unref(Variable).expTitleTip,
class: 'cms-el-input-x flex-1',
},
null,
8,
['modelValue', 'title']
)),
]),
createElementVNode('div', _hoisted_12$1o, [
createElementVNode('div', _hoisted_13$1e, [
createVNode$1(
_component_el_checkbox,
{
modelValue:
unref(caseItemData).configStyle.background.enabled,
'onUpdate:modelValue':
_cache[7] ||
(_cache[7] = ($event) =>
(unref(caseItemData).configStyle.background.enabled =
$event)),
label: '\u586B\u5145\u989C\u8272',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
modelValue:
unref(caseItemData).configStyle.background.value
.backgroundColor,
'onUpdate:modelValue':
_cache[8] ||
(_cache[8] = ($event) =>
(unref(
caseItemData
).configStyle.background.value.backgroundColor = $event)),
},
null,
8,
['predefine', 'modelValue']
),
createVNode$1(
BackgroundImageSetting,
{
styleX: unref(styleConverter)(
unref(caseItemData).configStyle.background.value
),
},
null,
8,
['styleX']
),
]),
!unref(isDynamicImg)
? (openBlock(),
createElementBlock('div', _hoisted_14$15, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(caseItemData).configStyle.color.enabled,
'onUpdate:modelValue':
_cache[9] ||
(_cache[9] = ($event) =>
(unref(caseItemData).configStyle.color.enabled =
$event)),
label: '\u6587\u672C\u989C\u8272',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
modelValue: unref(caseItemData).configStyle.color.value,
'onUpdate:modelValue':
_cache[10] ||
(_cache[10] = ($event) =>
(unref(caseItemData).configStyle.color.value =
$event)),
},
null,
8,
['predefine', 'modelValue']
),
]))
: createCommentVNode('', true),
!unref(isDynamicImg)
? (openBlock(),
createElementBlock('div', _hoisted_15$11, [
createVNode$1(
_component_el_checkbox,
{
modelValue:
unref(caseItemData).configStyle.textContent.enabled,
'onUpdate:modelValue':
_cache[11] ||
(_cache[11] = ($event) =>
(unref(caseItemData).configStyle.textContent.enabled =
$event)),
label: '\u6587\u672C\u5185\u5BB9',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
createElementVNode('div', _hoisted_16$$, [
createElementVNode('div', _hoisted_17$V, [
withDirectives(
createElementVNode(
'input',
{
title: unref(Variable).expTitleTip,
'onUpdate:modelValue':
_cache[12] ||
(_cache[12] = ($event) =>
(unref(
caseItemData
).configStyle.textContent.value = $event)),
class: 'text-input highlight-normal',
},
null,
8,
_hoisted_18$P
),
[
[
vModelText,
unref(caseItemData).configStyle.textContent.value,
],
]
),
createElementVNode(
'button',
{
class: 'btn',
onClick:
_cache[13] ||
(_cache[13] = ($event) =>
(unref(expConfig).visible = true)),
},
_hoisted_20$H
),
]),
]),
]))
: createCommentVNode('', true),
createElementVNode('div', _hoisted_21$z, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(caseItemData).configStyle.bling.enabled,
'onUpdate:modelValue':
_cache[14] ||
(_cache[14] = ($event) =>
(unref(caseItemData).configStyle.bling.enabled = $event)),
label: '\u95EA\u70C1 ',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
]),
unref(isDynamicImg)
? (openBlock(),
createElementBlock('div', _hoisted_22$x, [
createElementVNode('div', _hoisted_23$u, [
createVNode$1(
_component_el_checkbox,
{
modelValue:
unref(caseItemData).configStyle.image.enabled,
'onUpdate:modelValue':
_cache[15] ||
(_cache[15] = ($event) =>
(unref(caseItemData).configStyle.image.enabled =
$event)),
label: '\u56FE\u7247',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_24$s, [
createVNode$1(
_component_el_popover,
{
ref: 'popoverRef',
'popper-class': 'cms-event-popover',
placement: 'left',
width: 388,
trigger: 'click',
'hide-after': 0,
offset: 80,
'show-arrow': false,
},
{
reference: withCtx(() => [
createElementVNode('div', _hoisted_25$n, [
unref(caseItemData).configStyle.image.value === ''
? (openBlock(),
createElementBlock(
'svg',
_hoisted_26$m,
_hoisted_28$k
))
: (openBlock(),
createElementBlock('div', _hoisted_29$h, [
createElementVNode(
'img',
{
src:
IMG_BASE_URL +
unref(caseItemData).configStyle.image
.value +
`?project=${unref(Session).get(
'X-Project'
)}`,
},
null,
8,
_hoisted_30$h
),
createElementVNode('div', _hoisted_31$e, [
createElementVNode('span', {
class: 'iconfont icon-qingchu',
onClick:
_cache[16] ||
(_cache[16] = withModifiers(
($event) =>
(unref(
caseItemData
).configStyle.image.value = ''),
['stop']
)),
}),
]),
])),
]),
]),
default: withCtx(() => [
(openBlock(),
createBlock(GalleryMaterial$2, {
activeIndex: 1,
draggable: false,
onImgTrigger: changeImg,
key: new Date().getTime(),
})),
]),
_: 1,
},
512
),
]),
]))
: createCommentVNode('', true),
]),
unref(expConfig).visible
? (openBlock(),
createBlock(
FormulaConfigDialog$2,
{
key: 0,
modelValue: unref(expConfig).visible,
'onUpdate:modelValue':
_cache[17] ||
(_cache[17] = ($event) =>
(unref(expConfig).visible = $event)),
code: unref(caseItemData).configStyle.textContent.value,
onChange: confirm2,
},
null,
8,
['modelValue', 'code']
))
: createCommentVNode('', true),
createVNode$1(
_component_el_dialog,
{
modelValue: unref(delNodeDialog).isShow,
'onUpdate:modelValue':
_cache[18] ||
(_cache[18] = ($event) =>
(unref(delNodeDialog).isShow = $event)),
title: '\u786E\u8BA4\u5220\u9664',
width: '450px',
'append-to-body': true,
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
},
{
default: withCtx(() => [
_hoisted_32$e,
createElementVNode('div', _hoisted_33$e, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: unref(delNodeDialog).hideDialog,
},
{
default: withCtx(() => [_hoisted_34$b]),
_: 1,
},
8,
['onClick']
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: deleteEvent,
},
{
default: withCtx(() => [_hoisted_35$b]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
),
])
)
}
},
})
var StatusItem = /* @__PURE__ */ _export_sfc(_sfc_main$5d, [
['__scopeId', 'data-v-794c7cb6'],
])
var StatusItem$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: StatusItem,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Dynamic_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2B = (n2) => (
pushScopeId('data-v-7636604c'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$4t = { class: 'dynamic-setting' }
const _hoisted_2$3Q = { class: 'row' }
const _hoisted_3$3r = /* @__PURE__ */ _withScopeId$2B(() =>
/* @__PURE__ */ createElementVNode(
'label',
null,
'\u5173\u8054\u53D8\u91CF',
-1
)
)
const _hoisted_4$2Z = /* @__PURE__ */ _withScopeId$2B(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-xinjian' },
null,
-1
)
)
const _hoisted_5$2H = /* @__PURE__ */ createTextVNode(
'\u6DFB\u52A0\u72B6\u6001'
)
const _hoisted_6$2o = [_hoisted_4$2Z, _hoisted_5$2H]
const config$w = {
category: 'test',
name: '\u52A8\u6001\u56FE\u5F62\u57FA\u7C7B',
icon: 'icon-yuanxing',
styleConfig: {
borderRadius: false,
},
}
const _sfc_main$5c = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
const props2 = reactive($props2.node.props)
let expConfig = reactive({
visible: false,
})
const setDefaultName = () => {
const LEN = props2.caseList.length + 1
return `\u672A\u547D\u540D\u72B6\u6001${LEN}`
}
const confirm2 = (code2) => {
props2.exp = code2
}
const addCase = () => {
props2.caseList.push(createCaseItemData({ name: setDefaultName() }))
}
const copyCase = (index2) => {
const caseList = props2.caseList
const copyItem = lodash$2.exports.cloneDeep(caseList[index2])
copyItem.name = setDefaultName()
caseList.push(copyItem)
}
const deleteCase = (index2) => {
props2.caseList.splice(index2, 1)
}
const moveCase = (dir3, index2) => {
const caseList = props2.caseList
const moveIndex = dir3 === 'up' ? -1 : 1
let temp = caseList[index2 + moveIndex]
caseList[index2 + moveIndex] = caseList[index2]
caseList[index2] = temp
}
let widget = ref(Widget.store[node2.is || ''])
function change2() {
widget.value = Widget.store[node2.is || '']
node2.name = widget.value?.name
}
return (_ctx, _cache) => {
const _component_el_radio = resolveComponent('el-radio')
const _component_el_radio_group = resolveComponent('el-radio-group')
const _component_el_input = resolveComponent('el-input')
return (
openBlock(),
createElementBlock('div', _hoisted_1$4t, [
createVNode$1(
SettingItem$1,
{ title: '\u5C55\u793A\u7C7B\u578B' },
{
default: withCtx(() => [
createVNode$1(
_component_el_radio_group,
{
class: 'radio-group',
modelValue: $props2.node.is,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => ($props2.node.is = $event)),
onChange: change2,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(DynamicTypeList), (item2, idx) => {
return (
openBlock(),
createBlock(
_component_el_radio,
{
label: item2.is,
key: idx,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(item2.name),
1
),
]),
_: 2,
},
1032,
['label']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
_: 1,
}
),
createVNode$1(
SettingItem$1,
{ title: '\u529F\u80FD' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$3Q, [
_hoisted_3$3r,
createVNode$1(
_component_el_input,
{
title: unref(Variable).expTitleTip,
class: 'input cms-el-input-x',
placeholder:
'\u8BF7\u8F93\u5165\u53D8\u91CF\u8868\u8FBE\u5F0F',
'model-value': unref(props2).exp,
onInput: confirm2,
},
null,
8,
['title', 'model-value']
),
createElementVNode('button', {
class: 'iconfont icon-bianjigongcheng',
onClick:
_cache[1] ||
(_cache[1] = ($event) =>
(unref(expConfig).visible = true)),
}),
]),
]),
_: 1,
}
),
createVNode$1(
SettingItem$1,
{ title: '\u72B6\u6001\u5207\u6362' },
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(props2).caseList, (caseItemData, index2) => {
return (
openBlock(),
createBlock(
StatusItem,
{
caseItemData,
key: caseItemData,
node: unref(node2),
idx: index2,
maxIdx: unref(props2).caseList.length,
onCopy: ($event) => copyCase(index2),
onDelete: ($event) => deleteCase(index2),
onMove: ($event) => moveCase($event, index2),
},
null,
8,
[
'caseItemData',
'node',
'idx',
'maxIdx',
'onCopy',
'onDelete',
'onMove',
]
)
)
}),
128
)),
createElementVNode('div', { class: 'add-status' }, [
createElementVNode(
'button',
{
class: 'btn',
onClick: addCase,
},
_hoisted_6$2o
),
]),
]),
_: 1,
}
),
unref(expConfig).visible
? (openBlock(),
createBlock(
FormulaConfigDialog$2,
{
key: 0,
modelValue: unref(expConfig).visible,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(expConfig).visible = $event)),
code: unref(props2).exp,
onChange: confirm2,
},
null,
8,
['modelValue', 'code']
))
: createCommentVNode('', true),
])
)
}
},
})
var DynamicSetting = /* @__PURE__ */ _export_sfc(_sfc_main$5c, [
['__scopeId', 'data-v-7636604c'],
])
var __glob_2_56 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$w,
default: DynamicSetting,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const config$v = {
category: 'readWrite',
name: '\u52A8\u6001\u5F62\u72B6',
icon: 'icon-dongtaixingzhuang',
styleConfig: {
borderRadius: false,
},
}
const _sfc_main$5b = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
DynamicSetting,
{
node: $props2.node,
},
null,
8,
['node']
),
])
)
}
},
})
var __glob_2_57 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$v,
default: _sfc_main$5b,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const getPropsStyle = (caseItem) => {
let cs2 = caseItem.configStyle
let temp = {}
for (let key2 in cs2) {
if (cs2[key2].enabled && cs2[key2].value) {
if (key2.startsWith('background')) {
for (let [k2, v4] of Object.entries(cs2[key2].value)) {
temp[k2] = v4
}
} else {
temp[key2] = cs2[key2].value
}
}
}
return temp
}
const handleExp = (exp1, type4, exp2) => {
if (type4 === OperationEnumType.RANG) {
if (!exp2[0] || !exp2[1]) return ''
return `(${exp2[0]}) <= (${exp1}) && (${exp1}) <= (${exp2[1]})`
}
if (type4 === OperationEnumType.Empty) {
return `(${exp1}) == ''`
}
if (type4 === OperationEnumType.NOTEmpty) {
return `(${exp1}) != ''`
}
if (!exp2[0]) return ''
return `(${exp1})${type4}(${exp2[0]})`
}
const useEleStyle = ($props2) => {
for (const caseItem of $props2.node.props.caseList || []) {
const configStyle = caseItem.configStyle
if (configStyle.backgroundColor) {
configStyle.background = {
value: {
backgroundColor: configStyle.backgroundColor.value,
},
enabled: configStyle.backgroundColor.enabled,
}
}
delete configStyle.backgroundColor
}
const defaultProps2 = {
exp: '',
defaultImage: '',
objectFit: '',
caseList: createDefaultData($props2.node),
}
const props2 = lodash$2.exports.defaults(
reactive($props2.node.props),
defaultProps2
)
let propsStyle = computed(() => {
try {
if ($props2.running && props2.exp) {
const classList2 = props2.caseList
for (const caseItem of classList2) {
const merge_exp = handleExp(props2.exp, caseItem.type, caseItem.exp)
if (merge_exp && Variable.exp(merge_exp)) {
const { textContent, image: image2, bling } = caseItem.configStyle
return {
style: getPropsStyle(caseItem),
text: textContent.enabled && Variable.exp(textContent.value),
image: image2.enabled && image2.value,
bling: bling.enabled,
}
}
}
}
} catch (error2) {
return {}
}
return {}
})
return propsStyle
}
const getCollectText = ($props2) => {
const reg = /^("(\\.|[^"])*?"|'(\\.|[^'])*?')$/
let list2 = []
for (const caseItem of $props2.node.props.caseList || []) {
let text2 = caseItem.configStyle.textContent.value
if (reg.test(text2)) {
text2 = Block.codeToValue(text2)
list2.push(t(text2))
}
}
return list2
}
var DynamicCircle_vue_vue_type_style_index_0_scoped_true_lang = ''
const _sfc_main$5a = /* @__PURE__ */ defineComponent({
props: {
editing: {
type: Boolean,
},
running: {
type: Boolean,
},
node: {
type: CanvasNode$1,
},
text: {
type: String,
default: '',
},
style: Object,
},
setup(__props2) {
const $props2 = __props2
const dynamicProps = useEleStyle($props2)
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
Rect,
mergeProps({ class: 'Circle' }, $props2, {
style: unref(dynamicProps)?.style,
text: unref(dynamicProps)?.text
? unref(dynamicProps).text
: $props2.text,
class: { 'bling-fast': unref(dynamicProps)?.bling },
t: unref(getCollectText)($props2),
}),
null,
16,
['style', 'text', 'class', 't']
)
)
}
},
})
var DynamicCircle = /* @__PURE__ */ _export_sfc(_sfc_main$5a, [
['__scopeId', 'data-v-6dcb9a54'],
])
var __glob_2_58 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: DynamicCircle,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var DynamicImg_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2A = (n2) => (
pushScopeId('data-v-6ffbd446'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$4s = { class: 'image-argument-view' }
const _hoisted_2$3P = /* @__PURE__ */ _withScopeId$2A(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'arg-name' },
'\u9ED8\u8BA4\u56FE\u7247',
-1
)
)
const _hoisted_3$3q = { class: 'img-card' }
const _hoisted_4$2Y = {
key: 0,
class: 'iconfont',
'aria-hidden': 'true',
}
const _hoisted_5$2G = /* @__PURE__ */ _withScopeId$2A(() =>
/* @__PURE__ */ createElementVNode(
'use',
{ 'xlink:href': '#icon-morentupian' },
null,
-1
)
)
const _hoisted_6$2n = [_hoisted_5$2G]
const _hoisted_7$24 = {
key: 1,
class: 'img-group',
}
const _hoisted_8$1Q = ['src']
const _hoisted_9$1H = { class: 'img-icon' }
const _hoisted_10$1z = { class: 'static-image' }
const _hoisted_11$1r = /* @__PURE__ */ _withScopeId$2A(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u5C55\u793A\u6A21\u5F0F',
-1
)
)
const _hoisted_12$1n = { class: 'static-image' }
const config$u = {
category: 'readWrite',
name: '\u52A8\u6001\u56FE\u7247',
icon: 'icon-dongtaitupian',
styleConfig: {
textSetting: false,
},
}
const _sfc_main$59 = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const objectFitList = [
{
value: 'contain',
label: '\u81EA\u9002\u5E94',
},
{
value: 'fill',
label: '\u62C9\u4F38',
},
{
value: 'scale-down',
label: '\u5B9E\u9645\u5927\u5C0F',
},
{
value: 'cover',
label: '\u8986\u76D6',
},
]
const IMG_BASE_URL = request.defaults.baseURL + `/api/v1/view/image/`
const props2 = reactive($props2.node.props)
props2.objectFit = props2.objectFit || objectFitList[0].value
function changeImg(imgUrl) {
props2.defaultImage = imgUrl
}
return (_ctx, _cache) => {
const _component_el_popover = resolveComponent('el-popover')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_checkbox = resolveComponent('el-checkbox')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
DynamicSetting,
{
node: $props2.node,
},
null,
8,
['node']
),
createVNode$1(
SettingItem$1,
{ title: '\u914D\u7F6E' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$4s, [
_hoisted_2$3P,
createElementVNode('div', null, [
createVNode$1(
_component_el_popover,
{
ref: 'popoverRef',
'popper-class': 'cms-event-popover',
placement: 'left',
width: 388,
trigger: 'click',
'hide-after': 0,
offset: 80,
'show-arrow': false,
},
{
reference: withCtx(() => [
createElementVNode('div', _hoisted_3$3q, [
!unref(props2).defaultImage
? (openBlock(),
createElementBlock(
'svg',
_hoisted_4$2Y,
_hoisted_6$2n
))
: (openBlock(),
createElementBlock('div', _hoisted_7$24, [
createElementVNode(
'img',
{
src:
IMG_BASE_URL +
unref(props2).defaultImage +
`?project=${unref(Session).get(
'X-Project'
)}`,
},
null,
8,
_hoisted_8$1Q
),
createElementVNode('div', _hoisted_9$1H, [
createElementVNode('span', {
class: 'iconfont icon-qingchu',
onClick:
_cache[0] ||
(_cache[0] = withModifiers(
($event) =>
(unref(props2).defaultImage = ''),
['stop']
)),
}),
]),
])),
]),
]),
default: withCtx(() => [
(openBlock(),
createBlock(GalleryMaterial$2, {
activeIndex: 1,
draggable: false,
onImgTrigger: changeImg,
key: new Date().getTime(),
})),
]),
_: 1,
},
512
),
]),
]),
createElementVNode('div', _hoisted_10$1z, [
_hoisted_11$1r,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x select',
'popper-class': 'cms-el-select_check',
modelValue: unref(props2).objectFit,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(props2).objectFit = $event)),
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(objectFitList, (item2) => {
return createVNode$1(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
}),
64
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_12$1n, [
createElementVNode('label', null, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(props2).mask,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(props2).mask = $event)),
class: 'cms-el-checkbox',
label: '\u56FE\u7247\u906E\u7F69',
},
null,
8,
['modelValue']
),
]),
]),
]),
_: 1,
}
),
])
)
}
},
})
var DynamicImg_settings = /* @__PURE__ */ _export_sfc(_sfc_main$59, [
['__scopeId', 'data-v-6ffbd446'],
])
var __glob_2_59 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$u,
default: DynamicImg_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var defaultImg$1 =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAL4AAACECAYAAAAulZFWAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDA2IDc5LjE2NDY0OCwgMjAyMS8wMS8xMi0xNTo1MjoyOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIyLjIgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkRGOTA4NzNDRjY4ODExRUM4RTg3RjM3NzAyNTUyMEVCIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkRGOTA4NzNERjY4ODExRUM4RTg3RjM3NzAyNTUyMEVCIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6REY5MDg3M0FGNjg4MTFFQzhFODdGMzc3MDI1NTIwRUIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6REY5MDg3M0JGNjg4MTFFQzhFODdGMzc3MDI1NTIwRUIiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6a7me1AAAGj0lEQVR42uzc2W5b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'
var __glob_3_10 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: defaultImg$1,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var DynamicImg_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$4r = ['src']
const _sfc_main$58 = /* @__PURE__ */ defineComponent({
props: {
node: null,
editing: { type: Boolean },
running: { type: Boolean },
style: null,
},
setup(__props2) {
const $props2 = __props2
const imgRef = ref()
const props2 = reactive($props2.node.props)
props2.objectFit = props2.objectFit || 'contain'
props2.mask = props2.mask || false
const imgError = (e2) => {
e2.target.src = defaultImg$1
}
let propsStyle = useEleStyle($props2)
let img_1x1 =
'data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg=='
let _url = computed(() => {
if (props2.mask) return img_1x1
return url2.value || ''
})
let url2 = computed(() => {
const IMG_BASE_URL = request.defaults.baseURL + `/api/v1/view/image/`
let img = propsStyle?.value.image || props2.defaultImage
if (!img) return ''
return `${IMG_BASE_URL}${img}?project=${Session.get('X-Project')}`
})
let maskStyle = computed(() => {
if (!props2.mask) return {}
return {
backgroundColor: $props2.node.style.backgroundColor,
'mask-image': `url(${url2.value})`,
'mask-size': ['cover', 'contain', 'scale-down'].includes(
props2.objectFit
)
? props2.objectFit
: '100% 100%',
}
})
let imgStyle = computed(() => {
return {
'object-fit': props2.objectFit,
}
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
mergeProps(
{
class: [
'static-image',
{ 'bling-fast': unref(propsStyle).bling },
],
},
_ctx.$attrs,
{
style: { ...$props2.node?.style, ...unref(propsStyle).style },
}
),
[
createElementVNode(
'img',
{
ref_key: 'imgRef',
ref: imgRef,
draggable: 'false',
src: unref(_url),
onError:
_cache[0] || (_cache[0] = ($event) => imgError($event)),
loading: 'lazy',
style: normalizeStyle$1({
...unref(imgStyle),
...unref(maskStyle),
...unref(propsStyle).style,
}),
},
null,
44,
_hoisted_1$4r
),
],
16
)
)
}
},
})
var DynamicImg = /* @__PURE__ */ _export_sfc(_sfc_main$58, [
['__scopeId', 'data-v-dca4208c'],
])
var __glob_2_60 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: DynamicImg,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const config$t = {
category: 'test',
name: '\u52A8\u6001\u5F62\u72B6',
icon: 'icon-yuanxing',
}
const _sfc_main$57 = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
DynamicSetting,
{
node: $props2.node,
},
null,
8,
['node']
),
])
)
}
},
})
var __glob_2_61 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$t,
default: _sfc_main$57,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var DynamicRect_vue_vue_type_style_index_0_scoped_true_lang = ''
const _sfc_main$56 = /* @__PURE__ */ defineComponent({
props: {
editing: {
type: Boolean,
},
running: {
type: Boolean,
},
node: {
type: CanvasNode$1,
},
text: {
type: String,
},
style: Object,
},
setup(__props2) {
const $props2 = __props2
const dynamicProps = useEleStyle($props2)
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
Rect,
mergeProps({ class: 'Square' }, $props2, {
style: unref(dynamicProps)?.style,
text: unref(dynamicProps)?.text
? unref(dynamicProps).text
: $props2.text,
class: { 'bling-fast': unref(dynamicProps)?.bling },
t: unref(getCollectText)($props2),
}),
null,
16,
['style', 'text', 'class', 't']
)
)
}
},
})
var DynamicRect = /* @__PURE__ */ _export_sfc(_sfc_main$56, [
['__scopeId', 'data-v-937d82c2'],
])
var __glob_2_62 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: DynamicRect,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const config$s = {
category: 'readWrite',
name: '\u52A8\u6001\u6587\u672C',
icon: 'icon-dongtaiwenben',
}
const _sfc_main$55 = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
DynamicSetting,
{
node: $props2.node,
},
null,
8,
['node']
),
])
)
}
},
})
var __glob_2_63 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$s,
default: _sfc_main$55,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var DynamicText_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$4q = ['contenteditable', 'innerText', 'onKeydown', 't']
const _sfc_main$54 = /* @__PURE__ */ defineComponent({
props: {
editing: {
type: Boolean,
},
running: {
type: Boolean,
},
node: {
type: CanvasNode$1,
},
text: {
type: String,
default: '',
},
style: Object,
},
emits: ['update'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
let el2 = ref()
let contenteditable = ref(false)
const setText = (e2) => {
if (!Language$1.isOriginal()) return
emit2('update', { text: e2.target.innerText })
contenteditable.value = false
}
const onDblclick = () => {
if (!Language$1.isOriginal()) return
if ($props2.editing) {
contenteditable.value = true
nextTick(() => {
if (!el2.value) return
const selection = getSelection()
const range3 = new Range()
range3.selectNodeContents(el2.value)
selection?.removeAllRanges()
selection?.addRange(range3)
})
}
}
const handleEnter = (e2) => {
if (e2.key === 'Enter') {
e2.preventDefault()
document.execCommand('insertText', false, '\n')
}
}
const propsStyle = useEleStyle($props2)
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'p',
mergeProps(
{
ref_key: 'el',
ref: el2,
contenteditable: contenteditable.value,
innerText: _ctx.t(
unref(propsStyle).text ||
$props2.text ||
'\u52A8\u6001\u6587\u672C'
),
onBlur: setText,
onDblclick,
onKeydown: withKeys(handleEnter, ['enter']),
},
_ctx.$attrs,
{
style: { ...$props2.node?.style, ...unref(propsStyle).style },
class: { 'bling-fast': unref(propsStyle).bling },
t: unref(getCollectText)($props2),
}
),
null,
16,
_hoisted_1$4q
)
)
}
},
})
var DynamicText = /* @__PURE__ */ _export_sfc(_sfc_main$54, [
['__scopeId', 'data-v-de02b7d2'],
])
var __glob_2_64 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: DynamicText,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const config$r = {
category: 'test',
name: '\u8868\u8FBE\u5F0F',
icon: 'icon-shuzhixianshi',
permission: true,
}
const _sfc_main$53 = {}
var __glob_2_65 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$r,
default: _sfc_main$53,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Exp_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$4p = ['value', 'title']
const _sfc_main$52 = /* @__PURE__ */ defineComponent({
props: {
props: null,
},
setup(__props2) {
const $props2 = __props2
const props2 = reactive($props2.props)
let focused = ref(false)
let value2 = computed(function () {
return Expression.getValue(props2.exp || '')
})
function input(e2) {
const target2 = e2.target
props2.exp = target2.value
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'input',
{
value: focused.value ? unref(props2).exp : value2.value,
title: `${unref(props2).exp} = ${value2.value}`,
onFocus:
_cache[0] || (_cache[0] = ($event) => (focused.value = true)),
onBlur:
_cache[1] || (_cache[1] = ($event) => (focused.value = false)),
onInput: input,
placeholder: '\u8868\u8FBE\u5F0F',
autocomplete: 'off',
},
null,
40,
_hoisted_1$4p
)
)
}
},
})
var Exp = /* @__PURE__ */ _export_sfc(_sfc_main$52, [
['__scopeId', 'data-v-0e738856'],
])
var __glob_2_66 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Exp,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const defaultProps$7 = {
text: '',
outputType: 'export',
outputTarget: 'currentPage',
exportConfig: {
type: 'PDF',
filename: '',
specifiedSavePath: false,
filePath: '',
},
pdfConfig: {
format: 'A4',
orientation: 'portrait',
},
correlationChartsConfig: {
charts: [],
exportContent: ['data'],
},
confirmBoxConfig: {
check: false,
message: '',
},
}
const getChartNodes$1 = () => {
let nodes = getChildNodes(getRootNode())
let chartNodes = nodes.filter((item2) => {
if (item2.is)
return /^Chart/.test(item2.is) && item2.is !== 'ChartLineTrendConfig'
})
let chartList = []
chartNodes.forEach((item2) => {
let data2 = {
...item2,
value: item2.id,
label: item2.name,
}
chartList.push(data2)
})
return chartList
}
var ControllerCharts_vue_vue_type_style_index_0_scoped_true_lang$1 = ''
const _withScopeId$2z = (n2) => (
pushScopeId('data-v-1966e680'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$4o = { class: 'controller-charts' }
const _hoisted_2$3O = { class: 'function_items_btn' }
const _hoisted_3$3p = { class: 'title' }
const _hoisted_4$2X = /* @__PURE__ */ _withScopeId$2z(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u5173\u8054\u56FE\u8868',
-1
)
)
const _hoisted_5$2F = { class: 'wrap_send' }
const _hoisted_6$2m = { class: 'centent' }
const _hoisted_7$23 = { class: 'centent-item left' }
const _hoisted_8$1P = /* @__PURE__ */ _withScopeId$2z(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u9009\u62E9\u56FE\u8868\uFF1A',
-1
)
)
const _hoisted_9$1G = { class: 'centent-box' }
const _hoisted_10$1y = { class: 'all-checkbox' }
const _hoisted_11$1q = /* @__PURE__ */ createTextVNode('\u5168\u9009')
const _hoisted_12$1m = { class: 'el-dialog__footer el-dialog__footer1' }
const _sfc_main$51 = /* @__PURE__ */ defineComponent({
props: {
selectChartDataList: null,
dialogTitle: null,
},
emits: ['confirm'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
let visible = ref(false)
let checkAll = ref(false)
let isIndeterminate = ref(false)
let chartDataList = ref([])
let chartList = ref([])
let checkedEcharts = ref([])
const handleCheckAllChange = (val2) => {
checkedEcharts.value = []
if (val2) {
chartList.value.forEach((item2) => {
checkedEcharts.value.push(item2.value)
})
}
isIndeterminate.value = false
}
const handleCheckedChange = (value2) => {
const checkedCount = value2.length
checkAll.value =
checkedCount === chartList.value.length && chartList.value.length > 0
isIndeterminate.value =
checkedCount > 0 && checkedCount < chartList.value.length
}
const getChartDataList = (list2) => {
chartDataList.value = []
list2.forEach((item2) => {
for (let key2 in chartList.value) {
let chartData = chartList.value[key2]
if (chartData.value == item2) {
let data2 = {
id: chartData.id,
name: chartData.name,
is: chartData.is,
}
chartDataList.value.push(data2)
return
}
}
})
}
const confirm2 = () => {
visible.value = false
emit2('confirm', chartDataList.value)
}
watch$1(
() => checkedEcharts.value,
(n2) => {
getChartDataList(n2)
},
{
deep: true,
}
)
watch$1(
() => visible.value,
() => {
if (visible.value) {
checkedEcharts.value = []
$props2.selectChartDataList.forEach((item2) => {
checkedEcharts.value.push(item2.id.toString())
})
chartList.value = getChartNodes$1()
handleCheckedChange(checkedEcharts.value)
}
},
{
deep: true,
}
)
onMounted(() => {})
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_checkbox_group = resolveComponent('el-checkbox-group')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', _hoisted_1$4o, [
createElementVNode('div', _hoisted_2$3O, [
createElementVNode('div', _hoisted_3$3p, [
_hoisted_4$2X,
createElementVNode('i', {
class: 'iconfont icon-bianjigongcheng',
onClick:
_cache[0] ||
(_cache[0] = withModifiers(
($event) => (visible.value = true),
['stop']
)),
}),
]),
createElementVNode('div', _hoisted_5$2F, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList($props2.selectChartDataList, (item2, index2) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'wrap_send_item',
key: index2,
},
[
createElementVNode(
'div',
null,
toDisplayString$1(item2.name),
1
),
]
)
)
}),
128
)),
]),
]),
createVNode$1(
_component_el_dialog,
{
'append-to-body': '',
'model-value': visible.value,
width: '630px',
top: '26vh',
title: __props2.dialogTitle,
'custom-class': 'cms-el-dialog',
'destroy-on-close': true,
onClose:
_cache[4] || (_cache[4] = ($event) => (visible.value = false)),
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_6$2m, [
createElementVNode('div', _hoisted_7$23, [
_hoisted_8$1P,
createElementVNode('div', _hoisted_9$1G, [
createElementVNode('div', _hoisted_10$1y, [
createVNode$1(
_component_el_checkbox,
{
class: 'cms-el-checkbox',
modelValue: checkAll.value,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(checkAll.value = $event)),
indeterminate: isIndeterminate.value,
onChange: handleCheckAllChange,
},
{
default: withCtx(() => [_hoisted_11$1q]),
_: 1,
},
8,
['modelValue', 'indeterminate']
),
]),
createVNode$1(
_component_el_checkbox_group,
{
class: 'checkbox-group',
modelValue: checkedEcharts.value,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(checkedEcharts.value = $event)),
onChange: handleCheckedChange,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(chartList.value, (item2) => {
return (
openBlock(),
createElementBlock(
'div',
{
key: item2.value,
class: 'check-item',
},
[
createVNode$1(
_component_el_checkbox,
{
class: 'cms-el-checkbox',
label: item2.value,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(item2.label),
1
),
]),
_: 2,
},
1032,
['label']
),
]
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
]),
]),
createElementVNode('div', _hoisted_12$1m, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick:
_cache[3] ||
(_cache[3] = ($event) => (visible.value = false)),
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: confirm2,
},
'\u786E\u8BA4'
),
]),
]),
_: 1,
},
8,
['model-value', 'title']
),
])
)
}
},
})
var ControllerCharts$2 = /* @__PURE__ */ _export_sfc(_sfc_main$51, [
['__scopeId', 'data-v-1966e680'],
])
var ControllerCharts$3 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ControllerCharts$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ExportButton_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2y = (n2) => (
pushScopeId('data-v-00a8be11'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$4n = { class: 'export-button-setting' }
const _hoisted_2$3N = { class: 'output-select' }
const _hoisted_3$3o = { class: 'item' }
const _hoisted_4$2W = /* @__PURE__ */ _withScopeId$2y(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u5BFC\u51FA\u683C\u5F0F:',
-1
)
)
const _hoisted_5$2E = { class: 'item' }
const _hoisted_6$2l = /* @__PURE__ */ _withScopeId$2y(() =>
/* @__PURE__ */ createElementVNode('div', null, 'PDF\u8BBE\u7F6E:', -1)
)
const _hoisted_7$22 = { class: 'content' }
const _hoisted_8$1O = /* @__PURE__ */ _withScopeId$2y(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u7EB8\u5F20\u5927\u5C0F',
-1
)
)
const _hoisted_9$1F = { class: 'content' }
const _hoisted_10$1x = /* @__PURE__ */ _withScopeId$2y(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u5E03\u5C40',
-1
)
)
const _hoisted_11$1p = { class: 'item' }
const _hoisted_12$1l = /* @__PURE__ */ _withScopeId$2y(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u6587\u4EF6\u547D\u540D:',
-1
)
)
const _hoisted_13$1d = /* @__PURE__ */ _withScopeId$2y(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-tishi1',
title:
'\u6587\u4EF6\u547D\u540D\u89C4\u5219\uFF1A\u81EA\u5B9A\u4E49\u90E8\u5206_\u5BFC\u51FA\u65F6\u95F4\uFF0C\u5982\u65E5\u4EA7\u91CF_202205011000',
},
null,
-1
)
)
const _hoisted_14$14 = {
key: 0,
class: 'item',
}
const _hoisted_15$10 = /* @__PURE__ */ _withScopeId$2y(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u5BFC\u51FA\u5185\u5BB9:',
-1
)
)
const _hoisted_16$_ = { class: 'content' }
const _hoisted_17$U = { class: 'date-type-text' }
const _hoisted_18$O = { class: 'item' }
const _hoisted_19$L = /* @__PURE__ */ _withScopeId$2y(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'date-type-text' },
'\u6307\u5B9A\u4FDD\u5B58\u8DEF\u5F84',
-1
)
)
const config$q = {
category: 'controller',
name: '\u5BFC\u51FA\u6309\u94AE',
icon: 'icon-daochu1',
permission: true,
styleConfig: {
lineHeight: false,
},
}
const _sfc_main$50 = /* @__PURE__ */ defineComponent({
props: {
editing: { type: Boolean },
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
const defaultPropsCopy2 = lodash$2.exports.cloneDeep(defaultProps$7)
const props2 = lodash$2.exports.defaults(
reactive(node2.props),
defaultPropsCopy2
)
const correlationChartsConfig = reactive(props2.correlationChartsConfig)
const exportConfig = reactive(props2.exportConfig)
const pdfConfig = reactive(props2.pdfConfig)
const changeOutputType = () => {
if (props2.outputType == 'print') {
props2.outputTarget = 'currentPage'
}
}
const confirm2 = (chartDataList) => {
correlationChartsConfig.charts = chartDataList
}
const changePath = async () => {
if (!window.electron) return
exportConfig.filePath = await client.openDirectory()
}
watch$1(
() => props2.outputTarget,
(n2) => {
if (n2 == 'currentPage') {
props2.exportConfig.type = exportTypeList1[0].value
} else if (n2 == 'correlationCharts') {
props2.exportConfig.type = exportTypeList2[0].value
}
}
)
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_radio = resolveComponent('el-radio')
const _component_el_radio_group = resolveComponent('el-radio-group')
const _component_el_input = resolveComponent('el-input')
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_checkbox_group = resolveComponent('el-checkbox-group')
return (
openBlock(),
createElementBlock('div', _hoisted_1$4n, [
createVNode$1(
SettingItem$1,
{ title: '\u529F\u80FD' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$3N, [
createVNode$1(
_component_el_select,
{
modelValue: unref(props2).outputType,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(props2).outputType = $event)),
class: 'cms-el-select-x select1',
'popper-class': 'cms-el-select_check',
onChange: changeOutputType,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(outputTypeList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.name,
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_select,
{
modelValue: unref(props2).outputTarget,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(props2).outputTarget = $event)),
class: 'cms-el-select-x select2',
'popper-class': 'cms-el-select_check',
disabled: unref(props2).outputType == 'print',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(outputTargetList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.name,
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue', 'disabled']
),
]),
unref(props2).outputTarget == 'correlationCharts'
? (openBlock(),
createBlock(
ControllerCharts$2,
{
key: 0,
class: 'output-select',
selectChartDataList: unref(correlationChartsConfig)
.charts,
dialogTitle: '\u5173\u8054\u56FE\u8868',
onConfirm: confirm2,
},
null,
8,
['selectChartDataList']
))
: createCommentVNode('', true),
createVNode$1(
ConfirmBoxSetting,
{
confirmBoxConfig: unref(props2).confirmBoxConfig,
},
null,
8,
['confirmBoxConfig']
),
]),
_: 1,
}
),
withDirectives(
createVNode$1(
SettingItem$1,
{ title: '\u914D\u7F6E' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_3$3o, [
_hoisted_4$2W,
createVNode$1(
_component_el_radio_group,
{
class: 'radio-group',
modelValue: unref(exportConfig).type,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(exportConfig).type = $event)),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(exportTypeList1),
(item2, index2) => {
return withDirectives(
(openBlock(),
createBlock(
_component_el_radio,
{
key: index2,
label: item2.value,
class: 'cms-el-radio',
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(item2.name),
1
),
]),
_: 2,
},
1032,
['label']
)),
[
[
vShow,
unref(props2).outputTarget ==
'currentPage',
],
]
)
}
),
128
)),
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(exportTypeList2),
(item2, index2) => {
return withDirectives(
(openBlock(),
createBlock(
_component_el_radio,
{
key: index2,
label: item2.value,
class: 'cms-el-radio',
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(item2.name),
1
),
]),
_: 2,
},
1032,
['label']
)),
[
[
vShow,
unref(props2).outputTarget ==
'correlationCharts',
],
]
)
}
),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
withDirectives(
createElementVNode(
'div',
_hoisted_5$2E,
[
_hoisted_6$2l,
createElementVNode('div', _hoisted_7$22, [
_hoisted_8$1O,
createVNode$1(
_component_el_select,
{
placeholder: '\u8BF7\u9009\u62E9\u7EB8\u5F20',
modelValue: unref(pdfConfig).format,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(pdfConfig).format = $event)),
class: 'cms-el-select-x select3',
'popper-class': 'cms-el-select_check',
disabled: unref(props2).outputType == 'print',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(paperTypeList)(),
(item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.name,
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 1,
},
8,
['modelValue', 'disabled']
),
]),
createElementVNode('div', _hoisted_9$1F, [
_hoisted_10$1x,
createVNode$1(
_component_el_radio_group,
{
class: 'radio-group',
modelValue: unref(pdfConfig).orientation,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(pdfConfig).orientation = $event)),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(layoutList),
(item2, index2) => {
return (
openBlock(),
createBlock(
_component_el_radio,
{
key: index2,
label: item2.value,
class: 'cms-el-radio',
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(item2.name),
1
),
]),
_: 2,
},
1032,
['label']
)
)
}
),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
],
512
),
[[vShow, unref(exportConfig).type == 'PDF']]
),
createElementVNode('div', _hoisted_11$1p, [
_hoisted_12$1l,
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x name',
modelValue: unref(exportConfig).filename,
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) =>
(unref(exportConfig).filename = $event)),
placeholder: '\u8BF7\u8F93\u5165\u6587\u4EF6\u540D',
},
null,
8,
['modelValue']
),
_hoisted_13$1d,
]),
unref(props2).outputTarget == 'correlationCharts'
? (openBlock(),
createElementBlock('div', _hoisted_14$14, [
_hoisted_15$10,
createElementVNode('div', _hoisted_16$_, [
createVNode$1(
_component_el_checkbox_group,
{
modelValue: unref(correlationChartsConfig)
.exportContent,
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) =>
(unref(
correlationChartsConfig
).exportContent = $event)),
class: 'flex',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(chartsExportContentList),
(item2, index2) => {
return (
openBlock(),
createBlock(
_component_el_checkbox,
{
key: index2,
label: item2.value,
class:
'cms-el-checkbox-font-size-12 checkbox',
},
{
default: withCtx(() => [
createElementVNode(
'span',
_hoisted_17$U,
toDisplayString$1(item2.name),
1
),
]),
_: 2,
},
1032,
['label']
)
)
}
),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
]))
: createCommentVNode('', true),
createElementVNode('div', _hoisted_18$O, [
createElementVNode('div', null, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(exportConfig).specifiedSavePath,
'onUpdate:modelValue':
_cache[7] ||
(_cache[7] = ($event) =>
(unref(exportConfig).specifiedSavePath = $event)),
class: 'cms-el-checkbox-font-size-12',
},
{
default: withCtx(() => [_hoisted_19$L]),
_: 1,
},
8,
['modelValue']
),
]),
createVNode$1(
_component_el_input,
{
onClick: changePath,
class: 'cms-el-input-x',
disabled: !unref(exportConfig).specifiedSavePath,
modelValue: unref(exportConfig).filePath,
'onUpdate:modelValue':
_cache[8] ||
(_cache[8] = ($event) =>
(unref(exportConfig).filePath = $event)),
placeholder:
'\u8BF7\u8F93\u5165\u4FDD\u5B58\u8DEF\u5F84',
},
null,
8,
['disabled', 'modelValue']
),
]),
]),
_: 1,
},
512
),
[[vShow, unref(props2).outputType != 'print']]
),
])
)
}
},
})
var ExportButton_settings = /* @__PURE__ */ _export_sfc(_sfc_main$50, [
['__scopeId', 'data-v-00a8be11'],
])
var __glob_2_67 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$q,
default: ExportButton_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _sfc_main$4$ = /* @__PURE__ */ defineComponent({
props: {
editing: { type: Boolean },
node: null,
},
setup(__props2) {
const $props2 = __props2
const pageManager2 = new PageManager()
const node2 = reactive($props2.node)
node2.props.text = node2.props?.text || '\u5BFC\u51FA'
const defaultPropsCopy2 = lodash$2.exports.cloneDeep(defaultProps$7)
const props2 = lodash$2.exports.defaults(
reactive(node2.props),
defaultPropsCopy2
)
const correlationChartsConfig = reactive(props2.correlationChartsConfig)
const exportConfig = reactive(props2.exportConfig)
const pdfConfig = reactive(props2.pdfConfig)
const exportSave = () => {
let filePath = exportConfig.specifiedSavePath ? exportConfig.filePath : ''
let pageInfo = {
id: '',
elementId: document.getElementById(node2.id)?.parentElement?.id,
}
if (props2.outputType == 'export') {
if (props2.outputTarget == 'currentPage') {
pageManager2.exportCurrentPage(
pageInfo,
exportConfig.type,
exportConfig.filename,
pdfConfig.format,
pdfConfig.orientation,
filePath,
300
)
}
if (props2.outputTarget == 'correlationCharts') {
exportCharts()
}
}
if (
props2.outputType == 'print' &&
props2.outputTarget == 'currentPage'
) {
pageManager2.printCurrentPage(pageInfo, 0)
}
}
const exportCharts = async () => {
let exportContent = correlationChartsConfig.exportContent
let charts2 = correlationChartsConfig.charts
charts2.forEach((c2) => {
if (c2.is === 'ChartLineTrend') {
const localConfig = Local.get('chartLineTrendConfig_' + c2.id)
c2.sheetName = localConfig.currentGroup.name
c2.isRealtime = localConfig.isRealtime
}
})
if (charts2.length <= 0 || exportContent.length <= 0) return
let data2 = exportContent.includes('data')
let filter2 = exportContent.includes('filter')
let effect2 = exportContent.includes('effect')
exportLoading.open()
try {
let url2 =
exportConfig.specifiedSavePath && exportConfig.filePath
? exportConfig.filePath
: ''
await exportChartsExcel(
exportConfig.filename,
charts2,
data2,
filter2,
effect2,
url2
)
exportLoading.close()
} catch (error2) {
exportLoading.close()
}
}
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
Button,
mergeProps($props2, { onClick: exportSave }),
null,
16
)
)
}
},
})
var __glob_2_68 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$4$,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const config$p = {
category: 'test',
name: '\u7EC4\u5408',
}
const _sfc_main$4_ = {}
function _sfc_render$e(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('div')
}
var Group_settings = /* @__PURE__ */ _export_sfc(_sfc_main$4_, [
['render', _sfc_render$e],
])
var __glob_2_69 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$p,
default: Group_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Group_vue_vue_type_style_index_0_scoped_true_lang = ''
const _sfc_main$4Z = /* @__PURE__ */ defineComponent({
props: {
text: null,
code: null,
node: null,
},
setup(__props2) {
const props2 = __props2
const node2 = reactive(props2.node)
const group = ref()
let locked = false
function update3() {
if (locked) {
return
}
locked = true
const childNodes = node2.childNodes || []
const rectList = childNodes.map((n2) => getRectByNode(n2)).filter(Boolean)
if (!rectList.length) {
return
}
const rect = getRectByNode(node2)
const _rect = {
left: Math.min(...rectList.map((r2) => r2.left)),
top: Math.min(...rectList.map((r2) => r2.top)),
right: Math.max(...rectList.map((r2) => r2.right)),
bottom: Math.max(...rectList.map((r2) => r2.bottom)),
}
const diff = {
left: parseInt(String(_rect.left - (rect?.left || 0))),
top: parseInt(String(_rect.top - (rect?.top || 0))),
}
for (const child of childNodes) {
Object.assign(child.style, {
left: `${parseInt(child.style.left) - diff.left}px`,
top: `${parseInt(child.style.top) - diff.top}px`,
})
}
Object.assign(node2.style, {
left: `${parseInt(node2.style.left) + diff.left}px`,
top: `${parseInt(node2.style.top) + diff.top}px`,
width: `${_rect.right - _rect.left}px`,
height: `${_rect.bottom - _rect.top}px`,
})
setTimeout(() => {
locked = false
})
}
onMounted(() => {
const o2 = new MutationObserver(function (recordList) {
for (const record of recordList) {
if (record.target !== group.value) {
update3()
}
}
})
o2.observe(group.value, {
childList: true,
subtree: true,
attributes: true,
attributeFilter: ['style'],
})
onUnmounted(() => {
o2.disconnect()
})
})
addEventListener('mousedown', mousedown, true)
function mousedown() {
locked = true
addEventListener('mouseup', function f2() {
removeEventListener('mouseup', f2)
locked = false
update3()
})
}
onUnmounted(() => {
removeEventListener('mousedown', mousedown, true)
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
ref_key: 'group',
ref: group,
class: 'group',
},
[renderSlot(_ctx.$slots, 'default', {}, void 0, true)],
512
)
)
}
},
})
var Group = /* @__PURE__ */ _export_sfc(_sfc_main$4Z, [
['__scopeId', 'data-v-e83d42a2'],
])
var __glob_2_70 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Group,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Img_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2x = (n2) => (
pushScopeId('data-v-ec133780'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$4m = { class: 'static-image' }
const _hoisted_2$3M = /* @__PURE__ */ _withScopeId$2x(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u5C55\u793A\u6A21\u5F0F',
-1
)
)
const _hoisted_3$3n = { class: 'static-image' }
const config$o = {
category: 'test',
name: '\u56FE\u7247',
styleConfig: {
textSetting: false,
},
}
const _sfc_main$4Y = /* @__PURE__ */ defineComponent({
props: {
editing: { type: Boolean },
node: null,
},
setup(__props2) {
const $props2 = __props2
const objectFitList = [
{
value: 'contain',
label: '\u81EA\u9002\u5E94',
},
{
value: 'fill',
label: '\u62C9\u4F38',
},
{
value: 'scale-down',
label: '\u5B9E\u9645\u5927\u5C0F',
},
{
value: 'cover',
label: '\u8986\u76D6',
},
]
const props2 = reactive($props2.node.props)
props2.objectFit = props2.objectFit || objectFitList[0].value
props2.mask = props2.mask || false
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_checkbox = resolveComponent('el-checkbox')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
SettingItem$1,
{ title: '\u529F\u80FD' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$4m, [
_hoisted_2$3M,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x select',
'popper-class': 'cms-el-select_check',
modelValue: unref(props2).objectFit,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(props2).objectFit = $event)),
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(objectFitList, (item2) => {
return createVNode$1(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
}),
64
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_3$3n, [
createElementVNode('label', null, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(props2).mask,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(props2).mask = $event)),
class: 'cms-el-checkbox',
label: '\u56FE\u7247\u906E\u7F69',
},
null,
8,
['modelValue']
),
]),
]),
]),
_: 1,
}
),
])
)
}
},
})
var Img_settings = /* @__PURE__ */ _export_sfc(_sfc_main$4Y, [
['__scopeId', 'data-v-ec133780'],
])
var __glob_2_71 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$o,
default: Img_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
function getImageInfo(imageUrl) {
return new Promise((resolve2, reject2) => {
let image2 = new Image()
image2.src = imageUrl
image2.onload = () => {
let { width, height } = image2
resolve2({ width, height })
}
image2.onerror = () => {
reject2()
}
})
}
var Img_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$4l = { class: 'static-image' }
const _hoisted_2$3L = ['src']
const _sfc_main$4X = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const IMG_BASE_URL = request.defaults.baseURL + `/api/v1/view/image/`
const imgRef = ref()
const node2 = reactive($props2.node)
const props2 = reactive($props2.node.props)
const style2 = reactive($props2.node.style)
props2.objectFit = props2.objectFit || 'contain'
props2.mask = props2.mask || false
let imgStyle = ref(null)
let imgSize = ref({
width: 0,
height: 0,
})
const setImgStyle = () => {
nextTick(() => {
let objectFit = props2.objectFit
let naturalWidth = imgSize.value.width
let naturalHeight = imgSize.value.height
if (objectFit == 'scale-down') {
imgStyle.value = {
height: naturalHeight + 'px',
width: naturalWidth + 'px',
}
} else {
imgStyle.value = {
height: '100%',
width: '100%',
}
}
let maskStyle = {}
if (props2.mask) {
maskStyle = {
backgroundColor: style2.backgroundColor,
'mask-image': `url(${
IMG_BASE_URL +
props2.filename +
`?project=${Session.get('X-Project')}`
})`,
'mask-size': ['cover', 'contain', 'scale-down'].includes(
props2.objectFit
)
? props2.objectFit
: '100% 100%',
}
}
imgStyle.value = {
...imgStyle.value,
...maskStyle,
'object-fit': props2.objectFit,
}
})
}
const getImgStyle = async () => {
if (!style2.width || !style2.height) {
let { width, height } = await getImageInfo(
IMG_BASE_URL +
props2.filename +
`?project=${Session.get('X-Project')}`
)
let node22 = getRectByNode(getRootNode())
let nodeWidth = node22?.width
let nodeHeight = node22?.height
styleConverter(style2).width =
nodeWidth && width > nodeWidth ? nodeWidth : width
styleConverter(style2).height =
nodeHeight && height > nodeHeight ? nodeHeight : height
}
setImgStyle()
}
const imgError = (e2) => {
e2.target.src = defaultImg$1
}
let img_1x1 =
'data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg=='
const src = computed(() => {
return props2.mask
? img_1x1
: IMG_BASE_URL +
props2.filename +
`?project=${Session.get('X-Project')}`
})
watch$1(
[
() => style2.backgroundColor,
() => props2.objectFit,
() => props2.mask,
() => props2.filename,
],
() => {
setImgStyle()
},
{
deep: true,
}
)
const getImgStyle_ = lodash$2.exports.debounce(getImgStyle, 20)
function getImageSize2(url2) {
return new Promise(function (resolve2, reject2) {
let image2 = new Image()
image2.onload = function () {
resolve2({
width: image2.width,
height: image2.height,
})
}
image2.onerror = function () {
reject2(new Error('error'))
}
image2.src = url2
})
}
onMounted(async () => {
imgSize.value = await getImageSize2(
IMG_BASE_URL + props2.filename + `?project=${Session.get('X-Project')}`
)
getImgStyle_()
})
function setFilename(filename) {
props2.filename = filename
}
node2.methods.setFilename = setFilename
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$4l, [
createElementVNode(
'img',
{
ref_key: 'imgRef',
ref: imgRef,
draggable: 'false',
src: src.value,
loading: 'lazy',
onError: _cache[0] || (_cache[0] = ($event) => imgError($event)),
style: normalizeStyle$1(imgStyle.value),
},
null,
44,
_hoisted_2$3L
),
])
)
}
},
})
var Img = /* @__PURE__ */ _export_sfc(_sfc_main$4X, [
['__scopeId', 'data-v-c3ab8040'],
])
var __glob_2_72 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Img,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Input_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2w = (n2) => (
pushScopeId('data-v-67160f34'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$4k = { class: 'input-settings' }
const _hoisted_2$3K = /* @__PURE__ */ _withScopeId$2w(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u6587\u672C', -1)
)
const _hoisted_3$3m = /* @__PURE__ */ createTextVNode(
' \u83B7\u5F97\u7126\u70B9\u81EA\u52A8\u5168\u9009 '
)
const _hoisted_4$2V = /* @__PURE__ */ _withScopeId$2w(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u63D0\u793A\u6587\u672C',
-1
)
)
const _hoisted_5$2D = /* @__PURE__ */ _withScopeId$2w(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u865A\u62DF\u952E\u76D8',
-1
)
)
const _hoisted_6$2k = /* @__PURE__ */ createTextVNode(' \u542F\u7528 ')
const _hoisted_7$21 = /* @__PURE__ */ createTextVNode(
' Enter\u952E\u5173\u95ED '
)
const config$n = {
category: 'base',
name: '\u8F93\u5165\u6846',
icon: 'icon-wenbenshuru',
props: {
inputSettings: {
customized: true,
autoSelectAll: true,
keyboard: {
enabled: false,
enterClose: false,
},
},
},
styleConfig: {
lineHeight: false,
},
permission: true,
}
const _sfc_main$4W = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const props2 = reactive($props2.node.props)
const inputSettings = reactive(props2.inputSettings)
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_input = resolveComponent('el-input')
return (
openBlock(),
createBlock(
SettingItem$1,
{ title: '\u914D\u7F6E' },
{
default: withCtx(() => [
createElementVNode('ul', _hoisted_1$4k, [
createElementVNode('li', null, [
_hoisted_2$3K,
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(inputSettings).autoSelectAll,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(inputSettings).autoSelectAll = $event)),
class: 'cms-el-checkbox-font-size-12 regular',
},
{
default: withCtx(() => [_hoisted_3$3m]),
_: 1,
},
8,
['modelValue']
),
_hoisted_4$2V,
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x regular',
modelValue: unref(props2).placeholder,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(props2).placeholder = $event)),
placeholder: '\u8BF7\u8F93\u5165\u63D0\u793A\u6587\u672C',
},
null,
8,
['modelValue']
),
]),
createElementVNode('li', null, [
_hoisted_5$2D,
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(inputSettings).keyboard.enabled,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(inputSettings).keyboard.enabled = $event)),
class: 'cms-el-checkbox-font-size-12 regular',
onChange:
_cache[3] ||
(_cache[3] = (val2) =>
(unref(inputSettings).keyboard.enterClose = val2)),
},
{
default: withCtx(() => [_hoisted_6$2k]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(inputSettings).keyboard.enterClose,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(inputSettings).keyboard.enterClose = $event)),
class: 'cms-el-checkbox-font-size-12 regular',
disabled: !unref(inputSettings).keyboard.enabled,
},
{
default: withCtx(() => [_hoisted_7$21]),
_: 1,
},
8,
['modelValue', 'disabled']
),
]),
]),
]),
_: 1,
}
)
)
}
},
})
var Input_settings = /* @__PURE__ */ _export_sfc(_sfc_main$4W, [
['__scopeId', 'data-v-67160f34'],
])
var __glob_2_73 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$n,
default: Input_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Input_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$4j = { class: 'input-box' }
const _hoisted_2$3J = ['readonly', 'placeholder']
const _sfc_main$4V = /* @__PURE__ */ defineComponent({
props: {
editing: { type: Boolean },
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
const props2 = reactive(node2.props)
let output = ref('')
function getValueToVariable(variableName2) {
Variable.store[variableName2] = output.value
}
node2.methods.getValueToVariable = getValueToVariable
const setValue = (val2) => {
output.value = val2
}
node2.methods.setValue = setValue
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$4j, [
withDirectives(
createElementVNode(
'input',
mergeProps(_ctx.$attrs, {
readonly: $props2.editing,
type: 'text',
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (output.value = $event)),
placeholder: _ctx.t(unref(props2).placeholder),
}),
null,
16,
_hoisted_2$3J
),
[[vModelText, output.value]]
),
createElementVNode('i', {
class: 'iconfont icon-shanchujilu',
onClick: _cache[1] || (_cache[1] = ($event) => (output.value = '')),
}),
])
)
}
},
})
var Input = /* @__PURE__ */ _export_sfc(_sfc_main$4V, [
['__scopeId', 'data-v-f588e014'],
])
var __glob_2_74 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Input,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const useCheckVariable = async (variableList) => {
const message2 = ref([])
const error2 = ref(null)
async function doCheck() {
message2.value = []
error2.value = null
try {
let resultList = await checkVariable(variableList)
for (let i2 = 0; i2 < resultList.length; i2++) {
if (!resultList[i2].result) {
message2.value.push(
`\u53D8\u91CF${variableList[i2].name}${resultList[i2].message}`
)
return
}
}
} catch (err) {
error2.value = err
}
}
if (isRef(variableList)) {
watchEffect(doCheck)
} else {
await doCheck()
}
return { message: message2, error: error2 }
}
var JogButton_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2v = (n2) => (
pushScopeId('data-v-0f5ba680'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$4i = { class: 'form' }
const _hoisted_2$3I = { class: 'row' }
const _hoisted_3$3l = /* @__PURE__ */ _withScopeId$2v(() =>
/* @__PURE__ */ createElementVNode(
'label',
null,
'\u5173\u8054\u53D8\u91CF',
-1
)
)
const _hoisted_4$2U = { class: 'row' }
const _hoisted_5$2C = /* @__PURE__ */ _withScopeId$2v(() =>
/* @__PURE__ */ createElementVNode(
'label',
null,
'\u63A7\u5236\u7C7B\u578B',
-1
)
)
const _hoisted_6$2j = /* @__PURE__ */ _withScopeId$2v(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'state-title' },
'\u5F00\u72B6\u6001\uFF1A',
-1
)
)
const _hoisted_7$20 = { class: 'flex justify-start state-item' }
const _hoisted_8$1N = /* @__PURE__ */ _withScopeId$2v(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'state-label' },
'\u5199\u5165\u503C',
-1
)
)
const _hoisted_9$1E = { class: 'flex-1' }
const _hoisted_10$1w = { class: 'flex justify-start state-item' }
const _hoisted_11$1o = /* @__PURE__ */ _withScopeId$2v(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'state-label' },
'\u6587\u672C',
-1
)
)
const _hoisted_12$1k = { class: 'flex-1' }
const _hoisted_13$1c = { class: 'flex justify-start state-item' }
const _hoisted_14$13 = /* @__PURE__ */ _withScopeId$2v(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'state-label' },
'\u80CC\u666F',
-1
)
)
const _hoisted_15$$ = /* @__PURE__ */ _withScopeId$2v(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'state-title' },
'\u5173\u72B6\u6001\uFF1A',
-1
)
)
const _hoisted_16$Z = { class: 'flex justify-start state-item' }
const _hoisted_17$T = /* @__PURE__ */ _withScopeId$2v(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'state-label' },
'\u5199\u5165\u503C',
-1
)
)
const _hoisted_18$N = { class: 'flex-1' }
const _hoisted_19$K = { class: 'flex justify-start state-item' }
const _hoisted_20$G = /* @__PURE__ */ _withScopeId$2v(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'state-label' },
'\u6587\u672C',
-1
)
)
const _hoisted_21$y = { class: 'flex-1' }
const _hoisted_22$w = { class: 'flex justify-start state-item' }
const _hoisted_23$t = /* @__PURE__ */ _withScopeId$2v(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'state-label' },
'\u80CC\u666F',
-1
)
)
const config$m = {
category: 'readWrite',
name: '\u70B9\u52A8\u6309\u94AE',
icon: 'icon-diandonganniu',
permission: true,
styleConfig: {
lineHeight: false,
backgroundColor: false,
backgroundImage: false,
},
}
const _sfc_main$4U = /* @__PURE__ */ defineComponent({
props: {
props: null,
},
setup(__props2) {
const $props2 = __props2
const props2 = reactive($props2.props)
const onStyleProxy = styleConverter(props2.on.style)
const offStyleProxy = styleConverter(props2.off.style)
let varError = ref(false)
function input(val2) {
props2.name = val2
varError.value = false
}
async function varCheck() {
if (!props2.name) return
varError.value = false
const rs2 = await request(
`/api/v1/variable/query?keyword=${props2.name}`,
{ silent: true }
)
if (!rs2.result.find((v4) => v4.name === props2.name)) {
props2.type = void 0
varError.value = true
return
}
const varInfo = rs2.result?.[0]
props2.type = varInfo.type
}
varCheck()
const checkVariable2 = async (e2, key2) => {
if (!props2.name) return
let target2 = e2.target
const { message: message2 } = await useCheckVariable([
{ name: props2.name, value: target2.value },
])
message2.value.forEach((message22) => {
props2[key2].value = ''
ElMessage.error(message22)
})
}
let pickVarDialogShown = ref(false)
const confirm2 = (rows) => {
pickVarDialogShown.value = false
if (!rows || !rows.length) return
const item2 = rows[0]
props2.name = item2.name
props2.type = item2.type
}
function change2(status, value2) {
status == 'on'
? (onStyleProxy.backgroundColor = value2)
: (offStyleProxy.backgroundColor = value2)
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_color_picker = resolveComponent('el-color-picker')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
SettingItem$1,
{ title: '\u529F\u80FD' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$4i, [
createElementVNode('div', _hoisted_2$3I, [
_hoisted_3$3l,
createVNode$1(
_component_el_input,
{
class: normalizeClass([
'input cms-el-input-x',
{
error: varError.value,
},
]),
placeholder:
'\u8BF7\u8F93\u5165\u53D8\u91CF\u540D\u79F0',
'model-value': unref(props2).name,
onInput: input,
onBlur: varCheck,
onKeydown: withKeys(varCheck, ['enter']),
},
null,
8,
['class', 'model-value', 'onKeydown']
),
createElementVNode('button', {
class: 'iconfont icon-bianjigongcheng',
onClick:
_cache[0] ||
(_cache[0] = ($event) =>
(pickVarDialogShown.value = true)),
}),
]),
createElementVNode('div', _hoisted_4$2U, [
_hoisted_5$2C,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
modelValue: unref(props2).controllerType,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(props2).controllerType = $event)),
'allow-create': '',
filterable: '',
placeholder:
'\u8BF7\u9009\u62E9\u5BF9\u9F50\u65B9\u5F0F',
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
label: '\u6309\u4E0B\u5F00\uFF0C\u677E\u5F00\u5173',
value: 'on-off',
}),
createVNode$1(_component_el_option, {
label: '\u6309\u4E0B\u5173\uFF0C\u677E\u5F00\u5F00',
value: 'off-on',
}),
]),
_: 1,
},
8,
['modelValue']
),
]),
createElementVNode('div', null, [
_hoisted_6$2j,
createElementVNode('div', null, [
createElementVNode('div', _hoisted_7$20, [
_hoisted_8$1N,
createElementVNode('div', _hoisted_9$1E, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
placeholder: '',
modelValue: unref(props2).on.value,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(props2).on.value = $event)),
readonly: '',
onBlur:
_cache[3] ||
(_cache[3] = ($event) =>
checkVariable2($event, 'on')),
},
null,
8,
['modelValue']
),
]),
]),
createElementVNode('div', _hoisted_10$1w, [
_hoisted_11$1o,
createElementVNode('div', _hoisted_12$1k, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
placeholder: '',
modelValue: unref(props2).on.text,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(props2).on.text = $event)),
},
null,
8,
['modelValue']
),
]),
]),
createElementVNode('div', _hoisted_13$1c, [
_hoisted_14$13,
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
'model-value':
unref(props2).on.style.backgroundColor,
onActiveChange:
_cache[5] ||
(_cache[5] = (e2) =>
unref(isMouseOnElPopper)() &&
change2('on', e2)),
},
null,
8,
['predefine', 'model-value']
),
createVNode$1(
BackgroundImageSetting,
{
styleX: unref(onStyleProxy),
onChange:
_cache[6] ||
(_cache[6] = (key2, value2) =>
(unref(onStyleProxy)[key2] = value2)),
},
null,
8,
['styleX']
),
]),
]),
]),
createElementVNode('div', null, [
_hoisted_15$$,
createElementVNode('div', null, [
createElementVNode('div', _hoisted_16$Z, [
_hoisted_17$T,
createElementVNode('div', _hoisted_18$N, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
placeholder: '',
modelValue: unref(props2).off.value,
'onUpdate:modelValue':
_cache[7] ||
(_cache[7] = ($event) =>
(unref(props2).off.value = $event)),
readonly: '',
onBlur:
_cache[8] ||
(_cache[8] = ($event) =>
checkVariable2($event, 'off')),
},
null,
8,
['modelValue']
),
]),
]),
createElementVNode('div', _hoisted_19$K, [
_hoisted_20$G,
createElementVNode('div', _hoisted_21$y, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
placeholder: '',
modelValue: unref(props2).off.text,
'onUpdate:modelValue':
_cache[9] ||
(_cache[9] = ($event) =>
(unref(props2).off.text = $event)),
},
null,
8,
['modelValue']
),
]),
]),
createElementVNode('div', _hoisted_22$w, [
_hoisted_23$t,
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
'model-value':
unref(props2).off.style.backgroundColor,
onActiveChange:
_cache[10] ||
(_cache[10] = (e2) =>
unref(isMouseOnElPopper)() &&
change2('off', e2)),
},
null,
8,
['predefine', 'model-value']
),
createVNode$1(
BackgroundImageSetting,
{
styleX: unref(offStyleProxy),
onChange:
_cache[11] ||
(_cache[11] = (key2, value2) =>
(unref(offStyleProxy)[key2] = value2)),
},
null,
8,
['styleX']
),
]),
]),
]),
createVNode$1(
unref(_sfc_main$6Q),
{
data: { name: unref(props2).name },
visible: pickVarDialogShown.value,
noLanguage: true,
isAppendToBody: true,
filterType: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
onCancel:
_cache[12] ||
(_cache[12] = ($event) =>
(pickVarDialogShown.value = false)),
onConfirm: confirm2,
},
null,
8,
['data', 'visible']
),
]),
]),
_: 1,
}
),
])
)
}
},
})
var JogButton_settings = /* @__PURE__ */ _export_sfc(_sfc_main$4U, [
['__scopeId', 'data-v-0f5ba680'],
])
var __glob_2_75 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$m,
default: JogButton_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var JogButton_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$4h = ['contenteditable', 't']
const _sfc_main$4T = /* @__PURE__ */ defineComponent({
props: {
editing: { type: Boolean },
node: null,
text: null,
variableList: null,
},
emits: ['update'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const _props = lodash$2.exports.defaults(reactive($props2.node), {
lockedWH: true,
})
const props2 = lodash$2.exports.defaults(reactive(_props.props), {
buttonType: 'switch',
controllerType: 'on-off',
on: {
value: 1,
text: 'ON',
style: {
backgroundColor: 'rgba(85, 117, 248, 1)',
},
},
off: {
value: 0,
text: 'OFF',
style: {
backgroundColor: 'rgba(150, 169, 246, 1)',
},
},
})
if (props2.on?.['background']) {
props2.on.style ??= {
backgroundColor: props2.on['background'],
}
delete props2.on['background']
}
if (props2.off?.['background']) {
props2.off.style ??= {
backgroundColor: props2.off['background'],
}
delete props2.off['background']
}
const el2 = ref()
let contenteditable = ref(false)
const wrapperStyle = computed(
() => props2[`${active.value ? 'on' : 'off'}`].style
)
const transformBoolean = (value2) => {
return !!value2 && value2 !== 'False'
}
const collectText2 = () => {
const texts = [props2.on.text, props2.off.text]
texts.map((ele) => t(ele))
}
let store2 = reactive(Variable.store)
let editingActive = ref(false)
let active = computed({
get() {
if (app.running) {
return transformBoolean(store2[props2.name])
} else {
return editingActive.value
}
},
set(val2) {
if (app.editing) {
editingActive.value = val2
}
},
})
let isMousedown = ref(false)
const handleMouseDown = () => {
isMousedown.value = true
if (app.editing) {
if (props2.controllerType === 'on-off') {
active.value = true
} else if (props2.controllerType === 'off-on') {
active.value = false
}
return
}
if (props2.controllerType === 'on-off') {
Variable.store[props2.name] = props2.on.value
} else if (props2.controllerType === 'off-on') {
Variable.store[props2.name] = props2.off.value
}
}
const handleMouseUp = () => {
isMousedown.value = false
if (app.editing) {
if (props2.controllerType === 'on-off') {
active.value = false
} else if (props2.controllerType === 'off-on') {
active.value = true
}
return
}
if (props2.controllerType === 'on-off') {
Variable.store[props2.name] = props2.off.value
} else if (props2.controllerType === 'off-on') {
Variable.store[props2.name] = props2.on.value
}
}
const onDblclick = () => {
if (!Language$1.isOriginal()) return
if (app.editing) {
contenteditable.value = true
setTimeout(() => {
if (!el2.value) return
const selection = getSelection()
const range3 = new Range()
range3.selectNodeContents(el2.value)
selection?.removeAllRanges()
selection?.addRange(range3)
}, 0)
}
}
const handleBlur = (e2) => {
if (!Language$1.isOriginal()) return
if (!contenteditable.value) return
if (active.value) {
emit2('update', { on: { ...props2.on, text: e2.target?.innerText } })
} else {
emit2('update', { off: { ...props2.off, text: e2.target?.innerText } })
}
contenteditable.value = false
}
function onMouseUp() {
isMousedown.value = false
}
onMounted(() => {
useEventListener(document, 'mouseup', onMouseUp)
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'button',
{
class: normalizeClass([
'switch-btn-button',
isMousedown.value ? 'mousedown' : '',
]),
ref_key: 'el',
ref: el2,
type: 'button',
onDblclick,
onBlur: handleBlur,
contenteditable: contenteditable.value,
onMousedown: handleMouseDown,
onTouchstart: handleMouseDown,
onTouchend: handleMouseUp,
onMouseup: handleMouseUp,
onContextmenu:
_cache[0] ||
(_cache[0] = (e2) => {
e2.preventDefault()
}),
style: normalizeStyle$1(wrapperStyle.value),
t: collectText2(),
},
toDisplayString$1(
_ctx.t(
active.value ? unref(props2).on.text : unref(props2).off.text
)
),
47,
_hoisted_1$4h
)
)
}
},
})
var JogButton = /* @__PURE__ */ _export_sfc(_sfc_main$4T, [
['__scopeId', 'data-v-6de7e500'],
])
var __glob_2_76 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: JogButton,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var JumpButton_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2u = (n2) => (
pushScopeId('data-v-f81ca5d4'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$4g = { class: 'line' }
const _hoisted_2$3H = { class: 'field-item flex page' }
const _hoisted_3$3k = /* @__PURE__ */ _withScopeId$2u(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u8DF3\u8F6C\u753B\u9762',
-1
)
)
const _hoisted_4$2T = { class: 'select-page flex' }
const _hoisted_5$2B = { class: 'name' }
const config$l = {
category: 'jump',
name: '\u8DF3\u8F6C\u6309\u94AE',
icon: 'icon-tiaozhuananniu',
permission: true,
styleConfig: {
lineHeight: false,
},
}
const _sfc_main$4S = /* @__PURE__ */ defineComponent({
props: {
props: {
type: Object,
required: false,
default: () => {
return {
code: '',
functonOptions: {
id: '',
name: '',
},
}
},
},
},
setup(__props2) {
const props2 = __props2
const props_2 = reactive(props2.props)
let visible = ref(false)
const confirm2 = (row) => {
props_2.functonOptions.name = row ? row.name : ''
props_2.functonOptions.id = row ? row.id : ''
}
onBeforeMount(() => {
if (!props_2.functonOptions) {
props_2.code = ''
props_2.functonOptions = {
id: '',
name: '',
}
}
if (!props_2.confirmBoxConfig) {
props_2.confirmBoxConfig = {
check: false,
message: '',
}
}
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
SettingItem$1,
{ title: '\u529F\u80FD' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$4g, [
createElementVNode('div', _hoisted_2$3H, [
_hoisted_3$3k,
createElementVNode('div', _hoisted_4$2T, [
createElementVNode(
'span',
_hoisted_5$2B,
toDisplayString$1(
unref(props_2)?.functonOptions?.name || ''
),
1
),
createElementVNode('i', {
class: 'iconfont icon-bianjigongcheng',
onClick:
_cache[0] ||
(_cache[0] = ($event) =>
isRef(visible)
? (visible.value = true)
: (visible = true)),
}),
]),
]),
]),
createVNode$1(
ConfirmBoxSetting,
{
confirmBoxConfig: unref(props_2).confirmBoxConfig,
},
null,
8,
['confirmBoxConfig']
),
]),
_: 1,
}
),
unref(props_2).functonOptions
? (openBlock(),
createBlock(
unref(functionDialog),
{
key: 0,
title: '\u8DF3\u8F6C\u753B\u9762',
data: unref(props_2).functonOptions,
visible: unref(visible),
onCancel:
_cache[1] ||
(_cache[1] = ($event) =>
isRef(visible)
? (visible.value = false)
: (visible = false)),
onConfirm: confirm2,
},
null,
8,
['data', 'visible']
))
: createCommentVNode('', true),
])
)
}
},
})
var JumpButton_settings = /* @__PURE__ */ _export_sfc(_sfc_main$4S, [
['__scopeId', 'data-v-f81ca5d4'],
])
var __glob_2_77 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$l,
default: JumpButton_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _sfc_main$4R = /* @__PURE__ */ defineComponent({
props: {
text: {
type: String,
required: false,
},
code: {
type: String,
required: false,
default: '',
},
functonOptions: {
type: Object,
required: false,
default: () => {
return {
id: '',
name: '',
title: '',
width: 0,
height: 0,
fixedSize: false,
}
},
},
confirmBoxConfig: {
type: Object,
default: () => {
return {
check: false,
message: '',
}
},
},
node: {
type: Object,
required: false,
default: () => {
return {}
},
},
},
setup(__props) {
const props = __props
const props_ = reactive(props.node.props)
props_.text = props_?.text || '\u8DF3\u8F6C\u6309\u94AE'
function routeTo() {
if (!props.functonOptions.id) return
eval(props.code || '')
const blocks = props.node.blocks
const hasClickMethod = blocks.some((block) => {
return (
block.isEnable &&
block.event.type === 'click' &&
block.children.length > 0
)
})
if (!hasClickMethod) {
push$4({
id: props.functonOptions.id,
})
}
}
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(Button, mergeProps(props, { onClick: routeTo }), null, 16)
)
}
},
})
var __glob_2_78 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$4R,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Language_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$4f = { class: 'drop-down-list-settings' }
const config$k = {
category: 'system',
name: '\u8BED\u8A00\u5207\u6362',
icon: 'icon-qiehuanzujian',
permission: false,
}
const _sfc_main$4Q = /* @__PURE__ */ defineComponent({
props: {
editing: { type: Boolean },
node: null,
text: null,
},
setup(__props2) {
return (_ctx, _cache) => {
return openBlock(), createElementBlock('div', _hoisted_1$4f)
}
},
})
var Language_settings = /* @__PURE__ */ _export_sfc(_sfc_main$4Q, [
['__scopeId', 'data-v-35fd58cc'],
])
var __glob_2_79 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$k,
default: Language_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _sfc_main$4P = {}
const _hoisted_1$4e = { class: 'iconfont icon-shangla' }
function _sfc_render$d(_ctx, _cache) {
return openBlock(), createElementBlock('i', _hoisted_1$4e)
}
var MyIcon = /* @__PURE__ */ _export_sfc(_sfc_main$4P, [
['render', _sfc_render$d],
])
var ControllerIcon = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: MyIcon,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Language_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$4d = { class: 'drop-down-list' }
const _sfc_main$4O = /* @__PURE__ */ defineComponent({
props: {
editing: { type: Boolean },
running: { type: Boolean },
node: null,
text: null,
},
setup(__props2) {
const $props2 = __props2
Language$1.useChange((lang) => {
selectValue.value = lang.lang
})
let selectValue = ref('')
let options2 = ref([])
let enableOption = computed(() =>
options2.value.filter((ele) => ele.enable)
)
const init2 = () => {
selectValue.value = app.current.project.current.language.lang
}
const change2 = (val2) => {
app.current.project.current.language = new Language$1({
lang: val2,
running: $props2.running,
})
}
const getOptions = async () => {
const resp = await request.get(`/api/v1/multiplelanguage/languagelist`)
const defaultOptions2 = [
{
id: 0,
languageType: 'auto',
enable: true,
createDateTime: new Date().toDateString(),
name: '\u8DDF\u968F\u7CFB\u7EDF',
},
]
if ($props2.editing) {
defaultOptions2.unshift({
id: 0,
languageType: 'original',
enable: true,
createDateTime: new Date().toDateString(),
name: '\u539F\u59CB\u6587\u672C',
})
}
options2.value.push(...defaultOptions2, ...resp)
}
const dropDownSelect = ref()
const openSelect = (val2) => {
visibleChange(dropDownSelect.value, val2)
if (val2 && options2.value.length <= 0) {
getOptions()
}
}
onMounted(() => {
init2()
getOptions()
})
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
return (
openBlock(),
createElementBlock('div', _hoisted_1$4d, [
createVNode$1(
_component_el_select,
{
modelValue: selectValue.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (selectValue.value = $event)),
class: 'drop-down-select',
'popper-class': 'drop-down-popper',
effect: '',
'collapse-tags': '',
'suffix-icon': MyIcon,
'collapse-tags-tooltip': '',
placeholder: _ctx._t('\u8BF7\u9009\u62E9'),
'value-key': 'value',
ref_key: 'dropDownSelect',
ref: dropDownSelect,
teleported: false,
'suffix-transition': false,
onChange: change2,
onVisibleChange: openSelect,
style: normalizeStyle$1({
'--backgroundColor': $props2.node.style?.backgroundColor,
}),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(enableOption), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.languageType,
label: _ctx._t(item2.name),
value: item2.languageType,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue', 'placeholder', 'style']
),
])
)
}
},
})
var Language = /* @__PURE__ */ _export_sfc(_sfc_main$4O, [
['__scopeId', 'data-v-2edbf51e'],
])
var __glob_2_80 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Language,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const config$j = {
category: 'base',
name: '\u7EBF\u6761',
icon: 'icon-xiantiao',
styleConfig: {
textSetting: false,
borderRadius: false,
backgroundColor: false,
backgroundImage: false,
height: false,
},
}
const _sfc_main$4N = {}
function _sfc_render$c(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('div')
}
var Line_settings = /* @__PURE__ */ _export_sfc(_sfc_main$4N, [
['render', _sfc_render$c],
])
var __glob_2_81 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$j,
default: Line_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Line_vue_vue_type_style_index_0_scoped_true_lang = ''
const _sfc_main$4M = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
const styleProxy = styleConverter(node2.style)
const isRotater = computed(
() => state$6.current.nodes.length != 1 || node2.locked
)
const el2 = ref()
const elL = ref()
const elR = ref()
function rotate2(type4) {
addEventListener('mousedown', down)
function down() {
if (!el2.value || !elL.value || !elR.value) return
const zoom = state$6.current.zoom
const width =
styleProxy.width || styleConverter(getComputedStyle(el2.value)).width
const A2 = elL.value.getBoundingClientRect()
A2.x *= zoom
A2.y *= zoom
const B3 = elR.value.getBoundingClientRect()
B3.x *= zoom
B3.y *= zoom
const B0 = { x: A2.x + width, y: A2.y }
const A0 = { x: B3.x - width, y: B3.y }
const left0 = styleProxy.left * zoom
const top0 = styleProxy.top * zoom
addEventListener('mousemove', move)
function move(eMove) {
if (type4 === 'l') {
const A1 = eMove
const diffX = eMove.x - A2.x
const diffY = eMove.y - A2.y
styleProxy.left = (left0 + diffX) / zoom
styleProxy.top = (top0 + diffY) / zoom
let angle2 = getAngle2(B3, A0, A1)
const direct = getdirection(B3, A0, A1)
if (direct < 0) {
angle2 = 360 - angle2
}
styleProxy.width = getDistance(A1, B3) / zoom
styleProxy.rotate = angle2
if (shiftDown) {
let r2 = styleProxy.width
let targerAngle = getClosestAngle(angle2)
let arc = (targerAngle * Math.PI) / 180
let l2 = 2 * r2 * Math.sin(arc / 2)
let { CW, CCW } = Calc3rdPoint(B3, A0, l2, r2, r2)
const targerPoint = direct < 0 ? CCW : CW
const _diffX = targerPoint.x - A2.x
const _diffY = targerPoint.y - A2.y
styleProxy.left = (left0 + _diffX) / zoom
styleProxy.top = (top0 + _diffY) / zoom
styleProxy.width = r2 / zoom
styleProxy.rotate = targerAngle
}
}
if (type4 === 'r') {
const B1 = eMove
let angle2 = getAngle2(A2, B0, B1)
if (B1.y < B0.y) {
angle2 = 360 - angle2
}
if (shiftDown) {
angle2 = getClosestAngle(angle2)
}
styleProxy.width = getDistance(A2, B1) / zoom
styleProxy.rotate = angle2
}
}
addEventListener('mouseup', up)
function up() {
removeEventListener('mousedown', down)
removeEventListener('mousemove', move)
removeEventListener('mouseup', up)
}
}
}
function getAngle2(A2, B3, C2) {
let AB2 = Math.sqrt(Math.pow(A2.x - B3.x, 2) + Math.pow(A2.y - B3.y, 2))
let AC2 = Math.sqrt(Math.pow(A2.x - C2.x, 2) + Math.pow(A2.y - C2.y, 2))
let BC = Math.sqrt(Math.pow(B3.x - C2.x, 2) + Math.pow(B3.y - C2.y, 2))
let cosA =
(Math.pow(AB2, 2) + Math.pow(AC2, 2) - Math.pow(BC, 2)) /
(2 * AB2 * AC2)
let angleA = (Math.acos(cosA) * 180) / Math.PI
return angleA
}
function getDistance(A2, B3) {
return Math.sqrt(Math.pow(A2.x - B3.x, 2) + Math.pow(A2.y - B3.y, 2))
}
function getdirection(A2, B3, C2) {
const AB2 = {
x: B3.x - A2.x,
y: B3.y - A2.y,
}
const AC2 = {
x: C2.x - A2.x,
y: C2.y - A2.y,
}
const direct = AB2.x * AC2.y - AB2.y * AC2.x
return direct
}
function Calc3rdPoint(pointA, pointB, bc, ca2, ab) {
function getAngle22(target1, target2) {
let x2 = Math.abs(target1.x - target2.x)
let y2 = Math.abs(target1.y - target2.y)
let z2 = Math.sqrt(Math.pow(x2, 2) + Math.pow(y2, 2))
let cos = y2 / z2
let radina = Math.acos(cos)
let angle2 = Math.floor(180 / (Math.PI / radina))
if (target2.x > target1.x && target2.y > target1.y) {
angle2 = 180 - angle2
}
if (target2.x == target1.x && target2.y > target1.y) {
angle2 = 180
}
if (target2.x > target1.x && target2.y == target1.y) {
angle2 = 90
}
if (target2.x < target1.x && target2.y > target1.y) {
angle2 = 180 + angle2
}
if (target2.x < target1.x && target2.y == target1.y) {
angle2 = 270
}
if (target2.x < target1.x && target2.y < target1.y) {
angle2 = 360 - angle2
}
return angle2
}
let pointC1 = { x: 0, y: 0 }
let pointC2 = { x: 0, y: 0 }
let angAB = -getAngle22(pointA, pointB) + 180
angAB = angAB * (Math.PI / 180)
let tmpValue = (ca2 * ca2 + ab * ab - bc * bc) / (2 * ca2 * ab)
let angBC = Math.acos(tmpValue)
let angAC = angAB - angBC
pointC1.x = pointA.x + ca2 * Math.sin(angAC)
pointC1.y = pointA.y + ca2 * Math.cos(angAC)
angAC = angAB + angBC
pointC2.x = pointA.x + ca2 * Math.sin(angAC)
pointC2.y = pointA.y + ca2 * Math.cos(angAC)
return { CW: pointC1, CCW: pointC2 }
}
function getClosestAngle(num2) {
const angles = [0, 45, 90, 135, 180, 225, 270, 315]
const creds = angles.reduce(
(acc, val2, ind) => {
let { diff, index: index2 } = acc
const difference = Math.abs(val2 - num2)
if (difference < diff) {
diff = difference
index2 = ind
}
return { diff, index: index2 }
},
{
diff: Infinity,
index: -1,
}
)
return angles[creds.index]
}
let shiftDown = false
const shiftDownHandler = (e2) => {
if (e2.key === 'Shift') {
e2?.preventDefault()
shiftDown = true
}
}
const shiftUpHandler = (e2) => {
if (e2.key === 'Shift') {
shiftDown = false
}
}
addEventListener('keydown', shiftDownHandler, true)
addEventListener('keyup', shiftUpHandler, true)
onUnmounted(() => {
removeEventListener('keydown', shiftDownHandler, true)
removeEventListener('keyup', shiftUpHandler, true)
})
onMounted(() => {
if (!styleProxy.borderWidth) styleProxy.borderWidth = 1
if (!styleProxy.borderColor) styleProxy.borderColor = '#666'
if (!styleProxy.borderStyle) styleProxy.borderStyle = 'solid'
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
ref_key: 'el',
ref: el2,
class: 'Line',
'data-widget-key': 'Line',
},
[
createElementVNode(
'i',
{
ref_key: 'elL',
ref: elL,
class: normalizeClass(['l', { hidden: unref(isRotater) }]),
onMousedown:
_cache[0] || (_cache[0] = ($event) => rotate2('l')),
},
null,
34
),
createElementVNode(
'hr',
{
style: normalizeStyle$1({
borderWidth:
((unref(node2).style.height =
unref(node2).style.borderWidth),
unref(node2).style.borderWidth),
borderColor: unref(node2).style.borderColor,
borderStyle: unref(node2).style.borderStyle,
}),
},
null,
4
),
createElementVNode(
'i',
{
ref_key: 'elR',
ref: elR,
class: normalizeClass(['r', { hidden: unref(isRotater) }]),
onMousedown:
_cache[1] || (_cache[1] = ($event) => rotate2('r')),
},
null,
34
),
],
512
)
)
}
},
})
var Line = /* @__PURE__ */ _export_sfc(_sfc_main$4M, [
['__scopeId', 'data-v-6b2bf059'],
])
var __glob_2_82 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Line,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const config$i = {
category: 'run',
name: '\u65E5\u5FD7\u7BA1\u7406',
icon: 'icon-denglurizhi',
authorizationRequired: true,
styleConfig: {
color: false,
},
props: {
inputSettings: {
autoSelectAll: true,
keyboard: {
enabled: false,
enterClose: false,
},
},
},
}
const _sfc_main$4L = {}
function _sfc_render$b(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('div')
}
var LogManage_settings = /* @__PURE__ */ _export_sfc(_sfc_main$4L, [
['render', _sfc_render$b],
])
var __glob_2_83 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$i,
default: LogManage_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
function getLoginLog(data2) {
return request({
url: `/api/v1/log/loginlog`,
method: 'get',
params: data2,
})
}
function exportLoginLog(data2) {
return request({
responseType: 'blob',
url: `/api/v1/log/loginlog/file`,
method: 'get',
params: data2,
})
}
function getDeviceLog(data2) {
return request({
url: `/api/v1/log/devicelog`,
method: 'get',
params: data2,
})
}
function exportDeviceLog(data2) {
return request({
responseType: 'blob',
url: `/api/v1/log/devicelog/file`,
method: 'get',
params: data2,
})
}
function getModuleLog(data2) {
return request({
url: `/api/v1/log/modulelog`,
method: 'get',
params: data2,
})
}
function exportModuleLog(data2) {
return request({
responseType: 'blob',
url: `/api/v1/log/modulelog/file`,
method: 'get',
params: data2,
})
}
function getDeviceList() {
return request({
url: `/api/v1/item/deviceitems`,
method: 'get',
})
}
function getModuleList() {
return request({
url: `/api/v1/item/moduleitems`,
method: 'get',
})
}
var DeviceLog_vue_vue_type_style_index_0_lang = ''
var DeviceLog_vue_vue_type_style_index_1_scoped_true_lang = ''
const _hoisted_1$4c = { class: 'page' }
const _hoisted_2$3G = { class: 'page_wrap' }
const _hoisted_3$3j = { class: 'log_header' }
const _hoisted_4$2S = { class: 'header_left' }
const _hoisted_5$2A = { class: 'select' }
const _hoisted_6$2i = { class: 'select_label' }
const _hoisted_7$1$ = { class: 'select_wrap' }
const _hoisted_8$1M = { class: 'searh' }
const _hoisted_9$1D = { class: 'search_label' }
const _hoisted_10$1v = { class: 'search_time_range' }
const _hoisted_11$1n = { class: 'search_input' }
const _hoisted_12$1j = { class: 'search_btn' }
const _hoisted_13$1b = { class: 'log_wrap' }
const _sfc_main$4K = /* @__PURE__ */ defineComponent({
props: {
permissionBtns: {
type: Array,
default: () => [],
},
},
setup(__props2) {
const props2 = __props2
const searchData = ref({
deviceKey: 'Unlimited',
timeRange: [
dayjs(new Date()).format('YYYY-MM-DD') + ' 00:00:00',
dayjs(new Date()).format('YYYY-MM-DD') + ' 23:59:59',
],
keyWord: '',
first: true,
})
let table = null
const devices = ref([])
const tableData2 = ref([])
const { local } = Language$1.useElementPlusI18n()
Language$1.useChange(() => {
getDevices()
getData('init')
})
onMounted(() => {
getDevices()
getData('init')
nextTick(() => {
table = document.querySelector(
'#logDevicetable .el-scrollbar .el-scrollbar__wrap'
)
table.addEventListener('scroll', listener)
})
})
onUnmounted(() => {
table && table.removeEventListener('scroll', listener)
})
const listener = () => {
const scrollDistance =
table.scrollHeight - table.scrollTop - table.clientHeight
if (scrollDistance <= 0) {
searchData.value.first = false
getData('load')
}
}
const getDevices = () => {
getDeviceList().then((res) => {
devices.value = res
})
}
const searchLog = () => {
searchData.value.first = true
table.scrollTop = 0
getData('init')
}
const getData = (type4 = '') => {
let postData = {
deviceKey: searchData.value.deviceKey,
startTime:
type4 === 'init'
? searchData.value.timeRange[0]
: tableData2.value[tableData2.value.length - 1].recordTime,
stopTime: searchData.value.timeRange[1],
keyWord: searchData.value.keyWord,
first: searchData.value.first,
}
getDeviceLog(postData).then((res) => {
if (type4 === 'init') {
tableData2.value = res
} else {
tableData2.value = tableData2.value.concat(res)
if (res.length === 0 && !searchData.value.first) {
ElMessage.warning(
Language$1._t(
'\u6570\u636E\u5DF2\u5168\u90E8\u52A0\u8F7D\u5B8C\u6210'
)
)
}
}
})
}
const exportExcel = () => {
if (!props2.permissionBtns.includes('device-log-export')) {
ElMessage.warning(
Language$1._t('\u7528\u6237\u6CA1\u6709\u8BE5\u6743\u9650\uFF01')
)
return
}
if (tableData2.value.length === 0) {
ElMessage.warning(
Language$1._t(
'\u6682\u65E0\u6570\u636E\uFF0C\u65E0\u6CD5\u5BFC\u51FA'
)
)
return
}
let postData = {
deviceKey: searchData.value.deviceKey,
startTime: searchData.value.timeRange[0],
stopTime: searchData.value.timeRange[1],
keyWord: searchData.value.keyWord,
}
exportDeviceLog(postData).then((res) => {
downloadFile(
res,
'',
`${Language$1._t('\u8BBE\u5907\u65E5\u5FD7')}.xlsx`
)
})
}
const downloadFile = (res, type4, fileName) => {
const blob = new Blob([res])
const url2 = window.URL || window.webkitURL
const downloadHref = url2.createObjectURL(blob)
let downloadLink = document.createElement('a')
downloadLink.href = downloadHref
downloadLink.download = fileName
downloadLink.click()
window.URL.revokeObjectURL(url2)
}
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_date_picker = resolveComponent('el-date-picker')
const _component_el_input = resolveComponent('el-input')
const _component_el_button = resolveComponent('el-button')
const _component_el_table_column = resolveComponent('el-table-column')
const _component_el_table = resolveComponent('el-table')
return (
openBlock(),
createElementBlock('div', _hoisted_1$4c, [
createElementVNode('div', _hoisted_2$3G, [
createElementVNode('div', _hoisted_3$3j, [
createElementVNode('div', _hoisted_4$2S, [
createElementVNode('div', _hoisted_5$2A, [
createElementVNode(
'span',
_hoisted_6$2i,
toDisplayString$1(_ctx._t('\u64CD\u4F5C\u8BBE\u5907')),
1
),
createElementVNode('div', _hoisted_7$1$, [
createVNode$1(
_component_el_select,
{
class: '--scms-select',
'popper-class': '--scms-select_poper',
modelValue: searchData.value.deviceKey,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(searchData.value.deviceKey = $event)),
placeholder: _ctx._t(
'\u8BF7\u9009\u62E9\u64CD\u4F5C\u8BBE\u5907'
),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(devices.value, (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.key,
label: item2.value,
value: item2.key,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue', 'placeholder']
),
]),
]),
createElementVNode('div', _hoisted_8$1M, [
createElementVNode(
'span',
_hoisted_9$1D,
toDisplayString$1(_ctx._t('\u64CD\u4F5C\u65F6\u95F4')),
1
),
createElementVNode('div', _hoisted_10$1v, [
createVNode$1(
unref(ElConfigProvider),
{ locale: unref(local) },
{
default: withCtx(() => [
createVNode$1(
_component_el_date_picker,
{
class: '--scms-time-range',
'popper-class': '--scms-time-range_popper',
modelValue: searchData.value.timeRange,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(searchData.value.timeRange = $event)),
format: 'YYYY-MM-DD HH:mm:ss',
'value-format': 'YYYY-MM-DD HH:mm:ss',
type: 'datetimerange',
'range-separator': '-',
'start-placeholder': '\u5F00\u59CB\u65F6\u95F4',
'end-placeholder': '\u7ED3\u675F\u65F6\u95F4',
'default-time': [
new Date(2e3, 1, 1, 0, 0, 0),
new Date(2e3, 2, 1, 23, 59, 59),
],
},
null,
8,
['modelValue', 'default-time']
),
]),
_: 1,
},
8,
['locale']
),
]),
createElementVNode('div', _hoisted_11$1n, [
createVNode$1(
_component_el_input,
{
class: '--scms-input --scms-input-bottom',
modelValue: searchData.value.keyWord,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(searchData.value.keyWord = $event)),
placeholder: _ctx._t(
'\u8BF7\u8F93\u5165\u5173\u952E\u8BCD'
),
},
null,
8,
['modelValue', 'placeholder']
),
]),
createElementVNode('div', _hoisted_12$1j, [
createVNode$1(
_component_el_button,
{
class: '--scms-search-gray-btn cms_button_search',
color: '#8B9CA4',
onClick: searchLog,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx._t('\u67E5\u8BE2')),
1
),
]),
_: 1,
}
),
]),
]),
]),
createElementVNode('div', { class: 'btns' }, [
createElementVNode('i', {
class: 'iconfont icon-daochu2',
onClick: exportExcel,
}),
]),
]),
createElementVNode('div', _hoisted_13$1b, [
createVNode$1(
_component_el_table,
{
data: tableData2.value,
class: 'x_table',
style: { width: '100%' },
height: '96%',
id: 'logDevicetable',
'empty-text': _ctx._t('\u6682\u65E0\u6570\u636E'),
'header-cell-style': {
background: '#DBDFE7',
color: '#35363B',
},
},
{
default: withCtx(() => [
createVNode$1(
_component_el_table_column,
{
prop: 'recordTime',
label: _ctx._t('\u64CD\u4F5C\u65F6\u95F4'),
},
null,
8,
['label']
),
createVNode$1(
_component_el_table_column,
{
prop: 'operator',
label: _ctx._t('\u64CD\u4F5C\u8005'),
},
null,
8,
['label']
),
createVNode$1(
_component_el_table_column,
{
prop: 'device',
label: _ctx._t('\u64CD\u4F5C\u8BBE\u5907'),
},
null,
8,
['label']
),
createVNode$1(
_component_el_table_column,
{
prop: 'group',
label: _ctx._t('\u64CD\u4F5C\u5206\u7EC4'),
},
null,
8,
['label']
),
createVNode$1(
_component_el_table_column,
{
prop: 'tagName',
label: _ctx._t('\u64CD\u4F5C\u5BF9\u8C61'),
},
null,
8,
['label']
),
createVNode$1(
_component_el_table_column,
{
prop: 'description',
label: _ctx._t('\u64CD\u4F5C\u63CF\u8FF0'),
},
null,
8,
['label']
),
]),
_: 1,
},
8,
['data', 'empty-text']
),
]),
]),
])
)
}
},
})
var deviceLog = /* @__PURE__ */ _export_sfc(_sfc_main$4K, [
['__scopeId', 'data-v-3b73ca0a'],
])
var DeviceLog = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: deviceLog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var LoginLog_vue_vue_type_style_index_0_lang = ''
var LoginLog_vue_vue_type_style_index_1_scoped_true_lang = ''
const _hoisted_1$4b = { class: 'page' }
const _hoisted_2$3F = { class: 'page_header' }
const _hoisted_3$3i = { class: 'searh' }
const _hoisted_4$2R = { class: 'search_label' }
const _hoisted_5$2z = { class: 'search_time_range' }
const _hoisted_6$2h = { class: 'search_input' }
const _hoisted_7$1_ = { class: 'search_btn' }
const _hoisted_8$1L = { class: 'page_wrap' }
const _sfc_main$4J = /* @__PURE__ */ defineComponent({
props: {
permissionBtns: {
type: Array,
default: () => [],
},
},
setup(__props2) {
const props2 = __props2
const searchData = ref({
timeRange: [
dayjs(new Date()).format('YYYY-MM-DD') + ' 00:00:00',
dayjs(new Date()).format('YYYY-MM-DD') + ' 23:59:59',
],
keyWord: '',
first: true,
})
let table = null
const tableData2 = ref([])
const { local } = Language$1.useElementPlusI18n()
Language$1.useChange(() => {
getData('init')
})
onMounted(() => {
getData('init')
nextTick(() => {
table = document.querySelector(
'#logLogintable .el-scrollbar .el-scrollbar__wrap'
)
table.addEventListener('scroll', listener)
})
})
onUnmounted(() => {
table && table.removeEventListener('scroll', listener)
})
const listener = () => {
const scrollDistance =
table.scrollHeight - table.scrollTop - table.clientHeight
if (scrollDistance <= 0) {
searchData.value.first = false
getData('load')
}
}
const searchLog = () => {
searchData.value.first = true
table.scrollTop = 0
getData('init')
}
const getData = (type4 = '') => {
let postData = {
startTime:
type4 === 'init'
? searchData.value.timeRange[0]
: tableData2.value[tableData2.value.length - 1].recordTime,
stopTime: searchData.value.timeRange[1],
keyWord: searchData.value.keyWord,
first: searchData.value.first,
}
getLoginLog(postData).then((res) => {
if (type4 === 'init') {
tableData2.value = res
} else {
tableData2.value = tableData2.value.concat(res)
if (res.length === 0 && !searchData.value.first) {
ElMessage.warning(
Language$1._t(
'\u6570\u636E\u5DF2\u5168\u90E8\u52A0\u8F7D\u5B8C\u6210'
)
)
}
}
})
}
const exportExcel = () => {
if (!props2.permissionBtns.includes('login-log-export')) {
ElMessage.warning(
Language$1._t('\u7528\u6237\u6CA1\u6709\u8BE5\u6743\u9650\uFF01')
)
return
}
if (tableData2.value.length === 0) {
ElMessage.warning(
Language$1._t(
'\u6682\u65E0\u6570\u636E\uFF0C\u65E0\u6CD5\u5BFC\u51FA'
)
)
return
}
let postData = {
startTime: searchData.value.timeRange[0],
stopTime: searchData.value.timeRange[1],
keyWord: searchData.value.keyWord,
}
exportLoginLog(postData).then((res) => {
downloadFile(
res,
'',
`${Language$1._t('\u767B\u5F55\u65E5\u5FD7')}.xlsx`
)
})
}
const downloadFile = (res, type4, fileName) => {
const blob = new Blob([res])
const url2 = window.URL || window.webkitURL
const downloadHref = url2.createObjectURL(blob)
let downloadLink = document.createElement('a')
downloadLink.href = downloadHref
downloadLink.download = fileName
downloadLink.click()
window.URL.revokeObjectURL(url2)
}
return (_ctx, _cache) => {
const _component_el_date_picker = resolveComponent('el-date-picker')
const _component_el_input = resolveComponent('el-input')
const _component_el_button = resolveComponent('el-button')
const _component_el_table_column = resolveComponent('el-table-column')
const _component_el_table = resolveComponent('el-table')
return (
openBlock(),
createElementBlock('div', _hoisted_1$4b, [
createElementVNode('div', null, [
createElementVNode('div', _hoisted_2$3F, [
createElementVNode('div', _hoisted_3$3i, [
createElementVNode(
'div',
_hoisted_4$2R,
toDisplayString$1(_ctx._t('\u64CD\u4F5C\u65F6\u95F4')),
1
),
createElementVNode('div', _hoisted_5$2z, [
createVNode$1(
unref(ElConfigProvider),
{ locale: unref(local) },
{
default: withCtx(() => [
createVNode$1(
_component_el_date_picker,
{
class: '--scms-time-range',
'popper-class': '--scms-time-range_popper',
modelValue: searchData.value.timeRange,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(searchData.value.timeRange = $event)),
format: 'YYYY-MM-DD HH:mm:ss',
'value-format': 'YYYY-MM-DD HH:mm:ss',
type: 'datetimerange',
'range-separator': '-',
'start-placeholder': '\u5F00\u59CB\u65F6\u95F4',
'end-placeholder': '\u7ED3\u675F\u65F6\u95F4',
'default-time': [
new Date(2e3, 1, 1, 0, 0, 0),
new Date(2e3, 2, 1, 23, 59, 59),
],
},
null,
8,
['modelValue', 'default-time']
),
]),
_: 1,
},
8,
['locale']
),
]),
createElementVNode('div', _hoisted_6$2h, [
createVNode$1(
_component_el_input,
{
class: '--scms-input --scms-input-bottom',
modelValue: searchData.value.keyWord,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(searchData.value.keyWord = $event)),
placeholder: _ctx._t(
'\u8BF7\u8F93\u5165\u5173\u952E\u8BCD'
),
},
null,
8,
['modelValue', 'placeholder']
),
]),
createElementVNode('div', _hoisted_7$1_, [
createVNode$1(
_component_el_button,
{
class: '--scms-search-gray-btn cms_button_search',
color: '#8B9CA4',
onClick: searchLog,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx._t('\u67E5\u8BE2')),
1
),
]),
_: 1,
}
),
]),
]),
createElementVNode('div', { class: 'btns' }, [
createElementVNode('i', {
class: 'iconfont icon-daochu2',
onClick: exportExcel,
}),
]),
]),
]),
createElementVNode('div', _hoisted_8$1L, [
createVNode$1(
_component_el_table,
{
data: tableData2.value,
class: 'x_table',
height: '96%',
style: { width: '100%' },
id: 'logLogintable',
'empty-text': _ctx._t('\u6682\u65E0\u6570\u636E'),
'header-cell-style': {
background: '#DBDFE7',
color: '#35363B',
},
},
{
default: withCtx(() => [
createVNode$1(
_component_el_table_column,
{
prop: 'recordTime',
label: _ctx._t('\u64CD\u4F5C\u65F6\u95F4'),
},
null,
8,
['label']
),
createVNode$1(
_component_el_table_column,
{
prop: 'operator',
label: _ctx._t('\u64CD\u4F5C\u8005'),
},
null,
8,
['label']
),
createVNode$1(
_component_el_table_column,
{
prop: 'description',
label: _ctx._t('\u64CD\u4F5C\u63CF\u8FF0'),
},
null,
8,
['label']
),
]),
_: 1,
},
8,
['data', 'empty-text']
),
]),
])
)
}
},
})
var loginLog = /* @__PURE__ */ _export_sfc(_sfc_main$4J, [
['__scopeId', 'data-v-7f84c5ae'],
])
var LoginLog = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: loginLog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ModuleLog_vue_vue_type_style_index_0_lang = ''
var ModuleLog_vue_vue_type_style_index_1_scoped_true_lang = ''
const _hoisted_1$4a = { class: 'page' }
const _hoisted_2$3E = { class: 'page_wrap' }
const _hoisted_3$3h = { class: 'page_header' }
const _hoisted_4$2Q = { class: 'header_left' }
const _hoisted_5$2y = { class: 'select' }
const _hoisted_6$2g = { class: 'select_label' }
const _hoisted_7$1Z = { class: 'select_wrap' }
const _hoisted_8$1K = { class: 'searh' }
const _hoisted_9$1C = { class: 'search_label' }
const _hoisted_10$1u = { class: 'search_time_range' }
const _hoisted_11$1m = { class: 'search_input' }
const _hoisted_12$1i = { class: 'search_btn' }
const _hoisted_13$1a = { class: 'log_wrap' }
const _sfc_main$4I = /* @__PURE__ */ defineComponent({
props: {
permissionBtns: {
type: Array,
default: () => [],
},
},
setup(__props2) {
const props2 = __props2
const modules2 = ref([])
const searchData = ref({
moduleKey: 'Unlimited',
timeRange: [
dayjs(new Date()).format('YYYY-MM-DD') + ' 00:00:00',
dayjs(new Date()).format('YYYY-MM-DD') + ' 23:59:59',
],
keyWord: '',
first: true,
})
let table = null
const tableData2 = ref([])
const { local } = Language$1.useElementPlusI18n()
Language$1.useChange(() => {
getModules()
getData('init')
})
onMounted(() => {
getModules()
getData('init')
nextTick(() => {
table = document.querySelector(
'#logModuletable .el-scrollbar .el-scrollbar__wrap'
)
table.addEventListener('scroll', listener)
})
})
onUnmounted(() => {
table && table.removeEventListener('scroll', listener)
})
const listener = () => {
const scrollDistance =
table.scrollHeight - table.scrollTop - table.clientHeight
if (scrollDistance <= 0) {
searchData.value.first = false
getData('load')
}
}
const searchLog = () => {
searchData.value.first = true
table.scrollTop = 0
getData('init')
}
const getModules = () => {
getModuleList().then((res) => {
modules2.value = res
})
}
const getData = (type4 = '') => {
let postData = {
moduleKey: searchData.value.moduleKey,
startTime:
type4 === 'init'
? searchData.value.timeRange[0]
: tableData2.value[tableData2.value.length - 1].recordTime,
stopTime: searchData.value.timeRange[1],
keyWord: searchData.value.keyWord,
first: searchData.value.first,
}
getModuleLog(postData).then((res) => {
if (type4 === 'init') {
tableData2.value = res
} else {
tableData2.value = tableData2.value.concat(res)
if (res.length === 0 && !searchData.value.first) {
ElMessage.warning(
Language$1._t(
'\u6570\u636E\u5DF2\u5168\u90E8\u52A0\u8F7D\u5B8C\u6210'
)
)
}
}
})
}
const exportExcel = () => {
if (!props2.permissionBtns.includes('module-log-export')) {
ElMessage.warning(
Language$1._t('\u7528\u6237\u6CA1\u6709\u8BE5\u6743\u9650\uFF01')
)
return
}
if (tableData2.value.length === 0) {
ElMessage.warning(
Language$1._t(
'\u6682\u65E0\u6570\u636E\uFF0C\u65E0\u6CD5\u5BFC\u51FA'
)
)
return
}
let postData = {
moduleKey: searchData.value.moduleKey,
startTime: searchData.value.timeRange[0],
stopTime: searchData.value.timeRange[1],
keyWord: searchData.value.keyWord,
}
exportModuleLog(postData).then((res) => {
downloadFile(
res,
'',
`${Language$1._t('\u6A21\u5757\u65E5\u5FD7')}.xlsx`
)
})
}
const downloadFile = (res, type4, fileName) => {
const blob = new Blob([res])
const url2 = window.URL || window.webkitURL
const downloadHref = url2.createObjectURL(blob)
let downloadLink = document.createElement('a')
downloadLink.href = downloadHref
downloadLink.download = fileName
downloadLink.click()
window.URL.revokeObjectURL(url2)
}
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_date_picker = resolveComponent('el-date-picker')
const _component_el_input = resolveComponent('el-input')
const _component_el_button = resolveComponent('el-button')
const _component_el_table_column = resolveComponent('el-table-column')
const _component_el_table = resolveComponent('el-table')
return (
openBlock(),
createElementBlock('div', _hoisted_1$4a, [
createElementVNode('div', _hoisted_2$3E, [
createElementVNode('div', _hoisted_3$3h, [
createElementVNode('div', _hoisted_4$2Q, [
createElementVNode('div', _hoisted_5$2y, [
createElementVNode(
'span',
_hoisted_6$2g,
toDisplayString$1(_ctx._t('\u64CD\u4F5C\u6A21\u5757')),
1
),
createElementVNode('div', _hoisted_7$1Z, [
createVNode$1(
_component_el_select,
{
class: '--scms-select',
'popper-class': '--scms-select_poper',
modelValue: searchData.value.moduleKey,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(searchData.value.moduleKey = $event)),
placeholder: _ctx._t(
'\u8BF7\u9009\u62E9\u64CD\u4F5C\u6A21\u5757'
),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(modules2.value, (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.key,
label: item2.value,
value: item2.key,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue', 'placeholder']
),
]),
]),
createElementVNode('div', _hoisted_8$1K, [
createElementVNode(
'span',
_hoisted_9$1C,
toDisplayString$1(_ctx._t('\u64CD\u4F5C\u65F6\u95F4')),
1
),
createElementVNode('div', _hoisted_10$1u, [
createVNode$1(
unref(ElConfigProvider),
{ locale: unref(local) },
{
default: withCtx(() => [
createVNode$1(
_component_el_date_picker,
{
class: '--scms-time-range',
'popper-class': '--scms-time-range_popper',
modelValue: searchData.value.timeRange,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(searchData.value.timeRange = $event)),
format: 'YYYY-MM-DD HH:mm:ss',
'value-format': 'YYYY-MM-DD HH:mm:ss',
type: 'datetimerange',
'range-separator': '-',
'start-placeholder': '\u5F00\u59CB\u65F6\u95F4',
'end-placeholder': '\u7ED3\u675F\u65F6\u95F4',
'default-time': [
new Date(2e3, 1, 1, 0, 0, 0),
new Date(2e3, 2, 1, 23, 59, 59),
],
},
null,
8,
['modelValue', 'default-time']
),
]),
_: 1,
},
8,
['locale']
),
]),
createElementVNode('div', _hoisted_11$1m, [
createVNode$1(
_component_el_input,
{
class: '--scms-input --scms-input-bottom',
modelValue: searchData.value.keyWord,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(searchData.value.keyWord = $event)),
placeholder: _ctx._t(
'\u8BF7\u8F93\u5165\u5173\u952E\u8BCD'
),
},
null,
8,
['modelValue', 'placeholder']
),
]),
createElementVNode('div', _hoisted_12$1i, [
createVNode$1(
_component_el_button,
{
class: '--scms-search-gray-btn cms_button_search',
color: '#8B9CA4',
onClick: searchLog,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx._t('\u67E5\u8BE2')),
1
),
]),
_: 1,
}
),
]),
]),
]),
createElementVNode('div', { class: 'btns' }, [
createElementVNode('i', {
class: 'iconfont icon-daochu2',
onClick: exportExcel,
}),
]),
]),
createElementVNode('div', _hoisted_13$1a, [
createVNode$1(
_component_el_table,
{
data: tableData2.value,
class: 'x_table',
style: { width: '100%' },
height: '96%',
id: 'logModuletable',
'empty-text': _ctx._t('\u6682\u65E0\u6570\u636E'),
'header-cell-style': {
background: '#DBDFE7',
color: '#35363B',
},
},
{
default: withCtx(() => [
createVNode$1(
_component_el_table_column,
{
prop: 'recordTime',
label: _ctx._t('\u64CD\u4F5C\u65F6\u95F4'),
},
null,
8,
['label']
),
createVNode$1(
_component_el_table_column,
{
prop: 'operator',
label: _ctx._t('\u64CD\u4F5C\u8005'),
},
null,
8,
['label']
),
createVNode$1(
_component_el_table_column,
{
prop: 'moduleName',
label: _ctx._t('\u64CD\u4F5C\u6A21\u5757'),
},
null,
8,
['label']
),
createVNode$1(
_component_el_table_column,
{
prop: 'target',
label: _ctx._t('\u64CD\u4F5C\u5BF9\u8C61'),
},
null,
8,
['label']
),
createVNode$1(
_component_el_table_column,
{
prop: 'type',
label: _ctx._t('\u64CD\u4F5C\u7C7B\u578B'),
},
null,
8,
['label']
),
createVNode$1(
_component_el_table_column,
{
prop: 'description',
label: _ctx._t('\u64CD\u4F5C\u63CF\u8FF0'),
},
null,
8,
['label']
),
]),
_: 1,
},
8,
['data', 'empty-text']
),
]),
]),
])
)
}
},
})
var moduleLog = /* @__PURE__ */ _export_sfc(_sfc_main$4I, [
['__scopeId', 'data-v-7bb71ca3'],
])
var ModuleLog = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: moduleLog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var LogManage_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$49 = { class: 'box' }
const _hoisted_2$3D = {
key: 0,
class: 'box_wrap',
}
const _hoisted_3$3g = { class: 'x_tab' }
const _hoisted_4$2P = { class: 'content' }
const _hoisted_5$2x = { key: 1 }
const _sfc_main$4H = /* @__PURE__ */ defineComponent({
props: {
editing: { type: Boolean },
node: null,
},
setup(__props2) {
const props2 = __props2
const components = {
loginLog,
deviceLog,
moduleLog,
}
const permissionBtns = ref([])
const currentTab = ref('')
const node2 = reactive(props2.node)
let permissions = computed(() => state$6.permissions)
const permission = {
id: node2.id,
name: node2.name,
subs: [
{
id: 'tab-loginLog',
name: '\u767B\u5F55\u65E5\u5FD7',
},
{
id: 'tab-deviceLog',
name: '\u8BBE\u5907\u65E5\u5FD7',
},
{
id: 'tab-moduleLog',
name: '\u6A21\u5757\u65E5\u5FD7',
},
{
id: 'login-log-export',
name: '\u767B\u5F55\u65E5\u5FD7-\u5BFC\u51FA',
},
{
id: 'device-log-export',
name: '\u8BBE\u5907\u65E5\u5FD7-\u5BFC\u51FA',
},
{
id: 'module-log-export',
name: '\u6A21\u5757\u65E5\u5FD7-\u5BFC\u51FA',
},
],
}
let flag2 = permissions.value.some((f2) => f2.id === node2.id)
if (!flag2) {
permissions.value.push(permission)
}
if (userInfo.permissions.all) {
permissionBtns.value = permission.subs.map((item2) => item2.id)
} else {
permissionBtns.value = userInfo.permissions.widgets
}
const showTabs = ref([])
const allTabs = ['tab-loginLog', 'tab-deviceLog', 'tab-moduleLog']
permissionBtns.value.forEach((item2) => {
if (allTabs.includes(item2)) {
showTabs.value.push(item2)
}
})
if (showTabs.value.length !== 0) {
currentTab.value = showTabs.value[0].split('-')[1]
}
onUnmounted(() => {
let index2 = permissions.value.findIndex((f2) => f2.id === node2.id)
if (index2 !== -1) {
permissions.value.splice(index2, 1)
}
})
const changeTab = (name2) => {
currentTab.value = name2
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$49, [
showTabs.value.length !== 0
? (openBlock(),
createElementBlock('div', _hoisted_2$3D, [
createElementVNode('div', _hoisted_3$3g, [
showTabs.value.includes('tab-loginLog')
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass([
'x_tab_item',
{
current_tab_item: currentTab.value === 'loginLog',
},
]),
onClick:
_cache[0] ||
(_cache[0] = ($event) => changeTab('loginLog')),
},
toDisplayString$1(_ctx._t('\u767B\u5F55\u65E5\u5FD7')),
3
))
: createCommentVNode('', true),
showTabs.value.includes('tab-deviceLog')
? (openBlock(),
createElementBlock(
'div',
{
key: 1,
class: normalizeClass([
'x_tab_item',
{
current_tab_item:
currentTab.value === 'deviceLog',
},
]),
onClick:
_cache[1] ||
(_cache[1] = ($event) => changeTab('deviceLog')),
},
toDisplayString$1(_ctx._t('\u8BBE\u5907\u65E5\u5FD7')),
3
))
: createCommentVNode('', true),
showTabs.value.includes('tab-moduleLog')
? (openBlock(),
createElementBlock(
'div',
{
key: 2,
class: normalizeClass([
'x_tab_item',
{
current_tab_item:
currentTab.value === 'moduleLog',
},
]),
onClick:
_cache[2] ||
(_cache[2] = ($event) => changeTab('moduleLog')),
},
toDisplayString$1(_ctx._t('\u6A21\u5757\u65E5\u5FD7')),
3
))
: createCommentVNode('', true),
]),
createElementVNode('div', _hoisted_4$2P, [
(openBlock(),
createBlock(
resolveDynamicComponent(components[currentTab.value]),
{ permissionBtns: permissionBtns.value },
null,
8,
['permissionBtns']
)),
]),
]))
: (openBlock(),
createElementBlock(
'div',
_hoisted_5$2x,
toDisplayString$1(_ctx._t('\u65E0\u6743\u9650\u67E5\u770B')),
1
)),
])
)
}
},
})
var LogManage = /* @__PURE__ */ _export_sfc(_sfc_main$4H, [
['__scopeId', 'data-v-3375fed1'],
])
var __glob_2_84 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: LogManage,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var TextSettings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2t = (n2) => (
pushScopeId('data-v-36a6d449'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$48 = { class: 'TextSettings' }
const _hoisted_2$3C = { class: 'row' }
const _hoisted_3$3f = { class: 'group' }
const _hoisted_4$2O = /* @__PURE__ */ _withScopeId$2t(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-zuo' },
null,
-1
)
)
const _hoisted_5$2w = /* @__PURE__ */ _withScopeId$2t(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-zuo' },
null,
-1
)
)
const _hoisted_6$2f = /* @__PURE__ */ _withScopeId$2t(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-zhong' },
null,
-1
)
)
const _hoisted_7$1Y = /* @__PURE__ */ _withScopeId$2t(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-you' },
null,
-1
)
)
const _hoisted_8$1J = /* @__PURE__ */ _withScopeId$2t(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-jiacu',
title: '\u7C97\u4F53 Ctrl+B',
},
null,
-1
)
)
const _hoisted_9$1B = /* @__PURE__ */ _withScopeId$2t(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-xieti',
title: '\u659C\u4F53 Ctrl+I',
},
null,
-1
)
)
const _hoisted_10$1t = /* @__PURE__ */ _withScopeId$2t(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-xiahuaxian',
title: '\u4E0B\u5212\u7EBF Ctrl+U',
},
null,
-1
)
)
const _hoisted_11$1l = { class: 'row' }
const _hoisted_12$1h = { class: 'col flex1' }
const _hoisted_13$19 = { class: 'col' }
const _hoisted_14$12 = { class: 'col' }
const _sfc_main$4G = /* @__PURE__ */ defineComponent({
props: {
styleX: null,
disabled: null,
},
emits: ['change'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
function change2(key2, value2) {
emit2('change', key2, value2)
props2.styleX[key2] = value2
}
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_color_picker = resolveComponent('el-color-picker')
const _component_el_checkbox_button =
resolveComponent('el-checkbox-button')
const _component_el_input_number = resolveComponent('el-input-number')
return (
openBlock(),
createElementBlock('div', _hoisted_1$48, [
createElementVNode('div', _hoisted_2$3C, [
createElementVNode('div', _hoisted_3$3f, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
disabled: __props2.disabled?.fontSize,
'model-value': __props2.styleX.fontSize,
'allow-create': '',
filterable: '',
'default-first-option': '',
placeholder: '\u5B57\u53F7',
onChange:
_cache[0] || (_cache[0] = (e2) => change2('fontSize', +e2)),
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(
[12, 13, 14, 15, 16, 17, 18, 19, 20, 24, 28, 32, 36],
(size) => {
return createVNode$1(
_component_el_option,
{
key: size,
label: size,
value: size,
},
null,
8,
['label', 'value']
)
}
),
64
)),
]),
_: 1,
},
8,
['disabled', 'model-value']
),
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
disabled: __props2.disabled?.color,
predefine: unref(colorList),
'model-value': __props2.styleX.color,
onActiveChange:
_cache[1] ||
(_cache[1] = (e2) =>
unref(isMouseOnElPopper)() && change2('color', e2)),
},
null,
8,
['disabled', 'predefine', 'model-value']
),
createVNode$1(
_component_el_select,
{
class: 'width3 iconfont cms-el-select-x',
'popper-class': 'cms-el-select_check',
disabled: __props2.disabled?.textAlign,
'model-value': __props2.styleX.textAlign,
onChange:
_cache[2] || (_cache[2] = (e2) => change2('textAlign', e2)),
placeholder: '\uE695',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_option,
{
label: '\uE683',
value: 'start',
hidden: '',
},
{
default: withCtx(() => [_hoisted_4$2O]),
_: 1,
}
),
createVNode$1(
_component_el_option,
{
label: '\uE683',
value: 'left',
},
{
default: withCtx(() => [_hoisted_5$2w]),
_: 1,
}
),
createVNode$1(
_component_el_option,
{
label: '\uE695',
value: 'center',
},
{
default: withCtx(() => [_hoisted_6$2f]),
_: 1,
}
),
createVNode$1(
_component_el_option,
{
label: '\uE67D',
value: 'right',
},
{
default: withCtx(() => [_hoisted_7$1Y]),
_: 1,
}
),
]),
_: 1,
},
8,
['disabled', 'model-value']
),
createVNode$1(
_component_el_checkbox_button,
{
class: 'set-fontWeight',
disabled: __props2.disabled?.fontWeight,
'model-value': __props2.styleX.fontWeight === 'bold',
onChange:
_cache[3] ||
(_cache[3] = (e2) =>
change2('fontWeight', e2 ? 'bold' : '')),
},
{
default: withCtx(() => [_hoisted_8$1J]),
_: 1,
},
8,
['disabled', 'model-value']
),
createVNode$1(
_component_el_checkbox_button,
{
class: 'set-fontStyle',
disabled: __props2.disabled?.fontStyle,
'model-value': __props2.styleX.fontStyle === 'italic',
onChange:
_cache[4] ||
(_cache[4] = (e2) =>
change2('fontStyle', e2 ? 'italic' : '')),
},
{
default: withCtx(() => [_hoisted_9$1B]),
_: 1,
},
8,
['disabled', 'model-value']
),
createVNode$1(
_component_el_checkbox_button,
{
class: 'set-textDecoration',
disabled: __props2.disabled?.textDecoration,
'model-value': __props2.styleX.textDecoration === 'underline',
onChange:
_cache[5] ||
(_cache[5] = (e2) =>
change2('textDecoration', e2 ? 'underline' : '')),
},
{
default: withCtx(() => [_hoisted_10$1t]),
_: 1,
},
8,
['disabled', 'model-value']
),
]),
]),
createElementVNode('div', _hoisted_11$1l, [
createElementVNode('div', _hoisted_12$1h, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
disabled: __props2.disabled?.fontFamily,
'model-value': __props2.styleX.fontFamily,
'allow-create': '',
filterable: '',
'default-first-option': '',
placeholder: '\u5B57\u4F53',
onChange:
_cache[6] ||
(_cache[6] = (e2) => change2('fontFamily', e2)),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(fontFamilyList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
hidden: item2.hidden,
},
null,
8,
['label', 'value', 'hidden']
)
)
}),
128
)),
]),
_: 1,
},
8,
['disabled', 'model-value']
),
]),
createElementVNode('div', _hoisted_13$19, [
createElementVNode(
'strong',
{
class: normalizeClass([
'key',
{ unactive: __props2.disabled?.letterSpacing },
]),
},
'\u5B57\u8DDD',
2
),
createVNode$1(
_component_el_input_number,
{
class: 'width2 cms-el-input-number-x',
'controls-position': 'right',
disabled: __props2.disabled?.letterSpacing,
'model-value': +__props2.styleX.letterSpacing,
onInput:
_cache[7] ||
(_cache[7] = (e2) => change2('letterSpacing', e2)),
},
null,
8,
['disabled', 'model-value']
),
]),
createElementVNode('div', _hoisted_14$12, [
createElementVNode(
'strong',
{
class: normalizeClass([
'key',
{ unactive: __props2.disabled?.lineHeight },
]),
},
'\u884C\u9AD8',
2
),
createVNode$1(
_component_el_input_number,
{
class: 'width2 cms-el-input-number-x',
'controls-position': 'right',
disabled: __props2.disabled?.lineHeight,
'model-value': +__props2.styleX.lineHeight,
onInput:
_cache[8] ||
(_cache[8] = (e2) => change2('lineHeight', e2)),
},
null,
8,
['disabled', 'model-value']
),
]),
]),
])
)
}
},
})
var TextSettings = /* @__PURE__ */ _export_sfc(_sfc_main$4G, [
['__scopeId', 'data-v-36a6d449'],
])
var TextSettings$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: TextSettings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var AppearanceSettings_vue_vue_type_style_index_0_scoped_true_lang = ''
var AppearanceSettings_vue_vue_type_style_index_1_scoped_true_lang = ''
var AppearanceSettings_vue_vue_type_style_index_2_scoped_true_lang = ''
const _withScopeId$2s = (n2) => (
pushScopeId('data-v-fa272942'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$47 = { class: 'row' }
const _hoisted_2$3B = { class: 'col' }
const _hoisted_3$3e = {
key: 0,
class: 'col ml-a',
style: { width: '160px' },
}
const _hoisted_4$2N = { class: 'value' }
const _hoisted_5$2v = { class: 'opt_img' }
const _hoisted_6$2e = ['src']
const _hoisted_7$1X = { key: 1 }
const _hoisted_8$1I = {
key: 0,
class: 'row',
}
const _hoisted_9$1A = { class: 'col' }
const _hoisted_10$1s = { class: 'value' }
const _hoisted_11$1k = /* @__PURE__ */ _withScopeId$2s(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-waibu',
title: '\u5916\u9634\u5F71',
},
null,
-1
)
)
const _hoisted_12$1g = [_hoisted_11$1k]
const _hoisted_13$18 = { class: 'box-shadow-content' }
const _hoisted_14$11 = { class: 'item' }
const _hoisted_15$_ = { class: 'head flex' }
const _hoisted_16$Y = /* @__PURE__ */ _withScopeId$2s(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u6C34\u5E73\uFF1A',
-1
)
)
const _hoisted_17$S = { class: 'value' }
const _hoisted_18$M = { class: 'bar' }
const _hoisted_19$J = { class: 'item' }
const _hoisted_20$F = { class: 'head flex' }
const _hoisted_21$x = /* @__PURE__ */ _withScopeId$2s(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u5782\u76F4\uFF1A',
-1
)
)
const _hoisted_22$v = { class: 'value' }
const _hoisted_23$s = { class: 'bar' }
const _hoisted_24$r = { class: 'item' }
const _hoisted_25$m = { class: 'head flex' }
const _hoisted_26$l = /* @__PURE__ */ _withScopeId$2s(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u6A21\u7CCA\uFF1A',
-1
)
)
const _hoisted_27$k = { class: 'value' }
const _hoisted_28$j = { class: 'bar' }
const _hoisted_29$g = { class: 'item' }
const _hoisted_30$g = { class: 'head flex' }
const _hoisted_31$d = /* @__PURE__ */ _withScopeId$2s(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u5927\u5C0F\uFF1A',
-1
)
)
const _hoisted_32$d = { class: 'value' }
const _hoisted_33$d = { class: 'bar' }
const _hoisted_34$a = { class: 'item' }
const _hoisted_35$a = { class: 'head flex' }
const _hoisted_36$9 = { class: 'title' }
const _hoisted_37$9 = { class: 'bar' }
const _hoisted_38$8 = /* @__PURE__ */ _withScopeId$2s(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-neibu',
title:
'\u5185\u9634\u5F71\uFF08\u53EF\u80FD\u88AB\u5185\u90E8\u5185\u5BB9\u906E\u6321\uFF09',
},
null,
-1
)
)
const _hoisted_39$7 = [_hoisted_38$8]
const _hoisted_40$7 = { class: 'box-shadow-content' }
const _hoisted_41$7 = { class: 'item' }
const _hoisted_42$6 = { class: 'head flex' }
const _hoisted_43$4 = /* @__PURE__ */ _withScopeId$2s(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u6C34\u5E73\uFF1A',
-1
)
)
const _hoisted_44$3 = { class: 'value' }
const _hoisted_45$3 = { class: 'bar' }
const _hoisted_46$3 = { class: 'item' }
const _hoisted_47$3 = { class: 'head flex' }
const _hoisted_48$2 = /* @__PURE__ */ _withScopeId$2s(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u5782\u76F4\uFF1A',
-1
)
)
const _hoisted_49$2 = { class: 'value' }
const _hoisted_50$2 = { class: 'bar' }
const _hoisted_51$2 = { class: 'item' }
const _hoisted_52$2 = { class: 'head flex' }
const _hoisted_53$2 = /* @__PURE__ */ _withScopeId$2s(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u6A21\u7CCA\uFF1A',
-1
)
)
const _hoisted_54$2 = { class: 'value' }
const _hoisted_55$2 = { class: 'bar' }
const _hoisted_56$2 = { class: 'item' }
const _hoisted_57$2 = { class: 'head flex' }
const _hoisted_58$2 = /* @__PURE__ */ _withScopeId$2s(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u5927\u5C0F\uFF1A',
-1
)
)
const _hoisted_59$2 = { class: 'value' }
const _hoisted_60$2 = { class: 'bar' }
const _hoisted_61$2 = { class: 'item' }
const _hoisted_62$2 = { class: 'head flex' }
const _hoisted_63$2 = /* @__PURE__ */ _withScopeId$2s(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u989C\u8272\uFF1A',
-1
)
)
const _hoisted_64$1 = { class: 'value' }
const _hoisted_65$1 = { class: 'bar' }
const _hoisted_66$1 = {
class: 'col ml-a',
style: { width: '160px' },
}
const _hoisted_67$1 = {
key: 1,
class: 'row',
}
const _hoisted_68$1 = /* @__PURE__ */ _withScopeId$2s(() =>
/* @__PURE__ */ createElementVNode(
'strong',
{ class: 'key' },
'\u4E0D\u900F\u660E\u5EA6',
-1
)
)
const _hoisted_69$1 = { class: 'row flex1' }
const _hoisted_70$1 = { class: 'col flex1' }
const _hoisted_71$1 = { class: 'col' }
const _hoisted_72$1 = { class: 'opacicty-num' }
const _sfc_main$4F = /* @__PURE__ */ defineComponent({
props: {
styleX: null,
disabled: null,
opacity: { type: Boolean },
root: { type: Boolean },
},
emits: ['change'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const styleX = reactive(props2.styleX)
let boxShadowOutsetShown = ref(false)
let boxShadowInsetShown = ref(false)
let boxShadowOutsetTimer
function boxShadowToggle(type4, bool2) {
clearTimeout(boxShadowOutsetTimer)
boxShadowOutsetTimer = setTimeout(() => {
if (type4 === 'all' || type4 === 'outset') {
boxShadowOutsetShown.value = bool2 ?? !boxShadowOutsetShown.value
boxShadowInsetShown.value = false
}
if (type4 === 'all' || type4 === 'inset') {
boxShadowInsetShown.value = bool2 ?? !boxShadowInsetShown.value
boxShadowOutsetShown.value = false
}
}, 10)
}
function mouseHandler2() {
if (!isMouseOnElPopper()) {
boxShadowToggle('all', false)
}
}
onMounted(() => addEventListener('mousedown', mouseHandler2, true))
onUnmounted(() => removeEventListener('mousedown', mouseHandler2, true))
const borderStyle = [
{
label: '\u65E0',
src: '',
value: 'none',
},
{
label: '\u76F4\u7EBF',
src: '',
value: 'solid',
},
{
label: '\u865A\u7EBF',
src: '',
value: 'dashed',
},
{
label: '\u5706\u70B9',
src: '',
value: 'dotted',
},
]
function change2(key2, value2) {
emit2('change', key2, value2)
styleX[key2] = value2
}
const setBoxShadow = (type4, key2, value2) => {
let boxShadow2 = styleX.boxShadow
boxShadow2[
{
outset: 0,
inset: 1,
}[type4]
][
{
color: 0,
horizontal: 1,
vertical: 2,
blur: 3,
spread: 4,
}[key2]
] = value2
change2('boxShadow', boxShadow2)
}
return (_ctx, _cache) => {
const _component_el_color_picker = resolveComponent('el-color-picker')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_slider = resolveComponent('el-slider')
const _component_el_popover = resolveComponent('el-popover')
return (
openBlock(),
createElementBlock('div', null, [
createElementVNode('div', _hoisted_1$47, [
createElementVNode('div', _hoisted_2$3B, [
createElementVNode(
'strong',
{
class: normalizeClass([
'key',
{
unactive:
!props2.root && __props2.disabled?.backgroundColor,
},
]),
},
'\u80CC\u666F',
2
),
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
disabled: !props2.root && __props2.disabled?.backgroundColor,
'model-value': unref(styleX).backgroundColor,
onActiveChange:
_cache[0] ||
(_cache[0] = (e2) =>
unref(isMouseOnElPopper)() &&
change2('backgroundColor', e2)),
},
null,
8,
['predefine', 'disabled', 'model-value']
),
createVNode$1(
BackgroundImageSetting,
{
styleX: unref(styleX),
disabled: __props2.disabled?.backgroundImage,
},
null,
8,
['styleX', 'disabled']
),
]),
!props2.root
? (openBlock(),
createElementBlock('div', _hoisted_3$3e, [
createElementVNode(
'strong',
{
class: normalizeClass([
'key',
{
unactive:
__props2.disabled?.borderStyle &&
__props2.disabled?.borderWidth &&
__props2.disabled?.borderColor,
},
]),
},
'\u8FB9\u6846',
2
),
createElementVNode('div', _hoisted_4$2N, [
createVNode$1(
_component_el_select,
{
class: 'width3 cms-el-select-x',
'popper-class': 'cms-el-select_check',
disabled: __props2.disabled?.borderStyle,
'model-value': unref(styleX).borderStyle,
onChange:
_cache[1] ||
(_cache[1] = (e2) => change2('borderStyle', e2)),
placeholder: ' ',
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(borderStyle, (item2) => {
return createVNode$1(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_5$2v, [
item2.src !== ''
? (openBlock(),
createElementBlock(
'img',
{
key: 0,
src: item2.src,
},
null,
8,
_hoisted_6$2e
))
: (openBlock(),
createElementBlock(
'span',
_hoisted_7$1X,
toDisplayString$1(item2.label),
1
)),
]),
]),
_: 2,
},
1032,
['label', 'value']
)
}),
64
)),
]),
_: 1,
},
8,
['disabled', 'model-value']
),
createVNode$1(
_component_el_input_number,
{
class: 'width2 cms-el-input-number-x',
'controls-position': 'right',
min: 0,
disabled: __props2.disabled?.borderWidth,
'model-value': unref(styleX).borderWidth,
onInput:
_cache[2] ||
(_cache[2] = (e2) => change2('borderWidth', e2)),
},
null,
8,
['disabled', 'model-value']
),
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
disabled: __props2.disabled?.borderColor,
'model-value': unref(styleX).borderColor,
onActiveChange:
_cache[3] ||
(_cache[3] = (e2) =>
unref(isMouseOnElPopper)() &&
change2('borderColor', e2)),
},
null,
8,
['predefine', 'disabled', 'model-value']
),
]),
]))
: createCommentVNode('', true),
]),
!props2.root
? (openBlock(),
createElementBlock('div', _hoisted_8$1I, [
createElementVNode('div', _hoisted_9$1A, [
createElementVNode(
'strong',
{
class: normalizeClass([
'key',
{ unactive: __props2.disabled?.boxShadow },
]),
},
'\u9634\u5F71',
2
),
createElementVNode('div', _hoisted_10$1s, [
createVNode$1(
_component_el_popover,
{
width: 200,
visible: boxShadowOutsetShown.value,
'onUpdate:visible':
_cache[11] ||
(_cache[11] = ($event) =>
(boxShadowOutsetShown.value = $event)),
disabled: __props2.disabled?.boxShadow,
},
{
reference: withCtx(() => [
createElementVNode(
'span',
{
class: normalizeClass([
'box-shadow-btn',
{ unactive: __props2.disabled?.boxShadow },
]),
onClick:
_cache[4] ||
(_cache[4] = ($event) =>
boxShadowToggle('outset')),
},
_hoisted_12$1g,
2
),
]),
default: withCtx(() => [
createElementVNode('div', _hoisted_13$18, [
createElementVNode('div', _hoisted_14$11, [
createElementVNode('div', _hoisted_15$_, [
_hoisted_16$Y,
createElementVNode(
'div',
_hoisted_17$S,
toDisplayString$1(
unref(styleX).boxShadow?.[0][1]
),
1
),
]),
createElementVNode('div', _hoisted_18$M, [
createVNode$1(
_component_el_slider,
{
class: 'cms-el-slider-x',
'model-value':
unref(styleX).boxShadow?.[0][1],
onInput:
_cache[5] ||
(_cache[5] = (e2) =>
setBoxShadow(
'outset',
'horizontal',
e2
)),
min: -50,
max: 50,
},
null,
8,
['model-value']
),
]),
]),
createElementVNode('div', _hoisted_19$J, [
createElementVNode('div', _hoisted_20$F, [
_hoisted_21$x,
createElementVNode(
'div',
_hoisted_22$v,
toDisplayString$1(
unref(styleX).boxShadow?.[0][2]
),
1
),
]),
createElementVNode('div', _hoisted_23$s, [
createVNode$1(
_component_el_slider,
{
class: 'cms-el-slider-x',
'model-value':
unref(styleX).boxShadow?.[0][2],
onInput:
_cache[6] ||
(_cache[6] = (e2) =>
setBoxShadow('outset', 'vertical', e2)),
min: -50,
max: 50,
},
null,
8,
['model-value']
),
]),
]),
createElementVNode('div', _hoisted_24$r, [
createElementVNode('div', _hoisted_25$m, [
_hoisted_26$l,
createElementVNode(
'div',
_hoisted_27$k,
toDisplayString$1(
unref(styleX).boxShadow?.[0][3]
),
1
),
]),
createElementVNode('div', _hoisted_28$j, [
createVNode$1(
_component_el_slider,
{
class: 'cms-el-slider-x',
'model-value':
unref(styleX).boxShadow?.[0][3],
onInput:
_cache[7] ||
(_cache[7] = (e2) =>
setBoxShadow('outset', 'blur', e2)),
max: 50,
},
null,
8,
['model-value']
),
]),
]),
createElementVNode('div', _hoisted_29$g, [
createElementVNode('div', _hoisted_30$g, [
_hoisted_31$d,
createElementVNode(
'div',
_hoisted_32$d,
toDisplayString$1(
unref(styleX).boxShadow?.[0][4]
),
1
),
]),
createElementVNode('div', _hoisted_33$d, [
createVNode$1(
_component_el_slider,
{
class: 'cms-el-slider-x',
'model-value':
unref(styleX).boxShadow?.[0][4],
onInput:
_cache[8] ||
(_cache[8] = (e2) =>
setBoxShadow('outset', 'spread', e2)),
min: -50,
max: 50,
},
null,
8,
['model-value']
),
]),
]),
createElementVNode('div', _hoisted_34$a, [
createElementVNode('div', _hoisted_35$a, [
createElementVNode(
'div',
_hoisted_36$9,
'\u989C\u8272\uFF1A' +
toDisplayString$1(
unref(styleX).boxShadow?.[0][0]
),
1
),
]),
createElementVNode('div', _hoisted_37$9, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
'model-value':
unref(styleX).boxShadow?.[0][0],
onActiveChange:
_cache[9] ||
(_cache[9] = (e2) =>
unref(isMouseOnElPopper)() &&
setBoxShadow('outset', 'color', e2)),
onChange:
_cache[10] ||
(_cache[10] = () =>
(boxShadowOutsetShown.value = false)),
},
null,
8,
['predefine', 'model-value']
),
]),
]),
]),
]),
_: 1,
},
8,
['visible', 'disabled']
),
createVNode$1(
_component_el_popover,
{
width: 200,
visible: boxShadowInsetShown.value,
'onUpdate:visible':
_cache[19] ||
(_cache[19] = ($event) =>
(boxShadowInsetShown.value = $event)),
disabled: __props2.disabled?.boxShadow,
},
{
reference: withCtx(() => [
createElementVNode(
'span',
{
class: normalizeClass([
'box-shadow-btn',
{ unactive: __props2.disabled?.boxShadow },
]),
onClick:
_cache[12] ||
(_cache[12] = ($event) =>
boxShadowToggle('inset')),
},
_hoisted_39$7,
2
),
]),
default: withCtx(() => [
createElementVNode('div', _hoisted_40$7, [
createElementVNode('div', _hoisted_41$7, [
createElementVNode('div', _hoisted_42$6, [
_hoisted_43$4,
createElementVNode(
'div',
_hoisted_44$3,
toDisplayString$1(
unref(styleX).boxShadow?.[1][1]
),
1
),
]),
createElementVNode('div', _hoisted_45$3, [
createVNode$1(
_component_el_slider,
{
class: 'cms-el-slider-x',
'model-value':
unref(styleX).boxShadow?.[1][1],
onInput:
_cache[13] ||
(_cache[13] = (e2) =>
setBoxShadow(
'inset',
'horizontal',
e2
)),
min: -50,
max: 50,
},
null,
8,
['model-value']
),
]),
]),
createElementVNode('div', _hoisted_46$3, [
createElementVNode('div', _hoisted_47$3, [
_hoisted_48$2,
createElementVNode(
'div',
_hoisted_49$2,
toDisplayString$1(
unref(styleX).boxShadow?.[1][2]
),
1
),
]),
createElementVNode('div', _hoisted_50$2, [
createVNode$1(
_component_el_slider,
{
class: 'cms-el-slider-x',
'model-value':
unref(styleX).boxShadow?.[1][2],
onInput:
_cache[14] ||
(_cache[14] = (e2) =>
setBoxShadow('inset', 'vertical', e2)),
min: -50,
max: 50,
},
null,
8,
['model-value']
),
]),
]),
createElementVNode('div', _hoisted_51$2, [
createElementVNode('div', _hoisted_52$2, [
_hoisted_53$2,
createElementVNode(
'div',
_hoisted_54$2,
toDisplayString$1(
unref(styleX).boxShadow?.[1][3]
),
1
),
]),
createElementVNode('div', _hoisted_55$2, [
createVNode$1(
_component_el_slider,
{
class: 'cms-el-slider-x',
'model-value':
unref(styleX).boxShadow?.[1][3],
onInput:
_cache[15] ||
(_cache[15] = (e2) =>
setBoxShadow('inset', 'blur', e2)),
max: 50,
},
null,
8,
['model-value']
),
]),
]),
createElementVNode('div', _hoisted_56$2, [
createElementVNode('div', _hoisted_57$2, [
_hoisted_58$2,
createElementVNode(
'div',
_hoisted_59$2,
toDisplayString$1(
unref(styleX).boxShadow?.[1][4]
),
1
),
]),
createElementVNode('div', _hoisted_60$2, [
createVNode$1(
_component_el_slider,
{
class: 'cms-el-slider-x',
'model-value':
unref(styleX).boxShadow?.[1][4],
onInput:
_cache[16] ||
(_cache[16] = (e2) =>
setBoxShadow('inset', 'spread', e2)),
min: -50,
max: 50,
},
null,
8,
['model-value']
),
]),
]),
createElementVNode('div', _hoisted_61$2, [
createElementVNode('div', _hoisted_62$2, [
_hoisted_63$2,
createElementVNode(
'div',
_hoisted_64$1,
toDisplayString$1(
unref(styleX).boxShadow?.[1][0]
),
1
),
]),
createElementVNode('div', _hoisted_65$1, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
'model-value':
unref(styleX).boxShadow?.[1][0],
onActiveChange:
_cache[17] ||
(_cache[17] = (e2) =>
unref(isMouseOnElPopper)() &&
setBoxShadow('inset', 'color', e2)),
onChange:
_cache[18] ||
(_cache[18] = () =>
(boxShadowInsetShown.value = false)),
},
null,
8,
['predefine', 'model-value']
),
]),
]),
]),
]),
_: 1,
},
8,
['visible', 'disabled']
),
]),
]),
createElementVNode('div', _hoisted_66$1, [
createElementVNode(
'strong',
{
class: normalizeClass([
'key',
{ unactive: __props2.disabled?.borderRadius },
]),
},
'\u5706\u89D2',
2
),
createVNode$1(
_component_el_input_number,
{
class: 'width2 cms-el-input-number-x',
'controls-position': 'right',
min: 0,
disabled: __props2.disabled?.borderRadius,
'model-value': unref(styleX).borderRadius,
onInput:
_cache[20] ||
(_cache[20] = (e2) => change2('borderRadius', e2)),
},
null,
8,
['disabled', 'model-value']
),
]),
]))
: createCommentVNode('', true),
props2.opacity
? (openBlock(),
createElementBlock('div', _hoisted_67$1, [
createElementVNode(
'div',
{
class: normalizeClass([
'col flex1',
{ unactive: __props2.disabled?.['opacity'] },
]),
},
[
_hoisted_68$1,
createElementVNode('div', _hoisted_69$1, [
createElementVNode('div', _hoisted_70$1, [
createVNode$1(
_component_el_slider,
{
min: 0,
max: 100,
step: 1,
class: 'cms-el-slider-x',
disabled: __props2.disabled?.opacity,
'model-value': unref(styleX).opacity,
onInput:
_cache[21] ||
(_cache[21] = (e2) => change2('opacity', e2)),
},
null,
8,
['disabled', 'model-value']
),
]),
createElementVNode('div', _hoisted_71$1, [
createElementVNode(
'div',
_hoisted_72$1,
toDisplayString$1(unref(styleX).opacity) + '%',
1
),
]),
]),
],
2
),
]))
: createCommentVNode('', true),
])
)
}
},
})
var AppearanceSettings = /* @__PURE__ */ _export_sfc(_sfc_main$4F, [
['__scopeId', 'data-v-fa272942'],
])
var AppearanceSettings$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: AppearanceSettings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Login_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2r = (n2) => (
pushScopeId('data-v-3b73ebde'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$46 = { class: 'function_items_wrap' }
const _hoisted_2$3A = /* @__PURE__ */ createTextVNode(
'\u4E0B\u62C9\u6846\u9009\u62E9\u8D26\u53F7'
)
const _hoisted_3$3d = { class: 'function_items_wrap' }
const _hoisted_4$2M = { class: 'item_row' }
const _hoisted_5$2u = /* @__PURE__ */ _withScopeId$2r(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'item_row_label' },
'\u8DF3\u8F6C\u753B\u9762',
-1
)
)
const _hoisted_6$2d = { class: 'item_row_value' }
const _hoisted_7$1W = { class: 'text_yellow' }
const config$h = {
category: 'jump',
name: '\u767B\u5F55\u63A7\u4EF6',
icon: 'icon-denglu',
styleConfig: {
textSetting: false,
},
props: {
inputSettings: {
autoSelectAll: true,
keyboard: {
enabled: false,
enterClose: false,
},
},
},
}
const _sfc_main$4E = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
let visible = ref(false)
const open2 = () => {
visible.value = true
}
const cancel2 = () => {
visible.value = false
}
const props2 = reactive($props2.node.props)
props2.jumpPage = props2.jumpPage || {
id: '',
name: '',
}
props2.usernameInfo = props2.usernameInfo || {
selectable: false,
}
const inputStylex = styleConverter(props2.inputStyle)
const buttonStylex = styleConverter(props2.buttonStyle)
const confirm2 = (row) => {
props2.jumpPage = {
name: row?.name || '',
id: row?.id || '',
}
}
onMounted(() => {})
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
SettingItem$1,
{ title: '\u8F93\u5165\u6846\u5916\u89C2' },
{
default: withCtx(() => [
createVNode$1(
AppearanceSettings,
{ styleX: unref(inputStylex) },
null,
8,
['styleX']
),
]),
_: 1,
}
),
createVNode$1(
SettingItem$1,
{ title: '\u8F93\u5165\u6846\u6587\u672C' },
{
default: withCtx(() => [
createVNode$1(
TextSettings,
{
styleX: unref(inputStylex),
disabled: { lineHeight: true },
},
null,
8,
['styleX']
),
]),
_: 1,
}
),
createVNode$1(
SettingItem$1,
{ title: '\u6309\u94AE\u5916\u89C2' },
{
default: withCtx(() => [
createVNode$1(
AppearanceSettings,
{ styleX: unref(buttonStylex) },
null,
8,
['styleX']
),
]),
_: 1,
}
),
createVNode$1(
SettingItem$1,
{ title: '\u6309\u94AE\u6587\u672C' },
{
default: withCtx(() => [
createVNode$1(
TextSettings,
{
styleX: unref(buttonStylex),
disabled: { lineHeight: true },
},
null,
8,
['styleX']
),
]),
_: 1,
}
),
createVNode$1(
SettingItem$1,
{ title: '\u8D26\u53F7\u680F' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$46, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(props2).usernameInfo.selectable,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(props2).usernameInfo.selectable = $event)),
class: 'cms-el-checkbox',
},
{
default: withCtx(() => [_hoisted_2$3A]),
_: 1,
},
8,
['modelValue']
),
]),
]),
_: 1,
}
),
createVNode$1(
SettingItem$1,
{ title: '\u529F\u80FD' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_3$3d, [
createElementVNode('div', _hoisted_4$2M, [
_hoisted_5$2u,
createElementVNode('div', _hoisted_6$2d, [
createElementVNode(
'span',
_hoisted_7$1W,
toDisplayString$1(unref(props2).jumpPage.name),
1
),
createElementVNode('i', {
class: 'iconfont icon-bianjigongcheng right-icon',
onClick: open2,
}),
]),
]),
createVNode$1(
functionDialog,
{
visible: unref(visible),
data: unref(props2).jumpPage,
onCancel: cancel2,
onConfirm: confirm2,
},
null,
8,
['visible', 'data']
),
]),
]),
_: 1,
}
),
])
)
}
},
})
var Login_settings = /* @__PURE__ */ _export_sfc(_sfc_main$4E, [
['__scopeId', 'data-v-3b73ebde'],
])
var __glob_2_85 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$h,
default: Login_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var BI_RM = '0123456789abcdefghijklmnopqrstuvwxyz'
function int2char(n2) {
return BI_RM.charAt(n2)
}
function op_and(x2, y2) {
return x2 & y2
}
function op_or(x2, y2) {
return x2 | y2
}
function op_xor(x2, y2) {
return x2 ^ y2
}
function op_andnot(x2, y2) {
return x2 & ~y2
}
function lbit(x2) {
if (x2 == 0) {
return -1
}
var r2 = 0
if ((x2 & 65535) == 0) {
x2 >>= 16
r2 += 16
}
if ((x2 & 255) == 0) {
x2 >>= 8
r2 += 8
}
if ((x2 & 15) == 0) {
x2 >>= 4
r2 += 4
}
if ((x2 & 3) == 0) {
x2 >>= 2
r2 += 2
}
if ((x2 & 1) == 0) {
++r2
}
return r2
}
function cbit(x2) {
var r2 = 0
while (x2 != 0) {
x2 &= x2 - 1
++r2
}
return r2
}
var b64map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
var b64pad = '='
function hex2b64(h2) {
var i2
var c2
var ret = ''
for (i2 = 0; i2 + 3 <= h2.length; i2 += 3) {
c2 = parseInt(h2.substring(i2, i2 + 3), 16)
ret += b64map.charAt(c2 >> 6) + b64map.charAt(c2 & 63)
}
if (i2 + 1 == h2.length) {
c2 = parseInt(h2.substring(i2, i2 + 1), 16)
ret += b64map.charAt(c2 << 2)
} else if (i2 + 2 == h2.length) {
c2 = parseInt(h2.substring(i2, i2 + 2), 16)
ret += b64map.charAt(c2 >> 2) + b64map.charAt((c2 & 3) << 4)
}
while ((ret.length & 3) > 0) {
ret += b64pad
}
return ret
}
function b64tohex(s2) {
var ret = ''
var i2
var k2 = 0
var slop = 0
for (i2 = 0; i2 < s2.length; ++i2) {
if (s2.charAt(i2) == b64pad) {
break
}
var v4 = b64map.indexOf(s2.charAt(i2))
if (v4 < 0) {
continue
}
if (k2 == 0) {
ret += int2char(v4 >> 2)
slop = v4 & 3
k2 = 1
} else if (k2 == 1) {
ret += int2char((slop << 2) | (v4 >> 4))
slop = v4 & 15
k2 = 2
} else if (k2 == 2) {
ret += int2char(slop)
ret += int2char(v4 >> 2)
slop = v4 & 3
k2 = 3
} else {
ret += int2char((slop << 2) | (v4 >> 4))
ret += int2char(v4 & 15)
k2 = 0
}
}
if (k2 == 1) {
ret += int2char(slop << 2)
}
return ret
}
var decoder$1
var Hex = {
decode: function (a2) {
var i2
if (decoder$1 === void 0) {
var hex2 = '0123456789ABCDEF'
var ignore = ' \f\n\r \xA0\u2028\u2029'
decoder$1 = {}
for (i2 = 0; i2 < 16; ++i2) {
decoder$1[hex2.charAt(i2)] = i2
}
hex2 = hex2.toLowerCase()
for (i2 = 10; i2 < 16; ++i2) {
decoder$1[hex2.charAt(i2)] = i2
}
for (i2 = 0; i2 < ignore.length; ++i2) {
decoder$1[ignore.charAt(i2)] = -1
}
}
var out2 = []
var bits2 = 0
var char_count = 0
for (i2 = 0; i2 < a2.length; ++i2) {
var c2 = a2.charAt(i2)
if (c2 == '=') {
break
}
c2 = decoder$1[c2]
if (c2 == -1) {
continue
}
if (c2 === void 0) {
throw new Error('Illegal character at offset ' + i2)
}
bits2 |= c2
if (++char_count >= 2) {
out2[out2.length] = bits2
bits2 = 0
char_count = 0
} else {
bits2 <<= 4
}
}
if (char_count) {
throw new Error('Hex encoding incomplete: 4 bits missing')
}
return out2
},
}
var decoder
var Base64 = {
decode: function (a2) {
var i2
if (decoder === void 0) {
var b64 =
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
var ignore = '= \f\n\r \xA0\u2028\u2029'
decoder = /* @__PURE__ */ Object.create(null)
for (i2 = 0; i2 < 64; ++i2) {
decoder[b64.charAt(i2)] = i2
}
decoder['-'] = 62
decoder['_'] = 63
for (i2 = 0; i2 < ignore.length; ++i2) {
decoder[ignore.charAt(i2)] = -1
}
}
var out2 = []
var bits2 = 0
var char_count = 0
for (i2 = 0; i2 < a2.length; ++i2) {
var c2 = a2.charAt(i2)
if (c2 == '=') {
break
}
c2 = decoder[c2]
if (c2 == -1) {
continue
}
if (c2 === void 0) {
throw new Error('Illegal character at offset ' + i2)
}
bits2 |= c2
if (++char_count >= 4) {
out2[out2.length] = bits2 >> 16
out2[out2.length] = (bits2 >> 8) & 255
out2[out2.length] = bits2 & 255
bits2 = 0
char_count = 0
} else {
bits2 <<= 6
}
}
switch (char_count) {
case 1:
throw new Error('Base64 encoding incomplete: at least 2 bits missing')
case 2:
out2[out2.length] = bits2 >> 10
break
case 3:
out2[out2.length] = bits2 >> 16
out2[out2.length] = (bits2 >> 8) & 255
break
}
return out2
},
re: /-----BEGIN [^-]+-----([A-Za-z0-9+\/=\s]+)-----END [^-]+-----|begin-base64[^\n]+\n([A-Za-z0-9+\/=\s]+)====/,
unarmor: function (a2) {
var m2 = Base64.re.exec(a2)
if (m2) {
if (m2[1]) {
a2 = m2[1]
} else if (m2[2]) {
a2 = m2[2]
} else {
throw new Error('RegExp out of sync')
}
}
return Base64.decode(a2)
},
}
var max = 1e13
var Int10 = (function () {
function Int102(value2) {
this.buf = [+value2 || 0]
}
Int102.prototype.mulAdd = function (m2, c2) {
var b2 = this.buf
var l2 = b2.length
var i2
var t3
for (i2 = 0; i2 < l2; ++i2) {
t3 = b2[i2] * m2 + c2
if (t3 < max) {
c2 = 0
} else {
c2 = 0 | (t3 / max)
t3 -= c2 * max
}
b2[i2] = t3
}
if (c2 > 0) {
b2[i2] = c2
}
}
Int102.prototype.sub = function (c2) {
var b2 = this.buf
var l2 = b2.length
var i2
var t3
for (i2 = 0; i2 < l2; ++i2) {
t3 = b2[i2] - c2
if (t3 < 0) {
t3 += max
c2 = 1
} else {
c2 = 0
}
b2[i2] = t3
}
while (b2[b2.length - 1] === 0) {
b2.pop()
}
}
Int102.prototype.toString = function (base2) {
if ((base2 || 10) != 10) {
throw new Error('only base 10 is supported')
}
var b2 = this.buf
var s2 = b2[b2.length - 1].toString()
for (var i2 = b2.length - 2; i2 >= 0; --i2) {
s2 += (max + b2[i2]).toString().substring(1)
}
return s2
}
Int102.prototype.valueOf = function () {
var b2 = this.buf
var v4 = 0
for (var i2 = b2.length - 1; i2 >= 0; --i2) {
v4 = v4 * max + b2[i2]
}
return v4
}
Int102.prototype.simplify = function () {
var b2 = this.buf
return b2.length == 1 ? b2[0] : this
}
return Int102
})()
var ellipsis = '\u2026'
var reTimeS =
/^(\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/
var reTimeL =
/^(\d\d\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/
function stringCut(str, len2) {
if (str.length > len2) {
str = str.substring(0, len2) + ellipsis
}
return str
}
var Stream = (function () {
function Stream2(enc, pos) {
this.hexDigits = '0123456789ABCDEF'
if (enc instanceof Stream2) {
this.enc = enc.enc
this.pos = enc.pos
} else {
this.enc = enc
this.pos = pos
}
}
Stream2.prototype.get = function (pos) {
if (pos === void 0) {
pos = this.pos++
}
if (pos >= this.enc.length) {
throw new Error(
'Requesting byte offset '
.concat(pos, ' on a stream of length ')
.concat(this.enc.length)
)
}
return 'string' === typeof this.enc
? this.enc.charCodeAt(pos)
: this.enc[pos]
}
Stream2.prototype.hexByte = function (b2) {
return (
this.hexDigits.charAt((b2 >> 4) & 15) + this.hexDigits.charAt(b2 & 15)
)
}
Stream2.prototype.hexDump = function (start2, end2, raw) {
var s2 = ''
for (var i2 = start2; i2 < end2; ++i2) {
s2 += this.hexByte(this.get(i2))
if (raw !== true) {
switch (i2 & 15) {
case 7:
s2 += ' '
break
case 15:
s2 += '\n'
break
default:
s2 += ' '
}
}
}
return s2
}
Stream2.prototype.isASCII = function (start2, end2) {
for (var i2 = start2; i2 < end2; ++i2) {
var c2 = this.get(i2)
if (c2 < 32 || c2 > 176) {
return false
}
}
return true
}
Stream2.prototype.parseStringISO = function (start2, end2) {
var s2 = ''
for (var i2 = start2; i2 < end2; ++i2) {
s2 += String.fromCharCode(this.get(i2))
}
return s2
}
Stream2.prototype.parseStringUTF = function (start2, end2) {
var s2 = ''
for (var i2 = start2; i2 < end2; ) {
var c2 = this.get(i2++)
if (c2 < 128) {
s2 += String.fromCharCode(c2)
} else if (c2 > 191 && c2 < 224) {
s2 += String.fromCharCode(((c2 & 31) << 6) | (this.get(i2++) & 63))
} else {
s2 += String.fromCharCode(
((c2 & 15) << 12) |
((this.get(i2++) & 63) << 6) |
(this.get(i2++) & 63)
)
}
}
return s2
}
Stream2.prototype.parseStringBMP = function (start2, end2) {
var str = ''
var hi
var lo
for (var i2 = start2; i2 < end2; ) {
hi = this.get(i2++)
lo = this.get(i2++)
str += String.fromCharCode((hi << 8) | lo)
}
return str
}
Stream2.prototype.parseTime = function (start2, end2, shortYear) {
var s2 = this.parseStringISO(start2, end2)
var m2 = (shortYear ? reTimeS : reTimeL).exec(s2)
if (!m2) {
return 'Unrecognized time: ' + s2
}
if (shortYear) {
m2[1] = +m2[1]
m2[1] += +m2[1] < 70 ? 2e3 : 1900
}
s2 = m2[1] + '-' + m2[2] + '-' + m2[3] + ' ' + m2[4]
if (m2[5]) {
s2 += ':' + m2[5]
if (m2[6]) {
s2 += ':' + m2[6]
if (m2[7]) {
s2 += '.' + m2[7]
}
}
}
if (m2[8]) {
s2 += ' UTC'
if (m2[8] != 'Z') {
s2 += m2[8]
if (m2[9]) {
s2 += ':' + m2[9]
}
}
}
return s2
}
Stream2.prototype.parseInteger = function (start2, end2) {
var v4 = this.get(start2)
var neg = v4 > 127
var pad3 = neg ? 255 : 0
var len2
var s2 = ''
while (v4 == pad3 && ++start2 < end2) {
v4 = this.get(start2)
}
len2 = end2 - start2
if (len2 === 0) {
return neg ? -1 : 0
}
if (len2 > 4) {
s2 = v4
len2 <<= 3
while (((+s2 ^ pad3) & 128) == 0) {
s2 = +s2 << 1
--len2
}
s2 = '(' + len2 + ' bit)\n'
}
if (neg) {
v4 = v4 - 256
}
var n2 = new Int10(v4)
for (var i2 = start2 + 1; i2 < end2; ++i2) {
n2.mulAdd(256, this.get(i2))
}
return s2 + n2.toString()
}
Stream2.prototype.parseBitString = function (start2, end2, maxLength) {
var unusedBit = this.get(start2)
var lenBit = ((end2 - start2 - 1) << 3) - unusedBit
var intro = '(' + lenBit + ' bit)\n'
var s2 = ''
for (var i2 = start2 + 1; i2 < end2; ++i2) {
var b2 = this.get(i2)
var skip = i2 == end2 - 1 ? unusedBit : 0
for (var j2 = 7; j2 >= skip; --j2) {
s2 += (b2 >> j2) & 1 ? '1' : '0'
}
if (s2.length > maxLength) {
return intro + stringCut(s2, maxLength)
}
}
return intro + s2
}
Stream2.prototype.parseOctetString = function (start2, end2, maxLength) {
if (this.isASCII(start2, end2)) {
return stringCut(this.parseStringISO(start2, end2), maxLength)
}
var len2 = end2 - start2
var s2 = '(' + len2 + ' byte)\n'
maxLength /= 2
if (len2 > maxLength) {
end2 = start2 + maxLength
}
for (var i2 = start2; i2 < end2; ++i2) {
s2 += this.hexByte(this.get(i2))
}
if (len2 > maxLength) {
s2 += ellipsis
}
return s2
}
Stream2.prototype.parseOID = function (start2, end2, maxLength) {
var s2 = ''
var n2 = new Int10()
var bits2 = 0
for (var i2 = start2; i2 < end2; ++i2) {
var v4 = this.get(i2)
n2.mulAdd(128, v4 & 127)
bits2 += 7
if (!(v4 & 128)) {
if (s2 === '') {
n2 = n2.simplify()
if (n2 instanceof Int10) {
n2.sub(80)
s2 = '2.' + n2.toString()
} else {
var m2 = n2 < 80 ? (n2 < 40 ? 0 : 1) : 2
s2 = m2 + '.' + (n2 - m2 * 40)
}
} else {
s2 += '.' + n2.toString()
}
if (s2.length > maxLength) {
return stringCut(s2, maxLength)
}
n2 = new Int10()
bits2 = 0
}
}
if (bits2 > 0) {
s2 += '.incomplete'
}
return s2
}
return Stream2
})()
var ASN1 = (function () {
function ASN12(stream, header, length2, tag, sub2) {
if (!(tag instanceof ASN1Tag)) {
throw new Error('Invalid tag value.')
}
this.stream = stream
this.header = header
this.length = length2
this.tag = tag
this.sub = sub2
}
ASN12.prototype.typeName = function () {
switch (this.tag.tagClass) {
case 0:
switch (this.tag.tagNumber) {
case 0:
return 'EOC'
case 1:
return 'BOOLEAN'
case 2:
return 'INTEGER'
case 3:
return 'BIT_STRING'
case 4:
return 'OCTET_STRING'
case 5:
return 'NULL'
case 6:
return 'OBJECT_IDENTIFIER'
case 7:
return 'ObjectDescriptor'
case 8:
return 'EXTERNAL'
case 9:
return 'REAL'
case 10:
return 'ENUMERATED'
case 11:
return 'EMBEDDED_PDV'
case 12:
return 'UTF8String'
case 16:
return 'SEQUENCE'
case 17:
return 'SET'
case 18:
return 'NumericString'
case 19:
return 'PrintableString'
case 20:
return 'TeletexString'
case 21:
return 'VideotexString'
case 22:
return 'IA5String'
case 23:
return 'UTCTime'
case 24:
return 'GeneralizedTime'
case 25:
return 'GraphicString'
case 26:
return 'VisibleString'
case 27:
return 'GeneralString'
case 28:
return 'UniversalString'
case 30:
return 'BMPString'
}
return 'Universal_' + this.tag.tagNumber.toString()
case 1:
return 'Application_' + this.tag.tagNumber.toString()
case 2:
return '[' + this.tag.tagNumber.toString() + ']'
case 3:
return 'Private_' + this.tag.tagNumber.toString()
}
}
ASN12.prototype.content = function (maxLength) {
if (this.tag === void 0) {
return null
}
if (maxLength === void 0) {
maxLength = Infinity
}
var content2 = this.posContent()
var len2 = Math.abs(this.length)
if (!this.tag.isUniversal()) {
if (this.sub !== null) {
return '(' + this.sub.length + ' elem)'
}
return this.stream.parseOctetString(content2, content2 + len2, maxLength)
}
switch (this.tag.tagNumber) {
case 1:
return this.stream.get(content2) === 0 ? 'false' : 'true'
case 2:
return this.stream.parseInteger(content2, content2 + len2)
case 3:
return this.sub
? '(' + this.sub.length + ' elem)'
: this.stream.parseBitString(content2, content2 + len2, maxLength)
case 4:
return this.sub
? '(' + this.sub.length + ' elem)'
: this.stream.parseOctetString(content2, content2 + len2, maxLength)
case 6:
return this.stream.parseOID(content2, content2 + len2, maxLength)
case 16:
case 17:
if (this.sub !== null) {
return '(' + this.sub.length + ' elem)'
} else {
return '(no elem)'
}
case 12:
return stringCut(
this.stream.parseStringUTF(content2, content2 + len2),
maxLength
)
case 18:
case 19:
case 20:
case 21:
case 22:
case 26:
return stringCut(
this.stream.parseStringISO(content2, content2 + len2),
maxLength
)
case 30:
return stringCut(
this.stream.parseStringBMP(content2, content2 + len2),
maxLength
)
case 23:
case 24:
return this.stream.parseTime(
content2,
content2 + len2,
this.tag.tagNumber == 23
)
}
return null
}
ASN12.prototype.toString = function () {
return (
this.typeName() +
'@' +
this.stream.pos +
'[header:' +
this.header +
',length:' +
this.length +
',sub:' +
(this.sub === null ? 'null' : this.sub.length) +
']'
)
}
ASN12.prototype.toPrettyString = function (indent) {
if (indent === void 0) {
indent = ''
}
var s2 = indent + this.typeName() + ' @' + this.stream.pos
if (this.length >= 0) {
s2 += '+'
}
s2 += this.length
if (this.tag.tagConstructed) {
s2 += ' (constructed)'
} else if (
this.tag.isUniversal() &&
(this.tag.tagNumber == 3 || this.tag.tagNumber == 4) &&
this.sub !== null
) {
s2 += ' (encapsulates)'
}
s2 += '\n'
if (this.sub !== null) {
indent += ' '
for (var i2 = 0, max3 = this.sub.length; i2 < max3; ++i2) {
s2 += this.sub[i2].toPrettyString(indent)
}
}
return s2
}
ASN12.prototype.posStart = function () {
return this.stream.pos
}
ASN12.prototype.posContent = function () {
return this.stream.pos + this.header
}
ASN12.prototype.posEnd = function () {
return this.stream.pos + this.header + Math.abs(this.length)
}
ASN12.prototype.toHexString = function () {
return this.stream.hexDump(this.posStart(), this.posEnd(), true)
}
ASN12.decodeLength = function (stream) {
var buf = stream.get()
var len2 = buf & 127
if (len2 == buf) {
return len2
}
if (len2 > 6) {
throw new Error(
'Length over 48 bits not supported at position ' + (stream.pos - 1)
)
}
if (len2 === 0) {
return null
}
buf = 0
for (var i2 = 0; i2 < len2; ++i2) {
buf = buf * 256 + stream.get()
}
return buf
}
ASN12.prototype.getHexStringValue = function () {
var hexString = this.toHexString()
var offset2 = this.header * 2
var length2 = this.length * 2
return hexString.substr(offset2, length2)
}
ASN12.decode = function (str) {
var stream
if (!(str instanceof Stream)) {
stream = new Stream(str, 0)
} else {
stream = str
}
var streamStart = new Stream(stream)
var tag = new ASN1Tag(stream)
var len2 = ASN12.decodeLength(stream)
var start2 = stream.pos
var header = start2 - streamStart.pos
var sub2 = null
var getSub = function () {
var ret = []
if (len2 !== null) {
var end2 = start2 + len2
while (stream.pos < end2) {
ret[ret.length] = ASN12.decode(stream)
}
if (stream.pos != end2) {
throw new Error(
'Content size is not correct for container starting at offset ' +
start2
)
}
} else {
try {
for (;;) {
var s2 = ASN12.decode(stream)
if (s2.tag.isEOC()) {
break
}
ret[ret.length] = s2
}
len2 = start2 - stream.pos
} catch (e2) {
throw new Error(
'Exception while decoding undefined length content: ' + e2
)
}
}
return ret
}
if (tag.tagConstructed) {
sub2 = getSub()
} else if (
tag.isUniversal() &&
(tag.tagNumber == 3 || tag.tagNumber == 4)
) {
try {
if (tag.tagNumber == 3) {
if (stream.get() != 0) {
throw new Error('BIT STRINGs with unused bits cannot encapsulate.')
}
}
sub2 = getSub()
for (var i2 = 0; i2 < sub2.length; ++i2) {
if (sub2[i2].tag.isEOC()) {
throw new Error('EOC is not supposed to be actual content.')
}
}
} catch (e2) {
sub2 = null
}
}
if (sub2 === null) {
if (len2 === null) {
throw new Error(
"We can't skip over an invalid tag with undefined length at offset " +
start2
)
}
stream.pos = start2 + Math.abs(len2)
}
return new ASN12(streamStart, header, len2, tag, sub2)
}
return ASN12
})()
var ASN1Tag = (function () {
function ASN1Tag2(stream) {
var buf = stream.get()
this.tagClass = buf >> 6
this.tagConstructed = (buf & 32) !== 0
this.tagNumber = buf & 31
if (this.tagNumber == 31) {
var n2 = new Int10()
do {
buf = stream.get()
n2.mulAdd(128, buf & 127)
} while (buf & 128)
this.tagNumber = n2.simplify()
}
}
ASN1Tag2.prototype.isUniversal = function () {
return this.tagClass === 0
}
ASN1Tag2.prototype.isEOC = function () {
return this.tagClass === 0 && this.tagNumber === 0
}
return ASN1Tag2
})()
var dbits
var canary = 244837814094590
var j_lm = (canary & 16777215) == 15715070
var lowprimes = [
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71,
73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,
157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233,
239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317,
331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419,
421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503,
509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607,
613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701,
709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811,
821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911,
919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997,
]
var lplim = (1 << 26) / lowprimes[lowprimes.length - 1]
var BigInteger = (function () {
function BigInteger2(a2, b2, c2) {
if (a2 != null) {
if ('number' == typeof a2) {
this.fromNumber(a2, b2, c2)
} else if (b2 == null && 'string' != typeof a2) {
this.fromString(a2, 256)
} else {
this.fromString(a2, b2)
}
}
}
BigInteger2.prototype.toString = function (b2) {
if (this.s < 0) {
return '-' + this.negate().toString(b2)
}
var k2
if (b2 == 16) {
k2 = 4
} else if (b2 == 8) {
k2 = 3
} else if (b2 == 2) {
k2 = 1
} else if (b2 == 32) {
k2 = 5
} else if (b2 == 4) {
k2 = 2
} else {
return this.toRadix(b2)
}
var km2 = (1 << k2) - 1
var d3
var m2 = false
var r2 = ''
var i2 = this.t
var p2 = this.DB - ((i2 * this.DB) % k2)
if (i2-- > 0) {
if (p2 < this.DB && (d3 = this[i2] >> p2) > 0) {
m2 = true
r2 = int2char(d3)
}
while (i2 >= 0) {
if (p2 < k2) {
d3 = (this[i2] & ((1 << p2) - 1)) << (k2 - p2)
d3 |= this[--i2] >> (p2 += this.DB - k2)
} else {
d3 = (this[i2] >> (p2 -= k2)) & km2
if (p2 <= 0) {
p2 += this.DB
--i2
}
}
if (d3 > 0) {
m2 = true
}
if (m2) {
r2 += int2char(d3)
}
}
}
return m2 ? r2 : '0'
}
BigInteger2.prototype.negate = function () {
var r2 = nbi()
BigInteger2.ZERO.subTo(this, r2)
return r2
}
BigInteger2.prototype.abs = function () {
return this.s < 0 ? this.negate() : this
}
BigInteger2.prototype.compareTo = function (a2) {
var r2 = this.s - a2.s
if (r2 != 0) {
return r2
}
var i2 = this.t
r2 = i2 - a2.t
if (r2 != 0) {
return this.s < 0 ? -r2 : r2
}
while (--i2 >= 0) {
if ((r2 = this[i2] - a2[i2]) != 0) {
return r2
}
}
return 0
}
BigInteger2.prototype.bitLength = function () {
if (this.t <= 0) {
return 0
}
return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM))
}
BigInteger2.prototype.mod = function (a2) {
var r2 = nbi()
this.abs().divRemTo(a2, null, r2)
if (this.s < 0 && r2.compareTo(BigInteger2.ZERO) > 0) {
a2.subTo(r2, r2)
}
return r2
}
BigInteger2.prototype.modPowInt = function (e2, m2) {
var z2
if (e2 < 256 || m2.isEven()) {
z2 = new Classic(m2)
} else {
z2 = new Montgomery(m2)
}
return this.exp(e2, z2)
}
BigInteger2.prototype.clone = function () {
var r2 = nbi()
this.copyTo(r2)
return r2
}
BigInteger2.prototype.intValue = function () {
if (this.s < 0) {
if (this.t == 1) {
return this[0] - this.DV
} else if (this.t == 0) {
return -1
}
} else if (this.t == 1) {
return this[0]
} else if (this.t == 0) {
return 0
}
return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0]
}
BigInteger2.prototype.byteValue = function () {
return this.t == 0 ? this.s : (this[0] << 24) >> 24
}
BigInteger2.prototype.shortValue = function () {
return this.t == 0 ? this.s : (this[0] << 16) >> 16
}
BigInteger2.prototype.signum = function () {
if (this.s < 0) {
return -1
} else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) {
return 0
} else {
return 1
}
}
BigInteger2.prototype.toByteArray = function () {
var i2 = this.t
var r2 = []
r2[0] = this.s
var p2 = this.DB - ((i2 * this.DB) % 8)
var d3
var k2 = 0
if (i2-- > 0) {
if (p2 < this.DB && (d3 = this[i2] >> p2) != (this.s & this.DM) >> p2) {
r2[k2++] = d3 | (this.s << (this.DB - p2))
}
while (i2 >= 0) {
if (p2 < 8) {
d3 = (this[i2] & ((1 << p2) - 1)) << (8 - p2)
d3 |= this[--i2] >> (p2 += this.DB - 8)
} else {
d3 = (this[i2] >> (p2 -= 8)) & 255
if (p2 <= 0) {
p2 += this.DB
--i2
}
}
if ((d3 & 128) != 0) {
d3 |= -256
}
if (k2 == 0 && (this.s & 128) != (d3 & 128)) {
++k2
}
if (k2 > 0 || d3 != this.s) {
r2[k2++] = d3
}
}
}
return r2
}
BigInteger2.prototype.equals = function (a2) {
return this.compareTo(a2) == 0
}
BigInteger2.prototype.min = function (a2) {
return this.compareTo(a2) < 0 ? this : a2
}
BigInteger2.prototype.max = function (a2) {
return this.compareTo(a2) > 0 ? this : a2
}
BigInteger2.prototype.and = function (a2) {
var r2 = nbi()
this.bitwiseTo(a2, op_and, r2)
return r2
}
BigInteger2.prototype.or = function (a2) {
var r2 = nbi()
this.bitwiseTo(a2, op_or, r2)
return r2
}
BigInteger2.prototype.xor = function (a2) {
var r2 = nbi()
this.bitwiseTo(a2, op_xor, r2)
return r2
}
BigInteger2.prototype.andNot = function (a2) {
var r2 = nbi()
this.bitwiseTo(a2, op_andnot, r2)
return r2
}
BigInteger2.prototype.not = function () {
var r2 = nbi()
for (var i2 = 0; i2 < this.t; ++i2) {
r2[i2] = this.DM & ~this[i2]
}
r2.t = this.t
r2.s = ~this.s
return r2
}
BigInteger2.prototype.shiftLeft = function (n2) {
var r2 = nbi()
if (n2 < 0) {
this.rShiftTo(-n2, r2)
} else {
this.lShiftTo(n2, r2)
}
return r2
}
BigInteger2.prototype.shiftRight = function (n2) {
var r2 = nbi()
if (n2 < 0) {
this.lShiftTo(-n2, r2)
} else {
this.rShiftTo(n2, r2)
}
return r2
}
BigInteger2.prototype.getLowestSetBit = function () {
for (var i2 = 0; i2 < this.t; ++i2) {
if (this[i2] != 0) {
return i2 * this.DB + lbit(this[i2])
}
}
if (this.s < 0) {
return this.t * this.DB
}
return -1
}
BigInteger2.prototype.bitCount = function () {
var r2 = 0
var x2 = this.s & this.DM
for (var i2 = 0; i2 < this.t; ++i2) {
r2 += cbit(this[i2] ^ x2)
}
return r2
}
BigInteger2.prototype.testBit = function (n2) {
var j2 = Math.floor(n2 / this.DB)
if (j2 >= this.t) {
return this.s != 0
}
return (this[j2] & (1 << n2 % this.DB)) != 0
}
BigInteger2.prototype.setBit = function (n2) {
return this.changeBit(n2, op_or)
}
BigInteger2.prototype.clearBit = function (n2) {
return this.changeBit(n2, op_andnot)
}
BigInteger2.prototype.flipBit = function (n2) {
return this.changeBit(n2, op_xor)
}
BigInteger2.prototype.add = function (a2) {
var r2 = nbi()
this.addTo(a2, r2)
return r2
}
BigInteger2.prototype.subtract = function (a2) {
var r2 = nbi()
this.subTo(a2, r2)
return r2
}
BigInteger2.prototype.multiply = function (a2) {
var r2 = nbi()
this.multiplyTo(a2, r2)
return r2
}
BigInteger2.prototype.divide = function (a2) {
var r2 = nbi()
this.divRemTo(a2, r2, null)
return r2
}
BigInteger2.prototype.remainder = function (a2) {
var r2 = nbi()
this.divRemTo(a2, null, r2)
return r2
}
BigInteger2.prototype.divideAndRemainder = function (a2) {
var q2 = nbi()
var r2 = nbi()
this.divRemTo(a2, q2, r2)
return [q2, r2]
}
BigInteger2.prototype.modPow = function (e2, m2) {
var i2 = e2.bitLength()
var k2
var r2 = nbv(1)
var z2
if (i2 <= 0) {
return r2
} else if (i2 < 18) {
k2 = 1
} else if (i2 < 48) {
k2 = 3
} else if (i2 < 144) {
k2 = 4
} else if (i2 < 768) {
k2 = 5
} else {
k2 = 6
}
if (i2 < 8) {
z2 = new Classic(m2)
} else if (m2.isEven()) {
z2 = new Barrett(m2)
} else {
z2 = new Montgomery(m2)
}
var g2 = []
var n2 = 3
var k1 = k2 - 1
var km2 = (1 << k2) - 1
g2[1] = z2.convert(this)
if (k2 > 1) {
var g22 = nbi()
z2.sqrTo(g2[1], g22)
while (n2 <= km2) {
g2[n2] = nbi()
z2.mulTo(g22, g2[n2 - 2], g2[n2])
n2 += 2
}
}
var j2 = e2.t - 1
var w2
var is1 = true
var r22 = nbi()
var t3
i2 = nbits(e2[j2]) - 1
while (j2 >= 0) {
if (i2 >= k1) {
w2 = (e2[j2] >> (i2 - k1)) & km2
} else {
w2 = (e2[j2] & ((1 << (i2 + 1)) - 1)) << (k1 - i2)
if (j2 > 0) {
w2 |= e2[j2 - 1] >> (this.DB + i2 - k1)
}
}
n2 = k2
while ((w2 & 1) == 0) {
w2 >>= 1
--n2
}
if ((i2 -= n2) < 0) {
i2 += this.DB
--j2
}
if (is1) {
g2[w2].copyTo(r2)
is1 = false
} else {
while (n2 > 1) {
z2.sqrTo(r2, r22)
z2.sqrTo(r22, r2)
n2 -= 2
}
if (n2 > 0) {
z2.sqrTo(r2, r22)
} else {
t3 = r2
r2 = r22
r22 = t3
}
z2.mulTo(r22, g2[w2], r2)
}
while (j2 >= 0 && (e2[j2] & (1 << i2)) == 0) {
z2.sqrTo(r2, r22)
t3 = r2
r2 = r22
r22 = t3
if (--i2 < 0) {
i2 = this.DB - 1
--j2
}
}
}
return z2.revert(r2)
}
BigInteger2.prototype.modInverse = function (m2) {
var ac = m2.isEven()
if ((this.isEven() && ac) || m2.signum() == 0) {
return BigInteger2.ZERO
}
var u2 = m2.clone()
var v4 = this.clone()
var a2 = nbv(1)
var b2 = nbv(0)
var c2 = nbv(0)
var d3 = nbv(1)
while (u2.signum() != 0) {
while (u2.isEven()) {
u2.rShiftTo(1, u2)
if (ac) {
if (!a2.isEven() || !b2.isEven()) {
a2.addTo(this, a2)
b2.subTo(m2, b2)
}
a2.rShiftTo(1, a2)
} else if (!b2.isEven()) {
b2.subTo(m2, b2)
}
b2.rShiftTo(1, b2)
}
while (v4.isEven()) {
v4.rShiftTo(1, v4)
if (ac) {
if (!c2.isEven() || !d3.isEven()) {
c2.addTo(this, c2)
d3.subTo(m2, d3)
}
c2.rShiftTo(1, c2)
} else if (!d3.isEven()) {
d3.subTo(m2, d3)
}
d3.rShiftTo(1, d3)
}
if (u2.compareTo(v4) >= 0) {
u2.subTo(v4, u2)
if (ac) {
a2.subTo(c2, a2)
}
b2.subTo(d3, b2)
} else {
v4.subTo(u2, v4)
if (ac) {
c2.subTo(a2, c2)
}
d3.subTo(b2, d3)
}
}
if (v4.compareTo(BigInteger2.ONE) != 0) {
return BigInteger2.ZERO
}
if (d3.compareTo(m2) >= 0) {
return d3.subtract(m2)
}
if (d3.signum() < 0) {
d3.addTo(m2, d3)
} else {
return d3
}
if (d3.signum() < 0) {
return d3.add(m2)
} else {
return d3
}
}
BigInteger2.prototype.pow = function (e2) {
return this.exp(e2, new NullExp())
}
BigInteger2.prototype.gcd = function (a2) {
var x2 = this.s < 0 ? this.negate() : this.clone()
var y2 = a2.s < 0 ? a2.negate() : a2.clone()
if (x2.compareTo(y2) < 0) {
var t3 = x2
x2 = y2
y2 = t3
}
var i2 = x2.getLowestSetBit()
var g2 = y2.getLowestSetBit()
if (g2 < 0) {
return x2
}
if (i2 < g2) {
g2 = i2
}
if (g2 > 0) {
x2.rShiftTo(g2, x2)
y2.rShiftTo(g2, y2)
}
while (x2.signum() > 0) {
if ((i2 = x2.getLowestSetBit()) > 0) {
x2.rShiftTo(i2, x2)
}
if ((i2 = y2.getLowestSetBit()) > 0) {
y2.rShiftTo(i2, y2)
}
if (x2.compareTo(y2) >= 0) {
x2.subTo(y2, x2)
x2.rShiftTo(1, x2)
} else {
y2.subTo(x2, y2)
y2.rShiftTo(1, y2)
}
}
if (g2 > 0) {
y2.lShiftTo(g2, y2)
}
return y2
}
BigInteger2.prototype.isProbablePrime = function (t3) {
var i2
var x2 = this.abs()
if (x2.t == 1 && x2[0] <= lowprimes[lowprimes.length - 1]) {
for (i2 = 0; i2 < lowprimes.length; ++i2) {
if (x2[0] == lowprimes[i2]) {
return true
}
}
return false
}
if (x2.isEven()) {
return false
}
i2 = 1
while (i2 < lowprimes.length) {
var m2 = lowprimes[i2]
var j2 = i2 + 1
while (j2 < lowprimes.length && m2 < lplim) {
m2 *= lowprimes[j2++]
}
m2 = x2.modInt(m2)
while (i2 < j2) {
if (m2 % lowprimes[i2++] == 0) {
return false
}
}
}
return x2.millerRabin(t3)
}
BigInteger2.prototype.copyTo = function (r2) {
for (var i2 = this.t - 1; i2 >= 0; --i2) {
r2[i2] = this[i2]
}
r2.t = this.t
r2.s = this.s
}
BigInteger2.prototype.fromInt = function (x2) {
this.t = 1
this.s = x2 < 0 ? -1 : 0
if (x2 > 0) {
this[0] = x2
} else if (x2 < -1) {
this[0] = x2 + this.DV
} else {
this.t = 0
}
}
BigInteger2.prototype.fromString = function (s2, b2) {
var k2
if (b2 == 16) {
k2 = 4
} else if (b2 == 8) {
k2 = 3
} else if (b2 == 256) {
k2 = 8
} else if (b2 == 2) {
k2 = 1
} else if (b2 == 32) {
k2 = 5
} else if (b2 == 4) {
k2 = 2
} else {
this.fromRadix(s2, b2)
return
}
this.t = 0
this.s = 0
var i2 = s2.length
var mi = false
var sh = 0
while (--i2 >= 0) {
var x2 = k2 == 8 ? +s2[i2] & 255 : intAt(s2, i2)
if (x2 < 0) {
if (s2.charAt(i2) == '-') {
mi = true
}
continue
}
mi = false
if (sh == 0) {
this[this.t++] = x2
} else if (sh + k2 > this.DB) {
this[this.t - 1] |= (x2 & ((1 << (this.DB - sh)) - 1)) << sh
this[this.t++] = x2 >> (this.DB - sh)
} else {
this[this.t - 1] |= x2 << sh
}
sh += k2
if (sh >= this.DB) {
sh -= this.DB
}
}
if (k2 == 8 && (+s2[0] & 128) != 0) {
this.s = -1
if (sh > 0) {
this[this.t - 1] |= ((1 << (this.DB - sh)) - 1) << sh
}
}
this.clamp()
if (mi) {
BigInteger2.ZERO.subTo(this, this)
}
}
BigInteger2.prototype.clamp = function () {
var c2 = this.s & this.DM
while (this.t > 0 && this[this.t - 1] == c2) {
--this.t
}
}
BigInteger2.prototype.dlShiftTo = function (n2, r2) {
var i2
for (i2 = this.t - 1; i2 >= 0; --i2) {
r2[i2 + n2] = this[i2]
}
for (i2 = n2 - 1; i2 >= 0; --i2) {
r2[i2] = 0
}
r2.t = this.t + n2
r2.s = this.s
}
BigInteger2.prototype.drShiftTo = function (n2, r2) {
for (var i2 = n2; i2 < this.t; ++i2) {
r2[i2 - n2] = this[i2]
}
r2.t = Math.max(this.t - n2, 0)
r2.s = this.s
}
BigInteger2.prototype.lShiftTo = function (n2, r2) {
var bs2 = n2 % this.DB
var cbs = this.DB - bs2
var bm = (1 << cbs) - 1
var ds = Math.floor(n2 / this.DB)
var c2 = (this.s << bs2) & this.DM
for (var i2 = this.t - 1; i2 >= 0; --i2) {
r2[i2 + ds + 1] = (this[i2] >> cbs) | c2
c2 = (this[i2] & bm) << bs2
}
for (var i2 = ds - 1; i2 >= 0; --i2) {
r2[i2] = 0
}
r2[ds] = c2
r2.t = this.t + ds + 1
r2.s = this.s
r2.clamp()
}
BigInteger2.prototype.rShiftTo = function (n2, r2) {
r2.s = this.s
var ds = Math.floor(n2 / this.DB)
if (ds >= this.t) {
r2.t = 0
return
}
var bs2 = n2 % this.DB
var cbs = this.DB - bs2
var bm = (1 << bs2) - 1
r2[0] = this[ds] >> bs2
for (var i2 = ds + 1; i2 < this.t; ++i2) {
r2[i2 - ds - 1] |= (this[i2] & bm) << cbs
r2[i2 - ds] = this[i2] >> bs2
}
if (bs2 > 0) {
r2[this.t - ds - 1] |= (this.s & bm) << cbs
}
r2.t = this.t - ds
r2.clamp()
}
BigInteger2.prototype.subTo = function (a2, r2) {
var i2 = 0
var c2 = 0
var m2 = Math.min(a2.t, this.t)
while (i2 < m2) {
c2 += this[i2] - a2[i2]
r2[i2++] = c2 & this.DM
c2 >>= this.DB
}
if (a2.t < this.t) {
c2 -= a2.s
while (i2 < this.t) {
c2 += this[i2]
r2[i2++] = c2 & this.DM
c2 >>= this.DB
}
c2 += this.s
} else {
c2 += this.s
while (i2 < a2.t) {
c2 -= a2[i2]
r2[i2++] = c2 & this.DM
c2 >>= this.DB
}
c2 -= a2.s
}
r2.s = c2 < 0 ? -1 : 0
if (c2 < -1) {
r2[i2++] = this.DV + c2
} else if (c2 > 0) {
r2[i2++] = c2
}
r2.t = i2
r2.clamp()
}
BigInteger2.prototype.multiplyTo = function (a2, r2) {
var x2 = this.abs()
var y2 = a2.abs()
var i2 = x2.t
r2.t = i2 + y2.t
while (--i2 >= 0) {
r2[i2] = 0
}
for (i2 = 0; i2 < y2.t; ++i2) {
r2[i2 + x2.t] = x2.am(0, y2[i2], r2, i2, 0, x2.t)
}
r2.s = 0
r2.clamp()
if (this.s != a2.s) {
BigInteger2.ZERO.subTo(r2, r2)
}
}
BigInteger2.prototype.squareTo = function (r2) {
var x2 = this.abs()
var i2 = (r2.t = 2 * x2.t)
while (--i2 >= 0) {
r2[i2] = 0
}
for (i2 = 0; i2 < x2.t - 1; ++i2) {
var c2 = x2.am(i2, x2[i2], r2, 2 * i2, 0, 1)
if (
(r2[i2 + x2.t] += x2.am(
i2 + 1,
2 * x2[i2],
r2,
2 * i2 + 1,
c2,
x2.t - i2 - 1
)) >= x2.DV
) {
r2[i2 + x2.t] -= x2.DV
r2[i2 + x2.t + 1] = 1
}
}
if (r2.t > 0) {
r2[r2.t - 1] += x2.am(i2, x2[i2], r2, 2 * i2, 0, 1)
}
r2.s = 0
r2.clamp()
}
BigInteger2.prototype.divRemTo = function (m2, q2, r2) {
var pm = m2.abs()
if (pm.t <= 0) {
return
}
var pt3 = this.abs()
if (pt3.t < pm.t) {
if (q2 != null) {
q2.fromInt(0)
}
if (r2 != null) {
this.copyTo(r2)
}
return
}
if (r2 == null) {
r2 = nbi()
}
var y2 = nbi()
var ts = this.s
var ms = m2.s
var nsh = this.DB - nbits(pm[pm.t - 1])
if (nsh > 0) {
pm.lShiftTo(nsh, y2)
pt3.lShiftTo(nsh, r2)
} else {
pm.copyTo(y2)
pt3.copyTo(r2)
}
var ys = y2.t
var y0 = y2[ys - 1]
if (y0 == 0) {
return
}
var yt2 = y0 * (1 << this.F1) + (ys > 1 ? y2[ys - 2] >> this.F2 : 0)
var d1 = this.FV / yt2
var d22 = (1 << this.F1) / yt2
var e2 = 1 << this.F2
var i2 = r2.t
var j2 = i2 - ys
var t3 = q2 == null ? nbi() : q2
y2.dlShiftTo(j2, t3)
if (r2.compareTo(t3) >= 0) {
r2[r2.t++] = 1
r2.subTo(t3, r2)
}
BigInteger2.ONE.dlShiftTo(ys, t3)
t3.subTo(y2, y2)
while (y2.t < ys) {
y2[y2.t++] = 0
}
while (--j2 >= 0) {
var qd =
r2[--i2] == y0
? this.DM
: Math.floor(r2[i2] * d1 + (r2[i2 - 1] + e2) * d22)
if ((r2[i2] += y2.am(0, qd, r2, j2, 0, ys)) < qd) {
y2.dlShiftTo(j2, t3)
r2.subTo(t3, r2)
while (r2[i2] < --qd) {
r2.subTo(t3, r2)
}
}
}
if (q2 != null) {
r2.drShiftTo(ys, q2)
if (ts != ms) {
BigInteger2.ZERO.subTo(q2, q2)
}
}
r2.t = ys
r2.clamp()
if (nsh > 0) {
r2.rShiftTo(nsh, r2)
}
if (ts < 0) {
BigInteger2.ZERO.subTo(r2, r2)
}
}
BigInteger2.prototype.invDigit = function () {
if (this.t < 1) {
return 0
}
var x2 = this[0]
if ((x2 & 1) == 0) {
return 0
}
var y2 = x2 & 3
y2 = (y2 * (2 - (x2 & 15) * y2)) & 15
y2 = (y2 * (2 - (x2 & 255) * y2)) & 255
y2 = (y2 * (2 - (((x2 & 65535) * y2) & 65535))) & 65535
y2 = (y2 * (2 - ((x2 * y2) % this.DV))) % this.DV
return y2 > 0 ? this.DV - y2 : -y2
}
BigInteger2.prototype.isEven = function () {
return (this.t > 0 ? this[0] & 1 : this.s) == 0
}
BigInteger2.prototype.exp = function (e2, z2) {
if (e2 > 4294967295 || e2 < 1) {
return BigInteger2.ONE
}
var r2 = nbi()
var r22 = nbi()
var g2 = z2.convert(this)
var i2 = nbits(e2) - 1
g2.copyTo(r2)
while (--i2 >= 0) {
z2.sqrTo(r2, r22)
if ((e2 & (1 << i2)) > 0) {
z2.mulTo(r22, g2, r2)
} else {
var t3 = r2
r2 = r22
r22 = t3
}
}
return z2.revert(r2)
}
BigInteger2.prototype.chunkSize = function (r2) {
return Math.floor((Math.LN2 * this.DB) / Math.log(r2))
}
BigInteger2.prototype.toRadix = function (b2) {
if (b2 == null) {
b2 = 10
}
if (this.signum() == 0 || b2 < 2 || b2 > 36) {
return '0'
}
var cs2 = this.chunkSize(b2)
var a2 = Math.pow(b2, cs2)
var d3 = nbv(a2)
var y2 = nbi()
var z2 = nbi()
var r2 = ''
this.divRemTo(d3, y2, z2)
while (y2.signum() > 0) {
r2 = (a2 + z2.intValue()).toString(b2).substr(1) + r2
y2.divRemTo(d3, y2, z2)
}
return z2.intValue().toString(b2) + r2
}
BigInteger2.prototype.fromRadix = function (s2, b2) {
this.fromInt(0)
if (b2 == null) {
b2 = 10
}
var cs2 = this.chunkSize(b2)
var d3 = Math.pow(b2, cs2)
var mi = false
var j2 = 0
var w2 = 0
for (var i2 = 0; i2 < s2.length; ++i2) {
var x2 = intAt(s2, i2)
if (x2 < 0) {
if (s2.charAt(i2) == '-' && this.signum() == 0) {
mi = true
}
continue
}
w2 = b2 * w2 + x2
if (++j2 >= cs2) {
this.dMultiply(d3)
this.dAddOffset(w2, 0)
j2 = 0
w2 = 0
}
}
if (j2 > 0) {
this.dMultiply(Math.pow(b2, j2))
this.dAddOffset(w2, 0)
}
if (mi) {
BigInteger2.ZERO.subTo(this, this)
}
}
BigInteger2.prototype.fromNumber = function (a2, b2, c2) {
if ('number' == typeof b2) {
if (a2 < 2) {
this.fromInt(1)
} else {
this.fromNumber(a2, c2)
if (!this.testBit(a2 - 1)) {
this.bitwiseTo(BigInteger2.ONE.shiftLeft(a2 - 1), op_or, this)
}
if (this.isEven()) {
this.dAddOffset(1, 0)
}
while (!this.isProbablePrime(b2)) {
this.dAddOffset(2, 0)
if (this.bitLength() > a2) {
this.subTo(BigInteger2.ONE.shiftLeft(a2 - 1), this)
}
}
}
} else {
var x2 = []
var t3 = a2 & 7
x2.length = (a2 >> 3) + 1
b2.nextBytes(x2)
if (t3 > 0) {
x2[0] &= (1 << t3) - 1
} else {
x2[0] = 0
}
this.fromString(x2, 256)
}
}
BigInteger2.prototype.bitwiseTo = function (a2, op, r2) {
var i2
var f2
var m2 = Math.min(a2.t, this.t)
for (i2 = 0; i2 < m2; ++i2) {
r2[i2] = op(this[i2], a2[i2])
}
if (a2.t < this.t) {
f2 = a2.s & this.DM
for (i2 = m2; i2 < this.t; ++i2) {
r2[i2] = op(this[i2], f2)
}
r2.t = this.t
} else {
f2 = this.s & this.DM
for (i2 = m2; i2 < a2.t; ++i2) {
r2[i2] = op(f2, a2[i2])
}
r2.t = a2.t
}
r2.s = op(this.s, a2.s)
r2.clamp()
}
BigInteger2.prototype.changeBit = function (n2, op) {
var r2 = BigInteger2.ONE.shiftLeft(n2)
this.bitwiseTo(r2, op, r2)
return r2
}
BigInteger2.prototype.addTo = function (a2, r2) {
var i2 = 0
var c2 = 0
var m2 = Math.min(a2.t, this.t)
while (i2 < m2) {
c2 += this[i2] + a2[i2]
r2[i2++] = c2 & this.DM
c2 >>= this.DB
}
if (a2.t < this.t) {
c2 += a2.s
while (i2 < this.t) {
c2 += this[i2]
r2[i2++] = c2 & this.DM
c2 >>= this.DB
}
c2 += this.s
} else {
c2 += this.s
while (i2 < a2.t) {
c2 += a2[i2]
r2[i2++] = c2 & this.DM
c2 >>= this.DB
}
c2 += a2.s
}
r2.s = c2 < 0 ? -1 : 0
if (c2 > 0) {
r2[i2++] = c2
} else if (c2 < -1) {
r2[i2++] = this.DV + c2
}
r2.t = i2
r2.clamp()
}
BigInteger2.prototype.dMultiply = function (n2) {
this[this.t] = this.am(0, n2 - 1, this, 0, 0, this.t)
++this.t
this.clamp()
}
BigInteger2.prototype.dAddOffset = function (n2, w2) {
if (n2 == 0) {
return
}
while (this.t <= w2) {
this[this.t++] = 0
}
this[w2] += n2
while (this[w2] >= this.DV) {
this[w2] -= this.DV
if (++w2 >= this.t) {
this[this.t++] = 0
}
++this[w2]
}
}
BigInteger2.prototype.multiplyLowerTo = function (a2, n2, r2) {
var i2 = Math.min(this.t + a2.t, n2)
r2.s = 0
r2.t = i2
while (i2 > 0) {
r2[--i2] = 0
}
for (var j2 = r2.t - this.t; i2 < j2; ++i2) {
r2[i2 + this.t] = this.am(0, a2[i2], r2, i2, 0, this.t)
}
for (var j2 = Math.min(a2.t, n2); i2 < j2; ++i2) {
this.am(0, a2[i2], r2, i2, 0, n2 - i2)
}
r2.clamp()
}
BigInteger2.prototype.multiplyUpperTo = function (a2, n2, r2) {
--n2
var i2 = (r2.t = this.t + a2.t - n2)
r2.s = 0
while (--i2 >= 0) {
r2[i2] = 0
}
for (i2 = Math.max(n2 - this.t, 0); i2 < a2.t; ++i2) {
r2[this.t + i2 - n2] = this.am(
n2 - i2,
a2[i2],
r2,
0,
0,
this.t + i2 - n2
)
}
r2.clamp()
r2.drShiftTo(1, r2)
}
BigInteger2.prototype.modInt = function (n2) {
if (n2 <= 0) {
return 0
}
var d3 = this.DV % n2
var r2 = this.s < 0 ? n2 - 1 : 0
if (this.t > 0) {
if (d3 == 0) {
r2 = this[0] % n2
} else {
for (var i2 = this.t - 1; i2 >= 0; --i2) {
r2 = (d3 * r2 + this[i2]) % n2
}
}
}
return r2
}
BigInteger2.prototype.millerRabin = function (t3) {
var n1 = this.subtract(BigInteger2.ONE)
var k2 = n1.getLowestSetBit()
if (k2 <= 0) {
return false
}
var r2 = n1.shiftRight(k2)
t3 = (t3 + 1) >> 1
if (t3 > lowprimes.length) {
t3 = lowprimes.length
}
var a2 = nbi()
for (var i2 = 0; i2 < t3; ++i2) {
a2.fromInt(lowprimes[Math.floor(Math.random() * lowprimes.length)])
var y2 = a2.modPow(r2, this)
if (y2.compareTo(BigInteger2.ONE) != 0 && y2.compareTo(n1) != 0) {
var j2 = 1
while (j2++ < k2 && y2.compareTo(n1) != 0) {
y2 = y2.modPowInt(2, this)
if (y2.compareTo(BigInteger2.ONE) == 0) {
return false
}
}
if (y2.compareTo(n1) != 0) {
return false
}
}
}
return true
}
BigInteger2.prototype.square = function () {
var r2 = nbi()
this.squareTo(r2)
return r2
}
BigInteger2.prototype.gcda = function (a2, callback) {
var x2 = this.s < 0 ? this.negate() : this.clone()
var y2 = a2.s < 0 ? a2.negate() : a2.clone()
if (x2.compareTo(y2) < 0) {
var t3 = x2
x2 = y2
y2 = t3
}
var i2 = x2.getLowestSetBit()
var g2 = y2.getLowestSetBit()
if (g2 < 0) {
callback(x2)
return
}
if (i2 < g2) {
g2 = i2
}
if (g2 > 0) {
x2.rShiftTo(g2, x2)
y2.rShiftTo(g2, y2)
}
var gcda1 = function () {
if ((i2 = x2.getLowestSetBit()) > 0) {
x2.rShiftTo(i2, x2)
}
if ((i2 = y2.getLowestSetBit()) > 0) {
y2.rShiftTo(i2, y2)
}
if (x2.compareTo(y2) >= 0) {
x2.subTo(y2, x2)
x2.rShiftTo(1, x2)
} else {
y2.subTo(x2, y2)
y2.rShiftTo(1, y2)
}
if (!(x2.signum() > 0)) {
if (g2 > 0) {
y2.lShiftTo(g2, y2)
}
setTimeout(function () {
callback(y2)
}, 0)
} else {
setTimeout(gcda1, 0)
}
}
setTimeout(gcda1, 10)
}
BigInteger2.prototype.fromNumberAsync = function (a2, b2, c2, callback) {
if ('number' == typeof b2) {
if (a2 < 2) {
this.fromInt(1)
} else {
this.fromNumber(a2, c2)
if (!this.testBit(a2 - 1)) {
this.bitwiseTo(BigInteger2.ONE.shiftLeft(a2 - 1), op_or, this)
}
if (this.isEven()) {
this.dAddOffset(1, 0)
}
var bnp_1 = this
var bnpfn1_1 = function () {
bnp_1.dAddOffset(2, 0)
if (bnp_1.bitLength() > a2) {
bnp_1.subTo(BigInteger2.ONE.shiftLeft(a2 - 1), bnp_1)
}
if (bnp_1.isProbablePrime(b2)) {
setTimeout(function () {
callback()
}, 0)
} else {
setTimeout(bnpfn1_1, 0)
}
}
setTimeout(bnpfn1_1, 0)
}
} else {
var x2 = []
var t3 = a2 & 7
x2.length = (a2 >> 3) + 1
b2.nextBytes(x2)
if (t3 > 0) {
x2[0] &= (1 << t3) - 1
} else {
x2[0] = 0
}
this.fromString(x2, 256)
}
}
return BigInteger2
})()
var NullExp = (function () {
function NullExp2() {}
NullExp2.prototype.convert = function (x2) {
return x2
}
NullExp2.prototype.revert = function (x2) {
return x2
}
NullExp2.prototype.mulTo = function (x2, y2, r2) {
x2.multiplyTo(y2, r2)
}
NullExp2.prototype.sqrTo = function (x2, r2) {
x2.squareTo(r2)
}
return NullExp2
})()
var Classic = (function () {
function Classic2(m2) {
this.m = m2
}
Classic2.prototype.convert = function (x2) {
if (x2.s < 0 || x2.compareTo(this.m) >= 0) {
return x2.mod(this.m)
} else {
return x2
}
}
Classic2.prototype.revert = function (x2) {
return x2
}
Classic2.prototype.reduce = function (x2) {
x2.divRemTo(this.m, null, x2)
}
Classic2.prototype.mulTo = function (x2, y2, r2) {
x2.multiplyTo(y2, r2)
this.reduce(r2)
}
Classic2.prototype.sqrTo = function (x2, r2) {
x2.squareTo(r2)
this.reduce(r2)
}
return Classic2
})()
var Montgomery = (function () {
function Montgomery2(m2) {
this.m = m2
this.mp = m2.invDigit()
this.mpl = this.mp & 32767
this.mph = this.mp >> 15
this.um = (1 << (m2.DB - 15)) - 1
this.mt2 = 2 * m2.t
}
Montgomery2.prototype.convert = function (x2) {
var r2 = nbi()
x2.abs().dlShiftTo(this.m.t, r2)
r2.divRemTo(this.m, null, r2)
if (x2.s < 0 && r2.compareTo(BigInteger.ZERO) > 0) {
this.m.subTo(r2, r2)
}
return r2
}
Montgomery2.prototype.revert = function (x2) {
var r2 = nbi()
x2.copyTo(r2)
this.reduce(r2)
return r2
}
Montgomery2.prototype.reduce = function (x2) {
while (x2.t <= this.mt2) {
x2[x2.t++] = 0
}
for (var i2 = 0; i2 < this.m.t; ++i2) {
var j2 = x2[i2] & 32767
var u0 =
(j2 * this.mpl +
(((j2 * this.mph + (x2[i2] >> 15) * this.mpl) & this.um) << 15)) &
x2.DM
j2 = i2 + this.m.t
x2[j2] += this.m.am(0, u0, x2, i2, 0, this.m.t)
while (x2[j2] >= x2.DV) {
x2[j2] -= x2.DV
x2[++j2]++
}
}
x2.clamp()
x2.drShiftTo(this.m.t, x2)
if (x2.compareTo(this.m) >= 0) {
x2.subTo(this.m, x2)
}
}
Montgomery2.prototype.mulTo = function (x2, y2, r2) {
x2.multiplyTo(y2, r2)
this.reduce(r2)
}
Montgomery2.prototype.sqrTo = function (x2, r2) {
x2.squareTo(r2)
this.reduce(r2)
}
return Montgomery2
})()
var Barrett = (function () {
function Barrett2(m2) {
this.m = m2
this.r2 = nbi()
this.q3 = nbi()
BigInteger.ONE.dlShiftTo(2 * m2.t, this.r2)
this.mu = this.r2.divide(m2)
}
Barrett2.prototype.convert = function (x2) {
if (x2.s < 0 || x2.t > 2 * this.m.t) {
return x2.mod(this.m)
} else if (x2.compareTo(this.m) < 0) {
return x2
} else {
var r2 = nbi()
x2.copyTo(r2)
this.reduce(r2)
return r2
}
}
Barrett2.prototype.revert = function (x2) {
return x2
}
Barrett2.prototype.reduce = function (x2) {
x2.drShiftTo(this.m.t - 1, this.r2)
if (x2.t > this.m.t + 1) {
x2.t = this.m.t + 1
x2.clamp()
}
this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3)
this.m.multiplyLowerTo(this.q3, this.m.t + 1, this.r2)
while (x2.compareTo(this.r2) < 0) {
x2.dAddOffset(1, this.m.t + 1)
}
x2.subTo(this.r2, x2)
while (x2.compareTo(this.m) >= 0) {
x2.subTo(this.m, x2)
}
}
Barrett2.prototype.mulTo = function (x2, y2, r2) {
x2.multiplyTo(y2, r2)
this.reduce(r2)
}
Barrett2.prototype.sqrTo = function (x2, r2) {
x2.squareTo(r2)
this.reduce(r2)
}
return Barrett2
})()
function nbi() {
return new BigInteger(null)
}
function parseBigInt(str, r2) {
return new BigInteger(str, r2)
}
var inBrowser$1 = typeof navigator !== 'undefined'
if (inBrowser$1 && j_lm && navigator.appName == 'Microsoft Internet Explorer') {
BigInteger.prototype.am = function am2(i2, x2, w2, j2, c2, n2) {
var xl = x2 & 32767
var xh = x2 >> 15
while (--n2 >= 0) {
var l2 = this[i2] & 32767
var h2 = this[i2++] >> 15
var m2 = xh * l2 + h2 * xl
l2 = xl * l2 + ((m2 & 32767) << 15) + w2[j2] + (c2 & 1073741823)
c2 = (l2 >>> 30) + (m2 >>> 15) + xh * h2 + (c2 >>> 30)
w2[j2++] = l2 & 1073741823
}
return c2
}
dbits = 30
} else if (inBrowser$1 && j_lm && navigator.appName != 'Netscape') {
BigInteger.prototype.am = function am1(i2, x2, w2, j2, c2, n2) {
while (--n2 >= 0) {
var v4 = x2 * this[i2++] + w2[j2] + c2
c2 = Math.floor(v4 / 67108864)
w2[j2++] = v4 & 67108863
}
return c2
}
dbits = 26
} else {
BigInteger.prototype.am = function am3(i2, x2, w2, j2, c2, n2) {
var xl = x2 & 16383
var xh = x2 >> 14
while (--n2 >= 0) {
var l2 = this[i2] & 16383
var h2 = this[i2++] >> 14
var m2 = xh * l2 + h2 * xl
l2 = xl * l2 + ((m2 & 16383) << 14) + w2[j2] + c2
c2 = (l2 >> 28) + (m2 >> 14) + xh * h2
w2[j2++] = l2 & 268435455
}
return c2
}
dbits = 28
}
BigInteger.prototype.DB = dbits
BigInteger.prototype.DM = (1 << dbits) - 1
BigInteger.prototype.DV = 1 << dbits
var BI_FP = 52
BigInteger.prototype.FV = Math.pow(2, BI_FP)
BigInteger.prototype.F1 = BI_FP - dbits
BigInteger.prototype.F2 = 2 * dbits - BI_FP
var BI_RC = []
var rr
var vv
rr = '0'.charCodeAt(0)
for (vv = 0; vv <= 9; ++vv) {
BI_RC[rr++] = vv
}
rr = 'a'.charCodeAt(0)
for (vv = 10; vv < 36; ++vv) {
BI_RC[rr++] = vv
}
rr = 'A'.charCodeAt(0)
for (vv = 10; vv < 36; ++vv) {
BI_RC[rr++] = vv
}
function intAt(s2, i2) {
var c2 = BI_RC[s2.charCodeAt(i2)]
return c2 == null ? -1 : c2
}
function nbv(i2) {
var r2 = nbi()
r2.fromInt(i2)
return r2
}
function nbits(x2) {
var r2 = 1
var t3
if ((t3 = x2 >>> 16) != 0) {
x2 = t3
r2 += 16
}
if ((t3 = x2 >> 8) != 0) {
x2 = t3
r2 += 8
}
if ((t3 = x2 >> 4) != 0) {
x2 = t3
r2 += 4
}
if ((t3 = x2 >> 2) != 0) {
x2 = t3
r2 += 2
}
if ((t3 = x2 >> 1) != 0) {
x2 = t3
r2 += 1
}
return r2
}
BigInteger.ZERO = nbv(0)
BigInteger.ONE = nbv(1)
var Arcfour = (function () {
function Arcfour2() {
this.i = 0
this.j = 0
this.S = []
}
Arcfour2.prototype.init = function (key2) {
var i2
var j2
var t3
for (i2 = 0; i2 < 256; ++i2) {
this.S[i2] = i2
}
j2 = 0
for (i2 = 0; i2 < 256; ++i2) {
j2 = (j2 + this.S[i2] + key2[i2 % key2.length]) & 255
t3 = this.S[i2]
this.S[i2] = this.S[j2]
this.S[j2] = t3
}
this.i = 0
this.j = 0
}
Arcfour2.prototype.next = function () {
var t3
this.i = (this.i + 1) & 255
this.j = (this.j + this.S[this.i]) & 255
t3 = this.S[this.i]
this.S[this.i] = this.S[this.j]
this.S[this.j] = t3
return this.S[(t3 + this.S[this.i]) & 255]
}
return Arcfour2
})()
function prng_newstate() {
return new Arcfour()
}
var rng_psize = 256
var rng_state
var rng_pool = null
var rng_pptr
if (rng_pool == null) {
rng_pool = []
rng_pptr = 0
var t$1 = void 0
if (
typeof window !== 'undefined' &&
window.crypto &&
window.crypto.getRandomValues
) {
var z = new Uint32Array(256)
window.crypto.getRandomValues(z)
for (t$1 = 0; t$1 < z.length; ++t$1) {
rng_pool[rng_pptr++] = z[t$1] & 255
}
}
var count = 0
var onMouseMoveListener_1 = function (ev) {
count = count || 0
if (count >= 256 || rng_pptr >= rng_psize) {
if (window.removeEventListener) {
window.removeEventListener('mousemove', onMouseMoveListener_1, false)
} else if (window.detachEvent) {
window.detachEvent('onmousemove', onMouseMoveListener_1)
}
return
}
try {
var mouseCoordinates = ev.x + ev.y
rng_pool[rng_pptr++] = mouseCoordinates & 255
count += 1
} catch (e2) {}
}
if (typeof window !== 'undefined') {
if (window.addEventListener) {
window.addEventListener('mousemove', onMouseMoveListener_1, false)
} else if (window.attachEvent) {
window.attachEvent('onmousemove', onMouseMoveListener_1)
}
}
}
function rng_get_byte() {
if (rng_state == null) {
rng_state = prng_newstate()
while (rng_pptr < rng_psize) {
var random2 = Math.floor(65536 * Math.random())
rng_pool[rng_pptr++] = random2 & 255
}
rng_state.init(rng_pool)
for (rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr) {
rng_pool[rng_pptr] = 0
}
rng_pptr = 0
}
return rng_state.next()
}
var SecureRandom = (function () {
function SecureRandom2() {}
SecureRandom2.prototype.nextBytes = function (ba) {
for (var i2 = 0; i2 < ba.length; ++i2) {
ba[i2] = rng_get_byte()
}
}
return SecureRandom2
})()
function pkcs1pad1(s2, n2) {
if (n2 < s2.length + 22) {
console.error('Message too long for RSA')
return null
}
var len2 = n2 - s2.length - 6
var filler = ''
for (var f2 = 0; f2 < len2; f2 += 2) {
filler += 'ff'
}
var m2 = '0001' + filler + '00' + s2
return parseBigInt(m2, 16)
}
function pkcs1pad2(s2, n2) {
if (n2 < s2.length + 11) {
console.error('Message too long for RSA')
return null
}
var ba = []
var i2 = s2.length - 1
while (i2 >= 0 && n2 > 0) {
var c2 = s2.charCodeAt(i2--)
if (c2 < 128) {
ba[--n2] = c2
} else if (c2 > 127 && c2 < 2048) {
ba[--n2] = (c2 & 63) | 128
ba[--n2] = (c2 >> 6) | 192
} else {
ba[--n2] = (c2 & 63) | 128
ba[--n2] = ((c2 >> 6) & 63) | 128
ba[--n2] = (c2 >> 12) | 224
}
}
ba[--n2] = 0
var rng = new SecureRandom()
var x2 = []
while (n2 > 2) {
x2[0] = 0
while (x2[0] == 0) {
rng.nextBytes(x2)
}
ba[--n2] = x2[0]
}
ba[--n2] = 2
ba[--n2] = 0
return new BigInteger(ba)
}
var RSAKey = (function () {
function RSAKey2() {
this.n = null
this.e = 0
this.d = null
this.p = null
this.q = null
this.dmp1 = null
this.dmq1 = null
this.coeff = null
}
RSAKey2.prototype.doPublic = function (x2) {
return x2.modPowInt(this.e, this.n)
}
RSAKey2.prototype.doPrivate = function (x2) {
if (this.p == null || this.q == null) {
return x2.modPow(this.d, this.n)
}
var xp = x2.mod(this.p).modPow(this.dmp1, this.p)
var xq = x2.mod(this.q).modPow(this.dmq1, this.q)
while (xp.compareTo(xq) < 0) {
xp = xp.add(this.p)
}
return xp
.subtract(xq)
.multiply(this.coeff)
.mod(this.p)
.multiply(this.q)
.add(xq)
}
RSAKey2.prototype.setPublic = function (N2, E2) {
if (N2 != null && E2 != null && N2.length > 0 && E2.length > 0) {
this.n = parseBigInt(N2, 16)
this.e = parseInt(E2, 16)
} else {
console.error('Invalid RSA public key')
}
}
RSAKey2.prototype.encrypt = function (text2) {
var maxLength = (this.n.bitLength() + 7) >> 3
var m2 = pkcs1pad2(text2, maxLength)
if (m2 == null) {
return null
}
var c2 = this.doPublic(m2)
if (c2 == null) {
return null
}
var h2 = c2.toString(16)
var length2 = h2.length
for (var i2 = 0; i2 < maxLength * 2 - length2; i2++) {
h2 = '0' + h2
}
return h2
}
RSAKey2.prototype.setPrivate = function (N2, E2, D2) {
if (N2 != null && E2 != null && N2.length > 0 && E2.length > 0) {
this.n = parseBigInt(N2, 16)
this.e = parseInt(E2, 16)
this.d = parseBigInt(D2, 16)
} else {
console.error('Invalid RSA private key')
}
}
RSAKey2.prototype.setPrivateEx = function (N2, E2, D2, P2, Q2, DP, DQ, C2) {
if (N2 != null && E2 != null && N2.length > 0 && E2.length > 0) {
this.n = parseBigInt(N2, 16)
this.e = parseInt(E2, 16)
this.d = parseBigInt(D2, 16)
this.p = parseBigInt(P2, 16)
this.q = parseBigInt(Q2, 16)
this.dmp1 = parseBigInt(DP, 16)
this.dmq1 = parseBigInt(DQ, 16)
this.coeff = parseBigInt(C2, 16)
} else {
console.error('Invalid RSA private key')
}
}
RSAKey2.prototype.generate = function (B3, E2) {
var rng = new SecureRandom()
var qs = B3 >> 1
this.e = parseInt(E2, 16)
var ee2 = new BigInteger(E2, 16)
for (;;) {
for (;;) {
this.p = new BigInteger(B3 - qs, 1, rng)
if (
this.p.subtract(BigInteger.ONE).gcd(ee2).compareTo(BigInteger.ONE) ==
0 &&
this.p.isProbablePrime(10)
) {
break
}
}
for (;;) {
this.q = new BigInteger(qs, 1, rng)
if (
this.q.subtract(BigInteger.ONE).gcd(ee2).compareTo(BigInteger.ONE) ==
0 &&
this.q.isProbablePrime(10)
) {
break
}
}
if (this.p.compareTo(this.q) <= 0) {
var t3 = this.p
this.p = this.q
this.q = t3
}
var p1 = this.p.subtract(BigInteger.ONE)
var q1 = this.q.subtract(BigInteger.ONE)
var phi = p1.multiply(q1)
if (phi.gcd(ee2).compareTo(BigInteger.ONE) == 0) {
this.n = this.p.multiply(this.q)
this.d = ee2.modInverse(phi)
this.dmp1 = this.d.mod(p1)
this.dmq1 = this.d.mod(q1)
this.coeff = this.q.modInverse(this.p)
break
}
}
}
RSAKey2.prototype.decrypt = function (ctext) {
var c2 = parseBigInt(ctext, 16)
var m2 = this.doPrivate(c2)
if (m2 == null) {
return null
}
return pkcs1unpad2(m2, (this.n.bitLength() + 7) >> 3)
}
RSAKey2.prototype.generateAsync = function (B3, E2, callback) {
var rng = new SecureRandom()
var qs = B3 >> 1
this.e = parseInt(E2, 16)
var ee2 = new BigInteger(E2, 16)
var rsa = this
var loop1 = function () {
var loop4 = function () {
if (rsa.p.compareTo(rsa.q) <= 0) {
var t3 = rsa.p
rsa.p = rsa.q
rsa.q = t3
}
var p1 = rsa.p.subtract(BigInteger.ONE)
var q1 = rsa.q.subtract(BigInteger.ONE)
var phi = p1.multiply(q1)
if (phi.gcd(ee2).compareTo(BigInteger.ONE) == 0) {
rsa.n = rsa.p.multiply(rsa.q)
rsa.d = ee2.modInverse(phi)
rsa.dmp1 = rsa.d.mod(p1)
rsa.dmq1 = rsa.d.mod(q1)
rsa.coeff = rsa.q.modInverse(rsa.p)
setTimeout(function () {
callback()
}, 0)
} else {
setTimeout(loop1, 0)
}
}
var loop3 = function () {
rsa.q = nbi()
rsa.q.fromNumberAsync(qs, 1, rng, function () {
rsa.q.subtract(BigInteger.ONE).gcda(ee2, function (r2) {
if (
r2.compareTo(BigInteger.ONE) == 0 &&
rsa.q.isProbablePrime(10)
) {
setTimeout(loop4, 0)
} else {
setTimeout(loop3, 0)
}
})
})
}
var loop2 = function () {
rsa.p = nbi()
rsa.p.fromNumberAsync(B3 - qs, 1, rng, function () {
rsa.p.subtract(BigInteger.ONE).gcda(ee2, function (r2) {
if (
r2.compareTo(BigInteger.ONE) == 0 &&
rsa.p.isProbablePrime(10)
) {
setTimeout(loop3, 0)
} else {
setTimeout(loop2, 0)
}
})
})
}
setTimeout(loop2, 0)
}
setTimeout(loop1, 0)
}
RSAKey2.prototype.sign = function (text2, digestMethod, digestName) {
var header = getDigestHeader(digestName)
var digest = header + digestMethod(text2).toString()
var m2 = pkcs1pad1(digest, this.n.bitLength() / 4)
if (m2 == null) {
return null
}
var c2 = this.doPrivate(m2)
if (c2 == null) {
return null
}
var h2 = c2.toString(16)
if ((h2.length & 1) == 0) {
return h2
} else {
return '0' + h2
}
}
RSAKey2.prototype.verify = function (text2, signature, digestMethod) {
var c2 = parseBigInt(signature, 16)
var m2 = this.doPublic(c2)
if (m2 == null) {
return null
}
var unpadded = m2.toString(16).replace(/^1f+00/, '')
var digest = removeDigestHeader(unpadded)
return digest == digestMethod(text2).toString()
}
return RSAKey2
})()
function pkcs1unpad2(d3, n2) {
var b2 = d3.toByteArray()
var i2 = 0
while (i2 < b2.length && b2[i2] == 0) {
++i2
}
if (b2.length - i2 != n2 - 1 || b2[i2] != 2) {
return null
}
++i2
while (b2[i2] != 0) {
if (++i2 >= b2.length) {
return null
}
}
var ret = ''
while (++i2 < b2.length) {
var c2 = b2[i2] & 255
if (c2 < 128) {
ret += String.fromCharCode(c2)
} else if (c2 > 191 && c2 < 224) {
ret += String.fromCharCode(((c2 & 31) << 6) | (b2[i2 + 1] & 63))
++i2
} else {
ret += String.fromCharCode(
((c2 & 15) << 12) | ((b2[i2 + 1] & 63) << 6) | (b2[i2 + 2] & 63)
)
i2 += 2
}
}
return ret
}
var DIGEST_HEADERS = {
md2: '3020300c06082a864886f70d020205000410',
md5: '3020300c06082a864886f70d020505000410',
sha1: '3021300906052b0e03021a05000414',
sha224: '302d300d06096086480165030402040500041c',
sha256: '3031300d060960864801650304020105000420',
sha384: '3041300d060960864801650304020205000430',
sha512: '3051300d060960864801650304020305000440',
ripemd160: '3021300906052b2403020105000414',
}
function getDigestHeader(name2) {
return DIGEST_HEADERS[name2] || ''
}
function removeDigestHeader(str) {
for (var name_1 in DIGEST_HEADERS) {
if (DIGEST_HEADERS.hasOwnProperty(name_1)) {
var header = DIGEST_HEADERS[name_1]
var len2 = header.length
if (str.substr(0, len2) == header) {
return str.substr(len2)
}
}
}
return str
}
/*!
Copyright (c) 2011, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.com/yui/license.html
version: 2.9.0
*/
var YAHOO = {}
YAHOO.lang = {
extend: function (subc, superc, overrides) {
if (!superc || !subc) {
throw new Error(
'YAHOO.lang.extend failed, please check that all dependencies are included.'
)
}
var F2 = function () {}
F2.prototype = superc.prototype
subc.prototype = new F2()
subc.prototype.constructor = subc
subc.superclass = superc.prototype
if (superc.prototype.constructor == Object.prototype.constructor) {
superc.prototype.constructor = superc
}
if (overrides) {
var i2
for (i2 in overrides) {
subc.prototype[i2] = overrides[i2]
}
var _IEEnumFix = function () {},
ADD = ['toString', 'valueOf']
try {
if (/MSIE/.test(navigator.userAgent)) {
_IEEnumFix = function (r2, s2) {
for (i2 = 0; i2 < ADD.length; i2 = i2 + 1) {
var fname = ADD[i2],
f2 = s2[fname]
if (typeof f2 === 'function' && f2 != Object.prototype[fname]) {
r2[fname] = f2
}
}
}
}
} catch (ex) {}
_IEEnumFix(subc.prototype, overrides)
}
},
}
/**
* @fileOverview
* @name asn1-1.0.js
* @author Kenji Urushima kenji.urushima@gmail.com
* @version asn1 1.0.13 (2017-Jun-02)
* @since jsrsasign 2.1
* @license MIT License
*/
var KJUR = {}
if (typeof KJUR.asn1 == 'undefined' || !KJUR.asn1) KJUR.asn1 = {}
KJUR.asn1.ASN1Util = new (function () {
this.integerToByteHex = function (i2) {
var h2 = i2.toString(16)
if (h2.length % 2 == 1) h2 = '0' + h2
return h2
}
this.bigIntToMinTwosComplementsHex = function (bigIntegerValue) {
var h2 = bigIntegerValue.toString(16)
if (h2.substr(0, 1) != '-') {
if (h2.length % 2 == 1) {
h2 = '0' + h2
} else {
if (!h2.match(/^[0-7]/)) {
h2 = '00' + h2
}
}
} else {
var hPos = h2.substr(1)
var xorLen = hPos.length
if (xorLen % 2 == 1) {
xorLen += 1
} else {
if (!h2.match(/^[0-7]/)) {
xorLen += 2
}
}
var hMask = ''
for (var i2 = 0; i2 < xorLen; i2++) {
hMask += 'f'
}
var biMask = new BigInteger(hMask, 16)
var biNeg = biMask.xor(bigIntegerValue).add(BigInteger.ONE)
h2 = biNeg.toString(16).replace(/^-/, '')
}
return h2
}
this.getPEMStringFromHex = function (dataHex, pemHeader) {
return hextopem(dataHex, pemHeader)
}
this.newObject = function (param) {
var _KJUR = KJUR,
_KJUR_asn1 = _KJUR.asn1,
_DERBoolean = _KJUR_asn1.DERBoolean,
_DERInteger = _KJUR_asn1.DERInteger,
_DERBitString = _KJUR_asn1.DERBitString,
_DEROctetString = _KJUR_asn1.DEROctetString,
_DERNull = _KJUR_asn1.DERNull,
_DERObjectIdentifier = _KJUR_asn1.DERObjectIdentifier,
_DEREnumerated = _KJUR_asn1.DEREnumerated,
_DERUTF8String = _KJUR_asn1.DERUTF8String,
_DERNumericString = _KJUR_asn1.DERNumericString,
_DERPrintableString = _KJUR_asn1.DERPrintableString,
_DERTeletexString = _KJUR_asn1.DERTeletexString,
_DERIA5String = _KJUR_asn1.DERIA5String,
_DERUTCTime = _KJUR_asn1.DERUTCTime,
_DERGeneralizedTime = _KJUR_asn1.DERGeneralizedTime,
_DERSequence = _KJUR_asn1.DERSequence,
_DERSet = _KJUR_asn1.DERSet,
_DERTaggedObject = _KJUR_asn1.DERTaggedObject,
_newObject = _KJUR_asn1.ASN1Util.newObject
var keys3 = Object.keys(param)
if (keys3.length != 1) throw 'key of param shall be only one.'
var key2 = keys3[0]
if (
':bool:int:bitstr:octstr:null:oid:enum:utf8str:numstr:prnstr:telstr:ia5str:utctime:gentime:seq:set:tag:'.indexOf(
':' + key2 + ':'
) == -1
)
throw 'undefined key: ' + key2
if (key2 == 'bool') return new _DERBoolean(param[key2])
if (key2 == 'int') return new _DERInteger(param[key2])
if (key2 == 'bitstr') return new _DERBitString(param[key2])
if (key2 == 'octstr') return new _DEROctetString(param[key2])
if (key2 == 'null') return new _DERNull(param[key2])
if (key2 == 'oid') return new _DERObjectIdentifier(param[key2])
if (key2 == 'enum') return new _DEREnumerated(param[key2])
if (key2 == 'utf8str') return new _DERUTF8String(param[key2])
if (key2 == 'numstr') return new _DERNumericString(param[key2])
if (key2 == 'prnstr') return new _DERPrintableString(param[key2])
if (key2 == 'telstr') return new _DERTeletexString(param[key2])
if (key2 == 'ia5str') return new _DERIA5String(param[key2])
if (key2 == 'utctime') return new _DERUTCTime(param[key2])
if (key2 == 'gentime') return new _DERGeneralizedTime(param[key2])
if (key2 == 'seq') {
var paramList = param[key2]
var a2 = []
for (var i2 = 0; i2 < paramList.length; i2++) {
var asn1Obj = _newObject(paramList[i2])
a2.push(asn1Obj)
}
return new _DERSequence({ array: a2 })
}
if (key2 == 'set') {
var paramList = param[key2]
var a2 = []
for (var i2 = 0; i2 < paramList.length; i2++) {
var asn1Obj = _newObject(paramList[i2])
a2.push(asn1Obj)
}
return new _DERSet({ array: a2 })
}
if (key2 == 'tag') {
var tagParam = param[key2]
if (
Object.prototype.toString.call(tagParam) === '[object Array]' &&
tagParam.length == 3
) {
var obj = _newObject(tagParam[2])
return new _DERTaggedObject({
tag: tagParam[0],
explicit: tagParam[1],
obj,
})
} else {
var newParam = {}
if (tagParam.explicit !== void 0) newParam.explicit = tagParam.explicit
if (tagParam.tag !== void 0) newParam.tag = tagParam.tag
if (tagParam.obj === void 0) throw "obj shall be specified for 'tag'."
newParam.obj = _newObject(tagParam.obj)
return new _DERTaggedObject(newParam)
}
}
}
this.jsonToASN1HEX = function (param) {
var asn1Obj = this.newObject(param)
return asn1Obj.getEncodedHex()
}
})()
KJUR.asn1.ASN1Util.oidHexToInt = function (hex2) {
var s2 = ''
var i01 = parseInt(hex2.substr(0, 2), 16)
var i0 = Math.floor(i01 / 40)
var i1 = i01 % 40
var s2 = i0 + '.' + i1
var binbuf = ''
for (var i2 = 2; i2 < hex2.length; i2 += 2) {
var value2 = parseInt(hex2.substr(i2, 2), 16)
var bin = ('00000000' + value2.toString(2)).slice(-8)
binbuf = binbuf + bin.substr(1, 7)
if (bin.substr(0, 1) == '0') {
var bi = new BigInteger(binbuf, 2)
s2 = s2 + '.' + bi.toString(10)
binbuf = ''
}
}
return s2
}
KJUR.asn1.ASN1Util.oidIntToHex = function (oidString) {
var itox = function (i3) {
var h3 = i3.toString(16)
if (h3.length == 1) h3 = '0' + h3
return h3
}
var roidtox = function (roid) {
var h3 = ''
var bi = new BigInteger(roid, 10)
var b2 = bi.toString(2)
var padLen = 7 - (b2.length % 7)
if (padLen == 7) padLen = 0
var bPad = ''
for (var i3 = 0; i3 < padLen; i3++) bPad += '0'
b2 = bPad + b2
for (var i3 = 0; i3 < b2.length - 1; i3 += 7) {
var b8 = b2.substr(i3, 7)
if (i3 != b2.length - 7) b8 = '1' + b8
h3 += itox(parseInt(b8, 2))
}
return h3
}
if (!oidString.match(/^[0-9.]+$/)) {
throw 'malformed oid string: ' + oidString
}
var h2 = ''
var a2 = oidString.split('.')
var i0 = parseInt(a2[0]) * 40 + parseInt(a2[1])
h2 += itox(i0)
a2.splice(0, 2)
for (var i2 = 0; i2 < a2.length; i2++) {
h2 += roidtox(a2[i2])
}
return h2
}
KJUR.asn1.ASN1Object = function () {
var hV = ''
this.getLengthHexFromValue = function () {
if (typeof this.hV == 'undefined' || this.hV == null) {
throw 'this.hV is null or undefined.'
}
if (this.hV.length % 2 == 1) {
throw 'value hex must be even length: n=' + hV.length + ',v=' + this.hV
}
var n2 = this.hV.length / 2
var hN = n2.toString(16)
if (hN.length % 2 == 1) {
hN = '0' + hN
}
if (n2 < 128) {
return hN
} else {
var hNlen = hN.length / 2
if (hNlen > 15) {
throw 'ASN.1 length too long to represent by 8x: n = ' + n2.toString(16)
}
var head = 128 + hNlen
return head.toString(16) + hN
}
}
this.getEncodedHex = function () {
if (this.hTLV == null || this.isModified) {
this.hV = this.getFreshValueHex()
this.hL = this.getLengthHexFromValue()
this.hTLV = this.hT + this.hL + this.hV
this.isModified = false
}
return this.hTLV
}
this.getValueHex = function () {
this.getEncodedHex()
return this.hV
}
this.getFreshValueHex = function () {
return ''
}
}
KJUR.asn1.DERAbstractString = function (params2) {
KJUR.asn1.DERAbstractString.superclass.constructor.call(this)
this.getString = function () {
return this.s
}
this.setString = function (newS) {
this.hTLV = null
this.isModified = true
this.s = newS
this.hV = stohex(this.s)
}
this.setStringHex = function (newHexString) {
this.hTLV = null
this.isModified = true
this.s = null
this.hV = newHexString
}
this.getFreshValueHex = function () {
return this.hV
}
if (typeof params2 != 'undefined') {
if (typeof params2 == 'string') {
this.setString(params2)
} else if (typeof params2['str'] != 'undefined') {
this.setString(params2['str'])
} else if (typeof params2['hex'] != 'undefined') {
this.setStringHex(params2['hex'])
}
}
}
YAHOO.lang.extend(KJUR.asn1.DERAbstractString, KJUR.asn1.ASN1Object)
KJUR.asn1.DERAbstractTime = function (params2) {
KJUR.asn1.DERAbstractTime.superclass.constructor.call(this)
this.localDateToUTC = function (d3) {
utc = d3.getTime() + d3.getTimezoneOffset() * 6e4
var utcDate = new Date(utc)
return utcDate
}
this.formatDate = function (dateObject, type4, withMillis) {
var pad3 = this.zeroPadding
var d3 = this.localDateToUTC(dateObject)
var year = String(d3.getFullYear())
if (type4 == 'utc') year = year.substr(2, 2)
var month = pad3(String(d3.getMonth() + 1), 2)
var day = pad3(String(d3.getDate()), 2)
var hour = pad3(String(d3.getHours()), 2)
var min3 = pad3(String(d3.getMinutes()), 2)
var sec = pad3(String(d3.getSeconds()), 2)
var s2 = year + month + day + hour + min3 + sec
if (withMillis === true) {
var millis = d3.getMilliseconds()
if (millis != 0) {
var sMillis = pad3(String(millis), 3)
sMillis = sMillis.replace(/[0]+$/, '')
s2 = s2 + '.' + sMillis
}
}
return s2 + 'Z'
}
this.zeroPadding = function (s2, len2) {
if (s2.length >= len2) return s2
return new Array(len2 - s2.length + 1).join('0') + s2
}
this.getString = function () {
return this.s
}
this.setString = function (newS) {
this.hTLV = null
this.isModified = true
this.s = newS
this.hV = stohex(newS)
}
this.setByDateValue = function (year, month, day, hour, min3, sec) {
var dateObject = new Date(
Date.UTC(year, month - 1, day, hour, min3, sec, 0)
)
this.setByDate(dateObject)
}
this.getFreshValueHex = function () {
return this.hV
}
}
YAHOO.lang.extend(KJUR.asn1.DERAbstractTime, KJUR.asn1.ASN1Object)
KJUR.asn1.DERAbstractStructured = function (params2) {
KJUR.asn1.DERAbstractString.superclass.constructor.call(this)
this.setByASN1ObjectArray = function (asn1ObjectArray) {
this.hTLV = null
this.isModified = true
this.asn1Array = asn1ObjectArray
}
this.appendASN1Object = function (asn1Object) {
this.hTLV = null
this.isModified = true
this.asn1Array.push(asn1Object)
}
this.asn1Array = new Array()
if (typeof params2 != 'undefined') {
if (typeof params2['array'] != 'undefined') {
this.asn1Array = params2['array']
}
}
}
YAHOO.lang.extend(KJUR.asn1.DERAbstractStructured, KJUR.asn1.ASN1Object)
KJUR.asn1.DERBoolean = function () {
KJUR.asn1.DERBoolean.superclass.constructor.call(this)
this.hT = '01'
this.hTLV = '0101ff'
}
YAHOO.lang.extend(KJUR.asn1.DERBoolean, KJUR.asn1.ASN1Object)
KJUR.asn1.DERInteger = function (params2) {
KJUR.asn1.DERInteger.superclass.constructor.call(this)
this.hT = '02'
this.setByBigInteger = function (bigIntegerValue) {
this.hTLV = null
this.isModified = true
this.hV = KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(bigIntegerValue)
}
this.setByInteger = function (intValue) {
var bi = new BigInteger(String(intValue), 10)
this.setByBigInteger(bi)
}
this.setValueHex = function (newHexString) {
this.hV = newHexString
}
this.getFreshValueHex = function () {
return this.hV
}
if (typeof params2 != 'undefined') {
if (typeof params2['bigint'] != 'undefined') {
this.setByBigInteger(params2['bigint'])
} else if (typeof params2['int'] != 'undefined') {
this.setByInteger(params2['int'])
} else if (typeof params2 == 'number') {
this.setByInteger(params2)
} else if (typeof params2['hex'] != 'undefined') {
this.setValueHex(params2['hex'])
}
}
}
YAHOO.lang.extend(KJUR.asn1.DERInteger, KJUR.asn1.ASN1Object)
KJUR.asn1.DERBitString = function (params2) {
if (params2 !== void 0 && typeof params2.obj !== 'undefined') {
var o2 = KJUR.asn1.ASN1Util.newObject(params2.obj)
params2.hex = '00' + o2.getEncodedHex()
}
KJUR.asn1.DERBitString.superclass.constructor.call(this)
this.hT = '03'
this.setHexValueIncludingUnusedBits = function (
newHexStringIncludingUnusedBits
) {
this.hTLV = null
this.isModified = true
this.hV = newHexStringIncludingUnusedBits
}
this.setUnusedBitsAndHexValue = function (unusedBits, hValue) {
if (unusedBits < 0 || 7 < unusedBits) {
throw 'unused bits shall be from 0 to 7: u = ' + unusedBits
}
var hUnusedBits = '0' + unusedBits
this.hTLV = null
this.isModified = true
this.hV = hUnusedBits + hValue
}
this.setByBinaryString = function (binaryString) {
binaryString = binaryString.replace(/0+$/, '')
var unusedBits = 8 - (binaryString.length % 8)
if (unusedBits == 8) unusedBits = 0
for (var i2 = 0; i2 <= unusedBits; i2++) {
binaryString += '0'
}
var h2 = ''
for (var i2 = 0; i2 < binaryString.length - 1; i2 += 8) {
var b2 = binaryString.substr(i2, 8)
var x2 = parseInt(b2, 2).toString(16)
if (x2.length == 1) x2 = '0' + x2
h2 += x2
}
this.hTLV = null
this.isModified = true
this.hV = '0' + unusedBits + h2
}
this.setByBooleanArray = function (booleanArray) {
var s2 = ''
for (var i2 = 0; i2 < booleanArray.length; i2++) {
if (booleanArray[i2] == true) {
s2 += '1'
} else {
s2 += '0'
}
}
this.setByBinaryString(s2)
}
this.newFalseArray = function (nLength) {
var a2 = new Array(nLength)
for (var i2 = 0; i2 < nLength; i2++) {
a2[i2] = false
}
return a2
}
this.getFreshValueHex = function () {
return this.hV
}
if (typeof params2 != 'undefined') {
if (
typeof params2 == 'string' &&
params2.toLowerCase().match(/^[0-9a-f]+$/)
) {
this.setHexValueIncludingUnusedBits(params2)
} else if (typeof params2['hex'] != 'undefined') {
this.setHexValueIncludingUnusedBits(params2['hex'])
} else if (typeof params2['bin'] != 'undefined') {
this.setByBinaryString(params2['bin'])
} else if (typeof params2['array'] != 'undefined') {
this.setByBooleanArray(params2['array'])
}
}
}
YAHOO.lang.extend(KJUR.asn1.DERBitString, KJUR.asn1.ASN1Object)
KJUR.asn1.DEROctetString = function (params2) {
if (params2 !== void 0 && typeof params2.obj !== 'undefined') {
var o2 = KJUR.asn1.ASN1Util.newObject(params2.obj)
params2.hex = o2.getEncodedHex()
}
KJUR.asn1.DEROctetString.superclass.constructor.call(this, params2)
this.hT = '04'
}
YAHOO.lang.extend(KJUR.asn1.DEROctetString, KJUR.asn1.DERAbstractString)
KJUR.asn1.DERNull = function () {
KJUR.asn1.DERNull.superclass.constructor.call(this)
this.hT = '05'
this.hTLV = '0500'
}
YAHOO.lang.extend(KJUR.asn1.DERNull, KJUR.asn1.ASN1Object)
KJUR.asn1.DERObjectIdentifier = function (params2) {
var itox = function (i2) {
var h2 = i2.toString(16)
if (h2.length == 1) h2 = '0' + h2
return h2
}
var roidtox = function (roid) {
var h2 = ''
var bi = new BigInteger(roid, 10)
var b2 = bi.toString(2)
var padLen = 7 - (b2.length % 7)
if (padLen == 7) padLen = 0
var bPad = ''
for (var i2 = 0; i2 < padLen; i2++) bPad += '0'
b2 = bPad + b2
for (var i2 = 0; i2 < b2.length - 1; i2 += 7) {
var b8 = b2.substr(i2, 7)
if (i2 != b2.length - 7) b8 = '1' + b8
h2 += itox(parseInt(b8, 2))
}
return h2
}
KJUR.asn1.DERObjectIdentifier.superclass.constructor.call(this)
this.hT = '06'
this.setValueHex = function (newHexString) {
this.hTLV = null
this.isModified = true
this.s = null
this.hV = newHexString
}
this.setValueOidString = function (oidString) {
if (!oidString.match(/^[0-9.]+$/)) {
throw 'malformed oid string: ' + oidString
}
var h2 = ''
var a2 = oidString.split('.')
var i0 = parseInt(a2[0]) * 40 + parseInt(a2[1])
h2 += itox(i0)
a2.splice(0, 2)
for (var i2 = 0; i2 < a2.length; i2++) {
h2 += roidtox(a2[i2])
}
this.hTLV = null
this.isModified = true
this.s = null
this.hV = h2
}
this.setValueName = function (oidName) {
var oid = KJUR.asn1.x509.OID.name2oid(oidName)
if (oid !== '') {
this.setValueOidString(oid)
} else {
throw 'DERObjectIdentifier oidName undefined: ' + oidName
}
}
this.getFreshValueHex = function () {
return this.hV
}
if (params2 !== void 0) {
if (typeof params2 === 'string') {
if (params2.match(/^[0-2].[0-9.]+$/)) {
this.setValueOidString(params2)
} else {
this.setValueName(params2)
}
} else if (params2.oid !== void 0) {
this.setValueOidString(params2.oid)
} else if (params2.hex !== void 0) {
this.setValueHex(params2.hex)
} else if (params2.name !== void 0) {
this.setValueName(params2.name)
}
}
}
YAHOO.lang.extend(KJUR.asn1.DERObjectIdentifier, KJUR.asn1.ASN1Object)
KJUR.asn1.DEREnumerated = function (params2) {
KJUR.asn1.DEREnumerated.superclass.constructor.call(this)
this.hT = '0a'
this.setByBigInteger = function (bigIntegerValue) {
this.hTLV = null
this.isModified = true
this.hV = KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(bigIntegerValue)
}
this.setByInteger = function (intValue) {
var bi = new BigInteger(String(intValue), 10)
this.setByBigInteger(bi)
}
this.setValueHex = function (newHexString) {
this.hV = newHexString
}
this.getFreshValueHex = function () {
return this.hV
}
if (typeof params2 != 'undefined') {
if (typeof params2['int'] != 'undefined') {
this.setByInteger(params2['int'])
} else if (typeof params2 == 'number') {
this.setByInteger(params2)
} else if (typeof params2['hex'] != 'undefined') {
this.setValueHex(params2['hex'])
}
}
}
YAHOO.lang.extend(KJUR.asn1.DEREnumerated, KJUR.asn1.ASN1Object)
KJUR.asn1.DERUTF8String = function (params2) {
KJUR.asn1.DERUTF8String.superclass.constructor.call(this, params2)
this.hT = '0c'
}
YAHOO.lang.extend(KJUR.asn1.DERUTF8String, KJUR.asn1.DERAbstractString)
KJUR.asn1.DERNumericString = function (params2) {
KJUR.asn1.DERNumericString.superclass.constructor.call(this, params2)
this.hT = '12'
}
YAHOO.lang.extend(KJUR.asn1.DERNumericString, KJUR.asn1.DERAbstractString)
KJUR.asn1.DERPrintableString = function (params2) {
KJUR.asn1.DERPrintableString.superclass.constructor.call(this, params2)
this.hT = '13'
}
YAHOO.lang.extend(KJUR.asn1.DERPrintableString, KJUR.asn1.DERAbstractString)
KJUR.asn1.DERTeletexString = function (params2) {
KJUR.asn1.DERTeletexString.superclass.constructor.call(this, params2)
this.hT = '14'
}
YAHOO.lang.extend(KJUR.asn1.DERTeletexString, KJUR.asn1.DERAbstractString)
KJUR.asn1.DERIA5String = function (params2) {
KJUR.asn1.DERIA5String.superclass.constructor.call(this, params2)
this.hT = '16'
}
YAHOO.lang.extend(KJUR.asn1.DERIA5String, KJUR.asn1.DERAbstractString)
KJUR.asn1.DERUTCTime = function (params2) {
KJUR.asn1.DERUTCTime.superclass.constructor.call(this, params2)
this.hT = '17'
this.setByDate = function (dateObject) {
this.hTLV = null
this.isModified = true
this.date = dateObject
this.s = this.formatDate(this.date, 'utc')
this.hV = stohex(this.s)
}
this.getFreshValueHex = function () {
if (typeof this.date == 'undefined' && typeof this.s == 'undefined') {
this.date = new Date()
this.s = this.formatDate(this.date, 'utc')
this.hV = stohex(this.s)
}
return this.hV
}
if (params2 !== void 0) {
if (params2.str !== void 0) {
this.setString(params2.str)
} else if (typeof params2 == 'string' && params2.match(/^[0-9]{12}Z$/)) {
this.setString(params2)
} else if (params2.hex !== void 0) {
this.setStringHex(params2.hex)
} else if (params2.date !== void 0) {
this.setByDate(params2.date)
}
}
}
YAHOO.lang.extend(KJUR.asn1.DERUTCTime, KJUR.asn1.DERAbstractTime)
KJUR.asn1.DERGeneralizedTime = function (params2) {
KJUR.asn1.DERGeneralizedTime.superclass.constructor.call(this, params2)
this.hT = '18'
this.withMillis = false
this.setByDate = function (dateObject) {
this.hTLV = null
this.isModified = true
this.date = dateObject
this.s = this.formatDate(this.date, 'gen', this.withMillis)
this.hV = stohex(this.s)
}
this.getFreshValueHex = function () {
if (this.date === void 0 && this.s === void 0) {
this.date = new Date()
this.s = this.formatDate(this.date, 'gen', this.withMillis)
this.hV = stohex(this.s)
}
return this.hV
}
if (params2 !== void 0) {
if (params2.str !== void 0) {
this.setString(params2.str)
} else if (typeof params2 == 'string' && params2.match(/^[0-9]{14}Z$/)) {
this.setString(params2)
} else if (params2.hex !== void 0) {
this.setStringHex(params2.hex)
} else if (params2.date !== void 0) {
this.setByDate(params2.date)
}
if (params2.millis === true) {
this.withMillis = true
}
}
}
YAHOO.lang.extend(KJUR.asn1.DERGeneralizedTime, KJUR.asn1.DERAbstractTime)
KJUR.asn1.DERSequence = function (params2) {
KJUR.asn1.DERSequence.superclass.constructor.call(this, params2)
this.hT = '30'
this.getFreshValueHex = function () {
var h2 = ''
for (var i2 = 0; i2 < this.asn1Array.length; i2++) {
var asn1Obj = this.asn1Array[i2]
h2 += asn1Obj.getEncodedHex()
}
this.hV = h2
return this.hV
}
}
YAHOO.lang.extend(KJUR.asn1.DERSequence, KJUR.asn1.DERAbstractStructured)
KJUR.asn1.DERSet = function (params2) {
KJUR.asn1.DERSet.superclass.constructor.call(this, params2)
this.hT = '31'
this.sortFlag = true
this.getFreshValueHex = function () {
var a2 = new Array()
for (var i2 = 0; i2 < this.asn1Array.length; i2++) {
var asn1Obj = this.asn1Array[i2]
a2.push(asn1Obj.getEncodedHex())
}
if (this.sortFlag == true) a2.sort()
this.hV = a2.join('')
return this.hV
}
if (typeof params2 != 'undefined') {
if (typeof params2.sortflag != 'undefined' && params2.sortflag == false)
this.sortFlag = false
}
}
YAHOO.lang.extend(KJUR.asn1.DERSet, KJUR.asn1.DERAbstractStructured)
KJUR.asn1.DERTaggedObject = function (params2) {
KJUR.asn1.DERTaggedObject.superclass.constructor.call(this)
this.hT = 'a0'
this.hV = ''
this.isExplicit = true
this.asn1Object = null
this.setASN1Object = function (isExplicitFlag, tagNoHex, asn1Object) {
this.hT = tagNoHex
this.isExplicit = isExplicitFlag
this.asn1Object = asn1Object
if (this.isExplicit) {
this.hV = this.asn1Object.getEncodedHex()
this.hTLV = null
this.isModified = true
} else {
this.hV = null
this.hTLV = asn1Object.getEncodedHex()
this.hTLV = this.hTLV.replace(/^../, tagNoHex)
this.isModified = false
}
}
this.getFreshValueHex = function () {
return this.hV
}
if (typeof params2 != 'undefined') {
if (typeof params2['tag'] != 'undefined') {
this.hT = params2['tag']
}
if (typeof params2['explicit'] != 'undefined') {
this.isExplicit = params2['explicit']
}
if (typeof params2['obj'] != 'undefined') {
this.asn1Object = params2['obj']
this.setASN1Object(this.isExplicit, this.hT, this.asn1Object)
}
}
}
YAHOO.lang.extend(KJUR.asn1.DERTaggedObject, KJUR.asn1.ASN1Object)
var __extends =
(globalThis && globalThis.__extends) ||
(function () {
var extendStatics2 = function (d3, b2) {
extendStatics2 =
Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array &&
function (d4, b3) {
d4.__proto__ = b3
}) ||
function (d4, b3) {
for (var p2 in b3)
if (Object.prototype.hasOwnProperty.call(b3, p2)) d4[p2] = b3[p2]
}
return extendStatics2(d3, b2)
}
return function (d3, b2) {
if (typeof b2 !== 'function' && b2 !== null)
throw new TypeError(
'Class extends value ' + String(b2) + ' is not a constructor or null'
)
extendStatics2(d3, b2)
function __() {
this.constructor = d3
}
d3.prototype =
b2 === null
? Object.create(b2)
: ((__.prototype = b2.prototype), new __())
}
})()
var JSEncryptRSAKey = (function (_super) {
__extends(JSEncryptRSAKey2, _super)
function JSEncryptRSAKey2(key2) {
var _this = _super.call(this) || this
if (key2) {
if (typeof key2 === 'string') {
_this.parseKey(key2)
} else if (
JSEncryptRSAKey2.hasPrivateKeyProperty(key2) ||
JSEncryptRSAKey2.hasPublicKeyProperty(key2)
) {
_this.parsePropertiesFrom(key2)
}
}
return _this
}
JSEncryptRSAKey2.prototype.parseKey = function (pem) {
try {
var modulus = 0
var public_exponent = 0
var reHex = /^\s*(?:[0-9A-Fa-f][0-9A-Fa-f]\s*)+$/
var der = reHex.test(pem) ? Hex.decode(pem) : Base64.unarmor(pem)
var asn1 = ASN1.decode(der)
if (asn1.sub.length === 3) {
asn1 = asn1.sub[2].sub[0]
}
if (asn1.sub.length === 9) {
modulus = asn1.sub[1].getHexStringValue()
this.n = parseBigInt(modulus, 16)
public_exponent = asn1.sub[2].getHexStringValue()
this.e = parseInt(public_exponent, 16)
var private_exponent = asn1.sub[3].getHexStringValue()
this.d = parseBigInt(private_exponent, 16)
var prime1 = asn1.sub[4].getHexStringValue()
this.p = parseBigInt(prime1, 16)
var prime2 = asn1.sub[5].getHexStringValue()
this.q = parseBigInt(prime2, 16)
var exponent1 = asn1.sub[6].getHexStringValue()
this.dmp1 = parseBigInt(exponent1, 16)
var exponent2 = asn1.sub[7].getHexStringValue()
this.dmq1 = parseBigInt(exponent2, 16)
var coefficient = asn1.sub[8].getHexStringValue()
this.coeff = parseBigInt(coefficient, 16)
} else if (asn1.sub.length === 2) {
if (asn1.sub[0].sub) {
var bit_string = asn1.sub[1]
var sequence = bit_string.sub[0]
modulus = sequence.sub[0].getHexStringValue()
this.n = parseBigInt(modulus, 16)
public_exponent = sequence.sub[1].getHexStringValue()
this.e = parseInt(public_exponent, 16)
} else {
modulus = asn1.sub[0].getHexStringValue()
this.n = parseBigInt(modulus, 16)
public_exponent = asn1.sub[1].getHexStringValue()
this.e = parseInt(public_exponent, 16)
}
} else {
return false
}
return true
} catch (ex) {
return false
}
}
JSEncryptRSAKey2.prototype.getPrivateBaseKey = function () {
var options2 = {
array: [
new KJUR.asn1.DERInteger({ int: 0 }),
new KJUR.asn1.DERInteger({ bigint: this.n }),
new KJUR.asn1.DERInteger({ int: this.e }),
new KJUR.asn1.DERInteger({ bigint: this.d }),
new KJUR.asn1.DERInteger({ bigint: this.p }),
new KJUR.asn1.DERInteger({ bigint: this.q }),
new KJUR.asn1.DERInteger({ bigint: this.dmp1 }),
new KJUR.asn1.DERInteger({ bigint: this.dmq1 }),
new KJUR.asn1.DERInteger({ bigint: this.coeff }),
],
}
var seq = new KJUR.asn1.DERSequence(options2)
return seq.getEncodedHex()
}
JSEncryptRSAKey2.prototype.getPrivateBaseKeyB64 = function () {
return hex2b64(this.getPrivateBaseKey())
}
JSEncryptRSAKey2.prototype.getPublicBaseKey = function () {
var first_sequence = new KJUR.asn1.DERSequence({
array: [
new KJUR.asn1.DERObjectIdentifier({ oid: '1.2.840.113549.1.1.1' }),
new KJUR.asn1.DERNull(),
],
})
var second_sequence = new KJUR.asn1.DERSequence({
array: [
new KJUR.asn1.DERInteger({ bigint: this.n }),
new KJUR.asn1.DERInteger({ int: this.e }),
],
})
var bit_string = new KJUR.asn1.DERBitString({
hex: '00' + second_sequence.getEncodedHex(),
})
var seq = new KJUR.asn1.DERSequence({
array: [first_sequence, bit_string],
})
return seq.getEncodedHex()
}
JSEncryptRSAKey2.prototype.getPublicBaseKeyB64 = function () {
return hex2b64(this.getPublicBaseKey())
}
JSEncryptRSAKey2.wordwrap = function (str, width) {
width = width || 64
if (!str) {
return str
}
var regex3 = '(.{1,' + width + '})( +|$\n?)|(.{1,' + width + '})'
return str.match(RegExp(regex3, 'g')).join('\n')
}
JSEncryptRSAKey2.prototype.getPrivateKey = function () {
var key2 = '-----BEGIN RSA PRIVATE KEY-----\n'
key2 += JSEncryptRSAKey2.wordwrap(this.getPrivateBaseKeyB64()) + '\n'
key2 += '-----END RSA PRIVATE KEY-----'
return key2
}
JSEncryptRSAKey2.prototype.getPublicKey = function () {
var key2 = '-----BEGIN PUBLIC KEY-----\n'
key2 += JSEncryptRSAKey2.wordwrap(this.getPublicBaseKeyB64()) + '\n'
key2 += '-----END PUBLIC KEY-----'
return key2
}
JSEncryptRSAKey2.hasPublicKeyProperty = function (obj) {
obj = obj || {}
return obj.hasOwnProperty('n') && obj.hasOwnProperty('e')
}
JSEncryptRSAKey2.hasPrivateKeyProperty = function (obj) {
obj = obj || {}
return (
obj.hasOwnProperty('n') &&
obj.hasOwnProperty('e') &&
obj.hasOwnProperty('d') &&
obj.hasOwnProperty('p') &&
obj.hasOwnProperty('q') &&
obj.hasOwnProperty('dmp1') &&
obj.hasOwnProperty('dmq1') &&
obj.hasOwnProperty('coeff')
)
}
JSEncryptRSAKey2.prototype.parsePropertiesFrom = function (obj) {
this.n = obj.n
this.e = obj.e
if (obj.hasOwnProperty('d')) {
this.d = obj.d
this.p = obj.p
this.q = obj.q
this.dmp1 = obj.dmp1
this.dmq1 = obj.dmq1
this.coeff = obj.coeff
}
}
return JSEncryptRSAKey2
})(RSAKey)
var _a
var version =
typeof process !== 'undefined'
? (_a = process.env) === null || _a === void 0
? void 0
: _a.npm_package_version
: void 0
var JSEncrypt = (function () {
function JSEncrypt2(options2) {
if (options2 === void 0) {
options2 = {}
}
options2 = options2 || {}
this.default_key_size = options2.default_key_size
? parseInt(options2.default_key_size, 10)
: 1024
this.default_public_exponent = options2.default_public_exponent || '010001'
this.log = options2.log || false
this.key = null
}
JSEncrypt2.prototype.setKey = function (key2) {
if (this.log && this.key) {
console.warn('A key was already set, overriding existing.')
}
this.key = new JSEncryptRSAKey(key2)
}
JSEncrypt2.prototype.setPrivateKey = function (privkey) {
this.setKey(privkey)
}
JSEncrypt2.prototype.setPublicKey = function (pubkey) {
this.setKey(pubkey)
}
JSEncrypt2.prototype.decrypt = function (str) {
try {
return this.getKey().decrypt(b64tohex(str))
} catch (ex) {
return false
}
}
JSEncrypt2.prototype.encrypt = function (str) {
try {
return hex2b64(this.getKey().encrypt(str))
} catch (ex) {
return false
}
}
JSEncrypt2.prototype.sign = function (str, digestMethod, digestName) {
try {
return hex2b64(this.getKey().sign(str, digestMethod, digestName))
} catch (ex) {
return false
}
}
JSEncrypt2.prototype.verify = function (str, signature, digestMethod) {
try {
return this.getKey().verify(str, b64tohex(signature), digestMethod)
} catch (ex) {
return false
}
}
JSEncrypt2.prototype.getKey = function (cb) {
if (!this.key) {
this.key = new JSEncryptRSAKey()
if (cb && {}.toString.call(cb) === '[object Function]') {
this.key.generateAsync(
this.default_key_size,
this.default_public_exponent,
cb
)
return
}
this.key.generate(this.default_key_size, this.default_public_exponent)
}
return this.key
}
JSEncrypt2.prototype.getPrivateKey = function () {
return this.getKey().getPrivateKey()
}
JSEncrypt2.prototype.getPrivateKeyB64 = function () {
return this.getKey().getPrivateBaseKeyB64()
}
JSEncrypt2.prototype.getPublicKey = function () {
return this.getKey().getPublicKey()
}
JSEncrypt2.prototype.getPublicKeyB64 = function () {
return this.getKey().getPublicBaseKeyB64()
}
JSEncrypt2.version = version
return JSEncrypt2
})()
const getFlashKey$1 = () => {
return request({
url: `/api/v1/auth/flushkey`,
method: 'get',
})
}
const loginApi = (identity2, userName, password) => {
return request({
url: `/api/v1/auth/login`,
method: 'post',
data: {
identity: identity2,
userName,
password,
},
})
}
const rasEncrypt = (str, publicKey, keyLen = '2048') => {
let encryptor = new JSEncrypt({ default_key_size: keyLen })
encryptor.setPublicKey(publicKey)
let passwordEncryp = encryptor.encrypt(str)
return passwordEncryp
}
const login$2 = async (userName, password = '') => {
if (!userName) {
ElMessage({
message: Language$1._t('\u8D26\u53F7\u4E0D\u80FD\u4E3A\u7A7A\uFF01'),
type: 'warning',
})
return
}
if (!password) {
ElMessage({
message: Language$1._t('\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A\uFF01'),
type: 'warning',
})
return
}
let flashEncryptConfig = await getFlashKey$1().then((res) => {
return res
})
const passwordEncrypt = password
? rasEncrypt(password, flashEncryptConfig.publicKey)
: ''
const token = await loginApi(
flashEncryptConfig.identity,
userName,
passwordEncrypt
).then(
(res) => {
return res
},
(err) => {
console.error(err)
}
)
if (token) {
Session.set('Token', token)
const user2 = await request('/api/v1/authority/user/current')
const permissions = await request(
`/api/v1/authority/roleclaim/user/${user2.id}`
)
userInfo.user = user2
userInfo.permissions.all = permissions.all
userInfo.permissions.pages = permissions.left
userInfo.permissions.widgets = permissions.right
}
return {
token,
}
}
function getUser(keyword) {
return request({
url: `/api/v1/authority/user?keyword=${keyword}`,
method: 'get',
})
}
function getUserById(id2) {
return request({
url: `/api/v1/authority/user/${id2}`,
method: 'get',
})
}
function addUser(data2) {
return request({
url: `/api/v1/authority/user`,
method: 'post',
data: data2,
})
}
function updUser(id2, data2) {
return request({
url: `/api/v1/authority/user/${id2}`,
method: 'put',
data: data2,
})
}
function delUser(id2) {
return request({
url: `/api/v1/authority/user/${id2}`,
method: 'delete',
})
}
function getTokenById(id2) {
return request({
url: `/api/v1/authority/user/${id2}/password/token`,
method: 'get',
})
}
function updUserPassword(id2, data2) {
return request({
url: `/api/v1/authority/user/${id2}/password`,
method: 'put',
data: data2,
})
}
function exportUserData() {
return request({
responseType: 'blob',
url: `/api/v1/authority/user/file`,
method: 'get',
})
}
function importUserData(data2) {
return request({
url: `/api/v1/authority/user/file`,
method: 'post',
data: data2,
})
}
function getUserAuthority(id2) {
return request({
url: `/api/v1/authority/roleclaim/user/${id2}`,
method: 'get',
})
}
function getFlashKey() {
return request({
url: `/api/v1/auth/flushkey`,
method: 'get',
})
}
function getPermissionList() {
return request({
url: `/api/v1/authority/roleclaim`,
method: 'get',
})
}
function getOrganizationTree() {
return request({
url: `/api/v1/authority/organization/tree`,
method: 'get',
})
}
function getRole() {
return request({
url: `/api/v1/authority/role`,
method: 'get',
})
}
function getRoleById(id2) {
return request({
url: `/api/v1/authority/role/${id2}`,
method: 'get',
})
}
function addRole(data2) {
return request({
url: `/api/v1/authority/role`,
method: 'post',
data: data2,
})
}
function updRole(data2) {
return request({
url: `/api/v1/authority/role/${data2.id}`,
method: 'put',
data: data2,
})
}
function delRole(id2) {
return request({
url: `/api/v1/authority/role/${id2}`,
method: 'delete',
})
}
function getRoleAuthority(id2) {
return request({
url: `/api/v1/authority/roleclaim/role/${id2}`,
method: 'get',
})
}
function updRoleAuthority(id2, data2) {
return request({
url: `/api/v1/authority/roleclaim/role/${id2}`,
method: 'put',
data: data2,
})
}
var Login_vue_vue_type_style_index_0_scoped_true_lang$1 = ''
var Login_vue_vue_type_style_index_1_lang$1 = ''
const _hoisted_1$45 = { class: 'login' }
const _hoisted_2$3z = { class: 'login-input login-username' }
const _hoisted_3$3c = ['onClick']
const _hoisted_4$2L = { class: 'login-input login-password' }
const _hoisted_5$2t = { style: { position: 'relative', height: '100%' } }
const _hoisted_6$2c = { class: 'login-btn-text' }
const _hoisted_7$1V = { style: { letterSpacing: 'normal' } }
const _sfc_main$4D = /* @__PURE__ */ defineComponent({
props: {
editing: { type: Boolean },
node: null,
},
setup(__props2) {
const $props2 = __props2
useCssVars((_ctx) => ({
'6ad15489': inputHeight.value,
}))
const props2 = reactive($props2.node.props)
props2.inputStyle = props2.inputStyle || {
fontFamily: 'Alibaba PuHuiTi',
fontWeight: '400',
textDecoration: 'none',
color: '#9B9B9B',
alignItems: 'center',
textAlign: 'left',
letterSpacing: '2px',
backgroundColor: '#ECECEE',
borderWidth: '1px',
borderStyle: 'solid',
borderColor: '#E7E7E7',
borderRadius: '3px',
fontSize: '14px',
lineHeight: '18px',
}
props2.buttonStyle = props2.buttonStyle || {
fontFamily: 'Alibaba PuHuiTi',
fontWeight: '400',
textDecoration: 'none',
color: '#FFFFFF',
alignItems: 'center',
textAlign: 'center',
letterSpacing: '2px',
backgroundColor: '#3D6EFF',
borderWidth: '0px',
borderStyle: 'solid',
borderColor: '#E7E7E7',
borderRadius: '3px',
fontSize: '14px',
lineHeight: '18px',
}
props2.jumpPage = props2.jumpPage || {
id: '',
name: '',
}
props2.usernameInfo = props2.usernameInfo || {
selectable: false,
}
const loginBoxRef = ref()
const popperClass = ref(`user-select-popper-${Date.now()}`)
const computedPopperClass = computed(() => {
return `${popperClass.value} ${
app.editing ? 'editing' : 'run'
} user-select-popper`
})
const userSelect = ref()
const userList = ref([])
let userName = ref('')
let passWord = ref('')
let passWordIcon = ref(false)
let placeholderStyle = reactive(
computed(() => {
let style2 = {
'--color': props2.inputStyle.color,
}
return style2
})
)
const getUserList = async () => {
const res = await getUser('')
userList.value = res.map((item2) => {
return {
value: item2.userName,
label: item2.userName,
}
})
}
if (props2.usernameInfo.selectable) {
getUserList()
}
const jumpPage = () => {
if (!$props2.editing) {
login$2(userName.value.trim(), passWord.value.trim()).then((res) => {
if (res.token) {
if (!props2.jumpPage.id) {
history.go()
} else {
push$4(props2.jumpPage)
Variable._store['Client_LoginUser'] = userName.value.trim()
}
}
})
}
}
const transformStyle = (style2) => {
let arr = []
for (const prop in style2) {
if (Object.hasOwnProperty.call(style2, prop)) {
arr.push(`${lodash$2.exports.kebabCase(prop)}: ${style2[prop]}`)
}
}
return arr.join(';')
}
watch$1(props2.inputStyle, () => {
setCompStyle()
})
watch$1(props2.usernameInfo, () => {
nextTick(() => {
setCompStyle()
})
})
const init2 = () => {
setCompStyle()
}
const setCompStyle = () => {
loginBoxRef.value.querySelectorAll('.login').forEach((el2) => {
el2.setAttribute(
'style',
`--el-select-input-color: ${props2.inputStyle.color}; --input-background-color: ${props2.inputStyle.backgroundColor};--input-border-width: ${props2.inputStyle.borderWidth}`
)
})
if (!props2.usernameInfo.selectable) {
return
}
const inputStyle = {
...unref(props2.inputStyle),
'--color': props2.inputStyle.color,
}
loginBoxRef.value
.querySelectorAll('.user-select input')
.forEach((el2) => {
el2.setAttribute('style', transformStyle(inputStyle))
})
loginBoxRef.value
.querySelectorAll('.user-select .el-input.el-input--suffix')
.forEach((el2) => {
el2.setAttribute('style', transformStyle(inputStyle))
})
loginBoxRef.value.querySelectorAll('.user-select').forEach((el2) => {
el2.setAttribute(
'style',
`--el-select-input-color: ${props2.inputStyle.color}`
)
})
document.body.querySelectorAll(`.${popperClass.value}`).forEach((el2) => {
el2.setAttribute(
'style',
`${el2.getAttribute('style')};--el-color-primary: ${
props2.inputStyle.color
}`
)
})
}
const maskInput = ref()
const hideInputMask = () => {
if (maskInput.value) {
setTimeout(() => {
userName.value = maskInput.value.value
maskInput.value.style.display = 'none'
userSelect.value.focus()
}, 0)
}
}
let inputHeight = ref('50px')
const handleVisibleChange = (val2) => {
if (val2) {
inputHeight.value =
loginBoxRef.value.querySelector('.login-username').offsetHeight +
10 +
'px'
}
}
onMounted(() => {
init2()
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
return (
openBlock(),
createElementBlock(
'form',
{
ref_key: 'loginBoxRef',
ref: loginBoxRef,
class: 'login-box',
},
[
createElementVNode('div', _hoisted_1$45, [
createElementVNode('div', _hoisted_2$3z, [
!unref(props2).usernameInfo.selectable
? (openBlock(),
createBlock(
_component_el_input,
{
key: 0,
class: 'login-input-inset',
'input-style': {
...unref(props2).inputStyle,
...unref(placeholderStyle),
},
placeholder: _ctx._t('\u8BF7\u8F93\u5165\u8D26\u53F7'),
modelValue: userName.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (userName.value = $event)),
},
null,
8,
['input-style', 'placeholder', 'modelValue']
))
: (openBlock(),
createElementBlock(
Fragment,
{ key: 1 },
[
createVNode$1(
_component_el_select,
{
class: 'user-select',
ref_key: 'userSelect',
ref: userSelect,
modelValue: userName.value,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(userName.value = $event)),
filterable: '',
'fit-input-width': true,
'automatic-dropdown': false,
placeholder: _ctx._t(
'\u8BF7\u8F93\u5165\u8D26\u53F7'
),
'loading-text': _ctx._t('\u540E\u53F0\u52A0\u8F7D'),
'no-data-text': _ctx._t('\u6682\u65E0\u6570\u636E'),
teleported: !unref(app).editing,
placement: 'bottom',
'popper-class': unref(computedPopperClass),
onVisibleChange: handleVisibleChange,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(userList.value, (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
[
'modelValue',
'placeholder',
'loading-text',
'no-data-text',
'teleported',
'popper-class',
]
),
withDirectives(
createElementVNode(
'input',
{
class: 'auto-input-mask',
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(userName.value = $event)),
ref_key: 'maskInput',
ref: maskInput,
},
null,
512
),
[[vModelText, userName.value]]
),
createElementVNode(
'div',
{
class: 'auto-input-wrapper',
onClick: withModifiers(hideInputMask, ['prevent']),
},
null,
8,
_hoisted_3$3c
),
],
64
)),
]),
createElementVNode('div', _hoisted_4$2L, [
createElementVNode('div', _hoisted_5$2t, [
createVNode$1(
_component_el_input,
{
class: 'login-input-inset',
'input-style': unref(props2).inputStyle,
placeholder: _ctx._t('\u8BF7\u8F93\u5165\u5BC6\u7801'),
type: passWordIcon.value ? 'text' : 'password',
modelValue: passWord.value,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) => (passWord.value = $event)),
},
null,
8,
['input-style', 'placeholder', 'type', 'modelValue']
),
createElementVNode(
'i',
{
onClick:
_cache[4] ||
(_cache[4] = ($event) =>
(passWordIcon.value = !passWordIcon.value)),
class: normalizeClass([
'iconfont login-password-icon',
passWordIcon.value ? 'icon-xianshi' : 'icon-yincang',
]),
style: normalizeStyle$1({
'font-size': unref(props2).inputStyle.fontSize,
'margin-top': `-${
parseFloat(unref(props2).inputStyle.fontSize) / 2
}px`,
color: unref(props2).inputStyle.color,
}),
},
null,
6
),
]),
]),
createElementVNode(
'div',
{
class: 'login-btn',
onClick: jumpPage,
style: normalizeStyle$1({ ...unref(props2).buttonStyle }),
},
[
createElementVNode('div', _hoisted_6$2c, [
createTextVNode(
toDisplayString$1(_ctx._t('\u767B\u5F55').slice(0, -1)),
1
),
createElementVNode(
'span',
_hoisted_7$1V,
toDisplayString$1(_ctx._t('\u767B\u5F55').slice(-1)),
1
),
]),
],
4
),
]),
],
512
)
)
}
},
})
var Login$2 = /* @__PURE__ */ _export_sfc(_sfc_main$4D, [
['__scopeId', 'data-v-336dfc29'],
])
var __glob_2_86 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Login$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var NumberFilter_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2q = (n2) => (
pushScopeId('data-v-b83af8e6'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$44 = { class: 'number-filter-settings' }
const _hoisted_2$3y = { class: 'adjustment' }
const _hoisted_3$3b = { class: 'title' }
const _hoisted_4$2K = /* @__PURE__ */ createTextVNode(
' \u8BBE\u5B9A\u9ED8\u8BA4\u6761\u4EF6 '
)
const _hoisted_5$2s = { class: 'default-setting' }
const _hoisted_6$2b = { class: 'number-filter' }
const _hoisted_7$1U = { class: 'title' }
const _hoisted_8$1H = /* @__PURE__ */ createTextVNode(
' \u9501\u5B9A\u7B5B\u9009\u6761\u4EF6 '
)
const _hoisted_9$1z = /* @__PURE__ */ _withScopeId$2q(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-tishi1',
title:
'\u5F00\u542F\u540E\uFF0C\u8FD0\u884C\u754C\u9762\u4E0D\u53EF\u66F4\u6539\u7B5B\u9009\u6761\u4EF6',
},
null,
-1
)
)
const config$g = {
category: 'controller',
name: '\u6570\u503C\u7B5B\u9009',
icon: 'icon-shaixuan',
permission: true,
styleConfig: {
lineHeight: false,
},
}
const _sfc_main$4C = /* @__PURE__ */ defineComponent({
props: {
editing: { type: Boolean },
node: null,
text: null,
},
setup(__props2) {
const $props2 = __props2
const props2 = reactive($props2.node.props)
props2.isDefaultCondition = props2.isDefaultCondition || false
props2.condition = props2.condition || {
type: '',
value1: void 0,
value2: void 0,
}
props2.isLockCondition = props2.isLockCondition || false
props2.selectChartDataList = props2.selectChartDataList || []
const confirm2 = (selectChartDataList = []) => {
props2.selectChartDataList = selectChartDataList
}
function limitNumber2(value2) {
let str = value2
str = str.replace(/[^(\-)?\d.]/g, '')
str = str.replace(/\.{2,}/g, '.')
str = str.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.')
if (str.indexOf('-') === 0);
else if (str.indexOf('.') === 0 && str !== '') {
str = '0' + str
} else if (str.indexOf('.') < 0 && str !== '') {
str = parseFloat(str) + ''
}
return str
}
function verifyData() {
props2.condition
}
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input = resolveComponent('el-input')
return (
openBlock(),
createElementBlock('div', _hoisted_1$44, [
createVNode$1(
SettingItem$1,
{ title: '\u529F\u80FD' },
{
default: withCtx(() => [
createVNode$1(
ControllerCharts$4,
{
dialogTitle: '\u521B\u5EFA\u4E0B\u62C9\u5217\u8868',
selectChartDataList: unref(props2).selectChartDataList,
fieldType: 1,
onConfirm: confirm2,
},
null,
8,
['selectChartDataList']
),
]),
_: 1,
}
),
createVNode$1(
SettingItem$1,
{ title: '\u914D\u7F6E' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$3y, [
createElementVNode('div', _hoisted_3$3b, [
createVNode$1(
_component_el_checkbox,
{
class:
'cms-el-checkbox-font-size-12 regular cms-el-checkbox',
modelValue: unref(props2).isDefaultCondition,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(props2).isDefaultCondition = $event)),
},
{
default: withCtx(() => [_hoisted_4$2K]),
_: 1,
},
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_5$2s, [
createElementVNode('div', _hoisted_6$2b, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select__popper',
placeholder: '\u8BF7\u9009\u62E9',
modelValue: unref(props2).condition.type,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(props2).condition.type = $event)),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(filterList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
withDirectives(
createVNode$1(
_component_el_input,
{
modelValue: unref(props2).condition.value1,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(props2).condition.value1 = $event)),
title: unref(props2).condition.value1,
controls: false,
placeholder: '\u6570\u503C',
onBlur: verifyData,
onInput:
_cache[3] ||
(_cache[3] = ($event) =>
(unref(props2).condition.value1 =
limitNumber2($event))),
},
null,
8,
['modelValue', 'title']
),
[
[
vShow,
[...unref(showAll), ...unref(showOne)].includes(
unref(props2).condition.type
),
],
]
),
withDirectives(
createElementVNode('span', null, '-', 512),
[
[
vShow,
unref(showAll).includes(
unref(props2).condition.type
),
],
]
),
withDirectives(
createVNode$1(
_component_el_input,
{
modelValue: unref(props2).condition.value2,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(props2).condition.value2 = $event)),
min: unref(props2).condition.value1,
title: unref(props2).condition.value2,
placeholder: '\u6570\u503C',
onBlur: verifyData,
onInput:
_cache[5] ||
(_cache[5] = ($event) =>
(unref(props2).condition.value2 =
limitNumber2($event))),
},
null,
8,
['modelValue', 'min', 'title']
),
[
[
vShow,
unref(showAll).includes(
unref(props2).condition.type
),
],
]
),
]),
]),
createElementVNode('div', _hoisted_7$1U, [
createVNode$1(
_component_el_checkbox,
{
class:
'cms-el-checkbox-font-size-12 regular cms-el-checkbox',
modelValue: unref(props2).isLockCondition,
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) =>
(unref(props2).isLockCondition = $event)),
},
{
default: withCtx(() => [_hoisted_8$1H, _hoisted_9$1z]),
_: 1,
},
8,
['modelValue']
),
]),
]),
]),
_: 1,
}
),
])
)
}
},
})
var NumberFilter_settings = /* @__PURE__ */ _export_sfc(_sfc_main$4C, [
['__scopeId', 'data-v-b83af8e6'],
])
var __glob_2_87 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$g,
default: NumberFilter_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var NumberFilter_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$43 = { class: 'line' }
const _hoisted_2$3x = { class: 'connector' }
const _hoisted_3$3a = {
key: 0,
class: 'iconfont icon-jinyong1 disable-lock',
}
const _sfc_main$4B = /* @__PURE__ */ defineComponent({
props: {
editing: { type: Boolean },
node: null,
text: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
const props2 = reactive($props2.node.props)
props2.selectChartDataList = props2.selectChartDataList || []
props2.isDefaultCondition = props2.isDefaultCondition || false
props2.condition = props2.condition || {
type: '',
value1: void 0,
value2: void 0,
}
props2.isLockCondition = props2.isLockCondition || false
const numberFilterRef = ref()
let selectValue = ref(
props2.isDefaultCondition ? props2.condition.type : ''
)
let searchValue1 = ref(
props2.isDefaultCondition ? props2.condition.value1 : void 0
)
let searchValue2 = ref(
props2.isDefaultCondition ? props2.condition.value2 : void 0
)
function limitNumber2(value2) {
let str = value2
str = str.replace(/[^(\-)?\d.]/g, '')
str = str.replace(/\.{2,}/g, '.')
str = str.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.')
if (str.indexOf('-') === 0);
else if (str.indexOf('.') === 0 && str !== '') {
str = '0' + str
} else if (str.indexOf('.') < 0 && str !== '') {
str = parseFloat(str) + ''
}
return str
}
function verifyData() {
if (searchValue1.value === '-' || searchValue1.value === '-0') {
searchValue1.value = '0'
}
if (searchValue2.value === '-' || searchValue2.value === '-0') {
searchValue2.value = '0'
}
if (searchValue1.value > searchValue2.value) {
searchValue2.value = searchValue1.value
}
}
const changeData = () => {
let relativeList = props2.selectChartDataList.map((item2) => {
let data2 = {
chartId: item2.id,
dataSetId: item2.dataSetId,
field: item2.field || '',
}
return data2
})
let type4 = selectValue.value || 'Between'
let value2 = ''
let val1 = searchValue1.value === '' ? null : searchValue1.value
let val2 = searchValue2.value === '' ? null : searchValue2.value
if (showAll.includes(selectValue.value)) {
value2 = [val1, val2]
} else if (showOne.includes(selectValue.value)) {
value2 = val1
} else {
type4 = selectValue.value === 'null' ? 'Equals' : 'NotEquals'
value2 = null
}
let detail = {
controllerId: node2.id,
type: type4,
value: value2,
relativeList,
}
emit(ControllerEventType.UNION_CHART, detail)
emit(ControllerEventType.CHART_DATA, detail)
}
function setData() {
if (props2.isDefaultCondition) {
selectValue.value = props2.condition.type
searchValue1.value = props2.condition.value1
searchValue2.value = props2.condition.value2
changeData_()
}
}
const changeData_ = lodash$2.exports.debounce(() => changeData(), 500, {
maxWait: 1e3,
})
watch$1(
[
() => props2.isDefaultCondition,
() => props2.condition,
() => props2.isLockCondition,
],
setData,
{
deep: true,
}
)
watch$1(
() => props2.selectChartDataList,
() => {
changeData_()
}
)
watch$1(
() => getChartNodes$2(),
() => {
getNewChartsList(props2.selectChartDataList)
},
{
deep: true,
}
)
const dropDownSelect = ref()
watch$1(
() => state$6.current.zoom,
() => {
dropDownSelect.value.visible = false
}
)
onMounted(() => {
changeData_()
})
onUnmounted(() => {})
function setNumberFilter(type4, value1, value2) {
if (props2.isLockCondition) {
console.warn(
Language$1._t(
'\u7B5B\u9009\u6761\u4EF6\u5DF2\u88AB\u9501\u5B9A\uFF0C\u65E0\u6CD5\u4FEE\u6539'
),
node2
)
toast(
node2.id +
': ' +
Language$1._t(
'\u7B5B\u9009\u6761\u4EF6\u5DF2\u88AB\u9501\u5B9A\uFF0C\u65E0\u6CD5\u4FEE\u6539'
),
'warning'
)
return
}
selectValue.value = type4
searchValue1.value = value1
searchValue2.value = value2
changeData_()
}
node2.methods.setNumberFilter = setNumberFilter
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input = resolveComponent('el-input')
return (
openBlock(),
createElementBlock(
'div',
{
ref_key: 'numberFilterRef',
ref: numberFilterRef,
class: normalizeClass([
'number-filter',
{ 'is-lock': unref(props2).isLockCondition },
]),
},
[
createVNode$1(
_component_el_select,
{
modelValue: selectValue.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (selectValue.value = $event)),
class: 'drop-down-select',
ref_key: 'dropDownSelect',
ref: dropDownSelect,
'popper-class': 'drop-down-popper',
onVisibleChange:
_cache[1] ||
(_cache[1] = ($event) =>
unref(visibleChange)(dropDownSelect.value, $event)),
'suffix-transition': false,
disabled: unref(props2).isLockCondition,
onChange: changeData,
teleported: false,
placeholder: _ctx._t('\u8BF7\u9009\u62E9'),
style: normalizeStyle$1({
'--backgroundColor': $props2.node.style?.backgroundColor,
}),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(filterList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: _ctx._t(item2.label),
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue', 'disabled', 'placeholder', 'style']
),
withDirectives(
createElementVNode('div', _hoisted_1$43, null, 512),
[[vShow, !unref(unShow).includes(selectValue.value)]]
),
withDirectives(
createVNode$1(
_component_el_input,
{
class: 'select-input',
placeholder: _ctx._t('\u6570\u503C'),
onChange: unref(changeData_),
modelValue: searchValue1.value,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) => (searchValue1.value = $event)),
title: searchValue1.value,
onInput:
_cache[3] ||
(_cache[3] = ($event) =>
(searchValue1.value = limitNumber2($event))),
onBlur: verifyData,
disabled: unref(props2).isLockCondition,
},
null,
8,
['placeholder', 'onChange', 'modelValue', 'title', 'disabled']
),
[
[
vShow,
[...unref(showAll), ...unref(showOne)].includes(
selectValue.value
),
],
]
),
withDirectives(createElementVNode('div', _hoisted_2$3x, '-', 512), [
[vShow, unref(showAll).includes(selectValue.value)],
]),
withDirectives(
createVNode$1(
_component_el_input,
{
class: 'select-input',
placeholder: _ctx._t('\u6570\u503C'),
onChange: unref(changeData_),
modelValue: searchValue2.value,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) => (searchValue2.value = $event)),
title: searchValue2.value,
onInput:
_cache[5] ||
(_cache[5] = ($event) =>
(searchValue2.value = limitNumber2($event))),
disabled: unref(props2).isLockCondition,
onBlur: verifyData,
},
null,
8,
['placeholder', 'onChange', 'modelValue', 'title', 'disabled']
),
[[vShow, unref(showAll).includes(selectValue.value)]]
),
unref(props2).isLockCondition
? (openBlock(), createElementBlock('i', _hoisted_3$3a))
: createCommentVNode('', true),
],
2
)
)
}
},
})
var NumberFilter = /* @__PURE__ */ _export_sfc(_sfc_main$4B, [
['__scopeId', 'data-v-52e8202c'],
])
var __glob_2_88 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: NumberFilter,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ReadWriteInput_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2p = (n2) => (
pushScopeId('data-v-f0b66c54'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$42 = { class: 'form' }
const _hoisted_2$3w = { class: 'row' }
const _hoisted_3$39 = /* @__PURE__ */ _withScopeId$2p(() =>
/* @__PURE__ */ createElementVNode(
'label',
null,
'\u5173\u8054\u53D8\u91CF',
-1
)
)
const _hoisted_4$2J = {
key: 0,
class: 'row',
}
const _hoisted_5$2r = /* @__PURE__ */ createTextVNode(
'\u81EA\u5B9A\u4E49\u8F93\u5165\u8303\u56F4'
)
const _hoisted_6$2a = { class: 'ml-a' }
const _hoisted_7$1T = /* @__PURE__ */ _withScopeId$2p(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ style: { margin: '0 10px' } },
'-',
-1
)
)
const _hoisted_8$1G = {
key: 1,
class: 'row',
}
const _hoisted_9$1y = /* @__PURE__ */ createTextVNode(
'\u81EA\u5B9A\u4E49\u5C55\u793A\u7CBE\u5EA6'
)
const _hoisted_10$1r = { class: 'ml-a' }
const _hoisted_11$1j = /* @__PURE__ */ _withScopeId$2p(() =>
/* @__PURE__ */ createElementVNode(
'label',
{ class: 'title' },
'\u5C0F\u6570\u4F4D\u6570',
-1
)
)
const config$f = {
category: 'readWrite',
name: '\u8BFB\u5199\u6846',
icon: 'icon-duxiekuang1',
permission: true,
styleConfig: {
lineHeight: false,
},
props: {
inputSettings: {
autoSelectAll: true,
keyboard: {
enabled: false,
enterClose: false,
},
},
},
}
const _sfc_main$4A = /* @__PURE__ */ defineComponent({
props: {
readOnly: { type: Boolean },
writeOnly: { type: Boolean },
props: null,
},
setup(__props2) {
const $props2 = __props2
const props2 = reactive($props2.props)
const viewState = reactive({
expDialogVisible: false,
})
ref(false)
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_input_number = resolveComponent('el-input-number')
return (
openBlock(),
createBlock(
SettingItem$1,
{ title: '\u529F\u80FD' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$42, [
createElementVNode('div', _hoisted_2$3w, [
_hoisted_3$39,
createVNode$1(
_component_el_input,
{
class: normalizeClass([
{
error: !unref(Expression).isValid(unref(props2).name),
},
'input cms-el-input-x',
]),
placeholder:
'\u8BF7\u8F93\u5165\u53D8\u91CF\u8868\u8FBE\u5F0F',
modelValue: unref(props2).name,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (unref(props2).name = $event)),
title: unref(Expression).inputTip,
},
null,
8,
['class', 'modelValue', 'title']
),
createElementVNode('button', {
class: 'iconfont icon-bianjigongcheng',
onClick:
_cache[1] ||
(_cache[1] = ($event) =>
(unref(viewState).expDialogVisible = true)),
}),
]),
!$props2.readOnly
? (openBlock(),
createElementBlock('div', _hoisted_4$2J, [
createVNode$1(
_component_el_checkbox,
{
class: 'cms-el-checkbox-font-size-12',
'model-value': unref(props2).inputRangeEnabled,
onChange:
_cache[2] ||
(_cache[2] = (val2) =>
(unref(props2).inputRangeEnabled = val2)),
},
{
default: withCtx(() => [_hoisted_5$2r]),
_: 1,
},
8,
['model-value']
),
createElementVNode('div', _hoisted_6$2a, [
createVNode$1(
_component_el_input_number,
{
class: 'input cms-el-input-number-x',
'model-value': unref(props2).inputMin,
disabled: !unref(props2).inputRangeEnabled,
onInput:
_cache[3] ||
(_cache[3] = (val2) =>
(unref(props2).inputMin = val2)),
'controls-position': 'right',
},
null,
8,
['model-value', 'disabled']
),
_hoisted_7$1T,
createVNode$1(
_component_el_input_number,
{
class: 'input cms-el-input-number-x',
'model-value': unref(props2).inputMax,
disabled: !unref(props2).inputRangeEnabled,
onInput:
_cache[4] ||
(_cache[4] = (val2) =>
(unref(props2).inputMax = val2)),
'controls-position': 'right',
},
null,
8,
['model-value', 'disabled']
),
]),
]))
: createCommentVNode('', true),
!$props2.writeOnly
? (openBlock(),
createElementBlock('div', _hoisted_8$1G, [
createVNode$1(
_component_el_checkbox,
{
class: 'cms-el-checkbox-font-size-12',
'model-value': unref(props2).outputFixedEnabled,
onChange:
_cache[5] ||
(_cache[5] = (val2) =>
(unref(props2).outputFixedEnabled = val2)),
},
{
default: withCtx(() => [_hoisted_9$1y]),
_: 1,
},
8,
['model-value']
),
createElementVNode('div', _hoisted_10$1r, [
_hoisted_11$1j,
createVNode$1(
_component_el_input_number,
{
class: 'input cms-el-input-number-x',
'model-value': unref(props2).outputFixed,
min: 0,
max: 10,
precision: 0,
disabled: !unref(props2).outputFixedEnabled,
onInput:
_cache[6] ||
(_cache[6] = (val2) =>
(unref(props2).outputFixed = val2)),
'controls-position': 'right',
},
null,
8,
['model-value', 'disabled']
),
]),
]))
: createCommentVNode('', true),
createVNode$1(
FormulaConfigDialog$2,
{
modelValue: unref(viewState).expDialogVisible,
'onUpdate:modelValue':
_cache[7] ||
(_cache[7] = ($event) =>
(unref(viewState).expDialogVisible = $event)),
code: unref(props2).name,
'onUpdate:code':
_cache[8] ||
(_cache[8] = ($event) => (unref(props2).name = $event)),
},
null,
8,
['modelValue', 'code']
),
]),
]),
_: 1,
}
)
)
}
},
})
var ReadWriteInputSettings = /* @__PURE__ */ _export_sfc(_sfc_main$4A, [
['__scopeId', 'data-v-f0b66c54'],
])
var __glob_2_101 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$f,
default: ReadWriteInputSettings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const config$e = {
category: 'readWrite',
name: '\u6570\u503C\u8F93\u5165',
icon: 'icon-shuzhishuru',
permission: true,
styleConfig: {
lineHeight: false,
},
props: {
inputSettings: {
autoSelectAll: true,
keyboard: {
enabled: false,
enterClose: false,
},
},
},
}
const _sfc_main$4z = /* @__PURE__ */ defineComponent({
props: {},
setup(__props2) {
const props2 = __props2
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
ReadWriteInputSettings,
mergeProps(props2, { writeOnly: '' }),
null,
16
)
)
}
},
})
var __glob_2_89 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$e,
default: _sfc_main$4z,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ReadWriteInput_vue_vue_type_style_index_0_scoped_true_lang$1 = ''
const _hoisted_1$41 = [
'data-binding',
'value',
'onKeydown',
'placeholder',
'readonly',
]
const _hoisted_2$3v = {
key: 1,
class: 'variableShow',
}
const _sfc_main$4y = /* @__PURE__ */ defineComponent({
props: {
readOnly: { type: Boolean },
writeOnly: { type: Boolean },
editing: { type: Boolean },
name: null,
outputFixedEnabled: { type: Boolean },
outputFixed: null,
inputRangeEnabled: { type: Boolean },
inputMin: null,
inputMax: null,
type: null,
node: null,
},
setup(__props2) {
const props2 = __props2
const node2 = ref(props2.node)
const inputRef = ref()
let inputValue = ref()
let focused = ref(false)
function input(e2) {
const target2 = e2.target
let value2 = target2.value
inputValue.value = value2
}
function enter(e2) {
const target2 = e2.target
let value2 = target2.value
if (!props2.name) return
if (props2.inputRangeEnabled) {
if (props2.inputMin !== void 0 && Number(value2) < props2.inputMin) {
toast(
`\u64CD\u4F5C\u65E0\u6548\uFF0C\u8F93\u5165\u503C ${value2} \u5C0F\u4E8E\u6700\u5C0F\u503C ${props2.inputMin}`,
'warning'
)
return
}
if (props2.inputMax !== void 0 && Number(value2) > props2.inputMax) {
toast(
`\u64CD\u4F5C\u65E0\u6548\uFF0C\u8F93\u5165\u503C ${value2} \u5927\u4E8E\u6700\u5927\u503C ${props2.inputMax}`,
'warning'
)
return
}
}
let valueType = typeof Variable.valueMap[props2.name]
let val2 = Expression.inputToValue(value2, valueType)
const setValueExpression = `${props2.name} = ${Expression.valueToCode(
val2
)}`
try {
Expression.getValue(setValueExpression, true)
} catch (error2) {
toast(`${setValueExpression} // ${error2}`, 'warning')
}
if (!props2.writeOnly) {
target2.blur()
}
}
let output = computed(function () {
if (focused.value) {
return inputValue.value
}
if (props2.writeOnly) {
return inputValue.value
}
let newValue = Expression.getValue(`${props2.name}`)
newValue = newValue?.toString?.()
if (props2.outputFixedEnabled && props2.outputFixed !== void 0) {
if (!isNaN(newValue)) {
newValue = Number(newValue).toFixed(props2.outputFixed)
}
}
inputValue.value = newValue
return newValue
})
function getPlaceholder(name2) {
if (!props2.name) {
return _t(name2)
}
if (props2.editing) {
return `\${${props2.name}}`
}
return ''
}
function getValueToVariable(variable) {
Variable.store[variable] = inputRef.value?.value || output.value
}
if (node2.value) {
node2.value.methods.getValueToVariable = getValueToVariable
}
return (_ctx, _cache) => {
return !props2.readOnly
? (openBlock(),
createElementBlock(
'input',
{
key: 0,
'data-binding': props2.name,
class: 'variableInput',
ref_key: 'inputRef',
ref: inputRef,
value: output.value,
onInput: input,
onKeydown: withKeys(enter, ['enter']),
onFocus:
_cache[0] || (_cache[0] = ($event) => (focused.value = true)),
onBlur:
_cache[1] || (_cache[1] = ($event) => (focused.value = false)),
placeholder: getPlaceholder(
props2.readOnly
? '\u6570\u503C\u663E\u793A'
: props2.writeOnly
? '\u6570\u503C\u8F93\u5165'
: '\u8BFB\u5199\u6846'
),
autocomplete: 'off',
spellcheck: 'false',
readonly: props2.editing || props2.readOnly,
},
null,
40,
_hoisted_1$41
))
: (openBlock(),
createElementBlock(
'div',
_hoisted_2$3v,
toDisplayString$1(
output.value ?? getPlaceholder('\u6570\u503C\u663E\u793A')
),
1
))
}
},
})
var ReadWriteInput$2 = /* @__PURE__ */ _export_sfc(_sfc_main$4y, [
['__scopeId', 'data-v-1017d7db'],
])
var __glob_2_102 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ReadWriteInput$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var NumberInput_vue_vue_type_style_index_0_scoped_true_lang = ''
const _sfc_main$4x = /* @__PURE__ */ defineComponent({
props: {},
setup(__props2) {
const props2 = __props2
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
ReadWriteInput$2,
mergeProps({ class: 'write-only' }, props2, { writeOnly: '' }),
null,
16
)
)
}
},
})
var NumberInput = /* @__PURE__ */ _export_sfc(_sfc_main$4x, [
['__scopeId', 'data-v-450e620e'],
])
var __glob_2_90 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: NumberInput,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const config$d = {
category: 'readWrite',
name: '\u6570\u503C\u663E\u793A',
icon: 'icon-shuzhixianshi1',
styleConfig: {},
}
const _sfc_main$4w = /* @__PURE__ */ defineComponent({
props: {},
setup(__props2) {
const props2 = __props2
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
ReadWriteInputSettings,
mergeProps(props2, { readOnly: '' }),
null,
16
)
)
}
},
})
var __glob_2_91 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$d,
default: _sfc_main$4w,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var NumberShow_vue_vue_type_style_index_0_scoped_true_lang = ''
const _sfc_main$4v = /* @__PURE__ */ defineComponent({
props: {},
setup(__props2) {
const props2 = __props2
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
ReadWriteInput$2,
mergeProps({ class: 'read-only' }, props2, { readOnly: '' }),
null,
16
)
)
}
},
})
var NumberShow = /* @__PURE__ */ _export_sfc(_sfc_main$4v, [
['__scopeId', 'data-v-9cb86476'],
])
var __glob_2_92 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: NumberShow,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const state$3 = reactive({
current: {
get page() {
return app.current.project.current.page
},
set page(p2) {
app.current.project.current.page = p2
},
index: void 0,
},
pages: [],
})
window.projectState = state$3
var PageFrame_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2o = (n2) => (
pushScopeId('data-v-f699de6a'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$40 = { class: 'line' }
const _hoisted_2$3u = { class: 'field-item flex page' }
const _hoisted_3$38 = /* @__PURE__ */ _withScopeId$2o(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u76EE\u6807\u753B\u9762',
-1
)
)
const _hoisted_4$2I = { class: 'select-page flex' }
const _hoisted_5$2q = { class: 'name' }
const _hoisted_6$29 = { class: 'line' }
const _hoisted_7$1S = { class: 'field-item flex pf' }
const _hoisted_8$1F = /* @__PURE__ */ _withScopeId$2o(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u5BB9\u5668\u5C3A\u5BF8',
-1
)
)
const _hoisted_9$1x = /* @__PURE__ */ createTextVNode('\u56FA\u5B9A')
const _hoisted_10$1q = /* @__PURE__ */ createTextVNode(
'\u9002\u5E94\u5185\u5BB9'
)
const _hoisted_11$1i = { class: 'line' }
const _hoisted_12$1f = { class: 'field-item flex pf' }
const _hoisted_13$17 = /* @__PURE__ */ _withScopeId$2o(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u5BB9\u5668\u5185\u5BB9',
-1
)
)
const config$c = {
category: 'container',
name: '\u753B\u9762\u5BB9\u5668',
icon: 'icon-huamianrongqi',
styleConfig: {
textSetting: false,
},
}
const _sfc_main$4u = /* @__PURE__ */ defineComponent({
props: {
editing: {
type: Boolean,
default: false,
},
node: {
type: Object,
default: () => {
return {}
},
},
props: {
type: Object,
default: () => {
return {
pageId: '',
pageName: '',
size: 'fixed',
scale: 'auto',
}
},
},
},
setup(__props2) {
const $props2 = __props2
let props_2 = reactive($props2.props)
let visible = ref(false)
const confirm2 = (row) => {
props_2.pageId = row ? row.id : ''
props_2.pageName = row ? row.name : ''
if (!row) {
props_2.clearSelectedPage = true
}
}
onBeforeMount(() => {
if (!props_2.pageId) props_2.pageId = ''
if (!props_2.pageName) props_2.pageName = ''
if (!props_2.size) props_2.size = 'fixed'
if (!props_2.scale) props_2.scale = 'auto'
})
return (_ctx, _cache) => {
const _component_el_radio = resolveComponent('el-radio')
const _component_el_radio_group = resolveComponent('el-radio-group')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
SettingItem$1,
{ title: '\u529F\u80FD' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$40, [
createElementVNode('div', _hoisted_2$3u, [
_hoisted_3$38,
createElementVNode('div', _hoisted_4$2I, [
createElementVNode(
'span',
_hoisted_5$2q,
toDisplayString$1(unref(props_2).pageName),
1
),
createElementVNode('i', {
class: 'iconfont icon-bianjigongcheng',
onClick:
_cache[0] ||
(_cache[0] = ($event) =>
isRef(visible)
? (visible.value = true)
: (visible = true)),
}),
]),
]),
]),
createElementVNode('div', _hoisted_6$29, [
createElementVNode('div', _hoisted_7$1S, [
_hoisted_8$1F,
createVNode$1(
_component_el_radio_group,
{
class: 'radio-group',
modelValue: unref(props_2).size,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(props_2).size = $event)),
},
{
default: withCtx(() => [
createVNode$1(
_component_el_radio,
{
label: 'fixed',
size: 'large',
class: 'cms-el-radio',
},
{
default: withCtx(() => [_hoisted_9$1x]),
_: 1,
}
),
createVNode$1(
_component_el_radio,
{
label: 'adaption',
size: 'large',
class: 'cms-el-radio',
},
{
default: withCtx(() => [_hoisted_10$1q]),
_: 1,
}
),
]),
_: 1,
},
8,
['modelValue']
),
]),
]),
withDirectives(
createElementVNode(
'div',
_hoisted_11$1i,
[
createElementVNode('div', _hoisted_12$1f, [
_hoisted_13$17,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
modelValue: unref(props_2).scale,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(props_2).scale = $event)),
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
key: 'auto',
value: 'auto',
label: '\u539F\u59CB\u5927\u5C0F',
}),
createVNode$1(_component_el_option, {
key: 'width',
value: 'width',
label: '\u9002\u5E94\u7EC4\u4EF6\u5BBD',
}),
createVNode$1(_component_el_option, {
key: 'height',
value: 'height',
label: '\u9002\u5E94\u7EC4\u4EF6\u9AD8',
}),
]),
_: 1,
},
8,
['modelValue']
),
]),
],
512
),
[[vShow, unref(props_2).size == 'fixed']]
),
]),
_: 1,
}
),
createVNode$1(
unref(functionDialog),
{
title: '\u5F39\u7A97\u753B\u9762',
data: {
id: unref(props_2).pageId,
name: unref(props_2).pageName,
},
visible: unref(visible),
filterIds: [unref(state$3).current?.page?.id],
onCancel:
_cache[3] ||
(_cache[3] = ($event) =>
isRef(visible) ? (visible.value = false) : (visible = false)),
onConfirm: confirm2,
},
null,
8,
['data', 'visible', 'filterIds']
),
])
)
}
},
})
var PageFrame_settings = /* @__PURE__ */ _export_sfc(_sfc_main$4u, [
['__scopeId', 'data-v-f699de6a'],
])
var __glob_2_93 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$c,
default: PageFrame_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
let frameLastPageIdMap = reactive(/* @__PURE__ */ new Map())
var PageFrame_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$3$ = ['data-pageFrameId']
const _sfc_main$4t = /* @__PURE__ */ defineComponent({
props: {
mode: {
type: String,
default: '',
},
editing: {
type: Boolean,
default: false,
},
props: {
type: Object,
default: () => {
return {
pageId: '',
pageName: '',
size: 'fixed',
scale: 'auto',
clearSelectedPage: false,
}
},
},
node: {
type: Object,
default: () => {
return {}
},
},
},
setup(__props2) {
const $props2 = __props2
const viewerRef = ref()
const PageFrameRef = ref()
const viewerDocument = reactive({
body: new CanvasNode$1({}),
})
const node2 = reactive($props2.node)
const props_2 = reactive($props2.props)
const DEFAULT_WIDTH = 350
const DEFAULT_HEIGHT = 200
const renderLevelCheck = () => {
let level = 1
const currentPF = PageFrameRef.value
if (!currentPF) return level
let parentsPF = []
var findParents = (el2) => {
if (el2.parentElement) {
if (
el2.parentElement.nodeName == 'MAIN' &&
el2.parentElement.className == 'editor'
) {
return
}
if (el2.parentElement.className.includes('PageFrame')) {
parentsPF.push(el2.parentElement)
level += 1
}
findParents(el2.parentElement)
}
}
findParents(currentPF)
return level
}
const setPicturesContent = (pageId) => {
return getPicturesContent(pageId).then((res) => {
const content2 = res.content ? JSON.parse(res.content) : ''
if (!content2 || !content2.body) return
viewerDocument.body = new CanvasNode$1(content2.body)
frameLastPageIdMap.set(node2.id, pageId)
})
}
const change2 = () => {
const { size, scale: scale2 } = $props2.props
const boxEl = PageFrameRef.value
const conEls = boxEl?.querySelectorAll('.viewer .canvas-node.body')
const conEl = conEls ? conEls[0] : null
if (!boxEl || !conEl) return
const scrollbar = 3
let boxW = parseFloat(boxEl.style.width) || boxEl.offsetWidth
let boxH = parseFloat(boxEl.style.height) || boxEl.offsetHeight
let conW = parseFloat(conEl.style.width) || conEl.offsetWidth
let conH = parseFloat(conEl.style.height) || conEl.offsetHeight
let zoom = 1
const createZoom = () => {
let scrollbarY = 0
let overW = 0
let scrollbarX = 0
let overH = 0
switch (scale2) {
case 'width':
scrollbarY = conH > boxH ? 12 : scrollbar
overW = conW > boxW ? (conW - boxW) / 10 : 0
zoom = boxW / (conW + scrollbarY + overW)
break
case 'height':
scrollbarX = conW > boxW ? 12 : scrollbar
overH = conH > boxH ? (conH - boxH) / 10 : 0
zoom = boxH / (conH + scrollbarX + overH)
break
default:
zoom = 1
}
return zoom.toFixed(3)
}
if (size == 'fixed') {
let prevBoxW = props_2.prevWidth || DEFAULT_WIDTH
let prevBoxH = props_2.prevHeight || DEFAULT_HEIGHT
if (prevBoxW != boxW || prevBoxH != boxH) {
boxW = prevBoxW
boxH = prevBoxH
}
node2.style.width = boxEl.style.width = `${prevBoxW}px`
node2.style.height = boxEl.style.height = `${prevBoxH}px`
conEl.style.zoom = createZoom()
} else {
node2.style.width = boxEl.style.width = `${
conW ? conW + scrollbar : DEFAULT_WIDTH
}px`
node2.style.height = boxEl.style.height = `${
conH ? conH + scrollbar : DEFAULT_HEIGHT
}px`
conEl.style.zoom = 1
}
}
const changeDebounce = useDebounceFn(() => {
if (['height', 'width'].includes($props2.props.scale)) {
change2()
}
}, 200)
watch$1(
() => $props2.props?.pageId,
async (id2) => {
if (running) {
const lastPageId = frameLastPageIdMap.get(node2.id)
if (lastPageId) {
id2 = lastPageId
}
}
if (!id2) {
if (props_2?.clearSelectedPage) {
props_2.clearSelectedPage = false
viewerDocument.body = new CanvasNode$1({})
}
return
}
nextTick(async () => {
const level = renderLevelCheck()
if (level >= 6) return
await setPicturesContent(id2)
nextTick(() => change2())
})
},
{
immediate: true,
}
)
watch$1([() => $props2.props.size, () => $props2.props.scale], () => {
change2()
})
watch$1([() => node2.style.width, () => node2.style.height], () => {
if ($props2.props.size == 'fixed') {
props_2.prevWidth = parseFloat(node2.style.width + '') || DEFAULT_WIDTH
props_2.prevHeight =
parseFloat(node2.style.height + '') || DEFAULT_HEIGHT
}
changeDebounce()
})
async function setTargetPage(pageId) {
await setPicturesContent(pageId)
nextTick(() => change2())
}
node2.methods.setTargetPage = setTargetPage
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'PageFrame',
{ empty: !$props2.props?.pageId },
]),
ref_key: 'PageFrameRef',
ref: PageFrameRef,
'data-pageFrameId': unref(node2)?.id,
},
[
createVNode$1(
Viewer,
{
ref_key: 'viewerRef',
ref: viewerRef,
class: normalizeClass([
'viewer',
{ 'mode-view': $props2.mode === unref(MODE).EDITING },
]),
mode: $props2.mode,
document: unref(viewerDocument),
},
null,
8,
['class', 'mode', 'document']
),
],
10,
_hoisted_1$3$
)
)
}
},
})
var PageFrame = /* @__PURE__ */ _export_sfc(_sfc_main$4t, [
['__scopeId', 'data-v-6b479254'],
])
var __glob_2_94 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: PageFrame,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const config$b = {
category: 'test',
name: '\u6240\u6709\u9875\u9762',
icon: '',
permission: true,
}
const _sfc_main$4s = {}
function _sfc_render$a(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('div')
}
var PageList_settings = /* @__PURE__ */ _export_sfc(_sfc_main$4s, [
['render', _sfc_render$a],
])
var __glob_2_95 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$b,
default: PageList_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var PageList_vue_vue_type_style_index_0_scoped_true_lang$1 = ''
const _sfc_main$4r = /* @__PURE__ */ defineComponent({
setup(__props2) {
const pageList = reactive([])
function View2() {
return List2(pageList)
}
function List2(list2 = []) {
return h$4(
'ul',
list2.map((page2) =>
h$4('li', [
h$4(
'span',
{
title: page2.id,
onClick() {
go2(page2)
},
},
`${page2.name}`
),
List2(page2.child),
])
)
)
}
onMounted(async () => {
const rs2 = await request('/api/v1/view/node/tree')
pageList.push(...rs2)
})
function go2(page2) {
push$4(page2)
}
return (_ctx, _cache) => {
return (
openBlock(), createElementBlock('div', null, [createVNode$1(View2)])
)
}
},
})
var PageList$2 = /* @__PURE__ */ _export_sfc(_sfc_main$4r, [
['__scopeId', 'data-v-44bfc309'],
])
var __glob_2_96 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: PageList$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const config$a = {
category: 'run',
name: '\u6743\u9650\u7BA1\u7406',
icon: 'icon-jiaoseguanli',
authorizationRequired: true,
styleConfig: {
color: false,
},
props: {
inputSettings: {
autoSelectAll: true,
keyboard: {
enabled: false,
enterClose: false,
},
},
},
}
const _sfc_main$4q = {}
function _sfc_render$9(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('div')
}
var PermissionManage_settings = /* @__PURE__ */ _export_sfc(_sfc_main$4q, [
['render', _sfc_render$9],
])
var __glob_2_97 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$a,
default: PermissionManage_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ManageDialog_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2n = (n2) => (
pushScopeId('data-v-402f40d2'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3_ = {
key: 0,
class: 'm_dialog',
}
const _hoisted_2$3t = { class: 'm_dialog_header' }
const _hoisted_3$37 = { class: 'm_dialog_header_left' }
const _hoisted_4$2H = /* @__PURE__ */ _withScopeId$2n(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-yonghu' },
null,
-1
)
)
const _hoisted_5$2p = { class: 'm_dialog_header_right' }
const _hoisted_6$28 = {
key: 0,
class: 'header_right_save table_btns',
}
const _hoisted_7$1R = /* @__PURE__ */ _withScopeId$2n(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-fanhui1' },
null,
-1
)
)
const _hoisted_8$1E = { class: 'i' }
const _hoisted_9$1w = { class: 'm_dialog_wrap' }
const _hoisted_10$1p = { class: 'm_wrap_th' }
const _hoisted_11$1h = { class: 'th_wrap' }
const _hoisted_12$1e = { class: 'add_margin' }
const _hoisted_13$16 = ['title']
const _hoisted_14$10 = { class: 'th_wrap' }
const _hoisted_15$Z = { class: 'add_margin' }
const _hoisted_16$X = ['title']
const _hoisted_17$R = { class: 'm_wrap_body' }
const _hoisted_18$L = { class: 'm_wrap_td pic_td' }
const _hoisted_19$I = { class: 'm_wrap_td' }
const _sfc_main$4p = /* @__PURE__ */ defineComponent({
props: {
show: {
type: Boolean,
default: false,
},
isAllDisabled: {
type: Boolean,
default: false,
},
rowData: {
type: Object,
default: () => {},
},
showData: {
type: Object,
default: () => {},
},
},
emits: ['update:show', 'close', 'saveData'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const allData = ref([
{
menu: [],
content: [],
},
])
const checkAllPic = ref(false)
const checkAllWrap = ref(false)
const wrapIndeterminate = ref(true)
const picIndeterminate = ref(true)
const picList = ref([])
const picCheckAllChange = (val2) => {
checkedData.value.left = val2 ? picList.value : []
picIndeterminate.value = false
}
const handleCheckedPicsChange = (value2) => {
const checkedCount = value2.length
checkAllPic.value = checkedCount === picList.value.length
picIndeterminate.value =
checkedCount > 0 && checkedCount < picList.value.length
}
const wrapList = ref([])
const wrapCheckAllChange = (val2) => {
checkedData.value.right = val2 ? wrapList.value : []
wrapIndeterminate.value = false
}
const handleCheckedWrapsChange = (value2) => {
const checkedCount = value2.length
checkAllWrap.value = checkedCount === wrapList.value.length
wrapIndeterminate.value =
checkedCount > 0 && checkedCount < wrapList.value.length
}
const checkedData = ref({})
const close2 = () => {
checkAllWrap.value = false
checkAllPic.value = false
checkedData.value = {}
emit2('update:show', false)
emit2('close')
}
watchEffect(() => {
if (props2.show) {
open2()
} else {
close2()
}
})
const open2 = () => {
checkedData.value = props2.showData
getData()
}
const getData = () => {
wrapList.value = []
picList.value = []
getPermissionList().then((res) => {
allData.value = res
res.forEach((item2) => {
item2.menu.forEach((menu2) => {
picList.value.push(menu2.key)
})
item2.content.forEach((child) => {
wrapList.value.push(child.key)
})
})
if (picList.value.length === checkedData.value.left.length) {
checkAllPic.value = true
picIndeterminate.value = false
} else if (checkedData.value.left.length !== 0) {
picIndeterminate.value = true
}
if (wrapList.value.length === checkedData.value.right.length) {
checkAllWrap.value = true
wrapIndeterminate.value = false
} else if (checkedData.value.right.length !== 0) {
wrapIndeterminate.value = true
}
})
}
const saveData = () => {
emit2('saveData', checkedData.value, props2.rowData.id)
}
return (_ctx, _cache) => {
const _component_el_button = resolveComponent('el-button')
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_checkbox_group = resolveComponent('el-checkbox-group')
return props2.show
? (openBlock(),
createElementBlock('div', _hoisted_1$3_, [
createElementVNode('div', _hoisted_2$3t, [
createElementVNode('div', _hoisted_3$37, [
_hoisted_4$2H,
createElementVNode(
'span',
null,
toDisplayString$1(props2.rowData.title),
1
),
]),
createElementVNode('div', _hoisted_5$2p, [
!props2.isAllDisabled
? (openBlock(),
createElementBlock('div', _hoisted_6$28, [
createVNode$1(
_component_el_button,
{
size: 'small',
color: '#569E58',
class: 'btn_color_white',
onClick: saveData,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx._t('\u4FDD\u5B58')),
1
),
]),
_: 1,
}
),
]))
: createCommentVNode('', true),
createElementVNode(
'div',
{
class: 'header_right_back',
onClick: close2,
},
[
_hoisted_7$1R,
createElementVNode(
'span',
_hoisted_8$1E,
toDisplayString$1(_ctx._t('\u8FD4\u56DE')),
1
),
]
),
]),
]),
createElementVNode('div', _hoisted_9$1w, [
createElementVNode('div', _hoisted_10$1p, [
createElementVNode('div', _hoisted_11$1h, [
createElementVNode('div', null, [
createElementVNode(
'span',
_hoisted_12$1e,
toDisplayString$1(_ctx._t('\u753B\u9762\u540D\u79F0')),
1
),
createElementVNode(
'i',
{
class: 'iconfont icon-bangzhu',
title: _ctx._t(
'\u52FE\u9009\u5141\u8BB8\u8BBF\u95EE\u7684\u753B\u9762\u6216\u4E8C\u7EA7\u83DC\u5355\uFF0C\u672A\u52FE\u9009\u7684\u5185\u5BB9\u9690\u85CF\u4E0D\u5C55\u793A'
),
'data-tooltip-popper-class': 'atooltip',
},
null,
8,
_hoisted_13$16
),
]),
createElementVNode('div', null, [
createVNode$1(
_component_el_checkbox,
{
modelValue: checkAllPic.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(checkAllPic.value = $event)),
indeterminate: picIndeterminate.value,
disabled: props2.isAllDisabled,
onChange: picCheckAllChange,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx._t('\u5168\u9009')),
1
),
]),
_: 1,
},
8,
['modelValue', 'indeterminate', 'disabled']
),
]),
]),
createElementVNode('div', _hoisted_14$10, [
createElementVNode('div', null, [
createElementVNode(
'span',
_hoisted_15$Z,
toDisplayString$1(_ctx._t('\u64CD\u4F5C\u5185\u5BB9')),
1
),
createElementVNode(
'i',
{
class: 'iconfont icon-bangzhu',
title: _ctx._t(
'\u52FE\u9009\u5141\u8BB8\u64CD\u4F5C\u7684\u6309\u94AE\uFF0C\u672A\u52FE\u9009\u7684\u5185\u5BB9\u7981\u7528\u64CD\u4F5C\u4E8B\u4EF6'
),
'data-tooltip-popper-class': 'atooltip',
},
null,
8,
_hoisted_16$X
),
]),
createElementVNode('div', null, [
createVNode$1(
_component_el_checkbox,
{
modelValue: checkAllWrap.value,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(checkAllWrap.value = $event)),
indeterminate: wrapIndeterminate.value,
disabled: props2.isAllDisabled,
onChange: wrapCheckAllChange,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx._t('\u5168\u9009')),
1
),
]),
_: 1,
},
8,
['modelValue', 'indeterminate', 'disabled']
),
]),
]),
]),
createElementVNode('div', _hoisted_17$R, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(allData.value, (item2, index2) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'm_wrap_tr',
key: index2,
},
[
createElementVNode('div', _hoisted_18$L, [
createVNode$1(
_component_el_checkbox_group,
{
modelValue: checkedData.value.left,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(checkedData.value.left = $event)),
onChange: handleCheckedPicsChange,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(item2.menu, (pic) => {
return (
openBlock(),
createBlock(
_component_el_checkbox,
{
disabled: props2.isAllDisabled,
key: pic.key,
label: pic.key,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(pic.name),
1
),
]),
_: 2,
},
1032,
['disabled', 'label']
)
)
}),
128
)),
]),
_: 2,
},
1032,
['modelValue']
),
]),
createElementVNode('div', _hoisted_19$I, [
createElementVNode('div', null, [
createVNode$1(
_component_el_checkbox_group,
{
modelValue: checkedData.value.right,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(checkedData.value.right = $event)),
onChange: handleCheckedWrapsChange,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(item2.content, (wrap) => {
return (
openBlock(),
createBlock(
_component_el_checkbox,
{
disabled: props2.isAllDisabled,
key: wrap.key,
label: wrap.key,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(wrap.name),
1
),
]),
_: 2,
},
1032,
['disabled', 'label']
)
)
}),
128
)),
]),
_: 2,
},
1032,
['modelValue']
),
]),
]),
]
)
)
}),
128
)),
]),
]),
]))
: createCommentVNode('', true)
}
},
})
var MDialog = /* @__PURE__ */ _export_sfc(_sfc_main$4p, [
['__scopeId', 'data-v-402f40d2'],
])
var ManageDialog = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: MDialog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var UserDialog_vue_vue_type_style_index_0_lang = ''
const _hoisted_1$3Z = { class: 'dialog-footer' }
const _sfc_main$4o = /* @__PURE__ */ defineComponent({
props: {
formData: {
type: Object,
default: () => {},
},
visible: {
type: Boolean,
default: false,
},
title: {
type: String,
default: '',
},
},
emits: ['cancel', 'confirm'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const props2 = reactive($props2)
const treeData = ref([])
const defaultProps2 = {
children: 'children',
label: 'name',
}
const show = computed({
get: () => props2.visible,
set: (val2) => val2,
})
const open2 = () => {
getOrganization()
getAuthority()
}
const validatePass = (rule2, value2, callback) => {
if (value2 === '') {
callback(
new Error(Language$1._t('\u59D3\u540D\u4E0D\u80FD\u4E3A\u7A7A'))
)
} else {
callback()
}
}
const validatePass2 = (rule2, value2, callback) => {
if (value2 === '') {
callback(
new Error(Language$1._t('\u7528\u6237\u540D\u4E0D\u80FD\u4E3A\u7A7A'))
)
} else {
callback()
}
}
const validatePass3 = (rule2, value2, callback) => {
if (value2 === '') {
callback(
new Error(Language$1._t('\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A'))
)
} else {
callback()
}
}
const rules2 = reactive({
name: [{ required: true, validator: validatePass, trigger: 'blur' }],
userName: [{ required: true, validator: validatePass2, trigger: 'blur' }],
password: [{ required: true, validator: validatePass3, trigger: 'blur' }],
})
const nodeClick = (node2) => {
props2.formData.orignizationDiaplsyName = node2.displayName
props2.formData.organizationId = node2.id
}
const getOrganization = () => {
getOrganizationTree().then((res) => {
treeData.value = res.children
})
}
const authorityList = ref([])
const getAuthority = () => {
getRole().then((res) => {
authorityList.value = res
})
}
const userForm = ref()
const cancel2 = () => {
if (!userForm.value) return
userForm.value.resetFields()
emit2('cancel')
}
const confirm2 = () => {
if (!userForm.value) return
userForm.value.validate((valid) => {
if (valid) {
emit2('confirm')
} else {
return false
}
})
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_tree = resolveComponent('el-tree')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_form = resolveComponent('el-form')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
modelValue: unref(show),
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) =>
isRef(show) ? (show.value = $event) : null),
width: '480px',
top: '18vh',
'show-close': false,
'custom-class': '--user-dialog',
onClose: cancel2,
onOpen: open2,
},
{
title: withCtx(() => [
createElementVNode(
'span',
null,
toDisplayString$1(_ctx._t(unref(props2).title)),
1
),
]),
footer: withCtx(() => [
createElementVNode('span', _hoisted_1$3Z, [
createVNode$1(
_component_el_button,
{
color: '#DCDCDD',
class: '--scms-cancel-white cms_button_cancel',
onClick: cancel2,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx._t('\u53D6\u6D88')),
1
),
]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
color: '#2F71EE',
class: '--scms-confirm-blue cms_button_determine',
onClick: confirm2,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx._t('\u786E\u5B9A')),
1
),
]),
_: 1,
}
),
]),
]),
default: withCtx(() => [
createElementVNode('div', null, [
createVNode$1(
_component_el_form,
{
ref_key: 'userForm',
ref: userForm,
'label-width': '120px',
'label-position': 'left',
class: '--scms-form',
rules: unref(rules2),
model: unref(props2).formData,
},
{
default: withCtx(() => [
createVNode$1(
_component_el_form_item,
{
label: _ctx._t('\u59D3\u540D') + ':',
prop: 'name',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
class: '--scms-input',
modelValue: unref(props2).formData.name,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(props2).formData.name = $event)),
modelModifiers: { trim: true },
placeholder: _ctx._t(
'\u8BF7\u8F93\u5165\u59D3\u540D'
),
},
null,
8,
['modelValue', 'placeholder']
),
]),
_: 1,
},
8,
['label']
),
createVNode$1(
_component_el_form_item,
{
label: _ctx._t('\u7528\u6237\u540D') + ':',
prop: 'userName',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
class: '--scms-input',
modelValue: unref(props2).formData.userName,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(props2).formData.userName = $event)),
modelModifiers: { trim: true },
placeholder: _ctx._t(
'\u8BF7\u8F93\u5165\u7528\u6237\u540D'
),
},
null,
8,
['modelValue', 'placeholder']
),
]),
_: 1,
},
8,
['label']
),
unref(props2).title === '\u6DFB\u52A0\u7528\u6237'
? (openBlock(),
createBlock(
_component_el_form_item,
{
key: 0,
label: _ctx._t('\u5BC6\u7801') + ':',
prop: 'password',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
class: '--scms-input',
modelValue: unref(props2).formData.password,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(props2).formData.password =
$event)),
modelModifiers: { trim: true },
'show-password': '',
placeholder: _ctx._t(
'\u8BF7\u8F93\u5165\u5BC6\u7801'
),
},
null,
8,
['modelValue', 'placeholder']
),
]),
_: 1,
},
8,
['label']
))
: createCommentVNode('', true),
createVNode$1(
_component_el_form_item,
{
label: _ctx._t('\u7EC4\u7EC7\u67B6\u6784') + ':',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_select,
{
class: '--scms-select',
'popper-class': '--scms-select_poper',
modelValue:
unref(props2).formData
.orignizationDiaplsyName,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(
props2
).formData.orignizationDiaplsyName =
$event)),
placeholder: _ctx._t(
'\u8BF7\u9009\u62E9\u7EC4\u7EC7\u67B6\u6784'
),
},
{
default: withCtx(() => [
createVNode$1(
_component_el_option,
{
style: { height: 'auto', padding: '0' },
value: '',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_tree,
{
'expand-on-click-node': false,
'default-expand-all': '',
data: treeData.value,
props: defaultProps2,
onNodeClick: nodeClick,
},
null,
8,
['data']
),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['modelValue', 'placeholder']
),
]),
_: 1,
},
8,
['label']
),
createVNode$1(
_component_el_form_item,
{
label: _ctx._t('\u7528\u6237\u6743\u9650') + ':',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_select,
{
class: '--scms-select',
'popper-class': '--scms-select_poper',
modelValue: unref(props2).formData.roleIds,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(props2).formData.roleIds = $event)),
multiple: '',
'collapse-tags': '',
placeholder: _ctx._t(
'\u8BF7\u9009\u62E9\u7528\u6237\u6743\u9650'
),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(authorityList.value, (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.id,
label: item2.name,
value: item2.id,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue', 'placeholder']
),
]),
_: 1,
},
8,
['label']
),
]),
_: 1,
},
8,
['rules', 'model']
),
]),
]),
_: 1,
},
8,
['modelValue']
)
)
}
},
})
var UserDialog = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$4o,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ResetDialog_vue_vue_type_style_index_0_scoped_true_lang = ''
var ResetDialog_vue_vue_type_style_index_1_lang = ''
const _hoisted_1$3Y = { class: 'dialog-footer' }
const _sfc_main$4n = /* @__PURE__ */ defineComponent({
props: {
formData: {
type: Object,
default: () => {},
},
visible: {
type: Boolean,
default: false,
},
},
emits: ['cancel', 'confirm'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const props2 = reactive($props2)
const show = computed({
get: () => props2.visible,
set: (val2) => val2,
})
const resetForm = ref()
const validatePass = (rule2, value2, callback) => {
if (value2 === '') {
callback(
new Error(Language$1._t('\u8BF7\u8F93\u5165\u65B0\u5BC6\u7801'))
)
} else {
if (props2.formData.rePassword !== '') {
if (!resetForm.value) return
resetForm.value.validateField('checkPass', () => null)
}
callback()
}
}
const validatePass2 = (rule2, value2, callback) => {
if (value2 === '') {
callback(
new Error(
Language$1._t('\u8BF7\u518D\u6B21\u8F93\u5165\u65B0\u5BC6\u7801')
)
)
} else if (value2 !== props2.formData.password) {
callback(
new Error(Language$1._t('\u4E24\u6B21\u5BC6\u7801\u4E0D\u4E00\u81F4'))
)
} else {
callback()
}
}
const rules2 = reactive({
password: [{ validator: validatePass, required: true, trigger: 'blur' }],
rePassword: [
{ validator: validatePass2, required: true, trigger: 'blur' },
],
})
const cancel2 = () => {
if (!resetForm.value) return
resetForm.value.resetFields()
emit2('cancel')
}
const confirm2 = () => {
if (!resetForm.value) return
resetForm.value.validate((valid) => {
if (valid) {
emit2('confirm')
} else {
return false
}
})
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_form = resolveComponent('el-form')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
modelValue: unref(show),
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
isRef(show) ? (show.value = $event) : null),
width: '420px',
top: '18vh',
'show-close': false,
'custom-class': '--reset-dailog',
onClose: cancel2,
},
{
title: withCtx(() => [
createElementVNode(
'span',
null,
toDisplayString$1(_ctx._t('\u5BC6\u7801\u91CD\u7F6E')),
1
),
]),
footer: withCtx(() => [
createElementVNode('span', _hoisted_1$3Y, [
createVNode$1(
_component_el_button,
{
color: '#DCDCDD',
class: '--scms-cancel-white cms_button_cancel',
onClick: cancel2,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx._t('\u53D6\u6D88')),
1
),
]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
color: '#2F71EE',
class: '--scms-confirm-blue cms_button_determine',
onClick: confirm2,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx._t('\u786E\u8BA4')),
1
),
]),
_: 1,
}
),
]),
]),
default: withCtx(() => [
createElementVNode('div', null, [
createVNode$1(
_component_el_form,
{
ref_key: 'resetForm',
ref: resetForm,
'label-width': '160px',
'label-position': 'left',
class: '--scms-form',
model: unref(props2).formData,
rules: unref(rules2),
},
{
default: withCtx(() => [
createVNode$1(
_component_el_form_item,
{
label: _ctx._t('\u65B0\u5BC6\u7801') + '\uFF1A',
prop: 'password',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
class: '--scms-input',
modelValue: unref(props2).formData.password,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(props2).formData.password = $event)),
modelModifiers: { trim: true },
'show-password': '',
placeholder: _ctx._t(
'\u8BF7\u8F93\u5165\u65B0\u5BC6\u7801'
),
},
null,
8,
['modelValue', 'placeholder']
),
]),
_: 1,
},
8,
['label']
),
createVNode$1(
_component_el_form_item,
{
label: _ctx._t('\u786E\u8BA4\u5BC6\u7801') + '\uFF1A',
prop: 'rePassword',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
class: '--scms-input',
modelValue: unref(props2).formData.rePassword,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(props2).formData.rePassword =
$event)),
modelModifiers: { trim: true },
'show-password': '',
placeholder: _ctx._t(
'\u8BF7\u518D\u6B21\u8F93\u5165\u65B0\u5BC6\u7801'
),
},
null,
8,
['modelValue', 'placeholder']
),
]),
_: 1,
},
8,
['label']
),
]),
_: 1,
},
8,
['model', 'rules']
),
]),
]),
_: 1,
},
8,
['modelValue']
)
)
}
},
})
var ResetDialog = /* @__PURE__ */ _export_sfc(_sfc_main$4n, [
['__scopeId', 'data-v-6a2273a8'],
])
var ResetDialog$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ResetDialog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var UserManage_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2m = (n2) => (
pushScopeId('data-v-17585be6'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3X = { class: 'page' }
const _hoisted_2$3s = { class: 'page_header' }
const _hoisted_3$36 = { class: 'searh' }
const _hoisted_4$2G = { class: 'btns' }
const _hoisted_5$2o = /* @__PURE__ */ _withScopeId$2m(() =>
/* @__PURE__ */ createElementVNode(
'use',
{ 'xlink:href': '#icon-quanxiantianjia' },
null,
-1
)
)
const _hoisted_6$27 = [_hoisted_5$2o]
const _hoisted_7$1Q = { class: 'page_wrap' }
const _hoisted_8$1D = { class: 'table_btns' }
const _sfc_main$4m = /* @__PURE__ */ defineComponent({
props: {
permissionBtns: {
type: Array,
default: () => [],
},
},
setup(__props2) {
const props2 = __props2
const tableData2 = ref()
onMounted(() => {
getData()
getKey2()
})
const keyWord = ref('')
const handleBlur = () => {
getData()
}
const getData = () => {
getUser(keyWord.value).then((res) => {
tableData2.value = res
})
}
const keyData = ref({
identity: '',
publicKey: '',
})
const getKey2 = () => {
getFlashKey().then((res) => {
keyData.value.identity = res.identity
keyData.value.publicKey = res.publicKey
})
}
const show = ref(false)
const userData = ref([])
const rowData = ref({
title: '',
id: null,
})
const openRoot = (row) => {
if (!props2.permissionBtns.includes('user-table-view')) {
ElMessage.warning(
Language$1._t('\u7528\u6237\u6CA1\u6709\u8BE5\u6743\u9650\uFF01')
)
return
}
rowData.value.title = row.name
rowData.value.id = row.id
getUserAuthority(row.id).then((res) => {
userData.value = res
show.value = true
})
}
const visible = ref(false)
const formData = ref({
id: '',
userName: '',
name: '',
roleIds: [],
organizationId: null,
orignizationDiaplsyName: '',
publicKey: '',
identity: '',
password: '',
})
const title = ref('')
const open2 = () => {
if (!props2.permissionBtns.includes('user-add')) {
ElMessage.warning(
Language$1._t('\u7528\u6237\u6CA1\u6709\u8BE5\u6743\u9650\uFF01')
)
return
}
title.value = '\u6DFB\u52A0\u7528\u6237'
formData.value.identity = keyData.value.identity
formData.value.publicKey = keyData.value.publicKey
visible.value = true
}
const handleUpload = (e2) => {
if (!props2.permissionBtns.includes('user-import')) {
ElMessage.warning(
Language$1._t('\u7528\u6237\u6CA1\u6709\u8BE5\u6743\u9650\uFF01')
)
e2.stopPropagation()
}
}
const uploadExcel = (file2) => {
let fileData = new FormData()
fileData.append('files', file2.file)
importUserData(fileData).then((res) => {
if (res?.data?.code) {
ElMessage.error(res.data.msg)
} else {
getData()
ElMessage.success(Language$1._t('\u5BFC\u5165\u6210\u529F'))
}
})
}
const exportExcel = () => {
if (!props2.permissionBtns.includes('user-export')) {
ElMessage.warning(
Language$1._t('\u7528\u6237\u6CA1\u6709\u8BE5\u6743\u9650\uFF01')
)
return
}
if (tableData2.value.length === 0) {
ElMessage.warning(Language$1._t('\u6682\u65E0\u6570\u636E\u5BFC\u51FA'))
return
}
exportUserData().then((res) => {
if (res?.data?.code) {
ElMessage.error(res.data.msg)
} else {
downloadFile(
res,
'',
`${Language$1._t('\u7528\u6237\u7BA1\u7406')}.xlsx`
)
}
})
}
const downloadFile = (res, type4, fileName) => {
const blob = new Blob([res])
const url2 = window.URL || window.webkitURL
const downloadHref = url2.createObjectURL(blob)
let downloadLink = document.createElement('a')
downloadLink.href = downloadHref
downloadLink.download = fileName
downloadLink.click()
window.URL.revokeObjectURL(url2)
}
const updUserRow = (row) => {
if (!props2.permissionBtns.includes('user-table-update')) {
ElMessage.warning(
Language$1._t('\u7528\u6237\u6CA1\u6709\u8BE5\u6743\u9650\uFF01')
)
return
}
title.value = '\u4FEE\u6539\u7528\u6237'
getUserById(row.id).then((res) => {
formData.value.id = res.id
formData.value.userName = res.userName
formData.value.name = res.name
formData.value.roleIds = res.roleIds
formData.value.organizationId =
res.organizationId === '00000000-0000-0000-0000-000000000000'
? null
: res.organizationId
formData.value.orignizationDiaplsyName = res.orignizationDiaplsyName
formData.value.publicKey = keyData.value.publicKey
formData.value.identity = keyData.value.identity
visible.value = true
})
}
const delUserRow = (row) => {
if (!props2.permissionBtns.includes('user-table-del')) {
ElMessage.warning(
Language$1._t('\u7528\u6237\u6CA1\u6709\u8BE5\u6743\u9650\uFF01')
)
return
}
ElMessageBox.confirm(
Language$1._t('\u662F\u5426\u786E\u8BA4\u5220\u9664\uFF1F'),
Language$1._t('\u63D0\u793A'),
{
confirmButtonText: Language$1._t('\u786E\u8BA4'),
cancelButtonText: Language$1._t('\u53D6\u6D88'),
callback: (action) => {
if (action === 'confirm') {
delUser(row.id).then(() => {
ElMessage.success(
Language$1._t('\u5220\u9664\u6210\u529F\uFF01')
)
getData()
})
}
},
}
)
}
const cancel2 = () => {
visible.value = false
formData.value = {
id: '',
userName: '',
name: '',
roleIds: [],
organizationId: null,
orignizationDiaplsyName: '',
publicKey: '',
identity: '',
password: '',
}
}
const passwordEncryption = (publicKey, passwordUser, keyLen = '2048') => {
let encryptor = new JSEncrypt({ default_key_size: keyLen })
encryptor.setPublicKey(publicKey)
let passwordEncryp = encryptor.encrypt(passwordUser)
return passwordEncryp
}
const confirm2 = () => {
if (title.value === '\u6DFB\u52A0\u7528\u6237') {
let postData = {
userName: formData.value.userName,
name: formData.value.name,
roleIds: formData.value.roleIds,
organizationId: formData.value.organizationId,
identity: formData.value.identity,
password: passwordEncryption(
formData.value.publicKey,
formData.value.password
),
}
addUser(postData).then(() => {
ElMessage.success(Language$1._t('\u6DFB\u52A0\u6210\u529F'))
getData()
cancel2()
})
}
if (title.value === '\u4FEE\u6539\u7528\u6237') {
let postData = {
userName: formData.value.userName,
name: formData.value.name,
roleIds: formData.value.roleIds,
organizationId: formData.value.organizationId,
}
updUser(formData.value.id, postData).then(() => {
ElMessage.success(Language$1._t('\u4FEE\u6539\u6210\u529F'))
getData()
cancel2()
})
}
}
const resetVisible = ref(false)
const resetForm = ref({
id: '',
identity: '',
publicKey: '',
password: '',
rePassword: '',
token: '',
})
const openReset = (row) => {
if (!props2.permissionBtns.includes('user-table-password-reset')) {
ElMessage.warning(
Language$1._t('\u7528\u6237\u6CA1\u6709\u8BE5\u6743\u9650\uFF01')
)
return
}
resetForm.value.id = row.id
resetForm.value.identity = keyData.value.identity
resetForm.value.publicKey = keyData.value.publicKey
getTokenById(row.id).then((res) => {
resetForm.value.token = res
resetVisible.value = true
})
}
const cancelReset = () => {
resetVisible.value = false
resetForm.value = {
id: '',
identity: '',
publicKey: '',
password: '',
rePassword: '',
token: '',
}
}
const confirmReset = () => {
let postData = {
identity: resetForm.value.identity,
password: passwordEncryption(
resetForm.value.publicKey,
resetForm.value.password
),
token: resetForm.value.token,
}
updUserPassword(resetForm.value.id, postData).then(() => {
ElMessage.success(Language$1._t('\u4FEE\u6539\u6210\u529F'))
getData()
cancelReset()
})
}
const closeMDialog = () => {
userData.value = []
rowData.value = {
title: '',
id: null,
}
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_upload = resolveComponent('el-upload')
const _component_el_table_column = resolveComponent('el-table-column')
const _component_el_button = resolveComponent('el-button')
const _component_el_table = resolveComponent('el-table')
return (
openBlock(),
createElementBlock('div', _hoisted_1$3X, [
createElementVNode('div', _hoisted_2$3s, [
createElementVNode('div', _hoisted_3$36, [
createVNode$1(
_component_el_input,
{
class: '--scms-input --scms-input-bottom',
placeholder: _ctx._t('\u8BF7\u8F93\u5165\u5173\u952E\u8BCD'),
modelValue: keyWord.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (keyWord.value = $event)),
onKeyup: withKeys(handleBlur, ['enter']),
onBlur: handleBlur,
clearable: '',
onClear: handleBlur,
},
null,
8,
['placeholder', 'modelValue', 'onKeyup']
),
]),
createElementVNode('div', _hoisted_4$2G, [
createElementVNode(
'svg',
{
class: 'icon btns_svg_add',
'aria-hidden': 'true',
onClick: open2,
},
_hoisted_6$27
),
createVNode$1(
_component_el_upload,
{
action: '#',
accept: '.xlsx',
'show-file-list': false,
'http-request': uploadExcel,
},
{
default: withCtx(() => [
createElementVNode('i', {
class: 'iconfont icon-daoru',
onClick: handleUpload,
}),
]),
_: 1,
}
),
createElementVNode('i', {
class: 'iconfont icon-daochu2',
onClick: exportExcel,
}),
]),
]),
createElementVNode('div', _hoisted_7$1Q, [
createVNode$1(
_component_el_table,
{
data: tableData2.value,
class: 'x_table',
height: '96%',
style: { width: '100%' },
'header-cell-style': {
background: '#DBDFE7',
color: '#35363B',
},
},
{
default: withCtx(() => [
createVNode$1(
_component_el_table_column,
{
prop: 'name',
label: _ctx._t('\u59D3\u540D'),
},
null,
8,
['label']
),
createVNode$1(
_component_el_table_column,
{
prop: 'userName',
label: _ctx._t('\u7528\u6237\u540D'),
},
null,
8,
['label']
),
createVNode$1(
_component_el_table_column,
{
prop: 'orignizationDiaplsyName',
label: _ctx._t('\u7EC4\u7EC7\u67B6\u6784'),
},
null,
8,
['label']
),
createVNode$1(
_component_el_table_column,
{
prop: 'rolesDisplay',
label: _ctx._t('\u7528\u6237\u6743\u9650'),
},
null,
8,
['label']
),
createVNode$1(
_component_el_table_column,
{
prop: 'address',
label: _ctx._t('\u64CD\u4F5C'),
width: '400px',
},
{
default: withCtx((scope) => [
createElementVNode('div', _hoisted_8$1D, [
scope.row.userName !== 'SuperAdmin'
? (openBlock(),
createBlock(
_component_el_button,
{
key: 0,
size: 'small',
color: '#8B9CA4',
class:
'btn_color_white elbutton_usermanagement_table_button',
onClick: ($event) => openRoot(scope.row),
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(
_ctx._t('\u6743\u9650\u67E5\u770B')
),
1
),
]),
_: 2,
},
1032,
['onClick']
))
: createCommentVNode('', true),
createVNode$1(
_component_el_button,
{
size: 'small',
color: '#8B9CA4',
class:
'btn_color_white elbutton_usermanagement_table_button',
onClick: ($event) => openReset(scope.row),
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(
_ctx._t('\u5BC6\u7801\u91CD\u7F6E')
),
1
),
]),
_: 2,
},
1032,
['onClick']
),
scope.row.userName !== 'SuperAdmin'
? (openBlock(),
createBlock(
_component_el_button,
{
key: 1,
size: 'small',
color: '#8B9CA4',
class:
'btn_color_white elbutton_usermanagement_table_button',
onClick: ($event) => updUserRow(scope.row),
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(
_ctx._t('\u4FEE\u6539')
),
1
),
]),
_: 2,
},
1032,
['onClick']
))
: createCommentVNode('', true),
scope.row.userName !== 'SuperAdmin'
? (openBlock(),
createBlock(
_component_el_button,
{
key: 2,
size: 'small',
color: '#FB5F5F',
class: 'btn_color_white',
onClick: ($event) => delUserRow(scope.row),
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(
_ctx._t('\u5220\u9664')
),
1
),
]),
_: 2,
},
1032,
['onClick']
))
: createCommentVNode('', true),
]),
]),
_: 1,
},
8,
['label']
),
]),
_: 1,
},
8,
['data']
),
]),
createVNode$1(
MDialog,
{
show: show.value,
'onUpdate:show':
_cache[1] || (_cache[1] = ($event) => (show.value = $event)),
rowData: rowData.value,
showData: userData.value,
isAllDisabled: true,
onClose: closeMDialog,
},
null,
8,
['show', 'rowData', 'showData']
),
createVNode$1(
_sfc_main$4o,
{
formData: formData.value,
title: title.value,
visible: visible.value,
onCancel: cancel2,
onConfirm: confirm2,
},
null,
8,
['formData', 'title', 'visible']
),
createVNode$1(
ResetDialog,
{
formData: resetForm.value,
visible: resetVisible.value,
onCancel: cancelReset,
onConfirm: confirmReset,
},
null,
8,
['formData', 'visible']
),
])
)
}
},
})
var userManage = /* @__PURE__ */ _export_sfc(_sfc_main$4m, [
['__scopeId', 'data-v-17585be6'],
])
var UserManage = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: userManage,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var RoleDialog_vue_vue_type_style_index_0_scoped_true_lang = ''
var RoleDialog_vue_vue_type_style_index_1_lang = ''
const _hoisted_1$3W = { class: 'dialog-footer' }
const _sfc_main$4l = /* @__PURE__ */ defineComponent({
props: {
formData: {
type: Object,
default: () => {},
},
visible: {
type: Boolean,
default: false,
},
title: {
type: String,
default: '',
},
},
emits: ['cancel', 'confirm'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const props2 = reactive($props2)
const show = computed({
get: () => props2.visible,
set: (val2) => val2,
})
const roleForm = ref()
const rules2 = reactive({
name: [
{
required: true,
message: Language$1._t(
'\u89D2\u8272\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A'
),
trigger: 'blur',
},
],
})
const cancel2 = () => {
if (!roleForm.value) return
roleForm.value.resetFields()
emit2('cancel')
}
const confirm2 = () => {
if (!roleForm.value) return
roleForm.value.validate((valid) => {
if (valid) {
emit2('confirm')
} else {
return false
}
})
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_form = resolveComponent('el-form')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
modelValue: unref(show),
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
isRef(show) ? (show.value = $event) : null),
width: '480px',
top: '18vh',
'show-close': false,
'custom-class': '--role-dailog',
onClose: cancel2,
},
{
title: withCtx(() => [
createElementVNode(
'span',
null,
toDisplayString$1(_ctx._t(unref(props2).title)),
1
),
]),
footer: withCtx(() => [
createElementVNode('span', _hoisted_1$3W, [
createVNode$1(
_component_el_button,
{
color: '#DCDCDD',
class: '--scms-cancel-white cms_button_cancel',
onClick: cancel2,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx._t('\u53D6\u6D88')),
1
),
]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
color: '#2F71EE',
class: '--scms-confirm-blue cms_button_determine',
onClick: confirm2,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx._t('\u786E\u8BA4')),
1
),
]),
_: 1,
}
),
]),
]),
default: withCtx(() => [
createElementVNode('div', null, [
createVNode$1(
_component_el_form,
{
ref_key: 'roleForm',
ref: roleForm,
'label-width': '95px',
'label-position': 'left',
class: '--scms-form',
rules: unref(rules2),
model: unref(props2).formData,
},
{
default: withCtx(() => [
createVNode$1(
_component_el_form_item,
{
label: _ctx._t('\u89D2\u8272\u540D\u79F0') + ':',
prop: 'name',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
class: '--scms-input',
modelValue: unref(props2).formData.name,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(props2).formData.name = $event)),
modelModifiers: { trim: true },
placeholder: _ctx._t(
'\u8BF7\u8F93\u5165\u89D2\u8272\u540D\u79F0'
),
},
null,
8,
['modelValue', 'placeholder']
),
]),
_: 1,
},
8,
['label']
),
createVNode$1(
_component_el_form_item,
{
label: _ctx._t('\u5907\u6CE8') + ':',
prop: 'remark',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
class: '--scms-input',
modelValue: unref(props2).formData.remark,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(props2).formData.remark = $event)),
type: 'textarea',
rows: 3,
placeholder: _ctx._t(
'\u8BF7\u8F93\u5165\u5907\u6CE8'
),
},
null,
8,
['modelValue', 'placeholder']
),
]),
_: 1,
},
8,
['label']
),
]),
_: 1,
},
8,
['rules', 'model']
),
]),
]),
_: 1,
},
8,
['modelValue']
)
)
}
},
})
var RoleDialog = /* @__PURE__ */ _export_sfc(_sfc_main$4l, [
['__scopeId', 'data-v-6ef8f786'],
])
var RoleDialog$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: RoleDialog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var RoleManage_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2l = (n2) => (
pushScopeId('data-v-2be81ab4'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3V = { class: 'page' }
const _hoisted_2$3r = /* @__PURE__ */ _withScopeId$2l(() =>
/* @__PURE__ */ createElementVNode(
'use',
{ 'xlink:href': '#icon-quanxiantianjia' },
null,
-1
)
)
const _hoisted_3$35 = [_hoisted_2$3r]
const _hoisted_4$2F = { class: 'page_wrap' }
const _hoisted_5$2n = { class: 'table_btns' }
const _sfc_main$4k = /* @__PURE__ */ defineComponent({
props: {
permissionBtns: {
type: Array,
default: () => [],
},
},
setup(__props2) {
const props2 = __props2
const tableData2 = ref([])
const title = ref('')
const show = ref(false)
onMounted(() => {
getData()
})
const getData = () => {
getRole().then((res) => {
tableData2.value = res
})
}
const roleData = ref([])
const rowData = ref({
title: '',
id: null,
})
const openRoot = (row) => {
if (!props2.permissionBtns.includes('role-table-set-permissions')) {
ElMessage.warning(
Language$1._t('\u7528\u6237\u6CA1\u6709\u8BE5\u6743\u9650\uFF01')
)
return
}
rowData.value.title = row.name
rowData.value.id = row.id
getRoleAuthority(row.id).then((res) => {
roleData.value = res
show.value = true
})
}
const delRoleRow = (row) => {
if (!props2.permissionBtns.includes('role-table-del')) {
ElMessage.warning(
Language$1._t('\u7528\u6237\u6CA1\u6709\u8BE5\u6743\u9650\uFF01')
)
return
}
ElMessageBox.confirm(
Language$1._t('\u662F\u5426\u786E\u8BA4\u5220\u9664\uFF1F'),
Language$1._t('\u63D0\u793A'),
{
confirmButtonText: Language$1._t('\u786E\u8BA4'),
cancelButtonText: Language$1._t('\u53D6\u6D88'),
callback: (action) => {
if (action === 'confirm') {
delRole(row.id).then(() => {
ElMessage.success(
Language$1._t('\u5220\u9664\u6210\u529F\uFF01')
)
getData()
})
}
},
}
)
}
const visible = ref(false)
const open2 = () => {
if (!props2.permissionBtns.includes('role-add')) {
ElMessage.warning(
Language$1._t('\u7528\u6237\u6CA1\u6709\u8BE5\u6743\u9650\uFF01')
)
return
}
title.value = '\u6DFB\u52A0\u89D2\u8272'
visible.value = true
}
const formData = ref({
id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
name: '',
remark: '',
})
const updRoleRow = (row) => {
if (!props2.permissionBtns.includes('role-table-update')) {
ElMessage.warning(
Language$1._t('\u7528\u6237\u6CA1\u6709\u8BE5\u6743\u9650\uFF01')
)
return
}
title.value = '\u4FEE\u6539\u89D2\u8272'
getRoleById(row.id).then((res) => {
formData.value.id = res.id
formData.value.name = res.name
formData.value.remark = res.remark
visible.value = true
})
}
const cancel2 = () => {
formData.value = {
id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
name: '',
remark: '',
}
visible.value = false
}
const confirm2 = () => {
if (title.value === '\u6DFB\u52A0\u89D2\u8272') {
addRole(formData.value).then(() => {
ElMessage.success(Language$1._t('\u6DFB\u52A0\u6210\u529F'))
getData()
cancel2()
})
}
if (title.value === '\u4FEE\u6539\u89D2\u8272') {
updRole(formData.value).then(() => {
ElMessage.success(Language$1._t('\u4FEE\u6539\u6210\u529F'))
getData()
cancel2()
})
}
}
const saveData = (data2, id2) => {
updRoleAuthority(id2, data2).then(() => {
ElMessage.success(Language$1._t('\u4FDD\u5B58\u6210\u529F'))
})
}
const closeMDilalog = () => {
roleData.value = []
rowData.value = {
title: '',
id: null,
}
}
return (_ctx, _cache) => {
const _component_el_table_column = resolveComponent('el-table-column')
const _component_el_button = resolveComponent('el-button')
const _component_el_table = resolveComponent('el-table')
return (
openBlock(),
createElementBlock('div', _hoisted_1$3V, [
createElementVNode('div', { class: 'page_header' }, [
createElementVNode('div', { class: 'btns' }, [
createElementVNode(
'svg',
{
class: 'icon btns_svg_add',
'aria-hidden': 'true',
onClick: open2,
},
_hoisted_3$35
),
]),
]),
createElementVNode('div', _hoisted_4$2F, [
createVNode$1(
_component_el_table,
{
data: tableData2.value,
class: 'x_table',
height: '96%',
style: { width: '100%' },
'header-cell-style': {
background: '#DBDFE7',
color: '#35363B',
},
},
{
default: withCtx(() => [
createVNode$1(
_component_el_table_column,
{
prop: 'name',
label: _ctx._t('\u89D2\u8272\u540D\u79F0'),
},
null,
8,
['label']
),
createVNode$1(
_component_el_table_column,
{
prop: 'remark',
label: _ctx._t('\u5907\u6CE8'),
},
null,
8,
['label']
),
createVNode$1(
_component_el_table_column,
{
label: _ctx._t('\u64CD\u4F5C'),
width: '320px',
},
{
default: withCtx((scope) => [
createElementVNode('div', _hoisted_5$2n, [
createVNode$1(
_component_el_button,
{
size: 'small',
color: '#8B9CA4',
class: 'btn_color_white cms_button_change',
onClick: ($event) => openRoot(scope.row),
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(
_ctx._t('\u6743\u9650\u8BBE\u7F6E')
),
1
),
]),
_: 2,
},
1032,
['onClick']
),
scope.row.name !== 'Tourist'
? (openBlock(),
createBlock(
_component_el_button,
{
key: 0,
size: 'small',
color: '#8B9CA4',
class: 'btn_color_white cms_button_change',
onClick: ($event) => updRoleRow(scope.row),
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(
_ctx._t('\u4FEE\u6539')
),
1
),
]),
_: 2,
},
1032,
['onClick']
))
: createCommentVNode('', true),
scope.row.name !== 'Tourist'
? (openBlock(),
createBlock(
_component_el_button,
{
key: 1,
size: 'small',
color: '#FB5F5F',
class: 'btn_color_white cms_button_del',
onClick: ($event) => delRoleRow(scope.row),
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(
_ctx._t('\u5220\u9664')
),
1
),
]),
_: 2,
},
1032,
['onClick']
))
: createCommentVNode('', true),
]),
]),
_: 1,
},
8,
['label']
),
]),
_: 1,
},
8,
['data']
),
]),
createVNode$1(
MDialog,
{
show: show.value,
'onUpdate:show':
_cache[0] || (_cache[0] = ($event) => (show.value = $event)),
rowData: rowData.value,
showData: roleData.value,
onClose: closeMDilalog,
onSaveData: saveData,
},
null,
8,
['show', 'rowData', 'showData']
),
createVNode$1(
RoleDialog,
{
formData: formData.value,
title: title.value,
visible: visible.value,
onCancel: cancel2,
onConfirm: confirm2,
},
null,
8,
['formData', 'title', 'visible']
),
])
)
}
},
})
var roleManage = /* @__PURE__ */ _export_sfc(_sfc_main$4k, [
['__scopeId', 'data-v-2be81ab4'],
])
var RoleManage = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: roleManage,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var PermissionManage_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$3U = { class: 'box' }
const _hoisted_2$3q = {
key: 0,
class: 'box_wrap',
}
const _hoisted_3$34 = { class: 'x_tab' }
const _hoisted_4$2E = { class: 'content' }
const _hoisted_5$2m = {
key: 1,
class: 'no_permission',
}
const _sfc_main$4j = /* @__PURE__ */ defineComponent({
props: {
editing: { type: Boolean },
node: null,
},
setup(__props2) {
const props2 = __props2
const components = {
userManage,
roleManage,
}
const permissionBtns = ref([])
let currentTab = ref('')
const node2 = reactive(props2.node)
let permissions = computed(() => state$6.permissions)
const permission = {
id: node2.id,
name: node2.name,
subs: [
{
id: 'tab-userManage',
name: '\u7528\u6237\u7BA1\u7406',
},
{
id: 'tab-roleManage',
name: '\u89D2\u8272\u7BA1\u7406',
},
{
id: 'user-add',
name: '\u7528\u6237\u7BA1\u7406-\u6DFB\u52A0',
},
{
id: 'user-import',
name: '\u7528\u6237\u7BA1\u7406-\u5BFC\u5165',
},
{
id: 'user-export',
name: '\u7528\u6237\u7BA1\u7406-\u5BFC\u51FA',
},
{
id: 'user-table-password-reset',
name: '\u7528\u6237\u7BA1\u7406-\u5BC6\u7801\u91CD\u7F6E',
},
{
id: 'user-table-view',
name: '\u7528\u6237\u7BA1\u7406-\u6743\u9650\u67E5\u770B',
},
{
id: 'user-table-update',
name: '\u7528\u6237\u7BA1\u7406-\u4FEE\u6539',
},
{
id: 'user-table-del',
name: '\u7528\u6237\u7BA1\u7406-\u5220\u9664',
},
{
id: 'role-add',
name: '\u89D2\u8272\u7BA1\u7406-\u6DFB\u52A0',
},
{
id: 'role-table-set-permissions',
name: '\u89D2\u8272\u7BA1\u7406-\u6743\u9650\u8BBE\u7F6E',
},
{
id: 'role-table-update',
name: '\u89D2\u8272\u7BA1\u7406-\u4FEE\u6539',
},
{
id: 'role-table-del',
name: '\u89D2\u8272\u7BA1\u7406-\u5220\u9664',
},
],
}
let flag2 = permissions.value.some((f2) => f2.id === node2.id)
if (!flag2) {
permissions.value.push(permission)
}
if (userInfo.permissions.all) {
permissionBtns.value = permission.subs.map((item2) => item2.id)
} else {
permissionBtns.value = userInfo.permissions.widgets
}
const showTabs = ref([])
const allTabs = ['tab-userManage', 'tab-roleManage']
permissionBtns.value.forEach((item2) => {
if (allTabs.includes(item2)) {
showTabs.value.push(item2)
}
})
if (showTabs.value.length !== 0) {
currentTab.value = showTabs.value[0].split('-')[1]
}
onUnmounted(() => {
let index2 = permissions.value.findIndex((f2) => f2.id === node2.id)
if (index2 !== -1) {
permissions.value.splice(index2, 1)
}
})
const changeTab = (name2) => {
currentTab.value = name2
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$3U, [
showTabs.value.length !== 0
? (openBlock(),
createElementBlock('div', _hoisted_2$3q, [
createElementVNode('div', _hoisted_3$34, [
showTabs.value.includes('tab-userManage')
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass([
'x_tab_item',
{
current_tab_item:
unref(currentTab) === 'userManage',
},
]),
onClick:
_cache[0] ||
(_cache[0] = ($event) => changeTab('userManage')),
},
toDisplayString$1(_ctx._t('\u7528\u6237\u7BA1\u7406')),
3
))
: createCommentVNode('', true),
showTabs.value.includes('tab-roleManage')
? (openBlock(),
createElementBlock(
'div',
{
key: 1,
class: normalizeClass([
'x_tab_item',
{
current_tab_item:
unref(currentTab) === 'roleManage',
},
]),
onClick:
_cache[1] ||
(_cache[1] = ($event) => changeTab('roleManage')),
},
toDisplayString$1(_ctx._t('\u89D2\u8272\u7BA1\u7406')),
3
))
: createCommentVNode('', true),
]),
createElementVNode('div', _hoisted_4$2E, [
(openBlock(),
createBlock(
resolveDynamicComponent(components[unref(currentTab)]),
{ permissionBtns: permissionBtns.value },
null,
8,
['permissionBtns']
)),
]),
]))
: (openBlock(),
createElementBlock(
'div',
_hoisted_5$2m,
toDisplayString$1(_ctx._t('\u65E0\u6743\u9650\u67E5\u770B')),
1
)),
])
)
}
},
})
var PermissionManage = /* @__PURE__ */ _export_sfc(_sfc_main$4j, [
['__scopeId', 'data-v-ffaa0170'],
])
var __glob_2_98 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: PermissionManage,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var PopupWindowButton_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2k = (n2) => (
pushScopeId('data-v-7e27269a'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3T = { class: 'line' }
const _hoisted_2$3p = { class: 'field-item flex page' }
const _hoisted_3$33 = /* @__PURE__ */ _withScopeId$2k(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u5F39\u7A97\u753B\u9762',
-1
)
)
const _hoisted_4$2D = { class: 'select-page flex' }
const _hoisted_5$2l = { class: 'name' }
const _hoisted_6$26 = { class: 'line' }
const _hoisted_7$1P = { class: 'field-item flex name' }
const _hoisted_8$1C = /* @__PURE__ */ _withScopeId$2k(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u5F39\u7A97\u540D\u79F0',
-1
)
)
const _hoisted_9$1v = {
class: 'line clearfix',
style: { display: 'inherit' },
}
const _hoisted_10$1o = { class: 'field-item flex size' }
const _hoisted_11$1g = /* @__PURE__ */ createTextVNode(
'\u56FA\u5B9A\u5C3A\u5BF8'
)
const _hoisted_12$1d = { class: 'field-item height' }
const _hoisted_13$15 = /* @__PURE__ */ _withScopeId$2k(() =>
/* @__PURE__ */ createElementVNode('span', { class: 'title' }, 'H', -1)
)
const _hoisted_14$$ = { class: 'field-item width' }
const _hoisted_15$Y = /* @__PURE__ */ _withScopeId$2k(() =>
/* @__PURE__ */ createElementVNode('span', { class: 'title' }, 'W', -1)
)
const config$9 = {
category: 'jump',
name: '\u5F39\u7A97\u6309\u94AE',
icon: 'icon-danchuanganniu',
permission: true,
styleConfig: {
lineHeight: false,
},
}
const _sfc_main$4i = /* @__PURE__ */ defineComponent({
props: {
props: {
type: Object,
required: false,
default: () => {
return {
code: '',
functonOptions: {
id: '',
name: '',
title: '',
width: 0,
height: 0,
fixedSize: false,
},
confirmBoxConfig: {
check: false,
message: '',
},
}
},
},
},
setup(__props2) {
const props2 = __props2
let props_2 = reactive(props2.props)
let visible = ref(false)
const confirm2 = (row) => {
props_2.functonOptions.name = row ? row.name : ''
props_2.functonOptions.id = row ? row.id : ''
}
onBeforeMount(() => {
if (!props_2.functonOptions) {
props_2.code = ''
props_2.functonOptions = {
id: '',
name: '',
title: '',
width: 0,
height: 0,
fixedSize: false,
}
}
if (!props_2.confirmBoxConfig) {
props_2.confirmBoxConfig = {
check: false,
message: '',
}
}
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_input_number = resolveComponent('el-input-number')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
SettingItem$1,
{ title: '\u529F\u80FD' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$3T, [
createElementVNode('div', _hoisted_2$3p, [
_hoisted_3$33,
createElementVNode('div', _hoisted_4$2D, [
createElementVNode(
'span',
_hoisted_5$2l,
toDisplayString$1(unref(props_2).functonOptions.name),
1
),
createElementVNode('i', {
class: 'iconfont icon-bianjigongcheng',
onClick:
_cache[0] ||
(_cache[0] = ($event) =>
isRef(visible)
? (visible.value = true)
: (visible = true)),
}),
]),
]),
]),
createElementVNode('div', _hoisted_6$26, [
createElementVNode('div', _hoisted_7$1P, [
_hoisted_8$1C,
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
placeholder:
'\u8BF7\u8F93\u5165\u5F39\u7A97\u540D\u79F0',
'model-value': unref(props_2).functonOptions.title,
onInput:
_cache[1] ||
(_cache[1] = (value2) => {
unref(props_2).functonOptions.title = value2
}),
},
null,
8,
['model-value']
),
]),
]),
createElementVNode('div', _hoisted_9$1v, [
createElementVNode('div', _hoisted_10$1o, [
createVNode$1(
_component_el_checkbox,
{
class: 'cms-el-checkbox-font-size-12',
'model-value': unref(props_2).functonOptions.fixedSize,
onChange:
_cache[2] ||
(_cache[2] = (value2) => {
unref(props_2).functonOptions.fixedSize = value2
}),
},
{
default: withCtx(() => [_hoisted_11$1g]),
_: 1,
},
8,
['model-value']
),
]),
createElementVNode('div', _hoisted_12$1d, [
_hoisted_13$15,
createVNode$1(
_component_el_input_number,
{
disabled: !unref(props_2).functonOptions.fixedSize,
'model-value': unref(props_2).functonOptions.height,
onInput:
_cache[3] ||
(_cache[3] = (value2) => {
unref(props_2).functonOptions.height = value2
}),
class: 'cms-el-input-number-x',
'controls-position': 'right',
min: 0,
},
null,
8,
['disabled', 'model-value']
),
]),
createElementVNode('div', _hoisted_14$$, [
_hoisted_15$Y,
createVNode$1(
_component_el_input_number,
{
disabled: !unref(props_2).functonOptions.fixedSize,
'model-value': unref(props_2).functonOptions.width,
onInput:
_cache[4] ||
(_cache[4] = (value2) => {
unref(props_2).functonOptions.width = value2
}),
class: 'cms-el-input-number-x',
'controls-position': 'right',
min: 0,
},
null,
8,
['disabled', 'model-value']
),
]),
]),
createVNode$1(
ConfirmBoxSetting,
{
confirmBoxConfig: unref(props_2).confirmBoxConfig,
},
null,
8,
['confirmBoxConfig']
),
]),
_: 1,
}
),
createVNode$1(
unref(functionDialog),
{
title: '\u5F39\u7A97\u753B\u9762',
data: unref(props_2).functonOptions,
visible: unref(visible),
onCancel:
_cache[5] ||
(_cache[5] = ($event) =>
isRef(visible) ? (visible.value = false) : (visible = false)),
onConfirm: confirm2,
},
null,
8,
['data', 'visible']
),
])
)
}
},
})
var PopupWindowButton_settings = /* @__PURE__ */ _export_sfc(_sfc_main$4i, [
['__scopeId', 'data-v-7e27269a'],
])
var __glob_2_99 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$9,
default: PopupWindowButton_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var PopupWindowButton_vue_vue_type_style_index_0_scoped_true_lang = ''
var PopupWindowButton_vue_vue_type_style_index_1_lang = ''
const _sfc_main$4h = /* @__PURE__ */ defineComponent({
props: {
text: {
type: String,
required: false,
},
code: {
type: String,
required: false,
default: '',
},
functonOptions: {
type: Object,
required: false,
default: () => {
return {
id: '',
name: '',
title: '',
width: 0,
height: 0,
fixedSize: false,
}
},
},
confirmBoxConfig: {
type: Object,
default: () => {
return {
check: false,
message: '',
}
},
},
props: {
type: Object,
required: false,
default: () => {
return {}
},
},
node: {
type: Object,
required: false,
default: () => {
return {}
},
},
},
setup(__props2) {
const props2 = __props2
const t3 = Language$1.t
const pageManager2 = new PageManager()
const props_2 = reactive(props2.node.props)
props_2.text = props_2?.text || '\u5F39\u7A97\u6309\u94AE'
const showDialog = () => {
const { id: id2, title, width, fixedSize, height } = props2.functonOptions
pageManager2.alertRoute(
id2,
t3(title),
fixedSize,
width,
height,
'dialog',
true
)
}
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
Button,
mergeProps(props2, {
onClick: showDialog,
t: unref(t3)(props2.functonOptions.title),
}),
null,
16,
['t']
)
)
}
},
})
var PopupWindowButton = /* @__PURE__ */ _export_sfc(_sfc_main$4h, [
['__scopeId', 'data-v-30d5efe9'],
])
var __glob_2_100 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: PopupWindowButton,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const config$8 = {
category: 'base',
name: '\u77E9\u5F62',
icon: 'icon-juxing1',
}
const _sfc_main$4g = {}
function _sfc_render$8(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('div')
}
var Rect_settings = /* @__PURE__ */ _export_sfc(_sfc_main$4g, [
['render', _sfc_render$8],
])
var __glob_2_103 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$8,
default: Rect_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var RouterLink_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const config$7 = {
category: '',
name: '\u8DEF\u7531',
icon: 'icon-kongzhianniu',
}
const _sfc_main$4f = /* @__PURE__ */ defineComponent({
props: {
props: null,
},
setup(__props2) {
const props2 = __props2
const props_2 = reactive(props2.props)
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', null, [
withDirectives(
createElementVNode(
'input',
{
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (unref(props_2).pageId = $event)),
placeholder: 'pageId',
},
null,
512
),
[[vModelText, unref(props_2).pageId]]
),
])
)
}
},
})
var RouterLink_settings = /* @__PURE__ */ _export_sfc(_sfc_main$4f, [
['__scopeId', 'data-v-17cc5c79'],
])
var __glob_2_105 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$7,
default: RouterLink_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var RouterLink_vue_vue_type_style_index_0_scoped_true_lang = ''
const _sfc_main$4e = /* @__PURE__ */ defineComponent({
props: {
pageId: null,
},
setup(__props2) {
const props2 = __props2
function click2() {}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'button',
{
type: 'button',
onClick: click2,
},
toDisplayString$1(`router-link: ${props2.pageId}`),
1
)
)
}
},
})
var RouterLink = /* @__PURE__ */ _export_sfc(_sfc_main$4e, [
['__scopeId', 'data-v-6846b717'],
])
var __glob_2_106 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: RouterLink,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ShutdownButton_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2j = (n2) => (
pushScopeId('data-v-5a421d3a'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3S = /* @__PURE__ */ _withScopeId$2j(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'notice' },
[
/* @__PURE__ */ createElementVNode(
'span',
null,
' \u672C\u5730\u7AEF\u5173\u95ED\u8F6F\u4EF6\u7684\u540C\u65F6\u5173\u95ED\u7535\u8111;'
),
/* @__PURE__ */ createElementVNode(
'span',
null,
'web\u7AEF\u5173\u95ED\u8F6F\u4EF6\u65F6\u4E0D\u5173\u95ED\u7535\u8111;'
),
],
-1
)
)
const config$6 = {
category: 'system',
name: '\u5173\u673A\u7EC4\u4EF6',
icon: 'icon-guanji',
permission: true,
}
const _sfc_main$4d = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const props2 = reactive($props2.node.props)
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
_sfc_main$72,
{ title: '\u529F\u80FD' },
{
default: withCtx(() => [
_hoisted_1$3S,
createVNode$1(
ConfirmBoxSetting,
{
confirmBoxConfig: unref(props2).confirmBoxConfig,
},
null,
8,
['confirmBoxConfig']
),
]),
_: 1,
}
),
])
)
}
},
})
var ShutdownButton_settings = /* @__PURE__ */ _export_sfc(_sfc_main$4d, [
['__scopeId', 'data-v-5a421d3a'],
])
var __glob_2_107 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$6,
default: ShutdownButton_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _sfc_main$4c = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
const text2 = '\u5173\u673A'
node2.setDefaultProps({
text: text2,
confirmBoxConfig: {
check: true,
message: window.electron
? '\u662F\u5426\u5173\u95ED\u8F6F\u4EF6\u5E76\u5173\u673A\uFF1F'
: '\u662F\u5426\u5173\u95ED\u8F6F\u4EF6\uFF1F',
elMessageBoxOptions: {
type: 'error',
center: false,
},
},
})
node2.props.text = node2.props.text || text2
async function click2() {
if (window.electron) {
window.electron.ipcRenderer.send('shutdown', 60)
} else {
window.close()
}
}
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(Button, mergeProps($props2, { onClick: click2 }), null, 16)
)
}
},
})
var __glob_2_108 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$4c,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const config$5 = {
category: 'base',
name: '\u9759\u6001\u6587\u672C',
icon: 'icon-jingtaiwenben',
}
const _sfc_main$4b = {}
function _sfc_render$7(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('div')
}
var StaticText_settings = /* @__PURE__ */ _export_sfc(_sfc_main$4b, [
['render', _sfc_render$7],
])
var __glob_2_109 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$5,
default: StaticText_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var StaticText_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$3R = ['contenteditable', 'innerText']
const _sfc_main$4a = /* @__PURE__ */ defineComponent({
props: {
editing: {
type: Boolean,
},
text: {
type: String,
default: '\u9759\u6001\u6587\u672C',
},
},
emits: ['update'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const el2 = ref()
let contenteditable = ref(false)
const setText = (e2) => {
emit2('update', { text: e2.target.innerText })
contenteditable.value = false
}
const onDblclick = () => {
if (!Language$1.isOriginal()) return
if (props2.editing) {
contenteditable.value = true
setTimeout(() => {
if (!el2.value) return
const selection = getSelection()
const range3 = new Range()
range3.selectNodeContents(el2.value)
selection?.removeAllRanges()
selection?.addRange(range3)
}, 0)
}
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'p',
{
ref_key: 'el',
ref: el2,
contenteditable: contenteditable.value,
innerText: _ctx.t(props2.text),
onBlur: setText,
onDblclick,
},
null,
40,
_hoisted_1$3R
)
)
}
},
})
var StaticText = /* @__PURE__ */ _export_sfc(_sfc_main$4a, [
['__scopeId', 'data-v-6745af12'],
])
var __glob_2_110 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: StaticText,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var SwitchButton_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2i = (n2) => (
pushScopeId('data-v-f078b22a'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3Q = /* @__PURE__ */ createTextVNode('\u5F00\u5173')
const _hoisted_2$3o = /* @__PURE__ */ createTextVNode('\u6309\u94AE')
const _hoisted_3$32 = { class: 'form' }
const _hoisted_4$2C = { class: 'row' }
const _hoisted_5$2k = /* @__PURE__ */ _withScopeId$2i(() =>
/* @__PURE__ */ createElementVNode(
'label',
null,
'\u5173\u8054\u53D8\u91CF',
-1
)
)
const _hoisted_6$25 = /* @__PURE__ */ _withScopeId$2i(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'state-title' },
'\u5F00\u72B6\u6001\uFF1A',
-1
)
)
const _hoisted_7$1O = { class: 'flex justify-start state-item' }
const _hoisted_8$1B = /* @__PURE__ */ _withScopeId$2i(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'state-label' },
'\u5199\u5165\u503C',
-1
)
)
const _hoisted_9$1u = { class: 'flex-1' }
const _hoisted_10$1n = { class: 'flex justify-start state-item' }
const _hoisted_11$1f = /* @__PURE__ */ _withScopeId$2i(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'state-label' },
'\u6587\u672C',
-1
)
)
const _hoisted_12$1c = { class: 'flex-1' }
const _hoisted_13$14 = { class: 'flex justify-start state-item' }
const _hoisted_14$_ = /* @__PURE__ */ _withScopeId$2i(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'state-label' },
'\u80CC\u666F',
-1
)
)
const _hoisted_15$X = /* @__PURE__ */ _withScopeId$2i(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'state-title' },
'\u5173\u72B6\u6001\uFF1A',
-1
)
)
const _hoisted_16$W = { class: 'flex justify-start state-item' }
const _hoisted_17$Q = /* @__PURE__ */ _withScopeId$2i(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'state-label' },
'\u5199\u5165\u503C',
-1
)
)
const _hoisted_18$K = { class: 'flex-1' }
const _hoisted_19$H = { class: 'flex justify-start state-item' }
const _hoisted_20$E = /* @__PURE__ */ _withScopeId$2i(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'state-label' },
'\u6587\u672C',
-1
)
)
const _hoisted_21$w = { class: 'flex-1' }
const _hoisted_22$u = { class: 'flex justify-start state-item' }
const _hoisted_23$r = /* @__PURE__ */ _withScopeId$2i(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'state-label' },
'\u80CC\u666F',
-1
)
)
const config$4 = {
category: 'readWrite',
name: '\u5F00\u5173\u6309\u94AE',
icon: 'icon-kaiguananniu',
permission: true,
styleConfig: {
lineHeight: false,
backgroundColor: false,
backgroundImage: false,
},
}
const _sfc_main$49 = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
const props2 = node2.props
const onStyleProxy = styleConverter(props2.on.style)
const offStyleProxy = styleConverter(props2.off.style)
let varError = ref(false)
function input(val2) {
props2.name = val2
varError.value = false
}
const checkVariable2 = async (e2, key2) => {
if (!props2.name) return
let target2 = e2.target
const { message: message2 } = await useCheckVariable([
{ name: props2.name, value: target2.value },
])
message2.value.forEach((message22) => {
props2[key2].value = ''
ElMessage.error(message22)
})
}
async function varCheck() {
if (!props2.name) return
varError.value = false
const rs2 = await request(
`/api/v1/variable/query?keyword=${props2.name}`,
{ silent: true }
)
if (!rs2.result.find((v4) => v4.name === props2.name)) {
props2.type = void 0
varError.value = true
return
}
const varInfo = rs2.result?.[0]
props2.type = varInfo.type
}
varCheck()
let pickVarDialogShown = ref(false)
const confirm2 = (rows) => {
pickVarDialogShown.value = false
if (!rows || !rows.length) return
const item2 = rows[0]
props2.name = item2.name
props2.type = item2.type
props2.variableList = {
name: item2.name,
id: item2.id,
}
}
function change2(status, value2, key2) {
if (status == 'on') {
onStyleProxy[key2] = value2
}
if (status == 'off') {
offStyleProxy[key2] = value2
}
}
watch$1(props2, (val2) => {
if (val2.buttonType === 'switch') {
props2.on.value = 1
props2.off.value = 0
}
})
return (_ctx, _cache) => {
const _component_el_radio = resolveComponent('el-radio')
const _component_el_radio_group = resolveComponent('el-radio-group')
const _component_el_input = resolveComponent('el-input')
const _component_el_color_picker = resolveComponent('el-color-picker')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
SettingItem$1,
{ title: '\u6837\u5F0F\u9009\u62E9' },
{
default: withCtx(() => [
createVNode$1(
_component_el_radio_group,
{
class: 'radio-group',
modelValue: unref(props2).buttonType,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(props2).buttonType = $event)),
},
{
default: withCtx(() => [
createVNode$1(
_component_el_radio,
{
label: 'switch',
size: 'large',
class: 'cms-el-radio',
},
{
default: withCtx(() => [_hoisted_1$3Q]),
_: 1,
}
),
createVNode$1(
_component_el_radio,
{
label: 'button',
size: 'large',
class: 'cms-el-radio',
},
{
default: withCtx(() => [_hoisted_2$3o]),
_: 1,
}
),
]),
_: 1,
},
8,
['modelValue']
),
]),
_: 1,
}
),
createVNode$1(
SettingItem$1,
{ title: '\u529F\u80FD' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_3$32, [
createElementVNode('div', _hoisted_4$2C, [
_hoisted_5$2k,
createVNode$1(
_component_el_input,
{
class: normalizeClass([
'input cms-el-input-x',
{
error: varError.value,
},
]),
placeholder:
'\u8BF7\u8F93\u5165\u53D8\u91CF\u540D\u79F0',
'model-value': unref(props2).name,
onInput: input,
onBlur: varCheck,
onKeydown: withKeys(varCheck, ['enter']),
},
null,
8,
['class', 'model-value', 'onKeydown']
),
createElementVNode('button', {
class: 'iconfont icon-bianjigongcheng',
onClick:
_cache[1] ||
(_cache[1] = ($event) =>
(pickVarDialogShown.value = true)),
}),
]),
createElementVNode('div', null, [
_hoisted_6$25,
createElementVNode('div', null, [
createElementVNode('div', _hoisted_7$1O, [
_hoisted_8$1B,
createElementVNode('div', _hoisted_9$1u, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
placeholder: '',
readonly: unref(props2).buttonType === 'switch',
modelValue: unref(props2).on.value,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(props2).on.value = $event)),
onBlur:
_cache[3] ||
(_cache[3] = ($event) =>
checkVariable2($event, 'on')),
},
null,
8,
['readonly', 'modelValue']
),
]),
]),
createElementVNode('div', _hoisted_10$1n, [
_hoisted_11$1f,
createElementVNode('div', _hoisted_12$1c, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
placeholder: '',
modelValue: unref(props2).on.text,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(props2).on.text = $event)),
},
null,
8,
['modelValue']
),
]),
]),
createElementVNode('div', _hoisted_13$14, [
_hoisted_14$_,
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
'model-value':
unref(props2).on.style.backgroundColor,
onActiveChange:
_cache[5] ||
(_cache[5] = (e2) =>
unref(isMouseOnElPopper)() &&
change2('on', e2, 'backgroundColor')),
},
null,
8,
['predefine', 'model-value']
),
createVNode$1(
BackgroundImageSetting,
{
styleX: unref(onStyleProxy),
onChange:
_cache[6] ||
(_cache[6] = (key2, value2) =>
(unref(onStyleProxy)[key2] = value2)),
},
null,
8,
['styleX']
),
]),
]),
]),
createElementVNode('div', null, [
_hoisted_15$X,
createElementVNode('div', null, [
createElementVNode('div', _hoisted_16$W, [
_hoisted_17$Q,
createElementVNode('div', _hoisted_18$K, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
placeholder: '',
modelValue: unref(props2).off.value,
'onUpdate:modelValue':
_cache[7] ||
(_cache[7] = ($event) =>
(unref(props2).off.value = $event)),
readonly: unref(props2).buttonType === 'switch',
onBlur:
_cache[8] ||
(_cache[8] = ($event) =>
checkVariable2($event, 'off')),
},
null,
8,
['modelValue', 'readonly']
),
]),
]),
createElementVNode('div', _hoisted_19$H, [
_hoisted_20$E,
createElementVNode('div', _hoisted_21$w, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
placeholder: '',
modelValue: unref(props2).off.text,
'onUpdate:modelValue':
_cache[9] ||
(_cache[9] = ($event) =>
(unref(props2).off.text = $event)),
},
null,
8,
['modelValue']
),
]),
]),
createElementVNode('div', _hoisted_22$u, [
_hoisted_23$r,
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
'model-value':
unref(props2).off.style.backgroundColor,
onActiveChange:
_cache[10] ||
(_cache[10] = (e2) =>
unref(isMouseOnElPopper)() &&
change2('off', e2, 'backgroundColor')),
},
null,
8,
['predefine', 'model-value']
),
createVNode$1(
BackgroundImageSetting,
{
styleX: unref(offStyleProxy),
onChange:
_cache[11] ||
(_cache[11] = (key2, value2) =>
(unref(offStyleProxy)[key2] = value2)),
},
null,
8,
['styleX']
),
]),
]),
]),
createVNode$1(
ConfirmBoxSetting,
{
confirmBoxConfig: unref(props2).confirmBoxConfig,
},
null,
8,
['confirmBoxConfig']
),
createVNode$1(
unref(_sfc_main$6Q),
{
data: { name: unref(props2).name },
visible: pickVarDialogShown.value,
noLanguage: true,
isAppendToBody: true,
filterType: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
onCancel:
_cache[12] ||
(_cache[12] = ($event) =>
(pickVarDialogShown.value = false)),
onConfirm: confirm2,
},
null,
8,
['data', 'visible']
),
]),
]),
_: 1,
}
),
])
)
}
},
})
var SwitchButton_settings = /* @__PURE__ */ _export_sfc(_sfc_main$49, [
['__scopeId', 'data-v-f078b22a'],
])
var __glob_2_111 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$4,
default: SwitchButton_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const defaultProps$6 = {
name: '',
type: void 0,
buttonType: 'switch',
controllerType: 'on-off',
on: {
value: '1',
text: 'ON',
style: {
backgroundColor: 'rgba(150, 169, 246, 1)',
backgroundImage: '',
},
},
off: {
value: '0',
text: 'OFF',
style: {
backgroundColor: 'rgba(150, 169, 246, 1)',
backgroundImage: '',
},
},
confirmBoxConfig: {
check: false,
message: '',
},
variableList: {
name: '',
id: '',
},
}
var Switch_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2h = (n2) => (
pushScopeId('data-v-f8b1c17e'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3P = /* @__PURE__ */ _withScopeId$2h(() =>
/* @__PURE__ */ createElementVNode('div', { class: 'placeholder' }, null, -1)
)
const _hoisted_2$3n = { class: 'content flex-1' }
const _sfc_main$48 = /* @__PURE__ */ defineComponent({
props: {
modelValue: null,
customStyle: null,
activeText: null,
inactiveText: null,
},
emits: ['update:modelValue', 'change'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const modelValue = useVModel(props2, 'modelValue', emit2)
const dot2 = ref()
const switchButton2 = ref()
let dotHeight = ref(0)
let width = ref(0)
onMounted(() => {
dotHeight.value = dot2.value.offsetHeight
width.value = switchButton2.value.offsetWidth
})
const dotStyle = computed(() => {
let height = props2.customStyle.height
? parseFloat(props2.customStyle.height)
: dotHeight.value
height = Math.max(height, 20)
width.value = props2.customStyle.width
? parseFloat(props2.customStyle.width)
: width.value
width.value = Math.max(width.value, 60)
return {
transform: modelValue.value
? `translate3d(${width.value - height}px, 0, 0)`
: 'translate3d(0, 0, 0)',
}
})
const handleClick2 = () => {
modelValue.value = !modelValue.value
emit2('change', modelValue.value)
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'cms-switch-button',
onClick: handleClick2,
ref_key: 'switchButton',
ref: switchButton2,
},
[
createElementVNode(
'div',
{
class: 'dot',
ref_key: 'dot',
ref: dot2,
style: normalizeStyle$1(dotStyle.value),
},
null,
4
),
createElementVNode(
'div',
{
class: normalizeClass([
'label flex',
unref(modelValue) ? 'flex-row-reverse' : '',
]),
},
[
_hoisted_1$3P,
createElementVNode(
'div',
_hoisted_2$3n,
toDisplayString$1(
unref(modelValue)
? __props2.activeText
: __props2.inactiveText
),
1
),
],
2
),
],
512
)
)
}
},
})
var Switch = /* @__PURE__ */ _export_sfc(_sfc_main$48, [
['__scopeId', 'data-v-f8b1c17e'],
])
var Switch$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Switch,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var SwitchButton_vue_vue_type_style_index_0_scoped_true_lang = ''
var SwitchButton_vue_vue_type_style_index_1_scoped_true_lang = ''
const _hoisted_1$3O = ['t']
const _hoisted_2$3m = ['contenteditable']
const _sfc_main$47 = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
emits: ['update'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const node2 = reactive($props2.node)
const props2 = node2.props
node2.setDefaultProps(defaultProps$6)
if (props2.on?.['background']) {
props2.on.style.backgroundColor = props2.on['background']
delete props2.on['background']
}
if (props2.off?.['background']) {
props2.off.style.backgroundColor = props2.off['background']
delete props2.off['background']
}
const el2 = ref()
let contenteditable = ref(false)
const style2 = reactive($props2.node.style)
const wrapperStyle = computed(
() => props2[`${active.value ? 'on' : 'off'}`].style
)
const buttonType = computed(() => {
return props2.buttonType
})
const transformBoolean = (value2) => {
return !!Number(value2) && value2 !== 'False'
}
const collectText2 = () => {
const texts = [
props2.confirmBoxConfig?.message,
props2.on.text,
props2.off.text,
]
texts.map((ele) => t(ele))
}
let active = ref(Variable.store[props2.name])
if (props2.name && app.running) {
const expression = new Expression(props2.name)
expression.watch((val2) => {
active.value = transformBoolean(val2)
})
}
function updateVariable() {
if (transformBoolean(Variable.store[props2.name])) {
Variable._store_[props2.name] = props2.off.value
} else {
Variable._store_[props2.name] = props2.on.value
}
}
const handleChange = async () => {
if (app.editing || !props2.name) {
return true
}
const execFn = () => {
updateVariable()
}
const { check: check2, message: message2 } = props2.confirmBoxConfig || {}
if (!check2) {
execFn()
return
}
if (await confirm(Language$1.t(message2))) {
execFn()
}
}
let isMousedown = ref(false)
const handleMouseDown = () => {
isMousedown.value = true
}
const handleMouseUp = () => {
isMousedown.value = false
}
let clicks = 0
let clickTimer = null
const handleClick2 = async () => {
if (app.editing) {
clicks++
if (clicks === 1) {
if (!contenteditable.value) {
clickTimer = setTimeout(() => {
active.value = !active.value
clicks = 0
}, 300)
}
} else {
clearTimeout(clickTimer)
clicks = 0
}
return
}
if (!props2.name) return
active.value = !active.value
const execFn = () => {
updateVariable()
}
const { check: check2, message: message2 } = props2.confirmBoxConfig
if (!check2) {
execFn()
return
}
if (await confirm(Language$1.t(message2))) {
execFn()
}
}
const onDblclick = () => {
if (!Language$1.isOriginal()) return
if (app.editing) {
contenteditable.value = true
clearTimeout(clickTimer)
clicks = 0
setTimeout(() => {
if (!el2.value) return
const selection = getSelection()
const range3 = new Range()
range3.selectNodeContents(el2.value)
selection?.removeAllRanges()
selection?.addRange(range3)
}, 0)
}
}
const handleBlur = (e2) => {
if (!Language$1.isOriginal()) return
if (!contenteditable.value) return
if (active.value) {
emit2('update', { on: { ...props2.on, text: e2.target?.innerText } })
} else {
emit2('update', { off: { ...props2.off, text: e2.target?.innerText } })
}
contenteditable.value = false
}
function onMouseUp() {
isMousedown.value = false
}
onMounted(() => {
useEventListener(document, 'mouseup', onMouseUp)
})
return (_ctx, _cache) => {
return buttonType.value === 'switch'
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: 'switch-btn-switch',
style: normalizeStyle$1(wrapperStyle.value),
t: collectText2(),
},
[
createVNode$1(
Switch,
{
modelValue: active.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (active.value = $event)),
'active-text': _ctx.t(unref(props2).on.text),
'inactive-text': _ctx.t(unref(props2).off.text),
customStyle: unref(style2),
onChange: handleChange,
},
null,
8,
['modelValue', 'active-text', 'inactive-text', 'customStyle']
),
],
12,
_hoisted_1$3O
))
: buttonType.value === 'button'
? (openBlock(),
createElementBlock(
'button',
{
key: 1,
class: normalizeClass([
'switch-btn-button',
isMousedown.value ? 'mousedown' : '',
]),
ref_key: 'el',
ref: el2,
type: 'button',
onClick: handleClick2,
onDblclick,
onBlur: handleBlur,
onMousedown: handleMouseDown,
onMouseup: handleMouseUp,
contenteditable: contenteditable.value,
style: normalizeStyle$1(wrapperStyle.value),
},
toDisplayString$1(
_ctx.t(
active.value ? unref(props2).on.text : unref(props2).off.text
)
),
47,
_hoisted_2$3m
))
: createCommentVNode('', true)
}
},
})
var SwitchButton = /* @__PURE__ */ _export_sfc(_sfc_main$47, [
['__scopeId', 'data-v-379f3128'],
])
var __glob_2_112 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: SwitchButton,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var TextInput_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2g = (n2) => (
pushScopeId('data-v-97437d3c'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3N = { class: 'drop-down-list-settings' }
const _hoisted_2$3l = { class: 'adjustment' }
const _hoisted_3$31 = /* @__PURE__ */ _withScopeId$2g(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
[
/* @__PURE__ */ createTextVNode(
' \u4E0B\u62C9\u6846\u5BBD\u5EA6\u6BD4\u4F8B\uFF1A '
),
/* @__PURE__ */ createElementVNode('i', {
class: 'iconfont icon-tishi1',
title: '\u8C03\u6574\u8303\u56F4\uFF1A20%-50%',
}),
],
-1
)
)
const config$3 = {
category: 'controller',
name: '\u6587\u672C\u8F93\u5165',
icon: 'icon-wenbenshuru',
permission: true,
styleConfig: {
lineHeight: false,
},
props: {
inputSettings: {
autoSelectAll: true,
keyboard: {
enabled: false,
enterClose: false,
},
},
},
}
const _sfc_main$46 = /* @__PURE__ */ defineComponent({
props: {
editing: { type: Boolean },
node: null,
text: null,
},
setup(__props2) {
const $props2 = __props2
const props2 = reactive($props2.node.props)
props2.selectChartDataList = props2.selectChartDataList || []
props2.selectWidth = props2.selectWidth || 30
const confirm2 = (selectChartDataList = []) => {
props2.selectChartDataList = selectChartDataList
}
onMounted(() => {})
return (_ctx, _cache) => {
const _component_el_input_number = resolveComponent('el-input-number')
return (
openBlock(),
createElementBlock('div', _hoisted_1$3N, [
createVNode$1(
SettingItem$1,
{ title: '\u529F\u80FD' },
{
default: withCtx(() => [
createVNode$1(
ControllerCharts$4,
{
dialogTitle: '\u521B\u5EFA\u6587\u672C\u8F93\u5165',
selectChartDataList: unref(props2).selectChartDataList,
onConfirm: confirm2,
},
null,
8,
['selectChartDataList']
),
]),
_: 1,
}
),
createVNode$1(
SettingItem$1,
{ title: '\u914D\u7F6E' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$3l, [
_hoisted_3$31,
createElementVNode('div', null, [
createVNode$1(
_component_el_input_number,
{
min: 20,
max: 50,
class: 'cms-el-input-number-x input',
'controls-position': 'right',
modelValue: unref(props2).selectWidth,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(props2).selectWidth = $event)),
},
null,
8,
['modelValue']
),
]),
]),
]),
_: 1,
}
),
])
)
}
},
})
var TextInput_settings = /* @__PURE__ */ _export_sfc(_sfc_main$46, [
['__scopeId', 'data-v-97437d3c'],
])
var __glob_2_113 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$3,
default: TextInput_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var TextInput_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2f = (n2) => (
pushScopeId('data-v-091b99b1'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3M = /* @__PURE__ */ _withScopeId$2f(() =>
/* @__PURE__ */ createElementVNode('div', { class: 'line' }, null, -1)
)
const _hoisted_2$3k = ['placeholder']
const _sfc_main$45 = /* @__PURE__ */ defineComponent({
props: {
editing: { type: Boolean },
node: null,
text: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
const props2 = reactive($props2.node.props)
props2.selectChartDataList = props2.selectChartDataList || []
props2.selectWidth = props2.selectWidth || 30
const textInputRef = ref()
const selectStyle = computed(() => {
return {
width: props2.selectWidth + '%',
}
})
const inputStyle = computed(() => {
return {
width: `calc(${100 - props2.selectWidth}% - 2px)`,
}
})
let selectValue = ref('Like')
let searchValue = ref('')
const changeData = () => {
let relativeList = props2.selectChartDataList.map((item2) => {
let data2 = {
chartId: item2.id,
dataSetId: item2.dataSetId,
field: item2.field || '',
}
return data2
})
let detail = {
controllerId: node2.id,
type: selectValue.value,
value: searchValue.value,
relativeList,
}
if (!searchValue.value) {
detail.destroyed = true
}
emit(ControllerEventType.UNION_CHART, detail)
emit(ControllerEventType.CHART_DATA, detail)
}
const options2 = [
{
value: 'Equals',
label: '\u7CBE\u51C6\u5339\u914D',
},
{
value: 'Like',
label: '\u6A21\u7CCA\u5339\u914D',
},
]
const changeData_ = lodash$2.exports.debounce(() => changeData(), 200, {
maxWait: 1e3,
})
watch$1(
() => getChartNodes$2(),
() => {
getNewChartsList(props2.selectChartDataList)
},
{
deep: true,
}
)
const dropDownSelect = ref()
watch$1(
() => state$6.current.zoom,
() => {
dropDownSelect.value.visible = false
}
)
onMounted(() => {
changeData_()
})
onUnmounted(() => {
let detail = {
controllerId: node2.id,
type: selectValue.value,
value: searchValue.value,
relativeList: [],
destroyed: true,
}
emit(ControllerEventType.UN_UNION_CHART, detail)
})
function setValue(val2) {
searchValue.value = val2
changeData()
}
node2.methods.setValue = setValue
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
return (
openBlock(),
createElementBlock(
'div',
{
ref_key: 'textInputRef',
ref: textInputRef,
class: 'text-input',
},
[
createVNode$1(
_component_el_select,
{
modelValue: selectValue.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (selectValue.value = $event)),
class: 'drop-down-select',
'popper-class': 'drop-down-popper',
effect: '',
teleported: false,
ref_key: 'dropDownSelect',
ref: dropDownSelect,
onVisibleChange:
_cache[1] ||
(_cache[1] = ($event) =>
unref(visibleChange)(dropDownSelect.value, $event)),
'suffix-transition': false,
onChange: changeData,
style: normalizeStyle$1(selectStyle.value),
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(options2, (item2) => {
return createVNode$1(
_component_el_option,
{
key: item2.value,
label: _ctx._t(item2.label),
value: item2.value,
},
null,
8,
['label', 'value']
)
}),
64
)),
]),
_: 1,
},
8,
['modelValue', 'style']
),
_hoisted_1$3M,
withDirectives(
createElementVNode(
'input',
{
style: normalizeStyle$1(inputStyle.value),
class: 'select-input',
placeholder: _ctx._t(
'\u8BF7\u8F93\u5165\u6587\u672C\u548C\u503C'
),
onChange: changeData,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) => (searchValue.value = $event)),
},
null,
44,
_hoisted_2$3k
),
[[vModelText, searchValue.value]]
),
],
512
)
)
}
},
})
var TextInput = /* @__PURE__ */ _export_sfc(_sfc_main$45, [
['__scopeId', 'data-v-091b99b1'],
])
var __glob_2_114 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: TextInput,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var UserInformation_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2e = (n2) => (
pushScopeId('data-v-4658465f'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3L = { class: 'user-information-settings' }
const _hoisted_2$3j = { class: 'line' }
const _hoisted_3$30 = { class: 'field-item flex pf' }
const _hoisted_4$2B = /* @__PURE__ */ _withScopeId$2e(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u9000\u51FA\u767B\u5F55\u7C7B\u578B',
-1
)
)
const _hoisted_5$2j = {
key: 0,
class: 'function_items_wrap',
}
const _hoisted_6$24 = { class: 'item_row' }
const _hoisted_7$1N = /* @__PURE__ */ _withScopeId$2e(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'item_row_label' },
'\u8DF3\u8F6C\u753B\u9762',
-1
)
)
const _hoisted_8$1A = { class: 'item_row_value' }
const _hoisted_9$1t = { class: 'text_yellow' }
const config$2 = {
category: 'jump',
name: '\u7528\u6237\u4FE1\u606F',
icon: 'icon-yonghuguanli',
styleConfig: {
textSetting: false,
},
props: {
type: 'homepage',
},
}
const _sfc_main$44 = /* @__PURE__ */ defineComponent({
props: {
node: null,
type: null,
jumpPage: null,
},
emits: ['update'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
let visible = ref(false)
const open2 = () => {
visible.value = true
}
const cancel2 = () => {
visible.value = false
}
const updateData = (jumpPage) => {
emit2('update', { jumpPage })
}
const props2 = reactive($props2.node.props)
props2.jumpPage = props2.jumpPage || {
id: '',
name: '',
}
const confirm2 = (row) => {
updateData({
name: row?.name || '',
id: row?.id || '',
})
}
const changeData = (val2) => {
let data2
if (val2 === 'homepage') {
data2 = app.current.project.pageList.find(
(e2) => e2.id === app.current.project.current.homePageId
)
updateData({
name: data2?.name || '',
id: data2?.id || '',
})
}
if (val2 === 'location') {
updateData({
name: data2?.name || '',
id: data2?.id || '',
})
}
}
onMounted(() => {
if (props2.type === 'homepage') {
changeData(props2.type)
}
})
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
return (
openBlock(),
createElementBlock('div', _hoisted_1$3L, [
createVNode$1(
SettingItem$1,
{ title: '\u529F\u80FD' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$3j, [
createElementVNode('div', _hoisted_3$30, [
_hoisted_4$2B,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
modelValue: unref(props2).type,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(props2).type = $event)),
onChange: changeData,
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
key: 'homepage',
value: 'homepage',
label: '\u56DE\u5230\u9996\u9875',
}),
createVNode$1(_component_el_option, {
key: 'current',
value: 'current',
label: '\u505C\u7559\u5F53\u524D\u9875',
}),
createVNode$1(_component_el_option, {
key: 'location',
value: 'location',
label: '\u8DF3\u8F6C\u9875\u9762',
}),
]),
_: 1,
},
8,
['modelValue']
),
]),
]),
unref(props2).type === 'location'
? (openBlock(),
createElementBlock('div', _hoisted_5$2j, [
createElementVNode('div', _hoisted_6$24, [
_hoisted_7$1N,
createElementVNode('div', _hoisted_8$1A, [
createElementVNode(
'span',
_hoisted_9$1t,
toDisplayString$1(unref(props2).jumpPage.name),
1
),
createElementVNode('i', {
class: 'iconfont icon-bianjigongcheng right-icon',
onClick: open2,
}),
]),
]),
createVNode$1(
functionDialog,
{
visible: unref(visible),
data: unref(props2).jumpPage,
onCancel: cancel2,
onConfirm: confirm2,
},
null,
8,
['visible', 'data']
),
]))
: createCommentVNode('', true),
]),
_: 1,
}
),
])
)
}
},
})
var UserInformation_settings = /* @__PURE__ */ _export_sfc(_sfc_main$44, [
['__scopeId', 'data-v-4658465f'],
])
var __glob_2_115 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$2,
default: UserInformation_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const logout = () => {
return request({
url: `/api/v1/auth/logout`,
method: 'post',
})
}
const getOldTokenApi = (id2, data2) => {
return request({
url: `/api/v1/authority/user/${id2}/password/token`,
method: 'post',
data: data2,
})
}
const changePassWordApi = (id2, data2) => {
return request({
url: `/api/v1/authority/user/${id2}/password`,
method: 'put',
data: data2,
})
}
const changePassWord = async (id2, data2) => {
let flashEncryptConfig = await getFlashKey$1().then((res) => {
return res
})
let oldPassWord = data2.oldPassword
let newPassWord = data2.newPassword
const passwordEncrypt = oldPassWord
? rasEncrypt(oldPassWord, flashEncryptConfig.publicKey)
: ''
const newPasswordEncrypt = newPassWord
? rasEncrypt(newPassWord, flashEncryptConfig.publicKey)
: ''
let tokenData = {
identity: flashEncryptConfig.identity,
password: passwordEncrypt,
}
return new Promise((resolve2, reject2) => {
getOldTokenApi(id2, tokenData)
.then((res) => {
let changeData = {
identity: flashEncryptConfig.identity,
password: newPasswordEncrypt,
token: String(res),
}
changePassWordApi(id2, changeData)
.then((res2) => {
resolve2(res2)
})
.catch((err) => {
reject2(err)
})
})
.catch((err) => {
reject2(err)
})
})
}
var User_vue_vue_type_style_index_0_scoped_true_lang = ''
var User_vue_vue_type_style_index_1_lang = ''
const _withScopeId$2d = (n2) => (
pushScopeId('data-v-b8b53da4'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3K = ['i']
const _hoisted_2$3i = { class: 'title' }
const _hoisted_3$2$ = ['title']
const _hoisted_4$2A = { class: 'name' }
const _hoisted_5$2i = { class: 'text' }
const _hoisted_6$23 = /* @__PURE__ */ _withScopeId$2d(() =>
/* @__PURE__ */ createElementVNode('div', { class: 'line' }, null, -1)
)
const _hoisted_7$1M = { class: 'centent' }
const _hoisted_8$1z = { class: 'dialog-footer' }
const _sfc_main$43 = /* @__PURE__ */ defineComponent({
props: {
running: { type: Boolean },
isUserInformation: { type: Boolean },
},
emits: ['passWordConfirm', 'onOut'],
setup(__props2, { emit: $emit }) {
const $props2 = __props2
const userForm = ref()
let index2 = ref(0)
let passwordDialog = ref(false)
let passWordData = ref({
oldPassword: '',
newPassword: '',
againPassword: '',
})
const rules2 = reactive({
oldPassword: [
{
required: true,
validator: (rule2, value2, callback) => {
if (value2 === '') {
callback(
new Error(Language$1._t('\u8BF7\u8F93\u5165\u539F\u5BC6\u7801'))
)
} else {
callback()
}
},
trigger: 'blur',
},
],
newPassword: [
{
required: true,
validator: (rule2, value2, callback) => {
if (value2 === '') {
callback(
new Error(Language$1._t('\u8BF7\u8F93\u5165\u65B0\u5BC6\u7801'))
)
} else {
callback()
}
},
trigger: 'blur',
},
],
againPassword: [
{
required: true,
validator: (rule2, value2, callback) => {
if (value2 === '') {
callback(
new Error(
Language$1._t(
'\u8BF7\u518D\u6B21\u8F93\u5165\u65B0\u5BC6\u7801'
)
)
)
} else if (value2 !== passWordData.value.newPassword) {
callback(
new Error(
Language$1._t('\u4E24\u6B21\u5BC6\u7801\u4E0D\u4E00\u81F4')
)
)
} else {
callback()
}
},
trigger: 'blur',
},
],
})
const onOut = () => {
index2.value = 3
if ($props2.isUserInformation && !$props2.running) {
return false
}
logout()
.then(() => {
Session.set('Token', '')
if ($props2.isUserInformation) {
$emit('onOut')
return
}
history.go()
})
.catch((err) => {
console.error(err)
})
}
const changPassWord = () => {
index2.value = 2
if (!$props2.running) {
return false
}
passWordData.value = {
oldPassword: '',
newPassword: '',
againPassword: '',
}
passwordDialog.value = true
}
const cancel2 = () => {
passwordDialog.value = false
}
const confirm2 = () => {
if (!userForm.value) return
userForm.value.validate((valid) => {
if (valid) {
let id2 = String(userInfo.user.id)
changePassWord(id2, passWordData.value)
.then(() => {
logout()
.then(() => {
cancel2()
Session.set('Token', '')
$emit('passWordConfirm')
})
.catch(() => {})
ElMessage({
message: Language$1._t(
'\u5BC6\u7801\u4FEE\u6539\u6210\u529F\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55'
),
type: 'success',
})
})
.catch((err) => {
console.error(err)
ElMessage.error(
Language$1._t('\u5BC6\u7801\u4FEE\u6539\u5931\u8D25')
)
})
} else {
return false
}
})
}
onMounted(() => {})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_form = resolveComponent('el-form')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock(
'div',
{
class: 'box',
i: unref(Language$1).triggerRenderData.i,
},
[
createElementVNode('div', _hoisted_2$3i, [
createElementVNode(
'i',
{
class: 'iconfont icon-geren icon',
title: unref(userInfo)?.user?.userName || '',
'data-tooltip-placement': 'left',
},
[
createElementVNode(
'span',
_hoisted_4$2A,
toDisplayString$1(unref(userInfo).user.userName),
1
),
],
8,
_hoisted_3$2$
),
createElementVNode(
'div',
_hoisted_5$2i,
toDisplayString$1(unref(userInfo).user.name),
1
),
_hoisted_6$23,
]),
createElementVNode('div', _hoisted_7$1M, [
createElementVNode(
'div',
{
class: normalizeClass([
'item',
{ isActive: unref(index2) == 1 },
]),
onClick:
_cache[0] ||
(_cache[0] = ($event) =>
isRef(index2) ? (index2.value = 1) : (index2 = 1)),
},
toDisplayString$1(_ctx._t('\u4E2A\u4EBA\u4FE1\u606F')),
3
),
createElementVNode(
'div',
{
class: normalizeClass([
'item',
{ isActive: unref(index2) == 2 },
]),
onClick: changPassWord,
},
toDisplayString$1(_ctx._t('\u4FEE\u6539\u5BC6\u7801')),
3
),
createElementVNode(
'div',
{
class: normalizeClass([
'item',
{ isActive: unref(index2) == 3 },
]),
onClick: onOut,
},
toDisplayString$1(_ctx._t('\u9000\u51FA\u767B\u5F55')),
3
),
]),
createVNode$1(
_component_el_dialog,
{
modelValue: unref(passwordDialog),
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
isRef(passwordDialog)
? (passwordDialog.value = $event)
: (passwordDialog = $event)),
width: '480px',
top: '30vh',
'show-close': false,
'custom-class': 'change-password-dailog',
onClose: cancel2,
'destroy-on-close': true,
},
{
title: withCtx(() => [
createElementVNode(
'span',
null,
toDisplayString$1(_ctx._t('\u4FEE\u6539\u5BC6\u7801')),
1
),
]),
footer: withCtx(() => [
createElementVNode('span', _hoisted_8$1z, [
createVNode$1(
_component_el_button,
{
color: '#DCDCDD',
class: '--scms-cancel-white cms_button_cancel',
onClick: cancel2,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx._t('\u53D6\u6D88')),
1
),
]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
color: '#2F71EE',
class: '--scms-confirm-blue cms_button_determine',
onClick: confirm2,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx._t('\u786E\u5B9A')),
1
),
]),
_: 1,
}
),
]),
]),
default: withCtx(() => [
createVNode$1(
_component_el_form,
{
ref_key: 'userForm',
ref: userForm,
'label-width': '150px',
'label-position': 'left',
class: '--scms-form',
rules: unref(rules2),
model: unref(passWordData),
},
{
default: withCtx(() => [
createVNode$1(
_component_el_form_item,
{
label: _ctx._t('\u539F\u5BC6\u7801') + ':',
prop: 'oldPassword',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
type: 'password',
class: '--scms-input',
modelValue: unref(passWordData).oldPassword,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(passWordData).oldPassword =
$event)),
placeholder: _ctx._t(
'\u8BF7\u8F93\u5165\u539F\u5BC6\u7801'
),
},
null,
8,
['modelValue', 'placeholder']
),
]),
_: 1,
},
8,
['label']
),
createVNode$1(
_component_el_form_item,
{
label: _ctx._t('\u65B0\u5BC6\u7801') + ':',
prop: 'newPassword',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
type: 'password',
class: '--scms-input',
modelValue: unref(passWordData).newPassword,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(passWordData).newPassword =
$event)),
placeholder: _ctx._t(
'\u8BF7\u8F93\u5165\u65B0\u5BC6\u7801'
),
},
null,
8,
['modelValue', 'placeholder']
),
]),
_: 1,
},
8,
['label']
),
createVNode$1(
_component_el_form_item,
{
label: _ctx._t('\u786E\u8BA4\u5BC6\u7801') + ':',
prop: 'againPassword',
class: 'last-item',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
type: 'password',
class: '--scms-input',
modelValue: unref(passWordData).againPassword,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(passWordData).againPassword =
$event)),
placeholder: _ctx._t(
'\u8BF7\u518D\u6B21\u8F93\u5165\u65B0\u5BC6\u7801'
),
},
null,
8,
['modelValue', 'placeholder']
),
]),
_: 1,
},
8,
['label']
),
]),
_: 1,
},
8,
['rules', 'model']
),
]),
_: 1,
},
8,
['modelValue']
),
],
8,
_hoisted_1$3K
)
)
}
},
})
var User = /* @__PURE__ */ _export_sfc(_sfc_main$43, [
['__scopeId', 'data-v-b8b53da4'],
])
var User$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: User,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Login_vue_vue_type_style_index_0_scoped_true_lang = ''
var Login_vue_vue_type_style_index_1_lang = ''
const _withScopeId$2c = (n2) => (
pushScopeId('data-v-b9ec1340'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3J = { class: 'box' }
const _hoisted_2$3h = { class: 'title' }
const _hoisted_3$2_ = /* @__PURE__ */ _withScopeId$2c(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-guanbi' },
null,
-1
)
)
const _hoisted_4$2z = [_hoisted_3$2_]
const _hoisted_5$2h = { class: 'login-input login-username' }
const _hoisted_6$22 = ['onClick']
const _hoisted_7$1L = { class: 'login-input login-password' }
const _hoisted_8$1y = { style: { position: 'relative', height: '100%' } }
const _hoisted_9$1s = { class: 'login-btn' }
const _sfc_main$42 = /* @__PURE__ */ defineComponent({
emits: ['onClick', 'onOut'],
setup(__props2, { emit: emit2 }) {
const userList = ref([])
let userName = ref('')
let passWord = ref('')
let passWordIcon = ref(false)
const popperClass = ref(`user-select-popper-${Date.now()}`)
const loginBoxRef = ref()
const userSelect = ref()
const propsInputStyle = reactive({
fontFamily: 'Alibaba PuHuiTi',
fontWeight: '400',
textDecoration: 'none',
color: '#9B9B9B',
alignItems: 'center',
textAlign: 'left',
letterSpacing: '2px',
backgroundColor: '#ECECEE',
borderWidth: '1px',
borderStyle: 'solid',
borderColor: '#E7E7E7',
borderRadius: '3px',
fontSize: '14px',
lineHeight: '18px',
})
const getUserList = async () => {
const res = await getUser('')
userList.value = res.map((item2) => {
return {
value: item2.userName,
label: item2.userName,
}
})
}
const valChange = () => {
onClick()
}
const onClick = () => {
let isLogin = false
login$2(userName.value, passWord.value).then((res) => {
if (res.token) {
isLogin = true
Session.set('loginOut', '')
} else {
isLogin = false
}
emit2('onClick', isLogin)
})
}
const onOut = () => {
emit2('onOut')
}
const transformStyle = (style2) => {
let arr = []
for (const prop in style2) {
if (Object.hasOwnProperty.call(style2, prop)) {
arr.push(`${lodash$2.exports.kebabCase(prop)}: ${style2[prop]}`)
}
}
return arr.join(';')
}
const setCompStyle = () => {
loginBoxRef.value.querySelectorAll('.login').forEach((el2) => {
el2.setAttribute(
'style',
`--el-select-input-color: ${propsInputStyle.color}; --input-background-color: ${propsInputStyle.backgroundColor};--input-border-width: ${propsInputStyle.borderWidth}`
)
})
const inputStyle = {
...unref(propsInputStyle),
'--color': propsInputStyle.color,
}
loginBoxRef.value
.querySelectorAll('.user-select input')
.forEach((el2) => {
el2.setAttribute('style', transformStyle(inputStyle))
})
loginBoxRef.value
.querySelectorAll('.user-select .el-input.el-input--suffix')
.forEach((el2) => {
el2.setAttribute('style', transformStyle(inputStyle))
})
loginBoxRef.value.querySelectorAll('.user-select').forEach((el2) => {
el2.setAttribute(
'style',
`--el-select-input-color: ${propsInputStyle.color}`
)
})
document.body.querySelectorAll(`.${popperClass.value}`).forEach((el2) => {
el2.setAttribute(
'style',
`${el2.getAttribute('style')};--el-color-primary: ${
propsInputStyle.color
}`
)
})
}
const maskInput = ref()
const hideInputMask = () => {
if (maskInput.value) {
setTimeout(() => {
userName.value = maskInput.value.value
maskInput.value.style.display = 'none'
userSelect.value.focus()
}, 0)
}
}
onMounted(() => {
setCompStyle()
getUserList()
})
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input = resolveComponent('el-input')
return (
openBlock(),
createElementBlock('div', _hoisted_1$3J, [
createElementVNode('div', _hoisted_2$3h, [
createTextVNode(
toDisplayString$1(_ctx._t('\u767B\u5F55\u8D26\u53F7')) + ' ',
1
),
createElementVNode(
'div',
{
class: 'close',
onClick: onOut,
},
_hoisted_4$2z
),
]),
createElementVNode(
'form',
{
ref_key: 'loginBoxRef',
ref: loginBoxRef,
class: 'login',
},
[
createElementVNode('div', _hoisted_5$2h, [
createVNode$1(
_component_el_select,
{
class: 'user-select',
ref_key: 'userSelect',
ref: userSelect,
modelValue: unref(userName),
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
isRef(userName)
? (userName.value = $event)
: (userName = $event)),
filterable: '',
'fit-input-width': true,
'automatic-dropdown': false,
placeholder: _ctx._t('\u8BF7\u8F93\u5165\u8D26\u53F7'),
'loading-text': _ctx._t('\u540E\u53F0\u52A0\u8F7D'),
'no-data-text': _ctx._t('\u6682\u65E0\u6570\u636E'),
'popper-class': popperClass.value + ' user-select-popper',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(userList.value, (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
[
'modelValue',
'placeholder',
'loading-text',
'no-data-text',
'popper-class',
]
),
withDirectives(
createElementVNode(
'input',
{
class: 'auto-input-mask',
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
isRef(userName)
? (userName.value = $event)
: (userName = $event)),
ref_key: 'maskInput',
ref: maskInput,
},
null,
512
),
[[vModelText, unref(userName)]]
),
createElementVNode(
'div',
{
class: 'auto-input-wrapper',
onClick: withModifiers(hideInputMask, ['prevent']),
},
null,
8,
_hoisted_6$22
),
]),
createElementVNode('div', _hoisted_7$1L, [
createElementVNode('div', _hoisted_8$1y, [
createVNode$1(
_component_el_input,
{
class: 'login-input-inset',
placeholder: _ctx._t('\u8BF7\u8F93\u5165\u5BC6\u7801'),
type: unref(passWordIcon) ? 'text' : 'password',
modelValue: unref(passWord),
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
isRef(passWord)
? (passWord.value = $event)
: (passWord = $event)),
onKeyup: withKeys(valChange, ['enter']),
},
null,
8,
['placeholder', 'type', 'modelValue', 'onKeyup']
),
createElementVNode(
'i',
{
onClick:
_cache[3] ||
(_cache[3] = ($event) =>
isRef(passWordIcon)
? (passWordIcon.value = !unref(passWordIcon))
: (passWordIcon = !unref(passWordIcon))),
class: normalizeClass([
'iconfont login-password-icon',
unref(passWordIcon) ? 'icon-xianshi' : 'icon-yincang',
]),
},
null,
2
),
]),
]),
createElementVNode('div', _hoisted_9$1s, [
createElementVNode(
'div',
{
class: 'login-btn-text go',
onClick,
},
toDisplayString$1(_ctx._t('\u767B\u5F55')),
1
),
]),
],
512
),
])
)
}
},
})
var Login = /* @__PURE__ */ _export_sfc(_sfc_main$42, [
['__scopeId', 'data-v-b9ec1340'],
])
var Login$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Login,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var UserInformation_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2b = (n2) => (
pushScopeId('data-v-b9420b2c'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3I = /* @__PURE__ */ _withScopeId$2b(() =>
/* @__PURE__ */ createElementVNode(
'use',
{ 'xlink:href': '#icon-geren' },
null,
-1
)
)
const _hoisted_2$3g = [_hoisted_1$3I]
const _sfc_main$41 = /* @__PURE__ */ defineComponent({
props: {
editing: { type: Boolean },
node: null,
running: { type: Boolean },
},
setup(__props2) {
const $props2 = __props2
useCssVars((_ctx) => ({
'30671d3e': count2.value,
}))
let showLogin = ref(false)
let showUser = ref(false)
const props2 = reactive($props2.node.props)
const userBox = ref(null)
const userMsg = ref(null)
const userBtn = ref(null)
const isUserInformation = ref(true)
const router2 = useRouter()
const route = useRoute()
let count2 = ref('35px')
props2.jumpPage = props2.jumpPage || {
id: '',
name: '',
}
let userName = userInfo.user.userName || ''
const clickMenuItem = async (e2) => {
if (Session.get('loginOut')) {
const user2 = await request('/api/v1/authority/user/current')
const permissions = await request(
`/api/v1/authority/roleclaim/user/${user2.id}`
)
userInfo.user = user2
userInfo.permissions.all = permissions.all
userInfo.permissions.pages = permissions.left
userInfo.permissions.widgets = permissions.right
if (permissions.left.includes(route.params.pageId)) {
showLogin.value = !showLogin.value
} else {
Session.remove('loginOut')
history.go()
}
return
}
if (
userInfo.user.userName == 'Tourist' ||
!userName ||
!Session.get('Token')
) {
showLogin.value = !showLogin.value
} else {
showUser.value = !showUser.value
const viewer = document.querySelector('.viewer')
if ($props2.running) {
nextTick(() => {
if (
viewer &&
userBox.value &&
showUser.value &&
viewer.offsetWidth -
(userBox.value.offsetWidth + userBox.value.offsetLeft) <
127
) {
count2.value = '-200px'
} else {
count2.value = '35px'
}
})
}
}
e2.stopPropagation()
}
const init2 = () => {
document.addEventListener('click', hideUser, true)
}
const hideUser = (event) => {
if (
userMsg.value &&
!userMsg.value.contains(event.target) &&
userBtn.value &&
!userBtn.value.contains(event.target)
) {
showUser.value = false
}
}
const passWordConfirm = () => {
showLogin.value = true
}
const onOut = () => {
showUser.value = false
Session.set('loginOut', true)
if (
props2.jumpPage.id &&
~~route.params.pageId !== ~~props2.jumpPage.id &&
props2.type !== 'current'
) {
replace$4(props2.jumpPage)
} else {
history.go()
}
}
const loginFun = (isLogin) => {
if (isLogin) {
showLogin.value = false
let query = route.query
if (!query.pageId) {
history.go()
} else {
router2.push({
path: route.path,
query: {
projectId: query.projectId,
projectName: query.projectName,
},
})
}
} else {
console.error('\u767B\u5F55\u5931\u8D25')
}
}
const loginClose = () => {
showLogin.value = !showLogin.value
const token = Session.get('Token')
if (!token) {
history.go()
}
}
onMounted(() => {
init2()
})
onUnmounted(() => {
document.removeEventListener('click', hideUser)
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'user-box',
ref: (el2) => {
if (el2) userBox.value = el2
},
},
[
(openBlock(),
createElementBlock(
'svg',
{
class: 'icon',
ref: (el2) => {
if (el2) userBtn.value = el2
},
onClick: clickMenuItem,
'aria-hidden': 'true',
},
_hoisted_2$3g,
512
)),
createElementVNode(
'div',
{
class: 'user-msg',
ref: (el2) => {
if (el2) userMsg.value = el2
},
},
[
showLogin.value
? (openBlock(),
createBlock(Login, {
key: 0,
onOnClick: loginFun,
onOnOut: loginClose,
}))
: createCommentVNode('', true),
withDirectives(
createVNode$1(
User,
{
running: __props2.running,
isUserInformation: isUserInformation.value,
onPassWordConfirm: passWordConfirm,
onOnOut: onOut,
},
null,
8,
['running', 'isUserInformation']
),
[[vShow, showUser.value]]
),
],
512
),
],
512
)
)
}
},
})
var UserInformation = /* @__PURE__ */ _export_sfc(_sfc_main$41, [
['__scopeId', 'data-v-b9420b2c'],
])
var __glob_2_116 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: UserInformation,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const config$1 = {
category: 'test',
name: '\u6240\u6709\u53D8\u91CF',
icon: 'icon-shuzhishuru',
permission: true,
}
const _sfc_main$40 = {}
function _sfc_render$6(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('div')
}
var VarList_settings = /* @__PURE__ */ _export_sfc(_sfc_main$40, [
['render', _sfc_render$6],
])
var __glob_2_117 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config: config$1,
default: VarList_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var VarList_vue_vue_type_style_index_0_scoped_true_lang = ''
const _sfc_main$3$ = /* @__PURE__ */ defineComponent({
setup(__props2) {
let search2 = ref('')
const varList = reactive([])
onMounted(async () => {
const rs2 = await request('/api/v1/variable/query')
rs2.result.forEach((e2) => {
varList.push(e2.name)
})
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', null, [
withDirectives(
createElementVNode(
'input',
{
placeholder: 'search',
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (search2.value = $event)),
},
null,
512
),
[[vModelText, search2.value]]
),
createElementVNode('table', null, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(varList), (name2, i2) => {
return (
openBlock(),
createElementBlock(
'tr',
{
key: i2,
style: normalizeStyle$1({
display: String(name2).includes(search2.value)
? ''
: 'none',
}),
},
[
createElementVNode(
'th',
null,
toDisplayString$1(name2),
1
),
createElementVNode('td', null, [
createVNode$1(
ReadWriteInput$2,
{ name: name2 },
null,
8,
['name']
),
]),
],
4
)
)
}),
128
)),
]),
])
)
}
},
})
var VarList = /* @__PURE__ */ _export_sfc(_sfc_main$3$, [
['__scopeId', 'data-v-07747412'],
])
var __glob_2_118 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: VarList,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const config = {
category: 'system',
name: '\u865A\u62DF\u952E\u76D8',
icon: 'icon-xunijianpan',
permission: false,
styleConfig: {
fontStyle: false,
textDecoration: false,
fontFamily: false,
letterSpacing: false,
lineHeight: false,
},
}
const _sfc_main$3_ = {}
function _sfc_render$5(_ctx, _cache, $props2, $setup, $data, $options) {
return openBlock(), createElementBlock('div')
}
var VirtualKeyboardButton_settings = /* @__PURE__ */ _export_sfc(_sfc_main$3_, [
['render', _sfc_render$5],
])
var __glob_2_119 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
config,
default: VirtualKeyboardButton_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var VirtualKeyboardButton_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2a = (n2) => (
pushScopeId('data-v-c57d075e'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3H = /* @__PURE__ */ _withScopeId$2a(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-xunijianpan' },
null,
-1
)
)
const _hoisted_2$3f = [_hoisted_1$3H]
const _sfc_main$3Z = /* @__PURE__ */ defineComponent({
setup(__props2) {
function click2() {
dispatchEvent(new Event('toggleVirtualKeyboard'))
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'button',
{
class: 'button',
onClick: click2,
},
_hoisted_2$3f
)
)
}
},
})
var VirtualKeyboardButton = /* @__PURE__ */ _export_sfc(_sfc_main$3Z, [
['__scopeId', 'data-v-c57d075e'],
])
var __glob_2_120 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: VirtualKeyboardButton,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const defaultOptionsDataProps = [
{
label: '\u9009\u98791',
expression: '',
},
{
label: '\u9009\u98792',
expression: '',
},
{
label: '\u9009\u98793',
expression: '',
},
]
const defaultBtnStyle = {
size: 18,
backgroundColor: '#3D6EFF',
selectedColor: '#fff',
}
const defaultProps$5 = {
variable: '',
trueValue: '1',
falseValue: '0',
name: '\u590D\u9009\u6846',
btnStyle: defaultBtnStyle,
}
var index$k = {
category: 'readWrite',
name: '\u590D\u9009\u63A7\u5236',
icon: 'icon-fuxuankongzhi',
permission: true,
onCreate(node2) {
node2.setDefaultProps(defaultProps$5)
},
}
var __glob_2_0 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
defaultProps: defaultProps$5,
default: index$k,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var index$j = {
category: 'base',
name: '\u65F6\u95F4\u9009\u62E9',
icon: 'icon-shijiankongjian',
styleConfig: {
lineHeight: false,
},
permission: true,
}
var __glob_2_1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: index$j,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
let defaultProps$4 = {
inputSettings: {
customized: true,
autoSelectAll: true,
keyboard: {
enabled: false,
enterClose: false,
},
},
maxCount: 100,
}
var index$i = {
category: 'controller',
name: '\u7B5B\u9009\u5668',
icon: 'icon-shaixuan',
styleConfig: {
lineHeight: false,
},
permission: true,
onCreate(node2) {
node2.setDefaultProps(defaultProps$4)
},
}
var __glob_2_2 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: index$i,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
let defaultProps$3 = {
exp: '',
target: { exp: '100' },
tagConfig: {
showNumber: true,
showPercent: true,
unit: '',
precision: 2,
position: 'top',
rotate: 0,
},
condition: [
{
name: '\u989C\u8272\u72B6\u6001',
type: '==',
exp: [],
configStyle: {
background: {
value: { backgroundColor: '#1CC87A' },
enabled: true,
},
color: {
value: '',
enabled: false,
},
textContent: {
value: '',
enabled: false,
},
bling: {
value: '',
enabled: false,
},
},
},
],
defaultColor: '#3D6EFF',
}
const useCompatibleOldData = (node2) => {
const nodeProps = node2.props
for (const caseItem of nodeProps.condition || []) {
const configStyle = caseItem.configStyle
if (configStyle.backgroundColor) {
configStyle.background = {
value: {
backgroundColor: configStyle.backgroundColor.value,
},
enabled: configStyle.backgroundColor.enabled,
}
}
delete configStyle.backgroundColor
}
}
const useConditionStyle = ($props2) => {
const nodeProps = $props2.node.props
let conditionStyle = computed(() => {
try {
if (nodeProps.exp) {
const condition2 = nodeProps.condition
for (const caseItem of condition2) {
const merge_exp = handleExp(
nodeProps.exp,
caseItem.type,
caseItem.exp
)
if (merge_exp && Variable.exp(merge_exp)) {
const {
textContent,
bling,
background,
color: color2,
} = caseItem.configStyle
return {
background: background.enabled && background.value,
backgroundColor:
background.enabled && background.value.backgroundColor,
color: color2.enabled && color2.value,
text: textContent.enabled && Variable.exp(textContent.value),
bling: bling.enabled,
}
}
}
}
} catch (error2) {
return {}
}
return {}
})
return conditionStyle
}
var index$h = {
category: 'readWrite',
name: '\u8FDB\u5EA6\u6761',
icon: 'icon-jindutiao',
permission: true,
onCreate(node2) {
useCompatibleOldData(node2)
node2.setDefaultProps(defaultProps$3)
},
}
var __glob_2_3 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: index$h,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var index$g = {
category: 'controller',
name: '\u67E5\u8BE2\u6309\u94AE',
icon: 'icon-sousuo',
permission: true,
styleConfig: {
lineHeight: false,
},
}
var __glob_2_4 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: index$g,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const defaultProps$2 = {
options: defaultOptionsDataProps,
variable: '',
btnStyle: defaultBtnStyle,
}
var index$f = {
category: 'readWrite',
name: '\u5355\u9009\u63A7\u5236',
icon: 'icon-danxuankongzhi',
permission: true,
onCreate(node2) {
node2.setDefaultProps(defaultProps$2)
},
}
var __glob_2_5 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
defaultProps: defaultProps$2,
default: index$f,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var index$e = {
category: 'base',
name: '\u4E0B\u62C9\u9009\u62E9',
icon: 'icon-xialaliebiao',
styleConfig: {
lineHeight: false,
},
permission: true,
onCreate(node2) {
node2.setDefaultProps({
optionType: 'custom',
tableData: [
{
label: '\u9009\u98791',
value: 1,
},
{
label: '\u9009\u98792',
value: 2,
},
{
label: '\u9009\u98793',
value: 3,
},
],
editingLimit: 100,
runningLimit: 100,
placeholder: '\u8BF7\u9009\u62E9',
multipleValue: false,
})
},
}
var __glob_2_6 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: index$e,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const defaultProps$1 = {
options: defaultOptionsDataProps,
variable: '',
placeholder: '',
}
var index$d = {
category: 'readWrite',
name: '\u4E0B\u62C9\u63A7\u5236',
icon: 'icon-xialakongzhi',
permission: true,
onCreate(node2) {
node2.setDefaultProps(defaultProps$1)
},
}
var __glob_2_7 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
defaultProps: defaultProps$1,
default: index$d,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
class TranslateRenderer {
static cache = []
static bodyHeight = 0
static bodyId = ''
sheet
node
dom
get height() {
return this.dom?.getBoundingClientRect().height || 0
}
get width() {
return this.dom?.getBoundingClientRect().width || 0
}
startStyle = {}
offset = 0
get computeOffset() {
const translateRenderer = this.findAboveTranslateRenderer()
if (!translateRenderer.length) return this.offset
const arr = translateRenderer.map(
(item2) => item2.computeOffset + this.offset
)
const max3 = Math.max(...arr)
return max3
}
BelowCanvasNodes = []
constructor(sheet) {
this.sheet = sheet
this.reset()
TranslateRenderer.cache.push(this)
}
init(node2) {
this.node = node2
this.dom = node2.dom
Object.assign(this.startStyle, node2.style, {
height: `${this.height}px`,
width: `${this.width}px`,
})
this.BelowCanvasNodes = this.findBelowCanvasNodes()
}
reset() {
nextTick(() => {
const body = app.current.project.current.page.document.body
TranslateRenderer.bodyHeight = body.styleProxy.height
TranslateRenderer.bodyId = body.id
})
}
render() {
const translateTypes = SheetConfig.translateTypes
const translateType = this.sheet.config.translateType
if (translateType === translateTypes.none.value) {
this.node.style.height = this.startStyle.height
this.setTranslateToBelowCanvasNodes()
return
}
if (translateType === translateTypes.down.value) {
this.node.style.minHeight = this.startStyle.height
this.node.style.height = 'auto'
nextTick(() => {
this.offset = this.height - styleConverter(this.startStyle).height
this.setTranslateToBelowCanvasNodes()
this.setBodyHeight()
})
}
}
findBelowCanvasNodes() {
const nodes = app.current.project.current.page.document.body.childNodes
const BelowCanvasNodes = []
const {
height: sheetHeight,
width: sheetWidth,
top: sheetTop,
left: sheetLeft,
} = styleConverter(this.startStyle)
if (!sheetHeight || !sheetWidth || !sheetTop || !sheetLeft) return []
const sheetBottom = sheetTop + sheetHeight
const sheetRight = sheetLeft + sheetWidth
for (const node2 of nodes) {
if (this.node === node2) {
continue
}
const rect = node2.dom?.getBoundingClientRect()
if (!rect) continue
const { top: nodeTop, left: nodeLeft } = styleConverter(node2.style)
const nodeRight = nodeLeft + rect.width
if (nodeTop < sheetBottom) continue
if (sheetRight < nodeLeft) continue
if (nodeRight < sheetLeft) continue
BelowCanvasNodes.push(new BelowCanvasNode(node2))
}
return BelowCanvasNodes
}
findAboveTranslateRenderer() {
const nodes = TranslateRenderer.cache
const BelowCanvasNodes = []
const {
height: sheetHeight,
width: sheetWidth,
top: sheetTop,
left: sheetLeft,
} = styleConverter(this.startStyle)
if (!sheetHeight || !sheetWidth || !sheetTop || !sheetLeft) return []
const sheetRight = sheetLeft + sheetWidth
for (const node2 of nodes) {
const {
height: nodeHeight,
width: nodeWidth,
top: nodeTop,
left: nodeLeft,
} = styleConverter(node2.startStyle)
const nodeRight = nodeLeft + nodeWidth
const nodeBottom = nodeTop + nodeHeight
if (sheetTop < nodeBottom) continue
if (sheetRight < nodeLeft) continue
if (nodeRight < sheetLeft) continue
BelowCanvasNodes.push(node2)
}
return BelowCanvasNodes
}
setTranslateToBelowCanvasNodes() {
for (const bcItem of this.BelowCanvasNodes) {
const node2 = bcItem.node
const aboveTranslateRenderers = TranslateRenderer.cache.filter((t3) =>
t3.BelowCanvasNodes.some((n2) => n2.node.id === node2.id)
)
const offsets = aboveTranslateRenderers.map(
(item2) => item2.computeOffset
)
const maxOffset = Math.max(...offsets)
node2.setLetTop(
'absolute',
styleConverter(bcItem.startStyle).left,
styleConverter(bcItem.startStyle).top + maxOffset
)
const translateRender = TranslateRenderer.cache.find(
(t3) => t3.node.id === node2.id
)
if (translateRender) {
translateRender.render()
}
}
}
setBodyHeight() {
const body = app.current.project.current.page.document.body
const heights = TranslateRenderer.cache.map((c2) => c2.computeOffset)
const maxOffset = Math.max(...heights)
body.setWidthHeight(
'absolute',
body.styleProxy.width,
TranslateRenderer.bodyHeight + maxOffset
)
}
destroy() {
const index2 = TranslateRenderer.cache.findIndex(
(translateRendererItem) => translateRendererItem.sheet.id == this.sheet.id
)
if (index2 === -1) return
TranslateRenderer.cache.splice(index2)
}
}
class BelowCanvasNode {
node
dom
startStyle = {}
get height() {
return this.node.dom?.getBoundingClientRect().height || 0
}
get width() {
return this.node.dom?.getBoundingClientRect().width || 0
}
constructor(node2) {
this.node = node2
this.dom = node2.dom
Object.assign(this.startStyle, this.node.style, {
height: `${this.height}px`,
width: `${this.width}px`,
})
}
}
const defaultStyle = {
width: '80px',
height: '28px',
fontSize: '14px',
textAlign: 'center',
color: '#585858',
}
let defaultProps = {
sheet: {
cols: [{}, {}, {}, {}, {}],
rows: [
{
cells: [{}, {}, {}, {}, {}],
},
{
cells: [{}, {}, {}, {}, {}],
},
{
cells: [{}, {}, {}, {}, {}],
},
{
cells: [{}, {}, {}, {}, {}],
},
{
cells: [{}, {}, {}, {}, {}],
},
],
},
}
const mockGlob = {}
const mock = mockGlob[Object.keys(mockGlob)[0]] || {}
if (mock.enabled) {
defaultProps = mock.defaultProps || defaultProps
}
const NO_DATA = {
toString() {
return ''
},
}
class DataRenderer {
constructor(sheet) {
this.sheet = sheet
this.initial = {
cols: [...sheet.cols],
rows: [...sheet.rows],
}
}
sheet
initial
sheetLoopItemList = []
fieldList
pageIndex = 1
get pageSize() {
return this.sheet.config.pageSize
}
set pageSize(v4) {
this.sheet.config.pageSize = v4
}
pageCount = 0
total = 0
whereJson = ''
data = {}
get dataSetConfigList() {
return this.sheet.config.sheetDataSetConfigList.filter((c2) => c2.dataSet)
}
get dataSetList() {
return this.dataSetConfigList.map((c2) => c2.dataSet)
}
findFieldList() {
const list2 = []
this.sheet.eachCell((cell) => {
if (cell.content instanceof Field) {
const filed = cell.content
const dataSet = filed.dataSet
if (this.dataSetList.includes(dataSet)) {
list2.push(cell.content)
}
}
})
return list2
}
async fetch() {
if (!this.fieldList) {
this.fieldList = this.findFieldList()
}
if (!this.fieldList.length) {
return {}
}
let data2 = mock.data
if (!mock.enabled) {
data2 = await request.post('api/v1/data/querymuliple', {
filters: [],
pageIndex: this.pageIndex,
pageSize: this.pageSize,
limit: this.sheet.config.limit.running,
subLimit: 100,
fieldList: this.fieldList,
whereJson: this.whereJson,
fieldRelaction: this.sheet.config.sheetDataSetConfigList
.map((c2) => {
return c2.fieldRelationList.map((r2) => {
return {
main: r2[1],
sub: r2[0],
}
})
})
.flat(),
})
} else {
await new Promise((r2) => setTimeout(r2, 500))
}
const dataSetConfigList = this.dataSetConfigList
const mainDataSetConfig = dataSetConfigList[0]
const mainDataSet = mainDataSetConfig.dataSet
if (mainDataSet) {
data2[mainDataSet.id] = data2.data
}
this.pageCount = data2.pageCount
this.pageIndex = data2.pageIndex
this.total = data2.total
const data_ = this.convertData(data2)
return data_
}
convertData(data2) {
const dataSetConfigList = this.dataSetConfigList
const mainDataSetConfig = dataSetConfigList[0]
const mainDataSet = mainDataSetConfig.dataSet
if (!mainDataSet) return {}
data2[mainDataSet.id] = data2.data
data2.data.map((item2) => {
item2.subs = {
[mainDataSet.id]: [item2],
...item2.subs,
}
return item2
})
return data2
}
clear() {
this.sheet.cols.length = 0
this.sheet.cols.push(...this.initial.cols)
this.sheet.rows.length = 0
this.sheetLoopItemList.length = 0
}
async render(data2) {
data2 = data2 || (await this.fetch())
this.data = data2
const dataSetConfigList = this.dataSetConfigList
const mainDataSetConfig = dataSetConfigList[0]
if (!mainDataSetConfig) return
if (mainDataSetConfig.dataLoopType === 'sheet') {
this.renderSheetLoop(data2.data)
} else {
this.renderCellLoop(data2)
}
}
async renderSheetLoop(list2 = []) {
const sheet = this.sheet
this.clear()
for (const [i2, item2] of list2.concat(NO_DATA).entries()) {
if (i2 > 0 && item2 === NO_DATA) continue
const sheetLoopItem = new SheetLoopItem(sheet, item2.subs || {})
sheet.rows.push(...sheetLoopItem.rows)
sheetLoopItem.eachCell((cell) => {
cell.updateMergedTo()
})
this.sheetLoopItemList.push(sheetLoopItem)
sheetLoopItem.preRender()
}
SheetLoopItem.renderList(this.sheetLoopItemList)
}
async renderCellLoop(data2) {
const one = [
{
subs: data2,
},
]
await this.renderSheetLoop(one)
}
static RENDER_EVENT = `${Math.random}`
}
class SheetLoopItem {
constructor(sheet, data2) {
this.sheet = sheet
this.data = data2
this.rows = sheet.dataRenderer.initial.rows.map((row) => {
const rowCloned = row.clone()
return rowCloned
})
}
sheet
rows
cellLoopGroupList = []
data = {}
eachCell(cb) {
Sheet$1.prototype.eachCell.apply(this, [
cb,
false,
[0, 0, this.rows.length - 1, this.rows[0].cells.length - 1],
])
}
preRender() {
const fieldCellList = []
this.eachCell((cell) => {
if (!(cell.content instanceof Field)) return
fieldCellList.push(cell)
})
const cellLoopGroupList = this.cellLoopGroupList
for (const cell1 of fieldCellList) {
let existed = false
for (const cellLoopGroup2 of cellLoopGroupList) {
if (cellLoopGroup2.fieldCellList.includes(cell1)) {
existed = true
break
}
}
if (existed) continue
const cellLoopGroup = new CellLoopGroup(this)
cellLoopGroup.addCell(cell1)
cellLoopGroupList.push(cellLoopGroup)
for (const cell2 of fieldCellList) {
if (cell2 === cell1) continue
if (CellLoopGroup.check(cell1, cell2)) {
cellLoopGroup.addCell(cell2)
}
}
}
}
async render() {
for (const group of this.cellLoopGroupList) {
group.render()
}
}
static async renderList(sheetLoopItemList) {
for (const sheetLoopItem of sheetLoopItemList) {
sheetLoopItem.render()
}
}
}
class CellLoopGroup {
constructor(sheetLoopItem) {
this.sheetLoopItem = sheetLoopItem
}
sheetLoopItem
get dataLoopType() {
const cell = this.fieldCellList[0]
return cell.dataLoopType
}
get dataSetList() {
const dataSetList = [
...new Set(
this.fieldCellList.map((cell) => {
return cell.content.dataSet
})
),
]
return dataSetList
}
get data() {
return this.sheetLoopItem.data
}
fieldCellList = new Array()
static check(cell1, cell2) {
const dataLoopType1 = cell1.dataLoopType
const dataLoopType2 = cell2.dataLoopType
if (dataLoopType1 !== dataLoopType2) return false
const rect1 = cell1.getRect()
const rect2 = cell2.getRect()
if (dataLoopType1 === 'cellVertical') {
if (!(rect2[0] > rect1[2] || rect2[2] < rect1[0])) {
return true
}
} else if (dataLoopType1 === 'cellHorizontal') {
if (!(rect2[1] > rect1[3] || rect2[3] < rect1[1])) {
return true
}
}
return false
}
addCell(cell) {
this.fieldCellList.push(cell)
}
getRect() {
return Sheet$1.getRect([...this.fieldCellList])
}
getFullRect() {
let rect = this.getRect()
const maxRowIndex = (this.fieldCellList[0].sheet?.rows.length || 0) - 1
const maxColIndex = (this.fieldCellList[0].row?.cells.length || 0) - 1
if (this.dataLoopType === 'cellVertical') {
rect = [rect[0], 0, rect[2], maxColIndex]
} else if (this.dataLoopType === 'cellHorizontal') {
rect = [0, rect[1], maxRowIndex, rect[3]]
}
return rect
}
getSpan() {
const rect = this.getRect()
return {
colSpan: rect[3] - rect[1] + 1,
rowSpan: rect[2] - rect[0] + 1,
}
}
cloneRows() {
const rows = []
const fullRect = this.getFullRect()
const rowSpan = this.getSpan().rowSpan
const sheet = this.fieldCellList[0].sheet
const minRowIndex = fullRect[0]
const maxRowIndex = fullRect[2]
if (!sheet) return rows
for (let i2 = 0; i2 <= maxRowIndex - minRowIndex; i2++) {
const row = sheet.rows[i2 + minRowIndex].clone()
rows[i2] = row
CellLoopGroup.rowIsLoopClonedWeakMap.set(row, true)
for (const cell of row.cells) {
if (cell.contentType === 'field') {
cell.value = ''
}
}
}
const baseCells = new Set(sheet.getCells(fullRect).map((c2) => c2.master))
for (const baseCell of baseCells) {
if (baseCell.dataLoopType !== this.dataLoopType) {
const baseCellRect = baseCell.getRect()
if (baseCellRect[0] <= fullRect[0] && baseCellRect[2] >= fullRect[2]) {
baseCell.rowSpan += rowSpan
}
}
}
return rows
}
cloneCols() {
const cols = []
const fullRect = this.getFullRect()
const colSpan = this.getSpan().colSpan
const sheet = this.fieldCellList[0].sheet
const minColIndex = fullRect[1]
const maxColIndex = fullRect[3]
if (!sheet) return cols
for (let i2 = 0; i2 <= maxColIndex - minColIndex; i2++) {
const col = sheet.cols[i2 + minColIndex].clone()
cols[i2] = col
CellLoopGroup.colIsLoopClonedWeakMap.set(col, true)
for (const cell of col.cells) {
if (cell.contentType === 'field') {
cell.value = ''
}
}
}
const baseCells = new Set(sheet.getCells(fullRect).map((c2) => c2.master))
for (const baseCell of baseCells) {
if (baseCell.dataLoopType !== this.dataLoopType) {
const baseCellRect = baseCell.getRect()
if (baseCellRect[1] <= fullRect[1] && baseCellRect[3] >= fullRect[3]) {
baseCell.colSpan += colSpan
}
}
}
return cols
}
async render() {
for (const cell of this.fieldCellList) {
this.loopCell(cell)
}
}
async loopCell(cell) {
if (!(cell.content instanceof Field)) return
const data2 = this.data
const dataLoopType = cell.dataLoopType
const field2 = cell.content
const dataSet = field2.dataSet
const records = data2[dataSet.id] || []
const valueList = records.map((item2) => item2[field2.name])
if (dataLoopType === 'none' || dataLoopType === 'sheet') {
this.loopCellNone(cell, valueList)
}
if (dataLoopType === 'cellVertical') {
this.loopCellVertical(cell, valueList)
}
if (dataLoopType === 'cellHorizontal') {
this.loopCellHorizontal(cell, valueList)
}
}
async loopCellNone(cell, valueList) {
cell.value = valueList.join(', ')
}
async loopCellVertical(baseCell, valueList) {
baseCell.value = ''
for (const [index2, value2] of valueList.entries()) {
this.loopCellVerticalOnce(baseCell, index2, value2)
}
}
async loopCellHorizontal(baseCell, valueList) {
baseCell.value = ''
for (const [index2, value2] of valueList.entries()) {
this.loopCellHorizontalOnce(baseCell, index2, value2)
}
}
async loopCellVerticalOnce(baseCell, index2, value2) {
const sheet = baseCell.sheet
const row = baseCell.row
const col = baseCell.col
const rect = this.getRect()
const rowSpan = this.getSpan().rowSpan
if (!sheet || !row || !col) {
console.error('!sheet || !row || !col')
return
}
if (index2 === 0) {
baseCell.value = value2
return
}
const clonedRowsIndex = rect[0] + index2 * rowSpan
let clonedRows = sheet.rows.slice(
clonedRowsIndex,
clonedRowsIndex + rowSpan
)
if (!CellLoopGroup.rowIsLoopClonedWeakMap.get(clonedRows[0])) {
clonedRows = this.cloneRows()
sheet.rows.splice(clonedRowsIndex, 0, ...clonedRows)
}
const clonedCellRowIndex = row.index + index2 * rowSpan
const clonedCell = col.cells[clonedCellRowIndex]
clonedCell.value = value2
}
async loopCellHorizontalOnce(baseCell, index2, value2) {
const sheet = baseCell.sheet
const row = baseCell.row
const col = baseCell.col
const rect = this.getRect()
const colSpan = this.getSpan().colSpan
if (!sheet || !row || !col) {
console.error('!sheet || !row || !col')
return
}
if (index2 === 0) {
baseCell.value = value2
return
}
const clonedColsIndex = rect[1] + index2 * colSpan
let clonedCols = sheet.cols.slice(
clonedColsIndex,
clonedColsIndex + colSpan
)
if (!CellLoopGroup.colIsLoopClonedWeakMap.get(clonedCols[0])) {
clonedCols = this.cloneCols()
for (const [r2, row2] of sheet.rows.entries()) {
const clonedCells = clonedCols.map((col2) => col2.cells[r2])
row2.cells.splice(clonedColsIndex, 0, ...clonedCells)
}
sheet.cols.splice(clonedColsIndex, 0, ...clonedCols)
}
const clonedCellColIndex = col.index + index2 * colSpan
const clonedCell = row.cells[clonedCellColIndex]
clonedCell.value = value2
}
static rowIsLoopClonedWeakMap = /* @__PURE__ */ new WeakMap()
static colIsLoopClonedWeakMap = /* @__PURE__ */ new WeakMap()
}
class SlantLine$2 extends Base {
id = ''
direction = 'left'
content = ''
constructor(json = {}) {
super()
Object.assign(this, json)
}
toJSON() {
return {
id: this.id ? this.id : void 0,
direction: this.direction ? this.direction : void 0,
content: this.content ? this.content : void 0,
}
}
}
class SheetContextMenu extends Base {
sheet
style = {}
get clipboardCells() {
return this.clipboardRectCells.flat()
}
get clipboardRect() {
const s2 = this.clipboardRectCells
return [
s2[0]?.[0]?.pos[0] ?? (console.error('NaN'), NaN),
s2[0]?.[0]?.pos[1] ?? (console.error('NaN'), NaN),
s2.at(-1)?.at(-1)?.pos[0] ?? (console.error('NaN'), NaN),
s2.at(-1)?.at(-1)?.pos[1] ?? (console.error('NaN'), NaN),
]
}
clipboardRectCells = []
rawClipboardCells = []
currentOperationType = null
constructor(sheet) {
super()
this.sheet = sheet
}
copyCell(targetCell, sourceCell, exclude = [], overSelected = true) {
targetCell.clearStyle()
if (targetCell.firstMerged) {
targetCell.unMerge()
}
const sourceCellClone = sourceCell.clone()
if (sourceCellClone.firstMerged) {
sourceCell.unMerge()
}
const style2 = { ...sourceCellClone.style }
targetCell.setStyle(style2)
if (sourceCellClone.firstMerged) {
let rowSpan = sourceCellClone.rowSpan
let colSpan = sourceCellClone.colSpan
if (targetCell.pos[0] + rowSpan > this.sheet.rows.length) {
rowSpan = this.sheet.rows.length - targetCell.pos[0]
}
if (targetCell.pos[1] + colSpan > this.sheet.cols.length) {
colSpan = this.sheet.cols.length - targetCell.pos[1]
}
if (!overSelected) {
const selectedRect = this.sheet.getSelectedCellsRect
if (targetCell.pos[0] + rowSpan > selectedRect[2]) {
rowSpan = selectedRect[2] + 1 - targetCell.pos[0]
}
if (targetCell.pos[1] + colSpan > selectedRect[3]) {
colSpan = selectedRect[3] + 1 - targetCell.pos[1]
}
}
targetCell.setSpan(rowSpan, colSpan)
}
targetCell.conditionStyleList = sourceCellClone.conditionStyleList
targetCell.format = sourceCellClone.format
if (!exclude.includes('content')) {
targetCell.contentType = sourceCellClone.contentType
if (sourceCellClone.content instanceof Field) {
targetCell.content = new Field(
JSON.parse(JSON.stringify(sourceCellClone.content))
)
} else if (sourceCellClone.content instanceof SlantLine$2) {
targetCell.content = new SlantLine$2(
JSON.parse(JSON.stringify(sourceCellClone.content))
)
} else {
targetCell.content = sourceCellClone.content
}
}
}
deleteCell(cell, direction2 = ContextmenuDeleteType.CELL_RIGHT) {
if (direction2 === ContextmenuDeleteType.CELL_RIGHT) {
const index2 = cell.index
let row = cell.row
if (row) {
row.cells.splice(index2, 1)
row.cells.push(new SheetCell({ row }))
}
} else {
const rows = cell.sheet?.rows
const rowIndex = cell.row.index
const row = cell.row
const colIndex = cell.pos[1]
const cells = rows?.map((row2) => row2.cells[colIndex]) ?? []
for (let i2 = rowIndex; i2 < cells.length; i2++) {
if (rows) {
rows[i2].cells.splice(
colIndex,
1,
rows[i2 + 1]?.cells[colIndex] ?? new SheetCell({ row })
)
}
}
}
}
clearAll(cell) {
this.clearContent(cell)
cell.clearStyle()
}
clearContent(cell) {
cell.contentType = SheetCell.contentTypes.text.value
cell.content = ''
}
setCopyCells() {
this.currentOperationType = ContextmenuOperationType.COPY
this.setClipboardData()
}
setClipboardData() {
this.rawClipboardCells = this.sheet.selectedCells
const rect = this.sheet.selectedCellsRect
this.clipboardRectCells = this.sheet.rows
.slice(rect[0], rect[2] + 1)
.map((r2) => {
return r2.cells.slice(rect[1], rect[3] + 1).map((c2) => c2.clone())
})
}
clearClipboardRect() {
this.rawClipboardCells = []
this.clipboardRectCells.length = 0
}
setCutCells() {
this.currentOperationType = ContextmenuOperationType.CUT
this.setClipboardData()
}
async handlePaste() {
if (await this.pasteOutsideCells()) {
return
}
if (this.currentOperationType) {
switch (this.currentOperationType) {
case ContextmenuOperationType.COPY:
this.pasteCells(this.sheet.selectedCells, false)
break
case ContextmenuOperationType.CUT:
this.pasteCells(this.sheet.selectedCells, true)
this.clearClipboardRect()
break
}
}
}
pasteCells(
targetCells = [],
clearSource = false,
exclude = [],
fillAllSelectedCells = false
) {
if (!this.clipboardRectCells.length) return
const startColsLen = this.sheet.cols.length
this.sheet.rows.length
const [
minTargetSelectedRow,
minTargetSelectedCol,
maxTargetSelectedRow,
maxTargetSelectedCol,
] = this.sheet.selectedCellsRect
const [minClipboardRow, minClipboardCol, maxClipboardRow, maxClipboardCol] =
this.clipboardRect
const firstCell = targetCells[0]
if (
!clearSource &&
this.clipboardCells.length === 1 &&
firstCell.firstMerged
) {
const isMergedCells = targetCells.every(
(cell) => cell.mergedTo && cell.mergedTo.id === firstCell.id
)
if (isMergedCells) {
firstCell.content = this.clipboardCells[0].content
return
}
}
const cols = maxClipboardCol - minClipboardCol
const rows = maxClipboardRow - minClipboardRow
const targetCols = maxTargetSelectedCol - minTargetSelectedCol
const targetRows = maxTargetSelectedRow - minTargetSelectedRow
let maxSelectedCol = minTargetSelectedCol + cols
let maxSelectedRow = minTargetSelectedRow + rows
let index2 = 0
if (
(maxSelectedCol + 1) * (maxSelectedRow + 1) >
Sheet$1.LIMIT_CELL_COUNT
) {
toast(
'\u7C98\u8D34\u5185\u5BB9\u8D85\u51FA\u62A5\u8868\u8303\u56F4\uFF0C\u5DF2\u81EA\u52A8\u622A\u65AD',
'warning'
)
while (
(maxSelectedCol + 1) * (maxSelectedRow + 1) >
Sheet$1.LIMIT_CELL_COUNT
) {
if (index2 % 2 === 0 && maxSelectedCol + 1 > startColsLen) {
maxSelectedCol--
} else {
maxSelectedRow--
}
index2++
}
}
const targetCellsRect = [
minTargetSelectedRow,
minTargetSelectedCol,
Math.min(maxSelectedRow, this.sheet.rows.length - 1),
Math.min(maxSelectedCol, this.sheet.cols.length - 1),
]
const clipboardCols = cols + 1
const clipboardRows = rows + 1
const _targetCols = targetCols + 1
const _targetRows = targetRows + 1
if (
!fillAllSelectedCells &&
(_targetCols + clipboardCols > 2 || _targetRows + clipboardRows > 2)
) {
const targetMergedCells = this.sheet
.getCells(targetCellsRect)
.filter((cell) => cell && cell.mergedTo)
.map((cell) => cell.mergedTo)
if (targetMergedCells.length) {
const [minMergedRow, minMergedCol, maxMergedRow, maxMergedCol] =
this.sheet.getRect(targetMergedCells)
if (
minMergedRow < minTargetSelectedRow ||
minMergedCol < minTargetSelectedCol ||
maxMergedRow > maxSelectedRow ||
maxMergedCol > maxSelectedCol
) {
return ElMessageBox.alert(
'\u65E0\u6CD5\u5BF9\u5408\u5E76\u5355\u5143\u683C\u6267\u884C\u6B64\u64CD\u4F5C',
'\u8B66\u544A',
{
confirmButtonText: '\u786E\u5B9A',
type: 'warning',
}
)
}
}
}
if (!fillAllSelectedCells) {
const maxColIndex = this.sheet.cols.length - 1
const maxRowIndex = this.sheet.rows.length - 1
const expectInsertCols = minTargetSelectedCol + cols - targetCols + 1
const expectInsertRows = minTargetSelectedRow + rows - targetRows + 1
if (expectInsertCols > maxColIndex) {
this.sheet.insertCol(maxColIndex + 1, maxSelectedCol - maxColIndex)
}
if (expectInsertRows > maxRowIndex) {
this.sheet.insertRow(maxRowIndex + 1, maxSelectedRow - maxRowIndex)
}
targetCells = this.sheet.getCells([
minTargetSelectedRow,
minTargetSelectedCol,
maxSelectedRow,
maxSelectedCol,
])
}
let avgRows = 1
let avgCols = 1
if (fillAllSelectedCells) {
avgRows = Math.ceil(_targetRows / clipboardRows)
avgCols = Math.ceil(_targetCols / clipboardCols)
} else if (
!clearSource &&
(_targetCols % clipboardCols === 0 || _targetRows % clipboardRows === 0)
) {
if (
_targetCols % clipboardCols === 0 &&
_targetRows % clipboardRows === 0
) {
avgRows = _targetRows / clipboardRows
avgCols = _targetCols / clipboardCols
} else if (
_targetCols % clipboardCols === 0 &&
_targetRows < clipboardRows
) {
avgRows = 1
avgCols = _targetCols / clipboardCols
} else if (
_targetRows % clipboardRows === 0 &&
_targetCols < clipboardCols
) {
avgRows = _targetRows / clipboardRows
avgCols = 1
}
}
const rects = []
for (let r2 = 0; r2 < avgRows; r2++) {
for (let c2 = 0; c2 < avgCols; c2++) {
rects.push([
minTargetSelectedRow + clipboardRows * r2,
minTargetSelectedCol + clipboardCols * c2,
Math.min(
maxSelectedRow + clipboardRows * r2,
this.sheet.rows.length - 1
),
Math.min(
maxSelectedCol + clipboardCols * c2,
this.sheet.cols.length - 1
),
])
}
}
rects.forEach((rect) => {
this.sheet.eachCellInRect(rect, (cell) => {
const cellRowIndexDiffOfRect = cell.pos[0] - rect[0]
const cellColIndexDiffOfRect = cell.pos[1] - rect[1]
const clipboardCell =
this.clipboardRectCells[cellRowIndexDiffOfRect][
cellColIndexDiffOfRect
]
if (fillAllSelectedCells) {
if (this.sheet.selectedCells.includes(cell)) {
this.copyCell(
cell,
clipboardCell.clone(),
exclude,
!fillAllSelectedCells
)
}
} else {
this.copyCell(
cell,
clipboardCell.clone(),
exclude,
!fillAllSelectedCells
)
}
})
})
if (clearSource) {
this.rawClipboardCells.forEach((cell) => {
this.clearAll(cell)
cell.unMerge()
})
}
}
async pasteOutsideCells() {
let flag2 = false
let clipboardItems
try {
clipboardItems = await navigator.clipboard.read()
} catch (error2) {
return false
}
for (const clipboardItem of clipboardItems) {
for (const type4 of clipboardItem.types) {
if (type4 === 'text/html') {
const blob = await clipboardItem.getType(type4)
const htmlStr = await blob.text()
const excelDocument = new DOMParser().parseFromString(htmlStr, type4)
const tbody = excelDocument.querySelector('tbody')
if (tbody) {
flag2 = true
const trList = Array.from(tbody.children).map((e2) => ({
children: Array.from(e2.children),
}))
const rowLength = tbody.children.length
const colLength = Array.from(tbody.children[0].children).reduce(
(t3, c2) => t3 + c2.colSpan,
0
)
const newSheet = new Sheet$1({
cols: Array(colLength).fill({}),
rows: Array(rowLength).fill({
cells: Array(colLength).fill({}),
}),
})
for (let rowI = 0; rowI < trList.length; rowI++) {
const tr2 = trList[rowI]
for (let colI = 0; colI < tr2.children.length; colI++) {
const td = tr2.children[colI]
if (td.colSpan > 1) {
for (let index2 = 0; index2 < td.colSpan - 1; index2++) {
tr2.children.splice(
colI + 1,
0,
document.createElement('td')
)
}
}
if (td.rowSpan > 1) {
for (let index2 = 1; index2 < td.rowSpan; index2++) {
const tr22 = trList[rowI + index2]
tr22.children.splice(colI, 0, document.createElement('td'))
}
}
const cell = newSheet.rows[rowI].cells[colI]
cell.content = td.innerText
cell.rowSpan = td.rowSpan
cell.colSpan = td.colSpan
}
}
this.clipboardRectCells = newSheet.rows.map((r2) => {
return r2.cells.map((c2) => c2.clone())
})
this.pasteCells(this.sheet.selectedCells, false)
this.clearClipboardRect()
}
}
}
}
return flag2
}
emptyClipboard() {
return new Promise((resolve2, reject2) => {
if (navigator.clipboard) {
navigator.clipboard
.writeText('')
.then(() => {
resolve2(true)
})
.catch(() => {
reject2(false)
})
} else {
reject2(false)
}
})
}
resetContent(cell) {
cell.format = SheetCell.formatTypes.text.value
cell.contentType = SheetCell.contentTypes.text.value
if (cell.content instanceof SlantLine$2) {
cell.content = cell.content.content
}
}
clearSelectedCells(type4 = ContextmenuClearType.ALL) {
let cells = this.sheet.selectedCells
cells.forEach((cell) => {
switch (type4) {
case ContextmenuClearType.ALL:
this.clearAll(cell)
this.resetContent(cell)
if (cell.mergedTo) {
cell.sheet?.toolbar.unMerge()
}
break
case ContextmenuClearType.STYLE:
cell.clearStyle()
this.resetContent(cell)
if (cell.mergedTo) {
cell.sheet?.toolbar.unMerge()
}
break
case ContextmenuClearType.CONTENT:
this.clearContent(cell)
break
case ContextmenuClearType.COMPONENT:
this.clearContent(cell)
break
}
})
}
getColFirstMergedCells(cells) {
const selectedRect = this.sheet.getRect(cells)
const startCol = selectedRect[2]
const colsMap = /* @__PURE__ */ new Map()
const firstMergedCellsMap = /* @__PURE__ */ new Map()
const firstMergedCells = []
;[selectedRect[1], selectedRect[3]]
cells.forEach((cell) => {
const col = cell.col
if (col && !colsMap.has(col)) {
colsMap.set(col, col.index)
}
})
let minCol = selectedRect[1]
let maxCol = selectedRect[1]
for (const col of colsMap.keys()) {
col.cells.forEach((cell, index2) => {
if (index2 >= startCol) {
let cellArr = [cell]
if (cell.mergedTo) {
cellArr = [cell.mergedTo]
firstMergedCellsMap.set(cell.mergedTo, index2)
}
const rect = this.sheet.getRect(cellArr)
minCol = minCol > rect[1] ? rect[1] : minCol
maxCol = maxCol < rect[3] ? rect[3] : maxCol
}
})
}
for (const [cell] of firstMergedCellsMap) {
const rect = this.sheet.getRect([cell])
if (rect[0] < selectedRect[1] || rect[3] > selectedRect[3]) {
firstMergedCells.push(cell)
}
}
return firstMergedCells
}
getRowFirstMergedCells(cells) {
const selectedRect = this.sheet.getRect(cells)
const startRow = selectedRect[3]
const rowsMap = /* @__PURE__ */ new Map()
const firstMergedCellsMap = /* @__PURE__ */ new Map()
const firstMergedCells = []
;[selectedRect[0], selectedRect[2]]
cells.forEach((cell) => {
const row = cell.row
if (row && !rowsMap.has(row)) {
rowsMap.set(row, row.index)
}
})
let minRow = selectedRect[0]
let maxRow = selectedRect[0]
for (const row of rowsMap.keys()) {
row.cells.forEach((cell, index2) => {
if (index2 >= startRow) {
let cellArr = [cell]
if (cell.mergedTo) {
cellArr = [cell.mergedTo]
firstMergedCellsMap.set(cell.mergedTo, index2)
}
const rect = this.sheet.getRect(cellArr)
minRow = minRow > rect[0] ? rect[0] : minRow
maxRow = maxRow < rect[2] ? rect[2] : maxRow
}
})
}
for (const [cell] of firstMergedCellsMap) {
const rect = this.sheet.getRect([cell])
if (rect[0] < selectedRect[0] || rect[2] > selectedRect[2]) {
firstMergedCells.push(cell)
}
}
return firstMergedCells
}
deleteSelectedCells(type4 = ContextmenuDeleteType.ROW) {
let cells = this.sheet.selectedCells
const toolbar = this.sheet.toolbar
switch (type4) {
case ContextmenuDeleteType.ROW:
toolbar.remove('row')
break
case ContextmenuDeleteType.COLUMN:
toolbar.remove('col')
break
case ContextmenuDeleteType.CELL_RIGHT:
this.deleteCells(cells, ContextmenuDeleteType.CELL_RIGHT)
break
case ContextmenuDeleteType.CELL_BOTTOM:
this.deleteCells(cells, ContextmenuDeleteType.CELL_BOTTOM)
break
}
this.clearClipboardRect()
}
deleteCells(cells, type4 = ContextmenuDeleteType.CELL_RIGHT) {
const firstMergedCells =
type4 === ContextmenuDeleteType.CELL_RIGHT
? this.getRowFirstMergedCells(cells)
: this.getColFirstMergedCells(cells)
if (firstMergedCells.length) {
ElMessageBox.confirm(
'\u6B64\u64CD\u4F5C\u4F1A\u5BFC\u81F4\u4E00\u4E9B\u5408\u5E76\u5355\u5143\u683C\u88AB\u62C6\u6563\uFF0C\u662F\u5426\u7EE7\u7EED\uFF1F',
'\u8B66\u544A',
{
confirmButtonText: '\u7EE7\u7EED',
cancelButtonText: '\u53D6\u6D88',
type: 'warning',
}
)
.then(() => {
firstMergedCells.forEach((firstMergedCell) => {
firstMergedCell.unMerge()
})
for (const cell of cells.reverse()) {
this.deleteCell(cell, type4)
}
})
.catch(() => {})
} else {
for (const cell of cells.reverse()) {
this.deleteCell(cell, type4)
}
}
}
}
var ContextmenuOperationType = /* @__PURE__ */ ((ContextmenuOperationType2) => {
ContextmenuOperationType2['CUT'] = 'cut'
ContextmenuOperationType2['DELETE'] = 'delete'
ContextmenuOperationType2['CLEAR'] = 'clear'
ContextmenuOperationType2['COPY'] = 'copy'
return ContextmenuOperationType2
})(ContextmenuOperationType || {})
var ContextmenuClearType = /* @__PURE__ */ ((ContextmenuClearType2) => {
ContextmenuClearType2['ALL'] = 'all'
ContextmenuClearType2['STYLE'] = 'style'
ContextmenuClearType2['CONTENT'] = 'content'
ContextmenuClearType2['COMPONENT'] = 'component'
return ContextmenuClearType2
})(ContextmenuClearType || {})
var ContextmenuDeleteType = /* @__PURE__ */ ((ContextmenuDeleteType2) => {
ContextmenuDeleteType2['ROW'] = 'row'
ContextmenuDeleteType2['COLUMN'] = 'column'
ContextmenuDeleteType2['CELL_RIGHT'] = 'cell_right'
ContextmenuDeleteType2['CELL_BOTTOM'] = 'cell_bottom'
return ContextmenuDeleteType2
})(ContextmenuDeleteType || {})
class SheetToolbar extends Base {
static limitInsertCount = {
cols: 26,
rows: 1e3,
}
sheet
lock = false
formatPainter = new SheetFormatPainter(this)
constructor(sheet) {
super()
this.sheet = sheet
}
canMerge() {
const cells = this.sheet.selectedCells
if (cells.length >= 2) {
return true
}
return false
}
merge() {
if (!this.canMerge()) return
this.setSameBorder()
const sheet = this.sheet
const cells = sheet.selectedCells
const rect = sheet.getRect(cells)
const rowSpan = rect[2] - rect[0] + 1
const colSpan = rect[3] - rect[1] + 1
const firstCell = sheet.getCell(rect[0], rect[1])
firstCell.merge(rowSpan, colSpan)
sheet.selectedCells = firstCell.getSpanSiblings()
}
unMerge() {
const sheet = this.sheet
const cells = sheet.selectedCells
for (const cell of cells) {
cell.unMerge()
}
}
setSameBorder() {
const rectCells = this.getRectCells()
if (!rectCells) return
const { minRowCells, maxRowCells, minColCells, maxColCells } = rectCells
const minRowStyles = this.findSamePropertyFromCellsStyle(minRowCells)
const maxRowStyles = this.findSamePropertyFromCellsStyle(maxRowCells)
const minColStyles = this.findSamePropertyFromCellsStyle(minColCells)
const maxColStyles = this.findSamePropertyFromCellsStyle(maxColCells)
this.unSetBorder(true)
const IsExit = (keys3, style2) => {
return keys3.every((key2) =>
Object.prototype.hasOwnProperty.call(style2, key2)
)
}
const handle = (dir3, cells, styles) => {
if (
IsExit(
[`border${dir3}Style`, `border${dir3}Color`, `border${dir3}Width`],
styles
)
) {
const style2 = {
style: styles[`border${dir3}Style`],
color: styles[`border${dir3}Color`],
width: styles[`border${dir3}Width`],
}
for (const cell of cells) {
cell.setBorder(style2, dir3, true)
}
}
}
handle('Top', minRowCells, minRowStyles)
handle('Bottom', maxRowCells, maxRowStyles)
handle('Left', minColCells, minColStyles)
handle('Right', maxColCells, maxColStyles)
}
findSamePropertyFromCellsStyle(cells) {
let style2 = {}
let firstCellStyle = cells[0].style
for (let key2 in firstCellStyle) {
let isALLCellsExit = cells.every(
(cell) =>
firstCellStyle[key2] && cell.style[key2] === firstCellStyle[key2]
)
if (isALLCellsExit) {
style2[key2] = firstCellStyle[key2]
}
}
return style2
}
setBorder(...args) {
const sheet = this.sheet
const cells = sheet.selectedCells
for (const cell of cells) {
cell.setBorder(...args)
}
}
unSetBorder(onlySelf = false) {
const sheet = this.sheet
const cells = sheet.selectedCells
for (const cell of cells) {
cell.setBorder(
{ style: void 0, width: void 0, color: void 0 },
'All',
onlySelf
)
}
}
setOutlineBorder(style2) {
const batchSetBorder = (cells, dir3) => {
for (let cell of cells) {
cell.setBorder(style2, dir3)
}
}
this.unSetBorder()
const rectCell = this.getRectCells()
if (!rectCell) return
const { minRowCells, maxRowCells, minColCells, maxColCells } = rectCell
batchSetBorder(minRowCells, 'Top')
batchSetBorder(maxRowCells, 'Bottom')
batchSetBorder(minColCells, 'Left')
batchSetBorder(maxColCells, 'Right')
}
getRectCells() {
const selectedCells = this.sheet.selectedCells
const rect = this.sheet.getSelectedCellsRect
if (!rect) return null
const minRowCells = selectedCells.filter(
(cell) => cell.row?.index === rect[0]
)
const maxRowCells = selectedCells.filter(
(cell) => cell.row?.index === rect[2]
)
const minColCells = selectedCells.filter(
(cell) => cell.col?.index === rect[1]
)
const maxColCells = selectedCells.filter(
(cell) => cell.col?.index === rect[3]
)
return {
minRowCells,
maxRowCells,
minColCells,
maxColCells,
}
}
setStyle(style2) {
const cells = this.sheet.selectedCells
for (const cell of cells) {
cell.setStyle(style2)
}
}
setCellHeight(height) {
const selectedCells = this.sheet.selectedCells
for (const cell of selectedCells) {
const row = cell.row
const HEIGHT = `${height}px`
row && row.setStyle({ height: HEIGHT })
}
}
setCellWidth(width) {
const cells = this.sheet.selectedCells
for (const cell of cells) {
const col = cell.col
col && col.setStyle({ width: `${width}px` })
}
}
insert(dir3, count2 = 1) {
let rowIndex, colIndex, nextRowIndex, nextColIndex
switch (dir3) {
case 'Top':
rowIndex = this.sheet.selectedCells.at(0)?.row?.index
if (rowIndex === void 0) return
this.sheet.insertRow(rowIndex, count2)
break
case 'Bottom':
nextRowIndex = this.sheet.selectedCells.at(-1)?.row?.index
if (nextRowIndex === void 0) return
this.sheet.insertRow(nextRowIndex + 1, count2)
break
case 'Right':
nextColIndex = this.sheet.selectedCells.at(-1)?.col?.index
if (nextColIndex === void 0) return
this.sheet.insertCol(nextColIndex + 1, count2)
break
case 'Left':
colIndex = this.sheet.selectedCells.at(0)?.col?.index
if (colIndex === void 0) return
this.sheet.insertCol(colIndex, count2)
break
}
}
remove(type4) {
switch (type4) {
case 'row':
this.removeRows()
break
case 'col':
this.removeCols()
break
}
}
removeRows() {
const sheet = this.sheet
const cells = sheet.selectedCells
const rows = []
for (const cell of cells) {
if (rows.some((row) => row.id === cell.row?.id)) continue
cell.row && rows.push(cell.row)
}
for (const row of rows) {
this.sheet.removeRow(row.index)
}
}
removeCols() {
const sheet = this.sheet
const cells = sheet.selectedCells
const cols = []
for (const cell of cells) {
if (cols.some((col) => col.id === cell.col?.id)) continue
cell.col && cols.push(cell.col)
}
for (const col of cols) {
this.sheet.removeCol(col.index)
}
}
}
class SheetFormatPainter extends Base {
toolbar
enabled = false
constructor(toolbar) {
super()
this.toolbar = toolbar
}
enable() {
if (this.toolbar.sheet.selectedCells.length === 0) {
toast('\u8BF7\u9009\u62E9\u5355\u5143\u683C', 'warning')
return
}
this.enabled = true
this.toolbar.sheet.contextmenu.setCopyCells()
addEventListener('keydown', this.clear, { once: true })
}
disable() {
this.enabled = false
}
paint() {
if (!this.enabled) return
this.toolbar.sheet.contextmenu.pasteCells(
this.toolbar.sheet.selectedCells,
false,
['content'],
true
)
this.toolbar.sheet.contextmenu.clearClipboardRect()
this.disable()
removeEventListener('keydown', this.clear)
}
clear = (e2) => {
if (e2.key.toLowerCase() === 'escape') {
this.disable()
this.toolbar.sheet.contextmenu.clearClipboardRect()
}
}
}
const convertFormat = {
number(value2, floatCount) {
let _value = Number(value2)
if (!isNumber$1(_value)) return value2
return _value.toFixed(floatCount)
},
date(value2) {
let date4 = new Date(value2)
if (isInvalidDate(date4)) {
let _date = new Date(Number(value2))
if (isInvalidDate(_date)) return value2
return getDate(_date)
}
return getDate(date4)
},
time(value2) {
if (value2 === '') {
return '1970\u5E741\u67081\u65E5 00:00:00'
}
if (typeof value2 === 'string' && !/T/.test(value2)) {
value2 = value2.replace(/-/g, '/')
}
let date4 = new Date(value2)
if (isInvalidDate(date4)) {
let _date = new Date(Number(value2))
if (isInvalidDate(_date)) return value2
return `${getDate(_date)} ${getTime(_date)}`
}
return `${getDate(date4)} ${getTime(date4)}`
},
percent(value2, floatCount = 2) {
let _value = Number(value2)
if (!isNumber$1(_value) || value2 === '') return value2
return `${parseFloat((_value * 100).toFixed(floatCount))}%`
},
}
function getDate(time2) {
let year = time2.getFullYear()
let month = time2.getMonth() + 1
let date4 = time2.getDate()
if (month < 10) {
month = '0' + month
}
if (date4 < 10) {
date4 = '0' + date4
}
return `${year}\u5E74${month}\u6708${date4}\u65E5`
}
function getTime(time2) {
let hours = time2.getHours()
let minute = time2.getMinutes()
let second = time2.getSeconds()
if (hours < 10) {
hours = '0' + hours
}
if (minute < 10) {
minute = '0' + minute
}
if (second < 10) {
second = '0' + second
}
return `${hours} : ${minute} : ${second}`
}
function isInvalidDate(value2) {
return isNaN(value2.getTime())
}
function isNumber$1(value2) {
return typeof value2 === 'number' && !isNaN(value2)
}
class SheetElement extends Base {
dom
id = `${Math.random().toString(36).slice(2)}`
style = {}
bind(dom) {
const model = this
dom._model = model
model.dom = dom
}
}
class Sheet$1 extends SheetElement {
cols = ArrayProxy([], this, function (o2, k2, v4) {
if (v4 instanceof SheetCol) {
v4.sheet = this
v4.index = Number(k2)
}
})
rows = ArrayProxy([], this, function (o2, k2, v4) {
if (v4 instanceof SheetRow) {
v4.sheet = this
v4.index = Number(k2)
}
})
toolbar = new SheetToolbar(this)
contextmenu = new SheetContextMenu(this)
config
dataRenderer
translateRender
selectedCells = []
selectedCellsRect = [NaN, NaN, NaN, NaN]
get getSelectedCellsRect() {
return this.selectedCellsRect
}
cellCache = {}
ui = Object.freeze({
state: {
rendering: false,
},
})
constructor(json = {}) {
super()
const json_ = { ...json }
const cols = json_.cols || []
const rows = json_.rows || []
delete json_.cols
delete json_.rows
Object.assign(this, json_)
for (const [i2, col] of cols.entries()) {
this.cols[i2] = new SheetCol({ ...col })
}
for (const [i2, row] of rows.entries()) {
this.rows[i2] = new SheetRow({ ...row })
}
this.config = new SheetConfig(json.config)
this.dataRenderer = new DataRenderer(this)
this.translateRender = new TranslateRenderer(this)
}
toJSON() {
return {
config: this.config,
id: this.id,
cols: this.cols,
rows: this.rows,
}
}
eachCell(
cb,
reverse3 = false,
rect = [0, 0, this.rows.length - 1, this.cols.length - 1]
) {
for (let r2 = rect[0]; r2 <= rect[2]; r2++) {
let r_ = !reverse3 ? r2 : rect[2] - r2 - 1
const row = this.rows[r_]
for (let c2 = rect[1]; c2 <= rect[3]; c2++) {
let c_ = !reverse3 ? c2 : rect[3] - c2 - 1
let cell = row.cells[c_]
const shouldBreak = cb(cell, r_, c_)
if (shouldBreak) {
return
}
}
}
}
eachCellInRect(rect, cb, reverse3 = false) {
this.eachCell(cb, reverse3, rect)
}
getCell(rowIndex, colIndex) {
return this.rows[rowIndex].cells[colIndex]
}
getCellById(id2) {
let cell = this.cellCache[id2]
if (!cell) {
this.eachCell(function (c2) {
if (id2 === c2.id) {
cell = c2
return true
}
})
this.cellCache[id2] = cell
}
return cell
}
static getRect(cells, expandMerged = true) {
if (expandMerged) {
cells = cells.map((c2) => c2.getSpanSiblings()).flat()
}
const posList = cells.map((c2) => c2.pos)
const rowIndexList = posList.map((c2) => c2[0])
const colIndexList = posList.map((c2) => c2[1])
const rect = [
Math.min(...rowIndexList),
Math.min(...colIndexList),
Math.max(...rowIndexList),
Math.max(...colIndexList),
]
return rect
}
getRect(...args) {
return Sheet$1.getRect(...args)
}
getCells(rect) {
const minRowIndex = Math.min(rect[0], rect[2])
const minColIndex = Math.min(rect[1], rect[3])
const maxRowIndex = Math.max(rect[0], rect[2])
const maxColIndex = Math.max(rect[1], rect[3])
const sheet = this
const cells = []
for (let r2 = minRowIndex; r2 <= maxRowIndex; r2++) {
for (let c2 = minColIndex; c2 <= maxColIndex; c2++) {
const cell = sheet.rows[r2].cells[c2]
cells.push(cell)
}
}
return cells
}
getCellsExpandMerged(rect, cb) {
const sheet = this
let cells = []
rect = [
Math.min(rect[0], rect[2]),
Math.min(rect[1], rect[3]),
Math.max(rect[0], rect[2]),
Math.max(rect[1], rect[3]),
]
let newRect = rect
loop(rect)
function loop(rect2) {
cells.push(...sheet.getCells(rect2))
cells = [...new Set(cells)]
for (const cell of cells) {
if (cell.merged) {
const mergedGroup = cell.mergedTo?.getSpanSiblings() || []
cells.push(...mergedGroup)
cells = [...new Set(cells)]
}
}
newRect = sheet.getRect(cells)
const width = rect2[2] - rect2[0]
const height = rect2[3] - rect2[1]
const newWidth = newRect[2] - newRect[0]
const newHeight = newRect[3] - newRect[1]
if (newWidth > width || newHeight > height) {
loop(newRect)
}
}
cb?.({
cells,
newRect,
})
return cells
}
selectRect(rect, expandMerged = true) {
let cells = expandMerged
? this.getCellsExpandMerged(rect)
: this.getCells(rect)
if (expandMerged) {
this.selectedCells = this.getCellsExpandMerged(rect, ({ newRect }) => {
this.selectedCellsRect = [...newRect]
})
}
this.selectedCells = cells
this.selectedCellsRect = [...rect]
}
selectAll() {
const start2 = this.rows.at(0)
const end2 = this.rows.at(-1)
if (start2) start2.selectStart()
if (end2) {
end2.selectMove()
end2.selectEnd()
}
}
insertRow(index2, count2 = 1) {
let cLen = this.cols.length
let _count = count2
let newRows = []
while (_count) {
let row = new SheetRow({
sheet: this,
cells: new Array(cLen).fill({}),
})
newRows.push(row)
_count--
}
this.rows?.splice(index2, 0, ...newRows)
const cells = this.rows[index2 + count2]?.cells || []
const cellsLen = cells.length
for (let i2 = 0; i2 < cellsLen; ) {
const cell = cells[i2]
const cellMergedTo = cell.mergedTo
if (!cellMergedTo || cell.pos[0] <= cellMergedTo.pos[0]) {
i2++
continue
}
const rowSpan = cellMergedTo.rowSpan + count2
const colSpan = cellMergedTo.colSpan
cellMergedTo.setSpan(rowSpan, colSpan)
i2 += colSpan
}
}
insertCol(index2, count2 = 1) {
let newCols = []
let _count = count2
while (_count) {
const col = new SheetCol({
sheet: this,
})
newCols.push(col)
_count--
}
this.cols.splice(index2, 0, ...newCols)
const rows = this.rows || []
for (const row of rows) {
let newCells = []
let _count2 = count2
while (_count2) {
const cell = new SheetCell({ row })
newCells.push(cell)
_count2--
}
row.cells.splice(index2, 0, ...newCells)
}
const cells = this.cols[index2 + count2]?.cells || []
const cellsLen = cells.length
for (let i2 = 0; i2 < cellsLen; ) {
const cell = cells[i2]
const cellMergedTo = cell.mergedTo
if (!cellMergedTo || cell.pos[1] <= cellMergedTo.pos[1]) {
i2++
continue
}
const rowSpan = cellMergedTo.rowSpan
const colSpan = cellMergedTo.colSpan + count2
cellMergedTo.setSpan(rowSpan, colSpan)
i2 += rowSpan
}
}
removeRow(index2) {
if (this.rows.length == 1) {
toast(
'\u7981\u6B62\u5220\u9664\u5168\u90E8\u5355\u5143\u683C,\u81F3\u5C11\u4FDD\u7559\u4E00\u884C',
'warning'
)
return
}
const cells = this.rows[index2].cells || []
const cellsLen = cells.length
for (let i2 = 0; i2 < cellsLen; ) {
const cell = cells[i2]
const cellMergedTo = cell.mergedTo
if (!cellMergedTo) {
i2++
continue
}
const rowSpan = cellMergedTo.rowSpan
const colSpan = cellMergedTo.colSpan
const _rowSpan = rowSpan - 1
if (cell.id === cellMergedTo.id) {
const sCells = cellMergedTo.getSpanSiblings(rowSpan, colSpan)
for (const _cell of sCells) {
_cell.unMerge()
}
if (rowSpan > 1 && colSpan > 1) {
const nextRowIndex = cellMergedTo.pos[0] + 1
const colIndex = cellMergedTo.pos[1]
const nextRowFirstCell = sCells.find(
(c2) => c2.pos[0] === nextRowIndex && c2.pos[1] === colIndex
)
if (!nextRowFirstCell) return
nextRowFirstCell.setSpan(_rowSpan, colSpan)
}
i2 += colSpan
continue
}
cellMergedTo.setSpan(_rowSpan, colSpan)
i2 += colSpan
}
this.rows.splice(index2, 1)
}
removeCol(index2) {
if (this.cols.length == 1) {
toast(
'\u7981\u6B62\u5220\u9664\u5168\u90E8\u5355\u5143\u683C,\u81F3\u5C11\u4FDD\u7559\u4E00\u5217',
'warning'
)
return
}
const cells = this.cols[index2].cells
const cellsLen = cells.length
for (let i2 = 0; i2 < cellsLen; ) {
const cell = cells[i2]
const cellMergedTo = cell.mergedTo
if (!cellMergedTo) {
i2++
continue
}
const rowSpan = cellMergedTo.rowSpan
const colSpan = cellMergedTo.colSpan
const _colSpan = cellMergedTo.colSpan - 1
if (cell.id === cellMergedTo.id) {
const sCells = cellMergedTo.getSpanSiblings(rowSpan, colSpan)
for (const _cell of sCells) {
_cell.unMerge()
}
if (rowSpan > 1 && colSpan > 1) {
const nextColIndex = cellMergedTo.pos[1] + 1
const rowIndex = cellMergedTo.pos[0]
const nextColFirstCell = sCells.find(
(c2) => c2.pos[0] === rowIndex && c2.pos[1] === nextColIndex
)
if (!nextColFirstCell) return
nextColFirstCell.setSpan(rowSpan, _colSpan)
}
i2 += colSpan
continue
}
cellMergedTo.setSpan(rowSpan, _colSpan)
i2 += rowSpan
}
this.cols.splice(index2, 1)
for (const row of this.rows || []) {
row.cells.splice(index2, 1)
}
}
isOverLimitCells(count2 = 0) {
const total2 = this.rows.length * this.cols.length
if (total2 + count2 > Sheet$1.LIMIT_CELL_COUNT) {
toast(
`\u9650\u5236\u5355\u5143\u683C\u6570\u91CF\u4E3A${Sheet$1.LIMIT_CELL_COUNT}`,
'warning'
)
return true
}
return false
}
static LIMIT_CELL_COUNT = 1e3
}
class SheetCol extends SheetElement {
sheet
style = {
width: defaultStyle.width,
}
index = NaN
customName = ''
get name() {
return this.customName || SheetCol.getNameByIndex(this.index)
}
static nameCache = []
static getNameByIndex(index2) {
let name2 = SheetCol.nameCache[index2] || ''
if (name2) {
return name2
}
let i2 = index2
while (i2 >= 0) {
const m2 = i2 % 26
i2 = Math.floor(i2 / 26) - 1
name2 = String.fromCharCode(65 + m2) + name2
}
SheetCol.nameCache[index2] = name2
return name2
}
get cells() {
if (!this.sheet) {
console.error('!sheet')
return []
}
const index2 = this.index
if (this.sheet.cols[index2] !== this) {
return [...this.clonedCells]
}
if (this.clonedCells.length) {
this.clonedCells.length = 0
}
return this.sheet.rows.map((r2) => r2.cells[index2])
}
clonedCells = []
get selected() {
return this.cells.some((c2) => c2 && (c2.selected || c2.mergedTo?.selected))
}
constructor(json = {}) {
super()
Object.assign(this, json)
}
toJSON() {
return {
id: this.id,
style: this.style,
}
}
setStyle(style2) {
Object.assign(this.style, style2)
}
clone() {
const col = new SheetCol({
sheet: this.sheet,
style: { ...this.style },
index: this.index,
})
col.id = `${this.id.split('[')[0]}[${col.id}]`
col.clonedCells = this.cells.map((c2) => c2.clone())
return col
}
select() {
this.selectStart()
this.selectEnd()
}
selectStart() {
this.cells[0].selectStart()
this.selectMove()
}
selectMove() {
this.cells.at(-1)?.selectMove(false)
}
selectEnd() {
this.cells.at(-1)?.selectEnd()
}
remove() {}
}
class SheetRow extends SheetElement {
sheet
cells = ArrayProxy([], this, function (o2, k2, v4) {
if (v4 instanceof SheetCell) {
v4.row = this
v4.index = Number(k2)
}
})
style = {
height: defaultStyle.height,
}
index = NaN
get name() {
return `${this.index + 1}`
}
get selected() {
return this.cells.some((c2) => c2.selected || c2.mergedTo?.selected)
}
constructor(json) {
super()
const json_ = { ...json }
const cells = json_.cells || []
delete json_.cells
Object.assign(this, json_)
for (const [i2, cell] of cells.entries()) {
this.cells[i2] = new SheetCell({ ...cell })
}
}
toJSON() {
return {
id: this.id,
style: this.style,
cells: this.cells,
}
}
setStyle(style2) {
Object.assign(this.style, style2)
}
select() {
this.selectStart()
this.selectEnd()
}
selectStart() {
this.cells[0].selectStart()
this.selectMove()
}
selectMove() {
this.cells.at(-1)?.selectMove(false)
}
selectEnd() {
this.cells.at(-1)?.selectEnd()
}
clone() {
const row = new SheetRow({
sheet: this.sheet,
style: { ...this.style },
index: this.index,
})
row.id = `${this.id.split('[')[0]}[${row.id}]`
for (const [i2, c2] of this.cells.entries()) {
row.cells[i2] = c2.clone()
}
return row
}
insertBefore(row) {
console.error(row)
}
insertAfter(row) {
console.error(row)
}
remove() {
console.error(this)
}
setHeight(height) {
this.style.height = `${height}px`
}
}
class SheetCell extends SheetElement {
row
get col() {
return this.sheet?.cols[this.pos[1]]
}
get sheet() {
return this.row?.sheet
}
ui = Object.freeze({
state: {
mergedTo: void 0,
mergedToUpdateIng: false,
},
})
index = NaN
get pos() {
return [this.row?.index ?? NaN, this.index]
}
get name() {
return `${this.col?.name || ''}${this.row?.name || ''}`
}
style = {}
get computedStyle() {
const style2 = { ...this.style }
for (const dir3 of SheetCell.dirs) {
const borderStyle = style2[`border${dir3}Style`]
const borderColor = style2[`border${dir3}Color`]
const borderWidth = style2[`border${dir3}Width`]
if (!borderStyle && !borderColor && !borderWidth) {
const _dir = SheetCell._dirMap[dir3]
const sibling = this.getSibling(dir3)
if (!sibling) continue
style2[`border${dir3}Style`] = sibling.style[`border${_dir}Style`]
style2[`border${dir3}Color`] = sibling.style[`border${_dir}Color`]
style2[`border${dir3}Width`] = sibling.style[`border${_dir}Width`]
}
}
return style2
}
colSpan = 1
rowSpan = 1
get mergedTo() {
return this.ui.state.mergedTo
}
updateMergedTo() {
if (this.rowSpan <= 1 && this.colSpan <= 1) {
return
}
this.eachSpanSibling((cell) => {
cell.ui.state.mergedTo = this
if (cell !== this) {
if (cell.rowSpan > 1 || cell.colSpan > 1) {
console.debug(
'\u5408\u5E76\u5355\u5143\u683C\u6709\u91CD\u53E0',
cell,
cell.rowSpan,
cell.colSpan,
this
)
cell.rowSpan = 1
cell.colSpan = 1
}
}
}, true)
}
get merged() {
return !!this.mergedTo
}
get firstMerged() {
return this.rowSpan > 1 || this.colSpan > 1
}
get elseMerged() {
return this.merged && !this.firstMerged
}
get master() {
return this.mergedTo || this
}
get selected() {
return this.row?.sheet?.selectedCells.includes(this)
}
static contentTypes = {
text: {
label: '\u6587\u672C',
value: 'text',
},
field: {
label: '\u6570\u636E\u96C6\u5B57\u6BB5',
value: 'field',
},
slantLine: {
label: '\u659C\u7EBF',
value: 'slantLine',
},
variable: {
label: '\u5B9E\u65F6\u53D8\u91CF',
value: 'variable',
},
}
contentType = SheetCell.contentTypes.text.value
content = ''
value
get computedContent() {
if (this.value !== void 0) {
return this.value
}
return this.content
}
static editorContent = ref('')
get dataLoopType() {
return SheetDataSetConfig.getDataLoopTypeByCell(this)
}
get conditionStyle() {
let style2 = {}
for (const item2 of this.conditionStyleList) {
let _style = this.getConditionStyle(item2)
if (Object.keys(_style).length > 0) {
style2 = _style
break
}
}
return style2
}
static operatorList = [
{ label: '==', value: '==' },
{ label: '!=', value: '!=' },
{ label: '>', value: '>' },
{ label: '<', value: '<' },
{ label: '>=', value: '>=' },
{ label: '<=', value: '<=' },
{ label: '\u5305\u542B', value: 'contain' },
{ label: '\u4E0D\u5305\u542B', value: 'notContain' },
]
conditionStyleList = []
static formatTypes = {
text: {
label: '\u6587\u672C',
value: 'text',
},
number: {
label: '\u6570\u503C',
value: 'number',
},
date: {
label: '\u65E5\u671F',
value: 'date',
},
time: {
label: '\u65F6\u95F4',
value: 'time',
},
percent: {
label: '\u767E\u5206\u6BD4',
value: 'percent',
},
}
format = SheetCell.formatTypes.text.value
floatCount = 2
contentEditable = false
constructor(json) {
super()
Object.assign(this, json)
if (!this.id) {
console.warn(this)
}
if (json.contentType === SheetCell.contentTypes.field.value) {
if (json.content instanceof Object && json.content?.id) {
this.content = new Field(json.content)
}
}
if (json.contentType === SheetCell.contentTypes.slantLine.value) {
this.content = new SlantLine$2(json.content)
}
if (this.sheet) {
this.sheet.cellCache[this.id] = this
}
}
toJSON() {
const json = Object.assign({})
json.id = this.id
json.style = Object.keys(this.style).length ? this.style : void 0
json.colSpan = this.colSpan > 1 ? this.colSpan : void 0
json.rowSpan = this.rowSpan > 1 ? this.rowSpan : void 0
json.contentType = this.contentType
json.content = this.content ? this.content : void 0
json.value = this.value
json.format = this.format
json.conditionStyleList = this.conditionStyleList
return json
}
getConditionStyle(conditionStyleItem) {
if (this.computedContent === '') return {}
if (
typeof this.computedContent == 'string' ||
typeof this.computedContent == 'number'
) {
const { operator, content: content2, style: style2 } = conditionStyleItem
let leftOperand = this.computedContent
if (this.contentType === 'variable' && typeof this.content === 'string') {
leftOperand = Variable.store[this.content]
if (leftOperand === void 0) return {}
}
let rightOperand = content2
switch (operator) {
case '>':
if (leftOperand > rightOperand) return style2
break
case '<':
if (leftOperand < rightOperand) return style2
break
case '!=':
if (leftOperand != rightOperand) return style2
break
case '==':
if (leftOperand == rightOperand) return style2
break
case '>=':
if (leftOperand >= rightOperand) return style2
break
case '<=':
if (leftOperand <= rightOperand) return style2
break
case 'contain':
if (String(leftOperand).includes(rightOperand)) return style2
break
case 'notContain':
if (!String(leftOperand).includes(rightOperand)) return style2
break
}
}
return {}
}
convertFormat(value2) {
const { format: format2, floatCount } = this
if (value2 === '') return
if (typeof value2 === 'string' || typeof value2 === 'number') {
switch (format2) {
case 'number':
value2 = convertFormat.number(value2, floatCount)
break
case 'date':
value2 = convertFormat.date(value2)
break
case 'time':
value2 = convertFormat.time(value2)
break
case 'percent':
value2 = convertFormat.percent(value2, this.floatCount)
break
}
return value2
}
return value2
}
static selectStartCell
select() {
this.selectStart()
this.selectEnd()
}
selectStart() {
SheetCell.selectStartCell = this
this.selectMove()
addEventListener(
'mouseup',
() => {
this.sheet?.selectedCells.at(-1)?.selectEnd()
},
{ once: true, capture: true }
)
}
selectMove(expandMerged = true) {
if (!SheetCell.selectStartCell) return
const startCell = SheetCell.selectStartCell
const endCell = this
if (startCell.sheet !== endCell.sheet) return
const [startRowIndex, startColIndex] = startCell.pos
const [endRowIndex, endColIndex] = endCell.pos
startCell.sheet?.selectRect(
[startRowIndex, startColIndex, endRowIndex, endColIndex],
expandMerged
)
}
selectEnd() {
SheetCell.selectStartCell = void 0
this.sheet?.toolbar.formatPainter.paint()
}
eachSpanSibling(
cb,
reverse3 = false,
rowSpan = this.rowSpan,
colSpan = this.colSpan
) {
const [rowIndex, colIndex] = this.pos
const sheet = this.sheet
if (!sheet) return
for (let r2 = 0; r2 < rowSpan; r2++) {
let r_ = !reverse3 ? rowIndex + r2 : rowIndex + rowSpan - r2 - 1
for (let c2 = 0; c2 < colSpan; c2++) {
let c_ = !reverse3 ? colIndex + c2 : colIndex + colSpan - c2 - 1
const row = sheet.rows[r_]
let cell = row?.cells[c_]
if (!row || !cell) {
console.warn('!row || !cell', this)
continue
}
const shouldBreak = cb(cell, r_, c_)
if (shouldBreak) {
return
}
}
}
}
getSibling(dir3) {
const row = this.row
const sheet = row?.sheet
if (!sheet || !row) {
console.error('!sheet', this)
return
}
const rowIndex = row.index
const cellIndex = this.index
const switch_ = {
Top() {
return sheet.rows[rowIndex - 1]?.cells[cellIndex]
},
Bottom() {
return sheet.rows[rowIndex + 1]?.cells[cellIndex]
},
Left() {
return row.cells[cellIndex - 1]
},
Right() {
return row.cells[cellIndex + 1]
},
}
return switch_[dir3]()
}
getSpanSiblings(rowSpan = this.rowSpan, colSpan = this.colSpan) {
const cells = []
this.eachSpanSibling(
(cell) => {
cells.push(cell)
},
false,
rowSpan,
colSpan
)
return cells
}
getRect(expandMerged = true) {
let cell = expandMerged && this.mergedTo ? this.mergedTo : this
return Sheet$1.getRect(cell.getSpanSiblings())
}
setSpan(rowSpan = this.rowSpan, colSpan = this.colSpan) {
const cells = this.getSpanSiblings(rowSpan, colSpan)
for (const cell of cells) {
cell.mergedTo?.unMerge()
}
this.rowSpan = rowSpan
this.colSpan = colSpan
}
merge(...args) {
this.setSpan(...args)
}
unMerge() {
if (this.mergedTo) {
this.eachSpanSibling((cell) => {
cell.colSpan = 1
cell.rowSpan = 1
cell.ui.state.mergedTo = void 0
}, true)
}
}
setStyle(style2) {
Object.assign(this.style, style2)
for (const dir3 of SheetCell.dirs) {
const _style = style2[`border${dir3}Style`]
const _color = style2[`border${dir3}Color`]
const _width = style2[`border${dir3}Width`]
if (_style === void 0 && _color === void 0 && _width === void 0) {
return
}
this.setBorder(
{
style: _style,
color: _color,
width: _width,
},
dir3
)
}
}
clearStyle() {
this.style = {}
}
setBorder(
{ style: style2, color: color2, width },
dir3 = 'All',
onlySelf = false
) {
if (typeof width === 'number') {
width = `${width}px`
}
if (dir3 === 'All') {
this.setBorder(arguments[0], 'Top', onlySelf)
this.setBorder(arguments[0], 'Bottom', onlySelf)
this.setBorder(arguments[0], 'Left', onlySelf)
this.setBorder(arguments[0], 'Right', onlySelf)
return
}
this.style[`border${dir3}Style`] = style2
this.style[`border${dir3}Color`] = color2
this.style[`border${dir3}Width`] = width
let sibling = this.getSibling(dir3)
const dir_ = SheetCell._dirMap[dir3]
if (sibling && !onlySelf) {
if (
sibling.style[`border${dir_}Style`] !== style2 ||
sibling.style[`border${dir_}Color`] !== color2 ||
sibling.style[`border${dir_}Width`] !== width
) {
sibling.style[`border${dir_}Style`] = void 0
sibling.style[`border${dir_}Color`] = void 0
sibling.style[`border${dir_}Width`] = void 0
}
}
if (this.firstMerged) {
const group = this.getSpanSiblings()
for (const cell of group) {
if (cell === this) continue
cell.setBorder(...arguments)
}
}
}
clone() {
const json = JSON.parse(JSON.stringify(this))
delete json.id
const cell = new SheetCell({
...json,
row: this.row,
index: this.index,
})
cell.id = `${this.id.split('[')[0]}[${cell.id}]`
return cell
}
static getByDom(dom) {
return dom._model
}
static dirs = ['Top', 'Bottom', 'Left', 'Right']
static _dirMap = {
Top: 'Bottom',
Bottom: 'Top',
Left: 'Right',
Right: 'Left',
}
}
class SheetConfig extends Base {
title = {
text: '',
enabled: true,
}
specialId = 'aggregation'
static dataTypes = [
{
label: '\u805A\u5408\u6570\u636E',
value: 'aggregation',
},
{
label: '\u5386\u53F2\u6570\u636E',
value: 'history',
},
]
static respAllDataSet = ref([])
sheetDataSetConfigList = []
queryControllerId = ''
limit = {
editing: 5,
running: 100,
}
autoRefresh = false
autoRefreshTime = 5
get autoRefreshTimeMs() {
return this.autoRefreshTime * 1e3
}
static pageSizes = [
{ label: '1\u6761/\u9875', value: 1 },
{ label: '5\u6761/\u9875', value: 5 },
{ label: '10\u6761/\u9875', value: 10 },
{ label: '20\u6761/\u9875', value: 20 },
{ label: '30\u6761/\u9875', value: 30 },
{ label: '40\u6761/\u9875', value: 40 },
{ label: '50\u6761/\u9875', value: 50 },
]
pageSize = 5
static translateTypes = {
down: {
label: '\u5411\u4E0B\u5E73\u79FB',
value: 'down',
},
none: {
label: '\u4E0D\u5E73\u79FB',
value: 'none',
},
}
translateType = SheetConfig.translateTypes.down.value
static lastUpdateDataSetTime = 0
constructor(json = {}) {
super()
Object.assign(this, json)
for (const [
i2,
sheetDataSetConfig,
] of this.sheetDataSetConfigList.entries()) {
this.sheetDataSetConfigList[i2] = new SheetDataSetConfig(
sheetDataSetConfig
)
}
if (this.sheetDataSetConfigList.length === 0) {
this.sheetDataSetConfigList.push(new SheetDataSetConfig())
}
let now2 = new Date().getTime()
if (now2 - SheetConfig.lastUpdateDataSetTime > 200) {
SheetConfig.getDataSetList()
SheetConfig.getHistoryDataSetList()
SheetConfig.lastUpdateDataSetTime = now2
}
}
static async getDataSetList(updateDataSet = true) {
let res = await request({
url: `/api/v1/dataconfig/tree`,
method: 'get',
silent: true,
})
if (!res) return []
SheetConfig.respAllDataSet.value = res
if (updateDataSet) {
SheetConfig.updateDataSetToCache(res, 'aggregation', 'nodeType')
}
return res
}
static async getHistoryDataSetList(updateDataSet = true) {
let res = await request({
url: `/api/v1/historicarchive/tree`,
method: 'get',
silent: true,
})
if (!res) return []
if (updateDataSet) {
SheetConfig.updateDataSetToCache(res, 'history', 'type')
}
return res
}
static updateDataSetToCache = (list2, specialId, key2) => {
for (let i2 = 0; i2 < list2.length; i2++) {
let item2 = list2[i2]
if (item2[key2] !== 1) {
let d3 = new DataSet({
specialId,
id: item2.id,
name: item2.name,
type: item2[key2],
})
d3.fetch()
}
if (item2.children?.length) {
SheetConfig.updateDataSetToCache(item2.children, specialId, key2)
}
}
}
toJSON() {
const json = Object.assign({}, this)
return json
}
getSheetDataSetConfig(dataSet) {
return this.sheetDataSetConfigList.find((e2) => e2.dataSet === dataSet)
}
}
class SheetDataSetConfig extends Base {
dataSet
fieldRelationList = []
static dataLoopTypes = {
sheet: { label: '\u8868\u683C\u5FAA\u73AF', value: 'sheet' },
cellVertical: { label: '\u5411\u4E0B\u6269\u5C55', value: 'cellVertical' },
cellHorizontal: {
label: '\u5411\u53F3\u6269\u5C55',
value: 'cellHorizontal',
},
none: { label: '\u4E0D\u6269\u5C55', value: 'none' },
}
dataLoopType = SheetDataSetConfig.dataLoopTypes.cellVertical.value
constructor(json = {}) {
super()
Object.assign(this, json)
if (json.dataSet?.id) {
this.dataSet = new DataSet(json.dataSet)
}
for (const relationItem of this.fieldRelationList) {
if (!relationItem[0].formula && relationItem[0].name) {
relationItem[0].formula = `[${relationItem[0]?.name}]`
}
if (!relationItem[1].formula && relationItem[1].name) {
relationItem[1].formula = `[${relationItem[1]?.name}]`
}
relationItem[0] = new Formula({
dataSet: relationItem[0].dataSet,
formula: relationItem[0]?.formula,
})
relationItem[1] = new Formula({
dataSet: relationItem[1].dataSet,
formula: relationItem[1]?.formula,
})
}
}
addFieldToRelationList() {
this.fieldRelationList.push([new Formula(), new Formula()])
}
selectDataSet(dataSet) {
this.dataSet = dataSet
this.fieldRelationList = []
}
toJSON() {
return Object.assign({}, this, {
dataSet: { id: this.dataSet?.id },
})
}
static getDataSetConfigByCell(cell) {
const sheet = cell.sheet
const field2 = cell.content
if (!(field2 instanceof Field)) return
return sheet?.config.getSheetDataSetConfig(field2.dataSet)
}
static getDataLoopTypeByCell(cell) {
const dataSetConfig = SheetDataSetConfig.getDataSetConfigByCell(cell)
return dataSetConfig?.dataLoopType
}
}
class DataSet extends Base {
id = ''
name = ''
specialId = ''
type = 0
fieldList = []
static cache = {}
fieldCache = {}
constructor(json = {}) {
super()
let instance = DataSet.cache[String(json.id || '')]
if (instance) {
Object.assign(instance, json)
return instance
}
Object.assign(this, json)
DataSet.cache[this.id] = this
this.fetch()
}
async fetch() {
this.fieldList = this.isHistory()
? await this.getHistoryFields()
: await this.getAggregationFields()
}
isHistory() {
return this.specialId === 'history'
}
async getAggregationFields() {
const { id: id2, type: type4 } = this
if (!id2 || !type4) return []
let resp = await fetchDataSetFieldList(id2, type4)
if (!resp) return []
let fieldList = resp.map((respItem) => {
const { id: id22, fieldName, fieldType: fieldType2 } = respItem
return new Field({
dataSet: this,
id: id22,
name: fieldName,
type: fieldType2,
})
})
return fieldList
}
async getHistoryFields() {
const { id: id2 } = this
if (!id2) return []
let resp = await request.get(
`/api/v1/historicarchive/group/${id2}/var/true`
)
if (!resp) return []
let fieldList = resp.map((respItem) => {
const { id: id22, name: name2, type: type4 } = respItem
return new Field({
dataSet: this,
id: id22,
name: name2,
type: type4,
})
})
return fieldList
}
toJSON() {
return Object.assign({}, this, {
fieldList: void 0,
fieldCache: void 0,
})
}
}
class Field extends Base {
dataSet
id = ''
name = ''
type = ''
static currentDragField = null
constructor(json = {}) {
super()
Object.assign(this, json)
this.dataSet = new DataSet(json.dataSet)
let instance = this.dataSet.fieldCache[json.id || '']
if (instance) {
Object.assign(instance, { name: json.name })
return instance
}
this.dataSet.fieldCache[this.id] = this
}
toJSON() {
const json = Object.assign({}, this, {
dataSet: { id: this.dataSet.id, specialId: this.dataSet.specialId },
})
json.id = String(json.id)
return json
}
toString() {
return `[${this.name}]`
}
}
class Formula extends Base {
dataSet
formula = ''
id = ''
name = ''
constructor(json = {}) {
super()
Object.assign(this, json)
this.dataSet = new DataSet(json.dataSet)
}
setDataSet(dataSet) {
this.dataSet = dataSet
}
toJSON() {
return Object.assign({}, this, {
dataSet: { id: this.dataSet?.id },
})
}
}
function ArrayProxy(array4, self2, cb) {
return new Proxy(array4, {
get(o2, k2) {
return o2[k2]
},
set(o2, k2, v4) {
cb.call(self2, o2, k2, v4)
o2[k2] = v4
return true
},
})
}
var SheetModels = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
SheetElement,
Sheet: Sheet$1,
SheetCol,
SheetRow,
SheetCell,
SheetConfig,
SheetDataSetConfig,
DataSet,
Field,
Formula,
ArrayProxy,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var index$c = {
name: '\u5C55\u793A\u62A5\u8868',
icon: 'icon-zhanshibaobiao',
category: 'chart',
styleConfig: {
textSetting: false,
},
onCreate(node2) {
node2.setDefaultProps(defaultProps)
node2.props.sheet = new Sheet$1(node2.props.sheet)
},
}
var __glob_2_8 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: index$c,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var index$b = {
category: 'test',
name: '\u672A\u6388\u6743\u5360\u4F4D',
icon: '',
}
var __glob_2_9 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: index$b,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var RelationVariable_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$29 = (n2) => (
pushScopeId('data-v-daeb2068'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3G = { class: 'relation-variable' }
const _hoisted_2$3e = /* @__PURE__ */ _withScopeId$29(() =>
/* @__PURE__ */ createElementVNode(
'label',
null,
'\u5173\u8054\u53D8\u91CF\uFF1A',
-1
)
)
const _sfc_main$3Y = /* @__PURE__ */ defineComponent({
props: {
modelValue: {
type: String,
default: () => '',
},
},
emits: ['update:modelValue'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const varError = ref(false)
const pickVarDialogShown = ref(false)
const variable = computed({
get() {
return props2.modelValue
},
set(v4) {
emit2('update:modelValue', v4)
},
})
async function varCheck() {
if (!variable.value) return
varError.value = false
const rs2 = await request(
`/api/v1/variable/query?keyword=${variable.value}`,
{
silent: true,
}
)
if (!rs2.result.find((v4) => v4.name === variable.value)) {
varError.value = true
return
}
}
varCheck()
const confirm2 = (rows) => {
pickVarDialogShown.value = false
if (!rows || !rows.length) return
variable.value = rows[0].name
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
return (
openBlock(),
createElementBlock('div', _hoisted_1$3G, [
_hoisted_2$3e,
createVNode$1(
_component_el_input,
{
class: normalizeClass([
'input cms-el-input-x',
{
error: varError.value,
},
]),
onBlur: varCheck,
placeholder: '\u8BF7\u8F93\u5165\u53D8\u91CF\u540D\u79F0',
modelValue: unref(variable),
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
isRef(variable) ? (variable.value = $event) : null),
},
null,
8,
['class', 'modelValue']
),
createElementVNode('button', {
class: 'iconfont icon-bianjigongcheng',
onClick:
_cache[1] ||
(_cache[1] = ($event) => (pickVarDialogShown.value = true)),
}),
createVNode$1(
unref(_sfc_main$6Q),
{
data: { name: unref(variable) },
visible: pickVarDialogShown.value,
noLanguage: true,
isAppendToBody: true,
onCancel:
_cache[2] ||
(_cache[2] = ($event) => (pickVarDialogShown.value = false)),
onConfirm: confirm2,
},
null,
8,
['data', 'visible']
),
])
)
}
},
})
var RelationVariable = /* @__PURE__ */ _export_sfc(_sfc_main$3Y, [
['__scopeId', 'data-v-daeb2068'],
])
var RelationVariable$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: RelationVariable,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ExpressionFn_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$28 = (n2) => (
pushScopeId('data-v-49f5b668'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3F = { class: 'text-argument-view' }
const _hoisted_2$3d = {
key: 0,
class: 'arg-name',
}
const _hoisted_3$2Z = { class: 'flex-full input-group arg-value' }
const _hoisted_4$2y = ['title']
const _hoisted_5$2g = /* @__PURE__ */ _withScopeId$28(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-bianliang1 fx' },
null,
-1
)
)
const _hoisted_6$21 = [_hoisted_5$2g]
const _sfc_main$3X = /* @__PURE__ */ defineComponent({
props: {
expression: {
type: String,
default: '',
},
name: {
type: String,
default: '',
},
isStrut: {
type: Boolean,
default: false,
},
},
emits: ['update:expression'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const expression = computed({
get() {
return props2.expression
},
set(v4) {
emit2('update:expression', v4)
},
})
const visible = ref(false)
const openExpressionConfig = () => {
visible.value = true
}
const confirmExpress = (expression2) => {
visible.value = false
emit2('update:expression', expression2)
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$3F, [
__props2.name
? (openBlock(),
createElementBlock(
'div',
_hoisted_2$3d,
toDisplayString$1(__props2.name) + '\uFF1A',
1
))
: createCommentVNode('', true),
createElementVNode('div', _hoisted_3$2Z, [
withDirectives(
createElementVNode(
'input',
{
title: unref(Variable).expTitleTip,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
isRef(expression) ? (expression.value = $event) : null),
class: normalizeClass([
'text-input highlight-normal',
{ 'strut-input': props2.isStrut },
]),
},
null,
10,
_hoisted_4$2y
),
[[vModelText, unref(expression)]]
),
createElementVNode(
'button',
{
class: 'btn',
onClick: openExpressionConfig,
},
_hoisted_6$21
),
]),
createVNode$1(
FormulaConfigDialog$2,
{
modelValue: visible.value,
'onUpdate:modelValue':
_cache[1] || (_cache[1] = ($event) => (visible.value = $event)),
code: unref(expression),
onChange: confirmExpress,
},
null,
8,
['modelValue', 'code']
),
])
)
}
},
})
var ExpressionFn = /* @__PURE__ */ _export_sfc(_sfc_main$3X, [
['__scopeId', 'data-v-49f5b668'],
])
var ExpressionFn$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ExpressionFn,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ButtonStyle_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$27 = (n2) => (
pushScopeId('data-v-44e6b37a'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3E = { class: 'button-style-content' }
const _hoisted_2$3c = { class: 'button-row' }
const _hoisted_3$2Y = /* @__PURE__ */ _withScopeId$27(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u5927\u5C0F\uFF1A', -1)
)
const _hoisted_4$2x = { class: 'button-row' }
const _hoisted_5$2f = /* @__PURE__ */ _withScopeId$27(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u80CC\u666F', -1)
)
const _hoisted_6$20 = { class: 'cms-el-color-picker-x' }
const _hoisted_7$1K = { class: 'button-row' }
const _hoisted_8$1x = /* @__PURE__ */ _withScopeId$27(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u9009\u4E2D', -1)
)
const _hoisted_9$1r = { class: 'cms-el-color-picker-x' }
const _sfc_main$3W = /* @__PURE__ */ defineComponent({
props: {
modelValue: null,
},
emits: ['update:modelValue'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const btnStyle = computed({
get() {
return $props2.modelValue
},
set(v4) {
emit2('update:modelValue', v4)
},
})
return (_ctx, _cache) => {
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_color_picker = resolveComponent('el-color-picker')
return (
openBlock(),
createElementBlock('div', _hoisted_1$3E, [
createElementVNode('div', _hoisted_2$3c, [
_hoisted_3$2Y,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x btn-input',
'controls-position': 'right',
modelValue: btnStyle.value.size,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (btnStyle.value.size = $event)),
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_4$2x, [
_hoisted_5$2f,
createElementVNode('div', _hoisted_6$20, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
modelValue: btnStyle.value.backgroundColor,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(btnStyle.value.backgroundColor = $event)),
},
null,
8,
['predefine', 'modelValue']
),
]),
]),
createElementVNode('div', _hoisted_7$1K, [
_hoisted_8$1x,
createElementVNode('div', _hoisted_9$1r, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
modelValue: btnStyle.value.selectedColor,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(btnStyle.value.selectedColor = $event)),
},
null,
8,
['predefine', 'modelValue']
),
]),
]),
])
)
}
},
})
var ButtonStyle = /* @__PURE__ */ _export_sfc(_sfc_main$3W, [
['__scopeId', 'data-v-44e6b37a'],
])
var ButtonStyle$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ButtonStyle,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var CheckboxControl_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$26 = (n2) => (
pushScopeId('data-v-e3f5775e'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3D = { class: 'checkbox' }
const _hoisted_2$3b = { class: 'row-name' }
const _hoisted_3$2X = /* @__PURE__ */ _withScopeId$26(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u9009\u9879\u6587\u672C\uFF1A',
-1
)
)
const _hoisted_4$2w = /* @__PURE__ */ _withScopeId$26(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u9009\u4E2D\uFF1A', -1)
)
const _hoisted_5$2e = { class: 'row' }
const _hoisted_6$1$ = /* @__PURE__ */ _withScopeId$26(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u53D6\u6D88\u9009\u4E2D\uFF1A',
-1
)
)
const _hoisted_7$1J = { class: 'row' }
const _sfc_main$3V = /* @__PURE__ */ defineComponent({
props: {
variable: {
type: String,
default: '',
},
trueValue: {
type: String,
default: '',
},
falseValue: {
type: String,
default: '',
},
name: {
type: String,
default: '',
},
btnStyle: {
type: Object,
default: () => ({}),
},
},
emits: ['update'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const variable = computed({
get() {
return props2.variable
},
set(v4) {
emit2('update', { variable: v4 })
},
})
const trueValue = computed({
get() {
return props2.trueValue
},
set(v4) {
emit2('update', { trueValue: v4 })
},
})
const falseValue = computed({
get() {
return props2.falseValue
},
set(v4) {
emit2('update', { falseValue: v4 })
},
})
const name2 = computed({
get() {
return props2.name
},
set(v4) {
emit2('update', { name: v4 })
},
})
const btnStyle = computed({
get() {
return props2.btnStyle
},
set(v4) {
emit2('update', { btnStyle: v4 })
},
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
return (
openBlock(),
createElementBlock('div', _hoisted_1$3D, [
createVNode$1(
SettingItem$1,
{ title: '\u529F\u80FD' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$3b, [
_hoisted_3$2X,
createVNode$1(
_component_el_input,
{
modelValue: name2.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (name2.value = $event)),
placeholder: '\u8BF7\u8F93\u5165\u9009\u9879\u6587\u672C',
class: 'cms-el-input-x row-input',
},
null,
8,
['modelValue']
),
]),
createVNode$1(
RelationVariable,
{
modelValue: variable.value,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) => (variable.value = $event)),
},
null,
8,
['modelValue']
),
_hoisted_4$2w,
createElementVNode('div', _hoisted_5$2e, [
createVNode$1(
ExpressionFn,
{
name: '\u5199\u5165\u503C',
expression: trueValue.value,
'onUpdate:expression':
_cache[2] ||
(_cache[2] = ($event) => (trueValue.value = $event)),
},
null,
8,
['expression']
),
]),
_hoisted_6$1$,
createElementVNode('div', _hoisted_7$1J, [
createVNode$1(
ExpressionFn,
{
name: '\u5199\u5165\u503C',
expression: falseValue.value,
'onUpdate:expression':
_cache[3] ||
(_cache[3] = ($event) => (falseValue.value = $event)),
},
null,
8,
['expression']
),
]),
]),
_: 1,
}
),
createVNode$1(
SettingItem$1,
{ title: '\u6309\u94AE' },
{
default: withCtx(() => [
createVNode$1(
ButtonStyle,
{
modelValue: btnStyle.value,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) => (btnStyle.value = $event)),
},
null,
8,
['modelValue']
),
]),
_: 1,
}
),
])
)
}
},
})
var CheckboxControl_settings = /* @__PURE__ */ _export_sfc(_sfc_main$3V, [
['__scopeId', 'data-v-e3f5775e'],
])
var __glob_1_0 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: CheckboxControl_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
function isNil(value2) {
return value2 == null
}
var isNil_1 = isNil
const booleanConvert = (v4, trueValue, falseValue) => {
if (typeof v4 === 'boolean') {
if (v4) {
return trueValue.value
}
return falseValue.value
}
return v4
}
var CheckboxControl_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$3C = { class: 'checkbox-content' }
const _sfc_main$3U = /* @__PURE__ */ defineComponent({
props: {
variable: null,
trueValue: null,
falseValue: null,
name: null,
btnStyle: null,
node: null,
},
emits: ['change'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
useCssVars((_ctx) => ({
'1e6654b6': size.value,
'235e6b5a': $props2.btnStyle.backgroundColor,
'1ccef166': $props2.btnStyle.selectedColor,
}))
const node2 = reactive($props2.node)
const defaultValue = ref('')
const checkboxValue = ref('')
const getValue2 = (expression) => {
let v4 = Expression.getValue(expression)
if (isNil_1(v4)) v4 = ''
return v4.toString()
}
const setValue = (variableName2, value2) => {
if (!app.editing) {
Variable.store[variableName2] = value2
} else {
defaultValue.value = value2
}
}
const trueValue = computed(() => {
return getValue2($props2.trueValue)
})
const falseValue = computed(() => {
return getValue2($props2.falseValue)
})
const checked2 = computed({
get() {
let v4 = defaultValue.value || Variable.store[$props2.variable]
if (isNil_1(v4)) v4 = ''
v4 = booleanConvert(v4, trueValue, falseValue)
return v4.toString()
},
set(v4) {
if ($props2.variable) {
let expValue = 0
const trueValue2 = getValue2($props2.trueValue)
if (v4 == trueValue2) {
expValue = trueValue2
} else {
expValue = getValue2($props2.falseValue)
}
defaultValue.value = ''
return setValue($props2.variable, expValue)
}
defaultValue.value = v4
},
})
const getValueToVariable = (variableName2) => {
const val2 = $props2.variable ? checked2.value : checkboxValue.value
setValue(variableName2, val2)
}
const onChange = (value2) => {
checkboxValue.value = value2
emit2('change', { target: { value: value2 } })
}
const size = computed(() => {
return $props2.btnStyle.size + 'px'
})
node2.methods.getValueToVariable = getValueToVariable
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
return (
openBlock(),
createElementBlock('span', _hoisted_1$3C, [
createVNode$1(
_component_el_checkbox,
{
onChange,
'true-label': unref(trueValue),
'false-label': unref(falseValue),
label: _ctx.t(__props2.name),
modelValue: unref(checked2),
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
isRef(checked2) ? (checked2.value = $event) : null),
},
null,
8,
['true-label', 'false-label', 'label', 'modelValue']
),
])
)
}
},
})
var CheckboxControl = /* @__PURE__ */ _export_sfc(_sfc_main$3U, [
['__scopeId', 'data-v-3f964662'],
])
var __glob_1_1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: CheckboxControl,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const dateTypeList = [
{
value: 'year',
label: 'YYYY',
format: 'YYYY',
},
{
value: 'month',
label: 'YYYY-MM',
format: 'YYYY-MM',
},
{
value: 'date',
label: 'YYYY-MM-DD',
format: 'YYYY-MM-DD',
},
{
value: 'datetime',
label: 'YYYY-MM-DD HH:mm:ss',
format: 'YYYY-MM-DD HH:mm:ss',
},
]
var DateSelector_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$25 = (n2) => (
pushScopeId('data-v-fdea6612'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3B = { class: 'drop-down-list-settings' }
const _hoisted_2$3a = { class: 'set-date' }
const _hoisted_3$2W = /* @__PURE__ */ _withScopeId$25(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'date-type-text' },
'\u65E5\u671F\u9897\u7C92\u5EA6:',
-1
)
)
const _sfc_main$3T = /* @__PURE__ */ defineComponent({
props: {
editing: { type: Boolean },
node: null,
text: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
const props2 = reactive(node2.props)
let dateType = ref(props2.dateTypeData.value || dateTypeList[0])
const dateTypeChange = (val2) => {
let dateTypeData = dateTypeList.filter((item2) => {
return item2.value == val2
})[0]
props2.dateTypeData = dateTypeData
}
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
return (
openBlock(),
createElementBlock('div', _hoisted_1$3B, [
createVNode$1(
SettingItem$1,
{ title: '\u914D\u7F6E' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$3a, [
_hoisted_3$2W,
createVNode$1(
_component_el_select,
{
modelValue: dateType.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (dateType.value = $event)),
class: 'cms-el-select-x date-type-select',
'popper-class': 'cms-el-select_check',
onChange: dateTypeChange,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(dateTypeList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
]),
_: 1,
}
),
])
)
}
},
})
var DateSelector_settings = /* @__PURE__ */ _export_sfc(_sfc_main$3T, [
['__scopeId', 'data-v-fdea6612'],
])
var __glob_1_2 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: DateSelector_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var DateSelector_vue_vue_type_style_index_0_scoped_true_lang = ''
var DateSelector_vue_vue_type_style_index_1_lang = ''
const _hoisted_1$3A = { class: 'date-selector' }
const _sfc_main$3S = /* @__PURE__ */ defineComponent({
props: {
editing: { type: Boolean },
running: { type: Boolean },
node: null,
},
emits: ['change', 'click'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const { local } = Language$1.useElementPlusI18n()
const node2 = reactive($props2.node)
const props2 = reactive(node2.props)
props2.dateTypeData = props2.dateTypeData || {
value: 'date',
format: 'YYYY-MM-DD',
}
props2.defaultData =
props2.defaultData ?? dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss')
let date4 = ref(props2.defaultData)
const datePickerRef = ref()
const DateRangeIcon2 = shallowRef({
render() {
return h$4('i', { class: 'iconfont icon-shijianxuanzeqi' })
},
})
const click2 = (e2) => {
datePickerRef.value.focus()
emit2('click', e2)
}
const change2 = (value2) => {
emit2('change', { target: { value: value2 } })
}
function getValueToVariable(variableName2) {
Variable.store[variableName2] = dayjs(date4.value).format(
props2.dateTypeData.format
)
}
node2.methods.getValueToVariable = getValueToVariable
const setValue = (val2) => {
date4.value = dayjs(val2).format(props2.dateTypeData.format)
}
node2.methods.setValue = setValue
return (_ctx, _cache) => {
const _component_el_date_picker = resolveComponent('el-date-picker')
return (
openBlock(),
createElementBlock('div', _hoisted_1$3A, [
createVNode$1(
unref(ElConfigProvider),
{ locale: unref(local) },
{
default: withCtx(() => [
(openBlock(),
createBlock(
_component_el_date_picker,
{
ref_key: 'datePickerRef',
ref: datePickerRef,
class: 'date-selector-select',
format: unref(props2).dateTypeData.format,
'value-format': unref(props2).dateTypeData.format,
modelValue: date4.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (date4.value = $event)),
type: unref(props2).dateTypeData.value,
clearable: '',
'prefix-icon': unref(DateRangeIcon2),
key: unref(props2).dateTypeData.value,
'popper-class': 'date-selector-popper',
onChange: change2,
teleported: $props2.running,
},
null,
8,
[
'format',
'value-format',
'modelValue',
'type',
'prefix-icon',
'teleported',
]
)),
createElementVNode(
'div',
{
class: 'hidden-div',
onClick: click2,
},
[
createElementVNode('i', {
class: 'iconfont icon-shanchujilu',
onClick:
_cache[1] ||
(_cache[1] = ($event) => (date4.value = '')),
}),
]
),
]),
_: 1,
},
8,
['locale']
),
])
)
}
},
})
var DateSelector = /* @__PURE__ */ _export_sfc(_sfc_main$3S, [
['__scopeId', 'data-v-663f0995'],
])
var __glob_1_3 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: DateSelector,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _sfc_main$3R = {}
const _hoisted_1$3z = { class: 'iconfont icon-shijianxuanzeqi' }
function _sfc_render$4(_ctx, _cache) {
return openBlock(), createElementBlock('i', _hoisted_1$3z)
}
var DateIcon = /* @__PURE__ */ _export_sfc(_sfc_main$3R, [
['render', _sfc_render$4],
])
var __glob_1_4 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: DateIcon,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Filter_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$24 = (n2) => (
pushScopeId('data-v-48490828'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3y = { class: 'set-item' }
const _hoisted_2$39 = /* @__PURE__ */ _withScopeId$24(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'header' },
'\u8F93\u5165\u6846\uFF1A',
-1
)
)
const _hoisted_3$2V = { class: 'content' }
const _hoisted_4$2v = { class: 'set-item' }
const _hoisted_5$2d = /* @__PURE__ */ _withScopeId$24(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'header' },
'\u4E0B\u62C9\u6846\uFF1A',
-1
)
)
const _hoisted_6$1_ = { class: 'content' }
const _hoisted_7$1I = /* @__PURE__ */ _withScopeId$24(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u6700\u5927\u6570\u636E\u91CF',
-1
)
)
const _sfc_main$3Q = /* @__PURE__ */ defineComponent({
props: {
editing: { type: Boolean },
node: null,
},
setup(__props2) {
const $props2 = __props2
const props2 = reactive($props2.node.props)
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_input_number = resolveComponent('el-input-number')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
SettingItem$1,
{ title: '\u914D\u7F6E' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$3y, [
_hoisted_2$39,
createElementVNode('div', _hoisted_3$2V, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(props2).inputSettings.autoSelectAll,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(props2).inputSettings.autoSelectAll =
$event)),
label:
'\u83B7\u5F97\u7126\u70B9\u81EA\u52A8\u5168\u9009',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
createVNode$1(
_component_el_checkbox,
{
modelValue:
unref(props2).inputSettings.keyboard.enabled,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(props2).inputSettings.keyboard.enabled =
$event)),
label: '\u542F\u7528\u865A\u62DF\u952E\u76D8',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
createVNode$1(
_component_el_checkbox,
{
modelValue:
unref(props2).inputSettings.keyboard.enterClose,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(props2).inputSettings.keyboard.enterClose =
$event)),
label:
'Enter\u952E\u5173\u95ED\u865A\u62DF\u952E\u76D8',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
]),
]),
createElementVNode('div', _hoisted_4$2v, [
_hoisted_5$2d,
createElementVNode('div', _hoisted_6$1_, [
_hoisted_7$1I,
createVNode$1(
_component_el_input_number,
{
modelValue: unref(props2).maxCount,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(props2).maxCount = $event)),
class: 'cms-el-input-number-x',
'controls-position': 'right',
style: { width: '100px' },
},
null,
8,
['modelValue']
),
]),
]),
]),
_: 1,
}
),
])
)
}
},
})
var Filter_settings = /* @__PURE__ */ _export_sfc(_sfc_main$3Q, [
['__scopeId', 'data-v-48490828'],
])
var __glob_1_5 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Filter_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Filter_vue_vue_type_style_index_0_lang = ''
var Filter_vue_vue_type_style_index_1_scoped_true_lang = ''
const _withScopeId$23 = (n2) => (
pushScopeId('data-v-a0209c36'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3x = { class: 'pop-title' }
const _hoisted_2$38 = { class: 'pop-condition-item-value' }
const _hoisted_3$2U = ['onClick']
const _hoisted_4$2u = ['onClick']
const _hoisted_5$2c = { class: 'bottom' }
const _hoisted_6$1Z = /* @__PURE__ */ _withScopeId$23(() =>
/* @__PURE__ */ createElementVNode('div', { class: 'pop-add-icon' }, '+', -1)
)
const _hoisted_7$1H = { class: 'pop-btns show' }
const _sfc_main$3P = /* @__PURE__ */ defineComponent({
props: {
node: null,
running: { type: Boolean },
},
emits: ['change'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const popoverRef = ref()
const contentRef = ref()
let computedStyle = reactive({ transform: 'translate(0px, 0px)' })
const { local } = Language$1.useElementPlusI18n()
const node2 = reactive($props2.node)
const formRef = ref()
const validate = () => {
formRef.value.validate((valid) => valid && confirm2())
}
const text2 = '\u7B5B\u9009'
node2.setDefaultProps({
text: text2,
editingClickEnabled: true,
})
node2.props.text = node2.props.text || text2
const {
active,
conditionList: conditionList2,
fieldOptions,
confirm: confirm2,
cancel: cancel2,
filterClick,
getFieldValue,
changeComparison,
changeField: changeField2,
addCondition,
deleteCondition,
checkInputType,
changeDateType,
getValueToVariable,
setValue,
} = useHook($props2.node, emit2, $props2.running)
const format2 = (str) => {
return str.replace(/(yyyy|dd)/g, ($1) => $1.toUpperCase())
}
watch$1(
[conditionList2, active, $props2.node.style],
() => {
setTimeout(() => {
const bodyStyle =
app.current.project.current.page.document.body.styleProxy
const nodeStyle = $props2.node.styleProxy
const { left: left2, height, top: top2 } = nodeStyle
const contentBounds =
contentRef.value?.parentNode?.getBoundingClientRect()
let x2 = left2
let y2 = top2 + (height || 26) + 12
let popoverWidth = contentBounds?.width || 293
let popoverHeight = contentBounds?.height || 95
if (x2 + popoverWidth > (bodyStyle?.width || 1920)) {
x2 = x2 + nodeStyle.width - popoverWidth
}
if (y2 + height + popoverHeight + 20 > (bodyStyle?.height || 1080)) {
y2 = top2 - popoverHeight - 12
}
computedStyle.transform = `translate(${x2}px, ${y2}px)`
})
},
{
deep: true,
}
)
node2.methods.getValueToVariable = getValueToVariable
node2.methods.setValue = setValue
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_date_picker = resolveComponent('el-date-picker')
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_form = resolveComponent('el-form')
const _component_el_button = resolveComponent('el-button')
const _component_el_popover = resolveComponent('el-popover')
return (
openBlock(),
createElementBlock(
Fragment,
null,
[
createVNode$1(
Button,
mergeProps(
{ ..._ctx.$attrs, ...$props2 },
{
class: ['filter', { active: unref(active) }],
onClick: unref(filterClick),
}
),
null,
16,
['class', 'onClick']
),
createVNode$1(
_component_el_popover,
{
visible: unref(active),
trigger: 'click',
'popper-class': 'filter-popper',
'show-arrow': false,
teleported: false,
'hide-after': 0,
'show-after': 0,
ref_key: 'popoverRef',
ref: popoverRef,
'popper-style': unref(computedStyle),
'popper-options': { placement: 'auto', removeOnDestroy: true },
},
{
default: withCtx(() => [
createElementVNode(
'div',
{
class: 'pop',
ref_key: 'contentRef',
ref: contentRef,
},
[
createElementVNode(
'div',
_hoisted_1$3x,
toDisplayString$1(
_ctx._t('\u8BBE\u7F6E\u7B5B\u9009\u6761\u4EF6')
),
1
),
createVNode$1(
_component_el_form,
{
ref_key: 'formRef',
ref: formRef,
model: unref(conditionList2),
},
{
default: withCtx(() => [
createVNode$1(
unref(ElConfigProvider),
{ locale: unref(local) },
{
default: withCtx(() => [
createElementVNode(
'div',
{
class: 'pop-condition',
style: normalizeStyle$1({
overflow:
unref(conditionList2).length > 7
? 'scroll'
: '',
}),
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(conditionList2),
(item2, index2) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'pop-condition-item',
key: item2[0] + index2,
},
[
createVNode$1(
_component_el_select,
{
modelValue: item2[0],
'onUpdate:modelValue': (
$event
) => (item2[0] = $event),
class: 'cms-el-select',
'popper-class':
'filter-select__popper',
placeholder:
_ctx._t(
'\u8BF7\u9009\u62E9'
),
style: { width: '116px' },
onChange: (v4) =>
unref(changeField2)(
item2,
v4
),
teleported:
__props2.running,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(fieldOptions),
(field2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: field2?.id,
label:
_ctx.t(
field2.aliasName ||
field2.fieldName
),
value:
field2.optionValue,
},
null,
8,
[
'label',
'value',
]
)
)
}
),
128
)),
]),
_: 2,
},
1032,
[
'modelValue',
'onUpdate:modelValue',
'placeholder',
'onChange',
'teleported',
]
),
createVNode$1(
_component_el_select,
{
modelValue: item2[1],
'onUpdate:modelValue': (
$event
) => (item2[1] = $event),
class: 'cms-el-select',
'popper-class':
'filter-select__popper',
placeholder:
_ctx._t(
'\u8BF7\u9009\u62E9'
),
style: { width: '80px' },
teleported:
__props2.running,
onChange: (v4) =>
unref(changeComparison)(
item2,
v4
),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
Object.keys(
unref(
ComparisonOperatorsEnum
)
).filter((e2) => {
const fieldObj =
unref(
fieldOptions
).find(
(e22) =>
e22.optionValue ===
item2[0]
)
if (
fieldObj?.fieldType ===
3
) {
if (
[
unref(
ComparisonOperatorsEnum
).contain,
unref(
ComparisonOperatorsEnum
)
.notContain,
].includes(
unref(
ComparisonOperatorsEnum
)[e2]
)
) {
return false
}
if (
fieldObj?.dataType ===
'history' &&
[
unref(
ComparisonOperatorsEnum
)['!='],
unref(
ComparisonOperatorsEnum
).isEmpty,
unref(
ComparisonOperatorsEnum
)
.isNotEmpty,
].includes(
unref(
ComparisonOperatorsEnum
)[e2]
)
) {
return false
}
}
return true
}),
(o2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: o2,
label:
_ctx._t(
unref(
ComparisonOperatorsEnum
)[o2]
),
value: o2,
},
null,
8,
[
'label',
'value',
]
)
)
}
),
128
)),
]),
_: 2,
},
1032,
[
'modelValue',
'onUpdate:modelValue',
'placeholder',
'teleported',
'onChange',
]
),
withDirectives(
createElementVNode(
'div',
_hoisted_2$38,
[
item2[2].type ===
unref(InputTypeEnum)
.text ||
!item2[2].type
? (openBlock(),
createBlock(
_component_el_form_item,
{
key: 0,
prop: '0',
style: {
margin: '0',
},
rules: [
{
validator: (
rule2,
value2,
callback
) => {
const fieldObj =
unref(
fieldOptions
).find(
(
e2
) =>
e2.optionValue ===
item2[0]
)
if (
fieldObj?.fieldType ===
1 &&
Number.isNaN(
Number(
item2[2]
.content
)
)
) {
callback(
_ctx._t(
'\u6570\u503C\u7C7B\u5B57\u6BB5\u53EA\u80FD\u8F93\u5165\u6570\u503C'
)
)
} else {
callback()
}
},
},
],
},
{
default:
withCtx(
() => [
createVNode$1(
_component_el_input,
{
modelValue:
item2[2]
.content,
'onUpdate:modelValue':
(
$event
) =>
(item2[2].content =
$event),
clearable:
'',
placeholder:
_ctx._t(
'\u8BF7\u8F93\u5165'
),
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
'placeholder',
]
),
]
),
_: 2,
},
1032,
['rules']
))
: createCommentVNode(
'',
true
),
item2[2].type ===
unref(InputTypeEnum)
.select
? (openBlock(),
createBlock(
_component_el_select,
{
key: 1,
modelValue:
item2[2]
.content,
'onUpdate:modelValue':
($event) =>
(item2[2].content =
$event),
class:
'cms-el-select',
'popper-class':
'filter-select__popper',
clearable: '',
placeholder:
_ctx._t(
'\u8BF7\u9009\u62E9'
),
teleported:
__props2.running,
},
{
default:
withCtx(
() => [
(openBlock(
true
),
createElementBlock(
Fragment,
null,
renderList(
unref(
getFieldValue
)(
item2[0]
),
(
op
) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: op,
label:
op,
value:
op,
},
null,
8,
[
'label',
'value',
]
)
)
}
),
128
)),
]
),
_: 2,
},
1032,
[
'modelValue',
'onUpdate:modelValue',
'placeholder',
'teleported',
]
))
: createCommentVNode(
'',
true
),
item2[2].type ===
unref(InputTypeEnum)
.date &&
item2[2].content
? (openBlock(),
createElementBlock(
Fragment,
{ key: 2 },
[
createVNode$1(
_component_el_select,
{
modelValue:
item2[2]
.content[0],
'onUpdate:modelValue':
(
$event
) =>
(item2[2].content[0] =
$event),
class:
'cms-el-select',
'popper-class':
'filter-select__popper',
placeholder:
_ctx._t(
'\u8BF7\u9009\u62E9'
),
onChange: (
v4
) =>
unref(
changeDateType
)(
item2,
v4
),
teleported:
__props2.running,
},
{
default:
withCtx(
() => [
(openBlock(
true
),
createElementBlock(
Fragment,
null,
renderList(
unref(
DateType
),
(
dt2
) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: dt2.value,
label:
_ctx._t(
dt2.label
),
value:
dt2.value,
},
null,
8,
[
'label',
'value',
]
)
)
}
),
128
)),
]
),
_: 2,
},
1032,
[
'modelValue',
'onUpdate:modelValue',
'placeholder',
'onChange',
'teleported',
]
),
[
unref(
DateTypeEnum
).date,
unref(
DateTypeEnum
).datetime,
unref(
DateTypeEnum
).year,
unref(
DateTypeEnum
).month,
].includes(
item2[2]
.content[0]
)
? (openBlock(),
createBlock(
_component_el_date_picker,
{
key: 0,
modelValue:
item2[2]
.content[1],
'onUpdate:modelValue':
(
$event
) =>
(item2[2].content[1] =
$event),
class:
'date-range-select',
type: Object.keys(
unref(
DateTypeEnum
)
).find(
(
key2
) =>
unref(
DateTypeEnum
)[
key2
] ===
item2[2]
.content?.[0]
),
format:
format2(
unref(
DateType
).find(
(
e2
) =>
e2.value ===
item2[2]
.content[0]
)
?.value
),
'value-format':
format2(
unref(
DateType
).find(
(
e2
) =>
e2.value ===
item2[2]
.content[0]
)
?.value
),
clearable:
'',
'prefix-icon':
DateIcon,
'popper-class':
'date-range-popper',
style: {
width:
'204px',
},
teleported:
__props2.running,
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
'type',
'format',
'value-format',
'teleported',
]
))
: createCommentVNode(
'',
true
),
[
unref(
DateTypeEnum
).relative,
].includes(
item2[2]
.content[0]
)
? (openBlock(),
createElementBlock(
Fragment,
{
key: 1,
},
[
createVNode$1(
_component_el_select,
{
modelValue:
item2[2]
.content[1],
'onUpdate:modelValue':
(
$event
) =>
(item2[2].content[1] =
$event),
class:
'cms-el-select',
'popper-class':
'filter-select__popper',
placeholder:
_ctx._t(
'\u8BF7\u9009\u62E9'
),
style:
{
width:
'80px',
},
teleported:
__props2.running,
},
{
default:
withCtx(
() => [
(openBlock(
true
),
createElementBlock(
Fragment,
null,
renderList(
Object.keys(
unref(
RelativeDirectionEnum
)
),
(
rd
) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: rd,
label:
_ctx._t(
unref(
RelativeDirectionEnum
)[
rd
]
),
value:
rd,
},
null,
8,
[
'label',
'value',
]
)
)
}
),
128
)),
]
),
_: 2,
},
1032,
[
'modelValue',
'onUpdate:modelValue',
'placeholder',
'teleported',
]
),
createVNode$1(
_component_el_input_number,
{
modelValue:
item2[2]
.content[2],
'onUpdate:modelValue':
(
$event
) =>
(item2[2].content[2] =
$event),
class:
'cms-el-input-number',
'controls-position':
'right',
min: 1,
step: 1,
style:
{
width:
'60px',
},
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
]
),
createVNode$1(
_component_el_select,
{
modelValue:
item2[2]
.content[3],
'onUpdate:modelValue':
(
$event
) =>
(item2[2].content[3] =
$event),
class:
'cms-el-select',
'popper-class':
'filter-select__popper',
placeholder:
_ctx._t(
'\u8BF7\u9009\u62E9'
),
style:
{
width:
'80px',
},
teleported:
__props2.running,
},
{
default:
withCtx(
() => [
(openBlock(
true
),
createElementBlock(
Fragment,
null,
renderList(
unref(
DateTimeUnit
),
(
du
) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: du.value,
label:
_ctx._t(
du.label
),
value:
du.value,
},
null,
8,
[
'label',
'value',
]
)
)
}
),
128
)),
]
),
_: 2,
},
1032,
[
'modelValue',
'onUpdate:modelValue',
'placeholder',
'teleported',
]
),
],
64
))
: createCommentVNode(
'',
true
),
],
64
))
: createCommentVNode(
'',
true
),
],
512
),
[
[
vShow,
![
'isEmpty',
'isNotEmpty',
].includes(item2[1]),
],
]
),
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont icon-zhongfuzhoufanwei',
{
visible:
unref(
fieldOptions
).find(
(e2) =>
e2.optionValue ===
item2[0]
)?.fieldType === 3,
},
]),
onClick: ($event) =>
unref(checkInputType)(
item2
),
},
null,
10,
_hoisted_3$2U
),
createElementVNode(
'i',
{
class:
'iconfont icon-guanbijianpan',
onClick: ($event) =>
unref(deleteCondition)(
index2
),
},
null,
8,
_hoisted_4$2u
),
]
)
)
}
),
128
)),
],
4
),
]),
_: 1,
},
8,
['locale']
),
]),
_: 1,
},
8,
['model']
),
createElementVNode('div', _hoisted_5$2c, [
createElementVNode(
'div',
{
class: 'pop-add left',
onClick:
_cache[0] ||
(_cache[0] = (...args) =>
unref(addCondition) &&
unref(addCondition)(...args)),
},
[
_hoisted_6$1Z,
createElementVNode(
'span',
null,
toDisplayString$1(
unref(conditionList2).length
? _ctx._t('\u6DFB\u52A0\u6761\u4EF6')
: _ctx._t('\u8BF7\u6DFB\u52A0\u6761\u4EF6')
),
1
),
]
),
createElementVNode('div', _hoisted_7$1H, [
createVNode$1(
_component_el_button,
{ onClick: unref(cancel2) },
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx._t('\u53D6\u6D88')),
1
),
]),
_: 1,
},
8,
['onClick']
),
createVNode$1(
_component_el_button,
{
type: 'primary',
onClick: validate,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx._t('\u786E\u8BA4')),
1
),
]),
_: 1,
}
),
]),
]),
],
512
),
]),
_: 1,
},
8,
['visible', 'popper-style']
),
],
64
)
)
}
},
})
var Filter$1 = /* @__PURE__ */ _export_sfc(_sfc_main$3P, [
['__scopeId', 'data-v-a0209c36'],
])
var __glob_1_6 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Filter$1,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Condition_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$22 = (n2) => (
pushScopeId('data-v-094403d7'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3w = { class: 'Condition' }
const _hoisted_2$37 = /* @__PURE__ */ _withScopeId$22(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-xinjian' },
null,
-1
)
)
const _hoisted_3$2T = /* @__PURE__ */ createTextVNode(
'\u6DFB\u52A0\u72B6\u6001'
)
const _hoisted_4$2t = [_hoisted_2$37, _hoisted_3$2T]
const _sfc_main$3O = /* @__PURE__ */ defineComponent({
props: {
node: null,
caseList: null,
},
setup(__props2) {
const $props2 = __props2
const setDefaultName = () => {
const LEN = $props2.caseList.length + 1
return `\u672A\u547D\u540D\u72B6\u6001${LEN}`
}
const addCase = () => {
$props2.caseList.push(createCaseItemData({ name: setDefaultName() }))
}
const copyCase = (index2) => {
const caseList = $props2.caseList
const copyItem = lodash$2.exports.cloneDeep(caseList[index2])
copyItem.name = setDefaultName()
caseList.push(copyItem)
}
const deleteCase = (index2) => {
$props2.caseList.splice(index2, 1)
}
const moveCase = (dir3, index2) => {
const caseList = $props2.caseList
const moveIndex = dir3 === 'up' ? -1 : 1
let temp = caseList[index2 + moveIndex]
caseList[index2 + moveIndex] = caseList[index2]
caseList[index2] = temp
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$3w, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList($props2.caseList, (caseItemData, index2) => {
return (
openBlock(),
createBlock(
StatusItem,
{
caseItemData,
key: caseItemData,
node: __props2.node,
idx: index2,
maxIdx: $props2.caseList.length,
onCopy: ($event) => copyCase(index2),
onDelete: ($event) => deleteCase(index2),
onMove: ($event) => moveCase($event, index2),
},
null,
8,
[
'caseItemData',
'node',
'idx',
'maxIdx',
'onCopy',
'onDelete',
'onMove',
]
)
)
}),
128
)),
createElementVNode('div', { class: 'add-status' }, [
createElementVNode(
'button',
{
class: 'btn',
onClick: addCase,
},
_hoisted_4$2t
),
]),
])
)
}
},
})
var Condition = /* @__PURE__ */ _export_sfc(_sfc_main$3O, [
['__scopeId', 'data-v-094403d7'],
])
var Condition$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Condition,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Progress_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$21 = (n2) => (
pushScopeId('data-v-61de8761'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3v = { class: 'form' }
const _hoisted_2$36 = { class: 'row' }
const _hoisted_3$2S = /* @__PURE__ */ _withScopeId$21(() =>
/* @__PURE__ */ createElementVNode(
'label',
null,
'\u5173\u8054\u53D8\u91CF\uFF1A',
-1
)
)
const _hoisted_4$2s = { class: 'row' }
const _hoisted_5$2b = /* @__PURE__ */ _withScopeId$21(() =>
/* @__PURE__ */ createElementVNode(
'label',
{ class: 'row-target' },
'\u76EE\u6807\u503C\uFF1A',
-1
)
)
const _hoisted_6$1Y = { class: 'tag-box' }
const _hoisted_7$1G = { class: 'tag-row mb-4' }
const _hoisted_8$1w = { class: 'tag-row' }
const _hoisted_9$1q = /* @__PURE__ */ _withScopeId$21(() =>
/* @__PURE__ */ createElementVNode(
'label',
{ class: 'tag-span' },
'\u5C0F\u6570\u4F4D\u6570',
-1
)
)
const _hoisted_10$1m = { class: 'tag-row' }
const _hoisted_11$1e = /* @__PURE__ */ _withScopeId$21(() =>
/* @__PURE__ */ createElementVNode(
'label',
{ class: 'tag-span' },
'\u6807\u7B7E\u4F4D\u7F6E',
-1
)
)
const _hoisted_12$1b = { class: 'tag-row rotate' }
const _hoisted_13$13 = /* @__PURE__ */ _withScopeId$21(() =>
/* @__PURE__ */ createElementVNode(
'div',
{
class: 'tag-span',
style: { width: '50px' },
},
'\u65CB\u8F6C',
-1
)
)
const _hoisted_14$Z = /* @__PURE__ */ _withScopeId$21(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
[
/* @__PURE__ */ createElementVNode('i', {
class: 'iconfont icon-xuanzhuan',
}),
],
-1
)
)
const _hoisted_15$W = /* @__PURE__ */ _withScopeId$21(() =>
/* @__PURE__ */ createElementVNode('sup', null, '\xB0', -1)
)
const _hoisted_16$V = { class: 'tag-condition' }
const _hoisted_17$P = { class: 'tag-color' }
const _hoisted_18$J = /* @__PURE__ */ _withScopeId$21(() =>
/* @__PURE__ */ createElementVNode('label', null, '\u586B\u5145', -1)
)
const _hoisted_19$G = {
class: 'cms-el-color-picker-x',
style: { height: '20px' },
}
const _sfc_main$3N = /* @__PURE__ */ defineComponent({
props: {
node: null,
props: null,
},
setup(__props2) {
const $props2 = __props2
const nodeProps = reactive($props2.props || {})
const tagConfig = reactive(nodeProps.tagConfig)
const conditions = ref(nodeProps.condition)
let expCode = ref('')
let currentChange = ref('')
let expConfig = reactive({
visible: false,
})
const openExpConfigDialog = (expType) => {
expConfig.visible = true
currentChange.value = expType
if (currentChange.value === 'associative') {
expCode.value = nodeProps.exp
}
if (currentChange.value === 'target') {
expCode.value = nodeProps.target.exp
}
}
const updateExpression = (exp) => {
if (currentChange.value === 'associative') {
nodeProps.exp = exp
}
if (currentChange.value === 'target') {
nodeProps.target.exp = exp
}
currentChange.value = ''
}
watch$1(
() => tagConfig,
() => {
nodeProps.tagConfig = tagConfig
},
{
deep: true,
}
)
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_color_picker = resolveComponent('el-color-picker')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
SettingItem$1,
{ title: '\u529F\u80FD' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$3v, [
createElementVNode('div', _hoisted_2$36, [
_hoisted_3$2S,
createVNode$1(
_component_el_input,
{
title: unref(Variable).expTitleTip,
class: 'input cms-el-input-x',
placeholder:
'\u8BF7\u8F93\u5165\u5173\u8054\u53D8\u91CF\u8868\u8FBE\u5F0F',
modelValue: unref(nodeProps).exp,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(nodeProps).exp = $event)),
},
null,
8,
['title', 'modelValue']
),
createElementVNode('button', {
class: 'iconfont icon-bianjigongcheng',
onClick:
_cache[1] ||
(_cache[1] = ($event) =>
openExpConfigDialog('associative')),
}),
]),
createElementVNode('div', _hoisted_4$2s, [
_hoisted_5$2b,
createVNode$1(
_component_el_input,
{
title: unref(Variable).expTitleTip,
class: 'input cms-el-input-x',
style: { width: '160px' },
placeholder:
'\u8BF7\u8F93\u5165\u76EE\u6807\u503C\u8868\u8FBE\u5F0F',
modelValue: unref(nodeProps).target.exp,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(nodeProps).target.exp = $event)),
},
null,
8,
['title', 'modelValue']
),
createElementVNode('button', {
class: 'iconfont icon-bianjigongcheng',
onClick:
_cache[3] ||
(_cache[3] = ($event) => openExpConfigDialog('target')),
}),
]),
]),
]),
_: 1,
}
),
createVNode$1(
SettingItem$1,
{ title: '\u6807\u7B7E' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_6$1Y, [
createElementVNode('span', _hoisted_7$1G, [
createVNode$1(
_component_el_checkbox,
{
class: 'cms-el-checkbox-font-size-12 tag-checkbox',
modelValue: unref(tagConfig).showNumber,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(tagConfig).showNumber = $event)),
label: '\u6570\u503C',
},
null,
8,
['modelValue']
),
createVNode$1(
_component_el_input,
{
class: 'tag-input cms-el-input-x',
placeholder: '\u5355\u4F4D',
modelValue: unref(tagConfig).unit,
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) =>
(unref(tagConfig).unit = $event)),
},
null,
8,
['modelValue']
),
]),
createVNode$1(
_component_el_checkbox,
{
class: 'cms-el-checkbox-font-size-12',
modelValue: unref(tagConfig).showPercent,
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) =>
(unref(tagConfig).showPercent = $event)),
label: '\u767E\u5206\u6BD4',
},
null,
8,
['modelValue']
),
createElementVNode('span', _hoisted_8$1w, [
_hoisted_9$1q,
createVNode$1(
_component_el_input_number,
{
class: 'tag-input cms-el-input-number-x',
placeholder: '\u8BF7\u8F93\u5165',
'controls-position': 'right',
modelValue: unref(tagConfig).precision,
'onUpdate:modelValue':
_cache[7] ||
(_cache[7] = ($event) =>
(unref(tagConfig).precision = $event)),
},
null,
8,
['modelValue']
),
]),
createElementVNode('span', _hoisted_10$1m, [
_hoisted_11$1e,
createVNode$1(
_component_el_select,
{
modelValue: unref(tagConfig).position,
'onUpdate:modelValue':
_cache[8] ||
(_cache[8] = ($event) =>
(unref(tagConfig).position = $event)),
class: 'cms-el-select-x',
placeholder: '\u8BF7\u9009\u62E9',
style: { width: '70px' },
'popper-class': 'cms-el-select__popper',
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
label: '\u4E0A',
value: 'top',
}),
createVNode$1(_component_el_option, {
label: '\u4E2D',
value: 'center',
}),
createVNode$1(_component_el_option, {
label: '\u4E0B',
value: 'bottom',
}),
]),
_: 1,
},
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_12$1b, [
_hoisted_13$13,
_hoisted_14$Z,
createVNode$1(
_component_el_input_number,
{
style: { width: '80px' },
class: 'cms-el-input-number-x',
'controls-position': 'right',
modelValue: unref(tagConfig).rotate,
'onUpdate:modelValue':
_cache[9] ||
(_cache[9] = ($event) =>
(unref(tagConfig).rotate = $event)),
precision: 0,
},
null,
8,
['modelValue']
),
_hoisted_15$W,
]),
]),
]),
_: 1,
}
),
createVNode$1(
SettingItem$1,
{ title: '\u8FDB\u5EA6' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_16$V, [
createElementVNode('div', _hoisted_17$P, [
_hoisted_18$J,
createElementVNode('div', _hoisted_19$G, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
modelValue: __props2.props.defaultColor,
'onUpdate:modelValue':
_cache[10] ||
(_cache[10] = ($event) =>
(__props2.props.defaultColor = $event)),
},
null,
8,
['predefine', 'modelValue']
),
]),
]),
]),
]),
_: 1,
}
),
createVNode$1(
SettingItem$1,
{ title: '\u72B6\u6001\u5207\u6362' },
{
default: withCtx(() => [
createVNode$1(
Condition,
{
node: $props2.node,
'case-list': conditions.value,
},
null,
8,
['node', 'case-list']
),
]),
_: 1,
}
),
unref(expConfig).visible
? (openBlock(),
createBlock(
FormulaConfigDialog$2,
{
key: 0,
modelValue: unref(expConfig).visible,
'onUpdate:modelValue':
_cache[11] ||
(_cache[11] = ($event) =>
(unref(expConfig).visible = $event)),
code: expCode.value,
onChange: updateExpression,
},
null,
8,
['modelValue', 'code']
))
: createCommentVNode('', true),
])
)
}
},
})
var Progress_settings = /* @__PURE__ */ _export_sfc(_sfc_main$3N, [
['__scopeId', 'data-v-61de8761'],
])
var __glob_1_7 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Progress_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Progress_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$3u = { class: 'progress-line' }
const _hoisted_2$35 = ['aria-valuenow']
const _hoisted_3$2R = { class: 'el-progress-bar' }
const _hoisted_4$2r = { class: 'el-progress-bar__outer' }
const _sfc_main$3M = /* @__PURE__ */ defineComponent({
props: {
editing: { type: Boolean },
running: { type: Boolean },
node: null,
props: null,
},
setup(__props2) {
const $props2 = __props2
useCssVars((_ctx) => ({
dcb0015e: borderWidth.value,
}))
const isNumber2 = (input) => {
return typeof input === 'number' && !isNaN(input)
}
const nodeProps = reactive($props2.props)
const conditionStyle = useConditionStyle($props2)
const barStyle = computed(() => {
let style2 = { width: `${percentValue.value}%` }
if (conditionStyle.value && conditionStyle.value.background) {
Object.assign(style2, conditionStyle.value.background)
}
return style2
})
const currentValue = computed(() => {
try {
const exp = nodeProps.exp
const value2 = Variable.exp(exp)
return value2
} catch (error2) {
return false
}
})
const targetValue = computed(() => {
try {
const exp = nodeProps.target.exp
const value2 = Variable.exp(exp)
return value2
} catch (error2) {
return false
}
})
const percentValue = computed(() => {
const { exp, target: target2 } = nodeProps
if (
!isNumber2(currentValue.value) ||
!isNumber2(targetValue.value) ||
targetValue.value == 0
)
return 0
if (exp && target2.exp) {
const output = currentValue.value / targetValue.value
const n2 = output * 100
const value2 = Number(n2.toFixed(Number(nodeProps.tagConfig.precision)))
const t3 = value2 >= 100 ? 100 : value2
return isNaN(t3) ? 0 : t3
}
return 0
})
const tagText = computed(() => {
const { showPercent, showNumber, unit, precision } = nodeProps.tagConfig
if (
!isNumber2(currentValue.value) ||
!isNumber2(targetValue.value) ||
targetValue.value == 0
)
return '--'
const currentValueToFixed = currentValue.value.toFixed(precision)
const percentValueToFixed = percentValue.value.toFixed(precision)
if (conditionStyle.value.text) {
return conditionStyle.value.text
}
if (showPercent && showNumber) {
return `${currentValueToFixed}${unit}(${percentValueToFixed}%)`
}
if (showPercent) {
return `${percentValueToFixed}%`
}
if (showNumber) {
return `${currentValueToFixed}${unit}`
}
return ''
})
const tagStyle = computed(() => {
const color2 = conditionStyle.value.color
const rotate2 = nodeProps.tagConfig.rotate
let style2 = {}
if (color2) {
style2.color = color2
}
if (rotate2) {
style2.transform = `rotateZ(${rotate2}deg)`
}
return style2
})
const position2 = computed(() => {
return nodeProps.tagConfig.position
})
const isBling = computed(() => {
return conditionStyle.value.bling
})
const borderWidth = computed(() => {
return $props2.node.style.borderWidth || '8px'
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$3u, [
createElementVNode(
'div',
{
class: 'el-progress el-progress--line el-progress--without-text',
role: 'progressbar',
'aria-valuenow': percentValue.value,
'aria-valuemin': '0',
'aria-valuemax': '100',
},
[
createElementVNode('div', _hoisted_3$2R, [
createElementVNode('div', _hoisted_4$2r, [
createElementVNode(
'div',
{
class: 'el-progress-bar__inner',
style: normalizeStyle$1(barStyle.value),
},
null,
4
),
]),
]),
],
8,
_hoisted_2$35
),
createElementVNode(
'span',
{
class: normalizeClass([
'tag',
'tag-' + position2.value,
{ 'bling-fast': isBling.value },
]),
style: normalizeStyle$1(tagStyle.value),
},
toDisplayString$1(tagText.value),
7
),
])
)
}
},
})
var Progress = /* @__PURE__ */ _export_sfc(_sfc_main$3M, [
['__scopeId', 'data-v-7fb5642e'],
])
var __glob_1_8 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Progress,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const getChartNodes = () => {
let nodes = getChildNodes(getRootNode())
let chartNodes = nodes.filter((item2) => {
if (item2.is)
return /^Chart/.test(item2.is) && item2.is !== 'ChartLineTrendConfig'
})
let chartList = []
chartNodes.forEach((item2) => {
let data2 = {
...item2,
value: item2.id,
label: item2.name,
}
chartList.push(data2)
})
return chartList
}
var ControllerCharts_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$20 = (n2) => (
pushScopeId('data-v-3fc5c1dc'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3t = { class: 'controller-charts' }
const _hoisted_2$34 = { class: 'function_items_btn' }
const _hoisted_3$2Q = { class: 'title' }
const _hoisted_4$2q = /* @__PURE__ */ _withScopeId$20(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u5173\u8054\u56FE\u8868',
-1
)
)
const _hoisted_5$2a = { class: 'wrap_send' }
const _hoisted_6$1X = { class: 'centent' }
const _hoisted_7$1F = { class: 'centent-item left' }
const _hoisted_8$1v = /* @__PURE__ */ _withScopeId$20(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u9009\u62E9\u56FE\u8868\uFF1A',
-1
)
)
const _hoisted_9$1p = { class: 'centent-box' }
const _hoisted_10$1l = { class: 'all-checkbox' }
const _hoisted_11$1d = /* @__PURE__ */ createTextVNode('\u5168\u9009')
const _hoisted_12$1a = { class: 'el-dialog__footer el-dialog__footer1' }
const _sfc_main$3L = /* @__PURE__ */ defineComponent({
props: {
selectChartDataList: null,
dialogTitle: null,
},
emits: ['confirm'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
let visible = ref(false)
let checkAll = ref(false)
let isIndeterminate = ref(false)
let chartDataList = ref([])
let chartList = ref([])
let checkedEcharts = ref([])
const handleCheckAllChange = (val2) => {
checkedEcharts.value = []
if (val2) {
chartList.value.forEach((item2) => {
checkedEcharts.value.push(item2.value)
})
}
isIndeterminate.value = false
}
const handleCheckedChange = (value2) => {
const checkedCount = value2.length
checkAll.value =
checkedCount === chartList.value.length && chartList.value.length > 0
isIndeterminate.value =
checkedCount > 0 && checkedCount < chartList.value.length
}
const getChartDataList = (list2) => {
chartDataList.value = []
list2.forEach((item2) => {
for (let key2 in chartList.value) {
let chartData = chartList.value[key2]
if (chartData.value == item2) {
let data2 = {
id: chartData.id,
name: chartData.name,
is: chartData.is,
}
chartDataList.value.push(data2)
return
}
}
})
}
const confirm2 = () => {
visible.value = false
emit2('confirm', chartDataList.value)
}
watch$1(
() => checkedEcharts.value,
(n2) => {
getChartDataList(n2)
},
{
deep: true,
}
)
watch$1(
() => visible.value,
() => {
if (visible.value) {
checkedEcharts.value = []
$props2.selectChartDataList.forEach((item2) => {
checkedEcharts.value.push(item2.id.toString())
})
chartList.value = getChartNodes().filter((item2) => {
return item2.props.dataConfig.dataType !== 2
})
handleCheckedChange(checkedEcharts.value)
}
},
{
deep: true,
}
)
onMounted(() => {})
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_checkbox_group = resolveComponent('el-checkbox-group')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', _hoisted_1$3t, [
createElementVNode('div', _hoisted_2$34, [
createElementVNode('div', _hoisted_3$2Q, [
_hoisted_4$2q,
createElementVNode('i', {
class: 'iconfont icon-bianjigongcheng',
onClick:
_cache[0] ||
(_cache[0] = withModifiers(
($event) => (visible.value = true),
['stop']
)),
}),
]),
createElementVNode('div', _hoisted_5$2a, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList($props2.selectChartDataList, (item2, index2) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'wrap_send_item',
key: index2,
},
[
createElementVNode(
'div',
null,
toDisplayString$1(item2.name),
1
),
]
)
)
}),
128
)),
]),
]),
createVNode$1(
_component_el_dialog,
{
'append-to-body': '',
'model-value': visible.value,
width: '630px',
top: '26vh',
title: __props2.dialogTitle,
'custom-class': 'cms-el-dialog',
'destroy-on-close': true,
onClose:
_cache[4] || (_cache[4] = ($event) => (visible.value = false)),
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_6$1X, [
createElementVNode('div', _hoisted_7$1F, [
_hoisted_8$1v,
createElementVNode('div', _hoisted_9$1p, [
createElementVNode('div', _hoisted_10$1l, [
createVNode$1(
_component_el_checkbox,
{
class: 'cms-el-checkbox',
modelValue: checkAll.value,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(checkAll.value = $event)),
indeterminate: isIndeterminate.value,
onChange: handleCheckAllChange,
},
{
default: withCtx(() => [_hoisted_11$1d]),
_: 1,
},
8,
['modelValue', 'indeterminate']
),
]),
createVNode$1(
_component_el_checkbox_group,
{
class: 'checkbox-group',
modelValue: checkedEcharts.value,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(checkedEcharts.value = $event)),
onChange: handleCheckedChange,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(chartList.value, (item2) => {
return (
openBlock(),
createElementBlock(
'div',
{
key: item2.value,
class: 'check-item',
},
[
createVNode$1(
_component_el_checkbox,
{
class: 'cms-el-checkbox',
label: item2.value,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(item2.label),
1
),
]),
_: 2,
},
1032,
['label']
),
]
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
]),
]),
createElementVNode('div', _hoisted_12$1a, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick:
_cache[3] ||
(_cache[3] = ($event) => (visible.value = false)),
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: confirm2,
},
'\u786E\u8BA4'
),
]),
]),
_: 1,
},
8,
['model-value', 'title']
),
])
)
}
},
})
var ControllerCharts = /* @__PURE__ */ _export_sfc(_sfc_main$3L, [
['__scopeId', 'data-v-3fc5c1dc'],
])
var ControllerCharts$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ControllerCharts,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _sfc_main$3K = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const props2 = reactive($props2.node.props)
props2.selectChartDataList = props2.selectChartDataList || []
const confirm2 = (chartDataList) => {
props2.selectChartDataList = chartDataList
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
SettingItem$1,
{ title: '\u529F\u80FD' },
{
default: withCtx(() => [
createVNode$1(
ControllerCharts,
{
dialogTitle: '\u521B\u5EFA\u67E5\u8BE2\u6309\u94AE',
selectChartDataList: unref(props2).selectChartDataList,
onConfirm: confirm2,
},
null,
8,
['selectChartDataList']
),
createVNode$1(
ConfirmBoxSetting,
{
confirmBoxConfig: unref(props2).confirmBoxConfig,
},
null,
8,
['confirmBoxConfig']
),
]),
_: 1,
}
),
])
)
}
},
})
var __glob_1_9 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$3K,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _sfc_main$3J = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const props2 = reactive($props2.node.props)
const node2 = reactive($props2.node)
const text2 = '\u67E5\u8BE2'
node2.setDefaultProps({
text: text2,
editingClickEnabled: true,
confirmBoxConfig: {
check: false,
message: '',
},
})
node2.props.text = node2.props.text || text2
const emitQuery = () => {
let detail = {
controllerId: $props2.node.id,
relativeList: props2.selectChartDataList.map((chart2) => ({
chartId: chart2.id,
})),
}
emit(ControllerEventType.CHART_DATA, detail)
}
onBeforeUnmount(() => {
emit(ControllerEventType.DESTROY_CONTROLLER, {
controllerId: $props2.node.id,
})
})
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
Button,
mergeProps($props2, { onClick: emitQuery }),
null,
16
)
)
}
},
})
var __glob_1_10 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$3J,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var OptionsTable_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$1$ = (n2) => (
pushScopeId('data-v-40772efd'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3s = { class: 'options-table' }
const _hoisted_2$33 = { class: 'header' }
const _hoisted_3$2P = /* @__PURE__ */ _withScopeId$1$(() =>
/* @__PURE__ */ createElementVNode('label', null, '\u9009\u9879\uFF1A', -1)
)
const _hoisted_4$2p = { class: 'header-func' }
const _hoisted_5$29 = /* @__PURE__ */ _withScopeId$1$(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
title: '\u6DFB\u52A0',
class: 'iconfont icon-tianjiahuamian',
},
null,
-1
)
)
const _hoisted_6$1W = [_hoisted_5$29]
const _hoisted_7$1E = /* @__PURE__ */ _withScopeId$1$(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-paixu btn-move drag-btn' },
null,
-1
)
)
const _hoisted_8$1u = /* @__PURE__ */ _withScopeId$1$(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u503C', -1)
)
const _hoisted_9$1o = { class: 'expression-value' }
const _hoisted_10$1k = { class: 'edit-dialog' }
const _hoisted_11$1c = /* @__PURE__ */ _withScopeId$1$(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'edit-header' },
[
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'edit-options' },
'\u8F93\u5165\u9009\u9879\u53CA\u503C'
),
/* @__PURE__ */ createElementVNode(
'label',
{ class: 'edit-info' },
'\uFF08\u6BCF\u884C1\u7EC4\uFF0C\u9009\u9879\u548C\u503C\u7528\u82F1\u6587\u9017\u53F7\u5206\u9694\uFF09'
),
],
-1
)
)
const _hoisted_12$19 = { class: 'edit-input-content' }
const _hoisted_13$12 = { class: 'el-dialog__footer' }
const _sfc_main$3I = /* @__PURE__ */ defineComponent({
props: {
modelValue: {
type: Array,
default: () => [],
},
},
emits: ['update:modelValue'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const xTable = ref()
const current2 = ref(null)
const visible = ref(false)
let moveable = true
let updateRows = []
const options2 = computed({
get() {
return $props2.modelValue
},
set(v4) {
emit2('update:modelValue', v4)
},
})
const optionValue = ref('')
const onDelete = () => {
options2.value = options2.value.filter(
(item2) => item2 !== current2.value
)
}
const currentChangeEvent = (data2) => {
current2.value = data2.row
}
const createRandomNum2 = (v4) =>
Math.random()
.toString()
.slice(v4 || -3)
const onAddData = () => {
const l2 = createRandomNum2()
options2.value = options2.value.concat({
label: '\u9009\u9879' + l2,
expression: '',
})
}
const openDialog2 = () => {
const data2 = options2.value.map((item2) => {
return item2.label + ',' + item2.expression
})
optionValue.value = data2.join('\n')
}
const confirm2 = () => {
try {
options2.value = optionValue.value.split('\n').map((str) => {
const [label, expression = ''] = str.split(',')
return {
label,
expression,
}
})
visible.value = false
} catch (error2) {
ElMessage.error(
'\u8BF7\u8F93\u5165\u683C\u5F0F\u6B63\u786E\u7684\u503C'
)
}
}
onMounted(() => {
sortableInit()
})
const sortableInit = () => {
const $table = xTable.value
if (!$table?.$el) return
Sortable.create(
$table.$el.querySelector(
'.drag-table-select .body--wrapper>.vxe-table--body tbody'
),
{
handle: '.drag-btn',
chosenClass: 'sortable-chosen',
swapThreshold: 1,
animation: 150,
onEnd: (sortableEvent) => {
if (!moveable) return ElMessage.error('\u79FB\u52A8\u5931\u8D25')
const newIndex2 = sortableEvent.newIndex
const oldIndex2 = sortableEvent.oldIndex
const currRow = options2.value.splice(oldIndex2, 1)[0]
options2.value.splice(newIndex2, 0, currRow)
},
onMove: function () {
moveable = true
const addRows = options2.value.filter((level) => level.is_new)
if (addRows.length || updateRows.length) {
moveable = false
return false
}
},
}
)
}
return (_ctx, _cache) => {
const _component_vxe_column = resolveComponent('vxe-column')
const _component_el_input = resolveComponent('el-input')
const _component_vxe_table = resolveComponent('vxe-table')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', _hoisted_1$3s, [
createElementVNode('div', _hoisted_2$33, [
_hoisted_3$2P,
createElementVNode('span', _hoisted_4$2p, [
createElementVNode(
'div',
{
class: 'add',
onClick: onAddData,
},
_hoisted_6$1W
),
createElementVNode('i', {
title: '\u6279\u91CF\u7F16\u8F91',
onClick:
_cache[0] || (_cache[0] = ($event) => (visible.value = true)),
class: 'iconfont icon-shezhi edit',
}),
]),
]),
createVNode$1(
_component_vxe_table,
{
border: '',
size: 'small',
ref_key: 'xTable',
ref: xTable,
class: 'cms-vxe-table settings-table drag-table-select',
'max-height': '200',
'show-overflow': 'tooltip',
'row-config': { isHover: true, isCurrent: true, keyField: 'id' },
data: unref(options2),
onCurrentChange: currentChangeEvent,
},
{
default: withCtx(() => [
createVNode$1(
_component_vxe_column,
{
width: '45',
title: '',
align: 'center',
},
{
default: withCtx(() => [_hoisted_7$1E]),
_: 1,
}
),
createVNode$1(
_component_vxe_column,
{
field: 'label',
title: '\u9009\u9879',
width: '90',
},
{
default: withCtx(({ row }) => [
createVNode$1(
_component_el_input,
{
modelValue: row.label,
'onUpdate:modelValue': ($event) =>
(row.label = $event),
class: 'cms-el-input-x option-input',
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
]),
_: 1,
}
),
createVNode$1(
_component_vxe_column,
{
field: 'expression',
title: '\u503C',
},
{
header: withCtx(() => [
createElementVNode('div', { class: 'header-body' }, [
_hoisted_8$1u,
createElementVNode('i', {
onClick: onDelete,
title: '\u5220\u9664',
class: 'iconfont icon-tupianshanchu icon',
style: { color: '#a45769' },
}),
]),
]),
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_9$1o, [
createVNode$1(
ExpressionFn,
{
isStrut: '',
expression: row.expression,
'onUpdate:expression': ($event) =>
(row.expression = $event),
},
null,
8,
['expression', 'onUpdate:expression']
),
]),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['data']
),
createVNode$1(
_component_el_dialog,
{
'append-to-body': '',
modelValue: visible.value,
'onUpdate:modelValue':
_cache[3] || (_cache[3] = ($event) => (visible.value = $event)),
width: '592px',
top: '26vh',
title: '\u7F16\u8F91\u9009\u9879',
'custom-class': 'cms-el-dialog',
onOpen: openDialog2,
onClose:
_cache[4] || (_cache[4] = ($event) => (visible.value = false)),
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_10$1k, [
_hoisted_11$1c,
createElementVNode('div', _hoisted_12$19, [
createVNode$1(
_component_el_input,
{
class: 'edit-textarea',
modelValue: optionValue.value,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(optionValue.value = $event)),
type: 'textarea',
placeholder:
'\u8BF7\u8F93\u5165\u8F93\u5165\u9009\u9879\u53CA\u503C',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_13$12, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick:
_cache[2] ||
(_cache[2] = ($event) => (visible.value = false)),
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: confirm2,
},
'\u786E\u8BA4'
),
]),
]),
]),
_: 1,
},
8,
['modelValue']
),
])
)
}
},
})
var OptionsTable = /* @__PURE__ */ _export_sfc(_sfc_main$3I, [
['__scopeId', 'data-v-40772efd'],
])
var OptionsTable$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: OptionsTable,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var RadioControl_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$3r = { class: 'options-table' }
const _sfc_main$3H = /* @__PURE__ */ defineComponent({
props: {
options: {
type: Array,
default: () => [],
},
variable: {
type: String,
default: '',
},
btnStyle: {
type: Object,
default: () => ({}),
},
},
emits: ['update'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const variable = computed({
get() {
return $props2.variable
},
set(v4) {
emit2('update', { variable: v4 })
},
})
const options2 = computed({
get() {
return $props2.options
},
set(v4) {
emit2('update', { options: v4 })
},
})
const btnStyle = computed({
get() {
return $props2.btnStyle
},
set(v4) {
emit2('update', { btnStyle: v4 })
},
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$3r, [
createVNode$1(
_sfc_main$72,
{ title: '\u529F\u80FD' },
{
default: withCtx(() => [
createVNode$1(
RelationVariable,
{
modelValue: variable.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (variable.value = $event)),
},
null,
8,
['modelValue']
),
createVNode$1(
OptionsTable,
{
modelValue: options2.value,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) => (options2.value = $event)),
},
null,
8,
['modelValue']
),
]),
_: 1,
}
),
createVNode$1(
_sfc_main$72,
{ title: '\u6309\u94AE' },
{
default: withCtx(() => [
createVNode$1(
ButtonStyle,
{
modelValue: btnStyle.value,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) => (btnStyle.value = $event)),
},
null,
8,
['modelValue']
),
]),
_: 1,
}
),
])
)
}
},
})
var RadioControl_settings = /* @__PURE__ */ _export_sfc(_sfc_main$3H, [
['__scopeId', 'data-v-1f569914'],
])
var __glob_1_11 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: RadioControl_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const useCommonFn = ($props2, defaultValue, defaultText) => {
const getOptionValue = (item2) => {
if (item2.expression) {
const value2 = Expression.getValue(item2.expression)
if (isNil_1(value2)) return ''
return value2
}
return item2.label
}
const getVariable = () => {
const v4 = Variable.store[$props2.variable]
return !isNil_1(v4) ? v4.toString() : ''
}
const options2 = computed(() => {
$props2.options.forEach((item2) => {
item2.value = getOptionValue(item2).toString()
})
return $props2.options.filter((item2) => item2.label)
})
const getOption = (v4) => {
return options2.value.find((item2) => {
if (item2.expression) {
return item2.value === v4
}
return item2.label === v4
})
}
const getValueByVariable = () => {
const variable = getVariable()
const option2 = getOption(variable)
return option2 ? option2.value : void 0
}
const setValue = (option2) => {
if (!app.editing) {
Variable.store[$props2.variable] = option2?.value
} else {
defaultValue.value = option2?.value
}
}
const getComputeSet = () => {
return {
get() {
const v4 = defaultValue.value || getValueByVariable()
if (!isNil_1(v4)) return v4.toString()
if (defaultText?.value) return defaultText.value
},
set(v4) {
const option2 = getOption(v4)
defaultValue.value = ''
if ($props2.variable && option2?.expression) {
return setValue(option2)
}
defaultValue.value = v4
},
}
}
const controlValue = computed(getComputeSet())
const getValueToVariable = (variableName2) => {
Variable.store[variableName2] = controlValue.value || ''
}
return {
getComputeSet,
getValueToVariable,
getOptionValue,
controlValue,
options: options2,
}
}
var RadioControl_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$3q = ['t']
const _sfc_main$3G = /* @__PURE__ */ defineComponent({
props: {
options: {
type: Array,
default: () => [],
},
variable: {
type: String,
default: '',
},
node: {
type: Object,
default: () => ({}),
},
btnStyle: {
type: Object,
default: () => ({}),
},
},
emits: ['change'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
useCssVars((_ctx) => ({
'7206b2ff': size.value,
'7941f480': $props2.btnStyle.backgroundColor,
'1bd8e339': innerSize.value,
'55a88333': $props2.btnStyle.selectedColor,
}))
const defaultValue = ref('')
const {
getValueToVariable,
controlValue,
options: options2,
} = useCommonFn($props2, defaultValue)
const node2 = reactive($props2.node)
const onChange = (val2) => {
emit2('change', {
target: {
value: val2,
},
})
}
const size = computed(() => {
return $props2.btnStyle.size + 'px'
})
const innerSize = computed(() => {
const size2 = $props2.btnStyle.size
const times = size2 / 18
return 6 * times + 'px'
})
const collectText2 = () => {
options2.value.forEach((item2) => {
t(item2.label)
})
}
node2.methods.getValueToVariable = getValueToVariable
return (_ctx, _cache) => {
const _component_el_radio = resolveComponent('el-radio')
const _component_el_radio_group = resolveComponent('el-radio-group')
return (
openBlock(),
createElementBlock(
'div',
{
class: 'radio-content',
t: collectText2(),
},
[
createVNode$1(
_component_el_radio_group,
{
modelValue: unref(controlValue),
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
isRef(controlValue) ? (controlValue.value = $event) : null),
onChange,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(options2), (item2) => {
return (
openBlock(),
createBlock(
_component_el_radio,
{
label: item2.value,
key: item2.value,
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(_ctx.t(item2.label)),
1
),
]),
_: 2,
},
1032,
['label']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
],
8,
_hoisted_1$3q
)
)
}
},
})
var RadioControl = /* @__PURE__ */ _export_sfc(_sfc_main$3G, [
['__scopeId', 'data-v-49c73bbb'],
])
var __glob_1_12 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: RadioControl,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var OptionConfigDialog_vue_vue_type_style_index_0_scoped_true_lang = ''
var OptionConfigDialog_vue_vue_type_style_index_1_scoped_true_lang = ''
var OptionConfigDialog_vue_vue_type_style_index_2_lang = ''
const _withScopeId$1_ = (n2) => (
pushScopeId('data-v-960ad8e2'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3p = { class: 'dialog-body' }
const _hoisted_2$32 = /* @__PURE__ */ _withScopeId$1_(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'header' },
[
/* @__PURE__ */ createTextVNode(' \u8F93\u5165\u9009\u9879\u53CA\u503C '),
/* @__PURE__ */ createElementVNode(
'span',
null,
'\uFF08\u6BCF\u884C1\u7EC4\uFF0C\u9009\u9879\u548C\u503C\u7528\u82F1\u6587\u9017\u53F7\u5206\u9694\uFF09'
),
],
-1
)
)
const _hoisted_3$2O = { class: 'row mb' }
const _hoisted_4$2o = { class: 'col' }
const _hoisted_5$28 = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_6$1V = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$3F = /* @__PURE__ */ defineComponent({
props: {
code: {
type: String,
default: '',
},
},
emits: ['update:modelValue', 'update:code', 'change'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
let code2 = ref('')
const reset2 = () => {
code2.value = props2.code || ''
}
watch$1(
() => props2.code,
() => {
code2.value = props2.code || ''
},
{ immediate: true }
)
async function change2() {
emit2('update:code', code2.value)
emit2('change', code2.value)
close2()
}
function close2() {
emit2('update:modelValue', false)
reset2()
}
return (_ctx, _cache) => {
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': true,
'close-on-click-modal': false,
'destroy-on-close': true,
title: '\u7F16\u8F91\u9009\u9879',
'custom-class': 'cms-el-dialog',
width: '661px',
onClose: close2,
},
{
footer: withCtx(() => [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: close2,
},
{
default: withCtx(() => [_hoisted_5$28]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: change2,
},
{
default: withCtx(() => [_hoisted_6$1V]),
_: 1,
}
),
]),
default: withCtx(() => [
createElementVNode('div', _hoisted_1$3p, [
_hoisted_2$32,
createElementVNode('div', _hoisted_3$2O, [
createElementVNode('div', _hoisted_4$2o, [
createVNode$1(
InputCode,
{
ref: 'inputCode',
modelValue: code2.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (code2.value = $event)),
},
null,
8,
['modelValue']
),
]),
]),
]),
]),
_: 1,
}
)
)
}
},
})
var OptionConfigDialog = /* @__PURE__ */ _export_sfc(_sfc_main$3F, [
['__scopeId', 'data-v-960ad8e2'],
])
var __glob_1_13 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: OptionConfigDialog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Select_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$1Z = (n2) => (
pushScopeId('data-v-dbb4428e'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3o = { class: 'set-item' }
const _hoisted_2$31 = /* @__PURE__ */ createTextVNode('\u81EA\u5B9A\u4E49')
const _hoisted_3$2N = /* @__PURE__ */ createTextVNode(
'\u5173\u8054\u5B57\u6BB5'
)
const _hoisted_4$2n = { class: 'table' }
const _hoisted_5$27 = { class: 'flex' }
const _hoisted_6$1U = /* @__PURE__ */ _withScopeId$1Z(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-paixu btn-move',
style: { 'padding-left': '6px' },
},
null,
-1
)
)
const _hoisted_7$1D = { class: 'text-argument-view' }
const _hoisted_8$1t = { class: 'flex-full input-group arg-value' }
const _hoisted_9$1n = ['onUpdate:modelValue']
const _hoisted_10$1j = ['onClick']
const _hoisted_11$1b = /* @__PURE__ */ _withScopeId$1Z(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-bianjigongcheng',
style: { color: '#7e7e7f' },
},
null,
-1
)
)
const _hoisted_12$18 = [_hoisted_11$1b]
const _hoisted_13$11 = { class: 'table-icon' }
const _hoisted_14$Y = { class: 'content' }
const _hoisted_15$V = /* @__PURE__ */ _withScopeId$1Z(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u6570\u636E\u96C6\u9009\u62E9:',
-1
)
)
const _hoisted_16$U = { class: 'content' }
const _hoisted_17$O = /* @__PURE__ */ _withScopeId$1Z(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u9009\u62E9\u5B57\u6BB5:',
-1
)
)
const _hoisted_18$I = { class: 'content' }
const _hoisted_19$F = { class: 'limit' }
const _hoisted_20$D = /* @__PURE__ */ _withScopeId$1Z(() =>
/* @__PURE__ */ createElementVNode(
'div',
null,
'\u6700\u5927\u6570\u636E\u91CF:',
-1
)
)
const _hoisted_21$v = { class: 'limit-content limit-editing' }
const _hoisted_22$t = /* @__PURE__ */ _withScopeId$1Z(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u7F16\u8F91\u6A21\u5F0F',
-1
)
)
const _hoisted_23$q = { class: 'limit-content limit-running' }
const _hoisted_24$q = /* @__PURE__ */ _withScopeId$1Z(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u8FD0\u884C\u6A21\u5F0F',
-1
)
)
const _hoisted_25$l = { class: 'content' }
const _hoisted_26$k = /* @__PURE__ */ _withScopeId$1Z(() =>
/* @__PURE__ */ createElementVNode(
'span',
{
class: 'title',
style: { color: '#949494' },
},
'\u63D0\u793A\u6587\u672C',
-1
)
)
const _sfc_main$3E = /* @__PURE__ */ defineComponent({
props: {
editing: { type: Boolean },
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
const props2 = reactive(node2.props)
const xTable = ref({})
const treeRef = ref()
const state2 = reactive({
dataSetList: [],
fieldList: [],
options: [],
currRow: {},
expConfig: {
visible: false,
value: '',
},
optionConfig: {
visible: false,
value: '',
},
})
const getData = () => {
const loop = (list2) => {
for (let i2 = 0; i2 < list2.length; i2++) {
let item2 = list2[i2]
item2.value = item2.id
item2.disabled = item2.nodeType === 1 ? true : false
if (item2.children && item2.children.length) loop(item2.children)
}
}
request({
url: `/api/v1/dataconfig/tree`,
method: 'get',
silent: true,
})
.then((res) => {
if (res && res.length) {
loop(res)
state2.dataSetList = res
if (props2.dataSetId) {
nextTick(() => {
if (treeRef.value) {
const currentNode = treeRef.value.getNode(props2.dataSetId)
if (currentNode) selectDataSet(currentNode.data)
}
})
}
}
})
.catch((err) => {
console.error('err', err)
})
}
const selectDataSet = async (node22) => {
if (node22.nodeType === 0 || node22.nodeType === 1) {
props2.dataSetId = ''
treeRef.value.setCheckedKeys([], false)
return
}
props2.dataSetId = node22.id
state2.fieldList = await fetchDataSetFieldList(node22.id, node22.nodeType)
}
function initSortable(className) {
const tables = document.querySelector(
'.' + className + ' .vxe-table--body tbody'
)
Sortable.create(tables, {
animation: 150,
disabled: false,
handle: '.btn-move',
filter: '.disabled',
onEnd: ({ newIndex: newIndex2, oldIndex: oldIndex2 }) => {
const currRow = props2.tableData.splice(oldIndex2, 1)[0]
props2.tableData.splice(newIndex2, 0, currRow)
},
})
}
const currentChangeEvent = ({ rowIndex }) => {
state2.currRow = {
row: xTable.value.getCurrentRecord(),
rowIndex,
}
}
const addRow = () => {
props2.tableData.push({})
xTable.value.loadData(props2.tableData)
}
const delRow = (row, rowIndex) => {
xTable.value.clearCurrentRow()
state2.currRow = {}
props2.tableData.splice(rowIndex, 1)
xTable.value.loadData(props2.tableData)
}
const editRow = (row) => {
state2.expConfig.value = String(row.value || '')
state2.expConfig.visible = true
}
const confirm2 = (val2) => {
props2.tableData[state2.currRow.rowIndex].value = val2
xTable.value.loadData(props2.tableData)
}
const showOptionConfigDialog = () => {
state2.optionConfig.value = props2.tableData.map(
(e2) => `${e2.label ?? ''},${e2.value ?? ''}`
).join(`
`)
state2.optionConfig.visible = true
}
const optionConfigConfirm = (val2) => {
props2.tableData = val2
.split('\n')
.filter((e2) => e2)
.map((e2) => {
const [label, value2] = e2.split(',')
return {
label,
value: value2,
}
})
xTable.value.loadData(props2.tableData)
}
onMounted(() => {
getData()
initSortable('drag-table')
})
const update3 = (e2) => {
e2.stopPropagation()
}
return (_ctx, _cache) => {
const _component_el_radio = resolveComponent('el-radio')
const _component_el_radio_group = resolveComponent('el-radio-group')
const _component_el_input = resolveComponent('el-input')
const _component_vxe_column = resolveComponent('vxe-column')
const _component_vxe_table = resolveComponent('vxe-table')
const _component_el_tree_select = resolveComponent('el-tree-select')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input_number = resolveComponent('el-input-number')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
SettingItem$1,
{ title: '\u529F\u80FD' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$3o, [
createVNode$1(
_component_el_radio_group,
{
class: 'radio-group',
modelValue: unref(props2).optionType,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(props2).optionType = $event)),
},
{
default: withCtx(() => [
createVNode$1(
_component_el_radio,
{ label: 'custom' },
{
default: withCtx(() => [_hoisted_2$31]),
_: 1,
}
),
createVNode$1(
_component_el_radio,
{ label: 'correlation' },
{
default: withCtx(() => [_hoisted_3$2N]),
_: 1,
}
),
]),
_: 1,
},
8,
['modelValue']
),
withDirectives(
createElementVNode(
'div',
_hoisted_4$2n,
[
createElementVNode('div', { class: 'header' }, [
createElementVNode('i', {
class: 'iconfont icon-tianjiahuamian',
onClick: addRow,
}),
createElementVNode('i', {
class: 'iconfont icon-shezhi',
onClick: showOptionConfigDialog,
}),
]),
createVNode$1(
_component_vxe_table,
{
border: '',
size: 'small',
class: 'cms-vxe-table drag-table settings-table',
ref_key: 'xTable',
ref: xTable,
'show-overflow': 'tooltip',
data: unref(props2).tableData,
'row-config': {
isCurrent: true,
isHover: true,
keyField: 'id',
},
onCurrentChange: currentChangeEvent,
onUpdate: update3,
},
{
default: withCtx(() => [
createVNode$1(
_component_vxe_column,
{
field: 'label',
title: '\u9009\u9879',
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_5$27, [
_hoisted_6$1U,
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
modelValue: row.label,
'onUpdate:modelValue': ($event) =>
(row.label = $event),
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
]),
]),
_: 1,
}
),
createVNode$1(
_component_vxe_column,
{
field: 'value',
title: '\u503C',
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_7$1D, [
createElementVNode('div', _hoisted_8$1t, [
withDirectives(
createElementVNode(
'input',
{
'onUpdate:modelValue': ($event) =>
(row.value = $event),
class: 'text-input',
},
null,
8,
_hoisted_9$1n
),
[[vModelText, row.value]]
),
createElementVNode(
'button',
{
class: 'btn',
onClick: () => editRow(row),
},
_hoisted_12$18,
8,
_hoisted_10$1j
),
]),
]),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['data']
),
withDirectives(
createElementVNode(
'div',
_hoisted_13$11,
[
createElementVNode('i', {
class: 'iconfont icon-qingchu',
onClick:
_cache[1] ||
(_cache[1] = ($event) =>
delRow(
unref(state2).currRow.row,
unref(state2).currRow.rowIndex
)),
}),
],
512
),
[
[
vShow,
unref(state2).currRow &&
unref(state2).currRow.row,
],
]
),
],
512
),
[[vShow, unref(props2).optionType === 'custom']]
),
unref(props2).optionType === 'correlation'
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
createElementVNode('div', _hoisted_14$Y, [
_hoisted_15$V,
createVNode$1(
_component_el_tree_select,
{
ref_key: 'treeRef',
ref: treeRef,
'node-key': 'id',
class: 'cms-el-select-x data-tree-select',
'popper-class': 'cms-el-select_check',
modelValue: unref(props2).dataSetId,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(props2).dataSetId = $event)),
data: unref(state2).dataSetList,
'show-all-levels': false,
props: {
label: 'name',
disabled: false,
},
onNodeClick: selectDataSet,
persistent: '',
filterable: '',
},
null,
8,
['modelValue', 'data']
),
]),
createElementVNode('div', _hoisted_16$U, [
_hoisted_17$O,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
modelValue: unref(props2).fieldName,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(props2).fieldName = $event)),
filterable: '',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(state2).fieldList,
(field2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: field2.id,
label: field2.fieldName,
value: field2.fieldName,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_18$I, [
createElementVNode('div', _hoisted_19$F, [
_hoisted_20$D,
createElementVNode('div', _hoisted_21$v, [
_hoisted_22$t,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
'controls-position': 'right',
modelValue: unref(props2).editingLimit,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(props2).editingLimit = $event)),
min: 0,
max: 1e6,
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_23$q, [
_hoisted_24$q,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
'controls-position': 'right',
modelValue: unref(props2).runningLimit,
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) =>
(unref(props2).runningLimit = $event)),
min: 0,
max: 1e6,
},
null,
8,
['modelValue']
),
]),
]),
]),
],
64
))
: createCommentVNode('', true),
createElementVNode('div', _hoisted_25$l, [
_hoisted_26$k,
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
modelValue: unref(props2).placeholder,
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) =>
(unref(props2).placeholder = $event)),
placeholder:
'\u8BF7\u8F93\u5165\u63D0\u793A\u6587\u672C',
},
null,
8,
['modelValue']
),
]),
]),
createVNode$1(
FormulaConfigDialog$2,
{
modelValue: unref(state2).expConfig.visible,
'onUpdate:modelValue':
_cache[7] ||
(_cache[7] = ($event) =>
(unref(state2).expConfig.visible = $event)),
code: unref(state2).expConfig.value,
onChange: confirm2,
},
null,
8,
['modelValue', 'code']
),
createVNode$1(
OptionConfigDialog,
{
modelValue: unref(state2).optionConfig.visible,
'onUpdate:modelValue':
_cache[8] ||
(_cache[8] = ($event) =>
(unref(state2).optionConfig.visible = $event)),
code: unref(state2).optionConfig.value,
onChange: optionConfigConfirm,
},
null,
8,
['modelValue', 'code']
),
]),
_: 1,
}
),
])
)
}
},
})
var Select_settings = /* @__PURE__ */ _export_sfc(_sfc_main$3E, [
['__scopeId', 'data-v-dbb4428e'],
])
var __glob_1_14 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Select_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Select_vue_vue_type_style_index_0_scoped_true_lang = ''
var Select_vue_vue_type_style_index_1_lang = ''
const _hoisted_1$3n = ['t']
const _sfc_main$3D = /* @__PURE__ */ defineComponent({
props: {
editing: { type: Boolean },
node: null,
text: null,
},
emits: ['change', 'click'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const node2 = reactive($props2.node)
const props2 = reactive(node2.props)
let selectValue = ref('')
let options2 = ref([])
const collectText2 = () => {
props2.tableData.forEach((item2) => {
t(item2.label)
})
}
const getOptions = () => {
if (props2.optionType === 'custom') {
options2.value = props2.tableData
.filter((e2) => e2.label && e2.value)
.map((item2) => ({
...item2,
label: t(item2.label),
}))
} else if (props2.dataSetId && props2.fieldName) {
const limit2 = $props2.editing
? props2.editingLimit
: props2.runningLimit
request({
url: `/api/v1/data/columndatas?dataSetId=${props2.dataSetId}&fieldName=${props2.fieldName}&limit=${limit2}`,
method: 'get',
}).then((res) => {
let values2 = res.values
if (values2) {
options2.value = values2
.map((e2) => {
let result = e2
if (/^[0-9]+.[0-9]+$/.test(e2)) result = Number(e2)
return { label: result, value: result }
})
.filter((e2) => e2.label !== '' && e2.value !== '')
}
})
}
}
onMounted(getOptions)
const _getOptions = lodash$2.exports.debounce(() => getOptions(), 200, {
maxWait: 1e3,
})
watch$1(
[
() => props2.optionType,
() => props2.fieldName,
() => props2.editingLimit,
() => Language$1.isOriginal(),
],
_getOptions
)
watch$1(
() => props2.multipleValue,
() => {
selectValue.value = ''
},
{
deep: true,
}
)
watch$1(
() => state$6.current.zoom,
() => {
dropDownSelect.value.visible = false
}
)
const dropDownSelect = ref()
const click2 = (e2) => {
emit2('click', e2)
}
const change2 = (value2) => {
emit2('change', { target: { value: value2 } })
}
function getValueToVariable(variableName2) {
Variable.store[variableName2] = selectValue.value
}
node2.methods.getValueToVariable = getValueToVariable
const setValue = (val2) => {
selectValue.value = val2
}
node2.methods.setValue = setValue
return (_ctx, _cache) => {
const _component_el_select_v2 = resolveComponent('el-select-v2')
return (
openBlock(),
createElementBlock(
'div',
{
class: 'select-list',
t: collectText2(),
},
[
createVNode$1(
_component_el_select_v2,
{
modelValue: selectValue.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (selectValue.value = $event)),
class: 'select cms-el-select',
'popper-class': 'select-list-popper',
effect: '',
'collapse-tags': '',
'collapse-tags-tooltip': '',
clearable: '',
filterable: '',
ref_key: 'dropDownSelect',
ref: dropDownSelect,
'suffix-transition': false,
teleported: false,
options: options2.value,
placeholder: _ctx.t(unref(props2).placeholder),
onChange: change2,
onClick: click2,
},
null,
8,
['modelValue', 'options', 'placeholder']
),
],
8,
_hoisted_1$3n
)
)
}
},
})
var Select = /* @__PURE__ */ _export_sfc(_sfc_main$3D, [
['__scopeId', 'data-v-337d10f3'],
])
var __glob_1_15 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Select,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var SelectControl_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$1Y = (n2) => (
pushScopeId('data-v-9c54bc08'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3m = { class: 'options-table' }
const _hoisted_2$30 = { class: 'default-text' }
const _hoisted_3$2M = /* @__PURE__ */ _withScopeId$1Y(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u9ED8\u8BA4\u6587\u672C\uFF1A',
-1
)
)
const _sfc_main$3C = /* @__PURE__ */ defineComponent({
props: {
options: {
type: Array,
default: () => [],
},
variable: {
type: String,
default: '',
},
placeholder: {
type: String,
default: '',
},
},
emits: ['update'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const variable = computed({
get() {
return $props2.variable
},
set(v4) {
emit2('update', { variable: v4 })
},
})
const options2 = computed({
get() {
return $props2.options
},
set(v4) {
emit2('update', { options: v4 })
},
})
const placeholder = computed({
get() {
return $props2.placeholder
},
set(v4) {
emit2('update', { placeholder: v4 })
},
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
return (
openBlock(),
createElementBlock('div', _hoisted_1$3m, [
createVNode$1(
_sfc_main$72,
{ title: '\u529F\u80FD' },
{
default: withCtx(() => [
createVNode$1(
RelationVariable,
{
modelValue: unref(variable),
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
isRef(variable) ? (variable.value = $event) : null),
},
null,
8,
['modelValue']
),
createVNode$1(
OptionsTable,
{
modelValue: unref(options2),
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
isRef(options2) ? (options2.value = $event) : null),
},
null,
8,
['modelValue']
),
createElementVNode('div', _hoisted_2$30, [
_hoisted_3$2M,
createVNode$1(
_component_el_input,
{
class: 'input cms-el-input-x default-input',
placeholder: '\u8BF7\u8F93\u5165\u9ED8\u8BA4\u6587\u672C',
modelValue: unref(placeholder),
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
isRef(placeholder)
? (placeholder.value = $event)
: null),
},
null,
8,
['modelValue']
),
]),
]),
_: 1,
}
),
])
)
}
},
})
var SelectControl_settings = /* @__PURE__ */ _export_sfc(_sfc_main$3C, [
['__scopeId', 'data-v-9c54bc08'],
])
var __glob_1_16 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: SelectControl_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var SelectControl_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$3l = ['t']
const _sfc_main$3B = /* @__PURE__ */ defineComponent({
props: {
options: {
type: Array,
default: () => [],
},
variable: {
type: String,
default: '',
},
placeholder: {
type: String,
default: '',
},
node: {
type: Object,
default: () => ({}),
},
},
emits: ['change', 'click'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const placeholder = computed(() => t($props2.placeholder))
const defaultValue = ref('')
const {
getValueToVariable,
controlValue,
options: options2,
} = useCommonFn($props2, defaultValue, placeholder)
const node2 = reactive($props2.node)
const onChange = (val2) => {
emit2('change', {
target: {
value: val2,
},
})
}
const optionsData = computed(() => {
if (Language$1.isOriginal()) {
return options2.value
} else {
return options2.value.map((item2) => ({
...item2,
label: t(item2.label),
}))
}
})
const onClick = () => emit2('click')
const collectText2 = () => {
options2.value.forEach((item2) => {
t(item2.label)
})
t($props2.placeholder)
}
node2.methods.getValueToVariable = getValueToVariable
return (_ctx, _cache) => {
const _component_el_select_v2 = resolveComponent('el-select-v2')
return (
openBlock(),
createElementBlock(
'div',
{
class: 'drop-down-list',
t: collectText2(),
},
[
createVNode$1(
_component_el_select_v2,
{
modelValue: unref(controlValue),
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
isRef(controlValue) ? (controlValue.value = $event) : null),
class: 'drop-down-select',
'popper-class': 'drop-down-list-popper',
effect: '',
'collapse-tags': '',
'collapse-tags-tooltip': '',
placeholder: _ctx._t('\u8BF7\u9009\u62E9'),
ref: 'dropDownSelect',
'suffix-transition': false,
teleported: false,
filterable: true,
options: optionsData.value,
onChange,
onClick,
},
{
default: withCtx(({ item: item2 }) => [
createElementVNode(
'span',
null,
toDisplayString$1(_ctx.t(item2.label)),
1
),
]),
_: 1,
},
8,
['modelValue', 'placeholder', 'options']
),
],
8,
_hoisted_1$3l
)
)
}
},
})
var SelectControl = /* @__PURE__ */ _export_sfc(_sfc_main$3B, [
['__scopeId', 'data-v-15bcc3cd'],
])
var __glob_1_17 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: SelectControl,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var DataToolbar_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$1X = (n2) => (
pushScopeId('data-v-d572a444'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3k = { class: 'data-toolbar' }
const _hoisted_2$2$ = {
key: 0,
class: 'pager',
}
const _hoisted_3$2L = ['disabled']
const _hoisted_4$2m = /* @__PURE__ */ _withScopeId$1X(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-shouye' },
null,
-1
)
)
const _hoisted_5$26 = /* @__PURE__ */ _withScopeId$1X(() =>
/* @__PURE__ */ createElementVNode('div', { class: 'divider' }, null, -1)
)
const _hoisted_6$1T = ['disabled']
const _hoisted_7$1C = ['disabled']
const _hoisted_8$1s = /* @__PURE__ */ _withScopeId$1X(() =>
/* @__PURE__ */ createElementVNode('div', { class: 'divider' }, null, -1)
)
const _hoisted_9$1m = ['disabled']
const _hoisted_10$1i = /* @__PURE__ */ _withScopeId$1X(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-moye' },
null,
-1
)
)
const _hoisted_11$1a = {
key: 1,
class: 'btn-list',
}
const _hoisted_12$17 = /* @__PURE__ */ _withScopeId$1X(() =>
/* @__PURE__ */ createElementVNode(
'svg',
{
class: 'icon',
'aria-hidden': 'true',
},
[
/* @__PURE__ */ createElementVNode('use', {
'xlink:href': '#icon-tijiao',
}),
],
-1
)
)
const _hoisted_13$10 = /* @__PURE__ */ _withScopeId$1X(() =>
/* @__PURE__ */ createElementVNode(
'svg',
{
class: 'icon',
'aria-hidden': 'true',
},
[
/* @__PURE__ */ createElementVNode('use', {
'xlink:href': '#icon-shujujianyan',
}),
],
-1
)
)
const _hoisted_14$X = /* @__PURE__ */ _withScopeId$1X(() =>
/* @__PURE__ */ createElementVNode(
'svg',
{
class: 'icon',
'aria-hidden': 'true',
},
[
/* @__PURE__ */ createElementVNode('use', {
'xlink:href': '#icon-gengxinshuju',
}),
],
-1
)
)
const _hoisted_15$U = /* @__PURE__ */ _withScopeId$1X(() =>
/* @__PURE__ */ createElementVNode(
'svg',
{
class: 'icon',
'aria-hidden': 'true',
preserveAspectRatio: 'none',
},
[
/* @__PURE__ */ createElementVNode('use', {
'xlink:href': '#icon-charujilu',
}),
],
-1
)
)
const _hoisted_16$T = /* @__PURE__ */ _withScopeId$1X(() =>
/* @__PURE__ */ createElementVNode(
'svg',
{
class: 'icon',
'aria-hidden': 'true',
},
[
/* @__PURE__ */ createElementVNode('use', {
'xlink:href': '#icon-shanchujilu',
}),
],
-1
)
)
const _hoisted_17$N = /* @__PURE__ */ _withScopeId$1X(() =>
/* @__PURE__ */ createElementVNode(
'svg',
{
class: 'icon',
'aria-hidden': 'true',
},
[
/* @__PURE__ */ createElementVNode('use', {
'xlink:href': '#icon-xiugaijilu',
}),
],
-1
)
)
const _sfc_main$3A = /* @__PURE__ */ defineComponent({
props: {
dataRenderer: null,
},
emits: ['changePage'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
let type4 = ref('Sheet')
let props2 = reactive($props2.dataRenderer)
function switchPage(pageNum) {
emit2('changePage', pageNum)
}
return (_ctx, _cache) => {
const _component_el_input_number = resolveComponent('el-input-number')
return (
openBlock(),
createElementBlock('div', _hoisted_1$3k, [
type4.value === 'Sheet'
? (openBlock(),
createElementBlock('div', _hoisted_2$2$, [
createElementVNode(
'button',
{
class: 'active-btn',
disabled: unref(props2).pageIndex <= 1,
onClick:
_cache[0] || (_cache[0] = ($event) => switchPage(1)),
},
[
_hoisted_4$2m,
createElementVNode(
'span',
null,
toDisplayString$1(_ctx._t('\u9996\u9875')),
1
),
],
8,
_hoisted_3$2L
),
_hoisted_5$26,
createElementVNode(
'button',
{
disabled: unref(props2).pageIndex <= 1,
onClick:
_cache[1] ||
(_cache[1] = ($event) =>
switchPage(unref(props2).pageIndex - 1)),
},
toDisplayString$1(_ctx._t('\u4E0A\u4E00\u9875')),
9,
_hoisted_6$1T
),
createVNode$1(
_component_el_input_number,
{
class: 'page-input',
modelValue: unref(props2).pageIndex,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(props2).pageIndex = $event)),
controls: false,
disabled: unref(props2).pageCount === 0,
min: 1,
step: 1,
'step-strictly': '',
max: unref(props2).pageCount || 1,
onKeyup:
_cache[3] ||
(_cache[3] = withKeys(
() => switchPage(unref(props2).pageIndex),
['enter']
)),
onBlur:
_cache[4] ||
(_cache[4] = () => switchPage(unref(props2).pageIndex)),
},
null,
8,
['modelValue', 'disabled', 'max']
),
createElementVNode(
'span',
null,
'/ ' + toDisplayString$1(unref(props2).pageCount),
1
),
createElementVNode(
'button',
{
disabled:
unref(props2).pageCount === 0 ||
unref(props2).pageIndex === unref(props2).pageCount,
onClick:
_cache[5] ||
(_cache[5] = ($event) =>
switchPage(unref(props2).pageIndex + 1)),
},
toDisplayString$1(_ctx._t('\u4E0B\u4E00\u9875')),
9,
_hoisted_7$1C
),
_hoisted_8$1s,
createElementVNode(
'button',
{
class: 'active-btn',
disabled:
unref(props2).pageCount === 0 ||
unref(props2).pageIndex === unref(props2).pageCount,
onClick:
_cache[6] ||
(_cache[6] = ($event) =>
switchPage(unref(props2).pageCount)),
},
[
createElementVNode(
'span',
null,
toDisplayString$1(_ctx._t('\u672B\u9875')),
1
),
_hoisted_10$1i,
],
8,
_hoisted_9$1m
),
]))
: (openBlock(),
createElementBlock('div', _hoisted_11$1a, [
createElementVNode('button', null, [
_hoisted_12$17,
createElementVNode(
'span',
null,
toDisplayString$1(_ctx._t('\u63D0\u4EA4')),
1
),
]),
createElementVNode('button', null, [
_hoisted_13$10,
createElementVNode(
'span',
null,
toDisplayString$1(_ctx._t('\u6570\u636E\u6821\u9A8C')),
1
),
]),
createElementVNode('button', null, [
_hoisted_14$X,
createElementVNode(
'span',
null,
toDisplayString$1(_ctx._t('\u66F4\u65B0\u6570\u636E')),
1
),
]),
createElementVNode('button', null, [
_hoisted_15$U,
createElementVNode(
'span',
null,
toDisplayString$1(_ctx._t('\u63D2\u5165\u8BB0\u5F55')),
1
),
]),
createElementVNode('button', null, [
_hoisted_16$T,
createElementVNode(
'span',
null,
toDisplayString$1(_ctx._t('\u5220\u9664\u8BB0\u5F55')),
1
),
]),
createElementVNode('button', null, [
_hoisted_17$N,
createElementVNode(
'span',
null,
toDisplayString$1(_ctx._t('\u4FEE\u6539\u8BB0\u5F55')),
1
),
]),
])),
])
)
}
},
})
var DataToolbar = /* @__PURE__ */ _export_sfc(_sfc_main$3A, [
['__scopeId', 'data-v-d572a444'],
])
var __glob_1_18 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: DataToolbar,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const classifyType = {
二进制: [0],
整型: [1, 2, 3, 4, 5, 6, 7, 8],
浮点型: [9, 10],
字符串: [14, 15, 16, 17],
时间: [11, 12, 13, 18],
}
const fieldTypeList = [
{
value: 1,
label: '\u6570\u503C',
icon: 'iconType icon-number',
variateType: [
...classifyType['\u4E8C\u8FDB\u5236'],
...classifyType['\u6574\u578B'],
...classifyType['\u6D6E\u70B9\u578B'],
],
},
{
value: 2,
label: '\u6587\u672C',
icon: 'iconType icon-text',
variateType: classifyType['\u5B57\u7B26\u4E32'],
},
{
value: 3,
label: '\u65E5\u671F',
icon: 'iconType icon-time',
variateType: classifyType['\u65F6\u95F4'],
},
]
const getTypeProp = (handle, type4) => {
const types2 = fieldTypeList
const fun = {
label: () => types2.find((e2) => e2.value === type4)?.label,
icon: () => types2.find((e2) => e2.value === type4)?.icon,
variateType: () =>
types2.find((e2) => e2.value === type4)?.variateType || [],
variateMatch: () =>
types2.find((e2) => e2.variateType.includes(type4))?.value || 0,
}
return fun[handle]()
}
var FieldType_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$3j = { class: 'wrapper' }
const _hoisted_2$2_ = { key: 0 }
const _sfc_main$3z = /* @__PURE__ */ defineComponent({
props: {
type: null,
label: { type: Boolean },
},
setup(__props2) {
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('span', _hoisted_1$3j, [
createElementVNode(
'i',
{
class: normalizeClass(unref(getTypeProp)('icon', __props2.type)),
},
null,
2
),
__props2.label
? (openBlock(),
createElementBlock(
'span',
_hoisted_2$2_,
toDisplayString$1(unref(getTypeProp)('label', __props2.type)),
1
))
: createCommentVNode('', true),
])
)
}
},
})
var FieldType = /* @__PURE__ */ _export_sfc(_sfc_main$3z, [
['__scopeId', 'data-v-43817690'],
])
var FieldType$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: FieldType,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var FormulaConfigDialog_vue_vue_type_style_index_0_scoped_true_lang = ''
var FormulaConfigDialog_vue_vue_type_style_index_1_scoped_true_lang = ''
var FormulaConfigDialog_vue_vue_type_style_index_2_lang = ''
const _withScopeId$1W = (n2) => (
pushScopeId('data-v-155c2247'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3i = { class: 'dialog-body' }
const _hoisted_2$2Z = {
key: 0,
class: 'tip',
}
const _hoisted_3$2K = { class: 'row' }
const _hoisted_4$2l = { class: 'col' }
const _hoisted_5$25 = ['title']
const _hoisted_6$1S = { class: 'row' }
const _hoisted_7$1B = { class: 'col' }
const _hoisted_8$1r = { class: 'panel' }
const _hoisted_9$1l = /* @__PURE__ */ _withScopeId$1W(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'header' },
'\u51FD\u6570',
-1
)
)
const _hoisted_10$1h = { class: 'body' }
const _hoisted_11$19 = { class: 'filter' }
const _hoisted_12$16 = ['onClick', 'title']
const _hoisted_13$$ = { class: 'col' }
const _hoisted_14$W = { class: 'panel' }
const _hoisted_15$T = /* @__PURE__ */ _withScopeId$1W(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'header' },
'\u5B57\u6BB5',
-1
)
)
const _hoisted_16$S = { class: 'body' }
const _hoisted_17$M = { class: 'filter' }
const _hoisted_18$H = ['onClick']
const _hoisted_19$E = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_20$C = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$3y = /* @__PURE__ */ defineComponent({
props: {
showfieldName: {
type: Boolean,
default: true,
},
code: {
type: String,
default: '',
},
field: {
type: Object,
default: () => {
return {}
},
},
fieldList: {
type: Array,
default: () => [],
},
title: {
type: String,
default: '\u8BA1\u7B97\u516C\u5F0F\u914D\u7F6E',
},
operatorCatList: {
type: Array,
default: () => [],
},
incompatibleTag: {
type: String,
default: 'all',
validator: (value2) => {
return [
'all',
'AggregateTableField',
'ReportFieldAssociation',
].includes(value2)
},
},
},
emits: ['update:modelValue', 'update:code', 'change'],
setup(__props2, { expose, emit: emit2 }) {
const props2 = __props2
onMounted(() => {
getFunctionTable()
})
async function getFunctionTable() {
const functions = await request.get(
'/api/v1/dataconfig/processingmethods',
{
params: { incompatibleTag: props2.incompatibleTag },
silent: true,
}
)
if (functions) {
functionState.table = functions
functionState.current.fun = functions[0]
}
}
let code2 = ref('')
const reset2 = () => {
code2.value = props2.code || ''
fieldState.keyword = ''
functionState.current.type = ''
functionState.current.focusWord = ''
}
watch$1(
() => props2.code,
() => {
code2.value = props2.code || ''
},
{ immediate: true }
)
async function change2() {
const rs2 = await request.post(
'/api/v1/dataconfig/filingtable/formular/validate',
{
formula: code2.value,
}
)
if (!rs2.pass) {
toast(rs2.msg, 'error')
return
}
emit2('update:code', code2.value)
emit2('change', code2.value)
close2()
}
function close2() {
emit2('update:modelValue', false)
reset2()
}
const functionState = reactive({
current: {
type: '',
focusWord: '',
fun: {},
},
table: [],
})
const typeList = computed(() => {
return [...new Set(functionState.table.map((e2) => e2.类别))]
})
const list2 = computed(() => {
const table = functionState.table
const type4 = functionState.current.type
const focusWord = functionState.current.focusWord
const tl = type4 ? table.filter((e2) => e2.类别 === type4) : table
const f2 = tl.filter((f32) => f32.函数.match(RegExp(focusWord, 'i')))
const f1 = f2.filter((f32) =>
f32.函数.match(RegExp(`^${focusWord}`, 'i'))
)
const f3 = f1.filter((f32) =>
f32.函数.match(RegExp(`^${focusWord}$`, 'i'))
)
const fl2 = [.../* @__PURE__ */ new Set([...f3, ...f1, ...f2])]
if (fl2.length) {
functionState.current.fun = fl2[0]
return fl2
}
return tl
})
function clickFun(fun) {
if (
['\u6570\u503C\u8FD0\u7B97', '\u903B\u8F91\u8FD0\u7B97'].includes(
fun.类别
)
) {
insertCode2(` ${fun.函数} `)
} else {
insertCode2(`${fun.函数}( )`)
}
setTimeout(() => {
functionState.current.fun = fun
})
}
const fieldState = reactive({
keyword: '',
get list() {
const fieldList = props2.fieldList || []
return fieldList.filter(({ fieldName }) => {
return fieldName.match(fieldState.keyword)
})
},
})
let inputCode2 = ref()
function insertCode2(text2) {
inputCode2.value?.insertCode(text2)
}
expose({
insertCode: insertCode2,
})
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input = resolveComponent('el-input')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': true,
'close-on-click-modal': false,
'destroy-on-close': true,
title: __props2.title,
'custom-class': 'cms-el-dialog',
width: '661px',
onClose: close2,
},
{
footer: withCtx(() => [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: close2,
},
{
default: withCtx(() => [_hoisted_19$E]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: change2,
},
{
default: withCtx(() => [_hoisted_20$C]),
_: 1,
}
),
]),
default: withCtx(() => [
createElementVNode('div', _hoisted_1$3i, [
__props2.showfieldName
? (openBlock(),
createElementBlock(
'strong',
_hoisted_2$2Z,
'\u5B57\u6BB5\u540D\u79F0\uFF1A' +
toDisplayString$1(props2.field?.fieldName),
1
))
: createCommentVNode('', true),
createElementVNode('div', _hoisted_3$2K, [
createElementVNode('div', _hoisted_4$2l, [
createVNode$1(
InputCode,
{
ref_key: 'inputCode',
ref: inputCode2,
modelValue: code2.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (code2.value = $event)),
focusWord: unref(functionState).current.focusWord,
'onUpdate:focusWord':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(functionState).current.focusWord = $event)),
},
null,
8,
['modelValue', 'focusWord']
),
]),
]),
createElementVNode(
'strong',
{
class: 'tip',
style: { width: 'fit-content' },
title: `
- \u7528\u6CD5\uFF1A
- ${unref(functionState).current.fun.用法 || ''}
- \u8BF4\u660E\uFF1A
- ${unref(functionState).current.fun.说明 || ''}
- \u53C2\u6570\uFF1A
- ${unref(functionState).current.fun.参数 || ''}
- \u793A\u4F8B\uFF1A
- ${unref(functionState).current.fun.示例 || ''}
`,
'data-tooltip-raw-content': '',
'data-tooltip-placement': 'right-start',
'data-tooltip-show-after': '0',
},
toDisplayString$1(
unref(functionState).current.fun.用法 ||
`${unref(functionState).current.fun.函数}( )`
),
9,
_hoisted_5$25
),
createElementVNode('div', _hoisted_6$1S, [
createElementVNode('div', _hoisted_7$1B, [
createElementVNode('div', _hoisted_8$1r, [
renderSlot(
_ctx.$slots,
'left-card',
{},
() => [
_hoisted_9$1l,
createElementVNode('div', _hoisted_10$1h, [
createElementVNode('div', _hoisted_11$19, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select cms-el-input-min',
'popper-class': 'cms-el-select__popper',
modelValue: unref(functionState).current.type,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(functionState).current.type =
$event)),
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
label: '\u6240\u6709',
value: '',
}),
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(typeList.value, (t3) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: t3,
value: t3,
},
null,
8,
['value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
createElementVNode('ul', null, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(list2.value, (fun) => {
return (
openBlock(),
createElementBlock(
'li',
{
key: fun.函数,
onClick: ($event) => clickFun(fun),
title: `
- \u7528\u6CD5\uFF1A
- ${fun.用法}
- \u8BF4\u660E\uFF1A
- ${fun.说明}
- \u53C2\u6570\uFF1A
- ${fun.参数}
- \u793A\u4F8B\uFF1A
- ${fun.示例}
`,
'data-tooltip-raw-content': '',
'data-tooltip-placement': 'right-start',
'data-tooltip-show-after': '0',
'data-tooltip-offset': '2',
},
[
createElementVNode(
'label',
null,
toDisplayString$1(fun.函数),
1
),
],
8,
_hoisted_12$16
)
)
}),
128
)),
]),
]),
],
true
),
]),
]),
createElementVNode('div', _hoisted_13$$, [
createElementVNode('div', _hoisted_14$W, [
renderSlot(
_ctx.$slots,
'right-card',
{},
() => [
_hoisted_15$T,
createElementVNode('div', _hoisted_16$S, [
createElementVNode('div', _hoisted_17$M, [
createVNode$1(
_component_el_input,
{
modelValue: unref(fieldState).keyword,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(fieldState).keyword = $event)),
class: 'flex1',
placeholder: '\u8BF7\u8F93\u5165',
clearable: '',
},
null,
8,
['modelValue']
),
]),
createElementVNode('ul', null, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(fieldState).list, (field2) => {
return (
openBlock(),
createElementBlock(
'li',
{
key: field2.fieldName,
onClick: ($event) =>
insertCode2(`[${field2.fieldName}]`),
},
toDisplayString$1(field2.fieldName),
9,
_hoisted_18$H
)
)
}),
128
)),
]),
]),
],
true
),
]),
]),
]),
]),
]),
_: 3,
},
8,
['title']
)
)
}
},
})
var FormulaConfigDialog = /* @__PURE__ */ _export_sfc(_sfc_main$3y, [
['__scopeId', 'data-v-155c2247'],
])
var FormulaConfigDialog$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: FormulaConfigDialog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var DataFieldConfigDialog_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$1V = (n2) => (
pushScopeId('data-v-7f2c1c5b'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3h = { class: 'dialog-content' }
const _hoisted_2$2Y = { class: 'buttons' }
const _hoisted_3$2J = /* @__PURE__ */ createTextVNode('\u6DFB\u52A0')
const _hoisted_4$2k = /* @__PURE__ */ createTextVNode('\u5220\u9664')
const _hoisted_5$24 = /* @__PURE__ */ _withScopeId$1V(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-paixu btn-drag' },
null,
-1
)
)
const _hoisted_6$1R = { class: 'vxe-cell--label' }
const _hoisted_7$1A = { key: 0 }
const _hoisted_8$1q = { class: 'cover-select' }
const _hoisted_9$1k = { class: 'flex-row' }
const _hoisted_10$1g = { class: 'flex-row-full vxe-cell--label' }
const _hoisted_11$18 = { class: 'flex flex-between' }
const _hoisted_12$15 = /* @__PURE__ */ _withScopeId$1V(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u5173\u8054\u53D8\u91CF',
-1
)
)
const _hoisted_13$_ = ['onClick']
const _hoisted_14$V = {
key: 0,
class: 'flex flex-between',
}
const _hoisted_15$S = ['onClick']
const _hoisted_16$R = {
key: 1,
class: 'unedit',
}
const _hoisted_17$L = {
key: 0,
class: 'flex flex-between',
}
const _hoisted_18$G = ['onClick']
const _hoisted_19$D = {
key: 1,
class: 'unedit',
}
const _hoisted_20$B = {
key: 0,
class: 'flex flex-between',
}
const _hoisted_21$u = { class: 'vxe-cell--label equation' }
const _hoisted_22$s = ['onClick']
const _hoisted_23$p = {
key: 1,
class: 'unedit',
}
const _hoisted_24$p = {
key: 0,
class: 'flex flex-between',
}
const _hoisted_25$k = { class: 'equation' }
const _hoisted_26$j = ['onClick']
const _hoisted_27$j = {
key: 1,
class: 'unedit',
}
const _hoisted_28$i = {
class: 'el-dialog__footer',
style: { 'margin-top': '20px' },
}
const _hoisted_29$f = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_30$f = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$3x = /* @__PURE__ */ defineComponent({
props: {
node: null,
id: null,
modelValue: { type: Boolean },
},
emits: ['update:modelValue', 'confirm'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const xTable = ref({})
let tableData2 = ref([])
const query = async () => {
if (!$props2.id) return
tableData2.value = await request.get(
`/api/v1/dataconfig/filingtable/${$props2.id}/fields`
)
xTable.value.loadData(tableData2.value)
}
const open2 = () => {
query()
if (!sortable) nextTick(() => sortableInit())
}
const reset2 = () => {
tableData2.value = []
closeDialog(false)
}
const confirm2 = async () => {
let alert2 = ''
let fields = []
for (let i2 = 0; i2 < tableData2.value.length; i2++) {
const {
id: id2,
fieldName,
fieldType: fieldType2,
formula,
associatedVariable: associatedVariable2,
variateError,
} = tableData2.value[i2]
if (!fieldName && !fieldType2) continue
if (fieldName && !fieldType2) {
alert2 = `\u5B57\u6BB5\u3010${fieldName}\u3011\u9700\u8981 \u5173\u8054\u53D8\u91CF/\u8BA1\u7B97\u516C\u5F0F`
break
}
if (!fieldName && (formula || associatedVariable2)) {
if (formula)
alert2 = `\u516C\u5F0F\u3010${formula}\u3011\u7684\u5B57\u6BB5\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A`
if (associatedVariable2)
alert2 = `\u53D8\u91CF\u3010${associatedVariable2}\u3011\u7684\u5B57\u6BB5\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A`
break
}
if (associatedVariable2 && variateError) {
alert2 = `\u53D8\u91CF\u3010${associatedVariable2}\u3011\u65E0\u6548`
break
}
const t3 = {
fieldName,
fieldType: fieldType2,
associatedVariable: associatedVariable2,
formula,
id: (id2 + '').startsWith('RandomId_') ? '' : id2,
}
fields.push(t3)
}
if (!fields.length && !alert2)
alert2 = '\u8BF7\u5148\u8FDB\u884C\u5B57\u6BB5\u914D\u7F6E'
if (alert2) {
return ElMessage.error(alert2)
}
request
.put(`/api/v1/dataconfig/filingtable/${$props2.id}/fields`, fields)
.then(() => {
ElMessage.success('\u4FDD\u5B58\u6210\u529F')
emit2('confirm')
closeDialog(false)
})
.catch(() => {})
}
let choiceRows = ref([])
const checkRow = () => {
choiceRows.value = xTable.value.getCheckboxRecords()
}
const addRow = () => {
let row = {
id: 'RandomId_' + utils.createRandomId(),
fieldType: 0,
fieldName: '',
associatedVariable: '',
formula: '',
}
tableData2.value.push(row)
xTable.value.loadData(tableData2.value)
}
const delRow = async () => {
if (!choiceRows.value.length)
return ElMessage.error(
'\u8BF7\u9009\u62E9\u8981\u5220\u9664\u7684\u6570\u636E'
)
const fields = choiceRows.value.filter(
(e2) => !e2.id.startsWith('RandomId_')
)
const fieldIds = fields.map((e2) => e2.id)
if (fieldIds.length) {
const res = await request.post(
`/api/v1/dataconfig/node/field/delewarning`,
{ fieldIds }
)
if (res.limited) return ElMessage.error(res.msg)
}
choiceRows.value.forEach((e2) => {
tableData2.value.splice(tableData2.value.indexOf(e2), 1)
xTable.value.loadData(tableData2.value)
})
choiceRows.value = []
}
let sortable
const sortableInit = () => {
const $table = xTable.value
if (!$table?.$el) return
sortable = Sortable.create(
$table.$el.querySelector(
'.drag-table .body--wrapper>.vxe-table--body tbody'
),
{
handle: '.btn-drag',
chosenClass: 'sortable-chosen',
onEnd: (sortableEvent) => {
const newIndex2 = sortableEvent.newIndex
const oldIndex2 = sortableEvent.oldIndex
const currRow = tableData2.value.splice(oldIndex2, 1)[0]
tableData2.value.splice(newIndex2, 0, currRow)
},
}
)
}
let currentRow = ref(null)
let variateVisible = ref(false)
const variateOpen = (row) => {
if (!tableData2.value.length) {
return ElMessage.warning('\u8BF7\u5148\u6DFB\u52A0\u5B57\u6BB5')
} else {
currentRow.value = row || tableData2.value[0]
variateVisible.value = true
}
}
const variateCancel = () => {
variateVisible.value = false
currentRow.value = null
}
const variateConfirm = (row) => {
const _row = row[0]
const index2 = tableData2.value.findIndex(
(d3) => d3.id === currentRow.value.id
)
tableData2.value[index2].associatedVariable = _row ? _row.name : ''
tableData2.value[index2].variateId = _row ? _row.id : ''
tableData2.value[index2].fieldType = _row
? getTypeProp('variateMatch', _row.type)
: 0
tableData2.value[index2].variateError = false
if (!tableData2.value[index2].fieldName && _row)
tableData2.value[index2].fieldName = _row.name
xTable.value.setCurrentRow(tableData2.value[index2])
variateCancel()
}
const variateChangeName = (index2, row) => {
if (tableData2.value[index2].formula) return
tableData2.value[index2].associatedVariable = row[0].name
tableData2.value[index2].variateId = row[0].id
tableData2.value[index2].fieldType = getTypeProp(
'variateMatch',
row[0].type
)
tableData2.value[index2].variateError = false
if (!tableData2.value[index2].fieldName)
tableData2.value[index2].fieldName = row[0].name
if (index2 === tableData2.value.length - 1) {
currentRow.value = tableData2.value[index2]
} else {
currentRow.value = tableData2.value[index2 + 1]
}
xTable.value.setCurrentRow(currentRow.value)
}
const variateSearch = (value2, index2) => {
if (!value2) return
searchVariable('', '', null, value2).then((res) => {
if (!res.result.length) {
tableData2.value[index2].variateId = ''
tableData2.value[index2].variateError = true
tableData2.value[index2].fieldType = 0
} else {
tableData2.value[index2].variateId = res.result[0].id
tableData2.value[index2].fieldType = getTypeProp(
'variateMatch',
res.result[0].type
)
tableData2.value[index2].variateError = false
}
})
}
const formulaConfig = reactive({
visible: false,
get field() {
return currentRow.value
},
get code() {
return currentRow.value?.formula
},
get fieldList() {
if (!formulaConfig.visible) return []
else
return tableData2.value.filter(
(e2) => e2.fieldName && e2.id !== currentRow.value.id
)
},
})
const formulaConfirm = (code2) => {
const index2 = tableData2.value.findIndex(
(e2) => e2.id === currentRow.value.id
)
tableData2.value[index2].formula = code2
if (code2) {
tableData2.value[index2].fieldType =
tableData2.value[index2].fieldType || 2
} else {
tableData2.value[index2].fieldType = 0
}
}
const formulaHandle = (row) => {
currentRow.value = row
formulaConfig.visible = true
}
const closeDialog = (visible) => {
emit2('update:modelValue', visible)
}
watch$1(
() => $props2.modelValue,
(newVal) => {
if (newVal) {
open2()
}
}
)
onUnmounted(() => {
if (sortable) sortable.destroy()
})
return (_ctx, _cache) => {
const _component_el_button = resolveComponent('el-button')
const _component_vxe_column = resolveComponent('vxe-column')
const _component_el_input = resolveComponent('el-input')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_vxe_table = resolveComponent('vxe-table')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
_component_el_dialog,
{
'model-value': $props2.modelValue,
'append-to-body': true,
'close-on-click-modal': false,
onClosed: reset2,
title: '\u5B57\u6BB5\u914D\u7F6E',
'custom-class': 'cms-el-dialog',
width: '868px',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$3h, [
createElementVNode('div', _hoisted_2$2Y, [
createVNode$1(
_component_el_button,
{
class: 'cms-btn btn-data-plain success',
onClick: addRow,
},
{
default: withCtx(() => [_hoisted_3$2J]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'cms-btn btn-data-plain danger',
onClick: delRow,
},
{
default: withCtx(() => [_hoisted_4$2k]),
_: 1,
}
),
]),
createVNode$1(
_component_vxe_table,
{
border: '',
ref_key: 'xTable',
ref: xTable,
class: 'cms-vxe-edit-table cms-vxe-table-min drag-table',
style: { 'min-width': '100%' },
height: '450px',
'show-overflow': '',
'scroll-x': { gt: -1 },
'scroll-y': { gt: -1 },
'row-config': { useKey: true },
'column-config': { resizable: true },
'checkbox-config': { highlight: true },
'edit-config': { trigger: 'click', mode: 'cell' },
data: tableData2.value,
onCheckboxChange: checkRow,
onCheckboxAll: checkRow,
},
{
default: withCtx(() => [
createVNode$1(
_component_vxe_column,
{ width: '45' },
{
default: withCtx(() => [_hoisted_5$24]),
_: 1,
}
),
createVNode$1(_component_vxe_column, {
type: 'checkbox',
width: '40',
}),
createVNode$1(
_component_vxe_column,
{
field: 'name',
width: '190',
title: '\u5B57\u6BB5\u540D\u79F0',
'edit-render': { autofocus: '.el-input__inner' },
},
{
default: withCtx(({ row }) => [
createElementVNode(
'span',
_hoisted_6$1R,
toDisplayString$1(row.fieldName),
1
),
]),
edit: withCtx(({ row }) => [
createVNode$1(
_component_el_input,
{
type: 'text',
modelValue: row.fieldName,
'onUpdate:modelValue': ($event) =>
(row.fieldName = $event),
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
]),
_: 1,
},
8,
['edit-render']
),
createVNode$1(
_component_vxe_column,
{
field: 'fieldType',
width: '150',
title: '\u5B57\u6BB5\u7C7B\u578B',
'edit-render': { autofocus: '.el-input__inner' },
},
{
default: withCtx(({ row }) => [
createVNode$1(
FieldType,
{
type: row.fieldType,
label: '',
class: normalizeClass(
row.formula
? 'vxe-cell--label vxe-cell-select'
: 'unedit'
),
},
null,
8,
['type', 'class']
),
]),
edit: withCtx(({ row }) => [
row.formula
? (openBlock(),
createElementBlock('div', _hoisted_7$1A, [
createElementVNode('div', _hoisted_8$1q, [
createElementVNode('div', _hoisted_9$1k, [
createElementVNode(
'div',
_hoisted_10$1g,
[
createVNode$1(
FieldType,
{
type: row.fieldType,
label: '',
},
null,
8,
['type']
),
]
),
]),
]),
createVNode$1(
_component_el_select,
{
modelValue: row.fieldType,
'onUpdate:modelValue': ($event) =>
(row.fieldType = $event),
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
teleported: false,
onFocus:
_cache[0] ||
(_cache[0] = (e2) =>
e2.target?.click()),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(fieldTypeList),
(item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
value: item2.value,
},
{
default: withCtx(() => [
createVNode$1(
FieldType,
{
type: item2.value,
label: '',
},
null,
8,
['type']
),
]),
_: 2,
},
1032,
['value']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue']
),
]))
: (openBlock(),
createBlock(
FieldType,
{
key: 1,
type: row.fieldType,
label: '',
class: 'unedit',
},
null,
8,
['type']
)),
]),
_: 1,
},
8,
['edit-render']
),
createVNode$1(
_component_vxe_column,
{
field: 'variate',
width: '170',
title: '\u5173\u8054\u53D8\u91CF',
'edit-render': {},
},
{
header: withCtx(({ row }) => [
createElementVNode('span', _hoisted_11$18, [
_hoisted_12$15,
createElementVNode(
'i',
{
class: 'iconfont icon-gengduo1 btn-vars',
onClick: withModifiers(
($event) => variateOpen(row),
['stop']
),
},
null,
8,
_hoisted_13$_
),
]),
]),
default: withCtx(({ row }) => [
!row.formula
? (openBlock(),
createElementBlock('div', _hoisted_14$V, [
createElementVNode(
'span',
{
class: normalizeClass([
'vxe-cell--label',
{ error: row.variateError },
]),
},
toDisplayString$1(row.associatedVariable),
3
),
createElementVNode(
'i',
{
class:
'iconfont icon-bianjigongcheng btn-edit hover-show',
onClick: withModifiers(
($event) => variateOpen(row),
['stop']
),
},
null,
8,
_hoisted_15$S
),
]))
: (openBlock(),
createElementBlock(
'span',
_hoisted_16$R,
' \u2014\u2014 '
)),
]),
edit: withCtx(({ row, rowIndex }) => [
!row.formula
? (openBlock(),
createElementBlock('div', _hoisted_17$L, [
createVNode$1(
_component_el_input,
{
type: 'text',
class: normalizeClass({
error: row.variateError,
}),
modelValue: row.associatedVariable,
'onUpdate:modelValue': ($event) =>
(row.associatedVariable = $event),
onBlur: ($event) =>
variateSearch(
row.associatedVariable,
rowIndex
),
},
null,
8,
[
'class',
'modelValue',
'onUpdate:modelValue',
'onBlur',
]
),
createElementVNode(
'i',
{
class:
'iconfont icon-bianjigongcheng btn-edit',
onClick: withModifiers(
($event) => variateOpen(row),
['stop']
),
},
null,
8,
_hoisted_18$G
),
]))
: (openBlock(),
createElementBlock(
'span',
_hoisted_19$D,
' \u2014\u2014 '
)),
]),
_: 1,
}
),
createVNode$1(
_component_vxe_column,
{
field: 'equation',
title: '\u8BA1\u7B97\u516C\u5F0F',
},
{
default: withCtx(({ row }) => [
!row.associatedVariable
? (openBlock(),
createElementBlock('div', _hoisted_20$B, [
createElementVNode(
'span',
_hoisted_21$u,
toDisplayString$1(row.formula),
1
),
createElementVNode(
'i',
{
class:
'iconfont icon-bianjigongcheng btn-edit hover-show',
onClick: withModifiers(
($event) => formulaHandle(row),
['stop']
),
},
null,
8,
_hoisted_22$s
),
]))
: (openBlock(),
createElementBlock(
'span',
_hoisted_23$p,
' \u2014\u2014 '
)),
]),
edit: withCtx(({ row }) => [
!row.associatedVariable
? (openBlock(),
createElementBlock('div', _hoisted_24$p, [
createElementVNode(
'span',
_hoisted_25$k,
toDisplayString$1(row.formula),
1
),
createElementVNode(
'i',
{
class:
'iconfont icon-bianjigongcheng btn-edit',
onClick: withModifiers(
($event) => formulaHandle(row),
['stop']
),
},
null,
8,
_hoisted_26$j
),
]))
: (openBlock(),
createElementBlock(
'span',
_hoisted_27$j,
' \u2014\u2014 '
)),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['data']
),
]),
createElementVNode('div', _hoisted_28$i, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick:
_cache[1] ||
(_cache[1] = ($event) => closeDialog(false)),
},
{
default: withCtx(() => [_hoisted_29$f]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_30$f]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['model-value']
),
createVNode$1(
unref(_sfc_main$6Q),
{
visible: variateVisible.value,
noLanguage: true,
isAppendToBody: true,
showConfig: true,
data: {
id: currentRow.value && currentRow.value.variateId,
name: currentRow.value && currentRow.value.associatedVariable,
},
configData: {
data: tableData2.value,
currentRow: currentRow.value,
},
onChangeName: variateChangeName,
onCancel: variateCancel,
onConfirm: variateConfirm,
},
null,
8,
['visible', 'data', 'configData']
),
createVNode$1(
FormulaConfigDialog,
{
modelValue: unref(formulaConfig).visible,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(formulaConfig).visible = $event)),
code: unref(formulaConfig).code,
field: unref(formulaConfig).field,
fieldList: unref(formulaConfig).fieldList,
onChange: formulaConfirm,
},
null,
8,
['modelValue', 'code', 'field', 'fieldList']
),
])
)
}
},
})
var DataFieldConfigDialog = /* @__PURE__ */ _export_sfc(_sfc_main$3x, [
['__scopeId', 'data-v-7f2c1c5b'],
])
var DataFieldConfigDialog$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: DataFieldConfigDialog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const current = ref({
id: null,
})
const selectHistory = ref({
id: null,
})
const historyList = ref([])
const tableList = ref([])
const form = ref({
name: '',
})
const createRandomNum$2 = () => Math.random().toString().slice(-4)
const createHistoryName = () =>
(form.value.name = '\u65B0\u5EFA\u5386\u53F2\u7EC4-' + createRandomNum$2())
const currentStorage = ref({
retentionUnit: 6,
retentionValue: 1,
})
const defaultHistory = {
minIntervalValue: 1,
minIntervalUnit: 1,
archiveType: 0,
deadZoneType: 0,
deadZoneThreshold: 1,
intervalUnit: 1,
intervalValue: 1,
enableArchive: false,
}
const currentFile = ref({ ...defaultHistory })
const selectNode = () => {
if (current.value.id) return
current.value = historyList.value[0]
selectHistory.value = { ...current.value }
}
const getHistoryList = async () => {
return request.get('/api/v1/historicarchive/tree')
}
const createFolder$2 = async (name2) => {
const folderName =
name2 === 'folders'
? '\u65B0\u5EFA\u6587\u4EF6\u5939-' + +createRandomNum$2()
: name2
return request.post('/api/v1/historicarchive/folder', { name: folderName })
}
const editFolder = async (folderId, name2) => {
const id2 = folderId || current.value.id
const foldName = name2 || current.value.name
return request.put(`/api/v1/historicarchive/folder/${id2}`, {
name: foldName,
})
}
const createHistoryGroup = () => {
const data2 = {
folderId: current.value.id,
name: form.value.name,
}
return request.post('/api/v1/historicarchive/group', data2)
}
const editHistory = (type4) => {
const name2 = type4 ? current.value.name : form.value.name
return request.put(`/api/v1/historicarchive/group/${current.value.id}`, {
name: name2,
})
}
const deleteHistoryGroup = () => {
return request.delete(`/api/v1/historicarchive/group/${current.value.id}`)
}
const getVariableList = () => {
return request.get(`/api/v1/historicarchive/group/${current.value.id}/var`)
}
const getStorageSet = () => {
return request.get(
`/api/v1/historicarchive/group/${current.value.id}/storagesetting`
)
}
const setStorageSet = (id2, data2) => {
const groupId = id2 || current.value.id
const params2 = data2 || currentStorage.value
return request.put(
`/api/v1/historicarchive/group/${groupId}/storagesetting`,
params2
)
}
const getFileConfig = () => {
return request.get(
`/api/v1/historicarchive/group/${current.value.id}/archivesetting`
)
}
const setFileConfig = (id2, data2) => {
const groupId = id2 || current.value.id
const params2 = data2 || currentFile.value
return request.put(
`/api/v1/historicarchive/group/${groupId}/archivesetting`,
params2
)
}
const deleteFolder = (id2) => {
const folderId = id2 || current.value.id
return request.delete(`/api/v1/historicarchive/folder/${folderId}`)
}
const deleteVariable = (data2) => {
return request.delete(
`/api/v1/historicarchive/group/${current.value.id}/var`,
{ data: data2 }
)
}
const addHistoryVariable = (id2, data2) => {
return request.put(`/api/v1/historicarchive/group/${id2}/var`, data2)
}
const backupHistory = () => {
return request({
url: `/api/v1/historicarchive/group/${current.value.id}/backup`,
method: 'get',
responseType: 'blob',
})
}
const clearHistory = () => {
return request.get(
`/api/v1/historicarchive/group/${current.value.id}/cleanup`
)
}
const checkVariableHistory = (data2) => {
return request.post('/api/v1/historicarchive/var/bindinggroup', data2)
}
var Data_vue_vue_type_style_index_0_scoped_true_lang$1 = ''
var Data_vue_vue_type_style_index_1_lang = ''
const _withScopeId$1U = (n2) => (
pushScopeId('data-v-217b57e1'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3g = { class: 'data' }
const _hoisted_2$2X = { class: 'tabs-wrapper yAxis-settings' }
const _hoisted_3$2I = ['onClick', 'title']
const _hoisted_4$2j = { class: 'text' }
const _hoisted_5$23 = ['onClick']
const _hoisted_6$1Q = { class: 'data-body' }
const _hoisted_7$1z = /* @__PURE__ */ _withScopeId$1U(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'left-label' },
'\u6570\u636E\u96C6',
-1
)
)
const _hoisted_8$1p = { class: 'form-item' }
const _hoisted_9$1j = /* @__PURE__ */ _withScopeId$1U(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'left-label' },
[
/* @__PURE__ */ createTextVNode('\u5B57\u6BB5 '),
/* @__PURE__ */ createElementVNode('i', {
class: 'iconfont icon-tishi1',
'data-tooltip-raw-content': '',
title: '\u5B57\u6BB5\u652F\u6301\u62D6\u62FD\u5F15\u7528',
}),
],
-1
)
)
const _hoisted_10$1f = { class: 'fieldSet-container' }
const _hoisted_11$17 = { class: 'fieldSet-list' }
const _hoisted_12$14 = ['ondragstart', 'title']
const _hoisted_13$Z = {
key: 0,
class: 'field-association',
}
const _hoisted_14$U = /* @__PURE__ */ _withScopeId$1U(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'header_title' },
'\u5B57\u6BB5\u5173\u8054 ',
-1
)
)
const _hoisted_15$R = { class: 'field-association_content' }
const _hoisted_16$Q = { class: 'dataset-title' }
const _hoisted_17$K = { class: 'dataset-title_item' }
const _hoisted_18$F = /* @__PURE__ */ _withScopeId$1U(() =>
/* @__PURE__ */ createElementVNode('span', { class: 'master' }, '\u4E3B', -1)
)
const _hoisted_19$C = ['title']
const _hoisted_20$A = { class: 'dataset-title_item' }
const _hoisted_21$t = /* @__PURE__ */ _withScopeId$1U(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u5B50', -1)
)
const _hoisted_22$r = ['title']
const _hoisted_23$o = { class: 'field-association_container' }
const _hoisted_24$o = { class: 'association-list' }
const _hoisted_25$j = /* @__PURE__ */ _withScopeId$1U(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u7B49\u4E8E', -1)
)
const _hoisted_26$i = ['onClick']
const _hoisted_27$i = { class: 'other-settings' }
const _hoisted_28$h = /* @__PURE__ */ _withScopeId$1U(() =>
/* @__PURE__ */ createElementVNode(
'h5',
{ class: 'white-label' },
'\u6700\u5927\u6570\u636E\u91CF',
-1
)
)
const _hoisted_29$e = { class: 'form-item' }
const _hoisted_30$e = /* @__PURE__ */ _withScopeId$1U(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'left-label' },
'\u8FD0\u884C\u6A21\u5F0F',
-1
)
)
const _hoisted_31$c = { class: 'form-item' }
const _hoisted_32$c = /* @__PURE__ */ _withScopeId$1U(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'left-label white-label' },
'\u7FFB\u9875\u8BBE\u7F6E',
-1
)
)
const _hoisted_33$c = { class: 'form-item refresh-item' }
const _hoisted_34$9 = /* @__PURE__ */ _withScopeId$1U(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u79D2\u4E00\u6B21', -1)
)
const _hoisted_35$9 = /* @__PURE__ */ _withScopeId$1U(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'dialog-content' },
[
/* @__PURE__ */ createElementVNode(
'div',
null,
'\u5220\u9664\u540E\u8BE5\u6570\u636E\u96C6\u7684\u914D\u7F6E\u5C06\u4F1A\u5931\u6548\uFF0C\u662F\u5426\u786E\u8BA4\u5220\u9664\uFF1F'
),
],
-1
)
)
const _hoisted_36$8 = { class: 'el-dialog__footer' }
const _hoisted_37$8 = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_38$7 = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _hoisted_39$6 = /* @__PURE__ */ _withScopeId$1U(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'dialog-content' },
[
/* @__PURE__ */ createElementVNode(
'div',
null,
'\u5207\u6362\u540E\u8BE5\u6570\u636E\u96C6\u7684\u914D\u7F6E\u5C06\u4F1A\u5931\u6548\uFF0C\u662F\u5426\u786E\u8BA4\u5207\u6362\uFF1F'
),
],
-1
)
)
const _hoisted_40$6 = { class: 'el-dialog__footer' }
const _hoisted_41$6 = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_42$5 = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$3w = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
const sheet = reactive($props2.node.props.sheet)
const sheetConfig = reactive(sheet.config)
const pageSizes = SheetConfig.pageSizes
const drag = (e2, field2) => {
const data2 = {
isField: true,
targetCanvasNodeId: node2.id,
}
Field.currentDragField = field2
e2.dataTransfer?.setData(
'application/json',
JSON.stringify(data2, null, ' ')
)
}
const addDataSet = () => {
let dataConfig = new SheetDataSetConfig()
sheetConfig.sheetDataSetConfigList.push(dataConfig)
changeTab(sheetConfig.sheetDataSetConfigList.length - 1)
if (dataConfig.fieldRelationList.length === 0) {
dataConfig.addFieldToRelationList()
}
}
const deleteDataSetByIndex = (index2) => {
if (index2 === currentDataSetIndex.value) {
changeTab(0)
}
sheetConfig.sheetDataSetConfigList.splice(index2, 1)
}
const isHistory = computed(() => {
return sheetConfig.specialId === 'history'
})
const switchDataType = (type4) => {
if (currentSheetDataSetConfig.value && currentSheetDataSetConfig.value) {
currentSheetDataSetConfig.value.dataSet = void 0
}
sheetConfig.sheetDataSetConfigList.length = 1
type4 === 'history' ? getHistoryDataSetList(false) : getDataSetList(false)
}
watch$1(
() => sheetConfig.specialId,
(type4) => {
type4 === 'history'
? getHistoryDataSetList(false)
: getDataSetList(false)
}
)
const switchDataSet = (setItem) => {
const isHave = sheetConfig.sheetDataSetConfigList.some(
(item2) => item2.dataSet?.id === setItem.id
)
if (isHave) {
toast('\u5DF2\u5B58\u5728\u76F8\u540C\u6570\u636E\u96C6', 'warning')
return
}
currentSheetDataSetConfig.value?.selectDataSet(
new DataSet({
specialId: sheetConfig.specialId,
id: setItem.id,
name: setItem.name,
type: setItem.nodeType,
})
)
if (currentDataSetIndex.value !== 0) {
currentSheetDataSetConfig.value?.addFieldToRelationList()
}
}
const updateSheetDataSetFieldList = () => {
currentSheetDataSetConfig.value?.dataSet?.fetch()
}
let tabsRef = ref()
let currentDataSetIndex = ref(0)
let currentSheetDataSetConfig = ref({})
watch$1(
() => currentDataSetIndex.value,
(newValue) => {
let config2 = sheetConfig.sheetDataSetConfigList[newValue]
if (config2) {
currentSheetDataSetConfig.value = config2
} else {
currentDataSetIndex.value = 0
}
},
{
immediate: true,
}
)
watch$1(
() => sheetConfig.sheetDataSetConfigList.length,
(newValue) => {
if (newValue < currentDataSetIndex.value + 1) {
currentDataSetIndex.value = 0
}
}
)
const changeTab = (index2) => {
currentDataSetIndex.value = index2
}
const next = () => {
let num2 = 0
let transform3 = tabsRef.value.style.transform
let offset2 = 90
if (tabsRef.value.style.transform) {
num2 = parseFloat(transform3.split('(')[1].split('px')[0])
}
let tabsItems = tabsRef.value.getElementsByClassName('tab-item')
let tabsItemWidth = tabsItems[0].getBoundingClientRect().width
let len2 = (tabsItems.length - 1) * tabsItemWidth
if (len2 + num2 + offset2 - tabsRef.value.clientWidth <= 0) return
tabsRef.value.style.transform = `translateX(${num2 - tabsItemWidth}px)`
}
const pre = () => {
let num2 = 0
let transform3 = tabsRef.value.style.transform
let tabsItems = tabsRef.value.getElementsByClassName('tab-item')
let tabsItemWidth = tabsItems[0].getBoundingClientRect().width
if (tabsRef.value.style.transform) {
num2 = parseFloat(transform3.split('(')[1].split('px')[0])
}
if (num2 == 0) return
tabsRef.value.style.transform = `translateX(${num2 + tabsItemWidth}px)`
}
const treeRef = ref()
const treeProps2 = {
label: 'name',
disabled: false,
}
const loopHandleDataSetList = (list2) => {
for (let i2 = 0; i2 < list2.length; i2++) {
let item2 = list2[i2]
item2.value = item2.id
if (item2.type) {
item2.nodeType = item2.type
}
if (item2.children && item2.children.length)
loopHandleDataSetList(item2.children)
}
return list2
}
let respDataSetList = ref([])
const getDataSetList = async (updateDataSet = true) => {
let res = await SheetConfig.getDataSetList(updateDataSet)
respDataSetList.value = loopHandleDataSetList(res)
}
const getHistoryDataSetList = async (updateDataSet = true) => {
let res = await SheetConfig.getHistoryDataSetList(updateDataSet)
respDataSetList.value = loopHandleDataSetList(res)
}
const FieldRelation = computed(() => {
return currentSheetDataSetConfig.value?.fieldRelationList || []
})
const addFieldRelation = () => {
currentSheetDataSetConfig.value?.addFieldToRelationList()
}
const deleteFieldRelation = (index2) => {
currentSheetDataSetConfig.value?.fieldRelationList.splice(index2, 1)
}
const mainName = computed(() => {
return (
sheetConfig.sheetDataSetConfigList[0]?.dataSet?.name ||
`\u6570\u636E\u96C61`
)
})
const subName = computed(() => {
return (
currentSheetDataSetConfig.value?.dataSet?.name ||
`\u6570\u636E\u96C6${currentDataSetIndex.value + 1}`
)
})
const mainFieldList = computed(() => {
return sheetConfig.sheetDataSetConfigList[0]?.dataSet?.fieldList || []
})
const subFieldList = computed(() => {
return currentSheetDataSetConfig.value?.dataSet?.fieldList || []
})
const filterKeyword = ref('')
const filterSubFieldList = computed(() => {
if (!filterKeyword.value) return subFieldList.value
return subFieldList.value.filter(
(item2) => item2.name.indexOf(filterKeyword.value) !== -1
)
})
function getFieldsFromFormula(formula) {
const f2 = formula.formula
const regex3 = /\[(.*?)\]/g
const matches2 = [...f2.matchAll(regex3)]
return matches2.map((m2) => m2[1])
}
const isNotHaveInMainFieldList = (formula) => {
if (formula.formula === '') return false
const fields = getFieldsFromFormula(formula)
return !fields.every((f2) =>
mainFieldList.value.some((s2) => s2.name === f2)
)
}
const isNotHaveInSubFieldList = (formula) => {
if (formula.formula === '') return false
const fields = getFieldsFromFormula(formula)
if (fields.length === 0) return false
return !fields.every((f2) =>
subFieldList.value.some((s2) => s2.name === f2)
)
}
let fieldEditVisible = ref(false)
const openFieldEditDialog = () => {
let currentDataSetId = currentSheetDataSetConfig.value?.dataSet?.id
if (!currentDataSetId) return
if (isHistory.value) {
variateVisible.value = true
} else {
fieldEditVisible.value = true
}
}
let deleteDialogInfo = reactive({
visible: false,
deleteIndex: null,
})
const openDeleteDialog = (deleteIndex) => {
if (!sheetConfig.sheetDataSetConfigList[deleteIndex]?.dataSet) {
deleteDataSetByIndex(deleteIndex)
return
}
deleteDialogInfo.deleteIndex = deleteIndex
deleteDialogInfo.visible = true
}
const twiceConfirmDeleteDataSet = () => {
if (deleteDialogInfo.deleteIndex === null) return
deleteDataSetByIndex(deleteDialogInfo.deleteIndex)
deleteDialogInfo.visible = false
}
let switchDialogInfo = reactive({
visible: false,
setItem: null,
})
const openSwitchDialog = (setItem) => {
if (setItem.nodeType === 1) return
if (!currentSheetDataSetConfig.value?.dataSet?.id) {
switchDataSet(setItem)
return
}
switchDialogInfo.setItem = setItem
switchDialogInfo.visible = true
}
const twiceConfirmSwitchDataSet = () => {
if (switchDialogInfo.setItem === null) return
switchDataSet(switchDialogInfo.setItem)
switchDialogInfo.visible = false
}
const formulaConfig = reactive({
formulaInstance: null,
visible: false,
dialogFormula: '',
fieldList: [],
})
const formulaConfirm = (formula) => {
if (formulaConfig.formulaInstance) {
formulaConfig.formulaInstance.formula = formula
}
formulaConfig.formulaInstance = null
}
const openFormulaDialog = (formulaInstance, type4) => {
const fieldList =
type4 === 'mine' ? subFieldList.value : mainFieldList.value
formulaConfig.formulaInstance = formulaInstance
formulaConfig.dialogFormula = formulaConfig.formulaInstance.formula
formulaConfig.visible = true
formulaConfig.fieldList = conversionFieldList(fieldList)
if (type4 === 'mine') {
const mine = currentSheetDataSetConfig.value?.dataSet
mine && formulaInstance.setDataSet(mine)
}
if (type4 === 'main') {
const main2 = sheetConfig.sheetDataSetConfigList[0]?.dataSet
main2 && formulaInstance.setDataSet(main2)
}
}
const conversionFieldList = (fieldList) => {
return fieldList.map((field2) => {
return { fieldName: field2.name }
})
}
let variateVisible = ref(false)
const variateCancel = () => {
variateVisible.value = false
}
const variateConfirm = async (variables) => {
const data2 = variables.map((variable) => variable.id)
const id2 = currentSheetDataSetConfig.value?.dataSet?.id
if (!id2) return
await addHistoryVariable(id2, data2)
variateVisible.value = false
currentSheetDataSetConfig.value?.dataSet?.fetch()
}
onMounted(() => {
isHistory.value ? getHistoryDataSetList() : getDataSetList()
})
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_tree_select = resolveComponent('el-tree-select')
const _component_el_input = resolveComponent('el-input')
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_sfc_main$72,
{
title: '\u6570\u636E',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$3g, [
createElementVNode('div', _hoisted_2$2X, [
createElementVNode('i', {
class: 'iconfont control-btn icon-zuo11',
onClick: pre,
}),
createElementVNode('i', {
class: 'iconfont control-btn icon-you11',
onClick: next,
}),
!isHistory.value
? (openBlock(),
createElementBlock('i', {
key: 0,
class: 'iconfont iconfont icon-tianjiahuamian add-atn',
onClick: addDataSet,
}))
: createCommentVNode('', true),
createElementVNode(
'div',
{
class: 'tabs',
ref_key: 'tabsRef',
ref: tabsRef,
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(sheetConfig).sheetDataSetConfigList,
(item2, index2) => {
return (
openBlock(),
createElementBlock(
'div',
{
key: index2,
class: normalizeClass([
'tab-item',
{
active:
currentDataSetIndex.value == index2,
},
]),
onClick: ($event) => changeTab(index2),
title:
item2.dataSet?.name ||
`\u6570\u636E\u96C6${index2 + 1}`,
},
[
createElementVNode(
'div',
_hoisted_4$2j,
toDisplayString$1(
item2.dataSet?.name ||
`\u6570\u636E\u96C6${index2 + 1}`
),
1
),
index2 !== 0
? (openBlock(),
createElementBlock(
'i',
{
key: 0,
class: 'iconfont icon-shanchujilu',
onClick: withModifiers(
($event) =>
openDeleteDialog(index2),
['stop']
),
},
null,
8,
_hoisted_5$23
))
: createCommentVNode('', true),
],
10,
_hoisted_3$2I
)
)
}
),
128
)),
],
512
),
]),
createElementVNode('div', _hoisted_6$1Q, [
createElementVNode(
'div',
{
class: normalizeClass([
'form-item',
{ 'dataset-item': currentDataSetIndex.value === 0 },
]),
},
[
_hoisted_7$1z,
currentDataSetIndex.value === 0
? (openBlock(),
createBlock(
_component_el_select,
{
key: 0,
onChange: switchDataType,
class: 'cms-el-select-x mr',
modelValue: unref(sheetConfig).specialId,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(sheetConfig).specialId = $event)),
'popper-class': 'cms-el-select_check',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(SheetConfig).dataTypes,
(optionItem, optionItemIndex) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
label: optionItem.label,
value: optionItem.value,
key: optionItemIndex,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 1,
},
8,
['modelValue']
))
: createCommentVNode('', true),
createVNode$1(
_component_el_tree_select,
{
ref_key: 'treeRef',
ref: treeRef,
'node-key': 'id',
class: 'cms-el-select-x data-tree-select',
'popper-class': 'cms-el-select_check',
data: respDataSetList.value,
'model-value': unref(currentSheetDataSetConfig)
?.dataSet?.id,
'show-all-levels': false,
props: treeProps2,
onNodeClick:
_cache[1] ||
(_cache[1] = ($event) => openSwitchDialog($event)),
placeholder: '\u8BF7\u9009\u62E9\u6570\u636E\u96C6',
},
null,
8,
['data', 'model-value']
),
],
2
),
createElementVNode('div', _hoisted_8$1p, [
_hoisted_9$1j,
createVNode$1(
_component_el_input,
{
modelValue: filterKeyword.value,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(filterKeyword.value = $event)),
class: 'cms-el-input Field-input',
placeholder: '\u8BF7\u8F93\u5165\u5173\u952E\u5B57',
},
null,
8,
['modelValue']
),
createElementVNode('i', {
class: 'iconfont icon-bianjigongcheng edit-field-icon',
onClick: openFieldEditDialog,
}),
]),
createElementVNode('div', _hoisted_10$1f, [
createElementVNode('div', _hoisted_11$17, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(filterSubFieldList.value, (fieldItem) => {
return (
openBlock(),
createElementBlock(
'div',
{
draggable: 'true',
ondragstart: (e2) => drag(e2, fieldItem),
class: 'fieldSet-list_fieldItem',
key: fieldItem.id,
title: fieldItem.name,
},
toDisplayString$1(fieldItem.name),
9,
_hoisted_12$14
)
)
}),
128
)),
]),
]),
]),
currentDataSetIndex.value !== 0
? (openBlock(),
createElementBlock('div', _hoisted_13$Z, [
createElementVNode(
'div',
{ class: 'field-association_header' },
[
_hoisted_14$U,
createElementVNode('i', {
class:
'iconfont iconfont icon-tianjiahuamian addIcon',
onClick: addFieldRelation,
}),
]
),
createElementVNode('div', _hoisted_15$R, [
createElementVNode('div', _hoisted_16$Q, [
createElementVNode('div', _hoisted_17$K, [
_hoisted_18$F,
createElementVNode(
'label',
{
class: 'name',
title: mainName.value,
},
toDisplayString$1(mainName.value) + ':',
9,
_hoisted_19$C
),
]),
createElementVNode('div', _hoisted_20$A, [
_hoisted_21$t,
createElementVNode(
'label',
{
class: 'name',
title: subName.value,
},
toDisplayString$1(subName.value) + ':',
9,
_hoisted_22$r
),
]),
]),
createElementVNode('div', _hoisted_23$o, [
createElementVNode('div', _hoisted_24$o, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(FieldRelation.value, (reItem, idx) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'association-list_fieldItem',
key: idx,
},
[
createVNode$1(
_component_el_input,
{
class: normalizeClass([
'cms-el-input data-input',
{
'not-have':
isNotHaveInMainFieldList(
reItem[1]
),
},
]),
title: isNotHaveInMainFieldList(
reItem[1]
)
? '\u5173\u8054\u516C\u5F0F\u4E2D\u5305\u542B\u9519\u8BEF\u5B57\u6BB5\u540D\uFF0C\u8BF7\u91CD\u65B0\u4FEE\u6539'
: '',
'model-value': reItem[1]?.formula,
placeholder:
'\u8BF7\u8F93\u5165\u516C\u5F0F',
onClick: ($event) =>
openFormulaDialog(
reItem[1],
'main'
),
},
null,
8,
[
'class',
'title',
'model-value',
'onClick',
]
),
_hoisted_25$j,
createVNode$1(
_component_el_input,
{
class: normalizeClass([
'cms-el-input data-input',
{
'not-have':
isNotHaveInSubFieldList(
reItem[0]
),
},
]),
title: isNotHaveInSubFieldList(
reItem[0]
)
? '\u5173\u8054\u516C\u5F0F\u4E2D\u5305\u542B\u9519\u8BEF\u5B57\u6BB5\u540D\uFF0C\u8BF7\u91CD\u65B0\u4FEE\u6539'
: '',
'model-value': reItem[0]?.formula,
placeholder:
'\u8BF7\u8F93\u5165\u516C\u5F0F',
onClick: ($event) =>
openFormulaDialog(
reItem[0],
'mine'
),
},
null,
8,
[
'class',
'title',
'model-value',
'onClick',
]
),
createElementVNode(
'i',
{
class: 'iconfont icon-qingchu',
onClick: ($event) =>
deleteFieldRelation(idx),
},
null,
8,
_hoisted_26$i
),
]
)
)
}),
128
)),
]),
]),
]),
]))
: createCommentVNode('', true),
createElementVNode('div', _hoisted_27$i, [
_hoisted_28$h,
createElementVNode('div', _hoisted_29$e, [
_hoisted_30$e,
createVNode$1(
_component_el_input_number,
{
modelValue: unref(sheetConfig).limit.running,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(sheetConfig).limit.running = $event)),
class: 'cms-el-input-number-x',
'controls-position': 'right',
min: 0,
max: 1e6,
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_31$c, [
_hoisted_32$c,
createVNode$1(
_component_el_select,
{
modelValue: unref(sheetConfig).pageSize,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(sheetConfig).pageSize = $event)),
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(pageSizes),
(optionItem, optionItemIndex) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
label: optionItem.label,
value: optionItem.value,
key: optionItemIndex,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_33$c, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(sheetConfig).autoRefresh,
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) =>
(unref(sheetConfig).autoRefresh = $event)),
label: '\u81EA\u52A8\u5237\u65B0\u6570\u636E',
size: 'large',
class: 'cms-el-checkbox-font-size-12',
},
null,
8,
['modelValue']
),
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
'controls-position': 'right',
modelValue: unref(sheetConfig).autoRefreshTime,
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) =>
(unref(sheetConfig).autoRefreshTime = $event)),
min: 1,
},
null,
8,
['modelValue']
),
_hoisted_34$9,
]),
]),
]),
createVNode$1(
_component_el_dialog,
{
'append-to-body': '',
modelValue: unref(deleteDialogInfo).visible,
'onUpdate:modelValue':
_cache[9] ||
(_cache[9] = ($event) =>
(unref(deleteDialogInfo).visible = $event)),
title: '\u7CFB\u7EDF\u63D0\u793A',
width: '450px',
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
},
{
default: withCtx(() => [
_hoisted_35$9,
createElementVNode('div', _hoisted_36$8, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick:
_cache[7] ||
(_cache[7] = ($event) =>
(unref(deleteDialogInfo).visible = false)),
},
{
default: withCtx(() => [_hoisted_37$8]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick:
_cache[8] ||
(_cache[8] = ($event) =>
twiceConfirmDeleteDataSet()),
},
{
default: withCtx(() => [_hoisted_38$7]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_dialog,
{
'append-to-body': '',
modelValue: unref(switchDialogInfo).visible,
'onUpdate:modelValue':
_cache[11] ||
(_cache[11] = ($event) =>
(unref(switchDialogInfo).visible = $event)),
title: '\u7CFB\u7EDF\u63D0\u793A',
width: '450px',
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
},
{
default: withCtx(() => [
_hoisted_39$6,
createElementVNode('div', _hoisted_40$6, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick:
_cache[10] ||
(_cache[10] = ($event) =>
(unref(switchDialogInfo).visible = false)),
},
{
default: withCtx(() => [_hoisted_41$6]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: twiceConfirmSwitchDataSet,
},
{
default: withCtx(() => [_hoisted_42$5]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
),
unref(currentSheetDataSetConfig)?.dataSet?.id
? (openBlock(),
createBlock(
DataFieldConfigDialog,
{
key: 0,
node: unref(node2),
modelValue: fieldEditVisible.value,
'onUpdate:modelValue':
_cache[12] ||
(_cache[12] = ($event) =>
(fieldEditVisible.value = $event)),
id: unref(currentSheetDataSetConfig)?.dataSet?.id,
onConfirm: updateSheetDataSetFieldList,
},
null,
8,
['node', 'modelValue', 'id']
))
: createCommentVNode('', true),
(openBlock(),
createBlock(
FormulaConfigDialog,
{
key: new Date().getTime(),
modelValue: unref(formulaConfig).visible,
'onUpdate:modelValue':
_cache[13] ||
(_cache[13] = ($event) =>
(unref(formulaConfig).visible = $event)),
code: unref(formulaConfig).dialogFormula,
fieldList: unref(formulaConfig).fieldList,
'incompatible-tag': 'ReportFieldAssociation',
onChange: formulaConfirm,
},
null,
8,
['modelValue', 'code', 'fieldList']
)),
createVNode$1(
unref(_sfc_main$6Q),
{
visible: variateVisible.value,
noLanguage: true,
isMultiple: true,
isAppendToBody: true,
onCancel: variateCancel,
onConfirm: variateConfirm,
},
null,
8,
['visible']
),
]),
_: 1,
}
)
)
}
},
})
var Data$2 = /* @__PURE__ */ _export_sfc(_sfc_main$3w, [
['__scopeId', 'data-v-217b57e1'],
])
var Data$3 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Data$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Title_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$1T = (n2) => (
pushScopeId('data-v-11641550'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3f = { class: 'title-setting' }
const _hoisted_2$2W = /* @__PURE__ */ _withScopeId$1T(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'checkbox-text' },
'\u663E\u793A\u6807\u9898',
-1
)
)
const _hoisted_3$2H = { class: 'text' }
const _sfc_main$3v = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
const sheet = reactive($props2.node.props.sheet)
const sheetConfig = reactive(sheet.config)
const changeText = () => {
if (!sheetConfig.title.text.trim()) {
sheetConfig.title.text = node2.name
}
}
onMounted(() => {
changeText()
})
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_input = resolveComponent('el-input')
return (
openBlock(),
createBlock(
_sfc_main$72,
{
title: '\u6807\u9898',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$3f, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(sheetConfig).title.enabled,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(sheetConfig).title.enabled = $event)),
class: 'cms-el-checkbox-font-size-12',
},
{
default: withCtx(() => [_hoisted_2$2W]),
_: 1,
},
8,
['modelValue']
),
createElementVNode('div', _hoisted_3$2H, [
createVNode$1(
_component_el_input,
{
disabled: !unref(sheetConfig).title.enabled,
class: 'input cms-el-input-x',
modelValue: unref(sheetConfig).title.text,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(sheetConfig).title.text = $event)),
placeholder: unref(node2).name,
onChange: changeText,
},
null,
8,
['disabled', 'modelValue', 'placeholder']
),
]),
]),
]),
_: 1,
}
)
)
}
},
})
var Title = /* @__PURE__ */ _export_sfc(_sfc_main$3v, [
['__scopeId', 'data-v-11641550'],
])
var Title$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Title,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ReportSetting_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$1S = (n2) => (
pushScopeId('data-v-6a56b51e'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3e = { class: 'report-settings' }
const _hoisted_2$2V = /* @__PURE__ */ _withScopeId$1S(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'report-settings_title' },
[
/* @__PURE__ */ createElementVNode(
'span',
null,
' \u5C55\u793A\u8BBE\u7F6E\uFF1A'
),
/* @__PURE__ */ createElementVNode('i', {
class: 'padding-head-icon iconfont icon-tishi1',
'data-tooltip-raw-content': '',
title:
'\u8BBE\u7F6E\u6570\u636E\u96C6\u5B57\u6BB5\u6269\u5C55\u65B9\u5F0F',
}),
],
-1
)
)
const _hoisted_3$2G = { class: 'left-label' }
const _hoisted_4$2i = { class: 'form-item' }
const _hoisted_5$22 = /* @__PURE__ */ _withScopeId$1S(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'left-label' },
'\u533A\u57DF\u4F4D\u79FB',
-1
)
)
const _sfc_main$3u = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const sheet = reactive($props2.node.props.sheet)
const sheetConfig = reactive(sheet.config)
const allDataLoopTypes = Object.values(SheetDataSetConfig.dataLoopTypes)
const sheetDataSetConfigListLength = computed(() => {
return sheetConfig.sheetDataSetConfigList.length
})
const mainDataLoopTypes = computed(() => {
return sheetDataSetConfigListLength.value > 1
? dataLoopTypesOnlySheet
: allDataLoopTypes
})
const dataLoopTypesNotSheet = allDataLoopTypes.filter(
(item2) => item2.value !== SheetDataSetConfig.dataLoopTypes.sheet.value
)
const dataLoopTypesOnlySheet = allDataLoopTypes.filter(
(item2) => item2.value === SheetDataSetConfig.dataLoopTypes.sheet.value
)
watch$1(sheetDataSetConfigListLength, (newValue) => {
if (newValue === 1) return false
const mainConfig = sheetConfig.sheetDataSetConfigList?.[0]
if (!mainConfig) return false
mainConfig.dataLoopType = SheetDataSetConfig.dataLoopTypes.sheet.value
})
const translateTypes = Object.values(SheetConfig.translateTypes)
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
return (
openBlock(),
createBlock(
_sfc_main$72,
{
title: '\u62A5\u8868\u8BBE\u7F6E',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$3e, [
_hoisted_2$2V,
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(sheetConfig).sheetDataSetConfigList,
(dataSetConfig, dataSetConfigIndex) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'form-item',
key: dataSetConfigIndex,
},
[
createElementVNode(
'span',
_hoisted_3$2G,
'\u6570\u636E\u96C6' +
toDisplayString$1(dataSetConfigIndex + 1),
1
),
dataSetConfigIndex === 0
? (openBlock(),
createBlock(
_component_el_select,
{
key: 0,
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
placeholder: '\u8BF7\u9009\u62E9',
modelValue: dataSetConfig.dataLoopType,
'onUpdate:modelValue': ($event) =>
(dataSetConfig.dataLoopType = $event),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(mainDataLoopTypes),
(optionItem, optionItemIndex) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
label: optionItem.label,
value: optionItem.value,
key: optionItemIndex,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue']
))
: (openBlock(),
createBlock(
_component_el_select,
{
key: 1,
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
placeholder: '\u8BF7\u9009\u62E9',
modelValue: dataSetConfig.dataLoopType,
'onUpdate:modelValue': ($event) =>
(dataSetConfig.dataLoopType = $event),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(dataLoopTypesNotSheet),
(optionItem, optionItemIndex) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
label: optionItem.label,
value: optionItem.value,
key: optionItemIndex,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue']
)),
]
)
)
}
),
128
)),
createElementVNode('div', _hoisted_4$2i, [
_hoisted_5$22,
createVNode$1(
_component_el_select,
{
modelValue: unref(sheetConfig).translateType,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(sheetConfig).translateType = $event)),
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(translateTypes),
(optionItem, optionItemIndex) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
label: optionItem.label,
value: optionItem.value,
key: optionItemIndex,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
]),
]),
_: 1,
}
)
)
}
},
})
var ReportSetting = /* @__PURE__ */ _export_sfc(_sfc_main$3u, [
['__scopeId', 'data-v-6a56b51e'],
])
var ReportSetting$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ReportSetting,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var StyleConditionsDialog_vue_vue_type_style_index_0_scoped_true_lang = ''
var StyleConditionsDialog_vue_vue_type_style_index_1_lang = ''
const _withScopeId$1R = (n2) => (
pushScopeId('data-v-f1b4b616'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3d = { class: 'content' }
const _hoisted_2$2U = /* @__PURE__ */ _withScopeId$1R(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'item-cell handle-paixu' },
[/* @__PURE__ */ createElementVNode('i', { class: 'iconfont icon-paixu' })],
-1
)
)
const _hoisted_3$2F = { class: 'item-cell' }
const _hoisted_4$2h = { class: 'cms-el-color-picker-x color-picker' }
const _hoisted_5$21 = { class: 'cms-el-color-picker-x color-picker' }
const _hoisted_6$1P = /* @__PURE__ */ _withScopeId$1R(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'item-cell' },
[/* @__PURE__ */ createElementVNode('div', { class: 'field' }, '\u503C')],
-1
)
)
const _hoisted_7$1y = { class: 'item-cell' }
const _hoisted_8$1o = { class: 'item-cell' }
const _hoisted_9$1i = ['onClick']
const _sfc_main$3t = /* @__PURE__ */ defineComponent({
props: {
visible: { type: Boolean },
title: null,
conditionList: null,
operatorList: null,
},
emits: ['confirm', 'close'],
setup(__props2, { emit: $emit }) {
const props2 = __props2
const dialogUlList = ref()
let conditionList2 = ref(
props2.conditionList.length > 0
? JSON.parse(JSON.stringify(props2.conditionList))
: [
{
operator: '',
content: '',
style: {
backgroundColor: '#80A8D5',
color: '#80A8D5',
},
},
]
)
const cancel2 = () => {
$emit('close')
}
const confirm2 = () => {
for (let i2 = 0; i2 < conditionList2.value.length; i2++) {
let item2 = conditionList2.value[i2]
if (item2.operator == '') {
ElMessage({
message: '\u6761\u4EF6\u9009\u9879\u4E0D\u80FD\u4E3A\u7A7A',
type: 'warning',
customClass: 'cms-el-message el-message--error',
})
return
}
if (item2.content == '') {
ElMessage({
message: '\u6761\u4EF6\u4E0D\u80FD\u4E3A\u7A7A',
type: 'warning',
customClass: 'cms-el-message el-message--error',
})
return
}
}
$emit('confirm', conditionList2.value)
cancel2()
}
const addCondition = () => {
conditionList2.value.push({
operator: '',
content: '',
style: {
backgroundColor: '#80A8D5',
},
})
}
const delItem = (item2, index2) => {
conditionList2.value.splice(index2, 1)
}
let sortable = null
const initSortable = () => {
nextTick(() => {
if (!dialogUlList.value) return
sortable = Sortable.create(dialogUlList.value, {
sort: true,
animation: 150,
handle: '.handle-paixu',
preventOnFilter: true,
ghostClass: 'blue-background-class',
onStart: () => {},
onEnd: (val2) => {
let oldIndex2 = val2.oldIndex
let newIndex2 = val2.newIndex
if (oldIndex2 > newIndex2) {
conditionList2.value.splice(
newIndex2,
0,
conditionList2.value[oldIndex2]
)
conditionList2.value.splice(oldIndex2 + 1, 1)
} else {
conditionList2.value.splice(
newIndex2,
0,
conditionList2.value[oldIndex2]
)
conditionList2.value.splice(oldIndex2, 1)
}
},
})
})
}
onMounted(() => {
initSortable()
})
onUnmounted(() => {
sortable && sortable.destroy()
})
return (_ctx, _cache) => {
const _component_el_color_picker = resolveComponent('el-color-picker')
const _component_el_tooltip = resolveComponent('el-tooltip')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input = resolveComponent('el-input')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
'model-value': __props2.visible,
width: '570px',
top: '26vh',
title: __props2.title,
'custom-class': 'cms-el-dialog condition-dialog',
onClose: cancel2,
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$3d, [
createElementVNode('div', { class: 'header' }, [
createElementVNode(
'button',
{
class: 'cms-btn btn-screen-btn',
onClick: addCondition,
},
'\u6DFB\u52A0'
),
]),
createElementVNode(
'ul',
{
ref_key: 'dialogUlList',
ref: dialogUlList,
id: 'dialogUlList',
class: 'list',
onUpdate:
_cache[0] ||
(_cache[0] = withModifiers(() => {}, ['stop'])),
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(conditionList2.value, (item2, index2) => {
return (
openBlock(),
createElementBlock(
'li',
{
class: 'list-item',
key: index2,
},
[
_hoisted_2$2U,
createElementVNode('div', _hoisted_3$2F, [
createVNode$1(
_component_el_tooltip,
{
teleported: '',
persistent: '',
content: '\u586B\u5145\u8272',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_4$2h, [
createVNode$1(
_component_el_color_picker,
{
predefine: unref(colorList),
'show-alpha': '',
modelValue:
item2.style.backgroundColor,
'onUpdate:modelValue': ($event) =>
(item2.style.backgroundColor =
$event),
},
null,
8,
[
'predefine',
'modelValue',
'onUpdate:modelValue',
]
),
]),
]),
_: 2,
},
1024
),
createVNode$1(
_component_el_tooltip,
{
teleported: '',
persistent: '',
content: '\u5B57\u4F53\u8272',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_5$21, [
createVNode$1(
_component_el_color_picker,
{
predefine: unref(colorList),
'show-alpha': '',
modelValue: item2.style.color,
'onUpdate:modelValue': ($event) =>
(item2.style.color = $event),
},
null,
8,
[
'predefine',
'modelValue',
'onUpdate:modelValue',
]
),
]),
]),
_: 2,
},
1024
),
]),
_hoisted_6$1P,
createElementVNode('div', _hoisted_7$1y, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select add-select',
'popper-class': 'cms-el-select_check',
modelValue: item2.operator,
'onUpdate:modelValue': ($event) =>
(item2.operator = $event),
'allow-create': '',
filterable: '',
placeholder: '\u6761\u4EF6',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
props2.operatorList,
(item1) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item1.value,
label: item1.label,
value: item1.value,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue']
),
]),
createElementVNode('div', _hoisted_8$1o, [
createVNode$1(
_component_el_input,
{
modelValue: item2.content,
'onUpdate:modelValue': ($event) =>
(item2.content = $event),
class:
'cms-el-input-min cms-el-input-number add-select1',
placeholder:
'\u8BF7\u8F93\u5165\u6761\u4EF6',
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
]),
createElementVNode(
'i',
{
class: 'iconfont icon-tupianshanchu',
onClick: ($event) => delItem(item2, index2),
},
null,
8,
_hoisted_9$1i
),
]
)
)
}),
128
)),
],
544
),
]),
createElementVNode(
'div',
{ class: 'el-dialog__footer el-dialog__footer1' },
[
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: cancel2,
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: confirm2,
},
'\u786E\u8BA4'
),
]
),
]),
_: 1,
},
8,
['model-value', 'title']
)
)
}
},
})
var StyleConditionsDialog = /* @__PURE__ */ _export_sfc(_sfc_main$3t, [
['__scopeId', 'data-v-f1b4b616'],
])
var StyleConditionsDialog$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: StyleConditionsDialog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var CellElement_vue_vue_type_style_index_0_scoped_true_lang = ''
var CellElement_vue_vue_type_style_index_1_lang = ''
const _withScopeId$1Q = (n2) => (
pushScopeId('data-v-7df55e64'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3c = { class: 'cell-element' }
const _hoisted_2$2T = /* @__PURE__ */ _withScopeId$1Q(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'cell-element_title' },
'\u5355\u5143\u683C\u5143\u7D20\uFF1A',
-1
)
)
const _hoisted_3$2E = { class: 'form-item' }
const _hoisted_4$2g = /* @__PURE__ */ _withScopeId$1Q(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'left-label' },
'\u540D\u79F0 ',
-1
)
)
const _hoisted_5$20 = { class: 'form-item' }
const _hoisted_6$1O = /* @__PURE__ */ _withScopeId$1Q(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'left-label' },
'\u63D2\u5165\u5143\u7D20',
-1
)
)
const _hoisted_7$1x = {
key: 0,
class: 'form-item',
}
const _hoisted_8$1n = /* @__PURE__ */ _withScopeId$1Q(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'left-label' },
'\u5185\u5BB9 ',
-1
)
)
const _hoisted_9$1h = {
key: 1,
class: 'form-item',
}
const _hoisted_10$1e = /* @__PURE__ */ _withScopeId$1Q(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'left-label' },
'\u5185\u5BB9 ',
-1
)
)
const _hoisted_11$16 = {
key: 2,
class: 'form-item',
}
const _hoisted_12$13 = /* @__PURE__ */ _withScopeId$1Q(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'left-label' },
'\u5185\u5BB9 ',
-1
)
)
const _hoisted_13$Y = {
key: 3,
class: 'form-item',
}
const _hoisted_14$T = /* @__PURE__ */ _withScopeId$1Q(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'left-label' },
'\u683C\u5F0F',
-1
)
)
const _hoisted_15$Q = {
key: 4,
class: 'form-item',
}
const _hoisted_16$P = /* @__PURE__ */ _withScopeId$1Q(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'left-label' },
'\u5C0F\u6570\u4F4D\u6570 ',
-1
)
)
const _hoisted_17$J = {
key: 5,
class: 'form-item',
}
const _hoisted_18$E = /* @__PURE__ */ _withScopeId$1Q(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'left-label' },
[
/* @__PURE__ */ createTextVNode('\u5185\u5BB9 '),
/* @__PURE__ */ createElementVNode('i', {
class: 'padding-head-icon iconfont icon-tishi1',
'data-tooltip-raw-content': '',
title:
'\u8F93\u5165\u659C\u7EBF\u5185\u5BB9\uFF0C\u4EE5 | \u8FDB\u884C\u5206\u5272\uFF1B\u793A\u4F8B\uFF1A1|2|3',
}),
],
-1
)
)
const _hoisted_19$B = {
key: 6,
class: 'form-item',
}
const _hoisted_20$z = /* @__PURE__ */ _withScopeId$1Q(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'left-label' },
'\u53D1\u6563\u65B9\u5411',
-1
)
)
const _hoisted_21$s = /* @__PURE__ */ createTextVNode(
'\u5DE6\u4E0A\u53F3\u4E0B'
)
const _hoisted_22$q = /* @__PURE__ */ createTextVNode(
'\u5DE6\u4E0B\u53F3\u4E0A'
)
const _hoisted_23$n = { class: 'form-item' }
const _hoisted_24$n = /* @__PURE__ */ _withScopeId$1Q(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'left-label' },
'\u6761\u4EF6\u6837\u5F0F ',
-1
)
)
const _hoisted_25$i = { class: 'text' }
const _hoisted_26$h = { class: 'condition-style' }
const _hoisted_27$h = { class: 'text' }
const _hoisted_28$g = {
key: 0,
class: 'delimiter',
}
const _sfc_main$3s = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const sheet = reactive($props2.node.props.sheet)
const sheetConfig = sheet.config
const contentTypeOptions = Object.values(SheetCell.contentTypes)
const formatTypeOptions = Object.values(SheetCell.formatTypes)
const isSelectCell = computed(() => {
return sheet?.selectedCells.length > 0
})
const cellName = computed(() => {
const name2 = sheet?.selectedCells[0]?.name
const title = sheetConfig.title
if (!title.text && name2) return name2
if (!title.text || !name2) return ''
if (sheet?.selectedCells && sheet?.selectedCells.length > 1) {
return `${title.text} ${sheet?.selectedCells[0]?.name}:${
lodash$2.exports.last(sheet?.selectedCells)?.name
}`
}
return `${title.text} ${sheet?.selectedCells[0]?.name}`
})
const contentType = computed(() => {
if (!sheet?.selectedCells) return ''
return sheet?.selectedCells[0]?.contentType || ''
})
const content2 = computed(() => {
if (!sheet?.selectedCells) return ''
return (
SheetCell.editorContent.value || sheet?.selectedCells[0]?.content || ''
)
})
const isAllEqual = (array4) => {
if (array4.length > 0) {
return !array4.some((value2) => {
return value2 !== array4[0]
})
} else {
return true
}
}
const selectCellsIsSameProperty = (key2) => {
const cells = sheet?.selectedCells || []
const values2 = cells.map((cell) => cell[key2])
const isSame = isAllEqual(values2)
return isSame
}
const format2 = computed(() => {
if (!sheet?.selectedCells) return ''
const firstCellFormat = sheet?.selectedCells[0]?.format
if (sheet?.selectedCells.length > 1) {
return selectCellsIsSameProperty('format') ? firstCellFormat : ''
}
return firstCellFormat || ''
})
const floatCount = computed(() => {
if (!sheet?.selectedCells) return ''
return sheet?.selectedCells[0]?.floatCount || ''
})
const referenceField = computed(() => {
if (!sheet?.selectedCells) return ''
let field2 = sheet?.selectedCells[0].content
if (field2 instanceof Field) {
return `${field2?.dataSet.name}-${field2.name}`
}
return ''
})
let slantLineDirection = computed(() => {
if (sheet.selectedCells[0].content instanceof SlantLine$2) {
return sheet.selectedCells[0].content.direction
}
return 'left'
})
let slantLineContent = computed(() => {
if (sheet.selectedCells[0].content instanceof SlantLine$2) {
return sheet.selectedCells[0].content.content
}
return ''
})
const contentTypeIsText = computed(() => {
return contentType.value === SheetCell.contentTypes.text.value
})
const contentTypeIsField = computed(() => {
return contentType.value === SheetCell.contentTypes.field.value
})
const contentTypeIsSlantLine = computed(() => {
return contentType.value === SheetCell.contentTypes.slantLine.value
})
const IsFloat = computed(() => {
const floats = ['number', 'percent']
if (!format2.value) return false
return floats.includes(format2.value)
})
const contentTypeIsVariables = computed(() => {
return contentType.value === SheetCell.contentTypes.variable.value
})
const setOptions = (cell, key2, value2) => {
if (!cell) return
if (key2 === 'contentType') {
if (value2 === SheetCell.contentTypes.slantLine.value) {
cell.content = new SlantLine$2()
} else {
cell.content = ''
}
}
if (key2 === 'slantLineContent') {
if (cell.content instanceof SlantLine$2 && typeof value2 === 'string') {
cell.content.content = value2
}
return
}
if (key2 === 'slantLineDirection') {
if (cell.content instanceof SlantLine$2) {
cell.content.direction = value2
}
return
}
cell[key2] = value2
}
const selectCellSetOptions = (key2, value2) => {
let cells = sheet.selectedCells
if (value2 === SheetCell.contentTypes.slantLine.value) {
cells = cells.filter((cell) => !cell.elseMerged)
}
for (const cell of cells) {
setOptions(cell, key2, value2)
}
}
let currentVariableName = ref('')
let pickVarDialogShown = ref(false)
const handleOpenVariable = () => {
pickVarDialogShown.value = true
currentVariableName.value = sheet.selectedCells[0].content
}
const confirm2 = (rows, index2) => {
rows[0] &&
setOptions(sheet.selectedCells[index2], 'content', rows[0].name)
pickVarDialogShown.value = false
}
let variablesConfig = computed(() => {
let cells = sheet.selectedCells.filter(
(cell) => cell.contentType === SheetCell.contentTypes.variable.value
)
return {
data: cells,
currentRow: cells[0] ?? {},
}
})
const handleChangeName = (index2, rows) => {
let cells = sheet.selectedCells
setOptions(cells[index2], 'content', rows[0].name)
currentVariableName.value = cells[index2 + 1]
? cells[index2 + 1].content
: cells[index2].content
}
const ConditionsDialogVisible = ref(false)
const operatorList2 = SheetCell.operatorList
const firstCellConditionList = computed(() => {
return sheet.selectedCells[0]?.conditionStyleList || []
})
const confirmConditionStyle = (newConditionStyleList) => {
const cells = sheet.selectedCells
for (const cell of cells) {
cell.conditionStyleList = JSON.parse(
JSON.stringify(newConditionStyleList)
)
}
}
const getLabelByOperator = (operator) => {
const targetItem = operatorList2.find((item2) => item2.value === operator)
if (targetItem) {
return targetItem.label
}
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_radio = resolveComponent('el-radio')
const _component_el_radio_group = resolveComponent('el-radio-group')
const _component_el_tooltip = resolveComponent('el-tooltip')
return (
openBlock(),
createElementBlock('div', _hoisted_1$3c, [
_hoisted_2$2T,
createElementVNode('div', _hoisted_3$2E, [
_hoisted_4$2g,
createVNode$1(
_component_el_input,
{
title: cellName.value,
disabled: true,
class: 'cms-el-input-x Field-input',
'model-value': cellName.value,
},
null,
8,
['title', 'model-value']
),
]),
createElementVNode('div', _hoisted_5$20, [
_hoisted_6$1O,
createVNode$1(
_component_el_select,
{
disabled: !isSelectCell.value,
class: 'cms-el-select-x data-tree-select',
'popper-class': 'cms-el-select_check',
'model-value': contentType.value,
onChange:
_cache[0] ||
(_cache[0] = ($event) =>
selectCellSetOptions('contentType', $event)),
placeholder: '\u8BF7\u9009\u62E9',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(contentTypeOptions), (item2, idx) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
label: item2.label,
value: item2.value,
key: idx,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['disabled', 'model-value']
),
]),
contentTypeIsText.value
? (openBlock(),
createElementBlock('div', _hoisted_7$1x, [
_hoisted_8$1n,
createVNode$1(
_component_el_input,
{
'model-value': content2.value,
onInput:
_cache[1] ||
(_cache[1] = ($event) =>
selectCellSetOptions('content', $event)),
class: 'cms-el-input Field-input',
placeholder: '\u8BF7\u8F93\u5165',
},
null,
8,
['model-value']
),
]))
: createCommentVNode('', true),
contentTypeIsVariables.value
? (openBlock(),
createElementBlock('div', _hoisted_9$1h, [
_hoisted_10$1e,
createVNode$1(
_component_el_input,
{
class: 'input cms-el-input-x',
placeholder: '\u8BF7\u9009\u62E9\u53D8\u91CF',
'model-value': content2.value,
onInput:
_cache[2] ||
(_cache[2] = ($event) =>
selectCellSetOptions('content', $event)),
},
null,
8,
['model-value']
),
createElementVNode('i', {
class: 'iconfont icon-bianjigongcheng edit-field-icon',
onClick: handleOpenVariable,
}),
]))
: createCommentVNode('', true),
contentTypeIsField.value
? (openBlock(),
createElementBlock('div', _hoisted_11$16, [
_hoisted_12$13,
createVNode$1(
_component_el_input,
{
disabled: true,
'model-value': referenceField.value,
class: 'cms-el-input-x Field-input',
title: referenceField.value,
},
null,
8,
['model-value', 'title']
),
]))
: createCommentVNode('', true),
!contentTypeIsSlantLine.value
? (openBlock(),
createElementBlock('div', _hoisted_13$Y, [
_hoisted_14$T,
createVNode$1(
_component_el_select,
{
disabled: !isSelectCell.value,
'model-value': format2.value,
onChange:
_cache[3] ||
(_cache[3] = ($event) =>
selectCellSetOptions('format', $event)),
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
placeholder: '\u8BF7\u9009\u62E9',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(formatTypeOptions), (item2, idx) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
label: item2.label,
value: item2.value,
key: idx,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['disabled', 'model-value']
),
]))
: createCommentVNode('', true),
IsFloat.value
? (openBlock(),
createElementBlock('div', _hoisted_15$Q, [
_hoisted_16$P,
createVNode$1(
_component_el_input_number,
{
'model-value': floatCount.value,
precision: 0,
onInput:
_cache[4] ||
(_cache[4] = ($event) =>
selectCellSetOptions('floatCount', $event)),
class: 'cms-el-input-number-x Field-input',
'controls-position': 'right',
placeholder: '\u8BF7\u8F93\u5165',
},
null,
8,
['model-value']
),
]))
: createCommentVNode('', true),
contentTypeIsSlantLine.value
? (openBlock(),
createElementBlock('div', _hoisted_17$J, [
_hoisted_18$E,
createVNode$1(
_component_el_input,
{
'model-value': slantLineContent.value,
onInput:
_cache[5] ||
(_cache[5] = ($event) =>
selectCellSetOptions('slantLineContent', $event)),
class: 'cms-el-input',
placeholder: '\u8BF7\u8F93\u5165',
},
null,
8,
['model-value']
),
]))
: createCommentVNode('', true),
contentTypeIsSlantLine.value
? (openBlock(),
createElementBlock('div', _hoisted_19$B, [
_hoisted_20$z,
createVNode$1(
_component_el_radio_group,
{
'model-value': slantLineDirection.value,
onChange:
_cache[6] ||
(_cache[6] = ($event) =>
selectCellSetOptions('slantLineDirection', $event)),
},
{
default: withCtx(() => [
createVNode$1(
_component_el_radio,
{
label: 'left',
value: 'left',
class: 'cms-el-radio',
},
{
default: withCtx(() => [_hoisted_21$s]),
_: 1,
}
),
createVNode$1(
_component_el_radio,
{
label: 'right',
value: 'right',
class: 'cms-el-radio',
},
{
default: withCtx(() => [_hoisted_22$q]),
_: 1,
}
),
]),
_: 1,
},
8,
['model-value']
),
]))
: createCommentVNode('', true),
createVNode$1(
unref(_sfc_main$6Q),
{
data: { name: currentVariableName.value },
visible: pickVarDialogShown.value,
noLanguage: true,
isAppendToBody: true,
'show-config': true,
'config-data': variablesConfig.value,
onCancel:
_cache[7] ||
(_cache[7] = ($event) => (pickVarDialogShown.value = false)),
onChangeName: handleChangeName,
dialogConfirm: confirm2,
},
null,
8,
['data', 'visible', 'config-data']
),
createElementVNode('div', _hoisted_23$n, [
_hoisted_24$n,
createVNode$1(
_component_el_tooltip,
{
teleported: '',
persistent: '',
disabled: firstCellConditionList.value.length === 0,
},
{
content: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
firstCellConditionList.value,
(item2, index2) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'condition-style_item',
key: index2,
},
[
createElementVNode(
'span',
_hoisted_25$i,
'\u503C ' +
toDisplayString$1(
getLabelByOperator(item2.operator)
) +
' ' +
toDisplayString$1(item2.content) +
':',
1
),
createElementVNode(
'span',
{
class: 'color-block',
style: normalizeStyle$1({
backgroundColor:
item2.style.backgroundColor,
}),
},
null,
4
),
createElementVNode(
'span',
{
class: 'color-block',
style: normalizeStyle$1({
backgroundColor: item2.style.color,
}),
},
null,
4
),
]
)
)
}
),
128
)),
]),
default: withCtx(() => [
createElementVNode('div', _hoisted_26$h, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
firstCellConditionList.value,
(item2, index2) => {
return (
openBlock(),
createElementBlock(
'span',
{
class: 'condition-style_item',
key: index2,
},
[
createElementVNode(
'span',
_hoisted_27$h,
'\u503C ' +
toDisplayString$1(
getLabelByOperator(item2.operator)
) +
' ' +
toDisplayString$1(item2.content) +
':',
1
),
createElementVNode(
'span',
{
class: 'color-block',
style: normalizeStyle$1({
backgroundColor:
item2.style.backgroundColor,
}),
},
null,
4
),
createElementVNode(
'span',
{
class: 'color-block',
style: normalizeStyle$1({
backgroundColor: item2.style.color,
}),
},
null,
4
),
index2 !==
firstCellConditionList.value.length - 1
? (openBlock(),
createElementBlock(
'span',
_hoisted_28$g,
'\uFF0C'
))
: createCommentVNode('', true),
]
)
)
}
),
128
)),
]),
]),
_: 1,
},
8,
['disabled']
),
createElementVNode('i', {
class: 'iconfont icon-bianjigongcheng edit-field-icon',
onClick:
_cache[8] ||
(_cache[8] = ($event) =>
(ConditionsDialogVisible.value = true)),
}),
]),
ConditionsDialogVisible.value
? (openBlock(),
createBlock(
StyleConditionsDialog,
{
key: 7,
title: '\u6761\u4EF6\u6837\u5F0F',
visible: ConditionsDialogVisible.value,
'condition-list': firstCellConditionList.value,
'operator-list': unref(operatorList2),
onClose:
_cache[9] ||
(_cache[9] = ($event) =>
(ConditionsDialogVisible.value = false)),
onConfirm: confirmConditionStyle,
},
null,
8,
['visible', 'condition-list', 'operator-list']
))
: createCommentVNode('', true),
])
)
}
},
})
var CellElement = /* @__PURE__ */ _export_sfc(_sfc_main$3s, [
['__scopeId', 'data-v-7df55e64'],
])
var CellElement$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: CellElement,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _sfc_main$3r = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
_sfc_main$72,
{
title: '\u5355\u5143\u683C',
fold: '',
},
{
default: withCtx(() => [
createVNode$1(
CellElement,
{
node: $props2.node,
},
null,
8,
['node']
),
]),
_: 1,
}
)
)
}
},
})
var Cell = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$3r,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var QueryConditions_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$1P = (n2) => (
pushScopeId('data-v-a9b3898a'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3b = { class: 'data' }
const _hoisted_2$2S = { class: 'auto-update limit' }
const _hoisted_3$2D = { class: 'flex' }
const _hoisted_4$2f = /* @__PURE__ */ _withScopeId$1P(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-tianjia1' },
null,
-1
)
)
const _hoisted_5$1$ = /* @__PURE__ */ createTextVNode('\u65B0\u5EFA')
const _sfc_main$3q = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
const props2 = reactive(node2.props)
const sheetDataSetConfigList = reactive(
props2.sheet.config.sheetDataSetConfigList
)
let queryList = ref([])
const createFields = computed(() => {
let fields = []
sheetDataSetConfigList
.filter((item2) => item2.dataSet)
.forEach((item2) => {
item2.dataSet.fieldList?.forEach((field2) => {
fields.push({
id: field2.id,
fieldName: field2.name,
fieldType: field2.name === '\u8BB0\u5F55\u65F6\u95F4' ? '3' : '',
optionValue: field2.id,
chartId: node2.id,
dataSetId: item2.dataSet.id,
field: '',
dataType:
field2.name === '\u8BB0\u5F55\u65F6\u95F4' ? 'history' : '',
})
})
})
return fields
})
const handleCreateQuery = () => {
let canvasNode = new CanvasNode$1({
is: 'Filter',
name: '\u7B5B\u9009\u5668',
props: {},
})
const pos = getNodePos(node2)
canvasNode.style.position = 'absolute'
canvasNode.style.left = pos.x + 12 + 'px'
canvasNode.style.top = pos.y - 53 + 'px'
setTimeout(() => {
if (!canvasNode) return
CanvasNode$1.getBody().appendChild(canvasNode)
nextTick(() => {
unUnionController()
emit(ControllerEventType.UNION_FILTER, {
controllerId: canvasNode.id,
relativeList: createFields.value,
chartId: node2.id,
})
props2.sheet.config.queryControllerId = canvasNode.id
queryList.value = getPageControllers(
app.current.project.current.page.document.body
)
})
})
}
const setQueryControllerId = (id2) => {
unUnionController()
props2.sheet.config.queryControllerId = id2
emit(ControllerEventType.UNION_FILTER, {
controllerId: id2,
relativeList: createFields.value,
chartId: node2.id,
})
}
const unUnionController = () => {
const prevControllerId = props2.sheet.config.queryControllerId
if (prevControllerId) {
emit(ControllerEventType.UN_UNION_FILTER, {
removeChartId: node2.id,
prevControllerId,
})
}
}
const getPageControllers = (node22) => {
let controllers = []
if (node22.childNodes.length) {
node22.childNodes.forEach((item2) => {
controllers.push(...getPageControllers(item2))
})
} else if (node22.is === 'Filter') {
controllers.push({
id: node22.id,
name: node22.name,
})
}
return controllers
}
queryList.value = getPageControllers(
app.current.project.current.page.document.body
)
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_button = resolveComponent('el-button')
return (
openBlock(),
createBlock(
_sfc_main$72,
{
title: '\u67E5\u8BE2\u6761\u4EF6',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$3b, [
createElementVNode('div', _hoisted_2$2S, [
createElementVNode('div', _hoisted_3$2D, [
createVNode$1(
_component_el_select,
{
clearable: '',
onClear:
_cache[0] ||
(_cache[0] = ($event) =>
(unref(props2).sheet.config.queryControllerId =
'')),
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
'model-value':
unref(props2).sheet.config.queryControllerId,
placeholder: '\u8BF7\u5173\u8054\u7B5B\u9009\u5668',
onChange: setQueryControllerId,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(queryList.value, (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.id,
label: item2.name,
value: item2.id,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['model-value']
),
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: handleCreateQuery,
},
{
default: withCtx(() => [_hoisted_4$2f, _hoisted_5$1$]),
_: 1,
}
),
]),
]),
]),
]),
_: 1,
}
)
)
}
},
})
var QueryConditions = /* @__PURE__ */ _export_sfc(_sfc_main$3q, [
['__scopeId', 'data-v-a9b3898a'],
])
var QueryConditions$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: QueryConditions,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Sheet_settings_vue_vue_type_style_index_0_scoped_true_lang = ''
var Sheet_settings_vue_vue_type_style_index_1_lang = ''
const _hoisted_1$3a = { class: 'sheetSettings' }
const _sfc_main$3p = /* @__PURE__ */ defineComponent({
props: {
node: null,
editing: { type: Boolean },
running: { type: Boolean },
props: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$3a, [
createVNode$1(Data$2, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(QueryConditions, { node: unref(node2) }, null, 8, [
'node',
]),
createVNode$1(Title, { node: unref(node2) }, null, 8, ['node']),
createVNode$1(ReportSetting, { node: unref(node2) }, null, 8, [
'node',
]),
createVNode$1(_sfc_main$3r, { node: unref(node2) }, null, 8, [
'node',
]),
])
)
}
},
})
var Sheet_settings = /* @__PURE__ */ _export_sfc(_sfc_main$3p, [
['__scopeId', 'data-v-4c7b33a2'],
])
var __glob_1_19 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Sheet_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ToolColorPicker_vue_vue_type_style_index_0_lang = ''
const _hoisted_1$39 = { class: 'color-wrapper' }
const _hoisted_2$2R = { class: 'right' }
const _hoisted_3$2C = /* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-xia' },
null,
-1
)
const _sfc_main$3o = /* @__PURE__ */ defineComponent({
props: {
iconClass: null,
},
emits: ['setup'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const setUpColor = (value2 = '') => {
if (value2) {
color2.value = value2
}
emit2('setup', color2.value)
}
let color2 = ref('#409EFF')
return (_ctx, _cache) => {
const _component_el_color_picker = resolveComponent('el-color-picker')
return (
openBlock(),
createElementBlock('div', _hoisted_1$39, [
createElementVNode(
'div',
{
class: 'left',
onClick: _cache[0] || (_cache[0] = ($event) => setUpColor()),
},
[
createElementVNode(
'i',
{
class: normalizeClass(['iconfont', props2.iconClass]),
},
null,
2
),
createElementVNode(
'div',
{
class: 'color-block',
style: normalizeStyle$1({
backgroundColor: color2.value,
}),
},
null,
4
),
]
),
createElementVNode('div', _hoisted_2$2R, [
_hoisted_3$2C,
createVNode$1(
_component_el_color_picker,
mergeProps(_ctx.$attrs, {
'show-alpha': '',
predefine: unref(colorList),
modelValue: color2.value,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) => (color2.value = $event)),
onActiveChange: setUpColor,
}),
null,
16,
['predefine', 'modelValue']
),
]),
])
)
}
},
})
var ToolColorPicker = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$3o,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Toolbar_vue_vue_type_style_index_0_scoped_true_lang$1 = ''
var Toolbar_vue_vue_type_style_index_1_lang = ''
const _withScopeId$1O = (n2) => (
pushScopeId('data-v-79ef7833'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$38 = { class: 'toolbar' }
const _hoisted_2$2Q = { class: 'block1' }
const _hoisted_3$2B = { class: 'flex-row' }
const _hoisted_4$2e = /* @__PURE__ */ _withScopeId$1O(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont iconfont icon-sousuo' },
null,
-1
)
)
const _hoisted_5$1_ = { class: 'flex-row' }
const _hoisted_6$1N = /* @__PURE__ */ _withScopeId$1O(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-jiacu',
title: '\u7C97\u4F53',
},
null,
-1
)
)
const _hoisted_7$1w = /* @__PURE__ */ _withScopeId$1O(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-xieti',
title: '\u659C\u4F53',
},
null,
-1
)
)
const _hoisted_8$1m = /* @__PURE__ */ _withScopeId$1O(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-xiahuaxian',
title: '\u4E0B\u5212\u7EBF',
},
null,
-1
)
)
const _hoisted_9$1g = /* @__PURE__ */ _withScopeId$1O(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'dividing-line' },
null,
-1
)
)
const _hoisted_10$1d = { class: 'block2' }
const _hoisted_11$15 = { class: 'flex-row' }
const _hoisted_12$12 = { class: 'flex-row flex-row_between' }
const _hoisted_13$X = /* @__PURE__ */ _withScopeId$1O(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-zuo',
title: '\u5DE6\u5BF9\u9F50',
},
null,
-1
)
)
const _hoisted_14$S = /* @__PURE__ */ _withScopeId$1O(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-zhong',
title: '\u5C45\u4E2D',
},
null,
-1
)
)
const _hoisted_15$P = /* @__PURE__ */ _withScopeId$1O(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-you',
title: '\u53F3\u5BF9\u9F50',
},
null,
-1
)
)
const _hoisted_16$O = { class: 'block block3' }
const _hoisted_17$I = { class: 'button-container' }
const _hoisted_18$D = { class: 'top-icon' }
const _hoisted_19$A = /* @__PURE__ */ _withScopeId$1O(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-shangkuangxian' },
null,
-1
)
)
const _hoisted_20$y = /* @__PURE__ */ createTextVNode(' \u4E0A\u6846\u7EBF ')
const _hoisted_21$r = /* @__PURE__ */ _withScopeId$1O(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-xiakuangxian' },
null,
-1
)
)
const _hoisted_22$p = /* @__PURE__ */ createTextVNode(' \u4E0B\u6846\u7EBF ')
const _hoisted_23$m = /* @__PURE__ */ _withScopeId$1O(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-zuokuangxian' },
null,
-1
)
)
const _hoisted_24$m = /* @__PURE__ */ createTextVNode(' \u5DE6\u6846\u7EBF ')
const _hoisted_25$h = /* @__PURE__ */ _withScopeId$1O(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-youkuangxian' },
null,
-1
)
)
const _hoisted_26$g = /* @__PURE__ */ createTextVNode(' \u53F3\u6846\u7EBF ')
const _hoisted_27$g = /* @__PURE__ */ _withScopeId$1O(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-wukuangxian' },
null,
-1
)
)
const _hoisted_28$f = /* @__PURE__ */ createTextVNode(' \u65E0\u6846\u7EBF ')
const _hoisted_29$d = /* @__PURE__ */ _withScopeId$1O(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-waicekuangxian' },
null,
-1
)
)
const _hoisted_30$d = /* @__PURE__ */ createTextVNode(' \u5916\u6846\u7EBF')
const _hoisted_31$b = /* @__PURE__ */ _withScopeId$1O(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-suoyoukuangxian' },
null,
-1
)
)
const _hoisted_32$b = /* @__PURE__ */ createTextVNode(
' \u6240\u6709\u6846\u7EBF '
)
const _hoisted_33$b = /* @__PURE__ */ _withScopeId$1O(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'bottom-text' },
'\u8FB9\u6846',
-1
)
)
const _hoisted_34$8 = /* @__PURE__ */ _withScopeId$1O(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'block-dividing-line' },
null,
-1
)
)
const _hoisted_35$8 = { class: 'button-container' }
const _hoisted_36$7 = /* @__PURE__ */ _withScopeId$1O(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-geshishua' },
null,
-1
)
)
const _hoisted_37$7 = /* @__PURE__ */ _withScopeId$1O(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'bottom-text' },
'\u683C\u5F0F\u5237',
-1
)
)
const _hoisted_38$6 = { class: 'button-container' }
const _hoisted_39$5 = { class: 'top-icon' }
const _hoisted_40$5 = /* @__PURE__ */ createTextVNode(
' \u5220\u9664\u5F53\u524D\u884C '
)
const _hoisted_41$5 = /* @__PURE__ */ createTextVNode(
' \u5220\u9664\u5F53\u524D\u5217 '
)
const _hoisted_42$4 = /* @__PURE__ */ _withScopeId$1O(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'bottom-text' },
'\u5220\u9664',
-1
)
)
const _hoisted_43$3 = { class: 'button-container' }
const _hoisted_44$2 = { class: 'top-icon' }
const _hoisted_45$2 = /* @__PURE__ */ createTextVNode(
' \u5728\u5DE6\u4FA7\u63D2\u5165\u5217 '
)
const _hoisted_46$2 = /* @__PURE__ */ createTextVNode(
' \u5728\u53F3\u4FA7\u63D2\u5165\u5217 '
)
const _hoisted_47$2 = /* @__PURE__ */ createTextVNode(
' \u5728\u4E0A\u65B9\u63D2\u5165\u884C '
)
const _hoisted_48$1 = /* @__PURE__ */ createTextVNode(
' \u5728\u4E0B\u65B9\u63D2\u5165\u884C'
)
const _hoisted_49$1 = /* @__PURE__ */ _withScopeId$1O(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'bottom-text' },
'\u884C\u5217',
-1
)
)
const _hoisted_50$1 = { class: 'button-container' }
const _hoisted_51$1 = /* @__PURE__ */ _withScopeId$1O(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-chaifendanyuange' },
null,
-1
)
)
const _hoisted_52$1 = [_hoisted_51$1]
const _hoisted_53$1 = /* @__PURE__ */ _withScopeId$1O(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'bottom-text' },
'\u62C6\u5206',
-1
)
)
const _hoisted_54$1 = { class: 'button-container' }
const _hoisted_55$1 = /* @__PURE__ */ _withScopeId$1O(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-hebingdanyuange' },
null,
-1
)
)
const _hoisted_56$1 = [_hoisted_55$1]
const _hoisted_57$1 = /* @__PURE__ */ _withScopeId$1O(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'bottom-text' },
'\u5408\u5E76',
-1
)
)
const _hoisted_58$1 = /* @__PURE__ */ _withScopeId$1O(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'block-dividing-line' },
null,
-1
)
)
const _hoisted_59$1 = { class: 'block' }
const _hoisted_60$1 = { class: 'input-container' }
const _hoisted_61$1 = { class: 'top-icon' }
const _hoisted_62$1 = /* @__PURE__ */ _withScopeId$1O(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'bottom-text' },
'\u884C',
-1
)
)
const _hoisted_63$1 = { class: 'input-container' }
const _hoisted_64 = { class: 'top-icon' }
const _hoisted_65 = /* @__PURE__ */ _withScopeId$1O(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'bottom-text' },
'\u5217',
-1
)
)
const _hoisted_66 = { class: 'block' }
const _hoisted_67 = { class: 'input-container' }
const _hoisted_68 = { class: 'top-icon' }
const _hoisted_69 = /* @__PURE__ */ _withScopeId$1O(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'bottom-text' },
'\u9AD8',
-1
)
)
const _hoisted_70 = { class: 'input-container' }
const _hoisted_71 = { class: 'top-icon' }
const _hoisted_72 = /* @__PURE__ */ _withScopeId$1O(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'bottom-text' },
'\u5BBD',
-1
)
)
const _sfc_main$3n = /* @__PURE__ */ defineComponent({
props: {
toolbar: null,
},
setup(__props2) {
const props2 = __props2
const toolbar = reactive(props2.toolbar)
let defaultStyle$1 = styleConverter(defaultStyle)
let cellStyle = computed(() => {
let style2 = styleConverter(toolbar?.sheet?.selectedCells[0]?.style || {})
return style2
})
let fontFamily2 = computed(() => {
return cellStyle.value.fontFamily
})
let fontSize2 = computed(() => {
return cellStyle.value.fontSize || defaultStyle$1.fontSize
})
let textAlign2 = computed(() => {
return cellStyle.value.textAlign || defaultStyle$1.textAlign
})
const isAllEqual = (array4) => {
if (array4.length > 0) {
return !array4.some((value2) => {
return value2 !== array4[0]
})
} else {
return true
}
}
let cellHeight = computed(() => {
const selectedCells = toolbar?.sheet?.selectedCells || []
const LEN = selectedCells.length
let rowHeights = []
for (let i2 = 0; i2 < LEN; i2++) {
const rowStyle = styleConverter(
toolbar.sheet?.selectedCells[i2]?.row?.style || {}
)
rowHeights.push(rowStyle.height)
}
if (isAllEqual(rowHeights)) {
return rowHeights[0]
}
return null
})
let cellWidth = computed(() => {
const selectedCells = toolbar?.sheet?.selectedCells || []
const LEN = selectedCells.length
let colWidths = []
for (let i2 = 0; i2 < LEN; i2++) {
const colStyle = styleConverter(
toolbar.sheet?.selectedCells[i2]?.col?.style || {}
)
colWidths.push(colStyle.width)
}
if (isAllEqual(colWidths)) {
return colWidths[0]
}
return null
})
let isHaveMerge = ref(false)
watch$1(
() => toolbar?.sheet?.selectedCells,
(newValue) => {
nextTick(() => {
isHaveMerge.value = newValue.some((cell) => cell.merged)
})
},
{ deep: true }
)
let isAllSelect = computed(() => {
const totalCellsCount = rows.value * cols.value
const selectedCellsCount = toolbar.sheet.selectedCells.length
if (totalCellsCount && selectedCellsCount) {
return totalCellsCount === selectedCellsCount
}
return false
})
let rows = computed(() => {
return toolbar.sheet.rows.length || 0
})
let cols = computed(() => {
return toolbar.sheet.cols.length || 0
})
const setSheetRows = (newRowCount) => {
let rowCount = newRowCount - rows.value
let addCellCount = rowCount * toolbar.sheet.cols.length
if (rowCount > 0) {
if (toolbar.sheet.isOverLimitCells(addCellCount)) return
toolbar.insert('Bottom', rowCount)
} else if (rowCount < 0) {
const deleteRows = toolbar.sheet.rows?.slice(rowCount)
for (const row of deleteRows) {
toolbar.sheet.removeRow(row.index)
}
}
toolbar.sheet.selectAll()
}
const setSheetCols = (newColCount) => {
let colCount = newColCount - cols.value
let addCellCount = colCount * toolbar.sheet.rows.length
if (colCount > 0) {
if (toolbar.sheet.isOverLimitCells(addCellCount)) return
toolbar.insert('Right', colCount)
} else if (colCount < 0) {
const deleteCols = toolbar.sheet.cols?.slice(colCount)
for (const col of deleteCols) {
toolbar.sheet.removeCol(col.index)
}
}
toolbar.sheet.selectAll()
}
const getCount = (type4) => {
const cells = toolbar.sheet.selectedCells
const list2 = []
for (const cell of cells) {
const item2 = cell[type4]
if (!item2) continue
if (!list2.includes(item2)) {
list2.push(item2)
}
}
return list2.length
}
const insert = (dir3) => {
if (['Top', 'Bottom'].includes(dir3)) {
let addRowCount = getCount('row')
let addCellCount = addRowCount * toolbar.sheet.cols.length
if (toolbar.sheet.isOverLimitCells(addCellCount)) return
toolbar.insert(dir3, addRowCount)
} else {
let addColCount = getCount('col')
let addCellCount = addColCount * toolbar.sheet.rows.length
if (toolbar.sheet.isOverLimitCells(addCellCount)) return
toolbar.insert(dir3, addColCount)
}
}
const remove2 = (type4) => {
toolbar.remove(type4)
}
const painter = () => {
if (toolbar.formatPainter.enabled) {
toolbar.formatPainter.enable()
}
}
const setStyle2 = (key2, value2) => {
let style2 = {}
let keys3 = ['fontSize', 'width', 'height']
if (keys3.includes(key2)) {
style2[key2] = `${value2}px`
} else {
style2[key2] = value2
}
toolbar.setStyle(style2)
}
const setCellHeight = (value2) => {
if (value2 instanceof KeyboardEvent) {
return
}
toolbar.setCellHeight(value2)
}
const setCellWidth = (value2) => {
if (value2 instanceof KeyboardEvent) {
return
}
toolbar.setCellWidth(value2)
}
const setBorder = (dir3) => {
const style2 = { style: 'solid', color: '#000000', width: '1px' }
if (dir3 === 'Outline') {
toolbar.setOutlineBorder(style2)
return
}
if (dir3 === 'None') {
toolbar.unSetBorder()
return
}
toolbar.setBorder(style2, dir3)
}
const changeToolbarLockStatus = () => {
toolbar.lock = !toolbar.lock
}
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_checkbox_button =
resolveComponent('el-checkbox-button')
const _component_el_radio_button = resolveComponent('el-radio-button')
const _component_el_radio_group = resolveComponent('el-radio-group')
const _component_el_input_number = resolveComponent('el-input-number')
return (
openBlock(),
createElementBlock('div', _hoisted_1$38, [
createElementVNode(
'i',
{
onClick: changeToolbarLockStatus,
class: normalizeClass([
'iconfont icon-guding lock',
{ ' active-lock': unref(toolbar).lock },
]),
},
null,
2
),
createElementVNode('div', _hoisted_2$2Q, [
createElementVNode('div', _hoisted_3$2B, [
createVNode$1(
_component_el_select,
{
'model-value': fontFamily2.value,
class: 'white-el-select',
'popper-class': 'white-el-select__popper',
placeholder: '\u8BF7\u9009\u62E9\u5B57\u4F53',
onChange:
_cache[0] ||
(_cache[0] = ($event) => setStyle2('fontFamily', $event)),
},
{
prefix: withCtx(() => [_hoisted_4$2e]),
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(fontFamilyList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
hidden: item2.hidden,
},
null,
8,
['label', 'value', 'hidden']
)
)
}),
128
)),
]),
_: 1,
},
8,
['model-value']
),
]),
createElementVNode('div', _hoisted_5$1_, [
createVNode$1(_sfc_main$3o, {
iconClass: 'icon-zitiyanse',
title: '\u5B57\u4F53\u989C\u8272',
onSetup:
_cache[1] ||
(_cache[1] = ($event) => setStyle2('color', $event)),
}),
createVNode$1(_sfc_main$3o, {
iconClass: 'icon-tianchongyanse',
title: '\u80CC\u666F\u989C\u8272',
onSetup:
_cache[2] ||
(_cache[2] = ($event) =>
setStyle2('backgroundColor', $event)),
}),
createVNode$1(
_component_el_checkbox_button,
{
class: 'set-fontWeight',
'model-value': cellStyle.value.fontWeight === 'bold',
onChange:
_cache[3] ||
(_cache[3] = (e2) =>
setStyle2('fontWeight', e2 ? 'bold' : '')),
},
{
default: withCtx(() => [_hoisted_6$1N]),
_: 1,
},
8,
['model-value']
),
createVNode$1(
_component_el_checkbox_button,
{
class: 'set-fontStyle',
'model-value': cellStyle.value.fontStyle === 'italic',
onChange:
_cache[4] ||
(_cache[4] = (e2) =>
setStyle2('fontStyle', e2 ? 'italic' : '')),
},
{
default: withCtx(() => [_hoisted_7$1w]),
_: 1,
},
8,
['model-value']
),
createVNode$1(
_component_el_checkbox_button,
{
class: 'set-textDecoration',
'model-value': cellStyle.value.textDecoration === 'underline',
onChange:
_cache[5] ||
(_cache[5] = (e2) =>
setStyle2('textDecoration', e2 ? 'underline' : '')),
},
{
default: withCtx(() => [_hoisted_8$1m]),
_: 1,
},
8,
['model-value']
),
_hoisted_9$1g,
]),
]),
createElementVNode('div', _hoisted_10$1d, [
createElementVNode('div', _hoisted_11$15, [
createVNode$1(
_component_el_select,
{
modelValue: fontSize2.value,
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) => (fontSize2.value = $event)),
class: 'white-el-select',
'popper-class': 'white-el-select__popper',
placeholder: '\u8BF7\u9009\u62E9\u5B57\u4F53\u5927\u5C0F',
onChange:
_cache[7] ||
(_cache[7] = ($event) => setStyle2('fontSize', +$event)),
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(
[12, 13, 14, 15, 16, 17, 18, 19, 20, 24, 28, 32, 36],
(size) => {
return createVNode$1(
_component_el_option,
{
key: size,
label: size,
value: size,
},
null,
8,
['label', 'value']
)
}
),
64
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_12$12, [
createVNode$1(
_component_el_radio_group,
{
class: 'flex-row flex-row_between',
modelValue: textAlign2.value,
'onUpdate:modelValue':
_cache[8] ||
(_cache[8] = ($event) => (textAlign2.value = $event)),
onChange:
_cache[9] ||
(_cache[9] = ($event) => setStyle2('textAlign', $event)),
},
{
default: withCtx(() => [
createVNode$1(
_component_el_radio_button,
{ label: 'left' },
{
default: withCtx(() => [_hoisted_13$X]),
_: 1,
}
),
createVNode$1(
_component_el_radio_button,
{ label: 'center' },
{
default: withCtx(() => [_hoisted_14$S]),
_: 1,
}
),
createVNode$1(
_component_el_radio_button,
{ label: 'right' },
{
default: withCtx(() => [_hoisted_15$P]),
_: 1,
}
),
]),
_: 1,
},
8,
['modelValue']
),
]),
]),
createElementVNode('div', _hoisted_16$O, [
createElementVNode('div', _hoisted_17$I, [
createElementVNode('div', _hoisted_18$D, [
createVNode$1(
_component_el_select,
{
class: 'iconfont white-el-select icon-select',
'popper-class': 'white-el-select__popper',
placeholder: '\uE77D',
onChange: setBorder,
},
{
default: withCtx(() => [
createVNode$1(
_component_el_option,
{
label: '\uE777',
value: 'Top',
},
{
default: withCtx(() => [
_hoisted_19$A,
_hoisted_20$y,
]),
_: 1,
}
),
createVNode$1(
_component_el_option,
{
label: '\uE779',
value: 'Bottom',
},
{
default: withCtx(() => [
_hoisted_21$r,
_hoisted_22$p,
]),
_: 1,
}
),
createVNode$1(
_component_el_option,
{
label: '\uE778',
value: 'Left',
},
{
default: withCtx(() => [
_hoisted_23$m,
_hoisted_24$m,
]),
_: 1,
}
),
createVNode$1(
_component_el_option,
{
label: '\uE77A',
value: 'Right',
},
{
default: withCtx(() => [
_hoisted_25$h,
_hoisted_26$g,
]),
_: 1,
}
),
createVNode$1(
_component_el_option,
{
label: '\uE77B',
value: 'None',
},
{
default: withCtx(() => [
_hoisted_27$g,
_hoisted_28$f,
]),
_: 1,
}
),
createVNode$1(
_component_el_option,
{
label: '\uE77C',
value: 'Outline',
},
{
default: withCtx(() => [
_hoisted_29$d,
_hoisted_30$d,
]),
_: 1,
}
),
createVNode$1(
_component_el_option,
{
label: '\uE77D',
value: 'All',
},
{
default: withCtx(() => [
_hoisted_31$b,
_hoisted_32$b,
]),
_: 1,
}
),
]),
_: 1,
}
),
]),
_hoisted_33$b,
]),
_hoisted_34$8,
createElementVNode('div', _hoisted_35$8, [
createElementVNode(
'div',
{
class: normalizeClass([
'top-icon',
{ active: unref(toolbar).formatPainter.enabled },
]),
},
[
_hoisted_36$7,
withDirectives(
createElementVNode(
'input',
{
type: 'checkbox',
'onUpdate:modelValue':
_cache[10] ||
(_cache[10] = ($event) =>
(unref(toolbar).formatPainter.enabled = $event)),
onChange: painter,
},
null,
544
),
[[vModelCheckbox, unref(toolbar).formatPainter.enabled]]
),
],
2
),
_hoisted_37$7,
]),
createElementVNode('div', _hoisted_38$6, [
createElementVNode('div', _hoisted_39$5, [
createVNode$1(
_component_el_select,
{
class: 'iconfont white-el-select icon-select',
'popper-class': 'white-el-select__popper',
placeholder: '\uE6B4',
onChange: remove2,
},
{
default: withCtx(() => [
createVNode$1(
_component_el_option,
{
label: '\uE6B4',
value: 'row',
},
{
default: withCtx(() => [_hoisted_40$5]),
_: 1,
}
),
createVNode$1(
_component_el_option,
{
label: '\uE6B4',
value: 'col',
},
{
default: withCtx(() => [_hoisted_41$5]),
_: 1,
}
),
]),
_: 1,
}
),
]),
_hoisted_42$4,
]),
createElementVNode('div', _hoisted_43$3, [
createElementVNode('div', _hoisted_44$2, [
createVNode$1(
_component_el_select,
{
class: 'iconfont white-el-select icon-select',
'popper-class': 'white-el-select__popper',
placeholder: '\uE772',
onChange: insert,
},
{
default: withCtx(() => [
createVNode$1(
_component_el_option,
{
label: '\uE772',
value: 'Left',
},
{
default: withCtx(() => [_hoisted_45$2]),
_: 1,
}
),
createVNode$1(
_component_el_option,
{
label: '\uE772',
value: 'Right',
},
{
default: withCtx(() => [_hoisted_46$2]),
_: 1,
}
),
createVNode$1(
_component_el_option,
{
label: '\uE772',
value: 'Top',
},
{
default: withCtx(() => [_hoisted_47$2]),
_: 1,
}
),
createVNode$1(
_component_el_option,
{
label: '\uE772',
value: 'Bottom',
},
{
default: withCtx(() => [_hoisted_48$1]),
_: 1,
}
),
]),
_: 1,
}
),
]),
_hoisted_49$1,
]),
withDirectives(
createElementVNode(
'div',
_hoisted_50$1,
[
createElementVNode(
'div',
{
class: 'top-icon',
onClick:
_cache[11] ||
(_cache[11] = ($event) => unref(toolbar).unMerge()),
},
_hoisted_52$1
),
_hoisted_53$1,
],
512
),
[[vShow, isHaveMerge.value]]
),
withDirectives(
createElementVNode(
'div',
_hoisted_54$1,
[
createElementVNode(
'div',
{
class: normalizeClass([
'top-icon',
{ active: isHaveMerge.value },
]),
onClick:
_cache[12] ||
(_cache[12] = ($event) => unref(toolbar).merge()),
},
_hoisted_56$1,
2
),
_hoisted_57$1,
],
512
),
[[vShow, !isHaveMerge.value]]
),
_hoisted_58$1,
]),
withDirectives(
createElementVNode(
'div',
_hoisted_59$1,
[
createElementVNode('div', _hoisted_60$1, [
createElementVNode('div', _hoisted_61$1, [
createVNode$1(
_component_el_input_number,
{
class: 'white-el-input',
'controls-position': 'right',
min: 1,
precision: 0,
'model-value': rows.value,
onChange: setSheetRows,
},
null,
8,
['model-value']
),
]),
_hoisted_62$1,
]),
createElementVNode('div', _hoisted_63$1, [
createElementVNode('div', _hoisted_64, [
createVNode$1(
_component_el_input_number,
{
class: 'white-el-input',
'controls-position': 'right',
min: 1,
precision: 0,
'model-value': cols.value,
onChange: setSheetCols,
},
null,
8,
['model-value']
),
]),
_hoisted_65,
]),
],
512
),
[[vShow, isAllSelect.value]]
),
createElementVNode('div', _hoisted_66, [
createElementVNode('div', _hoisted_67, [
createElementVNode('div', _hoisted_68, [
createVNode$1(
_component_el_input_number,
{
class: 'white-el-input',
'controls-position': 'right',
min: 1,
precision: 0,
'model-value': cellHeight.value,
onChange: setCellHeight,
onKeyup: withKeys(setCellHeight, ['enter']),
},
null,
8,
['model-value', 'onKeyup']
),
]),
_hoisted_69,
]),
createElementVNode('div', _hoisted_70, [
createElementVNode('div', _hoisted_71, [
createVNode$1(
_component_el_input_number,
{
class: 'white-el-input',
'controls-position': 'right',
'model-value': cellWidth.value,
min: 1,
precision: 0,
onChange: setCellWidth,
onKeyup: withKeys(setCellWidth, ['enter']),
},
null,
8,
['model-value', 'onKeyup']
),
]),
_hoisted_72,
]),
]),
])
)
}
},
})
var Toolbar$2 = /* @__PURE__ */ _export_sfc(_sfc_main$3n, [
['__scopeId', 'data-v-79ef7833'],
])
var Toolbar$3 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Toolbar$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
function preventEventDefault(e2) {
e2.stopPropagation()
e2.preventDefault()
}
function isCtrlKey(e2) {
return e2.ctrlKey || e2.metaKey
}
function useShortcuts(target2, contextmenu) {
if (target2 instanceof HTMLElement) {
useEventListener(
target2,
'keydown',
async (e2) => {
if (e2.target instanceof HTMLElement) {
if (
e2.target?.tagName !== 'INPUT' &&
e2.target?.tagName !== 'TEXTAREA' &&
e2.target?.contentEditable !== 'true'
) {
if (e2.key.toLowerCase() === 'c' && isCtrlKey(e2)) {
preventEventDefault(e2)
contextmenu.setCopyCells()
await contextmenu.emptyClipboard()
} else if (e2.key.toLowerCase() === 'x' && isCtrlKey(e2)) {
preventEventDefault(e2)
contextmenu.setCutCells()
await contextmenu.emptyClipboard()
} else if (e2.key.toLowerCase() === 'v' && isCtrlKey(e2)) {
preventEventDefault(e2)
contextmenu.handlePaste()
} else if (e2.key.toLowerCase() === 'escape') {
preventEventDefault(e2)
contextmenu.clearClipboardRect()
} else if (e2.key.toLowerCase().match(/^(delete|backspace)$/)) {
const selectedCellsNotEmpty =
contextmenu.sheet.selectedCells.filter((cell) => cell.content)
if (selectedCellsNotEmpty.length) {
preventEventDefault(e2)
contextmenu.clearSelectedCells(ContextmenuClearType.CONTENT)
}
}
}
}
},
false
)
}
}
var ContextMenu_vue_vue_type_style_index_0_scoped_true_lang = ''
var ContextMenu_vue_vue_type_style_index_1_lang = ''
const _withScopeId$1N = (n2) => (
pushScopeId('data-v-2692341c'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$37 = /* @__PURE__ */ _withScopeId$1N(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'keyboard-shortcut' },
'Ctrl+X',
-1
)
)
const _hoisted_2$2P = /* @__PURE__ */ _withScopeId$1N(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'keyboard-shortcut' },
'Ctrl+C',
-1
)
)
const _hoisted_3$2A = /* @__PURE__ */ _withScopeId$1N(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'keyboard-shortcut' },
'Ctrl+V',
-1
)
)
const _hoisted_4$2d = /* @__PURE__ */ _withScopeId$1N(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
[/* @__PURE__ */ createElementVNode('i', { class: 'iconfont icon-you1' })],
-1
)
)
const _hoisted_5$1Z = { class: 'contextmenu-panel contextmenu-sub-panel' }
const _hoisted_6$1M = /* @__PURE__ */ _withScopeId$1N(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
[/* @__PURE__ */ createElementVNode('i', { class: 'iconfont icon-you1' })],
-1
)
)
const _hoisted_7$1v = { class: 'contextmenu-panel contextmenu-sub-panel' }
const _sfc_main$3m = /* @__PURE__ */ defineComponent({
props: {
contextmenu: null,
},
setup(__props2) {
const props2 = __props2
const contextmenuRef = ref()
const contextmenuPanelRef = ref()
let showContextmenu = ref(false)
const contextmenu = reactive(props2.contextmenu)
const { width: viewWidth, height: viewHeight } = useElementBounding(
document.body
)
const paddingBottom2 = 20
const areaStyle = computed(() => {
if (!contextmenu.clipboardRectCells.length) {
return {}
} else if (
contextmenu.clipboardRect[2] + 1 > contextmenu.sheet.rows.length ||
contextmenu.clipboardRect[3] > contextmenu.sheet.cols.length
) {
contextmenu.clipboardRectCells.length = 0
return {}
}
const startCell = contextmenu.sheet.getCell(
contextmenu.clipboardRect[0],
contextmenu.clipboardRect[1]
)
let endCell = contextmenu.sheet.getCell(
contextmenu.clipboardRect[2],
contextmenu.clipboardRect[3]
)
if (endCell?.merged) {
if (endCell.mergedTo instanceof Object) {
endCell = endCell.mergedTo
}
}
const { offsetTop, offsetLeft } =
startCell?.dom instanceof HTMLElement
? startCell.dom
: { offsetTop: 0, offsetLeft: 0 }
const { left: left2, top: top2 } = startCell?.dom
? startCell.dom.getBoundingClientRect()
: { left: 0, top: 0 }
const { right: right2, bottom: bottom2 } = endCell?.dom
? endCell.dom.getBoundingClientRect()
: { right: 0, bottom: 0 }
const tableOffsetTop = contextmenu.sheet.dom
? contextmenu.sheet.dom.offsetTop
: 0
return {
transform: `translate(${offsetLeft}px, ${
offsetTop + tableOffsetTop
}px)`,
width: `${right2 - left2 + 1}px`,
height: `${bottom2 - top2 + 1}px`,
}
})
watch$1(contextmenu, (val2) => {
if (val2.clipboardRectCells.length) {
createSelectedRect()
} else {
removeSelectedRect()
}
})
const contextmenuStyle = reactive({})
let overType = ref('')
const handleMouseOver = (event, type4) => {
overType.value = type4
handleMouseOut.cancel()
if (event.target instanceof HTMLElement) {
const submenu = event.target.querySelector('.contextmenu-sub-panel')
const parentRect = event.target.getBoundingClientRect()
if (submenu instanceof HTMLElement) {
let translateX = '0px'
let translateY = '0px'
submenu.style.opacity = '0'
submenu.style.transform = `translate(${translateY}, ${translateX})`
setTimeout(() => {
const rect = submenu.getBoundingClientRect()
submenu.style.opacity = '1'
if (rect.bottom > viewHeight.value - paddingBottom2) {
translateX = `${
viewHeight.value - rect.bottom - paddingBottom2
}px`
}
if (rect.right > viewWidth.value) {
translateY = `-${rect.width + parentRect.width + 16}px`
}
submenu.style.transform = `translate(${translateY}, ${translateX})`
}, 0)
}
}
}
const handleMouseOut = lodash$2.exports.debounce(() => {
overType.value = ''
}, 100)
const handleAction = (fn2, arg) => {
showContextmenu.value = false
if (typeof fn2 === 'function') {
fn2.call(contextmenu, arg)
}
}
function getSheetCell(el2) {
let sheetCell = null
let parent2 = el2.parentNode
while (parent2 && !sheetCell) {
sheetCell = parent2._model
parent2 = parent2.parentNode
}
return sheetCell
}
function mouseOutContextmenuPanel(el2) {
if (el2 instanceof HTMLElement) {
let parent2 = el2.parentNode
while (
parent2 instanceof HTMLElement &&
!parent2.classList?.contains('contextmenu-panel')
) {
parent2 = parent2.parentNode
}
return parent2 instanceof Document
} else {
return true
}
}
onMounted(() => {
const { width: contextmenuWidth, height: contextmenuHeight } =
useElementBounding(contextmenuPanelRef.value)
if (!contextmenuRef.value) return
contextmenuRef.value.parentElement?.setAttribute('tabindex', '0')
useShortcuts(
contextmenuRef.value.parentElement?.querySelector('table'),
contextmenu
)
useEventListener(
contextmenuRef.value.parentElement,
'contextmenu',
(e2) => {
e2.stopPropagation()
e2.preventDefault()
showContextmenu.value = true
contextmenuStyle.opacity = 0
const scroller = document.querySelector('.canvas-scroller')
if (scroller) {
canvasScroll.scrollTop = scroller.scrollTop
canvasScroll.scrollLeft = scroller.scrollLeft
}
let translateX = '0px'
let translateY = '0px'
if (mouseOutContextmenuPanel(e2.target)) {
setTimeout(() => {
if (viewWidth.value - e2.clientX < contextmenuWidth.value) {
translateX = viewWidth.value - contextmenuWidth.value + 'px'
} else {
translateX = e2.clientX + 'px'
}
if (
viewHeight.value - e2.clientY <
contextmenuHeight.value + paddingBottom2
) {
translateY =
viewHeight.value -
contextmenuHeight.value -
paddingBottom2 +
'px'
} else {
translateY = e2.clientY + 'px'
}
contextmenuStyle.transform = `translate(${translateX}, ${translateY})`
contextmenuStyle.opacity = 1
}, 0)
}
},
true
)
useEventListener(
contextmenuPanelRef.value,
'contextmenu',
(e2) => {
e2.stopPropagation()
e2.preventDefault()
},
true
)
let canvasScroll = {
scrollTop: 0,
scrollLeft: 0,
}
const scrollThrottleFn = useThrottleFn$1((e2) => {
if (e2.target.classList?.contains('canvas-scroller')) {
if (
Math.abs(e2.target.scrollTop - canvasScroll.scrollTop) > 20 ||
Math.abs(e2.target.scrollLeft - canvasScroll.scrollLeft) > 20
) {
showContextmenu.value = false
}
}
}, 100)
useEventListener(window, 'scroll', scrollThrottleFn, true)
useEventListener(
contextmenuRef.value.parentElement,
'mousedown',
(e2) => {
if (e2.button === 2) {
let sheetCell = getSheetCell(e2.target)
if (sheetCell && sheetCell.selected) {
e2.stopPropagation()
e2.preventDefault()
}
} else {
if (mouseOutContextmenuPanel(e2.target)) {
showContextmenu.value = false
}
}
},
true
)
useEventListener(
contextmenuRef.value.parentElement,
'dblclick',
(e2) => {
let sheetCell = getSheetCell(e2.target)
if (sheetCell) {
contextmenu.clearClipboardRect()
}
},
true
)
onClickOutside(contextmenuRef.value, () => {
showContextmenu.value = false
})
})
let selectedRectArea = null
function createSelectedRect() {
if (!selectedRectArea) {
selectedRectArea = document.createElement('div')
}
selectedRectArea.classList.add('sheet-selected-area')
let style2 = ''
for (const [key2, value2] of Object.entries(areaStyle.value)) {
style2 += `${key2}:${value2};`
}
selectedRectArea.setAttribute('style', style2)
contextmenuRef.value?.parentElement
?.querySelector('.sheetWrapper')
?.appendChild(selectedRectArea)
}
function removeSelectedRect() {
selectedRectArea?.remove()
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'contextmenu',
ref_key: 'contextmenuRef',
ref: contextmenuRef,
},
[
(openBlock(),
createBlock(Teleport, { to: 'body' }, [
withDirectives(
createElementVNode(
'div',
{
class: 'contextmenu-panel',
ref_key: 'contextmenuPanelRef',
ref: contextmenuPanelRef,
style: normalizeStyle$1(unref(contextmenuStyle)),
},
[
createElementVNode('ul', null, [
createElementVNode(
'li',
{
class: 'flex justify-between',
onClick:
_cache[0] ||
(_cache[0] = ($event) =>
handleAction(unref(contextmenu).setCutCells)),
},
[
createElementVNode(
'span',
null,
toDisplayString$1(_ctx._t('\u526A\u5207')),
1
),
_hoisted_1$37,
]
),
createElementVNode(
'li',
{
class: 'flex justify-between',
onClick:
_cache[1] ||
(_cache[1] = ($event) =>
handleAction(unref(contextmenu).setCopyCells)),
},
[
createElementVNode(
'span',
null,
toDisplayString$1(_ctx._t('\u590D\u5236')),
1
),
_hoisted_2$2P,
]
),
createElementVNode(
'li',
{
class: 'flex justify-between',
onClick:
_cache[2] ||
(_cache[2] = ($event) =>
handleAction(unref(contextmenu).handlePaste)),
},
[
createElementVNode(
'span',
null,
toDisplayString$1(_ctx._t('\u7C98\u8D34')),
1
),
_hoisted_3$2A,
]
),
createElementVNode(
'li',
{
class: normalizeClass([
'flex justify-between',
{ 'is-hover': overType.value === 'clear' },
]),
onMouseenter:
_cache[6] ||
(_cache[6] = ($event) =>
handleMouseOver($event, 'clear')),
onMouseleave:
_cache[7] ||
(_cache[7] = ($event) => unref(handleMouseOut)()),
},
[
createElementVNode(
'span',
null,
toDisplayString$1(_ctx._t('\u6E05\u9664')),
1
),
_hoisted_4$2d,
createElementVNode('div', _hoisted_5$1Z, [
createElementVNode('ul', null, [
createElementVNode(
'li',
{
class: 'flex justify-between',
onClick:
_cache[3] ||
(_cache[3] = ($event) =>
handleAction(
unref(contextmenu).clearSelectedCells,
unref(ContextmenuClearType).ALL
)),
},
[
createElementVNode(
'span',
null,
toDisplayString$1(_ctx._t('\u5168\u90E8')),
1
),
]
),
createElementVNode(
'li',
{
class: 'flex justify-between',
onClick:
_cache[4] ||
(_cache[4] = ($event) =>
handleAction(
unref(contextmenu).clearSelectedCells,
unref(ContextmenuClearType).STYLE
)),
},
[
createElementVNode(
'span',
null,
toDisplayString$1(_ctx._t('\u683C\u5F0F')),
1
),
]
),
createElementVNode(
'li',
{
class: 'flex justify-between',
onClick:
_cache[5] ||
(_cache[5] = ($event) =>
handleAction(
unref(contextmenu).clearSelectedCells,
unref(ContextmenuClearType).CONTENT
)),
},
[
createElementVNode(
'span',
null,
toDisplayString$1(_ctx._t('\u5185\u5BB9')),
1
),
]
),
]),
]),
],
34
),
createElementVNode(
'li',
{
class: normalizeClass([
'flex justify-between',
{ 'is-hover': overType.value === 'delete' },
]),
onMouseenter:
_cache[12] ||
(_cache[12] = ($event) =>
handleMouseOver($event, 'delete')),
onMouseleave:
_cache[13] ||
(_cache[13] = ($event) => unref(handleMouseOut)()),
},
[
createElementVNode(
'span',
null,
toDisplayString$1(_ctx._t('\u5220\u9664')),
1
),
_hoisted_6$1M,
createElementVNode('div', _hoisted_7$1v, [
createElementVNode('ul', null, [
createElementVNode(
'li',
{
class: 'flex justify-between',
onClick:
_cache[8] ||
(_cache[8] = ($event) =>
handleAction(
unref(contextmenu).deleteSelectedCells,
unref(ContextmenuDeleteType).ROW
)),
},
[
createElementVNode(
'span',
null,
toDisplayString$1(
_ctx._t('\u5220\u9664\u884C')
),
1
),
]
),
createElementVNode(
'li',
{
class: 'flex justify-between',
onClick:
_cache[9] ||
(_cache[9] = ($event) =>
handleAction(
unref(contextmenu).deleteSelectedCells,
unref(ContextmenuDeleteType).COLUMN
)),
},
[
createElementVNode(
'span',
null,
toDisplayString$1(
_ctx._t('\u5220\u9664\u5217')
),
1
),
]
),
createElementVNode(
'li',
{
class: 'flex justify-between',
onClick:
_cache[10] ||
(_cache[10] = ($event) =>
handleAction(
unref(contextmenu).deleteSelectedCells,
unref(ContextmenuDeleteType).CELL_RIGHT
)),
},
[
createElementVNode(
'span',
null,
toDisplayString$1(
_ctx._t(
'\u5220\u9664\u5355\u5143\u683C\uFF0C\u53F3\u4FA7\u5355\u5143\u683C\u5DE6\u79FB'
)
),
1
),
]
),
createElementVNode(
'li',
{
class: 'flex justify-between',
onClick:
_cache[11] ||
(_cache[11] = ($event) =>
handleAction(
unref(contextmenu).deleteSelectedCells,
unref(ContextmenuDeleteType).CELL_BOTTOM
)),
},
[
createElementVNode(
'span',
null,
toDisplayString$1(
_ctx._t(
'\u5220\u9664\u5355\u5143\u683C\uFF0C\u4E0B\u4FA7\u5355\u5143\u683C\u4E0A\u79FB'
)
),
1
),
]
),
]),
]),
],
34
),
]),
],
4
),
[[vShow, showContextmenu.value]]
),
])),
],
512
)
)
}
},
})
var ContextMenu = /* @__PURE__ */ _export_sfc(_sfc_main$3m, [
['__scopeId', 'data-v-2692341c'],
])
var ContextMenu$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ContextMenu,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var SlantLine_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$36 = { class: 'content' }
const _hoisted_2$2O = { class: 'top third-area' }
const _hoisted_3$2z = { class: 'bottom flex justify-between' }
const _hoisted_4$2c = { class: 'first-area' }
const _hoisted_5$1Y = {
key: 0,
class: 'second-area',
}
const _sfc_main$3l = /* @__PURE__ */ defineComponent({
props: {
slantLine: null,
},
setup(__props2) {
const props2 = __props2
const slantLineRef = ref()
let firstLineStyle = ref({})
let secondLineStyle = ref({})
const lines = computed(() => {
return props2.slantLine.content.split('|')
})
function setLinesStyle(lines2) {
const { width, height } = slantLineRef.value.getBoundingClientRect()
if (lines2.length > 2) {
let FirstLineAngleRad =
props2.slantLine.direction === 'right'
? 2 * Math.PI - Math.atan2(height, width * 1.15)
: Math.atan2(height, width * 1.15)
let SecondLineAngleRadTop =
props2.slantLine.direction === 'right'
? 2 * Math.PI - Math.atan2(height, width * 0.5)
: Math.atan2(height, width * 0.5)
firstLineStyle.value = { transform: `rotate(${FirstLineAngleRad}rad)` }
secondLineStyle.value = {
transform: `rotate(${SecondLineAngleRadTop}rad)`,
}
} else {
let FirstLineAngleRad =
props2.slantLine.direction === 'right'
? 2 * Math.PI - Math.atan2(height, width)
: Math.atan2(height, width)
firstLineStyle.value = { transform: `rotate(${FirstLineAngleRad}rad)` }
}
}
watch$1(
props2,
() => {
if (!slantLineRef.value) {
return
}
setLinesStyle(lines.value)
},
{
deep: true,
}
)
onMounted(() => {
useResizeObserver(slantLineRef.value, () => {
setLinesStyle(lines.value)
})
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass(['slant-line', __props2.slantLine.direction]),
ref_key: 'slantLineRef',
ref: slantLineRef,
},
[
createElementVNode(
'div',
{
class: 'line',
style: normalizeStyle$1(firstLineStyle.value),
},
null,
4
),
lines.value[2] !== void 0
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: 'line',
style: normalizeStyle$1(secondLineStyle.value),
},
null,
4
))
: createCommentVNode('', true),
createElementVNode('div', _hoisted_1$36, [
createElementVNode(
'div',
_hoisted_2$2O,
toDisplayString$1(lines.value[0]),
1
),
createElementVNode('div', _hoisted_3$2z, [
createElementVNode(
'div',
_hoisted_4$2c,
toDisplayString$1(lines.value[1]),
1
),
lines.value[2] !== void 0
? (openBlock(),
createElementBlock(
'div',
_hoisted_5$1Y,
toDisplayString$1(lines.value[2]),
1
))
: createCommentVNode('', true),
]),
]),
],
2
)
)
}
},
})
var SlantLine = /* @__PURE__ */ _export_sfc(_sfc_main$3l, [
['__scopeId', 'data-v-90caed18'],
])
var SlantLine$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: SlantLine,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
function useDragCol() {
const instance = getCurrentInstance()
const dragging = ref(false)
const dragState = ref({})
const handleMouseDown = (event, column) => {
event.stopPropagation()
if (!column.sheet?.dom) return
if (column) {
dragging.value = true
const tableEl = column.sheet.dom
const tableLeft = tableEl.getBoundingClientRect().left
const columnEl = tableEl.querySelector(`th[col-id="${column.id}"]`)
if (!columnEl) return
const columnRect = columnEl.getBoundingClientRect()
const minLeft = columnRect.left - tableLeft + 10
dragState.value = {
startMouseLeft: event.clientX,
startLeft: columnRect.right - tableLeft,
startColumnLeft: columnRect.left - tableLeft,
tableLeft,
}
const verticalResizeProxy = instance?.refs.verticalResizeProxy
verticalResizeProxy.style.left = `${dragState.value.startLeft}px`
const handleMouseMove = (event2) => {
event2.stopPropagation()
const deltaLeft = event2.clientX - dragState.value.startMouseLeft
const proxyLeft = dragState.value.startLeft + deltaLeft
verticalResizeProxy.style.left = `${Math.max(minLeft, proxyLeft)}px`
}
const handleMouseUp = () => {
if (dragging.value) {
const { startColumnLeft } = dragState.value
const finalLeft = Number.parseInt(verticalResizeProxy.style.left, 10)
const columnWidth = finalLeft - startColumnLeft
column.setStyle({ width: `${columnWidth}px` })
dragging.value = false
dragState.value = {}
}
document.removeEventListener('mousemove', handleMouseMove)
document.removeEventListener('mouseup', handleMouseUp)
}
document.addEventListener('mousemove', handleMouseMove)
document.addEventListener('mouseup', handleMouseUp)
}
}
return {
handleMouseDownInCol: handleMouseDown,
dragColIng: dragging,
}
}
function useDragRow() {
const instance = getCurrentInstance()
const dragging = ref(false)
const dragState = ref({})
const handleMouseDown = (event, row) => {
event.stopPropagation()
if (row) {
dragging.value = true
const tableEl = instance?.vnode.el?.querySelector('.sheet')
const tableTop = tableEl.getBoundingClientRect().top
const rowEl = instance?.vnode.el?.querySelector(`th[row-id="${row.id}"]`)
const rowRect = rowEl.getBoundingClientRect()
const minTop = rowRect.top - tableTop + 10
dragState.value = {
startMouseTop: event.clientY,
startTop: rowRect.bottom - tableTop,
startRowTop: rowRect.top - tableTop,
tableTop,
}
const horizontalResizeProxy = instance?.refs.horizontalResizeProxy
horizontalResizeProxy.style.top = `${dragState.value.startTop}px`
const handleMouseMove = (event2) => {
event2.stopPropagation()
const deltaTop = event2.clientY - dragState.value.startMouseTop
const proxyTop = dragState.value.startTop + deltaTop
horizontalResizeProxy.style.top = `${Math.max(minTop, proxyTop)}px`
}
const handleMouseUp = () => {
if (dragging.value) {
const { startRowTop } = dragState.value
const finalTop = Number.parseInt(horizontalResizeProxy.style.top, 10)
const rowHight = finalTop - startRowTop
row.setStyle({ height: `${rowHight}px` })
dragging.value = false
dragState.value = {}
}
document.removeEventListener('mousemove', handleMouseMove)
document.removeEventListener('mouseup', handleMouseUp)
}
document.addEventListener('mousemove', handleMouseMove)
document.addEventListener('mouseup', handleMouseUp)
}
}
return {
handleMouseDownInRow: handleMouseDown,
dragRowIng: dragging,
}
}
function useControllerEvent(node2, render2) {
const props2 = node2.props
const sheetDataSetConfigList = reactive(
props2.sheet.config.sheetDataSetConfigList
)
watch$1(
sheetDataSetConfigList,
lodash$2.exports.debounce((val2) => {
emit(ControllerEventType.UN_UNION_FILTER, {
removeChartId: node2.id,
prevControllerId: props2.sheet.config.queryControllerId,
})
emit(ControllerEventType.UNION_FILTER, {
controllerId: props2.sheet.config.queryControllerId,
relativeList: createFields(val2),
chartId: node2.id,
})
}, 300)
)
const createFields = (sheetDataSetConfigList2) => {
let fields = []
let dataSet = lodash$2.exports
.take(sheetDataSetConfigList2, 1)
.filter((item2) => item2.dataSet)
.map((item2) => item2.dataSet)
dataSet.forEach(async (item2) => {
let fieldList = item2?.fieldList || []
let isHistoryMode = false
if (item2.specialId === 'history') {
isHistoryMode = true
fieldList = fieldList.filter((item22) => item22.name.match(/记录时间/g))
}
fields.push(
...fieldList.map((field2) => {
return {
id: field2.id,
fieldName: field2.name,
optionValue: field2.name,
fieldType:
isHistoryMode && field2.type.match(/日期|时间/g)
? 3
: field2.type,
chartId: node2.id,
dataSetId: item2.id,
field: field2.name,
dataType:
field2.name === '\u8BB0\u5F55\u65F6\u95F4' ? 'history' : '',
}
})
)
})
return fields
}
on$1(ControllerEventType.FILTER_DATA, (detail) => {
if (detail.controllerId === props2.sheet.config.queryControllerId) {
props2.sheet.dataRenderer.whereJson = JSON.stringify(detail.value)
if (typeof render2 === 'function') {
render2(1)
}
}
})
let clearQueryControllerIdTimer
on$1(ControllerEventType.DESTROY_CONTROLLER, function (detail) {
if (props2.sheet.config.queryControllerId == detail.controllerId) {
clearQueryControllerIdTimer = setTimeout(() => {
props2.sheet.config.queryControllerId = ''
}, 1e3)
}
})
onMounted(() => {
let queryControllerId = props2.sheet.config.queryControllerId
if (queryControllerId) {
let filterId = getNodeById(queryControllerId).id
if (queryControllerId !== filterId) {
props2.sheet.config.queryControllerId = ''
}
}
})
onBeforeUnmount(() => {
clearQueryControllerIdTimer && clearTimeout(clearQueryControllerIdTimer)
emit(ControllerEventType.UN_UNION_FILTER, {
removeChartId: node2.id,
prevControllerId: props2.sheet.config.queryControllerId,
})
})
}
var Sheet_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$1M = (n2) => (
pushScopeId('data-v-beb6c454'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$35 = { class: 'sheetScroller' }
const _hoisted_2$2N = { class: 'sheetWrapper' }
const _hoisted_3$2y = {
key: 0,
class: 'title sticky',
}
const _hoisted_4$2b = ['._rendering', 'id']
const _hoisted_5$1X = /* @__PURE__ */ _withScopeId$1M(() =>
/* @__PURE__ */ createElementVNode('col', { class: 'th-y' }, null, -1)
)
const _hoisted_6$1L = ['._colIndex', 'id']
const _hoisted_7$1u = [
'._model',
'._colIndex',
'col-id',
'onMousedown',
'onMouseenter',
'onMouseup',
]
const _hoisted_8$1l = ['onMousedown']
const _hoisted_9$1f = ['._rowIndex', 'id']
const _hoisted_10$1c = ['row-id', 'onMousedown', 'onMouseenter', 'onMouseup']
const _hoisted_11$14 = ['onMousedown']
const _hoisted_12$11 = [
'._colIndex',
'id',
'colSpan',
'rowSpan',
'onMousedown',
'onMouseenter',
'onMouseup',
'onDrop',
'onClick',
'onDblclick',
]
const _hoisted_13$W = ['onDblclick']
const _hoisted_14$R = ['contenteditable', 'onBlur']
const _hoisted_15$O = {
key: 3,
class: 'border',
}
const _hoisted_16$N = ['._sheetRow']
const _hoisted_17$H = ['._model', '._sheetCell']
const _hoisted_18$C = ['._rendering']
const _hoisted_19$z = {
class: 'vertical-resize-proxy',
ref: 'verticalResizeProxy',
}
const _hoisted_20$x = {
class: 'horizontal-resize-proxy',
ref: 'horizontalResizeProxy',
}
const _sfc_main$3k = /* @__PURE__ */ defineComponent({
props: {
node: null,
editing: { type: Boolean },
running: { type: Boolean },
props: null,
},
emits: [EventBlock.types.clickCell],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
useCssVars((_ctx) => ({
'4c765928': unref(defaultStyle).height,
'2c96e1a5': unref(defaultStyle).width,
'210b4237': unref(defaultStyle).textAlign,
'2b7fe342': unref(defaultStyle).color,
'52b66cb1': unref(defaultStyle).fontSize,
}))
const node2 = reactive($props2.node)
const props2 = node2.props
ref('')
const sheet = props2.sheet
props2.sheet = sheet
let _row
let _cell
const vM = {
created(dom, binding) {
const model = binding.value
if (!(model instanceof SheetElement)) {
console.error('!model')
return
}
model.bind(dom)
},
}
function cellClick(cell) {
emit2(EventBlock.types.clickCell, {
cell,
row: cell.row,
col: cell.col,
})
}
const { handleMouseDownInCol, dragColIng } = useDragCol()
const { handleMouseDownInRow, dragRowIng } = useDragRow()
function drop3(e2, cell) {
const { isField, targetCanvasNodeId } = JSON.parse(
e2.dataTransfer?.getData('application/json') || 'null'
)
if (!isField) {
return false
}
e2.stopPropagation()
if (targetCanvasNodeId !== node2.id) {
toast('\u4E0D\u662F\u540C\u4E00\u4E2A\u8868\u683C', 'error')
return false
}
const dragField = Field.currentDragField
if (!cell || !(dragField instanceof Field)) return false
cell.content = dragField
cell.contentType = SheetCell.contentTypes.field.value
Field.currentDragField = null
}
function isFieldUsable(content2) {
if ($props2.running) return true
if (!(content2 instanceof Field)) return true
const dataSetConfig = sheet.config.sheetDataSetConfigList.find(
(config2) => config2?.dataSet?.id === content2.dataSet.id
)
const field2 = dataSetConfig?.dataSet?.fieldList.find(
(f2) => f2.id === content2.id
)
if (!dataSetConfig) return false
if (!field2) return false
return true
}
let debug = false
debug = false
window.sheet = sheet
window.SheetModels = SheetModels
const translateRender = sheet.translateRender
const dataRenderer = sheet.dataRenderer
async function render2(pageIndex2 = dataRenderer.pageIndex) {
if ($props2.editing) return
dataRenderer.pageIndex = pageIndex2
await dataRenderer.render()
translateRender.render()
}
let currentVariableName = ref('')
const getVariable = (cell) => {
let text2 = ''
let content2 = cell.content
if (content2 && typeof content2 === 'string') {
text2 = cell.convertFormat(Variable.store[content2])
}
if (
$props2.editing &&
content2 &&
(text2 === '' || text2 === void 0 || text2 === null)
) {
text2 = '${' + content2 + '}'
}
return text2
}
let pickVarDialogShown = ref(false)
let editCell = ref(null)
const handleEditVariable = (cell) => {
if (!$props2.editing) return
pickVarDialogShown.value = true
editCell.value = cell
currentVariableName.value = cell.content
}
const confirmEditVariable = (row) => {
pickVarDialogShown.value = false
if (!editCell.value || !row.length) return
editCell.value.content = row[0].name
}
useControllerEvent(node2, render2)
let timer2
const startUpdateSheetDataInterval = () => {
if ($props2.running && sheet.config.autoRefresh) {
render2()
clearTimeout(timer2)
timer2 = setTimeout(() => {
startUpdateSheetDataInterval()
}, sheet.config.autoRefreshTimeMs)
}
}
onMounted(() => {
translateRender.init(node2)
render2()
startUpdateSheetDataInterval()
})
onBeforeUnmount(() => {
clearInterval(timer2)
translateRender.destroy()
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'sheetWorkspace',
{ debug: unref(debug), zIndex: unref(node2).selected },
]),
'data-v-sheet': '',
},
[
$props2.editing
? (openBlock(),
createBlock(
ContextMenu,
{
key: 0,
contextmenu: unref(sheet).contextmenu,
},
null,
8,
['contextmenu']
))
: createCommentVNode('', true),
unref(node2).selected || unref(sheet).toolbar.lock
? (openBlock(),
createBlock(
Toolbar$2,
{
key: 1,
toolbar: unref(sheet).toolbar,
},
null,
8,
['toolbar']
))
: createCommentVNode('', true),
createElementVNode('div', _hoisted_1$35, [
createElementVNode('div', _hoisted_2$2N, [
unref(sheet).config.title.enabled
? (openBlock(),
createElementBlock(
'h3',
_hoisted_3$2y,
toDisplayString$1(unref(sheet).config.title.text),
1
))
: createCommentVNode('', true),
$props2.running
? (openBlock(),
createBlock(
DataToolbar,
{
key: 1,
class: 'sticky',
dataRenderer: unref(sheet).dataRenderer,
onChangePage: render2,
},
null,
8,
['dataRenderer']
))
: createCommentVNode('', true),
withDirectives(
(openBlock(),
createElementBlock(
'table',
{
'._rendering': (unref(sheet).ui.state.rendering = true),
class: 'sheet',
id: unref(sheet).id,
tabindex: '1',
},
[
createElementVNode('colgroup', null, [
_hoisted_5$1X,
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(sheet).cols, (col, colIndex) => {
return withDirectives(
(openBlock(),
createElementBlock(
'col',
{
'._colIndex': colIndex,
class: 'col',
id: col.id,
key: col.id,
style: normalizeStyle$1(col.style),
},
null,
12,
_hoisted_6$1L
)),
[[vM, col]]
)
}),
128
)),
]),
createElementVNode('thead', null, [
createElementVNode('tr', null, [
createElementVNode(
'th',
{
class: 'th-x th-y',
onMousedown:
_cache[0] ||
(_cache[0] = ($event) =>
unref(sheet).selectAll()),
},
null,
32
),
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(sheet).cols, (col, colIndex) => {
return (
openBlock(),
createElementBlock(
'th',
{
'._model': col,
'._colIndex': colIndex,
class: normalizeClass([
'th-x',
{
'drag-col': unref(dragColIng),
'selector-ignore':
unref(node2).selected,
selected: col.selected,
},
]),
key: col.id,
'col-id': col.id,
style: normalizeStyle$1(col.style),
onMousedown: ($event) => col.selectStart(),
onMouseenter: ($event) => col.selectMove(),
onMouseup: ($event) => col.selectEnd(),
},
[
createTextVNode(
toDisplayString$1(col.name) + ' ',
1
),
createElementVNode(
'div',
{
class: 'resizable',
onMousedown: ($event) =>
unref(handleMouseDownInCol)(
$event,
col
),
},
null,
40,
_hoisted_8$1l
),
],
46,
_hoisted_7$1u
)
)
}),
128
)),
]),
]),
createElementVNode(
'tbody',
{
class: normalizeClass({
'selector-ignore': unref(node2).selected,
}),
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(sheet).rows, (row, rowIndex) => {
return withDirectives(
(openBlock(),
createElementBlock(
'tr',
{
'._rowIndex': rowIndex,
class: normalizeClass([
'row',
{
selected: row.selected,
},
]),
id: row.id,
key: row.id,
style: normalizeStyle$1(row.style),
},
[
createElementVNode(
'th',
{
class: normalizeClass([
'th-y',
{
'drag-row': unref(dragRowIng),
},
]),
'row-id': row.id,
onMousedown: ($event) =>
row.selectStart(),
onMouseenter: ($event) =>
row.selectMove(),
onMouseup: ($event) => row.selectEnd(),
},
[
createTextVNode(
toDisplayString$1(row.name) + ' ',
1
),
createElementVNode(
'div',
{
class: 'resizable',
onMousedown: ($event) =>
unref(handleMouseDownInRow)(
$event,
row
),
},
null,
40,
_hoisted_11$14
),
],
42,
_hoisted_10$1c
),
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
row.cells,
(cell, colIndex) => {
return withDirectives(
(openBlock(),
createElementBlock(
'td',
{
'._colIndex': colIndex,
class: normalizeClass([
'cell',
{
_: cell.updateMergedTo(),
merged: cell.merged,
firstMerged:
cell.firstMerged,
elseMerged: cell.elseMerged,
selected: cell.selected,
singleSelected:
unref(sheet)
.selectedCells[0] ===
cell &&
unref(sheet).selectedCells
.length ==
cell.rowSpan *
cell.colSpan,
formatPainter:
unref(sheet).toolbar
.formatPainter.enabled,
unusable: !isFieldUsable(
cell.content
),
[cell.dataLoopType ||
'']: true,
},
]),
id: cell.id,
colSpan:
cell.colSpan > 1
? cell.colSpan
: void 0,
rowSpan:
cell.rowSpan > 1
? cell.rowSpan
: void 0,
style: normalizeStyle$1({
...cell.computedStyle,
...cell.conditionStyle,
}),
key: cell.id,
onMousedown: ($event) =>
cell.selectStart(),
onMouseenter: ($event) =>
cell.selectMove(),
onMouseup: ($event) =>
cell.selectEnd(),
onDrop: ($event) =>
drop3($event, cell),
onClick: ($event) =>
cellClick(cell),
onDblclick: (e2) => {
if ($props2.running) return
if (
cell.contentType !== 'text'
)
return
cell.contentEditable = true
if (
typeof cell.content ===
'string'
) {
unref(
SheetCell
).editorContent.value =
cell.content
}
const currentTarget =
e2.currentTarget
_ctx.window.setTimeout(() => {
currentTarget
?.querySelector('.text')
?.focus()
})
},
},
[
cell.contentType ===
unref(SheetCell).contentTypes
.slantLine.value
? (openBlock(),
createBlock(
SlantLine,
{
key: 0,
slantLine: cell.content,
},
null,
8,
['slantLine']
))
: cell.contentType ===
unref(SheetCell)
.contentTypes.variable
.value
? (openBlock(),
createElementBlock(
'div',
{
key: 1,
onDblclick: ($event) =>
handleEditVariable(
cell
),
class: 'variable-cell',
},
toDisplayString$1(
getVariable(cell)
),
41,
_hoisted_13$W
))
: (openBlock(),
createElementBlock(
'div',
{
key: 2,
class: 'text',
contenteditable:
cell.contentEditable,
onBlur: (e2) => {
cell.contentEditable = false
cell.content =
unref(
SheetCell
).editorContent.value
unref(
SheetCell
).editorContent.value =
''
},
onInput:
_cache[1] ||
(_cache[1] = (e2) => {
unref(
SheetCell
).editorContent.value =
e2.target?.innerText
}),
},
toDisplayString$1(
cell.contentEditable
? cell.content
: cell.convertFormat(
cell.computedContent
)
),
41,
_hoisted_14$R
)),
cell.firstMerged
? (openBlock(),
createElementBlock(
'table',
_hoisted_15$O,
[
createElementVNode(
'colgroup',
null,
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
cell.colSpan,
(ci) => {
return (
openBlock(),
createElementBlock(
'col',
{
class:
'col',
key: ci,
style:
normalizeStyle$1(
unref(
sheet
)
.cols[
colIndex +
ci -
1
]
?.style
),
},
null,
4
)
)
}
),
128
)),
]
),
createElementVNode(
'tbody',
null,
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
cell.rowSpan,
(ri) => {
return (
openBlock(),
createElementBlock(
'tr',
{
class:
'row',
'._sheetRow':
isRef(
_row
)
? (_row.value =
unref(
sheet
).rows[
rowIndex +
ri -
1
])
: (_row =
unref(
sheet
)
.rows[
rowIndex +
ri -
1
]),
key: ri,
style:
normalizeStyle$1(
unref(
_row
)
?.style
),
},
[
(openBlock(
true
),
createElementBlock(
Fragment,
null,
renderList(
cell.colSpan,
(
ci
) => {
return (
openBlock(),
createElementBlock(
'td',
{
class:
'cell',
'._model':
cell,
'._sheetCell':
isRef(
_cell
)
? (_cell.value =
unref(
_row
)?.cells[
colIndex +
ci -
1
])
: (_cell =
unref(
_row
)
?.cells[
colIndex +
ci -
1
]),
key: ci,
style:
normalizeStyle$1(
unref(
_cell
)
?.computedStyle
),
},
null,
12,
_hoisted_17$H
)
)
}
),
128
)),
],
12,
_hoisted_16$N
)
)
}
),
128
)),
]
),
]
))
: createCommentVNode(
'',
true
),
],
46,
_hoisted_12$11
)),
[[vM, cell]]
)
}
),
128
)),
],
14,
_hoisted_9$1f
)),
[[vM, row]]
)
}),
128
)),
],
2
),
createElementVNode(
'tfoot',
{
'._rendering': (unref(
sheet
).ui.state.rendering = false),
},
null,
8,
_hoisted_18$C
),
withDirectives(
createElementVNode('div', _hoisted_19$z, null, 512),
[[vShow, unref(dragColIng)]]
),
withDirectives(
createElementVNode('div', _hoisted_20$x, null, 512),
[[vShow, unref(dragRowIng)]]
),
],
8,
_hoisted_4$2b
)),
[[vM, unref(sheet)]]
),
]),
]),
createVNode$1(
unref(_sfc_main$6Q),
{
data: { name: currentVariableName.value },
visible: pickVarDialogShown.value,
noLanguage: true,
isAppendToBody: true,
onCancel:
_cache[2] ||
(_cache[2] = ($event) => (pickVarDialogShown.value = false)),
onConfirm: confirmEditVariable,
},
null,
8,
['data', 'visible']
),
],
2
)
)
}
},
})
var Sheet = /* @__PURE__ */ _export_sfc(_sfc_main$3k, [
['__scopeId', 'data-v-beb6c454'],
])
var __glob_1_20 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Sheet,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _sfc_main$3j = {}
function _sfc_render$3(_ctx, _cache) {
return null
}
var Unauthorized_settings = /* @__PURE__ */ _export_sfc(_sfc_main$3j, [
['render', _sfc_render$3],
])
var __glob_1_21 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Unauthorized_settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var _imports_0$3 =
'data:image/png;base64,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'
var Unauthorized_vue_vue_type_style_index_0_scoped_true_lang = ''
const _sfc_main$3i = {}
const _withScopeId$1L = (n2) => (
pushScopeId('data-v-e23705ae'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$34 = { class: 'UnauthorizedPlaceholder' }
const _hoisted_2$2M = /* @__PURE__ */ _withScopeId$1L(() =>
/* @__PURE__ */ createElementVNode('img', { src: _imports_0$3 }, null, -1)
)
const _hoisted_3$2x = { class: 'unauth' }
const _hoisted_4$2a = { class: 'tips' }
function _sfc_render$2(_ctx, _cache) {
return (
openBlock(),
createElementBlock('div', _hoisted_1$34, [
_hoisted_2$2M,
createElementVNode(
'span',
_hoisted_3$2x,
toDisplayString$1(_ctx._t('\u672A\u6388\u6743')),
1
),
createElementVNode(
'span',
_hoisted_4$2a,
toDisplayString$1(
_ctx._t(
'\u62B1\u6B49\uFF0C\u60A8\u6B63\u5728\u4F7F\u7528\u7684\u6A21\u5757\u672A\u6388\u6743\uFF0C\u65E0\u6CD5\u8BBF\u95EE'
)
),
1
),
])
)
}
var Unauthorized = /* @__PURE__ */ _export_sfc(_sfc_main$3i, [
['render', _sfc_render$2],
['__scopeId', 'data-v-e23705ae'],
])
var __glob_1_22 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Unauthorized,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
loadInternalWidgets$1()
function loadInternalWidgets$1() {
const vueModuleMap = {
'./CheckboxControl/CheckboxControl.settings.vue': __glob_1_0,
'./CheckboxControl/CheckboxControl.vue': __glob_1_1,
'./DateSelector/DateSelector.settings.vue': __glob_1_2,
'./DateSelector/DateSelector.vue': __glob_1_3,
'./Filter/DateIcon.vue': __glob_1_4,
'./Filter/Filter.settings.vue': __glob_1_5,
'./Filter/Filter.vue': __glob_1_6,
'./Progress/Progress.settings.vue': __glob_1_7,
'./Progress/Progress.vue': __glob_1_8,
'./QueryButton/QueryButton.settings.vue': __glob_1_9,
'./QueryButton/QueryButton.vue': __glob_1_10,
'./RadioControl/RadioControl.settings.vue': __glob_1_11,
'./RadioControl/RadioControl.vue': __glob_1_12,
'./Select/OptionConfigDialog.vue': __glob_1_13,
'./Select/Select.settings.vue': __glob_1_14,
'./Select/Select.vue': __glob_1_15,
'./SelectControl/SelectControl.settings.vue': __glob_1_16,
'./SelectControl/SelectControl.vue': __glob_1_17,
'./Sheet/DataToolbar.vue': __glob_1_18,
'./Sheet/Sheet.settings.vue': __glob_1_19,
'./Sheet/Sheet.vue': __glob_1_20,
'./Unauthorized/Unauthorized.settings.vue': __glob_1_21,
'./Unauthorized/Unauthorized.vue': __glob_1_22,
}
const tsModuleMap = {
'./CheckboxControl/index.ts': __glob_2_0,
'./DateSelector/index.ts': __glob_2_1,
'./Filter/index.ts': __glob_2_2,
'./Progress/index.ts': __glob_2_3,
'./QueryButton/index.ts': __glob_2_4,
'./RadioControl/index.ts': __glob_2_5,
'./Select/index.ts': __glob_2_6,
'./SelectControl/index.ts': __glob_2_7,
'./Sheet/index.ts': __glob_2_8,
'./Unauthorized/index.ts': __glob_2_9,
}
for (const fileName in vueModuleMap) {
const vueName = fileName.match(/\/([^./\\]+)\.vue$/)?.[1]
const module2 = vueModuleMap[fileName]
if (vueName) {
new Widget({
is: vueName,
canvasView: module2.default,
})
}
let vueSettingsName = fileName.match(/\/([^./\\]+)\.settings\.vue$/)?.[1]
if (vueSettingsName) {
new Widget({
is: vueSettingsName,
name: vueSettingsName,
settingsView: module2.default,
...module2.config,
})
}
let tsModule = tsModuleMap[`./${vueName}/index.ts`]
if (tsModule) {
new Widget({
is: vueName,
...tsModule.default,
})
}
}
}
loadInternalWidgets()
function loadInternalWidgets() {
const vueList = {
'./A/A.settings.vue': __glob_2_0$1,
'./A/A.vue': __glob_2_1$1,
'./Button/Button.settings.vue': __glob_2_2$1,
'./Button/Button.vue': __glob_2_3$1,
'./Chart/Chart.settings.vue': __glob_2_4$1,
'./Chart/Chart.vue': __glob_2_5$1,
'./ChartBar/ChartBar.settings.vue': __glob_2_6$1,
'./ChartBar/ChartBar.vue': __glob_2_7$1,
'./ChartBar/SetChart.vue': __glob_2_8$1,
'./ChartBarHorizontal/ChartBarHorizontal.settings.vue': __glob_2_9$1,
'./ChartBarHorizontal/ChartBarHorizontal.vue': __glob_2_10,
'./ChartBarHorizontalStacked/ChartBarHorizontalStacked.settings.vue':
__glob_2_11,
'./ChartBarHorizontalStacked/ChartBarHorizontalStacked.vue': __glob_2_12,
'./ChartBarStacked/ChartBarStacked.settings.vue': __glob_2_13,
'./ChartBarStacked/ChartBarStacked.vue': __glob_2_14,
'./ChartCard/ChartCard.settings.vue': __glob_2_15,
'./ChartCard/ChartCard.vue': __glob_2_16,
'./ChartLine/ChartLine.settings.vue': __glob_2_17,
'./ChartLine/ChartLine.vue': __glob_2_18,
'./ChartLine/SetChart.vue': __glob_2_19,
'./ChartLineArea/ChartLineArea.settings.vue': __glob_2_20,
'./ChartLineArea/ChartLineArea.vue': __glob_2_21,
'./ChartLineAreaStacked/ChartLineAreaStacked.settings.vue': __glob_2_22,
'./ChartLineAreaStacked/ChartLineAreaStacked.vue': __glob_2_23,
'./ChartLineTrend/Chart.vue': __glob_2_24,
'./ChartLineTrend/ChartLineTrend.settings.vue': __glob_2_25,
'./ChartLineTrend/ChartLineTrend.vue': __glob_2_26,
'./ChartLineTrendConfig/ChartLineTrendConfig.settings.vue': __glob_2_27,
'./ChartLineTrendConfig/ChartLineTrendConfig.vue': __glob_2_28,
'./ChartMixed/ChartMixed.settings.vue': __glob_2_29,
'./ChartMixed/ChartMixed.vue': __glob_2_30,
'./ChartPie/ChartPie.settings.vue': __glob_2_31,
'./ChartPie/ChartPie.vue': __glob_2_32,
'./ChartPie/Label.vue': __glob_2_33,
'./ChartPie/SetChart.vue': __glob_2_34,
'./ChartPieRing/ChartPieRing.settings.vue': __glob_2_35,
'./ChartPieRing/ChartPieRing.vue': __glob_2_36,
'./ChartPieRing/SetChart.vue': __glob_2_37,
'./ChartPieRose/ChartPieRose.settings.vue': __glob_2_38,
'./ChartPieRose/ChartPieRose.vue': __glob_2_39,
'./ChartTable/ChartTable.settings.vue': __glob_2_40,
'./ChartTable/ChartTable.vue': __glob_2_41,
'./Circle/Circle.settings.vue': __glob_2_42,
'./Circle/Circle.vue': __glob_2_43,
'./ControlButton/ControlButton.settings.vue': __glob_2_44,
'./ControlButton/ControlButton.vue': __glob_2_45,
'./DateRange/DateRange.settings.vue': __glob_2_46,
'./DateRange/DateRange.vue': __glob_2_47,
'./DropDownList/DropDownList.settings.vue': __glob_2_48,
'./DropDownList/DropDownList.vue': __glob_2_49,
'./DropdownMenu/DropdownMenu.settings.vue': __glob_2_50,
'./DropdownMenu/DropdownMenu.vue': __glob_2_51,
'./DropdownMenuVertical/DropdownMenuVertical.settings.vue': __glob_2_52,
'./DropdownMenuVertical/DropdownMenuVertical.vue': __glob_2_53,
'./DropdownMenuVertical2/DropdownMenuVertical2.settings.vue': __glob_2_54,
'./DropdownMenuVertical2/DropdownMenuVertical2.vue': __glob_2_55,
'./Dynamic/Dynamic.settings.vue': __glob_2_56,
'./DynamicCircle/DynamicCircle.settings.vue': __glob_2_57,
'./DynamicCircle/DynamicCircle.vue': __glob_2_58,
'./DynamicImg/DynamicImg.settings.vue': __glob_2_59,
'./DynamicImg/DynamicImg.vue': __glob_2_60,
'./DynamicRect/DynamicRect.settings.vue': __glob_2_61,
'./DynamicRect/DynamicRect.vue': __glob_2_62,
'./DynamicText/DynamicText.settings.vue': __glob_2_63,
'./DynamicText/DynamicText.vue': __glob_2_64,
'./Exp/Exp.settings.vue': __glob_2_65,
'./Exp/Exp.vue': __glob_2_66,
'./ExportButton/ExportButton.settings.vue': __glob_2_67,
'./ExportButton/ExportButton.vue': __glob_2_68,
'./Group/Group.settings.vue': __glob_2_69,
'./Group/Group.vue': __glob_2_70,
'./Img/Img.settings.vue': __glob_2_71,
'./Img/Img.vue': __glob_2_72,
'./Input/Input.settings.vue': __glob_2_73,
'./Input/Input.vue': __glob_2_74,
'./JogButton/JogButton.settings.vue': __glob_2_75,
'./JogButton/JogButton.vue': __glob_2_76,
'./JumpButton/JumpButton.settings.vue': __glob_2_77,
'./JumpButton/JumpButton.vue': __glob_2_78,
'./Language/Language.settings.vue': __glob_2_79,
'./Language/Language.vue': __glob_2_80,
'./Line/Line.settings.vue': __glob_2_81,
'./Line/Line.vue': __glob_2_82,
'./LogManage/LogManage.settings.vue': __glob_2_83,
'./LogManage/LogManage.vue': __glob_2_84,
'./Login/Login.settings.vue': __glob_2_85,
'./Login/Login.vue': __glob_2_86,
'./NumberFilter/NumberFilter.settings.vue': __glob_2_87,
'./NumberFilter/NumberFilter.vue': __glob_2_88,
'./NumberInput/NumberInput.settings.vue': __glob_2_89,
'./NumberInput/NumberInput.vue': __glob_2_90,
'./NumberShow/NumberShow.settings.vue': __glob_2_91,
'./NumberShow/NumberShow.vue': __glob_2_92,
'./PageFrame/PageFrame.settings.vue': __glob_2_93,
'./PageFrame/PageFrame.vue': __glob_2_94,
'./PageList/PageList.settings.vue': __glob_2_95,
'./PageList/PageList.vue': __glob_2_96,
'./PermissionManage/PermissionManage.settings.vue': __glob_2_97,
'./PermissionManage/PermissionManage.vue': __glob_2_98,
'./PopupWindowButton/PopupWindowButton.settings.vue': __glob_2_99,
'./PopupWindowButton/PopupWindowButton.vue': __glob_2_100,
'./ReadWriteInput/ReadWriteInput.settings.vue': __glob_2_101,
'./ReadWriteInput/ReadWriteInput.vue': __glob_2_102,
'./Rect/Rect.settings.vue': __glob_2_103,
'./Rect/Rect.vue': __glob_2_104,
'./RouterLink/RouterLink.settings.vue': __glob_2_105,
'./RouterLink/RouterLink.vue': __glob_2_106,
'./ShutdownButton/ShutdownButton.settings.vue': __glob_2_107,
'./ShutdownButton/ShutdownButton.vue': __glob_2_108,
'./StaticText/StaticText.settings.vue': __glob_2_109,
'./StaticText/StaticText.vue': __glob_2_110,
'./SwitchButton/SwitchButton.settings.vue': __glob_2_111,
'./SwitchButton/SwitchButton.vue': __glob_2_112,
'./TextInput/TextInput.settings.vue': __glob_2_113,
'./TextInput/TextInput.vue': __glob_2_114,
'./UserInformation/UserInformation.settings.vue': __glob_2_115,
'./UserInformation/UserInformation.vue': __glob_2_116,
'./VarList/VarList.settings.vue': __glob_2_117,
'./VarList/VarList.vue': __glob_2_118,
'./VirtualKeyboardButton/VirtualKeyboardButton.settings.vue': __glob_2_119,
'./VirtualKeyboardButton/VirtualKeyboardButton.vue': __glob_2_120,
}
for (const fileName in vueList) {
let is2 = fileName.match(/\/([^./\\]+)\.vue$/)?.[1]
const module2 = vueList[fileName]
if (is2) {
new Widget({
is: is2,
canvasView: module2.default,
})
}
is2 = fileName.match(/\/([^./\\]+)\.settings\.vue$/)?.[1]
if (is2) {
new Widget({
is: is2,
name: is2,
settingsView: module2.default,
...module2.config,
})
}
}
}
const widgetStore = Widget.store
const widgetList = Widget.list
var CanvasNode_vue_vue_type_style_index_0_lang = ''
const _hoisted_1$33 = { key: 0 }
const _hoisted_2$2L = ['data-id']
const _hoisted_3$2w = {
key: 0,
class: 'icon-kongjiansuoding',
}
const _hoisted_4$29 = {
key: 1,
class: 'icon-shijian2',
}
const _sfc_main$3h = /* @__PURE__ */ defineComponent({
props: {
mode: null,
editing: { type: Boolean },
running: { type: Boolean },
node: null,
collect: { type: Boolean },
},
setup(__props2) {
const props2 = __props2
const is_ = computed(() => getIs(props2.node))
const props_2 = computed(() => getProps(props2.node))
const getIs = (node2) => {
let nodeIs = node2.is
if (!checkWidgetAuth(nodeIs) && props2.running) {
nodeIs = 'Unauthorized'
}
const canvasView = widgetStore[nodeIs]?.canvasView
const notFound2 = nodeIs && !canvasView
if (notFound2) {
return getNotFound(node2)
}
return canvasView || node2.tagName || 'div'
}
const getStyle2 = (node2) => {
return {
...node2.computedStyle,
...(node2.isGroup() ? { rotate: node2.style.rotate } : null),
}
}
const getClass = (node2) => {
return {
[`is:${node2.is}`]: node2.is,
'canvas-node': true,
selected: node2.selected,
locked: node2.locked,
'event-binding': node2.blocks.length > 0,
forbidden: isForbidden(node2),
'mode-editing': props2.editing,
'mode-running': props2.running,
}
}
const getOnPropList = (node2) => {
if (app.running) {
return OnBlock.getOnPropList(node2.blocks.filter((b2) => b2.isEnable))
}
return []
}
const getProps = (node2) => {
const props_22 = {
'.__canvasNode': node2,
key: node2.vueKey,
class: getClass(node2),
id: node2.id,
style: getStyle2(node2),
mode: props2.mode,
editing: props2.editing,
running: props2.running,
update: update3,
onUpdate: update3,
node: node2,
props: node2.props,
...node2.props,
...mergeProps(...getOnPropList(node2)),
}
function update3(props22) {
Object.assign(node2.props, props22)
}
update3.toString = () => ''
return props_22
}
const getNotFound = (node2) => {
return defineComponent(() => {
return () => {
return h$4(
'div',
{
style: {
outline: 'dashed 1px red',
},
},
[
h$4(
'div',
{
style: {
padding: '.25em .5em',
fontSize: '12px',
color: '#f00',
},
},
`NotFound: ${node2.is} (${node2.name})`
),
]
)
}
})
}
let nextTickFinish = ref(false)
nextTick(() => {
nextTickFinish.value = true
})
watch$1(
() => props_2.value.key,
() => {
nextTickFinish.value = false
nextTick(() => {
nextTickFinish.value = true
})
}
)
function isForbidden(node2) {
if (!props2.running) return
const permission = app.current.project.current.page.permissions.find(
(p2) => p2.id === node2.id
)
if (permission && !permission.subs) {
if (!hasWidgetPermission(node2)) {
return true
}
}
}
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
resolveDynamicComponent(is_.value),
normalizeProps(guardReactiveProps(props_2.value)),
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(props2.node.childNodes, (child) => {
return (
openBlock(),
createBlock(
_sfc_main$3h,
mergeProps(
{
key: child.vueKey,
},
{
...props2,
node: child,
}
),
null,
16
)
)
}),
128
)),
nextTickFinish.value && props2.editing
? (openBlock(),
createElementBlock('aside', _hoisted_1$33, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
props2.node.childNodes.filter((n2) => {
return n2.blocks.length || n2.locked
}),
(child) => {
return (
openBlock(),
createElementBlock(
'div',
{
key: child.vueKey,
class: normalizeClass({
[`is:${child.is}`]: child.is,
'canvas-node-info': true,
}),
'data-id': child.id,
style: normalizeStyle$1({
...child.computedStyle,
width: child.computedStyle.width,
height: child.computedStyle.height,
}),
},
[
child.locked && child.selected
? (openBlock(),
createElementBlock('i', _hoisted_3$2w))
: createCommentVNode('', true),
child.blocks.length
? (openBlock(),
createElementBlock('i', _hoisted_4$29))
: createCommentVNode('', true),
],
14,
_hoisted_2$2L
)
)
}
),
128
)),
]))
: createCommentVNode('', true),
]),
_: 1,
},
16
)
)
}
},
})
var CanvasNode = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$3h,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Viewer_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$32 = { class: 'viewer' }
const _sfc_main$3g = /* @__PURE__ */ defineComponent({
props: {
document: {
default() {
return state$6.document
},
},
mode: {
type: String,
default: MODE.RUNNING,
},
},
setup(__props2) {
const props2 = __props2
useCssVars((_ctx) => ({
'2e1ff43e': props2.document.body.style.backgroundColor,
}))
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$32, [
createVNode$1(
_sfc_main$3h,
{
class: 'body mode-running',
node: props2.document.body,
mode: props2.mode,
running: '',
},
null,
8,
['node', 'mode']
),
])
)
}
},
})
var Viewer = /* @__PURE__ */ _export_sfc(_sfc_main$3g, [
['__scopeId', 'data-v-eaede026'],
])
var Viewer$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Viewer,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var DialogPage_vue_vue_type_style_index_0_scoped_true_lang = ''
var DialogPage_vue_vue_type_style_index_1_lang = ''
const _hoisted_1$31 = {
key: 0,
class: 'page-dialog-overlay',
}
const _hoisted_2$2K = { class: 'records-dialog-title' }
const _hoisted_3$2v = ['title']
const _hoisted_4$28 = { class: 'cms-page-dialog-content' }
const _sfc_main$3f = /* @__PURE__ */ defineComponent({
props: {
uuid: {
type: String,
default: '',
},
dialogClose: {
type: Function,
default: () => {},
},
show: {
type: Boolean,
default: false,
},
functionOptions: {
type: Object,
required: false,
default: () => {
return {
id: '',
name: '',
title: '',
width: 0,
height: 0,
fixedSize: false,
closeBtn: true,
}
},
},
dialogConfig: {
type: Object,
default: () => {
return {
width: '',
height: '',
widthCorrection: 46,
heightCorrection: 86,
top: 0,
left: 0,
}
},
},
},
emits: ['update:show'],
setup(__props2, { expose, emit: emit2 }) {
const props2 = __props2
const dialogId = ref('')
const pageManager2 = new PageManager()
const dialogHeader = ref(null)
let dialogStyle = ref('')
const DRAG_BOTTOM_DISTANCE = window.innerHeight - 38
const DRAG_TOP_DISTANCE = window.cmstype == 'Web' ? 0 : 50
const DRAG_LEFT_DISTANCE = 50 - parseInt(props2.dialogConfig.width, 10)
const DRAG_RIGHT_DISTANCE = window.innerWidth - 50
if (props2.functionOptions.operationAble) {
const { style: style2 } = useDraggable(dialogHeader, {
initialValue: {
x: props2.dialogConfig.left,
y: props2.dialogConfig.top,
},
onMove(position2) {
if (position2.y < DRAG_TOP_DISTANCE) {
position2.y = DRAG_TOP_DISTANCE
} else if (position2.y > DRAG_BOTTOM_DISTANCE) {
position2.y = DRAG_BOTTOM_DISTANCE
}
if (position2.x < DRAG_LEFT_DISTANCE) {
position2.x = DRAG_LEFT_DISTANCE
} else if (position2.x > DRAG_RIGHT_DISTANCE) {
position2.x = DRAG_RIGHT_DISTANCE
}
},
})
dialogStyle = style2
} else {
dialogStyle.value = `top:${props2.dialogConfig.top}px;left:${props2.dialogConfig.left}px;`
}
const viewerDocument = reactive({
document: {
body: new CanvasNode$1({
name: '\u753B\u5E03',
style: {
width: '1024px',
height: '768px',
backgroundColor: '#fff',
},
}),
},
})
const openDialog2 = () => {
if (!dialogId.value) dialogId.value = 'dialog-' + utils.createRandomId()
nextTick(() => {
setPicturesContent()
})
}
openDialog2()
watch$1(
props2,
() => {
setPicturesContent()
},
{
deep: true,
}
)
const setPicturesContent = () => {
if (!document.getElementsByClassName(dialogId.value).length) return
const dialogDom = document.getElementsByClassName(dialogId.value)[0]
viewerDocument.document.body = new CanvasNode$1(props2.dialogConfig.body)
if (dialogDom) {
dialogDom.style.width = props2.dialogConfig.width
dialogDom.style.height = props2.dialogConfig.height
}
handleSelected(false)
}
const closeDialog = () => {
props2.dialogClose()
}
const isMiniSize = ref(false)
const vm = getCurrentInstance()
const handleToggleSlide = () => {
isMiniSize.value = !isMiniSize.value
emit2('update:show', isMiniSize)
if (isMiniSize.value) {
pageManager2.miniPagesId.push({
vm,
id: props2.uuid,
title: props2.functionOptions.title,
})
} else {
pageManager2.removeMiniPagesById(props2.uuid)
}
}
const handleSelected = (isSetCurrentDialogPageUUID = true) => {
if (!document.getElementsByClassName(dialogId.value).length) return
const dialogDom = document.getElementsByClassName(dialogId.value)[0]
if (dialogDom) {
dialogDom.style.zIndex = pageManager2.topPageZIndex
pageManager2.topPageZIndex = String(
Number(pageManager2.topPageZIndex) + 1
)
isSetCurrentDialogPageUUID &&
(pageManager2.currentDialogPageUUID = props2.uuid)
}
}
const target2 = ref(null)
onClickOutside(
target2,
() => {
pageManager2.currentDialogPageUUID = ''
},
{
capture: false,
}
)
onUnmounted(() => {
pageManager2.removeDialogPagesById(props2.uuid)
pageManager2.removeMiniPagesById(props2.uuid)
})
expose({
dialogId,
handleToggleSlide,
})
return (_ctx, _cache) => {
return withDirectives(
(openBlock(),
createElementBlock(
'div',
{
ref_key: 'target',
ref: target2,
onMousedown:
_cache[0] || (_cache[0] = ($event) => handleSelected()),
},
[
!props2.functionOptions.operationAble
? (openBlock(), createElementBlock('div', _hoisted_1$31))
: createCommentVNode('', true),
createElementVNode(
'div',
{
class: normalizeClass('cms-page-dialog ' + dialogId.value),
style: normalizeStyle$1([
{ 'touch-action': 'none' },
unref(dialogStyle),
]),
},
[
createElementVNode(
'div',
{
class: normalizeClass([
'flex justify-between page-dialog-header',
props2.functionOptions.operationAble ? 'move' : '',
]),
ref_key: 'dialogHeader',
ref: dialogHeader,
},
[
createElementVNode(
'div',
_hoisted_2$2K,
toDisplayString$1(props2.functionOptions.title),
1
),
createElementVNode('div', null, [
props2.functionOptions.operationAble
? (openBlock(),
createElementBlock(
'span',
{
key: 0,
class: normalizeClass([
'iconfont toggle-slide-btn',
isMiniSize.value
? 'icon-fangda'
: 'icon-suoxiao1',
]),
onClick: handleToggleSlide,
title: isMiniSize.value
? '\u6700\u5927\u5316'
: '\u6700\u5C0F\u5316',
'data-tooltip-placement': 'top',
},
null,
10,
_hoisted_3$2v
))
: createCommentVNode('', true),
props2.functionOptions.closeBtn
? (openBlock(),
createElementBlock('span', {
key: 1,
class: 'iconfont icon-guanbi close-dialog-btn',
onClick: closeDialog,
title: '\u5173\u95ED',
'data-tooltip-placement': 'top',
}))
: createCommentVNode('', true),
]),
],
2
),
createElementVNode('div', _hoisted_4$28, [
createVNode$1(
Viewer,
{
class: 'viewer',
document: unref(viewerDocument).document,
},
null,
8,
['document']
),
]),
],
6
),
],
544
)),
[[vShow, !isMiniSize.value]]
)
}
},
})
var DialogPage$1 = /* @__PURE__ */ _export_sfc(_sfc_main$3f, [
['__scopeId', 'data-v-dd8c6826'],
])
var DialogPage$2 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: DialogPage$1,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const createDialog$1 = async (
functionOptions = {
id: '',
name: '',
title: '',
width: 0,
height: 0,
fixedSize: false,
closeBtn: true,
operationAble: false,
}
) => {
let dialogConfig = reactive({
width: '',
height: '',
widthCorrection: 46,
heightCorrection: 86,
top: 0,
left: 0,
body: '',
})
await getPicturesContent(functionOptions.id).then((res) => {
const content2 = res.content ? JSON.parse(res.content) : ''
if (!content2 || !content2.body) return
dialogConfig.body = content2.body
const options2 = functionOptions
const width = options2.fixedSize
? options2.width
: styleConverter(content2.body.style).width + 40
const height = options2.fixedSize
? options2.height
: styleConverter(content2.body.style).height + 80
dialogConfig.width =
width > window.innerWidth
? `${window.innerWidth - 2 * dialogConfig.widthCorrection}px`
: `${width}px`
dialogConfig.height =
height > window.innerHeight
? `${window.innerHeight - 2 * dialogConfig.heightCorrection}px`
: `${height}px`
dialogConfig.left =
(window.innerWidth - parseInt(dialogConfig.width, 10)) / 2
dialogConfig.top =
(window.innerHeight - parseInt(dialogConfig.height, 10)) / 2
})
const mountNode = document.createElement('div')
functionOptions = reactive(functionOptions)
const Instance = createApp$1(DialogPage$1, {
show: true,
uuid: utils.createRandomId(),
functionOptions,
dialogConfig,
dialogClose: () => {
Instance.unmount()
document.body.removeChild(mountNode)
},
loadPage: (pageId) => {
getPicturesContent(pageId).then((res) => {
const content2 = res.content ? JSON.parse(res.content) : ''
if (!content2 || !content2.body) return
dialogConfig.body = content2.body
})
},
})
document.body.appendChild(mountNode)
Instance.config.globalProperties.t = Language$1.t
Instance.config.globalProperties._t = Language$1._t
Instance.use(installer).mount(mountNode)
return Instance
}
var DialogPage = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: createDialog$1,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var _imports_0$2 =
'data:image/png;base64,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'
var __glob_3_0 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _imports_0$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var _imports_1 =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJgAAACKCAYAAABW3IOxAAAAAXNSR0IArs4c6QAAElhJREFUeAHtnXuQHMV9x7tndvdOQkgCWZKxkITEQ5YB87AVCT9iEqgyTsXlyA42QVRcScXYzvOPkKeJLSrOy8RVxMSVBNuVqrhIxS7KJk5BKlWpQKiKX4hgwOII6CzLAk6H0Pt0e/uY6Xx+p7vT3Gl2b2e3Z2d2t7vqdzuP7l//+tvf6+75dU+PVi5kioAxZl01UDtMEG43Wu/AmOuUUYeVVqNKmVGjvX2+HAdqX6mkfqS1Pp2pwQkz1wnju+gdIACZlpTr6npU7FChETIh5uJkKvWYPkO+fUp7oyZUowWt9hWLahTyHU2mK/3YjmApYjxlzGWmSuukQ4iktwP2NZCsmFqWWh9D96hWZp+nvb2lgvompNubWn4tKHYEawGkVqJAnBWVutpmZlono2mdjFnVSlqbcTytnynSpHlaXYPeV5F3QLIDNvNIossRLAlaM3Ehk1etqitDIZGidTKMnbTayvVM8IRAZQj1dNHXF9N9blhQpBc4f2dW3WcmgCwAIPenEGdNJVDbGYhDpOmB+DaunZ+14VrpV31fjxb96dZqeRN7vs29m4WITeKkcssRbAGsEKdUq6lrQ7o6M9M6GWU2LYiW6Snd4HO+p8sFX70dQ7wWjfkW8T4IyYIW41uJNvAEKxuzUQbiSocMwqdbp+sh2ZAVdC0qgRhVur8nS75+A79b2lT9AHo+3mbatpINHMEgz/JKqH7ZmPBtJtA3J3cTtIVz+4m0PsyYfS8D9ytRsrp9RXMpd0Oye+bOUj4YOIJNVsJvQKqdgitAh8aocQbIr/P0d4pLNbmMDOPsXKk9tSYMzUrOux6wbaTg6SN0g9vI3HaLeif6v9SNQg0UwSZr5ndVGP51EmCpiJPEH4OAxwFLBskyhilyvozBzyp+L5JxWxKdjeKSl+j+Xqmgl0D66xrFs3Bd8tlJfv9mQVdTFQNDMMj1Tm3M45Ch0BSRhDeppBqtnXjXZXrnlApV1TAKxwe2hHsreEBYw/015NsYazzwdIM/KBT0ZURa6GZIaFHL0eWf5SZs/E7LKdqI2LjQbSjLaxIqd3W5ap6ma1yXiY2MowB6nLyPQbZJ7dE1Kzz6Ri2hG6zMdINZuD2OYNO7IJn4ylIJfU8wyOVN1cx/8MuAPj+BSq0PFabnFddnbNUB8r8Be8bSsKNVH0oaeXdF51Q13J03cknB8WM9TUeaNbnElI3Iv4NRM0etxGsr9HULRsv1XoAT8HJVToZozw8V9VvaqrH0Ej2G6ltoyao2s+jbFmzSmPX4IB7MG7mowIlSUa+xWYmWdP0Mev7JNl59STBAKqqa+XoWqxkWq+yCr1+iOX3DYvEyuv8R8r3bZt59SbByDV+XmV7QZxOrjnUx7tpT8FL1b3VsIwq22lAyq6PvCDZZMbfy+P/bswXMz68ew4FqtfLyU7bGlvQVwVhBeoXW5iuNi5vNHcZdhkH9cXI/LxsLssu1bwjGuGuJqZmH+M3CYdm0Bnlp49tM/Qxc6yWgWJ02aYpyyjenauHfMXF9dcrZJFZP6/UiKyG2J07YJwn6ogVjGujXINdH81YnkGuKrlFWQvTNP3JSjHueYNWquZY5xvuTFrwb8Zln3INLQjzlAxt6n2BBeBdPjaxm0CZPtYg9e5jEfleebMrClp5vuk9Vwl1CLqZf9nuePljy1YTvqxKku4iB9eUM+m0v1lu8nrR+fbioB7rlmgWp5wkmBYFEOjBmcxCqzbX6bNFkaao+4fvmh3RVRwu+Z3iau5CLl5LggrOx7B/h7xpF68AO7KOI9gXBogWKHrPmakU9UG+rB/SetWD6Fq1dQEv3Eu8QjtHCVYueWso4aT1xraxsQPcTEPmno3YM8nFfEyyuYmnt/CAwlweBujx6n0WARwqe9+OCF55kOodDbzXE20z8lpdD02LuZ42X7D3hwgwCA0ewRjVvQrOqFgar5K2PMyGQl0JqdK//xxzi6wzYA1qmFazhugTSrZiNNfsrcSHXBOebZq+53wH2z7RS+RCpWAvMFnrXLdPvG80kohscLxW8l30dln3PG+ZR/E2QcATy3dSK3kGK41qwNmqbV9nWTlWDtWeSnhnbrT6/kNclOG2U0F6SnveD2YOiY03unzUGQkewGFDcJXsIOILZw9JpikHAESwGFHfJHgKOYPawdJpiEHAEiwHFXbKHgCOYPSydphgEHMFiQHGX7CHgCGYPS6cpBgFHsBhQ3CV7CDiC2cPSaYpBwE1vxIAy4Jd+gUn+V1rA4Ani3CHr65rFdQRrhs5g3ltCsUUWC7cRQbYX/XiziK6LbIaOu7cYAnfS2t3TLJIjWDN03L1WEPg0JPtko4iOYI2QcdeTIPC3kOxDcQkcweJQcdeSIiA8ks3+blyY0BFsISLuvF0E5P3ThyGZfEZwLjiCzUHhDiwgIC/DyJ64cy++OIJZQNWpmIfARZzJtvHT31VyBJuHjTuxhIC8c/ooJJPP7bjgEEgFAfmW5UOOYKlg65TOIHCTI5jjQqoIOIKlCq9T7gjmOJAqAo5gqcLrlDuCOQ6kikBPEww/yw2+7z3FvlynU0XJKW8bgZ5bcAipZDHcLyG/gVy/+owrr16tq2fLNXO0UgtWhopPtmSxN2vb1dC/CdnErzcCxLoUSz+B/Cpy4SJWlys1M1KuhyeqdcP3svWbSe8vkqaj22zfFPqe6ukeoSMA4hPXc00wSCEVdgsirdX7kLbsZYfWE3yc9AW+fltmQ7mLjNJXoLstXdgQGxzBYmHJJ8GofGmhfgX5dWRzrOkdXOSrIIf5OsiLtHB1NgneQH6bOlA3ndQRLBbBfBGMipYNdKW1kjFWKy8exJYq6cXQqJch3GilFupqIIQ2FyfV4QgWi1j2BINUsovzrchvIjtizezyRfbb38cDw0E+sFXgeAs2LvoJZEew2ErKjmBU2gZMkleePoZMrx2KNTH7i2EtVCO0cIdo4ZaGodrKnvorF5rlCLYQkenz7hMMYt1M1tINvh9J9cluuoj2/9T4msjeybo5DOFWmFBdCeHOcwSLBbo7BINUy8n+o4gQa0usKb17cbJSV4+VCurneCy1+mTau5DMWZ4uwSDWVWQlpLoDWTaXbf8cvERR5FPJ2/qnSFZLUrfuyYdUonMnIsR6j1Vz86PsJ5jyMnID4lqtJvViDRyIJYv975yRNzXJs5dvjWO8tFrytGv9n7OXgWlg+2sdEwxivRvl0lp9ECk2yKjXL0s3+CwiXWHX/HM9DNppbL8PubdtgkGsN/INn78s+upnUbS+h8FoZroAtQe5DpEHFReaI1Dl9j8gn2Vbp9ckatsEK1eDrzHl8mEUhSj5AR+D4qOf6gp0in+r14MA9T1kK+K+QbR4bcoeYV9FdsOHA9HobRFsqm7eFwbho1FFcoxymUF+Zubzd/Ju3MaFcXJ+HmLfd5FLkH4dR1I0q+EbaLubuh+J05qYYHSNS6eqZi/OxUviFM5emyHbs0I2vqF9KRk1jT+bLsPf75P3amRThjb0Utb/ibF/RD3LEKJhSEywqUpwL//mdzXUGHNDyMaSmef4uOdhutG8ke1pTF6K9JsDOKYmrFySoYMQ67FWtCUiWLVqrgmU2UMr1tEjOsb9kJZtHLJtwgDry3FaKThx9iIydnhri/EHPZrgJV3hw0mAaJlgkMpjhcF3WIr8U0kyWCwuBu+dIdslXSLbPmwSt4O82u7C4gjsJ8pnkAepKxmjJgotE4xx12+FJvxCIu0JI1OAEcg2Rsu2EcNkibTNcBBlryDbkZbLbdOAHtN1CHs/izxAvZz9lHnCQrQENK3XOpYcj/B7fkL9bUenUPIx9lch24YOySb+GPG+C7E66trbLkxvJZTW/XPI31AHk52a3hLBJishj6JG5hczCRT0Rcj2CmRbj8GXtWiEAPUcsg0ZbjHNIEcTMkkP9VfgLdhZCYsSrFI3HwiC8GEruVlQQuH3QbaDBQ+y6ViyCVBPIdciXWtxLRQtKxXS/T2AiPddukWroSnB6BKXMfZ6Hp9XLqeCeOF2lFfFDhZ8vQ6ybQQZ8WWJ932VVZT6U5kM2B9EPgOxZCCfSmhKsMlqcJ8y6ndSydmiUgAKhor6dQqz1qLaflb1rxTuU+AmrodUQ0OC4fN6Oz6v79KK5X5Zs+/rl0u+TvwmUKrI5lP5f2HWH0MscZZ2JcQSTEiFz+tJfF6yiiDXAbAmhou6H1fL2sT9SZQJsWR6p6sh9rG9XKdb7AFyCVJFv30fTVeRziYzmYAW77tMSGcSzmnByvI6WY2BvTHnZWJRgkw1c5vDBb06QZJBiXqAgu5Gvgq5ZDoss3BOC2aq5ov4vHJPLkGMcZds/O/CWQTEqfxnyN9DLFnTlnmYRzB8Xr+Iz+vnM7eqBQM8Tx/ytHpjC1EHIcoJCnkvch/EOp2nAs91kXSJK3h7mT57+uWNPNl4ji2AWMMtUZwz/pwYA3OhTEnvR8T7fjSPpZ5rwdiH4S8wUN4Myn3Ai38Kcl2Ye0PTM1C8719B/hRivZpeNp1rnm4E8HntwOf1P7RiXucq09UAoCdxSyxPN5fcajdY9i/In4DDaG6tjBhWgFQFVko80AvkErtxSwxF7B+kw/+msHdBrKZLlPMGiDdVV3dBrqvzZlicPbgljjD3OGgEE1/WByDWjb1GLqlDjy3+buR1oCNxFZqna4Brhnw9SJPYsrLhE8jVlP1beaqLJLboseM1tizV1VLB+9+SH0762mM1Qv6eJFkxcYzu8YIkhevRuOJm+DzyOYiVK5dDO3ieIVgkJYUKqcxn8JAfw890GWTbELmdySE2VRjY93vXKB73f0RkAG99XVYmFUem5xBsoSG4BEaGCvpQ0ffWsy4MwnU/FAteGTuWdD/nruX4CDn9PsR6vms5dimjRQkWtcMvePuHff0TXqRdw5uOsrAv9eBpfQqnar+uTH0KAOXJ8PHUgcwog0QEi9rIVM3YkqLH8mVzASR4S1pujqGiZ+iq+81p/2OwvBv5Z8glvq2+DW0TLIqI53tHadle4KWMpZDhKvGtRe+3e8za+xOlQl9NaB8Diz9H7odYlXZx6aV0VggWLTBPoRNF34yUitBOs0Fum98MogJCxn40jlHtPXssKxu+iMjUjpBsYIJ1gkWRgx7VkqefZ1lNnXHbVsjW8jIgnmQncUssjerrwWPp/r6OyF4O+3vQ/o5NTpVgUeukRYIwI7gbJmnZ5FtBDddyEXeKeMPR9D14LFM7v0dZnuxB262Z3DWCLbQYx+5LeOaPez6bnxgzz0PPvYApody/bLKwTDPnMrXzhxCrZ73vDcrV1uXMCBa1tljQB0u+GmfItR7CLWPs1XJXGtWT8bE4R+9BvgS5Ml2mnDEO87LPBcGiFp0/7KvzhnpqZD87tXMvxJqIlsUd53AzEGYLqJeeIFhfTu3Y/qew4q+ybVQP6OvbqR3b2DuCJUNUpnbkyfCxZMkGN3bul0jnpGoOYMcdyDZHrmQ14lqw5njJPlkytfMFiDUQUzvN4Uh+1xEsHrPZqR3ZMyuXr4PFm52/q45g8+tk4Kd25sPR+Zkj2FkMn+BQ1mYN9NTOWTjsHDmCKfUCUP4BxHJTO3Y4NU/LID9FjoPEJ5GrHLnmccLqySC2YG5qxyqFmisrsBp5gumZQdghcHZq59O0WGPNYXF3bSHgrV3hrwXwXcgjSNtfdLBlUEp6HkXvNZTvY4gjV0ogx6mdN6t88qRZVQ7DDxsd7mLC+R0sCpx3P06B7WvLhj3W61gbGrqpHdsVlFBfQwIdK5uNlUp4u1Lh7TiHrkqot+3olggmUzufQvr+rZ22ge5SwoYEi+Y/PmHequr1XaHSt6X9pneHBHNTO9GKy8FxSwSbtVO6zMMT6t2hCW7nC6O3stTZ+iZwbRLMTe3MVlLOfhMRLGo7ZCuOnwpuYX3gLsj2flo2K28AJSTY7NSO7AH/o6h97jgfCLRNsKj5r/FNI3My2MnHb3ah8GbI1/YLGwkIJlM7sjbr+1Fb3HG+ELBCsGiRDp0ya1QYfmT64cCoHdF7rRy3QDA3tdMKkDmJY51g0XKNHzebcXnwFIrbw6g3R+81Om5CMJna2Y18mVar3ii9u54vBFIlWLSoh0+b6+u1+u3MHNzGzMG66L3ocQzB5PuPn0dkQzb31k4UrB447hrBZrFgfOYdmqi/RwcaZ676EGRbOXtPfiMEc1M7UWDccXIEINvQ+Mn6zrHj9YfGTtTLsp3nqamAy+YR5MrkGl0Kh0ADBI4Ys/zUVPj4sdPBPQ2iuMsOAYeAQ2A+Av8Pby5Qwk3kUm8AAAAASUVORK5CYII='
var __glob_3_1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _imports_1,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var _404NotFound_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$1K = (n2) => (
pushScopeId('data-v-a6a20918'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$30 = { class: 'wscn-http404-container' }
const _hoisted_2$2J = { class: 'wscn-http404' }
const _hoisted_3$2u = /* @__PURE__ */ createStaticVNode(
'',
1
)
const _hoisted_4$27 = { class: 'bullshit' }
const _hoisted_5$1W = /* @__PURE__ */ _withScopeId$1K(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'bullshit__oops' },
'404!',
-1
)
)
const _hoisted_6$1K = { class: 'bullshit__headline' }
const _hoisted_7$1t = /* @__PURE__ */ _withScopeId$1K(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'bullshit__info' },
'\u5355\u51FB\u4E0B\u9762\u7684\u6309\u94AE\u8FD4\u56DE\u4E3B\u9875\u3002',
-1
)
)
const _hoisted_8$1k = /* @__PURE__ */ createTextVNode(
'\u8FD4\u56DE\u9996\u9875'
)
const _sfc_main$3e = /* @__PURE__ */ defineComponent({
setup(__props2) {
const message2 = computed(
() =>
'\u8BF7\u68C0\u67E5\u60A8\u8F93\u5165\u7684\u7F51\u5740\u662F\u5426\u6B63\u786E'
)
return (_ctx, _cache) => {
const _component_router_link = resolveComponent('router-link')
return (
openBlock(),
createElementBlock('div', _hoisted_1$30, [
createElementVNode('div', _hoisted_2$2J, [
_hoisted_3$2u,
createElementVNode('div', _hoisted_4$27, [
_hoisted_5$1W,
createElementVNode(
'div',
_hoisted_6$1K,
toDisplayString$1(unref(message2)),
1
),
_hoisted_7$1t,
createVNode$1(
_component_router_link,
{ to: '/' },
{
default: withCtx(() => [_hoisted_8$1k]),
_: 1,
}
),
]),
]),
])
)
}
},
})
var _404NotFound = /* @__PURE__ */ _export_sfc(_sfc_main$3e, [
['__scopeId', 'data-v-a6a20918'],
])
var _404NotFound$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _404NotFound,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var _imports_0$1 =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAABKlJREFUWEftlmtsk2UUx3+n29hggDhEF6LzihAwkKiBKGNFReKIWwMGQbqgfiB4iYSIiSOofaoG+OS8RJMZo6IDtBqyC0jGMuGtiGAwEC+L8QMqBgWEUYzI2FiPece6tdvb7m1HIjE7X5//+Z/fc56rcImHXOJ8DAEOdoWGOvifdbC4Ui/PzueeaJT7BKYpjBcoUGhHOSoeDkWVPXqeHbtfkn2Zgqa9xMVGb8gSngGWAvluCiu0qPLGSXi3xUi7m5yYxj3gQs0qmcLzIjwL5KVTJE77Y6fy+G4ju9zmuwKctVrHefKoA+5wa5xSpwQsIy+68RoQ8E6jV2bDFyLc3McworANaEL5zQP/dAr5HihCmYtQClyWFEJ5yzLy5ECQKQFnG82OCnsFboszOibKy8D7u4z8nazADKOjc4VlAs8BYxx1ylrLyJpUkCkBS4xWibCyx0DZevYcj3y9Tk4ONPPY+Eyj47OgQYRbk+SUWwFpSOaXFHC20VtU+BYuPIeqvB02stwtWLyu9HXNPXOKZoGZDvlHRZmQbDWSApYE9VOBB7rgoDkckDmZwMVy7HvTM5yDYu/RPqHK+rCR1U7+joD2wcgRjgDZQKRDmbjHyPHBANq53qDOB7Y4+ETaI4z/qkrO9h1zBPQafQLhzS6xsMZ6QdYOFi6W7w3qQWCag99SKyAfugMMaghYCLS1KVftM/LXRQM0ugLhtX5+Sq1lxO5wQjh3MKjfA1NUqQ8b8fVk1G1cgDAdtJbyir2ZQM8yOt0jOL3NR6yAXO0KsCSoxwXGAU9bAanqSqrfuB66nrkLIbqYsoqP04W0r53sC/u7b5y2AtLvvkzWQXtJR6myKGwkRHX1CApHRhByelyVA/j8ye62lNzeoB4GrkkQKVstI2WuOugN6i/Atar4wkbqadh0Bap/Jhrqd/gqpqbbQVvvDepd3ac51rEDoszbZeSoW8A93R+DB62AfEJD9Qh0pN3VrN4lZidl/rszAbRzpq/WsXm5eIETYdiNkaiTl+MS9zxxyirLyCvde/AnYEKcyZeU+4szBXSb5whonzQRtgs81tXBrkNSswnkoV5jOUL5kn6nzm3hmG7M9p+vi5Reb28pxxjwu9WTVbdxMcLmBJdObme+/5t0oWL6gqbDVQIrVfiodU5R3OTj2uDaPBQaRm7774iM7c3REOUVi1x79BEWNB22v3IzFA613lt0o+s9mLRgfU0lyLqEcdE5lFU0ZwI56vNDE4d1Zq84r7x3em7R/sEDhkJZ5HXYX7DJcWatICWUL/khLcgtG8ay4OEB/5Xu92Csem3NZDxiX0Px3/lWlGX4/E4/lUTu6uocCkdWIgTxUMr9/sZUE0sf0HbbtnkGndEdwOgEc6URoq+Sc2on81acSxgLvVNAXt5ikKeASai24PF4KVty4uID2o4Nmyah0QaQmxwKRAB7yVsRslAKQaaA5nZrP6Oz3c/8R21dysisgzHLUGg4uR2rQFch/R96h8q/ohrAV7FhILDY+OAAYy6NH+TT7vGhsgCYCjoOZBgibWj0GMh+0BB/nGlk+fIOt3C27uIAplMxTe0QYJoN6ycf6uD/voP/AggdfDhFhXqfAAAAAElFTkSuQmCC'
var __glob_3_13 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _imports_0$1,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var themeMenu_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$2$ = { class: 'context-menu' }
const _hoisted_2$2I = ['onClick']
const _sfc_main$3d = /* @__PURE__ */ defineComponent({
setup(__props2, { expose }) {
let theme2 = ref('industrialBlack')
const isShow = ref(false)
const optList = reactive([
{
name: '\u5DE5\u4E1A\u9ED1',
code: 'industrialBlack',
},
])
const getMenuClass = (item2) => {
if (theme2.value === item2.code) {
return item2.code + ' activeColor'
} else {
return item2.code
}
}
const showState = (state2) => {
isShow.value = state2
}
const changeTheme = (_theme) => {
document.documentElement.setAttribute('theme', _theme)
localStorage.setItem('theme', _theme)
theme2.value = _theme
}
onBeforeMount(() => {
let localTheme = localStorage.getItem('theme') || 'industrialBlack'
if (localTheme === 'defaultTheme') localTheme = 'industrialBlack'
changeTheme(localTheme)
})
expose({
showState,
})
return (_ctx, _cache) => {
return withDirectives(
(openBlock(),
createElementBlock(
'div',
{
class: 'mask',
onClick:
_cache[0] ||
(_cache[0] = withModifiers(
($event) => showState(false),
['self']
)),
},
[
createElementVNode('div', _hoisted_1$2$, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(optList), (item2, i2) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'menu-item',
key: i2,
onClick: ($event) => changeTheme(item2.code),
},
[
createElementVNode(
'div',
{
class: normalizeClass([
'menu-item-color',
getMenuClass(item2),
]),
},
null,
2
),
createElementVNode(
'div',
null,
toDisplayString$1(item2.name),
1
),
],
8,
_hoisted_2$2I
)
)
}),
128
)),
]),
],
512
)),
[[vShow, isShow.value]]
)
}
},
})
var ThemeMenu = /* @__PURE__ */ _export_sfc(_sfc_main$3d, [
['__scopeId', 'data-v-8870cc60'],
])
var themeMenu = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ThemeMenu,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
function preview(
projectId = app.current.project.id,
pageId = app.current.project.current.page.id
) {
run(projectId, pageId)
}
function run(projectId = app.current.project.id, pageId = '') {
const runningSetting = app.config
let opener2 = findOpener()
if (!opener2?._runWindow?.closed) {
opener2?._runWindow?.close?.()
}
const url2 = new URL(location.href)
url2.hash =
`#/running/project/${projectId}/page/${pageId}`.replace(/\/$/, '') +
(client.isClient()
? `?isFullAllWindow=${runningSetting.isFullAllWindow}&&isFullScreen=${runningSetting.isFullScreen}`
: '')
let runWindow = window.open(url2)
setTimeout(() => {
opener2._runWindow = runWindow
})
addEventListener('beforeunload', stop)
}
function findOpener(win = window) {
if (!win.opener) {
return win
}
findOpener(win.opener)
return win.opener
}
async function init(projectId) {
document.title = app.current.project.name
let res = await request.get('/api/v1/event/get', {
params: { key: projectId },
})
if (!res) res = []
const project = app.current.project
project.blocks = Block.createArray(res)
}
let screenStatus = reactive({
isFull: false,
})
var UnauthorizedLabel_vue_vue_type_style_index_0_scoped_true_lang = ''
var UnauthorizedLabel_vue_vue_type_style_index_1_lang = ''
const _withScopeId$1J = (n2) => (
pushScopeId('data-v-5607d34e'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$2_ = /* @__PURE__ */ _withScopeId$1J(() =>
/* @__PURE__ */ createElementVNode('i', null, '\u672A\u6388\u6743', -1)
)
const _hoisted_2$2H = [_hoisted_1$2_]
const _hoisted_3$2t = { class: 'info' }
const _hoisted_4$26 = { class: 'name' }
const _hoisted_5$1V = /* @__PURE__ */ _withScopeId$1J(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'label unauth' },
[/* @__PURE__ */ createElementVNode('i', null, '\u672A\u6388\u6743')],
-1
)
)
const _hoisted_6$1J = /* @__PURE__ */ _withScopeId$1J(() =>
/* @__PURE__ */ createElementVNode(
'p',
{ class: 'tips' },
'\u8BF7\u8054\u7CFB\u8F6F\u4EF6\u5382\u5546\u8D2D\u4E70\u6388\u6743',
-1
)
)
const _sfc_main$3c = /* @__PURE__ */ defineComponent({
props: {
name: null,
widgetIs: null,
placement: null,
border: { type: Boolean },
large: { type: Boolean },
},
setup(__props2) {
const props2 = __props2
const triggerRef2 = ref()
const popoverRef = ref()
return (_ctx, _cache) => {
const _component_el_popover = resolveComponent('el-popover')
return (
openBlock(),
createElementBlock(
Fragment,
null,
[
createElementVNode(
'span',
mergeProps(
{
ref_key: 'triggerRef',
ref: triggerRef2,
class: ['label', { large: props2?.large }],
},
_ctx.$attrs
),
_hoisted_2$2H,
16
),
createVNode$1(
_component_el_popover,
{
ref_key: 'popoverRef',
ref: popoverRef,
trigger: 'hover',
'virtual-ref': triggerRef2.value,
'virtual-triggering': '',
'popper-class': 'unauth-label-popper',
'hide-after': 0,
'show-arrow': false,
placement: props2.placement || 'bottom',
},
{
default: withCtx(() => [
createElementVNode(
'div',
{
class: normalizeClass([
'content',
{ border: props2?.border, large: props2?.large },
]),
},
[
createElementVNode('div', _hoisted_3$2t, [
createElementVNode(
'span',
_hoisted_4$26,
toDisplayString$1(
props2?.widgetIs
? unref(Widget).store[props2.widgetIs]?.name
: props2.name
),
1
),
_hoisted_5$1V,
]),
_hoisted_6$1J,
],
2
),
]),
_: 1,
},
8,
['virtual-ref', 'placement']
),
],
64
)
)
}
},
})
var UnauthorizedLabel = /* @__PURE__ */ _export_sfc(_sfc_main$3c, [
['__scopeId', 'data-v-5607d34e'],
])
var UnauthorizedLabel$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: UnauthorizedLabel,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var RunSetting_vue_vue_type_style_index_0_scoped_true_lang = ''
var RunSetting_vue_vue_type_style_index_1_scoped_true_lang = ''
const _withScopeId$1I = (n2) => (
pushScopeId('data-v-093ab85c'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$2Z = { class: 'dialog-body' }
const _hoisted_2$2G = { class: 'service con' }
const _hoisted_3$2s = { class: 'flex-row between' }
const _hoisted_4$25 = /* @__PURE__ */ _withScopeId$1I(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'flex-row' },
[
/* @__PURE__ */ createElementVNode('i', {
class: 'iconfont icon-shezhi',
}),
/* @__PURE__ */ createTextVNode(' \u670D\u52A1\u7BA1\u7406'),
],
-1
)
)
const _hoisted_5$1U = /* @__PURE__ */ createTextVNode(
'\u542F\u52A8\u6240\u6709\u670D\u52A1'
)
const _hoisted_6$1I = { class: 'service_container' }
const _hoisted_7$1s = { class: 'flex-column' }
const _hoisted_8$1j = { class: 'name' }
const _hoisted_9$1e = { class: 'buttons' }
const _hoisted_10$1b = /* @__PURE__ */ createTextVNode('\u91CD\u542F')
const _hoisted_11$13 = { class: 'run con' }
const _hoisted_12$10 = { class: 'flex-row between' }
const _hoisted_13$V = /* @__PURE__ */ _withScopeId$1I(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'flex-row' },
[
/* @__PURE__ */ createElementVNode('i', {
class: 'iconfont icon-huamian1',
}),
/* @__PURE__ */ createTextVNode(' \u8FD0\u884C\u663E\u793A'),
],
-1
)
)
const _hoisted_14$Q = /* @__PURE__ */ createTextVNode('\u542F\u52A8Vision')
const _hoisted_15$N = { class: 'flex-row' }
const _hoisted_16$M = /* @__PURE__ */ createTextVNode(
' \u542F\u7528\u60AC\u6D6E\u7403 '
)
const _hoisted_17$G = {
key: 0,
class: 'flex-row',
}
const _hoisted_18$B = /* @__PURE__ */ createTextVNode(
' \u5168\u5C4F\u6A21\u5F0F '
)
const _hoisted_19$y = {
key: 1,
class: 'flex-row',
}
const _hoisted_20$w = /* @__PURE__ */ createTextVNode(
' \u94FA\u6EE1\u6269\u5C55\u5C4F '
)
const _sfc_main$3b = /* @__PURE__ */ defineComponent({
emits: ['update:modelValue', 'update:code'],
setup(__props2, { expose, emit: emit2 }) {
let services = ref([])
let runningSetting = ref(app.config)
const open2 = () => {
getData()
}
const close2 = () => {
emit2('update:modelValue', false)
}
const runVision = () => {
close2()
setTimeout(() => run(app.current.project.id), 120)
}
const keyDownHandler2 = (e2) => {
if (e2.ctrlKey && /^P$/i.test(e2.key)) {
startAllAndRunVision()
e2.preventDefault()
return
}
}
useEventListener(document, 'keydown', keyDownHandler2)
onMounted(() => {
if (editing) {
open2()
}
})
const getData = async () => {
const res = await request.get('/api/v1/project/service')
if (res) {
services.value = res
}
}
const startAll = async () => {
await request.post('/api/v1/project/service/start')
getData()
}
const start2 = async (key2) => {
await request.post(`/api/v1/project/service/${key2}/start`)
getData()
}
const stop2 = async (key2) => {
await request.post(`/api/v1/project/service/${key2}/stop`)
getData()
}
const restart = async (key2) => {
await request.post(`/api/v1/project/service/${key2}/restart`)
toast('\u91CD\u542F\u6210\u529F', 'success')
getData()
}
const isAllServiceStart = computed(() => {
return services.value.every((serviceItem) => serviceItem.state === 1)
})
const computedServices = computed(() => {
return services.value.map((item2) => {
return {
...item2,
booleanState: item2.state === 1,
}
})
})
const updateState = (computedService) => {
const { state: state2, key: key2 } = computedService
state2 === 0 ? start2(key2) : stop2(key2)
}
const startAllAndRunVision = async () => {
if (!isAllServiceStart.value) {
await startAll()
}
runVision()
}
expose({
startAllAndRunVision,
})
return (_ctx, _cache) => {
const _component_el_button = resolveComponent('el-button')
const _component_el_switch = resolveComponent('el-switch')
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': true,
title: '\u5DE5\u7A0B\u8FD0\u884C\u8BBE\u7F6E',
'custom-class': 'cms-el-dialog',
width: '867px',
onOpen: open2,
onClose: close2,
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$2Z, [
createElementVNode('div', _hoisted_2$2G, [
createElementVNode('p', _hoisted_3$2s, [
_hoisted_4$25,
createVNode$1(
_component_el_button,
{
class: 'btn-run primary large',
onClick: startAll,
disabled: isAllServiceStart.value,
},
{
default: withCtx(() => [_hoisted_5$1U]),
_: 1,
},
8,
['disabled']
),
]),
createElementVNode('div', _hoisted_6$1I, [
createElementVNode('ul', null, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(computedServices.value, (item2) => {
return (
openBlock(),
createElementBlock(
'li',
{
class: 'flex-row between',
key: item2.key,
},
[
createElementVNode('div', _hoisted_7$1s, [
createElementVNode(
'span',
_hoisted_8$1j,
toDisplayString$1(item2.description),
1
),
createElementVNode('div', null, [
!item2.isAuth
? (openBlock(),
createBlock(
UnauthorizedLabel,
{
key: 0,
name: item2.description,
large: '',
border: '',
},
null,
8,
['name']
))
: createCommentVNode('', true),
]),
]),
createElementVNode('div', _hoisted_9$1e, [
item2.state === 1
? (openBlock(),
createBlock(
_component_el_button,
{
key: 0,
class: 'restart-btn',
onClick: ($event) =>
restart(item2.key),
},
{
default: withCtx(() => [
_hoisted_10$1b,
]),
_: 2,
},
1032,
['onClick']
))
: createCommentVNode('', true),
createVNode$1(
_component_el_switch,
{
modelValue: item2.booleanState,
'onUpdate:modelValue': ($event) =>
(item2.booleanState = $event),
onChange: ($event) => updateState(item2),
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
'onChange',
]
),
]),
]
)
)
}),
128
)),
]),
]),
]),
createElementVNode('div', _hoisted_11$13, [
createElementVNode('p', _hoisted_12$10, [
_hoisted_13$V,
createVNode$1(
_component_el_button,
{
class: 'btn-run primary large',
onClick: runVision,
},
{
default: withCtx(() => [_hoisted_14$Q]),
_: 1,
}
),
]),
createElementVNode('ul', null, [
createElementVNode('li', _hoisted_15$N, [
createVNode$1(
_component_el_checkbox,
{
modelValue: runningSetting.value.isMenu,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(runningSetting.value.isMenu = $event)),
class: 'cms-el-checkbox',
},
null,
8,
['modelValue']
),
_hoisted_16$M,
]),
unref(client).isClient()
? (openBlock(),
createElementBlock('li', _hoisted_17$G, [
createVNode$1(
_component_el_checkbox,
{
modelValue: runningSetting.value.isFullScreen,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(runningSetting.value.isFullScreen = $event)),
class: 'cms-el-checkbox',
},
null,
8,
['modelValue']
),
_hoisted_18$B,
]))
: createCommentVNode('', true),
unref(client).isClient()
? (openBlock(),
createElementBlock('li', _hoisted_19$y, [
createVNode$1(
_component_el_checkbox,
{
modelValue: runningSetting.value.isFullAllWindow,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(runningSetting.value.isFullAllWindow =
$event)),
class: 'cms-el-checkbox',
},
null,
8,
['modelValue']
),
_hoisted_20$w,
]))
: createCommentVNode('', true),
]),
]),
]),
]),
_: 1,
}
)
)
}
},
})
var RunSetting = /* @__PURE__ */ _export_sfc(_sfc_main$3b, [
['__scopeId', 'data-v-093ab85c'],
])
var RunSetting$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: RunSetting,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var AuthorizeInfo_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$1H = (n2) => (
pushScopeId('data-v-17ae16c2'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$2Y = /* @__PURE__ */ _withScopeId$1H(() =>
/* @__PURE__ */ createElementVNode(
'svg',
{
class: 'icon hover-switch-icon',
'aria-hidden': 'true',
},
[
/* @__PURE__ */ createElementVNode('use', {
class: 'base-icon',
'xlink:href': '#icon-shouquan',
}),
/* @__PURE__ */ createElementVNode('use', {
class: 'hover-icon',
'xlink:href': '#icon-shouquan1',
}),
],
-1
)
)
const _hoisted_2$2F = [_hoisted_1$2Y]
const _hoisted_3$2r = { class: 'dialog-content' }
const _hoisted_4$24 = { class: 'panel' }
const _hoisted_5$1T = { class: 'item flex' }
const _hoisted_6$1H = /* @__PURE__ */ _withScopeId$1H(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'item-label' },
'IO\u53D8\u91CF\u70B9\u6570',
-1
)
)
const _hoisted_7$1r = { class: 'item-content' }
const _hoisted_8$1i = { class: 'item-title' }
const _hoisted_9$1d = { class: 'clearfix' }
const _hoisted_10$1a = {
class: 'title',
style: { float: 'left' },
}
const _hoisted_11$12 = {
class: 'iconfont-btn',
title:
'\u5F53\u524D\u8BE5\u9879\u914D\u7F6E\u5DF2\u8D85\u8FC7\u6388\u6743\uFF0C\u5C06\u4F1A\u5F71\u54CD\u8F6F\u4EF6\u5BF9\u5E94\u7684\u670D\u52A1
\u6B63\u5E38\u8FD0\u884C',
'data-tooltip-raw-content': '',
}
const _hoisted_12$$ = /* @__PURE__ */ _withScopeId$1H(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-tishi1' },
null,
-1
)
)
const _hoisted_13$U = [_hoisted_12$$]
const _hoisted_14$P = { class: 'text' }
const _hoisted_15$M = { class: 'item flex' }
const _hoisted_16$L = /* @__PURE__ */ _withScopeId$1H(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'item-label' },
'\u901A\u8BAF\u8BBE\u5907\u6570',
-1
)
)
const _hoisted_17$F = { class: 'item-content' }
const _hoisted_18$A = { class: 'item-title' }
const _hoisted_19$x = { class: 'clearfix' }
const _hoisted_20$v = {
class: 'title',
style: { float: 'left' },
}
const _hoisted_21$q = {
class: 'iconfont-btn',
title:
'\u5F53\u524D\u8BE5\u9879\u914D\u7F6E\u5DF2\u8D85\u8FC7\u6388\u6743\uFF0C\u5C06\u4F1A\u5F71\u54CD\u8F6F\u4EF6\u5BF9\u5E94\u7684\u670D\u52A1
\u6B63\u5E38\u8FD0\u884C',
'data-tooltip-raw-content': '',
}
const _hoisted_22$o = /* @__PURE__ */ _withScopeId$1H(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-tishi1' },
null,
-1
)
)
const _hoisted_23$l = [_hoisted_22$o]
const _hoisted_24$l = { class: 'text' }
const _hoisted_25$g = { class: 'item flex' }
const _hoisted_26$f = /* @__PURE__ */ _withScopeId$1H(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'item-label' },
'WEB+\u5BA2\u6237\u7AEF\u8BBF\u95EE\u6570',
-1
)
)
const _hoisted_27$f = { class: 'item-content' }
const _hoisted_28$e = { class: 'clearfix' }
const _hoisted_29$c = {
class: 'title',
style: { float: 'left' },
}
const _hoisted_30$c = { class: 'text' }
const _hoisted_31$a = { class: 'panel list-panel' }
const _hoisted_32$a = { class: 'item-label list-label' }
const _hoisted_33$a = { class: 'item-content list' }
const _sfc_main$3a = /* @__PURE__ */ defineComponent({
setup(__props2) {
const projectId = app.current.project.id
let showDialog = ref(false)
const licenseInfo = computed(() => authorizeInfo.licenseInfo)
const licenseItems = computed(() => ({
服务: licenseInfo.value.services || {},
协议驱动: licenseInfo.value.protocals || {},
页面组件: getComponentsInfo(licenseInfo.value.components),
}))
const getComponentsInfo = (components = {}) => {
Object.keys(components).forEach((key2) => {
if (Widget.store[key2]?.name) components[key2] = Widget.store[key2].name
})
return components
}
const showTips = computed(() => {
if (licenseInfo.value.totalVariable === null) {
return false
} else {
return licenseInfo.value.usedDevices > licenseInfo.value.totalDevices
}
})
const showIOTips = computed(() => {
if (licenseInfo.value.totalVariable === null) {
return false
} else {
return licenseInfo.value.usedVariables > licenseInfo.value.totalVariable
}
})
return (_ctx, _cache) => {
const _component_el_dialog = resolveComponent('el-dialog')
const _directive_waves = resolveDirective('waves')
return (
openBlock(),
createElementBlock('div', null, [
withDirectives(
(openBlock(),
createElementBlock(
'div',
{
class: 'nav-btn',
title: '\u6388\u6743\u8BF4\u660E',
onClick:
_cache[0] ||
(_cache[0] = ($event) => (showDialog.value = true)),
},
_hoisted_2$2F
)),
[[_directive_waves]]
),
(openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
modelValue: showDialog.value,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) => (showDialog.value = $event)),
title: '\u6388\u6743\u8BF4\u660E',
width: '700px',
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
key: new Date().toISOString(),
onOpened:
_cache[2] || (_cache[2] = ($event) => unref(getLicenseInfo)()),
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_3$2r, [
createElementVNode('div', _hoisted_4$24, [
createElementVNode('div', _hoisted_5$1T, [
_hoisted_6$1H,
createElementVNode('div', _hoisted_7$1r, [
createElementVNode('div', _hoisted_8$1i, [
createElementVNode('div', _hoisted_9$1d, [
createElementVNode(
'div',
_hoisted_10$1a,
toDisplayString$1(
unref(projectId)
? `${licenseInfo.value.usedVariables}\u70B9 /`
: ''
) +
' ' +
toDisplayString$1(
licenseInfo.value.totalVariable == null
? '\u4E0D\u9650'
: licenseInfo.value.totalVariable + '\u70B9'
),
1
),
withDirectives(
createElementVNode(
'div',
_hoisted_11$12,
_hoisted_13$U,
512
),
[[vShow, showIOTips.value && unref(projectId)]]
),
]),
createElementVNode(
'div',
_hoisted_14$P,
toDisplayString$1(
unref(projectId)
? '\u5DF2\u914D\u7F6E\u70B9\u6570/'
: ''
) + '\u6388\u6743\u70B9\u6570',
1
),
]),
]),
]),
createElementVNode('div', _hoisted_15$M, [
_hoisted_16$L,
createElementVNode('div', _hoisted_17$F, [
createElementVNode('div', _hoisted_18$A, [
createElementVNode('div', _hoisted_19$x, [
createElementVNode(
'div',
_hoisted_20$v,
toDisplayString$1(
unref(projectId)
? `${licenseInfo.value.usedDevices}\u53F0 /`
: ''
) +
' ' +
toDisplayString$1(
licenseInfo.value.totalDevices == null
? '\u4E0D\u9650'
: licenseInfo.value.totalDevices + '\u53F0'
),
1
),
withDirectives(
createElementVNode(
'div',
_hoisted_21$q,
_hoisted_23$l,
512
),
[[vShow, showTips.value && unref(projectId)]]
),
]),
createElementVNode(
'div',
_hoisted_24$l,
toDisplayString$1(
unref(projectId)
? '\u5DF2\u914D\u7F6E\u8BBE\u5907\u6570/'
: ''
) + '\u6388\u6743\u8BBE\u5907\u6570',
1
),
]),
]),
]),
createElementVNode('div', _hoisted_25$g, [
_hoisted_26$f,
createElementVNode('div', _hoisted_27$f, [
createElementVNode('div', _hoisted_28$e, [
createElementVNode(
'div',
_hoisted_29$c,
toDisplayString$1(
unref(projectId)
? `${licenseInfo.value.useClient}\u4E2A /`
: ''
) +
' ' +
toDisplayString$1(
licenseInfo.value.totalClient == null
? '\u4E0D\u9650'
: licenseInfo.value.totalClient + '\u4E2A'
),
1
),
]),
createElementVNode(
'div',
_hoisted_30$c,
toDisplayString$1(
unref(projectId) ? '\u5DF2\u8BBF\u95EE\u6570/' : ''
) + '\u6388\u6743\u8BBF\u95EE\u6570',
1
),
]),
]),
]),
createElementVNode('div', _hoisted_31$a, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(licenseItems.value, (item2, key2) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'item flex',
key: key2,
},
[
createElementVNode(
'div',
_hoisted_32$a,
toDisplayString$1(key2),
1
),
createElementVNode('ul', _hoisted_33$a, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(item2, (v4, k2) => {
return (
openBlock(),
createElementBlock('li', { key: k2 }, [
createVNode$1(
EllipsisTooltip,
{
width: '100%',
content: v4 + '',
},
null,
8,
['content']
),
])
)
}),
128
)),
]),
]
)
)
}),
128
)),
]),
]),
]),
_: 1,
},
8,
['modelValue']
)),
])
)
}
},
})
var AuthorizeInfo = /* @__PURE__ */ _export_sfc(_sfc_main$3a, [
['__scopeId', 'data-v-17ae16c2'],
])
var AuthorizeInfo$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: AuthorizeInfo,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Header_vue_vue_type_style_index_0_scoped_true_lang$2 = ''
var Header_vue_vue_type_style_index_1_lang = ''
const _withScopeId$1G = (n2) => (
pushScopeId('data-v-ed137d00'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$2X = {
key: 0,
class: 'header-left flex',
}
const _hoisted_2$2E = /* @__PURE__ */ _withScopeId$1G(() =>
/* @__PURE__ */ createElementVNode(
'img',
{
class: 'logo',
src: _imports_0$1,
},
null,
-1
)
)
const _hoisted_3$2q = [_hoisted_2$2E]
const _hoisted_4$23 = /* @__PURE__ */ _withScopeId$1G(() =>
/* @__PURE__ */ createElementVNode('div', { class: 'flex-full' }, null, -1)
)
const _hoisted_5$1S = { class: 'picture-production-header header-center flex' }
const _hoisted_6$1G = {
key: 0,
class: 'left flex',
}
const _hoisted_7$1q = /* @__PURE__ */ _withScopeId$1G(() =>
/* @__PURE__ */ createElementVNode(
'svg',
{
class: 'icon',
'aria-hidden': 'true',
},
[
/* @__PURE__ */ createElementVNode('use', {
'xlink:href': '#icon-yunhang',
}),
],
-1
)
)
const _hoisted_8$1h = /* @__PURE__ */ _withScopeId$1G(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u8FD0\u884C', -1)
)
const _hoisted_9$1c = /* @__PURE__ */ _withScopeId$1G(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'more_inner' },
[
/* @__PURE__ */ createElementVNode('i', {
class: 'iconfont icon-fanhui flex',
}),
],
-1
)
)
const _hoisted_10$19 = [_hoisted_9$1c]
const _hoisted_11$11 = {
key: 1,
class: 'center',
}
const _hoisted_12$_ = {
key: 2,
class: 'right',
}
const _hoisted_13$T = { class: 'header-right flex' }
const _hoisted_14$O = /* @__PURE__ */ _withScopeId$1G(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-duixiang' },
null,
-1
)
)
const _hoisted_15$L = [_hoisted_14$O]
const _hoisted_16$K = ['title']
const _hoisted_17$E = /* @__PURE__ */ _withScopeId$1G(() =>
/* @__PURE__ */ createElementVNode(
'svg',
{
class: 'icon hover-switch-icon',
'aria-hidden': 'true',
},
[
/* @__PURE__ */ createElementVNode('use', {
class: 'base-icon',
'xlink:href': '#icon-banbenshuoming1',
}),
/* @__PURE__ */ createElementVNode('use', {
class: 'hover-icon',
'xlink:href': '#icon-banbenshuoming2',
}),
],
-1
)
)
const _hoisted_18$z = [_hoisted_17$E]
const _hoisted_19$w = /* @__PURE__ */ _withScopeId$1G(() =>
/* @__PURE__ */ createElementVNode(
'svg',
{
class: 'icon hover-switch-icon',
'aria-hidden': 'true',
},
[
/* @__PURE__ */ createElementVNode('use', {
class: 'base-icon',
'xlink:href': '#icon-bangzhushouce1',
}),
/* @__PURE__ */ createElementVNode('use', {
class: 'hover-icon',
'xlink:href': '#icon-bangzhushouce2',
}),
],
-1
)
)
const _hoisted_20$u = [_hoisted_19$w]
const _hoisted_21$p = {
key: 2,
class: 'line',
}
const _hoisted_22$n = {
key: 3,
class: 'nav-btn',
}
const _hoisted_23$k = {
key: 4,
class: 'nav-btn',
}
const _hoisted_24$k = {
key: 5,
class: 'nav-btn',
}
const _sfc_main$39 = /* @__PURE__ */ defineComponent({
props: {
isFullScreen: {
type: Boolean,
default: true,
},
},
setup(__props2) {
const props2 = __props2
const themeMenuRef = ref()
const route = useRoute()
let maximized = ref(true)
function maximize() {
maximized.value = !maximized.value
client.maximize()
}
const changeSkin = () => {
themeMenuRef.value?.showState(true)
}
const changescreenfull = (judge, type4) => {
window.cmstype.ipcRenderer?.send(
type4,
mode === 'running' && app.config.isFullAllWindow
)
}
const openManual = () => {
let winOptions = {
frame: true,
backgroundColor: '#fff',
}
window.open(
`https://docs.syc-cms.com:8443/cms/${
package_.version.split('-')[0]
}/tutorial/` +
(client.isClient() ? `?winOptions=${JSON.stringify(winOptions)}` : '')
)
}
let showButton = ref(true)
const runSettingVisible = ref(false)
const runSettingRef = ref(null)
const openRunSetting = (event) => {
event.stopPropagation()
runSettingVisible.value = true
}
const run2 = () => {
runSettingRef.value?.startAllAndRunVision()
}
onMounted(() => {
showButton.value = route.name === ''
})
return (_ctx, _cache) => {
const _directive_waves = resolveDirective('waves')
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'header flex app-region-drag',
{ running: unref(mode) === 'running' },
]),
},
[
unref(editing)
? (openBlock(),
createElementBlock('div', _hoisted_1$2X, _hoisted_3$2q))
: createCommentVNode('', true),
_hoisted_4$23,
createElementVNode('div', _hoisted_5$1S, [
unref(editing) && !unref(showButton)
? (openBlock(),
createElementBlock('div', _hoisted_6$1G, [
createElementVNode(
'div',
{
class: 'run flex',
onClick: run2,
title: 'Ctrl+P',
},
[
_hoisted_7$1q,
_hoisted_8$1h,
createElementVNode(
'div',
{
class: 'more',
onClick:
_cache[0] ||
(_cache[0] = ($event) => openRunSetting($event)),
title: '\u66F4\u591A\u8FD0\u884C\u914D\u7F6E',
},
_hoisted_10$19
),
]
),
]))
: createCommentVNode('', true),
!unref(showButton)
? (openBlock(),
createElementBlock(
'div',
_hoisted_11$11,
toDisplayString$1(unref(app).current.project.name),
1
))
: createCommentVNode('', true),
unref(editing)
? (openBlock(), createElementBlock('div', _hoisted_12$_))
: createCommentVNode('', true),
]),
createElementVNode('div', _hoisted_13$T, [
createVNode$1(AuthorizeInfo),
withDirectives(
(openBlock(),
createElementBlock(
'div',
{
class: 'nav-btn',
onClick: changeSkin,
style: { display: 'none' },
},
_hoisted_15$L
)),
[[_directive_waves]]
),
unref(editing)
? withDirectives(
(openBlock(),
createElementBlock(
'div',
{
key: 0,
class: 'nav-btn',
title: unref(package_).version,
},
_hoisted_18$z,
8,
_hoisted_16$K
)),
[[_directive_waves]]
)
: createCommentVNode('', true),
unref(editing)
? withDirectives(
(openBlock(),
createElementBlock(
'div',
{
key: 1,
class: 'nav-btn',
title: '\u64CD\u4F5C\u624B\u518C',
onClick: openManual,
},
_hoisted_20$u
)),
[[_directive_waves]]
)
: createCommentVNode('', true),
unref(client).isClient()
? (openBlock(), createElementBlock('div', _hoisted_21$p))
: createCommentVNode('', true),
unref(client).isClient()
? withDirectives(
(openBlock(),
createElementBlock('div', _hoisted_22$n, [
createElementVNode('i', {
class: 'iconfont icon-suoxiao',
onClick:
_cache[1] ||
(_cache[1] = ($event) =>
changescreenfull(null, 'window-min')),
}),
])),
[[_directive_waves]]
)
: createCommentVNode('', true),
unref(client).isClient() && props2.isFullScreen
? withDirectives(
(openBlock(),
createElementBlock('div', _hoisted_23$k, [
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont icon-suoxiao1',
maximized.value ? 'icon-suoxiao1' : 'icon-fangda',
]),
onClick:
_cache[2] || (_cache[2] = ($event) => maximize()),
},
null,
2
),
])),
[[_directive_waves]]
)
: createCommentVNode('', true),
unref(client).isClient()
? withDirectives(
(openBlock(),
createElementBlock('div', _hoisted_24$k, [
createElementVNode('i', {
class: 'iconfont icon-guanbi',
onClick:
_cache[3] ||
(_cache[3] = ($event) =>
changescreenfull(null, 'window-close')),
}),
])),
[[_directive_waves]]
)
: createCommentVNode('', true),
]),
createVNode$1(
ThemeMenu,
{
ref_key: 'themeMenuRef',
ref: themeMenuRef,
},
null,
512
),
unref(app).editing && !unref(showButton)
? (openBlock(),
createBlock(
RunSetting,
{
key: 1,
ref_key: 'runSettingRef',
ref: runSettingRef,
modelValue: runSettingVisible.value,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(runSettingVisible.value = $event)),
},
null,
8,
['modelValue']
))
: createCommentVNode('', true),
],
2
)
)
}
},
})
var Header$4 = /* @__PURE__ */ _export_sfc(_sfc_main$39, [
['__scopeId', 'data-v-ed137d00'],
])
var Header$5 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Header$4,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Frame_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$2W = { class: 'default-layout' }
const _hoisted_2$2D = { class: 'container' }
const _sfc_main$38 = /* @__PURE__ */ defineComponent({
setup(__props2) {
return (_ctx, _cache) => {
const _component_router_view = resolveComponent('router-view')
return (
openBlock(),
createElementBlock('div', _hoisted_1$2W, [
createVNode$1(Header$4),
createElementVNode('div', _hoisted_2$2D, [
createVNode$1(_component_router_view),
]),
])
)
}
},
})
var Frame = /* @__PURE__ */ _export_sfc(_sfc_main$38, [
['__scopeId', 'data-v-58532600'],
])
var Frame$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Frame,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
function getTableData(params2) {
return request.get('/api/v1/project/node/tree', {
params: params2,
})
}
function modifyNode(data2) {
return request({
url: `/api/v1/project/node/updatenode`,
method: 'put',
data: data2,
})
}
function delNodeById(data2) {
return request({
url: '/api/v1/project/node/deletenodes',
method: 'put',
data: data2,
})
}
function changeNodeLevel(data2) {
return request({
url: '/api/v1/project/node/moveprojectnodes',
method: 'put',
data: data2,
})
}
function breakupProject(id2) {
return request({
url: `/api/v1/project/${id2}/export`,
method: 'get',
responseType: 'blob',
silent: false,
})
}
function reductionProject(id2, data2) {
return request({
url: `/api/v1/project/${id2}/import`,
method: 'post',
data: data2,
})
}
function copyNode(data2) {
return request({
url: '/api/v1/project/node/copyprojectnode',
method: 'post',
data: data2,
})
}
function getProjectFile(id2) {
return request({
url: `/api/v1/project/${id2}/file`,
method: 'get',
responseType: 'blob',
})
}
function checkremoteprojectfileidconflict(data2) {
return request({
url: `/api/v1/project/node/checkremoteprojectfileidconflict`,
method: 'post',
data: data2,
})
}
var RenameDialog_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$2V = { class: 'dialog-content' }
const _sfc_main$37 = /* @__PURE__ */ defineComponent({
emits: ['confirm'],
setup(__props2, { expose, emit: emit2 }) {
const renameDialog = reactive({
isShow: false,
name: '',
node: null,
})
const submit = () => {
if (renameDialog.name === '') {
toast('\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A', 'error')
return
}
emit2('confirm', renameDialog.name, renameDialog.node)
}
const open2 = (data2) => {
renameDialog.isShow = true
renameDialog.name = data2.name
renameDialog.node = data2
}
const close2 = () => {
renameDialog.isShow = false
}
expose({
open: open2,
close: close2,
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
modelValue: unref(renameDialog).isShow,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) => (unref(renameDialog).isShow = $event)),
title: '\u91CD\u547D\u540D',
'custom-class': 'cms-el-dialog',
width: '450px',
'close-on-click-modal': false,
key: new Date().toISOString(),
onClose: close2,
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$2V, [
createVNode$1(
_component_el_input,
{
modelValue: unref(renameDialog).name,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(renameDialog).name = $event)),
placeholder: '\u8BF7\u8F93\u5165\u540D\u79F0',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', { class: 'el-dialog__footer' }, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: close2,
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: submit,
},
'\u786E\u8BA4'
),
]),
]),
_: 1,
},
8,
['modelValue']
)
)
}
},
})
var RenameDialog = /* @__PURE__ */ _export_sfc(_sfc_main$37, [
['__scopeId', 'data-v-fa7c1492'],
])
var RenameDialog$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: RenameDialog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ModifyLevel_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$2U = { class: 'modify-level' }
const _hoisted_2$2C = { class: 'level-tree' }
const _hoisted_3$2p = { class: 'level-tree-content' }
const _hoisted_4$22 = { class: 'custom-tree-node' }
const _hoisted_5$1R = { class: 'tree-node-label' }
const _sfc_main$36 = /* @__PURE__ */ defineComponent({
props: ['treeData'],
emits: ['confirm'],
setup(__props2, { expose, emit: emit2 }) {
const props2 = __props2
let inputVal = ref('')
watch$1(inputVal, (val2) => {
treeRef.value.filter(val2)
})
const filterNode = (value2, data2) => {
if (!value2) return true
return data2.name.includes(value2)
}
const handleNodeClick = () => {
activeTop.value = false
}
const treeRef = ref()
let ztreeData = ref([])
let moveNode = ref([])
const getIdList = () => {
let ids = []
const loop = (list2) => {
for (const data2 of list2) {
data2.type === 0 && ids.push(data2.id)
data2.child && loop(data2.child)
}
}
loop(moveNode.value)
return ids
}
const filterList2 = (menuList, lev) => {
let ids = getIdList()
return menuList
.filter((item2) => {
return item2.type === 0 && !ids.includes(item2.id)
})
.map((item2) => {
let newItem = Object.assign({ level: lev }, item2)
if (item2.child) {
newItem.child = filterList2(item2.child, newItem.level + 1)
}
return newItem
})
}
let level = ref(0)
const findChildLevel = (menuList, lev) => {
let levelList = []
const loop = (menuList2, lev2) => {
menuList2.map((item2) => {
let level2 = 0
if (item2.child) {
item2.child && loop(item2.child, lev2 + 1)
}
level2 = level2 < lev2 ? lev2 : level2
levelList.push(level2)
})
}
loop(menuList, lev)
level.value = Math.max(...levelList)
}
let activeTop = ref(false)
const choiceTop = () => {
activeTop.value = true
treeRef.value.setCurrentKey(null)
}
const confirm2 = () => {
if (!activeTop.value && treeRef.value.getCurrentNode() === null) {
toast('\u8BF7\u9009\u62E9\u5C42\u7EA7', 'error')
return
}
if (!activeTop.value) {
let targetLevel = Number(treeRef.value.getCurrentNode().level)
if (
(targetLevel === 3 && moveNode.value[0].type === 0) ||
targetLevel + level.value + 1 >= 4
) {
toast(
'\u79FB\u52A8\u540E\u6587\u4EF6\u5C42\u7EA7\u5C06\u8D85\u8FC74\u5C42\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9',
'error'
)
return
}
}
emit2(
'confirm',
activeTop.value ? '' : treeRef.value.getCurrentNode().id,
moveNode.value
)
}
let isShow = ref(false)
let now2 = ref('')
const open2 = (data2 = []) => {
isShow.value = true
moveNode.value = data2
data2[0].child && findChildLevel(data2[0].child, 1)
ztreeData.value = [...filterList2(props2.treeData, 0)]
now2.value = new Date().toISOString()
}
const close2 = () => {
isShow.value = false
}
expose({
open: open2,
close: close2,
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_tree = resolveComponent('el-tree')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
modelValue: isShow.value,
'onUpdate:modelValue':
_cache[1] || (_cache[1] = ($event) => (isShow.value = $event)),
title: '\u79FB\u52A8\u5230',
width: '450px',
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
key: now2.value,
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$2U, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input',
modelValue: inputVal.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (inputVal.value = $event)),
clearable: '',
},
null,
8,
['modelValue']
),
createElementVNode('div', _hoisted_2$2C, [
createElementVNode(
'div',
{
class: normalizeClass([
'level-tree-head',
{ active: activeTop.value },
]),
onClick: choiceTop,
},
' \u5DE5\u7A0B\u7BA1\u7406 ',
2
),
createElementVNode('div', _hoisted_3$2p, [
createVNode$1(
_component_el_tree,
{
ref_key: 'treeRef',
ref: treeRef,
class: 'cms-el-tree',
data: ztreeData.value,
'node-key': 'id',
props: {
children: 'child',
},
'empty-text': '',
'default-expand-all': true,
'expand-on-click-node': false,
'filter-node-method': filterNode,
onNodeClick: handleNodeClick,
},
{
default: withCtx(({ data: data2 }) => [
createElementVNode('div', _hoisted_4$22, [
createElementVNode(
'div',
_hoisted_5$1R,
toDisplayString$1(data2.name),
1
),
]),
]),
_: 1,
},
8,
['data']
),
]),
]),
]),
createElementVNode('div', { class: 'el-dialog__footer' }, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: close2,
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: confirm2,
},
'\u786E\u8BA4'
),
]),
]),
_: 1,
},
8,
['modelValue']
)
)
}
},
})
var ModifyLevel = /* @__PURE__ */ _export_sfc(_sfc_main$36, [
['__scopeId', 'data-v-1a1f6359'],
])
var ModifyLevel$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ModifyLevel,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var CreateProjectDialog_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$2T = { class: 'form-table' }
const _hoisted_2$2B = { class: 'input-group' }
const _hoisted_3$2o = ['title']
const _hoisted_4$21 = { class: 'placeholder' }
const _sfc_main$35 = /* @__PURE__ */ defineComponent({
emits: ['confirm'],
setup(__props2, { expose, emit: emit2 }) {
const projectDialog = reactive({
isShow: false,
isCreate: false,
name: '',
path: '',
node: null,
})
const submit = () => {
if (projectDialog.name === '') {
toast('\u5DE5\u7A0B\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A', 'error')
return
}
emit2('confirm', {
name: projectDialog.name,
path: projectDialog.path,
node: projectDialog.node,
isCreate: projectDialog.isCreate,
})
}
const choicePath = async () => {
projectDialog.path = await client.openDirectory({
defaultPath: projectDialog.path,
})
}
const open2 = async (isCreate = true, name2 = '', data2 = null) => {
projectDialog.isShow = true
projectDialog.isCreate = isCreate
projectDialog.name = name2
if (isCreate || data2 == null) {
let defaultPath = await client.getProjectDefaultFile()
projectDialog.path = defaultPath
} else {
projectDialog.path = data2.path.substring(
0,
data2.path.lastIndexOf('\\')
)
}
projectDialog.node = data2
}
const close2 = () => {
projectDialog.isShow = false
}
expose({
open: open2,
close: close2,
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_form = resolveComponent('el-form')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
modelValue: unref(projectDialog).isShow,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) => (unref(projectDialog).isShow = $event)),
title: unref(projectDialog).isCreate
? '\u65B0\u5EFA\u7A7A\u767D\u5DE5\u7A0B'
: '\u521B\u5EFA\u526F\u672C',
'custom-class': 'cms-el-dialog',
width: '450px',
'close-on-click-modal': false,
key: new Date().toISOString(),
onClose: close2,
},
{
default: withCtx(() => [
createVNode$1(
_component_el_form,
{
onSubmit:
_cache[1] ||
(_cache[1] = withModifiers(() => {}, ['prevent'])),
model: unref(projectDialog),
'label-width': '80px',
class: 'add-device-group-form cms-el-form',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$2T, [
createVNode$1(
_component_el_form_item,
{
label: unref(projectDialog).isCreate
? '\u5DE5\u7A0B\u540D\u79F0'
: '\u526F\u672C\u540D\u79F0',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: unref(projectDialog).name,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(projectDialog).name = $event)),
placeholder: unref(projectDialog).isCreate
? '\u8BF7\u8F93\u5165\u5DE5\u7A0B\u540D\u79F0'
: '\u8BF7\u8F93\u5165\u526F\u672C\u540D\u79F0',
},
null,
8,
['modelValue', 'placeholder']
),
]),
_: 1,
},
8,
['label']
),
_ctx.window.electron
? (openBlock(),
createBlock(
_component_el_form_item,
{
key: 0,
label: '\u5B58\u50A8\u8DEF\u5F84',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$2B, [
createElementVNode(
'div',
{
class: 'input-group-content',
title: unref(projectDialog).path,
},
[
createTextVNode(
toDisplayString$1(
unref(projectDialog).path
) + ' ',
1
),
withDirectives(
createElementVNode(
'span',
_hoisted_4$21,
'\u8BF7\u9009\u62E9\u5B58\u50A8\u8DEF\u5F84',
512
),
[[vShow, !unref(projectDialog).path]]
),
],
8,
_hoisted_3$2o
),
createElementVNode('i', {
class: 'iconfont icon-gengduo1',
onClick: choicePath,
}),
]),
]),
_: 1,
}
))
: createCommentVNode('', true),
]),
]),
_: 1,
},
8,
['model']
),
createElementVNode('div', { class: 'el-dialog__footer' }, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: close2,
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: submit,
},
'\u786E\u8BA4'
),
]),
]),
_: 1,
},
8,
['modelValue', 'title']
)
)
}
},
})
var CreateProjectDialog = /* @__PURE__ */ _export_sfc(_sfc_main$35, [
['__scopeId', 'data-v-dbfb0828'],
])
var CreateProjectDialog$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: CreateProjectDialog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _hoisted_1$2S = { class: 'form-table' }
const _sfc_main$34 = /* @__PURE__ */ defineComponent({
emits: ['confirm'],
setup(__props2, { expose, emit: emit2 }) {
const folderDialog = reactive({
isShow: false,
isCreate: false,
name: '',
})
const submitCreateFolderForm = () => {
if (folderDialog.name === '') {
toast('\u6587\u4EF6\u5939\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A', 'error')
return
}
emit2('confirm', folderDialog.name)
}
const open2 = (isCreate = true, name2 = '') => {
folderDialog.isShow = true
folderDialog.isCreate = isCreate
folderDialog.name = name2
}
const close2 = () => {
folderDialog.isShow = false
}
expose({
open: open2,
close: close2,
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_form = resolveComponent('el-form')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
modelValue: unref(folderDialog).isShow,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) => (unref(folderDialog).isShow = $event)),
title: unref(folderDialog).isCreate
? '\u65B0\u5EFA\u6587\u4EF6\u5939'
: '\u91CD\u547D\u540D',
'custom-class': 'cms-el-dialog',
width: '450px',
'close-on-click-modal': false,
key: new Date().toISOString(),
onClose: close2,
},
{
default: withCtx(() => [
createVNode$1(
_component_el_form,
{
onSubmit:
_cache[1] ||
(_cache[1] = withModifiers(() => {}, ['prevent'])),
model: unref(folderDialog),
'label-width': '80px',
class: 'add-device-group-form cms-el-form',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$2S, [
createVNode$1(
_component_el_form_item,
{ label: '\u6587\u4EF6\u5939\u540D\u79F0' },
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: unref(folderDialog).name,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(folderDialog).name = $event)),
placeholder:
'\u8BF7\u8F93\u5165\u6587\u4EF6\u5939\u540D\u79F0',
},
null,
8,
['modelValue']
),
]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['model']
),
createElementVNode('div', { class: 'el-dialog__footer' }, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: close2,
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: submitCreateFolderForm,
},
'\u786E\u8BA4'
),
]),
]),
_: 1,
},
8,
['modelValue', 'title']
)
)
}
},
})
var VersionUpdate_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$1F = (n2) => (
pushScopeId('data-v-29a9b91e'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$2R = { class: 'dialog-content' }
const _hoisted_2$2A = /* @__PURE__ */ _withScopeId$1F(() =>
/* @__PURE__ */ createElementVNode(
'div',
null,
'\u5DE5\u7A0B\u6587\u4EF6\u7248\u672C\u53F7\u8FC7\u4F4E\uFF0C\u8BF7\u5347\u7EA7\u4F7F\u7528',
-1
)
)
const _sfc_main$33 = /* @__PURE__ */ defineComponent({
emits: ['confirm'],
setup(__props2, { expose, emit: emit2 }) {
const versionUpdate = reactive({
isShow: false,
isReserve: false,
node: null,
})
const submit = () => {
emit2('confirm', versionUpdate.node, versionUpdate.isReserve)
}
const open2 = (data2) => {
versionUpdate.isShow = true
versionUpdate.isReserve = false
versionUpdate.node = data2
}
const close2 = () => {
versionUpdate.isShow = false
}
expose({
open: open2,
close: close2,
})
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
modelValue: unref(versionUpdate).isShow,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) => (unref(versionUpdate).isShow = $event)),
title: '\u63D0\u793A',
'custom-class': 'cms-el-dialog',
width: '450px',
'close-on-click-modal': false,
key: new Date().toISOString(),
onClose: close2,
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$2R, [
_hoisted_2$2A,
createElementVNode('div', null, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(versionUpdate).isReserve,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(versionUpdate).isReserve = $event)),
label:
'\u4FDD\u7559\u672C\u5730\u4F4E\u7248\u672C\u5DE5\u7A0B\u6587\u4EF6',
class: 'cms-el-checkbox',
},
null,
8,
['modelValue']
),
]),
]),
createElementVNode('div', { class: 'el-dialog__footer' }, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: close2,
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: submit,
},
'\u5347\u7EA7'
),
]),
]),
_: 1,
},
8,
['modelValue']
)
)
}
},
})
var VersionUpdate = /* @__PURE__ */ _export_sfc(_sfc_main$33, [
['__scopeId', 'data-v-29a9b91e'],
])
var VersionUpdate$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: VersionUpdate,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var BackupDialog_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$2Q = { class: 'form-table' }
const _hoisted_2$2z = { class: 'input-group' }
const _hoisted_3$2n = ['title']
const _hoisted_4$20 = { class: 'placeholder' }
const _sfc_main$32 = /* @__PURE__ */ defineComponent({
emits: ['confirm'],
setup(__props2, { expose, emit: emit2 }) {
const backupDialog = reactive({
isShow: false,
name: '',
path: '',
node: null,
})
const submit = () => {
let { name: name2, path, node: node2 } = backupDialog
if (name2 === '') {
toast('\u5907\u4EFD\u6587\u4EF6\u540D\u4E0D\u80FD\u4E3A\u7A7A', 'error')
return
}
if (path === '') {
toast('\u5B58\u50A8\u8DEF\u5F84\u4E0D\u80FD\u4E3A\u7A7A', 'error')
return
}
emit2('confirm', {
name: name2,
path,
node: node2,
})
}
const choicePath = async () => {
backupDialog.path = await client.openDirectory({
defaultPath: backupDialog.path,
})
}
const openFunc = (data2, path = '') => {
backupDialog.isShow = true
backupDialog.path = path
backupDialog.name = ''
backupDialog.node = data2
}
const open2 = async (data2) => {
let path = ''
if (client.isClient()) {
let defaultPath = await client.getProjectDefaultFile()
path = defaultPath
}
openFunc(data2, path)
}
const close2 = () => {
backupDialog.isShow = false
}
expose({
open: open2,
close: close2,
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_form = resolveComponent('el-form')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
modelValue: unref(backupDialog).isShow,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) => (unref(backupDialog).isShow = $event)),
title: '\u6570\u636E\u5907\u4EFD',
'custom-class': 'cms-el-dialog',
width: '450px',
'close-on-click-modal': false,
key: new Date().toISOString(),
onClose: close2,
},
{
default: withCtx(() => [
createVNode$1(
_component_el_form,
{
onSubmit:
_cache[1] ||
(_cache[1] = withModifiers(() => {}, ['prevent'])),
model: unref(backupDialog),
'label-width': '80px',
class: 'add-device-group-form cms-el-form',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$2Q, [
createVNode$1(
_component_el_form_item,
{ label: '\u5907\u4EFD\u6587\u4EF6\u540D' },
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: unref(backupDialog).name,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(backupDialog).name = $event)),
placeholder:
'\u8BF7\u8F93\u5165\u5907\u4EFD\u6587\u4EF6\u540D',
},
null,
8,
['modelValue']
),
]),
_: 1,
}
),
createVNode$1(
_component_el_form_item,
{ label: '\u5B58\u50A8\u8DEF\u5F84' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$2z, [
createElementVNode(
'div',
{
class: 'input-group-content',
title: unref(backupDialog).path,
},
[
createTextVNode(
toDisplayString$1(
unref(backupDialog).path
) + ' ',
1
),
withDirectives(
createElementVNode(
'span',
_hoisted_4$20,
'\u8BF7\u9009\u62E9\u5B58\u50A8\u8DEF\u5F84',
512
),
[[vShow, !unref(backupDialog).path]]
),
],
8,
_hoisted_3$2n
),
createElementVNode('i', {
class: 'iconfont icon-gengduo1',
onClick: choicePath,
}),
]),
]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['model']
),
createElementVNode('div', { class: 'el-dialog__footer' }, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: close2,
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: submit,
},
'\u786E\u8BA4'
),
]),
]),
_: 1,
},
8,
['modelValue']
)
)
}
},
})
var BackupDialog = /* @__PURE__ */ _export_sfc(_sfc_main$32, [
['__scopeId', 'data-v-3add091d'],
])
var BackupDialog$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: BackupDialog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var HandleProjectConflict_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$1E = (n2) => (
pushScopeId('data-v-43a9593d'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$2P = { class: 'dialog-content' }
const _hoisted_2$2y = /* @__PURE__ */ _withScopeId$1E(() =>
/* @__PURE__ */ createElementVNode(
'div',
null,
'\u5DF2\u5B58\u5728\u76F8\u540C\u5DE5\u7A0B\uFF0C\u8BF7\u9009\u62E9\u64CD\u4F5C\uFF1A',
-1
)
)
const _hoisted_3$2m = { style: { padding: '10px 20px' } }
const _hoisted_4$1$ = /* @__PURE__ */ createTextVNode(
'\u4F5C\u4E3A\u65B0\u5DE5\u7A0B\u8BB0\u5F55\u6DFB\u52A0'
)
const _hoisted_5$1Q = /* @__PURE__ */ createTextVNode(
'\u66FF\u6362\uFF08\u4FDD\u7559\u539F\u5DE5\u7A0B\u8FD0\u884C\u6570\u636E\uFF09'
)
const _hoisted_6$1F = /* @__PURE__ */ createTextVNode(
'\u66FF\u6362\uFF08\u6E05\u9664\u539F\u5DE5\u7A0B\u8FD0\u884C\u6570\u636E\uFF09'
)
const _sfc_main$31 = /* @__PURE__ */ defineComponent({
emits: ['confirm', 'close'],
setup(__props2, { expose, emit: emit2 }) {
const handleProjectConflict = reactive({
isShow: false,
handleType: 1,
formData: new FormData(),
conflictProjectID: -1,
localFilePath: '',
})
const submit = () => {
emit2('confirm', handleProjectConflict)
}
const open2 = (formData, conflictProjectID, localFilePath) => {
handleProjectConflict.isShow = true
handleProjectConflict.formData = formData
handleProjectConflict.handleType = 1
handleProjectConflict.localFilePath = localFilePath
handleProjectConflict.conflictProjectID = conflictProjectID
}
const closeSubmit = () => {
emit2('close', handleProjectConflict.conflictProjectID)
close2()
}
const close2 = () => {
handleProjectConflict.isShow = false
}
expose({
open: open2,
close: close2,
})
return (_ctx, _cache) => {
const _component_el_radio = resolveComponent('el-radio')
const _component_el_radio_group = resolveComponent('el-radio-group')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
modelValue: unref(handleProjectConflict).isShow,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(handleProjectConflict).isShow = $event)),
title: '\u63D0\u793A',
'custom-class': 'cms-el-dialog',
width: '450px',
'close-on-click-modal': false,
key: new Date().toISOString(),
onClose: closeSubmit,
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$2P, [
_hoisted_2$2y,
createElementVNode('div', _hoisted_3$2m, [
createVNode$1(
_component_el_radio_group,
{
modelValue: unref(handleProjectConflict).handleType,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(handleProjectConflict).handleType = $event)),
},
{
default: withCtx(() => [
createVNode$1(
_component_el_radio,
{
label: 1,
class: 'cms-el-radio',
},
{
default: withCtx(() => [_hoisted_4$1$]),
_: 1,
}
),
createVNode$1(
_component_el_radio,
{
label: 2,
class: 'cms-el-radio',
},
{
default: withCtx(() => [_hoisted_5$1Q]),
_: 1,
}
),
createVNode$1(
_component_el_radio,
{
label: 3,
class: 'cms-el-radio',
},
{
default: withCtx(() => [_hoisted_6$1F]),
_: 1,
}
),
]),
_: 1,
},
8,
['modelValue']
),
]),
]),
createElementVNode('div', { class: 'el-dialog__footer' }, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: closeSubmit,
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: submit,
},
'\u786E\u8BA4'
),
]),
]),
_: 1,
},
8,
['modelValue']
)
)
}
},
})
var HandleProjectConflict = /* @__PURE__ */ _export_sfc(_sfc_main$31, [
['__scopeId', 'data-v-43a9593d'],
])
var HandleProjectConflict$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: HandleProjectConflict,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var RecoveryDataDialog_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$1D = (n2) => (
pushScopeId('data-v-72afab08'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$2O = /* @__PURE__ */ _withScopeId$1D(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'dialog-content' },
[
/* @__PURE__ */ createElementVNode(
'div',
null,
' \u5907\u4EFD\u6570\u636E\u4E0E\u8BE5\u5DE5\u7A0Bid\u4E0D\u5339\u914D\uFF0C\u7EE7\u7EED\u64CD\u4F5C\u53EF\u80FD\u5B58\u5728\u539F\u6570\u636E\u4E22\u5931\u7684\u98CE\u9669\uFF08\u5EFA\u8BAE\u5907\u4EFD\u539F\u6570\u636E\uFF09\uFF0C\u662F\u5426\u7EE7\u7EED\u6062\u590D '
),
],
-1
)
)
const _sfc_main$30 = /* @__PURE__ */ defineComponent({
emits: ['confirm'],
setup(__props2, { expose, emit: emit2 }) {
const recoveryData = reactive({
isShow: false,
formData: '',
})
const submit = () => {
emit2('confirm', recoveryData.formData)
}
const open2 = (formData) => {
recoveryData.isShow = true
recoveryData.formData = formData
}
const close2 = () => {
recoveryData.isShow = false
}
expose({
open: open2,
close: close2,
})
return (_ctx, _cache) => {
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
modelValue: unref(recoveryData).isShow,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (unref(recoveryData).isShow = $event)),
title: '\u63D0\u793A',
'custom-class': 'cms-el-dialog',
width: '450px',
'close-on-click-modal': false,
key: new Date().toISOString(),
onClose: close2,
},
{
default: withCtx(() => [
_hoisted_1$2O,
createElementVNode('div', { class: 'el-dialog__footer' }, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: close2,
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: submit,
},
'\u786E\u8BA4'
),
]),
]),
_: 1,
},
8,
['modelValue']
)
)
}
},
})
var RecoveryDataDialog = /* @__PURE__ */ _export_sfc(_sfc_main$30, [
['__scopeId', 'data-v-72afab08'],
])
var RecoveryDataDialog$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: RecoveryDataDialog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var TipDialog_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$2N = { class: 'dialog-content' }
const _hoisted_2$2x = { class: 'el-dialog__footer footer-align' }
const _hoisted_3$2l = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$2$ = /* @__PURE__ */ defineComponent({
setup(__props2, { expose }) {
const tipConfig = reactive({
isShow: false,
message: '',
})
const open2 = (msg = '') => {
tipConfig.isShow = true
tipConfig.message = msg
}
const close2 = () => {
tipConfig.isShow = false
}
expose({
open: open2,
})
return (_ctx, _cache) => {
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
modelValue: unref(tipConfig).isShow,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (unref(tipConfig).isShow = $event)),
title: '\u63D0\u793A',
width: '450px',
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
key: new Date().toISOString(),
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$2N, [
createElementVNode(
'div',
null,
toDisplayString$1(unref(tipConfig).message),
1
),
]),
createElementVNode('div', _hoisted_2$2x, [
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: close2,
},
{
default: withCtx(() => [_hoisted_3$2l]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
)
)
}
},
})
var TipDialog = /* @__PURE__ */ _export_sfc(_sfc_main$2$, [
['__scopeId', 'data-v-340b361e'],
])
var TipDialog$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: TipDialog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Projects_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$1C = (n2) => (
pushScopeId('data-v-2440f914'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$2M = { class: 'page' }
const _hoisted_2$2w = { class: 'page-contain' }
const _hoisted_3$2k = { class: 'page-head' }
const _hoisted_4$1_ = { class: 'page-head-title' }
const _hoisted_5$1P = /* @__PURE__ */ createTextVNode(
' \u5DE5\u7A0B\u7BA1\u7406 '
)
const _hoisted_6$1E = { class: 'page-head-option' }
const _hoisted_7$1p = { class: 'option-search' }
const _hoisted_8$1g = /* @__PURE__ */ _withScopeId$1C(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-sousuo',
title: '\u641C\u7D22',
},
null,
-1
)
)
const _hoisted_9$1b = /* @__PURE__ */ _withScopeId$1C(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-xinjian option-add' },
null,
-1
)
)
const _hoisted_10$18 = /* @__PURE__ */ createTextVNode(
'\u65B0\u5EFA\u7A7A\u767D\u5DE5\u7A0B'
)
const _hoisted_11$10 = /* @__PURE__ */ createTextVNode(
' \u6253\u5F00\u5DF2\u6709\u5DE5\u7A0B '
)
const _hoisted_12$Z = { class: 'page-table' }
const _hoisted_13$S = ['title', 'id']
const _hoisted_14$N = {
key: 0,
class: 'tree-node',
}
const _hoisted_15$K = {
class: 'name-icon',
'aria-hidden': 'true',
}
const _hoisted_16$J = {
key: 0,
'xlink:href': '#icon-wenjianjia1',
}
const _hoisted_17$D = {
key: 1,
'xlink:href': '#icon-wenjian',
}
const _hoisted_18$y = ['title']
const _hoisted_19$v = { class: 'vxe-cell--label' }
const _hoisted_20$t = { class: 'table-option-flex' }
const _hoisted_21$o = /* @__PURE__ */ _withScopeId$1C(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-gengduo1 max-icon' },
null,
-1
)
)
const _hoisted_22$m = /* @__PURE__ */ createTextVNode(' \u79FB\u52A8\u5230 ')
const _hoisted_23$j = /* @__PURE__ */ createTextVNode(' \u91CD\u547D\u540D ')
const _hoisted_24$j = /* @__PURE__ */ createTextVNode(
' \u521B\u5EFA\u526F\u672C '
)
const _hoisted_25$f = /* @__PURE__ */ createTextVNode(
' \u5BFC\u51FA\u5DE5\u7A0B '
)
const _hoisted_26$e = /* @__PURE__ */ createTextVNode(' \u5220\u9664 ')
const _hoisted_27$e = {
key: 2,
class: 'divider',
}
const _hoisted_28$d = /* @__PURE__ */ createTextVNode(
' \u6570\u636E\u5907\u4EFD '
)
const _hoisted_29$b = /* @__PURE__ */ createTextVNode(
' \u6570\u636E\u6062\u590D '
)
const _hoisted_30$b = { class: 'page-footer' }
const _hoisted_31$9 = { class: 'dialog-content' }
const _hoisted_32$9 = { key: 0 }
const _hoisted_33$9 = { key: 1 }
const _hoisted_34$7 = { key: 2 }
const _hoisted_35$7 = { class: 'el-dialog__footer' }
const _hoisted_36$6 = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_37$6 = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _hoisted_38$5 = { class: 'dialog-content' }
const _hoisted_39$4 = { class: 'el-dialog__footer' }
const _hoisted_40$4 = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_41$4 = /* @__PURE__ */ createTextVNode('\u66FF\u6362')
const _sfc_main$2_ = /* @__PURE__ */ defineComponent({
setup(__props2) {
const dataType2 = {
0: '\u6587\u4EF6\u5939',
1: 'CMS',
2: 'SIOT',
3: 'SEVER',
}
let keyword = ref('')
watch$1(
() => keyword.value,
() => {
initUtils.debouncedFn(async () => {
checkboxAll(false)
checkedRow.value = []
await getProjectsList()
if (keyword.value !== '') {
tableRef.value.setAllTreeExpand(true)
} else {
tableRef.value.setAllTreeExpand(false)
expandRow.value = []
}
toggleTreeExpand()
})
}
)
let orderSetting = reactive({
order: 'asc',
orderFieldName: 'name',
})
const sortChangeEvent = ({ order: order2, property: property2 }) => {
if (order2 === null) {
orderSetting.order = 'asc'
orderSetting.orderFieldName = 'name'
} else {
orderSetting.order = order2
orderSetting.orderFieldName = property2
}
initData({
isOrderByDesc: orderSetting.order === 'desc',
orderFieldName: orderSetting.orderFieldName,
})
}
let versionUpdateRef = ref()
const versionUpdateConfirm = async (node2, isReserve) => {
let formData = new FormData()
formData.append('id', node2.id)
formData.append('isKeepOldFile', isReserve)
await request.put('/api/v1/project/node/updateprojectfile', formData)
versionUpdateRef.value.close()
await initData({
isOrderByDesc: orderSetting.order === 'desc',
orderFieldName: orderSetting.orderFieldName,
})
gotoProjectDetail(node2)
}
const toggleTreeExpand = () => {
setTimeout(() => {
let ids = tableRef.value.getTreeExpandRecords().map((item2) => item2.id)
Session.set('Projects:expandRow', [
.../* @__PURE__ */ new Set([...expandRow.value, ...ids]),
])
}, 300)
}
let expandRow = ref([])
const toggleBlankExpand = (row) => {
let idx = expandRow.value.indexOf(row.id)
idx < 0 ? expandRow.value.push(row.id) : expandRow.value.splice(idx, 1)
}
const cellClick = async ({ row, triggerCheckbox, triggerTreeNode }) => {
if (triggerCheckbox || triggerTreeNode) return
let { disabled } = isEditing([row.id + ''])
if (disabled) {
tipDialogRef.value.open(
'\u5DE5\u7A0B\u6587\u4EF6\u5DF2\u7ECF\u88AB\u6253\u5F00\uFF0C\u8BF7\u52FF\u91CD\u590D\u7F16\u8F91'
)
return
}
if (isProject(row)) {
if (!row.fileAvailableState) {
toast('\u6587\u4EF6\u5DF2\u5931\u6548', 'error')
return
}
let currentVersion = await request.get(
'/api/v1/project/node/getcurrentversion'
)
if (currentVersion === row.version) {
gotoProjectDetail(row)
} else if (row.version > currentVersion) {
toast(
'\u5F53\u524D\u8F6F\u4EF6\u7248\u672C\u8F83\u4F4E\uFF0C\u65E0\u6CD5\u7F16\u8F91\u9AD8\u7248\u672C\u7684\u5DE5\u7A0B\u6587\u4EF6\uFF0C\u8BF7\u5347\u7EA7\u8F6F\u4EF6\u540E\u7EE7\u7EED\u540E\u7EED\u64CD\u4F5C',
'error'
)
} else {
versionUpdateRef.value.open(row)
}
} else {
tableRef.value?.toggleTreeExpand(row)
toggleBlankExpand(row)
toggleTreeExpand()
}
}
let tableRef = ref()
let tableData2 = ref([])
let checkedRow = ref([])
const getCheckRows = () => {
return (checkedRow.value =
(tableRef.value && tableRef.value.getCheckboxRecords(true)) || [])
}
const setParent = (list2, row, type4) => {
list2.map((item2) => {
if (item2.id === row.parentId) {
toggleSelection(item2, type4)
if (Number(item2.parentId) !== 0 || item2.parentId !== null) {
setParent(tableData2.value, item2, type4)
}
} else if (item2.child && item2.child.length > 0) {
setParent(item2.child, row, type4)
}
})
}
const setChildren = (children, type4) => {
children.map((j2) => {
toggleSelection(j2, type4)
if (j2.child) {
setChildren(j2.child, type4)
}
})
}
const toggleSelection = (row, select2) => {
if (row) {
tableRef.value.setCheckboxRow(row, select2)
}
}
let isAllSelect = ref(false)
const isAllSelectFunc = () => {
isAllSelect.value =
tableData2.value.length > 0 &&
tableData2.value.every((el2) => {
const tableDataIds = checkedRow.value.map((j2) => j2.id)
return tableDataIds.includes(el2.id)
})
}
const checkboxChange = (scope) => {
getCheckRows()
let { row } = scope
const hasSelect = checkedRow.value.some((el2) => {
return row.id === el2.id
})
if (row.child) {
setChildren(row.child, hasSelect)
}
if ((row.parentId !== null || Number(row.parentId) !== 0) && !hasSelect) {
setParent(tableData2.value, row, false)
}
isAllSelectFunc()
setTimeout(() => {
getCheckRows()
})
}
const checkboxAll = (isSelect) => {
isAllSelect.value = isSelect
tableRef.value?.setCheckboxRow(tableData2.value, isSelect)
tableData2.value.map((el2) => {
if (el2.child) {
setChildren(el2.child, isSelect)
}
})
getCheckRows()
}
const ruleValidate = (data2) => {
let flag2 = false
const judgeChildren = (data22) => {
data22.forEach((e2) => {
if (flag2) {
return
}
if (dataType2[e2.type] !== '\u6587\u4EF6\u5939') {
flag2 = true
return
} else if (e2.child && e2.child.length) {
judgeChildren(e2.child)
}
})
}
judgeChildren(data2)
return flag2
}
const choiceHasGroup = computed(() => {
return (
(delNodeDialog.data.filter(
(item2) => dataType2[item2.type] === '\u6587\u4EF6\u5939'
).length > 0 &&
delNodeDialog.data.filter(
(item2) => dataType2[item2.type] !== '\u6587\u4EF6\u5939'
).length > 0) ||
(delNodeDialog.data.filter(
(item2) => dataType2[item2.type] === '\u6587\u4EF6\u5939'
).length === delNodeDialog.data.length &&
ruleValidate(delNodeDialog.data))
)
})
const formatter2 = ({ row }) => {
return initUtils.formateDate(row.updateTime)
}
const isProject = (row) => {
return dataType2[row.type] !== '\u6587\u4EF6\u5939'
}
const projectDialogRef = ref()
const createProject = () => {
projectDialogRef.value.open()
}
const createProjectConfirm = async ({
isCreate,
name: name2,
path,
node: node2,
}) => {
if (isCreate) {
let data2 = new FormData()
data2.append('name', name2)
data2.append('path', path ?? '')
data2.append('type', '1')
await addNodeFunc(data2)
} else {
let formData = new FormData()
formData.append('parentId', node2.parentId ?? '')
formData.append('path', path ?? '')
formData.append('name', name2)
formData.append('type', node2.type)
formData.append('rawProjectNodeID', node2.id)
formData.append('copyType', '0')
await copyNode(formData)
await initData()
}
projectDialogRef.value.close()
}
const folderDialogRef = ref()
const createFolder2 = () => {
folderDialogRef.value.open()
}
const createFolderConfirm = async (name2) => {
let formData = new FormData()
formData.append('name', name2)
formData.append('type', '0')
await addNodeFunc(formData)
folderDialogRef.value.close()
}
function getElementTop(element) {
let actualTop = element.offsetTop
let current2 = element.offsetParent
while (current2 !== null) {
actualTop += current2.offsetTop
current2 = current2.offsetParent
}
return actualTop
}
let activeID = ref('')
const scrollToNodeById = (id2) => {
let tableBody = document.getElementsByClassName(
'vxe-table--body-wrapper'
)[0]
let targetNode = document.getElementById('detailTable_' + id2)
if (!targetNode && tableRef.value) {
let currentID = id2
let parents = []
while (currentID !== null) {
let row = tableRef.value.getRowById(currentID)
if (!row) return
currentID = row.parentId
parents.push(row)
}
parents.reverse().forEach((item2) => {
tableRef.value.toggleTreeExpand(item2)
})
}
setTimeout(() => {
targetNode = document.getElementById('detailTable_' + id2)
let top2 = getElementTop(targetNode)
let bodyTop = getElementTop(tableBody)
tableRef.value?.scrollTo(0, top2 - bodyTop - 11)
activeID.value = id2
}, 50)
setTimeout(() => {
activeID.value = ''
}, 3e3)
}
const addNodeFunc = async (addData) => {
let id2 = await request.post('/api/v1/project/node', addData)
await initData()
setTimeout(() => {
scrollToNodeById(id2)
isAllSelectFunc()
}, 10)
}
let handleProjectConflictRef = ref()
const semiHandleProjectConflict = async ({
formData,
handleType: handleType2,
localFilePath,
}) => {
let url2 = ''
let formDataParam = new FormData()
if (window.electron) {
url2 = 'importlocalproject'
formDataParam.append('localFilePath', localFilePath)
formDataParam.append('importConflictHandleType', handleType2)
} else {
url2 = 'importremoteproject'
formDataParam.append('file', formData.get('file'))
formDataParam.append('importConflictHandleType', handleType2)
}
let data2 = await request.post(
'/api/v1/project/node/' + url2,
formDataParam
)
return data2
}
const handleProjectConflictConfirm = async (params2) => {
let data2 = await semiHandleProjectConflict(params2)
toast('\u5BFC\u5165\u6210\u529F', 'success')
await initData()
setTimeout(() => {
scrollToNodeById(data2.id)
isAllSelectFunc()
}, 10)
handleProjectConflictRef.value.close()
}
const handleProjectConflictClose = (id2) => {
scrollToNodeById(id2)
}
const importProjectRef = ref()
const importProject = async (e2) => {
let files2 = e2.target.files
if (files2.length === 1) {
const formData = new FormData()
formData.append('file', files2[0])
importProjectRef.value.value = ''
const { result, conflictProjectID } =
await checkremoteprojectfileidconflict(formData)
if (result) {
handleProjectConflictRef.value.open(formData, conflictProjectID)
return
}
await handleProjectConflictConfirm({ formData, handleType: 1 })
} else {
let promiseArr = []
for (const file2 of files2) {
promiseArr.push(
(async () => {
const formData = new FormData()
formData.append('file', file2)
await semiHandleProjectConflict({ formData, handleType: 1 })
})()
)
}
await Promise.all(promiseArr)
.then(async () => {
toast('\u5BFC\u5165\u6210\u529F', 'success')
importProjectRef.value.value = ''
await initData()
})
.catch(async () => {
importProjectRef.value.value = ''
await initData()
})
}
}
const openProject = () => {
client
.invoke(async ({ electron: electron2 }) => {
const { dialog, BrowserWindow } = electron2
const win = BrowserWindow.getFocusedWindow()
return dialog.showOpenDialog(win, {
title: '\u8BF7\u9009\u62E9\u8981\u6253\u5F00\u7684\u5DE5\u7A0B',
filters: [{ name: 'Cmsproj File Type', extensions: ['cmsproj'] }],
properties: ['multiSelections'],
})
})
.then(async (res) => {
const { canceled, filePaths } = res
if (canceled) return
if (filePaths.length === 1) {
let localFilePath = filePaths[0]
let formData = new FormData()
formData.append('localFilePath', localFilePath)
const { result, conflictProjectID } = await request.post(
'/api/v1/project/node/checklocalprojectfileidconflict',
formData
)
if (result) {
handleProjectConflictRef.value.open(
formData,
conflictProjectID,
localFilePath
)
return
}
await handleProjectConflictConfirm({ localFilePath, handleType: 1 })
} else {
let promiseArr = []
for (const file2 of filePaths) {
promiseArr.push(
(async () => {
const formData = new FormData()
formData.append('localFilePath', file2)
await semiHandleProjectConflict({
handleType: 1,
localFilePath: file2,
})
})()
)
}
await Promise.all(promiseArr)
.then(async () => {
toast('\u5BFC\u5165\u6210\u529F', 'success')
await initData()
})
.catch(async () => {
await initData()
})
}
})
}
const modifyNodesLevel = () => {
let checkList = getCheckRows()
let rowIds = checkList.map((item2) => item2.id + '')
let { disabled, errorMsg } = isEditing(rowIds)
if (disabled) {
tipDialogRef.value.open(errorMsg)
return
}
modifyLevelRef.value.open(checkList)
}
const isEditing = (rowIdList = checkedRow.value.map((row) => row.id)) => {
app.winList = app.winList.filter(
(item2) =>
item2.app.current.project.id === '' ||
(item2.app.current.project.id !== '' && !item2.closed)
)
let disabled = app.winList.some((item2) => {
return (
(item2.app.current.project.id === '' &&
rowIdList.includes(item2.__projectId__ + '')) ||
(rowIdList.includes(item2.app.current.project.id + '') &&
!item2.closed)
)
})
return {
disabled,
errorMsg:
rowIdList.length === 1
? '\u64CD\u4F5C\u65E0\u6CD5\u5B8C\u6210\uFF0C\u56E0\u4E3A\u8BE5\u5DE5\u7A0B\u6587\u4EF6\u6B63\u5728\u88AB\u6253\u5F00\uFF0C\u8BF7\u5173\u95ED\u6587\u4EF6\u540E\u91CD\u8BD5'
: '\u64CD\u4F5C\u65E0\u6CD5\u5B8C\u6210\uFF0C\u56E0\u5B58\u5728\u5DE5\u7A0B\u6587\u4EF6\u6B63\u5728\u88AB\u6253\u5F00\uFF0C\u8BF7\u5173\u95ED\u6587\u4EF6\u540E\u91CD\u8BD5',
}
}
const delNode = (data2) => {
let rowIds = data2.map((item2) => item2.id + '')
let { disabled, errorMsg } = isEditing(rowIds)
if (disabled) {
tipDialogRef.value.open(errorMsg)
return
}
delNodeDialog.isDelProjectFile = false
delNodeDialog.data = data2
delNodeDialog.isShow = true
}
const delNodeDialog = reactive({
isShow: false,
isDelProjectFile: false,
data: [],
})
const hideDialog = () => {
delNodeDialog.isShow = false
}
const recursiveDelNode = (list2, target2) => {
for (let i2 = list2.length - 1; i2 >= 0; i2--) {
if (target2.indexOf(list2[i2]) >= 0) {
list2.splice(i2, 1)
} else if (list2[i2].child) {
recursiveDelNode(list2[i2].child || [], target2)
}
}
}
const tipDialogRef = ref()
const confirm2 = () => {
let data2 = new FormData()
let removeData = delNodeDialog.data
removeData.forEach((item2) => {
data2.append('ids', item2.id)
})
tableRef.value.remove(removeData)
data2.append('isDeleteFile', delNodeDialog.isDelProjectFile + '')
delNodeById(data2).then(() => {
hideDialog()
recursiveDelNode(tableData2.value, removeData)
toast('\u5220\u9664\u6210\u529F', 'success')
getCheckRows()
isAllSelectFunc()
})
}
onMounted(() => {
Session.remove('X-Project')
document.onclick = function (e2) {
e2.stopPropagation()
}
initData()
})
const getProjectsList = async (param = {}) => {
let newParam = Object.assign(
{
rootId: '',
isOrderByDesc: orderSetting.order === 'desc',
orderFieldName: orderSetting.orderFieldName,
keyWord: keyword.value,
},
param
)
let res = await getTableData(newParam)
res && (tableData2.value = [...res])
}
const initData = async (param = {}) => {
await getProjectsList(param)
setTimeout(() => {
let initExpandRow = Session.get('Projects:expandRow') || []
expandRow.value = []
initExpandRow.forEach((item2) => {
let node2 = tableRef.value.getRowById(item2)
if (!node2) return
if (node2.type === 0 && !node2.child.length) {
expandRow.value.push(node2.id)
}
tableRef.value.setTreeExpand(node2, true)
})
}, 50)
}
const gotoProjectDetail = (item2) => {
let win = window.open(`#/editing/project/${item2.id}/page`)
win.__projectId__ = item2.id
win && app.winList.push(win)
if (client.isClient()) {
client.invoke(({ electron: electron2 }) => {
const { BrowserWindow } = electron2
const win2 = BrowserWindow.getFocusedWindow()
if (!win2) return
win2.maximize()
})
}
}
const modifyLevelRef = ref()
const submitFormLevel = async (id2, moveNode) => {
let formData = new FormData()
formData.append('destNodeID', id2)
moveNode.map((item2) => {
formData.append('selectNodeIDs', item2.id)
})
await changeNodeLevel(formData)
await initData()
modifyLevelRef.value.close()
}
const upLoadFile = ref()
let currentNode = ref()
const recoveryDataDialogRef = ref()
const recoveryDataDialogConfirm = async (formData) => {
await reductionProject(currentNode.value.id, formData)
toast('\u6570\u636E\u6062\u590D\u6210\u529F', 'success')
recoveryDataDialogRef.value.close()
}
const upLoadFunc = async (e2) => {
let file2 = e2.target.files[0]
let formData = new FormData()
formData.append('formFile', file2)
if (!currentNode.value) return
let result = await request.post(
`/api/v1/project/${currentNode.value.id}/checkprojectidmatch`,
formData
)
if (result) {
recoveryDataDialogConfirm(formData)
} else {
recoveryDataDialogRef.value.open(formData)
}
upLoadFile.value.value = ''
}
let renameDialogRef = ref()
const renameConfirm = async (name2, node2) => {
let formData = new FormData()
formData.append('ParentId', node2.parentId ?? '')
formData.append('Name', name2)
formData.append('Path', node2.path ?? '')
formData.append('Type', node2.type)
formData.append('Id', node2.id)
await modifyNode(formData)
await initData()
renameDialogRef.value.close()
}
const backupDialogRef = ref()
const saveFileTip = reactive({
isShow: false,
node: null,
path: '',
name: '',
confirm: async () => {
saveFileTip.isShow = false
let loadingInstance2
let loadingOptions2 = {
fullscreen: true,
background: 'rgba(0,0,0,.05)',
customClass: 'delay-loading',
}
loadingInstance2 = ElLoading.service(loadingOptions2)
if (!saveFileTip.node) return
client
.saveFile(
saveFileTip.path,
saveFileTip.name + '.cmsbak',
`/api/v1/project/${saveFileTip.node.id}/export`
)
.then(() => {
toast(
saveFileTip.node.name + '\uFF1A\u5907\u4EFD\u6210\u529F\uFF01',
'success'
)
loadingInstance2 && loadingInstance2.close()
backupDialogRef.value.close()
})
},
})
const backupConfirm = async ({ node: node2, name: name2, path }) => {
saveFileTip.path = path
saveFileTip.node = node2
saveFileTip.name = name2
let existFile = await client.isExists(path + '/' + name2 + '.cmsbak')
if (existFile) {
saveFileTip.isShow = true
return
}
saveFileTip.confirm()
}
const handleCommand = (comm) => {
let { data: data2, value: value2 } = comm
let { disabled, errorMsg } = isEditing([data2.id + ''])
if (disabled) {
tipDialogRef.value.open(errorMsg)
return
}
switch (value2) {
case '\u91CD\u547D\u540D':
renameDialogRef.value.open(data2)
break
case '\u521B\u5EFA\u526F\u672C':
projectDialogRef.value.open(
false,
data2.name + '-\u526F\u672C' + Math.random().toString().slice(-4),
data2
)
break
case '\u6570\u636E\u5907\u4EFD':
if (window.cmstype == 'Web') {
breakupProject(data2.id)
.then((res) => {
initUtils.downFile(res, data2.name + '-\u5907\u4EFD.cmsbak')
})
.then(() => {
toast(
data2.name + '\uFF1A\u5907\u4EFD\u6210\u529F\uFF01',
'success'
)
})
} else {
backupDialogRef.value.open(data2)
}
break
case '\u6570\u636E\u6062\u590D':
currentNode.value = data2
upLoadFile.value.click()
break
case '\u5220\u9664':
delNode([data2])
break
case '\u79FB\u52A8\u5230':
modifyLevelRef.value.open([data2])
break
case '\u5BFC\u51FA\u5DE5\u7A0B':
exportProject(data2)
}
}
const exportProject = (data2) => {
getProjectFile(data2.id).then((res) => {
initUtils.downFile(res, data2.name + '.cmsproj')
toast('\u5BFC\u51FA\u6210\u529F', 'success')
})
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_dropdown_item = resolveComponent('el-dropdown-item')
const _component_el_dropdown_menu = resolveComponent('el-dropdown-menu')
const _component_el_dropdown = resolveComponent('el-dropdown')
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_vxe_column = resolveComponent('vxe-column')
const _component_vxe_table = resolveComponent('vxe-table')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
const _directive_track = resolveDirective('track')
return withDirectives(
(openBlock(),
createElementBlock('div', _hoisted_1$2M, [
createElementVNode('div', _hoisted_2$2w, [
createElementVNode('div', _hoisted_3$2k, [
createElementVNode('span', _hoisted_4$1_, [
_hoisted_5$1P,
createElementVNode('i', {
class: 'iconfont icon-shuaxin',
title: '\u5237\u65B0',
onClick:
_cache[0] ||
(_cache[0] = ($event) =>
initData({ keyWord: keyword.value })),
}),
]),
createElementVNode('div', _hoisted_6$1E, [
createElementVNode('div', _hoisted_7$1p, [
createVNode$1(
_component_el_input,
{
modelValue: keyword.value,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) => (keyword.value = $event)),
class: normalizeClass([
'search-input',
{ active: keyword.value.length > 0 },
]),
placeholder: '\u8BF7\u8F93\u5165\u540D\u79F0',
},
null,
8,
['modelValue', 'class']
),
_hoisted_8$1g,
]),
createVNode$1(
_component_el_dropdown,
{ 'popper-class': 'cms-el-dropdown__popper' },
{
dropdown: withCtx(() => [
createVNode$1(_component_el_dropdown_menu, null, {
default: withCtx(() => [
createVNode$1(
_component_el_dropdown_item,
{ onClick: createProject },
{
default: withCtx(() => [_hoisted_10$18]),
_: 1,
}
),
_ctx.window.electron
? (openBlock(),
createBlock(
_component_el_dropdown_item,
{
key: 0,
onClick: openProject,
},
{
default: withCtx(() => [_hoisted_11$10]),
_: 1,
}
))
: (openBlock(),
createBlock(
_component_el_dropdown_item,
{ key: 1 },
{
default: withCtx(() => [
createElementVNode(
'div',
{
onClick:
_cache[2] ||
(_cache[2] = () => {
importProjectRef.value.click()
}),
},
' \u5BFC\u5165\u672C\u5730\u5DE5\u7A0B '
),
createElementVNode(
'input',
{
ref_key: 'importProjectRef',
ref: importProjectRef,
style: { display: 'none' },
type: 'file',
accept: '.cmsproj',
multiple: '',
onChange:
_cache[3] ||
(_cache[3] = ($event) =>
importProject($event)),
},
null,
544
),
]),
_: 1,
}
)),
]),
_: 1,
}),
]),
default: withCtx(() => [_hoisted_9$1b]),
_: 1,
}
),
createElementVNode('i', {
class: 'iconfont icon-wenjianjia option-add',
title: '\u65B0\u5EFA\u6587\u4EF6\u5939',
onClick: createFolder2,
}),
]),
]),
createElementVNode('div', _hoisted_12$Z, [
createVNode$1(
_component_vxe_table,
{
class: 'cms-vxe-table',
ref_key: 'tableRef',
ref: tableRef,
data: tableData2.value,
height: '100%',
style: { width: '100%' },
'tree-config': {
rowField: 'id',
children: 'child',
iconOpen: 'iconfont icon-xiala',
iconClose: 'iconfont icon-xiala tree--node-close',
},
'empty-text': '\u6682\u65E0\u6570\u636E',
'row-config': { keyField: 'id' },
'row-class-name': ({ row }) => {
if (row.id === activeID.value) return 'active-row'
},
'show-overflow': true,
'column-config': { resizable: true },
'checkbox-config': {
showHeader: true,
checkStrictly: true,
highlight: true,
reserve: true,
checkField: 'checked',
},
onCheckboxChange: checkboxChange,
onCellClick: cellClick,
onToggleTreeExpand: toggleTreeExpand,
'sort-config': {
remote: true,
defaultSort: {
field: 'name',
order: '',
},
},
onSortChange: sortChangeEvent,
},
{
default: withCtx(() => [
createVNode$1(
_component_vxe_column,
{
type: 'checkbox',
width: '60',
onClick:
_cache[5] ||
(_cache[5] = withModifiers(() => {}, ['stop'])),
resizable: false,
},
{
header: withCtx(() => [
(openBlock(),
createBlock(
_component_el_checkbox,
{
key: isAllSelect.value,
class: 'cms-el-checkbox header-checkbox',
checked: isAllSelect.value,
disabled: tableData2.value.length === 0,
onChange:
_cache[4] ||
(_cache[4] = ($event) =>
checkboxAll(!isAllSelect.value)),
},
null,
8,
['checked', 'disabled']
)),
]),
_: 1,
}
),
createVNode$1(
_component_vxe_column,
{
title: '\u540D\u79F0',
field: 'name',
'class-name': 'table-grid-flex',
resizable: '',
sortable: '',
'min-width': '350',
'tree-node': '',
},
{
default: withCtx(({ row }) => [
createElementVNode(
'div',
{
class: 'table-grid-flex-full',
title: row.name,
id: 'detailTable_' + row.id,
},
[
row.type === 0 && row.child.length === 0
? (openBlock(),
createElementBlock('div', _hoisted_14$N, [
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont icon-xiala',
{
'is-active':
expandRow.value.includes(row.id),
},
]),
},
null,
2
),
]))
: createCommentVNode('', true),
(openBlock(),
createElementBlock('svg', _hoisted_15$K, [
row.type === 0
? (openBlock(),
createElementBlock('use', _hoisted_16$J))
: createCommentVNode('', true),
row.type === 1
? (openBlock(),
createElementBlock('use', _hoisted_17$D))
: createCommentVNode('', true),
])),
createElementVNode(
'span',
{
class: normalizeClass({
'invalid-file':
!row.fileAvailableState && row.type !== 0,
}),
},
toDisplayString$1(row.name),
3
),
],
8,
_hoisted_13$S
),
]),
_: 1,
}
),
_ctx.window.electron
? (openBlock(),
createBlock(
_component_vxe_column,
{
key: 0,
title: '\u8DEF\u5F84',
'min-width': '350',
'show-overflow-tooltip': '',
resizable: '',
},
{
default: withCtx((scope) => [
createElementVNode(
'div',
{
class: 'vxe-cell--label',
title: scope.row.path,
},
toDisplayString$1(scope.row.path),
9,
_hoisted_18$y
),
]),
_: 1,
}
))
: createCommentVNode('', true),
createVNode$1(
_component_vxe_column,
{
title: '\u7C7B\u578B',
width: '180',
'show-overflow-tooltip': '',
resizable: '',
},
{
default: withCtx((scope) => [
createElementVNode(
'span',
_hoisted_19$v,
toDisplayString$1(dataType2[scope.row.type]),
1
),
]),
_: 1,
}
),
createVNode$1(_component_vxe_column, {
title: '\u521B\u5EFA\u65F6\u95F4',
sortable: '',
width: '250',
'show-overflow-tooltip': '',
resizable: '',
field: 'updateTime',
formatter: formatter2,
}),
createVNode$1(
_component_vxe_column,
{
title: '\u64CD\u4F5C',
'min-width': '120',
resizable: '',
},
{
default: withCtx((scope) => [
createElementVNode('div', _hoisted_20$t, [
createElementVNode(
'span',
{
onClick:
_cache[6] ||
(_cache[6] = withModifiers(() => {}, [
'stop',
])),
},
[
createVNode$1(
_component_el_dropdown,
{
onCommand: handleCommand,
'popper-class': 'cms-el-dropdown__popper',
disabled:
!scope.row.fileAvailableState &&
scope.row.type !== 0,
},
{
dropdown: withCtx(() => [
createVNode$1(
_component_el_dropdown_menu,
null,
{
default: withCtx(() => [
createVNode$1(
_component_el_dropdown_item,
{
command: {
data: scope.row,
value: '\u79FB\u52A8\u5230',
},
},
{
default: withCtx(() => [
_hoisted_22$m,
]),
_: 2,
},
1032,
['command']
),
createVNode$1(
_component_el_dropdown_item,
{
command: {
data: scope.row,
value: '\u91CD\u547D\u540D',
},
},
{
default: withCtx(() => [
_hoisted_23$j,
]),
_: 2,
},
1032,
['command']
),
scope.row.type === 1
? (openBlock(),
createBlock(
_component_el_dropdown_item,
{
key: 0,
command: {
data: scope.row,
value:
'\u521B\u5EFA\u526F\u672C',
},
},
{
default: withCtx(() => [
_hoisted_24$j,
]),
_: 2,
},
1032,
['command']
))
: createCommentVNode('', true),
scope.row.type === 1 &&
!_ctx.window.electron
? (openBlock(),
createBlock(
_component_el_dropdown_item,
{
key: 1,
command: {
data: scope.row,
value:
'\u5BFC\u51FA\u5DE5\u7A0B',
},
},
{
default: withCtx(() => [
_hoisted_25$f,
]),
_: 2,
},
1032,
['command']
))
: createCommentVNode('', true),
createVNode$1(
_component_el_dropdown_item,
{
command: {
data: scope.row,
value: '\u5220\u9664',
},
class: 'item_delete',
},
{
default: withCtx(() => [
_hoisted_26$e,
]),
_: 2,
},
1032,
['command']
),
scope.row.type === 1
? (openBlock(),
createElementBlock(
'div',
_hoisted_27$e
))
: createCommentVNode('', true),
scope.row.type === 1
? (openBlock(),
createBlock(
_component_el_dropdown_item,
{
key: 3,
command: {
data: scope.row,
value:
'\u6570\u636E\u5907\u4EFD',
},
},
{
default: withCtx(() => [
_hoisted_28$d,
]),
_: 2,
},
1032,
['command']
))
: createCommentVNode('', true),
scope.row.type === 1
? (openBlock(),
createBlock(
_component_el_dropdown_item,
{
key: 4,
command: {
data: scope.row,
value:
'\u6570\u636E\u6062\u590D',
},
},
{
default: withCtx(() => [
_hoisted_29$b,
]),
_: 2,
},
1032,
['command']
))
: createCommentVNode('', true),
]),
_: 2,
},
1024
),
]),
default: withCtx(() => [_hoisted_21$o]),
_: 2,
},
1032,
['disabled']
),
]
),
]),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['data', 'row-class-name']
),
]),
withDirectives(
createElementVNode(
'div',
_hoisted_30$b,
[
createElementVNode(
'button',
{
class: 'btn',
onClick: modifyNodesLevel,
},
'\u79FB\u52A8\u5230'
),
createElementVNode(
'button',
{
class: 'btn btn-danger',
onClick:
_cache[7] ||
(_cache[7] = ($event) => delNode(getCheckRows())),
},
'\u5220\u9664'
),
],
512
),
[
[
vShow,
checkedRow.value.length > 0 && tableData2.value.length > 0,
],
]
),
]),
(openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
modelValue: unref(delNodeDialog).isShow,
'onUpdate:modelValue':
_cache[9] ||
(_cache[9] = ($event) =>
(unref(delNodeDialog).isShow = $event)),
title: '\u786E\u8BA4\u5220\u9664',
width: '490px',
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
key: new Date().toISOString(),
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_31$9, [
unref(choiceHasGroup)
? (openBlock(),
createElementBlock(
'div',
_hoisted_32$9,
'\u786E\u8BA4\u540E\uFF0C\u4ECE\u5217\u8868\u5220\u9664\u6240\u9009\u6587\u4EF6\u548C\u6240\u9009\u6587\u4EF6\u5939\u4E0B\u6240\u6709\u8BB0\u5F55\u3002'
))
: unref(delNodeDialog).data[0].type !== 0
? (openBlock(),
createElementBlock(
'div',
_hoisted_33$9,
' \u786E\u8BA4\u540E\uFF0C\u4ECE\u5217\u8868\u4E2D\u5220\u9664\u9009\u4E2D\u5DE5\u7A0B\u7684\u6253\u5F00\u8BB0\u5F55\u3002 '
))
: unref(delNodeDialog).data[0].type === 0
? (openBlock(),
createElementBlock(
'div',
_hoisted_34$7,
' \u786E\u8BA4\u540E\uFF0C\u4ECE\u5217\u8868\u4E2D\u5220\u9664\u6587\u4EF6\u5939\u4E0B\u6240\u6709\u5DE5\u7A0B\u6587\u4EF6\u8BB0\u5F55\u3002 '
))
: createCommentVNode('', true),
createElementVNode('div', null, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(delNodeDialog).isDelProjectFile,
'onUpdate:modelValue':
_cache[8] ||
(_cache[8] = ($event) =>
(unref(delNodeDialog).isDelProjectFile = $event)),
label:
'\u540C\u65F6\u5220\u9664\u8DEF\u5F84\u4E0B\u7684\u5DE5\u7A0B\u6587\u4EF6',
class: 'cms-el-checkbox',
},
null,
8,
['modelValue']
),
]),
]),
createElementVNode('div', _hoisted_35$7, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: hideDialog,
},
{
default: withCtx(() => [_hoisted_36$6]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_37$6]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
)),
createElementVNode(
'input',
{
type: 'file',
accept: '.cmsbak',
ref_key: 'upLoadFile',
ref: upLoadFile,
onChange: upLoadFunc,
style: { display: 'none' },
},
null,
544
),
createVNode$1(
RenameDialog,
{
ref_key: 'renameDialogRef',
ref: renameDialogRef,
onConfirm: renameConfirm,
},
null,
512
),
createVNode$1(
ModifyLevel,
{
ref_key: 'modifyLevelRef',
ref: modifyLevelRef,
treeData: tableData2.value,
onConfirm: submitFormLevel,
},
null,
8,
['treeData']
),
createVNode$1(
CreateProjectDialog,
{
ref_key: 'projectDialogRef',
ref: projectDialogRef,
onConfirm: createProjectConfirm,
},
null,
512
),
createVNode$1(
_sfc_main$34,
{
ref_key: 'folderDialogRef',
ref: folderDialogRef,
onConfirm: createFolderConfirm,
},
null,
512
),
createVNode$1(
VersionUpdate,
{
ref_key: 'versionUpdateRef',
ref: versionUpdateRef,
onConfirm: versionUpdateConfirm,
},
null,
512
),
createVNode$1(
BackupDialog,
{
ref_key: 'backupDialogRef',
ref: backupDialogRef,
onConfirm: backupConfirm,
},
null,
512
),
createVNode$1(
HandleProjectConflict,
{
ref_key: 'handleProjectConflictRef',
ref: handleProjectConflictRef,
onConfirm: handleProjectConflictConfirm,
onClose: handleProjectConflictClose,
},
null,
512
),
createVNode$1(
TipDialog,
{
ref_key: 'tipDialogRef',
ref: tipDialogRef,
},
null,
512
),
(openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
modelValue: unref(saveFileTip).isShow,
'onUpdate:modelValue':
_cache[11] ||
(_cache[11] = ($event) => (unref(saveFileTip).isShow = $event)),
title: '\u63D0\u793A',
width: '450px',
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
key: new Date().toISOString(),
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_38$5, [
createElementVNode(
'div',
null,
'\u6587\u4EF6\u3010' +
toDisplayString$1(unref(saveFileTip).name) +
'.cmsbak\u3011\u5DF2\u5B58\u5728\uFF0C\u662F\u5426\u66FF\u6362',
1
),
]),
createElementVNode('div', _hoisted_39$4, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick:
_cache[10] ||
(_cache[10] = ($event) =>
(unref(saveFileTip).isShow = false)),
},
{
default: withCtx(() => [_hoisted_40$4]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: unref(saveFileTip).confirm,
},
{
default: withCtx(() => [_hoisted_41$4]),
_: 1,
},
8,
['onClick']
),
]),
]),
_: 1,
},
8,
['modelValue']
)),
createVNode$1(
RecoveryDataDialog,
{
ref_key: 'recoveryDataDialogRef',
ref: recoveryDataDialogRef,
onConfirm: recoveryDataDialogConfirm,
},
null,
512
),
])),
[
[
_directive_track,
{
moduleType: '\u6807\u51C6\u6A21\u5757',
moduleCode: '\u4E3B\u6846\u67B6',
pageCode: '\u5DE5\u7A0B\u7BA1\u7406',
},
'page',
],
]
)
}
},
})
var Projects = /* @__PURE__ */ _export_sfc(_sfc_main$2_, [
['__scopeId', 'data-v-2440f914'],
])
var Projects$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Projects,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Project_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$2L = { class: 'project' }
const _hoisted_2$2v = { class: 'main' }
const _hoisted_3$2j = { class: 'nav' }
const _hoisted_4$1Z = ['onClick']
const _sfc_main$2Z = /* @__PURE__ */ defineComponent({
setup(__props2) {
const router2 = useRouter()
const route = useRoute()
const list2 = computed(() => {
let projectId = app.current.project.id
return [
{
path: `/editing/project/${projectId}/vars`,
label: '\u53D8\u91CF',
alias: 'vars',
icon: 'icon-bianliang',
},
{
path: `/editing/project/${projectId}/page`,
label: '\u9875\u9762',
alias: 'page',
icon: 'icon-huamian',
},
{
path: `/editing/project/${projectId}/history`,
label: '\u5386\u53F2\u5E93',
alias: 'history',
icon: 'icon-lishiku',
},
{
path: `/editing/project/${projectId}/basis`,
label: '\u57FA\u7840',
alias: 'basis',
icon: 'icon-jichu',
},
{
path: `/editing/project/${projectId}/data`,
label: '\u6570\u636E',
alias: 'data',
icon: 'icon-shuju',
},
{
path: `/editing/project/${projectId}/alarm`,
label: '\u62A5\u8B66',
alias: 'alarm',
icon: 'icon-baojing',
},
{
path: `/editing/project/${projectId}/lang`,
label: '\u591A\u8BED\u8A00',
alias: 'lang',
icon: 'icon-duoyuyan',
},
{
path: `/editing/project/${projectId}/connection`,
label: '\u4E92\u8054',
alias: 'connection',
icon: 'icon-hulian',
},
]
})
let currentName = ref('')
function click2(item2) {
currentName.value = item2.alias
router2.replace(item2)
}
onBeforeRouteUpdate(async (to, from) => {
if (to.params.projectId !== from.params.projectId) {
let projectId = to.params.projectId + ''
await app.setCurrentProject({
id: projectId + '',
})
await Promise.all([getHomePageId(), getPageTreeData()])
}
return true
})
onBeforeRouteLeave(() => {
app.current.project.current.pageList = []
})
onMounted(async () => {
if (editing) {
currentName.value = route.name
}
})
return (_ctx, _cache) => {
const _component_router_view = resolveComponent('router-view')
return (
openBlock(),
createElementBlock('div', _hoisted_1$2L, [
createVNode$1(Header$4),
createElementVNode('div', _hoisted_2$2v, [
createElementVNode('nav', _hoisted_3$2j, [
createElementVNode('ul', null, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(list2.value, (item2, i2) => {
return (
openBlock(),
createElementBlock(
'li',
{
key: i2,
class: normalizeClass({
active: currentName.value === item2.alias,
}),
onClick: ($event) => click2(item2),
},
[
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont',
`${item2.icon}`,
]),
},
null,
2
),
createTextVNode(
' ' + toDisplayString$1(item2.label),
1
),
],
10,
_hoisted_4$1Z
)
)
}),
128
)),
]),
]),
createVNode$1(_component_router_view, { class: 'content' }),
]),
])
)
}
},
})
var Project = /* @__PURE__ */ _export_sfc(_sfc_main$2Z, [
['__scopeId', 'data-v-c6710ed2'],
])
var Project$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Project,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var VarReferenceListCheck_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$2K = { class: 'dialog-content' }
const _hoisted_2$2u = { class: 'filter' }
const _hoisted_3$2i = { class: 'mr-10' }
const _hoisted_4$1Y = /* @__PURE__ */ createTextVNode(' \u6A21\u5757\uFF1A ')
const _hoisted_5$1O = { class: 'mr-10' }
const _hoisted_6$1D = /* @__PURE__ */ createTextVNode(' \u7C7B\u578B\uFF1A ')
const _hoisted_7$1o = { class: 'el-dialog__footer' }
const _hoisted_8$1f = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _sfc_main$2Y = /* @__PURE__ */ defineComponent({
props: {
variableName: null,
},
emits: ['update:modelValue'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const close2 = () => {
emit2('update:modelValue', false)
}
let tableData2 = ref([])
const initFilterData = () => {
return {
moduleName: '\u4E0D\u9650',
type: '\u4E0D\u9650',
keyword: '',
}
}
let filterData = ref(initFilterData())
const clear2 = () => {
filterData.value = initFilterData()
modelChange(filterData.value.type)
getTableList()
}
const search2 = () => getTableList()
let modelOps = ref(['\u4E0D\u9650'])
let modelTypeMap = ref({
不限: ['\u4E0D\u9650'],
})
let typeOps = ref(modelTypeMap.value[modelOps.value[0]])
const modelChange = (val2) => {
typeOps.value = modelTypeMap.value[val2]
filterData.value.type = typeOps.value[0]
}
const getModuleList2 = async () => {
const moduleList = await request.get(
'/api/v1/variablereference/modulenamelist'
)
modelOps.value = ['\u4E0D\u9650'].concat(moduleList)
}
const getTypeList = async () => {
const typeList = await request.get('/api/v1/variablereference/typelist')
modelOps.value.forEach((item2) => {
modelTypeMap.value[item2] = ['\u4E0D\u9650']
})
typeList.forEach((e2) => {
modelTypeMap.value[e2.module].push(e2.type)
})
typeOps.value = modelTypeMap.value['\u4E0D\u9650']
}
const getTableList = async () => {
const { keyword, moduleName, type: type4 } = filterData.value
const params2 = {
keyword,
type: type4 == '\u4E0D\u9650' ? '' : type4,
moduleName: moduleName == '\u4E0D\u9650' ? '' : moduleName,
}
tableData2.value = await request.get(
`/api/v1/variablereference/findvariablereference/${$props2.variableName}`,
{ params: params2 }
)
}
onMounted(async () => {
getModuleList2()
await getTypeList()
await getTableList()
})
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input = resolveComponent('el-input')
const _component_vxe_column = resolveComponent('vxe-column')
const _component_vxe_table = resolveComponent('vxe-table')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'custom-class': 'cms-el-dialog',
width: '690px',
title: '\u5F15\u7528\u5217\u8868',
'append-to-body': '',
'close-on-click-modal': false,
onClose: close2,
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$2K, [
createElementVNode('div', _hoisted_2$2u, [
createElementVNode('span', _hoisted_3$2i, [
_hoisted_4$1Y,
createVNode$1(
_component_el_select,
{
modelValue: filterData.value.moduleName,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(filterData.value.moduleName = $event)),
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
placeholder: '\u8BF7\u9009\u62E9',
style: { width: '86px' },
onChange: modelChange,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(modelOps.value, (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2,
value: item2,
},
null,
8,
['value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
createElementVNode('span', _hoisted_5$1O, [
_hoisted_6$1D,
createVNode$1(
_component_el_select,
{
modelValue: filterData.value.type,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(filterData.value.type = $event)),
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
placeholder: '\u8BF7\u9009\u62E9',
style: { width: '86px' },
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(typeOps.value, (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2,
value: item2,
},
null,
8,
['value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
createVNode$1(
_component_el_input,
{
class: 'cms-el-input keyword-input',
placeholder: '\u8BF7\u8F93\u5165\u5173\u952E\u8BCD',
modelValue: filterData.value.keyword,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(filterData.value.keyword = $event)),
},
null,
8,
['modelValue']
),
createElementVNode(
'button',
{
class: 'cms-btn btn-data-plain primary mr-10',
onClick: search2,
},
'\u67E5\u8BE2'
),
createElementVNode(
'button',
{
class: 'cms-btn btn-data-plain danger',
onClick: clear2,
},
'\u6E05\u9664'
),
]),
createVNode$1(
_component_vxe_table,
{
border: '',
class: 'cms-vxe-table cms-vxe-table-min',
ref: 'levelTable',
'max-height': '600',
'show-overflow': 'tooltip',
data: tableData2.value,
'column-config': { resizable: true },
},
{
default: withCtx(() => [
createVNode$1(_component_vxe_column, {
width: '90',
field: 'moduleName',
title: '\u6A21\u5757',
}),
createVNode$1(_component_vxe_column, {
width: '130',
field: 'groupName',
title: '\u5206\u7EC4',
}),
createVNode$1(_component_vxe_column, {
width: '130',
field: 'type',
title: '\u5F15\u7528\u7C7B\u578B',
}),
createVNode$1(_component_vxe_column, {
field: 'locationDescription',
title: '\u5177\u4F53\u4F4D\u7F6E',
}),
]),
_: 1,
},
8,
['data']
),
]),
createElementVNode('div', _hoisted_7$1o, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: close2,
},
{
default: withCtx(() => [_hoisted_8$1f]),
_: 1,
}
),
]),
]),
_: 1,
}
)
)
}
},
})
var VarReferenceListDialog = /* @__PURE__ */ _export_sfc(_sfc_main$2Y, [
['__scopeId', 'data-v-070c3c92'],
])
var VarReferenceListCheck = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: VarReferenceListDialog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var VarAddressConfig_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$2J = { class: 'dialog-content' }
const _hoisted_2$2t = { class: 'el-dialog__footer' }
const _hoisted_3$2h = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_4$1X = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$2X = /* @__PURE__ */ defineComponent({
props: {
typeName: null,
address: null,
stringLength: null,
},
emits: ['confirm', 'update:modelValue'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const close2 = () => {
emit2('update:modelValue', false)
}
let commonParams = {}
let renderForm = ref([])
const getRenderFormParams = () => {
const filters = renderForm.value.map((e2) => {
const obj = {
key: e2.key,
value: e2.value,
}
if (e2.type == 'select') {
if (e2.value != e2.selectValue?.key) {
obj['isCurrentChanged'] = true
}
}
return obj
})
return filters
}
const confirm2 = async () => {
const params2 = {
...commonParams,
filters: getRenderFormParams(),
layout: previousRecord,
}
const res = await request.post(
'/api/v1/variable/tunnel/io/protocol/validateaddress',
params2
)
if (!res.validated) {
toast(res.error, 'error')
return
}
emit2(
'confirm',
res.address,
res.strLength ? Number(res.strLength) : null
)
close2()
}
const selectChange = () => {
const filters = getRenderFormParams()
getConfig(filters)
}
let previousRecord = null
const getConfig = async (filters = []) => {
const config2 = state$4.activeNodeTunnel?.config
if (!config2) return
commonParams = {
protocalName: config2.protocol,
model: config2.model,
dataType: $props2.typeName,
address: $props2.address,
strLength: $props2.stringLength ? $props2.stringLength + '' : null,
}
const params2 = {
...commonParams,
filters,
previousLayout: previousRecord,
}
const res = await request.post(
'/api/v1/variable/tunnel/io/protocol/getaddressconfiglayout',
params2
)
previousRecord = JSON.parse(JSON.stringify(res))
for (let item2 of res) {
if (item2.type === 'select') {
item2.value = item2?.selectValue?.key || ''
}
}
renderForm.value = res
}
onMounted(() => {
getConfig()
})
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_form = resolveComponent('el-form')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
'close-on-click-modal': false,
title: '\u9009\u62E9\u5730\u5740',
'custom-class': 'cms-el-dialog',
width: '650px',
onClose: close2,
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$2J, [
createVNode$1(
_component_el_form,
{
inline: true,
onSubmit:
_cache[0] ||
(_cache[0] = withModifiers(() => {}, ['prevent'])),
'label-width': 'auto',
'label-position': 'right',
class: 'cms-el-form',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(renderForm.value, (item2) => {
return (
openBlock(),
createBlock(
_component_el_form_item,
{
key: item2.key,
label: item2.name + '\uFF1A',
name: item2.key,
},
{
default: withCtx(() => [
item2.type == 'select'
? (openBlock(),
createBlock(
_component_el_select,
{
key: 0,
modelValue: item2.value,
'onUpdate:modelValue': ($event) =>
(item2.value = $event),
class: 'cms-el-select',
'popper-class':
'cms-el-select__popper',
onChange: selectChange,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
item2.selectValues,
(opt) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: opt.key,
value: opt.key,
label: opt.value,
},
null,
8,
['value', 'label']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue']
))
: createCommentVNode('', true),
item2.type == 'value'
? (openBlock(),
createBlock(
_component_el_input,
{
key: 1,
class: 'cms-el-input',
modelValue: item2.value,
'onUpdate:modelValue': ($event) =>
(item2.value = $event),
placeholder:
'\u8BF7\u8F93\u5165' + item2.name,
},
createSlots({ _: 2 }, [
item2.unit
? {
name: 'append',
fn: withCtx(() => [
createTextVNode(
toDisplayString$1(
item2.unit
),
1
),
]),
}
: void 0,
]),
1032,
[
'modelValue',
'onUpdate:modelValue',
'placeholder',
]
))
: createCommentVNode('', true),
]),
_: 2,
},
1032,
['label', 'name']
)
)
}),
128
)),
]),
_: 1,
}
),
]),
createElementVNode('div', _hoisted_2$2t, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: close2,
},
{
default: withCtx(() => [_hoisted_3$2h]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_4$1X]),
_: 1,
}
),
]),
]),
_: 1,
}
)
)
}
},
})
var AddressConfigDialog = /* @__PURE__ */ _export_sfc(_sfc_main$2X, [
['__scopeId', 'data-v-0ee6868d'],
])
var VarAddressConfig = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: AddressConfigDialog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var VarBatchModify_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$1B = (n2) => (
pushScopeId('data-v-ebbd8e8e'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$2I = { class: 'dialog-content' }
const _hoisted_2$2s = { class: 'panel' }
const _hoisted_3$2g = /* @__PURE__ */ _withScopeId$1B(() =>
/* @__PURE__ */ createElementVNode(
'p',
{ class: 'title' },
'\u53D8\u91CF\u540D\u79F0',
-1
)
)
const _hoisted_4$1W = {
key: 0,
class: 'panel',
}
const _hoisted_5$1N = /* @__PURE__ */ _withScopeId$1B(() =>
/* @__PURE__ */ createElementVNode(
'p',
{ class: 'title' },
'\u6570\u636E\u53CA\u5730\u5740\u914D\u7F6E',
-1
)
)
const _hoisted_6$1C = { class: 'flex' }
const _hoisted_7$1n = { class: 'panel' }
const _hoisted_8$1e = /* @__PURE__ */ _withScopeId$1B(() =>
/* @__PURE__ */ createElementVNode(
'p',
{ class: 'title' },
'\u53D8\u91CF\u5C5E\u6027',
-1
)
)
const _hoisted_9$1a = { class: 'flex' }
const _hoisted_10$17 = { class: 'flex' }
const _hoisted_11$$ = { class: 'flex' }
const _hoisted_12$Y = { class: 'el-dialog__footer' }
const _hoisted_13$R = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_14$M = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$2W = /* @__PURE__ */ defineComponent({
emits: ['confirm', 'update:modelValue'],
setup(__props2, { emit: emit2 }) {
const close2 = () => {
emit2('update:modelValue', false)
}
const limitPIntNumHandle = (key2) => {
form2.value[key2] = limitPIntNum(form2.value[key2])
}
const limitNumberHandle = (key2) => {
form2.value[key2] = limitNumber(form2.value[key2])
}
const addressOps = [
{ value: 0, label: '\u76F8\u540C' },
{ value: 1, label: '\u9012\u589E' },
{ value: 2, label: '\u9012\u51CF' },
]
let targetText = ref('')
let replacedText = ref('')
let form2 = ref({
typeName: '',
address: '',
strLength: '',
eAddressBatchUpdateRule: 0,
replacedVarGroupId: '',
replacedReadWriteMode: null,
replacedReadWriteRule: null,
replacedZoom: '',
enableReplacedZoom: false,
replacedDigit: '',
enableReplacedDigit: false,
replacedInitType: null,
replacedSetValue: '',
})
const tunnelType = computed(() => state$4.activeNodeTunnel?.type || 1)
let tunnelUrl = ''
const renderFormKey = computed(() => {
if (tunnelType.value == 3) {
tunnelUrl = '/api/v1/variable/tunnel/io/protocol/inner/batchupdate'
return {
replacedVarGroupId: true,
typeName: true,
replacedSetValue: true,
replacedInitType: true,
}
}
if (tunnelType.value == 4) {
tunnelUrl = '/api/v1/variable/tunnel/io/protocol/expression/batchupdate'
return {
replacedVarGroupId: true,
typeName: true,
}
}
if (tunnelType.value == 5) {
tunnelUrl = '/api/v1/variable/tunnel/io/protocol/mapping/batchupdate'
return {
replacedVarGroupId: true,
replacedReadWriteMode: true,
}
} else {
tunnelUrl = '/api/v1/variable/tunnel/io/protocol/io/batchupdate'
const keys3 = {}
const excludes = ['replacedSetValue']
Object.keys(form2.value).forEach((key2) => {
if (!excludes.includes(key2)) {
keys3[key2] = true
}
})
return keys3
}
})
const open2 = () => {}
const confirm2 = async () => {
if (
(targetText.value && !replacedText.value) ||
(!targetText.value && replacedText.value)
) {
toast(
'\u8BF7\u8F93\u5165 \u201C\u53D8\u91CF\u6587\u672C\u201D \u548C \u201C\u66FF\u6362\u201D',
'error'
)
return
}
let params2 = {
clientVariables: createRow(state$4.checkedList, tunnelType.value),
targetText: targetText.value,
replacedText: replacedText.value,
}
let alert2 = ''
const intTypeKeys = [
'replacedDigit',
'replacedZoom',
'strLength',
'replacedVarGroupId',
]
for (let key2 of Object.keys(renderFormKey.value)) {
let value2 = form2.value[key2]
if (
key2 == 'replacedInitType' &&
value2 == 1 &&
form2.value.replacedSetValue == ''
) {
alert2 = '\u521D\u59CB\u503C\u4E0D\u80FD\u4E3A\u7A7A'
break
}
if (
key2 == 'enableReplacedZoom' &&
value2 == true &&
form2.value.replacedZoom == '0'
) {
alert2 = '\u7F29\u653E\u6BD4\u9700\u5927\u4E8E0'
break
}
if (key2 == 'address') {
const rule2 = state$4.protocolInfo?.protocalAddressRule
if (rule2 && value2) {
const reg = new RegExp(rule2)
if (!reg.test(value2)) {
alert2 =
'\u53D8\u91CF\u5730\u5740\u4E0D\u6B63\u786E\uFF0C\u8BF7\u91CD\u65B0\u8F93\u5165'
break
}
}
}
if (intTypeKeys.includes(key2)) {
value2 = value2 == '' ? null : Number(value2)
if (form2.value.replacedDigit && !form2.value.enableReplacedDigit) {
value2 = null
}
if (form2.value.replacedZoom && !form2.value.enableReplacedZoom) {
value2 = null
}
}
if (key2 == 'typeName' && !value2) {
value2 = null
}
if (key2 == 'replacedSetValue' && form2.value.replacedInitType !== 1) {
value2 = null
}
params2[key2] = value2
}
if (alert2) {
toast(alert2, 'error')
return
}
if (tunnelType.value === 1) {
const config2 = state$4.activeNodeTunnel?.config || {}
params2['model'] = config2['model']
params2['protocalName'] = config2['protocol']
}
const res = await request.post(tunnelUrl, params2)
emit2('confirm', res)
close2()
}
const addrConfig = reactive({
visible: false,
typeName: '',
address: '',
stringLength: null,
async open() {
if (!form2.value.typeName) {
return toast(
'\u8BF7\u5148\u9009\u62E9\u6570\u636E\u7C7B\u578B',
'error'
)
}
addrConfig.typeName = form2.value.typeName
addrConfig.address = form2.value.address
addrConfig.stringLength = form2.value.strLength
? Number(form2.value.strLength)
: null
addrConfig.visible = true
},
async confirm(address, strLength) {
form2.value.address = address
form2.value.strLength = strLength == null ? '' : strLength + ''
},
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_form = resolveComponent('el-form')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
title: '\u6279\u91CF\u4FEE\u6539',
'close-on-click-modal': false,
'append-to-body': '',
'custom-class': 'cms-el-dialog',
width: '690px',
onOpen: open2,
onClose: close2,
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$2I, [
createVNode$1(
_component_el_form,
{
inline: true,
onSubmit:
_cache[18] ||
(_cache[18] = withModifiers(() => {}, ['prevent'])),
'label-width': '80px',
'label-position': 'right',
class: 'cms-el-form',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$2s, [
_hoisted_3$2g,
createVNode$1(
_component_el_form_item,
{ label: '\u53D8\u91CF\u6587\u672C\uFF1A' },
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: targetText.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(targetText.value = $event)),
placeholder: '\u8BF7\u8F93\u5165',
},
null,
8,
['modelValue']
),
]),
_: 1,
}
),
createVNode$1(
_component_el_form_item,
{ label: '\u66FF\u6362\uFF1A' },
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: replacedText.value,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(replacedText.value = $event)),
placeholder: '\u8BF7\u8F93\u5165',
},
null,
8,
['modelValue']
),
]),
_: 1,
}
),
]),
renderFormKey.value.typeName
? (openBlock(),
createElementBlock('div', _hoisted_4$1W, [
_hoisted_5$1N,
renderFormKey.value.typeName
? (openBlock(),
createBlock(
_component_el_form_item,
{
key: 0,
label: '\u6570\u636E\u7C7B\u578B\uFF1A',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select',
'popper-class': 'cms-el-select_check',
modelValue: form2.value.typeName,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(form2.value.typeName = $event)),
},
{
default: withCtx(() => [
(openBlock(),
createBlock(_component_el_option, {
key: -1,
value: '',
label: '\u8BF7\u9009\u62E9',
})),
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(state$4).dataTypes,
(item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
label: item2,
key: item2,
value: item2,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
_: 1,
}
))
: createCommentVNode('', true),
renderFormKey.value.strLength
? (openBlock(),
createBlock(
_component_el_form_item,
{
key: 1,
label: '\u5B57\u7B26\u957F\u5EA6\uFF1A',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: form2.value.strLength,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(form2.value.strLength = $event)),
disabled: true,
},
null,
8,
['modelValue']
),
]),
_: 1,
}
))
: createCommentVNode('', true),
renderFormKey.value.address
? (openBlock(),
createBlock(
_component_el_form_item,
{
key: 2,
label: '\u53D8\u91CF\u5730\u5740\uFF1A',
},
{
default: withCtx(() => [
createElementVNode(
'span',
_hoisted_6$1C,
[
createVNode$1(
_component_el_input,
{
modelValue: form2.value.address,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(form2.value.address =
$event)),
placeholder: '\u8BF7\u8F93\u5165',
},
null,
8,
['modelValue']
),
createElementVNode('i', {
class:
'iconfont icon-bianjigongcheng picker-icon',
onClick:
_cache[5] ||
(_cache[5] = (...args) =>
unref(addrConfig).open &&
unref(addrConfig).open(
...args
)),
}),
]
),
]),
_: 1,
}
))
: createCommentVNode('', true),
renderFormKey.value.eAddressBatchUpdateRule
? (openBlock(),
createBlock(
_component_el_form_item,
{
key: 3,
label: '\u5904\u7406\u65B9\u5F0F\uFF1A',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select',
'popper-class': 'cms-el-select_check',
modelValue:
form2.value.eAddressBatchUpdateRule,
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) =>
(form2.value.eAddressBatchUpdateRule =
$event)),
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(
addressOps,
(item2) => {
return createVNode$1(
_component_el_option,
{
key: item2,
value: item2.value,
label: item2.label,
},
null,
8,
['value', 'label']
)
}
),
64
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
_: 1,
}
))
: createCommentVNode('', true),
]))
: createCommentVNode('', true),
createElementVNode('div', _hoisted_7$1n, [
_hoisted_8$1e,
renderFormKey.value.replacedVarGroupId
? (openBlock(),
createBlock(
_component_el_form_item,
{
key: 0,
label: '\u53D8\u91CF\u7EC4\uFF1A',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select',
'popper-class': 'cms-el-select_check',
modelValue:
form2.value.replacedVarGroupId,
'onUpdate:modelValue':
_cache[7] ||
(_cache[7] = ($event) =>
(form2.value.replacedVarGroupId =
$event)),
},
{
default: withCtx(() => [
(openBlock(),
createBlock(_component_el_option, {
key: -1,
value: '',
label: '\u8BF7\u9009\u62E9',
})),
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(state$4).groupList,
(item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
label: item2.name,
key: item2.id,
value: item2.id,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
_: 1,
}
))
: createCommentVNode('', true),
renderFormKey.value.replacedZoom
? (openBlock(),
createBlock(
_component_el_form_item,
{
key: 1,
label: '\u7F29\u653E\u6BD4\uFF1A',
},
{
default: withCtx(() => [
createElementVNode('span', _hoisted_9$1a, [
createVNode$1(
_component_el_checkbox,
{
class: 'cms-el-checkbox',
modelValue:
form2.value.enableReplacedZoom,
'onUpdate:modelValue':
_cache[8] ||
(_cache[8] = ($event) =>
(form2.value.enableReplacedZoom =
$event)),
},
null,
8,
['modelValue']
),
createVNode$1(
_component_el_input,
{
modelValue: form2.value.replacedZoom,
'onUpdate:modelValue':
_cache[9] ||
(_cache[9] = ($event) =>
(form2.value.replacedZoom =
$event)),
placeholder: '\u8BF7\u8F93\u5165',
disabled:
!form2.value.enableReplacedZoom,
onInput:
_cache[10] ||
(_cache[10] = ($event) =>
limitNumberHandle('replacedZoom')),
},
null,
8,
['modelValue', 'disabled']
),
]),
]),
_: 1,
}
))
: createCommentVNode('', true),
renderFormKey.value.replacedReadWriteMode
? (openBlock(),
createBlock(
_component_el_form_item,
{
key: 2,
label: '\u8BFB\u5199\u8BBF\u95EE\uFF1A',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select',
'popper-class': 'cms-el-select_check',
modelValue:
form2.value.replacedReadWriteMode,
'onUpdate:modelValue':
_cache[11] ||
(_cache[11] = ($event) =>
(form2.value.replacedReadWriteMode =
$event)),
},
{
default: withCtx(() => [
(openBlock(),
createBlock(_component_el_option, {
key: -1,
value: null,
label: '\u8BF7\u9009\u62E9',
})),
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(Variable)
.readWriteModeTypesMap,
(v4, k2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: k2,
label: k2,
value: v4,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
_: 1,
}
))
: createCommentVNode('', true),
renderFormKey.value.replacedDigit
? (openBlock(),
createBlock(
_component_el_form_item,
{
key: 3,
label: '\u5C0F\u6570\u4F4D\u6570\uFF1A',
},
{
default: withCtx(() => [
createElementVNode('span', _hoisted_10$17, [
createVNode$1(
_component_el_checkbox,
{
class: 'cms-el-checkbox',
modelValue:
form2.value.enableReplacedDigit,
'onUpdate:modelValue':
_cache[12] ||
(_cache[12] = ($event) =>
(form2.value.enableReplacedDigit =
$event)),
},
null,
8,
['modelValue']
),
createVNode$1(
_component_el_input,
{
modelValue: form2.value.replacedDigit,
'onUpdate:modelValue':
_cache[13] ||
(_cache[13] = ($event) =>
(form2.value.replacedDigit =
$event)),
placeholder: '\u8BF7\u8F93\u5165',
disabled:
!form2.value.enableReplacedDigit,
onInput:
_cache[14] ||
(_cache[14] = ($event) =>
limitPIntNumHandle(
'replacedDigit'
)),
},
null,
8,
['modelValue', 'disabled']
),
]),
]),
_: 1,
}
))
: createCommentVNode('', true),
renderFormKey.value.replacedReadWriteRule
? (openBlock(),
createBlock(
_component_el_form_item,
{
key: 4,
label: '\u8BFB\u5199\u89C4\u5219\uFF1A',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select',
'popper-class': 'cms-el-select_check',
modelValue:
form2.value.replacedReadWriteRule,
'onUpdate:modelValue':
_cache[15] ||
(_cache[15] = ($event) =>
(form2.value.replacedReadWriteRule =
$event)),
},
{
default: withCtx(() => [
(openBlock(),
createBlock(_component_el_option, {
key: -1,
value: null,
label: '\u8BF7\u9009\u62E9',
})),
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(Variable)
.readWriteRuleTypesMap,
(v4, k2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: k2,
label: k2,
value: v4,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
_: 1,
}
))
: createCommentVNode('', true),
renderFormKey.value.replacedSetValue
? (openBlock(),
createBlock(
_component_el_form_item,
{
key: 5,
label: '\u521D\u59CB\u503C\uFF1A',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_11$$, [
createVNode$1(
_component_el_input,
{
modelValue:
form2.value.replacedSetValue,
'onUpdate:modelValue':
_cache[16] ||
(_cache[16] = ($event) =>
(form2.value.replacedSetValue =
$event)),
placeholder: '\u8BF7\u8F93\u5165',
style: { 'margin-right': '6px' },
disabled:
form2.value.replacedInitType != 1,
},
null,
8,
['modelValue', 'disabled']
),
createVNode$1(
_component_el_select,
{
class: 'cms-el-select',
'popper-class': 'cms-el-select_check',
modelValue:
form2.value.replacedInitType,
'onUpdate:modelValue':
_cache[17] ||
(_cache[17] = ($event) =>
(form2.value.replacedInitType =
$event)),
},
{
default: withCtx(() => [
(openBlock(),
createBlock(_component_el_option, {
key: -1,
value: null,
label: '\u8BF7\u9009\u62E9',
})),
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(Variable).InitTypeTypesMap,
(v4, k2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: k2,
label: k2,
value: v4,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
]),
_: 1,
}
))
: createCommentVNode('', true),
]),
]),
_: 1,
}
),
unref(addrConfig).visible
? (openBlock(),
createBlock(
AddressConfigDialog,
{
key: 0,
modelValue: unref(addrConfig).visible,
'onUpdate:modelValue':
_cache[19] ||
(_cache[19] = ($event) =>
(unref(addrConfig).visible = $event)),
typeName: unref(addrConfig).typeName,
address: unref(addrConfig).address,
stringLength: unref(addrConfig).stringLength,
onConfirm: unref(addrConfig).confirm,
},
null,
8,
[
'modelValue',
'typeName',
'address',
'stringLength',
'onConfirm',
]
))
: createCommentVNode('', true),
]),
createElementVNode('div', _hoisted_12$Y, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: close2,
},
{
default: withCtx(() => [_hoisted_13$R]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_14$M]),
_: 1,
}
),
]),
]),
_: 1,
}
)
)
}
},
})
var VarBatchModifyDialog = /* @__PURE__ */ _export_sfc(_sfc_main$2W, [
['__scopeId', 'data-v-ebbd8e8e'],
])
var VarBatchModify = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: VarBatchModifyDialog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var VarBatchCreate_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$1A = (n2) => (
pushScopeId('data-v-4dfcbb8f'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$2H = { class: 'dialog-content' }
const _hoisted_2$2r = /* @__PURE__ */ _withScopeId$1A(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u53D8\u91CF\u6A21\u677F\uFF1A',
-1
)
)
const _hoisted_3$2f = /* @__PURE__ */ _withScopeId$1A(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u521B\u5EFA\u4E2A\u6570\uFF1A',
-1
)
)
const _hoisted_4$1V = { class: 'el-dialog__footer' }
const _hoisted_5$1M = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_6$1B = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$2V = /* @__PURE__ */ defineComponent({
props: {
row: null,
},
emits: ['confirm', 'update:modelValue'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const close2 = () => {
emit2('update:modelValue', false)
}
let name2 = ref($props2.row?.name)
let count2 = ref('')
const limitPZNumber = () => {
count2.value = (count2.value + '').replace(/[^\d]/g, '')
}
const confirm2 = async () => {
const number4 = Number(count2.value)
if (!number4) {
toast('\u8BF7\u8F93\u5165\u521B\u5EFA\u4E2A\u6570', 'error')
return
}
const {
config: config2,
tunnelId,
type: type4 = 1,
} = state$4.activeNodeTunnel || {}
if (!$props2.row) return
let params2 = {
number: number4,
tunnelId,
template: createRow([$props2.row], type4)[0],
clientVariables: createRow(state$4.unSaveList, type4),
}
let url2 = '/api/v1/variable/tunnel/io/protocol/inner/batchadd'
if (type4 === 1 && config2) {
params2 = {
...params2,
...{
protocalName: config2.protocol,
model: config2.model,
dataType: $props2.row?.typeName,
strLength: $props2.row?.stringLength
? $props2.row?.stringLength + ''
: null,
},
}
url2 = '/api/v1/variable/tunnel/io/protocol/io/batchadd'
}
const res = await request.post(url2, params2)
const { conflictTagNames = [], tags = [] } = res
if (conflictTagNames.length) {
toast(
`${conflictTagNames.join(
'\u3001'
)}\u53D8\u91CF\u5DF2\u5B58\u5728\uFF0C\u8DF3\u8FC7\u521B\u5EFA\u8BE5\u53D8\u91CF \u5DF2\u8DF3\u8FC7\u5DF2\u5B58\u5728\u53D8\u91CF`,
'success'
)
}
emit2('confirm', tags)
close2()
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
'close-on-click-modal': false,
title: '\u6279\u91CF\u521B\u5EFA',
'custom-class': 'cms-el-dialog',
width: '560px',
onClose: close2,
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$2H, [
_hoisted_2$2r,
createVNode$1(
_component_el_input,
{
modelValue: name2.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (name2.value = $event)),
readonly: '',
disabled: '',
class: 'temp',
},
null,
8,
['modelValue']
),
_hoisted_3$2f,
createVNode$1(
_component_el_input,
{
modelValue: count2.value,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) => (count2.value = $event)),
onInput: limitPZNumber,
placeholder: '\u8BF7\u8F93\u5165',
style: { width: '94px' },
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_4$1V, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: close2,
},
{
default: withCtx(() => [_hoisted_5$1M]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_6$1B]),
_: 1,
}
),
]),
]),
_: 1,
}
)
)
}
},
})
var VarBatchCreateDialog = /* @__PURE__ */ _export_sfc(_sfc_main$2V, [
['__scopeId', 'data-v-4dfcbb8f'],
])
var VarBatchCreate = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: VarBatchCreateDialog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var VarBatchIssue_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$1z = (n2) => (
pushScopeId('data-v-258278cf'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$2G = { class: 'dialog-content' }
const _hoisted_2$2q = /* @__PURE__ */ _withScopeId$1z(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'label' },
'\u4E0B\u53D1\u503C\uFF1A',
-1
)
)
const _hoisted_3$2e = { class: 'el-dialog__footer' }
const _hoisted_4$1U = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_5$1L = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$2U = /* @__PURE__ */ defineComponent({
emits: ['confirm', 'update:modelValue'],
setup(__props2, { emit: emit2 }) {
const close2 = () => {
emit2('update:modelValue', false)
}
let value2 = ref('')
const confirm2 = () => {
emit2('confirm', value2.value)
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
'close-on-click-modal': false,
title: '\u6279\u91CF\u4E0B\u53D1',
'custom-class': 'cms-el-dialog',
width: '450px',
onClose: close2,
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$2G, [
_hoisted_2$2q,
createVNode$1(
_component_el_input,
{
modelValue: value2.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (value2.value = $event)),
placeholder: '\u8BF7\u8F93\u5165',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_3$2e, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: close2,
},
{
default: withCtx(() => [_hoisted_4$1U]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_5$1L]),
_: 1,
}
),
]),
]),
_: 1,
}
)
)
}
},
})
var VarBatchIssueDialog = /* @__PURE__ */ _export_sfc(_sfc_main$2U, [
['__scopeId', 'data-v-258278cf'],
])
var VarBatchIssue = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: VarBatchIssueDialog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Header_vue_vue_type_style_index_0_scoped_true_lang$1 = ''
const _hoisted_1$2F = { class: 'varsHeader' }
const _hoisted_2$2p = { class: 'operations' }
const _hoisted_3$2d = ['innerHTML']
const _hoisted_4$1T = { class: 'el-dialog__footer' }
const _hoisted_5$1K = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_6$1A = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$2T = /* @__PURE__ */ defineComponent({
props: {
noLanguage: { type: Boolean },
TableCom: null,
SidebarCom: null,
},
setup(__props2, { expose }) {
const $props2 = __props2
const importFileConfig = reactive({
visible: false,
mode: 0,
tunnelId: null,
groupId: null,
open() {
importFileConfig.visible = true
},
update(mode2, replace2) {
$props2?.SidebarCom?.importFileSuccess(mode2, replace2)
},
})
let tunnelType = computed(() => state$4.activeNodeTunnel?.type)
const importFile = reactive({
visible: false,
open() {
importFile.visible = true
},
})
const exportVars = () => {
exportFile(0, null, null).then(() => {
toast('\u5BFC\u51FA\u6210\u529F', 'success')
})
}
const varReference = reactive({
visible: false,
variableName: '',
open() {
const { checkedList } = state$4
if (!checkedList.length)
return toast(
'\u8BF7\u9009\u62E9\u8981\u67E5\u770B\u7684\u53D8\u91CF',
'error'
)
if (checkedList.length > 1)
return toast(
'\u8BF7\u9009\u62E9\u4E00\u4E2A\u53D8\u91CF\u8FDB\u884C\u67E5\u770B',
'error'
)
varReference.variableName = checkedList[0].name
varReference.visible = true
},
})
const batchModify = reactive({
visible: false,
open() {
const { checkedList } = state$4
if (!checkedList.length)
return toast(
'\u8BF7\u9009\u62E9\u9700\u8981\u4FEE\u6539\u7684\u53D8\u91CF',
'error'
)
batchModify.visible = true
},
confirm(rows) {
rows.forEach((e2, i2) => {
let sIdx = state$4.unSaveList.indexOf(state$4.checkedList[i2])
Object.assign(state$4.checkedList[i2], {
...state$4.checkedList[i2],
...e2,
...e2.config,
id: state$4.checkedList[i2].id,
})
sIdx >= 0
? state$4.unSaveList.splice(sIdx, 1, state$4.checkedList[i2])
: state$4.unSaveList.push(state$4.checkedList[i2])
})
$props2.TableCom?.loadXTableData()
storageUnSaveRow()
},
})
const batchCreateConfig = reactive({
visible: false,
row: state$4.checkedList[0],
async open() {
if (!state$4?.activeNodeTunnel?.type) return
if (!state$4.checkedList.length || state$4.checkedList.length > 1) {
toast(
'\u8BF7\u9009\u62E9\u4E00\u4E2A\u53D8\u91CF\u4F5C\u4E3A\u6A21\u677F',
'error'
)
return
}
let row = state$4.checkedList[0]
if (!(await rowValidator(row))) {
toast(
'\u6821\u9A8C\u901A\u8FC7\u624D\u53EF\u4F5C\u4E3A\u6A21\u677F',
'error'
)
return
}
batchCreateConfig.row = row
batchCreateConfig.visible = true
},
confirm(tags) {
const newRows = []
tags.forEach((e2) => {
newRows.push({
...e2,
...e2.config,
id: 'new_' + initUtils.createRandomId(),
})
})
state$4.tableData.push(...newRows)
$props2.TableCom?.loadXTableData()
state$4.unSaveList.push(...newRows)
storageUnSaveRow()
},
})
const batchIssue = reactive({
visible: false,
open() {
if (!state$4.checkedList.length) {
toast(
'\u8BF7\u9009\u62E9\u9700\u8981\u4E0B\u53D1\u7684\u53D8\u91CF',
'error'
)
return
}
batchIssue.visible = true
},
confirm(value2) {
if (!value2) {
toast('\u8BF7\u8F93\u5165\u4E0B\u53D1\u503C', 'error')
return
}
state$4.checkedList.forEach((e2) => {
Variable.store[e2.name] = value2
})
},
})
const messageBox2 = reactive({
visible: false,
title: '\u63D0\u793A',
message: '',
confirmHandle: () => {},
close() {
messageBox2.visible = false
},
open({ title, message: message2, confirmHandle }) {
Object.assign(messageBox2, {
visible: true,
title: title || '\u63D0\u793A',
message: message2,
confirmHandle,
})
},
confirm() {
messageBox2.confirmHandle()
},
})
const deleteAlert = () => {
if (!state$4.checkedList.length)
return toast(
'\u8BF7\u9009\u62E9\u8981\u5220\u9664\u7684\u53D8\u91CF',
'error'
)
messageBox2.open({
title: '\u786E\u8BA4\u5220\u9664',
message:
'\u786E\u8BA4\u540E\uFF0C\u4ECE\u5217\u8868\u4E2D\u5220\u9664\u9009\u4E2D\u7684\u53D8\u91CF\u3002',
confirmHandle: deleteConfirm,
})
}
const deleteConfirm = async () => {
await delTableData()
nextTick(() => {
storageUnSaveRow()
$props2.TableCom?.loadXTableData()
$props2.TableCom?.uploadXTableCheck()
messageBox2.close()
toast('\u5220\u9664\u6210\u529F', 'success')
})
}
const add2 = () => {
if (!state$4.activeNode || !state$4.activeNodeTunnel)
return toast(
'\u8BF7\u5148\u9009\u62E9\u9700\u8981\u64CD\u4F5C\u7684\u8282\u70B9',
'error'
)
if (state$4.activeNodeTunnel?.typeTag == 'COM')
return toast(
'\u7AD9\u70B9\u4E0D\u53EF\u6DFB\u52A0\u53D8\u91CF',
'error'
)
let newNode = {
id: 'new_' + initUtils.createRandomId(),
archiveSetting: null,
type: null,
groupId: null,
name: '',
description: '',
typeName: '\u4E8C\u8FDB\u5236\u53D8\u91CF',
readWriteMode: 0,
address: '',
interval: 1e3,
stringLength: null,
zoom: null,
digit: null,
readWriteRule: 1,
scopeType: 0,
initType: 0,
setValue: '',
expression: '',
mappingVariable: '',
}
if (state$4.activeNode.treeType == 'group') {
newNode.groupId = state$4.activeNode.groupId
}
newNode.typeName = state$4.dataTypes[0]
if (
!Variable.checkTypeClassify(['\u6574\u578B', '\u6D6E\u70B9\u578B'], {
label: newNode.typeName,
})
) {
newNode.readWriteRule = 0
}
updateUsedData(newNode)
}
const updateUsedData = (newNode) => {
if (rowFilter(newNode)) state$4.tableData.push(newNode)
$props2.TableCom?.loadXTableData()
state$4.unSaveList.push(newNode)
storageUnSaveRow()
}
const save3 = async () => {
const res = await saveTableData()
state$4.unSaveList = []
nextTick(() => {
storageUnSaveRow()
})
toast('\u4FDD\u5B58\u6210\u529F', 'success')
await $props2.TableCom?.uploadXTableCheck()
await getTableData$1()
$props2.TableCom?.loadXTableData()
return res
}
const reset2 = async () => {
state$4.unSaveList = []
nextTick(() => {
storageUnSaveRow()
})
$props2.TableCom?.clearXTableCheck()
await getTableData$1()
$props2.TableCom?.loadXTableData()
}
const dataTypeClassifyKeyMap = {}
for (let v4 of Object.values(Variable.typeClassifyMap)) {
dataTypeClassifyKeyMap[v4.value] = v4.labels
}
const groupNameMap = {}
watch$1(
() => state$4.groupList,
() => {
for (let item2 of state$4.groupList) {
groupNameMap[item2.id] = item2.name
}
},
{
deep: true,
immediate: true,
}
)
const rowFilter = (row) => {
const keywordFilter = (
{ name: name2, description, groupId },
keyword = state$4.filterData.keyword
) => {
if (!keyword.length) return true
if (name2.indexOf(keyword) >= 0 || description.indexOf(keyword) >= 0)
return true
if (!groupId) return true
if (groupId && groupNameMap[groupId].indexOf(keyword) >= 0) return true
return false
}
const dateTypeFilter = (dataTypeName) => {
const classifyLength = Object.keys(Variable.typeClassifyMap).length
const classifyKeys = state$4.filterData.dataTypes
if ([0, classifyLength].includes(classifyKeys.length)) return true
const classifyLabels = classifyKeys.reduce(
(total2, current2) => total2.concat(dataTypeClassifyKeyMap[current2]),
[]
)
return classifyLabels.includes(dataTypeName)
}
return dateTypeFilter(row.typeName) && keywordFilter(row)
}
const search2 = async () => {
await getTableData$1()
if (state$4.unSaveList.length) {
state$4.tableData = [
...state$4.tableData.filter((item2) => rowFilter(item2)),
]
}
$props2.TableCom?.loadXTableData()
$props2.TableCom?.uploadXTableCheck({ storageCheckedRowIds: false })
}
const clear2 = () => {
state$4.filterData = Object.assign(state$4.filterData, {
dataTypes: [],
usedType: 0,
keyword: '',
})
search2()
}
const debugClose = () => {
if (!state$4.debugging) return
state$4.debugging = false
$props2.TableCom?.refreshColumn()
}
const debugStart = async () => {
if (state$4.unSaveList.length) {
messageBox2.open({
title: '\u542F\u52A8\u8C03\u8BD5',
message:
'\u5F53\u524D\u5DE5\u7A0B\u672A\u4FDD\u5B58\uFF0C\u542F\u52A8\u524D\u8BF7\u4FDD\u5B58\u5DE5\u7A0B\u3002',
confirmHandle: debugConfirm,
})
return
}
await request.post(`/api/v1/project/service/var/start`)
state$4.debugging = true
$props2.TableCom?.refreshColumn()
}
const debugConfirm = async () => {
messageBox2.close()
await save3()
debugStart()
}
expose({
search: search2,
debugClose,
})
return (_ctx, _cache) => {
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', _hoisted_1$2F, [
createVNode$1(
Filter$2,
{
filterData: unref(state$4).filterData,
noLanguage: $props2?.noLanguage,
onSearch: search2,
onClear: _cache[0] || (_cache[0] = ($event) => clear2()),
},
null,
8,
['filterData', 'noLanguage']
),
createElementVNode('div', _hoisted_2$2p, [
!unref(state$4).debugging
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
unref(tunnelType) != 2
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
createElementVNode('button', {
class: 'iconfont icon-xinjian bg-common',
title: '\u6DFB\u52A0',
onClick: add2,
}),
createElementVNode('button', {
class: 'iconfont icon-piliangtianjia',
title: '\u6279\u91CF\u521B\u5EFA\u53D8\u91CF',
onClick:
_cache[1] ||
(_cache[1] = (...args) =>
unref(batchCreateConfig).open &&
unref(batchCreateConfig).open(...args)),
}),
createElementVNode('button', {
class: 'iconfont icon-qingchu bg-danger',
title: '\u5220\u9664',
onClick: deleteAlert,
}),
createElementVNode('button', {
class: 'iconfont icon-bianliangpiliangchuli',
title: '\u53D8\u91CF\u6279\u91CF\u5904\u7406',
onClick:
_cache[2] ||
(_cache[2] = (...args) =>
unref(batchModify).open &&
unref(batchModify).open(...args)),
}),
createElementVNode('button', {
class: 'iconfont icon-bianliangyinyongliebiao',
title: '\u53D8\u91CF\u5F15\u7528\u5217\u8868',
onClick:
_cache[3] ||
(_cache[3] = (...args) =>
unref(varReference).open &&
unref(varReference).open(...args)),
}),
createElementVNode('button', {
class: 'iconfont icon-daochu2',
title: '\u5BFC\u51FA',
onClick: exportVars,
}),
createElementVNode('button', {
class: 'iconfont icon-daoru',
title: '\u5BFC\u5165',
onClick:
_cache[4] ||
(_cache[4] = (...args) =>
unref(importFileConfig).open &&
unref(importFileConfig).open(...args)),
}),
],
64
))
: createCommentVNode('', true),
createElementVNode(
'button',
{
class: 'cms-btn btn-screen-btn btn-reset',
onClick: save3,
},
'\u4FDD\u5B58'
),
createElementVNode(
'button',
{
class: 'cms-btn btn-screen-btn btn-reset',
onClick: reset2,
},
'\u91CD\u7F6E'
),
createElementVNode(
'button',
{
class: 'cms-btn btn-screen-btn btn-reset divider',
onClick: debugStart,
},
' \u542F\u52A8\u8C03\u8BD5 '
),
],
64
))
: (openBlock(),
createElementBlock(
Fragment,
{ key: 1 },
[
unref(tunnelType) != 2
? (openBlock(),
createElementBlock(
'button',
{
key: 0,
class: 'cms-btn btn-screen-btn btn-reset',
onClick:
_cache[5] ||
(_cache[5] = (...args) =>
unref(batchIssue).open &&
unref(batchIssue).open(...args)),
},
' \u6279\u91CF\u4E0B\u53D1 '
))
: createCommentVNode('', true),
createElementVNode(
'button',
{
class: normalizeClass([
'cms-btn btn-screen-btn btn-reset',
{ divider: unref(tunnelType) != 2 },
]),
onClick: debugClose,
},
' \u505C\u6B62\u8C03\u8BD5 ',
2
),
],
64
)),
]),
createVNode$1(
_component_el_dialog,
{
modelValue: unref(messageBox2).visible,
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) => (unref(messageBox2).visible = $event)),
title: unref(messageBox2).title,
'close-on-click-modal': false,
'append-to-body': '',
width: '450px',
'custom-class': 'cms-el-dialog',
},
{
default: withCtx(() => [
createElementVNode(
'div',
{
class: 'dialog-content',
innerHTML: unref(messageBox2).message,
},
null,
8,
_hoisted_3$2d
),
createElementVNode('div', _hoisted_4$1T, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: unref(messageBox2).close,
},
{
default: withCtx(() => [_hoisted_5$1K]),
_: 1,
},
8,
['onClick']
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: unref(messageBox2).confirm,
},
{
default: withCtx(() => [_hoisted_6$1A]),
_: 1,
},
8,
['onClick']
),
]),
]),
_: 1,
},
8,
['modelValue', 'title']
),
unref(importFileConfig).visible
? (openBlock(),
createBlock(
ImportFileDialog,
{
key: 0,
modelValue: unref(importFileConfig).visible,
'onUpdate:modelValue':
_cache[7] ||
(_cache[7] = ($event) =>
(unref(importFileConfig).visible = $event)),
mode: unref(importFileConfig).mode,
tunnelId: unref(importFileConfig).tunnelId,
groupId: unref(importFileConfig).groupId,
onSuccess: unref(importFileConfig).update,
},
null,
8,
['modelValue', 'mode', 'tunnelId', 'groupId', 'onSuccess']
))
: createCommentVNode('', true),
unref(varReference).visible
? (openBlock(),
createBlock(
VarReferenceListDialog,
{
key: 1,
modelValue: unref(varReference).visible,
'onUpdate:modelValue':
_cache[8] ||
(_cache[8] = ($event) =>
(unref(varReference).visible = $event)),
variableName: unref(varReference).variableName,
},
null,
8,
['modelValue', 'variableName']
))
: createCommentVNode('', true),
unref(batchModify).visible
? (openBlock(),
createBlock(
VarBatchModifyDialog,
{
key: 2,
modelValue: unref(batchModify).visible,
'onUpdate:modelValue':
_cache[9] ||
(_cache[9] = ($event) =>
(unref(batchModify).visible = $event)),
onConfirm: unref(batchModify).confirm,
},
null,
8,
['modelValue', 'onConfirm']
))
: createCommentVNode('', true),
unref(batchCreateConfig).visible
? (openBlock(),
createBlock(
VarBatchCreateDialog,
{
key: 3,
modelValue: unref(batchCreateConfig).visible,
'onUpdate:modelValue':
_cache[10] ||
(_cache[10] = ($event) =>
(unref(batchCreateConfig).visible = $event)),
row: unref(batchCreateConfig).row,
onConfirm: unref(batchCreateConfig).confirm,
},
null,
8,
['modelValue', 'row', 'onConfirm']
))
: createCommentVNode('', true),
unref(batchIssue).visible
? (openBlock(),
createBlock(
VarBatchIssueDialog,
{
key: 4,
modelValue: unref(batchIssue).visible,
'onUpdate:modelValue':
_cache[11] ||
(_cache[11] = ($event) =>
(unref(batchIssue).visible = $event)),
onConfirm: unref(batchIssue).confirm,
},
null,
8,
['modelValue', 'onConfirm']
))
: createCommentVNode('', true),
])
)
}
},
})
var Header$2 = /* @__PURE__ */ _export_sfc(_sfc_main$2T, [
['__scopeId', 'data-v-183c7896'],
])
var Header$3 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Header$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ReadWriteInput_vue_vue_type_style_index_0_scoped_true_lang = ''
const _sfc_main$2S = /* @__PURE__ */ defineComponent({
props: {
name: null,
},
setup(__props2) {
const props2 = __props2
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
ReadWriteInput$2,
mergeProps(props2, {
placeholder: `\${${props2.name || '\u8BF7\u8F93\u5165'}}`,
}),
null,
16,
['placeholder']
)
)
}
},
})
var ReadWriteInput = /* @__PURE__ */ _export_sfc(_sfc_main$2S, [
['__scopeId', 'data-v-1f1a0c02'],
])
var ReadWriteInput$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ReadWriteInput,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Table_vue_vue_type_style_index_0_scoped_true_lang$1 = ''
var Table_vue_vue_type_style_index_1_scoped_true_lang = ''
const _withScopeId$1y = (n2) => (
pushScopeId('data-v-55dcaf38'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$2E = { class: 'tableContent' }
const _hoisted_2$2o = { class: 'table' }
const _hoisted_3$2c = { class: 'vxe-cell--label unhover-cell-label' }
const _hoisted_4$1S = { class: 'vxe-cell--label valid-fail-label' }
const _hoisted_5$1J = /* @__PURE__ */ _withScopeId$1y(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-tishi1 valid-fail-icon' },
null,
-1
)
)
const _hoisted_6$1z = { class: 'vxe-cell--label valid-fail-label' }
const _hoisted_7$1m = /* @__PURE__ */ _withScopeId$1y(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-tishi1 valid-fail-icon' },
null,
-1
)
)
const _hoisted_8$1d = { class: 'vxe-cell--label vxe-cell-select' }
const _hoisted_9$19 = { class: 'flex-row between p0' }
const _hoisted_10$16 = { class: 'flex1' }
const _hoisted_11$_ = ['onClick']
const _hoisted_12$X = { class: 'bc-type flex-row' }
const _hoisted_13$Q = {
key: 0,
class: 'label b',
}
const _hoisted_14$L = {
key: 1,
class: 'label c',
}
const _hoisted_15$J = { class: 'flex-row p0' }
const _hoisted_16$I = {
key: 0,
class: 'flex1 vxe-cell--label valid-fail-label',
}
const _hoisted_17$C = /* @__PURE__ */ _withScopeId$1y(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-tishi1 valid-fail-icon' },
null,
-1
)
)
const _hoisted_18$x = {
key: 1,
class: 'flex1 vxe-cell--label isnot-edit',
}
const _hoisted_19$u = {
class: 'flex1 vxe-cell--label vxe-cell-select inline-select-cell',
}
const _hoisted_20$s = { class: 'flex-row p0' }
const _hoisted_21$n = { class: 'flex1' }
const _hoisted_22$l = {
class: 'inline-select-cell',
style: { flex: '1' },
}
const _hoisted_23$i = { class: 'flex-row between p0' }
const _hoisted_24$i = { class: 'flex1' }
const _hoisted_25$e = ['onClick']
const _hoisted_26$d = { class: 'flex-row between p0' }
const _hoisted_27$d = { class: 'flex1 vxe-cell--label valid-fail-label' }
const _hoisted_28$c = /* @__PURE__ */ _withScopeId$1y(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-tishi1 valid-fail-icon' },
null,
-1
)
)
const _hoisted_29$a = ['onClick']
const _hoisted_30$a = { class: 'flex-row between p0' }
const _hoisted_31$8 = { class: 'vxe-cell--label vxe-cell-select' }
const _hoisted_32$8 = {
key: 1,
class: 'edit-status-unhover pl-10',
}
const _hoisted_33$8 = { class: 'pl-10' }
const _hoisted_34$6 = /* @__PURE__ */ _withScopeId$1y(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'flex-row between' },
[
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u91C7\u96C6\u95F4\u9694(ms)'
),
/* @__PURE__ */ createElementVNode('i', {
class: 'iconfont icon-tishi1 slot-header-icon',
title: '\u91C7\u96C6\u95F4\u9694\u6700\u5C0F\u503C\u4E3A10ms',
'data-tooltip-placement': 'top',
}),
],
-1
)
)
const _hoisted_35$6 = { class: 'vxe-cell--label valid-fail-label' }
const _hoisted_36$5 = /* @__PURE__ */ _withScopeId$1y(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-tishi1 valid-fail-icon' },
null,
-1
)
)
const _hoisted_37$5 = /* @__PURE__ */ _withScopeId$1y(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-tishi1 valid-fail-icon' },
null,
-1
)
)
const _hoisted_38$4 = { key: 1 }
const _hoisted_39$3 = { class: 'vxe-cell--label valid-fail-label' }
const _hoisted_40$3 = /* @__PURE__ */ _withScopeId$1y(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-tishi1 valid-fail-icon' },
null,
-1
)
)
const _hoisted_41$3 = /* @__PURE__ */ _withScopeId$1y(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-tishi1 valid-fail-icon' },
null,
-1
)
)
const _hoisted_42$3 = {
key: 1,
class: 'pl-10',
}
const _hoisted_43$2 = /* @__PURE__ */ _withScopeId$1y(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-tishi1 valid-fail-icon' },
null,
-1
)
)
const _hoisted_44$1 = {
key: 1,
class: 'pl-10',
}
const _hoisted_45$1 = { class: 'flex-row between p0' }
const _hoisted_46$1 = { class: 'flex1' }
const _hoisted_47$1 = ['onClick']
const _sfc_main$2R = /* @__PURE__ */ defineComponent({
setup(__props2, { expose }) {
const AddressConfigDialog2 = defineAsyncComponent(() =>
Promise.resolve().then(function () {
return VarAddressConfig
})
)
const ExpConfigDialog2 = defineAsyncComponent(() =>
Promise.resolve().then(function () {
return ExpConfigDialog$4
})
)
const HistoricArchiveConfigDialog = defineAsyncComponent(() =>
Promise.resolve().then(function () {
return VarHistoricArchiveConfig$1
})
)
const xTable = ref({})
const defaultSelectedRows = ref([])
const isSystemVariableTunnel = computed(
() => state$4.activeNodeTunnel?.type == 2
)
const isReadOnly = (tunnelType, readWriteMode) => {
return (tunnelType && [2, 4].includes(tunnelType)) || readWriteMode == 1
}
const editClosed = async ({ row, column }) => {
const msg = await cellValidator(row, column.property)
if (msg) toast(msg, 'error')
}
const rowClassName = ({ row }) => {
if (row?.validFail) {
return validFailRowClass
}
}
const cellClassName = ({ column, row }) => {
const { property: property2 } = column
if (property2 === 'value') return 'debug-value'
if (row?.validFailMsg?.[property2]) {
return validFailCellClass
}
if (column?.editRender?.enabled === false) {
return 'unhover-cell'
}
}
const getColumnVisible = (field2) => {
const type4 = state$4?.activeNodeTunnel?.type || state$4?.activeNode?.type
if (type4) {
return columnKey[type4].includes(field2)
}
return false
}
const refreshColumn = () => {
nextTick(() => {
xTable.value?.refreshColumn()
})
}
const tableTooltipConfig = {
enterable: true,
contentMethod: ({ column, row, type: type4 }) => {
if (type4 === 'header') {
return null
}
const { property: property2 } = column
if (property2 === 'readWriteRule') {
return Variable.readWriteRuleTypes[row[property2]]
} else if (property2 === 'readWriteMode') {
return Variable.readWriteModeTypes[row[property2]]
} else if (property2 === 'setValue') {
const initType = Variable.InitTypeTypes[row.initType]
return row.setValue === null || row.setValue === ''
? initType
: row.setValue + '-' + initType
} else if (property2 === 'updateTime') {
return Variable.getByName(row.name)?.['updateTime'] || ''
}
return row[property2]
},
}
const uploadXTableCheck = () => {
const records = xTable.value.getCheckboxRecords()
state$4.checkedList = records
}
const clearXTableCheck = () => {
xTable.value.clearCheckboxRow()
uploadXTableCheck()
}
const loadXTableData = (data2 = state$4.tableData) => {
xTable.value.loadData(data2)
}
const selectRef = ref()
const editActived = () => {
setTimeout(() => {
selectRef.value?.toggleMenu?.()
selectRef.value?.select?.()
})
}
const limitNumberHandle = (e2, row, type4) => {
let val2 = limitNumber(row[type4])
row[type4] = val2 === '' ? null : val2
}
const limitPIntNumHandle = (e2, row, type4) => {
let val2 = limitPIntNum(row[type4])
row[type4] = val2 === '' ? null : parseInt(val2)
}
const changeTableDataMsg = async (row, column, type4 = '') => {
if (isNumberType(row.typeName) && row.readWriteRule === 0) {
row.readWriteRule = 1
} else if (!isNumberType(row.typeName)) {
row.readWriteRule = 0
row.digit = null
}
if (isNumberType(row.typeName) && row.zoom === null) {
row.zoom = 1
} else if (!isNumberType(row.typeName)) {
row.zoom = null
if (type4 === 'zoom') {
toast(
'\u8BE5\u53D8\u91CF\u4E0D\u5B58\u5728\u7F29\u653E\u6BD4',
'error'
)
}
}
if (row.zoom !== null && row.zoom !== void 0) {
row.zoom = parseFloat(row.zoom + '')
}
if (!isStringType(row.typeName)) {
row.stringLength = null
}
if (row.initType !== 1) {
row.setValue = null
} else {
if (row?.setValue === null || row.setValue === '') {
if (isTimeType(row.typeName)) {
row.setValue = ''
} else {
row.setValue = '0'
}
}
}
if (type4 == 'typeName' && state$4.activeNodeTunnel?.type === 1) {
cellValidator(row, 'zoom')
cellValidator(row, 'digit')
cellValidator(row, 'readWriteRule')
}
storageUnSaveRowHandle(row)
}
const storageUnSaveRowHandle = (row) => {
let sIdx = state$4.unSaveList.indexOf(row)
sIdx >= 0
? state$4.unSaveList.splice(sIdx, 1, row)
: state$4.unSaveList.push(row)
nextTick(() => {
storageUnSaveRow()
})
}
const isNumberType = (typeName) =>
Variable.checkTypeClassify(['\u6574\u578B', '\u6D6E\u70B9\u578B'], {
label: typeName,
})
const isStringType = (typeName) =>
Variable.checkTypeClassify('\u5B57\u7B26\u4E32', { label: typeName })
const isTimeType = (typeName) =>
Variable.checkTypeClassify('\u65F6\u95F4', { label: typeName })
const addrConfig = reactive({
visible: false,
row: null,
typeName: '',
address: '',
stringLength: null,
async open(row) {
addrConfig.typeName = row.typeName
addrConfig.address = row.address
addrConfig.stringLength = row.stringLength
addrConfig.row = row
addrConfig.visible = true
},
async confirm(address, strLength) {
if (!addrConfig.row) return
addrConfig.row['address'] = address
addrConfig.row['stringLength'] = strLength
cellValidator(addrConfig.row, 'address')
cellValidator(addrConfig.row, 'stringLength')
storageUnSaveRowHandle(addrConfig.row)
},
})
const varReference = reactive({
visible: false,
row: null,
mappingVariable: '',
open(row) {
if (!row.name)
return toast(
'\u8BF7\u5148\u8F93\u5165\u53D8\u91CF\u540D\u79F0',
'error'
)
varReference.row = row
varReference.mappingVariable = row?.mappingVariable || ''
varReference.visible = true
},
cancel() {
varReference.visible = false
},
confirm(rows) {
varReference.visible = false
let row = varReference.row
if (!row || !rows?.length) return
row['mappingVariable'] = rows[0].name
row['typeName'] = rows[0].typeName
storageUnSaveRowHandle(row)
},
})
const expConfig = reactive({
visible: false,
row: null,
code: '',
open(row) {
expConfig.row = row
expConfig.code = row?.expression || ''
expConfig.visible = true
},
confirm(code2) {
expConfig.visible = false
if (!expConfig.row) return
expConfig.row['expression'] = code2
storageUnSaveRowHandle(expConfig.row)
},
})
const historyConfig = reactive({
visible: false,
row: null,
open(row) {
historyConfig.row = row
historyConfig.visible = true
},
confirm(
archiveSetting,
historicGroupId,
historicGroupName,
historicBriefMsg
) {
if (!historyConfig.row) return
Object.assign(historyConfig.row, {
archiveSetting,
historicGroupId,
historicGroupName,
historicBriefMsg,
})
storageUnSaveRowHandle(historyConfig.row)
},
})
expose({
loadXTableData,
uploadXTableCheck,
clearXTableCheck,
refreshColumn,
})
return (_ctx, _cache) => {
const _component_vxe_column = resolveComponent('vxe-column')
const _component_el_input = resolveComponent('el-input')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_vxe_table = resolveComponent('vxe-table')
return (
openBlock(),
createElementBlock('div', _hoisted_1$2E, [
createElementVNode('div', _hoisted_2$2o, [
createVNode$1(
_component_vxe_table,
{
class: normalizeClass([
'cms-vxe-table cms-vxe-edit-table',
{ debugging: unref(state$4).debugging },
]),
style: { 'min-width': '100%' },
ref_key: 'xTable',
ref: xTable,
height: '100%',
'row-config': { keyField: 'id', useKey: true },
'show-overflow': 'tooltip',
'show-header-overflow': 'tooltip',
'tooltip-config': unref(tableTooltipConfig),
data: unref(state$4).tableData,
'column-config': { resizable: true },
'edit-config': { trigger: 'click', mode: 'cell' },
onEditActived: editActived,
onEditClosed: editClosed,
'checkbox-config': {
checkRowKeys: defaultSelectedRows.value,
checkField: 'checked',
highlight: true,
},
'scroll-y': { mode: 'wheel', gt: 0 },
onCheckboxChange: uploadXTableCheck,
onCheckboxAll: uploadXTableCheck,
'cell-class-name': cellClassName,
'row-class-name': rowClassName,
},
{
default: withCtx(() => [
createVNode$1(
_component_vxe_column,
{
type: 'checkbox',
width: '60',
visible: !isSystemVariableTunnel.value,
},
null,
8,
['visible']
),
createVNode$1(
_component_vxe_column,
{
width: '80',
title: '\u5E8F\u53F7',
},
{
default: withCtx(({ rowIndex }) => [
createElementVNode(
'span',
_hoisted_3$2c,
toDisplayString$1(rowIndex + 1),
1
),
]),
_: 1,
}
),
createVNode$1(
_component_vxe_column,
{
field: 'name',
title: '\u53D8\u91CF\u540D',
'min-width': '150',
'edit-render': {
autofocus: '.el-input__inner',
autoselect: true,
enabled:
!unref(state$4).debugging &&
!isSystemVariableTunnel.value,
},
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_4$1S, [
createElementVNode(
'span',
null,
toDisplayString$1(row.name),
1
),
_hoisted_5$1J,
]),
]),
edit: withCtx(({ row, column }) => [
createVNode$1(
_component_el_input,
{
modelValue: row.name,
'onUpdate:modelValue': ($event) =>
(row.name = $event),
type: 'text',
ref: (el2) => {
if (el2) selectRef.value = el2
},
spellcheck: false,
onChange: ($event) => changeTableDataMsg(row),
},
null,
8,
['modelValue', 'onUpdate:modelValue', 'onChange']
),
]),
_: 1,
},
8,
['edit-render']
),
createVNode$1(
_component_vxe_column,
{
field: 'description',
title: '\u53D8\u91CF\u63CF\u8FF0',
'min-width': '110',
'edit-render': {
autofocus: '.el-input__inner',
autoselect: true,
enabled:
!unref(state$4).debugging &&
!isSystemVariableTunnel.value,
},
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_6$1z, [
createElementVNode(
'span',
null,
toDisplayString$1(row.description),
1
),
_hoisted_7$1m,
]),
]),
edit: withCtx(({ row, column }) => [
createVNode$1(
_component_el_input,
{
modelValue: row.description,
'onUpdate:modelValue': ($event) =>
(row.description = $event),
ref: (el2) => {
if (el2) selectRef.value = el2
},
type: 'text',
spellcheck: false,
onChange: ($event) => changeTableDataMsg(row),
},
null,
8,
['modelValue', 'onUpdate:modelValue', 'onChange']
),
]),
_: 1,
},
8,
['edit-render']
),
createVNode$1(
_component_vxe_column,
{
field: 'groupId',
title: '\u53D8\u91CF\u7EC4',
'min-width': '180',
'edit-render': {
autofocus: '.el-input__inner',
enabled: !unref(state$4).debugging,
},
visible: !isSystemVariableTunnel.value,
},
createSlots(
{
default: withCtx(({ row }) => [
createElementVNode(
'div',
_hoisted_8$1d,
toDisplayString$1(
unref(state$4).groupList.find(
(e2) => e2.id == row.groupId
)?.name || '-'
),
1
),
]),
_: 2,
},
[
unref(state$4).groupList.length
? {
name: 'edit',
fn: withCtx(({ row, column }) => [
createVNode$1(
_component_el_select,
{
modelValue: row.groupId,
'onUpdate:modelValue': ($event) =>
(row.groupId = $event),
class: 'cms-el-select',
ref: (el2) => {
if (el2) selectRef.value = el2
},
'popper-class': 'cms-el-select__popper',
onChange: ($event) =>
changeTableDataMsg(row),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(state$4).groupList,
(item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
label: item2.name,
key: item2.id,
value: item2.id,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
[
'modelValue',
'onUpdate:modelValue',
'onChange',
]
),
]),
}
: void 0,
]
),
1032,
['edit-render', 'visible']
),
createVNode$1(
_component_vxe_column,
{
field: 'typeName',
title: '\u6570\u636E\u7C7B\u578B',
'min-width': '180',
'edit-render': {
autofocus: '.el-input__inner',
enabled:
!unref(state$4).debugging &&
!isSystemVariableTunnel.value,
},
},
{
edit: withCtx(({ row, column }) => [
createVNode$1(
_component_el_select,
{
modelValue: row.typeName,
'onUpdate:modelValue': ($event) =>
(row.typeName = $event),
class: 'cms-el-select',
ref: (el2) => {
if (el2) selectRef.value = el2
},
'popper-class': 'cms-el-select__popper',
onChange: ($event) =>
changeTableDataMsg(row, column, 'typeName'),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(state$4).dataTypes,
(item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
label: item2,
key: item2,
value: item2,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue', 'onChange']
),
]),
_: 1,
},
8,
['edit-render']
),
createVNode$1(
_component_vxe_column,
{
field: 'mappingVariable',
title: '\u8FDE\u63A5I/O',
'min-width': '180',
visible: getColumnVisible('mappingVariable'),
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_9$19, [
createElementVNode(
'div',
_hoisted_10$16,
toDisplayString$1(row.mappingVariable),
1
),
createElementVNode(
'i',
{
class:
'iconfont icon-bianjigongcheng edit-icon hover-show',
onClick: withModifiers(
($event) => unref(varReference).open(row),
['stop']
),
},
null,
8,
_hoisted_11$_
),
]),
]),
_: 1,
},
8,
['visible']
),
createVNode$1(
_component_vxe_column,
{
field: 'scopeType',
title: '\u7C7B\u578B',
'min-width': '150',
visible: getColumnVisible('scopeType'),
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_12$X, [
row.scopeType === 0
? (openBlock(),
createElementBlock(
'span',
_hoisted_13$Q,
'\u670D\u52A1\u7AEF'
))
: (openBlock(),
createElementBlock(
'span',
_hoisted_14$L,
'\u5BA2\u6237\u7AEF'
)),
]),
]),
_: 1,
},
8,
['visible']
),
createVNode$1(
_component_vxe_column,
{
field: 'setValue',
title: '\u521D\u59CB\u503C',
'min-width': '200',
'class-name': 'spec_select_cell',
'edit-render': {
autofocus: '.el-input__inner',
enabled: !unref(state$4).debugging,
},
visible: getColumnVisible('setValue'),
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_15$J, [
row.initType == 1
? (openBlock(),
createElementBlock('div', _hoisted_16$I, [
createElementVNode(
'span',
null,
toDisplayString$1(row.setValue),
1
),
_hoisted_17$C,
]))
: (openBlock(),
createElementBlock('div', _hoisted_18$x)),
createElementVNode(
'div',
_hoisted_19$u,
toDisplayString$1(
unref(Variable).InitTypeTypes[row.initType]
),
1
),
]),
]),
edit: withCtx(({ row, column }) => [
createElementVNode('div', _hoisted_20$s, [
createElementVNode('div', _hoisted_21$n, [
row.initType == 1
? (openBlock(),
createBlock(
_component_el_input,
{
key: 0,
modelValue: row.setValue,
'onUpdate:modelValue': ($event) =>
(row.setValue = $event),
controls: false,
onWheel:
_cache[0] ||
(_cache[0] = withModifiers(() => {}, [
'prevent',
])),
ref: (el2) => {
if (el2) selectRef.value = el2
},
onChange: ($event) =>
changeTableDataMsg(row),
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
'onChange',
]
))
: createCommentVNode('', true),
]),
createElementVNode('div', _hoisted_22$l, [
createVNode$1(
_component_el_select,
{
modelValue: row.initType,
'onUpdate:modelValue': ($event) =>
(row.initType = $event),
class: 'cms-el-select',
ref: (el2) => {
if (el2) selectRef.value = el2
},
'popper-class': 'cms-el-select__popper',
onChange: ($event) =>
changeTableDataMsg(row, column.property),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(Variable).InitTypeTypesMap,
(v4, k2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: k2,
label: k2,
value: v4,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue', 'onChange']
),
]),
]),
]),
_: 1,
},
8,
['edit-render', 'visible']
),
createVNode$1(
_component_vxe_column,
{
field: 'expression',
title: '\u903B\u8F91\u8868\u8FBE\u5F0F',
'min-width': '180',
visible: getColumnVisible('expression'),
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_23$i, [
createElementVNode(
'div',
_hoisted_24$i,
toDisplayString$1(row.expression),
1
),
createElementVNode(
'i',
{
class:
'iconfont icon-bianjigongcheng edit-icon hover-show',
onClick: withModifiers(
($event) => unref(expConfig).open(row),
['stop']
),
},
null,
8,
_hoisted_25$e
),
]),
]),
_: 1,
},
8,
['visible']
),
createVNode$1(
_component_vxe_column,
{
field: 'address',
title: '\u53D8\u91CF\u5730\u5740',
'min-width': '180',
'edit-render': {
autofocus: '.el-input__inner',
autoselect: true,
enabled: !unref(state$4).debugging,
},
visible: getColumnVisible('address'),
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_26$d, [
createElementVNode('div', _hoisted_27$d, [
createTextVNode(
toDisplayString$1(row.address) + ' ',
1
),
_hoisted_28$c,
]),
createElementVNode(
'i',
{
class:
'iconfont icon-bianjigongcheng edit-icon hover-show',
onClick: withModifiers(
($event) => unref(addrConfig).open(row),
['stop']
),
},
null,
8,
_hoisted_29$a
),
]),
]),
edit: withCtx(({ row, column }) => [
createElementVNode('div', _hoisted_30$a, [
createVNode$1(
_component_el_input,
{
modelValue: row.address,
'onUpdate:modelValue': ($event) =>
(row.address = $event),
ref: (el2) => {
if (el2) selectRef.value = el2
},
class: 'cms-input flex1',
onChange: ($event) => changeTableDataMsg(row),
},
null,
8,
['modelValue', 'onUpdate:modelValue', 'onChange']
),
]),
]),
_: 1,
},
8,
['edit-render', 'visible']
),
createVNode$1(
_component_vxe_column,
{
field: 'readWriteMode',
title: '\u8BFB\u5199\u8BBF\u95EE',
'min-width': '110',
'edit-render': {
autofocus: '.el-input__inner',
enabled: !unref(state$4).debugging,
},
visible: getColumnVisible('readWriteMode'),
},
{
default: withCtx(({ row }) => [
createElementVNode(
'div',
_hoisted_31$8,
toDisplayString$1(
unref(Variable).readWriteModeTypes[
row.readWriteMode
]
),
1
),
]),
edit: withCtx(({ row, column }) => [
createVNode$1(
_component_el_select,
{
modelValue: row.readWriteMode,
'onUpdate:modelValue': ($event) =>
(row.readWriteMode = $event),
class: 'cms-el-select',
ref: (el2) => {
if (el2) selectRef.value = el2
},
'popper-class': 'cms-el-select__popper',
onChange: ($event) => changeTableDataMsg(row),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(Variable).readWriteModeTypesMap,
(v4, k2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: k2,
label: k2,
value: v4,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue', 'onChange']
),
]),
_: 1,
},
8,
['edit-render', 'visible']
),
createVNode$1(
_component_vxe_column,
{
visible: unref(state$4).debugging,
field: 'value',
title: '\u5F53\u524D\u503C',
'min-width': '110',
'edit-render': {
autofocus: '.variableInput',
autoselect: true,
},
},
{
default: withCtx(({ row }) => [
createElementVNode(
'span',
{
class: normalizeClass(
isReadOnly(row.tunnelType, row.readWriteMode)
? 'pl-10'
: 'vxe-cell--label'
),
},
toDisplayString$1(
unref(Variable).getByName(row.name)?.value
),
3
),
]),
edit: withCtx(({ row }) => [
!isReadOnly(row.tunnelType, row.readWriteMode)
? (openBlock(),
createBlock(
ReadWriteInput,
{
key: 0,
name: row.name,
},
null,
8,
['name']
))
: (openBlock(),
createElementBlock(
'div',
_hoisted_32$8,
toDisplayString$1(
unref(Variable).getByName(row.name)?.value
),
1
)),
]),
_: 1,
},
8,
['visible', 'edit-render']
),
createVNode$1(
_component_vxe_column,
{
visible: unref(state$4).debugging,
field: 'dataQuality',
title: '\u8D28\u91CF\u6233',
'min-width': '110',
},
{
default: withCtx(({ row }) => [
createElementVNode(
'span',
{
class: 'pl-10',
style: normalizeStyle$1([
{
color:
unref(Variable).getByName(row.name)
?.dataQuality === 0
? '#23DBBB'
: '',
},
]),
},
toDisplayString$1(
unref(Variable).getByName(row.name)?.dataQuality
),
5
),
]),
_: 1,
},
8,
['visible']
),
createVNode$1(
_component_vxe_column,
{
visible: unref(state$4).debugging,
field: 'updateTime',
'min-width': '110',
title: '\u6700\u65B0\u53D8\u5316\u65F6\u95F4',
},
{
default: withCtx(({ row }) => [
createElementVNode(
'span',
_hoisted_33$8,
toDisplayString$1(
unref(Variable).getByName(row.name)?.['updateTime']
? unref(dayjs)(
unref(Variable).getByName(row.name)?.[
'updateTime'
]
).format('HH:mm:ss')
: ''
),
1
),
]),
_: 1,
},
8,
['visible']
),
createVNode$1(
_component_vxe_column,
{
field: 'interval',
'min-width': '110',
'edit-render': {
autofocus: '.el-input__inner',
autoselect: true,
enabled: !unref(state$4).debugging,
},
visible: getColumnVisible('interval'),
},
{
header: withCtx(() => [_hoisted_34$6]),
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_35$6, [
createElementVNode(
'span',
null,
toDisplayString$1(row.interval),
1
),
_hoisted_36$5,
]),
]),
edit: withCtx(({ row, column }) => [
createVNode$1(
_component_el_input,
{
modelValue: row.interval,
'onUpdate:modelValue': ($event) =>
(row.interval = $event),
ref: (el2) => {
if (el2) selectRef.value = el2
},
onChange: ($event) => changeTableDataMsg(row),
onInput: ($event) =>
limitPIntNumHandle($event, row, 'interval'),
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
'onChange',
'onInput',
]
),
]),
_: 1,
},
8,
['edit-render', 'visible']
),
createVNode$1(
_component_vxe_column,
{
field: 'stringLength',
title: '\u5B57\u7B26\u957F\u5EA6',
'min-width': '110',
'edit-render': {
autofocus: '.el-input__inner',
autoselect: true,
enabled: !unref(state$4).debugging,
},
visible: getColumnVisible('stringLength'),
},
{
default: withCtx(({ row }) => [
createElementVNode(
'div',
{
class: normalizeClass([
'valid-fail-label pl-10',
{
'vxe-cell--label': isStringType(row.typeName),
},
]),
},
[
createTextVNode(
toDisplayString$1(row.stringLength) + ' ',
1
),
_hoisted_37$5,
],
2
),
]),
edit: withCtx(({ row, column }) => [
isStringType(row.typeName)
? (openBlock(),
createBlock(
_component_el_input,
{
key: 0,
ref: (el2) => {
if (el2) selectRef.value = el2
},
modelValue: row.stringLength,
'onUpdate:modelValue': ($event) =>
(row.stringLength = $event),
onChange: ($event) => changeTableDataMsg(row),
onInput: ($event) =>
limitPIntNumHandle(
$event,
row,
'stringLength'
),
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
'onChange',
'onInput',
]
))
: (openBlock(),
createElementBlock(
'span',
_hoisted_38$4,
toDisplayString$1(row.stringLength),
1
)),
]),
_: 1,
},
8,
['edit-render', 'visible']
),
createVNode$1(
_component_vxe_column,
{
field: 'zoom',
title: '\u7F29\u653E\u6BD4',
'min-width': '110',
'edit-render': {
autofocus: '.el-input__inner',
autoselect: true,
enabled: !unref(state$4).debugging,
},
visible: getColumnVisible('zoom'),
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_39$3, [
createTextVNode(toDisplayString$1(row.zoom) + ' ', 1),
_hoisted_40$3,
]),
]),
edit: withCtx(({ row, column }) => [
createVNode$1(
_component_el_input,
{
modelValue: row.zoom,
'onUpdate:modelValue': ($event) =>
(row.zoom = $event),
ref: (el2) => {
if (el2) selectRef.value = el2
},
onChange: ($event) =>
changeTableDataMsg(row, column, 'zoom'),
onInput: ($event) =>
limitNumberHandle($event, row, 'zoom'),
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
'onChange',
'onInput',
]
),
]),
_: 1,
},
8,
['edit-render', 'visible']
),
createVNode$1(
_component_vxe_column,
{
field: 'digit',
title: '\u5C0F\u6570\u4F4D\u6570',
'min-width': '110',
'edit-render': {
autofocus: '.el-input__inner',
autoselect: true,
enabled: !unref(state$4).debugging,
},
visible: getColumnVisible('digit'),
},
{
default: withCtx(({ row }) => [
createElementVNode(
'div',
{
class: normalizeClass([
'pl-10 valid-fail-label',
{
'vxe-cell--label': isNumberType(row.typeName),
},
]),
},
[
createTextVNode(
toDisplayString$1(row.digit) + ' ',
1
),
_hoisted_41$3,
],
2
),
]),
edit: withCtx(({ row, column }) => [
isNumberType(row.typeName)
? (openBlock(),
createBlock(
_component_el_input,
{
key: 0,
ref: (el2) => {
if (el2) selectRef.value = el2
},
modelValue: row.digit,
'onUpdate:modelValue': ($event) =>
(row.digit = $event),
onChange: ($event) => changeTableDataMsg(row),
onInput: ($event) =>
limitPIntNumHandle($event, row, 'digit'),
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
'onChange',
'onInput',
]
))
: (openBlock(),
createElementBlock(
'span',
_hoisted_42$3,
toDisplayString$1(row.digit),
1
)),
]),
_: 1,
},
8,
['edit-render', 'visible']
),
createVNode$1(
_component_vxe_column,
{
field: 'readWriteRule',
title: '\u8BFB\u5199\u89C4\u5219',
'min-width': '110',
'edit-render': {
autofocus: '.el-input__inner',
enabled: !unref(state$4).debugging,
},
visible: getColumnVisible('readWriteRule'),
},
{
default: withCtx(({ row }) => [
createElementVNode(
'div',
{
class: normalizeClass([
'pl-10 valid-fail-label',
{
'vxe-cell--label vxe-cell-select': isNumberType(
row.typeName
),
},
]),
},
[
createTextVNode(
toDisplayString$1(
unref(Variable).readWriteRuleTypes[
row.readWriteRule
]
) + ' ',
1
),
_hoisted_43$2,
],
2
),
]),
edit: withCtx(({ row, column }) => [
isNumberType(row.typeName)
? (openBlock(),
createBlock(
_component_el_select,
{
key: 0,
class: 'cms-el-select',
ref: (el2) => {
if (el2) selectRef.value = el2
},
modelValue: row.readWriteRule,
'onUpdate:modelValue': ($event) =>
(row.readWriteRule = $event),
'popper-class': 'cms-el-select__popper',
onChange: ($event) => changeTableDataMsg(row),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(Variable).readWriteRuleTypesMap,
(v4, k2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: k2,
label: k2,
value: v4,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue', 'onChange']
))
: (openBlock(),
createElementBlock(
'span',
_hoisted_44$1,
toDisplayString$1(
unref(Variable).readWriteRuleTypes[
row.readWriteRule
]
),
1
)),
]),
_: 1,
},
8,
['edit-render', 'visible']
),
createVNode$1(
_component_vxe_column,
{
field: 'historicBriefMsg',
title: '\u5386\u53F2\u5F52\u6863',
'min-width': '140',
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_45$1, [
createElementVNode(
'div',
_hoisted_46$1,
toDisplayString$1(row?.historicBriefMsg),
1
),
createElementVNode(
'i',
{
class:
'iconfont icon-bianjigongcheng edit-icon hover-show',
onClick: withModifiers(
($event) => unref(historyConfig).open(row),
['stop']
),
},
null,
8,
_hoisted_47$1
),
]),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['class', 'tooltip-config', 'data', 'checkbox-config']
),
]),
unref(addrConfig).visible
? (openBlock(),
createBlock(
unref(AddressConfigDialog2),
{
key: 0,
modelValue: unref(addrConfig).visible,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(addrConfig).visible = $event)),
typeName: unref(addrConfig).typeName,
address: unref(addrConfig).address,
stringLength: unref(addrConfig).stringLength,
onConfirm: unref(addrConfig).confirm,
},
null,
8,
[
'modelValue',
'typeName',
'address',
'stringLength',
'onConfirm',
]
))
: createCommentVNode('', true),
unref(varReference).visible
? (openBlock(),
createBlock(
unref(_sfc_main$6Q),
{
key: 1,
visible: unref(varReference).visible,
noLanguage: true,
filterClientVariables: true,
isAppendToBody: true,
data: {
name: unref(varReference).mappingVariable || '',
},
disabledChannelIndex: 1,
onCancel: unref(varReference).cancel,
onConfirm: unref(varReference).confirm,
},
null,
8,
['visible', 'data', 'onCancel', 'onConfirm']
))
: createCommentVNode('', true),
unref(expConfig).visible
? (openBlock(),
createBlock(
unref(ExpConfigDialog2),
{
key: 2,
modelValue: unref(expConfig).visible,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(expConfig).visible = $event)),
code: unref(expConfig).code,
filterClientVariables: true,
onChange: unref(expConfig).confirm,
},
null,
8,
['modelValue', 'code', 'onChange']
))
: createCommentVNode('', true),
unref(historyConfig).visible
? (openBlock(),
createBlock(
unref(HistoricArchiveConfigDialog),
{
key: 3,
modelValue: unref(historyConfig).visible,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(historyConfig).visible = $event)),
row: unref(historyConfig).row,
onConfirm: unref(historyConfig).confirm,
},
null,
8,
['modelValue', 'row', 'onConfirm']
))
: createCommentVNode('', true),
])
)
}
},
})
var Table$2 = /* @__PURE__ */ _export_sfc(_sfc_main$2R, [
['__scopeId', 'data-v-55dcaf38'],
])
var Table$3 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Table$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Empty_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$2D = { class: 'empty' }
const _hoisted_2$2n = {
key: 0,
class: 'icon',
'aria-hidden': 'true',
}
const _hoisted_3$2b = ['xlink:href']
const _sfc_main$2Q = /* @__PURE__ */ defineComponent({
props: {
title: {
type: String,
required: false,
default: '',
},
icon: {
type: String,
required: false,
default: 'icon-danji',
},
isSvg: {
type: Boolean,
required: false,
default: false,
},
iconColor: {
type: String,
required: false,
default: '#f7942b',
},
},
emits: ['hightLightPages'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const hightLightPages = () => {
emit2('hightLightPages')
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$2D, [
createElementVNode(
'button',
{
class: 'btn btn-add-group fix-center warning-tip',
onClick: hightLightPages,
},
[
__props2.isSvg
? (openBlock(),
createElementBlock('svg', _hoisted_2$2n, [
createElementVNode(
'use',
{
'xlink:href': '#' + __props2.icon,
},
null,
8,
_hoisted_3$2b
),
]))
: (openBlock(),
createElementBlock(
'i',
{
key: 1,
class: normalizeClass(['iconfont', __props2.icon]),
style: normalizeStyle$1({ color: __props2.iconColor }),
},
null,
6
)),
createElementVNode(
'span',
null,
toDisplayString$1(props2.title),
1
),
]
),
])
)
}
},
})
var Empty = /* @__PURE__ */ _export_sfc(_sfc_main$2Q, [
['__scopeId', 'data-v-7d05313a'],
])
var Empty$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Empty,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Vars_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$2C = { class: 'vars' }
const _hoisted_2$2m = { class: 'main' }
const _sfc_main$2P = /* @__PURE__ */ defineComponent({
setup(__props2) {
const SidebarCom = ref()
const TableCom = ref()
const HeaderCom = ref()
let treeLength = ref(0)
const nodeClick = (data2, activeNodeTunnel, length2) => {
state$4.activeNode = data2
state$4.activeNodeTunnel = activeNodeTunnel
treeLength.value = length2
nextTick(async () => {
TableCom.value?.refreshColumn()
await initStateData()
await HeaderCom.value?.search()
if (state$4.unSaveList.length) {
HeaderCom.value?.debugClose()
}
})
}
const tabSwitch = () => {
HeaderCom.value?.debugClose()
}
onBeforeUnmount(() => {
nodeClick(null, null, 0)
HeaderCom.value?.debugClose()
})
return (_ctx, _cache) => {
const _directive_track = resolveDirective('track')
return withDirectives(
(openBlock(),
createElementBlock('div', _hoisted_1$2C, [
createVNode$1(
Header$2,
{
noLanguage: true,
TableCom: TableCom.value,
SidebarCom: SidebarCom.value,
ref_key: 'HeaderCom',
ref: HeaderCom,
},
null,
8,
['TableCom', 'SidebarCom']
),
createElementVNode('section', _hoisted_2$2m, [
createVNode$1(
Sidebar$a,
{
class: 'sidebar',
ref_key: 'SidebarCom',
ref: SidebarCom,
filterData: unref(state$4).filterData,
noLanguage: true,
onNodeClick: nodeClick,
onTabSwitch: tabSwitch,
},
null,
8,
['filterData']
),
unref(state$4).activeNode &&
unref(state$4).activeNode?.typeTag != 'COM'
? (openBlock(),
createBlock(
Table$2,
{
key: 0,
class: 'tableContent',
ref_key: 'TableCom',
ref: TableCom,
},
null,
512
))
: unref(state$4).activeNode &&
unref(state$4).activeNode?.typeTag == 'COM'
? (openBlock(),
createBlock(
Empty,
{
key: 1,
title: '\u6DFB\u52A0\u7AD9\u70B9',
icon: 'icon-tianjiabianliangzu',
'is-svg': true,
onHightLightPages: SidebarCom.value?.createSubTunnelOpen,
},
null,
8,
['onHightLightPages']
))
: (openBlock(),
createBlock(
Empty,
{
key: 2,
title: treeLength.value
? '\u5728\u901A\u9053\u529F\u80FD\u533A\u70B9\u51FB\u4E00\u4E2A\u8282\u70B9\u67E5\u770B'
: '\u6DFB\u52A0\u901A\u9053',
icon: treeLength.value
? 'icon-danji'
: 'icon-tianjiabianliangzu',
'is-svg': !treeLength.value,
onHightLightPages:
_cache[0] ||
(_cache[0] = ($event) =>
treeLength.value
? SidebarCom.value?.hightLight(true)
: SidebarCom.value?.createTunnelOpen()),
},
null,
8,
['title', 'icon', 'is-svg']
)),
]),
])),
[
[
_directive_track,
{
moduleType: '\u6807\u51C6\u6A21\u5757',
moduleCode: '\u53D8\u91CF',
pageCode: '\u53D8\u91CF',
},
'page',
],
]
)
}
},
})
var Vars = /* @__PURE__ */ _export_sfc(_sfc_main$2P, [
['__scopeId', 'data-v-5a2c9190'],
])
var Vars$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Vars,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var LanguageSelect_vue_vue_type_style_index_0_scoped_true_lang = ''
var LanguageSelect_vue_vue_type_style_index_1_lang = ''
const _withScopeId$1x = (n2) => (
pushScopeId('data-v-30e8b493'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$2B = { class: 'lang' }
const _hoisted_2$2l = {
class: 'icon-box flex icon-box_hover',
title: '\u591A\u8BED\u8A00',
}
const _hoisted_3$2a = /* @__PURE__ */ _withScopeId$1x(() =>
/* @__PURE__ */ createElementVNode(
'svg',
{
class: 'icon',
'aria-hidden': 'true',
},
[
/* @__PURE__ */ createElementVNode('use', {
'xlink:href': '#icon-yuyan',
fill: 'red',
}),
],
-1
)
)
const _hoisted_4$1R = { class: 'mask-layer' }
const _hoisted_5$1I = /* @__PURE__ */ _withScopeId$1x(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'bottom-title' },
'\u591A\u8BED\u8A00',
-1
)
)
const _hoisted_6$1y = { class: 'lang-drop-drown-select' }
const _hoisted_7$1l = ['onClick']
const _sfc_main$2O = /* @__PURE__ */ defineComponent({
setup(__props2) {
onMounted(() => {
selectValue.value = app.current.project.current.language.lang
getOptions()
})
Language$1.useChange((lang) => {
selectValue.value = lang.lang
})
let selectValue = ref('')
const options2 = reactive([])
let enableOptions = computed(() => options2.filter((ele) => ele.enable))
const getOptions = async () => {
const resp = await request.get(`/api/v1/multiplelanguage/languagelist`)
const defaultOptions2 = [
{
id: 0,
languageType: 'original',
enable: true,
createDateTime: new Date().toDateString(),
name: '\u539F\u59CB\u6587\u672C',
},
{
id: 0,
languageType: 'auto',
enable: true,
createDateTime: new Date().toDateString(),
name: '\u8DDF\u968F\u7CFB\u7EDF',
},
]
options2.push(...defaultOptions2, ...resp)
}
const selectOptionClick = (value2) => {
selectValue.value = value2
app.current.project.current.language = new Language$1({ lang: value2 })
}
return (_ctx, _cache) => {
const _component_el_scrollbar = resolveComponent('el-scrollbar')
const _component_el_popover = resolveComponent('el-popover')
const _directive_waves = resolveDirective('waves')
return (
openBlock(),
createElementBlock('div', _hoisted_1$2B, [
createVNode$1(
_component_el_popover,
{
placement: 'bottom',
width: 200,
trigger: 'click',
'popper-class': 'lang-select-popper',
},
{
reference: withCtx(() => [
createElementVNode('div', null, [
createElementVNode('div', _hoisted_2$2l, [
_hoisted_3$2a,
withDirectives(
createElementVNode('div', _hoisted_4$1R, null, 512),
[[_directive_waves]]
),
]),
_hoisted_5$1I,
]),
]),
default: withCtx(() => [
createElementVNode('div', _hoisted_6$1y, [
createVNode$1(
_component_el_scrollbar,
{ 'wrap-class': 'cms-srcoll' },
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(enableOptions), (item2, index2) => {
return (
openBlock(),
createElementBlock(
'p',
{
key: index2,
class: normalizeClass([
'option-item',
{
select:
selectValue.value ===
item2.languageType,
},
]),
onClick: withModifiers(
($event) =>
selectOptionClick(item2.languageType),
['stop']
),
},
toDisplayString$1(item2.name),
11,
_hoisted_7$1l
)
)
}),
128
)),
]),
_: 1,
}
),
]),
]),
_: 1,
}
),
])
)
}
},
})
var LanguageSelect = /* @__PURE__ */ _export_sfc(_sfc_main$2O, [
['__scopeId', 'data-v-30e8b493'],
])
var LanguageSelect$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: LanguageSelect,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
let zoomState = reactive({
zoom: 1,
init: 1,
max: 2,
min: 0.2,
step: 0.05,
})
let resizerRectData = ref(null)
const initConfig = (config2) => {
zoomState.zoom = config2.zoom
zoomState.init = config2.init
zoomState.max = config2.max
zoomState.min = config2.min
zoomState.step = config2.step
}
const addZoom = () => {
zoomState.zoom = state$6.current.zoom
if (Number(zoomState.zoom.toFixed(2)) >= zoomState.max) return
zoomState.zoom += zoomState.step
setCanvasZoom(zoomState.zoom)
}
const subtractZoom = () => {
zoomState.zoom = state$6.current.zoom
if (Number(zoomState.zoom.toFixed(2)) <= zoomState.min) return
zoomState.zoom -= zoomState.step
setCanvasZoom(zoomState.zoom)
}
const restoreZoom = () => {
zoomState.zoom = 1
setCanvasZoom(zoomState.zoom)
}
const adaptiveZoom = () => {
const board = document.querySelector('.board')
const body = state$6.document.body
if (board !== null) {
const boardRect = board.getBoundingClientRect()
const clientWidth = boardRect.width
zoomState.zoom = clientWidth / body.styleProxy.width - 0.05
setCanvasZoom(zoomState.zoom)
}
}
const selectionZoom = () => {
const board = document.querySelector('.board')
const resizer = document.querySelector('.resizer')
const scroller = document.querySelector('.canvas-scroller')
if (state$6.current.nodes.length && board && resizer && scroller) {
const boardRect = board.getBoundingClientRect()
const resizerRect = resizer.getBoundingClientRect()
if (!lodash$2.exports.isEqual(resizerRectData.value, resizerRect)) {
resizerRectData.value = resizerRect
}
const clientWidth = boardRect.width - 50
const clientHeight = boardRect.height - 50
const rateWidth = Number(
(clientWidth / resizerRectData.value.width).toFixed(2)
)
const rateHeight = Number(
(clientHeight / resizerRectData.value.height).toFixed(2)
)
zoomState.zoom = rateWidth < rateHeight ? rateWidth : rateHeight
setCanvasZoom(zoomState.zoom >= 2 ? 2 : zoomState.zoom)
setTimeout(() => {
scroller.scrollTop =
parseFloat(resizer.style.top) -
(clientHeight - parseFloat(resizer.style.height)) / 2
scroller.scrollLeft =
parseFloat(resizer.style.left) -
(clientWidth - parseFloat(resizer.style.width)) / 2
}, 0)
}
}
var ZoomSelect_vue_vue_type_style_index_0_scoped_true_lang = ''
var ZoomSelect_vue_vue_type_style_index_1_lang = ''
const _withScopeId$1w = (n2) => (
pushScopeId('data-v-5dcfa806'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$2A = { class: 'zoom' }
const _hoisted_2$2k = { class: 'select_inner' }
const _hoisted_3$29 = { class: 'top' }
const _hoisted_4$1Q = /* @__PURE__ */ _withScopeId$1w(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-xia' },
null,
-1
)
)
const _hoisted_5$1H = /* @__PURE__ */ _withScopeId$1w(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'bottom-title' },
'\u7F29\u653E',
-1
)
)
const _hoisted_6$1x = { class: 'drop-drown-select' }
const _hoisted_7$1k = ['onClick']
const _hoisted_8$1c = { class: 'left' }
const _hoisted_9$18 = { class: 'right' }
const _sfc_main$2N = /* @__PURE__ */ defineComponent({
setup(__props2) {
const options2 = [
{
label: '\u653E\u5927',
value: '++',
keyboard: 'Ctrl+',
},
{
label: '\u7F29\u5C0F',
value: '--',
keyboard: 'Ctrl -',
},
{
label: '50%',
value: 0.5,
keyboard: '',
},
{
label: '100%',
value: 1,
keyboard: 'Ctrl 0',
},
{
label: '200%',
value: 2,
keyboard: '',
},
{
label: '\u9002\u5E94\u753B\u5E03',
value: 'adaptiveZoom',
keyboard: 'Ctrl 1',
},
{
label: '\u7F29\u653E\u81F3\u9009\u533A',
value: 'selectionZoom',
keyboard: 'Ctrl 2',
},
]
const selectOptionClick = (item2) => {
switch (item2.value) {
case '++':
addZoom()
break
case '--':
subtractZoom()
break
case 'selectionZoom':
selectionZoom()
break
case 'adaptiveZoom':
adaptiveZoom()
break
default:
if (typeof item2.value !== 'number') return
setCanvasZoom(item2.value)
}
}
return (_ctx, _cache) => {
const _component_el_scrollbar = resolveComponent('el-scrollbar')
const _component_el_popover = resolveComponent('el-popover')
return (
openBlock(),
createElementBlock('div', _hoisted_1$2A, [
createVNode$1(
_component_el_popover,
{
placement: 'bottom',
width: 200,
trigger: 'click',
'popper-class': 'zoom-select-popper',
},
{
reference: withCtx(() => [
createElementVNode('div', _hoisted_2$2k, [
createElementVNode('div', _hoisted_3$29, [
createTextVNode(
toDisplayString$1(
(unref(state$6).current.zoom * 100).toFixed(0)
) + '% ',
1
),
_hoisted_4$1Q,
]),
_hoisted_5$1H,
]),
]),
default: withCtx(() => [
createElementVNode('div', _hoisted_6$1x, [
createVNode$1(
_component_el_scrollbar,
{ 'wrap-class': 'cms-srcoll' },
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(options2, (item2, index2) => {
return createElementVNode(
'p',
{
key: index2,
class: 'option-item',
onClick: withModifiers(
($event) => selectOptionClick(item2),
['stop']
),
},
[
createElementVNode(
'span',
_hoisted_8$1c,
toDisplayString$1(item2.label),
1
),
createElementVNode(
'span',
_hoisted_9$18,
toDisplayString$1(item2.keyboard),
1
),
],
8,
_hoisted_7$1k
)
}),
64
)),
]),
_: 1,
}
),
]),
]),
_: 1,
}
),
])
)
}
},
})
var ZoomSelect = /* @__PURE__ */ _export_sfc(_sfc_main$2N, [
['__scopeId', 'data-v-5dcfa806'],
])
var ZoomSelect$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ZoomSelect,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
function undo() {
app.current.project.current.page.history.undo()
}
function redo() {
app.current.project.current.page.history.redo()
}
function canUndo() {
return app.current.project.current.page.history.canUndo()
}
function canRedo() {
return app.current.project.current.page.history.canRedo()
}
const operationBtn = [
{
type: 'line',
},
{
title: '\u9884\u89C8',
icon: 'icon-caidanyulan',
code: 'preview',
type: 'btn',
keyboard: 'Alt+P',
},
{
type: 'line',
},
{
title: '\u64A4\u9500',
icon: 'icon-chexiao',
code: 'undo',
type: 'btn',
keyboard: 'Ctrl+Z',
},
{
title: '\u6062\u590D',
icon: 'icon-huifu',
code: 'redo',
type: 'btn',
keyboard: 'Ctrl+Y',
},
{
type: 'line',
},
{
title: '\u590D\u5236',
icon: 'icon-fuzhi',
code: 'copy',
type: 'btn',
keyboard: 'Ctrl+C',
},
{
title: '\u7C98\u8D34',
icon: 'icon-niantie',
code: 'paste',
type: 'btn',
keyboard: 'Ctrl+V',
},
{
title: '\u526A\u5207',
icon: 'icon-jianqie',
code: 'shear',
type: 'btn',
keyboard: 'Ctrl+X',
},
{
type: 'line',
},
{
title: '\u4E0A\u4E00\u5C42',
icon: 'icon-shangyiceng1',
code: 'moveAfter',
type: 'btn',
keyboard: 'Ctrl+[',
},
{
title: '\u4E0B\u4E00\u5C42',
icon: 'icon-xiayiceng1',
code: 'moveBefore',
type: 'btn',
keyboard: 'Ctrl+]',
},
{
title: '\u9876\u5C42',
icon: 'icon-zhiding',
code: 'topZIndex',
type: 'btn',
keyboard: 'Ctrl+Shift+[',
},
{
title: '\u5E95\u5C42',
icon: 'icon-zhidi',
code: 'bottomZIndex',
type: 'btn',
keyboard: 'Ctrl+Shift+]',
},
{
type: 'line',
},
{
title: '\u7EC4\u5408',
icon: 'icon-zuhe',
code: 'combination',
type: 'btn',
keyboard: 'Ctrl+G',
},
{
title: '\u62C6\u5206',
icon: 'icon-chaifen',
code: 'breakUp',
type: 'btn',
keyboard: 'Ctrl+Shift+G',
},
{
type: 'line',
},
{
title: '\u5DE6\u4FA7',
icon: 'icon-zuoce',
code: 'left',
type: 'btn',
keyboard: 'Ctrl+Alt+L',
},
{
title: '\u5C45\u4E2D',
icon: 'icon-juzhong',
code: 'center',
type: 'btn',
keyboard: 'Ctrl+Alt+C',
},
{
title: '\u53F3\u4FA7',
icon: 'icon-youce',
code: 'right',
type: 'btn',
keyboard: 'Ctrl+Alt+R',
},
{
type: 'line',
},
{
title: '\u9876\u90E8',
icon: 'icon-dingbu',
code: 'top',
type: 'btn',
keyboard: 'Ctrl+Alt+T',
},
{
title: '\u4E2D\u90E8',
icon: 'icon-zhongbu',
code: 'middle',
type: 'btn',
keyboard: 'Ctrl+Alt+M',
},
{
title: '\u5E95\u90E8',
icon: 'icon-dibu',
code: 'bottom',
type: 'btn',
keyboard: 'Ctrl+Alt+B',
},
{
type: 'line',
},
{
title: '\u6C34\u5E73',
icon: 'icon-shuiping',
code: 'horizontal',
type: 'btn',
keyboard: 'Ctrl+Shift+H',
},
{
title: '\u5782\u76F4',
icon: 'icon-chuizhi',
code: 'vertical',
type: 'btn',
keyboard: 'Ctrl+Shift+U',
},
{
type: 'line',
},
{
title: '\u7B49\u5BBD',
icon: 'icon-dengkuan',
code: 'setSameWidth',
type: 'btn',
keyboard: 'Ctrl+Alt+W',
},
{
title: '\u7B49\u9AD8',
icon: 'icon-denggao',
code: 'setSameHeight',
type: 'btn',
keyboard: 'Ctrl+Alt+H',
},
{
type: 'line',
},
]
const enableList = computed(() => {
const current2 = state$6.current
let list2 = []
if (current2.nodes.length === 0) {
list2 = []
}
if (current2.nodes.length === 1) {
list2 = [
...list2,
...[
'copy',
'shear',
'left',
'center',
'right',
'top',
'middle',
'bottom',
'locked',
'moveAfter',
'moveBefore',
],
]
let isTop = false
let isBottom = false
for (let i2 = 0, iLen = current2.nodes.length; i2 < iLen; i2++) {
const item2 = current2.nodes[i2]
if (!state$6.document.body.childNodes) break
for (
let n2 = 0, nLen = state$6.document.body.childNodes.length;
n2 < nLen;
n2++
) {
const element = state$6.document.body.childNodes[n2]
if (item2.id === element.id) {
if (n2 === 0) isTop = true
if (n2 === state$6.document.body.childNodes.length - 1)
isBottom = true
}
}
}
if (isTop) list2.push('topZIndex')
if (isBottom) list2.push('bottomZIndex')
if (!isTop && !isBottom) {
list2.push('topZIndex')
list2.push('bottomZIndex')
}
if (current2.nodes[0].is === 'Group') list2.push('breakUp')
}
if (current2.nodes.length >= 2) {
list2 = [
...list2,
...[
'copy',
'shear',
'left',
'center',
'right',
'top',
'middle',
'bottom',
'setSameWidth',
'setSameHeight',
'topZIndex',
'bottomZIndex',
'locked',
'moveAfter',
'moveBefore',
],
]
if (current2.nodes.length > 2) {
list2.push('horizontal')
list2.push('vertical')
}
list2.push('combination')
for (let i2 = 0, iLen = current2.nodes.length; i2 < iLen; i2++) {
const item2 = current2.nodes[i2]
if (item2.is === 'Group') list2.push('breakUp')
}
}
return list2
})
let dragCopyNodeConfig = {
altKey: false,
mousedown: false,
Draging: 'init',
startX: 0,
startY: 0,
thisX: 0,
thisY: 0,
newNodeList: [],
}
const isInputActive = utils.isInputActive
const keyDownHandler = (e2) => {
if (isInputActive()) return
if (e2.altKey) {
dragCopyNodeConfig.altKey = true
if (/^p$/i.test(e2.key)) {
preview()
}
e2.preventDefault()
}
if (e2.ctrlKey && !e2.altKey && /^c$/i.test(e2.key)) {
emptyClipboard()
.then((res) => {
if (res) copyNode$1('copy')
})
.catch(() => {
copyNode$1('copy')
})
e2.preventDefault()
return
}
if (e2.ctrlKey && /^v$/i.test(e2.key)) {
copyClipboardImg()
.then((res) => {
if (!res) pasteNode()
})
.catch(() => {
pasteNode()
})
e2.preventDefault()
return
}
if (e2.ctrlKey && /^x$/i.test(e2.key)) {
copyNode$1('shear')
e2.preventDefault()
return
}
if (!e2.shiftKey && e2.ctrlKey && /^g$/i.test(e2.key)) {
combinationNode()
e2.preventDefault()
return
}
if (e2.shiftKey && e2.ctrlKey && /^g$/i.test(e2.key)) {
splitCurrentNode()
e2.preventDefault()
return
}
if (e2.ctrlKey && /^s$/i.test(e2.key)) {
if (location.href.indexOf('/page') < 0) return
save(false)
e2.preventDefault()
return
}
if (e2.ctrlKey && /^z$/i.test(e2.key) && canUndo()) {
undo()
e2.preventDefault()
return
}
if (e2.ctrlKey && /^y$/i.test(e2.key) && canRedo()) {
redo()
e2.preventDefault()
return
}
if (e2.ctrlKey && /^a$/i.test(e2.key)) {
allSelectNode()
e2.preventDefault()
return
}
if (/^Delete$/.test(e2.key)) {
for (let i2 = 0, iLen = state$6.current.nodes.length; i2 < iLen; i2++) {
const node2 = state$6.current.nodes[i2]
if (!node2.locked) deleteNode(node2)
}
state$6.current.nodes.length = 0
e2.preventDefault()
return
}
if (e2.ctrlKey && /[=+]/.test(e2.key)) {
addZoom()
e2.preventDefault()
return
}
if (e2.ctrlKey && /[-_]/.test(e2.key)) {
subtractZoom()
e2.preventDefault()
return
}
if (e2.ctrlKey && /[0]/.test(e2.key)) {
restoreZoom()
e2.preventDefault()
return
}
if (e2.ctrlKey && !e2.shiftKey && !e2.altKey && /^l$/i.test(e2.key)) {
if (!enableList.value.includes('locked')) return false
lockedComponent(true)
e2.preventDefault()
return
}
if (e2.ctrlKey && e2.shiftKey && /^l$/i.test(e2.key)) {
if (!enableList.value.includes('locked')) return false
lockedComponent(false)
e2.preventDefault()
return
}
if (e2.ctrlKey && e2.altKey && /^l$/i.test(e2.key)) {
if (!enableList.value.includes('left')) return false
setLeft()
e2.preventDefault()
return
}
if (e2.ctrlKey && e2.altKey && /^c$/i.test(e2.key)) {
if (!enableList.value.includes('center')) return false
setMiddle('vertical')
e2.preventDefault()
return
}
if (e2.ctrlKey && e2.altKey && /^r$/i.test(e2.key)) {
if (!enableList.value.includes('right')) return false
setRight()
e2.preventDefault()
return
}
if (e2.ctrlKey && e2.altKey && /^t$/i.test(e2.key)) {
if (!enableList.value.includes('top')) return false
setTop()
e2.preventDefault()
return
}
if (e2.ctrlKey && e2.altKey && /^m$/i.test(e2.key)) {
if (!enableList.value.includes('middle')) return false
setMiddle('horizontal')
e2.preventDefault()
return
}
if (e2.ctrlKey && e2.altKey && /^b$/i.test(e2.key)) {
if (!enableList.value.includes('bottom')) return false
setBottom()
e2.preventDefault()
return
}
if (e2.ctrlKey && e2.shiftKey && /^h$/i.test(e2.key)) {
if (!enableList.value.includes('horizontal')) return false
isometric('horizontal')
e2.preventDefault()
return
}
if (e2.ctrlKey && e2.shiftKey && /^u$/i.test(e2.key)) {
if (!enableList.value.includes('vertical')) return false
isometric('vertical')
e2.preventDefault()
return
}
if (e2.ctrlKey && e2.altKey && /^w$/i.test(e2.key)) {
if (!enableList.value.includes('setSameWidth')) return false
setSameSize('width')
e2.preventDefault()
return
}
if (e2.ctrlKey && e2.altKey && /^h$/i.test(e2.key)) {
if (!enableList.value.includes('setSameHeight')) return false
setSameSize('height')
e2.preventDefault()
return
}
if (!e2.ctrlKey && e2.key === 'ArrowUp') {
moveComponent('top')
e2.preventDefault()
return
}
if (!e2.ctrlKey && e2.key === 'ArrowRight') {
moveComponent('right')
e2.preventDefault()
return
}
if (!e2.ctrlKey && e2.key === 'ArrowDown') {
moveComponent('bottom')
e2.preventDefault()
return
}
if (!e2.ctrlKey && e2.key === 'ArrowLeft') {
moveComponent('left')
e2.preventDefault()
return
}
if (e2.ctrlKey && e2.key === 'ArrowUp') {
moveComponent('top', 10)
e2.preventDefault()
return
}
if (e2.ctrlKey && e2.key === 'ArrowRight') {
moveComponent('right', 10)
e2.preventDefault()
return
}
if (e2.ctrlKey && e2.key === 'ArrowDown') {
moveComponent('bottom', 10)
e2.preventDefault()
return
}
if (e2.ctrlKey && e2.key === 'ArrowLeft') {
moveComponent('left', 10)
e2.preventDefault()
return
}
if (e2.ctrlKey && /^b$/i.test(e2.key)) {
if (!state$6.current.nodes.length) return false
const DOM = document.querySelector('.TextSettings .set-fontWeight')
if (DOM) {
DOM.click()
nextTick(() => {
document.activeElement.blur()
})
}
e2.preventDefault()
return
}
if (e2.ctrlKey && /^i$/i.test(e2.key)) {
if (!state$6.current.nodes.length) return false
const DOM = document.querySelector('.TextSettings .set-fontStyle')
if (DOM) {
DOM.click()
nextTick(() => {
document.activeElement.blur()
})
}
e2.preventDefault()
return
}
if (e2.ctrlKey && /^u$/i.test(e2.key)) {
if (!state$6.current.nodes.length) return false
const DOM = document.querySelector('.TextSettings .set-textDecoration')
if (DOM) {
DOM.click()
nextTick(() => {
document.activeElement.blur()
})
}
e2.preventDefault()
return
}
if (e2.ctrlKey && e2.shiftKey && /[[{]/.test(e2.key)) {
if (!enableList.value.includes('topZIndex')) return false
setZIndex$1('top')
e2.preventDefault()
return
}
if (e2.ctrlKey && e2.shiftKey && /[\]\}]/.test(e2.key)) {
if (!enableList.value.includes('bottomZIndex')) return false
setZIndex$1('bottom')
e2.preventDefault()
return
}
if (e2.ctrlKey && !e2.shiftKey && /[[{]/.test(e2.key)) {
if (!state$6.current.nodes.length) return false
moveZIndex('after')
e2.preventDefault()
return
}
if (e2.ctrlKey && !e2.shiftKey && /[\]\}]/.test(e2.key)) {
if (!state$6.current.nodes.length) return false
moveZIndex('before')
e2.preventDefault()
return
}
if (e2.ctrlKey && /[1]/.test(e2.key)) {
adaptiveZoom()
e2.preventDefault()
return
}
if (e2.ctrlKey && /[2]/.test(e2.key)) {
selectionZoom()
e2.preventDefault()
return
}
}
const keyUpHandler = () => {
dragCopyNodeConfig.altKey = false
}
const mousedownHandler$1 = () => {
dragCopyNodeConfig.mousedown = true
document.addEventListener('mousemove', mousemoveHandler$1, true)
document.addEventListener('mouseup', mouseupHandler$1, true)
}
const mousemoveHandler$1 = (e2) => {
if (dragCopyNodeConfig.altKey && dragCopyNodeConfig.mousedown) {
if (dragCopyNodeConfig.startX === 0 && dragCopyNodeConfig.startY === 0) {
dragCopyNodeConfig.startX = e2.pageX
dragCopyNodeConfig.startY = e2.pageY
dragCopyNodeConfig.thisX = e2.pageX
dragCopyNodeConfig.thisY = e2.pageY
} else {
dragCopyNodeConfig.thisX = e2.pageX
dragCopyNodeConfig.thisY = e2.pageY
}
dragCopyNode()
e2.preventDefault()
return
}
dragCopyNodeConfig.altKey = false
dragCopyNodeConfig.Draging = 'init'
dragCopyNodeConfig.startX = 0
dragCopyNodeConfig.startY = 0
dragCopyNodeConfig.thisX = 0
dragCopyNodeConfig.thisY = 0
dragCopyNodeConfig.newNodeList = []
}
const mouseupHandler$1 = () => {
dragCopyNodeConfig.mousedown = false
}
document.addEventListener('keydown', keyDownHandler, false)
document.addEventListener('keyup', keyUpHandler, true)
document.addEventListener('mousedown', mousedownHandler$1, true)
document.addEventListener(
'wheel',
(e2) => {
if (!e2.ctrlKey) return
e2.preventDefault()
if (isInputActive()) return
if (e2.deltaY > 0) {
subtractZoom()
} else {
addZoom()
}
},
{ passive: false }
)
function dragCopyNode() {
if (dragCopyNodeConfig.Draging !== 'init') return
dragCopyNodeConfig.Draging = 'draging'
for (const currentNode of state$6.current.nodes) {
const parent2 = getParentNode$1(currentNode)
if (!parent2) continue
for (const [n2, targetNode] of parent2.childNodes.entries()) {
if (targetNode.id === currentNode.id) {
const newNode = createNode(currentNode)
let index2 = n2
state$6.document.body.childNodes.splice(index2 + 1, 0, newNode)
break
}
}
}
}
const useSwitch = (listScroll, list2) => {
const scrollable = ref(false)
const navOffset = ref(0)
const scrollPrev = () => {
if (!listScroll.value) return
const listScrollSize = listScroll.value.offsetWidth
const currentOffset = navOffset.value
if (!currentOffset) return
const newOffset =
currentOffset > listScrollSize ? currentOffset - listScrollSize : 0
navOffset.value = newOffset
}
const scrollNext = () => {
if (!listScroll.value || !list2.value) return
const navSize = list2.value.offsetWidth
const listScrollSize = listScroll.value.offsetWidth
const currentOffset = navOffset.value
if (navSize - currentOffset <= listScrollSize) return
const newOffset =
navSize - currentOffset > listScrollSize * 2
? currentOffset + listScrollSize
: navSize - listScrollSize
navOffset.value = newOffset
}
const update3 = () => {
if (!listScroll.value || !list2.value) return
const listScrollSize = listScroll.value.offsetWidth
const navSize = list2.value.offsetWidth
const currentOffset = navOffset.value
if (listScrollSize < navSize) {
const currentOffset2 = navOffset.value
scrollable.value = true
if (navSize - currentOffset2 < listScrollSize) {
navOffset.value = navSize - listScrollSize
}
} else {
scrollable.value = false
if (currentOffset > 0) {
navOffset.value = 0
}
}
}
const _update = lodash$2.exports.debounce(update3, 200)
useResizeObserver(listScroll, _update)
const navStyle = computed(() => {
return {
transform: `translateX(-${navOffset.value}px)`,
}
})
return {
scrollPrev,
scrollNext,
navStyle,
scrollable,
}
}
var Toolbar_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$1v = (n2) => (
pushScopeId('data-v-16f8ccfa'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$2z = /* @__PURE__ */ _withScopeId$1v(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-zuo11' },
null,
-1
)
)
const _hoisted_2$2j = [_hoisted_1$2z]
const _hoisted_3$28 = { class: 'operation-btn save-btn' }
const _hoisted_4$1P = /* @__PURE__ */ _withScopeId$1v(() =>
/* @__PURE__ */ createElementVNode(
'svg',
{
class: 'icon',
'aria-hidden': 'true',
},
[
/* @__PURE__ */ createElementVNode('use', {
'xlink:href': '#icon-baocun1',
fill: 'red',
}),
],
-1
)
)
const _hoisted_5$1G = { class: 'mask-layer' }
const _hoisted_6$1w = { class: 'bottom-title' }
const _hoisted_7$1j = ['title']
const _hoisted_8$1b = ['xlink:href']
const _hoisted_9$17 = ['onClick']
const _hoisted_10$15 = { class: 'bottom-title' }
const _hoisted_11$Z = ['title']
const _hoisted_12$W = {
key: 0,
class: 'mask-layer',
}
const _hoisted_13$P = { class: 'bottom-title' }
const _hoisted_14$K = ['title']
const _hoisted_15$I = {
key: 0,
class: 'mask-layer',
}
const _hoisted_16$H = { class: 'bottom-title' }
const _hoisted_17$B = ['title']
const _hoisted_18$w = /* @__PURE__ */ _withScopeId$1v(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-biaozhunkongjian' },
null,
-1
)
)
const _hoisted_19$t = { class: 'mask-layer' }
const _hoisted_20$r = /* @__PURE__ */ _withScopeId$1v(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'bottom-title' },
'\u7EC4\u4EF6\u7BB1',
-1
)
)
const _hoisted_21$m = /* @__PURE__ */ _withScopeId$1v(() =>
/* @__PURE__ */ createElementVNode('div', { class: 'header-line' }, null, -1)
)
const _hoisted_22$k = { class: 'right-operate' }
const _hoisted_23$h = /* @__PURE__ */ _withScopeId$1v(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-xia' },
null,
-1
)
)
const _hoisted_24$h = [_hoisted_23$h]
const _sfc_main$2M = /* @__PURE__ */ defineComponent({
setup(__props2) {
const isEnable = (item2) => {
if (!item2.code) return false
if (item2.code === 'undo') {
return canUndo()
}
if (item2.code === 'redo') {
return canRedo()
}
if (['paste', 'save', 'preview', 'componentBox'].includes(item2.code))
return true
if (enableList.value.includes(item2.code)) return true
return false
}
const headerFun = (item2) => {
const fun = {
copy: () => {
copyNode$1('copy')
},
paste: () => {
pasteNode()
},
shear: () => {
copyNode$1('shear')
},
left: () => {
setLeft()
},
right: () => {
setRight()
},
center: () => {
setMiddle('vertical')
},
middle: () => {
setMiddle('horizontal')
},
moveAfter: () => {
moveZIndex('after')
},
moveBefore: () => {
moveZIndex('before')
},
top: () => {
setTop()
},
bottom: () => {
setBottom()
},
setSameWidth: () => {
setSameSize('width')
},
setSameHeight: () => {
setSameSize('height')
},
topZIndex: () => {
setZIndex$1('top')
},
bottomZIndex: () => {
setZIndex$1('bottom')
},
horizontal: () => {
isometric('horizontal')
},
vertical: () => {
isometric('vertical')
},
combination: () => {
combinationNode()
},
breakUp: () => {
splitCurrentNode()
},
undo: () => {
undo()
},
redo: () => {
redo()
},
preview: () => {
preview()
},
}
if (item2.code && fun[item2.code]) fun[item2.code]()
}
let expended = toRef(app.viewStatus.toolbar, 'expended')
const toggle2 = () => {
expended.value = !expended.value
}
let saveStatusMap = {
unsaved: '\u4FDD\u5B58',
saved: '\u5DF2\u4FDD\u5B58',
saving: '\u4FDD\u5B58\u4E2D...',
fail: '\u91CD\u65B0\u4FDD\u5B58',
}
let currentSaveStatusText = computed(() => {
let status = app.current.project.moduleSavedStatusMap.Page
return saveStatusMap[status]
})
const save3 = () => {
app.current.project.current.page.save()
}
const componentBoxEnable = computed(() => {
return app.viewStatus.componentBox.show
})
const switchComponentBoxStatus = () => {
app.viewStatus.componentBox.show = !app.viewStatus.componentBox.show
}
const selectedIsAllLocked = computed(() => {
const selectedCanvasNodeList =
app.current.project.current.page.selectedCanvasNodeList || []
if (selectedCanvasNodeList.length === 0) return false
return selectedCanvasNodeList.every((node2) => node2.locked)
})
const lockedInfo = computed(() => {
if (selectedIsAllLocked.value) {
return {
class: 'icon-suoding',
text: '\u9501\u5B9A',
}
}
return {
class: 'icon-kaisuo',
text: '\u89E3\u9501',
}
})
const selectedIsAllHidden = computed(() => {
const selectedCanvasNodeList =
app.current.project.current.page.selectedCanvasNodeList || []
if (selectedCanvasNodeList.length === 0) return true
return selectedCanvasNodeList.some(
(node2) => node2.style.visibility === 'hidden'
)
})
const showInfo = computed(() => {
if (selectedIsAllHidden.value) {
return {
class: 'icon-yincang',
text: '\u9690\u85CF',
}
}
return {
class: 'icon-xianshi',
text: '\u663E\u793A',
}
})
const btnEnable = computed(() => {
return app.current.project.current.page.selectedCanvasNodeList.length
})
const listScroll = ref()
const list2 = ref()
const { scrollPrev, scrollNext, navStyle, scrollable } = useSwitch(
listScroll,
list2
)
return (_ctx, _cache) => {
const _directive_waves = resolveDirective('waves')
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'toolbar flex',
{ expended: unref(expended) },
]),
},
[
createElementVNode(
'div',
{
class: normalizeClass([
'btn-list-wrap',
{ 'is-scrollable': unref(scrollable) },
]),
},
[
unref(scrollable)
? (openBlock(),
createElementBlock(
'span',
{
key: 0,
class: 'prev',
onClick:
_cache[0] ||
(_cache[0] = (...args) =>
unref(scrollPrev) && unref(scrollPrev)(...args)),
},
_hoisted_2$2j
))
: createCommentVNode('', true),
unref(scrollable)
? (openBlock(),
createElementBlock(
'span',
{
key: 1,
class: 'next',
onClick:
_cache[2] ||
(_cache[2] = (...args) =>
unref(scrollNext) && unref(scrollNext)(...args)),
},
[
unref(scrollable)
? (openBlock(),
createElementBlock('i', {
key: 0,
class: 'iconfont icon-you11',
onClick:
_cache[1] ||
(_cache[1] = (...args) =>
unref(scrollPrev) &&
unref(scrollPrev)(...args)),
}))
: createCommentVNode('', true),
]
))
: createCommentVNode('', true),
createElementVNode(
'div',
{
class: 'btn-list-scroll',
ref_key: 'listScroll',
ref: listScroll,
},
[
createElementVNode(
'div',
{
class: 'btn-list',
style: normalizeStyle$1(unref(navStyle)),
ref_key: 'list',
ref: list2,
},
[
createElementVNode('div', _hoisted_3$28, [
createElementVNode(
'div',
{
class: 'icon-box flex icon-box_hover',
title: '\u4FDD\u5B58 Ctrl+S',
onClick: save3,
},
[
_hoisted_4$1P,
withDirectives(
createElementVNode(
'div',
_hoisted_5$1G,
null,
512
),
[[_directive_waves]]
),
]
),
createElementVNode(
'div',
_hoisted_6$1w,
toDisplayString$1(currentSaveStatusText.value),
1
),
]),
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(operationBtn), (item2, i2) => {
return (
openBlock(),
createElementBlock(
Fragment,
null,
[
item2.type === 'btn'
? (openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'operation-btn',
{ 'btn-disable': !isEnable(item2) },
]),
key: i2,
},
[
createElementVNode(
'div',
{
class: normalizeClass([
'icon-box flex',
isEnable(item2)
? 'icon-box_hover'
: '',
]),
title:
item2.title +
(item2.keyboard
? ' ' + item2.keyboard
: ''),
},
[
(openBlock(),
createElementBlock(
'svg',
{
class: normalizeClass(
isEnable(item2)
? 'icon'
: 'icon-off'
),
'aria-hidden': 'true',
},
[
createElementVNode(
'use',
{
'xlink:href':
'#' + item2.icon,
fill: 'red',
},
null,
8,
_hoisted_8$1b
),
],
2
)),
isEnable(item2)
? withDirectives(
(openBlock(),
createElementBlock(
'div',
{
key: 0,
class: 'mask-layer',
onClick: withModifiers(
($event) =>
headerFun(item2),
['stop']
),
},
null,
8,
_hoisted_9$17
)),
[[_directive_waves]]
)
: createCommentVNode('', true),
],
10,
_hoisted_7$1j
),
createElementVNode(
'div',
_hoisted_10$15,
toDisplayString$1(item2.title),
1
),
],
2
))
: createCommentVNode('', true),
item2.type === 'line'
? (openBlock(),
createElementBlock('div', {
class: 'header-line',
key: i2,
}))
: createCommentVNode('', true),
],
64
)
)
}),
256
)),
(openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'operation-btn lock-btn',
{ 'btn-disable': !btnEnable.value },
]),
key: String(selectedIsAllLocked.value),
},
[
createElementVNode(
'div',
{
class: 'icon-box flex icon-box_hover',
title: lockedInfo.value.text,
onClick:
_cache[3] ||
(_cache[3] = ($event) =>
unref(batchSetDeepComponent)(
'locked',
!selectedIsAllLocked.value
)),
},
[
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont',
lockedInfo.value.class,
]),
},
null,
2
),
btnEnable.value
? withDirectives(
(openBlock(),
createElementBlock(
'div',
_hoisted_12$W,
null,
512
)),
[[_directive_waves]]
)
: createCommentVNode('', true),
],
8,
_hoisted_11$Z
),
createElementVNode(
'div',
_hoisted_13$P,
toDisplayString$1(lockedInfo.value.text),
1
),
],
2
)),
(openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'operation-btn show-btn',
{ 'btn-disable': !btnEnable.value },
]),
key: String(selectedIsAllHidden.value),
},
[
createElementVNode(
'div',
{
class: 'icon-box flex icon-box_hover',
title: showInfo.value.text,
onClick:
_cache[4] ||
(_cache[4] = ($event) =>
unref(batchToggleComponentVisible)(
selectedIsAllHidden.value
)),
},
[
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont',
showInfo.value.class,
]),
},
null,
2
),
btnEnable.value
? withDirectives(
(openBlock(),
createElementBlock(
'div',
_hoisted_15$I,
null,
512
)),
[[_directive_waves]]
)
: createCommentVNode('', true),
],
8,
_hoisted_14$K
),
createElementVNode(
'div',
_hoisted_16$H,
toDisplayString$1(showInfo.value.text),
1
),
],
2
)),
(openBlock(),
createElementBlock(
'div',
{
key: String(componentBoxEnable.value),
class: normalizeClass([
'operation-btn component-btn',
{
'component-btn_enabled':
componentBoxEnable.value,
},
]),
title: componentBoxEnable.value
? '\u7EC4\u4EF6\u9762\u677F\u6536\u8D77'
: '\u7EC4\u4EF6\u9762\u677F\u5F39\u8D77',
},
[
createElementVNode(
'div',
{
class: 'icon-box flex icon-box_hover',
onClick: switchComponentBoxStatus,
},
[
_hoisted_18$w,
withDirectives(
createElementVNode(
'div',
_hoisted_19$t,
null,
512
),
[[_directive_waves]]
),
]
),
_hoisted_20$r,
],
10,
_hoisted_17$B
)),
_hoisted_21$m,
],
4
),
],
512
),
],
2
),
createElementVNode('div', _hoisted_22$k, [
createVNode$1(LanguageSelect),
createVNode$1(ZoomSelect),
createElementVNode(
'div',
{
class: 'dir',
onClick: toggle2,
},
_hoisted_24$h
),
]),
],
2
)
)
}
},
})
var Toolbar = /* @__PURE__ */ _export_sfc(_sfc_main$2M, [
['__scopeId', 'data-v-16f8ccfa'],
])
var Toolbar$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Toolbar,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
function DragSidebarWidth() {
const sidebar = app.viewStatus.sidebar
const { min: min3, max: max3 } = sidebar.limit
let expended = toRef(sidebar, 'expended')
let width = toRef(sidebar, 'width')
let dragging = ref(false)
let beginX = 0
const handleMouseDown = (event) => {
event.stopPropagation()
event.preventDefault()
dragging.value = true
beginX = event.clientX
const handleMouseMove = (event2) => {
let result = width.value + (event2.clientX - beginX)
if (result >= max3 || result <= min3) {
return
}
width.value = result
beginX = event2.clientX
}
const handleMouseUp = () => {
dragging.value = false
document.removeEventListener('mousemove', handleMouseMove)
document.removeEventListener('mouseup', handleMouseUp)
}
document.addEventListener('mousemove', handleMouseMove)
document.addEventListener('mouseup', handleMouseUp)
}
const toggle2 = () => {
expended.value = !expended.value
}
let style2 = computed(() => {
return {
width: expended.value ? `${width.value}px` : 0,
transition: dragging.value ? 'none' : '',
}
})
return {
expended,
style: style2,
toggle: toggle2,
handleMouseDown,
}
}
function DragPageListHeight() {
const page2 = reactive(app.viewStatus.sidebar.content.page)
let { expended, height } = toRefs$2(page2)
let dragging = ref(false)
let top2 = 0
const handleMouseDown = (event) => {
event.stopPropagation()
event.preventDefault()
const target2 = event.target
const pageListRect = target2?.parentNode?.getBoundingClientRect()
if (!pageListRect) return
top2 = pageListRect.top
dragging.value = true
const handleMouseMove = (event2) => {
let result = event2.clientY - top2
if (result <= 0) return
height.value = result
}
const handleMouseUp = () => {
dragging.value = false
document.removeEventListener('mousemove', handleMouseMove)
document.removeEventListener('mouseup', handleMouseUp)
}
document.addEventListener('mousemove', handleMouseMove)
document.addEventListener('mouseup', handleMouseUp)
}
const toggle2 = () => {
expended.value = !expended.value
}
let isAllExpended = computed(() => {
const { page: page22, node: node2 } = app.viewStatus.sidebar.content
return page22.expended && node2.expended
})
let style2 = computed(() => {
const { page: page22 } = app.viewStatus.sidebar.content
if (isAllExpended.value && isNumber2(page22.height)) {
return {
height: `${page22.height}px`,
flexGrow: 0,
}
}
return {}
})
const isNumber2 = (value2) => {
return typeof value2 === 'number'
}
return {
dragging,
expended,
style: style2,
isAllExpended,
toggle: toggle2,
handleMouseDown,
}
}
function toggleNodeExpended() {
const node2 = reactive(app.viewStatus.sidebar.content.node)
const expended = toRef(node2, 'expended')
const toggle2 = () => {
expended.value = !expended.value
}
return { expended, toggle: toggle2 }
}
function useEdit(inputRef) {
let lastName = ''
let isEdit = ref(false)
const nodeEditStatus = ref(/* @__PURE__ */ new WeakMap())
const getNodeEditing = (data2) => {
return nodeEditStatus.value.get(data2)
}
const setNodeEditing = (data2, boolean) => {
isEdit.value = boolean
nodeEditStatus.value.set(data2, boolean)
}
const editNode = (data2, cb) => {
lastName = data2.name
setNodeEditing(data2, true)
nextTick(() => {
setTimeout(() => {
if (!inputRef.value) return
inputRef.value.focus()
inputRef.value.select()
}, 500)
if (cb) {
setTimeout(cb, 700)
}
})
}
const blurEditNode = (node2) => {
setNodeEditing(node2, false)
if (!node2.name) {
toast('\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A', 'error')
node2.name = lastName
setNodeEditing(node2, false)
return
}
}
return {
isEdit,
getNodeEditing,
setNodeEditing,
editNode,
blurEditNode,
}
}
function useIsScroll() {
let isScrolling = ref(false)
let scrollTimeout
const handleScroll2 = () => {
isScrolling.value = true
clearTimeout(scrollTimeout)
scrollTimeout = setTimeout(() => {
isScrolling.value = false
}, 300)
}
onUnmounted(() => {
clearTimeout(scrollTimeout)
})
return [isScrolling, handleScroll2]
}
var PageList_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$1u = (n2) => (
pushScopeId('data-v-751dfc57'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$2y = /* @__PURE__ */ _withScopeId$1u(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-yemian1 title_img' },
null,
-1
)
)
const _hoisted_2$2i = /* @__PURE__ */ _withScopeId$1u(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u9875\u9762', -1)
)
const _hoisted_3$27 = { class: 'more-operate' }
const _hoisted_4$1O = ['onClick']
const _hoisted_5$1F = ['onClick']
const _hoisted_6$1v = ['title']
const _hoisted_7$1i = { class: 'collapse-content' }
const _hoisted_8$1a = { class: 'search' }
const _hoisted_9$16 = { class: 'search_tool flex' }
const _hoisted_10$14 = /* @__PURE__ */ _withScopeId$1u(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'createPage iconfont icon-daoru2',
title: '\u5BFC\u5165\u753B\u9762',
},
null,
-1
)
)
const _hoisted_11$Y = { class: 'tree' }
const _hoisted_12$V = ['onClick']
const _hoisted_13$O = {
key: 0,
class: 'iconfont menu icon-Home',
style: { color: '#febf72' },
}
const _hoisted_14$J = ['onDblclick']
const _hoisted_15$H = {
key: 2,
class: 'btn',
}
const _hoisted_16$G = {
key: 0,
class: 'iconfont icon-shijian2',
}
const _hoisted_17$A = ['onMouseover']
const _hoisted_18$v = { class: 'dialog-content' }
const _hoisted_19$s = { style: { 'text-align': 'center', color: 'white' } }
const _hoisted_20$q = /* @__PURE__ */ createTextVNode(
' \u786E\u8BA4\u5220\u9664 '
)
const _hoisted_21$l = { style: { color: '#3d6eff' } }
const _hoisted_22$j = /* @__PURE__ */ createTextVNode(' \u5417\uFF1F ')
const _hoisted_23$g = /* @__PURE__ */ _withScopeId$1u(() =>
/* @__PURE__ */ createElementVNode(
'p',
null,
'\u786E\u8BA4\u540E\uFF0C\u4ECE\u5217\u8868\u4E2D\u5220\u9664\u8282\u70B9\u3002',
-1
)
)
const _hoisted_24$g = { class: 'el-dialog__footer' }
const _hoisted_25$d = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_26$c = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _hoisted_27$c = /* @__PURE__ */ _withScopeId$1u(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'dialog-content' },
[
/* @__PURE__ */ createElementVNode(
'div',
{ style: { 'text-align': 'center', color: 'white' } },
[
/* @__PURE__ */ createElementVNode(
'p',
null,
'\u786E\u8BA4\u662F\u5426\u4ECE\u5217\u8868\u4E2D\u5220\u9664\u9009\u4E2D\u8282\u70B9\u3002'
),
]
),
],
-1
)
)
const _hoisted_28$b = { class: 'el-dialog__footer' }
const _hoisted_29$9 = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_30$9 = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$2L = /* @__PURE__ */ defineComponent({
setup(__props2) {
const route = useRoute()
const inputRef = ref()
let {
expended,
style: style2,
isAllExpended,
toggle: toggle2,
handleMouseDown,
} = DragPageListHeight()
let { isEdit, getNodeEditing, setNodeEditing } = useEdit(inputRef)
let popoverPlacement = ref('bottom')
let buttonRef = ref()
const popoverRef = ref()
const onClickOutside2 = () => {
unref(popoverRef)?.tooltipRef?.hide()
}
let currentData = ref({})
let currentNode = ref({})
const handleOverMore = (e2, data2, node2) => {
if (document.body.offsetHeight - e2.pageY < 156) {
popoverPlacement.value = 'right'
} else {
popoverPlacement.value = 'bottom'
}
buttonRef.value = e2.currentTarget
currentData.value = data2
currentNode.value = node2
}
let [isScrolling, handleScroll2] = useIsScroll()
let dialogConfig = reactive({
show: false,
page: null,
})
const treeRef = ref()
let creating = ref(false)
const filterText = ref('')
watch$1(filterText, (val2) => {
treeRef.value.filter(val2)
})
const clickSelectPage = (event, page2) => {
if (event.ctrlKey) return
if (!treeRef.value) return
if (
app.current.project.current.page &&
page2.id === app.current.project.current.page.id
)
return
replace$4(page2)
}
let currentEditorPageName = ref('')
const editNode = (page2) => {
currentEditorPageName.value = page2.name
setNodeEditing(page2, true)
nextTick(() => {
setTimeout(() => {
if (!inputRef.value) return
inputRef.value.focus()
inputRef.value.select()
}, 500)
setTimeout(() => {
creating.value = false
}, 700)
})
}
const blurEditNode = (page2) => {
if (!page2.name) {
ElMessage.error('\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A')
page2.name = currentEditorPageName.value
setNodeEditing(page2, false)
return
}
let sameName = false
const loop = (pages) => {
if (sameName) return
for (let i2 = 0, iLen = pages.length; i2 < iLen; i2++) {
const _page = pages[i2]
if (
_page.type !== 0 &&
_page.id !== page2.id &&
_page.name === page2.name
)
sameName = true
if (_page.children.length) loop(_page.children)
}
}
if (app.current.project.pageList.length && page2.type !== 0)
loop(app.current.project.pageList)
if (sameName) {
ElMessage.error(
'\u6587\u4EF6\u540D\u5DF2\u5B58\u5728\uFF0C\u8BF7\u91CD\u65B0\u8F93\u5165'
)
page2.name = currentEditorPageName.value
setNodeEditing(page2, false)
return
}
changePicture(page2.id, {
name: page2.name,
parentId: page2.parentId || null,
type: page2.type,
}).then(() => {
setNodeEditing(page2, false)
})
}
const createFolders = async () => {
const page2 = app.current.project.current.page
if (page2.id) {
if (page2.parent?.parent?.parent) {
ElMessage.error(
'\u6587\u4EF6\u5D4C\u5957\u4E0D\u80FD\u8D85\u8FC74\u5C42'
)
return
}
}
const folders = await createFile$1('folders')
editNode(folders)
}
const createPage = async () => {
if (creating.value) return
creating.value = true
const page2 = await createFile$1('picture')
app.current.project.current.page = page2
addPageTab(page2)
editNode(page2)
replace$4(page2)
checkHomePage('create')
}
const handleCommand = (data2) => {
const fun = {
homePage: () => {
setHomePage(data2.data.id)
},
rename: () => {
editNode(data2.data)
},
copyPage: async () => {
const page2 = data2.data
const newPage = await page2.copyPage()
if (newPage) {
editNode(newPage)
}
},
deleteNode: () => {
dialogConfig.show = true
dialogConfig.page = data2.data
},
}
fun[data2.type]()
}
const ConfirmDeletion = async () => {
const page2 = dialogConfig.page
if (page2) {
await deletePage(page2)
checkHomePage('delete')
Language$1.saveRawText(page2.id, true)
dialogConfig.show = false
}
}
const allowDrop = (draggingNode, dropNode) => {
if (draggingNode.data.id === dropNode.data.id) return false
let dropPage = Page.getPageById(dropNode.data.id)
if (dropPage?.parent?.parent?.parent) {
return false
}
return true
}
const handleDrop = async (draggingNode, dropNode, dropType) => {
let draggingPage = Page.getPageById(draggingNode.data.id)
let dropPage = Page.getPageById(dropNode.data.id)
if (!draggingPage) return
if (!dropPage) return
let sort3 = dropPage?.getSort() || 0
if (dropType === 'inner') {
draggingPage.parent = dropPage
} else {
if (!dropPage.parent) {
draggingPage.parent = void 0
} else {
draggingPage.parent = dropPage.parent
}
}
if (dropType == 'after') {
sort3 += 2
}
pageSort(draggingPage.id, {
parentId: draggingPage.parentId || null,
sort: sort3 || 1,
})
}
const initPage = async (id2 = route.params.pageId) => {
let currentId = id2 || app.current.project.current.homePageId
addPageTab(new Page({ id: currentId }))
treeRef.value?.setCurrentKey(currentId)
}
let selectPages = ref([])
const handleTreeSelect = (pages) => {
selectPages.value = pages
}
const batchDialogConfig = reactive({
show: false,
})
const batchDelete = () => {
batchDelPage(selectPages.value)
treeRef.value?.clearSelectNodes()
batchDialogConfig.show = false
}
const handleExportPages = () => {
if (selectPages.value.length === 0) return
const pageIds = selectPages.value.map((page2) => page2.id)
const fileName = `\u5BFC\u51FA\u5DE5\u7A0B\u9875\u9762_${dayjs(
new Date()
).format('YYYYMMDDHHmmss')}`
request({
url: `/api/v1/view/content/export`,
method: 'post',
responseType: 'blob',
data: pageIds,
})
.then((result) => {
utils.downFile(result, `${fileName}.zip`)
})
.then(() => {
toast('\u5BFC\u51FA\u6210\u529F\uFF01', 'success')
})
}
const importInputRef = ref()
const getFilesFormData = (files2) => {
let formData = new FormData()
for (const file2 of files2) {
formData.append('collection', file2)
}
return formData
}
const clickImportInputRef = () => {
importInputRef.value?.click()
}
const handleImportPages = (e2) => {
const target2 = e2.target
if (!target2) return
const files2 = target2.files
if (files2 && files2.length > 0) {
let formData = getFilesFormData(target2.files)
request({
url: `/api/v1/view/content/import`,
method: 'post',
data: formData,
})
.then(() => {
toast('\u5BFC\u5165\u6210\u529F\uFF01', 'success')
getPageTreeData()
})
.finally(() => {
importInputRef.value.value = ''
})
}
}
onBeforeRouteUpdate((to) => {
let { pageId } = to.params
if (!pageId) return true
initPage(pageId)
return true
})
onBeforeRouteLeave(() => {
app.current.project.current.pageList = []
})
onMounted(() => {
initPage()
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_popover = resolveComponent('el-popover')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass(['PageList', { expended: unref(expended) }]),
ref: 'pageList',
style: normalizeStyle$1(unref(style2)),
},
[
createElementVNode(
'div',
{
class: 'collapse-header',
onClick:
_cache[2] ||
(_cache[2] = (...args) =>
unref(toggle2) && unref(toggle2)(...args)),
},
[
_hoisted_1$2y,
_hoisted_2$2i,
createElementVNode('div', _hoisted_3$27, [
withDirectives(
createElementVNode(
'i',
{
class: 'iconfont icon-tupianshanchu',
onClick:
_cache[0] ||
(_cache[0] = withModifiers(
($event) => (unref(batchDialogConfig).show = true),
['stop']
)),
title: '\u6279\u91CF\u5220\u9664',
},
null,
512
),
[[vShow, unref(expended) && selectPages.value.length > 1]]
),
withDirectives(
createElementVNode(
'i',
{
class: 'createPage iconfont icon-tianjiahuamian',
onClick: withModifiers(createPage, ['stop']),
title: '\u6DFB\u52A0\u753B\u9762',
},
null,
8,
_hoisted_4$1O
),
[[vShow, unref(expended)]]
),
withDirectives(
createElementVNode(
'i',
{
class: 'iconfont icon-wenjianjia',
onClick: withModifiers(createFolders, ['stop']),
title: '\u6DFB\u52A0\u6587\u4EF6\u5939',
},
null,
8,
_hoisted_5$1F
),
[[vShow, unref(expended)]]
),
(openBlock(),
createElementBlock(
'i',
{
key: unref(expended),
class: normalizeClass([
'iconfont toggle-icon',
unref(expended) ? 'icon-zhedie' : 'icon-zhankai1',
]),
title: unref(expended) ? '\u6536\u8D77' : '\u5C55\u5F00',
onClick:
_cache[1] ||
(_cache[1] = withModifiers(
(...args) =>
unref(toggle2) && unref(toggle2)(...args),
['stop']
)),
},
null,
10,
_hoisted_6$1v
)),
]),
]
),
withDirectives(
createElementVNode(
'div',
_hoisted_7$1i,
[
createElementVNode('div', _hoisted_8$1a, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x-search',
modelValue: filterText.value,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) => (filterText.value = $event)),
clearable: '',
},
null,
8,
['modelValue']
),
createElementVNode('div', _hoisted_9$16, [
createElementVNode(
'span',
{
class: 'import-container',
onClick: clickImportInputRef,
},
[
_hoisted_10$14,
createElementVNode(
'input',
{
ref_key: 'importInputRef',
ref: importInputRef,
accept: '.zip,.view',
type: 'file',
multiple: '',
class: 'import-input',
onChange: handleImportPages,
},
null,
544
),
]
),
createElementVNode('i', {
class: 'iconfont icon-daochu3',
title: '\u5BFC\u51FA\u753B\u9762',
onClick: handleExportPages,
}),
]),
]),
createElementVNode('div', _hoisted_11$Y, [
createVNode$1(
VirtualTree,
{
ref_key: 'treeRef',
ref: treeRef,
data: unref(app).current.project.pageList,
draggable: !unref(isEdit),
itemSize: 32,
'default-expand-all': '',
multiple: '',
props: { children: 'children' },
filterText: filterText.value,
'allow-drop': allowDrop,
onNodeDrop: handleDrop,
onSelect: handleTreeSelect,
onScroll: unref(handleScroll2),
},
{
default: withCtx(({ node: node2, data: data2 }) => [
createElementVNode(
'div',
{
class: normalizeClass([
'node flex',
data2.id ===
unref(app).current.project.current.page?.id
? 'node-current'
: '',
]),
onClick: ($event) =>
clickSelectPage($event, data2),
},
[
data2.id ===
unref(app).current.project.current.homePageId
? (openBlock(),
createElementBlock('i', _hoisted_13$O))
: (openBlock(),
createElementBlock(
'i',
{
key: 1,
class: normalizeClass([
'iconfont menu',
data2.type === 0
? 'icon-wenjianjia'
: 'icon-yemian',
]),
},
null,
2
)),
createElementVNode(
'div',
{
class: 'title',
onDblclick: ($event) => editNode(data2),
},
[
unref(getNodeEditing)(data2)
? (openBlock(),
createBlock(
_component_el_input,
{
key: 0,
ref_key: 'inputRef',
ref: inputRef,
class: 'cms-el-input-x title-input',
modelValue: data2.name,
'onUpdate:modelValue': ($event) =>
(data2.name = $event),
onBlur: ($event) =>
blurEditNode(data2),
onKeyup:
_cache[4] ||
(_cache[4] = withKeys(
($event) =>
inputRef.value?.blur(),
['enter']
)),
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
'onBlur',
]
))
: (openBlock(),
createBlock(
EllipsisTooltip,
{
key: 1,
width: '100%',
content: node2.label,
},
null,
8,
['content']
)),
],
40,
_hoisted_14$J
),
!unref(getNodeEditing)(data2)
? (openBlock(),
createElementBlock('div', _hoisted_15$H, [
data2.hasEvent
? (openBlock(),
createElementBlock('i', _hoisted_16$G))
: createCommentVNode('', true),
withDirectives(
createElementVNode(
'i',
{
class: 'iconfont icon-gengduo menu',
onMouseover: (e2) =>
handleOverMore(e2, data2, node2),
},
null,
40,
_hoisted_17$A
),
[[unref(ClickOutside), onClickOutside2]]
),
]))
: createCommentVNode('', true),
],
10,
_hoisted_12$V
),
]),
_: 1,
},
8,
['data', 'draggable', 'filterText', 'onScroll']
),
!unref(isScrolling)
? (openBlock(),
createBlock(
_component_el_popover,
{
key: 0,
'virtual-ref': unref(buttonRef),
ref_key: 'popoverRef',
ref: popoverRef,
trigger: 'hover',
'virtual-triggering': '',
persistent: '',
width: '110',
placement: unref(popoverPlacement),
'show-arrow': false,
transition: 'el-zoom-in-top',
},
{
default: withCtx(() => [
createElementVNode(
'ul',
{
class: 'popover-menus',
onMouseover:
_cache[9] ||
(_cache[9] = ($event) =>
inputRef.value?.blur()),
},
[
unref(currentData).type !== 0 &&
unref(currentData).id !==
unref(app).current.project.current
.homePageId
? (openBlock(),
createElementBlock(
'li',
{
key: 0,
onClick:
_cache[5] ||
(_cache[5] = ($event) =>
handleCommand({
type: 'homePage',
node: unref(currentNode),
data: unref(currentData),
})),
},
' \u8BBE\u4E3A\u9996\u9875 '
))
: createCommentVNode('', true),
createElementVNode(
'li',
{
onClick:
_cache[6] ||
(_cache[6] = ($event) =>
handleCommand({
type: 'rename',
node: unref(currentNode),
data: unref(currentData),
})),
},
' \u91CD\u547D\u540D '
),
unref(currentData).type !== 0
? (openBlock(),
createElementBlock(
'li',
{
key: 1,
onClick:
_cache[7] ||
(_cache[7] = ($event) =>
handleCommand({
type: 'copyPage',
node: unref(currentNode),
data: unref(currentData),
})),
},
' \u521B\u5EFA\u526F\u672C '
))
: createCommentVNode('', true),
createElementVNode(
'li',
{
class: 'item_delete',
onClick:
_cache[8] ||
(_cache[8] = ($event) =>
handleCommand({
type: 'deleteNode',
node: unref(currentNode),
data: unref(currentData),
})),
},
' \u5220\u9664 '
),
],
32
),
]),
_: 1,
},
8,
['virtual-ref', 'placement']
))
: createCommentVNode('', true),
]),
],
512
),
[[vShow, unref(expended)]]
),
withDirectives(
createElementVNode(
'div',
{
class: 'resize',
onMousedown:
_cache[10] ||
(_cache[10] = (...args) =>
unref(handleMouseDown) &&
unref(handleMouseDown)(...args)),
},
null,
544
),
[[vShow, unref(isAllExpended)]]
),
createVNode$1(
_component_el_dialog,
{
modelValue: unref(dialogConfig).show,
'onUpdate:modelValue':
_cache[13] ||
(_cache[13] = ($event) =>
(unref(dialogConfig).show = $event)),
title: '\u786E\u8BA4\u5220\u9664',
'custom-class': 'cms-el-dialog',
onClose:
_cache[14] ||
(_cache[14] = ($event) => (unref(dialogConfig).show = false)),
'append-to-body': true,
width: '450px',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_18$v, [
createElementVNode('div', _hoisted_19$s, [
_hoisted_20$q,
createElementVNode(
'span',
_hoisted_21$l,
toDisplayString$1(unref(dialogConfig).page?.name),
1
),
_hoisted_22$j,
_hoisted_23$g,
]),
]),
createElementVNode('div', _hoisted_24$g, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick:
_cache[11] ||
(_cache[11] = ($event) =>
(unref(dialogConfig).show = false)),
},
{
default: withCtx(() => [_hoisted_25$d]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick:
_cache[12] ||
(_cache[12] = ($event) => ConfirmDeletion()),
},
{
default: withCtx(() => [_hoisted_26$c]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_dialog,
{
modelValue: unref(batchDialogConfig).show,
'onUpdate:modelValue':
_cache[16] ||
(_cache[16] = ($event) =>
(unref(batchDialogConfig).show = $event)),
title: '\u786E\u8BA4\u5220\u9664',
'custom-class': 'cms-el-dialog',
onClose:
_cache[17] ||
(_cache[17] = ($event) =>
(unref(batchDialogConfig).show = false)),
'append-to-body': true,
width: '450px',
},
{
default: withCtx(() => [
_hoisted_27$c,
createElementVNode('div', _hoisted_28$b, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick:
_cache[15] ||
(_cache[15] = ($event) =>
(unref(batchDialogConfig).show = false)),
},
{
default: withCtx(() => [_hoisted_29$9]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: batchDelete,
},
{
default: withCtx(() => [_hoisted_30$9]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
),
],
6
)
)
}
},
})
var PageList = /* @__PURE__ */ _export_sfc(_sfc_main$2L, [
['__scopeId', 'data-v-751dfc57'],
])
var PageList$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: PageList,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var jszip_min$1 = { exports: {} }
/*!
JSZip v3.10.1 - A JavaScript class for generating and reading zip files
(c) 2009-2016 Stuart Knightley
Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.
JSZip uses the library pako released under the MIT license :
https://github.com/nodeca/pako/blob/main/LICENSE
*/
;(function (module2, exports2) {
!(function (e2) {
module2.exports = e2()
})(function () {
return (function s2(a2, o2, h2) {
function u2(r2, e3) {
if (!o2[r2]) {
if (!a2[r2]) {
var t3 = 'function' == typeof commonjsRequire && commonjsRequire
if (!e3 && t3) return t3(r2, true)
if (l2) return l2(r2, true)
var n2 = new Error("Cannot find module '" + r2 + "'")
throw ((n2.code = 'MODULE_NOT_FOUND'), n2)
}
var i2 = (o2[r2] = { exports: {} })
a2[r2][0].call(
i2.exports,
function (e4) {
var t4 = a2[r2][1][e4]
return u2(t4 || e4)
},
i2,
i2.exports,
s2,
a2,
o2,
h2
)
}
return o2[r2].exports
}
for (
var l2 = 'function' == typeof commonjsRequire && commonjsRequire,
e2 = 0;
e2 < h2.length;
e2++
)
u2(h2[e2])
return u2
})(
{
1: [
function (e2, t3, r2) {
var d3 = e2('./utils'),
c2 = e2('./support'),
p2 =
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
;(r2.encode = function (e3) {
for (
var t4,
r3,
n2,
i2,
s2,
a2,
o2,
h2 = [],
u2 = 0,
l2 = e3.length,
f2 = l2,
c3 = 'string' !== d3.getTypeOf(e3);
u2 < e3.length;
)
(f2 = l2 - u2),
(n2 = c3
? ((t4 = e3[u2++]),
(r3 = u2 < l2 ? e3[u2++] : 0),
u2 < l2 ? e3[u2++] : 0)
: ((t4 = e3.charCodeAt(u2++)),
(r3 = u2 < l2 ? e3.charCodeAt(u2++) : 0),
u2 < l2 ? e3.charCodeAt(u2++) : 0)),
(i2 = t4 >> 2),
(s2 = ((3 & t4) << 4) | (r3 >> 4)),
(a2 = 1 < f2 ? ((15 & r3) << 2) | (n2 >> 6) : 64),
(o2 = 2 < f2 ? 63 & n2 : 64),
h2.push(
p2.charAt(i2) +
p2.charAt(s2) +
p2.charAt(a2) +
p2.charAt(o2)
)
return h2.join('')
}),
(r2.decode = function (e3) {
var t4,
r3,
n2,
i2,
s2,
a2,
o2 = 0,
h2 = 0,
u2 = 'data:'
if (e3.substr(0, u2.length) === u2)
throw new Error(
'Invalid base64 input, it looks like a data url.'
)
var l2,
f2 =
(3 * (e3 = e3.replace(/[^A-Za-z0-9+/=]/g, '')).length) / 4
if (
(e3.charAt(e3.length - 1) === p2.charAt(64) && f2--,
e3.charAt(e3.length - 2) === p2.charAt(64) && f2--,
f2 % 1 != 0)
)
throw new Error('Invalid base64 input, bad content length.')
for (
l2 = c2.uint8array
? new Uint8Array(0 | f2)
: new Array(0 | f2);
o2 < e3.length;
)
(t4 =
(p2.indexOf(e3.charAt(o2++)) << 2) |
((i2 = p2.indexOf(e3.charAt(o2++))) >> 4)),
(r3 =
((15 & i2) << 4) |
((s2 = p2.indexOf(e3.charAt(o2++))) >> 2)),
(n2 = ((3 & s2) << 6) | (a2 = p2.indexOf(e3.charAt(o2++)))),
(l2[h2++] = t4),
64 !== s2 && (l2[h2++] = r3),
64 !== a2 && (l2[h2++] = n2)
return l2
})
},
{ './support': 30, './utils': 32 },
],
2: [
function (e2, t3, r2) {
var n2 = e2('./external'),
i2 = e2('./stream/DataWorker'),
s2 = e2('./stream/Crc32Probe'),
a2 = e2('./stream/DataLengthProbe')
function o2(e3, t4, r3, n3, i3) {
;(this.compressedSize = e3),
(this.uncompressedSize = t4),
(this.crc32 = r3),
(this.compression = n3),
(this.compressedContent = i3)
}
;(o2.prototype = {
getContentWorker: function () {
var e3 = new i2(n2.Promise.resolve(this.compressedContent))
.pipe(this.compression.uncompressWorker())
.pipe(new a2('data_length')),
t4 = this
return (
e3.on('end', function () {
if (this.streamInfo.data_length !== t4.uncompressedSize)
throw new Error('Bug : uncompressed data size mismatch')
}),
e3
)
},
getCompressedWorker: function () {
return new i2(n2.Promise.resolve(this.compressedContent))
.withStreamInfo('compressedSize', this.compressedSize)
.withStreamInfo('uncompressedSize', this.uncompressedSize)
.withStreamInfo('crc32', this.crc32)
.withStreamInfo('compression', this.compression)
},
}),
(o2.createWorkerFrom = function (e3, t4, r3) {
return e3
.pipe(new s2())
.pipe(new a2('uncompressedSize'))
.pipe(t4.compressWorker(r3))
.pipe(new a2('compressedSize'))
.withStreamInfo('compression', t4)
}),
(t3.exports = o2)
},
{
'./external': 6,
'./stream/Crc32Probe': 25,
'./stream/DataLengthProbe': 26,
'./stream/DataWorker': 27,
},
],
3: [
function (e2, t3, r2) {
var n2 = e2('./stream/GenericWorker')
;(r2.STORE = {
magic: '\0\0',
compressWorker: function () {
return new n2('STORE compression')
},
uncompressWorker: function () {
return new n2('STORE decompression')
},
}),
(r2.DEFLATE = e2('./flate'))
},
{ './flate': 7, './stream/GenericWorker': 28 },
],
4: [
function (e2, t3, r2) {
var n2 = e2('./utils')
var o2 = (function () {
for (var e3, t4 = [], r3 = 0; r3 < 256; r3++) {
e3 = r3
for (var n3 = 0; n3 < 8; n3++)
e3 = 1 & e3 ? 3988292384 ^ (e3 >>> 1) : e3 >>> 1
t4[r3] = e3
}
return t4
})()
t3.exports = function (e3, t4) {
return void 0 !== e3 && e3.length
? 'string' !== n2.getTypeOf(e3)
? (function (e4, t5, r3, n3) {
var i2 = o2,
s2 = n3 + r3
e4 ^= -1
for (var a2 = n3; a2 < s2; a2++)
e4 = (e4 >>> 8) ^ i2[255 & (e4 ^ t5[a2])]
return -1 ^ e4
})(0 | t4, e3, e3.length, 0)
: (function (e4, t5, r3, n3) {
var i2 = o2,
s2 = n3 + r3
e4 ^= -1
for (var a2 = n3; a2 < s2; a2++)
e4 = (e4 >>> 8) ^ i2[255 & (e4 ^ t5.charCodeAt(a2))]
return -1 ^ e4
})(0 | t4, e3, e3.length, 0)
: 0
}
},
{ './utils': 32 },
],
5: [
function (e2, t3, r2) {
;(r2.base64 = false),
(r2.binary = false),
(r2.dir = false),
(r2.createFolders = true),
(r2.date = null),
(r2.compression = null),
(r2.compressionOptions = null),
(r2.comment = null),
(r2.unixPermissions = null),
(r2.dosPermissions = null)
},
{},
],
6: [
function (e2, t3, r2) {
var n2 = null
;(n2 = 'undefined' != typeof Promise ? Promise : e2('lie')),
(t3.exports = { Promise: n2 })
},
{ lie: 37 },
],
7: [
function (e2, t3, r2) {
var n2 =
'undefined' != typeof Uint8Array &&
'undefined' != typeof Uint16Array &&
'undefined' != typeof Uint32Array,
i2 = e2('pako'),
s2 = e2('./utils'),
a2 = e2('./stream/GenericWorker'),
o2 = n2 ? 'uint8array' : 'array'
function h2(e3, t4) {
a2.call(this, 'FlateWorker/' + e3),
(this._pako = null),
(this._pakoAction = e3),
(this._pakoOptions = t4),
(this.meta = {})
}
;(r2.magic = '\b\0'),
s2.inherits(h2, a2),
(h2.prototype.processChunk = function (e3) {
;(this.meta = e3.meta),
null === this._pako && this._createPako(),
this._pako.push(s2.transformTo(o2, e3.data), false)
}),
(h2.prototype.flush = function () {
a2.prototype.flush.call(this),
null === this._pako && this._createPako(),
this._pako.push([], true)
}),
(h2.prototype.cleanUp = function () {
a2.prototype.cleanUp.call(this), (this._pako = null)
}),
(h2.prototype._createPako = function () {
this._pako = new i2[this._pakoAction]({
raw: true,
level: this._pakoOptions.level || -1,
})
var t4 = this
this._pako.onData = function (e3) {
t4.push({ data: e3, meta: t4.meta })
}
}),
(r2.compressWorker = function (e3) {
return new h2('Deflate', e3)
}),
(r2.uncompressWorker = function () {
return new h2('Inflate', {})
})
},
{ './stream/GenericWorker': 28, './utils': 32, pako: 38 },
],
8: [
function (e2, t3, r2) {
function A2(e3, t4) {
var r3,
n3 = ''
for (r3 = 0; r3 < t4; r3++)
(n3 += String.fromCharCode(255 & e3)), (e3 >>>= 8)
return n3
}
function n2(e3, t4, r3, n3, i3, s3) {
var a2,
o2,
h2 = e3.file,
u2 = e3.compression,
l2 = s3 !== O2.utf8encode,
f2 = I2.transformTo('string', s3(h2.name)),
c2 = I2.transformTo('string', O2.utf8encode(h2.name)),
d3 = h2.comment,
p2 = I2.transformTo('string', s3(d3)),
m2 = I2.transformTo('string', O2.utf8encode(d3)),
_2 = c2.length !== h2.name.length,
g2 = m2.length !== d3.length,
b2 = '',
v4 = '',
y2 = '',
w2 = h2.dir,
k2 = h2.date,
x2 = { crc32: 0, compressedSize: 0, uncompressedSize: 0 }
;(t4 && !r3) ||
((x2.crc32 = e3.crc32),
(x2.compressedSize = e3.compressedSize),
(x2.uncompressedSize = e3.uncompressedSize))
var S2 = 0
t4 && (S2 |= 8), l2 || (!_2 && !g2) || (S2 |= 2048)
var z2 = 0,
C2 = 0
w2 && (z2 |= 16),
'UNIX' === i3
? ((C2 = 798),
(z2 |= (function (e4, t5) {
var r4 = e4
return e4 || (r4 = t5 ? 16893 : 33204), (65535 & r4) << 16
})(h2.unixPermissions, w2)))
: ((C2 = 20),
(z2 |= (function (e4) {
return 63 & (e4 || 0)
})(h2.dosPermissions))),
(a2 = k2.getUTCHours()),
(a2 <<= 6),
(a2 |= k2.getUTCMinutes()),
(a2 <<= 5),
(a2 |= k2.getUTCSeconds() / 2),
(o2 = k2.getUTCFullYear() - 1980),
(o2 <<= 4),
(o2 |= k2.getUTCMonth() + 1),
(o2 <<= 5),
(o2 |= k2.getUTCDate()),
_2 &&
((v4 = A2(1, 1) + A2(B3(f2), 4) + c2),
(b2 += 'up' + A2(v4.length, 2) + v4)),
g2 &&
((y2 = A2(1, 1) + A2(B3(p2), 4) + m2),
(b2 += 'uc' + A2(y2.length, 2) + y2))
var E2 = ''
return (
(E2 += '\n\0'),
(E2 += A2(S2, 2)),
(E2 += u2.magic),
(E2 += A2(a2, 2)),
(E2 += A2(o2, 2)),
(E2 += A2(x2.crc32, 4)),
(E2 += A2(x2.compressedSize, 4)),
(E2 += A2(x2.uncompressedSize, 4)),
(E2 += A2(f2.length, 2)),
(E2 += A2(b2.length, 2)),
{
fileRecord: R2.LOCAL_FILE_HEADER + E2 + f2 + b2,
dirRecord:
R2.CENTRAL_FILE_HEADER +
A2(C2, 2) +
E2 +
A2(p2.length, 2) +
'\0\0\0\0' +
A2(z2, 4) +
A2(n3, 4) +
f2 +
b2 +
p2,
}
)
}
var I2 = e2('../utils'),
i2 = e2('../stream/GenericWorker'),
O2 = e2('../utf8'),
B3 = e2('../crc32'),
R2 = e2('../signature')
function s2(e3, t4, r3, n3) {
i2.call(this, 'ZipFileWorker'),
(this.bytesWritten = 0),
(this.zipComment = t4),
(this.zipPlatform = r3),
(this.encodeFileName = n3),
(this.streamFiles = e3),
(this.accumulate = false),
(this.contentBuffer = []),
(this.dirRecords = []),
(this.currentSourceOffset = 0),
(this.entriesCount = 0),
(this.currentFile = null),
(this._sources = [])
}
I2.inherits(s2, i2),
(s2.prototype.push = function (e3) {
var t4 = e3.meta.percent || 0,
r3 = this.entriesCount,
n3 = this._sources.length
this.accumulate
? this.contentBuffer.push(e3)
: ((this.bytesWritten += e3.data.length),
i2.prototype.push.call(this, {
data: e3.data,
meta: {
currentFile: this.currentFile,
percent: r3 ? (t4 + 100 * (r3 - n3 - 1)) / r3 : 100,
},
}))
}),
(s2.prototype.openedSource = function (e3) {
;(this.currentSourceOffset = this.bytesWritten),
(this.currentFile = e3.file.name)
var t4 = this.streamFiles && !e3.file.dir
if (t4) {
var r3 = n2(
e3,
t4,
false,
this.currentSourceOffset,
this.zipPlatform,
this.encodeFileName
)
this.push({ data: r3.fileRecord, meta: { percent: 0 } })
} else this.accumulate = true
}),
(s2.prototype.closedSource = function (e3) {
this.accumulate = false
var t4 = this.streamFiles && !e3.file.dir,
r3 = n2(
e3,
t4,
true,
this.currentSourceOffset,
this.zipPlatform,
this.encodeFileName
)
if ((this.dirRecords.push(r3.dirRecord), t4))
this.push({
data: (function (e4) {
return (
R2.DATA_DESCRIPTOR +
A2(e4.crc32, 4) +
A2(e4.compressedSize, 4) +
A2(e4.uncompressedSize, 4)
)
})(e3),
meta: { percent: 100 },
})
else
for (
this.push({ data: r3.fileRecord, meta: { percent: 0 } });
this.contentBuffer.length;
)
this.push(this.contentBuffer.shift())
this.currentFile = null
}),
(s2.prototype.flush = function () {
for (
var e3 = this.bytesWritten, t4 = 0;
t4 < this.dirRecords.length;
t4++
)
this.push({
data: this.dirRecords[t4],
meta: { percent: 100 },
})
var r3 = this.bytesWritten - e3,
n3 = (function (e4, t5, r4, n4, i3) {
var s3 = I2.transformTo('string', i3(n4))
return (
R2.CENTRAL_DIRECTORY_END +
'\0\0\0\0' +
A2(e4, 2) +
A2(e4, 2) +
A2(t5, 4) +
A2(r4, 4) +
A2(s3.length, 2) +
s3
)
})(
this.dirRecords.length,
r3,
e3,
this.zipComment,
this.encodeFileName
)
this.push({ data: n3, meta: { percent: 100 } })
}),
(s2.prototype.prepareNextSource = function () {
;(this.previous = this._sources.shift()),
this.openedSource(this.previous.streamInfo),
this.isPaused ? this.previous.pause() : this.previous.resume()
}),
(s2.prototype.registerPrevious = function (e3) {
this._sources.push(e3)
var t4 = this
return (
e3.on('data', function (e4) {
t4.processChunk(e4)
}),
e3.on('end', function () {
t4.closedSource(t4.previous.streamInfo),
t4._sources.length ? t4.prepareNextSource() : t4.end()
}),
e3.on('error', function (e4) {
t4.error(e4)
}),
this
)
}),
(s2.prototype.resume = function () {
return (
!!i2.prototype.resume.call(this) &&
(!this.previous && this._sources.length
? (this.prepareNextSource(), true)
: this.previous ||
this._sources.length ||
this.generatedError
? void 0
: (this.end(), true))
)
}),
(s2.prototype.error = function (e3) {
var t4 = this._sources
if (!i2.prototype.error.call(this, e3)) return false
for (var r3 = 0; r3 < t4.length; r3++)
try {
t4[r3].error(e3)
} catch (e4) {}
return true
}),
(s2.prototype.lock = function () {
i2.prototype.lock.call(this)
for (var e3 = this._sources, t4 = 0; t4 < e3.length; t4++)
e3[t4].lock()
}),
(t3.exports = s2)
},
{
'../crc32': 4,
'../signature': 23,
'../stream/GenericWorker': 28,
'../utf8': 31,
'../utils': 32,
},
],
9: [
function (e2, t3, r2) {
var u2 = e2('../compressions'),
n2 = e2('./ZipFileWorker')
r2.generateWorker = function (e3, a2, t4) {
var o2 = new n2(
a2.streamFiles,
t4,
a2.platform,
a2.encodeFileName
),
h2 = 0
try {
e3.forEach(function (e4, t5) {
h2++
var r3 = (function (e5, t6) {
var r4 = e5 || t6,
n4 = u2[r4]
if (!n4)
throw new Error(
r4 + ' is not a valid compression method !'
)
return n4
})(t5.options.compression, a2.compression),
n3 =
t5.options.compressionOptions ||
a2.compressionOptions ||
{},
i2 = t5.dir,
s2 = t5.date
t5._compressWorker(r3, n3)
.withStreamInfo('file', {
name: e4,
dir: i2,
date: s2,
comment: t5.comment || '',
unixPermissions: t5.unixPermissions,
dosPermissions: t5.dosPermissions,
})
.pipe(o2)
}),
(o2.entriesCount = h2)
} catch (e4) {
o2.error(e4)
}
return o2
}
},
{ '../compressions': 3, './ZipFileWorker': 8 },
],
10: [
function (e2, t3, r2) {
function n2() {
if (!(this instanceof n2)) return new n2()
if (arguments.length)
throw new Error(
'The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.'
)
;(this.files = /* @__PURE__ */ Object.create(null)),
(this.comment = null),
(this.root = ''),
(this.clone = function () {
var e3 = new n2()
for (var t4 in this)
'function' != typeof this[t4] && (e3[t4] = this[t4])
return e3
})
}
;((n2.prototype = e2('./object')).loadAsync = e2('./load')),
(n2.support = e2('./support')),
(n2.defaults = e2('./defaults')),
(n2.version = '3.10.1'),
(n2.loadAsync = function (e3, t4) {
return new n2().loadAsync(e3, t4)
}),
(n2.external = e2('./external')),
(t3.exports = n2)
},
{
'./defaults': 5,
'./external': 6,
'./load': 11,
'./object': 15,
'./support': 30,
},
],
11: [
function (e2, t3, r2) {
var u2 = e2('./utils'),
i2 = e2('./external'),
n2 = e2('./utf8'),
s2 = e2('./zipEntries'),
a2 = e2('./stream/Crc32Probe'),
l2 = e2('./nodejsUtils')
function f2(n3) {
return new i2.Promise(function (e3, t4) {
var r3 = n3.decompressed.getContentWorker().pipe(new a2())
r3.on('error', function (e4) {
t4(e4)
})
.on('end', function () {
r3.streamInfo.crc32 !== n3.decompressed.crc32
? t4(new Error('Corrupted zip : CRC32 mismatch'))
: e3()
})
.resume()
})
}
t3.exports = function (e3, o2) {
var h2 = this
return (
(o2 = u2.extend(o2 || {}, {
base64: false,
checkCRC32: false,
optimizedBinaryString: false,
createFolders: false,
decodeFileName: n2.utf8decode,
})),
l2.isNode && l2.isStream(e3)
? i2.Promise.reject(
new Error(
"JSZip can't accept a stream when loading a zip file."
)
)
: u2
.prepareContent(
'the loaded zip file',
e3,
true,
o2.optimizedBinaryString,
o2.base64
)
.then(function (e4) {
var t4 = new s2(o2)
return t4.load(e4), t4
})
.then(function (e4) {
var t4 = [i2.Promise.resolve(e4)],
r3 = e4.files
if (o2.checkCRC32)
for (var n3 = 0; n3 < r3.length; n3++)
t4.push(f2(r3[n3]))
return i2.Promise.all(t4)
})
.then(function (e4) {
for (
var t4 = e4.shift(), r3 = t4.files, n3 = 0;
n3 < r3.length;
n3++
) {
var i3 = r3[n3],
s3 = i3.fileNameStr,
a3 = u2.resolve(i3.fileNameStr)
h2.file(a3, i3.decompressed, {
binary: true,
optimizedBinaryString: true,
date: i3.date,
dir: i3.dir,
comment: i3.fileCommentStr.length
? i3.fileCommentStr
: null,
unixPermissions: i3.unixPermissions,
dosPermissions: i3.dosPermissions,
createFolders: o2.createFolders,
}),
i3.dir || (h2.file(a3).unsafeOriginalName = s3)
}
return (
t4.zipComment.length && (h2.comment = t4.zipComment),
h2
)
})
)
}
},
{
'./external': 6,
'./nodejsUtils': 14,
'./stream/Crc32Probe': 25,
'./utf8': 31,
'./utils': 32,
'./zipEntries': 33,
},
],
12: [
function (e2, t3, r2) {
var n2 = e2('../utils'),
i2 = e2('../stream/GenericWorker')
function s2(e3, t4) {
i2.call(this, 'Nodejs stream input adapter for ' + e3),
(this._upstreamEnded = false),
this._bindStream(t4)
}
n2.inherits(s2, i2),
(s2.prototype._bindStream = function (e3) {
var t4 = this
;(this._stream = e3).pause(),
e3
.on('data', function (e4) {
t4.push({ data: e4, meta: { percent: 0 } })
})
.on('error', function (e4) {
t4.isPaused ? (this.generatedError = e4) : t4.error(e4)
})
.on('end', function () {
t4.isPaused ? (t4._upstreamEnded = true) : t4.end()
})
}),
(s2.prototype.pause = function () {
return (
!!i2.prototype.pause.call(this) &&
(this._stream.pause(), true)
)
}),
(s2.prototype.resume = function () {
return (
!!i2.prototype.resume.call(this) &&
(this._upstreamEnded ? this.end() : this._stream.resume(),
true)
)
}),
(t3.exports = s2)
},
{ '../stream/GenericWorker': 28, '../utils': 32 },
],
13: [
function (e2, t3, r2) {
var i2 = e2('readable-stream').Readable
function n2(e3, t4, r3) {
i2.call(this, t4), (this._helper = e3)
var n3 = this
e3.on('data', function (e4, t5) {
n3.push(e4) || n3._helper.pause(), r3 && r3(t5)
})
.on('error', function (e4) {
n3.emit('error', e4)
})
.on('end', function () {
n3.push(null)
})
}
e2('../utils').inherits(n2, i2),
(n2.prototype._read = function () {
this._helper.resume()
}),
(t3.exports = n2)
},
{ '../utils': 32, 'readable-stream': 16 },
],
14: [
function (e2, t3, r2) {
t3.exports = {
isNode: 'undefined' != typeof Buffer,
newBufferFrom: function (e3, t4) {
if (Buffer.from && Buffer.from !== Uint8Array.from)
return Buffer.from(e3, t4)
if ('number' == typeof e3)
throw new Error('The "data" argument must not be a number')
return new Buffer(e3, t4)
},
allocBuffer: function (e3) {
if (Buffer.alloc) return Buffer.alloc(e3)
var t4 = new Buffer(e3)
return t4.fill(0), t4
},
isBuffer: function (e3) {
return Buffer.isBuffer(e3)
},
isStream: function (e3) {
return (
e3 &&
'function' == typeof e3.on &&
'function' == typeof e3.pause &&
'function' == typeof e3.resume
)
},
}
},
{},
],
15: [
function (e2, t3, r2) {
function s2(e3, t4, r3) {
var n3,
i3 = u2.getTypeOf(t4),
s3 = u2.extend(r3 || {}, f2)
;(s3.date = s3.date || new Date()),
null !== s3.compression &&
(s3.compression = s3.compression.toUpperCase()),
'string' == typeof s3.unixPermissions &&
(s3.unixPermissions = parseInt(s3.unixPermissions, 8)),
s3.unixPermissions &&
16384 & s3.unixPermissions &&
(s3.dir = true),
s3.dosPermissions && 16 & s3.dosPermissions && (s3.dir = true),
s3.dir && (e3 = g2(e3)),
s3.createFolders && (n3 = _2(e3)) && b2.call(this, n3, true)
var a3 =
'string' === i3 && false === s3.binary && false === s3.base64
;(r3 && void 0 !== r3.binary) || (s3.binary = !a3),
((t4 instanceof c2 && 0 === t4.uncompressedSize) ||
s3.dir ||
!t4 ||
0 === t4.length) &&
((s3.base64 = false),
(s3.binary = true),
(t4 = ''),
(s3.compression = 'STORE'),
(i3 = 'string'))
var o3 = null
o3 =
t4 instanceof c2 || t4 instanceof l2
? t4
: p2.isNode && p2.isStream(t4)
? new m2(e3, t4)
: u2.prepareContent(
e3,
t4,
s3.binary,
s3.optimizedBinaryString,
s3.base64
)
var h3 = new d3(e3, o3, s3)
this.files[e3] = h3
}
var i2 = e2('./utf8'),
u2 = e2('./utils'),
l2 = e2('./stream/GenericWorker'),
a2 = e2('./stream/StreamHelper'),
f2 = e2('./defaults'),
c2 = e2('./compressedObject'),
d3 = e2('./zipObject'),
o2 = e2('./generate'),
p2 = e2('./nodejsUtils'),
m2 = e2('./nodejs/NodejsStreamInputAdapter'),
_2 = function (e3) {
'/' === e3.slice(-1) && (e3 = e3.substring(0, e3.length - 1))
var t4 = e3.lastIndexOf('/')
return 0 < t4 ? e3.substring(0, t4) : ''
},
g2 = function (e3) {
return '/' !== e3.slice(-1) && (e3 += '/'), e3
},
b2 = function (e3, t4) {
return (
(t4 = void 0 !== t4 ? t4 : f2.createFolders),
(e3 = g2(e3)),
this.files[e3] ||
s2.call(this, e3, null, { dir: true, createFolders: t4 }),
this.files[e3]
)
}
function h2(e3) {
return '[object RegExp]' === Object.prototype.toString.call(e3)
}
var n2 = {
load: function () {
throw new Error(
'This method has been removed in JSZip 3.0, please check the upgrade guide.'
)
},
forEach: function (e3) {
var t4, r3, n3
for (t4 in this.files)
(n3 = this.files[t4]),
(r3 = t4.slice(this.root.length, t4.length)) &&
t4.slice(0, this.root.length) === this.root &&
e3(r3, n3)
},
filter: function (r3) {
var n3 = []
return (
this.forEach(function (e3, t4) {
r3(e3, t4) && n3.push(t4)
}),
n3
)
},
file: function (e3, t4, r3) {
if (1 !== arguments.length)
return (e3 = this.root + e3), s2.call(this, e3, t4, r3), this
if (h2(e3)) {
var n3 = e3
return this.filter(function (e4, t5) {
return !t5.dir && n3.test(e4)
})
}
var i3 = this.files[this.root + e3]
return i3 && !i3.dir ? i3 : null
},
folder: function (r3) {
if (!r3) return this
if (h2(r3))
return this.filter(function (e4, t5) {
return t5.dir && r3.test(e4)
})
var e3 = this.root + r3,
t4 = b2.call(this, e3),
n3 = this.clone()
return (n3.root = t4.name), n3
},
remove: function (r3) {
r3 = this.root + r3
var e3 = this.files[r3]
if (
(e3 ||
('/' !== r3.slice(-1) && (r3 += '/'),
(e3 = this.files[r3])),
e3 && !e3.dir)
)
delete this.files[r3]
else
for (
var t4 = this.filter(function (e4, t5) {
return t5.name.slice(0, r3.length) === r3
}),
n3 = 0;
n3 < t4.length;
n3++
)
delete this.files[t4[n3].name]
return this
},
generate: function () {
throw new Error(
'This method has been removed in JSZip 3.0, please check the upgrade guide.'
)
},
generateInternalStream: function (e3) {
var t4,
r3 = {}
try {
if (
(((r3 = u2.extend(e3 || {}, {
streamFiles: false,
compression: 'STORE',
compressionOptions: null,
type: '',
platform: 'DOS',
comment: null,
mimeType: 'application/zip',
encodeFileName: i2.utf8encode,
})).type = r3.type.toLowerCase()),
(r3.compression = r3.compression.toUpperCase()),
'binarystring' === r3.type && (r3.type = 'string'),
!r3.type)
)
throw new Error('No output type specified.')
u2.checkSupport(r3.type),
('darwin' !== r3.platform &&
'freebsd' !== r3.platform &&
'linux' !== r3.platform &&
'sunos' !== r3.platform) ||
(r3.platform = 'UNIX'),
'win32' === r3.platform && (r3.platform = 'DOS')
var n3 = r3.comment || this.comment || ''
t4 = o2.generateWorker(this, r3, n3)
} catch (e4) {
;(t4 = new l2('error')).error(e4)
}
return new a2(t4, r3.type || 'string', r3.mimeType)
},
generateAsync: function (e3, t4) {
return this.generateInternalStream(e3).accumulate(t4)
},
generateNodeStream: function (e3, t4) {
return (
(e3 = e3 || {}).type || (e3.type = 'nodebuffer'),
this.generateInternalStream(e3).toNodejsStream(t4)
)
},
}
t3.exports = n2
},
{
'./compressedObject': 2,
'./defaults': 5,
'./generate': 9,
'./nodejs/NodejsStreamInputAdapter': 12,
'./nodejsUtils': 14,
'./stream/GenericWorker': 28,
'./stream/StreamHelper': 29,
'./utf8': 31,
'./utils': 32,
'./zipObject': 35,
},
],
16: [
function (e2, t3, r2) {
t3.exports = e2('stream')
},
{ stream: void 0 },
],
17: [
function (e2, t3, r2) {
var n2 = e2('./DataReader')
function i2(e3) {
n2.call(this, e3)
for (var t4 = 0; t4 < this.data.length; t4++)
e3[t4] = 255 & e3[t4]
}
e2('../utils').inherits(i2, n2),
(i2.prototype.byteAt = function (e3) {
return this.data[this.zero + e3]
}),
(i2.prototype.lastIndexOfSignature = function (e3) {
for (
var t4 = e3.charCodeAt(0),
r3 = e3.charCodeAt(1),
n3 = e3.charCodeAt(2),
i3 = e3.charCodeAt(3),
s2 = this.length - 4;
0 <= s2;
--s2
)
if (
this.data[s2] === t4 &&
this.data[s2 + 1] === r3 &&
this.data[s2 + 2] === n3 &&
this.data[s2 + 3] === i3
)
return s2 - this.zero
return -1
}),
(i2.prototype.readAndCheckSignature = function (e3) {
var t4 = e3.charCodeAt(0),
r3 = e3.charCodeAt(1),
n3 = e3.charCodeAt(2),
i3 = e3.charCodeAt(3),
s2 = this.readData(4)
return (
t4 === s2[0] && r3 === s2[1] && n3 === s2[2] && i3 === s2[3]
)
}),
(i2.prototype.readData = function (e3) {
if ((this.checkOffset(e3), 0 === e3)) return []
var t4 = this.data.slice(
this.zero + this.index,
this.zero + this.index + e3
)
return (this.index += e3), t4
}),
(t3.exports = i2)
},
{ '../utils': 32, './DataReader': 18 },
],
18: [
function (e2, t3, r2) {
var n2 = e2('../utils')
function i2(e3) {
;(this.data = e3),
(this.length = e3.length),
(this.index = 0),
(this.zero = 0)
}
;(i2.prototype = {
checkOffset: function (e3) {
this.checkIndex(this.index + e3)
},
checkIndex: function (e3) {
if (this.length < this.zero + e3 || e3 < 0)
throw new Error(
'End of data reached (data length = ' +
this.length +
', asked index = ' +
e3 +
'). Corrupted zip ?'
)
},
setIndex: function (e3) {
this.checkIndex(e3), (this.index = e3)
},
skip: function (e3) {
this.setIndex(this.index + e3)
},
byteAt: function () {},
readInt: function (e3) {
var t4,
r3 = 0
for (
this.checkOffset(e3), t4 = this.index + e3 - 1;
t4 >= this.index;
t4--
)
r3 = (r3 << 8) + this.byteAt(t4)
return (this.index += e3), r3
},
readString: function (e3) {
return n2.transformTo('string', this.readData(e3))
},
readData: function () {},
lastIndexOfSignature: function () {},
readAndCheckSignature: function () {},
readDate: function () {
var e3 = this.readInt(4)
return new Date(
Date.UTC(
1980 + ((e3 >> 25) & 127),
((e3 >> 21) & 15) - 1,
(e3 >> 16) & 31,
(e3 >> 11) & 31,
(e3 >> 5) & 63,
(31 & e3) << 1
)
)
},
}),
(t3.exports = i2)
},
{ '../utils': 32 },
],
19: [
function (e2, t3, r2) {
var n2 = e2('./Uint8ArrayReader')
function i2(e3) {
n2.call(this, e3)
}
e2('../utils').inherits(i2, n2),
(i2.prototype.readData = function (e3) {
this.checkOffset(e3)
var t4 = this.data.slice(
this.zero + this.index,
this.zero + this.index + e3
)
return (this.index += e3), t4
}),
(t3.exports = i2)
},
{ '../utils': 32, './Uint8ArrayReader': 21 },
],
20: [
function (e2, t3, r2) {
var n2 = e2('./DataReader')
function i2(e3) {
n2.call(this, e3)
}
e2('../utils').inherits(i2, n2),
(i2.prototype.byteAt = function (e3) {
return this.data.charCodeAt(this.zero + e3)
}),
(i2.prototype.lastIndexOfSignature = function (e3) {
return this.data.lastIndexOf(e3) - this.zero
}),
(i2.prototype.readAndCheckSignature = function (e3) {
return e3 === this.readData(4)
}),
(i2.prototype.readData = function (e3) {
this.checkOffset(e3)
var t4 = this.data.slice(
this.zero + this.index,
this.zero + this.index + e3
)
return (this.index += e3), t4
}),
(t3.exports = i2)
},
{ '../utils': 32, './DataReader': 18 },
],
21: [
function (e2, t3, r2) {
var n2 = e2('./ArrayReader')
function i2(e3) {
n2.call(this, e3)
}
e2('../utils').inherits(i2, n2),
(i2.prototype.readData = function (e3) {
if ((this.checkOffset(e3), 0 === e3)) return new Uint8Array(0)
var t4 = this.data.subarray(
this.zero + this.index,
this.zero + this.index + e3
)
return (this.index += e3), t4
}),
(t3.exports = i2)
},
{ '../utils': 32, './ArrayReader': 17 },
],
22: [
function (e2, t3, r2) {
var n2 = e2('../utils'),
i2 = e2('../support'),
s2 = e2('./ArrayReader'),
a2 = e2('./StringReader'),
o2 = e2('./NodeBufferReader'),
h2 = e2('./Uint8ArrayReader')
t3.exports = function (e3) {
var t4 = n2.getTypeOf(e3)
return (
n2.checkSupport(t4),
'string' !== t4 || i2.uint8array
? 'nodebuffer' === t4
? new o2(e3)
: i2.uint8array
? new h2(n2.transformTo('uint8array', e3))
: new s2(n2.transformTo('array', e3))
: new a2(e3)
)
}
},
{
'../support': 30,
'../utils': 32,
'./ArrayReader': 17,
'./NodeBufferReader': 19,
'./StringReader': 20,
'./Uint8ArrayReader': 21,
},
],
23: [
function (e2, t3, r2) {
;(r2.LOCAL_FILE_HEADER = 'PK'),
(r2.CENTRAL_FILE_HEADER = 'PK'),
(r2.CENTRAL_DIRECTORY_END = 'PK'),
(r2.ZIP64_CENTRAL_DIRECTORY_LOCATOR = 'PK\x07'),
(r2.ZIP64_CENTRAL_DIRECTORY_END = 'PK'),
(r2.DATA_DESCRIPTOR = 'PK\x07\b')
},
{},
],
24: [
function (e2, t3, r2) {
var n2 = e2('./GenericWorker'),
i2 = e2('../utils')
function s2(e3) {
n2.call(this, 'ConvertWorker to ' + e3), (this.destType = e3)
}
i2.inherits(s2, n2),
(s2.prototype.processChunk = function (e3) {
this.push({
data: i2.transformTo(this.destType, e3.data),
meta: e3.meta,
})
}),
(t3.exports = s2)
},
{ '../utils': 32, './GenericWorker': 28 },
],
25: [
function (e2, t3, r2) {
var n2 = e2('./GenericWorker'),
i2 = e2('../crc32')
function s2() {
n2.call(this, 'Crc32Probe'), this.withStreamInfo('crc32', 0)
}
e2('../utils').inherits(s2, n2),
(s2.prototype.processChunk = function (e3) {
;(this.streamInfo.crc32 = i2(
e3.data,
this.streamInfo.crc32 || 0
)),
this.push(e3)
}),
(t3.exports = s2)
},
{ '../crc32': 4, '../utils': 32, './GenericWorker': 28 },
],
26: [
function (e2, t3, r2) {
var n2 = e2('../utils'),
i2 = e2('./GenericWorker')
function s2(e3) {
i2.call(this, 'DataLengthProbe for ' + e3),
(this.propName = e3),
this.withStreamInfo(e3, 0)
}
n2.inherits(s2, i2),
(s2.prototype.processChunk = function (e3) {
if (e3) {
var t4 = this.streamInfo[this.propName] || 0
this.streamInfo[this.propName] = t4 + e3.data.length
}
i2.prototype.processChunk.call(this, e3)
}),
(t3.exports = s2)
},
{ '../utils': 32, './GenericWorker': 28 },
],
27: [
function (e2, t3, r2) {
var n2 = e2('../utils'),
i2 = e2('./GenericWorker')
function s2(e3) {
i2.call(this, 'DataWorker')
var t4 = this
;(this.dataIsReady = false),
(this.index = 0),
(this.max = 0),
(this.data = null),
(this.type = ''),
(this._tickScheduled = false),
e3.then(
function (e4) {
;(t4.dataIsReady = true),
(t4.data = e4),
(t4.max = (e4 && e4.length) || 0),
(t4.type = n2.getTypeOf(e4)),
t4.isPaused || t4._tickAndRepeat()
},
function (e4) {
t4.error(e4)
}
)
}
n2.inherits(s2, i2),
(s2.prototype.cleanUp = function () {
i2.prototype.cleanUp.call(this), (this.data = null)
}),
(s2.prototype.resume = function () {
return (
!!i2.prototype.resume.call(this) &&
(!this._tickScheduled &&
this.dataIsReady &&
((this._tickScheduled = true),
n2.delay(this._tickAndRepeat, [], this)),
true)
)
}),
(s2.prototype._tickAndRepeat = function () {
;(this._tickScheduled = false),
this.isPaused ||
this.isFinished ||
(this._tick(),
this.isFinished ||
(n2.delay(this._tickAndRepeat, [], this),
(this._tickScheduled = true)))
}),
(s2.prototype._tick = function () {
if (this.isPaused || this.isFinished) return false
var e3 = null,
t4 = Math.min(this.max, this.index + 16384)
if (this.index >= this.max) return this.end()
switch (this.type) {
case 'string':
e3 = this.data.substring(this.index, t4)
break
case 'uint8array':
e3 = this.data.subarray(this.index, t4)
break
case 'array':
case 'nodebuffer':
e3 = this.data.slice(this.index, t4)
}
return (
(this.index = t4),
this.push({
data: e3,
meta: {
percent: this.max ? (this.index / this.max) * 100 : 0,
},
})
)
}),
(t3.exports = s2)
},
{ '../utils': 32, './GenericWorker': 28 },
],
28: [
function (e2, t3, r2) {
function n2(e3) {
;(this.name = e3 || 'default'),
(this.streamInfo = {}),
(this.generatedError = null),
(this.extraStreamInfo = {}),
(this.isPaused = true),
(this.isFinished = false),
(this.isLocked = false),
(this._listeners = { data: [], end: [], error: [] }),
(this.previous = null)
}
;(n2.prototype = {
push: function (e3) {
this.emit('data', e3)
},
end: function () {
if (this.isFinished) return false
this.flush()
try {
this.emit('end'), this.cleanUp(), (this.isFinished = true)
} catch (e3) {
this.emit('error', e3)
}
return true
},
error: function (e3) {
return (
!this.isFinished &&
(this.isPaused
? (this.generatedError = e3)
: ((this.isFinished = true),
this.emit('error', e3),
this.previous && this.previous.error(e3),
this.cleanUp()),
true)
)
},
on: function (e3, t4) {
return this._listeners[e3].push(t4), this
},
cleanUp: function () {
;(this.streamInfo =
this.generatedError =
this.extraStreamInfo =
null),
(this._listeners = [])
},
emit: function (e3, t4) {
if (this._listeners[e3])
for (var r3 = 0; r3 < this._listeners[e3].length; r3++)
this._listeners[e3][r3].call(this, t4)
},
pipe: function (e3) {
return e3.registerPrevious(this)
},
registerPrevious: function (e3) {
if (this.isLocked)
throw new Error(
"The stream '" + this + "' has already been used."
)
;(this.streamInfo = e3.streamInfo),
this.mergeStreamInfo(),
(this.previous = e3)
var t4 = this
return (
e3.on('data', function (e4) {
t4.processChunk(e4)
}),
e3.on('end', function () {
t4.end()
}),
e3.on('error', function (e4) {
t4.error(e4)
}),
this
)
},
pause: function () {
return (
!this.isPaused &&
!this.isFinished &&
((this.isPaused = true),
this.previous && this.previous.pause(),
true)
)
},
resume: function () {
if (!this.isPaused || this.isFinished) return false
var e3 = (this.isPaused = false)
return (
this.generatedError &&
(this.error(this.generatedError), (e3 = true)),
this.previous && this.previous.resume(),
!e3
)
},
flush: function () {},
processChunk: function (e3) {
this.push(e3)
},
withStreamInfo: function (e3, t4) {
return (
(this.extraStreamInfo[e3] = t4), this.mergeStreamInfo(), this
)
},
mergeStreamInfo: function () {
for (var e3 in this.extraStreamInfo)
Object.prototype.hasOwnProperty.call(
this.extraStreamInfo,
e3
) && (this.streamInfo[e3] = this.extraStreamInfo[e3])
},
lock: function () {
if (this.isLocked)
throw new Error(
"The stream '" + this + "' has already been used."
)
;(this.isLocked = true), this.previous && this.previous.lock()
},
toString: function () {
var e3 = 'Worker ' + this.name
return this.previous ? this.previous + ' -> ' + e3 : e3
},
}),
(t3.exports = n2)
},
{},
],
29: [
function (e2, t3, r2) {
var h2 = e2('../utils'),
i2 = e2('./ConvertWorker'),
s2 = e2('./GenericWorker'),
u2 = e2('../base64'),
n2 = e2('../support'),
a2 = e2('../external'),
o2 = null
if (n2.nodestream)
try {
o2 = e2('../nodejs/NodejsStreamOutputAdapter')
} catch (e3) {}
function l2(e3, o3) {
return new a2.Promise(function (t4, r3) {
var n3 = [],
i3 = e3._internalType,
s3 = e3._outputType,
a3 = e3._mimeType
e3.on('data', function (e4, t5) {
n3.push(e4), o3 && o3(t5)
})
.on('error', function (e4) {
;(n3 = []), r3(e4)
})
.on('end', function () {
try {
var e4 = (function (e5, t5, r4) {
switch (e5) {
case 'blob':
return h2.newBlob(
h2.transformTo('arraybuffer', t5),
r4
)
case 'base64':
return u2.encode(t5)
default:
return h2.transformTo(e5, t5)
}
})(
s3,
(function (e5, t5) {
var r4,
n4 = 0,
i4 = null,
s4 = 0
for (r4 = 0; r4 < t5.length; r4++) s4 += t5[r4].length
switch (e5) {
case 'string':
return t5.join('')
case 'array':
return Array.prototype.concat.apply([], t5)
case 'uint8array':
for (
i4 = new Uint8Array(s4), r4 = 0;
r4 < t5.length;
r4++
)
i4.set(t5[r4], n4), (n4 += t5[r4].length)
return i4
case 'nodebuffer':
return Buffer.concat(t5)
default:
throw new Error(
"concat : unsupported type '" + e5 + "'"
)
}
})(i3, n3),
a3
)
t4(e4)
} catch (e5) {
r3(e5)
}
n3 = []
})
.resume()
})
}
function f2(e3, t4, r3) {
var n3 = t4
switch (t4) {
case 'blob':
case 'arraybuffer':
n3 = 'uint8array'
break
case 'base64':
n3 = 'string'
}
try {
;(this._internalType = n3),
(this._outputType = t4),
(this._mimeType = r3),
h2.checkSupport(n3),
(this._worker = e3.pipe(new i2(n3))),
e3.lock()
} catch (e4) {
;(this._worker = new s2('error')), this._worker.error(e4)
}
}
;(f2.prototype = {
accumulate: function (e3) {
return l2(this, e3)
},
on: function (e3, t4) {
var r3 = this
return (
'data' === e3
? this._worker.on(e3, function (e4) {
t4.call(r3, e4.data, e4.meta)
})
: this._worker.on(e3, function () {
h2.delay(t4, arguments, r3)
}),
this
)
},
resume: function () {
return h2.delay(this._worker.resume, [], this._worker), this
},
pause: function () {
return this._worker.pause(), this
},
toNodejsStream: function (e3) {
if (
(h2.checkSupport('nodestream'),
'nodebuffer' !== this._outputType)
)
throw new Error(
this._outputType + ' is not supported by this method'
)
return new o2(
this,
{ objectMode: 'nodebuffer' !== this._outputType },
e3
)
},
}),
(t3.exports = f2)
},
{
'../base64': 1,
'../external': 6,
'../nodejs/NodejsStreamOutputAdapter': 13,
'../support': 30,
'../utils': 32,
'./ConvertWorker': 24,
'./GenericWorker': 28,
},
],
30: [
function (e2, t3, r2) {
if (
((r2.base64 = true),
(r2.array = true),
(r2.string = true),
(r2.arraybuffer =
'undefined' != typeof ArrayBuffer &&
'undefined' != typeof Uint8Array),
(r2.nodebuffer = 'undefined' != typeof Buffer),
(r2.uint8array = 'undefined' != typeof Uint8Array),
'undefined' == typeof ArrayBuffer)
)
r2.blob = false
else {
var n2 = new ArrayBuffer(0)
try {
r2.blob = 0 === new Blob([n2], { type: 'application/zip' }).size
} catch (e3) {
try {
var i2 = new (self.BlobBuilder ||
self.WebKitBlobBuilder ||
self.MozBlobBuilder ||
self.MSBlobBuilder)()
i2.append(n2),
(r2.blob = 0 === i2.getBlob('application/zip').size)
} catch (e4) {
r2.blob = false
}
}
}
try {
r2.nodestream = !!e2('readable-stream').Readable
} catch (e3) {
r2.nodestream = false
}
},
{ 'readable-stream': 16 },
],
31: [
function (e2, t3, s2) {
for (
var o2 = e2('./utils'),
h2 = e2('./support'),
r2 = e2('./nodejsUtils'),
n2 = e2('./stream/GenericWorker'),
u2 = new Array(256),
i2 = 0;
i2 < 256;
i2++
)
u2[i2] =
252 <= i2
? 6
: 248 <= i2
? 5
: 240 <= i2
? 4
: 224 <= i2
? 3
: 192 <= i2
? 2
: 1
u2[254] = u2[254] = 1
function a2() {
n2.call(this, 'utf-8 decode'), (this.leftOver = null)
}
function l2() {
n2.call(this, 'utf-8 encode')
}
;(s2.utf8encode = function (e3) {
return h2.nodebuffer
? r2.newBufferFrom(e3, 'utf-8')
: (function (e4) {
var t4,
r3,
n3,
i3,
s3,
a3 = e4.length,
o3 = 0
for (i3 = 0; i3 < a3; i3++)
55296 == (64512 & (r3 = e4.charCodeAt(i3))) &&
i3 + 1 < a3 &&
56320 == (64512 & (n3 = e4.charCodeAt(i3 + 1))) &&
((r3 = 65536 + ((r3 - 55296) << 10) + (n3 - 56320)),
i3++),
(o3 +=
r3 < 128 ? 1 : r3 < 2048 ? 2 : r3 < 65536 ? 3 : 4)
for (
t4 = h2.uint8array ? new Uint8Array(o3) : new Array(o3),
i3 = s3 = 0;
s3 < o3;
i3++
)
55296 == (64512 & (r3 = e4.charCodeAt(i3))) &&
i3 + 1 < a3 &&
56320 == (64512 & (n3 = e4.charCodeAt(i3 + 1))) &&
((r3 = 65536 + ((r3 - 55296) << 10) + (n3 - 56320)),
i3++),
r3 < 128
? (t4[s3++] = r3)
: (r3 < 2048
? (t4[s3++] = 192 | (r3 >>> 6))
: (r3 < 65536
? (t4[s3++] = 224 | (r3 >>> 12))
: ((t4[s3++] = 240 | (r3 >>> 18)),
(t4[s3++] = 128 | ((r3 >>> 12) & 63))),
(t4[s3++] = 128 | ((r3 >>> 6) & 63))),
(t4[s3++] = 128 | (63 & r3)))
return t4
})(e3)
}),
(s2.utf8decode = function (e3) {
return h2.nodebuffer
? o2.transformTo('nodebuffer', e3).toString('utf-8')
: (function (e4) {
var t4,
r3,
n3,
i3,
s3 = e4.length,
a3 = new Array(2 * s3)
for (t4 = r3 = 0; t4 < s3; )
if ((n3 = e4[t4++]) < 128) a3[r3++] = n3
else if (4 < (i3 = u2[n3]))
(a3[r3++] = 65533), (t4 += i3 - 1)
else {
for (
n3 &= 2 === i3 ? 31 : 3 === i3 ? 15 : 7;
1 < i3 && t4 < s3;
)
(n3 = (n3 << 6) | (63 & e4[t4++])), i3--
1 < i3
? (a3[r3++] = 65533)
: n3 < 65536
? (a3[r3++] = n3)
: ((n3 -= 65536),
(a3[r3++] = 55296 | ((n3 >> 10) & 1023)),
(a3[r3++] = 56320 | (1023 & n3)))
}
return (
a3.length !== r3 &&
(a3.subarray
? (a3 = a3.subarray(0, r3))
: (a3.length = r3)),
o2.applyFromCharCode(a3)
)
})(
(e3 = o2.transformTo(
h2.uint8array ? 'uint8array' : 'array',
e3
))
)
}),
o2.inherits(a2, n2),
(a2.prototype.processChunk = function (e3) {
var t4 = o2.transformTo(
h2.uint8array ? 'uint8array' : 'array',
e3.data
)
if (this.leftOver && this.leftOver.length) {
if (h2.uint8array) {
var r3 = t4
;(t4 = new Uint8Array(
r3.length + this.leftOver.length
)).set(this.leftOver, 0),
t4.set(r3, this.leftOver.length)
} else t4 = this.leftOver.concat(t4)
this.leftOver = null
}
var n3 = (function (e4, t5) {
var r4
for (
(t5 = t5 || e4.length) > e4.length && (t5 = e4.length),
r4 = t5 - 1;
0 <= r4 && 128 == (192 & e4[r4]);
)
r4--
return r4 < 0
? t5
: 0 === r4
? t5
: r4 + u2[e4[r4]] > t5
? r4
: t5
})(t4),
i3 = t4
n3 !== t4.length &&
(h2.uint8array
? ((i3 = t4.subarray(0, n3)),
(this.leftOver = t4.subarray(n3, t4.length)))
: ((i3 = t4.slice(0, n3)),
(this.leftOver = t4.slice(n3, t4.length)))),
this.push({ data: s2.utf8decode(i3), meta: e3.meta })
}),
(a2.prototype.flush = function () {
this.leftOver &&
this.leftOver.length &&
(this.push({ data: s2.utf8decode(this.leftOver), meta: {} }),
(this.leftOver = null))
}),
(s2.Utf8DecodeWorker = a2),
o2.inherits(l2, n2),
(l2.prototype.processChunk = function (e3) {
this.push({ data: s2.utf8encode(e3.data), meta: e3.meta })
}),
(s2.Utf8EncodeWorker = l2)
},
{
'./nodejsUtils': 14,
'./stream/GenericWorker': 28,
'./support': 30,
'./utils': 32,
},
],
32: [
function (e2, t3, a2) {
var o2 = e2('./support'),
h2 = e2('./base64'),
r2 = e2('./nodejsUtils'),
u2 = e2('./external')
function n2(e3) {
return e3
}
function l2(e3, t4) {
for (var r3 = 0; r3 < e3.length; ++r3)
t4[r3] = 255 & e3.charCodeAt(r3)
return t4
}
e2('setimmediate'),
(a2.newBlob = function (t4, r3) {
a2.checkSupport('blob')
try {
return new Blob([t4], { type: r3 })
} catch (e3) {
try {
var n3 = new (self.BlobBuilder ||
self.WebKitBlobBuilder ||
self.MozBlobBuilder ||
self.MSBlobBuilder)()
return n3.append(t4), n3.getBlob(r3)
} catch (e4) {
throw new Error("Bug : can't construct the Blob.")
}
}
})
var i2 = {
stringifyByChunk: function (e3, t4, r3) {
var n3 = [],
i3 = 0,
s3 = e3.length
if (s3 <= r3) return String.fromCharCode.apply(null, e3)
for (; i3 < s3; )
'array' === t4 || 'nodebuffer' === t4
? n3.push(
String.fromCharCode.apply(
null,
e3.slice(i3, Math.min(i3 + r3, s3))
)
)
: n3.push(
String.fromCharCode.apply(
null,
e3.subarray(i3, Math.min(i3 + r3, s3))
)
),
(i3 += r3)
return n3.join('')
},
stringifyByChar: function (e3) {
for (var t4 = '', r3 = 0; r3 < e3.length; r3++)
t4 += String.fromCharCode(e3[r3])
return t4
},
applyCanBeUsed: {
uint8array: (function () {
try {
return (
o2.uint8array &&
1 ===
String.fromCharCode.apply(null, new Uint8Array(1))
.length
)
} catch (e3) {
return false
}
})(),
nodebuffer: (function () {
try {
return (
o2.nodebuffer &&
1 ===
String.fromCharCode.apply(null, r2.allocBuffer(1))
.length
)
} catch (e3) {
return false
}
})(),
},
}
function s2(e3) {
var t4 = 65536,
r3 = a2.getTypeOf(e3),
n3 = true
if (
('uint8array' === r3
? (n3 = i2.applyCanBeUsed.uint8array)
: 'nodebuffer' === r3 && (n3 = i2.applyCanBeUsed.nodebuffer),
n3)
)
for (; 1 < t4; )
try {
return i2.stringifyByChunk(e3, r3, t4)
} catch (e4) {
t4 = Math.floor(t4 / 2)
}
return i2.stringifyByChar(e3)
}
function f2(e3, t4) {
for (var r3 = 0; r3 < e3.length; r3++) t4[r3] = e3[r3]
return t4
}
a2.applyFromCharCode = s2
var c2 = {}
;(c2.string = {
string: n2,
array: function (e3) {
return l2(e3, new Array(e3.length))
},
arraybuffer: function (e3) {
return c2.string.uint8array(e3).buffer
},
uint8array: function (e3) {
return l2(e3, new Uint8Array(e3.length))
},
nodebuffer: function (e3) {
return l2(e3, r2.allocBuffer(e3.length))
},
}),
(c2.array = {
string: s2,
array: n2,
arraybuffer: function (e3) {
return new Uint8Array(e3).buffer
},
uint8array: function (e3) {
return new Uint8Array(e3)
},
nodebuffer: function (e3) {
return r2.newBufferFrom(e3)
},
}),
(c2.arraybuffer = {
string: function (e3) {
return s2(new Uint8Array(e3))
},
array: function (e3) {
return f2(new Uint8Array(e3), new Array(e3.byteLength))
},
arraybuffer: n2,
uint8array: function (e3) {
return new Uint8Array(e3)
},
nodebuffer: function (e3) {
return r2.newBufferFrom(new Uint8Array(e3))
},
}),
(c2.uint8array = {
string: s2,
array: function (e3) {
return f2(e3, new Array(e3.length))
},
arraybuffer: function (e3) {
return e3.buffer
},
uint8array: n2,
nodebuffer: function (e3) {
return r2.newBufferFrom(e3)
},
}),
(c2.nodebuffer = {
string: s2,
array: function (e3) {
return f2(e3, new Array(e3.length))
},
arraybuffer: function (e3) {
return c2.nodebuffer.uint8array(e3).buffer
},
uint8array: function (e3) {
return f2(e3, new Uint8Array(e3.length))
},
nodebuffer: n2,
}),
(a2.transformTo = function (e3, t4) {
if (((t4 = t4 || ''), !e3)) return t4
a2.checkSupport(e3)
var r3 = a2.getTypeOf(t4)
return c2[r3][e3](t4)
}),
(a2.resolve = function (e3) {
for (
var t4 = e3.split('/'), r3 = [], n3 = 0;
n3 < t4.length;
n3++
) {
var i3 = t4[n3]
'.' === i3 ||
('' === i3 && 0 !== n3 && n3 !== t4.length - 1) ||
('..' === i3 ? r3.pop() : r3.push(i3))
}
return r3.join('/')
}),
(a2.getTypeOf = function (e3) {
return 'string' == typeof e3
? 'string'
: '[object Array]' === Object.prototype.toString.call(e3)
? 'array'
: o2.nodebuffer && r2.isBuffer(e3)
? 'nodebuffer'
: o2.uint8array && e3 instanceof Uint8Array
? 'uint8array'
: o2.arraybuffer && e3 instanceof ArrayBuffer
? 'arraybuffer'
: void 0
}),
(a2.checkSupport = function (e3) {
if (!o2[e3.toLowerCase()])
throw new Error(e3 + ' is not supported by this platform')
}),
(a2.MAX_VALUE_16BITS = 65535),
(a2.MAX_VALUE_32BITS = -1),
(a2.pretty = function (e3) {
var t4,
r3,
n3 = ''
for (r3 = 0; r3 < (e3 || '').length; r3++)
n3 +=
'\\x' +
((t4 = e3.charCodeAt(r3)) < 16 ? '0' : '') +
t4.toString(16).toUpperCase()
return n3
}),
(a2.delay = function (e3, t4, r3) {
setImmediate(function () {
e3.apply(r3 || null, t4 || [])
})
}),
(a2.inherits = function (e3, t4) {
function r3() {}
;(r3.prototype = t4.prototype), (e3.prototype = new r3())
}),
(a2.extend = function () {
var e3,
t4,
r3 = {}
for (e3 = 0; e3 < arguments.length; e3++)
for (t4 in arguments[e3])
Object.prototype.hasOwnProperty.call(arguments[e3], t4) &&
void 0 === r3[t4] &&
(r3[t4] = arguments[e3][t4])
return r3
}),
(a2.prepareContent = function (r3, e3, n3, i3, s3) {
return u2.Promise.resolve(e3)
.then(function (n4) {
return o2.blob &&
(n4 instanceof Blob ||
-1 !==
['[object File]', '[object Blob]'].indexOf(
Object.prototype.toString.call(n4)
)) &&
'undefined' != typeof FileReader
? new u2.Promise(function (t4, r4) {
var e4 = new FileReader()
;(e4.onload = function (e5) {
t4(e5.target.result)
}),
(e4.onerror = function (e5) {
r4(e5.target.error)
}),
e4.readAsArrayBuffer(n4)
})
: n4
})
.then(function (e4) {
var t4 = a2.getTypeOf(e4)
return t4
? ('arraybuffer' === t4
? (e4 = a2.transformTo('uint8array', e4))
: 'string' === t4 &&
(s3
? (e4 = h2.decode(e4))
: n3 &&
true !== i3 &&
(e4 = (function (e5) {
return l2(
e5,
o2.uint8array
? new Uint8Array(e5.length)
: new Array(e5.length)
)
})(e4))),
e4)
: u2.Promise.reject(
new Error(
"Can't read the data of '" +
r3 +
"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"
)
)
})
})
},
{
'./base64': 1,
'./external': 6,
'./nodejsUtils': 14,
'./support': 30,
setimmediate: 54,
},
],
33: [
function (e2, t3, r2) {
var n2 = e2('./reader/readerFor'),
i2 = e2('./utils'),
s2 = e2('./signature'),
a2 = e2('./zipEntry'),
o2 = e2('./support')
function h2(e3) {
;(this.files = []), (this.loadOptions = e3)
}
;(h2.prototype = {
checkSignature: function (e3) {
if (!this.reader.readAndCheckSignature(e3)) {
this.reader.index -= 4
var t4 = this.reader.readString(4)
throw new Error(
'Corrupted zip or bug: unexpected signature (' +
i2.pretty(t4) +
', expected ' +
i2.pretty(e3) +
')'
)
}
},
isSignature: function (e3, t4) {
var r3 = this.reader.index
this.reader.setIndex(e3)
var n3 = this.reader.readString(4) === t4
return this.reader.setIndex(r3), n3
},
readBlockEndOfCentral: function () {
;(this.diskNumber = this.reader.readInt(2)),
(this.diskWithCentralDirStart = this.reader.readInt(2)),
(this.centralDirRecordsOnThisDisk = this.reader.readInt(2)),
(this.centralDirRecords = this.reader.readInt(2)),
(this.centralDirSize = this.reader.readInt(4)),
(this.centralDirOffset = this.reader.readInt(4)),
(this.zipCommentLength = this.reader.readInt(2))
var e3 = this.reader.readData(this.zipCommentLength),
t4 = o2.uint8array ? 'uint8array' : 'array',
r3 = i2.transformTo(t4, e3)
this.zipComment = this.loadOptions.decodeFileName(r3)
},
readBlockZip64EndOfCentral: function () {
;(this.zip64EndOfCentralSize = this.reader.readInt(8)),
this.reader.skip(4),
(this.diskNumber = this.reader.readInt(4)),
(this.diskWithCentralDirStart = this.reader.readInt(4)),
(this.centralDirRecordsOnThisDisk = this.reader.readInt(8)),
(this.centralDirRecords = this.reader.readInt(8)),
(this.centralDirSize = this.reader.readInt(8)),
(this.centralDirOffset = this.reader.readInt(8)),
(this.zip64ExtensibleData = {})
for (
var e3, t4, r3, n3 = this.zip64EndOfCentralSize - 44;
0 < n3;
)
(e3 = this.reader.readInt(2)),
(t4 = this.reader.readInt(4)),
(r3 = this.reader.readData(t4)),
(this.zip64ExtensibleData[e3] = {
id: e3,
length: t4,
value: r3,
})
},
readBlockZip64EndOfCentralLocator: function () {
if (
((this.diskWithZip64CentralDirStart = this.reader.readInt(4)),
(this.relativeOffsetEndOfZip64CentralDir =
this.reader.readInt(8)),
(this.disksCount = this.reader.readInt(4)),
1 < this.disksCount)
)
throw new Error('Multi-volumes zip are not supported')
},
readLocalFiles: function () {
var e3, t4
for (e3 = 0; e3 < this.files.length; e3++)
(t4 = this.files[e3]),
this.reader.setIndex(t4.localHeaderOffset),
this.checkSignature(s2.LOCAL_FILE_HEADER),
t4.readLocalPart(this.reader),
t4.handleUTF8(),
t4.processAttributes()
},
readCentralDir: function () {
var e3
for (
this.reader.setIndex(this.centralDirOffset);
this.reader.readAndCheckSignature(s2.CENTRAL_FILE_HEADER);
)
(e3 = new a2(
{ zip64: this.zip64 },
this.loadOptions
)).readCentralPart(this.reader),
this.files.push(e3)
if (
this.centralDirRecords !== this.files.length &&
0 !== this.centralDirRecords &&
0 === this.files.length
)
throw new Error(
'Corrupted zip or bug: expected ' +
this.centralDirRecords +
' records in central dir, got ' +
this.files.length
)
},
readEndOfCentral: function () {
var e3 = this.reader.lastIndexOfSignature(
s2.CENTRAL_DIRECTORY_END
)
if (e3 < 0)
throw !this.isSignature(0, s2.LOCAL_FILE_HEADER)
? new Error(
"Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html"
)
: new Error(
"Corrupted zip: can't find end of central directory"
)
this.reader.setIndex(e3)
var t4 = e3
if (
(this.checkSignature(s2.CENTRAL_DIRECTORY_END),
this.readBlockEndOfCentral(),
this.diskNumber === i2.MAX_VALUE_16BITS ||
this.diskWithCentralDirStart === i2.MAX_VALUE_16BITS ||
this.centralDirRecordsOnThisDisk === i2.MAX_VALUE_16BITS ||
this.centralDirRecords === i2.MAX_VALUE_16BITS ||
this.centralDirSize === i2.MAX_VALUE_32BITS ||
this.centralDirOffset === i2.MAX_VALUE_32BITS)
) {
if (
((this.zip64 = true),
(e3 = this.reader.lastIndexOfSignature(
s2.ZIP64_CENTRAL_DIRECTORY_LOCATOR
)) < 0)
)
throw new Error(
"Corrupted zip: can't find the ZIP64 end of central directory locator"
)
if (
(this.reader.setIndex(e3),
this.checkSignature(s2.ZIP64_CENTRAL_DIRECTORY_LOCATOR),
this.readBlockZip64EndOfCentralLocator(),
!this.isSignature(
this.relativeOffsetEndOfZip64CentralDir,
s2.ZIP64_CENTRAL_DIRECTORY_END
) &&
((this.relativeOffsetEndOfZip64CentralDir =
this.reader.lastIndexOfSignature(
s2.ZIP64_CENTRAL_DIRECTORY_END
)),
this.relativeOffsetEndOfZip64CentralDir < 0))
)
throw new Error(
"Corrupted zip: can't find the ZIP64 end of central directory"
)
this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),
this.checkSignature(s2.ZIP64_CENTRAL_DIRECTORY_END),
this.readBlockZip64EndOfCentral()
}
var r3 = this.centralDirOffset + this.centralDirSize
this.zip64 &&
((r3 += 20), (r3 += 12 + this.zip64EndOfCentralSize))
var n3 = t4 - r3
if (0 < n3)
this.isSignature(t4, s2.CENTRAL_FILE_HEADER) ||
(this.reader.zero = n3)
else if (n3 < 0)
throw new Error(
'Corrupted zip: missing ' + Math.abs(n3) + ' bytes.'
)
},
prepareReader: function (e3) {
this.reader = n2(e3)
},
load: function (e3) {
this.prepareReader(e3),
this.readEndOfCentral(),
this.readCentralDir(),
this.readLocalFiles()
},
}),
(t3.exports = h2)
},
{
'./reader/readerFor': 22,
'./signature': 23,
'./support': 30,
'./utils': 32,
'./zipEntry': 34,
},
],
34: [
function (e2, t3, r2) {
var n2 = e2('./reader/readerFor'),
s2 = e2('./utils'),
i2 = e2('./compressedObject'),
a2 = e2('./crc32'),
o2 = e2('./utf8'),
h2 = e2('./compressions'),
u2 = e2('./support')
function l2(e3, t4) {
;(this.options = e3), (this.loadOptions = t4)
}
;(l2.prototype = {
isEncrypted: function () {
return 1 == (1 & this.bitFlag)
},
useUTF8: function () {
return 2048 == (2048 & this.bitFlag)
},
readLocalPart: function (e3) {
var t4, r3
if (
(e3.skip(22),
(this.fileNameLength = e3.readInt(2)),
(r3 = e3.readInt(2)),
(this.fileName = e3.readData(this.fileNameLength)),
e3.skip(r3),
-1 === this.compressedSize || -1 === this.uncompressedSize)
)
throw new Error(
"Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)"
)
if (
null ===
(t4 = (function (e4) {
for (var t5 in h2)
if (
Object.prototype.hasOwnProperty.call(h2, t5) &&
h2[t5].magic === e4
)
return h2[t5]
return null
})(this.compressionMethod))
)
throw new Error(
'Corrupted zip : compression ' +
s2.pretty(this.compressionMethod) +
' unknown (inner file : ' +
s2.transformTo('string', this.fileName) +
')'
)
this.decompressed = new i2(
this.compressedSize,
this.uncompressedSize,
this.crc32,
t4,
e3.readData(this.compressedSize)
)
},
readCentralPart: function (e3) {
;(this.versionMadeBy = e3.readInt(2)),
e3.skip(2),
(this.bitFlag = e3.readInt(2)),
(this.compressionMethod = e3.readString(2)),
(this.date = e3.readDate()),
(this.crc32 = e3.readInt(4)),
(this.compressedSize = e3.readInt(4)),
(this.uncompressedSize = e3.readInt(4))
var t4 = e3.readInt(2)
if (
((this.extraFieldsLength = e3.readInt(2)),
(this.fileCommentLength = e3.readInt(2)),
(this.diskNumberStart = e3.readInt(2)),
(this.internalFileAttributes = e3.readInt(2)),
(this.externalFileAttributes = e3.readInt(4)),
(this.localHeaderOffset = e3.readInt(4)),
this.isEncrypted())
)
throw new Error('Encrypted zip are not supported')
e3.skip(t4),
this.readExtraFields(e3),
this.parseZIP64ExtraField(e3),
(this.fileComment = e3.readData(this.fileCommentLength))
},
processAttributes: function () {
;(this.unixPermissions = null), (this.dosPermissions = null)
var e3 = this.versionMadeBy >> 8
;(this.dir = !!(16 & this.externalFileAttributes)),
0 == e3 &&
(this.dosPermissions = 63 & this.externalFileAttributes),
3 == e3 &&
(this.unixPermissions =
(this.externalFileAttributes >> 16) & 65535),
this.dir ||
'/' !== this.fileNameStr.slice(-1) ||
(this.dir = true)
},
parseZIP64ExtraField: function () {
if (this.extraFields[1]) {
var e3 = n2(this.extraFields[1].value)
this.uncompressedSize === s2.MAX_VALUE_32BITS &&
(this.uncompressedSize = e3.readInt(8)),
this.compressedSize === s2.MAX_VALUE_32BITS &&
(this.compressedSize = e3.readInt(8)),
this.localHeaderOffset === s2.MAX_VALUE_32BITS &&
(this.localHeaderOffset = e3.readInt(8)),
this.diskNumberStart === s2.MAX_VALUE_32BITS &&
(this.diskNumberStart = e3.readInt(4))
}
},
readExtraFields: function (e3) {
var t4,
r3,
n3,
i3 = e3.index + this.extraFieldsLength
for (
this.extraFields || (this.extraFields = {});
e3.index + 4 < i3;
)
(t4 = e3.readInt(2)),
(r3 = e3.readInt(2)),
(n3 = e3.readData(r3)),
(this.extraFields[t4] = { id: t4, length: r3, value: n3 })
e3.setIndex(i3)
},
handleUTF8: function () {
var e3 = u2.uint8array ? 'uint8array' : 'array'
if (this.useUTF8())
(this.fileNameStr = o2.utf8decode(this.fileName)),
(this.fileCommentStr = o2.utf8decode(this.fileComment))
else {
var t4 = this.findExtraFieldUnicodePath()
if (null !== t4) this.fileNameStr = t4
else {
var r3 = s2.transformTo(e3, this.fileName)
this.fileNameStr = this.loadOptions.decodeFileName(r3)
}
var n3 = this.findExtraFieldUnicodeComment()
if (null !== n3) this.fileCommentStr = n3
else {
var i3 = s2.transformTo(e3, this.fileComment)
this.fileCommentStr = this.loadOptions.decodeFileName(i3)
}
}
},
findExtraFieldUnicodePath: function () {
var e3 = this.extraFields[28789]
if (e3) {
var t4 = n2(e3.value)
return 1 !== t4.readInt(1)
? null
: a2(this.fileName) !== t4.readInt(4)
? null
: o2.utf8decode(t4.readData(e3.length - 5))
}
return null
},
findExtraFieldUnicodeComment: function () {
var e3 = this.extraFields[25461]
if (e3) {
var t4 = n2(e3.value)
return 1 !== t4.readInt(1)
? null
: a2(this.fileComment) !== t4.readInt(4)
? null
: o2.utf8decode(t4.readData(e3.length - 5))
}
return null
},
}),
(t3.exports = l2)
},
{
'./compressedObject': 2,
'./compressions': 3,
'./crc32': 4,
'./reader/readerFor': 22,
'./support': 30,
'./utf8': 31,
'./utils': 32,
},
],
35: [
function (e2, t3, r2) {
function n2(e3, t4, r3) {
;(this.name = e3),
(this.dir = r3.dir),
(this.date = r3.date),
(this.comment = r3.comment),
(this.unixPermissions = r3.unixPermissions),
(this.dosPermissions = r3.dosPermissions),
(this._data = t4),
(this._dataBinary = r3.binary),
(this.options = {
compression: r3.compression,
compressionOptions: r3.compressionOptions,
})
}
var s2 = e2('./stream/StreamHelper'),
i2 = e2('./stream/DataWorker'),
a2 = e2('./utf8'),
o2 = e2('./compressedObject'),
h2 = e2('./stream/GenericWorker')
n2.prototype = {
internalStream: function (e3) {
var t4 = null,
r3 = 'string'
try {
if (!e3) throw new Error('No output type specified.')
var n3 = 'string' === (r3 = e3.toLowerCase()) || 'text' === r3
;('binarystring' !== r3 && 'text' !== r3) || (r3 = 'string'),
(t4 = this._decompressWorker())
var i3 = !this._dataBinary
i3 && !n3 && (t4 = t4.pipe(new a2.Utf8EncodeWorker())),
!i3 && n3 && (t4 = t4.pipe(new a2.Utf8DecodeWorker()))
} catch (e4) {
;(t4 = new h2('error')).error(e4)
}
return new s2(t4, r3, '')
},
async: function (e3, t4) {
return this.internalStream(e3).accumulate(t4)
},
nodeStream: function (e3, t4) {
return this.internalStream(e3 || 'nodebuffer').toNodejsStream(
t4
)
},
_compressWorker: function (e3, t4) {
if (
this._data instanceof o2 &&
this._data.compression.magic === e3.magic
)
return this._data.getCompressedWorker()
var r3 = this._decompressWorker()
return (
this._dataBinary || (r3 = r3.pipe(new a2.Utf8EncodeWorker())),
o2.createWorkerFrom(r3, e3, t4)
)
},
_decompressWorker: function () {
return this._data instanceof o2
? this._data.getContentWorker()
: this._data instanceof h2
? this._data
: new i2(this._data)
},
}
for (
var u2 = [
'asText',
'asBinary',
'asNodeBuffer',
'asUint8Array',
'asArrayBuffer',
],
l2 = function () {
throw new Error(
'This method has been removed in JSZip 3.0, please check the upgrade guide.'
)
},
f2 = 0;
f2 < u2.length;
f2++
)
n2.prototype[u2[f2]] = l2
t3.exports = n2
},
{
'./compressedObject': 2,
'./stream/DataWorker': 27,
'./stream/GenericWorker': 28,
'./stream/StreamHelper': 29,
'./utf8': 31,
},
],
36: [
function (e2, l2, t3) {
;(function (t4) {
var r2,
n2,
e3 = t4.MutationObserver || t4.WebKitMutationObserver
if (e3) {
var i2 = 0,
s2 = new e3(u2),
a2 = t4.document.createTextNode('')
s2.observe(a2, { characterData: true }),
(r2 = function () {
a2.data = i2 = ++i2 % 2
})
} else if (t4.setImmediate || void 0 === t4.MessageChannel)
r2 =
'document' in t4 &&
'onreadystatechange' in t4.document.createElement('script')
? function () {
var e4 = t4.document.createElement('script')
;(e4.onreadystatechange = function () {
u2(),
(e4.onreadystatechange = null),
e4.parentNode.removeChild(e4),
(e4 = null)
}),
t4.document.documentElement.appendChild(e4)
}
: function () {
setTimeout(u2, 0)
}
else {
var o2 = new t4.MessageChannel()
;(o2.port1.onmessage = u2),
(r2 = function () {
o2.port2.postMessage(0)
})
}
var h2 = []
function u2() {
var e4, t5
n2 = true
for (var r3 = h2.length; r3; ) {
for (t5 = h2, h2 = [], e4 = -1; ++e4 < r3; ) t5[e4]()
r3 = h2.length
}
n2 = false
}
l2.exports = function (e4) {
1 !== h2.push(e4) || n2 || r2()
}
}).call(
this,
'undefined' != typeof commonjsGlobal
? commonjsGlobal
: 'undefined' != typeof self
? self
: 'undefined' != typeof window
? window
: {}
)
},
{},
],
37: [
function (e2, t3, r2) {
var i2 = e2('immediate')
function u2() {}
var l2 = {},
s2 = ['REJECTED'],
a2 = ['FULFILLED'],
n2 = ['PENDING']
function o2(e3) {
if ('function' != typeof e3)
throw new TypeError('resolver must be a function')
;(this.state = n2),
(this.queue = []),
(this.outcome = void 0),
e3 !== u2 && d3(this, e3)
}
function h2(e3, t4, r3) {
;(this.promise = e3),
'function' == typeof t4 &&
((this.onFulfilled = t4),
(this.callFulfilled = this.otherCallFulfilled)),
'function' == typeof r3 &&
((this.onRejected = r3),
(this.callRejected = this.otherCallRejected))
}
function f2(t4, r3, n3) {
i2(function () {
var e3
try {
e3 = r3(n3)
} catch (e4) {
return l2.reject(t4, e4)
}
e3 === t4
? l2.reject(
t4,
new TypeError('Cannot resolve promise with itself')
)
: l2.resolve(t4, e3)
})
}
function c2(e3) {
var t4 = e3 && e3.then
if (
e3 &&
('object' == typeof e3 || 'function' == typeof e3) &&
'function' == typeof t4
)
return function () {
t4.apply(e3, arguments)
}
}
function d3(t4, e3) {
var r3 = false
function n3(e4) {
r3 || ((r3 = true), l2.reject(t4, e4))
}
function i3(e4) {
r3 || ((r3 = true), l2.resolve(t4, e4))
}
var s3 = p2(function () {
e3(i3, n3)
})
'error' === s3.status && n3(s3.value)
}
function p2(e3, t4) {
var r3 = {}
try {
;(r3.value = e3(t4)), (r3.status = 'success')
} catch (e4) {
;(r3.status = 'error'), (r3.value = e4)
}
return r3
}
;((t3.exports = o2).prototype.finally = function (t4) {
if ('function' != typeof t4) return this
var r3 = this.constructor
return this.then(
function (e3) {
return r3.resolve(t4()).then(function () {
return e3
})
},
function (e3) {
return r3.resolve(t4()).then(function () {
throw e3
})
}
)
}),
(o2.prototype.catch = function (e3) {
return this.then(null, e3)
}),
(o2.prototype.then = function (e3, t4) {
if (
('function' != typeof e3 && this.state === a2) ||
('function' != typeof t4 && this.state === s2)
)
return this
var r3 = new this.constructor(u2)
this.state !== n2
? f2(r3, this.state === a2 ? e3 : t4, this.outcome)
: this.queue.push(new h2(r3, e3, t4))
return r3
}),
(h2.prototype.callFulfilled = function (e3) {
l2.resolve(this.promise, e3)
}),
(h2.prototype.otherCallFulfilled = function (e3) {
f2(this.promise, this.onFulfilled, e3)
}),
(h2.prototype.callRejected = function (e3) {
l2.reject(this.promise, e3)
}),
(h2.prototype.otherCallRejected = function (e3) {
f2(this.promise, this.onRejected, e3)
}),
(l2.resolve = function (e3, t4) {
var r3 = p2(c2, t4)
if ('error' === r3.status) return l2.reject(e3, r3.value)
var n3 = r3.value
if (n3) d3(e3, n3)
else {
;(e3.state = a2), (e3.outcome = t4)
for (var i3 = -1, s3 = e3.queue.length; ++i3 < s3; )
e3.queue[i3].callFulfilled(t4)
}
return e3
}),
(l2.reject = function (e3, t4) {
;(e3.state = s2), (e3.outcome = t4)
for (var r3 = -1, n3 = e3.queue.length; ++r3 < n3; )
e3.queue[r3].callRejected(t4)
return e3
}),
(o2.resolve = function (e3) {
if (e3 instanceof this) return e3
return l2.resolve(new this(u2), e3)
}),
(o2.reject = function (e3) {
var t4 = new this(u2)
return l2.reject(t4, e3)
}),
(o2.all = function (e3) {
var r3 = this
if ('[object Array]' !== Object.prototype.toString.call(e3))
return this.reject(new TypeError('must be an array'))
var n3 = e3.length,
i3 = false
if (!n3) return this.resolve([])
var s3 = new Array(n3),
a3 = 0,
t4 = -1,
o3 = new this(u2)
for (; ++t4 < n3; ) h3(e3[t4], t4)
return o3
function h3(e4, t5) {
r3.resolve(e4).then(
function (e5) {
;(s3[t5] = e5),
++a3 !== n3 || i3 || ((i3 = true), l2.resolve(o3, s3))
},
function (e5) {
i3 || ((i3 = true), l2.reject(o3, e5))
}
)
}
}),
(o2.race = function (e3) {
var t4 = this
if ('[object Array]' !== Object.prototype.toString.call(e3))
return this.reject(new TypeError('must be an array'))
var r3 = e3.length,
n3 = false
if (!r3) return this.resolve([])
var i3 = -1,
s3 = new this(u2)
for (; ++i3 < r3; )
(a3 = e3[i3]),
t4.resolve(a3).then(
function (e4) {
n3 || ((n3 = true), l2.resolve(s3, e4))
},
function (e4) {
n3 || ((n3 = true), l2.reject(s3, e4))
}
)
var a3
return s3
})
},
{ immediate: 36 },
],
38: [
function (e2, t3, r2) {
var n2 = {}
;(0, e2('./lib/utils/common').assign)(
n2,
e2('./lib/deflate'),
e2('./lib/inflate'),
e2('./lib/zlib/constants')
),
(t3.exports = n2)
},
{
'./lib/deflate': 39,
'./lib/inflate': 40,
'./lib/utils/common': 41,
'./lib/zlib/constants': 44,
},
],
39: [
function (e2, t3, r2) {
var a2 = e2('./zlib/deflate'),
o2 = e2('./utils/common'),
h2 = e2('./utils/strings'),
i2 = e2('./zlib/messages'),
s2 = e2('./zlib/zstream'),
u2 = Object.prototype.toString,
l2 = 0,
f2 = -1,
c2 = 0,
d3 = 8
function p2(e3) {
if (!(this instanceof p2)) return new p2(e3)
this.options = o2.assign(
{
level: f2,
method: d3,
chunkSize: 16384,
windowBits: 15,
memLevel: 8,
strategy: c2,
to: '',
},
e3 || {}
)
var t4 = this.options
t4.raw && 0 < t4.windowBits
? (t4.windowBits = -t4.windowBits)
: t4.gzip &&
0 < t4.windowBits &&
t4.windowBits < 16 &&
(t4.windowBits += 16),
(this.err = 0),
(this.msg = ''),
(this.ended = false),
(this.chunks = []),
(this.strm = new s2()),
(this.strm.avail_out = 0)
var r3 = a2.deflateInit2(
this.strm,
t4.level,
t4.method,
t4.windowBits,
t4.memLevel,
t4.strategy
)
if (r3 !== l2) throw new Error(i2[r3])
if (
(t4.header && a2.deflateSetHeader(this.strm, t4.header),
t4.dictionary)
) {
var n3
if (
((n3 =
'string' == typeof t4.dictionary
? h2.string2buf(t4.dictionary)
: '[object ArrayBuffer]' === u2.call(t4.dictionary)
? new Uint8Array(t4.dictionary)
: t4.dictionary),
(r3 = a2.deflateSetDictionary(this.strm, n3)) !== l2)
)
throw new Error(i2[r3])
this._dict_set = true
}
}
function n2(e3, t4) {
var r3 = new p2(t4)
if ((r3.push(e3, true), r3.err)) throw r3.msg || i2[r3.err]
return r3.result
}
;(p2.prototype.push = function (e3, t4) {
var r3,
n3,
i3 = this.strm,
s3 = this.options.chunkSize
if (this.ended) return false
;(n3 = t4 === ~~t4 ? t4 : true === t4 ? 4 : 0),
'string' == typeof e3
? (i3.input = h2.string2buf(e3))
: '[object ArrayBuffer]' === u2.call(e3)
? (i3.input = new Uint8Array(e3))
: (i3.input = e3),
(i3.next_in = 0),
(i3.avail_in = i3.input.length)
do {
if (
(0 === i3.avail_out &&
((i3.output = new o2.Buf8(s3)),
(i3.next_out = 0),
(i3.avail_out = s3)),
1 !== (r3 = a2.deflate(i3, n3)) && r3 !== l2)
)
return this.onEnd(r3), !(this.ended = true)
;(0 !== i3.avail_out &&
(0 !== i3.avail_in || (4 !== n3 && 2 !== n3))) ||
('string' === this.options.to
? this.onData(
h2.buf2binstring(o2.shrinkBuf(i3.output, i3.next_out))
)
: this.onData(o2.shrinkBuf(i3.output, i3.next_out)))
} while ((0 < i3.avail_in || 0 === i3.avail_out) && 1 !== r3)
return 4 === n3
? ((r3 = a2.deflateEnd(this.strm)),
this.onEnd(r3),
(this.ended = true),
r3 === l2)
: 2 !== n3 || (this.onEnd(l2), !(i3.avail_out = 0))
}),
(p2.prototype.onData = function (e3) {
this.chunks.push(e3)
}),
(p2.prototype.onEnd = function (e3) {
e3 === l2 &&
('string' === this.options.to
? (this.result = this.chunks.join(''))
: (this.result = o2.flattenChunks(this.chunks))),
(this.chunks = []),
(this.err = e3),
(this.msg = this.strm.msg)
}),
(r2.Deflate = p2),
(r2.deflate = n2),
(r2.deflateRaw = function (e3, t4) {
return ((t4 = t4 || {}).raw = true), n2(e3, t4)
}),
(r2.gzip = function (e3, t4) {
return ((t4 = t4 || {}).gzip = true), n2(e3, t4)
})
},
{
'./utils/common': 41,
'./utils/strings': 42,
'./zlib/deflate': 46,
'./zlib/messages': 51,
'./zlib/zstream': 53,
},
],
40: [
function (e2, t3, r2) {
var c2 = e2('./zlib/inflate'),
d3 = e2('./utils/common'),
p2 = e2('./utils/strings'),
m2 = e2('./zlib/constants'),
n2 = e2('./zlib/messages'),
i2 = e2('./zlib/zstream'),
s2 = e2('./zlib/gzheader'),
_2 = Object.prototype.toString
function a2(e3) {
if (!(this instanceof a2)) return new a2(e3)
this.options = d3.assign(
{ chunkSize: 16384, windowBits: 0, to: '' },
e3 || {}
)
var t4 = this.options
t4.raw &&
0 <= t4.windowBits &&
t4.windowBits < 16 &&
((t4.windowBits = -t4.windowBits),
0 === t4.windowBits && (t4.windowBits = -15)),
!(0 <= t4.windowBits && t4.windowBits < 16) ||
(e3 && e3.windowBits) ||
(t4.windowBits += 32),
15 < t4.windowBits &&
t4.windowBits < 48 &&
0 == (15 & t4.windowBits) &&
(t4.windowBits |= 15),
(this.err = 0),
(this.msg = ''),
(this.ended = false),
(this.chunks = []),
(this.strm = new i2()),
(this.strm.avail_out = 0)
var r3 = c2.inflateInit2(this.strm, t4.windowBits)
if (r3 !== m2.Z_OK) throw new Error(n2[r3])
;(this.header = new s2()),
c2.inflateGetHeader(this.strm, this.header)
}
function o2(e3, t4) {
var r3 = new a2(t4)
if ((r3.push(e3, true), r3.err)) throw r3.msg || n2[r3.err]
return r3.result
}
;(a2.prototype.push = function (e3, t4) {
var r3,
n3,
i3,
s3,
a3,
o3,
h2 = this.strm,
u2 = this.options.chunkSize,
l2 = this.options.dictionary,
f2 = false
if (this.ended) return false
;(n3 =
t4 === ~~t4 ? t4 : true === t4 ? m2.Z_FINISH : m2.Z_NO_FLUSH),
'string' == typeof e3
? (h2.input = p2.binstring2buf(e3))
: '[object ArrayBuffer]' === _2.call(e3)
? (h2.input = new Uint8Array(e3))
: (h2.input = e3),
(h2.next_in = 0),
(h2.avail_in = h2.input.length)
do {
if (
(0 === h2.avail_out &&
((h2.output = new d3.Buf8(u2)),
(h2.next_out = 0),
(h2.avail_out = u2)),
(r3 = c2.inflate(h2, m2.Z_NO_FLUSH)) === m2.Z_NEED_DICT &&
l2 &&
((o3 =
'string' == typeof l2
? p2.string2buf(l2)
: '[object ArrayBuffer]' === _2.call(l2)
? new Uint8Array(l2)
: l2),
(r3 = c2.inflateSetDictionary(this.strm, o3))),
r3 === m2.Z_BUF_ERROR &&
true === f2 &&
((r3 = m2.Z_OK), (f2 = false)),
r3 !== m2.Z_STREAM_END && r3 !== m2.Z_OK)
)
return this.onEnd(r3), !(this.ended = true)
h2.next_out &&
((0 !== h2.avail_out &&
r3 !== m2.Z_STREAM_END &&
(0 !== h2.avail_in ||
(n3 !== m2.Z_FINISH && n3 !== m2.Z_SYNC_FLUSH))) ||
('string' === this.options.to
? ((i3 = p2.utf8border(h2.output, h2.next_out)),
(s3 = h2.next_out - i3),
(a3 = p2.buf2string(h2.output, i3)),
(h2.next_out = s3),
(h2.avail_out = u2 - s3),
s3 && d3.arraySet(h2.output, h2.output, i3, s3, 0),
this.onData(a3))
: this.onData(d3.shrinkBuf(h2.output, h2.next_out)))),
0 === h2.avail_in && 0 === h2.avail_out && (f2 = true)
} while (
(0 < h2.avail_in || 0 === h2.avail_out) &&
r3 !== m2.Z_STREAM_END
)
return (
r3 === m2.Z_STREAM_END && (n3 = m2.Z_FINISH),
n3 === m2.Z_FINISH
? ((r3 = c2.inflateEnd(this.strm)),
this.onEnd(r3),
(this.ended = true),
r3 === m2.Z_OK)
: n3 !== m2.Z_SYNC_FLUSH ||
(this.onEnd(m2.Z_OK), !(h2.avail_out = 0))
)
}),
(a2.prototype.onData = function (e3) {
this.chunks.push(e3)
}),
(a2.prototype.onEnd = function (e3) {
e3 === m2.Z_OK &&
('string' === this.options.to
? (this.result = this.chunks.join(''))
: (this.result = d3.flattenChunks(this.chunks))),
(this.chunks = []),
(this.err = e3),
(this.msg = this.strm.msg)
}),
(r2.Inflate = a2),
(r2.inflate = o2),
(r2.inflateRaw = function (e3, t4) {
return ((t4 = t4 || {}).raw = true), o2(e3, t4)
}),
(r2.ungzip = o2)
},
{
'./utils/common': 41,
'./utils/strings': 42,
'./zlib/constants': 44,
'./zlib/gzheader': 47,
'./zlib/inflate': 49,
'./zlib/messages': 51,
'./zlib/zstream': 53,
},
],
41: [
function (e2, t3, r2) {
var n2 =
'undefined' != typeof Uint8Array &&
'undefined' != typeof Uint16Array &&
'undefined' != typeof Int32Array
;(r2.assign = function (e3) {
for (
var t4 = Array.prototype.slice.call(arguments, 1);
t4.length;
) {
var r3 = t4.shift()
if (r3) {
if ('object' != typeof r3)
throw new TypeError(r3 + 'must be non-object')
for (var n3 in r3) r3.hasOwnProperty(n3) && (e3[n3] = r3[n3])
}
}
return e3
}),
(r2.shrinkBuf = function (e3, t4) {
return e3.length === t4
? e3
: e3.subarray
? e3.subarray(0, t4)
: ((e3.length = t4), e3)
})
var i2 = {
arraySet: function (e3, t4, r3, n3, i3) {
if (t4.subarray && e3.subarray)
e3.set(t4.subarray(r3, r3 + n3), i3)
else for (var s3 = 0; s3 < n3; s3++) e3[i3 + s3] = t4[r3 + s3]
},
flattenChunks: function (e3) {
var t4, r3, n3, i3, s3, a2
for (t4 = n3 = 0, r3 = e3.length; t4 < r3; t4++)
n3 += e3[t4].length
for (
a2 = new Uint8Array(n3), t4 = i3 = 0, r3 = e3.length;
t4 < r3;
t4++
)
(s3 = e3[t4]), a2.set(s3, i3), (i3 += s3.length)
return a2
},
},
s2 = {
arraySet: function (e3, t4, r3, n3, i3) {
for (var s3 = 0; s3 < n3; s3++) e3[i3 + s3] = t4[r3 + s3]
},
flattenChunks: function (e3) {
return [].concat.apply([], e3)
},
}
;(r2.setTyped = function (e3) {
e3
? ((r2.Buf8 = Uint8Array),
(r2.Buf16 = Uint16Array),
(r2.Buf32 = Int32Array),
r2.assign(r2, i2))
: ((r2.Buf8 = Array),
(r2.Buf16 = Array),
(r2.Buf32 = Array),
r2.assign(r2, s2))
}),
r2.setTyped(n2)
},
{},
],
42: [
function (e2, t3, r2) {
var h2 = e2('./common'),
i2 = true,
s2 = true
try {
String.fromCharCode.apply(null, [0])
} catch (e3) {
i2 = false
}
try {
String.fromCharCode.apply(null, new Uint8Array(1))
} catch (e3) {
s2 = false
}
for (var u2 = new h2.Buf8(256), n2 = 0; n2 < 256; n2++)
u2[n2] =
252 <= n2
? 6
: 248 <= n2
? 5
: 240 <= n2
? 4
: 224 <= n2
? 3
: 192 <= n2
? 2
: 1
function l2(e3, t4) {
if (t4 < 65537 && ((e3.subarray && s2) || (!e3.subarray && i2)))
return String.fromCharCode.apply(null, h2.shrinkBuf(e3, t4))
for (var r3 = '', n3 = 0; n3 < t4; n3++)
r3 += String.fromCharCode(e3[n3])
return r3
}
;(u2[254] = u2[254] = 1),
(r2.string2buf = function (e3) {
var t4,
r3,
n3,
i3,
s3,
a2 = e3.length,
o2 = 0
for (i3 = 0; i3 < a2; i3++)
55296 == (64512 & (r3 = e3.charCodeAt(i3))) &&
i3 + 1 < a2 &&
56320 == (64512 & (n3 = e3.charCodeAt(i3 + 1))) &&
((r3 = 65536 + ((r3 - 55296) << 10) + (n3 - 56320)), i3++),
(o2 += r3 < 128 ? 1 : r3 < 2048 ? 2 : r3 < 65536 ? 3 : 4)
for (t4 = new h2.Buf8(o2), i3 = s3 = 0; s3 < o2; i3++)
55296 == (64512 & (r3 = e3.charCodeAt(i3))) &&
i3 + 1 < a2 &&
56320 == (64512 & (n3 = e3.charCodeAt(i3 + 1))) &&
((r3 = 65536 + ((r3 - 55296) << 10) + (n3 - 56320)), i3++),
r3 < 128
? (t4[s3++] = r3)
: (r3 < 2048
? (t4[s3++] = 192 | (r3 >>> 6))
: (r3 < 65536
? (t4[s3++] = 224 | (r3 >>> 12))
: ((t4[s3++] = 240 | (r3 >>> 18)),
(t4[s3++] = 128 | ((r3 >>> 12) & 63))),
(t4[s3++] = 128 | ((r3 >>> 6) & 63))),
(t4[s3++] = 128 | (63 & r3)))
return t4
}),
(r2.buf2binstring = function (e3) {
return l2(e3, e3.length)
}),
(r2.binstring2buf = function (e3) {
for (
var t4 = new h2.Buf8(e3.length), r3 = 0, n3 = t4.length;
r3 < n3;
r3++
)
t4[r3] = e3.charCodeAt(r3)
return t4
}),
(r2.buf2string = function (e3, t4) {
var r3,
n3,
i3,
s3,
a2 = t4 || e3.length,
o2 = new Array(2 * a2)
for (r3 = n3 = 0; r3 < a2; )
if ((i3 = e3[r3++]) < 128) o2[n3++] = i3
else if (4 < (s3 = u2[i3])) (o2[n3++] = 65533), (r3 += s3 - 1)
else {
for (
i3 &= 2 === s3 ? 31 : 3 === s3 ? 15 : 7;
1 < s3 && r3 < a2;
)
(i3 = (i3 << 6) | (63 & e3[r3++])), s3--
1 < s3
? (o2[n3++] = 65533)
: i3 < 65536
? (o2[n3++] = i3)
: ((i3 -= 65536),
(o2[n3++] = 55296 | ((i3 >> 10) & 1023)),
(o2[n3++] = 56320 | (1023 & i3)))
}
return l2(o2, n3)
}),
(r2.utf8border = function (e3, t4) {
var r3
for (
(t4 = t4 || e3.length) > e3.length && (t4 = e3.length),
r3 = t4 - 1;
0 <= r3 && 128 == (192 & e3[r3]);
)
r3--
return r3 < 0
? t4
: 0 === r3
? t4
: r3 + u2[e3[r3]] > t4
? r3
: t4
})
},
{ './common': 41 },
],
43: [
function (e2, t3, r2) {
t3.exports = function (e3, t4, r3, n2) {
for (
var i2 = (65535 & e3) | 0,
s2 = ((e3 >>> 16) & 65535) | 0,
a2 = 0;
0 !== r3;
) {
for (
r3 -= a2 = 2e3 < r3 ? 2e3 : r3;
(s2 = (s2 + (i2 = (i2 + t4[n2++]) | 0)) | 0), --a2;
);
;(i2 %= 65521), (s2 %= 65521)
}
return i2 | (s2 << 16) | 0
}
},
{},
],
44: [
function (e2, t3, r2) {
t3.exports = {
Z_NO_FLUSH: 0,
Z_PARTIAL_FLUSH: 1,
Z_SYNC_FLUSH: 2,
Z_FULL_FLUSH: 3,
Z_FINISH: 4,
Z_BLOCK: 5,
Z_TREES: 6,
Z_OK: 0,
Z_STREAM_END: 1,
Z_NEED_DICT: 2,
Z_ERRNO: -1,
Z_STREAM_ERROR: -2,
Z_DATA_ERROR: -3,
Z_BUF_ERROR: -5,
Z_NO_COMPRESSION: 0,
Z_BEST_SPEED: 1,
Z_BEST_COMPRESSION: 9,
Z_DEFAULT_COMPRESSION: -1,
Z_FILTERED: 1,
Z_HUFFMAN_ONLY: 2,
Z_RLE: 3,
Z_FIXED: 4,
Z_DEFAULT_STRATEGY: 0,
Z_BINARY: 0,
Z_TEXT: 1,
Z_UNKNOWN: 2,
Z_DEFLATED: 8,
}
},
{},
],
45: [
function (e2, t3, r2) {
var o2 = (function () {
for (var e3, t4 = [], r3 = 0; r3 < 256; r3++) {
e3 = r3
for (var n2 = 0; n2 < 8; n2++)
e3 = 1 & e3 ? 3988292384 ^ (e3 >>> 1) : e3 >>> 1
t4[r3] = e3
}
return t4
})()
t3.exports = function (e3, t4, r3, n2) {
var i2 = o2,
s2 = n2 + r3
e3 ^= -1
for (var a2 = n2; a2 < s2; a2++)
e3 = (e3 >>> 8) ^ i2[255 & (e3 ^ t4[a2])]
return -1 ^ e3
}
},
{},
],
46: [
function (e2, t3, r2) {
var h2,
c2 = e2('../utils/common'),
u2 = e2('./trees'),
d3 = e2('./adler32'),
p2 = e2('./crc32'),
n2 = e2('./messages'),
l2 = 0,
f2 = 4,
m2 = 0,
_2 = -2,
g2 = -1,
b2 = 4,
i2 = 2,
v4 = 8,
y2 = 9,
s2 = 286,
a2 = 30,
o2 = 19,
w2 = 2 * s2 + 1,
k2 = 15,
x2 = 3,
S2 = 258,
z2 = S2 + x2 + 1,
C2 = 42,
E2 = 113,
A2 = 1,
I2 = 2,
O2 = 3,
B3 = 4
function R2(e3, t4) {
return (e3.msg = n2[t4]), t4
}
function T2(e3) {
return (e3 << 1) - (4 < e3 ? 9 : 0)
}
function D2(e3) {
for (var t4 = e3.length; 0 <= --t4; ) e3[t4] = 0
}
function F2(e3) {
var t4 = e3.state,
r3 = t4.pending
r3 > e3.avail_out && (r3 = e3.avail_out),
0 !== r3 &&
(c2.arraySet(
e3.output,
t4.pending_buf,
t4.pending_out,
r3,
e3.next_out
),
(e3.next_out += r3),
(t4.pending_out += r3),
(e3.total_out += r3),
(e3.avail_out -= r3),
(t4.pending -= r3),
0 === t4.pending && (t4.pending_out = 0))
}
function N2(e3, t4) {
u2._tr_flush_block(
e3,
0 <= e3.block_start ? e3.block_start : -1,
e3.strstart - e3.block_start,
t4
),
(e3.block_start = e3.strstart),
F2(e3.strm)
}
function U2(e3, t4) {
e3.pending_buf[e3.pending++] = t4
}
function P2(e3, t4) {
;(e3.pending_buf[e3.pending++] = (t4 >>> 8) & 255),
(e3.pending_buf[e3.pending++] = 255 & t4)
}
function L2(e3, t4) {
var r3,
n3,
i3 = e3.max_chain_length,
s3 = e3.strstart,
a3 = e3.prev_length,
o3 = e3.nice_match,
h3 =
e3.strstart > e3.w_size - z2
? e3.strstart - (e3.w_size - z2)
: 0,
u3 = e3.window,
l3 = e3.w_mask,
f3 = e3.prev,
c3 = e3.strstart + S2,
d4 = u3[s3 + a3 - 1],
p3 = u3[s3 + a3]
e3.prev_length >= e3.good_match && (i3 >>= 2),
o3 > e3.lookahead && (o3 = e3.lookahead)
do {
if (
u3[(r3 = t4) + a3] === p3 &&
u3[r3 + a3 - 1] === d4 &&
u3[r3] === u3[s3] &&
u3[++r3] === u3[s3 + 1]
) {
;(s3 += 2), r3++
do {} while (
u3[++s3] === u3[++r3] &&
u3[++s3] === u3[++r3] &&
u3[++s3] === u3[++r3] &&
u3[++s3] === u3[++r3] &&
u3[++s3] === u3[++r3] &&
u3[++s3] === u3[++r3] &&
u3[++s3] === u3[++r3] &&
u3[++s3] === u3[++r3] &&
s3 < c3
)
if (((n3 = S2 - (c3 - s3)), (s3 = c3 - S2), a3 < n3)) {
if (((e3.match_start = t4), o3 <= (a3 = n3))) break
;(d4 = u3[s3 + a3 - 1]), (p3 = u3[s3 + a3])
}
}
} while ((t4 = f3[t4 & l3]) > h3 && 0 != --i3)
return a3 <= e3.lookahead ? a3 : e3.lookahead
}
function j2(e3) {
var t4,
r3,
n3,
i3,
s3,
a3,
o3,
h3,
u3,
l3,
f3 = e3.w_size
do {
if (
((i3 = e3.window_size - e3.lookahead - e3.strstart),
e3.strstart >= f3 + (f3 - z2))
) {
for (
c2.arraySet(e3.window, e3.window, f3, f3, 0),
e3.match_start -= f3,
e3.strstart -= f3,
e3.block_start -= f3,
t4 = r3 = e3.hash_size;
(n3 = e3.head[--t4]),
(e3.head[t4] = f3 <= n3 ? n3 - f3 : 0),
--r3;
);
for (
t4 = r3 = f3;
(n3 = e3.prev[--t4]),
(e3.prev[t4] = f3 <= n3 ? n3 - f3 : 0),
--r3;
);
i3 += f3
}
if (0 === e3.strm.avail_in) break
if (
((a3 = e3.strm),
(o3 = e3.window),
(h3 = e3.strstart + e3.lookahead),
(u3 = i3),
(l3 = void 0),
(l3 = a3.avail_in),
u3 < l3 && (l3 = u3),
(r3 =
0 === l3
? 0
: ((a3.avail_in -= l3),
c2.arraySet(o3, a3.input, a3.next_in, l3, h3),
1 === a3.state.wrap
? (a3.adler = d3(a3.adler, o3, l3, h3))
: 2 === a3.state.wrap &&
(a3.adler = p2(a3.adler, o3, l3, h3)),
(a3.next_in += l3),
(a3.total_in += l3),
l3)),
(e3.lookahead += r3),
e3.lookahead + e3.insert >= x2)
)
for (
s3 = e3.strstart - e3.insert,
e3.ins_h = e3.window[s3],
e3.ins_h =
((e3.ins_h << e3.hash_shift) ^ e3.window[s3 + 1]) &
e3.hash_mask;
e3.insert &&
((e3.ins_h =
((e3.ins_h << e3.hash_shift) ^ e3.window[s3 + x2 - 1]) &
e3.hash_mask),
(e3.prev[s3 & e3.w_mask] = e3.head[e3.ins_h]),
(e3.head[e3.ins_h] = s3),
s3++,
e3.insert--,
!(e3.lookahead + e3.insert < x2));
);
} while (e3.lookahead < z2 && 0 !== e3.strm.avail_in)
}
function Z2(e3, t4) {
for (var r3, n3; ; ) {
if (e3.lookahead < z2) {
if ((j2(e3), e3.lookahead < z2 && t4 === l2)) return A2
if (0 === e3.lookahead) break
}
if (
((r3 = 0),
e3.lookahead >= x2 &&
((e3.ins_h =
((e3.ins_h << e3.hash_shift) ^
e3.window[e3.strstart + x2 - 1]) &
e3.hash_mask),
(r3 = e3.prev[e3.strstart & e3.w_mask] = e3.head[e3.ins_h]),
(e3.head[e3.ins_h] = e3.strstart)),
0 !== r3 &&
e3.strstart - r3 <= e3.w_size - z2 &&
(e3.match_length = L2(e3, r3)),
e3.match_length >= x2)
)
if (
((n3 = u2._tr_tally(
e3,
e3.strstart - e3.match_start,
e3.match_length - x2
)),
(e3.lookahead -= e3.match_length),
e3.match_length <= e3.max_lazy_match && e3.lookahead >= x2)
) {
for (
e3.match_length--;
e3.strstart++,
(e3.ins_h =
((e3.ins_h << e3.hash_shift) ^
e3.window[e3.strstart + x2 - 1]) &
e3.hash_mask),
(r3 = e3.prev[e3.strstart & e3.w_mask] =
e3.head[e3.ins_h]),
(e3.head[e3.ins_h] = e3.strstart),
0 != --e3.match_length;
);
e3.strstart++
} else
(e3.strstart += e3.match_length),
(e3.match_length = 0),
(e3.ins_h = e3.window[e3.strstart]),
(e3.ins_h =
((e3.ins_h << e3.hash_shift) ^
e3.window[e3.strstart + 1]) &
e3.hash_mask)
else
(n3 = u2._tr_tally(e3, 0, e3.window[e3.strstart])),
e3.lookahead--,
e3.strstart++
if (n3 && (N2(e3, false), 0 === e3.strm.avail_out)) return A2
}
return (
(e3.insert = e3.strstart < x2 - 1 ? e3.strstart : x2 - 1),
t4 === f2
? (N2(e3, true), 0 === e3.strm.avail_out ? O2 : B3)
: e3.last_lit && (N2(e3, false), 0 === e3.strm.avail_out)
? A2
: I2
)
}
function W2(e3, t4) {
for (var r3, n3, i3; ; ) {
if (e3.lookahead < z2) {
if ((j2(e3), e3.lookahead < z2 && t4 === l2)) return A2
if (0 === e3.lookahead) break
}
if (
((r3 = 0),
e3.lookahead >= x2 &&
((e3.ins_h =
((e3.ins_h << e3.hash_shift) ^
e3.window[e3.strstart + x2 - 1]) &
e3.hash_mask),
(r3 = e3.prev[e3.strstart & e3.w_mask] = e3.head[e3.ins_h]),
(e3.head[e3.ins_h] = e3.strstart)),
(e3.prev_length = e3.match_length),
(e3.prev_match = e3.match_start),
(e3.match_length = x2 - 1),
0 !== r3 &&
e3.prev_length < e3.max_lazy_match &&
e3.strstart - r3 <= e3.w_size - z2 &&
((e3.match_length = L2(e3, r3)),
e3.match_length <= 5 &&
(1 === e3.strategy ||
(e3.match_length === x2 &&
4096 < e3.strstart - e3.match_start)) &&
(e3.match_length = x2 - 1)),
e3.prev_length >= x2 && e3.match_length <= e3.prev_length)
) {
for (
i3 = e3.strstart + e3.lookahead - x2,
n3 = u2._tr_tally(
e3,
e3.strstart - 1 - e3.prev_match,
e3.prev_length - x2
),
e3.lookahead -= e3.prev_length - 1,
e3.prev_length -= 2;
++e3.strstart <= i3 &&
((e3.ins_h =
((e3.ins_h << e3.hash_shift) ^
e3.window[e3.strstart + x2 - 1]) &
e3.hash_mask),
(r3 = e3.prev[e3.strstart & e3.w_mask] =
e3.head[e3.ins_h]),
(e3.head[e3.ins_h] = e3.strstart)),
0 != --e3.prev_length;
);
if (
((e3.match_available = 0),
(e3.match_length = x2 - 1),
e3.strstart++,
n3 && (N2(e3, false), 0 === e3.strm.avail_out))
)
return A2
} else if (e3.match_available) {
if (
((n3 = u2._tr_tally(e3, 0, e3.window[e3.strstart - 1])) &&
N2(e3, false),
e3.strstart++,
e3.lookahead--,
0 === e3.strm.avail_out)
)
return A2
} else (e3.match_available = 1), e3.strstart++, e3.lookahead--
}
return (
e3.match_available &&
((n3 = u2._tr_tally(e3, 0, e3.window[e3.strstart - 1])),
(e3.match_available = 0)),
(e3.insert = e3.strstart < x2 - 1 ? e3.strstart : x2 - 1),
t4 === f2
? (N2(e3, true), 0 === e3.strm.avail_out ? O2 : B3)
: e3.last_lit && (N2(e3, false), 0 === e3.strm.avail_out)
? A2
: I2
)
}
function M2(e3, t4, r3, n3, i3) {
;(this.good_length = e3),
(this.max_lazy = t4),
(this.nice_length = r3),
(this.max_chain = n3),
(this.func = i3)
}
function H4() {
;(this.strm = null),
(this.status = 0),
(this.pending_buf = null),
(this.pending_buf_size = 0),
(this.pending_out = 0),
(this.pending = 0),
(this.wrap = 0),
(this.gzhead = null),
(this.gzindex = 0),
(this.method = v4),
(this.last_flush = -1),
(this.w_size = 0),
(this.w_bits = 0),
(this.w_mask = 0),
(this.window = null),
(this.window_size = 0),
(this.prev = null),
(this.head = null),
(this.ins_h = 0),
(this.hash_size = 0),
(this.hash_bits = 0),
(this.hash_mask = 0),
(this.hash_shift = 0),
(this.block_start = 0),
(this.match_length = 0),
(this.prev_match = 0),
(this.match_available = 0),
(this.strstart = 0),
(this.match_start = 0),
(this.lookahead = 0),
(this.prev_length = 0),
(this.max_chain_length = 0),
(this.max_lazy_match = 0),
(this.level = 0),
(this.strategy = 0),
(this.good_match = 0),
(this.nice_match = 0),
(this.dyn_ltree = new c2.Buf16(2 * w2)),
(this.dyn_dtree = new c2.Buf16(2 * (2 * a2 + 1))),
(this.bl_tree = new c2.Buf16(2 * (2 * o2 + 1))),
D2(this.dyn_ltree),
D2(this.dyn_dtree),
D2(this.bl_tree),
(this.l_desc = null),
(this.d_desc = null),
(this.bl_desc = null),
(this.bl_count = new c2.Buf16(k2 + 1)),
(this.heap = new c2.Buf16(2 * s2 + 1)),
D2(this.heap),
(this.heap_len = 0),
(this.heap_max = 0),
(this.depth = new c2.Buf16(2 * s2 + 1)),
D2(this.depth),
(this.l_buf = 0),
(this.lit_bufsize = 0),
(this.last_lit = 0),
(this.d_buf = 0),
(this.opt_len = 0),
(this.static_len = 0),
(this.matches = 0),
(this.insert = 0),
(this.bi_buf = 0),
(this.bi_valid = 0)
}
function G2(e3) {
var t4
return e3 && e3.state
? ((e3.total_in = e3.total_out = 0),
(e3.data_type = i2),
((t4 = e3.state).pending = 0),
(t4.pending_out = 0),
t4.wrap < 0 && (t4.wrap = -t4.wrap),
(t4.status = t4.wrap ? C2 : E2),
(e3.adler = 2 === t4.wrap ? 0 : 1),
(t4.last_flush = l2),
u2._tr_init(t4),
m2)
: R2(e3, _2)
}
function K2(e3) {
var t4 = G2(e3)
return (
t4 === m2 &&
(function (e4) {
;(e4.window_size = 2 * e4.w_size),
D2(e4.head),
(e4.max_lazy_match = h2[e4.level].max_lazy),
(e4.good_match = h2[e4.level].good_length),
(e4.nice_match = h2[e4.level].nice_length),
(e4.max_chain_length = h2[e4.level].max_chain),
(e4.strstart = 0),
(e4.block_start = 0),
(e4.lookahead = 0),
(e4.insert = 0),
(e4.match_length = e4.prev_length = x2 - 1),
(e4.match_available = 0),
(e4.ins_h = 0)
})(e3.state),
t4
)
}
function Y2(e3, t4, r3, n3, i3, s3) {
if (!e3) return _2
var a3 = 1
if (
(t4 === g2 && (t4 = 6),
n3 < 0
? ((a3 = 0), (n3 = -n3))
: 15 < n3 && ((a3 = 2), (n3 -= 16)),
i3 < 1 ||
y2 < i3 ||
r3 !== v4 ||
n3 < 8 ||
15 < n3 ||
t4 < 0 ||
9 < t4 ||
s3 < 0 ||
b2 < s3)
)
return R2(e3, _2)
8 === n3 && (n3 = 9)
var o3 = new H4()
return (
((e3.state = o3).strm = e3),
(o3.wrap = a3),
(o3.gzhead = null),
(o3.w_bits = n3),
(o3.w_size = 1 << o3.w_bits),
(o3.w_mask = o3.w_size - 1),
(o3.hash_bits = i3 + 7),
(o3.hash_size = 1 << o3.hash_bits),
(o3.hash_mask = o3.hash_size - 1),
(o3.hash_shift = ~~((o3.hash_bits + x2 - 1) / x2)),
(o3.window = new c2.Buf8(2 * o3.w_size)),
(o3.head = new c2.Buf16(o3.hash_size)),
(o3.prev = new c2.Buf16(o3.w_size)),
(o3.lit_bufsize = 1 << (i3 + 6)),
(o3.pending_buf_size = 4 * o3.lit_bufsize),
(o3.pending_buf = new c2.Buf8(o3.pending_buf_size)),
(o3.d_buf = 1 * o3.lit_bufsize),
(o3.l_buf = 3 * o3.lit_bufsize),
(o3.level = t4),
(o3.strategy = s3),
(o3.method = r3),
K2(e3)
)
}
;(h2 = [
new M2(0, 0, 0, 0, function (e3, t4) {
var r3 = 65535
for (
r3 > e3.pending_buf_size - 5 &&
(r3 = e3.pending_buf_size - 5);
;
) {
if (e3.lookahead <= 1) {
if ((j2(e3), 0 === e3.lookahead && t4 === l2)) return A2
if (0 === e3.lookahead) break
}
;(e3.strstart += e3.lookahead), (e3.lookahead = 0)
var n3 = e3.block_start + r3
if (
(0 === e3.strstart || e3.strstart >= n3) &&
((e3.lookahead = e3.strstart - n3),
(e3.strstart = n3),
N2(e3, false),
0 === e3.strm.avail_out)
)
return A2
if (
e3.strstart - e3.block_start >= e3.w_size - z2 &&
(N2(e3, false), 0 === e3.strm.avail_out)
)
return A2
}
return (
(e3.insert = 0),
t4 === f2
? (N2(e3, true), 0 === e3.strm.avail_out ? O2 : B3)
: (e3.strstart > e3.block_start &&
(N2(e3, false), e3.strm.avail_out),
A2)
)
}),
new M2(4, 4, 8, 4, Z2),
new M2(4, 5, 16, 8, Z2),
new M2(4, 6, 32, 32, Z2),
new M2(4, 4, 16, 16, W2),
new M2(8, 16, 32, 32, W2),
new M2(8, 16, 128, 128, W2),
new M2(8, 32, 128, 256, W2),
new M2(32, 128, 258, 1024, W2),
new M2(32, 258, 258, 4096, W2),
]),
(r2.deflateInit = function (e3, t4) {
return Y2(e3, t4, v4, 15, 8, 0)
}),
(r2.deflateInit2 = Y2),
(r2.deflateReset = K2),
(r2.deflateResetKeep = G2),
(r2.deflateSetHeader = function (e3, t4) {
return e3 && e3.state
? 2 !== e3.state.wrap
? _2
: ((e3.state.gzhead = t4), m2)
: _2
}),
(r2.deflate = function (e3, t4) {
var r3, n3, i3, s3
if (!e3 || !e3.state || 5 < t4 || t4 < 0)
return e3 ? R2(e3, _2) : _2
if (
((n3 = e3.state),
!e3.output ||
(!e3.input && 0 !== e3.avail_in) ||
(666 === n3.status && t4 !== f2))
)
return R2(e3, 0 === e3.avail_out ? -5 : _2)
if (
((n3.strm = e3),
(r3 = n3.last_flush),
(n3.last_flush = t4),
n3.status === C2)
)
if (2 === n3.wrap)
(e3.adler = 0),
U2(n3, 31),
U2(n3, 139),
U2(n3, 8),
n3.gzhead
? (U2(
n3,
(n3.gzhead.text ? 1 : 0) +
(n3.gzhead.hcrc ? 2 : 0) +
(n3.gzhead.extra ? 4 : 0) +
(n3.gzhead.name ? 8 : 0) +
(n3.gzhead.comment ? 16 : 0)
),
U2(n3, 255 & n3.gzhead.time),
U2(n3, (n3.gzhead.time >> 8) & 255),
U2(n3, (n3.gzhead.time >> 16) & 255),
U2(n3, (n3.gzhead.time >> 24) & 255),
U2(
n3,
9 === n3.level
? 2
: 2 <= n3.strategy || n3.level < 2
? 4
: 0
),
U2(n3, 255 & n3.gzhead.os),
n3.gzhead.extra &&
n3.gzhead.extra.length &&
(U2(n3, 255 & n3.gzhead.extra.length),
U2(n3, (n3.gzhead.extra.length >> 8) & 255)),
n3.gzhead.hcrc &&
(e3.adler = p2(
e3.adler,
n3.pending_buf,
n3.pending,
0
)),
(n3.gzindex = 0),
(n3.status = 69))
: (U2(n3, 0),
U2(n3, 0),
U2(n3, 0),
U2(n3, 0),
U2(n3, 0),
U2(
n3,
9 === n3.level
? 2
: 2 <= n3.strategy || n3.level < 2
? 4
: 0
),
U2(n3, 3),
(n3.status = E2))
else {
var a3 = (v4 + ((n3.w_bits - 8) << 4)) << 8
;(a3 |=
(2 <= n3.strategy || n3.level < 2
? 0
: n3.level < 6
? 1
: 6 === n3.level
? 2
: 3) << 6),
0 !== n3.strstart && (a3 |= 32),
(a3 += 31 - (a3 % 31)),
(n3.status = E2),
P2(n3, a3),
0 !== n3.strstart &&
(P2(n3, e3.adler >>> 16), P2(n3, 65535 & e3.adler)),
(e3.adler = 1)
}
if (69 === n3.status)
if (n3.gzhead.extra) {
for (
i3 = n3.pending;
n3.gzindex < (65535 & n3.gzhead.extra.length) &&
(n3.pending !== n3.pending_buf_size ||
(n3.gzhead.hcrc &&
n3.pending > i3 &&
(e3.adler = p2(
e3.adler,
n3.pending_buf,
n3.pending - i3,
i3
)),
F2(e3),
(i3 = n3.pending),
n3.pending !== n3.pending_buf_size));
)
U2(n3, 255 & n3.gzhead.extra[n3.gzindex]), n3.gzindex++
n3.gzhead.hcrc &&
n3.pending > i3 &&
(e3.adler = p2(
e3.adler,
n3.pending_buf,
n3.pending - i3,
i3
)),
n3.gzindex === n3.gzhead.extra.length &&
((n3.gzindex = 0), (n3.status = 73))
} else n3.status = 73
if (73 === n3.status)
if (n3.gzhead.name) {
i3 = n3.pending
do {
if (
n3.pending === n3.pending_buf_size &&
(n3.gzhead.hcrc &&
n3.pending > i3 &&
(e3.adler = p2(
e3.adler,
n3.pending_buf,
n3.pending - i3,
i3
)),
F2(e3),
(i3 = n3.pending),
n3.pending === n3.pending_buf_size)
) {
s3 = 1
break
}
;(s3 =
n3.gzindex < n3.gzhead.name.length
? 255 & n3.gzhead.name.charCodeAt(n3.gzindex++)
: 0),
U2(n3, s3)
} while (0 !== s3)
n3.gzhead.hcrc &&
n3.pending > i3 &&
(e3.adler = p2(
e3.adler,
n3.pending_buf,
n3.pending - i3,
i3
)),
0 === s3 && ((n3.gzindex = 0), (n3.status = 91))
} else n3.status = 91
if (91 === n3.status)
if (n3.gzhead.comment) {
i3 = n3.pending
do {
if (
n3.pending === n3.pending_buf_size &&
(n3.gzhead.hcrc &&
n3.pending > i3 &&
(e3.adler = p2(
e3.adler,
n3.pending_buf,
n3.pending - i3,
i3
)),
F2(e3),
(i3 = n3.pending),
n3.pending === n3.pending_buf_size)
) {
s3 = 1
break
}
;(s3 =
n3.gzindex < n3.gzhead.comment.length
? 255 & n3.gzhead.comment.charCodeAt(n3.gzindex++)
: 0),
U2(n3, s3)
} while (0 !== s3)
n3.gzhead.hcrc &&
n3.pending > i3 &&
(e3.adler = p2(
e3.adler,
n3.pending_buf,
n3.pending - i3,
i3
)),
0 === s3 && (n3.status = 103)
} else n3.status = 103
if (
(103 === n3.status &&
(n3.gzhead.hcrc
? (n3.pending + 2 > n3.pending_buf_size && F2(e3),
n3.pending + 2 <= n3.pending_buf_size &&
(U2(n3, 255 & e3.adler),
U2(n3, (e3.adler >> 8) & 255),
(e3.adler = 0),
(n3.status = E2)))
: (n3.status = E2)),
0 !== n3.pending)
) {
if ((F2(e3), 0 === e3.avail_out))
return (n3.last_flush = -1), m2
} else if (0 === e3.avail_in && T2(t4) <= T2(r3) && t4 !== f2)
return R2(e3, -5)
if (666 === n3.status && 0 !== e3.avail_in) return R2(e3, -5)
if (
0 !== e3.avail_in ||
0 !== n3.lookahead ||
(t4 !== l2 && 666 !== n3.status)
) {
var o3 =
2 === n3.strategy
? (function (e4, t5) {
for (var r4; ; ) {
if (
0 === e4.lookahead &&
(j2(e4), 0 === e4.lookahead)
) {
if (t5 === l2) return A2
break
}
if (
((e4.match_length = 0),
(r4 = u2._tr_tally(
e4,
0,
e4.window[e4.strstart]
)),
e4.lookahead--,
e4.strstart++,
r4 && (N2(e4, false), 0 === e4.strm.avail_out))
)
return A2
}
return (
(e4.insert = 0),
t5 === f2
? (N2(e4, true),
0 === e4.strm.avail_out ? O2 : B3)
: e4.last_lit &&
(N2(e4, false), 0 === e4.strm.avail_out)
? A2
: I2
)
})(n3, t4)
: 3 === n3.strategy
? (function (e4, t5) {
for (var r4, n4, i4, s4, a4 = e4.window; ; ) {
if (e4.lookahead <= S2) {
if ((j2(e4), e4.lookahead <= S2 && t5 === l2))
return A2
if (0 === e4.lookahead) break
}
if (
((e4.match_length = 0),
e4.lookahead >= x2 &&
0 < e4.strstart &&
(n4 = a4[(i4 = e4.strstart - 1)]) ===
a4[++i4] &&
n4 === a4[++i4] &&
n4 === a4[++i4])
) {
s4 = e4.strstart + S2
do {} while (
n4 === a4[++i4] &&
n4 === a4[++i4] &&
n4 === a4[++i4] &&
n4 === a4[++i4] &&
n4 === a4[++i4] &&
n4 === a4[++i4] &&
n4 === a4[++i4] &&
n4 === a4[++i4] &&
i4 < s4
)
;(e4.match_length = S2 - (s4 - i4)),
e4.match_length > e4.lookahead &&
(e4.match_length = e4.lookahead)
}
if (
(e4.match_length >= x2
? ((r4 = u2._tr_tally(
e4,
1,
e4.match_length - x2
)),
(e4.lookahead -= e4.match_length),
(e4.strstart += e4.match_length),
(e4.match_length = 0))
: ((r4 = u2._tr_tally(
e4,
0,
e4.window[e4.strstart]
)),
e4.lookahead--,
e4.strstart++),
r4 && (N2(e4, false), 0 === e4.strm.avail_out))
)
return A2
}
return (
(e4.insert = 0),
t5 === f2
? (N2(e4, true),
0 === e4.strm.avail_out ? O2 : B3)
: e4.last_lit &&
(N2(e4, false), 0 === e4.strm.avail_out)
? A2
: I2
)
})(n3, t4)
: h2[n3.level].func(n3, t4)
if (
((o3 !== O2 && o3 !== B3) || (n3.status = 666),
o3 === A2 || o3 === O2)
)
return 0 === e3.avail_out && (n3.last_flush = -1), m2
if (
o3 === I2 &&
(1 === t4
? u2._tr_align(n3)
: 5 !== t4 &&
(u2._tr_stored_block(n3, 0, 0, false),
3 === t4 &&
(D2(n3.head),
0 === n3.lookahead &&
((n3.strstart = 0),
(n3.block_start = 0),
(n3.insert = 0)))),
F2(e3),
0 === e3.avail_out)
)
return (n3.last_flush = -1), m2
}
return t4 !== f2
? m2
: n3.wrap <= 0
? 1
: (2 === n3.wrap
? (U2(n3, 255 & e3.adler),
U2(n3, (e3.adler >> 8) & 255),
U2(n3, (e3.adler >> 16) & 255),
U2(n3, (e3.adler >> 24) & 255),
U2(n3, 255 & e3.total_in),
U2(n3, (e3.total_in >> 8) & 255),
U2(n3, (e3.total_in >> 16) & 255),
U2(n3, (e3.total_in >> 24) & 255))
: (P2(n3, e3.adler >>> 16), P2(n3, 65535 & e3.adler)),
F2(e3),
0 < n3.wrap && (n3.wrap = -n3.wrap),
0 !== n3.pending ? m2 : 1)
}),
(r2.deflateEnd = function (e3) {
var t4
return e3 && e3.state
? (t4 = e3.state.status) !== C2 &&
69 !== t4 &&
73 !== t4 &&
91 !== t4 &&
103 !== t4 &&
t4 !== E2 &&
666 !== t4
? R2(e3, _2)
: ((e3.state = null), t4 === E2 ? R2(e3, -3) : m2)
: _2
}),
(r2.deflateSetDictionary = function (e3, t4) {
var r3,
n3,
i3,
s3,
a3,
o3,
h3,
u3,
l3 = t4.length
if (!e3 || !e3.state) return _2
if (
2 === (s3 = (r3 = e3.state).wrap) ||
(1 === s3 && r3.status !== C2) ||
r3.lookahead
)
return _2
for (
1 === s3 && (e3.adler = d3(e3.adler, t4, l3, 0)),
r3.wrap = 0,
l3 >= r3.w_size &&
(0 === s3 &&
(D2(r3.head),
(r3.strstart = 0),
(r3.block_start = 0),
(r3.insert = 0)),
(u3 = new c2.Buf8(r3.w_size)),
c2.arraySet(u3, t4, l3 - r3.w_size, r3.w_size, 0),
(t4 = u3),
(l3 = r3.w_size)),
a3 = e3.avail_in,
o3 = e3.next_in,
h3 = e3.input,
e3.avail_in = l3,
e3.next_in = 0,
e3.input = t4,
j2(r3);
r3.lookahead >= x2;
) {
for (
n3 = r3.strstart, i3 = r3.lookahead - (x2 - 1);
(r3.ins_h =
((r3.ins_h << r3.hash_shift) ^ r3.window[n3 + x2 - 1]) &
r3.hash_mask),
(r3.prev[n3 & r3.w_mask] = r3.head[r3.ins_h]),
(r3.head[r3.ins_h] = n3),
n3++,
--i3;
);
;(r3.strstart = n3), (r3.lookahead = x2 - 1), j2(r3)
}
return (
(r3.strstart += r3.lookahead),
(r3.block_start = r3.strstart),
(r3.insert = r3.lookahead),
(r3.lookahead = 0),
(r3.match_length = r3.prev_length = x2 - 1),
(r3.match_available = 0),
(e3.next_in = o3),
(e3.input = h3),
(e3.avail_in = a3),
(r3.wrap = s3),
m2
)
}),
(r2.deflateInfo = 'pako deflate (from Nodeca project)')
},
{
'../utils/common': 41,
'./adler32': 43,
'./crc32': 45,
'./messages': 51,
'./trees': 52,
},
],
47: [
function (e2, t3, r2) {
t3.exports = function () {
;(this.text = 0),
(this.time = 0),
(this.xflags = 0),
(this.os = 0),
(this.extra = null),
(this.extra_len = 0),
(this.name = ''),
(this.comment = ''),
(this.hcrc = 0),
(this.done = false)
}
},
{},
],
48: [
function (e2, t3, r2) {
t3.exports = function (e3, t4) {
var r3,
n2,
i2,
s2,
a2,
o2,
h2,
u2,
l2,
f2,
c2,
d3,
p2,
m2,
_2,
g2,
b2,
v4,
y2,
w2,
k2,
x2,
S2,
z2,
C2
;(r3 = e3.state),
(n2 = e3.next_in),
(z2 = e3.input),
(i2 = n2 + (e3.avail_in - 5)),
(s2 = e3.next_out),
(C2 = e3.output),
(a2 = s2 - (t4 - e3.avail_out)),
(o2 = s2 + (e3.avail_out - 257)),
(h2 = r3.dmax),
(u2 = r3.wsize),
(l2 = r3.whave),
(f2 = r3.wnext),
(c2 = r3.window),
(d3 = r3.hold),
(p2 = r3.bits),
(m2 = r3.lencode),
(_2 = r3.distcode),
(g2 = (1 << r3.lenbits) - 1),
(b2 = (1 << r3.distbits) - 1)
e: do {
p2 < 15 &&
((d3 += z2[n2++] << p2),
(p2 += 8),
(d3 += z2[n2++] << p2),
(p2 += 8)),
(v4 = m2[d3 & g2])
t: for (;;) {
if (
((d3 >>>= y2 = v4 >>> 24),
(p2 -= y2),
0 === (y2 = (v4 >>> 16) & 255))
)
C2[s2++] = 65535 & v4
else {
if (!(16 & y2)) {
if (0 == (64 & y2)) {
v4 = m2[(65535 & v4) + (d3 & ((1 << y2) - 1))]
continue t
}
if (32 & y2) {
r3.mode = 12
break e
}
;(e3.msg = 'invalid literal/length code'), (r3.mode = 30)
break e
}
;(w2 = 65535 & v4),
(y2 &= 15) &&
(p2 < y2 && ((d3 += z2[n2++] << p2), (p2 += 8)),
(w2 += d3 & ((1 << y2) - 1)),
(d3 >>>= y2),
(p2 -= y2)),
p2 < 15 &&
((d3 += z2[n2++] << p2),
(p2 += 8),
(d3 += z2[n2++] << p2),
(p2 += 8)),
(v4 = _2[d3 & b2])
r: for (;;) {
if (
((d3 >>>= y2 = v4 >>> 24),
(p2 -= y2),
!(16 & (y2 = (v4 >>> 16) & 255)))
) {
if (0 == (64 & y2)) {
v4 = _2[(65535 & v4) + (d3 & ((1 << y2) - 1))]
continue r
}
;(e3.msg = 'invalid distance code'), (r3.mode = 30)
break e
}
if (
((k2 = 65535 & v4),
p2 < (y2 &= 15) &&
((d3 += z2[n2++] << p2),
(p2 += 8) < y2 &&
((d3 += z2[n2++] << p2), (p2 += 8))),
h2 < (k2 += d3 & ((1 << y2) - 1)))
) {
;(e3.msg = 'invalid distance too far back'),
(r3.mode = 30)
break e
}
if (((d3 >>>= y2), (p2 -= y2), (y2 = s2 - a2) < k2)) {
if (l2 < (y2 = k2 - y2) && r3.sane) {
;(e3.msg = 'invalid distance too far back'),
(r3.mode = 30)
break e
}
if (((S2 = c2), (x2 = 0) === f2)) {
if (((x2 += u2 - y2), y2 < w2)) {
for (w2 -= y2; (C2[s2++] = c2[x2++]), --y2; );
;(x2 = s2 - k2), (S2 = C2)
}
} else if (f2 < y2) {
if (((x2 += u2 + f2 - y2), (y2 -= f2) < w2)) {
for (w2 -= y2; (C2[s2++] = c2[x2++]), --y2; );
if (((x2 = 0), f2 < w2)) {
for (
w2 -= y2 = f2;
(C2[s2++] = c2[x2++]), --y2;
);
;(x2 = s2 - k2), (S2 = C2)
}
}
} else if (((x2 += f2 - y2), y2 < w2)) {
for (w2 -= y2; (C2[s2++] = c2[x2++]), --y2; );
;(x2 = s2 - k2), (S2 = C2)
}
for (; 2 < w2; )
(C2[s2++] = S2[x2++]),
(C2[s2++] = S2[x2++]),
(C2[s2++] = S2[x2++]),
(w2 -= 3)
w2 &&
((C2[s2++] = S2[x2++]),
1 < w2 && (C2[s2++] = S2[x2++]))
} else {
for (
x2 = s2 - k2;
(C2[s2++] = C2[x2++]),
(C2[s2++] = C2[x2++]),
(C2[s2++] = C2[x2++]),
2 < (w2 -= 3);
);
w2 &&
((C2[s2++] = C2[x2++]),
1 < w2 && (C2[s2++] = C2[x2++]))
}
break
}
}
break
}
} while (n2 < i2 && s2 < o2)
;(n2 -= w2 = p2 >> 3),
(d3 &= (1 << (p2 -= w2 << 3)) - 1),
(e3.next_in = n2),
(e3.next_out = s2),
(e3.avail_in = n2 < i2 ? i2 - n2 + 5 : 5 - (n2 - i2)),
(e3.avail_out = s2 < o2 ? o2 - s2 + 257 : 257 - (s2 - o2)),
(r3.hold = d3),
(r3.bits = p2)
}
},
{},
],
49: [
function (e2, t3, r2) {
var I2 = e2('../utils/common'),
O2 = e2('./adler32'),
B3 = e2('./crc32'),
R2 = e2('./inffast'),
T2 = e2('./inftrees'),
D2 = 1,
F2 = 2,
N2 = 0,
U2 = -2,
P2 = 1,
n2 = 852,
i2 = 592
function L2(e3) {
return (
((e3 >>> 24) & 255) +
((e3 >>> 8) & 65280) +
((65280 & e3) << 8) +
((255 & e3) << 24)
)
}
function s2() {
;(this.mode = 0),
(this.last = false),
(this.wrap = 0),
(this.havedict = false),
(this.flags = 0),
(this.dmax = 0),
(this.check = 0),
(this.total = 0),
(this.head = null),
(this.wbits = 0),
(this.wsize = 0),
(this.whave = 0),
(this.wnext = 0),
(this.window = null),
(this.hold = 0),
(this.bits = 0),
(this.length = 0),
(this.offset = 0),
(this.extra = 0),
(this.lencode = null),
(this.distcode = null),
(this.lenbits = 0),
(this.distbits = 0),
(this.ncode = 0),
(this.nlen = 0),
(this.ndist = 0),
(this.have = 0),
(this.next = null),
(this.lens = new I2.Buf16(320)),
(this.work = new I2.Buf16(288)),
(this.lendyn = null),
(this.distdyn = null),
(this.sane = 0),
(this.back = 0),
(this.was = 0)
}
function a2(e3) {
var t4
return e3 && e3.state
? ((t4 = e3.state),
(e3.total_in = e3.total_out = t4.total = 0),
(e3.msg = ''),
t4.wrap && (e3.adler = 1 & t4.wrap),
(t4.mode = P2),
(t4.last = 0),
(t4.havedict = 0),
(t4.dmax = 32768),
(t4.head = null),
(t4.hold = 0),
(t4.bits = 0),
(t4.lencode = t4.lendyn = new I2.Buf32(n2)),
(t4.distcode = t4.distdyn = new I2.Buf32(i2)),
(t4.sane = 1),
(t4.back = -1),
N2)
: U2
}
function o2(e3) {
var t4
return e3 && e3.state
? (((t4 = e3.state).wsize = 0),
(t4.whave = 0),
(t4.wnext = 0),
a2(e3))
: U2
}
function h2(e3, t4) {
var r3, n3
return e3 && e3.state
? ((n3 = e3.state),
t4 < 0
? ((r3 = 0), (t4 = -t4))
: ((r3 = 1 + (t4 >> 4)), t4 < 48 && (t4 &= 15)),
t4 && (t4 < 8 || 15 < t4)
? U2
: (null !== n3.window &&
n3.wbits !== t4 &&
(n3.window = null),
(n3.wrap = r3),
(n3.wbits = t4),
o2(e3)))
: U2
}
function u2(e3, t4) {
var r3, n3
return e3
? ((n3 = new s2()),
((e3.state = n3).window = null),
(r3 = h2(e3, t4)) !== N2 && (e3.state = null),
r3)
: U2
}
var l2,
f2,
c2 = true
function j2(e3) {
if (c2) {
var t4
for (
l2 = new I2.Buf32(512), f2 = new I2.Buf32(32), t4 = 0;
t4 < 144;
)
e3.lens[t4++] = 8
for (; t4 < 256; ) e3.lens[t4++] = 9
for (; t4 < 280; ) e3.lens[t4++] = 7
for (; t4 < 288; ) e3.lens[t4++] = 8
for (
T2(D2, e3.lens, 0, 288, l2, 0, e3.work, { bits: 9 }), t4 = 0;
t4 < 32;
)
e3.lens[t4++] = 5
T2(F2, e3.lens, 0, 32, f2, 0, e3.work, { bits: 5 }),
(c2 = false)
}
;(e3.lencode = l2),
(e3.lenbits = 9),
(e3.distcode = f2),
(e3.distbits = 5)
}
function Z2(e3, t4, r3, n3) {
var i3,
s3 = e3.state
return (
null === s3.window &&
((s3.wsize = 1 << s3.wbits),
(s3.wnext = 0),
(s3.whave = 0),
(s3.window = new I2.Buf8(s3.wsize))),
n3 >= s3.wsize
? (I2.arraySet(s3.window, t4, r3 - s3.wsize, s3.wsize, 0),
(s3.wnext = 0),
(s3.whave = s3.wsize))
: (n3 < (i3 = s3.wsize - s3.wnext) && (i3 = n3),
I2.arraySet(s3.window, t4, r3 - n3, i3, s3.wnext),
(n3 -= i3)
? (I2.arraySet(s3.window, t4, r3 - n3, n3, 0),
(s3.wnext = n3),
(s3.whave = s3.wsize))
: ((s3.wnext += i3),
s3.wnext === s3.wsize && (s3.wnext = 0),
s3.whave < s3.wsize && (s3.whave += i3))),
0
)
}
;(r2.inflateReset = o2),
(r2.inflateReset2 = h2),
(r2.inflateResetKeep = a2),
(r2.inflateInit = function (e3) {
return u2(e3, 15)
}),
(r2.inflateInit2 = u2),
(r2.inflate = function (e3, t4) {
var r3,
n3,
i3,
s3,
a3,
o3,
h3,
u3,
l3,
f3,
c3,
d3,
p2,
m2,
_2,
g2,
b2,
v4,
y2,
w2,
k2,
x2,
S2,
z2,
C2 = 0,
E2 = new I2.Buf8(4),
A2 = [
16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14,
1, 15,
]
if (
!e3 ||
!e3.state ||
!e3.output ||
(!e3.input && 0 !== e3.avail_in)
)
return U2
12 === (r3 = e3.state).mode && (r3.mode = 13),
(a3 = e3.next_out),
(i3 = e3.output),
(h3 = e3.avail_out),
(s3 = e3.next_in),
(n3 = e3.input),
(o3 = e3.avail_in),
(u3 = r3.hold),
(l3 = r3.bits),
(f3 = o3),
(c3 = h3),
(x2 = N2)
e: for (;;)
switch (r3.mode) {
case P2:
if (0 === r3.wrap) {
r3.mode = 13
break
}
for (; l3 < 16; ) {
if (0 === o3) break e
o3--, (u3 += n3[s3++] << l3), (l3 += 8)
}
if (2 & r3.wrap && 35615 === u3) {
;(E2[(r3.check = 0)] = 255 & u3),
(E2[1] = (u3 >>> 8) & 255),
(r3.check = B3(r3.check, E2, 2, 0)),
(l3 = u3 = 0),
(r3.mode = 2)
break
}
if (
((r3.flags = 0),
r3.head && (r3.head.done = false),
!(1 & r3.wrap) || (((255 & u3) << 8) + (u3 >> 8)) % 31)
) {
;(e3.msg = 'incorrect header check'), (r3.mode = 30)
break
}
if (8 != (15 & u3)) {
;(e3.msg = 'unknown compression method'), (r3.mode = 30)
break
}
if (
((l3 -= 4),
(k2 = 8 + (15 & (u3 >>>= 4))),
0 === r3.wbits)
)
r3.wbits = k2
else if (k2 > r3.wbits) {
;(e3.msg = 'invalid window size'), (r3.mode = 30)
break
}
;(r3.dmax = 1 << k2),
(e3.adler = r3.check = 1),
(r3.mode = 512 & u3 ? 10 : 12),
(l3 = u3 = 0)
break
case 2:
for (; l3 < 16; ) {
if (0 === o3) break e
o3--, (u3 += n3[s3++] << l3), (l3 += 8)
}
if (((r3.flags = u3), 8 != (255 & r3.flags))) {
;(e3.msg = 'unknown compression method'), (r3.mode = 30)
break
}
if (57344 & r3.flags) {
;(e3.msg = 'unknown header flags set'), (r3.mode = 30)
break
}
r3.head && (r3.head.text = (u3 >> 8) & 1),
512 & r3.flags &&
((E2[0] = 255 & u3),
(E2[1] = (u3 >>> 8) & 255),
(r3.check = B3(r3.check, E2, 2, 0))),
(l3 = u3 = 0),
(r3.mode = 3)
case 3:
for (; l3 < 32; ) {
if (0 === o3) break e
o3--, (u3 += n3[s3++] << l3), (l3 += 8)
}
r3.head && (r3.head.time = u3),
512 & r3.flags &&
((E2[0] = 255 & u3),
(E2[1] = (u3 >>> 8) & 255),
(E2[2] = (u3 >>> 16) & 255),
(E2[3] = (u3 >>> 24) & 255),
(r3.check = B3(r3.check, E2, 4, 0))),
(l3 = u3 = 0),
(r3.mode = 4)
case 4:
for (; l3 < 16; ) {
if (0 === o3) break e
o3--, (u3 += n3[s3++] << l3), (l3 += 8)
}
r3.head &&
((r3.head.xflags = 255 & u3), (r3.head.os = u3 >> 8)),
512 & r3.flags &&
((E2[0] = 255 & u3),
(E2[1] = (u3 >>> 8) & 255),
(r3.check = B3(r3.check, E2, 2, 0))),
(l3 = u3 = 0),
(r3.mode = 5)
case 5:
if (1024 & r3.flags) {
for (; l3 < 16; ) {
if (0 === o3) break e
o3--, (u3 += n3[s3++] << l3), (l3 += 8)
}
;(r3.length = u3),
r3.head && (r3.head.extra_len = u3),
512 & r3.flags &&
((E2[0] = 255 & u3),
(E2[1] = (u3 >>> 8) & 255),
(r3.check = B3(r3.check, E2, 2, 0))),
(l3 = u3 = 0)
} else r3.head && (r3.head.extra = null)
r3.mode = 6
case 6:
if (
1024 & r3.flags &&
(o3 < (d3 = r3.length) && (d3 = o3),
d3 &&
(r3.head &&
((k2 = r3.head.extra_len - r3.length),
r3.head.extra ||
(r3.head.extra = new Array(r3.head.extra_len)),
I2.arraySet(r3.head.extra, n3, s3, d3, k2)),
512 & r3.flags &&
(r3.check = B3(r3.check, n3, d3, s3)),
(o3 -= d3),
(s3 += d3),
(r3.length -= d3)),
r3.length)
)
break e
;(r3.length = 0), (r3.mode = 7)
case 7:
if (2048 & r3.flags) {
if (0 === o3) break e
for (
d3 = 0;
(k2 = n3[s3 + d3++]),
r3.head &&
k2 &&
r3.length < 65536 &&
(r3.head.name += String.fromCharCode(k2)),
k2 && d3 < o3;
);
if (
(512 & r3.flags &&
(r3.check = B3(r3.check, n3, d3, s3)),
(o3 -= d3),
(s3 += d3),
k2)
)
break e
} else r3.head && (r3.head.name = null)
;(r3.length = 0), (r3.mode = 8)
case 8:
if (4096 & r3.flags) {
if (0 === o3) break e
for (
d3 = 0;
(k2 = n3[s3 + d3++]),
r3.head &&
k2 &&
r3.length < 65536 &&
(r3.head.comment += String.fromCharCode(k2)),
k2 && d3 < o3;
);
if (
(512 & r3.flags &&
(r3.check = B3(r3.check, n3, d3, s3)),
(o3 -= d3),
(s3 += d3),
k2)
)
break e
} else r3.head && (r3.head.comment = null)
r3.mode = 9
case 9:
if (512 & r3.flags) {
for (; l3 < 16; ) {
if (0 === o3) break e
o3--, (u3 += n3[s3++] << l3), (l3 += 8)
}
if (u3 !== (65535 & r3.check)) {
;(e3.msg = 'header crc mismatch'), (r3.mode = 30)
break
}
l3 = u3 = 0
}
r3.head &&
((r3.head.hcrc = (r3.flags >> 9) & 1),
(r3.head.done = true)),
(e3.adler = r3.check = 0),
(r3.mode = 12)
break
case 10:
for (; l3 < 32; ) {
if (0 === o3) break e
o3--, (u3 += n3[s3++] << l3), (l3 += 8)
}
;(e3.adler = r3.check = L2(u3)),
(l3 = u3 = 0),
(r3.mode = 11)
case 11:
if (0 === r3.havedict)
return (
(e3.next_out = a3),
(e3.avail_out = h3),
(e3.next_in = s3),
(e3.avail_in = o3),
(r3.hold = u3),
(r3.bits = l3),
2
)
;(e3.adler = r3.check = 1), (r3.mode = 12)
case 12:
if (5 === t4 || 6 === t4) break e
case 13:
if (r3.last) {
;(u3 >>>= 7 & l3), (l3 -= 7 & l3), (r3.mode = 27)
break
}
for (; l3 < 3; ) {
if (0 === o3) break e
o3--, (u3 += n3[s3++] << l3), (l3 += 8)
}
switch (
((r3.last = 1 & u3), (l3 -= 1), 3 & (u3 >>>= 1))
) {
case 0:
r3.mode = 14
break
case 1:
if ((j2(r3), (r3.mode = 20), 6 !== t4)) break
;(u3 >>>= 2), (l3 -= 2)
break e
case 2:
r3.mode = 17
break
case 3:
;(e3.msg = 'invalid block type'), (r3.mode = 30)
}
;(u3 >>>= 2), (l3 -= 2)
break
case 14:
for (u3 >>>= 7 & l3, l3 -= 7 & l3; l3 < 32; ) {
if (0 === o3) break e
o3--, (u3 += n3[s3++] << l3), (l3 += 8)
}
if ((65535 & u3) != ((u3 >>> 16) ^ 65535)) {
;(e3.msg = 'invalid stored block lengths'),
(r3.mode = 30)
break
}
if (
((r3.length = 65535 & u3),
(l3 = u3 = 0),
(r3.mode = 15),
6 === t4)
)
break e
case 15:
r3.mode = 16
case 16:
if ((d3 = r3.length)) {
if (
(o3 < d3 && (d3 = o3), h3 < d3 && (d3 = h3), 0 === d3)
)
break e
I2.arraySet(i3, n3, s3, d3, a3),
(o3 -= d3),
(s3 += d3),
(h3 -= d3),
(a3 += d3),
(r3.length -= d3)
break
}
r3.mode = 12
break
case 17:
for (; l3 < 14; ) {
if (0 === o3) break e
o3--, (u3 += n3[s3++] << l3), (l3 += 8)
}
if (
((r3.nlen = 257 + (31 & u3)),
(u3 >>>= 5),
(l3 -= 5),
(r3.ndist = 1 + (31 & u3)),
(u3 >>>= 5),
(l3 -= 5),
(r3.ncode = 4 + (15 & u3)),
(u3 >>>= 4),
(l3 -= 4),
286 < r3.nlen || 30 < r3.ndist)
) {
;(e3.msg = 'too many length or distance symbols'),
(r3.mode = 30)
break
}
;(r3.have = 0), (r3.mode = 18)
case 18:
for (; r3.have < r3.ncode; ) {
for (; l3 < 3; ) {
if (0 === o3) break e
o3--, (u3 += n3[s3++] << l3), (l3 += 8)
}
;(r3.lens[A2[r3.have++]] = 7 & u3),
(u3 >>>= 3),
(l3 -= 3)
}
for (; r3.have < 19; ) r3.lens[A2[r3.have++]] = 0
if (
((r3.lencode = r3.lendyn),
(r3.lenbits = 7),
(S2 = { bits: r3.lenbits }),
(x2 = T2(
0,
r3.lens,
0,
19,
r3.lencode,
0,
r3.work,
S2
)),
(r3.lenbits = S2.bits),
x2)
) {
;(e3.msg = 'invalid code lengths set'), (r3.mode = 30)
break
}
;(r3.have = 0), (r3.mode = 19)
case 19:
for (; r3.have < r3.nlen + r3.ndist; ) {
for (
;
(g2 =
((C2 = r3.lencode[u3 & ((1 << r3.lenbits) - 1)]) >>>
16) &
255),
(b2 = 65535 & C2),
!((_2 = C2 >>> 24) <= l3);
) {
if (0 === o3) break e
o3--, (u3 += n3[s3++] << l3), (l3 += 8)
}
if (b2 < 16)
(u3 >>>= _2), (l3 -= _2), (r3.lens[r3.have++] = b2)
else {
if (16 === b2) {
for (z2 = _2 + 2; l3 < z2; ) {
if (0 === o3) break e
o3--, (u3 += n3[s3++] << l3), (l3 += 8)
}
if (((u3 >>>= _2), (l3 -= _2), 0 === r3.have)) {
;(e3.msg = 'invalid bit length repeat'),
(r3.mode = 30)
break
}
;(k2 = r3.lens[r3.have - 1]),
(d3 = 3 + (3 & u3)),
(u3 >>>= 2),
(l3 -= 2)
} else if (17 === b2) {
for (z2 = _2 + 3; l3 < z2; ) {
if (0 === o3) break e
o3--, (u3 += n3[s3++] << l3), (l3 += 8)
}
;(l3 -= _2),
(k2 = 0),
(d3 = 3 + (7 & (u3 >>>= _2))),
(u3 >>>= 3),
(l3 -= 3)
} else {
for (z2 = _2 + 7; l3 < z2; ) {
if (0 === o3) break e
o3--, (u3 += n3[s3++] << l3), (l3 += 8)
}
;(l3 -= _2),
(k2 = 0),
(d3 = 11 + (127 & (u3 >>>= _2))),
(u3 >>>= 7),
(l3 -= 7)
}
if (r3.have + d3 > r3.nlen + r3.ndist) {
;(e3.msg = 'invalid bit length repeat'),
(r3.mode = 30)
break
}
for (; d3--; ) r3.lens[r3.have++] = k2
}
}
if (30 === r3.mode) break
if (0 === r3.lens[256]) {
;(e3.msg = 'invalid code -- missing end-of-block'),
(r3.mode = 30)
break
}
if (
((r3.lenbits = 9),
(S2 = { bits: r3.lenbits }),
(x2 = T2(
D2,
r3.lens,
0,
r3.nlen,
r3.lencode,
0,
r3.work,
S2
)),
(r3.lenbits = S2.bits),
x2)
) {
;(e3.msg = 'invalid literal/lengths set'),
(r3.mode = 30)
break
}
if (
((r3.distbits = 6),
(r3.distcode = r3.distdyn),
(S2 = { bits: r3.distbits }),
(x2 = T2(
F2,
r3.lens,
r3.nlen,
r3.ndist,
r3.distcode,
0,
r3.work,
S2
)),
(r3.distbits = S2.bits),
x2)
) {
;(e3.msg = 'invalid distances set'), (r3.mode = 30)
break
}
if (((r3.mode = 20), 6 === t4)) break e
case 20:
r3.mode = 21
case 21:
if (6 <= o3 && 258 <= h3) {
;(e3.next_out = a3),
(e3.avail_out = h3),
(e3.next_in = s3),
(e3.avail_in = o3),
(r3.hold = u3),
(r3.bits = l3),
R2(e3, c3),
(a3 = e3.next_out),
(i3 = e3.output),
(h3 = e3.avail_out),
(s3 = e3.next_in),
(n3 = e3.input),
(o3 = e3.avail_in),
(u3 = r3.hold),
(l3 = r3.bits),
12 === r3.mode && (r3.back = -1)
break
}
for (
r3.back = 0;
(g2 =
((C2 = r3.lencode[u3 & ((1 << r3.lenbits) - 1)]) >>>
16) &
255),
(b2 = 65535 & C2),
!((_2 = C2 >>> 24) <= l3);
) {
if (0 === o3) break e
o3--, (u3 += n3[s3++] << l3), (l3 += 8)
}
if (g2 && 0 == (240 & g2)) {
for (
v4 = _2, y2 = g2, w2 = b2;
(g2 =
((C2 =
r3.lencode[
w2 + ((u3 & ((1 << (v4 + y2)) - 1)) >> v4)
]) >>>
16) &
255),
(b2 = 65535 & C2),
!(v4 + (_2 = C2 >>> 24) <= l3);
) {
if (0 === o3) break e
o3--, (u3 += n3[s3++] << l3), (l3 += 8)
}
;(u3 >>>= v4), (l3 -= v4), (r3.back += v4)
}
if (
((u3 >>>= _2),
(l3 -= _2),
(r3.back += _2),
(r3.length = b2),
0 === g2)
) {
r3.mode = 26
break
}
if (32 & g2) {
;(r3.back = -1), (r3.mode = 12)
break
}
if (64 & g2) {
;(e3.msg = 'invalid literal/length code'),
(r3.mode = 30)
break
}
;(r3.extra = 15 & g2), (r3.mode = 22)
case 22:
if (r3.extra) {
for (z2 = r3.extra; l3 < z2; ) {
if (0 === o3) break e
o3--, (u3 += n3[s3++] << l3), (l3 += 8)
}
;(r3.length += u3 & ((1 << r3.extra) - 1)),
(u3 >>>= r3.extra),
(l3 -= r3.extra),
(r3.back += r3.extra)
}
;(r3.was = r3.length), (r3.mode = 23)
case 23:
for (
;
(g2 =
((C2 = r3.distcode[u3 & ((1 << r3.distbits) - 1)]) >>>
16) &
255),
(b2 = 65535 & C2),
!((_2 = C2 >>> 24) <= l3);
) {
if (0 === o3) break e
o3--, (u3 += n3[s3++] << l3), (l3 += 8)
}
if (0 == (240 & g2)) {
for (
v4 = _2, y2 = g2, w2 = b2;
(g2 =
((C2 =
r3.distcode[
w2 + ((u3 & ((1 << (v4 + y2)) - 1)) >> v4)
]) >>>
16) &
255),
(b2 = 65535 & C2),
!(v4 + (_2 = C2 >>> 24) <= l3);
) {
if (0 === o3) break e
o3--, (u3 += n3[s3++] << l3), (l3 += 8)
}
;(u3 >>>= v4), (l3 -= v4), (r3.back += v4)
}
if (
((u3 >>>= _2), (l3 -= _2), (r3.back += _2), 64 & g2)
) {
;(e3.msg = 'invalid distance code'), (r3.mode = 30)
break
}
;(r3.offset = b2), (r3.extra = 15 & g2), (r3.mode = 24)
case 24:
if (r3.extra) {
for (z2 = r3.extra; l3 < z2; ) {
if (0 === o3) break e
o3--, (u3 += n3[s3++] << l3), (l3 += 8)
}
;(r3.offset += u3 & ((1 << r3.extra) - 1)),
(u3 >>>= r3.extra),
(l3 -= r3.extra),
(r3.back += r3.extra)
}
if (r3.offset > r3.dmax) {
;(e3.msg = 'invalid distance too far back'),
(r3.mode = 30)
break
}
r3.mode = 25
case 25:
if (0 === h3) break e
if (((d3 = c3 - h3), r3.offset > d3)) {
if ((d3 = r3.offset - d3) > r3.whave && r3.sane) {
;(e3.msg = 'invalid distance too far back'),
(r3.mode = 30)
break
}
;(p2 =
d3 > r3.wnext
? ((d3 -= r3.wnext), r3.wsize - d3)
: r3.wnext - d3),
d3 > r3.length && (d3 = r3.length),
(m2 = r3.window)
} else (m2 = i3), (p2 = a3 - r3.offset), (d3 = r3.length)
for (
h3 < d3 && (d3 = h3), h3 -= d3, r3.length -= d3;
(i3[a3++] = m2[p2++]), --d3;
);
0 === r3.length && (r3.mode = 21)
break
case 26:
if (0 === h3) break e
;(i3[a3++] = r3.length), h3--, (r3.mode = 21)
break
case 27:
if (r3.wrap) {
for (; l3 < 32; ) {
if (0 === o3) break e
o3--, (u3 |= n3[s3++] << l3), (l3 += 8)
}
if (
((c3 -= h3),
(e3.total_out += c3),
(r3.total += c3),
c3 &&
(e3.adler = r3.check =
r3.flags
? B3(r3.check, i3, c3, a3 - c3)
: O2(r3.check, i3, c3, a3 - c3)),
(c3 = h3),
(r3.flags ? u3 : L2(u3)) !== r3.check)
) {
;(e3.msg = 'incorrect data check'), (r3.mode = 30)
break
}
l3 = u3 = 0
}
r3.mode = 28
case 28:
if (r3.wrap && r3.flags) {
for (; l3 < 32; ) {
if (0 === o3) break e
o3--, (u3 += n3[s3++] << l3), (l3 += 8)
}
if (u3 !== (4294967295 & r3.total)) {
;(e3.msg = 'incorrect length check'), (r3.mode = 30)
break
}
l3 = u3 = 0
}
r3.mode = 29
case 29:
x2 = 1
break e
case 30:
x2 = -3
break e
case 31:
return -4
case 32:
default:
return U2
}
return (
(e3.next_out = a3),
(e3.avail_out = h3),
(e3.next_in = s3),
(e3.avail_in = o3),
(r3.hold = u3),
(r3.bits = l3),
(r3.wsize ||
(c3 !== e3.avail_out &&
r3.mode < 30 &&
(r3.mode < 27 || 4 !== t4))) &&
Z2(e3, e3.output, e3.next_out, c3 - e3.avail_out)
? ((r3.mode = 31), -4)
: ((f3 -= e3.avail_in),
(c3 -= e3.avail_out),
(e3.total_in += f3),
(e3.total_out += c3),
(r3.total += c3),
r3.wrap &&
c3 &&
(e3.adler = r3.check =
r3.flags
? B3(r3.check, i3, c3, e3.next_out - c3)
: O2(r3.check, i3, c3, e3.next_out - c3)),
(e3.data_type =
r3.bits +
(r3.last ? 64 : 0) +
(12 === r3.mode ? 128 : 0) +
(20 === r3.mode || 15 === r3.mode ? 256 : 0)),
((0 == f3 && 0 === c3) || 4 === t4) &&
x2 === N2 &&
(x2 = -5),
x2)
)
}),
(r2.inflateEnd = function (e3) {
if (!e3 || !e3.state) return U2
var t4 = e3.state
return t4.window && (t4.window = null), (e3.state = null), N2
}),
(r2.inflateGetHeader = function (e3, t4) {
var r3
return e3 && e3.state
? 0 == (2 & (r3 = e3.state).wrap)
? U2
: (((r3.head = t4).done = false), N2)
: U2
}),
(r2.inflateSetDictionary = function (e3, t4) {
var r3,
n3 = t4.length
return e3 && e3.state
? 0 !== (r3 = e3.state).wrap && 11 !== r3.mode
? U2
: 11 === r3.mode && O2(1, t4, n3, 0) !== r3.check
? -3
: Z2(e3, t4, n3, n3)
? ((r3.mode = 31), -4)
: ((r3.havedict = 1), N2)
: U2
}),
(r2.inflateInfo = 'pako inflate (from Nodeca project)')
},
{
'../utils/common': 41,
'./adler32': 43,
'./crc32': 45,
'./inffast': 48,
'./inftrees': 50,
},
],
50: [
function (e2, t3, r2) {
var D2 = e2('../utils/common'),
F2 = [
3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43,
51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0,
],
N2 = [
16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78,
],
U2 = [
1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257,
385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289,
16385, 24577, 0, 0,
],
P2 = [
16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,
23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64,
]
t3.exports = function (e3, t4, r3, n2, i2, s2, a2, o2) {
var h2,
u2,
l2,
f2,
c2,
d3,
p2,
m2,
_2,
g2 = o2.bits,
b2 = 0,
v4 = 0,
y2 = 0,
w2 = 0,
k2 = 0,
x2 = 0,
S2 = 0,
z2 = 0,
C2 = 0,
E2 = 0,
A2 = null,
I2 = 0,
O2 = new D2.Buf16(16),
B3 = new D2.Buf16(16),
R2 = null,
T2 = 0
for (b2 = 0; b2 <= 15; b2++) O2[b2] = 0
for (v4 = 0; v4 < n2; v4++) O2[t4[r3 + v4]]++
for (k2 = g2, w2 = 15; 1 <= w2 && 0 === O2[w2]; w2--);
if ((w2 < k2 && (k2 = w2), 0 === w2))
return (
(i2[s2++] = 20971520), (i2[s2++] = 20971520), (o2.bits = 1), 0
)
for (y2 = 1; y2 < w2 && 0 === O2[y2]; y2++);
for (k2 < y2 && (k2 = y2), b2 = z2 = 1; b2 <= 15; b2++)
if (((z2 <<= 1), (z2 -= O2[b2]) < 0)) return -1
if (0 < z2 && (0 === e3 || 1 !== w2)) return -1
for (B3[1] = 0, b2 = 1; b2 < 15; b2++)
B3[b2 + 1] = B3[b2] + O2[b2]
for (v4 = 0; v4 < n2; v4++)
0 !== t4[r3 + v4] && (a2[B3[t4[r3 + v4]]++] = v4)
if (
((d3 =
0 === e3
? ((A2 = R2 = a2), 19)
: 1 === e3
? ((A2 = F2), (I2 -= 257), (R2 = N2), (T2 -= 257), 256)
: ((A2 = U2), (R2 = P2), -1)),
(b2 = y2),
(c2 = s2),
(S2 = v4 = E2 = 0),
(l2 = -1),
(f2 = (C2 = 1 << (x2 = k2)) - 1),
(1 === e3 && 852 < C2) || (2 === e3 && 592 < C2))
)
return 1
for (;;) {
for (
p2 = b2 - S2,
_2 =
a2[v4] < d3
? ((m2 = 0), a2[v4])
: a2[v4] > d3
? ((m2 = R2[T2 + a2[v4]]), A2[I2 + a2[v4]])
: ((m2 = 96), 0),
h2 = 1 << (b2 - S2),
y2 = u2 = 1 << x2;
(i2[c2 + (E2 >> S2) + (u2 -= h2)] =
(p2 << 24) | (m2 << 16) | _2 | 0),
0 !== u2;
);
for (h2 = 1 << (b2 - 1); E2 & h2; ) h2 >>= 1
if (
(0 !== h2 ? ((E2 &= h2 - 1), (E2 += h2)) : (E2 = 0),
v4++,
0 == --O2[b2])
) {
if (b2 === w2) break
b2 = t4[r3 + a2[v4]]
}
if (k2 < b2 && (E2 & f2) !== l2) {
for (
0 === S2 && (S2 = k2), c2 += y2, z2 = 1 << (x2 = b2 - S2);
x2 + S2 < w2 && !((z2 -= O2[x2 + S2]) <= 0);
)
x2++, (z2 <<= 1)
if (
((C2 += 1 << x2),
(1 === e3 && 852 < C2) || (2 === e3 && 592 < C2))
)
return 1
i2[(l2 = E2 & f2)] = (k2 << 24) | (x2 << 16) | (c2 - s2) | 0
}
}
return (
0 !== E2 && (i2[c2 + E2] = ((b2 - S2) << 24) | (64 << 16) | 0),
(o2.bits = k2),
0
)
}
},
{ '../utils/common': 41 },
],
51: [
function (e2, t3, r2) {
t3.exports = {
2: 'need dictionary',
1: 'stream end',
0: '',
'-1': 'file error',
'-2': 'stream error',
'-3': 'data error',
'-4': 'insufficient memory',
'-5': 'buffer error',
'-6': 'incompatible version',
}
},
{},
],
52: [
function (e2, t3, r2) {
var i2 = e2('../utils/common'),
o2 = 0,
h2 = 1
function n2(e3) {
for (var t4 = e3.length; 0 <= --t4; ) e3[t4] = 0
}
var s2 = 0,
a2 = 29,
u2 = 256,
l2 = u2 + 1 + a2,
f2 = 30,
c2 = 19,
_2 = 2 * l2 + 1,
g2 = 15,
d3 = 16,
p2 = 7,
m2 = 256,
b2 = 16,
v4 = 17,
y2 = 18,
w2 = [
0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4,
4, 4, 4, 5, 5, 5, 5, 0,
],
k2 = [
0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9,
9, 10, 10, 11, 11, 12, 12, 13, 13,
],
x2 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7],
S2 = [
16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1,
15,
],
z2 = new Array(2 * (l2 + 2))
n2(z2)
var C2 = new Array(2 * f2)
n2(C2)
var E2 = new Array(512)
n2(E2)
var A2 = new Array(256)
n2(A2)
var I2 = new Array(a2)
n2(I2)
var O2,
B3,
R2,
T2 = new Array(f2)
function D2(e3, t4, r3, n3, i3) {
;(this.static_tree = e3),
(this.extra_bits = t4),
(this.extra_base = r3),
(this.elems = n3),
(this.max_length = i3),
(this.has_stree = e3 && e3.length)
}
function F2(e3, t4) {
;(this.dyn_tree = e3), (this.max_code = 0), (this.stat_desc = t4)
}
function N2(e3) {
return e3 < 256 ? E2[e3] : E2[256 + (e3 >>> 7)]
}
function U2(e3, t4) {
;(e3.pending_buf[e3.pending++] = 255 & t4),
(e3.pending_buf[e3.pending++] = (t4 >>> 8) & 255)
}
function P2(e3, t4, r3) {
e3.bi_valid > d3 - r3
? ((e3.bi_buf |= (t4 << e3.bi_valid) & 65535),
U2(e3, e3.bi_buf),
(e3.bi_buf = t4 >> (d3 - e3.bi_valid)),
(e3.bi_valid += r3 - d3))
: ((e3.bi_buf |= (t4 << e3.bi_valid) & 65535),
(e3.bi_valid += r3))
}
function L2(e3, t4, r3) {
P2(e3, r3[2 * t4], r3[2 * t4 + 1])
}
function j2(e3, t4) {
for (
var r3 = 0;
(r3 |= 1 & e3), (e3 >>>= 1), (r3 <<= 1), 0 < --t4;
);
return r3 >>> 1
}
function Z2(e3, t4, r3) {
var n3,
i3,
s3 = new Array(g2 + 1),
a3 = 0
for (n3 = 1; n3 <= g2; n3++) s3[n3] = a3 = (a3 + r3[n3 - 1]) << 1
for (i3 = 0; i3 <= t4; i3++) {
var o3 = e3[2 * i3 + 1]
0 !== o3 && (e3[2 * i3] = j2(s3[o3]++, o3))
}
}
function W2(e3) {
var t4
for (t4 = 0; t4 < l2; t4++) e3.dyn_ltree[2 * t4] = 0
for (t4 = 0; t4 < f2; t4++) e3.dyn_dtree[2 * t4] = 0
for (t4 = 0; t4 < c2; t4++) e3.bl_tree[2 * t4] = 0
;(e3.dyn_ltree[2 * m2] = 1),
(e3.opt_len = e3.static_len = 0),
(e3.last_lit = e3.matches = 0)
}
function M2(e3) {
8 < e3.bi_valid
? U2(e3, e3.bi_buf)
: 0 < e3.bi_valid && (e3.pending_buf[e3.pending++] = e3.bi_buf),
(e3.bi_buf = 0),
(e3.bi_valid = 0)
}
function H4(e3, t4, r3, n3) {
var i3 = 2 * t4,
s3 = 2 * r3
return e3[i3] < e3[s3] || (e3[i3] === e3[s3] && n3[t4] <= n3[r3])
}
function G2(e3, t4, r3) {
for (
var n3 = e3.heap[r3], i3 = r3 << 1;
i3 <= e3.heap_len &&
(i3 < e3.heap_len &&
H4(t4, e3.heap[i3 + 1], e3.heap[i3], e3.depth) &&
i3++,
!H4(t4, n3, e3.heap[i3], e3.depth));
)
(e3.heap[r3] = e3.heap[i3]), (r3 = i3), (i3 <<= 1)
e3.heap[r3] = n3
}
function K2(e3, t4, r3) {
var n3,
i3,
s3,
a3,
o3 = 0
if (0 !== e3.last_lit)
for (
;
(n3 =
(e3.pending_buf[e3.d_buf + 2 * o3] << 8) |
e3.pending_buf[e3.d_buf + 2 * o3 + 1]),
(i3 = e3.pending_buf[e3.l_buf + o3]),
o3++,
0 === n3
? L2(e3, i3, t4)
: (L2(e3, (s3 = A2[i3]) + u2 + 1, t4),
0 !== (a3 = w2[s3]) && P2(e3, (i3 -= I2[s3]), a3),
L2(e3, (s3 = N2(--n3)), r3),
0 !== (a3 = k2[s3]) && P2(e3, (n3 -= T2[s3]), a3)),
o3 < e3.last_lit;
);
L2(e3, m2, t4)
}
function Y2(e3, t4) {
var r3,
n3,
i3,
s3 = t4.dyn_tree,
a3 = t4.stat_desc.static_tree,
o3 = t4.stat_desc.has_stree,
h3 = t4.stat_desc.elems,
u3 = -1
for (e3.heap_len = 0, e3.heap_max = _2, r3 = 0; r3 < h3; r3++)
0 !== s3[2 * r3]
? ((e3.heap[++e3.heap_len] = u3 = r3), (e3.depth[r3] = 0))
: (s3[2 * r3 + 1] = 0)
for (; e3.heap_len < 2; )
(s3[2 * (i3 = e3.heap[++e3.heap_len] = u3 < 2 ? ++u3 : 0)] = 1),
(e3.depth[i3] = 0),
e3.opt_len--,
o3 && (e3.static_len -= a3[2 * i3 + 1])
for (t4.max_code = u3, r3 = e3.heap_len >> 1; 1 <= r3; r3--)
G2(e3, s3, r3)
for (
i3 = h3;
(r3 = e3.heap[1]),
(e3.heap[1] = e3.heap[e3.heap_len--]),
G2(e3, s3, 1),
(n3 = e3.heap[1]),
(e3.heap[--e3.heap_max] = r3),
(e3.heap[--e3.heap_max] = n3),
(s3[2 * i3] = s3[2 * r3] + s3[2 * n3]),
(e3.depth[i3] =
(e3.depth[r3] >= e3.depth[n3]
? e3.depth[r3]
: e3.depth[n3]) + 1),
(s3[2 * r3 + 1] = s3[2 * n3 + 1] = i3),
(e3.heap[1] = i3++),
G2(e3, s3, 1),
2 <= e3.heap_len;
);
;(e3.heap[--e3.heap_max] = e3.heap[1]),
(function (e4, t5) {
var r4,
n4,
i4,
s4,
a4,
o4,
h4 = t5.dyn_tree,
u4 = t5.max_code,
l3 = t5.stat_desc.static_tree,
f3 = t5.stat_desc.has_stree,
c3 = t5.stat_desc.extra_bits,
d4 = t5.stat_desc.extra_base,
p3 = t5.stat_desc.max_length,
m3 = 0
for (s4 = 0; s4 <= g2; s4++) e4.bl_count[s4] = 0
for (
h4[2 * e4.heap[e4.heap_max] + 1] = 0, r4 = e4.heap_max + 1;
r4 < _2;
r4++
)
p3 <
(s4 = h4[2 * h4[2 * (n4 = e4.heap[r4]) + 1] + 1] + 1) &&
((s4 = p3), m3++),
(h4[2 * n4 + 1] = s4),
u4 < n4 ||
(e4.bl_count[s4]++,
(a4 = 0),
d4 <= n4 && (a4 = c3[n4 - d4]),
(o4 = h4[2 * n4]),
(e4.opt_len += o4 * (s4 + a4)),
f3 && (e4.static_len += o4 * (l3[2 * n4 + 1] + a4)))
if (0 !== m3) {
do {
for (s4 = p3 - 1; 0 === e4.bl_count[s4]; ) s4--
e4.bl_count[s4]--,
(e4.bl_count[s4 + 1] += 2),
e4.bl_count[p3]--,
(m3 -= 2)
} while (0 < m3)
for (s4 = p3; 0 !== s4; s4--)
for (n4 = e4.bl_count[s4]; 0 !== n4; )
u4 < (i4 = e4.heap[--r4]) ||
(h4[2 * i4 + 1] !== s4 &&
((e4.opt_len += (s4 - h4[2 * i4 + 1]) * h4[2 * i4]),
(h4[2 * i4 + 1] = s4)),
n4--)
}
})(e3, t4),
Z2(s3, u3, e3.bl_count)
}
function X2(e3, t4, r3) {
var n3,
i3,
s3 = -1,
a3 = t4[1],
o3 = 0,
h3 = 7,
u3 = 4
for (
0 === a3 && ((h3 = 138), (u3 = 3)),
t4[2 * (r3 + 1) + 1] = 65535,
n3 = 0;
n3 <= r3;
n3++
)
(i3 = a3),
(a3 = t4[2 * (n3 + 1) + 1]),
(++o3 < h3 && i3 === a3) ||
(o3 < u3
? (e3.bl_tree[2 * i3] += o3)
: 0 !== i3
? (i3 !== s3 && e3.bl_tree[2 * i3]++,
e3.bl_tree[2 * b2]++)
: o3 <= 10
? e3.bl_tree[2 * v4]++
: e3.bl_tree[2 * y2]++,
(s3 = i3),
(u3 =
(o3 = 0) === a3
? ((h3 = 138), 3)
: i3 === a3
? ((h3 = 6), 3)
: ((h3 = 7), 4)))
}
function V2(e3, t4, r3) {
var n3,
i3,
s3 = -1,
a3 = t4[1],
o3 = 0,
h3 = 7,
u3 = 4
for (0 === a3 && ((h3 = 138), (u3 = 3)), n3 = 0; n3 <= r3; n3++)
if (
((i3 = a3),
(a3 = t4[2 * (n3 + 1) + 1]),
!(++o3 < h3 && i3 === a3))
) {
if (o3 < u3) for (; L2(e3, i3, e3.bl_tree), 0 != --o3; );
else
0 !== i3
? (i3 !== s3 && (L2(e3, i3, e3.bl_tree), o3--),
L2(e3, b2, e3.bl_tree),
P2(e3, o3 - 3, 2))
: o3 <= 10
? (L2(e3, v4, e3.bl_tree), P2(e3, o3 - 3, 3))
: (L2(e3, y2, e3.bl_tree), P2(e3, o3 - 11, 7))
;(s3 = i3),
(u3 =
(o3 = 0) === a3
? ((h3 = 138), 3)
: i3 === a3
? ((h3 = 6), 3)
: ((h3 = 7), 4))
}
}
n2(T2)
var q2 = false
function J2(e3, t4, r3, n3) {
P2(e3, (s2 << 1) + (n3 ? 1 : 0), 3),
(function (e4, t5, r4, n4) {
M2(e4),
n4 && (U2(e4, r4), U2(e4, ~r4)),
i2.arraySet(e4.pending_buf, e4.window, t5, r4, e4.pending),
(e4.pending += r4)
})(e3, t4, r3, true)
}
;(r2._tr_init = function (e3) {
q2 ||
((function () {
var e4,
t4,
r3,
n3,
i3,
s3 = new Array(g2 + 1)
for (n3 = r3 = 0; n3 < a2 - 1; n3++)
for (I2[n3] = r3, e4 = 0; e4 < 1 << w2[n3]; e4++)
A2[r3++] = n3
for (A2[r3 - 1] = n3, n3 = i3 = 0; n3 < 16; n3++)
for (T2[n3] = i3, e4 = 0; e4 < 1 << k2[n3]; e4++)
E2[i3++] = n3
for (i3 >>= 7; n3 < f2; n3++)
for (T2[n3] = i3 << 7, e4 = 0; e4 < 1 << (k2[n3] - 7); e4++)
E2[256 + i3++] = n3
for (t4 = 0; t4 <= g2; t4++) s3[t4] = 0
for (e4 = 0; e4 <= 143; ) (z2[2 * e4 + 1] = 8), e4++, s3[8]++
for (; e4 <= 255; ) (z2[2 * e4 + 1] = 9), e4++, s3[9]++
for (; e4 <= 279; ) (z2[2 * e4 + 1] = 7), e4++, s3[7]++
for (; e4 <= 287; ) (z2[2 * e4 + 1] = 8), e4++, s3[8]++
for (Z2(z2, l2 + 1, s3), e4 = 0; e4 < f2; e4++)
(C2[2 * e4 + 1] = 5), (C2[2 * e4] = j2(e4, 5))
;(O2 = new D2(z2, w2, u2 + 1, l2, g2)),
(B3 = new D2(C2, k2, 0, f2, g2)),
(R2 = new D2(new Array(0), x2, 0, c2, p2))
})(),
(q2 = true)),
(e3.l_desc = new F2(e3.dyn_ltree, O2)),
(e3.d_desc = new F2(e3.dyn_dtree, B3)),
(e3.bl_desc = new F2(e3.bl_tree, R2)),
(e3.bi_buf = 0),
(e3.bi_valid = 0),
W2(e3)
}),
(r2._tr_stored_block = J2),
(r2._tr_flush_block = function (e3, t4, r3, n3) {
var i3,
s3,
a3 = 0
0 < e3.level
? (2 === e3.strm.data_type &&
(e3.strm.data_type = (function (e4) {
var t5,
r4 = 4093624447
for (t5 = 0; t5 <= 31; t5++, r4 >>>= 1)
if (1 & r4 && 0 !== e4.dyn_ltree[2 * t5]) return o2
if (
0 !== e4.dyn_ltree[18] ||
0 !== e4.dyn_ltree[20] ||
0 !== e4.dyn_ltree[26]
)
return h2
for (t5 = 32; t5 < u2; t5++)
if (0 !== e4.dyn_ltree[2 * t5]) return h2
return o2
})(e3)),
Y2(e3, e3.l_desc),
Y2(e3, e3.d_desc),
(a3 = (function (e4) {
var t5
for (
X2(e4, e4.dyn_ltree, e4.l_desc.max_code),
X2(e4, e4.dyn_dtree, e4.d_desc.max_code),
Y2(e4, e4.bl_desc),
t5 = c2 - 1;
3 <= t5 && 0 === e4.bl_tree[2 * S2[t5] + 1];
t5--
);
return (e4.opt_len += 3 * (t5 + 1) + 5 + 5 + 4), t5
})(e3)),
(i3 = (e3.opt_len + 3 + 7) >>> 3),
(s3 = (e3.static_len + 3 + 7) >>> 3) <= i3 && (i3 = s3))
: (i3 = s3 = r3 + 5),
r3 + 4 <= i3 && -1 !== t4
? J2(e3, t4, r3, n3)
: 4 === e3.strategy || s3 === i3
? (P2(e3, 2 + (n3 ? 1 : 0), 3), K2(e3, z2, C2))
: (P2(e3, 4 + (n3 ? 1 : 0), 3),
(function (e4, t5, r4, n4) {
var i4
for (
P2(e4, t5 - 257, 5),
P2(e4, r4 - 1, 5),
P2(e4, n4 - 4, 4),
i4 = 0;
i4 < n4;
i4++
)
P2(e4, e4.bl_tree[2 * S2[i4] + 1], 3)
V2(e4, e4.dyn_ltree, t5 - 1),
V2(e4, e4.dyn_dtree, r4 - 1)
})(
e3,
e3.l_desc.max_code + 1,
e3.d_desc.max_code + 1,
a3 + 1
),
K2(e3, e3.dyn_ltree, e3.dyn_dtree)),
W2(e3),
n3 && M2(e3)
}),
(r2._tr_tally = function (e3, t4, r3) {
return (
(e3.pending_buf[e3.d_buf + 2 * e3.last_lit] =
(t4 >>> 8) & 255),
(e3.pending_buf[e3.d_buf + 2 * e3.last_lit + 1] = 255 & t4),
(e3.pending_buf[e3.l_buf + e3.last_lit] = 255 & r3),
e3.last_lit++,
0 === t4
? e3.dyn_ltree[2 * r3]++
: (e3.matches++,
t4--,
e3.dyn_ltree[2 * (A2[r3] + u2 + 1)]++,
e3.dyn_dtree[2 * N2(t4)]++),
e3.last_lit === e3.lit_bufsize - 1
)
}),
(r2._tr_align = function (e3) {
P2(e3, 2, 3),
L2(e3, m2, z2),
(function (e4) {
16 === e4.bi_valid
? (U2(e4, e4.bi_buf), (e4.bi_buf = 0), (e4.bi_valid = 0))
: 8 <= e4.bi_valid &&
((e4.pending_buf[e4.pending++] = 255 & e4.bi_buf),
(e4.bi_buf >>= 8),
(e4.bi_valid -= 8))
})(e3)
})
},
{ '../utils/common': 41 },
],
53: [
function (e2, t3, r2) {
t3.exports = function () {
;(this.input = null),
(this.next_in = 0),
(this.avail_in = 0),
(this.total_in = 0),
(this.output = null),
(this.next_out = 0),
(this.avail_out = 0),
(this.total_out = 0),
(this.msg = ''),
(this.state = null),
(this.data_type = 2),
(this.adler = 0)
}
},
{},
],
54: [
function (e2, t3, r2) {
;(function (e3) {
!(function (r3, n2) {
if (!r3.setImmediate) {
var i2,
s2,
t4,
a2,
o2 = 1,
h2 = {},
u2 = false,
l2 = r3.document,
e4 = Object.getPrototypeOf && Object.getPrototypeOf(r3)
;(e4 = e4 && e4.setTimeout ? e4 : r3),
(i2 =
'[object process]' === {}.toString.call(r3.process)
? function (e5) {
process.nextTick(function () {
c2(e5)
})
}
: (function () {
if (r3.postMessage && !r3.importScripts) {
var e5 = true,
t5 = r3.onmessage
return (
(r3.onmessage = function () {
e5 = false
}),
r3.postMessage('', '*'),
(r3.onmessage = t5),
e5
)
}
})()
? ((a2 = 'setImmediate$' + Math.random() + '$'),
r3.addEventListener
? r3.addEventListener('message', d3, false)
: r3.attachEvent('onmessage', d3),
function (e5) {
r3.postMessage(a2 + e5, '*')
})
: r3.MessageChannel
? (((t4 = new MessageChannel()).port1.onmessage =
function (e5) {
c2(e5.data)
}),
function (e5) {
t4.port2.postMessage(e5)
})
: l2 &&
'onreadystatechange' in l2.createElement('script')
? ((s2 = l2.documentElement),
function (e5) {
var t5 = l2.createElement('script')
;(t5.onreadystatechange = function () {
c2(e5),
(t5.onreadystatechange = null),
s2.removeChild(t5),
(t5 = null)
}),
s2.appendChild(t5)
})
: function (e5) {
setTimeout(c2, 0, e5)
}),
(e4.setImmediate = function (e5) {
'function' != typeof e5 && (e5 = new Function('' + e5))
for (
var t5 = new Array(arguments.length - 1), r4 = 0;
r4 < t5.length;
r4++
)
t5[r4] = arguments[r4 + 1]
var n3 = { callback: e5, args: t5 }
return (h2[o2] = n3), i2(o2), o2++
}),
(e4.clearImmediate = f2)
}
function f2(e5) {
delete h2[e5]
}
function c2(e5) {
if (u2) setTimeout(c2, 0, e5)
else {
var t5 = h2[e5]
if (t5) {
u2 = true
try {
!(function (e6) {
var t6 = e6.callback,
r4 = e6.args
switch (r4.length) {
case 0:
t6()
break
case 1:
t6(r4[0])
break
case 2:
t6(r4[0], r4[1])
break
case 3:
t6(r4[0], r4[1], r4[2])
break
default:
t6.apply(n2, r4)
}
})(t5)
} finally {
f2(e5), (u2 = false)
}
}
}
}
function d3(e5) {
e5.source === r3 &&
'string' == typeof e5.data &&
0 === e5.data.indexOf(a2) &&
c2(+e5.data.slice(a2.length))
}
})(
'undefined' == typeof self ? (void 0 === e3 ? this : e3) : self
)
}).call(
this,
'undefined' != typeof commonjsGlobal
? commonjsGlobal
: 'undefined' != typeof self
? self
: 'undefined' != typeof window
? window
: {}
)
},
{},
],
},
{},
[10]
)(10)
})
})(jszip_min$1)
var JSZip = jszip_min$1.exports
var jszip_min = /* @__PURE__ */ _mergeNamespaces(
{
__proto__: null,
default: JSZip,
},
[jszip_min$1.exports]
)
var md5 = { exports: {} }
var core = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory) {
{
module2.exports = factory()
}
})(commonjsGlobal, function () {
var CryptoJS =
CryptoJS ||
(function (Math2, undefined$1) {
var crypto
if (typeof window !== 'undefined' && window.crypto) {
crypto = window.crypto
}
if (typeof self !== 'undefined' && self.crypto) {
crypto = self.crypto
}
if (typeof globalThis !== 'undefined' && globalThis.crypto) {
crypto = globalThis.crypto
}
if (!crypto && typeof window !== 'undefined' && window.msCrypto) {
crypto = window.msCrypto
}
if (
!crypto &&
typeof commonjsGlobal !== 'undefined' &&
commonjsGlobal.crypto
) {
crypto = commonjsGlobal.crypto
}
if (!crypto && typeof commonjsRequire === 'function') {
try {
crypto = require('crypto')
} catch (err) {}
}
var cryptoSecureRandomInt = function () {
if (crypto) {
if (typeof crypto.getRandomValues === 'function') {
try {
return crypto.getRandomValues(new Uint32Array(1))[0]
} catch (err) {}
}
if (typeof crypto.randomBytes === 'function') {
try {
return crypto.randomBytes(4).readInt32LE()
} catch (err) {}
}
}
throw new Error(
'Native crypto module could not be used to get secure random number.'
)
}
var create3 =
Object.create ||
(function () {
function F2() {}
return function (obj) {
var subtype
F2.prototype = obj
subtype = new F2()
F2.prototype = null
return subtype
}
})()
var C2 = {}
var C_lib = (C2.lib = {})
var Base2 = (C_lib.Base = (function () {
return {
extend: function (overrides) {
var subtype = create3(this)
if (overrides) {
subtype.mixIn(overrides)
}
if (
!subtype.hasOwnProperty('init') ||
this.init === subtype.init
) {
subtype.init = function () {
subtype.$super.init.apply(this, arguments)
}
}
subtype.init.prototype = subtype
subtype.$super = this
return subtype
},
create: function () {
var instance = this.extend()
instance.init.apply(instance, arguments)
return instance
},
init: function () {},
mixIn: function (properties) {
for (var propertyName in properties) {
if (properties.hasOwnProperty(propertyName)) {
this[propertyName] = properties[propertyName]
}
}
if (properties.hasOwnProperty('toString')) {
this.toString = properties.toString
}
},
clone: function () {
return this.init.prototype.extend(this)
},
}
})())
var WordArray = (C_lib.WordArray = Base2.extend({
init: function (words, sigBytes) {
words = this.words = words || []
if (sigBytes != undefined$1) {
this.sigBytes = sigBytes
} else {
this.sigBytes = words.length * 4
}
},
toString: function (encoder) {
return (encoder || Hex2).stringify(this)
},
concat: function (wordArray) {
var thisWords = this.words
var thatWords = wordArray.words
var thisSigBytes = this.sigBytes
var thatSigBytes = wordArray.sigBytes
this.clamp()
if (thisSigBytes % 4) {
for (var i2 = 0; i2 < thatSigBytes; i2++) {
var thatByte =
(thatWords[i2 >>> 2] >>> (24 - (i2 % 4) * 8)) & 255
thisWords[(thisSigBytes + i2) >>> 2] |=
thatByte << (24 - ((thisSigBytes + i2) % 4) * 8)
}
} else {
for (var j2 = 0; j2 < thatSigBytes; j2 += 4) {
thisWords[(thisSigBytes + j2) >>> 2] = thatWords[j2 >>> 2]
}
}
this.sigBytes += thatSigBytes
return this
},
clamp: function () {
var words = this.words
var sigBytes = this.sigBytes
words[sigBytes >>> 2] &= 4294967295 << (32 - (sigBytes % 4) * 8)
words.length = Math2.ceil(sigBytes / 4)
},
clone: function () {
var clone2 = Base2.clone.call(this)
clone2.words = this.words.slice(0)
return clone2
},
random: function (nBytes) {
var words = []
for (var i2 = 0; i2 < nBytes; i2 += 4) {
words.push(cryptoSecureRandomInt())
}
return new WordArray.init(words, nBytes)
},
}))
var C_enc = (C2.enc = {})
var Hex2 = (C_enc.Hex = {
stringify: function (wordArray) {
var words = wordArray.words
var sigBytes = wordArray.sigBytes
var hexChars = []
for (var i2 = 0; i2 < sigBytes; i2++) {
var bite = (words[i2 >>> 2] >>> (24 - (i2 % 4) * 8)) & 255
hexChars.push((bite >>> 4).toString(16))
hexChars.push((bite & 15).toString(16))
}
return hexChars.join('')
},
parse: function (hexStr) {
var hexStrLength = hexStr.length
var words = []
for (var i2 = 0; i2 < hexStrLength; i2 += 2) {
words[i2 >>> 3] |=
parseInt(hexStr.substr(i2, 2), 16) << (24 - (i2 % 8) * 4)
}
return new WordArray.init(words, hexStrLength / 2)
},
})
var Latin1 = (C_enc.Latin1 = {
stringify: function (wordArray) {
var words = wordArray.words
var sigBytes = wordArray.sigBytes
var latin1Chars = []
for (var i2 = 0; i2 < sigBytes; i2++) {
var bite = (words[i2 >>> 2] >>> (24 - (i2 % 4) * 8)) & 255
latin1Chars.push(String.fromCharCode(bite))
}
return latin1Chars.join('')
},
parse: function (latin1Str) {
var latin1StrLength = latin1Str.length
var words = []
for (var i2 = 0; i2 < latin1StrLength; i2++) {
words[i2 >>> 2] |=
(latin1Str.charCodeAt(i2) & 255) << (24 - (i2 % 4) * 8)
}
return new WordArray.init(words, latin1StrLength)
},
})
var Utf8 = (C_enc.Utf8 = {
stringify: function (wordArray) {
try {
return decodeURIComponent(escape(Latin1.stringify(wordArray)))
} catch (e2) {
throw new Error('Malformed UTF-8 data')
}
},
parse: function (utf8Str) {
return Latin1.parse(unescape(encodeURIComponent(utf8Str)))
},
})
var BufferedBlockAlgorithm = (C_lib.BufferedBlockAlgorithm =
Base2.extend({
reset: function () {
this._data = new WordArray.init()
this._nDataBytes = 0
},
_append: function (data2) {
if (typeof data2 == 'string') {
data2 = Utf8.parse(data2)
}
this._data.concat(data2)
this._nDataBytes += data2.sigBytes
},
_process: function (doFlush) {
var processedWords
var data2 = this._data
var dataWords = data2.words
var dataSigBytes = data2.sigBytes
var blockSize = this.blockSize
var blockSizeBytes = blockSize * 4
var nBlocksReady = dataSigBytes / blockSizeBytes
if (doFlush) {
nBlocksReady = Math2.ceil(nBlocksReady)
} else {
nBlocksReady = Math2.max(
(nBlocksReady | 0) - this._minBufferSize,
0
)
}
var nWordsReady = nBlocksReady * blockSize
var nBytesReady = Math2.min(nWordsReady * 4, dataSigBytes)
if (nWordsReady) {
for (
var offset2 = 0;
offset2 < nWordsReady;
offset2 += blockSize
) {
this._doProcessBlock(dataWords, offset2)
}
processedWords = dataWords.splice(0, nWordsReady)
data2.sigBytes -= nBytesReady
}
return new WordArray.init(processedWords, nBytesReady)
},
clone: function () {
var clone2 = Base2.clone.call(this)
clone2._data = this._data.clone()
return clone2
},
_minBufferSize: 0,
}))
C_lib.Hasher = BufferedBlockAlgorithm.extend({
cfg: Base2.extend(),
init: function (cfg) {
this.cfg = this.cfg.extend(cfg)
this.reset()
},
reset: function () {
BufferedBlockAlgorithm.reset.call(this)
this._doReset()
},
update: function (messageUpdate) {
this._append(messageUpdate)
this._process()
return this
},
finalize: function (messageUpdate) {
if (messageUpdate) {
this._append(messageUpdate)
}
var hash2 = this._doFinalize()
return hash2
},
blockSize: 512 / 32,
_createHelper: function (hasher) {
return function (message2, cfg) {
return new hasher.init(cfg).finalize(message2)
}
},
_createHmacHelper: function (hasher) {
return function (message2, key2) {
return new C_algo.HMAC.init(hasher, key2).finalize(message2)
}
},
})
var C_algo = (C2.algo = {})
return C2
})(Math)
return CryptoJS
})
})(core)
;(function (module2, exports2) {
;(function (root2, factory) {
{
module2.exports = factory(core.exports)
}
})(commonjsGlobal, function (CryptoJS) {
;(function (Math2) {
var C2 = CryptoJS
var C_lib = C2.lib
var WordArray = C_lib.WordArray
var Hasher = C_lib.Hasher
var C_algo = C2.algo
var T2 = []
;(function () {
for (var i2 = 0; i2 < 64; i2++) {
T2[i2] = (Math2.abs(Math2.sin(i2 + 1)) * 4294967296) | 0
}
})()
var MD52 = (C_algo.MD5 = Hasher.extend({
_doReset: function () {
this._hash = new WordArray.init([
1732584193, 4023233417, 2562383102, 271733878,
])
},
_doProcessBlock: function (M2, offset2) {
for (var i2 = 0; i2 < 16; i2++) {
var offset_i = offset2 + i2
var M_offset_i = M2[offset_i]
M2[offset_i] =
(((M_offset_i << 8) | (M_offset_i >>> 24)) & 16711935) |
(((M_offset_i << 24) | (M_offset_i >>> 8)) & 4278255360)
}
var H4 = this._hash.words
var M_offset_0 = M2[offset2 + 0]
var M_offset_1 = M2[offset2 + 1]
var M_offset_2 = M2[offset2 + 2]
var M_offset_3 = M2[offset2 + 3]
var M_offset_4 = M2[offset2 + 4]
var M_offset_5 = M2[offset2 + 5]
var M_offset_6 = M2[offset2 + 6]
var M_offset_7 = M2[offset2 + 7]
var M_offset_8 = M2[offset2 + 8]
var M_offset_9 = M2[offset2 + 9]
var M_offset_10 = M2[offset2 + 10]
var M_offset_11 = M2[offset2 + 11]
var M_offset_12 = M2[offset2 + 12]
var M_offset_13 = M2[offset2 + 13]
var M_offset_14 = M2[offset2 + 14]
var M_offset_15 = M2[offset2 + 15]
var a2 = H4[0]
var b2 = H4[1]
var c2 = H4[2]
var d3 = H4[3]
a2 = FF(a2, b2, c2, d3, M_offset_0, 7, T2[0])
d3 = FF(d3, a2, b2, c2, M_offset_1, 12, T2[1])
c2 = FF(c2, d3, a2, b2, M_offset_2, 17, T2[2])
b2 = FF(b2, c2, d3, a2, M_offset_3, 22, T2[3])
a2 = FF(a2, b2, c2, d3, M_offset_4, 7, T2[4])
d3 = FF(d3, a2, b2, c2, M_offset_5, 12, T2[5])
c2 = FF(c2, d3, a2, b2, M_offset_6, 17, T2[6])
b2 = FF(b2, c2, d3, a2, M_offset_7, 22, T2[7])
a2 = FF(a2, b2, c2, d3, M_offset_8, 7, T2[8])
d3 = FF(d3, a2, b2, c2, M_offset_9, 12, T2[9])
c2 = FF(c2, d3, a2, b2, M_offset_10, 17, T2[10])
b2 = FF(b2, c2, d3, a2, M_offset_11, 22, T2[11])
a2 = FF(a2, b2, c2, d3, M_offset_12, 7, T2[12])
d3 = FF(d3, a2, b2, c2, M_offset_13, 12, T2[13])
c2 = FF(c2, d3, a2, b2, M_offset_14, 17, T2[14])
b2 = FF(b2, c2, d3, a2, M_offset_15, 22, T2[15])
a2 = GG(a2, b2, c2, d3, M_offset_1, 5, T2[16])
d3 = GG(d3, a2, b2, c2, M_offset_6, 9, T2[17])
c2 = GG(c2, d3, a2, b2, M_offset_11, 14, T2[18])
b2 = GG(b2, c2, d3, a2, M_offset_0, 20, T2[19])
a2 = GG(a2, b2, c2, d3, M_offset_5, 5, T2[20])
d3 = GG(d3, a2, b2, c2, M_offset_10, 9, T2[21])
c2 = GG(c2, d3, a2, b2, M_offset_15, 14, T2[22])
b2 = GG(b2, c2, d3, a2, M_offset_4, 20, T2[23])
a2 = GG(a2, b2, c2, d3, M_offset_9, 5, T2[24])
d3 = GG(d3, a2, b2, c2, M_offset_14, 9, T2[25])
c2 = GG(c2, d3, a2, b2, M_offset_3, 14, T2[26])
b2 = GG(b2, c2, d3, a2, M_offset_8, 20, T2[27])
a2 = GG(a2, b2, c2, d3, M_offset_13, 5, T2[28])
d3 = GG(d3, a2, b2, c2, M_offset_2, 9, T2[29])
c2 = GG(c2, d3, a2, b2, M_offset_7, 14, T2[30])
b2 = GG(b2, c2, d3, a2, M_offset_12, 20, T2[31])
a2 = HH(a2, b2, c2, d3, M_offset_5, 4, T2[32])
d3 = HH(d3, a2, b2, c2, M_offset_8, 11, T2[33])
c2 = HH(c2, d3, a2, b2, M_offset_11, 16, T2[34])
b2 = HH(b2, c2, d3, a2, M_offset_14, 23, T2[35])
a2 = HH(a2, b2, c2, d3, M_offset_1, 4, T2[36])
d3 = HH(d3, a2, b2, c2, M_offset_4, 11, T2[37])
c2 = HH(c2, d3, a2, b2, M_offset_7, 16, T2[38])
b2 = HH(b2, c2, d3, a2, M_offset_10, 23, T2[39])
a2 = HH(a2, b2, c2, d3, M_offset_13, 4, T2[40])
d3 = HH(d3, a2, b2, c2, M_offset_0, 11, T2[41])
c2 = HH(c2, d3, a2, b2, M_offset_3, 16, T2[42])
b2 = HH(b2, c2, d3, a2, M_offset_6, 23, T2[43])
a2 = HH(a2, b2, c2, d3, M_offset_9, 4, T2[44])
d3 = HH(d3, a2, b2, c2, M_offset_12, 11, T2[45])
c2 = HH(c2, d3, a2, b2, M_offset_15, 16, T2[46])
b2 = HH(b2, c2, d3, a2, M_offset_2, 23, T2[47])
a2 = II(a2, b2, c2, d3, M_offset_0, 6, T2[48])
d3 = II(d3, a2, b2, c2, M_offset_7, 10, T2[49])
c2 = II(c2, d3, a2, b2, M_offset_14, 15, T2[50])
b2 = II(b2, c2, d3, a2, M_offset_5, 21, T2[51])
a2 = II(a2, b2, c2, d3, M_offset_12, 6, T2[52])
d3 = II(d3, a2, b2, c2, M_offset_3, 10, T2[53])
c2 = II(c2, d3, a2, b2, M_offset_10, 15, T2[54])
b2 = II(b2, c2, d3, a2, M_offset_1, 21, T2[55])
a2 = II(a2, b2, c2, d3, M_offset_8, 6, T2[56])
d3 = II(d3, a2, b2, c2, M_offset_15, 10, T2[57])
c2 = II(c2, d3, a2, b2, M_offset_6, 15, T2[58])
b2 = II(b2, c2, d3, a2, M_offset_13, 21, T2[59])
a2 = II(a2, b2, c2, d3, M_offset_4, 6, T2[60])
d3 = II(d3, a2, b2, c2, M_offset_11, 10, T2[61])
c2 = II(c2, d3, a2, b2, M_offset_2, 15, T2[62])
b2 = II(b2, c2, d3, a2, M_offset_9, 21, T2[63])
H4[0] = (H4[0] + a2) | 0
H4[1] = (H4[1] + b2) | 0
H4[2] = (H4[2] + c2) | 0
H4[3] = (H4[3] + d3) | 0
},
_doFinalize: function () {
var data2 = this._data
var dataWords = data2.words
var nBitsTotal = this._nDataBytes * 8
var nBitsLeft = data2.sigBytes * 8
dataWords[nBitsLeft >>> 5] |= 128 << (24 - (nBitsLeft % 32))
var nBitsTotalH = Math2.floor(nBitsTotal / 4294967296)
var nBitsTotalL = nBitsTotal
dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] =
(((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 16711935) |
(((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 4278255360)
dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] =
(((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 16711935) |
(((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 4278255360)
data2.sigBytes = (dataWords.length + 1) * 4
this._process()
var hash2 = this._hash
var H4 = hash2.words
for (var i2 = 0; i2 < 4; i2++) {
var H_i = H4[i2]
H4[i2] =
(((H_i << 8) | (H_i >>> 24)) & 16711935) |
(((H_i << 24) | (H_i >>> 8)) & 4278255360)
}
return hash2
},
clone: function () {
var clone2 = Hasher.clone.call(this)
clone2._hash = this._hash.clone()
return clone2
},
}))
function FF(a2, b2, c2, d3, x2, s2, t3) {
var n2 = a2 + ((b2 & c2) | (~b2 & d3)) + x2 + t3
return ((n2 << s2) | (n2 >>> (32 - s2))) + b2
}
function GG(a2, b2, c2, d3, x2, s2, t3) {
var n2 = a2 + ((b2 & d3) | (c2 & ~d3)) + x2 + t3
return ((n2 << s2) | (n2 >>> (32 - s2))) + b2
}
function HH(a2, b2, c2, d3, x2, s2, t3) {
var n2 = a2 + (b2 ^ c2 ^ d3) + x2 + t3
return ((n2 << s2) | (n2 >>> (32 - s2))) + b2
}
function II(a2, b2, c2, d3, x2, s2, t3) {
var n2 = a2 + (c2 ^ (b2 | ~d3)) + x2 + t3
return ((n2 << s2) | (n2 >>> (32 - s2))) + b2
}
C2.MD5 = Hasher._createHelper(MD52)
C2.HmacMD5 = Hasher._createHmacHelper(MD52)
})(Math)
return CryptoJS.MD5
})
})(md5)
var MD5 = md5.exports
var libTypedarrays = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory) {
{
module2.exports = factory(core.exports)
}
})(commonjsGlobal, function (CryptoJS) {
;(function () {
if (typeof ArrayBuffer != 'function') {
return
}
var C2 = CryptoJS
var C_lib = C2.lib
var WordArray = C_lib.WordArray
var superInit = WordArray.init
var subInit = (WordArray.init = function (typedArray) {
if (typedArray instanceof ArrayBuffer) {
typedArray = new Uint8Array(typedArray)
}
if (
typedArray instanceof Int8Array ||
(typeof Uint8ClampedArray !== 'undefined' &&
typedArray instanceof Uint8ClampedArray) ||
typedArray instanceof Int16Array ||
typedArray instanceof Uint16Array ||
typedArray instanceof Int32Array ||
typedArray instanceof Uint32Array ||
typedArray instanceof Float32Array ||
typedArray instanceof Float64Array
) {
typedArray = new Uint8Array(
typedArray.buffer,
typedArray.byteOffset,
typedArray.byteLength
)
}
if (typedArray instanceof Uint8Array) {
var typedArrayByteLength = typedArray.byteLength
var words = []
for (var i2 = 0; i2 < typedArrayByteLength; i2++) {
words[i2 >>> 2] |= typedArray[i2] << (24 - (i2 % 4) * 8)
}
superInit.call(this, words, typedArrayByteLength)
} else {
superInit.apply(this, arguments)
}
})
subInit.prototype = WordArray
})()
return CryptoJS.lib.WordArray
})
})(libTypedarrays)
var CryptoJSLib = libTypedarrays.exports
async function downloadResource({
name: name2,
node: node2 = CanvasNode$1.selectedList[0],
}) {
if (!name2) {
toast('\u7F3A\u5C11\u8D44\u6E90\u540D\u79F0', 'warning')
return
}
if (!node2 || !node2.dom) {
toast('\u7F3A\u5C11\u8D44\u6E90\u8F6C\u6362\u8282\u70B9', 'warning')
return
}
exportLoading.open()
const zip2 = new JSZip()
const imageList = Resource.getImages(node2)
if (imageList) {
const promises = []
const { baseURL: baseURL2 } = request.defaults
const project = Session.get('X-Project')
for (let item2 of imageList) {
const fileName = item2
const filePath = `${baseURL2}/api/v1/view/image/${fileName}?project=${project}`
const promise2 = getImgArrayBuffer(filePath).then((data2) => {
zip2.file(fileName, data2, { binary: true })
return data2
})
promises.push(promise2)
}
const imageBlobList = await Promise.all(promises).catch((err) => {
console.error(err)
toast('\u8D44\u6E90\u56FE\u7247\u4E0B\u8F7D\u5931\u8D25', 'error')
exportLoading.close()
})
if (!imageBlobList) return
}
const coverBlob = await createCoverBlob(node2.dom).catch((err) => {
console.error(err)
toast('\u8D44\u6E90\u5C01\u9762\u56FE\u4E0B\u8F7D\u5931\u8D25', 'error')
exportLoading.close()
})
if (!coverBlob) return
const buffer = await coverBlob.arrayBuffer()
const hash2 = MD5(CryptoJSLib.create(buffer)).toString()
const coverName = hash2 + '.png'
zip2.file(coverName, coverBlob)
const resource = new Resource({
id: '',
name: name2,
cover: coverName,
canvasNode: Object.assign(node2, { name: name2 }),
})
zip2.file('index.json', JSON.stringify(resource))
return zip2
.generateAsync({ type: 'blob' })
.then(function (content2) {
utils.downFile(content2, `${name2}.cmsr`)
return true
})
.catch((err) => {
console.error(err)
toast('\u4E0B\u8F7D\u5931\u8D25', 'error')
})
.finally(() => {
exportLoading.close()
})
}
const createCoverBlob = (el2) => {
el2.classList.remove('selected')
const dom = el2.cloneNode(true)
el2.classList.add('selected')
const opacity2 = dom.style.opacity
dom.style.position = 'fixed'
dom.style.left = '0'
dom.style.top = '0'
dom.style.opacity = '0'
dom.style.pointerEvents = 'none'
document.body.appendChild(dom)
const ops = {
style: { opacity: opacity2 || '1' },
}
return toBlob(dom, ops).finally(() => {
document.body.removeChild(dom)
})
}
const getImgArrayBuffer = (url2) => {
return new Promise((resolve2, reject2) => {
let xml2 = new XMLHttpRequest()
xml2.open('GET', url2, true)
xml2.responseType = 'blob'
xml2.onload = function () {
if (xml2.status == 200) {
resolve2(xml2.response)
} else {
reject2(new Error(xml2.statusText))
}
}
xml2.send()
})
}
window.downloadResource = downloadResource
var CanvasNodeList_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$1t = (n2) => (
pushScopeId('data-v-8c68ef18'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$2x = /* @__PURE__ */ _withScopeId$1t(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-duixiang title_img' },
null,
-1
)
)
const _hoisted_2$2h = /* @__PURE__ */ _withScopeId$1t(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u5BF9\u8C61', -1)
)
const _hoisted_3$26 = { class: 'more-operate' }
const _hoisted_4$1N = ['title']
const _hoisted_5$1E = { class: 'collapse-content' }
const _hoisted_6$1u = { class: 'search' }
const _hoisted_7$1h = { class: 'tree' }
const _hoisted_8$19 = ['onClick']
const _hoisted_9$15 = ['onDblclick']
const _hoisted_10$13 = {
key: 0,
class: 'btn',
}
const _hoisted_11$X = ['onClick']
const _hoisted_12$U = ['onClick']
const _hoisted_13$N = ['onMouseover']
const _hoisted_14$I = { class: 'popover-menus' }
const _hoisted_15$G = /* @__PURE__ */ _withScopeId$1t(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'dialog-content' },
[
/* @__PURE__ */ createElementVNode(
'div',
{ style: { 'text-align': 'center', color: 'white' } },
'\u786E\u8BA4\u540E\uFF0C\u4ECE\u5217\u8868\u4E2D\u5220\u9664\u8282\u70B9\u3002'
),
],
-1
)
)
const _hoisted_16$F = { class: 'el-dialog__footer' }
const _hoisted_17$z = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_18$u = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _hoisted_19$r = { class: 'dialog-content' }
const _hoisted_20$p = { style: { display: 'flex', 'align-items': 'center' } }
const _hoisted_21$k = /* @__PURE__ */ _withScopeId$1t(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u8D44\u6E90\u540D\u79F0\uFF1A',
-1
)
)
const _hoisted_22$i = { class: 'el-dialog__footer' }
const _hoisted_23$f = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_24$f = /* @__PURE__ */ createTextVNode('\u5BFC\u51FA')
const _sfc_main$2K = /* @__PURE__ */ defineComponent({
setup(__props2) {
let { expended, toggle: toggle2 } = toggleNodeExpended()
const inputRef = ref()
let { isEdit, editNode, getNodeEditing, blurEditNode } = useEdit(inputRef)
let dialogConfig = reactive({
show: false,
node: null,
})
let popoverPlacement = ref('bottom')
let buttonRef = ref()
const popoverRef = ref()
const onClickOutside2 = () => {
unref(popoverRef)?.tooltipRef?.hide()
}
let currentMenuData = ref({})
let currentMenuNode = ref({})
const handleOverMore = (e2, data2, node2) => {
if (document.body.offsetHeight - e2.pageY < 78) {
popoverPlacement.value = 'right'
} else {
popoverPlacement.value = 'bottom'
}
buttonRef.value = e2.currentTarget
currentMenuData.value = data2
currentMenuNode.value = node2
}
let [isScrolling, handleScroll2] = useIsScroll()
const filterText = ref('')
let dragConfig = reactive({
dragNode: {
id: '',
name: '',
style: {},
childNodes: [],
props: {},
},
dragNodeParent: state$6.document.body,
oldList: [],
})
const currentNode = computed(function () {
let nodes = state$6.current.nodes
if (!nodes.length) nodes = [state$6.document.body]
return nodes
})
const handleCommand = (data2) => {
const fun = {
deleteNode: () => {
dialogConfig.show = true
dialogConfig.node = data2.data
},
creatCopyNode: () => {
if (!state$6.document.body.childNodes) return
if (data2.data?.parentNode.isGroup()) {
const index22 = data2.data.parentNode.childNodes.findIndex(
(ele) => ele.id === data2.data.id
)
creatCopyNode(data2.data, index22, data2.data.parentNode.childNodes)
return
}
let index2 = state$6.document.body.childNodes.length
for (
let i2 = 0, iLen = state$6.document.body.childNodes.length;
i2 < iLen;
i2++
) {
const item2 = state$6.document.body.childNodes[i2]
if (item2.id === data2.data.id) {
index2 = i2
break
}
}
creatCopyNode(data2.data, index2)
},
splitNode: () => {
splitNode(data2.data)
},
changeToResource: () => {
exportResource.node = data2.data
exportResource.open()
},
}
fun[data2.type]()
}
onMounted(() => {
exportResourceEnter.checkRender()
})
const exportResourceEnter = reactive({
isRender: false,
checkRender() {
const query = window.location.href.match(/downloadResource=true/)
exportResourceEnter.isRender = query ? true : false
},
})
const exportResource = reactive({
visible: false,
name: '',
group: '',
groupData: [],
node: void 0,
open() {
exportResource.visible = true
exportResource.name = exportResource?.node?.name || ''
},
close() {
exportResource.visible = false
},
async confirm() {
const { name: name2, node: node2 } = exportResource
if (!name2)
return ElMessage.warning('\u8BF7\u8F93\u5165\u8D44\u6E90\u540D\u79F0')
exportResource.close()
const res = await downloadResource({ name: name2, node: node2 })
if (res) ElMessage.success('\u5BFC\u51FA\u6210\u529F')
},
getGroupData() {
request({
url: `/api/v1/view/asset/gallery/struct`,
method: 'get',
silent: true,
}).then((res) => {
if (res?.nexts) {
exportResource.groupData = res.nexts
}
})
},
})
const ConfirmDeletion = () => {
if (dialogConfig.node) {
deleteNode(dialogConfig.node)
dialogConfig.show = false
}
}
const allowDrop = (draggingNode, dropNode, dropType) => {
if (!dropNode.data.isGroup() && dropType === 'inner') return false
return true
}
const handleDragStart = (node2) => {
dragConfig.oldList = []
dragConfig.dragNode = node2.data
dragConfig.dragNodeParent = getParentNode(dragConfig.dragNode)
dragConfig.oldList = JSON.parse(
JSON.stringify(state$6.document.body.childNodes)
)
}
const handleDrop = (draggingNode, dropNode, dropType) => {
if (dropType !== 'inner' && draggingNode.parent === dropNode.parent)
return
const dragNode = draggingNode.data
const targetNode = dropNode.data
let targetNodeParent = targetNode.parentNode
if (dropType === 'inner') {
targetNodeParent = targetNode
}
const nodeToGroup = () => {
const dragNodePos = getNodePos(dragConfig.dragNode)
if (!targetNodeParent?.childNodes) return
for (
let i2 = 0, iLen = targetNodeParent.childNodes.length;
i2 < iLen;
i2++
) {
const item2 = targetNodeParent.childNodes[i2]
if (item2.id === dragNode.id) {
setNodePos(item2, dragNodePos)
break
}
}
const parentRect = getNodeRect(targetNodeParent)
let left2 = 0
let top2 = 0
let width = parentRect.width
let height = parentRect.height
const list2 = lodash.cloneDeep(targetNodeParent.childNodes)
for (let i2 = 0, iLen = list2.length; i2 < iLen; i2++) {
const item2 = list2[i2]
const itemPos = getNodePos(item2)
if (i2 === 0) {
left2 = itemPos.x
top2 = itemPos.y
} else {
if (left2 > itemPos.x) left2 = itemPos.x
if (top2 > itemPos.y) top2 = itemPos.y
}
}
for (let i2 = 0, iLen = list2.length; i2 < iLen; i2++) {
const item2 = list2[i2]
const itemPos = getNodePos(item2)
const itemRect = getNodeRect(item2)
if (itemPos.x + itemRect.width > left2 + width) {
width = itemPos.x + itemRect.width - left2
}
if (itemPos.y + itemRect.height > top2 + height) {
height = itemPos.y + itemRect.height - top2
}
}
const getAllParents = (node2) => {
if (node2.parentNode && node2.parentNode.isGroup()) {
return [...getAllParents(node2.parentNode), node2.parentNode]
} else {
return []
}
}
targetNodeParent.style.width = width + 'px'
targetNodeParent.style.height = height + 'px'
if (targetNodeParent?.isGroup()) {
const parents = getAllParents(targetNode)
parents.forEach((parent2, i2) => {
const parentRect2 = getNodeRect(parent2)
if (parentRect2.width <= width) {
if (i2 === 0) {
parent2.style.left = left2 + 'px'
parent2.style.top = top2 + 'px'
} else {
if (parseFloat(parents[0].style.width) === width) {
parent2.childNodes.forEach((child) => {
if (!child.isGroup()) {
child.style.left =
parseFloat(parent2.style.left) +
parseFloat(child.style.left) +
'px'
}
})
parent2.style.left = 0 + 'px'
} else {
if (parent2.style.width === parent2.parentNode?.style.width) {
parent2.style.left = 0 + 'px'
}
}
}
}
})
} else {
targetNodeParent.style.left = left2 + 'px'
targetNodeParent.style.top = top2 + 'px'
}
for (let i2 = 0, iLen = list2.length; i2 < iLen; i2++) {
const item2 = list2[i2]
const itemPos = getNodePos(item2)
targetNodeParent.childNodes[i2].style.left = itemPos.x - left2 + 'px'
targetNodeParent.childNodes[i2].style.top = itemPos.y - top2 + 'px'
}
}
const groupNodeToBody = () => {
const dragNodePos = getNodePos(dragConfig.dragNode)
dragNode.style.left = dragNodePos.x + 'px'
dragNode.style.top = dragNodePos.y + 'px'
let left2 = 0
let top2 = 0
let width = 0
let height = 0
if (!dragConfig.dragNodeParent.childNodes) return
const list2 = lodash.cloneDeep(dragConfig.dragNodeParent.childNodes)
for (let i2 = 0, iLen = list2.length; i2 < iLen; i2++) {
const item2 = list2[i2]
const itemPos = getNodePos(item2)
if (i2 === 0) {
left2 = itemPos.x
top2 = itemPos.y
} else {
if (left2 > itemPos.x) left2 = itemPos.x
if (top2 > itemPos.y) top2 = itemPos.y
}
}
for (let i2 = 0, iLen = list2.length; i2 < iLen; i2++) {
const item2 = list2[i2]
const itemPos = getNodePos(item2)
const itemRect = getNodeRect(item2)
if (itemPos.x + itemRect.width > left2 + width) {
width = itemPos.x + itemRect.width - left2
}
if (itemPos.y + itemRect.height > top2 + height) {
height = itemPos.y + itemRect.height - top2
}
}
dragConfig.dragNodeParent.style.left = left2 + 'px'
dragConfig.dragNodeParent.style.top = top2 + 'px'
dragConfig.dragNodeParent.style.width = width + 'px'
dragConfig.dragNodeParent.style.height = height + 'px'
for (let i2 = 0, iLen = list2.length; i2 < iLen; i2++) {
const item2 = list2[i2]
const itemPos = getNodePos(item2)
dragConfig.dragNodeParent.childNodes[i2].style.left =
itemPos.x - left2 + 'px'
dragConfig.dragNodeParent.childNodes[i2].style.top =
itemPos.y - top2 + 'px'
}
}
if (
[state$6.document.body].includes(dragConfig.dragNodeParent) &&
targetNodeParent
) {
nodeToGroup()
} else if (
dragConfig.dragNodeParent &&
targetNodeParent &&
[state$6.document.body].includes(targetNodeParent)
) {
groupNodeToBody()
} else if (dragConfig.dragNodeParent && targetNodeParent) {
groupNodeToBody()
nodeToGroup()
}
}
const treeDom = ref()
watch$1(
() => app.current.project.current.page.selectedCanvasNodeList[0],
(newValue) => {
if (newValue === void 0) return
setTimeout(() => {
treeDom.value.scrollTo(newValue)
}, 300)
}
)
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_popover = resolveComponent('el-popover')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'CanvasNodeList',
{ expended: unref(expended) },
]),
},
[
createElementVNode(
'div',
{
class: 'collapse-header',
onClick:
_cache[1] ||
(_cache[1] = (...args) =>
unref(toggle2) && unref(toggle2)(...args)),
},
[
_hoisted_1$2x,
_hoisted_2$2h,
createElementVNode('div', _hoisted_3$26, [
(openBlock(),
createElementBlock(
'i',
{
key: unref(expended),
class: normalizeClass([
'iconfont toggle-icon',
unref(expended) ? 'icon-zhedie' : 'icon-zhankai1',
]),
title: unref(expended) ? '\u6536\u8D77' : '\u5C55\u5F00',
'data-tooltip-placement': 'top',
onClick:
_cache[0] ||
(_cache[0] = withModifiers(
(...args) =>
unref(toggle2) && unref(toggle2)(...args),
['stop']
)),
},
null,
10,
_hoisted_4$1N
)),
]),
]
),
withDirectives(
createElementVNode(
'div',
_hoisted_5$1E,
[
createElementVNode('div', _hoisted_6$1u, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x-search',
modelValue: filterText.value,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) => (filterText.value = $event)),
clearable: '',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_7$1h, [
createVNode$1(
VirtualTree,
{
ref_key: 'treeDom',
ref: treeDom,
data: unref(state$6).document.body.childrenReversed,
draggable: !unref(isEdit),
props: { children: 'childrenReversed' },
itemSize: 32,
'default-expand-all': '',
filterText: filterText.value,
'parent-node-key': 'parentNode',
'allow-drop': allowDrop,
onNodeDragStart: handleDragStart,
onNodeDrop: handleDrop,
onScroll: unref(handleScroll2),
},
{
default: withCtx(({ node: node2, data: data2 }) => [
createElementVNode(
'div',
{
class: normalizeClass([
'node flex',
unref(currentNode).includes(data2)
? 'node-current'
: '',
]),
onClick: withModifiers(
(e2) => unref(selectNode$1)(data2, e2),
['stop']
),
},
[
createElementVNode(
'div',
{
class: 'title',
onDblclick: ($event) =>
unref(editNode)(data2),
},
[
unref(getNodeEditing)(data2)
? (openBlock(),
createBlock(
_component_el_input,
{
key: 0,
ref_key: 'inputRef',
ref: inputRef,
class: 'cms-el-input-x title-input',
modelValue: data2.name,
'onUpdate:modelValue': ($event) =>
(data2.name = $event),
onBlur: ($event) =>
unref(blurEditNode)(data2),
onKeyup:
_cache[3] ||
(_cache[3] = withKeys(
($event) =>
inputRef.value?.blur(),
['enter']
)),
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
'onBlur',
]
))
: (openBlock(),
createBlock(
EllipsisTooltip,
{
key: 1,
width: '100%',
content: data2.name,
},
null,
8,
['content']
)),
],
40,
_hoisted_9$15
),
!unref(getNodeEditing)(data2)
? (openBlock(),
createElementBlock('div', _hoisted_10$13, [
!unref(checkWidgetAuth)(data2.is)
? (openBlock(),
createBlock(
UnauthorizedLabel,
{
key: 0,
widgetIs: data2.is,
class: 'unauthorized-label',
},
null,
8,
['widgetIs']
))
: createCommentVNode('', true),
createElementVNode(
'i',
{
class: normalizeClass([
'locked iconfont',
data2.locked
? 'icon-suoding btn-highlighted'
: 'icon-kaisuo',
]),
onClick: withModifiers(
($event) =>
unref(setDeepComponent)(
data2,
'locked',
!data2.locked
),
['stop']
),
},
null,
10,
_hoisted_11$X
),
createElementVNode(
'i',
{
class: normalizeClass([
'visibility iconfont',
data2.style.visibility === 'hidden'
? 'icon-yincang btn-highlighted'
: 'icon-xianshi',
]),
onClick: withModifiers(
($event) =>
unref(toggleComponentVisible)(
data2,
data2.style.visibility ===
'hidden'
),
['stop']
),
},
null,
10,
_hoisted_12$U
),
withDirectives(
createElementVNode(
'i',
{
class: 'iconfont icon-gengduo menu',
onMouseover: (e2) =>
handleOverMore(e2, data2, node2),
},
null,
40,
_hoisted_13$N
),
[[unref(ClickOutside), onClickOutside2]]
),
]))
: createCommentVNode('', true),
],
10,
_hoisted_8$19
),
]),
_: 1,
},
8,
['data', 'draggable', 'filterText', 'onScroll']
),
!unref(isScrolling)
? (openBlock(),
createBlock(
_component_el_popover,
{
key: 0,
'virtual-ref': unref(buttonRef),
ref_key: 'popoverRef',
ref: popoverRef,
trigger: 'hover',
'virtual-triggering': '',
persistent: '',
width: '110',
placement: popoverPlacement.value,
'show-arrow': false,
transition: 'el-zoom-in-top',
},
{
default: withCtx(() => [
createElementVNode('ul', _hoisted_14$I, [
createElementVNode(
'li',
{
onClick:
_cache[4] ||
(_cache[4] = ($event) =>
handleCommand({
type: 'creatCopyNode',
node: unref(currentMenuNode),
data: unref(currentMenuData),
})),
},
' \u521B\u5EFA\u526F\u672C '
),
unref(currentMenuNode).children &&
unref(currentMenuNode).children.length > 0
? (openBlock(),
createElementBlock(
'li',
{
key: 0,
onClick:
_cache[5] ||
(_cache[5] = ($event) =>
handleCommand({
type: 'splitNode',
node: unref(currentMenuNode),
data: unref(currentMenuData),
})),
},
' \u62C6\u5206 '
))
: createCommentVNode('', true),
createElementVNode(
'li',
{
class: 'item_delete',
onClick:
_cache[6] ||
(_cache[6] = ($event) =>
handleCommand({
type: 'deleteNode',
node: unref(currentMenuNode),
data: unref(currentMenuData),
})),
},
' \u5220\u9664 '
),
unref(currentMenuData).is === 'Group' &&
unref(exportResourceEnter).isRender
? (openBlock(),
createElementBlock(
'li',
{
key: 1,
style: { background: '#3d6eff' },
onClick:
_cache[7] ||
(_cache[7] = ($event) =>
handleCommand({
type: 'changeToResource',
node: unref(currentMenuNode),
data: unref(currentMenuData),
})),
},
' \u8F6C\u6362\u4E3A\u8D44\u6E90 '
))
: createCommentVNode('', true),
]),
]),
_: 1,
},
8,
['virtual-ref', 'placement']
))
: createCommentVNode('', true),
]),
],
512
),
[[vShow, unref(expended)]]
),
createVNode$1(
_component_el_dialog,
{
modelValue: unref(dialogConfig).show,
'onUpdate:modelValue':
_cache[10] ||
(_cache[10] = ($event) =>
(unref(dialogConfig).show = $event)),
title: '\u786E\u8BA4\u5220\u9664',
'custom-class': 'cms-el-dialog',
onClose:
_cache[11] ||
(_cache[11] = ($event) => (unref(dialogConfig).show = false)),
'append-to-body': true,
width: '450px',
},
{
default: withCtx(() => [
_hoisted_15$G,
createElementVNode('div', _hoisted_16$F, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick:
_cache[8] ||
(_cache[8] = ($event) =>
(unref(dialogConfig).show = false)),
},
{
default: withCtx(() => [_hoisted_17$z]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick:
_cache[9] ||
(_cache[9] = ($event) => ConfirmDeletion()),
},
{
default: withCtx(() => [_hoisted_18$u]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_dialog,
{
modelValue: unref(exportResource).visible,
'onUpdate:modelValue':
_cache[13] ||
(_cache[13] = ($event) =>
(unref(exportResource).visible = $event)),
title: '\u8F6C\u6362\u4E3A\u8D44\u6E90',
'custom-class': 'cms-el-dialog',
onClose: unref(exportResource).close,
'append-to-body': true,
width: '450px',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_19$r, [
createElementVNode('div', _hoisted_20$p, [
_hoisted_21$k,
createVNode$1(
_component_el_input,
{
modelValue: unref(exportResource).name,
'onUpdate:modelValue':
_cache[12] ||
(_cache[12] = ($event) =>
(unref(exportResource).name = $event)),
style: { width: '80%' },
},
null,
8,
['modelValue']
),
]),
]),
createElementVNode('div', _hoisted_22$i, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: unref(exportResource).close,
},
{
default: withCtx(() => [_hoisted_23$f]),
_: 1,
},
8,
['onClick']
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: unref(exportResource).confirm,
},
{
default: withCtx(() => [_hoisted_24$f]),
_: 1,
},
8,
['onClick']
),
]),
]),
_: 1,
},
8,
['modelValue', 'onClose']
),
],
2
)
)
}
},
})
var CanvasNodeList = /* @__PURE__ */ _export_sfc(_sfc_main$2K, [
['__scopeId', 'data-v-8c68ef18'],
])
var CanvasNodeList$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: CanvasNodeList,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Sidebar_vue_vue_type_style_index_0_scoped_true_lang$4 = ''
const _withScopeId$1s = (n2) => (
pushScopeId('data-v-6baaa5d8'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$2w = { class: 'menu' }
const _hoisted_2$2g = /* @__PURE__ */ _withScopeId$1s(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-shouqi1' },
null,
-1
)
)
const _hoisted_3$25 = [_hoisted_2$2g]
const _sfc_main$2J = /* @__PURE__ */ defineComponent({
setup(__props2, { expose }) {
const isHightLight = ref(false)
const hightLight = (isActive) => {
isHightLight.value = isActive
if (isActive) {
setTimeout(() => {
isHightLight.value = false
}, 1500)
}
}
const {
expended,
style: style2,
toggle: toggle2,
handleMouseDown,
} = DragSidebarWidth()
expose({
hightLight,
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'aside',
{
class: normalizeClass([
'sidebar',
{ 'active-page': isHightLight.value, hide: !unref(expended) },
]),
style: normalizeStyle$1(unref(style2)),
},
[
createElementVNode('div', _hoisted_1$2w, [
createVNode$1(PageList),
createVNode$1(CanvasNodeList),
]),
createElementVNode(
'div',
{
class: 'toggle',
onClick:
_cache[0] ||
(_cache[0] = (...args) =>
unref(toggle2) && unref(toggle2)(...args)),
},
_hoisted_3$25
),
unref(expended)
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: 'resize',
onMousedown:
_cache[1] ||
(_cache[1] = (...args) =>
unref(handleMouseDown) &&
unref(handleMouseDown)(...args)),
},
null,
32
))
: createCommentVNode('', true),
],
6
)
)
}
},
})
var Sidebar$8 = /* @__PURE__ */ _export_sfc(_sfc_main$2J, [
['__scopeId', 'data-v-6baaa5d8'],
])
var Sidebar$9 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Sidebar$8,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Canvas_vue_vue_type_style_index_0_scoped_true_lang = ''
const _sfc_main$2I = /* @__PURE__ */ defineComponent({
setup(__props2, { expose }) {
let canvasEl = ref()
const document2 = computed(() => {
return app.current.project.current.page.document
})
expose({
rootEl: canvasEl,
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
ref_key: 'canvasEl',
ref: canvasEl,
class: 'canvas',
style: normalizeStyle$1({
width: document2.value.body.style.width,
height: document2.value.body.style.height,
transform: `translate(${unref(state$6).current.translateX}px, ${
unref(state$6).current.translateY
}px)`,
zoom: unref(state$6).current.zoom,
}),
},
[
createVNode$1(
_sfc_main$3h,
{
class: 'body mode-editing',
node: document2.value.body,
mode: unref(MODE).EDITING,
editing: '',
collect: '',
},
null,
8,
['node', 'mode']
),
],
4
)
)
}
},
})
var Canvas = /* @__PURE__ */ _export_sfc(_sfc_main$2I, [
['__scopeId', 'data-v-324fd49a'],
])
var Canvas$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Canvas,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const getGroupNode = (nodes) => {
let node2
if (nodes.parentNode) {
node2 = nodes.parentNode.isGroup() ? getGroupNode(nodes.parentNode) : nodes
}
return node2
}
const getGroupStyleProxy = (
downInfo,
parentNode2,
diff,
canvasRect,
parentRect,
zoom,
width,
height,
type4
) => {
let left2
let top2
let parentLeft
let parentTop
if (state$6.current.nodes[0].isGroup() && downInfo.width && downInfo.height) {
parentNode2.style.width =
width / ((downInfo.width * zoom) / downInfo.resizer.width) + 'px'
parentNode2.style.height =
height / ((downInfo.height * zoom) / downInfo.resizer.height) + 'px'
const parentWidth = parseFloat(parentNode2.style.width)
const parentHeight = parseFloat(parentNode2.style.height)
switch (type4) {
case 'tl':
left2 = ((downInfo.left * parentWidth) / downInfo.resizer.width) * zoom
top2 = ((downInfo.top * parentHeight) / downInfo.resizer.height) * zoom
parentTop =
downInfo.resizer.top +
diff.y -
(canvasRect.y - parentRect.y / zoom) +
'px'
parentLeft =
downInfo.resizer.left +
diff.x -
(canvasRect.x - parentRect.x / zoom) +
'px'
break
case 'tr':
left2 = ((downInfo.left * parentWidth) / downInfo.resizer.width) * zoom
top2 = ((downInfo.top * parentHeight) / downInfo.resizer.height) * zoom
parentTop =
downInfo.resizer.top +
diff.y -
(canvasRect.y - parentRect.y / zoom) +
'px'
break
case 'bl':
left2 = ((downInfo.left * parentWidth) / downInfo.resizer.width) * zoom
top2 = ((downInfo.top * parentHeight) / downInfo.resizer.height) * zoom
parentLeft =
downInfo.resizer.left +
diff.x -
(canvasRect.x - parentRect.x / zoom) +
'px'
break
case 'br':
left2 = ((downInfo.left * parentWidth) / downInfo.resizer.width) * zoom
top2 = ((downInfo.top * parentHeight) / downInfo.resizer.height) * zoom
break
}
} else {
switch (type4) {
case 'tl':
left2 = downInfo.left + diff.x
top2 = downInfo.top + diff.y
break
case 'tr':
left2 = downInfo.left
top2 = downInfo.top + diff.y
break
case 'bl':
left2 = downInfo.left + diff.x
top2 = downInfo.top
break
case 'br':
left2 = downInfo.left
top2 = downInfo.top
break
}
}
return {
left: left2,
top: top2,
parentLeft,
parentTop,
}
}
const getGroupParentNode = (nodes, groupArr, type4 = null) => {
if (nodes.parentNode && nodes.parentNode.isGroup()) {
if (type4 && nodes.parentNode.id === state$6.current.nodes[0].id) {
groupArr.push(nodes.parentNode)
return groupArr
}
groupArr.push(nodes.parentNode)
getGroupParentNode(nodes.parentNode, groupArr)
}
return groupArr
}
var Selector_vue_vue_type_style_index_0_scoped_true_lang = ''
const _sfc_main$2H = /* @__PURE__ */ defineComponent({
setup(__props2) {
let style2 = ref()
let downEvent = ref()
let downTarget
let downStyleWMap = /* @__PURE__ */ new WeakMap()
let moveEvent = ref()
let downNodeInputActive = false
let el2 = ref()
let parentNode2 = ref()
let parentRect
onMounted(() => {
parentNode2.value = el2.value.parentNode
parentRect = parentNode2.value.getBoundingClientRect()
})
function getDownNode() {
const downNode = getClosestNodeByDom(downTarget)
if (downNode && !isRootNode(downNode)) {
return downNode
}
}
function selectNode2(node2, bool2 = true) {
node2.selected = bool2
}
function clearSelectedNodes() {
state$6.current.nodes.length = 0
}
function hasMultiKey(e2 = downEvent.value) {
state$6.current.model = 'click'
return e2?.ctrlKey || e2?.shiftKey || e2?.metaKey
}
const mousedownHandler2 = async (e2) => {
if (spaceDown) {
document.body.style.cursor = 'grabbing'
}
const target2 = e2.target
const canvas = document.querySelector('.canvas')
const canvasScroller = document.querySelector('.canvas-scroller')
const canvasWrapper = document.querySelector('.canvas-wrapper')
parentRect = parentNode2.value.getBoundingClientRect()
if (
!(
canvas?.contains(target2) ||
target2 === canvasScroller ||
target2 === canvasWrapper
)
)
return
let loopEl = target2
for (let i2 = 1; loopEl && i2 <= 10; i2++) {
if (String(loopEl.className).includes('selector-ignore')) {
return
}
loopEl = loopEl?.parentElement
}
if (target2?.parentElement?.dataset['widgetKey'] == 'Line') return
downNodeInputActive =
target2 === document.activeElement && utils.isInputActive(target2)
document.addEventListener('mousemove', mousemoveHandler2, true)
document.addEventListener('mouseup', mouseupHandler2, true)
downEvent.value = e2
downTarget = target2
const downNode = getDownNode()
const ctrl = hasMultiKey()
const selectedNodeList = getUnLockedSelectedNodes()
const multiSelected = selectedNodeList.length > 1
const parentNodeList = getParentNodeListByDom(e2.target).slice(1)
const selectedParent = [...parentNodeList]
.reverse()
.find((n2) => selectedNodeList.includes(n2))
const selectedChild =
selectedParent && getChildNodeFromList(selectedParent, parentNodeList)
if (downNode) {
for (const node2 of [...parentNodeList, ...selectedNodeList]) {
downStyleWMap.set(node2, {
...node2.style,
})
}
}
if (downNode) {
const selected = isSelectedNode(downNode)
stop2 = !selected
}
if (!downNode && !ctrl) {
clearSelectedNodes()
return
}
if (downNode && !selectedParent && !ctrl) {
clearSelectedNodes()
if (
selectedNodeList &&
selectedNodeList.length &&
downNode.parentNode?.id === selectedNodeList[0].parentNode?.id
) {
selectNode2(downNode)
} else {
selectNode2(parentNodeList[0])
}
}
if (
downNode &&
selectedParent &&
selectedChild &&
!multiSelected &&
!ctrl
) {
setTimeout(() => {
if (!moveEvent.value) {
clearSelectedNodes()
selectNode2(selectedChild)
}
}, 150)
}
if (downNode && !selectedParent && ctrl) {
if (
selectedNodeList &&
selectedNodeList.length &&
downNode.parentNode?.id === selectedNodeList[0].parentNode?.id
) {
selectNode2(downNode)
} else {
if (!selectedNodeList || !selectedNodeList.length) {
selectNode2(parentNodeList[0])
} else {
const downNodeParentNode = getGroupParentNode(downNode, [])
for (let parentNode22 of downNodeParentNode) {
if (
parentNode22.parentNode.id ===
selectedNodeList[0].parentNode?.id
) {
selectNode2(parentNode22)
}
}
}
}
}
if (downNode && selectedParent && !selectedChild && ctrl) {
selectNode2(selectedParent, false)
}
}
const mousemoveHandler2 = (e2) => {
if (downEvent.value && !spaceDown) {
moveEvent.value = e2
const downNode = getDownNode()
if (downNode && !downNode.locked) {
if (downNodeInputActive) {
return
}
const zoom = state$6.current.zoom
const selectedNodeList = CanvasNode$1.getUnlockedSelectedList()
for (const node2 of selectedNodeList) {
const downStyle = downStyleWMap.get(node2)
const downLeft = parseFloat(downStyle.left)
const downTop = parseFloat(downStyle.top)
const diffLeft = (e2.x - downEvent.value.x) / zoom
const diffTop = (e2.y - downEvent.value.y) / zoom
node2.style.left = `${downLeft + diffLeft}px`
node2.style.top = `${downTop + diffTop}px`
}
} else if (!downNode || downNode.locked) {
style2.value = {
left: `${Math.min(downEvent.value.x, e2.x) - parentRect.x}px`,
top: `${Math.min(downEvent.value.y, e2.y) - parentRect.y}px`,
width: `${Math.abs(e2.x - downEvent.value.x)}px`,
height: `${Math.abs(e2.y - downEvent.value.y)}px`,
}
}
}
}
const mouseupHandler2 = (e2) => {
const downNode = getDownNode()
setTimeout(() => {
if (state$6.current.nodes.length) {
const left2 = Math.min(
...state$6.current.nodes.map((r2) => parseFloat(r2.style.left))
)
state$6.current.selectId = state$6.current.nodes.find(
(e22) => parseFloat(e22.style.left) === left2
).id
} else {
state$6.current.selectId = ''
}
}, 100)
if (
downEvent.value &&
moveEvent.value &&
(moveEvent.value.x !== downEvent.value.x ||
moveEvent.value.y !== downEvent.value.y)
) {
stop2 = true
if (!(downNode && !downNode.locked)) {
if (!hasMultiKey(e2)) {
clearSelectedNodes()
}
const zoom = state$6.current.zoom
let list2 = []
eachRootChildNode(function (node2) {
const areaRect = el2.value.getBoundingClientRect()
const rect = getRectByNode(node2)
if (
node2.style.visibility != 'hidden' &&
rect &&
rect.left * zoom < areaRect.right &&
rect.right * zoom > areaRect.left &&
rect.top * zoom < areaRect.bottom &&
rect.bottom * zoom > areaRect.top
) {
if (!state$6.current.nodes.length) {
list2.push(node2)
}
state$6.current.model = 'move'
state$6.current.nodes.forEach((target2) => {
if (
node2.parentNode &&
target2.parentNode &&
target2.parentNode.id === node2.parentNode.id
) {
list2.push(node2)
}
})
}
})
list2
.filter((n2) => {
if (list2.length === 1 || !n2.locked) {
return true
}
})
.forEach((node2) => {
node2.selected = true
})
}
}
downEvent.value = void 0
moveEvent.value = void 0
style2.value = void 0
off2()
}
let stop2 = false
const clickHandler = (e2) => {
if (stop2) {
e2.stopPropagation()
}
stop2 = false
}
let spaceDown = false
const spaceDownHandler = (e2) => {
if (/^ $/.test(e2.key) && !utils.isInputActive(document.activeElement)) {
e2.preventDefault()
spaceDown = true
document.body.style.cursor = 'grab'
}
}
const spaceUpHandler = () => {
spaceDown = false
document.body.style.cursor = ''
}
document.addEventListener('keydown', spaceDownHandler, true)
document.addEventListener('keyup', spaceUpHandler, true)
document.addEventListener('mousedown', mousedownHandler2, true)
document.addEventListener('click', clickHandler, true)
const off2 = () => {
document.removeEventListener('mousemove', mousemoveHandler2, true)
document.removeEventListener('mouseup', mouseupHandler2, true)
}
const offAll = () => {
document.removeEventListener('keydown', spaceDownHandler, true)
document.removeEventListener('keyup', spaceUpHandler, true)
document.removeEventListener('mousedown', mousedownHandler2, true)
document.removeEventListener('click', clickHandler, true)
off2()
}
onUnmounted(offAll)
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
ref_key: 'el',
ref: el2,
class: 'selector',
style: normalizeStyle$1(style2.value),
},
null,
4
)
)
}
},
})
var Selector = /* @__PURE__ */ _export_sfc(_sfc_main$2H, [
['__scopeId', 'data-v-33f63fc9'],
])
var Selector$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Selector,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
let AA
let AB
let AC
function getAngle(x1, y1, x2, y2) {
const rotate2 = document.querySelector('.rotate')
let angle2 = 0
if (rotate2) {
AA = AB ? AB : y1 - rotate2.offsetTop
AB = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y1 - y2, 2))
AC = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(AA - (y1 - y2), 2))
angle2 = Math.ceil(
Math.acos(
(Math.pow(AA, 2) + Math.pow(AB, 2) - Math.pow(AC, 2)) / (2 * AA * AB)
) *
(180 / Math.PI)
)
return x2 < x1 ? -angle2 : angle2
}
return angle2
}
let style = ref({
opacity: '0',
left: '0px',
top: '0px',
width: '0px',
height: '0px',
transform: 'rotate(90deg)',
})
const mousemoveConfig = reactive({
startX: 0,
startY: 0,
thisX: 0,
thisY: 0,
oldStyle: {},
boardRect: {
bottom: 0,
height: 0,
left: 0,
right: 0,
top: 0,
width: 0,
x: 0,
y: 0,
toJSON: () => {},
},
})
const mousedownRotate = () => {
let mousedownHandler2
let mousemoveHandler2
let mouseupHandler2
const nodes = state$6.current.nodes
const cancel2 = () => {
document.removeEventListener('mousedown', mousedownHandler2)
document.removeEventListener('mousemove', mousemoveHandler2)
document.removeEventListener('mouseup', mouseupHandler2)
mousemoveConfig.startX = 0
mousemoveConfig.startY = 0
mousemoveConfig.thisX = 0
mousemoveConfig.thisY = 0
}
document.addEventListener(
'mousedown',
(mousedownHandler2 = () => {
const resizer = document.querySelector('.resizer')
const scroller = document.querySelector('.canvas-scroller')
if (resizer && scroller) {
const parentNode2 = resizer.parentNode
const parentRect = parentNode2.getBoundingClientRect()
mousemoveConfig.startX =
resizer.offsetLeft +
resizer.offsetWidth / 2 +
parentRect.x +
scroller?.scrollLeft
mousemoveConfig.startY =
resizer.offsetTop + resizer.offsetHeight / 2 + parentRect.y
}
})
)
document.addEventListener(
'mousemove',
(mousemoveHandler2 = (e2) => {
const scroller = document.querySelector('.canvas-scroller')
if (scroller) {
mousemoveConfig.thisX = e2.clientX + scroller.scrollLeft
mousemoveConfig.thisY = e2.clientY
}
const rotate2 = getAngle(
mousemoveConfig.startX,
mousemoveConfig.startY,
mousemoveConfig.thisX,
mousemoveConfig.thisY
)
if (!style.value) return
if (nodes.length === 1) {
for (const node2 of nodes) {
node2.convertedStyle.rotate = rotate2
}
} else {
style.value.transform = `rotate(${rotate2}deg)`
}
e2.preventDefault()
return
})
)
document.addEventListener(
'mouseup',
(mouseupHandler2 = () => {
if (nodes.length !== 1) {
setNodeRotate()
}
cancel2()
})
)
}
const setNodeRotate = () => {
const rotate2 = Number(
style.value.transform.replace('rotate(', '').replace('deg)', '')
)
for (const node2 of getUnwrapGroupNodes(getUnLockedSelectedNodes())) {
styleConverter(node2.style).rotate = rotate2
}
}
const getStyleProxy = (
downInfo,
canvasRect,
parentRect,
zoom,
resizer,
diff,
type4
) => {
let width = 0
let height = 0
let left2 =
((Math.abs(
downInfo.resizer.left -
downInfo.left * zoom -
(canvasRect.x - parentRect.x / zoom)
) *
parseFloat(resizer.style.width)) /
downInfo.resizer.width +
downInfo.resizer.left) /
zoom
let top2 =
((Math.abs(
downInfo.resizer.top -
downInfo.top * zoom -
(canvasRect.y - parentRect.y / zoom)
) *
parseFloat(resizer.style.height)) /
downInfo.resizer.height +
downInfo.resizer.top) /
zoom
switch (type4) {
case 'tl':
left2 = left2 + diff.x - (canvasRect.x - parentRect.x / zoom)
top2 = top2 - (canvasRect.y - parentRect.y / zoom)
width =
(downInfo.width * (downInfo.resizer.width - diff.x)) /
downInfo.resizer.width
height =
(downInfo.height * (downInfo.resizer.height - diff.y)) /
downInfo.resizer.height
break
case 'tr':
left2 = left2 - (canvasRect.x - parentRect.x / zoom)
top2 = top2 + diff.y - (canvasRect.y - parentRect.y / zoom)
width =
(downInfo.width * (downInfo.resizer.width + diff.x)) /
downInfo.resizer.width
height =
(downInfo.height * (downInfo.resizer.height - diff.y)) /
downInfo.resizer.height
break
case 'bl':
left2 = left2 + diff.x - (canvasRect.x - parentRect.x / zoom)
top2 = top2 - (canvasRect.y - parentRect.y / zoom)
width =
(downInfo.width * (downInfo.resizer.width - diff.x)) /
downInfo.resizer.width
height =
(downInfo.height * (downInfo.resizer.height + diff.y)) /
downInfo.resizer.height
break
case 'br':
left2 = left2 - (canvasRect.x - parentRect.x / zoom)
top2 = top2 - (canvasRect.y - parentRect.y / zoom)
width =
(downInfo.width * (downInfo.resizer.width + diff.x)) /
downInfo.resizer.width
height =
(downInfo.height * (downInfo.resizer.height + diff.y)) /
downInfo.resizer.height
break
}
return {
left: left2,
top: top2,
width,
height,
}
}
var Resizer_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$1r = (n2) => (
pushScopeId('data-v-66587a5b'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$2v = /* @__PURE__ */ _withScopeId$1r(() =>
/* @__PURE__ */ createElementVNode('b', { class: 't' }, null, -1)
)
const _hoisted_2$2f = /* @__PURE__ */ _withScopeId$1r(() =>
/* @__PURE__ */ createElementVNode('b', { class: 'r' }, null, -1)
)
const _hoisted_3$24 = /* @__PURE__ */ _withScopeId$1r(() =>
/* @__PURE__ */ createElementVNode('b', { class: 'b' }, null, -1)
)
const _hoisted_4$1M = /* @__PURE__ */ _withScopeId$1r(() =>
/* @__PURE__ */ createElementVNode('b', { class: 'l' }, null, -1)
)
const _sfc_main$2G = /* @__PURE__ */ defineComponent({
setup(__props2) {
let el2 = ref()
const dragResizeNodeConfig = {
shiftKey: false,
}
function getParentRect() {
if (!el2.value) return
const parentNode2 = el2.value.parentNode
return parentNode2.getBoundingClientRect()
}
const update3 = () => {
const parentRect = getParentRect()
const rectList = getUnLockedSelectedNodes()
.map((n2) => getRectByNode(n2))
.filter(Boolean)
if (!rectList.length) {
style.value = {
...style.value,
visibility: 'hidden',
}
return
}
const left2 = Math.min(...rectList.map((r2) => r2.left))
const top2 = Math.min(...rectList.map((r2) => r2.top))
const right2 = Math.max(...rectList.map((r2) => r2.right))
const bottom2 = Math.max(...rectList.map((r2) => r2.bottom))
const zoom = state$6.current.zoom
const nodesLength = state$6.current.nodes.length
const canvasRect = getRectByNode(state$6.document.body)
let domLeft = 0
let domTop = 0
let domWidth = 0
let domHeight = 0
if (canvasRect && state$6.current.nodes[0].dom) {
domLeft =
canvasRect &&
state$6.current.nodes[0].dom?.offsetLeft +
(canvasRect.x - parentRect.x / zoom)
domTop =
canvasRect &&
state$6.current.nodes[0].dom?.offsetTop +
(canvasRect.y - parentRect.y / zoom)
domWidth = state$6.current.nodes[0].style?.width
? parseFloat(state$6.current.nodes[0].style?.width)
: state$6.current.nodes[0].dom?.offsetWidth
domHeight = state$6.current.nodes[0].style?.height
? parseFloat(state$6.current.nodes[0].style?.height)
: state$6.current.nodes[0].dom?.offsetHeight
}
style.value = {
visibility: '',
left:
nodesLength === 1
? `${domLeft * zoom}px`
: `${left2 * zoom - parentRect.x}px`,
top:
nodesLength === 1
? `${domTop * zoom}px`
: `${top2 * zoom - parentRect.y}px`,
width:
nodesLength === 1
? `${domWidth * zoom}px`
: `${(right2 - left2) * zoom}px`,
height:
nodesLength === 1
? `${domHeight * zoom}px`
: `${(bottom2 - top2) * zoom}px`,
transform: `rotate(0deg)`,
}
if (nodesLength === 1) {
style.value.rotate = `${state$6.current.nodes[0].dom?.style.rotate}`
}
if (state$6.current.nodes[0].parentNode?.isGroup() && nodesLength === 1) {
style.value = {
visibility: '',
left: `${
left2 * zoom -
parentRect.x +
((right2 - left2) * zoom - domWidth * zoom) / 2
}px`,
top: `${
top2 * zoom -
parentRect.y +
((bottom2 - top2) * zoom - domHeight * zoom) / 2
}px`,
width: `${domWidth * zoom}px`,
height: `${domHeight * zoom}px`,
transform: `rotate(0deg)`,
}
style.value.rotate = state$6.current.nodes[0].dom?.style.rotate
? `${state$6.current.nodes[0].dom?.style.rotate}`
: `${state$6.current.nodes[0].parentNode.dom?.style.rotate}`
}
}
const _update = lodash$2.exports.debounce(update3, 100)
watch$1(
state$6.current,
() => {
if (
state$6.current.nodes.length == 1 &&
state$6.current.nodes[0].is == 'Line'
) {
style.value.visibility = 'hidden'
return
}
nextTick(update3)
},
{
immediate: true,
}
)
addEventListener('resize', _update, true)
function resize(type4) {
const nodes = getUnwrapGroupNodes(getUnLockedSelectedNodes())
const resizer = document.querySelector('.resizer')
addEventListener('mousedown', down)
function down(eDown) {
const downInfoMap = /* @__PURE__ */ new WeakMap()
for (const node2 of nodes) {
const dom = getDomByNode(node2)
if (!dom) continue
setDownInfo(node2)
if (node2.parentNode?.isGroup()) {
setAllGroupDownInfo(node2.parentNode)
}
}
function setDownInfo(node2) {
if (node2 && node2.dom) {
const style2 = getComputedStyle(node2.dom)
const styleProxy = styleConverter(style2)
downInfoMap.set(node2, {
left: styleProxy.left,
top: styleProxy.top,
width: styleProxy.width,
height: styleProxy.height,
resizer: {
left: resizer ? parseFloat(resizer.style.left) : 0,
top: resizer ? parseFloat(resizer.style.top) : 0,
width: resizer ? parseFloat(resizer.style.width) : 0,
height: resizer ? parseFloat(resizer.style.height) : 0,
},
})
}
}
function setAllGroupDownInfo(node2) {
setDownInfo(node2)
if (node2.parentNode?.isGroup()) {
setAllGroupDownInfo(node2.parentNode)
}
}
addEventListener('mousemove', move)
function move(eMove) {
const diff = {
x: eMove.x - eDown.x,
y: eMove.y - eDown.y,
}
const canvasRect = getRectByNode(state$6.document.body)
const parentRect = getParentRect()
const zoom = state$6.current.zoom
for (const node2 of nodes) {
const downInfo = downInfoMap.get(node2)
const styleProxy = styleConverter(node2.style)
const r2 = downInfo.width / downInfo.height
const parentNode2 = getGroupNode(node2)
const allParentNode = getGroupParentNode(node2, [], 'parent')
if (!canvasRect || !resizer) {
return false
}
const {
width,
height,
left: left2,
top: top2,
} = getStyleProxy(
downInfo,
canvasRect,
parentRect,
zoom,
resizer,
diff,
type4
)
styleProxy.left = left2
styleProxy.top = top2
styleProxy.width = Math.max(0, width)
if (type4 === 'tl') {
if (dragResizeNodeConfig.shiftKey) {
const newH = styleProxy.width / r2
styleProxy.top = downInfo.top - (newH - downInfo.height)
styleProxy.height = newH
} else {
styleProxy.top = downInfo.top + diff.y
styleProxy.height = Math.max(0, height)
}
}
if (type4 === 'tr') {
if (dragResizeNodeConfig.shiftKey) {
const newH = styleProxy.width / r2
styleProxy.top = downInfo.top - (newH - downInfo.height)
styleProxy.height = newH
} else {
styleProxy.height = Math.max(0, height)
}
}
if (type4 === 'br') {
if (dragResizeNodeConfig.shiftKey) {
styleProxy.height = styleProxy.width / r2
} else {
styleProxy.height = Math.max(0, height)
}
}
if (type4 === 'bl') {
if (dragResizeNodeConfig.shiftKey) {
styleProxy.height = styleProxy.width / r2
} else {
styleProxy.height = Math.max(0, height)
}
}
if (parentNode2 && parentNode2?.isGroup()) {
const {
left: left22,
top: top22,
parentLeft,
parentTop,
} = getGroupStyleProxy(
downInfo,
parentNode2,
diff,
canvasRect,
parentRect,
zoom,
styleProxy.width,
styleProxy.height,
type4
)
styleProxy.left = left22
styleProxy.top = top22
if (
state$6.current.nodes[0].id === parentNode2.id &&
(type4 === 'tl' || type4 === 'tr')
) {
if (parentTop) {
parentNode2.style.top = parentTop
}
}
if (
state$6.current.nodes[0].id === parentNode2.id &&
(type4 === 'tl' || type4 === 'bl')
) {
if (parentLeft) {
parentNode2.style.left = parentLeft
}
}
}
const index2 = allParentNode.findIndex(
(item2) => item2.id === state$6.current.nodes[0].id
)
if (
parentNode2 &&
(state$6.current.nodes[0].id === parentNode2.id ||
index2 !== allParentNode.length - 1)
) {
allParentNode.forEach((nodeItem) => {
if (nodeItem.id !== parentNode2.id) {
const downParentInfo = downInfoMap.get(nodeItem)
const groupStyleProxy = styleConverter(nodeItem.style)
groupStyleProxy.width =
(downParentInfo.width * styleProxy.width) / downInfo.width
groupStyleProxy.height =
(downParentInfo.height * styleProxy.height) /
downInfo.height
groupStyleProxy.left =
(downParentInfo.left * parseFloat(resizer.style.width)) /
downInfo.resizer.width
groupStyleProxy.top =
(downParentInfo.top * parseFloat(resizer.style.height)) /
downInfo.resizer.height
}
})
} else {
if (
node2.parentNode?.isGroup() &&
parentNode2 &&
node2.parentNode.id !== parentNode2.id
) {
if (
node2.id ===
node2.parentNode?.childNodes[
node2.parentNode?.childNodes.length - 1
].id &&
state$6.current.nodes[0].id !== node2.id
) {
const downParentInfo = downInfoMap.get(node2.parentNode)
const groupStyleProxy = styleConverter(node2.parentNode.style)
if (
state$6.current.nodes[0].isGroup() &&
state$6.current.nodes[0].id !== parentNode2.id
) {
groupStyleProxy.width =
(downParentInfo.width * styleProxy.width) / downInfo.width
groupStyleProxy.height =
(downParentInfo.height * styleProxy.height) /
downInfo.height
if (type4 === 'tr' || type4 === 'tl') {
groupStyleProxy.top = downParentInfo.top + diff.y
}
if (type4 === 'bl' || type4 === 'tl') {
groupStyleProxy.left = downParentInfo.left + diff.x
}
} else {
groupStyleProxy.left =
(downParentInfo.left * parseFloat(resizer.style.width)) /
downInfo.resizer.width
groupStyleProxy.top =
(downParentInfo.top * parseFloat(resizer.style.height)) /
downInfo.resizer.height
}
}
}
}
}
}
addEventListener('mouseup', up)
function up() {
removeEventListener('mousedown', down)
removeEventListener('mousemove', move)
removeEventListener('mouseup', up)
}
}
}
const keyDownHandler2 = (e2) => {
if (e2.shiftKey) {
if (!dragResizeNodeConfig.shiftKey) {
dragResizeNodeConfig.shiftKey = true
}
}
}
const keyUpHandler2 = () => {
dragResizeNodeConfig.shiftKey = false
}
document.addEventListener('keydown', keyDownHandler2, true)
document.addEventListener('keyup', keyUpHandler2, true)
const offAll = () => {
document.removeEventListener('keydown', keyDownHandler2, true)
document.removeEventListener('keyup', keyUpHandler2, true)
}
onUnmounted(() => {
removeEventListener('resize', _update, true)
offAll()
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
ref_key: 'el',
ref: el2,
class: 'resizer',
style: normalizeStyle$1(unref(style)),
},
[
_hoisted_1$2v,
_hoisted_2$2f,
_hoisted_3$24,
_hoisted_4$1M,
createElementVNode(
's',
{
class: 'tl',
onMousedown:
_cache[0] || (_cache[0] = ($event) => resize('tl')),
},
null,
32
),
createElementVNode(
's',
{
class: 'tr',
onMousedown:
_cache[1] || (_cache[1] = ($event) => resize('tr')),
},
null,
32
),
createElementVNode(
's',
{
class: 'br',
onMousedown:
_cache[2] || (_cache[2] = ($event) => resize('br')),
},
null,
32
),
createElementVNode(
's',
{
class: 'bl',
onMousedown:
_cache[3] || (_cache[3] = ($event) => resize('bl')),
},
null,
32
),
createElementVNode(
's',
{
class: 'rotate',
onMousedown:
_cache[4] ||
(_cache[4] = ($event) => unref(mousedownRotate)()),
},
null,
32
),
],
4
)
)
}
},
})
var Resizer = /* @__PURE__ */ _export_sfc(_sfc_main$2G, [
['__scopeId', 'data-v-66587a5b'],
])
var Resizer$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Resizer,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
let dragCanvasConfig = {
keyCode: 0,
isBoardActive: false,
model: 'off',
CanvasStartX: 0,
CanvasStartY: 0,
startX: 0,
startY: 0,
thisX: 0,
thisY: 0,
}
const dragCanvas = (e2) => {
if (dragCanvasConfig.model === 'off') {
dragCanvasConfig.CanvasStartX = JSON.parse(
JSON.stringify(state$6.current.translateX)
)
dragCanvasConfig.CanvasStartY = JSON.parse(
JSON.stringify(state$6.current.translateY)
)
dragCanvasConfig.startX = e2.pageX
dragCanvasConfig.startY = e2.pageY
dragCanvasConfig.thisX = e2.pageX
dragCanvasConfig.thisY = e2.pageY
dragCanvasConfig.model = 'draging'
}
dragCanvasConfig.thisX = e2.pageX
dragCanvasConfig.thisY = e2.pageY
const offsetX = dragCanvasConfig.thisX - dragCanvasConfig.startX
const offsetY = dragCanvasConfig.thisY - dragCanvasConfig.startY
const x2 = dragCanvasConfig.CanvasStartX + offsetX / state$6.current.zoom
const y2 = dragCanvasConfig.CanvasStartY + offsetY / state$6.current.zoom
state$6.current.translateX = x2
state$6.current.translateY = y2
}
const initDragCanvasConfig = () => {
dragCanvasConfig = {
keyCode: 0,
isBoardActive: false,
model: 'off',
CanvasStartX: 0,
CanvasStartY: 0,
startX: 0,
startY: 0,
thisX: 0,
thisY: 0,
}
}
let keyupHandler
let mousedownHandler
let mousemoveHandler
let mouseupHandler
let isDown = false
function cancel() {
isDown = false
document.removeEventListener('keyup', keyupHandler)
document.removeEventListener('mousedown', mousedownHandler)
document.removeEventListener('mousemove', mousemoveHandler)
document.removeEventListener('mouseup', mouseupHandler)
}
useEventListener(document, 'keydown', (e2) => {
if (e2.keyCode === 32) {
if (isDown) return
isDown = true
document.addEventListener(
'mousedown',
(mousedownHandler = (e22) => {
dragCanvasConfig.isBoardActive =
document.querySelector('.board')?.contains(e22.target) || false
})
)
document.addEventListener(
'mousemove',
(mousemoveHandler = (e22) => {
if (dragCanvasConfig.isBoardActive) {
dragCanvas(e22)
e22.preventDefault()
return
}
})
)
document.addEventListener(
'mouseup',
(mouseupHandler = () => {
initDragCanvasConfig()
cancel()
})
)
document.addEventListener(
'keyup',
(keyupHandler = () => {
cancel()
})
)
}
})
var Board_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$2u = { class: 'canvas-scroller' }
const _hoisted_2$2e = { class: 'canvas-wrapper' }
const _sfc_main$2F = /* @__PURE__ */ defineComponent({
setup(__props2) {
let canvasCom = ref()
async function drop3(e2) {
const data2 = JSON.parse(
e2.dataTransfer?.getData('application/json') || 'null'
)
if (!data2) {
console.warn('data === null')
return
}
const { widget, imgInfo, resourceInfo } = data2
let canvasNode
if (widget) {
canvasNode = new CanvasNode$1({
is: widget.is,
name: widget.name,
props: {
...widget.props,
},
})
}
if (imgInfo) {
const url2 = `/api/v1/view/image/fromgallery`
const params2 = {
groupKey: imgInfo.groupKey,
imageKey: imgInfo.imageKey,
}
const imgUrl = await relevanceProjectImg(url2, params2)
if (imgUrl && canvasNode) {
canvasNode.props.filename = imgUrl
}
const imageName = imgInfo.imageName
if (imageName && canvasNode) {
const suffixIndex = imageName.lastIndexOf('.')
canvasNode.name =
suffixIndex > 0 ? imageName.substring(0, suffixIndex) : imageName
}
}
if (resourceInfo) {
const resource = new Resource(resourceInfo)
canvasNode = resource.canvasNode.cloneNode()
const { groupKey, imageKey } = resourceInfo.otherInfo
if (Resource.getImages(canvasNode)) {
const url2 = `/api/v1/view/asset/fromgallery`
const params2 = { groupKey, imageKey }
await relevanceProjectImg(url2, params2)
}
if (groupKey.startsWith('\u5E03\u5C40\u6846\u67B6')) {
const pos = {
position: 'absolute',
left: '0',
top: '0',
}
appendCanvasNode(e2, canvasNode, pos)
return
}
}
if (canvasNode) {
appendCanvasNode(e2, canvasNode)
}
}
function appendCanvasNode(e2, canvasNode, pos) {
if (pos) {
canvasNode.style.position = 'absolute'
canvasNode.style.left = pos.left
canvasNode.style.top = pos.top
} else {
const canvasEl = canvasCom.value.rootEl
const zoom = state$6.current.zoom
const x2 = e2.x - canvasEl.getBoundingClientRect().x * zoom
const y2 = e2.y - canvasEl.getBoundingClientRect().y * zoom
const width = canvasEl.getBoundingClientRect().width
const height = canvasEl.getBoundingClientRect().height
const x_ = Math.min(Math.max(0, (x2 - 4) / zoom), width - 32)
const y_ = Math.min(Math.max(0, (y2 - 4) / zoom), height - 32)
canvasNode.style.position = 'absolute'
canvasNode.style.left = `${x_}px`
canvasNode.style.top = `${y_}px`
}
setTimeout(() => {
if (!canvasNode) return
CanvasNode$1.getBody().appendChild(canvasNode)
state$6.current.nodes.length = 0
state$6.current.nodes.push(canvasNode)
})
}
function relevanceProjectImg(url2 = '', params2 = {}) {
return request({
url: url2,
data: params2,
method: 'post',
silent: true,
})
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'board',
ondragover: 'return false',
ondrop: drop3,
},
[
createElementVNode('div', _hoisted_1$2u, [
createElementVNode('div', _hoisted_2$2e, [
createVNode$1(
Canvas,
{
ref_key: 'canvasCom',
ref: canvasCom,
class: 'canvas',
},
null,
512
),
createVNode$1(Resizer),
]),
createVNode$1(Selector),
]),
]
)
)
}
},
})
var Board = /* @__PURE__ */ _export_sfc(_sfc_main$2F, [
['__scopeId', 'data-v-d1b34252'],
])
var Board$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Board,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Tab_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$2t = { class: 'Tab' }
const _sfc_main$2E = /* @__PURE__ */ defineComponent({
setup(__props2) {
const pageList = computed(() => {
return app.current.project.current.pageList
})
const switchPage = (data2) => {
const page2 = app.current.project.current.pageList.find(
(page22) => page22.id === data2.paneName
)
if (!page2) return
if (
app.current.project.current.page &&
page2.id === app.current.project.current.page.id
)
return
replace$4(page2)
}
const removePage = (pageId) => {
closePageTab(pageId, true)
}
let rightClickPageId = ''
let menuVisible = ref(false)
let left2 = ref(0)
let top2 = ref(0)
const handleClickContextMenu = (event) => {
const tabHeaderItemClassName = 'el-tabs__item'
const target2 = event.target
if (target2?.classList?.contains(tabHeaderItemClassName)) {
const DomRect = target2.getBoundingClientRect()
menuVisible.value = true
left2.value = DomRect.x
top2.value = DomRect.y + target2.offsetHeight
const match2 = target2.id.match(/tab-(\d+)/)
if (match2) {
rightClickPageId = match2[1]
}
}
}
const closeAll2 = () => {
menuVisible.value = false
closeAllPageTabs()
}
const closeElse = () => {
menuVisible.value = false
closeElsePageTabs(rightClickPageId)
}
return (_ctx, _cache) => {
const _component_el_tab_pane = resolveComponent('el-tab-pane')
const _component_el_tabs = resolveComponent('el-tabs')
return (
openBlock(),
createElementBlock('div', _hoisted_1$2t, [
withDirectives(
(openBlock(),
createElementBlock(
'div',
{
style: normalizeStyle$1({
left: left2.value + 'px',
top: top2.value + 'px',
}),
class: 'menu',
},
[
createElementVNode(
'li',
{ onClick: closeAll2 },
'\u5173\u95ED\u6240\u6709'
),
createElementVNode(
'li',
{ onClick: closeElse },
'\u5173\u95ED\u5176\u4ED6'
),
],
4
)),
[
[vShow, menuVisible.value],
[
unref(ClickOutside),
() => menuVisible.value && (menuVisible.value = false),
],
]
),
createVNode$1(
_component_el_tabs,
{
'model-value': unref(app).current.project.current.page.id,
type: 'card',
closable: '',
class: 'demo-tabs',
onTabClick: switchPage,
onTabRemove: removePage,
onContextmenu:
_cache[0] ||
(_cache[0] = withModifiers(
($event) => handleClickContextMenu($event),
['prevent']
)),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(pageList.value, (page2) => {
return (
openBlock(),
createBlock(
_component_el_tab_pane,
{
key: page2.id,
'data-pageId': page2.id,
label: page2.name,
name: page2.id,
},
null,
8,
['data-pageId', 'label', 'name']
)
)
}),
128
)),
]),
_: 1,
},
8,
['model-value']
),
])
)
}
},
})
var Tab = /* @__PURE__ */ _export_sfc(_sfc_main$2E, [
['__scopeId', 'data-v-2da3fab1'],
])
var Tab$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Tab,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const sizes = [
{
value: '3840\xD72160',
label: '\u5927\u5C4F4k',
},
{
value: '2560\xD71440',
label: '\u5927\u5C4F2K',
},
{
value: '1920\xD71080',
label: '\u7F51\u98751920',
},
{
value: '1680\xD71050',
label: '\u7F51\u98751680',
},
{
value: '1440\xD7900',
label: '\u7F51\u98751440',
},
{
value: '1280\xD71024',
label: '\u7F51\u98751280',
},
{
value: '1024\xD7768',
label: '\u7F51\u98751024',
},
{
value: '842\xD71190',
label: 'A3',
},
{
value: '595\xD7842',
label: 'A4',
},
{
value: '421\xD7595',
label: 'A5',
},
]
var Style_vue_vue_type_style_index_0_scoped_true_lang = ''
var Style_vue_vue_type_style_index_1_lang = ''
const _withScopeId$1q = (n2) => (
pushScopeId('data-v-700c7733'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$2s = {
key: 0,
class: 'line',
}
const _hoisted_2$2d = { class: 'field-item flex x' }
const _hoisted_3$23 = /* @__PURE__ */ _withScopeId$1q(() =>
/* @__PURE__ */ createElementVNode('span', { class: 'title' }, 'X', -1)
)
const _hoisted_4$1L = { class: 'field-item flex y' }
const _hoisted_5$1D = /* @__PURE__ */ _withScopeId$1q(() =>
/* @__PURE__ */ createElementVNode('span', { class: 'title' }, 'Y', -1)
)
const _hoisted_6$1t = { class: 'field-item flex rotate' }
const _hoisted_7$1g = /* @__PURE__ */ _withScopeId$1q(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
[
/* @__PURE__ */ createElementVNode('i', {
class: 'iconfont icon-xuanzhuan',
}),
],
-1
)
)
const _hoisted_8$18 = /* @__PURE__ */ _withScopeId$1q(() =>
/* @__PURE__ */ createElementVNode('sup', null, '\xB0', -1)
)
const _hoisted_9$14 = { class: 'line' }
const _hoisted_10$12 = { class: 'field-item flex w' }
const _hoisted_11$W = /* @__PURE__ */ _withScopeId$1q(() =>
/* @__PURE__ */ createElementVNode('span', { class: 'title' }, 'W', -1)
)
const _hoisted_12$T = { class: 'field-item flex h' }
const _hoisted_13$M = /* @__PURE__ */ _withScopeId$1q(() =>
/* @__PURE__ */ createElementVNode('span', { class: 'title' }, 'H', -1)
)
const _hoisted_14$H = {
key: 0,
class: 'field-item flex locked',
}
const _hoisted_15$F = {
key: 1,
class: 'field-item flex preset-size',
}
const _hoisted_16$E = { style: { float: 'left', 'font-size': '12px' } }
const _hoisted_17$y = { style: { float: 'right', 'font-size': '12px' } }
const _sfc_main$2D = /* @__PURE__ */ defineComponent({
setup(__props2) {
function fix(e2) {
if (
e2.target?.parentElement?.parentElement?.classList.contains(
'el-input-number'
)
) {
e2.target?.dispatchEvent(new Event('change'))
}
}
const styleX = CanvasNode$1.styleProxy
let presetSize = ref('')
const handlePresetChange = (val2) => {
const result = val2.split('\xD7')
if (result.length > 0) {
styleX.width = Number(result[0])
styleX.height = Number(result[1])
}
}
watch$1(
() => state$3.current.page?.id,
() => {
presetSize.value = ''
}
)
const isLocked = computed(function () {
let nodes = state$6.current.nodes
if (!nodes.length) nodes = [state$6.document.body]
if (nodes.length === 1 && nodes[0].locked === true) {
if (nodes[0].locked === true) {
return true
} else {
return false
}
}
return false
})
const setStyle2 = (value2, key2) => {
styleX[key2] = value2
}
const setVolume = (key2, value2) => {
const isLockWH = getCurrentNodeProperty('aspectRatioLocked')
const w2 = styleX.width
const h2 = styleX.height
const r2 = w2 / h2
let w22 = w2
let h22 = h2
if (key2 === 'width') {
w22 = value2
h22 = isLockWH ? w22 / r2 : h2
}
if (key2 === 'height') {
h22 = value2
w22 = isLockWH ? h22 * r2 : w2
}
styleX.width = w22
styleX.height = h22
}
const lockedWH = () => {
const locked = getCurrentNodeProperty('aspectRatioLocked') || false
setCurrentNodeProperty('aspectRatioLocked', !locked)
}
const lockedComponent2 = () => {
const locked = getCurrentNodeProperty('locked') || false
batchSetDeepComponent('locked', !locked)
}
const getCurrentNodeProperty = (key2) => {
let nodes = state$6.current.nodes
if (!nodes.length) nodes = [state$6.document.body]
let value2 = nodes[0][key2]
for (let node2 of nodes) {
const val2 = node2[key2]
if (val2 !== value2) value2 = void 0
}
return value2
}
function setCurrentNodeProperty(key2, value2, multipEditable = false) {
let nodes = state$6.current.nodes
if (!nodes.length) nodes = [state$6.document.body]
if (nodes.length > 1 && multipEditable) {
return
}
for (let node2 of nodes) {
node2[key2] = value2
}
}
const styleConfig = computed(() => {
const key2 = getCurrentNodeProperty('is')
const notes = CanvasNode$1.selectedList
let disabledStyle = {}
let textSetting = true
let appearanceSetting = true
const singleSelect = (widgetKey) => {
const style2 = Widget.store[widgetKey]?.styleConfig || {}
for (let [key22, value2] of Object.entries(style2)) {
if (value2 === false) {
disabledStyle[key22] = true
if (key22 === 'textSetting') textSetting = false
if (key22 === 'appearanceSetting') appearanceSetting = false
}
}
}
const multiSelect = (nodes) => {
for (const node2 of nodes) {
if (node2.isGroup()) {
multiSelect(node2.childNodes)
} else {
singleSelect(node2.is + '')
}
}
}
if (key2 && key2 != 'Group') {
singleSelect(key2)
} else {
multiSelect(notes)
}
return {
disabledStyle,
textSetting,
appearanceSetting,
}
})
return (_ctx, _cache) => {
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
return (
openBlock(),
createElementBlock(
'div',
{
class: 'style',
onInput: fix,
},
[
createVNode$1(
SettingItem$1,
{ class: 'attribute-module-position' },
{
default: withCtx(() => [
unref(hasSelectedNodes)()
? (openBlock(),
createElementBlock('div', _hoisted_1$2s, [
createElementVNode('div', _hoisted_2$2d, [
_hoisted_3$23,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
'controls-position': 'right',
'model-value': unref(styleX).left,
disabled:
unref(isLocked) ||
unref(styleConfig).disabledStyle['left'],
precision: 0,
onInput:
_cache[0] ||
(_cache[0] = (e2) => setStyle2(e2, 'left')),
},
null,
8,
['model-value', 'disabled']
),
]),
createElementVNode('div', _hoisted_4$1L, [
_hoisted_5$1D,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
'controls-position': 'right',
'model-value': unref(styleX).top,
disabled:
unref(isLocked) ||
unref(styleConfig).disabledStyle['right'],
precision: 0,
onInput:
_cache[1] ||
(_cache[1] = (e2) => setStyle2(e2, 'top')),
},
null,
8,
['model-value', 'disabled']
),
]),
createElementVNode('div', _hoisted_6$1t, [
_hoisted_7$1g,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
'controls-position': 'right',
'model-value': unref(styleX).rotate,
disabled:
unref(isLocked) ||
unref(styleConfig).disabledStyle['rotate'],
precision: 0,
onInput:
_cache[2] ||
(_cache[2] = (e2) => setStyle2(e2, 'rotate')),
},
null,
8,
['model-value', 'disabled']
),
_hoisted_8$18,
]),
]))
: createCommentVNode('', true),
createElementVNode('div', _hoisted_9$14, [
createElementVNode('div', _hoisted_10$12, [
_hoisted_11$W,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
'controls-position': 'right',
'model-value': unref(styleX).width,
disabled:
unref(isLocked) ||
unref(styleConfig).disabledStyle['width'],
min: 1,
precision: 0,
onInput:
_cache[3] ||
(_cache[3] = (e2) => setVolume('width', e2)),
},
null,
8,
['model-value', 'disabled']
),
withDirectives(
createElementVNode(
'i',
{
class:
'iconfont icon-guanlian item_rate volume-proportion volume-proportion-highlighted',
onClick: lockedWH,
title: '\u89E3\u9501\u957F\u5BBD\u6BD4',
},
null,
512
),
[[vShow, getCurrentNodeProperty('aspectRatioLocked')]]
),
withDirectives(
createElementVNode(
'i',
{
class:
'iconfont icon-guanlian item_rate volume-proportion',
onClick: lockedWH,
title: '\u9501\u5B9A\u957F\u5BBD\u6BD4',
},
null,
512
),
[[vShow, !getCurrentNodeProperty('aspectRatioLocked')]]
),
]),
createElementVNode('div', _hoisted_12$T, [
_hoisted_13$M,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
'controls-position': 'right',
'model-value': unref(styleX).height,
disabled:
unref(isLocked) ||
unref(styleConfig).disabledStyle['height'],
min: 1,
precision: 0,
onInput:
_cache[4] ||
(_cache[4] = (e2) => setVolume('height', e2)),
},
null,
8,
['model-value', 'disabled']
),
]),
unref(hasSelectedNodes)()
? (openBlock(),
createElementBlock('div', _hoisted_14$H, [
withDirectives(
createElementVNode(
'i',
{
class: 'iconfont icon-suoding is-locked',
onClick: lockedComponent2,
title: '\u9501\u5B9A',
},
null,
512
),
[[vShow, getCurrentNodeProperty('locked')]]
),
withDirectives(
createElementVNode(
'i',
{
class: 'iconfont icon-kaisuo',
onClick: lockedComponent2,
title: '\u89E3\u9501',
},
null,
512
),
[[vShow, !getCurrentNodeProperty('locked')]]
),
]))
: createCommentVNode('', true),
!unref(hasSelectedNodes)()
? (openBlock(),
createElementBlock('div', _hoisted_15$F, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x preset-select',
'popper-class':
'cms-el-select_check preset-popper-select',
modelValue: presetSize.value,
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) =>
(presetSize.value = $event)),
placeholder: '\u9884\u8BBE\u5C3A\u5BF8',
onChange: handlePresetChange,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(sizes), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
{
default: withCtx(() => [
createElementVNode(
'span',
_hoisted_16$E,
toDisplayString$1(item2.label),
1
),
createElementVNode(
'span',
_hoisted_17$y,
toDisplayString$1(item2.value),
1
),
]),
_: 2,
},
1032,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]))
: createCommentVNode('', true),
]),
]),
_: 1,
}
),
!unref(hasSelectedNodes)() && unref(styleConfig).appearanceSetting
? (openBlock(),
createBlock(
SettingItem$1,
{ key: 0 },
{
default: withCtx(() => [
createVNode$1(
AppearanceSettings,
{
root: '',
styleX: unref(styleX),
},
null,
8,
['styleX']
),
]),
_: 1,
}
))
: createCommentVNode('', true),
unref(hasSelectedNodes)() && unref(styleConfig).appearanceSetting
? (openBlock(),
createBlock(
SettingItem$1,
{
key: 1,
title: '\u5916\u89C2',
open: '',
},
{
default: withCtx(() => [
createVNode$1(
AppearanceSettings,
{
opacity: '',
styleX: unref(styleX),
disabled: unref(styleConfig).disabledStyle,
},
null,
8,
['styleX', 'disabled']
),
]),
_: 1,
}
))
: createCommentVNode('', true),
unref(hasSelectedNodes)() && unref(styleConfig).textSetting
? (openBlock(),
createBlock(
SettingItem$1,
{
key: 2,
title: '\u6587\u672C',
},
{
default: withCtx(() => [
createVNode$1(
TextSettings,
{
styleX: unref(styleX),
disabled: unref(styleConfig).disabledStyle,
},
null,
8,
['styleX', 'disabled']
),
]),
_: 1,
}
))
: createCommentVNode('', true),
],
32
)
)
}
},
})
var Style = /* @__PURE__ */ _export_sfc(_sfc_main$2D, [
['__scopeId', 'data-v-700c7733'],
])
var Style$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Style,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var InputSettings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$1p = (n2) => (
pushScopeId('data-v-6ea00d23'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$2r = { class: 'input-settings' }
const _hoisted_2$2c = /* @__PURE__ */ _withScopeId$1p(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u6587\u672C', -1)
)
const _hoisted_3$22 = /* @__PURE__ */ createTextVNode(
' \u83B7\u5F97\u7126\u70B9\u81EA\u52A8\u5168\u9009 '
)
const _hoisted_4$1K = /* @__PURE__ */ _withScopeId$1p(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u865A\u62DF\u952E\u76D8',
-1
)
)
const _hoisted_5$1C = /* @__PURE__ */ createTextVNode(' \u542F\u7528 ')
const _hoisted_6$1s = /* @__PURE__ */ createTextVNode(
' Enter\u952E\u5173\u95ED '
)
const _sfc_main$2C = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const inputSettings = reactive($props2.node.props.inputSettings)
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
return (
openBlock(),
createBlock(
SettingItem$1,
{ title: '\u6587\u672C\u6846\u914D\u7F6E' },
{
default: withCtx(() => [
createElementVNode('ul', _hoisted_1$2r, [
createElementVNode('li', null, [
_hoisted_2$2c,
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(inputSettings).autoSelectAll,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(inputSettings).autoSelectAll = $event)),
class: 'cms-el-checkbox-font-size-12 regular',
},
{
default: withCtx(() => [_hoisted_3$22]),
_: 1,
},
8,
['modelValue']
),
]),
createElementVNode('li', null, [
_hoisted_4$1K,
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(inputSettings).keyboard.enabled,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(inputSettings).keyboard.enabled = $event)),
class: 'cms-el-checkbox-font-size-12 regular',
onChange:
_cache[2] ||
(_cache[2] = (val2) =>
(unref(inputSettings).keyboard.enterClose = val2)),
},
{
default: withCtx(() => [_hoisted_5$1C]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(inputSettings).keyboard.enterClose,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(inputSettings).keyboard.enterClose = $event)),
class: 'cms-el-checkbox-font-size-12 regular',
disabled: !unref(inputSettings).keyboard.enabled,
},
{
default: withCtx(() => [_hoisted_6$1s]),
_: 1,
},
8,
['modelValue', 'disabled']
),
]),
]),
]),
_: 1,
}
)
)
}
},
})
var InputSettings = /* @__PURE__ */ _export_sfc(_sfc_main$2C, [
['__scopeId', 'data-v-6ea00d23'],
])
var InputSettings$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: InputSettings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Permission_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$2q = /* @__PURE__ */ createTextVNode(
' \u6743\u9650\u63A7\u5236 '
)
const _sfc_main$2B = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const props2 = __props2
const node2 = reactive(props2.node)
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
return (
openBlock(),
createBlock(SettingItem$1, null, {
default: withCtx(() => [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(node2).permission,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (unref(node2).permission = $event)),
class: 'cms-el-checkbox-font-size-12 regular',
},
{
default: withCtx(() => [_hoisted_1$2q]),
_: 1,
},
8,
['modelValue']
),
]),
_: 1,
})
)
}
},
})
var Permission = /* @__PURE__ */ _export_sfc(_sfc_main$2B, [
['__scopeId', 'data-v-2e721210'],
])
var Permission$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Permission,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var WidgetSettings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$2p = {
key: 0,
class: 'widgetSettings',
}
const _sfc_main$2A = /* @__PURE__ */ defineComponent({
setup(__props2) {
let node2 = ref()
let temp
let down = false
function mousedown() {
down = true
}
function mouseup() {
down = false
node2.value = temp
}
useEventListener('mousedown', mousedown, true)
useEventListener('mouseup', mouseup, true)
useEventListener('drop', mouseup, true)
watch$1(
() => state$6.current.nodes.map((node22) => node22.id),
function (nodeIds) {
temp = state$6.current.nodes[0]
if (state$6.current.nodes.length > 1) {
temp = void 0
}
if (!down) {
mouseup()
}
if (!nodeIds.length) {
mouseup()
}
}
)
const widgetInfo = computed(function () {
const is2 = node2.value?.is
const widgetInfo2 = widgetStore[`${is2}`]
return widgetInfo2
})
return (_ctx, _cache) => {
return node2.value
? (openBlock(),
createElementBlock('div', _hoisted_1$2p, [
(openBlock(),
createBlock(
resolveDynamicComponent(widgetInfo.value?.settingsView),
mergeProps(
{
key: node2.value.id,
node: node2.value,
props: node2.value.props,
},
node2.value.props,
{
update: (props2) =>
Object.assign(node2.value?.props || {}, props2),
onUpdate:
_cache[0] ||
(_cache[0] = (props2) =>
Object.assign(node2.value?.props || {}, props2)),
}
),
null,
16,
['node', 'props', 'update']
)),
node2.value.props?.inputSettings &&
!node2.value.props?.inputSettings?.customized
? (openBlock(),
createBlock(
InputSettings,
{
key: node2.value.id,
node: node2.value,
},
null,
8,
['node']
))
: createCommentVNode('', true),
widgetInfo.value?.permission
? (openBlock(),
createBlock(
Permission,
{
key: node2.value.id,
node: node2.value,
},
null,
8,
['node']
))
: createCommentVNode('', true),
/\/\/test/.test(node2.value.name)
? (openBlock(),
createBlock(
_sfc_main$72,
{
key: 2,
title: '\u8C03\u8BD5',
},
{
default: withCtx(() => [
createElementVNode(
'pre',
null,
toDisplayString$1(node2.value),
1
),
]),
_: 1,
}
))
: createCommentVNode('', true),
]))
: createCommentVNode('', true)
}
},
})
var WidgetSettings = /* @__PURE__ */ _export_sfc(_sfc_main$2A, [
['__scopeId', 'data-v-46069843'],
])
var WidgetSettings$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: WidgetSettings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const hoverTarget = reactive({
id: '',
name: '',
childNodes: [],
style: {},
blocks: [],
props: {},
})
let activeEventName = ref(PageManagerBlock.class)
const EVENTBLOCKTYPE = '__CMS_EVENT_BLOCK__'
function copyBlock(block) {
let copyText = JSON.stringify({
type: EVENTBLOCKTYPE,
block,
})
navigator.clipboard.writeText(copyText)
}
function parseBlock(
type4,
targetBlock,
eventCategory = CanvasNodeBlock.class,
targetIndex = 0,
parentBlock,
eventBlock
) {
navigator.clipboard
?.readText()
.then((readText) => {
const parseText = JSON.parse(readText)
if (!(parseText.type === EVENTBLOCKTYPE && parseText.block)) {
return
}
const parseBlock2 = parseText.block
let newBlock = new Block(parseBlock2)
let parentBlockType = Array.isArray(parentBlock)
? OnBlock.class
: parentBlock.class
if (
type4 === 'next' &&
(targetBlock == null || targetBlock.class === OnBlock.class) &&
parentBlockType === OnBlock.class
) {
if (
eventCategory === ProjectBlock.class &&
parseBlock2.class === CallBlock.class &&
parseBlock2.object?.class === CanvasNodeBlock.class
) {
return null
}
if (parseBlock2.class === OnBlock.class) {
if (!isAvailableEvent(eventCategory, newBlock)) return null
} else {
let b2 = initBlockByCategory(eventCategory)
b2.children.push(newBlock)
newBlock = b2
newBlock.isExpand = true
}
}
let rs2 = filterAvailableBlock(
type4,
newBlock,
eventCategory,
parentBlockType,
targetBlock,
eventBlock
)
let parent2 = Array.isArray(parentBlock)
? parentBlock
: parentBlock.children
parent2.splice(targetIndex, 0, ...rs2)
})
.catch((error2) => {
console.warn(error2)
})
}
function isAvailableEvent(eventCategory, block) {
const sameEventList = [EventBlock.types.variable, EventBlock.types.broadcast]
if (
block.event.isPrivateEvent &&
eventCategory === CanvasNodeBlock.class &&
CanvasNode$1.selectedList.length
) {
let comp = CanvasNode$1.selectedList[0].is
let isHasPrivate = CanvasNodeBlock.privateConfig[comp]?.eventList.some(
(item2) => item2.type === block.event.type
)
if (!isHasPrivate) return isHasPrivate
}
return (
eventCategory === block.event.eventCategory ||
sameEventList.includes(block.event.type)
)
}
function filterAvailableBlock(
type4,
block,
eventCategory,
BlockClassType,
targetBlock,
eventBlock
) {
let newBlock = [block]
const blockType = [OnBlock.class, IfBlock.class, CallBlock.class]
let filterType = [...blockType]
if (
(targetBlock && type4 == 'next' && targetBlock.class !== OnBlock.class) ||
(targetBlock && type4 == 'into')
) {
filterType = blockType.slice(
blockType.indexOf(BlockClassType) + 1,
blockType.length
)
}
let objectBlock = ObjectBlock.getObjectBlock(eventCategory)
let supportActionType = lodash.cloneDeep(objectBlock.supportActionType)
if (eventBlock) {
supportActionType = Object.assign(
{},
supportActionType,
eventBlock.supportActionType
)
}
const destruction = (b2) => {
for (let i2 = 0; i2 < b2.length; i2++) {
let currentBlock = b2[i2]
if (!filterType.includes(currentBlock.class)) {
b2.splice(i2, 1, ...currentBlock.children)
i2--
}
if (currentBlock instanceof OnBlock) {
supportActionType = Object.assign(
{},
objectBlock.supportActionType,
objectBlock.eventList.filter(
(item2) => item2.type === currentBlock.event.detail?.type
)?.[0]?.supportActionType || {}
)
currentBlock.event.supportActionType = supportActionType
}
if (
currentBlock instanceof CallBlock &&
currentBlock.object &&
!supportActionType[currentBlock.object.class]
) {
b2.splice(i2, 1)
i2--
}
if (
currentBlock instanceof CallBlock &&
currentBlock.object?.class === CanvasNodeBlock.class &&
supportActionType.onlyOneSelf &&
currentBlock.object.id !== '' &&
currentBlock.object.id !== CanvasNode$1.selectedList[0]?.id
) {
b2.splice(i2, 1)
i2--
}
currentBlock.id = utils.createRandomId()
currentBlock.isExpand = true
if (
currentBlock instanceof CallBlock &&
currentBlock.object?.class === PageManagerBlock.class
) {
currentBlock.object.id =
app.current.project.current.page.document.body.id
}
if (
currentBlock instanceof CallBlock &&
currentBlock.object?.class === ProjectBlock.class
) {
currentBlock.object.id = app.current.project.id
}
destruction(currentBlock.children)
}
}
destruction(newBlock)
return newBlock
}
function initBlockByCategory(eventCategory) {
const obj = {
class: 'OnBlock',
}
const block = new OnBlock(obj)
if (eventCategory === PageManagerBlock.class) {
block.event.type = PageManagerBlock.eventList[0].type
block.event.name = PageManagerBlock.eventList[0].name
block.event.eventCategory = PageManagerBlock.class
} else if (eventCategory === ProjectBlock.class) {
block.event.type = ProjectBlock.eventList[0].type
block.event.name = ProjectBlock.eventList[0].name
block.event.eventCategory = ProjectBlock.class
} else if (eventCategory === CanvasNodeBlock.class) {
block.event.type = CanvasNodeBlock.eventList[0].type
block.event.name = CanvasNodeBlock.eventList[0].name
block.event.eventCategory = CanvasNodeBlock.class
}
let supportActionType = lodash.cloneDeep(
ObjectBlock.getObjectBlock(eventCategory).supportActionType
)
block.event.supportActionType = Object.assign(
supportActionType,
CanvasNodeBlock.eventList[0].supportActionType || {}
)
return block
}
const popoverStore = reactive({
show: false,
detail: {},
type: '',
triggerRef: null,
contentRef: null,
hide() {
popoverStore.show = false
},
})
const _sfc_main$2z = /* @__PURE__ */ defineComponent({
props: {
component: null,
props: {},
},
setup(__props2) {
const props2 = __props2
const AsyncCom = defineAsyncComponent(() => {
return new Promise((resolve2) => {
setTimeout(() => {
props2.component && resolve2(props2.component)
})
})
})
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
unref(AsyncCom),
normalizeProps(guardReactiveProps(props2.props)),
null,
16
)
)
}
},
})
var AsyncComponent = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$2z,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Footer_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$2o = { class: 'fold-card-footer' }
const _hoisted_2$2b = ['onClick']
const _hoisted_3$21 = ['onClick']
const _hoisted_4$1J = ['onClick']
const _hoisted_5$1B = {
class: 'dialog-content',
align: 'center',
}
const _hoisted_6$1r = { class: 'el-dialog__footer' }
const _hoisted_7$1f = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_8$17 = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$2y = /* @__PURE__ */ defineComponent({
props: {
index: null,
blocks: null,
parentBlock: null,
parent: null,
eventBlock: null,
sort: { type: Boolean },
text: null,
},
setup(__props2) {
const $props2 = __props2
const blocks2 = reactive($props2.blocks)
const parentBlock = reactive($props2.parentBlock)
const copy2 = () => {
copyBlock(blocks2)
}
const parse2 = () => {
const index2 = parentBlock.indexOf(blocks2)
parseBlock(
'next',
blocks2,
CanvasNode$1.selectedList.length > 0
? CanvasNodeBlock.class
: activeEventName.value,
index2 + 1,
$props2.parent.blocks ?? $props2.parent,
$props2.eventBlock
)
}
const sortable = (level) => {
let index2 = parentBlock.indexOf(blocks2)
let bucket = parentBlock[index2 + level]
parentBlock[index2 + level] = parentBlock[index2]
parentBlock[index2] = bucket
}
const delNodeDialog = reactive({
isShow: false,
hideDialog() {
delNodeDialog.isShow = false
},
config() {
let idx = parentBlock.findIndex((_2) => _2.id === blocks2.id)
parentBlock.splice(idx, 1)
delNodeDialog.hideDialog()
},
})
const deleteEvent = () => {
delNodeDialog.isShow = true
}
return (_ctx, _cache) => {
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', _hoisted_1$2o, [
createElementVNode(
'i',
{
class: 'iconfont icon-fuzhi',
title: '\u590D\u5236',
onClick: withModifiers(copy2, ['stop']),
'data-tooltip-show-after': '100',
},
null,
8,
_hoisted_2$2b
),
createElementVNode(
'i',
{
class: 'iconfont icon-niantie',
title: '\u7C98\u8D34',
onClick: withModifiers(parse2, ['stop']),
'data-tooltip-show-after': '100',
},
null,
8,
_hoisted_3$21
),
__props2.index !== 0 && __props2.sort
? (openBlock(),
createElementBlock('i', {
key: 0,
class: 'iconfont icon-shangyiceng sort',
onClick:
_cache[0] ||
(_cache[0] = withModifiers(
($event) => sortable(-1),
['stop']
)),
title: '\u4E0A\u79FB',
'data-tooltip-show-after': '100',
}))
: createCommentVNode('', true),
__props2.index < unref(parentBlock).length - 1 && __props2.sort
? (openBlock(),
createElementBlock('i', {
key: 1,
class: 'iconfont icon-xiayiceng sort',
onClick:
_cache[1] ||
(_cache[1] = withModifiers(
($event) => sortable(1),
['stop']
)),
title: '\u4E0B\u79FB',
'data-tooltip-show-after': '100',
}))
: createCommentVNode('', true),
createElementVNode(
'i',
{
class: 'iconfont icon-tupianshanchu delete',
onClick: withModifiers(deleteEvent, ['stop']),
title: '\u5220\u9664',
'data-tooltip-show-after': '100',
},
null,
8,
_hoisted_4$1J
),
unref(delNodeDialog).isShow
? (openBlock(),
createBlock(
_component_el_dialog,
{
key: 2,
modelValue: unref(delNodeDialog).isShow,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(delNodeDialog).isShow = $event)),
'destroy-on-close': '',
title: '\u786E\u8BA4\u5220\u9664',
width: '450px',
'append-to-body': true,
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_5$1B, [
createElementVNode(
'div',
null,
toDisplayString$1(__props2.text),
1
),
]),
createElementVNode('div', _hoisted_6$1r, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: unref(delNodeDialog).hideDialog,
},
{
default: withCtx(() => [_hoisted_7$1f]),
_: 1,
},
8,
['onClick']
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: unref(delNodeDialog).config,
},
{
default: withCtx(() => [_hoisted_8$17]),
_: 1,
},
8,
['onClick']
),
]),
]),
_: 1,
},
8,
['modelValue']
))
: createCommentVNode('', true),
])
)
}
},
})
var Footer = /* @__PURE__ */ _export_sfc(_sfc_main$2y, [
['__scopeId', 'data-v-5e81bade'],
])
var Footer$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Footer,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ExpConfigDialog_vue_vue_type_style_index_0_scoped_true_lang$1 = ''
const _sfc_main$2x = /* @__PURE__ */ defineComponent({
props: {
expressionConfig: null,
parentBlocks: null,
dialogConfirm: { type: Function, default: () => {} },
dialogClose: { type: Function, default: () => {} },
},
emits: ['change'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
let parentBlocks = reactive($props2.parentBlocks)
const detailList = computed(() => {
let selectNode2 = CanvasNode$1.selectedList[0] || null
if (!selectNode2) return []
let eventList = CanvasNodeBlock.privateConfig[selectNode2.is]?.eventList
let type4 = parentBlocks.event.type.replace(/^./, ($2) =>
$2.toLowerCase()
)
let filterBlock = eventList?.filter(
(item2) =>
item2.type === type4 || item2.type === parentBlocks.event.type
)
let eventBlockDetail = filterBlock?.[0]?.arguments || []
let normalEventBlockDetail =
CanvasNodeBlock.eventList.filter(
(item2) =>
item2.type === type4 || item2.type === parentBlocks.event.type
)?.[0]?.arguments || []
if (!Array.isArray(normalEventBlockDetail)) {
normalEventBlockDetail = []
}
return [...eventBlockDetail, ...normalEventBlockDetail]
})
const expressionConfig = reactive($props2.expressionConfig)
const confirm2 = (code2) => {
if (code2 === '') {
toast('\u8868\u8FBE\u5F0F\u4E0D\u80FD\u4E3A\u7A7A', 'error')
return
}
expressionConfig.visible = false
emit2('change', code2)
$props2.dialogConfirm(code2)
}
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
FormulaConfigDialog$2,
{
key: unref(detailList).length,
modelValue: unref(expressionConfig).visible,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(expressionConfig).visible = $event)),
code: unref(expressionConfig).code,
mergeVariableList: unref(detailList),
confirmAutoClose: false,
onChange: confirm2,
onClose: $props2.dialogClose,
},
null,
8,
['modelValue', 'code', 'mergeVariableList', 'onClose']
)
)
}
},
})
var ExpConfigDialog$2 = /* @__PURE__ */ _export_sfc(_sfc_main$2x, [
['__scopeId', 'data-v-129b9d54'],
])
var ExpConfigDialog$3 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ExpConfigDialog$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ExpConfigDialog_vue_vue_type_style_index_0_scoped_true_lang = ''
const _sfc_main$2w = /* @__PURE__ */ defineComponent({
props: {
arg: null,
expressionConfig: null,
parentBlocks: null,
},
setup(__props2) {
const $props2 = __props2
const arg = reactive($props2.arg)
let parentBlocks = reactive($props2.parentBlocks)
const expressionConfig = reactive($props2.expressionConfig)
const confirm2 = (code2) => {
arg.expression = code2
}
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
ExpConfigDialog$2,
{
expressionConfig: unref(expressionConfig),
parentBlocks: unref(parentBlocks),
onChange: confirm2,
},
null,
8,
['expressionConfig', 'parentBlocks']
)
)
}
},
})
var ExpConfigDialog = /* @__PURE__ */ _export_sfc(_sfc_main$2w, [
['__scopeId', 'data-v-69044424'],
])
var ExpConfigDialog$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ExpConfigDialog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var style_scss_vue_type_style_index_0_src_10814ec5_scoped_true_lang = ''
var text_vue_vue_type_style_index_1_scoped_true_lang = ''
const _withScopeId$1o = (n2) => (
pushScopeId('data-v-10814ec5'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$2n = { class: 'text-argument-view' }
const _hoisted_2$2a = { class: 'arg-name' }
const _hoisted_3$20 = { class: 'flex-full input-group arg-value' }
const _hoisted_4$1I = ['title']
const _hoisted_5$1A = { class: 'unit' }
const _hoisted_6$1q = /* @__PURE__ */ _withScopeId$1o(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-bianliang1 fx' },
null,
-1
)
)
const _hoisted_7$1e = [_hoisted_6$1q]
const _sfc_main$2v = /* @__PURE__ */ defineComponent({
props: {
arguments: null,
parentBlocks: null,
},
setup(__props2) {
const $props2 = __props2
let arg = reactive($props2.arguments)
let parentBlocks = reactive($props2.parentBlocks)
const expressionConfig = reactive({
visible: false,
code: '',
})
const openExpressionConfig = () => {
expressionConfig.visible = true
expressionConfig.code = arg.expression + ''
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$2n, [
createElementVNode(
'div',
_hoisted_2$2a,
toDisplayString$1(unref(arg).name) + '\uFF1A',
1
),
createElementVNode('div', _hoisted_3$20, [
withDirectives(
createElementVNode(
'input',
{
title: unref(Variable).expTitleTip,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (unref(arg).expression = $event)),
class: 'text-input highlight-normal',
},
null,
8,
_hoisted_4$1I
),
[[vModelText, unref(arg).expression]]
),
createElementVNode(
'div',
_hoisted_5$1A,
toDisplayString$1(unref(arg).unit),
1
),
createElementVNode(
'button',
{
class: 'btn',
onClick: openExpressionConfig,
},
_hoisted_7$1e
),
]),
createVNode$1(
ExpConfigDialog,
{
arg: unref(arg),
expressionConfig: unref(expressionConfig),
parentBlocks: unref(parentBlocks),
},
null,
8,
['arg', 'expressionConfig', 'parentBlocks']
),
])
)
}
},
})
var TextArgumentView = /* @__PURE__ */ _export_sfc(_sfc_main$2v, [
['__scopeId', 'data-v-10814ec5'],
])
var text = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: TextArgumentView,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var style_scss_vue_type_style_index_0_src_135a0269_scoped_true_lang = ''
var number_vue_vue_type_style_index_1_scoped_true_lang = ''
const _withScopeId$1n = (n2) => (
pushScopeId('data-v-135a0269'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$2m = { class: 'number-argument-view' }
const _hoisted_2$29 = { class: 'arg-name' }
const _hoisted_3$1$ = { class: 'flex-full input-group arg-value' }
const _hoisted_4$1H = ['title']
const _hoisted_5$1z = { class: 'unit' }
const _hoisted_6$1p = /* @__PURE__ */ _withScopeId$1n(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-bianliang1 fx' },
null,
-1
)
)
const _hoisted_7$1d = [_hoisted_6$1p]
const _sfc_main$2u = /* @__PURE__ */ defineComponent({
props: {
arguments: null,
parentBlocks: null,
},
setup(__props2) {
const $props2 = __props2
let arg = reactive($props2.arguments)
let parentBlocks = reactive($props2.parentBlocks)
const expressionConfig = reactive({
visible: false,
code: '',
})
const openExpressionConfig = () => {
expressionConfig.visible = true
expressionConfig.code = arg.expression + ''
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$2m, [
createElementVNode(
'div',
_hoisted_2$29,
toDisplayString$1(unref(arg).name) + '\uFF1A',
1
),
createElementVNode('div', _hoisted_3$1$, [
withDirectives(
createElementVNode(
'input',
{
title: unref(Variable).expTitleTip,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (unref(arg).expression = $event)),
class: 'text-input highlight-normal',
},
null,
8,
_hoisted_4$1H
),
[[vModelText, unref(arg).expression]]
),
createElementVNode(
'div',
_hoisted_5$1z,
toDisplayString$1(unref(arg).unit),
1
),
createElementVNode(
'button',
{
class: 'btn',
onClick: openExpressionConfig,
},
_hoisted_7$1d
),
]),
createVNode$1(
ExpConfigDialog,
{
arg: unref(arg),
expressionConfig: unref(expressionConfig),
parentBlocks: unref(parentBlocks),
},
null,
8,
['arg', 'expressionConfig', 'parentBlocks']
),
])
)
}
},
})
var NumberArgumentView = /* @__PURE__ */ _export_sfc(_sfc_main$2u, [
['__scopeId', 'data-v-135a0269'],
])
var number$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: NumberArgumentView,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var style_scss_vue_type_style_index_0_src_7e953429_scoped_true_lang = ''
var date_vue_vue_type_style_index_1_scoped_true_lang = ''
const _withScopeId$1m = (n2) => (
pushScopeId('data-v-7e953429'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$2l = { class: 'date-argument-view' }
const _hoisted_2$28 = { class: 'arg-name' }
const _hoisted_3$1_ = { class: 'flex-full input-group arg-value' }
const _hoisted_4$1G = ['title']
const _hoisted_5$1y = /* @__PURE__ */ _withScopeId$1m(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-bianliang1 fx' },
null,
-1
)
)
const _hoisted_6$1o = [_hoisted_5$1y]
const _sfc_main$2t = /* @__PURE__ */ defineComponent({
props: {
arguments: null,
parentBlocks: null,
},
setup(__props2) {
const $props2 = __props2
let arg = reactive($props2.arguments)
let parentBlocks = reactive($props2.parentBlocks)
const expressionConfig = reactive({
visible: false,
code: '',
})
const openExpressionConfig = () => {
expressionConfig.visible = true
expressionConfig.code = arg.expression + ''
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$2l, [
createElementVNode(
'div',
_hoisted_2$28,
toDisplayString$1(unref(arg).name) + '\uFF1A',
1
),
createElementVNode('div', _hoisted_3$1_, [
withDirectives(
createElementVNode(
'input',
{
title: unref(Variable).expTitleTip,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (unref(arg).expression = $event)),
class: 'text-input highlight-normal',
},
null,
8,
_hoisted_4$1G
),
[[vModelText, unref(arg).expression]]
),
createElementVNode(
'button',
{
class: 'btn',
onClick: openExpressionConfig,
},
_hoisted_6$1o
),
]),
createVNode$1(
ExpConfigDialog,
{
arg: unref(arg),
expressionConfig: unref(expressionConfig),
parentBlocks: unref(parentBlocks),
},
null,
8,
['arg', 'expressionConfig', 'parentBlocks']
),
])
)
}
},
})
var DateArgumentView = /* @__PURE__ */ _export_sfc(_sfc_main$2t, [
['__scopeId', 'data-v-7e953429'],
])
var date = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: DateArgumentView,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var slide_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$2k = { class: 'slide-argument-view' }
const _hoisted_2$27 = { class: 'arg-name' }
const _hoisted_3$1Z = { class: 'flex-full arg-value' }
const _sfc_main$2s = /* @__PURE__ */ defineComponent({
props: {
arguments: null,
},
setup(__props2) {
const $props2 = __props2
let arg = reactive($props2.arguments)
const value2 = computed(() => {
return parseFloat(arg.expression)
})
const update3 = (val2) => {
arg.expression = Block.valueToCode(val2)
}
return (_ctx, _cache) => {
const _component_el_slider = resolveComponent('el-slider')
return (
openBlock(),
createElementBlock('div', _hoisted_1$2k, [
createElementVNode(
'div',
_hoisted_2$27,
toDisplayString$1(unref(arg).name) + '\uFF1A',
1
),
createElementVNode('div', _hoisted_3$1Z, [
createVNode$1(
_component_el_slider,
{
class: 'cms-el-slider-x',
'model-value': unref(value2),
'onUpdate:modelValue': update3,
min: unref(arg).min,
max: unref(arg).max,
step: unref(arg).step,
},
null,
8,
['model-value', 'min', 'max', 'step']
),
]),
])
)
}
},
})
var SliderArgumentView = /* @__PURE__ */ _export_sfc(_sfc_main$2s, [
['__scopeId', 'data-v-4667ec2b'],
])
var slide = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: SliderArgumentView,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var checkboxGroup_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$2j = { class: 'checkbox-group-argument-view' }
const _hoisted_2$26 = { class: 'arg-name' }
const _hoisted_3$1Y = { class: 'flex-full arg-value' }
const _sfc_main$2r = /* @__PURE__ */ defineComponent({
props: {
arguments: null,
},
setup(__props2) {
const $props2 = __props2
let arg = reactive($props2.arguments)
const value2 = computed(() => {
return JSON.parse(arg.expression)
})
const toggleCheck = (val2) => {
arg.expression = JSON.stringify(val2)
}
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_checkbox_group = resolveComponent('el-checkbox-group')
return (
openBlock(),
createElementBlock('div', _hoisted_1$2j, [
createElementVNode(
'div',
_hoisted_2$26,
toDisplayString$1(unref(arg).name) + '\uFF1A',
1
),
createElementVNode('div', _hoisted_3$1Y, [
createVNode$1(
_component_el_checkbox_group,
{
'model-value': unref(value2),
onChange: toggleCheck,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(arg).options, (item2) => {
return (
openBlock(),
createBlock(
_component_el_checkbox,
{
class: 'cms-el-checkbox-font-size-12',
key: item2.value,
label: item2.value,
},
{
default: withCtx(() => [
createTextVNode(toDisplayString$1(item2.name), 1),
]),
_: 2,
},
1032,
['label']
)
)
}),
128
)),
]),
_: 1,
},
8,
['model-value']
),
]),
])
)
}
},
})
var checkboxGroup = /* @__PURE__ */ _export_sfc(_sfc_main$2r, [
['__scopeId', 'data-v-73f9193e'],
])
var checkboxGroup$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: checkboxGroup,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var checkbox_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$2i = { class: 'checkbox-argument-view' }
const _hoisted_2$25 = { class: 'arg-name' }
const _hoisted_3$1X = { class: 'flex-full arg-value' }
const _sfc_main$2q = /* @__PURE__ */ defineComponent({
props: {
arguments: null,
},
setup(__props2) {
const $props2 = __props2
let arg = reactive($props2.arguments)
const value2 = computed(() => {
return JSON.parse(arg.expression)
})
const toggleCheck = (val2) => {
arg.expression = JSON.stringify(val2)
}
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
return (
openBlock(),
createElementBlock('div', _hoisted_1$2i, [
unref(arg).type !== unref(ArgumentBlock).types.Array
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
createElementVNode(
'div',
_hoisted_2$25,
toDisplayString$1(unref(arg).name) + '\uFF1A',
1
),
createElementVNode('div', _hoisted_3$1X, [
createVNode$1(
_component_el_checkbox,
{
'model-value': unref(value2),
class: 'cms-el-checkbox-font-size-12',
onChange:
_cache[0] ||
(_cache[0] = ($event) => toggleCheck($event)),
},
null,
8,
['model-value']
),
]),
],
64
))
: (openBlock(),
createBlock(
checkboxGroup,
{
key: 1,
arguments: unref(arg),
},
null,
8,
['arguments']
)),
])
)
}
},
})
var CheckboxArgumentView = /* @__PURE__ */ _export_sfc(_sfc_main$2q, [
['__scopeId', 'data-v-c3c56014'],
])
var checkbox = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: CheckboxArgumentView,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var radio_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$2h = { class: 'radio-argument-view' }
const _hoisted_2$24 = { class: 'arg-name' }
const _hoisted_3$1W = { class: 'flex-full arg-value' }
const _sfc_main$2p = /* @__PURE__ */ defineComponent({
props: {
arguments: null,
},
setup(__props2) {
const $props2 = __props2
let arg = reactive($props2.arguments)
return (_ctx, _cache) => {
const _component_el_radio = resolveComponent('el-radio')
const _component_el_radio_group = resolveComponent('el-radio-group')
return (
openBlock(),
createElementBlock('div', _hoisted_1$2h, [
createElementVNode(
'div',
_hoisted_2$24,
toDisplayString$1(unref(arg).name) + '\uFF1A',
1
),
createElementVNode('div', _hoisted_3$1W, [
createVNode$1(
_component_el_radio_group,
{
modelValue: unref(arg).expression,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (unref(arg).expression = $event)),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(arg).options, (item2) => {
return (
openBlock(),
createBlock(
_component_el_radio,
{
class: 'cms-el-radio',
key: item2?.expression,
label: item2?.expression,
},
{
default: withCtx(() => [
createTextVNode(toDisplayString$1(item2.name), 1),
]),
_: 2,
},
1032,
['label']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
])
)
}
},
})
var RadioArgumentView = /* @__PURE__ */ _export_sfc(_sfc_main$2p, [
['__scopeId', 'data-v-3d48ed98'],
])
var radio = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: RadioArgumentView,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var style_scss_vue_type_style_index_0_src_b106a37a_scoped_true_lang = ''
var select_vue_vue_type_style_index_1_scoped_true_lang = ''
const _hoisted_1$2g = { class: 'select-argument-view' }
const _hoisted_2$23 = { class: 'arg-name' }
const _hoisted_3$1V = { class: 'flex-full arg-value' }
const _sfc_main$2o = /* @__PURE__ */ defineComponent({
props: {
arguments: null,
callBlock: null,
},
setup(__props2) {
const $props2 = __props2
let arg = reactive($props2.arguments)
let variableEvent = ref([])
watch$1(
() => CanvasNode$1.selectedList?.[0]?.blocks,
() => {
variableEvent.value = []
let { callBlock } = $props2
if ($props2.arguments.appendVariableEvent && callBlock.object?.id) {
let eventList =
CanvasNode$1.getById(
callBlock.object.id
)?.getTriggerDiyNameEventList() || []
variableEvent.value = eventList.map((e2) => {
return {
expression: `"${e2.id}"`,
value: e2.id,
name: e2.event.detail?.name || e2.event.name,
}
})
}
},
{
immediate: true,
deep: true,
}
)
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
return (
openBlock(),
createElementBlock('div', _hoisted_1$2g, [
createElementVNode(
'div',
_hoisted_2$23,
toDisplayString$1(unref(arg).name) + '\uFF1A',
1
),
createElementVNode('div', _hoisted_3$1V, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x highlight-normal',
'popper-class': 'cms-el-select__popper cms-el-select-x__popper',
modelValue: unref(arg).expression,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (unref(arg).expression = $event)),
filterable: '',
placeholder: '\u8BF7\u9009\u62E9',
persistent: '',
teleported: '',
'no-match-text': '\u65E0\u5339\u914D\u6570\u636E',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
[...unref(arg).options, ...variableEvent.value],
(item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.expression,
label: item2.name,
value: item2.expression,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
])
)
}
},
})
var SelectArgumentView = /* @__PURE__ */ _export_sfc(_sfc_main$2o, [
['__scopeId', 'data-v-b106a37a'],
])
var select = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: SelectArgumentView,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var color_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$2f = { class: 'color-argument-view' }
const _hoisted_2$22 = { class: 'arg-name' }
const _hoisted_3$1U = { class: 'flex-full arg-value' }
const _sfc_main$2n = /* @__PURE__ */ defineComponent({
props: {
arguments: null,
},
setup(__props2) {
const $props2 = __props2
let arg = reactive($props2.arguments)
function changeData(val2) {
arg.expression = Block.valueToCode(val2)
}
return (_ctx, _cache) => {
const _component_el_color_picker = resolveComponent('el-color-picker')
return (
openBlock(),
createElementBlock('div', _hoisted_1$2f, [
createElementVNode(
'div',
_hoisted_2$22,
toDisplayString$1(unref(arg).name) + '\uFF1A',
1
),
createElementVNode('div', _hoisted_3$1U, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
'model-value': unref(Block).codeToValue(unref(arg).expression),
onActiveChange:
_cache[0] ||
(_cache[0] = (e2) =>
unref(isMouseOnElPopper)() && changeData(e2)),
},
null,
8,
['predefine', 'model-value']
),
]),
])
)
}
},
})
var ColorArgumentView = /* @__PURE__ */ _export_sfc(_sfc_main$2n, [
['__scopeId', 'data-v-424f17a8'],
])
var color = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ColorArgumentView,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var image_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$1l = (n2) => (
pushScopeId('data-v-09c2a3be'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$2e = { class: 'image-argument-view' }
const _hoisted_2$21 = { class: 'arg-name' }
const _hoisted_3$1T = { class: 'flex-full arg-value' }
const _hoisted_4$1F = { class: 'img-card' }
const _hoisted_5$1x = {
key: 0,
class: 'iconfont',
'aria-hidden': 'true',
}
const _hoisted_6$1n = /* @__PURE__ */ _withScopeId$1l(() =>
/* @__PURE__ */ createElementVNode(
'use',
{ 'xlink:href': '#icon-morentupian' },
null,
-1
)
)
const _hoisted_7$1c = [_hoisted_6$1n]
const _hoisted_8$16 = {
key: 1,
class: 'img-group',
}
const _hoisted_9$13 = ['src']
const _hoisted_10$11 = { class: 'img-icon' }
const _sfc_main$2m = /* @__PURE__ */ defineComponent({
props: {
arguments: null,
},
setup(__props2) {
const $props2 = __props2
const visible = ref(false)
let arg = reactive($props2.arguments)
const IMG_BASE_URL = request.defaults.baseURL + `/api/v1/view/image/`
function changeImg(imgUrl) {
arg.expression = Block.valueToCode(imgUrl)
}
return (_ctx, _cache) => {
const _component_el_popover = resolveComponent('el-popover')
return (
openBlock(),
createElementBlock('div', _hoisted_1$2e, [
createElementVNode(
'div',
_hoisted_2$21,
toDisplayString$1(unref(arg).name) + '\uFF1A',
1
),
createElementVNode('div', _hoisted_3$1T, [
createVNode$1(
_component_el_popover,
{
ref: 'popoverRef',
'popper-class': 'cms-event-popover',
placement: 'left',
width: 388,
trigger: 'click',
'hide-after': 0,
offset: 80,
'show-arrow': false,
teleported: '',
persistent: '',
onBeforeEnter:
_cache[1] || (_cache[1] = ($event) => (visible.value = true)),
onBeforeLeave:
_cache[2] ||
(_cache[2] = ($event) => (visible.value = false)),
},
{
reference: withCtx(() => [
createElementVNode('div', _hoisted_4$1F, [
!unref(Block).codeToValue(unref(arg).expression)
? (openBlock(),
createElementBlock('svg', _hoisted_5$1x, _hoisted_7$1c))
: (openBlock(),
createElementBlock('div', _hoisted_8$16, [
createElementVNode(
'img',
{
src:
IMG_BASE_URL +
unref(Block).codeToValue(
unref(arg).expression
) +
`?project=${unref(Session).get('X-Project')}`,
},
null,
8,
_hoisted_9$13
),
createElementVNode('div', _hoisted_10$11, [
createElementVNode('span', {
class: 'iconfont icon-qingchu',
onClick:
_cache[0] ||
(_cache[0] = withModifiers(
($event) => changeImg(''),
['stop']
)),
}),
]),
])),
]),
]),
default: withCtx(() => [
visible.value
? (openBlock(),
createBlock(GalleryMaterial$2, {
draggable: false,
activeIndex: 1,
onImgTrigger: changeImg,
key: new Date().getTime(),
}))
: createCommentVNode('', true),
]),
_: 1,
},
512
),
]),
])
)
}
},
})
var ImageArgumentView = /* @__PURE__ */ _export_sfc(_sfc_main$2m, [
['__scopeId', 'data-v-09c2a3be'],
])
var image = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ImageArgumentView,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var style_scss_vue_type_style_index_0_src_c3cbb1b0_scoped_true_lang = ''
var variableName_vue_vue_type_style_index_1_scoped_true_lang = ''
const _withScopeId$1k = (n2) => (
pushScopeId('data-v-c3cbb1b0'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$2d = { class: 'variable-name-argument-view' }
const _hoisted_2$20 = { class: 'arg-name' }
const _hoisted_3$1S = { class: 'flex-full input-group arg-value' }
const _hoisted_4$1E = ['title']
const _hoisted_5$1w = { class: 'unit' }
const _hoisted_6$1m = /* @__PURE__ */ _withScopeId$1k(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-bianliang1 fx' },
null,
-1
)
)
const _hoisted_7$1b = [_hoisted_6$1m]
const _sfc_main$2l = /* @__PURE__ */ defineComponent({
props: {
arguments: null,
parentBlocks: null,
},
setup(__props2) {
const $props2 = __props2
let arg = reactive($props2.arguments)
let parentBlocks = reactive($props2.parentBlocks)
let argProxy = new Proxy(arg, {
get(target2, key2) {
const value2 = target2[key2]
if (key2 === 'expression') {
return unwrapVariableName(value2)
}
return value2
},
set(target2, key2, value2) {
if (key2 === 'expression') {
value2 = wrapVariableName(value2)
}
target2[key2] = value2
return true
},
})
const expressionConfig = reactive({
visible: false,
code: '',
})
const openExpressionConfig = () => {
expressionConfig.visible = true
expressionConfig.code = argProxy.expression + ''
}
function wrapVariableName(text2) {
return `"${text2}"`
}
function unwrapVariableName(expression) {
return String(expression).replace(/^"|"$/g, '')
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$2d, [
createElementVNode(
'div',
_hoisted_2$20,
toDisplayString$1(unref(argProxy).name) + '\uFF1A',
1
),
createElementVNode('div', _hoisted_3$1S, [
withDirectives(
createElementVNode(
'input',
{
title: unref(Variable).expTitleTip,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(argProxy).expression = $event)),
class: 'text-input highlight-normal',
},
null,
8,
_hoisted_4$1E
),
[[vModelText, unref(argProxy).expression]]
),
createElementVNode(
'div',
_hoisted_5$1w,
toDisplayString$1(unref(argProxy).unit),
1
),
createElementVNode(
'button',
{
class: 'btn',
onClick: openExpressionConfig,
},
_hoisted_7$1b
),
]),
createVNode$1(
ExpConfigDialog,
{
arg: unref(argProxy),
expressionConfig: unref(expressionConfig),
parentBlocks: unref(parentBlocks),
},
null,
8,
['arg', 'expressionConfig', 'parentBlocks']
),
])
)
}
},
})
var VariableNameArgumentView = /* @__PURE__ */ _export_sfc(_sfc_main$2l, [
['__scopeId', 'data-v-c3cbb1b0'],
])
var variableName = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: VariableNameArgumentView,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var style_scss_vue_type_style_index_0_src_58355cbc_scoped_true_lang = ''
var page_vue_vue_type_style_index_1_scoped_true_lang = ''
const _hoisted_1$2c = { class: 'page-argument-view' }
const _hoisted_2$1$ = { class: 'arg-name' }
const _hoisted_3$1R = { class: 'flex-full arg-value' }
const _sfc_main$2k = /* @__PURE__ */ defineComponent({
props: {
arguments: null,
},
setup(__props2) {
const $props2 = __props2
let arg = reactive($props2.arguments)
function getPageList(list2) {
let pageList = []
const getList = (list22) => {
list22.forEach((item2) => {
if (item2.type == 1) {
pageList.push({ name: item2.name, value: item2.id })
}
if (item2.children.length > 0) {
getList(item2.children)
}
})
}
getList(list2)
return pageList
}
onMounted(async () => {
arg.options = []
const rs2 = app.current.project.pageList
const formateOptions = getPageList(rs2)
arg.options.push(...formateOptions)
arg.expression =
arg.expression === '""' ? formateOptions[0]?.value : arg.expression
})
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
return (
openBlock(),
createElementBlock('div', _hoisted_1$2c, [
createElementVNode(
'div',
_hoisted_2$1$,
toDisplayString$1(unref(arg).name),
1
),
createElementVNode('div', _hoisted_3$1R, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x highlight-normal',
'popper-class': 'cms-el-select__popper cms-el-select-x__popper',
modelValue: unref(arg).expression,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (unref(arg).expression = $event)),
filterable: '',
placeholder: '\u8BF7\u9009\u62E9',
'no-match-text': '\u65E0\u5339\u914D\u6570\u636E',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(arg).options, (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.name,
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
])
)
}
},
})
var PageArgumentView = /* @__PURE__ */ _export_sfc(_sfc_main$2k, [
['__scopeId', 'data-v-58355cbc'],
])
var page = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: PageArgumentView,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var eventPopover_scss_vue_type_style_index_0_src_02a3ee24_lang = ''
var style_scss_vue_type_style_index_1_src_02a3ee24_scoped_true_lang = ''
var charts_vue_vue_type_style_index_2_scoped_true_lang = ''
const _hoisted_1$2b = { class: 'page-argument-view' }
const _hoisted_2$1_ = { class: 'arg-name' }
const _hoisted_3$1Q = { class: 'flex-full arg-value' }
const _hoisted_4$1D = { class: 'highlight-normal' }
const _hoisted_5$1v = {
key: 1,
style: { color: '#606162 !important' },
}
const _hoisted_6$1l = { class: 'tab-content' }
const _hoisted_7$1a = { class: 'event-list-tab' }
const _hoisted_8$15 = { class: 'tab-content' }
const _hoisted_9$12 = { class: 'custom-tree-node' }
const _hoisted_10$10 = { class: 'highlight-normal' }
const _hoisted_11$V = {
key: 1,
style: { color: '#606162 !important' },
}
const _hoisted_12$S = { class: 'tab-content' }
const _hoisted_13$L = { class: 'event-list-tab' }
const _hoisted_14$G = { class: 'tab-content' }
const _hoisted_15$E = { class: 'custom-tree-node' }
const _sfc_main$2j = /* @__PURE__ */ defineComponent({
props: {
arguments: null,
},
setup(__props2) {
const $props2 = __props2
let arg = reactive($props2.arguments)
onMounted(() => {
if (typeof JSON.parse(arg.expression) === 'string') {
arg.expression = Block.valueToCode({
page: app.current.project.current.page,
component: [],
})
}
})
const treeRef = ref()
let filterText = ref('')
treeRef.value && treeRef.value.filter(filterText.value)
let filterPages = ref('')
let pageTreeRef = ref()
pageTreeRef.value && pageTreeRef.value.filter(filterPages.value)
watch$1(
() => filterPages.value,
(val2) => {
nextTick(() => {
pageTreeRef.value && pageTreeRef.value.filter(val2)
})
},
{
immediate: true,
}
)
let currentComponents = ref([])
const popoverRef = ref()
const popoverRef2 = ref()
let checkedKeys = ref([])
const forInComp = (list2) => {
list2.forEach((node2) => {
if (/^Chart/.test(node2.is)) {
currentComponents.value.push(node2)
}
if (node2.childNodes) {
forInComp(node2.childNodes)
}
})
}
const getComponents = (id2) => {
request({
url: `/api/v1/view/content/${id2}`,
method: 'get',
}).then((res) => {
if (res) {
currentComponents.value = []
res.content && forInComp(JSON.parse(res.content).body.childNodes)
}
})
}
watch$1(
() => filterText.value,
(val2) => {
nextTick(() => {
treeRef.value && treeRef.value.filter(val2)
})
},
{
immediate: true,
}
)
let selectedObj = computed(() => {
let argObj = { page: { name: '' }, component: [] }
let parseExp = JSON.parse(arg.expression)
argObj = parseExp
argObj.page && getComponents(argObj.page.id)
checkedKeys.value = []
argObj.component?.forEach((item2) => {
checkedKeys.value.push(item2.id)
})
return argObj
})
const filterNode = (value2, data2) => {
return data2.name.includes(value2)
}
const setEvent = (data2) => {
if (data2.type == 0) return
let newExp = Block.codeToValue(arg.expression)
newExp.page = {
id: data2.id,
name: data2.name,
type: data2.type,
}
arg.expression = Block.valueToCode(newExp)
getComponents(data2.id)
popoverRef.value.hide()
}
const checkComponents = (data2, checked2) => {
let newExp = JSON.parse(arg.expression)
let comp = []
checked2.checkedNodes.forEach((item2) => {
comp.push({
id: item2.id,
name: item2.name,
})
})
newExp.component = comp
arg.expression = JSON.stringify(newExp)
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_tree = resolveComponent('el-tree')
const _component_el_popover = resolveComponent('el-popover')
return (
openBlock(),
createElementBlock('div', _hoisted_1$2b, [
createElementVNode(
'div',
_hoisted_2$1_,
toDisplayString$1(unref(arg).name),
1
),
createElementVNode('div', _hoisted_3$1Q, [
createVNode$1(
_component_el_popover,
{
ref_key: 'popoverRef',
ref: popoverRef,
'popper-class': 'cms-event-popover',
placement: 'bottom',
width: 200,
trigger: 'click',
'hide-after': 0,
'show-arrow': false,
persistent: '',
teleported: false,
},
{
reference: withCtx(() => [
createElementVNode('div', _hoisted_4$1D, [
unref(selectedObj).page
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
createTextVNode(
toDisplayString$1(unref(selectedObj).page?.name),
1
),
],
64
))
: (openBlock(),
createElementBlock(
'span',
_hoisted_5$1v,
'\u8BF7\u9009\u62E9\u9875\u9762'
)),
]),
]),
default: withCtx(() => [
createElementVNode('div', _hoisted_6$1l, [
createVNode$1(
_component_el_input,
{
modelValue: filterPages.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(filterPages.value = $event)),
class: 'cms-el-input-x-search',
'suffix-icon': unref(search),
},
null,
8,
['modelValue', 'suffix-icon']
),
]),
createElementVNode('div', _hoisted_7$1a, [
createElementVNode('div', _hoisted_8$15, [
createVNode$1(
_component_el_tree,
{
ref_key: 'pageTreeRef',
ref: pageTreeRef,
data: unref(app).current.project.pageList,
'node-key': 'id',
'filter-node-method': filterNode,
'default-expand-all': '',
class: 'cms-el-tree',
'highlight-current': '',
'expand-on-click-node': false,
onNodeClick: setEvent,
'current-node-key': unref(selectedObj).page?.id,
},
{
default: withCtx(({ data: data2 }) => [
createElementVNode(
'div',
_hoisted_9$12,
toDisplayString$1(data2.name),
1
),
]),
_: 1,
},
8,
['data', 'current-node-key']
),
]),
]),
]),
_: 1,
},
512
),
createVNode$1(
_component_el_popover,
{
ref_key: 'popoverRef2',
ref: popoverRef2,
'popper-class': 'cms-event-popover',
placement: 'bottom',
width: 200,
trigger: 'click',
'hide-after': 0,
'show-arrow': false,
teleported: false,
},
{
reference: withCtx(() => [
createElementVNode('div', _hoisted_10$10, [
unref(selectedObj).component?.length > 0
? (openBlock(true),
createElementBlock(
Fragment,
{ key: 0 },
renderList(
unref(selectedObj).component,
(comp, i2) => {
return (
openBlock(),
createElementBlock(
'span',
{
key: comp.id,
},
[
createElementVNode(
'span',
null,
toDisplayString$1(comp.name),
1
),
withDirectives(
createElementVNode(
'span',
null,
'\uFF0C',
512
),
[
[
vShow,
i2 <
unref(selectedObj).component
.length -
1,
],
]
),
]
)
)
}
),
128
))
: (openBlock(),
createElementBlock(
'div',
_hoisted_11$V,
'\u8BF7\u9009\u62E9\u56FE\u8868'
)),
]),
]),
default: withCtx(() => [
createElementVNode('div', _hoisted_12$S, [
createVNode$1(
_component_el_input,
{
modelValue: filterText.value,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) => (filterText.value = $event)),
class: 'cms-el-input-x-search',
'suffix-icon': unref(search),
},
null,
8,
['modelValue', 'suffix-icon']
),
]),
createElementVNode('div', _hoisted_13$L, [
createElementVNode('div', _hoisted_14$G, [
createVNode$1(
_component_el_tree,
{
ref_key: 'treeRef',
ref: treeRef,
data: currentComponents.value,
'node-key': 'id',
'filter-node-method': filterNode,
'default-expand-all': '',
class: 'cms-el-tree',
'show-checkbox': '',
'expand-on-click-node': false,
props: { children: 'childNodes' },
'default-checked-keys': checkedKeys.value,
onCheck: checkComponents,
},
{
default: withCtx(({ data: data2 }) => [
createElementVNode(
'div',
_hoisted_15$E,
toDisplayString$1(data2.name),
1
),
]),
_: 1,
},
8,
['data', 'default-checked-keys']
),
]),
]),
]),
_: 1,
},
512
),
]),
])
)
}
},
})
var ChartsArgumentView = /* @__PURE__ */ _export_sfc(_sfc_main$2j, [
['__scopeId', 'data-v-02a3ee24'],
])
var charts = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ChartsArgumentView,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var style_scss_vue_type_style_index_0_src_8afa4056_scoped_true_lang = ''
var currentPage_vue_vue_type_style_index_1_scoped_true_lang = ''
const _hoisted_1$2a = { class: 'page-argument-view' }
const _hoisted_2$1Z = { class: 'arg-name' }
const _hoisted_3$1P = { class: 'flex-full arg-value' }
const _sfc_main$2i = /* @__PURE__ */ defineComponent({
props: {
arguments: null,
},
setup(__props2) {
const $props2 = __props2
let arg = reactive($props2.arguments)
onMounted(async () => {
const pageId = app.current.project.current.page?.id
const rs2 = await request('/api/v1/view/node')
arg.options = rs2.filter((item2) => item2.type !== 0)
arg.expression =
typeof Block.codeToValue(arg.expression) === 'string'
? Block.valueToCode(
arg.options.filter((item2) => item2.id == pageId)?.[0] ?? {}
)
: arg.expression
nextTick(() => {
let exp = Block.codeToValue(arg.expression)
if (arg.options.findIndex((item2) => item2.id == exp.id) < 0) {
toast(
`\u627E\u4E0D\u5230${arg.name}\uFF1A${exp.name}\uFF0C\u8BF7\u91CD\u65B0\u9009\u62E9\u3002`,
'warning'
)
arg.expression = Block.valueToCode({})
}
})
})
function changeValue(value2) {
arg.expression = Block.valueToCode(value2)
}
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
return (
openBlock(),
createElementBlock('div', _hoisted_1$2a, [
createElementVNode(
'div',
_hoisted_2$1Z,
toDisplayString$1(unref(arg).name),
1
),
createElementVNode('div', _hoisted_3$1P, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x highlight-normal',
'popper-class': 'cms-el-select__popper cms-el-select-x__popper',
'model-value': unref(Block).codeToValue(unref(arg).expression)
.id,
filterable: '',
placeholder: '\u8BF7\u9009\u62E9',
'no-match-text': '\u65E0\u5339\u914D\u6570\u636E',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(arg).options, (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.id,
label: item2.name,
value: item2.id || '',
onClick: ($event) => changeValue(item2),
},
null,
8,
['label', 'value', 'onClick']
)
)
}),
128
)),
]),
_: 1,
},
8,
['model-value']
),
]),
])
)
}
},
})
var CurrentPageArgumentView = /* @__PURE__ */ _export_sfc(_sfc_main$2i, [
['__scopeId', 'data-v-8afa4056'],
])
var currentPage = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: CurrentPageArgumentView,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var file_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$29 = { class: 'file-argument-view' }
const _hoisted_2$1Y = { class: 'arg-name' }
const _hoisted_3$1O = { class: 'flex-full arg-value' }
const _hoisted_4$1C = { class: 'content' }
const _hoisted_5$1u = { class: 'card' }
const _hoisted_6$1k = {
class: 'iconfont icon-audio',
'aria-hidden': 'true',
}
const _hoisted_7$19 = {
key: 0,
'xlink:href': '#icon-yinpin1',
}
const _hoisted_8$14 = {
key: 1,
'xlink:href': '#icon-yinpin',
}
const _hoisted_9$11 = {
key: 0,
class: 'del-bar',
}
const _hoisted_10$$ = ['onClick']
const _hoisted_11$U = {
key: 0,
class: 'name',
}
const _sfc_main$2h = /* @__PURE__ */ defineComponent({
props: {
arguments: null,
},
setup(__props2) {
const $props2 = __props2
let arg = reactive($props2.arguments)
let fileUrl = computed(() => Block.codeToValue(arg.expression))
let fileName = ref('')
function changeFile(url2, name2) {
arg.expression = Block.valueToCode(url2)
fileName.value = name2
}
const MAX_SIZE = 5 * 1024 * 1024
const upload2 = async (info) => {
const file2 = info.file
const size = file2.size
if (size > MAX_SIZE) {
toast(
`${file2.name}\u6587\u4EF6\u5927\u5C0F\u8D855M\uFF0C\u4E0A\u4F20\u5931\u8D25`,
'error'
)
return
}
const fileData = new FormData()
fileData.append('formFile', file2)
fileData.append('fn', file2.name)
fileData.append('type', '1')
const { imageKey, fn: fn2 } = await request.post(
`/api/v1/view/resource?type=1&fn=${file2.name}`,
fileData
)
changeFile(imageKey, fn2)
}
const del = async () => {
await request.delete(`/api/v1/view/resource/${fileUrl.value}`)
changeFile('', '')
}
const getFileName = (fileUrl2) => {
return request.get(`/api/v1/view/resource/name/${fileUrl2}`)
}
onMounted(async () => {
if (fileUrl.value) {
const rs2 = await getFileName(fileUrl.value)
fileName.value = rs2
}
})
return (_ctx, _cache) => {
const _component_el_upload = resolveComponent('el-upload')
return (
openBlock(),
createElementBlock('div', _hoisted_1$29, [
createElementVNode(
'div',
_hoisted_2$1Y,
toDisplayString$1(unref(arg).name) + '\uFF1A',
1
),
createElementVNode('div', _hoisted_3$1O, [
createElementVNode('div', _hoisted_4$1C, [
createVNode$1(
_component_el_upload,
{
action: '#',
'show-file-list': false,
'http-request': upload2,
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_5$1u, [
(openBlock(),
createElementBlock('svg', _hoisted_6$1k, [
fileUrl.value
? (openBlock(),
createElementBlock('use', _hoisted_7$19))
: (openBlock(),
createElementBlock('use', _hoisted_8$14)),
])),
fileUrl.value
? (openBlock(),
createElementBlock('div', _hoisted_9$11, [
createElementVNode(
'i',
{
class: 'iconfont icon-qingchu',
onClick: withModifiers(del, ['stop']),
},
null,
8,
_hoisted_10$$
),
]))
: createCommentVNode('', true),
]),
]),
_: 1,
}
),
fileUrl.value
? (openBlock(),
createElementBlock('div', _hoisted_11$U, [
createVNode$1(
EllipsisTooltip,
{
width: '100%',
placement: 'bottom-start',
content: fileName.value,
},
null,
8,
['content']
),
]))
: createCommentVNode('', true),
]),
]),
])
)
}
},
})
var FileArgumentView = /* @__PURE__ */ _export_sfc(_sfc_main$2h, [
['__scopeId', 'data-v-72e0c74a'],
])
var file = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: FileArgumentView,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var style_scss_vue_type_style_index_0_src_36a6634c_scoped_true_lang = ''
var ActionSetting_vue_vue_type_style_index_1_scoped_true_lang = ''
const _withScopeId$1j = (n2) => (
pushScopeId('data-v-36a6634c'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$28 = { class: 'header-tittle' }
const _hoisted_2$1X = /* @__PURE__ */ _withScopeId$1j(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u76EE\u6807\uFF1A', -1)
)
const _hoisted_3$1N = ['onClick']
const _hoisted_4$1B = /* @__PURE__ */ _withScopeId$1j(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u52A8\u4F5C\uFF1A', -1)
)
const _hoisted_5$1t = ['onClick']
const _hoisted_6$1j = {
key: 0,
class: 'division',
}
const _sfc_main$2g = /* @__PURE__ */ defineComponent({
props: {
block: null,
parentBlock: null,
onBlock: null,
eventBlock: null,
index: null,
type: null,
},
setup(__props2) {
const $props2 = __props2
let hoverNode = reactive(hoverTarget)
const callBlock = reactive($props2.block)
const parentBlock = reactive($props2.parentBlock)
const togglePane = () => {
callBlock.isExpand = !callBlock.isExpand
}
const triggerRef2 = ref()
function showPopover() {
popoverStore.show = true
popoverStore.detail = {
props: $props2,
node: callBlock,
eventBlock: $props2.onBlock,
type: $props2.type,
}
popoverStore.triggerRef = triggerRef2.value
popoverStore.type = 'ActionTarget'
}
const actionTriggerRef = ref()
function showActionPopover() {
popoverStore.show = true
popoverStore.detail = {
props: $props2,
callBlock,
type: $props2.type,
}
popoverStore.triggerRef = actionTriggerRef.value
popoverStore.type = 'Action'
}
const getTargetName = computed(() => {
let name2 = ''
const nodeObj = callBlock.object
if (!nodeObj) return '\u70B9\u51FB\u9009\u62E9\u76EE\u6807'
if (nodeObj.class == CanvasNodeBlock.class) {
name2 =
ObjectBlock.findModel(CanvasNodeBlock.class, nodeObj.id)?.name || ''
} else if (nodeObj.class == PageManagerBlock.class) {
name2 = '\u9875\u9762\u63A7\u5236\u5668'
} else if (nodeObj.class == ProjectBlock.class) {
name2 = '\u7CFB\u7EDF\u63A7\u5236\u5668'
}
return name2 || '\u70B9\u51FB\u9009\u62E9\u76EE\u6807'
})
const getArgumentView = function (arg) {
let View2 = {
[ArgumentBlock.views.text]: TextArgumentView,
[ArgumentBlock.views.number]: NumberArgumentView,
[ArgumentBlock.views.date]: DateArgumentView,
[ArgumentBlock.views.slide]: SliderArgumentView,
[ArgumentBlock.views.switch]: CheckboxArgumentView,
[ArgumentBlock.views.radio]: RadioArgumentView,
[ArgumentBlock.views.checkbox]: CheckboxArgumentView,
[ArgumentBlock.views.select]: SelectArgumentView,
[ArgumentBlock.views.color]: ColorArgumentView,
[ArgumentBlock.views.image]: ImageArgumentView,
[ArgumentBlock.views.variableName]: VariableNameArgumentView,
[ArgumentBlock.views.page]: PageArgumentView,
[ArgumentBlock.views.currentPage]: CurrentPageArgumentView,
[ArgumentBlock.views.charts]: ChartsArgumentView,
[ArgumentBlock.views.file]: FileArgumentView,
}[arg.view]
if (!View2) {
console.warn(
`\u53C2\u6570\u89C6\u56FE ${arg.view} \u4E0D\u5B58\u5728`,
arg
)
View2 = TextArgumentView
}
return View2
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'argumentBlock-item fold-card',
{
'fold-card-close': !unref(callBlock).isExpand,
'fold-card-hover': unref(hoverNode).id === unref(callBlock).id,
},
]),
onMouseover:
_cache[0] ||
(_cache[0] = withModifiers(
($event) => (unref(hoverNode).id = unref(callBlock).id),
['stop']
)),
},
[
createElementVNode(
'div',
{
class: 'fold-card-header',
ref_key: 'triggerRef',
ref: triggerRef2,
},
[
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont icon-xia expand',
{ 'is-expand': unref(callBlock).isExpand },
]),
onClick: togglePane,
},
null,
2
),
createElementVNode('div', _hoisted_1$28, [
_hoisted_2$1X,
createElementVNode(
'span',
{
class: 'highlight-normal',
onClick: withModifiers(showPopover, ['stop']),
},
toDisplayString$1(unref(getTargetName)),
9,
_hoisted_3$1N
),
]),
],
512
),
withDirectives(
createElementVNode(
'div',
{
class: normalizeClass([
'fold-card-content',
{ 'is-open': unref(callBlock).isExpand },
]),
},
[
createElementVNode(
'div',
{
ref_key: 'actionTriggerRef',
ref: actionTriggerRef,
},
[
_hoisted_4$1B,
createElementVNode(
'span',
{
class: normalizeClass([
'highlight-normal',
{ disabled: !unref(callBlock).object },
]),
onClick: withModifiers(showActionPopover, ['stop']),
},
toDisplayString$1(
unref(callBlock).name ||
'\u70B9\u51FB\u9009\u62E9\u52A8\u4F5C'
),
11,
_hoisted_5$1t
),
],
512
),
unref(callBlock).arguments &&
unref(callBlock).arguments.length
? (openBlock(), createElementBlock('div', _hoisted_6$1j))
: createCommentVNode('', true),
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(callBlock).arguments, (arg) => {
return (
openBlock(),
createBlock(
_sfc_main$2z,
{
component: getArgumentView(arg),
key: arg.id,
props: {
callBlock: unref(callBlock),
parentBlocks: __props2.onBlock,
arguments: arg,
},
},
null,
8,
['component', 'props']
)
)
}),
128
)),
],
2
),
[[vShow, unref(callBlock).isExpand]]
),
createVNode$1(
_sfc_main$2z,
{
component: Footer,
props: {
index: __props2.index,
blocks: unref(callBlock),
type: $props2.type,
parentBlock: unref(parentBlock).children,
parent: unref(parentBlock),
eventBlock: $props2.eventBlock,
sort: true,
text: '\u786E\u8BA4\u540E\uFF0C\u4ECE\u5217\u8868\u4E2D\u5220\u9664\u8BE5\u52A8\u4F5C\u3002',
},
},
null,
8,
['props']
),
],
34
)
)
}
},
})
var ActionSetting = /* @__PURE__ */ _export_sfc(_sfc_main$2g, [
['__scopeId', 'data-v-36a6634c'],
])
var ActionSetting$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ActionSetting,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const createDialog = (component2, options2 = {}) => {
const mountNode = document.createElement('div')
function close2() {
Instance.unmount()
document.body.removeChild(mountNode)
}
const Instance = createApp$1(component2, {
visible: true,
...options2,
dialogClose: close2,
dialogConfirm: (code2) => {
options2.dialogConfirm?.(code2)
close2()
},
})
document.body.appendChild(mountNode)
Instance.config.globalProperties.t = Language$1.t
Instance.config.globalProperties._t = Language$1._t
Instance.use(useTable).use(installer).mount(mountNode)
return Instance
}
function openDialog(component2, arg) {
return new Promise((resolve2) => {
createDialog(component2, {
...arg,
dialogConfirm(code2) {
resolve2(code2)
},
})
})
}
var style_scss_vue_type_style_index_0_src_58228a76_scoped_true_lang = ''
var ConditionSetting_vue_vue_type_style_index_1_scoped_true_lang = ''
const _withScopeId$1i = (n2) => (
pushScopeId('data-v-58228a76'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$27 = { class: 'fold-card-header' }
const _hoisted_2$1W = ['onClick']
const _hoisted_3$1M = { class: 'header-tittle' }
const _hoisted_4$1A = /* @__PURE__ */ createTextVNode(' \u5982\u679C ')
const _hoisted_5$1s = ['onClick']
const _hoisted_6$1i = /* @__PURE__ */ _withScopeId$1i(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-fuzhi' },
null,
-1
)
)
const _hoisted_7$18 = /* @__PURE__ */ createTextVNode(
'\u70B9\u51FB\u7C98\u8D34 '
)
const _hoisted_8$13 = [_hoisted_6$1i, _hoisted_7$18]
const _hoisted_9$10 = { class: 'online' }
const _hoisted_10$_ = ['onClick']
const _hoisted_11$T = /* @__PURE__ */ _withScopeId$1i(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-xinjian' },
null,
-1
)
)
const _hoisted_12$R = /* @__PURE__ */ createTextVNode('\u52A8\u4F5C')
const _hoisted_13$K = [_hoisted_11$T, _hoisted_12$R]
const _sfc_main$2f = /* @__PURE__ */ defineComponent({
props: {
block: null,
parentBlock: null,
onBlock: null,
eventBlock: null,
index: null,
type: null,
},
setup(__props2) {
const $props2 = __props2
let hoverNode = reactive(hoverTarget)
const ifBlock = reactive($props2.block)
const parentBlock = reactive($props2.parentBlock)
const togglePane = () => {
ifBlock.isExpand = !ifBlock.isExpand
}
const addAction = () => {
let initMethod = ProjectBlock.methodList[0].cloneNode()
let callBlock = new CallBlock({
...initMethod,
class: CallBlock.class,
object: new ProjectBlock({
id: app.current.project.id,
}),
})
callBlock.isExpand = true
ifBlock.children.push(callBlock)
}
const openExpressionConfig = async () => {
const code2 = await openDialog(ExpConfigDialog$2, {
expressionConfig: {
visible: true,
code: ifBlock.expression,
},
parentBlocks: parentBlock,
})
ifBlock.expression = code2
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'fold-card condition-item',
{
'fold-card-close': !unref(ifBlock).isExpand,
'fold-card-hover': unref(hoverNode).id === unref(ifBlock).id,
},
]),
onMouseover:
_cache[1] ||
(_cache[1] = withModifiers(
($event) => (unref(hoverNode).id = unref(ifBlock).id),
['stop']
)),
},
[
createElementVNode('div', _hoisted_1$27, [
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont icon-xia expand',
{ 'is-expand': unref(ifBlock).isExpand },
]),
onClick: withModifiers(togglePane, ['stop']),
},
null,
10,
_hoisted_2$1W
),
createElementVNode('div', _hoisted_3$1M, [
_hoisted_4$1A,
createElementVNode(
'span',
{
class: 'highlight',
onClick: withModifiers(openExpressionConfig, ['stop']),
},
toDisplayString$1(unref(ifBlock).expression || ''),
9,
_hoisted_5$1s
),
]),
]),
withDirectives(
createElementVNode(
'div',
{
class: normalizeClass([
'fold-card-content',
{ 'is-open': unref(ifBlock).isExpand },
]),
},
[
unref(ifBlock).children.length === 0
? (openBlock(),
createElementBlock(
'button',
{
key: 0,
class: 'btn btn-parse',
onClick:
_cache[0] ||
(_cache[0] = ($event) =>
unref(parseBlock)(
'into',
unref(ifBlock),
$props2.type,
unref(ifBlock).children.length,
unref(ifBlock),
$props2.eventBlock
)),
},
_hoisted_8$13
))
: createCommentVNode('', true),
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(ifBlock).children, (item2, index2) => {
return (
openBlock(),
createBlock(
_sfc_main$2z,
{
component: ActionSetting,
key: item2.id,
props: {
block: item2,
parentBlock: unref(ifBlock),
onBlock: __props2.onBlock,
eventBlock: $props2.eventBlock,
index: index2,
type: $props2.type,
},
},
null,
8,
['props']
)
)
}),
128
)),
createElementVNode('div', _hoisted_9$10, [
createElementVNode(
'span',
{
class: 'btn',
onClick: withModifiers(addAction, ['stop']),
},
_hoisted_13$K,
8,
_hoisted_10$_
),
]),
],
2
),
[[vShow, unref(ifBlock).isExpand]]
),
createVNode$1(
_sfc_main$2z,
{
component: Footer,
props: {
index: __props2.index,
blocks: unref(ifBlock),
type: $props2.type,
parentBlock: unref(parentBlock).children,
eventBlock: $props2.eventBlock,
parent: unref(parentBlock),
sort: true,
text: '\u786E\u8BA4\u540E\uFF0C\u4ECE\u5217\u8868\u4E2D\u5220\u9664\u8BE5\u6761\u4EF6\u3002',
},
},
null,
8,
['props']
),
],
34
)
)
}
},
})
var ConditionSetting = /* @__PURE__ */ _export_sfc(_sfc_main$2f, [
['__scopeId', 'data-v-58228a76'],
])
var ConditionSetting$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ConditionSetting,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var style_scss_vue_type_style_index_0_src_f0e4d056_scoped_true_lang = ''
const _withScopeId$1h = (n2) => (
pushScopeId('data-v-f0e4d056'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$26 = { class: 'fold-card-header' }
const _hoisted_2$1V = /* @__PURE__ */ createTextVNode(' \u5F53 ')
const _hoisted_3$1L = ['title', 'onClick']
const _hoisted_4$1z = /* @__PURE__ */ createTextVNode(' \u65F6 ')
const _hoisted_5$1r = ['title']
const _hoisted_6$1h = /* @__PURE__ */ _withScopeId$1h(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-fuzhi' },
null,
-1
)
)
const _hoisted_7$17 = /* @__PURE__ */ createTextVNode(
'\u70B9\u51FB\u7C98\u8D34 '
)
const _hoisted_8$12 = [_hoisted_6$1h, _hoisted_7$17]
const _hoisted_9$$ = { class: 'online' }
const _hoisted_10$Z = ['onClick']
const _hoisted_11$S = /* @__PURE__ */ _withScopeId$1h(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-xinjian' },
null,
-1
)
)
const _hoisted_12$Q = /* @__PURE__ */ createTextVNode('\u6761\u4EF6 ')
const _hoisted_13$J = [_hoisted_11$S, _hoisted_12$Q]
const _hoisted_14$F = { class: 'online' }
const _hoisted_15$D = ['onClick']
const _hoisted_16$D = /* @__PURE__ */ _withScopeId$1h(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-xinjian' },
null,
-1
)
)
const _hoisted_17$x = /* @__PURE__ */ createTextVNode('\u52A8\u4F5C')
const _hoisted_18$t = [_hoisted_16$D, _hoisted_17$x]
const __default__ = {
name: 'EventSettings',
}
const _sfc_main$2e = /* @__PURE__ */ defineComponent({
...__default__,
props: {
node: null,
onBlock: null,
type: null,
index: null,
},
setup(__props2) {
const $props2 = __props2
const AlarmSetting2 = defineAsyncComponent(() =>
Promise.resolve().then(function () {
return AlarmSetting$1
})
)
const AlarmRecoverySetting2 = defineAsyncComponent(() =>
Promise.resolve().then(function () {
return AlarmRecoverySetting$1
})
)
const TimerSetting2 = defineAsyncComponent(() =>
Promise.resolve().then(function () {
return TimerSetting$1
})
)
const VarConditionConfig2 = defineAsyncComponent(() =>
Promise.resolve().then(function () {
return VarConditionConfig$1
})
)
const ExpConfigDialog2 = defineAsyncComponent(() =>
Promise.resolve().then(function () {
return ExpConfigDialog$3
})
)
const OnBroadcastSetting2 = defineAsyncComponent(() =>
Promise.resolve().then(function () {
return OnBroadcastSetting$1
})
)
let hoverNode = reactive(hoverTarget)
let node2 = reactive($props2.node)
let onBlock = reactive($props2.onBlock)
const formulaConfirm = (code2) => {
let block = new Block({
class: 'IfBlock',
expression: code2,
})
block.isExpand = true
onBlock.children.push(block)
}
const triggerRef2 = ref()
function showPopover() {
popoverStore.show = true
popoverStore.detail = {
props: $props2,
type: onBlock.event.type,
event: onBlock,
}
popoverStore.triggerRef = triggerRef2.value
popoverStore.type = 'Event'
}
const addCondition = async () => {
const code2 = await openDialog(ExpConfigDialog2, {
expressionConfig: {
visible: true,
code: '',
},
parentBlocks: onBlock,
})
formulaConfirm(code2)
}
const addAction = () => {
let initMethod = ProjectBlock.methodList[0].cloneNode()
let block = new Block({
...initMethod,
class: CallBlock.class,
object: new ProjectBlock({
id: app.current.project.id,
}),
})
block.isExpand = true
onBlock.children.push(block)
}
const togglePane = () => {
onBlock.isExpand = !onBlock.isExpand
}
const config2 = reactive({
show: false,
type: '',
detail: {},
})
const configClick = async (type4) => {
config2.type = type4
config2.detail = JSON.parse(JSON.stringify(onBlock.event.detail))
config2.show = true
let detail
if (type4 === EventBlock.types.broadcast) {
detail = await openDialog(OnBroadcastSetting2, {
setting: config2,
eventBlock: onBlock.event,
})
}
if (type4 === EventBlock.types.variable) {
detail = await openDialog(VarConditionConfig2, {
conditionConfig: config2,
eventBlock: onBlock.event,
id: onBlock.id,
})
}
if (type4 === EventBlock.types.timer) {
detail = await openDialog(TimerSetting2, { timerSetting: config2 })
}
if (type4 === EventBlock.types.alarm) {
detail = await openDialog(AlarmSetting2, { setting: config2 })
}
if (type4 === EventBlock.types.alarmRecovery) {
detail = await openDialog(AlarmRecoverySetting2, { setting: config2 })
}
confirm2(detail)
}
const confirm2 = (detail) => {
onBlock.event.detail = detail
}
return (_ctx, _cache) => {
const _component_el_switch = resolveComponent('el-switch')
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'event-item fold-card',
{
'fold-card-close': !unref(onBlock).isExpand,
'fold-card-hover': unref(hoverNode).id === unref(onBlock).id,
},
]),
onMouseover:
_cache[3] ||
(_cache[3] = withModifiers(
($event) => (unref(hoverNode).id = unref(onBlock).id),
['stop']
)),
onMouseout:
_cache[4] ||
(_cache[4] = withModifiers(
($event) => (unref(hoverNode).id = ''),
['stop']
)),
},
[
createElementVNode('div', _hoisted_1$26, [
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont icon-xia expand',
{ 'is-expand': unref(onBlock).isExpand },
]),
onClick: togglePane,
},
null,
2
),
createElementVNode(
'div',
{
class: 'header-tittle',
ref_key: 'triggerRef',
ref: triggerRef2,
},
[
_hoisted_2$1V,
createElementVNode(
'span',
{
class: 'highlight',
title:
unref(onBlock).event.detail?.name ||
unref(onBlock).event.name ||
'',
onClick: withModifiers(showPopover, ['stop']),
},
toDisplayString$1(
unref(onBlock).event.detail?.name ||
unref(onBlock).event.name ||
''
),
9,
_hoisted_3$1L
),
_hoisted_4$1z,
unref(onBlock).event.hasConfig
? (openBlock(),
createElementBlock(
'i',
{
key: 0,
class: 'iconfont icon-shezhi setting',
onClick:
_cache[0] ||
(_cache[0] = ($event) =>
configClick(unref(onBlock).event.type)),
title: unref(onBlock).event.detail?.expression,
},
null,
8,
_hoisted_5$1r
))
: createCommentVNode('', true),
],
512
),
createVNode$1(
_component_el_switch,
{
class: 'cms-el-switch',
modelValue: unref(onBlock).isEnable,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(onBlock).isEnable = $event)),
},
null,
8,
['modelValue']
),
]),
withDirectives(
createElementVNode(
'div',
{
class: normalizeClass([
'fold-card-content',
{ 'is-open': unref(onBlock).isExpand },
]),
},
[
createElementVNode('div', null, [
unref(onBlock).children.length === 0
? (openBlock(),
createElementBlock(
'button',
{
key: 0,
class: 'btn btn-parse',
onClick:
_cache[2] ||
(_cache[2] = ($event) =>
unref(parseBlock)(
'into',
unref(onBlock),
$props2.type,
0,
unref(onBlock),
unref(onBlock).event
)),
},
_hoisted_8$12
))
: createCommentVNode('', true),
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(onBlock).children, (block, i2) => {
return (
openBlock(),
createBlock(
_sfc_main$2z,
{
component:
block.class === unref(IfBlock).class
? ConditionSetting
: ActionSetting,
key: block.id,
props: {
block,
parentBlock: unref(onBlock),
onBlock: unref(onBlock),
eventBlock: unref(onBlock).event,
index: i2,
type: __props2.type,
},
},
null,
8,
['component', 'props']
)
)
}),
128
)),
]),
createElementVNode('div', _hoisted_9$$, [
createElementVNode(
'span',
{
class: 'btn',
onClick: withModifiers(addCondition, ['stop']),
},
_hoisted_13$J,
8,
_hoisted_10$Z
),
]),
createElementVNode('div', _hoisted_14$F, [
createElementVNode(
'span',
{
class: 'btn',
onClick: withModifiers(addAction, ['stop']),
},
_hoisted_18$t,
8,
_hoisted_15$D
),
]),
],
2
),
[[vShow, unref(onBlock).isExpand]]
),
createVNode$1(
_sfc_main$2z,
{
component: Footer,
props: {
sort: true,
index: __props2.index,
type: $props2.type,
blocks: unref(onBlock),
parentBlock: unref(node2).blocks,
parent: unref(node2),
eventBlock: unref(onBlock).event,
text: '\u786E\u8BA4\u540E\uFF0C\u4ECE\u5217\u8868\u4E2D\u5220\u9664\u8BE5\u4E8B\u4EF6\u3002',
},
},
null,
8,
['props']
),
],
34
)
)
}
},
})
var EventSetting = /* @__PURE__ */ _export_sfc(_sfc_main$2e, [
['__scopeId', 'data-v-f0e4d056'],
])
var EventSettings = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: EventSetting,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Popover_vue_vue_type_style_index_0_scoped_true_lang = ''
const _sfc_main$2d = /* @__PURE__ */ defineComponent({
setup(__props2) {
const style2 = reactive({
left: 0,
top: 0,
})
function getPosition() {
if (!popoverStore.triggerRef || !popoverStore.contentRef) return
let parentPosition = popoverStore.contentRef.getBoundingClientRect()
let position2 = popoverStore.triggerRef.getBoundingClientRect()
style2.left = 0
style2.top =
position2.bottom -
parentPosition.top +
10 +
popoverStore.contentRef.scrollTop
}
watch$1(() => popoverStore, getPosition, {
immediate: true,
deep: true,
})
function hide2() {
popoverStore.hide()
}
onMounted(() => {
document.addEventListener('click', hide2)
if (popoverStore.contentRef) {
popoverStore.contentRef.addEventListener('scroll', getPosition)
}
})
onUnmounted(() => {
document.removeEventListener('click', hide2)
if (popoverStore.contentRef) {
popoverStore.contentRef.removeEventListener('scroll', getPosition)
}
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'cms-event-popover-content',
style: normalizeStyle$1({
left: unref(style2).left + 'px',
top: unref(style2).top + 'px',
}),
onClick:
_cache[0] || (_cache[0] = withModifiers(() => {}, ['stop'])),
},
[renderSlot(_ctx.$slots, 'default', {}, void 0, true)],
4
)
)
}
},
})
var Popover = /* @__PURE__ */ _export_sfc(_sfc_main$2d, [
['__scopeId', 'data-v-2da9a5b1'],
])
var Popover$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Popover,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var style_scss_vue_type_style_index_0_src_6970ea58_scoped_true_lang = ''
var EventPopover_vue_vue_type_style_index_1_scoped_true_lang = ''
const _withScopeId$1g = (n2) => (
pushScopeId('data-v-6970ea58'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$25 = { class: 'event-list-popover' }
const _hoisted_2$1U = { class: 'event-list' }
const _hoisted_3$1K = /* @__PURE__ */ _withScopeId$1g(() =>
/* @__PURE__ */ createElementVNode('div', { class: 'division' }, null, -1)
)
const _hoisted_4$1y = [_hoisted_3$1K]
const _hoisted_5$1q = ['onClick']
const _hoisted_6$1g = /* @__PURE__ */ _withScopeId$1g(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'event-list-item' },
[/* @__PURE__ */ createElementVNode('div', { class: 'division' })],
-1
)
)
const _hoisted_7$16 = ['onClick']
const _sfc_main$2c = /* @__PURE__ */ defineComponent({
setup(__props2) {
const onBlock = reactive(popoverStore.detail.event)
const node2 = reactive(popoverStore.detail.props.node)
const type4 = ref(popoverStore.detail.props.type)
let filterVal = ref('')
const eventList = computed(() => {
let eventTypeList = ObjectBlock.getObjectBlock(type4.value).eventList
return eventTypeList.filter((_2) => _2.name.indexOf(filterVal.value) >= 0)
})
const setEvent = (eventBlock, isPrivateEvent = false) => {
if (onBlock.event.type === eventBlock.type) {
popoverStore.hide()
return
}
onBlock.event.type = eventBlock.type
onBlock.event.name = eventBlock.name
onBlock.event.hasConfig = eventBlock.hasConfig
onBlock.event.detail = eventBlock.detail
onBlock.event.eventCategory = type4.value
onBlock.event.isPrivateEvent = isPrivateEvent
let objectBlock = ObjectBlock.getObjectBlock(type4.value)
let supportActionType = lodash.cloneDeep(objectBlock.supportActionType)
supportActionType = Object.assign(
supportActionType,
eventBlock.supportActionType || {}
)
onBlock.event.supportActionType = supportActionType
if (
JSON.stringify(objectBlock.supportActionType) !==
JSON.stringify(supportActionType)
) {
resetAction(onBlock, onBlock.event.supportActionType)
}
popoverStore.hide()
}
function resetAction(onBlock2, supportActionType) {
let currentNodeId = CanvasNode$1.selectedList?.[0]?.id || ''
onBlock2.children.forEach((block) => {
if (block instanceof CallBlock) {
if (!block.object) return
if (!supportActionType[block.object.class]) {
block.object = new ObjectBlock({
class: ProjectBlock.class,
id: app.current.project.id,
})
block.arguments = []
block.method = ''
block.name = ''
}
if (
supportActionType.onlyOneSelf &&
block.object.class === CanvasNodeBlock.class &&
currentNodeId !== block.object.id
) {
block.object = new ObjectBlock({
class: CanvasNodeBlock.class,
id: currentNodeId,
})
block.arguments = []
block.method = ''
block.name = ''
}
} else if (block instanceof IfBlock) {
block.children && resetAction(block, supportActionType)
}
})
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
return (
openBlock(),
createElementBlock('div', _hoisted_1$25, [
createVNode$1(
_component_el_input,
{
modelValue: filterVal.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (filterVal.value = $event)),
class: 'cms-el-input-x-search',
'suffix-icon': unref(search),
},
null,
8,
['modelValue', 'suffix-icon']
),
createElementVNode('div', _hoisted_2$1U, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(eventList), (item2, index2) => {
return (
openBlock(),
createElementBlock(
Fragment,
null,
[
item2.type === '__DIVISION__'
? (openBlock(),
createElementBlock(
'div',
{
class: 'event-list-item',
key: index2,
},
_hoisted_4$1y
))
: (openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'event-list-item',
{
active:
unref(onBlock).event.type === item2.type,
},
]),
key: item2.type,
onClick: ($event) => setEvent(item2, false),
},
[
createElementVNode(
'span',
null,
toDisplayString$1(item2.name),
1
),
],
10,
_hoisted_5$1q
)),
],
64
)
)
}),
256
)),
unref(CanvasNodeBlock).privateConfig[unref(node2).is]?.eventList
.length > 0
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
_hoisted_6$1g,
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(CanvasNodeBlock).privateConfig[unref(node2).is]
.eventList,
(item2) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'event-list-item',
{
active:
unref(onBlock).event.type === item2.type,
},
]),
key: item2.type,
onClick: ($event) => setEvent(item2, true),
},
[
createElementVNode(
'span',
null,
toDisplayString$1(item2.name),
1
),
],
10,
_hoisted_7$16
)
)
}
),
128
)),
],
64
))
: createCommentVNode('', true),
]),
])
)
}
},
})
var EventPopover = /* @__PURE__ */ _export_sfc(_sfc_main$2c, [
['__scopeId', 'data-v-6970ea58'],
])
var EventPopover$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: EventPopover,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var eventPopover_scss_vue_type_style_index_0_src_6e39bd49_lang = ''
var style_scss_vue_type_style_index_1_src_6e39bd49_scoped_true_lang = ''
var ActionTargetPopover_vue_vue_type_style_index_2_scoped_true_lang = ''
const _hoisted_1$24 = { class: 'popover-group' }
const _hoisted_2$1T = { class: 'tab' }
const _hoisted_3$1J = ['onClick']
const _hoisted_4$1x = { class: 'tab-content' }
const _hoisted_5$1p = { class: 'event-list' }
const _hoisted_6$1f = { class: 'event-list-tab' }
const _hoisted_7$15 = ['onClick']
const _hoisted_8$11 = {
key: 0,
class: 'tab-content',
}
const _hoisted_9$_ = { class: 'custom-tree-node' }
const _sfc_main$2b = /* @__PURE__ */ defineComponent({
setup(__props2) {
const node2 = reactive(popoverStore.detail.node)
let currentNode = ref(node2.object?.id)
let activeType = ref(CanvasNodeBlock.class)
let eventBlock = reactive(popoverStore.detail.eventBlock)
let tabType = computed(() => {
let tabList = []
let supportActionType = eventBlock.event.supportActionType
if (supportActionType.CanvasNodeBlock) {
tabList.push({ value: CanvasNodeBlock.class, name: '\u7EC4\u4EF6' })
}
if (supportActionType.PageManagerBlock) {
tabList.push({ value: PageManagerBlock.class, name: '\u9875\u9762' })
}
if (supportActionType.ProjectBlock) {
tabList.push({ value: ProjectBlock.class, name: '\u7CFB\u7EDF' })
}
activeType.value = node2.object?.class || tabList[0].value
return tabList
})
const changeTab = (type4) => {
activeType.value = type4
nextTick(() => {
treeRef.value && treeRef.value.filter(filterText.value)
})
}
let isExpand = ref(true)
const togglePane = () => {
isExpand.value = !isExpand.value
}
const treeRef = ref()
let filterText = ref('')
watch$1(
() => filterText.value,
(val2) => {
nextTick(() => {
treeRef.value && treeRef.value.filter(val2)
})
},
{
immediate: true,
}
)
const targetList = computed(() => {
let obj = {
current: { id: '', name: '' },
list: [],
listName: '',
}
if (activeType.value == CanvasNodeBlock.class) {
obj.current = {
name: '\u5F53\u524D\u7EC4\u4EF6',
id: CanvasNode$1.selectedList[0]?.id,
}
obj.listName = '\u7EC4\u4EF6\u5217\u8868'
if (
eventBlock.event.supportActionType.onlyOneSelf &&
popoverStore.detail.type === CanvasNodeBlock.class
) {
obj.list = []
} else {
obj.list =
app.current.project.current.page.document.body.childNodes.filter(
(node22) => node22.id !== CanvasNode$1.selectedList[0]?.id
)
}
return obj
} else if (activeType.value == PageManagerBlock.class) {
obj.current = {
name: '\u9875\u9762\u63A7\u5236\u5668',
id: app.current.project.current.page.id,
}
} else if (activeType.value == ProjectBlock.class) {
obj.current = {
name: '\u7CFB\u7EDF\u63A7\u5236\u5668',
id: app.current.project.id,
}
}
obj.listName = ''
obj.list = []
return obj
})
const filterNode = (value2, data2) => {
return data2.name.includes(value2)
}
const setEvent = (data2) => {
if (data2.type == 0) return
if (node2.object && node2.object.class !== activeType.value) {
node2.method = ''
node2.arguments = []
node2.name = ''
}
node2.object = new ObjectBlock({
class: activeType.value,
id: data2.id,
})
currentNode.value = data2.id
treeRef.value?.setCurrentKey(data2.id)
popoverStore.hide()
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
return (
openBlock(),
createElementBlock('div', _hoisted_1$24, [
createElementVNode('div', _hoisted_2$1T, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(tabType), (item2) => {
return (
openBlock(),
createElementBlock(
'div',
{
key: item2.name,
class: normalizeClass([
'tab-btn',
{ active: activeType.value === item2.value },
]),
onClick: ($event) => changeTab(item2.value),
},
toDisplayString$1(item2.name),
11,
_hoisted_3$1J
)
)
}),
128
)),
]),
createElementVNode('div', _hoisted_4$1x, [
createVNode$1(
_component_el_input,
{
modelValue: filterText.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (filterText.value = $event)),
class: 'cms-el-input-x-search',
'suffix-icon': unref(search),
},
null,
8,
['modelValue', 'suffix-icon']
),
createElementVNode('div', _hoisted_5$1p, [
unref(CanvasNode$1).selectedList[0] ||
activeType.value !== 'CanvasNodeBlock'
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass([
'event-list-item',
{
'is-current':
unref(node2).object &&
unref(node2).object.id ==
unref(targetList).current.id,
},
]),
onClick:
_cache[1] ||
(_cache[1] = ($event) =>
setEvent(unref(targetList).current)),
},
[
createElementVNode(
'span',
null,
toDisplayString$1(unref(targetList).current.name),
1
),
],
2
))
: createCommentVNode('', true),
]),
]),
createElementVNode('div', _hoisted_6$1f, [
activeType.value == 'CanvasNodeBlock' &&
!unref(eventBlock).event.supportActionType.onlyOneSelf &&
unref(eventBlock).event.supportActionType.CanvasNodeBlock
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
createElementVNode(
'div',
{
class: 'tab-header',
onClick: withModifiers(togglePane, ['stop']),
},
[
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont icon-xia expand',
{ 'is-expand': isExpand.value },
]),
},
null,
2
),
createElementVNode(
'span',
null,
toDisplayString$1(unref(targetList).listName),
1
),
],
8,
_hoisted_7$15
),
isExpand.value && unref(targetList).list.length > 0
? (openBlock(),
createElementBlock('div', _hoisted_8$11, [
(openBlock(),
createBlock(
unref(ElTree),
{
key: activeType.value,
ref_key: 'treeRef',
ref: treeRef,
data: unref(targetList).list,
'node-key': 'id',
'filter-node-method': filterNode,
'default-expand-all': '',
class: 'cms-el-tree',
'expand-on-click-node': false,
onNodeClick: setEvent,
props: {
children: 'childNodes',
class: (data2, node22) => {
return data2.id == currentNode.value
? 'active'
: ''
},
},
},
{
default: withCtx(({ data: data2 }) => [
createElementVNode(
'div',
_hoisted_9$_,
toDisplayString$1(data2.name),
1
),
]),
_: 1,
},
8,
['data', 'props']
)),
]))
: createCommentVNode('', true),
],
64
))
: createCommentVNode('', true),
]),
])
)
}
},
})
var ActionTargetPopover = /* @__PURE__ */ _export_sfc(_sfc_main$2b, [
['__scopeId', 'data-v-6e39bd49'],
])
var ActionTargetPopover$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ActionTargetPopover,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var style_scss_vue_type_style_index_0_src_3b98b10c_scoped_true_lang = ''
var ActionPopover_vue_vue_type_style_index_1_scoped_true_lang = ''
const _withScopeId$1f = (n2) => (
pushScopeId('data-v-3b98b10c'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$23 = { class: 'popover-group' }
const _hoisted_2$1S = { class: 'tab-content' }
const _hoisted_3$1I = { class: 'tab-name' }
const _hoisted_4$1w = { class: 'event-list-tab' }
const _hoisted_5$1o = ['onClick']
const _hoisted_6$1e = { class: 'tab-content' }
const _hoisted_7$14 = ['onClick']
const _hoisted_8$10 = { class: 'tab-content' }
const _hoisted_9$Z = /* @__PURE__ */ _withScopeId$1f(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'event-list-item' },
[/* @__PURE__ */ createElementVNode('div', { class: 'division' })],
-1
)
)
const _hoisted_10$Y = ['onClick']
const _sfc_main$2a = /* @__PURE__ */ defineComponent({
setup(__props2) {
const callBlock = reactive(popoverStore.detail.callBlock)
let popoverName = ref('')
let expandKey = ref([])
let filterVal = ref('')
let methodList2 = computed(() => {
let objectNode =
callBlock.object && CanvasNode$1.getById(callBlock.object.id)
if (!objectNode) {
return []
}
if (
callBlock.object?.class == CanvasNodeBlock.class &&
objectNode.is &&
CanvasNodeBlock.privateConfig[objectNode.is]
) {
return CanvasNodeBlock.privateConfig[objectNode.is].methodList
} else {
return []
}
})
let methodCatMap = computed(() => {
expandKey.value = []
if (!(callBlock.object instanceof ObjectBlock)) return {}
const ObjectBlockSubClass = callBlock.object.constructor
let list2 = ObjectBlockSubClass.methodList.filter(
(_2) => _2.name.indexOf(filterVal.value) >= 0
)
if (callBlock.object.class == CanvasNodeBlock.class) {
popoverName.value = '\u7EC4\u4EF6\u52A8\u4F5C'
} else if (callBlock.object.class == PageManagerBlock.class) {
popoverName.value = '\u753B\u9762\u52A8\u4F5C'
} else if (callBlock.object.class == ProjectBlock.class) {
popoverName.value = '\u7CFB\u7EDF\u52A8\u4F5C'
} else {
popoverName.value = ''
console.error(
`\u672A\u77E5\u52A8\u4F5C\u7C7B\u578B\uFF1A${callBlock.object.class}`
)
}
let map2 = {}
list2.forEach((method4) => {
map2[method4.type] = map2[method4.type] || []
map2[method4.type].push(method4)
})
return map2
})
const toggleExpand = (key2) => {
let idx = expandKey.value.indexOf(key2)
expandKey.value.includes(key2)
? expandKey.value.splice(idx, 1)
: expandKey.value.push(key2)
}
const setMethod = (methodBlock) => {
callBlock.method = methodBlock.method
callBlock.name = methodBlock.name
callBlock.arguments = lodash$2.exports.cloneDeep(methodBlock.arguments)
popoverStore.hide()
filterVal.value = ''
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
return (
openBlock(),
createElementBlock('div', _hoisted_1$23, [
createElementVNode('div', _hoisted_2$1S, [
createElementVNode(
'div',
_hoisted_3$1I,
toDisplayString$1(popoverName.value),
1
),
createVNode$1(
_component_el_input,
{
modelValue: filterVal.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (filterVal.value = $event)),
class: 'cms-el-input-x-search',
'suffix-icon': unref(search),
},
null,
8,
['modelValue', 'suffix-icon']
),
]),
createElementVNode('div', _hoisted_4$1w, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(Object.keys(unref(methodCatMap)), (key2) => {
return (
openBlock(),
createElementBlock('div', { key: key2 }, [
withDirectives(
createElementVNode(
'div',
{
class: 'tab-header',
onClick: ($event) => toggleExpand(key2),
},
[
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont icon-xia expand',
{
'is-expand': !expandKey.value.includes(key2),
},
]),
},
null,
2
),
createElementVNode(
'span',
null,
toDisplayString$1(key2),
1
),
],
8,
_hoisted_5$1o
),
[
[
vShow,
key2 !== 'undefined' &&
![
'\u753B\u9762\u52A8\u4F5C',
'\u7CFB\u7EDF\u52A8\u4F5C',
].includes(popoverName.value),
],
]
),
withDirectives(
createElementVNode(
'div',
_hoisted_6$1e,
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(methodCatMap)[key2],
(methodBlock) => {
return (
openBlock(),
createElementBlock(
'div',
{
key: methodBlock.method,
class: normalizeClass([
'event-list-item',
{
active:
methodBlock.method ===
unref(callBlock).method,
},
]),
onClick: ($event) =>
setMethod(methodBlock),
},
[
createElementVNode(
'span',
null,
toDisplayString$1(methodBlock.name),
1
),
],
10,
_hoisted_7$14
)
)
}
),
128
)),
],
512
),
[[vShow, !expandKey.value.includes(key2)]]
),
])
)
}),
128
)),
createElementVNode('div', _hoisted_8$10, [
unref(methodList2).length > 0
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
_hoisted_9$Z,
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(methodList2), (methodBlock) => {
return (
openBlock(),
createElementBlock(
'div',
{
key: methodBlock.method,
class: normalizeClass([
'event-list-item',
{
active:
methodBlock.method ===
unref(callBlock).method,
},
]),
onClick: ($event) => setMethod(methodBlock),
},
[
createElementVNode(
'span',
null,
toDisplayString$1(methodBlock.name),
1
),
],
10,
_hoisted_10$Y
)
)
}),
128
)),
],
64
))
: createCommentVNode('', true),
]),
]),
])
)
}
},
})
var ActionPopover = /* @__PURE__ */ _export_sfc(_sfc_main$2a, [
['__scopeId', 'data-v-3b98b10c'],
])
var ActionPopover$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ActionPopover,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Events_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$1e = (n2) => (
pushScopeId('data-v-4321ab6e'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$22 = { key: 0 }
const _hoisted_2$1R = /* @__PURE__ */ createTextVNode(
'\u9875\u9762\u4E8B\u4EF6'
)
const _hoisted_3$1H = /* @__PURE__ */ createTextVNode(
'\u5168\u5C40\u4E8B\u4EF6'
)
const _hoisted_4$1v = { class: 'btn-group' }
const _hoisted_5$1n = /* @__PURE__ */ _withScopeId$1e(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-xinjian' },
null,
-1
)
)
const _hoisted_6$1d = /* @__PURE__ */ createTextVNode(
'\u6DFB\u52A0\u4E8B\u4EF6 '
)
const _hoisted_7$13 = [_hoisted_5$1n, _hoisted_6$1d]
const _hoisted_8$$ = /* @__PURE__ */ _withScopeId$1e(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-niantie' },
null,
-1
)
)
const _hoisted_9$Y = /* @__PURE__ */ createTextVNode(
'\u7C98\u8D34\u4E8B\u4EF6 '
)
const _hoisted_10$X = [_hoisted_8$$, _hoisted_9$Y]
const _sfc_main$29 = /* @__PURE__ */ defineComponent({
setup(__props2) {
const getSelectedNodesLength = () => {
return CanvasNode$1.selectedList.length
}
const blockType = computed(() => {
return getSelectedNodesLength() === 0
? activeEventName.value
: CanvasNodeBlock.class
})
const node2 = computed(function () {
if (getSelectedNodesLength() === 1) {
return CanvasNode$1.selectedList[0]
} else if (activeEventName.value === PageManagerBlock.class) {
return app.current.project.current.page.document.body
} else if (activeEventName.value === ProjectBlock.class) {
return app.current.project
}
return { id: '' }
})
const blocks2 = computed(() => {
let onBlocks = []
if (getSelectedNodesLength() === 1) {
onBlocks = CanvasNode$1.selectedList[0].blocks
} else if (activeEventName.value === PageManagerBlock.class) {
onBlocks = app.current.project.current.page.document.body.blocks
} else if (activeEventName.value === ProjectBlock.class) {
onBlocks = app.current.project.blocks
}
return onBlocks
})
const addEvent = (type4 = CanvasNodeBlock.class) => {
const block = initBlockByCategory(type4)
block.isExpand = true
let page2 = app.current.project.current.page
if (type4 === PageManagerBlock.class) {
page2.document.body.blocks || (page2.document.body.blocks = [])
page2.document.body.blocks.push(block)
} else if (type4 === ProjectBlock.class) {
app.current.project.blocks.push(block)
} else if (type4 === CanvasNodeBlock.class) {
let currentNode = CanvasNode$1.selectedList[0]
currentNode.blocks || (currentNode.blocks = [])
currentNode.blocks.push(block)
} else {
console.error(
`\u8BE5(${type4})\u7C7B\u578B\u7684\u4E8B\u4EF6\u4E0D\u5B58\u5728`
)
}
}
return (_ctx, _cache) => {
const _component_el_radio_button = resolveComponent('el-radio-button')
const _component_el_radio_group = resolveComponent('el-radio-group')
return (
openBlock(),
createElementBlock(
'div',
{
class: 'events',
key: node2.value.id,
},
[
getSelectedNodesLength() > 1
? (openBlock(),
createElementBlock(
'span',
_hoisted_1$22,
'\u591A\u9009\u4E0D\u652F\u6301\u4E8B\u4EF6'
))
: (openBlock(),
createElementBlock(
Fragment,
{ key: 1 },
[
getSelectedNodesLength() === 0
? (openBlock(),
createBlock(
_component_el_radio_group,
{
key: 0,
class: 'cms-radio-group',
modelValue: unref(activeEventName),
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
isRef(activeEventName)
? (activeEventName.value = $event)
: null),
style: { 'margin-bottom': '20px' },
},
{
default: withCtx(() => [
createVNode$1(
_component_el_radio_button,
{
label: unref(PageManagerBlock).class,
},
{
default: withCtx(() => [_hoisted_2$1R]),
_: 1,
},
8,
['label']
),
createVNode$1(
_component_el_radio_button,
{
label: unref(ProjectBlock).class,
},
{
default: withCtx(() => [_hoisted_3$1H]),
_: 1,
},
8,
['label']
),
]),
_: 1,
},
8,
['modelValue']
))
: createCommentVNode('', true),
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(blocks2.value, (item2, index2) => {
return (
openBlock(),
createBlock(
_sfc_main$2z,
{
component: EventSetting,
key: item2.id,
props: {
node: node2.value,
type: blockType.value,
onBlock: item2,
index: index2,
},
},
null,
8,
['props']
)
)
}),
128
)),
createElementVNode('div', _hoisted_4$1v, [
createElementVNode(
'button',
{
class: 'btn flex-1',
onClick:
_cache[1] ||
(_cache[1] = ($event) => addEvent(blockType.value)),
},
_hoisted_7$13
),
createElementVNode(
'button',
{
class: 'btn flex-1',
onClick:
_cache[2] ||
(_cache[2] = ($event) =>
unref(parseBlock)(
'next',
null,
blockType.value,
blocks2.value.length,
blocks2.value,
null
)),
},
_hoisted_10$X
),
]),
],
64
)),
unref(popoverStore).show
? (openBlock(),
createBlock(
Popover,
{ key: 2 },
{
default: withCtx(() => [
unref(popoverStore).type === 'Event'
? (openBlock(), createBlock(EventPopover, { key: 0 }))
: unref(popoverStore).type === 'ActionTarget'
? (openBlock(),
createBlock(ActionTargetPopover, { key: 1 }))
: unref(popoverStore).type === 'Action'
? (openBlock(), createBlock(ActionPopover, { key: 2 }))
: createCommentVNode('', true),
]),
_: 1,
}
))
: createCommentVNode('', true),
]
)
)
}
},
})
var Events = /* @__PURE__ */ _export_sfc(_sfc_main$29, [
['__scopeId', 'data-v-4321ab6e'],
])
var Events$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Events,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Settings_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$21 = { class: 'settings' }
const _hoisted_2$1Q = { class: 'tab flex' }
const _hoisted_3$1G = /* @__PURE__ */ createTextVNode(' \u4E8B\u4EF6 ')
const _hoisted_4$1u = { class: 'btn-expand' }
const _hoisted_5$1m = { class: 'styles' }
const _hoisted_6$1c = {
key: 0,
class: 'svents',
}
const _sfc_main$28 = /* @__PURE__ */ defineComponent({
setup(__props2) {
const tabContentRef = ref()
onMounted(() => {
popoverStore.contentRef = tabContentRef.value
})
const selectAttribute = ref('style')
let key2 = computed(() => {
const key22 =
CanvasNode$1.selectedList.map((n2) => n2.id).join('') ||
app.current.project.current.page.document.body.id
return key22
})
watch$1(
() => key2.value,
() => {
if (!state$5.init) {
state$5.init = true
if (state$5.accordion) {
state$5.SettingItemModel = ''
} else {
state$5.SettingItemModel = []
}
}
}
)
let hasExpand = computed(() => {
let blocks2 = []
let name2 = activeEventName.value
if (CanvasNode$1.selectedList.length > 0) {
blocks2 = CanvasNode$1.selectedList[0].blocks
} else if (name2 === PageManagerBlock.class) {
blocks2 = app.current.project.current.page.document.body.blocks
} else if (name2 === ProjectBlock.class) {
blocks2 = app.current.project.blocks
}
return blocks2.some((item2) => item2.isExpand)
})
function toggleExpandAll(expand2) {
let node2 = new CanvasNode$1()
let name2 = activeEventName.value
if (CanvasNode$1.selectedList.length > 0) {
node2 = CanvasNode$1.selectedList[0]
} else if (name2 === PageManagerBlock.class) {
node2 = app.current.project.current.page.document.body
} else if (name2 === ProjectBlock.class) {
node2 = app.current.project
}
node2.toggleExpandAllBlock(expand2)
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$21, [
createElementVNode('div', _hoisted_2$1Q, [
createElementVNode(
'div',
{
class: normalizeClass([
'item',
selectAttribute.value === 'style' ? 'select-item' : '',
]),
onClick:
_cache[0] ||
(_cache[0] = ($event) => (selectAttribute.value = 'style')),
},
' \u6837\u5F0F ',
2
),
createElementVNode(
'div',
{
class: normalizeClass([
'item event',
selectAttribute.value === 'event' ? 'select-item' : '',
]),
onClick:
_cache[3] ||
(_cache[3] = ($event) => (selectAttribute.value = 'event')),
},
[
_hoisted_3$1G,
createElementVNode('button', _hoisted_4$1u, [
withDirectives(
createElementVNode(
'i',
{
class: 'iconfont icon-shouqifenlei',
title: '\u5168\u90E8\u6536\u8D77',
onClick:
_cache[1] ||
(_cache[1] = ($event) => toggleExpandAll(false)),
},
null,
512
),
[[vShow, hasExpand.value]]
),
withDirectives(
createElementVNode(
'i',
{
class: 'iconfont icon-zhankaifenlei',
title: '\u5168\u90E8\u5C55\u5F00',
onClick:
_cache[2] ||
(_cache[2] = ($event) => toggleExpandAll(true)),
},
null,
512
),
[[vShow, !hasExpand.value]]
),
]),
],
2
),
]),
createElementVNode(
'div',
{
class: 'tab-content',
ref_key: 'tabContentRef',
ref: tabContentRef,
},
[
withDirectives(
createElementVNode(
'div',
_hoisted_5$1m,
[
createVNode$1(Style),
withDirectives(
createVNode$1(WidgetSettings, null, null, 512),
[[vShow, unref(Language$1).isOriginal()]]
),
],
512
),
[[vShow, selectAttribute.value === 'style']]
),
selectAttribute.value === 'event'
? (openBlock(),
createElementBlock('div', _hoisted_6$1c, [
(openBlock(), createBlock(Events, { key: key2.value })),
]))
: createCommentVNode('', true),
],
512
),
])
)
}
},
})
var Settings = /* @__PURE__ */ _export_sfc(_sfc_main$28, [
['__scopeId', 'data-v-68de278c'],
])
var Settings$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Settings,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Icon_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$20 = { key: 0 }
const _hoisted_2$1P = {
key: 0,
class: 'iconfont',
'aria-hidden': 'true',
}
const _hoisted_3$1F = ['xlink:href']
const _hoisted_4$1t = ['src']
const _sfc_main$27 = /* @__PURE__ */ defineComponent({
props: {
icon: null,
},
setup(__props2) {
const props2 = __props2
const isIcon = props2.icon ? props2.icon.startsWith('icon-') : false
return (_ctx, _cache) => {
return props2.icon
? (openBlock(),
createElementBlock('div', _hoisted_1$20, [
unref(isIcon)
? (openBlock(),
createElementBlock('svg', _hoisted_2$1P, [
createElementVNode(
'use',
{
'xlink:href': `#${props2.icon}`,
},
null,
8,
_hoisted_3$1F
),
]))
: (openBlock(),
createElementBlock(
'img',
{
key: 1,
class: 'iconfont',
src: props2.icon,
},
null,
8,
_hoisted_4$1t
)),
]))
: createCommentVNode('', true)
}
},
})
var Icon = /* @__PURE__ */ _export_sfc(_sfc_main$27, [
['__scopeId', 'data-v-34efe55e'],
])
var Icon$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Icon,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var WidgetLib_vue_vue_type_style_index_0_scoped_true_lang = ''
var WidgetLib_vue_vue_type_style_index_1_scoped_true_lang = ''
const _withScopeId$1d = (n2) => (
pushScopeId('data-v-84946184'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1$ = ['onMouseenter']
const _hoisted_2$1O = { class: 'search' }
const _hoisted_3$1E = { class: 'body' }
const _hoisted_4$1s = { class: 'categoryList' }
const _hoisted_5$1l = { class: 'widgetList' }
const _hoisted_6$1b = ['ondragstart']
const _hoisted_7$12 = { class: 'body' }
const _hoisted_8$_ = { class: 'search' }
const _hoisted_9$X = { class: 'categoryList' }
const _hoisted_10$W = { class: 'widgetList' }
const _hoisted_11$R = ['ondragstart']
const _hoisted_12$P = { class: 'body' }
const _hoisted_13$I = { class: 'search' }
const _hoisted_14$E = { class: 'categoryList' }
const _hoisted_15$C = { class: 'widgetList' }
const _hoisted_16$C = ['ondragstart']
const _hoisted_17$w = { class: 'body' }
const _hoisted_18$s = { class: 'search' }
const _hoisted_19$q = { class: 'categoryList' }
const _hoisted_20$o = { class: 'widgetList' }
const _hoisted_21$j = ['ondragstart']
const _hoisted_22$h = { class: 'widgetList' }
const _hoisted_23$e = ['ondragstart']
const _hoisted_24$e = { class: 'more-operate' }
const _hoisted_25$c = /* @__PURE__ */ _withScopeId$1d(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-guding',
title: '\u56FA\u5B9A\u7EC4\u4EF6\u7BB1',
},
null,
-1
)
)
const _hoisted_26$b = [_hoisted_25$c]
const _hoisted_27$b = /* @__PURE__ */ _withScopeId$1d(() =>
/* @__PURE__ */ createElementVNode('div', { class: 'line' }, null, -1)
)
const _hoisted_28$a = /* @__PURE__ */ _withScopeId$1d(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-guanbi' },
null,
-1
)
)
const _hoisted_29$8 = [_hoisted_28$a]
const _hoisted_30$8 = { class: 'header' }
const _hoisted_31$7 = /* @__PURE__ */ createTextVNode(
' \u56FE\u5E93\u7D20\u6750 '
)
const _hoisted_32$7 = /* @__PURE__ */ _withScopeId$1d(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-guding',
title: '\u56FA\u5B9A\u7EC4\u4EF6\u7BB1',
},
null,
-1
)
)
const _hoisted_33$7 = [_hoisted_32$7]
const _hoisted_34$5 = /* @__PURE__ */ _withScopeId$1d(() =>
/* @__PURE__ */ createElementVNode('div', { class: 'line' }, null, -1)
)
const _hoisted_35$5 = /* @__PURE__ */ _withScopeId$1d(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-guanbi' },
null,
-1
)
)
const _hoisted_36$4 = [_hoisted_35$5]
const _hoisted_37$4 = { class: 'header' }
const _hoisted_38$3 = /* @__PURE__ */ createTextVNode(
' \u5E94\u7528\u8D44\u6E90 '
)
const _hoisted_39$2 = /* @__PURE__ */ _withScopeId$1d(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-guding',
title: '\u56FA\u5B9A\u7EC4\u4EF6\u7BB1',
},
null,
-1
)
)
const _hoisted_40$2 = [_hoisted_39$2]
const _hoisted_41$2 = /* @__PURE__ */ _withScopeId$1d(() =>
/* @__PURE__ */ createElementVNode('div', { class: 'line' }, null, -1)
)
const _hoisted_42$2 = /* @__PURE__ */ _withScopeId$1d(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-guanbi' },
null,
-1
)
)
const _hoisted_43$1 = [_hoisted_42$2]
const _sfc_main$26 = /* @__PURE__ */ defineComponent({
setup(__props2) {
const ApplicationResource2 = defineAsyncComponent(() =>
Promise.resolve().then(function () {
return ApplicationResource$1
})
)
const GalleryMaterial2 = defineAsyncComponent(() =>
Promise.resolve().then(function () {
return gallery
})
)
const UnauthorizedLabel2 = defineAsyncComponent(() =>
Promise.resolve().then(function () {
return UnauthorizedLabel$1
})
)
const activeName = ref('standard')
const panelList = reactive([
{
name: '\u57FA\u7840\u63A7\u4EF6',
icon: 'icon-biaozhunkongjian',
active: false,
},
{ name: '\u56FE\u5E93\u7D20\u6750', icon: 'icon-tupiansucai' },
{ name: '\u5E94\u7528\u8D44\u6E90', icon: 'icon-huamian1' },
])
let keyword = ref()
let fixedBox = ref(false)
const setFixed = () => {
fixedBox.value = !fixedBox.value
}
const categoryList = computed(() =>
[
{
name: '\u5185\u90E8\u8C03\u8BD5',
get list() {
return widgetList.filter((widget) => {
return widget.category === 'test'
})
},
get disabled() {
if (keyword.value === '//test') {
return false
}
return true
},
},
{
name: '\u57FA\u7840',
get list() {
return getWidgetListByCategory('base')
},
},
{
name: '\u8BFB\u5199',
get list() {
return getWidgetListByCategory('readWrite')
},
},
{
name: '\u8DF3\u8F6C',
get list() {
return getWidgetListByCategory('jump')
},
},
{
name: '\u5BB9\u5668',
get list() {
return getWidgetListByCategory('container')
},
},
].filter((e2) => !e2.disabled)
)
let widgetLibDom = ref(null)
let nav = ref(null)
let panel = ref(null)
let panelStyle = ref({})
function setPanelStyle() {
const navRect = nav.value?.getBoundingClientRect()
const style2 = {}
const panelMaxWidth = 390
const panelHeight = 600
const bodyWidth = document.body.offsetWidth
const bodyHeight = document.body.offsetHeight
if (!navRect) return
const w2 = bodyWidth - navRect?.left - navRect?.width - panelMaxWidth
const h2 = bodyHeight - navRect?.top - navRect?.height
const h22 = bodyHeight - navRect?.top - panelHeight
if (w2 <= 0) {
style2.right = '100%'
style2.left = 'auto'
}
if (h22 < 0) {
style2.top = `${h22}px`
}
if (h2 <= 0) {
style2.bottom = '0'
style2.top = 'auto'
}
panelStyle.value = style2
}
const setWidgetLibPosition = () => {
const widgetLibRect = widgetLibDom.value?.getBoundingClientRect()
const bodyWidth = document.body.offsetWidth
const bodyHeight = document.body.offsetHeight
const EditorDom = widgetLibDom.value?.parentNode
if (!widgetLibRect || !widgetLibDom.value || !EditorDom) return
const EditorDomOffsetWidth = EditorDom.offsetWidth
const EditorDomOffsetHeight = EditorDom.offsetHeight
const right2 = bodyWidth - widgetLibRect.left - widgetLibRect.width
const bottom2 = bodyHeight - widgetLibRect.top - widgetLibRect.height
if (right2 < 0) {
widgetLibDom.value.style.left = `${
EditorDomOffsetWidth - widgetLibRect.width
}px`
}
if (bottom2 < 0) {
widgetLibDom.value.style.top = `${
EditorDomOffsetHeight - widgetLibRect.height
}px`
}
}
const _setWidgetLibPosition = lodash.debounce(setWidgetLibPosition, 200)
useEventListener(window, 'resize', _setWidgetLibPosition)
function setPanelActive(item2, active = !item2?.active) {
for (const item22 of panelList) {
item22.active = false
}
if (item2) {
item2.active = active
}
nextTick(() => {
setPanelStyle()
})
}
let mouseenterTimer
let mouseleaveTimer
function mouseenter(item2) {
clearTimeout(mouseleaveTimer)
mouseenterTimer = setTimeout(() => {
setPanelActive(item2, true)
}, 100)
}
function mouseleave() {
clearTimeout(mouseenterTimer)
}
function getWidgetListByCategory(category) {
let widgetList2 = Widget.list.filter((widget) => {
return widget.category === category
})
let defaultOrders = widgetList2.map((widget) => widget.is)
let newOrders = defaultOrders
if (category && Widget.sortInfo[category]) {
newOrders = lodash.uniq([
...Widget.sortInfo[category],
...defaultOrders,
])
}
widgetList2.sort((a2, b2) => {
return newOrders.indexOf(a2.is) - newOrders.indexOf(b2.is)
})
return widgetList2.filter((widget) => {
if (keyword.value && keyword.value != '//test') {
return widget.name.includes(keyword.value)
} else {
return true
}
})
}
const dragImg = new Image()
function drag(e2, params2) {
let data2 = {}
if (params2 instanceof Widget) {
data2.widget = params2
} else {
data2 = params2
}
e2.dataTransfer?.setData(
'application/json',
JSON.stringify(data2, null, ' ')
)
e2.dataTransfer?.setDragImage(dragImg, 0, 0)
if (!fixedBox.value) {
setTimeout(() => {
setPanelActive(void 0)
}, 1)
}
if (!Language$1.isOriginal()) {
if (!(e2.dataTransfer instanceof DataTransfer)) return
e2.dataTransfer.effectAllowed = 'none'
ElMessage({
message: '\u8BF7\u5207\u6362\u56DE\u539F\u59CB\u6587\u672C',
type: 'error',
customClass: 'cms-el-message el-message--error',
})
return
}
}
function dragImgFun(e2, imgInfo) {
let imgWidget = widgetList.filter((widget) => {
return widget.is === 'Img'
})[0]
const data2 = {
widget: imgWidget,
imgInfo,
}
drag(e2, data2)
}
function resourceDrag(e2, resourceInfo) {
const data2 = {
resourceInfo,
}
drag(e2, data2)
}
onUnmounted(() => {
clearTimeout(mouseenterTimer)
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_collapse_item = resolveComponent('el-collapse-item')
const _component_el_collapse = resolveComponent('el-collapse')
const _component_el_tab_pane = resolveComponent('el-tab-pane')
const _component_el_tabs = resolveComponent('el-tabs')
const _directive_draggable = resolveDirective('draggable')
return withDirectives(
(openBlock(),
createElementBlock(
'div',
{
ref_key: 'widgetLibDom',
ref: widgetLibDom,
class: 'widgetLib',
},
[
createElementVNode(
'ul',
{
ref_key: 'nav',
ref: nav,
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(panelList), (item2, i2) => {
return (
openBlock(),
createElementBlock(
'li',
{
key: i2,
class: normalizeClass({ active: item2.active }),
onMouseenter: ($event) => mouseenter(item2),
onMouseleave:
_cache[0] || (_cache[0] = ($event) => mouseleave()),
},
[
createElementVNode(
'i',
{
class: normalizeClass(item2.icon),
'data-tooltip-placement': 'left',
},
null,
2
),
],
42,
_hoisted_1$1$
)
)
}),
128
)),
],
512
),
createElementVNode('main', null, [
withDirectives(
createElementVNode(
'div',
{
ref_key: 'panel',
ref: panel,
class: 'panel',
style: normalizeStyle$1(panelStyle.value),
},
[
createVNode$1(
_component_el_tabs,
{
modelValue: activeName.value,
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) => (activeName.value = $event)),
class: 'demo-tabs',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_tab_pane,
{
label: '\u6807\u51C6',
name: 'standard',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$1O, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
modelValue: keyword.value,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(keyword.value = $event)),
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_3$1E, [
createElementVNode('div', _hoisted_4$1s, [
createVNode$1(
_component_el_collapse,
{
'model-value': categoryList.value.map(
(e2) => e2.name
),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
categoryList.value,
(category, i2) => {
return (
openBlock(),
createBlock(
_component_el_collapse_item,
{
key: i2,
title: category.name,
name: category.name,
},
{
default: withCtx(() => [
createElementVNode(
'div',
_hoisted_5$1l,
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
category.list,
(widget) => {
return (
openBlock(),
createElementBlock(
'div',
{
class:
'widget',
key: widget.is,
draggable:
'true',
ondragstart:
(
e2
) =>
drag(
e2,
widget
),
},
[
widget?.is &&
!unref(
checkWidgetAuth
)(
widget.is
)
? (openBlock(),
createBlock(
unref(
UnauthorizedLabel2
),
{
key: 0,
name:
widget.name ||
widget.is,
placement:
'right-start',
class:
'unauthorized-label',
},
null,
8,
[
'name',
]
))
: createCommentVNode(
'',
true
),
createVNode$1(
Icon,
{
icon: widget.icon,
},
null,
8,
[
'icon',
]
),
createElementVNode(
'span',
null,
toDisplayString$1(
widget.name ||
widget.is
),
1
),
],
8,
_hoisted_6$1b
)
)
}
),
128
)),
]
),
]),
_: 2,
},
1032,
['title', 'name']
)
)
}
),
128
)),
]),
_: 1,
},
8,
['model-value']
),
]),
]),
]),
_: 1,
}
),
createVNode$1(
_component_el_tab_pane,
{
label: '\u8FD0\u884C',
name: 'run',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_7$12, [
createElementVNode('div', _hoisted_8$_, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
modelValue: keyword.value,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(keyword.value = $event)),
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_9$X, [
createElementVNode('div', _hoisted_10$W, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
getWidgetListByCategory('run'),
(widget) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'widget',
key: widget.is,
draggable: 'true',
ondragstart: (e2) =>
drag(e2, widget),
},
[
widget?.is &&
!unref(checkWidgetAuth)(
widget.is
)
? (openBlock(),
createBlock(
unref(
UnauthorizedLabel2
),
{
key: 0,
name:
widget.name ||
widget.is,
placement:
'right-start',
class:
'unauthorized-label',
},
null,
8,
['name']
))
: createCommentVNode(
'',
true
),
createVNode$1(
Icon,
{
icon: widget.icon,
},
null,
8,
['icon']
),
createElementVNode(
'span',
null,
toDisplayString$1(
widget.name || widget.is
),
1
),
],
8,
_hoisted_11$R
)
)
}
),
128
)),
]),
]),
]),
]),
_: 1,
}
),
createVNode$1(
_component_el_tab_pane,
{
label: '\u56FE\u8868',
name: 'chart',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_12$P, [
createElementVNode('div', _hoisted_13$I, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
modelValue: keyword.value,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(keyword.value = $event)),
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_14$E, [
createElementVNode('div', _hoisted_15$C, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
getWidgetListByCategory('chart'),
(widget) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'widget',
key: widget.is,
draggable: 'true',
ondragstart: (e2) =>
drag(e2, widget),
},
[
widget?.is &&
!unref(checkWidgetAuth)(
widget.is
)
? (openBlock(),
createBlock(
unref(
UnauthorizedLabel2
),
{
key: 0,
name:
widget.name ||
widget.is,
placement:
'right-start',
class:
'unauthorized-label',
},
null,
8,
['name']
))
: createCommentVNode(
'',
true
),
createVNode$1(
Icon,
{
icon: widget.icon,
},
null,
8,
['icon']
),
createElementVNode(
'span',
null,
toDisplayString$1(
widget.name || widget.is
),
1
),
],
8,
_hoisted_16$C
)
)
}
),
128
)),
]),
]),
]),
]),
_: 1,
}
),
createVNode$1(
_component_el_tab_pane,
{
label: '\u63A7\u5236',
name: 'controller',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_17$w, [
createElementVNode('div', _hoisted_18$s, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
modelValue: keyword.value,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(keyword.value = $event)),
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_19$q, [
createElementVNode('div', _hoisted_20$o, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
getWidgetListByCategory('controller'),
(widget) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'widget',
key: widget.is,
draggable: 'true',
ondragstart: (e2) =>
drag(e2, widget),
},
[
widget?.is &&
!unref(checkWidgetAuth)(
widget.is
)
? (openBlock(),
createBlock(
unref(
UnauthorizedLabel2
),
{
key: 0,
name:
widget.name ||
widget.is,
placement:
'right-start',
class:
'unauthorized-label',
},
null,
8,
['name']
))
: createCommentVNode(
'',
true
),
createVNode$1(
Icon,
{
icon: widget.icon,
},
null,
8,
['icon']
),
createElementVNode(
'span',
null,
toDisplayString$1(
widget.name || widget.is
),
1
),
],
8,
_hoisted_21$j
)
)
}
),
128
)),
]),
createVNode$1(
_component_el_collapse,
{
'model-value': 'system',
class: 'mt-20',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_collapse_item,
{
title: '\u7CFB\u7EDF',
name: 'system',
},
{
default: withCtx(() => [
createElementVNode(
'div',
_hoisted_22$h,
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
getWidgetListByCategory(
'system'
),
(widget) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'widget',
key: widget.is,
draggable:
'true',
ondragstart: (
e2
) =>
drag(
e2,
widget
),
},
[
widget?.is &&
!unref(
checkWidgetAuth
)(widget.is)
? (openBlock(),
createBlock(
unref(
UnauthorizedLabel2
),
{
key: 0,
name:
widget.name ||
widget.is,
placement:
'right-start',
class:
'unauthorized-label',
},
null,
8,
['name']
))
: createCommentVNode(
'',
true
),
createVNode$1(
Icon,
{
icon: widget.icon,
},
null,
8,
['icon']
),
createElementVNode(
'span',
null,
toDisplayString$1(
widget.name ||
widget.is
),
1
),
],
8,
_hoisted_23$e
)
)
}
),
128
)),
]
),
]),
_: 1,
}
),
]),
_: 1,
}
),
]),
]),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['modelValue']
),
createElementVNode('header', _hoisted_24$e, [
createElementVNode(
'button',
{
class: normalizeClass([
'close gu-ding',
{ 'gu-ding-active': fixedBox.value },
]),
onClick: setFixed,
},
_hoisted_26$b,
2
),
_hoisted_27$b,
createElementVNode(
'button',
{
class: 'close',
onClick:
_cache[6] ||
(_cache[6] = ($event) =>
(unref(panelList)[0].active = false)),
},
_hoisted_29$8
),
]),
],
4
),
[[vShow, unref(panelList)[0].active]]
),
withDirectives(
createElementVNode(
'div',
{
ref_key: 'panel',
ref: panel,
class: 'panel gallery-material',
style: normalizeStyle$1(panelStyle.value),
},
[
createElementVNode('header', _hoisted_30$8, [
_hoisted_31$7,
createElementVNode(
'button',
{
class: normalizeClass([
'close gu-ding',
{ 'gu-ding-active': fixedBox.value },
]),
onClick: setFixed,
},
_hoisted_33$7,
2
),
_hoisted_34$5,
createElementVNode(
'button',
{
class: 'close',
onClick:
_cache[7] ||
(_cache[7] = ($event) =>
(unref(panelList)[1].active = false)),
},
_hoisted_36$4
),
]),
createVNode$1(unref(GalleryMaterial2), {
onImgDrag: dragImgFun,
}),
],
4
),
[[vShow, unref(panelList)[1].active]]
),
withDirectives(
createElementVNode(
'div',
{
ref_key: 'panel',
ref: panel,
class: 'panel application-resource',
style: normalizeStyle$1(panelStyle.value),
},
[
createElementVNode('header', _hoisted_37$4, [
_hoisted_38$3,
createElementVNode(
'button',
{
class: normalizeClass([
'close gu-ding',
{ 'gu-ding-active': fixedBox.value },
]),
onClick: setFixed,
},
_hoisted_40$2,
2
),
_hoisted_41$2,
createElementVNode(
'button',
{
class: 'close',
onClick:
_cache[8] ||
(_cache[8] = ($event) =>
(unref(panelList)[2].active = false)),
},
_hoisted_43$1
),
]),
createVNode$1(unref(ApplicationResource2), {
onResourceDrag: resourceDrag,
}),
],
4
),
[[vShow, unref(panelList)[2].active]]
),
]),
]
)),
[[_directive_draggable, { exclude: '.panel' }]]
)
}
},
})
var WidgetLib = /* @__PURE__ */ _export_sfc(_sfc_main$26, [
['__scopeId', 'data-v-84946184'],
])
var WidgetLib$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: WidgetLib,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Editor_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$1_ = {
key: 0,
class: 'editor',
}
const _hoisted_2$1N = { class: 'left' }
const _sfc_main$25 = /* @__PURE__ */ defineComponent({
emits: ['hightLightPages'],
setup(__props2, { emit: emit2 }) {
return (_ctx, _cache) => {
return unref(app).current.project.current.page.id &&
unref(app).current.project.current.page.type != 0
? (openBlock(),
createElementBlock('main', _hoisted_1$1_, [
createElementVNode('div', _hoisted_2$1N, [
createVNode$1(Tab),
createVNode$1(Board),
]),
createVNode$1(Settings),
unref(app).viewStatus.componentBox.show
? (openBlock(), createBlock(WidgetLib, { key: 0 }))
: createCommentVNode('', true),
]))
: (openBlock(),
createBlock(Empty, {
key: 1,
title:
'\u5728\u9875\u9762\u529F\u80FD\u533A\u5355\u51FB\u4E00\u4E2A\u9875\u9762\u6253\u5F00\u5B83',
onHightLightPages:
_cache[0] || (_cache[0] = ($event) => emit2('hightLightPages')),
}))
}
},
})
var Editor = /* @__PURE__ */ _export_sfc(_sfc_main$25, [
['__scopeId', 'data-v-4d57a26a'],
])
var Editor$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Editor,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Pages_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$1Z = { class: 'pages' }
const _hoisted_2$1M = { class: 'main-content' }
const _sfc_main$24 = /* @__PURE__ */ defineComponent({
setup(__props2) {
const sidebar = ref()
const hightLightPages = () => {
sidebar.value.hightLight(true)
}
return (_ctx, _cache) => {
const _directive_track = resolveDirective('track')
return withDirectives(
(openBlock(),
createElementBlock('main', _hoisted_1$1Z, [
createVNode$1(Toolbar),
createElementVNode('div', _hoisted_2$1M, [
createVNode$1(
Sidebar$8,
{
ref_key: 'sidebar',
ref: sidebar,
},
null,
512
),
createVNode$1(Editor, { onHightLightPages: hightLightPages }),
]),
])),
[
[
_directive_track,
{
moduleType: '\u6807\u51C6\u6A21\u5757',
moduleCode: '\u81EA\u5B9A\u4E49\u753B\u9762',
pageCode: '\u753B\u9762\u7F16\u8F91',
},
'page',
],
]
)
}
},
})
var Pages = /* @__PURE__ */ _export_sfc(_sfc_main$24, [
['__scopeId', 'data-v-77678d76'],
])
var Pages$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Pages,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _hoisted_1$1Y = ['innerHTML']
const _hoisted_2$1L = { class: 'el-dialog__footer' }
const _hoisted_3$1D = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_4$1r = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$23 = /* @__PURE__ */ defineComponent({
props: {
modelValue: {
type: Boolean,
default: false,
},
info: {
type: String,
default: '',
},
title: {
type: String,
default: '',
},
name: {
type: String,
default: '',
},
},
emits: ['submit', 'close', 'update:modelValue'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const visible = computed({
get() {
return props2.modelValue
},
set(v4) {
emit2('update:modelValue', v4)
},
})
const confirm2 = () => {
visible.value = false
emit2('submit', form)
}
const close2 = () => {
visible.value = false
}
return (_ctx, _cache) => {
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
modelValue: unref(visible),
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
isRef(visible) ? (visible.value = $event) : null),
'append-to-body': true,
'close-on-click-modal': false,
title: __props2.title,
onClosed: close2,
'custom-class': 'cms-el-dialog',
width: '450px',
},
{
default: withCtx(() => [
createElementVNode(
'span',
{ innerHTML: __props2.info },
null,
8,
_hoisted_1$1Y
),
createElementVNode('div', _hoisted_2$1L, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: close2,
},
{
default: withCtx(() => [_hoisted_3$1D]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_4$1r]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue', 'title']
)
)
}
},
})
var Tip = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$23,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var HistoryDialog_vue_vue_type_style_index_0_lang = ''
const _hoisted_1$1X = { class: 'dialog-content' }
const _hoisted_2$1K = { class: 'form-table' }
const _hoisted_3$1C = { class: 'el-dialog__footer' }
const _hoisted_4$1q = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_5$1k = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$22 = /* @__PURE__ */ defineComponent({
props: {
modelValue: {
type: Boolean,
default: false,
},
placeholder: {
type: String,
default: '\u8BF7\u8F93\u5165\u5386\u53F2\u7EC4\u540D\u79F0',
},
title: {
type: String,
default: '\u521B\u5EFA\u5386\u53F2\u7EC4',
},
name: {
type: String,
default: '',
},
},
emits: ['submit', 'close', 'update:modelValue'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const visible = computed({
get() {
return props2.modelValue
},
set(v4) {
emit2('update:modelValue', v4)
},
})
const confirm2 = () => {
if (!form.value.name) {
return ElMessage.warning(
'\u8BF7\u8F93\u5165\u5386\u53F2\u7EC4\u540D\u79F0'
)
}
visible.value = false
form.value.name = form.value.name.replaceAll(' ', '')
emit2('submit', form)
}
const close2 = () => {
visible.value = false
emit2('close')
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_form = resolveComponent('el-form')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
modelValue: unref(visible),
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
isRef(visible) ? (visible.value = $event) : null),
'append-to-body': true,
'close-on-click-modal': false,
title: `${__props2.title}\u8868`,
onClosed: close2,
'custom-class': 'cms-el-dialog history-dialog-name',
width: '450px',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$1X, [
createVNode$1(
_component_el_form,
{
onSubmit:
_cache[1] ||
(_cache[1] = withModifiers(() => {}, ['prevent'])),
'label-width': '95px',
'label-position': 'left',
class: 'cms-el-form',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$1K, [
createVNode$1(
_component_el_form_item,
{
label: '\u5386\u53F2\u7EC4\u540D\u79F0\uFF1A',
prop: 'name',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: unref(form).name,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(form).name = $event)),
placeholder: __props2.placeholder,
clearable: '',
class: 'history-input-name',
},
null,
8,
['modelValue', 'placeholder']
),
]),
_: 1,
}
),
]),
]),
_: 1,
}
),
]),
createElementVNode('div', _hoisted_3$1C, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: close2,
},
{
default: withCtx(() => [_hoisted_4$1q]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_5$1k]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue', 'title']
)
)
}
},
})
var HistoryDialog = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$22,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _hoisted_1$1W = { class: 'dialog-content' }
const _hoisted_2$1J = { class: 'el-dialog__footer' }
const _hoisted_3$1B = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_4$1p = /* @__PURE__ */ createTextVNode('\u66FF\u6362')
const _sfc_main$21 = /* @__PURE__ */ defineComponent({
setup(__props2, { expose }) {
const saveFileTip = reactive({
isShow: false,
})
const backupDialogRef = ref()
const fileConfig = ref({
url: '',
ext: 'csv',
})
const confirm2 = () => {
saveFileTip.isShow = false
let loadingInstance2
let loadingOptions2 = {
fullscreen: true,
background: 'rgba(0,0,0,.05)',
customClass: 'delay-loading',
}
loadingInstance2 = ElLoading.service(loadingOptions2)
if (!saveFileTip.node) return
client
.saveFile(
saveFileTip.path,
saveFileTip.name + `.${fileConfig.value.ext}`,
fileConfig.value.url
)
.then(() => {
toast(
saveFileTip.nodeName + '\uFF1A\u5907\u4EFD\u6210\u529F\uFF01',
'success'
)
loadingInstance2 && loadingInstance2.close()
backupDialogRef.value.close()
})
}
const backupConfirm = async ({ node: node2, name: name2, path }) => {
saveFileTip.path = path
saveFileTip.node = node2
saveFileTip.name = name2
try {
let existFile = await client.isExists(path + '\\' + name2 + '.cmsbak')
if (existFile) {
return (saveFileTip.isShow = true)
}
confirm2()
} catch (error2) {
console.error(error2)
}
}
const open2 = (node2) => {
saveFileTip.nodeName = node2.name
backupDialogRef.value.open({
isShow: true,
})
}
const initConfig2 = (config2) => {
Object.assign(fileConfig.value, config2)
}
expose({
open: open2,
initConfig: initConfig2,
})
return (_ctx, _cache) => {
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
BackupDialog,
{
ref_key: 'backupDialogRef',
ref: backupDialogRef,
onConfirm: backupConfirm,
},
null,
512
),
(openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
modelValue: unref(saveFileTip).isShow,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) => (unref(saveFileTip).isShow = $event)),
title: '\u63D0\u793A',
width: '450px',
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
key: new Date().toISOString(),
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$1W, [
createElementVNode(
'div',
null,
'\u6587\u4EF6\u3010' +
toDisplayString$1(unref(saveFileTip).name) +
'.' +
toDisplayString$1(fileConfig.value.ext) +
'\u3011\u5DF2\u5B58\u5728\uFF0C\u662F\u5426\u66FF\u6362',
1
),
]),
createElementVNode('div', _hoisted_2$1J, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick:
_cache[0] ||
(_cache[0] = ($event) =>
(unref(saveFileTip).isShow = false)),
},
{
default: withCtx(() => [_hoisted_3$1B]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_4$1p]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
)),
])
)
}
},
})
var DataBackup = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$21,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var HistoryList_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$1c = (n2) => (
pushScopeId('data-v-1914feba'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1V = { class: 'HistoryList' }
const _hoisted_2$1I = /* @__PURE__ */ _withScopeId$1c(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
[
/* @__PURE__ */ createElementVNode('i', {
class: 'iconfont icon-yemian1 title_img',
}),
/* @__PURE__ */ createElementVNode('span', null, '\u5386\u53F2\u7EC4'),
],
-1
)
)
const _hoisted_3$1A = { class: 'search flex' }
const _hoisted_4$1o = { class: 'tree' }
const _hoisted_5$1j = ['onMouseup']
const _hoisted_6$1a = ['onDblclick']
const _hoisted_7$11 = { class: 'btn' }
const _hoisted_8$Z = ['onMouseover']
const _hoisted_9$W = { class: 'dialog-content' }
const _hoisted_10$V = { style: { 'text-align': 'center', color: 'white' } }
const _hoisted_11$Q = /* @__PURE__ */ createTextVNode(
' \u786E\u8BA4\u5220\u9664 '
)
const _hoisted_12$O = { style: { color: '#3d6eff' } }
const _hoisted_13$H = /* @__PURE__ */ createTextVNode(' \u5417\uFF1F ')
const _hoisted_14$D = /* @__PURE__ */ _withScopeId$1c(() =>
/* @__PURE__ */ createElementVNode(
'p',
null,
'\u786E\u8BA4\u540E\uFF0C\u4ECE\u5217\u8868\u4E2D\u5220\u9664\u8282\u70B9\u3002',
-1
)
)
const _hoisted_15$B = { class: 'el-dialog__footer' }
const _hoisted_16$B = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_17$v = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$20 = /* @__PURE__ */ defineComponent({
setup(__props2, { expose }) {
const isClear = ref(false)
let buttonRef = ref()
const visible = ref(false)
const tipVisible = ref(false)
const title = ref('')
const tipTitle = ref('')
const tipInfo = ref('')
const editStatus = ref(false)
const popoverRef = ref()
const BackupRef = ref()
const onClickOutside2 = () => {
unref(popoverRef).tooltipRef?.hide()
}
let currentData = ref({})
let currentNode = ref({})
const handleOverMore = (e2, data2, node2) => {
buttonRef.value = e2.currentTarget
currentData.value = data2
currentNode.value = node2
}
let dialogConfig = reactive({
show: false,
page: null,
})
const treeRef = ref()
const inputRef = ref()
let creating = ref(false)
const filterText = ref('')
watch$1(filterText, (val2) => {
treeRef.value.filter(val2)
})
const clickSelectPage = (page2) => {
if (!treeRef.value) return
if (page2.type === 2) {
selectHistory.value = page2
}
current.value = page2
}
const nodeEditStatus = ref([])
const getNodeEditing = (page2) => {
return nodeEditStatus.value.includes(page2.id)
}
const setNodeEditing = (page2, v4) => {
if (!lodash$2.exports.isNil(v4) && !v4) {
return (nodeEditStatus.value = nodeEditStatus.value.filter(
(id2) => id2 !== page2.id
))
}
nodeEditStatus.value.push(page2.id)
}
const editNode = (page2) => {
if (page2.name === '\u9ED8\u8BA4\u7EC4') return
setNodeEditing(page2)
nextTick(() => {
setTimeout(() => {
if (!inputRef.value) return
inputRef.value.focus()
inputRef.value.select()
}, 500)
setTimeout(() => {
creating.value = false
}, 700)
})
}
const blurEditNode = async (page2) => {
if (!page2.name) {
ElMessage.error('\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A')
return
}
page2.name = page2.name.replaceAll(' ', '')
current.value = page2
if (page2.type == 1) {
await editFolder()
} else {
await editHistory(true)
}
setNodeEditing(page2, false)
initHistory()
}
const onSubmitTip = async () => {
if (!isClear.value) {
BackupRef.value.open(current.value)
} else {
await clearHistory()
ElMessage.success('\u6570\u636E\u6E05\u9664\u6210\u529F')
}
initHistory()
}
const createFolders = async () => {
treeRef.value.clearSelectNodes()
const folder2 = await createFolder$2('folders')
current.value = {
...folder2,
type: 1,
}
initHistory()
editNode(current.value)
}
const createPage = async () => {
if (creating.value) return
creating.value = true
treeRef.value.clearSelectNodes()
if (editStatus.value) {
await editHistory()
editStatus.value = false
} else {
const history2 = await createHistoryGroup()
current.value = {
id: history2.id,
name: history2.name,
type: 2,
}
selectHistory.value = { ...history2 }
}
await initHistory()
creating.value = false
}
const onClose = () => {
treeRef.value.clearSelectNodes()
editStatus.value = false
}
const openDialog2 = () => {
title.value = '\u521B\u5EFA\u5386\u53F2\u7EC4'
createHistoryName()
visible.value = true
}
const handleCommand = (data2) => {
current.value = data2.data
if (data2.data.type === 2) {
selectHistory.value = { ...data2.data }
}
const fun = {
dataBak: async () => {
treeRef.value.clearSelectNodes()
if (!client.isClient()) {
const blob = await backupHistory()
const name2 =
'Archive_Backup-' + dayjs().format('YYYY-MM-DD') + '.csv'
utils.downFile(blob, name2)
ElMessage.success('\u6570\u636E\u5907\u4EFD\u6210\u529F')
} else {
tipVisible.value = true
tipInfo.value =
'\u5373\u5C06\u5BF9\u9009\u4E2D\u5386\u53F2\u7EC4\u7684\u5B58\u50A8\u6570\u636E\u8FDB\u884C\u5907\u4EFD\uFF0C\u8BF7\u9009\u62E9\u5907\u4EFD\u6570\u636E\u7684\u5BFC\u51FA\u8DEF\u5F84'
tipTitle.value = '\u6570\u636E\u5907\u4EFD'
isClear.value = false
BackupRef.value.initConfig({
url: `/api/v1/historicarchive/group/${current.value.id}/backup`,
ext: 'csv',
})
}
},
dataClear() {
treeRef.value.clearSelectNodes()
tipVisible.value = true
tipInfo.value =
'\u6570\u636E\u6E05\u9664\u5373\u5C06\u5BF9\u9009\u4E2D\u5386\u53F2\u7EC4\u7684\u5B58\u50A8\u6570\u636E\u8FDB\u884C\u5168\u90E8\u6E05\u9664\uFF0C\u88AB\u6E05\u9664\u7684\u6570\u636E\u4E0D\u53EF\u6062\u590D\uFF0C\u662F\u5426\u7EE7\u7EED\u5F53\u524D\u64CD\u4F5C'
tipTitle.value = '\u6570\u636E\u6E05\u9664'
isClear.value = true
},
rename: () => {
editNode(data2.data)
},
deleteNode: () => {
dialogConfig.show = true
dialogConfig.page = data2.data
},
edit: () => {
visible.value = true
title.value = '\u5386\u53F2\u7EC4'
form.value.name = current.value.name
editStatus.value = true
},
}
fun[data2.type]()
}
const ConfirmDeletion = async () => {
treeRef.value.clearSelectNodes()
if (dialogConfig.page) {
const { type: type4, id: id2 } = dialogConfig.page
if (type4 === 1) {
await deleteFolder(id2)
} else {
await deleteHistoryGroup()
}
dialogConfig.show = false
current.value = { id: null }
initHistory()
}
}
const initHistory = async () => {
historyList.value = await getHistoryList()
selectNode()
}
const defaultGroupCheck = computed(() => {
return currentData.value.name !== '\u9ED8\u8BA4\u7EC4'
})
onMounted(() => {
initHistory()
})
onBeforeUnmount(() => {
current.value = { id: null }
selectHistory.value = { id: null }
historyList.value = []
})
expose({
openDialog: openDialog2,
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_popover = resolveComponent('el-popover')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', _hoisted_1$1V, [
_hoisted_2$1I,
createElementVNode('div', _hoisted_3$1A, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x-search',
modelValue: filterText.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (filterText.value = $event)),
clearable: '',
},
null,
8,
['modelValue']
),
createElementVNode('div', { class: 'search_tool flex' }, [
createElementVNode('i', {
class: 'createPage iconfont icon-tianjiahuamian',
onClick: openDialog2,
title: '\u6DFB\u52A0\u5386\u53F2\u7EC4',
}),
createElementVNode('i', {
class: 'iconfont icon-wenjianjia',
onClick: createFolders,
title: '\u6DFB\u52A0\u6587\u4EF6\u5939',
}),
]),
]),
createElementVNode('div', _hoisted_4$1o, [
createVNode$1(
VirtualTree,
{
ref_key: 'treeRef',
ref: treeRef,
data: unref(historyList),
draggable: false,
'default-expand-all': '',
props: { children: 'children' },
filterText: filterText.value,
},
{
default: withCtx(({ node: node2, data: data2 }) => [
createElementVNode(
'div',
{
class: normalizeClass([
'node flex',
data2.id === unref(current).id ? 'node-current' : '',
]),
onMouseup: withModifiers(
($event) => clickSelectPage(data2),
['stop']
),
},
[
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont menu',
data2.type === 1
? 'icon-wenjianjia'
: 'icon-yemian',
]),
},
null,
2
),
createElementVNode(
'div',
{
class: 'title',
onDblclick: ($event) => editNode(data2),
},
[
getNodeEditing(data2)
? (openBlock(),
createBlock(
_component_el_input,
{
key: 0,
ref_key: 'inputRef',
ref: inputRef,
class: 'cms-el-input-x title-input',
modelValue: data2.name,
'onUpdate:modelValue': ($event) =>
(data2.name = $event),
onBlur: ($event) => blurEditNode(data2),
onKeyup:
_cache[1] ||
(_cache[1] = withKeys(
($event) => inputRef.value?.blur(),
['enter']
)),
},
null,
8,
['modelValue', 'onUpdate:modelValue', 'onBlur']
))
: (openBlock(),
createBlock(
EllipsisTooltip,
{
key: 1,
width: '100%',
content: node2.label,
},
null,
8,
['content']
)),
],
40,
_hoisted_6$1a
),
createElementVNode('div', _hoisted_7$11, [
withDirectives(
createElementVNode(
'i',
{
class: 'iconfont icon-gengduo menu',
onMouseover: (e2) =>
handleOverMore(e2, data2, node2),
},
null,
40,
_hoisted_8$Z
),
[[unref(ClickOutside), onClickOutside2]]
),
]),
],
42,
_hoisted_5$1j
),
]),
_: 1,
},
8,
['data', 'filterText']
),
createVNode$1(
_component_el_popover,
{
'virtual-ref': unref(buttonRef),
ref_key: 'popoverRef',
ref: popoverRef,
trigger: 'hover',
'virtual-triggering': '',
persistent: '',
width: '110',
'show-arrow': false,
transition: 'el-zoom-in-top',
},
{
default: withCtx(() => [
createElementVNode(
'ul',
{
class: 'popover-menus',
onMouseover:
_cache[7] ||
(_cache[7] = ($event) => inputRef.value?.blur()),
},
[
unref(currentData).type === 2
? (openBlock(),
createElementBlock(
'li',
{
key: 0,
onClick:
_cache[2] ||
(_cache[2] = ($event) =>
handleCommand({
type: 'dataBak',
node: unref(currentNode),
data: unref(currentData),
})),
},
' \u6570\u636E\u5907\u4EFD '
))
: createCommentVNode('', true),
unref(currentData).type === 2
? (openBlock(),
createElementBlock(
'li',
{
key: 1,
onClick:
_cache[3] ||
(_cache[3] = ($event) =>
handleCommand({
type: 'dataClear',
node: unref(currentNode),
data: unref(currentData),
})),
},
' \u6570\u636E\u6E05\u9664 '
))
: createCommentVNode('', true),
unref(currentData).type === 2 && unref(defaultGroupCheck)
? (openBlock(),
createElementBlock(
'li',
{
key: 2,
onClick:
_cache[4] ||
(_cache[4] = ($event) =>
handleCommand({
type: 'edit',
node: unref(currentNode),
data: unref(currentData),
})),
},
' \u7F16\u8F91 '
))
: createCommentVNode('', true),
unref(currentData).type === 1
? (openBlock(),
createElementBlock(
'li',
{
key: 3,
onClick:
_cache[5] ||
(_cache[5] = ($event) =>
handleCommand({
type: 'rename',
node: unref(currentNode),
data: unref(currentData),
})),
},
' \u91CD\u547D\u540D '
))
: createCommentVNode('', true),
unref(defaultGroupCheck)
? (openBlock(),
createElementBlock(
'li',
{
key: 4,
class: 'item_delete',
onClick:
_cache[6] ||
(_cache[6] = ($event) =>
handleCommand({
type: 'deleteNode',
node: unref(currentNode),
data: unref(currentData),
})),
},
' \u5220\u9664 '
))
: createCommentVNode('', true),
],
32
),
]),
_: 1,
},
8,
['virtual-ref']
),
]),
createVNode$1(
_component_el_dialog,
{
modelValue: unref(dialogConfig).show,
'onUpdate:modelValue':
_cache[10] ||
(_cache[10] = ($event) => (unref(dialogConfig).show = $event)),
title: '\u786E\u8BA4\u5220\u9664',
'custom-class': 'cms-el-dialog',
onClose:
_cache[11] ||
(_cache[11] = ($event) => (unref(dialogConfig).show = false)),
'append-to-body': true,
width: '450px',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_9$W, [
createElementVNode('div', _hoisted_10$V, [
_hoisted_11$Q,
createElementVNode(
'span',
_hoisted_12$O,
toDisplayString$1(unref(dialogConfig).page?.name),
1
),
_hoisted_13$H,
_hoisted_14$D,
]),
]),
createElementVNode('div', _hoisted_15$B, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick:
_cache[8] ||
(_cache[8] = ($event) =>
(unref(dialogConfig).show = false)),
},
{
default: withCtx(() => [_hoisted_16$B]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick:
_cache[9] ||
(_cache[9] = ($event) => ConfirmDeletion()),
},
{
default: withCtx(() => [_hoisted_17$v]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_sfc_main$22,
{
onSubmit: createPage,
onClose,
modelValue: visible.value,
'onUpdate:modelValue':
_cache[12] ||
(_cache[12] = ($event) => (visible.value = $event)),
title: title.value,
},
null,
8,
['modelValue', 'title']
),
createVNode$1(
_sfc_main$23,
{
onSubmit: onSubmitTip,
modelValue: tipVisible.value,
'onUpdate:modelValue':
_cache[13] ||
(_cache[13] = ($event) => (tipVisible.value = $event)),
title: tipTitle.value,
info: tipInfo.value,
},
null,
8,
['modelValue', 'title', 'info']
),
createVNode$1(
_sfc_main$21,
{
ref_key: 'BackupRef',
ref: BackupRef,
},
null,
512
),
])
)
}
},
})
var HistoryList = /* @__PURE__ */ _export_sfc(_sfc_main$20, [
['__scopeId', 'data-v-1914feba'],
])
var HistoryList$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: HistoryList,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var TriggerFrequency_vue_vue_type_style_index_0_scoped_true_lang$1 = ''
const _hoisted_1$1U = { class: 'wrapper' }
const _sfc_main$1$ = /* @__PURE__ */ defineComponent({
props: {
disabled: {
type: Boolean,
default: false,
},
isValue: {
type: Boolean,
default: true,
},
isUnit: {
type: Boolean,
default: true,
},
label: {
type: String,
default: '',
},
value: {
type: Number,
default: 1,
},
unit: {
type: [Number, String],
default: '',
},
unitOptions: {
type: Array,
default: () => [],
},
unitFilters: String,
inputStyle: String,
},
emits: ['update:value', 'update:unit'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
let _value = ref(1)
let _valueKey = ref(1)
watch$1(
() => props2.value,
() => {
setTimeout(() => {
if (props2.value) {
_value.value = props2.value
} else {
_value.value = 1
emit2('update:value', _value.value)
}
_valueKey.value += 1
}, 130)
},
{ immediate: true }
)
let _unitOptions = [
{
value: 1,
label: '\u79D2',
},
{
value: 2,
label: '\u5206',
},
{
value: 3,
label: '\u65F6',
},
{
value: 4,
label: '\u65E5',
},
{
value: 5,
label: '\u6708',
},
{
value: 6,
label: '\u5E74',
},
]
watch$1(
[() => props2.unitOptions, () => props2.unitFilters],
() => {
if (props2.unitFilters && !props2.unitOptions.length) {
const values2 = props2.unitFilters.split(',')
_unitOptions = _unitOptions.filter((e2) =>
values2.includes(e2.value + '')
)
}
},
{ immediate: true }
)
const toInteger2 = () => {
_value.value = Math.floor(_value.value)
_valueKey.value += 1
emit2('update:value', _value.value)
}
return (_ctx, _cache) => {
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
return (
openBlock(),
createElementBlock('div', _hoisted_1$1U, [
__props2.label
? (openBlock(),
createElementBlock(
'span',
{
key: 0,
class: normalizeClass([
'label',
{ unactive: __props2.disabled },
]),
},
toDisplayString$1(__props2.label),
3
))
: createCommentVNode('', true),
__props2.isValue
? (openBlock(),
createBlock(
_component_el_input_number,
{
key: _valueKey.value,
min: 1,
modelValue: _value.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (_value.value = $event)),
disabled: __props2.disabled,
onInput: toInteger2,
'controls-position': 'right',
class: normalizeClass([
'cms-input-number',
[
{ margin: __props2.isUnit },
{ unactive: __props2.disabled },
],
]),
style: normalizeStyle$1(__props2.inputStyle),
},
null,
8,
['modelValue', 'disabled', 'class', 'style']
))
: createCommentVNode('', true),
__props2.isUnit
? (openBlock(),
createBlock(
_component_el_select,
{
key: 2,
'model-value': __props2.unit,
disabled: __props2.disabled,
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
onChange:
_cache[1] ||
(_cache[1] = ($event) => _ctx.$emit('update:unit', $event)),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(_unitOptions), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['model-value', 'disabled']
))
: createCommentVNode('', true),
])
)
}
},
})
var TriggerFrequency$2 = /* @__PURE__ */ _export_sfc(_sfc_main$1$, [
['__scopeId', 'data-v-26f12187'],
])
var TriggerFrequency$3 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: TriggerFrequency$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var StorageSet_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$1b = (n2) => (
pushScopeId('data-v-1093dbbe'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1T = { class: 'dialog-content storage-setting' }
const _hoisted_2$1H = { class: 'type flex-row' }
const _hoisted_3$1z = /* @__PURE__ */ _withScopeId$1b(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u542F\u7528\u6570\u636E\u6E05\u9664',
-1
)
)
const _hoisted_4$1n = { class: 'panel' }
const _hoisted_5$1i = { class: 'flex-row' }
const _hoisted_6$19 = /* @__PURE__ */ _withScopeId$1b(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'label' },
'\u4FDD\u7559\u8303\u56F4',
-1
)
)
const _hoisted_7$10 = { class: 'flex-row' }
const _hoisted_8$Y = /* @__PURE__ */ _withScopeId$1b(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u6570\u636E\u6E05\u6D17\u524D\u81EA\u52A8\u5907\u4EFD',
-1
)
)
const _hoisted_9$V = { class: 'con-column top' }
const _hoisted_10$U = /* @__PURE__ */ _withScopeId$1b(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'label' },
'\u5907\u4EFD\u8DEF\u5F84\uFF1A',
-1
)
)
const _hoisted_11$P = { class: 'path' }
const _hoisted_12$N = { class: 'el-dialog__footer' }
const _hoisted_13$G = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_14$C = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$1_ = /* @__PURE__ */ defineComponent({
props: {
modelValue: {
type: Boolean,
default: false,
},
data: {
type: Object,
default: null,
},
currentInfo: {
type: Object,
default: null,
},
defaultSubmit: {
type: Boolean,
default: false,
},
},
emits: ['update:modelValue', 'update:data', 'confirm'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const storageData2 = computed({
get() {
return props2.data
},
set(v4) {
emit2('update:data', v4)
},
})
const currentData = computed(() => {
if (props2.data) return storageData2.value
return currentStorage.value
})
const visible = computed({
get() {
return props2.modelValue
},
set(v4) {
emit2('update:modelValue', v4)
},
})
const confirm2 = async () => {
if (props2.defaultSubmit) {
const id2 = props2.currentInfo?.id
await setStorageSet(id2, currentData.value)
visible.value = false
} else {
emit2('confirm', currentData.value)
}
}
const getPath = async () => {
if (!currentData.value.enableClear) return
const path = await client.openDirectory()
if (path) currentData.value.backupPath = path
}
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_input = resolveComponent('el-input')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
modelValue: unref(visible),
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) =>
isRef(visible) ? (visible.value = $event) : null),
'append-to-body': true,
'close-on-click-modal': false,
title: '\u5B58\u50A8\u8BBE\u7F6E',
'custom-class': 'cms-el-dialog',
width: '580px',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$1T, [
createElementVNode('section', null, [
createElementVNode('div', _hoisted_2$1H, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(currentData).enableClear,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(currentData).enableClear = $event)),
class: 'cms-el-checkbox',
},
null,
8,
['modelValue']
),
_hoisted_3$1z,
]),
createElementVNode('div', _hoisted_4$1n, [
createElementVNode('div', _hoisted_5$1i, [
_hoisted_6$19,
createVNode$1(
TriggerFrequency$2,
{
disabled: !unref(currentData).enableClear,
value: unref(currentData).retentionValue,
'onUpdate:value':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(currentData).retentionValue = $event)),
unit: unref(currentData).retentionUnit,
'onUpdate:unit':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(currentData).retentionUnit = $event)),
unitFilters: '4,5,6',
},
null,
8,
['disabled', 'value', 'unit']
),
]),
createElementVNode('div', _hoisted_7$10, [
createVNode$1(
_component_el_checkbox,
{
disabled: !unref(currentData).enableClear,
modelValue: unref(currentData).backupBeforeClear,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(currentData).backupBeforeClear = $event)),
class: 'cms-el-checkbox',
},
null,
8,
['disabled', 'modelValue']
),
_hoisted_8$Y,
]),
createElementVNode('div', _hoisted_9$V, [
_hoisted_10$U,
createElementVNode('div', _hoisted_11$P, [
createVNode$1(
_component_el_input,
{
disabled:
!unref(currentData).enableClear ||
!unref(currentData).backupBeforeClear,
modelValue: unref(currentData).backupPath,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(currentData).backupPath = $event)),
placeholder: '\u8BF7\u8F93\u5165\u6216\u9009\u62E9',
},
null,
8,
['disabled', 'modelValue']
),
createElementVNode('i', {
class: 'iconfont icon-gengduo1',
onClick: getPath,
}),
]),
]),
]),
]),
]),
createElementVNode('div', _hoisted_12$N, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick:
_cache[5] ||
(_cache[5] = ($event) => (visible.value = false)),
},
{
default: withCtx(() => [_hoisted_13$G]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_14$C]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
)
)
}
},
})
var StorageSetting = /* @__PURE__ */ _export_sfc(_sfc_main$1_, [
['__scopeId', 'data-v-1093dbbe'],
])
var StorageSet = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: StorageSetting,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var HistoryConfig_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$1a = (n2) => (
pushScopeId('data-v-ac08290c'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1S = { class: 'dialog-content history-config' }
const _hoisted_2$1G = {
key: 0,
class: 'flex-row',
}
const _hoisted_3$1y = { class: 'type flex-row' }
const _hoisted_4$1m = /* @__PURE__ */ _withScopeId$1a(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u542F\u7528\u5386\u53F2\u5F52\u6863',
-1
)
)
const _hoisted_5$1h = { class: 'panel' }
const _hoisted_6$18 = { class: 'flex-row' }
const _hoisted_7$$ = /* @__PURE__ */ _withScopeId$1a(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'label' },
'\u8BB0\u5F55\u7C7B\u578B',
-1
)
)
const _hoisted_8$X = { class: 'type flex-row' }
const _hoisted_9$U = /* @__PURE__ */ _withScopeId$1a(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u542F\u7528\u6B7B\u533A',
-1
)
)
const _hoisted_10$T = /* @__PURE__ */ _withScopeId$1a(() =>
/* @__PURE__ */ createElementVNode(
'p',
null,
'\u6B7B\u533A\u914D\u7F6E\u7684\u76EE\u7684\u662F\u8FC7\u6EE4\u6389\u4E0D\u5FC5\u8981\u7684\u5C0F\u5E45\u5EA6\u53D8\u5316\uFF0C\u53EA\u8BB0\u5F55\u91CD\u8981\u7684\u53D8\u5316\u4E8B\u4EF6\u3002',
-1
)
)
const _hoisted_11$O = { class: 'flex-row' }
const _hoisted_12$M = /* @__PURE__ */ _withScopeId$1a(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'label' },
'\u6B7B\u533A\u7C7B\u578B',
-1
)
)
const _hoisted_13$F = { class: 'flex-row' }
const _hoisted_14$B = /* @__PURE__ */ _withScopeId$1a(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'label' },
'\u6B7B\u533A\u9608\u503C',
-1
)
)
const _hoisted_15$A = { class: 'type flex-row' }
const _hoisted_16$A = /* @__PURE__ */ _withScopeId$1a(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u542F\u7528\u6700\u5C0F\u65F6\u95F4\u95F4\u9694',
-1
)
)
const _hoisted_17$u = /* @__PURE__ */ _withScopeId$1a(() =>
/* @__PURE__ */ createElementVNode(
'p',
null,
'\u6700\u5C0F\u65F6\u95F4\u95F4\u9694\u914D\u7F6E\u7684\u76EE\u7684\u662F\u5728\u6570\u636E\u9891\u7E41\u53D8\u5316\u7684\u60C5\u51B5\u4E0B\uFF0C\u63A7\u5236\u8BB0\u5F55\u53D8\u5316\u7684\u7C92\u5EA6\u3002',
-1
)
)
const _hoisted_18$r = { class: 'flex-row' }
const _hoisted_19$p = /* @__PURE__ */ _withScopeId$1a(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'label' },
'\u65F6\u95F4\u95F4\u9694',
-1
)
)
const _hoisted_20$n = {
key: 1,
class: 'flex-row',
}
const _hoisted_21$i = /* @__PURE__ */ _withScopeId$1a(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'label' },
'\u65F6\u95F4\u95F4\u9694',
-1
)
)
const _hoisted_22$g = { class: 'el-dialog__footer' }
const _hoisted_23$d = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_24$d = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$1Z = /* @__PURE__ */ defineComponent({
props: {
modelValue: {
type: Boolean,
default: false,
},
data: {
type: Object,
default: null,
},
currentInfo: {
type: Object,
default: null,
},
defaultSubmit: {
type: Boolean,
default: false,
},
variableArchiveDisabled: {
type: Boolean,
default: false,
},
},
emits: ['update:modelValue', 'update:data', 'confirm'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const slot = useSlots()
const visible = computed({
get() {
return props2.modelValue
},
set(v4) {
emit2('update:modelValue', v4)
},
})
const historyData = computed({
get() {
return props2.data
},
set(v4) {
emit2('update:data', v4)
},
})
const currentData = computed(() => {
if (props2.data) return historyData.value
return currentFile.value
})
const isDisabled = computed(() => {
return (boolean) => {
return props2.variableArchiveDisabled || boolean
}
})
const recordType = ref([
{
label: '\u5B9A\u65F6\u8BB0\u5F55',
value: 0,
},
{
label: '\u53D8\u5316\u8BB0\u5F55',
value: 1,
},
])
const deadZoneType = ref([
{
label: '\u7EDD\u5BF9\u503C',
value: 0,
},
{
label: '\u767E\u5206\u6BD4',
value: 1,
},
])
const confirm2 = async () => {
if (props2.defaultSubmit) {
const id2 = props2.currentInfo?.id
await setFileConfig(id2, currentData.value)
visible.value = false
} else {
emit2('confirm', currentData.value)
}
}
const timeIntervalState = computed(() => {
if (currentData.value.archiveTyp === 0 || !currentData.value.archiveType)
return false
return (
!currentData.value.enableArchive || !currentData.value.enableMinInterval
)
})
const currentRecordState = computed(() => {
return currentData.value.archiveType === 0
})
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
modelValue: unref(visible),
'onUpdate:modelValue':
_cache[13] ||
(_cache[13] = ($event) =>
isRef(visible) ? (visible.value = $event) : null),
'append-to-body': true,
'close-on-click-modal': false,
title: '\u5386\u53F2\u5F52\u6863\u8BBE\u7F6E',
'custom-class': 'cms-el-dialog',
width: '640px',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$1S, [
createElementVNode('section', null, [
unref(slot).default
? (openBlock(),
createElementBlock('div', _hoisted_2$1G, [
renderSlot(_ctx.$slots, 'default', {}, void 0, true),
]))
: createCommentVNode('', true),
createElementVNode('div', _hoisted_3$1y, [
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(currentData).enableArchive,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(currentData).enableArchive = $event)),
disabled: unref(isDisabled)(),
class: 'cms-el-checkbox',
},
null,
8,
['modelValue', 'disabled']
),
_hoisted_4$1m,
]),
createElementVNode('div', _hoisted_5$1h, [
createElementVNode('div', _hoisted_6$18, [
_hoisted_7$$,
createVNode$1(
_component_el_select,
{
disabled: unref(isDisabled)(
!unref(currentData).enableArchive
),
modelValue: unref(currentData).archiveType,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(currentData).archiveType = $event)),
class: 'cms-el-select select-record',
style: { width: '100px' },
'popper-class': 'cms-el-select__popper',
placeholder: '\u8BF7\u9009\u62E9',
onChange:
_cache[2] ||
(_cache[2] = ($event) =>
_ctx.$emit('update:unit', $event)),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(recordType.value, (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['disabled', 'modelValue']
),
]),
!unref(currentRecordState)
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
createElementVNode('div', _hoisted_8$X, [
createVNode$1(
_component_el_checkbox,
{
disabled: unref(isDisabled)(
!unref(currentData).enableArchive
),
modelValue: unref(currentData).enableDeadZone,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(currentData).enableDeadZone =
$event)),
class: 'cms-el-checkbox',
},
null,
8,
['disabled', 'modelValue']
),
_hoisted_9$U,
]),
_hoisted_10$T,
createElementVNode('div', _hoisted_11$O, [
_hoisted_12$M,
createVNode$1(
_component_el_select,
{
disabled: unref(isDisabled)(
!unref(currentData).enableArchive ||
!unref(currentData).enableDeadZone
),
modelValue: unref(currentData).deadZoneType,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(currentData).deadZoneType =
$event)),
class: 'cms-el-select',
style: { width: '100px' },
'popper-class': 'cms-el-select__popper',
placeholder: '\u8BF7\u9009\u62E9',
onChange:
_cache[5] ||
(_cache[5] = ($event) =>
_ctx.$emit('update:unit', $event)),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
deadZoneType.value,
(item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 1,
},
8,
['disabled', 'modelValue']
),
]),
createElementVNode('div', _hoisted_13$F, [
_hoisted_14$B,
createVNode$1(
_component_el_input_number,
{
disabled: unref(isDisabled)(
!unref(currentData).enableArchive ||
!unref(currentData).enableDeadZone
),
modelValue:
unref(currentData).deadZoneThreshold,
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) =>
(unref(currentData).deadZoneThreshold =
$event)),
min: 0,
'controls-position': 'right',
class: 'cms-input-number',
precision: 2,
style: { width: '100px' },
},
null,
8,
['disabled', 'modelValue']
),
]),
createElementVNode('div', _hoisted_15$A, [
createVNode$1(
_component_el_checkbox,
{
disabled: unref(isDisabled)(
!unref(currentData).enableArchive
),
modelValue:
unref(currentData).enableMinInterval,
'onUpdate:modelValue':
_cache[7] ||
(_cache[7] = ($event) =>
(unref(currentData).enableMinInterval =
$event)),
class: 'cms-el-checkbox',
},
null,
8,
['disabled', 'modelValue']
),
_hoisted_16$A,
]),
_hoisted_17$u,
createElementVNode('div', _hoisted_18$r, [
_hoisted_19$p,
createVNode$1(
TriggerFrequency$2,
{
disabled: unref(isDisabled)(
unref(timeIntervalState)
),
value: unref(currentData).minIntervalValue,
'onUpdate:value':
_cache[8] ||
(_cache[8] = ($event) =>
(unref(currentData).minIntervalValue =
$event)),
unit: unref(currentData).minIntervalUnit,
'onUpdate:unit':
_cache[9] ||
(_cache[9] = ($event) =>
(unref(currentData).minIntervalUnit =
$event)),
unitFilters: '1,2,3',
},
null,
8,
['disabled', 'value', 'unit']
),
]),
],
64
))
: createCommentVNode('', true),
unref(currentRecordState)
? (openBlock(),
createElementBlock('div', _hoisted_20$n, [
_hoisted_21$i,
createVNode$1(
TriggerFrequency$2,
{
disabled: unref(isDisabled)(
!unref(currentData).enableArchive
),
value: unref(currentData).intervalValue,
'onUpdate:value':
_cache[10] ||
(_cache[10] = ($event) =>
(unref(currentData).intervalValue = $event)),
unit: unref(currentData).intervalUnit,
'onUpdate:unit':
_cache[11] ||
(_cache[11] = ($event) =>
(unref(currentData).intervalUnit = $event)),
unitFilters: '1,2,3',
},
null,
8,
['disabled', 'value', 'unit']
),
]))
: createCommentVNode('', true),
]),
]),
]),
createElementVNode('div', _hoisted_22$g, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick:
_cache[12] ||
(_cache[12] = ($event) => (visible.value = false)),
},
{
default: withCtx(() => [_hoisted_23$d]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_24$d]),
_: 1,
}
),
]),
]),
_: 3,
},
8,
['modelValue']
)
)
}
},
})
var HistoryConfigDialog = /* @__PURE__ */ _export_sfc(_sfc_main$1Z, [
['__scopeId', 'data-v-ac08290c'],
])
var HistoryConfig = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: HistoryConfigDialog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var MoveFolder_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$1R = { class: 'tree-move' }
const _hoisted_2$1F = { class: 'node flex hover' }
const _hoisted_3$1x = { class: 'el-dialog__footer' }
const _hoisted_4$1l = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_5$1g = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$1Y = /* @__PURE__ */ defineComponent({
props: {
modelValue: {
type: Boolean,
default: false,
},
info: {
type: String,
default: '',
},
title: {
type: String,
default: '',
},
name: {
type: String,
default: '',
},
},
emits: ['submit', 'close', 'update:modelValue'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const treeRef = ref()
const visible = computed({
get() {
return props2.modelValue
},
set(v4) {
emit2('update:modelValue', v4)
},
})
const historyFolderList = computed(() => {
return historyList.value.filter((item2) => {
return item2.name !== '\u9ED8\u8BA4\u7EC4'
})
})
const filterText = ref('')
const selectId = ref('')
const clickSelectPage = (node2) => {
if (node2.data.type === 2) {
selectId.value = node2.data.id
}
}
const onMoveDialog = () => {
selectId.value = ''
treeRef.value && treeRef.value.clearSelectNodes()
}
const close2 = () => {
visible.value = false
selectId.value = ''
}
const confirm2 = () => {
if (!selectId.value)
return ElMessage.warning('\u8BF7\u9009\u62E9\u5386\u53F2\u7EC4')
emit2('submit', selectId.value)
visible.value = false
}
return (_ctx, _cache) => {
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', _hoisted_1$1R, [
createVNode$1(
_component_el_dialog,
{
modelValue: unref(visible),
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
isRef(visible) ? (visible.value = $event) : null),
'append-to-body': true,
'close-on-click-modal': false,
title: '\u79FB\u52A8\u5230',
onClosed: close2,
onOpen: onMoveDialog,
'custom-class': 'cms-el-dialog tree-move-dialog',
width: '300px',
},
{
default: withCtx(() => [
createVNode$1(
VirtualTree,
{
ref_key: 'treeRef',
ref: treeRef,
data: unref(historyFolderList),
draggable: false,
'default-expand-all': '',
props: { children: 'children' },
filterText: filterText.value,
onNodeClick: clickSelectPage,
},
{
default: withCtx(({ node: node2, data: data2 }) => [
createElementVNode('div', _hoisted_2$1F, [
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont menu',
data2.type === 1
? 'icon-wenjianjia distance'
: 'icon-yemian distance',
]),
},
null,
2
),
createVNode$1(
EllipsisTooltip,
{
width: '100%',
content: node2.label,
},
null,
8,
['content']
),
]),
]),
_: 1,
},
8,
['data', 'filterText']
),
createElementVNode('div', _hoisted_3$1x, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: close2,
},
{
default: withCtx(() => [_hoisted_4$1l]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_5$1g]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
),
])
)
}
},
})
var MoveFolder = /* @__PURE__ */ _export_sfc(_sfc_main$1Y, [
['__scopeId', 'data-v-d01a7962'],
])
var MoveFolder$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: MoveFolder,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
function listCacheClear$1() {
this.__data__ = []
this.size = 0
}
var _listCacheClear = listCacheClear$1
function eq$2(value2, other) {
return value2 === other || (value2 !== value2 && other !== other)
}
var eq_1 = eq$2
var eq$1 = eq_1
function assocIndexOf$4(array4, key2) {
var length2 = array4.length
while (length2--) {
if (eq$1(array4[length2][0], key2)) {
return length2
}
}
return -1
}
var _assocIndexOf = assocIndexOf$4
var assocIndexOf$3 = _assocIndexOf
var arrayProto = Array.prototype
var splice = arrayProto.splice
function listCacheDelete$1(key2) {
var data2 = this.__data__,
index2 = assocIndexOf$3(data2, key2)
if (index2 < 0) {
return false
}
var lastIndex = data2.length - 1
if (index2 == lastIndex) {
data2.pop()
} else {
splice.call(data2, index2, 1)
}
--this.size
return true
}
var _listCacheDelete = listCacheDelete$1
var assocIndexOf$2 = _assocIndexOf
function listCacheGet$1(key2) {
var data2 = this.__data__,
index2 = assocIndexOf$2(data2, key2)
return index2 < 0 ? void 0 : data2[index2][1]
}
var _listCacheGet = listCacheGet$1
var assocIndexOf$1 = _assocIndexOf
function listCacheHas$1(key2) {
return assocIndexOf$1(this.__data__, key2) > -1
}
var _listCacheHas = listCacheHas$1
var assocIndexOf = _assocIndexOf
function listCacheSet$1(key2, value2) {
var data2 = this.__data__,
index2 = assocIndexOf(data2, key2)
if (index2 < 0) {
++this.size
data2.push([key2, value2])
} else {
data2[index2][1] = value2
}
return this
}
var _listCacheSet = listCacheSet$1
var listCacheClear = _listCacheClear,
listCacheDelete = _listCacheDelete,
listCacheGet = _listCacheGet,
listCacheHas = _listCacheHas,
listCacheSet = _listCacheSet
function ListCache$4(entries2) {
var index2 = -1,
length2 = entries2 == null ? 0 : entries2.length
this.clear()
while (++index2 < length2) {
var entry = entries2[index2]
this.set(entry[0], entry[1])
}
}
ListCache$4.prototype.clear = listCacheClear
ListCache$4.prototype['delete'] = listCacheDelete
ListCache$4.prototype.get = listCacheGet
ListCache$4.prototype.has = listCacheHas
ListCache$4.prototype.set = listCacheSet
var _ListCache = ListCache$4
var ListCache$3 = _ListCache
function stackClear$1() {
this.__data__ = new ListCache$3()
this.size = 0
}
var _stackClear = stackClear$1
function stackDelete$1(key2) {
var data2 = this.__data__,
result = data2['delete'](key2)
this.size = data2.size
return result
}
var _stackDelete = stackDelete$1
function stackGet$1(key2) {
return this.__data__.get(key2)
}
var _stackGet = stackGet$1
function stackHas$1(key2) {
return this.__data__.has(key2)
}
var _stackHas = stackHas$1
var freeGlobal$1 =
typeof commonjsGlobal == 'object' &&
commonjsGlobal &&
commonjsGlobal.Object === Object &&
commonjsGlobal
var _freeGlobal = freeGlobal$1
var freeGlobal = _freeGlobal
var freeSelf = typeof self == 'object' && self && self.Object === Object && self
var root$8 = freeGlobal || freeSelf || Function('return this')()
var _root = root$8
var root$7 = _root
var Symbol$4 = root$7.Symbol
var _Symbol = Symbol$4
var Symbol$3 = _Symbol
var objectProto$c = Object.prototype
var hasOwnProperty$a = objectProto$c.hasOwnProperty
var nativeObjectToString$1 = objectProto$c.toString
var symToStringTag$1 = Symbol$3 ? Symbol$3.toStringTag : void 0
function getRawTag$1(value2) {
var isOwn = hasOwnProperty$a.call(value2, symToStringTag$1),
tag = value2[symToStringTag$1]
try {
value2[symToStringTag$1] = void 0
var unmasked = true
} catch (e2) {}
var result = nativeObjectToString$1.call(value2)
if (unmasked) {
if (isOwn) {
value2[symToStringTag$1] = tag
} else {
delete value2[symToStringTag$1]
}
}
return result
}
var _getRawTag = getRawTag$1
var objectProto$b = Object.prototype
var nativeObjectToString = objectProto$b.toString
function objectToString$2(value2) {
return nativeObjectToString.call(value2)
}
var _objectToString = objectToString$2
var Symbol$2 = _Symbol,
getRawTag = _getRawTag,
objectToString$1 = _objectToString
var nullTag = '[object Null]',
undefinedTag = '[object Undefined]'
var symToStringTag = Symbol$2 ? Symbol$2.toStringTag : void 0
function baseGetTag$4(value2) {
if (value2 == null) {
return value2 === void 0 ? undefinedTag : nullTag
}
return symToStringTag && symToStringTag in Object(value2)
? getRawTag(value2)
: objectToString$1(value2)
}
var _baseGetTag = baseGetTag$4
function isObject$7(value2) {
var type4 = typeof value2
return value2 != null && (type4 == 'object' || type4 == 'function')
}
var isObject_1 = isObject$7
var baseGetTag$3 = _baseGetTag,
isObject$6 = isObject_1
var asyncTag = '[object AsyncFunction]',
funcTag$2 = '[object Function]',
genTag$1 = '[object GeneratorFunction]',
proxyTag = '[object Proxy]'
function isFunction$3(value2) {
if (!isObject$6(value2)) {
return false
}
var tag = baseGetTag$3(value2)
return (
tag == funcTag$2 || tag == genTag$1 || tag == asyncTag || tag == proxyTag
)
}
var isFunction_1 = isFunction$3
var root$6 = _root
var coreJsData$1 = root$6['__core-js_shared__']
var _coreJsData = coreJsData$1
var coreJsData = _coreJsData
var maskSrcKey = (function () {
var uid2 = /[^.]+$/.exec(
(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO) || ''
)
return uid2 ? 'Symbol(src)_1.' + uid2 : ''
})()
function isMasked$1(func) {
return !!maskSrcKey && maskSrcKey in func
}
var _isMasked = isMasked$1
var funcProto$1 = Function.prototype
var funcToString$1 = funcProto$1.toString
function toSource$2(func) {
if (func != null) {
try {
return funcToString$1.call(func)
} catch (e2) {}
try {
return func + ''
} catch (e2) {}
}
return ''
}
var _toSource = toSource$2
var isFunction$2 = isFunction_1,
isMasked = _isMasked,
isObject$5 = isObject_1,
toSource$1 = _toSource
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g
var reIsHostCtor = /^\[object .+?Constructor\]$/
var funcProto = Function.prototype,
objectProto$a = Object.prototype
var funcToString = funcProto.toString
var hasOwnProperty$9 = objectProto$a.hasOwnProperty
var reIsNative = RegExp(
'^' +
funcToString
.call(hasOwnProperty$9)
.replace(reRegExpChar, '\\$&')
.replace(
/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,
'$1.*?'
) +
'$'
)
function baseIsNative$1(value2) {
if (!isObject$5(value2) || isMasked(value2)) {
return false
}
var pattern4 = isFunction$2(value2) ? reIsNative : reIsHostCtor
return pattern4.test(toSource$1(value2))
}
var _baseIsNative = baseIsNative$1
function getValue$1(object4, key2) {
return object4 == null ? void 0 : object4[key2]
}
var _getValue = getValue$1
var baseIsNative = _baseIsNative,
getValue = _getValue
function getNative$7(object4, key2) {
var value2 = getValue(object4, key2)
return baseIsNative(value2) ? value2 : void 0
}
var _getNative = getNative$7
var getNative$6 = _getNative,
root$5 = _root
var Map$4 = getNative$6(root$5, 'Map')
var _Map = Map$4
var getNative$5 = _getNative
var nativeCreate$4 = getNative$5(Object, 'create')
var _nativeCreate = nativeCreate$4
var nativeCreate$3 = _nativeCreate
function hashClear$1() {
this.__data__ = nativeCreate$3 ? nativeCreate$3(null) : {}
this.size = 0
}
var _hashClear = hashClear$1
function hashDelete$1(key2) {
var result = this.has(key2) && delete this.__data__[key2]
this.size -= result ? 1 : 0
return result
}
var _hashDelete = hashDelete$1
var nativeCreate$2 = _nativeCreate
var HASH_UNDEFINED$1 = '__lodash_hash_undefined__'
var objectProto$9 = Object.prototype
var hasOwnProperty$8 = objectProto$9.hasOwnProperty
function hashGet$1(key2) {
var data2 = this.__data__
if (nativeCreate$2) {
var result = data2[key2]
return result === HASH_UNDEFINED$1 ? void 0 : result
}
return hasOwnProperty$8.call(data2, key2) ? data2[key2] : void 0
}
var _hashGet = hashGet$1
var nativeCreate$1 = _nativeCreate
var objectProto$8 = Object.prototype
var hasOwnProperty$7 = objectProto$8.hasOwnProperty
function hashHas$1(key2) {
var data2 = this.__data__
return nativeCreate$1
? data2[key2] !== void 0
: hasOwnProperty$7.call(data2, key2)
}
var _hashHas = hashHas$1
var nativeCreate = _nativeCreate
var HASH_UNDEFINED = '__lodash_hash_undefined__'
function hashSet$1(key2, value2) {
var data2 = this.__data__
this.size += this.has(key2) ? 0 : 1
data2[key2] = nativeCreate && value2 === void 0 ? HASH_UNDEFINED : value2
return this
}
var _hashSet = hashSet$1
var hashClear = _hashClear,
hashDelete = _hashDelete,
hashGet = _hashGet,
hashHas = _hashHas,
hashSet = _hashSet
function Hash$1(entries2) {
var index2 = -1,
length2 = entries2 == null ? 0 : entries2.length
this.clear()
while (++index2 < length2) {
var entry = entries2[index2]
this.set(entry[0], entry[1])
}
}
Hash$1.prototype.clear = hashClear
Hash$1.prototype['delete'] = hashDelete
Hash$1.prototype.get = hashGet
Hash$1.prototype.has = hashHas
Hash$1.prototype.set = hashSet
var _Hash = Hash$1
var Hash = _Hash,
ListCache$2 = _ListCache,
Map$3 = _Map
function mapCacheClear$1() {
this.size = 0
this.__data__ = {
hash: new Hash(),
map: new (Map$3 || ListCache$2)(),
string: new Hash(),
}
}
var _mapCacheClear = mapCacheClear$1
function isKeyable$1(value2) {
var type4 = typeof value2
return type4 == 'string' ||
type4 == 'number' ||
type4 == 'symbol' ||
type4 == 'boolean'
? value2 !== '__proto__'
: value2 === null
}
var _isKeyable = isKeyable$1
var isKeyable = _isKeyable
function getMapData$4(map2, key2) {
var data2 = map2.__data__
return isKeyable(key2)
? data2[typeof key2 == 'string' ? 'string' : 'hash']
: data2.map
}
var _getMapData = getMapData$4
var getMapData$3 = _getMapData
function mapCacheDelete$1(key2) {
var result = getMapData$3(this, key2)['delete'](key2)
this.size -= result ? 1 : 0
return result
}
var _mapCacheDelete = mapCacheDelete$1
var getMapData$2 = _getMapData
function mapCacheGet$1(key2) {
return getMapData$2(this, key2).get(key2)
}
var _mapCacheGet = mapCacheGet$1
var getMapData$1 = _getMapData
function mapCacheHas$1(key2) {
return getMapData$1(this, key2).has(key2)
}
var _mapCacheHas = mapCacheHas$1
var getMapData = _getMapData
function mapCacheSet$1(key2, value2) {
var data2 = getMapData(this, key2),
size = data2.size
data2.set(key2, value2)
this.size += data2.size == size ? 0 : 1
return this
}
var _mapCacheSet = mapCacheSet$1
var mapCacheClear = _mapCacheClear,
mapCacheDelete = _mapCacheDelete,
mapCacheGet = _mapCacheGet,
mapCacheHas = _mapCacheHas,
mapCacheSet = _mapCacheSet
function MapCache$1(entries2) {
var index2 = -1,
length2 = entries2 == null ? 0 : entries2.length
this.clear()
while (++index2 < length2) {
var entry = entries2[index2]
this.set(entry[0], entry[1])
}
}
MapCache$1.prototype.clear = mapCacheClear
MapCache$1.prototype['delete'] = mapCacheDelete
MapCache$1.prototype.get = mapCacheGet
MapCache$1.prototype.has = mapCacheHas
MapCache$1.prototype.set = mapCacheSet
var _MapCache = MapCache$1
var ListCache$1 = _ListCache,
Map$2 = _Map,
MapCache = _MapCache
var LARGE_ARRAY_SIZE = 200
function stackSet$1(key2, value2) {
var data2 = this.__data__
if (data2 instanceof ListCache$1) {
var pairs = data2.__data__
if (!Map$2 || pairs.length < LARGE_ARRAY_SIZE - 1) {
pairs.push([key2, value2])
this.size = ++data2.size
return this
}
data2 = this.__data__ = new MapCache(pairs)
}
data2.set(key2, value2)
this.size = data2.size
return this
}
var _stackSet = stackSet$1
var ListCache = _ListCache,
stackClear = _stackClear,
stackDelete = _stackDelete,
stackGet = _stackGet,
stackHas = _stackHas,
stackSet = _stackSet
function Stack$1(entries2) {
var data2 = (this.__data__ = new ListCache(entries2))
this.size = data2.size
}
Stack$1.prototype.clear = stackClear
Stack$1.prototype['delete'] = stackDelete
Stack$1.prototype.get = stackGet
Stack$1.prototype.has = stackHas
Stack$1.prototype.set = stackSet
var _Stack = Stack$1
function arrayEach$1(array4, iteratee) {
var index2 = -1,
length2 = array4 == null ? 0 : array4.length
while (++index2 < length2) {
if (iteratee(array4[index2], index2, array4) === false) {
break
}
}
return array4
}
var _arrayEach = arrayEach$1
var getNative$4 = _getNative
var defineProperty$1 = (function () {
try {
var func = getNative$4(Object, 'defineProperty')
func({}, '', {})
return func
} catch (e2) {}
})()
var _defineProperty = defineProperty$1
var defineProperty = _defineProperty
function baseAssignValue$2(object4, key2, value2) {
if (key2 == '__proto__' && defineProperty) {
defineProperty(object4, key2, {
configurable: true,
enumerable: true,
value: value2,
writable: true,
})
} else {
object4[key2] = value2
}
}
var _baseAssignValue = baseAssignValue$2
var baseAssignValue$1 = _baseAssignValue,
eq = eq_1
var objectProto$7 = Object.prototype
var hasOwnProperty$6 = objectProto$7.hasOwnProperty
function assignValue$2(object4, key2, value2) {
var objValue = object4[key2]
if (
!(hasOwnProperty$6.call(object4, key2) && eq(objValue, value2)) ||
(value2 === void 0 && !(key2 in object4))
) {
baseAssignValue$1(object4, key2, value2)
}
}
var _assignValue = assignValue$2
var assignValue$1 = _assignValue,
baseAssignValue = _baseAssignValue
function copyObject$4(source2, props2, object4, customizer) {
var isNew = !object4
object4 || (object4 = {})
var index2 = -1,
length2 = props2.length
while (++index2 < length2) {
var key2 = props2[index2]
var newValue = customizer
? customizer(object4[key2], source2[key2], key2, object4, source2)
: void 0
if (newValue === void 0) {
newValue = source2[key2]
}
if (isNew) {
baseAssignValue(object4, key2, newValue)
} else {
assignValue$1(object4, key2, newValue)
}
}
return object4
}
var _copyObject = copyObject$4
function baseTimes$1(n2, iteratee) {
var index2 = -1,
result = Array(n2)
while (++index2 < n2) {
result[index2] = iteratee(index2)
}
return result
}
var _baseTimes = baseTimes$1
function isObjectLike$5(value2) {
return value2 != null && typeof value2 == 'object'
}
var isObjectLike_1 = isObjectLike$5
var baseGetTag$2 = _baseGetTag,
isObjectLike$4 = isObjectLike_1
var argsTag$2 = '[object Arguments]'
function baseIsArguments$1(value2) {
return isObjectLike$4(value2) && baseGetTag$2(value2) == argsTag$2
}
var _baseIsArguments = baseIsArguments$1
var baseIsArguments = _baseIsArguments,
isObjectLike$3 = isObjectLike_1
var objectProto$6 = Object.prototype
var hasOwnProperty$5 = objectProto$6.hasOwnProperty
var propertyIsEnumerable$1 = objectProto$6.propertyIsEnumerable
var isArguments$1 = baseIsArguments(
(function () {
return arguments
})()
)
? baseIsArguments
: function (value2) {
return (
isObjectLike$3(value2) &&
hasOwnProperty$5.call(value2, 'callee') &&
!propertyIsEnumerable$1.call(value2, 'callee')
)
}
var isArguments_1 = isArguments$1
var isArray$4 = Array.isArray
var isArray_1 = isArray$4
var isBuffer$2 = { exports: {} }
function stubFalse() {
return false
}
var stubFalse_1 = stubFalse
;(function (module2, exports2) {
var root2 = _root,
stubFalse2 = stubFalse_1
var freeExports2 = exports2 && !exports2.nodeType && exports2
var freeModule2 =
freeExports2 && true && module2 && !module2.nodeType && module2
var moduleExports2 = freeModule2 && freeModule2.exports === freeExports2
var Buffer2 = moduleExports2 ? root2.Buffer : void 0
var nativeIsBuffer2 = Buffer2 ? Buffer2.isBuffer : void 0
var isBuffer2 = nativeIsBuffer2 || stubFalse2
module2.exports = isBuffer2
})(isBuffer$2, isBuffer$2.exports)
var MAX_SAFE_INTEGER$1 = 9007199254740991
var reIsUint = /^(?:0|[1-9]\d*)$/
function isIndex$1(value2, length2) {
var type4 = typeof value2
length2 = length2 == null ? MAX_SAFE_INTEGER$1 : length2
return (
!!length2 &&
(type4 == 'number' || (type4 != 'symbol' && reIsUint.test(value2))) &&
value2 > -1 &&
value2 % 1 == 0 &&
value2 < length2
)
}
var _isIndex = isIndex$1
var MAX_SAFE_INTEGER = 9007199254740991
function isLength$2(value2) {
return (
typeof value2 == 'number' &&
value2 > -1 &&
value2 % 1 == 0 &&
value2 <= MAX_SAFE_INTEGER
)
}
var isLength_1 = isLength$2
var baseGetTag$1 = _baseGetTag,
isLength$1 = isLength_1,
isObjectLike$2 = isObjectLike_1
var argsTag$1 = '[object Arguments]',
arrayTag$1 = '[object Array]',
boolTag$2 = '[object Boolean]',
dateTag$2 = '[object Date]',
errorTag$1 = '[object Error]',
funcTag$1 = '[object Function]',
mapTag$4 = '[object Map]',
numberTag$2 = '[object Number]',
objectTag$2 = '[object Object]',
regexpTag$2 = '[object RegExp]',
setTag$4 = '[object Set]',
stringTag$2 = '[object String]',
weakMapTag$2 = '[object WeakMap]'
var arrayBufferTag$2 = '[object ArrayBuffer]',
dataViewTag$3 = '[object DataView]',
float32Tag$2 = '[object Float32Array]',
float64Tag$2 = '[object Float64Array]',
int8Tag$2 = '[object Int8Array]',
int16Tag$2 = '[object Int16Array]',
int32Tag$2 = '[object Int32Array]',
uint8Tag$2 = '[object Uint8Array]',
uint8ClampedTag$2 = '[object Uint8ClampedArray]',
uint16Tag$2 = '[object Uint16Array]',
uint32Tag$2 = '[object Uint32Array]'
var typedArrayTags = {}
typedArrayTags[float32Tag$2] =
typedArrayTags[float64Tag$2] =
typedArrayTags[int8Tag$2] =
typedArrayTags[int16Tag$2] =
typedArrayTags[int32Tag$2] =
typedArrayTags[uint8Tag$2] =
typedArrayTags[uint8ClampedTag$2] =
typedArrayTags[uint16Tag$2] =
typedArrayTags[uint32Tag$2] =
true
typedArrayTags[argsTag$1] =
typedArrayTags[arrayTag$1] =
typedArrayTags[arrayBufferTag$2] =
typedArrayTags[boolTag$2] =
typedArrayTags[dataViewTag$3] =
typedArrayTags[dateTag$2] =
typedArrayTags[errorTag$1] =
typedArrayTags[funcTag$1] =
typedArrayTags[mapTag$4] =
typedArrayTags[numberTag$2] =
typedArrayTags[objectTag$2] =
typedArrayTags[regexpTag$2] =
typedArrayTags[setTag$4] =
typedArrayTags[stringTag$2] =
typedArrayTags[weakMapTag$2] =
false
function baseIsTypedArray$1(value2) {
return (
isObjectLike$2(value2) &&
isLength$1(value2.length) &&
!!typedArrayTags[baseGetTag$1(value2)]
)
}
var _baseIsTypedArray = baseIsTypedArray$1
function baseUnary$3(func) {
return function (value2) {
return func(value2)
}
}
var _baseUnary = baseUnary$3
var _nodeUtil = { exports: {} }
;(function (module2, exports2) {
var freeGlobal2 = _freeGlobal
var freeExports2 = exports2 && !exports2.nodeType && exports2
var freeModule2 =
freeExports2 && true && module2 && !module2.nodeType && module2
var moduleExports2 = freeModule2 && freeModule2.exports === freeExports2
var freeProcess2 = moduleExports2 && freeGlobal2.process
var nodeUtil2 = (function () {
try {
var types2 =
freeModule2 && freeModule2.require && freeModule2.require('util').types
if (types2) {
return types2
}
return (
freeProcess2 && freeProcess2.binding && freeProcess2.binding('util')
)
} catch (e2) {}
})()
module2.exports = nodeUtil2
})(_nodeUtil, _nodeUtil.exports)
var baseIsTypedArray = _baseIsTypedArray,
baseUnary$2 = _baseUnary,
nodeUtil$2 = _nodeUtil.exports
var nodeIsTypedArray = nodeUtil$2 && nodeUtil$2.isTypedArray
var isTypedArray$1 = nodeIsTypedArray
? baseUnary$2(nodeIsTypedArray)
: baseIsTypedArray
var isTypedArray_1 = isTypedArray$1
var baseTimes = _baseTimes,
isArguments = isArguments_1,
isArray$3 = isArray_1,
isBuffer$1 = isBuffer$2.exports,
isIndex = _isIndex,
isTypedArray = isTypedArray_1
var objectProto$5 = Object.prototype
var hasOwnProperty$4 = objectProto$5.hasOwnProperty
function arrayLikeKeys$2(value2, inherited) {
var isArr = isArray$3(value2),
isArg = !isArr && isArguments(value2),
isBuff = !isArr && !isArg && isBuffer$1(value2),
isType = !isArr && !isArg && !isBuff && isTypedArray(value2),
skipIndexes = isArr || isArg || isBuff || isType,
result = skipIndexes ? baseTimes(value2.length, String) : [],
length2 = result.length
for (var key2 in value2) {
if (
(inherited || hasOwnProperty$4.call(value2, key2)) &&
!(
skipIndexes &&
(key2 == 'length' ||
(isBuff && (key2 == 'offset' || key2 == 'parent')) ||
(isType &&
(key2 == 'buffer' ||
key2 == 'byteLength' ||
key2 == 'byteOffset')) ||
isIndex(key2, length2))
)
) {
result.push(key2)
}
}
return result
}
var _arrayLikeKeys = arrayLikeKeys$2
var objectProto$4 = Object.prototype
function isPrototype$3(value2) {
var Ctor = value2 && value2.constructor,
proto2 = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$4
return value2 === proto2
}
var _isPrototype = isPrototype$3
function overArg$2(func, transform3) {
return function (arg) {
return func(transform3(arg))
}
}
var _overArg = overArg$2
var overArg$1 = _overArg
var nativeKeys$1 = overArg$1(Object.keys, Object)
var _nativeKeys = nativeKeys$1
var isPrototype$2 = _isPrototype,
nativeKeys = _nativeKeys
var objectProto$3 = Object.prototype
var hasOwnProperty$3 = objectProto$3.hasOwnProperty
function baseKeys$1(object4) {
if (!isPrototype$2(object4)) {
return nativeKeys(object4)
}
var result = []
for (var key2 in Object(object4)) {
if (hasOwnProperty$3.call(object4, key2) && key2 != 'constructor') {
result.push(key2)
}
}
return result
}
var _baseKeys = baseKeys$1
var isFunction$1 = isFunction_1,
isLength = isLength_1
function isArrayLike$2(value2) {
return value2 != null && isLength(value2.length) && !isFunction$1(value2)
}
var isArrayLike_1 = isArrayLike$2
var arrayLikeKeys$1 = _arrayLikeKeys,
baseKeys = _baseKeys,
isArrayLike$1 = isArrayLike_1
function keys$3(object4) {
return isArrayLike$1(object4) ? arrayLikeKeys$1(object4) : baseKeys(object4)
}
var keys_1 = keys$3
var copyObject$3 = _copyObject,
keys$2 = keys_1
function baseAssign$1(object4, source2) {
return object4 && copyObject$3(source2, keys$2(source2), object4)
}
var _baseAssign = baseAssign$1
function nativeKeysIn$1(object4) {
var result = []
if (object4 != null) {
for (var key2 in Object(object4)) {
result.push(key2)
}
}
return result
}
var _nativeKeysIn = nativeKeysIn$1
var isObject$4 = isObject_1,
isPrototype$1 = _isPrototype,
nativeKeysIn = _nativeKeysIn
var objectProto$2 = Object.prototype
var hasOwnProperty$2 = objectProto$2.hasOwnProperty
function baseKeysIn$1(object4) {
if (!isObject$4(object4)) {
return nativeKeysIn(object4)
}
var isProto = isPrototype$1(object4),
result = []
for (var key2 in object4) {
if (
!(
key2 == 'constructor' &&
(isProto || !hasOwnProperty$2.call(object4, key2))
)
) {
result.push(key2)
}
}
return result
}
var _baseKeysIn = baseKeysIn$1
var arrayLikeKeys = _arrayLikeKeys,
baseKeysIn = _baseKeysIn,
isArrayLike = isArrayLike_1
function keysIn$3(object4) {
return isArrayLike(object4)
? arrayLikeKeys(object4, true)
: baseKeysIn(object4)
}
var keysIn_1 = keysIn$3
var copyObject$2 = _copyObject,
keysIn$2 = keysIn_1
function baseAssignIn$1(object4, source2) {
return object4 && copyObject$2(source2, keysIn$2(source2), object4)
}
var _baseAssignIn = baseAssignIn$1
var _cloneBuffer = { exports: {} }
;(function (module2, exports2) {
var root2 = _root
var freeExports2 = exports2 && !exports2.nodeType && exports2
var freeModule2 =
freeExports2 && true && module2 && !module2.nodeType && module2
var moduleExports2 = freeModule2 && freeModule2.exports === freeExports2
var Buffer2 = moduleExports2 ? root2.Buffer : void 0,
allocUnsafe2 = Buffer2 ? Buffer2.allocUnsafe : void 0
function cloneBuffer2(buffer, isDeep) {
if (isDeep) {
return buffer.slice()
}
var length2 = buffer.length,
result = allocUnsafe2
? allocUnsafe2(length2)
: new buffer.constructor(length2)
buffer.copy(result)
return result
}
module2.exports = cloneBuffer2
})(_cloneBuffer, _cloneBuffer.exports)
function copyArray$1(source2, array4) {
var index2 = -1,
length2 = source2.length
array4 || (array4 = Array(length2))
while (++index2 < length2) {
array4[index2] = source2[index2]
}
return array4
}
var _copyArray = copyArray$1
function arrayFilter$1(array4, predicate) {
var index2 = -1,
length2 = array4 == null ? 0 : array4.length,
resIndex = 0,
result = []
while (++index2 < length2) {
var value2 = array4[index2]
if (predicate(value2, index2, array4)) {
result[resIndex++] = value2
}
}
return result
}
var _arrayFilter = arrayFilter$1
function stubArray$2() {
return []
}
var stubArray_1 = stubArray$2
var arrayFilter = _arrayFilter,
stubArray$1 = stubArray_1
var objectProto$1 = Object.prototype
var propertyIsEnumerable = objectProto$1.propertyIsEnumerable
var nativeGetSymbols$1 = Object.getOwnPropertySymbols
var getSymbols$3 = !nativeGetSymbols$1
? stubArray$1
: function (object4) {
if (object4 == null) {
return []
}
object4 = Object(object4)
return arrayFilter(nativeGetSymbols$1(object4), function (symbol) {
return propertyIsEnumerable.call(object4, symbol)
})
}
var _getSymbols = getSymbols$3
var copyObject$1 = _copyObject,
getSymbols$2 = _getSymbols
function copySymbols$1(source2, object4) {
return copyObject$1(source2, getSymbols$2(source2), object4)
}
var _copySymbols = copySymbols$1
function arrayPush$2(array4, values2) {
var index2 = -1,
length2 = values2.length,
offset2 = array4.length
while (++index2 < length2) {
array4[offset2 + index2] = values2[index2]
}
return array4
}
var _arrayPush = arrayPush$2
var overArg = _overArg
var getPrototype$2 = overArg(Object.getPrototypeOf, Object)
var _getPrototype = getPrototype$2
var arrayPush$1 = _arrayPush,
getPrototype$1 = _getPrototype,
getSymbols$1 = _getSymbols,
stubArray = stubArray_1
var nativeGetSymbols = Object.getOwnPropertySymbols
var getSymbolsIn$2 = !nativeGetSymbols
? stubArray
: function (object4) {
var result = []
while (object4) {
arrayPush$1(result, getSymbols$1(object4))
object4 = getPrototype$1(object4)
}
return result
}
var _getSymbolsIn = getSymbolsIn$2
var copyObject = _copyObject,
getSymbolsIn$1 = _getSymbolsIn
function copySymbolsIn$1(source2, object4) {
return copyObject(source2, getSymbolsIn$1(source2), object4)
}
var _copySymbolsIn = copySymbolsIn$1
var arrayPush = _arrayPush,
isArray$2 = isArray_1
function baseGetAllKeys$2(object4, keysFunc, symbolsFunc) {
var result = keysFunc(object4)
return isArray$2(object4) ? result : arrayPush(result, symbolsFunc(object4))
}
var _baseGetAllKeys = baseGetAllKeys$2
var baseGetAllKeys$1 = _baseGetAllKeys,
getSymbols = _getSymbols,
keys$1 = keys_1
function getAllKeys$1(object4) {
return baseGetAllKeys$1(object4, keys$1, getSymbols)
}
var _getAllKeys = getAllKeys$1
var baseGetAllKeys = _baseGetAllKeys,
getSymbolsIn = _getSymbolsIn,
keysIn$1 = keysIn_1
function getAllKeysIn$1(object4) {
return baseGetAllKeys(object4, keysIn$1, getSymbolsIn)
}
var _getAllKeysIn = getAllKeysIn$1
var getNative$3 = _getNative,
root$4 = _root
var DataView$2 = getNative$3(root$4, 'DataView')
var _DataView = DataView$2
var getNative$2 = _getNative,
root$3 = _root
var Promise$2 = getNative$2(root$3, 'Promise')
var _Promise = Promise$2
var getNative$1 = _getNative,
root$2 = _root
var Set$2 = getNative$1(root$2, 'Set')
var _Set = Set$2
var getNative = _getNative,
root$1 = _root
var WeakMap$2 = getNative(root$1, 'WeakMap')
var _WeakMap = WeakMap$2
var DataView$1 = _DataView,
Map$1 = _Map,
Promise$1 = _Promise,
Set$1 = _Set,
WeakMap$1 = _WeakMap,
baseGetTag = _baseGetTag,
toSource = _toSource
var mapTag$3 = '[object Map]',
objectTag$1 = '[object Object]',
promiseTag = '[object Promise]',
setTag$3 = '[object Set]',
weakMapTag$1 = '[object WeakMap]'
var dataViewTag$2 = '[object DataView]'
var dataViewCtorString = toSource(DataView$1),
mapCtorString = toSource(Map$1),
promiseCtorString = toSource(Promise$1),
setCtorString = toSource(Set$1),
weakMapCtorString = toSource(WeakMap$1)
var getTag$3 = baseGetTag
if (
(DataView$1 &&
getTag$3(new DataView$1(new ArrayBuffer(1))) != dataViewTag$2) ||
(Map$1 && getTag$3(new Map$1()) != mapTag$3) ||
(Promise$1 && getTag$3(Promise$1.resolve()) != promiseTag) ||
(Set$1 && getTag$3(new Set$1()) != setTag$3) ||
(WeakMap$1 && getTag$3(new WeakMap$1()) != weakMapTag$1)
) {
getTag$3 = function (value2) {
var result = baseGetTag(value2),
Ctor = result == objectTag$1 ? value2.constructor : void 0,
ctorString = Ctor ? toSource(Ctor) : ''
if (ctorString) {
switch (ctorString) {
case dataViewCtorString:
return dataViewTag$2
case mapCtorString:
return mapTag$3
case promiseCtorString:
return promiseTag
case setCtorString:
return setTag$3
case weakMapCtorString:
return weakMapTag$1
}
}
return result
}
}
var _getTag = getTag$3
var objectProto = Object.prototype
var hasOwnProperty$1 = objectProto.hasOwnProperty
function initCloneArray$1(array4) {
var length2 = array4.length,
result = new array4.constructor(length2)
if (
length2 &&
typeof array4[0] == 'string' &&
hasOwnProperty$1.call(array4, 'index')
) {
result.index = array4.index
result.input = array4.input
}
return result
}
var _initCloneArray = initCloneArray$1
var root = _root
var Uint8Array$2 = root.Uint8Array
var _Uint8Array = Uint8Array$2
var Uint8Array$1 = _Uint8Array
function cloneArrayBuffer$3(arrayBuffer) {
var result = new arrayBuffer.constructor(arrayBuffer.byteLength)
new Uint8Array$1(result).set(new Uint8Array$1(arrayBuffer))
return result
}
var _cloneArrayBuffer = cloneArrayBuffer$3
var cloneArrayBuffer$2 = _cloneArrayBuffer
function cloneDataView$1(dataView, isDeep) {
var buffer = isDeep ? cloneArrayBuffer$2(dataView.buffer) : dataView.buffer
return new dataView.constructor(
buffer,
dataView.byteOffset,
dataView.byteLength
)
}
var _cloneDataView = cloneDataView$1
var reFlags = /\w*$/
function cloneRegExp$1(regexp4) {
var result = new regexp4.constructor(regexp4.source, reFlags.exec(regexp4))
result.lastIndex = regexp4.lastIndex
return result
}
var _cloneRegExp = cloneRegExp$1
var Symbol$1 = _Symbol
var symbolProto = Symbol$1 ? Symbol$1.prototype : void 0,
symbolValueOf = symbolProto ? symbolProto.valueOf : void 0
function cloneSymbol$1(symbol) {
return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}
}
var _cloneSymbol = cloneSymbol$1
var cloneArrayBuffer$1 = _cloneArrayBuffer
function cloneTypedArray$1(typedArray, isDeep) {
var buffer = isDeep
? cloneArrayBuffer$1(typedArray.buffer)
: typedArray.buffer
return new typedArray.constructor(
buffer,
typedArray.byteOffset,
typedArray.length
)
}
var _cloneTypedArray = cloneTypedArray$1
var cloneArrayBuffer = _cloneArrayBuffer,
cloneDataView = _cloneDataView,
cloneRegExp = _cloneRegExp,
cloneSymbol = _cloneSymbol,
cloneTypedArray = _cloneTypedArray
var boolTag$1 = '[object Boolean]',
dateTag$1 = '[object Date]',
mapTag$2 = '[object Map]',
numberTag$1 = '[object Number]',
regexpTag$1 = '[object RegExp]',
setTag$2 = '[object Set]',
stringTag$1 = '[object String]',
symbolTag$1 = '[object Symbol]'
var arrayBufferTag$1 = '[object ArrayBuffer]',
dataViewTag$1 = '[object DataView]',
float32Tag$1 = '[object Float32Array]',
float64Tag$1 = '[object Float64Array]',
int8Tag$1 = '[object Int8Array]',
int16Tag$1 = '[object Int16Array]',
int32Tag$1 = '[object Int32Array]',
uint8Tag$1 = '[object Uint8Array]',
uint8ClampedTag$1 = '[object Uint8ClampedArray]',
uint16Tag$1 = '[object Uint16Array]',
uint32Tag$1 = '[object Uint32Array]'
function initCloneByTag$1(object4, tag, isDeep) {
var Ctor = object4.constructor
switch (tag) {
case arrayBufferTag$1:
return cloneArrayBuffer(object4)
case boolTag$1:
case dateTag$1:
return new Ctor(+object4)
case dataViewTag$1:
return cloneDataView(object4, isDeep)
case float32Tag$1:
case float64Tag$1:
case int8Tag$1:
case int16Tag$1:
case int32Tag$1:
case uint8Tag$1:
case uint8ClampedTag$1:
case uint16Tag$1:
case uint32Tag$1:
return cloneTypedArray(object4, isDeep)
case mapTag$2:
return new Ctor()
case numberTag$1:
case stringTag$1:
return new Ctor(object4)
case regexpTag$1:
return cloneRegExp(object4)
case setTag$2:
return new Ctor()
case symbolTag$1:
return cloneSymbol(object4)
}
}
var _initCloneByTag = initCloneByTag$1
var isObject$3 = isObject_1
var objectCreate = Object.create
var baseCreate$1 = (function () {
function object4() {}
return function (proto2) {
if (!isObject$3(proto2)) {
return {}
}
if (objectCreate) {
return objectCreate(proto2)
}
object4.prototype = proto2
var result = new object4()
object4.prototype = void 0
return result
}
})()
var _baseCreate = baseCreate$1
var baseCreate = _baseCreate,
getPrototype = _getPrototype,
isPrototype = _isPrototype
function initCloneObject$1(object4) {
return typeof object4.constructor == 'function' && !isPrototype(object4)
? baseCreate(getPrototype(object4))
: {}
}
var _initCloneObject = initCloneObject$1
var getTag$2 = _getTag,
isObjectLike$1 = isObjectLike_1
var mapTag$1 = '[object Map]'
function baseIsMap$1(value2) {
return isObjectLike$1(value2) && getTag$2(value2) == mapTag$1
}
var _baseIsMap = baseIsMap$1
var baseIsMap = _baseIsMap,
baseUnary$1 = _baseUnary,
nodeUtil$1 = _nodeUtil.exports
var nodeIsMap = nodeUtil$1 && nodeUtil$1.isMap
var isMap$1 = nodeIsMap ? baseUnary$1(nodeIsMap) : baseIsMap
var isMap_1 = isMap$1
var getTag$1 = _getTag,
isObjectLike = isObjectLike_1
var setTag$1 = '[object Set]'
function baseIsSet$1(value2) {
return isObjectLike(value2) && getTag$1(value2) == setTag$1
}
var _baseIsSet = baseIsSet$1
var baseIsSet = _baseIsSet,
baseUnary = _baseUnary,
nodeUtil = _nodeUtil.exports
var nodeIsSet = nodeUtil && nodeUtil.isSet
var isSet$1 = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet
var isSet_1 = isSet$1
var Stack = _Stack,
arrayEach = _arrayEach,
assignValue = _assignValue,
baseAssign = _baseAssign,
baseAssignIn = _baseAssignIn,
cloneBuffer = _cloneBuffer.exports,
copyArray = _copyArray,
copySymbols = _copySymbols,
copySymbolsIn = _copySymbolsIn,
getAllKeys = _getAllKeys,
getAllKeysIn = _getAllKeysIn,
getTag = _getTag,
initCloneArray = _initCloneArray,
initCloneByTag = _initCloneByTag,
initCloneObject = _initCloneObject,
isArray$1 = isArray_1,
isBuffer = isBuffer$2.exports,
isMap = isMap_1,
isObject$2 = isObject_1,
isSet = isSet_1,
keys = keys_1,
keysIn = keysIn_1
var CLONE_DEEP_FLAG$1 = 1,
CLONE_FLAT_FLAG = 2,
CLONE_SYMBOLS_FLAG$1 = 4
var argsTag = '[object Arguments]',
arrayTag = '[object Array]',
boolTag = '[object Boolean]',
dateTag = '[object Date]',
errorTag = '[object Error]',
funcTag = '[object Function]',
genTag = '[object GeneratorFunction]',
mapTag = '[object Map]',
numberTag = '[object Number]',
objectTag = '[object Object]',
regexpTag = '[object RegExp]',
setTag = '[object Set]',
stringTag = '[object String]',
symbolTag = '[object Symbol]',
weakMapTag = '[object WeakMap]'
var arrayBufferTag = '[object ArrayBuffer]',
dataViewTag = '[object DataView]',
float32Tag = '[object Float32Array]',
float64Tag = '[object Float64Array]',
int8Tag = '[object Int8Array]',
int16Tag = '[object Int16Array]',
int32Tag = '[object Int32Array]',
uint8Tag = '[object Uint8Array]',
uint8ClampedTag = '[object Uint8ClampedArray]',
uint16Tag = '[object Uint16Array]',
uint32Tag = '[object Uint32Array]'
var cloneableTags = {}
cloneableTags[argsTag] =
cloneableTags[arrayTag] =
cloneableTags[arrayBufferTag] =
cloneableTags[dataViewTag] =
cloneableTags[boolTag] =
cloneableTags[dateTag] =
cloneableTags[float32Tag] =
cloneableTags[float64Tag] =
cloneableTags[int8Tag] =
cloneableTags[int16Tag] =
cloneableTags[int32Tag] =
cloneableTags[mapTag] =
cloneableTags[numberTag] =
cloneableTags[objectTag] =
cloneableTags[regexpTag] =
cloneableTags[setTag] =
cloneableTags[stringTag] =
cloneableTags[symbolTag] =
cloneableTags[uint8Tag] =
cloneableTags[uint8ClampedTag] =
cloneableTags[uint16Tag] =
cloneableTags[uint32Tag] =
true
cloneableTags[errorTag] =
cloneableTags[funcTag] =
cloneableTags[weakMapTag] =
false
function baseClone$1(value2, bitmask, customizer, key2, object4, stack) {
var result,
isDeep = bitmask & CLONE_DEEP_FLAG$1,
isFlat = bitmask & CLONE_FLAT_FLAG,
isFull = bitmask & CLONE_SYMBOLS_FLAG$1
if (customizer) {
result = object4
? customizer(value2, key2, object4, stack)
: customizer(value2)
}
if (result !== void 0) {
return result
}
if (!isObject$2(value2)) {
return value2
}
var isArr = isArray$1(value2)
if (isArr) {
result = initCloneArray(value2)
if (!isDeep) {
return copyArray(value2, result)
}
} else {
var tag = getTag(value2),
isFunc = tag == funcTag || tag == genTag
if (isBuffer(value2)) {
return cloneBuffer(value2, isDeep)
}
if (tag == objectTag || tag == argsTag || (isFunc && !object4)) {
result = isFlat || isFunc ? {} : initCloneObject(value2)
if (!isDeep) {
return isFlat
? copySymbolsIn(value2, baseAssignIn(result, value2))
: copySymbols(value2, baseAssign(result, value2))
}
} else {
if (!cloneableTags[tag]) {
return object4 ? value2 : {}
}
result = initCloneByTag(value2, tag, isDeep)
}
}
stack || (stack = new Stack())
var stacked = stack.get(value2)
if (stacked) {
return stacked
}
stack.set(value2, result)
if (isSet(value2)) {
value2.forEach(function (subValue) {
result.add(
baseClone$1(subValue, bitmask, customizer, subValue, value2, stack)
)
})
} else if (isMap(value2)) {
value2.forEach(function (subValue, key3) {
result.set(
key3,
baseClone$1(subValue, bitmask, customizer, key3, value2, stack)
)
})
}
var keysFunc = isFull
? isFlat
? getAllKeysIn
: getAllKeys
: isFlat
? keysIn
: keys
var props2 = isArr ? void 0 : keysFunc(value2)
arrayEach(props2 || value2, function (subValue, key3) {
if (props2) {
key3 = subValue
subValue = value2[key3]
}
assignValue(
result,
key3,
baseClone$1(subValue, bitmask, customizer, key3, value2, stack)
)
})
return result
}
var _baseClone = baseClone$1
var baseClone = _baseClone
var CLONE_DEEP_FLAG = 1,
CLONE_SYMBOLS_FLAG = 4
function cloneDeep(value2) {
return baseClone(value2, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG)
}
var cloneDeep_1 = cloneDeep
var Table_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$19 = (n2) => (
pushScopeId('data-v-c6b1ac96'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1Q = { class: 'flex-row-full flex-content' }
const _hoisted_2$1E = { class: 'screen flex-row' }
const _hoisted_3$1w = { class: 'flex-row-full' }
const _hoisted_4$1k = /* @__PURE__ */ _withScopeId$19(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'filter' },
'\u7B5B\u9009\uFF1A',
-1
)
)
const _hoisted_5$1f = ['onClick']
const _hoisted_6$17 = { class: 'btn-func' }
const _hoisted_7$_ = /* @__PURE__ */ _withScopeId$19(() =>
/* @__PURE__ */ createElementVNode('div', { class: 'divider' }, null, -1)
)
const _hoisted_8$W = /* @__PURE__ */ _withScopeId$19(() =>
/* @__PURE__ */ createElementVNode('div', { class: 'divider' }, null, -1)
)
const _hoisted_9$T = { class: 'history-table-content' }
const _hoisted_10$S = { class: 'vxe-cell--label vxe-cell-select' }
const _sfc_main$1X = /* @__PURE__ */ defineComponent({
setup(__props2) {
const variableType = [
'\u4E8C\u8FDB\u5236',
'\u6574\u578B',
'\u6D6E\u70B9\u578B',
'\u5B57\u7B26\u4E32',
'\u65F6\u95F4',
]
const classifyType2 = {
二进制: [0],
整型: [1, 2, 3, 4, 5, 6, 7, 8],
浮点型: [9, 10],
字符串: [14, 15, 16, 17, 19],
时间: [11, 12, 13, 18],
}
const variateVisible = ref(false)
const storageVisible = ref(false)
const historyVisible = ref(false)
const moveVisible = ref(false)
const tipVisible = ref(false)
const moveId = ref('')
const tipTitle = ref('')
const tipInfo = ref('')
const variableName2 = ref('')
const currentInfo = ref({})
const cacheList = ref([])
const activeType = ref([])
const xTable = ref()
const checkRecords = ref([])
const variableInfo = ref({
check: false,
variable: [],
})
const isDefaultGroup = computed(() => {
return selectHistory.value.name === '\u9ED8\u8BA4\u7EC4'
})
const reset2 = () => {
activeType.value = []
variableName2.value = ''
tableList.value = cacheList.value
}
const storageBtn = async () => {
const res = await getStorageSet()
currentStorage.value = res ? res : { retentionUnit: 6, retentionValue: 1 }
storageVisible.value = true
}
const historyBtn = async () => {
const res = await getFileConfig()
currentFile.value = res || { ...defaultHistory }
historyVisible.value = true
}
const onSearchBtn = (item2) => {
if (!activeType.value.includes(item2)) {
activeType.value.push(item2)
} else {
activeType.value = activeType.value.filter((v4) => v4 !== item2)
}
onSearch()
}
const onSearch = () => {
if (activeType.value.length) {
let varTypes = []
Object.entries(classifyType2).forEach(([key2, value2]) => {
if (activeType.value.includes(key2)) {
varTypes = varTypes.concat(value2)
}
})
varTypes = varTypes.map((v4) => {
return Variable.types[v4].label
})
tableList.value = cacheList.value.filter((item2) => {
if (varTypes.includes(item2.type)) return item2
})
} else {
tableList.value = cacheList.value
}
}
const onChangeSearch = () => {
tableList.value = cacheList.value.filter((item2) => {
if (item2.name.includes(variableName2.value)) return item2
})
}
const onChangeCheckBox = () => {
const $table = xTable.value
checkRecords.value = $table.getCheckboxRecords()
}
const onDeleteVariable = async () => {
if (!checkRecords.value.length)
return ElMessage.warning('\u8BF7\u9009\u62E9\u53D8\u91CF')
tipVisible.value = true
tipTitle.value = '\u63D0\u793A'
tipInfo.value =
'\u5C06\u5BF9\u9009\u4E2D\u53D8\u91CF\u7684\u5386\u53F2\u5F52\u6863\u914D\u7F6E\u8FDB\u884C\u6E05\u9664\uFF0C\u662F\u5426\u7EE7\u7EED\u64CD\u4F5C'
}
const onSubmitTip = async () => {
if (variableInfo.value.check) {
addVariableToHistory()
variableInfo.value.check = false
} else {
const data2 = checkRecords.value.map((item2) => item2.id)
if (moveId.value) {
await addHistoryVariable(moveId.value, data2)
moveId.value = ''
} else {
await deleteVariable(data2)
}
checkRecords.value = []
}
initData()
}
const onSubmitMove = async (id2) => {
tipVisible.value = true
tipTitle.value = '\u63D0\u793A'
tipInfo.value =
'\u662F\u5426\u79FB\u52A8\u5230\u5F53\u524D\u5386\u53F2\u53D8\u91CF\u7EC4'
moveId.value = id2
}
const onMoveFolder = () => {
if (!checkRecords.value.length)
return ElMessage.warning('\u8BF7\u9009\u62E9\u53D8\u91CF')
moveVisible.value = true
}
const initData = async () => {
currentInfo.value = current.value
tableList.value = await getVariableList()
cacheList.value = cloneDeep_1(tableList.value)
}
const onAddVariable = () => {
variateVisible.value = true
}
const variateCancel = () => {
variateVisible.value = false
}
const checkVariableCheck = async (data2) => {
variableInfo.value.check = await checkVariableHistory(data2)
if (variableInfo.value.check) {
tipVisible.value = true
tipTitle.value = '\u63D0\u793A'
tipInfo.value =
'\u662F\u5426\u90FD\u79FB\u52A8\u5230\u5F53\u524D\u5386\u53F2\u53D8\u91CF\u7EC4'
} else {
addVariableToHistory()
}
}
const variateConfirm = async (variables) => {
const data2 = variables.map((variable) => variable.id)
if (!data2.length)
return ElMessage.warning('\u8BF7\u9009\u62E9\u53D8\u91CF')
variableInfo.value.variable = data2
await checkVariableCheck(data2)
}
const addVariableToHistory = async () => {
const id2 = current.value.id
await addHistoryVariable(id2, variableInfo.value.variable)
ElMessage.success('\u6DFB\u52A0\u6210\u529F')
variateVisible.value = false
initData()
}
const defaultCheckKey = computed(() => {
return cacheList.value.map((item2) => item2.id)
})
onBeforeUnmount(() => {
current.value = { id: null }
selectHistory.value = { id: null }
tableList.value = []
cacheList.value = []
})
onMounted(() => {
if (current.value.type == 2) {
initData()
}
})
watch$1(
() => current.value.id,
async (id2) => {
if (id2 && current.value.type == 2) {
initData()
}
}
)
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_vxe_column = resolveComponent('vxe-column')
const _component_vxe_table = resolveComponent('vxe-table')
return (
openBlock(),
createElementBlock('div', _hoisted_1$1Q, [
createElementVNode('div', _hoisted_2$1E, [
createElementVNode('div', _hoisted_3$1w, [
_hoisted_4$1k,
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(variableType, (item2) => {
return createElementVNode(
'button',
{
key: item2,
class: normalizeClass([
'cms-btn btn-screen-btn',
{ active: activeType.value.includes(item2) },
]),
onClick: () => onSearchBtn(item2),
},
toDisplayString$1(item2),
11,
_hoisted_5$1f
)
}),
64
)),
createVNode$1(
_component_el_input,
{
onInput: onChangeSearch,
modelValue: variableName2.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (variableName2.value = $event)),
class: 'screen-input cms-el-input-x',
placeholder:
'\u8BF7\u8F93\u5165\u53D8\u91CF\u540D\u5173\u952E\u5B57',
clearable: '',
},
null,
8,
['modelValue']
),
createElementVNode(
'button',
{
class: 'cms-btn btn-screen-btn btn-reset',
onClick: reset2,
},
'\u6E05\u9664'
),
]),
createElementVNode('div', _hoisted_6$17, [
!unref(isDefaultGroup)
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
createElementVNode(
'button',
{
class: 'cms-btn btn-screen-btn btn-reset',
onClick: storageBtn,
},
'\u5B58\u50A8\u8BBE\u7F6E'
),
_hoisted_7$_,
createElementVNode(
'button',
{
class: 'cms-btn btn-screen-btn btn-reset',
onClick: historyBtn,
},
'\u5F52\u6863\u914D\u7F6E'
),
_hoisted_8$W,
createElementVNode(
'button',
{
class: 'cms-btn btn-screen-btn btn-reset',
onClick: onMoveFolder,
},
'\u79FB\u52A8\u5230'
),
createElementVNode(
'button',
{
class: 'cms-btn btn-screen-btn btn-reset',
onClick: onAddVariable,
},
'\u6279\u91CF\u6DFB\u52A0'
),
createElementVNode('button', {
onClick: onDeleteVariable,
class:
'iconfont icon-qingchu option-button option-danger',
}),
],
64
))
: createCommentVNode('', true),
]),
]),
createElementVNode('div', _hoisted_9$T, [
createVNode$1(
_component_vxe_table,
{
class: 'cms-vxe-table',
'column-config': { resizable: true },
'row-config': { isHover: true },
data: unref(tableList),
ref: (rf) => (xTable.value = rf),
'show-overflow': 'tooltip',
'checkbox-config': {
checkField: 'checked',
},
height: '100%',
onCheckboxChange: onChangeCheckBox,
onCheckboxAll: onChangeCheckBox,
},
{
default: withCtx(() => [
!unref(isDefaultGroup)
? (openBlock(),
createBlock(_component_vxe_column, {
key: 0,
type: 'checkbox',
width: '70',
}))
: createCommentVNode('', true),
createVNode$1(_component_vxe_column, {
type: 'seq',
title: '\u5E8F\u53F7',
width: '80',
}),
createVNode$1(_component_vxe_column, {
field: 'name',
title: '\u53D8\u91CF\u540D',
}),
createVNode$1(_component_vxe_column, {
field: 'description',
title: '\u53D8\u91CF\u63CF\u8FF0',
}),
createVNode$1(
_component_vxe_column,
{
field: 'type',
title: '\u6570\u636E\u7C7B\u578B',
},
{
default: withCtx(({ row }) => [
createElementVNode(
'div',
_hoisted_10$S,
toDisplayString$1(row.type),
1
),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['data']
),
]),
(openBlock(),
createBlock(
StorageSetting,
{
key: unref(current).id,
modelValue: storageVisible.value,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) => (storageVisible.value = $event)),
defaultSubmit: '',
},
null,
8,
['modelValue']
)),
createVNode$1(
HistoryConfigDialog,
{
modelValue: historyVisible.value,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) => (historyVisible.value = $event)),
defaultSubmit: '',
},
null,
8,
['modelValue']
),
createVNode$1(
_sfc_main$23,
{
onSubmit: onSubmitTip,
modelValue: tipVisible.value,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) => (tipVisible.value = $event)),
title: tipTitle.value,
info: tipInfo.value,
},
null,
8,
['modelValue', 'title', 'info']
),
createVNode$1(
MoveFolder,
{
onSubmit: onSubmitMove,
modelValue: moveVisible.value,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) => (moveVisible.value = $event)),
},
null,
8,
['modelValue']
),
createVNode$1(
unref(_sfc_main$6Q),
{
visible: variateVisible.value,
noLanguage: true,
filterClientVariables: true,
isMultiple: true,
isAppendToBody: true,
defaultCheckKey: unref(defaultCheckKey),
onCancel: variateCancel,
onConfirm: variateConfirm,
},
null,
8,
['visible', 'defaultCheckKey']
),
])
)
}
},
})
var Table = /* @__PURE__ */ _export_sfc(_sfc_main$1X, [
['__scopeId', 'data-v-c6b1ac96'],
])
var Table$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Table,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var History_vue_vue_type_style_index_0_scoped_true_lang$1 = ''
const _hoisted_1$1P = { class: 'history' }
const _hoisted_2$1D = { class: 'history-table' }
const _sfc_main$1W = /* @__PURE__ */ defineComponent({
setup(__props2) {
const historyListRef = ref(null)
const isHistoryGroup = computed(() => {
return current.value?.type === 2
})
const historyClickAdd = () => {
historyListRef.value?.openDialog()
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$1P, [
createVNode$1(
HistoryList,
{
class: 'HistoryList',
ref: (r2) => (historyListRef.value = r2),
},
null,
512
),
createElementVNode('div', _hoisted_2$1D, [
unref(isHistoryGroup)
? (openBlock(), createBlock(Table, { key: 0 }))
: (openBlock(),
createBlock(Empty, {
key: 1,
title: '\u8BF7\u6DFB\u52A0\u5386\u53F2\u7EC4',
onHightLightPages: historyClickAdd,
})),
]),
])
)
}
},
})
var History$2 = /* @__PURE__ */ _export_sfc(_sfc_main$1W, [
['__scopeId', 'data-v-467f0e0b'],
])
var History$3 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: History$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
function getShift() {
return request({
url: '/api/v1/base/shift',
method: 'get',
})
}
function saveShift(a2) {
return request({
url: '/api/v1/base/shift',
method: 'put',
headers: {
'Content-Type': 'application/json',
},
data: a2,
})
}
var Classes_vue_vue_type_style_index_0_scoped_true_lang = ''
var Classes_vue_vue_type_style_index_1_lang = ''
const _withScopeId$18 = (n2) => (
pushScopeId('data-v-5dd2a7e2'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1O = { class: 'page' }
const _hoisted_2$1C = { class: 'page-contain flex-row-column' }
const _hoisted_3$1v = { class: 'screen flex' }
const _hoisted_4$1j = { class: 'flex-row-full' }
const _hoisted_5$1e = /* @__PURE__ */ _withScopeId$18(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'screen-item' },
'\u73ED\u6B21\u8BBE\u7F6E\uFF1A',
-1
)
)
const _hoisted_6$16 = {
class: 'screen-item',
style: { width: '59px' },
}
const _hoisted_7$Z = { class: 'input-number-group' }
const _hoisted_8$V = /* @__PURE__ */ _withScopeId$18(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'screen-item' },
'\u73ED',
-1
)
)
const _hoisted_9$S = /* @__PURE__ */ _withScopeId$18(() =>
/* @__PURE__ */ createElementVNode('div', { class: 'divider' }, null, -1)
)
const _hoisted_10$R = /* @__PURE__ */ _withScopeId$18(() =>
/* @__PURE__ */ createElementVNode(
'span',
{
class: 'screen-item',
style: { 'margin-right': '0' },
},
'\u5DE5\u4F5C\u65F6\u95F4\uFF1A',
-1
)
)
const _hoisted_11$N = {
class: 'screen-item',
style: { width: '80px' },
}
const _hoisted_12$L = /* @__PURE__ */ _withScopeId$18(() =>
/* @__PURE__ */ createElementVNode('span', { class: 'screen-item' }, '-', -1)
)
const _hoisted_13$E = {
class: 'screen-item',
style: { width: '80px' },
}
const _hoisted_14$A = {
class: 'screen-item',
style: { width: '80px' },
}
const _hoisted_15$z = { class: 'flex-row-full' }
const _hoisted_16$z = ['onClick']
const _hoisted_17$t = ['onClick']
const _hoisted_18$q = /* @__PURE__ */ _withScopeId$18(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'dialog-content' },
[
/* @__PURE__ */ createElementVNode(
'div',
null,
'\u73ED\u6B21\u51CF\u5C11\uFF0C\u73ED\u6B21\u914D\u7F6E\u5C06\u540C\u6B65\u4FEE\u6539\uFF0C\u662F\u5426\u7EE7\u7EED\u64CD\u4F5C'
),
],
-1
)
)
const _hoisted_19$o = { class: 'el-dialog__footer' }
const _hoisted_20$m = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_21$h = /* @__PURE__ */ createTextVNode('\u786E\u8BA4')
const _hoisted_22$f = { class: 'dialog-content' }
const _hoisted_23$c = { class: 'screen classes-screen' }
const _hoisted_24$c = {
class: 'screen-item',
style: { width: '80px' },
}
const _hoisted_25$b = {
class: 'screen-item',
style: { width: '80px' },
}
const _hoisted_26$a = { class: 'el-dialog__footer' }
const _hoisted_27$a = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_28$9 = /* @__PURE__ */ createTextVNode('\u786E\u8BA4')
const _sfc_main$1V = /* @__PURE__ */ defineComponent({
setup(__props2) {
const timeList = [
{
value: false,
label: '\u5F53\u65E5',
},
{
value: true,
label: '\u6B21\u65E5',
},
]
const screen = reactive({
count: 0,
startTime: {
isNextDay: false,
time: new Date(2022, 9, 5, 8, 0),
},
endTime: {
isNextDay: true,
time: new Date(2022, 9, 5, 8, 0),
},
shifts: [],
})
let tableData2 = ref([])
let savedData = ref({
screen: {},
tableData: [],
})
const xTable = ref({})
const setSaveStatus2 = (status) => {
app.current.project.moduleSavedStatusMap.Base = status
}
watch$1(
() => [tableData2.value, screen],
() => {
let isChange =
JSON.stringify(screen) === JSON.stringify(savedData.value.screen) &&
JSON.stringify(tableData2.value) ===
JSON.stringify(savedData.value.tableData)
setSaveStatus2(
isChange
? Project$2.saveStatusTypes.saved
: Project$2.saveStatusTypes.unsaved
)
},
{
deep: true,
}
)
const getShiftFunc = () => {
getShift().then((res) => {
screen.count = res.count
screen.startTime.isNextDay = res.startTime.isNextDay
screen.startTime.time = new Date(
'2022-10-1 ' + (res.startTime.time || '08:00')
)
screen.endTime.isNextDay = res.endTime.isNextDay
screen.endTime.time = new Date(
'2022-10-1 ' + (res.endTime.time || '09:00')
)
savedData.value.screen = JSON.parse(JSON.stringify(screen))
let list2 = []
res.shifts.forEach((item2, idx) => {
list2.push({ ...item2, id: idx })
})
tableData2.value = [...list2]
savedData.value.tableData = JSON.parse(JSON.stringify(tableData2.value))
xTable.value.loadData(tableData2.value)
})
}
const saveShiftFunc = () => {
setSaveStatus2(Project$2.saveStatusTypes.saving)
saveShift({
count: screen.count,
startTime: {
isNextDay: screen.startTime.isNextDay,
time: getTime2(screen.startTime.time),
},
endTime: {
isNextDay: screen.endTime.isNextDay,
time: getTime2(screen.endTime.time),
},
shifts: tableData2.value,
})
.then(() => {
setSaveStatus2(Project$2.saveStatusTypes.saved)
toast('\u4FDD\u5B58\u6210\u529F', 'success')
})
.catch(() => {
setSaveStatus2(Project$2.saveStatusTypes.fail)
})
}
onMounted(() => {
setSaveStatus2(Project$2.saveStatusTypes.saved)
getShiftFunc()
})
onBeforeRouteLeave(() => {
setSaveStatus2(Project$2.saveStatusTypes.saved)
})
const getTime2 = (date4) => {
return (
initUtils.prefixInteger(date4.getHours(), 2) +
':' +
initUtils.prefixInteger(date4.getMinutes(), 2)
)
}
const classChange = reactive({
isShow: false,
changeVal: 0,
hideDialog: () => {
classChange.isShow = false
screen.count = tableData2.value.length
},
comfig: () => {
classChange.isShow = false
changeClassesTable(classChange.changeVal - tableData2.value.length)
},
})
const addCount = () => {
screen.count++
updateClasses()
}
const reduceCount = () => {
screen.count <= 0 ? (screen.count = 0) : screen.count--
updateClasses()
}
const changeClassesNumber = () => {
screen.count =
parseInt((screen.count + '').replace(/^(0+)|[^\d]+/g, '')) || 0
}
const updateClasses = () => {
initUtils.debouncedFn(() => {
if (tableData2.value.length > screen.count) {
classChange.isShow = true
classChange.changeVal = screen.count
return
}
changeClassesTable(screen.count - tableData2.value.length)
})
}
const changeTime = () => {
tableData2.value[0].startTime.time = getTime2(screen.startTime.time)
tableData2.value[tableData2.value.length - 1].endTime.time = getTime2(
screen.endTime.time
)
tableData2.value[tableData2.value.length - 1].endTime.isNextDay =
screen.endTime.isNextDay
}
const choiceTimeObj = reactive({
isShow: false,
timeLevel: '',
time: new Date(),
rowIndex: 0,
type: '',
hideDialog: () => {
choiceTimeObj.isShow = false
},
comfig: () => {
choiceTimeObj.hideDialog()
let { timeLevel, time: time2, type: type4, rowIndex } = choiceTimeObj
tableData2.value[rowIndex][type4]['time'] = getTime2(time2)
tableData2.value[rowIndex][type4]['isNextDay'] = timeLevel
},
})
const choiceTime = (row, rowIndex, type4) => {
if (
(type4 === 'startTime' && rowIndex === 0) ||
(type4 === 'endTime' && rowIndex === tableData2.value.length - 1)
)
return
let timeLevel = row[type4]['isNextDay']
choiceTimeObj.isShow = true
choiceTimeObj.timeLevel = timeLevel
choiceTimeObj.time = new Date('2022-12-1 ' + row[type4].time)
choiceTimeObj.rowIndex = rowIndex
choiceTimeObj.type = type4
}
const changeClassesTable = (total2) => {
let tableLength = tableData2.value.length
if (total2 > 0) {
for (let i2 = tableLength; i2 < total2 + tableLength; i2++) {
tableData2.value.push({
id: tableData2.value.length,
shiftName: '\u73ED\u6B21' + (i2 + 1),
startTime: {
isNextDay: false,
time: '',
},
endTime: {
isNextDay: false,
time: '',
},
})
}
} else {
tableData2.value.splice(
tableLength - Math.abs(total2),
Math.abs(total2)
)
}
if (tableData2.value.length > 0) {
nextTick(() => {
let lastChild2 = tableData2.value.length - 1
tableData2.value[lastChild2].endTime.isNextDay =
screen.endTime.isNextDay
tableData2.value[lastChild2].endTime.time = getTime2(
screen.endTime.time
)
tableData2.value[0].startTime.isNextDay = screen.startTime.isNextDay
tableData2.value[0].startTime.time = getTime2(screen.startTime.time)
})
}
xTable.value.loadData(tableData2.value)
}
const tableTooltipConfig = {
enterable: true,
contentMethod: ({ column, row }) => {
const { property: property2 } = column
if (['startTime', 'endTime'].includes(property2)) {
return (
(row[property2]?.isNextDay ? '\u6B21\u65E5' : '') +
row[property2]?.time
)
}
return row[property2]
},
}
const inputFocus = (e2) => {
e2.target?.select()
}
const changeTableDataMsg = () => {
nextTick(() => {
updateClasses()
})
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_time_picker = resolveComponent('el-time-picker')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_vxe_column = resolveComponent('vxe-column')
const _component_vxe_table = resolveComponent('vxe-table')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', _hoisted_1$1O, [
createElementVNode('div', _hoisted_2$1C, [
createElementVNode('div', _hoisted_3$1v, [
createElementVNode('div', _hoisted_4$1j, [
_hoisted_5$1e,
createElementVNode('div', _hoisted_6$16, [
createElementVNode('div', _hoisted_7$Z, [
createVNode$1(
_component_el_input,
{
modelValue: unref(screen).count,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(screen).count = $event)),
class: 'cms-input-number',
onInput: changeClassesNumber,
onBlur: updateClasses,
onKeyup: withKeys(updateClasses, ['enter']),
},
null,
8,
['modelValue', 'onKeyup']
),
createElementVNode('div', { class: 'right-control' }, [
createElementVNode('i', {
class: 'iconfont icon-shangla',
onClick: addCount,
}),
createElementVNode('i', {
class: 'iconfont icon-xiala2-copy',
onClick: reduceCount,
}),
]),
]),
]),
_hoisted_8$V,
_hoisted_9$S,
_hoisted_10$R,
createElementVNode('div', _hoisted_11$N, [
createVNode$1(
unref(ElConfigProvider),
{ locale: unref(zhCn) },
{
default: withCtx(() => [
createVNode$1(
_component_el_time_picker,
{
modelValue: unref(screen).startTime.time,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(screen).startTime.time = $event)),
class: 'cms-date-editor--time',
format: 'HH:mm',
clearable: false,
onChange: changeTime,
'popper-class':
'cms-el-picker__popper cms-el-time-pick',
},
null,
8,
['modelValue']
),
]),
_: 1,
},
8,
['locale']
),
]),
_hoisted_12$L,
createElementVNode('div', _hoisted_13$E, [
createVNode$1(
_component_el_select,
{
modelValue: unref(screen).endTime.isNextDay,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(screen).endTime.isNextDay = $event)),
class: 'cms-el-select',
onChange: changeTime,
'popper-class': 'cms-el-select__popper',
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(timeList, (item2) => {
return createVNode$1(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
}),
64
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_14$A, [
createVNode$1(
unref(ElConfigProvider),
{ locale: unref(zhCn) },
{
default: withCtx(() => [
createVNode$1(
_component_el_time_picker,
{
modelValue: unref(screen).endTime.time,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(screen).endTime.time = $event)),
class: 'cms-date-editor--time',
format: 'HH:mm',
clearable: false,
onChange: changeTime,
'popper-class':
'cms-el-picker__popper cms-el-time-pick',
},
null,
8,
['modelValue']
),
]),
_: 1,
},
8,
['locale']
),
]),
]),
createElementVNode(
'button',
{
class: 'cms-btn btn-screen-btn btn-reset',
onClick: saveShiftFunc,
},
'\u4FDD\u5B58'
),
]),
createElementVNode('div', _hoisted_15$z, [
createVNode$1(
_component_vxe_table,
{
class: 'cms-vxe-table cms-vxe-edit-table',
style: { width: '860px' },
ref_key: 'xTable',
ref: xTable,
height: '100%',
'row-config': { keyField: 'id' },
'show-overflow': 'tooltip',
'tooltip-config': unref(tableTooltipConfig),
data: unref(tableData2),
'column-config': { resizable: true },
'edit-config': { trigger: 'click', mode: 'cell' },
},
{
default: withCtx(() => [
createVNode$1(_component_vxe_column, {
type: 'seq',
width: '80',
title: ' ',
}),
createVNode$1(
_component_vxe_column,
{
field: 'shiftName',
title: '\u73ED\u6B21\u540D\u79F0',
'edit-render': { autofocus: '.el-input__inner' },
},
{
edit: withCtx(({ row }) => [
createVNode$1(
_component_el_input,
{
modelValue: row.shiftName,
'onUpdate:modelValue': ($event) =>
(row.shiftName = $event),
type: 'text',
spellcheck: false,
onFocus: inputFocus,
onChange: changeTableDataMsg,
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
]),
_: 1,
},
8,
['edit-render']
),
createVNode$1(
_component_vxe_column,
{
field: 'startTime',
title: '\u5F00\u59CB\u65F6\u95F4',
},
{
default: withCtx(({ row, rowIndex }) => [
createElementVNode(
'div',
{
class: normalizeClass([
'vxe-cell--label',
{ 'unhover-cell-label': rowIndex === 0 },
]),
onClick: ($event) =>
choiceTime(row, rowIndex, 'startTime'),
},
[
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont icon-shijian',
{ 'active-icon': rowIndex !== 0 },
]),
},
null,
2
),
createTextVNode(
' ' +
toDisplayString$1(
row.startTime.isNextDay
? '\u6B21\u65E5'
: ''
) +
toDisplayString$1(row.startTime.time),
1
),
],
10,
_hoisted_16$z
),
]),
_: 1,
}
),
createVNode$1(
_component_vxe_column,
{
field: 'endTime',
title: '\u7ED3\u675F\u65F6\u95F4',
},
{
default: withCtx(({ row, rowIndex }) => [
createElementVNode(
'div',
{
class: normalizeClass([
'vxe-cell--label',
{
'unhover-cell-label':
rowIndex === unref(tableData2).length - 1,
},
]),
onClick: ($event) =>
choiceTime(row, rowIndex, 'endTime'),
},
[
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont icon-shijian',
{
'active-icon':
rowIndex !==
unref(tableData2).length - 1,
},
]),
},
null,
2
),
createTextVNode(
' ' +
toDisplayString$1(
row.endTime.isNextDay ? '\u6B21\u65E5' : ''
) +
toDisplayString$1(row.endTime.time),
1
),
],
10,
_hoisted_17$t
),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['tooltip-config', 'data']
),
]),
]),
(openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
title: '\u63D0\u793A',
modelValue: unref(classChange).isShow,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) => (unref(classChange).isShow = $event)),
'custom-class': 'cms-el-dialog',
width: '360px',
'close-on-click-modal': false,
key: new Date().toISOString(),
},
{
default: withCtx(() => [
_hoisted_18$q,
createElementVNode('div', _hoisted_19$o, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: unref(classChange).hideDialog,
},
{
default: withCtx(() => [_hoisted_20$m]),
_: 1,
},
8,
['onClick']
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: unref(classChange).comfig,
},
{
default: withCtx(() => [_hoisted_21$h]),
_: 1,
},
8,
['onClick']
),
]),
]),
_: 1,
},
8,
['modelValue']
)),
(openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
title: '\u65F6\u95F4\u9009\u62E9',
modelValue: unref(choiceTimeObj).isShow,
'onUpdate:modelValue':
_cache[7] ||
(_cache[7] = ($event) =>
(unref(choiceTimeObj).isShow = $event)),
'custom-class': 'cms-el-dialog',
width: '360px',
'close-on-click-modal': false,
key: new Date().toISOString(),
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_22$f, [
createElementVNode('div', _hoisted_23$c, [
createElementVNode('div', _hoisted_24$c, [
createVNode$1(
_component_el_select,
{
modelValue: unref(choiceTimeObj).timeLevel,
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) =>
(unref(choiceTimeObj).timeLevel = $event)),
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(timeList, (item2) => {
return createVNode$1(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
}),
64
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_25$b, [
createVNode$1(
unref(ElConfigProvider),
{ locale: unref(zhCn) },
{
default: withCtx(() => [
createVNode$1(
_component_el_time_picker,
{
modelValue: unref(choiceTimeObj).time,
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) =>
(unref(choiceTimeObj).time = $event)),
class: 'cms-date-editor--time',
format: 'HH:mm',
clearable: false,
'popper-class':
'cms-el-picker__popper cms-el-time-pick',
},
null,
8,
['modelValue']
),
]),
_: 1,
},
8,
['locale']
),
]),
]),
]),
createElementVNode('div', _hoisted_26$a, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: unref(choiceTimeObj).hideDialog,
},
{
default: withCtx(() => [_hoisted_27$a]),
_: 1,
},
8,
['onClick']
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: unref(choiceTimeObj).comfig,
},
{
default: withCtx(() => [_hoisted_28$9]),
_: 1,
},
8,
['onClick']
),
]),
]),
_: 1,
},
8,
['modelValue']
)),
])
)
}
},
})
var Classes = /* @__PURE__ */ _export_sfc(_sfc_main$1V, [
['__scopeId', 'data-v-5dd2a7e2'],
])
var Classes$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Classes,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Basis_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$1N = { class: 'page' }
const _hoisted_2$1B = { class: 'page-contain' }
const _hoisted_3$1u = { class: 'page-head' }
const _hoisted_4$1i = { class: 'page-head-title' }
const _hoisted_5$1d = ['onClick']
const _hoisted_6$15 = { class: 'page-table flex-row' }
const _sfc_main$1U = /* @__PURE__ */ defineComponent({
setup(__props2) {
const tabList = shallowReactive([
{
label: '\u73ED\u6B21',
component: Classes,
default: true,
},
])
let acitveTab = shallowRef(tabList.filter((item2) => item2.default)[0])
const switchTab = (tab) => {
acitveTab.value = { ...tab }
}
return (_ctx, _cache) => {
const _directive_track = resolveDirective('track')
return withDirectives(
(openBlock(),
createElementBlock('div', _hoisted_1$1N, [
createElementVNode('div', _hoisted_2$1B, [
createElementVNode('div', _hoisted_3$1u, [
createElementVNode('span', _hoisted_4$1i, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(tabList), (item2, i2) => {
return (
openBlock(),
createElementBlock(
'button',
{
class: normalizeClass([
'btn btn-normal',
{ active: unref(acitveTab).label === item2.label },
]),
key: i2,
onClick: ($event) => switchTab(item2),
},
toDisplayString$1(item2.label),
11,
_hoisted_5$1d
)
)
}),
128
)),
]),
]),
createElementVNode('div', _hoisted_6$15, [
(openBlock(),
createBlock(resolveDynamicComponent(unref(acitveTab).component))),
]),
]),
])),
[
[
_directive_track,
{
moduleType: '\u6807\u51C6\u6A21\u5757',
moduleCode: '\u57FA\u7840',
pageCode: unref(acitveTab).label,
},
'page',
],
]
)
}
},
})
var Basis = /* @__PURE__ */ _export_sfc(_sfc_main$1U, [
['__scopeId', 'data-v-994ea124'],
])
var Basis$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Basis,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var CreateDialog_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$1M = { class: 'dialog-content' }
const _hoisted_2$1A = { class: 'form-table' }
const _hoisted_3$1t = { class: 'el-dialog__footer' }
const _hoisted_4$1h = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_5$1c = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$1T = /* @__PURE__ */ defineComponent({
emits: ['createLang', 'editLang'],
setup(__props2, { expose, emit: emit2 }) {
onMounted(() => {
getAllLanguageOption()
})
let edit2 = ref(false)
let model = reactive({
visible: false,
name: null,
})
let allLanguageOptions = ref([])
const getAllLanguageOption = async () => {
const resp = await request.get(
'/api/v1/multiplelanguage/languagelist/languagetype'
)
allLanguageOptions.value = resp
}
const open2 = (isEdit) => {
edit2.value = isEdit
model.visible = true
}
const close2 = () => {
model.visible = false
}
const confirm2 = async () => {
const name2 = model.name
if (name2 === null) {
ElMessage.error('\u8BF7\u9009\u62E9\u8BED\u8A00')
return
}
if (edit2.value) {
emit2('editLang', name2)
} else {
emit2('createLang', name2)
}
}
expose({
open: open2,
close: close2,
})
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_form = resolveComponent('el-form')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
_component_el_dialog,
{
modelValue: unref(model).visible,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) => (unref(model).visible = $event)),
'append-to-body': true,
'close-on-click-modal': false,
title: '\u65B0\u589E\u8BED\u8A00',
'custom-class': 'cms-el-dialog',
width: '450px',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$1M, [
createVNode$1(
_component_el_form,
{
onSubmit:
_cache[1] ||
(_cache[1] = withModifiers(() => {}, ['prevent'])),
'label-width': '95px',
'label-position': 'left',
class: 'cms-el-form',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$1A, [
createVNode$1(
_component_el_form_item,
{ label: '\u8BED\u8A00\u540D\u79F0\uFF1A' },
{
default: withCtx(() => [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
modelValue: unref(model).name,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(model).name = $event)),
placeholder:
'\u8BF7\u9009\u62E9\u8BED\u8A00',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(allLanguageOptions),
(item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
value: item2.languageType,
label: item2.name,
},
null,
8,
['value', 'label']
)
)
}
),
256
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
_: 1,
}
),
]),
]),
_: 1,
}
),
]),
createElementVNode('div', _hoisted_3$1t, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: close2,
},
{
default: withCtx(() => [_hoisted_4$1h]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_5$1c]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
),
])
)
}
},
})
var CreateDialog = /* @__PURE__ */ _export_sfc(_sfc_main$1T, [
['__scopeId', 'data-v-d063e224'],
])
var CreateDialog$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: CreateDialog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var CmsSwitch_vue_vue_type_style_index_0_scoped_true_lang = ''
const _sfc_main$1S = /* @__PURE__ */ defineComponent({
props: {
modelValue: {
type: Boolean,
default: false,
},
},
emits: ['update:modelValue', 'change'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const enable2 = computed(() => props2.modelValue)
const change2 = (isOpen) => {
emit2('update:modelValue', isOpen)
emit2('change')
}
return (_ctx, _cache) => {
const _component_el_switch = resolveComponent('el-switch')
return (
openBlock(),
createElementBlock(
'span',
{
class: 'cms-switch',
onClick:
_cache[0] || (_cache[0] = withModifiers(() => {}, ['stop'])),
},
[
createVNode$1(
_component_el_switch,
{
width: 32,
onChange: change2,
modelValue: unref(enable2),
style: {
'--el-switch-on-color': '#4d4030',
'--el-switch-off-color': '#504e4e',
},
},
null,
8,
['modelValue']
),
]
)
)
}
},
})
var CmsSwitch = /* @__PURE__ */ _export_sfc(_sfc_main$1S, [
['__scopeId', 'data-v-36051855'],
])
var CmsSwitch$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: CmsSwitch,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Sidebar_vue_vue_type_style_index_0_scoped_true_lang$3 = ''
const _withScopeId$17 = (n2) => (
pushScopeId('data-v-57415cc5'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1L = { class: 'LangTree sidebar' }
const _hoisted_2$1z = /* @__PURE__ */ _withScopeId$17(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
[
/* @__PURE__ */ createElementVNode('i', {
class: 'iconfont icon-yuyan title_img',
}),
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u8BED\u8A00\u5217\u8868'
),
],
-1
)
)
const _hoisted_3$1s = { class: 'search flex' }
const _hoisted_4$1g = { class: 'search_tool flex' }
const _hoisted_5$1b = { class: 'tree' }
const _hoisted_6$14 = { class: 'title' }
const _hoisted_7$Y = { class: 'btn' }
const _hoisted_8$U = /* @__PURE__ */ _withScopeId$17(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-gengduo menu' },
null,
-1
)
)
const _hoisted_9$R = /* @__PURE__ */ createTextVNode('\u4FEE\u6539')
const _hoisted_10$Q = /* @__PURE__ */ createTextVNode('\u5220\u9664 ')
const _hoisted_11$M = {
class: 'dialog-content',
style: { color: '#fff' },
}
const _hoisted_12$K = { class: 'el-dialog__footer' }
const _hoisted_13$D = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_14$z = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$1R = /* @__PURE__ */ defineComponent({
emits: ['SwitchLang', 'deleteLang'],
setup(__props2, { expose, emit: emit2 }) {
onMounted(() => {
getList()
})
let langData = ref([])
const treeRefCom = ref()
let activeNodeId = ref()
const getList = async () => {
const resp = await request.get('/api/v1/multiplelanguage/languagelist')
langData.value = resp
if (resp.length > 0) {
nodeClick(resp[0])
activeNodeId.value = resp[0].id
}
}
const CreateOrEditorDialogCom = ref(null)
const createDialogOpen = (isEdit) =>
CreateOrEditorDialogCom.value?.open(isEdit)
const createLang = async (name2) => {
await request.post('/api/v1/multiplelanguage/languagelist', {
languageType: name2,
})
CreateOrEditorDialogCom.value?.close()
getList()
}
const editLang = async (name2) => {
if (!selectedLangId.value) return
await request.put(
`/api/v1/multiplelanguage/languagelist/${selectedLangId.value}`,
{
languageType: name2,
}
)
CreateOrEditorDialogCom.value?.close()
getList()
}
const handleNode = (node2, data2) => {
activeNodeId.value = data2.id
nodeClick(data2)
}
const nodeClick = (data2) => {
emit2('SwitchLang', data2)
}
const switchLangStatus = async (langId) => {
await request.put(
`/api/v1/multiplelanguage/languagelist/${langId}/switch`
)
}
let deleteConfig = reactive({
visible: false,
loading: false,
data: null,
message: '',
})
const deleteOpen = (data2) => {
deleteConfig.visible = true
deleteConfig.data = data2
}
const deleteConfirm = async () => {
if (!deleteConfig.data) return
deleteConfig.loading = true
const {
data: { id: id2 },
} = deleteConfig.data
await request.delete(`/api/v1/multiplelanguage/languagelist/${id2}`)
deleteConfig.visible = false
ElMessage({
message: '\u5220\u9664\u6210\u529F',
type: 'success',
customClass: 'cms-el-message el-message--success',
})
getList()
emit2('deleteLang')
}
const filterText = ref('')
let selectedLangId = ref()
const handleCommand = (data2) => {
selectedLangId.value = data2.data.id
const fun = {
rename: () => {
createDialogOpen(true)
},
delete: () => {
deleteOpen(data2)
},
}
fun[data2.type]()
}
expose({
createDialogOpen,
})
return (_ctx, _cache) => {
const _component_el_icon = resolveComponent('el-icon')
const _component_el_input = resolveComponent('el-input')
const _component_el_dropdown_item = resolveComponent('el-dropdown-item')
const _component_el_dropdown_menu = resolveComponent('el-dropdown-menu')
const _component_el_dropdown = resolveComponent('el-dropdown')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', _hoisted_1$1L, [
_hoisted_2$1z,
createElementVNode('div', _hoisted_3$1s, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x-search',
modelValue: filterText.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (filterText.value = $event)),
},
{
suffix: withCtx(() => [
createVNode$1(
_component_el_icon,
{ class: 'el-input__icon' },
{
default: withCtx(() => [createVNode$1(unref(search))]),
_: 1,
}
),
]),
_: 1,
},
8,
['modelValue']
),
createElementVNode('div', _hoisted_4$1g, [
createElementVNode('i', {
class: 'iconfont icon-tianjiahuamian',
onClick:
_cache[1] ||
(_cache[1] = ($event) => createDialogOpen(false)),
title: '\u6DFB\u52A0\u8BED\u8A00',
}),
]),
]),
createElementVNode('div', _hoisted_5$1b, [
createVNode$1(
VirtualTree,
{
ref_key: 'treeRefCom',
ref: treeRefCom,
class: 'cms_el_tree_x',
'node-key': 'id',
draggable: false,
'default-expand-all': '',
data: unref(langData),
filterText: filterText.value,
onNodeClick: handleNode,
},
{
default: withCtx(({ node: node2, data: data2 }) => [
createElementVNode(
'div',
{
class: normalizeClass([
'node flex',
activeNodeId.value == data2.id ? 'node-current' : '',
]),
},
[
createElementVNode('div', _hoisted_6$14, [
createVNode$1(
EllipsisTooltip,
{
width: '100%',
content: data2.name,
},
null,
8,
['content']
),
]),
createVNode$1(
CmsSwitch,
{
class: 'mr-10',
modelValue: data2.enable,
'onUpdate:modelValue': ($event) =>
(data2.enable = $event),
onChange: ($event) => switchLangStatus(data2.id),
},
null,
8,
['modelValue', 'onUpdate:modelValue', 'onChange']
),
createElementVNode('div', _hoisted_7$Y, [
createVNode$1(
_component_el_dropdown,
{
trigger: 'hover',
onCommand: handleCommand,
},
{
dropdown: withCtx(() => [
createVNode$1(
_component_el_dropdown_menu,
null,
{
default: withCtx(() => [
createVNode$1(
_component_el_dropdown_item,
{
command: {
type: 'rename',
node: node2,
data: data2,
},
},
{
default: withCtx(() => [_hoisted_9$R]),
_: 2,
},
1032,
['command']
),
createVNode$1(
_component_el_dropdown_item,
{
class: 'item_delete',
command: {
type: 'delete',
node: node2,
data: data2,
},
},
{
default: withCtx(() => [_hoisted_10$Q]),
_: 2,
},
1032,
['command']
),
]),
_: 2,
},
1024
),
]),
default: withCtx(() => [_hoisted_8$U]),
_: 2,
},
1024
),
]),
],
2
),
]),
_: 1,
},
8,
['data', 'filterText']
),
]),
createVNode$1(
_component_el_dialog,
{
modelValue: unref(deleteConfig).visible,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(deleteConfig).visible = $event)),
title: '\u786E\u8BA4\u5220\u9664',
'custom-class': 'cms-el-dialog',
width: '450px',
'append-to-body': true,
},
{
default: withCtx(() => [
createElementVNode(
'div',
_hoisted_11$M,
toDisplayString$1(
unref(deleteConfig).message ||
'\u786E\u8BA4\u540E\uFF0C\u4ECE\u5217\u8868\u4E2D\u5220\u9664\u8282\u70B9'
),
1
),
createElementVNode('div', _hoisted_12$K, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick:
_cache[2] ||
(_cache[2] = ($event) =>
(unref(deleteConfig).visible = false)),
},
{
default: withCtx(() => [_hoisted_13$D]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: deleteConfirm,
},
{
default: withCtx(() => [_hoisted_14$z]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
CreateDialog,
{
ref_key: 'CreateOrEditorDialogCom',
ref: CreateOrEditorDialogCom,
onCreateLang: createLang,
onEditLang: editLang,
},
null,
512
),
])
)
}
},
})
var Sidebar$6 = /* @__PURE__ */ _export_sfc(_sfc_main$1R, [
['__scopeId', 'data-v-57415cc5'],
])
var Sidebar$7 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Sidebar$6,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _hoisted_1$1K = { class: 'export-file' }
const _hoisted_2$1y = { class: 'dialog-content' }
const _hoisted_3$1r = /* @__PURE__ */ createTextVNode(
'\u6587\u4EF6\u540D\u79F0\uFF1A'
)
const _hoisted_4$1f = { class: 'el-dialog__footer' }
const _hoisted_5$1a = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_6$13 = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$1Q = /* @__PURE__ */ defineComponent({
props: {
langId: {
type: Number,
require: true,
},
searchData: {
type: Object,
require: true,
default: () => {
return {
keyword: '',
translateStatus: 0,
createType: 0,
}
},
},
},
setup(__props2) {
const props2 = __props2
const exportData = reactive({
visible: false,
name: '\u591A\u8BED\u8A00\u7FFB\u8BD1\u5217\u8868',
})
const open2 = () => {
if (isHaveLocalstorage()) {
ElMessage({
message: '\u8BF7\u4FDD\u5B58\u8BBE\u7F6E\u5185\u5BB9',
type: 'error',
customClass: 'cms-el-message el-message--error',
})
return
}
exportData.name = '\u591A\u8BED\u8A00\u7FFB\u8BD1\u5217\u8868'
exportData.visible = true
}
const close2 = () => {
exportData.visible = false
}
const isHaveLocalstorage = () => {
const local = localStorage.getItem(`langId_${props2.langId}`)
if (local === null) {
return false
}
const localParse = JSON.parse(local)
if (localParse.length > 0) {
return true
}
return false
}
const exportFile2 = () => {
if (!exportData.name) {
ElMessage({
message: '\u8BF7\u8F93\u5165\u6587\u4EF6\u540D\u79F0',
type: 'error',
customClass: 'cms-el-message el-message--error',
})
return
}
const { translateStatus, createType, keyword } = props2.searchData
request({
url: `/api/v1/multiplelanguage/export/${exportData.name}/${props2.langId}/${translateStatus}/${createType}/${keyword}`,
method: 'get',
responseType: 'arraybuffer',
}).then((res) => {
blod(res, exportData.name)
close2()
})
}
function blod(data2, fileName) {
try {
const blob = new Blob([data2], {
type: 'application/vnd.ms-excel',
})
const dom = document.createElement('a')
const url2 = window.URL.createObjectURL(blob)
dom.href = url2
dom.download = decodeURIComponent(fileName)
dom.style.display = 'none'
document.body.appendChild(dom)
dom.click()
dom.parentNode.removeChild(dom)
window.URL.revokeObjectURL(url2)
} catch (err) {}
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('span', _hoisted_1$1K, [
createElementVNode('i', {
class: 'iconfont icon-daochu2 option-common ml-20',
onClick: open2,
title: '\u5BFC\u51FA',
}),
createVNode$1(
_component_el_dialog,
{
modelValue: unref(exportData).visible,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) => (unref(exportData).visible = $event)),
'append-to-body': true,
'close-on-click-modal': false,
title: '\u5BFC\u51FA\u6587\u4EF6',
'custom-class': 'cms-el-dialog',
width: '450px',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$1y, [
_hoisted_3$1r,
createVNode$1(
_component_el_input,
{
modelValue: unref(exportData).name,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(exportData).name = $event)),
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_4$1f, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: close2,
},
{
default: withCtx(() => [_hoisted_5$1a]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: exportFile2,
},
{
default: withCtx(() => [_hoisted_6$13]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
),
])
)
}
},
})
var ExportFile = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$1Q,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ImportFile_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$1J = { class: 'import-file' }
const _sfc_main$1P = /* @__PURE__ */ defineComponent({
props: {
langId: {
type: Number,
require: true,
},
},
emits: ['success'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const clickFileDom = () => {
const fileDom = document.getElementById('input-File')
fileDom?.click()
}
const resetFile = () => {
const fileDom = document.getElementById('input-File')
fileDom.value = ''
}
const selectFile = (event) => {
if (!props2.langId) {
ElMessage({
message: '\u8BF7\u9009\u62E9\u8BED\u8A00',
type: 'error',
customClass: 'cms-el-message el-message--error',
})
return
}
const target2 = event.target
const file2 = target2.files[0]
let formData = new FormData()
formData.set('files', file2)
return request({
url: `/api/v1/multiplelanguage/import/`,
method: 'put',
data: formData,
})
.then(() => {
ElMessage({
message: '\u5BFC\u5165\u6210\u529F',
type: 'success',
customClass: 'cms-el-message el-message--success',
})
emit2('success')
})
.catch((error2) => {})
.finally(() => {
resetFile()
})
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('span', _hoisted_1$1J, [
createElementVNode('i', {
class: 'iconfont icon-daoru option-common ml-20',
onClick: clickFileDom,
title: '\u5BFC\u5165',
}),
createElementVNode(
'input',
{
type: 'file',
id: 'input-File',
onChange: selectFile,
},
null,
32
),
])
)
}
},
})
var ImportFile = /* @__PURE__ */ _export_sfc(_sfc_main$1P, [
['__scopeId', 'data-v-b889df62'],
])
var ImportFile$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ImportFile,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ContentTable_vue_vue_type_style_index_0_scoped_true_lang = ''
var ContentTable_vue_vue_type_style_index_1_lang = ''
const _withScopeId$16 = (n2) => (
pushScopeId('data-v-ba44ca9e'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1I = { class: 'content' }
const _hoisted_2$1x = { class: 'content-header' }
const _hoisted_3$1q = /* @__PURE__ */ createTextVNode('\u67E5\u8BE2')
const _hoisted_4$1e = { class: 'operation' }
const _hoisted_5$19 = { class: 'content-body' }
const _hoisted_6$12 = { style: { padding: '0' } }
const _hoisted_7$X = { style: { padding: '0' } }
const _hoisted_8$T = { class: 'pt-4' }
const _hoisted_9$Q = ['onClick']
const _hoisted_10$P = { class: 'tranlateText-dialog-content' }
const _hoisted_11$L = { class: 'text-item' }
const _hoisted_12$J = /* @__PURE__ */ _withScopeId$16(() =>
/* @__PURE__ */ createElementVNode(
'p',
{ class: 'header-label' },
'\u539F\u59CB\u6587\u672C',
-1
)
)
const _hoisted_13$C = { class: 'text-item' }
const _hoisted_14$y = { class: 'header-label' }
const _hoisted_15$y = { class: 'el-dialog__footer' }
const _hoisted_16$y = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_17$s = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _hoisted_18$p = /* @__PURE__ */ _withScopeId$16(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'dialog-content' },
[
/* @__PURE__ */ createElementVNode(
'div',
null,
'\u786E\u8BA4\u540E\uFF0C\u4ECE\u5217\u8868\u4E2D\u5220\u9664\u9009\u4E2D\u7684\u6587\u672C\u3002'
),
],
-1
)
)
const _hoisted_19$n = { class: 'el-dialog__footer' }
const _hoisted_20$l = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_21$g = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$1O = /* @__PURE__ */ defineComponent({
setup(__props2, { expose }) {
const searchData = reactive({
keyword: '',
translateStatus: 0,
createType: 0,
})
const xTableCom = ref({})
const tableTooltipConfig = {
enterable: true,
contentMethod: ({ column, row }) => {
const { property: property2 } = column
return row[property2]
},
}
let tableData2 = ref([])
let storageData2 = ref([])
const addTextlist = () => {
const defaultTextItem = {
no: 'new_' + initUtils.createRandomId(),
originalId: 0,
originalText: '',
translationText: '',
automatic: false,
}
tableData2.value.push(defaultTextItem)
storageData2.value.push(defaultTextItem)
updateStroge()
}
const changeTableDataMsg = (row) => {
let isHave = storageData2.value.some(
(item2) => item2.originalId === row.originalId
)
if (!isHave) {
storageData2.value.push(row)
}
nextTick(() => {
updateStroge()
})
}
const updateStroge = () => {
if (acitveId.value) {
window.localStorage.setItem(
`langId_${acitveId.value}`,
JSON.stringify(storageData2.value)
)
}
xTableCom.value.loadData(tableData2.value)
}
let choiceRows = ref([])
const changeCheck = () => {
choiceRows.value = xTableCom.value.getCheckboxRecords()
}
const checkBoxConfig = {
checkMethod: ({ row }) => {
return !row.automatic
},
highlight: true,
}
const delNodeDailog = reactive({
isShow: false,
})
const hideDialog = () => {
delNodeDailog.isShow = false
}
const openDeleteDialog = () => {
initUtils.debouncedFn(() => {
if (choiceRows.value.length === 0) {
ElMessage({
message: '\u8BF7\u9009\u62E9\u5220\u9664\u6587\u672C',
type: 'error',
customClass: 'cms-el-message el-message--error',
})
} else {
delNodeDailog.isShow = true
}
})
}
const deleteTextlist = async () => {
const localData = choiceRows.value.filter(
(item2) => typeof item2.no === 'string'
)
const originData = choiceRows.value.filter(
(item2) => typeof item2.no === 'number'
)
const originalIds = originData.map((item2) => item2.originalId)
if (localData.length > 0) {
choiceRows.value.forEach((item2) => {
const idx = storageData2.value.findIndex(
(subItem) => subItem.no === item2.no
)
if (idx !== -1) {
storageData2.value.splice(idx, 1)
}
})
}
if (originalIds.length > 0) {
await request.delete('/api/v1/multiplelanguage/', { data: originalIds })
}
ElMessage({
message: '\u5220\u9664\u6210\u529F',
type: 'success',
customClass: 'cms-el-message el-message--success',
})
updateStroge()
hideDialog()
getList()
}
const setSaveStatus2 = (status) => {
app.current.project.moduleSavedStatusMap.Language = status
}
watch$1(
storageData2,
() => {
if (storageData2.value.length > 0) {
setSaveStatus2(Project$2.saveStatusTypes.unsaved)
}
},
{ deep: true }
)
const save3 = async () => {
try {
setSaveStatus2(Project$2.saveStatusTypes.saving)
const params2 = storageData2.value.map((ele) => {
const { originalId, originalText, translationText } = ele
return { originalId, originalText, translationText }
})
if (acitveId.value) {
await request.put(
`/api/v1/multiplelanguage/${acitveId.value}`,
params2
)
setSaveStatus2(Project$2.saveStatusTypes.saved)
ElMessage({
message: '\u4FDD\u5B58\u6210\u529F',
type: 'success',
customClass: 'cms-el-message el-message--success',
})
storageData2.value = []
nextTick(() => {
updateStroge()
})
getList()
app.current.project.current.language.fetch()
}
} catch (error2) {
setSaveStatus2(Project$2.saveStatusTypes.fail)
}
}
const getItemAndParse = (id2) => {
const langIdStr = `langId_${id2}`
return JSON.parse(localStorage.getItem(langIdStr) + '') ?? []
}
const ceateTypefilter = (isAuto2) => {
return isAuto2 ? '\u81EA\u52A8\u521B\u5EFA' : '\u624B\u52A8\u521B\u5EFA'
}
const tranlateTextDailog = ref(false)
let currentTranslateItem = ref({
no: 0,
originalId: 0,
originalText: '',
translationText: '',
automatic: false,
})
const openTranlateTextDailog = (row) => {
currentTranslateItem.value = row
tranlateTextDailog.value = true
}
const closeTranlateTextDailog = () => {
tranlateTextDailog.value = false
}
const updateTranslateText = () => {
closeTranlateTextDailog()
changeTableDataMsg(currentTranslateItem.value)
}
const getList = async () => {
if (!acitveId.value) return
const { keyword, translateStatus, createType } = searchData
const resp = await request.get(
`/api/v1/multiplelanguage/${acitveId.value}/${translateStatus}/${createType}/${keyword}`
)
storageData2.value = getItemAndParse(acitveId.value)
let _payload = []
if (storageData2.value.length > 0) {
_payload = resp.payload.filter((TextItem) =>
storageData2.value.every(
(storageItem) => storageItem.originalId !== TextItem.originalId
)
)
} else {
_payload = resp.payload
}
tableData2.value = [...storageData2.value, ..._payload]
xTableCom.value.loadData(tableData2.value)
}
let acitveId = ref()
let activeLangName = ref()
const init2 = (id2, name2) => {
acitveId.value = id2
activeLangName.value = name2
getList()
}
expose({
init: init2,
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_button = resolveComponent('el-button')
const _component_el_form = resolveComponent('el-form')
const _component_vxe_column = resolveComponent('vxe-column')
const _component_vxe_table = resolveComponent('vxe-table')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', _hoisted_1$1I, [
createElementVNode('div', _hoisted_2$1x, [
createVNode$1(
_component_el_form,
{
inline: true,
model: unref(searchData),
class: 'search',
},
{
default: withCtx(() => [
createVNode$1(_component_el_form_item, null, {
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
class: 'search-input cms-el-input-x',
placeholder: '\u8BF7\u8F93\u5165\u5173\u952E\u5B57',
modelValue: unref(searchData).keyword,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(searchData).keyword = $event)),
onKeyup: withKeys(getList, ['enter', 'native']),
},
null,
8,
['modelValue', 'onKeyup']
),
]),
_: 1,
}),
createVNode$1(
_component_el_form_item,
{ label: '\u7FFB\u8BD1' },
{
default: withCtx(() => [
createVNode$1(
_component_el_select,
{
class: 'search-select cms-el-select',
'popper-class': 'cms-el-select__popper',
modelValue: unref(searchData).translateStatus,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(searchData).translateStatus = $event)),
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
value: 0,
label: '\u5168\u90E8',
}),
createVNode$1(_component_el_option, {
value: 1,
label: '\u5DF2\u7FFB\u8BD1',
}),
createVNode$1(_component_el_option, {
value: 2,
label: '\u672A\u7FFB\u8BD1',
}),
]),
_: 1,
},
8,
['modelValue']
),
]),
_: 1,
}
),
createVNode$1(
_component_el_form_item,
{ label: '\u521B\u5EFA\u65B9\u5F0F' },
{
default: withCtx(() => [
createVNode$1(
_component_el_select,
{
class: 'search-select cms-el-select',
'popper-class': 'cms-el-select__popper',
modelValue: unref(searchData).createType,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(searchData).createType = $event)),
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
value: 0,
label: '\u5168\u90E8',
}),
createVNode$1(_component_el_option, {
value: 1,
label: '\u81EA\u52A8\u521B\u5EFA',
}),
createVNode$1(_component_el_option, {
value: 2,
label: '\u624B\u52A8\u521B\u5EFA',
}),
]),
_: 1,
},
8,
['modelValue']
),
]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'cms-btn btn-screen-btn btn-reset',
onClick: getList,
},
{
default: withCtx(() => [_hoisted_3$1q]),
_: 1,
}
),
]),
_: 1,
},
8,
['model']
),
createElementVNode('div', _hoisted_4$1e, [
createElementVNode('i', {
class: 'iconfont icon-xinjian option-common',
onClick: addTextlist,
}),
createElementVNode('i', {
class: 'iconfont icon-qingchu option-danger ml-20',
onClick: openDeleteDialog,
}),
createVNode$1(
ImportFile,
{
langId: unref(acitveId),
onSuccess: getList,
},
null,
8,
['langId']
),
createVNode$1(
_sfc_main$1Q,
{
langId: unref(acitveId),
searchData: unref(searchData),
},
null,
8,
['langId', 'searchData']
),
createElementVNode(
'button',
{
class: 'cms-btn btn-screen-btn btn-reset ml-20',
onClick: save3,
},
'\u4FDD\u5B58'
),
]),
]),
createElementVNode('div', _hoisted_5$19, [
createVNode$1(
_component_vxe_table,
{
class: 'cms-vxe-table cms-vxe-edit-table',
style: { 'min-width': '100%' },
ref_key: 'xTableCom',
ref: xTableCom,
height: '100%',
'row-config': { useKey: true },
'column-config': { resizable: true },
'show-overflow': 'tooltip',
'tooltip-config': unref(tableTooltipConfig),
data: unref(tableData2),
'edit-config': { trigger: 'click', mode: 'cell' },
'checkbox-config': checkBoxConfig,
onCheckboxChange: changeCheck,
onCheckboxAll: changeCheck,
},
{
default: withCtx(() => [
createVNode$1(_component_vxe_column, {
type: 'checkbox',
width: '60',
}),
createVNode$1(
_component_vxe_column,
{
title: '\u5E8F\u53F7',
field: 'no',
},
{
default: withCtx(({ row }) => [
withDirectives(
createElementVNode(
'span',
null,
toDisplayString$1(row.no),
513
),
[[vShow, typeof row.no === 'number']]
),
]),
_: 1,
}
),
createVNode$1(
_component_vxe_column,
{
title: '\u521B\u5EFA\u65B9\u5F0F',
field: 'automatic',
},
{
default: withCtx(({ row }) => [
createElementVNode(
'span',
null,
toDisplayString$1(ceateTypefilter(row.automatic)),
1
),
]),
_: 1,
}
),
createVNode$1(
_component_vxe_column,
{
title: '\u539F\u59CB\u6587\u672C',
field: 'originalText',
'edit-render': { autofocus: '.el-input__inner' },
},
{
edit: withCtx(({ row }) => [
createVNode$1(
_component_el_input,
{
disabled: row.automatic,
modelValue: row.originalText,
'onUpdate:modelValue': ($event) =>
(row.originalText = $event),
type: 'text',
spellcheck: false,
onChange: ($event) => changeTableDataMsg(row),
},
null,
8,
[
'disabled',
'modelValue',
'onUpdate:modelValue',
'onChange',
]
),
]),
_: 1,
},
8,
['edit-render']
),
createVNode$1(
_component_vxe_column,
{
title: unref(activeLangName),
field: 'translationText',
'edit-render': { autofocus: '.el-input__inner' },
},
{
edit: withCtx(({ row }) => [
createElementVNode('div', _hoisted_6$12, [
createVNode$1(
_component_el_input,
{
modelValue: row.translationText,
'onUpdate:modelValue': ($event) =>
(row.translationText = $event),
onChange: ($event) => changeTableDataMsg(row),
},
null,
8,
['modelValue', 'onUpdate:modelValue', 'onChange']
),
]),
]),
_: 1,
},
8,
['title', 'edit-render']
),
createVNode$1(
_component_vxe_column,
{
title: '\u64CD\u4F5C',
field: 'operate',
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_7$X, [
createElementVNode('div', _hoisted_8$T, [
createElementVNode(
'i',
{
class:
'iconfont icon-yuyanliebiao language-icon',
onClick: ($event) =>
openTranlateTextDailog(row),
},
null,
8,
_hoisted_9$Q
),
]),
]),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['tooltip-config', 'data']
),
]),
(openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
modelValue: tranlateTextDailog.value,
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) => (tranlateTextDailog.value = $event)),
title: '\u7FFB\u8BD1\u5F39\u7A97',
width: '660px',
'custom-class': 'cms-el-dialog tranlateText-dialog',
'close-on-click-modal': false,
key: new Date().toISOString(),
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_10$P, [
createElementVNode('div', _hoisted_11$L, [
_hoisted_12$J,
createVNode$1(
_component_el_input,
{
disabled: unref(currentTranslateItem).automatic,
modelValue: unref(currentTranslateItem).originalText,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(currentTranslateItem).originalText =
$event)),
class: '-scms-input',
type: 'textarea',
rows: 10,
resize: 'none',
},
null,
8,
['disabled', 'modelValue']
),
]),
createElementVNode('div', _hoisted_13$C, [
createElementVNode(
'p',
_hoisted_14$y,
toDisplayString$1(unref(activeLangName)),
1
),
createVNode$1(
_component_el_input,
{
modelValue: unref(currentTranslateItem).translationText,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(currentTranslateItem).translationText =
$event)),
class: '-scms-input',
type: 'textarea',
rows: 10,
resize: 'none',
},
null,
8,
['modelValue']
),
]),
]),
createElementVNode('div', _hoisted_15$y, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: closeTranlateTextDailog,
},
{
default: withCtx(() => [_hoisted_16$y]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: updateTranslateText,
},
{
default: withCtx(() => [_hoisted_17$s]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
)),
(openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
modelValue: unref(delNodeDailog).isShow,
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) =>
(unref(delNodeDailog).isShow = $event)),
title: '\u786E\u8BA4\u5220\u9664',
width: '450px',
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
key: new Date().toISOString(),
},
{
default: withCtx(() => [
_hoisted_18$p,
createElementVNode('div', _hoisted_19$n, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: hideDialog,
},
{
default: withCtx(() => [_hoisted_20$l]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: deleteTextlist,
},
{
default: withCtx(() => [_hoisted_21$g]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
)),
])
)
}
},
})
var ContentTable = /* @__PURE__ */ _export_sfc(_sfc_main$1O, [
['__scopeId', 'data-v-ba44ca9e'],
])
var ContentTable$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ContentTable,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Lang_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$1H = { class: 'lang' }
const _sfc_main$1N = /* @__PURE__ */ defineComponent({
setup(__props2) {
const contentTableCom = ref()
const SidebarCom = ref()
let langId = ref(null)
const SwitchLang = (data2) => {
langId.value = data2.id
nextTick(() => {
contentTableCom.value?.init(data2.id, data2.name)
})
}
const deleteLang = () => {
langId.value = null
}
const openCreateDialog = () => {
nextTick(() => {
SidebarCom.value?.createDialogOpen(false)
})
}
return (_ctx, _cache) => {
const _directive_track = resolveDirective('track')
return withDirectives(
(openBlock(),
createElementBlock('div', _hoisted_1$1H, [
createVNode$1(
Sidebar$6,
{
ref_key: 'SidebarCom',
ref: SidebarCom,
onSwitchLang: SwitchLang,
onDeleteLang: deleteLang,
},
null,
512
),
langId.value
? (openBlock(),
createBlock(
ContentTable,
{
key: 0,
ref_key: 'contentTableCom',
ref: contentTableCom,
},
null,
512
))
: (openBlock(),
createBlock(Empty, {
key: 1,
title: '\u65B0\u589E\u8BED\u8A00',
onHightLightPages: openCreateDialog,
})),
])),
[
[
_directive_track,
{
moduleType: '\u6807\u51C6\u6A21\u5757',
moduleCode: '\u591A\u8BED\u8A00',
pageCode: '\u591A\u8BED\u8A00',
},
'page',
],
]
)
}
},
})
var Lang = /* @__PURE__ */ _export_sfc(_sfc_main$1N, [
['__scopeId', 'data-v-20e8c695'],
])
var Lang$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Lang,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
let state$2 = reactive({
activeNode: null,
nodeDetail: {
name: '',
detail: {},
savedData: '',
},
tableList: [],
fieldList: [],
})
let actionList = [
{
value: 1,
label: '\u67E5\u8BE2',
},
{
value: 2,
label: '\u63D2\u5165',
},
{
value: 3,
label: '\u4FEE\u6539',
},
]
let connectionType = [
{
name: '\u6570\u636E\u5E93\u4EA4\u4E92',
value: 1,
showKey: ['databaseType'],
},
{
name: 'MQTT_Client',
value: 2,
showKey: ['mqttType'],
},
]
let databaseType = [
{
name: 'MySQL',
value: 1,
default: {
port: 3306,
},
showKey: ['server', 'port', 'database', 'userName', 'password'],
},
{
name: 'SQLite',
value: 2,
default: {},
showKey: ['databasePath', 'password'],
},
{
name: 'SQL Sever',
value: 3,
default: {
port: 1433,
},
showKey: ['server', 'port', 'initDatabase', 'authenticationType'],
},
]
let authenticationType = [
{
value: 1,
name: 'SQL Server\u9A8C\u8BC1',
showKey: ['userName', 'password'],
},
{
value: 2,
name: 'Windows\u9A8C\u8BC1',
showKey: [],
},
]
let mqttType = [
{
name: 'SLM\u5E73\u53F0',
value: 1,
default: {
pushType: 1,
},
showKey: ['pushType'],
},
{
name: '\u534E\u4E3AMQTT_V5',
value: 2,
default: {
pushType: 1,
port: null,
},
showKey: [
'serverName',
'port',
'cloudDeviceId',
'originalSecret',
'pushType',
],
},
]
let pushType = [
{
name: '\u6DF7\u5408\u63A8\u9001',
value: 1,
default: {
timingPeriod: 600,
changingPeriod: 1,
},
showKey: ['timingPeriod', 'changingPeriod'],
},
{
name: '\u5B9A\u65F6\u63A8\u9001',
value: 2,
default: {
timingPeriod: 600,
},
showKey: ['timingPeriod'],
},
{
name: '\u53D8\u5316\u63A8\u9001',
value: 3,
default: {
changingPeriod: 1,
},
showKey: ['changingPeriod'],
},
]
const field = {
name: {
type: 'input',
label: '\u4E92\u8054\u540D\u79F0',
},
connectionType: {
type: 'select',
label: '\u4E92\u8054\u7C7B\u578B',
editDisabled: true,
list: connectionType,
},
databaseType: {
type: 'select',
label: '\u6570\u636E\u5E93\u7C7B\u578B',
editDisabled: true,
list: databaseType,
},
server: {
type: 'input',
label: '\u670D\u52A1\u5668',
},
serverName: {
type: 'input',
label: '\u670D\u52A1\u5668\u5730\u5740',
},
port: {
type: 'input',
label: '\u7AEF\u53E3',
input(formData, val2) {
formData.port = Number((formData.port + '').replace(/[^\d.]/g, ''))
},
},
database: {
type: 'input',
label: '\u6570\u636E\u5E93',
editDisabled: true,
},
databasePath: {
type: 'file',
label: '\u6570\u636E\u5E93\u6587\u4EF6',
editDisabled: true,
upload(formData) {
if (!client.isClient()) {
toast(
'web\u7AEF\u4E0D\u652F\u6301\u8BE5\u529F\u80FD\uFF0C\u8BF7\u5728\u5BA2\u6237\u7AEF\u64CD\u4F5C',
'error'
)
} else {
client
.getFilePath({
title: '\u8BF7\u9009\u62E9\u6587\u4EF6',
type: 'db',
filerName: 'SQLite File Type',
})
.then((path) => {
formData.databasePath = path[0]
})
}
},
},
initDatabase: {
type: 'input',
label: '\u521D\u59CB\u6570\u636E\u5E93',
editDisabled: true,
},
authenticationType: {
type: 'select',
label: '\u9A8C\u8BC1',
list: authenticationType,
},
userName: {
type: 'input',
label: '\u7528\u6237\u540D',
},
password: {
type: 'password',
label: '\u5BC6\u7801',
input(formData, val2) {
if (formData.changedPassword) return
formData.password = val2.substring(val2.length - 1, val2.length)
formData.changedPassword = true
},
},
mqttType: {
type: 'select',
label: 'MQTT\u7C7B\u578B',
editDisabled: true,
list: mqttType,
},
pushType: {
type: 'select',
label: '\u63A8\u9001\u65B9\u5F0F',
list: pushType,
},
timingPeriod: {
type: 'inputGroup',
unit: '\u79D2',
label: '\u5B9A\u65F6\u63A8\u9001\u5468\u671F',
input(formData, val2) {
PositiveInteger(formData, 'timingPeriod')
},
},
changingPeriod: {
type: 'inputGroup',
unit: '\u79D2',
label: '\u53D8\u5316\u63A8\u9001\u5468\u671F',
input(formData, val2) {
PositiveInteger(formData, 'changingPeriod')
},
},
cloudDeviceId: {
type: 'input',
label: '\u63A5\u5165\u8BB8\u53EFID',
},
originalSecret: {
type: 'input',
label: '\u539F\u59CB\u5BC6\u94A5',
},
}
function PositiveInteger(formData, type4) {
formData[type4] = formData[type4].replace(/^(0+)|[^\d]+/g, '')
}
let store = {
connectionType,
databaseType,
authenticationType,
mqttType,
pushType,
field,
}
var CreateConnection_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$15 = (n2) => (
pushScopeId('data-v-4e6cade3'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1G = { class: 'dialog-content' }
const _hoisted_2$1w = { class: 'form-table' }
const _hoisted_3$1p = ['onClick']
const _hoisted_4$1d = ['title']
const _hoisted_5$18 = /* @__PURE__ */ _withScopeId$15(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-gengduo1' },
null,
-1
)
)
const _hoisted_6$11 = { class: 'unit' }
const _hoisted_7$W = { class: 'el-dialog__footer footer' }
const _hoisted_8$S = { class: 'flex' }
const _hoisted_9$P = /* @__PURE__ */ createTextVNode(
' \u6D4B\u8BD5\u8FDE\u63A5 '
)
const _hoisted_10$O = { class: 'flex-right' }
const _hoisted_11$K = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_12$I = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$1M = /* @__PURE__ */ defineComponent({
props: {
modelValue: { type: Boolean },
disabled: { type: Boolean },
formData: null,
},
emits: ['confirm', 'update:modelValue'],
setup(__props2, { expose, emit: emit2 }) {
const $props2 = __props2
let modelValue = ref($props2.modelValue)
let formData = ref($props2.formData)
let fieldList = ref(['name', 'connectionType'])
watch$1(
() => formData.value,
() => {
let keyShow = ['name', 'connectionType']
const getKeyShow = (keys3) => {
keys3.forEach((key2) => {
if (formData.value[key2] && store.field[key2].list) {
let keys22 = store[key2][formData.value[key2] - 1].showKey
keyShow.push(...keys22)
getKeyShow(keys22)
}
})
}
getKeyShow(keyShow)
fieldList.value = keyShow
},
{
deep: true,
immediate: true,
}
)
const resetDefaultValue = (field2, value2) => {
let defaultValue = store[field2][value2 - 1].default
if (!defaultValue) return
for (const key2 in defaultValue) {
formData.value[key2] = defaultValue[key2]
if (store.field[key2].type === 'select') {
resetDefaultValue(key2, formData.value[key2])
}
}
}
onMounted(() => {})
const close2 = () => {
emit2('update:modelValue', false)
}
const checkConnect = async () => {
let res
if ($props2.disabled) {
res = await request.post(
`/api/v1/connection/test/${formData.value.id}`,
formData.value
)
} else {
res = await request.post('/api/v1/connection/test', formData.value)
}
toast(res, 'success')
}
const confirm2 = async () => {
let res
let msg = ''
if ($props2.disabled) {
res = await request.put(
`/api/v1/connection/${formData.value.id}/config`,
formData.value
)
msg = '\u4FEE\u6539\u4E92\u8054\u9879\u914D\u7F6E\u6210\u529F'
} else {
res = await request.post('/api/v1/connection', formData.value)
msg = '\u65B0\u589E\u4E92\u8054\u9879\u6210\u529F'
}
if (res.message == '') {
toast(msg, 'success')
} else {
toast(res.message, 'warning')
}
emit2('confirm', res.data)
close2()
}
expose({
close: close2,
})
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_form = resolveComponent('el-form')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
_component_el_dialog,
{
modelValue: modelValue.value,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) => (modelValue.value = $event)),
'append-to-body': '',
'close-on-click-modal': false,
title: $props2.disabled
? '\u4FEE\u6539\u914D\u7F6E'
: '\u65B0\u589E\u4E92\u8054\u9879',
'custom-class': 'cms-el-dialog',
width: '450px',
onClose: close2,
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$1G, [
createVNode$1(
_component_el_form,
{
onSubmit:
_cache[0] ||
(_cache[0] = withModifiers(() => {}, ['prevent'])),
'label-width': '110px',
'label-position': 'left',
class: 'cms-el-form',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$1w, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(fieldList.value, (field2) => {
return (
openBlock(),
createBlock(
_component_el_form_item,
{
key: field2,
label:
unref(store).field[field2].label +
'\uFF1A',
},
{
default: withCtx(() => [
unref(store).field[field2].type ===
'select'
? (openBlock(),
createBlock(
_component_el_select,
{
key: 0,
class: 'cms-el-select',
'popper-class':
'cms-el-select_check',
modelValue:
formData.value[field2],
'onUpdate:modelValue': ($event) =>
(formData.value[field2] =
$event),
placeholder:
'\u8BF7\u9009\u62E9' +
unref(store).field[field2]
.label,
disabled:
$props2.disabled &&
unref(store).field[field2]
.editDisabled,
onChange: ($event) =>
resetDefaultValue(
field2,
$event
),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(store)[field2],
(item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
value: item2.value,
label: item2.name,
},
null,
8,
['value', 'label']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
[
'modelValue',
'onUpdate:modelValue',
'placeholder',
'disabled',
'onChange',
]
))
: unref(store).field[field2].type ===
'file'
? (openBlock(),
createElementBlock(
'div',
{
key: 1,
class: normalizeClass([
'input-group',
{
'is-disabled':
$props2.disabled &&
unref(store).field[field2]
.editDisabled,
},
]),
onClick: ($event) =>
unref(store).field[
field2
].upload(formData.value),
},
[
createElementVNode(
'div',
{
class: 'input-group-content',
title: formData.value[field2],
},
toDisplayString$1(
formData.value[field2]
),
9,
_hoisted_4$1d
),
_hoisted_5$18,
],
10,
_hoisted_3$1p
))
: unref(store).field[field2].type ===
'inputGroup'
? (openBlock(),
createElementBlock(
'div',
{
key: 2,
class: normalizeClass([
'input-unit-group',
{
'is-disabled':
$props2.disabled &&
unref(store).field[field2]
.editDisabled,
},
]),
},
[
createVNode$1(
_component_el_input,
{
type: unref(store).field[
field2
].type,
modelValue:
formData.value[field2],
'onUpdate:modelValue': (
$event
) =>
(formData.value[field2] =
$event),
onInput: ($event) =>
unref(store).field[
field2
]?.input?.(
formData.value,
$event
),
},
null,
8,
[
'type',
'modelValue',
'onUpdate:modelValue',
'onInput',
]
),
createElementVNode(
'span',
_hoisted_6$11,
toDisplayString$1(
unref(store).field[field2]
.unit
),
1
),
],
2
))
: (openBlock(),
createBlock(
_component_el_input,
{
key: 3,
type: unref(store).field[field2]
.type,
modelValue:
formData.value[field2],
'onUpdate:modelValue': ($event) =>
(formData.value[field2] =
$event),
autocomplete: 'new-password',
disabled:
$props2.disabled &&
unref(store).field[field2]
.editDisabled,
onInput: ($event) =>
unref(store).field[
field2
]?.input?.(
formData.value,
$event
),
},
null,
8,
[
'type',
'modelValue',
'onUpdate:modelValue',
'disabled',
'onInput',
]
)),
]),
_: 2,
},
1032,
['label']
)
)
}),
128
)),
]),
]),
_: 1,
}
),
]),
createElementVNode('div', _hoisted_7$W, [
createElementVNode('div', _hoisted_8$S, [
createVNode$1(
_component_el_button,
{
class: 'btn btn-test btn_config',
onClick: checkConnect,
},
{
default: withCtx(() => [_hoisted_9$P]),
_: 1,
}
),
createElementVNode('div', _hoisted_10$O, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: close2,
},
{
default: withCtx(() => [_hoisted_11$K]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_12$I]),
_: 1,
}
),
]),
]),
]),
]),
_: 1,
},
8,
['modelValue', 'title']
),
])
)
}
},
})
var CreateConnection = /* @__PURE__ */ _export_sfc(_sfc_main$1M, [
['__scopeId', 'data-v-4e6cade3'],
])
var CreateConnection$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: CreateConnection,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var previewDatabaseTable_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$14 = (n2) => (
pushScopeId('data-v-4c7bb440'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1F = { class: 'screen' }
const _hoisted_2$1v = /* @__PURE__ */ _withScopeId$14(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u9884\u89C8\u884C\u6570\uFF1A',
-1
)
)
const _hoisted_3$1o = {
class: 'vxe-cell--label',
style: { display: 'block' },
}
const _sfc_main$1L = /* @__PURE__ */ defineComponent({
setup(__props2, { expose }) {
let visible = ref(false)
let column = ref([])
let tableData2 = ref([])
const search2 = async () => {
tableData2.value = await getTableField(option2.value)
}
let option2 = ref({
id: '',
isBasic: true,
databaseTableName: '',
querySql: '',
limited: 10,
})
const getTableField = async ({
id: id2,
isBasic,
databaseTableName,
querySql,
limited,
}) => {
let res = await request.post(`/api/v1/connection/${id2}/preview`, {
isBasic,
databaseTableName,
querySql,
limited,
})
column.value = res.headers
return res.data
}
const open2 = async (opt, data2) => {
visible.value = true
option2.value = opt
tableData2.value = data2
}
const close2 = () => {
visible.value = false
}
expose({
open: open2,
close: close2,
getTableField,
})
return (_ctx, _cache) => {
const _component_el_input_number = resolveComponent('el-input-number')
const _component_vxe_column = resolveComponent('vxe-column')
const _component_vxe_table = resolveComponent('vxe-table')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
width: '870px',
top: '22vh',
modelValue: visible.value,
'onUpdate:modelValue':
_cache[1] || (_cache[1] = ($event) => (visible.value = $event)),
title: '\u6570\u636E\u8868\u9884\u89C8',
'custom-class': 'cms-el-dialog',
'append-to-body': true,
onClose: close2,
},
{
default: withCtx(() => [
createElementVNode('div', null, [
createElementVNode('div', _hoisted_1$1F, [
_hoisted_2$1v,
createVNode$1(
_component_el_input_number,
{
class:
'screen-input cms-vxe-edit-table cms-el-input-number-x',
modelValue: option2.value.limited,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(option2.value.limited = $event)),
clearable: '',
controls: false,
'step-strictly': true,
step: 1,
min: 1,
},
null,
8,
['modelValue']
),
createElementVNode(
'button',
{
class: 'cms-btn btn-data-plain primary',
onClick: search2,
},
'\u67E5\u8BE2'
),
]),
createVNode$1(
_component_vxe_table,
{
class: 'cms-vxe-table cms-vxe-table-min',
style: { 'min-width': '100%' },
border: '',
ref: 'xTable',
height: '500px',
'show-overflow': 'tooltip',
'tooltip-config': { showAll: true },
'column-config': { resizable: true },
'show-header-overflow': 'tooltip',
data: tableData2.value,
},
{
default: withCtx(() => [
createVNode$1(_component_vxe_column, {
type: 'seq',
width: '80',
title: '\u5E8F\u53F7',
align: 'center',
}),
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(column.value, (item2) => {
return (
openBlock(),
createBlock(
_component_vxe_column,
{
key: item2,
field: item2,
title: item2,
'min-width': 120,
},
{
default: withCtx((scope) => [
createElementVNode(
'div',
_hoisted_3$1o,
toDisplayString$1(scope.row[item2]),
1
),
]),
_: 2,
},
1032,
['field', 'title']
)
)
}),
128
)),
]),
_: 1,
},
8,
['data']
),
]),
]),
_: 1,
},
8,
['modelValue']
)
)
}
},
})
var PreviewDatabaseTable = /* @__PURE__ */ _export_sfc(_sfc_main$1L, [
['__scopeId', 'data-v-4c7bb440'],
])
var previewDatabaseTable = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: PreviewDatabaseTable,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var SqlConfigDialog_vue_vue_type_style_index_0_scoped_true_lang = ''
var SqlConfigDialog_vue_vue_type_style_index_1_scoped_true_lang = ''
var SqlConfigDialog_vue_vue_type_style_index_2_lang = ''
const _withScopeId$13 = (n2) => (
pushScopeId('data-v-26250fa2'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1E = { class: 'dialog-body' }
const _hoisted_2$1u = { class: 'row mb' }
const _hoisted_3$1n = { class: 'col' }
const _hoisted_4$1c = { class: 'row' }
const _hoisted_5$17 = { class: 'col' }
const _hoisted_6$10 = { class: 'panel' }
const _hoisted_7$V = /* @__PURE__ */ _withScopeId$13(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'header' },
'\u6570\u636E\u8868',
-1
)
)
const _hoisted_8$R = { class: 'body' }
const _hoisted_9$O = { class: 'filter' }
const _hoisted_10$N = ['onClick', 'onDblclick', 'title']
const _hoisted_11$J = { class: 'col' }
const _hoisted_12$H = { class: 'panel' }
const _hoisted_13$B = /* @__PURE__ */ _withScopeId$13(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'header' },
'\u5B57\u6BB5',
-1
)
)
const _hoisted_14$x = { class: 'body' }
const _hoisted_15$x = { class: 'filter' }
const _hoisted_16$x = ['onDblclick', 'title']
const _sfc_main$1K = /* @__PURE__ */ defineComponent({
props: {
code: {
type: String,
default: '',
},
isView: {
type: Boolean,
default: false,
},
mergeVariableList: {
type: Array,
default: () => [],
},
databaseList: {
type: Array,
default: () => [],
},
connectionItem: {
type: Object,
default: () => {},
},
},
emits: ['update:modelValue', 'update:code', 'change'],
setup(__props2, { expose, emit: emit2 }) {
const props2 = __props2
let filterDatabase = ref('')
let databaseChoice = ref('')
let filterField = ref('')
let fieldList = ref([])
let code2 = ref('')
watch$1(
() => props2.code,
() => {
code2.value = props2.code || ''
},
{ immediate: true }
)
function syntaxCheck2(code22) {
const rs2 = {
pass: true,
msg: '',
}
return rs2
}
function getSQLCode() {
const rs2 = syntaxCheck2(code2.value)
if (!rs2.pass) {
toast(`\u8BED\u6CD5\u9519\u8BEF ${rs2.msg}`, 'error')
return
}
return code2.value
}
async function confirm2() {
const rs2 = syntaxCheck2(code2.value)
if (!rs2.pass) {
toast(`\u8BED\u6CD5\u9519\u8BEF ${rs2.msg}`, 'error')
return
}
emit2('update:code', code2.value)
}
let timeId = null
function searchField(database) {
if (databaseChoice.value === database) return
databaseChoice.value = database
clearTimeout(timeId)
timeId = setTimeout(function () {
request
.get(
`/api/v1/connection/${props2.connectionItem.id}/databasetable/${database}/field`
)
.then((res) => {
fieldList.value = res
})
}, 250)
}
let inputCode2 = ref()
function insertCode2(text2) {
if (props2.isView) return
inputCode2.value?.insertCode(text2)
}
expose({
getSQLCode,
searchField,
confirm: confirm2,
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
return (
openBlock(),
createElementBlock('div', _hoisted_1$1E, [
createElementVNode('div', _hoisted_2$1u, [
createElementVNode('div', _hoisted_3$1n, [
createVNode$1(
InputCode,
{
ref_key: 'inputCode',
ref: inputCode2,
modelValue: code2.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (code2.value = $event)),
lang: 'sql',
style: normalizeStyle$1({
'pointer-events': props2.isView ? 'none' : 'normal',
}),
},
null,
8,
['modelValue', 'style']
),
]),
]),
createElementVNode('div', _hoisted_4$1c, [
createElementVNode('div', _hoisted_5$17, [
createElementVNode('div', _hoisted_6$10, [
_hoisted_7$V,
createElementVNode('div', _hoisted_8$R, [
createElementVNode('div', _hoisted_9$O, [
createVNode$1(
_component_el_input,
{
modelValue: filterDatabase.value,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(filterDatabase.value = $event)),
class: 'flex1',
placeholder: '\u8BF7\u8F93\u5165',
clearable: '',
},
null,
8,
['modelValue']
),
]),
createElementVNode('ul', null, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(__props2.databaseList, (op) => {
return (
openBlock(),
createElementBlock(
Fragment,
null,
[
filterDatabase.value === '' ||
op.indexOf(filterDatabase.value) > 0
? (openBlock(),
createElementBlock(
'li',
{
key: op,
onClick: ($event) => searchField(op),
onDblclick: ($event) =>
insertCode2(` ${op} `),
class: normalizeClass({
active: databaseChoice.value === op,
}),
title: op,
},
toDisplayString$1(op),
43,
_hoisted_10$N
))
: createCommentVNode('', true),
],
64
)
)
}),
256
)),
]),
]),
]),
]),
createElementVNode('div', _hoisted_11$J, [
createElementVNode('div', _hoisted_12$H, [
_hoisted_13$B,
createElementVNode('div', _hoisted_14$x, [
createElementVNode('div', _hoisted_15$x, [
createVNode$1(
_component_el_input,
{
modelValue: filterField.value,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(filterField.value = $event)),
class: 'flex1',
placeholder: '\u8BF7\u8F93\u5165',
clearable: '',
},
null,
8,
['modelValue']
),
]),
createElementVNode('ul', null, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(fieldList.value, (v4) => {
return (
openBlock(),
createElementBlock(
Fragment,
null,
[
filterField.value === '' ||
v4.indexOf(filterField.value) > 0
? (openBlock(),
createElementBlock(
'li',
{
key: v4,
onDblclick: ($event) =>
insertCode2(` ${v4} `),
title: v4,
},
toDisplayString$1(v4),
41,
_hoisted_16$x
))
: createCommentVNode('', true),
],
64
)
)
}),
256
)),
]),
]),
]),
]),
]),
])
)
}
},
})
var SqlConfigDialog = /* @__PURE__ */ _export_sfc(_sfc_main$1K, [
['__scopeId', 'data-v-26250fa2'],
])
var SqlConfigDialog$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: SqlConfigDialog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var selectDataTable_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$12 = (n2) => (
pushScopeId('data-v-54df6755'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1D = { class: 'page-head' }
const _hoisted_2$1t = { class: 'page-head-title' }
const _hoisted_3$1m = ['disabled']
const _hoisted_4$1b = ['disabled']
const _hoisted_5$16 = { class: 'screen' }
const _hoisted_6$$ = { class: 'table-list' }
const _hoisted_7$U = /* @__PURE__ */ _withScopeId$12(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'table-header flex' },
[
/* @__PURE__ */ createElementVNode('div', { class: 'option-cell' }),
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'flex-1 cell' },
'\u8868\u540D'
),
],
-1
)
)
const _hoisted_8$Q = { class: 'list-table' }
const _hoisted_9$N = {
width: '42px',
height: '36px',
}
const _hoisted_10$M = { class: 'option-cell' }
const _hoisted_11$I = { class: 'flex-1 cell' }
const _hoisted_12$G = { class: 'el-dialog__footer footer' }
const _hoisted_13$A = { class: 'flex' }
const _hoisted_14$w = /* @__PURE__ */ createTextVNode('\u9884\u89C8')
const _hoisted_15$w = { class: 'flex-right' }
const _hoisted_16$w = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_17$r = /* @__PURE__ */ createTextVNode('\u786E\u8BA4')
const _sfc_main$1J = /* @__PURE__ */ defineComponent({
props: {
title: null,
isView: { type: Boolean },
connectionItem: null,
formData: null,
},
emits: ['confirm', 'update:modelValue'],
setup(__props2, { expose, emit: emit2 }) {
const $props2 = __props2
let visible = ref(false)
let activeTab2 = ref(0)
let formData = ref($props2.formData)
let tableData2 = ref([])
let primaryTableData = ref()
let checkRowKeys = ref('')
let filterText = ref('')
watch$1(
() => filterText.value,
() => {
tableData2.value = primaryTableData.value.filter((item2) =>
item2.includes(filterText.value)
)
if (
checkRowKeys.value &&
!tableData2.value.includes(checkRowKeys.value)
)
tableData2.value.unshift(checkRowKeys.value)
}
)
onMounted(async () => {
visible.value = true
await getDatabaseTable()
activeTab2.value = formData.value.isBasic ? 0 : 1
checkRowKeys.value = formData.value.isBasic
? formData.value.databaseTableName
: ''
if ($props2.isView && activeTab2.value === 1) {
let arr = formData.value.querySql.split(/\s+/)
let name2 = arr[arr.indexOf('from') + 1]
nextTick(() => {
sqlConfigRef.value?.searchField(name2)
})
}
})
const getDatabaseTable = async () => {
if ($props2.isView && $props2.formData.databaseTableNames) {
tableData2.value = [...$props2.formData.databaseTableNames]
primaryTableData.value = [...$props2.formData.databaseTableNames]
} else {
let res = await request.get(
`/api/v1/connection/${$props2.connectionItem.id}/databasetable`
)
tableData2.value = [...res]
primaryTableData.value = [...res]
}
}
const viewSelected = () => {
tableData2.value = !checkRowKeys.value ? [] : [checkRowKeys.value]
}
const clear2 = () => {
filterText.value = ''
tableData2.value = [...primaryTableData.value]
}
const PreviewDatabaseTableRef = ref()
const preview2 = async () => {
let querySql = ''
if (activeTab2.value === 1) {
querySql = sqlConfigRef.value.getSQLCode()
}
let opt = {
id: $props2.connectionItem.id,
isBasic: activeTab2.value === 0,
databaseTableName: checkRowKeys.value,
querySql,
limited: 10,
}
let returnData = await PreviewDatabaseTableRef.value.getTableField(opt)
PreviewDatabaseTableRef.value.open(opt, returnData)
}
const close2 = () => {
emit2('update:modelValue', false)
}
let sqlConfigRef = ref()
const confirm2 = async () => {
if (activeTab2.value === 1) {
sqlConfigRef.value.confirm()
await request.post(
`api/v1/connection/${$props2.connectionItem.id}/checksql`,
{
querySql: formData.value.querySql,
}
)
}
emit2('confirm', {
isBasic: activeTab2.value === 0,
databaseTableName: activeTab2.value === 0 ? checkRowKeys.value : '',
querySql: activeTab2.value !== 0 ? formData.value.querySql : '',
})
close2()
}
expose({
close: close2,
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_radio = resolveComponent('el-radio')
const _component_vxe_list = resolveComponent('vxe-list')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
_component_el_dialog,
{
width: '640px',
top: '22vh',
modelValue: visible.value,
'onUpdate:modelValue':
_cache[5] || (_cache[5] = ($event) => (visible.value = $event)),
title: $props2.title || '\u539F\u59CB\u8868\u5173\u8054',
'custom-class': 'cms-el-dialog',
'append-to-body': true,
'close-on-click-modal': false,
onClose: close2,
},
{
default: withCtx(() => [
createElementVNode('div', null, [
createElementVNode('div', _hoisted_1$1D, [
createElementVNode('span', _hoisted_2$1t, [
createElementVNode(
'button',
{
class: normalizeClass([
'btn btn-normal',
{ active: activeTab2.value === 0 },
]),
onClick:
_cache[0] ||
(_cache[0] = ($event) => (activeTab2.value = 0)),
disabled: $props2.isView,
},
' \u57FA\u7840 ',
10,
_hoisted_3$1m
),
createElementVNode(
'button',
{
class: normalizeClass([
'btn btn-normal',
{ active: activeTab2.value === 1 },
]),
onClick:
_cache[1] ||
(_cache[1] = ($event) => (activeTab2.value = 1)),
disabled: $props2.isView,
},
' \u9AD8\u7EA7 ',
10,
_hoisted_4$1b
),
]),
]),
activeTab2.value === 0
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
createElementVNode('div', _hoisted_5$16, [
createVNode$1(
_component_el_input,
{
class: 'screen-input cms-el-input-x',
placeholder: '\u8BF7\u8F93\u5165\u8868\u540D',
modelValue: filterText.value,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(filterText.value = $event)),
clearable: '',
},
null,
8,
['modelValue']
),
createElementVNode(
'button',
{
class: 'cms-btn btn-data-plain primary',
onClick: viewSelected,
},
'\u67E5\u770B\u9009\u4E2D'
),
createElementVNode(
'button',
{
class: 'cms-btn btn-data-plain danger',
onClick: clear2,
},
'\u6E05\u9664'
),
]),
createElementVNode('div', _hoisted_6$$, [
_hoisted_7$U,
createVNode$1(
_component_vxe_list,
{
height: '100%',
class: 'vxe-list',
data: tableData2.value,
},
{
default: withCtx(({ items }) => [
createElementVNode('table', _hoisted_8$Q, [
createElementVNode('tbody', null, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(items, (item2, index2) => {
return (
openBlock(),
createElementBlock(
'tr',
{ key: index2 },
[
createElementVNode(
'td',
_hoisted_9$N,
[
createElementVNode(
'div',
_hoisted_10$M,
[
createVNode$1(
_component_el_radio,
{
modelValue:
checkRowKeys.value,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = (
$event
) =>
(checkRowKeys.value =
$event)),
label: item2,
disabled:
$props2.isView,
},
null,
8,
[
'modelValue',
'label',
'disabled',
]
),
]
),
]
),
createElementVNode('td', null, [
createElementVNode(
'div',
_hoisted_11$I,
toDisplayString$1(item2),
1
),
]),
]
)
)
}),
128
)),
]),
]),
]),
_: 1,
},
8,
['data']
),
]),
],
64
))
: activeTab2.value === 1
? (openBlock(),
createBlock(
SqlConfigDialog,
{
key: 1,
ref_key: 'sqlConfigRef',
ref: sqlConfigRef,
code: formData.value.querySql,
'onUpdate:code':
_cache[4] ||
(_cache[4] = ($event) =>
(formData.value.querySql = $event)),
connectionItem: __props2.connectionItem,
databaseList: primaryTableData.value,
isView: $props2.isView,
},
null,
8,
['code', 'connectionItem', 'databaseList', 'isView']
))
: createCommentVNode('', true),
createElementVNode('div', _hoisted_12$G, [
createElementVNode('div', _hoisted_13$A, [
createVNode$1(
_component_el_button,
{
class: 'btn btn_config',
onClick: preview2,
},
{
default: withCtx(() => [_hoisted_14$w]),
_: 1,
}
),
createElementVNode('div', _hoisted_15$w, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: close2,
},
{
default: withCtx(() => [_hoisted_16$w]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_17$r]),
_: 1,
}
),
]),
]),
]),
]),
createVNode$1(
PreviewDatabaseTable,
{
ref_key: 'PreviewDatabaseTableRef',
ref: PreviewDatabaseTableRef,
},
null,
512
),
]),
_: 1,
},
8,
['modelValue', 'title']
),
])
)
}
},
})
var selectDataTable = /* @__PURE__ */ _export_sfc(_sfc_main$1J, [
['__scopeId', 'data-v-54df6755'],
])
var selectDataTable$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: selectDataTable,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var CreateData_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$11 = (n2) => (
pushScopeId('data-v-e96ea2f2'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1C = { class: 'dialog-content' }
const _hoisted_2$1s = { class: 'form-table' }
const _hoisted_3$1l = { class: 'content' }
const _hoisted_4$1a = /* @__PURE__ */ _withScopeId$11(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-gengduo1' },
null,
-1
)
)
const _hoisted_5$15 = { class: 'el-dialog__footer' }
const _hoisted_6$_ = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_7$T = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$1I = /* @__PURE__ */ defineComponent({
props: {
connectionItem: null,
modelValue: { type: Boolean },
},
emits: ['confirm', 'update:modelValue'],
setup(__props2, { expose, emit: emit2 }) {
const $props2 = __props2
let formData = ref({
name: '',
isBasic: true,
databaseTableName: '',
placeholder: '',
querySql: '',
})
let modelValue = ref($props2.modelValue)
let connectionItem = ref($props2.connectionItem)
let database = computed(() => {
let { isBasic, databaseTableName, querySql } = formData.value
return isBasic
? databaseTableName
: querySql === ''
? ''
: '\u9AD8\u7EA7\u6A21\u5F0F'
})
onMounted(() => {
formData.value.placeholder = `\u65B0\u5EFA\u6570\u636E\u8868-${Math.random()
.toString()
.slice(-4)}`
})
const selectDataTableRef = ref()
let selectDataTableDialog = ref({
visible: false,
})
const choiceDataTable = () => {
selectDataTableDialog.value.visible = true
}
const selectDataTableConfirm = ({
isBasic,
databaseTableName,
querySql,
}) => {
formData.value.isBasic = isBasic
formData.value.databaseTableName = databaseTableName
formData.value.querySql = querySql
}
const close2 = () => {
emit2('update:modelValue', false)
}
const confirm2 = async () => {
let {
isBasic,
databaseTableName,
querySql,
name: name2,
placeholder,
} = formData.value
if (
(isBasic && databaseTableName === '') ||
(!isBasic && querySql === '')
) {
toast('\u8BF7\u5173\u8054\u539F\u59CB\u8868', 'error')
return
}
const res = await request.post(
`api/v1/connection/${connectionItem.value.id}/table`,
{
isBasic,
databaseTableName,
querySql,
name: name2 || placeholder,
}
)
emit2('confirm', connectionItem.value, res)
close2()
}
expose({
close: close2,
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_form = resolveComponent('el-form')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
_component_el_dialog,
{
modelValue: modelValue.value,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) => (modelValue.value = $event)),
'append-to-body': true,
'close-on-click-modal': false,
title: '\u6DFB\u52A0\u6570\u636E\u8868',
'custom-class': 'cms-el-dialog',
onClose: close2,
width: '450px',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$1C, [
createVNode$1(
_component_el_form,
{
onSubmit:
_cache[1] ||
(_cache[1] = withModifiers(() => {}, ['prevent'])),
'label-width': '95px',
'label-position': 'left',
class: 'cms-el-form',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$1s, [
createVNode$1(
_component_el_form_item,
{ label: '\u4E92\u8054\u540D\u79F0\uFF1A' },
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: formData.value.name,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(formData.value.name = $event)),
placeholder: formData.value.placeholder,
clearable: '',
},
null,
8,
['modelValue', 'placeholder']
),
]),
_: 1,
}
),
createVNode$1(
_component_el_form_item,
{ label: '\u539F\u59CB\u8868\u5173\u8054\uFF1A' },
{
default: withCtx(() => [
createElementVNode(
'div',
{
class: 'wrapper',
onClick: choiceDataTable,
},
[
createElementVNode(
'div',
_hoisted_3$1l,
toDisplayString$1(unref(database)),
1
),
_hoisted_4$1a,
]
),
]),
_: 1,
}
),
]),
]),
_: 1,
}
),
]),
createElementVNode('div', _hoisted_5$15, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: close2,
},
{
default: withCtx(() => [_hoisted_6$_]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_7$T]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
),
selectDataTableDialog.value.visible
? (openBlock(),
createBlock(
selectDataTable,
{
key: 0,
ref_key: 'selectDataTableRef',
ref: selectDataTableRef,
modelValue: selectDataTableDialog.value.visible,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(selectDataTableDialog.value.visible = $event)),
connectionItem: connectionItem.value,
formData: formData.value,
onConfirm: selectDataTableConfirm,
},
null,
8,
['modelValue', 'connectionItem', 'formData']
))
: createCommentVNode('', true),
])
)
}
},
})
var createData = /* @__PURE__ */ _export_sfc(_sfc_main$1I, [
['__scopeId', 'data-v-e96ea2f2'],
])
var CreateData = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: createData,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Sidebar_vue_vue_type_style_index_0_scoped_true_lang$2 = ''
const _withScopeId$10 = (n2) => (
pushScopeId('data-v-20b33d73'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1B = { class: 'connectTree sidebar' }
const _hoisted_2$1r = /* @__PURE__ */ _withScopeId$10(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
[
/* @__PURE__ */ createElementVNode('i', {
class: 'iconfont icon-hulianxiang title_img',
}),
/* @__PURE__ */ createElementVNode('span', null, '\u4E92\u8054\u9879'),
],
-1
)
)
const _hoisted_3$1k = { class: 'search flex' }
const _hoisted_4$19 = { class: 'search_tool flex' }
const _hoisted_5$14 = { class: 'tree' }
const _hoisted_6$Z = ['disabled']
const _hoisted_7$S = { class: 'tree-node-icon' }
const _hoisted_8$P = ['title']
const _hoisted_9$M = {
class: 'icon',
'aria-hidden': 'true',
}
const _hoisted_10$L = {
key: 0,
'xlink:href': '#icon-zhengchang',
}
const _hoisted_11$H = {
key: 1,
'xlink:href': '#icon-jinyong',
fill: '#fff',
}
const _hoisted_12$F = {
key: 2,
'xlink:href': '#icon-yichang',
}
const _hoisted_13$z = ['onDblclick', 'status']
const _hoisted_14$v = { class: 'btn' }
const _hoisted_15$v = /* @__PURE__ */ _withScopeId$10(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-gengduo menu' },
null,
-1
)
)
const _hoisted_16$v = /* @__PURE__ */ createTextVNode(' \u542F\u7528 ')
const _hoisted_17$q = /* @__PURE__ */ createTextVNode(' \u7981\u7528 ')
const _hoisted_18$o = /* @__PURE__ */ createTextVNode(
' \u6DFB\u52A0\u6620\u5C04\u8868 '
)
const _hoisted_19$m = /* @__PURE__ */ createTextVNode(
' \u4FEE\u6539\u540D\u79F0 '
)
const _hoisted_20$k = /* @__PURE__ */ createTextVNode(
' \u521B\u5EFA\u526F\u672C '
)
const _hoisted_21$f = /* @__PURE__ */ createTextVNode(' \u5220\u9664 ')
const _hoisted_22$e = {
class: 'dialog-content',
style: { color: '#fff' },
}
const _hoisted_23$b = { class: 'el-dialog__footer' }
const _hoisted_24$b = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_25$a = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$1H = /* @__PURE__ */ defineComponent({
emits: ['delete', 'nodeClick'],
setup(__props2, { expose, emit: emit2 }) {
onMounted(async () => {
getList()
let socket = new Socket({
url: `/hubs/v1/connection`,
name: '\u96C6\u6210\u4E92\u8054\u670D\u52A1',
})
await socket.start()
socket.useOn('OnReceivedStatusChanged', (res) => {
let treeMap = {}
for (const node2 of treeData.value) {
treeMap[node2.id + '_' + node2.type] = node2
for (const child of node2.children) {
treeMap[child.id + '_' + child.type] = child
}
}
for (const item2 of res) {
let node2 = treeMap[item2.id + '_' + item2.type]
if (!node2) return
node2.status = item2.status
node2.errorMsg = item2.lastErrorMsg
}
})
})
let treeData = ref([])
let inputRef = ref()
const treeRefCom = ref()
const getList = async () => {
const resp = await request.get('/api/v1/connection/tree')
resp.forEach((item2, idx) => {
item2.nodeGuid = new Date().getTime() + '' + idx
})
treeData.value = resp
}
const CreateOrEditorDialogCom = ref(null)
let connectDialog = ref({
visible: false,
disabled: false,
node: null,
formData: {
id: null,
name: '',
connectionType: null,
databaseType: null,
authenticationType: null,
server: '',
port: 3306,
database: '',
databasePath: '',
userName: '',
password: '',
changedPassword: true,
mqttType: null,
pushType: null,
timingPeriod: null,
changingPeriod: null,
cloudDeviceId: '',
originalSecret: '',
},
})
const createConnectionOpen = () => {
connectDialog.value.visible = true
connectDialog.value.disabled = false
connectDialog.value.formData = {
id: null,
name: '',
connectionType: null,
databaseType: null,
authenticationType: null,
server: '',
port: 3306,
database: '',
databasePath: '',
userName: '',
password: '',
changedPassword: true,
mqttType: null,
pushType: null,
timingPeriod: null,
changingPeriod: null,
cloudDeviceId: '',
originalSecret: '',
}
}
const createOrEditorDataDialogCom = ref(null)
let dataDialog = ref({
visible: false,
connectionItem: {},
})
const createDataDialog = (node2 = state$2.activeNode) => {
if (!node2) return
dataDialog.value.visible = true
dataDialog.value.connectionItem = node2
}
const handleNode = (node2, data2) => {
state$2.activeNode = data2
if (data2.type !== 3) {
nodeClick(node2, data2)
}
}
const nodeClick = async (node2, data2) => {
let connectionItemId = data2.type === 1 ? data2.id : node2.parent.id
state$2.tableList = await request.get(
`/api/v1/connection/${connectionItemId}/databasetable`
)
if (data2.type === 2 && state$2.activeNode) {
let res = await request.get(`/api/v1/connection/table/${data2.id}`)
if (res.detail === null) {
res.detail = {
actionType: 1,
filters: [
[
{
field: '',
operatorType: 1,
operand: '',
isVariable: false,
},
],
],
sorts: [
{
field: '',
sortType: 1,
},
],
mappings: [],
}
}
state$2.activeNode.status = res.status
state$2.activeNode.errorMsg = res.errorMsg
if (!res.isSucceed) {
toast(res.tips, 'error')
}
state$2.nodeDetail = {
name: res.name,
detail: res.detail,
savedData: JSON.stringify(res.detail),
}
state$2.fieldList = await request.get(
`/api/v1/connection/table/${data2.id}/field`
)
emit2('nodeClick')
}
}
let editing2 = ref(null)
const editNode = (data2) => {
editing2.value = lodash$2.exports.cloneDeep(data2)
setTimeout(() => {
if (!inputRef.value) return
inputRef.value.focus()
inputRef.value.select()
}, 500)
}
const blurEditNode = async (data2) => {
if (!editing2.value) return
let { type: type4, id: id2, name: name2 } = editing2.value
if (!name2) {
toast('\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A', 'error')
}
await request.put(`/api/v1/connection/rename/${type4}/${id2}/${name2}`)
data2.name = name2
editing2.value = null
}
let deleteConfig = reactive({
visible: false,
loading: false,
data: null,
parent: null,
message: '',
})
const deleteOpen = (data2, parent2) => {
deleteConfig.visible = true
deleteConfig.data = data2
deleteConfig.parent = Array.isArray(parent2) ? parent2 : parent2.children
}
const deleteConfirm = async () => {
let { data: data2, parent: parent2 } = deleteConfig
if (!data2) return
deleteConfig.loading = true
await request.delete(`/api/v1/connection/${data2.type}/${data2.id}`)
toast('\u5220\u9664\u6210\u529F', 'success')
deleteConfig.visible = false
let idx = parent2.findIndex((item2) => item2.nodeGuid === data2.nodeGuid)
parent2.splice(idx, 1)
if (data2.id === state$2.activeNode?.id) {
state$2.activeNode = null
}
emit2('delete')
}
const filterText = ref('')
const switchTree = async (data2, type4, id2, operation2) => {
let res = await request.put(
`/api/v1/connection/switch/${type4}/${id2}/${operation2}`
)
data2.status = res[0].status
data2.errorMsg = res[0].errorMsg
let childMap = {}
for (const child of res[0].children) {
childMap[child.id] = child
}
data2.children.forEach((item2) => {
item2.status = childMap[item2.id].status
item2.errorMsg = childMap[item2.id].errorMsg
})
}
const handleCommand = (data2) => {
let { type: type4, id: id2, name: name2 } = data2.data
const fun = {
enable() {
switchTree(data2.data, type4, id2, 'on')
},
disabled() {
switchTree(data2.data, type4, id2, 'off')
},
add() {
createDataDialog(data2.data)
},
async viewConfig() {
if ([1, 3].includes(type4)) {
let res = await request.get(`/api/v1/connection/${id2}/config`)
res.password = (new Date().getTime() + '').substring(0, 8)
connectDialog.value.disabled = true
connectDialog.value.formData = res
connectDialog.value.visible = true
connectDialog.value.node = data2
} else if (type4 === 2) {
let res = await request.get(
`/api/v1/connection/table/${id2}/config`
)
selectDataTableDialog.value.connectionItem = data2.node.parent
connectDialog.value.disabled = false
selectDataTableDialog.value.formData = res
selectDataTableDialog.value.visible = true
if (res.isBasic) {
let querySql = res.querySql
let name22 = querySql.substring(
querySql.indexOf('`') + 1,
querySql.lastIndexOf('`')
)
selectDataTableDialog.value.formData.databaseTableName = name22
}
}
},
async copy() {
let node2 = await request.post(
`/api/v1/connection/table/${id2}/copy`,
{
name: name2 + '-' + Math.random().toString().slice(-4),
}
)
let newNode = Object.assign(node2, {
type: 2,
nodeGuid: new Date().getTime() + '',
})
data2.node.parent.children.push(newNode)
handleNode(
{
parent: data2.node.parent,
},
newNode
)
editNode(newNode)
},
rename: () => {
editNode(data2.data)
},
delete: () => {
deleteOpen(data2.data, data2.node.parent)
},
}
fun[data2.type]()
}
let selectDataTableRef = ref()
let selectDataTableDialog = ref({
visible: false,
connectionItem: {},
formData: {
name: '',
isBasic: false,
databaseTableName: '',
placeholder: '',
querySql: '',
databaseTableNames: [],
databaseTableFieldNames: [],
},
})
const connectionConfirm = async (node2) => {
if (connectDialog.value.disabled) {
connectDialog.value.node &&
(connectDialog.value.node.data.name = node2.name)
} else {
await getList()
}
}
const addData = (connectionItem, node2) => {
let table = treeData.value.filter(
(item2) =>
+item2.id + item2.type === +connectionItem.id + connectionItem.type
)[0]
;(table.children || (table.children = [])).push(
Object.assign(node2, { type: 2, nodeGuid: new Date().getTime() + '' })
)
}
expose({
createConnectionOpen,
createDataDialog,
})
return (_ctx, _cache) => {
const _component_el_icon = resolveComponent('el-icon')
const _component_el_input = resolveComponent('el-input')
const _component_el_dropdown_item = resolveComponent('el-dropdown-item')
const _component_el_dropdown_menu = resolveComponent('el-dropdown-menu')
const _component_el_dropdown = resolveComponent('el-dropdown')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', _hoisted_1$1B, [
_hoisted_2$1r,
createElementVNode('div', _hoisted_3$1k, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x-search',
modelValue: filterText.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (filterText.value = $event)),
},
{
suffix: withCtx(() => [
createVNode$1(
_component_el_icon,
{ class: 'el-input__icon' },
{
default: withCtx(() => [createVNode$1(unref(search))]),
_: 1,
}
),
]),
_: 1,
},
8,
['modelValue']
),
createElementVNode('div', _hoisted_4$19, [
createElementVNode('i', {
class: 'iconfont icon-tianjiahuamian',
onClick:
_cache[1] || (_cache[1] = ($event) => createConnectionOpen()),
title: '\u6DFB\u52A0\u4E92\u8054\u9879',
}),
]),
]),
createElementVNode('div', _hoisted_5$14, [
createVNode$1(
VirtualTree,
{
ref_key: 'treeRefCom',
ref: treeRefCom,
data: treeData.value,
itemSize: 32,
class: 'cms-el-tree',
nodeKey: 'nodeGuid',
draggable: false,
filterText: filterText.value,
props: {
children: 'children',
},
onNodeClick: handleNode,
},
{
default: withCtx(({ node: node2, data: data2 }) => [
createElementVNode(
'div',
{
class: normalizeClass([
'custom-tree-node flex',
unref(state$2).activeNode &&
unref(state$2).activeNode.id == data2.id &&
unref(state$2).activeNode.type === data2.type
? 'node-current'
: '',
]),
disabled: data2.status == 2,
},
[
createElementVNode('div', _hoisted_7$S, [
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont',
{
'icon-wenjianjia': data2.type === 1,
'icon-hulianxiang': data2.type === 2,
'icon-bianyunjiehe': data2.type === 3,
},
]),
},
null,
2
),
data2.type !== 1
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: 'node-icon-status',
title:
data2.status === 3 ? data2.errorMsg : null,
'data-tooltip-placement': 'top',
},
[
(openBlock(),
createElementBlock('svg', _hoisted_9$M, [
data2.status === 1
? (openBlock(),
createElementBlock('use', _hoisted_10$L))
: data2.status === 2
? (openBlock(),
createElementBlock('use', _hoisted_11$H))
: data2.status === 3
? (openBlock(),
createElementBlock('use', _hoisted_12$F))
: createCommentVNode('', true),
])),
],
8,
_hoisted_8$P
))
: createCommentVNode('', true),
]),
createElementVNode(
'div',
{
class: 'title tree-node-label',
onDblclick: ($event) => editNode(data2),
status: data2.status,
},
[
editing2.value &&
editing2.value.nodeGuid === data2.nodeGuid
? (openBlock(),
createBlock(
_component_el_input,
{
key: 0,
ref_key: 'inputRef',
ref: inputRef,
class: 'cms-el-input-x title-input',
modelValue: editing2.value.name,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(editing2.value.name = $event)),
onFocus: ($event) => editNode(data2),
onBlur: ($event) => blurEditNode(data2),
onKeyup:
_cache[3] ||
(_cache[3] = withKeys(
($event) => unref(inputRef)?.blur(),
['enter']
)),
},
null,
8,
['modelValue', 'onFocus', 'onBlur']
))
: (openBlock(),
createBlock(
EllipsisTooltip,
{
key: 1,
width: '100%',
content: data2.name,
},
null,
8,
['content']
)),
],
40,
_hoisted_13$z
),
createElementVNode('div', _hoisted_14$v, [
createVNode$1(
_component_el_dropdown,
{
trigger: 'hover',
onCommand: handleCommand,
teleported: false,
},
{
dropdown: withCtx(() => [
createVNode$1(
_component_el_dropdown_menu,
null,
{
default: withCtx(() => [
createVNode$1(
_component_el_dropdown_item,
{
command: {
type: 'enable',
node: node2,
data: data2,
},
},
{
default: withCtx(() => [_hoisted_16$v]),
_: 2,
},
1032,
['command']
),
createVNode$1(
_component_el_dropdown_item,
{
command: {
type: 'disabled',
node: node2,
data: data2,
},
},
{
default: withCtx(() => [_hoisted_17$q]),
_: 2,
},
1032,
['command']
),
data2.type === 1
? (openBlock(),
createBlock(
_component_el_dropdown_item,
{
key: 0,
command: {
type: 'add',
node: node2,
data: data2,
},
},
{
default: withCtx(() => [
_hoisted_18$o,
]),
_: 2,
},
1032,
['command']
))
: createCommentVNode('', true),
createVNode$1(
_component_el_dropdown_item,
{
command: {
type: 'rename',
node: node2,
data: data2,
},
},
{
default: withCtx(() => [_hoisted_19$m]),
_: 2,
},
1032,
['command']
),
createVNode$1(
_component_el_dropdown_item,
{
command: {
type: 'viewConfig',
node: node2,
data: data2,
},
},
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(
data2.type !== 2
? '\u4FEE\u6539\u914D\u7F6E'
: '\u67E5\u770B\u914D\u7F6E'
),
1
),
]),
_: 2,
},
1032,
['command']
),
data2.type === 2
? (openBlock(),
createBlock(
_component_el_dropdown_item,
{
key: 1,
command: {
type: 'copy',
node: node2,
data: data2,
},
},
{
default: withCtx(() => [
_hoisted_20$k,
]),
_: 2,
},
1032,
['command']
))
: createCommentVNode('', true),
createVNode$1(
_component_el_dropdown_item,
{
class: 'item_delete',
command: {
type: 'delete',
node: node2,
data: data2,
},
},
{
default: withCtx(() => [_hoisted_21$f]),
_: 2,
},
1032,
['command']
),
]),
_: 2,
},
1024
),
]),
default: withCtx(() => [_hoisted_15$v]),
_: 2,
},
1024
),
]),
],
10,
_hoisted_6$Z
),
]),
_: 1,
},
8,
['data', 'filterText']
),
]),
createVNode$1(
_component_el_dialog,
{
modelValue: unref(deleteConfig).visible,
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) =>
(unref(deleteConfig).visible = $event)),
title: '\u786E\u8BA4\u5220\u9664',
'custom-class': 'cms-el-dialog',
width: '450px',
'append-to-body': true,
},
{
default: withCtx(() => [
createElementVNode(
'div',
_hoisted_22$e,
toDisplayString$1(
unref(deleteConfig).message ||
'\u786E\u8BA4\u540E\uFF0C\u4ECE\u5217\u8868\u4E2D\u5220\u9664\u8282\u70B9'
),
1
),
createElementVNode('div', _hoisted_23$b, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick:
_cache[4] ||
(_cache[4] = ($event) =>
(unref(deleteConfig).visible = false)),
},
{
default: withCtx(() => [_hoisted_24$b]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: deleteConfirm,
},
{
default: withCtx(() => [_hoisted_25$a]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
),
connectDialog.value.visible
? (openBlock(),
createBlock(
CreateConnection,
{
key: 0,
ref_key: 'CreateOrEditorDialogCom',
ref: CreateOrEditorDialogCom,
'model-value': connectDialog.value.visible,
'onUpdate:model-value':
_cache[6] ||
(_cache[6] = ($event) =>
(connectDialog.value.visible = $event)),
disabled: connectDialog.value.disabled,
formData: connectDialog.value.formData,
onConfirm: connectionConfirm,
},
null,
8,
['model-value', 'disabled', 'formData']
))
: createCommentVNode('', true),
dataDialog.value.visible
? (openBlock(),
createBlock(
createData,
{
key: 1,
ref_key: 'createOrEditorDataDialogCom',
ref: createOrEditorDataDialogCom,
modelValue: dataDialog.value.visible,
'onUpdate:modelValue':
_cache[7] ||
(_cache[7] = ($event) =>
(dataDialog.value.visible = $event)),
connectionItem: dataDialog.value.connectionItem,
onConfirm: addData,
},
null,
8,
['modelValue', 'connectionItem']
))
: createCommentVNode('', true),
selectDataTableDialog.value.visible
? (openBlock(),
createBlock(
selectDataTable,
{
key: 2,
ref_key: 'selectDataTableRef',
ref: selectDataTableRef,
isView: true,
title: '\u67E5\u770B\u914D\u7F6E',
modelValue: selectDataTableDialog.value.visible,
'onUpdate:modelValue':
_cache[8] ||
(_cache[8] = ($event) =>
(selectDataTableDialog.value.visible = $event)),
connectionItem: selectDataTableDialog.value.connectionItem,
formData: selectDataTableDialog.value.formData,
},
null,
8,
['modelValue', 'connectionItem', 'formData']
))
: createCommentVNode('', true),
])
)
}
},
})
var Sidebar$4 = /* @__PURE__ */ _export_sfc(_sfc_main$1H, [
['__scopeId', 'data-v-20b33d73'],
])
var Sidebar$5 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Sidebar$4,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var RelevanceButton_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$1A = { key: 1 }
const _sfc_main$1G = /* @__PURE__ */ defineComponent({
props: {
label: { default: '' },
disabled: { type: Boolean, default: false },
tooltip: { type: Boolean, default: true },
placeholder: { default: '\u8BF7\u9009\u62E9' },
iconfont: { default: 'iconfont icon-gengduo1' },
},
setup(__props2) {
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'wrapper',
{
placeholder: !__props2.label,
unactive: __props2.disabled,
},
]),
},
[
__props2.tooltip
? (openBlock(),
createBlock(
EllipsisTooltip,
{
key: 0,
width: '100%',
content: (
__props2.label || __props2.placeholder
).toString(),
placement: 'bottom-start',
},
null,
8,
['content']
))
: (openBlock(),
createElementBlock(
'span',
_hoisted_1$1A,
toDisplayString$1(__props2.label || __props2.placeholder),
1
)),
renderSlot(
_ctx.$slots,
'default',
{},
() => [
createElementVNode(
'i',
{
class: normalizeClass(__props2.iconfont),
},
null,
2
),
],
true
),
],
2
)
)
}
},
})
var RelevanceButton = /* @__PURE__ */ _export_sfc(_sfc_main$1G, [
['__scopeId', 'data-v-c8c54816'],
])
var RelevanceButton$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: RelevanceButton,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var TriggerFrequency_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$1z = { class: 'wrapper' }
const _sfc_main$1F = /* @__PURE__ */ defineComponent({
props: {
disabled: {
type: Boolean,
default: false,
},
isValue: {
type: Boolean,
default: true,
},
isUnit: {
type: Boolean,
default: true,
},
label: {
type: String,
default: '',
},
value: {
type: Number,
default: 1,
},
unit: {
type: [Number, String],
default: '',
},
unitOptions: {
type: Array,
default: () => [],
},
unitFilters: String,
inputStyle: String,
},
emits: ['update:value', 'update:unit'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
let _value = ref(1)
let _valueKey = ref(1)
watch$1(
() => props2.value,
() => {
setTimeout(() => {
if (props2.value) {
_value.value = props2.value
} else {
_value.value = 1
emit2('update:value', _value.value)
}
_valueKey.value += 1
}, 130)
},
{ immediate: true }
)
let _unitOptions = [
{
value: 1,
label: '\u79D2',
},
{
value: 2,
label: '\u5206',
},
{
value: 3,
label: '\u65F6',
},
{
value: 4,
label: '\u65E5',
},
{
value: 5,
label: '\u6708',
},
]
watch$1(
[() => props2.unitOptions, () => props2.unitFilters],
() => {
if (props2.unitFilters && !props2.unitOptions.length) {
const values2 = props2.unitFilters.split(',')
_unitOptions = _unitOptions.filter((e2) =>
values2.includes(e2.value + '')
)
}
},
{ immediate: true }
)
const toInteger2 = () => {
_value.value = Math.floor(_value.value)
_valueKey.value += 1
emit2('update:value', _value.value)
}
return (_ctx, _cache) => {
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
return (
openBlock(),
createElementBlock('div', _hoisted_1$1z, [
__props2.label
? (openBlock(),
createElementBlock(
'span',
{
key: 0,
class: normalizeClass([
'label',
{ unactive: __props2.disabled },
]),
},
toDisplayString$1(__props2.label),
3
))
: createCommentVNode('', true),
__props2.isValue
? (openBlock(),
createBlock(
_component_el_input_number,
{
key: _valueKey.value,
min: 1,
modelValue: _value.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (_value.value = $event)),
disabled: __props2.disabled,
onInput: toInteger2,
'controls-position': 'right',
class: normalizeClass([
'cms-input-number',
[
{ margin: __props2.isUnit },
{ unactive: __props2.disabled },
],
]),
style: normalizeStyle$1(__props2.inputStyle),
},
null,
8,
['modelValue', 'disabled', 'class', 'style']
))
: createCommentVNode('', true),
__props2.isUnit
? (openBlock(),
createBlock(
_component_el_select,
{
key: 2,
'model-value': __props2.unit,
disabled: __props2.disabled,
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
onChange:
_cache[1] ||
(_cache[1] = ($event) => _ctx.$emit('update:unit', $event)),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(_unitOptions), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['model-value', 'disabled']
))
: createCommentVNode('', true),
])
)
}
},
})
var TriggerFrequency = /* @__PURE__ */ _export_sfc(_sfc_main$1F, [
['__scopeId', 'data-v-db23ff62'],
])
var TriggerFrequency$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: TriggerFrequency,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const getAlarmPoint = (searchFields = {}) => {
return request.get(`/api/v1/alarmpoint/query`, {
params: searchFields,
silent: false,
})
}
const addAlarmPoint = (alarmPoint) => {
return request.post(`/api/v1/alarmpoint/add`, alarmPoint)
}
const updateAlarmPoint = (alarmPoint) => {
return request.put(`/api/v1/alarmpoint/update`, alarmPoint, { silent: false })
}
const deleteAlarmPoint = (alarmPointIds) => {
return request({
url: `/api/v1/alarmpoint/delete`,
method: 'delete',
data: alarmPointIds,
})
}
const exportAlarmPoints = (searchFields = {}) => {
return request({
url: `/api/v1/alarmpoint/export`,
responseType: 'blob',
method: 'post',
params: searchFields,
})
}
const importAlarmPoints = (formData) => {
return request.post(`/api/v1/alarmpoint/import`, formData, {
silent: false,
})
}
const getAlarmFolderTree = () => {
return request.get(`/api/v1/alarmfolder/gettree`)
}
const addAlarmFolderItem = (folderItem) => {
return request.post(`/api/v1/alarmfolder/add`, folderItem, { silent: false })
}
const updateAlarmFolderItem = (folderItem) => {
return request.put(`/api/v1/alarmfolder/update`, folderItem, {
silent: false,
})
}
const sortAlarmFolderItem = (sortData2) => {
return request.put(`/api/v1/alarmfolder/dragandmove`, sortData2, {
silent: false,
})
}
const deleteAlarmFolderItem = (deleteParams) => {
return request({
url: `/api/v1/alarmfolder/delete`,
data: deleteParams,
method: 'DELETE',
})
}
const getAlarmTypeGroup = (keyword = '') => {
return request.get(`/api/v1/alarmtypegroup/query`, {
params: { keyword },
silent: false,
})
}
const addAlarmTypeGroup = (alarmTypeGroup) => {
return request.post(`/api/v1/alarmtypegroup/add`, alarmTypeGroup, {
silent: false,
})
}
const updateAlarmTypeGroup = (alarmTypeGroup) => {
return request.put(`/api/v1/alarmtypegroup/update`, alarmTypeGroup, {
silent: false,
})
}
const deleteAlarmTypeGroup = (alarmTypeGroupIds) => {
return request({
url: `/api/v1/alarmtypegroup/delete`,
method: 'delete',
data: alarmTypeGroupIds,
})
}
const dragMoveAlarmTypeGroup = (dragendData) => {
return request.put(`/api/v1/alarmtypegroup/dragandmove`, dragendData)
}
const getAlarmLevel = (keyword = '') => {
return request.get(`/api/v1/alarmlevel/query`, {
params: { keyword },
silent: false,
})
}
const addAlarmLevel = (alarmLevel) => {
return request.post(`/api/v1/alarmlevel/add`, alarmLevel, { silent: false })
}
const updateAlarmLevel = (alarmLevel) => {
return request.put(`/api/v1/alarmlevel/update`, alarmLevel, { silent: false })
}
const deleteAlarmLevel = (alarmLevelsId) => {
return request({
url: `/api/v1/alarmlevel/delete`,
method: 'DELETE',
data: alarmLevelsId,
})
}
const getAlarmType = (groupID = '', keyword = '') => {
return request.get(`/api/v1/alarmtype/query?groupID=${groupID}`, {
params: { keyword },
silent: false,
})
}
const addAlarmType = (alarmType) => {
return request.post(`/api/v1/alarmtype/add`, alarmType, { silent: false })
}
const updateAlarmType = (alarmType) => {
return request.put(`/api/v1/alarmtype/update`, alarmType, { silent: false })
}
const deleteAlarmType = (alarmTypeIds) => {
return request({
url: `/api/v1/alarmtype/delete`,
method: 'DELETE',
data: alarmTypeIds,
})
}
const getAlarmRecordConfig = (searchFields) => {
return request.get(`/api/v1/alarmrecordconfig/query`, {
params: searchFields,
silent: false,
})
}
const updateAlarmRecordConfig = (updateData) => {
return request.put(`/api/v1/alarmrecordconfig/update`, updateData, {
silent: false,
})
}
const checkLinkRealtimeRecord = (alarmIds) => {
return request.post(`/api/v1/alarmpoint/checklinkrealtimerecord`, alarmIds, {
silent: false,
})
}
const SheetTypeIcon$1 = {
0: 'iconfont icon-wenjianjia',
1: 'iconfont icon-baojingchufa',
}
const state$1 = reactive({
current: {
sheet: void 0,
},
sheets: [],
})
const changeField$1 = (data2) => {
let list2 = lodash.cloneDeep(data2)
const recursion = (list22) => {
for (let i2 = 0; i2 < list22.length; i2++) {
let item2 = list22[i2]
item2.type = item2.nodeType
if (item2.children?.length) {
recursion(item2.children)
}
}
}
recursion(list2)
return list2
}
const getSheetById$1 = (id2, sheets) => {
let target2 = {
children: [],
id: '',
name: '',
nodeType: 1,
}
let list2 = sheets || state$1.sheets
const recursion = (list22) => {
if (target2.id && target2.name) return
for (let i2 = 0; i2 < list22.length; i2++) {
const item2 = list22[i2]
if (id2 === item2.id) {
target2 = item2
break
}
if (item2.children && item2.children.length) {
recursion(item2.children)
}
}
}
recursion(list2)
if (target2.id && target2.name) return target2
return null
}
const getTree$1 = () => {
return getAlarmFolderTree().then((res) => {
const newRes = res?.length ? changeField$1(res) : []
state$1.sheets = newRes
})
}
const createRandomNum$1 = () => Math.random().toString().slice(-4)
const createFolder$1 = async () => {
const current2 = state$1.current.sheet
const name2 = `\u65B0\u5EFA\u6587\u4EF6\u5939-${createRandomNum$1()}`
let parent2 = current2?.parentId
const createParentId = (current22) => {
let parentId2 = void 0
{
parentId2 = parent2 || void 0
}
return parentId2
}
let parentId = createParentId()
const res = await addAlarmFolderItem({
parentId,
name: name2,
nodeType: 0,
})
return res
}
const renameSheet$1 = async (sheet) => {
const {
type: type4,
name: name2,
id: id2,
nodeType,
children,
parentId,
} = sheet
return await updateAlarmFolderItem({
type: type4,
name: name2,
id: id2,
parentId,
nodeType,
children,
})
}
const getAggregatetable$1 = async (id2) => {
return request.get(`/api/v1/dataconfig/aggregatetable/${id2}`).then((res) => {
return res
})
}
const editAggregatetable$1 = async (sheetName, relevance, editNode) => {
const params2 = {
name: sheetName,
}
return await request.put(
`/api/v1/dataconfig/aggregatetable/${editNode.id}`,
params2
)
}
const setSaveStatus = (status) => {
app.current.project.moduleSavedStatusMap.Alarm = status
}
var AlarmRecordsConf_vue_vue_type_style_index_0_scoped_true_lang = ''
var AlarmRecordsConf_vue_vue_type_style_index_1_lang = ''
const _withScopeId$$ = (n2) => (
pushScopeId('data-v-7827b2bf'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1y = /* @__PURE__ */ _withScopeId$$(() =>
/* @__PURE__ */ createElementVNode(
'button',
{
class: 'icon-button iconfont icon-baojingjilu',
title: '\u62A5\u8B66\u8BB0\u5F55',
},
null,
-1
)
)
const _hoisted_2$1q = { class: 'inner_search_wrap' }
const _hoisted_3$1j = { class: 'search_left' }
const _hoisted_4$18 = { class: 'search_left_item' }
const _hoisted_5$13 = /* @__PURE__ */ _withScopeId$$(() =>
/* @__PURE__ */ createElementVNode(
'div',
null,
'\u62A5\u8B66\u7EC4\uFF1A',
-1
)
)
const _hoisted_6$Y = { class: 'search_left_item' }
const _hoisted_7$R = /* @__PURE__ */ _withScopeId$$(() =>
/* @__PURE__ */ createElementVNode(
'div',
null,
'\u62A5\u8B66\u7EA7\u522B\uFF1A',
-1
)
)
const _hoisted_8$O = { class: 'search_left_item' }
const _hoisted_9$L = /* @__PURE__ */ _withScopeId$$(() =>
/* @__PURE__ */ createElementVNode(
'div',
null,
'\u62A5\u8B66\u7C7B\u522B\uFF1A',
-1
)
)
const _hoisted_10$K = { class: 'search_right' }
const _hoisted_11$G = { class: 'search_right_input' }
const _hoisted_12$E = { class: 'search_right_btns' }
const _hoisted_13$y = /* @__PURE__ */ createTextVNode('\u67E5\u8BE2')
const _hoisted_14$u = { class: 'flex' }
const _hoisted_15$u = { class: 'flex-1' }
const _hoisted_16$u = { class: 'el-dialog__footer flex justify-between' }
const _sfc_main$1E = /* @__PURE__ */ defineComponent({
props: {
type: {
type: String,
default: 'alarmManager',
},
dialogTitle: {
type: String,
default: '\u62A5\u8B66\u8BB0\u5F55',
},
isAppendToBody: {
type: Boolean,
default: false,
},
isMultiple: {
type: Boolean,
default: true,
},
defaultCheckKey: {
type: Array,
default: () => [],
},
},
emits: ['cancel', 'confirm'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const data2 = reactive({
tableData: [],
alarmGroups: [],
alarmLevels: [],
alarmTypes: [],
tableTooltipConfig: {
enterable: true,
contentMethod: ({ column, row }) => {
const { property: property2 } = column
if (property2 === 'alarmTypeNames') {
return row[property2].join(';')
}
return row[property2]
},
},
})
const show = ref(false)
const openDialog2 = () => {
show.value = true
}
const tableRef = ref()
let searchData = reactive({
groupID: '0',
alarmLevelID: '',
alarmTypeID: '',
keyword: '',
})
const checkRowKeys = ref([])
const clearData = async () => {
const selectedRowIds = selectRow.value.map((item2) => item2.id)
await getData(true, selectedRowIds)
if (props2.isMultiple) {
tableRef.value.setCheckboxRow(selectRow.value, true)
} else {
tableRef.value.setRadioRow(selectRow.value)
}
}
let selectRow = ref([])
const viewChecked = async () => {
selectRow.value = !props2.isMultiple
? [tableRef.value.getRadioRecord()]
: tableRef.value.getCheckboxRecords()
await tableRef.value.reloadData(selectRow.value)
if (props2.isMultiple) {
tableRef.value.setCheckboxRow(selectRow.value, true)
} else {
tableRef.value.setRadioRow(selectRow.value)
}
}
const getData = (isClear = false, selectedRowIds = []) => {
const groupID = searchData.groupID === '0' ? '' : searchData.groupID
return getAlarmRecordConfig({
...searchData,
alarmGroupID: groupID,
}).then((res) => {
if (props2.type === 'alarmTrigger') {
checkRowKeys.value = res
.filter((item2) =>
props2.defaultCheckKey.includes(item2.alarmPointId)
)
.map((item2) => item2.id)
}
data2.tableData = res.map((item2) => {
let isChecked =
props2.type === 'eventTrigger'
? props2.defaultCheckKey.includes(item2.alarmPointId)
: item2.isCheck
return {
...item2,
isCheck: isClear ? selectedRowIds.includes(item2.id) : isChecked,
_isCheckOrigin: isClear ? false : item2.isCheck,
}
})
tableRef.value.loadData(data2.tableData)
})
}
const open2 = () => {
getAlarmLevel().then((res) => {
data2.alarmLevels = [{ id: '', name: '\u5168\u90E8' }, ...res]
})
getAlarmType().then((res) => {
data2.alarmTypes = [{ id: '', name: '\u5168\u90E8' }, ...res]
})
getAlarmFolderTree().then((res) => {
data2.alarmGroups = [{ id: '0', name: '\u5168\u90E8' }, ...res]
})
checkRowKeys.value = []
data2.tableData = []
searchData.groupID = '0'
searchData.alarmLevelID = ''
searchData.alarmTypeID = ''
searchData.keyword = ''
nextTick(async () => {
await getData()
})
}
const handleCancel = () => {
selectRow.value = []
show.value = false
emit2('cancel')
}
const handleConfirm = async () => {
setSaveStatus(Project$2.saveStatusTypes.saving)
const $table = tableRef.value
const checkedRecords = $table.getCheckboxRecords()
if (props2.type === 'alarmManager') {
let updateItems = []
data2.tableData.forEach((item2) => {
if (item2._isCheckOrigin !== item2.isCheck) {
updateItems.push({
isCheck: item2.isCheck,
alarmPointId: item2.alarmPointId,
})
}
})
if (updateItems.length) {
await updateAlarmRecordConfig(updateItems).catch(() => {
setSaveStatus(Project$2.saveStatusTypes.fail)
})
setSaveStatus(Project$2.saveStatusTypes.saved)
ElMessage.success('\u66F4\u65B0\u6210\u529F')
}
}
show.value = false
emit2('confirm', { checkedRecords })
}
const handleSearch = () => {
if (searchData.groupID === void 0) {
searchData.groupID = '0'
}
getData()
}
const handleSelected = (selected) => {
if (selected) {
viewChecked()
} else {
clearData()
}
}
const handleCheckboxChange = ({ checked: checked2, rowIndex }) => {
data2.tableData[rowIndex].isCheck = checked2
setSaveStatus(Project$2.saveStatusTypes.unsaved)
}
const handleCheckboxAll = ({ checked: checked2 }) => {
data2.tableData.forEach((item2) => {
item2.isCheck = checked2
})
setSaveStatus(Project$2.saveStatusTypes.unsaved)
}
return (_ctx, _cache) => {
const _component_el_tree_select = resolveComponent('el-tree-select')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input = resolveComponent('el-input')
const _component_el_button = resolveComponent('el-button')
const _component_vxe_column = resolveComponent('vxe-column')
const _component_vxe_table = resolveComponent('vxe-table')
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', null, [
createElementVNode('div', { onClick: openDialog2 }, [
renderSlot(_ctx.$slots, 'default', {}, () => [_hoisted_1$1y], true),
]),
createVNode$1(
_component_el_dialog,
{
modelValue: show.value,
'onUpdate:modelValue':
_cache[4] || (_cache[4] = ($event) => (show.value = $event)),
width: '900px',
top: '22vh',
'custom-class': 'cms-el-dialog',
'append-to-body': true,
'show-close': true,
title: props2.dialogTitle,
'close-on-click-modal': false,
onOpen: open2,
onClose: handleCancel,
},
{
default: withCtx(() => [
createElementVNode('div', null, [
createElementVNode('div', _hoisted_2$1q, [
createElementVNode('div', _hoisted_3$1j, [
createElementVNode('div', _hoisted_4$18, [
_hoisted_5$13,
createElementVNode('div', null, [
createVNode$1(
_component_el_tree_select,
{
class: 'cms-el-tree-select',
'popper-class': 'cms-el-tree-select-popper',
modelValue: unref(searchData).groupID,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(searchData).groupID = $event)),
data: unref(data2).alarmGroups,
'render-after-expand': false,
'value-key': 'id',
props: {
children: 'children',
label: 'name',
},
placeholder: '\u8BF7\u9009\u62E9',
persistent: '',
},
null,
8,
['modelValue', 'data']
),
]),
]),
createElementVNode('div', _hoisted_6$Y, [
_hoisted_7$R,
createElementVNode('div', null, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select__popper',
modelValue: unref(searchData).alarmLevelID,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(searchData).alarmLevelID = $event)),
'suffix-icon': unref(caretTop),
placeholder: '\u8BF7\u9009\u62E9',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(data2).alarmLevels,
(item2, idx) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.id + '' + idx,
label: item2.name,
value: item2.id,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 1,
},
8,
['modelValue', 'suffix-icon']
),
]),
]),
createElementVNode('div', _hoisted_8$O, [
_hoisted_9$L,
createElementVNode('div', null, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select__popper',
modelValue: unref(searchData).alarmTypeID,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(searchData).alarmTypeID = $event)),
'suffix-icon': unref(caretTop),
placeholder: '\u8BF7\u9009\u62E9',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(data2).alarmTypes,
(item2, idx) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.id + '' + idx,
label: item2.name,
value: item2.id,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 1,
},
8,
['modelValue', 'suffix-icon']
),
]),
]),
]),
createElementVNode('div', _hoisted_10$K, [
createElementVNode('div', _hoisted_11$G, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input',
modelValue: unref(searchData).keyword,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(searchData).keyword = $event)),
placeholder: '\u8BF7\u8F93\u5165\u5173\u952E\u5B57',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_12$E, [
createVNode$1(
_component_el_button,
{
class: 'cms-btn btn-screen-btn btn-reset',
onClick: handleSearch,
},
{
default: withCtx(() => [_hoisted_13$y]),
_: 1,
}
),
]),
]),
]),
createElementVNode('div', null, [
createVNode$1(
_component_vxe_table,
{
class: 'cms-vxe-table cms-vxe-table-min',
height: '300',
border: '',
'row-config': { keyField: 'id', height: 52 },
'show-overflow': 'tooltip',
'scroll-y': { oSize: 5 },
'tooltip-config': unref(data2).tableTooltipConfig,
'column-config': { resizable: true },
'checkbox-config': {
checkRowKeys: checkRowKeys.value,
highlight: true,
checkField: 'isCheck',
},
ref_key: 'tableRef',
ref: tableRef,
onCheckboxChange: handleCheckboxChange,
onCheckboxAll: handleCheckboxAll,
},
{
default: withCtx(() => [
createVNode$1(
_component_vxe_column,
{
type: __props2.isMultiple ? 'checkbox' : 'radio',
width: '40',
align: 'center',
},
null,
8,
['type']
),
createVNode$1(_component_vxe_column, {
field: 'groupName',
title: '\u62A5\u8B66\u7EC4',
}),
createVNode$1(_component_vxe_column, {
field: 'alarmPointName',
title: '\u62A5\u8B66\u540D\u79F0',
}),
createVNode$1(_component_vxe_column, {
field: 'content',
title: '\u62A5\u8B66\u4FE1\u606F',
}),
createVNode$1(_component_vxe_column, {
field: 'expression',
title: '\u62A5\u8B66\u914D\u7F6E',
}),
createVNode$1(_component_vxe_column, {
field: 'levelName',
title: '\u62A5\u8B66\u7EA7\u522B',
}),
createVNode$1(
_component_vxe_column,
{
field: 'alarmTypeNames',
title: '\u7C7B\u522B',
'min-width': '100',
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_14$u, [
createElementVNode(
'span',
_hoisted_15$u,
toDisplayString$1(
row.alarmTypeNames.join(';')
),
1
),
]),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['tooltip-config', 'checkbox-config']
),
]),
createElementVNode('div', _hoisted_16$u, [
createVNode$1(_component_el_checkbox, {
class: 'toggle-selected-checkbox',
onChange: handleSelected,
label: '\u4EC5\u663E\u793A\u5DF2\u9009',
size: 'large',
}),
createElementVNode('div', { class: 'flex' }, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: handleCancel,
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: handleConfirm,
},
'\u786E\u8BA4'
),
]),
]),
]),
]),
_: 1,
},
8,
['modelValue', 'title']
),
])
)
}
},
})
var AlarmRecordsConf = /* @__PURE__ */ _export_sfc(_sfc_main$1E, [
['__scopeId', 'data-v-7827b2bf'],
])
var AlarmRecordsConf$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: AlarmRecordsConf,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var TriggerSettingConfig_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$_ = (n2) => (
pushScopeId('data-v-73aba5bc'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1x = { class: 'dialog-content' }
const _hoisted_2$1p = { class: 'buttons' }
const _hoisted_3$1i = /* @__PURE__ */ createTextVNode('\u6DFB\u52A0')
const _hoisted_4$17 = { class: 'panels' }
const _hoisted_5$12 = { class: 'index' }
const _hoisted_6$X = ['disabled', 'onClick']
const _hoisted_7$Q = { class: 'type' }
const _hoisted_8$N = { key: 0 }
const _hoisted_9$K = { class: 'content border' }
const _hoisted_10$J = { class: 'con-row' }
const _hoisted_11$F = /* @__PURE__ */ _withScopeId$_(() =>
/* @__PURE__ */ createElementVNode(
'p',
{ class: 'label' },
'\u89E6\u53D1\u65F6\u95F4\uFF1A',
-1
)
)
const _hoisted_12$D = { class: 'con-row' }
const _hoisted_13$x = /* @__PURE__ */ _withScopeId$_(() =>
/* @__PURE__ */ createElementVNode(
'p',
{ class: 'label marginleft' },
'\u91CD\u590D\u9891\u7387\uFF1A',
-1
)
)
const _hoisted_14$t = { class: 'content' }
const _hoisted_15$t = { class: 'con-row' }
const _hoisted_16$t = /* @__PURE__ */ _withScopeId$_(() =>
/* @__PURE__ */ createElementVNode(
'p',
{ class: 'label' },
'\u540C\u65F6\u6EE1\u8DB3\u6761\u4EF6\uFF1A',
-1
)
)
const _hoisted_17$p = { key: 1 }
const _hoisted_18$n = { class: 'content border' }
const _hoisted_19$l = { class: 'con-row' }
const _hoisted_20$j = /* @__PURE__ */ _withScopeId$_(() =>
/* @__PURE__ */ createElementVNode(
'p',
{ class: 'label' },
'\u89E6\u53D1\u52A8\u4F5C\uFF1A',
-1
)
)
const _hoisted_21$e = { class: 'content' }
const _hoisted_22$d = /* @__PURE__ */ _withScopeId$_(() =>
/* @__PURE__ */ createElementVNode(
'p',
{ class: 'label' },
'\u91CD\u590D\u9891\u7387\uFF1A',
-1
)
)
const _hoisted_23$a = { key: 2 }
const _hoisted_24$a = /* @__PURE__ */ _withScopeId$_(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'content border field' },
'\u9ED8\u8BA4\u76D1\u542C\u6570\u636E\u5B57\u6BB5\uFF0C\u5F53\u5B57\u6BB5\u503C\u53D8\u5316\u65F6\u89E6\u53D1',
-1
)
)
const _hoisted_25$9 = { class: 'content' }
const _hoisted_26$9 = { class: 'con-row marginleft' }
const _hoisted_27$9 = /* @__PURE__ */ _withScopeId$_(() =>
/* @__PURE__ */ createElementVNode(
'p',
{ class: 'label' },
'\u540C\u65F6\u6EE1\u8DB3\u6761\u4EF6\uFF1A',
-1
)
)
const _hoisted_28$8 = { key: 3 }
const _hoisted_29$7 = { class: 'content border' }
const _hoisted_30$7 = { class: 'con-row marginleft' }
const _hoisted_31$6 = /* @__PURE__ */ _withScopeId$_(() =>
/* @__PURE__ */ createElementVNode(
'p',
{ class: 'label' },
'\u62A5\u8B66\u70B9\uFF1A',
-1
)
)
const _hoisted_32$6 = { class: 'content' }
const _hoisted_33$6 = { class: 'con-row' }
const _hoisted_34$4 = /* @__PURE__ */ _withScopeId$_(() =>
/* @__PURE__ */ createElementVNode(
'p',
{ class: 'label' },
'\u91CD\u590D\u9891\u7387\uFF1A',
-1
)
)
const _hoisted_35$4 = { class: 'el-dialog__footer' }
const _hoisted_36$3 = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_37$3 = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$1D = /* @__PURE__ */ defineComponent({
props: ['id', 'text', 'title'],
emits: ['confirm'],
setup(__props2, { expose, emit: emit2 }) {
const props2 = __props2
const TRIGGER = {
effectiveDateTime: '',
dateTime: '',
frequencyValue: 1,
frequencyUnit: 1,
matchAll: false,
condition: '',
conditionDetail: 1,
frequencyCheck: false,
alarmPointIds: [],
}
const TRIGGER_ICON = {
1: 'icon-dingshichufa',
2: 'icon-bianliangchufa',
5: 'icon-ziduanchufa',
4: '',
3: 'icon-baojingchufa',
}
let visible = ref(false)
let list2 = ref([])
let cloneDeepList = []
const query = async () => {
try {
let res = await request.get(
`/api/v1/connection/table/${props2.id}/trigger`
)
if (res.length) {
list2.value = res.map((e2) => {
let { triggerType, effectiveDateTime } = e2
e2.dateTime = effectiveDateTime
? new Date(Date.parse(effectiveDateTime))
: ''
let obj = {
clocking:
triggerType === 1 ? e2 : JSON.parse(JSON.stringify(TRIGGER)),
variable:
triggerType === 2 ? e2 : JSON.parse(JSON.stringify(TRIGGER)),
field:
triggerType === 5 ? e2 : JSON.parse(JSON.stringify(TRIGGER)),
alarm:
triggerType === 3 ? e2 : JSON.parse(JSON.stringify(TRIGGER)),
triggerType,
}
return obj
})
} else {
list2.value = []
add2()
}
} catch (error2) {
list2.value = []
add2()
}
cloneDeepList = lodash.cloneDeep(list2.value)
}
const open2 = () => {
visible.value = true
query()
}
const reset2 = () => {
list2.value = cloneDeepList
}
const add2 = () => {
let trigger2 = {
clocking: JSON.parse(JSON.stringify(TRIGGER)),
variable: JSON.parse(JSON.stringify(TRIGGER)),
field: JSON.parse(JSON.stringify(TRIGGER)),
alarm: JSON.parse(JSON.stringify(TRIGGER)),
triggerType: 1,
}
list2.value.push(trigger2)
}
const del = (index2) => {
list2.value.splice(index2, 1)
}
const confirm2 = async () => {
const triggers = list2.value.map((e2) => {
let obj = {}
switch (e2.triggerType) {
case 1:
obj = { ...e2.clocking }
break
case 2:
obj = { ...e2.variable }
break
case 5:
obj = { ...e2.field }
break
case 3:
obj = { ...e2.alarm }
delete obj.condition
}
obj.effectiveDateTime = obj.dateTime
? new Date(obj.dateTime).toISOString()
: ''
obj.triggerType = e2.triggerType
delete obj.dateTime
return obj
})
await request
.put(`/api/v1/connection/table/${props2.id}/trigger/save`, triggers)
.then(() => {
visible.value = false
cloneDeepList = list2.value
ElMessage.success('\u4FDD\u5B58\u6210\u529F')
emit2('confirm')
})
}
let expConfig = ref({
visible: false,
index: 0,
triggerType: '',
code: '',
})
const expConfigHandle = (index2, code2, triggerType, active) => {
if (!active) return
expConfig.value = {
index: index2,
code: code2,
triggerType,
visible: true,
}
}
const expConfigChange = (code2) => {
const { index: index2, triggerType } = expConfig.value
list2.value[index2][triggerType].condition = code2
}
const alarmConfirm = (data2, i2) => {
if (!data2 || !data2.checkedRecords) return
let ids = []
let names2 = []
data2.checkedRecords.forEach((e2) => {
ids.push(e2.alarmPointId)
names2.push(e2.alarmPointName)
})
list2.value[i2].alarm.condition = names2.join('\u3001')
list2.value[i2].alarm.alarmPointIds = ids
}
watch$1(
() => state$2.activeNode?.id,
() => {
list2.value = []
add2()
},
{ immediate: true }
)
expose({
open: open2,
})
return (_ctx, _cache) => {
const _component_el_button = resolveComponent('el-button')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_date_picker = resolveComponent('el-date-picker')
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
_component_el_dialog,
{
modelValue: unref(visible),
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
isRef(visible)
? (visible.value = $event)
: (visible = $event)),
'append-to-body': true,
'close-on-click-modal': false,
onClose:
_cache[2] ||
(_cache[2] = ($event) =>
isRef(visible) ? (visible.value = false) : (visible = false)),
onClosed: reset2,
title: props2.title,
'custom-class': 'cms-el-dialog',
width: '640px',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$1x, [
createElementVNode('section', _hoisted_2$1p, [
createVNode$1(
_component_el_button,
{
class: 'cms-btn btn-data-plain success',
onClick: add2,
},
{
default: withCtx(() => [_hoisted_3$1i]),
_: 1,
}
),
]),
createElementVNode('section', _hoisted_4$17, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(list2.value, (item2, i2) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'panel',
key: i2,
},
[
createElementVNode(
'span',
_hoisted_5$12,
toDisplayString$1(i2 + 1),
1
),
createElementVNode(
'button',
{
class: 'iconfont icon-qingchu delete',
disabled: list2.value.length == 1,
onClick: ($event) => del(i2),
},
null,
8,
_hoisted_6$X
),
createElementVNode('div', _hoisted_7$Q, [
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont',
TRIGGER_ICON[item2.triggerType],
]),
},
null,
2
),
createVNode$1(
_component_el_select,
{
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
modelValue: item2.triggerType,
'onUpdate:modelValue': ($event) =>
(item2.triggerType = $event),
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
key: '1',
value: 1,
label: '\u5B9A\u65F6\u89E6\u53D1',
}),
createVNode$1(_component_el_option, {
key: '2',
value: 2,
label: '\u53D8\u91CF\u89E6\u53D1',
}),
createVNode$1(_component_el_option, {
key: '3',
value: 3,
label: '\u62A5\u8B66\u89E6\u53D1',
}),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue']
),
]),
item2.triggerType === 1
? (openBlock(),
createElementBlock('div', _hoisted_8$N, [
createElementVNode('div', _hoisted_9$K, [
createElementVNode('div', _hoisted_10$J, [
_hoisted_11$F,
createVNode$1(
unref(ElConfigProvider),
{ locale: unref(zhCn) },
{
default: withCtx(() => [
createVNode$1(
_component_el_date_picker,
{
style: { width: '192px' },
modelValue:
item2.clocking.dateTime,
'onUpdate:modelValue': (
$event
) =>
(item2.clocking.dateTime =
$event),
type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss',
placeholder:
'\u9009\u62E9\u65E5\u671F\u65F6\u95F4',
class: 'cms-el-date-picker',
'popper-class':
'cms-el-picker__popper',
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
]
),
]),
_: 2,
},
1032,
['locale']
),
]),
createElementVNode('div', _hoisted_12$D, [
_hoisted_13$x,
createVNode$1(
TriggerFrequency,
{
label: '\u6BCF',
value:
item2.clocking.frequencyValue,
'onUpdate:value': ($event) =>
(item2.clocking.frequencyValue =
$event),
unit: item2.clocking.frequencyUnit,
'onUpdate:unit': ($event) =>
(item2.clocking.frequencyUnit =
$event),
},
null,
8,
[
'value',
'onUpdate:value',
'unit',
'onUpdate:unit',
]
),
]),
]),
createElementVNode('div', _hoisted_14$t, [
createElementVNode('div', _hoisted_15$t, [
createVNode$1(
_component_el_checkbox,
{
modelValue: item2.clocking.matchAll,
'onUpdate:modelValue': ($event) =>
(item2.clocking.matchAll =
$event),
class: 'cms-el-checkbox',
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
_hoisted_16$t,
createVNode$1(
RelevanceButton,
{
class: 'relevance',
iconfont:
'iconfont icon-bianliang1 fx',
placeholder:
'\u8BF7\u8BBE\u7F6E\u7B5B\u9009\u6761\u4EF6',
label: item2.clocking.condition,
disabled: !item2.clocking.matchAll,
onClick: ($event) =>
expConfigHandle(
i2,
item2.clocking.condition,
'clocking',
item2.clocking.matchAll
),
},
null,
8,
['label', 'disabled', 'onClick']
),
]),
]),
]))
: createCommentVNode('', true),
item2.triggerType === 2
? (openBlock(),
createElementBlock('div', _hoisted_17$p, [
createElementVNode('div', _hoisted_18$n, [
createElementVNode('div', _hoisted_19$l, [
_hoisted_20$j,
createVNode$1(
RelevanceButton,
{
class: 'relevance',
iconfont:
'iconfont icon-bianliang1 fx',
placeholder:
'\u8BF7\u8BBE\u7F6E\u7B5B\u9009\u6761\u4EF6',
label: item2.variable.condition,
onClick: ($event) =>
expConfigHandle(
i2,
item2.variable.condition,
'variable',
true
),
},
null,
8,
['label', 'onClick']
),
createVNode$1(
_component_el_select,
{
class:
'cms-el-select select-change',
'popper-class':
'cms-el-select__popper',
modelValue:
item2.variable.conditionDetail,
'onUpdate:modelValue': ($event) =>
(item2.variable.conditionDetail =
$event),
onChange: (v4) => {
if (v4 == 3)
item2.variable.frequencyCheck = false
},
},
{
default: withCtx(() => [
createVNode$1(
_component_el_option,
{
key: '1',
value: 1,
label: '\u53D8\u771F',
}
),
createVNode$1(
_component_el_option,
{
key: '2',
value: 2,
label: '\u53D8\u5047',
}
),
createVNode$1(
_component_el_option,
{
key: '3',
value: 3,
label:
'\u771F\u5047\u53D8\u5316',
}
),
]),
_: 2,
},
1032,
[
'modelValue',
'onUpdate:modelValue',
'onChange',
]
),
]),
]),
createElementVNode('div', _hoisted_21$e, [
createElementVNode(
'div',
{
class: normalizeClass([
'con-row',
{
'disabled-trigger':
item2.variable
.conditionDetail == 3,
},
]),
},
[
createVNode$1(
_component_el_checkbox,
{
disabled:
item2.variable
.conditionDetail == 3,
modelValue:
item2.variable.frequencyCheck,
'onUpdate:modelValue': ($event) =>
(item2.variable.frequencyCheck =
$event),
class: 'cms-el-checkbox',
},
null,
8,
[
'disabled',
'modelValue',
'onUpdate:modelValue',
]
),
_hoisted_22$d,
createVNode$1(
TriggerFrequency,
{
label: '\u6BCF',
disabled:
!item2.variable
.frequencyCheck ||
item2.variable
.conditionDetail == 3,
value:
item2.variable.frequencyValue,
'onUpdate:value': ($event) =>
(item2.variable.frequencyValue =
$event),
unit: item2.variable
.frequencyUnit,
'onUpdate:unit': ($event) =>
(item2.variable.frequencyUnit =
$event),
},
null,
8,
[
'disabled',
'value',
'onUpdate:value',
'unit',
'onUpdate:unit',
]
),
],
2
),
]),
]))
: createCommentVNode('', true),
item2.triggerType === 5
? (openBlock(),
createElementBlock('div', _hoisted_23$a, [
_hoisted_24$a,
createElementVNode('div', _hoisted_25$9, [
createElementVNode('div', _hoisted_26$9, [
createVNode$1(
_component_el_checkbox,
{
modelValue: item2.field.matchAll,
'onUpdate:modelValue': ($event) =>
(item2.field.matchAll = $event),
class: 'cms-el-checkbox',
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
_hoisted_27$9,
createVNode$1(
RelevanceButton,
{
class: 'relevance',
iconfont:
'iconfont icon-bianliang1 fx',
placeholder:
'\u8BF7\u8BBE\u7F6E\u7B5B\u9009\u6761\u4EF6',
label: item2.field.condition,
disabled: !item2.field.matchAll,
onClick: ($event) =>
expConfigHandle(
i2,
item2.field.condition,
'field',
item2.field.matchAll
),
},
null,
8,
['label', 'disabled', 'onClick']
),
]),
]),
]))
: createCommentVNode('', true),
item2.triggerType === 3
? (openBlock(),
createElementBlock('div', _hoisted_28$8, [
createElementVNode('div', _hoisted_29$7, [
createElementVNode('div', _hoisted_30$7, [
_hoisted_31$6,
createVNode$1(
AlarmRecordsConf,
{
isAppendToBody: true,
defaultCheckKey:
item2.alarm.alarmPointIds,
dialogTitle:
'\u8BF7\u9009\u62E9\u62A5\u8B66\u70B9',
type: 'alarmTrigger',
onConfirm: ($event) =>
alarmConfirm($event, i2),
},
{
default: withCtx(() => [
createVNode$1(
RelevanceButton,
{
class: 'relevance',
label: item2.alarm.condition,
},
null,
8,
['label']
),
]),
_: 2,
},
1032,
['defaultCheckKey', 'onConfirm']
),
]),
]),
createElementVNode('div', _hoisted_32$6, [
createElementVNode('div', _hoisted_33$6, [
createVNode$1(
_component_el_checkbox,
{
modelValue:
item2.alarm.frequencyCheck,
'onUpdate:modelValue': ($event) =>
(item2.alarm.frequencyCheck =
$event),
class: 'cms-el-checkbox',
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
_hoisted_34$4,
createVNode$1(
TriggerFrequency,
{
label: '\u6BCF',
disabled:
!item2.alarm.frequencyCheck,
value: item2.alarm.frequencyValue,
'onUpdate:value': ($event) =>
(item2.alarm.frequencyValue =
$event),
unit: item2.alarm.frequencyUnit,
'onUpdate:unit': ($event) =>
(item2.alarm.frequencyUnit =
$event),
},
null,
8,
[
'disabled',
'value',
'onUpdate:value',
'unit',
'onUpdate:unit',
]
),
]),
]),
]))
: createCommentVNode('', true),
]
)
)
}),
128
)),
]),
]),
createElementVNode('div', _hoisted_35$4, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick:
_cache[0] ||
(_cache[0] = ($event) =>
isRef(visible)
? (visible.value = false)
: (visible = false)),
},
{
default: withCtx(() => [_hoisted_36$3]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_37$3]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue', 'title']
),
createVNode$1(
FormulaConfigDialog$2,
{
modelValue: expConfig.value.visible,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) => (expConfig.value.visible = $event)),
code: expConfig.value.code,
filterClientVariables: true,
onChange: expConfigChange,
},
null,
8,
['modelValue', 'code']
),
])
)
}
},
})
var TriggerSettingConfig = /* @__PURE__ */ _export_sfc(_sfc_main$1D, [
['__scopeId', 'data-v-73aba5bc'],
])
var TriggerSettingConfig$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: TriggerSettingConfig,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _hoisted_1$1w = { style: { display: 'inline-block' } }
const _sfc_main$1C = /* @__PURE__ */ defineComponent({
props: ['id', 'text', 'title'],
setup(__props2) {
const props2 = __props2
let triggerSettingConfigRef = ref()
const open2 = () => {
triggerSettingConfigRef.value.open()
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$1w, [
createElementVNode(
'button',
{
class: 'cms-btn btn-screen-btn primary',
onClick: open2,
},
toDisplayString$1(props2.text),
1
),
createVNode$1(
TriggerSettingConfig,
mergeProps(props2, {
ref_key: 'triggerSettingConfigRef',
ref: triggerSettingConfigRef,
}),
null,
16
),
])
)
}
},
})
var TriggerSetting$2 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$1C,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Filter_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$Z = (n2) => (
pushScopeId('data-v-22e9e953'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1v = /* @__PURE__ */ _withScopeId$Z(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'header' },
[
/* @__PURE__ */ createElementVNode('i', { class: 'icon-filter' }),
/* @__PURE__ */ createElementVNode('span', null, '\u7B5B\u9009'),
],
-1
)
)
const _hoisted_2$1o = { class: 'content' }
const _hoisted_3$1h = { class: 'filter-group' }
const _hoisted_4$16 = { class: 'filter-group-content' }
const _hoisted_5$11 = /* @__PURE__ */ _withScopeId$Z(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'left-part' },
'\u914D\u7F6E\uFF1A',
-1
)
)
const _hoisted_6$W = { class: 'right-part' }
const _hoisted_7$P = { class: 'filter-list' }
const _hoisted_8$M = ['title']
const _hoisted_9$J = ['onClick']
const _hoisted_10$I = { style: { width: '18px' } }
const _hoisted_11$E = ['onClick']
const _hoisted_12$C = { class: 'footer' }
const _hoisted_13$w = ['onClick']
const _hoisted_14$s = /* @__PURE__ */ _withScopeId$Z(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-quanxiantianjia1' },
null,
-1
)
)
const _hoisted_15$s = /* @__PURE__ */ _withScopeId$Z(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u5E76\u4E14', -1)
)
const _hoisted_16$s = [_hoisted_14$s, _hoisted_15$s]
const _hoisted_17$o = {
key: 0,
style: { 'line-height': '30px', 'text-align': 'center' },
}
const _hoisted_18$m = /* @__PURE__ */ _withScopeId$Z(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u6216\u8005', -1)
)
const _hoisted_19$k = /* @__PURE__ */ _withScopeId$Z(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-quanxiantianjia1' },
null,
-1
)
)
const _hoisted_20$i = [_hoisted_18$m, _hoisted_19$k]
const _sfc_main$1B = /* @__PURE__ */ defineComponent({
setup(__props2) {
let fieldListMap = ref({})
watch$1(
() => state$2.fieldList,
() => {
for (const field2 of state$2.fieldList) {
fieldListMap.value[field2.displayName] = field2
}
}
)
let operatorTypeList = ref([
{ value: 1, name: '\u7B49\u4E8E', showInput: true, isValueType: false },
{
value: 2,
name: '\u4E0D\u7B49\u4E8E',
showInput: true,
isValueType: false,
},
{
value: 3,
name: '\u4E0D\u4E3A\u7A7A',
showInput: false,
isValueType: false,
},
{ value: 4, name: '\u5927\u4E8E', showInput: true, isValueType: true },
{ value: 5, name: '\u5C0F\u4E8E', showInput: true, isValueType: true },
])
let isDisabled = (list2, name2) => {
return list2.filter((item2) => item2.field === name2).length > 0
}
let varConfig = ref({
visible: false,
row: null,
})
const openVarDialog = (row) => {
varConfig.value.visible = true
varConfig.value.row = row
}
const changeName = (variate) => {
if (varConfig.value.row) {
varConfig.value.row.operand = variate[0].name
varConfig.value.row.isVariable = true
}
varConfig.value.visible = false
}
const blurInput = (row) => {
row.isVariable = false
}
const addFilterBlock = () => {
state$2.nodeDetail.detail.filters.push([
{
field: '',
operatorType: 1,
operand: '',
isVariable: false,
isValueType: false,
},
])
}
const addCondition = (dataList2) => {
dataList2.push({
field: '',
operatorType: 1,
operand: '',
isVariable: false,
})
}
const del = (parent2, node2) => {
parent2.splice(parent2.indexOf(node2), 1)
if (parent2.length === 0) {
state$2.nodeDetail.detail.filters.splice(
state$2.nodeDetail.detail.filters.indexOf(parent2),
1
)
}
}
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input = resolveComponent('el-input')
return (
openBlock(),
createElementBlock(
'div',
{
class: 'filter',
key: unref(state$2).nodeDetail.name,
},
[
_hoisted_1$1v,
createElementVNode('div', _hoisted_2$1o, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(state$2).nodeDetail.detail?.filters,
(fil, filIdx) => {
return (
openBlock(),
createElementBlock(
Fragment,
{
key: unref(state$2).nodeDetail.name + filIdx,
},
[
createElementVNode('div', _hoisted_3$1h, [
createElementVNode('div', _hoisted_4$16, [
_hoisted_5$11,
createElementVNode('div', _hoisted_6$W, [
createElementVNode('div', _hoisted_7$P, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(fil, (filDetail, idx) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'filter-item',
key: idx,
},
[
createVNode$1(
_component_el_select,
{
class: 'cms-el-select',
'popper-class':
'cms-el-select__popper',
modelValue: filDetail.field,
'onUpdate:modelValue': (
$event
) => (filDetail.field = $event),
filterable: '',
placeholder:
'\u8BF7\u9009\u62E9',
title: filDetail.field,
},
{
default: withCtx(() => [
createVNode$1(
_component_el_option,
{
label:
'\u8BF7\u9009\u62E9',
value: '',
onClick: () =>
(filDetail.isValueType = false),
},
null,
8,
['onClick']
),
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(state$2).fieldList,
(item2, idx2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: idx2,
label:
item2.displayName,
value:
item2.displayName,
disabled: unref(
isDisabled
)(
fil,
item2.displayName
),
onClick: () => {
filDetail.isValueType =
item2.isValueType
!item2.isValueType &&
[
4, 5,
].includes(
filDetail.operatorType
) &&
(filDetail.operatorType = 1)
},
},
null,
8,
[
'label',
'value',
'disabled',
'onClick',
]
)
)
}
),
128
)),
]),
_: 2,
},
1032,
[
'modelValue',
'onUpdate:modelValue',
'title',
]
),
createVNode$1(
_component_el_select,
{
class: 'cms-el-select',
'popper-class':
'cms-el-select__popper',
modelValue:
filDetail.operatorType,
'onUpdate:modelValue': (
$event
) =>
(filDetail.operatorType =
$event),
placeholder:
'\u8BF7\u9009\u62E9',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
operatorTypeList.value,
(item2) => {
return (
openBlock(),
createElementBlock(
Fragment,
{
key: item2.value,
},
[
(item2.isValueType &&
fieldListMap
.value[
filDetail
.field
]
?.isValueType) ||
!item2.isValueType
? (openBlock(),
createBlock(
_component_el_option,
{
key: 0,
value:
item2.value,
label:
item2.name,
},
null,
8,
[
'value',
'label',
]
))
: createCommentVNode(
'',
true
),
],
64
)
)
}
),
128
)),
]),
_: 2,
},
1032,
[
'modelValue',
'onUpdate:modelValue',
]
),
operatorTypeList.value[
filDetail.operatorType - 1
].showInput
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: 'input-group',
title: filDetail.operand,
},
[
createVNode$1(
_component_el_input,
{
class: normalizeClass([
'cms-el-input',
{
'is-variable':
filDetail.isVariable,
},
]),
modelValue:
filDetail.operand,
'onUpdate:modelValue': (
$event
) =>
(filDetail.operand =
$event),
onInput: ($event) =>
blurInput(filDetail),
},
null,
8,
[
'class',
'modelValue',
'onUpdate:modelValue',
'onInput',
]
),
createElementVNode(
'i',
{
class:
'iconfont icon-gengduo1',
onClick: ($event) =>
openVarDialog(
filDetail
),
},
null,
8,
_hoisted_9$J
),
],
8,
_hoisted_8$M
))
: createCommentVNode('', true),
createElementVNode(
'div',
_hoisted_10$I,
[
createElementVNode(
'button',
{
class:
'cms-btn icon-btn iconfont icon-qingchu option-danger',
onClick: ($event) =>
del(fil, filDetail),
},
null,
8,
_hoisted_11$E
),
]
),
]
)
)
}),
128
)),
]),
]),
]),
createElementVNode('div', _hoisted_12$C, [
createElementVNode(
'button',
{
class: 'btn-footer normal',
onClick: ($event) => addCondition(fil),
},
_hoisted_16$s,
8,
_hoisted_13$w
),
]),
]),
unref(state$2).nodeDetail.detail &&
filIdx <
unref(state$2).nodeDetail.detail.filters?.length - 1
? (openBlock(),
createElementBlock(
'div',
_hoisted_17$o,
' \u6216\u8005 '
))
: createCommentVNode('', true),
],
64
)
)
}
),
128
)),
]),
createElementVNode('div', { class: 'footer' }, [
createElementVNode(
'button',
{
class: 'btn-footer',
onClick: addFilterBlock,
},
_hoisted_20$i
),
]),
createVNode$1(
unref(_sfc_main$6Q),
{
visible: varConfig.value.visible,
noLanguage: true,
filterClientVariables: true,
isAppendToBody: true,
data: {
name:
varConfig.value.row && varConfig.value.row.isVariable
? varConfig.value.row.operand
: '',
},
onConfirm: changeName,
onCancel:
_cache[0] ||
(_cache[0] = ($event) => (varConfig.value.visible = false)),
},
null,
8,
['visible', 'data']
),
]
)
)
}
},
})
var FilterVue = /* @__PURE__ */ _export_sfc(_sfc_main$1B, [
['__scopeId', 'data-v-22e9e953'],
])
var Filter = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: FilterVue,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Sort_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$Y = (n2) => (
pushScopeId('data-v-eb89c080'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1u = /* @__PURE__ */ _withScopeId$Y(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'header' },
[
/* @__PURE__ */ createElementVNode('i', { class: 'icon-filter' }),
/* @__PURE__ */ createElementVNode('span', null, '\u6392\u5E8F'),
],
-1
)
)
const _hoisted_2$1n = { class: 'content' }
const _hoisted_3$1g = { class: 'sort-group' }
const _hoisted_4$15 = { class: 'sort-group-content' }
const _hoisted_5$10 = /* @__PURE__ */ _withScopeId$Y(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'left-part' },
'\u5173\u952E\u5217\uFF1A',
-1
)
)
const _hoisted_6$V = { class: 'right-part' }
const _hoisted_7$O = { class: 'sort-list' }
const _hoisted_8$L = { style: { width: '18px' } }
const _hoisted_9$I = ['onClick']
const _hoisted_10$H = { class: 'footer' }
const _hoisted_11$D = /* @__PURE__ */ _withScopeId$Y(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-quanxiantianjia1' },
null,
-1
)
)
const _hoisted_12$B = /* @__PURE__ */ _withScopeId$Y(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u6DFB\u52A0', -1)
)
const _hoisted_13$v = [_hoisted_11$D, _hoisted_12$B]
const _sfc_main$1A = /* @__PURE__ */ defineComponent({
setup(__props2) {
let sortTypeList = ref([
{ value: 0, name: '\u8BF7\u9009\u62E9' },
{ value: 1, name: '\u5347\u5E8F' },
{ value: 2, name: '\u964D\u5E8F' },
])
let isDisabled = (list2, name2) => {
return list2.filter((item2) => item2.field === name2).length > 0
}
let del = (parent2, node2) => {
parent2.splice(parent2.indexOf(node2), 1)
}
let addNode = () => {
state$2.nodeDetail.detail?.sorts.push({
field: '',
sortType: 1,
})
}
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
return (
openBlock(),
createElementBlock(
'div',
{
class: 'sort',
key: unref(state$2).nodeDetail.name,
},
[
_hoisted_1$1u,
createElementVNode('div', _hoisted_2$1n, [
createElementVNode('div', _hoisted_3$1g, [
createElementVNode('div', _hoisted_4$15, [
_hoisted_5$10,
createElementVNode('div', _hoisted_6$V, [
createElementVNode('div', _hoisted_7$O, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(state$2).nodeDetail.detail?.sorts,
(sortItem, idx) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'sort-item',
key: idx,
},
[
createVNode$1(
_component_el_select,
{
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
modelValue: sortItem.field,
'onUpdate:modelValue': ($event) =>
(sortItem.field = $event),
filterable: '',
placeholder: '\u8BF7\u9009\u62E9',
title: sortItem.field,
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
label: '\u8BF7\u9009\u62E9',
value: '',
}),
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(state$2).fieldList,
(item2, idx2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: idx2,
label: item2.displayName,
value: item2.displayName,
disabled: unref(isDisabled)(
unref(state$2).nodeDetail
.detail?.sorts,
item2.displayName
),
},
null,
8,
['label', 'value', 'disabled']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
[
'modelValue',
'onUpdate:modelValue',
'title',
]
),
createVNode$1(
_component_el_select,
{
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
modelValue: sortItem.sortType,
'onUpdate:modelValue': ($event) =>
(sortItem.sortType = $event),
placeholder: '\u8BF7\u9009\u62E9',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
sortTypeList.value,
(item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
value: item2.value,
label: item2.name,
},
null,
8,
['value', 'label']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue']
),
createElementVNode('div', _hoisted_8$L, [
createElementVNode(
'button',
{
class:
'cms-btn icon-btn iconfont icon-qingchu option-danger',
onClick: ($event) =>
unref(del)(
unref(state$2).nodeDetail.detail
?.sorts,
sortItem
),
},
null,
8,
_hoisted_9$I
),
]),
]
)
)
}
),
128
)),
]),
]),
]),
]),
createElementVNode('div', _hoisted_10$H, [
createElementVNode(
'button',
{
class: 'btn-footer normal',
onClick:
_cache[0] ||
(_cache[0] = (...args) =>
unref(addNode) && unref(addNode)(...args)),
},
_hoisted_13$v
),
]),
]),
]
)
)
}
},
})
var SortVue = /* @__PURE__ */ _export_sfc(_sfc_main$1A, [
['__scopeId', 'data-v-eb89c080'],
])
var Sort = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: SortVue,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var dataBaseTable_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$X = (n2) => (
pushScopeId('data-v-5926f4c6'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1t = { class: 'database-content' }
const _hoisted_2$1m = /* @__PURE__ */ _withScopeId$X(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'flex-1 name' },
'\u6570\u636E\u5E93',
-1
)
)
const _hoisted_3$1f = { class: 'database-block' }
const _hoisted_4$14 = { class: 'database-table' }
const _hoisted_5$$ = {
class: 'vxe-cell--label',
style: { display: 'block' },
}
const _hoisted_6$U = { class: 'pager' }
const _hoisted_7$N = { class: 'test-block' }
const _hoisted_8$K = { class: 'flex header' }
const _hoisted_9$H = { class: 'flex-1' }
const _hoisted_10$G = { class: 'test-table' }
const _hoisted_11$C = {
key: 0,
class: 'test-info',
}
const _hoisted_12$A = { class: 'vxe-cell--label' }
const _sfc_main$1z = /* @__PURE__ */ defineComponent({
setup(__props2, { expose }) {
let column = ref(/* @__PURE__ */ new Set([]))
let tableData2 = ref({
total: 0,
data: [],
})
let activeTab2 = ref('info')
let execData = ref({
info: '',
record: [],
})
let xTable = ref()
let testTable = ref()
async function executetest() {
if (!state$2.activeNode || state$2.activeNode.type !== 2) return
let res = await request.get(
`/api/v1/connection/table/${state$2.activeNode.id}/executetest`
)
execData.value.info = res.info
execData.value.record.push(res.record)
state$2.activeNode.status = res.status
state$2.activeNode.errorMsg = res.lastErrorMsg
testTable.value?.loadData(execData.value.record)
for (const key2 in res.record.data) {
column.value.add(key2)
}
}
async function getData() {
if (!state$2.activeNode || state$2.activeNode.type !== 2) return
let resTable = await request.get(
`/api/v1/connection/table/${state$2.activeNode.id}/preview`
)
state$2.activeNode.status = resTable.status
state$2.activeNode.errorMsg = resTable.errorMsg
tableData2.value = resTable
}
expose({
getData,
executetest,
})
return (_ctx, _cache) => {
const _component_vxe_column = resolveComponent('vxe-column')
const _component_vxe_table = resolveComponent('vxe-table')
return (
openBlock(),
createElementBlock('div', _hoisted_1$1t, [
createElementVNode('div', { class: 'flex header' }, [
_hoisted_2$1m,
createElementVNode(
'button',
{
class: 'cms-btn btn-screen-btn primary',
onClick: getData,
},
'\u5237\u65B0'
),
]),
createElementVNode('div', _hoisted_3$1f, [
createElementVNode('div', _hoisted_4$14, [
createVNode$1(
_component_vxe_table,
{
class: 'cms-vxe-table',
style: { 'min-width': '100%' },
ref_key: 'xTable',
ref: xTable,
height: '100%',
'show-overflow': 'tooltip',
'tooltip-config': { showAll: true },
'show-header-overflow': 'tooltip',
'column-config': { resizable: true },
data: tableData2.value.data,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(state$2).fieldList, (item2) => {
return (
openBlock(),
createBlock(
_component_vxe_column,
{
key: item2.displayName,
field: item2.displayName,
title: item2.displayName,
'min-width': 120,
},
{
header: withCtx((scope) => [
createTextVNode(
toDisplayString$1(
unref(state$2).fieldList[scope.$columnIndex]
?.displayName
),
1
),
]),
default: withCtx((scope) => [
createElementVNode(
'div',
_hoisted_5$$,
toDisplayString$1(
scope.row[
unref(state$2).fieldList[
scope.$columnIndex
]?.displayName || ''
]
),
1
),
]),
_: 2,
},
1032,
['field', 'title']
)
)
}),
128
)),
]),
_: 1,
},
8,
['data']
),
]),
createElementVNode(
'div',
_hoisted_6$U,
'\u5171 ' +
toDisplayString$1(tableData2.value.total) +
' \u6761\u6570\u636E\uFF0C\u4EC5\u5C55\u793A\u524D 100 \u6761\u6570\u636E',
1
),
]),
createElementVNode('div', _hoisted_7$N, [
createElementVNode('div', _hoisted_8$K, [
createElementVNode('div', _hoisted_9$H, [
createElementVNode(
'button',
{
class: normalizeClass([
'cms-btn normal',
{ active: activeTab2.value === 'info' },
]),
onClick:
_cache[0] ||
(_cache[0] = ($event) => (activeTab2.value = 'info')),
},
' \u6D4B\u8BD5\u4FE1\u606F ',
2
),
createElementVNode(
'button',
{
class: normalizeClass([
'cms-btn normal',
{ active: activeTab2.value === 'record' },
]),
onClick:
_cache[1] ||
(_cache[1] = ($event) => (activeTab2.value = 'record')),
},
' \u6D4B\u8BD5\u8BB0\u5F55 ',
2
),
]),
createElementVNode(
'button',
{
class: 'cms-btn btn-screen-btn',
onClick: executetest,
},
toDisplayString$1(
unref(actionList)[
unref(state$2).nodeDetail.detail.actionType - 1
]?.label
) + '\u6D4B\u8BD5 ',
1
),
]),
createElementVNode('div', _hoisted_10$G, [
activeTab2.value === 'info'
? (openBlock(),
createElementBlock(
'div',
_hoisted_11$C,
toDisplayString$1(execData.value.info),
1
))
: createCommentVNode('', true),
activeTab2.value === 'record'
? (openBlock(),
createBlock(
_component_vxe_table,
{
key: 1,
ref_key: 'testTable',
ref: testTable,
class: 'cms-vxe-table',
style: { 'min-width': '100%' },
height: '100%',
'show-overflow': 'tooltip',
'tooltip-config': { showAll: true },
'show-header-overflow': 'tooltip',
'column-config': { resizable: true },
data: execData.value.record,
},
{
default: withCtx(() => [
createVNode$1(_component_vxe_column, {
field: 'dateTime',
title: '\u65F6\u95F4',
width: '200',
}),
createVNode$1(_component_vxe_column, {
field: 'action',
title: '\u52A8\u4F5C',
width: '100',
}),
createVNode$1(
_component_vxe_column,
{
field: 'status',
title: '\u72B6\u6001',
width: column.value.size === 0 ? 'unset' : 100,
},
{
default: withCtx((scope) => [
createElementVNode(
'div',
{
class: normalizeClass([
'vxe-cell--label',
{
'is-fail':
scope.row.status === '\u5931\u8D25',
},
]),
},
toDisplayString$1(scope.row.status),
3
),
]),
_: 1,
},
8,
['width']
),
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(column.value, (item2) => {
return (
openBlock(),
createBlock(
_component_vxe_column,
{
key: item2,
field: item2,
title: item2,
'min-width': 120,
},
{
default: withCtx((scope) => [
createElementVNode(
'div',
_hoisted_12$A,
toDisplayString$1(
scope.row.data[item2] || ''
),
1
),
]),
_: 2,
},
1032,
['field', 'title']
)
)
}),
128
)),
]),
_: 1,
},
8,
['data']
))
: createCommentVNode('', true),
]),
]),
])
)
}
},
})
var DatabaseTableVue = /* @__PURE__ */ _export_sfc(_sfc_main$1z, [
['__scopeId', 'data-v-5926f4c6'],
])
var dataBaseTable = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: DatabaseTableVue,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ChoiceFieldDialog_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$1s = { class: 'screen' }
const _hoisted_2$1l = { class: 'table-list' }
const _hoisted_3$1e = { class: 'el-dialog__footer footer' }
const _hoisted_4$13 = { class: 'flex' }
const _hoisted_5$_ = { class: 'flex-right' }
const _hoisted_6$T = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_7$M = /* @__PURE__ */ createTextVNode('\u786E\u8BA4')
const _sfc_main$1y = /* @__PURE__ */ defineComponent({
props: {
defaultCheckKey: {
type: Array,
default: () => [],
},
},
emits: ['confirm', 'update:modelValue'],
setup(__props2, { expose, emit: emit2 }) {
const props2 = __props2
let visible = ref(false)
let xTable = ref()
let tableData2 = ref([])
let primaryTableData = ref()
let filterText = ref('')
watch$1(
() => filterText.value,
() => {
let choiceList = xTable.value.getCheckboxRecords()
tableData2.value = primaryTableData.value.filter(
(item2) =>
choiceList.some(
(choiceItem) => choiceItem.displayName === item2.displayName
) || item2.displayName.includes(filterText.value)
)
}
)
onMounted(async () => {
visible.value = true
await getTableField()
})
const getTableField = async () => {
if (!state$2.activeNode) return
let res = await request.get(
`/api/v1/connection/table/${state$2.activeNode.id}/field`
)
res.forEach((item2) => {
if (props2.defaultCheckKey.length === 0) {
item2.isCheck = true
} else {
item2.isCheck = props2.defaultCheckKey.includes(item2.displayName)
}
})
tableData2.value = [...res]
primaryTableData.value = [...res]
}
const viewSelected = () => {
tableData2.value = xTable.value.getCheckboxRecords()
}
const clear2 = () => {
filterText.value = ''
tableData2.value = [...primaryTableData.value]
}
const close2 = () => {
emit2('update:modelValue', false)
}
const confirm2 = () => {
emit2('confirm', xTable.value.getCheckboxRecords())
close2()
}
expose({
close: close2,
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_vxe_column = resolveComponent('vxe-column')
const _component_vxe_table = resolveComponent('vxe-table')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
_component_el_dialog,
{
width: '640px',
top: '22vh',
modelValue: visible.value,
'onUpdate:modelValue':
_cache[1] || (_cache[1] = ($event) => (visible.value = $event)),
title: '\u5B57\u6BB5\u9009\u62E9',
'custom-class': 'cms-el-dialog',
'append-to-body': true,
'close-on-click-modal': false,
onClose: close2,
},
{
default: withCtx(() => [
createElementVNode('div', null, [
createElementVNode('div', _hoisted_1$1s, [
createVNode$1(
_component_el_input,
{
class: 'screen-input cms-el-input-x',
placeholder: '\u8BF7\u8F93\u5165\u5B57\u6BB5\u540D',
modelValue: filterText.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (filterText.value = $event)),
clearable: '',
},
null,
8,
['modelValue']
),
createElementVNode(
'button',
{
class: 'cms-btn btn-data-plain primary',
onClick: viewSelected,
},
'\u67E5\u770B\u9009\u4E2D'
),
createElementVNode(
'button',
{
class: 'cms-btn btn-data-plain danger',
onClick: clear2,
},
'\u6E05\u9664'
),
]),
createElementVNode('div', _hoisted_2$1l, [
createVNode$1(
_component_vxe_table,
{
class: 'cms-vxe-table cms-vxe-table-min',
style: { 'min-width': '100%' },
ref_key: 'xTable',
ref: xTable,
height: '100%',
'row-config': { useKey: true, keyField: 'displayName' },
'show-overflow': 'tooltip',
'tooltip-config': { showAll: true },
'show-header-overflow': 'tooltip',
'column-config': { resizable: true },
'checkbox-config': {
highlight: true,
checkField: 'isCheck',
},
data: tableData2.value,
'edit-config': { trigger: 'click', mode: 'cell' },
},
{
default: withCtx(() => [
createVNode$1(_component_vxe_column, {
type: 'checkbox',
width: '60',
}),
createVNode$1(_component_vxe_column, {
field: 'displayName',
title: '\u5B57\u6BB5\u540D',
}),
createVNode$1(_component_vxe_column, {
field: 'databaseTypeName',
title: '\u6570\u636E\u7C7B\u578B',
}),
]),
_: 1,
},
8,
['data']
),
]),
createElementVNode('div', _hoisted_3$1e, [
createElementVNode('div', _hoisted_4$13, [
createElementVNode('div', _hoisted_5$_, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: close2,
},
{
default: withCtx(() => [_hoisted_6$T]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_7$M]),
_: 1,
}
),
]),
]),
]),
]),
]),
_: 1,
},
8,
['modelValue']
),
])
)
}
},
})
var ChoiceFieldDialog = /* @__PURE__ */ _export_sfc(_sfc_main$1y, [
['__scopeId', 'data-v-d32847ca'],
])
var ChoiceFieldDialog$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ChoiceFieldDialog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _sfc_main$1x = /* @__PURE__ */ defineComponent({
emits: ['update'],
setup(__props2, { emit: emit2 }) {
let visible = ref(false)
function open2() {
visible.value = true
}
let defaultCheckKey = computed(() => {
let keyList = state$2.nodeDetail.detail.mappings?.map(
(item2) => item2.field
)
return keyList
})
function confirm2(checkList) {
let copyList = {}
state$2.nodeDetail.detail.mappings?.forEach(
(item2) => (copyList[item2.field] = item2)
)
state$2.nodeDetail.detail.mappings = []
checkList.forEach((item2) => {
state$2.nodeDetail.detail.mappings.push({
field: item2.displayName,
relativeVariable: copyList[item2.displayName]?.relativeVariable || '',
dataType: copyList[item2.displayName]?.dataType || '',
})
})
emit2('update')
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', null, [
createElementVNode('button', {
class: 'cms-btn icon-btn iconfont icon-bianji',
onClick: open2,
}),
visible.value
? (openBlock(),
createBlock(
ChoiceFieldDialog,
{
key: 0,
modelValue: visible.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (visible.value = $event)),
defaultCheckKey: unref(defaultCheckKey),
onConfirm: confirm2,
},
null,
8,
['modelValue', 'defaultCheckKey']
))
: createCommentVNode('', true),
])
)
}
},
})
var ChoiceField$2 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$1x,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const DataTypes = {
0: '\u4E8C\u8FDB\u5236\u53D8\u91CF',
1: '\u6709\u7B26\u53F78\u4F4D\u6574\u578B',
2: '\u65E0\u7B26\u53F78\u4F4D\u6574\u578B',
3: '\u6709\u7B26\u53F716\u4F4D\u6574\u578B',
4: '\u65E0\u7B26\u53F716\u4F4D\u6574\u578B',
5: '\u6709\u7B26\u53F732\u4F4D\u6574\u578B',
6: '\u65E0\u7B26\u53F732\u4F4D\u6574\u578B',
7: '\u6709\u7B26\u53F764\u4F4D\u6574\u578B',
8: '\u65E0\u7B26\u53F764\u4F4D\u6574\u578B',
9: 'F32\u4F4D\u6D6E\u70B9\u6570IEEE754',
10: 'F64\u4F4D\u6D6E\u70B9\u6570IEEE754',
11: '\u65E5\u671F',
12: '\u65F6\u95F4',
13: '\u65E5\u671F\u65F6\u95F4',
14: '\u5B57\u7B26\u4E32',
15: '\u5BBD\u5B57\u7B26\u4E32',
16: '\u6587\u672C\u53D8\u91CF8\u4F4D\u5B57\u7B26\u96C6',
17: '\u6587\u672C\u53D8\u91CF16\u4F4D\u5B57\u7B26\u96C6',
18: '\u5B9A\u65F6\u5668',
}
var MappingTable_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$W = (n2) => (
pushScopeId('data-v-5035464e'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1r = { class: 'mapping' }
const _hoisted_2$1k = { class: 'flex header' }
const _hoisted_3$1d = /* @__PURE__ */ _withScopeId$W(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'name' },
'\u6620\u5C04\u5173\u7CFB',
-1
)
)
const _hoisted_4$12 = { class: 'mappingTable' }
const _hoisted_5$Z = {
class: 'flex-row',
style: { 'padding-left': '0' },
}
const _hoisted_6$S = { class: 'flex-row-full vxe-cell--label' }
const _hoisted_7$L = ['onClick']
const _hoisted_8$J = {
class: 'dialog-content',
style: { color: '#fff' },
}
const _hoisted_9$G = { class: 'el-dialog__footer' }
const _hoisted_10$F = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_11$B = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$1w = /* @__PURE__ */ defineComponent({
setup(__props2, { expose }) {
let xTable = ref()
function updateData() {
xTable.value.loadData(state$2.nodeDetail.detail.mappings)
}
let deleteConfig = ref({
visible: false,
message: '',
})
function delMappings() {
if (!xTable.value.getCheckboxRecords().length) {
toast('\u8BF7\u9009\u62E9\u8981\u5220\u9664\u7684\u6570\u636E', 'error')
return
}
deleteConfig.value.visible = true
}
async function deleteConfirm() {
deleteConfig.value.visible = false
if (!state$2.activeNode) return
let checkList = xTable.value.getCheckboxRecords()
let nameList = checkList.map((item2) => item2.field)
await request.delete(
`/api/v1/connection/table/${state$2.activeNode?.id}/map`,
{
data: {
fields: nameList,
},
}
)
toast('\u5220\u9664\u6210\u529F', 'success')
xTable.value.removeCheckboxRow()
let copyList = [...state$2.nodeDetail.detail.mappings]
for (let i2 = copyList.length - 1; i2 >= 0; i2--) {
if (nameList.includes(copyList[i2].field)) {
state$2.nodeDetail.detail.mappings.splice(i2, 1)
}
}
updateData()
}
let dialogConfig = ref({
visible: false,
row: null,
})
function choiceVariate(row) {
dialogConfig.value.visible = true
dialogConfig.value.row = row
}
const changeName = (index2, row) => {
let dataList2 = state$2.nodeDetail.detail.mappings
dataList2[index2].relativeVariable = row[0].name
dataList2[index2].dataType = DataTypes[row[0].type]
if (index2 === dataList2.length - 1) {
dialogConfig.value.row = dataList2[index2]
} else {
dialogConfig.value.row = dataList2[index2 + 1]
}
}
const submitVariable = (list2) => {
if (list2.length === 0) {
toast('\u8BF7\u9009\u62E9\u5173\u8054\u53D8\u91CF', 'error')
return
}
dialogConfig.value.row &&
(dialogConfig.value.row.relativeVariable = list2[0].name)
dialogConfig.value.row &&
(dialogConfig.value.row.dataType = DataTypes[list2[0].type])
dialogConfig.value.visible = false
}
function updateMappings() {
updateData()
}
expose({
updateData,
})
return (_ctx, _cache) => {
const _component_vxe_column = resolveComponent('vxe-column')
const _component_vxe_table = resolveComponent('vxe-table')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', _hoisted_1$1r, [
createElementVNode('div', _hoisted_2$1k, [
_hoisted_3$1d,
createVNode$1(_sfc_main$1x, { onUpdate: updateMappings }),
createElementVNode('button', {
class: 'cms-btn icon-btn iconfont icon-qingchu option-danger',
onClick: delMappings,
}),
]),
createElementVNode('div', _hoisted_4$12, [
createVNode$1(
_component_vxe_table,
{
class: 'cms-vxe-table',
style: { 'min-width': '100%' },
ref_key: 'xTable',
ref: xTable,
height: '100%',
'show-overflow': 'tooltip',
'row-config': { keyField: 'field' },
'tooltip-config': { showAll: true },
'show-header-overflow': 'tooltip',
'column-config': { resizable: true },
data: unref(state$2).nodeDetail.detail.mappings,
'edit-config': { trigger: 'click', mode: 'cell' },
},
{
default: withCtx(() => [
createVNode$1(_component_vxe_column, {
type: 'checkbox',
width: '60',
}),
createVNode$1(_component_vxe_column, {
field: 'field',
title: '\u6570\u636E\u8868\u5B57\u6BB5',
}),
createVNode$1(
_component_vxe_column,
{
field: 'relativeVariable',
title: '\u5173\u8054\u53D8\u91CF',
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_5$Z, [
createElementVNode(
'div',
_hoisted_6$S,
toDisplayString$1(row.relativeVariable),
1
),
createElementVNode(
'i',
{
class: 'iconfont icon-bianjigongcheng',
onClick: ($event) => choiceVariate(row),
},
null,
8,
_hoisted_7$L
),
]),
]),
_: 1,
}
),
createVNode$1(_component_vxe_column, {
field: 'dataType',
title: '\u6570\u636E\u7C7B\u578B',
}),
]),
_: 1,
},
8,
['data']
),
]),
createVNode$1(
unref(_sfc_main$6Q),
{
visible: dialogConfig.value.visible,
noLanguage: true,
filterClientVariables: true,
isAppendToBody: true,
showConfig: true,
configData: {
key: 'field',
data: unref(state$2).nodeDetail.detail.mappings,
currentRow: dialogConfig.value.row,
},
onChangeName: changeName,
onConfirm: submitVariable,
onCancel:
_cache[0] ||
(_cache[0] = ($event) => (dialogConfig.value.visible = false)),
data: {
name: dialogConfig.value.row?.relativeVariable,
},
},
null,
8,
['visible', 'configData', 'data']
),
createVNode$1(
_component_el_dialog,
{
modelValue: deleteConfig.value.visible,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) => (deleteConfig.value.visible = $event)),
title: '\u786E\u8BA4\u5220\u9664',
'custom-class': 'cms-el-dialog',
width: '450px',
'append-to-body': true,
},
{
default: withCtx(() => [
createElementVNode(
'div',
_hoisted_8$J,
toDisplayString$1(
deleteConfig.value.message ||
'\u786E\u8BA4\u540E\uFF0C\u4ECE\u5217\u8868\u4E2D\u5220\u9664\u6570\u636E'
),
1
),
createElementVNode('div', _hoisted_9$G, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick:
_cache[1] ||
(_cache[1] = ($event) =>
(deleteConfig.value.visible = false)),
},
{
default: withCtx(() => [_hoisted_10$F]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: deleteConfirm,
},
{
default: withCtx(() => [_hoisted_11$B]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
),
])
)
}
},
})
var MappingTableVue = /* @__PURE__ */ _export_sfc(_sfc_main$1w, [
['__scopeId', 'data-v-5035464e'],
])
var MappingTable = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: MappingTableVue,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var VarTable_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$V = (n2) => (
pushScopeId('data-v-6aee652a'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1q = { class: 'varTable' }
const _hoisted_2$1j = /* @__PURE__ */ _withScopeId$V(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'header' },
[
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'name' },
'\u53D8\u91CF\u6570\u503C'
),
],
-1
)
)
const _hoisted_3$1c = { class: 'table-contain' }
const _hoisted_4$11 = { style: { 'padding-left': '10px' } }
const _hoisted_5$Y = {
class: 'flex-row',
style: { 'padding-left': '0' },
}
const _hoisted_6$R = { class: 'flex-row-full vxe-cell--label' }
const _hoisted_7$K = {
class: 'flex-row',
style: { 'padding-left': '0' },
}
const _sfc_main$1v = /* @__PURE__ */ defineComponent({
setup(__props2, { expose }) {
let tableData2 = ref([])
async function getData() {
tableData2.value = []
let varList = state$2.nodeDetail.detail?.mappings?.map(
(item2) => item2.relativeVariable
)
let varSet = [...new Set(varList)]
varSet.forEach((item2) => {
tableData2.value.push({
name: item2,
value: Variable.getByName(item2)?.value,
})
})
}
onMounted(() => {
serviceStart()
})
const serviceStart = () => {
const key2 = 'var'
request.post(`/api/v1/project/service/${key2}/start`, { silent: true })
}
const selectRef = ref()
const editActive = ({ row }) => {
row.value = Variable.getByName(row.name)?.value
setTimeout(() => {
selectRef.value.select && selectRef.value.select()
})
}
const changeTableDataMsg = async (row, value2) => {
let res = await request.post('/api/v1/variable/setvalues', {
[row.name]: value2,
})
if (!res.allSuccess) {
toast(res.items[row.name]?.['errorMsg'], 'error')
row.value = Variable.getByName(row.name)?.value
} else {
toast('\u53D8\u91CF\u4E0B\u53D1\u6210\u529F', 'success')
}
}
expose({
getData,
})
return (_ctx, _cache) => {
const _component_vxe_column = resolveComponent('vxe-column')
const _component_el_input = resolveComponent('el-input')
const _component_vxe_table = resolveComponent('vxe-table')
return (
openBlock(),
createElementBlock('div', _hoisted_1$1q, [
_hoisted_2$1j,
createElementVNode('div', _hoisted_3$1c, [
createVNode$1(
_component_vxe_table,
{
class: 'cms-vxe-table cms-vxe-edit-table',
style: { 'min-width': '100%' },
height: '100%',
'show-overflow': 'tooltip',
'row-config': { keyField: 'name' },
'edit-config': { trigger: 'click', mode: 'cell' },
onEditActived: editActive,
'tooltip-config': { showAll: true },
'show-header-overflow': 'tooltip',
'column-config': { resizable: true },
data: tableData2.value,
},
{
default: withCtx(() => [
createVNode$1(
_component_vxe_column,
{
field: 'name',
title: '\u53D8\u91CF\u540D\u79F0',
},
{
default: withCtx(({ row }) => [
createElementVNode(
'div',
_hoisted_4$11,
toDisplayString$1(row.name),
1
),
]),
_: 1,
}
),
createVNode$1(
_component_vxe_column,
{
field: 'value',
title: '\u53D8\u91CF\u503C',
'edit-render': { autofocus: '.el-input__inner' },
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_5$Y, [
createElementVNode(
'div',
_hoisted_6$R,
toDisplayString$1(
unref(Variable).getByName(row.name)?.value
),
1
),
]),
]),
edit: withCtx(({ row }) => [
createElementVNode('div', _hoisted_7$K, [
createVNode$1(
_component_el_input,
{
modelValue: row.value,
'onUpdate:modelValue': ($event) =>
(row.value = $event),
ref: (el2) => {
if (el2) selectRef.value = el2
},
class: 'cms-input flex-row-full',
onChange: ($event) =>
changeTableDataMsg(row, $event),
},
null,
8,
['modelValue', 'onUpdate:modelValue', 'onChange']
),
]),
]),
_: 1,
},
8,
['edit-render']
),
]),
_: 1,
},
8,
['data']
),
]),
])
)
}
},
})
var VarTableVue = /* @__PURE__ */ _export_sfc(_sfc_main$1v, [
['__scopeId', 'data-v-6aee652a'],
])
var VarTable = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: VarTableVue,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var EditorForm_vue_vue_type_style_index_0_scoped_true_lang = ''
var EditorForm_vue_vue_type_style_index_1_lang = ''
const _withScopeId$U = (n2) => (
pushScopeId('data-v-7519c540'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1p = { class: 'connection-card flex-3' }
const _hoisted_2$1i = /* @__PURE__ */ createStaticVNode(
'',
1
)
const _hoisted_3$1b = { class: 'connection-card-content' }
const _hoisted_4$10 = { class: 'header flex' }
const _hoisted_5$X = { class: 'flex-1' }
const _hoisted_6$Q = /* @__PURE__ */ _withScopeId$U(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u52A8\u4F5C', -1)
)
const _hoisted_7$J = /* @__PURE__ */ _withScopeId$U(() =>
/* @__PURE__ */ createElementVNode('div', { class: 'divider' }, null, -1)
)
const _hoisted_8$I = { class: 'connection-detail' }
const _hoisted_9$F = { class: 'flex-2 flex card' }
const _hoisted_10$E = { class: 'flex-3' }
const _hoisted_11$A = { class: 'filter-sort' }
const _hoisted_12$z = { class: 'flex-2' }
const _hoisted_13$u = { class: 'connection-card flex-4' }
const _hoisted_14$r = /* @__PURE__ */ createStaticVNode(
'',
1
)
const _hoisted_15$r = { class: 'connection-card-content' }
const _hoisted_16$r = { class: 'connection-detail' }
const _hoisted_17$n = { class: 'flex-3 flex card' }
const _hoisted_18$l = { class: 'flex-3 database' }
const _hoisted_19$j = { class: 'flex-2 varBlock' }
const _hoisted_20$h = { class: 'varTable' }
const _sfc_main$1u = /* @__PURE__ */ defineComponent({
setup(__props2, { expose }) {
const setSaveStatus2 = (status) => {
app.current.project.moduleSavedStatusMap.Connection = status
}
watch$1(
() => state$2.nodeDetail,
() => {
let isChange =
JSON.stringify(state$2.nodeDetail.detail) ===
state$2.nodeDetail.savedData
setSaveStatus2(
isChange
? Project$2.saveStatusTypes.saved
: Project$2.saveStatusTypes.unsaved
)
},
{
deep: true,
}
)
onMounted(() => {
setSaveStatus2(Project$2.saveStatusTypes.saved)
})
onBeforeRouteLeave(() => {
setSaveStatus2(Project$2.saveStatusTypes.saved)
})
async function saveDetail() {
if (!state$2.activeNode) return
setSaveStatus2(Project$2.saveStatusTypes.saving)
request
.put(
`/api/v1/connection/table/${state$2.activeNode.id}/save`,
state$2.nodeDetail.detail
)
.then((res) => {
if (state$2.activeNode) {
state$2.activeNode.status = res.status
state$2.activeNode.errorMsg = res.lastErrorMsg
}
toast('\u4FDD\u5B58\u6210\u529F', 'success')
update3()
})
.catch(() => {
setSaveStatus2(Project$2.saveStatusTypes.fail)
})
}
function update3() {
varTableRef.value.getData()
}
let databaseTableRef = ref()
let varTableRef = ref()
expose({
update: update3,
})
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
return (
openBlock(),
createElementBlock(
'div',
{
class: 'content flex-column',
key: unref(state$2).activeNode?.id,
},
[
createElementVNode('div', _hoisted_1$1p, [
_hoisted_2$1i,
createElementVNode('div', _hoisted_3$1b, [
createElementVNode('div', _hoisted_4$10, [
createElementVNode('div', _hoisted_5$X, [
_hoisted_6$Q,
createVNode$1(
_component_el_select,
{
class: 'cms-el-select screen-select',
'popper-class': 'cms-el-select__popper',
modelValue: unref(state$2).nodeDetail.detail.actionType,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(state$2).nodeDetail.detail.actionType =
$event)),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(actionList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
value: item2.value,
label: item2.label,
},
null,
8,
['value', 'label']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
createElementVNode('div', null, [
createVNode$1(
_sfc_main$1C,
{
text: '\u89E6\u53D1\u8BBE\u7F6E',
title: '\u89E6\u53D1\u8BBE\u7F6E',
id: unref(state$2).activeNode?.id,
},
null,
8,
['id']
),
_hoisted_7$J,
createElementVNode(
'button',
{
class: 'cms-btn btn-screen-btn primary',
onClick: saveDetail,
},
'\u4FDD\u5B58'
),
]),
]),
createElementVNode('div', _hoisted_8$I, [
createElementVNode('div', _hoisted_9$F, [
createElementVNode('div', _hoisted_10$E, [
createElementVNode('div', _hoisted_11$A, [
createVNode$1(FilterVue),
createVNode$1(SortVue),
]),
]),
createElementVNode('div', _hoisted_12$z, [
createVNode$1(
MappingTableVue,
{ ref: 'mappingTableRef' },
null,
512
),
]),
]),
]),
]),
]),
createElementVNode('div', _hoisted_13$u, [
_hoisted_14$r,
createElementVNode('div', _hoisted_15$r, [
createElementVNode('div', _hoisted_16$r, [
createElementVNode('div', _hoisted_17$n, [
createElementVNode('div', _hoisted_18$l, [
createVNode$1(
DatabaseTableVue,
{
ref_key: 'databaseTableRef',
ref: databaseTableRef,
},
null,
512
),
]),
createElementVNode('div', _hoisted_19$j, [
createElementVNode('div', _hoisted_20$h, [
createVNode$1(
VarTableVue,
{
ref_key: 'varTableRef',
ref: varTableRef,
},
null,
512
),
]),
]),
]),
]),
]),
]),
]
)
)
}
},
})
var EditorForm = /* @__PURE__ */ _export_sfc(_sfc_main$1u, [
['__scopeId', 'data-v-7519c540'],
])
var EditorForm$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: EditorForm,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ModifyRowsConfig_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$1o = { class: 'dialog-content' }
const _hoisted_2$1h = { class: 'form-table' }
const _hoisted_3$1a = { class: 'el-dialog__footer' }
const _hoisted_4$$ = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_5$W = /* @__PURE__ */ createTextVNode('\u786E\u8BA4')
const _sfc_main$1t = /* @__PURE__ */ defineComponent({
props: {
modifyConfig: {
type: Object,
default: () => {
return {
show: false,
}
},
},
},
emits: ['close', 'confirm'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const modifyConfig = reactive(props2.modifyConfig)
const targetList = ref([
{
value: 'couldName',
name: '\u4E91\u53D8\u91CF\u540D\u79F0',
},
])
const changeType = {
1: {
label: '\u6DFB\u52A0\u524D\u7F00',
sub: '\u524D\u7F00',
},
2: {
label: '\u6DFB\u52A0\u540E\u7F00',
sub: '\u540E\u7F00',
},
3: {
label: '\u66FF\u6362',
sub: '\u66FF\u6362',
isReplace: true,
},
}
const formData = reactive({
target: targetList.value[0].value,
type: 1,
prefix: '',
findContent: '',
})
function close2() {
emit2('close')
}
function confirm2() {
const rex = /^[\d\w_?'#().,&%@!-]+$/
const maxStrLength = 64
if (changeType[formData.type].isReplace) {
if (formData.findContent === '') {
toast(
'\u3010\u67E5\u627E\u5185\u5BB9\u3011\u4E0D\u80FD\u4E3A\u7A7A',
'error'
)
return
} else if (!rex.test(formData.findContent)) {
toast(
"\u3010\u67E5\u627E\u5185\u5BB9\u3011\u53EA\u5141\u8BB8\u5B57\u6BCD\u3001\u6570\u5B57\u3001\u4EE5\u53CA_?'#().,&%@!-\u5B57\u7B26\u7684\u7EC4\u5408",
'error'
)
return
}
if (formData.findContent.length >= maxStrLength) {
toast(
`\u3010\u67E5\u627E\u5185\u5BB9\u3011\u7684\u5B57\u7B26\u957F\u5EA6\u4E0D\u8D85\u8FC7${maxStrLength}\u4F4D`,
'error'
)
return
}
}
if (formData.prefix !== '' && !rex.test(formData.prefix)) {
toast(
`\u3010${
changeType[formData.type].sub
}\u3011\u53EA\u5141\u8BB8\u5B57\u6BCD\u3001\u6570\u5B57\u3001\u4EE5\u53CA_?'#().,&%@!-\u5B57\u7B26\u7684\u7EC4\u5408`,
'error'
)
return
}
if (formData.findContent.length >= maxStrLength) {
toast(
`\u3010${
changeType[formData.type].sub
}\u3011\u7684\u5B57\u7B26\u957F\u5EA6\u4E0D\u8D85\u8FC7${maxStrLength}\u4F4D`,
'error'
)
return
}
emit2('confirm', formData)
}
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_input = resolveComponent('el-input')
const _component_el_form = resolveComponent('el-form')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
modelValue: unref(modifyConfig).isShow,
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) => (unref(modifyConfig).isShow = $event)),
title: '\u6279\u91CF\u4FEE\u6539',
width: '530px',
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
key: new Date().toISOString(),
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$1o, [
createVNode$1(
_component_el_form,
{
onSubmit:
_cache[4] ||
(_cache[4] = withModifiers(() => {}, ['prevent'])),
'label-width': '90px',
'label-position': 'left',
class: 'cms-el-form',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$1h, [
createVNode$1(
_component_el_form_item,
{ label: '\u4FEE\u6539\u5BF9\u8C61\uFF1A' },
{
default: withCtx(() => [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select',
'popper-class': 'cms-el-select_check',
modelValue: unref(formData).target,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(formData).target = $event)),
placeholder:
'\u8BF7\u9009\u62E9\u4FEE\u6539\u5BF9\u8C61',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(targetList.value, (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
value: item2.value,
label: item2.name,
},
null,
8,
['value', 'label']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
_: 1,
}
),
createVNode$1(
_component_el_form_item,
{ label: '\u4FEE\u6539\u65B9\u5F0F\uFF1A' },
{
default: withCtx(() => [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select',
'popper-class': 'cms-el-select_check',
modelValue: unref(formData).type,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(formData).type = $event)),
placeholder:
'\u8BF7\u9009\u62E9\u4FEE\u6539\u65B9\u5F0F',
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(changeType, (item2, idx) => {
return createVNode$1(
_component_el_option,
{
key: item2.label,
value: Number(idx),
label: item2.label,
},
null,
8,
['value', 'label']
)
}),
64
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
_: 1,
}
),
changeType[unref(formData).type].isReplace
? (openBlock(),
createBlock(
_component_el_form_item,
{
key: 0,
label: '\u67E5\u627E\u5185\u5BB9',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: unref(formData).findContent,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(formData).findContent =
$event)),
},
null,
8,
['modelValue']
),
]),
_: 1,
}
))
: createCommentVNode('', true),
createVNode$1(
_component_el_form_item,
{
label:
changeType[unref(formData).type].sub + '\uFF1A',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: unref(formData).prefix,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(formData).prefix = $event)),
},
null,
8,
['modelValue']
),
]),
_: 1,
},
8,
['label']
),
]),
]),
_: 1,
}
),
]),
createElementVNode('div', _hoisted_3$1a, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: close2,
},
{
default: withCtx(() => [_hoisted_4$$]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_5$W]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
)
)
}
},
})
var ModifyRowsConfig = /* @__PURE__ */ _export_sfc(_sfc_main$1t, [
['__scopeId', 'data-v-19c7d024'],
])
var ModifyRowsConfig$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ModifyRowsConfig,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var EditorTable_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$T = (n2) => (
pushScopeId('data-v-d335b0a2'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1n = { class: 'content' }
const _hoisted_2$1g = { class: 'screen flex-row' }
const _hoisted_3$19 = { class: 'flex-row-full' }
const _hoisted_4$_ = { class: 'flex-row-full' }
const _hoisted_5$V = {
class: 'flex-row',
style: { 'padding-left': '0' },
}
const _hoisted_6$P = { class: 'flex-row-full vxe-cell--label' }
const _hoisted_7$I = ['onClick']
const _hoisted_8$H = {
class: 'flex-row',
style: { 'padding-left': '0' },
}
const _hoisted_9$E = ['onClick']
const _hoisted_10$D = { class: 'flex-row' }
const _hoisted_11$z = { class: 'flex-row-full max-row-full' }
const _hoisted_12$y = { class: 'flex-row' }
const _hoisted_13$t = { class: 'flex-row-full max-row-full' }
const _hoisted_14$q = { class: 'flex-row' }
const _hoisted_15$q = { class: 'flex-row-full max-row-full' }
const _hoisted_16$q = /* @__PURE__ */ _withScopeId$T(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'dialog-content' },
[
/* @__PURE__ */ createElementVNode(
'div',
null,
'\u786E\u8BA4\u540E\uFF0C\u4ECE\u5217\u8868\u4E2D\u5220\u9664\u9009\u4E2D\u7684\u53D8\u91CF\u3002'
),
],
-1
)
)
const _hoisted_17$m = { class: 'el-dialog__footer' }
const _hoisted_18$k = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_19$i = /* @__PURE__ */ createTextVNode('\u786E\u8BA4')
const _sfc_main$1s = /* @__PURE__ */ defineComponent({
setup(__props2) {
let tableData2 = ref([])
let referTableDate = ref([])
let xTable = ref()
let keyword = ref('')
watch$1(
() => keyword.value,
lodash$2.exports.debounce(() => {
tableData2.value = referTableDate.value.filter(
(item2) =>
item2.couldName.indexOf(keyword.value) >= 0 ||
item2.variableName.indexOf(keyword.value) >= 0 ||
item2.desc.indexOf(keyword.value) >= 0
)
}, 300)
)
let connectionItemId = ref('')
watch$1(
() => state$2.activeNode,
async () => {
if (state$2.activeNode && state$2.activeNode.type === 3) {
connectionItemId.value = state$2.activeNode.id
await init2()
}
},
{
immediate: true,
}
)
async function init2() {
if (!state$2.activeNode) return
let data2 = await request.get(
`/api/v1/connection/${connectionItemId.value}/cloudvariable`
)
tableData2.value = data2
referTableDate.value = [...data2]
xTable.value.loadData(tableData2.value)
}
let variateVisible = reactive({
show: false,
currentRow: null,
isMultiple: false,
cancel() {
variateVisible.show = false
variateVisible.currentRow = null
},
confirm(row) {
let { currentRow, isMultiple: isMultiple2 } = variateVisible
if (isMultiple2) {
row.map((item2) => {
addRow({
couldName: item2.name,
variableName: item2.name,
desc: item2.description,
dataType: Variable.types[item2.type].label,
variableType: item2.tunnelType,
})
})
} else {
const _row = row[0]
if (_row && currentRow !== null) {
if (currentRow.couldName === '') {
currentRow.couldName = _row.name
}
currentRow.variableName = _row.name
currentRow.desc = _row.description
currentRow.dataType = Variable.types[_row.type].label
currentRow.variableType = _row.tunnelType
}
}
variateVisible.cancel()
},
changeName(index2, row) {
const _row = row[0]
tableData2.value[index2].variableName = _row.couldName
tableData2.value[index2].desc = _row.description
tableData2.value[index2].dataType = Variable.types[_row.type].label
tableData2.value[index2].variableType = _row.tunnelType
if (index2 === tableData2.value.length - 1) {
variateVisible.currentRow = tableData2.value[index2]
} else {
variateVisible.currentRow = tableData2.value[index2 + 1]
}
xTable.value.setCurrentRow(variateVisible.currentRow)
},
})
const variateOpen = (row, isMultiple2 = false) => {
variateVisible.show = true
variateVisible.currentRow = row
variateVisible.isMultiple = isMultiple2
}
async function isExists(event, row) {
let val2 = event.target.value
if (val2 === '') return
let res = await Variable.isVariableByName(val2)
if (res.length === 0) {
toast(
'\u53D8\u91CF\u540D\u4E0D\u5B58\u5728\uFF0C\u8BF7\u91CD\u65B0\u8F93\u5165',
'error'
)
return
}
let _var = res[0]
row.variableName = _var.name
row.desc = _var.description
row.dataType = Variable.types[_var.dataType].label
row.variableType = _var.type
}
function addRow(row = {}) {
let _row = Object.assign(
{
id: '',
connectionItemId: connectionItemId.value,
couldName: '',
variableName: '',
desc: '',
dataType: '',
variableType: null,
},
row
)
let newRow = {
id: 'RandomId_' + utils.createRandomId(),
connectionItemId: connectionItemId.value,
couldName: _row.couldName,
variableName: _row.variableName,
desc: _row.desc,
dataType: _row.dataType,
variableType: _row.variableType,
}
tableData2.value.push(newRow)
referTableDate.value.push(newRow)
xTable.value.loadData(tableData2.value)
}
function addBatchRow() {
variateOpen(null, true)
}
const modifyConfig = reactive({
show: false,
confirm(form2) {
if (form2.type === 1) {
for (let i2 = 0; i2 < tableData2.value.length; i2++) {
tableData2.value[i2][form2.target] =
form2.prefix + tableData2.value[i2][form2.target]
}
} else if (form2.type === 2) {
for (let i2 = 0; i2 < tableData2.value.length; i2++) {
tableData2.value[i2][form2.target] =
tableData2.value[i2][form2.target] + form2.prefix
}
} else {
for (let i2 = 0; i2 < tableData2.value.length; i2++) {
tableData2.value[i2][form2.target] = tableData2.value[i2][
form2.target
].replaceAll(form2.findContent, form2.prefix)
}
}
modifyConfig.show = false
},
})
function modifyRows() {
modifyConfig.show = true
}
const tipDialog = reactive({
isShow: false,
msg: '',
type: '',
close: () => {
tipDialog.isShow = false
},
confirm: () => {
tipDialog.type !== '' && dialogFunc[tipDialog.type]()
tipDialog.close()
},
})
const delRows = async () => {
let choiceRows = xTable.value.getCheckboxRecords()
if (choiceRows.length === 0) {
ElMessage({
message: '\u8BF7\u9009\u62E9\u8981\u5220\u9664\u7684\u5B57\u6BB5',
type: 'error',
customClass: 'cms-el-message el-message--error',
})
} else {
tipDialog.isShow = true
tipDialog.msg =
'\u662F\u5426\u5220\u9664\u5DF2\u9009\u62E9\u7684\u5B57\u6BB5'
tipDialog.type = 'delRow'
}
}
const dialogFunc = {
delRow: async () => {
let choiceRows = xTable.value.getCheckboxRecords()
const fields = choiceRows.filter((e2) => !e2.id.startsWith('RandomId_'))
const fieldIds = fields.map((e2) => e2.id)
if (fieldIds.length) {
await request.delete(
`/api/v1/connection/${connectionItemId.value}/cloudvariable`,
{
data: fieldIds,
}
)
}
choiceRows.forEach((item2) => {
tableData2.value.splice(tableData2.value.indexOf(item2), 1)
})
xTable.value.loadData(tableData2.value)
toast('\u5220\u9664\u6210\u529F', 'success')
referTableDate.value = [...tableData2.value]
},
}
let importVarsRef = ref()
async function importVars(e2) {
try {
let fileData = new FormData()
fileData.append('connectionItemId', connectionItemId.value)
fileData.append('files', e2.target.files[0])
await request({
url: `/api/v1/connection/cloudvariable`,
method: 'post',
data: fileData,
})
if (e2.target.files.length === 0) return
ElMessage.success('\u5BFC\u5165\u6210\u529F')
importVarsRef.value.value = ''
await init2()
} catch (e22) {
importVarsRef.value.value = ''
}
}
async function exportVars() {
let res = await request({
responseType: 'blob',
url: `/api/v1/connection/cloudvariable?connectionItemId=${connectionItemId.value}`,
method: 'get',
})
utils.downFile(res, `\u4E91\u4E0A\u53D8\u91CF.xlsx`)
}
async function savedData() {
if (!state$2.activeNode) return
let editRows = xTable.value
.getUpdateRecords()
.filter((row) => !row.id.startsWith('RandomId_'))
let addRows = referTableDate.value.filter((row) =>
row.id.startsWith('RandomId_')
)
let newRows = JSON.parse(JSON.stringify(addRows))
newRows.forEach((item2) => (item2.id = null))
await request.post(
`/api/v1/connection/${connectionItemId.value}/cloudvariable`,
[...editRows, ...newRows]
)
toast('\u4FDD\u5B58\u6210\u529F', 'success')
init2()
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_vxe_column = resolveComponent('vxe-column')
const _component_vxe_table = resolveComponent('vxe-table')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', _hoisted_1$1n, [
createElementVNode('div', _hoisted_2$1g, [
createElementVNode('div', _hoisted_3$19, [
createVNode$1(
_component_el_input,
{
class: 'screen-input cms-el-input-x',
modelValue: keyword.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (keyword.value = $event)),
placeholder:
'\u8BF7\u8F93\u5165\u53D8\u91CF\u540D\u79F0\u3001\u63CF\u8FF0',
clearable: '',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', null, [
createElementVNode('i', {
class: 'iconfont icon-xinjian option-add',
title: '\u6DFB\u52A0',
onClick: _cache[1] || (_cache[1] = ($event) => addRow()),
}),
createElementVNode('i', {
class: 'iconfont icon-piliangtianjia icon-button',
title: '\u6279\u91CF\u6DFB\u52A0',
onClick: addBatchRow,
}),
createElementVNode('i', {
class: 'iconfont icon-piliangxiugai icon-button',
title: '\u6279\u91CF\u4FEE\u6539',
onClick: modifyRows,
}),
createElementVNode('i', {
class: 'iconfont icon-qingchu option-danger',
title: '\u5220\u9664',
onClick: delRows,
}),
createElementVNode('i', {
class: 'iconfont icon-daoru icon-button',
title: '\u5BFC\u5165',
onClick:
_cache[2] || (_cache[2] = () => unref(importVarsRef).click()),
}),
createElementVNode('i', {
class: 'iconfont icon-daochu2 icon-button',
title: '\u5BFC\u51FA',
onClick: exportVars,
}),
createElementVNode(
'button',
{
class: 'cms-btn btn-screen-btn btn-reset',
onClick: savedData,
},
'\u4FDD\u5B58'
),
createElementVNode(
'input',
{
ref_key: 'importVarsRef',
ref: importVarsRef,
style: { display: 'none' },
type: 'file',
accept: '.xlsx',
onChange:
_cache[3] || (_cache[3] = ($event) => importVars($event)),
},
null,
544
),
]),
]),
createElementVNode('div', _hoisted_4$_, [
createVNode$1(
_component_vxe_table,
{
class: 'cms-vxe-table cms-vxe-edit-table',
ref_key: 'xTable',
ref: xTable,
height: '100%',
'row-config': { keyField: 'id' },
data: tableData2.value,
'show-overflow': 'tooltip',
'keep-source': '',
'column-config': { resizable: true },
'edit-config': { trigger: 'click', mode: 'cell' },
'checkbox-config': { highlight: true },
},
{
default: withCtx(() => [
createVNode$1(_component_vxe_column, {
type: 'checkbox',
width: '60',
}),
createVNode$1(_component_vxe_column, {
type: 'seq',
width: '80',
title: '\u5E8F\u53F7',
}),
createVNode$1(
_component_vxe_column,
{
field: 'couldName',
title: '\u4E91\u53D8\u91CF\u540D\u79F0',
'min-width': '180',
'edit-render': { autofocus: '.el-input__inner' },
},
{
edit: withCtx(({ row }) => [
createVNode$1(
_component_el_input,
{
modelValue: row.couldName,
'onUpdate:modelValue': ($event) =>
(row.couldName = $event),
type: 'text',
spellcheck: false,
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
]),
_: 1,
},
8,
['edit-render']
),
createVNode$1(
_component_vxe_column,
{
field: 'variableName',
title: '\u5173\u8054\u53D8\u91CF',
width: '180',
'edit-render': { autofocus: '.el-input__inner' },
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_5$V, [
createElementVNode(
'div',
_hoisted_6$P,
toDisplayString$1(row.variableName),
1
),
createElementVNode(
'i',
{
class:
'iconfont icon-bianjigongcheng btn-edit hover-show',
onClick: withModifiers(
($event) => variateOpen(row),
['stop']
),
},
null,
8,
_hoisted_7$I
),
]),
]),
edit: withCtx(({ row }) => [
createElementVNode('div', _hoisted_8$H, [
createVNode$1(
_component_el_input,
{
modelValue: row.variableName,
'onUpdate:modelValue': ($event) =>
(row.variableName = $event),
class: 'cms-input',
onBlur: ($event) => isExists($event, row),
},
null,
8,
['modelValue', 'onUpdate:modelValue', 'onBlur']
),
createElementVNode(
'i',
{
class:
'iconfont icon-bianjigongcheng btn-edit hover-show',
onClick: withModifiers(
($event) => variateOpen(row),
['stop']
),
},
null,
8,
_hoisted_9$E
),
]),
]),
_: 1,
},
8,
['edit-render']
),
createVNode$1(
_component_vxe_column,
{
field: 'desc',
title: '\u63CF\u8FF0',
'min-width': '180',
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_10$D, [
createElementVNode(
'div',
_hoisted_11$z,
toDisplayString$1(row.desc),
1
),
]),
]),
_: 1,
}
),
createVNode$1(
_component_vxe_column,
{
field: 'dataType',
title: '\u6570\u636E\u7C7B\u578B',
'min-width': '130',
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_12$y, [
createElementVNode(
'div',
_hoisted_13$t,
toDisplayString$1(row.dataType),
1
),
]),
]),
_: 1,
}
),
createVNode$1(
_component_vxe_column,
{
field: 'variableType',
title: '\u53D8\u91CF\u7C7B\u578B',
'min-width': '130',
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_14$q, [
createElementVNode(
'div',
_hoisted_15$q,
toDisplayString$1(
unref(Variable).getTunnelName(row.variableType)
),
1
),
]),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['data']
),
]),
unref(variateVisible).show
? (openBlock(),
createBlock(
unref(_sfc_main$6Q),
{
key: 0,
visible: unref(variateVisible).show,
noLanguage: true,
filterClientVariables: true,
isMultiple: unref(variateVisible).isMultiple,
isAppendToBody: false,
showConfig: !unref(variateVisible).isMultiple,
data: {
id:
unref(variateVisible).currentRow &&
unref(variateVisible).currentRow.id,
name:
unref(variateVisible).currentRow &&
unref(variateVisible).currentRow.variableName,
},
configData: {
data: tableData2.value,
currentRow: unref(variateVisible).currentRow,
key: 'variableName',
},
onChangeName: unref(variateVisible).changeName,
onCancel: unref(variateVisible).cancel,
onConfirm: unref(variateVisible).confirm,
},
null,
8,
[
'visible',
'isMultiple',
'showConfig',
'data',
'configData',
'onChangeName',
'onCancel',
'onConfirm',
]
))
: createCommentVNode('', true),
unref(modifyConfig).show
? (openBlock(),
createBlock(
ModifyRowsConfig,
{
key: 1,
modelValue: unref(modifyConfig).show,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(modifyConfig).show = $event)),
onClose:
_cache[5] ||
(_cache[5] = ($event) =>
(unref(modifyConfig).show = false)),
onConfirm: unref(modifyConfig).confirm,
},
null,
8,
['modelValue', 'onConfirm']
))
: createCommentVNode('', true),
(openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
modelValue: unref(tipDialog).isShow,
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) => (unref(tipDialog).isShow = $event)),
title: '\u786E\u8BA4\u5220\u9664',
width: '450px',
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
key: new Date().toISOString(),
},
{
default: withCtx(() => [
_hoisted_16$q,
createElementVNode('div', _hoisted_17$m, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: unref(tipDialog).close,
},
{
default: withCtx(() => [_hoisted_18$k]),
_: 1,
},
8,
['onClick']
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: unref(tipDialog).confirm,
},
{
default: withCtx(() => [_hoisted_19$i]),
_: 1,
},
8,
['onClick']
),
]),
]),
_: 1,
},
8,
['modelValue']
)),
])
)
}
},
})
var EditorTable = /* @__PURE__ */ _export_sfc(_sfc_main$1s, [
['__scopeId', 'data-v-d335b0a2'],
])
var EditorTable$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: EditorTable,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Connection_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$1m = { class: 'connection' }
const _hoisted_2$1f = {
key: 1,
class: 'connection-content',
}
const _hoisted_3$18 = {
key: 2,
class: 'connection-content',
}
const _sfc_main$1r = /* @__PURE__ */ defineComponent({
setup(__props2) {
const editorFormRef = ref()
const SidebarCom = ref()
const editorTableRef = ref()
const createConnection = () => {
nextTick(() => {
SidebarCom.value?.createConnectionOpen()
})
}
const openCreateData = () => {
SidebarCom.value?.createDataDialog()
}
function nodeClick() {
if (state$2.activeNode?.type === 2) {
editorFormRef.value?.update()
}
}
onUnmounted(() => {
state$2.activeNode = null
})
return (_ctx, _cache) => {
const _directive_track = resolveDirective('track')
return withDirectives(
(openBlock(),
createElementBlock('div', _hoisted_1$1m, [
createVNode$1(
Sidebar$4,
{
ref_key: 'SidebarCom',
ref: SidebarCom,
onNodeClick: nodeClick,
},
null,
512
),
!unref(state$2).activeNode || unref(state$2).activeNode?.type === 1
? (openBlock(),
createBlock(
Empty,
{
key: 0,
title: !unref(state$2).activeNode
? '\u6DFB\u52A0\u4E92\u8054\u9879'
: '\u6DFB\u52A0\u6620\u5C04\u8868',
'is-svg': true,
icon: 'icon-tianjiabianliangzu',
onHightLightPages:
_cache[0] ||
(_cache[0] = ($event) =>
!unref(state$2).activeNode
? createConnection()
: openCreateData()),
},
null,
8,
['title']
))
: unref(state$2).activeNode?.type === 2
? (openBlock(),
createElementBlock('div', _hoisted_2$1f, [
createVNode$1(
EditorForm,
{
ref_key: 'editorFormRef',
ref: editorFormRef,
},
null,
512
),
]))
: unref(state$2).activeNode?.type === 3
? (openBlock(),
createElementBlock('div', _hoisted_3$18, [
createVNode$1(
EditorTable,
{
ref_key: 'editorTableRef',
ref: editorTableRef,
},
null,
512
),
]))
: createCommentVNode('', true),
])),
[
[
_directive_track,
{
moduleType: '\u6807\u51C6\u6A21\u5757',
moduleCode: '\u4E92\u8054',
pageCode: '\u4E92\u8054',
},
'page',
],
]
)
}
},
})
var Connection = /* @__PURE__ */ _export_sfc(_sfc_main$1r, [
['__scopeId', 'data-v-1bee6a2f'],
])
var Connection$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Connection,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const SheetTypeMap = {
1: '\u6587\u4EF6\u5939',
2: '\u53D8\u91CF\u5F52\u6863',
3: '\u6570\u636E\u805A\u5408',
4: '\u4E1A\u52A1\u6570\u636E',
}
const SheetTypeIcon = {
1: 'iconfont menu icon-wenjianjia',
2: 'iconfont icon-chanxiantongji',
3: 'iconfont icon-chanxianjilu',
}
const alarmFiling = {
'f620b182-7169-4563-98af-9d076c186163': '\u62A5\u8B66\u7BA1\u7406',
'a9b66e92-6f83-44e3-ba02-ccbdb0f149c1':
'\u62A5\u8B66\u7BA1\u7406-\u5386\u53F2\u8868',
'e342f0fa-977d-459a-97b2-f4fc4b36c7e4':
'\u62A5\u8B66\u7BA1\u7406-\u5B9E\u65F6\u8868',
}
const state = reactive({
current: {
sheet: void 0,
},
sheets: [],
})
const downMenuData = ref([
{
type: 5,
dataType: 'enable',
name: '\u542F\u7528',
},
{
type: 6,
dataType: 'enable',
name: '\u505C\u7528',
},
{
type: 7,
dataType: 'dataBackup',
name: '\u6570\u636E\u5907\u4EFD',
},
{
type: 8,
dataType: 'dataClear',
name: '\u6570\u636E\u6E05\u9664',
},
{
type: 1,
dataType: 'rename',
name: '\u91CD\u547D\u540D',
},
{
type: 2,
dataType: 'edit',
name: '\u7F16\u8F91',
},
{
type: 3,
dataType: 'copy',
name: '\u521B\u5EFA\u526F\u672C',
},
{
type: 4,
class: 'item_delete',
dataType: 'delete',
name: '\u5220\u9664',
},
])
const storageData = ref({
retentionUnit: 6,
retentionValue: 1,
})
ref({
id: null,
})
window.sheetState = state
const changeField = (data2) => {
let list2 = lodash.cloneDeep(data2)
const recursion = (list22) => {
for (let i2 = 0; i2 < list22.length; i2++) {
let item2 = list22[i2]
if (item2.nodeType) {
item2.type = item2.nodeType
delete item2.nodeType
}
if (item2.children.length) {
recursion(item2.children)
}
}
}
recursion(list2)
return list2
}
const uuid = '00000000-0000-0000-0000-000000000000'
const getSheetById = (id2, sheets) => {
let target2 = {
children: [],
id: '',
name: '',
type: 1,
}
let list2 = sheets || state.sheets
const recursion = (list22) => {
if (target2.id && target2.name) return
for (let i2 = 0; i2 < list22.length; i2++) {
const item2 = list22[i2]
if (id2 === item2.id) {
target2 = item2
break
}
if (item2.children && item2.children.length) {
recursion(item2.children)
}
}
}
recursion(list2)
if (target2.id && target2.name) return target2
return null
}
const getTree = async () => {
return request.get('/api/v1/dataconfig/tree').then((res) => {
const newRes = res?.length ? changeField(res) : []
state.sheets = newRes
})
}
const createRandomNum = () => Math.random().toString().slice(-4)
const createFolder = async (type4, sort3) => {
const current2 = state.current.sheet
const name2 = `\u65B0\u5EFA\u6587\u4EF6\u5939-${createRandomNum()}`
let parent2 = current2?.parentId
const createParentId = (current22) => {
let parentId2 = null
{
parentId2 = parent2 || uuid
}
return parentId2
}
let parentId = createParentId()
let newSheet = {
type: type4,
parentId,
name: name2,
children: [],
id: '',
operations: [],
sort: 1,
}
const res = await request.post(`/api/v1/dataconfig/folder`, {
parentId,
name: name2,
sort: sort3,
})
newSheet.id = res.id
newSheet.operations = res.operationTypes
newSheet.sort = res.sort
return newSheet
}
const createFile = async (type4, sheetName, sort3, relevance) => {
let current2 = state.current.sheet
const createParentId = (current22) => {
let parentId2 = null
{
parentId2 = current22?.parentId || uuid
}
return parentId2
}
let parentId = createParentId(current2)
let newSheet = {
type: type4,
parentId,
name: sheetName,
children: [],
id: '',
functions: [],
operations: [],
sort: 1,
enable: true,
}
let url2 = ''
let params2 = {
folderId: newSheet.parentId,
name: newSheet.name,
sort: sort3,
}
if (type4 === 3) {
params2['tableId'] = relevance?.id
params2['nodeType'] = relevance?.type
url2 = '/api/v1/dataconfig/aggregatetable'
} else if (type4 === 2) {
url2 = '/api/v1/dataconfig/filingtable'
}
const res = await request.post(url2, params2)
newSheet.id = res.id
newSheet.functions = res.functionTypes
newSheet.operations = res.operationTypes
newSheet.sort = res.sort
newSheet.enable = res.enable
return newSheet
}
const copySheet = async (sheet) => {
const node2 = await request.post(`/api/v1/dataconfig/createreplicas`, {
copyFromId: sheet.id,
nodeType: sheet.type,
})
const newSheet = changeField([node2])[0]
return newSheet
}
const renameSheet = async (sheet) => {
const { type: type4, name: name2, id: id2 } = sheet
if (type4 === 3) {
return await request.put(`/api/v1/dataconfig/aggregatetable/${id2}/name`, {
name: name2,
})
} else if (type4 === 2) {
return await request.put(`/api/v1/dataconfig/filingtable/${id2}/name`, {
name: name2,
})
} else {
return await request.put(`/api/v1/dataconfig/folder/${id2}/name`, {
name: name2,
})
}
}
const deleteWarning = async (type4, id2) => {
return await request.get(
`/api/v1/dataconfig/node/deletewarning/${type4}/${id2}`
)
}
const deleteSheet = async (type4, id2) => {
let url2 = ''
if (type4 === 3) {
url2 = `/api/v1/dataconfig/aggregatetable/${id2}`
} else if (type4 === 2) {
url2 = `/api/v1/dataconfig/filingtable/${id2}`
} else {
url2 = `/api/v1/dataconfig/folder/${id2}`
}
return await request.delete(url2)
}
const getAggregatetable = async (id2) => {
return request.get(`/api/v1/dataconfig/aggregatetable/${id2}`).then((res) => {
return res
})
}
const editAggregatetable = async (sheetName, relevance, editNode) => {
const params2 = {
name: sheetName,
}
return await request.put(
`/api/v1/dataconfig/aggregatetable/${editNode.id}`,
params2
)
}
const sortSheet = async (
draggingNodeType,
draggingNodeId,
targetNodeParentId,
targetNodeSort
) => {
return await request.put(
`/api/v1/dataconfig/node/sort/${draggingNodeType}/${draggingNodeId}/${targetNodeSort}/${targetNodeParentId}`
)
}
const enable = async (nodeType, id2) => {
return await request.put(`/api/v1/dataconfig/node/${nodeType}/${id2}/switch`)
}
const dataBackUp = async (nodeType, id2) => {
return request({
url: `/api/v1/dataconfig/node/${nodeType}/${id2}/backup`,
method: 'get',
responseType: 'blob',
})
}
const dataClear = async (nodeType, id2) => {
return await request.get(`/api/v1/dataconfig/node/${nodeType}/${id2}/cleanup`)
}
const setStorageConfig = async (nodeType, id2, data2) => {
return await request.put(
`/api/v1/dataconfig/node/storageconfig/${nodeType}/${id2}`,
data2
)
}
const getStorageConfig = async () => {
const { sheet } = state.current
if (!sheet) return
let storageData2
const res = await request.get(
`/api/v1/dataconfig/node/${sheet.type}/${sheet.id}`
)
if (res) {
const {
enableClear,
retentionValue,
retentionUnit,
backupBeforeClear,
backupPath,
} = res
storageData2 = {
enableClear,
retentionValue,
retentionUnit: retentionUnit === 0 ? 4 : retentionUnit,
backupBeforeClear,
backupPath,
}
} else {
storageData2 = {
enableClear: false,
retentionValue: 1,
retentionUnit: 4,
backupBeforeClear: false,
backupPath: '',
}
}
return storageData2
}
var SheetCreateDialog_vue_vue_type_style_index_0_scoped_true_lang$1 = ''
const _hoisted_1$1l = { class: 'dialog-content' }
const _hoisted_2$1e = { class: 'form-table' }
const _hoisted_3$17 = { class: 'el-dialog__footer' }
const _hoisted_4$Z = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_5$U = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _hoisted_6$O = { class: 'dialog-content' }
const _hoisted_7$H = { class: 'tree mix-tree' }
const _hoisted_8$G = { class: 'title' }
const _hoisted_9$D = { class: 'check' }
const _hoisted_10$C = { class: 'el-dialog__footer' }
const _hoisted_11$y = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_12$x = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$1q = /* @__PURE__ */ defineComponent({
props: ['createing'],
emits: ['createSheet', 'editSheet'],
setup(__props2, { expose, emit: emit2 }) {
let relevance = reactive({
visible: false,
data: null,
node: null,
})
const relevanceOpen = () => {
if (edit2.value) return false
relevance.visible = true
relevance.node = relevance.data
}
const relevanceClose = () => {
relevance.visible = false
}
const relevanceClosed = () => {
filterText.value = ''
}
const relevanceConfirm = async () => {
if (!relevance.node?.id)
return ElMessage.warning('\u8BF7\u9009\u62E9\u6570\u636E\u8868')
relevance.visible = false
relevance.data = relevance.node
}
const mixTreeRef = ref()
const filterText = ref('')
watch$1(filterText, (val2) => {
mixTreeRef.value.filter(val2)
})
const filterNode = (value2, data2) => {
if (!value2) return true
return data2.name.includes(value2)
}
const clickNode = (node2) => {
if (node2.type === 1) return
relevance.node = node2
}
let model = reactive({
visible: false,
type: 1,
name: '',
placeholder: '',
})
const open2 = (type4) => {
model.type = type4
model.visible = true
model.name = ''
model.placeholder = `\u65B0\u5EFA${SheetTypeMap[type4].slice(
-2
)}\u8868-${Math.random().toString().slice(-4)}`
}
const opened = () => {
setTimeout(() => {
let nodeList2 =
document.querySelectorAll('.mix-tree .node-folder') || []
for (let i2 = 0; i2 < nodeList2.length; i2++) {
if (nodeList2[i2] && nodeList2[i2].parentNode) {
nodeList2[i2].parentNode.style.background = '#202124'
}
}
}, 1200)
}
const close2 = () => {
model.visible = false
}
const closed = () => {
if (relevance.data) relevance.data = null
if (relevance.node) relevance.node = null
if (edit2.value) editReset()
}
const confirm2 = async () => {
const type4 = model.type
const name2 = model.name || model.placeholder
const id2 = editNode.value?.id || ''
if (!name2) {
ElMessage.error('\u6587\u4EF6\u540D\u4E0D\u80FD\u4E3A\u7A7A')
return
}
if (rename(id2, name2)) {
ElMessage.error(
'\u6587\u4EF6\u540D\u5DF2\u5B58\u5728\uFF0C\u8BF7\u91CD\u65B0\u8F93\u5165'
)
return
}
if (model.type === 3 && !relevance.data?.id) {
ElMessage.warning(
'\u8BF7\u5148\u9009\u62E9\u9700\u8981\u5173\u8054\u7684\u6570\u636E\u8868'
)
return
}
if (edit2.value) {
emit2('editSheet', type4, name2, relevance.data, editNode.value)
} else {
emit2('createSheet', type4, name2, relevance.data)
}
}
const rename = (curId, newName) => {
let sameName = false
const loop = (sheets) => {
if (sameName) return
for (let i2 = 0, iLen = sheets.length; i2 < iLen; i2++) {
const _sheet = sheets[i2]
if (_sheet.id !== curId && _sheet.name === newName) sameName = true
if (_sheet.children.length) loop(_sheet.children)
}
}
if (state.sheets.length) loop(state.sheets)
return sameName
}
let edit2 = ref(false)
let editNode = ref(null)
const editReset = () => {
edit2.value = false
editNode.value = null
}
const editOpen = async (node2) => {
edit2.value = true
editNode.value = node2
model.visible = true
model.type = node2.type
model.name = node2.name
if (node2.type === 2) {
relevance.data = node2
}
if (node2.type === 3) {
let res = await getAggregatetable(node2.id)
let relevanceNode = getSheetById(res.relativeTableId)
relevance.data = relevanceNode
}
}
expose({
open: open2,
close: close2,
editOpen,
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_form = resolveComponent('el-form')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
const _component_el_icon = resolveComponent('el-icon')
const _component_ElTree = resolveComponent('ElTree')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
_component_el_dialog,
{
modelValue: unref(model).visible,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) => (unref(model).visible = $event)),
'append-to-body': true,
'close-on-click-modal': false,
title: `${unref(SheetTypeMap)[unref(model).type]}\u8868`,
onOpened: opened,
onClosed: closed,
'custom-class': 'cms-el-dialog',
width: '450px',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$1l, [
createVNode$1(
_component_el_form,
{
onSubmit:
_cache[1] ||
(_cache[1] = withModifiers(() => {}, ['prevent'])),
'label-width': '95px',
'label-position': 'left',
class: 'cms-el-form',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$1e, [
createVNode$1(
_component_el_form_item,
{ label: '\u6570\u636E\u8868\u540D\u79F0\uFF1A' },
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: unref(model).name,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(model).name = $event)),
placeholder: unref(model).placeholder,
clearable: '',
class: 'name-input',
},
null,
8,
['modelValue', 'placeholder']
),
]),
_: 1,
}
),
withDirectives(
createVNode$1(
_component_el_form_item,
{ label: '\u539F\u59CB\u8868\u5173\u8054\uFF1A' },
{
default: withCtx(() => [
createVNode$1(
RelevanceButton,
{
label: unref(relevance).data?.name,
disabled: edit2.value,
onClick: relevanceOpen,
},
null,
8,
['label', 'disabled']
),
]),
_: 1,
},
512
),
[[vShow, unref(model).type === 3]]
),
]),
]),
_: 1,
}
),
]),
createElementVNode('div', _hoisted_3$17, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: close2,
},
{
default: withCtx(() => [_hoisted_4$Z]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_5$U]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue', 'title']
),
createVNode$1(
_component_el_dialog,
{
modelValue: unref(relevance).visible,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) => (unref(relevance).visible = $event)),
'append-to-body': true,
'close-on-click-modal': false,
onClosed: relevanceClosed,
draggable: '',
title: '\u9009\u62E9\u6570\u636E\u8868',
'custom-class': 'cms-el-dialog',
width: '450px',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_6$O, [
createVNode$1(
_component_el_input,
{
modelValue: filterText.value,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) => (filterText.value = $event)),
placeholder: '\u5173\u952E\u5B57\u641C\u7D22',
clearable: '',
},
null,
8,
['modelValue']
),
createElementVNode('div', _hoisted_7$H, [
createVNode$1(
_component_ElTree,
{
ref_key: 'mixTreeRef',
ref: mixTreeRef,
class: 'cms_el_tree_x',
'default-expand-all': '',
data: unref(state).sheets,
props: { label: 'name' },
'filter-node-method': filterNode,
onNodeClick: clickNode,
},
{
default: withCtx(({ data: data2 }) => [
createElementVNode(
'div',
{
class: normalizeClass([
'node flex',
{
'node-folder': data2.type === 1,
'node-current':
data2 === unref(relevance).node,
},
]),
style: { width: 'calc(100% - 24px)' },
},
[
createElementVNode(
'i',
{
class: normalizeClass(
unref(SheetTypeIcon)[data2.type]
),
},
null,
2
),
createElementVNode('div', _hoisted_8$G, [
createVNode$1(
EllipsisTooltip,
{
width: '100%',
content: data2.name,
},
null,
8,
['content']
),
]),
createElementVNode('span', _hoisted_9$D, [
data2 === unref(relevance).node
? (openBlock(),
createBlock(
_component_el_icon,
{ key: 0 },
{
default: withCtx(() => [
createVNode$1(unref(select$1)),
]),
_: 1,
}
))
: createCommentVNode('', true),
]),
],
2
),
]),
_: 1,
},
8,
['data']
),
]),
]),
createElementVNode('div', _hoisted_10$C, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: withModifiers(relevanceClose, ['stop']),
},
{
default: withCtx(() => [_hoisted_11$y]),
_: 1,
},
8,
['onClick']
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: withModifiers(relevanceConfirm, ['stop']),
},
{
default: withCtx(() => [_hoisted_12$x]),
_: 1,
},
8,
['onClick']
),
]),
]),
_: 1,
},
8,
['modelValue']
),
])
)
}
},
})
var SheetCreateDialog$2 = /* @__PURE__ */ _export_sfc(_sfc_main$1q, [
['__scopeId', 'data-v-c1c20ce4'],
])
var SheetCreateDialog$3 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: SheetCreateDialog$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Sidebar_vue_vue_type_style_index_0_scoped_true_lang$1 = ''
const _withScopeId$S = (n2) => (
pushScopeId('data-v-5ba3c980'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1k = { class: 'SheetTree' }
const _hoisted_2$1d = /* @__PURE__ */ _withScopeId$S(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
[
/* @__PURE__ */ createElementVNode('i', {
class: 'iconfont icon-shujubiao',
}),
/* @__PURE__ */ createElementVNode('span', null, '\u6570\u636E\u8868'),
],
-1
)
)
const _hoisted_3$16 = { class: 'search flex' }
const _hoisted_4$Y = { class: 'search_tool flex' }
const _hoisted_5$T = /* @__PURE__ */ _withScopeId$S(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-tianjiahuamian',
title: '\u6DFB\u52A0\u6570\u636E\u8868',
},
null,
-1
)
)
const _hoisted_6$N = { class: 'tree' }
const _hoisted_7$G = ['onClick']
const _hoisted_8$F = {
key: 0,
class: 'icon data-status',
'aria-hidden': 'true',
}
const _hoisted_9$C = ['xlink:href']
const _hoisted_10$B = ['onDblclick']
const _hoisted_11$x = {
key: 0,
class: 'btn',
}
const _hoisted_12$w = /* @__PURE__ */ _withScopeId$S(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-gengduo menu' },
null,
-1
)
)
const _hoisted_13$s = {
class: 'dialog-content',
style: { color: '#fff' },
}
const _hoisted_14$p = { class: 'el-dialog__footer' }
const _hoisted_15$p = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_16$p = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$1p = /* @__PURE__ */ defineComponent({
setup(__props2, { expose }) {
watch$1(
() => state.sheets,
() => {
if (!state.sheets.length) {
state.current = {}
}
},
{ deep: true, immediate: true }
)
let createing = ref(false)
let createDropdownRef = ref()
const BackupRef = ref()
const treeRef = ref()
const inputRef = ref()
const sheetCreateRef = ref(null)
const createDialogOpen = (type4) => sheetCreateRef.value?.open(type4)
const tipContent = reactive({
tipVisible: false,
isClear: false,
})
const isOperations = (data2) => {
return data2?.operations?.length ? true : false
}
const isButtonDisplay = (type4, data2) => {
if (type4 === 5 && data2.enable) return false
if (type4 === 6 && !data2.enable) return false
return data2?.operations?.includes(type4) ? true : false
}
const createFolders = async () => {
if (createing.value) return
createing.value = true
const sheet = state.current.sheet
const id2 = sheet?.id.toString()
const treeNode = id2 ? treeRef.value?.getNodeById(id2) : null
if (sheet?.id && treeNode && treeNode.level >= 4) {
ElMessage.warning(
'\u6587\u4EF6\u5D4C\u5957\u4E0D\u80FD\u8D85\u8FC74\u5C42'
)
return
}
let parentNode2 = []
if (!treeNode) {
parentNode2 = state.sheets
} else if (Array.isArray(treeNode.parent)) {
parentNode2 = treeNode.parent
} else {
parentNode2 = treeNode.parent.children
}
let sort3 = parentNode2.indexOf(sheet) + 1 || 0
await createFolder(1, sort3 + 1)
.then((folder2) => {
parentNode2.splice(sort3, 0, folder2)
nextTick(() => {
nodeClick(folder2)
editNode(folder2)
treeRef.value?.clearSelectNodes()
})
})
.finally(() => {
setTimeout(() => (createing.value = false), 700)
})
}
const createSheet = async (type4, sheetName, relevance) => {
if (createing.value) return
createing.value = true
const sheet = state.current.sheet
const id2 = sheet?.id.toString()
const treeNode = id2 ? treeRef.value?.getNodeById(id2) : null
let parentNode2 = []
if (!treeNode) {
parentNode2 = state.sheets
} else if (Array.isArray(treeNode.parent)) {
parentNode2 = treeNode.parent
} else {
parentNode2 = treeNode.parent.children
}
let sort3 = parentNode2.indexOf(sheet) + 1 || 0
createFile(type4, sheetName, sort3 + 1, relevance)
.then((newSheet) => {
parentNode2.splice(sort3, 0, newSheet)
nextTick(async () => {
nodeClick(newSheet)
editNode(newSheet)
sheetCreateRef.value?.close()
treeRef.value?.clearSelectNodes()
})
})
.finally(() => {
createing.value = false
})
}
const editSheet = async (type4, sheetName, relevance, _editNode) => {
if (createing.value) return
createing.value = true
let newSheet = _editNode
if (type4 === 3) {
await editAggregatetable(sheetName, relevance, _editNode).finally(
() => {
createing.value = false
}
)
newSheet.name = sheetName
} else if (type4 === 2) {
let _sheet = { ..._editNode, name: sheetName }
await renameSheet(_sheet).finally(() => {
createing.value = false
})
newSheet.name = sheetName
}
nextTick(() => {
nodeClick(newSheet)
editNode(newSheet)
sheetCreateRef.value?.close()
})
}
let deleteConfig = reactive({
visible: false,
loading: false,
data: null,
message: '',
})
const deleteOpen = (data2) => {
deleteConfig.visible = true
deleteConfig.data = data2
}
const deleteCheck = async () => {
const { type: type4, id: id2 } = deleteConfig.data
const res = await deleteWarning(type4, id2)
deleteConfig.message = res.msg
}
const deleteConfirm = async () => {
if (!deleteConfig.data) return
deleteConfig.loading = true
const { type: type4, id: id2 } = deleteConfig.data
const ids = await deleteSheet(type4, id2).finally(
() => (deleteConfig.loading = false)
)
deleteConfig.visible = false
deleteConfig.message = ''
const updateSelect = (ids2) => {
let current2 = state.current.sheet
if (current2) {
if (ids2.includes(current2.id + '')) {
state.current.sheet = void 0
}
}
}
let delNode = treeRef.value.getNodeById(id2)
if (delNode) {
let parentNode2 = []
if (Array.isArray(delNode.parent)) {
parentNode2 = delNode.parent
} else {
parentNode2 = delNode.parent.children
}
parentNode2.splice(parentNode2.indexOf(deleteConfig.data), 1)
updateSelect(ids)
await getTree()
treeRef.value.update()
}
}
const filterText = ref('')
const handleCommand = (param) => {
let { data: data2, node: node2, type: type4 } = param
const fun = {
rename: () => {
editNode(data2)
},
edit: () => {
sheetCreateRef.value?.editOpen(data2)
},
copy: async () => {
const newSheet = await copySheet(data2)
let parentList = []
if (Array.isArray(node2.parent)) {
parentList = state.sheets
} else {
parentList = node2.parent.children
}
let idx = parentList.findIndex((item2) => item2.id === data2.id)
parentList.splice(idx + 1, 0, newSheet)
editNode(newSheet)
},
delete: () => {
deleteOpen(data2)
},
enable: async () => {
await enable(data2.type, data2.id)
ElMessage.success(
data2.enable
? '\u505C\u7528\u6210\u529F'
: '\u542F\u7528\u6210\u529F'
)
data2.enable = !data2.enable
},
dataBackup: async () => {
if (!client.isClient()) {
const blob = await dataBackUp(data2.type, data2.id)
const name2 = 'Data_Backup-' + dayjs().format('YYYY-MM-DD') + '.csv'
await utils.downFile(blob, name2)
ElMessage.success('\u6570\u636E\u5907\u4EFD\u6210\u529F')
} else {
tipContent.visible = true
tipContent.info =
'\u5373\u5C06\u5BF9\u9009\u4E2D\u6570\u636E\u8868\u7684\u5B58\u50A8\u6570\u636E\u8FDB\u884C\u5907\u4EFD\uFF0C\u8BF7\u9009\u62E9\u5907\u4EFD\u6570\u636E\u7684\u5BFC\u51FA\u8DEF\u5F84'
tipContent.title = '\u6570\u636E\u5907\u4EFD'
tipContent.isClear = false
tipContent.data = data2
BackupRef.value.initConfig({
url: `/api/v1/dataconfig/node/${data2.type}/${data2.id}/backup`,
ext: 'csv',
})
}
},
dataClear: () => {
tipContent.visible = true
tipContent.info =
'\u5373\u5C06\u5BF9\u9009\u4E2D\u6570\u636E\u8868\u7684\u5B58\u50A8\u6570\u636E\u8FDB\u884C\u5168\u90E8\u6E05\u9664\uFF0C\u88AB\u6E05\u9664\u7684\u6570\u636E\u4E0D\u53EF\u6062\u590D\uFF0C\u662F\u5426\u7EE7\u7EED\u5F53\u524D\u64CD\u4F5C'
tipContent.title = '\u6570\u636E\u6E05\u9664'
tipContent.isClear = true
tipContent.data = data2
},
}
fun[type4]()
}
let nodeEditStatus = ref({})
const getNodeEditing = (sheet) => {
return nodeEditStatus.value.id === sheet.id
}
const setNodeEditing = (sheet, boolean) => {
if (boolean) {
nodeEditStatus.value = sheet
} else {
nodeEditStatus.value = {}
}
}
let currentFocusSheet = ref({
children: [],
id: '',
name: '',
parentId: null,
type: 1,
})
const focusEditNode = (sheet) => {
currentFocusSheet.value = lodash$2.exports.cloneDeep(sheet)
}
const blurEditNode = async (sheet) => {
const currentName = currentFocusSheet.value.name
if (sheet.name === currentName) {
setNodeEditing(sheet, false)
return
}
if (!sheet.name) {
ElMessage.error('\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A')
sheet.name = currentName
setNodeEditing(sheet, false)
return
}
let sameName = false
const loop = (sheets) => {
if (sameName) return
for (let i2 = 0, iLen = sheets.length; i2 < iLen; i2++) {
const _sheet = sheets[i2]
if (
_sheet.type !== 1 &&
_sheet.id !== sheet.id &&
_sheet.name === sheet.name
)
sameName = true
if (_sheet.id === sheet.id) _sheet.name = sheet.name
if (_sheet.children.length) loop(_sheet.children)
}
}
if (state.sheets.length && sheet.type !== 1) loop(state.sheets)
if (sameName) {
ElMessage.error(
'\u6587\u4EF6\u540D\u5DF2\u5B58\u5728\uFF0C\u8BF7\u91CD\u65B0\u8F93\u5165'
)
sheet.name = currentName
setNodeEditing(sheet, false)
return
}
await renameSheet(sheet).catch(() => {
sheet.name = currentName
})
setNodeEditing(sheet, false)
}
const editNode = (sheet) => {
setNodeEditing(sheet, true)
nextTick(() => {
setTimeout(() => {
if (!inputRef.value) return
inputRef.value.focus()
inputRef.value.select()
}, 500)
})
}
const allowDrop = (draggingNode, dropNode, dropType) => {
if (dropNode.data.type !== 1 && dropType === 'inner') return false
if (dropNode.level >= 4 && dropType === 'inner') return false
if (dropNode.level >= 4) {
return true
}
return true
}
const handleDrop = async (draggingNode, targetNode, dropType) => {
let index2 = 0
let parentNodeId = targetNode.parent.id
if (dropType === 'inner') {
index2 = targetNode.children.length
parentNodeId = targetNode.id
} else {
if (!Array.isArray(targetNode.parent)) {
index2 = targetNode.parent.children.indexOf(draggingNode.data)
} else {
parentNodeId = '00000000-0000-0000-0000-000000000000'
index2 = state.sheets.indexOf(draggingNode.data)
}
}
await sortSheet(
draggingNode.data.type,
draggingNode.id,
parentNodeId,
index2 + 1
)
draggingNode.data.parentId = targetNode.parent.id
handleNode(draggingNode.data)
}
const handleNode = (data2) => {
state.current.sheet = data2
}
const nodeClick = (sheet) => {
state.current.sheet = sheet
}
const initSelectSheet = () => {
state.current = {}
if (!state.sheets || !state.sheets.length) return
let parent2 = state.sheets[0]
let sheet = {
children: [],
id: '',
parentId: null,
name: '',
type: 1,
}
const recursion = (list2) => {
for (let i2 = 0; i2 < list2.length; i2++) {
if (sheet.name) break
let item2 = list2[i2]
if (item2.type === 2 || item2.type === 3) {
sheet = item2
break
} else if (item2.children && item2.children.length) {
parent2 = item2
recursion(parent2.children)
}
}
}
recursion(state.sheets)
if (sheet) nodeClick(sheet)
}
const onSubmitTip = async () => {
const { type: type4, id: id2 } = tipContent.data
if (tipContent.isClear) {
await dataClear(type4, id2)
ElMessage.success('\u6570\u636E\u6E05\u9664\u6210\u529F')
} else {
BackupRef.value.open(tipContent.data)
}
tipContent.visible = false
}
onMounted(async () => {
await getTree()
initSelectSheet()
})
onUnmounted(async () => {
state.sheets = []
state.current = {}
})
const createDropdownOpen = () => {
createDropdownRef.value.handleOpen()
}
expose({
createDropdownOpen,
})
return (_ctx, _cache) => {
const _component_el_icon = resolveComponent('el-icon')
const _component_el_input = resolveComponent('el-input')
const _component_el_dropdown_item = resolveComponent('el-dropdown-item')
const _component_el_dropdown_menu = resolveComponent('el-dropdown-menu')
const _component_el_dropdown = resolveComponent('el-dropdown')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', _hoisted_1$1k, [
_hoisted_2$1d,
createElementVNode('div', _hoisted_3$16, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x-search',
modelValue: filterText.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (filterText.value = $event)),
},
{
suffix: withCtx(() => [
createVNode$1(
_component_el_icon,
{ class: 'el-input__icon' },
{
default: withCtx(() => [createVNode$1(unref(search))]),
_: 1,
}
),
]),
_: 1,
},
8,
['modelValue']
),
createElementVNode('div', _hoisted_4$Y, [
createVNode$1(
_component_el_dropdown,
{
ref_key: 'createDropdownRef',
ref: createDropdownRef,
trigger: 'click',
onCommand: createDialogOpen,
},
{
dropdown: withCtx(() => [
createVNode$1(_component_el_dropdown_menu, null, {
default: withCtx(() => [
createVNode$1(
_component_el_dropdown_item,
{ command: 2 },
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(unref(SheetTypeMap)[2]),
1
),
]),
_: 1,
}
),
createVNode$1(
_component_el_dropdown_item,
{ command: 3 },
{
default: withCtx(() => [
createTextVNode(
toDisplayString$1(unref(SheetTypeMap)[3]),
1
),
]),
_: 1,
}
),
]),
_: 1,
}),
]),
default: withCtx(() => [_hoisted_5$T]),
_: 1,
},
512
),
createElementVNode('i', {
class: 'iconfont icon-wenjianjia',
onClick: createFolders,
title: '\u6DFB\u52A0\u6587\u4EF6\u5939',
}),
]),
]),
createElementVNode('div', _hoisted_6$N, [
createVNode$1(
VirtualTree,
{
ref_key: 'treeRef',
ref: treeRef,
class: 'cms_el_tree_x',
draggable: '',
'default-expand-all': '',
filterText: filterText.value,
data: unref(state).sheets,
'allow-drop': allowDrop,
onNodeDrop: handleDrop,
},
{
default: withCtx(({ node: node2, data: data2 }) => [
(openBlock(),
createElementBlock(
'div',
{
onClick: () => handleNode(data2),
key: data2.id,
class: normalizeClass([
'node flex node-content',
unref(state).current.sheet &&
unref(state).current.sheet.id == data2.id
? 'node-current'
: '',
]),
},
[
createElementVNode(
'i',
{
class: normalizeClass([
unref(SheetTypeIcon)[data2.type],
'icon-type',
]),
},
[
isOperations(data2) && data2.type > 1
? (openBlock(),
createElementBlock('svg', _hoisted_8$F, [
createElementVNode(
'use',
{
'xlink:href': data2.enable
? '#icon-zhengchang'
: '#icon-jinyong',
},
null,
8,
_hoisted_9$C
),
]))
: createCommentVNode('', true),
],
2
),
createElementVNode(
'div',
{
class: 'title tree-node-label',
onDblclick: () => {
if (isOperations(data2)) editNode(data2)
},
},
[
getNodeEditing(data2)
? (openBlock(),
createBlock(
_component_el_input,
{
key: 0,
ref_key: 'inputRef',
ref: inputRef,
class: 'cms-el-input-x title-input',
modelValue: data2.name,
'onUpdate:modelValue': ($event) =>
(data2.name = $event),
onFocus: ($event) => focusEditNode(data2),
onBlur: ($event) => blurEditNode(data2),
onKeyup:
_cache[1] ||
(_cache[1] = withKeys(
($event) => inputRef.value?.blur(),
['enter']
)),
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
'onFocus',
'onBlur',
]
))
: (openBlock(),
createBlock(
EllipsisTooltip,
{
key: 1,
width: '100%',
content: data2.name,
},
null,
8,
['content']
)),
],
40,
_hoisted_10$B
),
isOperations(data2)
? (openBlock(),
createElementBlock('div', _hoisted_11$x, [
createVNode$1(
_component_el_dropdown,
{
trigger: 'hover',
onCommand: handleCommand,
},
{
dropdown: withCtx(() => [
createVNode$1(
_component_el_dropdown_menu,
null,
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(downMenuData),
(item2) => {
return (
openBlock(),
createElementBlock(
Fragment,
null,
[
isButtonDisplay(
item2.type,
data2
)
? (openBlock(),
createBlock(
_component_el_dropdown_item,
{
key: item2.type,
class:
normalizeClass(
item2.class
),
command: {
type: item2.dataType,
node: node2,
data: data2,
},
},
{
default: withCtx(
() => [
createTextVNode(
toDisplayString$1(
item2.name
),
1
),
]
),
_: 2,
},
1032,
['class', 'command']
))
: createCommentVNode(
'',
true
),
],
64
)
)
}
),
256
)),
]),
_: 2,
},
1024
),
]),
default: withCtx(() => [_hoisted_12$w]),
_: 2,
},
1024
),
]))
: createCommentVNode('', true),
],
10,
_hoisted_7$G
)),
]),
_: 1,
},
8,
['filterText', 'data']
),
]),
createVNode$1(
_component_el_dialog,
{
modelValue: unref(deleteConfig).visible,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(deleteConfig).visible = $event)),
title: '\u786E\u8BA4\u5220\u9664',
'custom-class': 'cms-el-dialog',
width: '450px',
'append-to-body': true,
onOpened: deleteCheck,
},
{
default: withCtx(() => [
createElementVNode(
'div',
_hoisted_13$s,
toDisplayString$1(
unref(deleteConfig).message ||
'\u786E\u8BA4\u540E\uFF0C\u4ECE\u5217\u8868\u4E2D\u5220\u9664\u8282\u70B9'
),
1
),
createElementVNode('div', _hoisted_14$p, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick:
_cache[2] ||
(_cache[2] = ($event) =>
(unref(deleteConfig).visible = false)),
},
{
default: withCtx(() => [_hoisted_15$p]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: deleteConfirm,
},
{
default: withCtx(() => [_hoisted_16$p]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
SheetCreateDialog$2,
{
ref_key: 'sheetCreateRef',
ref: sheetCreateRef,
createing: createing.value,
onCreateSheet: createSheet,
onEditSheet: editSheet,
},
null,
8,
['createing']
),
createVNode$1(
_sfc_main$23,
{
onSubmit: onSubmitTip,
modelValue: unref(tipContent).visible,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) => (unref(tipContent).visible = $event)),
title: unref(tipContent).title,
info: unref(tipContent).info,
},
null,
8,
['modelValue', 'title', 'info']
),
createVNode$1(
_sfc_main$21,
{
ref_key: 'BackupRef',
ref: BackupRef,
},
null,
512
),
])
)
}
},
})
var Sidebar$2 = /* @__PURE__ */ _export_sfc(_sfc_main$1p, [
['__scopeId', 'data-v-5ba3c980'],
])
var Sidebar$3 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Sidebar$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Header_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$1j = { class: 'content flex between' }
const _hoisted_2$1c = { class: 'flex unshrink' }
const _hoisted_3$15 = { class: 'title' }
const _hoisted_4$X = { key: 0 }
const _hoisted_5$S = { key: 1 }
const _hoisted_6$M = /* @__PURE__ */ createTextVNode(
' \u663E\u793A\u6700\u65B0\u6570\u636E '
)
const _hoisted_7$F = /* @__PURE__ */ createTextVNode('\u6761 ')
const _hoisted_8$E = { class: 'flex unshrink' }
const _sfc_main$1o = /* @__PURE__ */ defineComponent({
props: ['edit', 'count', 'loading'],
emits: ['update:edit', 'update:count', 'refresh'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
let _count = ref(props2.count)
const limitPZNumber = () => {
_count.value =
_count.value > 500
? 500
: Number((_count.value + '').replace(/[^\d]/g, ''))
emit2('update:count', _count.value)
}
const tableName = computed(() => {
if (!state.current.sheet) return ''
const operations = state.current.sheet.operations || []
if (operations.length) {
return `${SheetTypeMap[state.current.sheet?.type]}\u8868`
}
return `${SheetTypeMap[4]}\u8868`
})
return (_ctx, _cache) => {
const _component_el_button = resolveComponent('el-button')
const _component_el_input = resolveComponent('el-input')
return (
openBlock(),
createElementBlock('section', _hoisted_1$1j, [
createElementVNode('div', _hoisted_2$1c, [
createElementVNode(
'span',
_hoisted_3$15,
toDisplayString$1(tableName.value),
1
),
__props2.edit
? (openBlock(),
createElementBlock('div', _hoisted_4$X, [
renderSlot(_ctx.$slots, 'operate', {}, void 0, true),
]))
: (openBlock(),
createElementBlock('div', _hoisted_5$S, [
createVNode$1(
_component_el_button,
{
class: 'btn-refresh',
type: 'primary',
text: '',
onClick:
_cache[0] ||
(_cache[0] = ($event) => _ctx.$emit('update')),
},
{
default: withCtx(() => [
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont icon-gengxin',
{ loading: __props2.loading },
]),
},
null,
2
),
_hoisted_6$M,
]),
_: 1,
}
),
createVNode$1(
_component_el_input,
{
class: 'cms-el-input input-refresh',
modelValue: _count.value,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) => (_count.value = $event)),
onInput: limitPZNumber,
onKeyup:
_cache[2] ||
(_cache[2] = withKeys(
($event) => _ctx.$emit('update'),
['enter']
)),
},
null,
8,
['modelValue']
),
_hoisted_7$F,
])),
]),
createElementVNode('div', _hoisted_8$E, [
renderSlot(_ctx.$slots, 'setting', {}, void 0, true),
]),
])
)
}
},
})
var Header = /* @__PURE__ */ _export_sfc(_sfc_main$1o, [
['__scopeId', 'data-v-1ead9b5b'],
])
var Header$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Header,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const handleType = [
'\u6309\u5E74',
'\u6309\u5B63',
'\u6309\u6708',
'\u6309\u5468',
'\u6309\u65E5',
'\u6309\u65F6',
'\u6309\u5206',
'\u6309\u79D2',
'\u76F8\u540C\u503C\u4E3A\u4E00\u7EC4',
'\u81EA\u5B9A\u4E49\u5206\u7EC4',
'\u533A\u95F4\u81EA\u52A8\u5206\u7EC4',
'\u533A\u95F4\u81EA\u5B9A\u4E49\u5206\u7EC4',
'\u53BB\u91CD\u8BA1\u6570',
'\u8BB0\u5F55\u4E2A\u6570',
'\u6700\u65E9\u65F6\u95F4',
'\u6700\u665A\u65F6\u95F4',
'\u5B57\u7B26\u4E32\u62FC\u63A5',
'\u6C42\u548C',
'\u6C42\u5E73\u5747',
'\u6700\u5927\u503C',
'\u6700\u5C0F\u503C',
]
const condition = [
'==',
'!=',
'<',
'<=',
'>',
'>=',
'\u5305\u542B',
'\u4E0D\u5305\u542B',
'\u4E3A\u7A7A',
'\u4E0D\u4E3A\u7A7A',
'\u6628\u5929',
'\u4ECA\u5929',
'\u8FD13\u5929\u5185',
'\u4E0A\u5468',
'\u672C\u5468',
'\u4E0A\u6708',
'\u672C\u6708',
'+\u81EA\u5B9A\u4E49',
]
const fieldType = [
{
type: '',
label: '',
handling: [[], []],
condition: [],
},
{
type: 'icon-number',
label: '\u6570\u503C',
handling: [
[{ value: 9, label: '\u76F8\u540C\u503C\u4E3A\u4E00\u7EC4' }],
[
{ value: 18, label: '\u6C42\u548C' },
{ value: 19, label: '\u6C42\u5E73\u5747' },
{ value: 20, label: '\u6700\u5927\u503C' },
{ value: 21, label: '\u6700\u5C0F\u503C' },
{ value: 13, label: '\u53BB\u91CD\u8BA1\u6570' },
{ value: 14, label: '\u8BB0\u5F55\u4E2A\u6570' },
],
],
condition: [
{ value: 1, label: '==' },
{ value: 2, label: '!=' },
{ value: 3, label: '<' },
{ value: 4, label: '<=' },
{ value: 5, label: '>' },
{ value: 6, label: '>=' },
{ value: 7, label: '\u5305\u542B' },
{ value: 8, label: '\u4E0D\u5305\u542B' },
{ value: 9, label: '\u4E3A\u7A7A' },
{ value: 10, label: '\u4E0D\u4E3A\u7A7A' },
],
},
{
type: 'icon-text',
label: '\u6587\u672C',
handling: [
[{ value: 9, label: '\u76F8\u540C\u503C\u4E3A\u4E00\u7EC4' }],
[
{ value: 13, label: '\u53BB\u91CD\u8BA1\u6570' },
{ value: 14, label: '\u8BB0\u5F55\u4E2A\u6570' },
],
],
condition: [
{ value: 1, label: '==' },
{ value: 2, label: '!=' },
{ value: 3, label: '<' },
{ value: 4, label: '<=' },
{ value: 5, label: '>' },
{ value: 6, label: '>=' },
{ value: 7, label: '\u5305\u542B' },
{ value: 8, label: '\u4E0D\u5305\u542B' },
{ value: 9, label: '\u4E3A\u7A7A' },
{ value: 10, label: '\u4E0D\u4E3A\u7A7A' },
],
},
{
type: 'icon-time',
label: '\u65E5\u671F',
handling: [
[
{ value: 1, label: '\u6309\u5E74' },
{ value: 2, label: '\u6309\u5B63' },
{ value: 3, label: '\u6309\u6708' },
{ value: 4, label: '\u6309\u5468' },
{ value: 5, label: '\u6309\u65E5' },
{ value: 6, label: '\u6309\u65F6' },
{ value: 7, label: '\u6309\u5206' },
{ value: 9, label: '\u76F8\u540C\u503C\u4E3A\u4E00\u7EC4' },
],
[
{ value: 15, label: '\u6700\u65E9\u65F6\u95F4' },
{ value: 16, label: '\u6700\u665A\u65F6\u95F4' },
],
],
condition: [
{ value: 11, label: '\u6628\u5929' },
{ value: 12, label: '\u4ECA\u5929' },
{ value: 13, label: '\u8FD13\u5929' },
{ value: 14, label: '\u4E0A\u5468' },
{ value: 15, label: '\u672C\u5468' },
{ value: 16, label: '\u4E0A\u6708' },
{ value: 17, label: '\u672C\u6708' },
{ value: 18, label: '+\u81EA\u5B9A\u4E49' },
],
},
]
const dialogMsg = {
filter: {
title: '\u8FC7\u6EE4\u6761\u4EF6\u914D\u7F6E',
width: '661px',
},
fieldConfig: {
title: '\u5B57\u6BB5\u914D\u7F6E',
width: '920px',
},
timeRange: {
title: '\u81EA\u5B9A\u4E49\u65F6\u95F4\u8303\u56F4',
width: '356px',
},
batchChoiceField: {
title: '\u6279\u91CF\u9009\u62E9\u5B57\u6BB5',
width: '661px',
},
}
const timeUnitList = [
{ value: 1, label: '\u79D2' },
{ value: 2, label: '\u5206' },
{ value: 3, label: '\u65F6' },
{ value: 4, label: '\u65E5' },
{ value: 5, label: '\u6708' },
{ value: 6, label: '\u5E74' },
]
var ChoiceField_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$R = (n2) => (
pushScopeId('data-v-a782cfe6'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1i = { class: 'page' }
const _hoisted_2$1b = { class: 'cms-el-dialog-table' }
const _hoisted_3$14 = { class: 'header' }
const _hoisted_4$W = /* @__PURE__ */ _withScopeId$R(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u6570\u636E\u8868\u540D\u79F0\uFF1A',
-1
)
)
const _hoisted_5$R = { class: 'default-msg' }
const _hoisted_6$L = { class: 'dialog-content' }
const _hoisted_7$E = { class: 'flex-row sub-padding' }
const _hoisted_8$D = {
class: 'flex-row-full max-row-full',
style: { 'line-height': '21px' },
}
const _hoisted_9$B = { class: 'el-dialog__footer' }
const _hoisted_10$A = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_11$w = /* @__PURE__ */ createTextVNode('\u786E\u8BA4')
const _sfc_main$1n = /* @__PURE__ */ defineComponent({
props: ['archivesConfig'],
emits: ['closeDialog', 'changeField'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const xTable = ref({})
const closeDialog = () => {
emit2('closeDialog')
}
const tableData2 = ref([])
const getAllField = () => {
return request
.get(`/api/v1/dataconfig/filingtable/fields/${state.current.sheet?.id}`)
.then((res) => {
tableData2.value = [...res]
xTable.value.loadData(tableData2.value)
})
}
onMounted(() => {
getAllField().then(() => {
if (!props2.archivesConfig.isMulti) {
let idx = tableData2.value.findIndex(
(item2) => item2.id === props2.archivesConfig.row.filingTableFieldId
)
xTable.value.setRadioRow(tableData2.value[idx])
}
})
})
const confirm2 = () => {
let choiceRows = props2.archivesConfig.isMulti
? xTable.value.getCheckboxRecords()
: xTable.value.getRadioRecord() === null
? []
: [xTable.value.getRadioRecord()]
emit2('changeField', {
add: props2.archivesConfig.isMulti,
fieldList: choiceRows,
row: props2.archivesConfig.row,
})
closeDialog()
}
return (_ctx, _cache) => {
const _component_vxe_column = resolveComponent('vxe-column')
const _component_vxe_table = resolveComponent('vxe-table')
const _component_el_button = resolveComponent('el-button')
return (
openBlock(),
createElementBlock('div', _hoisted_1$1i, [
createElementVNode('div', _hoisted_2$1b, [
createElementVNode('div', _hoisted_3$14, [
_hoisted_4$W,
createElementVNode(
'span',
_hoisted_5$R,
toDisplayString$1(unref(state).current.sheet?.name),
1
),
]),
createElementVNode('div', _hoisted_6$L, [
createVNode$1(
_component_vxe_table,
{
border: '',
class: 'cms-vxe-table cms-vxe-table-min',
style: { 'min-width': '100%' },
ref_key: 'xTable',
ref: xTable,
height: '100%',
'row-config': { keyField: 'id' },
'show-overflow': 'tooltip',
data: tableData2.value,
'column-config': { resizable: true },
'checkbox-config': { highlight: true },
},
{
default: withCtx(() => [
createVNode$1(
_component_vxe_column,
{
type: __props2.archivesConfig.isMulti
? 'checkbox'
: 'radio',
width: '40',
},
null,
8,
['type']
),
createVNode$1(_component_vxe_column, {
title: '\u5B57\u6BB5\u540D\u79F0',
field: 'fieldName',
}),
createVNode$1(
_component_vxe_column,
{
title: '\u5B57\u6BB5\u7C7B\u578B',
field: 'fieldType',
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_7$E, [
createElementVNode(
'i',
{
class: normalizeClass([
'iconType',
unref(fieldType)[row.fieldType || 0]['type'],
]),
style: { 'margin-top': '2px' },
},
null,
2
),
createElementVNode(
'div',
_hoisted_8$D,
toDisplayString$1(
unref(fieldType)[row.fieldType || 0]['label'] ||
''
),
1
),
]),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['data']
),
]),
createElementVNode('div', _hoisted_9$B, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: closeDialog,
},
{
default: withCtx(() => [_hoisted_10$A]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_11$w]),
_: 1,
}
),
]),
]),
])
)
}
},
})
var ChoiceField = /* @__PURE__ */ _export_sfc(_sfc_main$1n, [
['__scopeId', 'data-v-a782cfe6'],
])
var ChoiceField$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ChoiceField,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var FieldConfig_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$Q = (n2) => (
pushScopeId('data-v-462962b4'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1h = { class: 'page' }
const _hoisted_2$1a = { class: 'cms-el-dialog-table' }
const _hoisted_3$13 = { class: 'dialog-content' }
const _hoisted_4$V = /* @__PURE__ */ _withScopeId$Q(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-paixu btn-move' },
null,
-1
)
)
const _hoisted_5$Q = {
class: 'flex-row',
style: { height: '100%', 'line-height': '44px', padding: '0' },
}
const _hoisted_6$K = { class: 'flex-row-full vxe-cell--label isnot-edit' }
const _hoisted_7$D = {
key: 1,
class: 'flex-row sub-padding vxe-cell--label vxe-cell-select',
}
const _hoisted_8$C = { class: 'cover-select' }
const _hoisted_9$A = { class: 'flex-row' }
const _hoisted_10$z = { class: 'flex-row-full vxe-cell--label' }
const _hoisted_11$v = { class: 'flex-row' }
const _hoisted_12$v = /* @__PURE__ */ _withScopeId$Q(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'flex-row-full max-row-full' },
'\u5173\u8054\u53D8\u91CF',
-1
)
)
const _hoisted_13$r = ['onClick']
const _hoisted_14$o = { class: 'flex flex-between' }
const _hoisted_15$o = ['onClick']
const _hoisted_16$o = { class: 'flex flex-between' }
const _hoisted_17$l = ['onClick']
const _hoisted_18$j = /* @__PURE__ */ _withScopeId$Q(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'flex-row-full max-row-full' },
'\u5173\u8054\u5B57\u6BB5',
-1
)
)
const _hoisted_19$h = { class: 'flex-row sub-padding' }
const _hoisted_20$g = { class: 'flex-row-full max-row-full' }
const _hoisted_21$d = ['onClick']
const _hoisted_22$c = { class: 'flex-row' }
const _hoisted_23$9 = ['onClick']
const _hoisted_24$9 = {
key: 0,
class: 'vxe-cell--label vxe-cell-select',
}
const _hoisted_25$8 = {
key: 1,
class: 'flex-row sub-padding',
}
const _hoisted_26$8 = {
key: 1,
class: 'flex-row sub-padding',
}
const _hoisted_27$8 = {
key: 1,
class: 'flex-row sub-padding',
}
const _hoisted_28$7 = {
key: 1,
class: 'flex-row sub-padding',
}
const _hoisted_29$6 = { class: 'el-dialog__footer' }
const _hoisted_30$6 = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_31$5 = /* @__PURE__ */ createTextVNode('\u786E\u8BA4')
const _hoisted_32$5 = /* @__PURE__ */ _withScopeId$Q(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'dialog-content' },
[
/* @__PURE__ */ createElementVNode(
'div',
null,
'\u786E\u8BA4\u540E\uFF0C\u4ECE\u5217\u8868\u4E2D\u5220\u9664\u9009\u4E2D\u7684\u6761\u4EF6\u3002'
),
],
-1
)
)
const _hoisted_33$5 = { class: 'el-dialog__footer' }
const _hoisted_34$3 = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_35$3 = /* @__PURE__ */ createTextVNode('\u786E\u8BA4')
const _sfc_main$1m = /* @__PURE__ */ defineComponent({
props: ['currentID'],
emits: ['closeDialog', 'confirmFieldConfig'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const type4 = computed(() => state.current.sheet?.type)
const xTable = ref({})
const closeDialog = () => {
emit2('closeDialog')
}
const confirm2 = async () => {
if (type4.value === 2) {
await filingConfirm()
} else {
let newTableData = JSON.parse(JSON.stringify(tableData2.value))
newTableData.forEach((item2) => {
if (item2.handleType === null) {
item2.handleType = 0
}
})
await request.put(
`/api/v1/dataconfig/aggregatetable/${props2.currentID}/fields`,
newTableData
)
ElMessage.success('\u4FDD\u5B58\u6210\u529F')
closeDialog()
emit2('confirmFieldConfig')
}
}
const filingConfirm = async () => {
let alert2 = ''
let fields = []
for (let i2 = 0; i2 < tableData2.value.length; i2++) {
const {
id: id2,
fieldName,
fieldType: fieldType2,
formula,
associatedVariable: associatedVariable2,
variateError,
} = tableData2.value[i2]
if (!fieldName && !fieldType2) continue
if (fieldName && !fieldType2) {
alert2 = `\u5B57\u6BB5\u3010${fieldName}\u3011\u9700\u8981 \u5173\u8054\u53D8\u91CF/\u8BA1\u7B97\u516C\u5F0F`
break
}
if (!fieldName && (formula || associatedVariable2)) {
if (formula)
alert2 = `\u516C\u5F0F\u3010${formula}\u3011\u7684\u5B57\u6BB5\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A`
if (associatedVariable2)
alert2 = `\u53D8\u91CF\u3010${associatedVariable2}\u3011\u7684\u5B57\u6BB5\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A`
break
}
if (associatedVariable2 && variateError) {
alert2 = `\u53D8\u91CF\u3010${associatedVariable2}\u3011\u65E0\u6548`
break
}
const t3 = {
fieldName,
fieldType: fieldType2,
associatedVariable: associatedVariable2,
formula,
id: (id2 + '').startsWith('RandomId_') ? '' : id2,
}
fields.push(t3)
}
if (!fields.length && !alert2)
alert2 = '\u8BF7\u5148\u8FDB\u884C\u5B57\u6BB5\u914D\u7F6E'
if (alert2) {
return ElMessage.error(alert2)
}
await request.put(
`/api/v1/dataconfig/filingtable/${props2.currentID}/fields`,
fields
)
ElMessage.success('\u4FDD\u5B58\u6210\u529F')
closeDialog()
emit2('confirmFieldConfig')
}
let tableData2 = ref([])
const addRow = (row) => {
let newRow
if (type4.value === 2) {
newRow = {
id: 'RandomId_' + initUtils.createRandomId(),
fieldType: 0,
fieldName: '',
associatedVariable: '',
formula: '',
}
} else {
newRow = {
id: 'RandomId_' + initUtils.createRandomId(),
fieldName: !row.isTrusted ? row.fieldName : '',
fieldType: !row.isTrusted ? row.fieldType : 0,
filingTableFieldId: !row.isTrusted ? row.id : '',
filingTableFieldName: !row.isTrusted ? row.fieldName : '',
formula: '',
groupType: row.fieldType === 1 ? 2 : 1,
handleType: !row.isTrusted
? fieldType[row.fieldType]['handling'][
(row.fieldType === 1 ? 2 : 1) - 1
][0].value
: null,
}
}
tableData2.value.push(newRow)
xTable.value.loadData(tableData2.value)
}
let choiceRows = ref([])
const changeCheck = () => {
choiceRows.value = xTable.value.getCheckboxRecords()
}
const delRow = async () => {
if (choiceRows.value.length === 0) {
ElMessage({
message: '\u8BF7\u9009\u62E9\u8981\u5220\u9664\u7684\u5B57\u6BB5',
type: 'error',
customClass: 'cms-el-message el-message--error',
})
} else {
tipDialog.isShow = true
tipDialog.msg =
'\u662F\u5426\u5220\u9664\u5DF2\u9009\u62E9\u7684\u5B57\u6BB5'
tipDialog.type = 'delRow'
}
}
const dialogFunc = {
delRow: async () => {
const fields = choiceRows.value.filter(
(e2) => !e2.id.startsWith('RandomId_')
)
const fieldIds = fields.map((e2) => e2.id)
if (fieldIds.length) {
const res = await request.post(
`/api/v1/dataconfig/node/field/delewarning`,
{ fieldIds }
)
if (res.limited) return ElMessage.error(res.msg)
}
choiceRows.value.forEach((item2) => {
tableData2.value.splice(tableData2.value.indexOf(item2), 1)
})
xTable.value.loadData(tableData2.value)
},
}
const tipDialog = reactive({
isShow: false,
msg: '',
type: '',
close: () => {
tipDialog.isShow = false
},
confirm: () => {
tipDialog.type !== '' && dialogFunc[tipDialog.type]()
tipDialog.close()
},
})
const inputFocus = (e2) => {
e2.target?.select()
}
const selectRef = ref()
const editActived = () => {
setTimeout(() => {
selectRef.value?.toggleMenu?.()
selectRef.value?.select?.()
})
}
let isOpenFunctionVariate = ref(false)
let isMultiple2 = ref(false)
let variateVisible = ref(false)
let currentRow = ref(null)
const variateOpen = (row, type22) => {
if (row) row.formula = ''
isOpenFunctionVariate.value = true
isMultiple2.value = false
if (type22 === 'multiple') {
isMultiple2.value = true
}
if (!tableData2.value.length) {
return ElMessage.warning('\u8BF7\u5148\u6DFB\u52A0\u5B57\u6BB5')
} else {
variateVisible.value = true
if (!isMultiple2.value) {
currentRow.value = row || tableData2.value[0]
}
}
}
const variateCancel = () => {
variateVisible.value = false
currentRow.value = null
const t3 = setTimeout(() => {
isOpenFunctionVariate.value = false
clearTimeout(t3)
}, 500)
}
const variateConfirm = (row) => {
if (!isMultiple2.value) {
const _row = row[0]
const index2 = tableData2.value.findIndex(
(d3) => d3.id === currentRow.value.id
)
const data2 = tableData2.value[index2]
data2.associatedVariable = _row ? _row.name : ''
data2.variateId = _row ? _row.id : ''
data2.fieldType = _row ? getTypeProp('variateMatch', _row.type) : 0
data2.variateError = false
if (!data2.fieldName && _row) data2.fieldName = _row.name
xTable.value.setCurrentRow(data2)
} else {
tableData2.value.forEach((item2, index2) => {
if (row[index2]) {
item2.associatedVariable = row[index2].name || ''
item2.variateId = row[index2].id || ''
item2.fieldType = row[index2]
? getTypeProp('variateMatch', row[index2].type)
: 0
item2.variateError = false
if (!item2.fieldName && row[index2])
item2.fieldName = row[index2].name
}
})
}
variateCancel()
}
const variateChangeName = (index2, row) => {
if (tableData2.value[index2].formula) return
const data2 = tableData2.value[index2]
data2.associatedVariable = row[0].name
data2.variateId = row[0].id
data2.fieldType = getTypeProp('variateMatch', row[0].type)
data2.variateError = false
if (!data2.fieldName) data2.fieldName = row[0].name
if (index2 === tableData2.value.length - 1) {
currentRow.value = data2
} else {
currentRow.value = tableData2.value[index2 + 1]
}
xTable.value.setCurrentRow(currentRow.value)
}
const variateSearch = (value2, index2) => {
if (!value2) return
searchVariable('', '', null, value2).then((res) => {
const data2 = tableData2.value[index2]
if (!res.result.length) {
data2.variateId = ''
data2.variateError = true
data2.fieldType = 0
} else {
data2.variateId = res.result[0].id
data2.fieldType = getTypeProp('variateMatch', res.result[0].type)
data2.variateError = false
}
})
}
const dialogConfig = reactive({
isShow: false,
type: '',
hide: () => {
dialogConfig.isShow = false
},
})
const archivesConfig = reactive({
row: {},
isMulti: false,
})
const changeArchives = (row) => {
if (row) row.formula = ''
archivesConfig.isMulti = row.id === void 0
archivesConfig.row = row
dialogConfig.isShow = true
dialogConfig.type = 'batchChoiceField'
}
const changeField2 = ({ add: add2, fieldList, row }) => {
if (add2) {
fieldList.forEach((item2) => {
addRow(item2)
})
} else {
let idx = tableData2.value.findIndex((item2) => item2.id === row.id)
if (fieldList.length === 0 || fieldList[0] === null) return
row.groupType = fieldList[0].fieldType === 1 ? 2 : 1
const data2 = tableData2.value[idx]
data2.handleType =
fieldType[fieldList[0].fieldType]['handling'][
row.groupType - 1
][0].value
data2.fieldName == ''
? (data2.fieldName = fieldList[0].fieldName)
: null
data2.fieldType = fieldList[0].fieldType
data2.filingTableFieldId = fieldList[0].id
data2.filingTableFieldName = fieldList[0].fieldName
xTable.value.updateData()
}
}
const groupTypeChange = (val2, row) => {
if (row.fieldType < 1) return
if (type4.value !== 3) return
const groupType = row.groupType - 1 < 0 ? 0 : row.groupType - 1
row.handleType = fieldType[row.fieldType]['handling'][groupType][0].value
}
const getAllField = async () => {
tableData2.value = await request.get(
`/api/v1/dataconfig/${
type4.value === 2 ? 'filingtable' : 'aggregatetable'
}/${props2.currentID}/fields`
)
}
const formulaConfig = reactive({
visible: false,
index: 0,
currentRow: {},
get field() {
return formulaConfig.currentRow
},
get code() {
return formulaConfig.currentRow.formula
},
get fieldList() {
if (!formulaConfig.visible) {
return null
} else {
return tableData2.value.filter(
(e2) => e2.fieldName && e2.id !== formulaConfig.currentRow.id
)
}
},
})
const formulaConfirm = (code2) => {
const { index: index2 } = formulaConfig
const data2 = tableData2.value[index2]
data2.formula = code2
if (type4.value === 3) {
data2.handleType = 0
data2.groupType = 0
}
if (code2) {
data2.fieldType = data2.fieldType || 2
} else {
data2.fieldType = 0
}
}
const formulaHandle = (row) => {
if (type4.value === 2) {
row.associatedVariable = ''
currentRow.value = row
} else {
row.filingTableFieldName = ''
row.filingTableFieldId = ''
}
formulaConfig.currentRow = row
formulaConfig.visible = true
formulaConfig.index = tableData2.value.indexOf(row)
}
onMounted(() => {
initSortable()
getAllField()
})
let sortable
function initSortable() {
const tables = document.querySelector(
'.drag-table .vxe-table--body tbody'
)
sortable = Sortable.create(tables, {
animation: 150,
disabled: false,
handle: '.btn-move',
filter: '.disabled',
dragClass: 'dragClass',
ghostClass: 'ghostClass',
chosenClass: 'chosenClass',
onEnd: ({ newIndex: newIndex2, oldIndex: oldIndex2 }) => {
const currRow = tableData2.value.splice(oldIndex2, 1)[0]
tableData2.value.splice(newIndex2, 0, currRow)
},
})
}
onUnmounted(() => {
if (sortable) sortable.destroy()
})
return (_ctx, _cache) => {
const _component_vxe_column = resolveComponent('vxe-column')
const _component_el_input = resolveComponent('el-input')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_vxe_table = resolveComponent('vxe-table')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', _hoisted_1$1h, [
createElementVNode('div', _hoisted_2$1a, [
createElementVNode('div', { class: 'header' }, [
createElementVNode(
'button',
{
class: 'cms-btn btn-normal',
onClick: addRow,
},
'\u6DFB\u52A0'
),
createElementVNode(
'button',
{
class: 'cms-btn btn-danger',
onClick: delRow,
},
'\u5220\u9664'
),
]),
createElementVNode('div', _hoisted_3$13, [
createVNode$1(
_component_vxe_table,
{
border: '',
class: 'cms-vxe-edit-table cms-vxe-table-min drag-table',
style: { 'min-width': '100%' },
ref_key: 'xTable',
ref: xTable,
height: '450px',
'row-config': { useKey: true },
'scroll-x': { gt: -1 },
'scroll-y': { gt: -1 },
'show-overflow': 'tooltip',
data: tableData2.value,
'column-config': { resizable: true },
'checkbox-config': { highlight: true },
'edit-config': { trigger: 'click', mode: 'cell' },
onEditActived: editActived,
onCheckboxChange: changeCheck,
onCheckboxAll: changeCheck,
},
{
default: withCtx(() => [
createVNode$1(
_component_vxe_column,
{
title: '',
width: '45',
align: 'center',
},
{
default: withCtx(() => [_hoisted_4$V]),
_: 1,
}
),
createVNode$1(_component_vxe_column, {
type: 'checkbox',
width: '40',
}),
createVNode$1(
_component_vxe_column,
{
title: '\u5B57\u6BB5\u540D\u79F0',
field: 'fieldName',
'edit-render': { autofocus: '.el-input__inner' },
},
{
edit: withCtx(({ row }) => [
createVNode$1(
_component_el_input,
{
modelValue: row.fieldName,
'onUpdate:modelValue': ($event) =>
(row.fieldName = $event),
type: 'text',
spellcheck: false,
onFocus: inputFocus,
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
]),
_: 1,
},
8,
['edit-render']
),
createVNode$1(
_component_vxe_column,
{
title: '\u5B57\u6BB5\u7C7B\u578B',
field: 'fieldType',
'edit-render': { autofocus: '.el-input__inner' },
},
{
default: withCtx(({ row }) => [
row.formula === ''
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: 'covered-td',
onClick:
_cache[0] ||
(_cache[0] = withModifiers(() => {}, [
'stop',
])),
},
[
createElementVNode('div', _hoisted_5$Q, [
createElementVNode('div', _hoisted_6$K, [
createElementVNode(
'i',
{
class: normalizeClass([
'iconType',
unref(fieldType)[row.fieldType][
'type'
],
]),
style: { 'margin-top': '2px' },
},
null,
2
),
createTextVNode(
' ' +
toDisplayString$1(
unref(fieldType)[row.fieldType][
'label'
]
),
1
),
]),
]),
]
))
: (openBlock(),
createElementBlock('div', _hoisted_7$D, [
createVNode$1(
FieldType,
{
type: row.fieldType,
label: '',
class: 'unedit',
},
null,
8,
['type']
),
])),
]),
edit: withCtx(({ row }) => [
createElementVNode('div', _hoisted_8$C, [
createElementVNode('div', _hoisted_9$A, [
createElementVNode('div', _hoisted_10$z, [
createElementVNode(
'i',
{
class: normalizeClass([
'iconType',
unref(fieldType)[row.fieldType || 0][
'type'
],
]),
},
null,
2
),
createElementVNode(
'span',
null,
toDisplayString$1(
unref(fieldType)[row.fieldType]['label']
),
1
),
]),
]),
]),
createVNode$1(
_component_el_select,
{
modelValue: row.fieldType,
'onUpdate:modelValue': ($event) =>
(row.fieldType = $event),
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
teleported: false,
ref: (el2) => {
if (el2) selectRef.value = el2
},
onChange: ($event) =>
groupTypeChange($event, row),
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList([1, 2, 3], (n2) => {
return createVNode$1(
_component_el_option,
{
key: n2,
value: n2,
},
{
default: withCtx(() => [
createElementVNode(
'i',
{
class: normalizeClass([
'iconType',
unref(fieldType)[n2]['type'],
]),
style: { 'line-height': '32px' },
},
null,
2
),
createTextVNode(
' ' +
toDisplayString$1(
unref(fieldType)[n2]['label']
),
1
),
]),
_: 2,
},
1032,
['value']
)
}),
64
)),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue', 'onChange']
),
]),
_: 1,
},
8,
['edit-render']
),
type4.value === 2
? (openBlock(),
createBlock(
_component_vxe_column,
{
key: 0,
field: 'variate',
width: '170',
title: '\u5173\u8054\u53D8\u91CF',
'edit-render': {},
},
{
header: withCtx(({ row }) => [
createElementVNode('div', _hoisted_11$v, [
_hoisted_12$v,
createElementVNode(
'i',
{
class:
'iconfont icon-gengduo1 cms-more-btn',
onClick: ($event) =>
variateOpen(row, 'multiple'),
},
null,
8,
_hoisted_13$r
),
]),
]),
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_14$o, [
createElementVNode(
'span',
{
class: normalizeClass([
'vxe-cell--label',
{ error: row.variateError },
]),
},
toDisplayString$1(row.associatedVariable),
3
),
createElementVNode(
'i',
{
class:
'iconfont icon-bianjigongcheng btn-edit hover-show',
onClick: withModifiers(
($event) => variateOpen(row, 'single'),
['stop']
),
},
null,
8,
_hoisted_15$o
),
]),
]),
edit: withCtx(({ row, rowIndex }) => [
createElementVNode('div', _hoisted_16$o, [
createVNode$1(
_component_el_input,
{
type: 'text',
class: normalizeClass({
error: row.variateError,
}),
modelValue: row.associatedVariable,
'onUpdate:modelValue': ($event) =>
(row.associatedVariable = $event),
onFocus: ($event) => (row.formula = ''),
onBlur: ($event) =>
variateSearch(
row.associatedVariable,
rowIndex
),
},
null,
8,
[
'class',
'modelValue',
'onUpdate:modelValue',
'onFocus',
'onBlur',
]
),
createElementVNode(
'i',
{
class:
'iconfont icon-bianjigongcheng btn-edit',
onClick: withModifiers(
($event) => variateOpen(row, 'single'),
['stop']
),
},
null,
8,
_hoisted_17$l
),
]),
]),
_: 1,
}
))
: createCommentVNode('', true),
type4.value === 3
? (openBlock(),
createBlock(
_component_vxe_column,
{
key: 1,
field: 'filingTableFieldName',
},
{
header: withCtx(() => [
createElementVNode('div', { class: 'flex-row' }, [
_hoisted_18$j,
createElementVNode('i', {
class: 'iconfont icon-gengduo1 cms-more-btn',
onClick: changeArchives,
}),
]),
]),
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_19$h, [
createElementVNode(
'div',
_hoisted_20$g,
toDisplayString$1(row.filingTableFieldName),
1
),
createElementVNode(
'i',
{
class:
'iconfont icon-gengduo1 cms-more-btn hover-show',
onClick: ($event) => changeArchives(row),
},
null,
8,
_hoisted_21$d
),
]),
]),
_: 1,
}
))
: createCommentVNode('', true),
createVNode$1(
_component_vxe_column,
{
title: '\u8BA1\u7B97\u516C\u5F0F',
field: 'formula',
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_22$c, [
createElementVNode(
'span',
{
class: normalizeClass([
'flex-row-full max-row-full vxe-cell--label',
{ error: row.equationError },
]),
style: { width: '100%', color: '#febf72' },
},
toDisplayString$1(row.formula),
3
),
createElementVNode(
'i',
{
class:
'iconfont icon-bianjigongcheng btn-edit hover-show',
onClick: withModifiers(
($event) => formulaHandle(row),
['stop']
),
},
null,
8,
_hoisted_23$9
),
]),
]),
_: 1,
}
),
type4.value === 3
? (openBlock(),
createBlock(
_component_vxe_column,
{
key: 2,
title: '\u5206\u7EC4/\u6C47\u603B',
field: 'groupType',
'edit-render': { autofocus: '.el-input__inner' },
},
{
default: withCtx(({ row }) => [
row.formula === ''
? (openBlock(),
createElementBlock(
'div',
_hoisted_24$9,
toDisplayString$1(
['', '\u5206\u7EC4', '\u6C47\u603B'][
row.groupType
]
),
1
))
: (openBlock(),
createElementBlock(
'div',
_hoisted_25$8,
'\u2014\u2014'
)),
]),
edit: withCtx(({ row }) => [
row.formula === ''
? (openBlock(),
createBlock(
_component_el_select,
{
key: 0,
modelValue: row.groupType,
'onUpdate:modelValue': ($event) =>
(row.groupType = $event),
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
teleported: false,
ref: (el2) => {
if (el2) selectRef.value = el2
},
onChange: ($event) =>
groupTypeChange($event, row),
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
value: 1,
label: '\u5206\u7EC4',
}),
createVNode$1(_component_el_option, {
value: 2,
label: '\u6C47\u603B',
}),
]),
_: 2,
},
1032,
[
'modelValue',
'onUpdate:modelValue',
'onChange',
]
))
: (openBlock(),
createElementBlock(
'div',
_hoisted_26$8,
'\u2014\u2014'
)),
]),
_: 1,
},
8,
['edit-render']
))
: createCommentVNode('', true),
type4.value === 3
? (openBlock(),
createBlock(
_component_vxe_column,
{
key: 3,
title: '\u5904\u7406\u65B9\u5F0F',
field: 'handleType',
width: '130',
'edit-render': { autofocus: '.el-input__inner' },
},
{
default: withCtx(({ row }) => [
row.formula === ''
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: normalizeClass({
'vxe-cell--label vxe-cell-select':
row.formula === '',
}),
},
toDisplayString$1(
unref(handleType)[row.handleType - 1]
),
3
))
: (openBlock(),
createElementBlock(
'div',
_hoisted_27$8,
'\u2014\u2014'
)),
]),
edit: withCtx(({ row }) => [
row.formula === ''
? (openBlock(),
createBlock(
_component_el_select,
{
key: 0,
modelValue: row.handleType,
'onUpdate:modelValue': ($event) =>
(row.handleType = $event),
class: 'cms-el-select',
placeholder: ' ',
'popper-class': 'cms-el-select__popper',
ref: (el2) => {
if (el2) selectRef.value = el2
},
teleported: false,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(fieldType)[row.fieldType][
'handling'
][row.groupType - 1],
(item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
value: item2.value,
label: item2.label,
},
null,
8,
['value', 'label']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue']
))
: (openBlock(),
createElementBlock(
'div',
_hoisted_28$7,
'\u2014\u2014'
)),
]),
_: 1,
},
8,
['edit-render']
))
: createCommentVNode('', true),
]),
_: 1,
},
8,
['data']
),
]),
createElementVNode('div', _hoisted_29$6, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: closeDialog,
},
{
default: withCtx(() => [_hoisted_30$6]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_31$5]),
_: 1,
}
),
]),
]),
(openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
modelValue: unref(tipDialog).isShow,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) => (unref(tipDialog).isShow = $event)),
title: '\u786E\u8BA4\u5220\u9664',
width: '450px',
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
key: new Date().toISOString(),
},
{
default: withCtx(() => [
_hoisted_32$5,
createElementVNode('div', _hoisted_33$5, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: unref(tipDialog).close,
},
{
default: withCtx(() => [_hoisted_34$3]),
_: 1,
},
8,
['onClick']
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: unref(tipDialog).confirm,
},
{
default: withCtx(() => [_hoisted_35$3]),
_: 1,
},
8,
['onClick']
),
]),
]),
_: 1,
},
8,
['modelValue']
)),
(openBlock(),
createBlock(
_component_el_dialog,
{
modelValue: unref(dialogConfig).isShow,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) => (unref(dialogConfig).isShow = $event)),
title: unref(archivesConfig).isMulti
? unref(dialogConfig).type &&
unref(dialogMsg)[unref(dialogConfig).type]['title']
: '\u9009\u62E9\u5B57\u6BB5',
width:
unref(dialogConfig).type &&
unref(dialogMsg)[unref(dialogConfig).type]['width'],
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
key: new Date().toISOString(),
'append-to-body': true,
},
{
default: withCtx(() => [
createVNode$1(
ChoiceField,
{
archivesConfig: unref(archivesConfig),
onCloseDialog: unref(dialogConfig).hide,
onChangeField: changeField2,
},
null,
8,
['archivesConfig', 'onCloseDialog']
),
]),
_: 1,
},
8,
['modelValue', 'title', 'width']
)),
(openBlock(),
createBlock(
FormulaConfigDialog,
{
key: new Date().getTime(),
modelValue: unref(formulaConfig).visible,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(formulaConfig).visible = $event)),
code: unref(formulaConfig).code,
field: unref(formulaConfig).field,
fieldList: unref(formulaConfig).fieldList,
'incompatible-tag':
type4.value === 3 ? 'AggregateTableField' : 'all',
onChange: formulaConfirm,
},
null,
8,
['modelValue', 'code', 'field', 'fieldList', 'incompatible-tag']
)),
isOpenFunctionVariate.value
? (openBlock(),
createBlock(
unref(_sfc_main$6Q),
{
key: 0,
noLanguage: true,
filterClientVariables: true,
visible: variateVisible.value,
isMultiple: isMultiple2.value,
isAppendToBody: true,
showConfig: isMultiple2.value ? false : true,
data: {
id: currentRow.value && currentRow.value.variateId,
name:
currentRow.value && currentRow.value.associatedVariable,
},
configData: {
data: tableData2.value,
currentRow: currentRow.value,
},
onChangeName: variateChangeName,
onCancel: variateCancel,
onConfirm: variateConfirm,
},
null,
8,
['visible', 'isMultiple', 'showConfig', 'data', 'configData']
))
: createCommentVNode('', true),
])
)
}
},
})
var FieldConfig = /* @__PURE__ */ _export_sfc(_sfc_main$1m, [
['__scopeId', 'data-v-462962b4'],
])
var FieldConfig$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: FieldConfig,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var noDataButton_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$P = (n2) => (
pushScopeId('data-v-7e3eb394'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1g = { class: 'btn-content-no-data' }
const _hoisted_2$19 = /* @__PURE__ */ _withScopeId$P(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-danji' },
null,
-1
)
)
const _sfc_main$1l = /* @__PURE__ */ defineComponent({
emits: ['click'],
setup(__props2, { emit: emit2 }) {
const onClick = () => {
emit2('click')
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$1g, [
createElementVNode(
'button',
{
class: 'btn-no-data btn-add-group fix-center warning-tip',
onClick,
},
[
_hoisted_2$19,
createElementVNode('span', null, [
renderSlot(_ctx.$slots, 'default', {}, void 0, true),
]),
]
),
])
)
}
},
})
var noDataButton = /* @__PURE__ */ _export_sfc(_sfc_main$1l, [
['__scopeId', 'data-v-7e3eb394'],
])
var noDataButton$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: noDataButton,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var TriggerSetting_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$O = (n2) => (
pushScopeId('data-v-b01a8df4'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1f = /* @__PURE__ */ createTextVNode(
'\u5F52\u6863\u89E6\u53D1'
)
const _hoisted_2$18 = {
key: 0,
class: 'buttons',
}
const _hoisted_3$12 = /* @__PURE__ */ createTextVNode('\u6DFB\u52A0')
const _hoisted_4$U = { class: 'panels' }
const _hoisted_5$P = { class: 'index' }
const _hoisted_6$J = ['onClick']
const _hoisted_7$C = { class: 'type' }
const _hoisted_8$B = { key: 0 }
const _hoisted_9$z = { class: 'content border' }
const _hoisted_10$y = { class: 'con-row' }
const _hoisted_11$u = /* @__PURE__ */ _withScopeId$O(() =>
/* @__PURE__ */ createElementVNode(
'p',
{ class: 'label' },
'\u89E6\u53D1\u65F6\u95F4\uFF1A',
-1
)
)
const _hoisted_12$u = { class: 'con-row' }
const _hoisted_13$q = /* @__PURE__ */ _withScopeId$O(() =>
/* @__PURE__ */ createElementVNode(
'p',
{ class: 'label marginleft' },
'\u91CD\u590D\u9891\u7387\uFF1A',
-1
)
)
const _hoisted_14$n = { class: 'content' }
const _hoisted_15$n = { class: 'con-row' }
const _hoisted_16$n = /* @__PURE__ */ _withScopeId$O(() =>
/* @__PURE__ */ createElementVNode(
'p',
{ class: 'label' },
'\u540C\u65F6\u6EE1\u8DB3\u6761\u4EF6\uFF1A',
-1
)
)
const _hoisted_17$k = { key: 1 }
const _hoisted_18$i = { class: 'content border' }
const _hoisted_19$g = { class: 'con-row' }
const _hoisted_20$f = /* @__PURE__ */ _withScopeId$O(() =>
/* @__PURE__ */ createElementVNode(
'p',
{ class: 'label' },
'\u89E6\u53D1\u52A8\u4F5C\uFF1A',
-1
)
)
const _hoisted_21$c = { class: 'content' }
const _hoisted_22$b = /* @__PURE__ */ _withScopeId$O(() =>
/* @__PURE__ */ createElementVNode(
'p',
{ class: 'label' },
'\u91CD\u590D\u9891\u7387\uFF1A',
-1
)
)
const _hoisted_23$8 = { key: 2 }
const _hoisted_24$8 = /* @__PURE__ */ _withScopeId$O(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'content border field' },
'\u9ED8\u8BA4\u76D1\u542C\u6570\u636E\u5B57\u6BB5\uFF0C\u5F53\u5B57\u6BB5\u503C\u53D8\u5316\u65F6\u89E6\u53D1',
-1
)
)
const _hoisted_25$7 = { class: 'content' }
const _hoisted_26$7 = { class: 'con-row marginleft' }
const _hoisted_27$7 = /* @__PURE__ */ _withScopeId$O(() =>
/* @__PURE__ */ createElementVNode(
'p',
{ class: 'label' },
'\u540C\u65F6\u6EE1\u8DB3\u6761\u4EF6\uFF1A',
-1
)
)
const _hoisted_28$6 = { key: 3 }
const _hoisted_29$5 = { class: 'content border' }
const _hoisted_30$5 = { class: 'con-row marginleft' }
const _hoisted_31$4 = /* @__PURE__ */ _withScopeId$O(() =>
/* @__PURE__ */ createElementVNode(
'p',
{ class: 'label' },
'\u62A5\u8B66\u70B9\uFF1A',
-1
)
)
const _hoisted_32$4 = { class: 'content' }
const _hoisted_33$4 = { class: 'con-row' }
const _hoisted_34$2 = /* @__PURE__ */ _withScopeId$O(() =>
/* @__PURE__ */ createElementVNode(
'p',
{ class: 'label' },
'\u91CD\u590D\u9891\u7387\uFF1A',
-1
)
)
const _hoisted_35$2 = { key: 4 }
const _hoisted_36$2 = { class: 'content border' }
const _hoisted_37$2 = { class: 'con-row marginleft' }
const _hoisted_38$2 = /* @__PURE__ */ _withScopeId$O(() =>
/* @__PURE__ */ createElementVNode(
'p',
{ class: 'label' },
'\u53D8\u91CF\u70B9\uFF1A',
-1
)
)
const _hoisted_39$1 = /* @__PURE__ */ createTextVNode(
'\u6DFB\u52A0\u5F52\u6863\u89E6\u53D1\u914D\u7F6E'
)
const _hoisted_40$1 = { class: 'el-dialog__footer' }
const _hoisted_41$1 = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_42$1 = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$1k = /* @__PURE__ */ defineComponent({
props: ['id'],
emits: ['confirm'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const TRIGGER = {
effectiveDateTime: '',
dateTime: '',
frequencyValue: 1,
frequencyUnit: 1,
matchAll: false,
condition: '',
conditionDetail: 1,
frequencyCheck: false,
alarmPointIds: [],
variables: [],
}
const TRIGGER_ICON = {
1: 'icon-dingshichufa',
2: 'icon-bianliangchufa',
3: 'icon-ziduanchufa',
4: '',
5: 'icon-baojingchufa1',
6: 'icon-bianhuachufa',
}
let visible = ref(false)
let list2 = ref([])
let cloneDeepList = []
const variateVisible = ref(false)
const changeVariableItem = ref(null)
const query = async () => {
try {
let res = await request.get(
`/api/v1/dataconfig/filingtable/${props2.id}/triggers`
)
if (res.length) {
list2.value = res.map((e2) => {
let { triggerType, effectiveDateTime } = e2
e2.dateTime = effectiveDateTime
? new Date(Date.parse(effectiveDateTime))
: ''
let obj = {
clocking:
triggerType === 1 ? e2 : JSON.parse(JSON.stringify(TRIGGER)),
variable:
triggerType === 2 ? e2 : JSON.parse(JSON.stringify(TRIGGER)),
field:
triggerType === 3 ? e2 : JSON.parse(JSON.stringify(TRIGGER)),
alarm:
triggerType === 5 ? e2 : JSON.parse(JSON.stringify(TRIGGER)),
change:
triggerType === 6 ? e2 : JSON.parse(JSON.stringify(TRIGGER)),
triggerType,
}
return obj
})
} else {
list2.value = []
add2()
}
} catch (error2) {
list2.value = []
add2()
}
cloneDeepList = lodash.cloneDeep(list2.value)
}
const open2 = () => {
visible.value = true
query()
}
const reset2 = () => {
list2.value = cloneDeepList
}
const add2 = () => {
let trigger2 = {
clocking: JSON.parse(JSON.stringify(TRIGGER)),
variable: JSON.parse(JSON.stringify(TRIGGER)),
field: JSON.parse(JSON.stringify(TRIGGER)),
alarm: JSON.parse(JSON.stringify(TRIGGER)),
change: JSON.parse(JSON.stringify(TRIGGER)),
triggerType: 1,
}
list2.value.push(trigger2)
}
const del = (index2) => {
list2.value.splice(index2, 1)
}
const confirm2 = async () => {
const triggers = list2.value.map((e2) => {
let obj = {}
switch (e2.triggerType) {
case 1:
obj = { ...e2.clocking }
break
case 2:
obj = { ...e2.variable }
break
case 3:
obj = { ...e2.field }
break
case 5:
obj = { ...e2.alarm }
delete obj.condition
break
case 6:
obj = { ...e2.change }
break
}
obj.effectiveDateTime = obj.dateTime
? new Date(obj.dateTime).toISOString()
: ''
obj.triggerType = e2.triggerType
delete obj.dateTime
return obj
})
await request
.put(`/api/v1/dataconfig/filingtable/${props2.id}/triggers`, triggers)
.then(() => {
visible.value = false
cloneDeepList = list2.value
ElMessage.success('\u4FDD\u5B58\u6210\u529F')
emit2('confirm')
})
}
let expConfig = ref({
visible: false,
index: 0,
triggerType: '',
code: '',
})
const expConfigHandle = (index2, code2, triggerType, active) => {
if (!active) return
expConfig.value = {
index: index2,
code: code2,
triggerType,
visible: true,
}
}
const expConfigChange = (code2) => {
const { index: index2, triggerType } = expConfig.value
list2.value[index2][triggerType].condition = code2
}
const alarmConfirm = (data2, i2) => {
if (!data2 || !data2.checkedRecords) return
let ids = []
let names2 = []
data2.checkedRecords.forEach((e2) => {
ids.push(e2.alarmPointId)
names2.push(e2.alarmPointName)
})
list2.value[i2].alarm.condition = names2.join('\u3001')
list2.value[i2].alarm.alarmPointIds = ids
}
const onClickVariable = (item2) => {
changeVariableItem.value = item2
variateVisible.value = true
}
const variateChangeName = () => {}
const variateCancel = () => {
variateVisible.value = false
}
const variateConfirm = (selectVariables) => {
variateVisible.value = false
changeVariableItem.value.variables = selectVariables.map(
(variable) => variable.name
)
}
watch$1(
() => props2.id,
() => {
list2.value = []
add2()
},
{ immediate: true }
)
return (_ctx, _cache) => {
const _component_el_button = resolveComponent('el-button')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_date_picker = resolveComponent('el-date-picker')
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
_component_el_button,
{
class: 'cms-btn btn-data',
style: { margin: '0' },
onClick: open2,
},
{
default: withCtx(() => [_hoisted_1$1f]),
_: 1,
}
),
createVNode$1(
_component_el_dialog,
{
modelValue: unref(visible),
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
isRef(visible)
? (visible.value = $event)
: (visible = $event)),
'append-to-body': true,
'close-on-click-modal': false,
onClosed: reset2,
title: '\u5F52\u6863\u89E6\u53D1\u914D\u7F6E',
'custom-class': 'cms-el-dialog',
width: '640px',
},
{
default: withCtx(() => [
createElementVNode(
'div',
{
class: 'dialog-content',
style: normalizeStyle$1(
!list2.value.length && 'height: 100px'
),
},
[
list2.value.length
? (openBlock(),
createElementBlock('section', _hoisted_2$18, [
createVNode$1(
_component_el_button,
{
class: 'cms-btn btn-data-plain success',
onClick: add2,
},
{
default: withCtx(() => [_hoisted_3$12]),
_: 1,
}
),
]))
: createCommentVNode('', true),
createElementVNode('section', _hoisted_4$U, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(list2.value, (item2, i2) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'panel',
key: i2,
},
[
createElementVNode(
'span',
_hoisted_5$P,
toDisplayString$1(i2 + 1),
1
),
createElementVNode(
'button',
{
class: 'iconfont icon-qingchu delete',
onClick: ($event) => del(i2),
},
null,
8,
_hoisted_6$J
),
createElementVNode('div', _hoisted_7$C, [
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont',
TRIGGER_ICON[item2.triggerType],
]),
},
null,
2
),
createVNode$1(
_component_el_select,
{
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
modelValue: item2.triggerType,
'onUpdate:modelValue': ($event) =>
(item2.triggerType = $event),
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
key: '1',
value: 1,
label: '\u5B9A\u65F6\u89E6\u53D1',
}),
createVNode$1(_component_el_option, {
key: '2',
value: 2,
label: '\u53D8\u91CF\u89E6\u53D1',
}),
createVNode$1(_component_el_option, {
key: '3',
value: 3,
label: '\u5B57\u6BB5\u89E6\u53D1',
}),
createVNode$1(_component_el_option, {
key: '5',
value: 5,
label: '\u62A5\u8B66\u89E6\u53D1',
}),
createVNode$1(_component_el_option, {
key: '6',
value: 6,
label: '\u53D8\u5316\u89E6\u53D1',
}),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue']
),
]),
item2.triggerType === 1
? (openBlock(),
createElementBlock('div', _hoisted_8$B, [
createElementVNode('div', _hoisted_9$z, [
createElementVNode(
'div',
_hoisted_10$y,
[
_hoisted_11$u,
createVNode$1(
unref(ElConfigProvider),
{ locale: unref(zhCn) },
{
default: withCtx(() => [
createVNode$1(
_component_el_date_picker,
{
style: { width: '192px' },
modelValue:
item2.clocking.dateTime,
'onUpdate:modelValue': (
$event
) =>
(item2.clocking.dateTime =
$event),
type: 'datetime',
format:
'YYYY-MM-DD HH:mm:ss',
placeholder:
'\u9009\u62E9\u65E5\u671F\u65F6\u95F4',
class:
'cms-el-date-picker',
'popper-class':
'cms-el-picker__popper',
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
]
),
]),
_: 2,
},
1032,
['locale']
),
]
),
createElementVNode(
'div',
_hoisted_12$u,
[
_hoisted_13$q,
createVNode$1(
TriggerFrequency,
{
label: '\u6BCF',
value:
item2.clocking.frequencyValue,
'onUpdate:value': ($event) =>
(item2.clocking.frequencyValue =
$event),
unit: item2.clocking
.frequencyUnit,
'onUpdate:unit': ($event) =>
(item2.clocking.frequencyUnit =
$event),
},
null,
8,
[
'value',
'onUpdate:value',
'unit',
'onUpdate:unit',
]
),
]
),
]),
createElementVNode('div', _hoisted_14$n, [
createElementVNode(
'div',
_hoisted_15$n,
[
createVNode$1(
_component_el_checkbox,
{
modelValue:
item2.clocking.matchAll,
'onUpdate:modelValue': (
$event
) =>
(item2.clocking.matchAll =
$event),
class: 'cms-el-checkbox',
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
]
),
_hoisted_16$n,
createVNode$1(
RelevanceButton,
{
class: 'relevance',
iconfont:
'iconfont icon-bianliang1 fx',
placeholder:
'\u8BF7\u8BBE\u7F6E\u7B5B\u9009\u6761\u4EF6',
label: item2.clocking.condition,
disabled:
!item2.clocking.matchAll,
onClick: ($event) =>
expConfigHandle(
i2,
item2.clocking.condition,
'clocking',
item2.clocking.matchAll
),
},
null,
8,
['label', 'disabled', 'onClick']
),
]
),
]),
]))
: createCommentVNode('', true),
item2.triggerType === 2
? (openBlock(),
createElementBlock('div', _hoisted_17$k, [
createElementVNode('div', _hoisted_18$i, [
createElementVNode(
'div',
_hoisted_19$g,
[
_hoisted_20$f,
createVNode$1(
RelevanceButton,
{
class: 'relevance',
iconfont:
'iconfont icon-bianliang1 fx',
placeholder:
'\u8BF7\u8BBE\u7F6E\u7B5B\u9009\u6761\u4EF6',
label: item2.variable.condition,
onClick: ($event) =>
expConfigHandle(
i2,
item2.variable.condition,
'variable',
true
),
},
null,
8,
['label', 'onClick']
),
createVNode$1(
_component_el_select,
{
class:
'cms-el-select select-change',
'popper-class':
'cms-el-select__popper',
modelValue:
item2.variable
.conditionDetail,
'onUpdate:modelValue': (
$event
) =>
(item2.variable.conditionDetail =
$event),
onChange: (v4) => {
if (v4 == 3)
item2.variable.frequencyCheck = false
},
},
{
default: withCtx(() => [
createVNode$1(
_component_el_option,
{
key: '1',
value: 1,
label: '\u53D8\u771F',
}
),
createVNode$1(
_component_el_option,
{
key: '2',
value: 2,
label: '\u53D8\u5047',
}
),
createVNode$1(
_component_el_option,
{
key: '3',
value: 3,
label:
'\u771F\u5047\u53D8\u5316',
}
),
]),
_: 2,
},
1032,
[
'modelValue',
'onUpdate:modelValue',
'onChange',
]
),
]
),
]),
createElementVNode('div', _hoisted_21$c, [
createElementVNode(
'div',
{
class: normalizeClass([
'con-row',
{
'disabled-trigger':
item2.variable
.conditionDetail == 3,
},
]),
},
[
createVNode$1(
_component_el_checkbox,
{
disabled:
item2.variable
.conditionDetail == 3,
modelValue:
item2.variable.frequencyCheck,
'onUpdate:modelValue': (
$event
) =>
(item2.variable.frequencyCheck =
$event),
class: 'cms-el-checkbox',
},
null,
8,
[
'disabled',
'modelValue',
'onUpdate:modelValue',
]
),
_hoisted_22$b,
createVNode$1(
TriggerFrequency,
{
label: '\u6BCF',
disabled:
!item2.variable
.frequencyCheck ||
item2.variable
.conditionDetail == 3,
value:
item2.variable.frequencyValue,
'onUpdate:value': ($event) =>
(item2.variable.frequencyValue =
$event),
unit: item2.variable
.frequencyUnit,
'onUpdate:unit': ($event) =>
(item2.variable.frequencyUnit =
$event),
},
null,
8,
[
'disabled',
'value',
'onUpdate:value',
'unit',
'onUpdate:unit',
]
),
],
2
),
]),
]))
: createCommentVNode('', true),
item2.triggerType === 3
? (openBlock(),
createElementBlock('div', _hoisted_23$8, [
_hoisted_24$8,
createElementVNode('div', _hoisted_25$7, [
createElementVNode(
'div',
_hoisted_26$7,
[
createVNode$1(
_component_el_checkbox,
{
modelValue:
item2.field.matchAll,
'onUpdate:modelValue': (
$event
) =>
(item2.field.matchAll =
$event),
class: 'cms-el-checkbox',
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
]
),
_hoisted_27$7,
createVNode$1(
RelevanceButton,
{
class: 'relevance',
iconfont:
'iconfont icon-bianliang1 fx',
placeholder:
'\u8BF7\u8BBE\u7F6E\u7B5B\u9009\u6761\u4EF6',
label: item2.field.condition,
disabled: !item2.field.matchAll,
onClick: ($event) =>
expConfigHandle(
i2,
item2.field.condition,
'field',
item2.field.matchAll
),
},
null,
8,
['label', 'disabled', 'onClick']
),
]
),
]),
]))
: createCommentVNode('', true),
item2.triggerType === 5
? (openBlock(),
createElementBlock('div', _hoisted_28$6, [
createElementVNode('div', _hoisted_29$5, [
createElementVNode(
'div',
_hoisted_30$5,
[
_hoisted_31$4,
createVNode$1(
AlarmRecordsConf,
{
isAppendToBody: true,
defaultCheckKey:
item2.alarm.alarmPointIds,
dialogTitle:
'\u8BF7\u9009\u62E9\u62A5\u8B66\u70B9',
type: 'alarmTrigger',
onConfirm: ($event) =>
alarmConfirm($event, i2),
},
{
default: withCtx(() => [
createVNode$1(
RelevanceButton,
{
class: 'relevance',
label:
item2.alarm.condition,
},
null,
8,
['label']
),
]),
_: 2,
},
1032,
['defaultCheckKey', 'onConfirm']
),
]
),
]),
createElementVNode('div', _hoisted_32$4, [
createElementVNode(
'div',
_hoisted_33$4,
[
createVNode$1(
_component_el_checkbox,
{
modelValue:
item2.alarm.frequencyCheck,
'onUpdate:modelValue': (
$event
) =>
(item2.alarm.frequencyCheck =
$event),
class: 'cms-el-checkbox',
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
]
),
_hoisted_34$2,
createVNode$1(
TriggerFrequency,
{
label: '\u6BCF',
disabled:
!item2.alarm.frequencyCheck,
value:
item2.alarm.frequencyValue,
'onUpdate:value': ($event) =>
(item2.alarm.frequencyValue =
$event),
unit: item2.alarm.frequencyUnit,
'onUpdate:unit': ($event) =>
(item2.alarm.frequencyUnit =
$event),
},
null,
8,
[
'disabled',
'value',
'onUpdate:value',
'unit',
'onUpdate:unit',
]
),
]
),
]),
]))
: createCommentVNode('', true),
item2.triggerType === 6
? (openBlock(),
createElementBlock('div', _hoisted_35$2, [
createElementVNode('div', _hoisted_36$2, [
createElementVNode(
'div',
_hoisted_37$2,
[
_hoisted_38$2,
createVNode$1(
RelevanceButton,
{
placeholder:
'\u8BF7\u9009\u62E9\u53D8\u91CF\u70B9',
class: 'relevance',
label: item2.change.variables
.length
? item2.change.variables
: null,
onClick: ($event) =>
onClickVariable(item2.change),
},
null,
8,
['label', 'onClick']
),
]
),
]),
]))
: createCommentVNode('', true),
]
)
)
}),
128
)),
]),
!list2.value.length
? (openBlock(),
createBlock(
noDataButton,
{
key: 1,
onClick: add2,
},
{
default: withCtx(() => [_hoisted_39$1]),
_: 1,
}
))
: createCommentVNode('', true),
],
4
),
createElementVNode('div', _hoisted_40$1, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick:
_cache[0] ||
(_cache[0] = ($event) =>
isRef(visible)
? (visible.value = false)
: (visible = false)),
},
{
default: withCtx(() => [_hoisted_41$1]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_42$1]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
FormulaConfigDialog$2,
{
modelValue: expConfig.value.visible,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) => (expConfig.value.visible = $event)),
code: expConfig.value.code,
filterClientVariables: true,
onChange: expConfigChange,
},
null,
8,
['modelValue', 'code']
),
createVNode$1(
unref(_sfc_main$6Q),
{
visible: variateVisible.value,
noLanguage: true,
filterClientVariables: true,
isMultiple: true,
isAppendToBody: true,
showConfig: false,
onChangeName: variateChangeName,
onCancel: variateCancel,
onConfirm: variateConfirm,
},
null,
8,
['visible']
),
])
)
}
},
})
var TriggerSetting = /* @__PURE__ */ _export_sfc(_sfc_main$1k, [
['__scopeId', 'data-v-b01a8df4'],
])
var TriggerSetting$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: TriggerSetting,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var cacheSetting_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$N = (n2) => (
pushScopeId('data-v-225d7698'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1e = /* @__PURE__ */ createTextVNode(
'\u5B9E\u65F6\u7F13\u5B58'
)
const _hoisted_2$17 = { class: 'dialog-content' }
const _hoisted_3$11 = { class: 'flex-row' }
const _hoisted_4$T = /* @__PURE__ */ _withScopeId$N(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u662F\u5426\u5F00\u542F\u5B9E\u65F6\u7F13\u5B58',
-1
)
)
const _hoisted_5$O = /* @__PURE__ */ _withScopeId$N(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-tishi1 icontips',
title:
'\u82E5\u6570\u636E\u5B9E\u65F6\u8981\u6C42\u9AD8\uFF0C\u53EF\u5F00\u542F\u7F13\u5B58\uFF0C\u4E0E\u6B64\u540C\u65F6\u5360\u7528\u66F4\u591A\u7684
\u7CFB\u7EDF\u8D44\u6E90\uFF1B',
'data-tooltip-placement': 'right-start',
'data-tooltip-raw-content': '',
},
null,
-1
)
)
const _hoisted_6$I = { class: 'con' }
const _hoisted_7$B = /* @__PURE__ */ _withScopeId$N(() =>
/* @__PURE__ */ createElementVNode(
'p',
null,
'\u7F13\u5B58\u5BB9\u91CF\uFF1A',
-1
)
)
const _hoisted_8$A = { class: 'flex-row' }
const _hoisted_9$y = /* @__PURE__ */ _withScopeId$N(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'label right' },
'\u7F13\u5B58\u5BB9\u91CF\u4E0A\u9650',
-1
)
)
const _hoisted_10$x = /* @__PURE__ */ createTextVNode(' \u6761 ')
const _hoisted_11$t = { class: 'flex-row top' }
const _hoisted_12$t = /* @__PURE__ */ _withScopeId$N(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'label right' },
'\u65F6\u95F4\u8DE8\u5EA6\u4E0A\u9650',
-1
)
)
const _hoisted_13$p = { class: 'flex-row top' }
const _hoisted_14$m = /* @__PURE__ */ _withScopeId$N(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'label flex-row' },
[
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u7F13\u5B58\u6E05\u9664:'
),
/* @__PURE__ */ createElementVNode('i', {
class: 'iconfont icon-tishi1 icontips',
title:
'\u7CFB\u7EDF\u9000\u51FA\u540E\u7F13\u5B58\u81EA\u52A8\u6E05\u9664\uFF0C\u8FD0\u884C\u65F6\u95F4\u53EF\u901A\u8FC7\u4FE1\u53F7\u89E6\u53D1\u7F13
\u5B58\u6E05\u9664\u3002',
'data-tooltip-placement': 'right-start',
'data-tooltip-raw-content': '',
}),
],
-1
)
)
const _hoisted_15$m = {
class: 'el-dialog__footer',
style: { 'margin-top': '20px' },
}
const _hoisted_16$m = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_17$j = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$1j = /* @__PURE__ */ defineComponent({
setup(__props2) {
const CACHE_CONFIG = {
enableCache: false,
quantityLimit: '1000',
timeSpanLimit: '',
timeSpanLimitUnit: 1,
clearCache: '',
}
let visible = ref(false)
let data2 = ref({})
data2.value = { ...CACHE_CONFIG }
const query = async () => {
const { sheet } = state.current
if (!sheet) return
const res = await request.get(
`/api/v1/dataconfig/node/${sheet.type}/${sheet.id}`
)
const obj = {}
for (let [key2, value2] of Object.entries(res)) {
if (key2.startsWith('cacheConfig_')) {
key2 = key2.replace(/cacheConfig_/, '')
key2 = key2.replace(key2[0], key2[0].toLowerCase())
if (key2 == 'quantityLimit' && !value2) value2 = '1000'
if (key2 == 'timeSpanLimit' && !value2) value2 = ''
if (key2 == 'timeSpanLimitUnit' && !value2) value2 = 1
obj[key2] = value2
}
}
data2.value = obj
}
const open2 = () => {
visible.value = true
query()
}
const reset2 = () => {
data2.value = { ...CACHE_CONFIG }
}
const confirm2 = async () => {
const { sheet } = state.current
if (!sheet) return
let params2 = {
...data2.value,
...{
quantityLimit: parseInt(data2.value.quantityLimit || 0),
timeSpanLimit: parseInt(data2.value.timeSpanLimit || 0),
},
}
await request
.put(
`/api/v1/dataconfig/node/cacheconfig/${sheet.type}/${sheet.id}`,
params2
)
.then(() => {
visible.value = false
ElMessage.success('\u4FDD\u5B58\u6210\u529F')
})
}
let varDialog = ref(false)
const varDialogConfirm = (rows) => {
varDialog.value = false
data2.value.clearCache = rows && rows[0] ? rows[0].name : ''
}
const inputNumber = (e2, type4) => {
data2.value[type4] = (data2.value[type4] + '').replace(/[^\d.]/g, '')
}
return (_ctx, _cache) => {
const _component_el_button = resolveComponent('el-button')
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_input = resolveComponent('el-input')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
_component_el_button,
{
class: 'cms-btn btn-data',
style: { margin: '0' },
onClick: open2,
},
{
default: withCtx(() => [_hoisted_1$1e]),
_: 1,
}
),
createVNode$1(
_component_el_dialog,
{
modelValue: unref(visible),
'onUpdate:modelValue':
_cache[8] ||
(_cache[8] = ($event) =>
isRef(visible)
? (visible.value = $event)
: (visible = $event)),
'append-to-body': true,
'close-on-click-modal': false,
onClosed: reset2,
title: '\u5B9E\u65F6\u7F13\u5B58',
'custom-class': 'cms-el-dialog',
width: '530px',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$17, [
createElementVNode('section', _hoisted_3$11, [
createVNode$1(
_component_el_checkbox,
{
modelValue: data2.value.enableCache,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(data2.value.enableCache = $event)),
class: 'cms-el-checkbox',
},
null,
8,
['modelValue']
),
_hoisted_4$T,
_hoisted_5$O,
]),
createElementVNode('section', _hoisted_6$I, [
_hoisted_7$B,
createElementVNode('div', _hoisted_8$A, [
_hoisted_9$y,
createVNode$1(
_component_el_input,
{
placeholder: '\u8BF7\u8F93\u5165',
onInput:
_cache[1] ||
(_cache[1] = ($event) =>
inputNumber($event, 'quantityLimit')),
modelValue: data2.value.quantityLimit,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(data2.value.quantityLimit = $event)),
},
null,
8,
['modelValue']
),
_hoisted_10$x,
]),
createElementVNode('div', _hoisted_11$t, [
_hoisted_12$t,
createVNode$1(
_component_el_input,
{
placeholder: '\u8BF7\u8F93\u5165',
onInput:
_cache[3] ||
(_cache[3] = ($event) =>
inputNumber($event, 'timeSpanLimit')),
modelValue: data2.value.timeSpanLimit,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(data2.value.timeSpanLimit = $event)),
},
null,
8,
['modelValue']
),
createVNode$1(
_component_el_select,
{
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
modelValue: data2.value.timeSpanLimitUnit,
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) =>
(data2.value.timeSpanLimitUnit = $event)),
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
key: '1',
value: 1,
label: '\u79D2',
}),
createVNode$1(_component_el_option, {
key: '2',
value: 2,
label: '\u5206',
}),
createVNode$1(_component_el_option, {
key: '3',
value: 3,
label: '\u65F6',
}),
createVNode$1(_component_el_option, {
key: '4',
value: 4,
label: '\u5929',
}),
]),
_: 1,
},
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_13$p, [
_hoisted_14$m,
createVNode$1(
RelevanceButton,
{
style: { width: '248px' },
placeholder: '\u8BF7\u9009\u62E9\u53D8\u91CF',
label: data2.value.clearCache,
onClick:
_cache[6] ||
(_cache[6] = ($event) =>
isRef(varDialog)
? (varDialog.value = true)
: (varDialog = true)),
},
null,
8,
['label']
),
]),
]),
]),
createElementVNode('div', _hoisted_15$m, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick:
_cache[7] ||
(_cache[7] = ($event) =>
isRef(visible)
? (visible.value = false)
: (visible = false)),
},
{
default: withCtx(() => [_hoisted_16$m]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_17$j]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
unref(_sfc_main$6Q),
{
data: { name: data2.value.clearCache },
visible: unref(varDialog),
noLanguage: true,
filterClientVariables: true,
isAppendToBody: true,
onCancel:
_cache[9] ||
(_cache[9] = ($event) =>
isRef(varDialog)
? (varDialog.value = false)
: (varDialog = false)),
onConfirm: varDialogConfirm,
},
null,
8,
['data', 'visible']
),
])
)
}
},
})
var CacheSetting = /* @__PURE__ */ _export_sfc(_sfc_main$1j, [
['__scopeId', 'data-v-225d7698'],
])
var cacheSetting = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: CacheSetting,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var VariableTag_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$M = (n2) => (
pushScopeId('data-v-7b411f20'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1d = { class: 'VariableTag flex-row-column' }
const _hoisted_2$16 = /* @__PURE__ */ _withScopeId$M(() =>
/* @__PURE__ */ createElementVNode('span', { class: 'divider' }, null, -1)
)
const _hoisted_3$10 = /* @__PURE__ */ createTextVNode(
'\u50A8\u5B58\u8BBE\u7F6E'
)
const _hoisted_4$S = /* @__PURE__ */ _withScopeId$M(() =>
/* @__PURE__ */ createElementVNode('span', { class: 'divider' }, null, -1)
)
const _hoisted_5$N = /* @__PURE__ */ _withScopeId$M(() =>
/* @__PURE__ */ createElementVNode('span', { class: 'divider' }, null, -1)
)
const _hoisted_6$H = /* @__PURE__ */ createTextVNode('\u5B57\u6BB5\u914D\u7F6E')
const _hoisted_7$A = { class: 'flex-row-full' }
const _hoisted_8$z = { class: 'vxe-cell--default' }
const _hoisted_9$x = /* @__PURE__ */ _withScopeId$M(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-xinjian' },
null,
-1
)
)
const _hoisted_10$w = [_hoisted_9$x]
const _sfc_main$1i = /* @__PURE__ */ defineComponent({
setup(__props2) {
const visible = ref(false)
let edit2 = ref(false)
let count2 = ref(500)
let loading2 = ref(false)
let id2 = ref(state.current.sheet?.id)
let alarm = computed(() => alarmFiling[id2.value || ''])
const isButtonDisplay = (type4) => {
return state.current.sheet?.functions?.includes(type4) ? true : false
}
const xGrid = ref()
const gridOptions = reactive({
border: false,
height: '100%',
showOverflow: true,
showHeaderOverflow: true,
editConfig: {
trigger: 'click',
mode: 'cell',
enabled: edit2,
},
columnConfig: {
resizable: true,
minWidth: '180',
},
rowConfig: {
isCurrent: true,
},
columns: [],
data: [],
})
const xGridLoadData = (data2, row) => {
gridOptions.data = data2
xGrid.value?.loadData(data2).then(() => {
if (!edit2.value) {
if (gridOptions.height != '100%') gridOptions.height = '100%'
return
}
xGridFooterFixed()
if (row) {
xGrid.value?.scrollToRow(row)
xGrid.value?.setCurrentRow(row)
setTimeout(() => {
xGrid.value?.clearCurrentRow()
}, 1200)
}
})
}
const xGridLoadColumn = (fields) => {
const columnsCreate = (columns2) => {
return columns2.map((item2) => {
let obj = {
field: item2.fieldName,
title: item2.fieldName,
fieldType: item2.fieldType,
}
if (item2.fieldType) {
const t3 = item2.fieldType
obj['slots'] = {}
obj['slots']['header'] = 'header'
if (item2.editable) {
obj['editRender'] = {}
obj['slots']['edit'] = `edit_${t3}`
} else {
obj['slots']['default'] = 'default'
}
obj['params'] = {
type: t3,
editable: item2.editable,
}
}
return obj
})
}
const columns = columnsCreate(fields)
gridOptions.columns = columns
xGrid.value?.loadColumn(columns)
}
let xGridFooter = ref()
const clientHeight =
document.body.clientHeight || document.documentElement.clientHeight
const xGridFooterFixed = () => {
nextTick(() => {
if (xGridFooter.value && gridOptions.height !== '100%') {
const { height, top: top2 } =
xGridFooter.value.getBoundingClientRect()
const maxHeight = height + top2 + 20
if (maxHeight >= clientHeight) gridOptions.height = '100%'
}
})
}
const addRow = () => {
if (!gridOptions.columns?.length) {
return ElMessage({
message:
'\u8BF7\u5148\u70B9\u51FB\u3010\u5B57\u6BB5\u914D\u7F6E\u3011\u6309\u94AE\uFF0C\u914D\u7F6E\u8868\u5934\u5B57\u6BB5',
type: 'warning',
customClass: 'cms-el-message el-message--warning',
})
}
let row = { id: 0 }
gridOptions.columns?.forEach((e2) => {
if (e2.field) {
row[e2.field] =
e2.fieldType === 3
? dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss')
: ''
}
})
let data2 = [...gridOptions.data, row]
xGridLoadData(data2, row)
}
const getFields = () => {
return request
.get(`/api/v1/dataconfig/filingtable/${id2.value}/headers`)
.then((res) => {
xGridLoadColumn(res || [])
})
}
const getData = () => {
return request
.post('/api/v1/data/original', {
dataSetId: state.current.sheet?.id + '',
tableName: state.current.sheet?.name,
limit: count2.value,
})
.then((res) => {
xGridLoadData(res || [])
})
}
const update3 = async () => {
if (!id2.value) return
xGridLoadData([])
xGridLoadColumn([])
await getFields()
await getData()
}
const refresh2 = async () => {
loading2.value = true
try {
await getData()
setTimeout(() => (loading2.value = false), 400)
} catch (error2) {
loading2.value = false
}
}
const dialogConfig = reactive({
isShow: false,
type: '',
hide: () => {
dialogConfig.isShow = false
},
})
const openFieldConfig = () => {
dialogConfig.isShow = true
dialogConfig.type = 'fieldConfig'
}
const onSubmit = async () => {
const type4 = state.current.sheet?.type
const id22 = state.current.sheet?.id
await setStorageConfig(type4, id22, storageData.value)
visible.value = false
ElMessage.success('\u4FDD\u5B58\u6210\u529F')
}
const onOpen = async () => {
visible.value = true
storageData.value = await getStorageConfig()
}
watch$1(
() => state.current.sheet,
() => {
id2.value = state.current.sheet?.id
if (state.current.sheet?.type == 2) {
update3()
}
}
)
onMounted(() => {
id2.value = state.current.sheet?.id
update3()
})
return (_ctx, _cache) => {
const _component_el_button = resolveComponent('el-button')
const _component_el_date_picker = resolveComponent('el-date-picker')
const _component_el_input = resolveComponent('el-input')
const _component_vxe_grid = resolveComponent('vxe-grid')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('section', _hoisted_1$1d, [
createVNode$1(
Header,
{
edit: unref(edit2),
'onUpdate:edit':
_cache[2] ||
(_cache[2] = ($event) =>
isRef(edit2) ? (edit2.value = $event) : (edit2 = $event)),
count: unref(count2),
'onUpdate:count':
_cache[3] ||
(_cache[3] = ($event) =>
isRef(count2) ? (count2.value = $event) : (count2 = $event)),
loading: unref(loading2),
onUpdate: refresh2,
},
{
setting: withCtx(() => [
isButtonDisplay(1)
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
createVNode$1(
CacheSetting,
{
label: '\u5B9E\u65F6\u7F13\u5B58',
id: unref(id2),
},
null,
8,
['id']
),
_hoisted_2$16,
],
64
))
: createCommentVNode('', true),
isButtonDisplay(2)
? (openBlock(),
createElementBlock(
Fragment,
{ key: 1 },
[
createVNode$1(
_component_el_button,
{
class: 'cms-btn btn-data',
style: { margin: '0' },
onClick: onOpen,
},
{
default: withCtx(() => [_hoisted_3$10]),
_: 1,
}
),
(openBlock(),
createBlock(
StorageSetting,
{
key: unref(id2),
modelValue: visible.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(visible.value = $event)),
onConfirm: onSubmit,
data: unref(storageData),
'onUpdate:data':
_cache[1] ||
(_cache[1] = ($event) =>
isRef(storageData)
? (storageData.value = $event)
: null),
currentInfo: unref(state).current.sheet,
},
null,
8,
['modelValue', 'data', 'currentInfo']
)),
_hoisted_4$S,
],
64
))
: createCommentVNode('', true),
isButtonDisplay(3)
? (openBlock(),
createElementBlock(
Fragment,
{ key: 2 },
[
createVNode$1(
TriggerSetting,
{
label: '\u5F52\u6863\u89E6\u53D1',
id: unref(id2),
onConfirm: update3,
},
null,
8,
['id']
),
_hoisted_5$N,
],
64
))
: createCommentVNode('', true),
isButtonDisplay(4)
? (openBlock(),
createBlock(
_component_el_button,
{
key: 3,
class: 'cms-btn btn-data',
onClick: openFieldConfig,
style: { margin: '0' },
},
{
default: withCtx(() => [_hoisted_6$H]),
_: 1,
}
))
: createCommentVNode('', true),
]),
_: 1,
},
8,
['edit', 'count', 'loading']
),
createElementVNode('div', _hoisted_7$A, [
createVNode$1(
_component_vxe_grid,
mergeProps(
{
class: [
'cms-vxe-table cms-vxe-edit-table',
{ unedit: !unref(edit2) },
],
ref_key: 'xGrid',
ref: xGrid,
style: { 'min-width': '100%', height: '100%' },
},
unref(gridOptions)
),
createSlots(
{
header: withCtx(({ column }) => [
!unref(alarm)
? (openBlock(),
createBlock(
FieldType,
{
key: 0,
type: column.params.type,
style: { display: 'inline' },
},
null,
8,
['type']
))
: createCommentVNode('', true),
createTextVNode(' ' + toDisplayString$1(column.title), 1),
]),
edit_date: withCtx(({ row, column }) => [
createVNode$1(
unref(ElConfigProvider),
{ locale: unref(zhCn) },
{
default: withCtx(() => [
createVNode$1(
_component_el_date_picker,
{
modelValue: row[column.field],
'onUpdate:modelValue': ($event) =>
(row[column.field] = $event),
type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss',
'value-format': 'YYYY-MM-DD HH:mm:ss',
placeholder:
'\u9009\u62E9\u65E5\u671F\u65F6\u95F4',
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
]),
_: 2,
},
1032,
['locale']
),
]),
edit_text: withCtx(({ row, column }) => [
createVNode$1(
_component_el_input,
{
type: 'text',
modelValue: row[column.field],
'onUpdate:modelValue': ($event) =>
(row[column.field] = $event),
placeholder: '\u8BF7\u8F93\u5165\u6587\u672C',
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
]),
edit_num: withCtx(({ row, column }) => [
createVNode$1(
_component_el_input,
{
type: 'number',
step: false,
modelValue: row[column.field],
'onUpdate:modelValue': ($event) =>
(row[column.field] = $event),
placeholder: '\u8BF7\u8F93\u5165\u6570\u503C',
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
]),
default: withCtx(({ row, column }) => [
createElementVNode(
'span',
_hoisted_8$z,
toDisplayString$1(row[column.field]),
1
),
]),
_: 2,
},
[
unref(edit2)
? {
name: 'bottom',
fn: withCtx(() => [
createElementVNode(
'div',
{
class: 'slot-footer',
ref_key: 'xGridFooter',
ref: xGridFooter,
onClick: addRow,
},
_hoisted_10$w,
512
),
]),
}
: void 0,
]
),
1040,
['class']
),
]),
(openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
modelValue: unref(dialogConfig).isShow,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) => (unref(dialogConfig).isShow = $event)),
title:
unref(dialogConfig).type &&
unref(dialogMsg)[unref(dialogConfig).type]['title'],
width:
unref(dialogConfig).type &&
unref(dialogMsg)[unref(dialogConfig).type]['width'],
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
key: new Date().toISOString(),
},
{
default: withCtx(() => [
unref(dialogConfig).type === 'fieldConfig'
? (openBlock(),
createBlock(
FieldConfig,
{
key: 0,
currentID: unref(id2),
onCloseDialog: unref(dialogConfig).hide,
onConfirmFieldConfig: update3,
},
null,
8,
['currentID', 'onCloseDialog']
))
: createCommentVNode('', true),
]),
_: 1,
},
8,
['modelValue', 'title', 'width']
)),
])
)
}
},
})
var FilingTable = /* @__PURE__ */ _export_sfc(_sfc_main$1i, [
['__scopeId', 'data-v-7b411f20'],
])
var VariableTag = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: FilingTable,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var FilterConditions_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$L = (n2) => (
pushScopeId('data-v-2582de46'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1c = { class: 'page' }
const _hoisted_2$15 = { class: 'cms-el-dialog-table' }
const _hoisted_3$$ = { class: 'header flex-row' }
const _hoisted_4$R = { class: 'flex-row-full' }
const _hoisted_5$M = /* @__PURE__ */ _withScopeId$L(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u6EE1\u8DB3\u4EE5\u4E0B\uFF1A',
-1
)
)
const _hoisted_6$G = { class: 'default-msg' }
const _hoisted_7$z = /* @__PURE__ */ createTextVNode(' \u6761\u4EF6')
const _hoisted_8$y = { class: 'dialog-content' }
const _hoisted_9$w = { class: 'vxe-cell--label vxe-cell-select' }
const _hoisted_10$v = { class: 'vxe-cell--label vxe-cell-select' }
const _hoisted_11$s = /* @__PURE__ */ _withScopeId$L(() =>
/* @__PURE__ */ createElementVNode(
'div',
{
class: 'flex-row',
style: { height: '100%', 'line-height': '44px', padding: '0' },
},
[
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'flex-row-full vxe-cell--label isnot-edit' },
'--'
),
],
-1
)
)
const _hoisted_12$s = [_hoisted_11$s]
const _hoisted_13$o = ['onClick']
const _hoisted_14$l = {
key: 2,
class: 'flex-row',
style: { height: '100%', 'line-height': '44px', padding: '0' },
}
const _hoisted_15$l = {
class: 'flex-row-full inline-cell-label vxe-cell--label',
}
const _hoisted_16$l = {
class: 'flex-row',
style: { padding: '0' },
}
const _hoisted_17$i = { class: 'flex-row-full' }
const _hoisted_18$h = { class: 'el-dialog__footer' }
const _hoisted_19$f = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_20$e = /* @__PURE__ */ createTextVNode('\u786E\u8BA4')
const _hoisted_21$b = /* @__PURE__ */ _withScopeId$L(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'dialog-content' },
[
/* @__PURE__ */ createElementVNode(
'div',
null,
'\u786E\u8BA4\u540E\uFF0C\u4ECE\u5217\u8868\u4E2D\u5220\u9664\u9009\u4E2D\u7684\u6761\u4EF6\u3002'
),
],
-1
)
)
const _hoisted_22$a = { class: 'el-dialog__footer' }
const _hoisted_23$7 = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_24$7 = /* @__PURE__ */ createTextVNode('\u786E\u8BA4')
const _hoisted_25$6 = { class: 'dialog-content' }
const _hoisted_26$6 = { class: 'screen' }
const _hoisted_27$6 = /* @__PURE__ */ _withScopeId$L(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'screen-item' },
'\u8FD1',
-1
)
)
const _hoisted_28$5 = {
class: 'screen-item',
style: { width: '80px' },
}
const _hoisted_29$4 = {
class: 'screen-item',
style: { width: '80px' },
}
const _hoisted_30$4 = /* @__PURE__ */ _withScopeId$L(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'screen-item' },
'\u5185',
-1
)
)
const _hoisted_31$3 = { class: 'el-dialog__footer' }
const _hoisted_32$3 = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_33$3 = /* @__PURE__ */ createTextVNode('\u786E\u8BA4')
const _sfc_main$1h = /* @__PURE__ */ defineComponent({
props: ['currentID'],
emits: ['closeDialog'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const preCondition = ref(0)
const xTable = ref({})
const inputFocus = (e2) => {
e2.target?.select()
}
const selectFocus = (e2) => {
e2.target?.click()
}
const updateData = () => {
xTable.value.loadData(tableData2.value)
}
const closeDialog = () => {
emit2('closeDialog')
}
const tableData2 = ref([])
const fieldList = ref([])
const changeField2 = (val2, row, oldVal) => {
let field2 = fieldList.value.find((item2) => item2.id === val2)
row.fieldType = field2.fieldType
if (
oldVal === null ||
(oldVal === 3 && row.fieldType !== 3) ||
(row.fieldType === 3 && [1, 2].includes(oldVal))
) {
row.conditionType = fieldType[row.fieldType]['condition'][0].value
}
}
const getFieldName = (id2) => {
return fieldList.value.filter((item2) => item2.id === id2)[0]?.fieldName
}
const getAllField = () => {
request
.get(`/api/v1/dataconfig/filingtable/fields/${props2.currentID}`)
.then((res) => {
fieldList.value = [...res]
})
}
onMounted(() => {
getAllField()
request
.get(`/api/v1/dataconfig/aggregatetable/${props2.currentID}/filters`)
.then((res) => {
preCondition.value = res.preCondition || 0
tableData2.value = res.items ? [...res.items] : []
xTable.value.loadData(tableData2.value)
})
})
const confirm2 = () => {
request
.put(`/api/v1/dataconfig/aggregatetable/${props2.currentID}/filters`, {
preCondition: preCondition.value,
items: tableData2.value,
})
.then(() => {
ElMessage({
message: '\u4FDD\u5B58\u6210\u529F',
type: 'success',
customClass: 'cms-el-message el-message--success',
})
closeDialog()
})
}
const addRow = () => {
tableData2.value.push({
id: new Date().getTime() + '',
aggregateTableFieldId: fieldList.value[0]?.id,
fieldType: fieldList.value[0]?.fieldType,
conditionType: fieldList.value[0]
? fieldType[fieldList.value[0]?.fieldType || 0]['condition'][0].value
: null,
content: '',
customValue: 1,
customUnit: 1,
})
updateData()
}
let choiceRows = ref([])
const changeCheck = () => {
choiceRows.value = xTable.value.getCheckboxRecords()
}
const dialogFunc = {
delRow: () => {
choiceRows.value.forEach((item2) => {
tableData2.value.splice(tableData2.value.indexOf(item2), 1)
})
updateData()
},
}
const tipDialog = reactive({
isShow: false,
msg: '',
type: '',
close: () => {
tipDialog.isShow = false
},
confirm: () => {
tipDialog.type !== '' && dialogFunc[tipDialog.type]()
tipDialog.close()
},
})
const delRow = () => {
initUtils.debouncedFn(() => {
if (choiceRows.value.length === 0) {
ElMessage({
message: '\u8BF7\u9009\u62E9\u8981\u5220\u9664\u7684\u5B57\u6BB5',
type: 'error',
customClass: 'cms-el-message el-message--error',
})
} else {
tipDialog.isShow = true
tipDialog.msg =
'\u662F\u5426\u5220\u9664\u5DF2\u9009\u62E9\u7684\u5B57\u6BB5'
tipDialog.type = 'delRow'
}
})
}
const changeTimeRange = (row, rowIndex) => {
dialogConfig.isShow = true
dialogConfig.row = JSON.parse(JSON.stringify(row))
dialogConfig.rowIndex = rowIndex
}
const dialogConfig = reactive({
isShow: false,
row: {},
rowIndex: 0,
hide: () => {
dialogConfig.isShow = false
},
confirm: () => {
let { row, rowIndex } = dialogConfig
tableData2.value[rowIndex]['customUnit'] = row.customUnit
tableData2.value[rowIndex]['customValue'] = row.customValue
xTable.value.updateData()
dialogConfig.isShow = false
},
})
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_vxe_column = resolveComponent('vxe-column')
const _component_el_input = resolveComponent('el-input')
const _component_vxe_table = resolveComponent('vxe-table')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
const _component_el_input_number = resolveComponent('el-input-number')
return (
openBlock(),
createElementBlock('div', _hoisted_1$1c, [
createElementVNode('div', _hoisted_2$15, [
createElementVNode('div', _hoisted_3$$, [
createElementVNode('div', _hoisted_4$R, [
_hoisted_5$M,
createElementVNode('span', _hoisted_6$G, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select',
modelValue: preCondition.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (preCondition.value = $event)),
'popper-class': 'cms-el-select__popper',
style: { width: '80px', 'margin-right': '8px' },
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
value: 0,
label: '\u6240\u6709',
}),
createVNode$1(_component_el_option, {
value: 1,
label: '\u4EFB\u610F',
}),
]),
_: 1,
},
8,
['modelValue']
),
_hoisted_7$z,
]),
]),
createElementVNode('div', null, [
createElementVNode(
'button',
{
class: 'cms-btn btn-normal',
onClick: addRow,
},
'\u6DFB\u52A0'
),
createElementVNode(
'button',
{
class: 'cms-btn btn-danger',
onClick: delRow,
},
'\u5220\u9664'
),
]),
]),
createElementVNode('div', _hoisted_8$y, [
createVNode$1(
_component_vxe_table,
{
border: '',
class: 'cms-vxe-edit-table cms-vxe-table-min',
style: { 'min-width': '100%' },
ref_key: 'xTable',
ref: xTable,
height: '100%',
'row-config': { keyField: 'id' },
'show-overflow': 'tooltip',
data: tableData2.value,
'column-config': { resizable: true },
'edit-config': { trigger: 'click', mode: 'cell' },
'checkbox-config': { highlight: true },
onCheckboxChange: changeCheck,
onCheckboxAll: changeCheck,
},
{
default: withCtx(() => [
createVNode$1(_component_vxe_column, {
type: 'checkbox',
width: '40',
}),
createVNode$1(
_component_vxe_column,
{
title: '\u7B5B\u9009\u5B57\u6BB5',
field: 'aggregateTableFieldId',
'edit-render': { autofocus: '.el-input__inner' },
},
{
default: withCtx(({ row }) => [
createElementVNode(
'div',
_hoisted_9$w,
toDisplayString$1(
getFieldName(row.aggregateTableFieldId)
),
1
),
]),
edit: withCtx(({ row }) => [
createVNode$1(
_component_el_select,
{
modelValue: row.aggregateTableFieldId,
'onUpdate:modelValue': ($event) =>
(row.aggregateTableFieldId = $event),
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
teleported: false,
placeholder:
'\u9009\u62E9\u7B5B\u9009\u5B57\u6BB5',
onFocusOnce: selectFocus,
onChange: ($event) =>
changeField2($event, row, row.fieldType),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(fieldList.value, (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.id,
value: item2.id,
label: item2.fieldName,
},
null,
8,
['value', 'label']
)
)
}),
128
)),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue', 'onChange']
),
]),
_: 1,
},
8,
['edit-render']
),
createVNode$1(
_component_vxe_column,
{
title: '\u6761\u4EF6',
field: 'conditionType',
'edit-render': { autofocus: '.el-input__inner' },
},
{
default: withCtx(({ row }) => [
createElementVNode(
'div',
_hoisted_10$v,
toDisplayString$1(
unref(condition)[row.conditionType - 1]
),
1
),
]),
edit: withCtx(({ row }) => [
createVNode$1(
_component_el_select,
{
modelValue: row.conditionType,
'onUpdate:modelValue': ($event) =>
(row.conditionType = $event),
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
placeholder: '\u9009\u62E9\u6761\u4EF6',
teleported: false,
onFocusOnce: selectFocus,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
row.fieldType >= 0
? unref(fieldType)[row.fieldType || 0]
.condition
: [],
(item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
value: item2.value,
label: item2.label,
},
null,
8,
['value', 'label']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue']
),
]),
_: 1,
},
8,
['edit-render']
),
createVNode$1(
_component_vxe_column,
{
title: '\u5185\u5BB9',
field: 'content',
'edit-render': { autofocus: '.el-input__inner' },
},
{
default: withCtx(({ row, rowIndex }) => [
row.fieldType === 3 &&
![18].includes(row.conditionType)
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: 'covered-td',
onClick:
_cache[1] ||
(_cache[1] = withModifiers(() => {}, [
'stop',
])),
},
_hoisted_12$s
))
: row.fieldType === 3 &&
[18].includes(row.conditionType)
? (openBlock(),
createElementBlock(
'div',
{
key: 1,
class: 'covered-td',
onClick:
_cache[2] ||
(_cache[2] = withModifiers(() => {}, [
'stop',
])),
},
[
createElementVNode(
'div',
{
class: 'flex-row-full vxe-cell--label',
onClick: withModifiers(
($event) =>
changeTimeRange(row, rowIndex),
['stop']
),
},
' \u8FD1' +
toDisplayString$1(
row.customValue +
unref(timeUnitList)[
row.customUnit - 1
].label
) +
'\u5185 ',
9,
_hoisted_13$o
),
]
))
: (openBlock(),
createElementBlock('div', _hoisted_14$l, [
createElementVNode(
'div',
_hoisted_15$l,
toDisplayString$1(row.content),
1
),
])),
]),
edit: withCtx(({ row }) => [
createElementVNode('div', _hoisted_16$l, [
createElementVNode('div', _hoisted_17$i, [
createVNode$1(
_component_el_input,
{
modelValue: row.content,
'onUpdate:modelValue': ($event) =>
(row.content = $event),
onFocus: inputFocus,
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
]),
]),
]),
_: 1,
},
8,
['edit-render']
),
]),
_: 1,
},
8,
['data']
),
]),
createElementVNode('div', _hoisted_18$h, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: closeDialog,
},
{
default: withCtx(() => [_hoisted_19$f]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_20$e]),
_: 1,
}
),
]),
]),
(openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
modelValue: unref(tipDialog).isShow,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) => (unref(tipDialog).isShow = $event)),
title: '\u786E\u8BA4\u5220\u9664',
width: '450px',
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
key: new Date().toISOString(),
},
{
default: withCtx(() => [
_hoisted_21$b,
createElementVNode('div', _hoisted_22$a, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: unref(tipDialog).close,
},
{
default: withCtx(() => [_hoisted_23$7]),
_: 1,
},
8,
['onClick']
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: unref(tipDialog).confirm,
},
{
default: withCtx(() => [_hoisted_24$7]),
_: 1,
},
8,
['onClick']
),
]),
]),
_: 1,
},
8,
['modelValue']
)),
(openBlock(),
createBlock(
_component_el_dialog,
{
modelValue: unref(dialogConfig).isShow,
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) => (unref(dialogConfig).isShow = $event)),
'custom-class': 'cms-el-dialog',
title: '\u81EA\u5B9A\u4E49\u65F6\u95F4\u8303\u56F4',
width: '356px',
'close-on-click-modal': false,
key: new Date().toISOString(),
'append-to-body': true,
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_25$6, [
createElementVNode('div', _hoisted_26$6, [
_hoisted_27$6,
createElementVNode('div', _hoisted_28$5, [
createVNode$1(
_component_el_input_number,
{
modelValue: unref(dialogConfig).row.customValue,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(dialogConfig).row.customValue = $event)),
min: 0,
'controls-position': 'right',
class: 'cms-input-number cms-input-number-d',
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_29$4, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
modelValue: unref(dialogConfig).row.customUnit,
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) =>
(unref(dialogConfig).row.customUnit = $event)),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(timeUnitList), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
_hoisted_30$4,
]),
]),
createElementVNode('div', _hoisted_31$3, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: unref(dialogConfig).hide,
},
{
default: withCtx(() => [_hoisted_32$3]),
_: 1,
},
8,
['onClick']
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: unref(dialogConfig).confirm,
},
{
default: withCtx(() => [_hoisted_33$3]),
_: 1,
},
8,
['onClick']
),
]),
]),
_: 1,
},
8,
['modelValue']
)),
])
)
}
},
})
var FilterConditions = /* @__PURE__ */ _export_sfc(_sfc_main$1h, [
['__scopeId', 'data-v-2582de46'],
])
var FilterConditions$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: FilterConditions,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var TriggerConfig_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$K = (n2) => (
pushScopeId('data-v-306c7912'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1b = /* @__PURE__ */ createTextVNode(
'\u805A\u5408\u89E6\u53D1'
)
const _hoisted_2$14 = {
key: 0,
class: 'buttons flex-row',
}
const _hoisted_3$_ = { class: 'flex-row' }
const _hoisted_4$Q = /* @__PURE__ */ _withScopeId$K(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u5B9E\u65F6\u66F4\u65B0',
-1
)
)
const _hoisted_5$L = /* @__PURE__ */ _withScopeId$K(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-tishi1 icontips',
title:
'\u5173\u8054\u7684\u539F\u59CB\u8868\u66F4\u65B0\u65F6\uFF0C\u805A\u5408\u8868\u81EA\u52A8\u66F4\u65B0\uFF0C\u4F1A\u5360\u7528\u66F4\u591A\u7684
\u7CFB\u7EDF\u8D44\u6E90\uFF1B',
'data-tooltip-placement': 'right-start',
'data-tooltip-raw-content': '',
},
null,
-1
)
)
const _hoisted_6$F = /* @__PURE__ */ createTextVNode('\u6DFB\u52A0')
const _hoisted_7$y = { class: 'panels' }
const _hoisted_8$x = { class: 'mask' }
const _hoisted_9$v = { class: 'index' }
const _hoisted_10$u = ['onClick']
const _hoisted_11$r = { class: 'type' }
const _hoisted_12$r = { key: 0 }
const _hoisted_13$n = { class: 'content border' }
const _hoisted_14$k = { class: 'con-row' }
const _hoisted_15$k = /* @__PURE__ */ _withScopeId$K(() =>
/* @__PURE__ */ createElementVNode(
'p',
{ class: 'label' },
'\u89E6\u53D1\u65F6\u95F4\uFF1A',
-1
)
)
const _hoisted_16$k = { class: 'con-row' }
const _hoisted_17$h = /* @__PURE__ */ _withScopeId$K(() =>
/* @__PURE__ */ createElementVNode(
'p',
{ class: 'label marginleft' },
'\u91CD\u590D\u9891\u7387\uFF1A',
-1
)
)
const _hoisted_18$g = { class: 'content' }
const _hoisted_19$e = { class: 'con-row' }
const _hoisted_20$d = /* @__PURE__ */ _withScopeId$K(() =>
/* @__PURE__ */ createElementVNode(
'p',
{ class: 'label' },
'\u540C\u65F6\u6EE1\u8DB3\u6761\u4EF6\uFF1A',
-1
)
)
const _hoisted_21$a = { key: 1 }
const _hoisted_22$9 = { class: 'content border' }
const _hoisted_23$6 = { class: 'con-row' }
const _hoisted_24$6 = /* @__PURE__ */ _withScopeId$K(() =>
/* @__PURE__ */ createElementVNode(
'p',
{ class: 'label' },
'\u89E6\u53D1\u52A8\u4F5C\uFF1A',
-1
)
)
const _hoisted_25$5 = { class: 'content' }
const _hoisted_26$5 = /* @__PURE__ */ _withScopeId$K(() =>
/* @__PURE__ */ createElementVNode(
'p',
{ class: 'label' },
'\u91CD\u590D\u9891\u7387\uFF1A',
-1
)
)
const _hoisted_27$5 = /* @__PURE__ */ createTextVNode(
'\u6DFB\u52A0\u805A\u5408\u89E6\u53D1\u914D\u7F6E'
)
const _hoisted_28$4 = { class: 'el-dialog__footer' }
const _hoisted_29$3 = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_30$3 = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$1g = /* @__PURE__ */ defineComponent({
props: ['id'],
emits: ['confirm'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const TRIGGER = {
effectiveDateTime: '',
dateTime: '',
frequencyValue: 1,
frequencyUnit: 2,
matchAll: false,
condition: '',
conditionDetail: 1,
frequencyCheck: false,
}
let visible = ref(false)
let realTime = ref(false)
let list2 = ref([])
let cloneDeepList = []
const query = async () => {
try {
let res = await request.get(
`/api/v1/dataconfig/aggregatetable/${props2.id}/triggers`
)
realTime.value = res.realTime
if (res.triggers.length) {
list2.value = res.triggers.map((e2) => {
let { triggerType, effectiveDateTime } = e2
e2.dateTime = effectiveDateTime
? new Date(Date.parse(effectiveDateTime))
: ''
let obj = {
clocking:
triggerType === 1 ? e2 : JSON.parse(JSON.stringify(TRIGGER)),
variable:
triggerType === 2 ? e2 : JSON.parse(JSON.stringify(TRIGGER)),
triggerType,
}
return obj
})
} else {
list2.value = []
add2()
}
} catch (error2) {
list2.value = []
add2()
}
cloneDeepList = JSON.parse(JSON.stringify(list2.value))
}
const open2 = () => {
visible.value = true
query()
}
const reset2 = () => {
list2.value = cloneDeepList
}
const add2 = () => {
let trigger2 = {
clocking: JSON.parse(JSON.stringify(TRIGGER)),
variable: JSON.parse(JSON.stringify(TRIGGER)),
triggerType: 1,
}
list2.value.push(trigger2)
}
const del = (index2) => {
list2.value.splice(index2, 1)
}
const confirm2 = async () => {
const triggers = list2.value.map((e2) => {
let obj = {
...(e2.triggerType == 1 ? e2.clocking : e2.variable),
}
obj.effectiveDateTime = obj.dateTime
? new Date(obj.dateTime).toISOString()
: ''
obj.triggerType = e2.triggerType
delete obj.dateTime
return obj
})
const params2 = {
realTime: realTime.value,
triggers,
}
await request
.put(`/api/v1/dataconfig/aggregatetable/${props2.id}/triggers`, params2)
.then(() => {
visible.value = false
cloneDeepList = list2.value
ElMessage.success('\u4FDD\u5B58\u6210\u529F')
emit2('confirm')
})
}
let expConfig = ref({
visible: false,
index: 0,
triggerType: '',
code: '',
})
const expConfigHandle = (index2, code2, triggerType, active) => {
if (!active) return
expConfig.value = {
index: index2,
code: code2,
triggerType,
visible: true,
}
}
const expConfigChange = (code2) => {
const { index: index2, triggerType } = expConfig.value
list2.value[index2][triggerType].condition = code2
}
watch$1(
() => props2.id,
() => {
list2.value = []
add2()
},
{ immediate: true }
)
return (_ctx, _cache) => {
const _component_el_button = resolveComponent('el-button')
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_date_picker = resolveComponent('el-date-picker')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
_component_el_button,
{
class: 'cms-btn btn-data',
style: { margin: '0' },
onClick: open2,
},
{
default: withCtx(() => [_hoisted_1$1b]),
_: 1,
}
),
createVNode$1(
_component_el_dialog,
{
modelValue: unref(visible),
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
isRef(visible)
? (visible.value = $event)
: (visible = $event)),
'append-to-body': true,
'close-on-click-modal': false,
onClosed: reset2,
title: '\u805A\u5408\u89E6\u53D1\u914D\u7F6E',
'custom-class': 'cms-el-dialog',
width: '650px',
},
{
default: withCtx(() => [
createElementVNode(
'div',
{
class: 'dialog-content',
style: normalizeStyle$1(
!list2.value.length && 'height: 100px'
),
},
[
list2.value.length
? (openBlock(),
createElementBlock('section', _hoisted_2$14, [
createElementVNode('div', _hoisted_3$_, [
createVNode$1(
_component_el_checkbox,
{
modelValue: realTime.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(realTime.value = $event)),
class: 'cms-el-checkbox',
},
null,
8,
['modelValue']
),
_hoisted_4$Q,
_hoisted_5$L,
]),
createVNode$1(
_component_el_button,
{
class: 'cms-btn btn-data-plain success',
onClick: add2,
},
{
default: withCtx(() => [_hoisted_6$F]),
_: 1,
}
),
]))
: createCommentVNode('', true),
createElementVNode('section', _hoisted_7$y, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(list2.value, (item2, i2) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'panel',
key: i2,
},
[
withDirectives(
createElementVNode(
'span',
_hoisted_8$x,
null,
512
),
[[vShow, realTime.value]]
),
createElementVNode(
'span',
_hoisted_9$v,
toDisplayString$1(i2 + 1),
1
),
createElementVNode(
'button',
{
class: 'iconfont icon-qingchu delete',
onClick: ($event) => del(i2),
},
null,
8,
_hoisted_10$u
),
createElementVNode('div', _hoisted_11$r, [
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont',
item2.triggerType == 1
? 'icon-dingshichufa'
: 'icon-bianliangchufa',
]),
},
null,
2
),
createVNode$1(
_component_el_select,
{
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
modelValue: item2.triggerType,
'onUpdate:modelValue': ($event) =>
(item2.triggerType = $event),
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
key: '1',
value: 1,
label: '\u5B9A\u65F6\u89E6\u53D1',
}),
createVNode$1(_component_el_option, {
key: '2',
value: 2,
label: '\u53D8\u91CF\u89E6\u53D1',
}),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue']
),
]),
item2.triggerType === 1
? (openBlock(),
createElementBlock('div', _hoisted_12$r, [
createElementVNode('div', _hoisted_13$n, [
createElementVNode(
'div',
_hoisted_14$k,
[
_hoisted_15$k,
createVNode$1(
unref(ElConfigProvider),
{ locale: unref(zhCn) },
{
default: withCtx(() => [
createVNode$1(
_component_el_date_picker,
{
style: { width: '192px' },
modelValue:
item2.clocking.dateTime,
'onUpdate:modelValue': (
$event
) =>
(item2.clocking.dateTime =
$event),
type: 'datetime',
format:
'YYYY-MM-DD HH:mm:ss',
placeholder:
'\u9009\u62E9\u65E5\u671F\u65F6\u95F4',
class:
'cms-el-date-picker',
'popper-class':
'cms-el-picker__popper',
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
]
),
]),
_: 2,
},
1032,
['locale']
),
]
),
createElementVNode(
'div',
_hoisted_16$k,
[
_hoisted_17$h,
createVNode$1(
TriggerFrequency,
{
label: '\u6BCF',
value:
item2.clocking.frequencyValue,
'onUpdate:value': ($event) =>
(item2.clocking.frequencyValue =
$event),
unit: item2.clocking
.frequencyUnit,
'onUpdate:unit': ($event) =>
(item2.clocking.frequencyUnit =
$event),
unitFilters: '2,3,4,5',
},
null,
8,
[
'value',
'onUpdate:value',
'unit',
'onUpdate:unit',
]
),
]
),
]),
createElementVNode('div', _hoisted_18$g, [
createElementVNode(
'div',
_hoisted_19$e,
[
createVNode$1(
_component_el_checkbox,
{
modelValue:
item2.clocking.matchAll,
'onUpdate:modelValue': (
$event
) =>
(item2.clocking.matchAll =
$event),
class: 'cms-el-checkbox',
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
]
),
_hoisted_20$d,
createVNode$1(
RelevanceButton,
{
style: { width: '288px' },
iconfont:
'iconfont icon-bianliang1 fx',
placeholder:
'\u8BF7\u8BBE\u7F6E\u7B5B\u9009\u6761\u4EF6',
label: item2.clocking.condition,
disabled:
!item2.clocking.matchAll,
onClick: ($event) =>
expConfigHandle(
i2,
item2.clocking.condition,
'clocking',
item2.clocking.matchAll
),
},
null,
8,
['label', 'disabled', 'onClick']
),
]
),
]),
]))
: createCommentVNode('', true),
item2.triggerType === 2
? (openBlock(),
createElementBlock('div', _hoisted_21$a, [
createElementVNode('div', _hoisted_22$9, [
createElementVNode(
'div',
_hoisted_23$6,
[
_hoisted_24$6,
createVNode$1(
RelevanceButton,
{
style: { width: '288px' },
iconfont:
'iconfont icon-bianliang1 fx',
placeholder:
'\u8BF7\u8BBE\u7F6E\u7B5B\u9009\u6761\u4EF6',
label: item2.variable.condition,
onClick: ($event) =>
expConfigHandle(
i2,
item2.variable.condition,
'variable',
true
),
},
null,
8,
['label', 'onClick']
),
createVNode$1(
_component_el_select,
{
class:
'cms-el-select select-change',
'popper-class':
'cms-el-select__popper',
modelValue:
item2.variable
.conditionDetail,
'onUpdate:modelValue': (
$event
) =>
(item2.variable.conditionDetail =
$event),
onChange: (v4) => {
if (v4 == 3)
item2.variable.frequencyCheck = false
},
},
{
default: withCtx(() => [
createVNode$1(
_component_el_option,
{
key: '1',
value: 1,
label: '\u53D8\u771F',
}
),
createVNode$1(
_component_el_option,
{
key: '2',
value: 2,
label: '\u53D8\u5047',
}
),
createVNode$1(
_component_el_option,
{
key: '3',
value: 3,
label:
'\u771F\u5047\u53D8\u5316',
}
),
]),
_: 2,
},
1032,
[
'modelValue',
'onUpdate:modelValue',
'onChange',
]
),
]
),
]),
createElementVNode('div', _hoisted_25$5, [
createElementVNode(
'div',
{
class: normalizeClass([
'con-row',
{
'disabled-trigger':
item2.variable
.conditionDetail == 3,
},
]),
},
[
createVNode$1(
_component_el_checkbox,
{
disabled:
item2.variable
.conditionDetail == 3,
modelValue:
item2.variable.frequencyCheck,
'onUpdate:modelValue': (
$event
) =>
(item2.variable.frequencyCheck =
$event),
class: 'cms-el-checkbox',
},
null,
8,
[
'disabled',
'modelValue',
'onUpdate:modelValue',
]
),
_hoisted_26$5,
createVNode$1(
TriggerFrequency,
{
label: '\u6BCF',
disabled:
!item2.variable
.frequencyCheck ||
item2.variable
.conditionDetail == 3,
value:
item2.variable.frequencyValue,
'onUpdate:value': ($event) =>
(item2.variable.frequencyValue =
$event),
unit: item2.variable
.frequencyUnit,
'onUpdate:unit': ($event) =>
(item2.variable.frequencyUnit =
$event),
unitFilters: '2,3,4,5',
},
null,
8,
[
'disabled',
'value',
'onUpdate:value',
'unit',
'onUpdate:unit',
]
),
],
2
),
]),
]))
: createCommentVNode('', true),
]
)
)
}),
128
)),
]),
!list2.value.length
? (openBlock(),
createBlock(
noDataButton,
{
key: 1,
onClick: add2,
},
{
default: withCtx(() => [_hoisted_27$5]),
_: 1,
}
))
: createCommentVNode('', true),
],
4
),
createElementVNode('div', _hoisted_28$4, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick:
_cache[1] ||
(_cache[1] = ($event) =>
isRef(visible)
? (visible.value = false)
: (visible = false)),
},
{
default: withCtx(() => [_hoisted_29$3]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_30$3]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
FormulaConfigDialog$2,
{
modelValue: expConfig.value.visible,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) => (expConfig.value.visible = $event)),
code: expConfig.value.code,
filterClientVariables: true,
onChange: expConfigChange,
},
null,
8,
['modelValue', 'code']
),
])
)
}
},
})
var TriggerConfig = /* @__PURE__ */ _export_sfc(_sfc_main$1g, [
['__scopeId', 'data-v-306c7912'],
])
var TriggerConfig$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: TriggerConfig,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var DataAggregation_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$J = (n2) => (
pushScopeId('data-v-0aa57e5f'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1a = { class: 'page flex-row-column' }
const _hoisted_2$13 = /* @__PURE__ */ createTextVNode(
'\u50A8\u5B58\u8BBE\u7F6E'
)
const _hoisted_3$Z = /* @__PURE__ */ _withScopeId$J(() =>
/* @__PURE__ */ createElementVNode('span', { class: 'divider' }, null, -1)
)
const _hoisted_4$P = /* @__PURE__ */ _withScopeId$J(() =>
/* @__PURE__ */ createElementVNode('span', { class: 'divider' }, null, -1)
)
const _hoisted_5$K = /* @__PURE__ */ createTextVNode('\u5B57\u6BB5\u914D\u7F6E')
const _hoisted_6$E = { class: 'flex-row-full' }
const _sfc_main$1f = /* @__PURE__ */ defineComponent({
setup(__props2) {
const xTable = ref({})
let currentID = ref(state.current.sheet?.id)
let loading2 = ref(false)
let edit2 = ref(false)
let count2 = ref(500)
const visible = ref(false)
const storageData2 = ref({
retentionUnit: 6,
retentionValue: 1,
})
const isButtonDisplay = (type4) => {
return state.current.sheet?.functions?.includes(type4) ? true : false
}
const refresh2 = async () => {
loading2.value = true
try {
await updateTableData()
setTimeout(() => (loading2.value = false), 400)
} catch (error2) {
loading2.value = false
}
}
watch$1(
() => state.current.sheet,
() => {
currentID.value = state.current.sheet?.id
if (state.current.sheet?.type == 3) {
updateField()
}
}
)
onMounted(() => {
currentID.value = state.current.sheet?.id
updateField()
})
let tableHeader = ref([])
let tableData2 = ref([])
const getFields = () => {
return request
.get(`/api/v1/dataconfig/aggregatetable/${currentID.value}/headers`)
.then((res) => {
tableHeader.value = JSON.parse(JSON.stringify(res))
xTable.value.refreshColumn()
})
}
const getTaleData = () => {
request
.post('/api/v1/data/original', {
dataSetId: state.current.sheet?.id + '',
tableName: state.current.sheet?.name,
limit: count2.value,
})
.then((res) => {
tableData2.value = res ? [...res] : []
xTable.value.updateData()
})
}
const updateField = () => {
getFields().then(() => {
getTaleData()
})
}
const updateTableData = () => {
getTaleData()
}
const dialogConfig = reactive({
isShow: false,
type: '',
hide: () => {
dialogConfig.isShow = false
},
})
const btnClick = (type4) => {
dialogConfig.isShow = true
dialogConfig.type = type4
}
const onSubmit = async () => {
const type4 = state.current.sheet?.type
const id2 = state.current.sheet?.id
await setStorageConfig(type4, id2, storageData2.value)
visible.value = false
ElMessage.success('\u4FDD\u5B58\u6210\u529F')
}
const onOpen = async () => {
visible.value = true
storageData2.value = await getStorageConfig()
}
return (_ctx, _cache) => {
const _component_el_button = resolveComponent('el-button')
const _component_vxe_column = resolveComponent('vxe-column')
const _component_vxe_table = resolveComponent('vxe-table')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', _hoisted_1$1a, [
createVNode$1(
Header,
{
edit: unref(edit2),
'onUpdate:edit':
_cache[3] ||
(_cache[3] = ($event) =>
isRef(edit2) ? (edit2.value = $event) : (edit2 = $event)),
count: unref(count2),
'onUpdate:count':
_cache[4] ||
(_cache[4] = ($event) =>
isRef(count2) ? (count2.value = $event) : (count2 = $event)),
loading: unref(loading2),
onUpdate: refresh2,
},
{
setting: withCtx(() => [
isButtonDisplay(2)
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
createVNode$1(
_component_el_button,
{
class: 'cms-btn btn-data',
style: { margin: '0' },
onClick: onOpen,
},
{
default: withCtx(() => [_hoisted_2$13]),
_: 1,
}
),
(openBlock(),
createBlock(
StorageSetting,
{
key: unref(currentID),
modelValue: visible.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(visible.value = $event)),
onConfirm: onSubmit,
data: storageData2.value,
'onUpdate:data':
_cache[1] ||
(_cache[1] = ($event) =>
(storageData2.value = $event)),
currentInfo: unref(state).current.sheet,
},
null,
8,
['modelValue', 'data', 'currentInfo']
)),
_hoisted_3$Z,
],
64
))
: createCommentVNode('', true),
isButtonDisplay(3)
? (openBlock(),
createElementBlock(
Fragment,
{ key: 1 },
[
createVNode$1(
TriggerConfig,
{
label: '\u5F52\u6863\u89E6\u53D1',
id: unref(currentID),
onConfirm: updateField,
},
null,
8,
['id']
),
_hoisted_4$P,
],
64
))
: createCommentVNode('', true),
isButtonDisplay(4)
? (openBlock(),
createBlock(
_component_el_button,
{
key: 2,
class: 'cms-btn btn-data',
style: { margin: '0' },
onClick:
_cache[2] ||
(_cache[2] = ($event) => btnClick('fieldConfig')),
},
{
default: withCtx(() => [_hoisted_5$K]),
_: 1,
}
))
: createCommentVNode('', true),
]),
_: 1,
},
8,
['edit', 'count', 'loading']
),
createElementVNode('div', _hoisted_6$E, [
createVNode$1(
_component_vxe_table,
{
class: 'cms-vxe-table',
style: { 'min-width': '100%', height: '100%' },
ref_key: 'xTable',
ref: xTable,
height: '100%',
'row-config': { keyField: '_id' },
'show-header-overflow': 'tooltip',
'show-overflow': 'tooltip',
data: unref(tableData2),
'column-config': { resizable: true },
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(tableHeader), (item2, index2) => {
return (
openBlock(),
createBlock(
_component_vxe_column,
{
key: index2,
field: item2.fieldName,
title: item2.fieldName,
'min-width': '180',
},
{
header: withCtx(() => [
createElementVNode(
'i',
{
class: normalizeClass([
'iconType',
unref(fieldType)[item2.fieldType || 0][
'type'
],
]),
},
null,
2
),
createTextVNode(
' ' + toDisplayString$1(item2.fieldName),
1
),
]),
_: 2,
},
1032,
['field', 'title']
)
)
}),
128
)),
]),
_: 1,
},
8,
['data']
),
]),
(openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
modelValue: unref(dialogConfig).isShow,
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) => (unref(dialogConfig).isShow = $event)),
title:
unref(dialogConfig).type &&
unref(dialogMsg)[unref(dialogConfig).type]['title'],
width:
unref(dialogConfig).type &&
unref(dialogMsg)[unref(dialogConfig).type]['width'],
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
key: new Date().toISOString(),
},
{
default: withCtx(() => [
unref(dialogConfig).type === 'fieldConfig'
? (openBlock(),
createBlock(
FieldConfig,
{
key: 0,
currentID: unref(currentID),
onCloseDialog: unref(dialogConfig).hide,
onConfirmFieldConfig: updateField,
},
null,
8,
['currentID', 'onCloseDialog']
))
: createCommentVNode('', true),
unref(dialogConfig).type === 'filter'
? (openBlock(),
createBlock(
FilterConditions,
{
key: 1,
currentID: unref(currentID),
onCloseDialog: unref(dialogConfig).hide,
},
null,
8,
['currentID', 'onCloseDialog']
))
: createCommentVNode('', true),
]),
_: 1,
},
8,
['modelValue', 'title', 'width']
)),
])
)
}
},
})
var AggregationTable = /* @__PURE__ */ _export_sfc(_sfc_main$1f, [
['__scopeId', 'data-v-0aa57e5f'],
])
var DataAggregation = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: AggregationTable,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Data_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$19 = { class: 'data-contain' }
const _hoisted_2$12 = { class: 'sidebar' }
const _hoisted_3$Y = { class: 'content' }
const _sfc_main$1e = /* @__PURE__ */ defineComponent({
setup(__props2) {
const type4 = computed(() => state.current.sheet?.type)
const sidebarRef = ref()
const add2 = () => {
sidebarRef.value?.createDropdownOpen()
}
return (_ctx, _cache) => {
const _directive_track = resolveDirective('track')
return withDirectives(
(openBlock(),
createElementBlock('div', _hoisted_1$19, [
createElementVNode('div', _hoisted_2$12, [
createVNode$1(
Sidebar$2,
{
ref_key: 'sidebarRef',
ref: sidebarRef,
},
null,
512
),
]),
createElementVNode('div', _hoisted_3$Y, [
unref(type4) === 2
? (openBlock(), createBlock(FilingTable, { key: 0 }))
: unref(type4) === 3
? (openBlock(), createBlock(AggregationTable, { key: 1 }))
: (openBlock(),
createBlock(Empty, {
key: 2,
title: '\u6DFB\u52A0\u6570\u636E\u8868',
onHightLightPages: add2,
})),
]),
])),
[
[
_directive_track,
{
moduleType: '\u6807\u51C6\u6A21\u5757',
moduleCode: '\u6570\u636E',
pageCode: '\u6570\u636E\u8868',
},
'page',
],
]
)
}
},
})
var Data = /* @__PURE__ */ _export_sfc(_sfc_main$1e, [
['__scopeId', 'data-v-d7777980'],
])
var Data$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Data,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var AlarmLevelsConf_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$I = (n2) => (
pushScopeId('data-v-26888457'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$18 = { class: 'flex flex-col' }
const _hoisted_2$11 = {
class: 'screen flex full-width justify-between content-start',
}
const _hoisted_3$X = /* @__PURE__ */ createTextVNode('\u67E5\u8BE2')
const _hoisted_4$O = { class: 'flex-1 full-width' }
const _hoisted_5$J = /* @__PURE__ */ _withScopeId$I(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'dialog-content' },
[
/* @__PURE__ */ createElementVNode(
'div',
null,
'\u786E\u8BA4\u540E\uFF0C\u4ECE\u5217\u8868\u4E2D\u5220\u9664\u62A5\u8B66\u7B49\u7EA7'
),
],
-1
)
)
const _hoisted_6$D = { class: 'el-dialog__footer' }
const _hoisted_7$x = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_8$w = /* @__PURE__ */ createTextVNode('\u786E\u8BA4')
const _sfc_main$1d = /* @__PURE__ */ defineComponent({
emits: ['cancel', 'confirm', 'changeName', 'update:modelValue'],
setup(__props2, { emit: emit2 }) {
const levelTable = ref()
const data2 = reactive({
tableData: [],
showConfDialog: false,
showDeleteDialog: false,
})
const tableTooltipConfig = {
enterable: true,
contentMethod: ({ column, row }) => {
const { property: property2 } = column
return row[property2]
},
}
const defaultSelectedLevels = ref([])
let selectedLevels = []
let originTableData = []
let searchData = reactive({
alarm_level_name: '',
})
watch$1(
() => data2.tableData,
(val2) => {
if (JSON.stringify(val2) !== JSON.stringify(originTableData)) {
setSaveStatus(Project$2.saveStatusTypes.unsaved)
}
},
{
deep: true,
}
)
const getData = async () => {
const res = await getAlarmLevel(searchData.alarm_level_name)
data2.tableData = res
originTableData = lodash$2.exports.cloneDeep(data2.tableData)
}
const handleOpen2 = () => {
searchData.alarm_level_name = ''
deleteLevelsId = []
updateLevels = []
getData()
}
const handleCancel = () => {
selectedLevels = []
data2.showConfDialog = false
emit2('cancel')
}
let updateLevels = []
let deleteLevelsId = []
const handleEditClosed = ({ row }) => {
for (let i2 = 0; i2 < originTableData.length; i2++) {
const currentOriginRow = originTableData[i2]
if (currentOriginRow.id === row.id) {
let hasUpdateLevel = lodash$2.exports.find(
updateLevels,
(level) => level.id === row.id
)
if (hasUpdateLevel) {
if (hasUpdateLevel.name === currentOriginRow.name) {
updateLevels = lodash$2.exports.filter(
updateLevels,
(level) => level.id !== row.id
)
} else {
hasUpdateLevel.name = row.name
}
} else if (row.name !== currentOriginRow.name) {
updateLevels.push(row)
}
break
}
}
}
const handleConfirm = async () => {
setSaveStatus(Project$2.saveStatusTypes.saving)
const levels = data2.tableData
const repeatCount = lodash$2.exports.omit(
lodash$2.exports.countBy(levels, 'name'),
''
)
let addRows = data2.tableData.filter((level) => level.is_new)
let isValidate = true
let errors = 0
for (let index2 = 0; index2 < addRows.length; index2++) {
if (addRows[index2].name.trim() === '' && errors < 5) {
errors++
const { start: start2 } = useTimeoutFn(() => {
ElMessage({
message:
'\u62A5\u8B66\u7EA7\u522B\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A',
grouping: true,
type: 'error',
})
}, 0)
start2()
isValidate = false
}
}
lodash$2.exports.forEach(repeatCount, async (value2, key2) => {
if (value2 > 1 && errors < 5) {
errors++
const { start: start2 } = useTimeoutFn(() => {
ElMessage.error(
`\u5B58\u5728\u76F8\u540C\u540D\u79F0"${key2}", \u8BF7\u91CD\u65B0\u4FEE\u6539`
)
}, 0)
start2()
isValidate = false
}
})
if (!isValidate) return
const allPromises = []
updateLevels.length &&
allPromises.push(
updateAlarmLevel(updateLevels).then(() => {
updateLevels = []
})
)
addRows.length &&
allPromises.push(
addAlarmLevel(
addRows.map((item2) => {
return { name: item2.name }
})
).then(() => {
addRows = []
})
)
Promise.all(allPromises)
.then(() => {
ElMessage.success('\u4FDD\u5B58\u6210\u529F')
getData()
setSaveStatus(Project$2.saveStatusTypes.saved)
})
.catch(() => {
setSaveStatus(Project$2.saveStatusTypes.fail)
})
}
const changeCheck = () => {
selectedLevels = levelTable.value.getCheckboxRecords()
}
const addRow = () => {
data2.tableData = [
...data2.tableData,
{
id: 'new_' + initUtils.createRandomId(),
name: '',
is_new: true,
},
]
}
const removeRows = () => {
if (selectedLevels.length == 0)
return ElMessage.warning('\u8BF7\u9009\u62E9\u6570\u636E')
data2.showDeleteDialog = true
}
const handleConfirmDelete = async () => {
const directRemoveIds = selectedLevels
.filter((item2) => item2.is_new)
.map((item2) => item2.id)
deleteLevelsId = selectedLevels
.filter((item2) => !item2.is_new)
.map((item2) => item2.id)
deleteLevelsId.length && (await deleteAlarmLevel(deleteLevelsId))
data2.tableData = data2.tableData.filter(
(item2) =>
!deleteLevelsId.includes(item2.id) &&
!directRemoveIds.includes(item2.id)
)
deleteLevelsId = []
data2.showDeleteDialog = false
ElMessage.success('\u5220\u9664\u6210\u529F')
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_button = resolveComponent('el-button')
const _component_el_form = resolveComponent('el-form')
const _component_vxe_column = resolveComponent('vxe-column')
const _component_vxe_table = resolveComponent('vxe-table')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', null, [
createElementVNode('button', {
class: 'icon-button iconfont icon-baojingjibie',
onClick:
_cache[0] ||
(_cache[0] = ($event) => (unref(data2).showConfDialog = true)),
title: '\u62A5\u8B66\u7EA7\u522B',
}),
createVNode$1(
_component_el_dialog,
{
'append-to-body': '',
modelValue: unref(data2).showConfDialog,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(data2).showConfDialog = $event)),
width: '700px',
top: '22vh',
title: '\u62A5\u8B66\u7EA7\u522B\u914D\u7F6E',
'custom-class': 'cms-el-dialog',
onOpen: handleOpen2,
onClose: handleCancel,
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$18, [
createElementVNode('div', _hoisted_2$11, [
createVNode$1(
_component_el_form,
{
inline: true,
model: unref(searchData),
class: 'demo-form-inline',
},
{
default: withCtx(() => [
createVNode$1(_component_el_form_item, null, {
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue:
unref(searchData).alarm_level_name,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(searchData).alarm_level_name =
$event)),
class: 'screen-input cms-el-input-x',
placeholder:
'\u8BF7\u8F93\u5165\u62A5\u8B66\u7EA7\u522B\u540D\u79F0',
clearable: '',
},
null,
8,
['modelValue']
),
]),
_: 1,
}),
createVNode$1(_component_el_form_item, null, {
default: withCtx(() => [
createVNode$1(
_component_el_button,
{
class: 'cms-btn btn-screen-btn btn-reset',
onClick: getData,
},
{
default: withCtx(() => [_hoisted_3$X]),
_: 1,
}
),
]),
_: 1,
}),
]),
_: 1,
},
8,
['model']
),
createElementVNode('div', { class: 'flex content-start' }, [
createElementVNode(
'button',
{
class: 'cms-btn btn-data-plain success',
onClick: addRow,
},
'\u6DFB\u52A0'
),
createElementVNode(
'button',
{
class: 'cms-btn btn-data-plain danger',
onClick: removeRows,
},
'\u5220\u9664'
),
createElementVNode(
'button',
{
class: 'cms-btn btn-data-plain primary',
onClick: handleConfirm,
},
'\u4FDD\u5B58'
),
]),
]),
createElementVNode('div', _hoisted_4$O, [
createVNode$1(
_component_vxe_table,
{
border: '',
class: 'cms-vxe-table cms-vxe-table-min',
ref_key: 'levelTable',
ref: levelTable,
height: '400',
'row-config': { keyField: 'id' },
data: unref(data2).tableData,
'show-overflow': 'tooltip',
'tooltip-config': tableTooltipConfig,
'column-config': { resizable: false },
'edit-config': { trigger: 'click', mode: 'cell' },
'checkbox-config': {
checkRowKeys: defaultSelectedLevels.value,
checkField: 'checked',
highlight: true,
},
onCheckboxChange: changeCheck,
onCheckboxAll: changeCheck,
onEditClosed: handleEditClosed,
},
{
default: withCtx(() => [
createVNode$1(_component_vxe_column, {
type: 'checkbox',
width: '40',
}),
createVNode$1(_component_vxe_column, {
type: 'seq',
width: '60',
title: '\u5E8F\u53F7',
align: 'center',
}),
createVNode$1(
_component_vxe_column,
{
field: 'name',
title: '\u62A5\u8B66\u7EA7\u522B\u540D\u79F0',
'min-width': '150',
'edit-render': { autofocus: '.el-input__inner' },
},
{
edit: withCtx(({ row }) => [
createVNode$1(
_component_el_input,
{
modelValue: row.name,
'onUpdate:modelValue': ($event) =>
(row.name = $event),
type: 'text',
spellcheck: false,
placeholder:
'\u8BF7\u8F93\u5165\u62A5\u8B66\u7EA7\u522B\u540D\u79F0',
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
]),
_: 1,
},
8,
['edit-render']
),
]),
_: 1,
},
8,
['data', 'checkbox-config']
),
]),
createElementVNode(
'div',
{
class:
'el-dialog__footer full-width flex justify-items-end',
},
[
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: handleCancel,
},
'\u53D6\u6D88'
),
]
),
]),
]),
_: 1,
},
8,
['modelValue']
),
(openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
modelValue: unref(data2).showDeleteDialog,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(data2).showDeleteDialog = $event)),
title: '\u786E\u8BA4\u5220\u9664',
width: '450px',
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
key: new Date().toISOString(),
},
{
default: withCtx(() => [
_hoisted_5$J,
createElementVNode('div', _hoisted_6$D, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick:
_cache[3] ||
(_cache[3] = ($event) =>
(unref(data2).showDeleteDialog = false)),
},
{
default: withCtx(() => [_hoisted_7$x]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: handleConfirmDelete,
},
{
default: withCtx(() => [_hoisted_8$w]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
)),
])
)
}
},
})
var AlarmLevelsConf = /* @__PURE__ */ _export_sfc(_sfc_main$1d, [
['__scopeId', 'data-v-26888457'],
])
var AlarmLevelsConf$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: AlarmLevelsConf,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var AlarmTypeConf_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$H = (n2) => (
pushScopeId('data-v-83afa6f6'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$17 = { class: 'flex flex-col' }
const _hoisted_2$10 = {
class: 'screen flex full-width justify-between content-start',
}
const _hoisted_3$W = /* @__PURE__ */ createTextVNode('\u67E5\u8BE2')
const _hoisted_4$N = { class: 'flex-1 full-width' }
const _hoisted_5$I = /* @__PURE__ */ _withScopeId$H(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'dialog-content' },
[
/* @__PURE__ */ createElementVNode(
'div',
null,
'\u786E\u8BA4\u540E\uFF0C\u4ECE\u5217\u8868\u5220\u9664\u9009\u4E2D\u7684\u62A5\u8B66\u7C7B\u522B\u9879'
),
],
-1
)
)
const _hoisted_6$C = { class: 'el-dialog__footer' }
const _hoisted_7$w = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_8$v = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$1c = /* @__PURE__ */ defineComponent({
props: {
modelValue: {
type: Boolean,
default: false,
},
groupID: {
type: String,
default: '',
},
groupName: {
type: String,
default: '',
},
},
emits: ['cancel', 'confirm', 'changeName', 'update:modelValue'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const xTable = ref()
const show = computed({
get: () => {
return props2.modelValue
},
set: (val2) => {
emit2('update:modelValue', val2)
},
})
let originTableData = []
const data2 = reactive({
tableData: [],
showDeleteDialog: false,
})
let searchData = reactive({
alarm_level_name: '',
})
const tableTooltipConfig = {
enterable: true,
contentMethod: ({ column, row }) => {
const { property: property2 } = column
return row[property2]
},
}
const defaultSelectedLevels = ref([])
let selectedRows = []
watch$1(
() => data2.tableData,
(val2) => {
if (JSON.stringify(val2) !== JSON.stringify(originTableData)) {
setSaveStatus(Project$2.saveStatusTypes.unsaved)
}
},
{
deep: true,
}
)
const getData = async () => {
const res = await getAlarmType(
props2.groupID,
searchData.alarm_level_name
)
data2.tableData = res
originTableData = lodash$2.exports.cloneDeep(data2.tableData)
}
const handleOpen2 = () => {
searchData.alarm_level_name = ''
getData()
}
const handleCancel = () => {
selectedRows = []
show.value = false
emit2('cancel')
}
let updateRows = []
let deleteLevelsId = []
const handleEditClosed = ({ row }) => {
for (let i2 = 0; i2 < originTableData.length; i2++) {
const currentOriginRow = originTableData[i2]
if (currentOriginRow.id === row.id) {
let hasUpdateLevel = lodash$2.exports.find(
updateRows,
(level) => level.id === row.id
)
if (hasUpdateLevel) {
if (hasUpdateLevel.name === currentOriginRow.name) {
updateRows = lodash$2.exports.filter(
updateRows,
(level) => level.id !== row.id
)
} else {
hasUpdateLevel.name = row.name
}
} else if (row.name !== currentOriginRow.name) {
updateRows.push(row)
}
break
}
}
}
const handleConfirm = async () => {
setSaveStatus(Project$2.saveStatusTypes.saving)
let tableData2 = xTable.value?.getTableData().tableData ?? []
tableData2.forEach((row, index2) => {
tableData2[index2] = { ...row, sort: index2 + 1 }
})
const groups = tableData2
const repeatCount = lodash$2.exports.omit(
lodash$2.exports.countBy(groups, 'name'),
''
)
let addRows = tableData2.filter((level) => level.is_new)
let isValidate = true
let errors = 0
for (let index2 = 0; index2 < addRows.length; index2++) {
if (addRows[index2].name.trim() === '' && errors < 5) {
errors++
const { start: start2 } = useTimeoutFn(() => {
ElMessage({
message: `\u5E8F\u53F7${addRows[index2].sort}\uFF0C\u8BF7\u8F93\u5165\u7C7B\u9879\u540D\u79F0`,
grouping: true,
type: 'error',
})
}, 0)
start2()
isValidate = false
}
}
lodash$2.exports.forEach(repeatCount, async (value2, key2) => {
if (value2 > 1 && errors < 5) {
errors++
const { start: start2 } = useTimeoutFn(() => {
ElMessage.error(
`\u5B58\u5728\u76F8\u540C\u540D\u79F0"${key2}", \u8BF7\u91CD\u65B0\u4FEE\u6539`
)
}, 0)
start2()
isValidate = false
}
})
if (!isValidate) return
const allPromises = []
updateRows.length &&
allPromises.push(
updateAlarmType(updateRows).then(() => {
updateRows = []
})
)
addRows.length &&
allPromises.push(
addAlarmType(
addRows.map((item2) => {
return { name: item2.name, groupID: props2.groupID }
})
).then(() => {
addRows = []
})
)
Promise.all(allPromises)
.then(() => {
ElMessage.success('\u4FDD\u5B58\u6210\u529F')
getData()
setSaveStatus(Project$2.saveStatusTypes.saved)
})
.catch(() => {
setSaveStatus(Project$2.saveStatusTypes.fail)
})
}
const changeCheck = () => {
selectedRows = xTable.value.getCheckboxRecords()
}
const addRow = () => {
data2.tableData = [
...data2.tableData,
{
id: 'new_' + initUtils.createRandomId(),
name: '',
is_new: true,
groupID: props2.groupID,
},
]
}
const deleteRows = () => {
if (selectedRows.length == 0)
return ElMessage.warning('\u8BF7\u9009\u62E9\u6570\u636E')
data2.showDeleteDialog = true
}
const handleConfirmDelete = async () => {
const directRemoveIds = selectedRows
.filter((item2) => item2.is_new)
.map((item2) => item2.id)
deleteLevelsId = selectedRows
.filter((item2) => !item2.is_new)
.map((item2) => item2.id)
deleteLevelsId.length && (await deleteAlarmType(deleteLevelsId))
data2.tableData = data2.tableData.filter(
(item2) =>
!deleteLevelsId.includes(item2.id) &&
!directRemoveIds.includes(item2.id)
)
deleteLevelsId = []
data2.showDeleteDialog = false
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_button = resolveComponent('el-button')
const _component_el_form = resolveComponent('el-form')
const _component_vxe_column = resolveComponent('vxe-column')
const _component_vxe_table = resolveComponent('vxe-table')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
_component_el_dialog,
{
'append-to-body': '',
modelValue: unref(show),
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
isRef(show) ? (show.value = $event) : null),
width: '700px',
top: '22vh',
title: props2.groupName,
'custom-class': 'cms-el-dialog',
onOpen: handleOpen2,
onClose: handleCancel,
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$17, [
createElementVNode('div', _hoisted_2$10, [
createVNode$1(
_component_el_form,
{
inline: true,
model: unref(searchData),
class: 'demo-form-inline',
},
{
default: withCtx(() => [
createVNode$1(_component_el_form_item, null, {
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue:
unref(searchData).alarm_level_name,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(searchData).alarm_level_name =
$event)),
class: 'screen-input cms-el-input-x',
placeholder:
'\u8BF7\u8F93\u5165\u7C7B\u522B\u9879\u540D\u79F0',
clearable: '',
},
null,
8,
['modelValue']
),
]),
_: 1,
}),
createVNode$1(_component_el_form_item, null, {
default: withCtx(() => [
createVNode$1(
_component_el_button,
{
class: 'cms-btn btn-screen-btn btn-reset',
onClick: getData,
},
{
default: withCtx(() => [_hoisted_3$W]),
_: 1,
}
),
]),
_: 1,
}),
]),
_: 1,
},
8,
['model']
),
createElementVNode('div', { class: 'flex content-start' }, [
createElementVNode(
'button',
{
class: 'cms-btn btn-data-plain success',
onClick: addRow,
},
'\u6DFB\u52A0'
),
createElementVNode(
'button',
{
class: 'cms-btn btn-data-plain danger',
onClick: deleteRows,
},
'\u5220\u9664'
),
createElementVNode(
'button',
{
class: 'cms-btn btn-data-plain primary',
onClick: handleConfirm,
},
'\u4FDD\u5B58'
),
]),
]),
createElementVNode('div', _hoisted_4$N, [
createVNode$1(
_component_vxe_table,
{
border: '',
class: 'cms-vxe-table cms-vxe-table-min',
ref_key: 'xTable',
ref: xTable,
height: '300',
'row-config': { keyField: 'id' },
data: unref(data2).tableData,
'show-overflow': 'tooltip',
'tooltip-config': tableTooltipConfig,
'column-config': { resizable: false },
'edit-config': { trigger: 'click', mode: 'cell' },
'checkbox-config': {
checkRowKeys: defaultSelectedLevels.value,
checkField: 'checked',
highlight: true,
},
onCheckboxChange: changeCheck,
onCheckboxAll: changeCheck,
onEditClosed: handleEditClosed,
},
{
default: withCtx(() => [
createVNode$1(_component_vxe_column, {
type: 'checkbox',
width: '40',
}),
createVNode$1(_component_vxe_column, {
type: 'seq',
width: '60',
title: '\u5E8F\u53F7',
align: 'center',
}),
createVNode$1(
_component_vxe_column,
{
field: 'name',
title: '\u7C7B\u522B\u9879\u540D\u79F0',
'min-width': '150',
'edit-render': { autofocus: '.el-input__inner' },
},
{
edit: withCtx(({ row }) => [
createVNode$1(
_component_el_input,
{
modelValue: row.name,
'onUpdate:modelValue': ($event) =>
(row.name = $event),
type: 'text',
placeholder:
'\u8BF7\u8F93\u5165\u7C7B\u522B\u9879\u540D\u79F0',
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
]),
_: 1,
},
8,
['edit-render']
),
]),
_: 1,
},
8,
['data', 'checkbox-config']
),
]),
createElementVNode(
'div',
{
class:
'el-dialog__footer full-width flex justify-items-end',
},
[
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: handleCancel,
},
'\u53D6\u6D88'
),
]
),
]),
]),
_: 1,
},
8,
['modelValue', 'title']
),
(openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
modelValue: unref(data2).showDeleteDialog,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(data2).showDeleteDialog = $event)),
title: '\u786E\u8BA4\u5220\u9664',
width: '450px',
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
key: new Date().toISOString(),
},
{
default: withCtx(() => [
_hoisted_5$I,
createElementVNode('div', _hoisted_6$C, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick:
_cache[2] ||
(_cache[2] = ($event) =>
(unref(data2).showDeleteDialog = false)),
},
{
default: withCtx(() => [_hoisted_7$w]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: handleConfirmDelete,
},
{
default: withCtx(() => [_hoisted_8$v]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
)),
])
)
}
},
})
var AlarmTypeConf = /* @__PURE__ */ _export_sfc(_sfc_main$1c, [
['__scopeId', 'data-v-83afa6f6'],
])
var AlarmTypeConf$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: AlarmTypeConf,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var AlarmTypesConf_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$G = (n2) => (
pushScopeId('data-v-04d27029'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$16 = { class: 'flex flex-col' }
const _hoisted_2$$ = {
class: 'screen flex full-width justify-between content-start',
}
const _hoisted_3$V = /* @__PURE__ */ createTextVNode('\u67E5\u8BE2')
const _hoisted_4$M = { class: 'flex-1 full-width' }
const _hoisted_5$H = /* @__PURE__ */ _withScopeId$G(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-paixu btn-move drag-btn' },
null,
-1
)
)
const _hoisted_6$B = /* @__PURE__ */ _withScopeId$G(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-paixu',
style: { 'margin-left': '-8px' },
},
null,
-1
)
)
const _hoisted_7$v = { class: 'flex content-center' }
const _hoisted_8$u = ['onClick']
const _hoisted_9$u = /* @__PURE__ */ _withScopeId$G(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'dialog-content' },
[
/* @__PURE__ */ createElementVNode(
'div',
null,
'\u786E\u8BA4\u540E\uFF0C\u4ECE\u5217\u8868\u5220\u9664\u9009\u4E2D\u7684\u62A5\u8B66\u7C7B\u522B\u7EC4'
),
],
-1
)
)
const _hoisted_10$t = { class: 'el-dialog__footer' }
const _hoisted_11$q = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_12$q = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$1b = /* @__PURE__ */ defineComponent({
emits: ['cancel', 'confirm', 'changeName', 'update:modelValue'],
setup(__props2, { emit: emit2 }) {
const show = ref(false)
const xTable = ref()
const data2 = reactive({
tableData: [],
showDeleteDialog: false,
groupID: '',
showAlarmTypeGroupConf: false,
groupName: '',
})
let searchData = reactive({
alarm_level_name: '',
})
let originTableData = []
const tableTooltipConfig = {
enterable: true,
contentMethod: ({ column, row }) => {
const { property: property2 } = column
return row[property2]
},
}
const defaultSelectedLevels = ref([])
let selectedLevels = []
watch$1(
() => data2.tableData,
(val2) => {
if (JSON.stringify(val2) !== JSON.stringify(originTableData)) {
setSaveStatus(Project$2.saveStatusTypes.unsaved)
}
},
{
deep: true,
}
)
const getData = async () => {
const res = await getAlarmTypeGroup(searchData.alarm_level_name)
data2.tableData = res
xTable.value?.reloadData(data2.tableData)
originTableData = lodash$2.exports.cloneDeep(data2.tableData)
}
const handleOpen2 = () => {
searchData.alarm_level_name = ''
getData()
if (!sortable) nextTick(() => sortableInit())
}
const handleCancel = () => {
selectedLevels = []
show.value = false
emit2('cancel')
}
let updateRows = []
let deleteLevelsId = []
const handleEditClosed = ({ row }) => {
for (let i2 = 0; i2 < originTableData.length; i2++) {
const currentOriginRow = originTableData[i2]
if (currentOriginRow.id === row.id) {
let hasUpdateLevel = lodash$2.exports.find(
updateRows,
(level) => level.id === row.id
)
if (hasUpdateLevel) {
if (hasUpdateLevel.name === currentOriginRow.name) {
updateRows = lodash$2.exports.filter(
updateRows,
(level) => level.id !== row.id
)
} else {
hasUpdateLevel.name = row.name
}
} else if (row.name !== currentOriginRow.name) {
updateRows.push(row)
}
break
}
}
}
const handleConfirm = async () => {
setSaveStatus(Project$2.saveStatusTypes.saving)
data2.tableData.forEach((row, index2) => {
row.sort = index2 + 1
})
const levels = data2.tableData
const repeatCount = lodash$2.exports.omit(
lodash$2.exports.countBy(levels, 'name'),
''
)
let addRows = data2.tableData.filter((level) => level.is_new)
let isValidate = true
let errors = 0
for (let index2 = 0; index2 < addRows.length; index2++) {
if (addRows[index2].name.trim() === '' && errors < 5) {
errors++
const { start: start2 } = useTimeoutFn(() => {
ElMessage({
message: `\u5E8F\u53F7${addRows[index2].sort}\uFF0C\u8BF7\u8F93\u5165\u7C7B\u522B\u7EC4\u540D\u79F0`,
grouping: true,
type: 'error',
})
}, 0)
start2()
isValidate = false
}
}
lodash$2.exports.forEach(repeatCount, (value2, key2) => {
if (value2 > 1 && errors < 5) {
errors++
const { start: start2 } = useTimeoutFn(() => {
ElMessage.error(
`\u5B58\u5728\u76F8\u540C\u540D\u79F0"${key2}", \u8BF7\u91CD\u65B0\u4FEE\u6539`
)
}, 0)
start2()
isValidate = false
}
})
if (!isValidate) return
const allPromises = []
updateRows.length &&
allPromises.push(
updateAlarmTypeGroup(updateRows).then(() => {
updateRows = []
})
)
addRows.length &&
allPromises.push(
addAlarmTypeGroup(
addRows.map((item2) => {
return { name: item2.name }
})
).then(() => {
addRows = []
})
)
Promise.all(allPromises)
.then(() => {
ElMessage.success('\u4FDD\u5B58\u6210\u529F')
getData()
setSaveStatus(Project$2.saveStatusTypes.saved)
})
.catch(() => {
setSaveStatus(Project$2.saveStatusTypes.fail)
})
}
const changeCheck = () => {
selectedLevels = xTable.value.getCheckboxRecords()
}
const addLevel = () => {
data2.tableData = [
...data2.tableData,
{
id: 'new_' + initUtils.createRandomId(),
name: '',
groupID: '',
is_new: true,
},
]
}
const removeLevels = () => {
if (selectedLevels.length == 0)
return ElMessage.warning('\u8BF7\u9009\u62E9\u6570\u636E')
data2.showDeleteDialog = true
}
const openAlarmTypeGroupConf = (row) => {
if (row.id.match(/^new_.*/))
return ElMessage.warning(
'\u8BF7\u5148\u4FDD\u5B58\u65B0\u589E\u8BB0\u5F55'
)
data2.showAlarmTypeGroupConf = true
data2.groupID = row.id
data2.groupName = row.name
}
let sortable
let moveable = true
const sortableInit = () => {
const $table = xTable.value
if (!$table?.$el) return
sortable = Sortable.create(
$table.$el.querySelector(
'.drag-table .body--wrapper>.vxe-table--body tbody'
),
{
handle: '.drag-btn',
chosenClass: 'sortable-chosen',
swapThreshold: 1,
animation: 150,
onEnd: (sortableEvent) => {
if (!moveable)
return ElMessage.error(
'\u79FB\u52A8\u5931\u8D25, \u8BF7\u8FDB\u884C\u4FDD\u5B58\u64CD\u4F5C'
)
const newIndex2 = sortableEvent.newIndex
const oldIndex2 = sortableEvent.oldIndex
const destinationHigherSort = newIndex2
? data2.tableData[newIndex2].sort
: -1
const currRow = data2.tableData.splice(oldIndex2, 1)[0]
data2.tableData.splice(newIndex2, 0, currRow)
dragMoveAlarmTypeGroup({
destinationHigherSort,
dragItem: currRow,
})
},
onMove: function () {
moveable = true
const addRows = data2.tableData.filter((level) => level.is_new)
if (addRows.length || updateRows.length) {
moveable = false
return false
}
},
}
)
}
const handleConfirmDelete = async () => {
const directRemoveIds = selectedLevels
.filter((item2) => item2.is_new)
.map((item2) => item2.id)
deleteLevelsId = selectedLevels
.filter((item2) => !item2.is_new)
.map((item2) => item2.id)
deleteLevelsId.length && (await deleteAlarmTypeGroup(deleteLevelsId))
data2.tableData = data2.tableData.filter(
(item2) =>
!deleteLevelsId.includes(item2.id) &&
!directRemoveIds.includes(item2.id)
)
deleteLevelsId = []
data2.showDeleteDialog = false
ElMessage.success('\u5220\u9664\u6210\u529F')
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_button = resolveComponent('el-button')
const _component_el_form = resolveComponent('el-form')
const _component_vxe_column = resolveComponent('vxe-column')
const _component_vxe_table = resolveComponent('vxe-table')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', null, [
createElementVNode('button', {
class: 'icon-button iconfont icon-baojingleibie',
onClick: _cache[0] || (_cache[0] = ($event) => (show.value = true)),
title: '\u62A5\u8B66\u7C7B\u522B',
}),
createVNode$1(
_component_el_dialog,
{
'append-to-body': '',
modelValue: show.value,
'onUpdate:modelValue':
_cache[2] || (_cache[2] = ($event) => (show.value = $event)),
width: '700px',
top: '22vh',
title: '\u62A5\u8B66\u7C7B\u522B\u914D\u7F6E',
'custom-class': 'cms-el-dialog',
onOpen: handleOpen2,
onClose: handleCancel,
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$16, [
createElementVNode('div', _hoisted_2$$, [
createVNode$1(
_component_el_form,
{
inline: true,
model: unref(searchData),
class: 'demo-form-inline',
},
{
default: withCtx(() => [
createVNode$1(_component_el_form_item, null, {
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue:
unref(searchData).alarm_level_name,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(searchData).alarm_level_name =
$event)),
class: 'screen-input cms-el-input-x',
placeholder:
'\u8BF7\u8F93\u5165\u7C7B\u522B\u7EC4\u540D\u79F0',
clearable: '',
},
null,
8,
['modelValue']
),
]),
_: 1,
}),
createVNode$1(_component_el_form_item, null, {
default: withCtx(() => [
createVNode$1(
_component_el_button,
{
class: 'cms-btn btn-screen-btn btn-reset',
onClick: getData,
},
{
default: withCtx(() => [_hoisted_3$V]),
_: 1,
}
),
]),
_: 1,
}),
]),
_: 1,
},
8,
['model']
),
createElementVNode('div', { class: 'flex content-start' }, [
createElementVNode(
'button',
{
class: 'cms-btn btn-data-plain success',
onClick: addLevel,
},
'\u6DFB\u52A0'
),
createElementVNode(
'button',
{
class: 'cms-btn btn-data-plain danger',
onClick: removeLevels,
},
'\u5220\u9664'
),
createElementVNode(
'button',
{
class: 'cms-btn btn-data-plain primary',
onClick: handleConfirm,
},
'\u4FDD\u5B58'
),
]),
]),
createElementVNode('div', _hoisted_4$M, [
createVNode$1(
_component_vxe_table,
{
border: '',
class: 'cms-vxe-table cms-vxe-table-min drag-table',
ref_key: 'xTable',
ref: xTable,
height: '400',
'row-config': { keyField: 'id', useKey: true },
data: unref(data2).tableData,
'show-overflow': 'tooltip',
'tooltip-config': tableTooltipConfig,
'column-config': { resizable: false },
'edit-config': { trigger: 'click', mode: 'cell' },
'scroll-x': { gt: -1 },
'scroll-y': { gt: -1 },
'checkbox-config': {
checkRowKeys: defaultSelectedLevels.value,
checkField: 'checked',
highlight: true,
},
onCheckboxChange: changeCheck,
onCheckboxAll: changeCheck,
onEditClosed: handleEditClosed,
},
{
default: withCtx(() => [
createVNode$1(
_component_vxe_column,
{
width: '45',
title: '',
align: 'center',
},
{
default: withCtx(() => [_hoisted_5$H]),
header: withCtx(() => [_hoisted_6$B]),
_: 1,
}
),
createVNode$1(_component_vxe_column, {
type: 'checkbox',
width: '40',
}),
createVNode$1(_component_vxe_column, {
type: 'seq',
width: '60',
title: '\u5E8F\u53F7',
align: 'center',
}),
createVNode$1(
_component_vxe_column,
{
field: 'name',
title: '\u7C7B\u522B\u7EC4\u540D\u79F0',
'min-width': '150',
'edit-render': { autofocus: '.el-input__inner' },
},
{
edit: withCtx(({ row }) => [
createVNode$1(
_component_el_input,
{
modelValue: row.name,
'onUpdate:modelValue': ($event) =>
(row.name = $event),
type: 'text',
placeholder:
'\u8BF7\u8F93\u5165\u7C7B\u522B\u7EC4\u540D\u79F0',
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
]),
_: 1,
},
8,
['edit-render']
),
createVNode$1(
_component_vxe_column,
{
field: '',
title: '\u64CD\u4F5C',
width: '60',
align: 'center',
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_7$v, [
createElementVNode(
'i',
{
class:
'iconfont icon-tupianbianji icon-button',
onClick: ($event) =>
openAlarmTypeGroupConf(row),
},
null,
8,
_hoisted_8$u
),
]),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['data', 'checkbox-config']
),
]),
createElementVNode(
'div',
{
class:
'el-dialog__footer full-width flex justify-items-end',
},
[
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: handleCancel,
},
'\u53D6\u6D88'
),
]
),
]),
]),
_: 1,
},
8,
['modelValue']
),
(openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
modelValue: unref(data2).showDeleteDialog,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(data2).showDeleteDialog = $event)),
title: '\u786E\u8BA4\u5220\u9664',
width: '450px',
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
key: new Date().toISOString(),
},
{
default: withCtx(() => [
_hoisted_9$u,
createElementVNode('div', _hoisted_10$t, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick:
_cache[3] ||
(_cache[3] = ($event) =>
(unref(data2).showDeleteDialog = false)),
},
{
default: withCtx(() => [_hoisted_11$q]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: handleConfirmDelete,
},
{
default: withCtx(() => [_hoisted_12$q]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
)),
createVNode$1(
AlarmTypeConf,
{
modelValue: unref(data2).showAlarmTypeGroupConf,
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) =>
(unref(data2).showAlarmTypeGroupConf = $event)),
'group-ID': unref(data2).groupID,
'group-name': unref(data2).groupName,
},
null,
8,
['modelValue', 'group-ID', 'group-name']
),
])
)
}
},
})
var AlarmTypesConf = /* @__PURE__ */ _export_sfc(_sfc_main$1b, [
['__scopeId', 'data-v-04d27029'],
])
var AlarmTypesConf$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: AlarmTypesConf,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var SheetCreateDialog_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$15 = { class: 'dialog-content' }
const _hoisted_2$_ = { class: 'form-table' }
const _hoisted_3$U = { class: 'el-dialog__footer' }
const _hoisted_4$L = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_5$G = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _hoisted_6$A = { class: 'dialog-content' }
const _hoisted_7$u = { class: 'tree mix-tree' }
const _hoisted_8$t = { class: 'title' }
const _hoisted_9$t = { class: 'check' }
const _hoisted_10$s = { class: 'el-dialog__footer' }
const _hoisted_11$p = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_12$p = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$1a = /* @__PURE__ */ defineComponent({
emits: ['createSheet', 'editSheet'],
setup(__props2, { expose, emit: emit2 }) {
let relevance = reactive({
visible: false,
data: null,
node: null,
})
const relevanceClose = () => {
relevance.visible = false
}
const relevanceClosed = () => {
filterText.value = ''
}
const relevanceConfirm = async () => {
if (!relevance.node?.id)
return ElMessage.warning('\u8BF7\u9009\u62E9\u6570\u636E\u8868')
relevance.visible = false
relevance.data = relevance.node
}
const mixTreeRef = ref()
const filterText = ref('')
watch$1(filterText, (val2) => {
mixTreeRef.value.filter(val2)
})
const filterNode = (value2, data2) => {
if (!value2) return true
return data2.name.includes(value2)
}
const clickNode = (node2) => {
if (node2.type === 1) return
relevance.node = node2
}
let model = reactive({
visible: false,
type: 1,
name: '',
placeholder: '',
})
const open2 = (type4) => {
model.type = type4
model.visible = true
model.name = ''
model.placeholder = `\u65B0\u5EFA\u62A5\u8B66\u7EC4-${Math.random()
.toString()
.slice(-4)}`
}
const opened = () => {
setTimeout(() => {
let nodeList2 =
document.querySelectorAll('.mix-tree .node-folder') || []
for (let i2 = 0; i2 < nodeList2.length; i2++) {
if (nodeList2[i2] && nodeList2[i2].parentNode) {
nodeList2[i2].parentNode.style.background = '#202124'
}
}
}, 1200)
}
const close2 = () => {
model.visible = false
}
const closed = () => {
if (relevance.data) relevance.data = null
if (relevance.node) relevance.node = null
if (edit2.value) editReset()
}
const confirm2 = async () => {
const type4 = model.type
const name2 = model.name || model.placeholder
const id2 = editNode.value?.id || ''
if (!name2) {
ElMessage.error('\u6587\u4EF6\u540D\u4E0D\u80FD\u4E3A\u7A7A')
return
}
if (rename(id2, name2)) {
ElMessage.error(
`${name2} \u5DF2\u5B58\u5728\uFF0C\u8BF7\u91CD\u65B0\u8F93\u5165`
)
return
}
if (model.type === 3 && !relevance.data?.id) {
ElMessage.warning(
'\u8BF7\u5148\u9009\u62E9\u9700\u8981\u5173\u8054\u7684\u6570\u636E\u8868'
)
return
}
if (edit2.value) {
emit2('editSheet', type4, name2, relevance.data, editNode.value)
} else {
emit2('createSheet', type4, name2, relevance.data)
}
}
const rename = (curId, newName) => {
let sameName = false
const loop = (sheets) => {
if (sameName) return
for (let i2 = 0, iLen = sheets.length; i2 < iLen; i2++) {
const _sheet = sheets[i2]
if (_sheet.id !== curId && _sheet.name === newName) sameName = true
if (_sheet.children?.length) loop(_sheet.children)
}
}
if (state$1.sheets.length) loop(state$1.sheets)
return sameName
}
let edit2 = ref(false)
let editNode = ref(null)
const editReset = () => {
edit2.value = false
editNode.value = null
}
const editOpen = async (node2) => {
edit2.value = true
editNode.value = node2
model.visible = true
model.type = node2.type
model.name = node2.name
if (node2.type === 2) {
relevance.data = node2
}
if (node2.type === 3) {
let res = await getAggregatetable$1(node2.id)
let relevanceNode = getSheetById$1(res.relativeTableId)
relevance.data = relevanceNode
}
}
expose({
open: open2,
close: close2,
editOpen,
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_form = resolveComponent('el-form')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
const _component_el_icon = resolveComponent('el-icon')
const _component_ElTree = resolveComponent('ElTree')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
_component_el_dialog,
{
modelValue: unref(model).visible,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) => (unref(model).visible = $event)),
'append-to-body': true,
'close-on-click-modal': false,
title: '\u65B0\u589E\u62A5\u8B66\u7EC4',
onOpened: opened,
onClosed: closed,
'custom-class': 'cms-el-dialog',
width: '450px',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$15, [
createVNode$1(
_component_el_form,
{
onSubmit:
_cache[1] ||
(_cache[1] = withModifiers(() => {}, ['prevent'])),
'label-width': '95px',
'label-position': 'left',
class: 'cms-el-form',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$_, [
createVNode$1(
_component_el_form_item,
{ label: '\u62A5\u8B66\u7EC4\u540D\u79F0\uFF1A' },
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: unref(model).name,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(model).name = $event)),
placeholder: unref(model).placeholder,
clearable: '',
},
null,
8,
['modelValue', 'placeholder']
),
]),
_: 1,
}
),
]),
]),
_: 1,
}
),
]),
createElementVNode('div', _hoisted_3$U, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: close2,
},
{
default: withCtx(() => [_hoisted_4$L]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_5$G]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_dialog,
{
modelValue: unref(relevance).visible,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) => (unref(relevance).visible = $event)),
'append-to-body': true,
'close-on-click-modal': false,
onClosed: relevanceClosed,
draggable: '',
title: '\u9009\u62E9\u6570\u636E\u8868',
'custom-class': 'cms-el-dialog',
width: '450px',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_6$A, [
createVNode$1(
_component_el_input,
{
modelValue: filterText.value,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) => (filterText.value = $event)),
placeholder: '\u5173\u952E\u5B57\u641C\u7D22',
clearable: '',
},
null,
8,
['modelValue']
),
createElementVNode('div', _hoisted_7$u, [
createVNode$1(
_component_ElTree,
{
ref_key: 'mixTreeRef',
ref: mixTreeRef,
class: 'cms_el_tree_x',
'default-expand-all': '',
data: unref(state$1).sheets,
props: { label: 'name' },
'filter-node-method': filterNode,
onNodeClick: clickNode,
},
{
default: withCtx(({ data: data2 }) => [
createElementVNode(
'div',
{
class: normalizeClass([
'node flex',
{
'node-folder': data2.type === 1,
'node-current':
data2 === unref(relevance).node,
},
]),
style: { width: 'calc(100% - 24px)' },
},
[
createElementVNode(
'i',
{
class: normalizeClass(
unref(SheetTypeIcon$1)[data2.type]
),
},
null,
2
),
createElementVNode('div', _hoisted_8$t, [
createVNode$1(
EllipsisTooltip,
{
width: '100%',
content: data2.name,
},
null,
8,
['content']
),
]),
createElementVNode('span', _hoisted_9$t, [
data2 === unref(relevance).node
? (openBlock(),
createBlock(
_component_el_icon,
{ key: 0 },
{
default: withCtx(() => [
createVNode$1(unref(select$1)),
]),
_: 1,
}
))
: createCommentVNode('', true),
]),
],
2
),
]),
_: 1,
},
8,
['data']
),
]),
]),
createElementVNode('div', _hoisted_10$s, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: withModifiers(relevanceClose, ['stop']),
},
{
default: withCtx(() => [_hoisted_11$p]),
_: 1,
},
8,
['onClick']
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: withModifiers(relevanceConfirm, ['stop']),
},
{
default: withCtx(() => [_hoisted_12$p]),
_: 1,
},
8,
['onClick']
),
]),
]),
_: 1,
},
8,
['modelValue']
),
])
)
}
},
})
var SheetCreateDialog = /* @__PURE__ */ _export_sfc(_sfc_main$1a, [
['__scopeId', 'data-v-ebe6b09c'],
])
var SheetCreateDialog$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: SheetCreateDialog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Sidebar_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$F = (n2) => (
pushScopeId('data-v-f9b7dad6'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$14 = { class: 'SheetTree' }
const _hoisted_2$Z = { class: 'title flex justify-between' }
const _hoisted_3$T = /* @__PURE__ */ _withScopeId$F(() =>
/* @__PURE__ */ createElementVNode(
'div',
null,
[
/* @__PURE__ */ createElementVNode('i', {
class: 'iconfont icon-baojingzu title_img',
}),
/* @__PURE__ */ createElementVNode('span', null, '\u62A5\u8B66\u7EC4'),
],
-1
)
)
const _hoisted_4$K = { class: 'title-buttons flex' }
const _hoisted_5$F = { class: 'search flex' }
const _hoisted_6$z = { class: 'search_tool flex' }
const _hoisted_7$t = { class: 'tree' }
const _hoisted_8$s = ['onDblclick']
const _hoisted_9$s = { class: 'btn' }
const _hoisted_10$r = /* @__PURE__ */ _withScopeId$F(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-gengduo menu' },
null,
-1
)
)
const _hoisted_11$o = /* @__PURE__ */ createTextVNode(
' \u4FEE\u6539\u540D\u79F0'
)
const _hoisted_12$o = /* @__PURE__ */ createTextVNode('\u5220\u9664 ')
const _hoisted_13$m = { class: 'dialog-content' }
const _hoisted_14$j = { class: 'el-dialog__footer' }
const _hoisted_15$j = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_16$j = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$19 = /* @__PURE__ */ defineComponent({
props: {
selectedGroup: Object,
},
emits: ['update:selectedGroup'],
setup(__props2, { expose, emit: emit2 }) {
const props2 = __props2
watch$1(
() => state$1.sheets,
() => {
if (!state$1.sheets.length) {
state$1.current = {}
}
},
{ deep: true, immediate: true }
)
const selectedGroup = useVModel(props2, 'selectedGroup', emit2)
const treeRef = ref()
const inputRef = ref()
const creating = ref(false)
const sheetCreateRef = ref(null)
const releaseDialog = reactive({
show: false,
message: '',
})
const createDialogOpen = (type4) => sheetCreateRef.value?.open(type4)
const nodeInsert = (newNode, currentNode) => {
if (!treeRef.value) {
state$1.sheets.push(newNode)
return
}
try {
if (currentNode) {
const node2 = treeRef.value.getNodeById(currentNode.id)
if (node2) {
if (currentNode.nodeType === 0 && newNode.nodeType === 1) {
if (!currentNode.children) {
currentNode.children = []
}
currentNode.children.push(newNode)
} else {
let parentNode2 = Array.isArray(node2.parent)
? node2.parent
: node2.parent.children
let length2 = parentNode2.filter(
(item2) => item2.nodeType === 0
).length
let idx =
length2 > 0
? parentNode2.indexOf(parentNode2[length2 - 1]) + 1
: 0
parentNode2.splice(idx, 0, newNode)
}
} else {
state$1.sheets.push(newNode)
}
} else {
state$1.sheets.push(newNode)
}
} catch (error2) {
state$1.sheets.push(newNode)
}
}
const createFolders = async () => {
if (creating.value) return
creating.value = true
const sheet = state$1.current.sheet
if (sheet?.id) {
const treeNode = treeRef.value?.getNodeById(sheet.id)
if (treeNode && treeNode.level >= 4) {
ElMessage.warning(
'\u6587\u4EF6\u5D4C\u5957\u4E0D\u80FD\u8D85\u8FC74\u5C42'
)
creating.value = false
return
}
}
await createFolder$1()
.then((folder2) => {
folder2.type = folder2.nodeType
nodeInsert(folder2, sheet)
nextTick(() => {
nodeClick(folder2)
editNode(folder2)
})
})
.finally(() => {
setTimeout(() => (creating.value = false), 700)
})
}
const createSheet = async (type4, name2) => {
if (name2.trim() == '')
return ElMessage.error(
'\u8BF7\u8F93\u5165\u62A5\u8B66\u7EC4\u540D\u79F0'
)
if (creating.value) return
creating.value = true
const sheet = state$1.current.sheet
let parentId = null
if (sheet?.nodeType !== void 0) {
parentId = sheet.nodeType === 0 ? sheet.id : sheet.parentId
}
addAlarmFolderItem({
name: name2,
nodeType: type4,
parentId,
})
.then((newSheet) => {
nodeInsert(newSheet, sheet)
nextTick(() => {
nodeClick(newSheet)
editNode(newSheet)
sheetCreateRef.value?.close()
})
})
.finally(() => {
creating.value = false
})
}
const editSheet = async (type4, sheetName, relevance, _editNode) => {
if (creating.value) return
creating.value = true
let newSheet = _editNode
if (type4 === 3) {
await editAggregatetable$1(sheetName, relevance, _editNode).finally(
() => {
creating.value = false
}
)
newSheet.name = sheetName
} else if (type4 === 2) {
let _sheet = { ..._editNode, name: sheetName }
await renameSheet$1(_sheet).finally(() => {
creating.value = false
})
newSheet.name = sheetName
}
nextTick(() => {
nodeClick(newSheet)
editNode(newSheet)
sheetCreateRef.value?.close()
})
}
let deleteConfig = reactive({
visible: false,
loading: false,
data: null,
message: '',
})
const deleteTreeNode = async () => {
if (!deleteConfig.data) return
deleteConfig.loading = true
const { nodeType, id: id2 } = deleteConfig.data
const ids = await deleteAlarmFolderItem({
type: nodeType,
id: id2,
}).finally(() => (deleteConfig.loading = false))
releaseDialog.show = false
let delNode = treeRef.value.getNodeById(id2)
let parentNode2 = []
if (Array.isArray(delNode.parent)) {
parentNode2 = delNode.parent
} else {
parentNode2 = delNode.parent.children
}
parentNode2.splice(parentNode2.indexOf(deleteConfig.data), 1)
const updateSelect = (ids2) => {
let current2 = state$1.current.sheet
if (current2) {
if (ids2 === current2.id) {
state$1.current.sheet = void 0
}
}
}
initSelectSheet()
updateSelect(ids)
}
const filterText = ref('')
const handleCommand = (param) => {
let { data: data2, type: type4 } = param
const fun = {
rename: () => {
editNode(data2)
},
edit: () => {
sheetCreateRef.value?.editOpen(data2)
},
delete: () => {
deleteConfig.data = data2
releaseDialog.show = true
if (data2.nodeType === 0) {
releaseDialog.message =
'\u82E5\u5B58\u5728\u6B63\u5728\u53D1\u751F\u7684\u62A5\u8B66\uFF0C\u5220\u9664\u6587\u4EF6\u5939\u5219\u89E3\u9664\u4E14\u4E0D\u8BB0\u5F55\u8FD9\u4E9B\u62A5\u8B66'
} else if (data2.nodeType === 1) {
releaseDialog.message =
'\u82E5\u5B58\u5728\u6B63\u5728\u53D1\u751F\u7684\u62A5\u8B66\uFF0C\u5220\u9664\u62A5\u8B66\u7EC4\u5219\u89E3\u9664\u4E14\u4E0D\u8BB0\u5F55\u8FD9\u4E9B\u62A5\u8B66'
}
},
}
fun[type4]()
}
const nodeEditStatus = ref({})
const getNodeEditing = (sheet) => {
return nodeEditStatus.value.id === sheet.id
}
const setNodeEditing = (sheet, boolean) => {
if (boolean) {
nodeEditStatus.value = sheet
} else {
nodeEditStatus.value = {}
}
}
let currentFocusSheet = ref({
children: [],
id: '',
name: '',
parentId: null,
type: 1,
})
const focusEditNode = (sheet) => {
currentFocusSheet.value = lodash$2.exports.cloneDeep(sheet)
}
const blurEditNode = async (sheet) => {
const currentName = currentFocusSheet.value.name
if (sheet.name === currentName) {
setNodeEditing(sheet, false)
return
}
if (!sheet.name) {
ElMessage.error('\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A')
sheet.name = currentName
setNodeEditing(sheet, false)
return
}
let sameName = false
const loop = (sheets) => {
if (sameName) return
for (let i2 = 0, iLen = sheets.length; i2 < iLen; i2++) {
const _sheet = sheets[i2]
if (
_sheet.type !== 1 &&
_sheet.id !== sheet.id &&
_sheet.name === sheet.name
)
sameName = true
if (_sheet.children?.length) loop(_sheet.children)
}
}
if (state$1.sheets.length && sheet.type !== 1) loop(state$1.sheets)
if (sameName) {
ElMessage.error(
'\u62A5\u8B66\u7EC4\u5DF2\u5B58\u5728\uFF0C\u8BF7\u91CD\u65B0\u8F93\u5165'
)
sheet.name = currentName
setNodeEditing(sheet, false)
return
}
sheet.children = sheet.children || []
await updateAlarmFolderItem(sheet).catch(() => {
sheet.name = currentName
})
setNodeEditing(sheet, false)
}
const editNode = (sheet) => {
setNodeEditing(sheet, true)
nextTick(() => {
setTimeout(() => {
if (!inputRef.value) return
inputRef.value.focus()
inputRef.value.select()
}, 500)
})
}
const allowDrop = (draggingNode, dropNode, dropType) => {
if (dropNode.data.nodeType !== 0 && dropType === 'inner') return false
if (dropNode.level >= 4 && dropType === 'inner') return false
if (dropNode.level >= 4) {
return true
}
return true
}
const handleDrop = async (draggingNode, targetNode, dropType) => {
let index2 = 0
let parentNodeId = targetNode.parent.id
if (dropType === 'inner') {
index2 = targetNode.children.length
parentNodeId = targetNode.id
} else {
if (!Array.isArray(targetNode.parent)) {
index2 = targetNode.parent.children.indexOf(draggingNode.data)
} else {
parentNodeId = void 0
index2 = state$1.sheets.indexOf(draggingNode.data)
}
}
await sortAlarmFolderItem({
destinationHigherSort: index2,
dragItem: {
id: draggingNode.data.id,
nodeType: draggingNode.data.nodeType,
parentId: parentNodeId,
},
})
}
const handleNode = (node2, data2) => {
nodeClick(data2)
}
const nodeClick = (sheet) => {
state$1.current.sheet = sheet
if (sheet.nodeType === 1) {
selectedGroup.value = sheet
} else {
selectedGroup.value = void 0
}
}
const initSelectSheet = () => {
state$1.current = {}
if (!state$1.sheets || !state$1.sheets.length) {
selectedGroup.value = void 0
return
}
let parent2 = state$1.sheets[0]
let sheet = {
children: [],
id: '',
parentId: void 0,
name: '',
nodeType: -1,
}
const recursion = (list2) => {
for (let i2 = 0; i2 < list2.length; i2++) {
if (sheet.name) break
let item2 = list2[i2]
if (item2.nodeType === 1) {
sheet = item2
break
} else if (item2.children && item2.children.length) {
parent2 = item2
recursion(parent2.children)
}
}
}
recursion(state$1.sheets)
if (sheet) nodeClick(sheet)
}
onMounted(async () => {
await getTree$1()
initSelectSheet()
})
onUnmounted(async () => {
state$1.sheets = []
state$1.current = {}
})
const createDropdownRef = ref()
const createDropdownOpen = () => {
createDropdownRef.value.handleOpen()
}
expose({
createDropdownOpen,
createDialogOpen,
})
return (_ctx, _cache) => {
const _component_el_icon = resolveComponent('el-icon')
const _component_el_input = resolveComponent('el-input')
const _component_el_dropdown_item = resolveComponent('el-dropdown-item')
const _component_el_dropdown_menu = resolveComponent('el-dropdown-menu')
const _component_el_dropdown = resolveComponent('el-dropdown')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', _hoisted_1$14, [
createElementVNode('div', _hoisted_2$Z, [
_hoisted_3$T,
createElementVNode('div', _hoisted_4$K, [
createVNode$1(AlarmRecordsConf),
createVNode$1(AlarmLevelsConf),
createVNode$1(AlarmTypesConf),
]),
]),
createElementVNode('div', _hoisted_5$F, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x-search',
modelValue: filterText.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (filterText.value = $event)),
},
{
suffix: withCtx(() => [
createVNode$1(
_component_el_icon,
{ class: 'el-input__icon' },
{
default: withCtx(() => [createVNode$1(unref(search))]),
_: 1,
}
),
]),
_: 1,
},
8,
['modelValue']
),
createElementVNode('div', _hoisted_6$z, [
createElementVNode('i', {
class: 'iconfont icon-tianjiahuamian',
onClick:
_cache[1] || (_cache[1] = ($event) => createDialogOpen(1)),
title: '\u6DFB\u52A0\u62A5\u8B66\u7EC4',
}),
createElementVNode('i', {
class: 'iconfont icon-wenjianjia',
onClick: createFolders,
title: '\u6DFB\u52A0\u6587\u4EF6\u5939',
}),
]),
]),
createElementVNode('div', _hoisted_7$t, [
createVNode$1(
VirtualTree,
{
ref_key: 'treeRef',
ref: treeRef,
class: 'cms_el_tree_x',
draggable: '',
'default-expand-all': '',
filterText: filterText.value,
data: unref(state$1).sheets,
'allow-drop': allowDrop,
onNodeDrop: handleDrop,
onNodeClick: handleNode,
},
{
default: withCtx(({ node: node2, data: data2 }) => [
createElementVNode(
'div',
{
class: normalizeClass([
'node flex',
unref(state$1).current.sheet &&
unref(state$1).current.sheet.id == data2.id
? 'node-current'
: '',
]),
},
[
createElementVNode(
'i',
{
class: normalizeClass(
unref(SheetTypeIcon$1)[data2.nodeType]
),
},
null,
2
),
createElementVNode(
'div',
{
class: 'title tree-node-label',
onDblclick: ($event) => editNode(data2),
},
[
getNodeEditing(data2)
? (openBlock(),
createBlock(
_component_el_input,
{
key: 0,
ref_key: 'inputRef',
ref: inputRef,
class: 'cms-el-input-x title-input',
modelValue: data2.name,
'onUpdate:modelValue': ($event) =>
(data2.name = $event),
onFocus: ($event) => focusEditNode(data2),
onBlur: ($event) => blurEditNode(data2),
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
'onFocus',
'onBlur',
]
))
: (openBlock(),
createBlock(
EllipsisTooltip,
{
key: 1,
width: '100%',
content: data2.name,
},
null,
8,
['content']
)),
],
40,
_hoisted_8$s
),
createElementVNode('div', _hoisted_9$s, [
createVNode$1(
_component_el_dropdown,
{
trigger: 'hover',
onCommand: handleCommand,
},
{
dropdown: withCtx(() => [
createVNode$1(
_component_el_dropdown_menu,
null,
{
default: withCtx(() => [
createVNode$1(
_component_el_dropdown_item,
{
command: {
type: 'rename',
node: node2,
data: data2,
},
},
{
default: withCtx(() => [_hoisted_11$o]),
_: 2,
},
1032,
['command']
),
createVNode$1(
_component_el_dropdown_item,
{
class: 'item_delete',
command: {
type: 'delete',
node: node2,
data: data2,
},
},
{
default: withCtx(() => [_hoisted_12$o]),
_: 2,
},
1032,
['command']
),
]),
_: 2,
},
1024
),
]),
default: withCtx(() => [_hoisted_10$r]),
_: 2,
},
1024
),
]),
],
2
),
]),
_: 1,
},
8,
['filterText', 'data']
),
]),
(openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
modelValue: unref(releaseDialog).show,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) => (unref(releaseDialog).show = $event)),
title: '\u786E\u8BA4\u5220\u9664',
width: '450px',
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
key: new Date().toISOString(),
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_13$m, [
createElementVNode(
'div',
null,
toDisplayString$1(unref(releaseDialog).message),
1
),
]),
createElementVNode('div', _hoisted_14$j, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick:
_cache[2] ||
(_cache[2] = ($event) =>
(unref(releaseDialog).show = false)),
},
{
default: withCtx(() => [_hoisted_15$j]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: deleteTreeNode,
},
{
default: withCtx(() => [_hoisted_16$j]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
)),
createVNode$1(
SheetCreateDialog,
{
ref_key: 'sheetCreateRef',
ref: sheetCreateRef,
creating: creating.value,
onCreateSheet: createSheet,
onEditSheet: editSheet,
},
null,
8,
['creating']
),
])
)
}
},
})
var Sidebar = /* @__PURE__ */ _export_sfc(_sfc_main$19, [
['__scopeId', 'data-v-f9b7dad6'],
])
var Sidebar$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Sidebar,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var SelectAlarmTypes_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$13 = { class: 'flex' }
const _hoisted_2$Y = {
class: 'screen flex flex-1 justify-between content-start',
}
const _hoisted_3$S = /* @__PURE__ */ createTextVNode('\u67E5\u8BE2')
const _sfc_main$18 = /* @__PURE__ */ defineComponent({
props: {
selectedTypesId: {
type: Array,
default: () => [],
},
modelValue: {
type: Boolean,
default: false,
},
isAppendToBody: {
type: Boolean,
default: false,
},
showConfig: {
type: Boolean,
default: false,
},
configData: {
type: Object,
default: () => {},
},
isMultiple: {
type: Boolean,
default: true,
},
defaultCheckKey: {
type: Array,
default: () => [],
},
data: {
type: Object,
default: () => ({
id: '',
name: '',
}),
},
},
emits: [
'cancel',
'confirm',
'changeName',
'update:modelValue',
'update:selectedTypesId',
],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const { modelValue } = useVModels(props2, emit2)
const tableRef = ref()
const tableData2 = ref([])
const searchData = ref({
groupID: '',
keyword: '',
})
const alarmGroups = ref([])
const show = computed({
get: () => props2.modelValue,
set: (val2) => {
modelValue.value = val2
return val2
},
})
const clearData = async () => {
searchData.value = {
groupID: '',
keyword: '',
}
await getData()
}
let selectRow = ref([])
const queryData = async () => {
selectRow.value = !props2.isMultiple
? tableRef.value.getRadioRecord() === null
? []
: [tableRef.value.getRadioRecord()]
: tableRef.value.getCheckboxRecords()
await getData()
}
const viewChecked = () => {
selectRow.value = !props2.isMultiple
? [tableRef.value.getRadioRecord()]
: tableRef.value.getCheckboxRecords()
if (selectRow.value.length === 0) {
tableData2.value = []
return
}
if (props2.isMultiple) {
let cloneList = JSON.parse(JSON.stringify(tableData2.value))
tableData2.value = []
selectRow.value.forEach((item2) => {
if (cloneList.findIndex((c2) => c2.id === item2.id) >= 0) {
tableData2.value.push(item2)
}
})
} else {
tableData2.value = tableData2.value.filter(
(f2) => f2.id === selectRow.value[0].id
)
}
}
const getData = async () => {
tableData2.value = []
await getAlarmType(
searchData.value.groupID,
searchData.value.keyword
).then((res) => {
tableData2.value = res
tableRef.value.loadData(tableData2.value)
const selectedRows = tableData2.value.filter((row) =>
props2.selectedTypesId.includes(row.id)
)
if (props2.isMultiple) {
tableRef.value.setCheckboxRow(selectedRows, true)
} else {
tableRef.value.setRadioRow(selectedRows[0])
}
})
}
const handleOpen2 = async () => {
searchData.value = {
groupID: '',
keyword: '',
}
await getData()
handleGetAlarmTypeGroup()
}
const handleCancel = () => {
selectRow.value = []
show.value = false
emit2('cancel')
}
const handleConfirm = () => {
let selectedTypes = !props2.isMultiple
? tableRef.value.getRadioRecord() === null
? []
: [tableRef.value.getRadioRecord()]
: tableRef.value.getCheckboxRecords()
selectedTypes = selectedTypes.map((item2) => {
const findGroup = lodash$2.exports.find(
alarmGroups.value,
(group) => group.id === item2.groupID
)
item2.groupName = findGroup.name
return item2
})
emit2('confirm', selectedTypes)
modelValue.value = false
}
const handleGetAlarmTypeGroup = () => {
getAlarmTypeGroup().then((res) => {
alarmGroups.value = [
{ id: '', groupID: '', name: '\u5168\u90E8' },
...res,
]
})
}
handleGetAlarmTypeGroup()
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_input = resolveComponent('el-input')
const _component_el_button = resolveComponent('el-button')
const _component_el_form = resolveComponent('el-form')
const _component_vxe_column = resolveComponent('vxe-column')
const _component_vxe_table = resolveComponent('vxe-table')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
modelValue: unref(show),
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
isRef(show) ? (show.value = $event) : null),
width: '900px',
top: '22vh',
title: '\u62A5\u8B66\u7C7B\u522B\u9009\u62E9',
'custom-class': 'cms-el-dialog',
'append-to-body': true,
onOpen: handleOpen2,
onClose: handleCancel,
},
{
default: withCtx(() => [
createElementVNode('div', null, [
createElementVNode('div', _hoisted_1$13, [
createElementVNode('div', _hoisted_2$Y, [
createVNode$1(
_component_el_form,
{
inline: true,
model: searchData.value,
class: 'flex-row-full',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_form_item,
{
label: '\u62A5\u8B66\u7C7B\u522B',
style: { width: '216px' },
},
{
default: withCtx(() => [
createVNode$1(
_component_el_select,
{
modelValue: searchData.value.groupID,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(searchData.value.groupID = $event)),
class: 'cms-el-select-x',
'popper-class': 'cms-el-select__popper',
placeholder: '\u62A5\u8B66\u7C7B\u522B',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
alarmGroups.value,
(item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.id,
label: item2.name,
value: item2.id,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
_: 1,
}
),
createVNode$1(_component_el_form_item, null, {
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
class: 'screen-input cms-el-input-x',
style: { 'margin-left': '10px' },
placeholder:
'\u8BF7\u8F93\u5165\u5173\u952E\u5B57',
modelValue: searchData.value.keyword,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(searchData.value.keyword = $event)),
},
null,
8,
['modelValue']
),
]),
_: 1,
}),
createVNode$1(_component_el_form_item, null, {
default: withCtx(() => [
createVNode$1(
_component_el_button,
{
class: 'cms-btn btn-screen-btn btn-reset',
onClick: queryData,
},
{
default: withCtx(() => [_hoisted_3$S]),
_: 1,
}
),
]),
_: 1,
}),
]),
_: 1,
},
8,
['model']
),
]),
createElementVNode(
'div',
{
class: 'flex content-start',
style: { 'margin-bottom': '18px' },
},
[
createElementVNode(
'button',
{
class: 'cms-btn btn-data-plain success',
onClick: viewChecked,
},
'\u67E5\u770B\u9009\u4E2D'
),
createElementVNode(
'button',
{
class: 'cms-btn btn-data-plain danger',
onClick: clearData,
},
'\u6E05\u9664'
),
]
),
]),
createElementVNode('div', null, [
createVNode$1(
_component_vxe_table,
{
class: 'cms-vxe-table cms-vxe-table-min',
height: '300',
border: '',
data: tableData2.value,
'row-config': { keyField: 'id' },
'show-overflow': 'tooltip',
'checkbox-config': {
checkRowKeys: __props2.selectedTypesId,
highlight: true,
},
'column-config': { resizable: true },
ref_key: 'tableRef',
ref: tableRef,
},
{
default: withCtx(() => [
createVNode$1(
_component_vxe_column,
{
type: __props2.isMultiple ? 'checkbox' : 'radio',
width: '45',
align: 'center',
},
null,
8,
['type']
),
createVNode$1(_component_vxe_column, {
field: 'groupName',
title: '\u7C7B\u522B\u7EC4',
}),
createVNode$1(_component_vxe_column, {
field: 'name',
title: '\u7C7B\u522B\u9879',
}),
]),
_: 1,
},
8,
['data', 'checkbox-config']
),
]),
createElementVNode('div', { class: 'el-dialog__footer' }, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: handleCancel,
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: handleConfirm,
},
'\u786E\u8BA4'
),
]),
]),
]),
_: 1,
},
8,
['modelValue']
)
)
}
},
})
var SelectAlarmTypes = /* @__PURE__ */ _export_sfc(_sfc_main$18, [
['__scopeId', 'data-v-03d29bc1'],
])
var SelectAlarmTypes$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: SelectAlarmTypes,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var AlarmTable_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$E = (n2) => (
pushScopeId('data-v-1f5a41ff'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$12 = { class: 'page flex-row' }
const _hoisted_2$X = { class: 'screen flex-row' }
const _hoisted_3$R = /* @__PURE__ */ createTextVNode('\u67E5\u8BE2')
const _hoisted_4$J = { class: 'flex' }
const _hoisted_5$E = /* @__PURE__ */ _withScopeId$E(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-daoru icon-button' },
null,
-1
)
)
const _hoisted_6$y = { class: 'flex-row-full' }
const _hoisted_7$s = { class: 'flex' }
const _hoisted_8$r = { class: 'flex-1 text-ellipsis-1' }
const _hoisted_9$r = ['onClick']
const _hoisted_10$q = { class: 'vxe-cell--label vxe-cell-select' }
const _hoisted_11$n = { class: 'flex' }
const _hoisted_12$n = { class: 'flex-1 text-ellipsis-1' }
const _hoisted_13$l = ['onClick']
const _hoisted_14$i = /* @__PURE__ */ _withScopeId$E(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'dialog-content' },
[
/* @__PURE__ */ createElementVNode(
'div',
null,
'\u786E\u8BA4\u540E\uFF0C\u4ECE\u5217\u8868\u4E2D\u5220\u9664\u62A5\u8B66'
),
],
-1
)
)
const _hoisted_15$i = { class: 'el-dialog__footer' }
const _hoisted_16$i = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_17$g = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _hoisted_18$f = { class: 'dialog-content' }
const _hoisted_19$d = { class: 'el-dialog__footer' }
const _hoisted_20$c = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_21$9 = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$17 = /* @__PURE__ */ defineComponent({
props: {
selectedGroup: Object,
},
setup(__props2) {
const props2 = __props2
const data2 = reactive({
tableData: [],
expConfig: {
visible: false,
index: 0,
triggerType: '',
code: '',
},
showSelectAlarmTypes: false,
showDeleteDialog: false,
showReleaseDialog: false,
releaseDialogMsg: '',
})
const searchData = reactive({
keyword: '',
alarmLevelID: '',
alarmTypeID: '',
})
let selectedTypesId = ref([])
const alarmLevels = ref([])
const alarmLevelsWithoutAll = computed(() =>
alarmLevels.value.filter((level) => level.id !== '')
)
const alarmTypes = ref([])
const xTable = ref({})
let selectedLevels = ref([])
let tableDataSaved = []
watch$1(
() => data2.tableData,
(val2) => {
if (JSON.stringify(val2) !== JSON.stringify(tableDataSaved)) {
setSaveStatus(Project$2.saveStatusTypes.unsaved)
}
},
{
deep: true,
}
)
const tableTooltipConfig = {
enterable: true,
contentMethod: ({ column, row }) => {
const { property: property2 } = column
if (property2 === 'typeNames') {
return row[property2].join(';')
}
if (property2 === 'levelID') {
const level = lodash$2.exports.find(
alarmLevels.value,
(level2) => level2.id === row.levelID
)
return level?.name
}
return row[property2]
},
}
const selectRef = ref()
const editActived = () => {
setTimeout(() => {
selectRef.value.toggleMenu && selectRef.value.toggleMenu()
selectRef.value.select && selectRef.value.select()
})
}
const getAlarmLevelName = (id2) => {
return alarmLevelsWithoutAll.value.filter(
(alarmLevel) => alarmLevel.id === id2
)[0].name
}
const getTableData2 = async () => {
await handleGetAlarmLevel(true)
await handleGetAlarmType(true)
let result = await getAlarmPoint({
alarmGroupID: props2.selectedGroup.id,
...searchData,
})
data2.tableData = result.map((item2) => {
return {
...item2,
levelName: getAlarmLevelName(item2.levelID),
}
})
tableDataSaved = lodash$2.exports.cloneDeep(data2.tableData)
}
watch$1(
() => props2.selectedGroup,
(prevId, nextId) => {
if (prevId !== nextId) {
searchData.alarmLevelID = ''
searchData.alarmTypeID = ''
searchData.keyword = ''
updateRows = []
getTableData2()
}
}
)
const changeCheck = () => {
selectedLevels.value = xTable.value.getCheckboxRecords()
}
const handleAddAlarmPoint = () => {
data2.tableData = [
...data2.tableData,
{
id: 'new_' + utils.createRandomId(),
name: '',
content: '',
expression: '',
levelID: '',
typeIDs: [],
groupID: '',
groupName: '',
levelName: '',
typeNames: [],
is_new: true,
},
]
}
const selectedTitle = ref('')
const handledDeleteAlarmPoint = () => {
utils.debouncedFn(() => {
if (!selectedLevels.value.length) {
ElMessage({
message:
'\u8BF7\u9009\u62E9\u8981\u5220\u9664\u7684\u62A5\u8B66\u8BB0\u5F55',
type: 'error',
customClass: 'cms-el-message el-message--error',
})
} else {
data2.showDeleteDialog = true
selectedTitle.value = selectedLevels.value
.map((item2) => item2.name)
.join('\u3001')
}
})
}
const handleImport = (file2) => {
let formData = new FormData()
formData.append('alarmGroupID', props2.selectedGroup.id)
formData.append('files', file2.file)
importAlarmPoints(formData).then(() => {
ElMessage.success('\u5BFC\u5165\u6210\u529F')
getTableData2()
})
}
let updateRows = []
let deleteLevelsId = []
const saveTableData2 = async () => {
setSaveStatus(Project$2.saveStatusTypes.saving)
const levels = data2.tableData
const repeatCount = lodash$2.exports.omit(
lodash$2.exports.countBy(levels, 'name'),
''
)
let addRows = data2.tableData.filter((level) => level.is_new)
let isValidate = true
let errors = 0
updateRows = xTable.value.getUpdateRecords().filter((row) => !row.is_new)
const changedRows = [...updateRows, ...addRows]
const validateItems = [
{
field: 'name',
message: '\u62A5\u8B66\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A',
},
{
field: 'content',
message: '\u62A5\u8B66\u4FE1\u606F\u4E0D\u80FD\u4E3A\u7A7A',
},
{
field: 'expression',
message: '\u62A5\u8B66\u914D\u7F6E\u4E0D\u80FD\u4E3A\u7A7A',
},
{
field: 'levelID',
message: '\u62A5\u8B66\u7EA7\u522B\u4E0D\u80FD\u4E3A\u7A7A',
},
]
for (let index2 = 0; index2 < changedRows.length; index2++) {
validateItems.forEach((item2) => {
if (changedRows[index2][item2.field].trim() === '' && errors < 5) {
const { start: start2 } = useTimeoutFn(() => {
ElMessage({
message: item2.message,
grouping: true,
type: 'error',
})
}, 0)
start2()
isValidate = false
}
})
}
lodash$2.exports.forEach(repeatCount, async (value2, key2) => {
if (value2 > 1 && errors < 5) {
errors++
const { start: start2 } = useTimeoutFn(() => {
ElMessage.error(
`\u5B58\u5728\u76F8\u540C\u540D\u79F0"${key2}", \u8BF7\u91CD\u65B0\u4FEE\u6539`
)
}, 0)
start2()
isValidate = false
}
})
if (!isValidate) return
const allPromises = []
updateRows.length &&
allPromises.push(
updateAlarmPoint(updateRows).then(() => {
updateRows = []
})
)
addRows.length &&
allPromises.push(
addAlarmPoint(
addRows.map((item2) => {
return {
groupID: props2.selectedGroup.id,
groupName: 'string',
name: item2.name,
content: item2.content,
expression: item2.expression,
levelID: item2.levelID,
levelName: item2.levelName,
typeIDs: item2.typeIDs,
}
})
).then(() => {
addRows = []
})
)
Promise.all(allPromises)
.then(() => {
ElMessage.success('\u4FDD\u5B58\u6210\u529F')
getTableData2()
setSaveStatus(Project$2.saveStatusTypes.saved)
})
.catch(() => {
setSaveStatus(Project$2.saveStatusTypes.fail)
})
}
const handleConfirmDelete = async () => {
const directRemoveIds = selectedLevels.value
.filter((item2) => item2.is_new)
.map((item2) => item2.id)
deleteLevelsId = selectedLevels.value
.filter((item2) => !item2.is_new)
.map((item2) => item2.id)
deleteLevelsId.length && (await deleteAlarmPoint(deleteLevelsId))
data2.tableData = data2.tableData.filter(
(item2) =>
!deleteLevelsId.includes(item2.id) &&
!directRemoveIds.includes(item2.id)
)
deleteLevelsId = []
ElMessage.success('\u5220\u9664\u6210\u529F')
data2.showDeleteDialog = false
selectedLevels.value = []
}
const handleExport = async () => {
let res = await exportAlarmPoints({
alarmGroupID: props2.selectedGroup.id,
...searchData,
})
utils.downFile(res, `${props2.selectedGroup.name}.xlsx`)
}
let currentRow
const handleAlarmPointConfig = (row) => {
currentRow = row
data2.expConfig.visible = true
data2.expConfig.code = row.expression
}
watch$1(data2.expConfig, (expConfig) => {
if (!expConfig.visible) {
currentRow.expression = expConfig.code
}
})
const handleSelectAlarmTypes = (row) => {
data2.showSelectAlarmTypes = true
currentRow = row
selectedTypesId.value = row.typeIDs
}
const handleSelectedTypes = (selectedTypes) => {
let typeIDs = []
let typeNames = []
selectedTypes.forEach((item2) => {
typeIDs.push(item2.id)
typeNames.push(item2.name)
})
currentRow.typeIDs = typeIDs
currentRow.typeNames = typeNames
}
const handleChange = (row) => {
const level = lodash$2.exports.find(
alarmLevels.value,
(level2) => level2.id === row.levelID
)
row.levelName = level.name
}
const handleGetAlarmLevel = (visible) => {
if (visible) {
return getAlarmLevel().then((res) => {
alarmLevels.value = [{ name: '\u5168\u90E8', id: '' }, ...res]
})
}
}
const handleGetAlarmType = (visible) => {
if (visible) {
return getAlarmType().then((res) => {
alarmTypes.value = [{ name: '\u5168\u90E8', id: '' }, ...res]
})
}
}
let actionType = ''
const handleEditRelease = async () => {
let ids = xTable.value
.getUpdateRecords()
.filter((row) => !row.is_new)
.map((item2) => item2.id)
let result = await checkLinkRealtimeRecord(ids)
if (result.length) {
actionType = 'edit'
data2.showReleaseDialog = true
let names2 = result.map((item2) => `"${item2.name}"`).join(',')
data2.releaseDialogMsg = `${names2}\u62A5\u8B66\u6B63\u5728\u53D1\u751F\uFF0C\u82E5\u4FEE\u6539\uFF0C\u89E3\u9664\u4E14\u4E0D\u8BB0\u5F55\u8BE5\u62A5\u8B66`
} else {
saveTableData2()
}
}
const handleDeleteRelease = async () => {
let ids = selectedLevels.value
.filter((item2) => !item2.is_new)
.map((item2) => item2.id)
let result = await checkLinkRealtimeRecord(ids)
if (result.length) {
actionType = 'delete'
data2.showReleaseDialog = true
let names2 = result.map((item2) => `"${item2.name}"`).join(',')
data2.releaseDialogMsg = `${names2}\u62A5\u8B66\u6B63\u5728\u53D1\u751F\uFF0C\u82E5\u5220\u9664\uFF0C\u89E3\u9664\u4E14\u4E0D\u8BB0\u5F55\u8BE5\u62A5\u8B66`
} else {
handledDeleteAlarmPoint()
}
}
const handleReleaseAlarm = async () => {
if (actionType === 'edit') {
await saveTableData2()
} else if (actionType === 'delete') {
await handleConfirmDelete()
}
data2.showReleaseDialog = false
}
getTableData2()
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_button = resolveComponent('el-button')
const _component_el_form = resolveComponent('el-form')
const _component_el_upload = resolveComponent('el-upload')
const _component_vxe_column = resolveComponent('vxe-column')
const _component_vxe_table = resolveComponent('vxe-table')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', _hoisted_1$12, [
createElementVNode('div', _hoisted_2$X, [
createVNode$1(
_component_el_form,
{
inline: true,
model: unref(searchData),
class: 'flex-row-full',
},
{
default: withCtx(() => [
createVNode$1(_component_el_form_item, null, {
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
class: 'screen-input cms-el-input-x',
style: { width: '249px' },
placeholder: '\u8BF7\u8F93\u5165\u5173\u952E\u5B57',
modelValue: unref(searchData).keyword,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(searchData).keyword = $event)),
clearable: '',
},
null,
8,
['modelValue']
),
]),
_: 1,
}),
createVNode$1(
_component_el_form_item,
{
label: '\u62A5\u8B66\u7EA7\u522B',
style: { width: '216px' },
},
{
default: withCtx(() => [
createVNode$1(
_component_el_select,
{
modelValue: unref(searchData).alarmLevelID,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(searchData).alarmLevelID = $event)),
class: 'search-select cms-el-select',
'popper-class': 'cms-el-select__popper',
placeholder: '\u62A5\u8B66\u7EA7\u522B',
onVisibleChange: handleGetAlarmLevel,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(alarmLevels.value, (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.id,
label: item2.name,
value: item2.id,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
_: 1,
}
),
createVNode$1(
_component_el_form_item,
{
label: '\u62A5\u8B66\u7C7B\u522B',
style: { width: '216px' },
},
{
default: withCtx(() => [
createVNode$1(
_component_el_select,
{
modelValue: unref(searchData).alarmTypeID,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(searchData).alarmTypeID = $event)),
class: 'search-select cms-el-select',
'popper-class': 'cms-el-select__popper',
placeholder: '\u62A5\u8B66\u7C7B\u522B',
onVisibleChange: handleGetAlarmType,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(alarmTypes.value, (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.id,
label: item2.name,
value: item2.id,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
_: 1,
}
),
createVNode$1(_component_el_form_item, null, {
default: withCtx(() => [
createVNode$1(
_component_el_button,
{
class: 'cms-btn btn-screen-btn btn-reset',
onClick: getTableData2,
},
{
default: withCtx(() => [_hoisted_3$R]),
_: 1,
}
),
]),
_: 1,
}),
]),
_: 1,
},
8,
['model']
),
createElementVNode('div', _hoisted_4$J, [
createElementVNode('i', {
class: 'iconfont icon-xinjian option-add',
onClick: handleAddAlarmPoint,
}),
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont icon-qingchu option-danger',
{ 'multi-icon': unref(selectedLevels).length },
]),
onClick: handleDeleteRelease,
},
null,
2
),
createVNode$1(
_component_el_upload,
{
action: '#',
accept: '.xlsx',
'show-file-list': false,
'http-request': handleImport,
},
{
default: withCtx(() => [_hoisted_5$E]),
_: 1,
}
),
createElementVNode('i', {
class: 'iconfont icon-daochu2 icon-button',
onClick: handleExport,
}),
createElementVNode(
'button',
{
class: 'cms-btn btn-screen-btn btn-reset',
onClick: handleEditRelease,
},
'\u4FDD\u5B58'
),
]),
]),
createElementVNode('div', _hoisted_6$y, [
createVNode$1(
_component_vxe_table,
{
class: 'cms-vxe-table cms-vxe-edit-table',
ref_key: 'xTable',
ref: xTable,
height: '100%',
'row-config': { keyField: 'id', height: 52 },
data: unref(data2).tableData,
'scroll-y': { oSize: 5 },
'show-overflow': 'tooltip',
'tooltip-config': unref(tableTooltipConfig),
'column-config': { resizable: true },
'edit-config': { trigger: 'click', mode: 'cell' },
onCheckboxChange: changeCheck,
onCheckboxAll: changeCheck,
'keep-source': '',
'checkbox-config': { checkField: 'checked' },
onEditActived: editActived,
},
{
default: withCtx(() => [
createVNode$1(_component_vxe_column, {
type: 'checkbox',
width: '60',
}),
createVNode$1(_component_vxe_column, {
type: 'seq',
width: '80',
title: '\u5E8F\u53F7',
}),
createVNode$1(
_component_vxe_column,
{
field: 'name',
title: '\u62A5\u8B66\u540D\u79F0',
'min-width': '150',
'edit-render': { autofocus: '.el-input__inner' },
},
{
edit: withCtx(({ row }) => [
createVNode$1(
_component_el_input,
{
modelValue: row.name,
'onUpdate:modelValue': ($event) =>
(row.name = $event),
type: 'text',
spellcheck: false,
ref: (el2) => {
if (el2) selectRef.value = el2
},
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
]),
_: 1,
},
8,
['edit-render']
),
createVNode$1(
_component_vxe_column,
{
field: 'content',
title: '\u62A5\u8B66\u4FE1\u606F',
'min-width': '150',
'edit-render': { autofocus: '.el-input__inner' },
},
{
edit: withCtx(({ row }) => [
createVNode$1(
_component_el_input,
{
modelValue: row.content,
'onUpdate:modelValue': ($event) =>
(row.content = $event),
type: 'text',
spellcheck: false,
ref: (el2) => {
if (el2) selectRef.value = el2
},
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
]),
_: 1,
},
8,
['edit-render']
),
createVNode$1(
_component_vxe_column,
{
field: 'expression',
title: '\u62A5\u8B66\u914D\u7F6E',
'min-width': '150',
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_7$s, [
createElementVNode(
'span',
_hoisted_8$r,
toDisplayString$1(row.expression),
1
),
createElementVNode(
'i',
{
class: 'iconfont icon-button icon-tupianbianji',
onClick: ($event) => handleAlarmPointConfig(row),
},
null,
8,
_hoisted_9$r
),
]),
]),
_: 1,
}
),
createVNode$1(
_component_vxe_column,
{
field: 'levelID',
title: '\u62A5\u8B66\u7EA7\u522B',
'min-width': '200',
'class-name': 'spec_select_cell',
'edit-render': { autofocus: '.el-input__inner' },
},
{
default: withCtx(({ row }) => [
createElementVNode(
'div',
_hoisted_10$q,
toDisplayString$1(row.levelName),
1
),
]),
edit: withCtx(({ row }) => [
createVNode$1(
_component_el_select,
{
modelValue: row.levelID,
'onUpdate:modelValue': ($event) =>
(row.levelID = $event),
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
placeholder: '\u8BF7\u9009\u62E9',
onChange: ($event) => handleChange(row),
onVisibleChange: handleGetAlarmLevel,
ref: (el2) => {
if (el2) selectRef.value = el2
},
teleported: false,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(alarmLevelsWithoutAll),
(item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.id,
label: item2.name,
value: item2.id,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue', 'onChange']
),
]),
_: 1,
},
8,
['edit-render']
),
createVNode$1(
_component_vxe_column,
{
field: 'typeNames',
title: '\u62A5\u8B66\u7C7B\u522B',
'min-width': '200',
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_11$n, [
createElementVNode(
'span',
_hoisted_12$n,
toDisplayString$1(row.typeNames.join(';') || '-'),
1
),
createElementVNode(
'i',
{
class: 'iconfont icon-button icon-tupianbianji',
onClick: ($event) => handleSelectAlarmTypes(row),
},
null,
8,
_hoisted_13$l
),
]),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['data', 'tooltip-config']
),
]),
(openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
modelValue: unref(data2).showDeleteDialog,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(data2).showDeleteDialog = $event)),
title: '\u786E\u8BA4\u5220\u9664',
width: '450px',
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
key: new Date().toISOString(),
},
{
default: withCtx(() => [
_hoisted_14$i,
createElementVNode('div', _hoisted_15$i, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick:
_cache[3] ||
(_cache[3] = ($event) =>
(unref(data2).showDeleteDialog = false)),
},
{
default: withCtx(() => [_hoisted_16$i]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: handleConfirmDelete,
},
{
default: withCtx(() => [_hoisted_17$g]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
)),
(openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
modelValue: unref(data2).showReleaseDialog,
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) =>
(unref(data2).showReleaseDialog = $event)),
title: '\u786E\u8BA4\u89E3\u9664',
width: '450px',
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
key: new Date().toISOString(),
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_18$f, [
createElementVNode(
'div',
null,
toDisplayString$1(unref(data2).releaseDialogMsg),
1
),
]),
createElementVNode('div', _hoisted_19$d, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick:
_cache[5] ||
(_cache[5] = ($event) =>
(unref(data2).showReleaseDialog = false)),
},
{
default: withCtx(() => [_hoisted_20$c]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: handleReleaseAlarm,
},
{
default: withCtx(() => [_hoisted_21$9]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
)),
createVNode$1(
FormulaConfigDialog$2,
{
'model-value': unref(data2).expConfig.visible,
'onUpdate:model-value':
_cache[7] ||
(_cache[7] = ($event) =>
(unref(data2).expConfig.visible = $event)),
code: unref(data2).expConfig.code,
'onUpdate:code':
_cache[8] ||
(_cache[8] = ($event) =>
(unref(data2).expConfig.code = $event)),
filterClientVariables: true,
},
null,
8,
['model-value', 'code']
),
createVNode$1(
SelectAlarmTypes,
{
modelValue: unref(data2).showSelectAlarmTypes,
'onUpdate:modelValue':
_cache[9] ||
(_cache[9] = ($event) =>
(unref(data2).showSelectAlarmTypes = $event)),
selectedTypesId: unref(selectedTypesId),
'onUpdate:selectedTypesId':
_cache[10] ||
(_cache[10] = ($event) =>
isRef(selectedTypesId)
? (selectedTypesId.value = $event)
: (selectedTypesId = $event)),
onConfirm: handleSelectedTypes,
},
null,
8,
['modelValue', 'selectedTypesId']
),
])
)
}
},
})
var AlarmTable = /* @__PURE__ */ _export_sfc(_sfc_main$17, [
['__scopeId', 'data-v-1f5a41ff'],
])
var AlarmTable$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: AlarmTable,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Alarm_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$11 = { class: 'data-contain' }
const _hoisted_2$W = { class: 'sidebar' }
const _hoisted_3$Q = { class: 'content' }
const _sfc_main$16 = /* @__PURE__ */ defineComponent({
setup(__props2) {
const sidebarRef = ref()
const selectedGroup = ref()
const handleAddAlarmGroup = () => {
sidebarRef.value?.createDialogOpen(1)
}
return (_ctx, _cache) => {
const _directive_track = resolveDirective('track')
return withDirectives(
(openBlock(),
createElementBlock('div', _hoisted_1$11, [
createElementVNode('div', _hoisted_2$W, [
createVNode$1(
Sidebar,
{
ref_key: 'sidebarRef',
ref: sidebarRef,
selectedGroup: selectedGroup.value,
'onUpdate:selectedGroup':
_cache[0] ||
(_cache[0] = ($event) => (selectedGroup.value = $event)),
},
null,
8,
['selectedGroup']
),
]),
createElementVNode('div', _hoisted_3$Q, [
selectedGroup.value
? (openBlock(),
createBlock(
AlarmTable,
{
key: 0,
selectedGroup: selectedGroup.value,
},
null,
8,
['selectedGroup']
))
: (openBlock(),
createBlock(Empty, {
key: 1,
title: '\u6DFB\u52A0\u62A5\u8B66\u8868',
onHightLightPages: handleAddAlarmGroup,
})),
]),
])),
[
[
_directive_track,
{
moduleType: '\u6807\u51C6\u6A21\u5757',
moduleCode: '\u62A5\u8B66',
pageCode: '\u62A5\u8B66',
},
'page',
],
]
)
}
},
})
var Alarm = /* @__PURE__ */ _export_sfc(_sfc_main$16, [
['__scopeId', 'data-v-212b8358'],
])
var Alarm$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Alarm,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var login_vue_vue_type_style_index_0_lang = ''
var login_vue_vue_type_style_index_1_scoped_true_lang = ''
const _withScopeId$D = (n2) => (
pushScopeId('data-v-81805936'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$10 = { class: 'login' }
const _hoisted_2$V = /* @__PURE__ */ _withScopeId$D(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'sys-name' },
'CMS\u7BA1\u63A7\u4E00\u4F53\u5316\u7CFB\u7EDF',
-1
)
)
const _hoisted_3$P = { class: 'container' }
const _hoisted_4$I = /* @__PURE__ */ _withScopeId$D(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
' \u7528\u6237\u767B\u5F55 ',
-1
)
)
const _hoisted_5$D = /* @__PURE__ */ _withScopeId$D(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont login_user_nor' },
null,
-1
)
)
const _hoisted_6$x = /* @__PURE__ */ _withScopeId$D(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont login_password_nor' },
null,
-1
)
)
const _hoisted_7$r = /* @__PURE__ */ _withScopeId$D(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont login_lan_nor' },
null,
-1
)
)
const _hoisted_8$q = { class: 'flex' }
const _hoisted_9$q = /* @__PURE__ */ createTextVNode('\u767B\u5F55')
const _hoisted_10$p = [_hoisted_9$q]
const _hoisted_11$m = { class: 'btn' }
const _hoisted_12$m = /* @__PURE__ */ createTextVNode('\u8FD4\u56DE')
const _hoisted_13$k = [_hoisted_12$m]
const _sfc_main$15 = /* @__PURE__ */ defineComponent({
setup(__props2) {
let formData = reactive({
name: 'Admin',
password: '123456',
lang: 'zh',
})
const router2 = useRouter()
const route = useRoute()
const onSubmit = () => {
router2.push({
name: '/',
query: {
...route.query,
name: formData.name,
password: formData.password,
},
})
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_form = resolveComponent('el-form')
const _directive_waves = resolveDirective('waves')
return (
openBlock(),
createElementBlock('div', _hoisted_1$10, [
_hoisted_2$V,
createElementVNode('div', _hoisted_3$P, [
_hoisted_4$I,
createVNode$1(
_component_el_form,
{
ref: 'form',
model: unref(formData),
class: 'from',
},
{
default: withCtx(() => [
createVNode$1(_component_el_form_item, null, {
label: withCtx(() => [_hoisted_5$D]),
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: unref(formData).name,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(formData).name = $event)),
'aria-autocomplete': 'none',
},
null,
8,
['modelValue']
),
]),
_: 1,
}),
createVNode$1(_component_el_form_item, null, {
label: withCtx(() => [_hoisted_6$x]),
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: unref(formData).password,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(formData).password = $event)),
password: '',
'show-password': '',
},
null,
8,
['modelValue']
),
]),
_: 1,
}),
createVNode$1(_component_el_form_item, null, {
label: withCtx(() => [_hoisted_7$r]),
default: withCtx(() => [
createVNode$1(
_component_el_select,
{
modelValue: unref(formData).lang,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(formData).lang = $event)),
'popper-append-to-body': false,
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
label: '\u4E2D\u6587',
value: 'zh',
}),
createVNode$1(_component_el_option, {
label: '\u82F1\u6587',
value: 'en',
}),
]),
_: 1,
},
8,
['modelValue']
),
]),
_: 1,
}),
createElementVNode('div', _hoisted_8$q, [
withDirectives(
(openBlock(),
createElementBlock(
'button',
{
class: 'btn btn-primary',
onClick: onSubmit,
},
_hoisted_10$p
)),
[[_directive_waves]]
),
withDirectives(
(openBlock(),
createElementBlock(
'button',
_hoisted_11$m,
_hoisted_13$k
)),
[[_directive_waves]]
),
]),
]),
_: 1,
},
8,
['model']
),
]),
])
)
}
},
})
var login = /* @__PURE__ */ _export_sfc(_sfc_main$15, [
['__scopeId', 'data-v-81805936'],
])
var login$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: login,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var _imports_0 =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAAXNSR0IArs4c6QAABKlJREFUWEftlmtsk2UUx3+n29hggDhEF6LzihAwkKiBKGNFReKIWwMGQbqgfiB4iYSIiSOofaoG+OS8RJMZo6IDtBqyC0jGMuGtiGAwEC+L8QMqBgWEUYzI2FiPece6tdvb7m1HIjE7X5//+Z/fc56rcImHXOJ8DAEOdoWGOvifdbC4Ui/PzueeaJT7BKYpjBcoUGhHOSoeDkWVPXqeHbtfkn2Zgqa9xMVGb8gSngGWAvluCiu0qPLGSXi3xUi7m5yYxj3gQs0qmcLzIjwL5KVTJE77Y6fy+G4ju9zmuwKctVrHefKoA+5wa5xSpwQsIy+68RoQ8E6jV2bDFyLc3McworANaEL5zQP/dAr5HihCmYtQClyWFEJ5yzLy5ECQKQFnG82OCnsFboszOibKy8D7u4z8nazADKOjc4VlAs8BYxx1ylrLyJpUkCkBS4xWibCyx0DZevYcj3y9Tk4ONPPY+Eyj47OgQYRbk+SUWwFpSOaXFHC20VtU+BYuPIeqvB02stwtWLyu9HXNPXOKZoGZDvlHRZmQbDWSApYE9VOBB7rgoDkckDmZwMVy7HvTM5yDYu/RPqHK+rCR1U7+joD2wcgRjgDZQKRDmbjHyPHBANq53qDOB7Y4+ETaI4z/qkrO9h1zBPQafQLhzS6xsMZ6QdYOFi6W7w3qQWCag99SKyAfugMMaghYCLS1KVftM/LXRQM0ugLhtX5+Sq1lxO5wQjh3MKjfA1NUqQ8b8fVk1G1cgDAdtJbyir2ZQM8yOt0jOL3NR6yAXO0KsCSoxwXGAU9bAanqSqrfuB66nrkLIbqYsoqP04W0r53sC/u7b5y2AtLvvkzWQXtJR6myKGwkRHX1CApHRhByelyVA/j8ye62lNzeoB4GrkkQKVstI2WuOugN6i/Atar4wkbqadh0Bap/Jhrqd/gqpqbbQVvvDepd3ac51rEDoszbZeSoW8A93R+DB62AfEJD9Qh0pN3VrN4lZidl/rszAbRzpq/WsXm5eIETYdiNkaiTl+MS9zxxyirLyCvde/AnYEKcyZeU+4szBXSb5whonzQRtgs81tXBrkNSswnkoV5jOUL5kn6nzm3hmG7M9p+vi5Reb28pxxjwu9WTVbdxMcLmBJdObme+/5t0oWL6gqbDVQIrVfiodU5R3OTj2uDaPBQaRm7774iM7c3REOUVi1x79BEWNB22v3IzFA613lt0o+s9mLRgfU0lyLqEcdE5lFU0ZwI56vNDE4d1Zq84r7x3em7R/sEDhkJZ5HXYX7DJcWatICWUL/khLcgtG8ay4OEB/5Xu92Csem3NZDxiX0Px3/lWlGX4/E4/lUTu6uocCkdWIgTxUMr9/sZUE0sf0HbbtnkGndEdwOgEc6URoq+Sc2on81acSxgLvVNAXt5ikKeASai24PF4KVty4uID2o4Nmyah0QaQmxwKRAB7yVsRslAKQaaA5nZrP6Oz3c/8R21dysisgzHLUGg4uR2rQFch/R96h8q/ohrAV7FhILDY+OAAYy6NH+TT7vGhsgCYCjoOZBgibWj0GMh+0BB/nGlk+fIOt3C27uIAplMxTe0QYJoN6ycf6uD/voP/AggdfDhFhXqfAAAAAElFTkSuQmCC'
var Menu_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$C = (n2) => (
pushScopeId('data-v-66c07a82'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$$ = { class: 'menu-bar' }
const _hoisted_2$U = /* @__PURE__ */ _withScopeId$C(() =>
/* @__PURE__ */ createElementVNode(
'img',
{
class: 'logo',
src: _imports_0,
},
null,
-1
)
)
const _hoisted_3$O = { class: 'list' }
const _hoisted_4$H = ['onClick']
const _hoisted_5$C = ['title']
const _sfc_main$14 = /* @__PURE__ */ defineComponent({
setup(__props2) {
let showLogin = ref(false)
let showUser = ref(false)
let active = ref(-1)
const menuList = ref([
{
icon: 'icon-geren',
content: '\u4E2A\u4EBA\u4FE1\u606F',
type: 'user',
},
{
icon: 'icon-quanping',
content: '\u5168\u5C4F',
type: 'fullscreen',
},
{
icon: 'icon-xunijianpan',
content: '\u865A\u62DF\u952E\u76D8',
type: 'virtualKeyboard',
},
{
icon: 'icon-tuichu',
content: '\u9000\u51FA\u7CFB\u7EDF',
type: 'close',
},
])
const menuListComputed = computed(() => {
if (client.isClient()) {
return menuList.value
} else {
return menuList.value.filter((item2) => item2.type != 'close')
}
})
onMounted(() => {
if (app.config.isFullScreen) {
menuList.value[1].icon = 'icon-tuichuquanping1'
menuList.value[1].content = '\u9000\u51FA\u5168\u5C4F'
}
})
const clickMenuItem = (item2, index2) => {
if (active.value == index2) {
active.value = -1
} else {
active.value = index2
}
if (item2.type != 'user') {
showLogin.value = false
showUser.value = false
}
switch (item2.type) {
case 'user':
showUserInfo()
break
case 'fullscreen':
fullscreen(item2)
break
case 'virtualKeyboard':
dispatchEvent(new Event('toggleVirtualKeyboard'))
break
case 'close':
window.close()
break
}
}
const fullscreen = async (item2) => {
if (!client.isClient()) {
screenStatus.isFull = !document.fullscreenElement
if (document.fullscreenElement) {
item2.icon = 'icon-quanping'
item2.content = Language$1._t('\u5168\u5C4F')
document.exitFullscreen()
} else {
item2.icon = 'icon-tuichuquanping1'
item2.content = Language$1._t('\u9000\u51FA\u5168\u5C4F')
document.documentElement.requestFullscreen()
}
return
}
if (screenStatus.isFull) {
item2.icon = 'icon-quanping'
item2.content = Language$1._t('\u5168\u5C4F')
client.exitFullScreen()
} else {
item2.icon = 'icon-tuichuquanping1'
item2.content = Language$1._t('\u9000\u51FA\u5168\u5C4F')
client.requestFullscreen()
}
screenStatus.isFull = !screenStatus.isFull
}
const showUserInfo = () => {
if (Session.get('loginOut')) {
showLogin.value = !showLogin.value
return
}
let userName = userInfo.user.userName || ''
if (userName == 'Tourist' || !userName || !Session.get('Token')) {
showLogin.value = !showLogin.value
} else {
showUser.value = !showUser.value
}
}
const router2 = useRouter()
const route = useRoute()
const loginFun = (isLogin) => {
if (isLogin) {
showLogin.value = false
let query = route.query
if (!query.pageId) {
history.go()
} else {
router2.push({
path: route.path,
query: {
projectId: query.projectId,
projectName: query.projectName,
},
})
}
} else {
console.error('\u767B\u5F55\u5931\u8D25')
}
}
const loginClose = () => {
showLogin.value = !showLogin.value
const token = Session.get('Token')
if (!token) {
history.go()
}
}
const passWordConfirm = () => {
showLogin.value = true
}
return (_ctx, _cache) => {
const _directive_waves = resolveDirective('waves')
return (
openBlock(),
createElementBlock('div', _hoisted_1$$, [
_hoisted_2$U,
createElementVNode('nav', _hoisted_3$O, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(menuListComputed.value, (item2, index2) => {
return withDirectives(
(openBlock(),
createElementBlock(
'button',
{
key: item2.content,
class: 'item',
onClick: ($event) => clickMenuItem(item2, index2),
},
[
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont',
[
item2.icon,
{ 'is-active': unref(active) == index2 },
],
]),
title: _ctx._t(item2.content),
'data-tooltip-placement': 'left',
},
null,
10,
_hoisted_5$C
),
],
8,
_hoisted_4$H
)),
[[_directive_waves]]
)
}),
128
)),
]),
unref(showLogin)
? (openBlock(),
createBlock(Login, {
key: 0,
onOnClick: loginFun,
onOnOut: loginClose,
}))
: createCommentVNode('', true),
withDirectives(
createVNode$1(
User,
{
onPassWordConfirm: passWordConfirm,
running: true,
},
null,
512
),
[[vShow, unref(showUser)]]
),
])
)
}
},
})
var Menu = /* @__PURE__ */ _export_sfc(_sfc_main$14, [
['__scopeId', 'data-v-66c07a82'],
])
var Menu$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Menu,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var MiniPagesMenu_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$_ = { class: 'page-navigation' }
const _hoisted_2$T = { class: 'records-dialog-title text-ellipsis-1 nowrap' }
const _hoisted_3$N = ['onClick']
const _hoisted_4$G = ['onClick']
const _sfc_main$13 = /* @__PURE__ */ defineComponent({
setup(__props2) {
const pageManager2 = new PageManager()
const handleMaxsize = (id2) => {
const miniPages = pageManager2.miniPagesId.filter(
(page2) => page2.id === id2
)
if (miniPages.length > 0) {
miniPages[0].vm?.exposed.handleToggleSlide()
}
}
const handleCloseDialog = (id2) => {
const dialogPage = pageManager2.getDialogPageById(id2)
dialogPage._props.dialogClose()
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$_, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(pageManager2).miniPagesId, (item2) => {
return (
openBlock(),
createElementBlock(
'div',
{
key: item2.id,
class: 'flex justify-between page-navigation-item',
ref_for: true,
ref: 'dialogHeader',
},
[
createElementVNode(
'div',
_hoisted_2$T,
toDisplayString$1(item2.title),
1
),
createElementVNode('div', null, [
createElementVNode(
'span',
{
class: 'iconfont toggle-slide-btn icon-fangda',
onClick: ($event) => handleMaxsize(item2.id),
title: '\u6700\u5927\u5316',
'data-tooltip-placement': 'top',
},
null,
8,
_hoisted_3$N
),
createElementVNode(
'span',
{
class: 'iconfont icon-guanbi close-dialog-btn',
onClick: ($event) => handleCloseDialog(item2.id),
title: '\u5173\u95ED',
'data-tooltip-placement': 'top',
},
null,
8,
_hoisted_4$G
),
]),
]
)
)
}),
128
)),
])
)
}
},
})
var MiniPagesMenu = /* @__PURE__ */ _export_sfc(_sfc_main$13, [
['__scopeId', 'data-v-851c38c4'],
])
var MiniPagesMenu$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: MiniPagesMenu,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var VirtualKeyboard_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$B = (n2) => (
pushScopeId('data-v-ae85b9fc'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$Z = { class: 'header' }
const _hoisted_5$B = { class: 'title' }
const _hoisted_6$w = { class: 'keypads' }
const _hoisted_7$q = ['onClick']
const _hoisted_8$p = { key: 0 }
const _hoisted_9$p = /* @__PURE__ */ _withScopeId$B(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-qingchu1 icons-backspace' },
null,
-1
)
)
const _hoisted_10$o = /* @__PURE__ */ _withScopeId$B(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'icons-rbottom' },
null,
-1
)
)
const _hoisted_11$l = [_hoisted_9$p, _hoisted_10$o]
const _hoisted_12$l = { key: 1 }
const _hoisted_13$j = /* @__PURE__ */ _withScopeId$B(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'text-enter' },
'Enter',
-1
)
)
const _hoisted_14$h = /* @__PURE__ */ _withScopeId$B(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'icons-rbottom' },
null,
-1
)
)
const _hoisted_15$h = [_hoisted_13$j, _hoisted_14$h]
const _hoisted_16$h = { key: 2 }
const _sfc_main$12 = /* @__PURE__ */ defineComponent({
setup(__props2) {
const vbRef = ref()
let visible = ref(false)
const setting2 = reactive({
autoOn: false,
autoOff: false,
})
const getSetting = () => {
const storage2 = Session.get('VirtualKeyboardOptions')
setting2.autoOn = storage2?.autoOn || false
setting2.autoOff = storage2?.autoOff || false
}
const keypads = [
{
code: '7',
type: 'number',
},
{
code: '8',
type: 'number',
},
{
code: '9',
type: 'number',
},
{
code: 'backspace',
type: 'backspace',
},
{
code: '4',
type: 'number',
},
{
code: '5',
type: 'number',
},
{
code: '6',
type: 'number',
},
{
code: 'C',
type: 'clear',
},
{
code: '1',
type: 'number',
},
{
code: '2',
type: 'number',
},
{
code: '3',
type: 'number',
},
{
code: '-',
type: 'number',
},
{
code: '0',
type: 'number',
},
{
code: '.',
type: 'number',
},
{
code: 'Enter',
type: 'enter',
},
]
let activeElement
let activeCanvasNode
let activeCanvasNodeElement
let inputSettings = {}
function click2({ code: code2, type: type4 }) {
if (!activeElement) return
if (type4 === 'number') {
document.execCommand('insertText', false, code2)
} else if (type4 === 'backspace') {
if (!activeElement.value) {
return
}
document.execCommand('delete', false)
} else if (type4 === 'clear') {
activeElement.value = ''
} else if (type4 === 'enter') {
keyboardEnter()
keyboardEnterCloseHandle(activeElement)
}
}
const getActiveElement = (el2 = document.activeElement) => {
return (el2 instanceof HTMLInputElement ||
el2 instanceof HTMLTextAreaElement) &&
utils.isInputActive(el2)
? el2
: void 0
}
const findCanvasNodeElement = (element, level = 20) => {
level -= 1
if (!element) return
if (!level) return
if (element.id && element.classList.contains('canvas-node'))
return element
return findCanvasNodeElement(element.parentElement, level)
}
const autoSelectAllHandle = (activeElement2) => {
if (shouldStopBlur) return
if (inputSettings.autoSelectAll) {
getSelection()?.removeAllRanges()
activeElement2.select()
}
}
const keyboardEnableHandle = (activeElement2) => {
if (shouldStopBlur) return
if (inputSettings?.keyboard?.enabled) {
calFocusPos(activeElement2)
openVirtualKeyboard()
} else {
calFocusPos(activeElement2)
}
}
const keyboardEnterCloseHandle = (activeElement2) => {
if (inputSettings?.keyboard?.enterClose) {
activeElement2.blur()
closeVirtualKeyboard()
}
}
useEventListener(
window,
'focus',
function (e2) {
if (!(e2.target instanceof HTMLElement)) return
const activeEl = getActiveElement(e2.target)
if (!activeEl) return
const inputTypes = [
'textarea',
'text',
'tel',
'url',
'search',
'password',
'number',
'email',
]
if (!inputTypes.includes(activeEl.type)) return
if (
activeEl?.parentElement?.classList?.contains('el-tooltip__trigger') ||
activeEl?.parentElement?.parentElement?.classList?.contains(
'el-tooltip__trigger'
)
) {
return
}
activeElement = activeEl
if (
activeCanvasNodeElement &&
activeCanvasNodeElement.contains(e2.target)
) {
autoSelectAllHandle(activeElement)
keyboardEnableHandle(activeElement)
return
}
const nodeEl = findCanvasNodeElement(activeElement)
activeCanvasNodeElement = nodeEl
if (nodeEl) {
activeCanvasNode = CanvasNode$1.getById(nodeEl.id)
inputSettings = activeCanvasNode?.props?.inputSettings || {}
} else {
activeCanvasNode = void 0
inputSettings = {}
}
autoSelectAllHandle(activeElement)
keyboardEnableHandle(activeElement)
},
true
)
useEventListener(
window,
'blur',
function (e2) {
if (!inputSettings?.keyboard?.enabled) return
if (!(e2.target instanceof Element)) return
if (!getActiveElement(e2.target)) return
if (shouldStopBlur) return
closeVirtualKeyboard()
},
true
)
let shouldStopBlur = false
useEventListener(
window,
'mousedown',
function (e2) {
if (
vbRef.value &&
e2.target instanceof HTMLElement &&
vbRef.value.contains(e2.target)
) {
shouldStopBlur = true
const off2 = useEventListener(
'blur',
function (e22) {
e22.stopPropagation()
if (e22.target instanceof HTMLElement) {
const off22 = useEventListener(
'focus',
function (e3) {
e3.stopPropagation()
off22()
},
true
)
e22.target.focus()
}
},
true
)
setTimeout(() => {
off2()
}, 0)
} else {
shouldStopBlur = false
}
},
true
)
let timer2
const enterKeyInfo = {
bubbles: true,
cancelable: true,
key: 'Enter',
code: 'Enter',
keyCode: 13,
which: 13,
}
const keyboardEnter = () => {
const ke = new KeyboardEvent('keydown', enterKeyInfo)
activeElement?.dispatchEvent(ke)
clearTimeout(timer2)
timer2 = setTimeout(() => {
const ke2 = new KeyboardEvent('keyup', enterKeyInfo)
activeElement?.dispatchEvent(ke2)
}, 100)
}
const openVirtualKeyboard = () => {
visible.value = true
const aEl = getActiveElement()
activeElement = aEl
}
useEventListener(window, 'openVirtualKeyboard', openVirtualKeyboard)
const closeVirtualKeyboard = () => {
visible.value = false
}
useEventListener(window, 'closeVirtualKeyboard', closeVirtualKeyboard)
useEventListener(window, 'toggleVirtualKeyboard', function () {
visible.value = !visible.value
const aEl = getActiveElement()
activeElement = aEl
})
let drag = reactive({
down: false,
x: 0,
y: 0,
l: 0,
t: 0,
width: 470,
height: 330,
left: 0,
top: 0,
cursor: 'default',
})
const calInitPos = () => {
const clientWidth = document.body.clientWidth
const clientHeight = document.body.clientHeight
drag.left = (clientWidth - drag.width) / 2
drag.top = (clientHeight - drag.height) / 2
}
const calFocusPos = (el2) => {
const viewerScrollBarWidth = 8
const {
height,
width,
top: top2,
left: left2,
} = el2.getBoundingClientRect()
const vbOffset = 10
const vbWidth = drag.width
const vbHeight = drag.height
const isInBottom =
top2 + height + vbOffset + vbHeight <= document.body.clientHeight
const _top = isInBottom
? top2 + height + vbOffset
: top2 - vbOffset - vbHeight
const isInLeft = left2 + vbWidth <= document.body.clientWidth
let _left = isInLeft ? left2 : left2 - vbWidth + width
if (!isInLeft) {
const isOverWidth = left2 + width - document.body.clientWidth
if (isOverWidth > 0) {
_left = left2 - vbWidth + width - isOverWidth - viewerScrollBarWidth
}
}
drag.top = _top
drag.left = _left
}
const dragStartHandle = (clientX, clientY) => {
if (!vbRef.value) return
const rect = vbRef.value.getBoundingClientRect()
drag.down = true
drag.x = clientX
drag.y = clientY
drag.l = rect.left
drag.t = rect.top
}
const dragMoveHandle = (clientX, clientY) => {
if (!drag.down) return
let pageX = clientX
let pageY = clientY
let diffX = Math.abs(pageX - drag.x)
let diffY = Math.abs(pageY - drag.y)
if (drag.x - pageX <= 0) {
drag.left = drag.l + diffX
} else {
drag.left = drag.l - diffX
}
if (drag.y - pageY <= 0) {
drag.top = drag.t + diffY
} else {
drag.top = drag.t - diffY
}
drag.cursor = 'move'
}
const dragEndHandle = () => {
drag.down = false
drag.cursor = 'default'
}
let mousemoveOff
let mouseupOff
const mousedown = (e2) => {
if (!vbRef.value) return
const clientX = e2?.clientX || 0
const clientY = e2?.clientY || 0
dragStartHandle(clientX, clientY)
mousemoveOff = useEventListener(window, 'mousemove', mousemove)
mouseupOff = useEventListener(window, 'mouseup', mouseup)
}
const mousemove = (e2) => {
const clientX = e2?.clientX || 0
const clientY = e2?.clientY || 0
dragMoveHandle(clientX, clientY)
}
const mouseup = () => {
dragEndHandle()
mousemoveOff?.()
mouseupOff?.()
}
let touchmoveOff
let touchendOff
const touchstart = (e2) => {
if (!vbRef.value) return
const clientX = e2.targetTouches[0].clientX || 0
const clientY = e2.targetTouches[0].clientY || 0
dragStartHandle(clientX, clientY)
touchmoveOff = useEventListener(window, 'touchmove', touchmove)
touchendOff = useEventListener(window, 'touchend', touchend)
}
const touchmove = (e2) => {
const clientX = e2.targetTouches[0].clientX || 0
const clientY = e2.targetTouches[0].clientY || 0
dragMoveHandle(clientX, clientY)
}
const touchend = () => {
dragEndHandle()
touchmoveOff?.()
touchendOff?.()
}
const viewerScroll = () => {
let el2 = getActiveElement()
if (el2) {
calFocusPos(el2)
}
}
onMounted(() => {
calInitPos()
getSetting()
const viewer = document.getElementById(
CanvasNode$1.getBody().id
)?.parentElement
useEventListener(viewer, 'scroll', viewerScroll)
})
return (_ctx, _cache) => {
resolveComponent('el-checkbox')
return (
openBlock(),
createElementBlock('div', null, [
withDirectives(
createElementVNode(
'div',
{
ref_key: 'vbRef',
ref: vbRef,
class: 'wrapper',
onMousedown:
_cache[5] || (_cache[5] = ($event) => mousedown($event)),
onTouchstart:
_cache[6] || (_cache[6] = ($event) => touchstart($event)),
style: normalizeStyle$1({
left: unref(drag).left + 'px',
top: unref(drag).top + 'px',
cursor: unref(drag).cursor,
}),
},
[
createElementVNode('section', _hoisted_1$Z, [
createCommentVNode('', true),
createElementVNode(
'span',
_hoisted_5$B,
toDisplayString$1(_ctx._t('\u865A\u62DF\u952E\u76D8')),
1
),
createElementVNode('i', {
class: 'iconfont icon-guanbijianpan icons-close',
onClick:
_cache[4] ||
(_cache[4] = ($event) => (visible.value = false)),
}),
]),
createElementVNode('section', _hoisted_6$w, [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(keypads, (item2, i2) => {
return createElementVNode(
'div',
{
key: i2,
class: normalizeClass(['keypad', item2.type]),
onClick: ($event) => click2(item2),
},
[
item2.type == 'backspace'
? (openBlock(),
createElementBlock(
'span',
_hoisted_8$p,
_hoisted_11$l
))
: item2.type == 'enter'
? (openBlock(),
createElementBlock(
'span',
_hoisted_12$l,
_hoisted_15$h
))
: (openBlock(),
createElementBlock(
'span',
_hoisted_16$h,
toDisplayString$1(item2.code),
1
)),
],
10,
_hoisted_7$q
)
}),
64
)),
]),
],
36
),
[[vShow, visible.value]]
),
])
)
}
},
})
var VirtualKeyboard = /* @__PURE__ */ _export_sfc(_sfc_main$12, [
['__scopeId', 'data-v-ae85b9fc'],
])
var VirtualKeyboard$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: VirtualKeyboard,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Run_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$A = (n2) => (
pushScopeId('data-v-72153583'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$Y = { class: 'project' }
const _hoisted_2$S = ['onMouseenter', 'onMouseleave']
const _hoisted_3$M = /* @__PURE__ */ _withScopeId$A(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-xia' },
null,
-1
)
)
const _hoisted_4$F = [_hoisted_3$M]
const _hoisted_5$A = { key: 0 }
const _hoisted_6$v = { key: 2 }
const _sfc_main$11 = /* @__PURE__ */ defineComponent({
setup(__props2) {
let isShowXiala = ref(false)
let timer2
function mouseEnter() {
timer2 && clearTimeout(timer2)
isShowXiala.value = true
}
function mouseLeave() {
timer2 = setTimeout(() => {
isShowXiala.value = false
}, 1e3)
}
let isShow = ref(true)
const toggleHeader = (bool2) => {
timer2 && clearTimeout(timer2)
isShowXiala.value = false
if (!screenStatus.isFull) return
isShow.value = bool2
}
watch$1(
() => screenStatus.isFull,
() => {
setTimeout(() => {
isShow.value = !screenStatus.isFull
})
}
)
let loading2 = ref(false)
let forbidden = ref(false)
const route = useRoute()
async function go2(to = route) {
let pageId = to.params.pageId
if (!pageId) {
const home = await getHomePageId()
if (home) {
pageId = home
} else {
alert('\u6CA1\u6709\u9875\u9762\u53EF\u4EE5\u663E\u793A')
return
}
}
const page2 = new Page({ id: String(pageId) })
app.current.project.current.page = page2
if (hasPagePermission(page2)) {
forbidden.value = false
selectPage(page2)?.catch(() => {
history.back()
})
} else {
forbidden.value = true
}
loading2.value = false
}
let onProps = ref({})
let runningSetting = ref(app.config)
const headerRef = ref()
onBeforeRouteUpdate(async (to) => {
let { projectId } = to.params
await app.setCurrentProject({
id: projectId + '',
})
initRun(projectId + '')
return true
})
async function initRun(projectId) {
await init(projectId)
go2(route)
}
onMounted(async () => {
if (mode === 'running' && app.config.isFullAllWindow) {
if (!Client.windowArea.isValidFullArea) {
alert(
'\u663E\u793A\u5668\u672A\u89C4\u5219\u6392\u5217\uFF0C\u5C06\u5F71\u54CD\u6269\u5C55\u5C4F\u94FA\u6EE1\u529F\u80FD\u3002'
)
}
}
const { projectId } = route.params
initRun(projectId + '')
Language$1.initDefautLangInRun(true)
loading2.value = true
setTimeout(async () => {
if (client.isClient()) {
await client.setMaxSize()
screenStatus.isFull = app.config.isFullScreen
if (app.config.isFullScreen) {
client.requestFullscreen()
}
}
})
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$Y, [
unref(client).isClient() && unref(screenStatus).isFull
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: 'toggle-header',
onMouseenter: withModifiers(mouseEnter, ['stop']),
onMouseleave: withModifiers(mouseLeave, ['stop']),
},
[
withDirectives(
createElementVNode(
'div',
{
class: 'icon-btn',
onClick:
_cache[0] ||
(_cache[0] = withModifiers(
($event) => toggleHeader(true),
['stop']
)),
},
_hoisted_4$F,
512
),
[[vShow, isShowXiala.value]]
),
],
40,
_hoisted_2$S
))
: createCommentVNode('', true),
withDirectives(
createVNode$1(
Header$4,
{
ref_key: 'headerRef',
ref: headerRef,
isFullScreen: !unref(screenStatus).isFull,
},
null,
8,
['isFullScreen']
),
[[vShow, unref(client).isClient() && isShow.value]]
),
createElementVNode(
'div',
{
class: 'run',
onClick:
_cache[1] || (_cache[1] = ($event) => toggleHeader(false)),
},
[
loading2.value
? (openBlock(), createElementBlock('span', _hoisted_5$A))
: !forbidden.value
? (openBlock(),
createElementBlock(
Fragment,
{ key: 1 },
[
createVNode$1(
_sfc_main$3h,
{
class: '_project',
style: { display: 'none' },
node: unref(app).current.project,
mode: unref(app).mode,
running: '',
},
null,
8,
['node', 'mode']
),
createVNode$1(
Viewer,
normalizeProps(guardReactiveProps(onProps.value)),
null,
16
),
],
64
))
: (openBlock(),
createElementBlock(
'div',
_hoisted_6$v,
toDisplayString$1(
_ctx._t('\u65E0\u6743\u9650\u67E5\u770B')
),
1
)),
withDirectives(createVNode$1(Menu, null, null, 512), [
[vShow, runningSetting.value.isMenu],
]),
createVNode$1(MiniPagesMenu),
createVNode$1(VirtualKeyboard),
]
),
])
)
}
},
})
var Run = /* @__PURE__ */ _export_sfc(_sfc_main$11, [
['__scopeId', 'data-v-72153583'],
])
var Run$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Run,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var leftMenu_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$X = { class: 'left-menu' }
const _hoisted_2$R = { class: 'menu' }
const _sfc_main$10 = /* @__PURE__ */ defineComponent({
props: {
menus: {
type: Array,
required: false,
default: () => {
return [{ title: '\u5B9E\u65F6\u62A5\u8B66', url: '/' }]
},
},
},
setup(__props2) {
const props2 = __props2
let selectItem = reactive({ title: '\u5B9E\u65F6\u62A5\u8B66', url: '/' })
const selectPage2 = (item2) => {
selectItem.title = item2.title
selectItem.url = item2.url
}
return (_ctx, _cache) => {
const _component_router_link = resolveComponent('router-link')
return (
openBlock(),
createElementBlock('div', _hoisted_1$X, [
createElementVNode('div', _hoisted_2$R, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(props2.menus, (item2, i2) => {
return (
openBlock(),
createBlock(
_component_router_link,
{
to: item2.url,
key: i2,
class: normalizeClass([
'item',
unref(selectItem).title === item2.title
? 'selectItem'
: '',
]),
onClick: ($event) => selectPage2(item2),
},
{
default: withCtx(() => [
createTextVNode(toDisplayString$1(item2.title), 1),
]),
_: 2,
},
1032,
['to', 'class', 'onClick']
)
)
}),
128
)),
]),
])
)
}
},
})
var leftMenu = /* @__PURE__ */ _export_sfc(_sfc_main$10, [
['__scopeId', 'data-v-0f64a6c5'],
])
var leftMenu$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: leftMenu,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var scalingZoom_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$z = (n2) => (
pushScopeId('data-v-bfd4494e'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$W = { class: 'scaling-zoom flex' }
const _hoisted_2$Q = /* @__PURE__ */ _withScopeId$z(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-huamiansuoxiao' },
null,
-1
)
)
const _hoisted_3$L = [_hoisted_2$Q]
const _hoisted_4$E = { class: 'scaling-zoom-val' }
const _hoisted_5$z = /* @__PURE__ */ _withScopeId$z(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-huamianfangda' },
null,
-1
)
)
const _hoisted_6$u = [_hoisted_5$z]
const _sfc_main$$ = /* @__PURE__ */ defineComponent({
props: {
initialZoom: {
type: Number,
required: false,
default: 100,
},
maxZoom: {
type: Number,
required: false,
default: 200,
},
minZoom: {
type: Number,
required: false,
default: 20,
},
range: {
type: Number,
required: false,
default: 20,
},
},
emits: ['change'],
setup(__props2, { expose, emit: emit2 }) {
const props2 = __props2
const zoom = ref(100)
const addZoom2 = () => {
if (zoom.value <= Number(props2.maxZoom) - Number(props2.range)) {
zoom.value += Number(props2.range)
emit2('change', zoom.value)
}
}
const subtractZoom2 = () => {
if (zoom.value >= Number(props2.range) + Number(props2.range)) {
zoom.value -= Number(props2.range)
emit2('change', zoom.value)
}
}
onMounted(() => {
zoom.value = Number(props2.initialZoom)
})
expose({
addZoom: addZoom2,
subtractZoom: subtractZoom2,
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$W, [
createElementVNode(
'div',
{
class: 'scaling-zoom-btn flex',
onClick: subtractZoom2,
},
_hoisted_3$L
),
createElementVNode(
'span',
_hoisted_4$E,
toDisplayString$1(zoom.value) + '%',
1
),
createElementVNode(
'div',
{
class: 'scaling-zoom-btn flex',
onClick: addZoom2,
},
_hoisted_6$u
),
])
)
}
},
})
var ScalingZoom = /* @__PURE__ */ _export_sfc(_sfc_main$$, [
['__scopeId', 'data-v-bfd4494e'],
])
var scalingZoom = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ScalingZoom,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var collapse_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$V = { class: 'item-content' }
const _hoisted_2$P = { class: 'line' }
const _sfc_main$_ = /* @__PURE__ */ defineComponent({
props: {
title: null,
showLine: { type: Boolean },
},
setup(__props2) {
const genID = (length2) => {
return Number(
Math.random().toString().substr(3, length2) + Date.now()
).toString(36)
}
let activeName = ref(genID(8))
return (_ctx, _cache) => {
const _component_el_collapse_item = resolveComponent('el-collapse-item')
const _component_el_collapse = resolveComponent('el-collapse')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
_component_el_collapse,
{
class: 'cms-el-collapse-x collapse',
'model-value': unref(activeName),
},
{
default: withCtx(() => [
createVNode$1(
_component_el_collapse_item,
{
class: 'collapse-item',
title: __props2.title,
name: unref(activeName),
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$V, [
renderSlot(_ctx.$slots, 'default', {}, void 0, true),
]),
]),
_: 3,
},
8,
['title', 'name']
),
]),
_: 3,
},
8,
['model-value']
),
withDirectives(createElementVNode('div', _hoisted_2$P, null, 512), [
[vShow, __props2.showLine],
]),
])
)
}
},
})
var collapse = /* @__PURE__ */ _export_sfc(_sfc_main$_, [
['__scopeId', 'data-v-25d55a3c'],
])
var collapse$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: collapse,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Exterior =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAS1JREFUOE/d07ErRXEcBfBzHsNdTQYLJcUgDFIGGQyKwvL+AOqdX+mVwcgkysKg+67RapHJyoaUmcFKMVn0nnpHd/C6r+Q9rsl3Pr9Pv9/59SX+aPjpVCqVHZLrADratN9IhlKpdJTms9A7yXsA121CMwBeJI00QUmSGMC+pLV2oCRJzgD0Shr8n9BorVYbKJfLr42yf9lRWvSlpMW80LTtzRDCbi7I9hjJc0nFXBCAcQAnklbyQlMAtiVt5YJsD5O8lTTXBNk+iKIo3beWU61WTwFMAtiTtJGFngB0txQyAdvPJI8lrTagOI4nSC6T7MxkZwE82k4Xup/kg+30TB+AO5I3tnskLTWgr24Sx/ECyXkAXbavCoXCEIAoBer1evr1tn0RQjj8FvrJMz8AtBWzE8+u1QkAAAAASUVORK5CYII='
var __glob_3_2 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Exterior,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Exterior_2x =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAAXNSR0IArs4c6QAAAq9JREFUWEft2E1IFVEUB/D/OaOCBBZEvQhaBC7aqCsJCfqg3EZhQRYtgnxz3jyRIIoWFY+iwjIiCnN4y2gjLTKhTzPERbWIahMVERZFQqFFKLyYOSdGFB75RM2vCbzLO/ee+5vD5dyZS4hZo5h5MA7U3t5eMjAw0AygAcCSOQJ/IKLDruve+jv+OJDv+81mdnSOIPlhQ1Vd73ne8/zOcaC2trZBAMvmARQtcUVEmiYD2dgAM6sH0D+bOCLaBSA9GrNDRHZMB7Q2lUr1zSbI9/1DZnZpETRRVhczNNl+W8zQ/56hIVXd5nne07EXKVSp8wvjXNehzwDKzGxzKpV6EaEWGtQNYAhAjYisiANoWFUrmDkrIlvjAPoB4FsQBLWNjY0fFxxkZl1EtCqCiEjFgoMAfA/DsMZxnHsiUh4HUM7MulW1KZ1Ov48D6DGASgA9IlIXB1CfqtYz830RWRoHkBJRCxHdSSaTPXEAPQNQTUQZ13VPxwH0yswuENF1EeE4gMzM9jNzmeu61yYFqWpVaWnpp8k+KabzPJfLpQCcHZ3zBkC5qtZ5nnd7IlAOQMl0FvnXsWZ2F8BrImoSkZE1C/253jSzkZowD23YzLYQ0QERiTI3HpTNZhNBEHQSUfUcg7IAVgLYwMy1yWTyZUFQ1JnJZDiRSFQBGClWhRoRXQXw28wuMvN5M4tO7lMAWgAMAzgJ4Fw018xOENFxIioDcMTMGgGsUdVNzBxt5goRWT0haCqZ8X1/nZn1AngC4BiABwDeqepBZu4ys69hGO4tKip6COCnme0mos4odhiGOx3HuQFgueM4tWEYXhaR7TMCRZNbW1srmbk3qrSqeoaIorMpH/hWVRuY+RGAL0EQ7CsuLu5S1UEz28PMHQB+9ff3b8xkMsGMQVPJ5HTHxO4G7Q+G7DVDQd8gbwAAAABJRU5ErkJggg=='
var __glob_3_3 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Exterior_2x,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Inside =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAjRJREFUOE+tkztvE0EUhc+Z2WUTHjEJARIUFEg6Sv4BAfEUPQ0FRey14n9A44qO2jEFBQ094ikoqECIhoaOJDgPIMQScYSwvbtzLxopsaIQBwsx5Ujzzf3uuZf4T4dbnEqlcgrAbZIDqgqS+wD8BDCoqnUAx0iuARhS1RWSqqqJc+5eqVT6uB30gOTNfyhwIY7jiQ5odnb2EYDrzrkpY8yYiKxaawdFpGmMUefcfgA/jDHHSdZIflfVuwCuxnHM7aBXAM6r6rksy2rGmFH/MAzDSESCLMs2NiFL1toT+Xz+TbVafaiqN3aCHgO4RnLcOXfaWrsMYBjAryRJYK09YK1dc86NkfxULBZXdgVVKpWXJC9sqi2o6skgCFZFxDffiUgrDMPBdrv9NQzDkTiO33ar6In3bbVa41EUTQRBUEuSZNQ5t26t9QmG1tp1ERkJw3Bhenp6uRvoBYCLJKcAzHk9H3MQBEe8noj4uA96vTRNh0ul0rtuoGcALvuK+vv7J0Wko5dl2SGS4vWMMUPGmKVCobC4J8hX1Gw257breSXnXEfPOXd4ZmbmfTfQcwCXfGoAJtM0nQ+CwCf4ZaceyW/FYvFzt9Sekrzi58gYM59l2aQx5g89Y0yTZF8+n/+wK2jrstFoDORyuRERqfvoSbb92kRRFCVJsiEiR+v1+mK5XG7tCfJT2uu+devRfQC3ALzuFQTgDIBcHMd9nd+r1epZVfVr4nes15OSLBcKhTs9a/yN/Btv0YQiTwWGtAAAAABJRU5ErkJggg=='
var __glob_3_4 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Inside,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Inside_2x =
'data:image/png;base64,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'
var __glob_3_5 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Inside_2x,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Selected$2 =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAXFJREFUOE/dk71LAnEYx7/PqUMlBHnqUuTVHP0BvUCTky1RS7SFkINKQY1FU28Umka6tSTNNjS21N7SIKU3KIjdGS2hnHdPZBglmic49Zuf3+fh+b4QevSoRxz8E5B7pTjQP2S5JghiNuKY+JSn+9P8bJP61DQBXjDus1FxqnvQDgtSWUkR0RIYj1W9MluID6tdg6SwmiBmPwOyVsV0/lwsNFw3fdpYSNkDsMWMolYzZvJnrqef0amDpJByAcZbruLYQJK05mx5gsqmQNhn0CuM2lzu1P3QPPMFCioyEUYZuNUE20L+ZLDcGJTC6ioZnGTCu6Dr3ueY+65ViOug8YA6wlYjDaJJMDLQ2ZeNOzNSqLQIWFLEbBgw5uWo66ZdE741cgZKdrtVuCSCj4EyEY7A2GaQlXV9WY65rv6q02+x6/aWD4l4vf6JwQbxmhxxJjp1sqVrnuCLn4iOmbErR8WDTpCuc2T+NDOr28yYDmSnHR83yIYT0wmJBAAAAABJRU5ErkJggg=='
var __glob_3_6 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Selected$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Selected_2x =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAAXNSR0IArs4c6QAAAvRJREFUWEftlktIVGEUx//nGzSVoHBmNBVpHm2KXBQEPSA3PUCCTCo3BQUhBDp3DMo2ga16LJpXhNFGIqxoZ1REkJEFQasgbDNzx0IEm4elxJQ698TNSa+30TujM5OLuct7Hv/fPd/5zrmEVfbQKuNBEcjoRIoVKlbIqAJG9oL3kEOK7mDQAwJvIPC5kM96WwtZUCCnK76VKTkAkCUF8UP2Wdb+F6CN7d/sJtPMIIA6DcCw7LPYCw5kl8aqCaa3AJwa8YQgbgp6ra8KCuToiq9DQhkEoUEjPMOCW8Ie62N9k+e1h2rbRivKyktfANitFWbgZNhnuZfuxuUNaEs3l/4aj/UzcHDBkTBcIb8lsNj1zw/QMTY566J9zHR8gTBTt+w3X15qFuUBiMnujvcQc9sCYYJP9lrcBR+MDil6BcBFXc/cDfvMpwDijIFs7nEbcbITwNi0SHhGPPUJo2C93SlFzjPouu4a94dGzS14RMlM8s0dmVOKDjGwWQ0i4J2CZHPYVz2WSRLVx+6OnSHmOzr/AeX7ZNNwr/1npnnmgBxSdApAyVwg4TMp4lDIX/nRKJndHTtKzA8BCI3ve6HQvmDAPGEUn3YwOtzRa2Bc0AVPEonWkLfy2WJJ7VJsP4GfaD+GgE+kTDcGAzWRbGBSpzMfkuqBq7ovVRiQwj7LTX1yW0dspxD8EkC5xvZFKLQnGDCPZAvzD5D6YpMrelgh9AGo0CW8JY+aXX+b09EZb4CivAawft6PoyR4V8hTFVwOTFqgP1AdX7cpQqh7RruZ1WZ/zmWilaZmrKwIFaZGIzzBSnJvOFD9YbkwiwKphvr2SG2JiVSo7TqBIQBr9JsbLA7I/so3K4FZEkg1ppajugSPLCE0DVaaZX/V05XCGALNCjA5pJg6fbvSCCogPiF7rfdzAZMh0KyUwxU7DWL1/3d+VjGflf3WnlzBZAWkOts6Io1CUC+AKhBdkr3mG7mEyRoo1+Lp8uXh92Nl2EUgo/oVK2RUod/i+OwlKIukLwAAAABJRU5ErkJggg=='
var __glob_3_7 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Selected_2x,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Straight_line =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAE4AAAASCAYAAAD15uiRAAAAAXNSR0IArs4c6QAAAGlJREFUWEft1cEJACEQxdCxV7ENsQ2xWBsQxICXIXvPgs8PlvBDAgVVRiEcHIFwwkEBmLk44aAAzFyccFAAZi5OOCgAs+PiWq0d/i9dNtcap0MJd7nqJ7h0s/lwIB8HiCqccFAAZi4Owm3sswgTDHOTFQAAAABJRU5ErkJggg=='
var __glob_3_8 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Straight_line,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Straight_line_2x =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJwAAAAkCAYAAAB8IVNVAAAAAXNSR0IArs4c6QAAAOdJREFUeF7t1EEKg0AQRUG9q+RQ4l0NucFs8kC7sg789Jsi++ajQFhgD7dMKbABB0FaALg0tzHgGEgLAJfmNgYcA2kB4NLcxoBjIC0AXJrbGHAMpAWAS3MbA46BtABwaW5jwDGQFgAuzW0MOAbSAsCluY0Bx0BaALg0tzHgGEgLAJfmNgYcA2mBZXCf47jTX2bsEQXO61o29Dto+cvAPeL98x/5N3D5JQZfWWD5H+6V1zsqLwBcnnz2IHCz3z+/Hrg8+exB4Ga/f349cHny2YPAzX7//Hrg8uSzB4Gb/f759cDlyWcPfgHsbQglLoxw5wAAAABJRU5ErkJggg=='
var __glob_3_9 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Straight_line_2x,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var keyboardDown =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAABHNCSVQICAgIfAhkiAAAAG5JREFUGFdjZCAC/P///xJQmTMjIbVAhXJANWeBWBevYqhCTaDCJXgVIykEWY5bMZpC3IqxKMSuGKhQCSijisXTqM4AKlQGKlLBEToIxQQUIpwBVHgZyBMnEN6PgfKOjEDFokAGMwHF3xgZGT8BAJmGLtEln0cdAAAAAElFTkSuQmCC'
var __glob_3_11 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: keyboardDown,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var login_pic =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAADwAAAAhwCAYAAACQvstyAAAAAXNSR0IArs4c6QAAIABJREFUeF7s3euTZPdd3/Hv7/TM9IwuyEBB+UFIiqT8h/A0VXm6D2JKRMhhbakQlMpJEaCSKcw1EAcKcOG1La210hJ7jMGOw+IgsIwx5mJAgO0CIiMsabUX7e7s3Pt09zm/1MgYjHWbS19On/PSE1eBdnf6Nd1vyT399Sc98ESZw18ECBAgQIAAAQIEpiGQIuLw3zZP/Z8pIueI5D85eB54HXSzAzkVX8pR/2GO3u/3qvFnot+PKMvwnxw8D7wOXtGBiKjr/kGxFlvvOZN2p/GveH5PAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYPoC6YGLw+yIwBGBI4JuHhH4vvu+67/+64AO6IAO6IAO6MDidSBHsZ8i/1lO6Y/rKn9haXn5L/Ko3HYM7BjYMbBj4G/swDDnqp9H21989u6tp9bTePpvNfoTCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgUkJJAvAk6L0+xAgQIAAAQIECCyMwKkXib+2bOx41PHo4h2POvpu5+s2R/E3EfUfRSx9tkjjz+alldIxqGNQR+GOwr/WgfF+maPX34/92Dp3Nu0vzL+z+UIJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgECHBSwAp3Z++NuH+n1fHeM4xtEBHdABHdABHdABHdCB7nYg5/hU9NKlXOVPF8vLtxwDOwZ2DOwY+GsdSKPBqI5y+8byPdsbZ1LV4fdFPXQCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINBoAQvAjf72+OIIECBAgAABAgQ6JWCZOBwtO1p2tDz5o+U6x19HEX9QjOPT0V/+A8fAjoEdAzsGPuzAuIpcr/R3t66+sL3x8HccdOrfuTxYAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCwAAIWgC0AO7LIjiwcWUz+yMLxkteV15XXlQ7ogA7ogA7oQBM7kHPeSan3VI76tyOWP52qct8xqGNQR+GOwsd1HsZgdevcldiJ9VQvwHuavkQCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINB6AQvArf8We4AECBAgQIAAAQIETikwsWXiiMgRTTyKdKzrWLeLz8scMUyRPp8iPl31lj5dDMsvOwZ2DOwYuNvHwHlU1kvL/Z2rEVsbZ9LwlP8G4ZcTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECpxCwAGwB2AKwBWBHODqgAzqgAzqgAzqgAzqgAzoQORWXo85PpqXl345R+UeOgR0DOwbu8DFwHP4vBNSDutzbeuT+b9s5xXuPfikBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBwQoH0jifKPPFBr68Ne53gP0/4OPwyAgQIECBAgAABAgS6JjDx/yKTHME6gnUM/w/H8DkVW5Hr34le71IajZ9yDOwY2DFwd4+BhzlXebi6tf1NL68CV1371w2PlwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIzEvAArClL0cOjhwcOeiADuiADuiADuiADuiADujAa3Ygp2KQcv5spPSpahS/21tbeskxaHePQR2Dd/cYfLxf5no03t26587NjTNpOK83M/25BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgKwKNWwDOETHxIa8TLBF/49fRlSeEx0mAAAECBAgQIECAwCkFJv5faCwTh+PcRh3p55y/lFLx8VGdP7q8srzpGNgxsKPgjh0FR0Rd9w+K3Ze23vPgt++e8p+afjkBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDwGgIWgC19WfpyTNCoYwLHHdn3Q5d1WZd1QAd0QAd0QAcWowNFMc51/kyk+PXROD+5sroycgzsGNgxcLeOgVPRHy0PY+vnvxLbsZ5q78ASIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECkxOwANzQxeGjLiFP7qngdyJAgAABAgQIECBAoNUClokX46h2QY+fc0q7OdJvpVT8TpHHn8lLK6VjYMfAjoG7dQx8MBpt/avvvGtz/bvSuNX/PPXgCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAjAQsAC/oh6vD1+3D+5bxLOPpgA7ogA7ogA7ogA7ogA40sAM5FYNcV59NRe93xnV+cnlledMxsGNgx8DdOAYeV5GX8njv2Z0rm5ceeks5o/c3/TEECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKCVAhaAF3wB+KhLwbP++1r5avGgCBAgQIAAAQIECBCYvIBl4nYfMUdR11F/PoriN6sq/6Zj4G4cgTr29X0+PPqv6/qgHqxtnjub9if/Dw+/IwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQaL+ABWCLWe3+sLnvr+9vAxfRLHgnz0vPS4ud/vmkAzqgAzqgA13sQBR1zvWf1EXxm3WdLzkGdiRqGbojy9BVlIP9uP3I/Wmn/W+1eoQECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGByAhaALQDHxAe3ImLWi8NH/fMm99LxOxEgQIAAAQIECBAg0GqBqf0XJf9jKJFz5FRUKefPRdH72Lgaf3JpZeXAMWhHjkFLj7OrC8n1OI8HMbh9/j+8aStSOnwrx18ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDA6whYALa8ZXmri8tbnvee9573lid1QAd0QAd0QAd0QAca0oGcioOU48ko0sdGw/Fnltf6tWNgR7JdPZLtwuPOu2Vd9IZb1z9x9+2NjVR555YAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBB4dQELwBaAO7UAfNSl4Fn/fQJFgAABAgQIECBAgACBIwm0fpm42Mx1/niRig/nevy3XTiGdOzs2Lmrz/NcRF3tDrc3v/nuzY0zDoGP9M8AfxMBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIdErAAnBDFo/C12GBzQKbBTYd0AEd0AEd0AEd0AEd0AEd+McO5JS+UNd5o7ey8vEoy92uHkl63P1wJN3uI+nxfplH9Wj72efu2nxqPY079c6sB0uAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBF5HwAKwBWALwBEx68XfRfnz1JMAAQIECBAgQIAAAQJHEpjyMnGO4hOR80fSyvJnHYO2+xjU97e7399xFbko+jv1QWyeO5tGR2qPv4kAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECLRYwAKwhS0LWxa2LO3pgA7ogA7ogA7ogA7ogA7owEJ0IEe+mqL3sXx4DLy89PeORbt7LGoZub3LyIeLwEt5vPfSnXfe2jiThi1+X9ZDI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECrytgAdgCsAVgC8ALt4Cs6wQIECBAgAABAgQIEIiIL9YRH02RPpbqeutVRfoRUUbExP+zvceXjqodVTfmuDoixtHfG47/fvP8fd85UD0CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINA1gfTAE8McX3/+Z/nK8pXlq4VYvgrfJ98nvdZrHdABHdABHdABHdABHXi5AznH70bR+2gajz7ZmOPFviNhx8SOiSf1eiyWqv1rV+7Y3Hg4HXTtzVuPlwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgS6K2AB2AKwBWALwAu3AJwb+rrt7j9KPHICBAgQIECAAAECzRDIka6nXP96VL0PRVE934yv6lW+iokvEn9t6djRsaPjdh8d1wdxUA9i89zZtN/Y17cvjAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQITEjglQvATT0HtWxl2cqylYU7HdABHdABHdABHdABHdABHdCBI3agTumPo64/nFf6l3plOZzUEqnfx5GxI+P5Hxn3Un9wu47NC/emvQm9R+q3IUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECjROwANzQJdGmLpz6uqKpJ/K+LkvOr7nk3Lh/8viCCBAgQIAAAQIECMxQIEfspJQ+UY3yR3tFfnqGf/Ti/lETXyh2NOxoeEpHw9VBGb21zfecSbuL+4LzlRMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgVcXWJwF4KaeNx5xeSj8fZbKLJVZKtMBHdABHdABHdABHdABHdCBuXYgR/5yRPHRqPNH08ryDUeZUzrKLP2+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nRewANyeE0Mnw06GnQx7PeuADuiADrSyA53/N3YABAgQINBKgZyjTBEfibr4QBTV8618kB4UgRYLHCzV5e6Vmzc2Hv6OgxY/TA+NAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBOYoYAG4lWcylonD99UZpDPINz6DtAzX6GU4S76WfC35WvLVAR3QAR3Qga50oKhzrp/MRe8DRTX+M4vAFoEntVTr95n+snAZEWVUe3fs33Hj3Nk0muN7vP5oAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEGihgAXgNz6Rc0rqlNQpqdeJDuiADuiADujAKzrQwv9u4CERIECAwNwF0tM56kfqUfxWb+nlf/T4iwCBBRDYqyIX9Wh799JdtzY2UrUAX7IvkQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQWQMACsHMe5zzO+pz16UAzO2Ch2EJxtvxo+bEry48ep6VbvdM7HdCBV3Tg+bpXnI9Uf7goVgaWXKe/5Gp52fLyJF5ng1HUg/5g8+Jb77kdkRzxL8Cb475EAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQINFnAArDTR6ePzTx99H3xfXGars86oAM6oAMn6kCT/8uHr40AAQIEjieQU9pKERdyxPlU11vH+9X+bgIE5iWwP87jot69+cj937Yzr6/Bn0uAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECiy9gAfhEZxWHAx7JWZKzJM8DrwMd6GIHLBNbJrZMHJY6LXVa6rTYqwM6oAOz7UDOcRBF8eE0yu+PtaWrk1gqtXhr8dbzaPrL0gdLdZkHay+dvy8NFv9tZI+AAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBGYtYAHYCacTTiecXTzh9Lz3vPe8988/HdABHZhxB2b9X3T8eQQIEGijQI40isj/u87Fr/SieraNj9FjItA2gTIietHfi/24ce7s4WvYXwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA4GgCFoCd/zj/cf4z4/MfC9oWxC2oxzS6Y5nYMrFlYsvEOqADOqADOtCZDuTDv4r0ZIr8nrS08gVLrtNfcrWYbDH5tK+zvf0y59S//di9cStSOnxzxF8ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQOB1BSwAO310Au0EehqniJ5XnleeV/75ogM6oAM6sFAd8N8bCRAgsKgCOccf5ZTOFbn+vUV9DL5uAl0S2F/K42J/9eYj96edLj1uj5UAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEji9gAXihzhIsp1pOtZw6leVUHXCm6ExxemeKlgg7s0QYlkctj3q9e73rgA7owFw7kFPxN7mq3pdW+59IZVlZrLVYe9rFWr9+usvSB7sH5V1vXrv+i/82lcd/S9evIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIEuCFgAnt7Jk5NCJ4VOCr2+dEAHdEAHdEAHdEAHTtWBLvyXUo+RAIHJCuSIF3Mdj8ZK/K9ilAeT/d39bgQITFLg8PJ3fzDeGd9z542NM6ma5O/t9yJAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBxRewAHyqj+Nb5LXIa5HXIq8O6IAOLGQHLBTOdaEw+PO3FGspVgd0QAem3oFcFFuR8+N1sXy+Ny5vWwS2CGzRd7qLvqfxHRRRD7YGmxcfuOd2RDp8o8FfBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgLABbJHMCbZnQMqEO6IAO6IAO6IAO6IAOHKsD/rs0AQKLI5AjDSLXT4xT8d7lXG8uzlfuKyXQPYGyzKPhytaNC/e+ea97j94jJkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFvFEjveHyYF3K571gfT7fQaaHTQqfXuQ7ogA7owAJ0wCKmRUyLmFNfxLRAnbzOvM68zjr7z9tiL3J1Iff654pxuWMR2CLwaRZrPX+m+/zZreuD1cHa9XNn08jb2QQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQXYH09sfL7CTKSdQCnEQ5+bZMaJnQMqEO6IAO6IAO6IAO6MDrdqC7/9XeIydwLIHdOvKjvVHxSCzVu8f6lf5mAgRmJlBGxP7+8PavXrn7VqynemZ/sD+IAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBBojYAHYGYkzEmckzkh0QAd0QAd04PU70NmlREupYSnVUqrXv8VkHWhvB4piK9fx/rhj6XyxVw4suk530ZUv35MuLu/vDcZ7d67e2DiTHOw35i11XwgBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRmI2AB2MmTkyenj04fdUAHdEAHdEAHdEAHdEAHptiB2fzXe38KgZMKpM0c+X29Ih7LVT4cHfUXAQINFNit64PVwdr1c2fTqIFfni+JAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBKYgYAHYx9yn+DH37IzC88vzyzmVDuiADujA9DpgmdQyqWXS9i6Ten17fXt9z/z1nSPdTCm9t+gvXcwHZWmx1mLtSRdr/boypvX62asi5zS8/dj33H0rIh2+8eYvAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEGixgAXg6Z2kOPly8uXky+tLB3RAB3RAB3RAB3RAB3SgsR1o8XsdHtopBHKkG5HzuV4vLloEPgWkX0pgigJlkUfDauvGhXvfvDfFP8ZvTYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJzFrAA7OP4Po7f2I/jW1AOr0+vT69PZ3M6oAOL2AHLpZZLLZfOfLk0vO687rzuJv+6K4qX6rp+b6ys/GqvLIfTWjT1+1oathh88sXgwbDa/7vn77j+1Hoaz/k9Zn88AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECExBwAKw0yqnVU6rFvG0yvPW89bz1j+/dEAHdEAHdEAHdKClHZjCex9+y1MI5JSupZzfW0d8qJfz8BS/lV9KgMAUBAZF1IPob158a9qcwm/vtyRAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBOQpYAHY24GzA2UBLzwYsKFtQTvqmb/rm33N04Os7YCHVQqqF1MkvpHpdeV116HWVI66mXPxi9Jd+LZVlZbnXcq/l3pMv907j9VNuD0bb37R6feNMOpjje83+aAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCYoIAFYKdBToOcBjkR1AEd0AEd0AEd0AEd0AEd0AEdeIMOTPC9mAX/rfJXqoifX8rxiQV/IL58Aq0TKCOiGo939+6886WNM6lq3QP0gAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAiYL1QUAAAgAElEQVQQIECAAAECBAgQINAxAQvAPubuY+4+5u7cRQd0QAd0QAd0QAfm1wELqhZUO7SgGp7vnu8ter7novjrqPO7i5XlT1mCbdYSrO+H78dgFHW50r/xxHen7Y691+3hEiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoFUCFoDnd+rg1MipkVMjrz8d0AEd0AEd0AEd0AEd0AEd0IFTdWDe71LlSH9VRP6JyPlP5/21+PMJEPjnAluDenBnvXbt3Nk0YkOAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECiyeQ3nFhmMPHjX3c+FQfN878+Dnb0FEd0AEd0AEd0IF2dcBSq6XWFi21Wh5Ons+zeD4Xxe8XUf9cXl75ogVaC7TR74fnQTOeB3v7ZV4al5sfeNs9txbvrWtfMQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBLotkN5+ocypXR/Vd3rh++kEywmWDuiADuiADuiADuiADuiADuiADsy4A5Ei5zr+T7FU/FyqqsvdfsvNoyfQLIGdOg979dXr5+/7zkGzvjJfDQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi8loAFYB8HnvHHgZ2bW9y2GB26ozvOkZwj6YAO6IAOnLQDloktuc5iydXzzPPslM+zHDGMVFzMVf3LvdXl25Zgm7EE6/vg+7BXRS7q0fajz911M9ZT7S1zAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEGi2gAVgpwcnPT3w65wuOV3SDx3QAR3QAR3QAR3QAR3QAR3QgdfuQIrdOhW/Erl+dJzzsB8RZUTM8z+b/Tadr47AbAT2x3lc9VZfunBv2pvNn+hPIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGTCFgA9nF1H1f3cXUfV9cBHdABHdABHdABHdCB03XAYqzF2FMuxoZfH9Hi11HO+Wr0il/IZfVrvTv72RKtJdro98PzYP7Pg+2o9sr+Hdc3zqTqJG8s+zUECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMF0BC8BOHZw6nO7UgR8/J2M6qgM6oAM6oAM6oAM6oAM6oANH68AzoyL99Epdf3reS8BN+/On+/af353AawsMRlHvjPZvbpz9li1OBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINAsAQvAPqbtY9o+pn20j2lz4qSXeqkDOqADOqADOrCoHWjxsqrl3Nzq5dz2fn/jD1J/+V1Rls9YgrWEawl4/kvAh6/D3YM4WB3E9XNn06hZb1/7aggQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINBdAQvAPsK/qB/h93U7QXKCpF86oAM6oAM6oAM6oAM6oAM6sKAdqFOqUsSHBxH/845cbzZtkdfXE9GPiK85dPet02498r0qcsr9m+fvS7e79cg9WgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECDRTwAKwj4v7uLiPiy/ox8Wzr1u/9Eu/dEAHdEAHdEAHFrsDlomjvQu3lonjqM/vIu1GnX+57q881ivLoUVgi8AWgee/CDxM/UGxF9esATfzDX1fFQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC3RGwAOxkwMnAYp8M+P75/jn90nEd0AEd0AEd0AEd0AEd0IHF70CK51OdfmaY6k9+/fKsJd5/vsTLwzLxrN62PlwDHu0Pbl184E2bs/oz/TkECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg8M8FLAD7mLSPSS/+x6SdO3gdex17HeuADuiADuiADuiADkyuA0ddbvX3WTDOk186zkXxp72o35WXV75oCXb+S7AWmS0yD4cx2Homrm+sp6E31gkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgtgIWgCf3EWknB04OnBx4PemADuiADuiADuiADuiADuiADujAKTsQKXLO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B+cgeqwDOqADOqADOqADOqADOqADM+xATvHXORU/0qvHfzn788dpn1d29Pe3TLxQy8SHh9d1v7/16Jm4EZFyF96M9xgJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBwHAELwJZuJ7t0y3OxPH20fIYfLQ+nDJ5vnm9OmnRAB3RAB3RAB3RAB3SgiR1IxUZZ5/++murblmCdQnf0dHrqi7+v57pT5+Hg2dWrG+tpeJw3tv29BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQaLuABWAfv/bxax+/buLHrz0vPS89L/3zSQd0QAd0QAd0QAd0QAd0YGYdyKm4FRE/WeSlj0U4A3YGPOEzYMvEb7hMvLdf5n7Zv3HubNpq+xvyHh8BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSOKmAB2GLtYi3W+n514/s1s494h5MKJxVOKrzedEAHdEAHdEAHdEAHdEAHvr4Df1jUxQ+XRfX8hE9A57qw6qTZSfOiPJ/zsNr/l8/fcXV9PdVHfYPb30eAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIG2ClgA9jFfH/P1cX8f99cBHdABHdABHdABHdABHdABHdABHfiHDuScyyiWfqkejd+/tLQytgjsfLi158MNXSbeH+fx3ubqtY2H00Fb35T3uAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIHAUAQvAFmW7sSjr++z7nCLyaZ8HTiKcRDiJcBqlAzqgAzqgAzqgAzqgA13qwDOjOv7LSpGfdgLb2hNYy8zRzBP3cRU5p+Htx77nm24e5U1ufw8BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTaKGABuEsfW/UxbR/T9nx3rqEDOqADOqADOqADOqADOqADOqADR+5ATilHjotFsfxzUZe7zmD7DT0X9XU184z3hN+Xr1smHg5j8MwzcfWp9TRu45vzHhMBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgReT8AC8GkXQf16y7KTWJb1PPI8Os3z6MgfXQ+nHk49nHp4veiADuiADuiADuiADujASTqQ00up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gAABAgQIECBAgAABAgQIECBAgMDUBCwAz3pRy59nyc+SnyU/HdABHdABHdABHdABHTheByySLuwiqVNWp6wnP2V1Cn7S109Equo6/1JRxy+PlyJbwnUK7SR4OifBgyLqUXX72oV737w3tXfv/cYECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECHRawAKwBWALwGGZtEvLpJZ4Pd8937u7YO38xvmNM6KTnhH5dfqhH/qhAzqgA4vYgZzj85FXHuoV5UvTOX90VsrVefnefplH1eDWxQfetNnpnzJ48AQIECBAgAABAgQIECBAgAABAiG8Z7oAACAASURBVAQIECBAgAABAgQIECBAgAABAgQITEXAArDlreMtb/HiZbHQYqEO6IAO6IAO6IAO6IAOfLUDloktE4fngddB00+D01aO+p1VpKecaloCdrI9vZPtanu8e/7BO69FpMMs+osAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQITEUhvf6zMFjEtYlrE7O4ipte/17/Xv9e/Dsy3A86GnA01/WzI12f5VKd0Sgd0QAcWvwM5p8ejFz/VyytDZ7DOYKd3BtvtM/OD7brcfWrtxY2NVE3knXu/CQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECnRdIZz84yC8vF1lwsuTmeeB1oAM6oAM6oAM6oAM6oAM6oAPt6YCFYgvFFootdX99B3L663FVPLiyXD3nBNYJbLdPdaf3/a928/ja6IUrlx56y+HLzF8ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBA4lYAF4LD8aPlxvsuP/Plb4NVhHdCBJnbA0t/iL/1Z7LTY6XXsdawDOqADOvAqHdiNqB8u0uqnLAE7g57eGWy3z4sHo6hHN29fu/Cf3rx3qnfu/WICBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBDovYAHYwpmFMwtn7Vk483r2evZ69nrWAR3QAR3QAR3QgeZ3wDKxZWLLxHNdJo5IOUd6T6rqXxgvRe72qaYTWN//6ZzCRxlxMBzcvPjAmzY7/xMIAAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQInFjAArAF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idASoSVCi6Q6oAM6oAM6oAM6YJnYMrEl5RMuKeco/mqc4239YvmWZd5mLMj6PrTj+7CzPxgOvnn18saZVHX+Jx0ACBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECLRQwAKwhR8LPxZ+prPww5WrvuqrDuiADuiADuiADuiADuiADujAP3Xg8riK+1aW4llLwJaQLUG/yhL0SZeJy/6oV8WL586mUQt/fuEhESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEOi0gAVgH0Z+jQ8jL8AiabacaznX87TzC9qWCC0RWiK0SKoDOqADOqADOqADloktEy/MMnHOxU5E8b29ove0Bdp2LND6Pjbj+7gzGFSDe15eAh52+qcdHjwBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBlglYALZEY4nGEbhFKh3QAR3QAR3QAR3QAR3QAR3QAR3QAR2YSQciYljX8c7lpbhkCdgSsCXgV1kCLk/2vBgOcnX54IUXLz30lsOrZH8RIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINACAQvAPtw5kw93pok5W3zt/OKr5eew/LwAHbBEaInQEqFFUh3QAR3QAR3QAR2wTGyZ+DWXiXMUOXL9c72if86CbDMWZH0f2vF9GA4G1dbl1csb65aAW/CzGw+BAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQKTv++AgT+44MxbsmNTXmy0cWTia2HG215PXU3g9eT359wD/XNUBHdABHdABHdABHdABHThGB9JGqvOPjKvIlmAntwRrWflkC7ptcTtcAnYE7Cc/BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBNohkM4+NjgcFPXhTB/OPMaHMz1fXnk0vwCLpJZzLecmz9POL2hbIrREaInQIqkO6IAO6IAO6IAOWCZu2jJxrn8vpdUHi1QOIvphibYdS7S+j/P9PloCbscPbzwKAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAun7zlsAtoBsudURvKNuHdABHdABHdABHdABHdABHdABHdABHZhTB+r0papI98WovmUJ2BJwW5Z45/04LAH74Q8B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gAABAgQIECBAgAABAgQIECBAgAABAgSaLqAB2GJZi2Utlp3yYllDeob0DOsa1pUDckAOyAE5IAe2mwMaijUUayiOGopDNteBZt4smnnTrI9DDO9ZaC3969ybVm1f3k24TT8+671e8ZflX5z94MqXDJv+hYz9J0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQILAVAQ3AW9Hy2K0JaCY2XG242nC1myzIATkgB+SAHJADckAOyAE5IAfkgByoeA6UqXV8caH80e02oHqeBmENypsNymn45NnlM+FQLLf2IbNHEyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEGiugAZgi1AtQq34IlSNghoFNQput1HQ8+SH/JAfckAOyAE5sN0c0EycTSNr0hCsIdj1OPNG3Fk38GbyfmWMP73YWvyFpje52n9Nw53QCds9D26WYePEo+GFEGJq7lcy9pwAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDA+AIagMe38si6CGgmNvRt6FsDmZs/yAE5IAfkgByQA3JADsgBOSAH5IAc2GoOFPEHF5bS0xp9Nfpq9N1s9N3eedBdG908fuCBC3X5qNl+ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEJimgAZgiz0t9tzqYk+Pt0hcbsgNOSAH5IAckANyQA7IgSxzQBOqZmKNyBqRM8qBTJp7J9mQHEIrhZC+d6G99GvbbUD1PA26O2nQrcv5c309vPieN8dr0/ziw2sTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqIOABuA6HEX7UA8BzcSGSLIcIgmOi+NiyM+QnxyQA3JADsgBOSAH5IAckANy4JM5EGJZlOng0lL4re02oHre9ppjudXHbfPD3MFS5/zJN8Rb9fhg114QIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQmI6ABmCLeC3itYjXIl45IAfkgByQA3JADsgBOSAH5MAUcyCjRtKkIVdDrvNRU/ZLObCjhuLWqExh3+LC4vvr0shqPzQTz7qZeNQN6VK/c/aZg7E/na8+vCoBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB6gto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gAABAgQIECBAgAABAgQIECBAgAABAgQIECBQCwENwBp+DCsZVjKsJAfkgByQA3JADsgBOSAH5IAckANyQA7IATlwzxyYQDNxCP9lsb30L/uaYSfWDKtRuROadD4NljrnT74h3qrFtzN2ggABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMA9BDQAO0UIECBAgACBegtoJjbMY5jHMM89h3k0SWqSrGiTpHyTb/LN7zlyoKI50PrpxYXyFzTAbr0BVnOy5uTeMJQLw86ZwytxWO8PM+wdAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgRA0AFssa7GsxbIVXSxrSCPKL/klv+SXHJADckAOyAE5IAfkgByQA3KgkjlQlOFtncXwvskMATerAVbjr+Pdv9EbPnlg+XSIMfmShwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgECdBTQA1/no2jcCBAgQIEAgXwHNxIZ1DOtUclhHU66bsLgJi8ZsOSAH5IAcmFAODIsU39hZSH82mSFgzbAcm9WovNYtbr175f7z+f7Rb8sIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI7FxAA7CmHMM3hm8M38gBOSAH5IAckANyQA7IATkgB+SAHJADckAOzDoHQlgfpvBP7lsMH63n8Kqm2n6/HzQWT+886I7CleN74vWdf03iFQgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjkKaABOM/jYqsIECBAgAABAvMR0Exs+Mnwk+GnWQ8/eT+5I3fkjhyQA43OgXRhkNrfsGuhvFbPIWDNxI7r9JqJR0VIcalz7vie2JvPH9DelQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMB0BTQAW2RqkWmjF5kGx9/xN2zg54AckANyQA7IATkgB+SAHJADckAOyIH55sCHh2X81vsW08Cw6PSGRTudTw4jT6+RVuPv7BuPY0rFjQeXT68+EovpfpXi1QkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjMXkAD8OzNvSMBAgQIECBAgMBWBTQTG8qZ71AOf/6GIw1HygE5IAfkwLRz4DeLUXjrp4ZUNeca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fI6FLSFAgAABAgQIECBAgAABAgQIECBAgEC+Aqn8jRRa353vBtoyAvkIpFYo1x/onFp9JBb5bJUtIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqJKABuDtNut5nmZOzZyaOeWAHJADckAObC8HNAlqEtQkqElQDsgBOSAH5IAckAOVzYFWTG8syvhHGmDv3QCrKVlTcjeN1p/e98DFKn1pZFsJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTyEdAAnM+xsCUECBAgQIAAAQIECBAgQIAAAQIECBDIWyCmC6FofU2KqZv3hto6AnkIFGfPnz1+6At7eWyNrSBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEKiSwMsGgKMmu+012XHjpglUE6gckANyQA7IgWrngCZCTYSaCCvbRBhdv65f16/rVw7IATkw4xyITy0tpUMabjXcaoK+dxP0xlrZP3Zg15kqfXFkWwkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBPIQ0ACcx3GwFQQIECBAgAABAgQIECBAgAABAgQIEKiMQBni62NKf16ZDbahBOYokOL6xaN7X7U+x03w1gQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAhUUqMwAsGbiUO1GPY2Ijp9mVM2ockAOyAE5IAe2lwMaDTUaajSccaNh8H5yR+7IHTkgB+TAODnQCs/3RvG1r1hOQ03AmoA1Ad+9CXiQUnFy3/LzIcRUwe+RbDIBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMCcBCozADwnH29LgAABAgQIECBAgAABAgQIECBAgAABArcRiDH8YlmGn4JDgMA4Ap2rTz4er47zSI8hQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgsClgAHiH54FmYs3Em5UNzgPngfPAdSAH5IAckAONywHNgJoBx2kGdJ44T5wnmmTlgByQA7XPgXYrfMOoCH+lAfbuDbB8+NzqhnTqfOfUs4fiaIdfS3g6AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAQwQMADfkQNtNAgQIECBAgAABAgQIECBAgAABAgQITEHgwymFh6fwul6SQO0Eivbo5vE9D1yo3Y7ZIQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgakIGACeCuv8X7RxDXRB86TmSc2Trns5IAfkgByQA3Ig1L5hL2rS1KSpSdN1LgfkgByQA1nmQPrBpaX4dL8fgqZbTbfOgztfB5vfHKytXT63+rbP35j/twi2gAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAIHcBA8C5HyHbR4AAAQIECBAgQIAAAQIECBAgQIAAgYwFUgxrxaj1Ve1WeS3jzbRpBLIQGBRpcHLlvtNZbIyNIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQyFrAAHDWh6e+G6ehUEOhhkJNpXJADsgBOSAH5ECjciDLpj6NyRqVgyZVTaqaVOWzHJADk8yB3yjL8N0agDUAawC+dxP2WtG9vLryyhv1/QbAnhEgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECExCID5+pLe57t4/AgQIECBAgAABAgQIECBAgAABAgQIECCwbYEY47eXKf3ptl/AEwk0RCCmVBw5t3wqHIplQ3bZbhIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECGxDwADwNtA8pb4Cmgg1ETaqiTA43o63Blq5LwfkgBxofA5ovtR8qflyks2Xzifnk/PJzxU5kMLpVjt+TVGkkSZgTcCagO/eBHytO7j+9MruK/X9tN2eESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI7FTAAPBOBT2fAAECBAgQIECAAAECBAgQIECAAAECBD4ukEL49yGE/4CDAIG7C4yKkDqhc/rwShyyIkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIHA7AQPAzgsCFRBofDOdptrNxbPBeaCp1HngOpADckAOyIHG5IAGSQ2SmmQ1ycoBOSAHqpwDgyKkr11eimc0wN69AZYPn7RRdI++9f4XKvARtU0kQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCYg4AB4Dmge0sCBAgQIECAAAECBAgQIECAAAECBAjUVyD9SQrxO+q7f/aMwOQE2kXnhcMrsTu5V/RKBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECdREwAFyXI2k/CMxBoDENdBqINRBrYNZALQfkgByQA3JADmzmgEZSjaQaSV0HckAOyIGxc6DdDt85KsJ/63RC0HSr6dZ5cJfr4EYaPvmW+07N4eNdb0mAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIJC5gAHgzA+QzSNAgAABAgQIECBAgAABAgQIECBAgEDlBGK6XA7bXx0XyluV23YbTGDGAr1u59JTB+PajN/W2xEgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECGQuYAA48wNk8wgQ2LqAZuKgoU9Tp6ZOTZ1yQA7IATkgB5qUAxpJNZJqJB27kVSTd3C9uF5mer0UIZ5YXko/rAFYA7AG4Ls3YRfDNDq+f/lUCDFt/dNQzyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEKirgAHguh5Z+0WAAAECBAgQIECAAAECBAgQIECAAIF5CsRQpBS+MYTwf+a5Gd6bQBUEivbGleN7HrpehW21jQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABArMRMAA8G2fvQoAAAU2Mmhg1MTapidH57nx3vvu5JwfkgByYacNk0ujJWxO2Zl85kHMOfKhM4Zs1wN69AZYPn0EvFUceX34+RC3APkomQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBD4hIABYGcCAQIECBAgQIAAAQIECBAgQIAAAQIECExNIIX220Mo3ju1N/DCBGoj0L/65OMPXq3N7tgRAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBHQkYAN4RnycTIECg+gJRQ6GGQg2FmkrlgByQA3JADsiBJuWAplhNsZpic26KdX7W9vxMV9ux/RWjVN7SdKvptt8PwXlw+/MgtUL59053nj90KJbV/9TRHhAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECOxUID7+rl6662r3nb6D5xMgQIAAAQIECBAgQIAAAQIECBAgQIBAowVSiMdDSD/aaAQ7T2AMgW4xuP70yu4rYzzUQwgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBGouoAG45gfY7hEgQKCqApqJgybCJjURat50vjvfNfDKATkgB+SAZmLNr7Vtfg0ah13fn7i+W6EoUnjt8lL4mAZYDbgagO/cBH2rG9Kp851Tzx6Ko6p+rme7CRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEJiNw7wbglOkq5Mnsv1chQIAAAQIECBAgQIAAAQIECBAgQIAAgdkIfDCF8K2zeSvvQqC6AmWrc+PYY/FydffAlhMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECExCQAPwJBS9BgECBAg0RkAzsWbiXO+NYruC5kgNshpkM713k3yST35/qvjvT5pLNRNrJtZgPOkcaId/URbhv2qAvXMDrIZkDcmjIqRTX9w59eyrtQA35kNHO0qAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQuI1AdRuAc11F7jQjQIAAAQIECBAgQIAAAQIECBAgQIAAgdsKxJguFcP2a+JCeQsRAQJ3Foips35kX7zIiAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoLkCGoCbe+ztOQECBAjUSECzXsWb9TS3am7V3KrBWQ7IATkgB+TA9nJg0s2kXk/jscbjmTQeh5SOLnbiv9V0q+lWE/Tdm6DXdndOrz4SBzX6CMuuECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIbEFAA3CuTcKT3q4tnBQeSoAAAQIECBAgQIAAAQIECBAgQIAAgakJxFCUIbw2pvCxqb2HFyZQA4F+Udx698r952uwK3aBAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgGwIagLeB5ikECBAgQIDAeAKaiTUTT/qeJl4vaMjUkLm9hkxu3DQMy085MNsc0CSsSViT8D2bhEOMf5xSeoMG2Ls3wPJpts/mpy+7up0z7zwY++N9EuNRBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECdRLQAGyKZL5TJHW6muwLAQIECBAgQIAAAQIECBAgQIAAAQJjC5QpPR5j/B9jP8EDCTRQYDgsN07s33WugbtulwkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECjRfQANz4UwAAAQIECBBoroCGYg3F7gUz33vB8Ocvh+WwHJADcmDGOaCZWDNxfs3Ez7Xb4WtGRUiabpvddOv43/34XyquvvC+lc/rNvcTHHtOgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEGimgAZgq42tNr7bauNm5oK9JkCAAAECBAgQIECAAAECBAgQIDAbgRi/P6X0K7N5M+9CoJoCZb/sHzuw60w1t95WEyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIbFdAA/B25TyPAAECBAgQIDAlAU14M27CC97PPXHcE0fuyAE5IAfkgByYaw5oJm50M3ErphcHrdardy2kjX4/BE2wmoCdB7e/Di6vrV1YPfC3bk7powgvS4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgkKGABuC5rm40bRL4b2+VeYZhYpMIECBAgAABAgQIECBAgAABAgQIbEsghXemGH5uW8/1JAINERgUaXBy5b7TDdldu0mAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIBBC0ADsNCBAgAABAgQIEBhLQDOgZkD3btnevVu4cZOf8lMOyAE5UNEc0Ew8y2bi/sJ9rS8bbpRXNQBrANYAfOcm7LV+58LqgagFeKxPMTyIAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFB9AQ3AVuFahWsV7uRW4VY/E+0BAQIECBAgQIAAAQIECBAgQIDAHARSCKshhO+bw1t7SwKVEShbZf/YY7vOVGaDbSgBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMCOBDQA74jPkwkQIECAAAECBOYt4F4ek7uXh3vjuDeO68n1JAfkgByQA3KgAjlQ32bisgjh65eXwl9rgL1zA6yGZA3J6xc650++Pd6a99/i3p8AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGD6AnHvuzZSsLrT6k6rOyuwujM4T7d7nk4/S70DAQIECBAgQIAAAQIECBAgQIDAjgXSH4bQemzHL+MFCNRYIKayd2TfrrM13kW7RoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg8JJA3HtkY3Okzj8CBAgQIECAAAECBCYo4B477l2y3XuXeJ5788gP+SEH5IAckAOVzIEJNRO3FlrfXo7Sn2q61XSrCfrOTdBruzvnVh+JGxP8E9ZLESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIZCigAbiSq+k0wQbHzWroOqyGzvCHgk0iQIAAAQIECBAgQIAAAQIECMxZ4P8Wo/j17YWPfwLoHwECtxEYDsuNE/t3nYNDgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQbwENwPU+vvaOAAECBAgQIECAwKcJ1OEeGu4F414wzmPNmHJADsgBOSAH6p0DRUjfc19o/Vo/hNAJIezovx1Nupp079ykW9Wm6c0/8op25+zxPbHnT14CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIH6CmgAtlqw3qsFHV/H16rwra8Kr+/PPHtGgAABAgQIECBAgAABAgQIVEPghUFqfdVSTMNqbK6tJDB7gXbRuXV4JZ6f/Tt7RwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgVkJaACelbT3IUCAAAECBAgQIEDgjgLu2bH1e3a414173bhuXDdyQA7IATlQ6xxI4VCK8akdNwDvtEF4Ws/XTBw0E++8mfiFbufMMwfjZkm2fwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAjUU0ABc61VywSpIx9dqaKuh65MDNfwhbJcIECBAgAABAgQIECBAgACB2wvElC71Q/vLtQA7QwjcWaBoj24e3/PABUYECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQL1FNAAXM/jaq8IECBAgAABAgQIEJiAgHuJ1OdeIu4N5N5ArmfXsxyQA3KggjmQwo92Yjy+WW9a2ybgaTUMb/d1NRNXqpl4VITUCZ3Th1ficAJ//ngJAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBzAQ0AFv9afWn1Z8VXP0ZnLfO23zO28x+sNscAgQIECBAgAABAgQIECBQF4GYwtXhYuvLFkZpcwbYPwIEbiMQ0431I/v+9kU4BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC9RPQAFy/Y2qPCBAgQIAAAQIECBCouYB7geRzLxD3lHJvHtej61EOyAE5MN0caJXpJ8pW610agENodBOyZuI7NhPf6vbSqfMPnnr2UBzV/M8gu0eAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQaJyABmCrNK3StEpzuqs0+fKVs/PJ2cb9SmOHCRAgQIAAAQIECBAgQKCOAimEtVZqfWmKqVvH/bNPBCYhULaGN4499orLk3gtr0GAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIJCPgAbgfI6FLSFAgAABAgQIECBAgEClBdz7xb1f3PtlPvd+4c5d/srf+udA/JlOCP+x0Q24oeENwLnufybNxKOil7oPPfj86iOxqPQfFDaeAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEDg0wQ0ANd/dZxVsFbBWgXrOpcDciCfHPCLGAECBAgQIECAAAECBAgQ2KLAZgtwDO0vD6Fc3+JTPZxAYwS6xeD60yu7rzRmh+0oAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKABAhqAG3CQ7SIBAgQIECBAgAABAgSaLOBeIPncC8S9edybx/XoepQDcmDbOZDiz6cYfraTaxOs7QoamkOY5/nZa/XK9Wd++9Tq6iNagJv8x499J0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBGoloAHYqkOrDnlJfCkAACAASURBVLe96jBYtev6cf24fuRAXXKgVr/e2RkCBAgQIECAAAECBAjUUuBWCO0v1QJcy2NrpyYkMOwNrp14y+4XJ/RyXoYAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGDOAhqA53wAvD0BAgQIECBAgAABAgQINFPAvVTcS6Uu91KxH+4NJc/k2axyoIzx8HIKP6lpdr5Ns/zz9U+DXnl0/4PPhRg3L0v/CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEKi4Q976rm0KMIaQUPvHfYNWiVYvOA9eBHJADckAOyIEccqDiv2jafAIECBAgQIAAAQIECExSIKawMYjtL18M5dVJvq7XIlAngY1B78X3vPmzrtVpn+wLAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKCpAhqAm3rk7TcBAgQIECBAgAABAgQIELiLQA73wnBPFvdkcR66N5MckAMvy4EUTqQYf7gTQtBEm28TreMzv/Oz294YHd/z0PN+0SVAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEKi+wG0agD/ZBJzbfzUTB6terXq16tWqVzkgB+SAHMghB6r/O7A9IECAAAECBAgQIECgsgJxkGL7K2MqLlR2F2w4gSkLpLh+8ejeV61P+W28PAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwJQFNABPGdjLEyBAgAABAgQIECBAgAABApMTyOFeGO7J4p4szkP3ZpID882BkOKvL8XwDg3AGoA1Dd++aXhQdAcnV155enK/gXklAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBeQhUqAE4t0biT26PZmLNxMGqV6te57vqlT9/0wdyWA58Igf8I0CAAAECBAgQIECgEQIxhbIs49fFdvhYI3bYThLYhsDa2uVzq2/7/I1tPNVTCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEMhHQAJzJgbAZBAgQIECAAAECBAgQIECAQHUF3JPFPVnck8W9meTAbHOgVYbfKVtxvwbY2zfAcuGyVqzfevfKq85X97crW06AAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIKABOOXaLDyp7dJQrKFYQ3GwCtsqbKuwZ7sKmzdvuXv73PW3BwECBAgQIECAAAECExWIqfXNKaYPTfRFvRiBmgiMil469cUPnnr21XFUk12yGwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBxgloAG7cIbfDBAgQIECAAAECBAgQIECAQFME3JvFvVncm8U9sWqeA3/WCfGf9UMIGm813joPXn4dlN1rN44d/NzLTfm9x34SIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBOomoAG49g3Ak2oSnvTraCbWTKyZWDOxHJADckAOyIEscqBuf+HYHwIECBAgQIAAgUYJpDLsia34/kbttJ0lMKZAavXKo3sefC7EuHk/CP8IECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB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AQIEVitgAdjin8W/Shb/EmfOFlb1Vgd0QAd0oKYdsExsmdgysWViHdABHdABHVhJB1b778Ju/ZX0xYdiDL8JgwCBHxSYXRm89MjR/Ze5ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIrFbAArAFYAvAi17Q9fXCUl40u9pWunUCBAgQIECAAAECBAgQIECAAIGWCaQQN8KsuDV2y82WHZrDITCXQGeWxg8deOszc30Rf5gAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGBugXjXQ/0UYwwppfDX/xsstNV0oc2SbLAgaUFSn/RJB3RAB3RABzLogCXCpXyoig+rWc6H1XDl6sPFfLiYDuhAmzow9z85N+wLpPQboSj+Q8PutbtLYOkC6+vnn1u77ycHS78hN0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIPCGAhaA2/TiPC829WJT53P1Lzr3DYYAAQIECBAgQIAAAQIECBAgQKCxAimkC5PQedfumCaNPQh3nMASBOLG9MrD917z4hK+tC9JgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCwTYE3XAD+4UXguvzfloktAFsAjhks/jnPnefOc9/vdEAHdEAH6toBy8SWiUP1Hzrjw5582JMPe/K80wEd0IFt/nP3zn5bmcJHiyKu7exP+1ME2ikw7Q/TTRf3nTx2LJbtPEJHRYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCov4AFYC+e8yJaL6L1Ito2dqD+33/cQwIECBAgQIAAAQIECBAgQIBALQRSCN+PMb6nFnfGnSBQI4HBeHjhxMHrLtXoLrkrBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGsBBq3AFyXJeI3uh+W2uq61OZ+WZK0JKlPOqADOqADOqADbe6AZWLLxJaJgw938uFObfxwJ+e189p5XdmHF6bUuTsW5TfCKITQC2Hb/83qcoKDzU5gmCa/e89bT2d33A6YAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFATAQvAXkRX2YvovBjbmzK8KcObMmryvc/dIECAAAECBAgQIECAAAECBAj8oEBKfx6K4uewECDwgwLnzlx8/qvH3tnnQoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUL2ABeCUQowx1H1ZeN77Z/HP4p/FvzYv/jm/nd/Ob9/ndEAHdEAH6toBH4LjQ3B8CI4Pw9IBHdABHWhOB8oy/eNiVvzZVS0AX+1icFW/v/prDW6xpQKz0XTjkUPXnG3p4TksAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgECtBSwAWwC2AJya8yJELxr2omEvGl7S87XW36rdOQIECBAgQIAAAQIECBAgQKAKgZTCf4pFPFDFbbkNAk0RmPaH6aaL+04eOxbLptxn95MAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0BYBC8CZLADPuyC8rD9vqa2uS23ulyVJS5L6pAM6oAM6oAM6kEMHlvThIj5kKPjwIh9e5MOL9EUHdKCJHUgxpHIW39PphpOhqqXe3G6nLVdWMjuOwfnhhRMfue5SZoftcAkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECKxewAGwB2AKwF+d7cb4O6EBdO7DyHxPcAQIECBAgQIAAAQIECBAgkJtAfDLE8EBuR+14CfxYgeFg8rv37D9NiQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoFoBC8AWgEOMMSxr4bepX9fin8U/i385LP45z53nznPf73RAB3RAB+raAcuhlkMthzZxOdR567x13rbn+1cZurcUk9m50AvBEnAIWThUe12mkbe2vn7+ubX7fnLQyDvvThMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEGipgAdjyp+XPui5/ul+WifVJn+regYb+8ONuEyBAgAABAgQIECBAgACBHy8QHw4x/DolAgReE4gb0ysP33vNi0wIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSqE7AAbAHYAnCDFpAttNV1oc39siBpQVKfdEAHdEAHdEAHcuhAe5YdLbVaarXU6vmsAzrw4zqQYtwIg+LWuKfctACcyQLwqKbHWd21oje9pWl/mD5/cd/JcCyWb/qb/QYCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGFCMQPPjRIXvToRY9e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3d17+s8OxEmDr6256wQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBSgQsAFtqsdRS16UW98uSlD7pkw7ogA7ogA7ogA7ogA7ogA7ogA7oQJs6UMk/edf3RmYx/KNuUfzP+t5D94xANQKT4fjSo/fsvVDNrbkVAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEBzBSwAV7kwatG12kVX3rzb8PxewAKZZVvLttF5ZNHSoqVFSx3QAR3QAR3IvgOWO+dc7kz+vAVgC8A6Mn8HUlH8UTEZH8x9Adbx90LuS9Drg+Fs7fB1J5t7ac09J0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhUI2ABuE0LGhZhLMI4ny1D6YAO6IAO6IAO6IAO6IAO6IAO6IAO6IAO6MDVdaCaf4sPKYTUKeJPpxjPVHSTboZAbQXGl3ovHL8/btb2DrpjBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIEaCFgAbsNCqKVbS7fO4xA9D6p9HliQy35BzrK0ZWnL0lEHLMpalPXzgA7ogA4soAMWRedfFLXMa5nX86hZz6NUhhPFruJf5b4A6/hHIfcl5M1y3H/i8A3P1+A6mbtAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEKitgAVgiygWUSyiXN0iCi9euqmbOqADOqADOqADOqADOqADOqADOqADOrCjDqQijsO4c3PxlnI9jEIIvRDe8L+1vazgjhGYX2CjP0wvXtx3+lvH4nT+r+YrECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTaKWAB2HKq5VTLsdUux/LmvczuLmCBzLKtZVvLtpZtdUAHdEAHdEAHdEAHLKo2a1HV4+XxauAS9ifidPLJ3BdgHX8v5L6EvL4+urh2376L7bz85qgIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAvMLWAC2VLGjpYrAjZulH0s/OqADOqADOqADOqADOqADOqADOqADOqADOrCDDqSXJ53uzbvHafJjF4DfbCF4Vf/7/NclfAUCrwhsXhlMnzi6/xQOAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB1xewALzMJUpL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B3RAB3RAB3RgZx2YYykzWVq1tOr8sbjcsg6UKaWiKN49no6ftQDcC5aA81sCLopdg0fv3vNcThf0HCsBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCQn4AF4LYOoFgmnnuZOKUQomVfy74Wni1c64AO6IAO6IAO6IAO6IAO6IAO6IAO6IAO1LID8ZG4K34sjEKwCGsJOLfzYOtN33u6e08/dCBO8ru054gJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBXATiBz69maLlmZ0tz3DjZrnLcpcO6IAO6IAO6IAO6IAO6IAO6IAO5N0By7KWZVu2LGsxOzVmMTvEOJiOy5t7e7qbFnDzW8C1/NwLk+H40qP37L2QywU9x0mAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjkJxDv/HR/a+g01HLAwP1q3+NimdgyseAIrm84lrN0QAd0QAd0QAd0QAd0QAd0QAd0QAd0YDEdKNLHimnnEQvAFoBzWwDeOt71cjhbO3zdyfwu7TliAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAIBcBC8CWmiw1WWrKe6nJ4+/x933A9wEd0AEd0AEd0AEd0AEd0IE2dsAysWViy8SNWfKNczxfy5TOxti5bTobJYuwvWAJOb8l5NgfvHD8/hs3c7mo5zgJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBvAQsAIfFDC0YrGi4o2Viy8SWhywPCXnDQ+4betAxHdMxHdMBHdABHdABHdABHdCBLDuQQnF3pxu+keMCrOVjy8ejK1c2v3D0hhfyurTnaAkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFcBCwAt3HhxXKR5SLntQUzHdABHdABHdABHdABHdABHdABHdCBOnZgjqXTZNE2i0Vbj3O66sc5hPDUtJzeYQHYAnCOC8iTWUrlt79+am3t9lkuF/YcJwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIJCPgAVgg4EGA0ONh0EsE1smttxT4yeobyC+gdT5G4jz0/np/AwWEC0g+jnKz1E6oAM6oAM6oAM5daBT/INiEv63RVyLuDkuQV8YD1768tH9l/O5tOdICRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgVwELADXcQnFQo+FHuelpS4d0AEd0AEd0AEd0AEd0AEd0AEd0AEdqK4DlomD5d2rX96NdTpvyvRkZ3fngRwXYC0fWz5e3+iP1+59+zO5XNhznAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEA+AvHOB/sppyEEwx+GP5zvCxgAskxsmdgTaQFPJAutFlottFpo1QEd0AEd0AEd0AEd0AEd0AEdWFgHpqHo3lp0ygs5LsBaPrZ8/Hy/9+zXjsRRPpf3HCkBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCQg0D8wIObKVqUsShjUaa6RRnPN883zzfPNx3QAR3QAR3QAR3QAR3QAR3QAR3Qge10oE4Ls6nhC7kZ3P9QhE9OZ9NPWMS1iJvjEvRoVry8duTa8zlc2HOMBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQD4CFoAXNrBgWdcgqEHQlS9sWya2TCxEQrTyEPnBwoKbBTcLbjqgAzqgAzqgAzqgAzqgA6vqQLociu4txSyNLeJaxM1tCXo8GM6OH77uZD6X9xwpAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgkIOABeDtLG1YZLHI4jyxzKQDOqADOqADOqADOqADOqADOqADOqADOqADr3bAMnFINV0UnpblA7t73SdzXIC1fGz5eH20fnbt0Ds2cri45xgJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBPAQsABvkMMixqkEOt5vPIJBlYsvEloktE1smDn7g8I0/n2/8/oLh+e757vmuAzqgAzqgAzqwyg7E7xZlfK8FYAvAuS0Abx3vZnml/8ThG57P4/KeoyRAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRyELAAbLnFcovlFgtOOqADOqADOqADOqADOqADOqADOqADOqADOtD8DlgmfmWZOMXi52fl+E8t4lrEzW0JeqM/TOWN+06t3R5nOVzgc4wECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBA+wUsABvkMMixykEO55/zrw7nn4XiuReKnch1OJEF1XnoPLS0pwM6oAM6oAM6oAM6oAM6oAOvdiB+o9gd785xAdbyseXjwXh44cTB6y61//KeIyRAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRyELAAbNmj+cseFnos9Hgeex7rgA7ogA7ogA7ogA7ogA7ogA7ogA7ogA7UtQMVLxOHGFNZzt69q7fr2dwWYB3vKOS+/FymcnLinv2nc7jA5xgJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB9gtYADYMYhjEMIiBIB2oZwcsE1smTgIt0AJdz0B7XDwu+qzPOqADOqADOqADOlD7DhTxc8Us/ppFXIu4OS5Bf+/8C2e+deymYfsv8TlCAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoO0CFoAtg1gGqesyiPtluUif9EkHdEAHdEAHdEAHdEAHdEAHdEAHdEAHdGAHHShDGnSmu24edwabvdALozAKP/LfXi9YzLWY28bF4PX+5OW1I9eeb/sFPsdHgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQItF/AArDBEoMlBktqP1gSPU89T+v0PLVMbJnYMnHwjcM3Jt+Y6vSNyfnofHQ++r6kAzqgAzqgAzrw+h1IKf1aZ3fnczkuwFo+znv5eBCH5YmD+06GELf+FccvAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEBjBSwAW9CwoLGDBY3kvHHeOG8sMOmADuiADuiADuiADuiADuiADuiADuiADtS4AyHEs+PJ5La3dnvpdReA32gZeNX/f8vElplH8y8zj8Lo7Nqhd2w09uqdO06AAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ2NoFuPPBfjJkZ8jOwmowFGIwyGCQwaBmd8AysWViP9D5gc4PdH6g0wEd0AEd0AEd0AEd0AEd+KEOpCId6sw6X7eIm/cibo6P/+bgSv+Jwzc870ogAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKDJAhaAa7zQEC2IWBBxfloS0gEd0AEd0AEd0AEd0AEd0AEd0AEd0AEd0AEd2GEHypD+ezd1/mmjFoBXvUD8RrdvmbhRy8STWUrljftOrd0eZ02+iOe+EyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAnkLWAC2eNns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cl0u5LkfBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQL4CFoC9iM2L2LyY1YtZd9QBwziW7QwNVTA0ZFHZoFVwnvl+4/uN7zc6oAM6oANZd8AysWXirJ8A/kJUo78QXe70uu8KozTMeRnWMnA+y8CDNJicuGf/6XwvHTpyAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoC4CFoAtAO9sAbiubt7M6828O3ozr8XkyM2HIeinfuqADuiADuiADuiADuiADuiADuiADrxBB8oQfnVX6HwhlwVYxzkKuS8ed89fPPPIsZuGdbmY534QIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECeQpYAPaiNi9q8+JWL25tVQcsxFmIsxBnIEsHdEAHdEAHdEAHdEAHdGDJHbBMbJlYaLMLbYrhmW7qvNsCcAiWgPNYAr546fL6l+6/8Vyelw4dNQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFAXAQvAdV2ydb8sE7fqTakWdi3sRh824MMGfNiAruuADuiADuiADuiADuiADuiADuhAsztwaBqmX899Gdbx90IOC8llTOWJg/tOhhC3PvLALwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDASgQsAHvRnRfdNftFdx4/j19DXjyd3TBOsDi25MWx4Osb3NIVndEBHdABHdABHdABHfihDlgmtkwsjEsNYyrD/+i+pfNPLODmsYDrcQ7h/MaVF7/ywA1XVnL1zo0SIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBEIIFoAt7bZradfjeXWPpzfPNuTNsxaULShbUE56pVc+tMWHfuiADuiADuiADuiADuiADujAyjswC7P37Q67n85hAdbSbx5Lvz/ucV4fbQzW7vuJ51xNJECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAisSsACsBeNrfxFY97U5c2d3tzpzZ2r78BSB3KCASK+ltksNOqADuiADuiADuiADuhAxh2wTGyZuEUBiEX4g6LsHA29ECzEWgJu+3mw9Ub3M+f3nvrWsThd1UU8t0uAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjkLWAB2GLs1S3G8uIVY0jLPg8s+lj08eEMPpxBB3RAB3RAB3RAB3RAB3RAB3RAB3RAB+rYgbKcdP5W2jU+ayHXQm4OS9CjUbi4dt++i3lfSnT0BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwKoELAB7EVkdX0TmxY3OS+elFznrwCsdyHghK1iI8/g7/y1F6oAO6IAO6IAO6IAO6MBSO2CZeGHLxCmFEDN6wqYQHu7u7vy6BWALwG1fAN46vs0rg+kTR/efWtVFPLdLgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI5C1gAXjZS6a+vsXcKhZznWfVnGfelOtNud6c7835OqADOqADOqADOqADOqADOqADOqADmXegiMXGNM5u3l3uGuawAGvp2NLx+qj33Np9cZD35URHT4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECKxCwAJw5i/Wio7fi1a9aNWLVnVAB666A5bYMhp2skRtiTs43y0PLnV50OK7zuqszuqADuiADrxRBywUL2yheCmhKYp/0ynjozkswFo6tnTcn7x85fF7/8aLq7iI5zYJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBvAUsAFtOrWY5lTNnS8ghLet5cNVv3kze9OxNz9707HmjAzqgAzqgAzqgAzqgAzqgAzqgAzowTwee64bu37YAPAoWgtu/EDyIw/LEwX0nQ4hbn4/kFwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgMgELwF7kNc+LvLxI0Pnj/PFiYR3QgRp1wDKxpVZLrZZadUAHdEAHdEAHdEAHdEAHltwBy8T/f5l4Fjp3794dvjEahdDrhXC1/7Wsa1m3SQvSw/7muceOXL9e2dU7N0SAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQCCFYAF7WIqeva/HW4u3yFm89v5rx/PLmaG+O9uboGr052vJ3dD46H31f8n1JB3RAB3RAB3RAB3RABxbagRDjU7M0vcMCbvsXcC09j0JR7Bo8evee51xZJECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhUKWAB2Iu+FvqiL2+uiTy9mNaLaXVVB3TghzpggcwC2ZIXyIKvb+lQZ3RGB3RAB3RA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IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQaLaABWAXcW3vIi5u3FwE6yJYHdABHdABHdABHZhRBywSWiS0SDjDRcLg+HJ8Ob78nNEBHdCBOXSgjD8zia2ftwBsATjlBeDN43tcjh5577/e93CzP2r06gkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFZCSSxALyo5eELfV3LxJaJS4uSi12U5M/fsq9lXx3QgZ10wM2tM7q51bJsdPO8m+f1RV90QAd0QAd0QAcS70ARiofa+dJLxu3hqOkLsV5/L6S8lByLpfzQG3bfO6sP8fy9BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQLMFLAC72M7FdolfbFd6fS4q1jmd0wEd0AEd0AEdmEoH5rAUFywSWiR0nFkm1QEd0AEd0IFUOpCXrVuXYuynvgDr9YXQ9KXnLKye6L/+yrVmf9zo1RMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKzELAAXJbhQku+qf7fLRRbKLZQXFrG3MkypmVVx4/jx8KyDiymA27mdTPvVG7mtcRsiTl6OIKe6qme6oAO6IAOzLQDIbS+lIfx91jATXsB1/vbC+tFvnHXG/Y+MIsP8fydBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQLMFLAC7yGumF3m5qN5F9RaI3VyjAzqgAzqgAzqgAzow2w5YirQUaSkylaVIr0PP9EzPdCDBDuThRyft9ieavhDr9YeQ8lLy5qs7dnrffXevxEmzP3L06gkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFpC1gAbvACcFWXjS0TWya2TGyZWAd0QAd0QAdq2AELehb0PFzJw5V0QAd0QAd0QAd0QAe+ogNFWX66GzuvzkIWLMVaAk75OMiycKZ/cPnMtD/E8/cRIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECzRawAOyiNBeluTjVxak6oAM6oAM6oAM6oAM6oANT70CCC37BMqVlSse1hVod0AEd0IGtdyAP4ZVLof25lBdgLfymvfB7Me/v+mgwuevGy+5r9keOXj0BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAwbQELwBaAQ1WXgKv2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RV6voxc2388mLhOvht6J/uvjWjofZXolBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECguQLxundaALaAXFqEsghlEWpai1D+Hj3REz3RAR3QAR3QAR3QAR3QAR2YZwcshc57KdTXs1BsoTjJ7rT+R9GeXJfCAqwlY0vGk2E3u+uNe44296NPr5wAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECKQjYAE4lMECcgyhSQ7zWo7wdSzVWKqxVKMDOqADOqADOqADOqADOqADOqADOqADOqADtehAGdtvCJPxxyznPracy2G2DrNeJo754MFDNz93PZ2PM70SAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQTAELwPNcZLEAZAHI8WYJTAd0QAd0QAd0QAd0QAd0QAd0QAd0oEkdSHIpNFqA9b5agk5wCTqE8nRsLb00j8PMEnAvWBKu95LwcK0YHr5lz7FmfvTpVRMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgXQELAA3afk2NGzpt26v1xJILZZAgvfJ+2S5yXKTDuiADuiADuiADuiADuiADuiADuiADqTZgTz8UrnU+SkLuBaAU1hAzrLe8f7BOEjnI02vhAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQINE8gvuada2XYxsVKsUlLJZZ5LPM43i106YAO6IAO6IAO6IAO6IAO6IAO6IAO6EA6HbBga8E2wQXb0nE9heO6lRdF+T29budeC7j1XsD1/mUhy8aD/sHnHG/eR59eMQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQSEfAArAF4BDqtpTr+w1hnsetRRuLNtt4SISl5Oi4cdykuYTkffW++neBvuuADuiADuiADuiADuiADiTegTLGPwiT/IdSWIC1ZGzJuLN65th/WnnBMJ2PNb0SAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQLIFtLwBX9eYuy8QxnSUWy0qWlSwrOZ91QAd0QAd0QAd0QAd0QAd0QAd0QAea1AELrlNYcI3BEm7JcYcLz+3QftOkPf7lXugFS7KWgOt8HKyvnd+465YrHmjWR59eLQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQSEfAAvA8l1Qt1853uZZ32t6JL41U9SELvi/LvsHSk6Un/bX4pgM6oAM6oAM6oAM6oAM6oAM6kH4HzpSx951hMli3BNwLloRrvCQcQni4s+/oRw/ELJ2PNr0SAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQHIHkFoCrenOaZWLLxKXFIotFTVoscrw73h3vlvp0QAd0QAd0QAd0QAd0QAd0IJ0OWCa2qLvDRd1Yyz8fDi21Oz9hAdgCcJ0XgDeP33B2tP6+t17xYHM++vRKCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAOgIWgC0Ah2ApN+2lXO/vYt5fSziWcNJfwrF45Tx3njvPdUAHdEAHdEAHdEAHdEAHdEAHEu5AKy/zydVhqffnFnBrvIDbs2C8efw+fO+pox+9/RusAKfz+a5XQoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQINEbAA3PCL9CwTWya2TFxaZLLIlM4ik4U157Pz2fmsAzqgAzqgAzqgAzqgAzrQpA5YJrZMPOtl4TL+SdHJf6DuC7C+/15o/JLzKF9/3417rQA35MNfL5MAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE0hGwAGwB2AKwhdzFLORyX4x7wx96ELx+y0yWmRJeZoqOb8e349vPOR3QAR3QAR3QAR3QAR3QgRl0oH1TORl/KFiSDZaQa7yEHEI4tnrm2N0rLxim8xGnV0KAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBNIXsADsorhKXhRnmdgysWViy8Q6oAM6oAM6oAM6oAM6oAM6oAM6oAM6oAO17IBl4tSWic90Q+87R+3BuiVdS7p1XhKerI027rrligfS/+jTKyRAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAukIWAC2AGwB2BLtYpZouXN/cn89jKGSD2OwmGxRNliOmsFylOPKcVU6rvzc93Pfzxcd0AEd0AEd0AEdqFsHivCfym7n31nArfECrgXnRxecrQCn8wGvV0KAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECzRCwAOxiMxebbeFis1oujpSWYrxvFqMsRumADuiADuiADuiADuiADuiADuiADuhA4ztgmXjby8QhxDKW8fu7nfZn67wAa8HYgvH6Wr5x1y17rQA34zNgr5IAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEEhCwAGwB2AKwJVpLtDqgA8/UAQ+J8JCILTwkwmKyZVvLtpZtdUAHdEAHdEAHdEAHdEAHdCDpDnxhNC5e0d21VFgCtgQc6rooHELIwurx/sGvGyTwGaeXQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEkhfigjT1AAAgAElEQVSwAOzmLjd3JXRzlyUbSzaNX7KxeB10QAd0wLKdDuiADuiADuiADuiADuiADuhArTpQo2Xidmi9fdKevNuSriXdOi9Bl2uT4eFb9h9L/hNQL5AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECCQgYAHY8qflTwvAFoB1QAfq1gEPr/DwioQeXmEhzUKahbSkF9L0Wq+Dzuu8zuu8DuiADuhAYh0YTsrOy9rF6ERtF2Drulzr+w7TXJ4+t7r+wIdXnreRwOecXgIBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEEhawAKwm6hclO+i/JlflF+rxRELshZko6UoS1GWonRbB3RAB3RAB3RAB3RAB3RAB3RABxrfgWdYJi5C+cleu/vaOi/AWjC2YLw+XM/ueuP+o0l/AurFESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBBAQsAFv+tPxZt+VP36/FYt3Srap2wEM1PFTDQzVm/lCNxJazeOmmbuqmDuiADuiADuiADuhALTtQFuUbQrf7sWkusloU7k114ZbnhT3jxtkHD9383PUEPuv0EggQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQLICFoBdZOciOxfZ1fIiuzCF982SjSWbxi/ZWLy2eG3xOuiAZTv/HvDvAR3QAR3QAR3QAR3QAR3Qga12oBXj6XIcX97d1T6fZVno9Xphbv8ZsmDB14LvNBaos/P5qP/my48k+wmoF0aAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBBIQsABsSdOSZlWXNH1fln71SZ90YDod8LAPD/uYwkMjLO9Gx5HjqLEPjXH+O/+n8fAhx5HjyHFU+jniv5f496R/TybXgTK2+mEyudXS7IWXZi0lZ6Gqx0m2mp3or1y5lsDnnV4CAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBIUsACsIvvXHzn4rvkLr6r+8X1W10c8fstFVkqslSkAzqgAzqgAzqgAzqgAzqgAzqgAzqgA/PvQBnjtWGSf2quC8DzXhy+2K9nmbiWy8yDwWB8x02X3Z/kJ6BeFAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQSEDAArCFTQubFjans7DJkaOe6qkObK0DHkLiISQeQuIhJDqgAzqgAzqgAzqgAzqgAzpQ7w6EcHQYut/dmwxHVV149X1ZKL7QAnN2fuN0/82Xn0vgM08vgQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIJCdgAdhFdi6yc5FdvS+y8/7N7f2zJGRJyJLQ/JeEnHfOO+ed804HdEAHdEAHdEAHdEAHdEAHqt2Boij+Y6+79NPZxS7l+n1hrovJlokvuEwcN8r80M3L94UQy+Q+BfWCCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAzQUsAFustFhpsXJri5W8eOmmbupA2h3wcBQPR/Fwjbk9XCM435xvzjfnmw7ogA7ogA7ogA4k0YGiKF4Ru0ufv9DSqv97FiwSV3OROAvhTP/g8pmaf+bp2ydAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAskJWAB2kZ2L7Fxkl8RFdsH72Nj30RKSJSRLSNVeQvL+eH90Wqd1QAd0QAd0QAd0QAd0QAeS70Cr9bnBRv79+y5Zyi0BZ/Nd+K3ronLFlokHo2Ex/p3l+/v9mCf3SagXRIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEaixgAdiSpSVLS5ZpL1l6f72/Oq/zOpBGBzy0xUNbPOyjsQ/7sJQcnf/Of+e/fwfogA7ogA7oQA06EGPr54vJ5Gcs3FZz4db7cuH3JTs3Pte/9dLTNf7M07dOgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSSE7AA7OIxF4/V4OIxNz246cHCcVm7i52TX7aJFqwsWFmwcp7rgA7ogA7ogA7ogA7ogA7ogA7owJc7UJRFjO1rinz8p71eL1gCtgRct+NgPCnLLy0vH/nM9XGc3KehXhABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEKipgAVgy5CWIS1DprEM6X30Puq5nuuADiyiAx4m42EyHiZTu4d0eLiOh+t4uE79Hq7jvHXeOm+dtzqgAzXqwJGit/Q9cWM4sjh74cXZkGWBU8WcBqP19731igdr+pmnb5sAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECCQnYAHYTRtu2nDThps2dEAHGtQBy0SWiSyUWSjTAR3QAR3QAR3QAR3QAR3QAR3Qgdl1oCjDu3udztstAFsArtsC8OPf77HVM8fuXnnBMLlPRL0gAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQQwELwItYirNQaKHQcWepVAd0QAd0QAd0YJYd8HALD7do0MMtLAJaBKzRIqCHL/n55OeTn086oAM60JAO5GX5T1qd7u9buLXwW8eF4zIvhocP7DlWw888fcsECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCA5gfiad6yVLpYtXXzn4jsX3zXk4ju90zs3CVXzJiHLQ7NbHrLsZdnL+eX80gEd0AEd0AEd0AEd0AEd0IE5d6AVH8gn4bt39ToDS8CWgOu4BLwaeif6r49ryX0q6gURIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGaCcTX3HZ+824wC2yzXGDj6/hyfFn61AEd0AEd0AEd0AEP3fHQHQ/d8dAdHdABHdABHdABHdCBxnSgbLU+ECaTt9RxAdZyseXiSVZM7nrLZffV7DNP3y4BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEEhOwAKwi+5cdOeiu8ZcdGf5tZrLr94X70uVl7ktJM15ISn6epbZLLPpjg7ogA7ogA7ogA7ogA7oQEIdaHV/rJhkH6/jAqzlYsvFa7F46IM3XnY2uU9GvSACBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFAjAQvAltgsMlpktMioAzqgAzqgAzqgAzqw2QEPB/JwIA8Hch7ogA7ogA7ogA7ogA5MsQNlWZ4rWu1/1JqMz1gC7gXLwvVaFi5Gw2L8O796f7//qrxGn3v6VgkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQFICFoCneDFPlRcM3cxgYdPx6aYeHdABHUinAxbBLIJZBEtoEczydXA8O579XPNzTQd0QAd0QAd0IOUOFEX5yd5S97UWdS3q1nEJerQxXj1086Wnkvpk1IshQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQI1ErAAbPHP4p/FP4t/OqADOqADOqADOqADVe6AhxZZIrREaIlQB3RAB3RAB3RAB+rdgSLcWi51+hZw67WA6/3KHv248+HOvqMfPRAf+3/4RYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECMxVwAKwi+dcPOfiuXpfPOf98/7puI7rQOU6kPJyk2Uyy2SObwuFOqADOqADOqADOqADOqADW+9Aa5CH8hW7Op37LQFbAq7bEvCknGR3vXH/0bl+eumLESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAo8KWACu8tKXJTpLdI5Pi5Q6oAM6oAM6oAM6oANV7YCHcHgIh4dwVO4hHMF56bx0XjovdUAHdKCyHYgxfjGP5f8Z292RZVlLwKHXC3U6DsrVyanDK/tXfbZKgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIzFfAArCL4lwU56K4yl4U5+L16Px0fjo//ZzWgSl2YOsLTZbNLJtZNnPe6IAO6IAO6IAO6IAO6IAOTK8DrRDvzIv8x+u2AOv77YWmLzevbgzz/vry/WElFvP9GNNXI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECzRawAGxRzaJaVRfVfF8WH/VJn3RAB3RAB3RAB3Rg6x3w8AgPj5jiwyM8lMhDiYLjyUOJ/Fzxc0UHdGDKHShb3deFSfZrdVuA9f3Wa7F3Fu9XPhidvfOmfQ81+2NVr54AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECMxXwALwlC/ecXGwi4NdHFy6KFBXXBzs4mAd0AEd2EIHLKpZVLOoNr1FNeeT88n55HzSAR3QAR3QAR2oQQfWOq3O940no+OWdS3r1mlZeDwpy2Jj+Wh/JY7m+1Gmr0aAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBJorYAHYotbWF7Us0Vmic944b3RAB3RAB3RAB3RAB3Rgax3wcAgPh9jCwyE8XMzDxTxczMPFdEAHdCD5DvxZ2e1+f8iyMIulVn8v11kdV+V4Mjx8y/5jzf1Y1SsnQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLzFYjXvmOtdDFR8hcTWWJ0sb2L7V1srwM6oAM6oAM6sKUOWE6znFaD5bTgOHWcOk4tfeqADuiADuiADtS2A6F8V6/T/X/rtABrsdhi8ebxujred/JXbonn5/txpq9GgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSaKRCvve385t2vW1su8vt5WXyz+KYDOqADOqADOqADOqADOqAD9e+AhyNs6eEIFjktcnqInofo6YAO6IAOTLEDZV6EV7eXOr9nsddi76wWe2fx92Ybw7x/0/J9IcaymR+tetUECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGB+AhaAXezsYmeLkBYhdUAHdEAHdEAHdKA2HbDwZuGttgtvpYVG56/z1/mrAzqgAzqgAzrw1A60Yjydj+P/sWt3+xFLwFmwMFyfheGNwejsnTfte2h+H2f6SgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoJkCFoAtVtV/scrynOU557HzWAd0QAd0QAd0QAd0QAfS6oCHc3g4h4dz1ObhHFNcwnTcO+4d937+NbMDrdZvh8nkn81iqdWysGXhWR1X40lZFhvLR/srcdTMj1e9agIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMB8BC8AuqmrmRVXed++7i2pdVKsDOqADOqADOjDFDlgys2ho0dCioQ7ogA7ogA7ogA7owLY70Gr9ZDmZvMcCbn0WcC02Z6Ecd4eHb9lzbD4fZ/oqBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgmQIWgC2FWQqzFJbWUpj30/up67quAzqgAzqgAzqgAzowqw54eISHR0zx4RGWc6PjyfHkoUR+rujAkzvQbl0dxpN7ZrXY6u/tBYvI019Ezkb56f6bLz/XzI9YvWoCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIDB7gXjtbWtlmMXF0S5ecvGSixhdxKgDOqADOqADOqADOqADC+3AthfIogU/C34W/Jw/OqADOqADOqADOjDnDhzvtXqvyCaD85aALQHXZWF4sDosvjFbvm9lJRaz/0jTVyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAs0TsAA8i5ufZ7U05O+1ZOZ4tWSmAzqgAzqgAzqgAzqgAzqgAzrwlR3wsIWFPmzBkq8l3+ChNx56o8M6PK0OhPDJ0Om81lLt9JdqLSDPbgE5Pzs5f+dbLznZvI9YvWICBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIDB7gdktAFf1onQXY7kYa1oXY/l7XNypJ3qiAzqgAzqgAzqgA9vqwJyX1IKvZ8HRgqMFRx3QAR3QAR3Qgdp0IISf6XU6P1+XBVjfZxaavti8+VFmFlaP9w9+3WD2H2v6CgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoFkCFoAtJ1lOqurN6r4vy276pE86oAM6oAM6oAM6oAM6oAN17oCHJGzrIQkWhS0KWxQuPWRGPxvdzxhikU/y61q7e5+yBGwJuC7LxbG1NDp0w+4jzfqI1aslQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKzF2jeAnBVL552UVejL+pyca+Le13c6+JeHdABHdABHdABHVh8BywDWgaszTJgacnT+ep8db7qgA7oQNIdaMVHimHxil17l05a2LWwW5eF4SyEM/2Dy2dm/9Gmr0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBJojYAG4zks6Vb2Z2fdlocp5ZalOB3RAB3RAB3RAB3RAB3RAB3Sgqh3wEDYPYSsX/9AJD3/x8BcPf3EeXrgDrT8K+eQH67IA6/vshaYvNo/Xh+Xy8vKRd10fx835mNUrJUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECsxWwAFzVi1Gr9n25ONbFsS6ODRe+KM/Fqy5edfGq80QHdEAHdEAHdGD6HbBwaOEw6YXD6P31/lqy1Xkd0AEdeKYOtEJ8f1Hkb6vLAqzvsxeavtg8zorBew/uOT7bjzb97QQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoDkCf7kAvNUXHC0ZWTKyZFS1m7R9P7qkS7qkAzqgAzqgAzqgAzqgAzqgA/XtgIevefiah695+JoO6MDTdaAV3xwm+X+xsGthty4Lw2W+furwgf2rW/3k0e8nQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEvlrAArCLo+t9cbSL4lwU5+JYF8fqgA7ogA7ogA7ogA7owEI6YLHSYqXFSouVOqADOqADOjD7DoQQxq1W55p8nN1jYdfCbh0WhmNe5sNPLx/p92Pug1kCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgZwLbXADe2Red/Z+2UBws/tR38cdN6fW+Kd375/3TX/3VAR3QAR3QAR3QAR3QAR1IqQMesrCQhywE7tw95MZDbp7SgXCy6C29sjUYnLEEbAm4DkvA2SRb67/pyhOz/zzQVyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAmkLWAB2Ua6LcmdxUa6LNF2k6SJNF2nqgA7ogA7ogA7ogA7owEI6YIlw9kuEFj8tfjrPnGc6oAM6MP8OFGX5R+1O94eKUVZYArYEXI8l4MGDh25+7nraH7N6dQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYLYCiS4AzxZt+3+7ZWLLxKUlLDfdu+l+FjfdO64cV44rP190QAd0QAd0QAd0QAd0oFkd8JCFhTxkwTJx5O4hNwt9yE0Zyg/ETvctdViAtVRsqThuDPND68v3h5VYbP9zNX+SAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAg0W8ACsItDm3VxaNPfbxfHukjTRZoLvUgz8OevwzqsAzqgAzqgA43vgMXE+S8mWiq1VOq8c97pgA6k1IFQhJ9aWur8Uh0WYC0VWypeXZ+s9d90yYlmfxTr1RMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAge0LWADevl1Cf9IysWViy8Sh6TeHe/0ehmAxz2KeDuiADuiADuiADuiADuiADkyvAx764aEfHvrR+Id+zHAxuywnxfVx19InLAFnwdJw9ZeGs7B6ov/6K9cS+lDNSyFAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAnMTsADs4lYXt7q4dXoXt273fHJRrItiXRTrolgd0AEd0AEd0AEd0AEdWGgHUlpGtPRp6dPxbPFXB3SgAR0YlkV+TW+p9+eWgLNgabjaS8MxL/Php5eP9Psxn9unn74QAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBIRCBe+7PnN6c//SJQQQHLxJaJLRNbJtYBHdABHdABHdABHdABHdABHdABHdCBqXXAwxYW+rCFGS7Cel0NfJhMjPF00cpfGdu9hywBWwKu/BJy7Ky/78a9D1bwgyjfEgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqLRAvPZn10oXEbqIcGoXEW53Adafs8RcxSVmF8W6eLSBF4+6GDk67h33Fjj9/NMBHdABHdCBCnWgAQuOwVKppVLHucViHdCB7Xeg9blJUfzgnl43swRsCbjqS8ir430nf+WWeL7Sn5r65ggQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQMUELABX7A3x7dRBwPKQhwZ4aICHBuiADuiADuiADuiADuiADuiADuiADujA1Drg4RMePlGhh0/U8OFoHw9F/mOVX4Dt9YKl4mYvFRejYfHAueUjd6/ESR0+CfI9EiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBKghYALY8a3m2isuzjkvH5bMdly6KdVGsi2ItM+qADuiADuiADuiADujAQjuw/aVGS6eWTi2dOn90QAem34FWu/Ufi8nkp6u+AOv764WmLzWPs2Lw3oN7jlfhA1LfAwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqIOABeA6vEu+RwIXJWB5yPKQ5aGpLQ+5Cd9N+B4OEZxPfq76uernqg7ogA7ogA7ogA7oQOM74GELC33YQg2XeBfqVcZ4UyzyD1kCtjRc9aXltdHgoQ/eeNnZi/rYw28iQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQINF7AA7CYvN3m5yctNXjownQ64KHahF3m6KDbytwRpCVKHdUAHdEAHdEAHGt8By6qWVS2rTn9Z1XnlvKrLeRVCGLdi69o8H/+BpV1Lu1VeGh5PynJ5efnIu66P44Z/RuvlEyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBCwpYAL4gkd9AgMB0BCwnWU6ynNTE5aRd3TI8d7kIV+7Lw/LuYjo5afjfUoRWeOh8CA+d74Tjj2y2VV/1tbl97XZi+Cv78vBX9hXh8kuKx27882tnAjGGR9Zb4eS5VjhxrhXG+eZfpzM609zOOP6d/85/578O6EAlO+ChHx768QwP/SjL8lwRd31fu9g4YQnYEnCVl4An5SS76437j+7sv8D60wQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAIH0BC8AuZp/O8idHjpaU3RxT1Q64KHYhF8Xu3RXCK//uIHzLX5uk/6+pBb7CwSiE/37PrvDJLywt5H22PG15+tEbbhfQ2W6rDN/7d7Jw1TeMFngGNuNLf+Jz3fDfP9sL46KlMws63hd1nvm6i+kbd+6L+Lk6j+POgqoF1bosqPo+LSin0aviS732rldlk8F5S8CWgKu8BNwaxkfee+u+h5vx3669SgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgsD0BC8Dbc/OnCBBIRsCSTSWXbKp6M7Hv66IednDFpSH8y5eshcv2WuKcVyr/5EgnvO9/7Lmo98eCme7Xvft7e2X4F/9wIzz/8kenaf2ag8CRh1vhF39zbxiMnD91P398/5ZM/TtAx3RAB3RAB2bagQU8HGgeDzGo58MZwh+PQ/efdMvh2BKwJeCqLgGP14dl0Tn/QP/g1w3m8F9tfQkCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFBLAQvAbuZys5DlWsu1OqADi+hAohfFLnVDuOFla+E5l7r5d97/MvyNzy+Fj/zJLgudFjoXssg7v4vui3D9Swfh66908++8G/PnD7bDL/7mnsSPL8uj9by5xfvmfYv+/ePfP9v++ZTG0qfFVu+jhWnLzc/QgaL8eKfd/VeTPCstAVsCruoS8PpoMLnr3DuOhJWVYt7/PdfXI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECdRCwAFyHd8n3SIBAAwUs0sx0kcZN3zO76fvqvzcIV33D+Cnn7CPrrfClk61wdqPVwHN5+i+51QrhikuL8Defl4du+6k3Wr/jV/eG44+0Z/b+Oi8txi16Me7vf/0k/MC3PnUYaD0L4QsnuuHhtc0bH6Z/zjXxb9x/SRn+96+dhM215Sf/uvN3d4c/vL/j4TH+HeHnzCIeHuO4c9w57vz80QEd0IHtdyDRh7Bd5ENA+mGpe2tVF2B9X1mw0NwL2frqWv9NV55o4n//9poJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMCFBCwAu3jOxXMuntv+xXPOH+eP8ye982cHF8Ve0ivCj1+99pR/e3zhRCcc+p3dIZtYZpv2QurzviYPr/32jbBv9xM36H32eCe857d2b3sB7SIvHvb37+A8mfZx0LS/722vOP+UY/7Bs63w7t/aG86ub+ZYZ6Z5POzbE8I/v2o9/NXLnxhhOrXaCj/9sUssbVradL7pjQ7ogA7MuAMWbS3aWrS1bD3NDhRluG3XUufnqroA6/vKgoXmXji9dv7kr9xyxfkLfajp/06AAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBJomYAG4ae+410uAAIEdCVgmtoD6zAuoL3pBHn7wxRtfPsIeeKQVfu7X94bx5s2/bhafyc3iX/s1ebjx5Zt3Pj72azwJ4a3/ZR9vx9tMjrdFn8fPvzwPB172xPF+fgG38uwAACAASURBVBjDbb96STj/6CCwzszi/dnbC+Hgd6+FS3c98aCB/+cjl4SH1zYX3S1iO+6cd84DHdABHdABHdABHdhRB2b8MIEnPySpLIq3xN7SByzuWtyt6uJwEcvigXPLR+5eiZMd/c/X/jABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEEhMwAKwmwVcvO/mBTfN6IAO6MBUOvDyvz0M3/W3Rl/+p9JH/rgXfuPzvekcX3O8KHaaC5rzWCR93Xeuh7/+nPzL7j/90b3h1Pm2ZT7LfMkt8/3d/20S/uk/ePRu30d//d693dD/9K7kXuc8urGVzv3Ai7Lw91/4RNs3V93/9GiHu59Lfs74OaMDOqADDezANBdJLdxauHU8zXnputXKi0n+r3btWvqExV2Lu1VdHJ6Uk+yuN15+LIT4xFOoEvtQ1sshQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJbFbAAvFUxv58AAQIEKihgcWZHizNTugn+Fd+ShW//xiduEnvvb+8Jf3asPZWbi6vw+qq67HTNi4bhxS8cf/m8/IXf2Bu+eGJzndN54bhJa5HtxS8chc3j/fFf/+3PeuHjn53SQwacL8/4sIZv+8ZReOW3POH+oT/cFX77C0vTebgDd44ewuLntQ7ogA7ogA7ogA7MsQOtUZFPXttq9T4VQhZC2PzvU0/zn71esBRsKXhRS8FZp3Wuf+DS0xX8H6B9SwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYCECFoBdZOYiMxeZzfEiMzejuRktrZvRvJ9PfT83bxDbvFHs8V/v+a3d4bPHu2n/nKnA8ts13zp46g3Ad+8OXzzVtcjWwEW2qi3HTvv7efHXj8M13/qVNwAvWaCccYe+7RvHT7kB+MN/tCt88s+73GfsPu3zx98X/Vz0c1G3dEsHEu6AJdk5L8lGX6/eC9atQRHyV+3qLn3eErAl4KouAWer2Yn+ypVrC/nU1BclQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIVE7AAXLE3xLdDgAABAikKNOPm91d+S/Y0NwB3PGRgxg8bueZFWdhcRn381y/cvSd88aTlZQvI6XXnqxaA/7QXPn6PBeBZP4zi274hC6/8e5urYI/9+vAf9sInv8B91u7+fg+N8XMsvZ9jzmvntfPaea0DOlCZDsT4SKsMryrKzn3PugT8TAvBi/r/t0zcmGXmYjQsxueOH+uvfPMT/4NXiv+TsddEgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQuQsAC8IxvyqnMRT1eZ9oLlN5f768lazeZVqADjVwAroD7NS96mgXgk3+5vGzpzdJbQktvFoAXs2BqAXgx7hZ7uYeE+u14djw7nksL1A397yWWiS0FV3spuHVynOf/eO+upVOWgC0BV3EJeDQuR4du2HU0hLj59AC/CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAYwUsADf2rffCCRAgQIDAdBeYLABP1/NiHyJiAXgx7hf7/vh903t/LAAvZjHNAvBi3C0EcvfzY3o/P5xPzifnk/NJB3RAB56+AzG0/iKU4f8qQ/tsrZaAF7VA/Exf1zLxzJaJ8/Hk/J03XHLS/4ZLgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSaLGABuALLfS5CcxGai9BcjKoDOpBCBywAL+Y4ftYF4Kr+O6ehC2AWEHe2gGgBeGd+2z3+LAAvxn2775c/5/2ytGppVQd0QAd04GI7YKHYQvFjC8Wtz8U8vLq7q33eErAl4CouAa+e753uvzmea/IHuV47AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECDRbwAJws99/r54AAQIECExN4JkXgLf6JTwUYCsPBbAA7HjZyvFS54cNWABezEMGLAAvxr0p57XX6fiq888lx6/j1/Hr3+E6oAMJdeBPxq3y1d28O7QEnIVQtYXh7X4/iSwTjydleXLjkeN3r7xguNX/hdHvJ0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECKQhYAK7qMp7vK7iIzkV0CV1E53gOjucmHM8WgBdznNdyAbiq/86xTByqvBhnAXgxi4YWgBfjfrHLfX6f96fK3XZ8Oj4dn5ZodUAHttMBy8SLWiZufapoFa/d1e6OLAFbAq7aEvAkLk3y39l1tN+PeQofzHoNBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgKwIWgLei5fcSIECAAAECzygwvQXgqiJXc+HKAnA135cm3PQ/74e1WABezEMGLAAvxn3e55ev5332c8u/J3RAB3RAB3RAB0JofzIbTX6k113KLQEntAS83QXhWf25bS4Tl+PJ8PAt+49V9X819H0RIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFZCVgAruoCne/LYqrF1ODiUxefuvi0XhefWgBezPtlAXgx7nPtk2XiR5eJLQAvZkHOAvBi3C0mct/OYqLjxnHjuLG4qwM6oAOz60Bjlolb8WNlnr+haguwvp9esMychbyIZ++8ad9Ds/rA1N9LgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSqKGABuIrviu+JAAECBAjUUCD9BeBqvikWgD0sYa43Iy/wITUWgBdzs7sF4MW4N+W89jodXx765N8xOqADOqADOlDFDrQ+UownN7Y6vdISsCXgMKsl4G3+vTHf9+Chm+N6Nf9XOt8VAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCYvoAF4AXexODipipe3OSiO8el49LFtzqw3Q5YAF5MPywAL8Z9u+dJUn9uzsvEFoAXs2hnAXgx7hYcuVtwnN2Co/PL+eX8cn7pgA6k1IHZLRO3PpiPJm/avbdXWp7NggXi6iwQD0bD4pI9y0ffdX0cT/8jU38jAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBConoAF4Oq9J74jAgQIECBQSwELwIt526550TC8+IVPXPP4C3fvDl882VnMN/O0X9VN9Und9LvAh+dYAF7Mze4WgBfjrhvcPZTHvx90QAd0QAd0QAcW34HWB0M5ublqC7C+n15o+jJz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L3RAB7rTger39u3Xq/p/5PHxWErhyDAN3nHywJ6/zeMheRQECBAgQIAAAQIECBAgQIAAgfIETADuzmW+nl2WL+9k84wJECBAgAABAgQIECBAYE4CVrHa5G+Tv03+OqADOqADOqADOqADOqADOqADOqADOqADOqADOqADHehArI7T6iOTjcAphbUYwy/FtOsnj+2//uNzeqfHjyVAgAABAgQIECBAgAABAgQIFCsQb/ru+7cvGT114cjFThc7O3Cx097tnu0J1x3d0R1vtuqADuiADuiADuiADuhAMR0wmdhkYpOJg0l0JtH1bxKdCZPOa+e181oHdEAHdEAHyu6At69NGjVp1DIWHdABHai1A9U3G+0BzmQj8GhxaQonUgg/c3z/4kqxK249cQIECBAgQIAAAQIECBAgQIBAywImANd62c1q9e6vVm/5DPTjCBAgQIAAAQIECBAgQKBcAZcRun8Zwab1YjatW71p9abLyFZx64AO6IAO6IAO6IAO6IAO6IAO6IAO6IAOzK0DW++kVDfXzOEjhfAnKYW3Xbx+7y+d3hfXc3hMHgMBAgQIECBAgAABAgQIECBAoK8Cz5wAnOsztSjWoliLai2q1QEd0AEd0AEd0AEd0AEd0AEd0AEdaLADJhObTGwyscnEOqADOqADOqADOqADOqADOtCzDtirNre9ai7juYzX4GU8x7W92MXuxR498eojn43A98UQ3nZ2Ye/yR26OT+S69NTjIkCAAAECBAgQIECAAAECBAh0WcAE4GIvB7rM3q1V813OjMdOgAABAgQIECBAgAABAp0SsDrT6kyXjbp12cjr5fXSbd3WAR3QAR3QAR3QAR3QAR3QAR3QAR3QgSI7kMtE4BDSg8MQbhleuPrAypEXnO3UeyIeLAECBAgQIECAAAECBAgQIEAgc4HuTADOFdLF0yIvnrqVqFuJuneAW2XrgA7ogA7ogA7ogA7ogA7ogA601QETyEwgM4GsZxPIkueja7qmazqgAzqgAzqgAzpQfAdcVmnrsoqf4zKuy7h60/sOPDkVuHqt5zwZOKVwNoR0MOy65u3Hb37ew7ku+fS4CBAgQIAAAQIECBAgQIAAAQJdEjAB2GVel3l7f5m3jV3qXcqex0qAAAECBAgQIECAAAECnRRo489bk1JMSnGcudmfDuiADuiADuiADuiADuiADuiADuiADuiADuhAVzuwtRJwtBxunh8pnQ8xvisNBj9z/JY9983zofjZBAgQIECAAAECBAgQIECAAIGuC5gA3PVX8Nkef1cvQnrc3kTxJoo3UXRAB3RAB3RAB3RAB3RAB3RAB3SgEx0wscvEruIndpnkO5oq4zgwwdFx4DzQAR3QAR3QAR3QgR51wC3k3ULexGCjJHSgHx2orltV6wrnvxF4NYR4+3q86i0rt77gb/q6VNPzIkCAAAECBAgQIECAAAECBAg0KWACsMu2Ltv247Kt1/Gyr2OT+fS9CRAgQIAAAQIECBAgQICAP8ddVrEq1uVVHdABHdABHdABHdABHdABHdABHdABHdABHdCBTDuQy0TgEU/6ubA+eMvxQ3v/ynsLBAgQIECAAAECBAgQIECAAAEC4wuYADy+lc+sQ8AEn05M8HFRPtOL8s4f549JeCbh6YAO6IAO6IAO6IAO6IAO6MCOHTB5qkeTp0zYNWHXhGETlnVAB3RAB3RAB3RAB3RAB6oO2FtpGYdlHM4DHZi5A6ODqHKc51TgFDZCDL8wHKY3njiw9P/qWI7oexAgQIAAAQIECBAgQIAAAQIE+i5gArDLoy6Pznx51Oprb7dN+nZj3/9p8fwIECBAgAABAgQIECBAYO4CLle4XDHp5Qqfv+PmcpcRrbb2doK3E3RAB3RAB3RAB3RAB3RAB3RAB3RAB7regbi1EXh0LM/pI4WwHkN673q4+sdXbn3B38zpYfixBAgQIECAAAECBAgQIECAAIFOCJgA3ImXyYNsXMCiWItiLXK1yFUHdEAHdEAHdEAHdEAHdEAHdEAHdKCFDphQbEJxMsHMBDOTDE0y1AEd0AEd0AEd0AEd0IF+dMBeWHth7YXt+l7Y4h//kwCNL867/A9IKazFGH7u4sLCj9958w33zulh+LEECBAgQIAAAQIECBAgQIAAgawFTAAu/jJeC6saXe53ud951pG3/bL+98qDI0CAAAECBAgQIECAAIE+CNhkbZO1y5FutqADOqADOqADOqADOqADOqADOqADOqADOqADWXXgyZdjblOB08UQ4rvTYPCm47fsua8Pl8I9BwIECBAgQIAAAQIECBAgQIBAXQImANcl6fsQaELAxe6sLnbby24vu73sHdnL7s1ibxb799O/nzqgAzqgAzqgAzqgAzowcQdMJjaZ2GTi0I8JZCbJeR1NlDRRUgd0QAd0QAd0QAd0wNu6lndY3mF5x7QdqK6rbn3t6ESaw0cK4WAYDN5sI/Ac8P1IAgQIECBAgAABAgQIECBAIEsBE4Bd7pv2cp+v83aBtwv0o6UOZPnvpwdFgAABAgQIECBAgAABAn0SsGncpnGbxifeNO7yqMujLo+2dHlUn/TJ7yl+T9EBHdABHdABHdABHdABHZhDB+LWcbd907h2LwenJ1KIy6tXXfOTp99+7YPt/mw/jQABAgQIECBAgAABAgQIECCQl4AJwHm9Hh4NgW4IzOGissVkFpNZVGpRqQ7ogA7ogA7ogA7ogA7ogA7ogA6U1wGTiU0mNpnYZGId0AEd0AEd0AEd0AEd0AEd6EkHyrus4XKmy5m9uJw5ehLV+TuPicApnU8h7g+7nvPW4zc/7+FuLKzzKAkQIECAAAECBAgQIECAAAEC9QqYANyLy2x2Y7rVp1t9utWnDrTfgXr/QfbdCBAgQIAAAQIECBAgQIDAMwT8ud/+n/sus7nM5rxz3umADuiADuiADuiADuiADuiADuiADujA5TuwtZF/tLu9xY+UwrkQ4ztXB1e97fQt1z3a4o/2owgQIECAAAECBAgQIECAAAECcxcwAXjuL4EHQIBA7QIuwnszzptx3ozTAR3QAR3QAR3QAR3QAR3QAR3QAR1osAMmkJlAZgJZTyaQJc9Dz/RMz3RAB3RAB3RAB3RAB7Y6YEKxicUmFo8/SqX6e7pa8NX+RuCzMYabY9p187H913+29jVnviEBAgQIECBAgAABAgQIECBAIEMBE4DHv2zlMq/LvC7zOl90QAc61IEMf+vwkAgQIECAAAECBAgQIECgHwI2V9tc3eDmapefOnT5yXHgZhv+PfDvgQ7ogA7ogA7ogA7ogA7ogA4U34GYtgja3Ayc0iMphLetbgxuPX1o77l+XHT1LAgQIECAAAECBAgQIECAAAEClxcwAdiRQYAAgbYEvOlR/Jse9tDbQ28Rs0XMOqADOqADOqADOqADOqADOqADTXbA5C6Tu0zuMsFPB3RAB3RAB3RAB3RAB3RAB3rWAZfTXE7r0OW0J697tbUWK6XPpBje/OkXLC5/fF+82NaP9XMIECBAgAABAgQIECBAgAABAm0KmADc5Gorlx87dPnRLUndktTuXLtzdaCdDrT5a46fRYAAAQIECBAgQIAAAQJFCbi84/KOyzvtXN7hzFlv9VYHdEAHdEAHdEAHdEAHdEAHdOBKHag2rrc5ETikT6YQ33D81r2/EEI1k9gHAQIECBAgQIAAAQIECBAgQKA/AiYA9+e19EwIECAwnYA3Zbwp481Zb87qgA7ogA7ogA7ogA7ogA7ogA7ogA402AETyEwgM4GsZxPIkueja7qmazqgAzqgAzqgAzpQfAdMJjYaZJzRIFt/P063oGmKr0rhYykMfuT4/j2/McVX+xICBAgQIECAAAECBAgQIECAQJYCJgCbAOxyrMux41yOdZw4Thwn/r3oeQey/D3NgyJAgAABAgQIECBAgACBPgjYXG1zdYObq122dNnSZcueX7bUDzdp8XuE3yN0QAd0QAd0QAd0QAd60oHRXN62pgKncNdwkH7gxDuXfq8Plxc9BwIECBAgQIAAAQIECBAgQKBsAROAy379PXsCBAjkK+BNLG9i9eRNLIswLcK0GNtibB3QAR3QAR3QAR3QAR3QAR3IswMmdpnYVfzELpN8gw7ogA6Y4KkDOqADOqADOqADPeuAy1DZX4aqrpVW7W3jI4XwoY3Bwo+s3HLD/23j5/kZBAgQIECAAAECBAgQIECAAIEmBEwAtvrOZc/sL3vaBWkXpF2QbumrA+V2oIlf/3xPAgQIECBAgAABAgQIECBwiYDLDuVednDZ0WVH57/zXwd0QAd0QAd0QAd0QAd0QAd0YI4deHIfcNMbglO4fbix6w0nDl3/adcFCRAgQIAAAQIECBAgQIAAAQJdEzABuGuvmMdLgAABAvMV8OaXN7/m+OaXe1bkOTHK6+J1cU8h9xTSAR3QAR3QAR3QAR3QAR2oswMmkJlAZgJZzyaQmbRs0nLUNV3TNb/f6IAO6IAO6EDxHXD57IqXz0bXVaqPBjcCp5QuhBAP7lrf/ebfWH7+I/NdfOSnEyBAgAABAgQIECBAgAABAgTGFzABuM5VOVZ5WeXleHK5Wgd0QAd0oIgOjP/Lps8kQIAAAQIECBAgQIAAAQJTCbgJm5uwuQmbSWQ6oAM6oAM6oAM6oAM6oAM6oAM6UFYHqhUnDW4Crq5RpRTOxhh/+uzCnls+cnN8YqrrVr6IAAECBAgQIECAAAECBAgQINCiQLzp1fdv3z+txR/rRxEgQIAAAQK1CnjTq6w3vbzeXm+LHSx20AEd0AEd0AEd0AEd0AEd0AEdaLkDJnaZ2FX8xC6TfE3yNcm32izhOHAcOA6cBzqgAzqgAzrQpw7keov3S1a0NrUhOKXwtyGmfdeeWbzt6NG4UesaHt+MAAECBAgQIECAAAECBAgQIFCjQLzp1Weqy5ImNprYmOvlPI/L+alP+qQDOqADOjBhB2r8bdm3IkCAAAECBAgQIECAAAEClwp4O8Xme5vvva2oAzqgAzqgAzqgAzqgAzqgAzqgA611IG6fb81dobo7hPCjd+xf/NXmfoTvTIAAAQIECBAgQIAAAQIECBCYXsAE4OntfCUBAgQIECCwk4A3vVp708se4Qn3CHtT3pvy+qRPOqADOqADOqADOqADOqADOtCLDphMbDKxiaQmsuqADuiADuiADuiADuiADuhAzzpwubf/m94InNIfboT4vScPLN6101IY/zsBAgQIECBAgAABAgQIECBAoE0BE4DtlrFbxmRNkzV1QAd0QAd0QAda6UCbv+b7WQQIECBAgAABAgQIECBQlIDNzL3YzNzK5Qk3P3DzA73QCx3QAR3QAR3QAR3QAR3QgY534NJN/7Vf/0nhg4N09ff95sHrPlX79/YNCRAgQIAAAQIECBAgQIAAAQJTCJgAPAWaLyFAgAABAgQ6LtDxN7MsBrVn3Z51e9Z1QAd0QAd0QAd0QAd0QAd0QAd0IO8OmEBmApkJZD2bQJY8H13TNV3TAR3QAR3QAR3Qgdw6MLo+Vn1Ua0Bq/EgpXYgh/vSFc3t/6vTt8UKN39q3IkCAAAECBAgQIECAAAECBAhMLGACsFVSVklZJZX3Kimvj9dHp3VaB3RABxruwMR/Q/gCAgQIECBAgAABAgQIECAwnoCbsJksZrKYyWI6oAM6oAM6oAM6oAM6oAM6oAMtdCBuH2fjXbEY77NS+lSI8fvv2L/4q+N9gc8iQIAAAQIECBAgQIAAAQIECNQvYAJw/aa+IwECBAgQIEBgOoEW3vSyl7bhvbTevPbmtfPYIhYd0AEd0AEd0AEd0AEd0AEd0IEOdMDkLpO7cpvc5fGYKKhLuqQDOqADOqADOqADOlBLB7ZXa9Q6FTj99jDt+s4TB2748+kWg/gqAgQIECBAgAABAgQIECBAgMD0AvElrz6TYoghhRQu91+rNDqwSsNkRJMR7eaym0sHdEAHdEAHdKB3HZj+jxxfSYAAAQIECBAgQIAAAQIErihgk7a3/7z952YNOqADOqADOqADOqADOqADOtDrDlQTgUcvcU0bgVMI6zGF/Y+dH/zYXbftecyVFwIECBAgQIAAAQIECBAgQIBAWwImALcl7ecQIECAAAECBLoq4M1vb35787vXb373bu+449Xx6t8t/27pgA7ogA7ogA7ogA7oQGc7YOKXiV+1TPyKHDmaoKinOqADOqADOqADOqADWx2o1mnUtAm4+lYppQdCGPzw8QN7bg+h2mbsgwABAgQIECBAgAABAgQIECDQrMCOE4CfbTLwvP//W71i9UpnV6+Y0GhCvPIqpQAAIABJREFUo102JrXqgA7ogA7oQIc70OwfaL47AQIECBAgQIAAAQIECBQsYPO6t/+8/eftPx3QAR3QAR3QAR3QAR3QAR1orAN1TQOurlykkD4aQnz58f2Lf1rwlQxPnQABAgQIECBAgAABAgQIEGhBwATgFpD9CAIECBAgQIAAgQYEvPntzW9vfjf25rc96h3eo+68cF7499G/jzqgAzqgAzqgAzqgAzpQewdMzjJBzwQ9E/R0QAd0QAd0QAd0QAd0oH8dmHUVQxpN0UnvCbuuee3xm5/38Kzfz9cTIECAAAECBAgQIECAAAECBC4n0NkJwPOeQPxsP9+qEqtKal9VYveF3RcmhZoUqgM6oAM6oAM6MHYH/OFLgAABAgQIECBAgAABAgRqFrCp3Nt/3v7z9p8O6IAO6IAO6IAO6IAO6EAfO7C1EmH0dvwMHymER0OIr7/2zJ7lo0fjxgzfypcSIECAAAECBAgQIECAAAECBJ4hYAKwg4IAAQIECBAgQIBAnQLe/Pbmdx/f/HZcO64d1xZ36YAO6IAO6IAO6IAO6IAO6EB2HTCBrH8TyEwWNFnQee281gEd0AEd0AEd0IH5dKBaMlDZz/KRUvrzYYjffvLA4l2zfB9fS4AAAQIECBAgQIAAAQIECBC4VMAE4JBCDDHkOlG4rsdlVYpVKdmtSjHJ0CTDsScZOn+dv1aX+ndcB3RAB7rfAX+IEyBAgAABAgQIECBAgACBmgVcLuj+5QKX/Vz2cx47j3VAB3RAB3RAB3RAB3LqwNafrTNvBA7pA2Fh4QeO37Lnvpr/EvbtCBAgQIAAAQIECBAgQIAAgQIFTAAu8EX3lAkQIECAAAECBAoU8Oa5N89zevPc8eh4dDxa1KUDOqADOqADOqADOqADOqADve2AiWXzmVjGnbuJkSZG6oAO6IAO6IAO6EB9HahWFMyyETilcC7E+KYHV/e846NH4lqBKxQ8ZQIECBAgQIAAAQIECBAgQKAmAROAC5kAXNck4bq/j9UtVrf0dnWLCccmHJtwXL0V4jhwHDgOnAc6oAOZd6Cmv6x9GwIECBAgQIAAAQIECBAgsC3gsqi3/7z95+0BHdABHdABHdABHdABHehNB6qX8sm3fKf7y/evhzG87MSti/9rui/3VQQIECBAgAABAgQIECBAgEDpAiYAl34EeP4ECBAgQIAAAQIEchDwJnhv3gS35znzPc8WHVl0pLd6qwM6oAM6oAM6oAM6oAM6UGgHTMQzEc9EvPom4jmfnE/OJ+eTDuiADuhAaR3YvJhQve6jLcETf6QUfn49XfP9pw5e+9DEX+wLCBAgQIAAAQIECBAgQIAAgaIFTAA2ATjEEEPdk327/v2s/rH6x+qfQlf/mNRpUqdda3at6YAO6IAOZNGBoq9TePIECBAgQIAAAQIECBAg0ISAy/7e/vP2n7f/dEAHdEAHdEAHdEAHdKCGDqTN3d9TfaSHUxr80IkDe24LIW7uKPZBgAABAgQIECBAgAABAgQIENhBwARghwgBAgQIECBAgAABAgSeTcCb4DW8CW5PcRZ7ii3qsahHz/RMB3RAB3RAB3RAB3RAB3RAB7LsQGmT0zxfEyNNjDQxUgd0QAd0QAd0oD8dmHYzcPr9OFh42R3v3HO3N+oJECBAgAABAgQIECBAgAABAjsJmABsArAJwB2agJzlqgS7GUxKNCnRriYd0AEd0AEd0AEdKKQDO11i8L8TIECAAAECBAgQIECAAIEJBWxK9vafmxO4OYEO6IAO6IAO6IAO6EDXO1C9VzrhVOCUwloI6e0Xzy2+8fTt8cKEf0n5dAIECBAgQIAAAQIECBAgQKAgAROAC3qxPVUCBAgQIECAAAECBHoi0PU3wT1+i3ks5rGYRwd0QAd0QAd0QAd0QAd0QAd0QAey7oDJfCbz9Wcyn0mbzmfns/NZB3RAB3SgrQ5Uf+hW9w2u/tgZ7yOl9OkQwredOLB053hf4bMIECBAgAABAgQIECBAgACB0gRMADYB2ATgDk0ATpker1mvTjCR0ERCEwkLmUhotaDVglYL+vdYB3RAB8rtQGmXcjxfAgQIECBAgAABAgQIEGhcwGWGci8zuMzoMqPz3/mvAzqgAzqgAzowawdGE4Grv1om2gj8SxcvPvfVp49c+2Djf+/4AQQIECBAgAABAgQIECBAgECnBEwA7tTL5cESIECAAAECBAgQIEAgY4FZ3wz39RbVWFRjUY0O6IAO6IAO6IAO6IAO6IAO6IAO6MAVOmCCoQmGJhi2NcHQz9EbvdEbHdABHZi1A8OUtvYBj7sROD0cYvze47cuvi/jd4Q9NAIECBAgQIAAAQIECBAgQKBlAROAM52omuukV4+ruigXA4duOFgdYZWUVVJWSemADuiADuiADuiADsy/Ay1f6fHjCBAgQIAAAQIECBAgQKC/Av7Mn/+f+S63udzmPHQe6oAO6IAO6IAOTNqBaiJw9VHtKh/jI4X0Wwvhqpcd23/9PWN8uk8hQIAAAQIECBAgQIAAAQIEei5gAnDPX2BPjwABAgQIECBAgAABAsULTPomvM+3eMfiHYt3dEAHdEAHdEAHdEAHdEAHdEAHdEAHJuiACYEmBM46IdDXmzSqIzqiAzqgA2V0YDQSePuEv8KbuCmFcynFHz55cM+hEOLWDuLi3/UFQIAAAQIECBAgQIAAAQIEihQwAdgEYBNtTfQ10bjlDlgtMcFqic2r3tUtMP2Xg+PAeaADOqADOqADOqADtXagyOtgnjQBAgQIECBAgAABAgQINCng7Rxva3lbz9uaOqADOqADOqADOjBeB8b8vTyl9IdpMPiWk7fu/csxv8SnESBAgAABAgQIECBAgAABAj0TMAG4Zy+op0OAAAECBAgQIECAAAECHRGwCMYiGItgxlsEw4mTXuqlDuiADuiADuiADuiADuiADkzVAZMEy5gk6HX2Opsca3KsDuiADnS3A6Nf8qqT+IofaTWE8OPXnln86aNH40ZH3gn1MAkQIECAAAECBAgQIECAAIGaBEwAbnnyZ/LzTBw2cdjE4Uw7MNWqgVonkFm9Y/WO1TvOQx3QAR3QAR3QAR3QgZquePk2BAgQIECAAAECBAgQIEBgW8DlBpcbXHZ02VEHdEAHdEAHdCDzDqSUQtxhI3BK4WNpGF928tDeP/HLPgECBAgQIECAAAECBAgQIFCOgAnA5bzWnikBAgQIECBAgAABAgQIENhZwCIYi2AyXwRT3QzfvYiC49Rx4Dzw75UO6IAO6IAO6IAO6IAO6EDnO2BipYmVJlZ2d2Kl89f56/x1/upAMx3YaSJwCmE9pPDmizfsfdPpfXF95zf+fAYBAgQIECBAgAABAgQIECDQdQETgDOdxGlScDIp2KRgk4L16XM6YBWLVSydX8Vil4pdKnYr2a2lAzqgAzqgAx3uQNcvAXr8BAgQIECAAAECBAgQIJCdgE3s3v7z9p+3/3RAB3RAB3RAB56lA9VE4OqjOkTCZSYDpxT+NKZd//n4wev/LLvfcz0gAgQIECBAgAABAgQIECBAoFYBE4Br5fTNCBAgQIAAAQIECBAgQIAAgUYELIKxCMZiOIvhdEAHdEAHdEAHdEAHdEAHdEAHdEAHWuiAiYbNTDTkytXEWBNjdUAHdGDyDmz+8nf5TcAhpIspDX7sxA173hr2xWEj78/5pgQIECBAgAABAgQIECBAgMDcBUwANmHTpF2Tdk3a1QEdmKEDVlm0sMrCpLwOT8pzfFiNZzWefyd0QAd0QAd0oNkOzP3aogdAgAABAgQIECBAgAABAn0TcDnH5RyXc5q9nMOXr87qrA7owFQdePaNwCmkj8aNwTcfP7T3r/r2q6nnQ4AAAQIECBAgQIAAAQIECIRgArCjgAABAgQIECBAgAABAgQIECAwrcBUizSqO7W7x8fopvUcLHZzHDgPdEAHdEAHdEAHdEAHdEAHdEAHdGCsDpicaXKmyZmTT8503jhvnDfOm751II0GXTxzInAK6YkYwo8e37/4zhDi1m7had/88nUECBAgQIAAAQIECBAgQIBATgLxJa86k2KMIaUUWvmvSZsmbc4waXPzAlY0sZaD48B5oAM7dGCsVQJ2W9h1Y9eNXUc6oAM6oAM6oAM6oAONdiCny6AeCwECBAgQIECAAAECBAh0WsAmYW//uVmAmwXogA7ogA7owCUdSJvHw+b/efIjhXDXYP3ql95x+LpPdvp3Pw+eAAECBAgQIECAAAECBAgQeFIg3vRd97vblwOCAAECBAgQIECAAAECBAgQINAnAYtgLIazGM5iOB3QAR3QAR3QAR3QAR3QAR3QAR3QgRY60LfJip6PibEmxpoYqwM60KUOjH7ZefJ3vs3NwCmlCynF7z15aPFdfXrry3MhQIAAAQIECBAgQIAAAQKlCrQ/AbitScOT/hwTVU1UNVHVRFUd0AEdaLwDVlm0sMqi0QluHr/VYlaL6ZgO6IAO6IAO6EAfOlDqpWDPmwABAgQIECBAgAABAgRqF+jDn8ku97jc4zh22VcHdEAHetCBS+YAVbvYq48U7lgP17z01MFrH6r9dyDfkAABAgQIECBAgAABAgQIEGhNwATg1qj9IAIECBAgQIAAAQIECBAgQIBA4QIWEfVgEVGwGM5x7Di2KFYHdEAHdEAHdEAHdEAHdEAHdCD7DpjgaYJnlyZ4Ol4dr45Xk6fr6sDmL2lbHzFW04AfiGnwrccP7b2j8HeoPH0CBAgQIECAAAECBAgQINBZAROAJ50U3Pbnm0hqIqmJpI1PJE3OM+eZ86z488wqFatUsl+lYrLz6PbEXierCh0HzgMd0AEd0IF+d6Cz15g9cAIECBAgQIAAAQIECBDITcBlJJeRXEbq92Ukr6/XV+d1fscOpM1d1dsfKRxcfXzvD56+PV7I7dcWj4cAAQIECBAgQIAAAQIECBC4soAJwI4QAgQIECBAgAABAgQIECBAgACBsgUslrJYasfFUu5F4p407knjnjw6oAM6oAM6oAM6oAM6oAM6oAOzd6CuCY++j4mxJsaaGKsDOjBOB0aDMbY2AqcQ/nIY0jeuHFj6WNlvCnn2BAgQIECAAAECBAgQIECgWwImALc90bcvP8/EVBNTTUwtfmKqyclJB3Sg8Q7YhWEXhltX242lAzqgAzqgAzqgAzow/w5064K3R0uAAAECBAgQIECAAAECGQv4M3/+f+a73OZym/PQeagDRXYgjdatjn5HuJhSfN2Jg3vfFkKsjgYfBAgQIECAAAECBAgQIECAQOYCJgBn/gJ5eAQIECBAgAABAgQIECBAgAABAoUKWIxnMZ7FeEUuxjNRa/aJWibTmUznPHIe6YAO6IAO6IAO6IAO6MBkHTBJ1CTRcSaJOk4cJ46T7k+e3rzoXh3L8cPrw4X/dOfhG+4t9B0YT5sAAQIECBAgQIAAAQIECHRGwATgvkzk9TxCjLHxSYwmnpp4Gk08dZ6ZgG7ysQ5MtlrA6gpeVllZZaUDOqADOqADOqADOtBIBzpzDd4DJUCAAAECBAgQIECAAIHcBdyEzU3Y3ITNTdh0QAdK60C1AiyFc8MwePnKwb2/nPs/1R4fAQIECBAgQIAAAQIECBAoWcAE4JJffc+dAAECBAgQIECAAAECBAgQIECAwKQCFsNZDFfaYjjP1yJg3dM9HdABHdABHdABHdABHdABHZhLB0ycNXHWxNnuT5x1Hud9HodYbQRO731obelVHz0Sz0/6doHPJ0CAAAECBAgQIECAAAECBJoXMAHY5NzNybkcmnUwMdTEUBNDTQ7WAR3QgcY7MJdVB41MMrOKyCoiq4iczzqgAzqgAzqgAzrQ/Q40f3HfTyBAgAABAgQIECBAgACBngu4PND9ywMu87nM5zx2HnemA8O/SCG+7MSexT8I++Kw5//CenoECBAgQIAAAQIECBAgQKBTAiYAd+rl8mAJECBAgAABAgQIECBAgAABAgQIELiigEV1FtV1ZlFdsAjW+ep8db7qgA7ogA7ogA7ogA7ogA7oQAc7YKJp3hNNvT5eH5Ojp5scPUzpiZTSvsHq+ruPv+c9j4awz0Zgb8cQIECAAAECBAgQIECAAIEMBEwANvm22cm3fPP2NZHURFITSRufSJqcZ84z51nx55lVGx1ctWGyc3DcOm6tOrTqUAd0QAd0QAf62oEM3pXwEAgQIECAAAECBAgQIECg2wIum7hs0tfLJp6Xy8L6Nupbiuk311L6ofT4hXtP3/4Pz4YQq7PDBwECBAgQIECAAAECBAgQIDAnAROA5wTvxxIgQIAAAQIECBAgQIAAAQIECBAgUJCAxWMWx1pEahGpDuiADuiADuiADuiADuiADuiADuhAgx0w+dbkW5Nvp5t8y+2ybvcMU3rlYCP9n/Xh+UdWjnzR2YKu5nuqBAgQIECAAAECBAgQIEAgKwETgE2ozXtCrdenzNfHxFQTU01MLX5iqsnJSQd0oPEOWF3R4OoKE4RNEK5uje04cBw4DpwHOqADOqADOjBBB7J638SDIUCAAAECBAgQIECAAIEuCthc7e0/b894e0oH6u3AIFxMw/TWePXgvWsX19dWn7jq4btu2/NYF/+J8JgJECBAgAABAgQIECBAgECXBUwA7vKr57ETIECAAAECBAgQIECAAAECBAgQIEBgFgGL4updFMeTp8XGFhvrgA7ogA7ogA7ogA7ogA7ogA7owOd0wGRik4lN2O32ZOJhCB++ajD4vvX1dHZt9dzacPcTD50+9KXnZrks7WsJECBAgAABAgQIECBAgACB8QVMADZhtswJs153r3uMIU16HJhMbCKpiaSNTyQ1+dfk3+g8K/48syrIqiCrgqwK0gEd0AEd0AEd0AEdyKcD47/Z4jMJECBAgAABAgQIECBAgMBlBfyZn8+f+S67uezmfJzlfDwz3JX+62Bt8PGwO4TVxy5eWD2bHvrI0S94Qv0JECBAgAABAgQIECBAgACBZgVMAG7W13cnQIAAAQIECBAgQIAAAQIECBAgQIAAgUkFLMabZTGexZyOH8ePRd06oAM6oAM6oAM6oAM6oAM6oAM6MGYHTCg2odiE4jEnFIdwMYXBW+IwvX93tQl4NYS14eoTu6+68OCx/S9cnfQSsM8nQIAAAQIECBAgQIAAAQIExhMwAXjSCaA+3+TYaSbHOm4cN20cNyYUm1Bscmrxk1NNUDZB2QTl2HgHrJaxWsZqmTFXywSfpxd6oRc6oAM6oAM60FwHxnsDyGcRIECAAAECBAgQIECAAIEdBfz53tyf7y6PuTzW0/MrxXhsGIavXbhq8EQYbftdDath/dxj6w899NEj/2xtx+74BAIECBAgQIAAAQIECBAgQGAiAROAJ+LyyQQIECBAgAABAgQIECBAgAABAgQIECBQrEBPF+25d0ew2NeiZIuS9U0HdEAHdEAHdEAHdEAHdEAHdCCrDphMbDJxzpOJwyB8cjhc+PZrrh5+qpoEXE0EPvf4hbR791Wf/bwzSw8fPRo3ir2G7IkTIECAAAECBAgQIECAAIGaBUwANpnVZNY2JrM6zhxnJR9nJhObTGwyceMTSU3+NfnX5N/mJ//mfp5ltRrB7hG7R4JVYlaJWSWmyzqgAzqgAzpQZgdqfgfLtyNAgAABAgQIECBAgACBcgVcXnJ5yeWl7C8vpZjOD4eD1y7sDneMJgHvHg0DDuspDcNg7eypPX/vkbAvDssNmWdOgAABAgQIECBAgAABAgTqETABuB5H34UAAQIECBAgQIAAAQIECBAgQIAAAQIECMxHwKJYi2Itis1+Uax7JblXknslBeepf6/9e+3fax3QAR3QAR3QAR3oQQdMJjaZ+OmTiYfD8AvDsPCWhTBcqyYBb08EvrA23Di/sfro7yz//UdDiNXR74MAAQIECBAgQIAAAQIECBCYQsAEYJNZTWYteTKr49/xX/LxbzKxycQmE5tMrAM6oAONd8Aqjh6s4rBLwS4FuxTsUtABHdABHdABHehNB6Z4F82XECBAgAABAgQIECBAgACBSwVs4vb2n7f/Lnszh2FKHw8xfsdgGO/fngS8/d843FhfH55/ZOXIF50VFAIECBAgQIAAAQIECBAgQGByAROAJzfzFQQIECBAgAABAgQIECBAgAABAgQIECBAgMBOAhbFWhRrUawJZzqgAzqgAzqgAzqgAzqgAzqgAzqgAy10wGTi+U8mHg7D2YWFwXcNN9LvXToJeHsi8LmL62vD9MhDpw996bmdLiv63wkQIECAAAECBAgQIECAAIGnBEwANgHVBNSSJ6A6/h3/jv+QcjsPTCQ1kdRE0sYnkibnmfPMeVb8eWaVRQurLEwKNCmwN5MCnS9WJ1qd6N9NHdABHdCBpjvgbUsCBAgQIECAAAECBAgQIDCjgMsXLl80fflizO+fQlhPKfzEIMVffPok4Cf/v9fPP378kd9/IBz9jxszHvm+nAABAgQIECBAgAABAgQIFCFgAnARL7MnSYAAAQIECBAgQIAAAQIECBAgQIAAAQIECIwELIq1KHbMRavuaeJ80Qv3NtIBHdABHdABHdABHdABHdABHZilA8VOJh6EX1ldH7zu7z4nbWxPAL70v2txfe3OPTd+OuyLQ1csCRAgQIAAAQIECBAgQIAAgSsLmACc2+RHj8dEVhNZ85vI6rx0Xjovi58UaWJsMjHWxFgdMDlaB1rogF0YdmHYjWQ3lg7ogA7ogA7ogA7oQD4d8BYrAQIECBAgQIAAAQIECBCYUcCf+fn8mT+Hy24phj9aT4NXXHV1+mxYDeHpE4HXhqtP3Hn4C+6d8Sjz5QQIECBAgAABAgQIECBAoPcCJgD3/iX2BAkQIECAAAECBAgQIECAAAECBAgQIECAAIHsBSyKLXpRrIlSJkrNMlHK8eP4cfyYTKgDOqADOqADOqADOqADOjBJB1qcTHzPxjC8/Jrd8ROXmwS8ev7xB0/f/oWPZn/dzgMkQIAAAQIECBAgQIAAAQJzFDAB2GRPkz1N9jRxVwd0QAe62wETOU3kbGEipwnQJkBHx5kJ0IX/e2MXxhxuiW6VjlU6k6zScbw4XhwvVnfqgA7ogA4U1YE5vqvqRxMgQIAAAQIECBAgQIBAPwTchK3Vt/9SDI+HYfyeuDv89tMnAae14caJA4ufDCFWb8j5IECAAAECBAgQIECAAAECBC4jYAKww4IAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQODyAhbFtrootqi9vO61E7ze7uHgHg7u4aADOqADOqADOqADOqADOlBIB4ZpI7w9Piceefom4NVHHr/n9O1feMGlOQIECBAgQIAAAQIECBAgQOBZlm285FVnUjT5sLuTD00uNbnU+ev81QEd0IH8OlD4pEgTc03MNTE3mpirgya0tzA52y4MuyXslrAbSwd0QAd0QAd0QAd0IJ8OeCuaAAECBAgQIECAAAECBAjMKFDAn/lpGI5tLOz6wV0bGxfD7hCqzcCPnj37wO+9/4WfnVHPlxMgQIAAAQIECBAgQIAAgd4KmADc25fWEyNAgAABAgQIECBAgAABAgQIECBAgAABAgQI9FSggEWxhUwAymcPrz319tTrivNRB3RAB3RAB3RAB3RAB3RAB9rowP8Og4VXhI3hw9Um4I3HH/vMypEvOtvTK1ieFgECBAgQIECAAAECBAgQmFkgmgCcTI40OTK/yZEmujovnZfOSx3QgSY6YCKniZwtTOQ0AdoEaBOgTYAuvQNtrIqw+sbqG8eZVXg6oAM6oAM6oAM6oAOTdWDm95R9AwIECBAgQIAAAQIECBAoVaCByzAphPvTQvqOwdrg4+mx4X0n3rf0eKm8njcBAgQIECBAgAABAgQIENhJwATgnYT87wQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTGEWhgUaxJwGGyva72BvNyHrpHgA7ogA7ogA7ogA7ogA7ogA5k34GU0mpKw+85uffGnw374nCcyy4+hwABAgQIECBAgAABAgQIlCgQX/LKMyk2MWHO5EKTCx1XJpjqgA7ogA7ogA6M0wGTiU0mNpk4lD4x1fM3Odrk6OYnR2e/ysOuFrtagtVYzlOrMq3K1AEd0AEd0IHyOlDi2/OeMwECBAgQIECAAAECBAhsC6SQUgjxjScOLb6RCgECBAgQIECAAAECBAgQIHB5gXjTq+6vVlT4IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgjwL21pa3t9aeenvqnffOex3QAR3QAR3QAR3QAR3QgS50oLoOk8KHVs/v/ebTt8cLfbws4zkRIECAAAECBAgQIECAAIFZBEwANpnQZMJxJhM6ThwnjhOTbHVAB3SgvA6YTGwyscnEJhPrgA7oQOMdsPrK6iurr7qw+spx6jh1nPr3Sgd0QAd0oLQOzPL2u68lQIAAAQIECBAgQIAAgbEE4vbfmlufncIfDweDf3PywJ6/HevrfRIBAgQIECBAgAABAgQIEChEwATgQl5oT5MAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAVgL2FttbXNreYs/XPRV0T/d0QAd0QAd0QAd0QAd0YDTyN8TqZPjcj5TSA8Ph4OtWDu/946yuX3gwBAgQIECAAAECBAgQIEBgjgLxxa+8L0UT7cqbaGeSpUmWznvnvQ7ogA7ogA50swMmkppIaiJp4xNJk/PMeeY8K/48s/rI6iOrEK1C1AEd0AEd0AEd0AEdyK8Dc1xV4EcTIECAAAECBAgQIECgToGnT/+95HunlC6EFF52cvnGo3X+SN+LAAECBAgQIECAAAECBAh0VSC+5FVnqnfwfRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAtoA9sPntgbU33d5056XzUgd0QAd0QAd0QAd0QAc63oHLT/99+sWIlOIbTh5a/AkJdAY+AAAgAElEQVQXKQgQIECAAAECBAgQIECAQOkCJgCbfNfNyXdeN6+byaUml+qADuiADuhAXh0wMdXEVBNTi5+YanJy0gEdaK0DVndZ3dXx1V3B47dKVcd0TAd0QAd0QAf61IHSl1x4/gQIECBAgAABAgQIjC8w3ubfS77fbSf2LL4i7IvD8X+GzyRAgAABAgQIECBAgAABAv0SMAG4X6+nZ0OAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQJ8F+rR31F5oe6Edz+6JoAM6oAM6oAM6oAM6oAOFdGDizb+bf9mndOzi+aV/f/r2eKHPf+p7bgQIECBAgAABAgQIECBA4NkETAA2OS6vyXFeD6+HiZ4meuqADuiADuiADtTZAZOJTSQ1kbS1iaQmAJsAHJ1vxZ9vVqlZpVbIKjUTjINVuXqnd3qnAzqgAzrQpQ5YLEKAAAECBAgQIECAwPwFqs2/1aMY/Z+JP1JIfzi48Nybjr/neQ9P/MW+gAABAgQIECBAgAABAgQIdFzABOCOv4AePgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBOYu0KU9ofYw28PseHUvAx3QAR3QAR3QAR3QAR1otwOz/9H61+th99feefC6T83+rXwHAgQIECBAgAABAgQIECDQHQETgE2YM2GuzglzjifHk+PJ5FId0AEd0AEd0IFJOmBCsQnFJqYWPzHV5GSTk01Ojo13wCo2q9jaXcXGm7fVw7qrAzqgAzqgAzowTge6s6jEIyVAgAABAgQIECAwk8B0Q3+f5Uemz6S08JKTh/b+yUyPyRcTIECAAAECBAgQIECAAIEOCZgA3KEXy0MlQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQkExtmLac+uPbuOE3v3dUAHdEAHdEAHdEAHdKCZDkzw59tYn5rS+Y00+LenlhdXxvp8n0SAAAECBAgQIECAAAECBDouYAKwCW0mtE0yoc3x4nhxvJjsqQM6oAM6oAM6UEIHTCY2mdhk4sYnkpr8a/Kvyb/NT/7N/Tyzms5qumZW03HlarWyvuqADuiADuiADszSgY6vgPHwCRAgQIAAAQIE8hGodfLv055WChshxG89cWjx/fk8YY+EAAECBAgQIECAAAECBAg0I2ACcDOuvisBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIELi8wCx7NO3xtcfX8WOvvw7ogA7ogA7ogA7oQLYdSCHEJnf/PvUn1jCF160cWnqzPzsJECBAgAABAgQIECBAgECfBUwANsHNBLcSJrg5zh3njnMTS3VAB3RAB3RAB/rQAZOJTSY2mdhkYh3QAR1ovANWzWW7ai5Y1WpVq/PT+akDOqADOqADOlBuB/q8bMdzI0CAAAECBAj0SCBu/93W6nO67cTBxW8PYfTDfRAgQIAAAQIECBAgQIAAgd4JmADcu5fUEyJAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAlMI2GNb7h5be+ztsXf+O/91QAd0QAd0QAdm6UCYy+bfzT96UvjQwsLiNx3bH1en+CvIlxAgQIAAAQIECBAgQIAAgawFTAA2Cc0ktD5MQnMcO44dxyZ76oAO6IAO6IAO6MD8OmAiqYmkJpI2PpE0Oc+cZ86z4s8zqy+tvrT6cpbVl44fx4/jx78jOqADOqADOtBMB7JeD+TBESBAgAABAgTaE6j+5Jj/x0eGa1f/q5UjLzg7/4fiERAgQIAAAQIECBAgQIAAgfoETACuz9J3IkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBOoWsIfZHmZ7mJvZw8yVq77qqw7ogA7owKwdqPt3/1m+X0p3XwwLX3P60N4zs3wbX0uAAAECBAgQIECAAAECBHISMAHYpDST0kxKm9+kNOef88/55/zTAR3QAR3QAR3QgeY6YGKqiakmphY/MdXk5KQDOtB4B6wOnHV1oK+3ytgqYx3RAR3QAR3QAR3Qgfo7kNOyJI+FAAECBAgQ6LVA3P59Pqdnme5ZG+560W8t77k7p0flsRAgQIAAAQIECBAgQIAAgWkFTACeVs7XESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAuUK2Lta/95Ve8LtCXdeOa90QAd0QAd0IP8OhOpFCiHE6oTN7yOlcHYY4786dXDxI/k9Oo+IAAECBAgQIECAAAECBAhMJmACsIljJo6ZONbcxDHnl/PL+eX80gEd0AEd0AEd0AEdeHoHTCY2kdRE0sYnkpr8a/JvdJ4Vf55ZJWqVaP6rRK3mdp46T52nOqADOqADOlBuByZb2OSzCRAgQIAAgcwEqqm/o1/n89z8+5RWWg3DhW84sbz3WGaCHg4BAgQIECBAgAABAgQIEJhIwATgibh8MgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEAgYwF7a8vdW2tvvb31zn/nvw7ogA7oQKMd2P7mGf8u/LkPbRhCeMWJg0u3deYRe6AECBAgQIAAAQIECBAgQOBpAiYAm0hmIpmJZCaS6YAO6IAO6IAO6IAO6IAO6IAOmExsMrGJqcVPTDU52eRkk5Nj4x2w+rLR1ZeBL1+r3K1y1wEd0AEd0AEd0IFZOmBNGQECBAgQIPDsAqkDE3+v+Pq9/sTBpTd5hQkQIECAAAECBAgQIECAQBcFNicAT/oeSBefqcdMgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECAwH4FZ9mZOuq7F59sL7HhzTwAd0AEd0AEdqKcDTy4wns+vkLX91JTeduLQjf+ttu/nGxEgQIAAAQIECBAgQIAAgZYETAA26cukL5O+TPrSAR3QAR3QAR3QAR3QAR3QAR3ItQMmE5tMbDJx4xNJTf41+dfk3+Yn/+Z+nlkNazVsPathOXK0u0BPdUAHdEAHdEAHmuhASyvI/BgCBAgQIHA5geqfth59pBQOnDy0+JoQYvWLmw8CBAgQIECAAAECBAgQINAJgekmAOf6nkUnyD1IAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBLASa2LOZ67oaj8seZce7exXogA7ogA6M04Fq6m/s2e7f7V88U/r5E4eWvs0m4Cx+E/cgCBAgQIAAAQIECBAgQGAMAROAc53w43GZQGYCmQlkOqADOqADOqADOqADOqADOqADuXbAZGKTiU0mNplYB3RABxrvgNWo46xGtWrZceI4sXtBB3RAB3RAB3RAB+bTgTFWpfkUAgQIEOioQI83/269IimE//78BxZfevRo3Ojoi+RhEyBAgAABAgQIECBAgEBBAv2aAJzrNf2CDihPlQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYEYBe5vtbc51HZTHNZ8919y5+3fBvwuNd6D/G38v/e0shfDBh9cWv+mjR+LajL+1+XICBAgQIECAAAECBAgQINCogAnAuU7S8bhM+jLpy6QvHdABHdABHdABHdABHdABHdABHZisAyaSmkhqImnjE0mT88x55jxznm11wKrbxlfdBqvbrW53njnPdEAHdEAHdEAHdGDSDjS6zs43J0CAQI8Fytr8e8kLeXJhsPj1x/bH1R6/uJ4aAQIECBAgQIAAAQIECHRcwATgkt8r6PjB6+ETIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0KFDyOptJ96L6fHvYnS/2sOuADuTegVBt/K1+jxj9nyI/Ugin19Lg608f2nuuSABPmgABAgQIECBAgAABAgSyFzAB2CSdySbp8OJlApkJZDqgAzqgAzqgAzqgAzqgAzqgAzowWQdMTDUx1cRUE1N1QAd0oLUOWF1udbnV5bmvLvf4dEqndEoHdEAHdKDkDmS/ltADJECgKIFip/4+41VOKf3BroWrX3Rs//WfLeoQ8GQJECBAgAABAgQIECBAoBMCJgCXfE059/dUOnEKeZAECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJzFbD+x97y3NdBeXz2vuuUTmXTAVN/L/87S/qj88NrXvQ7y89/ZK6/0/jhBAgQIECAAAECBAgQIEDgaQImAJtYM9nEGl68TPoy6UsHdEAHdEAHdEAHdEAHdEAHdEAH+tEBE0lNJDWRtLWJpMn55nxzvhV/vlnlnM0q52DXgV0Hzkfnow7ogA7ogA7ogA48vQPWVBIgUI6Aqb87vNZ/dnHtuV9z+si1D5ZzTHimBAgQIECAAAECBAgQIJC7gAnArmm7pj3pe1u5n9UeHwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQD4C1idZnzTp+iSfb6++buhGnR0I1TerPqoDy8cVBVK6++LG3/mXNgE7TggQIECAAAECBAgQIEAgFwETgE2s6cfEGq+j19EEMhPIdEAHdEAHdEAHdEAHdEAHdEAHdKAfHTAp1aRUk1KLn5RqYnLSAR1orQNWU9e5mtrqfMeT48kuHR3QAR3QAR3QAR2otwO5LLH0OAh0XcDm34lfwZTu3lgbfPWpdy/eP/HX+gICBAgQIECAAAECBAgQIFCzwGgCcEohxBjCs/13dPMv16hdo3Yc5H0e1BwH344AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKDHAtaDWQ9mPVje68G8Pl6fmTpt4+8s/4KnFD6xkXZ91Z2Hb7h3lu/jawkQIECAAAECBAgQIECAwKwCJgCbDNOPyTBeR6+jSV8mfemADuiADuiADuiADuiADuiADuiADjTZAZOJTSQ1kbS1iaQmAJsAHJ1vxZ9vdmFY5W+V/0yr/N3d293Ng47qqI7qqA7ogA402YFZl2z6egJtCGx3sI2f1d+fkUL61EZ8zlffefC6T/X3WXpmBAgQIECAAAECBAgQIJC7wFgTgHeaEDyv/91kYu/deu+2A+/d5l5Bj48AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQCAfgSb3btobbG+w48s9AvrcgdGi2uqjOtB91CGQUrh3GOJXnVpe/EQd38/3IECAAAECBAgQIECAAAECkwqYAGwyjMkwTU6GcXw5vhxfJpDpgA7ogA7ogA7ogA7ogA7ogA7ogA600QETik0oNjG1+ImpJiebnGxycmy8A1bJ93mVvF0gjm/Ht91gOqADOqADOqADXe/ApEtHfX7/BEz9beo1TSHcP0zxK2wCbkrY9yVAgAABAgQIECBAgACBKwl0egLwvCYP7/RzTSY2mdhkYpOJ/dNDgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQIwF7hO0R7voeYY+/p/c6sPG3jX9pqk3A62nhq39rec/dbfw8P4MAAQIECBAgQIAAAQIECGwLmABsAosJLG1MYHGcOc4cZyZ+6YAO6IAO6IAO6IAO6IAO6IAO6IAOlNgBk4lNJjaZuPGJpCb/mvxr8m/zk39zP8/swrCLoae7GNx12l2nO3DXaf3RH7tB/R6iAzqgA+N3wKLdugWqAlUf1VHooy2B9JnhIH7tyoGlj7X1E/0cAgQIECBAgAABAgQIECBgAnAMYaeJvn37300o9l6x94ozfq/Yv0sECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIExhWwB3X8Paj2bNuz3ZPzxebfcQNZ/+elEB6N67v+xYkjN/x5/d/ddyRAgAABAgQIECBAgAABAs8UMAHY5BWTV0qcvOK4d9w77k0e0wEd0AEd0AEd0AEd0AEd0AEd0AEdKLkDJhObTGwyscnEOqADOtB4B+zCsLvE7pKe7C5xd+mM7y6tMzqjM37f0AEd0IHZO9CtZcVpa/qLqb/zfd1SSH/xnPX0T//Hkc8/P99H4qcTIECAAAECBAgQIECAQAkCJgAXOAE414nGJhObTOy944zfOy7hX0TPkQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoB4Be1Nn35tqj7c93lvnkY2/9WSpzu+SQvjAyUNL31Ln9/S9CBAgQIAAAQIECBAgQIDA5QRMADbpxKSTkiedOP4d/45/E790QAd0QAd0QAd0QAd0QAd0QAd0QAd0IJ8OmEhqIqmJpI1PJK0WzEbOnB0HRZ8HdmHYRWIXid1YOqADOqADOqADOqAD+XfgqeW+29cyLIHOUCCFN51YXnp9ho/MQyJAgAABAgQIECBAgACBHgmYAGwCcMh1InAuj8tkYpOJTSY2mbhH/+57KgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBcgXsfc1/76s96qM96qlaQDm6fZOPnAVSCq84ubz07pwfo8dGgAABAgQIECBAgAABAt0WMAHYhBMTTkw4yWfCifPR+eh8dD7qgA7ogA7ogA7ogA7ogA7ogA7ogA7oQH4dMCmz6EmZJuaaGGxicjQx2b8Drfw7YBeGXR4mEdqNpQM6oAM6oAM6oAM6UHWgOhNs/O3OwuyUwloK4atWlpd+tzuP2iMlQIAAAQIECBAgQIAAgS4JmABsArAJwCmE2MHjwGRik4lNJjaZuEu/cHisBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECzyJg76s98GmToPow9bdjpUjhvosbz/3y00eufbBjj9zDJUCAAAECBAgQIECAAIEOCJgAbKKIiSImiuQ3UcR56bx0XjovdUAHdEAHdEAHdEAHdEAHdEAHdEAHdEAHduqAiZStTKQ0AdgEYBOATQDWgbI7YBeGSYQmEdqNpQM6oAM6oAM6oAPNd2Bz7m/1F7iPzgqksHJieenFnX38HjgBAgQIECBAgAABAgQIZCtgAnAHJ7+mjk6s9bi7OWl40tfNZGKTiU0mNpk42996PDACBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHxBZrf+1r0HnMbf8c/FLvwmSnEHzx5aPHtXXisHiMBAgQIECBAgAABAgQIdEfABOCdJgj4300aMWnEpBEd0AEd0AEd0AEd0AEd0AEd0AEd0AEd0AEd0AEd0IFxO2AyscnEwcRYE2PLnhjr9ff6tzE5vOhdIu7Gm/HdeE2INCHSLjl91gEd0AEdGL8D1Wea+tudxdbjPNIUwvpgmL7y+OEbf3+cz/c5BAgQIECAAAECBAgQIEBgHAETgE0ADpNOePX5ZUzy7dvrbDKxycTWQmS8FmKc31h8DgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFKoMN7rVO1MM/W3x4fx+mexy/s+pK7btvzWI+fpKdGgAABAgQIECBAgAABAi0KmAA87h37fZ4JHyZ8mPChAzqgAzqgAzqgAzqgAzqgAzqgAzqgAzqgAzqgAzrQ1Q6YTGwyscnEwWRak2nbmEzrOHOcVceZyXfjT77r9O4dd6Hu9u4rr5/XT6/9e6UDOtByBza3/Zr52+L66Pn9qBR+7cTy0jfM7wH4yQQIECBAgAABAgQIECDQJwETgE0ANgE4megbnQdzOw+8l+C9hJbfS7CGYpI1N336jc9zIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQaFbgMutSTPxtljzb757Cj55YXvrJbB+fB0aAAAECBAgQIECAAAECnREwAbird+r3uE0aMWnEpBEd0AEd0AEd0AEd0AEd0AEd0AEd0AEd0AEd0AEd0IGud8BkYpOJTSY2mVgHdEAHWuuAycQmE7tb8CR3C3a8OF4cL/7d0AEdmL0DaTQdwtTfzqyorveBDjdSvOnU8uJKvd/WdyNAgAABAgQIECBAgACB0gRMADb5dG6TT5PJu8Hk3eD4y/Q8MJnYZGKTiUO+72WW9tuq50uAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ6JCAjb8derEafKgphEc3hru+7M7DN9zb4I/xrQkQIECAAAECBAgQIECg5wImAHf9zvgevwkfJnyY8KEDOqADOqADOqADOqADOqADOqADOqADOqADOqADOqAD9XbARFITSU0kbW0iabUwPvLm7Tgo+jzI966sJj+a/Dj75EfHt/PIeeQ80oGyOmDjb89XXE/x9FIKd55cXvraKb7UlxAgQIAAAQIECBAgQIAAgZGACcAmAJvAmukEVhOSgwnJ+vSMPplMbDKxycQmE/sdngABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCQm8Dm5t/q9kY+CHyuQErhFSeXl97NhQABAgQIECBAgAABAgQITCNgArA74td7R3yePE0aMWlEB3RAB3RAB3RAB3RAB3RAB3RAB3RAB3RAB3RAB3RAB5rpgAmZRU/INCnXpGCTkqNJyf4daPXfARMby5rY6PX2epvUa1KvDujAtB2o5Gz8nWb5cjlfk0I4t7Zw1T85vf/6e8p51p4pAQIECBAgQIAAAQIECNQlEF/8qjPJpFGTRqNJoyYhm4Rs4rAOTN0Bk4lNJjaZOOPJxNvvUdb127PvQ4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBQvYOJv8YfARAAphd9dWVz8yrAvDif6Qp9MgAABAgQIECBAgAABAsULxBe98r4U3Ynfnfjdib+ZO/Fz5aqv+qoDOqADOqADOqADOqADOqADOqADOqADOqADOqADOtD3DphI2epESpOATQI2CdgkYB0ouwMmVJpQOe2ESl9nwq1+6IcO1NOBzYm/Zv4Wv/p6CoAUwutWDi29eYov9SUECBAgQIAAAQIECBAgULCACcAmXk498dLkaJOjTY4Ozh+To7OeHG0yscnEJhObTFzw3zmeOgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqE1gc+Lv5kd1Ux4fBCYVSCGsD+PCP7/z4J4/mvRrfT4BAgQIECBAgAABAgQIlCtgAnDf77ju+ZksYbKEyRI6oAM6oAM6oAM6oAM6oAM6oAM6oAM6oAM6oAM6oAM6oAMldsBkYpOJg0mxJsWWPSnW6+/1b3NiuMmiJouaLFrPZFGOHPU0z54+NfW33MXGnnk9AimFTwzOhS8/8b6lx+v5jr4LAQIECBAgQIAAAQIECPRdwARgE4BNMDXBNOsJpiZNmzRt0nR/J02bUGxCsQnFGU8o7vtfQZ4fAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDYQWBz6q95vw6UegVSCD+7cmjpO+r9rr4bAQIECBAgQIAAAQIECPRVwARgd7x3x/sS73jvuHfcO+5NfNEBHdABHdABHdABHdABHdABHdABHdABHdABHdABHdCB+XTAZGKTiU0mDibTmkzb5mRax1vZx5tJmnlO0vS6eF1MOjbpOPcO2Pjb1yXT+TyvNIxft3J48Xg+j8gjIUCAAAECBAgQIECAAIFcBUwANgHYBGATgE0A1gEd0AEduKQDJhObTGwyscnEuf7x5nERIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQHMCmxt/zfxtTth3fkogfeaJdM0X/87y8x+hQoAAAQIECBAgQIAAAQIEriQQX/Sd96XoDu/u8O4O7/O5wzt37vqrvzqgAzqgAzqgAzqgAzqgAzqgAzqgAzqgAzqgAzqgAzqgAzl1wIRiE4pNKDahWAd0QAca70Duky89PhN6Teg1obe0DmxP/K2edxzdNdwHgeYFUgi/trK89A3N/yQ/gQABAgQIECBAgAABAgS6LBBf/MozKZl8aPKhCagmoOqADuiADuhA1h0wmdhkYpOJTSbu8h+eHjsBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRyFNje/Gvbb46vTv8f0zDFl546vPj+/j9Tz5AAAQIECBAgQIAAAQIEphUwAdgd1d1RPac7qjseHY+OR5M+dEAHdEAHdEAHdEAHdEAHdEAHdEAHdEAHdEAHdEAHdEAHdOCZHTCR1ERSE0kbn0habX6pJt75LwfHQbnnQWkTPz1fk45NOi570nH1L76Jv9MuPfZ1NQp8NqbwwhOHlx6o8Xv6VgQIECBAgAABAgQIECDQIwETgE28NPHSxMusJ16aUB68Pjqt0zqddQdMJjaZ2GRik4l79Pexp0KAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQM8FTPzt+QvcyaeXjp1cvvFfd/Khe9AECBAgQIAAAQIECBAg0LiACcDuoO4O6u6gbpKCDuiADuiADuiADuiADuiADuiADuiADuiADuiADuiADuiADuiADujANB0wMdXEWBNzTQzWAR3QgcY7YFKvSb0m9ZY9qbeu1786kzY/qln3PgjkJTAMg287tbz3vXk9Ko+GAAECBAgQIECAAAECBHIQMAHYZEmTJU2WzHqypAnAJgBHndZpndbpKTpgMrHJxCYTm0ycwx/cHgMBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAvMX2Nz8m2z9nf9L4RE8i0BK4Wxaj1986t2L90MiQIAAAQIECBAgQIAAAQKXCpgA7E7e7uQ9zZ28HTeOG8eNSRA6oAM6oAM6oAM6oAM6oAM6oAM6oAM6oAM6oAM6oAM6oAM6oAO5dsBEUhNJTSRtfCJpcp45z5xnxZ9nJhObTFzXZFrfp7kJxzb+WjDdJYGUwq+vHF76+i49Zo+VAAECBAgQIECAAAECBJoXMAF4iolyJpKaSGoiaTCR1ERSE0n9+6EDOqADU3TAZGKTiU0mNpm4+T/z/QQCBAgQIECAAAECBAgQIH+XudwAACAASURBVECAAAECBAgQIECAAAECZQtUN+qoPuLoDVofBLojkFL6ppXDN/5ydx6xR0qAAAECBAgQIECAAAECTQuYAJzrHZk9LneMd8d4d4zXAR3QAR3QAR3QAR3QAR3QAR3QAR3QAR3QAR3QAR3QAR3QAR3QAR3oUwdMTDUx1cTU4iemmpycdEAHWuuACcUmFJc4WXhz2+/mM/dBoJMCKTywdmH3F5++/bpHO/n4PWgCBAgQIECAAAECBAgQqF3ABOApJreZAGwCsAnAJgDrgA7ogA7ogA70qQMmE5tMbDKxycS1X23wDQkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0JLA58de835a4/ZiGBVIKt60cXnp5wz/GtydAgAABAgQIECBAgACBjgiYAOyO2e6Y3ac7ZjueHc+OZ5MgdEAHdEAHdEAHdEAHdEAHdEAHdEAHdEAHdEAHdEAHdEAHdEAHdGCyDphMbCKpiaStTSQ1AdgE4Gp7nuOg7OPAZGKTieucTLy58Xfzw/bfjqxa9jDHEhgO41ecetfiR8b6ZJ9EgAABAgQIECBAgAABAr0WMAHYBOBggqEJhn2aYOh4djw7nk3m1QEd0IH+dMBkYpOJTSY2mbjXV2Q8OQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgakFTP2dms4XdkAghXT3+uLSl53eF9c78HA9RAIECBAgQIAAAQIECBBoUMAEYHc+nuzOx7x4uWO8O8brgA7ogA7ogA7ogA7ogA7ogA7ogA7ogA7ogA7ogA7ogA7ogA7ogA7oQPMdMJnYZGKTUk2K1QEd0IHWOmAycXcmE1cztKuPzf/rg0B/BYYpvuHU4cWf6O8z9MwIECBAgAABAgQIECBAYBwBE4BNADYBOJmUaFJifyYlmnzqfHY+O591QAd0oPkOmExsMrHJxCYTj3PBxecQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjUJ1BtUa4+bPytz9R3yl0grQ7D4EtOLS9+IvdH6vERIECAAAECBAgQIECAQHMCJgC7M7U7U7szdfN3pnaeOc+cZ84zHdABHdABHdABHdABHdABHdABHdABHdABHdABHdABHdABHdABHehHB0wkNZHURNLWJpIm55vzzflW/PlmMnEKKcXRrl8bf5tbSOw75yuQUji1cnjpRfk+Qo+MAAECBAgQIECAAAECBJoWMAHYBGATgE0ADiYFNj8p0EROEzmdZ84zHdABHdCBpjtgMrHJxCYTm0zc9EUk358AAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0JZA9f5q9VG91+6DQMkCaRj+3cq7lj5UsoHnToAAAQIECBAgQIAAgZIFNicA53anQHd+dudnd37ux52fvY5eRz3Xcx3QAR3QAR3QAR3QAR3QAR3QAR3QAR3QAR3QAR3QAR3QAR3QAR3QgTY6YFKqSam5rX/yeIqf3GqCc9KlHnegycnET238tfO35MXNnvulAunTu3YtvfDY/rjKhQABAgQIECBAgAABAgTKEzAB2ARgE4BNADYBWAd0QAd0QAd0QAd0QAca64DJxCYTm0xsMnF5l9s8YwIECBAgQIAAAQIECBAgQIAAAQIECBAgQGBSgbS18zca+Tspnc8vQCCF8KaV5aXXF/BUPUUCBAgQIECAAAECBAgQeJpAnhOAc73zXRt3pHXnY3c+dpy5A7oO6IAO6IAO6IAO6IAO6IAO6IAO6IAO6IAO6IAO6IAO6IAO6IAO6IAO6IAO9KMDJhObAJrrOiiPy4RifdKnnDpQbf6NcXRfWR8ECDxTIKWwlmL8x6eWFz/BhwABAgQIECBAgAABAgTKEjAB2KSvxiZ9bV2T8/1NFDRRUGd0QAd0QAd0QAd0QAey7YAJxSYUm1BsQnFZlwI9WwIECBAgQIAAAQIECBAgQIAAAQIECBAgkI+Aqb/5vBYeSf4CKYVTK4eXXpT/I/UICRAgQIAAAQIECBAgQKBOAROA+3AnQ3d+dudnd37ux52fvY5eRz3Xcx3QAR3QAR3QAR3QAR3QAR3QAR3QAR3QAR3QAR3QAR3QAR3QAR3QgTY60If1MjlNruRpkqrj0URlHZisA9V0keo+tdHM3zoXBPte/RcYDgf/4dS79v5K/5+pZ0iAAAECBAgQIECAAAEC2wImAJvEle0kLhOEqwucwetjYqLjwHmgAzqgAzqgAzqgAwV2wGRik4lNJjaZ2OVLAgQIECBAgAABAgQIECBAgAABAgQIECDQN4HNib9x9P6nDwIEphBI4b6Hh8N/9NEjn39+iq/2JQQIECBAgAABAgQIECDQQQETgN15b7I7703i1cYdad352J2PHWfugK4DOqADOqADOqADOqADOqADOqADOqADOqADOqADOqADOqADOqADOqADOqAD/ejAJOtSTFw1cdXx0ty6L+eX86vu88vG3w4uL/aQcxVIKfzUyuGlH8n18XlcBAgQIECAAAECBAgQIFCvwNYE4NTymwAmm5rsarKtCcc6oAM6oAM6oAM6oAM6oAM60LUOmExsMrHJxCYT13tp0ncjQIAAAQIECBAgQIAAAQIECBAgQIAAgT4LbE78rd4XNvK3z6+z59auQEphbbiw+4V3HrzuU+3+ZD+NAAECBAgQIECAAAECBOYhYAJw3Xeq8/3yv7OkOz+787M7P7d804e2bzLh51VvmlRvoPgvB8eB80AHdEAHdEAHdEAHdEAHdEAHdEAHdEAHdEAHdEAHdEAHdEAHdEAHauiA9UD5rwcysdbEWudpXuepjb/zWA/sZxYkkEL61ZXlG7+xoKfsqRIgQIAAAQIECBAgQKBYgTlNAM71zRUTyEwgM4GsaxPIPF7d0i3d0gEd0AEd0AEd0AEdMJnYZGKTiU0mLvbqridOgAABAgQIECBAgAABAgQIECBAgACBzAS2bz6S2cPycAj0UGDha04u7/ntHj4xT4kAAQIECBAgQIAAAQIELhEwAdid//K685/Xw8ROk0tNbjW5Vgd0QAd0QAd0QAd0QAd0QAd0QAd0QAd0QAd0QAd0QAd0QAd0QAd0QAd0QAd0YOcOWGdj3ZPJxyYfZ9SBzRu2xtE9O30QINC8QErp4yuHl74shFidfT4IECBAgAABAgQIECBAoKcCJgB34s0CE71M9DLRy2Q/HdABHdABHdABHdABHdABHehaB0wmNpnYZGKTiXt6TdnTIkCAAAECBAgQIECAAAECBAgQIECAwJMC1fs31Uf1Xp4PAgTaFUgh/ZeV5Rt/rt2f6qcRIECAAAECBAgQIECAQJsCJgBndAe86t53yeNxZ85cj4NObJZP7oDsddr5DsjuFO48cZ44T3RAB3RAB3RAB3RAB3RAB3RAB3RAB3RAB3RAB3RAB3RAB3RAB3RAB3Sg+Q5YB2UdVK7roDyuWtYpjm6EWh3lNv62uebXzyLwuQIp3bN2YemFp2+PF9AQIECAAAECBAgQIECAQD8FTAB2MX+Gi/kmkJlAZgJZ1yaQeby6pVu6pQM6oAM6oAM6oAM6YDKxycQmE5tM3M9L3Z4VAQIECBAgQIAAAQIECBAgQIAAAQJtCKTRyF8bf9uw9jMIjCWQ0mtPHr7xrWN9rk8iQIAAAQIECBAgQIAAgc4JmADsTpPuNOmOjrXc0XFuE6xt4p9hE7+JydHx4/hxZ3d3dtcBHdABHdABHdABHdABHdABHdABHdABHdABHdABHdABHdABHdABHdCBsjpgvZj1YtaLTbVeLKStUb+x2v7rgwCBXARSCmfD8Op/sHLkBWdzeUweBwECBAgQIECAAAECBAjUJ2ACsDdxevgmjoleJnqZ6GWynw7ogA7ogA78//buLsS2867j+Fo5pZgq9SUkmT2BtggWvKlQsDca0eSIIOKV5KK5KWLTWiuVUpVe9IW2F0UtwdImM/tYbW/Si+CViLRn9uRYo72oUGhvhAqigRyRahWVxHByHnnW2ntmz0yms1/W3vt5+WwCyUn2XvtZ37We70zW83/+Px7gAR7gAR7ggdw8IJlYMrFkYsnEwz32diQEEEAAAQQQQAABBBBAAAEEEEAAAQQQGIpAn/gb195s+x2KqeMgMDiB0P7BzYMHf3/w4zogAggggAACCCCAAAIIIIDAzglIANbRUUdHHR1X6ui4s8TfXK6X5gIFNheQmCwxuXVf63xeV+dz19v19vsM7/MAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/DA9jygjk0dW4p1UdOfAzuvdDUABBC4msC1aw/d/Nz9L179Ru9AAAEEEEAAAQQQQAABBBDIiUD7i+/91xA7tNnUY1OP+2Bb80ASmSQySWS5JZEZL2/xFm/xAA/wAA/wAA/wQL0ekEwsmVgysWTinB74GysCCCCAAAIIIIAAAggggAACCCCAAAJDEOhSf9sYEeGFAALZEAjt528ePvj+bMZroAgggAACCCCAAAIIIIAAAgsRaK+/53aQ5NlKQNVBUgfJFDtIui+Hvy915t1eZ17NNTQXMd/MNx7gAR7gAR7gAR7gAR7gAR7gAR7gAR7gAR7gAR7gAR7gAR7gAR7gAR7ggdw9oH5n+PqdlOu04sbfeMZ2/i5UgOtNCCRFIIRX7gmve8tXxvffTmpcBoMAAggggAACCCCAAAIIILAWAQnAHrJ7yJ77Q/bBxi/RS6JXvYleEv3Mf/Pf/OcBHuABHuABHuABHsjNA5KJJRNLJpZMvNbKgA8jgAACCCCAAAIIIIAAAggggAACCCAwR6BL/J3m/dr869ZAIF8CoQlPHx2M3pfvGRg5AggggAACCCCAAAIIIIDAeQISgHUorKtDoevteqfcQbPm+1MzBs0YBmtmEHQQN5/MJ/OJB3iAB3iAB3iAB3iAB3iAB3iAB3iAB3iAB3iAB3iAB3iAB3iAB3iAB0r3QM11NgPXPzUhxv329RZeCCCQOQEpwJlfQMNHAAEEEEAAAQQQQAABBC4SkADsYbeH3aU/7M7+/CSRSSKTRJZbEpnx8hZv8RYP8AAP8AAP8AAP1OsBycSSiSUTSya2EIMAAggggAACCCCAAAIIIIAAAgggkAeBLvTXxt88LpZRIrAEgRDCwdHh6DeX+Ii3IoAAAggggAACCCCAAAIIJExAArBOgBJhB+6I2DpeE8wr86qUeaBJhCYR2TdRkIgcOxQH11GHe/eBecADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPLAND2RQNyXxN+GKXkNDYAgCUoCHoOgYCCCAAAIIIIAAAggggEAyBCQAb+OhnofHHh67zwpcRJLoJdGr3kQviX7mv/lv/vMAD/AAD/AAD/AAD+TmAcnEkoklE0smTmZVxkAQQAABBBBAAAEEEEAAAQQQQACBHRHoEn/b7i8vBBAonUBoP3/z8MH3l36azg8BBBBAAAEEEEAAAQQQqIGABOAMOu5JlG0lyrpPJeqWkqjrPIbxmaYCBTYVkNQrqVdSsaRmHuABHuABHuABHuABHuABHuABHuABHuABHuABHuABHuABHuABHuABHuCB4T3QF8K2TWzu6YUAApUQkAJcyYV2mggggAACCCCAAAIIIFADAQnANlHZRCWhWUJzUR6QRCaJTBJZbklkxstbvMVbPMADPMADPMADPFCvByQTSyaWTCyZuIaFKOeIAAIIIIAAAggggAACCCCAAAK7IRA3U9v4uxv2vhWBJAiE5o9vHu79ThJjMQgEEEAAAQQQQAABBBBAAIGVCUgAlqwqWVUi6TCJpDjiyKd8WtRm+uE76upUrVO1TtXmFQ/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wwKY90FeTSvxduarWBxEohEBowkt37v7gm26N3/jdQk7JaSCAAAIIIIAAAggggAACVRKQAGyzkgRgCcASgHlgix6Q7CXZq95kL8l+5r/5b/7zAA/wAA/wAA/wAA/k5gEJxRKKJRQnmFBc5VKWk0YAAQQQQAABBBBAAAEEEEAAgUUISPxdhJL3IFAXgRDCHx0djn63rrN2tggggAACCCCAAAIIIIBAWQQkAEuslFgpuVZyLQ/wAA+U7QGb/Le4yV+n5k13anZ8HeF1hOcZHuABHuABHuABHuABHuABHuABHuABHuABHuABHuABHuABHuABHuCB1/JA07ZdPzcvBBBAYEYgpgC/3N770PNP/8j3UEEAAQQQQAABBBBAAAEEEMiTgARgm4JsCpIALAGYB3ggSCKTRCaJLLckMuPlLd7iLR7gAR7gAR7gAR6o1wOSiSUTSyaWTJznkpxRI4AAAggggAACCCCAAAIIIDA8gS7118bf4cE6IgIlEQjtx24ePviJkk7JuSCAAAIIIIAAAggggAACNRGQACz5U/Kn5M+ykz9dX9eX53k+VQ9oPqD5gCYkmpDwAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA+s6IEmVoSI/K2p3te5IrAigfC9/7l376GvP9m+tOIBfAwBBBBAAAEEEEAAAQQQQGCHBCQAr/jwrPU5D989fPfwnQd4YOMekOgl0aveRC+Jfua/+W/+8wAP8AAP8AAP8AAP5OYBycSSiSUTJ5hMHKb35Q4X4nw1AggggAACCCCAAAIIIIAAAkMS6BJ/4//u2vk7JFbHQqB4AqFpPnh0sPdk8SfqBBFAAAEEEEAAAQQQQACBAgm0j77nxdCmmoxnXJI7JXdK7uQBHuABHuCB7XpAcwPNDTbe3CBoImKemWfmGQ/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA8s6QGJvwVW8DolBLZH4MU7e3tvvvXx9s72vtI3IYAAAggggAACCCCAAAIIDEGgvf7e2yF2hZNo23qo7D4wD5Z8qMwbvOHnR60/PyWRSSKTRJZbEpnx8hZv8RYP8AAP8AAP8AAP1OsBycSSiSUTSyYeYkHRMRBAAAEEEEAAAQQQQAABBHZDoE/8bbv/uZX6u5tr4FsRKIVAaJt3TZ4efamU83EeCCCAAAIIIIAAAggggEAtBCQAS5aULClZcrvJknjjzbu8ywM8sIoHNKnQrEazGs1qeIAHeIAHeIAHeIAHeIAHeIAHeIAHeIAHeIAHeIAHeIAHeIAHeIAHKvKAxN9aynidJwLbIRCa8M3Jwf7bt/NtvgUBBBBAAAEEEEAAAQQQQGAoAhKAPRT2ULiih8ISeyX2SuytNbG3lvOW6CXRq95EL4l+5r/5b/7zAA/wAA/wAA/wAA/k5gHJxJKJJRNLJh5qsdNxEEAAAQQQQAABBBBAAIHSCMxSf+MzPy8EEEBgUAJ3rz18NH7g+UGP6WAIIIAAAggggAACCCCAAAIbJSABeJUEOsmFkgvdNxJMeYAHeIAHeIAHogc0k9FMRjMZ84AHeIAHeIAHeIAHeIAHeIAHeIAHeIAHeIAHeIAHeIAHeIAHeIAHeGAAD8TE3+lfGy0adXAEEKiawLNHB6PHqibg5BFAAAEEEEAAAQQQQACBzAhIAPbw1cPXAR6+2vwjWVeyrk1wPMADV3tAIplEMolkuSWSGS9v8RZv8QAP8AAP8AAP8EB9HpBMLJlYMrFk4szWeg0XAQQQQAABBBBAAAEECiAg8beAi+gUEMiHwN1X7nn9W7721H0v5DNkI0UAAQQQQAABBBBAAAEE6iYgAViCowRHCY4SHHmAB3iAB3iAB0r1gGY3mt1odiNxgAd4gAd4gAd4gAd4gAd4gAd4gAd4gAd4gAd4gAd4gAd4gAd4gAeS9MCsdDU2nfdCAAEEtkcgfProYP/D2/s+34QAAggggAACCCCAAAIIILAOAQnAHm4m+XBTkqYkzauTNCXOmifmiXnCA8N4QKKXRK/6Er0k+Zn35r15zwM8wAM8wAM8wAM8kJsHJBNLJpZMLJl4nQVhn0UAAQQQQAABBBBAAIG0CPSJv/EZnY2/aV0Zo0GgDgKhCf/+6t5o79bH2zt1nLGzRAABBBBAAAEEEEAAAQTyJiABWOKfxL9SE/+cl0RTfuM3HuABHuCBVD2gCY8mPJIGJA3wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA9U7IG8y06NHgEEsidwt338aLz3TPbn4QQQQAABBBBAAAEEEEAAgQoISACu+CGi5EjJkcMkR+KIoyRePuUBHtiEBySSSSSTSJZbIpnx8hZv8RYP8AAP8AAP8AAP1OcBycSSiSUTSyauYD3dKSKAAAIIIIAAAgggMAiBPvW3bYT+DoLTQRBAYE0CoQl/MznY/7k1D+PjCCCAAAIIIIAAAggggAACWyAgAVgynmS8VJPxjEtyJz/xEw/wAA/wAA9s1wOaA0kakDQgaYAHeIAHeIAHeIAHeIAHeIAHeIAHeIAHeIAHeIAHeIAHeIAHeGBgD8Q60NhY3AsBBBBIicCde679xK2nHvjHlMZkLAgggAACCCCAAAIIIIAAAhcJSAAe+GGdBMBNJABKlnRfua8kzPIAD/AAD6TiAYleEr3qS/SS5Gfem/fmPQ/wAA/wAA/wAA/wQG4ekEwsmVgysWRihQEIIIAAAggggAACCOyagMTfXV8B348AAgsQ+NzRwei3F3iftyCAAAIIIIAAAggggAACCOyQgARgyXqS9STrbTdZD2+8eZd3eYAHeIAHeGA5D2haJGlA0oCkAR7gAR7gAR7gAR7gAR7gAR7gAR7gAR7gAR7gAR7gAR7gAR7IxgOxHlTi7w6rYn01AggsRiA0/3Xn//b2bn2xfXmxD3gXAggggAACCCCAAAIIIIDALghIAPZw3MNxD8ezeTguAVUCqgTUVBJQjYOP+Cg9H0kkk0gmkSy3RDLj5S3e4i0e4AEe4AEe4AEeqM8DkoklE0smlky8i4IA34kAAggggAACCCCwPQKzdeTtfaNvQgABBNYjcDe07zw+3PvyekfxaQQQQAABBBBAAAEEEEAAgU0SkAAsgU4CnQS65RLo8MKLN3mTB3iAB3iAB3ggekAzJc2UNFMyD3iAB3iAB3iAB3iAB3iAB3iAB3iAB3iAB3iAB3iAB3iAB3igr+9s267njxcCCCCQE4HQNH81ORj9ck5jNlYEEEAAAQQQQAABBBBAoDYCEoA9hPYQ2kNoi1E8wAM8wAM8wAM8sCEPSPSS6FVfopckP/PevDfveYAHeIAHeIAHeIAHcvOAZGLJxJKJJRPXViThfBFAAAEEEEAAgaEIxP//i6/4LMALAQQQyJJAaF69p233v3qw929Zjt+gEUAAAQQQQAABBBBAAIEKCHQJwM2Sq7qxV12Q/Cb5zX1gHvAAD/AAD/AAD/AAD/AAD6TmAU0dNHXQ1GFDTR0kf0s+b/mFX/jF7xk8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8MNv1O935a+9vBVW2ThGB4gmEDx4d7D9Z/Gk6QQQQQAABBBBAAAEEEEAgUwISgD2U9VDW4ozFGR7gAR7gAR7gAR6o1AOSySSTSSbLLZnMeHmLt3iLB3iAB3iAB3iAB+rzgIRiCcVL9rJetve198cdKzG5bpm/Z1ocYdgIIIAAAggggMAQBGbPJoY4lmMggAACKRAITfjm5GD/7SmMxRgQQAABBBBAAAEEEEAAAQQuElgpAXi51b9lVwtXf79kYsnMkqmDBLrUEuiMRzKmZExe4gEe4AEe4AEeiB7QbEKzCc0mzAMe4AEe4AEe4AEe4AEe4AEe4AEe4AEe4AEe4AEe4AEeyNoDsfwyrvl4IYAAAqURuHM3/OSt8f4/lHZezgcBBBBAAAEEEEAAAQQQKIFAe/09t0PwcNnDZQ+Xs364bDNB6/rxOI/zOA/wAA/wQEEekOgl0au+RC9Jfua9eW/e8wAP8AAP8AAP8AAP5OaBpRNTV++BnGpvZuNaJjHX9d/O/VJCBYdzQAABBBBAAIHkCMTayvjLjH2/yV0aA0IAgQEJhKb5xORw9LEBD+lQCCCAAAIIIIAAAggggAACAxFoH33ixbCd1bZ6VzUlE0smlkwsmZgHeIAHeIAHeIAHeIAHeCBJD2geUFDzAEnTmmNpjqXJIQ/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA8M6QEbfweqUnUYBBDIgED4ztHh/lszGKghIoAAAggggAACCCCAAALVEZAArNhZsbPERImJPMADPMADPMADPMADPLCABySSSSSTSJZbIpnx8hZv8RYP8AAP8AAP8AAP1OcBycRdOFuDAw5J3QfVlaE4YQQQQAABBPIm0Cf+xv+fjL9YeiGAAAIVEQjt247Ge9+u6IydKgIIIIAAAggggAACCCCQBQEJwBWv/kogk0CWZAJZ47q4LhIi+ZkHeIAHeIAHeIAHqveATfkLbMqX5CHJQ5LHkEke7if3k/vJzxUe4AEe4AEe4AEe4AEe4AEe4AEe4AEe4IFZNxmbf7OofTVIBBAYnED7qaPDvY8MflgHRAABBBBAAAEEEEAAAQQQWIuABGBFxYqKJf5J/OMBHuABHuABHuABHuCBjD0g0UuiV32JXpL8zHvz3rznAR7gAR7gAR7gAR7IzQMV92SWSCyROd1E6rVKTXwYAQQQQACBsgj0qb9tI/S3rOvqbBBAYFkC4TtHh/tvXfZT3o8AAggggAACCCCAAAIIILBZAhKArTZ3Dy9TWnWsPulKAm4j8U7iHQ9IvuQBHuABHuABHuABHkjSA5oFZNwsQHKFBBsJNhJseIAHeIAHeIAHeIAHeIAHeIAHeIAHeIAHeIAHznqgK81s46qUFwIIIIBAJBBeveenJn/y4LfQQAABBBBAAAEEEEAAAQQQSIdAe/2J22GjRbWKYxXHStSTqMcDPMADPMADPMADPMADPFCdBySSSSSTSJZbIpnx8hZv8RYP8AAP8XiryAAAH9tJREFU8AAP8AAP1OcBvaKT6xWdWu9q49lFL/F06mmMBAEEEECgYAJd4G+/99cLAQQQQGCOQAjNRyfj0SdBQQABBBBAAAEEEEAAAQQQSIeABGCrulZ1F0xAlkAmgWyjzRIkP0t+biQ98izP8iwP8AAP8AAP8MCKHtBkQZOF6posSGqR1CKxSWITD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/DAeh5Ip4TTSBBAAIF0CITQfGMyHr0jnREZCQIIIIAAAggggAACCCCAwOYTgFPd1KY4VnGs4lhJhDzAAzzAAzzAAzzAAzzAA9V6QLKXZK/6kr0k+pn35r15zwM8wAM8wAM8wAM8kIsH9LDWw3rBHtYSiiUUq3pCAAEEEFiCQJf62/Y/Pr0QQAABBC4ncCeE+2+N97+LEQIIIIAAAggggAACCCCAQBoEJABbPbV6mvnqqYSsFROyUm1OYFySgCUBN7zGaxJAJYDyAA/wAA/wQCEe0GRBk4VqmyyslzwiuQU/CU4SnHiAB3iAB3iAB3iAB3iAB3iAB3iAB3hgWA80bVx58EIAAQQQWIhA2z5xdLB3Y6H3ehMCCCCAAAIIIIAAAggggMDGCdSbAJzqJjvFsYpjFcdKIuQBHuABHuABHuABHuABHqjWAxLJJJJJJMslkcw4+Yqv+IoHeIAHeIAHeIAH6vOA3tp6a2feW7vsxOSNlxf5AgQQQCA/Al3i7/QXmPi7qxcCCCCAwGIEQtP8xeRw9KuLvdu7EEAAAQQQQAABBBBAAAEENk1AArBVSquUVilPHnbPHnoP8XeJXYUkdqXaLMG4JCVLSpaUzAM8wAM8wAM8wAM8sKoHNFnQZKHaJguScyTnDJucgyeeEsl4lQd4gAd4gAd4gAd4gAd4gAd4IFUPxK4PNv1uuvTU8RFAoFQCoQkvTQ7331Dq+TkvBBBAAAEEEEAAAQQQQCA3AhKAVy0Wre1zimMVxyqOlUTIAzzAAzzAAzzAAzzAAzxQrQcke0n2qi/ZS6KfeW/em/c8wAM8wAM8wAM8wAO5eEDPbz2/9fzeSM/vYRKTc6uiMl4EEMieQJ/62/8u74UAAgggsDqBtmmv3zzcm6x+BJ9EAAEEEEAAAQQQQAABBBAYioAEYKuBVgOtBia8Ghifyscn8sP9XTKxZOIgKU5SXG1NPJyvhEze4z0e4AEe4AEeyMsDmi1otlBtswWJOakm5hiXRC+JXvzEAzzAAzzAAzzAAzzAAzzAAzyQugdm9UVxnF4IIIAAAgMQCOHTR+P9Dw9wJIdAAAEEEEAAAQQQQAABBBBYk4AEYEWweRXBnr9eimIVxSqKlUTIAzzAAzzAAzzAAzzAAzxQrQckkkkkk0iWSyKZcfIVX/EVD/AAD/AAD/AAD9TngQF7HA/dM9nxhu1BjWeOPNcstvJxBBBIh0Cf+Ntv0PZCAAEEEBiUwN8fHY5+etAjOhgCCCCAAAIIIIAAAggggMBKBCQAW3UbPGHV6laOq1vDJey6/qtdf8nEkoklEwfJfJqS5N2UxPVz/SSs8jgP8AAP8EDpHtBsQbOFapstSPhJPeHH+CSRSSLjKR7gAR7gAR7gAR7gAR7gAR6o1QN9kxkvBBBAAIHhCYTQhFdf+YEfu/XFH/3P4Y/uiAgggAACCCCAAAIIIIAAAssQkABcenGm89tNEbqiWEWximIlEfIAD/AAD/AAD/AAD/AAD1TrAclekr3qS/aS6Gfem/fmPQ/wAA/wAA/wAA/wQC4e0CNdj/RmtZ7WeoFvg9syFV/ei0DFBOKG7yglm38rvgmcOgIIbIfA3fBrRzf2/3w7X+ZbEEAAAQQQQAABBBBAAAEELiMgAdjqltUtq1tNYx6YB5fMA8nEkoklE0sm5gEe4AEe4AEe4AEe4AEeSNoDmi1otlBts4Vak32ct2QzyWaSzXiAB3iAB3iAB3iAB3iAB3igZg/EXb9CfxXDIoAAAtshEJrmqcnh6Le2822+BQEEEEAAAQQQQAABBBBA4NINwNefuB2SLuKTYLubBFvcy+SuKFZRrKJYSYQ8wAM8wAM8wAM8wAM8wAPVe0AymWQyyWS5JJMZJ1/xFV/xAA/wAA/wAA/wQD0e0LNaz2q92xPu3a7uDoEdE5D4u+ML4OsRQKBaAqEJ35wc7r+9WgBOHAEEEEAAAQQQQAABBBBIhIAEYKtIVpGsIiW8ihTcn+7P17w/JZBJINO8RBIhD/AAD/AAD/AAD/AAD/BA0h7QbEGzheqbLUjkksglkavmRC73v/vf/e/nIA/wAA/wAA/wAA/wwFAeaGLdTP+XFwIIIIDA9gnc/d837P3Q159sX9r+V/tGBBBAAAEEEEAAAQQQQACBGYFWArBiyaSLJSURl5lEfP66KopVFKsoVhIhD/AAD/AAD/AAD/AAD/BA9R6Q7CXZq55kL0l+5rv5br7zAA/wAA/wAA/wAA/k5gG95fXu1rs7wd7y6v+KJjDbRF70STo5BBBAIAcC4drDR+MHns9hqMaIAAIIIIAAAggggAACCJRKQAKwVRqrNFZpElylkfzb9y7FIVcOksg019BcQyIhD/AAD/AAD/AAD/AAD/BAkh7QbEGzheqbLUhgGiqByXEkukl04xMe4AEe4AEe4AEe4AEe4IFNeKAv0myb2CzECwEEEEBg9wRCaD40GY8+s/uRGAECCCCAAAIIIIAAAgggUC8BCcASZutImHWdXedmheJzRbGKYhXFSiLkAR7gAR7gAR7gAR7gAR6o3gOSySSTSSbLLZnMeHmLt3iLB3iAB3iAB3iAB+rxgJ7Set7rLZ5gb/V66xDXPvPZ7zBrH8gBEEAAAQSGIxCaZ4/Go8eGO6AjIYAAAggggAACCCCAAAIILEtAArDVEKshVkMSXA2RfJtr8q1xp53cLIFMAlmSCWSadGjSsUqTDveN+8Z9E3vfuw/cB+4D84AHeKAcD2i2oNlC9c0WJIdJDpMctonkMPeV+8p95ecLD/AAD/AAD/AAD+TlgWULH70fAQQQQGDzBEJo/nkyHr1l89/kGxBAAAEEEEAAAQQQQAABBC4jIAFYsahiUcWi5RSL1jKfFcUqilUUK4mQB3iAB3iAB3iAB3iAB3igeg9I9JLoVU+ilwQ/8918N995gAd4gAd4gAd4gAdy84Be/Hrx68WfYC/+ROsnpf4memEMCwEEEJgjcO3OG+77yhd++D9AQQABBBBAAAEEEEAAAQQQ2A0BCcBWHaw6WHVIcNVBArAk3bSTdF2fYa+PBEMJjpKJg2YctTTxcJ6aD2k+xHc8wAM8wAM8kJcHNFvQbKH6Zgt5JUVJ9nK9JPxJ+OMBHuABHuABHuABHuCBfDzQl0q2TWxy4YUAAgggkDiBtvmFo4PRrcRHaXgIIIAAAggggAACCCCAQLEEJAArusur6M71cr0US6dbLK0oVlGsolhJhDzAAzzAAzzAAzzAAzzAA9V7QDKZZDLJZLklkxkvb/EWb/EAD/AAD/AAD/BAPR6QESAjQEbA7jMC4ibtbuuvnb/FFqQ6MQQQKI9ACO0HJuO9z5Z3Zs4IAQQQQAABBBBAAAEEEMiDgARgT/c93fd0f/dP981D89A8NA8T9IBkYsnEkoklE/MAD/AAD/AAD/AAD/AADyTpAc0WNFuovtlCPolWEugk0EmgM195gAd4gAd4gAd4gAd4YN4DfdMJLwQQQACBvAiEJnxhcrj/G3mN2mgRQAABBBBAAAEEEEAAgXIISACWKCtRVqJsuomy5qf5OcT8VBSrKFZRrCRCHuABHuABHuABHuABHuCB6j0g0UuiVz2JXhL8zHfz3XznAR7gAR7gAR7gAR7IzQMJ9kpu9PDWw3vI+7JrsGbnbzkVp84EAQSqIxBC843JePSO6k7cCSOAAAIIIIAAAggggAACiRCQADzk00pPvz39dj9JsuUBHuABHtiwBySQSSBLMoFM0w5NO4Zo2uE+ch+5jzRn4gEe4AEe4IG8PaDZgmYL1TdbkGwm2UzCoYRDHuABHuABHuABHuABHjjvgVgjafNvIpWihoEAAgisSCCE8PJkvH/vih/3MQQQQAABBBBAAAEEEEAAgTUJSABWVJZ3UZnr5/opDlYcnKsHFMUqilUUK4mQB3iAB3iAB3iAB3iAB3iAB6YekFAmoUxCWW4JZcbLW7zFWzzAAzzAAzzAAzxQvgf0vtb7etXe17GhcYyRFvq7ZmWnjyOAAAIJEXjl2uvf9LWn7nshoSEZCgIIIIAAAggggAACCCBQDQEJwJ5We1q96tNqn5P0yh/8wQM8wAMnHpBMLJlYMnHQlCPXphzGramQpkL8xQM8wAM8wANle0CzBc0WNFvQdIUHeIAHeIAHeIAHeIAHeIAHtuaBWHUp8bea2lMnigACFRFo7zY/f/PG6K8rOmWnigACCCCAAAIIIIAAAggkQ0ACsOKusou7XF/XVxGvIl4eWM4DFr8tflv83trid1z4Dnjj7T4wD3iAB3iAB3iAB3ggYQ9I9JLoVX6il+Q+89w8N895gAd4gAd4gAd4gAdy84AezWn2ao/3URNrdMT+JlMYaiAIIIDAwAR+/ehw9GcDH9PhEEAAAQQQQAABBBBAAAEEFiDQPvruF0MjwVCCoafjaT4dd11cF37mZx7gAR5YywOSiSUTSyaWTMwDPMADPMADPMADPMADPJCkB2z+T3jzf1+wrmkXDu4D84AHeIAHeIAHeIAHeIAHFvVA30zBCwEEEECgYAKh/dTRjb2PFHyGTg0BBBBAAAEEEEAAAQQQSJZAe/3dt0OSxS8SG5dLbMQLL0m3km55gAdq8IDiS8WnEvIUIfMAD/AAD/AAD/AAD/AAD1TvAQllEsoklOWWUGa8vMVbvMUDPMADPMADPMAD5Xugxt7eseYw7vy19zfZ2lADQwABBAYkEJ45Gu8/PuABHQoBBBBAAAEEEEAAAQQQQGBBAu0jEoAlC0oWXCtZUIJ2fIwfzCPzyH1gHvAAD/DAEh6QQCaBTBMmSYQ8wAM8wAM8wAM8wAM8wANJekCTBU0Wqm+ysGjCmfdJRJSIKBGRB3iAB3iAB3igbg/E2sR4D3ghgAACCNRBIITwd8c39n+mjrN1lggggAACCCCAAAIIIIBAWgTaRyUAS4ysITFSMqr73H0uIZkHeGCTHlAcqzhWcawkQh7gAR7gAR7gAR7gAR7ggeo9INFLolf5iV6S+8xz89w85wEe4AEe4AEe4AEeyM0DS/QwXigDIZ5/DAqw+TetIlCjQQABBDZOIDT/NLkx+vGNf48vQAABBBBAAAEEEEAAAQQQuEBAAvDQTzkdTwKkBEgJkDzAAzzAAzzAA5l6QAKZBLIkE8g08dDEY5NNPNxf7i/3l2ZRPMADPMADPJCHBzRZ0GSh+iYLEgYlDNadMOj6u/6SZv0c4AEe4IG0PKAGEwEEEECgPgIhNP99fGP0xvrO3BkjgAACCCCAAAIIIIAAArsn0D7y7tshduW7tIVf17Vv+mrjuxTFK4oP7gPzII+iMNfJdVLEy9e1e0BxrOJYxbGSCHmAB3iAB3iAB3iAB3iAB6r3gIQyCWUSynJLKDNe3uIt3uIBHuABHuABHuCBtDzQ1xbG+7LdfbWjESCAAAII7IzAq6/s3Xvri+3LOxuAL0YAAQQQQAABBBBAAAEEKiXQPvpE3AC8+Ov0IftsE+jp1uELG4njm/unf5IAJQFKAsw0CfDS5gDOh9d4jdd4gAd4gAe25AFNiDRh0oRJEyYe4AEe4AEe4AEe4AEe4IEkPaDJgiYL1TdZSCuJTjLg9q5Ht344v/9nbqdel9I5fXIaSwVm1+X8Py9eobDYO8985/z39188bQzU/eG0huFk3HP//uSZZ7/JyX21vfsKb/eb+Wa+8UCaHoh1f7b9Lvb7iHchgAACpRO4587rHrr5p/e/WPp5Oj8EEEAAAQQQQAABBBBAIDUCS28AXvUEugf1c48D5zOHTzcOT49+snFY4rCiJkVNSRY11Z6o6fwlC0sWlizMA+t5QNGUojHFsYoHeYAHeIAHeIAHeIAHeIAHeOBkI5Jkq7SSrVwP10PioMRBHug37XZNvqd/79p9T392r1ovkPPnOh7xNUs9nOczPbF+05r5Y/74OWoe8AAPlOSBflO6FwIIIIAAAjMCbdO+7Wi8921EEEAAAQQQQAABBBBAAAEEtktgaxuA1zqtELcIz28Zfq1E4b5z7+nC21Xv998lu0qmvpDafeU8M2/MG/PGvOEBHuABHuCBmQc069GsR7MeSYQ8wAM8wAM8wAM8wAM8wANJe0CzBc0WNFvQdOUKD8wn+dres1ZFw8mHTzYLd/uF+03B51/95jhJn5I+00z6dF1cF37i52nx3Unfi2F+QjoKAggggEAhBB6ZjEfPFXIuTgMBBBBAAAEEEEAAAQQQyIZAHhuAl8U53ZPQdRaN+4Lj4tr07xc2bMyvuLUShxUrKVZKulhJ4uZ6iZv44Se5WHIxD3x/DyiKVXSm6E5RLA/wAA/wAA/wAA/wAA/wAA9IJj4NvJTkKMlyPgDV/eB+yP5+OFkn79bEvVIkML95+Oz42uzvP4mgJSWCSrh1P7ufS0667n5faGP1mBcCCCCAAAIXCYSmeex4PHoWGwQQQAABBBBAAAEEEEAAge0SKHMD8JoMu26W3QaZ+Y3Ds4PO7y6eqwKRnDpHSzKgZEDJgBJCeYAHeIAHeIAHeGDXHtDcR3MfzX0kEvIAD/AAD/AAD/AAD/AADyTpAc0WNFvQbGFrTVe6FW6beNasHkjj4ydPW+d3nZ0bmuRWya2SWyW38gAPrOMBvzOk8TPfKBBAAIGUCYSmed/xePR0ymM0NgQQQAABBBBAAAEEEECgRAI2AA91Vef2N8RiirPF/nNf0iUOTzfESByWxCiJUSKrRFYe4AEe4AEeuMoDimIVxSqK3VpRrOIoxVHrFEe5f9w/7h9FtjzAAzzAAzywDQ9InJM4J3Gu5MQ59/cQ93e/Fh1ZetVHoEsQ7iZSPPez7c7731P8HOWZITzjPnIfuY9K9GksZfPrQ32/OzhjBBBAYFkCd5vmo8+NR59c9nPejwACCCCAAAIIIIAAAgggsB4BG4DX47f2p7uHwueW32Z/vpAad27z8K4TxXy/ZEPJhpINeYAHeIAHeIAHeIAHlvWABDIJZEkmkF3VjMF/17RF0xZNW3iAB3iAB3iAB3igfA9owqYJW8ZN2OKiddzg6YXAVQS6TcKzXV7dP5++NDPZRjMTTXPcZ+4zzbNS80C/qd8LAQQQQACBxQiEz07G+x9Y7L3ehQACCCCAAAIIIIAAAgggMBQBG4CHIrnl41y+cXi2SBc7+8618J1uM+4WUxSplF+kohjNfW6em+c8wAM8wAOb9oCiWEWxGRfFKjJTZKbILLUiM+PhJV7iJR7gAR7ggdw9IAlPEp4kvBKT8NK+r6drwm1steaFwLAETvuSz5of+jmXtg9cH9fH7yF+D1neA7MGvzb/Dvsz1NEQQACB0gmEJjxzPN5/vPTzdH4IIIAAAggggAACCCCAQGoEbABO7YpsYzxzIWVxM/BrJ3bFWOK5/9atHEu4k3An4c484AEe4AEe4AEe4AEeKNMDkok1i9IsK2iesenmGY6vSY8mPTzDAzzAAzzAAzywigc0YdOEba4JW7eUbNPvNlbUfcc5AidZwRf/oUuf1swk92Ymxu8+No9r8pjfJfyYRwABBBBYlUBowlePx/u/tOrnfQ4BBBBAAAEEEEAAAQQQQGA1AjYAr8atyk+9VurwhQ0wZ1KH4/qzInJF5IrIbSbhAR7gAR7gAR7YogcUmym2k0ys6JIHeIAHeIAHeIAHeIAHeIAHph5YPglMgp4EPQl6qc6bvimflL4ql+mzOemze4NP71leSdUrxuX3Hr/31Oen3tSxlssLAQQQQACBVQiEpnnueDx6ZJXP+gwCCCCAAAIIIIAAAggggMDqBGwAXp2dTy5IoOuS2XW1P81KO/3o9N+e2zjchQ1LHI4xzDi4D9wH5gEP8AAP8AAP8AAPVOwBTSQ0kdBEYotNJCTySeRbJZHPfeO+cd9IdOUBHuABHqjVA5otbLHZQr9JzwuBHAl0W81iLUC3/D+9kad/lrgqcbWmxFX3u/t99/e73ydy/DlqzAgggECCBP5yMh79SoLjMiQEEEAAAQQQQAABBBBAoGgCNgAXfXkzPrm5fcFXboKdLRhOu1QqjlYcbZOETRI8wAM8wAM8wAPJeUBR7BaLYoPEO/eb+03iHQ/wAA/wAA/wAA/wAA8k7QGJgxIHJQ4ukjjYr5FK6ct4xdvQryBw0gr7TLPwfpMwT/LkIp50n7hP3CdX+9LvE34cI4AAAggMSSA0zbPH49FjQx7TsRBAAAEEEEAAAQQQQAABBK4mYAPw1Yy8IycC84HC05y0SzcQz20cljgsaVjidFxMdx+4D9wH5gEP8AAP8AAP8MBiHkhuk32tiVvOW+KgxEGJgzzAAzzAAzzAAzzAAzxw1gNJb35fvGlZfD4h9TenRWpjHZpATMo82QXcL+afrP5LUpWkuvsk1cV97n51v+7yfu0bKswcOrSpHQ8BBBBAoFICX5qMR++q9NydNgIIIIAAAggggAACCCCwMwI2AO8MvS9OjkCI2z3Op+XNRjnbCBHXFU83RXSLNYprFNcorjEPeIAHeIAHeIAHcvVAIUWxiqgUUe2yiMr95/5z/yl65QEe4AEe4AEe4IFSPHB1gpqkQUmD20gajHsdbdVJbiXZgBIj0G0QPnn1G+a3MT99D87uM78v5eGBvomC3ycS++FlOAgggEABBELTPH08Hr2vgFNxCggggAACCCCAAAIIIIBAVgRsAM7qchlskgTObRw+uyQ/l6DWrUFO07S6p+yLJWt5H06SCCUR8gAP8AAP8AAP8AAP8MBiHpBMrEmVJl3nG5v5My/wAi/wAA/wAA/wAA/wQBIeWLAJW7eCKKkvySVhg8qDwPzGYE1aNGnRpKWUJi3OY1mf+X0ij59ZRokAAgjkSCA0zWeOx6MP5Th2Y0YAAQQQQAABBBBAAAEEciZgA3DOV8/YsyZw2hl2VnwTT+eSjQ3TDsYShxWpJFGkkmvCoXFLaJXQKqGVB3iAB/LxwIJFscsWvXi/oj9Ff4rleIAHeIAHeIAHeIAHeIAH8vOApL08kvbWv05xndDm36yXfw0+QQLzq+9dRPA0D7MWrzhPicUSi9f/+ZzVPDqxXIJCNiQEEEAAgVIIfHIyHn20lJNxHggggAACCCCAAAIIIIBALgRsAM7lShknAvMELk0dni5azq/ixEXMVmKaxLTFEtNwwknCJF/yAA/wAA/wAA/wwPAekDimmZNmTpIHeYAHeIAHeIAHeIAHeIAHvp8H4jKgzb+WgxHYHoH5pODZ81BNQjQJya9JiOY+5m0/bzuP9X95IYAAAgggsFECd5vm954bj/5wo1/i4AgggAACCCCAAAIIIIAAAhcI2ADspkCgJgKvuXE4LgbEV3u2/e200EBRkqIkRUmKkniAB3iAB3iAB3hg6gHJxF0xkaIqxZDuA/OAB3iAB3iAB3iAB3iAB3hAouBwiYLdKp0dOzWt2DrXhAl0G+lmcZ8n42xP/lVWSaBzp2LckoD93B7u53Zq86lr6NnGVRwvBBBAAAEENk/gbtM+/tx475nNf5NvQAABBBBAAAEEEEAAAQQQmCdgA7D7AQEELicwHyjcnM0Bu5AKdmbFqCtVOPcJf5akNnySmvvMvDKvzCse4AEe4AEe4AEeWN0DNvdr8qHJhyYfPMADPMADPMADPMADPJCAByT2Wa1FIGkCs3bacY/dmWKbrr+2piCagmgKYh7szgNdZY4uIkn/DDE4BBBAoDQCrzbXHr41fuD50s7L+SCAAAIIIIAAAggggAACqROwATj1K2R8CORIYMWNw93iYKPYRrGN+8A84AEe4AEe4AEe4IGlPCCZWLGlYlPJ1DzAAzzAAzzAAzzAAzzAAzww9UBuCX/9piEvBBDIj0C3H3jOvadnIDE4tYRU45GAXF4Cct+RwO8Q+f3sMGIEEEAgdwJtE958NN7/l9zPw/gRQAABBBBAAAEEEEAAgdwI2ACc2xUzXgQqINB1iG36TR99otv5V5iGfHVtladvkXwm+Wz15DPJgeaP+WP+8AAP8AAP8AAP8EA6HtAEQROEpZogTJ8fuG/cN+4bTXR4gAd4gAd4gAdy9EDTxjvXCwEESiNwJjW4e+y2u4RQCb0SeiX0ljb/+mYnXggggAACCGybQAhNOL6xd61p2pNfd7c9Bt+HAAIIIIAAAggggAACCNRKwAbgWq+880agNAJzteqnG4cvKWDv2zH3neAlDp9stlYc5X4wHxRJ8gAP8AAP8AAPbMQDksgkkSlylUjIAzzAAzzAAzzAAzzAAzzAAxcSimdrVaUt2TkfBBC4nEDciHn6khQsmVcyb3nJvP3m3E2eV+wcYv+vnzQIIIAAArshEF6YjPfftJvv9q0IIIAAAggggAACCCCAQN0EbACu+/o7ewSqJzALEL64VXi2+DqXhDa/INu1VE0nIUtinevhfjQfeYAHeIAHeIAHeIAHeGCzHtAkQZOEjTRJkGCsOZvmdJrT8QAP8AAP8EDdHhDhV/1aJQAIzAj0S9GnG4Ql90ruldxbWnLvMOfDmggggAACCOyKQAjhb49v7P/srr7f9yKAAAIIIIAAAggggAACNROwAbjmq+/cEUBgPQKLpg6fbeSsmEkxU93FTK6/66+o1c8BHuABHuCBVDwggUwCmQQySYQ8wAM8wAM8wAM8wAM8wAM79sB6C1U+jQACJRPo0oK7KNHTs9x0sqjjbza5FV98100GLtl5zg0BBBBAIH0CIYQvH9/Yf2f6IzVCBBBAAAEEEEAAAQQQQKA8Av8PjtvoPAhEwakAAAAASUVORK5CYII='
var __glob_3_12 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: login_pic,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var defaultImg =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFwAAABOCAYAAACt8XHIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDA2IDc5LjE2NDY0OCwgMjAyMS8wMS8xMi0xNTo1MjoyOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIyLjIgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjY5Njg1OTY5QkI5RTExRUNBQjcwQjU5OUI4NkMyRTlFIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjY5Njg1OTZBQkI5RTExRUNBQjcwQjU5OUI4NkMyRTlFIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6Njk2ODU5NjdCQjlFMTFFQ0FCNzBCNTk5Qjg2QzJFOUUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Njk2ODU5NjhCQjlFMTFFQ0FCNzBCNTk5Qjg2QzJFOUUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7sPXJkAAAL2klEQVR42uycaWwc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'
var __glob_3_14 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: defaultImg,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var normal =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAAXNSR0IArs4c6QAABSJJREFUeF7t1bERwDAMxLB4/6UzgV2wfaRXIci8nM9HgMBV4LAhQOAuIBCvg8BDQCCeBwGBeAMEmoA/SHMzNSIgkJFDW7MJCKS5mRoREMjIoa3ZBATS3EyNCAhk5NDWbAICaW6mRgQEMnJoazYBgTQ3UyMCAhk5tDWbgECam6kRAYGMHNqaTUAgzc3UiIBARg5tzSYgkOZmakRAICOHtmYTEEhzMzUiIJCRQ1uzCQikuZkaERDIyKGt2QQE0txMjQgIZOTQ1mwCAmlupkYEBDJyaGs2AYE0N1MjAgIZObQ1m4BAmpupEQGBjBzamk1AIM3N1IiAQEYObc0mIJDmZmpEQCAjh7ZmExBIczM1IiCQkUNbswkIpLmZGhEQyMihrdkEBNLcTI0ICGTk0NZsAgJpbqZGBAQycmhrNgGBNDdTIwICGTm0NZuAQJqbqREBgYwc2ppNQCDNzdSIgEBGDm3NJiCQ5mZqREAgI4e2ZhMQSHMzNSIgkJFDW7MJCKS5mRoREMjIoa3ZBATS3EyNCAhk5NDWbAICaW6mRgQEMnJoazYBgTQ3UyMCAhk5tDWbgECam6kRAYGMHNqaTUAgzc3UiIBARg5tzSYgkOZmakRAICOHtmYTEEhzMzUiIJCRQ1uzCQikuZkaERDIyKGt2QQE0txMjQgIZOTQ1mwCAmlupkYEBDJyaGs2AYE0N1MjAgIZObQ1m4BAmpupEQGBjBzamk1AIM3N1IiAQEYObc0mIJDmZmpEQCAjh7ZmExBIczM1IiCQkUNbswkIpLmZGhEQyMihrdkEBNLcTI0ICGTk0NZsAgJpbqZGBAQycmhrNgGBNDdTIwICGTm0NZuAQJqbqREBgYwc2ppNQCDNzdSIgEBGDm3NJiCQ5mZqREAgI4e2ZhMQSHMzNSIgkJFDW7MJCKS5mRoREMjIoa3ZBATS3EyNCAhk5NDWbAICaW6mRgQEMnJoazYBgTQ3UyMCAhk5tDWbgECam6kRAYGMHNqaTUAgzc3UiIBARg5tzSYgkOZmakRAICOHtmYTEEhzMzUiIJCRQ1uzCQikuZkaERDIyKGt2QQE0txMjQgIZOTQ1mwCAmlupkYEBDJyaGs2AYE0N1MjAgIZObQ1m4BAmpupEQGBjBzamk1AIM3N1IiAQEYObc0mIJDmZmpEQCAjh7ZmExBIczM1IiCQkUNbswkIpLmZGhEQyMihrdkEBNLcTI0ICGTk0NZsAgJpbqZGBAQycmhrNgGBNDdTIwICGTm0NZuAQJqbqREBgYwc2ppNQCDNzdSIgEBGDm3NJiCQ5mZqREAgI4e2ZhMQSHMzNSIgkJFDW7MJCKS5mRoREMjIoa3ZBATS3EyNCAhk5NDWbAICaW6mRgQEMnJoazYBgTQ3UyMCAhk5tDWbgECam6kRAYGMHNqaTUAgzc3UiIBARg5tzSYgkOZmakRAICOHtmYTEEhzMzUiIJCRQ1uzCQikuZkaERDIyKGt2QQE0txMjQgIZOTQ1mwCAmlupkYEBDJyaGs2AYE0N1MjAgIZObQ1m4BAmpupEQGBjBzamk1AIM3N1IiAQEYObc0mIJDmZmpEQCAjh7ZmExBIczM1IiCQkUNbswkIpLmZGhEQyMihrdkEBNLcTI0ICGTk0NZsAgJpbqZGBAQycmhrNgGBNDdTIwICGTm0NZuAQJqbqREBgYwc2ppNQCDNzdSIgEBGDm3NJiCQ5mZqREAgI4e2ZhMQSHMzNSIgkJFDW7MJCKS5mRoR+AErVADJkrjltgAAAABJRU5ErkJggg=='
var __glob_3_15 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: normal,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var resourceEmpty =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAABSCAYAAAC4/ZFqAAAAAXNSR0IArs4c6QAABIhJREFUeF7tnc1y0zAQx1d23DQfbRqGd+AI0xlmYMrADBf6BLwFr8CBKyfejr4DQ6Fp4qaObWaVyDiObVlObG3c9SU0Xlvr/emv1UouFZevP36PwvBLDHEf+CATAQEicFz3h3h1+eExhtgj4xk7kkRAgFiKl5fvY44J3QgwILpspGcMiAERjwBx91hBDIh4BIi7xwpiQMQjQNw9VhADIh4B4u6xghgQ8QgQd48VxICIR4C4e6wgBkQ8AsTdYwUxIOIRIO6eePvumndUCUNiQIThyB1VVhBtQgyINh9WEHE+DKhzgDzvBAanp9DruVafLYxCWCweIAgerfrRdOPGOWgyOQfXsQtHBWW1CuFudtd0jKze3xjQs+nUqsPZxn/f3m59Nb24ACEExPG6vCv7RLsoirbsozgGoa7D+0QRQMH90K6OvUkAOwcIO1ACZU0Ikkpc/bsIXh37kk6Q7iB5naUKqM4BqqSgjDJ2lJANeoGSTBWkIKUVroPUOUBbCtooRdeTixSnvk9UqJSXUVp2GM21z1GaDk6tlYQu5iCVY0wVUds+ldN0kLqtoDo5pWrOUkFO2e8oKaUazkGbrthGDkorR83i5KfB7DEZPjUS6raC6uSgdK9PzfrkTLBGDtqZQWZU9eSGON0DH9v5zino2ADo/GVAughZPs+ALAPQNc+AdBGyfJ4BWQaga75zgLgOIr7dsPdaHNdBOlGbnef9oEy8qC+W8n4Q8SGujRyU7OsY7qjyfhAA7J2DclaneT/ILO1sWR8iB/F+0B4AdJdmAbWWg3g/SIdmfT4LqNpVx2PVuUL1eEJfzVMGVC1O1qwYkLXQV2vYGNDkfAKu61S7e8NWq9UK7mazhluxe3tjQOuX5/vQ6/Wseh6GESx8n1+et0qBG+ffD6LeB4yHOOoP1DX/GBBxop0DhKvZ+NYmvumJi5z4+z/48iB+5v0c4veGLxOiPbaDh7y+QjvoD/pV9Y1S1W86C0hBkkFBSBtoeT9LeIYHrvlJ+CX33WmXAqAgCMB1XXAcO7WSVFCJYooUZdqz22rn4Ar6c/sLHMeF4WgMvV77f1SlrZ6thlITBdVRaiOA1GgxGI6h3z/VDh7z+QyCxyV4Xh9G4zNpjw9zP/sLURRC1fuo3KDGehm8shyEOSQM98tBm+vL2kn7Y6rURgHhk2PQB8NR4ZC3WgUShDpG4wl4ngdLfwH+wyL5/mL6XAs6CyhJzJyD/scOh7jsUTbkYc6a3+8C8v0FLGsAqkTxiIwaV1A6FsPRGZycbP8lNgZU3lsYEHE1tQLIcV0YDvNndawgywryTvowGBRPEg4NqK36pK12GlVQlenxoQFxHaQZs2WhWjKkZS/PTrPHZxNZ4B5ims11UA6sOks9OKVGUAhmMBgmharvz2WhicVudvZX1E/aqvDbUurBhzjbkyLjVebNSoNphW+ag+qumncOUK2evYFk0rmm+L9qGa5mk1iLM3lIttVHoHMK0j/ycVkwIOK8GBB5QFfXP0HAC+J+Pk33YrgRb64+fRYgvjEkYn0ghpsY4q//AC1FmGgzgIdUAAAAAElFTkSuQmCC'
var __glob_3_16 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: resourceEmpty,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var xuxian1 =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAAAMCAYAAAAXgSFYAAAAAXNSR0IArs4c6QAAAGRJREFUWEft00EKgDAMRNHOycWTR4QuRESo+Dfhd9mGoX1JM1yYQLBkg4e44BCIKy4oAEYvTW5Vbfe7JNmve08153nXurfeiDt1vjb/N1zwB7WMXprclgLgo8QVFxQAo51cEPcAfIY4DeEgG80AAAAASUVORK5CYII='
var __glob_3_17 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: xuxian1,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var xuxian1_2x =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAK4AAAAYCAYAAABjn8aGAAAAAXNSR0IArs4c6QAAAMpJREFUeF7t1MEKwjAQRdHm/z86rlwIouFBmT44rpvOcHLruvwIFAqswp2tTOASrggqBYRbeW2WFq4GKgWEW3ltlhauBioFhFt5bZYWrgYqBYRbeW2WFq4GKgVuC3fvvU9E1lo/dzh9z3uW932qP93vpJFvzwj3j5wP4d4P4XHhpgs5R+BE4LZ/3JPhniGQCgg3lXNuVEC4o/yGpwLCTeWcGxUQ7ii/4amAcFM550YFhDvKb3gqINxUzrlRAeGO8hueCgg3lXNuVOAF45Y4GUZWh4wAAAAASUVORK5CYII='
var __glob_3_18 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: xuxian1_2x,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var xuxian2 =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAAAMCAYAAAAXgSFYAAAAAXNSR0IArs4c6QAAAHFJREFUWEft0rENwCAMBMD/jbIJsyaLJBuZhiJSCt4orngaZIFf6DDhVSbAsmQHw7iFQ2Bc4xYKFEbLkxsRB4A23nKOfdua5DP7l1XcC0C8sLerSd6/4c6CfP4VkCfXeHkB4+bN5A7jylT5i8bNm8kdHTLFOg1cV497AAAAAElFTkSuQmCC'
var __glob_3_19 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: xuxian2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var xuxian2_2x =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAK4AAAAYCAYAAABjn8aGAAAAAXNSR0IArs4c6QAAAMlJREFUeF7t1EEKwkAQRNHpe+np1XNFdCnoKhUs8rLMQNO8+cksD4FCgSnc2coElnBFUCkg3Mprs7RwNVApINzKa7O0cDVQKSDcymuztHA1UCkg3Mprs7RwNVApEAl327bbWuvyIXKfmevrnfNz++zxpRwZ7mNm3jF/Cdf5SXz+Ntw9FjODwC+ByB8XOYG0gHDTwuZHBIQbYTU0LSDctLD5EQHhRlgNTQsINy1sfkRAuBFWQ9MCwk0Lmx8REG6E1dC0gHDTwuZHBJ7EoaoZDa7W1wAAAABJRU5ErkJggg=='
var __glob_3_20 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: xuxian2_2x,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var zhixian_ =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAAAMCAYAAAAXgSFYAAAAAXNSR0IArs4c6QAAAF5JREFUWEft0jEKwDAMQ9Ho5KUnd/ZOQlRDyPdsC/GwFlMTUC2Z4AVu8QnABbcoUIy2P3dmnmKPo6IlvU5hcB2lz87vuEGH60/sz71eKgAAN0BzT8B1pYI9cAM092QD+k4IDamYBJgAAAAASUVORK5CYII='
var __glob_3_21 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: zhixian_,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var zhixian__2x =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAK4AAAAYCAYAAABjn8aGAAAAAXNSR0IArs4c6QAAALBJREFUeF7t1IEJxDAMxdB6/6Fz3A4pVPh1gCB/ic7js0BwgQkyQ7bAI1wRJBcQblIbaOFqILmAcJPaQAtXA8kFhJvUBlq4GkguINykNtDC1UBygevhnnNOcgnQry4wM1dbu/rY/3Lhvuo/+/jnw80uCzy1wPU/bup6sNkFhJtVtxtcuLv9Z68XblbdbnDh7vafvV64WXW7wYW723/2euFm1e0GF+5u/9nrhZtVtxv8ByFjCBm3XNeOAAAAAElFTkSuQmCC'
var __glob_3_22 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: zhixian__2x,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ___1188____5 =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAADVJREFUSEvt0rEJAAAMAkHdf2lH+MruU0uEw+Z8Pf+PBSgskUQogAFXJBEKYMAVSYQCGLivaHrEABkDr5mAAAAAAElFTkSuQmCC'
var __glob_3_23 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ___1188____5,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ___1188____5_2x =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAIVJREFUaEPt0rENACAMxMBk/6UZ4goUyfR+gc3O8bPH7z894HfBClQADfSFUCDjFWCFOFABFMh4BVghDlQABTJeAVaIAxVAgYxXgBXiQAVQIOMVYIU4UAEUyHgFWCEOVAAFMl4BVogDFUCBjFeAFeJABVAg4xVghThQARTIeAVYIQ6cL/AAmvUAMfJYo3UAAAAASUVORK5CYII='
var __glob_3_24 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ___1188____5_2x,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var moduleAppearance_vue_vue_type_style_index_0_lang = ''
var moduleAppearance_vue_vue_type_style_index_1_scoped_true_lang = ''
const _withScopeId$y = (n2) => (
pushScopeId('data-v-4d96b4c6'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$U = { class: 'appearance' }
const _hoisted_2$O = { class: 'appearance_wrap' }
const _hoisted_3$K = { key: 0 }
const _hoisted_4$D = /* @__PURE__ */ _withScopeId$y(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'appearance_title' },
'\u586B\u5145',
-1
)
)
const _hoisted_5$y = { class: 'cms-el-color-picker-x appearance_picker' }
const _hoisted_6$t = { key: 1 }
const _hoisted_7$p = /* @__PURE__ */ _withScopeId$y(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'appearance_title' },
'\u8FB9\u6846',
-1
)
)
const _hoisted_8$o = { class: 'cms-el-color-picker-x appearance_picker' }
const _hoisted_9$o = { class: 'appearance_input' }
const _hoisted_10$n = { class: 'input_number' }
const _hoisted_11$k = { class: 'input_select' }
const _hoisted_12$k = { class: 'opt_img' }
const _hoisted_13$i = ['src']
const _hoisted_14$g = { key: 1 }
const _hoisted_15$g = { key: 2 }
const _hoisted_16$g = /* @__PURE__ */ _withScopeId$y(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'appearance_title' },
'\u9634\u5F71',
-1
)
)
const _hoisted_17$f = /* @__PURE__ */ _withScopeId$y(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'appearance_icon' },
null,
-1
)
)
const _hoisted_18$e = /* @__PURE__ */ _withScopeId$y(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u5916\u90E8', -1)
)
const _hoisted_19$c = [_hoisted_17$f, _hoisted_18$e]
const _hoisted_20$b = { class: 'shadow_item' }
const _hoisted_21$8 = { class: 'item_top_wrap' }
const _hoisted_22$8 = /* @__PURE__ */ _withScopeId$y(() =>
/* @__PURE__ */ createElementVNode(
'div',
null,
'\u6C34\u5E73\u504F\u79FB\uFF1A',
-1
)
)
const _hoisted_23$5 = { class: 'item_bottom_wrap' }
const _hoisted_24$5 = { class: 'shadow_item' }
const _hoisted_25$4 = { class: 'item_top_wrap' }
const _hoisted_26$4 = /* @__PURE__ */ _withScopeId$y(() =>
/* @__PURE__ */ createElementVNode(
'div',
null,
'\u5782\u76F4\u504F\u79FB\uFF1A',
-1
)
)
const _hoisted_27$4 = { class: 'item_bottom_wrap' }
const _hoisted_28$3 = { class: 'shadow_item' }
const _hoisted_29$2 = { class: 'item_top_wrap' }
const _hoisted_30$2 = /* @__PURE__ */ _withScopeId$y(() =>
/* @__PURE__ */ createElementVNode(
'div',
null,
'\u9634\u5F71\u5C3A\u5BF8\uFF1A',
-1
)
)
const _hoisted_31$2 = { class: 'item_bottom_wrap' }
const _hoisted_32$2 = { class: 'shadow_item' }
const _hoisted_33$2 = { class: 'item_top_wrap' }
const _hoisted_34$1 = /* @__PURE__ */ _withScopeId$y(() =>
/* @__PURE__ */ createElementVNode(
'div',
null,
'\u6A21\u7CCA\u5EA6\uFF1A',
-1
)
)
const _hoisted_35$1 = { class: 'item_bottom_wrap' }
const _hoisted_36$1 = { class: 'shadow_item' }
const _hoisted_37$1 = /* @__PURE__ */ _withScopeId$y(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'item_top_wrap' },
[
/* @__PURE__ */ createElementVNode('div', null, '\u989C\u8272\uFF1A'),
/* @__PURE__ */ createElementVNode('div'),
],
-1
)
)
const _hoisted_38$1 = {
class: 'cms-el-color-picker-x item_bottom_wrap color_bottom',
}
const _hoisted_39 = /* @__PURE__ */ _withScopeId$y(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'appearance_icon' },
null,
-1
)
)
const _hoisted_40 = /* @__PURE__ */ _withScopeId$y(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u5185\u90E8', -1)
)
const _hoisted_41 = [_hoisted_39, _hoisted_40]
const _hoisted_42 = { class: 'shadow_item' }
const _hoisted_43 = { class: 'item_top_wrap' }
const _hoisted_44 = /* @__PURE__ */ _withScopeId$y(() =>
/* @__PURE__ */ createElementVNode(
'div',
null,
'\u6C34\u5E73\u504F\u79FB\uFF1A',
-1
)
)
const _hoisted_45 = { class: 'item_bottom_wrap' }
const _hoisted_46 = { class: 'shadow_item' }
const _hoisted_47 = { class: 'item_top_wrap' }
const _hoisted_48 = /* @__PURE__ */ _withScopeId$y(() =>
/* @__PURE__ */ createElementVNode(
'div',
null,
'\u5782\u76F4\u504F\u79FB\uFF1A',
-1
)
)
const _hoisted_49 = { class: 'item_bottom_wrap' }
const _hoisted_50 = { class: 'shadow_item' }
const _hoisted_51 = { class: 'item_top_wrap' }
const _hoisted_52 = /* @__PURE__ */ _withScopeId$y(() =>
/* @__PURE__ */ createElementVNode(
'div',
null,
'\u9634\u5F71\u5C3A\u5BF8\uFF1A',
-1
)
)
const _hoisted_53 = { class: 'item_bottom_wrap' }
const _hoisted_54 = { class: 'shadow_item' }
const _hoisted_55 = { class: 'item_top_wrap' }
const _hoisted_56 = /* @__PURE__ */ _withScopeId$y(() =>
/* @__PURE__ */ createElementVNode(
'div',
null,
'\u6A21\u7CCA\u5EA6\uFF1A',
-1
)
)
const _hoisted_57 = { class: 'item_bottom_wrap' }
const _hoisted_58 = { class: 'shadow_item' }
const _hoisted_59 = /* @__PURE__ */ _withScopeId$y(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'item_top_wrap' },
[
/* @__PURE__ */ createElementVNode('div', null, '\u989C\u8272\uFF1A'),
/* @__PURE__ */ createElementVNode('div'),
],
-1
)
)
const _hoisted_60 = {
class: 'cms-el-color-picker-x item_bottom_wrap color_bottom',
}
const _hoisted_61 = { key: 3 }
const _hoisted_62 = /* @__PURE__ */ _withScopeId$y(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'appearance_title' },
'\u5706\u89D2',
-1
)
)
const _hoisted_63 = { style: { width: '60px' } }
const _sfc_main$Z = /* @__PURE__ */ defineComponent({
props: {
styleData: {
type: Object,
default: () => {},
},
appearanceTitle: {
type: String,
default: '\u5916\u89C2',
},
},
emits: ['transformData'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const showBorderRow = ref(true)
watchEffect(() => {
let keys3 = Object.keys(props2.styleData)
let borderRow = ['borderColor', 'borderRadius', 'borderStyle']
if (keys3.length > 0) {
showBorderRow.value = keys3.some((key2) => borderRow.includes(key2))
}
})
const changeData = (prop, value2) => {
value2 = value2 === void 0 ? 0 : value2
if (props2.appearanceTitle === '\u5916\u89C2') {
emit2('transformData', prop, value2)
}
if (
props2.appearanceTitle === '\u8F93\u5165\u6846\u5916\u89C2\u6837\u5F0F'
) {
emit2('transformData', 'inputStyle', value2, prop)
}
if (props2.appearanceTitle === '\u6309\u94AE\u5916\u89C2\u6837\u5F0F') {
emit2('transformData', 'buttonStyle', value2, prop)
}
}
const getImgSrc = (name2) => {
const path = `../../assets/images/${name2}.png`
const modules2 = {
'../../assets/images/404.png': __glob_3_0,
'../../assets/images/404_cloud.png': __glob_3_1,
'../../assets/images/Exterior.png': __glob_3_2,
'../../assets/images/Exterior@2x.png': __glob_3_3,
'../../assets/images/Inside.png': __glob_3_4,
'../../assets/images/Inside@2x.png': __glob_3_5,
'../../assets/images/Selected.png': __glob_3_6,
'../../assets/images/Selected@2x.png': __glob_3_7,
'../../assets/images/Straight line.png': __glob_3_8,
'../../assets/images/Straight line@2x.png': __glob_3_9,
'../../assets/images/defultImg.png': __glob_3_10,
'../../assets/images/keyboard-down.png': __glob_3_11,
'../../assets/images/login_pic.png': __glob_3_12,
'../../assets/images/logo.png': __glob_3_13,
'../../assets/images/noImage.png': __glob_3_14,
'../../assets/images/normal.png': __glob_3_15,
'../../assets/images/resource-empty.png': __glob_3_16,
'../../assets/images/xuxian1.png': __glob_3_17,
'../../assets/images/xuxian1@2x.png': __glob_3_18,
'../../assets/images/xuxian2.png': __glob_3_19,
'../../assets/images/xuxian2@2x.png': __glob_3_20,
'../../assets/images/zhixian .png': __glob_3_21,
'../../assets/images/zhixian @2x.png': __glob_3_22,
'../../assets/images/\u77E9\u5F62 1188 \u62F7\u8D1D 5.png': __glob_3_23,
'../../assets/images/\u77E9\u5F62 1188 \u62F7\u8D1D 5@2x.png':
__glob_3_24,
}
return modules2[path].default
}
const opts = ref([
{
label: '\u65E0\u8FB9\u6846',
src: '',
value: 'none',
},
{
label: '\u76F4\u7EBF',
src: getImgSrc('zhixian @2x'),
value: 'solid',
},
{
label: '\u865A\u7EBF',
src: getImgSrc('xuxian1@2x'),
value: 'dashed',
},
{
label: '\u5706\u70B9',
src: getImgSrc('xuxian2@2x'),
value: 'dotted',
},
])
const changeExternalValue = (value2, type4) => {
if (props2.appearanceTitle === '\u5916\u89C2') {
emit2('transformData', 'external', value2, type4)
}
if (
props2.appearanceTitle === '\u8F93\u5165\u6846\u5916\u89C2\u6837\u5F0F'
) {
emit2('transformData', 'external', value2, type4, 'inputStyle')
}
if (props2.appearanceTitle === '\u6309\u94AE\u5916\u89C2\u6837\u5F0F') {
emit2('transformData', 'external', value2, type4, 'buttonStyle')
}
}
const changeIntervalValue = (value2, type4) => {
if (props2.appearanceTitle === '\u5916\u89C2') {
emit2('transformData', 'internal', value2, type4)
}
if (
props2.appearanceTitle === '\u8F93\u5165\u6846\u5916\u89C2\u6837\u5F0F'
) {
emit2('transformData', 'internal', value2, type4, 'inputStyle')
}
if (props2.appearanceTitle === '\u6309\u94AE\u5916\u89C2\u6837\u5F0F') {
emit2('transformData', 'internal', value2, type4, 'buttonStyle')
}
}
const activeItem = ref(['1'])
const outterShow = ref(false)
const innerShow = ref(false)
const outterWrap = ref()
const innerWrap = ref()
const showOutter = () => {
outterShow.value = true
nextTick(() => {
let colorPicker = document.getElementsByClassName('outter_picker')
outterWrap.value.appendChild(colorPicker[0])
})
}
const showInner = () => {
innerShow.value = true
nextTick(() => {
let colorPicker = document.getElementsByClassName('inner_picker')
innerWrap.value.appendChild(colorPicker[0])
})
}
return (_ctx, _cache) => {
const _component_el_color_picker = resolveComponent('el-color-picker')
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_slider = resolveComponent('el-slider')
const _component_el_popover = resolveComponent('el-popover')
const _component_el_collapse_item = resolveComponent('el-collapse-item')
const _component_el_collapse = resolveComponent('el-collapse')
return (
openBlock(),
createElementBlock('div', _hoisted_1$U, [
createVNode$1(
_component_el_collapse,
{
class: 'cms-el-collapse-x',
modelValue: activeItem.value,
'onUpdate:modelValue':
_cache[17] ||
(_cache[17] = ($event) => (activeItem.value = $event)),
},
{
default: withCtx(() => [
createVNode$1(
_component_el_collapse_item,
{
title: __props2.appearanceTitle,
name: '1',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$O, [
'backgroundColor' in props2.styleData
? (openBlock(),
createElementBlock('div', _hoisted_3$K, [
_hoisted_4$D,
createElementVNode('div', _hoisted_5$y, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
'model-value':
props2.styleData.backgroundColor,
onChange:
_cache[0] ||
(_cache[0] = ($event) =>
changeData('backgroundColor', $event)),
},
null,
8,
['model-value']
),
]),
]))
: createCommentVNode('', true),
showBorderRow.value
? (openBlock(),
createElementBlock('div', _hoisted_6$t, [
_hoisted_7$p,
createElementVNode('div', _hoisted_8$o, [
createVNode$1(
_component_el_color_picker,
{
'model-value': props2.styleData.borderColor,
onChange:
_cache[1] ||
(_cache[1] = ($event) =>
changeData('borderColor', $event)),
},
null,
8,
['model-value']
),
]),
createElementVNode('div', _hoisted_9$o, [
createElementVNode('div', _hoisted_10$n, [
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
'controls-position': 'right',
'model-value':
props2.styleData.borderWidth,
onInput:
_cache[2] ||
(_cache[2] = ($event) =>
changeData('borderWidth', $event)),
},
null,
8,
['model-value']
),
]),
createElementVNode('div', _hoisted_11$k, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
'model-value':
props2.styleData.borderStyle,
onChange:
_cache[3] ||
(_cache[3] = ($event) =>
changeData('borderStyle', $event)),
placeholder: '\u8BF7\u9009\u62E9',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(opts.value, (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
{
default: withCtx(() => [
createElementVNode(
'div',
_hoisted_12$k,
[
item2.src !== ''
? (openBlock(),
createElementBlock(
'img',
{
key: 0,
src: item2.src,
},
null,
8,
_hoisted_13$i
))
: (openBlock(),
createElementBlock(
'span',
_hoisted_14$g,
toDisplayString$1(
item2.label
),
1
)),
]
),
]),
_: 2,
},
1032,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['model-value']
),
]),
]),
]))
: createCommentVNode('', true),
'boxShadow' in props2.styleData
? (openBlock(),
createElementBlock('div', _hoisted_15$g, [
_hoisted_16$g,
createVNode$1(
_component_el_popover,
{
placement: 'top',
'popper-class': 'shadow_popover',
width: 120,
'show-arrow': false,
trigger: 'click',
onHide:
_cache[9] ||
(_cache[9] = ($event) =>
(outterShow.value = false)),
},
{
reference: withCtx(() => [
createElementVNode(
'div',
{
class: normalizeClass([
'appearance_shadow',
{
appearance_choice: outterShow.value,
},
]),
onClick: showOutter,
},
_hoisted_19$c,
2
),
]),
default: withCtx(() => [
createElementVNode(
'div',
{
class: 'shadow_wrap',
ref_key: 'outterWrap',
ref: outterWrap,
},
[
createElementVNode(
'div',
_hoisted_20$b,
[
createElementVNode(
'div',
_hoisted_21$8,
[
_hoisted_22$8,
createElementVNode(
'div',
null,
toDisplayString$1(
parseInt(
props2.styleData
.boxShadow &&
props2.styleData
.boxShadow.external &&
props2.styleData
.boxShadow.external
.horizontal
)
),
1
),
]
),
createElementVNode(
'div',
_hoisted_23$5,
[
createVNode$1(
_component_el_slider,
{
class: 'cms-el-slider-x',
'model-value': parseInt(
props2.styleData
.boxShadow &&
props2.styleData
.boxShadow.external &&
props2.styleData
.boxShadow.external
.horizontal
),
onInput:
_cache[4] ||
(_cache[4] = ($event) =>
changeExternalValue(
$event,
'horizontal'
)),
},
null,
8,
['model-value']
),
]
),
]
),
createElementVNode(
'div',
_hoisted_24$5,
[
createElementVNode(
'div',
_hoisted_25$4,
[
_hoisted_26$4,
createElementVNode(
'div',
null,
toDisplayString$1(
parseInt(
props2.styleData
.boxShadow &&
props2.styleData
.boxShadow.external &&
props2.styleData
.boxShadow.external
.vertical
)
),
1
),
]
),
createElementVNode(
'div',
_hoisted_27$4,
[
createVNode$1(
_component_el_slider,
{
class: 'cms-el-slider-x',
'model-value': parseInt(
props2.styleData
.boxShadow &&
props2.styleData
.boxShadow.external &&
props2.styleData
.boxShadow.external
.vertical
),
onInput:
_cache[5] ||
(_cache[5] = ($event) =>
changeExternalValue(
$event,
'vertical'
)),
},
null,
8,
['model-value']
),
]
),
]
),
createElementVNode(
'div',
_hoisted_28$3,
[
createElementVNode(
'div',
_hoisted_29$2,
[
_hoisted_30$2,
createElementVNode(
'div',
null,
toDisplayString$1(
parseInt(
props2.styleData
.boxShadow &&
props2.styleData
.boxShadow.external &&
props2.styleData
.boxShadow.external
.spread
)
),
1
),
]
),
createElementVNode(
'div',
_hoisted_31$2,
[
createVNode$1(
_component_el_slider,
{
class: 'cms-el-slider-x',
'model-value': parseInt(
props2.styleData
.boxShadow &&
props2.styleData
.boxShadow.external &&
props2.styleData
.boxShadow.external
.spread
),
onInput:
_cache[6] ||
(_cache[6] = ($event) =>
changeExternalValue(
$event,
'spread'
)),
},
null,
8,
['model-value']
),
]
),
]
),
createElementVNode(
'div',
_hoisted_32$2,
[
createElementVNode(
'div',
_hoisted_33$2,
[
_hoisted_34$1,
createElementVNode(
'div',
null,
toDisplayString$1(
parseInt(
props2.styleData
.boxShadow &&
props2.styleData
.boxShadow.external &&
props2.styleData
.boxShadow.external
.blur
)
),
1
),
]
),
createElementVNode(
'div',
_hoisted_35$1,
[
createVNode$1(
_component_el_slider,
{
class: 'cms-el-slider-x',
'model-value': parseInt(
props2.styleData
.boxShadow &&
props2.styleData
.boxShadow.external &&
props2.styleData
.boxShadow.external
.blur
),
onInput:
_cache[7] ||
(_cache[7] = ($event) =>
changeExternalValue(
$event,
'blur'
)),
},
null,
8,
['model-value']
),
]
),
]
),
createElementVNode(
'div',
_hoisted_36$1,
[
_hoisted_37$1,
createElementVNode(
'div',
_hoisted_38$1,
[
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
'color-format': 'rgb',
'model-value':
props2.styleData
.boxShadow &&
props2.styleData.boxShadow
.external &&
props2.styleData.boxShadow
.external.color,
onChange:
_cache[8] ||
(_cache[8] = ($event) =>
changeExternalValue(
$event,
'color'
)),
'popper-class':
'outter_picker',
},
null,
8,
['model-value']
),
]
),
]
),
],
512
),
]),
_: 1,
}
),
createVNode$1(
_component_el_popover,
{
placement: 'top',
'popper-class': 'shadow_popover',
width: 120,
'show-arrow': false,
trigger: 'click',
onHide:
_cache[15] ||
(_cache[15] = ($event) =>
(innerShow.value = false)),
},
{
reference: withCtx(() => [
createElementVNode(
'div',
{
class: normalizeClass([
'appearance_shadow',
{
appearance_choice: innerShow.value,
},
]),
onClick: showInner,
},
_hoisted_41,
2
),
]),
default: withCtx(() => [
createElementVNode(
'div',
{
class: 'shadow_wrap',
ref_key: 'innerWrap',
ref: innerWrap,
},
[
createElementVNode('div', _hoisted_42, [
createElementVNode(
'div',
_hoisted_43,
[
_hoisted_44,
createElementVNode(
'div',
null,
toDisplayString$1(
parseInt(
props2.styleData
.boxShadow &&
props2.styleData.boxShadow
.internal &&
props2.styleData.boxShadow
.internal.horizontal
)
),
1
),
]
),
createElementVNode(
'div',
_hoisted_45,
[
createVNode$1(
_component_el_slider,
{
class: 'cms-el-slider-x',
'model-value': parseInt(
props2.styleData
.boxShadow &&
props2.styleData.boxShadow
.internal &&
props2.styleData.boxShadow
.internal.horizontal
),
onInput:
_cache[10] ||
(_cache[10] = ($event) =>
changeIntervalValue(
$event,
'horizontal'
)),
},
null,
8,
['model-value']
),
]
),
]),
createElementVNode('div', _hoisted_46, [
createElementVNode(
'div',
_hoisted_47,
[
_hoisted_48,
createElementVNode(
'div',
null,
toDisplayString$1(
parseInt(
props2.styleData
.boxShadow &&
props2.styleData.boxShadow
.internal &&
props2.styleData.boxShadow
.internal.vertical
)
),
1
),
]
),
createElementVNode(
'div',
_hoisted_49,
[
createVNode$1(
_component_el_slider,
{
class: 'cms-el-slider-x',
'model-value': parseInt(
props2.styleData
.boxShadow &&
props2.styleData.boxShadow
.internal &&
props2.styleData.boxShadow
.internal.vertical
),
onInput:
_cache[11] ||
(_cache[11] = ($event) =>
changeIntervalValue(
$event,
'vertical'
)),
},
null,
8,
['model-value']
),
]
),
]),
createElementVNode('div', _hoisted_50, [
createElementVNode(
'div',
_hoisted_51,
[
_hoisted_52,
createElementVNode(
'div',
null,
toDisplayString$1(
parseInt(
props2.styleData
.boxShadow &&
props2.styleData.boxShadow
.internal &&
props2.styleData.boxShadow
.internal.spread
)
),
1
),
]
),
createElementVNode(
'div',
_hoisted_53,
[
createVNode$1(
_component_el_slider,
{
class: 'cms-el-slider-x',
'model-value': parseInt(
props2.styleData
.boxShadow &&
props2.styleData.boxShadow
.internal &&
props2.styleData.boxShadow
.internal.spread
),
onInput:
_cache[12] ||
(_cache[12] = ($event) =>
changeIntervalValue(
$event,
'spread'
)),
},
null,
8,
['model-value']
),
]
),
]),
createElementVNode('div', _hoisted_54, [
createElementVNode(
'div',
_hoisted_55,
[
_hoisted_56,
createElementVNode(
'div',
null,
toDisplayString$1(
parseInt(
props2.styleData
.boxShadow &&
props2.styleData.boxShadow
.internal &&
props2.styleData.boxShadow
.internal.blur
)
),
1
),
]
),
createElementVNode(
'div',
_hoisted_57,
[
createVNode$1(
_component_el_slider,
{
class: 'cms-el-slider-x',
'model-value': parseInt(
props2.styleData
.boxShadow &&
props2.styleData.boxShadow
.internal &&
props2.styleData.boxShadow
.internal.blur
),
onInput:
_cache[13] ||
(_cache[13] = ($event) =>
changeIntervalValue(
$event,
'blur'
)),
},
null,
8,
['model-value']
),
]
),
]),
createElementVNode('div', _hoisted_58, [
_hoisted_59,
createElementVNode(
'div',
_hoisted_60,
[
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
'color-format': 'rgb',
'model-value':
props2.styleData
.boxShadow &&
props2.styleData.boxShadow
.internal &&
props2.styleData.boxShadow
.internal.color,
onChange:
_cache[14] ||
(_cache[14] = ($event) =>
changeIntervalValue(
$event,
'color'
)),
'popper-class':
'inner_picker',
},
null,
8,
['model-value']
),
]
),
]),
],
512
),
]),
_: 1,
}
),
]))
: createCommentVNode('', true),
'borderRadius' in props2.styleData
? (openBlock(),
createElementBlock('div', _hoisted_61, [
_hoisted_62,
createElementVNode('div', _hoisted_63, [
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
'controls-position': 'right',
'model-value':
props2.styleData.borderRadius[0],
onInput:
_cache[16] ||
(_cache[16] = ($event) =>
changeData('borderRadius', $event)),
},
null,
8,
['model-value']
),
]),
]))
: createCommentVNode('', true),
]),
]),
_: 1,
},
8,
['title']
),
]),
_: 1,
},
8,
['modelValue']
),
])
)
}
},
})
var moduleAppearance = /* @__PURE__ */ _export_sfc(_sfc_main$Z, [
['__scopeId', 'data-v-4d96b4c6'],
])
var moduleAppearance$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: moduleAppearance,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var functionSendVariable_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$x = (n2) => (
pushScopeId('data-v-91f6a558'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$T = { class: 'function_items_btn' }
const _hoisted_2$N = { class: 'title' }
const _hoisted_3$J = /* @__PURE__ */ _withScopeId$x(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u53D8\u91CF\u4E0B\u53D1',
-1
)
)
const _hoisted_4$C = ['onClick']
const _hoisted_5$x = /* @__PURE__ */ _withScopeId$x(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-bianjigongcheng' },
null,
-1
)
)
const _hoisted_6$s = [_hoisted_5$x]
const _hoisted_7$o = { class: 'wrap_send' }
const _sfc_main$Y = /* @__PURE__ */ defineComponent({
props: ['data'],
emits: ['changefuncData'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const visible = ref(false)
const openPop = () => {
visible.value = true
}
const confirm2 = (tableData2) => {
emit2('changefuncData', 'sendVariable', 'list', tableData2)
}
const close2 = () => {
visible.value = false
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$T, [
createElementVNode('div', _hoisted_2$N, [
_hoisted_3$J,
createElementVNode(
'div',
{
class: 'suffix_icon',
onClick: withModifiers(openPop, ['stop']),
},
_hoisted_6$s,
8,
_hoisted_4$C
),
]),
createElementVNode('div', _hoisted_7$o, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(props2.data.list, (item2, index2) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'wrap_send_item',
key: index2,
},
[
createElementVNode(
'div',
null,
toDisplayString$1(item2.key),
1
),
createElementVNode(
'div',
null,
toDisplayString$1(item2.value),
1
),
]
)
)
}),
128
)),
]),
createVNode$1(
unref(functionDialogBtn),
{
visible: visible.value,
data: props2.data.list,
onClose: close2,
onConfirm: confirm2,
},
null,
8,
['visible', 'data']
),
])
)
}
},
})
var functionSendVariable = /* @__PURE__ */ _export_sfc(_sfc_main$Y, [
['__scopeId', 'data-v-91f6a558'],
])
var functionSendVariable$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: functionSendVariable,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _hoisted_1$S = {
key: 0,
class: 'function_wrap_bottom',
}
const _hoisted_2$M = /* @__PURE__ */ createTextVNode(
'\u5355\u51FB\u6309\u94AE\u51FA\u73B0\u63D0\u793A\u5BF9\u8BDD\u6846'
)
const _sfc_main$X = /* @__PURE__ */ defineComponent({
props: ['data'],
emits: ['open', 'changefuncData'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const changeData = (prop, innerprop, val2) => {
emit2('changefuncData', prop, innerprop, val2)
}
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_input = resolveComponent('el-input')
return props2.data
? (openBlock(),
createElementBlock('div', _hoisted_1$S, [
createElementVNode('div', null, [
createVNode$1(
_component_el_checkbox,
{
class: 'cms-el-checkbox-font-size-12',
'model-value': props2.data.show,
onChange:
_cache[0] ||
(_cache[0] = ($event) =>
changeData('dialog', 'show', $event)),
},
{
default: withCtx(() => [_hoisted_2$M]),
_: 1,
},
8,
['model-value']
),
]),
createElementVNode('div', null, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
placeholder: '\u8BF7\u8F93\u5165\u5185\u5BB9',
'model-value': props2.data.messageText,
onInput:
_cache[1] ||
(_cache[1] = ($event) =>
changeData('dialog', 'messageText', $event)),
},
null,
8,
['model-value']
),
]),
]))
: createCommentVNode('', true)
}
},
})
var functionShowDialog = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$X,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var functionPopup_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$w = (n2) => (
pushScopeId('data-v-540748f8'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$R = { class: 'function_items_wrap' }
const _hoisted_2$L = { class: 'item_row' }
const _hoisted_3$I = /* @__PURE__ */ _withScopeId$w(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'item_row_label' },
'\u5F39\u7A97\u753B\u9762',
-1
)
)
const _hoisted_4$B = { class: 'item_row_value' }
const _hoisted_5$w = { class: 'text_yellow' }
const _hoisted_6$r = { class: 'item_row' }
const _hoisted_7$n = /* @__PURE__ */ _withScopeId$w(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'item_row_label' },
'\u5F39\u7A97\u540D\u79F0',
-1
)
)
const _hoisted_8$n = { class: 'item_row_value' }
const _hoisted_9$n = { class: 'item_row' }
const _hoisted_10$m = { class: 'item_check' }
const _hoisted_11$j = /* @__PURE__ */ createTextVNode(
'\u56FA\u5B9A\u5C3A\u5BF8'
)
const _hoisted_12$j = { class: 'item_props' }
const _hoisted_13$h = { class: 'item_props_inner' }
const _hoisted_14$f = /* @__PURE__ */ _withScopeId$w(() =>
/* @__PURE__ */ createElementVNode('div', { class: 'item_title' }, 'W', -1)
)
const _hoisted_15$f = { class: 'item_input' }
const _hoisted_16$f = { class: 'item_props_inner' }
const _hoisted_17$e = /* @__PURE__ */ _withScopeId$w(() =>
/* @__PURE__ */ createElementVNode('div', { class: 'item_title' }, 'H', -1)
)
const _hoisted_18$d = { class: 'item_input' }
const _sfc_main$W = /* @__PURE__ */ defineComponent({
props: {
data: Object,
default: () => {},
},
emits: ['changefuncData'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const visible = ref(false)
const changeData = (prop, val2) => {
emit2('changefuncData', 'popupWindow', prop, val2)
}
const open2 = () => {
visible.value = true
}
const cancel2 = () => {
visible.value = false
}
const confirm2 = (row) => {
if (row === null) {
emit2('changefuncData', 'popupWindow', 'title', '')
emit2('changefuncData', 'popupWindow', 'id', '')
return
}
emit2('changefuncData', 'popupWindow', 'title', row.name)
emit2('changefuncData', 'popupWindow', 'id', row.id)
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_input_number = resolveComponent('el-input-number')
return (
openBlock(),
createElementBlock('div', _hoisted_1$R, [
createElementVNode('div', _hoisted_2$L, [
_hoisted_3$I,
createElementVNode('div', _hoisted_4$B, [
createElementVNode(
'span',
_hoisted_5$w,
toDisplayString$1(props2.data?.title),
1
),
createElementVNode('i', {
class: 'iconfont icon-bianjigongcheng',
onClick: open2,
}),
]),
]),
createElementVNode('div', _hoisted_6$r, [
_hoisted_7$n,
createElementVNode('div', _hoisted_8$n, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
'model-value': props2.data?.name,
onInput:
_cache[0] ||
(_cache[0] = ($event) => changeData('name', $event)),
placeholder: '\u8BF7\u8F93\u5165\u5F39\u7A97\u540D\u79F0',
},
null,
8,
['model-value']
),
]),
]),
createElementVNode('div', _hoisted_9$n, [
createElementVNode('div', _hoisted_10$m, [
createVNode$1(
_component_el_checkbox,
{
'model-value': props2.data?.fixedSize,
onChange:
_cache[1] ||
(_cache[1] = ($event) => changeData('fixedSize', $event)),
class: 'cms-el-checkbox-font-size-12',
},
{
default: withCtx(() => [_hoisted_11$j]),
_: 1,
},
8,
['model-value']
),
]),
createElementVNode('div', _hoisted_12$j, [
createElementVNode('div', _hoisted_13$h, [
_hoisted_14$f,
createElementVNode('div', _hoisted_15$f, [
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
'model-value': props2.data?.width,
onInput:
_cache[2] ||
(_cache[2] = ($event) => changeData('width', $event)),
'controls-position': 'right',
},
null,
8,
['model-value']
),
]),
]),
createElementVNode('div', _hoisted_16$f, [
_hoisted_17$e,
createElementVNode('div', _hoisted_18$d, [
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
'model-value': props2.data?.height,
onInput:
_cache[3] ||
(_cache[3] = ($event) => changeData('height', $event)),
'controls-position': 'right',
},
null,
8,
['model-value']
),
]),
]),
]),
]),
createVNode$1(
unref(functionDialog),
{
title: '\u5F39\u7A97\u6309\u94AE',
data: props2.data,
visible: visible.value,
onCancel: cancel2,
onConfirm: confirm2,
},
null,
8,
['data', 'visible']
),
])
)
}
},
})
var functionPopup = /* @__PURE__ */ _export_sfc(_sfc_main$W, [
['__scopeId', 'data-v-540748f8'],
])
var functionPopup$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: functionPopup,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _hoisted_1$Q = { class: 'function_items_wrap' }
const _hoisted_2$K = { class: 'item_row' }
const _hoisted_3$H = /* @__PURE__ */ createElementVNode(
'div',
{ class: 'item_row_label' },
'\u8DF3\u8F6C\u753B\u9762',
-1
)
const _hoisted_4$A = { class: 'item_row_value' }
const _hoisted_5$v = { class: 'text_yellow' }
const _sfc_main$V = /* @__PURE__ */ defineComponent({
props: ['data'],
emits: ['changefuncData'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const visible = ref(false)
const open2 = () => {
visible.value = true
}
const cancel2 = () => {
visible.value = false
}
const confirm2 = (row) => {
if (row === null) {
emit2('changefuncData', 'jumpPage', 'name', '')
emit2('changefuncData', 'jumpPage', 'id', '')
return
}
emit2('changefuncData', 'jumpPage', 'name', row.name)
emit2('changefuncData', 'jumpPage', 'id', row.id)
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$Q, [
createElementVNode('div', _hoisted_2$K, [
_hoisted_3$H,
createElementVNode('div', _hoisted_4$A, [
createElementVNode(
'span',
_hoisted_5$v,
toDisplayString$1(props2.data.name),
1
),
createElementVNode('i', {
class: 'iconfont icon-bianjigongcheng',
onClick: open2,
}),
]),
]),
createVNode$1(
unref(functionDialog),
{
visible: visible.value,
data: props2.data,
onCancel: cancel2,
onConfirm: confirm2,
},
null,
8,
['visible', 'data']
),
])
)
}
},
})
var functionJumpPage = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$V,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _hoisted_1$P = { class: 'function_items_wrap' }
const _hoisted_2$J = { class: 'item_row' }
const _hoisted_3$G = /* @__PURE__ */ createElementVNode(
'div',
{ class: 'item_row_label' },
'\u5173\u8054\u53D8\u91CF',
-1
)
const _hoisted_4$z = { class: 'item_row_value' }
const _sfc_main$U = /* @__PURE__ */ defineComponent({
props: ['data'],
emits: ['changefuncData'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const changeData = (prop, innerProp, val2) => {
emit2('changefuncData', prop, innerProp, val2)
}
const changeVariate = () => {
searchVariable('', '', null, props2.data.key).then((res) => {
if (res.result.length === 0) {
emit2('changefuncData', 'associatedVariable', 'value', '')
} else {
emit2(
'changefuncData',
'associatedVariable',
'key',
res.result[0].name
)
emit2(
'changefuncData',
'associatedVariable',
'value',
res.result[0].id
)
}
})
}
const visiable = ref(false)
const open2 = () => {
visiable.value = true
}
const cancel2 = () => {
visiable.value = false
}
const confirm2 = (val2) => {
if (val2.length === 0) {
changeData('associatedVariable', 'key', '')
changeData('associatedVariable', 'value', '')
cancel2()
return
}
changeData('associatedVariable', 'key', val2[0].name)
changeData('associatedVariable', 'value', val2[0].id)
cancel2()
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
return (
openBlock(),
createElementBlock('div', _hoisted_1$P, [
createElementVNode('div', _hoisted_2$J, [
_hoisted_3$G,
createElementVNode('div', _hoisted_4$z, [
createElementVNode('div', null, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
'model-value': props2.data.key,
onInput:
_cache[0] ||
(_cache[0] = ($event) =>
changeData('associatedVariable', 'key', $event)),
onBlur: changeVariate,
placeholder: '\u8BF7\u8F93\u5165\u53D8\u91CF\u540D\u79F0',
},
null,
8,
['model-value']
),
]),
createElementVNode('i', {
class: 'iconfont icon-bianjigongcheng',
onClick: open2,
}),
]),
]),
createVNode$1(
unref(_sfc_main$6Q),
{
visible: visiable.value,
noLanguage: true,
data: { id: props2.data.value, name: props2.data.name },
isAppendToBody: true,
onCancel: cancel2,
onConfirm: confirm2,
},
null,
8,
['visible', 'data']
),
])
)
}
},
})
var functionRelateVariable = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$U,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _hoisted_1$O = { class: 'function_items_wrap' }
const _hoisted_2$I = { class: 'item_row' }
const _hoisted_3$F = { class: 'item_row_label' }
const _hoisted_4$y = /* @__PURE__ */ createTextVNode(
' \u81EA\u5B9A\u4E49\u8F93\u5165\u8303\u56F4 '
)
const _hoisted_5$u = { class: 'item_row_scope' }
const _hoisted_6$q = /* @__PURE__ */ createElementVNode('span', null, '-', -1)
const _sfc_main$T = /* @__PURE__ */ defineComponent({
props: ['data'],
emits: ['changefuncData'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const changeData = (prop, innerProp, val2) => {
emit2('changefuncData', prop, innerProp, val2)
}
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_input_number = resolveComponent('el-input-number')
return (
openBlock(),
createElementBlock('div', _hoisted_1$O, [
createElementVNode('div', _hoisted_2$I, [
createElementVNode('div', _hoisted_3$F, [
createVNode$1(
_component_el_checkbox,
{
'model-value': props2.data.useDataTypeDefaultRange,
onChange:
_cache[0] ||
(_cache[0] = ($event) =>
changeData(
'inputRange',
'useDataTypeDefaultRange',
$event
)),
class: 'cms-el-checkbox-font-size-12',
},
{
default: withCtx(() => [_hoisted_4$y]),
_: 1,
},
8,
['model-value']
),
]),
createElementVNode('div', _hoisted_5$u, [
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
disabled: !props2.data.useDataTypeDefaultRange,
'model-value': props2.data.startValue,
onInput:
_cache[1] ||
(_cache[1] = ($event) =>
changeData('inputRange', 'startValue', $event)),
'controls-position': 'right',
},
null,
8,
['disabled', 'model-value']
),
_hoisted_6$q,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
disabled: !props2.data.useDataTypeDefaultRange,
'model-value': props2.data.endValue,
onInput:
_cache[2] ||
(_cache[2] = ($event) =>
changeData('inputRange', 'endValue', $event)),
'controls-position': 'right',
},
null,
8,
['disabled', 'model-value']
),
]),
]),
])
)
}
},
})
var functionInputRange = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$T,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _hoisted_1$N = { class: 'function_items_wrap' }
const _hoisted_2$H = { class: 'item_row' }
const _hoisted_3$E = { class: 'item_row_label' }
const _hoisted_4$x = /* @__PURE__ */ createTextVNode(
'\u81EA\u5B9A\u4E49\u5C55\u793A\u7CBE\u5EA6'
)
const _hoisted_5$t = { class: 'item_row_precision' }
const _hoisted_6$p = /* @__PURE__ */ createElementVNode(
'div',
{ class: 'precision_digit' },
'\u5C0F\u6570\u4F4D\u6570',
-1
)
const _sfc_main$S = /* @__PURE__ */ defineComponent({
props: ['data'],
emits: ['changefuncData'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const changeData = (prop, innerProp, val2) => {
emit2('changefuncData', prop, innerProp, val2)
}
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_input_number = resolveComponent('el-input-number')
return (
openBlock(),
createElementBlock('div', _hoisted_1$N, [
createElementVNode('div', _hoisted_2$H, [
createElementVNode('div', _hoisted_3$E, [
createVNode$1(
_component_el_checkbox,
{
'model-value': props2.data.adaptive,
onChange:
_cache[0] ||
(_cache[0] = ($event) =>
changeData('showAccuracy', 'adaptive', $event)),
class: 'cms-el-checkbox-font-size-12',
},
{
default: withCtx(() => [_hoisted_4$x]),
_: 1,
},
8,
['model-value']
),
]),
createElementVNode('div', _hoisted_5$t, [
_hoisted_6$p,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
disabled: !props2.data.adaptive,
'controls-position': 'right',
'model-value': props2.data.value,
onInput:
_cache[1] ||
(_cache[1] = ($event) =>
changeData('showAccuracy', 'value', $event)),
},
null,
8,
['disabled', 'model-value']
),
]),
]),
])
)
}
},
})
var functionInputPrecision = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$S,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var functionTree_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$v = (n2) => (
pushScopeId('data-v-9ef299ec'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$M = { class: 'function_items_btn' }
const _hoisted_2$G = /* @__PURE__ */ _withScopeId$v(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u83DC\u5355\u9879',
-1
)
)
const _hoisted_3$D = { class: 'function_tree' }
const _hoisted_4$w = { class: 'wrap_body' }
const _hoisted_5$s = /* @__PURE__ */ _withScopeId$v(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u8DF3\u8F6C\u753B\u9762',
-1
)
)
const _hoisted_6$o = { class: 'cloumn_hanlde' }
const _hoisted_7$m = ['onClick']
const _hoisted_8$m = /* @__PURE__ */ _withScopeId$v(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-huamianfangda icon_add' },
null,
-1
)
)
const _hoisted_9$m = /* @__PURE__ */ createTextVNode(
'\u6DFB\u52A0\u4E3B\u83DC\u5355'
)
const _hoisted_10$l = /* @__PURE__ */ createTextVNode(
'\u6DFB\u52A0\u5B50\u83DC\u5355'
)
const _sfc_main$R = /* @__PURE__ */ defineComponent({
props: ['data'],
emits: ['changefuncData'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const tableData2 = ref([])
const open2 = () => {
tableData2.value = JSON.parse(JSON.stringify(props2.data.menus))
}
const handleNodeClick = (data2) => {}
const defaultProps2 = {
children: 'menus',
label: 'menuName',
}
const visible = ref(false)
const openPop = () => {
visible.value = true
}
const cancel2 = () => {
currentNode.value = null
showHighLight.value = false
tableData2.value = []
visible.value = false
}
const confirm2 = () => {
emit2('changefuncData', tableData2.value)
cancel2()
}
const currentNode = ref(null)
const showHighLight = ref(false)
const handleCurrentChange = (val2) => {
showHighLight.value = true
currentNode.value = val2
}
const addData = () => {
tableData2.value.push({
menuId: initUtils.createRandomId(),
menuName: '\u65B0\u83DC\u5355',
pageId: '',
pageName: '',
menus: [],
})
}
const delData = (row) => {
let nodeArr = initUtils.getNodeParents(tableData2.value, row.menuId, {
children: 'menus',
id: 'menuId',
})
let children = []
if (nodeArr.length === 2) {
let parentIndex = tableData2.value.findIndex(
(f2) => f2.menuId === nodeArr[0]
)
let parentNode2 = tableData2.value[parentIndex]
children = parentNode2.menus
const index2 = children.findIndex((d3) => d3.menuId === row.menuId)
children.splice(index2, 1)
} else {
const index2 = tableData2.value.findIndex(
(d3) => d3.menuId === row.menuId
)
tableData2.value.splice(index2, 1)
}
}
const handleCommand = (obj) => {
if (obj.type === 'main') {
addData()
}
if (obj.type === 'child') {
let nodeArr = initUtils.getNodeParents(
tableData2.value,
obj.data.menuId,
{
children: 'menus',
id: 'menuId',
}
)
let children = []
if (nodeArr.length === 2) {
let parentIndex = tableData2.value.findIndex(
(f2) => f2.menuId === nodeArr[0]
)
let parentNode2 = tableData2.value[parentIndex]
children = parentNode2.menus
children.push({
menuId: initUtils.createRandomId(),
menuName: '\u5B50\u83DC\u5355',
pageId: '',
pageName: '',
menus: [],
})
} else {
if (obj.data.menus.length === 0 && obj.data.pageName !== '') {
ElMessageBox.confirm(
'\u83DC\u5355\u9879\u5DF2\u7ED1\u5B9A\u753B\u9762,\u65B0\u5EFA\u5B50\u753B\u9762\u5C06\u89E3\u9664\u7ED1\u5B9A\uFF0C\u662F\u5426\u786E\u8BA4\uFF1F',
'\u63D0\u793A',
{
confirmButtonText: '\u786E\u8BA4',
cancelButtonText: '\u53D6\u6D88',
customClass: 'cms-el-dialog',
callback: (action) => {
if (action === 'confirm') {
obj.data.pageName = ''
obj.data.menus.push({
menuId: initUtils.createRandomId(),
menuName: '\u5B50\u83DC\u5355',
pageId: '',
pageName: '',
menus: [],
})
}
},
}
)
} else {
obj.data.menus.push({
menuId: initUtils.createRandomId(),
menuName: '\u5B50\u83DC\u5355',
pageId: '',
pageName: '',
menus: [],
})
}
}
}
}
const innerVisible = ref(false)
const openInner = () => {
if (currentNode.value === null) {
ElMessage.warning('\u8BF7\u5148\u9009\u62E9\u6570\u636E')
return
}
if (currentNode.value.menus.length !== 0) {
ElMessage.warning(
'\u8BE5\u4E00\u7EA7\u83DC\u5355\u4E0B\u5B58\u5728\u5B50\u83DC\u5355\uFF0C\u65E0\u6CD5\u914D\u7F6E\u753B\u9762\uFF01'
)
return
}
innerVisible.value = true
}
const cancelInner = () => {
innerVisible.value = false
}
const confirmInner = (row) => {
if (row === null) {
currentNode.value.pageName = ''
currentNode.value.pageId = ''
return
}
currentNode.value.pageName = row.name
currentNode.value.pageId = row.id
}
const tableTree = ref()
const changeName = (row) => {
let nodeArr = initUtils.getNodeParents(
tableData2.value,
currentNode.value.menuId,
{
children: 'menus',
id: 'menuId',
}
)
if (nodeArr.length === 2) {
let parentIndex = tableData2.value.findIndex(
(f2) => f2.menuId === nodeArr[0]
)
let parentNode2 = tableData2.value[parentIndex]
let nodeIndex = null
parentNode2.menus.forEach((item2, index2) => {
if (item2.menuId === nodeArr[1]) {
item2.pageName = row.name
item2.pageId = row.id
nodeIndex = index2
}
})
if (nodeIndex === parentNode2.menus.length - 1) {
currentNode.value = parentNode2.menus[nodeIndex]
ElMessage.warning(
'\u5DF2\u914D\u7F6E\u5230\u6700\u540E\u4E00\u6761\u6570\u636E'
)
} else {
currentNode.value = parentNode2.menus[nodeIndex + 1]
}
tableTree.value.setCurrentRow(currentNode.value)
} else {
let index2 = tableData2.value.findIndex(
(f2) => f2.menuId === nodeArr[0]
)
tableData2.value[index2].pageName = row.name
tableData2.value[index2].pageId = row.id
if (index2 === tableData2.value.length - 1) {
currentNode.value = tableData2.value[index2]
ElMessage.warning(
'\u5DF2\u914D\u7F6E\u5230\u6700\u540E\u4E00\u6761\u6570\u636E'
)
} else {
currentNode.value = tableData2.value[index2 + 1]
}
tableTree.value.setCurrentRow(currentNode.value)
}
}
const setParentNode = () => {
nextTick(() => {
tableTree.value.setCurrentRow(currentNode.value)
})
}
return (_ctx, _cache) => {
const _component_el_tree = resolveComponent('el-tree')
const _component_el_input = resolveComponent('el-input')
const _component_el_table_column = resolveComponent('el-table-column')
const _component_el_dropdown_item = resolveComponent('el-dropdown-item')
const _component_el_dropdown_menu = resolveComponent('el-dropdown-menu')
const _component_el_dropdown = resolveComponent('el-dropdown')
const _component_el_table = resolveComponent('el-table')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', _hoisted_1$M, [
createElementVNode('div', { class: 'wrap_header' }, [
_hoisted_2$G,
createElementVNode('i', {
class: 'iconfont icon-bianjigongcheng',
onClick: openPop,
}),
]),
createElementVNode('div', _hoisted_3$D, [
createVNode$1(
_component_el_tree,
{
data: props2.data.menus,
class: 'cms_el_tree_x',
props: defaultProps2,
onNodeClick: handleNodeClick,
},
null,
8,
['data']
),
]),
createVNode$1(
_component_el_dialog,
{
modelValue: visible.value,
'onUpdate:modelValue':
_cache[0] || (_cache[0] = ($event) => (visible.value = $event)),
width: '480px',
top: '26vh',
title: '\u6C34\u5E73\u83DC\u5355',
onOpen: open2,
onClose: cancel2,
'custom-class': 'cms-el-dialog',
},
{
default: withCtx(() => [
createElementVNode('div', null, [
createElementVNode('div', { class: 'wrap_btns' }, [
createElementVNode(
'div',
{
class: 'btn_plain_normal btn_plain_add',
onClick: addData,
},
'\u6DFB\u52A0'
),
]),
createElementVNode('div', _hoisted_4$w, [
createVNode$1(
_component_el_table,
{
class: 'cms-el-table cms-el-modify-table',
height: '250',
'highlight-current-row': showHighLight.value,
data: tableData2.value,
border: '',
'row-key': 'menuId',
onCurrentChange: handleCurrentChange,
ref_key: 'tableTree',
ref: tableTree,
'default-expand-all': '',
'tree-props': { children: 'menus' },
},
{
default: withCtx(() => [
createVNode$1(
_component_el_table_column,
{
prop: 'menuName',
label: '\u83DC\u5355\u9879\u540D\u79F0',
},
{
default: withCtx((scope) => [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
modelValue: scope.row.menuName,
'onUpdate:modelValue': ($event) =>
(scope.row.menuName = $event),
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
]),
_: 1,
}
),
createVNode$1(
_component_el_table_column,
{ prop: 'pageName' },
{
header: withCtx(() => [
createElementVNode(
'div',
{ class: 'column_header' },
[
_hoisted_5$s,
createElementVNode('i', {
class: 'iconfont icon-gengduo1',
onClick: openInner,
}),
]
),
]),
_: 1,
}
),
createVNode$1(
_component_el_table_column,
{
prop: 'value',
label: '\u64CD\u4F5C',
width: '100px',
},
{
default: withCtx((scope) => [
createElementVNode('div', _hoisted_6$o, [
createElementVNode(
'i',
{
class: 'iconfont icon-qingchu icon_del',
onClick: ($event) => delData(scope.row),
},
null,
8,
_hoisted_7$m
),
createVNode$1(
_component_el_dropdown,
{
trigger: 'hover',
onCommand: handleCommand,
},
{
dropdown: withCtx(() => [
createVNode$1(
_component_el_dropdown_menu,
null,
{
default: withCtx(() => [
createVNode$1(
_component_el_dropdown_item,
{
command: {
type: 'main',
data: scope.row,
},
},
{
default: withCtx(() => [
_hoisted_9$m,
]),
_: 2,
},
1032,
['command']
),
createVNode$1(
_component_el_dropdown_item,
{
command: {
type: 'child',
data: scope.row,
},
},
{
default: withCtx(() => [
_hoisted_10$l,
]),
_: 2,
},
1032,
['command']
),
]),
_: 2,
},
1024
),
]),
default: withCtx(() => [_hoisted_8$m]),
_: 2,
},
1024
),
]),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['highlight-current-row', 'data']
),
]),
createElementVNode('div', { class: 'el-dialog__footer' }, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: cancel2,
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: confirm2,
},
'\u786E\u8BA4'
),
]),
]),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
unref(functionDialog),
{
title: '\u5173\u8054\u753B\u9762',
visible: innerVisible.value,
showConfig: '',
configData: {
data: tableData2.value,
currentRow: currentNode.value,
},
data: {
id: currentNode.value && currentNode.value.pageId,
name: currentNode.value && currentNode.value.pageName,
},
onSetParentNode: setParentNode,
onChangeName: changeName,
onCancel: cancelInner,
onConfirm: confirmInner,
},
null,
8,
['visible', 'configData', 'data']
),
])
)
}
},
})
var functionTree = /* @__PURE__ */ _export_sfc(_sfc_main$R, [
['__scopeId', 'data-v-9ef299ec'],
])
var functionTree$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: functionTree,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var moduleFunction_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$u = (n2) => (
pushScopeId('data-v-185fe563'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$L = { class: 'function' }
const _hoisted_2$F = /* @__PURE__ */ _withScopeId$u(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u529F\u80FD', -1)
)
const _sfc_main$Q = /* @__PURE__ */ defineComponent({
props: ['styleData'],
emits: ['transformData'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const components = {
sendVariable: functionSendVariable,
dialog: _sfc_main$X,
popupWindow: functionPopup,
jumpPage: _sfc_main$V,
associatedVariable: _sfc_main$U,
inputRange: _sfc_main$T,
showAccuracy: _sfc_main$S,
horizontalMenus: functionTree,
}
const activeItem = ref(['1'])
const changefuncData = (prop, innerProp, val2) => {
emit2('transformData', prop, val2, innerProp)
}
return (_ctx, _cache) => {
const _component_el_collapse_item = resolveComponent('el-collapse-item')
const _component_el_collapse = resolveComponent('el-collapse')
return (
openBlock(),
createElementBlock('div', _hoisted_1$L, [
createVNode$1(
_component_el_collapse,
{
class: 'cms-el-collapse-x',
modelValue: activeItem.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (activeItem.value = $event)),
},
{
default: withCtx(() => [
createVNode$1(
_component_el_collapse_item,
{ name: '1' },
{
title: withCtx(() => [_hoisted_2$F]),
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
props2.styleData.function,
(item2, index2) => {
return (
openBlock(),
createElementBlock('div', { key: index2 }, [
(openBlock(),
createBlock(
resolveDynamicComponent(
components[item2.functionType]
),
{
data: item2,
onChangefuncData: changefuncData,
},
null,
8,
['data']
)),
])
)
}
),
128
)),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['modelValue']
),
])
)
}
},
})
var moduleFunction = /* @__PURE__ */ _export_sfc(_sfc_main$Q, [
['__scopeId', 'data-v-185fe563'],
])
var moduleFunction$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: moduleFunction,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var moduleOpacity_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$t = (n2) => (
pushScopeId('data-v-22692fa9'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$K = { class: 'opacity' }
const _hoisted_2$E = /* @__PURE__ */ _withScopeId$t(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'opacicty_title' },
'\u4E0D\u900F\u660E\u5EA6',
-1
)
)
const _hoisted_3$C = { class: 'opacicty_progress' }
const _hoisted_4$v = { class: 'opacicty_num' }
const _sfc_main$P = /* @__PURE__ */ defineComponent({
props: ['styleData'],
emits: ['transformData'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const changeOpacity = (val2) => {
emit2('transformData', 'opacity', val2 / 100)
}
return (_ctx, _cache) => {
const _component_el_slider = resolveComponent('el-slider')
return (
openBlock(),
createElementBlock('div', _hoisted_1$K, [
_hoisted_2$E,
createElementVNode('div', _hoisted_3$C, [
createVNode$1(
_component_el_slider,
{
class: 'cms-el-slider-x',
'model-value': props2.styleData.opacity * 100,
onInput: changeOpacity,
},
null,
8,
['model-value']
),
]),
createElementVNode(
'div',
_hoisted_4$v,
toDisplayString$1(Math.round(props2.styleData.opacity * 100)),
1
),
])
)
}
},
})
var moduleOpacity = /* @__PURE__ */ _export_sfc(_sfc_main$P, [
['__scopeId', 'data-v-22692fa9'],
])
var moduleOpacity$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: moduleOpacity,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var modulePermission_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$J = { class: 'opacity' }
const _hoisted_2$D = { class: 'opacicty_progress' }
const _hoisted_3$B = /* @__PURE__ */ createTextVNode(
'\u6743\u9650\u63A7\u5236 '
)
const _sfc_main$O = /* @__PURE__ */ defineComponent({
props: ['styleData'],
emits: ['transformData'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const handleChange = (val2) => {
emit2('transformData', 'isPermissions', val2)
}
return (_ctx, _cache) => {
const _component_el_checkbox = resolveComponent('el-checkbox')
return (
openBlock(),
createElementBlock('div', _hoisted_1$J, [
createElementVNode('div', _hoisted_2$D, [
createVNode$1(
_component_el_checkbox,
{
'model-value': props2.styleData.isPermissions,
onChange: handleChange,
class: 'cms-el-checkbox-font-size-12',
},
{
default: withCtx(() => [_hoisted_3$B]),
_: 1,
},
8,
['model-value']
),
]),
])
)
}
},
})
var modulePermission = /* @__PURE__ */ _export_sfc(_sfc_main$O, [
['__scopeId', 'data-v-41c863a0'],
])
var modulePermission$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: modulePermission,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var modulePosition_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$s = (n2) => (
pushScopeId('data-v-8a154f0e'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$I = { class: 'position' }
const _hoisted_2$C = {
key: 0,
class: 'position_row',
}
const _hoisted_3$A = { class: 'row_item_first' }
const _hoisted_4$u = /* @__PURE__ */ _withScopeId$s(() =>
/* @__PURE__ */ createElementVNode('div', { class: 'item_title' }, 'X', -1)
)
const _hoisted_5$r = { class: 'item_input' }
const _hoisted_6$n = /* @__PURE__ */ _withScopeId$s(() =>
/* @__PURE__ */ createElementVNode('div', { class: 'item_icon' }, null, -1)
)
const _hoisted_7$l = {
key: 0,
class: 'row_item_second',
}
const _hoisted_8$l = /* @__PURE__ */ _withScopeId$s(() =>
/* @__PURE__ */ createElementVNode('div', { class: 'item_title' }, 'Y', -1)
)
const _hoisted_9$l = { class: 'item_input' }
const _hoisted_10$k = {
key: 1,
class: 'row_item_third',
}
const _hoisted_11$i = /* @__PURE__ */ _withScopeId$s(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'item_title' },
[
/* @__PURE__ */ createElementVNode('i', {
class: 'iconfont icon-xuanzhuan',
}),
],
-1
)
)
const _hoisted_12$i = { class: 'item_input' }
const _hoisted_13$g = { class: 'position_row' }
const _hoisted_14$e = { class: 'row_item_first' }
const _hoisted_15$e = /* @__PURE__ */ _withScopeId$s(() =>
/* @__PURE__ */ createElementVNode('div', { class: 'item_title' }, 'W', -1)
)
const _hoisted_16$e = { class: 'item_input' }
const _hoisted_17$d = { class: 'row_item_second' }
const _hoisted_18$c = /* @__PURE__ */ _withScopeId$s(() =>
/* @__PURE__ */ createElementVNode('div', { class: 'item_title' }, 'H', -1)
)
const _hoisted_19$b = { class: 'item_input' }
const _hoisted_20$a = { class: 'row_item_third' }
const _sfc_main$N = /* @__PURE__ */ defineComponent({
props: ['styleData'],
emits: ['transformData'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const isFixed = ref(false)
const isLock = ref(false)
const showFirst = ref(false)
watchEffect(() => {
let keys3 = Object.keys(props2.styleData)
let firstRows = ['left', 'top', 'rotate']
isLock.value = props2.styleData.isLock
if (keys3.length > 0) {
showFirst.value = keys3.some((key2) => firstRows.includes(key2))
}
})
const changeData = (prop, value2) => {
value2 = value2 === void 0 ? 0 : value2
emit2('transformData', prop, value2)
}
let lockData = {
width: 0,
height: 0,
}
const fixRate = (value2, prop) => {
isFixed.value = !isFixed.value
if (isFixed.value) {
lockData.width = props2.styleData.width
lockData.height = props2.styleData.height
}
emit2('transformData', prop, isFixed.value)
}
const handleLock = () => {
isLock.value = !isLock.value
emit2('transformData', 'isLock', isLock.value)
}
const handleChange = (value2, prop) => {
emit2('transformData', prop, value2)
if (isFixed.value) {
let diff = 0
if (prop === 'width') {
diff = props2.styleData.width - lockData.width
emit2('transformData', 'height', props2.styleData.height + diff)
lockData.height = props2.styleData.height + diff
lockData.width = props2.styleData.width + diff
}
if (prop === 'height') {
diff = props2.styleData.height - lockData.height
emit2('transformData', 'width', props2.styleData.width + diff)
lockData.width = props2.styleData.width + diff
lockData.height = props2.styleData.width + diff
}
}
}
return (_ctx, _cache) => {
const _component_el_input_number = resolveComponent('el-input-number')
return (
openBlock(),
createElementBlock('div', _hoisted_1$I, [
showFirst.value
? (openBlock(),
createElementBlock('div', _hoisted_2$C, [
createElementVNode('div', _hoisted_3$A, [
_hoisted_4$u,
createElementVNode('div', _hoisted_5$r, [
createVNode$1(
_component_el_input_number,
{
disabled: isLock.value,
class: 'cms-el-input-number-x',
'controls-position': 'right',
'model-value': props2.styleData.left,
onInput:
_cache[0] ||
(_cache[0] = ($event) => changeData('left', $event)),
},
null,
8,
['disabled', 'model-value']
),
]),
_hoisted_6$n,
]),
props2.styleData.top || props2.styleData.top == 0
? (openBlock(),
createElementBlock('div', _hoisted_7$l, [
_hoisted_8$l,
createElementVNode('div', _hoisted_9$l, [
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
disabled: isLock.value,
'controls-position': 'right',
'model-value': props2.styleData.top,
onInput:
_cache[1] ||
(_cache[1] = ($event) =>
changeData('top', $event)),
},
null,
8,
['disabled', 'model-value']
),
]),
]))
: createCommentVNode('', true),
props2.styleData.rotate || props2.styleData.rotate == 0
? (openBlock(),
createElementBlock('div', _hoisted_10$k, [
_hoisted_11$i,
createElementVNode('div', _hoisted_12$i, [
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
disabled: isLock.value,
'controls-position': 'right',
'model-value': props2.styleData.rotate,
onInput:
_cache[2] ||
(_cache[2] = ($event) =>
changeData('rotate', $event)),
},
null,
8,
['disabled', 'model-value']
),
]),
]))
: createCommentVNode('', true),
]))
: createCommentVNode('', true),
createElementVNode('div', _hoisted_13$g, [
createElementVNode('div', _hoisted_14$e, [
_hoisted_15$e,
createElementVNode('div', _hoisted_16$e, [
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
'controls-position': 'right',
'model-value': props2.styleData.width,
disabled: isLock.value,
onChange:
_cache[3] ||
(_cache[3] = ($event) => handleChange($event, 'width')),
},
null,
8,
['model-value', 'disabled']
),
]),
createElementVNode(
'div',
{
class: 'item_icon',
onClick:
_cache[4] ||
(_cache[4] = ($event) =>
fixRate($event, 'isEqualProportion')),
},
[
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont icon-guanlian item_rate',
{ icon_yellow: isFixed.value },
]),
},
null,
2
),
]
),
]),
createElementVNode('div', _hoisted_17$d, [
_hoisted_18$c,
createElementVNode('div', _hoisted_19$b, [
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
'controls-position': 'right',
'model-value': props2.styleData.height,
disabled: isLock.value,
onChange:
_cache[5] ||
(_cache[5] = ($event) => handleChange($event, 'height')),
},
null,
8,
['model-value', 'disabled']
),
]),
]),
createElementVNode('div', _hoisted_20$a, [
!isLock.value
? (openBlock(),
createElementBlock('i', {
key: 0,
class: 'iconfont icon-kaisuo text_yellow',
onClick: handleLock,
}))
: (openBlock(),
createElementBlock('i', {
key: 1,
class: 'iconfont icon-suoding',
onClick: handleLock,
})),
]),
]),
])
)
}
},
})
var modulePosition = /* @__PURE__ */ _export_sfc(_sfc_main$N, [
['__scopeId', 'data-v-8a154f0e'],
])
var modulePosition$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: modulePosition,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var moduleText_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$r = (n2) => (
pushScopeId('data-v-54681432'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$H = { class: 'text' }
const _hoisted_2$B = { class: 'text_wrap' }
const _hoisted_3$z = {
key: 0,
class: 'text_fonts',
}
const _hoisted_4$t = { class: 'cms-el-color-picker-x' }
const _hoisted_5$q = {
key: 1,
class: 'text_aligns',
}
const _hoisted_6$m = { class: 'text_aligns_inner' }
const _hoisted_7$k = /* @__PURE__ */ _withScopeId$r(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-jiacu' },
null,
-1
)
)
const _hoisted_8$k = [_hoisted_7$k]
const _hoisted_9$k = /* @__PURE__ */ _withScopeId$r(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-xieti' },
null,
-1
)
)
const _hoisted_10$j = [_hoisted_9$k]
const _hoisted_11$h = /* @__PURE__ */ _withScopeId$r(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-xiahuaxian' },
null,
-1
)
)
const _hoisted_12$h = [_hoisted_11$h]
const _hoisted_13$f = { class: 'text_aligns_inner' }
const _hoisted_14$d = /* @__PURE__ */ _withScopeId$r(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-zuo' },
null,
-1
)
)
const _hoisted_15$d = [_hoisted_14$d]
const _hoisted_16$d = /* @__PURE__ */ _withScopeId$r(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-zhong' },
null,
-1
)
)
const _hoisted_17$c = [_hoisted_16$d]
const _hoisted_18$b = /* @__PURE__ */ _withScopeId$r(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-you' },
null,
-1
)
)
const _hoisted_19$a = [_hoisted_18$b]
const _hoisted_20$9 = /* @__PURE__ */ _withScopeId$r(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-dingduiqi' },
null,
-1
)
)
const _hoisted_21$7 = [_hoisted_20$9]
const _hoisted_22$7 = /* @__PURE__ */ _withScopeId$r(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-chuizhijuzhongduiqi' },
null,
-1
)
)
const _hoisted_23$4 = [_hoisted_22$7]
const _hoisted_24$4 = /* @__PURE__ */ _withScopeId$r(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-diduiqi' },
null,
-1
)
)
const _hoisted_25$3 = [_hoisted_24$4]
const _hoisted_26$3 = {
key: 2,
class: 'text_spaces',
}
const _hoisted_27$3 = {
key: 0,
class: 'text_spaces_inner',
}
const _hoisted_28$2 = /* @__PURE__ */ _withScopeId$r(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u5B57\u95F4\u8DDD', -1)
)
const _hoisted_29$1 = {
key: 1,
class: 'text_spaces_inner',
}
const _hoisted_30$1 = /* @__PURE__ */ _withScopeId$r(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u884C\u95F4\u8DDD', -1)
)
const _sfc_main$M = /* @__PURE__ */ defineComponent({
props: {
styleData: {
type: Object,
default: () => {},
},
textTitle: {
type: String,
default: '\u6587\u672C',
},
},
emits: ['transformData'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const changeData = (type4, val2) => {
val2 = val2 === void 0 ? 0 : val2
if (props2.textTitle === '\u6587\u672C') {
emit2('transformData', type4, val2)
}
if (props2.textTitle === '\u8F93\u5165\u6846\u6587\u672C') {
emit2('transformData', 'inputText', val2, type4)
}
if (props2.textTitle === '\u6309\u94AE\u6587\u672C') {
emit2('transformData', 'buttonText', val2, type4)
}
}
const showSpaceRow = ref(true)
const showTextRow = ref(true)
const showAlignRow = ref(true)
watchEffect(() => {
let keys3 = Object.keys(props2.styleData)
let spaceRow = ['letterSpacing', 'lineHeight']
let textRow = ['fontFamily', 'fontSize', 'color']
let alignRow = ['textAlign', 'alignItems']
if (keys3.length > 0) {
showSpaceRow.value = keys3.some((key2) => spaceRow.includes(key2))
showTextRow.value = keys3.some((key2) => textRow.includes(key2))
showAlignRow.value = keys3.some((key2) => alignRow.includes(key2))
}
})
const opts = ref([
{
label: '\u963F\u91CC\u5DF4\u5DF4 \u666E\u60E0\u4F53',
value: 'Alibaba PuHuiTi',
},
{
label: '\u5FAE\u8F6F\u96C5\u9ED1',
value: '\u5FAE\u8F6F\u96C5\u9ED1',
},
])
const activeItem = ref(['1'])
const handleText = (prop) => {
if (props2.textTitle === '\u6587\u672C') {
if (prop === 'fontWeight') {
emit2(
'transformData',
prop,
props2.styleData[prop] === 800 ? 400 : 800
)
}
if (prop === 'fontStyle') {
emit2(
'transformData',
prop,
props2.styleData[prop] === 'italic' ? 'normal' : 'italic'
)
}
if (prop === 'textDecoration') {
emit2(
'transformData',
prop,
props2.styleData[prop] === 'underline' ? 'none' : 'underline'
)
}
}
if (props2.textTitle === '\u8F93\u5165\u6846\u6587\u672C') {
if (prop === 'fontWeight') {
emit2(
'transformData',
'inputText',
props2.styleData[prop] === 800 ? 400 : 800,
prop
)
}
if (prop === 'fontStyle') {
emit2(
'transformData',
'inputText',
props2.styleData[prop] === 'italic' ? 'normal' : 'italic',
prop
)
}
if (prop === 'textDecoration') {
emit2(
'transformData',
'inputText',
props2.styleData[prop] === 'underline' ? 'none' : 'underline',
prop
)
}
}
if (props2.textTitle === '\u6309\u94AE\u6587\u672C') {
if (prop === 'fontWeight') {
emit2(
'transformData',
'buttonText',
props2.styleData[prop] === 800 ? 400 : 800,
prop
)
}
if (prop === 'fontStyle') {
emit2(
'transformData',
'buttonText',
props2.styleData[prop] === 'italic' ? 'normal' : 'italic',
prop
)
}
if (prop === 'textDecoration') {
emit2(
'transformData',
'buttonText',
props2.styleData[prop] === 'underline' ? 'none' : 'underline',
prop
)
}
}
}
const handleAlign = (type4, value2) => {
if (props2.textTitle === '\u6587\u672C') {
emit2('transformData', type4, value2)
}
if (props2.textTitle === '\u8F93\u5165\u6846\u6587\u672C') {
emit2('transformData', 'inputText', value2, type4)
}
if (props2.textTitle === '\u6309\u94AE\u6587\u672C') {
emit2('transformData', 'buttonText', value2, type4)
}
}
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_color_picker = resolveComponent('el-color-picker')
const _component_el_tooltip = resolveComponent('el-tooltip')
const _component_el_collapse_item = resolveComponent('el-collapse-item')
const _component_el_collapse = resolveComponent('el-collapse')
return (
openBlock(),
createElementBlock('div', _hoisted_1$H, [
createVNode$1(
_component_el_collapse,
{
class: 'cms-el-collapse-x',
modelValue: activeItem.value,
'onUpdate:modelValue':
_cache[14] ||
(_cache[14] = ($event) => (activeItem.value = $event)),
},
{
default: withCtx(() => [
createVNode$1(
_component_el_collapse_item,
{
title: __props2.textTitle,
name: '1',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$B, [
showTextRow.value
? (openBlock(),
createElementBlock('div', _hoisted_3$z, [
createElementVNode('div', null, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
'model-value': props2.styleData.fontFamily,
onChange:
_cache[0] ||
(_cache[0] = ($event) =>
changeData('fontFamily', $event)),
placeholder: '\u8BF7\u9009\u62E9',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(opts.value, (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['model-value']
),
]),
createElementVNode('div', null, [
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
controls: false,
'model-value': props2.styleData.fontSize,
onInput:
_cache[1] ||
(_cache[1] = ($event) =>
changeData('fontSize', $event)),
},
null,
8,
['model-value']
),
]),
createElementVNode('div', _hoisted_4$t, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
'model-value': props2.styleData.color,
onChange:
_cache[2] ||
(_cache[2] = ($event) =>
changeData('color', $event)),
},
null,
8,
['model-value']
),
]),
]))
: createCommentVNode('', true),
showAlignRow.value
? (openBlock(),
createElementBlock('div', _hoisted_5$q, [
createElementVNode('div', _hoisted_6$m, [
createVNode$1(
_component_el_tooltip,
{
effect: 'dark',
'popper-class': 'cms-el-tooltip',
'show-after': 300,
content: '\u7C97\u4F53',
placement: 'bottom',
},
{
default: withCtx(() => [
createElementVNode(
'div',
{
class: normalizeClass({
text_icon:
props2.styleData.fontWeight ===
800,
}),
onClick:
_cache[3] ||
(_cache[3] = ($event) =>
handleText('fontWeight')),
},
_hoisted_8$k,
2
),
]),
_: 1,
}
),
createVNode$1(
_component_el_tooltip,
{
effect: 'dark',
'popper-class': 'cms-el-tooltip',
'show-after': 300,
content: '\u659C\u4F53',
placement: 'bottom',
},
{
default: withCtx(() => [
createElementVNode(
'div',
{
class: normalizeClass({
text_icon:
props2.styleData.fontStyle ===
'italic',
}),
onClick:
_cache[4] ||
(_cache[4] = ($event) =>
handleText('fontStyle')),
},
_hoisted_10$j,
2
),
]),
_: 1,
}
),
createVNode$1(
_component_el_tooltip,
{
effect: 'dark',
'popper-class': 'cms-el-tooltip',
'show-after': 300,
content: '\u4E0B\u6ED1\u7EBF',
placement: 'bottom',
},
{
default: withCtx(() => [
createElementVNode(
'div',
{
class: normalizeClass({
text_icon:
props2.styleData
.textDecoration === 'underline',
}),
onClick:
_cache[5] ||
(_cache[5] = ($event) =>
handleText('textDecoration')),
},
_hoisted_12$h,
2
),
]),
_: 1,
}
),
]),
createElementVNode('div', _hoisted_13$f, [
createVNode$1(
_component_el_tooltip,
{
effect: 'dark',
'popper-class': 'cms-el-tooltip',
'show-after': 300,
content: '\u5DE6\u5BF9\u9F50',
placement: 'bottom',
},
{
default: withCtx(() => [
createElementVNode(
'div',
{
class: normalizeClass({
text_icon:
props2.styleData.textAlign ===
'left',
}),
onClick:
_cache[6] ||
(_cache[6] = ($event) =>
handleAlign('textAlign', 'left')),
},
_hoisted_15$d,
2
),
]),
_: 1,
}
),
createVNode$1(
_component_el_tooltip,
{
effect: 'dark',
'popper-class': 'cms-el-tooltip',
'show-after': 300,
content: '\u5C45\u4E2D\u5BF9\u9F50',
placement: 'bottom',
},
{
default: withCtx(() => [
createElementVNode(
'div',
{
class: normalizeClass({
text_icon:
props2.styleData.textAlign ===
'center',
}),
onClick:
_cache[7] ||
(_cache[7] = ($event) =>
handleAlign(
'textAlign',
'center'
)),
},
_hoisted_17$c,
2
),
]),
_: 1,
}
),
createVNode$1(
_component_el_tooltip,
{
effect: 'dark',
'popper-class': 'cms-el-tooltip',
'show-after': 300,
content: '\u53F3\u5BF9\u9F50',
placement: 'bottom',
},
{
default: withCtx(() => [
createElementVNode(
'div',
{
class: normalizeClass({
text_icon:
props2.styleData.textAlign ===
'right',
}),
onClick:
_cache[8] ||
(_cache[8] = ($event) =>
handleAlign(
'textAlign',
'right'
)),
},
_hoisted_19$a,
2
),
]),
_: 1,
}
),
createVNode$1(
_component_el_tooltip,
{
effect: 'dark',
'popper-class': 'cms-el-tooltip',
'show-after': 300,
content: '\u9876\u90E8\u5BF9\u9F50',
placement: 'bottom',
},
{
default: withCtx(() => [
createElementVNode(
'div',
{
class: normalizeClass({
text_icon:
props2.styleData.alignItems ===
'flex-start',
}),
onClick:
_cache[9] ||
(_cache[9] = ($event) =>
handleAlign(
'alignItems',
'flex-start'
)),
},
_hoisted_21$7,
2
),
]),
_: 1,
}
),
createVNode$1(
_component_el_tooltip,
{
effect: 'dark',
'popper-class': 'cms-el-tooltip',
'show-after': 300,
content: '\u5C45\u4E2D\u5BF9\u9F50',
placement: 'bottom',
},
{
default: withCtx(() => [
createElementVNode(
'div',
{
class: normalizeClass({
text_icon:
props2.styleData.alignItems ===
'center',
}),
onClick:
_cache[10] ||
(_cache[10] = ($event) =>
handleAlign(
'alignItems',
'center'
)),
},
_hoisted_23$4,
2
),
]),
_: 1,
}
),
createVNode$1(
_component_el_tooltip,
{
effect: 'dark',
'popper-class': 'cms-el-tooltip',
'show-after': 300,
content: '\u5E95\u90E8\u5BF9\u9F50',
placement: 'bottom',
},
{
default: withCtx(() => [
createElementVNode(
'div',
{
class: normalizeClass({
text_icon:
props2.styleData.alignItems ===
'flex-end',
}),
onClick:
_cache[11] ||
(_cache[11] = ($event) =>
handleAlign(
'alignItems',
'flex-end'
)),
},
_hoisted_25$3,
2
),
]),
_: 1,
}
),
]),
]))
: createCommentVNode('', true),
showSpaceRow.value
? (openBlock(),
createElementBlock('div', _hoisted_26$3, [
'letterSpacing' in props2.styleData
? (openBlock(),
createElementBlock('div', _hoisted_27$3, [
_hoisted_28$2,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
controls: false,
'model-value':
props2.styleData.letterSpacing,
onInput:
_cache[12] ||
(_cache[12] = ($event) =>
changeData(
'letterSpacing',
$event
)),
},
null,
8,
['model-value']
),
]))
: createCommentVNode('', true),
'lineHeight' in props2.styleData
? (openBlock(),
createElementBlock('div', _hoisted_29$1, [
_hoisted_30$1,
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
controls: false,
'model-value':
props2.styleData.lineHeight,
onInput:
_cache[13] ||
(_cache[13] = ($event) =>
changeData('lineHeight', $event)),
},
null,
8,
['model-value']
),
]))
: createCommentVNode('', true),
]))
: createCommentVNode('', true),
]),
]),
_: 1,
},
8,
['title']
),
]),
_: 1,
},
8,
['modelValue']
),
])
)
}
},
})
var moduleText = /* @__PURE__ */ _export_sfc(_sfc_main$M, [
['__scopeId', 'data-v-54681432'],
])
var moduleText$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: moduleText,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var moduleTitle_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$G = { class: 'title' }
const _sfc_main$L = /* @__PURE__ */ defineComponent({
setup(__props2) {
const inputVal = ref('\u77E9\u5F621')
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
return (
openBlock(),
createElementBlock('div', _hoisted_1$G, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
modelValue: inputVal.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (inputVal.value = $event)),
},
null,
8,
['modelValue']
),
])
)
}
},
})
var moduleTitle = /* @__PURE__ */ _export_sfc(_sfc_main$L, [
['__scopeId', 'data-v-cb333644'],
])
var moduleTitle$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: moduleTitle,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
function delGroupImageFile(group, file2) {
return request({
url: `/api/v1/view/image/gallery/${file2}?group=${group}`,
method: 'delete',
silent: true,
})
}
function getImageTree(keyword, groupPath) {
return request({
url: `/api/v1/view/image/gallery/tree?keyword=${keyword}&groupPath=${groupPath}`,
method: 'get',
silent: true,
})
}
function delGroupAllImage(group) {
return request({
url: `/api/v1/view/image/gallery?group=${group}`,
method: 'delete',
silent: true,
})
}
function reGroupName(group, rename) {
return request({
url: `/api/v1/view/image/gallery/rename?group=${group}`,
method: 'put',
data: `${rename}`,
silent: true,
})
}
function reGroupImageName(group, fileName, rename) {
return request({
url: `/api/v1/view/image/gallery/${fileName}/rename?group=${group}`,
method: 'put',
data: rename,
silent: true,
})
}
function addImageFile(name2, groupKey) {
return request({
url: `/api/v1/view/image/gallery?groupKey=${groupKey}`,
method: 'post',
data: name2,
silent: true,
})
}
function updateImg(data2, group) {
return request({
url: `/api/v1/view/image/gallery?group=${group}`,
method: 'post',
data: data2,
silent: true,
})
}
var GalleryMaterial_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$q = (n2) => (
pushScopeId('data-v-81928440'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$F = { class: 'component-gallery-material' }
const _hoisted_2$A = { class: 'component-gallery-material-other' }
const _hoisted_3$y = { class: 'component-box-module-search-input' }
const _hoisted_4$s = { class: 'component-gallery-material-collapse-title' }
const _hoisted_5$p = /* @__PURE__ */ _withScopeId$q(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-xiala2' },
null,
-1
)
)
const _hoisted_6$l = [_hoisted_5$p]
const _hoisted_7$j = [
'onClick',
'onBlur',
'onKeydown',
'disabled',
'onUpdate:modelValue',
]
const _hoisted_8$j = { class: 'component-gallery-material-collapse-righticon' }
const _hoisted_9$j = ['onClick']
const _hoisted_10$i = ['onClick']
const _hoisted_11$g = { class: 'component-gallery-material-list' }
const _hoisted_12$g = ['onMouseenter', 'onMouseleave']
const _hoisted_13$e = [
'draggable',
'ondragstart',
'ondragend',
'onClick',
'src',
]
const _hoisted_14$c = { class: 'img-icon' }
const _hoisted_15$c = ['onClick']
const _hoisted_16$c = ['onClick']
const _hoisted_17$b = {
key: 0,
class: 'iconfont icon-gouxuan',
}
const _hoisted_18$a = ['onDblclick']
const _hoisted_19$9 = {
key: 1,
class: 'item-img-title edit',
}
const _hoisted_20$8 = { class: 'no-image-class' }
const _hoisted_21$6 = { class: 'no-image-class-tips' }
const _hoisted_22$6 = /* @__PURE__ */ createTextVNode(
' \u6682\u65E0\uFF0C\u8BF7\u5148 '
)
const _hoisted_23$3 = /* @__PURE__ */ _withScopeId$q(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u4E0A\u4F20\u56FE\u7247',
-1
)
)
const _hoisted_24$3 = {
key: 0,
class: 'component-gallery-material-empty',
}
const _hoisted_25$2 = /* @__PURE__ */ createTextVNode(
'\u6682\u65E0\uFF0C\u8BF7\u5148 '
)
const _hoisted_26$2 = { class: 'component-gallery-material-uploadshow' }
const _hoisted_27$2 = { class: 'uploadshow-box' }
const _hoisted_28$1 = { style: { float: 'right' } }
const _hoisted_29 = { class: 'tips' }
const _hoisted_30 = { class: 'el-dialog__footer' }
const _hoisted_31$1 = /* @__PURE__ */ _withScopeId$q(() =>
/* @__PURE__ */ createElementVNode(
'button',
{ class: 'btn btn-submit' },
'\u9009\u62E9\u56FE\u7247',
-1
)
)
const _hoisted_32$1 = /* @__PURE__ */ _withScopeId$q(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'tips' },
'\u5C06\u4EE5\u4E0A\u6587\u4EF6\u5939\u7684\u56FE\u7247\u5BFC\u51FA\u81F3',
-1
)
)
const _hoisted_33$1 = { class: 'el-dialog__footer' }
const _sfc_main$K = /* @__PURE__ */ defineComponent({
props: {
galleryLabel: {
type: String,
default: '\u6211\u7684',
},
draggable: {
type: Boolean,
default: true,
},
modelType: {
type: String,
required: false,
default: () => {
return ''
},
},
components: {
type: Array,
required: false,
default: () => {
return []
},
},
},
emits: ['list-item-mouse-down', 'imgDrag', 'imgTrigger'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
function collapseChange(item2) {
item2.isActive = !item2.isActive
scroll()
let galleryHeight = galleryMaterialRef.value.clientHeight
nextTick(() => {
let height = 0
while (
galleryHeight > height &&
allPictureList.value.length > pictureList.value.length
) {
pictureList.value.push(allPictureList.value[pictureList.value.length])
setTimeout(() => {
const element =
document.getElementsByClassName('collId')[
pictureList.value.length - 1
]
height += element.clientHeight
})
}
})
}
const ACCEPT = ['.jpg', '.jpeg', '.png', '.gif', '.svg']
const ACCEPT_TEXT = ACCEPT.map((e2) => e2.slice(1))
.join('/')
.toUpperCase()
const BASE_URL = request.defaults.baseURL
const galleryMaterialRef = ref()
const collRef = ref()
let headers = ref({})
let searchKeyWord = ref('')
let lastFileName = ref('')
let dialogVisible = ref(false)
let pictureList = ref([])
let activeList = ref([])
const select2 = ref(false)
const selectedMap = ref(/* @__PURE__ */ new Map())
let titleRefs = {}
let imgRefs = {}
const setItemTitleRef = (el2, key2) => {
if (el2) {
titleRefs[key2] = el2
}
}
const setImgRef = (el2, key2) => {
if (el2) {
imgRefs[key2] = el2
}
}
function drag(el2, item2) {
emit2('imgDrag', el2, item2)
}
function dragend(el2, item2, groupItem) {}
async function imgTrigger(item2, groupItem) {
if (!props2.draggable) {
let imgUrl = await createProjectImg(groupItem.key, item2.key)
emit2('imgTrigger', imgUrl)
}
if (select2.value) {
const key2 = item2.groupKey + item2.imageKey
if (selectedMap.value.has(key2)) {
selectedMap.value.delete(key2)
} else {
selectedMap.value.set(key2, item2)
}
}
}
const titleInputClick = (el2, item2) => {
if (!item2.isDisabled) {
el2.stopPropagation()
}
}
const listItemMouseEnter = (item2) => {
if (!select2.value) {
item2.showIcon = true
}
}
const listItemMouseLeave = (item2) => {
item2.showIcon = false
}
const uploadImage = () => {
if (lastFileName.value == '' && allPictureList.value.length) {
lastFileName.value = allPictureList.value[0].key
}
dialogVisible.value = true
}
const downloadPic = (item2) => {
fetchBlob(item2.imgUrl, 'GET').then((blob) => {
utils.downFile(blob, item2.name)
})
}
let oldImgLeftName = ''
const editImgName = (item2) => {
oldImgLeftName = item2.leftName
item2.isDisabled = false
nextTick(() => {
imgRefs[item2.key].select()
})
}
const saveImgName = (item2) => {
item2.isDisabled = true
if (item2.leftName == oldImgLeftName) return
if (!item2.leftName.trim()) {
ElMessage({
message: `\u56FE\u7247\u540D\u5B57\u4E0D\u80FD\u4E3A\u7A7A`,
type: 'error',
customClass: 'cms-el-message el-message--error',
})
item2.leftName = oldImgLeftName
return
}
const newName = item2.leftName + '.' + item2.type
reGroupImageName(item2.groupKey, item2.key, newName)
.then((res) => {
if (res && res.imageKey && res.imageName) {
const key2 = res.imageKey
const name2 = res.imageName
item2.imageKey = key2
item2.imageName = name2
item2.leftName = name2.substring(0, name2.lastIndexOf('.'))
item2.imgUrl = createImageUrl(key2, item2.groupKey)
item2.key = key2
item2.name = name2
}
if (!res) {
ElMessage({
message: `\u7F16\u8F91\u5931\u8D25`,
type: 'error',
customClass: 'cms-el-message el-message--error',
})
item2.leftName = oldImgLeftName
}
})
.catch(() => {
item2.leftName = oldImgLeftName
})
}
const deletePic = async (el2, item2, index2, index1) => {
delGroupImageFile(item2.groupKey, item2.key).then(() => {
pictureList.value[index2].items.splice(index1, 1)
})
}
const batchDeletePic = async () => {
ElMessageBox.confirm(
'\u662F\u5426\u786E\u8BA4\u64CD\u4F5C\uFF0C\u5C06\u5220\u9664\u9009\u4E2D\u7684\u56FE\u7247',
{
confirmButtonText: '\u786E\u8BA4',
cancelButtonText: '\u53D6\u6D88',
}
).then(fn2)
function fn2() {
Array.from(selectedMap.value.values()).forEach(async (item2) => {
await delGroupImageFile(item2.groupKey, item2.key).then(() => {
const items =
pictureList.value.find((e2) => e2.key === item2.groupKey).items ||
[]
const index2 = items.findIndex(
(e2) => e2.imageKey === item2.imageKey
)
items.splice(index2, 1)
})
})
select2.value = false
selectedMap.value.clear()
}
}
async function fetchBlob(fetchUrl, method4 = 'POST', body = null) {
const response = await window.fetch(fetchUrl, {
method: method4,
body: body ? JSON.stringify(body) : null,
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest',
},
})
const blob = await response.blob()
return blob
}
const batchDownloadPic = async () => {
const zip2 = new JSZip()
Array.from(selectedMap.value.values()).forEach((item2) => {
zip2.file(item2.name, fetchBlob(item2.imgUrl, 'GET'))
})
zip2
.generateAsync({ type: 'blob' })
.then(function (blob) {
utils.downFile(blob, 'download.zip')
toast('\u5BFC\u51FA\u6210\u529F', 'success')
return true
})
.catch((err) => {
console.error(err)
toast('\u5BFC\u51FA\u5931\u8D25', 'error')
})
.finally(() => {
select2.value = false
selectedMap.value.clear()
})
}
let collapseItemEditorName = ''
const collapseItemEditIconClick = (item2) => {
collapseItemEditorName = item2.name
item2.isDisabled = false
nextTick(() => {
titleRefs[item2.key].select()
})
}
const collapseItemEditor = (item2) => {
item2.isDisabled = true
if (!item2.name.trim()) {
ElMessage({
message: `\u6587\u4EF6\u5939\u540D\u5B57\u4E0D\u80FD\u4E3A\u7A7A`,
type: 'error',
customClass: 'cms-el-message el-message--error',
})
item2.name = collapseItemEditorName
return
}
if (item2.name == collapseItemEditorName) return
const collapseItemEditorKey = item2.key
reGroupName(item2.key, item2.name)
.then((res) => {
if (res && res.groupKey && res.groupName) {
item2.key = res.groupKey
item2.name = res.groupName
const activeIndex = activeList.value.findIndex(
(e2) => e2 == collapseItemEditorKey
)
if (activeIndex != -1) {
activeList.value.splice(activeIndex, 1, res.groupKey)
}
}
if (!res) {
ElMessage({
message: `\u7F16\u8F91\u5931\u8D25`,
type: 'error',
customClass: 'cms-el-message el-message--error',
})
item2.name = collapseItemEditorName
}
})
.catch(() => {
item2.name = collapseItemEditorName
})
}
const collapseItemDelete = (item2, index2) => {
function fn2() {
ElMessageBox.confirm('\u662F\u5426\u786E\u8BA4\u5220\u9664\uFF1F', {
confirmButtonText: '\u786E\u8BA4',
cancelButtonText: '\u53D6\u6D88',
}).then(() => {
let key2 = item2.key
delGroupAllImage(key2).then(() => {
pictureList.value.splice(index2, 1)
for (let i2 = 0; i2 < allPictureList.value.length; i2++) {
let item22 = allPictureList.value[i2]
if (item22.key == key2) {
allPictureList.value.splice(i2, 1)
break
}
}
exportFile2.group = ''
lastFileName.value = ''
})
})
}
fn2()
}
const addImageFileFun = () => {
let name2 = '\u672A\u547D\u540D\u5206\u7EC4'
let timer2
addImageFile(name2, props2.galleryLabel).then(async (data2) => {
if (data2?.groupKey && data2?.groupName) {
let fileData = {
name: data2.groupName,
key: data2.groupKey,
isActive: true,
items: [],
isDisabled: true,
}
allPictureList.value.push(fileData)
pictureList.value = allPictureList.value
activeList.value.push(data2.groupKey)
clearTimeout(timer2)
timer2 = setTimeout(() => {
const scrollBox = document.getElementById('galleryMaterialId')
if (!scrollBox) return
scrollBox.scrollTo({
top: scrollBox.scrollHeight,
behavior: 'smooth',
})
}, 200)
}
})
}
const selectModeFun = () => {
if (selectedMap.value.size) {
batchDeletePic()
} else {
select2.value = !select2.value
selectedMap.value.clear()
}
}
let allPictureList = ref([])
const createImageUrl = (imageKey, groupKey) => {
return `${BASE_URL}/api/v1/view/image/gallery/${imageKey}?compress=true&maxWidth=80&maxHeight=80&group=${groupKey}`
}
const createImageItem = (imageItem) => {
const name2 = imageItem.imageName
const obj = {
...imageItem,
isDisabled: true,
leftName: name2.substring(0, name2.lastIndexOf('.')),
type: getFileType(name2),
imgUrl: createImageUrl(imageItem.imageKey, imageItem.groupKey),
key: imageItem.imageKey,
name: name2,
}
return obj
}
const getImageTreefun = async (keyWord, isInit = false) => {
await getImageTree(keyWord, props2.galleryLabel).then((res) => {
pictureList.value = []
let groups = res.groups
let values2 = res.values
let showNum = 0
allPictureList.value = groups.map((item2) => {
let list2 = values2
.filter((v4) => v4.groupKey == item2.groupKey)
.map((v4) => createImageItem(v4))
let pict = allPictureList.value.filter(
(pic) => pic.key === item2.groupKey
)
let data2 = {
isDisabled: true,
isActive:
isInit ||
activeList.value.includes(item2.groupKey) ||
!!pict[0]?.isActive,
items: list2,
key: item2.groupKey,
name: item2.groupName,
}
if (showNum < 20) {
if (data2.isActive) {
showNum += list2.length
}
pictureList.value = [...pictureList.value, data2]
}
if (data2.isActive && !activeList.value.includes(item2.groupKey)) {
activeList.value.push(data2.key)
}
return data2
})
})
}
let uploadNumber = ref(0)
let progressNumber = ref(0)
const uploadSuccess = () => {
progressNumber.value++
if (progressNumber.value == uploadNumber.value) {
uploadNumber.value = 0
progressNumber.value = 0
}
getImageTreefun('')
}
const closeDialog = () => {
dialogVisible.value = false
}
const MAX_SIZE = 5 * 1024 * 1024
const onChange = (file2, group) => {
closeDialog()
let suffix2 = getFileType(file2.name)
let size = file2.size
if (ACCEPT.indexOf('.' + suffix2) === -1) {
ElMessage({
message: `${file2.name}\u6587\u4EF6\u683C\u5F0F\u9519\u8BEF`,
type: 'error',
customClass: 'cms-el-message el-message--error',
})
} else {
if (size > MAX_SIZE) {
ElMessage({
message: `${file2.name}\u6587\u4EF6\u5927\u5C0F\u8D855M\uFF0C\u4E0A\u4F20\u5931\u8D25`,
type: 'error',
customClass: 'cms-el-message el-message--error',
})
return
}
if (file2) uploadNumber.value++
const updateImgFun = (param) => {
updateImg(param, group).then(async (res) => {
if (res) {
progressNumber.value++
if (progressNumber.value == uploadNumber.value) {
uploadNumber.value = 0
progressNumber.value = 0
}
if (uploadNumber.value == 0) {
const groupData2 = await getImageTree('', group)
if (groupData2?.values) {
const groupImageList = groupData2.values.map((v4) =>
createImageItem(v4)
)
for (let i2 = 0; i2 < allPictureList.value.length; i2++) {
if (allPictureList.value[i2].key == group) {
const newGroupItem = {
...allPictureList.value[i2],
items: groupImageList,
}
allPictureList.value.splice(i2, 1, newGroupItem)
if (pictureList.value[i2]) {
pictureList.value.splice(i2, 1, newGroupItem)
}
break
}
}
}
}
} else {
ElMessage({
message: '\u56FE\u7247\u4E0A\u4F20\u5931\u8D25',
type: 'error',
customClass: 'cms-el-message el-message--error',
})
}
})
}
if (suffix2 == 'gif') {
let param = new FormData()
param.append('formFiles', file2.raw)
updateImgFun(param)
} else {
uploadBefore(file2.raw)
.then((fileData) => {
let newFile = new File([fileData], file2.name)
let param = new FormData()
param.append('formFiles', newFile)
updateImgFun(param)
})
.catch(() => {})
}
}
}
const getFileType = (name2) => {
let startIndex = name2.lastIndexOf('.')
if (startIndex !== -1) {
return name2.slice(startIndex + 1).toLowerCase()
} else {
return ''
}
}
const scroll = () => {
if (document.getElementById('collId')) {
let scrollTop = galleryMaterialRef.value.scrollTop
let galleryHeight = galleryMaterialRef.value.clientHeight
let collIdHeight = document.getElementById('collId')?.clientHeight || 0
if (
scrollTop + galleryHeight >= collIdHeight &&
allPictureList.value.length > pictureList.value.length
) {
pictureList.value.push(allPictureList.value[pictureList.value.length])
}
}
}
const exportFile2 = reactive({
visible: false,
group: '',
confirmText: !window.electron
? '\u5BFC\u51FA'
: '\u9009\u62E9\u8DEF\u5F84',
open() {
if (select2.value) {
batchDownloadPic()
return
}
if (!exportFile2.group && allPictureList.value.length) {
exportFile2.group = allPictureList.value[0].key
}
exportFile2.visible = true
},
close() {
exportFile2.visible = false
},
confirm() {
const groupItem = allPictureList.value.find(
(e2) => e2.key == exportFile2.group
)
const url2 = `/api/v1/view/image/gallery/export?group=${exportFile2.group}`
const name2 = `\u56FE\u5E93\u7D20\u6750_\u6211\u7684_${groupItem?.name}.zip`
request({
responseType: 'blob',
url: url2,
method: 'get',
silent: true,
}).then((res) => {
if (res) {
utils.downFile(res, name2)
ElMessage.success('\u5BFC\u51FA\u6210\u529F')
} else {
ElMessage.error('\u5BFC\u51FA\u5931\u8D25')
}
})
exportFile2.close()
},
})
onMounted(() => {
activeList.value = []
getImageTreefun('', true)
galleryMaterialRef.value.addEventListener('scroll', scroll)
})
onUnmounted(() => {
if (galleryMaterialRef.value) {
galleryMaterialRef.value.removeEventListener('scroll', scroll)
}
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_button = resolveComponent('el-button')
const _component_el_image = resolveComponent('el-image')
const _component_el_upload = resolveComponent('el-upload')
const _component_el_collapse_item = resolveComponent('el-collapse-item')
const _component_el_collapse = resolveComponent('el-collapse')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', _hoisted_1$F, [
createElementVNode('div', _hoisted_2$A, [
createElementVNode('div', _hoisted_3$y, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
modelValue: unref(searchKeyWord),
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
isRef(searchKeyWord)
? (searchKeyWord.value = $event)
: (searchKeyWord = $event)),
onChange: getImageTreefun,
clearable: '',
},
null,
8,
['modelValue']
),
]),
createVNode$1(
_component_el_button,
{
onClick: selectModeFun,
class: normalizeClass([
'iconfont icon-piliang icon-operations',
{
active: select2.value,
'icon-piliang': !selectedMap.value.size,
'icon-qingchu': selectedMap.value.size,
},
]),
title: !selectedMap.value.size
? '\u9009\u62E9\u6A21\u5F0F'
: '\u6279\u91CF\u5220\u9664',
},
null,
8,
['class', 'title']
),
createVNode$1(_component_el_button, {
onClick: addImageFileFun,
class: 'iconfont icon-wenjianjia icon-operations folder',
title: '\u65B0\u5EFA\u6587\u4EF6\u5939',
'data-tooltip-placement': 'bottom-start',
}),
createVNode$1(
_component_el_button,
{
onClick: uploadImage,
disabled: !allPictureList.value?.length,
class: 'iconfont icon-daoru2 icon-operations',
title: '\u5BFC\u5165',
},
null,
8,
['disabled']
),
createVNode$1(
_component_el_button,
{
onClick: unref(exportFile2).open,
disabled: !allPictureList.value?.length,
class: 'iconfont icon-daochu3 icon-operations',
title: '\u5BFC\u51FA',
},
null,
8,
['onClick', 'disabled']
),
]),
createElementVNode(
'div',
{
class: 'component-gallery-material-collapse',
id: 'galleryMaterialId',
ref_key: 'galleryMaterialRef',
ref: galleryMaterialRef,
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(pictureList), (item2, index2) => {
return (
openBlock(),
createBlock(
_component_el_collapse,
{
onChange: ($event) => collapseChange(item2),
key: 'collapse' + index2,
modelValue: unref(activeList),
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
isRef(activeList)
? (activeList.value = $event)
: (activeList = $event)),
ref_for: true,
ref_key: 'collRef',
ref: collRef,
id: 'collId',
class: 'collId',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_collapse_item,
{
name: item2.key,
},
{
title: withCtx(() => [
createElementVNode('div', _hoisted_4$s, [
createElementVNode(
'div',
{
class: normalizeClass([
'component-gallery-material-collapse-icon',
{ 'is-ative': item2.isActive },
]),
},
_hoisted_6$l,
2
),
withDirectives(
createElementVNode(
'input',
{
class: 'collapse-title-input',
ref_for: true,
ref: (el2) =>
setItemTitleRef(el2, item2.key),
onClick: ($event) =>
titleInputClick($event, item2),
onBlur: ($event) =>
collapseItemEditor(item2),
onKeydown: withKeys(
withModifiers(
($event) =>
unref(titleRefs)[
item2.key
]?.blur(),
['stop', 'prevent']
),
['enter']
),
disabled: item2.isDisabled,
'onUpdate:modelValue': ($event) =>
(item2.name = $event),
},
null,
40,
_hoisted_7$j
),
[[vModelText, item2.name]]
),
]),
createElementVNode('div', _hoisted_8$j, [
createElementVNode(
'span',
{
class:
'iconfont icon-bianjigongcheng left-icon',
title: '\u7F16\u8F91',
onClick: withModifiers(
($event) =>
collapseItemEditIconClick(item2),
['stop']
),
},
null,
8,
_hoisted_9$j
),
createElementVNode(
'span',
{
class: 'iconfont icon-qingchu right-icon',
title: '\u5220\u9664',
onClick: withModifiers(
($event) =>
collapseItemDelete(item2, index2),
['stop']
),
},
null,
8,
_hoisted_10$i
),
]),
]),
default: withCtx(() => [
createElementVNode('div', _hoisted_11$g, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(item2.items, (item1, index1) => {
return withDirectives(
(openBlock(),
createElementBlock(
'div',
{
key: index1,
onselectstart: 'return false',
class:
'component-gallery-material-list-item',
},
[
createElementVNode(
'div',
{
class: normalizeClass([
'component-gallery-material-list-item-img',
{
active:
selectedMap.value.has(
item1.groupKey +
item1.imageKey
),
},
]),
onMouseenter: ($event) =>
listItemMouseEnter(item1),
onMouseleave: ($event) =>
listItemMouseLeave(item1),
},
[
createElementVNode(
'img',
{
draggable:
__props2.draggable,
ondragstart: (e2) =>
drag(e2, item1),
ondragend: (e2) =>
dragend(),
onClick: ($event) =>
imgTrigger(item1, item2),
src: item1.imgUrl,
loading: 'lazy',
class: normalizeClass([
'item-img',
{
'un-draggable':
!unref(props2)
.draggable,
},
]),
},
null,
10,
_hoisted_13$e
),
withDirectives(
createElementVNode(
'div',
_hoisted_14$c,
[
createElementVNode(
'span',
{
class:
'iconfont icon-baocuntupian',
title:
'\u4E0B\u8F7D\u56FE\u7247',
'data-tooltip-placement':
'bottom-start',
onMousedown:
_cache[1] ||
(_cache[1] =
withModifiers(() => {}, [
'stop',
])),
onClick: ($event) =>
downloadPic(item1),
},
null,
40,
_hoisted_15$c
),
createElementVNode(
'span',
{
class:
'iconfont icon-qingchu',
title: '\u5220\u9664',
onMousedown:
_cache[2] ||
(_cache[2] =
withModifiers(() => {}, [
'stop',
])),
onClick: ($event) =>
deletePic(
$event,
item1,
index2,
index1
),
},
null,
40,
_hoisted_16$c
),
],
512
),
[[vShow, item1.showIcon]]
),
selectedMap.value.has(
item1.groupKey +
item1.imageKey
)
? (openBlock(),
createElementBlock(
'span',
_hoisted_17$b
))
: createCommentVNode(
'',
true
),
],
42,
_hoisted_12$g
),
item1.isDisabled
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class:
'item-img-title show',
onDblclick: ($event) =>
editImgName(item1),
},
[
(openBlock(),
createBlock(
EllipsisTooltip,
{
width: '100%',
placement:
'bottom-start',
content: item1.name,
key: item1.name,
},
null,
8,
['content']
)),
],
40,
_hoisted_18$a
))
: (openBlock(),
createElementBlock(
'div',
_hoisted_19$9,
[
createVNode$1(
_component_el_input,
{
class:
'cms-el-input-x img-input',
ref_for: true,
ref: (el2) =>
setImgRef(
el2,
item1.key
),
onBlur: ($event) =>
saveImgName(item1),
onKeydown:
_cache[3] ||
(_cache[3] = withKeys(
withModifiers(
($event) =>
$event.target?.blur(),
['prevent']
),
['enter']
)),
modelValue:
item1.leftName,
'onUpdate:modelValue': (
$event
) =>
(item1.leftName =
$event),
},
null,
8,
[
'onBlur',
'modelValue',
'onUpdate:modelValue',
]
),
createElementVNode(
'span',
null,
' .' +
toDisplayString$1(
item1.type
),
1
),
]
)),
]
)),
[[vShow, item2.items.length]]
)
}),
128
)),
withDirectives(
createElementVNode(
'div',
_hoisted_20$8,
[
createVNode$1(
_component_el_image,
{ src: unref(defaultImg) },
null,
8,
['src']
),
createElementVNode(
'div',
_hoisted_21$6,
[
_hoisted_22$6,
createVNode$1(
_component_el_upload,
{
multiple: true,
limit: 100,
class: 'el-upload',
name: 'formFiles',
'on-success': uploadSuccess,
action: '',
'show-file-list': false,
accept: ACCEPT.join(','),
headers: unref(headers),
'auto-upload': false,
'on-change': (file2) =>
onChange(file2, item2.key),
},
{
default: withCtx(() => [
_hoisted_23$3,
]),
_: 2,
},
1032,
['accept', 'headers', 'on-change']
),
]
),
],
512
),
[[vShow, !item2.items.length]]
),
]),
]),
_: 2,
},
1032,
['name']
),
]),
_: 2,
},
1032,
['onChange', 'modelValue']
)
)
}),
128
)),
],
512
),
!unref(pictureList)?.length
? (openBlock(),
createElementBlock('div', _hoisted_24$3, [
createVNode$1(
_component_el_image,
{ src: unref(defaultImg) },
null,
8,
['src']
),
createElementVNode('p', null, [
_hoisted_25$2,
createElementVNode(
'span',
{ onClick: addImageFileFun },
'\u6DFB\u52A0\u6587\u4EF6\u5939'
),
]),
]))
: createCommentVNode('', true),
withDirectives(
createElementVNode(
'div',
_hoisted_26$2,
[
createElementVNode('div', _hoisted_27$2, [
createElementVNode(
'span',
null,
'\u6B63\u5728\u4E0A\u4F20\u56FE\u7247' +
toDisplayString$1(unref(progressNumber)) +
'/' +
toDisplayString$1(unref(uploadNumber)),
1
),
createElementVNode(
'span',
_hoisted_28$1,
toDisplayString$1(
(
(unref(progressNumber) / unref(uploadNumber)) *
100
).toFixed(2)
) + '%',
1
),
createElementVNode(
'div',
{
class: 'uploadshow-progress',
style: normalizeStyle$1({
width:
(unref(progressNumber) / unref(uploadNumber)) * 100 +
'%',
}),
},
null,
4
),
]),
],
512
),
[[vShow, unref(uploadNumber)]]
),
createVNode$1(
_component_el_dialog,
{
modelValue: unref(dialogVisible),
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) =>
isRef(dialogVisible)
? (dialogVisible.value = $event)
: (dialogVisible = $event)),
title: '\u5BFC\u5165\u56FE\u7247',
'custom-class': 'cms-el-dialog',
width: '450px',
top: '16%',
'close-on-click-modal': false,
'append-to-body': true,
},
{
default: withCtx(() => [
createVNode$1(
_component_el_select,
{
modelValue: unref(lastFileName),
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) =>
isRef(lastFileName)
? (lastFileName.value = $event)
: (lastFileName = $event)),
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(allPictureList.value, (item2, index2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: index2,
label: item2.name,
value: item2.key,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
createElementVNode(
'div',
_hoisted_29,
'\u652F\u6301\u6279\u91CF\u4E0A\u4F20 ' +
toDisplayString$1(unref(ACCEPT_TEXT)),
1
),
createElementVNode('div', _hoisted_30, [
createVNode$1(
_component_el_upload,
{
multiple: true,
limit: 100,
class: 'el-upload',
name: 'formFiles',
'on-success': uploadSuccess,
action: '',
'show-file-list': false,
accept: ACCEPT.join(','),
headers: unref(headers),
'auto-upload': false,
'on-change': (file2) =>
onChange(file2, unref(lastFileName)),
},
{
default: withCtx(() => [_hoisted_31$1]),
_: 1,
},
8,
['accept', 'headers', 'on-change']
),
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: closeDialog,
},
'\u53D6\u6D88'
),
]),
]),
_: 1,
},
8,
['modelValue']
),
createVNode$1(
_component_el_dialog,
{
modelValue: unref(exportFile2).visible,
'onUpdate:modelValue':
_cache[10] ||
(_cache[10] = ($event) =>
(unref(exportFile2).visible = $event)),
title: '\u5BFC\u51FA\u56FE\u7247',
'custom-class': 'cms-el-dialog',
width: '450px',
top: '16%',
'close-on-click-modal': false,
'append-to-body': true,
},
{
default: withCtx(() => [
createVNode$1(
_component_el_select,
{
modelValue: unref(exportFile2).group,
'onUpdate:modelValue':
_cache[7] ||
(_cache[7] = ($event) =>
(unref(exportFile2).group = $event)),
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(allPictureList.value, (item2, index2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: index2,
label: item2.name,
value: item2.key,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
_hoisted_32$1,
createElementVNode('div', _hoisted_33$1, [
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick:
_cache[8] ||
(_cache[8] = (...args) =>
unref(exportFile2).confirm &&
unref(exportFile2).confirm(...args)),
},
toDisplayString$1(unref(exportFile2).confirmText),
1
),
createElementVNode(
'button',
{
class: 'btn',
onClick:
_cache[9] ||
(_cache[9] = (...args) =>
unref(exportFile2).close &&
unref(exportFile2).close(...args)),
},
'\u53D6\u6D88'
),
]),
]),
_: 1,
},
8,
['modelValue']
),
])
)
}
},
})
var GalleryMaterial = /* @__PURE__ */ _export_sfc(_sfc_main$K, [
['__scopeId', 'data-v-81928440'],
])
var GalleryMaterial$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: GalleryMaterial,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var PanelLayout_vue_vue_type_style_index_0_scoped_true_lang$1 = ''
const _withScopeId$p = (n2) => (
pushScopeId('data-v-5d2e9c9c'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$E = { class: 'panel-layout' }
const _hoisted_2$z = { class: 'search' }
const _hoisted_3$x = { style: { position: 'relative' } }
const _hoisted_4$r = { class: 'tab-wrapper' }
const _hoisted_5$o = { class: 'tabs' }
const _hoisted_6$k = ['onClick']
const _hoisted_7$i = ['onClick']
const _hoisted_8$i = { class: 'list' }
const _hoisted_9$i = ['src', 'draggable', 'ondragstart', 'ondragend', 'onClick']
const _hoisted_10$h = {
key: 0,
class: 'empty',
}
const _hoisted_11$f = /* @__PURE__ */ _withScopeId$p(() =>
/* @__PURE__ */ createElementVNode('span', { class: 'bg' }, null, -1)
)
const _hoisted_12$f = /* @__PURE__ */ _withScopeId$p(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'tip' },
'\u6682\u65E0\u6570\u636E',
-1
)
)
const _hoisted_13$d = [_hoisted_11$f, _hoisted_12$f]
const _sfc_main$J = /* @__PURE__ */ defineComponent({
props: {
tabs: null,
data: null,
activeTab: null,
activeSubTab: null,
keyword: null,
draggable: { type: Boolean, default: true },
loadMore: { type: Boolean },
},
emits: [
'update:keyword',
'onSearch',
'onLoadMore',
'onTabChange',
'onSubTabChange',
'imgDrag',
'imgDragend',
'imgTrigger',
],
setup(__props2, { expose, emit: emit2 }) {
const $props2 = __props2
let keyword = ref($props2.keyword)
let activeTab2 = ref($props2.activeTab)
let activeSubTab = ref($props2.activeSubTab)
function search2() {
emit2('update:keyword', keyword.value)
emit2('onSearch', keyword.value)
}
function tabChange(tab) {
activeTab2.value = tab
subTabBarToggle.visible = true
subTabBarToggle.active = false
if (tab.nexts && tab.nexts.length) {
activeSubTab.value = tab.nexts[0]
subTabBarToggle.getVisible()
subTabBarToggle.toggle(false)
}
imageList.initScrollTop()
emit2('onTabChange', tab)
}
function subTabChange(subTab) {
activeSubTab.value = subTab
imageList.initScrollTop()
emit2('onSubTabChange', subTab)
}
function dragstart(e2, item2) {
emit2('imgDrag', e2, item2)
}
function dragend(e2, item2) {
emit2('imgDragend', e2, item2)
}
function click2(e2, item2) {
if (!$props2.draggable) {
emit2('imgTrigger', e2, item2)
}
}
const subTabBar = ref()
const subTabBarToggle = reactive({
wrapperHeight: 25,
diffHeight: 0,
visible: true,
active: false,
getVisible() {
nextTick(() => {
const ulH = subTabBar.value?.clientHeight || 0
const liH = subTabBar.value?.firstElementChild?.clientHeight || 0
subTabBarToggle.visible = ulH > liH
})
},
toggle(value2) {
const setValue = (active, wrapperHeight, diffHeight) => {
subTabBarToggle.active = active
subTabBarToggle.wrapperHeight = wrapperHeight
subTabBarToggle.diffHeight = diffHeight
}
if (value2 === false) {
setValue(false, 25, 0)
return
}
if (!subTabBar.value) return
const ulH = subTabBar.value?.clientHeight || 0
const liH = subTabBar.value?.firstElementChild?.clientHeight || 0
const ulWrapperH = subTabBar.value?.parentElement?.clientHeight || 0
if (ulWrapperH > liH) {
setValue(false, liH, 0)
} else {
setValue(true, ulH, ulH - liH)
}
},
})
const imageListRef = ref()
const imageList = reactive({
initScrollTop() {
nextTick(() => {
if (imageListRef.value) imageListRef.value.scrollTop = 0
})
},
loadMoreInBottom() {
if (!imageListRef.value) return
const { scrollHeight, scrollTop, clientHeight } = imageListRef.value
if (Math.ceil(scrollTop + clientHeight) >= scrollHeight) {
if ($props2.loadMore) {
emit2('onLoadMore')
}
}
},
scrollEventListen() {
if (!imageListRef.value) return
useEventListener(
imageListRef.value,
'scroll',
imageList.loadMoreInBottom
)
},
})
onMounted(() => {
imageList?.scrollEventListen()
})
expose({
tabChange,
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
return (
openBlock(),
createElementBlock('div', _hoisted_1$E, [
createElementVNode('section', _hoisted_2$z, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x-search',
modelValue: keyword.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (keyword.value = $event)),
onChange: search2,
clearable: '',
},
null,
8,
['modelValue']
),
]),
createElementVNode('section', _hoisted_3$x, [
createElementVNode('section', _hoisted_4$r, [
createElementVNode('ul', _hoisted_5$o, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList($props2.tabs, (item2) => {
return (
openBlock(),
createElementBlock(
'li',
{
key: item2.key,
onClick: ($event) => tabChange(item2),
class: normalizeClass({
active: item2.key == activeTab2.value?.key,
}),
},
toDisplayString$1(item2.name),
11,
_hoisted_6$k
)
)
}),
128
)),
]),
activeTab2.value?.nexts?.length
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: 'subtab-wrapper',
style: normalizeStyle$1({
height: unref(subTabBarToggle).wrapperHeight + 'px',
}),
},
[
withDirectives(
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont icon-shouqifenlei toggle-btn',
{ active: unref(subTabBarToggle).active },
]),
onClick:
_cache[1] ||
(_cache[1] = (...args) =>
unref(subTabBarToggle).toggle &&
unref(subTabBarToggle).toggle(...args)),
},
null,
2
),
[[vShow, unref(subTabBarToggle).visible]]
),
createElementVNode(
'ul',
{
class: 'subtab',
ref_key: 'subTabBar',
ref: subTabBar,
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(activeTab2.value.nexts, (item2) => {
return (
openBlock(),
createElementBlock(
'li',
{
key: item2.key,
onClick: ($event) => subTabChange(item2),
class: normalizeClass({
active:
item2.key == activeSubTab.value?.key,
}),
style: normalizeStyle$1({
paddingRight:
item2.name?.length == 1
? '34px'
: 'auto',
}),
},
toDisplayString$1(item2.name),
15,
_hoisted_7$i
)
)
}),
128
)),
],
512
),
],
4
))
: createCommentVNode('', true),
]),
createElementVNode('section', _hoisted_8$i, [
createElementVNode(
'ul',
{
ref_key: 'imageListRef',
ref: imageListRef,
style: normalizeStyle$1({
paddingTop: unref(subTabBarToggle).diffHeight + 'px',
}),
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList($props2.data, (item2, i2) => {
return (
openBlock(),
createElementBlock(
'li',
{
key: i2 + item2.imageKey,
class: normalizeClass({
large: activeTab2.value?.size == 'large',
}),
},
[
createElementVNode(
'img',
{
src: item2.imageUrl,
loading: 'lazy',
draggable: $props2.draggable,
ondragstart: (e2) => dragstart(e2, item2),
ondragend: (e2) => dragend(e2, item2),
onClick: (e2) => click2(e2, item2),
class: normalizeClass({
'un-draggable': !$props2.draggable,
}),
},
null,
10,
_hoisted_9$i
),
createVNode$1(
EllipsisTooltip,
{
class: 'name',
width: '100%',
placement: 'bottom-start',
content: item2.imageName,
},
null,
8,
['content']
),
],
2
)
)
}),
128
)),
],
4
),
]),
!$props2.data.length
? (openBlock(),
createElementBlock('section', _hoisted_10$h, _hoisted_13$d))
: createCommentVNode('', true),
]),
])
)
}
},
})
var PanelLayout$2 = /* @__PURE__ */ _export_sfc(_sfc_main$J, [
['__scopeId', 'data-v-5d2e9c9c'],
])
var PanelLayout$3 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: PanelLayout$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var OfficialMaterial_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$D = { class: 'gallery-official' }
const _sfc_main$I = /* @__PURE__ */ defineComponent({
props: {
galleryLabel: null,
draggable: { type: Boolean },
},
emits: ['imgDrag', 'imgTrigger'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const PanelLayoutRef = ref()
let tabs2 = ref([])
let imageList = ref([])
let imageListTotal = []
const pagination = {
size: 20,
count: 0,
total: 0,
}
function loadMore() {
if (pagination.total > imageList.value.length) {
const size = pagination.size
const count2 = pagination.count
const newData = imageListTotal.slice(count2 * size, (count2 + 1) * size)
imageList.value = imageList.value.concat(newData)
pagination.count += 1
}
}
let keyword = ref('')
async function search2() {
tabs2.value = []
imageList.value = []
await getNav()
if (tabs2.value.length) {
PanelLayoutRef.value?.tabChange(tabs2.value[0])
}
}
let groupPath = ref($props2.galleryLabel)
function tabChange(tab) {
groupPath.value = tab?.nexts?.length ? tab.nexts[0].key : tab.key
getData(groupPath.value)
}
function subTabChange(subTab) {
groupPath.value = subTab.key
getData(groupPath.value)
}
const getNav = () => {
return request({
url: `/api/v1/view/image/gallery/struct?group=${$props2.galleryLabel}&keyword=${keyword.value}`,
method: 'get',
silent: true,
}).then((res) => {
if (res?.nexts) {
res.nexts.forEach((e2) => {
if (e2.name == '\u8BBE\u8BA1\u7D20\u6750') e2.size = 'large'
if (e2.nexts) {
const total2 = {
key: e2.key,
name: '\u5168\u90E8',
nexts: null,
}
e2.nexts.unshift(total2)
}
})
tabs2.value = res.nexts
}
})
}
const getData = (groupPath2 = $props2.galleryLabel) => {
const BASE_URL = request.defaults.baseURL
return getImageTree(keyword.value, groupPath2).then((res) => {
imageList.value = []
imageListTotal = []
if (res?.values) {
res.values.forEach((e2) => {
e2.imageUrl = `${BASE_URL}/api/v1/view/image/gallery/${e2.imageKey}?compress=true&maxWidth=158&maxHeight=92&group=${e2.groupKey}`
})
imageListTotal = res.values
pagination.count = 0
pagination.total = imageListTotal.length
loadMore()
}
})
}
function imgDrag(e2, item2) {
emit2('imgDrag', e2, item2)
}
async function imgTrigger(e2, item2) {
const imageUrl = await createProjectImg(item2.groupKey, item2.imageKey)
emit2('imgTrigger', imageUrl)
}
onMounted(async () => {
await getNav()
if (tabs2.value.length) {
PanelLayoutRef.value?.tabChange(tabs2.value[0])
}
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$D, [
createVNode$1(
PanelLayout$2,
{
ref_key: 'PanelLayoutRef',
ref: PanelLayoutRef,
keyword: keyword.value,
'onUpdate:keyword':
_cache[0] || (_cache[0] = ($event) => (keyword.value = $event)),
tabs: tabs2.value,
data: imageList.value,
draggable: $props2?.draggable,
loadMore: true,
onOnLoadMore: loadMore,
onOnSearch: search2,
onOnTabChange: tabChange,
onOnSubTabChange: subTabChange,
onImgDrag: imgDrag,
onImgTrigger: imgTrigger,
},
null,
8,
['keyword', 'tabs', 'data', 'draggable']
),
])
)
}
},
})
var OfficialMaterial = /* @__PURE__ */ _export_sfc(_sfc_main$I, [
['__scopeId', 'data-v-ff5982ea'],
])
var OfficialMaterial$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: OfficialMaterial,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var index_vue_vue_type_style_index_0_scoped_true_lang$4 = ''
const _withScopeId$o = (n2) => (
pushScopeId('data-v-b7e567b4'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$C = { class: 'picture-management flex' }
const _hoisted_2$y = { class: 'left-menu' }
const _hoisted_3$w = ['onClick']
const _hoisted_4$q = {
key: 1,
class: 'icon btns_svg_add',
'aria-hidden': 'true',
}
const _hoisted_5$n = /* @__PURE__ */ _withScopeId$o(() =>
/* @__PURE__ */ createElementVNode(
'use',
{ 'xlink:href': '#icon-ziyuan1' },
null,
-1
)
)
const _hoisted_6$j = [_hoisted_5$n]
const _sfc_main$H = /* @__PURE__ */ defineComponent({
setup(__props2) {
const router2 = useRouter()
const route = useRoute()
const selectPageName = ref('')
const leftMenu2 = reactive({
name: '\u53D8\u91CF',
list: [
{
name: '\u53D8\u91CF',
icon: 'icon-bianliang',
path: 'picture-management-variable-management',
},
{
name: '\u753B\u9762',
icon: 'icon-huamian',
path: 'picture-management-picture-production',
},
{
name: '\u8D44\u6E90',
icon: 'svg',
path: 'picture-management-picture-production',
},
],
})
const selectPage2 = (item2) => {
selectPageName.value = item2.name
leftMenu2.name = item2.name
router2.replace({
name: item2.path,
query: {
...route.query,
},
})
}
const initRoute = () => {
let page2 = { name: '', icon: '', path: '' }
for (let i2 = 0; i2 < leftMenu2.list.length; i2++) {
const item2 = leftMenu2.list[i2]
if (item2.path === route.name) {
page2 = item2
break
}
}
if (page2.path) {
selectPage2(page2)
} else {
selectPage2(leftMenu2.list[0])
}
}
const init2 = () => {
initRoute()
}
onMounted(() => {
init2()
})
onUpdated(() => {})
return (_ctx, _cache) => {
const _component_router_view = resolveComponent('router-view')
return (
openBlock(),
createElementBlock('div', _hoisted_1$C, [
createElementVNode('div', _hoisted_2$y, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(leftMenu2).list, (item2, i2) => {
return (
openBlock(),
createElementBlock(
'div',
{
key: i2,
class: normalizeClass([
'link flex',
item2.name === unref(leftMenu2).name
? 'link-select'
: '',
]),
onClick: ($event) => selectPage2(item2),
},
[
item2.icon != 'svg'
? (openBlock(),
createElementBlock(
'i',
{
key: 0,
class: normalizeClass(['iconfont', item2.icon]),
},
null,
2
))
: (openBlock(),
createElementBlock(
'svg',
_hoisted_4$q,
_hoisted_6$j
)),
createElementVNode(
'span',
null,
toDisplayString$1(item2.name),
1
),
],
10,
_hoisted_3$w
)
)
}),
128
)),
]),
createVNode$1(_component_router_view, { class: 'content' }),
])
)
}
},
})
var index$9 = /* @__PURE__ */ _export_sfc(_sfc_main$H, [
['__scopeId', 'data-v-b7e567b4'],
])
var index$a = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: index$9,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _sfc_main$G = {}
function _sfc_render$1(_ctx, _cache) {
return openBlock(), createElementBlock('div')
}
var ComponentEvent = /* @__PURE__ */ _export_sfc(_sfc_main$G, [
['render', _sfc_render$1],
])
var componentEvent = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ComponentEvent,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var componentObject_vue_vue_type_style_index_0_lang = ''
var componentObject_vue_vue_type_style_index_1_scoped_true_lang = ''
const _withScopeId$n = (n2) => (
pushScopeId('data-v-01868f5c'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$B = { class: 'component-object' }
const _hoisted_2$x = { class: 'page_tree' }
const _hoisted_3$v = { class: 'page_search' }
const _hoisted_4$p = ['onClick']
const _hoisted_5$m = ['onDblclick']
const _hoisted_6$i = { class: 'page_tree_icons' }
const _hoisted_7$h = { class: 'icons_wrap' }
const _hoisted_8$h = ['onClick']
const _hoisted_9$h = ['onClick']
const _hoisted_10$g = ['onClick']
const _hoisted_11$e = ['onClick']
const _hoisted_12$e = /* @__PURE__ */ _withScopeId$n(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-gengduo tree_icons' },
null,
-1
)
)
const _hoisted_13$c = { key: 0 }
const _hoisted_14$b = /* @__PURE__ */ createTextVNode(
'\u521B\u5EFA\u526F\u672C'
)
const _hoisted_15$b = /* @__PURE__ */ createTextVNode('\u5220\u9664 ')
const _hoisted_16$b = { key: 1 }
const _hoisted_17$a = /* @__PURE__ */ createTextVNode(
' \u521B\u5EFA\u526F\u672C'
)
const _hoisted_18$9 = /* @__PURE__ */ createTextVNode('\u62C6\u5206')
const _hoisted_19$8 = /* @__PURE__ */ createTextVNode('\u5220\u9664 ')
const _sfc_main$F = /* @__PURE__ */ defineComponent({
props: {
components: {
type: Object,
default: () => {},
},
selectComponent: {
type: Object,
default: () => {},
},
},
emits: ['sendData', 'sendNodeData'],
setup(__props2, { expose, emit: emit2 }) {
const props2 = __props2
const currentNode = ref([])
watchEffect(() => {
currentNode.value = []
if (props2.selectComponent.length !== 0) {
props2.selectComponent.forEach((component2) => {
currentNode.value.push(component2.id)
})
}
})
const filterText = ref('')
const treeRef = ref()
const defaultProps2 = {
children: 'childs',
label: 'alias',
}
watch$1(filterText, (val2) => {
treeRef.value.filter(val2)
})
const treeData = computed(() => {
return JSON.parse(JSON.stringify(props2.components))
})
const visiableId = ref(null)
const visibleChange2 = (val2, node2, data2) => {
if (val2 === true) {
visiableId.value = data2.id
} else {
visiableId.value = null
}
}
const setCurrentTree = (node2, data2) => {
currentNode.value = []
currentNode.value.push(data2.id)
}
const inputRef = ref()
const editNode = (node2, data2) => {
data2.isEdit = !data2.isEdit
nextTick(() => {
inputRef.value.focus()
inputRef.value.select()
})
}
const toggleLock = (node2, data2) => {
data2.style.isLock = !data2.style.isLock
emit2('sendNodeData', data2, 'isLock')
}
const toggleShow = (node2, data2) => {
data2.style.isHidden = !data2.style.isHidden
emit2('sendNodeData', data2, 'isHidden')
}
const handleCommand = (obj) => {
if (obj.type === 'mainAdd') {
addObjTree(obj.node, obj.data)
}
if (obj.type === 'childAdd') {
addObjTree(obj.node, obj.data)
}
if (obj.type === 'delete') {
delObjTree(obj)
}
if (obj.type === 'split') {
splitObjTree(obj)
}
}
const delObjTree = (obj) => {
emit2('sendNodeData', obj.node.data, 'delete')
}
const splitObjTree = (obj) => {
emit2('sendNodeData', obj.node.data, 'split')
}
const addObjTree = (node2, data2, type4) => {
emit2('sendNodeData', data2, 'add')
}
const closeInput = (node2, data2) => {
data2.isEdit = false
emit2('sendNodeData', data2, 'update')
}
const filterNode = (value2, data2) => {
if (!value2) return true
return data2.alias.includes(value2)
}
const handleDragStart = () => {
nextTick(() => {
inputRef.value.blur()
})
}
const initPage = () => {
nextTick(() => {})
}
expose({ initPage })
return (_ctx, _cache) => {
const _component_el_icon = resolveComponent('el-icon')
const _component_el_input = resolveComponent('el-input')
const _component_el_dropdown_item = resolveComponent('el-dropdown-item')
const _component_el_dropdown_menu = resolveComponent('el-dropdown-menu')
const _component_el_dropdown = resolveComponent('el-dropdown')
const _component_el_tree = resolveComponent('el-tree')
return (
openBlock(),
createElementBlock('div', _hoisted_1$B, [
createElementVNode('div', _hoisted_2$x, [
createElementVNode('div', _hoisted_3$v, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x-search',
modelValue: filterText.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (filterText.value = $event)),
},
{
suffix: withCtx(() => [
createVNode$1(
_component_el_icon,
{ class: 'el-input__icon' },
{
default: withCtx(() => [createVNode$1(unref(search))]),
_: 1,
}
),
]),
_: 1,
},
8,
['modelValue']
),
]),
createVNode$1(
_component_el_tree,
{
data: unref(treeData),
class: 'cms_el_tree_x',
'node-key': 'id',
'default-expand-all': '',
draggable: '',
ref_key: 'treeRef',
ref: treeRef,
props: defaultProps2,
'filter-node-method': filterNode,
onNodeDragStart: handleDragStart,
'expand-on-click-node': false,
},
{
default: withCtx(({ node: node2, data: data2 }) => [
createElementVNode(
'div',
{
class: normalizeClass([
'custom_tree_node',
{
currentTree:
currentNode.value.includes(data2.id) ||
data2.id === visiableId.value,
},
]),
onClick: ($event) => setCurrentTree(node2, data2),
},
[
data2.isEdit
? (openBlock(),
createBlock(
_component_el_input,
{
key: 0,
class: 'cms-el-input-x',
ref_key: 'inputRef',
ref: inputRef,
onBlur: ($event) => closeInput(node2, data2),
modelValue: data2.alias,
'onUpdate:modelValue': ($event) =>
(data2.alias = $event),
},
null,
8,
['onBlur', 'modelValue', 'onUpdate:modelValue']
))
: (openBlock(),
createElementBlock(
'div',
{
key: 1,
class: 'tree_label page_tree_label',
onDblclick: ($event) => editNode(node2, data2),
},
toDisplayString$1(data2.alias),
41,
_hoisted_5$m
)),
createElementVNode('div', _hoisted_6$i, [
createElementVNode('div', _hoisted_7$h, [
!data2.style.isLock
? (openBlock(),
createElementBlock(
'i',
{
key: 0,
class:
'iconfont icon-kaisuo text_light_yellow',
onClick: ($event) => toggleLock(node2, data2),
},
null,
8,
_hoisted_8$h
))
: createCommentVNode('', true),
data2.style.isLock
? (openBlock(),
createElementBlock(
'i',
{
key: 1,
class: 'iconfont icon-suoding text_gray',
onClick: ($event) => toggleLock(node2, data2),
},
null,
8,
_hoisted_9$h
))
: createCommentVNode('', true),
!data2.style.isHidden
? (openBlock(),
createElementBlock(
'i',
{
key: 2,
class:
'iconfont icon-xianshi text_light_yellow',
onClick: ($event) => toggleShow(node2, data2),
},
null,
8,
_hoisted_10$g
))
: createCommentVNode('', true),
data2.style.isHidden
? (openBlock(),
createElementBlock(
'i',
{
key: 3,
class: 'iconfont icon-yincang text_gray',
onClick: ($event) => toggleShow(node2, data2),
},
null,
8,
_hoisted_11$e
))
: createCommentVNode('', true),
createVNode$1(
_component_el_dropdown,
{
trigger: 'hover',
onCommand: handleCommand,
onVisibleChange: ($event) =>
visibleChange2($event, node2, data2),
},
{
dropdown: withCtx(() => [
createVNode$1(
_component_el_dropdown_menu,
null,
{
default: withCtx(() => [
data2.type !== 'group' &&
node2.level === 1
? (openBlock(),
createElementBlock(
'div',
_hoisted_13$c,
[
createVNode$1(
_component_el_dropdown_item,
{
command: {
type: 'mainAdd',
node: node2,
data: data2,
},
},
{
default: withCtx(() => [
_hoisted_14$b,
]),
_: 2,
},
1032,
['command']
),
createVNode$1(
_component_el_dropdown_item,
{
class: 'item_delete',
command: {
type: 'delete',
node: node2,
data: data2,
},
},
{
default: withCtx(() => [
_hoisted_15$b,
]),
_: 2,
},
1032,
['command']
),
]
))
: createCommentVNode('', true),
data2.type === 'group' ||
node2.level === 2
? (openBlock(),
createElementBlock(
'div',
_hoisted_16$b,
[
createVNode$1(
_component_el_dropdown_item,
{
command: {
type:
node2.level === 1
? 'mainAdd'
: 'childAdd',
node: node2,
data: data2,
},
},
{
default: withCtx(() => [
_hoisted_17$a,
]),
_: 2,
},
1032,
['command']
),
createVNode$1(
_component_el_dropdown_item,
{
command: {
type: 'split',
node: node2,
data: data2,
},
},
{
default: withCtx(() => [
_hoisted_18$9,
]),
_: 2,
},
1032,
['command']
),
createVNode$1(
_component_el_dropdown_item,
{
class: 'item_delete',
command: {
type: 'delete',
node: node2,
data: data2,
},
},
{
default: withCtx(() => [
_hoisted_19$8,
]),
_: 2,
},
1032,
['command']
),
]
))
: createCommentVNode('', true),
]),
_: 2,
},
1024
),
]),
default: withCtx(() => [_hoisted_12$e]),
_: 2,
},
1032,
['onVisibleChange']
),
]),
]),
],
10,
_hoisted_4$p
),
]),
_: 1,
},
8,
['data']
),
]),
])
)
}
},
})
var ComponentObject = /* @__PURE__ */ _export_sfc(_sfc_main$F, [
['__scopeId', 'data-v-01868f5c'],
])
var componentObject = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ComponentObject,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var componentStyle_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$A = { class: 'wrap' }
const _sfc_main$E = /* @__PURE__ */ defineComponent({
props: ['objData'],
emits: ['sendData'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const isShowPosition = ref(false)
const isShowOpacity = ref(false)
const isShowFunction = ref(false)
const isShowText = ref(false)
const isShowAppearance = ref(false)
const isShowPermission = ref(false)
let positionAttrs = ['width', 'height', 'left', 'top', 'rotate']
let opacityAttrs = ['opacity']
let functionAttrs = ['function']
let textAttrs = [
'color',
'fontFamily',
'fontWeight',
'fontSize',
'textDecoration',
'letterSpacing',
'lineHeight',
'textAlign',
'alignItems',
]
let appearanceAttrs = ['backgroundColor', 'borderRadius']
let permissionAttrs = ['isPermissions']
const styleData = computed(() => {
return JSON.parse(JSON.stringify(props2.objData))
})
watchEffect(() => {
let keys3 = Object.keys(props2.objData)
if (keys3.length > 0) {
isShowPosition.value = keys3.some((key2) =>
positionAttrs.includes(key2)
)
isShowOpacity.value = keys3.some((key2) => opacityAttrs.includes(key2))
isShowText.value = keys3.some((key2) => textAttrs.includes(key2))
isShowAppearance.value = keys3.some((key2) =>
appearanceAttrs.includes(key2)
)
isShowFunction.value = keys3.some((key2) =>
functionAttrs.includes(key2)
)
isShowPermission.value = keys3.some((key2) =>
permissionAttrs.includes(key2)
)
}
})
const transformData3 = (prop, val2, innerProp = '', shadowType = '') => {
let boxShadows = ['external', 'internal']
let funcs = [
'dialog',
'popupWindow',
'inputRange',
'sendVariable',
'associatedVariable',
'jumpPage',
'showAccuracy',
'horizontalMenus',
]
let logins = ['inputText', 'buttonText', 'inputStyle', 'buttonStyle']
if (boxShadows.includes(prop)) {
if (shadowType !== '') {
styleData.value[shadowType].style.boxShadow[prop][innerProp] =
innerProp === 'color' ? val2 : parseFloat(val2)
} else {
styleData.value.boxShadow[prop][innerProp] =
innerProp === 'color' ? val2 : parseFloat(val2)
}
} else if (prop === 'borderRadius') {
styleData.value.borderRadius = [val2, val2, val2, val2]
} else if (funcs.includes(prop)) {
styleData.value.function.forEach((item2, index2) => {
if (item2.functionType === prop) {
styleData.value.function[index2][innerProp] = val2
}
})
} else if (logins.includes(prop)) {
if (innerProp === 'borderRadius') {
styleData.value[prop].style[innerProp] = [val2, val2, val2, val2]
} else {
styleData.value[prop].style[innerProp] = val2
}
} else {
styleData.value[prop] = val2
}
emit2('sendData', styleData.value)
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$A, [
createVNode$1(unref(moduleTitle)),
isShowPosition.value
? (openBlock(),
createBlock(
unref(modulePosition),
{
key: 0,
styleData: unref(styleData),
onTransformData: transformData3,
},
null,
8,
['styleData']
))
: createCommentVNode('', true),
isShowOpacity.value
? (openBlock(),
createBlock(
unref(moduleOpacity),
{
key: 1,
styleData: unref(styleData),
onTransformData: transformData3,
},
null,
8,
['styleData']
))
: createCommentVNode('', true),
isShowFunction.value
? (openBlock(),
createBlock(
unref(moduleFunction),
{
key: 2,
styleData: unref(styleData),
onTransformData: transformData3,
},
null,
8,
['styleData']
))
: createCommentVNode('', true),
isShowText.value
? (openBlock(),
createBlock(
unref(moduleText),
{
key: 3,
styleData: unref(styleData),
onTransformData: transformData3,
},
null,
8,
['styleData']
))
: createCommentVNode('', true),
unref(styleData).inputText
? (openBlock(),
createBlock(
unref(moduleText),
{
key: 4,
styleData: unref(styleData).inputText.style,
textTitle: unref(styleData).inputText.title,
onTransformData: transformData3,
},
null,
8,
['styleData', 'textTitle']
))
: createCommentVNode('', true),
unref(styleData).buttonText
? (openBlock(),
createBlock(
unref(moduleText),
{
key: 5,
styleData: unref(styleData).buttonText.style,
textTitle: unref(styleData).buttonText.title,
onTransformData: transformData3,
},
null,
8,
['styleData', 'textTitle']
))
: createCommentVNode('', true),
isShowAppearance.value
? (openBlock(),
createBlock(
unref(moduleAppearance),
{
key: 6,
styleData: unref(styleData),
onTransformData: transformData3,
},
null,
8,
['styleData']
))
: createCommentVNode('', true),
unref(styleData).inputStyle
? (openBlock(),
createBlock(
unref(moduleAppearance),
{
key: 7,
styleData: unref(styleData).inputStyle.style,
appearanceTitle: unref(styleData).inputStyle.title,
onTransformData: transformData3,
},
null,
8,
['styleData', 'appearanceTitle']
))
: createCommentVNode('', true),
unref(styleData).buttonStyle
? (openBlock(),
createBlock(
unref(moduleAppearance),
{
key: 8,
styleData: unref(styleData).buttonStyle.style,
appearanceTitle: unref(styleData).buttonStyle.title,
onTransformData: transformData3,
},
null,
8,
['styleData', 'appearanceTitle']
))
: createCommentVNode('', true),
isShowPermission.value
? (openBlock(),
createBlock(
unref(modulePermission),
{
key: 9,
styleData: unref(styleData),
onTransformData: transformData3,
},
null,
8,
['styleData']
))
: createCommentVNode('', true),
])
)
}
},
})
var ComponentStyle = /* @__PURE__ */ _export_sfc(_sfc_main$E, [
['__scopeId', 'data-v-ccfb6d18'],
])
var componentStyle = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ComponentStyle,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var dragChooseComponentBox_vue_vue_type_style_index_0_scoped_true_lang = ''
const _sfc_main$D = /* @__PURE__ */ defineComponent({
emits: ['chooseEnd'],
setup(__props2, { expose, emit: emit2 }) {
const Constant = {
dragChooseComponent: {
model: 'hide',
width: 0,
height: 0,
initX: 0,
initY: 0,
x: 0,
y: 0,
style: '',
},
}
let dragChooseComponent = ref(
JSON.parse(JSON.stringify(Constant.dragChooseComponent))
)
const dragChooseComponentFun = (model, el2) => {
const fun = {
down: () => {
dragChooseComponent.value.model = 'show'
dragChooseComponent.value.x = el2?.pageX || 0
dragChooseComponent.value.y = el2?.pageY || 0
dragChooseComponent.value.initX = el2?.pageX || 0
dragChooseComponent.value.initY = el2?.pageY || 0
},
move: () => {
if (dragChooseComponent.value.model === 'hide') return
const initX = dragChooseComponent.value.initX
const initY = dragChooseComponent.value.initY
let x2 = el2?.pageX || 0
let y2 = el2?.pageY || 0
let w2 = initX - x2
let h2 = initY - y2
dragChooseComponent.value.x = x2
dragChooseComponent.value.y = y2
dragChooseComponent.value.width = Math.abs(w2)
dragChooseComponent.value.height = Math.abs(h2)
fun['style']()
},
up: () => {
let box2 = dragChooseComponent.value
let x2 = box2.initX > box2.x ? box2.x : box2.initX
let y2 = box2.initY > box2.y ? box2.y : box2.initY
dragChooseComponent.value = JSON.parse(
JSON.stringify(Constant.dragChooseComponent)
)
emit2('chooseEnd', x2, y2, box2.width, box2.height)
},
style: () => {
let box2 = dragChooseComponent.value
let x2 = box2.initX > box2.x ? box2.x : box2.initX
let y2 = box2.initY > box2.y ? box2.y : box2.initY
let style2 = `width: ${box2.width}px; height: ${box2.height}px; left: ${x2}px; top: ${y2}px; `
dragChooseComponent.value.style = style2
},
}
fun[model]()
}
expose({
dragChooseComponentFun,
})
return (_ctx, _cache) => {
return withDirectives(
(openBlock(),
createElementBlock(
'div',
{
class: 'drag-choose-component-box',
style: normalizeStyle$1(unref(dragChooseComponent).style),
onMousemove:
_cache[0] ||
(_cache[0] = ($event) => dragChooseComponentFun('move', $event)),
onMouseup:
_cache[1] ||
(_cache[1] = ($event) => dragChooseComponentFun('up')),
},
null,
36
)),
[[vShow, unref(dragChooseComponent).model === 'show']]
)
}
},
})
var dragChooseComponentBox = /* @__PURE__ */ _export_sfc(_sfc_main$D, [
['__scopeId', 'data-v-3a98b218'],
])
var dragChooseComponentBox$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: dragChooseComponentBox,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var pictureHeader_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$z = { class: 'picture-header' }
const _hoisted_2$w = { class: 'btn-list flex' }
const _hoisted_3$u = ['onClick']
const _hoisted_4$o = ['onMousedown', 'onMouseup']
const _hoisted_5$l = ['xlink:href']
const _sfc_main$C = /* @__PURE__ */ defineComponent({
emits: ['headerFun'],
setup(__props2, { emit: emit2 }) {
let operationBtn2 = reactive([
{
title: '\u590D\u5236',
icon: 'icon-fuzhi',
code: 'copy',
type: 'btn',
mouseState: 'off',
},
{
title: '\u7C98\u8D34',
icon: 'icon-niantie',
code: 'paste',
type: 'btn',
},
{
title: '\u526A\u5207',
icon: 'icon-jianqie',
code: 'shear',
type: 'btn',
},
{
type: 'line',
},
{
title: '\u9876\u5C42',
icon: 'icon-zhiding',
code: 'topZIndex',
type: 'btn',
},
{
title: '\u5E95\u5C42',
icon: 'icon-zhidi',
code: 'bottomZIndex',
type: 'btn',
},
{
type: 'line',
},
{
title: '\u7EC4\u5408',
icon: 'icon-zuhe',
code: 'combination',
type: 'btn',
},
{
title: '\u62C6\u5206',
icon: 'icon-chaifen',
code: 'breakUp',
type: 'btn',
},
{
type: 'line',
},
{
title: '\u5DE6\u4FA7',
icon: 'icon-zuoce',
code: 'left',
type: 'btn',
},
{
title: '\u5C45\u4E2D',
icon: 'icon-juzhong',
code: 'center',
type: 'btn',
},
{
title: '\u53F3\u4FA7',
icon: 'icon-youce',
code: 'right',
type: 'btn',
},
{
type: 'line',
},
{
title: '\u9876\u90E8',
icon: 'icon-dingbu',
code: 'top',
type: 'btn',
},
{
title: '\u4E2D\u90E8',
icon: 'icon-zhongbu',
code: 'middle',
type: 'btn',
},
{
title: '\u5E95\u90E8',
icon: 'icon-dibu',
code: 'bottom',
type: 'btn',
},
{
type: 'line',
},
{
title: '\u6C34\u5E73',
icon: 'icon-shuiping',
code: 'horizontal',
type: 'btn',
},
{
title: '\u5782\u76F4',
icon: 'icon-chuizhi',
code: 'vertical',
type: 'btn',
},
{
type: 'line',
},
{
title: '\u7B49\u5BBD',
icon: 'icon-dengkuan',
code: 'setSameWidth',
type: 'btn',
},
{
title: '\u7B49\u9AD8',
icon: 'icon-denggao',
code: 'setSameheight',
type: 'btn',
},
{
type: 'line',
},
{
title: '\u4FDD\u5B58',
icon: 'icon-baocun',
code: 'save',
type: 'btn',
},
])
const iconMouseState = (item2, event) => {
item2.mouseState = event
}
const headerFun = (item2) => {
emit2('headerFun', item2.code)
}
return (_ctx, _cache) => {
const _component_el_tooltip = resolveComponent('el-tooltip')
const _directive_waves = resolveDirective('waves')
return (
openBlock(),
createElementBlock('div', _hoisted_1$z, [
createElementVNode('div', _hoisted_2$w, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(operationBtn2), (item2, i2) => {
return (
openBlock(),
createElementBlock(
Fragment,
null,
[
item2.type === 'btn'
? withDirectives(
(openBlock(),
createElementBlock(
'div',
{
class: 'operation-btn',
key: i2,
onClick: withModifiers(
($event) => headerFun(item2),
['stop']
),
},
[
createVNode$1(
_component_el_tooltip,
{
'popper-class': 'cms-el-tooltip',
content: item2.title,
placement: 'bottom',
},
{
default: withCtx(() => [
createElementVNode(
'div',
{
onMousedown: ($event) =>
iconMouseState(item2, 'mousedown'),
onMouseup: ($event) =>
iconMouseState(item2, 'mouseup'),
},
[
(openBlock(),
createElementBlock(
'svg',
{
class: 'icon',
'aria-hidden': 'true',
style: normalizeStyle$1(
item2.mouseState === 'mousedown'
? 'padding: 5px 0;'
: ''
),
},
[
createElementVNode(
'use',
{
'xlink:href':
'#' + item2.icon,
},
null,
8,
_hoisted_5$l
),
],
4
)),
],
40,
_hoisted_4$o
),
]),
_: 2,
},
1032,
['content']
),
],
8,
_hoisted_3$u
)),
[[_directive_waves]]
)
: createCommentVNode('', true),
item2.type === 'line'
? (openBlock(),
createElementBlock('div', {
class: 'header-line',
key: i2,
}))
: createCommentVNode('', true),
],
64
)
)
}),
256
)),
]),
])
)
}
},
})
var PictureHeader = /* @__PURE__ */ _export_sfc(_sfc_main$C, [
['__scopeId', 'data-v-420033e4'],
])
var pictureHeader = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: PictureHeader,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var projectPage_vue_vue_type_style_index_0_lang = ''
var projectPage_vue_vue_type_style_index_1_scoped_true_lang = ''
const _withScopeId$m = (n2) => (
pushScopeId('data-v-139d1432'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$y = { class: 'project-page' }
const _hoisted_2$v = { class: 'page_search' }
const _hoisted_3$t = { class: 'search_input' }
const _hoisted_4$n = { class: 'search_tool' }
const _hoisted_5$k = /* @__PURE__ */ _withScopeId$m(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-tianjiahuamian' },
null,
-1
)
)
const _hoisted_6$h = [_hoisted_5$k]
const _hoisted_7$g = /* @__PURE__ */ _withScopeId$m(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-wenjianjia' },
null,
-1
)
)
const _hoisted_8$g = [_hoisted_7$g]
const _hoisted_9$g = { class: 'page_tree' }
const _hoisted_10$f = { class: 'prefix' }
const _hoisted_11$d = {
key: 0,
class: 'iconfont icon-wenjianjia',
}
const _hoisted_12$d = {
key: 1,
class: 'iconfont icon-yemian',
}
const _hoisted_13$b = ['onClick', 'onDblclick']
const _hoisted_14$a = /* @__PURE__ */ _withScopeId$m(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-gengduo tree_icons' },
null,
-1
)
)
const _hoisted_15$a = /* @__PURE__ */ createTextVNode('\u91CD\u547D\u540D')
const _hoisted_16$a = /* @__PURE__ */ createTextVNode(
'\u521B\u5EFA\u526F\u672C'
)
const _hoisted_17$9 = /* @__PURE__ */ createTextVNode('\u5220\u9664 ')
const _sfc_main$B = /* @__PURE__ */ defineComponent({
emits: ['changeNode'],
setup(__props2, { emit: emit2 }) {
const filterText = ref('')
const treeRef = ref()
const defaultProps2 = {
children: 'child',
label: 'name',
}
watch$1(filterText, (val2) => {
treeRef.value.filter(val2)
})
const allowDrop = (draggingNode, dropNode, type4) => {
if (dropNode.data.type === 0) {
if (type4 === 'inner') {
return true
}
}
if (dropNode.data.type === 1) {
if (type4 !== 'inner') {
return true
}
}
}
const allowDrag = (draggingNode) => {
if (draggingNode.data.type === 0) {
return false
} else {
return true
}
}
const filterNode = (value2, data2) => {
if (!value2) return true
return data2.name.includes(value2)
}
const dataSource = ref([])
const isAddPic = ref(false)
const addPic = () => {
if (JSON.stringify(nodeData.value) === '{}') {
ElMessage.warning(
'\u8BF7\u5148\u521B\u5EFA\u4E00\u4E2A\u6587\u4EF6\u5939'
)
return
}
isAddPic.value = true
const newChild = {
parentId: currentNode.value.id,
name: '\u65B0\u5EFA\u5B50\u753B\u9762',
type: 1,
isEdit: true,
child: [],
}
if (!nodeData.value.child) {
nodeData.value.child = []
}
const index2 = dataSource.value.findIndex(
(d3) => d3.id === nodeData.value.id
)
dataSource.value[index2].child.push(newChild)
dataSource.value = [...dataSource.value]
nextTick(() => {
inputRef.value.focus()
inputRef.value.select()
})
}
const isAddFile = ref(false)
const addFile = () => {
isAddFile.value = true
const newChild = {
parentId: null,
name: '\u65B0\u5EFA\u753B\u9762',
type: 0,
isEdit: true,
child: [],
}
dataSource.value.push(newChild)
dataSource.value = [...dataSource.value]
nextTick(() => {
inputRef.value.focus()
inputRef.value.select()
})
}
const getparentNode = (parentId) => {
dataSource.value.forEach((item2) => {
if (item2.id === parentId) {
nodeData.value = item2
}
})
}
let timeId = null
const setCurrentTree = (node2, data2) => {
clearTimeout(timeId)
timeId = setTimeout(function () {
if (data2.parentId === null) {
nodeData.value = data2
currentNode.value = data2
} else {
getparentNode(data2.parentId)
currentNode.value = data2
}
emit2('changeNode', currentNode.value)
}, 250)
}
const inputRef = ref()
const editNode = (node2, data2) => {
clearTimeout(timeId)
data2.isEdit = !data2.isEdit
nextTick(() => {
inputRef.value.focus()
inputRef.value.select()
})
}
const visiableId = ref(null)
const visibleChange2 = (val2, node2, data2) => {
if (val2 === true) {
visiableId.value = data2.id
} else {
visiableId.value = null
}
}
const handleCommand = (obj) => {
if (obj.type === 'delete') {
delPicture(obj.data.id).then(() => {
if (obj.data.id === currentNode.value.id) {
initPage('init')
} else {
initPage()
}
})
}
if (obj.type === 'rename') {
obj.data.isEdit = true
setTimeout(() => {
inputRef.value.focus()
inputRef.value.select()
}, 300)
}
if (obj.type === 'add') {
let nodeArr = initUtils.getNodeParents(dataSource.value, obj.data.id, {
children: 'child',
id: 'id',
})
let parentIndex = dataSource.value.findIndex(
(f2) => f2.id === nodeArr[0]
)
commandAdd(dataSource.value[parentIndex])
}
}
const commandAdd = (data2) => {
let postData = {
parentId: data2.id,
name: '\u65B0\u5EFA\u5B50\u753B\u9762',
type: 1,
}
addPicture(postData).then(() => {
initPage()
})
}
const closeInput = (node2, data2) => {
if (isAddFile.value) {
let postData = {
parentId: data2.parentId,
name: data2.name,
type: data2.type,
}
addPicture(postData).then(() => {
isAddFile.value = false
initPage()
})
} else if (isAddPic.value) {
let postData = {
parentId: nodeData.value.id,
name: data2.name,
type: data2.type,
}
addPicture(postData).then(() => {
isAddPic.value = false
initPage()
})
} else {
let postData = {
parentId: data2.parentId,
name: data2.name,
type: data2.type,
}
changePicture(data2.id, postData).then(() => {
isAddFile.value = false
isAddPic.value = false
initPage()
})
}
data2.isEdit = false
}
const handleDragStart = () => {
nextTick(() => {
if (inputRef.value) inputRef.value.blur()
})
}
const handleDragDrop = () => {}
let nodeData = ref({})
const currentNode = ref({
child: [],
id: null,
name: '',
parentId: null,
type: null,
updateTime: '',
})
const initPage = (type4 = '') => {
getPictures().then((res) => {
if (res.length !== 0) {
dataSource.value = res
if (type4 === 'init') {
currentNode.value = dataSource.value[0]
nodeData.value = dataSource.value[0]
emit2('changeNode', currentNode.value)
}
} else {
dataSource.value = []
nodeData.value = {}
}
})
}
onMounted(() => {
initPage('init')
})
return (_ctx, _cache) => {
const _component_el_icon = resolveComponent('el-icon')
const _component_el_input = resolveComponent('el-input')
const _component_el_tooltip = resolveComponent('el-tooltip')
const _component_el_dropdown_item = resolveComponent('el-dropdown-item')
const _component_el_dropdown_menu = resolveComponent('el-dropdown-menu')
const _component_el_dropdown = resolveComponent('el-dropdown')
const _component_el_tree = resolveComponent('el-tree')
return (
openBlock(),
createElementBlock('div', _hoisted_1$y, [
createElementVNode('div', _hoisted_2$v, [
createElementVNode('div', _hoisted_3$t, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x-search',
modelValue: filterText.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (filterText.value = $event)),
},
{
suffix: withCtx(() => [
createVNode$1(
_component_el_icon,
{ class: 'el-input__icon' },
{
default: withCtx(() => [createVNode$1(unref(search))]),
_: 1,
}
),
]),
_: 1,
},
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_4$n, [
createVNode$1(
_component_el_tooltip,
{
effect: 'dark',
'popper-class': 'cms-el-tooltip',
content: '\u6DFB\u52A0\u753B\u9762',
},
{
default: withCtx(() => [
createElementVNode(
'div',
{
class: 'search_tool_addPic',
onClick: addPic,
},
_hoisted_6$h
),
]),
_: 1,
}
),
createVNode$1(
_component_el_tooltip,
{
effect: 'dark',
'popper-class': 'cms-el-tooltip',
content: '\u6DFB\u52A0\u6587\u4EF6\u5939',
},
{
default: withCtx(() => [
createElementVNode(
'div',
{
class: 'search_tool_addFile',
onClick: addFile,
},
_hoisted_8$g
),
]),
_: 1,
}
),
]),
]),
createElementVNode('div', _hoisted_9$g, [
createVNode$1(
_component_el_tree,
{
data: dataSource.value,
'node-key': 'id',
class: 'cms_el_tree_x',
'default-expand-all': '',
draggable: '',
ref_key: 'treeRef',
ref: treeRef,
props: defaultProps2,
'allow-drop': allowDrop,
'allow-drag': allowDrag,
'filter-node-method': filterNode,
onNodeDragStart: handleDragStart,
onNodeDrop: handleDragDrop,
'expand-on-click-node': false,
},
{
default: withCtx(({ node: node2, data: data2 }) => [
createElementVNode(
'div',
{
class: normalizeClass([
'custom_tree_node',
{
currentTree:
data2.id === currentNode.value.id ||
data2.id === visiableId.value,
},
]),
},
[
createElementVNode('div', _hoisted_10$f, [
data2.parentId === null
? (openBlock(),
createElementBlock('i', _hoisted_11$d))
: (openBlock(),
createElementBlock('i', _hoisted_12$d)),
]),
data2.isEdit
? (openBlock(),
createBlock(
_component_el_input,
{
key: 0,
class: 'cms-el-input-x',
ref_key: 'inputRef',
ref: inputRef,
onBlur: ($event) => closeInput(node2, data2),
modelValue: data2.name,
'onUpdate:modelValue': ($event) =>
(data2.name = $event),
},
null,
8,
['onBlur', 'modelValue', 'onUpdate:modelValue']
))
: (openBlock(),
createElementBlock(
'div',
{
key: 1,
class: 'tree_label',
onClick: ($event) => setCurrentTree(node2, data2),
onDblclick: ($event) => editNode(node2, data2),
},
toDisplayString$1(data2.name),
41,
_hoisted_13$b
)),
createElementVNode(
'div',
{
class: 'drop_wrap',
onClick:
_cache[1] ||
(_cache[1] = withModifiers(() => {}, ['stop'])),
},
[
createVNode$1(
_component_el_dropdown,
{
trigger: 'hover',
onCommand: handleCommand,
onVisibleChange: ($event) =>
visibleChange2($event, node2, data2),
'popper-class': 'cms-el-dropdown__popper',
},
{
dropdown: withCtx(() => [
createVNode$1(
_component_el_dropdown_menu,
null,
{
default: withCtx(() => [
createVNode$1(
_component_el_dropdown_item,
{
command: {
type: 'rename',
node: node2,
data: data2,
},
},
{
default: withCtx(() => [
_hoisted_15$a,
]),
_: 2,
},
1032,
['command']
),
createVNode$1(
_component_el_dropdown_item,
{
command: {
type: 'add',
node: node2,
data: data2,
},
},
{
default: withCtx(() => [
_hoisted_16$a,
]),
_: 2,
},
1032,
['command']
),
createVNode$1(
_component_el_dropdown_item,
{
class: 'item_delete',
command: {
type: 'delete',
node: node2,
data: data2,
},
},
{
default: withCtx(() => [
_hoisted_17$9,
]),
_: 2,
},
1032,
['command']
),
]),
_: 2,
},
1024
),
]),
default: withCtx(() => [_hoisted_14$a]),
_: 2,
},
1032,
['onVisibleChange']
),
]
),
],
2
),
]),
_: 1,
},
8,
['data']
),
]),
])
)
}
},
})
var ProjectPage = /* @__PURE__ */ _export_sfc(_sfc_main$B, [
['__scopeId', 'data-v-139d1432'],
])
var projectPage = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ProjectPage,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
function getTreeData() {
return request({
url: '/api/v1/variable/tree',
method: 'get',
})
}
function sortTree$1(data2) {
return request({
url: '/api/v1/variable/tree/sort',
method: 'post',
data: data2,
})
}
function createDevice(data2) {
return request({
url: '/api/v1/variable/device',
method: 'post',
data: data2,
})
}
function getDeviceData(id2) {
return request({
url: `/api/v1/variable/device/${id2}`,
method: 'get',
})
}
function modifyDevice(data2) {
return request({
url: `/api/v1/variable/device/${data2.id}`,
method: 'put',
data: data2,
})
}
function delDevice(id2) {
return request({
url: `/api/v1/variable/device/${id2}`,
method: 'delete',
})
}
function addVarGroup(id2, name2) {
return request({
url: `/api/v1/variable/device/${id2}/group`,
method: 'post',
data: {
name: name2,
},
})
}
function getVarGroupMsg(deviceId, id2) {
return request({
url: `/api/v1/variable/device/${deviceId}/group/${id2}`,
method: 'get',
})
}
function modifyVarGroup(deviceId, id2, data2) {
return request({
url: `/api/v1/variable/device/${deviceId}/group/${id2}`,
method: 'put',
data: data2,
})
}
function delVarGroup(deviceId, id2) {
return request({
url: `/api/v1/variable/device/${deviceId}/group/${id2}`,
method: 'delete',
})
}
function getTags$1(deviceId, groupId) {
return request({
url: `/api/v1/variable/device/${deviceId}/group/${groupId}/tag?`,
method: 'get',
})
}
function createTag$1(deviceId, groupId, data2) {
return request({
url: `/api/v1/variable/device/${deviceId}/group/${groupId}/tag`,
method: 'post',
data: data2,
})
}
function modifyTag$1(deviceId, groupId, data2) {
return request({
url: `/api/v1/variable/device/${deviceId}/group/${groupId}/tag`,
method: 'put',
data: data2,
})
}
function delTag$1(deviceId, groupId, ids) {
return request({
url: `/api/v1/variable/device/${deviceId}/group/${groupId}/tag`,
method: 'delete',
data: ids,
})
}
var addDeviceForm_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$x = { class: 'form-table' }
const _hoisted_2$u = { class: 'form-table' }
const _hoisted_3$s = /* @__PURE__ */ createTextVNode('\u6BEB\u79D2')
const _sfc_main$A = /* @__PURE__ */ defineComponent({
props: ['nodeData'],
emits: ['closeDialog', 'updateTreeData'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const activeProto = ref('1')
const protocolNames = ['', 'Modbus_TCP', 'S7_TCP']
const suppliers = {
Modbus_TCP: ['\u901A\u7528', '\u897F\u95E8\u5B50Siemens'],
S7_TCP: ['\u897F\u95E8\u5B50Siemens'],
}
const modelLists = {
Modbus_TCP: ['\u901A\u7528'],
S7_TCP: ['S7-300/400/1200/1500', 'S7-200Smart'],
}
const isShowAttr = reactive({
Modbus_TCP: [
'modelLists',
'ServerName',
'DeviceID',
'Port',
'TimeOut',
'ByteOrder',
'StrByteOrder',
],
S7_TCP: ['modelLists', 'ServerName', 'Rack', 'Slot'],
})
const initialValues = ref({
id: '',
name: '',
description: '',
protocolType: 1,
suppiler: '\u901A\u7528',
model: '\u901A\u7528',
parameters: {
ServerName: '',
DeviceID: '',
Port: '',
Rack: '',
Slot: '',
TimeOut: '',
ByteOrder: '1234',
StrByteOrder: '1234',
},
})
const limitNumber2 = (e2, type4) => {
initialValues.value.parameters[type4] = initialValues.value.parameters[
type4
].replace(/[^\d.]/g, '')
}
const changeProtocolName = (val2) => {
activeProto.value = val2
initialValues.value.suppiler = suppliers[protocolNames[val2]][0]
initialValues.value.model = modelLists[protocolNames[val2]][0]
}
onMounted(() => {
if (props2.nodeData.type === 'modify') {
getDeviceData(props2.nodeData.node.deviceId).then((res) => {
activeProto.value = res.protocolType
initialValues.value = res
initialValues.value.parameters = JSON.parse(res.parameters)
})
}
})
const closeDialog = () => {
emit2('closeDialog')
}
const submitForn = () => {
let submitData = JSON.parse(JSON.stringify(initialValues.value))
if (submitData.protocolType + '' === '1') {
Reflect.deleteProperty(submitData.parameters, 'Rack')
Reflect.deleteProperty(submitData.parameters, 'Slot')
} else if (submitData.protocolType + '' === '2') {
Reflect.deleteProperty(submitData.parameters, 'DeviceID')
Reflect.deleteProperty(submitData.parameters, 'Port')
Reflect.deleteProperty(submitData.parameters, 'TimeOut')
Reflect.deleteProperty(submitData.parameters, 'ByteOrder')
Reflect.deleteProperty(submitData.parameters, 'StrByteOrder')
}
if (props2.nodeData.type === 'add') {
createDevice(submitData).then((res) => {
emit2('updateTreeData', {
type: 'add',
node: '',
id: res,
})
})
} else {
modifyDevice(submitData).then((res) => {
emit2('updateTreeData', {
type: 'modify',
node: '',
id: res,
})
})
}
emit2('closeDialog')
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
unref(ElForm),
{
onSubmit:
_cache[15] ||
(_cache[15] = withModifiers(() => {}, ['prevent'])),
model: initialValues.value,
'label-width': '126px',
'label-position': 'left',
class: 'cms-el-form',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$x, [
createVNode$1(
unref(ElFormItem),
{
label: '\u8BBE\u5907\u540D\u79F0\uFF1A',
name: 'name',
},
{
default: withCtx(() => [
createVNode$1(
unref(ElInput),
{
modelValue: initialValues.value.name,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(initialValues.value.name = $event)),
},
null,
8,
['modelValue']
),
]),
_: 1,
}
),
createVNode$1(
unref(ElFormItem),
{
label: '\u8BBE\u5907\u63CF\u8FF0\uFF1A',
name: 'description',
placeholder: '\u8BF7\u8F93\u5165\u8BBE\u5907\u63CF\u8FF0',
},
{
default: withCtx(() => [
createVNode$1(
unref(ElInput),
{
modelValue: initialValues.value.description,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(initialValues.value.description = $event)),
},
null,
8,
['modelValue']
),
]),
_: 1,
}
),
]),
createElementVNode('div', _hoisted_2$u, [
createVNode$1(
unref(ElFormItem),
{
label: '\u534F\u8BAE\u540D\u79F0\uFF1A',
name: 'protocolType',
},
{
default: withCtx(() => [
createVNode$1(
unref(ElSelect),
{
disabled: props2.nodeData.type === 'modify',
modelValue: initialValues.value.protocolType,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(initialValues.value.protocolType = $event)),
onChange: changeProtocolName,
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(
['Modbus_TCP', 'S7_TCP'],
(item2, index2) => {
return createVNode$1(
unref(ElOption$1),
{
key: item2,
label: item2,
value: index2 + 1,
},
null,
8,
['label', 'value']
)
}
),
64
)),
]),
_: 1,
},
8,
['disabled', 'modelValue']
),
]),
_: 1,
}
),
createVNode$1(
unref(ElFormItem),
{
label: '\u8BBE\u5907\u5382\u5BB6\uFF1A',
name: 'suppiler',
},
{
default: withCtx(() => [
createVNode$1(
unref(ElSelect),
{
disabled: props2.nodeData.type === 'modify',
modelValue: initialValues.value.suppiler,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(initialValues.value.suppiler = $event)),
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
suppliers[protocolNames[activeProto.value]],
(item2) => {
return (
openBlock(),
createBlock(
unref(ElOption$1),
{
key: item2,
label: item2,
value: item2,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 1,
},
8,
['disabled', 'modelValue']
),
]),
_: 1,
}
),
withDirectives(
createVNode$1(
unref(ElFormItem),
{
label: '\u8BBE\u5907\u578B\u53F7\uFF1A',
name: 'modelLists',
},
{
default: withCtx(() => [
createVNode$1(
unref(ElSelect),
{
disabled: props2.nodeData.type === 'modify',
modelValue: initialValues.value.model,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(initialValues.value.model = $event)),
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
modelLists[
protocolNames[activeProto.value]
],
(item2) => {
return (
openBlock(),
createBlock(
unref(ElOption$1),
{
key: item2,
label: item2,
value: item2,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 1,
},
8,
['disabled', 'modelValue']
),
]),
_: 1,
},
512
),
[
[
vShow,
unref(isShowAttr)[
protocolNames[activeProto.value]
].indexOf('modelLists') >= 0,
],
]
),
withDirectives(
createVNode$1(
unref(ElFormItem),
{
label: '\u8BBE\u5907IP\uFF1A',
name: 'ServerName',
},
{
default: withCtx(() => [
createVNode$1(
unref(ElInput),
{
modelValue:
initialValues.value.parameters.ServerName,
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) =>
(initialValues.value.parameters.ServerName =
$event)),
},
null,
8,
['modelValue']
),
]),
_: 1,
},
512
),
[
[
vShow,
unref(isShowAttr)[
protocolNames[activeProto.value]
].indexOf('ServerName') >= 0,
],
]
),
withDirectives(
createVNode$1(
unref(ElFormItem),
{
label: '\u673A\u67B6\u53F7\uFF1A',
name: 'Rack',
},
{
default: withCtx(() => [
createVNode$1(
unref(ElInput),
{
modelValue: initialValues.value.parameters.Rack,
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) =>
(initialValues.value.parameters.Rack =
$event)),
},
null,
8,
['modelValue']
),
]),
_: 1,
},
512
),
[
[
vShow,
unref(isShowAttr)[
protocolNames[activeProto.value]
].indexOf('Rack') >= 0,
],
]
),
withDirectives(
createVNode$1(
unref(ElFormItem),
{
label: 'CPU\u63D2\u69FD\uFF1A',
name: 'Slot',
},
{
default: withCtx(() => [
createVNode$1(
unref(ElInput),
{
modelValue: initialValues.value.parameters.Slot,
'onUpdate:modelValue':
_cache[7] ||
(_cache[7] = ($event) =>
(initialValues.value.parameters.Slot =
$event)),
},
null,
8,
['modelValue']
),
]),
_: 1,
},
512
),
[
[
vShow,
unref(isShowAttr)[
protocolNames[activeProto.value]
].indexOf('Slot') >= 0,
],
]
),
withDirectives(
createVNode$1(
unref(ElFormItem),
{
label: '\u8BBE\u5907ID\uFF1A',
name: 'DeviceID',
},
{
default: withCtx(() => [
createVNode$1(
unref(ElInput),
{
modelValue:
initialValues.value.parameters.DeviceID,
'onUpdate:modelValue':
_cache[8] ||
(_cache[8] = ($event) =>
(initialValues.value.parameters.DeviceID =
$event)),
},
null,
8,
['modelValue']
),
]),
_: 1,
},
512
),
[
[
vShow,
unref(isShowAttr)[
protocolNames[activeProto.value]
].indexOf('DeviceID') >= 0,
],
]
),
withDirectives(
createVNode$1(
unref(ElFormItem),
{
label: '\u7AEF\u53E3\u53F7',
name: 'Port',
},
{
default: withCtx(() => [
createVNode$1(
unref(ElInput),
{
modelValue: initialValues.value.parameters.Port,
'onUpdate:modelValue':
_cache[9] ||
(_cache[9] = ($event) =>
(initialValues.value.parameters.Port =
$event)),
onInput:
_cache[10] ||
(_cache[10] = ($event) =>
limitNumber2($event, 'Port')),
},
null,
8,
['modelValue']
),
]),
_: 1,
},
512
),
[
[
vShow,
unref(isShowAttr)[
protocolNames[activeProto.value]
].indexOf('Port') >= 0,
],
]
),
withDirectives(
createVNode$1(
unref(ElFormItem),
{
label: '\u8D85\u65F6\u65F6\u95F4\uFF1A',
name: 'TimeOut',
},
{
default: withCtx(() => [
createVNode$1(
unref(ElInput),
{
modelValue:
initialValues.value.parameters.TimeOut,
'onUpdate:modelValue':
_cache[11] ||
(_cache[11] = ($event) =>
(initialValues.value.parameters.TimeOut =
$event)),
class: 'cms-el-input',
onInput:
_cache[12] ||
(_cache[12] = ($event) =>
limitNumber2($event, 'TimeOut')),
},
{
append: withCtx(() => [_hoisted_3$s]),
_: 1,
},
8,
['modelValue']
),
]),
_: 1,
},
512
),
[
[
vShow,
unref(isShowAttr)[
protocolNames[activeProto.value]
].indexOf('TimeOut') >= 0,
],
]
),
withDirectives(
createVNode$1(
unref(ElFormItem),
{
label: '32\u4F4D\u5B57\u8282\u987A\u5E8F\uFF1A',
name: 'ByteOrder',
},
{
default: withCtx(() => [
createVNode$1(
unref(ElSelect),
{
modelValue:
initialValues.value.parameters.ByteOrder,
'onUpdate:modelValue':
_cache[13] ||
(_cache[13] = ($event) =>
(initialValues.value.parameters.ByteOrder =
$event)),
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
},
{
default: withCtx(() => [
createVNode$1(unref(ElOption$1), {
value: '1234',
label: '1234',
}),
createVNode$1(unref(ElOption$1), {
value: '2143',
label: '2143',
}),
createVNode$1(unref(ElOption$1), {
value: '3412',
label: '3412',
}),
createVNode$1(unref(ElOption$1), {
value: '4321',
label: '4321',
}),
]),
_: 1,
},
8,
['modelValue']
),
]),
_: 1,
},
512
),
[
[
vShow,
unref(isShowAttr)[
protocolNames[activeProto.value]
].indexOf('ByteOrder') >= 0,
],
]
),
withDirectives(
createVNode$1(
unref(ElFormItem),
{
label:
'\u5B57\u7B26\u4E32\u5B57\u8282\u987A\u5E8F\uFF1A',
name: 'StrByteOrder',
},
{
default: withCtx(() => [
createVNode$1(
unref(ElSelect),
{
modelValue:
initialValues.value.parameters.StrByteOrder,
'onUpdate:modelValue':
_cache[14] ||
(_cache[14] = ($event) =>
(initialValues.value.parameters.StrByteOrder =
$event)),
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
},
{
default: withCtx(() => [
createVNode$1(unref(ElOption$1), {
value: '1234',
label: '1234',
}),
createVNode$1(unref(ElOption$1), {
value: '2143',
label: '2143',
}),
createVNode$1(unref(ElOption$1), {
value: '3412',
label: '3412',
}),
createVNode$1(unref(ElOption$1), {
value: '4321',
label: '4321',
}),
]),
_: 1,
},
8,
['modelValue']
),
]),
_: 1,
},
512
),
[
[
vShow,
unref(isShowAttr)[
protocolNames[activeProto.value]
].indexOf('StrByteOrder') >= 0,
],
]
),
]),
]),
_: 1,
},
8,
['model']
),
createElementVNode(
'div',
{
class: 'el-dialog__footer',
style: { 'margin-top': '30px' },
},
[
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: closeDialog,
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: submitForn,
},
'\u786E\u8BA4'
),
]
),
])
)
}
},
})
var AddDeviceForm = /* @__PURE__ */ _export_sfc(_sfc_main$A, [
['__scopeId', 'data-v-51ea3002'],
])
var addDeviceForm = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: AddDeviceForm,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
function getInnerTreeData() {
return request({
url: '/api/v1/variable/inner/tree',
method: 'get',
})
}
function sortTree(data2) {
return request({
url: '/api/v1/variable/inner/tree/sort',
method: 'post',
data: data2,
})
}
function addInnerVarGroup(name2) {
return request({
url: `/api/v1/variable/inner/group`,
method: 'post',
data: {
name: name2,
},
})
}
function getInnerVarGroupMsg(id2) {
return request({
url: `/api/v1/variable/inner/group/${id2}`,
method: 'get',
})
}
function modifyInnerVarGroup(id2, name2) {
return request({
url: `/api/v1/variable/inner/group/${id2}`,
method: 'put',
data: {
name: name2,
},
})
}
function delInnerVarGroup(id2) {
return request({
url: `/api/v1/variable/inner/group/${id2}`,
method: 'delete',
})
}
function getTags(groupId) {
return request({
url: `/api/v1/variable/inner/group/${groupId}/tag?`,
method: 'get',
})
}
function createTag(groupId, data2) {
return request({
url: `/api/v1/variable/inner/group/${groupId}/tag`,
method: 'post',
data: data2,
})
}
function modifyTag(groupId, data2) {
return request({
url: `/api/v1/variable/inner/group/${groupId}/tag`,
method: 'put',
data: data2,
})
}
function delTag(groupId, ids) {
return request({
url: `/api/v1/variable/inner/group/${groupId}/tag`,
method: 'delete',
data: ids,
})
}
var addDeviceGroupForm_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$w = { class: 'form-table' }
const _sfc_main$z = /* @__PURE__ */ defineComponent({
props: ['nodeData', 'isIoVar'],
emits: ['closeDialog', 'updateTreeData'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const initialValues = ref({
name: '',
isDIYScanCycle: false,
time: 0,
})
onMounted(() => {
if (props2.nodeData.type === 'modify') {
props2.isIoVar
? getVarGroupMsg(
props2.nodeData.parent.deviceId,
props2.nodeData.node.groupId
).then((res) => {
initialValues.value.name = res.name
})
: getInnerVarGroupMsg(props2.nodeData.node.groupId).then((res) => {
initialValues.value.name = res.name
})
}
})
const closeDialog = () => {
emit2('closeDialog')
}
const submitForm = () => {
let { node: node2, parent: parent2 } = props2.nodeData
if (props2.nodeData.type === 'add') {
props2.isIoVar
? addVarGroup(node2.deviceId, initialValues.value.name).then(
(res) => {
emit2('updateTreeData', {
type: 'add',
node: node2.deviceId,
id: res,
})
}
)
: addInnerVarGroup(initialValues.value.name).then((res) => {
emit2('updateTreeData', {
type: 'add',
id: res,
})
})
} else {
props2.isIoVar
? modifyVarGroup(parent2.deviceId, node2.groupId, {
name: initialValues.value.name,
}).then((res) => {
emit2('updateTreeData', {
type: 'modify',
node: parent2.deviceId,
id: res,
})
})
: modifyInnerVarGroup(node2.groupId, initialValues.value.name).then(
(res) => {
emit2('updateTreeData', {
type: 'modify',
id: res,
})
}
)
}
emit2('closeDialog')
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_form = resolveComponent('el-form')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
_component_el_form,
{
onSubmit:
_cache[1] || (_cache[1] = withModifiers(() => {}, ['prevent'])),
model: initialValues.value,
'label-width': '80px',
class: 'add-device-group-form cms-el-form',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$w, [
createVNode$1(
_component_el_form_item,
{ label: '\u5206\u7EC4\u540D\u79F0' },
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: initialValues.value.name,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(initialValues.value.name = $event)),
},
null,
8,
['modelValue']
),
]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['model']
),
createElementVNode('div', { class: 'el-dialog__footer' }, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: closeDialog,
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: submitForm,
},
'\u786E\u8BA4'
),
]),
])
)
}
},
})
var AddDeviceGroupForm = /* @__PURE__ */ _export_sfc(_sfc_main$z, [
['__scopeId', 'data-v-3f263a60'],
])
var addDeviceGroupForm = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: AddDeviceGroupForm,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var addressConfig_vue_vue_type_style_index_0_scoped_true_lang = ''
const _sfc_main$y = /* @__PURE__ */ defineComponent({
props: ['data', 'protocolName', 'model', 'suppiler'],
emits: ['closeDialog', 'submitForm'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const closeDialog = () => {
emit2('closeDialog')
}
const arrayEqual = (arr1, arr2) => {
if (arr1 === arr2) return true
if (arr1.length !== arr2.length) return false
for (var i2 = 0; i2 < arr1.length; ++i2) {
if (arr1[i2] !== arr2[i2]) return false
}
return true
}
const submitFormData = ref({})
const submitForm = () => {
let addressData = JSON.parse(
JSON.stringify(Object.assign(initialValues, formData.value))
)
if (popupData.protocolName === 'S7_TCP') {
if (arrayEqual(addressData.showList, [1, 2, 5])) {
submitFormData.value.dataValue = `${
addressData.letters + addressData.lettlesValue
}.${addressData.bit}`
} else if (arrayEqual(addressData.showList, [1, 2, 3, 5])) {
submitFormData.value.dataValue = `${
addressData.dataArea + addressData.DBNum
}.${addressData.letters + addressData.lettlesValue}.${
addressData.bit
}`
} else if (arrayEqual(addressData.showList, [1, 2])) {
submitFormData.value.dataValue = `${
addressData.letters + addressData.lettlesValue
}`
} else if (arrayEqual(addressData.showList, [1, 2, 3])) {
submitFormData.value.dataValue = `${
addressData.dataArea + addressData.DBNum
}.${addressData.letters + addressData.lettlesValue}`
} else if (arrayEqual(addressData.showList, [1, 4, 7])) {
if (addressData.dataArea === '\u4F4D') {
if (addressData.addressType === '\u5B57\u8282') {
submitFormData.value.dataValue = `MB${addressData.addressOffset}`
} else if (addressData.addressType === '\u5B57') {
submitFormData.value.dataValue = `MW${addressData.addressOffset}`
} else if (addressData.addressType === '\u53CC\u5B57') {
submitFormData.value.dataValue = `MD${addressData.addressOffset}`
}
} else if (addressData.dataArea === '\u8F93\u5165') {
if (addressData.addressType === '\u5B57\u8282') {
submitFormData.value.dataValue = `IB${addressData.addressOffset}`
} else if (addressData.addressType === '\u5B57') {
submitFormData.value.dataValue = `IW${addressData.addressOffset}`
} else if (addressData.addressType === '\u53CC\u5B57') {
submitFormData.value.dataValue = `ID${addressData.addressOffset}`
}
} else if (addressData.dataArea === '\u8F93\u51FA') {
if (addressData.addressType === '\u5B57\u8282') {
submitFormData.value.dataValue = `QB${addressData.addressOffset}`
} else if (addressData.addressType === '\u5B57') {
popupData.dataValue = `QW${addressData.addressOffset}`
} else if (addressData.addressType === '\u53CC\u5B57') {
submitFormData.value.dataValue = `QD${addressData.addressOffset}`
}
}
} else if (arrayEqual(addressData.showList, [1, 3, 4, 7])) {
if (addressData.addressType === '\u5B57\u8282') {
submitFormData.value.dataValue = `${
addressData.dataArea + addressData.DBNum
}.DBB${addressData.addressOffset}`
} else if (addressData.addressType === '\u5B57') {
submitFormData.value.dataValue = `${
addressData.dataArea + addressData.DBNum
}.DBW${addressData.addressOffset}`
} else if (addressData.addressType === '\u53CC\u5B57') {
submitFormData.value.dataValue = `${
addressData.dataArea + addressData.DBNum
}.DBD${addressData.addressOffset}`
}
} else if (arrayEqual(addressData.showList, [1, 4, 6])) {
if (popupData.model === 'S7-200Smart') {
if (addressData.dataArea === 'M') {
submitFormData.value.dataValue = `MB${addressData.addressOffset}`
} else if (addressData.dataArea === 'V') {
submitFormData.value.dataValue = `VB${addressData.addressOffset}`
} else if (addressData.dataArea === 'I') {
submitFormData.value.dataValue = `IB${addressData.addressOffset}`
} else if (addressData.dataArea === 'Q') {
submitFormData.value.dataValue = `QB${addressData.addressOffset}`
}
} else {
if (
popupData.dataType ===
'\u6587\u672C\u53D8\u91CF8\u4F4D\u5B57\u7B26\u96C6'
) {
if (addressData.dataArea === '\u4F4D') {
submitFormData.value.dataValue = `MB${addressData.addressOffset}`
} else if (addressData.dataArea === '\u8F93\u5165') {
submitFormData.value.dataValue = `IB${addressData.addressOffset}`
} else if (addressData.dataArea === '\u8F93\u51FA') {
submitFormData.value.dataValue = `QB${addressData.addressOffset}`
}
} else {
if (addressData.dataArea === '\u4F4D') {
submitFormData.value.dataValue = `MW${addressData.addressOffset}`
} else if (addressData.dataArea === '\u8F93\u5165') {
submitFormData.value.dataValue = `IW${addressData.addressOffset}`
} else if (addressData.dataArea === '\u8F93\u51FA') {
submitFormData.value.dataValue = `QW${addressData.addressOffset}`
}
}
}
} else if (arrayEqual(addressData.showList, [1, 3, 4, 6])) {
if (
popupData.dataType ===
'\u6587\u672C\u53D8\u91CF8\u4F4D\u5B57\u7B26\u96C6'
) {
submitFormData.value.dataValue = `${
addressData.dataArea + addressData.DBNum
}.DBB${addressData.addressOffset}`
} else if (
popupData.dataType ===
'\u6587\u672C\u53D8\u91CF16\u4F4D\u5B57\u7B26\u96C6'
) {
submitFormData.value.dataValue = `${
addressData.dataArea + addressData.DBNum
}.DBW${addressData.addressOffset}`
} else {
submitFormData.value.dataValue = `${
addressData.dataArea + addressData.DBNum
}.DBW${addressData.addressOffset}`
}
} else if (arrayEqual(addressData.showList, [1, 4, 6, 7])) {
if (popupData.model === 'S7-200Smart') {
if (addressData.dataArea === 'M') {
if (addressData.addressType === '\u5B57\u8282') {
submitFormData.value.dataValue = `MB${addressData.addressOffset}`
} else if (addressData.addressType === '\u5B57') {
submitFormData.value.dataValue = `MW${addressData.addressOffset}`
}
} else if (addressData.dataArea === 'V') {
if (addressData.addressType === '\u5B57\u8282') {
submitFormData.value.dataValue = `VB${addressData.addressOffset}`
} else if (addressData.addressType === '\u5B57') {
submitFormData.value.dataValue = `VW${addressData.addressOffset}`
}
} else if (addressData.dataArea === 'I') {
if (addressData.addressType === '\u5B57\u8282') {
submitFormData.value.dataValue = `IB${addressData.addressOffset}`
} else if (addressData.addressType === '\u5B57') {
submitFormData.value.dataValue = `IW${addressData.addressOffset}`
}
} else if (addressData.dataArea === 'Q') {
if (addressData.addressType === '\u5B57\u8282') {
submitFormData.value.dataValue = `QB${addressData.addressOffset}`
} else if (addressData.addressType === '\u5B57') {
submitFormData.value.dataValue = `QW${addressData.addressOffset}`
}
}
} else {
if (addressData.dataArea === '\u4F4D') {
if (addressData.addressType === '\u5B57\u8282') {
submitFormData.value.dataValue = `MB${addressData.addressOffset}`
} else if (addressData.addressType === '\u5B57') {
submitFormData.value.dataValue = `MW${addressData.addressOffset}`
}
} else if (addressData.dataArea === '\u8F93\u5165') {
if (addressData.addressType === '\u5B57\u8282') {
submitFormData.value.dataValue = `IB${addressData.addressOffset}`
} else if (addressData.addressType === '\u5B57') {
submitFormData.value.dataValue = `IW${addressData.addressOffset}`
}
} else if (addressData.dataArea === '\u8F93\u51FA') {
if (addressData.addressType === '\u5B57\u8282') {
submitFormData.value.dataValue = `QB${addressData.addressOffset}`
} else if (addressData.addressType === '\u5B57') {
submitFormData.value.dataValue = `QW${addressData.addressOffset}`
}
}
}
} else if (arrayEqual(addressData.showList, [1, 3, 4, 6, 7])) {
if (addressData.addressType === '\u5B57\u8282') {
submitFormData.value.dataValue = `${
addressData.dataArea + addressData.DBNum
}.DBB${addressData.addressOffset}`
} else if (addressData.addressType === '\u5B57') {
submitFormData.value.dataValue = `${
addressData.dataArea + addressData.DBNum
}.DBW${addressData.addressOffset}`
}
}
} else if (popupData.protocolName === 'Modbus_TCP') {
if (
arrayEqual(addressData.showList, [1, 2]) ||
arrayEqual(addressData.showList, [1, 2, 4])
) {
if (addressData.dataArea === '\u7EBF\u5708\u72B6\u6001') {
submitFormData.value.dataValue = `0${addressData.address
.toString()
.padStart(5, '0')}`
} else if (
addressData.dataArea === '\u79BB\u6563\u8F93\u5165\u72B6\u6001'
) {
submitFormData.value.dataValue = `1${addressData.address
.toString()
.padStart(5, '0')}`
} else if (
addressData.dataArea === '\u8F93\u5165\u5BC4\u5B58\u5668'
) {
submitFormData.value.dataValue = `3${addressData.address
.toString()
.padStart(5, '0')}`
} else if (
addressData.dataArea === '\u4FDD\u6301\u5BC4\u5B58\u5668'
) {
submitFormData.value.dataValue = `4${addressData.address
.toString()
.padStart(5, '0')}`
}
} else if (arrayEqual(addressData.showList, [1, 2, 3])) {
if (addressData.dataArea === '\u7EBF\u5708\u72B6\u6001') {
submitFormData.value.dataValue = `0${addressData.address
.toString()
.padStart(5, '0')}.${addressData.bit}`
} else if (
addressData.dataArea === '\u79BB\u6563\u8F93\u5165\u72B6\u6001'
) {
submitFormData.value.dataValue = `1${addressData.address
.toString()
.padStart(5, '0')}.${addressData.bit}`
} else if (
addressData.dataArea === '\u8F93\u5165\u5BC4\u5B58\u5668'
) {
submitFormData.value.dataValue = `3${addressData.address
.toString()
.padStart(5, '0')}.${addressData.bit}`
} else if (
addressData.dataArea === '\u4FDD\u6301\u5BC4\u5B58\u5668'
) {
submitFormData.value.dataValue = `4${addressData.address
.toString()
.padStart(5, '0')}.${addressData.bit}`
}
}
}
submitFormData.value.stringLength = addressData.length + ''
nextTick(() => {
emit2('submitForm', submitFormData.value)
})
}
const dataTypeKey = {
0: '\u4E8C\u8FDB\u5236\u53D8\u91CF',
1: '\u6709\u7B26\u53F78\u4F4D\u6574\u578B',
2: '\u65E0\u7B26\u53F78\u4F4D\u6574\u578B',
3: '\u6709\u7B26\u53F716\u4F4D\u6574\u578B',
4: '\u65E0\u7B26\u53F716\u4F4D\u6574\u578B',
5: '\u6709\u7B26\u53F732\u4F4D\u6574\u578B',
6: '\u65E0\u7B26\u53F732\u4F4D\u6574\u578B',
7: '\u6709\u7B26\u53F764\u4F4D\u6574\u578B',
8: '\u65E0\u7B26\u53F764\u4F4D\u6574\u578B',
9: 'F32\u4F4D\u6D6E\u70B9\u6570IEEE754',
10: 'F64\u4F4D\u6D6E\u70B9\u6570IEEE754',
11: '\u65E5\u671F',
12: '\u65F6\u95F4',
13: '\u65E5\u671F\u65F6\u95F4',
14: '\u5B57\u7B26\u4E32',
15: '\u5BBD\u5B57\u7B26\u4E32',
16: '\u6587\u672C\u53D8\u91CF8\u4F4D\u5B57\u7B26\u96C6',
17: '\u6587\u672C\u53D8\u91CF16\u4F4D\u5B57\u7B26\u96C6',
18: '\u5B9A\u65F6\u5668',
}
const popupData = reactive({
protocolName: props2.protocolName,
dataType: dataTypeKey[props2.data.type],
dataValue: props2.data.address,
length: props2.data.stringLength,
suppiler: props2.suppiler,
model: props2.model,
})
const initialValues = {
dataArea: '',
letters: 'M',
lettlesValue: '0',
DBNum: '0',
bit: '0',
length: '',
addressOffset: '0',
addressType: '\u5B57\u8282',
showList: [],
address: '1',
}
const formData = ref({})
let types2 = [
'\u6709\u7B26\u53F78\u4F4D\u6574\u578B',
'\u6709\u7B26\u53F716\u4F4D\u6574\u578B',
'\u6709\u7B26\u53F732\u4F4D\u6574\u578B',
'\u6709\u7B26\u53F764\u4F4D\u6574\u578B',
'\u65E0\u7B26\u53F78\u4F4D\u6574\u578B',
'\u65E0\u7B26\u53F716\u4F4D\u6574\u578B',
'\u65E0\u7B26\u53F732\u4F4D\u6574\u578B',
'\u65E0\u7B26\u53F764\u4F4D\u6574\u578B',
'F32\u4F4D\u6D6E\u70B9\u6570IEEE754',
'F64\u4F4D\u6D6E\u70B9\u6570IEEE754',
'\u5B57\u7B26\u4E32',
]
onMounted(() => {
init2()
})
const init2 = () => {
let address = props2.data.address
if (popupData.protocolName === 'S7_TCP') {
if (popupData.model === 'S7-200Smart') {
if (popupData.dataType === '\u4E8C\u8FDB\u5236\u53D8\u91CF') {
let bitReg = /^[M]([0-9]{1,})([.]{1})([0-7]{1})$/
let VReg = /^[V]([0-9]{1,})([.]{1})([0-7]{1})$/
let IReg = /^[I]([0-9]{1,})([.]{1})([0-7]{1})$/
let QReg = /^[Q]([0-9]{1,})([.]{1})([0-7]{1})$/
if (bitReg.test(address)) {
let arr = address.match(bitReg)
formData.value.dataArea = 'M'
formData.value.letters = 'M'
formData.value.lettlesValue = arr[1]
formData.value.bit = arr[3]
formData.value.showList = [1, 2, 5]
} else if (VReg.test(address)) {
let arr = address.match(VReg)
formData.value.dataArea = 'V'
formData.value.letters = 'V'
formData.value.lettlesValue = arr[1]
formData.value.bit = arr[3]
formData.value.showList = [1, 2, 5]
} else if (IReg.test(address)) {
let arr = address.match(IReg)
formData.value.dataArea = 'I'
formData.value.letters = 'I'
formData.value.lettlesValue = arr[1]
formData.value.bit = arr[3]
formData.value.showList = [1, 2, 5]
} else if (QReg.test(address)) {
let arr = address.match(QReg)
formData.value.dataArea = 'Q'
formData.value.letters = 'Q'
formData.value.lettlesValue = arr[1]
formData.value.bit = arr[3]
formData.value.showList = [1, 2, 5]
} else {
formData.value.dataArea = 'M'
formData.value.letters = 'M'
formData.value.lettlesValue = '0'
formData.value.bit = '0'
formData.value.showList = [1, 2, 5]
}
} else if (
popupData.dataType === '\u6709\u7B26\u53F78\u4F4D\u6574\u578B' ||
popupData.dataType === '\u65E0\u7B26\u53F78\u4F4D\u6574\u578B'
) {
let bitReg = /^(MB)([0-9]{1,})$/
let VReg = /^(VB)([0-9]{1,})$/
let IReg = /^(IB)([0-9]{1,})$/
let QReg = /^(QB)([0-9]{1,})$/
if (bitReg.test(address)) {
let arr = address.match(bitReg)
formData.value.dataArea = 'M'
formData.value.letters = 'MB'
formData.value.lettlesValue = arr[2]
formData.value.showList = [1, 2]
} else if (VReg.test(address)) {
let arr = address.match(VReg)
formData.value.dataArea = 'V'
formData.value.letters = 'VB'
formData.value.lettlesValue = arr[2]
formData.value.showList = [1, 2]
} else if (IReg.test(address)) {
let arr = address.match(IReg)
formData.value.dataArea = 'I'
formData.value.letters = 'IB'
formData.value.lettlesValue = arr[2]
formData.value.showList = [1, 2]
} else if (QReg.test(address)) {
let arr = address.match(QReg)
formData.value.dataArea = 'Q'
formData.value.letters = 'QB'
formData.value.lettlesValue = arr[2]
formData.value.showList = [1, 2]
} else {
formData.value.dataArea = 'M'
formData.value.letters = 'MB'
formData.value.lettlesValue = '0'
formData.value.showList = [1, 2]
}
} else if (
popupData.dataType === '\u6709\u7B26\u53F716\u4F4D\u6574\u578B' ||
popupData.dataType === '\u65E0\u7B26\u53F716\u4F4D\u6574\u578B'
) {
let bitReg = /^(MW)([0-9]{1,})$/
let VReg = /^(VW)([0-9]{1,})$/
let IReg = /^(IW)([0-9]{1,})$/
let QReg = /^(QW)([0-9]{1,})$/
if (bitReg.test(address)) {
let arr = address.match(bitReg)
formData.value.dataArea = 'M'
formData.value.letters = 'MW'
formData.value.lettlesValue = arr[2]
formData.value.showList = [1, 2]
} else if (VReg.test(address)) {
let arr = address.match(VReg)
formData.value.dataArea = 'V'
formData.value.letters = 'VW'
formData.value.lettlesValue = arr[2]
formData.value.showList = [1, 2]
} else if (IReg.test(address)) {
let arr = address.match(IReg)
formData.value.dataArea = 'I'
formData.value.letters = 'IW'
formData.value.lettlesValue = arr[2]
formData.value.showList = [1, 2]
} else if (QReg.test(address)) {
let arr = address.match(QReg)
formData.value.dataArea = 'Q'
formData.value.letters = 'QW'
formData.value.lettlesValue = arr[2]
formData.value.showList = [1, 2]
} else {
formData.value.dataArea = 'M'
formData.value.letters = 'MW'
formData.value.lettlesValue = '0'
formData.value.showList = [1, 2]
}
} else if (
popupData.dataType === '\u6709\u7B26\u53F732\u4F4D\u6574\u578B' ||
popupData.dataType === '\u65E0\u7B26\u53F732\u4F4D\u6574\u578B' ||
popupData.dataType === 'F32\u4F4D\u6D6E\u70B9\u6570IEEE754'
) {
let bitReg = /^(MD)([0-9]{1,})$/
let VReg = /^(VD)([0-9]{1,})$/
let IReg = /^(ID)([0-9]{1,})$/
let QReg = /^(QD)([0-9]{1,})$/
if (bitReg.test(address)) {
let arr = address.match(bitReg)
formData.value.dataArea = 'M'
formData.value.letters = 'MD'
formData.value.lettlesValue = arr[2]
formData.value.showList = [1, 2]
} else if (VReg.test(address)) {
let arr = address.match(VReg)
formData.value.dataArea = 'V'
formData.value.letters = 'VB'
formData.value.lettlesValue = arr[2]
formData.value.showList = [1, 2]
} else if (IReg.test(address)) {
let arr = address.match(IReg)
formData.value.dataArea = 'I'
formData.value.letters = 'ID'
formData.value.lettlesValue = arr[2]
formData.value.showList = [1, 2]
} else if (QReg.test(address)) {
let arr = address.match(QReg)
formData.value.dataArea = 'Q'
formData.value.letters = 'QD'
formData.value.lettlesValue = arr[2]
formData.value.showList = [1, 2]
} else {
formData.value.dataArea = 'M'
formData.value.letters = 'MD'
formData.value.lettlesValue = '0'
formData.value.showList = [1, 2]
}
} else if (
popupData.dataType ===
'\u6587\u672C\u53D8\u91CF8\u4F4D\u5B57\u7B26\u96C6'
) {
let bitReg = /^(MB)([0-9]{1,})$/
let VReg = /^(VB)([0-9]{1,})$/
let IReg = /^(IB)([0-9]{1,})$/
let QReg = /^(QB)([0-9]{1,})$/
if (bitReg.test(address)) {
let arr = address.match(bitReg)
formData.value.dataArea = 'M'
formData.value.addressOffset = arr[2]
formData.value.length = popupData.length
formData.value.showList = [1, 4, 6]
} else if (VReg.test(address)) {
let arr = address.match(VReg)
formData.value.dataArea = 'V'
formData.value.addressOffset = arr[2]
formData.value.length = popupData.length
formData.value.showList = [1, 4, 6]
} else if (IReg.test(address)) {
let arr = address.match(IReg)
formData.value.dataArea = 'I'
formData.value.addressOffset = arr[2]
formData.value.length = popupData.length
formData.value.showList = [1, 4, 6]
} else if (QReg.test(address)) {
let arr = address.match(QReg)
formData.value.dataArea = 'Q'
formData.value.addressOffset = arr[2]
formData.value.length = popupData.length
formData.value.showList = [1, 4, 6]
} else {
formData.value.dataArea = 'M'
formData.value.addressOffset = '0'
formData.value.length = popupData.length
formData.value.showList = [1, 4, 6]
}
} else if (popupData.dataType === '\u5B57\u7B26\u4E32') {
let bitReg = /^(MB|MW)([0-9]{1,})$/
let VReg = /^(VB|VW)([0-9]{1,})$/
let IReg = /^(IB|IW)([0-9]{1,})$/
let QReg = /^(QB|QW)([0-9]{1,})$/
if (bitReg.test(address)) {
let arr = address.match(bitReg)
formData.value.dataArea = 'M'
formData.value.length = popupData.length
formData.value.addressOffset = arr[2]
if (arr[1] === 'MB') {
formData.value.addressType = '\u5B57\u8282'
} else if (arr[1] === 'MW') {
formData.value.addressType = '\u5B57'
}
formData.value.showList = [1, 4, 6, 7]
} else if (VReg.test(address)) {
let arr = address.match(VReg)
formData.value.dataArea = 'V'
formData.value.length = popupData.length
formData.value.addressOffset = arr[2]
if (arr[1] === 'VB') {
formData.value.addressType = '\u5B57\u8282'
} else if (arr[1] === 'VW') {
formData.value.addressType = '\u5B57'
}
formData.value.showList = [1, 4, 6, 7]
} else if (IReg.test(address)) {
let arr = address.match(IReg)
formData.value.dataArea = 'I'
formData.value.length = popupData.length
formData.value.addressOffset = arr[2]
if (arr[1] === 'IB') {
formData.value.addressType = '\u5B57\u8282'
} else if (arr[1] === 'IW') {
formData.value.addressType = '\u5B57'
}
formData.value.showList = [1, 4, 6, 7]
} else if (QReg.test(address)) {
let arr = address.match(QReg)
formData.value.dataArea = 'Q'
formData.value.length = popupData.length
formData.value.addressOffset = arr[2]
if (arr[1] === 'QB') {
formData.value.addressType = '\u5B57\u8282'
} else if (arr[1] === 'QW') {
formData.value.addressType = '\u5B57'
}
formData.value.showList = [1, 4, 6, 7]
} else {
formData.value.dataArea = 'M'
formData.value.length = popupData.length
formData.value.addressOffset = '0'
formData.value.addressType = '\u5B57\u8282'
formData.value.showList = [1, 4, 6, 7]
}
}
} else {
if (popupData.dataType === '\u4E8C\u8FDB\u5236\u53D8\u91CF') {
let bitReg = /^[M]([0-9]{1,})([.]{1})([0-7]{1})$/
let dbReg =
/^(DB)([1-9]{1}[0-9]{0,})([.]{1})((DBX){1})([0-9]{1,})([.]{1})([0-7]{1,})$/
let IReg = /^[I]([0-9]{1,})([.]{1})([0-7]{1})$/
let QReg = /^[Q]([0-9]{1,})([.]{1})([0-7]{1})$/
if (bitReg.test(address)) {
let arr = address.match(bitReg)
formData.value.dataArea = '\u4F4D'
formData.value.letters = 'M'
formData.value.lettlesValue = arr[1]
formData.value.bit = arr[3]
formData.value.showList = [1, 2, 5]
} else if (dbReg.test(address)) {
let arr = address.match(dbReg)
formData.value.dataArea = 'DB'
formData.value.DBNum = arr[2]
formData.value.letters = 'DBX'
formData.value.lettlesValue = arr[6]
formData.value.bit = arr[8]
formData.value.showList = [1, 2, 3, 5]
} else if (IReg.test(address)) {
let arr = address.match(IReg)
formData.value.dataArea = '\u8F93\u5165'
formData.value.letters = 'I'
formData.value.lettlesValue = arr[1]
formData.value.bit = arr[3]
formData.value.showList = [1, 2, 5]
} else if (QReg.test(address)) {
let arr = address.match(QReg)
formData.value.dataArea = '\u8F93\u51FA'
formData.value.letters = 'Q'
formData.value.lettlesValue = arr[1]
formData.value.bit = arr[3]
formData.value.showList = [1, 2, 5]
} else {
formData.value.dataArea = '\u4F4D'
formData.value.letters = 'M'
formData.value.lettlesValue = '0'
formData.value.bit = '0'
formData.value.showList = [1, 2, 5]
}
} else if (
popupData.dataType === '\u6709\u7B26\u53F78\u4F4D\u6574\u578B' ||
popupData.dataType === '\u65E0\u7B26\u53F78\u4F4D\u6574\u578B'
) {
let bitReg = /^(MB)([0-9]{1,})$/
let dbReg = /^(DB)([1-9]{1}[0-9]{0,})([.]{1})((DBB){1})([0-9]{1,})$/
let IReg = /^(IB)([0-9]{1,})$/
let QReg = /^(QB)([0-9]{1,})$/
if (bitReg.test(address)) {
let arr = address.match(bitReg)
formData.value.dataArea = '\u4F4D'
formData.value.letters = 'MB'
formData.value.lettlesValue = arr[2]
formData.value.showList = [1, 2]
} else if (dbReg.test(address)) {
let arr = address.match(dbReg)
formData.value.dataArea = 'DB'
formData.value.DBNum = arr[2]
formData.value.letters = 'DBB'
formData.value.lettlesValue = arr[6]
formData.value.showList = [1, 2, 3]
} else if (IReg.test(address)) {
let arr = address.match(IReg)
formData.value.dataArea = '\u8F93\u5165'
formData.value.letters = 'IB'
formData.value.lettlesValue = arr[2]
formData.value.showList = [1, 2]
} else if (QReg.test(address)) {
let arr = address.match(QReg)
formData.value.dataArea = '\u8F93\u51FA'
formData.value.letters = 'QB'
formData.value.lettlesValue = arr[2]
formData.value.showList = [1, 2]
} else {
formData.value.dataArea = '\u4F4D'
formData.value.letters = 'MB'
formData.value.lettlesValue = '0'
formData.value.showList = [1, 2]
}
} else if (
popupData.dataType === '\u6709\u7B26\u53F716\u4F4D\u6574\u578B' ||
popupData.dataType === '\u65E0\u7B26\u53F716\u4F4D\u6574\u578B'
) {
let bitReg = /^(MW)([0-9]{1,})$/
let dbReg = /^(DB)([1-9]{1}[0-9]{0,})([.]{1})((DBW){1})([0-9]{1,})$/
let IReg = /^(IW)([0-9]{1,})$/
let QReg = /^(QW)([0-9]{1,})$/
if (bitReg.test(address)) {
let arr = address.match(bitReg)
formData.value.dataArea = '\u4F4D'
formData.value.letters = 'MW'
formData.value.lettlesValue = arr[2]
formData.value.showList = [1, 2]
} else if (dbReg.test(address)) {
let arr = address.match(dbReg)
formData.value.dataArea = 'DB'
formData.value.DBNum = arr[2]
formData.value.letters = 'DBW'
formData.value.lettlesValue = arr[6]
formData.value.showList = [1, 2, 3]
} else if (IReg.test(address)) {
let arr = address.match(IReg)
formData.value.dataArea = '\u8F93\u5165'
formData.value.letters = 'IW'
formData.value.lettlesValue = arr[2]
formData.value.showList = [1, 2]
} else if (QReg.test(address)) {
let arr = address.match(QReg)
formData.value.dataArea = '\u8F93\u51FA'
formData.value.letters = 'QW'
formData.value.lettlesValue = arr[2]
formData.value.showList = [1, 2]
} else {
formData.value.dataArea = '\u4F4D'
formData.value.letters = 'MW'
formData.value.lettlesValue = '0'
formData.value.showList = [1, 2]
}
} else if (
popupData.dataType === '\u6709\u7B26\u53F732\u4F4D\u6574\u578B' ||
popupData.dataType === '\u65E0\u7B26\u53F732\u4F4D\u6574\u578B' ||
popupData.dataType === 'F32\u4F4D\u6D6E\u70B9\u6570IEEE754' ||
popupData.dataType === '\u5B9A\u65F6\u5668'
) {
let bitReg = /^(MD)([0-9]{1,})$/
let dbReg = /^(DB)([1-9]{1}[0-9]{0,})([.]{1})((DBD){1})([0-9]{1,})$/
let IReg = /^(ID)([0-9]{1,})$/
let QReg = /^(QD)([0-9]{1,})$/
if (bitReg.test(address)) {
let arr = address.match(bitReg)
formData.value.dataArea = '\u4F4D'
formData.value.letters = 'MD'
formData.value.lettlesValue = arr[2]
formData.value.showList = [1, 2]
} else if (dbReg.test(address)) {
let arr = address.match(dbReg)
formData.value.dataArea = 'DB'
formData.value.DBNum = arr[2]
formData.value.letters = 'DBD'
formData.value.lettlesValue = arr[6]
formData.value.showList = [1, 2, 3]
} else if (IReg.test(address)) {
let arr = address.match(IReg)
formData.value.dataArea = '\u8F93\u5165'
formData.value.letters = 'ID'
formData.value.lettlesValue = arr[2]
formData.value.showList = [1, 2]
} else if (QReg.test(address)) {
let arr = address.match(QReg)
formData.value.dataArea = '\u8F93\u51FA'
formData.value.letters = 'QD'
formData.value.lettlesValue = arr[2]
formData.value.showList = [1, 2]
} else {
formData.value.dataArea = '\u4F4D'
formData.value.letters = 'MD'
formData.value.lettlesValue = '0'
formData.value.showList = [1, 2]
}
} else if (
popupData.dataType === '\u6709\u7B26\u53F764\u4F4D\u6574\u578B' ||
popupData.dataType === '\u65E0\u7B26\u53F764\u4F4D\u6574\u578B' ||
popupData.dataType === 'F64\u4F4D\u6D6E\u70B9\u6570IEEE754' ||
popupData.dataType === '\u65E5\u671F' ||
popupData.dataType === '\u65F6\u95F4' ||
popupData.dataType === '\u65E5\u671F\u65F6\u95F4'
) {
let bitReg = /^(MB|MD|MW)([0-9]{1,})$/
let dbReg =
/^(DB)([1-9]{1}[0-9]{0,})([.]{1})((DBB|DBW|DBD){1})([0-9]{1,})$/
let IReg = /^(IB|IW|ID)([0-9]{1,})$/
let QReg = /^(QB|QW|QD)([0-9]{1,})$/
if (bitReg.test(address)) {
let arr = address.match(bitReg)
formData.value.dataArea = '\u4F4D'
formData.value.addressOffset = arr[2]
if (arr[1] === 'MB') {
formData.value.addressType = '\u5B57\u8282'
} else if (arr[1] === 'MW') {
formData.value.addressType = '\u5B57'
} else if (arr[1] === 'MD') {
formData.value.addressType = '\u53CC\u5B57'
}
formData.value.showList = [1, 4, 7]
} else if (dbReg.test(address)) {
let arr = address.match(dbReg)
formData.value.dataArea = 'DB'
formData.value.DBNum = arr[2]
formData.value.addressOffset = arr[6]
if (arr[4] === 'DBB') {
formData.value.addressType = '\u5B57\u8282'
} else if (arr[4] === 'DBW') {
formData.value.addressType = '\u5B57'
} else if (arr[4] === 'DBD') {
formData.value.addressType = '\u53CC\u5B57'
}
formData.value.showList = [1, 3, 4, 7]
} else if (IReg.test(address)) {
let arr = address.match(IReg)
formData.value.dataArea = '\u8F93\u5165'
formData.value.addressOffset = arr[2]
if (arr[1] === 'IB') {
formData.value.addressType = '\u5B57\u8282'
} else if (arr[1] === 'IW') {
formData.value.addressType = '\u5B57'
} else if (arr[1] === 'ID') {
formData.value.addressType = '\u53CC\u5B57'
}
formData.value.showList = [1, 4, 7]
} else if (QReg.test(address)) {
let arr = address.match(QReg)
formData.value.dataArea = '\u8F93\u51FA'
formData.value.addressOffset = arr[2]
if (arr[1] === 'QB') {
formData.value.addressType = '\u5B57\u8282'
} else if (arr[1] === 'QW') {
formData.value.addressType = '\u5B57'
} else if (arr[1] === 'QD') {
formData.value.addressType = '\u53CC\u5B57'
}
formData.value.showList = [1, 4, 7]
} else {
formData.value.dataArea = '\u4F4D'
formData.value.addressOffset = '0'
formData.value.addressType = '\u5B57\u8282'
formData.value.showList = [1, 4, 7]
}
} else if (
popupData.dataType ===
'\u6587\u672C\u53D8\u91CF8\u4F4D\u5B57\u7B26\u96C6'
) {
let bitReg = /^(MB)([0-9]{1,})$/
let dbReg = /^(DB)([1-9]{1}[0-9]{0,})([.]{1})((DBB){1})([0-9]{1,})$/
let IReg = /^(IB)([0-9]{1,})$/
let QReg = /^(QB)([0-9]{1,})$/
if (bitReg.test(address)) {
let arr = address.match(bitReg)
formData.value.dataArea = '\u4F4D'
formData.value.addressOffset = arr[2]
formData.value.length = popupData.length
formData.value.showList = [1, 4, 6]
} else if (dbReg.test(address)) {
let arr = address.match(dbReg)
formData.value.dataArea = 'DB'
formData.value.DBNum = arr[2]
formData.value.addressOffset = arr[6]
formData.value.length = popupData.length
formData.value.showList = [1, 3, 4, 6]
} else if (IReg.test(address)) {
let arr = address.match(IReg)
formData.value.dataArea = '\u8F93\u5165'
formData.value.addressOffset = arr[2]
formData.value.length = popupData.length
formData.value.showList = [1, 4, 6]
} else if (QReg.test(address)) {
let arr = address.match(QReg)
formData.value.dataArea = '\u8F93\u51FA'
formData.value.addressOffset = arr[2]
formData.value.length = popupData.length
formData.value.showList = [1, 4, 6]
} else {
formData.value.dataArea = '\u4F4D'
formData.value.addressOffset = '0'
formData.value.length = popupData.length
formData.value.showList = [1, 4, 6]
}
} else if (
popupData.dataType ===
'\u6587\u672C\u53D8\u91CF16\u4F4D\u5B57\u7B26\u96C6'
) {
let bitReg = /^(MW)([0-9]{1,})$/
let dbReg = /^(DB)([1-9]{1}[0-9]{0,})([.]{1})((DBW){1})([0-9]{1,})$/
let IReg = /^(IW)([0-9]{1,})$/
let QReg = /^(QW)([0-9]{1,})$/
if (bitReg.test(address)) {
let arr = address.match(bitReg)
formData.value.dataArea = '\u4F4D'
formData.value.addressOffset = arr[2]
formData.value.length = popupData.length
formData.value.showList = [1, 4, 6]
} else if (dbReg.test(address)) {
let arr = address.match(dbReg)
formData.value.dataArea = 'DB'
formData.value.DBNum = arr[2]
formData.value.addressOffset = arr[6]
formData.value.length = popupData.length
formData.value.showList = [1, 3, 4, 6]
} else if (IReg.test(address)) {
let arr = address.match(IReg)
formData.value.dataArea = '\u8F93\u5165'
formData.value.addressOffset = arr[2]
formData.value.length = popupData.length
formData.value.showList = [1, 4, 6]
} else if (QReg.test(address)) {
let arr = address.match(QReg)
formData.value.dataArea = '\u8F93\u51FA'
formData.value.addressOffset = arr[2]
formData.value.length = popupData.length
formData.value.showList = [1, 4, 6]
} else {
formData.value.dataArea = '\u4F4D'
formData.value.addressOffset = '0'
formData.value.length = popupData.length
formData.value.showList = [1, 4, 6]
}
} else if (
popupData.dataType === '\u5B57\u7B26\u4E32' ||
popupData.dataType === '\u5BBD\u5B57\u7B26\u4E32'
) {
let bitReg = /^(MB|MW)([0-9]{1,})$/
let dbReg =
/^(DB)([1-9]{1}[0-9]{0,})([.]{1})((DBB|DBW){1})([0-9]{1,})$/
let IReg = /^(IB|IW)([0-9]{1,})$/
let QReg = /^(QB|QW)([0-9]{1,})$/
if (bitReg.test(address)) {
let arr = address.match(bitReg)
formData.value.dataArea = '\u4F4D'
formData.value.length = popupData.length
formData.value.addressOffset = arr[2]
if (arr[1] === 'MB') {
formData.value.addressType = '\u5B57\u8282'
} else if (arr[1] === 'MW') {
formData.value.addressType = '\u5B57'
}
formData.value.showList = [1, 4, 6, 7]
} else if (dbReg.test(address)) {
let arr = address.match(dbReg)
formData.value.dataArea = 'DB'
formData.value.length = popupData.length
formData.value.DBNum = arr[2]
formData.value.addressOffset = arr[6]
if (arr[4] === 'DBB') {
formData.value.addressType = '\u5B57\u8282'
} else if (arr[4] === 'DBW') {
formData.value.addressType = '\u5B57'
}
formData.value.showList = [1, 3, 4, 6, 7]
} else if (IReg.test(address)) {
let arr = address.match(IReg)
formData.value.dataArea = '\u8F93\u5165'
formData.value.length = popupData.length
formData.value.addressOffset = arr[2]
if (arr[1] === 'IB') {
formData.value.addressType = '\u5B57\u8282'
} else if (arr[1] === 'IW') {
formData.value.addressType = '\u5B57'
}
formData.value.showList = [1, 4, 6, 7]
} else if (QReg.test(address)) {
let arr = address.match(QReg)
formData.value.dataArea = '\u8F93\u51FA'
formData.value.length = popupData.length
formData.value.addressOffset = arr[2]
if (arr[1] === 'QB') {
formData.value.addressType = '\u5B57\u8282'
} else if (arr[1] === 'QW') {
formData.value.addressType = '\u5B57'
}
formData.value.showList = [1, 4, 6, 7]
} else {
formData.value.dataArea = '\u4F4D'
formData.value.length = popupData.length
formData.value.addressOffset = '0'
formData.value.addressType = '\u5B57\u8282'
formData.value.showList = [1, 4, 6, 7]
}
}
}
} else if (popupData.protocolName === 'Modbus_TCP') {
let types22 = [
'\u6709\u7B26\u53F78\u4F4D\u6574\u578B',
'\u6709\u7B26\u53F716\u4F4D\u6574\u578B',
'\u6709\u7B26\u53F732\u4F4D\u6574\u578B',
'\u6709\u7B26\u53F764\u4F4D\u6574\u578B',
'\u65E0\u7B26\u53F78\u4F4D\u6574\u578B',
'\u65E0\u7B26\u53F716\u4F4D\u6574\u578B',
'\u65E0\u7B26\u53F732\u4F4D\u6574\u578B',
'\u65E0\u7B26\u53F764\u4F4D\u6574\u578B',
'F32\u4F4D\u6D6E\u70B9\u6570IEEE754',
'F64\u4F4D\u6D6E\u70B9\u6570IEEE754',
]
if (popupData.dataType == '000000') {
popupData.dataType = ''
popupData.dataValue = ''
return
}
if (popupData.dataType === '\u4E8C\u8FDB\u5236\u53D8\u91CF') {
let coilReg = /^[0]([0-9]{5})$/
let dIReg = /^[1]([0-9]{5})$/
let IReg = /^[3]([0-9]{5})([.]{1})([0-9]|(1[0-5]))$/
let KReg = /^[4]([0-9]{5})([.]{1})([0-9]|(1[0-5]))$/
if (coilReg.test(popupData.dataValue)) {
let arr = popupData.dataValue.match(coilReg)
formData.value.dataArea = '\u7EBF\u5708\u72B6\u6001'
formData.value.address =
arr && arr[1] !== null ? parseInt(arr[1]) : 1
formData.value.showList = [1, 2]
} else if (dIReg.test(popupData.dataValue)) {
let arr = popupData.dataValue.match(dIReg)
formData.value.dataArea = '\u79BB\u6563\u8F93\u5165\u72B6\u6001'
formData.value.address =
arr && arr[1] !== null ? parseInt(arr[1]) : 1
formData.value.showList = [1, 2]
} else if (IReg.test(popupData.dataValue)) {
let arr = popupData.dataValue.match(IReg)
formData.value.dataArea = '\u8F93\u5165\u5BC4\u5B58\u5668'
formData.value.address =
arr && arr[1] !== null ? parseInt(arr[1]) : 1
formData.value.bit = arr && arr[3] !== null ? parseInt(arr[3]) : 0
formData.value.showList = [1, 2, 3]
} else if (KReg.test(popupData.dataValue)) {
let arr = popupData.dataValue.match(KReg)
formData.value.dataArea = '\u4FDD\u6301\u5BC4\u5B58\u5668'
formData.value.address =
arr && arr[1] !== null ? parseInt(arr[1]) : 1
formData.value.bit = arr && arr[3] !== null ? parseInt(arr[3]) : 0
formData.value.showList = [1, 2, 3]
} else {
formData.value.dataArea = '\u7EBF\u5708\u72B6\u6001'
formData.value.address = 1
formData.value.showList = [1, 2]
}
} else if (types22.includes(popupData.dataType)) {
let IReg = /^[3]([0-9]{5})$/
let KReg = /^[4]([0-9]{5})$/
if (IReg.test(popupData.dataValue)) {
let arr = popupData.dataValue.match(IReg)
formData.value.dataArea = '\u8F93\u5165\u5BC4\u5B58\u5668'
formData.value.address =
arr && arr[1] !== null ? parseInt(arr[1]) : 1
formData.value.showList = [1, 2]
} else if (KReg.test(popupData.dataValue)) {
let arr = popupData.dataValue.match(KReg)
formData.value.dataArea = '\u4FDD\u6301\u5BC4\u5B58\u5668'
formData.value.address =
arr && arr[1] !== null ? parseInt(arr[1]) : 1
formData.value.showList = [1, 2]
} else {
formData.value.dataArea = '\u8F93\u5165\u5BC4\u5B58\u5668'
formData.value.address = 1
formData.value.showList = [1, 2]
}
} else if (popupData.dataType === '\u5B57\u7B26\u4E32') {
let IReg = /^[3]([0-9]{5})$/
let KReg = /^[4]([0-9]{5})$/
if (IReg.test(popupData.dataValue)) {
let arr = popupData.dataValue.match(IReg)
formData.value.dataArea = '\u8F93\u5165\u5BC4\u5B58\u5668'
formData.value.address =
arr && arr[1] !== null
? arr && arr[1] !== null
? parseInt(arr[1])
: 1
: 1
formData.value.length = popupData.length
formData.value.showList = [1, 2, 4]
} else if (KReg.test(popupData.dataValue)) {
let arr = popupData.dataValue.match(KReg)
formData.value.dataArea = '\u4FDD\u6301\u5BC4\u5B58\u5668'
formData.value.address =
arr && arr[1] !== null
? arr && arr[1] !== null
? parseInt(arr[1])
: 1
: 1
formData.value.length = popupData.length
formData.value.showList = [1, 2, 4]
} else {
formData.value.dataArea = '\u8F93\u5165\u5BC4\u5B58\u5668'
formData.value.address = 1
formData.value.length = popupData.length
formData.value.showList = [1, 2, 4]
}
}
}
}
const changeData_S7 = (e2, prop, type4) => {
formData.value[prop] = e2
if (popupData.model === 'S7-200Smart') {
if (type4 === '\u4E8C\u8FDB\u5236\u53D8\u91CF') {
if (prop === 'dataArea') {
if (e2 === 'M') {
formData.value.letters = 'M'
formData.value.showList = [1, 2, 5]
} else if (e2 === 'V') {
formData.value.letters = 'V'
formData.value.showList = [1, 2, 5]
} else if (e2 === 'I') {
formData.value.letters = 'I'
formData.value.showList = [1, 2, 5]
} else if (e2 === 'Q') {
formData.value.letters = 'Q'
formData.value.showList = [1, 2, 5]
}
}
} else if (
type4 === '\u6709\u7B26\u53F78\u4F4D\u6574\u578B' ||
type4 === '\u65E0\u7B26\u53F78\u4F4D\u6574\u578B'
) {
if (prop === 'dataArea') {
if (e2 === 'M') {
formData.value.letters = 'MB'
formData.value.showList = [1, 2]
} else if (e2 === 'V') {
formData.value.letters = 'VB'
formData.value.showList = [1, 2]
} else if (e2 === 'I') {
formData.value.letters = 'IB'
formData.value.showList = [1, 2]
} else if (e2 === 'Q') {
formData.value.letters = 'QB'
formData.value.showList = [1, 2]
}
}
} else if (
type4 === '\u6709\u7B26\u53F716\u4F4D\u6574\u578B' ||
type4 === '\u65E0\u7B26\u53F716\u4F4D\u6574\u578B'
) {
if (prop === 'dataArea') {
if (e2 === 'M') {
formData.value.letters = 'MW'
formData.value.showList = [1, 2]
} else if (e2 === 'V') {
formData.value.letters = 'VW'
formData.value.showList = [1, 2]
} else if (e2 === 'I') {
formData.value.letters = 'IW'
formData.value.showList = [1, 2]
} else if (e2 === 'Q') {
formData.value.letters = 'QW'
formData.value.showList = [1, 2]
}
}
} else if (
type4 === '\u6709\u7B26\u53F732\u4F4D\u6574\u578B' ||
type4 === '\u65E0\u7B26\u53F732\u4F4D\u6574\u578B' ||
type4 === 'F32\u4F4D\u6D6E\u70B9\u6570IEEE754'
) {
if (prop === 'dataArea') {
if (e2 === 'M') {
formData.value.letters = 'MD'
formData.value.showList = [1, 2]
} else if (e2 === 'V') {
formData.value.letters = 'VD'
formData.value.showList = [1, 2]
} else if (e2 === 'I') {
formData.value.letters = 'ID'
formData.value.showList = [1, 2]
} else if (e2 === 'Q') {
formData.value.letters = 'QD'
formData.value.showList = [1, 2]
}
}
} else if (
type4 === '\u6587\u672C\u53D8\u91CF8\u4F4D\u5B57\u7B26\u96C6'
) {
if (prop === 'dataArea') {
if (e2 === 'M') {
formData.value.showList = [1, 4, 6]
} else if (e2 === 'V') {
formData.value.showList = [1, 4, 6]
} else if (e2 === 'I') {
formData.value.showList = [1, 4, 6]
} else if (e2 === 'Q') {
formData.value.showList = [1, 4, 6]
}
}
} else if (type4 === '\u5B57\u7B26\u4E32') {
if (prop === 'dataArea') {
if (e2 === 'M') {
formData.value.showList = [1, 4, 6, 7]
} else if (e2 === 'V') {
formData.value.showList = [1, 4, 6, 7]
} else if (e2 === 'I') {
formData.value.showList = [1, 4, 6, 7]
} else if (e2 === 'Q') {
formData.value.showList = [1, 4, 6, 7]
}
}
}
} else {
if (type4 === '\u4E8C\u8FDB\u5236\u53D8\u91CF') {
if (prop === 'dataArea') {
if (e2 === '\u4F4D') {
formData.value.letters = 'M'
formData.value.showList = [1, 2, 5]
} else if (e2 === 'DB') {
formData.value.DBNum !== void 0
? null
: (formData.value.DBNum = '0')
formData.value.letters = 'DBX'
formData.value.showList = [1, 2, 3, 5]
} else if (e2 === '\u8F93\u5165') {
formData.value.letters = 'I'
formData.value.showList = [1, 2, 5]
} else if (e2 === '\u8F93\u51FA') {
formData.value.letters = 'Q'
formData.value.showList = [1, 2, 5]
}
}
} else if (
type4 === '\u6709\u7B26\u53F78\u4F4D\u6574\u578B' ||
type4 === '\u65E0\u7B26\u53F78\u4F4D\u6574\u578B'
) {
if (prop === 'dataArea') {
if (e2 === '\u4F4D') {
formData.value.letters = 'MB'
formData.value.showList = [1, 2]
} else if (e2 === 'DB') {
formData.value.letters = 'DBB'
formData.value.showList = [1, 2, 3]
} else if (e2 === '\u8F93\u5165') {
formData.value.letters = 'IB'
formData.value.showList = [1, 2]
} else if (e2 === '\u8F93\u51FA') {
formData.value.letters = 'QB'
formData.value.showList = [1, 2]
}
}
} else if (
type4 === '\u6709\u7B26\u53F716\u4F4D\u6574\u578B' ||
type4 === '\u65E0\u7B26\u53F716\u4F4D\u6574\u578B'
) {
if (prop === 'dataArea') {
if (e2 === '\u4F4D') {
formData.value.letters = 'MW'
formData.value.showList = [1, 2]
} else if (e2 === 'DB') {
formData.value.letters = 'DBW'
formData.value.showList = [1, 2, 3]
} else if (e2 === '\u8F93\u5165') {
formData.value.letters = 'IW'
formData.value.showList = [1, 2]
} else if (e2 === '\u8F93\u51FA') {
formData.value.letters = 'QW'
formData.value.showList = [1, 2]
}
}
} else if (
type4 === '\u6709\u7B26\u53F732\u4F4D\u6574\u578B' ||
type4 === '\u65E0\u7B26\u53F732\u4F4D\u6574\u578B' ||
type4 === 'F32\u4F4D\u6D6E\u70B9\u6570IEEE754' ||
type4 === '\u5B9A\u65F6\u5668'
) {
if (prop === 'dataArea') {
if (e2 === '\u4F4D') {
formData.value.letters = 'MD'
formData.value.showList = [1, 2]
} else if (e2 === 'DB') {
formData.value.letters = 'DBD'
formData.value.showList = [1, 2, 3]
} else if (e2 === '\u8F93\u5165') {
formData.value.letters = 'ID'
formData.value.showList = [1, 2]
} else if (e2 === '\u8F93\u51FA') {
formData.value.letters = 'QD'
formData.value.showList = [1, 2]
}
}
} else if (
type4 === '\u6709\u7B26\u53F764\u4F4D\u6574\u578B' ||
type4 === '\u65E0\u7B26\u53F764\u4F4D\u6574\u578B' ||
type4 === 'F64\u4F4D\u6D6E\u70B9\u6570IEEE754' ||
type4 === '\u65E5\u671F' ||
type4 === '\u65F6\u95F4' ||
type4 === '\u65E5\u671F\u65F6\u95F4'
) {
if (prop === 'dataArea') {
if (e2 === '\u4F4D') {
formData.value.showList = [1, 4, 7]
} else if (e2 === 'DB') {
formData.value.DBNum !== void 0
? null
: (formData.value.DBNum = '0')
formData.value.showList = [1, 3, 4, 7]
} else if (e2 === '\u8F93\u5165') {
formData.value.showList = [1, 4, 7]
} else if (e2 === '\u8F93\u51FA') {
formData.value.showList = [1, 4, 7]
}
}
} else if (
type4 === '\u6587\u672C\u53D8\u91CF8\u4F4D\u5B57\u7B26\u96C6' ||
type4 === '\u6587\u672C\u53D8\u91CF16\u4F4D\u5B57\u7B26\u96C6'
) {
if (prop === 'dataArea') {
if (e2 === '\u4F4D') {
formData.value.showList = [1, 4, 6]
} else if (e2 === 'DB') {
formData.value.showList = [1, 3, 4, 6]
} else if (e2 === '\u8F93\u5165') {
formData.value.showList = [1, 4, 6]
} else if (e2 === '\u8F93\u51FA') {
formData.value.showList = [1, 4, 6]
}
}
} else if (
type4 === '\u5B57\u7B26\u4E32' ||
type4 === '\u5BBD\u5B57\u7B26\u4E32'
) {
if (prop === 'dataArea') {
if (e2 === '\u4F4D') {
formData.value.showList = [1, 4, 6, 7]
} else if (e2 === 'DB') {
formData.value.showList = [1, 3, 4, 6, 7]
} else if (e2 === '\u8F93\u5165') {
formData.value.showList = [1, 4, 6, 7]
} else if (e2 === '\u8F93\u51FA') {
formData.value.showList = [1, 4, 6, 7]
}
}
}
}
}
const changeData_Modbus_TCP = (e2, prop, type4) => {
let types22 = [
'\u6709\u7B26\u53F78\u4F4D\u6574\u578B',
'\u6709\u7B26\u53F716\u4F4D\u6574\u578B',
'\u6709\u7B26\u53F732\u4F4D\u6574\u578B',
'\u6709\u7B26\u53F764\u4F4D\u6574\u578B',
'\u65E0\u7B26\u53F78\u4F4D\u6574\u578B',
'\u65E0\u7B26\u53F716\u4F4D\u6574\u578B',
'\u65E0\u7B26\u53F732\u4F4D\u6574\u578B',
'\u65E0\u7B26\u53F764\u4F4D\u6574\u578B',
'F32\u4F4D\u6D6E\u70B9\u6570IEEE754',
'F64\u4F4D\u6D6E\u70B9\u6570IEEE754',
]
formData.value[prop] = e2
if (type4 === '\u4E8C\u8FDB\u5236\u53D8\u91CF') {
if (prop === 'dataArea') {
if (e2 === '\u7EBF\u5708\u72B6\u6001') {
formData.value.showList = [1, 2]
} else if (e2 === '\u79BB\u6563\u8F93\u5165\u72B6\u6001') {
formData.value.showList = [1, 2]
} else if (e2 === '\u8F93\u5165\u5BC4\u5B58\u5668') {
formData.value.showList = [1, 2, 3]
} else if (e2 === '\u4FDD\u6301\u5BC4\u5B58\u5668') {
formData.value.showList = [1, 2, 3]
}
}
} else if (types22.includes(type4)) {
if (prop === 'dataArea') {
if (e2 === '\u8F93\u5165\u5BC4\u5B58\u5668') {
formData.value.showList = [1, 2]
} else if (e2 === '\u4FDD\u6301\u5BC4\u5B58\u5668') {
formData.value.showList = [1, 2]
}
}
}
formData.value = JSON.parse(
JSON.stringify(Object.assign(initialValues, formData.value))
)
}
const limitNumber2 = (e2, type4) => {
formData.value[type4] = (formData.value[type4] + '').replace(
/[^\d.]/g,
''
)
}
const limitPIntNum2 = (e2, type4) => {
formData.value[type4] = (formData.value[type4] + '').replace(
/^(0+)|[^\d]+/g,
''
)
}
const limitPZNumber = (e2, type4) => {
formData.value[type4] = Number(
(formData.value[type4] + '').replace(/[^\d]/g, '')
)
}
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_input = resolveComponent('el-input')
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_form = resolveComponent('el-form')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
_component_el_form,
{
onSubmit:
_cache[25] ||
(_cache[25] = withModifiers(() => {}, ['prevent'])),
model: formData.value,
'label-width': '100px',
class: 'address-config cms-el-form',
},
{
default: withCtx(() => [
unref(popupData).protocolName === 'S7_TCP'
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
[
formData.value.showList &&
formData.value.showList.includes(1)
? (openBlock(),
createBlock(
_component_el_form_item,
{
key: 0,
label: '\u6570\u636E\u533A\u57DF\uFF1A',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_select,
{
modelValue: formData.value.dataArea,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(formData.value.dataArea = $event)),
onChange:
_cache[1] ||
(_cache[1] = ($event) =>
changeData_S7(
$event,
'dataArea',
unref(popupData).dataType
)),
class: 'cms-el-select cms-el-input-min',
'popper-class': 'cms-el-select__popper',
},
{
default: withCtx(() => [
unref(popupData).model === 'S7-200Smart'
? (openBlock(),
createElementBlock(
Fragment,
{ key: 0 },
renderList(
['M', 'V', 'I', 'Q'],
(item2) => {
return createVNode$1(
_component_el_option,
{
key: item2,
label: item2,
value: item2,
},
null,
8,
['label', 'value']
)
}
),
64
))
: (openBlock(),
createElementBlock(
Fragment,
{ key: 1 },
renderList(
[
'\u4F4D',
'DB',
'\u8F93\u5165',
'\u8F93\u51FA',
],
(item2) => {
return createVNode$1(
_component_el_option,
{
key: item2,
label: item2,
value: item2,
},
null,
8,
['label', 'value']
)
}
),
64
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
_: 1,
}
))
: createCommentVNode('', true),
formData.value.showList &&
formData.value.showList.includes(2)
? (openBlock(),
createBlock(
_component_el_form_item,
{
key: 1,
label: formData.value.letters + '\uFF1A',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: formData.value.lettlesValue,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(formData.value.lettlesValue =
$event)),
class:
'cms-el-input-min cms-el-input-number',
onInput:
_cache[3] ||
(_cache[3] = ($event) =>
limitPZNumber(
$event,
'lettlesValue'
)),
},
null,
8,
['modelValue']
),
]),
_: 1,
},
8,
['label']
))
: createCommentVNode('', true),
formData.value.showList &&
formData.value.showList.includes(3)
? (openBlock(),
createBlock(
_component_el_form_item,
{
key: 2,
label: 'DB\u53F7\uFF1A',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: formData.value.DBNum,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(formData.value.DBNum = $event)),
class:
'cms-el-input-min cms-el-input-number',
onInput:
_cache[5] ||
(_cache[5] = ($event) =>
limitPIntNum2($event, 'DBNum')),
},
null,
8,
['modelValue']
),
]),
_: 1,
}
))
: createCommentVNode('', true),
formData.value.showList &&
formData.value.showList.includes(4)
? (openBlock(),
createBlock(
_component_el_form_item,
{
key: 3,
label: '\u5730\u5740\u504F\u79FB\u91CF\uFF1A',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: formData.value.addressOffset,
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) =>
(formData.value.addressOffset =
$event)),
class:
'cms-el-input-min cms-el-input-number',
onInput:
_cache[7] ||
(_cache[7] = ($event) =>
limitPIntNum2(
$event,
'addressOffset'
)),
},
null,
8,
['modelValue']
),
]),
_: 1,
}
))
: createCommentVNode('', true),
formData.value.showList &&
formData.value.showList.includes(5)
? (openBlock(),
createBlock(
_component_el_form_item,
{
key: 4,
label: '\u4F4D\uFF1A',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_select,
{
onChange:
_cache[8] ||
(_cache[8] = ($event) =>
changeData_Modbus_TCP(
$event,
'bit',
unref(popupData).dataType
)),
modelValue: formData.value.bit,
'onUpdate:modelValue':
_cache[9] ||
(_cache[9] = ($event) =>
(formData.value.bit = $event)),
class: 'cms-el-select cms-el-input-min',
'popper-class': 'cms-el-select__popper',
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(8, (item2) => {
return createVNode$1(
_component_el_option,
{
key: item2,
label: item2 - 1,
value: item2 - 1,
},
null,
8,
['label', 'value']
)
}),
64
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
_: 1,
}
))
: createCommentVNode('', true),
formData.value.showList &&
formData.value.showList.includes(6)
? (openBlock(),
createBlock(
_component_el_form_item,
{
key: 5,
label: '\u957F\u5EA6\uFF1A',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_input_number,
{
modelValue: formData.value.length,
'onUpdate:modelValue':
_cache[10] ||
(_cache[10] = ($event) =>
(formData.value.length = $event)),
min: 1,
max: 255,
step: 1,
controls: false,
onWheel:
_cache[11] ||
(_cache[11] = withModifiers(() => {}, [
'prevent',
])),
class:
'cms-el-input-min cms-el-input-number',
onInput:
_cache[12] ||
(_cache[12] = ($event) =>
limitNumber2($event, 'length')),
},
null,
8,
['modelValue']
),
]),
_: 1,
}
))
: createCommentVNode('', true),
formData.value.showList &&
formData.value.showList.includes(7)
? (openBlock(),
createBlock(
_component_el_form_item,
{
key: 6,
label: '\u5730\u5740\u7C7B\u578B\uFF1A',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_select,
{
onChange:
_cache[13] ||
(_cache[13] = ($event) =>
changeData_Modbus_TCP(
$event,
'addressType',
unref(popupData).dataType
)),
modelValue: formData.value.addressType,
'onUpdate:modelValue':
_cache[14] ||
(_cache[14] = ($event) =>
(formData.value.addressType =
$event)),
class: 'cms-el-select cms-el-input-min',
'popper-class': 'cms-el-select__popper',
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(
['\u5B57\u8282', '\u5B57'],
(item2) => {
return createVNode$1(
_component_el_option,
{
key: item2,
label: item2,
value: item2,
},
null,
8,
['label', 'value']
)
}
),
64
)),
![
'\u5B57\u7B26\u4E32',
'\u5BBD\u5B57\u7B26\u4E32',
].includes(unref(popupData).dataType)
? (openBlock(),
createBlock(_component_el_option, {
key: 0,
label: '\u53CC\u5B57',
value: '\u53CC\u5B57',
}))
: createCommentVNode('', true),
]),
_: 1,
},
8,
['modelValue']
),
]),
_: 1,
}
))
: createCommentVNode('', true),
],
64
))
: createCommentVNode('', true),
unref(popupData).protocolName === 'Modbus_TCP'
? (openBlock(),
createElementBlock(
Fragment,
{ key: 1 },
[
createVNode$1(
_component_el_form_item,
{ label: '\u6570\u636E\u533A\u57DF\uFF1A' },
{
default: withCtx(() => [
createVNode$1(
_component_el_select,
{
onChange:
_cache[15] ||
(_cache[15] = ($event) =>
changeData_Modbus_TCP(
$event,
'dataArea',
unref(popupData).dataType
)),
modelValue: formData.value.dataArea,
'onUpdate:modelValue':
_cache[16] ||
(_cache[16] = ($event) =>
(formData.value.dataArea = $event)),
class: 'cms-el-select cms-el-input-min',
'popper-class': 'cms-el-select__popper',
},
{
default: withCtx(() => [
!unref(types2).includes(
unref(popupData).dataType
)
? (openBlock(),
createBlock(_component_el_option, {
key: 0,
label: '\u7EBF\u5708\u72B6\u6001',
value: '\u7EBF\u5708\u72B6\u6001',
}))
: createCommentVNode('', true),
!unref(types2).includes(
unref(popupData).dataType
)
? (openBlock(),
createBlock(_component_el_option, {
key: 1,
label:
'\u79BB\u6563\u8F93\u5165\u72B6\u6001',
value:
'\u79BB\u6563\u8F93\u5165\u72B6\u6001',
}))
: createCommentVNode('', true),
createVNode$1(_component_el_option, {
label: '\u8F93\u5165\u5BC4\u5B58\u5668',
value: '\u8F93\u5165\u5BC4\u5B58\u5668',
}),
createVNode$1(_component_el_option, {
label: '\u4FDD\u6301\u5BC4\u5B58\u5668',
value: '\u4FDD\u6301\u5BC4\u5B58\u5668',
}),
]),
_: 1,
},
8,
['modelValue']
),
]),
_: 1,
}
),
formData.value.showList &&
formData.value.showList.includes(2)
? (openBlock(),
createBlock(
_component_el_form_item,
{
key: 0,
label: '\u504F\u79FB\u5730\u5740\uFF1A',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_input_number,
{
min: 1,
step: 1,
controls: false,
onWheel:
_cache[17] ||
(_cache[17] = withModifiers(() => {}, [
'prevent',
])),
modelValue: formData.value.address,
'onUpdate:modelValue':
_cache[18] ||
(_cache[18] = ($event) =>
(formData.value.address = $event)),
class:
'cms-el-input-min cms-el-input-number',
onInput:
_cache[19] ||
(_cache[19] = ($event) =>
limitPIntNum2($event, 'address')),
},
null,
8,
['modelValue']
),
]),
_: 1,
}
))
: createCommentVNode('', true),
formData.value.showList &&
formData.value.showList.includes(3)
? (openBlock(),
createBlock(
_component_el_form_item,
{
key: 1,
label: '\u4F4D\uFF1A',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_select,
{
onChange:
_cache[20] ||
(_cache[20] = ($event) =>
changeData_Modbus_TCP(
$event,
'bit',
unref(popupData).dataType
)),
modelValue: formData.value.bit,
'onUpdate:modelValue':
_cache[21] ||
(_cache[21] = ($event) =>
(formData.value.bit = $event)),
class: 'cms-el-select cms-el-input-min',
'popper-class': 'cms-el-select__popper',
},
{
default: withCtx(() => [
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(16, (item2) => {
return createVNode$1(
_component_el_option,
{
key: item2,
label: item2 - 1,
value: item2 - 1,
},
null,
8,
['label', 'value']
)
}),
64
)),
]),
_: 1,
},
8,
['modelValue']
),
]),
_: 1,
}
))
: createCommentVNode('', true),
formData.value.showList &&
formData.value.showList.includes(4)
? (openBlock(),
createBlock(
_component_el_form_item,
{
key: 2,
label: '\u957F\u5EA6\uFF1A',
},
{
default: withCtx(() => [
createVNode$1(
_component_el_input_number,
{
modelValue: formData.value.length,
'onUpdate:modelValue':
_cache[22] ||
(_cache[22] = ($event) =>
(formData.value.length = $event)),
min: 1,
max: 255,
step: 1,
controls: false,
onWheel:
_cache[23] ||
(_cache[23] = withModifiers(() => {}, [
'prevent',
])),
class:
'cms-el-input-min cms-el-input-number',
onInput:
_cache[24] ||
(_cache[24] = ($event) =>
limitPIntNum2($event, 'length')),
},
null,
8,
['modelValue']
),
]),
_: 1,
}
))
: createCommentVNode('', true),
],
64
))
: createCommentVNode('', true),
]),
_: 1,
},
8,
['model']
),
createElementVNode('div', { class: 'el-dialog__footer' }, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: closeDialog,
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: submitForm,
},
'\u786E\u8BA4'
),
]),
])
)
}
},
})
var AddressConfig = /* @__PURE__ */ _export_sfc(_sfc_main$y, [
['__scopeId', 'data-v-570c5a88'],
])
var addressConfig = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: AddressConfig,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _sfc_main$x = /* @__PURE__ */ defineComponent({
props: ['data'],
emits: ['closeDialog', 'submitForm'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const tableRef = ref()
let tableData2 = ref([
{
id: initUtils.createRandomId(),
name: 'S2_V_BOOL1',
dataType: '\u4E8C\u8FDB\u5236\u53D8\u91CF',
address: '',
length: 1,
zoom: 1,
digits: 1,
rwrulers: '',
archives: '',
desc: '',
type: '\u65E0',
time: '',
intervalTime: 0,
unit: 'ms',
variable: '',
associatedSelf: false,
},
{
id: initUtils.createRandomId(),
name: 'S2_V_BOOL2',
dataType: '\u4E8C\u8FDB\u5236\u53D8\u91CF',
address: '',
length: 1,
zoom: 1,
digits: 1,
rwrulers: '',
archives: '',
desc: '',
type: '\u65E0',
time: '',
intervalTime: 0,
unit: 'ms',
variable: '',
associatedSelf: false,
},
{
id: initUtils.createRandomId(),
name: 'S2_V_BOOL3',
dataType: '\u4E8C\u8FDB\u5236\u53D8\u91CF',
address: '',
length: 1,
zoom: 1,
digits: 1,
rwrulers: '',
archives: '',
desc: '',
type: '\u65E0',
time: '',
intervalTime: 0,
unit: 'ms',
variable: '',
associatedSelf: false,
},
])
onMounted(() => {
let nameArr =
props2.data === '' ? [] : props2.data.replaceAll(' ', '').split(',')
tableData2.value.forEach((row) => {
if (nameArr.indexOf(row.name) >= 0) {
tableRef.value?.toggleRowSelection(row, void 0)
}
})
})
let choiceRows = ref([])
const tableRowClassName = ({ row }) => {
return choiceRows.value.indexOf(row) >= 0 ? 'is-current' : ''
}
const handleSelectionChange = (val2) => {
choiceRows.value = val2
}
const closeDialog = () => {
emit2('closeDialog')
}
const submitForm = () => {
emit2('submitForm', choiceRows.value)
}
return (_ctx, _cache) => {
const _component_el_table_column = resolveComponent('el-table-column')
const _component_el_table = resolveComponent('el-table')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
_component_el_table,
{
ref_key: 'tableRef',
ref: tableRef,
'class-name': 'cms-el-table',
data: unref(tableData2),
'row-key': 'id',
height: '500px',
style: { width: '100%' },
border: true,
'row-class-name': tableRowClassName,
onSelectionChange: handleSelectionChange,
},
{
default: withCtx(() => [
createVNode$1(_component_el_table_column, {
type: 'selection',
width: '55',
}),
createVNode$1(_component_el_table_column, {
prop: 'name',
label: '\u53D8\u91CF\u540D',
resizable: '',
'min-width': '250',
}),
createVNode$1(_component_el_table_column, {
prop: 'type',
label: '\u6570\u636E\u7C7B\u578B',
resizable: '',
width: '250',
}),
createVNode$1(_component_el_table_column, {
prop: 'length',
label: '\u5B57\u7B26\u957F\u5EA6',
resizable: '',
width: '150',
}),
createVNode$1(_component_el_table_column, {
prop: 'zoom',
label: '\u7F29\u653E\u6BD4',
resizable: '',
width: '150',
}),
createVNode$1(_component_el_table_column, {
prop: 'digits',
label: '\u5C0F\u6570\u4F4D\u6570',
resizable: '',
width: '150',
}),
createVNode$1(_component_el_table_column, {
prop: 'desc',
label: '\u53D8\u91CF\u63CF\u8FF0',
resizable: '',
width: '200',
}),
]),
_: 1,
},
8,
['data']
),
createElementVNode('div', { class: 'el-dialog__footer' }, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: closeDialog,
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: submitForm,
},
'\u786E\u8BA4'
),
]),
])
)
}
},
})
var associatedVariable = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$x,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var historyArchive_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$l = (n2) => (
pushScopeId('data-v-ec3cf158'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$v = { class: 'form-table' }
const _hoisted_2$t = /* @__PURE__ */ createTextVNode(
'\u5B9A\u5468\u671F\u6267\u884C'
)
const _hoisted_3$r = /* @__PURE__ */ createTextVNode(
'\u6570\u636E\u53D8\u5316\u65F6'
)
const _hoisted_4$m = /* @__PURE__ */ createTextVNode('\u65E0')
const _hoisted_5$j = { class: 'flex-row' }
const _hoisted_6$g = { class: 'flex-row' }
const _hoisted_7$f = { class: 'flex-row-full' }
const _hoisted_8$f = { class: 'relate-tags' }
const _hoisted_9$f = {
key: 1,
class: 'relate-tags',
}
const _hoisted_10$e = ['onClick', 'disabled']
const _hoisted_11$c = /* @__PURE__ */ _withScopeId$l(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-gengduo1' },
null,
-1
)
)
const _hoisted_12$c = [_hoisted_11$c]
const _sfc_main$w = /* @__PURE__ */ defineComponent({
props: ['data'],
emits: ['closeDialog', 'submitForm'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const initialValues = reactive({
triggerType: 0,
startTime: '',
interval: 0,
intervalUnit: 0,
relateTags: [],
isRelateSelf: false,
})
let activeType = ref(0)
onMounted(() => {
initialValues.triggerType = props2.data.historyArchive.triggerType
initialValues.startTime = props2.data.historyArchive.startTime
initialValues.interval = props2.data.historyArchive.interval
initialValues.intervalUnit = props2.data.historyArchive.intervalUnit
initialValues.relateTags = props2.data.historyArchive.relateTags
initialValues.isRelateSelf = props2.data.historyArchive.isRelateSelf
activeType.value = props2.data.historyArchive.triggerType
})
const changeType = (value2) => {
activeType.value = Number(value2)
if (value2 === 1 && initialValues.interval === 0) {
initialValues.startTime = initUtils.formateDate(new Date())
}
}
const closeDialog = () => {
emit2('closeDialog')
}
const formateRelateTags = (relateTags) => {
let name2 = ''
relateTags.forEach((item2, index2) => {
name2 += item2.name
index2 + 1 !== relateTags.length ? (name2 += ', ') : ''
})
return name2
}
const submitForm = () => {
if (activeType.value === 1 && initialValues.startTime === '') {
ElMessage({
message: '\u8D77\u59CB\u65E5\u671F\u4E0D\u80FD\u4E3A\u7A7A',
type: 'error',
customClass: 'cms-el-message',
})
return
} else if (
activeType.value === 2 &&
!initialValues.isRelateSelf &&
initialValues.relateTags.length === 0
) {
ElMessage({
message: '\u5173\u8054\u53D8\u91CF\u4E0D\u80FD\u4E3A\u7A7A',
type: 'error',
customClass: 'cms-el-message',
})
return
}
emit2('submitForm', initialValues)
}
let defaultCheckRow = ref([])
let dialogVisible = ref(false)
const choiceVariable = () => {
dialogVisible.value = true
initialValues.relateTags.forEach((item2) => {
defaultCheckRow.value.push(item2.id)
})
}
const submitVariable = (list2) => {
let newList = []
list2.forEach((item2) => {
newList.push({
id: item2.id,
name: item2.name,
})
})
initialValues.relateTags = newList
dialogVisible.value = false
}
return (_ctx, _cache) => {
const _component_el_radio = resolveComponent('el-radio')
const _component_el_radio_group = resolveComponent('el-radio-group')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_date_picker = resolveComponent('el-date-picker')
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_tooltip = resolveComponent('el-tooltip')
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_form = resolveComponent('el-form')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
_component_el_form,
{
onSubmit:
_cache[5] || (_cache[5] = withModifiers(() => {}, ['prevent'])),
model: unref(initialValues),
class: 'history-archive cms-el-form',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$v, [
createVNode$1(
_component_el_form_item,
{ label: '\u89E6\u53D1\u7C7B\u578B\uFF1A' },
{
default: withCtx(() => [
createVNode$1(
_component_el_radio_group,
{
modelValue: unref(initialValues).triggerType,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(initialValues).triggerType = $event)),
onChange: changeType,
},
{
default: withCtx(() => [
createVNode$1(
_component_el_radio,
{
label: 1,
class: 'cms-el-radio',
},
{
default: withCtx(() => [_hoisted_2$t]),
_: 1,
}
),
createVNode$1(
_component_el_radio,
{
label: 2,
class: 'cms-el-radio',
},
{
default: withCtx(() => [_hoisted_3$r]),
_: 1,
}
),
createVNode$1(
_component_el_radio,
{
label: 0,
class: 'cms-el-radio',
},
{
default: withCtx(() => [_hoisted_4$m]),
_: 1,
}
),
]),
_: 1,
},
8,
['modelValue']
),
]),
_: 1,
}
),
withDirectives(
createVNode$1(
_component_el_form_item,
{ label: '\u8D77\u59CB\u65F6\u95F4\uFF1A' },
{
default: withCtx(() => [
createVNode$1(
unref(ElConfigProvider),
{ locale: unref(zhCn) },
{
default: withCtx(() => [
createVNode$1(
_component_el_date_picker,
{
modelValue: unref(initialValues).startTime,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(initialValues).startTime =
$event)),
type: 'datetime',
clearable: true,
format: 'YYYY/MM/DD HH:mm:ss',
class: 'cms-el-date-picker',
'popper-class': 'cms-el-picker__popper',
},
null,
8,
['modelValue']
),
]),
_: 1,
},
8,
['locale']
),
]),
_: 1,
},
512
),
[[vShow, unref(activeType) === 1]]
),
withDirectives(
createVNode$1(
_component_el_form_item,
{ label: '\u65F6\u95F4\u95F4\u9694\uFF1A' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_5$j, [
createVNode$1(
_component_el_input_number,
{
modelValue: unref(initialValues).interval,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(initialValues).interval = $event)),
min: 0,
step: 1,
'controls-position': 'right',
class: 'cms-el-input-min cms-el-input-number',
},
null,
8,
['modelValue']
),
createVNode$1(
_component_el_select,
{
modelValue: unref(initialValues).intervalUnit,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(initialValues).intervalUnit =
$event)),
class: 'cms-el-select cms-el-input-min',
'popper-class': 'cms-el-select__popper',
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
label: 'ms',
value: 0,
}),
createVNode$1(_component_el_option, {
label: 's',
value: 1,
}),
createVNode$1(_component_el_option, {
label: 'm',
value: 2,
}),
createVNode$1(_component_el_option, {
label: 'h',
value: 3,
}),
]),
_: 1,
},
8,
['modelValue']
),
]),
]),
_: 1,
},
512
),
[[vShow, unref(activeType) === 1]]
),
withDirectives(
createVNode$1(
_component_el_form_item,
{ label: '\u5173\u8054\u53D8\u91CF\uFF1A' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_6$g, [
createElementVNode('div', _hoisted_7$f, [
formateRelateTags(unref(initialValues).relateTags)
.length >= 15 &&
!unref(initialValues).isRelateSelf
? (openBlock(),
createBlock(
_component_el_tooltip,
{
key: 0,
'popper-class': 'cms-el-tooltip',
content: formateRelateTags(
unref(initialValues).relateTags
),
},
{
default: withCtx(() => [
createElementVNode(
'div',
_hoisted_8$f,
toDisplayString$1(
formateRelateTags(
unref(initialValues).relateTags
)
),
1
),
]),
_: 1,
},
8,
['content']
))
: (openBlock(),
createElementBlock(
'div',
_hoisted_9$f,
toDisplayString$1(
formateRelateTags(
unref(initialValues).relateTags
)
),
1
)),
createElementVNode(
'button',
{
class: 'fix-input-btn',
type: 'button',
onClick: withModifiers(choiceVariable, [
'stop',
]),
disabled: unref(initialValues).isRelateSelf,
},
_hoisted_12$c,
8,
_hoisted_10$e
),
]),
createVNode$1(
_component_el_checkbox,
{
modelValue: unref(initialValues).isRelateSelf,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(initialValues).isRelateSelf =
$event)),
label: '\u5173\u8054\u81EA\u8EAB',
class: 'cms-el-checkbox',
},
null,
8,
['modelValue']
),
]),
]),
_: 1,
},
512
),
[[vShow, unref(activeType) === 2]]
),
]),
]),
_: 1,
},
8,
['model']
),
createElementVNode('div', { class: 'el-dialog__footer' }, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: closeDialog,
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: submitForm,
},
'\u786E\u8BA4'
),
]),
createVNode$1(
unref(_sfc_main$6Q),
{
visible: unref(dialogVisible),
noLanguage: true,
filterClientVariables: true,
isAppendToBody: true,
onConfirm: submitVariable,
onCancel:
_cache[6] ||
(_cache[6] = ($event) =>
isRef(dialogVisible)
? (dialogVisible.value = false)
: (dialogVisible = false)),
isMultiple: true,
defaultCheckKey: unref(defaultCheckRow),
},
null,
8,
['visible', 'defaultCheckKey']
),
])
)
}
},
})
var HistoryArchive = /* @__PURE__ */ _export_sfc(_sfc_main$w, [
['__scopeId', 'data-v-ec3cf158'],
])
var historyArchive = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: HistoryArchive,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var compomentTableInner_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$k = (n2) => (
pushScopeId('data-v-a28eed80'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$u = { class: 'page' }
const _hoisted_2$s = { class: 'screen flex-row' }
const _hoisted_3$q = { class: 'flex-row-full' }
const _hoisted_4$l = /* @__PURE__ */ _withScopeId$k(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u7B5B\u9009\uFF1A', -1)
)
const _hoisted_5$i = ['onClick']
const _hoisted_6$f = { class: '' }
const _hoisted_7$e = { class: 'flex-row-full' }
const _hoisted_8$e = { class: 'vxe-cell--label' }
const _hoisted_9$e = {
class: 'flex-row',
style: { height: '100%', 'line-height': '44px', padding: '0' },
}
const _hoisted_10$d = {
key: 0,
class: 'flex-row-full inline-cell-label vxe-cell--label',
}
const _hoisted_11$b = {
key: 1,
class: 'flex-row-full vxe-cell--label isnot-edit',
}
const _hoisted_12$b = {
class: 'flex-row-full inline-cell-label vxe-cell--label inline-select-cell',
}
const _hoisted_13$a = {
class: 'flex-row',
style: { padding: '0' },
}
const _hoisted_14$9 = { class: 'flex-row-full' }
const _hoisted_15$9 = {
class: 'inline-cell-label inline-select-cell',
style: { flex: '1' },
}
const _hoisted_16$9 = { class: 'flex-row' }
const _hoisted_17$8 = ['title']
const _hoisted_18$8 = ['onClick']
const _hoisted_19$7 = /* @__PURE__ */ _withScopeId$k(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'dialog-content' },
[
/* @__PURE__ */ createElementVNode(
'div',
null,
'\u786E\u8BA4\u540E\uFF0C\u4ECE\u5217\u8868\u4E2D\u5220\u9664\u9009\u4E2D\u7684\u53D8\u91CF\u3002'
),
],
-1
)
)
const _hoisted_20$7 = { class: 'el-dialog__footer' }
const _hoisted_21$5 = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_22$5 = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$v = /* @__PURE__ */ defineComponent({
setup(__props2, { expose }) {
const xTable = ref({})
const defaultSelecteRows = ref([])
let tableData2 = ref([])
let cloneTableData = ref([])
const acitveNode = ref('')
let stosageData = ref([])
const tableTooltipConfig = {
enterable: true,
contentMethod: ({ column, row }) => {
const { property: property2 } = column
if (property2 === 'type') {
return dataTypeKey[row[property2]]
} else if (property2 === 'historyArchive') {
return formateArchives(row[property2], row)
} else if (property2 === 'setValue') {
return row.setValue === null || row.setValue === ''
? initValueKeys[row.initType]
: row.setValue + '-' + initValueKeys[row.initType]
}
return row[property2]
},
}
const getTableData2 = (groupId) => {
acitveNode.value = groupId
tableData2.value = []
getTags(groupId)
.then((res) => {
tableData2.value.push(...res)
})
.then(() => {
stosageData.value =
JSON.parse(window.localStorage.getItem(groupId) + '') === null
? []
: JSON.parse(window.localStorage.getItem(groupId) + '')
stosageData.value &&
stosageData.value.length &&
stosageData.value.forEach((item2) => {
let idx = 0
let isHas =
tableData2.value.filter((el2, index2) => {
if (el2.id === item2.id) {
idx = index2
return el2.id === item2.id
}
}).length > 0
if (isHas) {
tableData2.value.splice(idx, 1, item2)
} else {
tableData2.value.push(item2)
}
})
cloneTableData.value = [...tableData2.value]
})
.then(() => {
xTable.value.loadData(tableData2.value)
})
}
let choiceRows = ref([])
const changeCheck = () => {
choiceRows.value = xTable.value.getCheckboxRecords()
}
const dataTypeKey = {
0: '\u4E8C\u8FDB\u5236\u53D8\u91CF',
1: '\u6709\u7B26\u53F78\u4F4D\u6574\u578B',
2: '\u65E0\u7B26\u53F78\u4F4D\u6574\u578B',
3: '\u6709\u7B26\u53F716\u4F4D\u6574\u578B',
4: '\u65E0\u7B26\u53F716\u4F4D\u6574\u578B',
5: '\u6709\u7B26\u53F732\u4F4D\u6574\u578B',
6: '\u65E0\u7B26\u53F732\u4F4D\u6574\u578B',
7: '\u6709\u7B26\u53F764\u4F4D\u6574\u578B',
8: '\u65E0\u7B26\u53F764\u4F4D\u6574\u578B',
9: 'F32\u4F4D\u6D6E\u70B9\u6570IEEE754',
10: 'F64\u4F4D\u6D6E\u70B9\u6570IEEE754',
11: '\u65E5\u671F',
12: '\u65F6\u95F4',
13: '\u65E5\u671F\u65F6\u95F4',
14: '\u5B57\u7B26\u4E32',
15: '\u5BBD\u5B57\u7B26\u4E32',
16: '\u6587\u672C\u53D8\u91CF8\u4F4D\u5B57\u7B26\u96C6',
17: '\u6587\u672C\u53D8\u91CF16\u4F4D\u5B57\u7B26\u96C6',
18: '\u5B9A\u65F6\u5668',
}
let dateType = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
const variableType = [
'\u4E8C\u8FDB\u5236',
'\u6574\u578B',
'\u6D6E\u70B9\u578B',
'\u5B57\u7B26\u4E32',
'\u65F6\u95F4',
]
const classifyType2 = {
二进制: [0],
整型: [1, 2, 3, 4, 5, 6, 7, 8],
浮点型: [9, 10],
字符串: [14, 15, 16, 17],
时间: [11, 12, 13, 18],
}
let showType = ref([])
const handleVariableType = (type4) => {
showType.value = []
if (type4 !== '') {
let index2 = activeType.value.indexOf(type4)
index2 >= 0
? activeType.value.splice(index2, 1)
: activeType.value.push(type4)
}
initUtils.debouncedFn(() => {
showType.value = []
if ([0, 5].includes(activeType.value.length)) {
tableData2.value = [...cloneTableData.value]
} else {
activeType.value.forEach((item2) => {
showType.value.push(...classifyType2[item2])
})
tableData2.value = [
...cloneTableData.value.filter(
(item2) =>
showType.value.includes(item2.type) &&
item2.name.indexOf(screenValue.value) >= 0
),
]
xTable.value.loadData(tableData2.value)
}
changeCheck()
})
}
const handleScreen = (val2) => {
initUtils.debouncedFn(() => {
tableData2.value = [
...cloneTableData.value.filter(
(item2) => item2.name.indexOf(val2) >= 0
),
]
xTable.value.loadData(tableData2.value)
})
}
const activeType = ref([])
const screenValue = ref('')
const reset2 = () => {
activeType.value = []
screenValue.value = ''
tableData2.value = [...cloneTableData.value]
}
const addVariable = () => {
let newNode = {
id: 'new_' + initUtils.createRandomId(),
name: '',
type: 0,
description: '',
stringLength: 0,
setValue: null,
initType: 0,
historyArchive: {
triggerType: 0,
startTime: null,
interval: 0,
intervalUnit: 0,
relateTags: [],
isRelateSelf: false,
},
}
;[0, 5].includes(activeType.value.length) ||
(showType.value.includes(0) &&
newNode.name.indexOf(screenValue.value) >= 0)
? tableData2.value.push(newNode)
: ''
cloneTableData.value.push(newNode)
stosageData.value.push(newNode)
updateStroge()
}
const updateStroge = () => {
if (acitveNode.value !== '') {
window.localStorage.setItem(
acitveNode.value,
JSON.stringify(stosageData.value)
)
}
xTable.value.loadData(tableData2.value)
}
const delNodeDailog = reactive({
isShow: false,
})
const hideDialog = () => {
delNodeDailog.isShow = false
}
const comfig = () => {
let ids = []
choiceRows.value.forEach((item2) => {
item2.id.indexOf('new_') < 0 ? ids.push(item2.id) : null
tableData2.value.splice(tableData2.value.indexOf(item2), 1)
cloneTableData.value.splice(cloneTableData.value.indexOf(item2), 1)
stosageData.value.splice(stosageData.value.indexOf(item2), 1)
})
ids.length > 0 ? delTag(acitveNode.value, ids) : null
nextTick(() => {
updateStroge()
changeCheck()
hideDialog()
ElMessage({
message: '\u5220\u9664\u6210\u529F',
type: 'success',
customClass: 'cms-el-message el-message--success',
})
})
}
const delVariable = () => {
initUtils.debouncedFn(() => {
if (choiceRows.value.length === 0) {
ElMessage({
message: '\u8BF7\u9009\u62E9\u8981\u5220\u9664\u7684\u53D8\u91CF',
type: 'error',
customClass: 'cms-el-message el-message--error',
})
} else {
delNodeDailog.isShow = true
}
})
}
const saveTableData2 = () => {
initUtils.debouncedFn(() => {
let addList = []
let modifyList = []
stosageData.value.forEach((item2) => {
if (item2.id.indexOf('new_') >= 0) {
let newItem = item2
Reflect.deleteProperty(newItem, 'id')
addList.push(newItem)
} else {
modifyList.push(item2)
}
})
let promuse2 = modifyTag(acitveNode.value, modifyList)
let promise1 = createTag(acitveNode.value, addList).then((res) => {
addList.forEach((item2, idx) => {
item2.id = res[idx]
})
})
Promise.all([promise1, promuse2]).then(() => {
stosageData.value = []
updateStroge()
ElMessage({
message: '\u4FDD\u5B58\u6210\u529F',
type: 'success',
customClass: 'cms-el-message el-message--success',
})
})
})
}
const resetTableData = () => {
stosageData.value = []
updateStroge()
getTableData2(acitveNode.value)
}
const dialogVisible = ref(false)
const dialogTitle = ref('')
const actvieComponent = ref('')
const closeDialog = () => {
dialogVisible.value = false
actvieComponent.value = ''
}
const submitForm = (historyMsg) => {
switch (actvieComponent.value) {
case 'history-archive':
if (modifyRow.value) {
let index2 = tableData2.value.indexOf(modifyRow.value)
historyMsg.startTime =
historyMsg.triggerType === 1
? new Date(historyMsg.startTime).toISOString()
: null
tableData2.value[index2].historyArchive = historyMsg
cloneTableData.value[
cloneTableData.value.indexOf(modifyRow.value)
].historyArchive = historyMsg
let sIdx = stosageData.value.indexOf(tableData2.value[index2])
sIdx >= 0
? stosageData.value.splice(sIdx, 1, tableData2.value[index2])
: stosageData.value.push(tableData2.value[index2])
}
break
}
updateStroge()
closeDialog()
}
let modifyRow = ref()
const changeTableDataMsg = (row) => {
modifyRow.value = row
let sIdx = stosageData.value.indexOf(row)
sIdx >= 0
? stosageData.value.splice(sIdx, 1, row)
: stosageData.value.push(row)
if (row.initType !== 1) {
row.setValue = null
} else {
row.setValue === null || row.setValue === ''
? (row.setValue = '0')
: null
}
nextTick(() => {
updateStroge()
})
}
const limitPIntNum2 = (row, type4) => {
let val2 = (row[type4] + '').replace(/^(0+)|[^\d]+/g, '')
row[type4] = val2 === '' ? null : parseInt(val2) + ''
}
const changeArchives = (row) => {
modifyRow.value = row
dialogVisible.value = true
dialogTitle.value = '\u5386\u53F2\u5F52\u6863\u914D\u7F6E'
actvieComponent.value = 'history-archive'
}
let initValueKeys = [
'\u65E0',
'\u8BBE\u5B9A\u503C',
'\u4FDD\u5B58\u503C',
'\u9000\u51FA\u503C',
]
let intervalUnitKey = ['ms', 's', 'm', 'h']
const formateArchives = (data2, row) => {
if (data2.triggerType === 0) {
return '--'
} else if (data2.triggerType === 1) {
return (
initUtils.formateDate(data2.startTime) +
', ' +
data2.interval +
intervalUnitKey[data2.intervalUnit]
)
} else if (data2.triggerType === 2) {
let name2 = ''
if (data2.isRelateSelf) {
name2 = row.name
} else {
data2.relateTags.forEach((item2, index2) => {
name2 += item2.name
index2 + 1 !== data2.relateTags.length ? (name2 += ', ') : ''
})
}
return name2
} else {
return '--'
}
}
const inputFocus = (e2) => {
e2.target?.select()
}
expose({
getTableData: getTableData2,
reset: reset2,
})
return (_ctx, _cache) => {
const _component_el_icon = resolveComponent('el-icon')
const _component_el_input = resolveComponent('el-input')
const _component_vxe_column = resolveComponent('vxe-column')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_vxe_table = resolveComponent('vxe-table')
const _component_el_dialog = resolveComponent('el-dialog')
const _component_el_button = resolveComponent('el-button')
return (
openBlock(),
createElementBlock('div', _hoisted_1$u, [
createElementVNode('div', _hoisted_2$s, [
createElementVNode('div', _hoisted_3$q, [
_hoisted_4$l,
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(variableType, (item2) => {
return createElementVNode(
'button',
{
key: item2,
class: normalizeClass([
'cms-btn btn-screen-btn',
{ active: activeType.value.indexOf(item2) >= 0 },
]),
onClick: ($event) => handleVariableType(item2),
},
toDisplayString$1(item2),
11,
_hoisted_5$i
)
}),
64
)),
createVNode$1(
_component_el_input,
{
class: 'screen-input cms-el-input-x',
placeholder:
'\u8BF7\u8F93\u5165\u53D8\u91CF\u540D\u5173\u952E\u5B57',
modelValue: screenValue.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (screenValue.value = $event)),
onInput:
_cache[1] || (_cache[1] = ($event) => handleScreen($event)),
},
{
suffix: withCtx(() => [
createVNode$1(
_component_el_icon,
{ class: 'el-input__icon' },
{
default: withCtx(() => [createVNode$1(unref(search))]),
_: 1,
}
),
]),
_: 1,
},
8,
['modelValue']
),
createElementVNode(
'button',
{
class: 'cms-btn btn-screen-btn btn-reset',
onClick: reset2,
},
'\u91CD\u7F6E'
),
]),
createElementVNode('div', _hoisted_6$f, [
createElementVNode('i', {
class: 'iconfont icon-xinjian option-add',
onClick: addVariable,
}),
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont icon-qingchu option-danger',
{ 'multi-icon': unref(choiceRows).length > 1 },
]),
onClick: delVariable,
},
null,
2
),
createElementVNode(
'button',
{
class: 'cms-btn btn-screen-btn btn-save',
onClick: saveTableData2,
},
'\u4FDD\u5B58'
),
createElementVNode(
'button',
{
class: 'cms-btn btn-screen-btn btn-reset2',
onClick: resetTableData,
},
'\u91CD\u7F6E'
),
]),
]),
createElementVNode('div', _hoisted_7$e, [
createVNode$1(
_component_vxe_table,
{
class: 'cms-vxe-table',
ref_key: 'xTable',
ref: xTable,
height: '100%',
'row-config': { keyField: 'id' },
data: unref(tableData2),
'show-overflow': 'tooltip',
'tooltip-config': unref(tableTooltipConfig),
'column-config': { resizable: true },
'edit-config': { trigger: 'click', mode: 'cell' },
'checkbox-config': {
checkRowKeys: defaultSelecteRows.value,
highlight: true,
},
onCheckboxChange: changeCheck,
onCheckboxAll: changeCheck,
},
{
default: withCtx(() => [
createVNode$1(_component_vxe_column, {
type: 'checkbox',
width: '60',
}),
createVNode$1(
_component_vxe_column,
{
field: 'name',
title: '\u53D8\u91CF\u540D',
'min-width': '250',
'edit-render': { autofocus: '.el-input__inner' },
},
{
edit: withCtx(({ row }) => [
createVNode$1(
_component_el_input,
{
modelValue: row.name,
'onUpdate:modelValue': ($event) =>
(row.name = $event),
type: 'text',
spellcheck: false,
onFocus: inputFocus,
onChange: ($event) => changeTableDataMsg(row),
},
null,
8,
['modelValue', 'onUpdate:modelValue', 'onChange']
),
]),
_: 1,
},
8,
['edit-render']
),
createVNode$1(
_component_vxe_column,
{
field: 'type',
title: '\u6570\u636E\u7C7B\u578B',
'min-width': '250',
'edit-render': {},
},
{
default: withCtx(({ row }) => [
createElementVNode(
'span',
_hoisted_8$e,
toDisplayString$1(dataTypeKey[row.type]),
1
),
]),
edit: withCtx(({ row }) => [
createVNode$1(
_component_el_select,
{
modelValue: row.type,
'onUpdate:modelValue': ($event) =>
(row.type = $event),
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
onChange: ($event) => changeTableDataMsg(row),
teleported: false,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(dateType), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
label: dataTypeKey[item2],
key: item2,
value: item2,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue', 'onChange']
),
]),
_: 1,
}
),
createVNode$1(
_component_vxe_column,
{
field: 'setValue',
title: '\u521D\u59CB\u503C',
width: '200',
'min-width': '200',
'class-name': 'spec_select_cell',
'edit-render': { autofocus: '.el-input__inner' },
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_9$e, [
row.initType == 1
? (openBlock(),
createElementBlock(
'div',
_hoisted_10$d,
toDisplayString$1(row.setValue),
1
))
: (openBlock(),
createElementBlock('div', _hoisted_11$b)),
createElementVNode(
'div',
_hoisted_12$b,
toDisplayString$1(
unref(initValueKeys)[row.initType]
),
1
),
]),
]),
edit: withCtx(({ row }) => [
createElementVNode('div', _hoisted_13$a, [
createElementVNode('div', _hoisted_14$9, [
withDirectives(
createVNode$1(
_component_el_input,
{
modelValue: row.setValue,
'onUpdate:modelValue': ($event) =>
(row.setValue = $event),
controls: false,
onWheel:
_cache[2] ||
(_cache[2] = withModifiers(() => {}, [
'prevent',
])),
onFocus: inputFocus,
onChange: ($event) => changeTableDataMsg(row),
onInput: ($event) =>
limitPIntNum2(row, 'setValue'),
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
'onChange',
'onInput',
]
),
[[vShow, row.initType == 1]]
),
]),
createElementVNode('div', _hoisted_15$9, [
createVNode$1(
_component_el_select,
{
modelValue: row.initType,
'onUpdate:modelValue': ($event) =>
(row.initType = $event),
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
onChange: ($event) => changeTableDataMsg(row),
teleported: false,
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
label: '\u8BBE\u5B9A\u503C',
key: '1',
value: 1,
}),
createVNode$1(_component_el_option, {
label: '\u9000\u51FA\u503C',
key: '3',
value: 3,
}),
createVNode$1(_component_el_option, {
label: '\u65E0',
key: '0',
value: 0,
}),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue', 'onChange']
),
]),
]),
]),
_: 1,
},
8,
['edit-render']
),
createVNode$1(
_component_vxe_column,
{
field: 'historyArchive',
title: '\u5386\u53F2\u5F52\u6863',
'min-width': '300',
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_16$9, [
createElementVNode(
'div',
{
class: 'flex-row-full',
style: { 'padding-left': '10px' },
title: formateArchives(row.historyArchive, row),
},
toDisplayString$1(
formateArchives(row.historyArchive, row)
),
9,
_hoisted_17$8
),
createElementVNode(
'i',
{
class: 'iconfont icon-gengduo1 cms-more-btn',
onClick: ($event) => changeArchives(row),
},
null,
8,
_hoisted_18$8
),
]),
]),
_: 1,
}
),
createVNode$1(
_component_vxe_column,
{
field: 'description',
title: '\u53D8\u91CF\u63CF\u8FF0',
'min-width': '250',
'edit-render': { autofocus: '.el-input__inner' },
},
{
edit: withCtx(({ row }) => [
createVNode$1(
_component_el_input,
{
modelValue: row.description,
'onUpdate:modelValue': ($event) =>
(row.description = $event),
type: 'text',
spellcheck: false,
onFocus: inputFocus,
onChange: ($event) => changeTableDataMsg(row),
},
null,
8,
['modelValue', 'onUpdate:modelValue', 'onChange']
),
]),
_: 1,
},
8,
['edit-render']
),
]),
_: 1,
},
8,
['data', 'tooltip-config', 'checkbox-config']
),
]),
(openBlock(),
createBlock(
_component_el_dialog,
{
modelValue: dialogVisible.value,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) => (dialogVisible.value = $event)),
title: dialogTitle.value,
'custom-class': 'cms-el-dialog',
width: '450px',
'close-on-click-modal': false,
key: new Date().toISOString(),
},
{
default: withCtx(() => [
actvieComponent.value === 'history-archive'
? (openBlock(),
createBlock(
HistoryArchive,
{
key: 0,
data: unref(modifyRow),
onCloseDialog: closeDialog,
onSubmitForm: submitForm,
},
null,
8,
['data']
))
: createCommentVNode('', true),
]),
_: 1,
},
8,
['modelValue', 'title']
)),
(openBlock(),
createBlock(
_component_el_dialog,
{
modelValue: unref(delNodeDailog).isShow,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(delNodeDailog).isShow = $event)),
title: '\u786E\u8BA4\u5220\u9664',
width: '450px',
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
key: new Date().toISOString(),
},
{
default: withCtx(() => [
_hoisted_19$7,
createElementVNode('div', _hoisted_20$7, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: hideDialog,
},
{
default: withCtx(() => [_hoisted_21$5]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: comfig,
},
{
default: withCtx(() => [_hoisted_22$5]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
)),
])
)
}
},
})
var ComponentTableInner = /* @__PURE__ */ _export_sfc(_sfc_main$v, [
['__scopeId', 'data-v-a28eed80'],
])
var compomentTableInner = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ComponentTableInner,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var compomentTable_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$j = (n2) => (
pushScopeId('data-v-b1b4a672'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$t = { class: 'page' }
const _hoisted_2$r = { class: 'screen flex-row' }
const _hoisted_3$p = { class: 'flex-row-full' }
const _hoisted_4$k = /* @__PURE__ */ _withScopeId$j(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u7B5B\u9009\uFF1A', -1)
)
const _hoisted_5$h = ['onClick']
const _hoisted_6$e = { class: 'flex-row-full' }
const _hoisted_7$d = { class: 'vxe-cell--label' }
const _hoisted_8$d = {
class: 'flex-row',
style: { 'padding-left': '0' },
}
const _hoisted_9$d = { class: 'flex-row-full vxe-cell--label' }
const _hoisted_10$c = ['onClick']
const _hoisted_11$a = {
class: 'flex-row',
style: { 'padding-left': '0' },
}
const _hoisted_12$a = ['onClick']
const _hoisted_13$9 = { class: 'vxe-cell--label' }
const _hoisted_14$8 = { class: 'flex-row' }
const _hoisted_15$8 = ['title']
const _hoisted_16$8 = ['onClick']
const _hoisted_17$7 = /* @__PURE__ */ _withScopeId$j(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'dialog-content' },
[
/* @__PURE__ */ createElementVNode(
'div',
null,
'\u786E\u8BA4\u540E\uFF0C\u4ECE\u5217\u8868\u4E2D\u5220\u9664\u9009\u4E2D\u7684\u53D8\u91CF\u3002'
),
],
-1
)
)
const _hoisted_18$7 = { class: 'el-dialog__footer' }
const _hoisted_19$6 = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_20$6 = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$u = /* @__PURE__ */ defineComponent({
props: ['deviceData'],
setup(__props2, { expose }) {
const props2 = __props2
const xTable = ref({})
const defaultSelecteRows = ref([])
const activeProto = ref('0')
const model = ref('')
const suppiler = ref('')
const protocolNames = ['', 'Modbus_TCP', 'S7_TCP']
let tableData2 = ref([])
let cloneTableData = ref([])
const activeDevice = ref('')
const acitveNode = ref('')
let stosageData = ref([])
const tableTooltipConfig = {
enterable: true,
contentMethod: ({ column, row }) => {
const { property: property2 } = column
if (property2 === 'type') {
return dataTypeKey[row[property2]]
} else if (property2 === 'historyArchive') {
return formateArchives(row[property2], row)
} else if (property2 === 'rule') {
return rwRuleKeys[row[property2] - 1]
}
return row[property2]
},
}
const getTableData2 = (deviceId, groupId) => {
activeProto.value = props2.deviceData.protocolType
model.value = props2.deviceData.model
suppiler.value = props2.deviceData.suppiler
activeDevice.value = deviceId
acitveNode.value = groupId
tableData2.value = []
getTags$1(deviceId, groupId)
.then((res) => {
tableData2.value.push(...res)
})
.then(() => {
stosageData.value =
JSON.parse(window.localStorage.getItem(groupId) + '') === null
? []
: JSON.parse(window.localStorage.getItem(groupId) + '')
stosageData.value &&
stosageData.value.length &&
stosageData.value.forEach((item2) => {
let idx = 0
let isHas =
tableData2.value.filter((el2, index2) => {
if (el2.id === item2.id) {
idx = index2
return el2.id === item2.id
}
}).length > 0
if (isHas) {
tableData2.value.splice(idx, 1, item2)
} else {
tableData2.value.push(item2)
}
})
cloneTableData.value = [...tableData2.value]
})
.then(() => {
xTable.value.loadData(tableData2.value)
})
}
let choiceRows = ref([])
const changeCheck = () => {
choiceRows.value = xTable.value.getCheckboxRecords()
}
const dataTypeKey = {
0: '\u4E8C\u8FDB\u5236\u53D8\u91CF',
1: '\u6709\u7B26\u53F78\u4F4D\u6574\u578B',
2: '\u65E0\u7B26\u53F78\u4F4D\u6574\u578B',
3: '\u6709\u7B26\u53F716\u4F4D\u6574\u578B',
4: '\u65E0\u7B26\u53F716\u4F4D\u6574\u578B',
5: '\u6709\u7B26\u53F732\u4F4D\u6574\u578B',
6: '\u65E0\u7B26\u53F732\u4F4D\u6574\u578B',
7: '\u6709\u7B26\u53F764\u4F4D\u6574\u578B',
8: '\u65E0\u7B26\u53F764\u4F4D\u6574\u578B',
9: 'F32\u4F4D\u6D6E\u70B9\u6570IEEE754',
10: 'F64\u4F4D\u6D6E\u70B9\u6570IEEE754',
11: '\u65E5\u671F',
12: '\u65F6\u95F4',
13: '\u65E5\u671F\u65F6\u95F4',
14: '\u5B57\u7B26\u4E32',
15: '\u5BBD\u5B57\u7B26\u4E32',
16: '\u6587\u672C\u53D8\u91CF8\u4F4D\u5B57\u7B26\u96C6',
17: '\u6587\u672C\u53D8\u91CF16\u4F4D\u5B57\u7B26\u96C6',
18: '\u5B9A\u65F6\u5668',
}
const dataTypes = {
Modbus_TCP: {
通用: {
通用: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 14],
},
西门子Siemens: {
通用: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 14],
},
},
S7_TCP: {
西门子Siemens: {
'S7-300/400/1200/1500': [
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 16, 17, 14, 15, 11, 12, 13, 18,
],
'S7-200Smart': [0, 1, 2, 3, 4, 5, 6, 9, 16, 14],
},
},
}
const variableType = [
'\u4E8C\u8FDB\u5236',
'\u6574\u578B',
'\u6D6E\u70B9\u578B',
'\u5B57\u7B26\u4E32',
'\u65F6\u95F4',
]
const classifyType2 = {
二进制: [0],
整型: [1, 2, 3, 4, 5, 6, 7, 8],
浮点型: [9, 10],
字符串: [14, 15, 16, 17],
时间: [11, 12, 13, 18],
}
let showType = ref([])
const handleVariableType = (type4) => {
showType.value = []
let index2 = activeType.value.indexOf(type4)
index2 >= 0
? activeType.value.splice(index2, 1)
: activeType.value.push(type4)
initUtils.debouncedFn(() => {
if ([0, 5].includes(activeType.value.length)) {
tableData2.value = [...cloneTableData.value]
} else {
activeType.value.forEach((item2) => {
showType.value.push(...classifyType2[item2])
})
tableData2.value = [
...cloneTableData.value.filter(
(item2) =>
showType.value.includes(item2.type) &&
item2.name.indexOf(screenValue.value) >= 0
),
]
xTable.value.loadData(tableData2.value)
}
changeCheck()
})
}
const handleScreen = (val2) => {
initUtils.debouncedFn(() => {
tableData2.value = [
...cloneTableData.value.filter(
(item2) => item2.name.indexOf(val2) >= 0
),
]
xTable.value.loadData(tableData2.value)
})
}
const activeType = ref([])
const screenValue = ref('')
const reset2 = () => {
activeType.value = []
screenValue.value = ''
tableData2.value = [...cloneTableData.value]
}
const addVariable = () => {
let newNode = {
id: 'new_' + initUtils.createRandomId(),
name: '',
type: 0,
description: '',
address: '',
stringLength: null,
zoom: null,
digit: null,
rule: 0,
historyArchive: {
triggerType: 0,
startTime: null,
interval: 0,
intervalUnit: 0,
relateTags: [],
isRelateSelf: false,
},
}
;[0, 5].includes(activeType.value.length) ||
(showType.value.includes(0) &&
newNode.name.indexOf(screenValue.value) >= 0)
? tableData2.value.push(newNode)
: ''
cloneTableData.value.push(newNode)
stosageData.value.push(newNode)
updateStroge()
}
const updateStroge = () => {
if (acitveNode.value !== '') {
window.localStorage.setItem(
acitveNode.value,
JSON.stringify(stosageData.value)
)
}
xTable.value.loadData(tableData2.value)
}
const delNodeDailog = reactive({
isShow: false,
})
const hideDialog = () => {
delNodeDailog.isShow = false
}
const comfig = () => {
let ids = []
choiceRows.value.forEach((item2) => {
item2.id.indexOf('new_') < 0 ? ids.push(item2.id) : null
tableData2.value.splice(tableData2.value.indexOf(item2), 1)
cloneTableData.value.splice(cloneTableData.value.indexOf(item2), 1)
stosageData.value.splice(stosageData.value.indexOf(item2), 1)
})
ids.length > 0
? delTag$1(activeDevice.value, acitveNode.value, ids)
: null
nextTick(() => {
updateStroge()
changeCheck()
hideDialog()
ElMessage({
message: '\u5220\u9664\u6210\u529F',
type: 'success',
customClass: 'cms-el-message el-message--success',
})
})
}
const delVariable = () => {
initUtils.debouncedFn(() => {
if (choiceRows.value.length === 0) {
ElMessage({
message: '\u8BF7\u9009\u62E9\u8981\u5220\u9664\u7684\u53D8\u91CF',
type: 'error',
customClass: 'cms-el-message el-message--error',
})
} else {
delNodeDailog.isShow = true
}
})
}
const saveTableData2 = () => {
initUtils.debouncedFn(() => {
let addList = []
let addListId = []
let modifyList = []
stosageData.value.forEach((item2) => {
if (item2.id.indexOf('new_') >= 0) {
let newItem = JSON.parse(JSON.stringify(item2))
addListId.push(item2.id)
Reflect.deleteProperty(newItem, 'id')
addList.push(newItem)
} else {
modifyList.push(item2)
}
})
let promise1 = createTag$1(
activeDevice.value,
acitveNode.value,
addList
).then((res) => {
let i2 = 0
tableData2.value.forEach((item2) => {
if (addListId.indexOf(item2.id) > 0) {
item2.id = res.result[i2]
i2++
}
})
addList.forEach((item2, idx) => {
item2.id = res.result[idx]
})
})
let promuse2 = modifyTag$1(
activeDevice.value,
acitveNode.value,
modifyList
)
Promise.all([promise1, promuse2]).then(() => {
stosageData.value = []
updateStroge()
ElMessage({
message: '\u4FDD\u5B58\u6210\u529F',
type: 'success',
customClass: 'cms-el-message el-message--success',
})
})
})
}
const resetTableData = () => {
stosageData.value = []
updateStroge()
getTableData2(activeDevice.value, acitveNode.value)
}
const dialogVisible = ref(false)
const dialogTitle = ref('')
const actvieComponent = ref('')
const closeDialog = () => {
dialogVisible.value = false
actvieComponent.value = ''
}
const submitForm = (historyMsg) => {
switch (actvieComponent.value) {
case 'history-archive':
if (modifyRow.value) {
let index2 = tableData2.value.indexOf(modifyRow.value)
historyMsg.startTime =
historyMsg.triggerType === 1
? new Date(historyMsg.startTime).toISOString()
: null
tableData2.value[index2].historyArchive = historyMsg
cloneTableData.value[
cloneTableData.value.indexOf(modifyRow.value)
].historyArchive = historyMsg
let sIdx = stosageData.value.indexOf(tableData2.value[index2])
sIdx >= 0
? stosageData.value.splice(sIdx, 1, tableData2.value[index2])
: stosageData.value.push(tableData2.value[index2])
}
break
case 'address-config':
if (modifyRow.value) {
let index2 = tableData2.value.indexOf(modifyRow.value)
tableData2.value[index2].address = historyMsg.dataValue
cloneTableData.value[
cloneTableData.value.indexOf(modifyRow.value)
].address = historyMsg.dataValue
historyMsg.stringLength &&
(tableData2.value[index2].stringLength = historyMsg.stringLength)
let sIdx = stosageData.value.indexOf(tableData2.value[index2])
sIdx >= 0
? stosageData.value.splice(sIdx, 1, tableData2.value[index2])
: stosageData.value.push(tableData2.value[index2])
}
break
}
updateStroge()
closeDialog()
}
const limitNumber2 = (e2, row, type4) => {
let obj = row[type4]
obj = obj.replace(/[^\d.]/g, '')
obj = obj.replace(/\.{2,}/g, '.')
obj = obj.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.')
if (obj.indexOf('.') === 0 && obj !== '') {
obj = '0' + obj
} else if (obj.indexOf('.') < 0 && obj !== '') {
obj = parseFloat(obj)
}
row[type4] = obj === '' ? null : obj
}
const limitPIntNum2 = (e2, row, type4) => {
let val2 = (row[type4] + '').replace(/^[^\d]+/g, '')
row[type4] = val2 === '' ? null : parseInt(val2)
}
let modifyRow = ref()
const changeTableDataMsg = (row, type4 = '') => {
if (
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10].includes(row.type) &&
row.rule === 0
) {
row.rule = 1
} else if (![1, 2, 3, 4, 5, 6, 7, 8, 9, 10].includes(row.type)) {
row.rule = 0
}
if (
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10].includes(row.type) &&
row.zoom === null
) {
row.zoom = 1
} else if (![1, 2, 3, 4, 5, 6, 7, 8, 9, 10].includes(row.type)) {
row.zoom = null
if (type4 === 'zoom') {
ElMessage({
message: '\u8BE5\u53D8\u91CF\u4E0D\u5B58\u5728\u7F29\u653E\u6BD4',
type: 'error',
customClass: 'cms-el-message el-message--error',
})
}
}
modifyRow.value = row
let sIdx = stosageData.value.indexOf(row)
sIdx >= 0
? stosageData.value.splice(sIdx, 1, row)
: stosageData.value.push(row)
nextTick(() => {
updateStroge()
})
}
const changeAddress = (row) => {
modifyRow.value = row
dialogVisible.value = true
dialogTitle.value = `\u9009\u62E9${
protocolNames[activeProto.value]
}\u5730\u5740`
actvieComponent.value = 'address-config'
}
const changeArchives = (row) => {
modifyRow.value = row
dialogVisible.value = true
dialogTitle.value = '\u5386\u53F2\u5F52\u6863\u914D\u7F6E'
actvieComponent.value = 'history-archive'
}
let rwRuleKeys = [
'\u820D\u4F4D\u53D6\u6570',
'\u56DB\u820D\u4E94\u5165',
'\u8FDB\u4F4D\u53D6\u6570',
]
let intervalUnitKey = ['ms', 's', 'm', 'h']
const formateArchives = (data2, row) => {
if (data2.triggerType === 0) {
return '--'
} else if (data2.triggerType === 1) {
return (
initUtils.formateDate(data2.startTime) +
', ' +
data2.interval +
intervalUnitKey[data2.intervalUnit]
)
} else if (data2.triggerType === 2) {
let name2 = ''
if (data2.isRelateSelf) {
name2 = row.name
} else {
data2.relateTags.forEach((item2, index2) => {
name2 += item2.name
index2 + 1 !== data2.relateTags.length ? (name2 += ', ') : ''
})
}
return name2
} else {
return '--'
}
}
const inputFocus = (e2) => {
e2.target?.select()
}
expose({
getTableData: getTableData2,
reset: reset2,
})
return (_ctx, _cache) => {
const _component_el_icon = resolveComponent('el-icon')
const _component_el_input = resolveComponent('el-input')
const _component_vxe_column = resolveComponent('vxe-column')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_vxe_table = resolveComponent('vxe-table')
const _component_el_dialog = resolveComponent('el-dialog')
const _component_el_button = resolveComponent('el-button')
return (
openBlock(),
createElementBlock('div', _hoisted_1$t, [
createElementVNode('div', _hoisted_2$r, [
createElementVNode('div', _hoisted_3$p, [
_hoisted_4$k,
(openBlock(),
createElementBlock(
Fragment,
null,
renderList(variableType, (item2) => {
return createElementVNode(
'button',
{
key: item2,
class: normalizeClass([
'cms-btn btn-screen-btn',
{ active: activeType.value.indexOf(item2) >= 0 },
]),
onClick: ($event) => handleVariableType(item2),
},
toDisplayString$1(item2),
11,
_hoisted_5$h
)
}),
64
)),
createVNode$1(
_component_el_input,
{
class: 'screen-input cms-el-input-x',
placeholder:
'\u8BF7\u8F93\u5165\u53D8\u91CF\u540D\u5173\u952E\u5B57',
modelValue: screenValue.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (screenValue.value = $event)),
onInput: handleScreen,
},
{
suffix: withCtx(() => [
createVNode$1(
_component_el_icon,
{ class: 'el-input__icon' },
{
default: withCtx(() => [createVNode$1(unref(search))]),
_: 1,
}
),
]),
_: 1,
},
8,
['modelValue']
),
createElementVNode(
'button',
{
class: 'cms-btn btn-screen-btn btn-reset',
onClick: reset2,
},
'\u91CD\u7F6E'
),
]),
createElementVNode('div', null, [
createElementVNode('i', {
class: 'iconfont icon-xinjian option-add',
onClick: addVariable,
}),
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont icon-qingchu option-danger',
{ 'multi-icon': unref(choiceRows).length > 1 },
]),
onClick: delVariable,
},
null,
2
),
createElementVNode(
'button',
{
class: 'cms-btn btn-screen-btn btn-save',
onClick: saveTableData2,
},
'\u4FDD\u5B58'
),
createElementVNode(
'button',
{
class: 'cms-btn btn-screen-btn btn-reset2',
onClick: resetTableData,
},
'\u91CD\u7F6E'
),
]),
]),
createElementVNode('div', _hoisted_6$e, [
createVNode$1(
_component_vxe_table,
{
class: 'cms-vxe-table',
ref_key: 'xTable',
ref: xTable,
height: '100%',
'row-config': { keyField: 'id' },
'show-overflow': 'tooltip',
'tooltip-config': unref(tableTooltipConfig),
data: unref(tableData2),
'column-config': { resizable: true },
'edit-config': { trigger: 'click', mode: 'cell' },
'checkbox-config': {
checkRowKeys: defaultSelecteRows.value,
highlight: true,
},
onCheckboxChange: changeCheck,
onCheckboxAll: changeCheck,
},
{
default: withCtx(() => [
createVNode$1(_component_vxe_column, {
type: 'checkbox',
width: '60',
}),
createVNode$1(
_component_vxe_column,
{
field: 'name',
title: '\u53D8\u91CF\u540D',
width: '250',
'edit-render': { autofocus: '.el-input__inner' },
},
{
edit: withCtx(({ row }) => [
createVNode$1(
_component_el_input,
{
modelValue: row.name,
'onUpdate:modelValue': ($event) =>
(row.name = $event),
type: 'text',
spellcheck: false,
onFocus: inputFocus,
onChange: ($event) => changeTableDataMsg(row),
},
null,
8,
['modelValue', 'onUpdate:modelValue', 'onChange']
),
]),
_: 1,
},
8,
['edit-render']
),
createVNode$1(
_component_vxe_column,
{
field: 'type',
title: '\u6570\u636E\u7C7B\u578B',
width: '250',
'edit-render': {},
},
{
default: withCtx(({ row }) => [
createElementVNode(
'span',
_hoisted_7$d,
toDisplayString$1(dataTypeKey[row.type]),
1
),
]),
edit: withCtx(({ row }) => [
createVNode$1(
_component_el_select,
{
modelValue: row.type,
'onUpdate:modelValue': ($event) =>
(row.type = $event),
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
onChange: ($event) => changeTableDataMsg(row),
teleported: false,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
dataTypes[protocolNames[activeProto.value]][
suppiler.value
][model.value],
(item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
label: dataTypeKey[item2],
key: item2,
value: item2,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue', 'onChange']
),
]),
_: 1,
}
),
createVNode$1(
_component_vxe_column,
{
field: 'address',
title: '\u53D8\u91CF\u5730\u5740',
width: '250',
'edit-render': {},
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_8$d, [
createElementVNode(
'div',
_hoisted_9$d,
toDisplayString$1(row.address),
1
),
createElementVNode(
'i',
{
class: 'iconfont icon-gengduo1 cms-more-btn',
onClick: ($event) => changeAddress(row),
},
null,
8,
_hoisted_10$c
),
]),
]),
edit: withCtx(({ row }) => [
createElementVNode('div', _hoisted_11$a, [
createVNode$1(
_component_el_input,
{
modelValue: row.address,
'onUpdate:modelValue': ($event) =>
(row.address = $event),
class: 'cms-input flex-row-full',
onFocus: inputFocus,
onChange: ($event) => changeTableDataMsg(row),
},
null,
8,
['modelValue', 'onUpdate:modelValue', 'onChange']
),
createElementVNode(
'i',
{
class: 'iconfont icon-gengduo1 cms-more-btn',
onClick: withModifiers(
($event) => changeAddress(row),
['stop']
),
},
null,
8,
_hoisted_12$a
),
]),
]),
_: 1,
}
),
createVNode$1(
_component_vxe_column,
{
field: 'stringLength',
title: '\u5B57\u7B26\u957F\u5EA6',
width: '130',
'edit-render': { autofocus: '.el-input__inner' },
},
{
edit: withCtx(({ row }) => [
createVNode$1(
_component_el_input,
{
modelValue: row.stringLength,
'onUpdate:modelValue': ($event) =>
(row.stringLength = $event),
onFocus: inputFocus,
onChange: ($event) => changeTableDataMsg(row),
onInput: ($event) =>
limitPIntNum2($event, row, 'stringLength'),
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
'onChange',
'onInput',
]
),
]),
_: 1,
},
8,
['edit-render']
),
createVNode$1(
_component_vxe_column,
{
field: 'zoom',
title: '\u7F29\u653E\u6BD4',
width: '100',
'edit-render': { autofocus: '.el-input__inner' },
},
{
edit: withCtx(({ row }) => [
createVNode$1(
_component_el_input,
{
modelValue: row.zoom,
'onUpdate:modelValue': ($event) =>
(row.zoom = $event),
onFocus: inputFocus,
onChange: ($event) =>
changeTableDataMsg(row, 'zoom'),
onInput: ($event) =>
limitNumber2($event, row, 'zoom'),
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
'onChange',
'onInput',
]
),
]),
_: 1,
},
8,
['edit-render']
),
createVNode$1(
_component_vxe_column,
{
field: 'digit',
title: '\u5C0F\u6570\u4F4D\u6570',
width: '130',
'edit-render': { autofocus: '.el-input__inner' },
},
{
edit: withCtx(({ row }) => [
createVNode$1(
_component_el_input,
{
modelValue: row.digit,
'onUpdate:modelValue': ($event) =>
(row.digit = $event),
onFocus: inputFocus,
onChange: ($event) => changeTableDataMsg(row),
onInput: ($event) =>
limitPIntNum2($event, row, 'digit'),
},
null,
8,
[
'modelValue',
'onUpdate:modelValue',
'onChange',
'onInput',
]
),
]),
_: 1,
},
8,
['edit-render']
),
createVNode$1(
_component_vxe_column,
{
field: 'rule',
title: '\u8BFB\u5199\u89C4\u5219',
width: '200',
'edit-render': {},
},
{
default: withCtx(({ row }) => [
createElementVNode(
'span',
_hoisted_13$9,
toDisplayString$1(unref(rwRuleKeys)[row.rule - 1]),
1
),
]),
edit: withCtx(({ row }) => [
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10].includes(row.type)
? (openBlock(),
createBlock(
_component_el_select,
{
key: 0,
class: 'cms-el-select',
modelValue: row.rule,
'onUpdate:modelValue': ($event) =>
(row.rule = $event),
'popper-class': 'cms-el-select__popper',
onChange: ($event) => changeTableDataMsg(row),
teleported: false,
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
label: '\u820D\u4F4D\u53D6\u6570',
value: 1,
}),
createVNode$1(_component_el_option, {
label: '\u56DB\u820D\u4E94\u5165',
value: 2,
}),
createVNode$1(_component_el_option, {
label: '\u8FDB\u4F4D\u53D6\u6570',
value: 3,
}),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue', 'onChange']
))
: createCommentVNode('', true),
]),
_: 1,
}
),
createVNode$1(
_component_vxe_column,
{
field: 'historyArchive',
title: '\u5386\u53F2\u5F52\u6863',
width: '300',
},
{
default: withCtx(({ row }) => [
createElementVNode('div', _hoisted_14$8, [
createElementVNode(
'div',
{
class: 'flex-row-full max-row-full',
style: { 'padding-left': '10px' },
title: formateArchives(row.historyArchive, row),
},
toDisplayString$1(
formateArchives(row.historyArchive, row)
),
9,
_hoisted_15$8
),
createElementVNode(
'i',
{
class: 'iconfont icon-gengduo1 cms-more-btn',
onClick: ($event) => changeArchives(row),
},
null,
8,
_hoisted_16$8
),
]),
]),
_: 1,
}
),
createVNode$1(
_component_vxe_column,
{
field: 'description',
title: '\u53D8\u91CF\u63CF\u8FF0',
width: '250',
'edit-render': { autofocus: '.el-input__inner' },
},
{
edit: withCtx(({ row }) => [
createVNode$1(
_component_el_input,
{
modelValue: row.description,
'onUpdate:modelValue': ($event) =>
(row.description = $event),
type: 'text',
spellcheck: false,
onFocus: inputFocus,
onChange: ($event) => changeTableDataMsg(row),
},
null,
8,
['modelValue', 'onUpdate:modelValue', 'onChange']
),
]),
_: 1,
},
8,
['edit-render']
),
]),
_: 1,
},
8,
['tooltip-config', 'data', 'checkbox-config']
),
]),
(openBlock(),
createBlock(
_component_el_dialog,
{
modelValue: dialogVisible.value,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) => (dialogVisible.value = $event)),
title: dialogTitle.value,
'custom-class': 'cms-el-dialog',
width: '450px',
'close-on-click-modal': false,
key: new Date().toISOString(),
},
{
default: withCtx(() => [
actvieComponent.value === 'history-archive'
? (openBlock(),
createBlock(
HistoryArchive,
{
key: 0,
data: unref(modifyRow),
onCloseDialog: closeDialog,
onSubmitForm: submitForm,
},
null,
8,
['data']
))
: createCommentVNode('', true),
actvieComponent.value === 'address-config'
? (openBlock(),
createBlock(
AddressConfig,
{
key: 1,
data: unref(modifyRow),
protocolName: protocolNames[activeProto.value],
model: model.value,
suppiler: suppiler.value,
onCloseDialog: closeDialog,
onSubmitForm: submitForm,
},
null,
8,
['data', 'protocolName', 'model', 'suppiler']
))
: createCommentVNode('', true),
]),
_: 1,
},
8,
['modelValue', 'title']
)),
(openBlock(),
createBlock(
_component_el_dialog,
{
modelValue: unref(delNodeDailog).isShow,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(delNodeDailog).isShow = $event)),
title: '\u786E\u8BA4\u5220\u9664',
width: '450px',
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
key: new Date().toISOString(),
},
{
default: withCtx(() => [
_hoisted_17$7,
createElementVNode('div', _hoisted_18$7, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick: hideDialog,
},
{
default: withCtx(() => [_hoisted_19$6]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: comfig,
},
{
default: withCtx(() => [_hoisted_20$6]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
)),
])
)
}
},
})
var ComponentTable = /* @__PURE__ */ _export_sfc(_sfc_main$u, [
['__scopeId', 'data-v-b1b4a672'],
])
var compomentTable = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ComponentTable,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var compomentZtreeInner_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$i = (n2) => (
pushScopeId('data-v-3c783cea'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$s = {
key: 0,
class: 'component-ztree-header',
}
const _hoisted_2$q = /* @__PURE__ */ _withScopeId$i(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-bianliangfenzu title_img' },
null,
-1
)
)
const _hoisted_3$o = /* @__PURE__ */ _withScopeId$i(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u53D8\u91CF\u5206\u7EC4',
-1
)
)
const _hoisted_4$j = [_hoisted_2$q, _hoisted_3$o]
const _hoisted_5$g = {
key: 1,
class: 'component-ztree-search',
}
const _hoisted_6$d = { class: 'right-space' }
const _hoisted_7$c = { class: 'component-ztree-contain' }
const _hoisted_8$c = { class: 'custom-tree-node' }
const _hoisted_9$c = /* @__PURE__ */ _withScopeId$i(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'tree-node-icon' },
[
/* @__PURE__ */ createElementVNode('i', {
class: 'iconfont icon-bianliangfenzu',
}),
],
-1
)
)
const _hoisted_10$b = { class: 'tree-node-label' }
const _hoisted_11$9 = /* @__PURE__ */ _withScopeId$i(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-gengduo' },
null,
-1
)
)
const _hoisted_12$9 = /* @__PURE__ */ createTextVNode('\u7F16\u8F91')
const _hoisted_13$8 = /* @__PURE__ */ createTextVNode('\u5220\u9664 ')
const _sfc_main$t = /* @__PURE__ */ defineComponent({
props: {
showHeader: {
type: Boolean,
default: true,
},
showSearch: {
type: Boolean,
default: true,
},
draggable: {
type: Boolean,
default: true,
},
type: {
type: String,
default: 'IO\u53D8\u91CF',
},
},
emits: ['handleNode'],
setup(__props2, { expose, emit: emit2 }) {
const props2 = __props2
const projrectId = ref('')
const treeRef = ref()
const ztreeData = ref([])
const expandedKeys = ref([])
onMounted(() => {
init2()
})
const init2 = () => {
ztreeData.value = []
getInnerTreeData().then((res) => {
ztreeData.value = res
})
}
const dialogVisible = ref(false)
const dialogTitle = ref('')
let nodeData = reactive({
type: 'add',
node: {
groupId: '',
name: '',
sort: 0,
},
})
const closeDialog = () => {
dialogVisible.value = false
}
const updateTreeData = (data2) => {
let { id: id2, type: type4 } = data2
getInnerVarGroupMsg(id2).then((res) => {
let newNode = {
groupId: res.id,
name: res.name,
sort: res.sort || 0,
}
if (type4 === 'add') {
ztreeData.value.push(newNode)
} else {
ztreeData.value.filter((item2) => item2.groupId === id2)[0].name =
res.name
}
ElMessage({
message:
type4 === 'add'
? '\u65B0\u589E\u53D8\u91CF\u7EC4\u6210\u529F\u3002'
: '\u4FEE\u6539\u53D8\u91CF\u7EC4\u6210\u529F\u3002',
type: 'success',
customClass: 'cms-el-message el-message--success',
})
})
}
const searchValue = ref('')
watch$1(searchValue, (val2) => {
initUtils.debouncedFn(() => {
treeRef.value.filter(val2)
})
})
const filterNode = (value2, data2) => {
if (!value2) return true
return data2.name.includes(value2)
}
let parentId = ref('')
const dragNode = (draggingNode) => {
parentId.value =
draggingNode.parent.data &&
draggingNode.parent.data.length &&
draggingNode.parent.data.length >= 0
? '0'
: draggingNode.parent.data.deviceId
}
const handleDrop = () => {
let activeKey = treeRef.value.getCurrentKey()
let newSortTree = []
ztreeData.value.forEach((item2) => {
let newItem = {
groupId: item2.groupId,
}
newSortTree.push(newItem)
})
sortTree(newSortTree)
activeKey && treeRef.value.setCurrentKey(activeKey)
}
const allowDrop = (draggingNode, dropNode, type4) => {
if (type4 !== 'inner') {
if (
dropNode.parent &&
dropNode.parent.data &&
dropNode.parent.data.length &&
dropNode.parent.data.length >= 0
) {
if (parentId.value === '0') {
return true
}
} else if (dropNode.parent.data.groupId === parentId.value) {
return true
}
return false
} else {
return false
}
}
const handleNode = (node2, data2) => {
emit2('handleNode', data2)
}
const nodeExpand = (node2) => {
expandedKeys.value.push(node2.deviceId)
updateExpand()
}
const nodeCollapse = (node2) => {
expandedKeys.value.splice(expandedKeys.value.indexOf(node2.deviceId), 1)
updateExpand()
}
const updateExpand = () => {
localStorage.setItem(
projrectId.value,
JSON.stringify([...new Set(expandedKeys.value)])
)
}
const addVariableGroup = () => {
nodeData.type = 'add'
dialogTitle.value = '\u6DFB\u52A0\u53D8\u91CF\u7EC4'
dialogVisible.value = true
}
const handleCommand = (data2) => {
let { node: node2, value: value2 } = data2
switch (value2) {
case '\u7F16\u8F91':
dialogTitle.value = '\u7F16\u8F91\u53D8\u91CF\u7EC4'
nodeData.type = 'modify'
nodeData.node = node2
dialogVisible.value = true
break
case '\u5220\u9664':
ElMessageBox({
title: '\u63D0\u793A',
customClass: 'cms-el-dialog',
closeOnClickModal: false,
message: h$4('p', null, [
h$4(
'span',
null,
'\u662F\u5426\u786E\u5B9A\u5220\u9664\u8BE5\u8282\u70B9\uFF1F'
),
]),
showCancelButton: true,
confirmButtonText: '\u786E\u5B9A',
cancelButtonText: '\u53D6\u6D88',
beforeClose: (action, instance, done) => {
if (action === 'confirm') {
delInnerVarGroup(node2.groupId).then(() => {
const index2 = ztreeData.value.findIndex(
(d3) => d3.groupId === node2.groupId
)
ztreeData.value.splice(index2, 1)
treeRef.value.remove(node2)
let currentKey = treeRef.value.getCurrentKey()
if (currentKey === null) {
emit2('handleNode', null)
}
ElMessage({
message: '\u5220\u9664\u6210\u529F',
type: 'success',
customClass: 'cms-el-message el-message--success',
})
})
done()
} else {
done()
}
},
})
.then(() => {})
.catch(() => {})
break
}
}
const addDevice = () => {
nodeData.type = 'add'
dialogTitle.value = '\u65B0\u589E\u53D8\u91CF\u7EC4'
dialogVisible.value = true
}
const isHightLight = ref(false)
const hightLight = (isActive) => {
isHightLight.value = isActive
if (isActive) {
setTimeout(() => {
isHightLight.value = false
}, 1500)
}
}
expose({
addVariableGroup,
hightLight,
})
return (_ctx, _cache) => {
const _component_el_icon = resolveComponent('el-icon')
const _component_el_input = resolveComponent('el-input')
const _component_el_tooltip = resolveComponent('el-tooltip')
const _component_el_dropdown_item = resolveComponent('el-dropdown-item')
const _component_el_dropdown_menu = resolveComponent('el-dropdown-menu')
const _component_el_dropdown = resolveComponent('el-dropdown')
const _component_el_tree = resolveComponent('el-tree')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'component-ztree',
{ 'active-ztree': isHightLight.value },
]),
},
[
__props2.showHeader
? (openBlock(),
createElementBlock('div', _hoisted_1$s, _hoisted_4$j))
: createCommentVNode('', true),
__props2.showSearch
? (openBlock(),
createElementBlock('div', _hoisted_5$g, [
createVNode$1(
_component_el_input,
{
class: 'search-input cms-el-input-x-search',
modelValue: searchValue.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (searchValue.value = $event)),
},
{
suffix: withCtx(() => [
createVNode$1(
_component_el_icon,
{ class: 'el-input__icon' },
{
default: withCtx(() => [
createVNode$1(unref(search)),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['modelValue']
),
createElementVNode('div', _hoisted_6$d, [
createVNode$1(
_component_el_tooltip,
{
content: '\u6DFB\u52A0\u53D8\u91CF\u7EC4',
placement: 'bottom',
'popper-class': 'cms-el-tooltip',
},
{
default: withCtx(() => [
createElementVNode('i', {
class: 'iconfont icon-tianjiahuamian',
onClick: addDevice,
}),
]),
_: 1,
}
),
]),
]))
: createCommentVNode('', true),
createElementVNode('div', _hoisted_7$c, [
createVNode$1(
_component_el_tree,
{
ref_key: 'treeRef',
ref: treeRef,
class: 'cms-el-tree',
'allow-drop': allowDrop,
data: ztreeData.value,
draggable: __props2.draggable,
'filter-node-method': filterNode,
'node-key': 'groupId',
onNodeDragStart: dragNode,
onNodeDrop: handleDrop,
onNodeClick: handleNode,
onNodeExpand: nodeExpand,
onNodeCollapse: nodeCollapse,
},
{
default: withCtx(({ data: data2 }) => [
createElementVNode('div', _hoisted_8$c, [
_hoisted_9$c,
createElementVNode(
'div',
_hoisted_10$b,
toDisplayString$1(data2.name),
1
),
createElementVNode(
'div',
{
class: 'tree-node-option',
onClick:
_cache[1] ||
(_cache[1] = withModifiers(() => {}, ['stop'])),
},
[
createVNode$1(
_component_el_dropdown,
{
onCommand: handleCommand,
'popper-class': 'cms-el-dropdown__popper',
},
{
dropdown: withCtx(() => [
createVNode$1(
_component_el_dropdown_menu,
null,
{
default: withCtx(() => [
createVNode$1(
_component_el_dropdown_item,
{
command: {
node: data2,
value: '\u7F16\u8F91',
},
},
{
default: withCtx(() => [
_hoisted_12$9,
]),
_: 2,
},
1032,
['command']
),
createVNode$1(
_component_el_dropdown_item,
{
command: {
node: data2,
value: '\u5220\u9664',
},
class: 'danger-dropdown-menu',
},
{
default: withCtx(() => [
_hoisted_13$8,
]),
_: 2,
},
1032,
['command']
),
]),
_: 2,
},
1024
),
]),
default: withCtx(() => [_hoisted_11$9]),
_: 2,
},
1024
),
]
),
]),
]),
_: 1,
},
8,
['data', 'draggable']
),
]),
(openBlock(),
createBlock(
_component_el_dialog,
{
modelValue: dialogVisible.value,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) => (dialogVisible.value = $event)),
title: dialogTitle.value,
'custom-class': 'cms-el-dialog',
width: '450px',
'close-on-click-modal': false,
key: new Date().toISOString(),
},
{
default: withCtx(() => [
(openBlock(),
createBlock(
AddDeviceGroupForm,
{
'node-data': unref(nodeData),
onCloseDialog: closeDialog,
key: new Date().toISOString(),
onUpdateTreeData: updateTreeData,
isIoVar: props2.type === '\u5185\u90E8\u53D8\u91CF',
},
null,
8,
['node-data', 'isIoVar']
)),
]),
_: 1,
},
8,
['modelValue', 'title']
)),
],
2
)
)
}
},
})
var ComponentZtreeInner = /* @__PURE__ */ _export_sfc(_sfc_main$t, [
['__scopeId', 'data-v-3c783cea'],
])
var compomentZtreeInner = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ComponentZtreeInner,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var compomentZtree_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$h = (n2) => (
pushScopeId('data-v-6443722c'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$r = {
key: 0,
class: 'component-ztree-header',
}
const _hoisted_2$p = /* @__PURE__ */ _withScopeId$h(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-tongxunshebei title_img' },
null,
-1
)
)
const _hoisted_3$n = /* @__PURE__ */ _withScopeId$h(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u901A\u4FE1\u8BBE\u5907',
-1
)
)
const _hoisted_4$i = [_hoisted_2$p, _hoisted_3$n]
const _hoisted_5$f = {
key: 1,
class: 'component-ztree-search',
}
const _hoisted_6$c = { class: 'right-space' }
const _hoisted_7$b = { class: 'component-ztree-contain' }
const _hoisted_8$b = { class: 'custom-tree-node' }
const _hoisted_9$b = { class: 'tree-node-icon' }
const _hoisted_10$a = {
key: 0,
class: 'iconfont icon-tongxunshebei',
}
const _hoisted_11$8 = {
key: 1,
class: 'iconfont icon-bianliangfenzu',
}
const _hoisted_12$8 = { class: 'tree-node-label' }
const _hoisted_13$7 = /* @__PURE__ */ _withScopeId$h(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-gengduo' },
null,
-1
)
)
const _hoisted_14$7 = /* @__PURE__ */ createTextVNode(
'\u6DFB\u52A0\u53D8\u91CF\u7EC4'
)
const _hoisted_15$7 = /* @__PURE__ */ createTextVNode('\u7F16\u8F91')
const _hoisted_16$7 = /* @__PURE__ */ createTextVNode('\u5220\u9664')
const _sfc_main$s = /* @__PURE__ */ defineComponent({
props: {
showHeader: {
type: Boolean,
default: true,
},
showSearch: {
type: Boolean,
default: true,
},
draggable: {
type: Boolean,
default: true,
},
type: {
type: String,
default: '\u901A\u4FE1\u8BBE\u5907',
},
},
emits: ['handleNode'],
setup(__props2, { expose, emit: emit2 }) {
const props2 = __props2
const route = useRoute()
const projrectId = ref('')
const treeRef = ref()
const ztreeData = ref([])
const expandedKeys = ref([])
onMounted(() => {
init2()
projrectId.value = 'projrectId_' + route.query.projectId
let expandedKeysList = localStorage.getItem(projrectId.value)
expandedKeys.value =
expandedKeysList !== null ? JSON.parse(expandedKeysList) : []
})
const init2 = () => {
ztreeData.value = []
getTreeData().then((res) => {
res.forEach((item2) => {
item2.groupId = item2.deviceId
ztreeData.value.push(item2)
})
})
}
const dialogVisible = ref(false)
const dialogTitle = ref('')
const actvieComponent = ref('')
let nodeData = reactive({
type: 'add',
node: {
groupId: '',
deviceId: '',
name: '',
protocolType: 0,
suppiler: '',
sort: 0,
model: '',
childs: [],
},
parent: {
groupId: '',
deviceId: '',
name: '',
protocolType: 0,
suppiler: '',
sort: 0,
model: '',
childs: [],
},
})
const closeDialog = () => {
dialogVisible.value = false
actvieComponent.value = ''
}
const updateTreeData = (data2) => {
let { node: node2, id: id2, type: type4 } = data2
if (node2 === '') {
getDeviceData(id2).then((res) => {
let newNode = {
deviceId: res.id,
groupId: res.id,
name: res.name,
protocolType: res.protocolType,
suppiler: res.suppiler,
sort: res.sort,
model: res.model,
childs: [],
}
if (type4 === 'add') {
ztreeData.value.push(newNode)
} else {
ztreeData.value.filter((item2) => item2.deviceId === id2)[0].name =
res.name
}
ElMessage({
message:
type4 === 'add'
? '\u65B0\u589E\u53D8\u91CF\u6210\u529F'
: '\u4FEE\u6539\u53D8\u91CF\u6210\u529F',
type: 'success',
customClass: 'cms-el-message el-message--success',
})
})
} else {
getVarGroupMsg(node2, id2).then((res) => {
if (type4 === 'add') {
treeRef.value.append(
{
groupId: res.id,
name: res.name,
sort: res.sort || 0,
},
nodeData.node?.deviceId
)
} else {
let index2 = ztreeData.value.findIndex(
(item2) => item2.deviceId === nodeData.parent.deviceId
)
ztreeData.value[index2].childs.filter(
(item2) => item2.groupId === id2
)[0].name = res.name
}
ElMessage({
message:
type4 === 'add'
? '\u65B0\u589E\u53D8\u91CF\u7EC4\u6210\u529F'
: '\u4FEE\u6539\u53D8\u91CF\u7EC4\u6210\u529F',
type: 'success',
customClass: 'cms-el-message el-message--success',
})
})
}
}
const searchValue = ref('')
watch$1(searchValue, (val2) => {
initUtils.debouncedFn(() => {
treeRef.value.filter(val2)
})
})
const filterNode = (value2, data2) => {
if (!value2) return true
return data2.name.includes(value2)
}
let parentId = ref('')
const dragNode = (draggingNode) => {
parentId.value =
draggingNode.parent.data &&
draggingNode.parent.data.length &&
draggingNode.parent.data.length >= 0
? '0'
: draggingNode.parent.data.deviceId
}
const handleDrop = () => {
let newSortTree = []
ztreeData.value.forEach((item2) => {
let newItem = {
deviceId: item2.deviceId,
childs: [],
}
item2.childs.forEach((childs) => {
newItem.childs.push({
groupId: childs.groupId,
})
})
newSortTree.push(newItem)
})
sortTree$1(newSortTree)
activeNode.value && treeRef.value.setCurrentKey(activeNode.value.groupId)
}
const allowDrop = (draggingNode, dropNode, type4) => {
if (dropNode.data.groupId === parentId.value && type4 === 'inner') {
return true
} else if (type4 !== 'inner') {
if (
dropNode.parent &&
dropNode.parent.data &&
dropNode.parent.data.length &&
dropNode.parent.data.length >= 0
) {
if (parentId.value === '0') {
return true
}
} else if (dropNode.parent.data.groupId === parentId.value) {
return true
}
return false
} else {
return false
}
}
const activeNode = ref()
const handleNode = (node2, data2) => {
activeNode.value = node2
emit2('handleNode', data2)
}
const nodeExpand = (node2) => {
expandedKeys.value.push(node2.deviceId)
updateExpand()
}
const nodeCollapse = (node2) => {
expandedKeys.value.splice(expandedKeys.value.indexOf(node2.deviceId), 1)
updateExpand()
}
const updateExpand = () => {
localStorage.setItem(
projrectId.value,
JSON.stringify([...new Set(expandedKeys.value)])
)
}
const addVariableGroup = () => {
nodeData.type = 'add'
actvieComponent.value = 'add-device-group-form'
dialogTitle.value = '\u6DFB\u52A0\u53D8\u91CF\u7EC4'
dialogVisible.value = true
nodeData.node = activeNode.value
}
const handleCommand = (data2) => {
let { node: node2, value: value2, parentNode: parentNode2 } = data2
switch (value2) {
case '\u6DFB\u52A0\u53D8\u91CF\u7EC4':
addVariableGroup()
nodeData.node = node2
break
case '\u7F16\u8F91':
if (node2.deviceId && node2.deviceId !== null) {
actvieComponent.value = 'add-device-form'
dialogTitle.value = '\u7F16\u8F91\u8BBE\u5907'
nodeData.type = 'modify'
nodeData.node = node2
} else {
actvieComponent.value = 'add-device-group-form'
dialogTitle.value = '\u7F16\u8F91\u53D8\u91CF\u7EC4'
nodeData.type = 'modify'
nodeData.node = node2
nodeData.parent = parentNode2.parent.data
}
dialogVisible.value = true
break
case '\u5220\u9664':
ElMessageBox({
title: '\u63D0\u793A',
customClass: 'cms-el-dialog',
closeOnClickModal: false,
message: h$4('p', null, [
h$4(
'span',
null,
'\u662F\u5426\u786E\u5B9A\u5220\u9664\u8BE5\u8282\u70B9\uFF1F'
),
]),
showCancelButton: true,
confirmButtonText: '\u786E\u5B9A',
cancelButtonText: '\u53D6\u6D88',
beforeClose: (action, instance, done) => {
if (action === 'confirm') {
if (node2.deviceId && node2.deviceId !== null) {
delDevice(node2.deviceId).then(() => {
const index2 = ztreeData.value.findIndex(
(d3) => d3.groupId === node2.groupId
)
ztreeData.value.splice(index2, 1)
treeRef.value.remove(node2)
let currentKey = treeRef.value.getCurrentKey()
let childIdx = node2.childs?.findIndex(
(d3) => d3.groupId === currentKey
)
if (currentKey === null || childIdx >= 0) {
emit2('handleNode', null)
}
})
} else {
delVarGroup(
parentNode2.parent.data.deviceId,
node2.groupId
).then(() => {
const parent2 = parentNode2.parent
const children = parent2.data.childs
const index2 = children.findIndex(
(d3) => d3.groupId === node2.groupId
)
children.splice(index2, 1)
treeRef.value.remove(node2)
let currentKey = treeRef.value.getCurrentKey()
if (currentKey === null) {
emit2('handleNode', null)
}
})
}
ElMessage({
message: '\u5220\u9664\u6210\u529F',
type: 'success',
customClass: 'cms-el-message el-message--success',
})
done()
} else {
done()
}
},
})
.then(() => {})
.catch(() => {})
break
}
}
const addDevice = () => {
nodeData.type = 'add'
actvieComponent.value = 'add-device-form'
dialogTitle.value = '\u65B0\u589E\u8BBE\u5907'
dialogVisible.value = true
}
const isHightLight = ref(false)
const hightLight = (isActive) => {
isHightLight.value = isActive
if (isActive) {
setTimeout(() => {
isHightLight.value = false
}, 1500)
}
}
expose({
addVariableGroup,
hightLight,
})
return (_ctx, _cache) => {
const _component_el_icon = resolveComponent('el-icon')
const _component_el_input = resolveComponent('el-input')
const _component_el_tooltip = resolveComponent('el-tooltip')
const _component_el_dropdown_item = resolveComponent('el-dropdown-item')
const _component_el_dropdown_menu = resolveComponent('el-dropdown-menu')
const _component_el_dropdown = resolveComponent('el-dropdown')
const _component_el_tree = resolveComponent('el-tree')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'component-ztree',
{ 'active-ztree': isHightLight.value },
]),
},
[
__props2.showHeader
? (openBlock(),
createElementBlock('div', _hoisted_1$r, _hoisted_4$i))
: createCommentVNode('', true),
__props2.showSearch
? (openBlock(),
createElementBlock('div', _hoisted_5$f, [
createVNode$1(
_component_el_input,
{
class: 'search-input cms-el-input-x-search',
modelValue: searchValue.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (searchValue.value = $event)),
},
{
suffix: withCtx(() => [
createVNode$1(
_component_el_icon,
{ class: 'el-input__icon' },
{
default: withCtx(() => [
createVNode$1(unref(search)),
]),
_: 1,
}
),
]),
_: 1,
},
8,
['modelValue']
),
createElementVNode('div', _hoisted_6$c, [
createVNode$1(
_component_el_tooltip,
{
content: '\u6DFB\u52A0\u8BBE\u5907',
placement: 'bottom',
'popper-class': 'cms-el-tooltip',
},
{
default: withCtx(() => [
createElementVNode('i', {
class: 'iconfont icon-tianjiahuamian',
onClick: addDevice,
}),
]),
_: 1,
}
),
]),
]))
: createCommentVNode('', true),
createElementVNode('div', _hoisted_7$b, [
createVNode$1(
_component_el_tree,
{
ref_key: 'treeRef',
ref: treeRef,
class: 'cms-el-tree',
'allow-drop': allowDrop,
data: ztreeData.value,
draggable: __props2.draggable,
'filter-node-method': filterNode,
'node-key': 'groupId',
props: {
children: 'childs',
},
'default-expand-all': true,
'expand-on-click-node': true,
onNodeDragStart: dragNode,
onNodeDrop: handleDrop,
onNodeClick: handleNode,
onNodeExpand: nodeExpand,
onNodeCollapse: nodeCollapse,
},
{
default: withCtx(({ data: data2, node: node2 }) => [
createElementVNode('div', _hoisted_8$b, [
createElementVNode('div', _hoisted_9$b, [
data2.childs && data2.childs.length >= 0
? (openBlock(),
createElementBlock('i', _hoisted_10$a))
: (openBlock(),
createElementBlock('i', _hoisted_11$8)),
]),
createElementVNode(
'div',
_hoisted_12$8,
toDisplayString$1(data2.name),
1
),
createElementVNode(
'div',
{
class: 'tree-node-option',
onClick:
_cache[1] ||
(_cache[1] = withModifiers(() => {}, ['stop'])),
},
[
createVNode$1(
_component_el_dropdown,
{
onCommand: handleCommand,
'popper-class': 'cms-el-dropdown__popper',
},
{
dropdown: withCtx(() => [
createVNode$1(
_component_el_dropdown_menu,
null,
{
default: withCtx(() => [
data2.deviceId && data2.deviceId !== null
? (openBlock(),
createBlock(
_component_el_dropdown_item,
{
key: 0,
command: {
node: data2,
parentNode: node2,
value:
'\u6DFB\u52A0\u53D8\u91CF\u7EC4',
},
},
{
default: withCtx(() => [
_hoisted_14$7,
]),
_: 2,
},
1032,
['command']
))
: createCommentVNode('', true),
createVNode$1(
_component_el_dropdown_item,
{
command: {
node: data2,
parentNode: node2,
value: '\u7F16\u8F91',
},
},
{
default: withCtx(() => [
_hoisted_15$7,
]),
_: 2,
},
1032,
['command']
),
createVNode$1(
_component_el_dropdown_item,
{
command: {
node: data2,
parentNode: node2,
value: '\u5220\u9664',
},
class: 'danger-dropdown-menu',
},
{
default: withCtx(() => [
_hoisted_16$7,
]),
_: 2,
},
1032,
['command']
),
]),
_: 2,
},
1024
),
]),
default: withCtx(() => [_hoisted_13$7]),
_: 2,
},
1024
),
]
),
]),
]),
_: 1,
},
8,
['data', 'draggable']
),
]),
(openBlock(),
createBlock(
_component_el_dialog,
{
modelValue: dialogVisible.value,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) => (dialogVisible.value = $event)),
title: dialogTitle.value,
'custom-class': 'cms-el-dialog',
width: '450px',
'close-on-click-modal': false,
key: new Date().toISOString(),
},
{
default: withCtx(() => [
actvieComponent.value === 'add-device-form'
? (openBlock(),
createBlock(
AddDeviceForm,
{
key: 0,
'node-data': unref(nodeData),
onCloseDialog: closeDialog,
onUpdateTreeData: updateTreeData,
},
null,
8,
['node-data']
))
: createCommentVNode('', true),
actvieComponent.value === 'add-device-group-form'
? (openBlock(),
createBlock(
AddDeviceGroupForm,
{
key: 1,
'node-data': unref(nodeData),
onCloseDialog: closeDialog,
onUpdateTreeData: updateTreeData,
isIoVar: props2.type === 'IO\u53D8\u91CF',
},
null,
8,
['node-data', 'isIoVar']
))
: createCommentVNode('', true),
]),
_: 1,
},
8,
['modelValue', 'title']
)),
],
2
)
)
}
},
})
var ComponentZtree = /* @__PURE__ */ _export_sfc(_sfc_main$s, [
['__scopeId', 'data-v-6443722c'],
])
var compomentZtree = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ComponentZtree,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _hoisted_1$q = { class: 'form-table' }
const _sfc_main$r = /* @__PURE__ */ defineComponent({
emits: ['confirm'],
setup(__props2, { expose, emit: emit2 }) {
const folderDialog = reactive({
isShow: false,
isCreate: false,
name: '',
})
const submitCreateFolderForm = () => {
if (folderDialog.name === '') {
toast('\u6587\u4EF6\u5939\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A', 'error')
return
}
emit2('confirm', folderDialog.name)
}
const open2 = (isCreate = true, name2 = '') => {
folderDialog.isShow = true
folderDialog.isCreate = isCreate
folderDialog.name = name2
}
const close2 = () => {
folderDialog.isShow = false
}
expose({
open: open2,
close: close2,
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_form = resolveComponent('el-form')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
modelValue: unref(folderDialog).isShow,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) => (unref(folderDialog).isShow = $event)),
title: unref(folderDialog).isCreate
? '\u65B0\u5EFA\u6587\u4EF6\u5939'
: '\u91CD\u547D\u540D',
'custom-class': 'cms-el-dialog',
width: '450px',
'close-on-click-modal': false,
key: new Date().toISOString(),
onClose: close2,
},
{
default: withCtx(() => [
createVNode$1(
_component_el_form,
{
onSubmit:
_cache[1] ||
(_cache[1] = withModifiers(() => {}, ['prevent'])),
model: unref(folderDialog),
'label-width': '80px',
class: 'add-device-group-form cms-el-form',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$q, [
createVNode$1(
_component_el_form_item,
{ label: '\u6587\u4EF6\u5939\u540D\u79F0' },
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: unref(folderDialog).name,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(folderDialog).name = $event)),
placeholder:
'\u8BF7\u8F93\u5165\u6587\u4EF6\u5939\u540D\u79F0',
},
null,
8,
['modelValue']
),
]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['model']
),
createElementVNode('div', { class: 'el-dialog__footer' }, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: close2,
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: submitCreateFolderForm,
},
'\u786E\u8BA4'
),
]),
]),
_: 1,
},
8,
['modelValue', 'title']
)
)
}
},
})
var createFolderDialog = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$r,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var keyboard = { exports: {} }
;(function (module2, exports2) {
;(function (global2, factory) {
module2.exports = factory()
})(commonjsGlobal, function () {
function _typeof2(obj) {
'@babel/helpers - typeof'
if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {
_typeof2 = function (obj2) {
return typeof obj2
}
} else {
_typeof2 = function (obj2) {
return obj2 &&
typeof Symbol === 'function' &&
obj2.constructor === Symbol &&
obj2 !== Symbol.prototype
? 'symbol'
: typeof obj2
}
}
return _typeof2(obj)
}
function _classCallCheck2(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError('Cannot call a class as a function')
}
}
function _defineProperties(target2, props2) {
for (var i2 = 0; i2 < props2.length; i2++) {
var descriptor = props2[i2]
descriptor.enumerable = descriptor.enumerable || false
descriptor.configurable = true
if ('value' in descriptor) descriptor.writable = true
Object.defineProperty(target2, descriptor.key, descriptor)
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps)
if (staticProps) _defineProperties(Constructor, staticProps)
return Constructor
}
function _toConsumableArray2(arr) {
return (
_arrayWithoutHoles2(arr) ||
_iterableToArray2(arr) ||
_unsupportedIterableToArray2(arr) ||
_nonIterableSpread2()
)
}
function _arrayWithoutHoles2(arr) {
if (Array.isArray(arr)) return _arrayLikeToArray2(arr)
}
function _iterableToArray2(iter) {
if (typeof Symbol !== 'undefined' && Symbol.iterator in Object(iter))
return Array.from(iter)
}
function _unsupportedIterableToArray2(o2, minLen) {
if (!o2) return
if (typeof o2 === 'string') return _arrayLikeToArray2(o2, minLen)
var n2 = Object.prototype.toString.call(o2).slice(8, -1)
if (n2 === 'Object' && o2.constructor) n2 = o2.constructor.name
if (n2 === 'Map' || n2 === 'Set') return Array.from(o2)
if (
n2 === 'Arguments' ||
/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n2)
)
return _arrayLikeToArray2(o2, minLen)
}
function _arrayLikeToArray2(arr, len2) {
if (len2 == null || len2 > arr.length) len2 = arr.length
for (var i2 = 0, arr2 = new Array(len2); i2 < len2; i2++)
arr2[i2] = arr[i2]
return arr2
}
function _nonIterableSpread2() {
throw new TypeError(
'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.'
)
}
var KeyCombo = /* @__PURE__ */ (function () {
function KeyCombo2(keyComboStr) {
_classCallCheck2(this, KeyCombo2)
this.sourceStr = keyComboStr
this.subCombos = KeyCombo2.parseComboStr(keyComboStr)
this.keyNames = this.subCombos.reduce(function (memo, nextSubCombo) {
return memo.concat(nextSubCombo)
}, [])
}
_createClass(KeyCombo2, [
{
key: 'check',
value: function check2(pressedKeyNames) {
var startingKeyNameIndex = 0
for (var i2 = 0; i2 < this.subCombos.length; i2 += 1) {
startingKeyNameIndex = this._checkSubCombo(
this.subCombos[i2],
startingKeyNameIndex,
pressedKeyNames
)
if (startingKeyNameIndex === -1) {
return false
}
}
return true
},
},
{
key: 'isEqual',
value: function isEqual2(otherKeyCombo) {
if (
!otherKeyCombo ||
(typeof otherKeyCombo !== 'string' &&
_typeof2(otherKeyCombo) !== 'object')
) {
return false
}
if (typeof otherKeyCombo === 'string') {
otherKeyCombo = new KeyCombo2(otherKeyCombo)
}
if (this.subCombos.length !== otherKeyCombo.subCombos.length) {
return false
}
for (var i2 = 0; i2 < this.subCombos.length; i2 += 1) {
if (
this.subCombos[i2].length !== otherKeyCombo.subCombos[i2].length
) {
return false
}
}
for (var _i = 0; _i < this.subCombos.length; _i += 1) {
var subCombo = this.subCombos[_i]
var otherSubCombo = otherKeyCombo.subCombos[_i].slice(0)
for (var j2 = 0; j2 < subCombo.length; j2 += 1) {
var keyName = subCombo[j2]
var index2 = otherSubCombo.indexOf(keyName)
if (index2 > -1) {
otherSubCombo.splice(index2, 1)
}
}
if (otherSubCombo.length !== 0) {
return false
}
}
return true
},
},
{
key: '_checkSubCombo',
value: function _checkSubCombo(
subCombo,
startingKeyNameIndex,
pressedKeyNames
) {
subCombo = subCombo.slice(0)
pressedKeyNames = pressedKeyNames.slice(startingKeyNameIndex)
var endIndex = startingKeyNameIndex
for (var i2 = 0; i2 < subCombo.length; i2 += 1) {
var keyName = subCombo[i2]
if (keyName[0] === '\\') {
var escapedKeyName = keyName.slice(1)
if (
escapedKeyName === KeyCombo2.comboDeliminator ||
escapedKeyName === KeyCombo2.keyDeliminator
) {
keyName = escapedKeyName
}
}
var index2 = pressedKeyNames.indexOf(keyName)
if (index2 > -1) {
subCombo.splice(i2, 1)
i2 -= 1
if (index2 > endIndex) {
endIndex = index2
}
if (subCombo.length === 0) {
return endIndex
}
}
}
return -1
},
},
])
return KeyCombo2
})()
KeyCombo.comboDeliminator = '>'
KeyCombo.keyDeliminator = '+'
KeyCombo.parseComboStr = function (keyComboStr) {
var subComboStrs = KeyCombo._splitStr(
keyComboStr,
KeyCombo.comboDeliminator
)
var combo = []
for (var i2 = 0; i2 < subComboStrs.length; i2 += 1) {
combo.push(
KeyCombo._splitStr(subComboStrs[i2], KeyCombo.keyDeliminator)
)
}
return combo
}
KeyCombo._splitStr = function (str, deliminator) {
var s2 = str
var d3 = deliminator
var c2 = ''
var ca2 = []
for (var ci = 0; ci < s2.length; ci += 1) {
if (ci > 0 && s2[ci] === d3 && s2[ci - 1] !== '\\') {
ca2.push(c2.trim())
c2 = ''
ci += 1
}
c2 += s2[ci]
}
if (c2) {
ca2.push(c2.trim())
}
return ca2
}
var Locale = /* @__PURE__ */ (function () {
function Locale2(name2) {
_classCallCheck2(this, Locale2)
this.localeName = name2
this.activeTargetKeys = []
this.pressedKeys = []
this._appliedMacros = []
this._keyMap = {}
this._killKeyCodes = []
this._macros = []
}
_createClass(Locale2, [
{
key: 'bindKeyCode',
value: function bindKeyCode(keyCode, keyNames) {
if (typeof keyNames === 'string') {
keyNames = [keyNames]
}
this._keyMap[keyCode] = keyNames
},
},
{
key: 'bindMacro',
value: function bindMacro(keyComboStr, keyNames) {
if (typeof keyNames === 'string') {
keyNames = [keyNames]
}
var handler = null
if (typeof keyNames === 'function') {
handler = keyNames
keyNames = null
}
var macro = {
keyCombo: new KeyCombo(keyComboStr),
keyNames,
handler,
}
this._macros.push(macro)
},
},
{
key: 'getKeyCodes',
value: function getKeyCodes(keyName) {
var keyCodes = []
for (var keyCode in this._keyMap) {
var index2 = this._keyMap[keyCode].indexOf(keyName)
if (index2 > -1) {
keyCodes.push(keyCode | 0)
}
}
return keyCodes
},
},
{
key: 'getKeyNames',
value: function getKeyNames(keyCode) {
return this._keyMap[keyCode] || []
},
},
{
key: 'setKillKey',
value: function setKillKey(keyCode) {
if (typeof keyCode === 'string') {
var keyCodes = this.getKeyCodes(keyCode)
for (var i2 = 0; i2 < keyCodes.length; i2 += 1) {
this.setKillKey(keyCodes[i2])
}
return
}
this._killKeyCodes.push(keyCode)
},
},
{
key: 'pressKey',
value: function pressKey(keyCode) {
if (typeof keyCode === 'string') {
var keyCodes = this.getKeyCodes(keyCode)
for (var i2 = 0; i2 < keyCodes.length; i2 += 1) {
this.pressKey(keyCodes[i2])
}
return
}
this.activeTargetKeys.length = 0
var keyNames = this.getKeyNames(keyCode)
for (var _i = 0; _i < keyNames.length; _i += 1) {
this.activeTargetKeys.push(keyNames[_i])
if (this.pressedKeys.indexOf(keyNames[_i]) === -1) {
this.pressedKeys.push(keyNames[_i])
}
}
this._applyMacros()
},
},
{
key: 'releaseKey',
value: function releaseKey(keyCode) {
if (typeof keyCode === 'string') {
var keyCodes = this.getKeyCodes(keyCode)
for (var i2 = 0; i2 < keyCodes.length; i2 += 1) {
this.releaseKey(keyCodes[i2])
}
} else {
var keyNames = this.getKeyNames(keyCode)
var killKeyCodeIndex = this._killKeyCodes.indexOf(keyCode)
if (killKeyCodeIndex !== -1) {
this.pressedKeys.length = 0
} else {
for (var _i2 = 0; _i2 < keyNames.length; _i2 += 1) {
var index2 = this.pressedKeys.indexOf(keyNames[_i2])
if (index2 > -1) {
this.pressedKeys.splice(index2, 1)
}
}
}
this.activeTargetKeys.length = 0
this._clearMacros()
}
},
},
{
key: '_applyMacros',
value: function _applyMacros() {
var macros = this._macros.slice(0)
for (var i2 = 0; i2 < macros.length; i2 += 1) {
var macro = macros[i2]
if (macro.keyCombo.check(this.pressedKeys)) {
if (macro.handler) {
macro.keyNames = macro.handler(this.pressedKeys)
}
for (var j2 = 0; j2 < macro.keyNames.length; j2 += 1) {
if (this.pressedKeys.indexOf(macro.keyNames[j2]) === -1) {
this.pressedKeys.push(macro.keyNames[j2])
}
}
this._appliedMacros.push(macro)
}
}
},
},
{
key: '_clearMacros',
value: function _clearMacros() {
for (var i2 = 0; i2 < this._appliedMacros.length; i2 += 1) {
var macro = this._appliedMacros[i2]
if (!macro.keyCombo.check(this.pressedKeys)) {
for (var j2 = 0; j2 < macro.keyNames.length; j2 += 1) {
var index2 = this.pressedKeys.indexOf(macro.keyNames[j2])
if (index2 > -1) {
this.pressedKeys.splice(index2, 1)
}
}
if (macro.handler) {
macro.keyNames = null
}
this._appliedMacros.splice(i2, 1)
i2 -= 1
}
}
},
},
])
return Locale2
})()
var Keyboard = /* @__PURE__ */ (function () {
function Keyboard2(
targetWindow,
targetElement,
targetPlatform,
targetUserAgent
) {
_classCallCheck2(this, Keyboard2)
this._locale = null
this._currentContext = ''
this._contexts = {}
this._listeners = []
this._appliedListeners = []
this._locales = {}
this._targetElement = null
this._targetWindow = null
this._targetPlatform = ''
this._targetUserAgent = ''
this._isModernBrowser = false
this._targetKeyDownBinding = null
this._targetKeyUpBinding = null
this._targetResetBinding = null
this._paused = false
this._contexts.global = {
listeners: this._listeners,
targetWindow,
targetElement,
targetPlatform,
targetUserAgent,
}
this.setContext('global')
}
_createClass(Keyboard2, [
{
key: 'setLocale',
value: function setLocale(localeName, localeBuilder) {
var locale = null
if (typeof localeName === 'string') {
if (localeBuilder) {
locale = new Locale(localeName)
localeBuilder(
locale,
this._targetPlatform,
this._targetUserAgent
)
} else {
locale = this._locales[localeName] || null
}
} else {
locale = localeName
localeName = locale._localeName
}
this._locale = locale
this._locales[localeName] = locale
if (locale) {
this._locale.pressedKeys = locale.pressedKeys
}
return this
},
},
{
key: 'getLocale',
value: function getLocale2(localName) {
localName || (localName = this._locale.localeName)
return this._locales[localName] || null
},
},
{
key: 'bind',
value: function bind3(
keyComboStr,
pressHandler,
releaseHandler,
preventRepeatByDefault2
) {
if (keyComboStr === null || typeof keyComboStr === 'function') {
preventRepeatByDefault2 = releaseHandler
releaseHandler = pressHandler
pressHandler = keyComboStr
keyComboStr = null
}
if (
keyComboStr &&
_typeof2(keyComboStr) === 'object' &&
typeof keyComboStr.length === 'number'
) {
for (var i2 = 0; i2 < keyComboStr.length; i2 += 1) {
this.bind(keyComboStr[i2], pressHandler, releaseHandler)
}
return this
}
this._listeners.push({
keyCombo: keyComboStr ? new KeyCombo(keyComboStr) : null,
pressHandler: pressHandler || null,
releaseHandler: releaseHandler || null,
preventRepeat: false,
preventRepeatByDefault: preventRepeatByDefault2 || false,
executingHandler: false,
})
return this
},
},
{
key: 'addListener',
value: function addListener(
keyComboStr,
pressHandler,
releaseHandler,
preventRepeatByDefault2
) {
return this.bind(
keyComboStr,
pressHandler,
releaseHandler,
preventRepeatByDefault2
)
},
},
{
key: 'on',
value: function on2(
keyComboStr,
pressHandler,
releaseHandler,
preventRepeatByDefault2
) {
return this.bind(
keyComboStr,
pressHandler,
releaseHandler,
preventRepeatByDefault2
)
},
},
{
key: 'bindPress',
value: function bindPress(
keyComboStr,
pressHandler,
preventRepeatByDefault2
) {
return this.bind(
keyComboStr,
pressHandler,
null,
preventRepeatByDefault2
)
},
},
{
key: 'bindRelease',
value: function bindRelease(keyComboStr, releaseHandler) {
return this.bind(
keyComboStr,
null,
releaseHandler,
preventRepeatByDefault
)
},
},
{
key: 'unbind',
value: function unbind(keyComboStr, pressHandler, releaseHandler) {
if (keyComboStr === null || typeof keyComboStr === 'function') {
releaseHandler = pressHandler
pressHandler = keyComboStr
keyComboStr = null
}
if (
keyComboStr &&
_typeof2(keyComboStr) === 'object' &&
typeof keyComboStr.length === 'number'
) {
for (var i2 = 0; i2 < keyComboStr.length; i2 += 1) {
this.unbind(keyComboStr[i2], pressHandler, releaseHandler)
}
return this
}
for (var _i = 0; _i < this._listeners.length; _i += 1) {
var listener = this._listeners[_i]
var comboMatches =
(!keyComboStr && !listener.keyCombo) ||
(listener.keyCombo && listener.keyCombo.isEqual(keyComboStr))
var pressHandlerMatches =
(!pressHandler && !releaseHandler) ||
(!pressHandler && !listener.pressHandler) ||
pressHandler === listener.pressHandler
var releaseHandlerMatches =
(!pressHandler && !releaseHandler) ||
(!releaseHandler && !listener.releaseHandler) ||
releaseHandler === listener.releaseHandler
if (
comboMatches &&
pressHandlerMatches &&
releaseHandlerMatches
) {
this._listeners.splice(_i, 1)
_i -= 1
}
}
return this
},
},
{
key: 'removeListener',
value: function removeListener(
keyComboStr,
pressHandler,
releaseHandler
) {
return this.unbind(keyComboStr, pressHandler, releaseHandler)
},
},
{
key: 'off',
value: function off2(keyComboStr, pressHandler, releaseHandler) {
return this.unbind(keyComboStr, pressHandler, releaseHandler)
},
},
{
key: 'setContext',
value: function setContext(contextName) {
if (this._locale) {
this.releaseAllKeys()
}
if (!this._contexts[contextName]) {
var globalContext = this._contexts.global
this._contexts[contextName] = {
listeners: [],
targetWindow: globalContext.targetWindow,
targetElement: globalContext.targetElement,
targetPlatform: globalContext.targetPlatform,
targetUserAgent: globalContext.targetUserAgent,
}
}
var context2 = this._contexts[contextName]
this._currentContext = contextName
this._listeners = context2.listeners
this.stop()
this.watch(
context2.targetWindow,
context2.targetElement,
context2.targetPlatform,
context2.targetUserAgent
)
return this
},
},
{
key: 'getContext',
value: function getContext() {
return this._currentContext
},
},
{
key: 'withContext',
value: function withContext(contextName, callback) {
var previousContextName = this.getContext()
this.setContext(contextName)
callback()
this.setContext(previousContextName)
return this
},
},
{
key: 'watch',
value: function watch2(
targetWindow,
targetElement,
targetPlatform,
targetUserAgent
) {
var _this = this
this.stop()
var win =
typeof globalThis !== 'undefined'
? globalThis
: typeof commonjsGlobal !== 'undefined'
? commonjsGlobal
: typeof window !== 'undefined'
? window
: {}
if (!targetWindow) {
if (!win.addEventListener && !win.attachEvent) {
if (this._currentContext === 'global') {
return
}
throw new Error(
'Cannot find window functions addEventListener or attachEvent.'
)
}
targetWindow = win
}
if (typeof targetWindow.nodeType === 'number') {
targetUserAgent = targetPlatform
targetPlatform = targetElement
targetElement = targetWindow
targetWindow = win
}
if (!targetWindow.addEventListener && !targetWindow.attachEvent) {
throw new Error(
'Cannot find addEventListener or attachEvent methods on targetWindow.'
)
}
this._isModernBrowser = !!targetWindow.addEventListener
var userAgent2 =
(targetWindow.navigator && targetWindow.navigator.userAgent) || ''
var platform2 =
(targetWindow.navigator && targetWindow.navigator.platform) || ''
;(targetElement && targetElement !== null) ||
(targetElement = targetWindow.document)
;(targetPlatform && targetPlatform !== null) ||
(targetPlatform = platform2)
;(targetUserAgent && targetUserAgent !== null) ||
(targetUserAgent = userAgent2)
this._targetKeyDownBinding = function (event) {
_this.pressKey(event.keyCode, event)
_this._handleCommandBug(event, platform2)
}
this._targetKeyUpBinding = function (event) {
_this.releaseKey(event.keyCode, event)
}
this._targetResetBinding = function (event) {
_this.releaseAllKeys(event)
}
this._bindEvent(
targetElement,
'keydown',
this._targetKeyDownBinding
)
this._bindEvent(targetElement, 'keyup', this._targetKeyUpBinding)
this._bindEvent(targetWindow, 'focus', this._targetResetBinding)
this._bindEvent(targetWindow, 'blur', this._targetResetBinding)
this._targetElement = targetElement
this._targetWindow = targetWindow
this._targetPlatform = targetPlatform
this._targetUserAgent = targetUserAgent
var currentContext = this._contexts[this._currentContext]
currentContext.targetWindow = this._targetWindow
currentContext.targetElement = this._targetElement
currentContext.targetPlatform = this._targetPlatform
currentContext.targetUserAgent = this._targetUserAgent
return this
},
},
{
key: 'stop',
value: function stop2() {
if (!this._targetElement || !this._targetWindow) {
return
}
this._unbindEvent(
this._targetElement,
'keydown',
this._targetKeyDownBinding
)
this._unbindEvent(
this._targetElement,
'keyup',
this._targetKeyUpBinding
)
this._unbindEvent(
this._targetWindow,
'focus',
this._targetResetBinding
)
this._unbindEvent(
this._targetWindow,
'blur',
this._targetResetBinding
)
this._targetWindow = null
this._targetElement = null
return this
},
},
{
key: 'pressKey',
value: function pressKey(keyCode, event) {
if (this._paused) {
return this
}
if (!this._locale) {
throw new Error('Locale not set')
}
this._locale.pressKey(keyCode)
this._applyBindings(event)
return this
},
},
{
key: 'releaseKey',
value: function releaseKey(keyCode, event) {
if (this._paused) {
return this
}
if (!this._locale) {
throw new Error('Locale not set')
}
this._locale.releaseKey(keyCode)
this._clearBindings(event)
return this
},
},
{
key: 'releaseAllKeys',
value: function releaseAllKeys(event) {
if (this._paused) {
return this
}
if (!this._locale) {
throw new Error('Locale not set')
}
this._locale.pressedKeys.length = 0
this._clearBindings(event)
return this
},
},
{
key: 'pause',
value: function pause() {
if (this._paused) {
return this
}
if (this._locale) {
this.releaseAllKeys()
}
this._paused = true
return this
},
},
{
key: 'resume',
value: function resume() {
this._paused = false
return this
},
},
{
key: 'reset',
value: function reset2() {
this.releaseAllKeys()
this._listeners.length = 0
return this
},
},
{
key: '_bindEvent',
value: function _bindEvent(targetElement, eventName, handler) {
return this._isModernBrowser
? targetElement.addEventListener(eventName, handler, false)
: targetElement.attachEvent('on' + eventName, handler)
},
},
{
key: '_unbindEvent',
value: function _unbindEvent(targetElement, eventName, handler) {
return this._isModernBrowser
? targetElement.removeEventListener(eventName, handler, false)
: targetElement.detachEvent('on' + eventName, handler)
},
},
{
key: '_getGroupedListeners',
value: function _getGroupedListeners() {
var listenerGroups = []
var listenerGroupMap = []
var listeners = this._listeners
if (this._currentContext !== 'global') {
listeners = [].concat(
_toConsumableArray2(listeners),
_toConsumableArray2(this._contexts.global.listeners)
)
}
listeners
.sort(function (a2, b2) {
return (
(b2.keyCombo ? b2.keyCombo.keyNames.length : 0) -
(a2.keyCombo ? a2.keyCombo.keyNames.length : 0)
)
})
.forEach(function (l2) {
var mapIndex = -1
for (var i2 = 0; i2 < listenerGroupMap.length; i2 += 1) {
if (
(listenerGroupMap[i2] === null && l2.keyCombo === null) ||
(listenerGroupMap[i2] !== null &&
listenerGroupMap[i2].isEqual(l2.keyCombo))
) {
mapIndex = i2
}
}
if (mapIndex === -1) {
mapIndex = listenerGroupMap.length
listenerGroupMap.push(l2.keyCombo)
}
if (!listenerGroups[mapIndex]) {
listenerGroups[mapIndex] = []
}
listenerGroups[mapIndex].push(l2)
})
return listenerGroups
},
},
{
key: '_applyBindings',
value: function _applyBindings(event) {
var _this2 = this
var preventRepeat = false
event || (event = {})
event.preventRepeat = function () {
preventRepeat = true
}
event.pressedKeys = this._locale.pressedKeys.slice(0)
var activeTargetKeys = this._locale.activeTargetKeys
var pressedKeys = this._locale.pressedKeys.slice(0)
var listenerGroups = this._getGroupedListeners()
var _loop = function _loop2(i3) {
var listeners = listenerGroups[i3]
var keyCombo = listeners[0].keyCombo
if (
keyCombo === null ||
(keyCombo.check(pressedKeys) &&
activeTargetKeys.some(function (k2) {
return keyCombo.keyNames.includes(k2)
}))
) {
for (var j2 = 0; j2 < listeners.length; j2 += 1) {
var listener = listeners[j2]
if (
!listener.executingHandler &&
listener.pressHandler &&
!listener.preventRepeat
) {
listener.executingHandler = true
listener.pressHandler.call(_this2, event)
listener.executingHandler = false
if (preventRepeat || listener.preventRepeatByDefault) {
listener.preventRepeat = true
preventRepeat = false
}
}
if (_this2._appliedListeners.indexOf(listener) === -1) {
_this2._appliedListeners.push(listener)
}
}
if (keyCombo) {
for (var _j = 0; _j < keyCombo.keyNames.length; _j += 1) {
var index2 = pressedKeys.indexOf(keyCombo.keyNames[_j])
if (index2 !== -1) {
pressedKeys.splice(index2, 1)
_j -= 1
}
}
}
}
}
for (var i2 = 0; i2 < listenerGroups.length; i2 += 1) {
_loop(i2)
}
},
},
{
key: '_clearBindings',
value: function _clearBindings(event) {
event || (event = {})
event.pressedKeys = this._locale.pressedKeys.slice(0)
for (var i2 = 0; i2 < this._appliedListeners.length; i2 += 1) {
var listener = this._appliedListeners[i2]
var keyCombo = listener.keyCombo
if (
keyCombo === null ||
!keyCombo.check(this._locale.pressedKeys)
) {
listener.preventRepeat = false
if (keyCombo !== null || event.pressedKeys.length === 0) {
this._appliedListeners.splice(i2, 1)
i2 -= 1
}
if (!listener.executingHandler && listener.releaseHandler) {
listener.executingHandler = true
listener.releaseHandler.call(this, event)
listener.executingHandler = false
}
}
}
},
},
{
key: '_handleCommandBug',
value: function _handleCommandBug(event, platform2) {
var modifierKeys = [
'shift',
'ctrl',
'alt',
'capslock',
'tab',
'command',
]
if (
platform2.match('Mac') &&
this._locale.pressedKeys.includes('command') &&
!modifierKeys.includes(this._locale.getKeyNames(event.keyCode)[0])
) {
this._targetKeyUpBinding(event)
}
},
},
])
return Keyboard2
})()
function us(locale, platform2, userAgent2) {
locale.bindKeyCode(3, ['cancel'])
locale.bindKeyCode(8, ['backspace'])
locale.bindKeyCode(9, ['tab'])
locale.bindKeyCode(12, ['clear'])
locale.bindKeyCode(13, ['enter'])
locale.bindKeyCode(16, ['shift'])
locale.bindKeyCode(17, ['ctrl'])
locale.bindKeyCode(18, ['alt', 'menu'])
locale.bindKeyCode(19, ['pause', 'break'])
locale.bindKeyCode(20, ['capslock'])
locale.bindKeyCode(27, ['escape', 'esc'])
locale.bindKeyCode(32, ['space', 'spacebar'])
locale.bindKeyCode(33, ['pageup'])
locale.bindKeyCode(34, ['pagedown'])
locale.bindKeyCode(35, ['end'])
locale.bindKeyCode(36, ['home'])
locale.bindKeyCode(37, ['left'])
locale.bindKeyCode(38, ['up'])
locale.bindKeyCode(39, ['right'])
locale.bindKeyCode(40, ['down'])
locale.bindKeyCode(41, ['select'])
locale.bindKeyCode(42, ['printscreen'])
locale.bindKeyCode(43, ['execute'])
locale.bindKeyCode(44, ['snapshot'])
locale.bindKeyCode(45, ['insert', 'ins'])
locale.bindKeyCode(46, ['delete', 'del'])
locale.bindKeyCode(47, ['help'])
locale.bindKeyCode(145, ['scrolllock', 'scroll'])
locale.bindKeyCode(188, ['comma', ','])
locale.bindKeyCode(190, ['period', '.'])
locale.bindKeyCode(191, ['slash', 'forwardslash', '/'])
locale.bindKeyCode(192, ['graveaccent', '`'])
locale.bindKeyCode(219, ['openbracket', '['])
locale.bindKeyCode(220, ['backslash', '\\'])
locale.bindKeyCode(221, ['closebracket', ']'])
locale.bindKeyCode(222, ['apostrophe', "'"])
locale.bindKeyCode(48, ['zero', '0'])
locale.bindKeyCode(49, ['one', '1'])
locale.bindKeyCode(50, ['two', '2'])
locale.bindKeyCode(51, ['three', '3'])
locale.bindKeyCode(52, ['four', '4'])
locale.bindKeyCode(53, ['five', '5'])
locale.bindKeyCode(54, ['six', '6'])
locale.bindKeyCode(55, ['seven', '7'])
locale.bindKeyCode(56, ['eight', '8'])
locale.bindKeyCode(57, ['nine', '9'])
locale.bindKeyCode(96, ['numzero', 'num0'])
locale.bindKeyCode(97, ['numone', 'num1'])
locale.bindKeyCode(98, ['numtwo', 'num2'])
locale.bindKeyCode(99, ['numthree', 'num3'])
locale.bindKeyCode(100, ['numfour', 'num4'])
locale.bindKeyCode(101, ['numfive', 'num5'])
locale.bindKeyCode(102, ['numsix', 'num6'])
locale.bindKeyCode(103, ['numseven', 'num7'])
locale.bindKeyCode(104, ['numeight', 'num8'])
locale.bindKeyCode(105, ['numnine', 'num9'])
locale.bindKeyCode(106, ['nummultiply', 'num*'])
locale.bindKeyCode(107, ['numadd', 'num+'])
locale.bindKeyCode(108, ['numenter'])
locale.bindKeyCode(109, ['numsubtract', 'num-'])
locale.bindKeyCode(110, ['numdecimal', 'num.'])
locale.bindKeyCode(111, ['numdivide', 'num/'])
locale.bindKeyCode(144, ['numlock', 'num'])
locale.bindKeyCode(112, ['f1'])
locale.bindKeyCode(113, ['f2'])
locale.bindKeyCode(114, ['f3'])
locale.bindKeyCode(115, ['f4'])
locale.bindKeyCode(116, ['f5'])
locale.bindKeyCode(117, ['f6'])
locale.bindKeyCode(118, ['f7'])
locale.bindKeyCode(119, ['f8'])
locale.bindKeyCode(120, ['f9'])
locale.bindKeyCode(121, ['f10'])
locale.bindKeyCode(122, ['f11'])
locale.bindKeyCode(123, ['f12'])
locale.bindKeyCode(124, ['f13'])
locale.bindKeyCode(125, ['f14'])
locale.bindKeyCode(126, ['f15'])
locale.bindKeyCode(127, ['f16'])
locale.bindKeyCode(128, ['f17'])
locale.bindKeyCode(129, ['f18'])
locale.bindKeyCode(130, ['f19'])
locale.bindKeyCode(131, ['f20'])
locale.bindKeyCode(132, ['f21'])
locale.bindKeyCode(133, ['f22'])
locale.bindKeyCode(134, ['f23'])
locale.bindKeyCode(135, ['f24'])
locale.bindMacro('shift + `', ['tilde', '~'])
locale.bindMacro('shift + 1', ['exclamation', 'exclamationpoint', '!'])
locale.bindMacro('shift + 2', ['at', '@'])
locale.bindMacro('shift + 3', ['number', '#'])
locale.bindMacro('shift + 4', ['dollar', 'dollars', 'dollarsign', '$'])
locale.bindMacro('shift + 5', ['percent', '%'])
locale.bindMacro('shift + 6', ['caret', '^'])
locale.bindMacro('shift + 7', ['ampersand', 'and', '&'])
locale.bindMacro('shift + 8', ['asterisk', '*'])
locale.bindMacro('shift + 9', ['openparen', '('])
locale.bindMacro('shift + 0', ['closeparen', ')'])
locale.bindMacro('shift + -', ['underscore', '_'])
locale.bindMacro('shift + =', ['plus', '+'])
locale.bindMacro('shift + [', ['opencurlybrace', 'opencurlybracket', '{'])
locale.bindMacro('shift + ]', [
'closecurlybrace',
'closecurlybracket',
'}',
])
locale.bindMacro('shift + \\', ['verticalbar', '|'])
locale.bindMacro('shift + ;', ['colon', ':'])
locale.bindMacro("shift + '", ['quotationmark', "'"])
locale.bindMacro('shift + !,', ['openanglebracket', '<'])
locale.bindMacro('shift + .', ['closeanglebracket', '>'])
locale.bindMacro('shift + /', ['questionmark', '?'])
if (platform2.match('Mac')) {
locale.bindMacro('command', ['mod', 'modifier'])
} else {
locale.bindMacro('ctrl', ['mod', 'modifier'])
}
for (var keyCode = 65; keyCode <= 90; keyCode += 1) {
var keyName = String.fromCharCode(keyCode + 32)
var capitalKeyName = String.fromCharCode(keyCode)
locale.bindKeyCode(keyCode, keyName)
locale.bindMacro('shift + ' + keyName, capitalKeyName)
locale.bindMacro('capslock + ' + keyName, capitalKeyName)
}
var semicolonKeyCode = userAgent2.match('Firefox') ? 59 : 186
var dashKeyCode = userAgent2.match('Firefox') ? 173 : 189
var equalKeyCode = userAgent2.match('Firefox') ? 61 : 187
var leftCommandKeyCode
var rightCommandKeyCode
if (
platform2.match('Mac') &&
(userAgent2.match('Safari') || userAgent2.match('Chrome'))
) {
leftCommandKeyCode = 91
rightCommandKeyCode = 93
} else if (platform2.match('Mac') && userAgent2.match('Opera')) {
leftCommandKeyCode = 17
rightCommandKeyCode = 17
} else if (platform2.match('Mac') && userAgent2.match('Firefox')) {
leftCommandKeyCode = 224
rightCommandKeyCode = 224
}
locale.bindKeyCode(semicolonKeyCode, ['semicolon', ';'])
locale.bindKeyCode(dashKeyCode, ['dash', '-'])
locale.bindKeyCode(equalKeyCode, ['equal', 'equalsign', '='])
locale.bindKeyCode(leftCommandKeyCode, [
'command',
'windows',
'win',
'super',
'leftcommand',
'leftwindows',
'leftwin',
'leftsuper',
])
locale.bindKeyCode(rightCommandKeyCode, [
'command',
'windows',
'win',
'super',
'rightcommand',
'rightwindows',
'rightwin',
'rightsuper',
])
locale.setKillKey('command')
}
var keyboard2 = new Keyboard()
keyboard2.setLocale('us', us)
keyboard2.Keyboard = Keyboard
keyboard2.Locale = Locale
keyboard2.KeyCombo = KeyCombo
return keyboard2
})
})(keyboard)
var keyboardJS = keyboard.exports
const getComponentsPermissionsList = (pageContent) => {
let permissions = {
standardControls: [],
runModule: [],
}
let components = lodash.cloneDeep(pageContent.components)
const addPermissions = {
standardControls: (item2) => {
permissions.standardControls.push({
id: item2.id,
name: item2.name,
})
},
runModule: (item2) => {
permissions.runModule.push({
id: item2.id,
name: item2.name,
permissions: item2.style.permissions,
})
},
}
for (let i2 = 0, iLen = components.length; i2 < iLen; i2++) {
const item2 = components[i2]
addPermissions[item2.moduleType](item2)
}
return permissions
}
const savePicture = (pageContent) => {
const content2 = {
canvasBox: {
width: pageContent.canvasBox.width,
height: pageContent.canvasBox.height,
left: pageContent.canvasBox.left,
top: pageContent.canvasBox.top,
zoom: pageContent.canvasBox.zoom,
backgroundColor: pageContent.canvasBox.backgroundColor,
},
components: pageContent.components,
}
let permissions = getComponentsPermissionsList(pageContent)
const data2 = {
content: JSON.stringify(content2),
permissions: JSON.stringify(permissions),
}
savePicturesContent(pageContent.id, data2).then(
() => {
ElMessage.success('\u4FDD\u5B58\u6210\u529F')
},
(err) => {
ElMessage.error('\u4FDD\u5B58\u5931\u8D25')
console.error(err)
}
)
}
const setComponentsAttr = (
model,
list2,
pageContent,
editPageContentComponents
) => {
if (list2.length <= 1) {
return []
}
var config2 = {
left: { targetKey: 'left', extreme: 'min' },
right: { targetKey: 'left', extreme: 'max' },
top: { targetKey: 'top', extreme: 'min' },
bottom: { targetKey: 'top', extreme: 'max' },
setSameheight: { targetKey: 'height', extreme: 'max' },
setSameWidth: { targetKey: 'width', extreme: 'max' },
}
if (!config2[model]) {
return []
}
let targetKey = config2[model].targetKey
let extreme = config2[model].extreme
let _list = lodash.cloneDeep(list2)
let targetValue = 0
_list.forEach((item2, i2) => {
const val2 = item2.style[targetKey]
if (extreme === 'max') {
if (targetValue < val2) targetValue = val2
}
if (extreme === 'min') {
if (i2 === 0) targetValue = val2
if (targetValue > val2) targetValue = val2
}
})
for (let i2 = 0, iLen = _list.length; i2 < iLen; i2++) {
let item2 = _list[i2]
if (item2.style[targetKey] === targetValue) continue
item2.style[targetKey] = targetValue
for (let n2 = 0, nLen = pageContent.components.length; n2 < nLen; n2++) {
const element = pageContent.components[n2]
if (item2.id === element.id) {
editPageContentComponents(item2, n2)
}
}
}
return _list
}
const setRightOrBottomAlign = (
model,
list2,
pageContent,
editPageContentComponents
) => {
if (list2.length <= 1) {
return []
}
var config2 = {
right: { targetKey: 'left', volume: 'width' },
bottom: { targetKey: 'top', volume: 'height' },
}
if (!config2[model]) {
return []
}
let targetKey = config2[model].targetKey
let volume = config2[model].volume
let _list = lodash.cloneDeep(list2)
let targetValue = 0
_list.forEach((item2) => {
const most = item2.style[targetKey] + item2.style[volume]
if (targetValue < most) targetValue = most
})
for (let i2 = 0, iLen = _list.length; i2 < iLen; i2++) {
let item2 = _list[i2]
const most = item2.style[targetKey] + item2.style[volume]
if (most === targetValue) continue
const newValue = targetValue - item2.style[volume]
item2.style[targetKey] = newValue
for (let n2 = 0, nLen = pageContent.components.length; n2 < nLen; n2++) {
const element = pageContent.components[n2]
if (item2.id === element.id) {
editPageContentComponents(item2, n2)
}
}
}
return _list
}
const componentsCenter = (
model,
list2,
pageContent,
editPageContentComponents
) => {
if (list2.length <= 1) {
return []
}
var config2 = {
vertical: { targetKey: 'left', volume: 'width' },
horizontal: { targetKey: 'top', volume: 'height' },
}
if (!config2[model]) {
return []
}
let targetKey = config2[model].targetKey
let volume = config2[model].volume
let _list = lodash.cloneDeep(list2)
let startCoordinates = 0
let endCoordinates = 0
let centerCoordinates = 0
_list.forEach((item2, i2) => {
const start2 = item2.style[targetKey]
const most = start2 + item2.style[volume]
if (i2 === 0) startCoordinates = start2
if (startCoordinates > most) startCoordinates = start2
if (endCoordinates < most) endCoordinates = most
})
centerCoordinates = (endCoordinates - startCoordinates) / 2 + startCoordinates
for (let i2 = 0, iLen = _list.length; i2 < iLen; i2++) {
let item2 = _list[i2]
let center2 = centerCoordinates - item2.style[volume] / 2
item2.style[targetKey] = center2
for (let n2 = 0, nLen = pageContent.components.length; n2 < nLen; n2++) {
const element = pageContent.components[n2]
if (item2.id === element.id) {
editPageContentComponents(item2, n2)
}
}
}
return _list
}
const combination = (list2, pageContent, setPageContentComponents) => {
if (list2.length <= 1) {
return []
}
let copyList = lodash.cloneDeep(list2)
let components = lodash.cloneDeep(pageContent.components)
let _list = []
let selectGroup = []
copyList.forEach((item2) => {
if (item2.type === 'group') {
_list = _list.concat(resolveComponents(item2))
selectGroup.push(item2.id)
} else {
_list.push(item2)
}
})
let left2 = 0
let top2 = 0
let right2 = 0
let bottom2 = 0
_list.forEach((item2, i2) => {
const _left = item2.style.left
const _top = item2.style.top
const _right = _left + item2.style.width
const _bottom = _top + item2.style.height
if (i2 === 0) {
left2 = _left
top2 = _top
}
if (left2 > _left) left2 = _left
if (top2 > _top) top2 = _top
if (right2 < _right) right2 = _right
if (bottom2 < _bottom) bottom2 = _bottom
})
_list.forEach((item2) => {
item2.style.left = item2.style.left - left2
item2.style.top = item2.style.top - top2
})
let component2 = {
id: initUtils.createRandomId(),
name: 'CmsGroupBox',
alias: '\u7EC4\u5408\u7EC4\u4EF6',
type: 'group',
moduleType: 'standardControls',
style: {
width: right2 - left2,
height: bottom2 - top2,
left: left2,
top: top2,
rotate: 0,
opacity: 1,
zIndex: 0,
unit: 'px',
isLock: false,
isHidden: false,
},
data: {
isDisabled: false,
isDblClickEditor: true,
isDrag: false,
},
event: {
click: '',
clickRight: '',
dblclick: '',
mouseover: '',
mouseout: '',
mousemove: '',
},
childs: _list,
}
let newComponents = []
for (let i2 = 0, iLen = components.length; i2 < iLen; i2++) {
const item2 = components[i2]
var isAdd = true
if (!selectGroup.includes(item2.id)) {
for (let n2 = 0, nLen = _list.length; n2 < nLen; n2++) {
const element = _list[n2]
if (item2.id === element.id) {
isAdd = false
break
}
}
} else {
isAdd = false
}
if (isAdd) newComponents.push(item2)
}
newComponents.push(component2)
setPageContentComponents(newComponents)
}
const breakUp = (list2, pageContent, setPageContentComponents) => {
if (!list2.length) {
return []
}
let _list = lodash.cloneDeep(list2)
let components = lodash.cloneDeep(pageContent.components)
let newlist = []
let newComponents = []
let isGroup2 = false
_list.forEach((item2) => {
if (item2.type === 'group') {
isGroup2 = true
newlist = newlist.concat(resolveComponents(item2))
}
})
if (!isGroup2) {
return []
}
components.forEach((item2) => {
if (item2.type !== 'group') newComponents.push(item2)
})
newComponents = [...newComponents, ...newlist]
setPageContentComponents(newComponents)
return newComponents
}
const resolveComponents = (component2) => {
const left2 = component2.style.left
const top2 = component2.style.top
const list2 = lodash.cloneDeep(component2.childs) || []
let newlist = []
list2.forEach((item2) => {
item2.style.left = item2.style.left + left2
item2.style.top = item2.style.top + top2
newlist.push(item2)
})
return newlist
}
const setNewGroupBox = (
component2,
groupComponent,
pageContent,
editPageContentComponents
) => {
let groupData2 = groupComponent
let list2 = JSON.parse(JSON.stringify(pageContent.components))
if (groupData2.type === 'group') {
let childs = JSON.parse(JSON.stringify(groupData2.childs))
let groupDataStyle = groupData2.style
let topList = []
let leftList = []
let widthList = []
let heightList = []
childs.forEach((item2) => {
let child = item2
if (child.id === component2.id) {
child.style = component2.style
}
let childStyle = child.style
childStyle.top = childStyle.top + groupDataStyle.top
childStyle.left = childStyle.left + groupDataStyle.left
topList.push(childStyle.top)
leftList.push(childStyle.left)
widthList.push(childStyle.left + childStyle.width)
heightList.push(childStyle.top + childStyle.height)
})
let newTop = Math.min.apply(null, topList)
let newLeft = Math.min.apply(null, leftList)
let newWidth = Math.max.apply(null, widthList)
let newHeight = Math.max.apply(null, heightList)
groupDataStyle.top = newTop
groupDataStyle.left = newLeft
groupDataStyle.width = newWidth - newLeft
groupDataStyle.height = newHeight - newTop
childs.forEach((item2) => {
let child = item2
let childStyle = child.style
childStyle.top = childStyle.top - newTop
childStyle.left = childStyle.left - newLeft
})
groupData2.childs = childs
}
for (let i2 = 0; i2 < list2.length; i2++) {
let item2 = list2[i2]
if (groupData2.id === item2.id) {
item2 = groupData2
editPageContentComponents(item2, i2)
break
}
}
}
const setZIndex = (model, list2, pageContent, editPageContentComponents) => {
if (!list2.length) {
return []
}
let _list = lodash.cloneDeep(list2)
let zIndex2 = 0
pageContent.components.forEach((item2, i2) => {
if (model === 'topZIndex') {
if (zIndex2 < item2.style.zIndex) zIndex2 = item2.style.zIndex
}
if (model === 'bottomZIndex') {
if (i2 === 0) zIndex2 = item2.style.zIndex
if (zIndex2 > item2.style.zIndex) zIndex2 = item2.style.zIndex
}
})
_list.forEach((item2) => {
if (model === 'topZIndex') {
item2.style.zIndex = ++zIndex2
} else {
if (zIndex2 >= 1) item2.style.zIndex = --zIndex2
}
for (let i2 = 0, iLen = pageContent.components.length; i2 < iLen; i2++) {
const element = pageContent.components[i2]
if (item2.id === element.id) {
editPageContentComponents(item2, i2)
}
}
})
}
const equidistantDistribution = (
model,
list2,
pageContent,
editPageContentComponents
) => {
if (list2.length <= 2) {
return []
}
var config2 = {
vertical: { targetKey: 'top', volume: 'height' },
horizontal: { targetKey: 'left', volume: 'width' },
}
if (!config2[model]) {
return []
}
let targetKey = config2[model].targetKey
let volume = config2[model].volume
let _list = lodash.cloneDeep(list2)
_list.sort((item1, item2) => {
return item1.style[targetKey] - item2.style[targetKey]
})
let startCoordinates = 0
let endCoordinates = 0
let range3 = 0
_list.forEach((item2, i2) => {
const most = item2.style[targetKey] + item2.style[volume] / 2
if (i2 === 0) startCoordinates = most
if (startCoordinates > most) startCoordinates = most
if (endCoordinates < most) endCoordinates = most
})
range3 = (endCoordinates - startCoordinates) / (_list.length - 1)
for (let i2 = 0, iLen = _list.length; i2 < iLen; i2++) {
let item2 = _list[i2]
if (i2 === 0 || i2 === _list.length - 1) continue
const thisKey = item2.style[targetKey]
const beforeKey = _list[i2 - 1].style[targetKey]
const offset2 = thisKey - beforeKey
if (offset2 < range3) {
item2.style[targetKey] = item2.style[targetKey] + (range3 - offset2)
} else {
item2.style[targetKey] = item2.style[targetKey] + (range3 - offset2)
}
for (let n2 = 0, nLen = pageContent.components.length; n2 < nLen; n2++) {
const element = pageContent.components[n2]
if (item2.id === element.id) {
editPageContentComponents(item2, n2)
}
}
}
return _list
}
const paste = (cacheComponents, pageContent, setPageContentComponents) => {
if (!cacheComponents.length) {
return []
}
const offset2 = 10
let newCacheComponents = []
const _components = lodash.cloneDeep(pageContent.components)
let _cacheComponents = lodash.cloneDeep(cacheComponents)
_cacheComponents.forEach((item2) => {
item2.id = initUtils.createRandomId()
item2.style.left = item2.style.left + offset2
item2.style.top = item2.style.top + offset2
})
newCacheComponents = _cacheComponents
setPageContentComponents([..._components, ..._cacheComponents])
return newCacheComponents
}
const shear = (list2, pageContent, setPageContentComponents) => {
if (!list2.length) {
return []
}
let _list = lodash.cloneDeep(list2)
let _components = lodash.cloneDeep(pageContent.components)
let newComponents = []
for (let i2 = 0, iLen = _components.length; i2 < iLen; i2++) {
const item2 = _components[i2]
let isSelect = false
for (let n2 = 0, nLen = _list.length; n2 < nLen; n2++) {
const element = _list[n2]
if (item2.id === element.id) {
isSelect = true
break
}
}
if (!isSelect) newComponents.push(item2)
}
setPageContentComponents(newComponents)
return newComponents
}
var standardControls_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$g = (n2) => (
pushScopeId('data-v-6aead6c8'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$p = {
key: 0,
class: 'component-standard-controls',
}
const _hoisted_2$o = { class: 'component-box-module-search-input' }
const _hoisted_3$m = { class: 'component-standard-controls-collapse' }
const _hoisted_4$h = {
draggable: 'false',
unselectable: 'on',
onselectstart: 'return false;',
class: 'component-standard-controls-collapse-title',
}
const _hoisted_5$e = /* @__PURE__ */ _withScopeId$g(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-xiala2' },
null,
-1
)
)
const _hoisted_6$b = [_hoisted_5$e]
const _hoisted_7$a = { class: 'component-standard-controls-list' }
const _hoisted_8$a = ['onMousedown']
const _hoisted_9$a = {
draggable: 'false',
unselectable: 'on',
onselectstart: 'return false;',
}
const _sfc_main$q = /* @__PURE__ */ defineComponent({
props: {
modelType: {
type: String,
required: false,
default: () => {
return ''
},
},
components: {
type: Array,
required: false,
default: () => {
return []
},
},
},
emits: ['list-item-mouse-down'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const controlTypeList = [
{
type: 'base',
title: '\u57FA\u7840',
},
{
type: 'readWrite',
title: '\u8BFB\u5199',
},
{
type: 'jump',
title: '\u8DF3\u8F6C',
},
]
let searchKeyWord = ref('')
let activeList = ref(
computed(() => {
let list2 = []
controlTypeList.forEach((item2, index2) => {
list2.push(index2)
})
return list2
})
)
let componentsList = ref(props2.components)
let collapseList = computed(() => {
let list2 = []
controlTypeList.forEach((item1, index1) => {
let childList = []
componentsList.value.forEach((item2) => {
if (item2.controlType === item1.type) {
childList.push(item2)
}
})
list2.push({
id: index1,
title: item1.title,
components: childList,
isActive: true,
})
})
return list2
})
const searchInputChange = (val2) => {
componentsList.value = []
props2.components.forEach((item2) => {
if (item2.alias.indexOf(val2) > -1) {
componentsList.value.push(item2)
}
})
}
const listItemMouseDown = (el2, item2) => {
emit2('list-item-mouse-down', el2, item2)
}
const collapseChange = (event, item2) => {
item2.isActive = !item2.isActive
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_collapse_item = resolveComponent('el-collapse-item')
const _component_el_collapse = resolveComponent('el-collapse')
return __props2.modelType === 'standardControls'
? (openBlock(),
createElementBlock('div', _hoisted_1$p, [
createElementVNode('div', _hoisted_2$o, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x',
modelValue: unref(searchKeyWord),
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
isRef(searchKeyWord)
? (searchKeyWord.value = $event)
: (searchKeyWord = $event)),
onChange: searchInputChange,
},
null,
8,
['modelValue']
),
]),
createElementVNode('div', _hoisted_3$m, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(collapseList), (item2, index2) => {
return (
openBlock(),
createBlock(
_component_el_collapse,
{
onChange: ($event) => collapseChange($event, item2),
key: 'collapse' + index2,
modelValue: unref(activeList),
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
isRef(activeList)
? (activeList.value = $event)
: (activeList = $event)),
},
{
default: withCtx(() => [
createVNode$1(
_component_el_collapse_item,
{
name: item2.id,
},
{
title: withCtx(() => [
createElementVNode('div', _hoisted_4$h, [
createElementVNode(
'div',
{
class: normalizeClass([
'component-standard-controls-collapse-icon',
{ 'is-ative': item2.isActive },
]),
},
_hoisted_6$b,
2
),
createElementVNode(
'span',
null,
toDisplayString$1(item2.title),
1
),
]),
]),
default: withCtx(() => [
createElementVNode('div', _hoisted_7$a, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
item2.components,
(item1, index22) => {
return (
openBlock(),
createElementBlock(
'div',
{
key: index22,
class:
'component-standard-controls-list-item',
onMousedown: ($event) =>
listItemMouseDown(
$event,
item1
),
onselectstart: 'return false',
},
[
createElementVNode('div', null, [
createElementVNode(
'span',
{
class: normalizeClass([
'iconfont component-standard-controls-list-item-icon',
item1.icon,
]),
},
null,
2
),
]),
createElementVNode(
'div',
_hoisted_9$a,
toDisplayString$1(item1.alias),
1
),
],
40,
_hoisted_8$a
)
)
}
),
128
)),
]),
]),
_: 2,
},
1032,
['name']
),
]),
_: 2,
},
1032,
['onChange', 'modelValue']
)
)
}),
128
)),
]),
]))
: createCommentVNode('', true)
}
},
})
var StandardControls = /* @__PURE__ */ _export_sfc(_sfc_main$q, [
['__scopeId', 'data-v-6aead6c8'],
])
var standardControls = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: StandardControls,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var runModule_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$o = {
key: 0,
class: 'component-run-module',
}
const _hoisted_2$n = { class: 'component-run-module-list' }
const _hoisted_3$l = ['onMousedown']
const _sfc_main$p = /* @__PURE__ */ defineComponent({
props: {
modelType: {
type: String,
required: false,
default: () => {
return ''
},
},
components: {
type: Array,
required: false,
default: () => {
return []
},
},
},
emits: ['list-item-mouse-down'],
setup(__props2, { emit: emit2 }) {
const listItemMouseDown = (el2, item2) => {
emit2('list-item-mouse-down', el2, item2)
}
return (_ctx, _cache) => {
return __props2.modelType === 'runModule'
? (openBlock(),
createElementBlock('div', _hoisted_1$o, [
createElementVNode('div', _hoisted_2$n, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(__props2.components, (item1, index2) => {
return (
openBlock(),
createElementBlock(
'div',
{
key: index2,
class: 'component-run-module-list-item',
onMousedown: ($event) =>
listItemMouseDown($event, item1),
onselectstart: 'return false',
},
[
createElementVNode('div', null, [
createElementVNode(
'span',
{
class: normalizeClass([
'iconfont component-run-module-list-item-icon',
item1.icon,
]),
},
null,
2
),
]),
createElementVNode(
'div',
null,
toDisplayString$1(item1.alias),
1
),
],
40,
_hoisted_3$l
)
)
}),
128
)),
]),
]))
: createCommentVNode('', true)
}
},
})
var runModule = /* @__PURE__ */ _export_sfc(_sfc_main$p, [
['__scopeId', 'data-v-0c09e9a9'],
])
var runModule$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: runModule,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var defaultModule_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$n = ['onClick']
const _hoisted_2$m = { class: 'component-box-module-header' }
const _hoisted_3$k = { class: 'component-box-module-header-title' }
const _sfc_main$o = /* @__PURE__ */ defineComponent({
props: {
setStyle: {
type: Object,
required: false,
default: () => {
return {}
},
},
moduleComponent: {
type: Object,
required: false,
default: () => {
return {}
},
},
},
emits: [
'component-box-module-click',
'add-component',
'component-box-header-click',
],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const listItemMouseDown = (el2, item2) => {
el2.stopPropagation()
el2.preventDefault()
let style2 = {
height: 100,
width: 200,
backgroundColor: '#F2F4F6',
}
if (item2.componentName.props) {
style2 = { ...item2.componentName.props.setStyle?.default() }
}
let createElement2 = document.createElement('div')
createElement2.style.height = style2.height + 'px'
createElement2.style.width = style2.width + 'px'
createElement2.style.background =
style2.backgroundColor && style2.backgroundColor != 'rgba(0, 0, 0, 0)'
? style2.backgroundColor
: '#F2F4F6'
createElement2.style.position = 'fixed'
createElement2.style.border = '1px dashed #949494'
createElement2.style.top = el2.pageY + 'px'
createElement2.style.left = el2.pageX - style2.width / 2 + 'px'
createElement2.style.zIndex = '100000'
document.body.appendChild(createElement2)
const move = (moveEven) => {
createElement2.style.top = moveEven.pageY + 'px'
createElement2.style.left = moveEven.pageX - style2.width / 2 + 'px'
return false
}
const up = (upEvent) => {
if (createElement2) {
document.body.removeChild(createElement2)
}
let mousePoint = {
pageX: upEvent.pageX,
pageY: upEvent.pageY,
}
let componentData = item2
let moduleData = {
name: props2.moduleComponent.name,
title: props2.moduleComponent.title,
moduleType: props2.moduleComponent.moduleType,
componentData,
}
emit2('add-component', moduleData, mousePoint)
document.removeEventListener('mousemove', move)
document.removeEventListener('mouseup', up)
}
document.addEventListener('mousemove', move)
document.addEventListener('mouseup', up)
}
const componentBoxModuleClick = () => {
emit2('component-box-module-click')
}
const componentBoxHeaderClick = (el2) => {
el2.stopPropagation()
el2.preventDefault()
emit2('component-box-header-click')
}
onMounted(() => {})
return (_ctx, _cache) => {
const _component_cms_drag_component =
resolveComponent('cms-drag-component')
return (
openBlock(),
createBlock(
_component_cms_drag_component,
{
defaultStyle: __props2.setStyle,
style: normalizeStyle$1({ zIndex: __props2.setStyle.zIndex }),
active: true,
},
{
default: withCtx(() => [
createElementVNode(
'div',
{
style: normalizeStyle$1({
width: __props2.setStyle.width + 'px',
height: __props2.setStyle.height + 'px',
background: __props2.setStyle.background,
}),
class: 'component-box-module',
onClick: withModifiers(componentBoxModuleClick, ['stop']),
},
[
createElementVNode('div', _hoisted_2$m, [
createElementVNode(
'span',
_hoisted_3$k,
toDisplayString$1(__props2.moduleComponent.title),
1
),
createElementVNode(
'div',
{ class: 'component-box-module-header-closeicon' },
[
createElementVNode('span', {
class: 'iconfont icon-guanbi',
onClick: componentBoxHeaderClick,
}),
]
),
]),
__props2.moduleComponent.showModule
? (openBlock(),
createBlock(
StandardControls,
{
key: 0,
onListItemMouseDown: listItemMouseDown,
components: __props2.moduleComponent.components,
modelType: __props2.moduleComponent.moduleType,
},
null,
8,
['components', 'modelType']
))
: createCommentVNode('', true),
__props2.moduleComponent.showModule
? (openBlock(),
createBlock(
runModule,
{
key: 1,
onListItemMouseDown: listItemMouseDown,
components: __props2.moduleComponent.components,
modelType: __props2.moduleComponent.moduleType,
},
null,
8,
['components', 'modelType']
))
: createCommentVNode('', true),
],
12,
_hoisted_1$n
),
]),
_: 1,
},
8,
['defaultStyle', 'style']
)
)
}
},
})
var DefaultModule = /* @__PURE__ */ _export_sfc(_sfc_main$o, [
['__scopeId', 'data-v-72f26920'],
])
var defaultModule = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: DefaultModule,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var index_vue_vue_type_style_index_0_scoped_true_lang$3 = ''
const _hoisted_1$m = { class: 'component-box-inset' }
const _hoisted_2$l = ['onClick']
const _sfc_main$n = /* @__PURE__ */ defineComponent({
emits: ['mousedown', 'component-box-click', 'add-component'],
setup(__props2, { emit: emit2 }) {
const componentBox = ref()
let isActive = ref(-1)
let moduleList = ref([])
const componentBoxClick = (event, item2, i2) => {
isActive.value = i2
emit2('component-box-click', item2, i2)
moduleList.value[i2].standardModuleStyle.top =
componentBox.value.children[i2].offsetTop
moduleList.value[i2].standardModuleStyle.left =
-moduleList.value[i2].standardModuleStyle.width - 65
setModuleZIndex(i2)
}
const componentBoxModuleClick = (event, item2, i2) => {
setModuleZIndex(i2)
}
const setModuleZIndex = (i2) => {
if (
moduleList.value[i2].standardModuleStyle.zIndex <
componentBox.value.children.length
) {
moduleList.value.forEach((item2) => {
item2.standardModuleStyle.zIndex -= 1
})
moduleList.value[i2].standardModuleStyle.zIndex =
componentBox.value.children.length
}
moduleList.value[i2].showModule = true
isActive.value = i2
}
const addComponent = (componentData, mousePoint) => {
emit2('add-component', componentData, mousePoint)
}
const componentBoxHeaderClick = (item2) => {
item2.showModule = false
let zIndex2 = -1
isActive.value = -1
moduleList.value.forEach((item22, index2) => {
if (item22.standardModuleStyle.zIndex > zIndex2 && item22.showModule) {
zIndex2 = item22.standardModuleStyle.zIndex
isActive.value = index2
}
})
}
const setModuleList = () => {
for (let i2 = 0; i2 < 4; i2++) {
let moduleData = setModuleData(
'standardControls',
'\u6807\u51C6\u63A7\u4EF6',
false,
'standardControls',
284,
600,
i2,
[],
'icon-biaozhunkongjian'
)
switch (i2) {
case 0:
moduleData = setModuleData(
'standardControls',
'\u6807\u51C6\u63A7\u4EF6',
false,
'standardControls',
284,
600,
i2,
[],
'icon-biaozhunkongjian'
)
break
case 1:
moduleData = setModuleData(
'runModule',
'\u8FD0\u884C\u6A21\u5757',
false,
'runModule',
284,
600,
i2,
[],
'icon-yunhangmokuai'
)
break
case 2:
moduleData = setModuleData(
'galleryMaterial',
'\u56FE\u5E93\u7D20\u6750',
false,
'galleryMaterial',
390,
600,
i2,
[],
'icon-tupiansucai'
)
break
case 3:
moduleData = setModuleData(
'pictureExample',
'\u753B\u9762\u793A\u4F8B',
false,
'pictureExample',
284,
600,
i2,
[],
'icon-huamianshili'
)
break
}
moduleList.value.push(moduleData)
}
}
const setModuleData = (
name2,
title,
showModule,
moduleType,
width,
height,
zIndex2,
components,
icon
) => {
let moduleData = {
name: name2,
title,
showModule,
moduleType,
components,
icon,
standardModuleStyle: {
width,
height,
top: 0,
left: 0,
zIndex: zIndex2,
},
}
return moduleData
}
onMounted(() => {
setModuleList()
})
return (_ctx, _cache) => {
const _component_el_tooltip = resolveComponent('el-tooltip')
return (
openBlock(),
createElementBlock(
'div',
{
ref_key: 'componentBox',
ref: componentBox,
class: 'component-box',
},
[
createElementVNode('div', _hoisted_1$m, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(moduleList), (item2, i2) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: 'component',
key: i2,
},
[
createVNode$1(
_component_el_tooltip,
{
'popper-class': 'cms-el-tooltip',
content: item2.title,
placement: 'left',
},
{
default: withCtx(() => [
createElementVNode(
'div',
{
onClick: withModifiers(
($event) =>
componentBoxClick($event, item2, i2),
['stop']
),
class: normalizeClass([
'component-item-box',
{ 'is-active': unref(isActive) == i2 },
]),
},
[
createElementVNode(
'span',
{
class: normalizeClass([
item2.icon,
'iconfont',
]),
},
null,
2
),
],
10,
_hoisted_2$l
),
]),
_: 2,
},
1032,
['content']
),
]
)
)
}),
128
)),
]),
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(moduleList), (item2, index2) => {
return withDirectives(
(openBlock(),
createBlock(
DefaultModule,
{
key: 'module' + index2,
setStyle: item2.standardModuleStyle,
moduleComponent: item2,
onComponentBoxModuleClick: ($event) =>
componentBoxModuleClick($event, item2, index2),
onAddComponent: addComponent,
onComponentBoxHeaderClick: ($event) =>
componentBoxHeaderClick(item2),
},
null,
8,
[
'setStyle',
'moduleComponent',
'onComponentBoxModuleClick',
'onComponentBoxHeaderClick',
]
)),
[[vShow, item2.showModule]]
)
}),
128
)),
],
512
)
)
}
},
})
var ComponentBox = /* @__PURE__ */ _export_sfc(_sfc_main$n, [
['__scopeId', 'data-v-76e00d32'],
])
var index$8 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ComponentBox,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var index_vue_vue_type_style_index_0_scoped_true_lang$2 = ''
const _withScopeId$f = (n2) => (
pushScopeId('data-v-44e66124'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$l = { class: 'picture-production' }
const _hoisted_2$k = { class: 'picture-production-centent flex' }
const _hoisted_3$j = { class: 'picture-left' }
const _hoisted_4$g = { class: 'page' }
const _hoisted_5$d = /* @__PURE__ */ _withScopeId$f(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
[
/* @__PURE__ */ createElementVNode('i', {
class: 'iconfont icon-yemian1 title_img',
}),
/* @__PURE__ */ createElementVNode('span', null, '\u9875\u9762'),
],
-1
)
)
const _hoisted_6$a = { class: 'object' }
const _hoisted_7$9 = /* @__PURE__ */ _withScopeId$f(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
[
/* @__PURE__ */ createElementVNode('i', {
class: 'iconfont icon-duixiang title_img',
}),
/* @__PURE__ */ createElementVNode('span', null, '\u5BF9\u8C61'),
],
-1
)
)
const _hoisted_8$9 = { class: 'header-operation' }
const _hoisted_9$9 = { class: 'undo-redo' }
const _hoisted_10$9 = { class: 'flex' }
const _hoisted_11$7 = /* @__PURE__ */ _withScopeId$f(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-chexiao' },
null,
-1
)
)
const _hoisted_12$7 = /* @__PURE__ */ _withScopeId$f(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-huifu' },
null,
-1
)
)
const _hoisted_13$6 = {
class: 'box flex',
'data-id': 'box',
}
const _hoisted_14$6 = /* @__PURE__ */ _withScopeId$f(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'shortcut-key-description flex' },
[
/* @__PURE__ */ createElementVNode('div', { class: 'icon flex' }, [
/* @__PURE__ */ createElementVNode('i', {
class: 'iconfont icon-bangzhu',
}),
]),
],
-1
)
)
const _hoisted_15$6 = {
key: 1,
class: 'picture-right',
}
const _hoisted_16$6 = { class: 'tab flex' }
const _hoisted_17$6 = { class: 'config' }
const _hoisted_18$6 = { id: 'test-box' }
const _sfc_main$m = /* @__PURE__ */ defineComponent({
setup(__props2) {
const route = useRoute()
const store2 = useStore()
const pictureProductionVuex = computed(
() => store2.state['picture-production'].account
)
const scalingZoomRef = ref()
const dragChooseComponentBoxRef = ref()
let pictureCanvas = ref()
let selectComponent = ref(
lodash.cloneDeep(pictureProductionVuex.value.constant.selectComponent)
)
let mousePoint = ref({ pageX: 0, pageY: 0 })
let pageContentHistory = reactive({
list: [],
})
let keyDownShift = false
const pictureCanvasStyle = computed(() => {
let canvasBox = pictureProductionVuex.value.pageContent.canvasBox
let style2 = `
width: ${canvasBox.width}px;
height: ${canvasBox.height}px;
top: ${canvasBox.top}px;
left: ${canvasBox.left}px;
transform: scale(${canvasBox.zoom / 100});
background:${canvasBox.backgroundColor}
`
return style2
})
const selectComponentIdList = computed(() => {
let list2 = []
selectComponent.value.list.forEach((item2) => {
list2.push(item2.id)
})
return list2
})
const componentCommonAttribute = computed(() => {
let componentType = ''
let obj = {
width: pictureProductionVuex.value.pageContent.canvasBox.width,
height: pictureProductionVuex.value.pageContent.canvasBox.height,
backgroundColor:
pictureProductionVuex.value.pageContent.canvasBox.backgroundColor,
}
if (!selectComponent.value.list.length) return obj
const selectList = lodash.cloneDeep(selectComponent.value.list)
for (let i2 = 0, iLen = selectList.length; i2 < iLen; i2++) {
const item2 = selectList[i2]
if (!componentType) {
componentType = item2.type
} else if (componentType !== item2.type) {
componentType = ''
break
}
}
if (componentType) {
return selectList[0].style
}
let styleList = []
selectList.forEach((item2) => {
const style2 = lodash.cloneDeep(item2.style)
styleList.push(style2)
})
obj = initUtils.getObjectCommonAttribute(styleList)
if (obj.function) delete obj.function
return obj
})
const componentObjectComponents = computed(() => {
let components = lodash.cloneDeep(
pictureProductionVuex.value.pageContent.components
)
return components.reverse()
})
const setPageContent = (baseData) => {
store2.commit('picture-production/setPageContent', baseData)
}
const addPageContentComponents = (baseData) => {
store2.commit('picture-production/addPageContentComponents', baseData)
}
const setPageContentComponents = (baseData) => {
store2.commit('picture-production/setPageContentComponents', baseData)
}
const editPageContentComponents = (components, index2) => {
store2.commit('picture-production/editPageContentComponents', {
components,
index: index2,
})
}
const setCacheComponents = (components) => {
store2.commit('picture-production/setCacheComponents', components)
}
const dragChooseComponentEnd = (x2, y2, w2, h2) => {
const CanvasCoordinates = getCanvasSpatialCoordinates()
const zoom = pictureProductionVuex.value.pageContent.canvasBox.zoom / 100
const bx = Number((x2 - CanvasCoordinates.x).toFixed(0))
const by = Number((y2 - CanvasCoordinates.y).toFixed(0))
const bw = Number(w2.toFixed(0))
const bh = Number(h2.toFixed(0))
let list2 = []
pictureProductionVuex.value.pageContent.components.forEach((item2) => {
const cx = item2.style.left * zoom
const cy = item2.style.top * zoom
const cw = item2.style.width * zoom
const ch = item2.style.height * zoom
if (
cx > bx &&
cx < bx + bw &&
cy > by &&
cy < by + bh &&
cx + cw < bx + bw &&
cy + ch < by + bh
)
list2.push(item2)
})
selectComponent.value.list = list2
}
const selectCurComponent = (component2) => {
let list2 = JSON.parse(
JSON.stringify(pictureProductionVuex.value.pageContent.components)
)
for (let i2 = 0, iLen = list2.length; i2 < iLen; i2++) {
const item2 = list2[i2]
if (component2.id === item2.id) {
editPageContentComponents(component2, i2)
break
}
}
if (keyDownShift) {
let selectList = lodash.cloneDeep(selectComponent.value.list)
for (let i2 = 0, iLen = selectList.length; i2 < iLen; i2++) {
const item2 = selectList[i2]
if (component2.id === item2.id) {
selectList.splice(i2, 1)
break
}
}
if (selectComponent.value.list.length != selectList.length) {
selectComponent.value.list = selectList
} else {
selectComponent.value.list.push(component2)
}
} else {
selectComponent.value.list = [component2]
}
}
const handleMouseUp = (component2, dragDotRef, groupData2) => {
if (groupData2 && groupData2.id) {
setNewGroupBox(
component2,
groupData2,
pictureProductionVuex.value.pageContent,
editPageContentComponents
)
}
}
const handleMouseUpOnPoint = (
component2,
point,
downEvent,
dragDotRef,
groupData2
) => {
if (groupData2 && groupData2.id) {
setNewGroupBox(
component2,
groupData2,
pictureProductionVuex.value.pageContent,
editPageContentComponents
)
}
}
const handleMouseMoveOnPoint = (component2) => {
selectCurComponent(component2)
}
const handleMouseDownOnComponentDirectionPoint = (data2) => {}
const handleMouseDownOnComponentRotat = (data2) => {}
const componentOnBlur = (allData, componentRef, id2, setValue) => {
let components = lodash.cloneDeep(
pictureProductionVuex.value.pageContent.components
)
for (let n2 = 0, nLen = components.length; n2 < nLen; n2++) {
let component2 = lodash.cloneDeep(components[n2])
if (component2.id === allData.id) {
if (component2.data.setValue != null) {
component2.data.setValue = setValue
} else {
component2.style.function = allData.style.function
}
editPageContentComponents(component2, n2)
break
}
}
}
const getCanvasSpatialCoordinates = () => {
let spatialCoordinates = pictureCanvas.value?.getBoundingClientRect() || {
bottom: 0,
height: 0,
left: 0,
right: 0,
top: 0,
width: 0,
x: 0,
y: 0,
toJSON: () => {},
}
return spatialCoordinates
}
const componentBoxAddComponent = (moduleData) => {
let styleWidth =
moduleData.componentData.componentName.props.setStyle.default().width
const zoom = pictureProductionVuex.value.pageContent.canvasBox.zoom / 100
const CanvasCoordinates = getCanvasSpatialCoordinates()
const left2 =
(mousePoint.value.pageX - CanvasCoordinates.x - styleWidth / 2) / zoom
const top2 = (mousePoint.value.pageY - CanvasCoordinates.y) / zoom
let componentData = {
id: initUtils.createRandomId(),
name: moduleData.componentData.name,
alias: moduleData.componentData.alias,
type: moduleData.componentData.type,
moduleType: moduleData.moduleType,
style: {
...moduleData.componentData.componentName.props.setStyle.default(),
...moduleData.componentData.setStyle,
top: top2,
left: left2,
zIndex: 0,
},
data: {
...moduleData.componentData.data,
},
event: {
click: '',
clickRight: '',
dblclick: '',
mouseover: '',
mouseout: '',
mousemove: '',
},
}
const fun = {
standardControls: () => {},
runModule: () => {
for (
let i2 = 0,
iLen = pictureProductionVuex.value.pageContent.components.length;
i2 < iLen;
i2++
) {
const item2 = pictureProductionVuex.value.pageContent.components[i2]
if (item2.moduleType === 'runModule') {
pictureProductionVuex.value.pageContent.components.splice(i2, 1)
break
}
}
componentData.style.width =
pictureProductionVuex.value.pageContent.canvasBox.width
componentData.style.height =
pictureProductionVuex.value.pageContent.canvasBox.height
componentData.style.top = 0
componentData.style.left = 0
},
galleryMaterial: () => {},
}
fun[moduleData.moduleType]()
addPageContentComponents(componentData)
selectComponent.value.list = [componentData]
}
const setComponentStyleAttribute2 = (data2) => {
if (!selectComponent.value.list.length) {
let pageContent = lodash.cloneDeep(
pictureProductionVuex.value.pageContent
)
pageContent.canvasBox = {
...pageContent.canvasBox,
...data2,
}
setPageContent(pageContent)
return
}
let components = lodash.cloneDeep(
pictureProductionVuex.value.pageContent.components
)
selectComponent.value.list.forEach((item2) => {
for (let n2 = 0, nLen = components.length; n2 < nLen; n2++) {
const element = components[n2]
if (item2.id === element.id) {
let component2 = lodash.cloneDeep(element)
initUtils.objRecursion(
componentCommonAttribute.value,
data2,
component2.style
)
break
}
}
})
}
if (!mousePoint.value) {
setComponentStyleAttribute2('')
}
const setComponentStyleAttribute = (data2) => {
if (!selectComponent.value.list.length) {
let pageContent = lodash.cloneDeep(
pictureProductionVuex.value.pageContent
)
pageContent.canvasBox = {
...pageContent.canvasBox,
...data2,
}
setPageContent(pageContent)
return
}
const obj = initUtils.getsTheChangedField(
componentCommonAttribute.value,
data2
)
if (obj.val === void 0 && !data2.function) return
let components = lodash.cloneDeep(
pictureProductionVuex.value.pageContent.components
)
let newList = []
selectComponent.value.list.forEach((item2) => {
for (let n2 = 0, nLen = components.length; n2 < nLen; n2++) {
let component2 = lodash.cloneDeep(components[n2])
if (component2.id === item2.id) {
if (obj.key) component2.style[obj.key] = obj.val
if (data2.function) component2.style.function = data2.function
if (data2.boxShadow) component2.style.boxShadow = data2.boxShadow
newList.push(component2)
editPageContentComponents(component2, n2)
break
}
}
})
selectComponent.value.list = newList
}
const getObjData = (data2) => {}
const componentObjectReturnData = (node2, type4) => {
const instruction = {
isLock: () => {
for (
let i2 = 0,
iLen = pictureProductionVuex.value.pageContent.components.length;
i2 < iLen;
i2++
) {
const item2 = pictureProductionVuex.value.pageContent.components[i2]
if (item2.id === node2.id) {
let newItem = lodash.cloneDeep(item2)
newItem.style.isLock = !newItem.style.isLock
editPageContentComponents(newItem, i2)
break
}
}
},
isHidden: () => {
for (
let i2 = 0,
iLen = pictureProductionVuex.value.pageContent.components.length;
i2 < iLen;
i2++
) {
const item2 = pictureProductionVuex.value.pageContent.components[i2]
if (item2.id === node2.id) {
let newItem = lodash.cloneDeep(item2)
newItem.style.isHidden = !newItem.style.isHidden
editPageContentComponents(newItem, i2)
break
}
}
},
}
if (instruction[type4]) instruction[type4]()
}
const dragMoveCanvas = (model, el2) => {
const drag = initUtils.copy(
pictureProductionVuex.value.pageContent.canvasBox.drag
)
let baseData = initUtils.copy(pictureProductionVuex.value.pageContent)
const fun = {
down: () => {
drag.mousedown = true
drag.initX = el2?.pageX || 0
drag.initY = el2?.pageY || 0
drag.canvasLeftInit =
pictureProductionVuex.value.pageContent.canvasBox.left
drag.canvasTopInit =
pictureProductionVuex.value.pageContent.canvasBox.top
baseData.canvasBox.drag = drag
setPageContent(baseData)
},
move: () => {
if (!drag.mousedown || !drag.space) return
let pageX = el2?.pageX || 0
let pageY = el2?.pageY || 0
let movementX = Math.abs(pageX - drag.initX)
let movementY = Math.abs(pageY - drag.initY)
if (drag.initX - pageX <= 0) {
baseData.canvasBox.left = drag.canvasLeftInit + movementX
} else {
baseData.canvasBox.left = drag.canvasLeftInit - movementX
}
if (drag.initY - pageY <= 0) {
baseData.canvasBox.top = drag.canvasTopInit + movementY
} else {
baseData.canvasBox.top = drag.canvasTopInit - movementY
}
setPageContent(baseData)
},
up: () => {
baseData.canvasBox.drag = initUtils.copy(
pictureProductionVuex.value.constant.pageContent.canvasBox.drag
)
setPageContent(baseData)
},
}
fun[model]()
}
const canvasMousedown = (el2) => {
if (!pictureProductionVuex.value.pageContent.canvasBox.drag.space)
dragChooseComponentBoxRef.value?.dragChooseComponentFun('down', el2)
dragMoveCanvas('down', el2)
}
const moveCanvas = (el2) => {
if (!pictureProductionVuex.value.pageContent.canvasBox.drag.space)
dragChooseComponentBoxRef.value?.dragChooseComponentFun('move', el2)
dragMoveCanvas('move', el2)
}
const pictureCanvasMouseup = (el2) => {
const DOM = el2.target
if (!DOM.dataset.id) return
const fun = {
box: () => {
selectComponent.value = initUtils.copy(
pictureProductionVuex.value.constant.selectComponent
)
},
'picture-canvas-canvas': () => {
if (!pictureProductionVuex.value.pageContent.canvasBox.drag.space)
dragChooseComponentBoxRef.value?.dragChooseComponentFun('up')
dragMoveCanvas('up')
},
}
fun[DOM.dataset.id]()
}
const changeZoom = (zoom) => {
let baseData = initUtils.copy(pictureProductionVuex.value.pageContent)
baseData.canvasBox.zoom = zoom
setPageContent(baseData)
}
const wheelEventCanvas = (el2) => {
if (pictureProductionVuex.value.pageContent.canvasBox.drag.ctrl) {
if (el2.deltaY >= 0) {
scalingZoomRef.value?.subtractZoom()
} else {
scalingZoomRef.value?.addZoom()
}
}
el2.stopPropagation()
el2.preventDefault()
}
keyboardJS.bind(
'space',
(e2) => {
e2?.preventRepeat()
let baseData = initUtils.copy(pictureProductionVuex.value.pageContent)
baseData.canvasBox.drag.space = true
setPageContent(baseData)
},
() => {
let baseData = initUtils.copy(pictureProductionVuex.value.pageContent)
let drag = initUtils.copy(
pictureProductionVuex.value.constant.pageContent.canvasBox.drag
)
baseData.canvasBox.drag = drag
setPageContent(baseData)
}
)
keyboardJS.bind(
'ctrl',
(e2) => {
e2?.preventRepeat()
e2?.preventDefault()
let baseData = initUtils.copy(pictureProductionVuex.value.pageContent)
baseData.canvasBox.drag.ctrl = true
setPageContent(baseData)
},
() => {
let baseData = initUtils.copy(pictureProductionVuex.value.pageContent)
baseData.canvasBox.drag.ctrl = false
setPageContent(baseData)
}
)
keyboardJS.bind('delete', (e2) => {
e2?.preventRepeat()
if (!selectComponent.value.list.length) return
let list2 = lodash.cloneDeep(
pictureProductionVuex.value.pageContent.components
)
selectComponent.value.list.forEach((item2) => {
for (let n2 = 0, nLen = list2.length; n2 < nLen; n2++) {
const element = list2[n2]
if (element.id === item2.id) {
list2.splice(n2, 1)
break
}
}
})
let baseData = lodash.cloneDeep(pictureProductionVuex.value.pageContent)
baseData.components = list2
setPageContent(baseData)
selectComponent.value.list = []
})
keyboardJS.bind(
'shift',
(e2) => {
e2?.preventRepeat()
e2?.preventDefault()
keyDownShift = true
},
() => {
keyDownShift = false
}
)
keyboardJS.on('ctrl + a', (e2) => {
e2?.preventRepeat()
e2?.stopPropagation()
e2?.preventDefault()
let list2 = lodash.cloneDeep(
pictureProductionVuex.value.pageContent.components
)
selectComponent.value.list = list2
})
keyboardJS.on('ctrl + s', (e2) => {
e2?.preventRepeat()
savePicture(pictureProductionVuex.value.pageContent)
})
keyboardJS.on('ctrl + c', () => {
let copyText = window.getSelection()?.toString() || ''
if (copyText == '') {
navigator.clipboard.writeText('').then(() => {
headerFun('copy')
})
} else {
navigator.clipboard.writeText(copyText)
}
})
keyboardJS.on('ctrl + v', () => {
navigator.clipboard
?.read()
.then((res) => {
let clipboardItem = res[0]
for (const type4 of clipboardItem.types) {
if (type4.indexOf('image') > -1) {
clipboardItem.getType(type4).then((res1) => {
pasteImage()
})
}
}
})
.catch(() => {
headerFun('paste')
})
})
keyboardJS.on('ctrl + x', (e2) => {
e2?.preventRepeat()
headerFun('shear')
})
const pasteImage = (file2) => {}
const mouseMoveFun = (el2) => {
mousePoint.value = {
pageX: el2.pageX,
pageY: el2.pageY,
}
}
const headerFun = (code2) => {
const fun = {
copy: () => {
let _list = lodash.cloneDeep(selectComponent.value.list)
setCacheComponents(_list)
},
paste: () => {
const newCacheComponents = paste(
pictureProductionVuex.value.cacheComponents.list,
pictureProductionVuex.value.pageContent,
setPageContentComponents
)
if (newCacheComponents.length) setCacheComponents(newCacheComponents)
},
shear: () => {
const newComponents = shear(
selectComponent.value.list,
pictureProductionVuex.value.pageContent,
setPageContentComponents
)
if (newComponents.length) {
let _list = lodash.cloneDeep(selectComponent.value.list)
setCacheComponents(_list)
selectComponent.value.list = []
}
},
save: () => {
savePicture(pictureProductionVuex.value.pageContent)
},
topZIndex: () => {
setZIndex(
'topZIndex',
selectComponent.value.list,
pictureProductionVuex.value.pageContent,
editPageContentComponents
)
},
bottomZIndex: () => {
setZIndex(
'bottomZIndex',
selectComponent.value.list,
pictureProductionVuex.value.pageContent,
editPageContentComponents
)
},
left: () => {
const list2 = setComponentsAttr(
'left',
selectComponent.value.list,
pictureProductionVuex.value.pageContent,
editPageContentComponents
)
if (list2.length) selectComponent.value.list = list2
},
right: () => {
const list2 = setRightOrBottomAlign(
'right',
selectComponent.value.list,
pictureProductionVuex.value.pageContent,
editPageContentComponents
)
if (list2.length) selectComponent.value.list = list2
},
top: () => {
const list2 = setComponentsAttr(
'top',
selectComponent.value.list,
pictureProductionVuex.value.pageContent,
editPageContentComponents
)
if (list2.length) selectComponent.value.list = list2
},
bottom: () => {
const list2 = setRightOrBottomAlign(
'bottom',
selectComponent.value.list,
pictureProductionVuex.value.pageContent,
editPageContentComponents
)
if (list2.length) selectComponent.value.list = list2
},
setSameheight: () => {
const list2 = setComponentsAttr(
'setSameheight',
selectComponent.value.list,
pictureProductionVuex.value.pageContent,
editPageContentComponents
)
if (list2.length) selectComponent.value.list = list2
},
setSameWidth: () => {
const list2 = setComponentsAttr(
'setSameWidth',
selectComponent.value.list,
pictureProductionVuex.value.pageContent,
editPageContentComponents
)
if (list2.length) selectComponent.value.list = list2
},
combination: () => {
combination(
selectComponent.value.list,
pictureProductionVuex.value.pageContent,
setPageContentComponents
)
selectComponent.value.list = []
},
breakUp: () => {
const list2 = breakUp(
selectComponent.value.list,
pictureProductionVuex.value.pageContent,
setPageContentComponents
)
if (list2.length) selectComponent.value.list = []
},
center: () => {
const list2 = componentsCenter(
'vertical',
selectComponent.value.list,
pictureProductionVuex.value.pageContent,
editPageContentComponents
)
if (list2.length) selectComponent.value.list = list2
},
middle: () => {
const list2 = componentsCenter(
'horizontal',
selectComponent.value.list,
pictureProductionVuex.value.pageContent,
editPageContentComponents
)
if (list2.length) selectComponent.value.list = list2
},
horizontal: () => {
const list2 = equidistantDistribution(
'horizontal',
selectComponent.value.list,
pictureProductionVuex.value.pageContent,
editPageContentComponents
)
if (list2.length) selectComponent.value.list = list2
},
vertical: () => {
const list2 = equidistantDistribution(
'vertical',
selectComponent.value.list,
pictureProductionVuex.value.pageContent,
editPageContentComponents
)
if (list2.length) selectComponent.value.list = list2
},
}
if (fun[code2]) fun[code2]()
}
const undoOrRedo = (type4) => {}
const getProjectPictureData = (id2) => {
getPicturesContent(id2).then(
(res) => {
let baseData = initUtils.copy(
pictureProductionVuex.value.constant.pageContent
)
if (!res.content) {
const width = document.documentElement.offsetWidth - 740
const height = document.documentElement.offsetHeight - 200
res.content = {
canvasBox: {
width,
height,
left: 100,
top: 100,
zoom: 100,
},
components: [],
}
} else {
res.content = JSON.parse(res.content)
res.permissions = JSON.parse(res.permissions)
}
baseData.projectId = route.query.projectId || ''
baseData.id = res.id
baseData.name = res.name || ''
baseData.canvasBox = {
...baseData.canvasBox,
...res.content.canvasBox,
}
baseData.components = res.content.components
setPageContent(baseData)
pageContentHistory.list = [baseData]
},
(err) => {
console.error(err)
}
)
}
const projectPageChangeNode = (node2) => {
setPageContent(
initUtils.copy(pictureProductionVuex.value.constant.pageContent)
)
if (node2.parentId) {
getProjectPictureData(node2.id)
selectComponent.value.list = []
}
}
const initPage = async () => {
document.addEventListener('mousemove', (el2) => {
mouseMoveFun(el2)
})
}
const testControlConsole = (instruct) => {
const fun = {
页面数据: () => {},
a2: () => {
selectComponent.value.list = []
},
删除所有组件: () => {},
vuex: () => {},
}
fun[instruct]()
}
onMounted(() => {
initPage()
})
return (_ctx, _cache) => {
const _component_el_tooltip = resolveComponent('el-tooltip')
const _component_cms_partent_box = resolveComponent('cms-partent-box')
return (
openBlock(),
createElementBlock('div', _hoisted_1$l, [
createElementVNode('div', _hoisted_2$k, [
createElementVNode('div', _hoisted_3$j, [
createElementVNode('div', _hoisted_4$g, [
_hoisted_5$d,
createVNode$1(ProjectPage, {
objectId: '259',
onChangeNode: projectPageChangeNode,
}),
]),
createElementVNode('div', _hoisted_6$a, [
_hoisted_7$9,
unref(pictureProductionVuex).pageContent.id
? (openBlock(),
createBlock(
ComponentObject,
{
key: 0,
components: unref(componentObjectComponents),
selectComponent: unref(selectComponent).list,
onSendData: getObjData,
onSendNodeData: componentObjectReturnData,
},
null,
8,
['components', 'selectComponent']
))
: createCommentVNode('', true),
]),
]),
unref(pictureProductionVuex).pageContent.id
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
id: 'picture-canvas-background',
onMouseup:
_cache[4] ||
(_cache[4] = ($event) => pictureCanvasMouseup($event)),
onMousewheel: wheelEventCanvas,
},
[
createElementVNode('div', _hoisted_8$9, [
createVNode$1(PictureHeader, { onHeaderFun: headerFun }),
createElementVNode('div', _hoisted_9$9, [
createElementVNode('div', _hoisted_10$9, [
createElementVNode(
'div',
{
class: 'undo-redo-btn undo',
onClick:
_cache[0] ||
(_cache[0] = ($event) => undoOrRedo()),
},
[
createVNode$1(
_component_el_tooltip,
{
'popper-class': 'cms-el-tooltip',
content: '\u64A4\u9500',
placement: 'bottom',
},
{
default: withCtx(() => [_hoisted_11$7]),
_: 1,
}
),
]
),
createElementVNode(
'div',
{
class: 'undo-redo-btn redo',
onClick:
_cache[1] ||
(_cache[1] = ($event) => undoOrRedo()),
},
[
createVNode$1(
_component_el_tooltip,
{
'popper-class': 'cms-el-tooltip',
content: '\u6062\u590D',
placement: 'bottom',
},
{
default: withCtx(() => [_hoisted_12$7]),
_: 1,
}
),
]
),
]),
]),
]),
createElementVNode('div', _hoisted_13$6, [
createElementVNode(
'div',
{
'data-id': 'picture-canvas-canvas',
class: 'picture-canvas-canvas',
ref_key: 'pictureCanvas',
ref: pictureCanvas,
style: normalizeStyle$1(unref(pictureCanvasStyle)),
onMousedown:
_cache[2] ||
(_cache[2] = ($event) => canvasMousedown($event)),
onMousemove:
_cache[3] ||
(_cache[3] = ($event) => moveCanvas($event)),
},
[
createVNode$1(
_component_cms_partent_box,
{
isDrag: true,
isDblClickEditor: true,
isDisabled: false,
moduleState: 'development',
components: unref(pictureProductionVuex)
.pageContent.components,
selectComponentList: unref(selectComponentIdList),
onSelectCurComponent: selectCurComponent,
onHandleMouseDownOnPoint:
handleMouseDownOnComponentDirectionPoint,
onHandleMouseDownOnRotat:
handleMouseDownOnComponentRotat,
onHandleMouseMoveOnPoint: handleMouseMoveOnPoint,
onHandleMouseUp: handleMouseUp,
onHandleMouseUpOnPoint: handleMouseUpOnPoint,
onOnBlur: componentOnBlur,
},
null,
8,
['components', 'selectComponentList']
),
],
36
),
createVNode$1(
dragChooseComponentBox,
{
ref_key: 'dragChooseComponentBoxRef',
ref: dragChooseComponentBoxRef,
onChooseEnd: dragChooseComponentEnd,
},
null,
512
),
]),
createVNode$1(ComponentBox, {
onAddComponent: componentBoxAddComponent,
}),
createVNode$1(
ScalingZoom,
{
ref_key: 'scalingZoomRef',
ref: scalingZoomRef,
onChange: changeZoom,
},
null,
512
),
_hoisted_14$6,
],
32
))
: createCommentVNode('', true),
unref(pictureProductionVuex).pageContent.id
? (openBlock(),
createElementBlock('div', _hoisted_15$6, [
createElementVNode('div', _hoisted_16$6, [
createElementVNode(
'div',
{
class: normalizeClass([
'item',
unref(selectComponent).selectAttribute === 'style'
? 'select-item'
: '',
]),
onClick:
_cache[5] ||
(_cache[5] = ($event) =>
(unref(selectComponent).selectAttribute = 'style')),
},
' \u6837\u5F0F ',
2
),
createElementVNode(
'div',
{
class: normalizeClass([
'item',
unref(selectComponent).selectAttribute === 'event'
? 'select-item'
: '',
]),
onClick:
_cache[6] ||
(_cache[6] = ($event) =>
(unref(selectComponent).selectAttribute = 'event')),
},
' \u4E8B\u4EF6 ',
2
),
]),
createElementVNode('div', _hoisted_17$6, [
unref(selectComponent).selectAttribute === 'style'
? (openBlock(),
createBlock(
ComponentStyle,
{
key: 0,
objData: unref(componentCommonAttribute),
onSendData: setComponentStyleAttribute,
},
null,
8,
['objData']
))
: unref(selectComponent).selectAttribute === 'event'
? (openBlock(), createBlock(ComponentEvent, { key: 1 }))
: createCommentVNode('', true),
]),
]))
: createCommentVNode('', true),
]),
createElementVNode('div', _hoisted_18$6, [
createElementVNode(
'button',
{
onClick:
_cache[7] ||
(_cache[7] = ($event) =>
testControlConsole('\u9875\u9762\u6570\u636E')),
},
'\u9875\u9762\u6570\u636E'
),
createElementVNode(
'button',
{
onClick:
_cache[8] ||
(_cache[8] = ($event) => testControlConsole('a2')),
},
'a2'
),
createElementVNode(
'button',
{
onClick:
_cache[9] ||
(_cache[9] = ($event) =>
testControlConsole('\u5220\u9664\u6240\u6709\u7EC4\u4EF6')),
},
'\u5220\u9664\u6240\u6709\u7EC4\u4EF6'
),
createElementVNode(
'button',
{
onClick:
_cache[10] ||
(_cache[10] = ($event) => testControlConsole('vuex')),
},
'vuex'
),
createElementVNode('div', null, [
createElementVNode(
'span',
null,
toDisplayString$1(
unref(pictureProductionVuex).pageContent.components.length
),
1
),
]),
]),
])
)
}
},
})
var index$6 = /* @__PURE__ */ _export_sfc(_sfc_main$m, [
['__scopeId', 'data-v-44e66124'],
])
var index$7 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: index$6,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var index_vue_vue_type_style_index_0_scoped_true_lang$1 = ''
const _withScopeId$e = (n2) => (
pushScopeId('data-v-d8a4703e'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$k = { class: 'page' }
const _hoisted_2$j = { class: 'page-contain' }
const _hoisted_3$i = { class: 'page-head' }
const _hoisted_4$f = { class: 'page-head-title' }
const _hoisted_5$c = { class: 'page-table flex-row' }
const _hoisted_6$9 = /* @__PURE__ */ createStaticVNode(
'\u5DE5\u7A0B\u591A\u8BED\u8A00\uFF0C\u662F\u6307\u4F5C\u7528\u5728\u753B\u9762\u4E0A\u5C55\u793A\u7684\u6587\u672C\u5207\u6362\uFF0C\u5305\u62EC\u6807\u51C6\u63A7\u4EF6\u7684\u591A\u8BED\u8A00\u7FFB\u8BD1\uFF0C\u7B80\u79F0\u201C\u81EA\u5B9A\u4E49\u591A\u8BED\u8A00\u201D;\u8FD0\u884C\u6A21\u5757\u53CA\u7CFB\u7EDF\u64CD\u4F5C\u7684\u591A\u8BED\u8A00\u7FFB\u8BD1\uFF0C\u7B80\u79F0\u201C\u7CFB\u7EDF\u591A\u8BED\u8A00\u201D\u3002
\u201C\u7CFB\u7EDF\u591A\u8BED\u8A00\u201D\uFF0C\u63D0\u4F9B\u9ED8\u8BA4\u7684\u8BED\u8A00\u5305\u53EF\u4F9B\u9009\u62E9\uFF0C\u9009\u62E9\u542F\u7528\u5373\u53EF\uFF0C\u82E5\u6709\u5B9A\u5236\u7684\u8BED\u8A00\u9700\u8981\u4F7F\u7528\uFF0C\u53EF\u5BFC\u51FA\u9ED8\u8BA4\u7684\u8BED\u8A00\u5305\u8FDB\u884C\u4FEE\u6539\uFF0C\u4FEE\u6539\u7FFB\u8BD1\u6587\u672C\u540E\u91CD\u547D\u540D\u5BFC\u5165\u3002
\u201C\u81EA\u5B9A\u4E49\u591A\u8BED\u8A00\u201D\uFF0C\u6839\u636E\u542F\u7528\u7684\u8BED\u8A00\u5305\uFF0C\u5728\u7FFB\u8BD1\u6A21\u5757\u4F1A\u81EA\u52A8\u540C\u6B65\u7FFB\u8BD1\u5217\uFF0C\u53EF\u7531\u4E13\u4E1A\u7684\u7FFB\u8BD1\u4EBA\u5458\u8FDB\u884C\u76F8\u5173\u7684\u6587\u672C\u7FFB\u8BD1\u3002
',
3
)
const _hoisted_9$8 = {
class: 'configure',
style: { height: '600px', width: '396px' },
}
const _hoisted_10$8 = {
class: 'configure_header',
style: { width: '396px' },
}
const _hoisted_11$6 = /* @__PURE__ */ _withScopeId$e(() =>
/* @__PURE__ */ createElementVNode(
'svg',
{
class: 'icon',
'aria-hidden': 'true',
style: { width: '17px', height: '17px', left: '12px' },
},
[
/* @__PURE__ */ createElementVNode('use', {
'xlink:href': '#icon-yuyan',
}),
],
-1
)
)
const _hoisted_12$6 = /* @__PURE__ */ _withScopeId$e(() =>
/* @__PURE__ */ createElementVNode(
'svg',
{
class: 'icon',
'aria-hidden': 'true',
style: { width: '17px', height: '17px', right: '40px' },
},
[
/* @__PURE__ */ createElementVNode('use', {
'xlink:href': '#icon-tianjiahuamian',
}),
],
-1
)
)
const _hoisted_13$5 = /* @__PURE__ */ _withScopeId$e(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u5DE5\u7A0B\u652F\u6301\u7684\u591A\u8BED\u8A00',
-1
)
)
const _hoisted_14$5 = /* @__PURE__ */ _withScopeId$e(() =>
/* @__PURE__ */ createElementVNode(
'use',
{ 'xlink:href': '#icon-gengduo-1' },
null,
-1
)
)
const _hoisted_15$5 = [_hoisted_14$5]
const _hoisted_16$5 = /* @__PURE__ */ createStaticVNode(
'',
1
)
const _hoisted_17$5 = { class: 'configure_content' }
const _hoisted_18$5 = {
class: 'ul_left',
style: {
'min-height': '535px',
width: '228px',
'border-right': '1px solid #333333',
float: 'left',
},
}
const _hoisted_19$5 = ['onClick']
const _hoisted_20$5 = /* @__PURE__ */ _withScopeId$e(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-xiala2',
style: { position: 'absolute', right: '10px' },
},
null,
-1
)
)
const _hoisted_21$4 = {
class: 'ul_right',
style: { float: 'left', width: 'calc(100% - 229px)' },
}
const _hoisted_22$4 = ['onClick']
const _hoisted_23$2 = { class: 'operation' }
const _hoisted_24$2 = /* @__PURE__ */ _withScopeId$e(() =>
/* @__PURE__ */ createElementVNode('div', null, '\u91CD\u547D\u540D', -1)
)
const _hoisted_25$1 = /* @__PURE__ */ _withScopeId$e(() =>
/* @__PURE__ */ createElementVNode('div', null, '\u5220\u9664', -1)
)
const _hoisted_26$1 = [_hoisted_24$2, _hoisted_25$1]
const _hoisted_27$1 = { class: 'page-table flex-row' }
const _hoisted_28 = /* @__PURE__ */ createStaticVNode(
'\u5DE5\u7A0B\u591A\u4E3B\u9898\uFF0C\u662F\u6307\u4F5C\u7528\u5728\u753B\u9762\u4E0A\uFF0C\u8FD0\u884C\u6A21\u5757\u5C55\u793A\u6837\u5F0F\u7684\u5207\u6362\uFF0C\u7B80\u79F0\u201C\u8FD0\u884C\u6A21\u5757\u591A\u4E3B\u9898\u201D\uFF0C\u6807\u51C6\u63A7\u4EF6\u4E0D\u9700\u8981\u901A\u8FC7\u4E3B\u9898\u5207\u6362\u63A7\u5236\uFF0C\u53EF\u81EA\u7531\u7EC4\u6001\u9700\u8981\u5C55\u793A\u7684\u6837\u5F0F\u3002
\u201C\u8FD0\u884C\u6A21\u5757\u591A\u4E3B\u9898\u201D\uFF0C\u63D0\u4F9B\u9ED8\u8BA4\u7684\u4E3B\u9898\u53EF\u4F9B\u9009\u62E9\uFF0C\u9009\u62E9\u542F\u7528\u5373\u53EF\uFF0C\u82E5\u6709\u5B9A\u5236\u7684\u8BED\u8A00\u9700\u8981\u4F7F\u7528\uFF0C\u53EF\u5BFC\u51FA\u9ED8\u8BA4\u7684\u8BED\u8A00\u5305\u8FDB\u884C\u4FEE\u6539\uFF0C\u4FEE\u6539\u4E3B\u9898\u6837\u5F0F\u540E\u91CD\u547D\u540D\u5BFC\u5165\u3002
',
3
)
const _hoisted_31 = { class: 'configure' }
const _hoisted_32 = { class: 'configure_header' }
const _hoisted_33 = /* @__PURE__ */ _withScopeId$e(() =>
/* @__PURE__ */ createElementVNode(
'svg',
{
class: 'icon',
'aria-hidden': 'true',
style: { width: '17px', height: '17px', left: '12px' },
},
[
/* @__PURE__ */ createElementVNode('use', {
'xlink:href': '#icon-qita1',
}),
],
-1
)
)
const _hoisted_34 = /* @__PURE__ */ _withScopeId$e(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u5DE5\u7A0B\u652F\u6301\u7684\u591A\u8BED\u8A00',
-1
)
)
const _hoisted_35 = /* @__PURE__ */ _withScopeId$e(() =>
/* @__PURE__ */ createElementVNode(
'use',
{ 'xlink:href': '#icon-gengduo-1' },
null,
-1
)
)
const _hoisted_36 = [_hoisted_35]
const _hoisted_37 = { class: 'configure_content' }
const _hoisted_38 = ['onClick']
const _sfc_main$l = /* @__PURE__ */ defineComponent({
setup(__props2) {
const showoperation = ref(false)
const languagearr = ref([
{ active: true, language: '\u4E2D\u6587(\u9ED8\u8BA4)' },
{ active: false, language: 'English' },
])
const themearr = ref([
{ active: true, theme: '\u7ECF\u5178(\u9ED8\u8BA4)' },
{ active: false, theme: '\u5DE5\u4E1A\u9ED1' },
])
const changelanguage = (key2) => {
languagearr.value.forEach((item2) => {
item2.active = false
})
languagearr.value[key2].active = true
}
const changetheme = (key2) => {
themearr.value.forEach((item2) => {
item2.active = false
})
themearr.value[key2].active = true
}
let varTable = ref('\u591A\u8BED\u8A00')
const switchVarTable = (type4) => {
varTable.value = type4
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$k, [
createElementVNode('div', _hoisted_2$j, [
createElementVNode('div', _hoisted_3$i, [
createElementVNode('span', _hoisted_4$f, [
createElementVNode(
'button',
{
class: normalizeClass([
'btn btn-normal',
{ active: unref(varTable) === '\u591A\u8BED\u8A00' },
]),
onClick:
_cache[0] ||
(_cache[0] = ($event) =>
switchVarTable('\u591A\u8BED\u8A00')),
},
'\u591A\u8BED\u8A00',
2
),
createElementVNode(
'button',
{
class: normalizeClass([
'btn btn-normal',
{ active: unref(varTable) === '\u591A\u4E3B\u9898' },
]),
onClick:
_cache[1] ||
(_cache[1] = ($event) =>
switchVarTable('\u591A\u4E3B\u9898')),
},
'\u591A\u4E3B\u9898',
2
),
]),
]),
withDirectives(
createElementVNode(
'div',
_hoisted_5$c,
[
_hoisted_6$9,
createElementVNode('div', _hoisted_9$8, [
createElementVNode('div', _hoisted_10$8, [
_hoisted_11$6,
_hoisted_12$6,
_hoisted_13$5,
(openBlock(),
createElementBlock(
'svg',
{
class: 'icon',
'aria-hidden': 'true',
style: {
width: '17px',
height: '17px',
right: '10px',
},
onClick:
_cache[2] ||
(_cache[2] = ($event) =>
(showoperation.value = true)),
},
_hoisted_15$5
)),
]),
_hoisted_16$5,
createElementVNode('div', _hoisted_17$5, [
createElementVNode('div', _hoisted_18$5, [
createElementVNode('ul', null, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(languagearr.value, (item2, key2) => {
return (
openBlock(),
createElementBlock(
'li',
{
style: { position: 'relative' },
key: key2,
class: normalizeClass({
active: item2.active,
}),
onClick: ($event) => changelanguage(key2),
},
[
createTextVNode(
toDisplayString$1(item2.language) + ' ',
1
),
_hoisted_20$5,
],
10,
_hoisted_19$5
)
)
}),
128
)),
]),
]),
createElementVNode('div', _hoisted_21$4, [
createElementVNode('ul', null, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(languagearr.value, (item2, key2) => {
return (
openBlock(),
createElementBlock(
'li',
{
key: key2,
class: normalizeClass({
active: item2.active,
}),
onClick: ($event) => changelanguage(key2),
},
toDisplayString$1(item2.language),
11,
_hoisted_22$4
)
)
}),
128
)),
]),
]),
]),
]),
],
512
),
[[vShow, unref(varTable) === '\u591A\u8BED\u8A00']]
),
withDirectives(
createElementVNode(
'div',
{
style: {
position: 'fixed',
width: '100%',
height: '100%',
'z-index': '999',
},
onClick:
_cache[3] ||
(_cache[3] = ($event) => (showoperation.value = false)),
},
null,
512
),
[[vShow, showoperation.value]]
),
withDirectives(
createElementVNode('div', _hoisted_23$2, _hoisted_26$1, 512),
[[vShow, showoperation.value]]
),
withDirectives(
createElementVNode(
'div',
_hoisted_27$1,
[
_hoisted_28,
createElementVNode('div', _hoisted_31, [
createElementVNode('div', _hoisted_32, [
_hoisted_33,
_hoisted_34,
(openBlock(),
createElementBlock(
'svg',
{
class: 'icon',
'aria-hidden': 'true',
style: {
width: '17px',
height: '17px',
right: '10px',
},
onClick:
_cache[4] ||
(_cache[4] = ($event) =>
(showoperation.value = true)),
},
_hoisted_36
)),
]),
createElementVNode('div', _hoisted_37, [
createElementVNode('ul', null, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(themearr.value, (item2, key2) => {
return (
openBlock(),
createElementBlock(
'li',
{
key: key2,
class: normalizeClass({
active: item2.active,
}),
onClick: ($event) => changetheme(key2),
},
toDisplayString$1(item2.theme),
11,
_hoisted_38
)
)
}),
128
)),
]),
]),
]),
],
512
),
[[vShow, unref(varTable) === '\u591A\u4E3B\u9898']]
),
]),
])
)
}
},
})
var index$4 = /* @__PURE__ */ _export_sfc(_sfc_main$l, [
['__scopeId', 'data-v-d8a4703e'],
])
var index$5 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: index$4,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var index_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$d = (n2) => (
pushScopeId('data-v-b8e6c3ba'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$j = { class: 'page' }
const _hoisted_2$i = { class: 'page-contain' }
const _hoisted_3$h = { class: 'page-head' }
const _hoisted_4$e = { class: 'page-head-title' }
const _hoisted_5$b = { class: 'page-table flex-row' }
const _hoisted_6$8 = { class: 'page-ztree' }
const _hoisted_7$8 = { class: 'flex-row-full' }
const _hoisted_8$8 = /* @__PURE__ */ _withScopeId$d(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-danji' },
null,
-1
)
)
const _hoisted_9$7 = /* @__PURE__ */ _withScopeId$d(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u5728\u901A\u4FE1\u8BBE\u5907\u529F\u80FD\u533A\u70B9\u51FB\u4E00\u4E2A\u53D8\u91CF\u7EC4\u67E5\u770B',
-1
)
)
const _hoisted_10$7 = [_hoisted_8$8, _hoisted_9$7]
const _hoisted_11$5 = { class: 'flex-row-full' }
const _hoisted_12$5 = /* @__PURE__ */ _withScopeId$d(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-tianjiabianliangzu' },
null,
-1
)
)
const _hoisted_13$4 = /* @__PURE__ */ _withScopeId$d(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u6DFB\u52A0\u53D8\u91CF\u7EC4',
-1
)
)
const _hoisted_14$4 = [_hoisted_12$5, _hoisted_13$4]
const _hoisted_15$4 = { class: 'flex-row-full' }
const _hoisted_16$4 = { class: 'page-table flex-row' }
const _hoisted_17$4 = { class: 'page-ztree' }
const _hoisted_18$4 = { class: 'flex-row-full' }
const _hoisted_19$4 = /* @__PURE__ */ _withScopeId$d(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-danji' },
null,
-1
)
)
const _hoisted_20$4 = /* @__PURE__ */ _withScopeId$d(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u5728\u53D8\u91CF\u5206\u7EC4\u529F\u80FD\u533A\u70B9\u51FB\u4E00\u4E2A\u53D8\u91CF\u7EC4\u67E5\u770B',
-1
)
)
const _hoisted_21$3 = [_hoisted_19$4, _hoisted_20$4]
const _hoisted_22$3 = { class: 'flex-row-full' }
const _sfc_main$k = /* @__PURE__ */ defineComponent({
setup(__props2) {
const ztreeCom = ref(null)
let tableCom = ref(null)
let nodeType = ref('')
const innerZtreeCom = ref(null)
let innerTableCom = ref(null)
const addVariableGroup = () => {
ztreeCom.value?.addVariableGroup()
}
let varTable = ref('IO\u53D8\u91CF')
const switchVarTable = (type4) => {
varTable.value = type4
varTable.value === 'IO\u53D8\u91CF'
? ztreeCom.value.hightLight(false)
: innerZtreeCom.value.hightLight(false)
}
const deviceData = ref()
const handleNode = (node2) => {
if (node2 !== null) {
nodeType.value = node2.level && node2.level === 1 ? 'device' : 'group'
let deviceId = node2.parent.data.deviceId
let groupId = node2.key
if (deviceId) {
deviceData.value = node2.parent.data
nextTick(() => {
tableCom.value?.reset()
tableCom.value?.getTableData(deviceId, groupId)
})
}
} else {
nodeType.value = ''
}
}
let innerNodeType = ref('')
const innerGroupData = ref()
const handleInnerNode = (node2) => {
if (node2 !== null) {
innerNodeType.value = 'group'
nextTick(() => {
innerTableCom.value?.reset()
innerTableCom.value?.getTableData(node2.data.id || node2.data.groupId)
})
innerGroupData.value = node2.data
} else {
innerNodeType.value = ''
}
}
const hightLightZtree = () => {
varTable.value === 'IO\u53D8\u91CF'
? ztreeCom.value.hightLight(true)
: innerZtreeCom.value.hightLight(true)
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$j, [
createElementVNode('div', _hoisted_2$i, [
createElementVNode('div', _hoisted_3$h, [
createElementVNode('span', _hoisted_4$e, [
createElementVNode(
'button',
{
class: normalizeClass([
'btn btn-normal',
{ active: unref(varTable) === 'IO\u53D8\u91CF' },
]),
onClick:
_cache[0] ||
(_cache[0] = ($event) =>
switchVarTable('IO\u53D8\u91CF')),
},
' IO\u53D8\u91CF ',
2
),
createElementVNode(
'button',
{
class: normalizeClass([
'btn btn-normal',
{
active: unref(varTable) === '\u5185\u90E8\u53D8\u91CF',
},
]),
onClick:
_cache[1] ||
(_cache[1] = ($event) =>
switchVarTable('\u5185\u90E8\u53D8\u91CF')),
},
' \u5185\u90E8\u53D8\u91CF ',
2
),
]),
]),
withDirectives(
createElementVNode(
'div',
_hoisted_5$b,
[
createElementVNode('div', _hoisted_6$8, [
createVNode$1(
ComponentZtree,
{
type: unref(varTable),
onHandleNode: handleNode,
ref_key: 'ztreeCom',
ref: ztreeCom,
},
null,
8,
['type']
),
]),
withDirectives(
createElementVNode(
'div',
_hoisted_7$8,
[
createElementVNode(
'button',
{
class: 'btn btn-add-group fix-center warning-tip',
onClick: hightLightZtree,
},
_hoisted_10$7
),
],
512
),
[[vShow, unref(nodeType) === '']]
),
withDirectives(
createElementVNode(
'div',
_hoisted_11$5,
[
createElementVNode(
'button',
{
class: 'btn btn-add-group fix-center',
onClick: addVariableGroup,
},
_hoisted_14$4
),
],
512
),
[[vShow, unref(nodeType) === 'device']]
),
withDirectives(
createElementVNode(
'div',
_hoisted_15$4,
[
createVNode$1(
ComponentTable,
{
ref_key: 'tableCom',
ref: tableCom,
deviceData: deviceData.value,
},
null,
8,
['deviceData']
),
],
512
),
[[vShow, unref(nodeType) === 'group']]
),
],
512
),
[[vShow, unref(varTable) === 'IO\u53D8\u91CF']]
),
withDirectives(
createElementVNode(
'div',
_hoisted_16$4,
[
createElementVNode('div', _hoisted_17$4, [
createVNode$1(
ComponentZtreeInner,
{
onHandleNode: handleInnerNode,
ref_key: 'innerZtreeCom',
ref: innerZtreeCom,
},
null,
512
),
]),
withDirectives(
createElementVNode(
'div',
_hoisted_18$4,
[
createElementVNode(
'button',
{
class: 'btn btn-add-group fix-center warning-tip',
onClick: hightLightZtree,
},
_hoisted_21$3
),
],
512
),
[[vShow, unref(innerNodeType) === '']]
),
withDirectives(
createElementVNode(
'div',
_hoisted_22$3,
[
createVNode$1(
ComponentTableInner,
{
ref_key: 'innerTableCom',
ref: innerTableCom,
deviceData: innerGroupData.value,
},
null,
8,
['deviceData']
),
],
512
),
[[vShow, unref(innerNodeType) === 'group']]
),
],
512
),
[[vShow, unref(varTable) === '\u5185\u90E8\u53D8\u91CF']]
),
]),
])
)
}
},
})
var index$2 = /* @__PURE__ */ _export_sfc(_sfc_main$k, [
['__scopeId', 'data-v-b8e6c3ba'],
])
var index$3 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: index$2,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Type_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$i = { class: 'chart-type' }
const _hoisted_2$h = {
class: 'iconfont svg-icon',
'aria-hidden': 'true',
}
const _hoisted_3$g = ['xlink:href']
const _sfc_main$j = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
let typeList = [
{ is: 'Sheet', name: '\u5C55\u793A\u62A5\u8868' },
{ is: 'Sheet', name: '\u586B\u62A5\u62A5\u8868' },
]
let widget = Widget.store[node2.is || '']
function change2() {
widget = Widget.store[node2.is || '']
node2.name = widget.name
}
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
return (
openBlock(),
createBlock(
_sfc_main$72,
{
title: '\u56FE\u8868\u7C7B\u578B',
fold: '',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$i, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
modelValue: unref(node2).is,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (unref(node2).is = $event)),
onChange: change2,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(typeList), (typeItem, i2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: i2,
label: typeItem.name || 'TODO',
value: typeItem.is,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['modelValue']
),
(openBlock(),
createElementBlock('svg', _hoisted_2$h, [
createElementVNode(
'use',
{
'xlink:href': '#' + unref(widget)?.icon,
},
null,
8,
_hoisted_3$g
),
])),
]),
]),
_: 1,
}
)
)
}
},
})
var Type = /* @__PURE__ */ _export_sfc(_sfc_main$j, [
['__scopeId', 'data-v-05380195'],
])
var Type$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Type,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _sfc_main$i = {}
const _hoisted_1$h = /* @__PURE__ */ createElementVNode('div', null, null, -1)
const _hoisted_2$g = [_hoisted_1$h]
function _sfc_render(_ctx, _cache) {
return openBlock(), createElementBlock('div', null, _hoisted_2$g)
}
var databaseConfig = /* @__PURE__ */ _export_sfc(_sfc_main$i, [
['render', _sfc_render],
])
var databaseConfig$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: databaseConfig,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var storageSetting_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$c = (n2) => (
pushScopeId('data-v-1d117df2'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$g = /* @__PURE__ */ createTextVNode('\u50A8\u5B58\u8BBE\u7F6E')
const _hoisted_2$f = { class: 'dialog-content storageSetting' }
const _hoisted_3$f = { class: 'flex-row' }
const _hoisted_4$d = /* @__PURE__ */ _withScopeId$c(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u5B9A\u65F6\u6E05\u9664',
-1
)
)
const _hoisted_5$a = { class: 'panel' }
const _hoisted_6$7 = { class: 'flex-row' }
const _hoisted_7$7 = { class: 'con-column' }
const _hoisted_8$7 = /* @__PURE__ */ _withScopeId$c(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'label' },
'\u89E6\u53D1\u65F6\u95F4\uFF1A',
-1
)
)
const _hoisted_9$6 = { class: 'con-column' }
const _hoisted_10$6 = /* @__PURE__ */ _withScopeId$c(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'label' },
'\u91CD\u590D\u9891\u7387\uFF1A\u6BCF',
-1
)
)
const _hoisted_11$4 = { class: 'flex-row top' }
const _hoisted_12$4 = /* @__PURE__ */ _withScopeId$c(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u4FDD\u7559', -1)
)
const _hoisted_13$3 = /* @__PURE__ */ _withScopeId$c(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u5185\u7684\u6570\u636E',
-1
)
)
const _hoisted_14$3 = { class: 'type flex-row' }
const _hoisted_15$3 = /* @__PURE__ */ _withScopeId$c(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u5B9A\u65F6\u5907\u4EFD',
-1
)
)
const _hoisted_16$3 = { class: 'panel' }
const _hoisted_17$3 = { class: 'flex-row' }
const _hoisted_18$3 = { class: 'con-column' }
const _hoisted_19$3 = /* @__PURE__ */ _withScopeId$c(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'label' },
'\u89E6\u53D1\u65F6\u95F4\uFF1A',
-1
)
)
const _hoisted_20$3 = { class: 'con-column' }
const _hoisted_21$2 = /* @__PURE__ */ _withScopeId$c(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'label' },
'\u91CD\u590D\u9891\u7387\uFF1A\u6BCF',
-1
)
)
const _hoisted_22$2 = { class: 'con-column top' }
const _hoisted_23$1 = /* @__PURE__ */ _withScopeId$c(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'label' },
'\u5907\u4EFD\u8DEF\u5F84\uFF1A',
-1
)
)
const _hoisted_24$1 = { class: 'path' }
const _hoisted_25 = { class: 'el-dialog__footer' }
const _hoisted_26 = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_27 = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$h = /* @__PURE__ */ defineComponent({
setup(__props2) {
const STORAGE_CONFIG = {
ScheduledClear: false,
ClearTriggerTime: '',
ClearFrequency: 1,
ClearFrequencyUnit: 5,
ClearRetain: 1,
ClearRetainUnit: 4,
ScheduledBackup: false,
BackupTriggerTime: '',
BackupFrequency: 1,
BackupFrequencyUnit: 5,
BackupPath: '',
BackupExceed: 0,
BackupExceedUnit: 0,
}
let visible = ref(false)
let data2 = ref({})
data2.value = { ...STORAGE_CONFIG }
const query = async () => {
const { sheet } = state.current
if (!sheet) return
const res = await request.get(
`/api/v1/dataconfig/node/${sheet.type}/${sheet.id}`
)
const obj = {}
for (let [key2, value2] of Object.entries(res)) {
if (key2.startsWith('storageConfig_')) {
key2 = key2.replace(/storageConfig_/, '')
if (key2.endsWith('TriggerTime')) {
value2 = value2 ? new Date(Date.parse(value2 + '')) : ''
}
if (key2.endsWith('FrequencyUnit') && value2 === 0) {
value2 = 5
}
if (key2 == 'ClearRetainUnit' && value2 === 0) {
value2 = 4
}
obj[key2] = value2
}
}
data2.value = obj
}
const open2 = () => {
visible.value = true
query()
}
const reset2 = () => {
data2.value = { ...STORAGE_CONFIG }
}
const confirm2 = async () => {
const { sheet } = state.current
if (!sheet) return
const params2 = {}
for (let [key2, value2] of Object.entries(data2.value)) {
if (key2.endsWith('TriggerTime')) {
value2 = value2 ? new Date(value2).toISOString() : ''
}
if (key2.endsWith('Unit') && value2 === '') {
value2 = 0
}
params2['storageConfig_' + key2] = value2
}
await request
.put(
`/api/v1/dataconfig/node/storageconfig/${sheet.type}/${sheet.id}`,
params2
)
.then(() => {
visible.value = false
ElMessage.success('\u4FDD\u5B58\u6210\u529F')
})
}
const getPath = async () => {
const path = await client.openDirectory()
if (path) data2.value.BackupPath = path
}
return (_ctx, _cache) => {
const _component_el_button = resolveComponent('el-button')
const _component_el_checkbox = resolveComponent('el-checkbox')
const _component_el_date_picker = resolveComponent('el-date-picker')
const _component_el_input = resolveComponent('el-input')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
_component_el_button,
{
class: 'cms-btn btn-data',
style: { margin: '0' },
onClick: open2,
},
{
default: withCtx(() => [_hoisted_1$g]),
_: 1,
}
),
createVNode$1(
_component_el_dialog,
{
modelValue: unref(visible),
'onUpdate:modelValue':
_cache[12] ||
(_cache[12] = ($event) =>
isRef(visible)
? (visible.value = $event)
: (visible = $event)),
'append-to-body': true,
'close-on-click-modal': false,
onClosed: reset2,
title: '\u5B58\u50A8\u8BBE\u7F6E',
'custom-class': 'cms-el-dialog',
width: '640px',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$f, [
createElementVNode('section', null, [
createElementVNode('div', _hoisted_3$f, [
createVNode$1(
_component_el_checkbox,
{
modelValue: data2.value.ScheduledClear,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(data2.value.ScheduledClear = $event)),
class: 'cms-el-checkbox',
},
null,
8,
['modelValue']
),
_hoisted_4$d,
]),
createElementVNode('div', _hoisted_5$a, [
createElementVNode('div', _hoisted_6$7, [
createElementVNode('div', _hoisted_7$7, [
_hoisted_8$7,
createVNode$1(
unref(ElConfigProvider),
{ locale: unref(zhCn) },
{
default: withCtx(() => [
createVNode$1(
_component_el_date_picker,
{
modelValue: data2.value.ClearTriggerTime,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(data2.value.ClearTriggerTime =
$event)),
type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss',
placeholder:
'\u9009\u62E9\u65E5\u671F\u65F6\u95F4',
class: 'cms-el-date-picker',
'popper-class': 'cms-el-picker__popper',
},
null,
8,
['modelValue']
),
]),
_: 1,
},
8,
['locale']
),
]),
createElementVNode('div', _hoisted_9$6, [
_hoisted_10$6,
createVNode$1(
TriggerFrequency,
{
value: data2.value.ClearFrequency,
'onUpdate:value':
_cache[2] ||
(_cache[2] = ($event) =>
(data2.value.ClearFrequency = $event)),
unit: data2.value.ClearFrequencyUnit,
'onUpdate:unit':
_cache[3] ||
(_cache[3] = ($event) =>
(data2.value.ClearFrequencyUnit = $event)),
unitFilters: '3,4,5',
},
null,
8,
['value', 'unit']
),
]),
]),
createElementVNode('div', _hoisted_11$4, [
_hoisted_12$4,
createVNode$1(
TriggerFrequency,
{
value: data2.value.ClearRetain,
'onUpdate:value':
_cache[4] ||
(_cache[4] = ($event) =>
(data2.value.ClearRetain = $event)),
unit: data2.value.ClearRetainUnit,
'onUpdate:unit':
_cache[5] ||
(_cache[5] = ($event) =>
(data2.value.ClearRetainUnit = $event)),
unitFilters: '4,5',
style: { margin: '0 10px' },
},
null,
8,
['value', 'unit']
),
_hoisted_13$3,
]),
]),
]),
createElementVNode('section', null, [
createElementVNode('div', _hoisted_14$3, [
createVNode$1(
_component_el_checkbox,
{
modelValue: data2.value.ScheduledBackup,
'onUpdate:modelValue':
_cache[6] ||
(_cache[6] = ($event) =>
(data2.value.ScheduledBackup = $event)),
class: 'cms-el-checkbox',
},
null,
8,
['modelValue']
),
_hoisted_15$3,
]),
createElementVNode('div', _hoisted_16$3, [
createElementVNode('div', _hoisted_17$3, [
createElementVNode('div', _hoisted_18$3, [
_hoisted_19$3,
createVNode$1(
unref(ElConfigProvider),
{ locale: unref(zhCn) },
{
default: withCtx(() => [
createVNode$1(
_component_el_date_picker,
{
modelValue: data2.value.BackupTriggerTime,
'onUpdate:modelValue':
_cache[7] ||
(_cache[7] = ($event) =>
(data2.value.BackupTriggerTime =
$event)),
type: 'datetime',
format: 'YYYY-MM-DD HH:mm:ss',
placeholder:
'\u9009\u62E9\u65E5\u671F\u65F6\u95F4',
class: 'cms-el-date-picker',
'popper-class': 'cms-el-picker__popper',
},
null,
8,
['modelValue']
),
]),
_: 1,
},
8,
['locale']
),
]),
createElementVNode('div', _hoisted_20$3, [
_hoisted_21$2,
createVNode$1(
TriggerFrequency,
{
value: data2.value.BackupFrequency,
'onUpdate:value':
_cache[8] ||
(_cache[8] = ($event) =>
(data2.value.BackupFrequency = $event)),
unit: data2.value.BackupFrequencyUnit,
'onUpdate:unit':
_cache[9] ||
(_cache[9] = ($event) =>
(data2.value.BackupFrequencyUnit = $event)),
unitFilters: '3,4,5',
},
null,
8,
['value', 'unit']
),
]),
]),
createElementVNode('div', _hoisted_22$2, [
_hoisted_23$1,
createElementVNode('div', _hoisted_24$1, [
createVNode$1(
_component_el_input,
{
modelValue: data2.value.BackupPath,
'onUpdate:modelValue':
_cache[10] ||
(_cache[10] = ($event) =>
(data2.value.BackupPath = $event)),
placeholder:
'\u8BF7\u8F93\u5165\u6216\u9009\u62E9',
},
null,
8,
['modelValue']
),
createElementVNode('i', {
class: 'iconfont icon-gengduo1',
onClick: getPath,
}),
]),
]),
]),
]),
]),
createElementVNode('div', _hoisted_25, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick:
_cache[11] ||
(_cache[11] = ($event) =>
isRef(visible)
? (visible.value = false)
: (visible = false)),
},
{
default: withCtx(() => [_hoisted_26]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: confirm2,
},
{
default: withCtx(() => [_hoisted_27]),
_: 1,
}
),
]),
]),
_: 1,
},
8,
['modelValue']
),
])
)
}
},
})
var storageSetting = /* @__PURE__ */ _export_sfc(_sfc_main$h, [
['__scopeId', 'data-v-1d117df2'],
])
var storageSetting$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: storageSetting,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var VarHistoricArchiveConfig_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$b = (n2) => (
pushScopeId('data-v-ada8d0c2'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$f = { class: 'flex history-label' }
const _hoisted_2$e = /* @__PURE__ */ _withScopeId$b(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u5386\u53F2\u7EC4\u5173\u8054 ',
-1
)
)
const _hoisted_3$e = { class: 'dialog-content' }
const _hoisted_4$c = { class: 'history-tree' }
const _hoisted_5$9 = /* @__PURE__ */ _withScopeId$b(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont menu icon-yemian' },
null,
-1
)
)
const _hoisted_6$6 = { class: 'title' }
const _hoisted_7$6 = {
key: 0,
class: 'iconfont icon-gouxuan check',
}
const _hoisted_8$6 = { class: 'el-dialog__footer' }
const _hoisted_9$5 = /* @__PURE__ */ createTextVNode('\u53D6\u6D88')
const _hoisted_10$5 = /* @__PURE__ */ createTextVNode('\u786E\u5B9A')
const _sfc_main$g = /* @__PURE__ */ defineComponent({
props: {
row: null,
modelValue: { type: Boolean },
},
emits: ['update:modelValue', 'confirm'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const close2 = () => {
emit2('update:modelValue', false)
}
const modelValue = computed({
get() {
return $props2.modelValue
},
set(v4) {
emit2('update:modelValue', v4)
},
})
const DEFAULT_GROUP_ID = '00000000-0000-0000-0000-000000000000'
const DEFAULT_DATA = {
enableArchive: false,
minIntervalValue: 1,
minIntervalUnit: 1,
archiveType: 0,
deadZoneType: 0,
deadZoneThreshold: 1,
intervalValue: 1,
intervalUnit: 1,
}
const getDefaultData = () => JSON.parse(JSON.stringify(DEFAULT_DATA))
let data2 = ref($props2.row?.archiveSetting || getDefaultData())
const cloneData = JSON.parse(JSON.stringify(data2.value))
let selectedGroup = ref({
id: $props2.row?.historicGroupId || DEFAULT_GROUP_ID,
name: $props2.row?.historicGroupName || '\u9ED8\u8BA4\u7EC4',
})
const variableArchiveDisabled = computed(
() => selectedGroup.value.id !== DEFAULT_GROUP_ID
)
let confirmFlag = false
watch$1(
() => modelValue.value,
() => {
if (modelValue.value == false && !confirmFlag) {
data2.value = cloneData
}
},
{ deep: true }
)
const confirm2 = async (data22) => {
confirmFlag = true
const briefMsg =
selectedGroup.value.id != DEFAULT_GROUP_ID
? selectedGroup.value.name
: await request.post(`/api/v1/historicarchive/briefmsg`, data22)
emit2(
'confirm',
data22,
selectedGroup.value.id,
selectedGroup.value.name,
briefMsg
)
close2()
}
const group = reactive({
visible: false,
list: [],
filterText: '',
checked: selectedGroup.value,
nodeFilter(value2, data22) {
if (!value2) return true
return data22.name.includes(value2)
},
nodeClick(item2) {
group.checked = item2
},
async confirm() {
selectedGroup.value = group.checked
if (group.checked.id == DEFAULT_GROUP_ID) {
data2.value = getDefaultData()
} else {
data2.value = await request.get(
`/api/v1/historicarchive/group/${group.checked.id}/archivesetting`
)
}
group.visible = false
},
async open() {
group.list = await request.get('/api/v1/historicarchive/group')
group.visible = true
},
})
const groupTreeRef = ref()
watch$1(
() => group.filterText,
(val2) => {
groupTreeRef.value.filter(val2)
},
{ deep: true }
)
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_ElTree = resolveComponent('ElTree')
const _component_el_button = resolveComponent('el-button')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
HistoryConfigDialog,
{
modelValue: modelValue.value,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) => (modelValue.value = $event)),
variableArchiveDisabled: variableArchiveDisabled.value,
data: data2.value,
onConfirm: confirm2,
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1$f, [
_hoisted_2$e,
createVNode$1(
RelevanceButton,
{
class: 'picker',
label: unref(group).checked.name,
onClick: unref(group).open,
},
null,
8,
['label', 'onClick']
),
]),
createVNode$1(
_component_el_dialog,
{
modelValue: unref(group).visible,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) => (unref(group).visible = $event)),
'append-to-body': true,
'close-on-click-modal': false,
draggable: '',
title: '\u5386\u53F2\u7EC4',
'custom-class': 'cms-el-dialog',
width: '450px',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_3$e, [
createVNode$1(
_component_el_input,
{
modelValue: unref(group).filterText,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(group).filterText = $event)),
placeholder: '\u5173\u952E\u5B57\u641C\u7D22',
clearable: '',
},
null,
8,
['modelValue']
),
createElementVNode('div', _hoisted_4$c, [
createVNode$1(
_component_ElTree,
{
ref_key: 'groupTreeRef',
ref: groupTreeRef,
class: 'cms_el_tree_x',
'default-expand-all': '',
data: unref(group).list,
props: { label: 'name' },
'filter-node-method': unref(group).nodeFilter,
onNodeClick: unref(group).nodeClick,
},
{
default: withCtx(({ data: data22 }) => [
createElementVNode(
'div',
{
class: normalizeClass([
'node flex',
{
'node-current':
data22.id == unref(group).checked.id,
},
]),
style: { width: 'calc(100% - 24px)' },
},
[
_hoisted_5$9,
createElementVNode('div', _hoisted_6$6, [
createVNode$1(
EllipsisTooltip,
{
width: '100%',
content: data22.name,
},
null,
8,
['content']
),
]),
data22.id == unref(group).checked.id
? (openBlock(),
createElementBlock('span', _hoisted_7$6))
: createCommentVNode('', true),
],
2
),
]),
_: 1,
},
8,
['data', 'filter-node-method', 'onNodeClick']
),
]),
]),
createElementVNode('div', _hoisted_8$6, [
createVNode$1(
_component_el_button,
{
class: 'btn',
onClick:
_cache[1] ||
(_cache[1] = withModifiers(
($event) => (unref(group).visible = false),
['stop']
)),
},
{
default: withCtx(() => [_hoisted_9$5]),
_: 1,
}
),
createVNode$1(
_component_el_button,
{
class: 'btn btn-submit',
type: 'primary',
onClick: withModifiers(unref(group).confirm, [
'stop',
]),
},
{
default: withCtx(() => [_hoisted_10$5]),
_: 1,
},
8,
['onClick']
),
]),
]),
_: 1,
},
8,
['modelValue']
),
]),
_: 1,
},
8,
['modelValue', 'variableArchiveDisabled', 'data']
)
)
}
},
})
var VarHistoricArchiveConfig = /* @__PURE__ */ _export_sfc(_sfc_main$g, [
['__scopeId', 'data-v-ada8d0c2'],
])
var VarHistoricArchiveConfig$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: VarHistoricArchiveConfig,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ApplicationResource_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$e = { class: 'application-resource' }
const _hoisted_2$d = { class: 'tabs' }
const _hoisted_3$d = ['onClick']
const _hoisted_4$b = { class: 'panels' }
const _sfc_main$f = /* @__PURE__ */ defineComponent({
emits: ['resourceDrag'],
setup(__props2, { emit: emit2 }) {
function resourceDrag(e2, imgData) {
emit2('resourceDrag', e2, imgData)
}
const panelTabs = shallowRef([
{
label: '\u5E03\u5C40\u6846\u67B6',
size: 'large',
compt: defineAsyncComponent(() =>
Promise.resolve().then(function () {
return PanelContent$1
})
),
},
{
label: '\u5957\u4EF6\u8D44\u6E90',
compt: defineAsyncComponent(() =>
Promise.resolve().then(function () {
return PanelContent$1
})
),
},
])
const activeTab2 = shallowRef(panelTabs.value[0])
function change2(tab) {
activeTab2.value = tab
}
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$e, [
createElementVNode('ul', _hoisted_2$d, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(panelTabs), (item2, i2) => {
return (
openBlock(),
createElementBlock(
'li',
{
key: i2,
onClick: ($event) => change2(item2),
class: normalizeClass({
active: item2.label == unref(activeTab2).label,
}),
},
toDisplayString$1(item2.label),
11,
_hoisted_3$d
)
)
}),
128
)),
]),
createElementVNode('div', _hoisted_4$b, [
(openBlock(),
createBlock(
resolveDynamicComponent(unref(activeTab2).compt),
{
panelLabel: unref(activeTab2).label,
size: unref(activeTab2).size,
onResourceDrag: resourceDrag,
},
null,
8,
['panelLabel', 'size']
)),
]),
])
)
}
},
})
var ApplicationResource = /* @__PURE__ */ _export_sfc(_sfc_main$f, [
['__scopeId', 'data-v-d2f43342'],
])
var ApplicationResource$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ApplicationResource,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var History_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$a = (n2) => (
pushScopeId('data-v-2001e236'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$d = { class: 'history' }
const _hoisted_2$c = /* @__PURE__ */ _withScopeId$a(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-chexiao',
title: '\u64A4\u9500 Ctrl+Z',
},
null,
-1
)
)
const _hoisted_3$c = /* @__PURE__ */ _withScopeId$a(() =>
/* @__PURE__ */ createElementVNode(
'i',
{
class: 'iconfont icon-huifu',
title: '\u6062\u590D Ctrl+Y',
},
null,
-1
)
)
const _sfc_main$e = /* @__PURE__ */ defineComponent({
setup(__props2) {
return (_ctx, _cache) => {
const _component_el_button = resolveComponent('el-button')
return (
openBlock(),
createElementBlock('aside', _hoisted_1$d, [
createVNode$1(
_component_el_button,
{
onClick: unref(undo),
disabled: !unref(canUndo)(),
},
{
default: withCtx(() => [_hoisted_2$c]),
_: 1,
},
8,
['onClick', 'disabled']
),
createVNode$1(
_component_el_button,
{
onClick: unref(redo),
disabled: !unref(canRedo)(),
},
{
default: withCtx(() => [_hoisted_3$c]),
_: 1,
},
8,
['onClick', 'disabled']
),
])
)
}
},
})
var History = /* @__PURE__ */ _export_sfc(_sfc_main$e, [
['__scopeId', 'data-v-2001e236'],
])
var History$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: History,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Selected_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$9 = (n2) => (
pushScopeId('data-v-0735b85c'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$c = /* @__PURE__ */ _withScopeId$9(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-kongjiansuoding' },
null,
-1
)
)
const _hoisted_2$b = /* @__PURE__ */ _withScopeId$9(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-shijian2' },
null,
-1
)
)
const _hoisted_3$b = [_hoisted_1$c, _hoisted_2$b]
const _sfc_main$d = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const props2 = __props2
let el2 = ref()
const style2 = reactive({})
function getParentRect() {
const parentNode2 = el2.value?.parentElement
return parentNode2?.getBoundingClientRect()
}
function update3() {
const parentRect = getParentRect()
if (!parentRect) return
const dom = getDomByNode(props2.node)
if (!dom) {
Object.assign(style2, {
opacity: 0,
})
return
}
const domRect = dom.getBoundingClientRect()
const zoom = state$6.current.zoom
Object.assign(style2, {
opacity: 1,
left: domRect.left * zoom - parentRect.left - 1 + 'px',
top: domRect.top * zoom - parentRect.top - 1 + 'px',
width: domRect.width * zoom + 2 + 'px',
height: domRect.height * zoom + 2 + 'px',
})
}
const _update = lodash$2.exports.debounce(update3, 100)
watch$1(props2.node, () => nextTick(update3))
watch$1(state$6.current, () => nextTick(update3))
onMounted(update3)
addEventListener('resize', _update, true)
onUnmounted(() => {
removeEventListener('resize', _update, true)
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock(
'div',
{
ref_key: 'el',
ref: el2,
class: normalizeClass([
'select-container',
{
selected: unref(isSelectedNode)(__props2.node),
locked: props2.node.locked,
'event-binding': props2.node.blocks.length > 0,
},
]),
style: normalizeStyle$1(unref(style2)),
},
_hoisted_3$b,
6
)
)
}
},
})
var Selected = /* @__PURE__ */ _export_sfc(_sfc_main$d, [
['__scopeId', 'data-v-0735b85c'],
])
var Selected$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Selected,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Zoom_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$8 = (n2) => (
pushScopeId('data-v-ce864818'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$b = { class: 'scaling-zoom flex' }
const _hoisted_2$a = /* @__PURE__ */ _withScopeId$8(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-huamiansuoxiaoxuanfu1' },
null,
-1
)
)
const _hoisted_3$a = [_hoisted_2$a]
const _hoisted_4$a = /* @__PURE__ */ _withScopeId$8(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-huamianfangdaxuanfu1' },
null,
-1
)
)
const _hoisted_5$8 = [_hoisted_4$a]
const _sfc_main$c = /* @__PURE__ */ defineComponent({
props: {
zoom: {
type: Number,
required: false,
default: 1,
},
initialZoom: {
type: Number,
required: false,
default: 1,
},
maxZoom: {
type: Number,
required: false,
default: 2,
},
minZoom: {
type: Number,
required: false,
default: 0.2,
},
step: {
type: Number,
required: false,
default: 0.1,
},
},
setup(__props2, { expose }) {
const props2 = __props2
onMounted(() => {
initConfig({
zoom: props2.zoom,
init: props2.initialZoom,
max: props2.maxZoom,
min: props2.minZoom,
step: props2.step,
})
})
expose({
addZoom,
subtractZoom,
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$b, [
createElementVNode(
'div',
{
class: 'scaling-zoom-btn flex',
onClick:
_cache[0] ||
(_cache[0] = (...args) =>
unref(subtractZoom) && unref(subtractZoom)(...args)),
},
[
createElementVNode(
'span',
{
class: normalizeClass([
'icon-box flex',
Number(unref(state$6).current.zoom.toFixed(2)) ===
props2.minZoom
? 'icon-box-disabled'
: '',
]),
title: '\u7F29\u5C0F\u753B\u5E03 Ctrl+-',
'data-tooltip-placement': 'top',
},
_hoisted_3$a,
2
),
]
),
createElementVNode(
'span',
{
class: 'scaling-zoom-val',
onClick:
_cache[1] || (_cache[1] = ($event) => unref(setCanvasZoom)(1)),
title: '\u91CD\u7F6E\u753B\u5E03 Ctrl+0',
'data-tooltip-placement': 'top',
},
toDisplayString$1((unref(state$6).current.zoom * 100).toFixed(0)) +
'% ',
1
),
createElementVNode(
'div',
{
class: 'scaling-zoom-btn flex',
onClick:
_cache[2] ||
(_cache[2] = (...args) =>
unref(addZoom) && unref(addZoom)(...args)),
},
[
createElementVNode(
'span',
{
class: normalizeClass([
'icon-box flex',
Number(unref(state$6).current.zoom.toFixed(2)) ===
props2.maxZoom
? 'icon-box-disabled'
: '',
]),
title: '\u653E\u5927\u753B\u5E03 Ctrl++',
'data-tooltip-placement': 'top',
},
_hoisted_5$8,
2
),
]
),
])
)
}
},
})
var Zoom = /* @__PURE__ */ _export_sfc(_sfc_main$c, [
['__scopeId', 'data-v-ce864818'],
])
var Zoom$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Zoom,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var PanelLayout_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$7 = (n2) => (
pushScopeId('data-v-318fa9ec'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$a = { class: 'panel-layout' }
const _hoisted_2$9 = { class: 'search' }
const _hoisted_3$9 = { class: 'tab' }
const _hoisted_4$9 = { class: 'tabs' }
const _hoisted_5$7 = ['onClick']
const _hoisted_6$5 = ['onClick']
const _hoisted_7$5 = {
key: 0,
class: 'list',
}
const _hoisted_8$5 = ['src', 'ondragstart']
const _hoisted_9$4 = {
key: 1,
class: 'empty',
}
const _hoisted_10$4 = /* @__PURE__ */ _withScopeId$7(() =>
/* @__PURE__ */ createElementVNode('span', { class: 'bg' }, null, -1)
)
const _hoisted_11$3 = /* @__PURE__ */ _withScopeId$7(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'tip' },
'\u6682\u65E0\u6570\u636E',
-1
)
)
const _hoisted_12$3 = [_hoisted_10$4, _hoisted_11$3]
const _sfc_main$b = /* @__PURE__ */ defineComponent({
props: {
tabs: { default: () => [] },
data: null,
activeTab: null,
activeSubTab: null,
keyword: null,
size: null,
groupSize: null,
},
emits: [
'update:keyword',
'onSearch',
'onTabChange',
'onSubTabChange',
'resourceDrag',
],
setup(__props2, { expose, emit: emit2 }) {
const $props2 = __props2
let keyword = ref($props2.keyword)
let activeTab2 = ref($props2.activeTab)
let activeSubTab = ref($props2.activeSubTab)
function search2() {
emit2('update:keyword', keyword.value)
emit2('onSearch', keyword.value)
}
function tabChange(tab) {
activeTab2.value = tab
if (tab.nexts && tab.nexts.length) {
activeSubTab.value = tab.nexts[0]
subTabBarToggle.getVisible()
subTabBarToggle.toggle(false)
}
imageList.heightInit()
imageList.scrollTop()
emit2('onTabChange', tab)
}
function subTabChange(subTab) {
activeSubTab.value = subTab
imageList.scrollTop()
emit2('onSubTabChange', subTab)
}
function dragstart(e2, item2) {
emit2('resourceDrag', e2, item2)
}
const subTabBar = ref()
const subTabBarToggle = reactive({
wrapperHeight: 25,
diffHeight: 0,
visible: true,
active: false,
getVisible() {
nextTick(() => {
const ulH = subTabBar.value?.clientHeight || 0
const liH = subTabBar.value?.firstElementChild?.clientHeight || 0
subTabBarToggle.visible = ulH > liH
})
},
toggle(value2) {
const setValue = (active, wrapperHeight, diffHeight) => {
subTabBarToggle.active = active
subTabBarToggle.wrapperHeight = wrapperHeight
subTabBarToggle.diffHeight = diffHeight
}
if (value2 === false) {
setValue(false, subTabBarToggle.wrapperHeight, 0)
return
}
if (!subTabBar.value) return
const ulH = subTabBar.value?.clientHeight || 0
const liH = subTabBar.value?.firstElementChild?.clientHeight || 0
const ulWrapperH = subTabBar.value?.parentElement?.clientHeight || 0
if (ulWrapperH > liH) {
setValue(false, liH, 0)
} else {
setValue(true, ulH, ulH - liH)
}
},
})
const imageListRef = ref()
const imageList = reactive({
DEFAULT_HEIGHT: 500,
SUB_TAB_BAR_HEIGHT: 36,
height: 500,
heightInit() {
nextTick(() => {
imageList.height = subTabBar.value
? imageList.DEFAULT_HEIGHT - imageList.SUB_TAB_BAR_HEIGHT
: imageList.DEFAULT_HEIGHT
})
},
scrollTop() {
nextTick(() => {
if (imageListRef.value) imageListRef.value.scrollTop = 0
})
},
})
expose({
tabChange,
})
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
return (
openBlock(),
createElementBlock('div', _hoisted_1$a, [
createElementVNode('section', _hoisted_2$9, [
createVNode$1(
_component_el_input,
{
class: 'cms-el-input-x-search',
modelValue: keyword.value,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) => (keyword.value = $event)),
onChange: search2,
},
null,
8,
['modelValue']
),
]),
createElementVNode('section', _hoisted_3$9, [
createElementVNode('ul', _hoisted_4$9, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList($props2.tabs, (item2) => {
return (
openBlock(),
createElementBlock(
'li',
{
key: item2.key,
onClick: ($event) => tabChange(item2),
class: normalizeClass({
active: item2.key == activeTab2.value?.key,
}),
},
toDisplayString$1(item2.name),
11,
_hoisted_5$7
)
)
}),
128
)),
]),
activeTab2.value?.nexts?.length
? (openBlock(),
createElementBlock(
'div',
{
key: 0,
class: 'subtab-wrapper',
style: normalizeStyle$1({
height: unref(subTabBarToggle).wrapperHeight + 'px',
}),
},
[
withDirectives(
createElementVNode(
'i',
{
class: normalizeClass([
'iconfont icon-shouqifenlei toggle-btn',
{ active: unref(subTabBarToggle).active },
]),
onClick:
_cache[1] ||
(_cache[1] = (...args) =>
unref(subTabBarToggle).toggle &&
unref(subTabBarToggle).toggle(...args)),
},
null,
2
),
[[vShow, unref(subTabBarToggle).visible]]
),
createElementVNode(
'ul',
{
class: 'subtab',
ref_key: 'subTabBar',
ref: subTabBar,
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(activeTab2.value.nexts, (item2) => {
return (
openBlock(),
createElementBlock(
'li',
{
key: item2.key,
onClick: ($event) => subTabChange(item2),
class: normalizeClass({
active:
item2.key == activeSubTab.value?.key,
}),
},
toDisplayString$1(item2.name),
11,
_hoisted_6$5
)
)
}),
128
)),
],
512
),
],
4
))
: createCommentVNode('', true),
]),
$props2.data.length
? (openBlock(),
createElementBlock('section', _hoisted_7$5, [
createElementVNode(
'ul',
{
ref_key: 'imageListRef',
ref: imageListRef,
style: normalizeStyle$1({
height: unref(imageList).height + 'px',
paddingBottom: unref(subTabBarToggle).diffHeight + 'px',
}),
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList($props2.data, (item2, i2) => {
return (
openBlock(),
createElementBlock(
'li',
{
key: i2,
class: normalizeClass({
large:
($props2?.groupSize || $props2?.size) ==
'large',
}),
},
[
createElementVNode(
'img',
{
src:
item2.otherInfo.imageUrl || item2.imageUrl,
loading: 'lazy',
draggable: true,
ondragstart: (e2) => dragstart(e2, item2),
},
null,
8,
_hoisted_8$5
),
createVNode$1(
EllipsisTooltip,
{
class: 'name',
width: '100%',
placement: 'bottom-start',
content:
item2.otherInfo.imageName ||
item2.imageName,
},
null,
8,
['content']
),
],
2
)
)
}),
128
)),
],
4
),
]))
: (openBlock(),
createElementBlock('section', _hoisted_9$4, _hoisted_12$3)),
])
)
}
},
})
var PanelLayout = /* @__PURE__ */ _export_sfc(_sfc_main$b, [
['__scopeId', 'data-v-318fa9ec'],
])
var PanelLayout$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: PanelLayout,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var PanelContent_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$9 = { class: 'gallery-official' }
const _sfc_main$a = /* @__PURE__ */ defineComponent({
props: {
panelLabel: null,
size: null,
},
emits: ['resourceDrag'],
setup(__props2, { emit: emit2 }) {
const $props2 = __props2
const panelLayoutRef = ref()
let tabs2 = ref([])
let resourceList = ref([])
let keyword = ref('')
function search2() {
getData(groupPath.value)
}
let groupPath = ref($props2.panelLabel)
function tabChange(tab) {
groupPath.value = tab?.nexts?.length ? tab.nexts[0].key : tab.key
getData(groupPath.value)
}
function subTabChange(subTab) {
groupPath.value = subTab.key
getData(groupPath.value)
}
const getNav = () => {
return request({
url: `/api/v1/view/asset/gallery/struct?group=${$props2.panelLabel}`,
method: 'get',
silent: true,
}).then((res) => {
if (res?.nexts) {
tabs2.value = res.nexts
}
})
}
const getData = (groupPath2 = $props2.panelLabel) => {
const BASE_URL = request.defaults.baseURL
request({
url: `/api/v1/view/asset/gallery/tree?groupPath=${groupPath2}&keyword=${keyword.value}`,
method: 'get',
silent: true,
}).then((res) => {
if (res?.values) {
setImageSize(groupPath2)
resourceList.value = []
res.values.forEach((e2) => {
const indexInfo = JSON.parse(e2.indexJson)
const otherInfo = {
...e2,
imageUrl: `${BASE_URL}/api/v1/view/asset/gallery/${indexInfo.cover}?group=${groupPath2}/${e2.imageKey}`,
}
const resource = new Resource({ ...indexInfo, otherInfo })
resourceList.value.push(resource)
})
}
})
}
let groupSize = ref(void 0)
const LARGE_SIZE_GROUPS = [
'\u5957\u4EF6\u8D44\u6E90/\u57FA\u7840/\u83DC\u5355',
]
const setImageSize = (groupPath2) => {
if ($props2.size) return
groupSize.value = LARGE_SIZE_GROUPS.includes(groupPath2)
? 'large'
: void 0
}
function resourceDrag(e2, item2) {
emit2('resourceDrag', e2, item2)
}
onMounted(async () => {
await getNav()
if (tabs2.value.length) {
panelLayoutRef.value?.tabChange(tabs2.value[0])
}
})
return (_ctx, _cache) => {
return (
openBlock(),
createElementBlock('div', _hoisted_1$9, [
createVNode$1(
PanelLayout,
{
ref_key: 'panelLayoutRef',
ref: panelLayoutRef,
keyword: keyword.value,
'onUpdate:keyword':
_cache[0] || (_cache[0] = ($event) => (keyword.value = $event)),
tabs: tabs2.value,
data: resourceList.value,
size: $props2?.size,
groupSize: groupSize.value,
onOnSearch: search2,
onOnTabChange: tabChange,
onOnSubTabChange: subTabChange,
onResourceDrag: resourceDrag,
},
null,
8,
['keyword', 'tabs', 'data', 'size', 'groupSize']
),
])
)
}
},
})
var PanelContent = /* @__PURE__ */ _export_sfc(_sfc_main$a, [
['__scopeId', 'data-v-681e1940'],
])
var PanelContent$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: PanelContent,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var AlarmRecoverySetting_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$6 = (n2) => (
pushScopeId('data-v-afdd2768'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$8 = { class: 'dialog-content' }
const _hoisted_2$8 = { class: 'form-table' }
const _hoisted_3$8 = { class: 'wrapper' }
const _hoisted_4$8 = ['title', 'data-tooltip-disabled']
const _hoisted_5$6 = /* @__PURE__ */ _withScopeId$6(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-gengduo1 cms-more-btn' },
null,
-1
)
)
const _hoisted_6$4 = { style: { margin: '10px' } }
const _hoisted_7$4 = /* @__PURE__ */ createTextVNode('\u5168\u90E8\u6062\u590D')
const _hoisted_8$4 = /* @__PURE__ */ createTextVNode('\u4EFB\u4E00\u6062\u590D')
const _sfc_main$9 = /* @__PURE__ */ defineComponent({
props: {
setting: null,
dialogConfirm: { type: Function, default: () => {} },
dialogClose: { type: Function, default: () => {} },
},
setup(__props2) {
const $props2 = __props2
const setting2 = reactive($props2.setting)
let point = computed(() => {
let name2 = ''
setting2.detail.point.forEach((item2, i2) => {
name2 += item2.alarmPointName
i2 < setting2.detail.point.length - 1 ? (name2 += '\uFF0C') : null
})
return name2
})
const alarmConfirm = ({ checkedRecords }) => {
setting2.detail.point = checkedRecords
setting2.detail.checkedList = []
checkedRecords.forEach((item2) => {
setting2.detail.checkedList.push(item2.alarmPointId)
})
}
function confirm2() {
if (setting2.detail.name === '') {
toast('\u4E8B\u4EF6\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A', 'warning')
return
}
$props2.dialogConfirm(setting2.detail)
}
function cancel2() {
$props2.dialogClose()
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_radio = resolveComponent('el-radio')
const _component_el_radio_group = resolveComponent('el-radio-group')
const _component_el_form = resolveComponent('el-form')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
_component_el_dialog,
{
modelValue: unref(setting2).show,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) => (unref(setting2).show = $event)),
title: '\u8BBE\u7F6E',
'append-to-body': true,
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
width: '530px',
onClose: cancel2,
},
{
default: withCtx(() => [
createElementVNode('div', null, [
createElementVNode('div', _hoisted_1$8, [
createVNode$1(
_component_el_form,
{
onSubmit:
_cache[2] ||
(_cache[2] = withModifiers(() => {}, ['prevent'])),
'label-width': '95px',
'label-position': 'left',
class: 'cms-el-form',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$8, [
createVNode$1(
_component_el_form_item,
{ label: '\u4E8B\u4EF6\u540D\u79F0\uFF1A' },
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: unref(setting2).detail.name,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(setting2).detail.name =
$event)),
},
null,
8,
['modelValue']
),
]),
_: 1,
}
),
createVNode$1(
_component_el_form_item,
{ label: '\u62A5\u8B66\u70B9\uFF1A' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_3$8, [
createElementVNode(
'span',
{
title: unref(point),
'data-tooltip-disabled':
unref(point).length < 15,
},
toDisplayString$1(unref(point)),
9,
_hoisted_4$8
),
createVNode$1(
AlarmRecordsConf,
{
type: 'eventTrigger',
dialogTitle:
'\u9009\u62E9\u62A5\u8B66\u70B9',
defaultCheckKey:
unref(setting2).detail.checkedList,
onConfirm: alarmConfirm,
},
{
default: withCtx(() => [_hoisted_5$6]),
_: 1,
},
8,
['defaultCheckKey']
),
]),
createElementVNode('div', _hoisted_6$4, [
createVNode$1(
_component_el_radio_group,
{
modelValue:
unref(setting2).detail.triggerType,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(
setting2
).detail.triggerType = $event)),
},
{
default: withCtx(() => [
createVNode$1(
_component_el_radio,
{
label: 1,
class: 'cms-el-radio',
},
{
default: withCtx(() => [
_hoisted_7$4,
]),
_: 1,
}
),
createVNode$1(
_component_el_radio,
{
label: 2,
class: 'cms-el-radio',
},
{
default: withCtx(() => [
_hoisted_8$4,
]),
_: 1,
}
),
]),
_: 1,
},
8,
['modelValue']
),
]),
]),
_: 1,
}
),
]),
]),
_: 1,
}
),
]),
createElementVNode('div', { class: 'el-dialog__footer' }, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: cancel2,
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: confirm2,
},
'\u786E\u8BA4'
),
]),
]),
]),
_: 1,
},
8,
['modelValue']
),
])
)
}
},
})
var AlarmRecoverySetting = /* @__PURE__ */ _export_sfc(_sfc_main$9, [
['__scopeId', 'data-v-afdd2768'],
])
var AlarmRecoverySetting$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: AlarmRecoverySetting,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var AlarmSetting_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$5 = (n2) => (
pushScopeId('data-v-c1728fae'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$7 = { class: 'dialog-content' }
const _hoisted_2$7 = { class: 'form-table' }
const _hoisted_3$7 = { class: 'wrapper' }
const _hoisted_4$7 = ['title', 'data-tooltip-disabled']
const _hoisted_5$5 = /* @__PURE__ */ _withScopeId$5(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-gengduo1 cms-more-btn' },
null,
-1
)
)
const _sfc_main$8 = /* @__PURE__ */ defineComponent({
props: {
setting: null,
dialogConfirm: { type: Function, default: () => {} },
dialogClose: { type: Function, default: () => {} },
},
setup(__props2) {
const $props2 = __props2
const setting2 = reactive($props2.setting)
let point = computed(() => {
let name2 = ''
setting2.detail.point.forEach((item2, i2) => {
name2 += item2.alarmPointName
i2 < setting2.detail.point.length - 1 ? (name2 += '\uFF0C') : null
})
return name2
})
const alarmConfirm = ({ checkedRecords }) => {
setting2.detail.point = checkedRecords
setting2.detail.checkedList = []
checkedRecords.forEach((item2) => {
setting2.detail.checkedList.push(item2.alarmPointId)
})
}
function confirm2() {
if (setting2.detail.name === '') {
toast('\u4E8B\u4EF6\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A', 'warning')
return
}
$props2.dialogConfirm(setting2.detail)
}
function cancel2() {
$props2.dialogClose()
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_form = resolveComponent('el-form')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
_component_el_dialog,
{
modelValue: unref(setting2).show,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) => (unref(setting2).show = $event)),
title: '\u8BBE\u7F6E',
'append-to-body': true,
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
width: '530px',
onClose: cancel2,
},
{
default: withCtx(() => [
createElementVNode('div', null, [
createElementVNode('div', _hoisted_1$7, [
createVNode$1(
_component_el_form,
{
onSubmit:
_cache[1] ||
(_cache[1] = withModifiers(() => {}, ['prevent'])),
'label-width': '95px',
'label-position': 'left',
class: 'cms-el-form',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$7, [
createVNode$1(
_component_el_form_item,
{ label: '\u4E8B\u4EF6\u540D\u79F0\uFF1A' },
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: unref(setting2).detail.name,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(setting2).detail.name =
$event)),
},
null,
8,
['modelValue']
),
]),
_: 1,
}
),
createVNode$1(
_component_el_form_item,
{ label: '\u62A5\u8B66\u70B9\uFF1A' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_3$7, [
createElementVNode(
'span',
{
title: unref(point),
'data-tooltip-disabled':
unref(point).length < 15,
},
toDisplayString$1(unref(point)),
9,
_hoisted_4$7
),
createVNode$1(
AlarmRecordsConf,
{
type: 'eventTrigger',
dialogTitle:
'\u9009\u62E9\u62A5\u8B66\u70B9',
defaultCheckKey:
unref(setting2).detail.checkedList,
onConfirm: alarmConfirm,
},
{
default: withCtx(() => [_hoisted_5$5]),
_: 1,
},
8,
['defaultCheckKey']
),
]),
]),
_: 1,
}
),
]),
]),
_: 1,
}
),
]),
createElementVNode('div', { class: 'el-dialog__footer' }, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: cancel2,
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: confirm2,
},
'\u786E\u8BA4'
),
]),
]),
]),
_: 1,
},
8,
['modelValue']
),
])
)
}
},
})
var AlarmSetting = /* @__PURE__ */ _export_sfc(_sfc_main$8, [
['__scopeId', 'data-v-c1728fae'],
])
var AlarmSetting$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: AlarmSetting,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var OnBroadcastSetting_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$6 = { class: 'dialog-content' }
const _hoisted_2$6 = { class: 'form-table' }
const _hoisted_3$6 = { class: 'wrapper' }
const _hoisted_4$6 = { class: 'expression' }
const _sfc_main$7 = /* @__PURE__ */ defineComponent({
props: {
setting: null,
eventBlock: null,
dialogConfirm: { type: Function, default: () => {} },
dialogClose: { type: Function, default: () => {} },
},
setup(__props2) {
const $props2 = __props2
const setting2 = reactive($props2.setting)
const eventBlock = reactive($props2.eventBlock)
const expressionConfig = reactive({
visible: false,
code: '',
formulaConfirm: (code2) => {
expressionConfig.visible = false
setting2.detail.expression = code2
},
})
function trigger2() {
expressionConfig.visible = true
expressionConfig.code = setting2.detail.expression
}
function confirm2() {
let { name: name2, expression } = setting2.detail
if (!name2 || name2 === '') {
eventBlock.name = `\u63A5\u6536\u5230\u5E7F\u64AD(${expression}) `
}
$props2.dialogConfirm(setting2.detail)
}
function cancel2() {
$props2.dialogClose()
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_form = resolveComponent('el-form')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
_component_el_dialog,
{
modelValue: unref(setting2).show,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) => (unref(setting2).show = $event)),
title: '\u8BBE\u7F6E',
'append-to-body': true,
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
width: '530px',
onClose: cancel2,
},
{
default: withCtx(() => [
createElementVNode('div', null, [
createElementVNode('div', _hoisted_1$6, [
createVNode$1(
_component_el_form,
{
onSubmit:
_cache[2] ||
(_cache[2] = withModifiers(() => {}, ['prevent'])),
'label-width': '95px',
'label-position': 'left',
class: 'cms-el-form',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$6, [
createVNode$1(
_component_el_form_item,
{ label: '\u5E7F\u64AD\u5185\u5BB9\uFF1A' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_3$6, [
createElementVNode('div', _hoisted_4$6, [
createVNode$1(
_component_el_input,
{
modelValue:
unref(setting2).detail.expression,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(
setting2
).detail.expression = $event)),
title:
unref(setting2).detail.expression,
},
null,
8,
['modelValue', 'title']
),
createElementVNode('i', {
class: 'iconfont icon-bianliang1 fx',
onClick: trigger2,
}),
]),
]),
]),
_: 1,
}
),
createVNode$1(
_component_el_form_item,
{ label: '\u4E8B\u4EF6\u540D\u79F0\uFF1A' },
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue: unref(setting2).detail.name,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(setting2).detail.name =
$event)),
},
null,
8,
['modelValue']
),
]),
_: 1,
}
),
]),
]),
_: 1,
}
),
]),
createElementVNode('div', { class: 'el-dialog__footer' }, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: cancel2,
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: confirm2,
},
'\u786E\u8BA4'
),
]),
]),
createVNode$1(
FormulaConfigDialog$2,
{
title: '\u8868\u8FBE\u5F0F\u914D\u7F6E',
ref: 'FormulaConfig',
modelValue: unref(expressionConfig).visible,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(expressionConfig).visible = $event)),
code: unref(expressionConfig).code,
onChange: unref(expressionConfig).formulaConfirm,
},
null,
8,
['modelValue', 'code', 'onChange']
),
]),
_: 1,
},
8,
['modelValue']
),
])
)
}
},
})
var OnBroadcastSetting = /* @__PURE__ */ _export_sfc(_sfc_main$7, [
['__scopeId', 'data-v-2d1e51be'],
])
var OnBroadcastSetting$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: OnBroadcastSetting,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var TimerSetting_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$4 = (n2) => (
pushScopeId('data-v-60fce4ec'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$5 = { class: 'dialog-content' }
const _hoisted_2$5 = { class: 'form-table' }
const _hoisted_3$5 = { class: 'wrapper' }
const _hoisted_4$5 = /* @__PURE__ */ _withScopeId$4(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u6BCF', -1)
)
const _hoisted_5$4 = /* @__PURE__ */ _withScopeId$4(() =>
/* @__PURE__ */ createElementVNode(
'span',
null,
'\u6267\u884C\u4E00\u6B21',
-1
)
)
const _sfc_main$6 = /* @__PURE__ */ defineComponent({
props: {
timerSetting: null,
dialogConfirm: { type: Function, default: () => {} },
dialogClose: { type: Function, default: () => {} },
},
setup(__props2) {
const $props2 = __props2
const timerSetting = reactive($props2.timerSetting)
const toInteger2 = () => {
timerSetting.detail.frequency = Math.floor(timerSetting.detail.frequency)
}
function confirm2() {
if (timerSetting.detail.name === '') {
toast('\u4E8B\u4EF6\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A', 'warning')
return
}
$props2.dialogConfirm(timerSetting.detail)
}
function cancel2() {
$props2.dialogClose()
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_date_picker = resolveComponent('el-date-picker')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_form = resolveComponent('el-form')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
_component_el_dialog,
{
modelValue: unref(timerSetting).show,
'onUpdate:modelValue':
_cache[7] ||
(_cache[7] = ($event) => (unref(timerSetting).show = $event)),
title: '\u8BBE\u7F6E',
'append-to-body': true,
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
width: '530px',
onClose: cancel2,
},
{
default: withCtx(() => [
createElementVNode('div', null, [
createElementVNode('div', _hoisted_1$5, [
createVNode$1(
_component_el_form,
{
onSubmit:
_cache[6] ||
(_cache[6] = withModifiers(() => {}, ['prevent'])),
'label-width': '95px',
'label-position': 'left',
class: 'cms-el-form',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$5, [
createVNode$1(
_component_el_form_item,
{ label: '\u4E8B\u4EF6\u540D\u79F0\uFF1A' },
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue:
unref(timerSetting).detail.name,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(timerSetting).detail.name =
$event)),
},
null,
8,
['modelValue']
),
]),
_: 1,
}
),
createVNode$1(
_component_el_form_item,
{ label: '\u5F00\u59CB\u65F6\u95F4\uFF1A' },
{
default: withCtx(() => [
createVNode$1(
unref(ElConfigProvider),
{ locale: unref(zhCn) },
{
default: withCtx(() => [
createVNode$1(
_component_el_date_picker,
{
modelValue:
unref(timerSetting).detail.start,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(
timerSetting
).detail.start = $event)),
type: 'datetime',
clearable: true,
format: 'YYYY/MM/DD HH:mm:ss',
class: 'cms-el-date-picker',
'popper-class':
'cms-el-picker__popper',
},
null,
8,
['modelValue']
),
]),
_: 1,
},
8,
['locale']
),
]),
_: 1,
}
),
createVNode$1(
_component_el_form_item,
{ label: '\u6267\u884C\u9891\u7387\uFF1A' },
{
default: withCtx(() => [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select',
modelValue:
unref(timerSetting).detail
.frequencyType,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(
timerSetting
).detail.frequencyType = $event)),
'popper-class': 'cms-el-select__popper',
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
value: 0,
label:
'\u7B80\u5355\u91CD\u590D\u9891\u7387',
}),
]),
_: 1,
},
8,
['modelValue']
),
]),
_: 1,
}
),
createVNode$1(
_component_el_form_item,
{ label: '' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_3$5, [
_hoisted_4$5,
(openBlock(),
createBlock(
_component_el_input_number,
{
key: new Date().getTime(),
class: 'cms-el-input-number-x',
'controls-position': 'right',
min: 1,
modelValue:
unref(timerSetting).detail.frequency,
'onUpdate:modelValue':
_cache[3] ||
(_cache[3] = ($event) =>
(unref(
timerSetting
).detail.frequency = $event)),
onInput: toInteger2,
},
null,
8,
['modelValue']
)),
createVNode$1(
_component_el_select,
{
class: 'cms-el-select',
modelValue:
unref(timerSetting).detail.unit,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(timerSetting).detail.unit =
$event)),
'popper-class': 'cms-el-select__popper',
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
value: 0,
label: '\u79D2',
}),
createVNode$1(_component_el_option, {
value: 1,
label: '\u5206\u949F',
}),
createVNode$1(_component_el_option, {
value: 2,
label: '\u5C0F\u65F6',
}),
createVNode$1(_component_el_option, {
value: 3,
label: '\u5929',
}),
]),
_: 1,
},
8,
['modelValue']
),
_hoisted_5$4,
]),
]),
_: 1,
}
),
createVNode$1(
_component_el_form_item,
{ label: '\u7ED3\u675F\u65F6\u95F4\uFF1A' },
{
default: withCtx(() => [
createVNode$1(
unref(ElConfigProvider),
{ locale: unref(zhCn) },
{
default: withCtx(() => [
createVNode$1(
_component_el_date_picker,
{
modelValue:
unref(timerSetting).detail.end,
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) =>
(unref(
timerSetting
).detail.end = $event)),
type: 'datetime',
clearable: true,
format: 'YYYY/MM/DD HH:mm:ss',
class: 'cms-el-date-picker',
'popper-class':
'cms-el-picker__popper',
},
null,
8,
['modelValue']
),
]),
_: 1,
},
8,
['locale']
),
]),
_: 1,
}
),
]),
]),
_: 1,
}
),
]),
createElementVNode('div', { class: 'el-dialog__footer' }, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: cancel2,
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: confirm2,
},
'\u786E\u8BA4'
),
]),
]),
]),
_: 1,
},
8,
['modelValue']
),
])
)
}
},
})
var TimerSetting = /* @__PURE__ */ _export_sfc(_sfc_main$6, [
['__scopeId', 'data-v-60fce4ec'],
])
var TimerSetting$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: TimerSetting,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var VarConditionConfig_vue_vue_type_style_index_0_scoped_true_lang = ''
const _hoisted_1$4 = { class: 'dialog-content' }
const _hoisted_2$4 = { class: 'form-table' }
const _hoisted_3$4 = { class: 'wrapper' }
const _hoisted_4$4 = { class: 'expression' }
const _sfc_main$5 = /* @__PURE__ */ defineComponent({
props: {
conditionConfig: null,
eventBlock: null,
id: null,
dialogConfirm: { type: Function, default: () => {} },
dialogClose: { type: Function, default: () => {} },
},
setup(__props2) {
const $props2 = __props2
const conditionConfig = reactive($props2.conditionConfig)
const eventBlock = reactive($props2.eventBlock)
const expressionConfig = reactive({
visible: false,
code: '',
formulaConfirm: (code2) => {
expressionConfig.visible = false
conditionConfig.detail.expression = code2
},
})
function trigger2() {
expressionConfig.visible = true
expressionConfig.code = conditionConfig.detail.expression
}
function confirm2() {
let {
name: name2,
expression,
condition: condition2,
} = conditionConfig.detail
if (!name2 || name2 === '') {
eventBlock.name = `\u53D8\u91CF\u53D8\u5316(${expression} ${
[
'\u53D8\u771F',
'\u53D8\u5047',
'\u503C\u53D8\u5316',
'\u771F\u5047\u53D8\u5316',
][condition2 - 1]
})`
}
$props2.dialogConfirm(conditionConfig.detail)
}
function cancel2() {
$props2.dialogClose()
}
return (_ctx, _cache) => {
const _component_el_input = resolveComponent('el-input')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_form_item = resolveComponent('el-form-item')
const _component_el_form = resolveComponent('el-form')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createElementBlock('div', null, [
createVNode$1(
_component_el_dialog,
{
modelValue: unref(conditionConfig).show,
'onUpdate:modelValue':
_cache[5] ||
(_cache[5] = ($event) =>
(unref(conditionConfig).show = $event)),
title: '\u53D8\u91CF\u53D8\u5316\u914D\u7F6E',
'append-to-body': true,
'custom-class': 'cms-el-dialog',
'close-on-click-modal': false,
width: '480px',
onClose: cancel2,
},
{
default: withCtx(() => [
createElementVNode('div', null, [
createElementVNode('div', _hoisted_1$4, [
createVNode$1(
_component_el_form,
{
onSubmit:
_cache[3] ||
(_cache[3] = withModifiers(() => {}, ['prevent'])),
'label-width': '95px',
'label-position': 'left',
class: 'cms-el-form',
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_2$4, [
createVNode$1(
_component_el_form_item,
{ label: '\u89E6\u53D1\u6761\u4EF6\uFF1A' },
{
default: withCtx(() => [
createElementVNode('div', _hoisted_3$4, [
createElementVNode('div', _hoisted_4$4, [
createVNode$1(
_component_el_input,
{
modelValue:
unref(conditionConfig).detail
.expression,
'onUpdate:modelValue':
_cache[0] ||
(_cache[0] = ($event) =>
(unref(
conditionConfig
).detail.expression = $event)),
title:
unref(conditionConfig).detail
.expression,
},
null,
8,
['modelValue', 'title']
),
createElementVNode('i', {
class: 'iconfont icon-bianliang1 fx',
onClick: trigger2,
}),
]),
createVNode$1(
_component_el_select,
{
modelValue:
unref(conditionConfig).detail
.condition,
'onUpdate:modelValue':
_cache[1] ||
(_cache[1] = ($event) =>
(unref(
conditionConfig
).detail.condition = $event)),
class: 'cms-el-select',
'popper-class': 'cms-el-select__popper',
},
{
default: withCtx(() => [
createVNode$1(_component_el_option, {
value: 3,
label: '\u503C\u53D8\u5316',
}),
createVNode$1(_component_el_option, {
value: 4,
label: '\u771F\u5047\u53D8\u5316',
}),
createVNode$1(_component_el_option, {
value: 1,
label: '\u53D8\u771F',
}),
createVNode$1(_component_el_option, {
value: 2,
label: '\u53D8\u5047',
}),
]),
_: 1,
},
8,
['modelValue']
),
]),
]),
_: 1,
}
),
createVNode$1(
_component_el_form_item,
{ label: '\u4E8B\u4EF6\u540D\u79F0\uFF1A' },
{
default: withCtx(() => [
createVNode$1(
_component_el_input,
{
modelValue:
unref(conditionConfig).detail.name,
'onUpdate:modelValue':
_cache[2] ||
(_cache[2] = ($event) =>
(unref(conditionConfig).detail.name =
$event)),
},
null,
8,
['modelValue']
),
]),
_: 1,
}
),
]),
]),
_: 1,
}
),
]),
createElementVNode('div', { class: 'el-dialog__footer' }, [
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: cancel2,
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: confirm2,
},
'\u786E\u8BA4'
),
]),
]),
createVNode$1(
FormulaConfigDialog$2,
{
title: '\u8868\u8FBE\u5F0F\u914D\u7F6E',
ref: 'FormulaConfig',
modelValue: unref(expressionConfig).visible,
'onUpdate:modelValue':
_cache[4] ||
(_cache[4] = ($event) =>
(unref(expressionConfig).visible = $event)),
code: unref(expressionConfig).code,
onChange: unref(expressionConfig).formulaConfirm,
},
null,
8,
['modelValue', 'code', 'onChange']
),
]),
_: 1,
},
8,
['modelValue']
),
])
)
}
},
})
var VarConditionConfig = /* @__PURE__ */ _export_sfc(_sfc_main$5, [
['__scopeId', 'data-v-1e1f9309'],
])
var VarConditionConfig$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: VarConditionConfig,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Shadow_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$3 = (n2) => (
pushScopeId('data-v-c117523a'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$3 = { class: 'box-shadow-content' }
const _hoisted_2$3 = { class: 'item' }
const _hoisted_3$3 = { class: 'head' }
const _hoisted_4$3 = /* @__PURE__ */ _withScopeId$3(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u6C34\u5E73\u504F\u79FB\uFF1A',
-1
)
)
const _hoisted_5$3 = { class: 'value' }
const _hoisted_6$3 = { class: 'bar' }
const _hoisted_7$3 = { class: 'item' }
const _hoisted_8$3 = { class: 'head' }
const _hoisted_9$3 = /* @__PURE__ */ _withScopeId$3(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u5782\u76F4\u504F\u79FB\uFF1A',
-1
)
)
const _hoisted_10$3 = { class: 'value' }
const _hoisted_11$2 = { class: 'bar' }
const _hoisted_12$2 = { class: 'item' }
const _hoisted_13$2 = { class: 'head' }
const _hoisted_14$2 = /* @__PURE__ */ _withScopeId$3(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u6A21\u7CCA\u5EA6\uFF1A',
-1
)
)
const _hoisted_15$2 = { class: 'value' }
const _hoisted_16$2 = { class: 'bar' }
const _hoisted_17$2 = { class: 'item' }
const _hoisted_18$2 = { class: 'head' }
const _hoisted_19$2 = /* @__PURE__ */ _withScopeId$3(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u9634\u5F71\u5C3A\u5BF8\uFF1A',
-1
)
)
const _hoisted_20$2 = { class: 'value' }
const _hoisted_21$1 = { class: 'bar' }
const _hoisted_22$1 = { class: 'item' }
const _hoisted_23 = /* @__PURE__ */ _withScopeId$3(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'head' },
[
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u989C\u8272\uFF1A'
),
],
-1
)
)
const _hoisted_24 = { class: 'bar' }
const _sfc_main$4 = /* @__PURE__ */ defineComponent({
props: {
data: null,
configType: null,
},
emits: ['changeData'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
const changeData = (value2, index2) => {
emit2('changeData', value2, index2, props2.configType)
}
return (_ctx, _cache) => {
const _component_el_slider = resolveComponent('el-slider')
const _component_el_color_picker = resolveComponent('el-color-picker')
return (
openBlock(),
createElementBlock('div', _hoisted_1$3, [
createElementVNode('div', _hoisted_2$3, [
createElementVNode('div', _hoisted_3$3, [
_hoisted_4$3,
createElementVNode(
'div',
_hoisted_5$3,
toDisplayString$1(__props2.data[1]),
1
),
]),
createElementVNode('div', _hoisted_6$3, [
createVNode$1(
_component_el_slider,
{
'model-value': __props2.data[1]
? parseFloat(__props2.data[1])
: 0,
class: 'cms-el-slider-x',
min: -100,
max: 100,
onInput:
_cache[0] ||
(_cache[0] = ($event) => changeData($event, 1)),
},
null,
8,
['model-value']
),
]),
]),
createElementVNode('div', _hoisted_7$3, [
createElementVNode('div', _hoisted_8$3, [
_hoisted_9$3,
createElementVNode(
'div',
_hoisted_10$3,
toDisplayString$1(__props2.data[2]),
1
),
]),
createElementVNode('div', _hoisted_11$2, [
createVNode$1(
_component_el_slider,
{
'model-value': __props2.data[2]
? parseFloat(__props2.data[2])
: 0,
class: 'cms-el-slider-x',
min: -100,
max: 100,
onInput:
_cache[1] ||
(_cache[1] = ($event) => changeData($event, 2)),
},
null,
8,
['model-value']
),
]),
]),
createElementVNode('div', _hoisted_12$2, [
createElementVNode('div', _hoisted_13$2, [
_hoisted_14$2,
createElementVNode(
'div',
_hoisted_15$2,
toDisplayString$1(__props2.data[3]),
1
),
]),
createElementVNode('div', _hoisted_16$2, [
createVNode$1(
_component_el_slider,
{
'model-value': __props2.data[3]
? parseFloat(__props2.data[3])
: 0,
class: 'cms-el-slider-x',
max: 100,
onInput:
_cache[2] ||
(_cache[2] = ($event) => changeData($event, 3)),
},
null,
8,
['model-value']
),
]),
]),
createElementVNode('div', _hoisted_17$2, [
createElementVNode('div', _hoisted_18$2, [
_hoisted_19$2,
createElementVNode(
'div',
_hoisted_20$2,
toDisplayString$1(__props2.data[4]),
1
),
]),
createElementVNode('div', _hoisted_21$1, [
createVNode$1(
_component_el_slider,
{
'model-value': __props2.data[4]
? parseFloat(__props2.data[4])
: 0,
class: 'cms-el-slider-x',
max: 100,
onInput:
_cache[3] ||
(_cache[3] = ($event) => changeData($event, 4)),
},
null,
8,
['model-value']
),
]),
]),
createElementVNode('div', _hoisted_22$1, [
_hoisted_23,
createElementVNode('div', _hoisted_24, [
createVNode$1(
_component_el_color_picker,
{
'model-value': __props2.data[0],
'show-alpha': '',
onChange:
_cache[4] ||
(_cache[4] = ($event) => changeData($event, 0)),
},
null,
8,
['model-value']
),
]),
]),
])
)
}
},
})
var Shadow = /* @__PURE__ */ _export_sfc(_sfc_main$4, [
['__scopeId', 'data-v-c117523a'],
])
var Shadow$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Shadow,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var ShapeConfiguration_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$2 = (n2) => (
pushScopeId('data-v-3b0c991f'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$2 = { class: 'content' }
const _hoisted_2$2 = { class: 'content-item' }
const _hoisted_3$2 = /* @__PURE__ */ _withScopeId$2(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u586B\u5145',
-1
)
)
const _hoisted_4$2 = { class: 'cms-el-color-picker-x' }
const _hoisted_5$2 = { class: 'content-item' }
const _hoisted_6$2 = /* @__PURE__ */ _withScopeId$2(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u8FB9\u6846',
-1
)
)
const _hoisted_7$2 = { class: 'cms-el-color-picker-x color-picker' }
const _hoisted_8$2 = { class: 'border-width' }
const _hoisted_9$2 = { class: 'border-style' }
const _hoisted_10$2 = { class: 'content-item' }
const _hoisted_11$1 = /* @__PURE__ */ _withScopeId$2(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u9634\u5F71',
-1
)
)
const _hoisted_12$1 = { class: 'shadow-style' }
const _hoisted_13$1 = /* @__PURE__ */ _withScopeId$2(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-waibu' },
null,
-1
)
)
const _hoisted_14$1 = /* @__PURE__ */ _withScopeId$2(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u5916\u90E8', -1)
)
const _hoisted_15$1 = [_hoisted_13$1, _hoisted_14$1]
const _hoisted_16$1 = { class: 'shadow-style' }
const _hoisted_17$1 = /* @__PURE__ */ _withScopeId$2(() =>
/* @__PURE__ */ createElementVNode(
'i',
{ class: 'iconfont icon-neibu' },
null,
-1
)
)
const _hoisted_18$1 = /* @__PURE__ */ _withScopeId$2(() =>
/* @__PURE__ */ createElementVNode('span', null, '\u5185\u90E8', -1)
)
const _hoisted_19$1 = [_hoisted_17$1, _hoisted_18$1]
const _hoisted_20$1 = { class: 'content-item radius' }
const _hoisted_21 = /* @__PURE__ */ _withScopeId$2(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'title' },
'\u5706\u89D2',
-1
)
)
const _hoisted_22 = { class: 'border-radius' }
const _sfc_main$3 = /* @__PURE__ */ defineComponent({
props: {
data: null,
configType: null,
},
emits: ['changeData'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
let borderStyleList2 = ref([])
let showShadow = ref(-1)
const changeStyle = (value2, type4) => {
emit2('changeData', type4, value2, props2.configType)
}
const changeShadowOutset = (value2, index2) => {
let data2 = styleConverter(props2.data).boxShadow
data2[0][index2] = value2.toString()
emit2('changeData', 'boxShadow', data2, props2.configType)
}
const changeShadowInset = (value2, index2) => {
let data2 = styleConverter(props2.data).boxShadow
data2[1][index2] = value2.toString()
emit2('changeData', 'boxShadow', data2, props2.configType)
}
const showPop = (val2) => {
showShadow.value = val2
}
onMounted(() => {
borderStyleList2.value = [
{
label: '\u65E0\u8FB9\u6846',
src: '',
value: 'none',
},
{
label: '\u76F4\u7EBF',
src: '',
value: 'solid',
},
{
label: '\u865A\u7EBF',
src: '',
value: 'dashed',
},
{
label: '\u5706\u70B9',
src: '',
value: 'dotted',
},
]
})
return (_ctx, _cache) => {
const _component_el_color_picker = resolveComponent('el-color-picker')
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_popover = resolveComponent('el-popover')
return (
openBlock(),
createElementBlock('div', _hoisted_1$2, [
createElementVNode('div', _hoisted_2$2, [
_hoisted_3$2,
createElementVNode('div', _hoisted_4$2, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
'model-value': props2.data?.backgroundColor,
onChange:
_cache[0] ||
(_cache[0] = ($event) =>
changeStyle($event, 'backgroundColor')),
},
null,
8,
['model-value']
),
]),
]),
createElementVNode('div', _hoisted_5$2, [
_hoisted_6$2,
createElementVNode('div', _hoisted_7$2, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
'model-value': props2.data?.borderColor,
onChange:
_cache[1] ||
(_cache[1] = ($event) =>
changeStyle($event, 'borderColor')),
},
null,
8,
['model-value']
),
]),
createElementVNode('div', _hoisted_8$2, [
createVNode$1(
_component_el_input_number,
{
'model-value': props2.data?.borderWidth
? unref(styleConverter)(props2.data).borderWidth
: 0,
class: 'cms-el-input-number-x',
'controls-position': 'right',
min: 0,
onInput:
_cache[2] ||
(_cache[2] = ($event) =>
changeStyle($event, 'borderWidth')),
},
null,
8,
['model-value']
),
]),
createElementVNode('div', _hoisted_9$2, [
createVNode$1(
_component_el_select,
{
'model-value': props2.data?.borderStyle,
class: 'cms-el-select-x',
'popper-class': 'cms-el-select_check',
placeholder: '\u8BF7\u9009\u62E9',
onChange:
_cache[3] ||
(_cache[3] = ($event) =>
changeStyle($event, 'borderStyle')),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(borderStyleList2), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
},
null,
8,
['label', 'value']
)
)
}),
128
)),
]),
_: 1,
},
8,
['model-value']
),
]),
]),
createElementVNode('div', _hoisted_10$2, [
_hoisted_11$1,
createElementVNode('div', _hoisted_12$1, [
createVNode$1(
_component_el_popover,
{
placement: 'top',
'popper-class': 'shadow_popover',
width: 150,
'show-arrow': false,
'hide-after': 0,
trigger: 'click',
onShow: _cache[4] || (_cache[4] = ($event) => showPop(0)),
onHide: _cache[5] || (_cache[5] = ($event) => showPop(-1)),
},
{
reference: withCtx(() => [
createElementVNode(
'div',
{
class: normalizeClass([
'btn-title',
{ active: unref(showShadow) == 0 },
]),
},
_hoisted_15$1,
2
),
]),
default: withCtx(() => [
createVNode$1(
Shadow,
{
data: unref(styleConverter)(props2.data).boxShadow[0],
onChangeData: changeShadowOutset,
},
null,
8,
['data']
),
]),
_: 1,
}
),
]),
createElementVNode('div', _hoisted_16$1, [
createVNode$1(
_component_el_popover,
{
placement: 'top',
'popper-class': 'shadow_popover',
width: 150,
'show-arrow': false,
'hide-after': 0,
trigger: 'click',
onShow: _cache[6] || (_cache[6] = ($event) => showPop(1)),
onHide: _cache[7] || (_cache[7] = ($event) => showPop(-1)),
},
{
reference: withCtx(() => [
createElementVNode(
'div',
{
class: normalizeClass([
'btn-title',
{ active: unref(showShadow) == 1 },
]),
},
_hoisted_19$1,
2
),
]),
default: withCtx(() => [
createVNode$1(
Shadow,
{
data: unref(styleConverter)(props2.data).boxShadow[1],
onChangeData: changeShadowInset,
},
null,
8,
['data']
),
]),
_: 1,
}
),
]),
]),
createElementVNode('div', _hoisted_20$1, [
_hoisted_21,
createElementVNode('div', _hoisted_22, [
createVNode$1(
_component_el_input_number,
{
'model-value': props2.data?.borderRadius
? unref(styleConverter)(props2.data).borderRadius
: 0,
class: 'cms-el-input-number-x',
'controls-position': 'right',
min: 0,
onInput:
_cache[8] ||
(_cache[8] = ($event) =>
changeStyle($event, 'borderRadius')),
},
null,
8,
['model-value']
),
]),
]),
])
)
}
},
})
var ShapeConfiguration = /* @__PURE__ */ _export_sfc(_sfc_main$3, [
['__scopeId', 'data-v-3b0c991f'],
])
var ShapeConfiguration$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: ShapeConfiguration,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var TextConfiguration_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId$1 = (n2) => (
pushScopeId('data-v-66b257a4'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1$1 = { class: 'content' }
const _hoisted_2$1 = { class: 'content-item' }
const _hoisted_3$1 = { class: 'font-family' }
const _hoisted_4$1 = { class: 'font-size' }
const _hoisted_5$1 = { class: 'color' }
const _hoisted_6$1 = { class: 'cms-el-color-picker-x' }
const _hoisted_7$1 = { class: 'content-item middle' }
const _hoisted_8$1 = { class: 'font-style' }
const _hoisted_9$1 = ['onClick']
const _hoisted_10$1 = ['title']
const _hoisted_11 = { class: 'font-position' }
const _hoisted_12 = ['onClick']
const _hoisted_13 = ['title']
const _hoisted_14 = ['onClick']
const _hoisted_15 = ['title']
const _hoisted_16 = { class: 'content-item' }
const _hoisted_17 = { class: 'letter-spacing' }
const _hoisted_18 = /* @__PURE__ */ _withScopeId$1(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u5B57\u95F4\u8DDD',
-1
)
)
const _hoisted_19 = { class: 'line-height' }
const _hoisted_20 = /* @__PURE__ */ _withScopeId$1(() =>
/* @__PURE__ */ createElementVNode(
'span',
{ class: 'title' },
'\u884C\u95F4\u8DDD',
-1
)
)
const _sfc_main$2 = /* @__PURE__ */ defineComponent({
props: {
data: null,
configType: null,
},
emits: ['changeData'],
setup(__props2, { emit: emit2 }) {
const props2 = __props2
let fontFamilyList2 = ref([])
let fontStyleList = ref([])
let fontPositionList = ref([])
let fontPositionActive = ref(-1)
let fontPositionList1 = ref([])
let fontPositionActive1 = ref(-1)
const changeFontStyle = (item2) => {
item2.active = !item2.active
if (item2.active) {
emit2('changeData', item2.type, item2.value, props2.configType)
} else {
emit2('changeData', item2.type, item2.default, props2.configType)
}
}
const changeFontFamily = (val2) => {
emit2('changeData', 'fontFamily', val2, props2.configType)
}
const changeFont = (val2, type4) => {
emit2('changeData', type4, val2, props2.configType)
}
const changeFontPosition = (item2, index2) => {
fontPositionActive.value = index2
emit2('changeData', item2.type, item2.value, props2.configType)
}
const changeFontPosition1 = (item2, index2) => {
fontPositionActive1.value = index2
emit2('changeData', item2.type, item2.value, props2.configType)
}
const init2 = () => {
fontStyleList.value.forEach((item2) => {
if (props2.data && props2.data[item2.type] == item2.value) {
item2.active = true
}
})
let list2 = fontPositionList.value
for (let i2 = 0; i2 < list2.length; i2++) {
let item2 = list2[i2]
if (props2.data && props2.data[item2.type] == item2.value) {
fontPositionActive.value = i2
break
}
}
let list1 = fontPositionList1.value
for (let i2 = 0; i2 < list1.length; i2++) {
let item2 = list1[i2]
if (props2.data && props2.data[item2.type] == item2.value) {
fontPositionActive1.value = i2
break
}
}
}
onMounted(() => {
fontFamilyList2.value = [
{
label: '\u963F\u91CC\u5DF4\u5DF4 \u666E\u60E0\u4F53',
value: 'Alibaba PuHuiTi',
},
{
label: '\u5FAE\u8F6F\u96C5\u9ED1',
value: 'Microsoft YaHei',
},
]
fontStyleList.value = [
{
text: '\u7C97\u4F53',
type: 'fontWeight',
icon: 'icon-jiacu',
active: false,
default: '400',
value: '800',
},
{
text: '\u659C\u4F53',
type: 'fontStyle',
icon: 'icon-xieti',
active: false,
default: 'normal',
value: 'italic',
},
{
text: '\u4E0B\u5212\u7EBF',
type: 'textDecoration',
icon: 'icon-xiahuaxian',
active: false,
default: 'none',
value: 'underline',
},
]
fontPositionList.value = [
{
text: '\u5DE6\u5BF9\u9F50',
type: 'textAlign',
icon: 'icon-zuo',
value: 'left',
},
{
text: '\u5C45\u4E2D\u5BF9\u9F50',
type: 'textAlign',
icon: 'icon-zhong',
value: 'center',
},
{
text: '\u53F3\u5BF9\u9F50',
type: 'textAlign',
icon: 'icon-you',
value: 'right',
},
]
fontPositionList1.value = [
{
text: '\u9876\u90E8\u5BF9\u9F50',
type: 'alignItems',
icon: 'icon-dingduiqi',
value: 'flex-start',
},
{
text: '\u5C45\u4E2D\u5BF9\u9F50',
type: 'alignItems',
icon: 'icon-chuizhijuzhongduiqi',
value: 'center',
},
{
text: '\u5E95\u90E8\u5BF9\u9F50',
type: 'alignItems',
icon: 'icon-diduiqi',
value: 'flex-end',
},
]
init2()
})
return (_ctx, _cache) => {
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input_number = resolveComponent('el-input-number')
const _component_el_color_picker = resolveComponent('el-color-picker')
return (
openBlock(),
createElementBlock('div', _hoisted_1$1, [
createElementVNode('div', _hoisted_2$1, [
createElementVNode('div', _hoisted_3$1, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select-x',
'model-value': props2.data?.fontFamily,
'popper-class': 'cms-el-select_check',
placeholder: '\u8BF7\u9009\u62E9',
onChange: changeFontFamily,
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(fontFamilyList2), (item2) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item2.value,
label: item2.label,
value: item2.value,
hidden: item2.hidden,
},
null,
8,
['label', 'value', 'hidden']
)
)
}),
128
)),
]),
_: 1,
},
8,
['model-value']
),
]),
createElementVNode('div', _hoisted_4$1, [
createVNode$1(
_component_el_input_number,
{
class: 'cms-el-input-number-x',
'model-value': props2.data?.fontSize
? unref(styleConverter)(props2.data).fontSize
: 12,
'controls-position': 'right',
min: 12,
onInput:
_cache[0] ||
(_cache[0] = ($event) => changeFont($event, 'fontSize')),
},
null,
8,
['model-value']
),
]),
createElementVNode('div', _hoisted_5$1, [
createElementVNode('div', _hoisted_6$1, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
'model-value': props2.data?.color,
onChange:
_cache[1] ||
(_cache[1] = ($event) => changeFont($event, 'color')),
},
null,
8,
['model-value']
),
]),
]),
]),
createElementVNode('div', _hoisted_7$1, [
createElementVNode('div', _hoisted_8$1, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(fontStyleList), (item2, index2) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'item',
{ 'item-active': item2.active },
]),
key: 'fontStyle' + index2,
onClick: ($event) => changeFontStyle(item2),
},
[
createElementVNode(
'i',
{
class: normalizeClass(['iconfont', item2.icon]),
title: item2.text,
'data-tooltip-show-after': '300',
},
null,
10,
_hoisted_10$1
),
],
10,
_hoisted_9$1
)
)
}),
128
)),
]),
createElementVNode('div', _hoisted_11, [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(fontPositionList), (item2, index2) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'item',
{
'item-active': unref(fontPositionActive) == index2,
},
]),
key: 'fontPosition' + index2,
onClick: ($event) => changeFontPosition(item2, index2),
},
[
createElementVNode(
'i',
{
class: normalizeClass(['iconfont', item2.icon]),
title: item2.text,
'data-tooltip-show-after': '300',
},
null,
10,
_hoisted_13
),
],
10,
_hoisted_12
)
)
}),
128
)),
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(unref(fontPositionList1), (item2, index2) => {
return (
openBlock(),
createElementBlock(
'div',
{
class: normalizeClass([
'item',
{
'item-active': unref(fontPositionActive1) == index2,
},
]),
key: 'fontPosition1' + index2,
onClick: ($event) => changeFontPosition1(item2, index2),
},
[
createElementVNode(
'i',
{
class: normalizeClass(['iconfont', item2.icon]),
title: item2.text,
'data-tooltip-show-after': '300',
},
null,
10,
_hoisted_15
),
],
10,
_hoisted_14
)
)
}),
128
)),
]),
]),
createElementVNode('div', _hoisted_16, [
createElementVNode('div', _hoisted_17, [
_hoisted_18,
createVNode$1(
_component_el_input_number,
{
'model-value': props2.data?.letterSpacing
? unref(styleConverter)(props2.data).letterSpacing
: 2,
class: 'a1 cms-el-input-number-x',
'controls-position': 'right',
min: 0,
onInput:
_cache[2] ||
(_cache[2] = ($event) =>
changeFont($event, 'letterSpacing')),
},
null,
8,
['model-value']
),
]),
createElementVNode('div', _hoisted_19, [
_hoisted_20,
createVNode$1(
_component_el_input_number,
{
'model-value': props2.data?.lineHeight
? unref(styleConverter)(props2.data).lineHeight
: 7,
class: 'a1 cms-el-input-number-x',
'controls-position': 'right',
min: 0,
onInput:
_cache[3] ||
(_cache[3] = ($event) => changeFont($event, 'lineHeight')),
},
null,
8,
['model-value']
),
]),
]),
])
)
}
},
})
var TextConfiguration = /* @__PURE__ */ _export_sfc(_sfc_main$2, [
['__scopeId', 'data-v-66b257a4'],
])
var TextConfiguration$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: TextConfiguration,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
props: {
node: null,
},
setup(__props2) {
const $props2 = __props2
const node2 = reactive($props2.node)
return (_ctx, _cache) => {
return (
openBlock(),
createBlock(
_sfc_main$72,
{ title: 'SettingItemTPL' },
{
default: withCtx(() => [
createElementVNode(
'pre',
null,
toDisplayString$1(unref(node2)),
1
),
]),
_: 1,
}
)
)
}
},
})
var _ = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: _sfc_main$1,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var Dialog_vue_vue_type_style_index_0_scoped_true_lang = ''
const _withScopeId = (n2) => (
pushScopeId('data-v-4a8581ee'), (n2 = n2()), popScopeId(), n2
)
const _hoisted_1 = { class: 'centent' }
const _hoisted_2 = /* @__PURE__ */ _withScopeId(() =>
/* @__PURE__ */ createElementVNode(
'div',
{ class: 'item-cell handle-paixu' },
[/* @__PURE__ */ createElementVNode('i', { class: 'iconfont icon-paixu' })],
-1
)
)
const _hoisted_3 = { class: 'item-cell' }
const _hoisted_4 = { class: 'cms-el-color-picker-x' }
const _hoisted_5 = { class: 'item-cell' }
const _hoisted_6 = { class: 'item-cell' }
const _hoisted_7 = { class: 'field' }
const _hoisted_8 = { class: 'item-cell' }
const _hoisted_9 = { class: 'item-cell' }
const _hoisted_10 = ['onClick']
const _sfc_main = /* @__PURE__ */ defineComponent({
props: {
getData: null,
visible: { type: Boolean },
title: null,
},
emits: ['confirm', 'close'],
setup(__props2, { emit: $emit }) {
const props2 = __props2
const dialogUlList = ref()
let conditionList2 = ref(
props2.getData.conditionList.length > 0
? JSON.parse(JSON.stringify(props2.getData.conditionList))
: [
{
iconType: '',
fieldName: props2.getData.fieldName,
condition: '',
value: '',
color: '#80A8D5',
},
{
iconType: '',
fieldName: props2.getData.fieldName,
condition: '',
value: '',
color: '#80A8D5',
},
{
iconType: '',
fieldName: props2.getData.fieldName,
condition: '',
value: '',
color: '#80A8D5',
},
]
)
const cancel2 = () => {
$emit('close')
}
const confirm2 = () => {
$emit('confirm', conditionList2.value)
cancel2()
}
const addCondition = () => {
let setData = {
iconType: '',
fieldName: props2.getData.fieldName,
condition: '',
value: '',
color: '#80A8D5',
}
conditionList2.value.push(setData)
}
const delItem = (item2, index2) => {
conditionList2.value.splice(index2, 1)
}
const initSortable = () => {
nextTick(() => {
if (!dialogUlList.value) return
Sortable.create(dialogUlList.value, {
sort: true,
animation: 150,
handle: '.handle-paixu',
preventOnFilter: true,
ghostClass: 'blue-background-class',
onStart: () => {},
onEnd: (val2) => {
let oldIndex2 = val2.oldIndex
let newIndex2 = val2.newIndex
if (oldIndex2 > newIndex2) {
conditionList2.value.splice(
newIndex2,
0,
conditionList2.value[oldIndex2]
)
conditionList2.value.splice(oldIndex2 + 1, 1)
} else {
conditionList2.value.splice(
newIndex2,
0,
conditionList2.value[oldIndex2]
)
conditionList2.value.splice(oldIndex2, 1)
}
},
})
})
}
onMounted(() => {
initSortable()
})
return (_ctx, _cache) => {
const _component_el_color_picker = resolveComponent('el-color-picker')
const _component_el_option = resolveComponent('el-option')
const _component_el_select = resolveComponent('el-select')
const _component_el_input = resolveComponent('el-input')
const _component_el_dialog = resolveComponent('el-dialog')
return (
openBlock(),
createBlock(
_component_el_dialog,
{
'append-to-body': '',
'model-value': __props2.visible,
width: '570px',
top: '26vh',
title: __props2.title,
'custom-class': 'cms-el-dialog',
onClose: cancel2,
},
{
default: withCtx(() => [
createElementVNode('div', _hoisted_1, [
createElementVNode('div', { class: 'header' }, [
createElementVNode(
'button',
{
class: 'cms-btn btn-screen-btn',
onClick: addCondition,
},
'\u6DFB\u52A0'
),
]),
createElementVNode(
'ul',
{
ref_key: 'dialogUlList',
ref: dialogUlList,
id: 'dialogUlList',
class: 'list',
onUpdate:
_cache[0] ||
(_cache[0] = withModifiers(() => {}, ['stop'])),
},
[
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(conditionList2.value, (item2, index2) => {
return (
openBlock(),
createElementBlock(
'li',
{
class: 'list-item',
key: index2,
},
[
_hoisted_2,
createElementVNode('div', _hoisted_3, [
createElementVNode('div', _hoisted_4, [
createVNode$1(
_component_el_color_picker,
{
'show-alpha': '',
predefine: unref(colorList),
modelValue: item2.color,
'onUpdate:modelValue': ($event) =>
(item2.color = $event),
},
null,
8,
[
'predefine',
'modelValue',
'onUpdate:modelValue',
]
),
]),
]),
createElementVNode('div', _hoisted_5, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select add-select select',
'popper-class': 'cms-el-select_check',
modelValue: item2.iconType,
'onUpdate:modelValue': ($event) =>
(item2.iconType = $event),
'allow-create': '',
filterable: '',
placeholder: '\u7C7B\u578B',
style: normalizeStyle$1({
color: item2.color,
}),
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(iconList),
(item22) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item22.value,
label: item22.label,
value: item22.value,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue', 'style']
),
]),
createElementVNode('div', _hoisted_6, [
createElementVNode(
'div',
_hoisted_7,
toDisplayString$1(item2.fieldName),
1
),
]),
createElementVNode('div', _hoisted_8, [
createVNode$1(
_component_el_select,
{
class: 'cms-el-select add-select',
'popper-class': 'cms-el-select_check',
modelValue: item2.condition,
'onUpdate:modelValue': ($event) =>
(item2.condition = $event),
'allow-create': '',
filterable: '',
placeholder: '\u6761\u4EF6',
},
{
default: withCtx(() => [
(openBlock(true),
createElementBlock(
Fragment,
null,
renderList(
unref(conditionTypeList),
(item1) => {
return (
openBlock(),
createBlock(
_component_el_option,
{
key: item1.value,
label: item1.label,
value: item1.value,
},
null,
8,
['label', 'value']
)
)
}
),
128
)),
]),
_: 2,
},
1032,
['modelValue', 'onUpdate:modelValue']
),
]),
createElementVNode('div', _hoisted_9, [
createVNode$1(
_component_el_input,
{
modelValue: item2.value,
'onUpdate:modelValue': ($event) =>
(item2.value = $event),
class:
'cms-el-input-min cms-el-input-number add-select1',
placeholder:
'\u8BF7\u8F93\u5165\u6761\u4EF6',
},
null,
8,
['modelValue', 'onUpdate:modelValue']
),
]),
createElementVNode(
'i',
{
class: 'iconfont icon-tupianshanchu',
onClick: ($event) => delItem(item2, index2),
},
null,
8,
_hoisted_10
),
]
)
)
}),
128
)),
],
544
),
]),
createElementVNode(
'div',
{ class: 'el-dialog__footer el-dialog__footer1' },
[
createElementVNode(
'button',
{
class: 'btn btn-normal',
onClick: cancel2,
},
'\u53D6\u6D88'
),
createElementVNode(
'button',
{
class: 'btn btn-submit',
onClick: confirm2,
},
'\u786E\u8BA4'
),
]
),
]),
_: 1,
},
8,
['model-value', 'title']
)
)
}
},
})
var Dialog = /* @__PURE__ */ _export_sfc(_sfc_main, [
['__scopeId', 'data-v-4a8581ee'],
])
var Dialog$1 = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
default: Dialog,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
var cryptoJs$1 = { exports: {} }
var x64Core = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory) {
{
module2.exports = factory(core.exports)
}
})(commonjsGlobal, function (CryptoJS) {
;(function (undefined$1) {
var C2 = CryptoJS
var C_lib = C2.lib
var Base2 = C_lib.Base
var X32WordArray = C_lib.WordArray
var C_x64 = (C2.x64 = {})
C_x64.Word = Base2.extend({
init: function (high, low) {
this.high = high
this.low = low
},
})
C_x64.WordArray = Base2.extend({
init: function (words, sigBytes) {
words = this.words = words || []
if (sigBytes != undefined$1) {
this.sigBytes = sigBytes
} else {
this.sigBytes = words.length * 8
}
},
toX32: function () {
var x64Words = this.words
var x64WordsLength = x64Words.length
var x32Words = []
for (var i2 = 0; i2 < x64WordsLength; i2++) {
var x64Word = x64Words[i2]
x32Words.push(x64Word.high)
x32Words.push(x64Word.low)
}
return X32WordArray.create(x32Words, this.sigBytes)
},
clone: function () {
var clone2 = Base2.clone.call(this)
var words = (clone2.words = this.words.slice(0))
var wordsLength = words.length
for (var i2 = 0; i2 < wordsLength; i2++) {
words[i2] = words[i2].clone()
}
return clone2
},
})
})()
return CryptoJS
})
})(x64Core)
var encUtf16 = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory) {
{
module2.exports = factory(core.exports)
}
})(commonjsGlobal, function (CryptoJS) {
;(function () {
var C2 = CryptoJS
var C_lib = C2.lib
var WordArray = C_lib.WordArray
var C_enc = C2.enc
C_enc.Utf16 = C_enc.Utf16BE = {
stringify: function (wordArray) {
var words = wordArray.words
var sigBytes = wordArray.sigBytes
var utf16Chars = []
for (var i2 = 0; i2 < sigBytes; i2 += 2) {
var codePoint = (words[i2 >>> 2] >>> (16 - (i2 % 4) * 8)) & 65535
utf16Chars.push(String.fromCharCode(codePoint))
}
return utf16Chars.join('')
},
parse: function (utf16Str) {
var utf16StrLength = utf16Str.length
var words = []
for (var i2 = 0; i2 < utf16StrLength; i2++) {
words[i2 >>> 1] |= utf16Str.charCodeAt(i2) << (16 - (i2 % 2) * 16)
}
return WordArray.create(words, utf16StrLength * 2)
},
}
C_enc.Utf16LE = {
stringify: function (wordArray) {
var words = wordArray.words
var sigBytes = wordArray.sigBytes
var utf16Chars = []
for (var i2 = 0; i2 < sigBytes; i2 += 2) {
var codePoint = swapEndian(
(words[i2 >>> 2] >>> (16 - (i2 % 4) * 8)) & 65535
)
utf16Chars.push(String.fromCharCode(codePoint))
}
return utf16Chars.join('')
},
parse: function (utf16Str) {
var utf16StrLength = utf16Str.length
var words = []
for (var i2 = 0; i2 < utf16StrLength; i2++) {
words[i2 >>> 1] |= swapEndian(
utf16Str.charCodeAt(i2) << (16 - (i2 % 2) * 16)
)
}
return WordArray.create(words, utf16StrLength * 2)
},
}
function swapEndian(word) {
return ((word << 8) & 4278255360) | ((word >>> 8) & 16711935)
}
})()
return CryptoJS.enc.Utf16
})
})(encUtf16)
var encBase64 = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory) {
{
module2.exports = factory(core.exports)
}
})(commonjsGlobal, function (CryptoJS) {
;(function () {
var C2 = CryptoJS
var C_lib = C2.lib
var WordArray = C_lib.WordArray
var C_enc = C2.enc
C_enc.Base64 = {
stringify: function (wordArray) {
var words = wordArray.words
var sigBytes = wordArray.sigBytes
var map2 = this._map
wordArray.clamp()
var base64Chars = []
for (var i2 = 0; i2 < sigBytes; i2 += 3) {
var byte1 = (words[i2 >>> 2] >>> (24 - (i2 % 4) * 8)) & 255
var byte2 =
(words[(i2 + 1) >>> 2] >>> (24 - ((i2 + 1) % 4) * 8)) & 255
var byte3 =
(words[(i2 + 2) >>> 2] >>> (24 - ((i2 + 2) % 4) * 8)) & 255
var triplet = (byte1 << 16) | (byte2 << 8) | byte3
for (var j2 = 0; j2 < 4 && i2 + j2 * 0.75 < sigBytes; j2++) {
base64Chars.push(map2.charAt((triplet >>> (6 * (3 - j2))) & 63))
}
}
var paddingChar = map2.charAt(64)
if (paddingChar) {
while (base64Chars.length % 4) {
base64Chars.push(paddingChar)
}
}
return base64Chars.join('')
},
parse: function (base64Str) {
var base64StrLength = base64Str.length
var map2 = this._map
var reverseMap = this._reverseMap
if (!reverseMap) {
reverseMap = this._reverseMap = []
for (var j2 = 0; j2 < map2.length; j2++) {
reverseMap[map2.charCodeAt(j2)] = j2
}
}
var paddingChar = map2.charAt(64)
if (paddingChar) {
var paddingIndex = base64Str.indexOf(paddingChar)
if (paddingIndex !== -1) {
base64StrLength = paddingIndex
}
}
return parseLoop(base64Str, base64StrLength, reverseMap)
},
_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',
}
function parseLoop(base64Str, base64StrLength, reverseMap) {
var words = []
var nBytes = 0
for (var i2 = 0; i2 < base64StrLength; i2++) {
if (i2 % 4) {
var bits1 =
reverseMap[base64Str.charCodeAt(i2 - 1)] << ((i2 % 4) * 2)
var bits2 =
reverseMap[base64Str.charCodeAt(i2)] >>> (6 - (i2 % 4) * 2)
var bitsCombined = bits1 | bits2
words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8)
nBytes++
}
}
return WordArray.create(words, nBytes)
}
})()
return CryptoJS.enc.Base64
})
})(encBase64)
var encBase64url = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory) {
{
module2.exports = factory(core.exports)
}
})(commonjsGlobal, function (CryptoJS) {
;(function () {
var C2 = CryptoJS
var C_lib = C2.lib
var WordArray = C_lib.WordArray
var C_enc = C2.enc
C_enc.Base64url = {
stringify: function (wordArray, urlSafe) {
if (urlSafe === void 0) {
urlSafe = true
}
var words = wordArray.words
var sigBytes = wordArray.sigBytes
var map2 = urlSafe ? this._safe_map : this._map
wordArray.clamp()
var base64Chars = []
for (var i2 = 0; i2 < sigBytes; i2 += 3) {
var byte1 = (words[i2 >>> 2] >>> (24 - (i2 % 4) * 8)) & 255
var byte2 =
(words[(i2 + 1) >>> 2] >>> (24 - ((i2 + 1) % 4) * 8)) & 255
var byte3 =
(words[(i2 + 2) >>> 2] >>> (24 - ((i2 + 2) % 4) * 8)) & 255
var triplet = (byte1 << 16) | (byte2 << 8) | byte3
for (var j2 = 0; j2 < 4 && i2 + j2 * 0.75 < sigBytes; j2++) {
base64Chars.push(map2.charAt((triplet >>> (6 * (3 - j2))) & 63))
}
}
var paddingChar = map2.charAt(64)
if (paddingChar) {
while (base64Chars.length % 4) {
base64Chars.push(paddingChar)
}
}
return base64Chars.join('')
},
parse: function (base64Str, urlSafe) {
if (urlSafe === void 0) {
urlSafe = true
}
var base64StrLength = base64Str.length
var map2 = urlSafe ? this._safe_map : this._map
var reverseMap = this._reverseMap
if (!reverseMap) {
reverseMap = this._reverseMap = []
for (var j2 = 0; j2 < map2.length; j2++) {
reverseMap[map2.charCodeAt(j2)] = j2
}
}
var paddingChar = map2.charAt(64)
if (paddingChar) {
var paddingIndex = base64Str.indexOf(paddingChar)
if (paddingIndex !== -1) {
base64StrLength = paddingIndex
}
}
return parseLoop(base64Str, base64StrLength, reverseMap)
},
_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',
_safe_map:
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',
}
function parseLoop(base64Str, base64StrLength, reverseMap) {
var words = []
var nBytes = 0
for (var i2 = 0; i2 < base64StrLength; i2++) {
if (i2 % 4) {
var bits1 =
reverseMap[base64Str.charCodeAt(i2 - 1)] << ((i2 % 4) * 2)
var bits2 =
reverseMap[base64Str.charCodeAt(i2)] >>> (6 - (i2 % 4) * 2)
var bitsCombined = bits1 | bits2
words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8)
nBytes++
}
}
return WordArray.create(words, nBytes)
}
})()
return CryptoJS.enc.Base64url
})
})(encBase64url)
var sha1 = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory) {
{
module2.exports = factory(core.exports)
}
})(commonjsGlobal, function (CryptoJS) {
;(function () {
var C2 = CryptoJS
var C_lib = C2.lib
var WordArray = C_lib.WordArray
var Hasher = C_lib.Hasher
var C_algo = C2.algo
var W2 = []
var SHA1 = (C_algo.SHA1 = Hasher.extend({
_doReset: function () {
this._hash = new WordArray.init([
1732584193, 4023233417, 2562383102, 271733878, 3285377520,
])
},
_doProcessBlock: function (M2, offset2) {
var H4 = this._hash.words
var a2 = H4[0]
var b2 = H4[1]
var c2 = H4[2]
var d3 = H4[3]
var e2 = H4[4]
for (var i2 = 0; i2 < 80; i2++) {
if (i2 < 16) {
W2[i2] = M2[offset2 + i2] | 0
} else {
var n2 = W2[i2 - 3] ^ W2[i2 - 8] ^ W2[i2 - 14] ^ W2[i2 - 16]
W2[i2] = (n2 << 1) | (n2 >>> 31)
}
var t3 = ((a2 << 5) | (a2 >>> 27)) + e2 + W2[i2]
if (i2 < 20) {
t3 += ((b2 & c2) | (~b2 & d3)) + 1518500249
} else if (i2 < 40) {
t3 += (b2 ^ c2 ^ d3) + 1859775393
} else if (i2 < 60) {
t3 += ((b2 & c2) | (b2 & d3) | (c2 & d3)) - 1894007588
} else {
t3 += (b2 ^ c2 ^ d3) - 899497514
}
e2 = d3
d3 = c2
c2 = (b2 << 30) | (b2 >>> 2)
b2 = a2
a2 = t3
}
H4[0] = (H4[0] + a2) | 0
H4[1] = (H4[1] + b2) | 0
H4[2] = (H4[2] + c2) | 0
H4[3] = (H4[3] + d3) | 0
H4[4] = (H4[4] + e2) | 0
},
_doFinalize: function () {
var data2 = this._data
var dataWords = data2.words
var nBitsTotal = this._nDataBytes * 8
var nBitsLeft = data2.sigBytes * 8
dataWords[nBitsLeft >>> 5] |= 128 << (24 - (nBitsLeft % 32))
dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(
nBitsTotal / 4294967296
)
dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal
data2.sigBytes = dataWords.length * 4
this._process()
return this._hash
},
clone: function () {
var clone2 = Hasher.clone.call(this)
clone2._hash = this._hash.clone()
return clone2
},
}))
C2.SHA1 = Hasher._createHelper(SHA1)
C2.HmacSHA1 = Hasher._createHmacHelper(SHA1)
})()
return CryptoJS.SHA1
})
})(sha1)
var sha256 = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory) {
{
module2.exports = factory(core.exports)
}
})(commonjsGlobal, function (CryptoJS) {
;(function (Math2) {
var C2 = CryptoJS
var C_lib = C2.lib
var WordArray = C_lib.WordArray
var Hasher = C_lib.Hasher
var C_algo = C2.algo
var H4 = []
var K2 = []
;(function () {
function isPrime(n3) {
var sqrtN = Math2.sqrt(n3)
for (var factor = 2; factor <= sqrtN; factor++) {
if (!(n3 % factor)) {
return false
}
}
return true
}
function getFractionalBits(n3) {
return ((n3 - (n3 | 0)) * 4294967296) | 0
}
var n2 = 2
var nPrime = 0
while (nPrime < 64) {
if (isPrime(n2)) {
if (nPrime < 8) {
H4[nPrime] = getFractionalBits(Math2.pow(n2, 1 / 2))
}
K2[nPrime] = getFractionalBits(Math2.pow(n2, 1 / 3))
nPrime++
}
n2++
}
})()
var W2 = []
var SHA256 = (C_algo.SHA256 = Hasher.extend({
_doReset: function () {
this._hash = new WordArray.init(H4.slice(0))
},
_doProcessBlock: function (M2, offset2) {
var H5 = this._hash.words
var a2 = H5[0]
var b2 = H5[1]
var c2 = H5[2]
var d3 = H5[3]
var e2 = H5[4]
var f2 = H5[5]
var g2 = H5[6]
var h2 = H5[7]
for (var i2 = 0; i2 < 64; i2++) {
if (i2 < 16) {
W2[i2] = M2[offset2 + i2] | 0
} else {
var gamma0x = W2[i2 - 15]
var gamma0 =
((gamma0x << 25) | (gamma0x >>> 7)) ^
((gamma0x << 14) | (gamma0x >>> 18)) ^
(gamma0x >>> 3)
var gamma1x = W2[i2 - 2]
var gamma1 =
((gamma1x << 15) | (gamma1x >>> 17)) ^
((gamma1x << 13) | (gamma1x >>> 19)) ^
(gamma1x >>> 10)
W2[i2] = gamma0 + W2[i2 - 7] + gamma1 + W2[i2 - 16]
}
var ch = (e2 & f2) ^ (~e2 & g2)
var maj = (a2 & b2) ^ (a2 & c2) ^ (b2 & c2)
var sigma0 =
((a2 << 30) | (a2 >>> 2)) ^
((a2 << 19) | (a2 >>> 13)) ^
((a2 << 10) | (a2 >>> 22))
var sigma1 =
((e2 << 26) | (e2 >>> 6)) ^
((e2 << 21) | (e2 >>> 11)) ^
((e2 << 7) | (e2 >>> 25))
var t1 = h2 + sigma1 + ch + K2[i2] + W2[i2]
var t22 = sigma0 + maj
h2 = g2
g2 = f2
f2 = e2
e2 = (d3 + t1) | 0
d3 = c2
c2 = b2
b2 = a2
a2 = (t1 + t22) | 0
}
H5[0] = (H5[0] + a2) | 0
H5[1] = (H5[1] + b2) | 0
H5[2] = (H5[2] + c2) | 0
H5[3] = (H5[3] + d3) | 0
H5[4] = (H5[4] + e2) | 0
H5[5] = (H5[5] + f2) | 0
H5[6] = (H5[6] + g2) | 0
H5[7] = (H5[7] + h2) | 0
},
_doFinalize: function () {
var data2 = this._data
var dataWords = data2.words
var nBitsTotal = this._nDataBytes * 8
var nBitsLeft = data2.sigBytes * 8
dataWords[nBitsLeft >>> 5] |= 128 << (24 - (nBitsLeft % 32))
dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math2.floor(
nBitsTotal / 4294967296
)
dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal
data2.sigBytes = dataWords.length * 4
this._process()
return this._hash
},
clone: function () {
var clone2 = Hasher.clone.call(this)
clone2._hash = this._hash.clone()
return clone2
},
}))
C2.SHA256 = Hasher._createHelper(SHA256)
C2.HmacSHA256 = Hasher._createHmacHelper(SHA256)
})(Math)
return CryptoJS.SHA256
})
})(sha256)
var sha224 = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory, undef) {
{
module2.exports = factory(core.exports, sha256.exports)
}
})(commonjsGlobal, function (CryptoJS) {
;(function () {
var C2 = CryptoJS
var C_lib = C2.lib
var WordArray = C_lib.WordArray
var C_algo = C2.algo
var SHA256 = C_algo.SHA256
var SHA224 = (C_algo.SHA224 = SHA256.extend({
_doReset: function () {
this._hash = new WordArray.init([
3238371032, 914150663, 812702999, 4144912697, 4290775857,
1750603025, 1694076839, 3204075428,
])
},
_doFinalize: function () {
var hash2 = SHA256._doFinalize.call(this)
hash2.sigBytes -= 4
return hash2
},
}))
C2.SHA224 = SHA256._createHelper(SHA224)
C2.HmacSHA224 = SHA256._createHmacHelper(SHA224)
})()
return CryptoJS.SHA224
})
})(sha224)
var sha512 = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory, undef) {
{
module2.exports = factory(core.exports, x64Core.exports)
}
})(commonjsGlobal, function (CryptoJS) {
;(function () {
var C2 = CryptoJS
var C_lib = C2.lib
var Hasher = C_lib.Hasher
var C_x64 = C2.x64
var X64Word = C_x64.Word
var X64WordArray = C_x64.WordArray
var C_algo = C2.algo
function X64Word_create() {
return X64Word.create.apply(X64Word, arguments)
}
var K2 = [
X64Word_create(1116352408, 3609767458),
X64Word_create(1899447441, 602891725),
X64Word_create(3049323471, 3964484399),
X64Word_create(3921009573, 2173295548),
X64Word_create(961987163, 4081628472),
X64Word_create(1508970993, 3053834265),
X64Word_create(2453635748, 2937671579),
X64Word_create(2870763221, 3664609560),
X64Word_create(3624381080, 2734883394),
X64Word_create(310598401, 1164996542),
X64Word_create(607225278, 1323610764),
X64Word_create(1426881987, 3590304994),
X64Word_create(1925078388, 4068182383),
X64Word_create(2162078206, 991336113),
X64Word_create(2614888103, 633803317),
X64Word_create(3248222580, 3479774868),
X64Word_create(3835390401, 2666613458),
X64Word_create(4022224774, 944711139),
X64Word_create(264347078, 2341262773),
X64Word_create(604807628, 2007800933),
X64Word_create(770255983, 1495990901),
X64Word_create(1249150122, 1856431235),
X64Word_create(1555081692, 3175218132),
X64Word_create(1996064986, 2198950837),
X64Word_create(2554220882, 3999719339),
X64Word_create(2821834349, 766784016),
X64Word_create(2952996808, 2566594879),
X64Word_create(3210313671, 3203337956),
X64Word_create(3336571891, 1034457026),
X64Word_create(3584528711, 2466948901),
X64Word_create(113926993, 3758326383),
X64Word_create(338241895, 168717936),
X64Word_create(666307205, 1188179964),
X64Word_create(773529912, 1546045734),
X64Word_create(1294757372, 1522805485),
X64Word_create(1396182291, 2643833823),
X64Word_create(1695183700, 2343527390),
X64Word_create(1986661051, 1014477480),
X64Word_create(2177026350, 1206759142),
X64Word_create(2456956037, 344077627),
X64Word_create(2730485921, 1290863460),
X64Word_create(2820302411, 3158454273),
X64Word_create(3259730800, 3505952657),
X64Word_create(3345764771, 106217008),
X64Word_create(3516065817, 3606008344),
X64Word_create(3600352804, 1432725776),
X64Word_create(4094571909, 1467031594),
X64Word_create(275423344, 851169720),
X64Word_create(430227734, 3100823752),
X64Word_create(506948616, 1363258195),
X64Word_create(659060556, 3750685593),
X64Word_create(883997877, 3785050280),
X64Word_create(958139571, 3318307427),
X64Word_create(1322822218, 3812723403),
X64Word_create(1537002063, 2003034995),
X64Word_create(1747873779, 3602036899),
X64Word_create(1955562222, 1575990012),
X64Word_create(2024104815, 1125592928),
X64Word_create(2227730452, 2716904306),
X64Word_create(2361852424, 442776044),
X64Word_create(2428436474, 593698344),
X64Word_create(2756734187, 3733110249),
X64Word_create(3204031479, 2999351573),
X64Word_create(3329325298, 3815920427),
X64Word_create(3391569614, 3928383900),
X64Word_create(3515267271, 566280711),
X64Word_create(3940187606, 3454069534),
X64Word_create(4118630271, 4000239992),
X64Word_create(116418474, 1914138554),
X64Word_create(174292421, 2731055270),
X64Word_create(289380356, 3203993006),
X64Word_create(460393269, 320620315),
X64Word_create(685471733, 587496836),
X64Word_create(852142971, 1086792851),
X64Word_create(1017036298, 365543100),
X64Word_create(1126000580, 2618297676),
X64Word_create(1288033470, 3409855158),
X64Word_create(1501505948, 4234509866),
X64Word_create(1607167915, 987167468),
X64Word_create(1816402316, 1246189591),
]
var W2 = []
;(function () {
for (var i2 = 0; i2 < 80; i2++) {
W2[i2] = X64Word_create()
}
})()
var SHA512 = (C_algo.SHA512 = Hasher.extend({
_doReset: function () {
this._hash = new X64WordArray.init([
new X64Word.init(1779033703, 4089235720),
new X64Word.init(3144134277, 2227873595),
new X64Word.init(1013904242, 4271175723),
new X64Word.init(2773480762, 1595750129),
new X64Word.init(1359893119, 2917565137),
new X64Word.init(2600822924, 725511199),
new X64Word.init(528734635, 4215389547),
new X64Word.init(1541459225, 327033209),
])
},
_doProcessBlock: function (M2, offset2) {
var H4 = this._hash.words
var H0 = H4[0]
var H1 = H4[1]
var H22 = H4[2]
var H32 = H4[3]
var H42 = H4[4]
var H5 = H4[5]
var H6 = H4[6]
var H7 = H4[7]
var H0h = H0.high
var H0l = H0.low
var H1h = H1.high
var H1l = H1.low
var H2h = H22.high
var H2l = H22.low
var H3h = H32.high
var H3l = H32.low
var H4h = H42.high
var H4l = H42.low
var H5h = H5.high
var H5l = H5.low
var H6h = H6.high
var H6l = H6.low
var H7h = H7.high
var H7l = H7.low
var ah = H0h
var al = H0l
var bh = H1h
var bl = H1l
var ch = H2h
var cl = H2l
var dh = H3h
var dl = H3l
var eh = H4h
var el2 = H4l
var fh = H5h
var fl2 = H5l
var gh = H6h
var gl = H6l
var hh = H7h
var hl = H7l
for (var i2 = 0; i2 < 80; i2++) {
var Wil
var Wih
var Wi = W2[i2]
if (i2 < 16) {
Wih = Wi.high = M2[offset2 + i2 * 2] | 0
Wil = Wi.low = M2[offset2 + i2 * 2 + 1] | 0
} else {
var gamma0x = W2[i2 - 15]
var gamma0xh = gamma0x.high
var gamma0xl = gamma0x.low
var gamma0h =
((gamma0xh >>> 1) | (gamma0xl << 31)) ^
((gamma0xh >>> 8) | (gamma0xl << 24)) ^
(gamma0xh >>> 7)
var gamma0l =
((gamma0xl >>> 1) | (gamma0xh << 31)) ^
((gamma0xl >>> 8) | (gamma0xh << 24)) ^
((gamma0xl >>> 7) | (gamma0xh << 25))
var gamma1x = W2[i2 - 2]
var gamma1xh = gamma1x.high
var gamma1xl = gamma1x.low
var gamma1h =
((gamma1xh >>> 19) | (gamma1xl << 13)) ^
((gamma1xh << 3) | (gamma1xl >>> 29)) ^
(gamma1xh >>> 6)
var gamma1l =
((gamma1xl >>> 19) | (gamma1xh << 13)) ^
((gamma1xl << 3) | (gamma1xh >>> 29)) ^
((gamma1xl >>> 6) | (gamma1xh << 26))
var Wi7 = W2[i2 - 7]
var Wi7h = Wi7.high
var Wi7l = Wi7.low
var Wi16 = W2[i2 - 16]
var Wi16h = Wi16.high
var Wi16l = Wi16.low
Wil = gamma0l + Wi7l
Wih = gamma0h + Wi7h + (Wil >>> 0 < gamma0l >>> 0 ? 1 : 0)
Wil = Wil + gamma1l
Wih = Wih + gamma1h + (Wil >>> 0 < gamma1l >>> 0 ? 1 : 0)
Wil = Wil + Wi16l
Wih = Wih + Wi16h + (Wil >>> 0 < Wi16l >>> 0 ? 1 : 0)
Wi.high = Wih
Wi.low = Wil
}
var chh = (eh & fh) ^ (~eh & gh)
var chl = (el2 & fl2) ^ (~el2 & gl)
var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch)
var majl = (al & bl) ^ (al & cl) ^ (bl & cl)
var sigma0h =
((ah >>> 28) | (al << 4)) ^
((ah << 30) | (al >>> 2)) ^
((ah << 25) | (al >>> 7))
var sigma0l =
((al >>> 28) | (ah << 4)) ^
((al << 30) | (ah >>> 2)) ^
((al << 25) | (ah >>> 7))
var sigma1h =
((eh >>> 14) | (el2 << 18)) ^
((eh >>> 18) | (el2 << 14)) ^
((eh << 23) | (el2 >>> 9))
var sigma1l =
((el2 >>> 14) | (eh << 18)) ^
((el2 >>> 18) | (eh << 14)) ^
((el2 << 23) | (eh >>> 9))
var Ki = K2[i2]
var Kih = Ki.high
var Kil = Ki.low
var t1l = hl + sigma1l
var t1h = hh + sigma1h + (t1l >>> 0 < hl >>> 0 ? 1 : 0)
var t1l = t1l + chl
var t1h = t1h + chh + (t1l >>> 0 < chl >>> 0 ? 1 : 0)
var t1l = t1l + Kil
var t1h = t1h + Kih + (t1l >>> 0 < Kil >>> 0 ? 1 : 0)
var t1l = t1l + Wil
var t1h = t1h + Wih + (t1l >>> 0 < Wil >>> 0 ? 1 : 0)
var t2l = sigma0l + majl
var t2h = sigma0h + majh + (t2l >>> 0 < sigma0l >>> 0 ? 1 : 0)
hh = gh
hl = gl
gh = fh
gl = fl2
fh = eh
fl2 = el2
el2 = (dl + t1l) | 0
eh = (dh + t1h + (el2 >>> 0 < dl >>> 0 ? 1 : 0)) | 0
dh = ch
dl = cl
ch = bh
cl = bl
bh = ah
bl = al
al = (t1l + t2l) | 0
ah = (t1h + t2h + (al >>> 0 < t1l >>> 0 ? 1 : 0)) | 0
}
H0l = H0.low = H0l + al
H0.high = H0h + ah + (H0l >>> 0 < al >>> 0 ? 1 : 0)
H1l = H1.low = H1l + bl
H1.high = H1h + bh + (H1l >>> 0 < bl >>> 0 ? 1 : 0)
H2l = H22.low = H2l + cl
H22.high = H2h + ch + (H2l >>> 0 < cl >>> 0 ? 1 : 0)
H3l = H32.low = H3l + dl
H32.high = H3h + dh + (H3l >>> 0 < dl >>> 0 ? 1 : 0)
H4l = H42.low = H4l + el2
H42.high = H4h + eh + (H4l >>> 0 < el2 >>> 0 ? 1 : 0)
H5l = H5.low = H5l + fl2
H5.high = H5h + fh + (H5l >>> 0 < fl2 >>> 0 ? 1 : 0)
H6l = H6.low = H6l + gl
H6.high = H6h + gh + (H6l >>> 0 < gl >>> 0 ? 1 : 0)
H7l = H7.low = H7l + hl
H7.high = H7h + hh + (H7l >>> 0 < hl >>> 0 ? 1 : 0)
},
_doFinalize: function () {
var data2 = this._data
var dataWords = data2.words
var nBitsTotal = this._nDataBytes * 8
var nBitsLeft = data2.sigBytes * 8
dataWords[nBitsLeft >>> 5] |= 128 << (24 - (nBitsLeft % 32))
dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(
nBitsTotal / 4294967296
)
dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal
data2.sigBytes = dataWords.length * 4
this._process()
var hash2 = this._hash.toX32()
return hash2
},
clone: function () {
var clone2 = Hasher.clone.call(this)
clone2._hash = this._hash.clone()
return clone2
},
blockSize: 1024 / 32,
}))
C2.SHA512 = Hasher._createHelper(SHA512)
C2.HmacSHA512 = Hasher._createHmacHelper(SHA512)
})()
return CryptoJS.SHA512
})
})(sha512)
var sha384 = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory, undef) {
{
module2.exports = factory(core.exports, x64Core.exports, sha512.exports)
}
})(commonjsGlobal, function (CryptoJS) {
;(function () {
var C2 = CryptoJS
var C_x64 = C2.x64
var X64Word = C_x64.Word
var X64WordArray = C_x64.WordArray
var C_algo = C2.algo
var SHA512 = C_algo.SHA512
var SHA384 = (C_algo.SHA384 = SHA512.extend({
_doReset: function () {
this._hash = new X64WordArray.init([
new X64Word.init(3418070365, 3238371032),
new X64Word.init(1654270250, 914150663),
new X64Word.init(2438529370, 812702999),
new X64Word.init(355462360, 4144912697),
new X64Word.init(1731405415, 4290775857),
new X64Word.init(2394180231, 1750603025),
new X64Word.init(3675008525, 1694076839),
new X64Word.init(1203062813, 3204075428),
])
},
_doFinalize: function () {
var hash2 = SHA512._doFinalize.call(this)
hash2.sigBytes -= 16
return hash2
},
}))
C2.SHA384 = SHA512._createHelper(SHA384)
C2.HmacSHA384 = SHA512._createHmacHelper(SHA384)
})()
return CryptoJS.SHA384
})
})(sha384)
var sha3 = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory, undef) {
{
module2.exports = factory(core.exports, x64Core.exports)
}
})(commonjsGlobal, function (CryptoJS) {
;(function (Math2) {
var C2 = CryptoJS
var C_lib = C2.lib
var WordArray = C_lib.WordArray
var Hasher = C_lib.Hasher
var C_x64 = C2.x64
var X64Word = C_x64.Word
var C_algo = C2.algo
var RHO_OFFSETS = []
var PI_INDEXES = []
var ROUND_CONSTANTS = []
;(function () {
var x2 = 1,
y2 = 0
for (var t3 = 0; t3 < 24; t3++) {
RHO_OFFSETS[x2 + 5 * y2] = (((t3 + 1) * (t3 + 2)) / 2) % 64
var newX = y2 % 5
var newY = (2 * x2 + 3 * y2) % 5
x2 = newX
y2 = newY
}
for (var x2 = 0; x2 < 5; x2++) {
for (var y2 = 0; y2 < 5; y2++) {
PI_INDEXES[x2 + 5 * y2] = y2 + ((2 * x2 + 3 * y2) % 5) * 5
}
}
var LFSR = 1
for (var i2 = 0; i2 < 24; i2++) {
var roundConstantMsw = 0
var roundConstantLsw = 0
for (var j2 = 0; j2 < 7; j2++) {
if (LFSR & 1) {
var bitPosition = (1 << j2) - 1
if (bitPosition < 32) {
roundConstantLsw ^= 1 << bitPosition
} else {
roundConstantMsw ^= 1 << (bitPosition - 32)
}
}
if (LFSR & 128) {
LFSR = (LFSR << 1) ^ 113
} else {
LFSR <<= 1
}
}
ROUND_CONSTANTS[i2] = X64Word.create(
roundConstantMsw,
roundConstantLsw
)
}
})()
var T2 = []
;(function () {
for (var i2 = 0; i2 < 25; i2++) {
T2[i2] = X64Word.create()
}
})()
var SHA3 = (C_algo.SHA3 = Hasher.extend({
cfg: Hasher.cfg.extend({
outputLength: 512,
}),
_doReset: function () {
var state2 = (this._state = [])
for (var i2 = 0; i2 < 25; i2++) {
state2[i2] = new X64Word.init()
}
this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32
},
_doProcessBlock: function (M2, offset2) {
var state2 = this._state
var nBlockSizeLanes = this.blockSize / 2
for (var i2 = 0; i2 < nBlockSizeLanes; i2++) {
var M2i = M2[offset2 + 2 * i2]
var M2i1 = M2[offset2 + 2 * i2 + 1]
M2i =
(((M2i << 8) | (M2i >>> 24)) & 16711935) |
(((M2i << 24) | (M2i >>> 8)) & 4278255360)
M2i1 =
(((M2i1 << 8) | (M2i1 >>> 24)) & 16711935) |
(((M2i1 << 24) | (M2i1 >>> 8)) & 4278255360)
var lane = state2[i2]
lane.high ^= M2i1
lane.low ^= M2i
}
for (var round2 = 0; round2 < 24; round2++) {
for (var x2 = 0; x2 < 5; x2++) {
var tMsw = 0,
tLsw = 0
for (var y2 = 0; y2 < 5; y2++) {
var lane = state2[x2 + 5 * y2]
tMsw ^= lane.high
tLsw ^= lane.low
}
var Tx = T2[x2]
Tx.high = tMsw
Tx.low = tLsw
}
for (var x2 = 0; x2 < 5; x2++) {
var Tx4 = T2[(x2 + 4) % 5]
var Tx1 = T2[(x2 + 1) % 5]
var Tx1Msw = Tx1.high
var Tx1Lsw = Tx1.low
var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31))
var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31))
for (var y2 = 0; y2 < 5; y2++) {
var lane = state2[x2 + 5 * y2]
lane.high ^= tMsw
lane.low ^= tLsw
}
}
for (var laneIndex = 1; laneIndex < 25; laneIndex++) {
var tMsw
var tLsw
var lane = state2[laneIndex]
var laneMsw = lane.high
var laneLsw = lane.low
var rhoOffset = RHO_OFFSETS[laneIndex]
if (rhoOffset < 32) {
tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset))
tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset))
} else {
tMsw =
(laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset))
tLsw =
(laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset))
}
var TPiLane = T2[PI_INDEXES[laneIndex]]
TPiLane.high = tMsw
TPiLane.low = tLsw
}
var T0 = T2[0]
var state0 = state2[0]
T0.high = state0.high
T0.low = state0.low
for (var x2 = 0; x2 < 5; x2++) {
for (var y2 = 0; y2 < 5; y2++) {
var laneIndex = x2 + 5 * y2
var lane = state2[laneIndex]
var TLane = T2[laneIndex]
var Tx1Lane = T2[((x2 + 1) % 5) + 5 * y2]
var Tx2Lane = T2[((x2 + 2) % 5) + 5 * y2]
lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high)
lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low)
}
}
var lane = state2[0]
var roundConstant = ROUND_CONSTANTS[round2]
lane.high ^= roundConstant.high
lane.low ^= roundConstant.low
}
},
_doFinalize: function () {
var data2 = this._data
var dataWords = data2.words
this._nDataBytes * 8
var nBitsLeft = data2.sigBytes * 8
var blockSizeBits = this.blockSize * 32
dataWords[nBitsLeft >>> 5] |= 1 << (24 - (nBitsLeft % 32))
dataWords[
((Math2.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>>
5) -
1
] |= 128
data2.sigBytes = dataWords.length * 4
this._process()
var state2 = this._state
var outputLengthBytes = this.cfg.outputLength / 8
var outputLengthLanes = outputLengthBytes / 8
var hashWords = []
for (var i2 = 0; i2 < outputLengthLanes; i2++) {
var lane = state2[i2]
var laneMsw = lane.high
var laneLsw = lane.low
laneMsw =
(((laneMsw << 8) | (laneMsw >>> 24)) & 16711935) |
(((laneMsw << 24) | (laneMsw >>> 8)) & 4278255360)
laneLsw =
(((laneLsw << 8) | (laneLsw >>> 24)) & 16711935) |
(((laneLsw << 24) | (laneLsw >>> 8)) & 4278255360)
hashWords.push(laneLsw)
hashWords.push(laneMsw)
}
return new WordArray.init(hashWords, outputLengthBytes)
},
clone: function () {
var clone2 = Hasher.clone.call(this)
var state2 = (clone2._state = this._state.slice(0))
for (var i2 = 0; i2 < 25; i2++) {
state2[i2] = state2[i2].clone()
}
return clone2
},
}))
C2.SHA3 = Hasher._createHelper(SHA3)
C2.HmacSHA3 = Hasher._createHmacHelper(SHA3)
})(Math)
return CryptoJS.SHA3
})
})(sha3)
var ripemd160 = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory) {
{
module2.exports = factory(core.exports)
}
})(commonjsGlobal, function (CryptoJS) {
/** @preserve
(c) 2012 by Cédric Mesnil. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
;(function (Math2) {
var C2 = CryptoJS
var C_lib = C2.lib
var WordArray = C_lib.WordArray
var Hasher = C_lib.Hasher
var C_algo = C2.algo
var _zl = WordArray.create([
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10,
6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0,
6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,
4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13,
])
var _zr = WordArray.create([
5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0,
13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8,
12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10,
14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11,
])
var _sl = WordArray.create([
11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11,
9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14,
8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6,
5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6,
])
var _sr = WordArray.create([
8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7,
12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12,
13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12,
5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11,
])
var _hl = WordArray.create([
0, 1518500249, 1859775393, 2400959708, 2840853838,
])
var _hr = WordArray.create([
1352829926, 1548603684, 1836072691, 2053994217, 0,
])
var RIPEMD160 = (C_algo.RIPEMD160 = Hasher.extend({
_doReset: function () {
this._hash = WordArray.create([
1732584193, 4023233417, 2562383102, 271733878, 3285377520,
])
},
_doProcessBlock: function (M2, offset2) {
for (var i2 = 0; i2 < 16; i2++) {
var offset_i = offset2 + i2
var M_offset_i = M2[offset_i]
M2[offset_i] =
(((M_offset_i << 8) | (M_offset_i >>> 24)) & 16711935) |
(((M_offset_i << 24) | (M_offset_i >>> 8)) & 4278255360)
}
var H4 = this._hash.words
var hl = _hl.words
var hr2 = _hr.words
var zl = _zl.words
var zr = _zr.words
var sl2 = _sl.words
var sr2 = _sr.words
var al, bl, cl, dl, el2
var ar2, br, cr, dr, er
ar2 = al = H4[0]
br = bl = H4[1]
cr = cl = H4[2]
dr = dl = H4[3]
er = el2 = H4[4]
var t3
for (var i2 = 0; i2 < 80; i2 += 1) {
t3 = (al + M2[offset2 + zl[i2]]) | 0
if (i2 < 16) {
t3 += f1(bl, cl, dl) + hl[0]
} else if (i2 < 32) {
t3 += f2(bl, cl, dl) + hl[1]
} else if (i2 < 48) {
t3 += f3(bl, cl, dl) + hl[2]
} else if (i2 < 64) {
t3 += f4(bl, cl, dl) + hl[3]
} else {
t3 += f5(bl, cl, dl) + hl[4]
}
t3 = t3 | 0
t3 = rotl(t3, sl2[i2])
t3 = (t3 + el2) | 0
al = el2
el2 = dl
dl = rotl(cl, 10)
cl = bl
bl = t3
t3 = (ar2 + M2[offset2 + zr[i2]]) | 0
if (i2 < 16) {
t3 += f5(br, cr, dr) + hr2[0]
} else if (i2 < 32) {
t3 += f4(br, cr, dr) + hr2[1]
} else if (i2 < 48) {
t3 += f3(br, cr, dr) + hr2[2]
} else if (i2 < 64) {
t3 += f2(br, cr, dr) + hr2[3]
} else {
t3 += f1(br, cr, dr) + hr2[4]
}
t3 = t3 | 0
t3 = rotl(t3, sr2[i2])
t3 = (t3 + er) | 0
ar2 = er
er = dr
dr = rotl(cr, 10)
cr = br
br = t3
}
t3 = (H4[1] + cl + dr) | 0
H4[1] = (H4[2] + dl + er) | 0
H4[2] = (H4[3] + el2 + ar2) | 0
H4[3] = (H4[4] + al + br) | 0
H4[4] = (H4[0] + bl + cr) | 0
H4[0] = t3
},
_doFinalize: function () {
var data2 = this._data
var dataWords = data2.words
var nBitsTotal = this._nDataBytes * 8
var nBitsLeft = data2.sigBytes * 8
dataWords[nBitsLeft >>> 5] |= 128 << (24 - (nBitsLeft % 32))
dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] =
(((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 16711935) |
(((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 4278255360)
data2.sigBytes = (dataWords.length + 1) * 4
this._process()
var hash2 = this._hash
var H4 = hash2.words
for (var i2 = 0; i2 < 5; i2++) {
var H_i = H4[i2]
H4[i2] =
(((H_i << 8) | (H_i >>> 24)) & 16711935) |
(((H_i << 24) | (H_i >>> 8)) & 4278255360)
}
return hash2
},
clone: function () {
var clone2 = Hasher.clone.call(this)
clone2._hash = this._hash.clone()
return clone2
},
}))
function f1(x2, y2, z2) {
return x2 ^ y2 ^ z2
}
function f2(x2, y2, z2) {
return (x2 & y2) | (~x2 & z2)
}
function f3(x2, y2, z2) {
return (x2 | ~y2) ^ z2
}
function f4(x2, y2, z2) {
return (x2 & z2) | (y2 & ~z2)
}
function f5(x2, y2, z2) {
return x2 ^ (y2 | ~z2)
}
function rotl(x2, n2) {
return (x2 << n2) | (x2 >>> (32 - n2))
}
C2.RIPEMD160 = Hasher._createHelper(RIPEMD160)
C2.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160)
})()
return CryptoJS.RIPEMD160
})
})(ripemd160)
var hmac = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory) {
{
module2.exports = factory(core.exports)
}
})(commonjsGlobal, function (CryptoJS) {
;(function () {
var C2 = CryptoJS
var C_lib = C2.lib
var Base2 = C_lib.Base
var C_enc = C2.enc
var Utf8 = C_enc.Utf8
var C_algo = C2.algo
C_algo.HMAC = Base2.extend({
init: function (hasher, key2) {
hasher = this._hasher = new hasher.init()
if (typeof key2 == 'string') {
key2 = Utf8.parse(key2)
}
var hasherBlockSize = hasher.blockSize
var hasherBlockSizeBytes = hasherBlockSize * 4
if (key2.sigBytes > hasherBlockSizeBytes) {
key2 = hasher.finalize(key2)
}
key2.clamp()
var oKey = (this._oKey = key2.clone())
var iKey = (this._iKey = key2.clone())
var oKeyWords = oKey.words
var iKeyWords = iKey.words
for (var i2 = 0; i2 < hasherBlockSize; i2++) {
oKeyWords[i2] ^= 1549556828
iKeyWords[i2] ^= 909522486
}
oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes
this.reset()
},
reset: function () {
var hasher = this._hasher
hasher.reset()
hasher.update(this._iKey)
},
update: function (messageUpdate) {
this._hasher.update(messageUpdate)
return this
},
finalize: function (messageUpdate) {
var hasher = this._hasher
var innerHash = hasher.finalize(messageUpdate)
hasher.reset()
var hmac2 = hasher.finalize(this._oKey.clone().concat(innerHash))
return hmac2
},
})
})()
})
})(hmac)
var pbkdf2 = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory, undef) {
{
module2.exports = factory(core.exports, sha256.exports, hmac.exports)
}
})(commonjsGlobal, function (CryptoJS) {
;(function () {
var C2 = CryptoJS
var C_lib = C2.lib
var Base2 = C_lib.Base
var WordArray = C_lib.WordArray
var C_algo = C2.algo
var SHA256 = C_algo.SHA256
var HMAC = C_algo.HMAC
var PBKDF2 = (C_algo.PBKDF2 = Base2.extend({
cfg: Base2.extend({
keySize: 128 / 32,
hasher: SHA256,
iterations: 25e4,
}),
init: function (cfg) {
this.cfg = this.cfg.extend(cfg)
},
compute: function (password, salt) {
var cfg = this.cfg
var hmac2 = HMAC.create(cfg.hasher, password)
var derivedKey = WordArray.create()
var blockIndex = WordArray.create([1])
var derivedKeyWords = derivedKey.words
var blockIndexWords = blockIndex.words
var keySize = cfg.keySize
var iterations = cfg.iterations
while (derivedKeyWords.length < keySize) {
var block = hmac2.update(salt).finalize(blockIndex)
hmac2.reset()
var blockWords = block.words
var blockWordsLength = blockWords.length
var intermediate = block
for (var i2 = 1; i2 < iterations; i2++) {
intermediate = hmac2.finalize(intermediate)
hmac2.reset()
var intermediateWords = intermediate.words
for (var j2 = 0; j2 < blockWordsLength; j2++) {
blockWords[j2] ^= intermediateWords[j2]
}
}
derivedKey.concat(block)
blockIndexWords[0]++
}
derivedKey.sigBytes = keySize * 4
return derivedKey
},
}))
C2.PBKDF2 = function (password, salt, cfg) {
return PBKDF2.create(cfg).compute(password, salt)
}
})()
return CryptoJS.PBKDF2
})
})(pbkdf2)
var evpkdf = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory, undef) {
{
module2.exports = factory(core.exports, sha1.exports, hmac.exports)
}
})(commonjsGlobal, function (CryptoJS) {
;(function () {
var C2 = CryptoJS
var C_lib = C2.lib
var Base2 = C_lib.Base
var WordArray = C_lib.WordArray
var C_algo = C2.algo
var MD52 = C_algo.MD5
var EvpKDF = (C_algo.EvpKDF = Base2.extend({
cfg: Base2.extend({
keySize: 128 / 32,
hasher: MD52,
iterations: 1,
}),
init: function (cfg) {
this.cfg = this.cfg.extend(cfg)
},
compute: function (password, salt) {
var block
var cfg = this.cfg
var hasher = cfg.hasher.create()
var derivedKey = WordArray.create()
var derivedKeyWords = derivedKey.words
var keySize = cfg.keySize
var iterations = cfg.iterations
while (derivedKeyWords.length < keySize) {
if (block) {
hasher.update(block)
}
block = hasher.update(password).finalize(salt)
hasher.reset()
for (var i2 = 1; i2 < iterations; i2++) {
block = hasher.finalize(block)
hasher.reset()
}
derivedKey.concat(block)
}
derivedKey.sigBytes = keySize * 4
return derivedKey
},
}))
C2.EvpKDF = function (password, salt, cfg) {
return EvpKDF.create(cfg).compute(password, salt)
}
})()
return CryptoJS.EvpKDF
})
})(evpkdf)
var cipherCore = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory, undef) {
{
module2.exports = factory(core.exports, evpkdf.exports)
}
})(commonjsGlobal, function (CryptoJS) {
CryptoJS.lib.Cipher ||
(function (undefined$1) {
var C2 = CryptoJS
var C_lib = C2.lib
var Base2 = C_lib.Base
var WordArray = C_lib.WordArray
var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm
var C_enc = C2.enc
C_enc.Utf8
var Base642 = C_enc.Base64
var C_algo = C2.algo
var EvpKDF = C_algo.EvpKDF
var Cipher = (C_lib.Cipher = BufferedBlockAlgorithm.extend({
cfg: Base2.extend(),
createEncryptor: function (key2, cfg) {
return this.create(this._ENC_XFORM_MODE, key2, cfg)
},
createDecryptor: function (key2, cfg) {
return this.create(this._DEC_XFORM_MODE, key2, cfg)
},
init: function (xformMode, key2, cfg) {
this.cfg = this.cfg.extend(cfg)
this._xformMode = xformMode
this._key = key2
this.reset()
},
reset: function () {
BufferedBlockAlgorithm.reset.call(this)
this._doReset()
},
process: function (dataUpdate) {
this._append(dataUpdate)
return this._process()
},
finalize: function (dataUpdate) {
if (dataUpdate) {
this._append(dataUpdate)
}
var finalProcessedData = this._doFinalize()
return finalProcessedData
},
keySize: 128 / 32,
ivSize: 128 / 32,
_ENC_XFORM_MODE: 1,
_DEC_XFORM_MODE: 2,
_createHelper: (function () {
function selectCipherStrategy(key2) {
if (typeof key2 == 'string') {
return PasswordBasedCipher
} else {
return SerializableCipher
}
}
return function (cipher) {
return {
encrypt: function (message2, key2, cfg) {
return selectCipherStrategy(key2).encrypt(
cipher,
message2,
key2,
cfg
)
},
decrypt: function (ciphertext, key2, cfg) {
return selectCipherStrategy(key2).decrypt(
cipher,
ciphertext,
key2,
cfg
)
},
}
}
})(),
}))
C_lib.StreamCipher = Cipher.extend({
_doFinalize: function () {
var finalProcessedBlocks = this._process(true)
return finalProcessedBlocks
},
blockSize: 1,
})
var C_mode = (C2.mode = {})
var BlockCipherMode = (C_lib.BlockCipherMode = Base2.extend({
createEncryptor: function (cipher, iv) {
return this.Encryptor.create(cipher, iv)
},
createDecryptor: function (cipher, iv) {
return this.Decryptor.create(cipher, iv)
},
init: function (cipher, iv) {
this._cipher = cipher
this._iv = iv
},
}))
var CBC = (C_mode.CBC = (function () {
var CBC2 = BlockCipherMode.extend()
CBC2.Encryptor = CBC2.extend({
processBlock: function (words, offset2) {
var cipher = this._cipher
var blockSize = cipher.blockSize
xorBlock.call(this, words, offset2, blockSize)
cipher.encryptBlock(words, offset2)
this._prevBlock = words.slice(offset2, offset2 + blockSize)
},
})
CBC2.Decryptor = CBC2.extend({
processBlock: function (words, offset2) {
var cipher = this._cipher
var blockSize = cipher.blockSize
var thisBlock = words.slice(offset2, offset2 + blockSize)
cipher.decryptBlock(words, offset2)
xorBlock.call(this, words, offset2, blockSize)
this._prevBlock = thisBlock
},
})
function xorBlock(words, offset2, blockSize) {
var block
var iv = this._iv
if (iv) {
block = iv
this._iv = undefined$1
} else {
block = this._prevBlock
}
for (var i2 = 0; i2 < blockSize; i2++) {
words[offset2 + i2] ^= block[i2]
}
}
return CBC2
})())
var C_pad = (C2.pad = {})
var Pkcs7 = (C_pad.Pkcs7 = {
pad: function (data2, blockSize) {
var blockSizeBytes = blockSize * 4
var nPaddingBytes =
blockSizeBytes - (data2.sigBytes % blockSizeBytes)
var paddingWord =
(nPaddingBytes << 24) |
(nPaddingBytes << 16) |
(nPaddingBytes << 8) |
nPaddingBytes
var paddingWords = []
for (var i2 = 0; i2 < nPaddingBytes; i2 += 4) {
paddingWords.push(paddingWord)
}
var padding = WordArray.create(paddingWords, nPaddingBytes)
data2.concat(padding)
},
unpad: function (data2) {
var nPaddingBytes = data2.words[(data2.sigBytes - 1) >>> 2] & 255
data2.sigBytes -= nPaddingBytes
},
})
C_lib.BlockCipher = Cipher.extend({
cfg: Cipher.cfg.extend({
mode: CBC,
padding: Pkcs7,
}),
reset: function () {
var modeCreator
Cipher.reset.call(this)
var cfg = this.cfg
var iv = cfg.iv
var mode2 = cfg.mode
if (this._xformMode == this._ENC_XFORM_MODE) {
modeCreator = mode2.createEncryptor
} else {
modeCreator = mode2.createDecryptor
this._minBufferSize = 1
}
if (this._mode && this._mode.__creator == modeCreator) {
this._mode.init(this, iv && iv.words)
} else {
this._mode = modeCreator.call(mode2, this, iv && iv.words)
this._mode.__creator = modeCreator
}
},
_doProcessBlock: function (words, offset2) {
this._mode.processBlock(words, offset2)
},
_doFinalize: function () {
var finalProcessedBlocks
var padding = this.cfg.padding
if (this._xformMode == this._ENC_XFORM_MODE) {
padding.pad(this._data, this.blockSize)
finalProcessedBlocks = this._process(true)
} else {
finalProcessedBlocks = this._process(true)
padding.unpad(finalProcessedBlocks)
}
return finalProcessedBlocks
},
blockSize: 128 / 32,
})
var CipherParams = (C_lib.CipherParams = Base2.extend({
init: function (cipherParams) {
this.mixIn(cipherParams)
},
toString: function (formatter2) {
return (formatter2 || this.formatter).stringify(this)
},
}))
var C_format = (C2.format = {})
var OpenSSLFormatter = (C_format.OpenSSL = {
stringify: function (cipherParams) {
var wordArray
var ciphertext = cipherParams.ciphertext
var salt = cipherParams.salt
if (salt) {
wordArray = WordArray.create([1398893684, 1701076831])
.concat(salt)
.concat(ciphertext)
} else {
wordArray = ciphertext
}
return wordArray.toString(Base642)
},
parse: function (openSSLStr) {
var salt
var ciphertext = Base642.parse(openSSLStr)
var ciphertextWords = ciphertext.words
if (
ciphertextWords[0] == 1398893684 &&
ciphertextWords[1] == 1701076831
) {
salt = WordArray.create(ciphertextWords.slice(2, 4))
ciphertextWords.splice(0, 4)
ciphertext.sigBytes -= 16
}
return CipherParams.create({ ciphertext, salt })
},
})
var SerializableCipher = (C_lib.SerializableCipher = Base2.extend({
cfg: Base2.extend({
format: OpenSSLFormatter,
}),
encrypt: function (cipher, message2, key2, cfg) {
cfg = this.cfg.extend(cfg)
var encryptor = cipher.createEncryptor(key2, cfg)
var ciphertext = encryptor.finalize(message2)
var cipherCfg = encryptor.cfg
return CipherParams.create({
ciphertext,
key: key2,
iv: cipherCfg.iv,
algorithm: cipher,
mode: cipherCfg.mode,
padding: cipherCfg.padding,
blockSize: cipher.blockSize,
formatter: cfg.format,
})
},
decrypt: function (cipher, ciphertext, key2, cfg) {
cfg = this.cfg.extend(cfg)
ciphertext = this._parse(ciphertext, cfg.format)
var plaintext = cipher
.createDecryptor(key2, cfg)
.finalize(ciphertext.ciphertext)
return plaintext
},
_parse: function (ciphertext, format2) {
if (typeof ciphertext == 'string') {
return format2.parse(ciphertext, this)
} else {
return ciphertext
}
},
}))
var C_kdf = (C2.kdf = {})
var OpenSSLKdf = (C_kdf.OpenSSL = {
execute: function (password, keySize, ivSize, salt, hasher) {
if (!salt) {
salt = WordArray.random(64 / 8)
}
if (!hasher) {
var key2 = EvpKDF.create({ keySize: keySize + ivSize }).compute(
password,
salt
)
} else {
var key2 = EvpKDF.create({
keySize: keySize + ivSize,
hasher,
}).compute(password, salt)
}
var iv = WordArray.create(key2.words.slice(keySize), ivSize * 4)
key2.sigBytes = keySize * 4
return CipherParams.create({ key: key2, iv, salt })
},
})
var PasswordBasedCipher = (C_lib.PasswordBasedCipher =
SerializableCipher.extend({
cfg: SerializableCipher.cfg.extend({
kdf: OpenSSLKdf,
}),
encrypt: function (cipher, message2, password, cfg) {
cfg = this.cfg.extend(cfg)
var derivedParams = cfg.kdf.execute(
password,
cipher.keySize,
cipher.ivSize,
cfg.salt,
cfg.hasher
)
cfg.iv = derivedParams.iv
var ciphertext = SerializableCipher.encrypt.call(
this,
cipher,
message2,
derivedParams.key,
cfg
)
ciphertext.mixIn(derivedParams)
return ciphertext
},
decrypt: function (cipher, ciphertext, password, cfg) {
cfg = this.cfg.extend(cfg)
ciphertext = this._parse(ciphertext, cfg.format)
var derivedParams = cfg.kdf.execute(
password,
cipher.keySize,
cipher.ivSize,
ciphertext.salt,
cfg.hasher
)
cfg.iv = derivedParams.iv
var plaintext = SerializableCipher.decrypt.call(
this,
cipher,
ciphertext,
derivedParams.key,
cfg
)
return plaintext
},
}))
})()
})
})(cipherCore)
var modeCfb = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory, undef) {
{
module2.exports = factory(core.exports, cipherCore.exports)
}
})(commonjsGlobal, function (CryptoJS) {
CryptoJS.mode.CFB = (function () {
var CFB = CryptoJS.lib.BlockCipherMode.extend()
CFB.Encryptor = CFB.extend({
processBlock: function (words, offset2) {
var cipher = this._cipher
var blockSize = cipher.blockSize
generateKeystreamAndEncrypt.call(
this,
words,
offset2,
blockSize,
cipher
)
this._prevBlock = words.slice(offset2, offset2 + blockSize)
},
})
CFB.Decryptor = CFB.extend({
processBlock: function (words, offset2) {
var cipher = this._cipher
var blockSize = cipher.blockSize
var thisBlock = words.slice(offset2, offset2 + blockSize)
generateKeystreamAndEncrypt.call(
this,
words,
offset2,
blockSize,
cipher
)
this._prevBlock = thisBlock
},
})
function generateKeystreamAndEncrypt(words, offset2, blockSize, cipher) {
var keystream
var iv = this._iv
if (iv) {
keystream = iv.slice(0)
this._iv = void 0
} else {
keystream = this._prevBlock
}
cipher.encryptBlock(keystream, 0)
for (var i2 = 0; i2 < blockSize; i2++) {
words[offset2 + i2] ^= keystream[i2]
}
}
return CFB
})()
return CryptoJS.mode.CFB
})
})(modeCfb)
var modeCtr = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory, undef) {
{
module2.exports = factory(core.exports, cipherCore.exports)
}
})(commonjsGlobal, function (CryptoJS) {
CryptoJS.mode.CTR = (function () {
var CTR = CryptoJS.lib.BlockCipherMode.extend()
var Encryptor = (CTR.Encryptor = CTR.extend({
processBlock: function (words, offset2) {
var cipher = this._cipher
var blockSize = cipher.blockSize
var iv = this._iv
var counter2 = this._counter
if (iv) {
counter2 = this._counter = iv.slice(0)
this._iv = void 0
}
var keystream = counter2.slice(0)
cipher.encryptBlock(keystream, 0)
counter2[blockSize - 1] = (counter2[blockSize - 1] + 1) | 0
for (var i2 = 0; i2 < blockSize; i2++) {
words[offset2 + i2] ^= keystream[i2]
}
},
}))
CTR.Decryptor = Encryptor
return CTR
})()
return CryptoJS.mode.CTR
})
})(modeCtr)
var modeCtrGladman = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory, undef) {
{
module2.exports = factory(core.exports, cipherCore.exports)
}
})(commonjsGlobal, function (CryptoJS) {
/** @preserve
* Counter block mode compatible with Dr Brian Gladman fileenc.c
* derived from CryptoJS.mode.CTR
* Jan Hruby jhruby.web@gmail.com
*/
CryptoJS.mode.CTRGladman = (function () {
var CTRGladman = CryptoJS.lib.BlockCipherMode.extend()
function incWord(word) {
if (((word >> 24) & 255) === 255) {
var b1 = (word >> 16) & 255
var b2 = (word >> 8) & 255
var b3 = word & 255
if (b1 === 255) {
b1 = 0
if (b2 === 255) {
b2 = 0
if (b3 === 255) {
b3 = 0
} else {
++b3
}
} else {
++b2
}
} else {
++b1
}
word = 0
word += b1 << 16
word += b2 << 8
word += b3
} else {
word += 1 << 24
}
return word
}
function incCounter(counter2) {
if ((counter2[0] = incWord(counter2[0])) === 0) {
counter2[1] = incWord(counter2[1])
}
return counter2
}
var Encryptor = (CTRGladman.Encryptor = CTRGladman.extend({
processBlock: function (words, offset2) {
var cipher = this._cipher
var blockSize = cipher.blockSize
var iv = this._iv
var counter2 = this._counter
if (iv) {
counter2 = this._counter = iv.slice(0)
this._iv = void 0
}
incCounter(counter2)
var keystream = counter2.slice(0)
cipher.encryptBlock(keystream, 0)
for (var i2 = 0; i2 < blockSize; i2++) {
words[offset2 + i2] ^= keystream[i2]
}
},
}))
CTRGladman.Decryptor = Encryptor
return CTRGladman
})()
return CryptoJS.mode.CTRGladman
})
})(modeCtrGladman)
var modeOfb = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory, undef) {
{
module2.exports = factory(core.exports, cipherCore.exports)
}
})(commonjsGlobal, function (CryptoJS) {
CryptoJS.mode.OFB = (function () {
var OFB = CryptoJS.lib.BlockCipherMode.extend()
var Encryptor = (OFB.Encryptor = OFB.extend({
processBlock: function (words, offset2) {
var cipher = this._cipher
var blockSize = cipher.blockSize
var iv = this._iv
var keystream = this._keystream
if (iv) {
keystream = this._keystream = iv.slice(0)
this._iv = void 0
}
cipher.encryptBlock(keystream, 0)
for (var i2 = 0; i2 < blockSize; i2++) {
words[offset2 + i2] ^= keystream[i2]
}
},
}))
OFB.Decryptor = Encryptor
return OFB
})()
return CryptoJS.mode.OFB
})
})(modeOfb)
var modeEcb = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory, undef) {
{
module2.exports = factory(core.exports, cipherCore.exports)
}
})(commonjsGlobal, function (CryptoJS) {
CryptoJS.mode.ECB = (function () {
var ECB = CryptoJS.lib.BlockCipherMode.extend()
ECB.Encryptor = ECB.extend({
processBlock: function (words, offset2) {
this._cipher.encryptBlock(words, offset2)
},
})
ECB.Decryptor = ECB.extend({
processBlock: function (words, offset2) {
this._cipher.decryptBlock(words, offset2)
},
})
return ECB
})()
return CryptoJS.mode.ECB
})
})(modeEcb)
var padAnsix923 = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory, undef) {
{
module2.exports = factory(core.exports, cipherCore.exports)
}
})(commonjsGlobal, function (CryptoJS) {
CryptoJS.pad.AnsiX923 = {
pad: function (data2, blockSize) {
var dataSigBytes = data2.sigBytes
var blockSizeBytes = blockSize * 4
var nPaddingBytes = blockSizeBytes - (dataSigBytes % blockSizeBytes)
var lastBytePos = dataSigBytes + nPaddingBytes - 1
data2.clamp()
data2.words[lastBytePos >>> 2] |=
nPaddingBytes << (24 - (lastBytePos % 4) * 8)
data2.sigBytes += nPaddingBytes
},
unpad: function (data2) {
var nPaddingBytes = data2.words[(data2.sigBytes - 1) >>> 2] & 255
data2.sigBytes -= nPaddingBytes
},
}
return CryptoJS.pad.Ansix923
})
})(padAnsix923)
var padIso10126 = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory, undef) {
{
module2.exports = factory(core.exports, cipherCore.exports)
}
})(commonjsGlobal, function (CryptoJS) {
CryptoJS.pad.Iso10126 = {
pad: function (data2, blockSize) {
var blockSizeBytes = blockSize * 4
var nPaddingBytes = blockSizeBytes - (data2.sigBytes % blockSizeBytes)
data2
.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1))
.concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1))
},
unpad: function (data2) {
var nPaddingBytes = data2.words[(data2.sigBytes - 1) >>> 2] & 255
data2.sigBytes -= nPaddingBytes
},
}
return CryptoJS.pad.Iso10126
})
})(padIso10126)
var padIso97971 = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory, undef) {
{
module2.exports = factory(core.exports, cipherCore.exports)
}
})(commonjsGlobal, function (CryptoJS) {
CryptoJS.pad.Iso97971 = {
pad: function (data2, blockSize) {
data2.concat(CryptoJS.lib.WordArray.create([2147483648], 1))
CryptoJS.pad.ZeroPadding.pad(data2, blockSize)
},
unpad: function (data2) {
CryptoJS.pad.ZeroPadding.unpad(data2)
data2.sigBytes--
},
}
return CryptoJS.pad.Iso97971
})
})(padIso97971)
var padZeropadding = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory, undef) {
{
module2.exports = factory(core.exports, cipherCore.exports)
}
})(commonjsGlobal, function (CryptoJS) {
CryptoJS.pad.ZeroPadding = {
pad: function (data2, blockSize) {
var blockSizeBytes = blockSize * 4
data2.clamp()
data2.sigBytes +=
blockSizeBytes - (data2.sigBytes % blockSizeBytes || blockSizeBytes)
},
unpad: function (data2) {
var dataWords = data2.words
var i2 = data2.sigBytes - 1
for (var i2 = data2.sigBytes - 1; i2 >= 0; i2--) {
if ((dataWords[i2 >>> 2] >>> (24 - (i2 % 4) * 8)) & 255) {
data2.sigBytes = i2 + 1
break
}
}
},
}
return CryptoJS.pad.ZeroPadding
})
})(padZeropadding)
var padNopadding = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory, undef) {
{
module2.exports = factory(core.exports, cipherCore.exports)
}
})(commonjsGlobal, function (CryptoJS) {
CryptoJS.pad.NoPadding = {
pad: function () {},
unpad: function () {},
}
return CryptoJS.pad.NoPadding
})
})(padNopadding)
var formatHex = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory, undef) {
{
module2.exports = factory(core.exports, cipherCore.exports)
}
})(commonjsGlobal, function (CryptoJS) {
;(function (undefined$1) {
var C2 = CryptoJS
var C_lib = C2.lib
var CipherParams = C_lib.CipherParams
var C_enc = C2.enc
var Hex2 = C_enc.Hex
var C_format = C2.format
C_format.Hex = {
stringify: function (cipherParams) {
return cipherParams.ciphertext.toString(Hex2)
},
parse: function (input) {
var ciphertext = Hex2.parse(input)
return CipherParams.create({ ciphertext })
},
}
})()
return CryptoJS.format.Hex
})
})(formatHex)
var aes = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory, undef) {
{
module2.exports = factory(
core.exports,
encBase64.exports,
md5.exports,
evpkdf.exports,
cipherCore.exports
)
}
})(commonjsGlobal, function (CryptoJS) {
;(function () {
var C2 = CryptoJS
var C_lib = C2.lib
var BlockCipher = C_lib.BlockCipher
var C_algo = C2.algo
var SBOX = []
var INV_SBOX = []
var SUB_MIX_0 = []
var SUB_MIX_1 = []
var SUB_MIX_2 = []
var SUB_MIX_3 = []
var INV_SUB_MIX_0 = []
var INV_SUB_MIX_1 = []
var INV_SUB_MIX_2 = []
var INV_SUB_MIX_3 = []
;(function () {
var d3 = []
for (var i2 = 0; i2 < 256; i2++) {
if (i2 < 128) {
d3[i2] = i2 << 1
} else {
d3[i2] = (i2 << 1) ^ 283
}
}
var x2 = 0
var xi = 0
for (var i2 = 0; i2 < 256; i2++) {
var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)
sx = (sx >>> 8) ^ (sx & 255) ^ 99
SBOX[x2] = sx
INV_SBOX[sx] = x2
var x22 = d3[x2]
var x4 = d3[x22]
var x8 = d3[x4]
var t3 = (d3[sx] * 257) ^ (sx * 16843008)
SUB_MIX_0[x2] = (t3 << 24) | (t3 >>> 8)
SUB_MIX_1[x2] = (t3 << 16) | (t3 >>> 16)
SUB_MIX_2[x2] = (t3 << 8) | (t3 >>> 24)
SUB_MIX_3[x2] = t3
var t3 =
(x8 * 16843009) ^ (x4 * 65537) ^ (x22 * 257) ^ (x2 * 16843008)
INV_SUB_MIX_0[sx] = (t3 << 24) | (t3 >>> 8)
INV_SUB_MIX_1[sx] = (t3 << 16) | (t3 >>> 16)
INV_SUB_MIX_2[sx] = (t3 << 8) | (t3 >>> 24)
INV_SUB_MIX_3[sx] = t3
if (!x2) {
x2 = xi = 1
} else {
x2 = x22 ^ d3[d3[d3[x8 ^ x22]]]
xi ^= d3[d3[xi]]
}
}
})()
var RCON = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54]
var AES = (C_algo.AES = BlockCipher.extend({
_doReset: function () {
var t3
if (this._nRounds && this._keyPriorReset === this._key) {
return
}
var key2 = (this._keyPriorReset = this._key)
var keyWords = key2.words
var keySize = key2.sigBytes / 4
var nRounds = (this._nRounds = keySize + 6)
var ksRows = (nRounds + 1) * 4
var keySchedule = (this._keySchedule = [])
for (var ksRow = 0; ksRow < ksRows; ksRow++) {
if (ksRow < keySize) {
keySchedule[ksRow] = keyWords[ksRow]
} else {
t3 = keySchedule[ksRow - 1]
if (!(ksRow % keySize)) {
t3 = (t3 << 8) | (t3 >>> 24)
t3 =
(SBOX[t3 >>> 24] << 24) |
(SBOX[(t3 >>> 16) & 255] << 16) |
(SBOX[(t3 >>> 8) & 255] << 8) |
SBOX[t3 & 255]
t3 ^= RCON[(ksRow / keySize) | 0] << 24
} else if (keySize > 6 && ksRow % keySize == 4) {
t3 =
(SBOX[t3 >>> 24] << 24) |
(SBOX[(t3 >>> 16) & 255] << 16) |
(SBOX[(t3 >>> 8) & 255] << 8) |
SBOX[t3 & 255]
}
keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t3
}
}
var invKeySchedule = (this._invKeySchedule = [])
for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {
var ksRow = ksRows - invKsRow
if (invKsRow % 4) {
var t3 = keySchedule[ksRow]
} else {
var t3 = keySchedule[ksRow - 4]
}
if (invKsRow < 4 || ksRow <= 4) {
invKeySchedule[invKsRow] = t3
} else {
invKeySchedule[invKsRow] =
INV_SUB_MIX_0[SBOX[t3 >>> 24]] ^
INV_SUB_MIX_1[SBOX[(t3 >>> 16) & 255]] ^
INV_SUB_MIX_2[SBOX[(t3 >>> 8) & 255]] ^
INV_SUB_MIX_3[SBOX[t3 & 255]]
}
}
},
encryptBlock: function (M2, offset2) {
this._doCryptBlock(
M2,
offset2,
this._keySchedule,
SUB_MIX_0,
SUB_MIX_1,
SUB_MIX_2,
SUB_MIX_3,
SBOX
)
},
decryptBlock: function (M2, offset2) {
var t3 = M2[offset2 + 1]
M2[offset2 + 1] = M2[offset2 + 3]
M2[offset2 + 3] = t3
this._doCryptBlock(
M2,
offset2,
this._invKeySchedule,
INV_SUB_MIX_0,
INV_SUB_MIX_1,
INV_SUB_MIX_2,
INV_SUB_MIX_3,
INV_SBOX
)
var t3 = M2[offset2 + 1]
M2[offset2 + 1] = M2[offset2 + 3]
M2[offset2 + 3] = t3
},
_doCryptBlock: function (
M2,
offset2,
keySchedule,
SUB_MIX_02,
SUB_MIX_12,
SUB_MIX_22,
SUB_MIX_32,
SBOX2
) {
var nRounds = this._nRounds
var s0 = M2[offset2] ^ keySchedule[0]
var s1 = M2[offset2 + 1] ^ keySchedule[1]
var s2 = M2[offset2 + 2] ^ keySchedule[2]
var s3 = M2[offset2 + 3] ^ keySchedule[3]
var ksRow = 4
for (var round2 = 1; round2 < nRounds; round2++) {
var t0 =
SUB_MIX_02[s0 >>> 24] ^
SUB_MIX_12[(s1 >>> 16) & 255] ^
SUB_MIX_22[(s2 >>> 8) & 255] ^
SUB_MIX_32[s3 & 255] ^
keySchedule[ksRow++]
var t1 =
SUB_MIX_02[s1 >>> 24] ^
SUB_MIX_12[(s2 >>> 16) & 255] ^
SUB_MIX_22[(s3 >>> 8) & 255] ^
SUB_MIX_32[s0 & 255] ^
keySchedule[ksRow++]
var t22 =
SUB_MIX_02[s2 >>> 24] ^
SUB_MIX_12[(s3 >>> 16) & 255] ^
SUB_MIX_22[(s0 >>> 8) & 255] ^
SUB_MIX_32[s1 & 255] ^
keySchedule[ksRow++]
var t3 =
SUB_MIX_02[s3 >>> 24] ^
SUB_MIX_12[(s0 >>> 16) & 255] ^
SUB_MIX_22[(s1 >>> 8) & 255] ^
SUB_MIX_32[s2 & 255] ^
keySchedule[ksRow++]
s0 = t0
s1 = t1
s2 = t22
s3 = t3
}
var t0 =
((SBOX2[s0 >>> 24] << 24) |
(SBOX2[(s1 >>> 16) & 255] << 16) |
(SBOX2[(s2 >>> 8) & 255] << 8) |
SBOX2[s3 & 255]) ^
keySchedule[ksRow++]
var t1 =
((SBOX2[s1 >>> 24] << 24) |
(SBOX2[(s2 >>> 16) & 255] << 16) |
(SBOX2[(s3 >>> 8) & 255] << 8) |
SBOX2[s0 & 255]) ^
keySchedule[ksRow++]
var t22 =
((SBOX2[s2 >>> 24] << 24) |
(SBOX2[(s3 >>> 16) & 255] << 16) |
(SBOX2[(s0 >>> 8) & 255] << 8) |
SBOX2[s1 & 255]) ^
keySchedule[ksRow++]
var t3 =
((SBOX2[s3 >>> 24] << 24) |
(SBOX2[(s0 >>> 16) & 255] << 16) |
(SBOX2[(s1 >>> 8) & 255] << 8) |
SBOX2[s2 & 255]) ^
keySchedule[ksRow++]
M2[offset2] = t0
M2[offset2 + 1] = t1
M2[offset2 + 2] = t22
M2[offset2 + 3] = t3
},
keySize: 256 / 32,
}))
C2.AES = BlockCipher._createHelper(AES)
})()
return CryptoJS.AES
})
})(aes)
var tripledes = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory, undef) {
{
module2.exports = factory(
core.exports,
encBase64.exports,
md5.exports,
evpkdf.exports,
cipherCore.exports
)
}
})(commonjsGlobal, function (CryptoJS) {
;(function () {
var C2 = CryptoJS
var C_lib = C2.lib
var WordArray = C_lib.WordArray
var BlockCipher = C_lib.BlockCipher
var C_algo = C2.algo
var PC1 = [
57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43,
35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62,
54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4,
]
var PC2 = [
14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7,
27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49,
39, 56, 34, 53, 46, 42, 50, 36, 29, 32,
]
var BIT_SHIFTS = [
1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28,
]
var SBOX_P = [
{
0: 8421888,
268435456: 32768,
536870912: 8421378,
805306368: 2,
1073741824: 512,
1342177280: 8421890,
1610612736: 8389122,
1879048192: 8388608,
2147483648: 514,
2415919104: 8389120,
2684354560: 33280,
2952790016: 8421376,
3221225472: 32770,
3489660928: 8388610,
3758096384: 0,
4026531840: 33282,
134217728: 0,
402653184: 8421890,
671088640: 33282,
939524096: 32768,
1207959552: 8421888,
1476395008: 512,
1744830464: 8421378,
2013265920: 2,
2281701376: 8389120,
2550136832: 33280,
2818572288: 8421376,
3087007744: 8389122,
3355443200: 8388610,
3623878656: 32770,
3892314112: 514,
4160749568: 8388608,
1: 32768,
268435457: 2,
536870913: 8421888,
805306369: 8388608,
1073741825: 8421378,
1342177281: 33280,
1610612737: 512,
1879048193: 8389122,
2147483649: 8421890,
2415919105: 8421376,
2684354561: 8388610,
2952790017: 33282,
3221225473: 514,
3489660929: 8389120,
3758096385: 32770,
4026531841: 0,
134217729: 8421890,
402653185: 8421376,
671088641: 8388608,
939524097: 512,
1207959553: 32768,
1476395009: 8388610,
1744830465: 2,
2013265921: 33282,
2281701377: 32770,
2550136833: 8389122,
2818572289: 514,
3087007745: 8421888,
3355443201: 8389120,
3623878657: 0,
3892314113: 33280,
4160749569: 8421378,
},
{
0: 1074282512,
16777216: 16384,
33554432: 524288,
50331648: 1074266128,
67108864: 1073741840,
83886080: 1074282496,
100663296: 1073758208,
117440512: 16,
134217728: 540672,
150994944: 1073758224,
167772160: 1073741824,
184549376: 540688,
201326592: 524304,
218103808: 0,
234881024: 16400,
251658240: 1074266112,
8388608: 1073758208,
25165824: 540688,
41943040: 16,
58720256: 1073758224,
75497472: 1074282512,
92274688: 1073741824,
109051904: 524288,
125829120: 1074266128,
142606336: 524304,
159383552: 0,
176160768: 16384,
192937984: 1074266112,
209715200: 1073741840,
226492416: 540672,
243269632: 1074282496,
260046848: 16400,
268435456: 0,
285212672: 1074266128,
301989888: 1073758224,
318767104: 1074282496,
335544320: 1074266112,
352321536: 16,
369098752: 540688,
385875968: 16384,
402653184: 16400,
419430400: 524288,
436207616: 524304,
452984832: 1073741840,
469762048: 540672,
486539264: 1073758208,
503316480: 1073741824,
520093696: 1074282512,
276824064: 540688,
293601280: 524288,
310378496: 1074266112,
327155712: 16384,
343932928: 1073758208,
360710144: 1074282512,
377487360: 16,
394264576: 1073741824,
411041792: 1074282496,
427819008: 1073741840,
444596224: 1073758224,
461373440: 524304,
478150656: 0,
494927872: 16400,
511705088: 1074266128,
528482304: 540672,
},
{
0: 260,
1048576: 0,
2097152: 67109120,
3145728: 65796,
4194304: 65540,
5242880: 67108868,
6291456: 67174660,
7340032: 67174400,
8388608: 67108864,
9437184: 67174656,
10485760: 65792,
11534336: 67174404,
12582912: 67109124,
13631488: 65536,
14680064: 4,
15728640: 256,
524288: 67174656,
1572864: 67174404,
2621440: 0,
3670016: 67109120,
4718592: 67108868,
5767168: 65536,
6815744: 65540,
7864320: 260,
8912896: 4,
9961472: 256,
11010048: 67174400,
12058624: 65796,
13107200: 65792,
14155776: 67109124,
15204352: 67174660,
16252928: 67108864,
16777216: 67174656,
17825792: 65540,
18874368: 65536,
19922944: 67109120,
20971520: 256,
22020096: 67174660,
23068672: 67108868,
24117248: 0,
25165824: 67109124,
26214400: 67108864,
27262976: 4,
28311552: 65792,
29360128: 67174400,
30408704: 260,
31457280: 65796,
32505856: 67174404,
17301504: 67108864,
18350080: 260,
19398656: 67174656,
20447232: 0,
21495808: 65540,
22544384: 67109120,
23592960: 256,
24641536: 67174404,
25690112: 65536,
26738688: 67174660,
27787264: 65796,
28835840: 67108868,
29884416: 67109124,
30932992: 67174400,
31981568: 4,
33030144: 65792,
},
{
0: 2151682048,
65536: 2147487808,
131072: 4198464,
196608: 2151677952,
262144: 0,
327680: 4198400,
393216: 2147483712,
458752: 4194368,
524288: 2147483648,
589824: 4194304,
655360: 64,
720896: 2147487744,
786432: 2151678016,
851968: 4160,
917504: 4096,
983040: 2151682112,
32768: 2147487808,
98304: 64,
163840: 2151678016,
229376: 2147487744,
294912: 4198400,
360448: 2151682112,
425984: 0,
491520: 2151677952,
557056: 4096,
622592: 2151682048,
688128: 4194304,
753664: 4160,
819200: 2147483648,
884736: 4194368,
950272: 4198464,
1015808: 2147483712,
1048576: 4194368,
1114112: 4198400,
1179648: 2147483712,
1245184: 0,
1310720: 4160,
1376256: 2151678016,
1441792: 2151682048,
1507328: 2147487808,
1572864: 2151682112,
1638400: 2147483648,
1703936: 2151677952,
1769472: 4198464,
1835008: 2147487744,
1900544: 4194304,
1966080: 64,
2031616: 4096,
1081344: 2151677952,
1146880: 2151682112,
1212416: 0,
1277952: 4198400,
1343488: 4194368,
1409024: 2147483648,
1474560: 2147487808,
1540096: 64,
1605632: 2147483712,
1671168: 4096,
1736704: 2147487744,
1802240: 2151678016,
1867776: 4160,
1933312: 2151682048,
1998848: 4194304,
2064384: 4198464,
},
{
0: 128,
4096: 17039360,
8192: 262144,
12288: 536870912,
16384: 537133184,
20480: 16777344,
24576: 553648256,
28672: 262272,
32768: 16777216,
36864: 537133056,
40960: 536871040,
45056: 553910400,
49152: 553910272,
53248: 0,
57344: 17039488,
61440: 553648128,
2048: 17039488,
6144: 553648256,
10240: 128,
14336: 17039360,
18432: 262144,
22528: 537133184,
26624: 553910272,
30720: 536870912,
34816: 537133056,
38912: 0,
43008: 553910400,
47104: 16777344,
51200: 536871040,
55296: 553648128,
59392: 16777216,
63488: 262272,
65536: 262144,
69632: 128,
73728: 536870912,
77824: 553648256,
81920: 16777344,
86016: 553910272,
90112: 537133184,
94208: 16777216,
98304: 553910400,
102400: 553648128,
106496: 17039360,
110592: 537133056,
114688: 262272,
118784: 536871040,
122880: 0,
126976: 17039488,
67584: 553648256,
71680: 16777216,
75776: 17039360,
79872: 537133184,
83968: 536870912,
88064: 17039488,
92160: 128,
96256: 553910272,
100352: 262272,
104448: 553910400,
108544: 0,
112640: 553648128,
116736: 16777344,
120832: 262144,
124928: 537133056,
129024: 536871040,
},
{
0: 268435464,
256: 8192,
512: 270532608,
768: 270540808,
1024: 268443648,
1280: 2097152,
1536: 2097160,
1792: 268435456,
2048: 0,
2304: 268443656,
2560: 2105344,
2816: 8,
3072: 270532616,
3328: 2105352,
3584: 8200,
3840: 270540800,
128: 270532608,
384: 270540808,
640: 8,
896: 2097152,
1152: 2105352,
1408: 268435464,
1664: 268443648,
1920: 8200,
2176: 2097160,
2432: 8192,
2688: 268443656,
2944: 270532616,
3200: 0,
3456: 270540800,
3712: 2105344,
3968: 268435456,
4096: 268443648,
4352: 270532616,
4608: 270540808,
4864: 8200,
5120: 2097152,
5376: 268435456,
5632: 268435464,
5888: 2105344,
6144: 2105352,
6400: 0,
6656: 8,
6912: 270532608,
7168: 8192,
7424: 268443656,
7680: 270540800,
7936: 2097160,
4224: 8,
4480: 2105344,
4736: 2097152,
4992: 268435464,
5248: 268443648,
5504: 8200,
5760: 270540808,
6016: 270532608,
6272: 270540800,
6528: 270532616,
6784: 8192,
7040: 2105352,
7296: 2097160,
7552: 0,
7808: 268435456,
8064: 268443656,
},
{
0: 1048576,
16: 33555457,
32: 1024,
48: 1049601,
64: 34604033,
80: 0,
96: 1,
112: 34603009,
128: 33555456,
144: 1048577,
160: 33554433,
176: 34604032,
192: 34603008,
208: 1025,
224: 1049600,
240: 33554432,
8: 34603009,
24: 0,
40: 33555457,
56: 34604032,
72: 1048576,
88: 33554433,
104: 33554432,
120: 1025,
136: 1049601,
152: 33555456,
168: 34603008,
184: 1048577,
200: 1024,
216: 34604033,
232: 1,
248: 1049600,
256: 33554432,
272: 1048576,
288: 33555457,
304: 34603009,
320: 1048577,
336: 33555456,
352: 34604032,
368: 1049601,
384: 1025,
400: 34604033,
416: 1049600,
432: 1,
448: 0,
464: 34603008,
480: 33554433,
496: 1024,
264: 1049600,
280: 33555457,
296: 34603009,
312: 1,
328: 33554432,
344: 1048576,
360: 1025,
376: 34604032,
392: 33554433,
408: 34603008,
424: 0,
440: 34604033,
456: 1049601,
472: 1024,
488: 33555456,
504: 1048577,
},
{
0: 134219808,
1: 131072,
2: 134217728,
3: 32,
4: 131104,
5: 134350880,
6: 134350848,
7: 2048,
8: 134348800,
9: 134219776,
10: 133120,
11: 134348832,
12: 2080,
13: 0,
14: 134217760,
15: 133152,
2147483648: 2048,
2147483649: 134350880,
2147483650: 134219808,
2147483651: 134217728,
2147483652: 134348800,
2147483653: 133120,
2147483654: 133152,
2147483655: 32,
2147483656: 134217760,
2147483657: 2080,
2147483658: 131104,
2147483659: 134350848,
2147483660: 0,
2147483661: 134348832,
2147483662: 134219776,
2147483663: 131072,
16: 133152,
17: 134350848,
18: 32,
19: 2048,
20: 134219776,
21: 134217760,
22: 134348832,
23: 131072,
24: 0,
25: 131104,
26: 134348800,
27: 134219808,
28: 134350880,
29: 133120,
30: 2080,
31: 134217728,
2147483664: 131072,
2147483665: 2048,
2147483666: 134348832,
2147483667: 133152,
2147483668: 32,
2147483669: 134348800,
2147483670: 134217728,
2147483671: 134219808,
2147483672: 134350880,
2147483673: 134217760,
2147483674: 134219776,
2147483675: 0,
2147483676: 133120,
2147483677: 2080,
2147483678: 131104,
2147483679: 134350848,
},
]
var SBOX_MASK = [
4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679,
]
var DES = (C_algo.DES = BlockCipher.extend({
_doReset: function () {
var key2 = this._key
var keyWords = key2.words
var keyBits = []
for (var i2 = 0; i2 < 56; i2++) {
var keyBitPos = PC1[i2] - 1
keyBits[i2] =
(keyWords[keyBitPos >>> 5] >>> (31 - (keyBitPos % 32))) & 1
}
var subKeys = (this._subKeys = [])
for (var nSubKey = 0; nSubKey < 16; nSubKey++) {
var subKey = (subKeys[nSubKey] = [])
var bitShift = BIT_SHIFTS[nSubKey]
for (var i2 = 0; i2 < 24; i2++) {
subKey[(i2 / 6) | 0] |=
keyBits[(PC2[i2] - 1 + bitShift) % 28] << (31 - (i2 % 6))
subKey[4 + ((i2 / 6) | 0)] |=
keyBits[28 + ((PC2[i2 + 24] - 1 + bitShift) % 28)] <<
(31 - (i2 % 6))
}
subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31)
for (var i2 = 1; i2 < 7; i2++) {
subKey[i2] = subKey[i2] >>> ((i2 - 1) * 4 + 3)
}
subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27)
}
var invSubKeys = (this._invSubKeys = [])
for (var i2 = 0; i2 < 16; i2++) {
invSubKeys[i2] = subKeys[15 - i2]
}
},
encryptBlock: function (M2, offset2) {
this._doCryptBlock(M2, offset2, this._subKeys)
},
decryptBlock: function (M2, offset2) {
this._doCryptBlock(M2, offset2, this._invSubKeys)
},
_doCryptBlock: function (M2, offset2, subKeys) {
this._lBlock = M2[offset2]
this._rBlock = M2[offset2 + 1]
exchangeLR.call(this, 4, 252645135)
exchangeLR.call(this, 16, 65535)
exchangeRL.call(this, 2, 858993459)
exchangeRL.call(this, 8, 16711935)
exchangeLR.call(this, 1, 1431655765)
for (var round2 = 0; round2 < 16; round2++) {
var subKey = subKeys[round2]
var lBlock = this._lBlock
var rBlock = this._rBlock
var f2 = 0
for (var i2 = 0; i2 < 8; i2++) {
f2 |= SBOX_P[i2][((rBlock ^ subKey[i2]) & SBOX_MASK[i2]) >>> 0]
}
this._lBlock = rBlock
this._rBlock = lBlock ^ f2
}
var t3 = this._lBlock
this._lBlock = this._rBlock
this._rBlock = t3
exchangeLR.call(this, 1, 1431655765)
exchangeRL.call(this, 8, 16711935)
exchangeRL.call(this, 2, 858993459)
exchangeLR.call(this, 16, 65535)
exchangeLR.call(this, 4, 252645135)
M2[offset2] = this._lBlock
M2[offset2 + 1] = this._rBlock
},
keySize: 64 / 32,
ivSize: 64 / 32,
blockSize: 64 / 32,
}))
function exchangeLR(offset2, mask) {
var t3 = ((this._lBlock >>> offset2) ^ this._rBlock) & mask
this._rBlock ^= t3
this._lBlock ^= t3 << offset2
}
function exchangeRL(offset2, mask) {
var t3 = ((this._rBlock >>> offset2) ^ this._lBlock) & mask
this._lBlock ^= t3
this._rBlock ^= t3 << offset2
}
C2.DES = BlockCipher._createHelper(DES)
var TripleDES = (C_algo.TripleDES = BlockCipher.extend({
_doReset: function () {
var key2 = this._key
var keyWords = key2.words
if (
keyWords.length !== 2 &&
keyWords.length !== 4 &&
keyWords.length < 6
) {
throw new Error(
'Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.'
)
}
var key1 = keyWords.slice(0, 2)
var key22 =
keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4)
var key3 =
keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6)
this._des1 = DES.createEncryptor(WordArray.create(key1))
this._des2 = DES.createEncryptor(WordArray.create(key22))
this._des3 = DES.createEncryptor(WordArray.create(key3))
},
encryptBlock: function (M2, offset2) {
this._des1.encryptBlock(M2, offset2)
this._des2.decryptBlock(M2, offset2)
this._des3.encryptBlock(M2, offset2)
},
decryptBlock: function (M2, offset2) {
this._des3.decryptBlock(M2, offset2)
this._des2.encryptBlock(M2, offset2)
this._des1.decryptBlock(M2, offset2)
},
keySize: 192 / 32,
ivSize: 64 / 32,
blockSize: 64 / 32,
}))
C2.TripleDES = BlockCipher._createHelper(TripleDES)
})()
return CryptoJS.TripleDES
})
})(tripledes)
var rc4 = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory, undef) {
{
module2.exports = factory(
core.exports,
encBase64.exports,
md5.exports,
evpkdf.exports,
cipherCore.exports
)
}
})(commonjsGlobal, function (CryptoJS) {
;(function () {
var C2 = CryptoJS
var C_lib = C2.lib
var StreamCipher = C_lib.StreamCipher
var C_algo = C2.algo
var RC4 = (C_algo.RC4 = StreamCipher.extend({
_doReset: function () {
var key2 = this._key
var keyWords = key2.words
var keySigBytes = key2.sigBytes
var S2 = (this._S = [])
for (var i2 = 0; i2 < 256; i2++) {
S2[i2] = i2
}
for (var i2 = 0, j2 = 0; i2 < 256; i2++) {
var keyByteIndex = i2 % keySigBytes
var keyByte =
(keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) &
255
j2 = (j2 + S2[i2] + keyByte) % 256
var t3 = S2[i2]
S2[i2] = S2[j2]
S2[j2] = t3
}
this._i = this._j = 0
},
_doProcessBlock: function (M2, offset2) {
M2[offset2] ^= generateKeystreamWord.call(this)
},
keySize: 256 / 32,
ivSize: 0,
}))
function generateKeystreamWord() {
var S2 = this._S
var i2 = this._i
var j2 = this._j
var keystreamWord = 0
for (var n2 = 0; n2 < 4; n2++) {
i2 = (i2 + 1) % 256
j2 = (j2 + S2[i2]) % 256
var t3 = S2[i2]
S2[i2] = S2[j2]
S2[j2] = t3
keystreamWord |= S2[(S2[i2] + S2[j2]) % 256] << (24 - n2 * 8)
}
this._i = i2
this._j = j2
return keystreamWord
}
C2.RC4 = StreamCipher._createHelper(RC4)
var RC4Drop = (C_algo.RC4Drop = RC4.extend({
cfg: RC4.cfg.extend({
drop: 192,
}),
_doReset: function () {
RC4._doReset.call(this)
for (var i2 = this.cfg.drop; i2 > 0; i2--) {
generateKeystreamWord.call(this)
}
},
}))
C2.RC4Drop = StreamCipher._createHelper(RC4Drop)
})()
return CryptoJS.RC4
})
})(rc4)
var rabbit = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory, undef) {
{
module2.exports = factory(
core.exports,
encBase64.exports,
md5.exports,
evpkdf.exports,
cipherCore.exports
)
}
})(commonjsGlobal, function (CryptoJS) {
;(function () {
var C2 = CryptoJS
var C_lib = C2.lib
var StreamCipher = C_lib.StreamCipher
var C_algo = C2.algo
var S2 = []
var C_ = []
var G2 = []
var Rabbit = (C_algo.Rabbit = StreamCipher.extend({
_doReset: function () {
var K2 = this._key.words
var iv = this.cfg.iv
for (var i2 = 0; i2 < 4; i2++) {
K2[i2] =
(((K2[i2] << 8) | (K2[i2] >>> 24)) & 16711935) |
(((K2[i2] << 24) | (K2[i2] >>> 8)) & 4278255360)
}
var X2 = (this._X = [
K2[0],
(K2[3] << 16) | (K2[2] >>> 16),
K2[1],
(K2[0] << 16) | (K2[3] >>> 16),
K2[2],
(K2[1] << 16) | (K2[0] >>> 16),
K2[3],
(K2[2] << 16) | (K2[1] >>> 16),
])
var C3 = (this._C = [
(K2[2] << 16) | (K2[2] >>> 16),
(K2[0] & 4294901760) | (K2[1] & 65535),
(K2[3] << 16) | (K2[3] >>> 16),
(K2[1] & 4294901760) | (K2[2] & 65535),
(K2[0] << 16) | (K2[0] >>> 16),
(K2[2] & 4294901760) | (K2[3] & 65535),
(K2[1] << 16) | (K2[1] >>> 16),
(K2[3] & 4294901760) | (K2[0] & 65535),
])
this._b = 0
for (var i2 = 0; i2 < 4; i2++) {
nextState.call(this)
}
for (var i2 = 0; i2 < 8; i2++) {
C3[i2] ^= X2[(i2 + 4) & 7]
}
if (iv) {
var IV = iv.words
var IV_0 = IV[0]
var IV_1 = IV[1]
var i0 =
(((IV_0 << 8) | (IV_0 >>> 24)) & 16711935) |
(((IV_0 << 24) | (IV_0 >>> 8)) & 4278255360)
var i22 =
(((IV_1 << 8) | (IV_1 >>> 24)) & 16711935) |
(((IV_1 << 24) | (IV_1 >>> 8)) & 4278255360)
var i1 = (i0 >>> 16) | (i22 & 4294901760)
var i3 = (i22 << 16) | (i0 & 65535)
C3[0] ^= i0
C3[1] ^= i1
C3[2] ^= i22
C3[3] ^= i3
C3[4] ^= i0
C3[5] ^= i1
C3[6] ^= i22
C3[7] ^= i3
for (var i2 = 0; i2 < 4; i2++) {
nextState.call(this)
}
}
},
_doProcessBlock: function (M2, offset2) {
var X2 = this._X
nextState.call(this)
S2[0] = X2[0] ^ (X2[5] >>> 16) ^ (X2[3] << 16)
S2[1] = X2[2] ^ (X2[7] >>> 16) ^ (X2[5] << 16)
S2[2] = X2[4] ^ (X2[1] >>> 16) ^ (X2[7] << 16)
S2[3] = X2[6] ^ (X2[3] >>> 16) ^ (X2[1] << 16)
for (var i2 = 0; i2 < 4; i2++) {
S2[i2] =
(((S2[i2] << 8) | (S2[i2] >>> 24)) & 16711935) |
(((S2[i2] << 24) | (S2[i2] >>> 8)) & 4278255360)
M2[offset2 + i2] ^= S2[i2]
}
},
blockSize: 128 / 32,
ivSize: 64 / 32,
}))
function nextState() {
var X2 = this._X
var C3 = this._C
for (var i2 = 0; i2 < 8; i2++) {
C_[i2] = C3[i2]
}
C3[0] = (C3[0] + 1295307597 + this._b) | 0
C3[1] = (C3[1] + 3545052371 + (C3[0] >>> 0 < C_[0] >>> 0 ? 1 : 0)) | 0
C3[2] = (C3[2] + 886263092 + (C3[1] >>> 0 < C_[1] >>> 0 ? 1 : 0)) | 0
C3[3] = (C3[3] + 1295307597 + (C3[2] >>> 0 < C_[2] >>> 0 ? 1 : 0)) | 0
C3[4] = (C3[4] + 3545052371 + (C3[3] >>> 0 < C_[3] >>> 0 ? 1 : 0)) | 0
C3[5] = (C3[5] + 886263092 + (C3[4] >>> 0 < C_[4] >>> 0 ? 1 : 0)) | 0
C3[6] = (C3[6] + 1295307597 + (C3[5] >>> 0 < C_[5] >>> 0 ? 1 : 0)) | 0
C3[7] = (C3[7] + 3545052371 + (C3[6] >>> 0 < C_[6] >>> 0 ? 1 : 0)) | 0
this._b = C3[7] >>> 0 < C_[7] >>> 0 ? 1 : 0
for (var i2 = 0; i2 < 8; i2++) {
var gx = X2[i2] + C3[i2]
var ga = gx & 65535
var gb = gx >>> 16
var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb
var gl = (((gx & 4294901760) * gx) | 0) + (((gx & 65535) * gx) | 0)
G2[i2] = gh ^ gl
}
X2[0] =
(G2[0] +
((G2[7] << 16) | (G2[7] >>> 16)) +
((G2[6] << 16) | (G2[6] >>> 16))) |
0
X2[1] = (G2[1] + ((G2[0] << 8) | (G2[0] >>> 24)) + G2[7]) | 0
X2[2] =
(G2[2] +
((G2[1] << 16) | (G2[1] >>> 16)) +
((G2[0] << 16) | (G2[0] >>> 16))) |
0
X2[3] = (G2[3] + ((G2[2] << 8) | (G2[2] >>> 24)) + G2[1]) | 0
X2[4] =
(G2[4] +
((G2[3] << 16) | (G2[3] >>> 16)) +
((G2[2] << 16) | (G2[2] >>> 16))) |
0
X2[5] = (G2[5] + ((G2[4] << 8) | (G2[4] >>> 24)) + G2[3]) | 0
X2[6] =
(G2[6] +
((G2[5] << 16) | (G2[5] >>> 16)) +
((G2[4] << 16) | (G2[4] >>> 16))) |
0
X2[7] = (G2[7] + ((G2[6] << 8) | (G2[6] >>> 24)) + G2[5]) | 0
}
C2.Rabbit = StreamCipher._createHelper(Rabbit)
})()
return CryptoJS.Rabbit
})
})(rabbit)
var rabbitLegacy = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory, undef) {
{
module2.exports = factory(
core.exports,
encBase64.exports,
md5.exports,
evpkdf.exports,
cipherCore.exports
)
}
})(commonjsGlobal, function (CryptoJS) {
;(function () {
var C2 = CryptoJS
var C_lib = C2.lib
var StreamCipher = C_lib.StreamCipher
var C_algo = C2.algo
var S2 = []
var C_ = []
var G2 = []
var RabbitLegacy = (C_algo.RabbitLegacy = StreamCipher.extend({
_doReset: function () {
var K2 = this._key.words
var iv = this.cfg.iv
var X2 = (this._X = [
K2[0],
(K2[3] << 16) | (K2[2] >>> 16),
K2[1],
(K2[0] << 16) | (K2[3] >>> 16),
K2[2],
(K2[1] << 16) | (K2[0] >>> 16),
K2[3],
(K2[2] << 16) | (K2[1] >>> 16),
])
var C3 = (this._C = [
(K2[2] << 16) | (K2[2] >>> 16),
(K2[0] & 4294901760) | (K2[1] & 65535),
(K2[3] << 16) | (K2[3] >>> 16),
(K2[1] & 4294901760) | (K2[2] & 65535),
(K2[0] << 16) | (K2[0] >>> 16),
(K2[2] & 4294901760) | (K2[3] & 65535),
(K2[1] << 16) | (K2[1] >>> 16),
(K2[3] & 4294901760) | (K2[0] & 65535),
])
this._b = 0
for (var i2 = 0; i2 < 4; i2++) {
nextState.call(this)
}
for (var i2 = 0; i2 < 8; i2++) {
C3[i2] ^= X2[(i2 + 4) & 7]
}
if (iv) {
var IV = iv.words
var IV_0 = IV[0]
var IV_1 = IV[1]
var i0 =
(((IV_0 << 8) | (IV_0 >>> 24)) & 16711935) |
(((IV_0 << 24) | (IV_0 >>> 8)) & 4278255360)
var i22 =
(((IV_1 << 8) | (IV_1 >>> 24)) & 16711935) |
(((IV_1 << 24) | (IV_1 >>> 8)) & 4278255360)
var i1 = (i0 >>> 16) | (i22 & 4294901760)
var i3 = (i22 << 16) | (i0 & 65535)
C3[0] ^= i0
C3[1] ^= i1
C3[2] ^= i22
C3[3] ^= i3
C3[4] ^= i0
C3[5] ^= i1
C3[6] ^= i22
C3[7] ^= i3
for (var i2 = 0; i2 < 4; i2++) {
nextState.call(this)
}
}
},
_doProcessBlock: function (M2, offset2) {
var X2 = this._X
nextState.call(this)
S2[0] = X2[0] ^ (X2[5] >>> 16) ^ (X2[3] << 16)
S2[1] = X2[2] ^ (X2[7] >>> 16) ^ (X2[5] << 16)
S2[2] = X2[4] ^ (X2[1] >>> 16) ^ (X2[7] << 16)
S2[3] = X2[6] ^ (X2[3] >>> 16) ^ (X2[1] << 16)
for (var i2 = 0; i2 < 4; i2++) {
S2[i2] =
(((S2[i2] << 8) | (S2[i2] >>> 24)) & 16711935) |
(((S2[i2] << 24) | (S2[i2] >>> 8)) & 4278255360)
M2[offset2 + i2] ^= S2[i2]
}
},
blockSize: 128 / 32,
ivSize: 64 / 32,
}))
function nextState() {
var X2 = this._X
var C3 = this._C
for (var i2 = 0; i2 < 8; i2++) {
C_[i2] = C3[i2]
}
C3[0] = (C3[0] + 1295307597 + this._b) | 0
C3[1] = (C3[1] + 3545052371 + (C3[0] >>> 0 < C_[0] >>> 0 ? 1 : 0)) | 0
C3[2] = (C3[2] + 886263092 + (C3[1] >>> 0 < C_[1] >>> 0 ? 1 : 0)) | 0
C3[3] = (C3[3] + 1295307597 + (C3[2] >>> 0 < C_[2] >>> 0 ? 1 : 0)) | 0
C3[4] = (C3[4] + 3545052371 + (C3[3] >>> 0 < C_[3] >>> 0 ? 1 : 0)) | 0
C3[5] = (C3[5] + 886263092 + (C3[4] >>> 0 < C_[4] >>> 0 ? 1 : 0)) | 0
C3[6] = (C3[6] + 1295307597 + (C3[5] >>> 0 < C_[5] >>> 0 ? 1 : 0)) | 0
C3[7] = (C3[7] + 3545052371 + (C3[6] >>> 0 < C_[6] >>> 0 ? 1 : 0)) | 0
this._b = C3[7] >>> 0 < C_[7] >>> 0 ? 1 : 0
for (var i2 = 0; i2 < 8; i2++) {
var gx = X2[i2] + C3[i2]
var ga = gx & 65535
var gb = gx >>> 16
var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb
var gl = (((gx & 4294901760) * gx) | 0) + (((gx & 65535) * gx) | 0)
G2[i2] = gh ^ gl
}
X2[0] =
(G2[0] +
((G2[7] << 16) | (G2[7] >>> 16)) +
((G2[6] << 16) | (G2[6] >>> 16))) |
0
X2[1] = (G2[1] + ((G2[0] << 8) | (G2[0] >>> 24)) + G2[7]) | 0
X2[2] =
(G2[2] +
((G2[1] << 16) | (G2[1] >>> 16)) +
((G2[0] << 16) | (G2[0] >>> 16))) |
0
X2[3] = (G2[3] + ((G2[2] << 8) | (G2[2] >>> 24)) + G2[1]) | 0
X2[4] =
(G2[4] +
((G2[3] << 16) | (G2[3] >>> 16)) +
((G2[2] << 16) | (G2[2] >>> 16))) |
0
X2[5] = (G2[5] + ((G2[4] << 8) | (G2[4] >>> 24)) + G2[3]) | 0
X2[6] =
(G2[6] +
((G2[5] << 16) | (G2[5] >>> 16)) +
((G2[4] << 16) | (G2[4] >>> 16))) |
0
X2[7] = (G2[7] + ((G2[6] << 8) | (G2[6] >>> 24)) + G2[5]) | 0
}
C2.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy)
})()
return CryptoJS.RabbitLegacy
})
})(rabbitLegacy)
var blowfish = { exports: {} }
;(function (module2, exports2) {
;(function (root2, factory, undef) {
{
module2.exports = factory(
core.exports,
encBase64.exports,
md5.exports,
evpkdf.exports,
cipherCore.exports
)
}
})(commonjsGlobal, function (CryptoJS) {
;(function () {
var C2 = CryptoJS
var C_lib = C2.lib
var BlockCipher = C_lib.BlockCipher
var C_algo = C2.algo
const N2 = 16
const ORIG_P = [
608135816, 2242054355, 320440878, 57701188, 2752067618, 698298832,
137296536, 3964562569, 1160258022, 953160567, 3193202383, 887688300,
3232508343, 3380367581, 1065670069, 3041331479, 2450970073, 2306472731,
]
const ORIG_S = [
[
3509652390, 2564797868, 805139163, 3491422135, 3101798381, 1780907670,
3128725573, 4046225305, 614570311, 3012652279, 134345442, 2240740374,
1667834072, 1901547113, 2757295779, 4103290238, 227898511, 1921955416,
1904987480, 2182433518, 2069144605, 3260701109, 2620446009, 720527379,
3318853667, 677414384, 3393288472, 3101374703, 2390351024, 1614419982,
1822297739, 2954791486, 3608508353, 3174124327, 2024746970,
1432378464, 3864339955, 2857741204, 1464375394, 1676153920,
1439316330, 715854006, 3033291828, 289532110, 2706671279, 2087905683,
3018724369, 1668267050, 732546397, 1947742710, 3462151702, 2609353502,
2950085171, 1814351708, 2050118529, 680887927, 999245976, 1800124847,
3300911131, 1713906067, 1641548236, 4213287313, 1216130144,
1575780402, 4018429277, 3917837745, 3693486850, 3949271944, 596196993,
3549867205, 258830323, 2213823033, 772490370, 2760122372, 1774776394,
2652871518, 566650946, 4142492826, 1728879713, 2882767088, 1783734482,
3629395816, 2517608232, 2874225571, 1861159788, 326777828, 3124490320,
2130389656, 2716951837, 967770486, 1724537150, 2185432712, 2364442137,
1164943284, 2105845187, 998989502, 3765401048, 2244026483, 1075463327,
1455516326, 1322494562, 910128902, 469688178, 1117454909, 936433444,
3490320968, 3675253459, 1240580251, 122909385, 2157517691, 634681816,
4142456567, 3825094682, 3061402683, 2540495037, 79693498, 3249098678,
1084186820, 1583128258, 426386531, 1761308591, 1047286709, 322548459,
995290223, 1845252383, 2603652396, 3431023940, 2942221577, 3202600964,
3727903485, 1712269319, 422464435, 3234572375, 1170764815, 3523960633,
3117677531, 1434042557, 442511882, 3600875718, 1076654713, 1738483198,
4213154764, 2393238008, 3677496056, 1014306527, 4251020053, 793779912,
2902807211, 842905082, 4246964064, 1395751752, 1040244610, 2656851899,
3396308128, 445077038, 3742853595, 3577915638, 679411651, 2892444358,
2354009459, 1767581616, 3150600392, 3791627101, 3102740896, 284835224,
4246832056, 1258075500, 768725851, 2589189241, 3069724005, 3532540348,
1274779536, 3789419226, 2764799539, 1660621633, 3471099624,
4011903706, 913787905, 3497959166, 737222580, 2514213453, 2928710040,
3937242737, 1804850592, 3499020752, 2949064160, 2386320175,
2390070455, 2415321851, 4061277028, 2290661394, 2416832540,
1336762016, 1754252060, 3520065937, 3014181293, 791618072, 3188594551,
3933548030, 2332172193, 3852520463, 3043980520, 413987798, 3465142937,
3030929376, 4245938359, 2093235073, 3534596313, 375366246, 2157278981,
2479649556, 555357303, 3870105701, 2008414854, 3344188149, 4221384143,
3956125452, 2067696032, 3594591187, 2921233993, 2428461, 544322398,
577241275, 1471733935, 610547355, 4027169054, 1432588573, 1507829418,
2025931657, 3646575487, 545086370, 48609733, 2200306550, 1653985193,
298326376, 1316178497, 3007786442, 2064951626, 458293330, 2589141269,
3591329599, 3164325604, 727753846, 2179363840, 146436021, 1461446943,
4069977195, 705550613, 3059967265, 3887724982, 4281599278, 3313849956,
1404054877, 2845806497, 146425753, 1854211946,
],
[
1266315497, 3048417604, 3681880366, 3289982499, 290971e4, 1235738493,
2632868024, 2414719590, 3970600049, 1771706367, 1449415276,
3266420449, 422970021, 1963543593, 2690192192, 3826793022, 1062508698,
1531092325, 1804592342, 2583117782, 2714934279, 4024971509,
1294809318, 4028980673, 1289560198, 2221992742, 1669523910, 35572830,
157838143, 1052438473, 1016535060, 1802137761, 1753167236, 1386275462,
3080475397, 2857371447, 1040679964, 2145300060, 2390574316,
1461121720, 2956646967, 4031777805, 4028374788, 33600511, 2920084762,
1018524850, 629373528, 3691585981, 3515945977, 2091462646, 2486323059,
586499841, 988145025, 935516892, 3367335476, 2599673255, 2839830854,
265290510, 3972581182, 2759138881, 3795373465, 1005194799, 847297441,
406762289, 1314163512, 1332590856, 1866599683, 4127851711, 750260880,
613907577, 1450815602, 3165620655, 3734664991, 3650291728, 3012275730,
3704569646, 1427272223, 778793252, 1343938022, 2676280711, 2052605720,
1946737175, 3164576444, 3914038668, 3967478842, 3682934266,
1661551462, 3294938066, 4011595847, 840292616, 3712170807, 616741398,
312560963, 711312465, 1351876610, 322626781, 1910503582, 271666773,
2175563734, 1594956187, 70604529, 3617834859, 1007753275, 1495573769,
4069517037, 2549218298, 2663038764, 504708206, 2263041392, 3941167025,
2249088522, 1514023603, 1998579484, 1312622330, 694541497, 2582060303,
2151582166, 1382467621, 776784248, 2618340202, 3323268794, 2497899128,
2784771155, 503983604, 4076293799, 907881277, 423175695, 432175456,
1378068232, 4145222326, 3954048622, 3938656102, 3820766613,
2793130115, 2977904593, 26017576, 3274890735, 3194772133, 1700274565,
1756076034, 4006520079, 3677328699, 720338349, 1533947780, 354530856,
688349552, 3973924725, 1637815568, 332179504, 3949051286, 53804574,
2852348879, 3044236432, 1282449977, 3583942155, 3416972820,
4006381244, 1617046695, 2628476075, 3002303598, 1686838959, 431878346,
2686675385, 1700445008, 1080580658, 1009431731, 832498133, 3223435511,
2605976345, 2271191193, 2516031870, 1648197032, 4164389018,
2548247927, 300782431, 375919233, 238389289, 3353747414, 2531188641,
2019080857, 1475708069, 455242339, 2609103871, 448939670, 3451063019,
1395535956, 2413381860, 1841049896, 1491858159, 885456874, 4264095073,
4001119347, 1565136089, 3898914787, 1108368660, 540939232, 1173283510,
2745871338, 3681308437, 4207628240, 3343053890, 4016749493,
1699691293, 1103962373, 3625875870, 2256883143, 3830138730,
1031889488, 3479347698, 1535977030, 4236805024, 3251091107,
2132092099, 1774941330, 1199868427, 1452454533, 157007616, 2904115357,
342012276, 595725824, 1480756522, 206960106, 497939518, 591360097,
863170706, 2375253569, 3596610801, 1814182875, 2094937945, 3421402208,
1082520231, 3463918190, 2785509508, 435703966, 3908032597, 1641649973,
2842273706, 3305899714, 1510255612, 2148256476, 2655287854,
3276092548, 4258621189, 236887753, 3681803219, 274041037, 1734335097,
3815195456, 3317970021, 1899903192, 1026095262, 4050517792, 356393447,
2410691914, 3873677099, 3682840055,
],
[
3913112168, 2491498743, 4132185628, 2489919796, 1091903735,
1979897079, 3170134830, 3567386728, 3557303409, 857797738, 1136121015,
1342202287, 507115054, 2535736646, 337727348, 3213592640, 1301675037,
2528481711, 1895095763, 1721773893, 3216771564, 62756741, 2142006736,
835421444, 2531993523, 1442658625, 3659876326, 2882144922, 676362277,
1392781812, 170690266, 3921047035, 1759253602, 3611846912, 1745797284,
664899054, 1329594018, 3901205900, 3045908486, 2062866102, 2865634940,
3543621612, 3464012697, 1080764994, 553557557, 3656615353, 3996768171,
991055499, 499776247, 1265440854, 648242737, 3940784050, 980351604,
3713745714, 1749149687, 3396870395, 4211799374, 3640570775,
1161844396, 3125318951, 1431517754, 545492359, 4268468663, 3499529547,
1437099964, 2702547544, 3433638243, 2581715763, 2787789398,
1060185593, 1593081372, 2418618748, 4260947970, 69676912, 2159744348,
86519011, 2512459080, 3838209314, 1220612927, 3339683548, 133810670,
1090789135, 1078426020, 1569222167, 845107691, 3583754449, 4072456591,
1091646820, 628848692, 1613405280, 3757631651, 526609435, 236106946,
48312990, 2942717905, 3402727701, 1797494240, 859738849, 992217954,
4005476642, 2243076622, 3870952857, 3732016268, 765654824, 3490871365,
2511836413, 1685915746, 3888969200, 1414112111, 2273134842,
3281911079, 4080962846, 172450625, 2569994100, 980381355, 4109958455,
2819808352, 2716589560, 2568741196, 3681446669, 3329971472,
1835478071, 660984891, 3704678404, 4045999559, 3422617507, 3040415634,
1762651403, 1719377915, 3470491036, 2693910283, 3642056355,
3138596744, 1364962596, 2073328063, 1983633131, 926494387, 3423689081,
2150032023, 4096667949, 1749200295, 3328846651, 309677260, 2016342300,
1779581495, 3079819751, 111262694, 1274766160, 443224088, 298511866,
1025883608, 3806446537, 1145181785, 168956806, 3641502830, 3584813610,
1689216846, 3666258015, 3200248200, 1692713982, 2646376535,
4042768518, 1618508792, 1610833997, 3523052358, 4130873264,
2001055236, 3610705100, 2202168115, 4028541809, 2961195399,
1006657119, 2006996926, 3186142756, 1430667929, 3210227297,
1314452623, 4074634658, 4101304120, 2273951170, 1399257539,
3367210612, 3027628629, 1190975929, 2062231137, 2333990788,
2221543033, 2438960610, 1181637006, 548689776, 2362791313, 3372408396,
3104550113, 3145860560, 296247880, 1970579870, 3078560182, 3769228297,
1714227617, 3291629107, 3898220290, 166772364, 1251581989, 493813264,
448347421, 195405023, 2709975567, 677966185, 3703036547, 1463355134,
2715995803, 1338867538, 1343315457, 2802222074, 2684532164, 233230375,
2599980071, 2000651841, 3277868038, 1638401717, 4028070440,
3237316320, 6314154, 819756386, 300326615, 590932579, 1405279636,
3267499572, 3150704214, 2428286686, 3959192993, 3461946742,
1862657033, 1266418056, 963775037, 2089974820, 2263052895, 1917689273,
448879540, 3550394620, 3981727096, 150775221, 3627908307, 1303187396,
508620638, 2975983352, 2726630617, 1817252668, 1876281319, 1457606340,
908771278, 3720792119, 3617206836, 2455994898, 1729034894, 1080033504,
],
[
976866871, 3556439503, 2881648439, 1522871579, 1555064734, 1336096578,
3548522304, 2579274686, 3574697629, 3205460757, 3593280638,
3338716283, 3079412587, 564236357, 2993598910, 1781952180, 1464380207,
3163844217, 3332601554, 1699332808, 1393555694, 1183702653,
3581086237, 1288719814, 691649499, 2847557200, 2895455976, 3193889540,
2717570544, 1781354906, 1676643554, 2592534050, 3230253752,
1126444790, 2770207658, 2633158820, 2210423226, 2615765581,
2414155088, 3127139286, 673620729, 2805611233, 1269405062, 4015350505,
3341807571, 4149409754, 1057255273, 2012875353, 2162469141,
2276492801, 2601117357, 993977747, 3918593370, 2654263191, 753973209,
36408145, 2530585658, 25011837, 3520020182, 2088578344, 530523599,
2918365339, 1524020338, 1518925132, 3760827505, 3759777254,
1202760957, 3985898139, 3906192525, 674977740, 4174734889, 2031300136,
2019492241, 3983892565, 4153806404, 3822280332, 352677332, 2297720250,
60907813, 90501309, 3286998549, 1016092578, 2535922412, 2839152426,
457141659, 509813237, 4120667899, 652014361, 1966332200, 2975202805,
55981186, 2327461051, 676427537, 3255491064, 2882294119, 3433927263,
1307055953, 942726286, 933058658, 2468411793, 3933900994, 4215176142,
1361170020, 2001714738, 2830558078, 3274259782, 1222529897,
1679025792, 2729314320, 3714953764, 1770335741, 151462246, 3013232138,
1682292957, 1483529935, 471910574, 1539241949, 458788160, 3436315007,
1807016891, 3718408830, 978976581, 1043663428, 3165965781, 1927990952,
4200891579, 2372276910, 3208408903, 3533431907, 1412390302,
2931980059, 4132332400, 1947078029, 3881505623, 4168226417,
2941484381, 1077988104, 1320477388, 886195818, 18198404, 3786409e3,
2509781533, 112762804, 3463356488, 1866414978, 891333506, 18488651,
661792760, 1628790961, 3885187036, 3141171499, 876946877, 2693282273,
1372485963, 791857591, 2686433993, 3759982718, 3167212022, 3472953795,
2716379847, 445679433, 3561995674, 3504004811, 3574258232, 54117162,
3331405415, 2381918588, 3769707343, 4154350007, 1140177722,
4074052095, 668550556, 3214352940, 367459370, 261225585, 2610173221,
4209349473, 3468074219, 3265815641, 314222801, 3066103646, 3808782860,
282218597, 3406013506, 3773591054, 379116347, 1285071038, 846784868,
2669647154, 3771962079, 3550491691, 2305946142, 453669953, 1268987020,
3317592352, 3279303384, 3744833421, 2610507566, 3859509063, 266596637,
3847019092, 517658769, 3462560207, 3443424879, 370717030, 4247526661,
2224018117, 4143653529, 4112773975, 2788324899, 2477274417,
1456262402, 2901442914, 1517677493, 1846949527, 2295493580,
3734397586, 2176403920, 1280348187, 1908823572, 3871786941, 846861322,
1172426758, 3287448474, 3383383037, 1655181056, 3139813346, 901632758,
1897031941, 2986607138, 3066810236, 3447102507, 1393639104, 373351379,
950779232, 625454576, 3124240540, 4148612726, 2007998917, 544563296,
2244738638, 2330496472, 2058025392, 1291430526, 424198748, 50039436,
29584100, 3605783033, 2429876329, 2791104160, 1057563949, 3255363231,
3075367218, 3463963227, 1469046755, 985887462,
],
]
var BLOWFISH_CTX = {
pbox: [],
sbox: [],
}
function F2(ctx, x2) {
let a2 = (x2 >> 24) & 255
let b2 = (x2 >> 16) & 255
let c2 = (x2 >> 8) & 255
let d3 = x2 & 255
let y2 = ctx.sbox[0][a2] + ctx.sbox[1][b2]
y2 = y2 ^ ctx.sbox[2][c2]
y2 = y2 + ctx.sbox[3][d3]
return y2
}
function BlowFish_Encrypt(ctx, left2, right2) {
let Xl = left2
let Xr = right2
let temp
for (let i2 = 0; i2 < N2; ++i2) {
Xl = Xl ^ ctx.pbox[i2]
Xr = F2(ctx, Xl) ^ Xr
temp = Xl
Xl = Xr
Xr = temp
}
temp = Xl
Xl = Xr
Xr = temp
Xr = Xr ^ ctx.pbox[N2]
Xl = Xl ^ ctx.pbox[N2 + 1]
return { left: Xl, right: Xr }
}
function BlowFish_Decrypt(ctx, left2, right2) {
let Xl = left2
let Xr = right2
let temp
for (let i2 = N2 + 1; i2 > 1; --i2) {
Xl = Xl ^ ctx.pbox[i2]
Xr = F2(ctx, Xl) ^ Xr
temp = Xl
Xl = Xr
Xr = temp
}
temp = Xl
Xl = Xr
Xr = temp
Xr = Xr ^ ctx.pbox[1]
Xl = Xl ^ ctx.pbox[0]
return { left: Xl, right: Xr }
}
function BlowFishInit(ctx, key2, keysize) {
for (let Row2 = 0; Row2 < 4; Row2++) {
ctx.sbox[Row2] = []
for (let Col2 = 0; Col2 < 256; Col2++) {
ctx.sbox[Row2][Col2] = ORIG_S[Row2][Col2]
}
}
let keyIndex = 0
for (let index2 = 0; index2 < N2 + 2; index2++) {
ctx.pbox[index2] = ORIG_P[index2] ^ key2[keyIndex]
keyIndex++
if (keyIndex >= keysize) {
keyIndex = 0
}
}
let Data1 = 0
let Data2 = 0
let res = 0
for (let i2 = 0; i2 < N2 + 2; i2 += 2) {
res = BlowFish_Encrypt(ctx, Data1, Data2)
Data1 = res.left
Data2 = res.right
ctx.pbox[i2] = Data1
ctx.pbox[i2 + 1] = Data2
}
for (let i2 = 0; i2 < 4; i2++) {
for (let j2 = 0; j2 < 256; j2 += 2) {
res = BlowFish_Encrypt(ctx, Data1, Data2)
Data1 = res.left
Data2 = res.right
ctx.sbox[i2][j2] = Data1
ctx.sbox[i2][j2 + 1] = Data2
}
}
return true
}
var Blowfish = (C_algo.Blowfish = BlockCipher.extend({
_doReset: function () {
if (this._keyPriorReset === this._key) {
return
}
var key2 = (this._keyPriorReset = this._key)
var keyWords = key2.words
var keySize = key2.sigBytes / 4
BlowFishInit(BLOWFISH_CTX, keyWords, keySize)
},
encryptBlock: function (M2, offset2) {
var res = BlowFish_Encrypt(BLOWFISH_CTX, M2[offset2], M2[offset2 + 1])
M2[offset2] = res.left
M2[offset2 + 1] = res.right
},
decryptBlock: function (M2, offset2) {
var res = BlowFish_Decrypt(BLOWFISH_CTX, M2[offset2], M2[offset2 + 1])
M2[offset2] = res.left
M2[offset2 + 1] = res.right
},
blockSize: 64 / 32,
keySize: 128 / 32,
ivSize: 64 / 32,
}))
C2.Blowfish = BlockCipher._createHelper(Blowfish)
})()
return CryptoJS.Blowfish
})
})(blowfish)
;(function (module2, exports2) {
;(function (root2, factory, undef) {
{
module2.exports = factory(
core.exports,
x64Core.exports,
libTypedarrays.exports,
encUtf16.exports,
encBase64.exports,
encBase64url.exports,
md5.exports,
sha1.exports,
sha256.exports,
sha224.exports,
sha512.exports,
sha384.exports,
sha3.exports,
ripemd160.exports,
hmac.exports,
pbkdf2.exports,
evpkdf.exports,
cipherCore.exports,
modeCfb.exports,
modeCtr.exports,
modeCtrGladman.exports,
modeOfb.exports,
modeEcb.exports,
padAnsix923.exports,
padIso10126.exports,
padIso97971.exports,
padZeropadding.exports,
padNopadding.exports,
formatHex.exports,
aes.exports,
tripledes.exports,
rc4.exports,
rabbit.exports,
rabbitLegacy.exports,
blowfish.exports
)
}
})(commonjsGlobal, function (CryptoJS) {
return CryptoJS
})
})(cryptoJs$1)
var cryptoJs = cryptoJs$1.exports
var index$1 = /* @__PURE__ */ _mergeNamespaces(
{
__proto__: null,
default: cryptoJs,
},
[cryptoJs$1.exports]
)
var CMD = PathProxy$1.CMD
function aroundEqual(a2, b2) {
return Math.abs(a2 - b2) < 1e-5
}
function pathToBezierCurves(path) {
var data2 = path.data
var len2 = path.len()
var bezierArrayGroups = []
var currentSubpath
var xi = 0
var yi = 0
var x0 = 0
var y0 = 0
function createNewSubpath(x3, y3) {
if (currentSubpath && currentSubpath.length > 2) {
bezierArrayGroups.push(currentSubpath)
}
currentSubpath = [x3, y3]
}
function addLine(x02, y02, x12, y12) {
if (!(aroundEqual(x02, x12) && aroundEqual(y02, y12))) {
currentSubpath.push(x02, y02, x12, y12, x12, y12)
}
}
function addArc(startAngle2, endAngle2, cx2, cy2, rx2, ry2) {
var delta = Math.abs(endAngle2 - startAngle2)
var len3 = (Math.tan(delta / 4) * 4) / 3
var dir3 = endAngle2 < startAngle2 ? -1 : 1
var c1 = Math.cos(startAngle2)
var s1 = Math.sin(startAngle2)
var c2 = Math.cos(endAngle2)
var s2 = Math.sin(endAngle2)
var x12 = c1 * rx2 + cx2
var y12 = s1 * ry2 + cy2
var x4 = c2 * rx2 + cx2
var y4 = s2 * ry2 + cy2
var hx = rx2 * len3 * dir3
var hy = ry2 * len3 * dir3
currentSubpath.push(
x12 - hx * s1,
y12 + hy * c1,
x4 + hx * s2,
y4 - hy * c2,
x4,
y4
)
}
var x1
var y1
var x2
var y2
for (var i2 = 0; i2 < len2; ) {
var cmd = data2[i2++]
var isFirst = i2 === 1
if (isFirst) {
xi = data2[i2]
yi = data2[i2 + 1]
x0 = xi
y0 = yi
if (cmd === CMD.L || cmd === CMD.C || cmd === CMD.Q) {
currentSubpath = [x0, y0]
}
}
switch (cmd) {
case CMD.M:
xi = x0 = data2[i2++]
yi = y0 = data2[i2++]
createNewSubpath(x0, y0)
break
case CMD.L:
x1 = data2[i2++]
y1 = data2[i2++]
addLine(xi, yi, x1, y1)
xi = x1
yi = y1
break
case CMD.C:
currentSubpath.push(
data2[i2++],
data2[i2++],
data2[i2++],
data2[i2++],
(xi = data2[i2++]),
(yi = data2[i2++])
)
break
case CMD.Q:
x1 = data2[i2++]
y1 = data2[i2++]
x2 = data2[i2++]
y2 = data2[i2++]
currentSubpath.push(
xi + (2 / 3) * (x1 - xi),
yi + (2 / 3) * (y1 - yi),
x2 + (2 / 3) * (x1 - x2),
y2 + (2 / 3) * (y1 - y2),
x2,
y2
)
xi = x2
yi = y2
break
case CMD.A:
var cx = data2[i2++]
var cy = data2[i2++]
var rx = data2[i2++]
var ry = data2[i2++]
var startAngle = data2[i2++]
var endAngle = data2[i2++] + startAngle
i2 += 1
var anticlockwise = !data2[i2++]
x1 = Math.cos(startAngle) * rx + cx
y1 = Math.sin(startAngle) * ry + cy
if (isFirst) {
x0 = x1
y0 = y1
createNewSubpath(x0, y0)
} else {
addLine(xi, yi, x1, y1)
}
xi = Math.cos(endAngle) * rx + cx
yi = Math.sin(endAngle) * ry + cy
var step = ((anticlockwise ? -1 : 1) * Math.PI) / 2
for (
var angle2 = startAngle;
anticlockwise ? angle2 > endAngle : angle2 < endAngle;
angle2 += step
) {
var nextAngle = anticlockwise
? Math.max(angle2 + step, endAngle)
: Math.min(angle2 + step, endAngle)
addArc(angle2, nextAngle, cx, cy, rx, ry)
}
break
case CMD.R:
x0 = xi = data2[i2++]
y0 = yi = data2[i2++]
x1 = x0 + data2[i2++]
y1 = y0 + data2[i2++]
createNewSubpath(x1, y0)
addLine(x1, y0, x1, y1)
addLine(x1, y1, x0, y1)
addLine(x0, y1, x0, y0)
addLine(x0, y0, x1, y0)
break
case CMD.Z:
currentSubpath && addLine(xi, yi, x0, y0)
xi = x0
yi = y0
break
}
}
if (currentSubpath && currentSubpath.length > 2) {
bezierArrayGroups.push(currentSubpath)
}
return bezierArrayGroups
}
function adpativeBezier(x0, y0, x1, y1, x2, y2, x3, y3, out2, scale2) {
if (
aroundEqual(x0, x1) &&
aroundEqual(y0, y1) &&
aroundEqual(x2, x3) &&
aroundEqual(y2, y3)
) {
out2.push(x3, y3)
return
}
var PIXEL_DISTANCE = 2 / scale2
var PIXEL_DISTANCE_SQR = PIXEL_DISTANCE * PIXEL_DISTANCE
var dx = x3 - x0
var dy = y3 - y0
var d3 = Math.sqrt(dx * dx + dy * dy)
dx /= d3
dy /= d3
var dx1 = x1 - x0
var dy1 = y1 - y0
var dx2 = x2 - x3
var dy2 = y2 - y3
var cp1LenSqr = dx1 * dx1 + dy1 * dy1
var cp2LenSqr = dx2 * dx2 + dy2 * dy2
if (cp1LenSqr < PIXEL_DISTANCE_SQR && cp2LenSqr < PIXEL_DISTANCE_SQR) {
out2.push(x3, y3)
return
}
var projLen1 = dx * dx1 + dy * dy1
var projLen2 = -dx * dx2 - dy * dy2
var d1Sqr = cp1LenSqr - projLen1 * projLen1
var d2Sqr = cp2LenSqr - projLen2 * projLen2
if (
d1Sqr < PIXEL_DISTANCE_SQR &&
projLen1 >= 0 &&
d2Sqr < PIXEL_DISTANCE_SQR &&
projLen2 >= 0
) {
out2.push(x3, y3)
return
}
var tmpSegX = []
var tmpSegY = []
cubicSubdivide(x0, x1, x2, x3, 0.5, tmpSegX)
cubicSubdivide(y0, y1, y2, y3, 0.5, tmpSegY)
adpativeBezier(
tmpSegX[0],
tmpSegY[0],
tmpSegX[1],
tmpSegY[1],
tmpSegX[2],
tmpSegY[2],
tmpSegX[3],
tmpSegY[3],
out2,
scale2
)
adpativeBezier(
tmpSegX[4],
tmpSegY[4],
tmpSegX[5],
tmpSegY[5],
tmpSegX[6],
tmpSegY[6],
tmpSegX[7],
tmpSegY[7],
out2,
scale2
)
}
function pathToPolygons(path, scale2) {
var bezierArrayGroups = pathToBezierCurves(path)
var polygons = []
scale2 = scale2 || 1
for (var i2 = 0; i2 < bezierArrayGroups.length; i2++) {
var beziers = bezierArrayGroups[i2]
var polygon = []
var x0 = beziers[0]
var y0 = beziers[1]
polygon.push(x0, y0)
for (var k2 = 2; k2 < beziers.length; ) {
var x1 = beziers[k2++]
var y1 = beziers[k2++]
var x2 = beziers[k2++]
var y2 = beziers[k2++]
var x3 = beziers[k2++]
var y3 = beziers[k2++]
adpativeBezier(x0, y0, x1, y1, x2, y2, x3, y3, polygon, scale2)
x0 = x3
y0 = y3
}
polygons.push(polygon)
}
return polygons
}
function getDividingGrids(dimSize, rowDim, count2) {
var rowSize = dimSize[rowDim]
var columnSize = dimSize[1 - rowDim]
var ratio = Math.abs(rowSize / columnSize)
var rowCount = Math.ceil(Math.sqrt(ratio * count2))
var columnCount = Math.floor(count2 / rowCount)
if (columnCount === 0) {
columnCount = 1
rowCount = count2
}
var grids = []
for (var i2 = 0; i2 < rowCount; i2++) {
grids.push(columnCount)
}
var currentCount = rowCount * columnCount
var remained = count2 - currentCount
if (remained > 0) {
for (var i2 = 0; i2 < remained; i2++) {
grids[i2 % rowCount] += 1
}
}
return grids
}
function divideSector(sectorShape, count2, outShapes) {
var r0 = sectorShape.r0
var r2 = sectorShape.r
var startAngle = sectorShape.startAngle
var endAngle = sectorShape.endAngle
var angle2 = Math.abs(endAngle - startAngle)
var arcLen = angle2 * r2
var deltaR = r2 - r0
var isAngleRow = arcLen > Math.abs(deltaR)
var grids = getDividingGrids([arcLen, deltaR], isAngleRow ? 0 : 1, count2)
var rowSize = (isAngleRow ? angle2 : deltaR) / grids.length
for (var row = 0; row < grids.length; row++) {
var columnSize = (isAngleRow ? deltaR : angle2) / grids[row]
for (var column = 0; column < grids[row]; column++) {
var newShape = {}
if (isAngleRow) {
newShape.startAngle = startAngle + rowSize * row
newShape.endAngle = startAngle + rowSize * (row + 1)
newShape.r0 = r0 + columnSize * column
newShape.r = r0 + columnSize * (column + 1)
} else {
newShape.startAngle = startAngle + columnSize * column
newShape.endAngle = startAngle + columnSize * (column + 1)
newShape.r0 = r0 + rowSize * row
newShape.r = r0 + rowSize * (row + 1)
}
newShape.clockwise = sectorShape.clockwise
newShape.cx = sectorShape.cx
newShape.cy = sectorShape.cy
outShapes.push(newShape)
}
}
}
function divideRect(rectShape, count2, outShapes) {
var width = rectShape.width
var height = rectShape.height
var isHorizontalRow = width > height
var grids = getDividingGrids([width, height], isHorizontalRow ? 0 : 1, count2)
var rowSizeDim = isHorizontalRow ? 'width' : 'height'
var columnSizeDim = isHorizontalRow ? 'height' : 'width'
var rowDim = isHorizontalRow ? 'x' : 'y'
var columnDim = isHorizontalRow ? 'y' : 'x'
var rowSize = rectShape[rowSizeDim] / grids.length
for (var row = 0; row < grids.length; row++) {
var columnSize = rectShape[columnSizeDim] / grids[row]
for (var column = 0; column < grids[row]; column++) {
var newShape = {}
newShape[rowDim] = row * rowSize
newShape[columnDim] = column * columnSize
newShape[rowSizeDim] = rowSize
newShape[columnSizeDim] = columnSize
newShape.x += rectShape.x
newShape.y += rectShape.y
outShapes.push(newShape)
}
}
}
function crossProduct2d(x1, y1, x2, y2) {
return x1 * y2 - x2 * y1
}
function lineLineIntersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) {
var mx = a2x - a1x
var my = a2y - a1y
var nx = b2x - b1x
var ny = b2y - b1y
var nmCrossProduct = crossProduct2d(nx, ny, mx, my)
if (Math.abs(nmCrossProduct) < 1e-6) {
return null
}
var b1a1x = a1x - b1x
var b1a1y = a1y - b1y
var p2 = crossProduct2d(b1a1x, b1a1y, nx, ny) / nmCrossProduct
if (p2 < 0 || p2 > 1) {
return null
}
return new Point$1(p2 * mx + a1x, p2 * my + a1y)
}
function projPtOnLine(pt3, lineA, lineB) {
var dir3 = new Point$1()
Point$1.sub(dir3, lineB, lineA)
dir3.normalize()
var dir22 = new Point$1()
Point$1.sub(dir22, pt3, lineA)
var len2 = dir22.dot(dir3)
return len2
}
function addToPoly(poly, pt3) {
var last2 = poly[poly.length - 1]
if (last2 && last2[0] === pt3[0] && last2[1] === pt3[1]) {
return
}
poly.push(pt3)
}
function splitPolygonByLine(points2, lineA, lineB) {
var len2 = points2.length
var intersections = []
for (var i2 = 0; i2 < len2; i2++) {
var p0 = points2[i2]
var p1 = points2[(i2 + 1) % len2]
var intersectionPt = lineLineIntersect(
p0[0],
p0[1],
p1[0],
p1[1],
lineA.x,
lineA.y,
lineB.x,
lineB.y
)
if (intersectionPt) {
intersections.push({
projPt: projPtOnLine(intersectionPt, lineA, lineB),
pt: intersectionPt,
idx: i2,
})
}
}
if (intersections.length < 2) {
return [{ points: points2 }, { points: points2 }]
}
intersections.sort(function (a2, b2) {
return a2.projPt - b2.projPt
})
var splitPt0 = intersections[0]
var splitPt1 = intersections[intersections.length - 1]
if (splitPt1.idx < splitPt0.idx) {
var tmp = splitPt0
splitPt0 = splitPt1
splitPt1 = tmp
}
var splitPt0Arr = [splitPt0.pt.x, splitPt0.pt.y]
var splitPt1Arr = [splitPt1.pt.x, splitPt1.pt.y]
var newPolyA = [splitPt0Arr]
var newPolyB = [splitPt1Arr]
for (var i2 = splitPt0.idx + 1; i2 <= splitPt1.idx; i2++) {
addToPoly(newPolyA, points2[i2].slice())
}
addToPoly(newPolyA, splitPt1Arr)
addToPoly(newPolyA, splitPt0Arr)
for (var i2 = splitPt1.idx + 1; i2 <= splitPt0.idx + len2; i2++) {
addToPoly(newPolyB, points2[i2 % len2].slice())
}
addToPoly(newPolyB, splitPt0Arr)
addToPoly(newPolyB, splitPt1Arr)
return [
{
points: newPolyA,
},
{
points: newPolyB,
},
]
}
function binaryDividePolygon(polygonShape) {
var points2 = polygonShape.points
var min3 = []
var max3 = []
fromPoints(points2, min3, max3)
var boundingRect = new BoundingRect$1(
min3[0],
min3[1],
max3[0] - min3[0],
max3[1] - min3[1]
)
var width = boundingRect.width
var height = boundingRect.height
var x2 = boundingRect.x
var y2 = boundingRect.y
var pt02 = new Point$1()
var pt12 = new Point$1()
if (width > height) {
pt02.x = pt12.x = x2 + width / 2
pt02.y = y2
pt12.y = y2 + height
} else {
pt02.y = pt12.y = y2 + height / 2
pt02.x = x2
pt12.x = x2 + width
}
return splitPolygonByLine(points2, pt02, pt12)
}
function binaryDivideRecursive(divider, shape, count2, out2) {
if (count2 === 1) {
out2.push(shape)
} else {
var mid = Math.floor(count2 / 2)
var sub2 = divider(shape)
binaryDivideRecursive(divider, sub2[0], mid, out2)
binaryDivideRecursive(divider, sub2[1], count2 - mid, out2)
}
return out2
}
function clone(path, count2) {
var paths = []
for (var i2 = 0; i2 < count2; i2++) {
paths.push(clonePath(path))
}
return paths
}
function copyPathProps(source2, target2) {
target2.setStyle(source2.style)
target2.z = source2.z
target2.z2 = source2.z2
target2.zlevel = source2.zlevel
}
function polygonConvert(points2) {
var out2 = []
for (var i2 = 0; i2 < points2.length; ) {
out2.push([points2[i2++], points2[i2++]])
}
return out2
}
function split(path, count2) {
var outShapes = []
var shape = path.shape
var OutShapeCtor
switch (path.type) {
case 'rect':
divideRect(shape, count2, outShapes)
OutShapeCtor = Rect$4
break
case 'sector':
divideSector(shape, count2, outShapes)
OutShapeCtor = Sector$1
break
case 'circle':
divideSector(
{
r0: 0,
r: shape.r,
startAngle: 0,
endAngle: Math.PI * 2,
cx: shape.cx,
cy: shape.cy,
},
count2,
outShapes
)
OutShapeCtor = Sector$1
break
default:
var m2 = path.getComputedTransform()
var scale2 = m2
? Math.sqrt(
Math.max(
m2[0] * m2[0] + m2[1] * m2[1],
m2[2] * m2[2] + m2[3] * m2[3]
)
)
: 1
var polygons = map$1(
pathToPolygons(path.getUpdatedPathProxy(), scale2),
function (poly) {
return polygonConvert(poly)
}
)
var polygonCount = polygons.length
if (polygonCount === 0) {
binaryDivideRecursive(
binaryDividePolygon,
{
points: polygons[0],
},
count2,
outShapes
)
} else if (polygonCount === count2) {
for (var i2 = 0; i2 < polygonCount; i2++) {
outShapes.push({
points: polygons[i2],
})
}
} else {
var totalArea_1 = 0
var items = map$1(polygons, function (poly) {
var min3 = []
var max3 = []
fromPoints(poly, min3, max3)
var area = (max3[1] - min3[1]) * (max3[0] - min3[0])
totalArea_1 += area
return { poly, area }
})
items.sort(function (a2, b2) {
return b2.area - a2.area
})
var left2 = count2
for (var i2 = 0; i2 < polygonCount; i2++) {
var item2 = items[i2]
if (left2 <= 0) {
break
}
var selfCount =
i2 === polygonCount - 1
? left2
: Math.ceil((item2.area / totalArea_1) * count2)
if (selfCount < 0) {
continue
}
binaryDivideRecursive(
binaryDividePolygon,
{
points: item2.poly,
},
selfCount,
outShapes
)
left2 -= selfCount
}
}
OutShapeCtor = Polygon$1
break
}
if (!OutShapeCtor) {
return clone(path, count2)
}
var out2 = []
for (var i2 = 0; i2 < outShapes.length; i2++) {
var subPath = new OutShapeCtor()
subPath.setShape(outShapes[i2])
copyPathProps(path, subPath)
out2.push(subPath)
}
return out2
}
function alignSubpath(subpath1, subpath2) {
var len1 = subpath1.length
var len2 = subpath2.length
if (len1 === len2) {
return [subpath1, subpath2]
}
var tmpSegX = []
var tmpSegY = []
var shorterPath = len1 < len2 ? subpath1 : subpath2
var shorterLen = Math.min(len1, len2)
var diff = Math.abs(len2 - len1) / 6
var shorterBezierCount = (shorterLen - 2) / 6
var eachCurveSubDivCount = Math.ceil(diff / shorterBezierCount) + 1
var newSubpath = [shorterPath[0], shorterPath[1]]
var remained = diff
for (var i2 = 2; i2 < shorterLen; ) {
var x0 = shorterPath[i2 - 2]
var y0 = shorterPath[i2 - 1]
var x1 = shorterPath[i2++]
var y1 = shorterPath[i2++]
var x2 = shorterPath[i2++]
var y2 = shorterPath[i2++]
var x3 = shorterPath[i2++]
var y3 = shorterPath[i2++]
if (remained <= 0) {
newSubpath.push(x1, y1, x2, y2, x3, y3)
continue
}
var actualSubDivCount = Math.min(remained, eachCurveSubDivCount - 1) + 1
for (var k2 = 1; k2 <= actualSubDivCount; k2++) {
var p2 = k2 / actualSubDivCount
cubicSubdivide(x0, x1, x2, x3, p2, tmpSegX)
cubicSubdivide(y0, y1, y2, y3, p2, tmpSegY)
x0 = tmpSegX[3]
y0 = tmpSegY[3]
newSubpath.push(tmpSegX[1], tmpSegY[1], tmpSegX[2], tmpSegY[2], x0, y0)
x1 = tmpSegX[5]
y1 = tmpSegY[5]
x2 = tmpSegX[6]
y2 = tmpSegY[6]
}
remained -= actualSubDivCount - 1
}
return shorterPath === subpath1
? [newSubpath, subpath2]
: [subpath1, newSubpath]
}
function createSubpath(lastSubpathSubpath, otherSubpath) {
var len2 = lastSubpathSubpath.length
var lastX = lastSubpathSubpath[len2 - 2]
var lastY = lastSubpathSubpath[len2 - 1]
var newSubpath = []
for (var i2 = 0; i2 < otherSubpath.length; ) {
newSubpath[i2++] = lastX
newSubpath[i2++] = lastY
}
return newSubpath
}
function alignBezierCurves(array1, array22) {
var _a2
var lastSubpath1
var lastSubpath2
var newArray1 = []
var newArray2 = []
for (var i2 = 0; i2 < Math.max(array1.length, array22.length); i2++) {
var subpath1 = array1[i2]
var subpath2 = array22[i2]
var newSubpath1 = void 0
var newSubpath2 = void 0
if (!subpath1) {
newSubpath1 = createSubpath(lastSubpath1 || subpath2, subpath2)
newSubpath2 = subpath2
} else if (!subpath2) {
newSubpath2 = createSubpath(lastSubpath2 || subpath1, subpath1)
newSubpath1 = subpath1
} else {
;(_a2 = alignSubpath(subpath1, subpath2)),
(newSubpath1 = _a2[0]),
(newSubpath2 = _a2[1])
lastSubpath1 = newSubpath1
lastSubpath2 = newSubpath2
}
newArray1.push(newSubpath1)
newArray2.push(newSubpath2)
}
return [newArray1, newArray2]
}
function centroid(array4) {
var signedArea = 0
var cx = 0
var cy = 0
var len2 = array4.length
for (var i2 = 0, j2 = len2 - 2; i2 < len2; j2 = i2, i2 += 2) {
var x0 = array4[j2]
var y0 = array4[j2 + 1]
var x1 = array4[i2]
var y1 = array4[i2 + 1]
var a2 = x0 * y1 - x1 * y0
signedArea += a2
cx += (x0 + x1) * a2
cy += (y0 + y1) * a2
}
if (signedArea === 0) {
return [array4[0] || 0, array4[1] || 0]
}
return [cx / signedArea / 3, cy / signedArea / 3, signedArea]
}
function findBestRingOffset(fromSubBeziers, toSubBeziers, fromCp, toCp) {
var bezierCount = (fromSubBeziers.length - 2) / 6
var bestScore = Infinity
var bestOffset = 0
var len2 = fromSubBeziers.length
var len22 = len2 - 2
for (var offset2 = 0; offset2 < bezierCount; offset2++) {
var cursorOffset = offset2 * 6
var score = 0
for (var k2 = 0; k2 < len2; k2 += 2) {
var idx = k2 === 0 ? cursorOffset : ((cursorOffset + k2 - 2) % len22) + 2
var x0 = fromSubBeziers[idx] - fromCp[0]
var y0 = fromSubBeziers[idx + 1] - fromCp[1]
var x1 = toSubBeziers[k2] - toCp[0]
var y1 = toSubBeziers[k2 + 1] - toCp[1]
var dx = x1 - x0
var dy = y1 - y0
score += dx * dx + dy * dy
}
if (score < bestScore) {
bestScore = score
bestOffset = offset2
}
}
return bestOffset
}
function reverse(array4) {
var newArr = []
var len2 = array4.length
for (var i2 = 0; i2 < len2; i2 += 2) {
newArr[i2] = array4[len2 - i2 - 2]
newArr[i2 + 1] = array4[len2 - i2 - 1]
}
return newArr
}
function findBestMorphingRotation(
fromArr,
toArr2,
searchAngleIteration,
searchAngleRange
) {
var result = []
var fromNeedsReverse
for (var i2 = 0; i2 < fromArr.length; i2++) {
var fromSubpathBezier = fromArr[i2]
var toSubpathBezier = toArr2[i2]
var fromCp = centroid(fromSubpathBezier)
var toCp = centroid(toSubpathBezier)
if (fromNeedsReverse == null) {
fromNeedsReverse = fromCp[2] < 0 !== toCp[2] < 0
}
var newFromSubpathBezier = []
var newToSubpathBezier = []
var bestAngle = 0
var bestScore = Infinity
var tmpArr2 = []
var len2 = fromSubpathBezier.length
if (fromNeedsReverse) {
fromSubpathBezier = reverse(fromSubpathBezier)
}
var offset2 =
findBestRingOffset(fromSubpathBezier, toSubpathBezier, fromCp, toCp) * 6
var len22 = len2 - 2
for (var k2 = 0; k2 < len22; k2 += 2) {
var idx = ((offset2 + k2) % len22) + 2
newFromSubpathBezier[k2 + 2] = fromSubpathBezier[idx] - fromCp[0]
newFromSubpathBezier[k2 + 3] = fromSubpathBezier[idx + 1] - fromCp[1]
}
newFromSubpathBezier[0] = fromSubpathBezier[offset2] - fromCp[0]
newFromSubpathBezier[1] = fromSubpathBezier[offset2 + 1] - fromCp[1]
if (searchAngleIteration > 0) {
var step = searchAngleRange / searchAngleIteration
for (
var angle2 = -searchAngleRange / 2;
angle2 <= searchAngleRange / 2;
angle2 += step
) {
var sa = Math.sin(angle2)
var ca2 = Math.cos(angle2)
var score = 0
for (var k2 = 0; k2 < fromSubpathBezier.length; k2 += 2) {
var x0 = newFromSubpathBezier[k2]
var y0 = newFromSubpathBezier[k2 + 1]
var x1 = toSubpathBezier[k2] - toCp[0]
var y1 = toSubpathBezier[k2 + 1] - toCp[1]
var newX1 = x1 * ca2 - y1 * sa
var newY1 = x1 * sa + y1 * ca2
tmpArr2[k2] = newX1
tmpArr2[k2 + 1] = newY1
var dx = newX1 - x0
var dy = newY1 - y0
score += dx * dx + dy * dy
}
if (score < bestScore) {
bestScore = score
bestAngle = angle2
for (var m2 = 0; m2 < tmpArr2.length; m2++) {
newToSubpathBezier[m2] = tmpArr2[m2]
}
}
}
} else {
for (var i_1 = 0; i_1 < len2; i_1 += 2) {
newToSubpathBezier[i_1] = toSubpathBezier[i_1] - toCp[0]
newToSubpathBezier[i_1 + 1] = toSubpathBezier[i_1 + 1] - toCp[1]
}
}
result.push({
from: newFromSubpathBezier,
to: newToSubpathBezier,
fromCp,
toCp,
rotation: -bestAngle,
})
}
return result
}
function isCombineMorphing(path) {
return path.__isCombineMorphing
}
var SAVED_METHOD_PREFIX = '__mOriginal_'
function saveAndModifyMethod(obj, methodName, modifiers) {
var savedMethodName = SAVED_METHOD_PREFIX + methodName
var originalMethod = obj[savedMethodName] || obj[methodName]
if (!obj[savedMethodName]) {
obj[savedMethodName] = obj[methodName]
}
var replace2 = modifiers.replace
var after2 = modifiers.after
var before2 = modifiers.before
obj[methodName] = function () {
var args = arguments
var res
before2 && before2.apply(this, args)
if (replace2) {
res = replace2.apply(this, args)
} else {
res = originalMethod.apply(this, args)
}
after2 && after2.apply(this, args)
return res
}
}
function restoreMethod(obj, methodName) {
var savedMethodName = SAVED_METHOD_PREFIX + methodName
if (obj[savedMethodName]) {
obj[methodName] = obj[savedMethodName]
obj[savedMethodName] = null
}
}
function applyTransformOnBeziers(bezierCurves, mm) {
for (var i2 = 0; i2 < bezierCurves.length; i2++) {
var subBeziers = bezierCurves[i2]
for (var k2 = 0; k2 < subBeziers.length; ) {
var x2 = subBeziers[k2]
var y2 = subBeziers[k2 + 1]
subBeziers[k2++] = mm[0] * x2 + mm[2] * y2 + mm[4]
subBeziers[k2++] = mm[1] * x2 + mm[3] * y2 + mm[5]
}
}
}
function prepareMorphPath(fromPath, toPath) {
var fromPathProxy = fromPath.getUpdatedPathProxy()
var toPathProxy = toPath.getUpdatedPathProxy()
var _a2 = alignBezierCurves(
pathToBezierCurves(fromPathProxy),
pathToBezierCurves(toPathProxy)
),
fromBezierCurves = _a2[0],
toBezierCurves = _a2[1]
var fromPathTransform = fromPath.getComputedTransform()
var toPathTransform = toPath.getComputedTransform()
function updateIdentityTransform() {
this.transform = null
}
fromPathTransform &&
applyTransformOnBeziers(fromBezierCurves, fromPathTransform)
toPathTransform && applyTransformOnBeziers(toBezierCurves, toPathTransform)
saveAndModifyMethod(toPath, 'updateTransform', {
replace: updateIdentityTransform,
})
toPath.transform = null
var morphingData = findBestMorphingRotation(
fromBezierCurves,
toBezierCurves,
10,
Math.PI
)
var tmpArr2 = []
saveAndModifyMethod(toPath, 'buildPath', {
replace: function (path) {
var t3 = toPath.__morphT
var onet = 1 - t3
var newCp = []
for (var i2 = 0; i2 < morphingData.length; i2++) {
var item2 = morphingData[i2]
var from = item2.from
var to = item2.to
var angle2 = item2.rotation * t3
var fromCp = item2.fromCp
var toCp = item2.toCp
var sa = Math.sin(angle2)
var ca2 = Math.cos(angle2)
lerp$1(newCp, fromCp, toCp, t3)
for (var m2 = 0; m2 < from.length; m2 += 2) {
var x0_1 = from[m2]
var y0_1 = from[m2 + 1]
var x1 = to[m2]
var y1 = to[m2 + 1]
var x2 = x0_1 * onet + x1 * t3
var y2 = y0_1 * onet + y1 * t3
tmpArr2[m2] = x2 * ca2 - y2 * sa + newCp[0]
tmpArr2[m2 + 1] = x2 * sa + y2 * ca2 + newCp[1]
}
var x0 = tmpArr2[0]
var y0 = tmpArr2[1]
path.moveTo(x0, y0)
for (var m2 = 2; m2 < from.length; ) {
var x1 = tmpArr2[m2++]
var y1 = tmpArr2[m2++]
var x22 = tmpArr2[m2++]
var y22 = tmpArr2[m2++]
var x3 = tmpArr2[m2++]
var y3 = tmpArr2[m2++]
if (x0 === x1 && y0 === y1 && x22 === x3 && y22 === y3) {
path.lineTo(x3, y3)
} else {
path.bezierCurveTo(x1, y1, x22, y22, x3, y3)
}
x0 = x3
y0 = y3
}
}
},
})
}
function morphPath(fromPath, toPath, animationOpts) {
if (!fromPath || !toPath) {
return toPath
}
var oldDone = animationOpts.done
var oldDuring = animationOpts.during
prepareMorphPath(fromPath, toPath)
toPath.__morphT = 0
function restoreToPath() {
restoreMethod(toPath, 'buildPath')
restoreMethod(toPath, 'updateTransform')
toPath.__morphT = -1
toPath.createPathProxy()
toPath.dirtyShape()
}
toPath.animateTo(
{
__morphT: 1,
},
defaults(
{
during: function (p2) {
toPath.dirtyShape()
oldDuring && oldDuring(p2)
},
done: function () {
restoreToPath()
oldDone && oldDone()
},
},
animationOpts
)
)
return toPath
}
function hilbert(x2, y2, minX, minY, maxX, maxY) {
var bits2 = 16
x2 = maxX === minX ? 0 : Math.round((32767 * (x2 - minX)) / (maxX - minX))
y2 = maxY === minY ? 0 : Math.round((32767 * (y2 - minY)) / (maxY - minY))
var d3 = 0
var tmp
for (var s2 = (1 << bits2) / 2; s2 > 0; s2 /= 2) {
var rx = 0
var ry = 0
if ((x2 & s2) > 0) {
rx = 1
}
if ((y2 & s2) > 0) {
ry = 1
}
d3 += s2 * s2 * ((3 * rx) ^ ry)
if (ry === 0) {
if (rx === 1) {
x2 = s2 - 1 - x2
y2 = s2 - 1 - y2
}
tmp = x2
x2 = y2
y2 = tmp
}
}
return d3
}
function sortPaths(pathList) {
var xMin = Infinity
var yMin = Infinity
var xMax = -Infinity
var yMax = -Infinity
var cps = map$1(pathList, function (path) {
var rect = path.getBoundingRect()
var m2 = path.getComputedTransform()
var x2 = rect.x + rect.width / 2 + (m2 ? m2[4] : 0)
var y2 = rect.y + rect.height / 2 + (m2 ? m2[5] : 0)
xMin = Math.min(x2, xMin)
yMin = Math.min(y2, yMin)
xMax = Math.max(x2, xMax)
yMax = Math.max(y2, yMax)
return [x2, y2]
})
var items = map$1(cps, function (cp, idx) {
return {
cp,
z: hilbert(cp[0], cp[1], xMin, yMin, xMax, yMax),
path: pathList[idx],
}
})
return items
.sort(function (a2, b2) {
return a2.z - b2.z
})
.map(function (item2) {
return item2.path
})
}
function defaultDividePath(param) {
return split(param.path, param.count)
}
function createEmptyReturn() {
return {
fromIndividuals: [],
toIndividuals: [],
count: 0,
}
}
function combineMorph(fromList, toPath, animationOpts) {
var fromPathList = []
function addFromPath(fromList2) {
for (var i3 = 0; i3 < fromList2.length; i3++) {
var from2 = fromList2[i3]
if (isCombineMorphing(from2)) {
addFromPath(from2.childrenRef())
} else if (from2 instanceof Path$1) {
fromPathList.push(from2)
}
}
}
addFromPath(fromList)
var separateCount = fromPathList.length
if (!separateCount) {
return createEmptyReturn()
}
var dividePath = animationOpts.dividePath || defaultDividePath
var toSubPathList = dividePath({
path: toPath,
count: separateCount,
})
if (toSubPathList.length !== separateCount) {
console.error('Invalid morphing: unmatched splitted path')
return createEmptyReturn()
}
fromPathList = sortPaths(fromPathList)
toSubPathList = sortPaths(toSubPathList)
var oldDone = animationOpts.done
var oldDuring = animationOpts.during
var individualDelay = animationOpts.individualDelay
var identityTransform = new Transformable$1()
for (var i2 = 0; i2 < separateCount; i2++) {
var from = fromPathList[i2]
var to = toSubPathList[i2]
to.parent = toPath
to.copyTransform(identityTransform)
if (!individualDelay) {
prepareMorphPath(from, to)
}
}
toPath.__isCombineMorphing = true
toPath.childrenRef = function () {
return toSubPathList
}
function addToSubPathListToZr(zr) {
for (var i3 = 0; i3 < toSubPathList.length; i3++) {
toSubPathList[i3].addSelfToZr(zr)
}
}
saveAndModifyMethod(toPath, 'addSelfToZr', {
after: function (zr) {
addToSubPathListToZr(zr)
},
})
saveAndModifyMethod(toPath, 'removeSelfFromZr', {
after: function (zr) {
for (var i3 = 0; i3 < toSubPathList.length; i3++) {
toSubPathList[i3].removeSelfFromZr(zr)
}
},
})
function restoreToPath() {
toPath.__isCombineMorphing = false
toPath.__morphT = -1
toPath.childrenRef = null
restoreMethod(toPath, 'addSelfToZr')
restoreMethod(toPath, 'removeSelfFromZr')
}
var toLen = toSubPathList.length
if (individualDelay) {
var animating_1 = toLen
var eachDone = function () {
animating_1--
if (animating_1 === 0) {
restoreToPath()
oldDone && oldDone()
}
}
for (var i2 = 0; i2 < toLen; i2++) {
var indivdualAnimationOpts = individualDelay
? defaults(
{
delay:
(animationOpts.delay || 0) +
individualDelay(i2, toLen, fromPathList[i2], toSubPathList[i2]),
done: eachDone,
},
animationOpts
)
: animationOpts
morphPath(fromPathList[i2], toSubPathList[i2], indivdualAnimationOpts)
}
} else {
toPath.__morphT = 0
toPath.animateTo(
{
__morphT: 1,
},
defaults(
{
during: function (p2) {
for (var i3 = 0; i3 < toLen; i3++) {
var child = toSubPathList[i3]
child.__morphT = toPath.__morphT
child.dirtyShape()
}
oldDuring && oldDuring(p2)
},
done: function () {
restoreToPath()
for (var i3 = 0; i3 < fromList.length; i3++) {
restoreMethod(fromList[i3], 'updateTransform')
}
oldDone && oldDone()
},
},
animationOpts
)
)
}
if (toPath.__zr) {
addToSubPathListToZr(toPath.__zr)
}
return {
fromIndividuals: fromPathList,
toIndividuals: toSubPathList,
count: toLen,
}
}
function separateMorph(fromPath, toPathList, animationOpts) {
var toLen = toPathList.length
var fromPathList = []
var dividePath = animationOpts.dividePath || defaultDividePath
function addFromPath(fromList) {
for (var i3 = 0; i3 < fromList.length; i3++) {
var from = fromList[i3]
if (isCombineMorphing(from)) {
addFromPath(from.childrenRef())
} else if (from instanceof Path$1) {
fromPathList.push(from)
}
}
}
if (isCombineMorphing(fromPath)) {
addFromPath(fromPath.childrenRef())
var fromLen = fromPathList.length
if (fromLen < toLen) {
var k2 = 0
for (var i2 = fromLen; i2 < toLen; i2++) {
fromPathList.push(clonePath(fromPathList[k2++ % fromLen]))
}
}
fromPathList.length = toLen
} else {
fromPathList = dividePath({ path: fromPath, count: toLen })
var fromPathTransform = fromPath.getComputedTransform()
for (var i2 = 0; i2 < fromPathList.length; i2++) {
fromPathList[i2].setLocalTransform(fromPathTransform)
}
if (fromPathList.length !== toLen) {
console.error('Invalid morphing: unmatched splitted path')
return createEmptyReturn()
}
}
fromPathList = sortPaths(fromPathList)
toPathList = sortPaths(toPathList)
var individualDelay = animationOpts.individualDelay
for (var i2 = 0; i2 < toLen; i2++) {
var indivdualAnimationOpts = individualDelay
? defaults(
{
delay:
(animationOpts.delay || 0) +
individualDelay(i2, toLen, fromPathList[i2], toPathList[i2]),
},
animationOpts
)
: animationOpts
morphPath(fromPathList[i2], toPathList[i2], indivdualAnimationOpts)
}
return {
fromIndividuals: fromPathList,
toIndividuals: toPathList,
count: toPathList.length,
}
}
function isMultiple(elements2) {
return isArray$6(elements2[0])
}
function prepareMorphBatches(one, many) {
var batches = []
var batchCount = one.length
for (var i2 = 0; i2 < batchCount; i2++) {
batches.push({
one: one[i2],
many: [],
})
}
for (var i2 = 0; i2 < many.length; i2++) {
var len2 = many[i2].length
var k2 = void 0
for (k2 = 0; k2 < len2; k2++) {
batches[k2 % batchCount].many.push(many[i2][k2])
}
}
var off2 = 0
for (var i2 = batchCount - 1; i2 >= 0; i2--) {
if (!batches[i2].many.length) {
var moveFrom = batches[off2].many
if (moveFrom.length <= 1) {
if (off2) {
off2 = 0
} else {
return batches
}
}
var len2 = moveFrom.length
var mid = Math.ceil(len2 / 2)
batches[i2].many = moveFrom.slice(mid, len2)
batches[off2].many = moveFrom.slice(0, mid)
off2++
}
}
return batches
}
var pathDividers = {
clone: function (params2) {
var ret = []
var approxOpacity =
1 - Math.pow(1 - params2.path.style.opacity, 1 / params2.count)
for (var i2 = 0; i2 < params2.count; i2++) {
var cloned = clonePath(params2.path)
cloned.setStyle('opacity', approxOpacity)
ret.push(cloned)
}
return ret
},
split: null,
}
function applyMorphAnimation(
from,
to,
divideShape,
seriesModel,
dataIndex,
animateOtherProps
) {
if (!from.length || !to.length) {
return
}
var updateAnimationCfg = getAnimationConfig('update', seriesModel, dataIndex)
if (!(updateAnimationCfg && updateAnimationCfg.duration > 0)) {
return
}
var animationDelay = seriesModel.getModel('universalTransition').get('delay')
var animationCfg = Object.assign(
{
setToFinal: true,
},
updateAnimationCfg
)
var many
var one
if (isMultiple(from)) {
many = from
one = to
}
if (isMultiple(to)) {
many = to
one = from
}
function morphOneBatch(
batch,
fromIsMany2,
animateIndex2,
animateCount2,
forceManyOne
) {
var batchMany = batch.many
var batchOne = batch.one
if (batchMany.length === 1 && !forceManyOne) {
var batchFrom = fromIsMany2 ? batchMany[0] : batchOne
var batchTo = fromIsMany2 ? batchOne : batchMany[0]
if (isCombineMorphing(batchFrom)) {
morphOneBatch(
{
many: [batchFrom],
one: batchTo,
},
true,
animateIndex2,
animateCount2,
true
)
} else {
var individualAnimationCfg = animationDelay
? defaults(
{
delay: animationDelay(animateIndex2, animateCount2),
},
animationCfg
)
: animationCfg
morphPath(batchFrom, batchTo, individualAnimationCfg)
animateOtherProps(
batchFrom,
batchTo,
batchFrom,
batchTo,
individualAnimationCfg
)
}
} else {
var separateAnimationCfg = defaults(
{
dividePath: pathDividers[divideShape],
individualDelay:
animationDelay &&
function (idx, count3, fromPath, toPath) {
return animationDelay(idx + animateIndex2, animateCount2)
},
},
animationCfg
)
var _a2 = fromIsMany2
? combineMorph(batchMany, batchOne, separateAnimationCfg)
: separateMorph(batchOne, batchMany, separateAnimationCfg),
fromIndividuals = _a2.fromIndividuals,
toIndividuals = _a2.toIndividuals
var count2 = fromIndividuals.length
for (var k2 = 0; k2 < count2; k2++) {
var individualAnimationCfg = animationDelay
? defaults(
{
delay: animationDelay(k2, count2),
},
animationCfg
)
: animationCfg
animateOtherProps(
fromIndividuals[k2],
toIndividuals[k2],
fromIsMany2 ? batchMany[k2] : batch.one,
fromIsMany2 ? batch.one : batchMany[k2],
individualAnimationCfg
)
}
}
}
var fromIsMany = many ? many === from : from.length > to.length
var morphBatches = many
? prepareMorphBatches(one, many)
: prepareMorphBatches(fromIsMany ? to : from, [fromIsMany ? from : to])
var animateCount = 0
for (var i2 = 0; i2 < morphBatches.length; i2++) {
animateCount += morphBatches[i2].many.length
}
var animateIndex = 0
for (var i2 = 0; i2 < morphBatches.length; i2++) {
morphOneBatch(morphBatches[i2], fromIsMany, animateIndex, animateCount)
animateIndex += morphBatches[i2].many.length
}
}
function getPathList(elements2) {
if (!elements2) {
return []
}
if (isArray$6(elements2)) {
var pathList_1 = []
for (var i2 = 0; i2 < elements2.length; i2++) {
pathList_1.push(getPathList(elements2[i2]))
}
return pathList_1
}
var pathList = []
elements2.traverse(function (el2) {
if (
el2 instanceof Path$1 &&
!el2.disableMorphing &&
!el2.invisible &&
!el2.ignore
) {
pathList.push(el2)
}
})
return pathList
}
var DATA_COUNT_THRESHOLD = 1e4
var getUniversalTransitionGlobalStore = makeInner()
function getGroupIdDimension(data2) {
var dimensions = data2.dimensions
for (var i2 = 0; i2 < dimensions.length; i2++) {
var dimInfo = data2.getDimensionInfo(dimensions[i2])
if (dimInfo && dimInfo.otherDims.itemGroupId === 0) {
return dimensions[i2]
}
}
}
function flattenDataDiffItems(list2) {
var items = []
each$f(list2, function (seriesInfo) {
var data2 = seriesInfo.data
if (data2.count() > DATA_COUNT_THRESHOLD) {
return
}
var indices = data2.getIndices()
var groupDim = getGroupIdDimension(data2)
for (var dataIndex = 0; dataIndex < indices.length; dataIndex++) {
items.push({
dataGroupId: seriesInfo.dataGroupId,
data: data2,
dim: seriesInfo.dim || groupDim,
divide: seriesInfo.divide,
dataIndex,
})
}
})
return items
}
function fadeInElement(newEl2, newSeries, newIndex2) {
newEl2.traverse(function (el2) {
if (el2 instanceof Path$1) {
initProps(
el2,
{
style: {
opacity: 0,
},
},
newSeries,
{
dataIndex: newIndex2,
isFrom: true,
}
)
}
})
}
function removeEl(el2) {
if (el2.parent) {
var computedTransform = el2.getComputedTransform()
el2.setLocalTransform(computedTransform)
el2.parent.remove(el2)
}
}
function stopAnimation(el2) {
el2.stopAnimation()
if (el2.isGroup) {
el2.traverse(function (child) {
child.stopAnimation()
})
}
}
function animateElementStyles(el2, dataIndex, seriesModel) {
var animationConfig = getAnimationConfig('update', seriesModel, dataIndex)
animationConfig &&
el2.traverse(function (child) {
if (child instanceof Displayable$1) {
var oldStyle = getOldStyle(child)
if (oldStyle) {
child.animateFrom(
{
style: oldStyle,
},
animationConfig
)
}
}
})
}
function isAllIdSame(oldDiffItems, newDiffItems) {
var len2 = oldDiffItems.length
if (len2 !== newDiffItems.length) {
return false
}
for (var i2 = 0; i2 < len2; i2++) {
var oldItem = oldDiffItems[i2]
var newItem = newDiffItems[i2]
if (
oldItem.data.getId(oldItem.dataIndex) !==
newItem.data.getId(newItem.dataIndex)
) {
return false
}
}
return true
}
function transitionBetween(oldList, newList, api) {
var oldDiffItems = flattenDataDiffItems(oldList)
var newDiffItems = flattenDataDiffItems(newList)
function updateMorphingPathProps(from, to, rawFrom, rawTo, animationCfg) {
if (rawFrom || from) {
to.animateFrom(
{
style:
rawFrom && rawFrom !== from
? extend(extend({}, rawFrom.style), from.style)
: from.style,
},
animationCfg
)
}
}
function findKeyDim(items) {
for (var i3 = 0; i3 < items.length; i3++) {
if (items[i3].dim) {
return items[i3].dim
}
}
}
var oldKeyDim = findKeyDim(oldDiffItems)
var newKeyDim = findKeyDim(newDiffItems)
var hasMorphAnimation = false
function createKeyGetter(isOld, onlyGetId) {
return function (diffItem) {
var data2 = diffItem.data
var dataIndex = diffItem.dataIndex
if (onlyGetId) {
return data2.getId(dataIndex)
}
var dataGroupId = diffItem.dataGroupId
var keyDim = isOld ? oldKeyDim || newKeyDim : newKeyDim || oldKeyDim
var dimInfo = keyDim && data2.getDimensionInfo(keyDim)
var dimOrdinalMeta = dimInfo && dimInfo.ordinalMeta
if (dimInfo) {
var key2 = data2.get(dimInfo.name, dataIndex)
if (dimOrdinalMeta) {
return dimOrdinalMeta.categories[key2] || key2 + ''
}
return key2 + ''
}
var itemVal = data2.getRawDataItem(dataIndex)
if (itemVal && itemVal.groupId) {
return itemVal.groupId + ''
}
return dataGroupId || data2.getId(dataIndex)
}
}
var useId2 = isAllIdSame(oldDiffItems, newDiffItems)
var isElementStillInChart = {}
if (!useId2) {
for (var i2 = 0; i2 < newDiffItems.length; i2++) {
var newItem = newDiffItems[i2]
var el2 = newItem.data.getItemGraphicEl(newItem.dataIndex)
if (el2) {
isElementStillInChart[el2.id] = true
}
}
}
function updateOneToOne(newIndex2, oldIndex2) {
var oldItem = oldDiffItems[oldIndex2]
var newItem2 = newDiffItems[newIndex2]
var newSeries = newItem2.data.hostModel
var oldEl = oldItem.data.getItemGraphicEl(oldItem.dataIndex)
var newEl2 = newItem2.data.getItemGraphicEl(newItem2.dataIndex)
if (oldEl === newEl2) {
newEl2 && animateElementStyles(newEl2, newItem2.dataIndex, newSeries)
return
}
if (oldEl && isElementStillInChart[oldEl.id]) {
return
}
if (newEl2) {
stopAnimation(newEl2)
if (oldEl) {
stopAnimation(oldEl)
removeEl(oldEl)
hasMorphAnimation = true
applyMorphAnimation(
getPathList(oldEl),
getPathList(newEl2),
newItem2.divide,
newSeries,
newIndex2,
updateMorphingPathProps
)
} else {
fadeInElement(newEl2, newSeries, newIndex2)
}
}
}
new DataDiffer$1(
oldDiffItems,
newDiffItems,
createKeyGetter(true, useId2),
createKeyGetter(false, useId2),
null,
'multiple'
)
.update(updateOneToOne)
.updateManyToOne(function (newIndex2, oldIndices) {
var newItem2 = newDiffItems[newIndex2]
var newData = newItem2.data
var newSeries = newData.hostModel
var newEl2 = newData.getItemGraphicEl(newItem2.dataIndex)
var oldElsList = filter(
map$1(oldIndices, function (idx) {
return oldDiffItems[idx].data.getItemGraphicEl(
oldDiffItems[idx].dataIndex
)
}),
function (oldEl) {
return oldEl && oldEl !== newEl2 && !isElementStillInChart[oldEl.id]
}
)
if (newEl2) {
stopAnimation(newEl2)
if (oldElsList.length) {
each$f(oldElsList, function (oldEl) {
stopAnimation(oldEl)
removeEl(oldEl)
})
hasMorphAnimation = true
applyMorphAnimation(
getPathList(oldElsList),
getPathList(newEl2),
newItem2.divide,
newSeries,
newIndex2,
updateMorphingPathProps
)
} else {
fadeInElement(newEl2, newSeries, newItem2.dataIndex)
}
}
})
.updateOneToMany(function (newIndices, oldIndex2) {
var oldItem = oldDiffItems[oldIndex2]
var oldEl = oldItem.data.getItemGraphicEl(oldItem.dataIndex)
if (oldEl && isElementStillInChart[oldEl.id]) {
return
}
var newElsList = filter(
map$1(newIndices, function (idx) {
return newDiffItems[idx].data.getItemGraphicEl(
newDiffItems[idx].dataIndex
)
}),
function (el3) {
return el3 && el3 !== oldEl
}
)
var newSeris = newDiffItems[newIndices[0]].data.hostModel
if (newElsList.length) {
each$f(newElsList, function (newEl2) {
return stopAnimation(newEl2)
})
if (oldEl) {
stopAnimation(oldEl)
removeEl(oldEl)
hasMorphAnimation = true
applyMorphAnimation(
getPathList(oldEl),
getPathList(newElsList),
oldItem.divide,
newSeris,
newIndices[0],
updateMorphingPathProps
)
} else {
each$f(newElsList, function (newEl2) {
return fadeInElement(newEl2, newSeris, newIndices[0])
})
}
}
})
.updateManyToMany(function (newIndices, oldIndices) {
new DataDiffer$1(
oldIndices,
newIndices,
function (rawIdx) {
return oldDiffItems[rawIdx].data.getId(oldDiffItems[rawIdx].dataIndex)
},
function (rawIdx) {
return newDiffItems[rawIdx].data.getId(newDiffItems[rawIdx].dataIndex)
}
)
.update(function (newIndex2, oldIndex2) {
updateOneToOne(newIndices[newIndex2], oldIndices[oldIndex2])
})
.execute()
})
.execute()
if (hasMorphAnimation) {
each$f(newList, function (_a2) {
var data2 = _a2.data
var seriesModel = data2.hostModel
var view2 = seriesModel && api.getViewOfSeriesModel(seriesModel)
var animationCfg = getAnimationConfig('update', seriesModel, 0)
if (
view2 &&
seriesModel.isAnimationEnabled() &&
animationCfg &&
animationCfg.duration > 0
) {
view2.group.traverse(function (el3) {
if (el3 instanceof Path$1 && !el3.animators.length) {
el3.animateFrom(
{
style: {
opacity: 0,
},
},
animationCfg
)
}
})
}
})
}
}
function getSeriesTransitionKey(series) {
var seriesKey = series.getModel('universalTransition').get('seriesKey')
if (!seriesKey) {
return series.id
}
return seriesKey
}
function convertArraySeriesKeyToString(seriesKey) {
if (isArray$6(seriesKey)) {
return seriesKey.sort().join(',')
}
return seriesKey
}
function getDivideShapeFromData(data2) {
if (data2.hostModel) {
return data2.hostModel.getModel('universalTransition').get('divideShape')
}
}
function findTransitionSeriesBatches(globalStore2, params2) {
var updateBatches = createHashMap()
var oldDataMap = createHashMap()
var oldDataMapForSplit = createHashMap()
each$f(globalStore2.oldSeries, function (series, idx) {
var oldDataGroupId = globalStore2.oldDataGroupIds[idx]
var oldData = globalStore2.oldData[idx]
var transitionKey = getSeriesTransitionKey(series)
var transitionKeyStr = convertArraySeriesKeyToString(transitionKey)
oldDataMap.set(transitionKeyStr, {
dataGroupId: oldDataGroupId,
data: oldData,
})
if (isArray$6(transitionKey)) {
each$f(transitionKey, function (key2) {
oldDataMapForSplit.set(key2, {
key: transitionKeyStr,
dataGroupId: oldDataGroupId,
data: oldData,
})
})
}
})
each$f(params2.updatedSeries, function (series) {
if (series.isUniversalTransitionEnabled() && series.isAnimationEnabled()) {
var newDataGroupId = series.get('dataGroupId')
var newData = series.getData()
var transitionKey = getSeriesTransitionKey(series)
var transitionKeyStr = convertArraySeriesKeyToString(transitionKey)
var oldData = oldDataMap.get(transitionKeyStr)
if (oldData) {
updateBatches.set(transitionKeyStr, {
oldSeries: [
{
dataGroupId: oldData.dataGroupId,
divide: getDivideShapeFromData(oldData.data),
data: oldData.data,
},
],
newSeries: [
{
dataGroupId: newDataGroupId,
divide: getDivideShapeFromData(newData),
data: newData,
},
],
})
} else {
if (isArray$6(transitionKey)) {
var oldSeries_1 = []
each$f(transitionKey, function (key2) {
var oldData2 = oldDataMap.get(key2)
if (oldData2.data) {
oldSeries_1.push({
dataGroupId: oldData2.dataGroupId,
divide: getDivideShapeFromData(oldData2.data),
data: oldData2.data,
})
}
})
if (oldSeries_1.length) {
updateBatches.set(transitionKeyStr, {
oldSeries: oldSeries_1,
newSeries: [
{
dataGroupId: newDataGroupId,
data: newData,
divide: getDivideShapeFromData(newData),
},
],
})
}
} else {
var oldData_1 = oldDataMapForSplit.get(transitionKey)
if (oldData_1) {
var batch = updateBatches.get(oldData_1.key)
if (!batch) {
batch = {
oldSeries: [
{
dataGroupId: oldData_1.dataGroupId,
data: oldData_1.data,
divide: getDivideShapeFromData(oldData_1.data),
},
],
newSeries: [],
}
updateBatches.set(oldData_1.key, batch)
}
batch.newSeries.push({
dataGroupId: newDataGroupId,
data: newData,
divide: getDivideShapeFromData(newData),
})
}
}
}
}
})
return updateBatches
}
function querySeries(series, finder) {
for (var i2 = 0; i2 < series.length; i2++) {
var found =
(finder.seriesIndex != null &&
finder.seriesIndex === series[i2].seriesIndex) ||
(finder.seriesId != null && finder.seriesId === series[i2].id)
if (found) {
return i2
}
}
}
function transitionSeriesFromOpt(transitionOpt, globalStore2, params2, api) {
var from = []
var to = []
each$f(normalizeToArray(transitionOpt.from), function (finder) {
var idx = querySeries(globalStore2.oldSeries, finder)
if (idx >= 0) {
from.push({
dataGroupId: globalStore2.oldDataGroupIds[idx],
data: globalStore2.oldData[idx],
divide: getDivideShapeFromData(globalStore2.oldData[idx]),
dim: finder.dimension,
})
}
})
each$f(normalizeToArray(transitionOpt.to), function (finder) {
var idx = querySeries(params2.updatedSeries, finder)
if (idx >= 0) {
var data2 = params2.updatedSeries[idx].getData()
to.push({
dataGroupId: globalStore2.oldDataGroupIds[idx],
data: data2,
divide: getDivideShapeFromData(data2),
dim: finder.dimension,
})
}
})
if (from.length > 0 && to.length > 0) {
transitionBetween(from, to, api)
}
}
function installUniversalTransition(registers) {
registers.registerUpdateLifecycle(
'series:beforeupdate',
function (ecMOdel, api, params2) {
each$f(normalizeToArray(params2.seriesTransition), function (transOpt) {
each$f(normalizeToArray(transOpt.to), function (finder) {
var series = params2.updatedSeries
for (var i2 = 0; i2 < series.length; i2++) {
if (
(finder.seriesIndex != null &&
finder.seriesIndex === series[i2].seriesIndex) ||
(finder.seriesId != null && finder.seriesId === series[i2].id)
) {
series[i2][SERIES_UNIVERSAL_TRANSITION_PROP] = true
}
}
})
})
}
)
registers.registerUpdateLifecycle(
'series:transition',
function (ecModel, api, params2) {
var globalStore2 = getUniversalTransitionGlobalStore(api)
if (
globalStore2.oldSeries &&
params2.updatedSeries &&
params2.optionChanged
) {
var transitionOpt = params2.seriesTransition
if (transitionOpt) {
each$f(normalizeToArray(transitionOpt), function (opt) {
transitionSeriesFromOpt(opt, globalStore2, params2, api)
})
} else {
var updateBatches_1 = findTransitionSeriesBatches(
globalStore2,
params2
)
each$f(updateBatches_1.keys(), function (key2) {
var batch = updateBatches_1.get(key2)
transitionBetween(batch.oldSeries, batch.newSeries, api)
})
}
each$f(params2.updatedSeries, function (series) {
if (series[SERIES_UNIVERSAL_TRANSITION_PROP]) {
series[SERIES_UNIVERSAL_TRANSITION_PROP] = false
}
})
}
var allSeries = ecModel.getSeries()
var savedSeries = (globalStore2.oldSeries = [])
var savedDataGroupIds = (globalStore2.oldDataGroupIds = [])
var savedData = (globalStore2.oldData = [])
for (var i2 = 0; i2 < allSeries.length; i2++) {
var data2 = allSeries[i2].getData()
if (data2.count() < DATA_COUNT_THRESHOLD) {
savedSeries.push(allSeries[i2])
savedDataGroupIds.push(allSeries[i2].get('dataGroupId'))
savedData.push(data2)
}
}
}
)
}
use([install])
use([install$1])
use([
install$S,
install$R,
install$Q,
install$O,
install$M,
install$K,
install$J,
install$I,
install$H,
install$G,
install$F,
install$D,
install$C,
install$B,
install$A,
install$z,
install$y,
install$x,
install$w,
install$v,
install$u,
install$t,
])
use(install$r)
use(install$q)
use(install$L)
use(install$p)
use(install$E)
use(install$o)
use(install$n)
use(install$l)
use(install$k)
use(install$s)
use(install$j)
use(install$i)
use(install$h)
use(install$g)
use(install$f)
use(install$e)
use(install$b)
use(install$8)
use(install$a)
use(install$9)
use(install$5)
use(install$7)
use(install$6)
use(install$4)
use(install$3)
use(install$2)
use(installUniversalTransition)
use(installLabelLayout)
var index = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
registerLocale,
version: version$1,
dependencies,
PRIORITY,
init: init$2,
connect,
disconnect,
disConnect,
dispose,
getInstanceByDom,
getInstanceById,
registerTheme,
registerPreprocessor,
registerProcessor,
registerPostInit,
registerPostUpdate,
registerUpdateLifecycle,
registerAction,
registerCoordinateSystem,
getCoordinateSystemDimensions,
registerLayout,
registerVisual,
registerLoading,
setCanvasCreator,
registerMap: registerMap$1,
getMap,
registerTransform,
dataTool,
throttle,
use,
setPlatformAPI,
parseGeoJSON,
parseGeoJson: parseGeoJSON,
env: env$1,
Model: Model$1,
Axis: Axis$1,
innerDrawElementOnCanvas: brushSingle,
zrender,
matrix,
vector,
zrUtil: util$1,
color: color$1,
helper,
number: number$2,
time,
graphic,
format: format$2,
util,
List: SeriesData$1,
ComponentModel: ComponentModel$1,
ComponentView: ComponentView$1,
SeriesModel: SeriesModel$1,
ChartView: ChartView$1,
extendComponentModel,
extendComponentView,
extendSeriesModel,
extendChartView,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
/*!
* shared v9.6.5
* (c) 2023 kazuya kawaguchi
* Released under the MIT License.
*/
const inBrowser = typeof window !== 'undefined'
const makeSymbol = (name2, shareable = false) =>
!shareable ? Symbol(name2) : Symbol.for(name2)
const generateFormatCacheKey = (locale, key2, source2) =>
friendlyJSONstringify({ l: locale, k: key2, s: source2 })
const friendlyJSONstringify = (json) =>
JSON.stringify(json)
.replace(/\u2028/g, '\\u2028')
.replace(/\u2029/g, '\\u2029')
.replace(/\u0027/g, '\\u0027')
const isNumber = (val2) => typeof val2 === 'number' && isFinite(val2)
const isDate = (val2) => toTypeString(val2) === '[object Date]'
const isRegExp = (val2) => toTypeString(val2) === '[object RegExp]'
const isEmptyObject = (val2) =>
isPlainObject(val2) && Object.keys(val2).length === 0
const assign$1 = Object.assign
let _globalThis
const getGlobalThis = () => {
return (
_globalThis ||
(_globalThis =
typeof globalThis !== 'undefined'
? globalThis
: typeof self !== 'undefined'
? self
: typeof window !== 'undefined'
? window
: typeof global !== 'undefined'
? global
: {})
)
}
function escapeHtml(rawText) {
return rawText
.replace(//g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''')
}
const hasOwnProperty = Object.prototype.hasOwnProperty
function hasOwn(obj, key2) {
return hasOwnProperty.call(obj, key2)
}
const isArray = Array.isArray
const isFunction = (val2) => typeof val2 === 'function'
const isString$1 = (val2) => typeof val2 === 'string'
const isBoolean = (val2) => typeof val2 === 'boolean'
const isObject$1 = (val2) => val2 !== null && typeof val2 === 'object'
const objectToString = Object.prototype.toString
const toTypeString = (value2) => objectToString.call(value2)
const isPlainObject = (val2) => {
if (!isObject$1(val2)) return false
const proto2 = Object.getPrototypeOf(val2)
return proto2 === null || proto2.constructor === Object
}
const toDisplayString = (val2) => {
return val2 == null
? ''
: isArray(val2) || (isPlainObject(val2) && val2.toString === objectToString)
? JSON.stringify(val2, null, 2)
: String(val2)
}
function join$1(items, separator = '') {
return items.reduce(
(str, item2, index2) =>
index2 === 0 ? str + item2 : str + separator + item2,
''
)
}
function incrementer(code2) {
let current2 = code2
return () => ++current2
}
function warn(msg, err) {
if (typeof console !== 'undefined') {
console.warn(`[intlify] ` + msg)
if (err) {
console.warn(err.stack)
}
}
}
/*!
* message-compiler v9.6.5
* (c) 2023 kazuya kawaguchi
* Released under the MIT License.
*/
function createPosition(line, column, offset2) {
return { line, column, offset: offset2 }
}
function createLocation(start2, end2, source2) {
const loc = { start: start2, end: end2 }
if (source2 != null) {
loc.source = source2
}
return loc
}
const RE_ARGS = /\{([0-9a-zA-Z]+)\}/g
function format$1(message2, ...args) {
if (args.length === 1 && isObject(args[0])) {
args = args[0]
}
if (!args || !args.hasOwnProperty) {
args = {}
}
return message2.replace(RE_ARGS, (match2, identifier) => {
return args.hasOwnProperty(identifier) ? args[identifier] : ''
})
}
const assign = Object.assign
const isString = (val2) => typeof val2 === 'string'
const isObject = (val2) => val2 !== null && typeof val2 === 'object'
function join(items, separator = '') {
return items.reduce(
(str, item2, index2) =>
index2 === 0 ? str + item2 : str + separator + item2,
''
)
}
const CompileErrorCodes = {
EXPECTED_TOKEN: 1,
INVALID_TOKEN_IN_PLACEHOLDER: 2,
UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER: 3,
UNKNOWN_ESCAPE_SEQUENCE: 4,
INVALID_UNICODE_ESCAPE_SEQUENCE: 5,
UNBALANCED_CLOSING_BRACE: 6,
UNTERMINATED_CLOSING_BRACE: 7,
EMPTY_PLACEHOLDER: 8,
NOT_ALLOW_NEST_PLACEHOLDER: 9,
INVALID_LINKED_FORMAT: 10,
MUST_HAVE_MESSAGES_IN_PLURAL: 11,
UNEXPECTED_EMPTY_LINKED_MODIFIER: 12,
UNEXPECTED_EMPTY_LINKED_KEY: 13,
UNEXPECTED_LEXICAL_ANALYSIS: 14,
UNHANDLED_CODEGEN_NODE_TYPE: 15,
UNHANDLED_MINIFIER_NODE_TYPE: 16,
__EXTEND_POINT__: 17,
}
const errorMessages = {
[CompileErrorCodes.EXPECTED_TOKEN]: `Expected token: '{0}'`,
[CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER]: `Invalid token in placeholder: '{0}'`,
[CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]: `Unterminated single quote in placeholder`,
[CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE]: `Unknown escape sequence: \\{0}`,
[CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE]: `Invalid unicode escape sequence: {0}`,
[CompileErrorCodes.UNBALANCED_CLOSING_BRACE]: `Unbalanced closing brace`,
[CompileErrorCodes.UNTERMINATED_CLOSING_BRACE]: `Unterminated closing brace`,
[CompileErrorCodes.EMPTY_PLACEHOLDER]: `Empty placeholder`,
[CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER]: `Not allowed nest placeholder`,
[CompileErrorCodes.INVALID_LINKED_FORMAT]: `Invalid linked format`,
[CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL]: `Plural must have messages`,
[CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER]: `Unexpected empty linked modifier`,
[CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY]: `Unexpected empty linked key`,
[CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`,
[CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE]: `unhandled codegen node type: '{0}'`,
[CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE]: `unhandled mimifier node type: '{0}'`,
}
function createCompileError(code2, loc, options2 = {}) {
const { domain, messages: messages2, args } = options2
const msg = format$1(
(messages2 || errorMessages)[code2] || '',
...(args || [])
)
const error2 = new SyntaxError(String(msg))
error2.code = code2
if (loc) {
error2.location = loc
}
error2.domain = domain
return error2
}
function defaultOnError(error2) {
throw error2
}
const CHAR_SP = ' '
const CHAR_CR = '\r'
const CHAR_LF = '\n'
const CHAR_LS = String.fromCharCode(8232)
const CHAR_PS = String.fromCharCode(8233)
function createScanner(str) {
const _buf = str
let _index = 0
let _line = 1
let _column = 1
let _peekOffset = 0
const isCRLF = (index3) =>
_buf[index3] === CHAR_CR && _buf[index3 + 1] === CHAR_LF
const isLF = (index3) => _buf[index3] === CHAR_LF
const isPS = (index3) => _buf[index3] === CHAR_PS
const isLS = (index3) => _buf[index3] === CHAR_LS
const isLineEnd = (index3) =>
isCRLF(index3) || isLF(index3) || isPS(index3) || isLS(index3)
const index2 = () => _index
const line = () => _line
const column = () => _column
const peekOffset = () => _peekOffset
const charAt2 = (offset2) =>
isCRLF(offset2) || isPS(offset2) || isLS(offset2) ? CHAR_LF : _buf[offset2]
const currentChar = () => charAt2(_index)
const currentPeek = () => charAt2(_index + _peekOffset)
function next() {
_peekOffset = 0
if (isLineEnd(_index)) {
_line++
_column = 0
}
if (isCRLF(_index)) {
_index++
}
_index++
_column++
return _buf[_index]
}
function peek() {
if (isCRLF(_index + _peekOffset)) {
_peekOffset++
}
_peekOffset++
return _buf[_index + _peekOffset]
}
function reset2() {
_index = 0
_line = 1
_column = 1
_peekOffset = 0
}
function resetPeek(offset2 = 0) {
_peekOffset = offset2
}
function skipToPeek() {
const target2 = _index + _peekOffset
while (target2 !== _index) {
next()
}
_peekOffset = 0
}
return {
index: index2,
line,
column,
peekOffset,
charAt: charAt2,
currentChar,
currentPeek,
next,
peek,
reset: reset2,
resetPeek,
skipToPeek,
}
}
const EOF = void 0
const DOT = '.'
const LITERAL_DELIMITER = "'"
const ERROR_DOMAIN$3 = 'tokenizer'
function createTokenizer(source2, options2 = {}) {
const location2 = options2.location !== false
const _scnr = createScanner(source2)
const currentOffset = () => _scnr.index()
const currentPosition = () =>
createPosition(_scnr.line(), _scnr.column(), _scnr.index())
const _initLoc = currentPosition()
const _initOffset = currentOffset()
const _context = {
currentType: 14,
offset: _initOffset,
startLoc: _initLoc,
endLoc: _initLoc,
lastType: 14,
lastOffset: _initOffset,
lastStartLoc: _initLoc,
lastEndLoc: _initLoc,
braceNest: 0,
inLinked: false,
text: '',
}
const context2 = () => _context
const { onError } = options2
function emitError(code2, pos, offset2, ...args) {
const ctx = context2()
pos.column += offset2
pos.offset += offset2
if (onError) {
const loc = location2 ? createLocation(ctx.startLoc, pos) : null
const err = createCompileError(code2, loc, {
domain: ERROR_DOMAIN$3,
args,
})
onError(err)
}
}
function getToken(context3, type4, value2) {
context3.endLoc = currentPosition()
context3.currentType = type4
const token = { type: type4 }
if (location2) {
token.loc = createLocation(context3.startLoc, context3.endLoc)
}
if (value2 != null) {
token.value = value2
}
return token
}
const getEndToken = (context3) => getToken(context3, 14)
function eat(scnr, ch) {
if (scnr.currentChar() === ch) {
scnr.next()
return ch
} else {
emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch)
return ''
}
}
function peekSpaces(scnr) {
let buf = ''
while (scnr.currentPeek() === CHAR_SP || scnr.currentPeek() === CHAR_LF) {
buf += scnr.currentPeek()
scnr.peek()
}
return buf
}
function skipSpaces(scnr) {
const buf = peekSpaces(scnr)
scnr.skipToPeek()
return buf
}
function isIdentifierStart2(ch) {
if (ch === EOF) {
return false
}
const cc = ch.charCodeAt(0)
return (cc >= 97 && cc <= 122) || (cc >= 65 && cc <= 90) || cc === 95
}
function isNumberStart2(ch) {
if (ch === EOF) {
return false
}
const cc = ch.charCodeAt(0)
return cc >= 48 && cc <= 57
}
function isNamedIdentifierStart(scnr, context3) {
const { currentType } = context3
if (currentType !== 2) {
return false
}
peekSpaces(scnr)
const ret = isIdentifierStart2(scnr.currentPeek())
scnr.resetPeek()
return ret
}
function isListIdentifierStart(scnr, context3) {
const { currentType } = context3
if (currentType !== 2) {
return false
}
peekSpaces(scnr)
const ch = scnr.currentPeek() === '-' ? scnr.peek() : scnr.currentPeek()
const ret = isNumberStart2(ch)
scnr.resetPeek()
return ret
}
function isLiteralStart(scnr, context3) {
const { currentType } = context3
if (currentType !== 2) {
return false
}
peekSpaces(scnr)
const ret = scnr.currentPeek() === LITERAL_DELIMITER
scnr.resetPeek()
return ret
}
function isLinkedDotStart(scnr, context3) {
const { currentType } = context3
if (currentType !== 8) {
return false
}
peekSpaces(scnr)
const ret = scnr.currentPeek() === '.'
scnr.resetPeek()
return ret
}
function isLinkedModifierStart(scnr, context3) {
const { currentType } = context3
if (currentType !== 9) {
return false
}
peekSpaces(scnr)
const ret = isIdentifierStart2(scnr.currentPeek())
scnr.resetPeek()
return ret
}
function isLinkedDelimiterStart(scnr, context3) {
const { currentType } = context3
if (!(currentType === 8 || currentType === 12)) {
return false
}
peekSpaces(scnr)
const ret = scnr.currentPeek() === ':'
scnr.resetPeek()
return ret
}
function isLinkedReferStart(scnr, context3) {
const { currentType } = context3
if (currentType !== 10) {
return false
}
const fn2 = () => {
const ch = scnr.currentPeek()
if (ch === '{') {
return isIdentifierStart2(scnr.peek())
} else if (
ch === '@' ||
ch === '%' ||
ch === '|' ||
ch === ':' ||
ch === '.' ||
ch === CHAR_SP ||
!ch
) {
return false
} else if (ch === CHAR_LF) {
scnr.peek()
return fn2()
} else {
return isIdentifierStart2(ch)
}
}
const ret = fn2()
scnr.resetPeek()
return ret
}
function isPluralStart(scnr) {
peekSpaces(scnr)
const ret = scnr.currentPeek() === '|'
scnr.resetPeek()
return ret
}
function detectModuloStart(scnr) {
const spaces = peekSpaces(scnr)
const ret = scnr.currentPeek() === '%' && scnr.peek() === '{'
scnr.resetPeek()
return {
isModulo: ret,
hasSpace: spaces.length > 0,
}
}
function isTextStart(scnr, reset2 = true) {
const fn2 = (hasSpace = false, prev = '', detectModulo = false) => {
const ch = scnr.currentPeek()
if (ch === '{') {
return prev === '%' ? false : hasSpace
} else if (ch === '@' || !ch) {
return prev === '%' ? true : hasSpace
} else if (ch === '%') {
scnr.peek()
return fn2(hasSpace, '%', true)
} else if (ch === '|') {
return prev === '%' || detectModulo
? true
: !(prev === CHAR_SP || prev === CHAR_LF)
} else if (ch === CHAR_SP) {
scnr.peek()
return fn2(true, CHAR_SP, detectModulo)
} else if (ch === CHAR_LF) {
scnr.peek()
return fn2(true, CHAR_LF, detectModulo)
} else {
return true
}
}
const ret = fn2()
reset2 && scnr.resetPeek()
return ret
}
function takeChar(scnr, fn2) {
const ch = scnr.currentChar()
if (ch === EOF) {
return EOF
}
if (fn2(ch)) {
scnr.next()
return ch
}
return null
}
function takeIdentifierChar(scnr) {
const closure = (ch) => {
const cc = ch.charCodeAt(0)
return (
(cc >= 97 && cc <= 122) ||
(cc >= 65 && cc <= 90) ||
(cc >= 48 && cc <= 57) ||
cc === 95 ||
cc === 36
)
}
return takeChar(scnr, closure)
}
function takeDigit(scnr) {
const closure = (ch) => {
const cc = ch.charCodeAt(0)
return cc >= 48 && cc <= 57
}
return takeChar(scnr, closure)
}
function takeHexDigit(scnr) {
const closure = (ch) => {
const cc = ch.charCodeAt(0)
return (
(cc >= 48 && cc <= 57) ||
(cc >= 65 && cc <= 70) ||
(cc >= 97 && cc <= 102)
)
}
return takeChar(scnr, closure)
}
function getDigits(scnr) {
let ch = ''
let num2 = ''
while ((ch = takeDigit(scnr))) {
num2 += ch
}
return num2
}
function readModulo(scnr) {
skipSpaces(scnr)
const ch = scnr.currentChar()
if (ch !== '%') {
emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch)
}
scnr.next()
return '%'
}
function readText(scnr) {
let buf = ''
while (true) {
const ch = scnr.currentChar()
if (ch === '{' || ch === '}' || ch === '@' || ch === '|' || !ch) {
break
} else if (ch === '%') {
if (isTextStart(scnr)) {
buf += ch
scnr.next()
} else {
break
}
} else if (ch === CHAR_SP || ch === CHAR_LF) {
if (isTextStart(scnr)) {
buf += ch
scnr.next()
} else if (isPluralStart(scnr)) {
break
} else {
buf += ch
scnr.next()
}
} else {
buf += ch
scnr.next()
}
}
return buf
}
function readNamedIdentifier(scnr) {
skipSpaces(scnr)
let ch = ''
let name2 = ''
while ((ch = takeIdentifierChar(scnr))) {
name2 += ch
}
if (scnr.currentChar() === EOF) {
emitError(
CompileErrorCodes.UNTERMINATED_CLOSING_BRACE,
currentPosition(),
0
)
}
return name2
}
function readListIdentifier(scnr) {
skipSpaces(scnr)
let value2 = ''
if (scnr.currentChar() === '-') {
scnr.next()
value2 += `-${getDigits(scnr)}`
} else {
value2 += getDigits(scnr)
}
if (scnr.currentChar() === EOF) {
emitError(
CompileErrorCodes.UNTERMINATED_CLOSING_BRACE,
currentPosition(),
0
)
}
return value2
}
function readLiteral(scnr) {
skipSpaces(scnr)
eat(scnr, `'`)
let ch = ''
let literal = ''
const fn2 = (x2) => x2 !== LITERAL_DELIMITER && x2 !== CHAR_LF
while ((ch = takeChar(scnr, fn2))) {
if (ch === '\\') {
literal += readEscapeSequence(scnr)
} else {
literal += ch
}
}
const current2 = scnr.currentChar()
if (current2 === CHAR_LF || current2 === EOF) {
emitError(
CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,
currentPosition(),
0
)
if (current2 === CHAR_LF) {
scnr.next()
eat(scnr, `'`)
}
return literal
}
eat(scnr, `'`)
return literal
}
function readEscapeSequence(scnr) {
const ch = scnr.currentChar()
switch (ch) {
case '\\':
case `'`:
scnr.next()
return `\\${ch}`
case 'u':
return readUnicodeEscapeSequence(scnr, ch, 4)
case 'U':
return readUnicodeEscapeSequence(scnr, ch, 6)
default:
emitError(
CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE,
currentPosition(),
0,
ch
)
return ''
}
}
function readUnicodeEscapeSequence(scnr, unicode, digits) {
eat(scnr, unicode)
let sequence = ''
for (let i2 = 0; i2 < digits; i2++) {
const ch = takeHexDigit(scnr)
if (!ch) {
emitError(
CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE,
currentPosition(),
0,
`\\${unicode}${sequence}${scnr.currentChar()}`
)
break
}
sequence += ch
}
return `\\${unicode}${sequence}`
}
function readInvalidIdentifier(scnr) {
skipSpaces(scnr)
let ch = ''
let identifiers = ''
const closure = (ch2) =>
ch2 !== '{' && ch2 !== '}' && ch2 !== CHAR_SP && ch2 !== CHAR_LF
while ((ch = takeChar(scnr, closure))) {
identifiers += ch
}
return identifiers
}
function readLinkedModifier(scnr) {
let ch = ''
let name2 = ''
while ((ch = takeIdentifierChar(scnr))) {
name2 += ch
}
return name2
}
function readLinkedRefer(scnr) {
const fn2 = (detect2 = false, buf) => {
const ch = scnr.currentChar()
if (
ch === '{' ||
ch === '%' ||
ch === '@' ||
ch === '|' ||
ch === '(' ||
ch === ')' ||
!ch
) {
return buf
} else if (ch === CHAR_SP) {
return buf
} else if (ch === CHAR_LF || ch === DOT) {
buf += ch
scnr.next()
return fn2(detect2, buf)
} else {
buf += ch
scnr.next()
return fn2(true, buf)
}
}
return fn2(false, '')
}
function readPlural(scnr) {
skipSpaces(scnr)
const plural = eat(scnr, '|')
skipSpaces(scnr)
return plural
}
function readTokenInPlaceholder(scnr, context3) {
let token = null
const ch = scnr.currentChar()
switch (ch) {
case '{':
if (context3.braceNest >= 1) {
emitError(
CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER,
currentPosition(),
0
)
}
scnr.next()
token = getToken(context3, 2, '{')
skipSpaces(scnr)
context3.braceNest++
return token
case '}':
if (context3.braceNest > 0 && context3.currentType === 2) {
emitError(CompileErrorCodes.EMPTY_PLACEHOLDER, currentPosition(), 0)
}
scnr.next()
token = getToken(context3, 3, '}')
context3.braceNest--
context3.braceNest > 0 && skipSpaces(scnr)
if (context3.inLinked && context3.braceNest === 0) {
context3.inLinked = false
}
return token
case '@':
if (context3.braceNest > 0) {
emitError(
CompileErrorCodes.UNTERMINATED_CLOSING_BRACE,
currentPosition(),
0
)
}
token = readTokenInLinked(scnr, context3) || getEndToken(context3)
context3.braceNest = 0
return token
default:
let validNamedIdentifier = true
let validListIdentifier = true
let validLiteral = true
if (isPluralStart(scnr)) {
if (context3.braceNest > 0) {
emitError(
CompileErrorCodes.UNTERMINATED_CLOSING_BRACE,
currentPosition(),
0
)
}
token = getToken(context3, 1, readPlural(scnr))
context3.braceNest = 0
context3.inLinked = false
return token
}
if (
context3.braceNest > 0 &&
(context3.currentType === 5 ||
context3.currentType === 6 ||
context3.currentType === 7)
) {
emitError(
CompileErrorCodes.UNTERMINATED_CLOSING_BRACE,
currentPosition(),
0
)
context3.braceNest = 0
return readToken(scnr, context3)
}
if ((validNamedIdentifier = isNamedIdentifierStart(scnr, context3))) {
token = getToken(context3, 5, readNamedIdentifier(scnr))
skipSpaces(scnr)
return token
}
if ((validListIdentifier = isListIdentifierStart(scnr, context3))) {
token = getToken(context3, 6, readListIdentifier(scnr))
skipSpaces(scnr)
return token
}
if ((validLiteral = isLiteralStart(scnr, context3))) {
token = getToken(context3, 7, readLiteral(scnr))
skipSpaces(scnr)
return token
}
if (!validNamedIdentifier && !validListIdentifier && !validLiteral) {
token = getToken(context3, 13, readInvalidIdentifier(scnr))
emitError(
CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER,
currentPosition(),
0,
token.value
)
skipSpaces(scnr)
return token
}
break
}
return token
}
function readTokenInLinked(scnr, context3) {
const { currentType } = context3
let token = null
const ch = scnr.currentChar()
if (
(currentType === 8 ||
currentType === 9 ||
currentType === 12 ||
currentType === 10) &&
(ch === CHAR_LF || ch === CHAR_SP)
) {
emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0)
}
switch (ch) {
case '@':
scnr.next()
token = getToken(context3, 8, '@')
context3.inLinked = true
return token
case '.':
skipSpaces(scnr)
scnr.next()
return getToken(context3, 9, '.')
case ':':
skipSpaces(scnr)
scnr.next()
return getToken(context3, 10, ':')
default:
if (isPluralStart(scnr)) {
token = getToken(context3, 1, readPlural(scnr))
context3.braceNest = 0
context3.inLinked = false
return token
}
if (
isLinkedDotStart(scnr, context3) ||
isLinkedDelimiterStart(scnr, context3)
) {
skipSpaces(scnr)
return readTokenInLinked(scnr, context3)
}
if (isLinkedModifierStart(scnr, context3)) {
skipSpaces(scnr)
return getToken(context3, 12, readLinkedModifier(scnr))
}
if (isLinkedReferStart(scnr, context3)) {
skipSpaces(scnr)
if (ch === '{') {
return readTokenInPlaceholder(scnr, context3) || token
} else {
return getToken(context3, 11, readLinkedRefer(scnr))
}
}
if (currentType === 8) {
emitError(
CompileErrorCodes.INVALID_LINKED_FORMAT,
currentPosition(),
0
)
}
context3.braceNest = 0
context3.inLinked = false
return readToken(scnr, context3)
}
}
function readToken(scnr, context3) {
let token = { type: 14 }
if (context3.braceNest > 0) {
return readTokenInPlaceholder(scnr, context3) || getEndToken(context3)
}
if (context3.inLinked) {
return readTokenInLinked(scnr, context3) || getEndToken(context3)
}
const ch = scnr.currentChar()
switch (ch) {
case '{':
return readTokenInPlaceholder(scnr, context3) || getEndToken(context3)
case '}':
emitError(
CompileErrorCodes.UNBALANCED_CLOSING_BRACE,
currentPosition(),
0
)
scnr.next()
return getToken(context3, 3, '}')
case '@':
return readTokenInLinked(scnr, context3) || getEndToken(context3)
default:
if (isPluralStart(scnr)) {
token = getToken(context3, 1, readPlural(scnr))
context3.braceNest = 0
context3.inLinked = false
return token
}
const { isModulo, hasSpace } = detectModuloStart(scnr)
if (isModulo) {
return hasSpace
? getToken(context3, 0, readText(scnr))
: getToken(context3, 4, readModulo(scnr))
}
if (isTextStart(scnr)) {
return getToken(context3, 0, readText(scnr))
}
break
}
return token
}
function nextToken() {
const { currentType, offset: offset2, startLoc, endLoc } = _context
_context.lastType = currentType
_context.lastOffset = offset2
_context.lastStartLoc = startLoc
_context.lastEndLoc = endLoc
_context.offset = currentOffset()
_context.startLoc = currentPosition()
if (_scnr.currentChar() === EOF) {
return getToken(_context, 14)
}
return readToken(_scnr, _context)
}
return {
nextToken,
currentOffset,
currentPosition,
context: context2,
}
}
const ERROR_DOMAIN$2 = 'parser'
const KNOWN_ESCAPES = /(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g
function fromEscapeSequence(match2, codePoint4, codePoint6) {
switch (match2) {
case `\\\\`:
return `\\`
case `\\'`:
return `'`
default: {
const codePoint = parseInt(codePoint4 || codePoint6, 16)
if (codePoint <= 55295 || codePoint >= 57344) {
return String.fromCodePoint(codePoint)
}
return '\uFFFD'
}
}
}
function createParser(options2 = {}) {
const location2 = options2.location !== false
const { onError } = options2
function emitError(tokenzer, code2, start2, offset2, ...args) {
const end2 = tokenzer.currentPosition()
end2.offset += offset2
end2.column += offset2
if (onError) {
const loc = location2 ? createLocation(start2, end2) : null
const err = createCompileError(code2, loc, {
domain: ERROR_DOMAIN$2,
args,
})
onError(err)
}
}
function startNode(type4, offset2, loc) {
const node2 = { type: type4 }
if (location2) {
node2.start = offset2
node2.end = offset2
node2.loc = { start: loc, end: loc }
}
return node2
}
function endNode(node2, offset2, pos, type4) {
if (type4) {
node2.type = type4
}
if (location2) {
node2.end = offset2
if (node2.loc) {
node2.loc.end = pos
}
}
}
function parseText(tokenizer, value2) {
const context2 = tokenizer.context()
const node2 = startNode(3, context2.offset, context2.startLoc)
node2.value = value2
endNode(node2, tokenizer.currentOffset(), tokenizer.currentPosition())
return node2
}
function parseList(tokenizer, index2) {
const context2 = tokenizer.context()
const { lastOffset: offset2, lastStartLoc: loc } = context2
const node2 = startNode(5, offset2, loc)
node2.index = parseInt(index2, 10)
tokenizer.nextToken()
endNode(node2, tokenizer.currentOffset(), tokenizer.currentPosition())
return node2
}
function parseNamed(tokenizer, key2) {
const context2 = tokenizer.context()
const { lastOffset: offset2, lastStartLoc: loc } = context2
const node2 = startNode(4, offset2, loc)
node2.key = key2
tokenizer.nextToken()
endNode(node2, tokenizer.currentOffset(), tokenizer.currentPosition())
return node2
}
function parseLiteral(tokenizer, value2) {
const context2 = tokenizer.context()
const { lastOffset: offset2, lastStartLoc: loc } = context2
const node2 = startNode(9, offset2, loc)
node2.value = value2.replace(KNOWN_ESCAPES, fromEscapeSequence)
tokenizer.nextToken()
endNode(node2, tokenizer.currentOffset(), tokenizer.currentPosition())
return node2
}
function parseLinkedModifier(tokenizer) {
const token = tokenizer.nextToken()
const context2 = tokenizer.context()
const { lastOffset: offset2, lastStartLoc: loc } = context2
const node2 = startNode(8, offset2, loc)
if (token.type !== 12) {
emitError(
tokenizer,
CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER,
context2.lastStartLoc,
0
)
node2.value = ''
endNode(node2, offset2, loc)
return {
nextConsumeToken: token,
node: node2,
}
}
if (token.value == null) {
emitError(
tokenizer,
CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,
context2.lastStartLoc,
0,
getTokenCaption(token)
)
}
node2.value = token.value || ''
endNode(node2, tokenizer.currentOffset(), tokenizer.currentPosition())
return {
node: node2,
}
}
function parseLinkedKey(tokenizer, value2) {
const context2 = tokenizer.context()
const node2 = startNode(7, context2.offset, context2.startLoc)
node2.value = value2
endNode(node2, tokenizer.currentOffset(), tokenizer.currentPosition())
return node2
}
function parseLinked(tokenizer) {
const context2 = tokenizer.context()
const linkedNode = startNode(6, context2.offset, context2.startLoc)
let token = tokenizer.nextToken()
if (token.type === 9) {
const parsed = parseLinkedModifier(tokenizer)
linkedNode.modifier = parsed.node
token = parsed.nextConsumeToken || tokenizer.nextToken()
}
if (token.type !== 10) {
emitError(
tokenizer,
CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,
context2.lastStartLoc,
0,
getTokenCaption(token)
)
}
token = tokenizer.nextToken()
if (token.type === 2) {
token = tokenizer.nextToken()
}
switch (token.type) {
case 11:
if (token.value == null) {
emitError(
tokenizer,
CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,
context2.lastStartLoc,
0,
getTokenCaption(token)
)
}
linkedNode.key = parseLinkedKey(tokenizer, token.value || '')
break
case 5:
if (token.value == null) {
emitError(
tokenizer,
CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,
context2.lastStartLoc,
0,
getTokenCaption(token)
)
}
linkedNode.key = parseNamed(tokenizer, token.value || '')
break
case 6:
if (token.value == null) {
emitError(
tokenizer,
CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,
context2.lastStartLoc,
0,
getTokenCaption(token)
)
}
linkedNode.key = parseList(tokenizer, token.value || '')
break
case 7:
if (token.value == null) {
emitError(
tokenizer,
CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,
context2.lastStartLoc,
0,
getTokenCaption(token)
)
}
linkedNode.key = parseLiteral(tokenizer, token.value || '')
break
default:
emitError(
tokenizer,
CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY,
context2.lastStartLoc,
0
)
const nextContext = tokenizer.context()
const emptyLinkedKeyNode = startNode(
7,
nextContext.offset,
nextContext.startLoc
)
emptyLinkedKeyNode.value = ''
endNode(emptyLinkedKeyNode, nextContext.offset, nextContext.startLoc)
linkedNode.key = emptyLinkedKeyNode
endNode(linkedNode, nextContext.offset, nextContext.startLoc)
return {
nextConsumeToken: token,
node: linkedNode,
}
}
endNode(linkedNode, tokenizer.currentOffset(), tokenizer.currentPosition())
return {
node: linkedNode,
}
}
function parseMessage(tokenizer) {
const context2 = tokenizer.context()
const startOffset =
context2.currentType === 1 ? tokenizer.currentOffset() : context2.offset
const startLoc =
context2.currentType === 1 ? context2.endLoc : context2.startLoc
const node2 = startNode(2, startOffset, startLoc)
node2.items = []
let nextToken = null
do {
const token = nextToken || tokenizer.nextToken()
nextToken = null
switch (token.type) {
case 0:
if (token.value == null) {
emitError(
tokenizer,
CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,
context2.lastStartLoc,
0,
getTokenCaption(token)
)
}
node2.items.push(parseText(tokenizer, token.value || ''))
break
case 6:
if (token.value == null) {
emitError(
tokenizer,
CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,
context2.lastStartLoc,
0,
getTokenCaption(token)
)
}
node2.items.push(parseList(tokenizer, token.value || ''))
break
case 5:
if (token.value == null) {
emitError(
tokenizer,
CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,
context2.lastStartLoc,
0,
getTokenCaption(token)
)
}
node2.items.push(parseNamed(tokenizer, token.value || ''))
break
case 7:
if (token.value == null) {
emitError(
tokenizer,
CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,
context2.lastStartLoc,
0,
getTokenCaption(token)
)
}
node2.items.push(parseLiteral(tokenizer, token.value || ''))
break
case 8:
const parsed = parseLinked(tokenizer)
node2.items.push(parsed.node)
nextToken = parsed.nextConsumeToken || null
break
}
} while (context2.currentType !== 14 && context2.currentType !== 1)
const endOffset =
context2.currentType === 1
? context2.lastOffset
: tokenizer.currentOffset()
const endLoc =
context2.currentType === 1
? context2.lastEndLoc
: tokenizer.currentPosition()
endNode(node2, endOffset, endLoc)
return node2
}
function parsePlural(tokenizer, offset2, loc, msgNode) {
const context2 = tokenizer.context()
let hasEmptyMessage = msgNode.items.length === 0
const node2 = startNode(1, offset2, loc)
node2.cases = []
node2.cases.push(msgNode)
do {
const msg = parseMessage(tokenizer)
if (!hasEmptyMessage) {
hasEmptyMessage = msg.items.length === 0
}
node2.cases.push(msg)
} while (context2.currentType !== 14)
if (hasEmptyMessage) {
emitError(
tokenizer,
CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL,
loc,
0
)
}
endNode(node2, tokenizer.currentOffset(), tokenizer.currentPosition())
return node2
}
function parseResource(tokenizer) {
const context2 = tokenizer.context()
const { offset: offset2, startLoc } = context2
const msgNode = parseMessage(tokenizer)
if (context2.currentType === 14) {
return msgNode
} else {
return parsePlural(tokenizer, offset2, startLoc, msgNode)
}
}
function parse2(source2) {
const tokenizer = createTokenizer(source2, assign({}, options2))
const context2 = tokenizer.context()
const node2 = startNode(0, context2.offset, context2.startLoc)
if (location2 && node2.loc) {
node2.loc.source = source2
}
node2.body = parseResource(tokenizer)
if (options2.onCacheKey) {
node2.cacheKey = options2.onCacheKey(source2)
}
if (context2.currentType !== 14) {
emitError(
tokenizer,
CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,
context2.lastStartLoc,
0,
source2[context2.offset] || ''
)
}
endNode(node2, tokenizer.currentOffset(), tokenizer.currentPosition())
return node2
}
return { parse: parse2 }
}
function getTokenCaption(token) {
if (token.type === 14) {
return 'EOF'
}
const name2 = (token.value || '').replace(/\r?\n/gu, '\\n')
return name2.length > 10 ? name2.slice(0, 9) + '\u2026' : name2
}
function createTransformer(ast, options2 = {}) {
const _context = {
ast,
helpers: /* @__PURE__ */ new Set(),
}
const context2 = () => _context
const helper2 = (name2) => {
_context.helpers.add(name2)
return name2
}
return { context: context2, helper: helper2 }
}
function traverseNodes(nodes, transformer) {
for (let i2 = 0; i2 < nodes.length; i2++) {
traverseNode(nodes[i2], transformer)
}
}
function traverseNode(node2, transformer) {
switch (node2.type) {
case 1:
traverseNodes(node2.cases, transformer)
transformer.helper('plural')
break
case 2:
traverseNodes(node2.items, transformer)
break
case 6:
const linked = node2
traverseNode(linked.key, transformer)
transformer.helper('linked')
transformer.helper('type')
break
case 5:
transformer.helper('interpolate')
transformer.helper('list')
break
case 4:
transformer.helper('interpolate')
transformer.helper('named')
break
}
}
function transform(ast, options2 = {}) {
const transformer = createTransformer(ast)
transformer.helper('normalize')
ast.body && traverseNode(ast.body, transformer)
const context2 = transformer.context()
ast.helpers = Array.from(context2.helpers)
}
function optimize(ast) {
const body = ast.body
if (body.type === 2) {
optimizeMessageNode(body)
} else {
body.cases.forEach((c2) => optimizeMessageNode(c2))
}
return ast
}
function optimizeMessageNode(message2) {
if (message2.items.length === 1) {
const item2 = message2.items[0]
if (item2.type === 3 || item2.type === 9) {
message2.static = item2.value
delete item2.value
}
} else {
const values2 = []
for (let i2 = 0; i2 < message2.items.length; i2++) {
const item2 = message2.items[i2]
if (!(item2.type === 3 || item2.type === 9)) {
break
}
if (item2.value == null) {
break
}
values2.push(item2.value)
}
if (values2.length === message2.items.length) {
message2.static = join(values2)
for (let i2 = 0; i2 < message2.items.length; i2++) {
const item2 = message2.items[i2]
if (item2.type === 3 || item2.type === 9) {
delete item2.value
}
}
}
}
}
const ERROR_DOMAIN$1 = 'minifier'
function minify(node2) {
node2.t = node2.type
switch (node2.type) {
case 0:
const resource = node2
minify(resource.body)
resource.b = resource.body
delete resource.body
break
case 1:
const plural = node2
const cases = plural.cases
for (let i2 = 0; i2 < cases.length; i2++) {
minify(cases[i2])
}
plural.c = cases
delete plural.cases
break
case 2:
const message2 = node2
const items = message2.items
for (let i2 = 0; i2 < items.length; i2++) {
minify(items[i2])
}
message2.i = items
delete message2.items
if (message2.static) {
message2.s = message2.static
delete message2.static
}
break
case 3:
case 9:
case 8:
case 7:
const valueNode = node2
if (valueNode.value) {
valueNode.v = valueNode.value
delete valueNode.value
}
break
case 6:
const linked = node2
minify(linked.key)
linked.k = linked.key
delete linked.key
if (linked.modifier) {
minify(linked.modifier)
linked.m = linked.modifier
delete linked.modifier
}
break
case 5:
const list2 = node2
list2.i = list2.index
delete list2.index
break
case 4:
const named = node2
named.k = named.key
delete named.key
break
default: {
throw createCompileError(
CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE,
null,
{
domain: ERROR_DOMAIN$1,
args: [node2.type],
}
)
}
}
delete node2.type
}
const ERROR_DOMAIN = 'parser'
function createCodeGenerator(ast, options2) {
const {
sourceMap,
filename,
breakLineCode,
needIndent: _needIndent,
} = options2
const location2 = options2.location !== false
const _context = {
filename,
code: '',
column: 1,
line: 1,
offset: 0,
map: void 0,
breakLineCode,
needIndent: _needIndent,
indentLevel: 0,
}
if (location2 && ast.loc) {
_context.source = ast.loc.source
}
const context2 = () => _context
function push2(code2, node2) {
_context.code += code2
}
function _newline(n2, withBreakLine = true) {
const _breakLineCode = withBreakLine ? breakLineCode : ''
push2(_needIndent ? _breakLineCode + ` `.repeat(n2) : _breakLineCode)
}
function indent(withNewLine = true) {
const level = ++_context.indentLevel
withNewLine && _newline(level)
}
function deindent(withNewLine = true) {
const level = --_context.indentLevel
withNewLine && _newline(level)
}
function newline() {
_newline(_context.indentLevel)
}
const helper2 = (key2) => `_${key2}`
const needIndent = () => _context.needIndent
return {
context: context2,
push: push2,
indent,
deindent,
newline,
helper: helper2,
needIndent,
}
}
function generateLinkedNode(generator, node2) {
const { helper: helper2 } = generator
generator.push(`${helper2('linked')}(`)
generateNode(generator, node2.key)
if (node2.modifier) {
generator.push(`, `)
generateNode(generator, node2.modifier)
generator.push(`, _type`)
} else {
generator.push(`, undefined, _type`)
}
generator.push(`)`)
}
function generateMessageNode(generator, node2) {
const { helper: helper2, needIndent } = generator
generator.push(`${helper2('normalize')}([`)
generator.indent(needIndent())
const length2 = node2.items.length
for (let i2 = 0; i2 < length2; i2++) {
generateNode(generator, node2.items[i2])
if (i2 === length2 - 1) {
break
}
generator.push(', ')
}
generator.deindent(needIndent())
generator.push('])')
}
function generatePluralNode(generator, node2) {
const { helper: helper2, needIndent } = generator
if (node2.cases.length > 1) {
generator.push(`${helper2('plural')}([`)
generator.indent(needIndent())
const length2 = node2.cases.length
for (let i2 = 0; i2 < length2; i2++) {
generateNode(generator, node2.cases[i2])
if (i2 === length2 - 1) {
break
}
generator.push(', ')
}
generator.deindent(needIndent())
generator.push(`])`)
}
}
function generateResource(generator, node2) {
if (node2.body) {
generateNode(generator, node2.body)
} else {
generator.push('null')
}
}
function generateNode(generator, node2) {
const { helper: helper2 } = generator
switch (node2.type) {
case 0:
generateResource(generator, node2)
break
case 1:
generatePluralNode(generator, node2)
break
case 2:
generateMessageNode(generator, node2)
break
case 6:
generateLinkedNode(generator, node2)
break
case 8:
generator.push(JSON.stringify(node2.value), node2)
break
case 7:
generator.push(JSON.stringify(node2.value), node2)
break
case 5:
generator.push(
`${helper2('interpolate')}(${helper2('list')}(${node2.index}))`,
node2
)
break
case 4:
generator.push(
`${helper2('interpolate')}(${helper2('named')}(${JSON.stringify(
node2.key
)}))`,
node2
)
break
case 9:
generator.push(JSON.stringify(node2.value), node2)
break
case 3:
generator.push(JSON.stringify(node2.value), node2)
break
default: {
throw createCompileError(
CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE,
null,
{
domain: ERROR_DOMAIN,
args: [node2.type],
}
)
}
}
}
const generate = (ast, options2 = {}) => {
const mode2 = isString(options2.mode) ? options2.mode : 'normal'
const filename = isString(options2.filename)
? options2.filename
: 'message.intl'
const sourceMap = !!options2.sourceMap
const breakLineCode =
options2.breakLineCode != null
? options2.breakLineCode
: mode2 === 'arrow'
? ';'
: '\n'
const needIndent = options2.needIndent
? options2.needIndent
: mode2 !== 'arrow'
const helpers = ast.helpers || []
const generator = createCodeGenerator(ast, {
mode: mode2,
filename,
sourceMap,
breakLineCode,
needIndent,
})
generator.push(mode2 === 'normal' ? `function __msg__ (ctx) {` : `(ctx) => {`)
generator.indent(needIndent)
if (helpers.length > 0) {
generator.push(
`const { ${join(
helpers.map((s2) => `${s2}: _${s2}`),
', '
)} } = ctx`
)
generator.newline()
}
generator.push(`return `)
generateNode(generator, ast)
generator.deindent(needIndent)
generator.push(`}`)
delete ast.helpers
const { code: code2, map: map2 } = generator.context()
return {
ast,
code: code2,
map: map2 ? map2.toJSON() : void 0,
}
}
function baseCompile$1(source2, options2 = {}) {
const assignedOptions = assign({}, options2)
const jit = !!assignedOptions.jit
const enalbeMinify = !!assignedOptions.minify
const enambeOptimize =
assignedOptions.optimize == null ? true : assignedOptions.optimize
const parser2 = createParser(assignedOptions)
const ast = parser2.parse(source2)
if (!jit) {
transform(ast, assignedOptions)
return generate(ast, assignedOptions)
} else {
enambeOptimize && optimize(ast)
enalbeMinify && minify(ast)
return { ast, code: '' }
}
}
/*!
* core-base v9.6.5
* (c) 2023 kazuya kawaguchi
* Released under the MIT License.
*/
function initFeatureFlags$1() {
if (typeof __INTLIFY_PROD_DEVTOOLS__ !== 'boolean') {
getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false
}
if (typeof __INTLIFY_JIT_COMPILATION__ !== 'boolean') {
getGlobalThis().__INTLIFY_JIT_COMPILATION__ = false
}
if (typeof __INTLIFY_DROP_MESSAGE_COMPILER__ !== 'boolean') {
getGlobalThis().__INTLIFY_DROP_MESSAGE_COMPILER__ = false
}
}
const pathStateMachine = []
pathStateMachine[0] = {
['w']: [0],
['i']: [3, 0],
['[']: [4],
['o']: [7],
}
pathStateMachine[1] = {
['w']: [1],
['.']: [2],
['[']: [4],
['o']: [7],
}
pathStateMachine[2] = {
['w']: [2],
['i']: [3, 0],
['0']: [3, 0],
}
pathStateMachine[3] = {
['i']: [3, 0],
['0']: [3, 0],
['w']: [1, 1],
['.']: [2, 1],
['[']: [4, 1],
['o']: [7, 1],
}
pathStateMachine[4] = {
["'"]: [5, 0],
['"']: [6, 0],
['[']: [4, 2],
[']']: [1, 3],
['o']: 8,
['l']: [4, 0],
}
pathStateMachine[5] = {
["'"]: [4, 0],
['o']: 8,
['l']: [5, 0],
}
pathStateMachine[6] = {
['"']: [4, 0],
['o']: 8,
['l']: [6, 0],
}
const literalValueRE = /^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/
function isLiteral(exp) {
return literalValueRE.test(exp)
}
function stripQuotes(str) {
const a2 = str.charCodeAt(0)
const b2 = str.charCodeAt(str.length - 1)
return a2 === b2 && (a2 === 34 || a2 === 39) ? str.slice(1, -1) : str
}
function getPathCharType(ch) {
if (ch === void 0 || ch === null) {
return 'o'
}
const code2 = ch.charCodeAt(0)
switch (code2) {
case 91:
case 93:
case 46:
case 34:
case 39:
return ch
case 95:
case 36:
case 45:
return 'i'
case 9:
case 10:
case 13:
case 160:
case 65279:
case 8232:
case 8233:
return 'w'
}
return 'i'
}
function formatSubPath(path) {
const trimmed = path.trim()
if (path.charAt(0) === '0' && isNaN(parseInt(path))) {
return false
}
return isLiteral(trimmed) ? stripQuotes(trimmed) : '*' + trimmed
}
function parse(path) {
const keys3 = []
let index2 = -1
let mode2 = 0
let subPathDepth = 0
let c2
let key2
let newChar
let type4
let transition
let action
let typeMap
const actions2 = []
actions2[0] = () => {
if (key2 === void 0) {
key2 = newChar
} else {
key2 += newChar
}
}
actions2[1] = () => {
if (key2 !== void 0) {
keys3.push(key2)
key2 = void 0
}
}
actions2[2] = () => {
actions2[0]()
subPathDepth++
}
actions2[3] = () => {
if (subPathDepth > 0) {
subPathDepth--
mode2 = 4
actions2[0]()
} else {
subPathDepth = 0
if (key2 === void 0) {
return false
}
key2 = formatSubPath(key2)
if (key2 === false) {
return false
} else {
actions2[1]()
}
}
}
function maybeUnescapeQuote() {
const nextChar = path[index2 + 1]
if (
(mode2 === 5 && nextChar === "'") ||
(mode2 === 6 && nextChar === '"')
) {
index2++
newChar = '\\' + nextChar
actions2[0]()
return true
}
}
while (mode2 !== null) {
index2++
c2 = path[index2]
if (c2 === '\\' && maybeUnescapeQuote()) {
continue
}
type4 = getPathCharType(c2)
typeMap = pathStateMachine[mode2]
transition = typeMap[type4] || typeMap['l'] || 8
if (transition === 8) {
return
}
mode2 = transition[0]
if (transition[1] !== void 0) {
action = actions2[transition[1]]
if (action) {
newChar = c2
if (action() === false) {
return
}
}
}
if (mode2 === 7) {
return keys3
}
}
}
const cache = /* @__PURE__ */ new Map()
function resolveWithKeyValue(obj, path) {
return isObject$1(obj) ? obj[path] : null
}
function resolveValue(obj, path) {
if (!isObject$1(obj)) {
return null
}
let hit = cache.get(path)
if (!hit) {
hit = parse(path)
if (hit) {
cache.set(path, hit)
}
}
if (!hit) {
return null
}
const len2 = hit.length
let last2 = obj
let i2 = 0
while (i2 < len2) {
const val2 = last2[hit[i2]]
if (val2 === void 0) {
return null
}
if (isFunction(last2)) {
return null
}
last2 = val2
i2++
}
return last2
}
const DEFAULT_MODIFIER = (str) => str
const DEFAULT_MESSAGE = (ctx) => ''
const DEFAULT_MESSAGE_DATA_TYPE = 'text'
const DEFAULT_NORMALIZE = (values2) =>
values2.length === 0 ? '' : join$1(values2)
const DEFAULT_INTERPOLATE = toDisplayString
function pluralDefault(choice, choicesLength) {
choice = Math.abs(choice)
if (choicesLength === 2) {
return choice ? (choice > 1 ? 1 : 0) : 1
}
return choice ? Math.min(choice, 2) : 0
}
function getPluralIndex(options2) {
const index2 = isNumber(options2.pluralIndex) ? options2.pluralIndex : -1
return options2.named &&
(isNumber(options2.named.count) || isNumber(options2.named.n))
? isNumber(options2.named.count)
? options2.named.count
: isNumber(options2.named.n)
? options2.named.n
: index2
: index2
}
function normalizeNamed(pluralIndex, props2) {
if (!props2.count) {
props2.count = pluralIndex
}
if (!props2.n) {
props2.n = pluralIndex
}
}
function createMessageContext(options2 = {}) {
const locale = options2.locale
const pluralIndex = getPluralIndex(options2)
const pluralRule =
isObject$1(options2.pluralRules) &&
isString$1(locale) &&
isFunction(options2.pluralRules[locale])
? options2.pluralRules[locale]
: pluralDefault
const orgPluralRule =
isObject$1(options2.pluralRules) &&
isString$1(locale) &&
isFunction(options2.pluralRules[locale])
? pluralDefault
: void 0
const plural = (messages2) => {
return messages2[pluralRule(pluralIndex, messages2.length, orgPluralRule)]
}
const _list = options2.list || []
const list2 = (index2) => _list[index2]
const _named = options2.named || {}
isNumber(options2.pluralIndex) && normalizeNamed(pluralIndex, _named)
const named = (key2) => _named[key2]
function message2(key2) {
const msg = isFunction(options2.messages)
? options2.messages(key2)
: isObject$1(options2.messages)
? options2.messages[key2]
: false
return !msg
? options2.parent
? options2.parent.message(key2)
: DEFAULT_MESSAGE
: msg
}
const _modifier = (name2) =>
options2.modifiers ? options2.modifiers[name2] : DEFAULT_MODIFIER
const normalize2 =
isPlainObject(options2.processor) &&
isFunction(options2.processor.normalize)
? options2.processor.normalize
: DEFAULT_NORMALIZE
const interpolate =
isPlainObject(options2.processor) &&
isFunction(options2.processor.interpolate)
? options2.processor.interpolate
: DEFAULT_INTERPOLATE
const type4 =
isPlainObject(options2.processor) && isString$1(options2.processor.type)
? options2.processor.type
: DEFAULT_MESSAGE_DATA_TYPE
const linked = (key2, ...args) => {
const [arg1, arg2] = args
let type5 = 'text'
let modifier = ''
if (args.length === 1) {
if (isObject$1(arg1)) {
modifier = arg1.modifier || modifier
type5 = arg1.type || type5
} else if (isString$1(arg1)) {
modifier = arg1 || modifier
}
} else if (args.length === 2) {
if (isString$1(arg1)) {
modifier = arg1 || modifier
}
if (isString$1(arg2)) {
type5 = arg2 || type5
}
}
const ret = message2(key2)(ctx)
const msg = type5 === 'vnode' && isArray(ret) && modifier ? ret[0] : ret
return modifier ? _modifier(modifier)(msg, type5) : msg
}
const ctx = {
['list']: list2,
['named']: named,
['plural']: plural,
['linked']: linked,
['message']: message2,
['type']: type4,
['interpolate']: interpolate,
['normalize']: normalize2,
['values']: assign$1({}, _list, _named),
}
return ctx
}
let devtools = null
function setDevToolsHook(hook) {
devtools = hook
}
function initI18nDevTools(i18n, version2, meta) {
devtools &&
devtools.emit('i18n:init', {
timestamp: Date.now(),
i18n,
version: version2,
meta,
})
}
const translateDevTools =
/* @__PURE__ */ createDevToolsHook('function:translate')
function createDevToolsHook(hook) {
return (payloads) => devtools && devtools.emit(hook, payloads)
}
const CoreWarnCodes = {
NOT_FOUND_KEY: 1,
FALLBACK_TO_TRANSLATE: 2,
CANNOT_FORMAT_NUMBER: 3,
FALLBACK_TO_NUMBER_FORMAT: 4,
CANNOT_FORMAT_DATE: 5,
FALLBACK_TO_DATE_FORMAT: 6,
EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER: 7,
__EXTEND_POINT__: 8,
}
function getLocale(context2, options2) {
return options2.locale != null
? resolveLocale(options2.locale)
: resolveLocale(context2.locale)
}
let _resolveLocale
function resolveLocale(locale) {
return isString$1(locale)
? locale
: _resolveLocale != null && locale.resolvedOnce
? _resolveLocale
: (_resolveLocale = locale())
}
function fallbackWithSimple(ctx, fallback, start2) {
return [
.../* @__PURE__ */ new Set([
start2,
...(isArray(fallback)
? fallback
: isObject$1(fallback)
? Object.keys(fallback)
: isString$1(fallback)
? [fallback]
: [start2]),
]),
]
}
function fallbackWithLocaleChain(ctx, fallback, start2) {
const startLocale = isString$1(start2) ? start2 : DEFAULT_LOCALE
const context2 = ctx
if (!context2.__localeChainCache) {
context2.__localeChainCache = /* @__PURE__ */ new Map()
}
let chain = context2.__localeChainCache.get(startLocale)
if (!chain) {
chain = []
let block = [start2]
while (isArray(block)) {
block = appendBlockToChain(chain, block, fallback)
}
const defaults2 =
isArray(fallback) || !isPlainObject(fallback)
? fallback
: fallback['default']
? fallback['default']
: null
block = isString$1(defaults2) ? [defaults2] : defaults2
if (isArray(block)) {
appendBlockToChain(chain, block, false)
}
context2.__localeChainCache.set(startLocale, chain)
}
return chain
}
function appendBlockToChain(chain, block, blocks2) {
let follow = true
for (let i2 = 0; i2 < block.length && isBoolean(follow); i2++) {
const locale = block[i2]
if (isString$1(locale)) {
follow = appendLocaleToChain(chain, block[i2], blocks2)
}
}
return follow
}
function appendLocaleToChain(chain, locale, blocks2) {
let follow
const tokens = locale.split('-')
do {
const target2 = tokens.join('-')
follow = appendItemToChain(chain, target2, blocks2)
tokens.splice(-1, 1)
} while (tokens.length && follow === true)
return follow
}
function appendItemToChain(chain, target2, blocks2) {
let follow = false
if (!chain.includes(target2)) {
follow = true
if (target2) {
follow = target2[target2.length - 1] !== '!'
const locale = target2.replace(/!/g, '')
chain.push(locale)
if ((isArray(blocks2) || isPlainObject(blocks2)) && blocks2[locale]) {
follow = blocks2[locale]
}
}
}
return follow
}
const VERSION$1 = '9.6.5'
const NOT_REOSLVED = -1
const DEFAULT_LOCALE = 'en-US'
const MISSING_RESOLVE_VALUE = ''
const capitalize = (str) =>
`${str.charAt(0).toLocaleUpperCase()}${str.substr(1)}`
function getDefaultLinkedModifiers() {
return {
upper: (val2, type4) => {
return type4 === 'text' && isString$1(val2)
? val2.toUpperCase()
: type4 === 'vnode' && isObject$1(val2) && '__v_isVNode' in val2
? val2.children.toUpperCase()
: val2
},
lower: (val2, type4) => {
return type4 === 'text' && isString$1(val2)
? val2.toLowerCase()
: type4 === 'vnode' && isObject$1(val2) && '__v_isVNode' in val2
? val2.children.toLowerCase()
: val2
},
capitalize: (val2, type4) => {
return type4 === 'text' && isString$1(val2)
? capitalize(val2)
: type4 === 'vnode' && isObject$1(val2) && '__v_isVNode' in val2
? capitalize(val2.children)
: val2
},
}
}
let _compiler
function registerMessageCompiler(compiler) {
_compiler = compiler
}
let _resolver
function registerMessageResolver(resolver) {
_resolver = resolver
}
let _fallbacker
function registerLocaleFallbacker(fallbacker) {
_fallbacker = fallbacker
}
let _additionalMeta = null
const setAdditionalMeta = (meta) => {
_additionalMeta = meta
}
const getAdditionalMeta = () => _additionalMeta
let _fallbackContext = null
const setFallbackContext = (context2) => {
_fallbackContext = context2
}
const getFallbackContext = () => _fallbackContext
let _cid = 0
function createCoreContext(options2 = {}) {
const onWarn = isFunction(options2.onWarn) ? options2.onWarn : warn
const version2 = isString$1(options2.version) ? options2.version : VERSION$1
const locale =
isString$1(options2.locale) || isFunction(options2.locale)
? options2.locale
: DEFAULT_LOCALE
const _locale = isFunction(locale) ? DEFAULT_LOCALE : locale
const fallbackLocale =
isArray(options2.fallbackLocale) ||
isPlainObject(options2.fallbackLocale) ||
isString$1(options2.fallbackLocale) ||
options2.fallbackLocale === false
? options2.fallbackLocale
: _locale
const messages2 = isPlainObject(options2.messages)
? options2.messages
: { [_locale]: {} }
const datetimeFormats = isPlainObject(options2.datetimeFormats)
? options2.datetimeFormats
: { [_locale]: {} }
const numberFormats = isPlainObject(options2.numberFormats)
? options2.numberFormats
: { [_locale]: {} }
const modifiers = assign$1(
{},
options2.modifiers || {},
getDefaultLinkedModifiers()
)
const pluralRules = options2.pluralRules || {}
const missing = isFunction(options2.missing) ? options2.missing : null
const missingWarn =
isBoolean(options2.missingWarn) || isRegExp(options2.missingWarn)
? options2.missingWarn
: true
const fallbackWarn =
isBoolean(options2.fallbackWarn) || isRegExp(options2.fallbackWarn)
? options2.fallbackWarn
: true
const fallbackFormat = !!options2.fallbackFormat
const unresolving = !!options2.unresolving
const postTranslation = isFunction(options2.postTranslation)
? options2.postTranslation
: null
const processor = isPlainObject(options2.processor)
? options2.processor
: null
const warnHtmlMessage = isBoolean(options2.warnHtmlMessage)
? options2.warnHtmlMessage
: true
const escapeParameter = !!options2.escapeParameter
const messageCompiler = isFunction(options2.messageCompiler)
? options2.messageCompiler
: _compiler
const messageResolver = isFunction(options2.messageResolver)
? options2.messageResolver
: _resolver || resolveWithKeyValue
const localeFallbacker = isFunction(options2.localeFallbacker)
? options2.localeFallbacker
: _fallbacker || fallbackWithSimple
const fallbackContext = isObject$1(options2.fallbackContext)
? options2.fallbackContext
: void 0
const internalOptions = options2
const __datetimeFormatters = isObject$1(internalOptions.__datetimeFormatters)
? internalOptions.__datetimeFormatters
: /* @__PURE__ */ new Map()
const __numberFormatters = isObject$1(internalOptions.__numberFormatters)
? internalOptions.__numberFormatters
: /* @__PURE__ */ new Map()
const __meta = isObject$1(internalOptions.__meta)
? internalOptions.__meta
: {}
_cid++
const context2 = {
version: version2,
cid: _cid,
locale,
fallbackLocale,
messages: messages2,
modifiers,
pluralRules,
missing,
missingWarn,
fallbackWarn,
fallbackFormat,
unresolving,
postTranslation,
processor,
warnHtmlMessage,
escapeParameter,
messageCompiler,
messageResolver,
localeFallbacker,
fallbackContext,
onWarn,
__meta,
}
{
context2.datetimeFormats = datetimeFormats
context2.numberFormats = numberFormats
context2.__datetimeFormatters = __datetimeFormatters
context2.__numberFormatters = __numberFormatters
}
if (__INTLIFY_PROD_DEVTOOLS__) {
initI18nDevTools(context2, version2, __meta)
}
return context2
}
function handleMissing(context2, key2, locale, missingWarn, type4) {
const { missing, onWarn } = context2
if (missing !== null) {
const ret = missing(context2, locale, key2, type4)
return isString$1(ret) ? ret : key2
} else {
return key2
}
}
function updateFallbackLocale(ctx, locale, fallback) {
const context2 = ctx
context2.__localeChainCache = /* @__PURE__ */ new Map()
ctx.localeFallbacker(ctx, fallback, locale)
}
function format(ast) {
const msg = (ctx) => formatParts(ctx, ast)
return msg
}
function formatParts(ctx, ast) {
const body = ast.b || ast.body
if ((body.t || body.type) === 1) {
const plural = body
const cases = plural.c || plural.cases
return ctx.plural(
cases.reduce(
(messages2, c2) => [...messages2, formatMessageParts(ctx, c2)],
[]
)
)
} else {
return formatMessageParts(ctx, body)
}
}
function formatMessageParts(ctx, node2) {
const _static = node2.s || node2.static
if (_static) {
return ctx.type === 'text' ? _static : ctx.normalize([_static])
} else {
const messages2 = (node2.i || node2.items).reduce(
(acm, c2) => [...acm, formatMessagePart(ctx, c2)],
[]
)
return ctx.normalize(messages2)
}
}
function formatMessagePart(ctx, node2) {
const type4 = node2.t || node2.type
switch (type4) {
case 3:
const text2 = node2
return text2.v || text2.value
case 9:
const literal = node2
return literal.v || literal.value
case 4:
const named = node2
return ctx.interpolate(ctx.named(named.k || named.key))
case 5:
const list2 = node2
return ctx.interpolate(ctx.list(list2.i != null ? list2.i : list2.index))
case 6:
const linked = node2
const modifier = linked.m || linked.modifier
return ctx.linked(
formatMessagePart(ctx, linked.k || linked.key),
modifier ? formatMessagePart(ctx, modifier) : void 0,
ctx.type
)
case 7:
const linkedKey = node2
return linkedKey.v || linkedKey.value
case 8:
const linkedModifier = node2
return linkedModifier.v || linkedModifier.value
default:
throw new Error(`unhandled node type on format message part: ${type4}`)
}
}
const code$2 = CompileErrorCodes.__EXTEND_POINT__
const inc$2 = incrementer(code$2)
const CoreErrorCodes = {
INVALID_ARGUMENT: code$2,
INVALID_DATE_ARGUMENT: inc$2(),
INVALID_ISO_DATE_ARGUMENT: inc$2(),
NOT_SUPPORT_NON_STRING_MESSAGE: inc$2(),
__EXTEND_POINT__: inc$2(),
}
function createCoreError(code2) {
return createCompileError(code2, null, void 0)
}
const defaultOnCacheKey = (message2) => message2
let compileCache = /* @__PURE__ */ Object.create(null)
const isMessageAST = (val2) =>
isObject$1(val2) &&
(val2.t === 0 || val2.type === 0) &&
('b' in val2 || 'body' in val2)
function baseCompile(message2, options2 = {}) {
let detectError = false
const onError = options2.onError || defaultOnError
options2.onError = (err) => {
detectError = true
onError(err)
}
return { ...baseCompile$1(message2, options2), detectError }
}
const compileToFunction = (message2, context2) => {
if (!isString$1(message2)) {
throw createCoreError(CoreErrorCodes.NOT_SUPPORT_NON_STRING_MESSAGE)
}
{
isBoolean(context2.warnHtmlMessage) ? context2.warnHtmlMessage : true
const onCacheKey = context2.onCacheKey || defaultOnCacheKey
const cacheKey = onCacheKey(message2)
const cached = compileCache[cacheKey]
if (cached) {
return cached
}
const { code: code2, detectError } = baseCompile(message2, context2)
const msg = new Function(`return ${code2}`)()
return !detectError ? (compileCache[cacheKey] = msg) : msg
}
}
function compile(message2, context2) {
if (
__INTLIFY_JIT_COMPILATION__ &&
!__INTLIFY_DROP_MESSAGE_COMPILER__ &&
isString$1(message2)
) {
isBoolean(context2.warnHtmlMessage) ? context2.warnHtmlMessage : true
const onCacheKey = context2.onCacheKey || defaultOnCacheKey
const cacheKey = onCacheKey(message2)
const cached = compileCache[cacheKey]
if (cached) {
return cached
}
const { ast, detectError } = baseCompile(message2, {
...context2,
location: false,
jit: true,
})
const msg = format(ast)
return !detectError ? (compileCache[cacheKey] = msg) : msg
} else {
const cacheKey = message2.cacheKey
if (cacheKey) {
const cached = compileCache[cacheKey]
if (cached) {
return cached
}
return (compileCache[cacheKey] = format(message2))
} else {
return format(message2)
}
}
}
const NOOP_MESSAGE_FUNCTION = () => ''
const isMessageFunction = (val2) => isFunction(val2)
function translate(context2, ...args) {
const {
fallbackFormat,
postTranslation,
unresolving,
messageCompiler,
fallbackLocale,
messages: messages2,
} = context2
const [key2, options2] = parseTranslateArgs(...args)
const missingWarn = isBoolean(options2.missingWarn)
? options2.missingWarn
: context2.missingWarn
const fallbackWarn = isBoolean(options2.fallbackWarn)
? options2.fallbackWarn
: context2.fallbackWarn
const escapeParameter = isBoolean(options2.escapeParameter)
? options2.escapeParameter
: context2.escapeParameter
const resolvedMessage = !!options2.resolvedMessage
const defaultMsgOrKey =
isString$1(options2.default) || isBoolean(options2.default)
? !isBoolean(options2.default)
? options2.default
: !messageCompiler
? () => key2
: key2
: fallbackFormat
? !messageCompiler
? () => key2
: key2
: ''
const enableDefaultMsg = fallbackFormat || defaultMsgOrKey !== ''
const locale = getLocale(context2, options2)
escapeParameter && escapeParams(options2)
let [formatScope, targetLocale, message2] = !resolvedMessage
? resolveMessageFormat(
context2,
key2,
locale,
fallbackLocale,
fallbackWarn,
missingWarn
)
: [key2, locale, messages2[locale] || {}]
let format2 = formatScope
let cacheBaseKey = key2
if (
!resolvedMessage &&
!(
isString$1(format2) ||
isMessageAST(format2) ||
isMessageFunction(format2)
)
) {
if (enableDefaultMsg) {
format2 = defaultMsgOrKey
cacheBaseKey = format2
}
}
if (
!resolvedMessage &&
(!(
isString$1(format2) ||
isMessageAST(format2) ||
isMessageFunction(format2)
) ||
!isString$1(targetLocale))
) {
return unresolving ? NOT_REOSLVED : key2
}
let occurred = false
const onError = () => {
occurred = true
}
const msg = !isMessageFunction(format2)
? compileMessageFormat(
context2,
key2,
targetLocale,
format2,
cacheBaseKey,
onError
)
: format2
if (occurred) {
return format2
}
const ctxOptions = getMessageContextOptions(
context2,
targetLocale,
message2,
options2
)
const msgContext = createMessageContext(ctxOptions)
const messaged = evaluateMessage(context2, msg, msgContext)
const ret = postTranslation ? postTranslation(messaged, key2) : messaged
if (__INTLIFY_PROD_DEVTOOLS__) {
const payloads = {
timestamp: Date.now(),
key: isString$1(key2)
? key2
: isMessageFunction(format2)
? format2.key
: '',
locale:
targetLocale || (isMessageFunction(format2) ? format2.locale : ''),
format: isString$1(format2)
? format2
: isMessageFunction(format2)
? format2.source
: '',
message: ret,
}
payloads.meta = assign$1({}, context2.__meta, getAdditionalMeta() || {})
translateDevTools(payloads)
}
return ret
}
function escapeParams(options2) {
if (isArray(options2.list)) {
options2.list = options2.list.map((item2) =>
isString$1(item2) ? escapeHtml(item2) : item2
)
} else if (isObject$1(options2.named)) {
Object.keys(options2.named).forEach((key2) => {
if (isString$1(options2.named[key2])) {
options2.named[key2] = escapeHtml(options2.named[key2])
}
})
}
}
function resolveMessageFormat(
context2,
key2,
locale,
fallbackLocale,
fallbackWarn,
missingWarn
) {
const {
messages: messages2,
onWarn,
messageResolver: resolveValue2,
localeFallbacker,
} = context2
const locales2 = localeFallbacker(context2, fallbackLocale, locale)
let message2 = {}
let targetLocale
let format2 = null
const type4 = 'translate'
for (let i2 = 0; i2 < locales2.length; i2++) {
targetLocale = locales2[i2]
message2 = messages2[targetLocale] || {}
if ((format2 = resolveValue2(message2, key2)) === null) {
format2 = message2[key2]
}
if (
isString$1(format2) ||
isMessageAST(format2) ||
isMessageFunction(format2)
) {
break
}
const missingRet = handleMissing(
context2,
key2,
targetLocale,
missingWarn,
type4
)
if (missingRet !== key2) {
format2 = missingRet
}
}
return [format2, targetLocale, message2]
}
function compileMessageFormat(
context2,
key2,
targetLocale,
format2,
cacheBaseKey,
onError
) {
const { messageCompiler, warnHtmlMessage } = context2
if (isMessageFunction(format2)) {
const msg2 = format2
msg2.locale = msg2.locale || targetLocale
msg2.key = msg2.key || key2
return msg2
}
if (messageCompiler == null) {
const msg2 = () => format2
msg2.locale = targetLocale
msg2.key = key2
return msg2
}
const msg = messageCompiler(
format2,
getCompileContext(
context2,
targetLocale,
cacheBaseKey,
format2,
warnHtmlMessage,
onError
)
)
msg.locale = targetLocale
msg.key = key2
msg.source = format2
return msg
}
function evaluateMessage(context2, msg, msgCtx) {
const messaged = msg(msgCtx)
return messaged
}
function parseTranslateArgs(...args) {
const [arg1, arg2, arg3] = args
const options2 = {}
if (
!isString$1(arg1) &&
!isNumber(arg1) &&
!isMessageFunction(arg1) &&
!isMessageAST(arg1)
) {
throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT)
}
const key2 = isNumber(arg1)
? String(arg1)
: isMessageFunction(arg1)
? arg1
: arg1
if (isNumber(arg2)) {
options2.plural = arg2
} else if (isString$1(arg2)) {
options2.default = arg2
} else if (isPlainObject(arg2) && !isEmptyObject(arg2)) {
options2.named = arg2
} else if (isArray(arg2)) {
options2.list = arg2
}
if (isNumber(arg3)) {
options2.plural = arg3
} else if (isString$1(arg3)) {
options2.default = arg3
} else if (isPlainObject(arg3)) {
assign$1(options2, arg3)
}
return [key2, options2]
}
function getCompileContext(
context2,
locale,
key2,
source2,
warnHtmlMessage,
onError
) {
return {
locale,
key: key2,
warnHtmlMessage,
onError: (err) => {
onError && onError(err)
{
throw err
}
},
onCacheKey: (source3) => generateFormatCacheKey(locale, key2, source3),
}
}
function getMessageContextOptions(context2, locale, message2, options2) {
const {
modifiers,
pluralRules,
messageResolver: resolveValue2,
fallbackLocale,
fallbackWarn,
missingWarn,
fallbackContext,
} = context2
const resolveMessage = (key2) => {
let val2 = resolveValue2(message2, key2)
if (val2 == null && fallbackContext) {
const [, , message3] = resolveMessageFormat(
fallbackContext,
key2,
locale,
fallbackLocale,
fallbackWarn,
missingWarn
)
val2 = resolveValue2(message3, key2)
}
if (isString$1(val2) || isMessageAST(val2)) {
let occurred = false
const onError = () => {
occurred = true
}
const msg = compileMessageFormat(
context2,
key2,
locale,
val2,
key2,
onError
)
return !occurred ? msg : NOOP_MESSAGE_FUNCTION
} else if (isMessageFunction(val2)) {
return val2
} else {
return NOOP_MESSAGE_FUNCTION
}
}
const ctxOptions = {
locale,
modifiers,
pluralRules,
messages: resolveMessage,
}
if (context2.processor) {
ctxOptions.processor = context2.processor
}
if (options2.list) {
ctxOptions.list = options2.list
}
if (options2.named) {
ctxOptions.named = options2.named
}
if (isNumber(options2.plural)) {
ctxOptions.pluralIndex = options2.plural
}
return ctxOptions
}
function datetime(context2, ...args) {
const {
datetimeFormats,
unresolving,
fallbackLocale,
onWarn,
localeFallbacker,
} = context2
const { __datetimeFormatters } = context2
const [key2, value2, options2, overrides] = parseDateTimeArgs(...args)
const missingWarn = isBoolean(options2.missingWarn)
? options2.missingWarn
: context2.missingWarn
isBoolean(options2.fallbackWarn)
? options2.fallbackWarn
: context2.fallbackWarn
const part = !!options2.part
const locale = getLocale(context2, options2)
const locales2 = localeFallbacker(context2, fallbackLocale, locale)
if (!isString$1(key2) || key2 === '') {
return new Intl.DateTimeFormat(locale, overrides).format(value2)
}
let datetimeFormat = {}
let targetLocale
let format2 = null
const type4 = 'datetime format'
for (let i2 = 0; i2 < locales2.length; i2++) {
targetLocale = locales2[i2]
datetimeFormat = datetimeFormats[targetLocale] || {}
format2 = datetimeFormat[key2]
if (isPlainObject(format2)) break
handleMissing(context2, key2, targetLocale, missingWarn, type4)
}
if (!isPlainObject(format2) || !isString$1(targetLocale)) {
return unresolving ? NOT_REOSLVED : key2
}
let id2 = `${targetLocale}__${key2}`
if (!isEmptyObject(overrides)) {
id2 = `${id2}__${JSON.stringify(overrides)}`
}
let formatter2 = __datetimeFormatters.get(id2)
if (!formatter2) {
formatter2 = new Intl.DateTimeFormat(
targetLocale,
assign$1({}, format2, overrides)
)
__datetimeFormatters.set(id2, formatter2)
}
return !part ? formatter2.format(value2) : formatter2.formatToParts(value2)
}
const DATETIME_FORMAT_OPTIONS_KEYS = [
'localeMatcher',
'weekday',
'era',
'year',
'month',
'day',
'hour',
'minute',
'second',
'timeZoneName',
'formatMatcher',
'hour12',
'timeZone',
'dateStyle',
'timeStyle',
'calendar',
'dayPeriod',
'numberingSystem',
'hourCycle',
'fractionalSecondDigits',
]
function parseDateTimeArgs(...args) {
const [arg1, arg2, arg3, arg4] = args
const options2 = {}
let overrides = {}
let value2
if (isString$1(arg1)) {
const matches2 = arg1.match(/(\d{4}-\d{2}-\d{2})(T|\s)?(.*)/)
if (!matches2) {
throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT)
}
const dateTime = matches2[3]
? matches2[3].trim().startsWith('T')
? `${matches2[1].trim()}${matches2[3].trim()}`
: `${matches2[1].trim()}T${matches2[3].trim()}`
: matches2[1].trim()
value2 = new Date(dateTime)
try {
value2.toISOString()
} catch (e2) {
throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT)
}
} else if (isDate(arg1)) {
if (isNaN(arg1.getTime())) {
throw createCoreError(CoreErrorCodes.INVALID_DATE_ARGUMENT)
}
value2 = arg1
} else if (isNumber(arg1)) {
value2 = arg1
} else {
throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT)
}
if (isString$1(arg2)) {
options2.key = arg2
} else if (isPlainObject(arg2)) {
Object.keys(arg2).forEach((key2) => {
if (DATETIME_FORMAT_OPTIONS_KEYS.includes(key2)) {
overrides[key2] = arg2[key2]
} else {
options2[key2] = arg2[key2]
}
})
}
if (isString$1(arg3)) {
options2.locale = arg3
} else if (isPlainObject(arg3)) {
overrides = arg3
}
if (isPlainObject(arg4)) {
overrides = arg4
}
return [options2.key || '', value2, options2, overrides]
}
function clearDateTimeFormat(ctx, locale, format2) {
const context2 = ctx
for (const key2 in format2) {
const id2 = `${locale}__${key2}`
if (!context2.__datetimeFormatters.has(id2)) {
continue
}
context2.__datetimeFormatters.delete(id2)
}
}
function number(context2, ...args) {
const {
numberFormats,
unresolving,
fallbackLocale,
onWarn,
localeFallbacker,
} = context2
const { __numberFormatters } = context2
const [key2, value2, options2, overrides] = parseNumberArgs(...args)
const missingWarn = isBoolean(options2.missingWarn)
? options2.missingWarn
: context2.missingWarn
isBoolean(options2.fallbackWarn)
? options2.fallbackWarn
: context2.fallbackWarn
const part = !!options2.part
const locale = getLocale(context2, options2)
const locales2 = localeFallbacker(context2, fallbackLocale, locale)
if (!isString$1(key2) || key2 === '') {
return new Intl.NumberFormat(locale, overrides).format(value2)
}
let numberFormat = {}
let targetLocale
let format2 = null
const type4 = 'number format'
for (let i2 = 0; i2 < locales2.length; i2++) {
targetLocale = locales2[i2]
numberFormat = numberFormats[targetLocale] || {}
format2 = numberFormat[key2]
if (isPlainObject(format2)) break
handleMissing(context2, key2, targetLocale, missingWarn, type4)
}
if (!isPlainObject(format2) || !isString$1(targetLocale)) {
return unresolving ? NOT_REOSLVED : key2
}
let id2 = `${targetLocale}__${key2}`
if (!isEmptyObject(overrides)) {
id2 = `${id2}__${JSON.stringify(overrides)}`
}
let formatter2 = __numberFormatters.get(id2)
if (!formatter2) {
formatter2 = new Intl.NumberFormat(
targetLocale,
assign$1({}, format2, overrides)
)
__numberFormatters.set(id2, formatter2)
}
return !part ? formatter2.format(value2) : formatter2.formatToParts(value2)
}
const NUMBER_FORMAT_OPTIONS_KEYS = [
'localeMatcher',
'style',
'currency',
'currencyDisplay',
'currencySign',
'useGrouping',
'minimumIntegerDigits',
'minimumFractionDigits',
'maximumFractionDigits',
'minimumSignificantDigits',
'maximumSignificantDigits',
'compactDisplay',
'notation',
'signDisplay',
'unit',
'unitDisplay',
'roundingMode',
'roundingPriority',
'roundingIncrement',
'trailingZeroDisplay',
]
function parseNumberArgs(...args) {
const [arg1, arg2, arg3, arg4] = args
const options2 = {}
let overrides = {}
if (!isNumber(arg1)) {
throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT)
}
const value2 = arg1
if (isString$1(arg2)) {
options2.key = arg2
} else if (isPlainObject(arg2)) {
Object.keys(arg2).forEach((key2) => {
if (NUMBER_FORMAT_OPTIONS_KEYS.includes(key2)) {
overrides[key2] = arg2[key2]
} else {
options2[key2] = arg2[key2]
}
})
}
if (isString$1(arg3)) {
options2.locale = arg3
} else if (isPlainObject(arg3)) {
overrides = arg3
}
if (isPlainObject(arg4)) {
overrides = arg4
}
return [options2.key || '', value2, options2, overrides]
}
function clearNumberFormat(ctx, locale, format2) {
const context2 = ctx
for (const key2 in format2) {
const id2 = `${locale}__${key2}`
if (!context2.__numberFormatters.has(id2)) {
continue
}
context2.__numberFormatters.delete(id2)
}
}
{
initFeatureFlags$1()
}
/*!
* vue-i18n v9.6.5
* (c) 2023 kazuya kawaguchi
* Released under the MIT License.
*/
const VERSION = '9.6.5'
function initFeatureFlags() {
if (typeof __VUE_I18N_FULL_INSTALL__ !== 'boolean') {
getGlobalThis().__VUE_I18N_FULL_INSTALL__ = true
}
if (typeof __VUE_I18N_LEGACY_API__ !== 'boolean') {
getGlobalThis().__VUE_I18N_LEGACY_API__ = true
}
if (typeof __INTLIFY_JIT_COMPILATION__ !== 'boolean') {
getGlobalThis().__INTLIFY_JIT_COMPILATION__ = false
}
if (typeof __INTLIFY_DROP_MESSAGE_COMPILER__ !== 'boolean') {
getGlobalThis().__INTLIFY_DROP_MESSAGE_COMPILER__ = false
}
if (typeof __INTLIFY_PROD_DEVTOOLS__ !== 'boolean') {
getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false
}
}
const code$1 = CoreWarnCodes.__EXTEND_POINT__
const inc$1 = incrementer(code$1)
;({
FALLBACK_TO_ROOT: code$1,
NOT_SUPPORTED_PRESERVE: inc$1(),
NOT_SUPPORTED_FORMATTER: inc$1(),
NOT_SUPPORTED_PRESERVE_DIRECTIVE: inc$1(),
NOT_SUPPORTED_GET_CHOICE_INDEX: inc$1(),
COMPONENT_NAME_LEGACY_COMPATIBLE: inc$1(),
NOT_FOUND_PARENT_SCOPE: inc$1(),
IGNORE_OBJ_FLATTEN: inc$1(),
NOTICE_DROP_ALLOW_COMPOSITION: inc$1(),
})
const code = CoreErrorCodes.__EXTEND_POINT__
const inc = incrementer(code)
const I18nErrorCodes = {
UNEXPECTED_RETURN_TYPE: code,
INVALID_ARGUMENT: inc(),
MUST_BE_CALL_SETUP_TOP: inc(),
NOT_INSTALLED: inc(),
NOT_AVAILABLE_IN_LEGACY_MODE: inc(),
REQUIRED_VALUE: inc(),
INVALID_VALUE: inc(),
CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN: inc(),
NOT_INSTALLED_WITH_PROVIDE: inc(),
UNEXPECTED_ERROR: inc(),
NOT_COMPATIBLE_LEGACY_VUE_I18N: inc(),
BRIDGE_SUPPORT_VUE_2_ONLY: inc(),
MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION: inc(),
NOT_AVAILABLE_COMPOSITION_IN_LEGACY: inc(),
__EXTEND_POINT__: inc(),
}
function createI18nError(code2, ...args) {
return createCompileError(code2, null, void 0)
}
const TranslateVNodeSymbol = /* @__PURE__ */ makeSymbol('__translateVNode')
const DatetimePartsSymbol = /* @__PURE__ */ makeSymbol('__datetimeParts')
const NumberPartsSymbol = /* @__PURE__ */ makeSymbol('__numberParts')
const SetPluralRulesSymbol = makeSymbol('__setPluralRules')
makeSymbol('__intlifyMeta')
const InejctWithOptionSymbol = /* @__PURE__ */ makeSymbol('__injectWithOption')
const DisposeSymbol = /* @__PURE__ */ makeSymbol('__dispose')
const __VUE_I18N_BRIDGE__ = '__VUE_I18N_BRIDGE__'
function handleFlatJson(obj) {
if (!isObject$1(obj)) {
return obj
}
for (const key2 in obj) {
if (!hasOwn(obj, key2)) {
continue
}
if (!key2.includes('.')) {
if (isObject$1(obj[key2])) {
handleFlatJson(obj[key2])
}
} else {
const subKeys = key2.split('.')
const lastIndex = subKeys.length - 1
let currentObj = obj
let hasStringValue = false
for (let i2 = 0; i2 < lastIndex; i2++) {
if (!(subKeys[i2] in currentObj)) {
currentObj[subKeys[i2]] = {}
}
if (!isObject$1(currentObj[subKeys[i2]])) {
hasStringValue = true
break
}
currentObj = currentObj[subKeys[i2]]
}
if (!hasStringValue) {
currentObj[subKeys[lastIndex]] = obj[key2]
delete obj[key2]
}
if (isObject$1(currentObj[subKeys[lastIndex]])) {
handleFlatJson(currentObj[subKeys[lastIndex]])
}
}
}
return obj
}
function getLocaleMessages(locale, options2) {
const { messages: messages2, __i18n, messageResolver, flatJson } = options2
const ret = isPlainObject(messages2)
? messages2
: isArray(__i18n)
? {}
: { [locale]: {} }
if (isArray(__i18n)) {
__i18n.forEach((custom) => {
if ('locale' in custom && 'resource' in custom) {
const { locale: locale2, resource } = custom
if (locale2) {
ret[locale2] = ret[locale2] || {}
deepCopy(resource, ret[locale2])
} else {
deepCopy(resource, ret)
}
} else {
isString$1(custom) && deepCopy(JSON.parse(custom), ret)
}
})
}
if (messageResolver == null && flatJson) {
for (const key2 in ret) {
if (hasOwn(ret, key2)) {
handleFlatJson(ret[key2])
}
}
}
return ret
}
const isNotObjectOrIsArray = (val2) => !isObject$1(val2) || isArray(val2)
function deepCopy(src, des) {
if (isNotObjectOrIsArray(src) || isNotObjectOrIsArray(des)) {
throw createI18nError(I18nErrorCodes.INVALID_VALUE)
}
for (const key2 in src) {
if (hasOwn(src, key2)) {
if (isNotObjectOrIsArray(src[key2]) || isNotObjectOrIsArray(des[key2])) {
des[key2] = src[key2]
} else {
deepCopy(src[key2], des[key2])
}
}
}
}
function getComponentOptions(instance) {
return instance.type
}
function adjustI18nResources(gl, options2, componentOptions) {
let messages2 = isObject$1(options2.messages) ? options2.messages : {}
if ('__i18nGlobal' in componentOptions) {
messages2 = getLocaleMessages(gl.locale.value, {
messages: messages2,
__i18n: componentOptions.__i18nGlobal,
})
}
const locales2 = Object.keys(messages2)
if (locales2.length) {
locales2.forEach((locale) => {
gl.mergeLocaleMessage(locale, messages2[locale])
})
}
{
if (isObject$1(options2.datetimeFormats)) {
const locales3 = Object.keys(options2.datetimeFormats)
if (locales3.length) {
locales3.forEach((locale) => {
gl.mergeDateTimeFormat(locale, options2.datetimeFormats[locale])
})
}
}
if (isObject$1(options2.numberFormats)) {
const locales3 = Object.keys(options2.numberFormats)
if (locales3.length) {
locales3.forEach((locale) => {
gl.mergeNumberFormat(locale, options2.numberFormats[locale])
})
}
}
}
}
function createTextNode(key2) {
return createVNode$1(Text, null, key2, 0)
}
const DEVTOOLS_META = '__INTLIFY_META__'
const NOOP_RETURN_ARRAY = () => []
const NOOP_RETURN_FALSE = () => false
let composerID = 0
function defineCoreMissingHandler(missing) {
return (ctx, locale, key2, type4) => {
return missing(locale, key2, getCurrentInstance() || void 0, type4)
}
}
const getMetaInfo = () => {
const instance = getCurrentInstance()
let meta = null
return instance && (meta = getComponentOptions(instance)[DEVTOOLS_META])
? { [DEVTOOLS_META]: meta }
: null
}
function createComposer(options2 = {}, VueI18nLegacy) {
const { __root, __injectWithOption } = options2
const _isGlobal = __root === void 0
const flatJson = options2.flatJson
let _inheritLocale = isBoolean(options2.inheritLocale)
? options2.inheritLocale
: true
const _locale = ref(
__root && _inheritLocale
? __root.locale.value
: isString$1(options2.locale)
? options2.locale
: DEFAULT_LOCALE
)
const _fallbackLocale = ref(
__root && _inheritLocale
? __root.fallbackLocale.value
: isString$1(options2.fallbackLocale) ||
isArray(options2.fallbackLocale) ||
isPlainObject(options2.fallbackLocale) ||
options2.fallbackLocale === false
? options2.fallbackLocale
: _locale.value
)
const _messages = ref(getLocaleMessages(_locale.value, options2))
const _datetimeFormats = ref(
isPlainObject(options2.datetimeFormats)
? options2.datetimeFormats
: { [_locale.value]: {} }
)
const _numberFormats = ref(
isPlainObject(options2.numberFormats)
? options2.numberFormats
: { [_locale.value]: {} }
)
let _missingWarn = __root
? __root.missingWarn
: isBoolean(options2.missingWarn) || isRegExp(options2.missingWarn)
? options2.missingWarn
: true
let _fallbackWarn = __root
? __root.fallbackWarn
: isBoolean(options2.fallbackWarn) || isRegExp(options2.fallbackWarn)
? options2.fallbackWarn
: true
let _fallbackRoot = __root
? __root.fallbackRoot
: isBoolean(options2.fallbackRoot)
? options2.fallbackRoot
: true
let _fallbackFormat = !!options2.fallbackFormat
let _missing = isFunction(options2.missing) ? options2.missing : null
let _runtimeMissing = isFunction(options2.missing)
? defineCoreMissingHandler(options2.missing)
: null
let _postTranslation = isFunction(options2.postTranslation)
? options2.postTranslation
: null
let _warnHtmlMessage = __root
? __root.warnHtmlMessage
: isBoolean(options2.warnHtmlMessage)
? options2.warnHtmlMessage
: true
let _escapeParameter = !!options2.escapeParameter
const _modifiers = __root
? __root.modifiers
: isPlainObject(options2.modifiers)
? options2.modifiers
: {}
let _pluralRules = options2.pluralRules || (__root && __root.pluralRules)
let _context
const getCoreContext = () => {
_isGlobal && setFallbackContext(null)
const ctxOptions = {
version: VERSION,
locale: _locale.value,
fallbackLocale: _fallbackLocale.value,
messages: _messages.value,
modifiers: _modifiers,
pluralRules: _pluralRules,
missing: _runtimeMissing === null ? void 0 : _runtimeMissing,
missingWarn: _missingWarn,
fallbackWarn: _fallbackWarn,
fallbackFormat: _fallbackFormat,
unresolving: true,
postTranslation: _postTranslation === null ? void 0 : _postTranslation,
warnHtmlMessage: _warnHtmlMessage,
escapeParameter: _escapeParameter,
messageResolver: options2.messageResolver,
messageCompiler: options2.messageCompiler,
__meta: { framework: 'vue' },
}
{
ctxOptions.datetimeFormats = _datetimeFormats.value
ctxOptions.numberFormats = _numberFormats.value
ctxOptions.__datetimeFormatters = isPlainObject(_context)
? _context.__datetimeFormatters
: void 0
ctxOptions.__numberFormatters = isPlainObject(_context)
? _context.__numberFormatters
: void 0
}
const ctx = createCoreContext(ctxOptions)
_isGlobal && setFallbackContext(ctx)
return ctx
}
_context = getCoreContext()
updateFallbackLocale(_context, _locale.value, _fallbackLocale.value)
function trackReactivityValues() {
return [
_locale.value,
_fallbackLocale.value,
_messages.value,
_datetimeFormats.value,
_numberFormats.value,
]
}
const locale = computed({
get: () => _locale.value,
set: (val2) => {
_locale.value = val2
_context.locale = _locale.value
},
})
const fallbackLocale = computed({
get: () => _fallbackLocale.value,
set: (val2) => {
_fallbackLocale.value = val2
_context.fallbackLocale = _fallbackLocale.value
updateFallbackLocale(_context, _locale.value, val2)
},
})
const messages2 = computed(() => _messages.value)
const datetimeFormats = /* @__PURE__ */ computed(() => _datetimeFormats.value)
const numberFormats = /* @__PURE__ */ computed(() => _numberFormats.value)
function getPostTranslationHandler() {
return isFunction(_postTranslation) ? _postTranslation : null
}
function setPostTranslationHandler(handler) {
_postTranslation = handler
_context.postTranslation = handler
}
function getMissingHandler() {
return _missing
}
function setMissingHandler(handler) {
if (handler !== null) {
_runtimeMissing = defineCoreMissingHandler(handler)
}
_missing = handler
_context.missing = _runtimeMissing
}
const wrapWithDeps = (
fn2,
argumentParser,
warnType,
fallbackSuccess,
fallbackFail,
successCondition
) => {
trackReactivityValues()
let ret
try {
if (__INTLIFY_PROD_DEVTOOLS__) {
setAdditionalMeta(getMetaInfo())
}
if (!_isGlobal) {
_context.fallbackContext = __root ? getFallbackContext() : void 0
}
ret = fn2(_context)
} finally {
if (__INTLIFY_PROD_DEVTOOLS__) {
setAdditionalMeta(null)
}
if (!_isGlobal) {
_context.fallbackContext = void 0
}
}
if (
(warnType !== 'translate exists' &&
isNumber(ret) &&
ret === NOT_REOSLVED) ||
(warnType === 'translate exists' && !ret)
) {
const [key2, arg2] = argumentParser()
return __root && _fallbackRoot
? fallbackSuccess(__root)
: fallbackFail(key2)
} else if (successCondition(ret)) {
return ret
} else {
throw createI18nError(I18nErrorCodes.UNEXPECTED_RETURN_TYPE)
}
}
function t3(...args) {
return wrapWithDeps(
(context2) => Reflect.apply(translate, null, [context2, ...args]),
() => parseTranslateArgs(...args),
'translate',
(root2) => Reflect.apply(root2.t, root2, [...args]),
(key2) => key2,
(val2) => isString$1(val2)
)
}
function rt2(...args) {
const [arg1, arg2, arg3] = args
if (arg3 && !isObject$1(arg3)) {
throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT)
}
return t3(...[arg1, arg2, assign$1({ resolvedMessage: true }, arg3 || {})])
}
function d3(...args) {
return wrapWithDeps(
(context2) => Reflect.apply(datetime, null, [context2, ...args]),
() => parseDateTimeArgs(...args),
'datetime format',
(root2) => Reflect.apply(root2.d, root2, [...args]),
() => MISSING_RESOLVE_VALUE,
(val2) => isString$1(val2)
)
}
function n2(...args) {
return wrapWithDeps(
(context2) => Reflect.apply(number, null, [context2, ...args]),
() => parseNumberArgs(...args),
'number format',
(root2) => Reflect.apply(root2.n, root2, [...args]),
() => MISSING_RESOLVE_VALUE,
(val2) => isString$1(val2)
)
}
function normalize2(values2) {
return values2.map((val2) =>
isString$1(val2) || isNumber(val2) || isBoolean(val2)
? createTextNode(String(val2))
: val2
)
}
const interpolate = (val2) => val2
const processor = {
normalize: normalize2,
interpolate,
type: 'vnode',
}
function translateVNode(...args) {
return wrapWithDeps(
(context2) => {
let ret
const _context2 = context2
try {
_context2.processor = processor
ret = Reflect.apply(translate, null, [_context2, ...args])
} finally {
_context2.processor = null
}
return ret
},
() => parseTranslateArgs(...args),
'translate',
(root2) => root2[TranslateVNodeSymbol](...args),
(key2) => [createTextNode(key2)],
(val2) => isArray(val2)
)
}
function numberParts(...args) {
return wrapWithDeps(
(context2) => Reflect.apply(number, null, [context2, ...args]),
() => parseNumberArgs(...args),
'number format',
(root2) => root2[NumberPartsSymbol](...args),
NOOP_RETURN_ARRAY,
(val2) => isString$1(val2) || isArray(val2)
)
}
function datetimeParts(...args) {
return wrapWithDeps(
(context2) => Reflect.apply(datetime, null, [context2, ...args]),
() => parseDateTimeArgs(...args),
'datetime format',
(root2) => root2[DatetimePartsSymbol](...args),
NOOP_RETURN_ARRAY,
(val2) => isString$1(val2) || isArray(val2)
)
}
function setPluralRules(rules2) {
_pluralRules = rules2
_context.pluralRules = _pluralRules
}
function te2(key2, locale2) {
return wrapWithDeps(
() => {
if (!key2) {
return false
}
const targetLocale = isString$1(locale2) ? locale2 : _locale.value
const message2 = getLocaleMessage(targetLocale)
const resolved = _context.messageResolver(message2, key2)
return (
isMessageAST(resolved) ||
isMessageFunction(resolved) ||
isString$1(resolved)
)
},
() => [key2],
'translate exists',
(root2) => {
return Reflect.apply(root2.te, root2, [key2, locale2])
},
NOOP_RETURN_FALSE,
(val2) => isBoolean(val2)
)
}
function resolveMessages(key2) {
let messages3 = null
const locales2 = fallbackWithLocaleChain(
_context,
_fallbackLocale.value,
_locale.value
)
for (let i2 = 0; i2 < locales2.length; i2++) {
const targetLocaleMessages = _messages.value[locales2[i2]] || {}
const messageValue = _context.messageResolver(targetLocaleMessages, key2)
if (messageValue != null) {
messages3 = messageValue
break
}
}
return messages3
}
function tm(key2) {
const messages3 = resolveMessages(key2)
return messages3 != null ? messages3 : __root ? __root.tm(key2) || {} : {}
}
function getLocaleMessage(locale2) {
return _messages.value[locale2] || {}
}
function setLocaleMessage(locale2, message2) {
if (flatJson) {
const _message = { [locale2]: message2 }
for (const key2 in _message) {
if (hasOwn(_message, key2)) {
handleFlatJson(_message[key2])
}
}
message2 = _message[locale2]
}
_messages.value[locale2] = message2
_context.messages = _messages.value
}
function mergeLocaleMessage(locale2, message2) {
_messages.value[locale2] = _messages.value[locale2] || {}
const _message = { [locale2]: message2 }
for (const key2 in _message) {
if (hasOwn(_message, key2)) {
handleFlatJson(_message[key2])
}
}
message2 = _message[locale2]
deepCopy(message2, _messages.value[locale2])
_context.messages = _messages.value
}
function getDateTimeFormat(locale2) {
return _datetimeFormats.value[locale2] || {}
}
function setDateTimeFormat(locale2, format2) {
_datetimeFormats.value[locale2] = format2
_context.datetimeFormats = _datetimeFormats.value
clearDateTimeFormat(_context, locale2, format2)
}
function mergeDateTimeFormat(locale2, format2) {
_datetimeFormats.value[locale2] = assign$1(
_datetimeFormats.value[locale2] || {},
format2
)
_context.datetimeFormats = _datetimeFormats.value
clearDateTimeFormat(_context, locale2, format2)
}
function getNumberFormat(locale2) {
return _numberFormats.value[locale2] || {}
}
function setNumberFormat(locale2, format2) {
_numberFormats.value[locale2] = format2
_context.numberFormats = _numberFormats.value
clearNumberFormat(_context, locale2, format2)
}
function mergeNumberFormat(locale2, format2) {
_numberFormats.value[locale2] = assign$1(
_numberFormats.value[locale2] || {},
format2
)
_context.numberFormats = _numberFormats.value
clearNumberFormat(_context, locale2, format2)
}
composerID++
if (__root && inBrowser) {
watch$1(__root.locale, (val2) => {
if (_inheritLocale) {
_locale.value = val2
_context.locale = val2
updateFallbackLocale(_context, _locale.value, _fallbackLocale.value)
}
})
watch$1(__root.fallbackLocale, (val2) => {
if (_inheritLocale) {
_fallbackLocale.value = val2
_context.fallbackLocale = val2
updateFallbackLocale(_context, _locale.value, _fallbackLocale.value)
}
})
}
const composer = {
id: composerID,
locale,
fallbackLocale,
get inheritLocale() {
return _inheritLocale
},
set inheritLocale(val2) {
_inheritLocale = val2
if (val2 && __root) {
_locale.value = __root.locale.value
_fallbackLocale.value = __root.fallbackLocale.value
updateFallbackLocale(_context, _locale.value, _fallbackLocale.value)
}
},
get availableLocales() {
return Object.keys(_messages.value).sort()
},
messages: messages2,
get modifiers() {
return _modifiers
},
get pluralRules() {
return _pluralRules || {}
},
get isGlobal() {
return _isGlobal
},
get missingWarn() {
return _missingWarn
},
set missingWarn(val2) {
_missingWarn = val2
_context.missingWarn = _missingWarn
},
get fallbackWarn() {
return _fallbackWarn
},
set fallbackWarn(val2) {
_fallbackWarn = val2
_context.fallbackWarn = _fallbackWarn
},
get fallbackRoot() {
return _fallbackRoot
},
set fallbackRoot(val2) {
_fallbackRoot = val2
},
get fallbackFormat() {
return _fallbackFormat
},
set fallbackFormat(val2) {
_fallbackFormat = val2
_context.fallbackFormat = _fallbackFormat
},
get warnHtmlMessage() {
return _warnHtmlMessage
},
set warnHtmlMessage(val2) {
_warnHtmlMessage = val2
_context.warnHtmlMessage = val2
},
get escapeParameter() {
return _escapeParameter
},
set escapeParameter(val2) {
_escapeParameter = val2
_context.escapeParameter = val2
},
t: t3,
getLocaleMessage,
setLocaleMessage,
mergeLocaleMessage,
getPostTranslationHandler,
setPostTranslationHandler,
getMissingHandler,
setMissingHandler,
[SetPluralRulesSymbol]: setPluralRules,
}
{
composer.datetimeFormats = datetimeFormats
composer.numberFormats = numberFormats
composer.rt = rt2
composer.te = te2
composer.tm = tm
composer.d = d3
composer.n = n2
composer.getDateTimeFormat = getDateTimeFormat
composer.setDateTimeFormat = setDateTimeFormat
composer.mergeDateTimeFormat = mergeDateTimeFormat
composer.getNumberFormat = getNumberFormat
composer.setNumberFormat = setNumberFormat
composer.mergeNumberFormat = mergeNumberFormat
composer[InejctWithOptionSymbol] = __injectWithOption
composer[TranslateVNodeSymbol] = translateVNode
composer[DatetimePartsSymbol] = datetimeParts
composer[NumberPartsSymbol] = numberParts
}
return composer
}
function convertComposerOptions(options2) {
const locale = isString$1(options2.locale) ? options2.locale : DEFAULT_LOCALE
const fallbackLocale =
isString$1(options2.fallbackLocale) ||
isArray(options2.fallbackLocale) ||
isPlainObject(options2.fallbackLocale) ||
options2.fallbackLocale === false
? options2.fallbackLocale
: locale
const missing = isFunction(options2.missing) ? options2.missing : void 0
const missingWarn =
isBoolean(options2.silentTranslationWarn) ||
isRegExp(options2.silentTranslationWarn)
? !options2.silentTranslationWarn
: true
const fallbackWarn =
isBoolean(options2.silentFallbackWarn) ||
isRegExp(options2.silentFallbackWarn)
? !options2.silentFallbackWarn
: true
const fallbackRoot = isBoolean(options2.fallbackRoot)
? options2.fallbackRoot
: true
const fallbackFormat = !!options2.formatFallbackMessages
const modifiers = isPlainObject(options2.modifiers) ? options2.modifiers : {}
const pluralizationRules = options2.pluralizationRules
const postTranslation = isFunction(options2.postTranslation)
? options2.postTranslation
: void 0
const warnHtmlMessage = isString$1(options2.warnHtmlInMessage)
? options2.warnHtmlInMessage !== 'off'
: true
const escapeParameter = !!options2.escapeParameterHtml
const inheritLocale = isBoolean(options2.sync) ? options2.sync : true
let messages2 = options2.messages
if (isPlainObject(options2.sharedMessages)) {
const sharedMessages = options2.sharedMessages
const locales2 = Object.keys(sharedMessages)
messages2 = locales2.reduce((messages3, locale2) => {
const message2 = messages3[locale2] || (messages3[locale2] = {})
assign$1(message2, sharedMessages[locale2])
return messages3
}, messages2 || {})
}
const { __i18n, __root, __injectWithOption } = options2
const datetimeFormats = options2.datetimeFormats
const numberFormats = options2.numberFormats
const flatJson = options2.flatJson
return {
locale,
fallbackLocale,
messages: messages2,
flatJson,
datetimeFormats,
numberFormats,
missing,
missingWarn,
fallbackWarn,
fallbackRoot,
fallbackFormat,
modifiers,
pluralRules: pluralizationRules,
postTranslation,
warnHtmlMessage,
escapeParameter,
messageResolver: options2.messageResolver,
inheritLocale,
__i18n,
__root,
__injectWithOption,
}
}
function createVueI18n(options2 = {}, VueI18nLegacy) {
{
const composer = createComposer(convertComposerOptions(options2))
const { __extender } = options2
const vueI18n2 = {
id: composer.id,
get locale() {
return composer.locale.value
},
set locale(val2) {
composer.locale.value = val2
},
get fallbackLocale() {
return composer.fallbackLocale.value
},
set fallbackLocale(val2) {
composer.fallbackLocale.value = val2
},
get messages() {
return composer.messages.value
},
get datetimeFormats() {
return composer.datetimeFormats.value
},
get numberFormats() {
return composer.numberFormats.value
},
get availableLocales() {
return composer.availableLocales
},
get formatter() {
return {
interpolate() {
return []
},
}
},
set formatter(val2) {},
get missing() {
return composer.getMissingHandler()
},
set missing(handler) {
composer.setMissingHandler(handler)
},
get silentTranslationWarn() {
return isBoolean(composer.missingWarn)
? !composer.missingWarn
: composer.missingWarn
},
set silentTranslationWarn(val2) {
composer.missingWarn = isBoolean(val2) ? !val2 : val2
},
get silentFallbackWarn() {
return isBoolean(composer.fallbackWarn)
? !composer.fallbackWarn
: composer.fallbackWarn
},
set silentFallbackWarn(val2) {
composer.fallbackWarn = isBoolean(val2) ? !val2 : val2
},
get modifiers() {
return composer.modifiers
},
get formatFallbackMessages() {
return composer.fallbackFormat
},
set formatFallbackMessages(val2) {
composer.fallbackFormat = val2
},
get postTranslation() {
return composer.getPostTranslationHandler()
},
set postTranslation(handler) {
composer.setPostTranslationHandler(handler)
},
get sync() {
return composer.inheritLocale
},
set sync(val2) {
composer.inheritLocale = val2
},
get warnHtmlInMessage() {
return composer.warnHtmlMessage ? 'warn' : 'off'
},
set warnHtmlInMessage(val2) {
composer.warnHtmlMessage = val2 !== 'off'
},
get escapeParameterHtml() {
return composer.escapeParameter
},
set escapeParameterHtml(val2) {
composer.escapeParameter = val2
},
get preserveDirectiveContent() {
return true
},
set preserveDirectiveContent(val2) {},
get pluralizationRules() {
return composer.pluralRules || {}
},
__composer: composer,
t(...args) {
const [arg1, arg2, arg3] = args
const options3 = {}
let list2 = null
let named = null
if (!isString$1(arg1)) {
throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT)
}
const key2 = arg1
if (isString$1(arg2)) {
options3.locale = arg2
} else if (isArray(arg2)) {
list2 = arg2
} else if (isPlainObject(arg2)) {
named = arg2
}
if (isArray(arg3)) {
list2 = arg3
} else if (isPlainObject(arg3)) {
named = arg3
}
return Reflect.apply(composer.t, composer, [
key2,
list2 || named || {},
options3,
])
},
rt(...args) {
return Reflect.apply(composer.rt, composer, [...args])
},
tc(...args) {
const [arg1, arg2, arg3] = args
const options3 = { plural: 1 }
let list2 = null
let named = null
if (!isString$1(arg1)) {
throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT)
}
const key2 = arg1
if (isString$1(arg2)) {
options3.locale = arg2
} else if (isNumber(arg2)) {
options3.plural = arg2
} else if (isArray(arg2)) {
list2 = arg2
} else if (isPlainObject(arg2)) {
named = arg2
}
if (isString$1(arg3)) {
options3.locale = arg3
} else if (isArray(arg3)) {
list2 = arg3
} else if (isPlainObject(arg3)) {
named = arg3
}
return Reflect.apply(composer.t, composer, [
key2,
list2 || named || {},
options3,
])
},
te(key2, locale) {
return composer.te(key2, locale)
},
tm(key2) {
return composer.tm(key2)
},
getLocaleMessage(locale) {
return composer.getLocaleMessage(locale)
},
setLocaleMessage(locale, message2) {
composer.setLocaleMessage(locale, message2)
},
mergeLocaleMessage(locale, message2) {
composer.mergeLocaleMessage(locale, message2)
},
d(...args) {
return Reflect.apply(composer.d, composer, [...args])
},
getDateTimeFormat(locale) {
return composer.getDateTimeFormat(locale)
},
setDateTimeFormat(locale, format2) {
composer.setDateTimeFormat(locale, format2)
},
mergeDateTimeFormat(locale, format2) {
composer.mergeDateTimeFormat(locale, format2)
},
n(...args) {
return Reflect.apply(composer.n, composer, [...args])
},
getNumberFormat(locale) {
return composer.getNumberFormat(locale)
},
setNumberFormat(locale, format2) {
composer.setNumberFormat(locale, format2)
},
mergeNumberFormat(locale, format2) {
composer.mergeNumberFormat(locale, format2)
},
getChoiceIndex(choice, choicesLength) {
return -1
},
}
vueI18n2.__extender = __extender
return vueI18n2
}
}
const baseFormatProps = {
tag: {
type: [String, Object],
},
locale: {
type: String,
},
scope: {
type: String,
validator: (val2) => val2 === 'parent' || val2 === 'global',
default: 'parent',
},
i18n: {
type: Object,
},
}
function getInterpolateArg({ slots }, keys3) {
if (keys3.length === 1 && keys3[0] === 'default') {
const ret = slots.default ? slots.default() : []
return ret.reduce((slot, current2) => {
return [
...slot,
...(current2.type === Fragment ? current2.children : [current2]),
]
}, [])
} else {
return keys3.reduce((arg, key2) => {
const slot = slots[key2]
if (slot) {
arg[key2] = slot()
}
return arg
}, {})
}
}
function getFragmentableTag(tag) {
return Fragment
}
const TranslationImpl = /* @__PURE__ */ defineComponent({
name: 'i18n-t',
props: assign$1(
{
keypath: {
type: String,
required: true,
},
plural: {
type: [Number, String],
validator: (val2) => isNumber(val2) || !isNaN(val2),
},
},
baseFormatProps
),
setup(props2, context2) {
const { slots, attrs } = context2
const i18n =
props2.i18n ||
useI18n({
useScope: props2.scope,
__useComponent: true,
})
return () => {
const keys3 = Object.keys(slots).filter((key2) => key2 !== '_')
const options2 = {}
if (props2.locale) {
options2.locale = props2.locale
}
if (props2.plural !== void 0) {
options2.plural = isString$1(props2.plural)
? +props2.plural
: props2.plural
}
const arg = getInterpolateArg(context2, keys3)
const children = i18n[TranslateVNodeSymbol](props2.keypath, arg, options2)
const assignedAttrs = assign$1({}, attrs)
const tag =
isString$1(props2.tag) || isObject$1(props2.tag)
? props2.tag
: getFragmentableTag()
return h$4(tag, assignedAttrs, children)
}
},
})
const Translation = TranslationImpl
const I18nT = Translation
function isVNode(target2) {
return isArray(target2) && !isString$1(target2[0])
}
function renderFormatter(props2, context2, slotKeys, partFormatter) {
const { slots, attrs } = context2
return () => {
const options2 = { part: true }
let overrides = {}
if (props2.locale) {
options2.locale = props2.locale
}
if (isString$1(props2.format)) {
options2.key = props2.format
} else if (isObject$1(props2.format)) {
if (isString$1(props2.format.key)) {
options2.key = props2.format.key
}
overrides = Object.keys(props2.format).reduce((options3, prop) => {
return slotKeys.includes(prop)
? assign$1({}, options3, { [prop]: props2.format[prop] })
: options3
}, {})
}
const parts = partFormatter(...[props2.value, options2, overrides])
let children = [options2.key]
if (isArray(parts)) {
children = parts.map((part, index2) => {
const slot = slots[part.type]
const node2 = slot
? slot({ [part.type]: part.value, index: index2, parts })
: [part.value]
if (isVNode(node2)) {
node2[0].key = `${part.type}-${index2}`
}
return node2
})
} else if (isString$1(parts)) {
children = [parts]
}
const assignedAttrs = assign$1({}, attrs)
const tag =
isString$1(props2.tag) || isObject$1(props2.tag)
? props2.tag
: getFragmentableTag()
return h$4(tag, assignedAttrs, children)
}
}
const NumberFormatImpl = /* @__PURE__ */ defineComponent({
name: 'i18n-n',
props: assign$1(
{
value: {
type: Number,
required: true,
},
format: {
type: [String, Object],
},
},
baseFormatProps
),
setup(props2, context2) {
const i18n =
props2.i18n ||
useI18n({
useScope: 'parent',
__useComponent: true,
})
return renderFormatter(
props2,
context2,
NUMBER_FORMAT_OPTIONS_KEYS,
(...args) => i18n[NumberPartsSymbol](...args)
)
},
})
const NumberFormat = NumberFormatImpl
const I18nN = NumberFormat
const DatetimeFormatImpl = /* @__PURE__ */ defineComponent({
name: 'i18n-d',
props: assign$1(
{
value: {
type: [Number, Date],
required: true,
},
format: {
type: [String, Object],
},
},
baseFormatProps
),
setup(props2, context2) {
const i18n =
props2.i18n ||
useI18n({
useScope: 'parent',
__useComponent: true,
})
return renderFormatter(
props2,
context2,
DATETIME_FORMAT_OPTIONS_KEYS,
(...args) => i18n[DatetimePartsSymbol](...args)
)
},
})
const DatetimeFormat = DatetimeFormatImpl
const I18nD = DatetimeFormat
function getComposer$2(i18n, instance) {
const i18nInternal = i18n
if (i18n.mode === 'composition') {
return i18nInternal.__getInstance(instance) || i18n.global
} else {
const vueI18n2 = i18nInternal.__getInstance(instance)
return vueI18n2 != null ? vueI18n2.__composer : i18n.global.__composer
}
}
function vTDirective(i18n) {
const _process = (binding) => {
const { instance, modifiers, value: value2 } = binding
if (!instance || !instance.$) {
throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR)
}
const composer = getComposer$2(i18n, instance.$)
const parsedValue = parseValue(value2)
return [
Reflect.apply(composer.t, composer, [...makeParams(parsedValue)]),
composer,
]
}
const register4 = (el2, binding) => {
const [textContent, composer] = _process(binding)
if (inBrowser && i18n.global === composer) {
el2.__i18nWatcher = watch$1(composer.locale, () => {
binding.instance && binding.instance.$forceUpdate()
})
}
el2.__composer = composer
el2.textContent = textContent
}
const unregister3 = (el2) => {
if (inBrowser && el2.__i18nWatcher) {
el2.__i18nWatcher()
el2.__i18nWatcher = void 0
delete el2.__i18nWatcher
}
if (el2.__composer) {
el2.__composer = void 0
delete el2.__composer
}
}
const update3 = (el2, { value: value2 }) => {
if (el2.__composer) {
const composer = el2.__composer
const parsedValue = parseValue(value2)
el2.textContent = Reflect.apply(composer.t, composer, [
...makeParams(parsedValue),
])
}
}
const getSSRProps = (binding) => {
const [textContent] = _process(binding)
return { textContent }
}
return {
created: register4,
unmounted: unregister3,
beforeUpdate: update3,
getSSRProps,
}
}
function parseValue(value2) {
if (isString$1(value2)) {
return { path: value2 }
} else if (isPlainObject(value2)) {
if (!('path' in value2)) {
throw createI18nError(I18nErrorCodes.REQUIRED_VALUE, 'path')
}
return value2
} else {
throw createI18nError(I18nErrorCodes.INVALID_VALUE)
}
}
function makeParams(value2) {
const { path, locale, args, choice, plural } = value2
const options2 = {}
const named = args || {}
if (isString$1(locale)) {
options2.locale = locale
}
if (isNumber(choice)) {
options2.plural = choice
}
if (isNumber(plural)) {
options2.plural = plural
}
return [path, named, options2]
}
function apply(app2, i18n, ...options2) {
const pluginOptions = isPlainObject(options2[0]) ? options2[0] : {}
const useI18nComponentName = !!pluginOptions.useI18nComponentName
const globalInstall = isBoolean(pluginOptions.globalInstall)
? pluginOptions.globalInstall
: true
if (globalInstall) {
;[!useI18nComponentName ? Translation.name : 'i18n', 'I18nT'].forEach(
(name2) => app2.component(name2, Translation)
)
;[NumberFormat.name, 'I18nN'].forEach((name2) =>
app2.component(name2, NumberFormat)
)
;[DatetimeFormat.name, 'I18nD'].forEach((name2) =>
app2.component(name2, DatetimeFormat)
)
}
{
app2.directive('t', vTDirective(i18n))
}
}
function defineMixin(vuei18n, composer, i18n) {
return {
beforeCreate() {
const instance = getCurrentInstance()
if (!instance) {
throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR)
}
const options2 = this.$options
if (options2.i18n) {
const optionsI18n = options2.i18n
if (options2.__i18n) {
optionsI18n.__i18n = options2.__i18n
}
optionsI18n.__root = composer
if (this === this.$root) {
this.$i18n = mergeToGlobal(vuei18n, optionsI18n)
} else {
optionsI18n.__injectWithOption = true
optionsI18n.__extender = i18n.__vueI18nExtend
this.$i18n = createVueI18n(optionsI18n)
const _vueI18n = this.$i18n
if (_vueI18n.__extender) {
_vueI18n.__disposer = _vueI18n.__extender(this.$i18n)
}
}
} else if (options2.__i18n) {
if (this === this.$root) {
this.$i18n = mergeToGlobal(vuei18n, options2)
} else {
this.$i18n = createVueI18n({
__i18n: options2.__i18n,
__injectWithOption: true,
__extender: i18n.__vueI18nExtend,
__root: composer,
})
const _vueI18n = this.$i18n
if (_vueI18n.__extender) {
_vueI18n.__disposer = _vueI18n.__extender(this.$i18n)
}
}
} else {
this.$i18n = vuei18n
}
if (options2.__i18nGlobal) {
adjustI18nResources(composer, options2, options2)
}
this.$t = (...args) => this.$i18n.t(...args)
this.$rt = (...args) => this.$i18n.rt(...args)
this.$tc = (...args) => this.$i18n.tc(...args)
this.$te = (key2, locale) => this.$i18n.te(key2, locale)
this.$d = (...args) => this.$i18n.d(...args)
this.$n = (...args) => this.$i18n.n(...args)
this.$tm = (key2) => this.$i18n.tm(key2)
i18n.__setInstance(instance, this.$i18n)
},
mounted() {},
unmounted() {
const instance = getCurrentInstance()
if (!instance) {
throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR)
}
const _vueI18n = this.$i18n
delete this.$t
delete this.$rt
delete this.$tc
delete this.$te
delete this.$d
delete this.$n
delete this.$tm
if (_vueI18n.__disposer) {
_vueI18n.__disposer()
delete _vueI18n.__disposer
delete _vueI18n.__extender
}
i18n.__deleteInstance(instance)
delete this.$i18n
},
}
}
function mergeToGlobal(g2, options2) {
g2.locale = options2.locale || g2.locale
g2.fallbackLocale = options2.fallbackLocale || g2.fallbackLocale
g2.missing = options2.missing || g2.missing
g2.silentTranslationWarn =
options2.silentTranslationWarn || g2.silentFallbackWarn
g2.silentFallbackWarn = options2.silentFallbackWarn || g2.silentFallbackWarn
g2.formatFallbackMessages =
options2.formatFallbackMessages || g2.formatFallbackMessages
g2.postTranslation = options2.postTranslation || g2.postTranslation
g2.warnHtmlInMessage = options2.warnHtmlInMessage || g2.warnHtmlInMessage
g2.escapeParameterHtml =
options2.escapeParameterHtml || g2.escapeParameterHtml
g2.sync = options2.sync || g2.sync
g2.__composer[SetPluralRulesSymbol](
options2.pluralizationRules || g2.pluralizationRules
)
const messages2 = getLocaleMessages(g2.locale, {
messages: options2.messages,
__i18n: options2.__i18n,
})
Object.keys(messages2).forEach((locale) =>
g2.mergeLocaleMessage(locale, messages2[locale])
)
if (options2.datetimeFormats) {
Object.keys(options2.datetimeFormats).forEach((locale) =>
g2.mergeDateTimeFormat(locale, options2.datetimeFormats[locale])
)
}
if (options2.numberFormats) {
Object.keys(options2.numberFormats).forEach((locale) =>
g2.mergeNumberFormat(locale, options2.numberFormats[locale])
)
}
return g2
}
const I18nInjectionKey = /* @__PURE__ */ makeSymbol('global-vue-i18n')
function createI18n(options2 = {}, VueI18nLegacy) {
const __legacyMode =
__VUE_I18N_LEGACY_API__ && isBoolean(options2.legacy)
? options2.legacy
: __VUE_I18N_LEGACY_API__
const __globalInjection = isBoolean(options2.globalInjection)
? options2.globalInjection
: true
const __allowComposition =
__VUE_I18N_LEGACY_API__ && __legacyMode ? !!options2.allowComposition : true
const __instances = /* @__PURE__ */ new Map()
const [globalScope, __global] = createGlobal(options2, __legacyMode)
const symbol = /* @__PURE__ */ makeSymbol('')
function __getInstance(component2) {
return __instances.get(component2) || null
}
function __setInstance(component2, instance) {
__instances.set(component2, instance)
}
function __deleteInstance(component2) {
__instances.delete(component2)
}
{
const i18n = {
get mode() {
return __VUE_I18N_LEGACY_API__ && __legacyMode
? 'legacy'
: 'composition'
},
get allowComposition() {
return __allowComposition
},
async install(app2, ...options3) {
app2.__VUE_I18N_SYMBOL__ = symbol
app2.provide(app2.__VUE_I18N_SYMBOL__, i18n)
if (isPlainObject(options3[0])) {
const opts = options3[0]
i18n.__composerExtend = opts.__composerExtend
i18n.__vueI18nExtend = opts.__vueI18nExtend
}
let globalReleaseHandler = null
if (!__legacyMode && __globalInjection) {
globalReleaseHandler = injectGlobalFields(app2, i18n.global)
}
if (__VUE_I18N_FULL_INSTALL__) {
apply(app2, i18n, ...options3)
}
if (__VUE_I18N_LEGACY_API__ && __legacyMode) {
app2.mixin(defineMixin(__global, __global.__composer, i18n))
}
const unmountApp = app2.unmount
app2.unmount = () => {
globalReleaseHandler && globalReleaseHandler()
i18n.dispose()
unmountApp()
}
},
get global() {
return __global
},
dispose() {
globalScope.stop()
},
__instances,
__getInstance,
__setInstance,
__deleteInstance,
}
return i18n
}
}
function useI18n(options2 = {}) {
const instance = getCurrentInstance()
if (instance == null) {
throw createI18nError(I18nErrorCodes.MUST_BE_CALL_SETUP_TOP)
}
if (
!instance.isCE &&
instance.appContext.app != null &&
!instance.appContext.app.__VUE_I18N_SYMBOL__
) {
throw createI18nError(I18nErrorCodes.NOT_INSTALLED)
}
const i18n = getI18nInstance(instance)
const gl = getGlobalComposer(i18n)
const componentOptions = getComponentOptions(instance)
const scope = getScope(options2, componentOptions)
if (__VUE_I18N_LEGACY_API__) {
if (i18n.mode === 'legacy' && !options2.__useComponent) {
if (!i18n.allowComposition) {
throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE)
}
return useI18nForLegacy(instance, scope, gl, options2)
}
}
if (scope === 'global') {
adjustI18nResources(gl, options2, componentOptions)
return gl
}
if (scope === 'parent') {
let composer2 = getComposer(i18n, instance, options2.__useComponent)
if (composer2 == null) {
composer2 = gl
}
return composer2
}
const i18nInternal = i18n
let composer = i18nInternal.__getInstance(instance)
if (composer == null) {
const composerOptions = assign$1({}, options2)
if ('__i18n' in componentOptions) {
composerOptions.__i18n = componentOptions.__i18n
}
if (gl) {
composerOptions.__root = gl
}
composer = createComposer(composerOptions)
if (i18nInternal.__composerExtend) {
composer[DisposeSymbol] = i18nInternal.__composerExtend(composer)
}
setupLifeCycle(i18nInternal, instance, composer)
i18nInternal.__setInstance(instance, composer)
}
return composer
}
const castToVueI18n = (i18n) => {
if (!(__VUE_I18N_BRIDGE__ in i18n)) {
throw createI18nError(I18nErrorCodes.NOT_COMPATIBLE_LEGACY_VUE_I18N)
}
return i18n
}
function createGlobal(options2, legacyMode, VueI18nLegacy) {
const scope = effectScope()
{
const obj =
__VUE_I18N_LEGACY_API__ && legacyMode
? scope.run(() => createVueI18n(options2))
: scope.run(() => createComposer(options2))
if (obj == null) {
throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR)
}
return [scope, obj]
}
}
function getI18nInstance(instance) {
{
const i18n = inject(
!instance.isCE
? instance.appContext.app.__VUE_I18N_SYMBOL__
: I18nInjectionKey
)
if (!i18n) {
throw createI18nError(
!instance.isCE
? I18nErrorCodes.UNEXPECTED_ERROR
: I18nErrorCodes.NOT_INSTALLED_WITH_PROVIDE
)
}
return i18n
}
}
function getScope(options2, componentOptions) {
return isEmptyObject(options2)
? '__i18n' in componentOptions
? 'local'
: 'global'
: !options2.useScope
? 'local'
: options2.useScope
}
function getGlobalComposer(i18n) {
return i18n.mode === 'composition' ? i18n.global : i18n.global.__composer
}
function getComposer(i18n, target2, useComponent = false) {
let composer = null
const root2 = target2.root
let current2 = getParentComponentInstance(target2, useComponent)
while (current2 != null) {
const i18nInternal = i18n
if (i18n.mode === 'composition') {
composer = i18nInternal.__getInstance(current2)
} else {
if (__VUE_I18N_LEGACY_API__) {
const vueI18n2 = i18nInternal.__getInstance(current2)
if (vueI18n2 != null) {
composer = vueI18n2.__composer
if (useComponent && composer && !composer[InejctWithOptionSymbol]) {
composer = null
}
}
}
}
if (composer != null) {
break
}
if (root2 === current2) {
break
}
current2 = current2.parent
}
return composer
}
function getParentComponentInstance(target2, useComponent = false) {
if (target2 == null) {
return null
}
{
return !useComponent ? target2.parent : target2.vnode.ctx || target2.parent
}
}
function setupLifeCycle(i18n, target2, composer) {
{
onMounted(() => {}, target2)
onUnmounted(() => {
const _composer = composer
i18n.__deleteInstance(target2)
const dispose2 = _composer[DisposeSymbol]
if (dispose2) {
dispose2()
delete _composer[DisposeSymbol]
}
}, target2)
}
}
function useI18nForLegacy(instance, scope, root2, options2 = {}) {
const isLocalScope = scope === 'local'
const _composer = shallowRef(null)
if (
isLocalScope &&
instance.proxy &&
!(instance.proxy.$options.i18n || instance.proxy.$options.__i18n)
) {
throw createI18nError(
I18nErrorCodes.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION
)
}
const _inheritLocale = isBoolean(options2.inheritLocale)
? options2.inheritLocale
: !isString$1(options2.locale)
const _locale = ref(
!isLocalScope || _inheritLocale
? root2.locale.value
: isString$1(options2.locale)
? options2.locale
: DEFAULT_LOCALE
)
const _fallbackLocale = ref(
!isLocalScope || _inheritLocale
? root2.fallbackLocale.value
: isString$1(options2.fallbackLocale) ||
isArray(options2.fallbackLocale) ||
isPlainObject(options2.fallbackLocale) ||
options2.fallbackLocale === false
? options2.fallbackLocale
: _locale.value
)
const _messages = ref(getLocaleMessages(_locale.value, options2))
const _datetimeFormats = ref(
isPlainObject(options2.datetimeFormats)
? options2.datetimeFormats
: { [_locale.value]: {} }
)
const _numberFormats = ref(
isPlainObject(options2.numberFormats)
? options2.numberFormats
: { [_locale.value]: {} }
)
const _missingWarn = isLocalScope
? root2.missingWarn
: isBoolean(options2.missingWarn) || isRegExp(options2.missingWarn)
? options2.missingWarn
: true
const _fallbackWarn = isLocalScope
? root2.fallbackWarn
: isBoolean(options2.fallbackWarn) || isRegExp(options2.fallbackWarn)
? options2.fallbackWarn
: true
const _fallbackRoot = isLocalScope
? root2.fallbackRoot
: isBoolean(options2.fallbackRoot)
? options2.fallbackRoot
: true
const _fallbackFormat = !!options2.fallbackFormat
const _missing = isFunction(options2.missing) ? options2.missing : null
const _postTranslation = isFunction(options2.postTranslation)
? options2.postTranslation
: null
const _warnHtmlMessage = isLocalScope
? root2.warnHtmlMessage
: isBoolean(options2.warnHtmlMessage)
? options2.warnHtmlMessage
: true
const _escapeParameter = !!options2.escapeParameter
const _modifiers = isLocalScope
? root2.modifiers
: isPlainObject(options2.modifiers)
? options2.modifiers
: {}
const _pluralRules =
options2.pluralRules || (isLocalScope && root2.pluralRules)
function trackReactivityValues() {
return [
_locale.value,
_fallbackLocale.value,
_messages.value,
_datetimeFormats.value,
_numberFormats.value,
]
}
const locale = computed({
get: () => {
return _composer.value ? _composer.value.locale.value : _locale.value
},
set: (val2) => {
if (_composer.value) {
_composer.value.locale.value = val2
}
_locale.value = val2
},
})
const fallbackLocale = computed({
get: () => {
return _composer.value
? _composer.value.fallbackLocale.value
: _fallbackLocale.value
},
set: (val2) => {
if (_composer.value) {
_composer.value.fallbackLocale.value = val2
}
_fallbackLocale.value = val2
},
})
const messages2 = computed(() => {
if (_composer.value) {
return _composer.value.messages.value
} else {
return _messages.value
}
})
const datetimeFormats = computed(() => _datetimeFormats.value)
const numberFormats = computed(() => _numberFormats.value)
function getPostTranslationHandler() {
return _composer.value
? _composer.value.getPostTranslationHandler()
: _postTranslation
}
function setPostTranslationHandler(handler) {
if (_composer.value) {
_composer.value.setPostTranslationHandler(handler)
}
}
function getMissingHandler() {
return _composer.value ? _composer.value.getMissingHandler() : _missing
}
function setMissingHandler(handler) {
if (_composer.value) {
_composer.value.setMissingHandler(handler)
}
}
function warpWithDeps(fn2) {
trackReactivityValues()
return fn2()
}
function t3(...args) {
return _composer.value
? warpWithDeps(() => Reflect.apply(_composer.value.t, null, [...args]))
: warpWithDeps(() => '')
}
function rt2(...args) {
return _composer.value
? Reflect.apply(_composer.value.rt, null, [...args])
: ''
}
function d3(...args) {
return _composer.value
? warpWithDeps(() => Reflect.apply(_composer.value.d, null, [...args]))
: warpWithDeps(() => '')
}
function n2(...args) {
return _composer.value
? warpWithDeps(() => Reflect.apply(_composer.value.n, null, [...args]))
: warpWithDeps(() => '')
}
function tm(key2) {
return _composer.value ? _composer.value.tm(key2) : {}
}
function te2(key2, locale2) {
return _composer.value ? _composer.value.te(key2, locale2) : false
}
function getLocaleMessage(locale2) {
return _composer.value ? _composer.value.getLocaleMessage(locale2) : {}
}
function setLocaleMessage(locale2, message2) {
if (_composer.value) {
_composer.value.setLocaleMessage(locale2, message2)
_messages.value[locale2] = message2
}
}
function mergeLocaleMessage(locale2, message2) {
if (_composer.value) {
_composer.value.mergeLocaleMessage(locale2, message2)
}
}
function getDateTimeFormat(locale2) {
return _composer.value ? _composer.value.getDateTimeFormat(locale2) : {}
}
function setDateTimeFormat(locale2, format2) {
if (_composer.value) {
_composer.value.setDateTimeFormat(locale2, format2)
_datetimeFormats.value[locale2] = format2
}
}
function mergeDateTimeFormat(locale2, format2) {
if (_composer.value) {
_composer.value.mergeDateTimeFormat(locale2, format2)
}
}
function getNumberFormat(locale2) {
return _composer.value ? _composer.value.getNumberFormat(locale2) : {}
}
function setNumberFormat(locale2, format2) {
if (_composer.value) {
_composer.value.setNumberFormat(locale2, format2)
_numberFormats.value[locale2] = format2
}
}
function mergeNumberFormat(locale2, format2) {
if (_composer.value) {
_composer.value.mergeNumberFormat(locale2, format2)
}
}
const wrapper = {
get id() {
return _composer.value ? _composer.value.id : -1
},
locale,
fallbackLocale,
messages: messages2,
datetimeFormats,
numberFormats,
get inheritLocale() {
return _composer.value ? _composer.value.inheritLocale : _inheritLocale
},
set inheritLocale(val2) {
if (_composer.value) {
_composer.value.inheritLocale = val2
}
},
get availableLocales() {
return _composer.value
? _composer.value.availableLocales
: Object.keys(_messages.value)
},
get modifiers() {
return _composer.value ? _composer.value.modifiers : _modifiers
},
get pluralRules() {
return _composer.value ? _composer.value.pluralRules : _pluralRules
},
get isGlobal() {
return _composer.value ? _composer.value.isGlobal : false
},
get missingWarn() {
return _composer.value ? _composer.value.missingWarn : _missingWarn
},
set missingWarn(val2) {
if (_composer.value) {
_composer.value.missingWarn = val2
}
},
get fallbackWarn() {
return _composer.value ? _composer.value.fallbackWarn : _fallbackWarn
},
set fallbackWarn(val2) {
if (_composer.value) {
_composer.value.missingWarn = val2
}
},
get fallbackRoot() {
return _composer.value ? _composer.value.fallbackRoot : _fallbackRoot
},
set fallbackRoot(val2) {
if (_composer.value) {
_composer.value.fallbackRoot = val2
}
},
get fallbackFormat() {
return _composer.value ? _composer.value.fallbackFormat : _fallbackFormat
},
set fallbackFormat(val2) {
if (_composer.value) {
_composer.value.fallbackFormat = val2
}
},
get warnHtmlMessage() {
return _composer.value
? _composer.value.warnHtmlMessage
: _warnHtmlMessage
},
set warnHtmlMessage(val2) {
if (_composer.value) {
_composer.value.warnHtmlMessage = val2
}
},
get escapeParameter() {
return _composer.value
? _composer.value.escapeParameter
: _escapeParameter
},
set escapeParameter(val2) {
if (_composer.value) {
_composer.value.escapeParameter = val2
}
},
t: t3,
getPostTranslationHandler,
setPostTranslationHandler,
getMissingHandler,
setMissingHandler,
rt: rt2,
d: d3,
n: n2,
tm,
te: te2,
getLocaleMessage,
setLocaleMessage,
mergeLocaleMessage,
getDateTimeFormat,
setDateTimeFormat,
mergeDateTimeFormat,
getNumberFormat,
setNumberFormat,
mergeNumberFormat,
}
function sync(composer) {
composer.locale.value = _locale.value
composer.fallbackLocale.value = _fallbackLocale.value
Object.keys(_messages.value).forEach((locale2) => {
composer.mergeLocaleMessage(locale2, _messages.value[locale2])
})
Object.keys(_datetimeFormats.value).forEach((locale2) => {
composer.mergeDateTimeFormat(locale2, _datetimeFormats.value[locale2])
})
Object.keys(_numberFormats.value).forEach((locale2) => {
composer.mergeNumberFormat(locale2, _numberFormats.value[locale2])
})
composer.escapeParameter = _escapeParameter
composer.fallbackFormat = _fallbackFormat
composer.fallbackRoot = _fallbackRoot
composer.fallbackWarn = _fallbackWarn
composer.missingWarn = _missingWarn
composer.warnHtmlMessage = _warnHtmlMessage
}
onBeforeMount(() => {
if (instance.proxy == null || instance.proxy.$i18n == null) {
throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_COMPOSITION_IN_LEGACY)
}
const composer = (_composer.value = instance.proxy.$i18n.__composer)
if (scope === 'global') {
_locale.value = composer.locale.value
_fallbackLocale.value = composer.fallbackLocale.value
_messages.value = composer.messages.value
_datetimeFormats.value = composer.datetimeFormats.value
_numberFormats.value = composer.numberFormats.value
} else if (isLocalScope) {
sync(composer)
}
})
return wrapper
}
const globalExportProps = ['locale', 'fallbackLocale', 'availableLocales']
const globalExportMethods = ['t', 'rt', 'd', 'n', 'tm', 'te']
function injectGlobalFields(app2, composer) {
const i18n = /* @__PURE__ */ Object.create(null)
globalExportProps.forEach((prop) => {
const desc = Object.getOwnPropertyDescriptor(composer, prop)
if (!desc) {
throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR)
}
const wrap = isRef(desc.value)
? {
get() {
return desc.value.value
},
set(val2) {
desc.value.value = val2
},
}
: {
get() {
return desc.get && desc.get()
},
}
Object.defineProperty(i18n, prop, wrap)
})
app2.config.globalProperties.$i18n = i18n
globalExportMethods.forEach((method4) => {
const desc = Object.getOwnPropertyDescriptor(composer, method4)
if (!desc || !desc.value) {
throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR)
}
Object.defineProperty(app2.config.globalProperties, `$${method4}`, desc)
})
const dispose2 = () => {
delete app2.config.globalProperties.$i18n
globalExportMethods.forEach((method4) => {
delete app2.config.globalProperties[`$${method4}`]
})
}
return dispose2
}
{
initFeatureFlags()
}
if (__INTLIFY_JIT_COMPILATION__) {
registerMessageCompiler(compile)
} else {
registerMessageCompiler(compileToFunction)
}
registerMessageResolver(resolveValue)
registerLocaleFallbacker(fallbackWithLocaleChain)
if (__INTLIFY_PROD_DEVTOOLS__) {
const target2 = getGlobalThis()
target2.__INTLIFY__ = true
setDevToolsHook(target2.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)
}
var vueI18n = /* @__PURE__ */ Object.freeze(
/* @__PURE__ */ Object.defineProperty(
{
__proto__: null,
DatetimeFormat,
I18nD,
I18nInjectionKey,
I18nN,
I18nT,
NumberFormat,
Translation,
VERSION,
castToVueI18n,
createI18n,
useI18n,
vTDirective,
},
Symbol.toStringTag,
{ value: 'Module' }
)
)
export { sdk as default }